トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

MacroSample

普段使っている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()