[MOD] Turn Undead/Channel Energy 3.5 (MT1.3b82 r01)

Discussion concerning lmarkus' campaign framework for D&D3.x and Pathfinder.

Moderators: dorpond, trevor, Azhrei, giliath, Gamerdude, jay, Mr.Ice, lmarkus001

Forum rules
Discussion regarding lmarkus001's framework only. Other posts deleted without notice! :)
Post Reply

Turn Undead/Channel Energy 3.5

Useful
0
No votes
Okay
0
No votes
Not Useful
0
No votes
NA
0
No votes
 
Total votes: 0

User avatar
aliasmask
RPTools Team
Posts: 9029
Joined: Tue Nov 10, 2009 6:11 pm
Location: Bay Area

[MOD] Turn Undead/Channel Energy 3.5 (MT1.3b82 r01)

Post by aliasmask »

This mod will allow you to either turn undead or channel energy to power feats.

It can be used to automatically and without prompting to channel X amount with a call like this:

Code: Select all

[MACRO("TurnUndeadDnD35@Lib:libDnD35Pathfinder"): json.append("",id,amount)]
  • id - token id
  • amount - amount of energy to be spent.
If you create a UDF for the function called channelEnergy is would have the following:
channelEnergy([id,amount,turnUndead]) Uses Notepad++ formatting for use with RPedit. Remove top 2 lines and bottom line to paste directly in to macro.
||| TurnUndeadDnD35 |||

Code: Select all

@@ @TurnUndeadDnD35
@PROPS@ fontColor=black;autoExecute=true;fontSize=0.95em;sortBy=21;color=default;playerEditable=false;applyToSelected=true;group=;tooltip=;minWidth=
[H, if(! json.isEmpty(macro.args)), code: {
   [H: id = json.get(macro.args,0)]
   [H, if(id == 0): macro.args = "[]"]
   [H: numArgs = json.length(macro.args)]
   [H, if(numArgs >= 2): energyAmount = json.get(macro.args,1);energyAmount = 1]
   [H, if(numArgs >= 3): turnUndead = json.get(macro.args,2); turnUndead = 0]   
   [H: skipInput = 1]
};{}]
[H, if(json.isEmpty(macro.args)), code: {
   [H: id = if(json.isEmpty(currentToken()),getSelected(),currentToken())]
   [H: skipInput = 0]
};{}]
[H, if(json.isEmpty(id)): abort(0)]
[H: switchToken(id)]
[H: TurnLevel = number("0"+getStrProp(Levels, "TurnLevel"))]
[H: currentTurns = number("0"+getStrProp(Daily, "ChannelEnergy"))]
[H: MaxTurns = ChannelEnergy + ChaB]
[H: turnsRemaining = MaxTurns - currentTurns]

[H, if(! skipInput), code: {
   [H, if(TurnLevel), code: {
      [H: turnUndead = 1]
      [H: energyAmount = 0]
      [H, if(currentTurns < MaxTurns): abort(input("turnUndead|Channel Energy,Turn Undead|Pick One or Cancel|RADIO|SPAN=TRUE ORIENT=H SELECT=1",
         "energyAmount|1|Energy/Turns Used|TEXT|WIDTH=6"))]
   };{
      [H: turnUndead = 0]
      [H: energyAmount = 0]
      [H, if(currentTurns < MaxTurns): abort(input("energyAmount|1|Energy Channelled|TEXT|WIDTH=6"))]
   }] 
}]
[H, if(! isNumber(energyAmount)): energyAmount = 0]

[H, if(turnUndead && energyAmount && turnsRemaining), code: {
   [H: energyAmount = 1]
   [H: KnowledgeReligion = 0]
   [H: religionID = json.get(table("SysLocale", 0), "religion")]
   [H: numSkills = json.length(SkillsJ)]
   [H, FOR(i, 0, numSkills), CODE: {
      [cSkill = json.get(SkillsJ, i)]
      [H, IF(json.contains(cSkill, "fullname")): skN = json.get(cSkill, "fullname"); skN = json.get(cSkill, "name")]
      [IF(json.contains(cSkill, "subcat")): subcat = json.get(cSkill, "subcat"); subcat = ""]
      [IF(skN == "Knowledge" && isNumber(subcat)): foundKR = if(subcat == religionID, 1, 0); foundKR = if(lower(subcat) == lower(table("SysLocale", religionID)), 1, 0)]
      [IF(skN != "Knowledge"): foundKR = 0]
      [IF(foundKR): KnowledgeReligion = json.get(cSkill, "rank")]
   }]
   [H: turnBonus = if(KnowledgeReligion > 4, 2, 0)]
   [H: TurnRoll = 1d20]
   [H: DamageRoll = 2d6]
   [H: ttres = TurnRoll + ChaB + turnBonus]
   [H: mhd = eval(tbl("TurnUndead", ttres))]
   [H: tableBonus = mhd - TurnLevel]
   [H: turnDamage = DamageRoll + TurnLevel + ChaB]

   [H: tout = strformat("<b>Turn Undead: </b>Turned <b>%{turnDamage} HD</b> (max %{mhd} HD each)")]
   [H: ttip = strformat("<table><tr><td>Turn Check (table lookup):</td><td>Roll (%{TurnRoll}) + ChaB(%{ChaB}) + Bonus(%{turnBonus}) = %{ttres}</td></tr>
      <tr><td>Max Turn Level:</td><td>Turn Level (%{TurnLevel}) + Table Bonus (%{tableBonus}) = %{mhd} HD each</td></tr>
      <tr><td>Turn Damage:</td><td>Turn Level (%{TurnLevel}) + 2d6 (%{DamageRoll}) + ChaB(%{ChaB}) = %{turnDamage} HD turned</td></tr>
      <tr><td>&nbsp</td></tr>")]
   [H: currentTurns = currentTurns + energyAmount]
};{}]

[H, if(! turnUndead && energyAmount), code: {
   [H, if(energyAmount <= turnsRemaining), code: {
      [H: tout = strformat("<b>Channel Energy:</b> %{energyAmount} Turn(s) used")]
      [H: currentTurns = currentTurns + energyAmount]
   };{
      [H: tout = "<b>Channel Energy:</b> Not enough Energy"]
      [H: energyAmount = 0]
   }]
   [H: ttip = "<table>"]
};{}]

[H, if( turnUndead && turnsRemaining <= 0), code: {
   [H: tout = "<b>Turn Undead:</b> Out of Turns."]
   [H: ttip = "<table>"]
};{}]

[H: ttip = ttip + strformat("<tr><td>Turn Level:</td><td>%{TurnLevel}</td></tr>
   <tr><td>Energy/Turns Used:</td><td>%{energyAmount}</td></tr>
   <tr><td>Current Energy/Turns:</td><td>%{currentTurns}</td></tr>
   <tr><td>Max Energy/Turns:</td><td>%{MaxTurns}</td></tr></table>")]
[R: strformat('<span title="<html>%{ttip}</html>">%{tout}</span>')]
[H: Daily = setStrProp(Daily, "ChannelEnergy", currentTurns )]

!!
 
Compatible with current Channel Energy macro where the 0 is ignored as an id in macro call.
Attachments
example.jpg
example.jpg (42.32 KiB) Viewed 3126 times

Post Reply

Return to “D&D 3.5/Pathfinder 1e Campaign Macros”