Code: Select all
[h: gmOnly = isNPC()]
[h: output.tip = strformat("<html>
<table><tr><td colspan=2><b><center>%{skillToRoll} Check</center></b></td></tr>
<tr><td>Modifier:</td><td>%{skillModifier}</td></tr>
<tr><td>D20 Roll:</td><td>%{dieRoll}</td></tr>
</table></html>")]
[h: outputText = strformat("<b>%{skillToRoll}</b> check = %{skillRoll}.")]
<td><span title="{output.tip}">
[r: Display.Text(outputText, gmOnly)]
</span></td>
Code: Select all
[if(arg(1) == 1),CODE:{
[g,r: arg(0)]
};{
[r: arg(0)]
}]
I have a selection of different calling macros that output a variety of info via that method. Now, here is the hard part... I want to output the text from my complex attack macro via the same method, BUT I have if/then statements peppered into the output text, like below (partial code, complete code at the bottom of the post)
Code: Select all
[h: output.tip = strformat("<html>
<table><tr><td colspan=2><b><center>To Hit Rolls</center></b></td></tr>
<tr><td>d20 Roll:</td><td>%{toHitRoll}</td><td>Threat Roll:</td><td>%{criticalThreatRoll}</td></tr>
<tr><td>Modifier:</td><td>%{toHitModifier}</td><td>Threat Modifier:</td><td>%{criticalThreatMod}</td></tr>
</table></html>")]
<span title="{output.tip}">
<font color = "FF0000"><b>[r: attackNumber]</b> - [r: if(toHitRoll == 20,"<b>Hit!</b>","Threat")] - [r: toHit] ([r: if(criticalHit==1 || toHitRoll == 20,toHitRoll,"")]) [r: if(criticalHit==1 || toHitRoll == 20,criticalThreat,"")] ([r: if(criticalHit==1 || toHitRoll == 20,criticalThreatRoll,"")]) </font>
</span>
Code: Select all
[h: output.tip = strformat("<html>
<table><tr><td colspan=2><b><center>To Hit Rolls</center></b></td></tr>
<tr><td>d20 Roll:</td><td>%{toHitRoll}</td><td>Threat Roll:</td><td>%{criticalThreatRoll}</td></tr>
<tr><td>Modifier:</td><td>%{toHitModifier}</td><td>Threat Modifier:</td><td>%{criticalThreatMod}</td></tr>
</table></html>")]
[h: outputText = strformat("<font color = "FF0000"><b>[r: attackNumber]</b> - [r: if(toHitRoll == 20,"<b>Hit!</b>","Threat")] - [r: toHit] ([r: if(criticalHit==1 || toHitRoll == 20,toHitRoll,"")]) [r: if(criticalHit==1 || toHitRoll == 20,criticalThreat,"")] ([r: if(criticalHit==1 || toHitRoll == 20,criticalThreatRoll,"")]) </font>")]
<td><span title="{output.tip}">
[r: Display.Text(outputText, gmOnly)]
</span></td>
In case it is important for helping, here is the initial calling macro, the bulk attack UDF and the display UDF. Let me know if it is also helpful to include all the little periphery UDF's.
Calling macro
Code: Select all
[h: '<-- Declarations-->']
[h: attackArray1 = ""] [h: attackArray2 = ""] [h: attackArray3 = ""]
[h: attackArray4 = ""] [h: attackArray5 = ""] [h: attackArray6 = ""]
[h: attackArray7 = ""] [h: attackArrayH = ""]
[h: CMBattackArray1 = ""] [h: CMBattackArray2 = ""] [h: CMBattackArray3 = ""]
[h: CMBattackArray4 = ""] [h: CMBattackArray5 = ""] [h: CMBattackArray6 = ""]
[h: CMBattackArray7 = ""] [h: CMBattackArrayH = ""]
[h: SAattackArray1 = ""] [h: SAattackArray2 = ""] [h: SAattackArray3 = ""]
[h: SAattackArray4 = ""] [h: SAattackArray5 = ""] [h: SAattackArray6 = ""]
[h: SAattackArray7 = ""] [h: SAattackArrayH = ""]
[h: '<-- Building the attack , loading in all the token vars-->']
[ if(AttackPresent1 == "Yes"), CODE:
{
[h: Pull.Attack(1)]
[h: attackArray1 = macro.return]
[h, if(AutoCMB == 1), CODE:
{
[h: Pull.CMB()]
[h: CMBattackArray1 = macro.return]
};{}]
[h, if(SneakAttack > 0), CODE:
{
[h: Pull.SneakAttack(SneakAttack)]
[h: SAattackArray1 = macro.return]
};{}]
[Display.Attack(attackArray1,CMBattackArray1,SAattackArray1)]
};{}]
[ if(getState("Haste") == "1"), CODE:
{
[h: Pull.Attack("H")]
[h: attackArrayH = macro.return]
[h, if(AutoCMB == 1), CODE:
{
[h: Pull.CMB()]
[h: CMBattackArrayH = macro.return]
};{}]
[h, if(SneakAttack > 0), CODE:
{
[h: Pull.SneakAttack(SneakAttack)]
[h: SAattackArrayH = macro.return]
};{}]
[Display.Attack(attackArrayH,CMBattackArrayH,SAattackArrayH)]
};{}]
Code: Select all
[h: varsFromStrProp(arg(0))]
[h: varsFromStrProp(arg(1))]
[h: varsFromStrProp(arg(2))]
[h: gmOnly = isNPC()]
<tr>
<td>
[if(criticalHit == 1 || toHitRoll == 20), code:
{
[h: output.tip = strformat("<html>
<table><tr><td colspan=2><b><center>To Hit Rolls</center></b></td></tr>
<tr><td>d20 Roll:</td><td>%{toHitRoll}</td><td>Threat Roll:</td><td>%{criticalThreatRoll}</td></tr>
<tr><td>Modifier:</td><td>%{toHitModifier}</td><td>Threat Modifier:</td><td>%{criticalThreatMod}</td></tr>
</table></html>")]
<span title="{output.tip}">
<font color = "FF0000"><b>[r: attackNumber]</b> - [r: if(toHitRoll == 20,"<b>Hit!</b>","Threat")] - [r: toHit] ([r: if(criticalHit==1 || toHitRoll == 20,toHitRoll,"")]) [r: if(criticalHit==1 || toHitRoll == 20,criticalThreat,"")] ([r: if(criticalHit==1 || toHitRoll == 20,criticalThreatRoll,"")]) </font>
</span>
};
{
[if(attackPresent1 == "Yes"), CODE:
{
[h: output.tip = strformat("<html>
<table><tr><td colspan=2><b><center>To Hit Roll</center></b></td></tr>
<tr><td>d20 Roll:</td><td>%{toHitRoll}</td></tr>
<tr><td>Modifier:</td><td>%{toHitModifier}</td></tr>
</table></html>")]
<span title="{output.tip}">
<b>[r: attackNumber] - </b> [r: toHit]
[r: if(toHitRoll == 1, " - CRITICAL MISS! - ", "")]
</span>
};{}]
}]
</td>
<!-- Bulk Formatting 1 -->
[h: output.tip = strformat("<html>
<table><tr><td colspan=2><b><center>Damage Type: %{damageType11}</center></b></td></tr>
<tr><td>Damage:</td><td>%{damageDice11} + %{TempDamageModifier}</td><td>Critical Damage:</td><td>%{criticalDamageDice11} + %{tempCriticalDamage}</td></tr>
<tr><td>Damage Die:</td><td>%{unrolledDice11}</td><td>Threat Multiplier:</td><td>%{unrolledDice11} x %{criticalMultiplier}</td></tr>
</table></html>")]
<td><span title="{output.tip}">
---- [r: if(damageDice11 == 0, "", damageDice11 + TempDamageModifier)] [r: if(criticalHit == 1, "(", "")][r: if(criticalHit == 1, criticalDamageDice11 + tempCriticalDamage, "")][r: if(criticalHit == 1, ")", "")] [r: if(damageType11 == "", "", damageType11)]
</span></td>
[h: output.tip = strformat("<html>
<table><tr><td colspan=2><b><center>Damage Type: %{damageType22}</center></b></td></tr>
<tr><td>Damage:</td><td>%{damageDice22}</td></tr>
<tr><td>Damage Die:</td><td>%{unrolledDice22}</td></tr>
</table></html>")]
<td><span title="{output.tip}">
-- [r: if(damageDice22 == 0, "", damageDice22)] [r: if(damageType22 == "", "", damageType22)]
</span></td>
[h: output.tip = strformat("<html>
<table><tr><td colspan=2><b><center>Damage Type: %{damageType33}</center></b></td></tr>
<tr><td>Damage:</td><td>%{damageDice33}</td></tr>
<tr><td>Damage Die:</td><td>%{unrolledDice33}</td></tr>
</table></html>")]
<td><span title="{output.tip}">
-- [r: if(damageDice33 == 0, "", damageDice33)] [r: if(damageType33 == "", "", damageType33)]
</span></td>
[h: output.tip = strformat("<html>
<table><tr><td colspan=2><b><center>Damage Type: %{damageType44}</center></b></td></tr>
<tr><td>Damage:</td><td>%{damageDice44}</td></tr>
<tr><td>Damage Die:</td><td>%{unrolledDice44}</td></tr>
</table></html>")]
<td><span title="{output.tip}">
-- [r: if(damageDice44 == 0, "", damageDice44)] [r: if(damageType44 == "", "", damageType44)]
</span></td>
[h: output.tip = strformat("<html>
<table><tr><td colspan=2><b><center>Damage Type: %{damageType55}</center></b></td></tr>
<tr><td>Damage:</td><td>%{damageDice55}</td></tr>
<tr><td>Damage Die:</td><td>%{unrolledDice55}</td></tr>
</table></html>")]
<td><span title="{output.tip}">
-- [r: if(damageDice55 == 0, "", damageDice55)] [r: if(damageType55 == "", "", damageType55)]
</span></td>
[h: totalDamage = damageDice11 + if(damageDice22 == "", 0, damageDice22) + if(damageDice33 == "", 0, damageDice33) + if(damageDice44 == "", 0, damageDice44) + if(damageDice55 == "", 0, damageDice55) + TempDamageModifier]
[h: output.tip = strformat("<html>
<table><tr><td colspan=2><b><center>Damage Total</center></b></td></tr>
<td>%{damageDice11} + %{TempDamageModifier} + %{damageDice22} + %{damageDice33} + %{damageDice44} + %{damageDice55} = %{totalDamage}(%{criticalDamageDice11} + %{tempCriticalDamage}) </td>
</table></html>")]
<td><span title="{output.tip}">
-- [r: totalDamage] [r: if(criticalHit == 1, "(", "")][r: if(criticalHit == 1, criticalDamageDice11 + tempCriticalDamage, "")][r: if(criticalHit == 1, ")", "")] damage.
</span></td>
[if(autoCMB == 1), CODE:
{
[h: output.tip = strformat("<html>
<table><tr><td colspan=2><b><center>CMB Roll</center></b></td></tr>
<tr><td>Modifier:</td><td>%{CMB}</td></tr>
<tr><td>Temporary Modifiers:</td><td>%{TempAttackModifier}</td></tr>
</table></html>")]
<td><span title="{output.tip}">
(CMB
[r: CMBtotal]</td>
<td>
(
[r: CMBroll]
))
</span></td>
};{}]
[if(SneakAttack > 0), CODE:
{
[h: output.tip = strformat("<html>
<table><tr><td colspan=2><b><center>Sneak Attack</center></b></td></tr>
<tr><td>Sneak Attack Dice:</td><td>%{SneakAttack}d6</td></tr>
</table></html>")]
<td><span title="{output.tip}">
( Sneak Attack
[r: SA]
)
</td>
};{}]
</tr>
Code: Select all
<!-- Initalizing the arrays -->
[h: attackArray = "attackNumber=0; toHitRoll=0; toHit=0; toHitModifier=0; criticalThreatRoll=0; criticalThreat=0; criticalThreatMod=0; criticalHit=0; criticalMultiplier=0; damageDice11=0; criticalDamageDice11=0; damageDice22=0; damageDice33=0; damageDice44=0; damageDice55=0; damageType11=0; damageType22=0; damageType33=0; damageType44=0; damageType55=0"]
[h: damageArray = ""]
[h: diceArray = ""]
<!-- Rolling to-hit's -->
[ if(arg(0) == 1),CODE:
{
[h: attackArray = setStrProp(attackArray, "attackNumber", "Attack 1")]
[h: Random.Roller(20)]
[h: toHitRoll = macro.return]
[h: attackArray = setStrProp(attackArray, "toHitRoll", macro.return)]
[h: toHitModifier = DefaultAttackModifier1 + TempAttackModifier]
[h: toHit = macro.return + toHitModifier]
[h: attackArray = setStrProp(attackArray, "toHit", toHit)]
[h: attackArray = setStrProp(attackArray, "toHitModifier", toHitModifier)]
[h: Random.Roller(20)]
[h: attackArray = setStrProp(attackArray, "criticalThreatRoll", macro.return)]
[h: criticalThreatMod = DefaultAttackModifier1 + TempAttackModifier + CriticalThreatModifier]
[h: criticalThreat = macro.return + criticalThreatMod]
[h: attackArray = setStrProp(attackArray, "criticalThreat", criticalThreat)]
[h: attackArray = setStrProp(attackArray, "criticalThreatMod", criticalThreatMod)]
[h: criticalThreatRange = listGet(CriticalType1, 0)]
[h: criticalMultiplier = listGet(CriticalType1, 1)]
[h: criticalHit = if(toHitRoll >= criticalThreatRange, 1, 0)]
[h: attackArray = setStrProp(attackArray, "criticalHit", criticalHit)]
[h: attackArray = setStrProp(attackArray, "criticalMultiplier", criticalMultiplier)]
[h, foreach(list, DamageDice1), CODE:
{
[h: damage = eval(listGet(DamageDice1,roll.count))]
[h: damageArray = listAppend(damageArray, damage)]
}]
[h: attackArray = setStrProp(attackArray, "damageDice11", listGet(damageArray, 0))]
[h: attackArray = setStrProp(attackArray, "damageDice22", listGet(damageArray, 1))]
[h: attackArray = setStrProp(attackArray, "damageDice33", listGet(damageArray, 2))]
[h: attackArray = setStrProp(attackArray, "damageDice44", listGet(damageArray, 3))]
[h: attackArray = setStrProp(attackArray, "damageDice55", listGet(damageArray, 4))]
[h: damageArray = ""]
[h, foreach(list, DamageDice1), CODE:
{
[h: damage = listGet(DamageDice1,roll.count))]
[h: damageArray = listAppend(damageArray, damage)]
}]
[h: attackArray = setStrProp(attackArray, "unrolledDice11", listGet(damageArray, 0))]
[h: attackArray = setStrProp(attackArray, "unrolledDice22", listGet(damageArray, 1))]
[h: attackArray = setStrProp(attackArray, "unrolledDice33", listGet(damageArray, 2))]
[h: attackArray = setStrProp(attackArray, "unrolledDice44", listGet(damageArray, 3))]
[h: attackArray = setStrProp(attackArray, "unrolledDice55", listGet(damageArray, 4))]
[h: Pull.CriticalMultiplier(attackArray)]
[h: attackArray = macro.return]
[h, foreach(list, DamageType1), CODE:
{
[h: dieType = listGet(DamageType1,roll.count))]
[h: diceArray = listAppend(diceArray, dieType)]
}]
[h: attackArray = setStrProp(attackArray, "damageType11", listGet(diceArray, 0))]
[h: attackArray = setStrProp(attackArray, "damageType22", listGet(diceArray, 1))]
[h: attackArray = setStrProp(attackArray, "damageType33", listGet(diceArray, 2))]
[h: attackArray = setStrProp(attackArray, "damageType44", listGet(diceArray, 3))]
[h: attackArray = setStrProp(attackArray, "damageType55", listGet(diceArray, 4))]
};{}]
[ if(arg(0) == 2),CODE:
{
[h: attackArray = setStrProp(attackArray, "attackNumber", "Attack 2")]
[h: Random.Roller(20)]
[h: toHitRoll = macro.return]
[h: attackArray = setStrProp(attackArray, "toHitRoll", macro.return)]
[h: toHitModifier = DefaultAttackModifier2 + TempAttackModifier]
[h: toHit = macro.return + toHitModifier]
[h: attackArray = setStrProp(attackArray, "toHit", toHit)]
[h: attackArray = setStrProp(attackArray, "toHitModifier", toHitModifier)]
[h: Random.Roller(20)]
[h: attackArray = setStrProp(attackArray, "criticalThreatRoll", macro.return)]
[h: criticalThreatMod = DefaultAttackModifier2 + TempAttackModifier + CriticalThreatModifier]
[h: criticalThreat = macro.return + criticalThreatMod]
[h: attackArray = setStrProp(attackArray, "criticalThreat", criticalThreat)]
[h: attackArray = setStrProp(attackArray, "criticalThreatMod", criticalThreatMod)]
[h: criticalThreatRange = listGet(CriticalType2, 0)]
[h: criticalMultiplier = listGet(CriticalType2, 1)]
[h: criticalHit = if(toHitRoll >= criticalThreatRange, 1, 0)]
[h: attackArray = setStrProp(attackArray, "criticalHit", criticalHit)]
[h: attackArray = setStrProp(attackArray, "criticalMultiplier", criticalMultiplier)]
[h, foreach(list, DamageDice2), CODE:
{
[h: damage = eval(listGet(DamageDice2,roll.count))]
[h: damageArray = listAppend(damageArray, damage)]
}]
[h: attackArray = setStrProp(attackArray, "damageDice11", listGet(damageArray, 0))]
[h: attackArray = setStrProp(attackArray, "damageDice22", listGet(damageArray, 1))]
[h: attackArray = setStrProp(attackArray, "damageDice33", listGet(damageArray, 2))]
[h: attackArray = setStrProp(attackArray, "damageDice44", listGet(damageArray, 3))]
[h: attackArray = setStrProp(attackArray, "damageDice55", listGet(damageArray, 4))]
[h: damageArray = ""]
[h, foreach(list, DamageDice2), CODE:
{
[h: damage = listGet(DamageDice2,roll.count))]
[h: damageArray = listAppend(damageArray, damage)]
}]
[h: attackArray = setStrProp(attackArray, "unrolledDice11", listGet(damageArray, 0))]
[h: attackArray = setStrProp(attackArray, "unrolledDice22", listGet(damageArray, 1))]
[h: attackArray = setStrProp(attackArray, "unrolledDice33", listGet(damageArray, 2))]
[h: attackArray = setStrProp(attackArray, "unrolledDice44", listGet(damageArray, 3))]
[h: attackArray = setStrProp(attackArray, "unrolledDice55", listGet(damageArray, 4))]
[h: Pull.CriticalMultiplier(attackArray)]
[h: attackArray = macro.return]
[h, foreach(list, DamageType2), CODE:
{
[h: dieType = listGet(DamageType2,roll.count))]
[h: diceArray = listAppend(diceArray, dieType)]
}]
[h: attackArray = setStrProp(attackArray, "damageType11", listGet(diceArray, 0))]
[h: attackArray = setStrProp(attackArray, "damageType22", listGet(diceArray, 1))]
[h: attackArray = setStrProp(attackArray, "damageType33", listGet(diceArray, 2))]
[h: attackArray = setStrProp(attackArray, "damageType44", listGet(diceArray, 3))]
[h: attackArray = setStrProp(attackArray, "damageType55", listGet(diceArray, 4))]
};{}]
[ if(arg(0) == 3),CODE:
{
[h: attackArray = setStrProp(attackArray, "attackNumber", "Attack 3")]
[h: Random.Roller(20)]
[h: toHitRoll = macro.return]
[h: attackArray = setStrProp(attackArray, "toHitRoll", macro.return)]
[h: toHitModifier = DefaultAttackModifier3 + TempAttackModifier]
[h: toHit = macro.return + toHitModifier]
[h: attackArray = setStrProp(attackArray, "toHit", toHit)]
[h: attackArray = setStrProp(attackArray, "toHitModifier", toHitModifier)]
[h: Random.Roller(20)]
[h: attackArray = setStrProp(attackArray, "criticalThreatRoll", macro.return)]
[h: criticalThreatMod = DefaultAttackModifier3 + TempAttackModifier + CriticalThreatModifier]
[h: criticalThreat = macro.return + criticalThreatMod]
[h: attackArray = setStrProp(attackArray, "criticalThreat", criticalThreat)]
[h: attackArray = setStrProp(attackArray, "criticalThreatMod", criticalThreatMod)]
[h: criticalThreatRange = listGet(CriticalType3, 0)]
[h: criticalMultiplier = listGet(CriticalType3, 1)]
[h: criticalHit = if(toHitRoll >= criticalThreatRange, 1, 0)]
[h: attackArray = setStrProp(attackArray, "criticalHit", criticalHit)]
[h: attackArray = setStrProp(attackArray, "criticalMultiplier", criticalMultiplier)]
[h, foreach(list, DamageDice3), CODE:
{
[h: damage = eval(listGet(DamageDice3,roll.count))]
[h: damageArray = listAppend(damageArray, damage)]
}]
[h: attackArray = setStrProp(attackArray, "damageDice11", listGet(damageArray, 0))]
[h: attackArray = setStrProp(attackArray, "damageDice22", listGet(damageArray, 1))]
[h: attackArray = setStrProp(attackArray, "damageDice33", listGet(damageArray, 2))]
[h: attackArray = setStrProp(attackArray, "damageDice44", listGet(damageArray, 3))]
[h: attackArray = setStrProp(attackArray, "damageDice55", listGet(damageArray, 4))]
[h: damageArray = ""]
[h, foreach(list, DamageDice3), CODE:
{
[h: damage = listGet(DamageDice3,roll.count))]
[h: damageArray = listAppend(damageArray, damage)]
}]
[h: attackArray = setStrProp(attackArray, "unrolledDice11", listGet(damageArray, 0))]
[h: attackArray = setStrProp(attackArray, "unrolledDice22", listGet(damageArray, 1))]
[h: attackArray = setStrProp(attackArray, "unrolledDice33", listGet(damageArray, 2))]
[h: attackArray = setStrProp(attackArray, "unrolledDice44", listGet(damageArray, 3))]
[h: attackArray = setStrProp(attackArray, "unrolledDice55", listGet(damageArray, 4))]
[h: Pull.CriticalMultiplier(attackArray)]
[h: attackArray = macro.return]
[h, foreach(list, DamageType3), CODE:
{
[h: dieType = listGet(DamageType3,roll.count))]
[h: diceArray = listAppend(diceArray, dieType)]
}]
[h: attackArray = setStrProp(attackArray, "damageType11", listGet(diceArray, 0))]
[h: attackArray = setStrProp(attackArray, "damageType22", listGet(diceArray, 1))]
[h: attackArray = setStrProp(attackArray, "damageType33", listGet(diceArray, 2))]
[h: attackArray = setStrProp(attackArray, "damageType44", listGet(diceArray, 3))]
[h: attackArray = setStrProp(attackArray, "damageType55", listGet(diceArray, 4))]
};{}]
[ if(arg(0) == 4),CODE:
{
[h: attackArray = setStrProp(attackArray, "attackNumber", "Attack 4")]
[h: Random.Roller(20)]
[h: toHitRoll = macro.return]
[h: attackArray = setStrProp(attackArray, "toHitRoll", macro.return)]
[h: toHitModifier = DefaultAttackModifier4 + TempAttackModifier]
[h: toHit = macro.return + toHitModifier]
[h: attackArray = setStrProp(attackArray, "toHit", toHit)]
[h: attackArray = setStrProp(attackArray, "toHitModifier", toHitModifier)]
[h: Random.Roller(20)]
[h: attackArray = setStrProp(attackArray, "criticalThreatRoll", macro.return)]
[h: criticalThreatMod = DefaultAttackModifier4 + TempAttackModifier + CriticalThreatModifier]
[h: criticalThreat = macro.return + criticalThreatMod]
[h: attackArray = setStrProp(attackArray, "criticalThreat", criticalThreat)]
[h: attackArray = setStrProp(attackArray, "criticalThreatMod", criticalThreatMod)]
[h: criticalThreatRange = listGet(CriticalType4, 0)]
[h: criticalMultiplier = listGet(CriticalType4, 1)]
[h: criticalHit = if(toHitRoll >= criticalThreatRange, 1, 0)]
[h: attackArray = setStrProp(attackArray, "criticalHit", criticalHit)]
[h: attackArray = setStrProp(attackArray, "criticalMultiplier", criticalMultiplier)]
[h, foreach(list, DamageDice4), CODE:
{
[h: damage = eval(listGet(DamageDice4,roll.count))]
[h: damageArray = listAppend(damageArray, damage)]
}]
[h: attackArray = setStrProp(attackArray, "damageDice11", listGet(damageArray, 0))]
[h: attackArray = setStrProp(attackArray, "damageDice22", listGet(damageArray, 1))]
[h: attackArray = setStrProp(attackArray, "damageDice33", listGet(damageArray, 2))]
[h: attackArray = setStrProp(attackArray, "damageDice44", listGet(damageArray, 3))]
[h: attackArray = setStrProp(attackArray, "damageDice55", listGet(damageArray, 4))]
[h: damageArray = ""]
[h, foreach(list, DamageDice4), CODE:
{
[h: damage = listGet(DamageDice4,roll.count))]
[h: damageArray = listAppend(damageArray, damage)]
}]
[h: attackArray = setStrProp(attackArray, "unrolledDice11", listGet(damageArray, 0))]
[h: attackArray = setStrProp(attackArray, "unrolledDice22", listGet(damageArray, 1))]
[h: attackArray = setStrProp(attackArray, "unrolledDice33", listGet(damageArray, 2))]
[h: attackArray = setStrProp(attackArray, "unrolledDice44", listGet(damageArray, 3))]
[h: attackArray = setStrProp(attackArray, "unrolledDice55", listGet(damageArray, 4))]
[h: Pull.CriticalMultiplier(attackArray)]
[h: attackArray = macro.return]
[h, foreach(list, DamageType4), CODE:
{
[h: dieType = listGet(DamageType4,roll.count))]
[h: diceArray = listAppend(diceArray, dieType)]
}]
[h: attackArray = setStrProp(attackArray, "damageType11", listGet(diceArray, 0))]
[h: attackArray = setStrProp(attackArray, "damageType22", listGet(diceArray, 1))]
[h: attackArray = setStrProp(attackArray, "damageType33", listGet(diceArray, 2))]
[h: attackArray = setStrProp(attackArray, "damageType44", listGet(diceArray, 3))]
[h: attackArray = setStrProp(attackArray, "damageType55", listGet(diceArray, 4))]
};{}]
[ if(arg(0) == 5),CODE:
{
[h: attackArray = setStrProp(attackArray, "attackNumber", "Attack 5")]
[h: Random.Roller(20)]
[h: toHitRoll = macro.return]
[h: attackArray = setStrProp(attackArray, "toHitRoll", macro.return)]
[h: toHitModifier = DefaultAttackModifier5 + TempAttackModifier]
[h: toHit = macro.return + toHitModifier]
[h: attackArray = setStrProp(attackArray, "toHit", toHit)]
[h: attackArray = setStrProp(attackArray, "toHitModifier", toHitModifier)]
[h: Random.Roller(20)]
[h: attackArray = setStrProp(attackArray, "criticalThreatRoll", macro.return)]
[h: criticalThreatMod = DefaultAttackModifier5 + TempAttackModifier + CriticalThreatModifier]
[h: criticalThreat = macro.return + criticalThreatMod]
[h: attackArray = setStrProp(attackArray, "criticalThreat", criticalThreat)]
[h: attackArray = setStrProp(attackArray, "criticalThreatMod", criticalThreatMod)]
[h: criticalThreatRange = listGet(CriticalType5, 0)]
[h: criticalMultiplier = listGet(CriticalType5, 1)]
[h: criticalHit = if(toHitRoll >= criticalThreatRange, 1, 0)]
[h: attackArray = setStrProp(attackArray, "criticalHit", criticalHit)]
[h: attackArray = setStrProp(attackArray, "criticalMultiplier", criticalMultiplier)]
[h, foreach(list, DamageDice5), CODE:
{
[h: damage = eval(listGet(DamageDice5,roll.count))]
[h: damageArray = listAppend(damageArray, damage)]
}]
[h: attackArray = setStrProp(attackArray, "damageDice11", listGet(damageArray, 0))]
[h: attackArray = setStrProp(attackArray, "damageDice22", listGet(damageArray, 1))]
[h: attackArray = setStrProp(attackArray, "damageDice33", listGet(damageArray, 2))]
[h: attackArray = setStrProp(attackArray, "damageDice44", listGet(damageArray, 3))]
[h: attackArray = setStrProp(attackArray, "damageDice55", listGet(damageArray, 4))]
[h: damageArray = ""]
[h, foreach(list, DamageDice5), CODE:
{
[h: damage = listGet(DamageDice5,roll.count))]
[h: damageArray = listAppend(damageArray, damage)]
}]
[h: attackArray = setStrProp(attackArray, "unrolledDice11", listGet(damageArray, 0))]
[h: attackArray = setStrProp(attackArray, "unrolledDice22", listGet(damageArray, 1))]
[h: attackArray = setStrProp(attackArray, "unrolledDice33", listGet(damageArray, 2))]
[h: attackArray = setStrProp(attackArray, "unrolledDice44", listGet(damageArray, 3))]
[h: attackArray = setStrProp(attackArray, "unrolledDice55", listGet(damageArray, 4))]
[h: Pull.CriticalMultiplier(attackArray)]
[h: attackArray = macro.return]
[h, foreach(list, DamageType5), CODE:
{
[h: dieType = listGet(DamageType5,roll.count))]
[h: diceArray = listAppend(diceArray, dieType)]
}]
[h: attackArray = setStrProp(attackArray, "damageType11", listGet(diceArray, 0))]
[h: attackArray = setStrProp(attackArray, "damageType22", listGet(diceArray, 1))]
[h: attackArray = setStrProp(attackArray, "damageType33", listGet(diceArray, 2))]
[h: attackArray = setStrProp(attackArray, "damageType44", listGet(diceArray, 3))]
[h: attackArray = setStrProp(attackArray, "damageType55", listGet(diceArray, 4))]
};{}]
[ if(arg(0) == 6),CODE:
{
[h: attackArray = setStrProp(attackArray, "attackNumber", "Attack 6")]
[h: Random.Roller(20)]
[h: toHitRoll = macro.return]
[h: attackArray = setStrProp(attackArray, "toHitRoll", macro.return)]
[h: toHitModifier = DefaultAttackModifier6 + TempAttackModifier]
[h: toHit = macro.return + toHitModifier]
[h: attackArray = setStrProp(attackArray, "toHit", toHit)]
[h: attackArray = setStrProp(attackArray, "toHitModifier", toHitModifier)]
[h: Random.Roller(20)]
[h: attackArray = setStrProp(attackArray, "criticalThreatRoll", macro.return)]
[h: criticalThreatMod = DefaultAttackModifier6 + TempAttackModifier + CriticalThreatModifier]
[h: criticalThreat = macro.return + criticalThreatMod]
[h: attackArray = setStrProp(attackArray, "criticalThreat", criticalThreat)]
[h: attackArray = setStrProp(attackArray, "criticalThreatMod", criticalThreatMod)]
[h: criticalThreatRange = listGet(CriticalType6, 0)]
[h: criticalMultiplier = listGet(CriticalType6, 1)]
[h: criticalHit = if(toHitRoll >= criticalThreatRange, 1, 0)]
[h: attackArray = setStrProp(attackArray, "criticalHit", criticalHit)]
[h: attackArray = setStrProp(attackArray, "criticalMultiplier", criticalMultiplier)]
[h, foreach(list, DamageDice6), CODE:
{
[h: damage = eval(listGet(DamageDice6,roll.count))]
[h: damageArray = listAppend(damageArray, damage)]
}]
[h: attackArray = setStrProp(attackArray, "damageDice11", listGet(damageArray, 0))]
[h: attackArray = setStrProp(attackArray, "damageDice22", listGet(damageArray, 1))]
[h: attackArray = setStrProp(attackArray, "damageDice33", listGet(damageArray, 2))]
[h: attackArray = setStrProp(attackArray, "damageDice44", listGet(damageArray, 3))]
[h: attackArray = setStrProp(attackArray, "damageDice55", listGet(damageArray, 4))]
[h: damageArray = ""]
[h, foreach(list, DamageDice6), CODE:
{
[h: damage = listGet(DamageDice6,roll.count))]
[h: damageArray = listAppend(damageArray, damage)]
}]
[h: attackArray = setStrProp(attackArray, "unrolledDice11", listGet(damageArray, 0))]
[h: attackArray = setStrProp(attackArray, "unrolledDice22", listGet(damageArray, 1))]
[h: attackArray = setStrProp(attackArray, "unrolledDice33", listGet(damageArray, 2))]
[h: attackArray = setStrProp(attackArray, "unrolledDice44", listGet(damageArray, 3))]
[h: attackArray = setStrProp(attackArray, "unrolledDice55", listGet(damageArray, 4))]
[h: Pull.CriticalMultiplier(attackArray)]
[h: attackArray = macro.return]
[h, foreach(list, DamageType6), CODE:
{
[h: dieType = listGet(DamageType6,roll.count))]
[h: diceArray = listAppend(diceArray, dieType)]
}]
[h: attackArray = setStrProp(attackArray, "damageType11", listGet(diceArray, 0))]
[h: attackArray = setStrProp(attackArray, "damageType22", listGet(diceArray, 1))]
[h: attackArray = setStrProp(attackArray, "damageType33", listGet(diceArray, 2))]
[h: attackArray = setStrProp(attackArray, "damageType44", listGet(diceArray, 3))]
[h: attackArray = setStrProp(attackArray, "damageType55", listGet(diceArray, 4))]
};{}]
[ if(arg(0) == 7),CODE:
{
[h: attackArray = setStrProp(attackArray, "attackNumber", "Attack 7")]
[h: Random.Roller(20)]
[h: toHitRoll = macro.return]
[h: attackArray = setStrProp(attackArray, "toHitRoll", macro.return)]
[h: toHitModifier = DefaultAttackModifier7 + TempAttackModifier]
[h: toHit = macro.return + toHitModifier]
[h: attackArray = setStrProp(attackArray, "toHit", toHit)]
[h: attackArray = setStrProp(attackArray, "toHitModifier", toHitModifier)]
[h: Random.Roller(20)]
[h: attackArray = setStrProp(attackArray, "criticalThreatRoll", macro.return)]
[h: criticalThreatMod = DefaultAttackModifier7 + TempAttackModifier + CriticalThreatModifier]
[h: criticalThreat = macro.return + criticalThreatMod]
[h: attackArray = setStrProp(attackArray, "criticalThreat", criticalThreat)]
[h: attackArray = setStrProp(attackArray, "criticalThreatMod", criticalThreatMod)]
[h: criticalThreatRange = listGet(CriticalType7, 0)]
[h: criticalMultiplier = listGet(CriticalType7, 1)]
[h: criticalHit = if(toHitRoll >= criticalThreatRange, 1, 0)]
[h: attackArray = setStrProp(attackArray, "criticalHit", criticalHit)]
[h: attackArray = setStrProp(attackArray, "criticalMultiplier", criticalMultiplier)]
[h, foreach(list, DamageDice7), CODE:
{
[h: damage = eval(listGet(DamageDice7,roll.count))]
[h: damageArray = listAppend(damageArray, damage)]
}]
[h: attackArray = setStrProp(attackArray, "damageDice11", listGet(damageArray, 0))]
[h: attackArray = setStrProp(attackArray, "damageDice22", listGet(damageArray, 1))]
[h: attackArray = setStrProp(attackArray, "damageDice33", listGet(damageArray, 2))]
[h: attackArray = setStrProp(attackArray, "damageDice44", listGet(damageArray, 3))]
[h: attackArray = setStrProp(attackArray, "damageDice55", listGet(damageArray, 4))]
[h: damageArray = ""]
[h, foreach(list, DamageDice7), CODE:
{
[h: damage = listGet(DamageDice7,roll.count))]
[h: damageArray = listAppend(damageArray, damage)]
}]
[h: attackArray = setStrProp(attackArray, "unrolledDice11", listGet(damageArray, 0))]
[h: attackArray = setStrProp(attackArray, "unrolledDice22", listGet(damageArray, 1))]
[h: attackArray = setStrProp(attackArray, "unrolledDice33", listGet(damageArray, 2))]
[h: attackArray = setStrProp(attackArray, "unrolledDice44", listGet(damageArray, 3))]
[h: attackArray = setStrProp(attackArray, "unrolledDice55", listGet(damageArray, 4))]
[h: Pull.CriticalMultiplier(attackArray)]
[h: attackArray = macro.return]
[h, foreach(list, DamageType7), CODE:
{
[h: dieType = listGet(DamageType7,roll.count))]
[h: diceArray = listAppend(diceArray, dieType)]
}]
[h: attackArray = setStrProp(attackArray, "damageType11", listGet(diceArray, 0))]
[h: attackArray = setStrProp(attackArray, "damageType22", listGet(diceArray, 1))]
[h: attackArray = setStrProp(attackArray, "damageType33", listGet(diceArray, 2))]
[h: attackArray = setStrProp(attackArray, "damageType44", listGet(diceArray, 3))]
[h: attackArray = setStrProp(attackArray, "damageType55", listGet(diceArray, 4))]
};{}]
[ if(arg(0) == "H"),CODE:
{
[h: attackArray = setStrProp(attackArray, "attackNumber", "Haste Attack")]
[h: Random.Roller(20)]
[h: toHitRoll = macro.return]
[h: attackArray = setStrProp(attackArray, "toHitRoll", macro.return)]
[h: toHitModifier = DefaultAttackModifierH + TempAttackModifier]
[h: toHit = macro.return + toHitModifier]
[h: attackArray = setStrProp(attackArray, "toHit", toHit)]
[h: attackArray = setStrProp(attackArray, "toHitModifier", toHitModifier)]
[h: Random.Roller(20)]
[h: attackArray = setStrProp(attackArray, "criticalThreatRoll", macro.return)]
[h: criticalThreatMod = DefaultAttackModifierH + TempAttackModifier + CriticalThreatModifier]
[h: criticalThreat = macro.return + criticalThreatMod]
[h: attackArray = setStrProp(attackArray, "criticalThreat", criticalThreat)]
[h: attackArray = setStrProp(attackArray, "criticalThreatMod", criticalThreatMod)]
[h: criticalThreatRange = listGet(CriticalTypeH, 0)]
[h: criticalMultiplier = listGet(CriticalTypeH, 1)]
[h: criticalHit = if(toHitRoll >= criticalThreatRange, 1, 0)]
[h: attackArray = setStrProp(attackArray, "criticalHit", criticalHit)]
[h: attackArray = setStrProp(attackArray, "criticalMultiplier", criticalMultiplier)]
[h, foreach(list, DamageDiceH), CODE:
{
[h: damage = eval(listGet(DamageDiceH,roll.count))]
[h: damageArray = listAppend(damageArray, damage)]
}]
[h: attackArray = setStrProp(attackArray, "damageDice11", listGet(damageArray, 0))]
[h: attackArray = setStrProp(attackArray, "damageDice22", listGet(damageArray, 1))]
[h: attackArray = setStrProp(attackArray, "damageDice33", listGet(damageArray, 2))]
[h: attackArray = setStrProp(attackArray, "damageDice44", listGet(damageArray, 3))]
[h: attackArray = setStrProp(attackArray, "damageDice55", listGet(damageArray, 4))]
[h: damageArray = ""]
[h, foreach(list, DamageDiceH), CODE:
{
[h: damage = listGet(DamageDiceH,roll.count))]
[h: damageArray = listAppend(damageArray, damage)]
}]
[h: attackArray = setStrProp(attackArray, "unrolledDice11", listGet(damageArray, 0))]
[h: attackArray = setStrProp(attackArray, "unrolledDice22", listGet(damageArray, 1))]
[h: attackArray = setStrProp(attackArray, "unrolledDice33", listGet(damageArray, 2))]
[h: attackArray = setStrProp(attackArray, "unrolledDice44", listGet(damageArray, 3))]
[h: attackArray = setStrProp(attackArray, "unrolledDice55", listGet(damageArray, 4))]
[h: Pull.CriticalMultiplier(attackArray)]
[h: attackArray = macro.return]
[h, foreach(list, DamageTypeH), CODE:
{
[h: dieType = listGet(DamageTypeH,roll.count))]
[h: diceArray = listAppend(diceArray, dieType)]
}]
[h: attackArray = setStrProp(attackArray, "damageType11", listGet(diceArray, 0))]
[h: attackArray = setStrProp(attackArray, "damageType22", listGet(diceArray, 1))]
[h: attackArray = setStrProp(attackArray, "damageType33", listGet(diceArray, 2))]
[h: attackArray = setStrProp(attackArray, "damageType44", listGet(diceArray, 3))]
[h: attackArray = setStrProp(attackArray, "damageType55", listGet(diceArray, 4))]
};{}]
[h: macro.return = attackArray]
Well 1: Attack 1 - Threat - 16 (16) 15 (15) ---- 1 (3) Slashing -- 1 Fire -- -- -- -- 2 (3) damage.
Well 1: Attack 1 - 9 ---- 2 Slashing -- 5 Fire -- -- -- -- 7 damage.