switch (roll option): Difference between revisions
Jump to navigation
Jump to search
m (addition of "default" to the list of case-sensitive keywords) |
No edit summary |
||
(5 intermediate revisions by 4 users not shown) | |||
Line 6: | Line 6: | ||
|usage= | |usage= | ||
< | <syntaxhighlight lang="mtmacro" line> | ||
[switch(expression): | [switch(expression): | ||
case case1: body1; | case case1: body1; | ||
Line 12: | Line 12: | ||
default: defaultBody | default: defaultBody | ||
] | ] | ||
</ | </syntaxhighlight> | ||
'''Parameters''' | '''Parameters''' | ||
{{param|expression|The ''regular expression'' that determines which case is executed. Since this is a ''regular expression'', metacharacters such as {{code|*}} and {{code|()}} will need to have backslashes in front of them if you want to match them literally.}} | {{param|expression|The ''regular expression'' that determines which case is executed. Since this is a ''regular expression'', metacharacters such as {{code|*}} and {{code|()}} will need to have backslashes in front of them if you want to match them literally.}} | ||
Line 20: | Line 20: | ||
* the {{code|case}} and {{code|default}} statements are the only case-sensitive statements in MapTool, thus {{code|CASE}} or {{code|Default}} will NOT work! | * the {{code|case}} and {{code|default}} statements are the only case-sensitive statements in MapTool, thus {{code|CASE}} or {{code|Default}} will NOT work! | ||
* strings in the {{code|case}} MUST be surrounded by "double quotes" as 'single quotes' will generate an error. | * strings in the {{code|case}} MUST be surrounded by "double quotes" as 'single quotes' will generate an error. | ||
* do not put a {{code|;}} after your last case. | |||
|examples= | |examples= | ||
< | <syntaxhighlight lang="mtmacro" line> | ||
[h:powerType="at-will"] | [h:powerType="at-will"] | ||
[switch(powerType): | [switch(powerType): | ||
Line 28: | Line 29: | ||
case "encounter": "You may only use this power once per encounter"; | case "encounter": "You may only use this power once per encounter"; | ||
case "daily": "You may only use this power once per day"] | case "daily": "You may only use this power once per day"] | ||
</ | </syntaxhighlight> | ||
Outputs: | Outputs: | ||
You may use this power as much as you like | You may use this power as much as you like | ||
< | <syntaxhighlight lang="mtmacro" line> | ||
[h:powerType=".*sword.*"] | [h:powerType=".*sword.*"] | ||
[switch(powerType): | [switch(powerType): | ||
Line 39: | Line 40: | ||
case "shortsword": "used for jabs, so is a puncturing weapon"; | case "shortsword": "used for jabs, so is a puncturing weapon"; | ||
case "longsword": "a slashing weapon"] | case "longsword": "a slashing weapon"] | ||
</ | </syntaxhighlight> | ||
Outputs: | Outputs: | ||
used for jabs, so is a puncturing weapon | used for jabs, so is a puncturing weapon | ||
Notice that the first matching clause was the one that the {{roll|switch}} option found. | Notice that the first matching clause was the one that the {{roll|switch}} option found. | ||
another example | |||
<syntaxhighlight lang="mtmacro" line> | |||
[abort(input("number|0|enter a number"))] | |||
[switch(number): | |||
case 0: "you did not enter a number"; | |||
case 1: "you entered 1 as a number"; | |||
case 2: "you entered 2 as a number"; | |||
default: "you entered a number not equal to 1 or 2" | |||
] | |||
</syntaxhighlight> | |||
When using the {{roll|code}} option with a {{code|switch}} option, each {{code|case}} body has its own set of braces, like so: | When using the {{roll|code}} option with a {{code|switch}} option, each {{code|case}} body has its own set of braces, like so: | ||
< | <syntaxhighlight lang="mtmacro" line> | ||
[h,switch(class),code: | [h,switch(class),code: | ||
case "Warrior": { | case "Warrior": { | ||
Line 68: | Line 79: | ||
[beginningPowers = "Fists, Feet"] | [beginningPowers = "Fists, Feet"] | ||
}] | }] | ||
</ | </syntaxhighlight> | ||
|also= | |also= |
Latest revision as of 23:59, 14 March 2023
[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.
Notes
- the
case
anddefault
statements are the only case-sensitive statements in MapTool, thusCASE
orDefault
will NOT work! - strings in the
case
MUST be surrounded by "double quotes" as 'single quotes' will generate an error. - do not put a
;
after your last case.
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.
another example
[abort(input("number|0|enter a number"))]
[switch(number):
case 0: "you did not enter a number";
case 1: "you entered 1 as a number";
case 2: "you entered 2 as a number";
default: "you entered a number not equal to 1 or 2"
]
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"]
}]