GURPS is a nightmare of modifiers, conditional status, variable skills and whatnot. Unlike D&D Next, it quickly became clear that it was nigh impossible to move everything you could find on a Character Sheet into the Roll20 Attribute and Macro system, but for now, that's how I'd handle it...
Warning, this post is a "Frikkin Huge Wall of Text"(™). I tried to keep things clean and readable, but still, it's long...You've been warned.
(reminder: keep in mind that I play 100% chat based roll20 sessions so this would be my way of handling GURPS in these conditions. Someone using Voice will of course see things very differently).
Handling the Character Sheet
Usually, when I set up a new campaign in Roll20, I make a Template sheet, make sure it has most of what I would need for macros during play, then only duplicate this and assign these to PCs.
For NPCs (monsters, hirelings, etc), since they usually only use one kind of weapon and small skill-set, I make a slightly more specialized version of the Template, which I then duplicate for each new NPC I make.
Of course, doing this means you need to be really sure about the original Template because if you missed something critical, it will cascade down to every single other sheet you'll make afterwards, which, once you have 50+ monster sheets done, can be a problem...
The main difference, to me, between PC sheets and NPC sheets comes down to macro usage.
For PCs, each player will be able to do his own little macro system and the only thing I need to worry about is the homogeneous formatting of Attributes (for tokens, etc).
For NPCs, I use a set of generic dynamic macros that usually cover 90% of whatever the NPCs might do and on the NPC sheets themselves, only have special abilities that only this creature might use (ie: Dragon Breath, Web Spit, Poisonous Cloud, etc) and have these as Token Actions. Today however, I'll just be focusing on NPC sheets and generic dynamic macros, I'll have another go at stream-lining PC sheets later on.
Taking a normal Character Sheet (as the ones produced by the GCA) and putting the basics into Roll20, I ended up with this.
For stats (ST, DX, etc), the first column indicates the current value, while the right column is just there to indicate the usual, max value. The left column is the one used in macros usually, but since there might be something happening that reduces them (ie: disease reducing HT, spell reducing ST, etc), handling them like you would hit points made some kind of sense.
Same deal with Basic Speed and Basic Move, current and usual/max. I put Basic Speed in there for the Initiative Macro (see in the macro section) while the Basic Move is just an indicator that might be linked to a Token field or something.
Damage is for the basic damage based on ST. The first column is for Thrust and the second for Swing. Putting these here allow for easy macro usage (that is, easy until you start having to convert dice from D6+5 into 2D6+1 and other crazy stuff GURPS bring to the table...)
Last, Encumbrance. I put it here because it can be dynamic. First column is what I call "Combat Ready" while second column is for "Exploration Mode" (meaning, loaded fully). When you see that GURPS offers stuff like Quick-Release backpacks and that Encumbrance can really mean a nasty death, I figured it could be interesting to split the two. Personally, I'd use the first one to keep track of Encumbrance on yourself, while the other is for when you have a backpack and whatnot on you.
And that's it.
I tried adding skills in there at some point, but in practice, it wasn't really that useful compared to just putting your relative skill level, especially when you consider that Stats (and other conditions) can vary as you play.
How this comes to life is through macros of course...
Macroing the impossible....
Unless you go full generic and only use roll20 as a dice roller, you need proper macros to handle as much actions as possible.
One way to do this is to make a specific macro for EVERY SINGLE thing your character might ever do....and good luck finding the proper one afterwards.
Another way is to try and make each macro as generic, dynamic and streamlined as possible. That's what I've tried to do...
Here I'll describe the macros I've set up on the GM side. They are very generic and all you need to do is select a token based on sheet structured as described previously, and they'll work. Saves space, saves time...
Initiative:
/w gm @{selected|token_name} Initiative: [[@{selected|BASIC SPEED} &{tracker}]] (DX: @{selected|DX} / roll: [[d20]])Initiative in GURPS is fixed. Highest Basic Speed goes first. If there is a tie (which WILL happen all the frikkin time!), then it's a GM issue. To solve this, I simply handle ALL initiative tracking by the GM, period. To use this macro, simply select a token and click the macro. It'll automatically add the token to the turn tracker and send the GM a message indicating DX as well as a dice roll, to split up ties. This way, the GM can quickly re-arrange if needed.
Maneuver declaration:
/emas @{selected|token_name} ?{action emote|moves and prepares an attack!}The very first thing each PCs or NPCs should do in GURPS when their round start is to declare their Maneuver. Using GURPS Lite, there are 10 of them. To streamline play, especially in a 100% chat based roll20 session, I figured it'd be good to have 10 macros, one for each possible maneuver, that the players (or GM) could just press right as their turn started.
/ooc MANEUVER - Move & Attack
Attack Modifier: -4
Melee Skill cannot exceed 9, Lose Aim bonus.
The above macro is an example for the "Move & Attack". There is first an emote for the selected token, describing the action taking place, then a quick /ooc declaration of the actual maneuver selected and a brief recap. Listing all 10 macros here would just be spam so I won't, but you get the idea.
This is once again for GM use (/emas is GM only, allowing to emote as a creature). For PC, usual modification applies to change it to a simple "/em".
I also selected these to be Token Actions, mainly to save space in the macro bar. Only these and creature specific abilities will be in Token Actions, while generic checks and attacks will be in personal macro bar.
Skill checks:
/emas @{selected|token_name} ?{action emote|does something}This is a generic and dynamic IQ based skill check. Since it uses the "/emas" command, it'll only work for the GM but it can changed to "/em" (and removing the @{selected|token_name} command) and be used by PCs as well if needed. To use it, simply select a token (as usual, linked to a Sheet based on the template described) and activate it. Various prompts will then appear:
/ooc SKILL(?{which skill?|IQ})
[[3d6]] vs base skill of [[@{selected|IQ} + ?{relative level?|0}]]
Action modifier: ?{which modifier?|+0}
- First, the emote for the action. By default it'll use "does something" and if you don't care much, just go with that. However, since I play chat only with roll20 and enjoy role-playing heavy stuff, I personally often type a little description that will fit whatever is happening.
- Which skill. By default, since this is an IQ skill check, it'll say IQ. If you want to specify, just type in the skill (ie: "Alchemy").
- The "Relative Level" is based on the appropriate column on GCA character sheets. For example, if that guy got Alchemy (IQ-1), you'd type in -1 in this prompt. If you had IQ+1, just put in 1.
- Which modifier. This is whatever action modifier you want to indicate (because you know, or GM told you, etc). It will just list it for reference to the GM (since he might have other modifiers he wants to keep secret).
This macro only rolls and displays you base skill, NOT the effective skill. For skills, since a lot of things can be only known to the GM, I figured it'd be more effective to handle it this way.
Of course this one is only for IQ based skills. I have others for ST, HT, DX based but the modifications needed should be self-evident based on the macro above.
Generic Attack:
This macro is for the most generics of attacks, which once again fits best for NPCs handled by the GM. It can be used for PCs too but usually, players will want to have some variation of this already set up specifically for their weapon load-outs./emas @{selected|token_name} ?{action emote|attacks something!}
/ooc Attack:
/ooc [[3d6]] vs effective skill of [[@{selected|DX} + ?{relative level|0} ?{action modifier? (+/-)|+0}]]
/ooc For [[?{damage}]] ?{damage type?|cut} damage
/ooc At the ?{location?|random location}
The big advantage of this macro is that you can handle attacks with anything, be it the usual sword that Orc is carrying, or a spear he just picked up, or that bench he's throwing...anything, all in one macro.
- First, as usual, is the emote. People using voice over roll20 won't need this, but I only do chat based stuff and I like emotes! Leaving default is good enough, but you could type in there something like "grabs the nearby candelabra and swings it at Derric, aiming for the head!" and that'd work just fine.
- This time around, it lists the Effective Skill (which is the base skill modified by whatever modifier should apply). The various modifiers should be included in the "Action Modifier" prompt. For example if you do a "Move & Attack" maneuver (-4 to attack), then aim for the Left Leg (-2 to attack), you'd type in -6 in there.
- For damage, note that I don't use the values from the Sheet. This is because this is a generic NPC attack mainly. Once again, players' macros might vary. Here, just type in the total amount to roll (ie: "2d6+1"). A variant of this macro, for NPCs with a specific weapon loadout, would be to have a weapon-damage Attribute, and simply use it here, therefore skipping this step somewhat. GURPS being GURPS however, people can use the same weapons in different ways so I like to keep things generic whenever possible.
- This is the damage type. Felt it would be best to include it here as a prompt (defaulting to cut, just because). Just type in "imp", "cru", "cut" or whatever in there as needed.
- Finally, the location. This is an indicator to the GM mainly (the modifier to hit a specific location SHOULD be included in the "Action Modifier" above). By default, there is no location aiming. If you specify it here (and it's assumed you used the proper action modifiers...), then it's clear to everyone. If you leave it by default, the GM can then roll on the appropriate Hit Location table (see below).
This is of course far from perfect. If you "Move & Attack", it won't list that your max Effective Skill is now 9 for example. There are TONS of things this won't help much with but will it work for most situations? It should...
Hit location:
/w gm Targeting: [[1t[location_humanoid]]] ([[1t[location_side]]] side)This is a little macro I set up for the GM to determine a hit location.
The first step is to set up various Rolling Tables within your campaign (for humanoids, quadruped, avian, etc), using the appropriate weighting as explained in GURPS hit location tables. Then you make a "location_side" table, which only rolls for "Right side" and "Left side", that will be used to determine which hand or foot is hit. Once done, you set up one macro per body type, only changing the name of the location_table to match your own labeling.
During play, whenever you need to determine a hit location for something, just click the appropriate macro and voila. "/w gm" indicates that ONLY the GM will see the result, which cuts down on chat spam and allows you to describe the action as needed (and fudge if you want to!).
Various macros:
(BLOCK)
/emas @{selected|token_name} ?{block emote|tries to block!}
/ooc BLOCK
[[3d6]] vs effective skill of [[3 + floor((@{selected|DX}+ ?{relative shield level?|0})/2) ?{action modifier? (+/-)|+0}]]
(DODGE)
/emas @{selected|token_name} ?{action emote|tries to dodge!}
/ooc DODGE
[[3d6]] vs effective skill of [[floor(@{selected|BASIC SPEED}) + 3 - @{selected|Encumbrance} ?{action modifier? (+/-)|+0}]]
(PARRY)
/emas @{selected|token_name} ?{parry emote|tries to parry!}Won't go into details for these, should be self explanatory. Can probably be optimized but they work and speed up play, so I'm all happy.
/ooc PARRY
[[3d6]] vs effective skill of [[3 + floor((@{selected|DX} + ?{relative weapon level?|0})/2) ?{action modifier? (+/-)|+0}]]
And that's pretty much it for now. I've ran a couple combats, see how smooth it all was and so far, it fits what I like to see when I handle sessions (and comes close to how D&D Next is played in my campaign).
What slows down things a lot is the modifier/table checking but I made a couple simple handouts and that should help, especially if you don't have multiple screens.
Overall however, the players and the GM will need proper sheets written down somewhere, there is simply no way to fill them up into Roll20 attribute macro system while staying generic. Players can of course customize things, fill up ALL their skills and whatnot, but then you'll end up with hundreds of macros, which I don't think help that much.
Personally, I much rather have generic macros as above, and keep some kind of character sheet close-by (in PDF format, in game handout or directly on the description bit of the Sheets, whatever works). Generic macros also work great with the concept of GURPS (where nearly any and all actions are possible!).
I'm sure others found ways to do it better, but to me, especially since I play only 100% chat based campaigns in roll20, this should do for now.
Couple things left for me to check out are:
- Focus on PC sheets and how they'd be best handled, what information to store in there, how to use them efficiently (and nicely!)
- Tricks I'd use to setup a GURPS Campaign, ranging from preparing Tokens to GURPS specific Handouts, to preparing Maps and whatnot.
If you made it this far, and have handled GURPS campaigns in Roll20 or have other comments/feedback/tips about all this, feel free :)
For the Initiative macro. I haven't played with macros enough to know if this is feasible. Could you not do Basic Speed + (DX * 0.0001) + (1d9 * 0.00001)? This all depends on Roll20s handling of decimals, but that way it would automatically sort it and you wouldn't have to rearrange anything. Of course it will lead to a crazy big number field for the turn tracker as a downside.
ReplyDeleteSure can, would give something like this:
ReplyDelete/w gm @{selected|token_name} Initiative:[[@{selected|BASIC SPEED} + (@{selected|DX} * 0.0001) + (1d9 * 0.00001) &{tracker}]]
But as you said, the number of decimals in the tracker would get crazy :)
GMs been handling GURPS initiative by hand for some time now. For my own use, just having the little macro I listed in the post is enough really.