switch (roll option)
[switch():] Roll Option
* Introduced in version 1.3b46
Chooses among several options and executes code based on the expression.
Usage
[switch(expression):
case case1: body1;
case case2: body2;
default: defaultBody
]
Parameters
expression
- The regular expression that determines which case is executed. Since this is a regular expression, metacharacters such as*
and()
will need to have backslashes in front of them if you want to match them literally.case
- A potential match for theexpression
, possesses a correspondingbody
that is executed if a match is made.default
- If theexpression
finds no matches within thecase
s, then thedefaultBody
is executed.
Note that the case
statement is (ironically) the only case sensitive statement in MapTool, thus CASE
or Case
will NOT work!
Examples
[h:powerType="at-will"]
[switch(powerType):
case "at-will": "You may use this power as much as you like";
case "encounter": "You may only use this power once per encounter";
case "daily": "You may only use this power once per day"]
Outputs:
You may use this power as much as you like
[h:powerType=".*sword.*"]
[switch(powerType):
case "flail": "one-handed weapon; two-handed does Str*2 damage";
case "shortsword": "used for jabs, so is a puncturing weapon";
case "longsword": "a slashing weapon"]
Outputs:
used for jabs, so is a puncturing weapon
Notice that the first matching clause was the one that the [switch():] option found.
When using the [code():] option with a switch
option, each case
body has its own set of braces, like so:
[h,switch(class),code:
case "Warrior": {
[Armor = 6]
[beginningPowers = "Sword, Shield Bash, Bow, Shield, Torch"]
};
case "Rogue": {
[Armor = 2]
[beginningPowers = "Dagger, Hide, Backstab, Pick Lock, Torch"]
};
case "Wizard": {
[Armor = 1]
[beginningPowers = "Dagger, Staff, Light, Lightning Bolt, Fire Ball"]
};
case "Priest": {
[Armor = 4]
[beginningPowers = "Mace, Heal, Protect, Banish Undead, Torch"]
};
default: {
[Armor = 0]
[beginningPowers = "Fists, Feet"]
}]