The approach presented in the last few posts about making sorcerer rolls via CRP is always going to be better than other systems, but there is one significant downside.
The system presents two different rolls (a standard roll, and a defence roll that must be targeted). If you have control over more than one character (like, you’re the GM), it’s very easy to have the wrong character selected when you make one of those rolls, which will change the initiative table and the last roll that character made.
A really strong solution to this problem is adding token actions for each roll. Token actions only appear when a token is selected, so you always know which character is being affected- the one you have selected! You could then select a token and see something like this:
or maybe
What Is a Token Action
A token action is essentially a macro linked to a character. Any roll you create can be made into a token action. The big advantage here is that there is no need to open the character sheet. Just click the token, and you have immediate access to all of that character’s rolls.
The Coding Solution
Of course, there are problems. We have used action buttons to make the initial workers (as you need to do with CRP), but action buttons don’t work with token actions. You need to use roll buttons. But we can create roll buttons that launch the action utton, and hide them. Thats what this code does:
<button type="roll" name="roll_roll_Lore" class="tokenaction hidden" value="%{selected|Lore}"></button><button type="roll" name="roll_target_Lore" class="tokenaction hidden" value="%{selected|Lore_later}"></button>
<button type="roll" name="roll_roll_Stamina" class="tokenaction hidden" value="%{selected|Stamina}"></button>
<button type="roll" name="roll_target_Stamina" class="tokenaction hidden" value="%{selected|Stamina_later}"></button>
<button type="roll" name="roll_roll_Will" class="tokenaction hidden" value="%{selected|Will}"></button>
<button type="roll" name="roll_target_Will" class="tokenaction hidden" value="%{selected|Will_later}"></button>
<button type="roll" name="roll_roll_Cover" class="tokenaction hidden" value="%{selected|Cover}"></button>
<button type="roll" name="roll_target_Cover" class="tokenaction hidden" value="%{selected|Cover_later}"></button>
<button type="roll" name="roll_roll_Humanity" class="tokenaction hidden" value="%{selected|Humanity}"></button>
<button type="roll" name="roll_target_Humanity" class="tokenaction hidden" value="%{selected|Humanity_later}"></button>
<button type="roll" name="roll_suck_it_up" value="%{selected|one_die}" class="tokenaction hidden"></button>
Code language: HTML, XML (xml)
While you can code token actions into a character sheet, I’d normally recommend avoiding it, because you have so little control of them. Players are forced to have them, in the order already defined.
But for sorcerer, and this solution particularly, there are only a limited number of rolls you ever make, and tokens are intrinsic to playing the game, it makes sense to include them here.
Final Warning
If you use this approach, and are declaring that all characters linked to a character sheet use the same initiative roll, make sure you always have the same token selected when making an initiative roll. You might have 3 Minions, Minion 1, 2, and 3, all attached to the Minions sheet. If you roll initiative with Minion 1, make sure you always roll initiative with that Minion.
The reason is – the character selected is the one that gets added to the turn sequence and who saves the last roll. If you select different minions each turn, you could end up with multiple turns visible, and when opponents defend against their actions, they might oppose their roll against a previous turns roll.
An alternative is to create a separate character sheet for every character – those 3 minions would need 3 different character sheets. This is actually pretty easy to handle under this system, so is a viable approach.
Final Comments
I started this series of posts because I thought, I can imagine how to do opposed rolls quickly and easily, so let’s come up with a quick demo to show how to that. But as soon as i started work on it, I realised why this wasn’t a standard feature – with the Roll20 infrastructure we have, it’s actually pretty complex.
It’s really not an easy thing to implement. I hope the last few posts show ways to do it that people find useful.