
The Original Problem I Faced: Earlier, I made a post on here that detailed my issues in trying to get a dropdown query to output different values in different contexts for the same option (eg, I select "Level 1" from the dropdown, it uses 3 in the first call and 7 in the second call, rather than 3 in both calls). Some spells in Pathfinder 2e don't always follow predictable patterns that make using dropdown queries to output a lot of information difficult with current implementations.
The "Solutions": Naturally, my solutions were very technical and annoying for the average user to implement, and while one helpful user gave me existing alternatives, those alternatives were...messy. Very messy. I mean:
[[?{spell rank|3,1|5,2|8,3}*5]] resistances, [[{60,60,380}kl?{spell rank}]] long
...Really? This is all we have?
Now, I wasn't thinking big enough. My thoughts were only limited to how easy it would be to implement to a developer, with little thought for how the user would have to use this. But now I have a new solution, one that serves a lot more use than just the case I had in mind: The Reference Table.
The Solution: We already have something LIKE this in two different ways. We can add tables in markdown, and we have something called a rollable table in the Macros, but neither quite get to the thing I'd hope to accomplish with the Reference Table. Quite simply, a Reference Table is a 2-dimensional table that you can reference in the syntax, and could be part of the Macros tab or attached directly to a character as an Attribute. It would have Rows and Columns, and values for each cell in the table, just like the tables you can plop down...right here, even.
(0,0) | (0,1) | (0,2) |
(1,0) | (1,1) | (1,2) |
(2,0) | (2,1) | (2,2) |
You give it a name, and then you can view it like any markdown table, or access it like you would a Macro or Attribute, just with a couple extra steps:
#{tabl_name||r|c} # Detached/"Macro" Reference Table call, r is row index, c is column index @{tabl_name||r|c} # Character Reference Table call, character unspecified @{char|tabl_name||r|c} # Character Reference Table call, character specified
For example, say I have the following Reference Table named "sacred_form" attached to my character:
20 | 10 | 3 | 21 | 8 | 23 | 5 | Medium |
21 | 15 | 4 | 28 | 15 | 29 | 10 | Large |
22 | 20 | 5 | 35 | 22 | 36 | 15 | Huge |
I can set up a number of inline rolls in the description of a spell like so:
AC: [[@{sacred_form||?{Level?|6,0|8,1|10,2}|0}+@{level}]] Temp HP: [[@{sacred_form||?{Level?}|1}]] Resistance: [[@{sacred_form||?{Level?}|2}]] Divine Attack Modifier: +[[@{sacred_form||?{Level?}|3}]] Divine Damage Bonus: +[[@{sacred_form||?{Level?}|4}]] Athletics Modifier: +[[@{sacred_form||?{Level?}|5}]] Reach: [[@{sacred_form||?{Level?}|6}]]ft
And it will output the values in the given row (Minus that last one, but that's a different problem with Roll20). It's just that easy.
How Is This Useful To Me If I Don't Use Any Of This Fancy Stuff?: Even if you don't use these fancy calls, it's still a table, possibly one you might even be able to roll, if they enable that functionality too. It should hopefully be a bit less finicky than the ones in markdown here, if nothing else.
Could This Be Nested For More Awesomeness?: What kind of question is that, of course you can (I hope)! Just put another Reference Table call into the various cells. Here's a detached table named "bouba_kiki" that will call cell (2,2) of "sacred_form" from the character Char Lie if something is both bouba and kiki:
0 | 0 |
0 | [[@{"Char Lie"|sacred_form||2|2}]] |
And here's an inline roll that will ask if that something is both bouba and kiki:
[[#{bouba_kiki||?{Is Bouba?|False,0|True,1}|?{Is Kiki?|False,0|True,1}}]]
Any currently-used syntax is subject to change and is used as a placeholder to illustrate what this feature might look like in practice.