普段使っているCampaignで使えるマクロの例
1
自分のToken Macroとして設置してステートをトグルさせるマクロの例
自Tokenを選択し、マクロのスペースを右クリック->新規マクロを追加->下のソースを適切に書き換え、コメント部分(.....(x))以外をコピペする
以下はPoint-Blank Shot(オンの時にはAttackとDamageに+1)の例
[h: arrayName = "MiscStates"] [h: stateName = "PointBlank"] .....(1)
[h: stateArray = getProperty(arrayName)] [h: curState = getStrProp(stateArray, stateName)] [h: macroIndex = getMacroButtonIndex()] [h: curAtkBuf = getProperty("BufAttackShort")] .....(2) [h: curDmgBuf = getProperty("BufDamageShort")] .....(2)
[h, if(curState == 1), CODE: { [curState = 0] [color = "color=default"] [h: curAtkBuf = curAtkBuf - 1] .....(3) [h: curDmgBuf = curDmgBuf - 1] .....(3) }; { [curState = 1] [color = "color=white"] [h: curAtkBuf = curAtkBuf + 1] .....(4) [h: curDmgBuf = curDmgBuf + 1] .....(4) }] [h: stateArray = setStrProp(stateArray, stateName, curState)] [h: setProperty(arrayName, stateArray)]
[h: change = if(curState == 0, "disable", "enable")] [r, s: "Point Blank is "+change+"d"] .....(5)
[h: setMacroProps(macroIndex, color)] [h: setProperty("BufAttackShort", curAtkBuf)] .....(6) [h: setProperty("BufDamageShort", curDmgBuf)] .....(6)
以下解説。(1-6)の部分を自分の好きなように書き換える。
(1) Stateの名前。カンマとかスペースとかの記号を含まなければ何でもOK
(2) 変更したいパラメータを拾ってくる。Point Blank Shotの場合、AttackとDamageに+1したいのでこの二つのBufの値を変更している。
(3) Stateをオフ(グレー色)にした時に変更する値。Point Blankの場合にはオンだとAtk/Dmg各+1なので、オフにする場合には両者を-1する。
(4) 同様にオンにした時の値。AtkとDmgに+1している。
(5) トグルさせた時に自分のみに表示されるメッセージ。Point Blankのところを好きな字に変更する。
(6) 変更させた値をTokenに書き戻す。
Propertyとして設定するのは
"BufACShort" (ArmorなどのTouchには乗らないAC)
"BufTouchACShort" (Deflectionなどの全てに乗るAC)
"BufAttackShort"
"BufDamageShort"
"BufSaveShort"
"BufSkillShort"
とこれらのShortをLongに変えた変数と
"CONTemporaryMod"などの能力値修正(Bear's Enduranceなど、CONを他の5つに変えてもOKだけど、Atk/Dmgには反映されません)
がいいでしょう。
他のStatusも変えられなくは無いですが、とりあえず上記のみで用は足りると思います。
やろうと思えばSmiteとか用にAbility ModifierやHDを足し込むとかもできます。
例ではcurAtkBufなどに設定されている変数名は、Attack1などToken固有に持っている値と被るとよろしくない事が起こります。別にxxxxxxとか適当な名前でも機能はするので、とにかく被らせないようにしましょう。
2
1と同様だが、StateがHasteやCombatExpertiseなど予め用意されているものの場合
[h: stateName = "CombatExpertise"] .....(1)
[h: curState = getState(stateName)] [h: macroIndex = getMacroButtonIndex()] [h, if(curState != 0), CODE: { [curState = 0] [color = "color=default"] }; { [curState = 1)] [color = "color=white"] }]
[h: change = if(curState == 0, "disable", "enable")] [r, s: stateName+" is "+change+"d"]
[h: setState(stateName, curState)] [h: setMacroProps(macroIndex, color)]
以下解説
(1)ここのステート名だけ書き換えましょう。用意されているStateとは、Tokenダブルクリック->状態タブに存在するものの事です。
3
特定のSkillを振る
[h: skillNum = x] [macro("SkillByToken@Lib:General"): json.set("{}", "SkillNum", skillNum, "Token", currentToken())]
以下解説
xは以下の通り
0: Acrobatics
1: Appraise
2: Bluff
3: Climb
4: Craft
5: Diplomacy
6: Disable Device
7: Disguise
8: Escape Artist
9: Fly
10: Handle Animal
11: Heal
12: Intimidate
13: Knowledge (Arcana)
14: Knowledge (Dungeoneering)
15: Knowledge (Engineering)
16: Knowledge (Geography)
17: Knowledge (History)
18: Knowledge (Local)
19: Knowledge (Nature)
20: Knowledge (Nobility)
21: Knowledge (Planes)
22: Knowledge (Religion)
23: Linguistics
24: Perception
25: Perform
26: Profession
27: Ride
28: Sense Motive
29: Sleight Of Hand
30: Spellcraft
31: Stealth
32: Survival
33: Swim
34: Use Magic Device
4
Lay on Handsを自分に撃ち、自動回復
[h: diceNum = floor(getProperty("HD")/2)] [h: dice = diceNum+"d6"] Lay on Hands: [r: dice] + [r: diceNum]*2 = [r: Heal = eval(dice) + diceNum*2]<br> [h: Heal = 0 - Heal] [macro("Damage@Lib:General"): json.set("{}", "Damage", Heal, "Token", currentToken())]
自分では無く選んだToken1つを回復させたい時にはcurrentToken()の代わりにgetSelected()