Taming The One Ring (in Roll20)
Getting Roll20 setup for your particular game system can require quite a lot of work, mostly because as opposed to Fantasy Grounds, Roll20 doesn't really support any kind of rule system packages, or even 'rules' as a concept, other than through a series of elaborate macros and scripts.
So be it. Here follows a guide to setting up your Roll20 campaign in such a way that you can automate much of the crunch, and get back to focusing on setting up the perfect TPK. A lot of this is token-based, and requires that you understand how to use it, once it has been set up properly.
Firstly, setup the rollable tables for TOR dice, this is the foundation for everything. Make sure you get the table names right (they're all lowercase). You can setup the macros described on that page as well; I have my own versions, which we'll get back to, but those work fine.
Secondly you're going to need a Mentor account. Sorry, no more coasting along for free; it's time to step up and pay for your pleasures, specifically the API, which the scripts we're going to be looking at need.
Also, your campaign needs to be using the The One Ring character sheet, which I've developed, for many of the attributes to be written and read correctly by the scripts and macros.
Map & Battle Pages
Now to set up your basic Map and Battle pages. These are your basics, and you'll be using them throughout the campaign, adding and removing other pages as you go through locations that require them. Our group plays out the game with the Map page open most of the time (with this map), until differences of opinion arises, metal gets unsheathed and the tone takes a turn for the worse.
Battle Mat Setup
The Battle page is important not only because you can visually see where your characters' stances are, but because we can use it to set it up in such a way that our macros automatically know what those stances are supposed to be simply by dropping the token in the right stance, which saves us a whole bunch of work. So.
1) Create a new page, and name it 'Battle'. The script we're going to install, requires this name specifically.
2) My Battle Mat graphic is based off of Voidstate's. Simply drag it onto the page, and position it so that the top-left corner is aligned to the top-left corner of the canvas. The positioning is important, because the script we're about to install has hard-coded values for each of the four positions (Forward, Open, Defensive and Rearward), which it uses to update the Stance attribute on characters when they're dropped anywhere within a stance's box.
3) Go to the campaign's API Scripts page, and create an entry for tor-stance.js. This is the script that detects drops of tokens, and sets the appropriate stance attribute on your characters.
4) Ensure that all the characters have a 'stance' attribute. The TOR characters sheet should auto-create this, but Roll20 has been known to be prickly about it. If you're having problems getting this thing to work, this is a likely issue.
5) Go back to the campaign's API Scripts page, and create an entry for tor-stance-to-turnorder.js.
6) Profit:
That's it, now all you have to do is add some characters' tokens, and you should be good to go. We'll set up a few more automation scripts, before we go on to making sure that the characters have been set up properly.
Highlight Token on Turn
I don't always use tor-highlight-token-on-turn.js, as it has a tendency to get stuck from time to time, but it can be very helpful when a battle has more than a handful of participants.
Dice Checker Script
Go back and create an entry for the tor-dice-checker.js script. In short, this script knows how to interpret dice rolls, including how to interpret the Eye and Gandalf's rune, as well as of course weary states. Basically it will look at your rolls, and tell you what happened. It prefers if you include a Target Number (TN), like so:
/roll 1t[feat] + 3t[normal] > 14
Or if you're rolling for a servant of the Enemy, using the lm-feat table instead, in which case it'll read the rune and the eye differently:
/roll 1t[lm-feat] + 3t[normal] > 14
For our next trick, let's set up some automation for those pesky companions and their LM counterparts
Loremaster Characters
Let's get those unwashed servants of the Eye up and running so they won't interfere with our TPK plans. Go ahead and create your mook's character (the TOR sheet has LM sheets for both good and evil characters, make sure you pick the right one, as it'll influence how the dice are interpreted by tor-dice-checker.js). Once that's done, drag a token onto the Battle page, make sure it's sized properly (see Set Dimensions here).
A Token Note: I create my tokens from graphics I find in the TOR PDF files, which I then turn into circles in Photoshop and resize to 70px by 70px (90px for larger creatures, to imply their menace on the 'board'). I highly recommend spending some time up-front, going through and creating these tokens for all the characters and creatures you think the company will encounter, so as to have them ready at the drop of a hat, it's very useful, especially because this whole setup depends so heavily on tokens, as we will soon see.
Setting up mook tokens, that is tokens that do not represent a 'unique' creature or character, is a bit abstract, but once you've got it, it works very well. Once you've done that, set the token's bars as follows:
Bar 1: Endurance
Bar 2: Hate
Bar 3: Weary
This allows each of the instances of that mook to have changes made to Endurance, Hate and Weary, which is exactly what we need when the swords come out, and it allows us to do rolls like this one.
/r 1t[lm-feat] + 3t[@{selected|bar3}]
As you may guess, this determines whether to look up the success dice roll on the 'normal' or 'weary' table. Neat. Now let's automate the weary states of our mooks so we can worry about other things as we roll towards the inevitable TPK.
To do this, install tor-mook-state-checker.js. A Elbereth Gilthoniel! Look at them go. Now for one of the tricker parts.
Combat Macros & Setup
Looking up values on character sheets is one of the things that slow games down the most. As a Loremaster, you might be tracking ten orcs at the same time, while also keeping abreast of the states of the company and a whole host of other factors. It's important to know at a glance what the general state of each character is, for you to be able to adjudicate the game appropriately. Looking up specific values so as to execute a roll is however just in the way. So we turn to macros to do the heavy lifting for us.
This will seem complicated. It is not, it's just slightly laborious.
Now go grab macros.txt, which contains all the macros necessary to automate most of the combat crunch for The One Ring. Create each of the macros in your campaign, using those exact names. Copy-paste, copy-paste, copy-paste.
Take a break, get a beverage.
Now open a Loremaster character, and go to the Attributes & Abilities tab. Under Abilities, add a new one for each of the weapons the character has. The macros you added to the campaign before point to one of four slots on the character sheets (adv_attack_1 is for an Adversary's first weapon, adv_attack_2 is for his second, etc). Adversaries have their own, LM Characters (that is, non-adversaries) have their own, and Player Characters have one set for melee and one set for ranged weapons.
Name the Ability for the weapon, and then type in the macro for the slot that weapon is in (counting starts at 0 for adversaries and LM characters, but 1 for PCs; for no good reason other than poor planning, sorry). Typing a # should pop up an auto-complete dropdown.
Here's Azgrask, the Great Orc:
And here's Grimbald, the Woodman, a PC character. Note how the Spear has two entries, one for melee, and one for ranged; both are pointing to the same weapon slot. Also the axe, which can be used with one or two hands takes up two slots on the character sheet.
Important: Make sure that these actions have 'Show as Token Action' enabled, and you should be able to do something like this,
And that's how it works. Select the attacking token, click the weapon macro, select the target, and that's it. The chat spits out an action block, which includes stats for the weapon, and then executes the roll, which the dice checker script we installed earlier then reads and spits out the result for. Easy-peasy.
Character Automation
To get the same setup rolling for companions, go ahead and install tor-state-checker.js, which will keep an eye on companions' Endurance and Fatigue, setting the 'weary' attribute automatically based on their values.
Now, the companion tokens don't require quite as much setup as the LM tokens, but I like to point the token bars to attributes anyway, as a convenient shortcut.
Bar 1: endurance
Bar 2: hope
Bar 3: travel_fatigue
Remember that a) you can click into one of the bar values and adjust it by typing for instance +2 or -3, which is very helpful. And secondly, shift+doubleclick'ing on a token, opens its character sheet. That little nugget took me a while to figure out, and it saves a lot of time and frustration once the TPK commences.
Troubleshooting & Closing Remarks
I believe that just about covers it. It'll no doubt take some getting used to, and it'll definitely break from time to time. If something isn't working, check the following things:
1) Open the API Scripts page. It's likely that a script has crashed, causing the server to stop execution. Simple disable and enable the script, and you're back. I don't know what's causing this exactly.
2) Check that the characters you're trying to get to fight one another have the weary attribute. Open the character sheet, find Weary and toggle it to a different state, and then toggle it back. That should create it if it hasn't already been created. If you still have problems, go to the Attributes & Abilities tab, and find weary. If it's not there, create it by hand, and then do the same thing again.
3) Check that the character's abilities have been properly set up. Are the right macros being used? Do those macros exist in the macros list? Are the rollable tables configured correctly? Does the character have weapons set up properly?
This kind of setup can break in a number of ways, and will definitely require some practice to use. But once you get into it, you'll be wondering how you were managing before.
Let the TPK begin.
PS: Make sure you give Roll20 a layer of paint to get in the mood.