Houserule Gaming
Would you like to react to this message? Create an account in a few clicks or log in to continue.

MapTool macros for WoD

Go down

MapTool macros for WoD Empty MapTool macros for WoD

Post  Oriet Thu Sep 15, 2011 8:12 pm

Below is the macro I've gotten to work for standard dice rolling for WoD. It brings up a window where you select the number of dice to roll, the difficulty number, what number gets rolled again on (or higher), a checkbox for "x again," and if you want to subtract 1s from the number of successes. I actually took a macro given to me that had most of those options, but modified it so that the difficulty was also a variable you input.

Code:
<p style>
[h: inputString = "numDice| 1 | How many dice to roll? | TEXT"]
[h: inputString3 = "difficulty| 6 | What is the difficulty for the roll? | TEXT"]
[h: inputString2 = "againDice|10,9,8|Roll again on|RADIO|ORIENT=H VALUE=STRING"]
[h: subString = "sub1|1|Subtract 1s from successes?|CHECK"]
[h: reRollString = "reroll|0|Use the X again rule?|CHECK"]
[h: status = input(inputString,inputString3,inputString2,reRollString,subString)]
[h: abort(status)]

[h: diceArray='[]']
[h: i=0]   

[h,IF(reroll == 1),CODE:{
   [while(i < numDice), CODE:{
      [theRoll = 1d10]
      [diceArray = json.append(diceArray,theRoll)]
      [IF(theRoll < againDice): i = i + 1]
   }]
}]

[h,IF(reroll == 0),CODE:{
   [while(i < numDice), CODE:{
      [theRoll = 1d10]
      [diceArray = json.append(diceArray,theRoll)]
      [i = i + 1]
   }]
}]

[h: numSuccess = 0]
[h: numFail = 0]
[count(json.length(diceArray)), CODE:{
   [h: thedie = json.get(diceArray,roll.count)]
   [h,IF(thedie >= difficulty),CODE:{
      [h: numSuccess = numSuccess + 1]
      [h: color = 'green']
   }]

   [h,IF(thedie == 1),CODE:{
      [h: numFail = numFail + 1]
      [h: numSuccess = numSuccess - sub1]
      [h: color = 'red']
   }]

   [h,IF(thedie >= 2 && thedie <= (difficulty - 1)), CODE:{
      [h: numFail = numFail + 1]
      [h: color = 'black']
   }]

   <font color=[r: color]> [r: thedie] </font>
}]
(Success: <font color='green'>[r: numSuccess]</font> , Fail: <font color='blue'> [r: numFail] </font>)
</p style>




I've also made some health macros to go along with campaign properties. It's pretty basic so far, but accounts for bashing, lethal, and aggravated damage having different values, and properly deals with falling unconscious and dying. It does not handle any rolls or soaking, those are done before applying the levels of damage through the macros.

This also requires having a health bar labelled "Health," and uses it to give a good visual indicator of how they're doing overall. It would also be possible to through in different health bars for the different types of damage as well as the overall indicator, but currently I'm focused on simple functionality.

Necessary campaign properties to include with whatever else you want:
Code:

*Health:Fine
*@TotalDamage (TotDmg):0
*@BashingDamage (BshDmg):0
*@LethalDamage (LthDmg):0
*@AggravatedDamage (AggDmg):0

The Health bar can be given 8 increments, or none, to properly show the incrementing health levels.

The Bashing Damage macro, which can be duplicated and edited for Lethal and Aggravated Damage macros as well.
Code:
[h: damage = Bashing_Damage_Recieved]
[h: BashingDamage = BashingDamage + damage]
[h: TotalDamage = BashingDamage + LethalDamage + AggravatedDamage]
[h: BadDamage = LethalDamage + AggravatedDamage]

[h,if(TotalDamage == 0): Health = "Fine"]
[h,if(TotalDamage == 1): Health = "Bruised (-0)"]
[h,if(TotalDamage == 2): Health = "Hurt (-1)"]
[h,if(TotalDamage == 3): Health = "Injured (-1)"]
[h,if(TotalDamage == 4): Health = "Wounded (-2)"]
[h,if(TotalDamage == 5): Health = "Mauled (-2)"]
[h,if(TotalDamage == 6): Health = "Crippled (-5)"]
[h,if(TotalDamage >= 7): Health = "Incapacitated"]

[h,if(TotalDamage < 8 && BadDamage < 8),code:{
   [bar.Health = TotalDamage / 8]
}]

[h,if(TotalDamage > 7 && BadDamage < 8),code:{
   [bar.Health = 1]
   [setState("Incapacitated", 1)]
}]

[h,if(TotalDamage > 14 || BadDamage >7),r,code:{
   [bar.Health = 1]
   [setState("Dead", 1)]
}]

Has taken [r: damage] bashing damage, [r,if(TotalDamage < 8): "and"; ""] is [r: Health][r,if(TotalDamage > 7 && BadDamage < 8): ", and has fallen unconscious"; ""][r,if(TotalDamage > 14 || BadDamage >7): ", and has died."; "."]

A Health Reset macro, to quickly reset their Health levels to baseline levels. Currently not usable for only partial healing.
Code:
[h: TotalDamage = 0]
[h: BashingDamage = 0]
[h: LethalDamage = 0]
[h: AggravatedDamage = 0]
[h: bar.Health = 0/8]
[h: setAllStates(0)]
[h: Health = "Fine"]

Health has been reset.

If the macros are used as campaign macros then remember to check "Apply to selected tokens" or it'll give NullPointerException errors.
Oriet
Oriet
Admin

Posts : 25
Join date : 2011-09-14
Location : Lost in the gears of the Dreamwatch of time.

https://houserulegaming.board-directory.net

Back to top Go down

MapTool macros for WoD Empty Re: MapTool macros for WoD

Post  Oriet Sat Sep 17, 2011 3:35 am

Here's the MapTool health bar I created for WoD games.

First is the bar coloured to correspond to the main health levels.
MapTool macros for WoD WoDHealth06

And a background that shows the empty health levels.
MapTool macros for WoD WoDHealth05

Or a transparent layer to put as a background.
MapTool macros for WoD WoundMeterBlank
(It's right in between this and the last line of text. Really, it is!)



I've also realised that the bar, just like the health macros, currently only correspond to the base health levels for Mage characters. I'll have to later modify them so they can accommodate variable health levels for NPCs, traits, and the like. Might be a while before I get around to that, as I've now got several things to get done for further expanding the site with more gaming stuff I want to share.
Oriet
Oriet
Admin

Posts : 25
Join date : 2011-09-14
Location : Lost in the gears of the Dreamwatch of time.

https://houserulegaming.board-directory.net

Back to top Go down

Back to top

- Similar topics

 
Permissions in this forum:
You cannot reply to topics in this forum