The Maptools dice system is pretty simple. At the very basic end it's much like OpenRPG: you can do [3d6] to drop 3d6 (or whatever).

The GURPS roller library adds a couple of little functions to help GURPS players:


The basic GURPS success test is called skill(), but you can also type sk() or just s() to be really short. Rolling against a skill or attribute of 12 looks like this:


You can put text around this too:

I swing my sword at him! [skill(12)]

It will spit out whether you succeeded or failed, and by how much. When you put your mouse cursor over the text, a little tooltip will pop up summarizing the modifiers, which dice rolled what, and how much you succeeded or failed by.

If your skill roll has modifiers, you put in a comma, and then your modifiers, like so (example is a skill 15 with a -3 in penalties):

I pick the hard lock [skill(15,-3)] -3 for that lock being hard

You can list modifiers individually too if you don't like figuring out the total:

I pick the hard lock with my really good lockpicks [skill(15,-3+2)] -3 for the lock being hard, +2 for my really good lockpicks!

If for some reason your final skill level needs to be capped at a static value (14 for Fright Checks, 9 for Move and Attack, as a couple of examples) you can put that level in as the third value. Note that if there are no modifiers and you need a cap, that you should put a 0 in for your modifiers. Otherwise it'll read the cap as a bonus to your roll!

I make a fright check! [skill(12,+5,14)] +5 for Fearless +5, capped at 14.


You can roll attacks with the skill() function because they are, fundementally, just skill checks. The attack function, however, adds in a feature to automatically Deceptive Attack if your skill is over 16 to bring your skill down to 16 or 17. This is just a handy thing to help because people keep forgetting it. Same features as skill().

Short versions are attk() or a(). Examples:

[attack(25,-3)] or [attk(15,-2)] or [a(21,+2,9)]


To speed up handling of high rate of fire attacks, there is a helper macro called rof(). It is also useful for dodging against one (and other very similar situations).

The function is used as follows:

[rof(skill, modifiers<, Recoil><, number of shots>)]

Skill and modifiers is as per the skill() macro, the other two arguments are optional. If you don't provide a Recoil it assumes a Rcl of 1. If you provide Number of Shots, it will cap the reported number of hits to number of shots. If you don't, it won't cap anything.

For shooting, provide all the modifiers and rcl (and optionally number of shots) and you get the number of hits the target needs to defend against.

Example: Gun Bunny is emptying 20 bullets out of a gun with RoF 20 with her Guns! skill of 17, bonuses are +4 for acc, +4 for high RoF, and -5 for range, and this gun has a Rcl of 2. She'd use

How about a nice order of BLAM? [rof(17,+4+4-5,2,20)]

If she rolls a 10, she gets a success by 10, for 6 hits.

For dodging, provide all the modifiers, Rcl is always 1, and you get the number of hits you *successfully defended against*.

The feral vampire that Gun Bunny is shooting at has a dodge of 15 and flings himself to the floor for +3. He'd use

Yikes! I fling myself to the ground! [rof(15,+3,1,6)]

If he rolls a 6 he critically succeeds, by 12, which is capped to 6 hits instead of 13 because that's all he needed to dodge against.

If you want to specify a cap, you have to specify Rcl.

There are no shorter forms of this, it's already quite short.

Monster Hunters extendedritual()[]

This is another "Doing something that you could totally do by hand but takes time or is fiddly" macro.

The function is used as follows:

[extendedritual(skill, modifiers<, EnergyGoal>)]

Like skill() and rof(), extendedritual() starts with the skill and modifiers is as per the skill() macro. EnergyGoal defaults to 1 if not provided - you probably need more than one Energy though.

extendedritual() repeatedly attempts to gather energy for your ritual, as per the rules in Monster Hunters 1, and reports:

  • If you were successful or if you critically failed before finishing.
  • How many attempts it took before succeeding (or critically failing)
  • What your final energy total was.
  • How many successes, critical success, or failures you encountered before succeeding (or critically failing.

This macro takes into account the accumulating penalties for repeated attempts.

If you have Luck or Destiny points or other ways to reroll or cancel out the critical failure, you can pick up where you left off, aiming to collect the "left over" energy - but you'll have to calculate what your current skill penalty is and apply it manually.

Example: Amilastet creates a Lesser Restore Undead charm, starting with effective skill 12, and +5 from a Grimoire she picked up cheap because it was written in Hieratic shorthand. She needs 38 energy to pull off this stunt.

Create Fixme Charm! [extendedritual(12,+5,38)]

The macro reports:

« You pulled it off! You made 11 attempts to accumulate energy and you ended up with 40 energy. You took 10 successes to get it (including 0 Critical Successes) You failed 1 times while doing it. »

Short versions are exritual() or exrit(). Examples:

[exritual(16,+4+1,180)] or [exrit(13,+4+2+1,75)]