First a little background since I know some of what I did won't apply to everyone. I run my game in person. My players all have pencil and paper and are seated on my couch watching the 50" wall mounted plasma TV which has the player client for maptool. Everything on the screen is done by me. Players roll their own attacks and damage and I just update the display. That said, these changes can still be added by anyone and they won't hurt anything.
Firstly, I use health bars, so I added support for them.
On Damage@Lib:MacroPolicebox add the setBar line:
Code: Select all
[IF(NewHP>0 && getState("Dying", index)): Results=Results+evalMacro('[MACRO("Remove Effect@this"): "Effect=Dying_AC; Targets="+index]')]
[IF(getState("Dead", index) && !isDead): Results=Results+evalMacro('[MACRO("Death@this"): index]')]
[h:setBar("Health", getProperty("CurrHP", index)/getProperty("MaxHP", index))]
}]
Code: Select all
[CurrHP=MaxHP]
[h:setBar("Health", 1)]
[SurgeRemaining=SurgePerDay]
On Attack @Lib:MacroPolicebox change the last line:
Code: Select all
[h:macro.return="Hits="+Hits+"; Misses="+Misses+"; Criticals="+Criticals+"; AllHits="+AllHits+"; GCATokens="+GCATokens+"; Roll="+Roll+";"]
Code: Select all
[MACRO("Choose Targets@Lib:MacroPolicebox"): "Range=10; Select=Enemies"]
[h:varsFromStrProp(macro.return)]
[h:validTargets=Targets]
[MACRO("Choose From List@Lib:MacroPolicebox"): "Options="+validTargets+"; AbortMessage=; Prompt=Choose Target"]
[h:Target=macro.return]
[h:validTargets=listDelete(validTargets,listFind(validTargets,Target))]
[MACRO("Attack Power@Lib:MacroPolicebox"): "Power="+getMacroName()+"; PowerSpecs=at-will &diams none<br>standard, Ranged 10; Attack=ranged vs. Reflex; Type="+Class+" Attack 1; Range="+10+"; Single=1; AttackAdjustment=16; Damage=3d6+9; Targets="+Target]
[h:varsFromStrProp(macro.return)]
[WHILE(floor( Roll / 2 )==( Roll / 2 ) && listCount(validTargets) && Misses==""), CODE:
{
[MACRO("Choose From List@Lib:MacroPolicebox"): "Options="+validTargets+"; AbortMessage=; Prompt=Choose Target"]
[h:Target=macro.return]
[h:validTargets=listDelete(validTargets,listFind(validTargets,Target))]
[MACRO("Attack Power@Lib:MacroPolicebox"): "Power="+getMacroName()+"; PowerSpecs=at-will &diams none<br>standard, Ranged 10; Attack=ranged vs. Reflex; Type="+Class+" Attack 1; Range="+10+"; Single=1; AttackAdjustment=16; Damage=2d6+7; Targets="+Target]
[h:varsFromStrProp(macro.return)]
}]
On Swap Places@Lib:MacroPolicebox change the Choose Targets call to pass the Token parameter as well:
Code: Select all
[IF(Targets==""), CODE:
{
[h,MACRO("Choose Targets@Lib:MacroPolicebox"): "ErrorCheck=0; Single=1; Range="+Range+"; Select="+Select+"; Token="+Token]
[varsFromStrProp(macro.return)]
}]
Code: Select all
[MACRO("Attack Power@Lib:MacroPolicebox"): "Power="+getMacroName()+"; PowerSpecs=at-will &diams none<br>standard, Ranged 10; Attack=ranged vs. Will; Type="+Class+" Attack 1; Range="+10+"; Single=1; AttackAdjustment=16; Damage=3d8+11; "]
[h:varsFromStrProp(macro.return)]
[IF(AllHits!=""), CODE: {
[MACRO("Swap Places@Lib:MacroPolicebox"): "Token="+AllHits+"; Range=3; Select=Allies"]
};{}]
There will likely be more since I haven't even moved the PCs over yet. That should happen tomorrow.
I have some other ideas, but for now I have working on getting through Saturday.