Files
roll20-character-sheets-tester/Earthdawn (FASA Official)/Earthdawn.html
T
2020-05-25 10:17:46 -04:00

6502 lines
560 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<meta charset="UTF-8">
<!--
Earthdawn by FASA character sheet.
by Chris Dickey (Roll20 user "Chris D")
Version is at the end of the file in updatecharactersheet().
-->
<div class="user-root"> <!-- Everything inside this outer form div wrapper should be indented, but is not. -->
<span>
<input class="testNum" name="attr_Logo-Size" type="hidden" value="0"/>
<img src="https://s3.amazonaws.com/files.staging.d20.io/images/258659/43tgLdtfozFTvZrPGMv-uw/med.png?1539148273" class="logo-Half HideIfZero HideIfTwo" alt="Earthdawn 4th edition RPG Character Sheet" />
</span>
<span>
<input class="testNum" name="attr_Logo-Size" type="hidden" value="0"/>
<img src="https://s3.amazonaws.com/files.staging.d20.io/images/258659/43tgLdtfozFTvZrPGMv-uw/med.png?1539148273" class="logo-Full HideIfOne HideIfTwo" alt="Earthdawn 4th edition RPG Character Sheet" />
</span>
<input name="attr_edition" class="hidden" type="number"/> <!-- Global value that the API will copy into each individual sheet giving the version number that this sheet has been updated to. -->
<input name="attr_edition" class="edition3 hidden" type="checkbox" value="3"/> <!-- Global value that the API will copy into each individual sheet giving the version number that this sheet has been updated to. -->
<input name="attr_edition" class="edition4 hidden" type="checkbox" value="4"/> <!-- Global value that the API will copy into each individual sheet giving the version number that this sheet has been updated to. -->
<input name=attr_API" class="testAPI hidden" type="checkbox" value="1" />
<div class="header">
<div class="w30 floatRight flex-container" title="@{player-name} Name of player whose character this is."> <!-- This is all floating to the right, so some of this will actually be below the next div. -->
<span class="label-flex">Player:&nbsp;</span>
<input name="attr_player-name" type="text" style="flex:1" placeholder="Player Name">
<button class="text-button ui-draggable button-nodice api" name="button_WikiHelp" type="roll"
value="!Earthdawn~ ChatMenu: Help"
title="button_WikiHelp: Click this button to open this character sheets Wiki Documentation in another tab.">Help Wiki
</button>
<button class="text-button ui-draggable button-nodice NoAPI" name="button_WikiHelpNoAPI" type="roll"
value="For help look in https://wiki.roll20.net/Earthdawn_-_FASA_Official"
title="button_WikiHelp: This sheets Wiki Documentation is at https://wiki.roll20.net/Earthdawn_-_FASA_Official.">Help Wiki
</button>&nbsp;
</div>
<div class="w30 flex-container" title="@{character_name} Full name of character.">
<span class="label-flex">Character:&nbsp;</span>
<input name="attr_character_name" type="text" style="flex:1" placeholder="Character Full Name">
</div>
<div class="w30 floatRight flex-container">
<span class="nowrap1" title="@{Damage-Stun} Number of points of Stun damage this character has taken.">Stun:&nbsp;
<input name="attr_Damage-Stun" type="number" value="0" class="numShort"></span>
<span class="nowrap1" title="@{Damage} Number of points of regular damage this character has taken.">Dmg:&nbsp;
<input name="attr_Damage" type="number" value="0" class="numShort"></span>
<span class="nowrap0" title="@{DamageTotal}: Total number of points of damage this character has taken, summing both Stun and Normal damage.">Tot:&nbsp;
<input name="attr_DamageTotal" type="number" disabled value="(@{Damage}+@{Damage-Stun})" min="0" class="NumShort"></span>
</div>
<div class="w30 flex-container">
<b>Curr - Karma:&nbsp;</b>
<input name="attr_Karma" type="number" value="0" class="numShort"
title="@{Karma}: How many karma points the character currently has left unspent."/>&nbsp;&nbsp;&nbsp;
<input class="testChecked hidden" name="attr_Questor" type="checkbox" value="None"/>
<span class="HideIfChecked"><b>&nbsp;&nbsp;DP:&nbsp;</b></span>
<input name="attr_DP" type="number" value="0" class="HideIfChecked numShort"
title="@{DP}: How many DP (Questor Devotion Points) the character currently has left unspent."/>
<b title="@{Wounds}: Number of Wounds character currently has.">&nbsp;&nbsp;Wounds:&nbsp;</b>
<input name="attr_Wounds" type="number" value="0" min="0" title="@{Wounds}: Number of Wounds character currently has.">
<input name="attr_Wounds_max" class="hidden" type="number" value="8" title="@{Wounds_max}: Made up number to give something for the Wounds bar (bar2) to measure against.">
</div>
<div class="w30 floatRight flex-container">
<span>Action Tests:&nbsp;
<input name="attr_Adjust-All-Tests-Misc" type="number" value="0"
title="@{Adjust-All-Tests-Misc}: Enter any Misc Adjustments to All Action Tests here." />
<input name="attr_Adjust-All-Tests-Total" type="number" value="0" readonly
title="@{Adjust-All-Tests-Total} This is the total adjustment to All Action Tests from Wounds, Conditions, Combat Options and Misc Adjustments." />
</span>
</div>
<div class="w30 flex-container">
<span class="api">
<b>Use - Karma:&nbsp;</b>
<input name="attr_Karma-Roll" type="number" value="0" class="numShort" min="0"
title="@{Karma-Roll} How many karma dice should be included on Rolls made from this sheet."/>
<input class="testChecked hidden" name="attr_Questor" type="checkbox" value="None"/>
<span class="HideIfChecked"><b>&nbsp;&nbsp;DP:&nbsp;</b></span>
<input name="attr_Devotion-Roll" class="HideIfChecked numShort" type="number" value="0" min="0"
title="@{Devotion-Roll} How many Devotion Points dice should be included on Rolls made from this sheet."/>
</span>
<span class="NoAPI"><br></span>
</div>
<b>Combat Options &amp; Conditions:</b>
<input class="sect-show" name="attr_show-conditions" type="checkbox" value="1"
title="@{show-conditions} Show or hide the Combat Options &amp; Conditions section"/>
<span class="option-show"></span> <!-- You need a blank span here for the Show/Hide css code to work with -->
<div class="table sect">
<span class="table-name">Modifiers, Combat options &amp; Conditions</span>
<div class="table-row">
<div class="w20">
<input class="testCloseChecked hidden" name="attr_effectIsAction" type="checkbox" value="1"/>
<span class="HideIfCloseChecked">
Effect Tests<br>
<span class="table-data">
<input name="attr_Adjust-Effect-Tests-Misc" type="number" value="0"
title="@{Adjust-Effect-Tests-Misc}: Enter any Misc Adjustments to Effect Tests here." />
</span>
<span class="table-data">
<input name="attr_Adjust-Effect-Tests-Total" type="number" value="0" readonly
title="@{Adjust-Effect-Tests-Total} This is the total adjustment to All Effect Tests from Wounds and Misc Adjustments." />
</span></span>
</div>
<div class="w20">Target Numbers<br>
<span class="table-data">
<input name="attr_Adjust-TN-Misc" type="number" value="0" title="@{Adjust-TN-Misc}: Enter any Misc Adjustments to all Target Numbers here.">
</span>
<div class="table-data">
<input name="attr_Adjust-TN-Total" type="number" value="0" readonly
title="@{Adjust-TN-Total} This is the total adjustment to all target numbers from Delayed Actions and Misc Adjustments.">
</div>
</div>
<div class="w20">Defenses<br>
<span class="table-data">
<input name="attr_Adjust-Defenses-Misc" type="number" value="0" title="@{Adjust-Defenses-Misc}: Enter any Misc Adjustments to both Physical and Mystic defenses here." >
</span>
<!-- Only count the Max of BlindSided + KnockedDown vs Unconscious - Dying. Don't count all the conditions separately. -->
<div class="table-data">
<input name="attr_Adjust-Defenses-Total" type="number" value="0" readonly
title="@{Adjust-Defenses-Total} This is the total adjustment to Physical and Mystic Defenses from Conditions, Combat Options and Misc Adjustments." >
</div>
</div>
<div class="w20">Attacks <span="api">(& bonus)</span><br>
<span class="table-data">
<input name="attr_Adjust-Attacks-Misc" type="number" value="0" title="@{Adjust-Attacks-Misc}: Enter any Misc Adjustments to Attacks here.">
</span>
<div class="table-data">
<input name="attr_Adjust-Attacks-Total-Display" type="number" disabled
value="(@{Adjust-Attacks-Total-CC}-@{condition-Darkness})"
title="@{Adjust-Attacks-Total-CC} This is the total adjustment to Attacks from Wounds, Conditions, Combat Options (including aggressive attack) and Misc Adjustments.">
</div>
<span class="table-data api">
<input name="attr_Adjust-Attacks-Bonus" type="number" value="0" min="0" title="@{Adjust-Attacks-Bonus}: Enter the Step number of any Bonus Die (other than karma) here.">
</span>
</div>
<span class="hidden">
<input name="attr_Adjust-Attacks-Total" type="number" value="0">
<input name="attr_Adjust-Attacks-Total-CC" type="number" value="0">
<input name="attr_Adjust-Damage-Total" type="number" value="0">
</span>
<div class="w20">Damage <span="api">(& bonus)</span><br>
<span class="table-data">
<input name="attr_Adjust-Damage-Misc" type="number" value="0" title="@{Adjust-Damage-Misc}: Enter any Misc Adjustments to Damage you deal here." >
</span>
<div class="table-data">
<input name="attr_Adjust-Damage-Total-CC" type="number" readonly value="0"
title="@{Adjust-Damage-Total-CC} This is the total adjustment to Damage you deal from Wounds, Conditions, Combat Options (including aggressive attack) and Misc Adjustments." >
</div>
<span class="table-data api">
<input name="attr_Adjust-Damage-Bonus" type="number" value="0" min="0" title="@{Adjust-Damage-Bonus}: Enter the Step number of any Bonus Die (other than karma) here.">
</span>
</div>
</div>
<div class="table-row">
<!-- <span class="w40" title="Attack to Stun - Damage test inflicts Stun damage. Attack to Knockdown - Force Knockdown test against Damage roll minus armor. No actual damage inflicted. Set VS. Charge - Replace your strength with attacking mounts. If achieve extra successes force a knockdown test. Shatter Shield - Take one Strain. Damage vs shields Shatter Threshold. Jump-Up - Take 2 strain and make Dex (6) test to stand up as simple action with no other movement possible. Use IP penalty of armor but not -3 for being knocked down. Use the Jump-Up buttons on Core or Combat Pages.">
<label class="co-nothing">Other CO: </label>
-->
<span class="w20">
<label title="Other Combat Options not otherwise listed there. This entry just provides tool tips to remind about other Combat Options and how to use them.">Other CO:&nbsp;</label>
<span title="Attack to Stun - Damage test inflicts Stun damage which heals much easier than real damage.">
<label>&nbsp;Stun,&nbsp; </label></span>
<span title="Attack to Knockdown - Force Knockdown test against Damage roll minus armor. No actual damage inflicted.">
<label>&nbsp;KD,&nbsp; </label></span>
</span>
<span class="w20">
<span title="Set VS. Charge - Replace your strength with attacking mounts. If achieve extra successes force a knockdown test.">
<label>Set vs,&nbsp; </label></span>
<span title="Shatter Shield - Take one Strain. Damage vs shields Shatter Threshold.">
<label>&nbsp;Shatter,&nbsp; </label></span>
<span title="Jump-Up - Take 2 strain and make Dex (6) test to stand up as simple action with no other movement possible. Use IP penalty of armor but not -3 for being knocked down. Use the Jump-Up buttons on Core or Combat Pages.">
<label>&nbsp;JumpUp </label></span>
</span>
<span class="w20" title="@{combatOption-CalledShot} Take one Strain; –3 penalty to Attack test; if successful, attack hits designated area.">
<input type="checkbox" name="attr_combatOption-CalledShot" value="1"/><b> Called Shot</b></span>
<span class="w20" title="@{combatOption-AggressiveAttack} +3 bonus to Close Combat attack and damage tests. -3 Penalty to Physical and Mystic defense. 1 Strain per Attack.">
<input type="checkbox" name="attr_combatOption-AggressiveAttack" value="1"/><b> Aggressive Atk</b></span>
<span class="w20" title="@{combatOption-DefensiveStance} +3 Bonus to Physical and Mystic defenses. -3 to all actions except defensive rolls and Knockdown tests.">
<input type="checkbox" name="attr_combatOption-DefensiveStance" value="1"/><b> Defensive Stance</b></span>
</div>
<div class="table-row">
<!--
<span class="w20" title="Force Knockdown test against Damage roll minus armor. No actual damage inflicted. Damage test inflicts Stun damage.">
<label class="co-nothing">Atk to K-down / Stun</label></span>
<span class="w20" title="Replace your strength with attacking mounts. If achieve extra successes force a knockdown test.">
<label class="co-nothing">Set VS. charge</label></span>
<span class="w20" title="Damage test inflicts Stun damage.">
<label class="co-nothing">Atk to Stun</label></span>
<span class="w20" title="Take 2 strain and make Dex (6) test to stand up as simple action with no other movement possible. Use IP penalty of armor but not -3 for being knocked down. Use the Jump-Up buttons on Core and Combat Pages.">
<label class="co-nothing">Jump Up</label></span>
-->
<span class="w20" title="@{condition-Blindsided} -2 penalty to physical and mystic defenses. Can't use shield. No active defenses.">
<input type="checkbox" name="attr_condition-Blindsided" value="1"/><b> Blindsided</b></span>
<span class="w20" title="@{condition-Surprised} No Actions. -3 Penalty to all Defenses.">
<input type="checkbox" name="attr_condition-Surprised" value="1"/><b> Surprised</b></span>
<span class="w20" title="@{condition-NoShield} Am not using shield at present. Forgo benefits and IP.">
<input type="checkbox" name="attr_condition-NoShield" value="1"/><b> Not Using Shield</b></span>
<span class="w20" title="@{combatOption-SplitMovement} Take 1 Strain and be Harried to attack during movement.">
<input type="checkbox" name="attr_combatOption-SplitMovement" value="1"/><b> Split Movement</b></span>
<span class="w20" title="@{combatOption-TailAttack} T'Skrang only: Make extra Attack, Damage = STR. -2 to all Tests.">
<input class="testNum" name="attr_Race" type="hidden" value="0"/>
<input type="checkbox" name="attr_combatOption-TailAttack" value="1" class="Locked UnlockIf7 UnlockIf99"/>
<span class="BoldIfChecked"> Tail Attack</span></span>
</div>
<div class="table-row">
<span class="w20" title="@{condition-Blindsiding} Target takes -2 penalty to physical and mystic defenses. Can't use shield. No active defenses.">
<input type="checkbox" name="attr_condition-Blindsiding" value="1" class="api"/>
<b class="api"> Blindsiding</b></span>
<span class="w20" title="@{condition-TargetPartialCover} Target has +2 Bonus to Physical and Mystic defenses due to cover from this attacker.">
<input type="checkbox" name="attr_condition-TargetPartialCover" value="1" class="api"/>
<b class="api"> Tgt Partial Cover</b></span>
<span class="w20" title="@{condition-KnockedDown} -3 penalty on all defenses and tests. Movement 2. May not use Combat Option other than Jump-Up.">
<input type="checkbox" name="attr_condition-KnockedDown" value="1"/>
<b> Knocked Down</b></span>
<span class="w20" title="@{condition-RangeLong} -2 Penalty to Attack and Damage Tests.">
<input type="checkbox" name="attr_condition-RangeLong" value="1"/>
<b> Range - Long</b></span>
<span class="w20" title="@{comabatOption-Reserved} +2 to all Target Numbers. Specify an event to interrupt.">
<input type="checkbox" name="attr_combatOption-Reserved" value="1"/>
<b> Reserved Actn</b></span>
</div>
<div class="table-row">
<div class="w20">
<input class="testCondition" name="attr_condition-Harried" value="0" type="hidden"/>
<div class="labeledDropdown" title="@{condition-Harried} -2 or more Penalty to all Tests and to Physical and Mystic defenses due to 4 or more opponents or other effect.">
<b> Harried</b>
<select name="attr_condition-Harried" class="w100p">
<option value="0" selected title="None."> None</option>
<option value="2" title="-2 Penalty to all tests and to Physical and Mystic defenses due to 4 or more opponents or other effect."> Harried</option>
<option value="3" title="-3 Penalty to all tests and to Physical and Mystic defenses due to 2 harrying effects."> Overwhelmed</option>
<option value="4" title="-4 Penalty to all tests and to Physical and Mystic defenses due to 3 harrying effects."> Overwhelmed x 2</option>
<option value="5" title="-5 Penalty to all tests and to Physical and Mystic defenses due to 4 harrying effects."> Overwhelmed x 3</option>
</select>
</div>
</div>
<div class="w20">
<input class="testCondition" name="attr_condition-Cover" value="0" type="hidden"/>
<div class='labeledDropdown' title="@{condition-Cover} +2/NA Bonus to Physical and Mystical defenses."><b> Cover</b>
<select name="attr_condition-Cover" class="w100p">
<option value="0" selected title="No bonus due to cover."> None</option>
<option value="2" title="+2 Bonus to Physical and Mystical defenses."> Partial</option>
<option value="99" title="Can not be targeted by Physical or Mystic attacks."> Full</option>
</select>
</div>
</div>
<div class="w20">
<input class="testCondition" name="attr_condition-ImpairedMovement" value="0" type="hidden"/>
<div class="labeledDropdown" title="@{condition-ImpairedMovement} -5/-10 to Movement Rate (1 min). -2/-4 Penalty to movement based tests due to footing, cramping, or vision impairments. Dex test to avoid tripping or halting.">
<b> Imp Move</b>
<select name="attr_condition-ImpairedMovement" class="w100p">
<option value="0" selected title="No Footing, Cramping, or Vision restrictions on movement based actions."> None</option>
<option value="2" title="-5 to Movement Rate. -2 Penalty to movement based tests due to footing, cramping, or vision impairments."> Light</option>
<option value="4" title="-10 to Movement Rate (1 min). -4 Penalty to movement based texts due to footing, cramping, or vision impairments. Dex test to avoid tripping or halting."> Heavy</option>
</select>
</div>
</div>
<div class="w20">
<input class="testCondition" name="attr_condition-Darkness" value="0" type="hidden"/>
<div class="labeledDropdown" title="@{condition-Darkness} -2/-4 Penalty to all sight based tests due to Darkness, Blindness or Dazzling."><b> Vision</b>
<select name="attr_condition-Darkness" class="w100p">
<option value="0" selected title="No Darkness, Blindness or Dazzled impact on signt based actions."> None</option>
<option value="2" title="-2 Penalty to all sight based tests due to Darkness, Blindness or Dazzling."> Partial</option>
<option value="4" title="-4 Penalty to all sight based tests due to Darkness, Blindness or Dazzling."> Full</option>
</select>
</div>
</div>
<div class="w20">
<input class="testCondition" name="attr_condition-Health" value="0" type="hidden"/>
<div class="labeledDropdown" title="@{condition-Health} Blindsided, Knocked Down and unable to take any action other than recovery tests if Unconscious or Dying.">
<b> Health</b>
<select name="attr_condition-Health" class="w100p">
<option value="0" selected title="Able to act normally."> OK</option>
<option value="5" title="Blindsided, Knocked Down and unable to take any action except recovery tests after one minute."> Unconscious</option>
<option value="-5" title="Blindsided, Knocked Down and Unable to take any action."> Dying</option>
</select>
</div>
</div>
</div>
</div>
</div>
<div class="border-right">&nbsp;</div>
<input type="radio" name="attr_tab" class="tab tab1" value="1" title="Core" checked/>
<span class="tab tab1">Core</span>
<input type="radio" name="attr_tab" class="tab tab2" value="2" title="Combat"/>
<span class="tab tab2">Combat</span>
<input type="radio" name="attr_tab" class="tab tab3" value="3" title="Talent or Powers"/>
<input class="testCloseChecked hidden" name="attr_Race" type="checkbox" value="99"/>
<span class="tab tab3 HideIfCloseChecked" >Talents</span>
<span class="tab tab3 HideIfNotCloseChecked">Powers</span>
<span class="api">
<input type="radio" name="attr_tab" class="tab tab4" value="4" title="Knacks"/>
<span class="tab tab4">Knacks</span>
</span>
<input type="checkbox" name="attr_tab" class="tab4 hidden" value="4"/> <!-- We need one of these at the very highest level (and the one above is not at the highest level), but this one can be hidden. -->
<input type="radio" name="attr_tab" class="tab tab5" value="5" title="Skills"/>
<span class="tab tab5">Skills</span>
<input class="testCloseChecked hidden" name="attr_Hide-Spells-Tab" type="checkbox" value="1"/>
<span class="HideIfCloseChecked">
<input type="radio" name="attr_tab" class="tab tab6" value="6" title="Spell"/>
<span class="tab tab6">Spell</span>
<input type="radio" name="attr_tab" class="tab tab7" value="7" title="Grimoire"/>
<span class="tab tab7">Grimoire</span>
</span>
<input type="checkbox" name="attr_tab" class="tab6 hidden" value="6"/> <!-- We need one of these at the very highest level (and the one above is not at the highest level), but this one can be hidden. -->
<input type="checkbox" name="attr_tab" class="tab7 hidden" value="7"/> <!-- We need one of these at the very highest level (and the one above is not at the highest level), but this one can be hidden. -->
<input type="radio" name="attr_tab" class="tab tab8" value="8" title="Equipment"/>
<span class="tab tab8">Equipment</span>
<input type="radio" name="attr_tab" class="tab tab9" value="9" title="Gear"/>
<span class="tab tab9">Gear</span>
<input type="radio" name="attr_tab" class="tab tab10" value="10" title="Notes"/>
<span class="tab tab10">Notes</span>
<input type="radio" name="attr_tab" class="tab tab11" value="11" title="Record"/>
<span class="tab tab11">Record</span>
<input type="radio" name="attr_tab" class="tab tab12" value="12" title="Adjustments"/>
<span class="tab tab12">Adjust</span>
<div class="sec-border-top"></div>
<div class="section section-core">
<span class="nowrap">
<button class="text-button ui-draggable api" name="roll_KarmaOnly" type="roll"
value="!Earthdawn~ charID: @{character_id}~ Reason: 1 Karma Only~ foreach~ Karma: 1~ Roll: 0"
title="%{selected|KarmaOnly} Roll a single Karma Die only.">&nbsp;Karma</button>
<button class="text-button ui-draggable NoAPI" name="roll_KarmaOnlyNoAPI" type="roll"
value="@{RollType-NoAPI} &{template:default} {{name=Karma Only}} {{Step: [[@{KarmaStep}]]}} {{Result: [[ [[floor({@{KarmaStep}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{@{KarmaStep}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((@{KarmaStep}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{@{KarmaStep}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((@{KarmaStep}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{@{KarmaStep}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((@{KarmaStep}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{@{KarmaStep}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((@{KarmaStep}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{@{KarmaStep}, 0}kh1]] ]]d4! - [[{1, 2}=[[{@{KarmaStep}, 0}kh1]] * (3 - [[{@{KarmaStep}, 0}kh1]])]] ]]}}"
title="%{selected|KarmaOnlyNoAPI} Roll a single Karma Die only.">&nbsp;Karma</button>
- Max:
<input name="attr_Karma_max" type="number" value="0" min="0" class="numShort" title="@{Karma_max}: Maximum Karma. It is your races karma modifier times your circle, plus any leftover Attribute points from character creation." />
Dice:
<select name="attr_KarmaStep" style="width:5.5em;" title="@{KarmaStep} What karma dice does this character roll">
<option value="3" title="D4 - Step 3.">S3: D4</option>
<option value="4" selected title="D6 - Step 4. Standard.">S4: D6</option>
<option value="5" title="D8 - Step 5.">S5: D8</option>
<option value="6" title="D10 - Step 6.">S6: D10</option>
<option value="7" title="D12 - Step 7.">S7: D12</option>
<option value="8" title="2D6 - Step 8.">S8: 2D6</option>
<option value="9" title="D6+D8 - Step 9.">S9: D6+D8</option>
<option value="10" title="2D8 - Step 10.">S10: 2D8</option>
<option value="11" title="D8+D10 - Step 11.">S11: D8+D10</option>
<option value="12" title="2D10 - Step 12.">S12: 2D10</option>
<option value="13" title="D10+D12 - Step 13.">S13: D10+D12</option>
<option value="14" title="2D12 - Step 14.">S14: 2D12</option>
<option value="15" title="2D6+D12 - Step 15.">S15: 2D6+D12</option>
<option value="16" title="D6+D8+D12 - Step 16.">S16: D6+D8+D12</option>
<option value="17" title="2D8+D12 - Step 17.">S17: 2D8+D12</option>
<option value="18" title="D8+D10+D12 - Step 18.">S18: D8+D10+D12</option>
<option value="19" title="2D6+D20 - Step 19.">S19: 2D6+D20</option>
<option value="20" title="D6+D8+D20 - Step 20.">S20: D6+D8+D20</option>
</select></span>
<input class="testCloseChecked hidden" name="attr_Questor" type="checkbox" value="None"/>
<span class="nowrap HideIfCloseChecked">
<button class="text-button ui-draggable api" name="roll_DevotionOnly" type="roll"
value="!Earthdawn~ charID: @{character_id}~ Reason: 1 Devotion Point Only~ foreach~ DP: 1~ Roll: 0"
title="%{selected|DevotionOnly} Roll a single Devotion Point Die only.">&nbsp;Dev Pnt</button>
<button class="text-button ui-draggable NoAPI" name="roll_DevotionOnlyNoAPI" type="roll"
value="@{RollType-NoAPI} &{template:default} {{name=Dev Pnt only}} {{Step: [[@{DevotionStep}]]}} {{Result: [[ [[floor({@{DevotionStep}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{@{DevotionStep}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((@{DevotionStep}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{@{DevotionStep}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((@{DevotionStep}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{@{DevotionStep}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((@{DevotionStep}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{@{DevotionStep}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((@{DevotionStep}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{@{DevotionStep}, 0}kh1]] ]]d4! - [[{1, 2}=[[{@{DevotionStep}, 0}kh1]] * (3 - [[{@{DevotionStep}, 0}kh1]])]] ]]}}"
title="%{selected|DevotionOnlyNoAPI} Roll a single Devotion Point Die only.">&nbsp;Dev Pnt</button>
- Max:
<input name="attr_DP_max" class="HideIfChecked numShort" type="number" value="0" min="0" title="@{DP_max}: Maximum DP (Devotion Points). It is 10 times you Questor Rank. Questor Rank is recorded under 'Circle' in Discipline/Questor.">
Dice:
<select name="attr_DevotionStep" class="HideIfChecked" style="width:5.5em;" title="@{Devotion Step} What Devotion Die does this character roll">
<option value="3" selected title="D4 - Step 3 - Follower.">S3: D4</option>
<option value="4" title="D6 - Step 4 - Adherent.">S4: D6</option>
<option value="5" title="D8 - Step 5 - Exemplar.">S5: D8</option>
<option value="6" title="D10 - Step 6 - In case something gives a bonus.">S6: D10</option>
</select></span>
<button class="text-button ui-draggable button-nodice api" name="button_NewDay" type="roll"
value="!Earthdawn~ charID: @{character_id}~ ForEach: c~ Misc: NewDay"
title="button_NewDay: Clicking this button will set characters recovery tests used to zero and refill karma to max.">New Day
</button>
<b>Attributes</b> &nbsp;&nbsp;&nbsp;<b>Details:</b>
<input type="checkbox" class="sect-show testChecked" name="attr_show-attribute-details" value="1" checked title="@{show-attribute-details} Show or Hide the Race, Orig, and Inc fields of the Attributes section."/>
<span class="option-show"></span> <!-- You need a blank span here for the Show/Hide css code to work with -->
<input class="testAttrCosts" name="attr_Attr-Costs" value="25" type="hidden"/>
<span class="HideIfNotChecked"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Attribute Points:
<span title="@{Attr-Costs} Number of Attribute points remaining from the starting 25, after raising Racial attributes to Orig values.">
<input name="attr_Attr-Costs" type="number" class="numShort attrCostsRed" readonly>
</span></span>
<div class="table-row">
<span class="table-header">Action </span>
<input class="testCloseChecked hidden" name="attr_effectIsAction" type="checkbox" value="1"/>
<span class="table-header HideIfCloseChecked">Efct </span>
<span class="table-header HideIfNotChecked">Roll Type</span>
<span class="table-header">Step </span>
<span class="table-header">Mod </span>
<span class="table-header">Base </span>
<span class="table-header">| </span>
<span class="table-header HideIfNotChecked" title="This column has the starting attribute values for the chosen race. These values will change if the race is changed. They should almost never be changed by hand for most standard races.">
Race </span>
<span class="table-header HideIfNotChecked" title="This column has the attribute modifications due to spending Attribute Points at character creation. This is the column that should be done at character creation and is probably best done as soon as a race has been chosen.">
AP </span>
<span class="table-header HideIfNotChecked" title="This column has attribute increases due to spending Legend Points after character creation.">
LP </span>
<span class="table-header" title="This column has the computed attribute total, including Racial Starting values, Attribute Point purchases at character creation, and Legend Point purchases after character creation.">
Value </span>
<span class="table-header HideIfNotChecked api">Karma </span>
<span class="table-header HideIfNotChecked api">
<input class="testCloseChecked hidden" name="attr_Questor" type="checkbox" value="None" />
<span class="HideIfCloseChecked">Dev Pnts </span>
</span>
<span class="table-header">| </span>
<span class="table-header">Other charact. from attribute</span>
</div>
<div class="table-row">
<span class="table-data">
<button class="text-button ui-draggable api" name="roll_Dex-Check" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{RollType-Dex}~ @{Karma-Control-Dex}~ @{DP-Control-Dex}~ foreach~ Value: Dex~ Roll: ?{Modification|0}"
title="%{selected|Dex-Check} Roll a Dexterity Action check for this Character - Modified for wounds and conditions.">&nbsp;DEX</button>
<button class="text-button ui-draggable NoAPI" name="roll_Dex-CheckNoAPI" type="roll"
value="@{RollType-Dex-NoAPI} &{template:default} {{name=Dexterity}} {{Step: [[?{Step|@{Dex}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result: [[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"
title="%{selected|Dex-CheckNoAPI} Roll a Dexterity Action check for this Character - Modified for wounds and conditions.">&nbsp;DEX</button>
</span>
<input class="testCloseChecked hidden" name="attr_effectIsAction" type="checkbox" value="1"/>
<span class="table-data HideIfCloseChecked">
<button class="text-button ui-draggable button-nodice api" name="roll_Dex-Effect-Check" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{RollType-Dex}~ @{Karma-Control-Dex}~ @{DP-Control-Dex}~ foreach~ Value: Dex-Effect~ Roll: ?{Modification|0}"
title="%{selected|Dex-Effect-Check} Roll a Dexterity Effect Check (Using 'Dex-Effect' - which is not visible) for this Character - Modified only for Wounds and things that affect Effect Tests.">FX</button>
<button class="text-button ui-draggable button-nodice NoAPI" name="roll_Dex-Effect-CheckNoAPI" type="roll"
value="@{RollType-Dex-NoAPI} &{template:default} {{name=Dexterity Effect Test}} {{Step: [[?{Step|@{Dex-Effect}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result: [[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"
title="%{selected|Dex-Effect-CheckNoAPI} Roll a Dexterity Effect Check (Using 'Dex-Effect' - which is not visible) for this Character - Modified only for Wounds and things that affect Effect Tests.">FX</button>
</span>
<span class="table-data HideIfNotChecked">
<select name="attr_RollType-Dex" class="selShort api" title="@{RollType-Dex} Should Dex rolls be public, gm, or hidden?">
<option value="@{RollType}" selected title="Default as selected on the Adjustments tab Advanced section"> Default</option>
<option value=" " title="Public"> Public</option>
<option value="pgm" title="GM"> Player&GM</option>
<option value="/w gm" title="Hidden"> GM Only</option>
<option value="RollType: ?{Who should be able to see the results|Public, |GM Only,/w gm}"
title="At runtime when the button is pressed, have a pop-up ask who should be able to see the results."> Ask</option>
</select>
<select name="attr_RollType-Dex-NoAPI" class="selShort NoAPI">
<option value="@{RollType-NoAPI}" selected title="Default as selected on the Adjustments tab Advanced section"> Default</option>
<option value=" " selected title="Public"> Public</option>
<option value="/w gm" title="Hidden"> GM Only</option>
<option value="?{Who should be able to see the results|Public, |GM Only,/w gm}"
title="At runtime when the button is pressed, have a pop-up ask who should be able to see the results."> Ask</option>
</select>
</span>
<span class="hidden"><input name="attr_Dex-Effect" type="number" readonly value="5" title="@{Dex-Effect} Dexterity step used for Effect Tests - Modified only for Wounds and things that affect Effect Tests."></span>
<span class="table-data"><input name="attr_Dex" type="number" readonly value="5" class="numShort" title="@{Dex} Dexterity step - Modified for Wounds and Conditions, including the Action Test modifier (at top of sheet), but not Effect Test modifier."></span>
<span class="table-data"><input name="attr_Dex-Mods" type="number" value="0" class="numShort" title="@{Dex-Mods} Misc Dex step mods."></span>
<span class="table-data fakeCalc"><input name="attr_Dex-Step" type="number" value="5" class="numShort" title="@{Dex-Step} Dexterity step without any modifiers for wounds or conditions."></span>
<span class="table-data bar"><b>&nbsp;|&nbsp;</b></span>
<span class="table-data HideIfNotChecked fakeCalc"><input name="attr_Attrib-Dex-Race" type="number" value="10" class="numShort" title="@{Attrib-Dex-Race} Base Racial Dexterity attribute."></span>
<span class="table-data HideIfNotChecked"><input name="attr_Attrib-Dex-Orig" type="number" value="0" class="numShort attrCostsGreen" title="@{Attrib-Dex-Orig} Number of times Dexterity was increased during character creation by spending AP."></span>
<span class="table-data HideIfNotChecked"><input name="attr_Attrib-Dex-Increases" type="number" value="0" min="0" class="numShort" title="@{Attrib-Dex-Increases} Number of times Dexterity value has been increased since character creation by paying LP."></span>
<span class="table-data"><input name="attr_Attrib-Dex-Curr" type="number" readonly value="10" class="numShort" title="@{Attrib-Dex-Curr} Current Dexterity Attribute."></span>
<span class="table-data HideIfNotChecked api">
<select name="attr_Karma-Control-Dex" class="selShort" title="@{Karma-Control-Dex} Under what circumstances should we add karma to Dex only rolls?">
<option value="-1" selected title="Never use karma on Dex only tests. This overrides the 'Add Karma to rolls' control."> Never</option>
<option value="0" title="Look at the 'Add Karma to rolls' control to determine if should use Karma on Dex only rolls.">Sometimes </option>
<option value="1" title="If there is unspent karma, always use karma on Dex only tests. This overrides the 'Add Karma to rolls' control.">Always </option>
<option value="2" title="If there is unspent karma, always use 2 karma on Dex only tests. This overrides the 'Add Karma to rolls' control.">2 Always</option>
<option value="3" title="If there is unspent karma, always use 3 karma on Dex only tests. This overrides the 'Add Karma to rolls' control.">3 Always</option>
<option value="k-ask: ?{How many Karma to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many karma should be spent."> Ask</option>
</select></span>
<span class="table-data HideIfNotChecked api">
<input class="testCloseChecked hidden" name="attr_Questor" type="checkbox" value="None" />
<select name="attr_DP-Control-Dex" class="HideIfCloseChecked selShort"
title="@{DP-Control-Dex} Under what circumstances should we add Devotion Points to Dex only rolls?">
<option value="-1" selected title="Never use Devotion Points on Dex only tests. This overrides the 'Use Dev Pnts in rolls' control."> Never</option>
<option value="0" title="Look at the 'Use Dev Pnts in rolls' control to determine if should use Devotion Points in Dex only rolls.">Sometimes </option>
<option value="1" title="If there are unspent Devotion Points, always use DP on Dex only tests. This overrides the 'Use Dev Pnts in rolls' control.">Always </option>
<option value="2" title="If there are unspent Devotion Points, always use 2 DP on Dex only tests. This overrides the 'Use Dev Pnts in rolls' control.">2 Always</option>
<option value="3" title="If there are unspent Devotion Points, always use 3 DP on Dex only tests. This overrides the 'Use Dev Pnts in rolls' control.">3 Always</option>
<option value="dp-ask: ?{How many Devotion Points to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many Devotion Points should be spent."> Ask</option>
</select></span>
<span class="table-data bar"><b>&nbsp;|&nbsp;</b></span>
<span class="nowrap" title="@{PD-Base} Physical Defense - From attributes only - before adjustments from equipment, discipline, magic, etc."> PD-N:
<input name="attr_PD-Base" type="number" class="numShort" readonly value="6"> </span>
<span class="nowrap" title="@{Initiative}: Final Initiative Step."> Init:
<input name="attr_Initiative" type="number" class="numShort" readonly value="5"> </span>
<button class="text-button api" name="roll_Dex-Initiative-Check" type="roll" title="%{selected|Dex-Initiative-Check}"
value="!Earthdawn~ charID: @{character_id}~ @{Karma-Control-Initiative}~ @{DP-Control-Initiative}~ foreach~ value : Initiative~ Init : ?{Modification|0}">Init.</button>
<button class="text-button NoAPI" name="roll_Dex-Initiative-CheckNoAPI" type="roll" title="%{selected|Dex-Initiative-CheckNoAPI}"
value="@{RollType-NoAPI} &{template:default} {{name=Initiative}} {{Step: [[?{Step|@{Initiative}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result: [[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] &{tracker}]]}}">Init.</button>
<button class="text-button api" name="roll_JumpUp-Check" type="roll"
title="%{JumpUp-Check} When Knocked Down - Take 2 Strain and roll Dex to try to jump back to your feet - Alternative is to use your standard action to stand up."
value="!Earthdawn~ charID: @{character_id}~ @{Karma-Control-JumpUp}~ @{DP-Control-JumpUp}~ TargetNum: 6: Adjust-TN-Total~ foreach~ Strain: 2~ calculateValue: JumpUp~ Roll: ?{Modification|0}"> Jump Up</button>
<button class="text-button NoAPI" name="roll_JumpUp-CheckNoAPI" type="roll"
title="%{JumpUp-CheckNoAPI} When Knocked Down - Take 2 Strain and roll Dex to try to jump back to your feet - Alternative is to use your standard action to stand up."
value="@{RollType-NoAPI} &{template:rolltargetnumber} {{header=@{character_name}: Jump Up}} {{target_number=[[6]]}} {{Step=[[?{Step|@{Dex}+(@{condition-KnockedDown}*3)-@{Armor-IP}}]] + [[?{Bonus or Karma Step|0}]]}} {{Result=[[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"> Jump Up</button>
</div>
<div class="table-row">
<span class="table-data">
<button class="text-button ui-draggable api" name="roll_Str-Check" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{RollType-Str}~ @{Karma-Control-Str}~ @{DP-Control-Str}~ foreach~ Value: Str~ Roll: ?{Modification|0}"
title="%{selected|Str-Check} Roll a Strength Action check for this Character - Modified for wounds and conditions.">&nbsp;STR</button>
<button class="text-button ui-draggable NoAPI" name="roll_Str-CheckNoAPI" type="roll"
value="@{RollType-Str-NoAPI} &{template:default} {{name=Strength}} {{Step: [[?{Step|@{Str}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result: [[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"
title="%{selected|Str-CheckNoAPI} Roll a Strength Action check for this Character - Modified for wounds and conditions.">&nbsp;STR</button>
</span>
<input class="testCloseChecked hidden" name="attr_effectIsAction" type="checkbox" value="1"/>
<span class="table-data HideIfCloseChecked">
<button class="text-button ui-draggable button-nodice api" name="roll_Str-Effect-Check" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{RollType-Str}~ @{Karma-Control-Str}~ @{DP-Control-Str}~ foreach~ Value: Str-Effect~ Roll: ?{Modification|0}"
title="%{selected|Str-Effect-Check} Roll a Strength Effect Check (Using 'Str-Effect' - which is not visible) for this Character - Modified only for Wounds and things that affect Effect Tests.">FX</button>
<button class="text-button ui-draggable button-nodice NoAPI" name="roll_Str-Effect-CheckNoAPI" type="roll"
value="@{RollType-NoAPI} &{template:default} {{name=Strength Effect test}} {{Step: [[?{Step|@{Str-Effect}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result: [[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"
title="%{selected|Str-Effect-CheckNoAPI} Roll a Strength Effect Check (Using 'Str-Effect' - which is not visible) for this Character - Modified only for Wounds and things that affect Effect Tests.">FX</button>
</span>
<span class="table-data HideIfNotChecked">
<select name="attr_RollType-Str" class="selShort api" title="@{RollType-Str} Should Str rolls be public, gm, or hidden?">
<option value="@{RollType}" selected title="Default as selected on the Adjustments tab Advanced section"> Default</option>
<option value=" " title="Public"> Public</option>
<option value="pgm" title="GM"> Player&GM</option>
<option value="/w gm" title="Hidden"> GM Only</option>
<option value="RollType: ?{Who should be able to see the results|Public, |GM Only,/w gm}"
title="At runtime when the button is pressed, have a pop-up ask who should be able to see the results."> Ask</option>
</select>
<select name="attr_RollType-Str-NoAPI" class="selShort NoAPI">
<option value="@{RollType-NoAPI}" selected title="Default as selected on the Adjustments tab Advanced section"> Default</option>
<option value=" " selected title="Public"> Public</option>
<option value="/w gm" title="Hidden"> GM Only</option>
<option value="?{Who should be able to see the results|Public, |GM Only,/w gm}"
title="At runtime when the button is pressed, have a pop-up ask who should be able to see the results."> Ask</option>
</select>
</span>
<span class="hidden"><input name="attr_Str-Effect" type="number" readonly value="5" title="@{Str-Effect} Strength step used for Effect Tests - Modified only for Wounds and things that affect Effect Tests."></span>
<span class="table-data"><input name="attr_Str" type="number" readonly value="5" class="numShort" title="@{Str} Strength step - Modified for Wounds and Conditions, including the Action Test modifier (at top of sheet), but not Effect Test modifier." ></span>
<span class="table-data"><input name="attr_Str-Mods" type="number" value="0" class="numShort" title="@{Str-Mods} Misc Strength step mods."></span>
<span class="table-data fakeCalc"><input name="attr_Str-Step" type="number" value="5" class="numShort" title="@{Str-Step} Strength step without any modifiers for wounds or conditions." ></span>
<span class="table-data bar"><b>&nbsp;|&nbsp;</b></span>
<span class="table-data HideIfNotChecked fakeCalc"><input name="attr_Attrib-Str-Race" type="number" value="10" class="numShort" title="@{Attrib-Str-Race} Base Racial Strength attribute." ></span>
<span class="table-data HideIfNotChecked"><input name="attr_Attrib-Str-Orig" type="number" value="0" class="numShort attrCostsGreen" title="@{Attrib-Str-Orig} Number of times Strength was increased during character creation by spending AP."></span>
<span class="table-data HideIfNotChecked"><input name="attr_Attrib-Str-Increases" type="number" value="0" min="0" class="numShort" title="@{Attrib-Str-Increases} Number of times Strength value has been increased since character creation by paying LP."></span>
<span class="table-data"><input name="attr_Attrib-Str-Curr" type="number" readonly value="10" class="numShort" title="@{Attrib-Str-Curr} Current Strength Attribute." ></span>
<span class="table-data HideIfNotChecked api">
<select name="attr_Karma-Control-Str" class="selShort" title="@{Karma-Control-Str} Under what circumstances should we add karma to Str only rolls?">
<option value="-1" selected title="Never use karma on Str only tests. This overrides the 'Add Karma to rolls' control."> Never</option>
<option value="0" title="Look at the 'Add Karma to rolls' control to determine if should use Karma on Str only rolls.">Sometimes </option>
<option value="1" title="If there is unspent karma, always use karma on Str only tests. This overrides the 'Add Karma to rolls' control.">Always </option>
<option value="2" title="If there is unspent karma, always use karma 2 on Str only tests. This overrides the 'Add Karma to rolls' control.">2 Always</option>
<option value="3" title="If there is unspent karma, always use karma 3 on Str only tests. This overrides the 'Add Karma to rolls' control.">3 Always</option>
<option value="K-ask: ?{How many Karma to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many karma should be spent."> Ask</option>
</select></span>
<span class="table-data HideIfNotChecked api">
<input class="testCloseChecked hidden" name="attr_Questor" type="checkbox" value="None" />
<select name="attr_DP-Control-Str" class="HideIfCloseChecked selShort"
title="@{DP-Control-Str} Under what circumstances should we add Devotion Points to Str only rolls?">
<option value="-1" selected title="Never use Devotion Points on Str only tests. This overrides the 'Use Dev Pnts in rolls' control."> Never</option>
<option value="0" title="Look at the 'Use Dev Pnts in rolls' control to determine if should use Devotion Points in Str only rolls.">Sometimes </option>
<option value="1" title="If there are unspent Devotion Points, always use DP on Str only tests. This overrides the 'Use Dev Pnts in rolls' control.">Always </option>
<option value="2" title="If there are unspent Devotion Points, always use 2 DP on Str only tests. This overrides the 'Use Dev Pnts in rolls' control.">2 Always</option>
<option value="3" title="If there are unspent Devotion Points, always use 3 DP on Str only tests. This overrides the 'Use Dev Pnts in rolls' control.">3 Always</option>
<option value="DP-ask: ?{How many Devotion Points to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many Devotion Points should be spent."> Ask</option>
</select></span>
<span class="table-data bar"><b>&nbsp;|&nbsp;</b></span>
<span class="nowrap0"> Carried/Capacity: <input name="attr_Carrying-Carried" type="number" readonly value="0" title="@{Carrying-Carried} Number of pounds Equipment and Gear carried ." /></span>&nbsp;/&nbsp;
<input name="attr_Carrying-Capacity" type="number" class="nowrap" readonly value="80" title="@{Carrying-Capacity} Number of pounds that may be carried without penalty." />&nbsp;&nbsp;
<button class="text-button api" name="roll_Knockdown-Check" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{Karma-Control-KnockDown}~ @{DP-Control-KnockDown}~ foreach~ Value: Str-Step: Str-Adjust: Str-Mods: Knockdown-Adjust: Adjust-All-Tests-Total: Defensive: Resistance~ Roll: ?{Modification|0}"
title="%{selected|Knockdown-Check} Roll a Knockdown check for this Character - Modified for wounds and conditions.">Knockdown</button>
<button class="text-button NoAPI" name="roll_Knockdown-CheckNoAPI" type="roll"
value="@{RollType-NoAPI} &{template:default} {{name=Knockdown Test}} {{Step: [[?{Step|@{Str-Step}+@{Str-Adjust}+@{Str-Mods}+@{Knockdown-Adjust}+@{Adjust-All-Tests-Total}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result: [[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"
title="%{selected|Knockdown-CheckNoAPI} Roll a Knockdown check for this Character - Modified for wounds and conditions.">Knockdown</button>
</div>
<div class="table-row">
<span class="table-data">
<button class="text-button ui-draggable api" name="roll_Tou-Check" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{RollType-Tou}~ @{Karma-Control-Tou}~ @{DP-Control-Tou}~ foreach~ Value: Tou~ Roll: ?{Modification|0}"
title="%{selected|Tou-Check} Roll a Toughness Action check for this Character - Modified for wounds and conditions.">&nbsp;TOU</button>
<button class="text-button ui-draggable NoAPI" name="roll_Tou-CheckNoAPI" type="roll"
value="@{RollType-Tou-NoAPI} &{template:default} {{name=Toughness}} {{Step: [[?{Step|@{Tou}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result: [[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"
title="%{selected|Tou-CheckNoAPI} Roll a Toughness Action check for this Character - Modified for wounds and conditions.">&nbsp;TOU</button>
</span>
<input class="testCloseChecked hidden" name="attr_effectIsAction" type="checkbox" value="1"/>
<span class="table-data HideIfCloseChecked">
<button class="text-button ui-draggable button-nodice api" name="roll_Tou-Effect-Check" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{RollType-Tou}~ @{Karma-Control-Tou}~ @{DP-Control-Tou}~ foreach~ Value: Tou-Effect~ Roll: ?{Modification|0}"
title="%{selected|Tou-Effect-Check} Roll a Toughness Effect Check (Using 'Tou-Effect' - which is not visible) for this Character - Modified only for Wounds and things that affect Effect Tests.">FX</button>
<button class="text-button ui-draggable button-nodice NoAPI" name="roll_Tou-Effect-CheckNoAPI" type="roll"
value="@{RollType-Tou-NoAPI} &{template:default} {{name=Toughness Effect test}} {{Step: [[?{Step|@{Tou-Effect}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result: [[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"
title="%{selected|Tou-Effect-CheckNoAPI} Roll a Toughness Effect Check (Using 'Tou-Effect' - which is not visible) for this Character - Modified only for Wounds and things that affect Effect Tests.">FX</button>
</span>
<span class="table-data HideIfNotChecked">
<select name="attr_RollType-Tou" class="selShort api" title="@{RollType-Tou} Should Tou rolls be public, gm, or hidden?">
<option value="@{RollType}" selected title="Default as selected on the Adjustments tab Advanced section"> Default</option>
<option value=" " title="Public"> Public</option>
<option value="pgm" title="GM"> Player&GM</option>
<option value="/w gm" title="Hidden"> GM Only</option>
<option value="RollType: ?{Who should be able to see the results|Public, |GM Only,/w gm}"
title="At runtime when the button is pressed, have a pop-up ask who should be able to see the results."> Ask</option>
</select>
<select name="attr_RollType-Tou-NoAPI" class="selShort NoAPI">
<option value="@{RollType-NoAPI}" selected title="Default as selected on the Adjustments tab Advanced section"> Default</option>
<option value=" " selected title="Public"> Public</option>
<option value="/w gm" title="Hidden"> GM Only</option>
<option value="?{Who should be able to see the results|Public, |GM Only,/w gm}"
title="At runtime when the button is pressed, have a pop-up ask who should be able to see the results."> Ask</option>
</select>
</span>
<span class="hidden"><input name="attr_Tou-Effect" type="number" readonly value="5" title="@{Tou-Effect} Toughness step used for Effect Tests - Modified only for Wounds and things that affect Effect Tests."></span>
<span class="table-data"><input name="attr_Tou" type="number" readonly value="5" class="numShort" title="@{Tou} Toughness step - Modified for Wounds and Conditions, including the Action Test modifier (at top of sheet), but not Effect Test modifier." ></span>
<span class="table-data"><input name="attr_Tou-Mods" type="number" value="0" class="numShort" title="@{Tou-Mods} Misc Toughness step mods."></span>
<span class="table-data fakeCalc"><input name="attr_Tou-Step" type="number" value="5" class="numShort" title="@{Tou-Step} Toughness step without any modifiers for wounds or conditions." ></span>
<span class="table-data bar"><b>&nbsp;|&nbsp;</b></span>
<span class="table-data HideIfNotChecked fakeCalc"><input name="attr_Attrib-Tou-Race" type="number" value="10" class="numShort" title="@{Attrib-Tou-Race} Base Racial Toughness attribute." ></span>
<span class="table-data HideIfNotChecked"><input name="attr_Attrib-Tou-Orig" type="number" value="0" class="numShort attrCostsGreen" title="@{Attrib-Tou-Orig} Number of times Toughness was increased during character creation by spending AP."></span>
<span class="table-data HideIfNotChecked"><input name="attr_Attrib-Tou-Increases" type="number" value="0" min="0" class="numShort" title="@{Attrib-Tou-Increases} Number of times Toughness value has been increased since character creation by paying LP."></span>
<span class="table-data"><input name="attr_Attrib-Tou-Curr" type="number" readonly value="10" class="numShort" title="@{Attrib-Tou-Curr} Current Toughness Attribute." ></span>
<span class="table-data HideIfNotChecked api">
<select name="attr_Karma-Control-Tou" class="selShort" title="@{Karma-Control-Tou} Under what circumstances should we add karma to Tou only rolls?">
<option value="-1" selected title="Never use karma on Tou only tests. This overrides the 'Add Karma to rolls' control."> Never</option>
<option value="0" title="Look at the 'Add Karma to rolls' control to determine if should use Karma on Tou only rolls.">Sometimes </option>
<option value="1" title="If there is unspent karma, always use karma on Tou only tests. This overrides the 'Add Karma to rolls' control.">Always </option>
<option value="2" title="If there is unspent karma, always use 2 karma on Tou only tests. This overrides the 'Add Karma to rolls' control.">2 Always</option>
<option value="3" title="If there is unspent karma, always use 3 karma on Tou only tests. This overrides the 'Add Karma to rolls' control.">3 Always</option>
<option value="K-ask: ?{How many Karma to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many karma should be spent."> Ask</option>
</select></span>
<span class="table-data HideIfNotChecked api">
<input class="testCloseChecked hidden" name="attr_Questor" type="checkbox" value="None" />
<select name="attr_DP-Control-Tou" class="HideIfCloseChecked selShort"
title="@{DP-Control-Tou} Under what circumstances should we add Devotion Points to Tou only rolls?">
<option value="-1" selected title="Never use Devotion Points on Tou only tests. This overrides the 'Use Dev Pnts in rolls' control."> Never</option>
<option value="0" title="Look at the 'Use Dev Pnts in rolls' control to determine if should use Devotion Points in Tou only rolls.">Sometimes </option>
<option value="1" title="If there are unspent Devotion Points, always use DP on Tou only tests. This overrides the 'Use Dev Pnts in rolls' control.">Always </option>
<option value="2" title="If there are unspent Devotion Points, always use 2 DP on Tou only tests. This overrides the 'Use Dev Pnts in rolls' control.">2 Always</option>
<option value="3" title="If there are unspent Devotion Points, always use 3 DP on Tou only tests. This overrides the 'Use Dev Pnts in rolls' control.">3 Always</option>
<option value="DP-ask: ?{How many Devotion Points to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many Devotion Points should be spent."> Ask</option>
</select></span>
<span class="table-data bar"><b>&nbsp;|&nbsp;</b></span>
<span class="nowrap"> Health: <input name="attr_Damage-Unc-Rating" type="number" readonly value="20" class="numShort" title="@{Damage-Unc-Rating}: Unconscious Rating. If take more damage (Stun or Normal) than this, character is unconscious." >
<input name="attr_Damage-Death-Rating" type="number" readonly value="25" class="numShort" title="@{Damage-Death-Rating}: Death Rating. If take more (non-stun) damage than this, character dies." >
<input name="attr_Wound-Threshold" type="number" readonly value="7" class="numShort" title="@{Wound-Threshold}: If take this much damage in one attack, take a wound. If take 5 more daamge than this in one attack, make a knockdown test.">
<input name="attr_Recovery-Tests_max" type="number" readonly value="2" class="numShort" title="@{Recovery-Tests_max} Number of Recovery Tests that can be used per day." ></span>
<button class="text-button api" name="roll_Recovery-Test" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{Karma-Control-Recovery}~ @{DP-Control-Recovery}~ foreach~ Value: Recovery-Step~ mod: -?{How many wounds not treated by Physician|@{Wounds}}~ Roll: ?{Modification to roll step|0}"
title="%{selected|Recovery-Test} Roll a Recovery Test for this Character.">Recovery</button>
<button class="text-button NoAPI" name="roll_Recovery-TestNoAPI" type="roll"
value="@{RollType-NoAPI} &{template:default} {{name=Recovery Test}} {{Step: [[?{Step|@{Recovery-Step}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result: [[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] -@{Wounds} ]]}}"
title="%{selected|Recovery-TestNoAPI} Roll a Recovery Test for this Character.">Recovery</button>
<button class="text-button api" name="roll_Recovery-Stun" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{Karma-Control-Recovery}~ @{DP-Control-Recovery}~ foreach~ Value: Recovery-Step: Wil~ mod: -?{How many wounds not treated by Physician|@{Wounds}}~ Roll: ?{Modification to roll step|0}"
title="%{selected|Recovery-Test} Roll a Recovery Test for this Character that heals Stun damage only.">Recov Stun</button>
<button class="text-button NoAPI" name="roll_Recovery-StunNoAPI" type="roll"
value="@{RollType-NoAPI} &{template:default} {{name=Recovery Test}} {{Step: [[?{Step|@{Recovery-Step}+@{Wil-Step}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result: [[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] -@{Wounds} ]]}}"
title="%{selected|Recovery-TestNoAPI} Roll a Recovery Test for this Character that heals Stun damage only.">Recov Stun</button>
</div>
<div class="table-row">
<span class="table-data">
<button class="text-button ui-draggable api" name="roll_Per-Check" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{RollType-Per}~ @{Karma-Control-Per}~ @{DP-Control-Per}~ foreach~ Value: Per~ Roll: ?{Modification|0}"
title="%{selected|Per-Check} Roll a Perception Action check for this Character - Modified for wounds and conditions.">&nbsp;PER</button>
<button class="text-button ui-draggable NoAPI" name="roll_Per-CheckNoAPI" type="roll"
value="@{RollType-Per-NoAPI} &{template:default} {{name=Perception}} {{Step: [[?{Step|@{Per}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result: [[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"
title="%{selected|Per-CheckNoAPI} Roll a Perception Action check for this Character - Modified for wounds and conditions.">&nbsp;PER</button>
</span>
<input class="testCloseChecked hidden" name="attr_effectIsAction" type="checkbox" value="1"/>
<span class="table-data HideIfCloseChecked">
<button class="text-button ui-draggable button-nodice api" name="roll_Per-Effect-Check" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{RollType-Per}~ @{Karma-Control-Per}~ @{DP-Control-Per}~ foreach~ Value: Per-Effect~ Roll: ?{Modification|0}"
title="%{selected|Per-Effect-Check} Roll a Perception Effect Check (Using 'Per-Effect' - which is not visible) for this Character - Modified only for Wounds and things that affect Effect Tests.">FX</button>
<button class="text-button ui-draggable button-nodice NoAPI" name="roll_Per-Effect-CheckNoAPI" type="roll"
value="@{RollType-Per-NoAPI} &{template:default} {{name=Perception Effect test}} {{Step: [[?{Step|@{Per-Effect}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result: [[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"
title="%{selected|Per-Effect-CheckNoAPI} Roll a Perception Effect Check (Using 'Per-Effect' - which is not visible) for this Character - Modified only for Wounds and things that affect Effect Tests.">FX</button>
</span>
<span class="table-data HideIfNotChecked">
<select name="attr_RollType-Per" class="selShort api" title="@{RollType-Per} Should Per rolls be public, gm, or hidden?">
<option value="@{RollType}" selected title="Default as selected on the Adjustments tab Advanced section"> Default</option>
<option value=" " title="Public"> Public</option>
<option value="pgm" title="GM"> Player&GM</option>
<option value="/w gm" title="Hidden"> GM Only</option>
<option value="RollType: ?{Who should be able to see the results|Public, |GM Only,/w gm}"
title="At runtime when the button is pressed, have a pop-up ask who should be able to see the results."> Ask</option>
</select>
<select name="attr_RollType-Per-NoAPI" class="selShort NoAPI">
<option value="@{RollType-NoAPI}" selected title="Default as selected on the Adjustments tab Advanced section"> Default</option>
<option value=" " selected title="Public"> Public</option>
<option value="/w gm" title="Hidden"> GM Only</option>
<option value="?{Who should be able to see the results|Public, |GM Only,/w gm}"
title="At runtime when the button is pressed, have a pop-up ask who should be able to see the results."> Ask</option>
</select>
</span>
<span class="hidden"><input name="attr_Per-Effect" type="number" readonly value="5" title="@{Per-Effect} Perception step used for Effect Tests - Modified only for Wounds and things that affect Effect Tests."></span>
<span class="table-data"><input name="attr_Per" type="number" readonly value="5" class="numShort" title="@{Per} Perception step - Modified for Wounds and Conditions, including the Action Test modifier (at top of sheet), but not Effect Test modifier." ></span>
<span class="table-data"><input name="attr_Per-Mods" type="number" value="0" class="numShort" title="@{Per-Mods} Misc Perception step mods."></span>
<span class="table-data fakeCalc"><input name="attr_Per-Step" type="number" value="5" class="numShort" title="@{Per-Step} Perception step without any modifiers for wounds or conditions." ></span>
<span class="table-data bar"><b>&nbsp;|&nbsp;</b></span>
<span class="table-data HideIfNotChecked fakeCalc"><input name="attr_Attrib-Per-Race" type="number" value="10" class="numShort" title="@{Attrib-Per-Race} Base Racial Perception attribute." ></span>
<span class="table-data HideIfNotChecked"><input name="attr_Attrib-Per-Orig" type="number" value="0" class="numShort attrCostsGreen" title="@{Attrib-Per-Orig} Number of times Perception was increased during character creation by spending AP."></span>
<span class="table-data HideIfNotChecked"><input name="attr_Attrib-Per-Increases" type="number" value="0" min="0" class="numShort" title="@{Attrib-Per-Increases} Number of times Perception value has been increased since character creation by paying LP."></span>
<span class="table-data"><input name="attr_Attrib-Per-Curr" type="number" readonly value="10" class="numShort" title="@{Attrib-Per-Curr} Current Perception Attribute." ></span>
<span class="table-data HideIfNotChecked api">
<select name="attr_Karma-Control-Per" class="selShort" title="@{Karma-Control-Per} Under what circumstances should we add karma to Per only rolls?">
<option value="-1" selected title="Never use karma on Per only tests. This overrides the 'Add Karma to rolls' control."> Never</option>
<option value="0" title="Look at the 'Add Karma to rolls' control to determine if should use Karma on Per only rolls.">Sometimes </option>
<option value="1" title="If there is unspent karma, always use karma on Per only tests. This overrides the 'Add Karma to rolls' control.">Always </option>
<option value="2" title="If there is unspent karma, always use 2 karma on Per only tests. This overrides the 'Add Karma to rolls' control.">2 </option>
<option value="3" title="If there is unspent karma, always use 3 karma on Per only tests. This overrides the 'Add Karma to rolls' control.">3 </option>
<option value="K-ask: ?{How many Karma to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many karma should be spent."> Ask</option>
</select></span>
<span class="table-data HideIfNotChecked api">
<input class="testCloseChecked hidden" name="attr_Questor" type="checkbox" value="None" />
<select name="attr_DP-Control-Per" class="HideIfCloseChecked selShort"
title="@{DP-Control-Per} Under what circumstances should we add Devotion Points to Per only rolls?">
<option value="-1" selected title="Never use Devotion Points on Per only tests. This overrides the 'Use Dev Pnts in rolls' control."> Never</option>
<option value="0" title="Look at the 'Use Dev Pnts in rolls' control to determine if should use Devotion Points in Per only rolls.">Sometimes </option>
<option value="1" title="If there are unspent Devotion Points, always use DP on Per only tests. This overrides the 'Use Dev Pnts in rolls' control.">Always </option>
<option value="2" title="If there are unspent Devotion Points, always use 2 DP on Per only tests. This overrides the 'Use Dev Pnts in rolls' control.">2 </option>
<option value="3" title="If there are unspent Devotion Points, always use 3 DP on Per only tests. This overrides the 'Use Dev Pnts in rolls' control.">3 </option>
<option value="DP-ask: ?{How many Devotion Points to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many Devotion Points should be spent."> Ask</option>
</select></span>
<span class="table-data bar"><b>&nbsp;|&nbsp;</b></span>
<span class="nowrap" title="@{MD-Base} Mystic Defense - From attributes - before adjustments from equipment, discipline, magic, etc.">
MD-N:<input name="attr_MD-Base" type="number" class="numShort" readonly value="6" > </span>
</div>
<div class="table-row">
<span class="table-data">
<button class="text-button ui-draggable api" name="roll_Wil-Check" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{RollType-Wil}~ @{Karma-Control-Wil}~ @{DP-Control-Wil}~ foreach~ Value: Wil~ Roll: ?{Modification|0}"
title="%{selected|Wil-Check} Roll a Willpower Action check for this Character - Modified for wounds and conditions.">&nbsp;WIL</button>
<button class="text-button ui-draggable NoAPI" name="roll_Wil-CheckNoAPI" type="roll"
value="@{RollType-Wil-NoAPI} &{template:default} {{name=Willpower}} {{Step: [[?{Step|@{Wil}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result: [[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"
title="%{selected|Wil-CheckNoAPI} Roll a Willpower Action check for this Character - Modified for wounds and conditions.">&nbsp;WIL</button>
</span>
<input class="testCloseChecked hidden" name="attr_effectIsAction" type="checkbox" value="1"/>
<span class="table-data HideIfCloseChecked">
<button class="text-button ui-draggable button-nodice api" name="roll_Wil-Effect-Check" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{RollType-Wil}~ @{Karma-Control-Wil}~ @{DP-Control-Wil}~ foreach~ Value: Wil-Effect~ Roll: ?{Modification|0}"
title="%{selected|Wil-Effect-Check} Roll a Willpower Effect Check (Using 'Wil-Effect' - which is not visible) for this Character - Modified only for Wounds and things that affect Effect Tests.">FX</button>
<button class="text-button ui-draggable button-nodice NoAPI" name="roll_Wil-Effect-CheckNoAPI" type="roll"
value="@{RollType-Wil-NoAPI} &{template:default} {{name=Willpower Effect test}} {{Step: [[?{Step|@{Wil-Effect}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result: [[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"
title="%{selected|Wil-Effect-CheckNoAPI} Roll a Willpower Effect Check (Using 'Wil-Effect' - which is not visible) for this Character - Modified only for Wounds and things that affect Effect Tests.">FX</button>
</span>
<span class="table-data HideIfNotChecked">
<select name="attr_RollType-Wil" class="selShort api" title="@{RollType-Wil} Should Wil rolls be public, gm, or hidden?">
<option value="@{RollType}" selected title="Default as selected on the Adjustments tab Advanced section"> Default</option>
<option value=" " title="Public"> Public</option>
<option value="pgm" title="GM"> Player&GM</option>
<option value="/w gm" title="Hidden"> GM Only</option>
<option value="RollType: ?{Who should be able to see the results|Public, |GM Only,/w gm}"
title="At runtime when the button is pressed, have a pop-up ask who should be able to see the results."> Ask</option>
</select>
<select name="attr_RollType-Wil-NoAPI" class="selShort NoAPI">
<option value="@{RollType-NoAPI}" selected title="Default as selected on the Adjustments tab Advanced section"> Default</option>
<option value=" " selected title="Public"> Public</option>
<option value="/w gm" title="Hidden"> GM Only</option>
<option value="?{Who should be able to see the results|Public, |GM Only,/w gm}"
title="At runtime when the button is pressed, have a pop-up ask who should be able to see the results."> Ask</option>
</select>
</span>
<span class="hidden"><input name="attr_Wil-Effect" type="number" readonly value="5" title="@{Wil-Effect} Willpower step used for Effect Tests - Modified only for Wounds and things that affect Effect Tests."></span>
<span class="table-data"><input name="attr_Wil" type="number" readonly value="5" class="numShort" title="@{Wil} Willpower step - Modified for Wounds and Conditions, including the Action Test modifier (at top of sheet), but not Effect Test modifier." ></span>
<span class="table-data"><input name="attr_Wil-Mods" type="number" value="0" class="numShort" title="@{Wil-Mods} Misc Willpower step mods."></span>
<span class="table-data fakeCalc"><input name="attr_Wil-Step" type="number" value="5" class="numShort" title="@{Wil-Step} Willpower step without any modifiers for wounds or conditions." ></span>
<span class="table-data bar"><b>&nbsp;|&nbsp;</b></span>
<span class="table-data HideIfNotChecked fakeCalc"><input name="attr_Attrib-Wil-Race" type="number" value="10" class="numShort" title="@{Attrib-Wil-Race} Base Racial Willpower attribute." ></span>
<span class="table-data HideIfNotChecked"><input name="attr_Attrib-Wil-Orig" type="number" value="0" class="numShort attrCostsGreen" title="@{Attrib-Wil-Orig} Number of times Willpower was increased during character creation by spending AP."></span>
<span class="table-data HideIfNotChecked"><input name="attr_Attrib-Wil-Increases" type="number" value="0" min="0" class="numShort" title="@{Attrib-Wil-Increases} Number of times Willpower value has been increased since character creation by paying LP."></span>
<span class="table-data"><input name="attr_Attrib-Wil-Curr" type="number" value="10" readonly class="numShort" title="@{Attrib-Wil-Curr} Current Willpower Attribute." ></span>
<span class="table-data HideIfNotChecked api">
<select name="attr_Karma-Control-Wil" class="selShort" title="@{Karma-Control-Wil} Under what circumstances should we add karma to Wil only rolls?">
<option value="-1" selected title="Never use karma on Wil only tests. This overrides the 'Add Karma to rolls' control."> Never</option>
<option value="0" title="Look at the 'Add Karma to rolls' control to determine if should use Karma on Wil only rolls.">Sometimes </option>
<option value="1" title="If there is unspent karma, always use karma on Wil only tests. This overrides the 'Add Karma to rolls' control.">Always </option>
<option value="2" title="If there is unspent karma, always use 2 karma on Wil only tests. This overrides the 'Add Karma to rolls' control.">2 Always</option>
<option value="3" title="If there is unspent karma, always use 3 karma on Wil only tests. This overrides the 'Add Karma to rolls' control.">3 Always</option>
<option value="K-ask: ?{How many Karma to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many karma should be spent."> Ask</option>
</select></span>
<span class="table-data HideIfNotChecked api">
<input class="testCloseChecked hidden" name="attr_Questor" type="checkbox" value="None" />
<select name="attr_DP-Control-Wil" class="HideIfCloseChecked selShort"
title="@{DP-Control-Wil} Under what circumstances should we add Devotion Points to Wil only rolls?">
<option value="-1" selected title="Never use Devotion Points on Wil only tests. This overrides the 'Use Dev Pnts in rolls' control."> Never</option>
<option value="0" title="Look at the 'Use Dev Pnts in rolls' control to determine if should use Devotion Points in Wil only rolls.">Sometimes </option>
<option value="1" title="If there are unspent Devotion Points, always use DP on Wil only tests. This overrides the 'Use Dev Pnts in rolls' control.">Always </option>
<option value="2" title="If there are unspent Devotion Points, always use 2 DP on Wil only tests. This overrides the 'Use Dev Pnts in rolls' control.">2 Always</option>
<option value="3" title="If there are unspent Devotion Points, always use 3 DP on Wil only tests. This overrides the 'Use Dev Pnts in rolls' control.">3 Always</option>
<option value="DP-ask: ?{How many Devotion Points to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many Devotion Points should be spent."> Ask</option>
</select></span>
<span class="table-data bar"><b>&nbsp;|&nbsp;</b></span>
<span class="nowrap" title="@{MA-Base} Mystic Armor from Attribute only." >
MA-N:<input name="attr_MA-Base" type="number" class="numShort" readonly value="2"> </span>
</div>
<div class="table-row">
<span class="table-data">
<button class="text-button ui-draggable api" name="roll_Cha-Check" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{RollType-Cha}~ @{Karma-Control-Cha}~ @{DP-Control-Cha}~ foreach~ Value: Cha~ Roll: ?{Modification|0}"
title="%{selected|Cha-Check} Roll a Charisma Action check for this Character - Modified for wounds and conditions.">&nbsp;CHA</button>
<button class="text-button ui-draggable NoAPI" name="roll_Cha-CheckNoAPI" type="roll"
value="@{RollType-Cha-NoAPI} &{template:default} {{name=Charisma}} {{Step: [[?{Step|@{Cha}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result: [[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"
title="%{selected|Cha-CheckNoAPI} Roll a Charisma Action check for this Character - Modified for wounds and conditions.">&nbsp;CHA</button>
</span>
<input class="testCloseChecked hidden" name="attr_effectIsAction" type="checkbox" value="1"/>
<span class="table-data HideIfCloseChecked">
<button class="text-button ui-draggable button-nodice api" name="roll_Cha-Effect-Check" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{RollType-Cha}~ @{Karma-Control-Cha}~ @{DP-Control-Cha}~ foreach~ Value: Cha-Effect~ Roll: ?{Modification|0}"
title="%{selected|Cha-Effect-Check} Roll a Charisma Effect Check (Using 'Cha-Effect' - which is not visible) for this Character - Modified only for Wounds and things that affect Effect Tests.">FX</button>
<button class="text-button ui-draggable button-nodice NoAPI" name="roll_Cha-Effect-CheckNoAPI" type="roll"
value="@{RollType-Cha-NoAPI} &{template:default} {{name=Charisma Effect test}} {{Step: [[?{Step|@{Cha-Effect}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result: [[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"
title="%{selected|Cha-Effect-CheckNoAPI} Roll a Charisma Effect Check (Using 'Cha-Effect' - which is not visible) for this Character - Modified only for Wounds and things that affect Effect Tests.">FX</button>
</span>
<span class="table-data HideIfNotChecked">
<select name="attr_RollType-Cha" class="selShort api" title="@{RollType-Cha} Should Cha rolls be public, gm, or hidden?">
<option value="@{RollType}" selected title="Default as selected on the Adjustments tab Advanced section"> Default</option>
<option value=" " title="Public"> Public</option>
<option value="pgm" title="GM"> Player&GM</option>
<option value="/w gm" title="Hidden"> GM Only</option>
<option value="RollType: ?{Who should be able to see the results|Public, |GM Only,/w gm}"
title="At runtime when the button is pressed, have a pop-up ask who should be able to see the results."> Ask</option>
</select>
<select name="attr_RollType-Cha-NoAPI" class="selShort NoAPI">
<option value="@{RollType-NoAPI}" selected title="Default as selected on the Adjustments tab Advanced section"> Default</option>
<option value=" " selected title="Public"> Public</option>
<option value="/w gm" title="Hidden"> GM Only</option>
<option value="?{Who should be able to see the results|Public, |GM Only,/w gm}"
title="At runtime when the button is pressed, have a pop-up ask who should be able to see the results."> Ask</option>
</select>
</span>
<span class="hidden"><input name="attr_Cha-Effect" type="number" readonly value="5" title="@{Cha-Effect} Charisma step used for Effect Tests - Modified only for Wounds and things that affect Effect Tests."></span>
<span class="table-data"><input name="attr_Cha" type="number" readonly value="5" class="numShort" title="@{Cha} Charisma step - Modified for Wounds and Conditions, including the Action Test modifier (at top of sheet), but not Effect Test modifier." ></span>
<span class="table-data"><input name="attr_Cha-Mods" type="number" value="0" class="numShort" title="@{Cha-Mods} Misc Charisma step mods."></span>
<span class="table-data fakeCalc"><input name="attr_Cha-Step" type="number" value="5" class="numShort" title="@{Cha-Step} Charisma step without any modifiers for wounds or conditions." ></span>
<span class="table-data bar"><b>&nbsp;|&nbsp;</b></span>
<span class="table-data HideIfNotChecked fakeCalc"><input name="attr_Attrib-Cha-Race" type="number" value="10" class="numShort" title="@{Attrib-Cha-Race} Base Racial Charisma attribute." ></span>
<span class="table-data HideIfNotChecked"><input name="attr_Attrib-Cha-Orig" type="number" value="0" class="numShort attrCostsGreen" title="@{Attrib-Cha-Orig} Number of times Charisma was increased during character creation by spending AP."></span>
<span class="table-data HideIfNotChecked"><input name="attr_Attrib-Cha-Increases" type="number" value="0" min="0" class="numShort" title="@{Attrib-Cha-Increases} Number of times Charisma value has been increased since character creation by paying LP."></span>
<span class="table-data"><input name="attr_Attrib-Cha-Curr" type="number" value="10" readonly class="numShort" title="@{Attrib-Cha-Curr} Current Charisma Attribute." ></span>
<span class="table-data HideIfNotChecked api">
<select name="attr_Karma-Control-Cha" class="selShort" title="@{Karma-Control-Cha} Under what circumstances should we add karma to Cha only rolls?">
<option value="-1" selected title="Never use karma on Cha only tests. This overrides the 'Add Karma to rolls' control."> Never</option>
<option value="0" title="Look at the 'Add Karma to rolls' control to determine if should use Karma on Cha only rolls.">Sometimes </option>
<option value="1" title="If there is unspent karma, always use karma on Cha only tests. This overrides the 'Add Karma to rolls' control.">Always </option>
<option value="2" title="If there is unspent karma, always use 2 karma on Cha only tests. This overrides the 'Add Karma to rolls' control.">2 Always</option>
<option value="3" title="If there is unspent karma, always use 3 karma on Cha only tests. This overrides the 'Add Karma to rolls' control.">3 Always</option>
<option value="K-ask: ?{How many Karma to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many karma should be spent."> Ask</option>
</select></span>
<span class="table-data HideIfNotChecked api">
<input class="testCloseChecked hidden" name="attr_Questor" type="checkbox" value="None" />
<select name="attr_DP-Control-Cha" class="HideIfCloseChecked selShort"
title="@{DP-Control-Cha} Under what circumstances should we add Devotion Points to Cha only rolls?">
<option value="-1" selected title="Never use Devotion Points on Cha only tests. This overrides the 'Use Dev Pnts in rolls' control."> Never</option>
<option value="0" title="Look at the 'Use Dev Pnts in rolls' control to determine if should use Devotion Points in Cha only rolls.">Sometimes </option>
<option value="1" title="If there are unspent Devotion Points, always use DP on Cha only tests. This overrides the 'Use Dev Pnts in rolls' control.">Always </option>
<option value="2" title="If there are unspent Devotion Points, always use 2 DP on Cha only tests. This overrides the 'Use Dev Pnts in rolls' control.">2 Always</option>
<option value="3" title="If there are unspent Devotion Points, always use 3 DP on Cha only tests. This overrides the 'Use Dev Pnts in rolls' control.">3 Always</option>
<option value="DP-ask: ?{How many Devotion Points to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many Devotion Points should be spent."> Ask</option>
</select></span>
<span class="table-data bar"><b>&nbsp;|&nbsp;</b></span>
<span class="nowrap" title="@{SD-Base} Social Defense - From attributes - before adjustments from equipment, discipline, magic, etc." >
SD-N:<input name="attr_SD-Base" type="number" class="numShort" readonly value="6" > </span>
</div>
<div class="floatRight" style="width: 25em;">
<span>
<b class="heading">&nbsp;Discipline / Other&nbsp;</b>&nbsp;&nbsp;
<b class="heading" title="This might be Sprit Rating, Creature Challenge Rating, Devotion Rating, etc.">&nbsp;Circle&nbsp;</b>&nbsp;&nbsp;
<b class="heading">&nbsp;Durability&nbsp;</b>
</span><br>
<div class="text-left">
<fieldset class="repeating_discipline">
<select name="attr_DSP_Code" class="nowrap txtMed" title="@{repeating_discipline_X_DSP_Code} Discipline.">
<option value="0.0" selected title="Durability 5">None</option>
<option value= "1.5" title="Durability 5">Air Sailor</option>
<option value= "2.5" title="Durability 5">Archer </option>
<option value= "3.7" title="Durability 7">Beastmaster </option>
<option value="20.5" title="Durability 5">Boatman/Sailor</option>
<option value= "4.7" title="Durability 7">Cavalryman </option>
<option value= "5.3" title="Durability 3">Elementalist </option>
<option value="21.7" title="Durability 7">Gauntlet</option>
<option value= "6.3" title="Durability 3">Illusionist </option>
<option value= "7.3" title="Durability 3">Nethermancer </option>
<option value= "8.5" title="Durability 5">Scout </option>
<option value="22.3" title="Durability 3">Shaman</option>
<option value= "9.7" title="Durability 7">Sky Raider </option>
<option value="10.7" title="Durability 7">Swordmaster </option>
<option value="11.5" title="Durability 5">Thief </option>
<option value="12.5" title="Durability 5">Troubadour </option>
<option value="13.7" title="Durability 7">Warrior </option>
<option value="14.5" title="Durability 5">Weaponsmith </option>
<option value="16.3" title="Durability 3">Wizard </option>
<option value="0.5" title="Durability 5">Other/Misc. </option>
<option value="81.0" title="Path.">Path - Journeyman</option>
<option value="83.0" title="Path.">Path - Master</option>
<option value="89.0" title="Questors start at zero Durability, but may gain it.">Questor </option>
<option value="98.5" title="Use Circle to record Spirit Rating.">Spirit </option>
<option value="99.5" title="Use Circle to record Challenge Rating.">Creature </option>
</select>
<input name="attr_DSP_Name" type="text" class="hidden" >&nbsp;
<input name="attr_DSP_Circle" class="pale nowrap" type="number" value="0" min="0"
title="@{repeating_discipline_X_DSP_Circle}: Characters Rank in this Discipline, Rank in their 'Questor Devotion' or Path, or Creature Challenge Rating or Spirit Rank." >&nbsp;
<span title="@{repeating_discipline_X_DSP_Durability}: Durability value for this Discipline. How much the unconsciousness rating is raised for each circle.">
<input type="checkbox" class="testLocked hidden" name="attr_DSP_Code" value="0.5"/>
<input type="checkbox" class="testLocked hidden" name="attr_DSP_Code" value="89.0"/>
<input type="checkbox" class="testLocked hidden" name="attr_DSP_Code" value="98.5"/>
<input type="checkbox" class="testLocked hidden" name="attr_DSP_Code" value="99.5"/>
<input name="attr_DSP_Durability" type="number" class="Locked UnlockIfChecked numShort" value="0">
</span>
<span>
<input type="checkbox" class="testChecked hidden" name="attr_DSP_Code" value="81.0"/>
<input type="checkbox" class="testChecked hidden" name="attr_DSP_Code" value="83.0"/>
<input type="checkbox" class="testChecked hidden" name="attr_DSP_Code" value="89.0"/>
<!-- 1 / 2 is & # 189 ; -->
<button class="text-button ui-draggable HideIfChecked api" name="roll_DSP_halfMagic" type="roll"
value="!Earthdawn~ charID: @{character_id}~ foreach:sct:c~ K-ask: ?{How many Karma to spend on this test|0}~ DP-ask: 0 ~ Value: ?{What Attribute|Dex|Str|Tou|Per|Wil|Cha}~ Reason: @{DSP_Name} @{DSP_Circle} Half-Magic ?{What Attribute} test~ Roll: @{DSP_Circle} : ?{Modification|0}"
title="%{selected|DSP_halfMagic} Roll a half magic check for this Character.">&#189; Magic</button>
</span>
<span>
<input type="checkbox" class="testChecked hidden" name="attr_DSP_Code" value="89.0"/>
<button class="text-button ui-draggable HideIfNotChecked api" name="roll_DSP_Questor" type="roll"
value="!Earthdawn~ charID: @{character_id}~ foreach:sct:c~ K-ask: 0~ DP-ask: ?{How many DP to spend on this test|0}~ Value: Cha~ Reason: @{DSP_Name} Devotion Rank @{DSP_Circle}~ Roll: @{DSP_Circle} : ?{Modification|0}"
title="%{selected|DSP_Questor} Roll a Questor Devotion test.">Devote</button>
</span>
<button class="text-button ui-draggable HideIfNotChecked NoAPI" name="roll_DSP_QuestorNoAPI" type="roll"
value="@{RollType-NoAPI} &{template:default} {{name=Devotion}} {{Step: [[?{Step|@{Cha}+@{DSP_Circle}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result: [[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"
title="%{selected|DSP_QuestorNoAPI} Roll a Questor Devotion test.">Devote</button>
</fieldset>
</div>
</div>
<span class="nowrap" title="@{LP-Current}: Unspent Legend Points."><b>Legend Points</b> Current:
<input name="attr_LP-Current" type="number" value="0" class="selShort"></span>
<span class="nowrap" title="@{LP-Total}: Accumulated sum of all Legend Points ever earned.">Career:
<input name="attr_LP-Total" type="number" value="0" class="selLong"></span>
<label title="@{LP-Status}: Legendary Status level.">Lgd Status:&nbsp;<span class="autoexpand-wrap">
<input name="attr_LP-Status" type="text" value="LP up to 10,000" readonly>
<span name="attr_LP-Status" class="autoexpand" ></span>
</span></label>
<label title="@{LP-Renown}: Base Difficulty Number on knowledge tests to recognize name.">Renown:&nbsp;<span class="autoexpand-wrap">
<input name="attr_LP-Renown" type="text" value="16" readonly>
<span name="attr_LP-Renown" class="autoexpand" ></span>
</span></label>
<label title="@{LP-Reputation}: Bonus on some Interaction tests." >Reputation:&nbsp;<span class="autoexpand-wrap">
<input name="attr_LP-Reputation" type="text" value="NA" readonly>
<span name="attr_LP-Reputation" class="autoexpand" ></span>
</span></label>
<span class="nowrap" title="@{Race} Character Race">Race:
<select name="attr_Race" class="txtShort">
<option value="0" title="Choose a race from the list." selected > Choose One...</option>
<option value="1" title="Movement Rate 10, Karma Modifier 4, Heat Sight, Strong Back."> Dwarf</option>
<option value="2" title="Movement Rate 14, Karma Modifier 4, Low Light Vision."> Elf</option>
<option value="3" title="Movement Rate 12, Karma Modifier 5, Versatility." > Human</option>
<option value="4" title="Movement Rate 10, Karma Modifier 3, Increased Wound Threshold +3, Natural Armor +3."> Obsidiman</option>
<option value="5" title="Movement Rate 12, Karma Modifier 5, Gahad, Low Light Vision."> Ork</option>
<option value="6" title="Movement Rate 14, Karma Modifier 3, Heat Sight."> Troll</option>
<option value="7" title="Movement Rate 12, Karma Modifier 4, Tail Combat."> T'skrang</option>
<option value="8" title="Movement Rate 6/16, Karma Modifier 6, Astral Signt, Flight, Increased Physical Defense +2."> Windling</option>
<!-- <option value="9" title="Movement Rate 12, Karma Modifier 5, Versatility."> Human - Vorst</option>
-->
<option value="99" title="Not a standard name-giver. Might be creature, spriit or Horror." > Other</option>
</select>
</span>
<label title="@{Movement-Race}: Races normal Movement Rate. Characters movement rate might be different and is on the Combat Tab.">
Movement:&nbsp;<span class="autoexpand-wrap">
<input name="attr_Movement-Race" type="text" value="10" readonly>
<span name="attr_Movement-Race" class="autoexpand" ></span>
</span></label>
<label title="@{Karma-Modifier}: Races Karma Modifier.">Karma Modifier:&nbsp;<span class="autoexpand-wrap">
<input name="attr_Karma-Modifier" type="text" value="0" readonly>
<span name="attr_Karma-Modifier" class="autoexpand" ></span>
</span></label>
<span class="nowrap" title="@{Questor} If this character is Questor, which Passion?">Questor?&nbsp;
<select name="attr_Questor" class="txtShort">
<option value="None" selected title="None."> None</option>
<option value="Astendar" title="Love, Arts, Music.">Astendar </option>
<option value="Chorrolis" title="Wealth, Trade, Envy, Desire.">Chorrolis </option>
<option value="Dis" title="Confusion, Unnecessary Work, Complex Bureaucratic Hierarchies, Slavery and Mastery. (Mad version of Erendis: Order, Bureaucracy and Work)">Dis (Mad) </option>
<option value="Floranuus" title="Revelry, Energy, Victory, Motion.">Floranuus </option>
<option value="Garlen" title="Hearth and Healing.">Garlen </option>
<option value="Jaspree" title="Growth, Care of the Land, Love of the Wilderness.">Jaspree </option>
<option value="Lochost" title="Rebellion, Change, Freedom.">Lochost </option>
<option value="Mynbruje" title="Justice, Compassion, Empathy, Truth.">Mynbruje </option>
<option value="Raggok" title="Vengeance, Bitterness, Jealousy. (Mad version of Rashomon: Leadership, Endurance, Tolerance, and Perseverance)">Raggok (Mad) </option>
<option value="Thystonius" title="Physical Competition, Valor.">Thystonius </option>
<option value="Upandal" title="Building, Construction, Planning.">Upandal </option>
<option value="Vestrial" title="Manipulation, Deceit. (Mad version of Trickster Prankster)">Vestrial (Mad) </option>
<option value="Death" title="(Optional)">Death </option>
<option value="Other" title="Other not listed.">Other / Misc. </option>
</select></span>
<label title="@{Age}: Characters Age.">Age:&nbsp;<span class="autoexpand-wrap">
<input name="attr_Age" type="text" >
<span name="attr_Age" class="autoexpand" ></span>
</span></label>
<label title="@{Sex}: Characters Sex.">Sex:&nbsp;<span class="autoexpand-wrap">
<input name="attr_Sex" type="text" >
<span name="attr_Sex" class="autoexpand" ></span>
</span></label>
<label title="@{Height}: Characters Height.">Height:&nbsp;<span class="autoexpand-wrap">
<input name="attr_Height" type="text" >
<span name="attr_Height" class="autoexpand" ></span>
</span></label>
<label title="@{Weight}: Characters Weight.">Weight:&nbsp;<span class="autoexpand-wrap">
<input name="attr_Weight" type="text" >
<span name="attr_Weight" class="autoexpand" ></span>
</span></label>
<label title="@{Hair}: Characters Hair color and style.">Hair:&nbsp;<span class="autoexpand-wrap">
<input name="attr_Hair" type="text" >
<span name="attr_Hair" class="autoexpand" ></span>
</span></label>
<label title="@{Eyes}: Characters Eye color and shape.">Eyes:&nbsp;<span class="autoexpand-wrap">
<input name="attr_Eyes" type="text" >
<span name="attr_Eyes" class="autoexpand" ></span>
</span></label>
<label title="@{Skin}: Characters Skin description.">Skin:&nbsp;<span class="autoexpand-wrap">
<input name="attr_Skin" type="text" >
<span name="attr_Skin" class="autoexpand" ></span>
</span></label>
<label title="@{Description-Notes}: General description of the character.">Description:&nbsp;<span class="autoexpand-wrap minWidth3" style="margin-bottom: 3px;">
<input name="attr_Description-Notes" type="text" placeholder="General description">
<span name="attr_Description-Notes" class="autoexpand" ></span>
</span></label>
</div> <!-- End of Section Core -->
<div class="section section-combat">
<div class="table-left">
<div class="table-row">
<span class="table-data"><b>Natural Ratings</b></span>
<span class="table-data"><input name="attr_PA-Nat" readonly type="number" value="0"
title="@{PA-Nat} Natural PA. Includes only Racial Armor and any inherent bonuses from Disciplines. It does not include bonuses provided by Physical Armor, spells, talents, or woven threads unless otherwise specified." ></span>
<span class="table-data"><input name="attr_PD-Nat" readonly type="number" value="6"
title="@{PD-Nat} Natural PD. Includes only Attribute and any inherent bonuses from Disciplines. It does not include bonuses provided by spells, talents, or woven threads unless otherwise specified." ></span>
<span class="table-data">Armor / Def&nbsp;</span>
<span class="table-data"><input name="attr_MA-Nat" readonly type="number" value="2"
title="@{MA-Nat} Natural MA. Includes only Attribute and any inherent bonuses from Disciplines. It does not include bonuses provided by spells, talents, or woven threads unless otherwise specified." ></span>
<span class="table-data"><input name="attr_MD-Nat" readonly type="number" value="6"
title="@{MD-Nat} Natural MD. Includes only Attribute and any inherent bonuses from Disciplines. It does not include bonuses provided by spells, talents, or woven threads unless otherwise specified." ></span>
<span class="table-data">Soc Def</span>
<span class="table-data"></span>
<span class="table-data"><input name="attr_SD-Nat" readonly type="number" value="6"
title="@{SD-Nat} Natural SD. Includes only Attribute and any inherent bonuses from Disciplines. It does not include bonuses provided by spells, talents, or woven threads unless otherwise specified." ></span>
</div>
<div class="table-row">
<span class="table-data"><b>Defense - </b>Physical:&nbsp;</span>
<span class="table-data"><input name="attr_PD-Buff" type="number" value="0" title="@{PD-Buff} Buffs or other temporary modifications to Physical Defense." ></span>
<span class="table-data"><input name="attr_PD" type="number" readonly value="6" title="@{PD} Physical Defense."></span>
<span class="table-data" >Mystic:&nbsp;</span>
<span class="table-data"><input name="attr_MD-Buff" type="number" value="0" title="@{MD-Buff} Buffs or other temporary modifications to Mystic Defense." ></span>
<span class="table-data"><input name="attr_MD" type="number" readonly value="6" title="@{MD} Mystic Defense."></span>
<span class="table-data">Social:&nbsp;</span>
<span class="table-data"><input name="attr_SD-Buff" type="number" value="0" title="@{SD-Buff} Buffs or other temporary modifications to Social Defense." ></span>
<span class="table-data"><input name="attr_SD" type="number" readonly value="6" title="@{SD} Social Defense."></span>
<span class="table-data"><b>Shield</b> Buffs
<input name="attr_PD-ShieldBuff" type="number" value="0" title="@{PD-ShieldBuff} Buff or other temporary modification to PD specifically associated with their shield, and that they lose when Blindsided." >
<input name="attr_MD-ShieldBuff" type="number" value="0" title="@{MD-ShieldBuff} Buff or other temporary modification to MD specifically associated with their shield, and that they lose when Blindsided.">
</span>
</div>
<div class="table-row">
<span class="table-data"><b>Armor -</b> Physical:&nbsp;</span>
<span class="table-data"><input name="attr_PA-Buff" type="number" value="0" title="@{PA-Buff} Buffs or other temporary modifications to Physical Armor." ></span>
<span class="table-data nowrap2" title="@{Physical-Armor} Physical Armor rating. From the Equipment tab.">
<input name="attr_Physical-Armor" type="number" value="0" readonly> </span>
<span class="table-data">Mystic:&nbsp;</span>
<span class="table-data"><input name="attr_MA-Buff" type="number" value="0" title="@{MA-Buff} Buffs or other temporary modifications to Mystic Armor." ></span>
<span class="table-data nowrap2" title="@{Mystic-Armor} Mystic Armor rating. From Willpower plus Equipment.">
<input name="attr_Mystic-Armor" type="number" value="2" readonly ></span>
<span class="table-data">Movement:</span>
<span class="table-data">
<input name="attr_Movement-Buff" type="number" value="0" title="@{Movement-Buff} Buffs or other temporary modifications to Movement Rating." ></span>
<span class="table-data nowrap2" title="@{Movement}: Current Movement Rate. If conditions would lower it less than one, value is set to '1*'">
<input name="attr_Movement" type="text" value="10" readonly style="width: 3.5em;"></span>
<span class="table-data">
<button class="text-button api" name="roll_JumpUp-CB" type="roll"
title="%{JumpUp-Check} When Knocked Down - You can take 2 Strain and roll Dex to try to jump back to your feet - Alternative is to use your standard action to stand up."
value="!Earthdawn~ charID: @{character_id}~ @{Karma-Control-JumpUp}~ @{DP-Control-JumpUp}~ TargetNum: 6: Adjust-TN-Total~ foreach~ Strain: 2~ calculateValue: JumpUp~ Roll: ?{Modification|0}"> Jump Up</button>
<button class="text-button NoAPI" name="roll_JumpUp-CheckNoAPI-CB" type="roll"
title="%{JumpUp-CheckNoAPI} When Knocked Down - Take 2 Strain and roll Dex to try to jump back to your feet - Alternative is to use your standard action to stand up."
value="@{RollType-NoAPI} &{template:rolltargetnumber} {{header=@{character_name}: Jump Up}} {{target_number=[[6]]}} {{Step=[[?{Step|@{Dex}+(@{condition-KnockedDown}*3)-@{Armor-IP}}]] + [[?{Bonus or Karma Step|0}]]}} {{Result=[[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"> Jump Up</button>
</span>
</div>
<div class="table-row">
<input name="attr_working-Durability" type="number" class="hidden" value="0"> <!-- This is the total Durability gained from all Disciplines -->
<input name="attr_working-Circle" type="number" class="hidden" value="0"> <!-- This is the highest circle attained in any Discipline -->
<span class="table-data"><b>Health -</b> Uncon:&nbsp;</span>
<span class="table-data">
<input name="attr_Health-Buff" type="number" value="0" title="@{Health-Buff} Buffs or other temporary modifications to Unconscious and Death Ratings." ></span>
<span class="table-data nowrap2" title="@{Damage-Unc-Rating}: Unconscious Rating. If take more damage (stun or normal) than this, character goes unconscious.">
<input name="attr_Damage-Unc-Rating" type="number" value="20" readonly > </span>
<span class="table-data">Death:</span>
<span class="table-data"></span>
<span class="table-data" title="@{Damage-Death-Rating}: Death Rating. If take more (non-stun) damage than this, character dies.">
<input name="attr_Damage-Death-Rating" type="number" value="25" readonly ></span>
<span class="table-data">Wnd Thresh:</span>
<span class="table-data"><input name="attr_Wound-Threshold-Buff" value="0" type="number" title="@{Wound-Threshold-Buff} Buffs or other temporary modifications to Wound-Threshold." ></span>
<span class="table-data" title="@{Wound-Threshold}: If take this much damage in one attack, take a wound. If take 5 more damage than this in one attack, make a knockdown test.">
<input name="attr_Wound-Threshold" type="number" value="7" readonly></span>
<span class="table-data">
<button class="text-button api" name="roll_Knockdown-CB" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{Karma-Control-KnockDown}~ @{DP-Control-KnockDown}~ foreach~ Value: Str-Step: Str-Adjust: Str-Mods: Knockdown-Adjust: Adjust-All-Tests-Total: Defensive: Resistance~ Roll: ?{Modification|0}"
title="%{selected|Knockdown-Check} Roll a Knockdown check for this Character - Modified for wounds and conditions.">Knockdown</button>
<button class="text-button NoAPI" name="roll_Knockdown-CheckNoAPI-CB" type="roll"
value="@{RollType-Str-NoAPI} &{template:default} {{name=Knockdown Test}} {{Step: [[?{Step|@{Str-Step}+@{Str-Adjust}+@{Str-Mods}+@{Knockdown-Adjust}+@{Adjust-All-Tests-Total}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result: [[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"
title="%{selected|Knockdown-CheckNoAPI} Roll a Knockdown check for this Character - Modified for wounds and conditions.">Knockdown</button>
</span>
</div>
<div class="table-row">
<span class="table-data"><b>Recovery -</b> Tests:</span>
<span class="table-data"></span>
<span class="table-data"><input name="attr_Recovery-Tests_max" type="number" value="2" readonly title="@{Recovery-Tests_max} Number of Recovery Tests that can be used per day." ></span>
<span class="table-data"> Used:&nbsp;</span>
<span class="table-data">
<input name="attr_Recovery-Tests" type="number" value="0" title="@{Recovery-Tests}: Number of Recovery Tests already used today."></span>
<span class="table-data"></span>
<span class="table-data">Recov Stp:&nbsp;</span>
<span class="table-data"><input name="attr_Recovery-Buff" type="number" value="0" title="@{Recovery-Buff}: Misc Recovery Test modification." ></span>
<span class="table-data"><input name="attr_Recovery-Step" type="number" value="5" readonly title="@{Recovery-Step} Recovery Step." ></span>
<span class="table-data">
<button class="text-button api" name="roll_Recovery-CB" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{Karma-Control-Recovery}~ @{DP-Control-Recovery}~ foreach~ Value: Recovery-Step~ mod: -?{How many wounds not treated by Physician|@{Wounds}}~ Roll: ?{Modification to roll step|0}"
title="%{selected|Recovery-Check} Roll a Recovery Test for this Character.">Recovery</button>
<button class="text-button NoAPI" name="roll_Recovery-TestNoAPI-CB" type="roll"
value="@{RollType-NoAPI} &{template:default} {{name=Recovery Test}} {{Step: [[?{Step|@{Recovery-Step}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result: [[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] -@{Wounds} ]]}}"
title="%{selected|Recovery-TestNoAPI} Roll a Recovery Test for this Character.">Recovery</button>
<button class="text-button api" name="roll_RecoveryStun-CB" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{Karma-Control-Recovery}~ @{DP-Control-Recovery}~ foreach~ Value: Recovery-Step: Wil~ mod: -?{How many wounds not treated by Physician|@{Wounds}}~ Roll: ?{Modification to roll step|0}"
title="%{selected|Recovery-Check} Roll a Recovery Test for this Character that heals Stun damage only.">Recov Stun</button>
<button class="text-button NoAPI" name="roll_Recovery-StunNoAPI-CB" type="roll"
value="@{RollType-NoAPI} &{template:default} {{name=Recovery Test}} {{Step: [[?{Step|@{Recovery-Step}+@{Wil-Step}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result: [[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] -@{Wounds} ]]}}"
title="%{selected|Recovery-TestNoAPI} Roll a Recovery Test for this Character that heals Stun damage only.">Recov Stun</button>
</span>
</div>
<div class="table-row">
<span class="table-data"><b>Initiative -</b> Penalty:&nbsp;</span>
<span class="table-data"><input name="attr_Misc-IP-Buff" type="number" value="0" title="@{Misc-IP-Buff}: Misc Initiative Penalty modification." ></span>
<span class="table-data nowrap2"><input name="attr_IP" type="number" readonly value="0" title="@{IP}: Initiative Penalty of Armor, Shield and Misc." ></span>
<span class="table-data">Init Step&nbsp;</span>
<span class="table-data"><input name="attr_Misc-Initiative-Buff" type="number" value="0" title="@{Misc-Initiative-Buff}: Misc Initiative Modification." ></span>
<span class="table-data nowrap2"><input name="attr_Initiative" type="number" readonly value="5" title="@{Initiative}: Final Initiative Step." ></span>
<span class="table-data">Strain P/Turn:</span>
<span class="table-data">
<input name="attr_Misc-StrainPerTurn" type="number" value="0" title="@{Misc-StrainPerTurn}: If you are taking miscellaneous Strain every turn (for example a Blood Charm, a Thread Item power you automatically use every turn, or any other cause) You can set this field, and the Strain will automatically be deducted when you roll Initiative." ></span>
<span class="table-data"></span>
<span class="table-data">
<button class="text-button api" name="roll_Dex-Initiative-CB" type="roll" title="%{selected|Dex-Initiative-Check}"
value="!Earthdawn~ charID: @{character_id}~ @{Karma-Control-Initiative}~ @{DP-Control-Initiative}~ foreach~ value : Initiative~ Init : ?{Modification|0}">Init.</button>
<button class="text-button NoAPI" name="roll_Dex-Initiative-CheckNoAPI" type="roll" title="%{selected|Dex-Initiative-CheckNoAPI}"
value="@{RollType-NoAPI} &{template:default} {{name=Initiative}} {{Step: [[?{Step|@{Initiative}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result: [[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] &{tracker}]]}}">Init.</button>
</span>
</div>
<div class="table-row">
<span class="table-data"><b>Actions</b></span>
<span class="table-data">
<input name="attr_Actions" type="number" value="1" title="@{Actions}: Number of Standard Actions character/creature has per round." ></span>
<span class="table-data"></span>
<span class="table-data">Atk Generic&nbsp;</span>
<span class="table-data">
<input name="attr_Attack-Rank" type="number" value="0" title="@{Attack-Rank} Rank of the generic Attack vs PD. This can be used for unarmed attacks, attacks where the character does not have the appropraite skill, or any situation when you need a generic attack." ></span>
<span class="table-data nowrap2">
<input name="attr_Attack-Step" type="number" disabled
value="(@{Attack-Rank}+@{Dex-Step}+@{Dex-Adjust}+@{Dex-Mods}+@{Adjust-Attacks-Total-CC})"
title="@{Attack-Step} Step of this generic Dex based attack vs PD. This can be used when the character does not have a skill and is defaulting." ></span>
<span class="table-data">Wil Efct&nbsp;</span>
<span class="table-data">
<input name="attr_Will-Eff-Mods" type="number" value="0" title="@{Will-Eff-Mods} Modifications to the base Will effect Roll." ></span>
<span class="table-data nowrap2"><input name="attr_Will-Effect" type="number" readonly value="5" title="@{Will-Effect} Effect Step of this Will based attack." ></span>
<span class="table-data">
<button class="text-button api" name="roll_Attack-CB" type="roll"
value="!Earthdawn~ charID: @{character_id}~ Target: PD~ foreach~ Value: Attack-Step~ Roll: ?{Modification|0}"
title="@{Attack-CB} Roll a generic Dex vs PD Attack modified by combat options and conditions.">Attack</button>
<button class="text-button NoAPI" name="roll_Attack-NoAPI-CB" type="roll"
value="@{RollType-NoAPI} &{template:rolltargetnumber} {{target_name=@{target|Target|token_name}}} {{target_number=[[@{target|Target|PD}]]}} {{target_defense=PD}} {{header=@{character_name}: Attack}} {{Step=[[?{Step|@{Attack-Step}}]] + [[?{Bonus or Karma Step|0}]]}} {{Result=[[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"
title="@{Attack-NoAPI-CB} Roll a generic Dex Attack modified by combat options and conditions.">Attack</button>
<button class="text-button api" name="roll_Will-Effect-CB" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{SP-WilEffect-Kask-Button} foreach~ Value: Will-Effect~ Roll: ?{Modification|0}"
title="@{Will-Effect-CB} Roll a generic Will Effect modified by combat options and conditions.">Will</button>
<button class="text-button NoAPI" name="roll_Will-Effect-NoAPI-CB" type="roll"
value="@{RollType-NoAPI} &{template:default} {{name=Will Effect}} {{Step=[[?{Step|@{Will-Effect}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result=[[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"
title="@{Will-Effect-NoAPI-CB} Roll generic a Will Effect modified by combat options and conditions.">Will</button>
</span>
</div>
</div>
<div>
<span class="nowrap3">
<b title="Misc. Pools can be used to keep track of any miscellaneous numbers you need to. For example WoodSkin results or Burning Vigor pools.">Misc. Pools - 1: </b>
<input name="attr_Misc-PoolName-1" type="text" placeholder="Name" class="txtShort"
title="@{Misc-PoolName-1}: You can use these to keep track of anything you want. Enter the name of what you are tracking here." />
<input name="attr_Misc-PoolValue-1" type="number" value="0"
title="@{Misc-PoolValue-1}: You can use this number to keep track of anything you want." />
</span><span class="nowrap3">
<b>2: </b>
<input name="attr_Misc-PoolName-2" type="text" placeholder="Name" class="txtShort"
title="@{Misc-PoolName-2}: You can use these to keep track of anything you want. Enter the name of what you are tracking here." />
<input name="attr_Misc-PoolValue-2" type="number" value="0"
title="@{Misc-PoolValue-2}: You can use this number to keep track of anything you want." />
</span><span class="nowrap3">
<b>3: </b>
<input name="attr_Misc-PoolName-3" type="text" placeholder="Name" class="txtShort"
title="@{Misc-PoolName-3}: You can use these to keep track of anything you want. Enter the name of what you are tracking here." />
<input name="attr_Misc-PoolValue-3" type="number" value="0"
title="@{Misc-PoolValue-3}: You can use this number to keep track of anything you want." />
</span>
</div>
<fieldset class="repeating_weapons filtershortlist filtersummarylist">
<input name="attr_WPN_CombatSlot" type="checkbox" value="1" class="hidden combattab" >
<div class="filter-box">
<span class="hidden"><input name="attr_WPN_RowID" type="text" ></span>
<span class="nowrap0 autoexpand-wrap" style="margin-right: 0.3em;" title="@{repeating_weapons_X_WPN_Name}: Type of Weapon used.">
<input name="attr_WPN_Name" type="text" placeholder="Weapon type" >
<span name="attr_WPN_Name" class="autoexpand" ></span></span>
<span class="hidden"><input name="attr_WPN_Base" type="number" value="0" min="0" class="numShort" title="@{repeating_weapons_X_WPN_Base} Base damage the weapon does." ></span>
<span class="nowrap0"><input name="attr_WPN_Mods" type="number" value="0" class="numShort" title="@{repeating_weapons_X_WPN_Mods} Modifications to the base damage."></span>
<span class="nowrap0"><input name="attr_WPN_Damage" type="number" disabled class="numShort"
value="(@{Str-Step}+@{Str-Adjust}+@{Str-Mods}+@{WPN_Base}+@{WPN_Mods}+(@{Adjust-Damage-Total-CC}*@{WPN_CloseCombat})+(@{Adjust-Damage-Total}*abs(@{WPN_CloseCombat}-1)))"
title="@{repeating_weapons_X_WPN_Damage} Damage Step this weapon does."></span>
<span class="nowrap0">
<button class="text-button api" name="roll_WPN_Roll-CB" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{RollType}~ @{WPN_Karma-Control}~ @{WPN_DP-Control}~ foreach:sct:ust:c~ Action: WPN: @{WPN_RowID}: ?{Modification|0}"
title="@{repeating_weapons_X_WPN_Roll} Roll Damage for this weapon modified by combat options and conditions.">Dmg</button>
<button class="text-button NoAPI" name="roll_WPN_Roll-NoAPI-CB" type="roll"
value="@{RollType-NoAPI} &{template:default} {{name=@{WPN_Name} Dmg}} {{Step=[[?{Step|@{WPN_Damage}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result=[[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"
title="@{repeating_weapons_X_WPN_Roll-NoAPI-CB} Roll Damage for this weapon modified by combat options and conditions.">Dmg</button>
</span>
<span class="hidden" title="@{repeating_weapons_X_WPN_CloseCombat} Check this box if the weapon is a Close Combat weapon.">
<input type="checkbox" name="attr_WPN_CloseCombat" value="1"/>
<input type="checkbox" name="attr_WPN_Karma-Control" value="-1"/>
<input type="checkbox" name="attr_WPN_DP-Control" value="-1"/></span>
</div>
</fieldset>
<span class="api">
<span><b>Take Damage</b></span>
<button class="text-button" name="roll_Take-Damage-NA" type="roll"
value="!Earthdawn~ charID: @{character_id}~ ForEach~ ?{Type of damage|Damage|Stun|Strain} : NA : ?{Damage (No Armor)|1}"
title="%{selected|Damage-NA} Apply damage to all selected tokens without any armor." >Dmg</button>
<button class="text-button" name="roll_Take-Damage-PA" type="roll"
value="!Earthdawn~ charID: @{character_id}~ ForEach~ ?{Type of damage|Damage|Stun} : PA : ?{Damage (Physical Armor applies)|1}"
title="%{selected|Damage-PA} Apply damage to all selected tokens applying Physical Armor." >Dmg Phys</button>
<button class="text-button" name="roll_Take-Damage-MA" type="roll"
value="!Earthdawn~ charID: @{character_id}~ ForEach~ ?{Type of damage|Damage|Stun} : MA : ?{Damage (Mystic Armor applies)|1}"
title="%{selected|Damage-MA} Apply damage to all selected tokens applying Mysitc Armor." >Dmg Myst</button>
<button class="text-button hidden" name="roll_Take-Damage" type="roll"
value="!Earthdawn~ charID: @{character_id}~ ForEach~ ?{Type of damage|Damage|Stun|Strain} : ?{Armor| None,NA| Physical,PA| Mystic,MA| Nat PA,PA-Nat| Nat MA,MA-Nat} : ?{Damage)|1}" >Take Dmg</button>
<span><b>Damage Target</b></span>
<button class="text-button" name="roll_Damage-Target-NA" type="roll"
value="!Earthdawn~ setToken: @{target|token_id}~ ?{Type of damage|Damage|Stun|Strain} : NA : ?{Damage (No Armor)|1}"
title="%{target|Damage-NA} Apply damage to all selected tokens without any armor." >Dmg</button>
<button class="text-button" name="roll_Damage-Target-PA" type="roll"
value="!Earthdawn~ setToken: @{target|token_id}~ ?{Type of damage|Damage|Stun} : PA : ?{Damage (Physical Armor applies)|1}"
title="%{target|Damage-PA} Apply damage to all selected tokens applying Physical Armor." >Dmg Phys</button>
<button class="text-button" name="roll_Damage-Target-MA" type="roll"
value="!Earthdawn~ setToken: @{target|token_id}~ ?{Type of damage|Damage|Stun} : MA : ?{Damage (Mystic Armor applies)|1}"
title="%{target|Damage-MA} Apply damage to all selected tokens applying Mystic Armor." >Dmg Myst</button>
<button class="text-button hidden " name="roll_Damage-Target" type="roll"
value="!Earthdawn~ setToken: @{target|token_id}~ ?{Type of damage|Damage|Stun|Strain} : ?{Armor| None,NA| Physical,PA| Mystic,MA| Nat PA,PA-Nat| Nat MA,MA-Nat } : ?{Damage)|1}" >Dmg Target</button>
<br>
</span>
&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Roll&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Mods&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Step&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Talent Name&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Rank&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Action&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Strain&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;
<fieldset class="repeating_talents filtershortlist">
<input name="attr_T_CombatSlot" type="checkbox" value="1" class="hidden combattab" >
<div class="filter-box">
<button class="text-button api" name="roll_T_Roll-fromSheetCombat" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{T_Karma-Control}~ @{T_DP-Control}~ Target: @{T_Target}~ @{T_RollType}~ foreach:sct:ust:c~ Action: T: @{T_RowID}: ?{Modification|0}"
title="%{selected|Roll_T_Roll-fromSheet} Roll this Talent Test.">Roll</button>
<button class="text-button NoAPI" name="roll_T_Roll-NoAPICombat" type="roll"
value="@{T_RollType-NoAPI} &{template:rolltargetnumber} @{T_Target-NoAPI} {{header=@{character_name}: @{T_Name}}} {{Step=[[?{Step|@{T_Step}}]] + [[?{Bonus or Karma Step|0}]]}} {{Result=[[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}} {{Text=@{T_SuccessText}}}"
title="%{selected|Roll_T_Roll-NoAPI} Roll this Talent Test.">Roll</button>
&nbsp;&nbsp;
<span class="nowrap" title="@{repeating_talents_X_T_Mods}: Modifications to the use of this talent that do NOT increase effective rank.">
<input name="attr_T_Mods" type="number" value="0" class="numShort"></span>
<span class="nowrap" title="@{repeating_talents_X_T_Step}: Final action Step for this talent.">
<input name="attr_T_Step" type="number" disabled class="numShort"
value="(@{T_Effective-Rank}+@{T_Mods}+@{T_Attribute}+@{T_Mod-Type}+@{T_WorkingMods})"></span>
<span class="nowrap" title="@{repeating_talents_X_T_Name}: Name of Talent.">
<input name="attr_T_Name" type="text" class="Locked txtMed" placeholder="Name" ></span>
<span class="nowrap" title="@{repeating_talents_X_T_Effective-Rank}: Characters effective Rank in this talent counting any magical threads or other effects that effectively raise the rank above it's base rank." >
<input name="attr_T_Effective-Rank" type="number" readonly value="0" class="numShort"></span>
<span class="nowrap" title="@{repeating_talents_X_T_Action} What type of Action does this talent require.">
<input name="attr_T_Action" type="text" class="Locked txtShort"></span>
<span class="nowrap" title="@{repeating_talents_X_T_Strain}: Amount of Strain this Talent costs.">
<input name="attr_T_Strain" type="number" class="Locked numShort" value="0" min="0">
</span>
<span class="hidden"> <!-- In addition to the fields displayed on the combat tab, we also need the fields referenced in the button here. -->
<input name="attr_T_RowID" type="text" >
<input name="attr_T_Target" type="text">
<input name="attr_T_Target-NoAPI" type="text">
<input name="attr_T_RollType" type="text">
<input name="attr_T_RollType-NoAPI" type="text">
<input name="attr_T_SuccessText" type="text">
<input name="attr_T_Karma-Control" type="text">
<input name="attr_T_DP-Control" type="text">
</span>
</div>
</fieldset>
<fieldset class="repeating_knacks filtershortlist">
<input name="attr_NAC_CombatSlot" type="checkbox" value="1" class="hidden combattab" >
<div class="filter-box">
<button class="text-button api" name="roll_NAC_Roll-fromSheetCombat" type="roll"
value="!Earthdawn~ charID: @{character_id}~ Target: @{NAC_Target}~ @{NAC_RollType}~ @{NAC_Karma-Control}~ @{NAC_DP-Control}~ foreach:sct:ust:c~ Action: NAC: @{NAC_RowID}: ?{Modification|0}"
title="%{selected|Roll_NAC_Roll-fromSheet} Roll this Knack Test.">Roll</button>
&nbsp;&nbsp;
<span class="nowrap" title="@{repeating_talents_X_T_Mods}: Modifications to the use of this talent that do NOT increase effective rank.">
<input name="attr_NAC_Mods" type="number" value="0" class="numShort"></span>
<span class="nowrap" title="@{repeating_knacks_X_NAC_Step}: Final action Step for this Knack.">
<input name="attr_NAC_Step" type="number" disabled class="numShort"
value="(@{NAC_Mods}+@{NAC_Attribute}+@{NAC_Mod-Type}+@{NAC_WorkingMods}+(@{NAC_Linked}))"></span>
<span class="nowrap" title="@{repeating_knacks_X_NAC_Name}: Name of Knack.">
<input name="attr_NAC_Name" type="text" class="Locked txtMed" placeholder="Name" ></span>
Knack&nbsp;&nbsp;&nbsp;&nbsp;
<span class="nowrap" title="@{repeating_knacks_X_NAC_Action} What type of Action does this Knack require.">
<input name="attr_NAC_Action" type="text" class="Locked txtShort"></span>
<span class="nowrap" title="@{repeating_knacks_X_NAC_Strain}: Amount of Strain this Knack costs.">
<input name="attr_NAC_Strain" type="number" class="Locked numShort" value="0" min="0">
</span>
<label title="@{repeating_knacks_X_NAC_LinkDisplay}: The names of any Talents, Knacks, or Weapons that are linked to this Knack.">
<span class="autoexpand-wrap">
<input name="attr_NAC_LinkDisplay" type="text" readonly>
<span name="attr_NAC_LinkDisplay" class="autoexpand"></span>
</span></label>
<span class="hidden"> <!-- In addition to the fields displayed on the combat tab, we also need the fields referenced in the button here. -->
<input name="attr_NAC_RowID" type="text" >
<input name="attr_NAC_Target" type="text">
<input name="attr_NAC_RollType" type="text">
<input name="attr_NAC_Karma-Control" type="text">
<input name="attr_NAC_DP-Control" type="text">
</span>
</div>
</fieldset>
<fieldset class="repeating_skills filtershortlist">
<input name="attr_SK_CombatSlot" type="checkbox" value="1" class="hidden combattab" >
<div class="filter-box">
<button class="text-button api" name="roll_SK_Roll-fromSheetCombat" type="roll"
value="!Earthdawn~ charID: @{character_id}~ Target: @{SK_Target}~ @{SK_RollType}~ @{SK_Karma-Control}~ @{SK_DP-Control}~ foreach:sct:ust:c~ Action: SK: @{SK_RowID}: ?{Modification|0}"
title="%{selected|roll_SK_Roll-fromSheet} Roll a skill Test.">Roll</button>
<button class="text-button NoAPI" name="roll_SK_Roll-NoAPICombat" type="roll"
value="@{SK_RollType-NoAPI} &{template:rolltargetnumber} @{SK_Target-NoAPI} {{header=@{character_name}: @{SK_Name}}} {{Step=[[?{Step|@{SK_Step}}]] + [[?{Bonus or Karma Step|0}]]}} {{Result=[[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}} {{Text=@{SK_SuccessText}}}"
title="%{selected|Roll_SK_Roll-NoAPI} Roll this skill Test.">Roll</button>
&nbsp;&nbsp;
<span class="nowrap">
<input name="attr_SK_Mods" type="number" value="0" class="numShort"
title="@{repeating_skills_X_SK_Mods}: Modifications to the use of this skill."></span>
<span class="nowrap"><input name="attr_SK_Step" type="number" disabled class="numShort"
value="(@{SK_Rank}+@{SK_Mods}+@{SK_Attribute}+@{SK_Mod-Type}+@{SK_WorkingMods})"
title="@{repeating_skills_X_SK_Step}: Final action Step for this skill." ></span>
<span class="nowrap" title="@{repeating_skills_X_SK_Name}: Name of skill.">
<input name="attr_SK_Name" type="text" class="Locked txtMed" placeholder="Name"></span>
<span class="nowrap" title="@{repeating_skills_X_SK_Rank}: Characters Rank in this skill." >
<input name="attr_SK_Rank" type="number" class="Locked numShort" value="0" min="0"></span>
<span class="nowrap" title="@{repeating_skills_X_SK_Action} What type of Action does this skill require.">
<input name="attr_SK_Action" type="text" class="Locked txtShort"></span>
<span class="nowrap" title="@{repeating_skills_X_SK_Strain}: Amount of Strain this skill costs.">
<input name="attr_SK_Strain" type="number" class="Locked numShort" value="0" min="0">
</span>
<span class="hidden"> <!-- In addition to the fields displayed on the combat tab, we also need the fields referenced in the button here. -->
<input name="attr_SK_RowID" type="text" >
<input name="attr_SK_Target" type="text">
<input name="attr_SK_Target-NoAPI" type="text">
<input name="attr_SK_RollType" type="text">
<input name="attr_SK_RollType-NoAPI" type="text">
<input name="attr_SK_Karma-Control" type="text">
<input name="attr_SK_DP-Control" type="text">
<input name="attr_SK_SuccessText" type="text">
</span>
</div>
</fieldset>
</div> <!-- End of Section Combat -->
<div class="section section-talents">
<span class="info"
title="Instructions: This tab is for recording all Talents EXCEPT spellcasting talents: Spellcasting, Patterncraft, Willforce, Spell weaving, and Matrix Talents are all recorded on the Spell Tab and should NOT be duplicated here.">i</span>
<div style="width: 95%" title="@{TalentSummary} Count of all talents base ranks broken down by source catagory. Includes all Talents on this tab and Spell tab. Note that No Talent on on Spell tab should also be on this tab.">
<input name="attr_TalentSummary" type="text" class="w100p" placeholder="Note that no Talent on the Spell tab should be recorded on this tab."/>
</div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Step&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;
<input class="testCloseChecked hidden" name="attr_Race" type="checkbox" value="99"/>
<span class="HideIfCloseChecked"><b class="heading">&nbsp;Talent Name&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span class="HideIfNotCloseChecked"><b class="headin">&nbsp;Power Name&nbsp;&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<b class="heading">&nbsp;Rank&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Action&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Strain&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Origin&nbsp;</b>
<input class="testRepSpecialChecked hidden" name="attr_Questor" type="checkbox" value="None" />
<fieldset class="repeating_talents">
<span class="hidden"><input name="attr_T_RowID" type="text"> <input name="attr_T_Target-TA" type="text"></span>
<button class="text-button api" name="roll_T_Roll-fromSheet" type="roll"
value="!Earthdawn~ charID: @{character_id}~ Target: @{T_Target}~ @{T_RollType}~ @{T_Karma-Control}~ @{T_DP-Control}~ foreach:sct:ust:c~ Action: T: @{T_RowID}: ?{Modification|0}"
title="%{selected|Roll_T_Roll-fromSheet} Roll this Talent Test.">Roll</button>
<button class="hidden" name="roll_T_Roll" type="roll"
value="!Earthdawn~ charID: @{character_id}~ Target: @{T_Target-TA}~ @{T_RollType}~ @{T_Karma-Control}~ @{T_DP-Control}~ foreach:sct:ust:c~ Action: T: @{T_RowID}: ?{Modification|0}"
title="%{selected|Roll_T_Roll} Roll this Talent Test. This version uses T_Target-TA instead of T_Target. on ?D1- target type it will try to get a Token ID.">Roll</button>
<button class="text-button NoAPI" name="roll_T_Roll-NoAPI" type="roll"
value="@{T_RollType-NoAPI} &{template:rolltargetnumber} @{T_Target-NoAPI} {{header=@{character_name}: @{T_Name}}} {{Step=[[?{Step|@{T_Step}}]] + [[?{Bonus or Karma Step|0}]]}} {{Result=[[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}} {{Text=@{T_SuccessText}}}"
title="%{selected|Roll_T_Roll-NoAPI} Roll this Talent Test.">Roll</button>
<span class="nowrap"><input name="attr_T_Step" type="number" disabled class="numShort"
value="(@{T_Effective-Rank}+@{T_Mods}+@{T_Attribute}+@{T_Mod-Type}+@{T_WorkingMods})"
title="@{repeating_talents_X_T_Step}: Final action Step for this talent."></span>
<input class="testLocked hidden" name="attr_T_showDetails" type="checkbox" value="3"/>
<input name="attr_T_Name" type="text" class="nowrap LockIfChecked txtMed testPlaceholder" placeholder="Name"
title="@{repeating_talents_X_T_Name}: Name of Talent.">&nbsp;&nbsp;
<span class="nowrap">
<input name="attr_T_Effective-Rank" type="number" readonly value="0" class="numShort"
title="@{repeating_talents_X_T_Effective-Rank}: Characters effective Rank in this talent counting any magical threads or other effects that effectively raise the rank above it's base rank." ></span>
<span class="nowrap" title="@{repeating_talents_X_T_Action} What type of Action does this talent require.">
<select name="attr_T_Action" class="LockIfChecked selLong">
<option value="NA" title="There is no action directly associated with this talent." >NA</option>
<option value="Standard" selected title="Standard action takes most of the characters turn.">Standard</option>
<option value="Simple" title="Simple actions are often independent of other actions but can occur at the same time as other actions." >Simple</option>
<option value="Free" title="Free actions are often a part of a characters other general or defensive actions.">Free</option>
<option value="Sustained" title="Sustained actions take more than one round to accomplish.">Sustained</option>
</select></span>
<span class="nowrap" title="@{repeating_talents_X_T_Strain}: Amount of Strain this Talent costs.">
<input name="attr_T_Strain" type="number" class="LockIfChecked numShort" value="0" min="0">
</span>
<span class="nowrap" title="@{repeating_talents_X_T_Type} How does the Adept know this talent.">
<select name="attr_T_Type" class="LockIfChecked selLong">
<option value="D1-Novice" selected title="This is a Novice Discipline Talent for this character.">Novice</option>
<option value="D1-Journeyman" title="This is a Journeyman Discipline Talent for this character." >Journeyman</option>
<option value="D1-Warden" title="This is a Warden Discipline Talent for this character." >Warden</option>
<option value="D1-Master" title="This is a Master Discipline Talent for this character." >Master</option>
<option value="TO1-Novice" title="This is a Novice Talent Option for this character." >TO-Novice</option>
<option value="TO1-Journeyman" title="This is a Journeyman Talent Option for this character." >TO-Journeyman</option>
<option value="TO1-Warden" title="This is a Warden Talent Option for this character." >TO-Warden</option>
<option value="TO1-Master" title="This is a Master Talent Option for this character." >TO-Master</option>
<option value="QD-Follower" title="This is a Questor Devotion, which we represent as a Talent, but is not.">QD-Follower</option>
<option value="QD-Adherent" title="This is a Questor Devotion, which we represent as a Talent, but is not.">QD-Adherent</option>
<option value="QD-Exemplar" title="This is a Questor Devotion, which we represent as a Talent, but is not.">QD-Exemplar</option>
<option value="PA-Journeyman" title="This is a Path Talent Option, which is purchased as a Journeyman Talent.">Path-Journeyman</option>
<option value="PA-Warden" title="This is a Path Talent Option, which is purchased as a Warden Talent.">Path-Warden</option>
<option value="PA-Master" title="This is a Path Talent Option, which is purchased as a Master Talent.">Path-Master</option>
<option value="Free" title="This is a Free Talent for one of the characters disciplines, and it's rank is always equal to his circle in that discipline.">Free</option>
<option value="Racial" title="This Talent is available because of the characters Race.">Racial</option>
<option value="Versatility" title="This is a Versitility Talent for this character.">Versatility</option>
<option value="Power" title="This is not really a Talent, it is really a Creature/Horror/Spirit/Dragon, Etc. Power.">Creature Power</option>
<option value="Item" title="This talent is granted by an Item such as a Thread Item.">Item</option>
<option value="Dummy" title="This is not really a Talent in and of itself, it is a placeholder for a talent-like effect or a combination of multiple talents. For example a warrior with both air dance and tiger spring might create a dummy entry for using both talents at the same time.">Dummy</option>
<option value="Special" title="This talent is available due to some special reason.">Special</option>
<option value="D2-Novice" title="This is a Novice Discipline Talent for this characters 2nd Discipline.">D2-Novice</option>
<option value="D2-Journeyman" title="This is a Journeyman Discipline Talent for this characters 2nd Discipline." >D2-Journeyman</option>
<option value="D2-Warden" title="This is a Warden Discipline Talent for this characters 2nd Discipline." >D2-Warden</option>
<option value="D2-Master" title="This is a Master Discipline Talent for this characters 2nd Discipline." >D2-Master</option>
<option value="TO2-Novice" title="This is a Novice Talent Option for this characters 2nd Discipline." >TO2-Novice</option>
<option value="TO2-Journeyman" title="This is a Journeyman Talent Option for this characters 2nd Discipline." >TO2-Journeyman</option>
<option value="TO2-Warden" title="This is a Warden Talent Option for this characters 2nd Discipline." >TO2-Warden</option>
<option value="TO2-Master" title="This is a Master Talent Option for this characters 2nd Discipline." >TO2-Master</option>
<option value="D3-Novice" title="This is a Novice Discipline Talent for this characters 3rd Discipline.">D3-Novice</option>
<option value="D3-Journeyman" title="This is a Journeyman Discipline Talent for this characters 3rd Discipline." >D3-Journeyman</option>
<option value="D3-Warden" title="This is a Warden Discipline Talent for this characters 3rd Discipline." >D3-Warden</option>
<option value="D3-Master" title="This is a Master Discipline Talent for this characters 3rd Discipline." >D3-Master</option>
<option value="TO3-Novice" title="This is a Novice Talent Option for this characters 3rd Discipline." >TO3-Novice</option>
<option value="TO3-Journeyman" title="This is a Journeyman Talent Option for this characters 3rd Discipline." >TO3-Journeyman</option>
<option value="TO3-Warden" title="This is a Warden Talent Option for this characters 3rd Discipline." >TO3-Warden</option>
<option value="TO3-Master" title="This is a Master Talent Option for this characters 3rd Discipline." >TO3-Master</option>
<option value="D4-Novice" title="This is a Novice Discipline Talent for this characters 4th Discipline.">D4-Novice</option>
<option value="D4-Journeyman" title="This is a Journeyman Discipline Talent for this characters 4th Discipline." >D4-Journeyman</option>
<option value="D4-Warden" title="This is a Warden Discipline Talent for this characters 4th Discipline." >D4-Warden</option>
<option value="D4-Master" title="This is a Master Discipline Talent for this characters 4th Discipline." >D4-Master</option>
<option value="TO4-Novice" title="This is a Novice Talent Option for this characters 4th Discipline." >TO4-Novice</option>
<option value="TO4-Journeyman" title="This is a Journeyman Talent Option for this characters 4th Discipline." >TO4-Journeyman</option>
<option value="TO4-Warden" title="This is a Warden Talent Option for this characters 4th Discipline." >TO4-Warden</option>
<option value="TO4-Master" title="This is a Master Talent Option for this characters 4th Discipline." >TO4-Master</option>
</select></span>
<input class="testQuest" name="attr_T_Type" type="hidden"/>
<span class="nowrap hidden UnhideIfQuest" title="@{repeating_talents_X_T_DP-Req}: Does this Questor Devotion require Dev Points to be spent every time it is used.">
DP-Req: <input name="attr_T_DP-Req" type="checkbox" class="LockIfChecked" value="1">
</span>
<input class="testNone" name="attr_T_Special" value="None" type="hidden"/>
<button class="text-button button-nodice hidden UnhideIfCorruptKarma api" name="roll_T_btnCorruptKarma" type="roll"
value="!Earthdawn~ SetToken: @{target|to have Karma Corrupted|token_id}~ Misc: CorruptKarma: ?{How many karma to corrupt|1}"
title="@{repeating_talents_X_T_btnCorruptKarma} Use this button to 'Corrupt Karma' during the next dice roll. It will transfer some successes from the CK pool to the CK action where it will effect the next rolls that use karma.">Corrupt Karma</button>
<input type="radio" name="attr_T_showDetails" class="show-all" value="1" checked title="Show All Details - All the details are displayed, including fields only used during set-up that are usually not needed during play." /><span class="option">+</span>
<input type="radio" name="attr_T_showDetails" class="show-most" value="2" title="Show Most Details - The details used during play are displayed, but not the fields that are usually needed only during initial setup."/><span class="option">9</span>
<input type="radio" name="attr_T_showDetails" class="hide-all" value="3" title="Hide All Details - Only a single line of the most important information is displayed, all the details are hidden." /><span class="option">-</span>
<div class="sect">
<input class="testModType" name="attr_T_Mod-Type" value="@{Adjust-All-Tests-Total}" type="hidden"/>
<span class="nowrap sect-showMost HideIfNoRoll" title="@{repeating_talents_X_T_Attribute} What attribute is associated with this talent.">Attribute:
<select name="attr_T_Attribute" class="selShort">
<option value="0" selected title="This talent does not have an associated attribute.">None</option>
<option value="(@{Dex-Step}+@{Dex-Adjust}+@{Dex-Mods})" title="Dexterity.">Dex</option>
<option value="(@{Str-Step}+@{Str-Adjust}+@{Str-Mods})" title="Strength.">Str</option>
<option value="(@{Tou-Step}+@{Tou-Adjust}+@{Tou-Mods})" title="Toughness.">Tou</option>
<option value="(@{Per-Step}+@{Per-Adjust}+@{Per-Mods})" title="Perception.">Per</option>
<option value="(@{Wil-Step}+@{Wil-Adjust}+@{Wil-Mods})" title="Willpower.">Wil</option>
<option value="(@{Cha-Step}+@{Cha-Adjust}+@{Cha-Mods})" title="Charisma.">Cha</option>
</select></span>
<span class="nowrap" title="@{repeating_talents_X_T_Rank}: Characters real Rank in this talent.">Base Rank
<input name="attr_T_Rank" type="number" value="0" min="0" class="numShort"></span>
<input class="testZero" name="attr_T_Rank-Mods" value="0" type="hidden"/>
<span class="HideIfSecondaryZero" title="@{repeating_talents_X_T_Rank-Mods}: Modifications to the use of this talent that increases effective rank.">Rnk Mods
<input name="attr_T_Rank-Mods" type="number" value="0" class="numShort"/></span>
<span class="nowrap" title="@{repeating_talents_X_T_Mods}: Modifications to the use of this talent that do NOT increase effective rank.">Stp Mods
<input name="attr_T_Mods" type="number" value="0" class="numShort"></span>
<input class="testZero" name="attr_T_Result-Mods" value="0" type="hidden"/>
<span class="nowrap HideIfSecondaryZero HideIfNoRoll">Rslt Mods
<input name="attr_T_Result-Mods" type="number" value="0" class="numShort" title="@{repeating_talents_X_T_Result-Mods}: Modifications to the use of this talent that are applied AFTER the roll."></span>
<span class="nowrap HideIfSecondaryNoRoll" title="@{repeating_talents_X_T_Mod-Type} What modifiers does this Talent apply.">Modifiers:
<select name="attr_T_Mod-Type" class="txtShort">
<option value="0" title="No modifiers at all.">None</option>
<option value="@{Adjust-All-Tests-Total}" selected title="Modifiers that apply to all Action Tests." >Action Test</option>
<option value="@{Adjust-Effect-Tests-Total}" title="Modifiers that apply to Effects Tests." >Effect Test</option>
<option value="@{Adjust-Attacks-Total}" title="Modifiers that apply to Attacks.">Attack</option>
<option value="@{Adjust-Attacks-Total-CC}" title="Modifiers that apply to Close Combat Attacks.">Attack Close Combat</option>
<option value="@{Adjust-Damage-Total}" title="Modifiers that apply to Damage.">Damage</option>
<option value="@{Adjust-Damage-Total-CC}" title="Modifiers that apply to Close Combat Damage.">Damage Close Combat</option>
<option value="@{Adjust-All-Tests-Total}+(-1*@{IP})" title="All Initiative Penalties apply as modifiers to this test.">Init Penalties</option>
<option value="@{Adjust-All-Tests-Total}+(-1*@{Armor-IP})" title="Initiative Penalties to Armor Only apply as modifiers to this Test.">Armor Init Pen</option>
<option value="(0)" title="This Talent does not have a step or make dice rolls. Pressing the 'Roll' button will however spend strain and load Karma.">No Roll</option>
<!-- Note that when evaluated numerically, (0) == 0. When evaluated as a string they are distinct. The API code makes use of this. -->
</select></span>
<span class="HideIfNoRoll"> <!-- If no roll, nothing inside here displays. -->
<input class="testNone" name="attr_T_Special" value="None" type="hidden"/>
<span class="nowrap HideIfSecondaryNone api" title="@{repeating_talents_X_T_Special} Certain talents or powers require special handling and have been pre-coded.">Special:
<select name="attr_T_Special" class="txtShort">
<option value="None" selected title="No special handling.">None</option>
<option value="Initiative" title="This is an Initiative Replacement Talent (such as Air Dance or Tiger Spring) that should have it's results sent to the turn tracker.">Initiative</option>
<option value="Recovery" title="This is a Recovery Replacement Talent (such as Fireblood) that should have it's results added to current health.">Recovery</option>
<option value=" " ></option>
<option value="" >-- Powers --</option>
<option value="CorruptKarma" title="This is the Corrupt Karma Horror Power. Use this power to make note of how many karma you can corrupt on this target, but use the Token Action associated with the following button to spend these successes.">Corrupt Karma</option>
<option value="CursedLuck" title="This is the Cursed Luck Horror Power. Use of this power will set a value into @{Creature-CursedLuck}, and that number of dice will be 'cursed' for the next roll.">Cursed Luck</option>
</select></span>
<!-- Big hairy formula to find modifiers to the step.
Figure out if Effect Test or Action test.
Note that if Action Test, Defensive Stance and Knocked-down have already been subtracted.
Need to add them in again if these do not affect this talent.
ActnEfct == 1 if Action, == -1 if Effect. == 0 if no Roll.
ceil(@{T_ActnEfct}/2) == 1 if action, otherwise zero.
ceil((@{T_ActnEfct}*-1)/2) == 1 if Effect, otherwise zero.
abs(abs(@{T_ActnEfct})-1) == 1 for 0.
-->
<input name="attr_T_WorkingMods" type="number" disabled class="hidden"
value="(((@{T_NotMoveBased}-1)*@{condition-ImpairedMovement})+((@{T_NotVisionBased}-1)*@{condition-Darkness})+(ceil(@{T_ActnEfct}/2)*((@{T_Defensive}*@{combatOption-DefensiveStance}*3)+(@{T_Resistance}*@{condition-KnockedDown}*3))))"
title="@{repeating_talents_X_T_WorkingMods}: Hidden variable to calculate the modifications that affect this Talent."/>
<span class="sect-showMost api"><input class="hidden testChecked" name="attr_T_ActnEfct" type="checkbox" checked value="1"/>
<span class="nowrap HideIfNotChecked" title="@{repeating_talents_X_T_Defensive} Is this an Active Defense, such that it usually DOES NOT take a penalty for being in Defensive Stance?"> Def
<input name="attr_T_Defensive" type="checkbox" value="1"/></span>
<span class="nowrap HideIfNotChecked" title="@{repeating_talents_X_T_Resistance} Is this a Resistance Test, such that it usually DOES NOT take a penalty from being Knocked Down?"> Res
<input name="attr_T_Resistance" type="checkbox" value="1"/></span>
</span>
<span class="nowrap sect-showMost api" title="@{repeating_talents_X_T_NotMoveBased} Is this a test NOT based upon movement, such that it usually DOES NOT take a penalty in conditions that impair movement?">Move
<input name="attr_T_NotMoveBased" type="checkbox" value="1"/></span>
<span class="nowrap sect-showMost api" title="@{repeating_talents_X_T_NotVisionBased} Is this a test NOT based upon vision, such that it usually DOES NOT take a penalty in conditions of impaired visibility?"> Vis
<input name="attr_T_NotVisionBased" type="checkbox" value="1"/></span>
<span class="nowrap NoAPI" title="@{repeating_talents_X_T_Target-NoAPI} What does this talent target.">Target #
<select name="attr_T_Target-NoAPI" class="selShort">
<option value=" " selected title="This Talent does not target a defense.">None</option>
<option value="{{target_name=@{target|Target|token_name}}} {{target_number=[[@{target|Target|PD}]]}} {{target_defense=PD}}" title="This Talent targets Physical Defense." >PD</option>
<option value="{{target_name=@{target|Target|token_name}}} {{target_number=[[@{target|Target|MD}]]}} {{target_defense=MD}}" title="This Talent targets Mystic Defense.">MD</option>
<option value="{{target_name=@{target|Target|token_name}}} {{target_number=[[@{target|Target|SD}]]}} {{target_defense=SD}}" title="This Talent targets Social Defense.">SD</option>
<option value="{{target_number=?{Target Number|0}}}" title="Ask for target number when roll is made." >Ask</option>
</select></span>
<input class="hidden testCloseChecked" name="attr_T_ModType-ArmorType" type="checkbox" value="1"/>
<span class="nowrap api HideIfCloseChecked" title="@{repeating_talents_X_T_Target} How is the Target Number arrived at? What attribute is targeted and how?">Target #:
<select name="attr_T_Target" class="selLong">
<option value="None" selected title="This Talent does not have a target number.">None</option>
<option value="PD1: @{target|Target|token_id}" title="This Talent targets Physical Defense. There is always exactly one Target." >PD-1</option>
<option value="MD1: @{target|Target|token_id}" title="This Talent targets Mystic Defense. There is always exactly one Target.">MD-1</option>
<option value="SD1: @{target|Target|token_id}" title="This Talent targets Social Defense. There is always exactly one Target.">SD-1</option>
<option value="Ask: ?{Target Number|0}" title="Ask for target number when roll is made." >Ask</option>
<option value="Ask: PD: ?{Target Number, maybe relative to PD|0}" title="Ask for target number that may be relative to this characters PD when roll is made. IE: +3 would be this characters PD +3" >Ask PD</option>
<option value="Ask: MD: ?{Target Number, maybe relative to MD|0}" title="Ask for target number that may be relative to this characters MD when roll is made. IE: +3 would be this characters MD +3" >Ask MD</option>
<option value="Ask: SD: ?{Target Number, maybe relative to SD|0}" title="Ask for target number that may be relative to this characters SD when roll is made. IE: +3 would be this characters SD +3" >Ask SD</option>
<option value="PD" title="This Talent targets Physical Defense. There could be a variable number of Targets." >PD-v</option>
<option value="MD" title="This Talent targets Mystic Defense. There could be a variable number of Targets.">MD-v</option>
<option value="SD" title="This Talent targets Social Defense. There could be a variable number of Targets.">SD-v</option>
<option value="PDh" title="This Talent targets highest Physical Defense among all targets." >hPD</option>
<option value="MDh" title="This Talent targets highest Mystic Defense among all targets.">hMD</option>
<option value="SDh" title="This Talent targets highest Social Defense among all targets.">hSD</option>
<option value="PDhp1p" title="This Talent targets highest Physical Defense, +1 for each additional target." >hPD+1p</option>
<option value="MDhp1p" title="This Talent targets highest Mystic Defense, +1 for each additional target.">hMD+1p</option>
<option value="SDhp1p" title="This Talent targets highest Social Defense, +1 for each additional target.">hSD+1p</option>
<option value="Riposte: @{target|Counter-attack Target|token_id}: PD: ?{Target Number, maybe relative to PD|0}"
title="Ask the user to click the Token that is being counter-attacked. Then ask for target number that may be relative to this characters PD when roll is made. IE: +3 would be this characters PD +3." >Riposte</option>
<option value="PD-Nat" title="This Talent targets Natural Physical Defense (Does not include bonuses provided by Spells, Talents, Woven Threads, Etc.) There could be a variable number of Targets." >PD-Nat</option>
<option value="MD-Nat" title="This Talent targets Natural Mystic Defense (Does not include bonuses provided by Spells, Talents, Woven Threads, Etc.). There could be a variable number of Targets.">MD-Nat</option>
<option value="SD-Nat" title="This Talent targets Natural Social Defense (Does not include bonuses provided by Spells, Talents, Woven Threads, Etc.). There could be a variable number of Targets.">SD-Nat</option>
<option value="2" title="The target number for this talent is 2." >2</option>
<option value="5" title="The target number for this talent is 5." >5</option>
<option value="6" title="The target number for this talent is 6." >6</option>
</select></span>
<span class="nowrap HideIfNotCloseChecked" title="@{repeating_talents_X_T_Armortype} What Armor would apply to resisting this Damage.">Armor:
<select name="attr_T_ArmorType" class="selShort">
<option value="N/A" selected>N/A &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Not Applicable as this Talent does not do damage</option>
<option value="PA" >PA &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Physical Armor protects against this Damage</option>
<option value="MA" >MA &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Mystic Armor protects against this Damage</option>
<option value="PA-Nat" >PA-Nat &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Only Natural Physical Armor protects against this Damage</option>
<option value="MA-Nat" >MA-Nat &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Only Natural Mystic Armor protects against this Damage</option>
<option value="None" >None &nbsp;&nbsp;&nbsp; No Armor protects against this Damage</option>
</select></span>
<span class="nowrap sect-showMost api" title="@{repeating_talents_X_T_sayTotalSuccess} If this is checked, it says Total Successes, otherwise it says Extra Successes.">Say Total
<input name="attr_T_sayTotalSuccess" type="checkbox" value="1"/></span>
<span class="nowrap api" title="@{repeating_talents_X_T_Karma-Control} Under what circumstances should we add karma to Talent tests?">Karma:
<select name="attr_T_Karma-Control" class="selShort">
<option value="-1" title="Never use karma on tests for this Talent. This overrides the 'Add Karma to rolls' control."> Never</option>
<option value="0" selected title="Look at the 'Add Karma to rolls' control to determine if should use Karma on tests for this Talent.">Sometimes </option>
<option value="1" title="If there is unspent karma, always use karma on tests for this Talent. This overrides the 'Add Karma to rolls' control.">Always </option>
<option value="2" title="If there is unspent karma, always use 2 karma on tests for this Talent. This overrides the 'Add Karma to rolls' control.">2 Always</option>
<option value="3" title="If there is unspent karma, always use 3 karma on tests for this Talent. This overrides the 'Add Karma to rolls' control.">3 Always</option>
<option value="K-ask: ?{How many Karma to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many karma should be spent."> Ask</option>
</select></span>
<span class="nowrap HideIfRepSpecialChecked api" title="@{repeating_talents_X_T_DP-Control} Under what circumstances should we add Devotion Points to Talent tests?">DP:
<select name="attr_T_DP-Control" class="selShort">
<option value="-1" selected title="Never use Devotion Points on tests for this Talent. This overrides the 'Use Dev Pnts in rolls' control."> Never</option>
<option value="0" title="Look at the 'Use Dev Pnts in rolls' control to determine if should use Devotion Points in tests for this Talent.">Sometimes </option>
<option value="1" title="If there are unspent Devotion Points, always use DP in tests for this Talent. This overrides the 'Use Dev Pnts rolls' control.">Always </option>
<option value="2" title="If there are unspent Devotion Points, always use 2 DP in tests for this Talent. This overrides the 'Use Dev Pnts in rolls' control.">2 Always</option>
<option value="3" title="If there are unspent Devotion Points, always use 3 DP in tests for this Talent. This overrides the 'Use Dev Pnts in rolls' control.">3 Always</option>
<option value="DP-ask: ?{How many Devotion Points to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many Devotion Points should be spent."> Ask</option>
</select></span>
<span class="nowrap sect-showMost" title="@{repeating_talents_X_T_RollType} Rolls should be made: public, gm, or hidden?">Roll Type:
<select name="attr_T_RollType" class="selShort api">
<option value="@{RollType}" selected title="Default as selected on the Adjustments tab Advanced section"> Default</option>
<option value=" " title="Public"> Public</option>
<option value="pgm" title="GM"> Player&GM</option>
<option value="/w gm" title="Hidden"> GM Only</option>
<option value="RollType: ?{Who should be able to see the results|Public, |GM Only,/w gm}"
title="At runtime when the button is pressed, have a pop-up ask who should be able to see the results."> Ask</option>
</select>
<select name="attr_T_RollType-NoAPI" class="selShort NoAPI">
<option value="@{RollType-NoAPI}" selected title="Default as selected on the Adjustments tab Advanced section"> Default</option>
<option value=" " selected title="Public"> Public</option>
<option value="/w gm" title="Hidden"> GM Only</option>
<option value="?{Who should be able to see the results|Public, |GM Only,/w gm}"
title="At runtime when the button is pressed, have a pop-up ask who should be able to see the results."> Ask</option>
</select>
</span>
<button class="text-button button-nodice sect-showMost api" name="roll_T_btnSetFX" type="roll"
value="!Earthdawn~ charID: @{character_id}~ FXset: T: @{T_RowID}: ?{Set or Clear Special Effects|Set,Set: ?{Every time Talent is attempted or only when succeeds&amp;#124;Attempt&amp;#124;Success&amp;#125;: ?{Effect Name&amp;#124;Beam&amp;#124;Bomb&amp;#124;Breath&amp;#124;Bubbling&amp;#124;Burn&amp;#124;Burst&amp;#124;Explode&amp;#124;Glow&amp;#124;Missile&amp;#124;Nova&amp;#124;Splatter&amp;#124;Other/Custom&amp;#44;Custom ?{Name of Custom FX&amp;#125;&amp;#125;: ?{Effect Color (this is ignored for custom effects)&amp;#124;Acid&amp;#124;Blood&amp;#124;Charm&amp;#124;Death&amp;#124;Fire&amp;#124;Frost&amp;#124;Holy&amp;#124;Magic&amp;#124;Slime&amp;#124;Smoke&amp;#124;Water&amp;#125;: ?{Where does the effect appear&amp;#124;Caster Only&amp;#44;CO&amp;#124;First Target Only&amp;#44;FTO&amp;#124;All Targets&amp;#44;AT&amp;#124;Caster to 1st Target Only&amp;#44;CtFTO&amp;#124;Caster to all Targets&amp;#44;CtAT&amp;#125;|Clear}"
title="@{repeating_talents_X_T_btnSetFX} Set the Special Effects for this Talent.">SFX</button>
<label class="sect-showMost api" title="@{repeating_talents_X_T_FX}: Special Effects command. FX command to be performed when this talent is used.">
<span class="autoexpand-wrap">
<input name="attr_T_FX" type="text" readonly>
<span name="attr_T_FX" class="autoexpand"></span>
</span></label>
</span>
<label class="sect-showMost" title="@{repeating_talents_X_T_SuccessText}: Text to display if the test succeeds. Can optionally be used to remind people how the talent works.">
Disp Text:&nbsp;<span class="autoexpand-wrap">
<input name="attr_T_SuccessText" type="text">
<span name="attr_T_SuccessText" class="autoexpand"></span>
</span></label>
<span class="nowrap sect-showMost" title="@{repeating_talents_X_T_CombatSlot}: Should this Talent be summarized on the combat tab and placed in a Token Action?">
<span class="api">Tkn Actn</span><span class="NoAPI">Combat Tab</span>
<input name="attr_T_CombatSlot" type="checkbox" value="1" ></span>
<br><span class="hideIfNotPlaceholder" title="@{T_textImport}: Talent Text import: This only shows up if Name is empty.">
If you have a PDF copy of the book, you can copy an entire Talent or Questor Devotion description (starting with the name,
and including everything) and paste it into this tiny text box. It will be parsed and whatever fields
can be set based upon the text will be. You will still need to manually set some of the fields, most importaintly "Modifiers".
<textarea name="attr_T_textImport" style="height: 28px; width: 8em; margin-bottom: 0em;"></textarea>
<br></span>
<textarea name="attr_T_Notes" style="height: 100px; margin-bottom: 4px;" title="@{repeating_talents_X_T_Notes} Description of Talent and how it works." placeholder="Description of the Talent and how it works."></textarea>
</div>
</fieldset>
</div> <!-- End of Section Talents -->
<div class="section section-knacks">
<span class="info"
title="Instructions: In addition to recording Talent Knacks, this tab should be used for any power that can best be represented as a Knack. This tab allows links to Talents, Weapons, Attributes, and other Knacks, so that when the linked Rank changes, the Knack also improves. You can make 'Dummy' talents, double talents (for example link both Air Dance and Tiger Spring into a combination), etc. See 'Help Wiki' (very Top Right for button) for examples of using Knacks.">i</span>
<!--
The Knacks tab is useful for recording 'Dummy' talents, double talents, etc. See 'Help Wiki' (very Top Right for button) for examples of using Knacks.<br>
-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Step&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Knack Name&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Action&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Strain&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Origin&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Links&nbsp;</b>
<input class="testRepSpecialChecked hidden" name="attr_Questor" type="checkbox" value="None" />
<fieldset class="repeating_knacks">
<span class="hidden"><input name="attr_NAC_RowID" type="text"> <input name="attr_NAC_Target-TA" type="text"></span>
<button class="text-button api" name="roll_NAC_Roll-fromSheet" type="roll"
value="!Earthdawn~ charID: @{character_id}~ Target: @{NAC_Target}~ @{NAC_RollType}~ @{NAC_Karma-Control}~ @{NAC_DP-Control}~ foreach:sct:ust:c~ Action: NAC: @{NAC_RowID}: ?{Modification|0}"
title="%{selected|Roll_NAC_Roll-fromSheet} Roll this Knack Test.">Roll</button>
<button class="hidden" name="roll_NAC_Roll" type="roll"
value="!Earthdawn~ charID: @{character_id}~ Target: @{NAC_Target-TA}~ @{NAC_RollType}~ @{NAC_Karma-Control}~ @{NAC_DP-Control}~ foreach:sct:ust:c~ Action: NAC: @{NAC_RowID}: ?{Modification|0}"
title="%{selected|Roll_NAC_Roll} Roll this Knack Test. This version uses NAC_Target-TA instead of NAC_Target. on ?D1- target type it will try to get a Token ID.">Roll</button>
<span class="nowrap"><input name="attr_NAC_Step" type="number" disabled class="numShort"
value="(@{NAC_Mods}+@{NAC_Attribute}+@{NAC_Mod-Type}+@{NAC_WorkingMods}+(@{NAC_Linked}))"
title="@{repeating_knacks_X_NAC_Step}: Final action Step for this Knack."></span>
<input type="checkbox" class="testLocked hidden" name="attr_NAC_showDetails" value="3"/>
<input name="attr_NAC_Name" type="text" class="nowrap LockIfChecked txtMed testPlaceholder" placeholder="Name"
title="@{repeating_talents_X_NAC_Name}: Name of Knack.">&nbsp;&nbsp;
<span class="nowrap" title="@{repeating_knacks_X_NAC_Action} What type of Action does this Knack require.">
<select name="attr_NAC_Action" class="LockIfChecked txtShort">
<option value="NA" title="There is no action directly associated with this Knack." >NA</option>
<option value="Standard" selected title="Standard action takes most of the characters turn.">Standard</option>
<option value="Standard (Special)" title="This is usually a Standard Action, but is sometimes a simple action.">Standard (Special)</option>
<option value="Simple" title="Simple actions are often independent of other actions but can occur at the same time as other actions." >Simple</option>
<option value="Free" title="Free actions are often a part of a characters other general or defensive actions.">Free</option>
<option value="Sustained" title="Sustained actions take more than one round to accomplish.">Sustained</option>
</select></span>
<span class="nowrap" title="@{repeating_knacks_X_NAC_Strain}: Amount of Strain this Knack costs.">
<input name="attr_NAC_Strain" type="number" class="LockIfChecked numShort" value="0" min="0">
</span>
<span class="nowrap" title="@{repeating_knacks_X_NAC_Type} How does the Adept know this Knack.">
<select name="attr_NAC_Type" class="LockIfChecked selLong">
<option value="Knack" selected title="This is a standard Talent Knack.">Knack</option>
<option value="Creature" title="This is not really a Knack, it is really a Creature/Horror/Spirit/Dragon, Etc. Power.">Creature Power</option>
<option value="Item" title="This Knack is granted by an Item such as a Thread Item.">Item</option>
<option value="Dummy" title="This is not really a Knack in and of itself, it is a placeholder for a Knack-like effect or a combination of multiple talents. For example a warrior with both air dance and tiger spring might create a dummy entry for using both talents at the same time.">Dummy</option>
<option value="Special" title="This Knack is available due to some special reason.">Special</option>
</select></span>
<input class="testNone" name="attr_NAC_Special" value="None" type="hidden"/>
<button class="text-button button-nodice hidden UnhideIfCorruptKarma" name="roll_NAC_btnCorruptKarma" type="roll"
value="!Earthdawn~ SetToken: @{target|to have Karma Corrupted|token_id}~ Misc: CorruptKarma: ?{How many karma to corrupt|1}"
title="@{repeating_knacks_X_NAC_btnCorruptKarma} Use this button to 'Corrupt Karma' during the next dice roll. It will transfer some successes from the CK pool to the CK action where it will effect the next rolls that use karma.">Corrupt Karma</button>
<label title="@{repeating_knacks_X_NAC_LinkDisplay}: The names of any Talents, Knacks, or Weapons that are linked to this Knack.">
<span class="autoexpand-wrap">
<input name="attr_NAC_LinkDisplay" type="text" readonly>
<span name="attr_NAC_LinkDisplay" class="autoexpand"></span>
</span></label>
<input name="attr_NAC_Linked" class="hidden" type="text" value="0">
<input type="radio" name="attr_NAC_showDetails" class="show-all" value="1" checked title="Show All Details - All the details are displayed, including fields only used during set-up that are usually not needed during play." /><span class="option">+</span>
<input type="radio" name="attr_NAC_showDetails" class="show-most" value="2" title="Show Most Details - The details used during play are displayed, but not the fields that are usually needed only during initial setup."/><span class="option">9</span>
<input type="radio" name="attr_NAC_showDetails" class="hide-all" value="3" title="Hide All Details - Only a single line of the most important information is displayed, all the details are hidden." /><span class="option">-</span>
<div class="sect">
<input class="testModType" name="attr_NAC_Mod-Type" value="@{Adjust-All-Tests-Total}" type="hidden"/>
<span class="nowrap sect-showMost HideIfNoRoll" title="@{repeating_knacks_X_NAC_Attribute} What attribute is associated with this Knack.">Attribute:
<select name="attr_NAC_Attribute" class="selShort">
<option value="0" selected title="This Knack does not have an associated attribute.">None</option>
<option value="(@{Dex-Step}+@{Dex-Adjust}+@{Dex-Mods})" title="Dexterity.">Dex</option>
<option value="(@{Str-Step}+@{Str-Adjust}+@{Str-Mods})" title="Strength.">Str</option>
<option value="(@{Tou-Step}+@{Tou-Adjust}+@{Tou-Mods})" title="Toughness.">Tou</option>
<option value="(@{Per-Step}+@{Per-Adjust}+@{Per-Mods})" title="Perception.">Per</option>
<option value="(@{Wil-Step}+@{Wil-Adjust}+@{Wil-Mods})" title="Willpower.">Wil</option>
<option value="(@{Cha-Step}+@{Cha-Adjust}+@{Cha-Mods})" title="Charisma.">Cha</option>
</select></span>
<span class="nowrap" title="@{repeating_knacks_X_NAC_Mods}: Modifications to the step rolled that may differentiate this Knack from the linked Talents.">Stp Mods
<input name="attr_NAC_Mods" type="number" value="0" class="numShort"></span>
<input class="testZero" name="attr_NAC_Result-Mods" value="0" type="hidden"/>
<span class="nowrap HideIfSecondaryZero HideIfNoRoll">Rslt Mods
<input name="attr_NAC_Result-Mods" type="number" value="0" class="numShort" title="@{repeating_knacks_X_NAC_Result-Mods}: Modifications to the use of this Knack that are applied AFTER the roll."></span>
<span class="nowrap HideIfSecondaryNoRoll" title="@{repeating_knacks_X_NAC_Mod-Type} What modifiers does this Knack apply.">Modifiers:
<select name="attr_NAC_Mod-Type" class="txtShort">
<option value="0" title="No modifiers at all.">None</option>
<option value="@{Adjust-All-Tests-Total}" selected title="Modifiers that apply to all Action Tests." >Action Test</option>
<option value="@{Adjust-Effect-Tests-Total}" title="Modifiers that apply to Effects Tests." >Effect Test</option>
<option value="@{Adjust-Attacks-Total}" title="Modifiers that apply to Attacks.">Attack</option>
<option value="@{Adjust-Attacks-Total-CC}" title="Modifiers that apply to Close Combat Attacks.">Attack Close Combat</option>
<option value="@{Adjust-Damage-Total}" title="Modifiers that apply to Damage.">Damage</option>
<option value="@{Adjust-Damage-Total-CC}" title="Modifiers that apply to Close Combat Damage.">Damage Close Combat</option>
<option value="@{Adjust-All-Tests-Total}+(-1*@{IP})" title="All Initiative Penalties apply as modifiers to this test.">Init Penalties</option>
<option value="@{Adjust-All-Tests-Total}+(-1*@{Armor-IP})" title="Initiative Penalties to Armor Only apply as modifiers to this Test.">Armor Init Pen</option>
<option value="(0)" title="This Knack does not have a step or make dice rolls. Pressing the 'Roll' button will however spend strain and load Karma.">No Roll</option>
<!-- Note that when evaluated numerically, (0) == 0. When evaluated as a string they are distinct. The code makes use of this. -->
</select></span>
<span class="HideIfNoRoll"> <!-- If no roll, nothing inside here displays. -->
<input class="testNone" name="attr_NAC_Special" value="None" type="hidden"/>
<span class="nowrap HideIfSecondaryNone" title="@{repeating_knacks_X_NAC_Special} Certain talents or powers require special handling and have been pre-coded.">Special:
<select name="attr_NAC_Special" class="selShort">
<option value="None" selected title="No modifiers at all.">None</option>
<option value="Initiative" title="This is an Initiative Replacement Knack (such as Air Dance or Tiger Spring) that should have it's results sent to the turn tracker.">Initiative</option>
<option value="Recovery" title="This is a Recovery Replacement Knack (such as Fireblood) that should have it's results added to current health.">Recovery</option>
<option value=" " ></option>
<option value="" >-- Powers --</option>
<option value="CorruptKarma" title="This is the Corrupt Karma Horror Power. Use this power to make note of how many karma you can corrupt on this target, but use the Token Action associated with the following button to spend these successes.">Corrupt Karma</option>
<option value="CursedLuck" title="This is the Cursed Luck Horror Power. Use of this power will set a value into @{Creature-CursedLuck}, and that number of dice will be 'cursed' for the next roll.">Cursed Luck</option>
</select></span>
<!-- Big hairy formula to find modifiers to the step.
Figure out if Effect Test or Action test.
Note that if Action Test, Defensive Stance and Knocked-down have already been subtracted.
Need to add them in again if these do not affect this talent.
ActnEfct == 1 if Action, == -1 if Effect. == 0 if no Roll.
ceil(@{NAC_ActnEfct}/2) == 1 if action, otherwise zero.
ceil((@{NAC_ActnEfct}*-1)/2) == 1 if Effect, otherwise zero.
abs(abs(@{NAC_ActnEfct})-1) == 1 for 0.
-->
<input name="attr_NAC_WorkingMods" type="number" disabled class="hidden"
value="(((@{NAC_NotMoveBased}-1)*@{condition-ImpairedMovement})+((@{NAC_NotVisionBased}-1)*@{condition-Darkness})+(ceil(@{NAC_ActnEfct}/2)*((@{NAC_Defensive}*@{combatOption-DefensiveStance}*3)+(@{NAC_Resistance}*@{condition-KnockedDown}*3))))"
title="@{repeating_knacks_X_NAC_WorkingMods}: Hidden variable to calculate the modifications that affect this Knack."/>
<span class="sect-showMost "><input class="hidden testChecked" name="attr_NAC_ActnEfct" type="checkbox" checked value="1"/>
<span class="nowrap HideIfNotChecked" title="@{repeating_knacks_X_NAC_Defensive} Is this an Active Defense, such that it usually DOES NOT take a penalty for being in Defensive Stance?"> Def
<input name="attr_NAC_Defensive" type="checkbox" value="1"/></span>
<span class="nowrap HideIfNotChecked" title="@{repeating_knacks_X_NAC_Resistance} Is this a Resistance Test, such that it usually DOES NOT take a penalty from being Knocked Down?"> Res
<input name="attr_NAC_Resistance" type="checkbox" value="1"/></span>
</span>
<span class="nowrap sect-showMost" title="@{repeating_knacks_X_NAC_NotMoveBased} Is this a test NOT based upon movement, such that it usually DOES NOT take a penalty in conditions that impair movement?">Move
<input name="attr_NAC_NotMoveBased" type="checkbox" value="1"/></span>
<span class="nowrap sect-showMost" title="@{repeating_knacks_X_NAC_NotVisionBased} Is this a test NOT based upon vision, such that it usually DOES NOT take a penalty in conditions of impaired visibility?"> Vis
<input name="attr_NAC_NotVisionBased" type="checkbox" value="1"/></span>
<span class="nowrap NoAPI" title="@{repeating_knacks_X_NAC_Target-NoAPI} What does this knack target.">Target:
<select name="attr_NAC_Target-NoAPI" class="selShort">
<option value=" " selected title="This Knack does not target a defense.">None</option>
<option value="{{target_name=@{target|Target|token_name}}} {{target_number=[[@{target|Target|PD}]]}} {{target_defense=PD}}" title="This Talent targets Physical Defense." >PD</option>
<option value="{{target_name=@{target|Target|token_name}}} {{target_number=[[@{target|Target|MD}]]}} {{target_defense=MD}}" title="This Talent targets Mystic Defense.">MD</option>
<option value="{{target_name=@{target|Target|token_name}}} {{target_number=[[@{target|Target|SD}]]}} {{target_defense=SD}}" title="This Talent targets Social Defense.">SD</option>
<option value="{{target_number=?{Target Number|0}}}" title="Ask for target number when roll is made." >Ask</option>
</select></span>
<input class="hidden testCloseChecked" name="attr_NAC_ModType-ArmorType" type="checkbox" value="1"/>
<span class="nowrap HideIfCloseChecked" title="@{repeating_knacks_X_NAC_Target} How is the Target Number arrived at? What attribute is targeted and how?">Target #:
<select name="attr_NAC_Target" class="selLong">
<option value="None" selected title="This Knack does not target a defense.">None</option>
<option value="PD1: @{target|Target|token_id}" title="This Knack targets Physical Defense. There is always exactly one Target." >PD-1</option>
<option value="MD1: @{target|Target|token_id}" title="This Knack targets Mystic Defense. There is always exactly one Target.">MD-1</option>
<option value="SD1: @{target|Target|token_id}" title="This Knack targets Social Defense. There is always exactly one Target.">SD-1</option>
<option value="Ask: ?{Target Number|0}" title="Ask for target number when roll is made." >Ask</option>
<option value="Ask: PD: ?{Target Number, maybe relative to PD|0}" title="Ask for target number that may be relative to this characters PD when roll is made. IE: +3 would be this characters PD +3" >Ask PD</option>
<option value="Ask: MD: ?{Target Number, maybe relative to MD|0}" title="Ask for target number that may be relative to this characters MD when roll is made. IE: +3 would be this characters MD +3" >Ask MD</option>
<option value="Ask: SD: ?{Target Number, maybe relative to SD|0}" title="Ask for target number that may be relative to this characters SD when roll is made. IE: +3 would be this characters SD +3" >Ask SD</option>
<option value="PD" title="This Knack targets Physical Defense. There could be a variable number of Targets." >PD-v</option>
<option value="MD" title="This Knack targets Mystic Defense. There could be a variable number of Targets.">MD-v</option>
<option value="SD" title="This Knack targets Social Defense. There could be a variable number of Targets.">SD-v</option>
<option value="PDh" title="This Knack targets highest Physical Defense among all targets." >hPD</option>
<option value="MDh" title="This Knack targets highest Mystic Defense among all targets.">hMD</option>
<option value="SDh" title="This Knack targets highest Social Defense among all targets.">hSD</option>
<option value="PDhp1p" title="This Knack targets highest Physical Defense, +1 for each additional target." >hPD+1p</option>
<option value="MDhp1p" title="This Knack targets highest Mystic Defense, +1 for each additional target.">hMD+1p</option>
<option value="SDhp1p" title="This Knack targets highest Social Defense, +1 for each additional target.">hSD+1p</option>
<option value="Riposte: @{target|Counter-attack Target|token_id}: PD: ?{Target Number, maybe relative to PD|0}"
title="Ask the user to click the Token that is being counter-attacked. Then ask for target number that may be relative to this characters PD when roll is made. IE: +3 would be this characters PD +3." >Riposte</option>
<option value="PD-Nat" title="This Knack targets Natural Physical Defense (Does not include bonuses provided by Spells, Talents, Woven Threads, Etc.) There could be a variable number of Targets." >PD-Nat</option>
<option value="MD-Nat" title="This Knack targets Natural Mystic Defense (Does not include bonuses provided by Spells, Talents, Woven Threads, Etc.). There could be a variable number of Targets.">MD-Nat</option>
<option value="SD-Nat" title="This Knack targets Natural Social Defense (Does not include bonuses provided by Spells, Talents, Woven Threads, Etc.). There could be a variable number of Targets.">SD-Nat</option>
<option value="2" title="The target number for this Knack is 2." >2</option>
<option value="5" title="The target number for this Knack is 5." >5</option>
<option value="6" title="The target number for this Knack is 6." >6</option>
</select></span>
<span class="nowrap HideIfNotCloseChecked" title="@{repeating_knacks_X_NAC_Armortype} What Armor would apply to resisting this Damage.">Armor:
<select name="attr_NAC_ArmorType" class="selShort">
<option value="N/A" selected>N/A &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Not Applicable as this Knack does not do damage</option>
<option value="PA" >PA &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Physical Armor protects against this Damage</option>
<option value="MA" >MA &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Mystic Armor protects against this Damage</option>
<option value="PA-Nat" >PA-Nat &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Only Natural Physical Armor protects against this Damage</option>
<option value="MA-Nat" >MA-Nat &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Only Natural Mystic Armor protects against this Damage</option>
<option value="None" >None &nbsp;&nbsp;&nbsp; No Armor protects against this Damage</option>
</select></span>
<span class="nowrap sect-showMost api" title="@{repeating_knacks_X_NAC_sayTotalSuccess} If this is checked, it says Total Successes, otherwise it says Extra Successes.">Say Total
<input name="attr_NAC_sayTotalSuccess" type="checkbox" value="1"/></span>
<span class="nowrap" title="@{repeating_knacks_X_NAC_Karma-Control} Under what circumstances should we add karma to Knack tests?">Karma:
<select name="attr_NAC_Karma-Control" class="selShort">
<option value="-1" title="Never use karma on tests for this Knack. This overrides the 'Add Karma to rolls' control."> Never</option>
<option value="0" selected title="Look at the 'Add Karma to rolls' control to determine if should use Karma on tests for this Knack.">Sometimes </option>
<option value="1" title="If there is unspent karma, always use karma on tests for this Knack. This overrides the 'Add Karma to rolls' control.">Always </option>
<option value="2" title="If there is unspent karma, always use 2 karma on tests for this Knack. This overrides the 'Add Karma to rolls' control.">2 Always</option>
<option value="3" title="If there is unspent karma, always use 3 karma on tests for this Knack. This overrides the 'Add Karma to rolls' control.">3 Always</option>
<option value="K-ask: ?{How many Karma to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many karma should be spent."> Ask</option>
</select></span>
<span class="nowrap HideIfRepSpecialChecked" title="@{repeating_knacks_X_NAC_DP-Control} Under what circumstances should we add Devotion Points to Knack tests?">DP:
<select name="attr_NAC_DP-Control" class="selShort">
<option value="-1" selected title="Never use Devotion Points on tests for this Knack. This overrides the 'Use Dev Pnts in rolls' control."> Never</option>
<option value="0" title="Look at the 'Use Dev Pnts in rolls' control to determine if should use Devotion Points in tests for this Knack.">Sometimes </option>
<option value="1" title="If there are unspent Devotion Points, always use DP in tests for this Knack. This overrides the 'Use Dev Pnts rolls' control.">Always </option>
<option value="2" title="If there are unspent Devotion Points, always use 2 DP in tests for this Knack. This overrides the 'Use Dev Pnts in rolls' control.">2 Always</option>
<option value="3" title="If there are unspent Devotion Points, always use 3 DP in tests for this Knack. This overrides the 'Use Dev Pnts in rolls' control.">3 Always</option>
<option value="DP-ask: ?{How many Devotion Points to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many Devotion Points should be spent."> Ask</option>
</select></span>
</span>
<label title="@{repeating_knacks_X_NAC_BaseTalent}: Name of Base Talent this is a Knack of. For information only.">
Base Talent:&nbsp;<span class="autoexpand-wrap">
<input name="attr_NAC_BaseTalent" type="text">
<span name="attr_NAC_BaseTalent" class="autoexpand"></span>
</span></label>
<span class="nowrap sect-showMost" title="@{repeating_knacks_X_NAC_Requirements}: Rank Base Talent must be in order to learn this Knack.">Requirements Rank:
<input name="attr_NAC_Requirements" type="number" value="0" class="numShort"></span>
<label class="sect-showMost" title="@{repeating_knacks_X_NAC_Restrictions}: Any restrictions that need to be fulfilled in order to learn this Knack. For information only.">
Restrictions:&nbsp;<span class="autoexpand-wrap">
<input name="attr_NAC_Restrictions" type="text">
<span name="attr_NAC_Restrictions" class="autoexpand"></span>
</span></label>
<span class="HideIfNoRoll"> <!-- If no roll, nothing inside here displays. -->
<span class="nowrap sect-showMost" title="@{repeating_knacks_X_NAC_RollType} Rolls should be made: public, gm, or hidden?">Roll Type:
<select name="attr_NAC_RollType" class="selShort api">
<option value="@{RollType}" selected title="Default as selected on the Adjustments tab Advanced section"> Default</option>
<option value=" " title="Public"> Public</option>
<option value="pgm" title="GM"> Player&GM</option>
<option value="/w gm" title="Hidden"> GM Only</option>
<option value="RollType: ?{Who should be able to see the results|Public, |GM Only,/w gm}"
title="At runtime when the button is pressed, have a pop-up ask who should be able to see the results."> Ask</option>
</select>
<select name="attr_NAC_RollType-NoAPI" class="selShort NoAPI">
<option value="@{RollType-NoAPI}" selected title="Default as selected on the Adjustments tab Advanced section"> Default</option>
<option value=" " selected title="Public"> Public</option>
<option value="/w gm" title="Hidden"> GM Only</option>
<option value="?{Who should be able to see the results|Public, |GM Only,/w gm}"
title="At runtime when the button is pressed, have a pop-up ask who should be able to see the results."> Ask</option>
</select>
</span>
<label class="sect-showMost" title="@{repeating_knacks_X_NAC_FX}: Special Effects command. FX command to be performed when this Knack is used.">
SFX: &nbsp;<span class="autoexpand-wrap">
<input name="attr_NAC_FX" type="text" readonly>
<span name="attr_NAC_FX" class="autoexpand"></span>
</span></label>
<button class="text-button button-nodice sect-showMost api" name="roll_NAC_btnDoStuff" type="roll"
value="!Earthdawn~ charID: @{character_id}~ ?{Link or Special Effects|Link,Chatmenu: LinkNAC: @{NAC_RowID}|FX Set,FXset: NAC: @{NAC_RowID}: Set: ?{Every time Knack is attempted or only when succeeds&amp;#124;Attempt&amp;#124;Success&amp;#125;: ?{Effect Name&amp;#124;Beam&amp;#124;Bomb&amp;#124;Breath&amp;#124;Bubbling&amp;#124;Burn&amp;#124;Burst&amp;#124;Explode&amp;#124;Glow&amp;#124;Missile&amp;#124;Nova&amp;#124;Splatter&amp;#124;Other/Custom&amp;#44;Custom ?{Name of Custom FX&amp;#125;&amp;#125;: ?{Effect Color (this is ignored for custom effects)&amp;#124;Acid&amp;#124;Blood&amp;#124;Charm&amp;#124;Death&amp;#124;Fire&amp;#124;Frost&amp;#124;Holy&amp;#124;Magic&amp;#124;Slime&amp;#124;Smoke&amp;#124;Water&amp;#125;: ?{Where does the effect appear&amp;#124;Caster Only&amp;#44;CO&amp;#124;First Target Only&amp;#44;FTO&amp;#124;All Targets&amp;#44;AT&amp;#124;Caster to 1st Target Only&amp;#44;CtFTO&amp;#124;Caster to all Targets&amp;#44;CtAT&amp;#125;|FX Clear,FXset: NAC: @{NAC_RowID}: Clear}"
title="@{repeating_knacks_X_NAC_btnDoStuff} Link the Knack or set the Special Effects.">Do Stuff</button>
</span>
<label class="sect-showMost" title="@{repeating_knacks_X_NAC_SuccessText}: Text to display if the test succeeds. Can optionally be used to remind people how the Knack works.">
Disp Text:&nbsp;<span class="autoexpand-wrap">
<input name="attr_NAC_SuccessText" type="text">
<span name="attr_NAC_SuccessText" class="autoexpand"></span>
</span></label>
<span class="nowrap sect-showMost" title="@{repeating_knacks_X_NAC_CombatSlot}: Should this Knack be summarized on the combat tab and placed in a Token Action?">
<span class="api">Tkn Actn</span><span class="NoAPI">Combat Tab</span>
<input name="attr_NAC_CombatSlot" type="checkbox" value="1" ></span>
<br><span class="hideIfNotPlaceholder" title="@{NAC_textImport}: Knack Text import: This only shows up if Name is empty.">
If you have a PDF copy of the book, you can copy an entire Knack description (starting with the name, and including
everything) and paste it into this tiny text box. It will be parsed and whatever fields can be set based upon the text will be.
You will still need to manually set most of the fields, most importaintly "Modifiers and link the Knack to its base Talent(s)".
<textarea name="attr_NAC_textImport" style="height: 28px; width: 8em; margin-bottom: 0em;"></textarea>
<br></span>
<textarea name="attr_NAC_Notes" style="height: 100px; margin-bottom: 4px;" title="@{repeating_knacks_X_NAC_Notes} Description of Knack and how it works." placeholder="Description of the Knack and how it works."></textarea>
</div>
</fieldset>
</div> <!-- End of Section Knacks -->
<div class="section section-skills">
<div class="headerbar">General Skills</div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Mods&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Step&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Skill Name&nbsp;&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Rank&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Action&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Strain&nbsp;</b>&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Origin&nbsp;</b>
<input class="testRepSpecialChecked hidden" name="attr_Questor" type="checkbox" value="None" />
<fieldset class="repeating_skills">
<span class="hidden"><input name="attr_SK_RowID" type="text" > <input type="text" name="attr_SK_Target-TA" ></span>
<button class="text-button api" name="roll_SK_Roll-fromSheet" type="roll"
value="!Earthdawn~ charID: @{character_id}~ Target: @{SK_Target}~ @{SK_RollType}~ @{SK_Karma-Control}~ @{SK_DP-Control}~ foreach:sct:ust:c~ Action: SK: @{SK_RowID}: ?{Modification|0}"
title="%{selected|roll_SK_Roll-fromSheet} Roll a skill Test.">Roll</button>
<button class="hidden" name="roll_SK_Roll" type="roll"
value="!Earthdawn~ charID: @{character_id}~ Target: @{SK_Target-TA}~ @{SK_RollType}~ @{SK_Karma-Control}~ @{SK_DP-Control}~ foreach:sct:ust:c~ Action: SK: @{SK_RowID}: ?{Modification|0}"
title="%{selected|roll_SK_Roll} Roll a skill Test. This version uses _Target-TA instead of _Target. on ?D1- target type it will try to get a Token ID.">Roll</button>
<button class="text-button NoAPI" name="roll_SK_Roll-NoAPI" type="roll"
value="@{SK_RollType-NoAPI} &{template:rolltargetnumber} @{SK_Target-NoAPI} {{header=@{character_name}: @{SK_Name}}} {{Step=[[?{Step|@{SK_Step}}]] + [[?{Bonus or Karma Step|0}]]}} {{Result=[[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}} {{Text=@{SK_SuccessText}}}"
title="%{selected|Roll_SK_Roll-NoAPI} Roll this skill Test.">Roll</button>
<input type="checkbox" class="testLocked hidden" name="attr_SK_showDetails" value="3"/>
<span class="nowrap">
<input name="attr_SK_Mods" type="number" value="0" class="numShort" title="@{repeating_skills_X_SK_Mods}: Modifications to the use of this skill."></span>
<span class="nowrap"><input name="attr_SK_Step" type="number" disabled class="numShort"
value="(@{SK_Rank}+@{SK_Mods}+@{SK_Attribute}+@{SK_Mod-Type}+@{SK_WorkingMods})"
title="@{repeating_skills_X_SK_Step}: Final action Step for this skill." ></span>
<input name="attr_SK_Name" type="text" class="nowrap LockIfChecked txtMed testPlaceholder" placeholder="Name"
title="@{repeating_talents_X_SK_Name}: Name of skill.">&nbsp;&nbsp;
<span class="nowrap" title="@{repeating_skills_X_SK_Rank}: Characters Rank in this skill." >
<input name="attr_SK_Rank" type="number" class="LockIfChecked numShort" value="0" min="0"></span>
<span class="nowrap" title="@{repeating_skills_X_SK_Action} What type of Action does this skill require.">
<select name="attr_SK_Action" class="LockIfChecked txtShort">
<option value="NA" title="There is no action directly associated with this skill." >NA</option>
<option value="Standard" selected title="Standard action takes most of the characters turn.">Standard</option>
<option value="Simple" title="Simple actions are often independent of other actions but can occur at the same time as other actions." >Simple</option>
<option value="Free" title="Free actions are often a part of a characters other general or defensive actions.">Free</option>
<option value="Sustained" title="Sustained actions take more than one round to accomplish.">Sustained</option>
</select></span>
<span class="nowrap" title="@{repeating_skills_X_SK_Strain}: Amount of Strain this skill costs.">
<input name="attr_SK_Strain" type="number" class="LockIfChecked numShort" value="0" min="0">
</span>
<span class="nowrap sect-showMost" title="@{repeating_skills_X_SK_Type} How much does this skill cost to advance.">
<select name="attr_SK_Type" class="LockIfChecked txtShort">
<option value="Novice" selected title="This is a Novice skill." >Novice</option>
<option value="Journeyman" title="This is a Journeyman skill." >Journeyman</option>
<option value="Warden" title="This is a Warden skill." >Warden</option>
<option value="Master" title="This is a Master skill." >Master</option>
</select></span>
<input type="radio" name="attr_SK_showDetails" class="show-all" value="1" checked title="Show All Details - All the details are displayed, including fields only used during set-up that are usually not needed during play." /><span class="option">+</span>
<input type="radio" name="attr_SK_showDetails" class="show-most" value="2" title="Show Most Details - The details used during play are displayed, but not the fields that are usually needed only during initial setup."/><span class="option">9</span>
<input type="radio" name="attr_SK_showDetails" class="hide-all" value="3" title="Hide All Details - Only a single line of the most important information is displayed, all the details are hidden." /><span class="option">-</span>
<div class="sect">
<input class="testModType" name="attr_SK_Mod-Type" value="@{Adjust-All-Tests-Total}" type="hidden"/>
<span class="nowrap sect-showMost HideIfNoRoll" title="@{repeating_skills_X_SK_Attribute} What attribute is associated with this skill.">Attribute:
<select name="attr_SK_Attribute" class="selShort">
<option value="0" selected title="This skill does not have an associated attribute.">None</option>
<option value="(@{Dex-Step}+@{Dex-Adjust}+@{Dex-Mods})" title="Dexterity.">Dex</option>
<option value="(@{Str-Step}+@{Str-Adjust}+@{Str-Mods})" title="Strength.">Str</option>
<option value="(@{Tou-Step}+@{Tou-Adjust}+@{Tou-Mods})" title="Toughness.">Tou</option>
<option value="(@{Per-Step}+@{Per-Adjust}+@{Per-Mods})" title="Perception.">Per</option>
<option value="(@{Wil-Step}+@{Wil-Adjust}+@{Wil-Mods})" title="Willpower.">Wil</option>
<option value="(@{Cha-Step}+@{Cha-Adjust}+@{Cha-Mods})" title="Charisma.">Cha</option>
</select></span>
<span class="nowrap HideIfSecondaryNoRoll" title="@{repeating_skills_X_SK_Mod-Type} What modifiers does this skill apply.">Modifiers:
<select name="attr_SK_Mod-Type" class="txtShort">
<option value="0" title="No modifiers at all.">None</option>
<option value="@{Adjust-All-Tests-Total}" selected title="Modifiers that apply to all Action Tests." >Action Test</option>
<option value="@{Adjust-Effect-Tests-Total}" title="Modifiers that apply to Effects Tests." >Effect Test</option>
<option value="@{Adjust-Attacks-Total}" title="Modifiers that apply to Attacks.">Attack</option>
<option value="@{Adjust-Attacks-Total-CC}" title="Modifiers that apply to Close Combat Attacks.">Attack Close Combat</option>
<option value="@{Adjust-Damage-Total}" title="Modifiers that apply to Damage.">Damage</option>
<option value="@{Adjust-Damage-Total-CC}" title="Modifiers that apply to Close Combat Damage.">Damage Close Combat</option>
<option value="@{Adjust-All-Tests-Total}+(-1*@{IP})" title="All Initiative Penalties apply as modifiers to this test.">Init Penalties</option>
<option value="@{Adjust-All-Tests-Total}+(-1*@{Armor-IP})" title="Initiative Penalties to Armor Only apply as modifiers to this Test.">Armor Init Pen</option>
<option value="(0)" title="This Skill does not have a step or make dice rolls. Pressing the 'Roll' button will however spend strain and load Karma.">No Roll</option>
<!-- Note that when evaluated numerically, (0) == 0. When evaluated as a string they are distinct. The code makes use of this. -->
</select></span>
<input name="attr_SK_WorkingMods" type="number" disabled class="hidden"
value="(((@{SK_NotMoveBased}-1)*@{condition-ImpairedMovement})+((@{SK_NotVisionBased}-1)*@{condition-Darkness})+(ceil(@{SK_ActnEfct}/2)*((@{SK_Defensive}*@{combatOption-DefensiveStance}*3)+(@{SK_Resistance}*@{condition-KnockedDown}*3))))"
title="@{repeating_skills_X_SK_WorkingMods}: Hidden variable to calculate the modifications that affect this skill."/>
<span class="HideIfNoRoll"> <!-- If no roll, nothing inside here displays. -->
<span class="sect-showMost"><input class="hidden testChecked" name="attr_SK_ActnEfct" type="checkbox" checked value="1"/>
<span class="nowrap HideIfNotChecked api" title="@{repeating_skills_X_SK_Defensive} Is this an Active Defense, such that it usually DOES NOT take a penalty for being in Defensive Stance?"> Def
<input name="attr_SK_Defensive" type="checkbox" value="1"/></span>
<span class="nowrap HideIfNotChecked api" title="@{repeating_skills_X_SK_Resistance} Is this a Resistance Test, such that it usually DOES NOT take a penalty from being Knocked Down?"> Res
<input name="attr_SK_Resistance" type="checkbox" value="1"/></span>
</span>
<span class="nowrap sect-showMost api" title="@{repeating_skills_X_SK_NotMoveBased} Is this a test NOT based upon movement, such that it usually DOES NOT take a penalty in conditions that impair movement?"> Move
<input name="attr_SK_NotMoveBased" type="checkbox" value="1"/></span>
<span class="nowrap sect-showMost api" title="@{repeating_skills_X_SK_NotVisionBased} Is this a test NOT based upon vision, such that it usually DOES NOT take a penalty in conditions of impaired visibility?"> Vis
<input name="attr_SK_NotVisionBased" type="checkbox" value="1"/></span>
<span class="nowrap NoAPI" title="@{repeating_talents_X_SK_Target-NoAPI} What does this skill target.">Target #
<select name="attr_SK_Target-NoAPI" class="selShort">
<option value=" " selected title="This skill does not target a defense.">None</option>
<option value="{{target_name=@{target|Target|token_name}}} {{target_number=[[@{target|Target|PD}]]}} {{target_defense=PD}}" title="This Talent skill Physical Defense." >PD</option>
<option value="{{target_name=@{target|Target|token_name}}} {{target_number=[[@{target|Target|MD}]]}} {{target_defense=MD}}" title="This Talent skill Mystic Defense.">MD</option>
<option value="{{target_name=@{target|Target|token_name}}} {{target_number=[[@{target|Target|SD}]]}} {{target_defense=SD}}" title="This Talent skill Social Defense.">SD</option>
<option value="{{target_number=?{Target Number|0}}}" title="Ask for target number when roll is made." >Ask</option>
</select></span>
<input class="hidden testCloseChecked" name="attr_SK_ModType-ArmorType" type="checkbox" value="1"/>
<span class="nowrap api HideIfCloseChecked" title="@{repeating_skills_X_SK_Target} How is the Target Number arrived at? What attribute is targeted and how?">Target #:
<select name="attr_SK_Target" class="selLong">
<option value="None" selected title="This skill does not target a defense.">None</option>
<option value="PD1: @{target|Target|token_id}" title="This skill targets Physical Defense. There is always exactly one Target." >PD-1</option>
<option value="MD1: @{target|Target|token_id}" title="This skill targets Mystic Defense. There is always exactly one Target.">MD-1</option>
<option value="SD1: @{target|Target|token_id}" title="This skill targets Social Defense. There is always exactly one Target.">SD-1</option>
<option value="Ask: ?{Target Number|0}" title="Ask for target number when roll is made." >Ask</option>
<option value="Ask: PD: ?{Target Number, maybe relative to PD|0}" title="Ask for target number that may be relative to this characters PD when roll is made. IE: +3 would be this characters PD +3" >Ask PD</option>
<option value="Ask: MD: ?{Target Number, maybe relative to MD|0}" title="Ask for target number that may be relative to this characters MD when roll is made. IE: +3 would be this characters MD +3" >Ask MD</option>
<option value="Ask: SD: ?{Target Number, maybe relative to SD|0}" title="Ask for target number that may be relative to this characters SD when roll is made. IE: +3 would be this characters SD +3" >Ask SD</option>
<option value="PD" title="This skill targets Physical Defense. There could be a variable number of Targets." >PD-v</option>
<option value="MD" title="This skill targets Mystic Defense. There could be a variable number of Targets.">MD-v</option>
<option value="SD" title="This skill targets Social Defense. There could be a variable number of Targets.">SD-v</option>
<option value="PDh" title="This skill targets highest Physical Defense among all targets." >hPD</option>
<option value="MDh" title="This skill targets highest Mystic Defense among all targets.">hMD</option>
<option value="SDh" title="This skill targets highest Social Defense among all targets.">hSD</option>
<option value="PDhp1p" title="This skill targets highest Physical Defense, +1 for each additional target." >hPD+1pp</option>
<option value="MDhp1p" title="This skill targets highest Mystic Defense, +1 for each additional target.">hMD+1pp</option>
<option value="SDhp1p" title="This skill targets highest Social Defense, +1 for each additional target.">hSD+1pp</option>
<option value="Riposte: @{target|Counter-attack Target|token_id}: PD: ?{Target Number, maybe relative to PD|0}"
title="Ask the user to click the Token that is being counter-attacked. Then ask for target number that may be relative to this characters PD when roll is made. IE: +3 would be this characters PD +3." >Riposte</option>
<option value="PD-Nat" title="This skill targets Natural Physical Defense (Does not include bonuses provided by Spells, Talents, Woven Threads, Etc.) There could be a variable number of Targets." >PD-Nat</option>
<option value="MD-Nat" title="This skill targets Natural Mystic Defense (Does not include bonuses provided by Spells, Talents, Woven Threads, Etc.). There could be a variable number of Targets.">MD-Nat</option>
<option value="SD-Nat" title="This skill targets Natural Social Defense (Does not include bonuses provided by Spells, Talents, Woven Threads, Etc.). There could be a variable number of Targets.">SD-Nat</option>
<option value="2" title="The target number for this skill is 2." >2</option>
<option value="5" title="The target number for this skill is 5." >5</option>
<option value="6" title="The target number for this skill is 6." >6</option>
</select></span>
<span class="nowrap HideIfNotCloseChecked" title="@{repeating_skills_X_SK_Armortype} What Armor would apply to resisting this Damage.">Armor:
<select name="attr_SK_ArmorType" class="selShort">
<option value="N/A" selected>N/A &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Not Applicable as this Skill does not do damage</option>
<option value="PA" >PA &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Physical Armor protects against this Damage</option>
<option value="MA" >MA &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Mystic Armor protects against this Damage</option>
<option value="PA-Nat" >PA-Nat &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Only Natural Physical Armor protects against this Damage</option>
<option value="MA-Nat" >MA-Nat &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Only Natural Mystic Armor protects against this Damage</option>
<option value="None" >None &nbsp;&nbsp;&nbsp; No Armor protects against this Damage</option>
</select></span>
<span class="nowrap sect-showMost api" title="@{repeating_skills_X_SK_sayTotalSuccess} If this is checked, it says Total Successes, otherwise it says Extra Successes.">Say Total
<input name="attr_SK_sayTotalSuccess" type="checkbox" value="1"/></span>
<span class="nowrap api" title="@{repeating_skills_X_SK_Karma-Control} Under what circumstances should we add karma to skill tests?">Karma:
<select name="attr_SK_Karma-Control" class="selShort">
<option value="-1" selected title="Never use karma on tests for this Skill. This overrides the 'Add Karma to rolls' control."> Never</option>
<option value="0" title="Look at the 'Add Karma to rolls' control to determine if should use Karma on tests for this Skill.">Sometimes </option>
<option value="1" title="If there is unspent karma, always use karma on tests for this Skill. This overrides the 'Add Karma to rolls' control.">Always </option>
<option value="2" title="If there is unspent karma, always use 2 karma on tests for this Skill. This overrides the 'Add Karma to rolls' control.">2 Always</option>
<option value="3" title="If there is unspent karma, always use 3 karma on tests for this Skill. This overrides the 'Add Karma to rolls' control.">3 Always</option>
<option value="K-ask: ?{How many Karma to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many karma should be spent."> Ask</option>
</select></span>
<span class="nowrap HideIfRepSpecialChecked api" title="@{repeating_skills_X_SK_DP-Control} Under what circumstances should we add Devotion Points to skill tests?">DP:
<select name="attr_SK_DP-Control" class="selShort">
<option value="-1" selected title="Never use Devotion Points on tests for this skill. This overrides the 'Use Dev Pnts in rolls' control."> Never</option>
<option value="0" title="Look at the 'Use Dev Pnts in rolls' control to determine if should use Devotion Points in tests for this skill.">Sometimes </option>
<option value="1" title="If there are unspent Devotion Points, always use DP in tests for this skill. This overrides the 'Use Dev Pnts rolls' control.">Always </option>
<option value="2" title="If there are unspent Devotion Points, always use 2 DP in tests for this skill. This overrides the 'Use Dev Pnts in rolls' control.">2 Always</option>
<option value="3" title="If there are unspent Devotion Points, always use 3 DP in tests for this skill. This overrides the 'Use Dev Pnts in rolls' control.">3 Always</option>
<option value="DP-ask: ?{How many Devotion Points to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many Devotion Points should be spent."> Ask</option>
</select></span>
<span class="nowrap sect-showMost" title="@{repeating_skills_X_SK_RollType} Rolls should be made: public, gm, or hidden?">Roll Type:
<select name="attr_SK_RollType" class="selShort api">
<option value="@{RollType}" selected title="Default as selected on the Adjustments tab Advanced section"> Default</option>
<option value=" " title="Public"> Public</option>
<option value="pgm" title="GM"> Player&GM</option>
<option value="/w gm" title="Hidden"> GM Only</option>
<option value="RollType: ?{Who should be able to see the results|Public, |GM Only,/w gm}"
title="At runtime when the button is pressed, have a pop-up ask who should be able to see the results."> Ask</option>
</select>
<select name="attr_SK_RollType-NoAPI" class="selShort NoAPI">
<option value="@{RollType-NoAPI}" selected title="Default as selected on the Adjustments tab Advanced section"> Default</option>
<option value=" " selected title="Public"> Public</option>
<option value="/w gm" title="Hidden"> GM Only</option>
<option value="?{Who should be able to see the results|Public, |GM Only,/w gm}"
title="At runtime when the button is pressed, have a pop-up ask who should be able to see the results."> Ask</option>
</select>
</span></span>
<label class="sect-showMost" title="@{repeating_skills_X_SK_SuccessText}: Text to display if the test succeeds. Can optionally be used to remind people how the skill works.">
Disp Text:&nbsp;<span class="autoexpand-wrap">
<input name="attr_SK_SuccessText" type="text">
<span name="attr_SK_SuccessText" class="autoexpand"></span>
</span></label>
<span class="nowrap sect-showMost" title="@{repeating_skills_X_SK_CombatSlot}: Should this skill be summarized on the combat tab and placed in a Token Action?" >
<span class="api">Tkn Actn</span><span class="NoAPI">Combat Tab</span>
<input name="attr_SK_CombatSlot" type="checkbox" value="1"></span>
<br><span class="hideIfNotPlaceholder" title="@{SK_textImport}: Talent Text import: This only shows up if Name is empty.">
If you have a PDF copy of the book, you can copy an entire Skill or Talent description (starting with the name,
and including everything) and paste it into this tiny text box. It will be parsed and whatever fields
can be set based upon the text will be. You will still need to manually set some of the fields, most importaintly "Modifiers".
<textarea name="attr_SK_textImport" style="height: 28px; width: 8em; margin-bottom: 0em;"></textarea>
<br></span>
<textarea name="attr_SK_Notes" style="height: 100px; margin-bottom: 4px;" title="@{repeating_skills_X_SK_Notes} Description of skill and how it works." placeholder="Description of the skill and how it works."></textarea>
</div>
</fieldset>
<div class="headerbar">Knowledge Skills</div>&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Roll&nbsp;</b>&nbsp;
<b class="heading">&nbsp;Mods&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Step&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Skill Name&nbsp;&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Rank&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading" class="api">&nbsp;Karma&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input class="testCloseChecked hidden" name="attr_Questor" type="checkbox" value="None" />
<span class="HideIfCloseChecked api">&nbsp;&nbsp;
<b class="heading">&nbsp;Dev Pnts&nbsp;</b>&nbsp;&nbsp;</span>&nbsp;&nbsp;
<b class="heading">&nbsp;Roll Type&nbsp;</b>
<input class="testRepSpecialChecked hidden" name="attr_Questor" type="checkbox" value="None" />
<fieldset class="repeating_skillk">
<span class="hidden"><input name="attr_SKK_RowID" type="text" ></span>
<button class="text-button api" name="roll_SKK_Roll" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{SKK_RollType}~ @{SKK_Karma-Control}~ @{SKK_DP-Control}~ foreach~ Action: SKK: @{SKK_RowID}: ?{Modification|0}"
title="%{selected|roll_SKK_Roll} Roll a Knowledge skill Test.">Roll</button>
<button class="text-button NoAPI" name="roll_SKK_Roll-NoAPI" type="roll"
value="@{SKK_RollType-NoAPI} &{template:default} {{name=@{character_name}: @{SKK_Name}}} {{Step=[[?{Step|@{SKK_Step}}]] + [[?{Bonus or Karma Step|0}]]}} {{Result=[[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"
title="%{selected|Roll_SKK_Roll-NoAPI} Roll this knowledge skill Test.">Roll</button>
<span class="nowrap">
<input name="attr_SKK_Mods" type="number" value="0" class="numShort" title="@{repeating_skillk_X_SKK_Mods}: Modifications to the use of this skill."></span>
<span class="nowrap">
<input name="attr_SKK_Step" type="number" disabled class="numShort" value="(@{SKK_Rank}+@{Per}+@{SKK_Mods})" title="@{repeating_skillk_X_SKK_Step}: Final Step for this knowledge skill." ></span>
<span class="nowrap" title="@{repeating_skillk_X_SKK_Name}: Name of knowledge skill." >
<input name="attr_SKK_Name" type="text" class="txtMed" placeholder="Name" ></span>
<span class="nowrap">
<input name="attr_SKK_Rank" type="number" value="0" min="0" class="numShort" title="@{repeating_skillk_X_SKK_Rank}: Characters Rank in this skill." ></span>
<span class="nowrap api">
<select name="attr_SKK_Karma-Control" class="selShort" title="@{repeating_skillk_X_SKK_Karma-Control} Under what circumstances should we add karma to knowledge tests?">
<option value="-1" selected title="Never use karma on tests for this Skill. This overrides the 'Add Karma to rolls' control."> Never</option>
<option value="0" title="Look at the 'Add Karma to rolls' control to determine if should use Karma on tests for this Skill.">Sometimes </option>
<option value="1" title="If there is unspent karma, always use karma on tests for this Skill. This overrides the 'Add Karma to rolls' control.">Always </option>
<option value="2" title="If there is unspent karma, always use 2 karma on tests for this Skill. This overrides the 'Add Karma to rolls' control.">2 Always</option>
<option value="3" title="If there is unspent karma, always use 3 karma on tests for this Skill. This overrides the 'Add Karma to rolls' control.">3 Always</option>
<option value="K-ask: ?{How many Karma to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many karma should be spent."> Ask</option>
</select></span>
<span class="nowrap HideIfRepSpecialChecked api" title="@{repeating_skillk_X_SKK_DP-Control} Under what circumstances should we add Devotion Points to skill tests?">
<select name="attr_SKK_DP-Control" class="selShort">
<option value="-1" selected title="Never use Devotion Points on tests for this skill. This overrides the 'Use Dev Pnts in rolls' control."> Never</option>
<option value="0" title="Look at the 'Use Dev Pnts in rolls' control to determine if should use Devotion Points in tests for this skill.">Sometimes </option>
<option value="1" title="If there are unspent Devotion Points, always use DP in tests for this skill. This overrides the 'Use Dev Pnts rolls' control.">Always </option>
<option value="2" title="If there are unspent Devotion Points, always use 2 DP in tests for this skill. This overrides the 'Use Dev Pnts in rolls' control.">2 Always</option>
<option value="3" title="If there are unspent Devotion Points, always use 3 DP in tests for this skill. This overrides the 'Use Dev Pnts in rolls' control.">3 Always</option>
<option value="DP-ask: ?{How many Devotion Points to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many Devotion Points should be spent."> Ask</option>
</select></span>
<span class="nowrap" title="@{repeating_skillk_X_SKK_RollType} Rolls should be made: public, gm, or hidden?">
<select name="attr_SKK_RollType" class="selShort api">
<option value="@{RollType}" selected title="Default as selected on the Adjustments tab Advanced section"> Default</option>
<option value=" " title="Public"> Public</option>
<option value="pgm" title="GM"> Player&GM</option>
<option value="/w gm" title="Hidden"> GM Only</option>
<option value="RollType: ?{Who should be able to see the results|Public, |GM Only,/w gm}"
title="At runtime when the button is pressed, have a pop-up ask who should be able to see the results."> Ask</option>
</select>
<select name="attr_SKK_RollType-NoAPI" class="selShort NoAPI">
<option value="@{RollType-NoAPI}" selected title="Default as selected on the Adjustments tab Advanced section"> Default</option>
<option value=" " selected title="Public"> Public</option>
<option value="/w gm" title="Hidden"> GM Only</option>
<option value="?{Who should be able to see the results|Public, |GM Only,/w gm}"
title="At runtime when the button is pressed, have a pop-up ask who should be able to see the results."> Ask</option>
</select>
</span>
<span class="nowrap" title="@{repeating_skills_X_SKK_CombatSlot}: Should this skill be placed in a Token Action?" >
<span class="api">Tkn Actn</span>
<input name="attr_SKK_CombatSlot" type="checkbox" value="1"></span>
</fieldset>
<div class="headerbar">Artist / Artisan Skills</div>&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Roll&nbsp;</b>&nbsp;
<b class="heading">&nbsp;Mods&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Step&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Skill Name&nbsp;&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Rank&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Attribute&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Roll Type&nbsp;</b>
<fieldset class="repeating_skilla">
<span class="hidden"><input name="attr_SKA_RowID" type="text" ></span>
<button class="text-button api" name="roll_SKA_Roll" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{SKA_RollType}~ foreach~ Action: SKA: @{SKA_RowID}: ?{Modification|0}"
title="%{selected|roll_SKA_Roll} Roll a Artisan skill Test.">Roll</button>
<button class="text-button NoAPI" name="roll_SKA_Roll-NoAPI" type="roll"
value="@{SKA_RollType-NoAPI} &{template:default} {{name=@{character_name}: @{SKA_Name}}} {{Step=[[?{Step|@{SKA_Step}}]] + [[?{Bonus or Karma Step|0}]]}} {{Result=[[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"
title="%{selected|Roll_SKA_Roll-NoAPI} Roll this artisan skill Test.">Roll</button>
<span class="nowrap">
<input name="attr_SKA_Mods" type="number" value="0" class="numShort" title="@{repeating_skilla_X_SKA_Mods}: Modifications to the use of this skill."></span>
<span class="nowrap">
<input name="attr_SKA_Step" type="number" disabled class="numShort" value="(@{SKA_Rank}+@{SKA_Attribute}+@{SKA_Mods}+@{Adjust-All-Tests-Total})" title="@{repeating_skilla_X_SKA_Step}: Final Step for this Artisan skill." ></span>
<span class="nowrap" title="@{repeating_skilla_X_SKA_Name}: Name of Artist / Artisan skill.">
<input name="attr_SKA_Name" type="text" class="txtMed" placeholder="Name" ></span>
<span class="nowrap">
<input name="attr_SKA_Rank" type="number" value="0" min="0" class="numShort" title="@{repeating_skilla_X_SKA_Rank}: Characters Rank in this skill." ></span>
<span class="nowrap">
<select name="attr_SKA_Attribute" class="selShort" title="@{repeating_skilla_X_SKA_Attribute} What attribute is associated with this Artistic Skill.">
<option value="0" selected title="None.">None</option>
<option value="(@{Dex-Step}+@{Dex-Adjust}+@{Dex-Mods})" title="Dexterity.">Dex</option>
<option value="(@{Str-Step}+@{Str-Adjust}+@{Str-Mods})" title="Strength.">Str</option>
<option value="(@{Tou-Step}+@{Tou-Adjust}+@{Tou-Mods})" title="Toughness.">Tou</option>
<option value="(@{Per-Step}+@{Per-Adjust}+@{Per-Mods})" title="Perception.">Per</option>
<option value="(@{Wil-Step}+@{Wil-Adjust}+@{Wil-Mods})" title="Willpower.">Wil</option>
<option value="(@{Cha-Step}+@{Cha-Adjust}+@{Cha-Mods})" title="Charisma.">Cha</option>
</select></span>
<span class="nowrap" title="@{repeating_skilla_X_SKA_RollType} Rolls should be made: public, gm, or hidden?">
<select name="attr_SKA_RollType" class="selShort api">
<option value="@{RollType}" selected title="Default as selected on the Adjustments tab Advanced section"> Default</option>
<option value=" " title="Public"> Public</option>
<option value="pgm" title="GM"> Player&GM</option>
<option value="/w gm" title="Hidden"> GM Only</option>
<option value="RollType: ?{Who should be able to see the results|Public, |GM Only,/w gm}"
title="At runtime when the button is pressed, have a pop-up ask who should be able to see the results."> Ask</option>
</select>
<select name="attr_SKA_RollType-NoAPI" class="selShort NoAPI">
<option value="@{RollType-NoAPI}" selected title="Default as selected on the Adjustments tab Advanced section"> Default</option>
<option value=" " selected title="Public"> Public</option>
<option value="/w gm" title="Hidden"> GM Only</option>
<option value="?{Who should be able to see the results|Public, |GM Only,/w gm}"
title="At runtime when the button is pressed, have a pop-up ask who should be able to see the results."> Ask</option>
</select>
</span>
<span class="nowrap" title="@{repeating_skills_X_SKA_CombatSlot}: Should this skill be placed in a Token Action?" >
<span class="api">Tkn Actn</span>
<input name="attr_SKA_CombatSlot" type="checkbox" value="1"></span>
<input class="hidden testCloseChecked" name="attr_SKA_Attribute" type="checkbox" value="(@{Cha-Step}+@{Cha-Adjust}+@{Cha-Mods})"/>
<span class="nowrap HideIfChecked">
<button class="text-button" name="roll_SKA_Rollc" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{SKA_RollType}~ foreach~ Action: SKA: @{SKA_RowID}: ?{Modification|0}"
value="!Earthdawn~ charID: @{character_id}~ @{SKA_RollType}~ foreach~ Action: SKAc: @{SKA_RowID}: ?{Modification|0}"
title="%{selected|roll_SKA_Rollc} Roll a Artisan skill Test, but do it with Charisma instead of the listed attribute. This is used in greeting rituals and is used to see how creatively and charismatically the task is done.">Cha Roll</button>
</span>
</fieldset>
<div class="headerbar">Language Skills</div>
<div>
<span class="nowrap" title="@{SKL_TotalS-Speak}: Total languages spoken as skills."><strong>Skill: </strong> Speak -
<input name="attr_SKL_TotalS-Speak" type="number" value="0" readonly class="numShort"></span>
<span class="nowrap" title="@{SKL_TotalS-ReadWrite}: Total languages read/write as skills."> Read/Write -
<input name="attr_SKL_TotalS-ReadWrite" type="number" value="0" readonly class="numShort"></span>
<span class="nowrap" title="@{SKL_TotalT-Speak}: Total languages spoken as Talents.">&nbsp;&nbsp;&nbsp;&nbsp;<strong>Talent: </strong> Speak -
<input name="attr_SKL_TotalT-Speak" type="number" value="0" readonly class="numShort"></span>
<span class="nowrap" title="@{SKL_TotalT-ReadWrite}: Total languages read/write as Talents."> Read/Write -
<input name="attr_SKL_TotalT-ReadWrite" type="number" value="0" readonly class="numShort"></span>
</div>
<fieldset class="repeating_skilll">
<span class="hidden"><input name="attr_SKL_RowID" type="text" ></span>
<span class="nowrap" title="@{repeating_skilll_X_SKL_Name}: Name of language skill.">
<input name="attr_SKL_Name" type="text" class="txtMed" placeholder="Name" ></span>
<span class="nowrap" title="@{repeating_skilll_X_SKL_Speak} Does the character Speak this language as a skill."><strong>Skill: </strong>
<input name="attr_SKL_Speak" type="checkbox" value="1" />Speak</span>
<span class="nowrap" title="@{repeating_skilll_X_SKL_ReadWrite} Does the character Read and Write this language as a skill.">
<input name="attr_SKL_ReadWrite" type="checkbox" value="1" />Read/Write</span>
<span class="nowrap" title="@{repeating_skilll_X_SKL_Speak-T} Does the character Speak this language as a Talent (from the Talents tab).">&nbsp;&nbsp;&nbsp;&nbsp;<strong>Talent: </strong>
<input name="attr_SKL_Speak-T" type="checkbox" value="1" />Speak</span>
<span class="nowrap" title="@{repeating_skilll_X_SKL_ReadWrite-T} Does the character Read and Write this language as a Talent (from the Talents tab).">
<input name="attr_SKL_ReadWrite-T" type="checkbox" value="1" />Read/Write</span>
</fieldset>
</div> <!-- End of Section Skills -->
<div class="section section-spells">
<b>Spellcasting &amp; Matrices &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>&nbsp;&nbsp;&nbsp;&nbsp; Spellcasting Talent Details:</b>
<input type="checkbox" class="sect-show testChecked" name="attr_show-spelltab-details" value="1" checked title="@{show-spelltab-details} Show or Hide the details not often needed on the spell tab."/>
<span class="option-show"></span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input class="hidden" name="attr_SP-WilEffect-Kask-Button" type="text" value="">
<input class="hidden" name="attr_SP-WilEffect-Kask-DropDown" type="text" value="">
<span class="HideIfNotChecked nowrap2 api" title="@{SP-WilEffect-Karma-Control} Under what circumstances should we add karma to Wil Effect tests?"> Wil Effect Karma:
<select name="attr_SP-WilEffect-Karma-Control" class="selShort">
<option value="-1" selected title="Never use karma on tests for Wil Effects. This overrides the 'Add Karma to rolls' control."> Never</option>
<option value="0" title="Look at the 'Add Karma to rolls' control to determine if should use Karma on tests for Wil Effects.">Sometimes </option>
<option value="1" title="If there is unspent karma, always use karma on tests for Wil Effects. This overrides the 'Add Karma to rolls' control.">Always </option>
<option value="2" title="If there is unspent karma, always use 2 karma on tests for Wil Effects. This overrides the 'Add Karma to rolls' control.">2 Always</option>
<option value="3" title="If there is unspent karma, always use 3 karma on tests for Wil Effects. This overrides the 'Add Karma to rolls' control.">3 Always</option>
<option value="K-ask: ?{How many Karma to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many karma should be spent."> Ask</option>
</select></span>
<input class="testCloseChecked hidden" name="attr_Questor" type="checkbox" value="None" />
<span class="nowrap HideIfCloseChecked HideIfNotChecked api" title="@{SP-WilEffect-DP-Control} Under what circumstances should we add Devotion Points to Wil Effect tests?">DP:
<select name="attr_SP-WilEffect-DP-Control" class="selShort">
<option value="-1" selected title="Never use Devotion Points on tests for Wil Effect. This overrides the 'Use Dev Pnts in rolls' control."> Never</option>
<option value="0" title="Look at the 'Use Dev Pnts in rolls' control to determine if should use Devotion Points in tests for Wil Effects.">Sometimes </option>
<option value="1" title="If there are unspent Devotion Points, always use DP in tests for Wil effects. This overrides the 'Use Dev Pnts rolls' control.">Always </option>
<option value="2" title="If there are unspent Devotion Points, always use 2 DP in tests for Wil Effects. This overrides the 'Use Dev Pnts in rolls' control.">2 Always</option>
<option value="3" title="If there are unspent Devotion Points, always use 3 DP in tests for Wil Effects. This overrides the 'Use Dev Pnts in rolls' control.">3 Always</option>
<option value="DP-ask: ?{How many Devotion Points to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many Devotion Points should be spent."> Ask</option>
</select></span>
<span class="nowrap0 HideIfNotChecked" title="@{SP-Elementalist} Show Elementalism talent.">
<input name="attr_SP-Elementalist" type="checkbox" value="1"/>
<span class="nowrap3">Elementalist</span>
</span><span class="nowrap0 HideIfNotChecked" title="@{SP-Illusionist} Show Illusionism talent.">
<input name="attr_SP-Illusionist" type="checkbox" value="1"/>
<span class="nowrap3">Illusionist</span>
</span><span class="nowrap0 HideIfNotChecked" title="@{SP-Nethermancer} Show Nethermancy talent.">
<input name="attr_SP-Nethermancer" type="checkbox" value="1"/>
<span class="nowrap3">Nethermancer</span>
</span><span class="nowrap0 HideIfNotChecked" title="@{SP-Shaman} Show Shamanism talent.">
<input name="attr_SP-Shaman" type="checkbox" value="1"/>
<span class="nowrap3">Shaman</span>
</span><span class="nowrap0 HideIfNotChecked" title="@{SP-Wizard} Show Wizardry talent.">
<input name="attr_SP-Wizard" type="checkbox" value="1"/>
<span class="nowrap3">Wizard</span>
</span><span class="nowrap0 HideIfNotChecked" title="@{SP-Power} Show Creature Power and Other non-magician thread weaving abilities.">
<input name="attr_SP-Power" type="checkbox" value="1"/>
<span class="nowrap3">Other & Powers</span>
</span><span class="nowrap0 HideIfNotChecked" title="@{SP-WillforceShow} Show Willforce talent.">
<input name="attr_SP-WillforceShow" type="checkbox" value="1"/>
<span class="nowrap3">Willforce</span>
</span>
<br>
<div>
<b class="w7">Spellcasting:</b>Rank:
<input class="hidden" name="attr_SP-Spellcasting-Kask" type="text" value="">
<span class="HideIfNotChecked">Base/Mods <input name="attr_SP-Spellcasting-Rank" type="number" value="0" min="0" class="numShort"
title="@{SP-Spellcasting-Rank}: Characters real Rank in Spellcasting talent." >/</span>
<span class="HideIfNotChecked"><input name="attr_SP-Spellcasting-Rank-Mods" type="number" value="0" min="0" class="numShort"
title="@{SP-Spellcasting-Rank-Mods}: Modifications to the use of this talent that increases effective rank." ></span>
<span class="nowrap"><input name="attr_SP-Spellcasting-Effective-Rank" type="number" readonly class="numShort"
title="@{SP-Spellcasting-Effective-Rank}: Characters effective Rank in Spellcasting talent counting any magical threads or other effects that effectively raise the rank above it's base rank." >
</span>
<span>S-Mods: <input name="attr_SP-Spellcasting-Mods" type="number" value="0" class="numShort"
title="@{SP-Spellcasting-Mods}: Modifications to the use of this talent that do NOT increase effective rank."></span>
<span class="nowrap">
<input name="attr_SP-Spellcasting-Step" type="number" readonly class="numShort" value="0"
title="@{SP-Spellcasting-Step}: Final Step for Spellcasting talent. Includes any Vision penalties." ></span>
<span class="nowrap HideIfNotChecked" title="@{SP-Spellcasting-Type} How much does this Talent cost to advance.">
<select name="attr_SP-Spellcasting-Type" class="LockIfChecked txtShort">
<option value="Novice" selected title="This is a Novice Talent." >Novice</option>
<option value="Journeyman" title="This is a Journeyman Talent." >Journeyman</option>
<option value="Warden" title="This is a Warden Talent." >Warden</option>
<option value="Master" title="This is a Master Talent." >Master</option>
</select></span>
<span class="HideIfNotChecked nowrap api" title="@{SP-Spellcasting-Karma-Control} Under what circumstances should we add karma to Talent tests?">Karma:
<select name="attr_SP-Spellcasting-Karma-Control" class="selShort">
<option value="-1" title="Never use karma on tests for this Talent. This overrides the 'Add Karma to rolls' control."> Never</option>
<option value="0" selected title="Look at the 'Add Karma to rolls' control to determine if should use Karma on tests for this Talent.">Sometimes </option>
<option value="1" title="If there is unspent karma, always use karma on tests for this Talent. This overrides the 'Add Karma to rolls' control.">Always </option>
<option value="2" title="If there is unspent karma, always use 2 karma on tests for this Talent. This overrides the 'Add Karma to rolls' control.">2 Always</option>
<option value="3" title="If there is unspent karma, always use 3 karma on tests for this Talent. This overrides the 'Add Karma to rolls' control.">3 Always</option>
<option value="K-ask: ?{How many Karma to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many karma should be spent."> Ask</option>
</select></span>
<input class="testCloseChecked hidden" name="attr_Questor" type="checkbox" value="None" />
<span class="nowrap HideIfNotChecked HideIfCloseChecked api" title="@{SP-Spellcasting-DP-Control} Under what circumstances should we add Devotion Points to Spellcasting tests?">DP:
<select name="attr_SP-Spellcasting-DP-Control" class="selShort">
<option value="-1" selected title="Never use Devotion Points on tests for this Talent. This overrides the 'Use Dev Pnts in rolls' control."> Never</option>
<option value="0" title="Look at the 'Use Dev Pnts in rolls' control to determine if should use Devotion Points in tests for this Talent.">Sometimes </option>
<option value="1" title="If there are unspent Devotion Points, always use DP in tests for this Talent. This overrides the 'Use Dev Pnts rolls' control.">Always </option>
<option value="2" title="If there are unspent Devotion Points, always use 2 DP in tests for this Talent. This overrides the 'Use Dev Pnts in rolls' control.">2 Always</option>
<option value="3" title="If there are unspent Devotion Points, always use 3 DP in tests for this Talent. This overrides the 'Use Dev Pnts in rolls' control.">3 Always</option>
<option value="DP-ask: ?{How many Devotion Points to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many Devotion Points should be spent."> Ask</option>
</select></span>
<span class="HideIfChecked">Actn: <b class="nowrap">Std</b></span>
<button class="text-button api" name="roll_SP-Spell-R0" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{SP-Spellcasting-Karma-Control}~ @{SP-Spellcasting-DP-Control}~ foreach~ Value: SP-Spellcasting-Step~ Roll: ?{Modification|0}"
title="%{selected|roll_SP-Spell-R0} Roll a Spellcasting Test. Target MD of a single Target.">
No Targ</button>
<button class="text-button api" name="roll_SP-Spell-R1" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{SP-Spellcasting-Karma-Control}~ @{SP-Spellcasting-DP-Control}~ Target: MD1: @{target|Target|token_id}~ foreach~ TargetMod: Adjust-TN-Total~ Value: SP-Spellcasting-Step~ Roll: ?{Modification|0}"
title="%{selected|roll_SP-Spell-R1} Roll a Spellcasting Test. Target MD of a single Target.">
Targ 1</button>
<button class="text-button api" name="roll_SP-Spell-Rv" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{SP-Spellcasting-Karma-Control}~ @{SP-Spellcasting-DP-Control}~?{What type of Target Number is it|No Target, foreach~|Highest MD of group,Target: MDh~ foreach~ TargetMod: Adjust-TN-Total~|Highest MD +1 per Target,Target: MDhp1p~ foreach~ TargetMod: Adjust-TN-Total~|Natural MD,Target: MD-Nat~ foreach~}Value: SP-Spellcasting-Step~ Roll: ?{Modification|0}"
title="%{selected|roll_SP-Spell-Rv} Roll a Spellcasting Test. Choice of no Target / Highest MD of a group of Targets / and Highest MD of a group, plus one for each additional member.">
Targ v</button>
<button class="text-button NoAPI" name="roll_SP-Spellcasting-NoAPI" type="roll"
value="@{RollType-NoAPI} &{template:default} {{name=Spellcasting}} {{Step=[[?{Step|@{SP-Spellcasting-Step}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result=[[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"
title="%{selected|roll_SP-Spellcasting-NoAPI-R0} Roll a Spellcasting Test.">
No Targ</button>
<button class="text-button NoAPI" name="roll_SP-Spellcasting-NoAPI-R1" type="roll"
value="@{RollType-NoAPI} &{template:rolltargetnumber} {{target_name=@{target|Target|token_name}}} {{target_number=[[@{target|Target|MD}]]}} {{target_defense=MD}} {{header=@{character_name}: Spellcasting}} {{Step=[[?{Step|@{SP-Spellcasting-Step}}]] + [[?{Bonus or Karma Step|0}]]}} {{Result=[[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"
title="%{selected|roll_SP-Spellcasting-NoAPI-R1} Roll a Spellcasting Test.">
Targ 1</button>
</div>
<div>
<b class="w7">Patterncraft:</b>Rank:
<span class="HideIfNotChecked">Base/Mods <input name="attr_SP-Patterncraft-Rank" type="number" value="0" min="0" class="numShort"
title="@{SP-Patterncraft-Rank}: Characters real Rank in Patterncraft talent." >/</span>
<span class="HideIfNotChecked"><input name="attr_SP-Patterncraft-Rank-Mods" type="number" value="0" min="0" class="numShort"
title="@{SP-Patterncraft-Rank-Mods}: Modifications to the use of this talent that increases effective rank." ></span>
<span class="nowrap"><input name="attr_SP-Patterncraft-Effective-Rank" type="number" readonly class="numShort"
title="@{SP-Patterncraft-Effective-Rank}: Characters effective Rank in Patterncraft talent counting any magical threads or other effects that effectively raise the rank above it's base rank." >
</span>
<span>S-Mods: <input name="attr_SP-Patterncraft-Mods" type="number" value="0" class="numShort"
title="@{SP-Patterncraft-Mods}: Modifications to the use of this talent that do NOT increase effective rank."></span>
<span class="nowrap">
<input name="attr_SP-Patterncraft-Step" type="number" readonly class="numShort" value="0"
title="@{SP-Patterncraft-Step}: Final Step for Patterncraft talent. Includes any Vision penalties." ></span>
<span class="nowrap HideIfNotChecked" title="@{SP-Patterncraft-Type} How much does this Talent cost to advance.">
<select name="attr_SP-Patterncraft-Type" class="LockIfChecked txtShort">
<option value="Novice" selected title="This is a Novice Talent." >Novice</option>
<option value="Journeyman" title="This is a Journeyman Talent." >Journeyman</option>
<option value="Warden" title="This is a Warden Talent." >Warden</option>
<option value="Master" title="This is a Master Talent." >Master</option>
</select></span>
<span class="HideIfNotChecked nowrap api" title="@{SP-Patterncraft-Karma-Control} Under what circumstances should we add karma to Talent tests?">Karma:
<select name="attr_SP-Patterncraft-Karma-Control" class="selShort">
<option value="-1" title="Never use karma on tests for this Talent. This overrides the 'Add Karma to rolls' control."> Never</option>
<option value="0" selected title="Look at the 'Add Karma to rolls' control to determine if should use Karma on tests for this Talent.">Sometimes </option>
<option value="1" title="If there is unspent karma, always use karma on tests for this Talent. This overrides the 'Add Karma to rolls' control.">Always </option>
<option value="2" title="If there is unspent karma, always use 2 karma on tests for this Talent. This overrides the 'Add Karma to rolls' control.">2 Always</option>
<option value="3" title="If there is unspent karma, always use 3 karma on tests for this Talent. This overrides the 'Add Karma to rolls' control.">3 Always</option>
<option value="K-ask: ?{How many Karma to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many karma should be spent."> Ask</option>
</select></span>
<input class="testCloseChecked hidden" name="attr_Questor" type="checkbox" value="None" />
<span class="nowrap HideIfNotChecked HideIfCloseChecked api" title="@{SP-Patterncraft-DP-Control} Under what circumstances should we add Devotion Points to Patterncraft tests?">DP:
<select name="attr_SP-Patterncraft-DP-Control" class="selShort">
<option value="-1" selected title="Never use Devotion Points on tests for this Talent. This overrides the 'Use Dev Pnts in rolls' control."> Never</option>
<option value="0" title="Look at the 'Use Dev Pnts in rolls' control to determine if should use Devotion Points in tests for this Talent.">Sometimes </option>
<option value="1" title="If there are unspent Devotion Points, always use DP in tests for this Talent. This overrides the 'Use Dev Pnts rolls' control.">Always </option>
<option value="2" title="If there are unspent Devotion Points, always use 2 DP in tests for this Talent. This overrides the 'Use Dev Pnts in rolls' control.">2 Always</option>
<option value="3" title="If there are unspent Devotion Points, always use 3 DP in tests for this Talent. This overrides the 'Use Dev Pnts in rolls' control.">3 Always</option>
<option value="DP-ask: ?{How many Devotion Points to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many Devotion Points should be spent."> Ask</option>
</select></span>
<span class="HideIfChecked">Actn: <b class="nowrap">Std</b></span>
<button class="text-button api" name="roll_SP-Patterncraft" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{SP-Patterncraft-Karma-Control}~ @{SP-Patterncraft-DP-Control}~ Target: Ask: ?{Target Number|0}~ foreach~ Value: SP-Patterncraft-Step~ Roll: ?{Modification|0}"
title="%{selected|roll_SP-Patterncraft} Roll a Patterncraft Test.">Patterncraft</button>
<button class="text-button NoAPI" name="roll_SP-Patterncraft-NoAPI" type="roll"
value="@{RollType-NoAPI} &{template:default} {{name=Patterncraft}} {{Step=[[?{Step|@{SP-Patterncraft-Step}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result=[[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"
title="%{selected|roll_SP-Patterncraft} Roll a Patterncraft Test.">Patterncraft</button>
</div>
<input name="attr_SP-Elementalist" class="hidden testCloseChecked" type="checkbox" value="1"/>
<div class="HideIfNotCloseChecked">
<b class="w7">Elementalism:</b>Rank:
<span class="HideIfNotChecked">Base/Mods <input name="attr_SP-Elementalism-Rank" type="number" value="0" min="0" class="numShort"
title="@{SP-Elementalism-Rank}: Characters real Rank in Elementalism talent." >/</span>
<span class="HideIfNotChecked"><input name="attr_SP-Elementalism-Rank-Mods" type="number" value="0" min="0" class="numShort"
title="@{SP-Elementalism-Rank-Mods}: Modifications to the use of this talent that increases effective rank." ></span>
<span class="nowrap"><input name="attr_SP-Elementalism-Effective-Rank" type="number" readonly class="numShort"
title="@{SP-Elementalism-Effective-Rank}: Characters effective Rank in Elementalism talent counting any magical threads or other effects that effectively raise the rank above it's base rank." >
</span>
<span>S-Mods: <input name="attr_SP-Elementalism-Mods" type="number" value="0" class="numShort"
title="@{SP-Elementalism-Mods}: Modifications to the use of this talent that do NOT increase effective rank."></span>
<span class="nowrap">
<input name="attr_SP-Elementalism-Step" type="number" readonly class="numShort" value="0"
title="@{SP-Elementalism-Step}: Final Step for Elementalism talent." ></span>
<span class="nowrap HideIfNotChecked" title="@{SP-Patterncraft-Type} How much does this Talent cost to advance.">
<select name="attr_SP-Patterncraft-Type" class="LockIfChecked txtShort">
<option value="Novice" selected title="This is a Novice Talent." >Novice</option>
<option value="Journeyman" title="This is a Journeyman Talent." >Journeyman</option>
<option value="Warden" title="This is a Warden Talent." >Warden</option>
<option value="Master" title="This is a Master Talent." >Master</option>
</select></span>
<span class="HideIfNotChecked nowrap api" title="@{SP-Elementalism-Karma-Control} Under what circumstances should we add karma to Talent tests?">Karma:
<select name="attr_SP-Elementalism-Karma-Control" class="selShort">
<option value="-1" title="Never use karma on tests for this Talent. This overrides the 'Add Karma to rolls' control."> Never</option>
<option value="0" selected title="Look at the 'Add Karma to rolls' control to determine if should use Karma on tests for this Talent.">Sometimes </option>
<option value="1" title="If there is unspent karma, always use karma on tests for this Talent. This overrides the 'Add Karma to rolls' control.">Always </option>
<option value="2" title="If there is unspent karma, always use 2 karma on tests for this Talent. This overrides the 'Add Karma to rolls' control.">2 Always</option>
<option value="3" title="If there is unspent karma, always use 3 karma on tests for this Talent. This overrides the 'Add Karma to rolls' control.">3 Always</option>
<option value="K-ask: ?{How many Karma to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many karma should be spent."> Ask</option>
</select></span>
<input class="testCloseChecked hidden" name="attr_Questor" type="checkbox" value="None" />
<span class="nowrap HideIfNotChecked HideIfCloseChecked api" title="@{SP-Elementalism-DP-Control} Under what circumstances should we add Devotion Points to Elementalism tests?">DP:
<select name="attr_SP-Elementalism-DP-Control" class="selShort">
<option value="-1" selected title="Never use Devotion Points on tests for this Talent. This overrides the 'Use Dev Pnts in rolls' control."> Never</option>
<option value="0" title="Look at the 'Use Dev Pnts in rolls' control to determine if should use Devotion Points in tests for this Talent.">Sometimes </option>
<option value="1" title="If there are unspent Devotion Points, always use DP in tests for this Talent. This overrides the 'Use Dev Pnts rolls' control.">Always </option>
<option value="2" title="If there are unspent Devotion Points, always use 2 DP in tests for this Talent. This overrides the 'Use Dev Pnts in rolls' control.">2 Always</option>
<option value="3" title="If there are unspent Devotion Points, always use 3 DP in tests for this Talent. This overrides the 'Use Dev Pnts in rolls' control.">3 Always</option>
<option value="DP-ask: ?{How many Devotion Points to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many Devotion Points should be spent."> Ask</option>
</select></span>
<span class="HideIfChecked">Actn: <b class="nowrap">Std</b></span>
<button class="text-button api" name="roll_SP-Elementalism" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{SP-Elementalism-Karma-Control}~ @{SP-Elementalism-DP-Control}~ foreach~ Value: SP-Elementalism-Step~ Roll: ?{Modification|0}"
title="%{selected|roll_SP-Elementalism} Roll a Elementalism Test.">Elementalism</button>
<button class="text-button NoAPI" name="roll_SP-Elementalism-NoAPI" type="roll"
value="@{RollType-NoAPI} &{template:default} {{name=Elementalism}} {{Step=[[?{Step|@{SP-Elementalism-Step}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result=[[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"
title="%{selected|roll_SP-Elementalism} Roll a Elementalism Test.">Elementalism</button>
</div>
<input name="attr_SP-Illusionist" class="hidden testCloseChecked" type="checkbox" value="1"/>
<div class="HideIfNotCloseChecked">
<b class="w7">Illusionism:</b>Rank:
<span class="HideIfNotChecked">Base/Mods <input name="attr_SP-Illusionism-Rank" type="number" value="0" min="0" class="numShort"
title="@{SP-Illusionism-Rank}: Characters real Rank in Illusionism talent." >/</span>
<span class="HideIfNotChecked"><input name="attr_SP-Illusionism-Rank-Mods" type="number" value="0" min="0" class="numShort"
title="@{SP-Illusionism-Rank-Mods}: Modifications to the use of this talent that increases effective rank." ></span>
<span class="nowrap"><input name="attr_SP-Illusionism-Effective-Rank" type="number" readonly class="numShort"
title="@{SP-Illusionism-Effective-Rank}: Characters effective Rank in Illusionism talent counting any magical threads or other effects that effectively raise the rank above it's base rank." >
</span>
<span>S-Mods: <input name="attr_SP-Illusionism-Mods" type="number" value="0" class="numShort"
title="@{SP-Illusionism-Mods}: Modifications to the use of this talent that do NOT increase effective rank."></span>
<span class="nowrap">
<input name="attr_SP-Illusionism-Step" type="number" readonly class="numShort" value="0"
title="@{SP-Illusionism-Step}: Final Step for Illusionism talent." ></span>
<span class="nowrap HideIfNotChecked" title="@{SP-Patterncraft-Type} How much does this Talent cost to advance.">
<select name="attr_SP-Illusionism-Type" class="LockIfChecked txtShort">
<option value="Novice" selected title="This is a Novice Talent." >Novice</option>
<option value="Journeyman" title="This is a Journeyman Talent." >Journeyman</option>
<option value="Warden" title="This is a Warden Talent." >Warden</option>
<option value="Master" title="This is a Master Talent." >Master</option>
</select></span>
<span class="HideIfNotChecked nowrap api" title="@{SP-Illusionism-Karma-Control} Under what circumstances should we add karma to Talent tests?">Karma:
<select name="attr_SP-Illusionism-Karma-Control" class="selShort">
<option value="-1" title="Never use karma on tests for this Talent. This overrides the 'Add Karma to rolls' control."> Never</option>
<option value="0" selected title="Look at the 'Add Karma to rolls' control to determine if should use Karma on tests for this Talent.">Sometimes </option>
<option value="1" title="If there is unspent karma, always use karma on tests for this Talent. This overrides the 'Add Karma to rolls' control.">Always </option>
<option value="2" title="If there is unspent karma, always use 2 karma on tests for this Talent. This overrides the 'Add Karma to rolls' control.">2 Always</option>
<option value="3" title="If there is unspent karma, always use 3 karma on tests for this Talent. This overrides the 'Add Karma to rolls' control.">3 Always</option>
<option value="K-ask: ?{How many Karma to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many karma should be spent."> Ask</option>
</select></span>
<input class="testCloseChecked hidden" name="attr_Questor" type="checkbox" value="None" />
<span class="nowrap HideIfNotChecked HideIfCloseChecked api" title="@{SP-Illusionism-DP-Control} Under what circumstances should we add Devotion Points to Illusionism tests?">DP:
<select name="attr_SP-Illusionism-DP-Control" class="selShort">
<option value="-1" selected title="Never use Devotion Points on tests for this Talent. This overrides the 'Use Dev Pnts in rolls' control."> Never</option>
<option value="0" title="Look at the 'Use Dev Pnts in rolls' control to determine if should use Devotion Points in tests for this Talent.">Sometimes </option>
<option value="1" title="If there are unspent Devotion Points, always use DP in tests for this Talent. This overrides the 'Use Dev Pnts rolls' control.">Always </option>
<option value="2" title="If there are unspent Devotion Points, always use 2 DP in tests for this Talent. This overrides the 'Use Dev Pnts in rolls' control.">2 Always</option>
<option value="3" title="If there are unspent Devotion Points, always use 3 DP in tests for this Talent. This overrides the 'Use Dev Pnts in rolls' control.">3 Always</option>
<option value="DP-ask: ?{How many Devotion Points to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many Devotion Points should be spent."> Ask</option>
</select></span>
<span class="HideIfChecked">Actn: <b class="nowrap">Std</b></span>
<button class="text-button api" name="roll_SP-Illusionism" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{SP-Illusionism-Karma-Control}~ @{SP-Illusionism-DP-Control}~ foreach~ Value: SP-Illusionism-Step~ Roll: ?{Modification|0}"
title="%{selected|roll_SP-Illusionism} Roll a Illusionism Test.">Illusionism</button>
<button class="text-button NoAPI" name="roll_SP-Illusionism-NoAPI" type="roll"
value="@{RollType-NoAPI} &{template:default} {{name=Illusionism}} {{Step=[[?{Step|@{SP-Illusionism-Step}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result=[[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"
title="%{selected|roll_SP-Illusionism} Roll a Illusionism Test.">Illusionism</button>
</div>
<input name="attr_SP-Nethermancer" class="hidden testCloseChecked" type="checkbox" value="1"/>
<div class="HideIfNotCloseChecked">
<b class="w7">Nethermancy:</b>Rank:
<span class="HideIfNotChecked">Base/Mods <input name="attr_SP-Nethermancy-Rank" type="number" value="0" min="0" class="numShort"
title="@{SP-Nethermancy-Rank}: Characters real Rank in Nethermancy talent." >/</span>
<span class="HideIfNotChecked"><input name="attr_SP-Nethermancy-Rank-Mods" type="number" value="0" min="0" class="numShort"
title="@{SP-Nethermancy-Rank-Mods}: Modifications to the use of this talent that increases effective rank." ></span>
<span class="nowrap"><input name="attr_SP-Nethermancy-Effective-Rank" type="number" readonly class="numShort"
title="@{SP-Nethermancy-Effective-Rank}: Characters effective Rank in Nethermancy talent counting any magical threads or other effects that effectively raise the rank above it's base rank." >
</span>
<span>S-Mods: <input name="attr_SP-Nethermancy-Mods" type="number" value="0" class="numShort"
title="@{SP-Nethermancy-Mods}: Modifications to the use of this talent that do NOT increase effective rank."></span>
<span class="nowrap">
<input name="attr_SP-Nethermancy-Step" type="number" readonly class="numShort" value="0"
title="@{SP-Nethermancy-Step}: Final Step for Nethermancy talent." ></span>
<span class="nowrap HideIfNotChecked" title="@{SP-Nethermancy-Type} How much does this Talent cost to advance.">
<select name="attr_SP-Nethermancy-Type" class="LockIfChecked txtShort">
<option value="Novice" selected title="This is a Novice Talent." >Novice</option>
<option value="Journeyman" title="This is a Journeyman Talent." >Journeyman</option>
<option value="Warden" title="This is a Warden Talent." >Warden</option>
<option value="Master" title="This is a Master Talent." >Master</option>
</select></span>
<span class="HideIfNotChecked nowrap api" title="@{SP-Nethermancy-Karma-Control} Under what circumstances should we add karma to Talent tests?">Karma:
<select name="attr_SP-Nethermancy-Karma-Control" class="selShort">
<option value="-1" title="Never use karma on tests for this Talent. This overrides the 'Add Karma to rolls' control."> Never</option>
<option value="0" selected title="Look at the 'Add Karma to rolls' control to determine if should use Karma on tests for this Talent.">Sometimes </option>
<option value="1" title="If there is unspent karma, always use karma on tests for this Talent. This overrides the 'Add Karma to rolls' control.">Always </option>
<option value="2" title="If there is unspent karma, always use 2 karma on tests for this Talent. This overrides the 'Add Karma to rolls' control.">2 Always</option>
<option value="3" title="If there is unspent karma, always use 3 karma on tests for this Talent. This overrides the 'Add Karma to rolls' control.">3 Always</option>
<option value="K-ask: ?{How many Karma to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many karma should be spent."> Ask</option>
</select></span>
<input class="testCloseChecked hidden" name="attr_Questor" type="checkbox" value="None" />
<span class="nowrap HideIfNotChecked HideIfCloseChecked api" title="@{SP-Nethermancy-DP-Control} Under what circumstances should we add Devotion Points to Nethermancy tests?">DP:
<select name="attr_SP-Nethermancy-DP-Control" class="selShort">
<option value="-1" selected title="Never use Devotion Points on tests for this Talent. This overrides the 'Use Dev Pnts in rolls' control."> Never</option>
<option value="0" title="Look at the 'Use Dev Pnts in rolls' control to determine if should use Devotion Points in tests for this Talent.">Sometimes </option>
<option value="1" title="If there are unspent Devotion Points, always use DP in tests for this Talent. This overrides the 'Use Dev Pnts rolls' control.">Always </option>
<option value="2" title="If there are unspent Devotion Points, always use 2 DP in tests for this Talent. This overrides the 'Use Dev Pnts in rolls' control.">2 Always</option>
<option value="3" title="If there are unspent Devotion Points, always use 3 DP in tests for this Talent. This overrides the 'Use Dev Pnts in rolls' control.">3 Always</option>
<option value="DP-ask: ?{How many Devotion Points to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many Devotion Points should be spent."> Ask</option>
</select></span>
<span class="HideIfChecked">Actn: <b class="nowrap">Std</b></span>
<button class="text-button api" name="roll_SP-Nethermancy" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{SP-Nethermancy-Karma-Control}~ @{SP-Nethermancy-DP-Control}~ foreach~ Value: SP-Nethermancy-Step~ Roll: ?{Modification|0}"
title="%{selected|roll_SP-Nethermancy} Roll a Nethermancy Test.">Nethermancy</button>
<button class="text-button NoAPI" name="roll_SP-Nethermancy-NoAPI" type="roll"
value="@{RollType-NoAPI} &{template:default} {{name=Nethermancy}} {{Step=[[?{Step|@{SP-Nethermancy-Step}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result=[[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"
title="%{selected|roll_SP-Nethermancy} Roll a Nethermancy Test.">Nethermancy</button>
</div>
<input name="attr_SP-Shaman" class="hidden testCloseChecked" type="checkbox" value="1"/>
<div class="HideIfNotCloseChecked">
<b class="w7">Shamanism:</b>Rank:
<span class="HideIfNotChecked">Base/Mods <input name="attr_SP-Shamanism-Rank" type="number" value="0" min="0" class="numShort"
title="@{SP-Shamanism-Rank}: Characters real Rank in Shamanism talent." >/</span>
<span class="HideIfNotChecked"><input name="attr_SP-Shamanism-Rank-Mods" type="number" value="0" min="0" class="numShort"
title="@{SP-Shamanism-Rank-Mods}: Modifications to the use of this talent that increases effective rank." ></span>
<span class="nowrap"><input name="attr_SP-Shamanism-Effective-Rank" type="number" readonly class="numShort"
title="@{SP-Shamanism-Effective-Rank}: Characters effective Rank in Shamanism talent counting any magical threads or other effects that effectively raise the rank above it's base rank." >
</span>
<span>S-Mods: <input name="attr_SP-Shamanism-Mods" type="number" value="0" class="numShort"
title="@{SP-Shamanism-Mods}: Modifications to the use of this talent that do NOT increase effective rank."></span>
<span class="nowrap">
<input name="attr_SP-Shamanism-Step" type="number" readonly class="numShort" value="0"
title="@{SP-Shamanism-Step}: Final Step for Shamanism talent." ></span>
<span class="nowrap HideIfNotChecked" title="@{SP-Shamanism-Type} How much does this Talent cost to advance.">
<select name="attr_SP-Shamanism-Type" class="LockIfChecked txtShort">
<option value="Novice" selected title="This is a Novice Talent." >Novice</option>
<option value="Journeyman" title="This is a Journeyman Talent." >Journeyman</option>
<option value="Warden" title="This is a Warden Talent." >Warden</option>
<option value="Master" title="This is a Master Talent." >Master</option>
</select></span>
<span class="HideIfNotChecked nowrap api" title="@{SP-Shamanism-Karma-Control} Under what circumstances should we add karma to Talent tests?">Karma:
<select name="attr_SP-Shamanism-Karma-Control" class="selShort">
<option value="-1" title="Never use karma on tests for this Talent. This overrides the 'Add Karma to rolls' control."> Never</option>
<option value="0" selected title="Look at the 'Add Karma to rolls' control to determine if should use Karma on tests for this Talent.">Sometimes </option>
<option value="1" title="If there is unspent karma, always use karma on tests for this Talent. This overrides the 'Add Karma to rolls' control.">Always </option>
<option value="2" title="If there is unspent karma, always use 2 karma on tests for this Talent. This overrides the 'Add Karma to rolls' control.">2 Always</option>
<option value="3" title="If there is unspent karma, always use 3 karma on tests for this Talent. This overrides the 'Add Karma to rolls' control.">3 Always</option>
<option value="K-ask: ?{How many Karma to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many karma should be spent."> Ask</option>
</select></span>
<input class="testCloseChecked hidden" name="attr_Questor" type="checkbox" value="None" />
<span class="nowrap HideIfNotChecked HideIfCloseChecked api" title="@{SP-Shamanism-DP-Control} Under what circumstances should we add Devotion Points to Shamanism tests?">DP:
<select name="attr_SP-Shamanism-DP-Control" class="selShort">
<option value="-1" selected title="Never use Devotion Points on tests for this Talent. This overrides the 'Use Dev Pnts in rolls' control."> Never</option>
<option value="0" title="Look at the 'Use Dev Pnts in rolls' control to determine if should use Devotion Points in tests for this Talent.">Sometimes </option>
<option value="1" title="If there are unspent Devotion Points, always use DP in tests for this Talent. This overrides the 'Use Dev Pnts rolls' control.">Always </option>
<option value="2" title="If there are unspent Devotion Points, always use 2 DP in tests for this Talent. This overrides the 'Use Dev Pnts in rolls' control.">2 Always</option>
<option value="3" title="If there are unspent Devotion Points, always use 3 DP in tests for this Talent. This overrides the 'Use Dev Pnts in rolls' control.">3 Always</option>
<option value="DP-ask: ?{How many Devotion Points to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many Devotion Points should be spent."> Ask</option>
</select></span>
<span class="HideIfChecked">Actn: <b class="nowrap">Std</b></span>
<button class="text-button api" name="roll_SP-Shamanism" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{SP-Shamanism-Karma-Control}~ @{SP-Shamanism-DP-Control}~ foreach~ Value: SP-Shamanism-Step~ Roll: ?{Modification|0}"
title="%{selected|roll_SP-Shamanism} Roll a Shamanism Test.">Shamanism</button>
<button class="text-button NoAPI" name="roll_SP-Shamanism-NoAPI" type="roll"
value="@{RollType-NoAPI} &{template:default} {{name=Shamanism}} {{Step=[[?{Step|@{SP-Shamanism-Step}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result=[[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"
title="%{selected|roll_SP-Shamanism} Roll a Shamanism Test.">Shamanism</button>
</div>
<input name="attr_SP-Wizard" class="hidden testCloseChecked" type="checkbox" value="1"/>
<div class="HideIfNotCloseChecked">
<b class="w7">Wizardry:</b>Rank:
<span class="HideIfNotChecked">Base/Mods <input name="attr_SP-Wizardry-Rank" type="number" value="0" min="0" class="numShort"
title="@{SP-Wizardry-Rank}: Characters real Rank in Wizardry talent." >/</span>
<span class="HideIfNotChecked"><input name="attr_SP-Wizardry-Rank-Mods" type="number" value="0" min="0" class="numShort"
title="@{SP-Wizardry-Rank-Mods}: Modifications to the use of this talent that increases effective rank." ></span>
<span class="nowrap"><input name="attr_SP-Wizardry-Effective-Rank" type="number" readonly class="numShort"
title="@{SP-Wizardry-Effective-Rank}: Characters effective Rank in Wizardry talent counting any magical threads or other effects that effectively raise the rank above it's base rank." >
</span>
<span>S-Mods: <input name="attr_SP-Wizardry-Mods" type="number" value="0" class="numShort"
title="@{SP-Wizardry-Mods}: Modifications to the use of this talent that do NOT increase effective rank."></span>
<span class="nowrap">
<input name="attr_SP-Wizardry-Step" type="number" readonly class="numShort" value="0"
title="@{SP-Wizardry-Step}: Final Step for Wizardry talent." ></span>
<span class="nowrap HideIfNotChecked" title="@{SP-Wizardry-Type} How much does this Talent cost to advance.">
<select name="attr_SP-Wizardry-Type" class="LockIfChecked txtShort">
<option value="Novice" selected title="This is a Novice Talent." >Novice</option>
<option value="Journeyman" title="This is a Journeyman Talent." >Journeyman</option>
<option value="Warden" title="This is a Warden Talent." >Warden</option>
<option value="Master" title="This is a Master Talent." >Master</option>
</select></span>
<span class="HideIfNotChecked nowrap api" title="@{SP-Wizardry-Karma-Control} Under what circumstances should we add karma to Talent tests?">Karma:
<select name="attr_SP-Wizardry-Karma-Control" class="selShort">
<option value="-1" title="Never use karma on tests for this Talent. This overrides the 'Add Karma to rolls' control."> Never</option>
<option value="0" selected title="Look at the 'Add Karma to rolls' control to determine if should use Karma on tests for this Talent.">Sometimes </option>
<option value="1" title="If there is unspent karma, always use karma on tests for this Talent. This overrides the 'Add Karma to rolls' control.">Always </option>
<option value="2" title="If there is unspent karma, always use 2 karma on tests for this Talent. This overrides the 'Add Karma to rolls' control.">2 Always</option>
<option value="3" title="If there is unspent karma, always use 3 karma on tests for this Talent. This overrides the 'Add Karma to rolls' control.">3 Always</option>
<option value="K-ask: ?{How many Karma to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many karma should be spent."> Ask</option>
</select></span>
<input class="testCloseChecked hidden" name="attr_Questor" type="checkbox" value="None" />
<span class="nowrap HideIfNotChecked HideIfCloseChecked api" title="@{SP-Wizardry-DP-Control} Under what circumstances should we add Devotion Points to Wizardry tests?">DP:
<select name="attr_SP-Wizardry-DP-Control" class="selShort">
<option value="-1" selected title="Never use Devotion Points on tests for this Talent. This overrides the 'Use Dev Pnts in rolls' control."> Never</option>
<option value="0" title="Look at the 'Use Dev Pnts in rolls' control to determine if should use Devotion Points in tests for this Talent.">Sometimes </option>
<option value="1" title="If there are unspent Devotion Points, always use DP in tests for this Talent. This overrides the 'Use Dev Pnts rolls' control.">Always </option>
<option value="2" title="If there are unspent Devotion Points, always use 2 DP in tests for this Talent. This overrides the 'Use Dev Pnts in rolls' control.">2 Always</option>
<option value="3" title="If there are unspent Devotion Points, always use 3 DP in tests for this Talent. This overrides the 'Use Dev Pnts in rolls' control.">3 Always</option>
<option value="DP-ask: ?{How many Devotion Points to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many Devotion Points should be spent."> Ask</option>
</select></span>
<span class="HideIfChecked">Actn: <b class="nowrap">Std</b></span>
<button class="text-button api" name="roll_SP-Wizardry" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{SP-Wizardry-Karma-Control}~ @{SP-Wizardry-DP-Control}~ foreach~ Value: SP-Wizardry-Step~ Roll: ?{Modification|0}"
title="%{selected|roll_SP-Wizardry} Roll a Wizardry Test.">Wizardry</button>
<button class="text-button NoAPI" name="roll_SP-Wizardry-NoAPI" type="roll"
value="@{RollType-NoAPI} &{template:default} {{name=Wizardry}} {{Step=[[?{Step|@{SP-Wizardry-Step}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result=[[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"
title="%{selected|roll_SP-Wizardry} Roll a Wizardry Test.">Wizardry</button>
</div>
<input name="attr_SP-Power" class="hidden testCloseChecked" type="checkbox" value="1"/>
<span class="HideIfNotCloseChecked">
<b class="w7" title="Creature Powers and Other non-magician spell-like abilities">Other&amp;Power:</b>Rank:
<span class="HideIfNotChecked">Base/Mods <input name="attr_SP-Power-Rank" type="number" value="0" min="0" class="numShort"
title="@{SP-Power-Rank}: Creatures real Rank in Powers ability." >/</span>
<span class="HideIfNotChecked"><input name="attr_SP-Power-Rank-Mods" type="number" value="0" min="0" class="numShort"
title="@{SP-Power-Rank-Mods}: Modifications to the use of this power that increases effective rank." ></span>
<span class="nowrap"><input name="attr_SP-Power-Effective-Rank" type="number" readonly class="numShort"
title="@{SP-Power-Effective-Rank}: Creatures effective Rank in Power counting any magical threads or other effects that effectively raise the rank above it's base rank." >
</span>
<span>S-Mods: <input name="attr_SP-Power-Mods" type="number" value="0" class="numShort"
title="@{SP-Power-Mods}: Modifications to the use of this Power that do NOT increase effective rank."></span>
<span class="nowrap">
<input name="attr_SP-Power-Step" type="number" readonly class="numShort" value="0"
title="@{SP-Power-Step}: Final Step for Power." ></span>
</span>
<span class="nowrap HideIfNotChecked" title="@{SP-Power-Type} How much does this Talent cost to advance.">
<select name="attr_SP-Power-Type" class="LockIfChecked txtShort">
<option value="Novice" selected title="This is a Novice Talent." >Novice</option>
<option value="Journeyman" title="This is a Journeyman Talent." >Journeyman</option>
<option value="Warden" title="This is a Warden Talent." >Warden</option>
<option value="Master" title="This is a Master Talent." >Master</option>
</select></span>
<span class="HideIfNotChecked nowrap api" title="@{SP-Power-Karma-Control} *** It will use this if you Weave a Thread using the 'Cast' button or a Token Action. *** Under what circumstances should we add karma to Power tests?">Karma:
<select name="attr_SP-Power-Karma-Control" class="selShort">
<option value="-1" title="Never use karma on tests for Powers. This overrides the 'Add Karma to rolls' control."> Never</option>
<option value="0" selected title="Look at the 'Add Karma to rolls' control to determine if should use Karma on tests for Powers.">Sometimes </option>
<option value="1" title="If there is unspent karma, always use karma on tests for Powers. This overrides the 'Add Karma to rolls' control.">Always </option>
<option value="2" title="If there is unspent karma, always use 2 karma on tests for Powers. This overrides the 'Add Karma to rolls' control.">2 Always</option>
<option value="3" title="If there is unspent karma, always use 3 karma on tests for Powers. This overrides the 'Add Karma to rolls' control.">3 Always</option>
<option value="K-ask: ?{How many Karma to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many karma should be spent."> Ask</option>
</select></span>
<input class="testCloseChecked hidden" name="attr_Questor" type="checkbox" value="None" />
<span class="nowrap HideIfNotChecked HideIfCloseChecked api" title="@{SP-Power-DP-Control} *** It will use this if you Weave a Thread using the 'Cast' button or a Token Action. *** Under what circumstances should we add Devotion Points to Power tests?">DP:
<select name="attr_SP-Power-DP-Control" class="selShort">
<option value="-1" selected title="Never use Devotion Points on tests for Powers. This overrides the 'Use Dev Pnts in rolls' control."> Never</option>
<option value="0" title="Look at the 'Use Dev Pnts in rolls' control to determine if should use Devotion Points in tests for Powers.">Sometimes </option>
<option value="1" title="If there are unspent Devotion Points, always use DP in tests for Powers. This overrides the 'Use Dev Pnts rolls' control.">Always </option>
<option value="2" title="If there are unspent Devotion Points, always use 2 DP in tests for Powers. This overrides the 'Use Dev Pnts in rolls' control.">2 Always</option>
<option value="3" title="If there are unspent Devotion Points, always use 3 DP in tests for Powers. This overrides the 'Use Dev Pnts in rolls' control.">3 Always</option>
<option value="DP-ask: ?{How many Devotion Points to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many Devotion Points should be spent."> Ask</option>
</select></span>
<input name="attr_SP-Power" class="hidden testCloseChecked" type="checkbox" value="1"/>
<span class="HideIfNotCloseChecked">
<span class="HideIfChecked">Actn: <b class="nowrap">Std</b></span>
<button class="text-button api" name="roll_SP-Power" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{SP-Power-Karma-Control}~ @{SP-Power-DP-Control}~ foreach~ Value: SP-Power-Step~ Roll: ?{Modification|0}"
title="%{selected|roll_SP-Power} Roll a Other & Powers Test.">Power</button>
<button class="text-button NoAPI" name="roll_SP-Power-NoAPI" type="roll"
value="@{RollType-NoAPI} &{template:default} {{name=Other & Powers}} {{Step=[[?{Step|@{SP-Power-Step}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result=[[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"
title="%{selected|roll_SP-Power} Roll a Other & Powers Test.">Power</button>
</span>
<input name="attr_SP-WillforceShow" class="hidden testCloseChecked" type="checkbox" value="1"/>
<div class="HideIfNotCloseChecked">
<b class="w7">Willforce:</b>Rank:
<span class="HideIfNotChecked">Base/Mods <input name="attr_SP-Willforce-Rank" type="number" value="0" min="0" class="numShort"
title="@{SP-Willforce-Rank}: Characters real Rank in Wiillforce talent." >/</span>
<span class="HideIfNotChecked"><input name="attr_SP-Willforce-Rank-Mods" type="number" value="0" min="0" class="numShort"
title="@{SP-Willforce-Rank-Mods}: Modifications to the use of this talent that increases effective rank." ></span>
<span class="nowrap"><input name="attr_SP-Willforce-Effective-Rank" type="number" readonly class="numShort"
title="@{SP-Willforce-Effective-Rank}: Characters effective Rank in Willforce talent counting any magical threads or other effects that effectively raise the rank above it's base rank." >
</span>
<span>S-Mods: <input name="attr_SP-Willforce-Mods" type="number" value="0" class="numShort"
title="@{SP-Willforce-Mods}: Modifications to the use of this talent that do NOT increase effective rank."></span>
<span class="nowrap" title="@{SP-Willforce-Use} Use Willforce for next WIL effect">
<input name="attr_SP-Willforce-Use" type="checkbox" value="1"/> Use Willforce</span>
<span class="nowrap">
<input name="attr_SP-Willforce-Step" type="number" readonly class="numShort" value="5"
title="@{SP-Willforce-Step}: Final Step for Willforce talent." ></span>
Strain: <b class="nowrap">1</b>
Action: <b class="nowrap">Free</b>
<span class="nowrap HideIfNotChecked" title="@{SP-Willforce-Type} How much does this Talent cost to advance.">
<select name="attr_SP-Willforce-Type" class="LockIfChecked txtShort">
<option value="Novice" selected title="This is a Novice Talent." >Novice</option>
<option value="Journeyman" title="This is a Journeyman Talent." >Journeyman</option>
<option value="Warden" title="This is a Warden Talent." >Warden</option>
<option value="Master" title="This is a Master Talent." >Master</option>
</select></span>
<span class="HideIfNotChecked nowrap api" title="@{SP-Willforce-Karma-Control} Under what circumstances should we add karma to tests that use Willforce?">Karma:
<select name="attr_SP-Willforce-Karma-Control" class="selShort">
<option value="-1" title="Never use karma on tests for this Talent. This overrides the 'Add Karma to rolls' control."> Never</option>
<option value="0" selected title="Look at the 'Add Karma to rolls' control to determine if should use Karma on tests for this Talent.">Sometimes </option>
<option value="1" title="If there is unspent karma, always use karma on tests for this Talent. This overrides the 'Add Karma to rolls' control.">Always </option>
<option value="2" title="If there is unspent karma, always use 2 karma on tests for this Talent. This overrides the 'Add Karma to rolls' control.">2 Always</option>
<option value="3" title="If there is unspent karma, always use 3 karma on tests for this Talent. This overrides the 'Add Karma to rolls' control.">3 Always</option>
<option value="K-ask: ?{How many Karma to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many karma should be spent."> Ask</option>
</select></span>
<input class="testCloseChecked hidden" name="attr_Questor" type="checkbox" value="None" />
<span class="nowrap HideIfNotChecked HideIfCloseChecked api" title="@{SP-Willforce-DP-Control} Under what circumstances should we add Devotion Points to Willforce tests?">DP:
<select name="attr_SP-Willforce-DP-Control" class="selShort">
<option value="-1" selected title="Never use Devotion Points on tests for this Talent. This overrides the 'Use Dev Pnts in rolls' control."> Never</option>
<option value="0" title="Look at the 'Use Dev Pnts in rolls' control to determine if should use Devotion Points in tests for this Talent.">Sometimes </option>
<option value="1" title="If there are unspent Devotion Points, always use DP in tests for this Talent. This overrides the 'Use Dev Pnts rolls' control.">Always </option>
<option value="2" title="If there are unspent Devotion Points, always use 2 DP in tests for this Talent. This overrides the 'Use Dev Pnts in rolls' control.">2 Always</option>
<option value="3" title="If there are unspent Devotion Points, always use 3 DP in tests for this Talent. This overrides the 'Use Dev Pnts in rolls' control.">3 Always</option>
<option value="DP-ask: ?{How many Devotion Points to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many Devotion Points should be spent."> Ask</option>
</select></span>
</div>
<div class="repeat-counter-reset">
Spell Matrices<br>
<span>
<b class="heading vaBottom">&nbsp;#&nbsp;</b>&nbsp;&nbsp;&nbsp;
<b class="heading vaBottom">&nbsp;Matrix Type&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading vaBottom">&nbsp;Origin&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading vaBottom">&nbsp;Rank&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading vaBottom">&nbsp;DR&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading vaBottom">&nbsp;M Thr&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading vaBottom">&nbsp;Contents&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<span class="nowrap">
<input name="attr_Will-Eff-Mods" type="number" value="0" class="numShort" title="@{Will-Eff-Mods} Modifications to (only) the base Will Effect Roll button near this field. For Modifications to ALL Will Effects, use the field AFTER the Will Effect Roll button.">
<input name="attr_Will-Effect" type="number" readonly value="5" class="numShort"
title="@{Will-Effect} Effect Step of this Will based attack.">
<button class="text-button api" name="roll_Will-Effect-R" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{SP-WilEffect-Kask-Button} foreach~ Value: Will-Effect~ Roll: ?{Modification|0}"
title="@{Will-Effect-R} Roll a generic Will Effect modified by combat options and conditions.">Will Effect</button>
<button class="text-button NoAPI" name="roll_Will-Effect-NoAPI" type="roll"
value="@{RollType-NoAPI} &{template:default} {{name=Will Effect}} {{Step=[[?{Step|@{Will-Effect}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result=[[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"
title="@{Will-Effect-NoAPI} Roll a Will Effect modified by combat options and conditions.">Will Effect</button>
<input name="attr_Will-Eff-All-Mods" type="number" value="0" class="numShort" title="@{Will-Eff-All-Mods} Modifications to ALL Will Effect rolls.">
</span>
</span>
<fieldset class="repeating_matrix">
<span class="hidden">
<input name="attr_SPM_RowID" type="text" >
<input name="attr_SPM_spRowID" type="text" > <!-- This is the Grimiour row ID -->
<input name="attr_SPM_KaskWeave" type="text" value=""> <!-- If we need to ask about karma usage of the weaving test, this will hold the question, else it will be blank. -->
</span>
<span class="nowrap repeat-count">
<select name="attr_SPM_Type" class="nowrap txtShort" title="@{repeating_matrix_X_SPM_Type} Type of Spell Matrix">
<option value="-10" selected title="Standard Matrix: Death Rating 10, Can not hold threads.">Standard</option>
<option value="15" title="Enhanced Matrix: Death Rating 15, Can hold one thread.">Enhanced</option>
<option value="25" title="Armored Matrix: Death Rating 25, Can hold one thread.">Armored</option>
<option value="-20" title="Shared Matrix: Death Rating 20, Can not hold threads, May hold several spells as long as their combined circles do not exceed the rating.">Shared</option>
</select></span>
<select name="attr_SPM_Origin" class="nowrap" style="width:6.3em;" title="@{repeating_matrix_X_SPM_Origin} Origin of Matrix">
<option value="Free" selected title="Free: This is a free matrix granted by the spellcasters first spellcasting discipliine.">Free</option>
<option value="TO1-Novice" title="Talent Option - Novice: This is Talent Option Matrix.">TO-Novice</option>
<option value="TO1-Journeyman" title="Talent Option - Journeyman: This is Talent Option Matrix.">TO-Journeyman</option>
<option value="TO1-Warden" title="Talent Option - Warden: This is Talent Option Matrix.">TO-Warden</option>
<option value="TO1-Master" title="Talent Option - Master: This is Talent Option Matrix.">TO-Master</option>
<option value="Sharing" title="Sharing: This is not an actual separate matrix within the game, It merely represents a spell sharing a matrix with other spells, ether because it is a shared matrix, or the spells are designed such that different spells can share the same matrix. Obviously, these 'sharing' matrices can only be used if the correct other spells are located within the correct real matrices.">Sharing</option>
<option value="Item" title="Item: This is from a matrix item.">Item</option>
<option value="Versatility" title="Versatility: This is a Versatility Talent.">Versatility</option>
<option value="Other" title="Other:.">Other</option>
<option value="TO2-Novice" title="This is a Novice Talent Option for this characters 2nd Discipline." >TO2-Novice</option>
<option value="TO2-Journeyman" title="This is a Journeyman Talent Option for this characters 2nd Discipline." >TO2-Journeyman</option>
<option value="TO2-Warden" title="This is a Warden Talent Option for this characters 2nd Discipline." >TO2-Warden</option>
<option value="TO2-Master" title="This is a Master Talent Option for this characters 2nd Discipline." >TO2-Master</option>
<option value="TO3-Novice" title="This is a Novice Talent Option for this characters 3rd Discipline." >TO3-Novice</option>
<option value="TO3-Journeyman" title="This is a Journeyman Talent Option for this characters 3rd Discipline." >TO3-Journeyman</option>
<option value="TO3-Warden" title="This is a Warden Talent Option for this characters 3rd Discipline." >TO3-Warden</option>
<option value="TO3-Master" title="This is a Master Talent Option for this characters 3rd Discipline." >TO3-Master</option>
<option value="TO4-Novice" title="This is a Novice Talent Option for this characters 4th Discipline." >TO4-Novice</option>
<option value="TO4-Journeyman" title="This is a Journeyman Talent Option for this characters 4th Discipline." >TO4-Journeyman</option>
<option value="TO4-Warden" title="This is a Warden Talent Option for this characters 4th Discipline." >TO4-Warden</option>
<option value="TO4-Master" title="This is a Master Talent Option for this characters 4th Discipline." >TO4-Master</option>
</select>
<span class="nowrap">
<input name="attr_SPM_Rank" type="number" value="0" min="0" class="nowrap numShort"
title="@{repeating_matrix_X_SPM_Rank}: Matrix Rank." ></span>
<span class="nowrap">
<input name="attr_SPM_DR" type="number" value="" class="numShort" readonly
title="@{repeating_matrix_X_SPM_DR}: Death Rating of this Matrix." ></span>
<span class="nowrap">
<input name="attr_SPM_mThreads" type="number" class="numShort" value="" readonly
title="@{repeating_matrix_X_mThreads}: Number of Threads held by this Matrix." ></span>
<label class="label-under2 autoexpand-wrap" title="@{repeating_matrix_X_SPM_Contains}: Name of the Spell currently in this Matrix." >
<input type="text" name="attr_SPM_Contains"/>
<span name="attr_SPM_Contains" class="autoexpand"></span>
</label>
<button class="text-button label-under button-nodice api" name="roll_SPM_Cast-R" type="roll"
value="!Earthdawn~ charID: @{character_id}~ ?{What|Start New Casting,ForEach: inmt~ Spell: @{SPM_RowID}: New : M|Weave Threads, @{SPM_KaskWeave} ForEach: inmt~ Spell: @{SPM_RowID}: Weave: ?{Modifier&amp;#124;0&amp;#125;|Cast, Target: @{SPM_Casting}~ @{SP-Spellcasting-Kask} ForEach: inmt~ Spell: @{SPM_RowID}: Cast: ?{Modifier&amp;#124;0&amp;#125;|Effect, @{SP-WilEffect-Kask-DropDown} ForEach: inmt~ Spell: @{SPM_RowID}: Effect: ?{Modifier&amp;#124;0&amp;#125;}"
title="%{selected|SPM_Cast-R} Start a new Spell, or Roll to Weave Threads, Spellcasting, or an Effect test for this spell.">
Cast</button>
<input type="radio" name="attr_SPM_showDetails" class="show-all" value="1" checked title="Show All Details - All the details are displayed, including fields only used during set-up that are usually not needed during play." /><span class="option">+</span>
<input type="radio" name="attr_SPM_showDetails" class="show-most" value="2" title="Show Most Details - The details used during play are displayed, but not the fields that are usually needed only during initial setup."/><span class="option">9</span>
<input type="radio" name="attr_SPM_showDetails" class="hide-all" value="3" title="Hide All Details - Only a single line of the most important information is displayed, all the details are hidden." /><span class="option">-</span>
<div class="sect">
<span class="nowrap label-under" title="@{repeating_matrix_X_SPM_sThreads}: Number of Threads required for this spell.">
<input name="attr_SPM_sThreads" type="number" value="0" min="0" class="api numShort" readonly>
<input name="attr_SPM_sThreads" type="number" value="0" min="0" class="NoAPI numShort">
<span>Threads</span></span>
<span>
<label class="label-under2 autoexpand-wrap HideIfEdition3" title="@{repeating_matrix_X_SPM_Numbers}: Weaving difficulty / Reattunment difficulty / Dispelling difficulty / Sensing difficulty.">
<input name="attr_SPM_Numbers" type="text" class="api" readonly/>
<input name="attr_SPM_Numbers" type="text" class="NoAPI"/>
<span name="attr_SPM_Numbers" class="autoexpand"></span>
<span>Wv/Ratn/Dspl/Sns</span></label> <!-- Third Edition has Disbelief numbers -->
<label class="label-under2 autoexpand-wrap HideIfNotEdition3" title="@{repeating_matrix_X_SPM_Numbers}: Weaving difficulty / Reattunment difficulty / Dispelling difficulty / Disbelief difficulty / Sensing difficulty.">
<input name="attr_SPM_Numbers" type="text" />
<span name="attr_SPM_Numbers" class="autoexpand"></span>
<span>Wv/Ratn/Dspl/Dblf/Sns</span></label>
<span class="nowrap label-under" title="@{repeating_spell_X_SPM_Casting}: Difficulty for spellcasting test.">
<select name="attr_SPM_Casting" class="selShort">
<!-- <option value="MD1: @{target|Target|token_id}">TMD &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A single targets Mystic Defense</option> -->
<option value="MDh" selected>hMD &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Highest Mystic Defense among all targets</option>
<option value="MDhp1p">hMD+ &nbsp;&nbsp;&nbsp; Highest Mystic Defense among all targets, plus one per additional target</option>
<option value="Ask: ?{Target Number&amp;#124;0&amp;#125;" >Ask &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ask for a target number when the roll is made</option>
<option value="2" >2</option>
<option value="3" >3</option>
<option value="4" >4</option>
<option value="5" >5</option>
<option value="6" >6</option>
<option value="7" >7</option>
<option value="8" >8</option>
<option value="9" >9</option>
<option value="10" >10</option>
<option value="11" >11</option>
<option value="12" >12</option>
<option value="13" >13</option>
<option value="14" >14</option>
<option value="15" >15</option>
</select><span>Casting</span></span>
<label class="label-under2 autoexpand-wrap" title="@{repeating_matrix_X_SPM_Range}: Range spell can be cast, Usually in Yards though it may be Touch or Self.">
<input name="attr_SPM_Range" type="text" class="api" readonly/>
<input name="attr_SPM_Range" type="text" class="NoAPI"/>
<span name="attr_SPM_Range" class="autoexpand"></span>
<span>Range</span>
</label>
<input class="testAoE" name="attr_SPM_AoE" value="" type="hidden"/>
<label class="label-under2 autoexpand-wrap HideIfSecondaryX" title="@{repeating_matrix_X_SPM_AoE}: Area of Effect - Usually in Yards.">
<input name="attr_SPM_AoE" type="text" class="api" readonly/>
<input name="attr_SPM_AoE" type="text" class="NoAPI"/>
<span name="attr_SPM_AoE" class="autoexpand"></span>
<span>AoE</span>
</label>
<label class="label-under2 autoexpand-wrap minWidth3" title="@{repeating_matrix_X_SPM_Duration}: Duration of Spell.">
<input name="attr_SPM_Duration" type="text" class="api" readonly/>
<input name="attr_SPM_Duration" type="text" class="NoAPI"/>
<span name="attr_SPM_Duration" class="autoexpand"></span>
<span>Duration</span>
</label>
<span class="middle">Effect:&nbsp;</span>
<label class="label-under2 autoexpand-wrap minWidth3" style="margin-right: 0px;" title="@{repeating_spell_X_SPM_WilSelect}: Is the Will Effect based upon WIl, Spellcasting Rank, or spellcasting Circle.">
<input name="attr_SPM_WilSelect" type="text" class="api" readonly/>
<input name="attr_SPM_WilSelect" type="text" class="NoAPI"/>
<span name="attr_SPM_WilSelect" class="autoexpand"></span>
<span>Wil</span>
</label>
<span><input class="testZero" name="attr_SPM_WilEffect" value="0" type="hidden"/>
<span class="middle HideIfSecondaryZero">+</span>
<span class="nowrap0 label-under HideIfSecondaryZero" title="@{repeating_matrix_X_SPM_WilEffect}: If this spell has a Willforce based effect, what is the spells Willforce modifier.">
<input name="attr_SPM_WilEffect" type="number" value="0" class="numShort">
<span>Will Efct</span></span></span>
<span><input class="hidden test-secondary" name="attr_SPM_EffectArmor" type="checkbox" value="N/A"/>
<span class="middle HideIfSecondaryChecked">/</span>
<label class="label-under2 autoexpand-wrap HideIfSecondaryChecked api" style="margin-right: 0px;" title="@{repeating_matrix_X_SPM_EffectArmor}: If there is a will effect, what armor protects against it?">
<input name="attr_SPM_EffectArmor" type="text" readonly/>
<span name="attr_SPM_EffectArmor" class="autoexpand"></span>
<span>Efct Armor</span>
</label></span>
<span class="middle">-</span>
<label class="label-under2 autoexpand-wrap minWidth3" title="@{repeating_matrix_X_SPM_Effect}: Effect of Spell.">
<input name="attr_SPM_Effect" type="text" class="api" readonly/>
<input name="attr_SPM_Effect" type="text" class="NoAPI"/>
<span name="attr_SPM_Effect" class="autoexpand"></span>
<span>Other Effect</span>
</label>
<label class="label-under2 autoexpand-wrap" title="@{repeating_matrix_X_SPM_SuccessLevels}: Effect of Extra Success Levels.">
<input name="attr_SPM_SuccessLevels" type="text" class="api" readonly/>
<input name="attr_SPM_SuccessLevels" type="text" class="NoAPI"/>
<span name="attr_SPM_SuccessLevels" class="autoexpand"></span>
<span>Success Levels</span>
</label>
<span class="hidden" title="@{repeating_matrix_X_SPM_sayTotalSuccess} If this is checked, it says Total Successes, otherwise it says Extra Successes.">Say Total
<input name="attr_SPM_sayTotalSuccess" type="checkbox" value="1"/></span>
<label class="label-under2 autoexpand-wrap sect-showMost" title="@{repeating_matrix_X_SPM_ExtraThreads}: Effect of weaving extra threads to the spell.">
<input name="attr_SPM_ExtraThreads" type="text" class="api" readonly/>
<input name="attr_SPM_ExtraThreads" type="text" class="NoAPI"/>
<span name="attr_SPM_ExtraThreads" class="autoexpand"></span>
<span>Extra Threads</span>
</label>
<input class="testCloseChecked hidden" name="attr_SPM_EnhThread" type="checkbox" value="x" />
<label class="HideIfCloseChecked label-under2 autoexpand-wrap" title="@{repeating_matrix_X_SPM_EnhThread}: An Enhanced Matrix holding a spell that does not require any threads, has one extra thread option pre-woven into the matrix when the matrix is attuned. This is the thread pre-woven into this matrix.">
<input name="attr_SPM_EnhThread" type="text" class="api" readonly/>
<input name="attr_SPM_EnhThread" type="text" class="NoAPI"/>
<span name="attr_SPM_EnhThread" class="autoexpand"></span>
<span>Enh Thread</span>
</label>
<label class="label-under2 autoexpand-wrap sect-showMost minWidth3" title="@{repeating_matrix_X_SPM_SuccessText}: Text to display if the test succeeds. Can optionally be used to remind people how the spell works.">
<input name="attr_SPM_SuccessText" type="text">
<span name="attr_SPM_SuccessText" class="autoexpand"></span>
<span>Disp Text</span>
</label>
<label class="label-under2 autoexpand-wrap sect-showMost api" title="@{repeating_matrix_X_SPM_FX}: Special Effects command. FX command to be performed when this spell is used.">
<input name="attr_SPM_FX" type="text" readonly>
<span name="attr_SPM_FX" class="autoexpand"></span>
<span>SFX</span>
</label>
<div class="sect clear">
<textarea name="attr_SPM_Notes" style="height: 100px; margin-bottom: 4px;" title="@{repeating_matrix_X_SPM_Notes} Description of Spell and how it works." placeholder="Description of the Spell and how it works."></textarea>
</div>
</div>
</fieldset>
</div> <!-- End Spell Matrix section -->
</div> <!-- End of Section Spells -->
<div class="section section-grimoire">
<input type="radio" name="attr_tab-spells" class="tab spells-tab0" value="0" title="All circles" checked style="margin-left:1px;"/>
<span class="tab spells-tab spells-tab0">All</span>
<input type="radio" name="attr_tab-spells" class="tab spells-tab1" value="1" title="Circle 1"/>
<span class="tab spells-tab spells-tab1">Circle 1</span>
<input type="radio" name="attr_tab-spells" class="tab spells-tab2" value="2" title="Circle 2"/>
<span class="tab spells-tab spells-tab2">Circle 2</span>
<input type="radio" name="attr_tab-spells" class="tab spells-tab3" value="3" title="Circle 3"/>
<span class="tab spells-tab spells-tab3">Circle 3</span>
<input type="radio" name="attr_tab-spells" class="tab spells-tab4" value="4" title="Circle 4"/>
<span class="tab spells-tab spells-tab4">Circle 4</span>
<input type="radio" name="attr_tab-spells" class="tab spells-tab5" value="5" title="Circle 5"/>
<span class="tab spells-tab spells-tab5">Circle 5</span>
<input type="radio" name="attr_tab-spells" class="tab spells-tab6" value="6" title="Circle 6"/>
<span class="tab spells-tab spells-tab6">Circle 6</span>
<input type="radio" name="attr_tab-spells" class="tab spells-tab7" value="7" title="Circle 7"/>
<span class="tab spells-tab spells-tab7">Circle 7</span>
<input type="radio" name="attr_tab-spells" class="tab spells-tab8" value="8" title="Circle 8"/>
<span class="tab spells-tab spells-tab8">Circle 8</span>
<input type="radio" name="attr_tab-spells" class="tab spells-tab9" value="9" title="Warden Tier Spells"/>
<span class="tab spells-tab spells-tab9">Warden</span>
<input type="radio" name="attr_tab-spells" class="tab spells-tab10" value="10" title="Master Tier Spells"/>
<span class="tab spells-tab spells-tab10">Master</span>
<fieldset class="repeating_spell">
<span class="hidden"> <input name="attr_SP_RowID" type="text" >
<input name="attr_SP_KaskWeave" type="text" value=""> <!-- If we need to ask about karma usage of the weaving test, this will hold the question, else it will be blank. -->
</span>
<input type="radio" name="attr_SP_Circle" class="hidden spells-tab0" value="0" checked />
<input type="radio" name="attr_SP_Circle" class="hidden spells-tab1" value="1"/>
<input type="radio" name="attr_SP_Circle" class="hidden spells-tab2" value="2"/>
<input type="radio" name="attr_SP_Circle" class="hidden spells-tab3" value="3"/>
<input type="radio" name="attr_SP_Circle" class="hidden spells-tab4" value="4"/>
<input type="radio" name="attr_SP_Circle" class="hidden spells-tab5" value="5"/>
<input type="radio" name="attr_SP_Circle" class="hidden spells-tab6" value="6"/>
<input type="radio" name="attr_SP_Circle" class="hidden spells-tab7" value="7"/>
<input type="radio" name="attr_SP_Circle" class="hidden spells-tab8" value="8"/>
<input type="radio" name="attr_SP_Circle" class="hidden spells-tab9" value="9"/>
<input type="radio" name="attr_SP_Circle" class="hidden spells-tab10" value="10"/>
<div class="filter-box">
<input name="attr_SP_showDetails" type="checkbox" class="testLocked hidden" value="3"/>
<span class="nowrap label-under clear" title="@{repeating_spell_X_SP_Circle} What is the spell circle?">
<select name="attr_SP_Circle" class="LockIfChecked numShort">
<option value="0" selected title="Please choose the circle for this spell.">-</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">Warden</option>
<option value="10">Master</option>
</select><span>Circle</span></span>
<span class="nowrap label-under" title="@{repeating_spell_X_SP_Discipline} What Discipline does this spell belong to.">
<select name="attr_SP_Discipline" class="LockIfChecked numLong">
<option value="0" selected>-</option>
<option value="5.3" >El </option>
<option value="6.3" >Il </option>
<option value="7.3" >Ne </option>
<option value="22.3">Sh </option>
<option value="16.3">Wz </option>
<option value="81">Other </option>
<option value="80">Power </option>
</select><span>Discipline</span></span>
<span title="@{repeating_spell_X_SP_Name}: Name of Spell.">
<label class="label-under2 autoexpand-wrap pointer-important">
<input name="attr_SP_Name" type="text" class="LockIfChecked" />
<span name="attr_SP_Name" class="autoexpand"></span>
<span>Name</span>
</label></span>
<span class="nowrap label-under" title="@{repeating_spell_X_SP_sThreads}: Number of Threads required for this spell.">
<input name="attr_SP_sThreads" type="number" class="LockIfChecked numShort" value="0" min="0">
<span>Threads</span></span>
<label class="label-under2 autoexpand-wrap HideIfEdition3" title="@{repeating_spell_X_SP_Numbers}: Weaving difficulty / Reattunment difficulty / Dispelling difficulty / Sensing difficulty.">
<input name="attr_SP_Numbers" type="text" readonly/>
<span name="attr_SP_Numbers" class="autoexpand"></span>
<span>Wv/Ratn/Dspl/Sns</span></label>
<label class="label-under2 autoexpand-wrap HideIfNotEdition3" title="@{repeating_spell_X_SP_Numbers}: Weaving difficulty / Reattunment difficulty / Dispelling difficulty / Disbelief difficulty / Sensing difficulty.">
<input name="attr_SP_Numbers" type="text" />
<span name="attr_SP_Numbers" class="autoexpand"></span>
<span>Wv/Ratn/Dspl/Dblf/Sns</span></label>
<span class="nowrap label-under" title="@{repeating_spell_X_SP_Casting}: Difficulty for spellcasting test.">
<select name="attr_SP_Casting" class="LockIfChecked selLong">
<!-- <option value="MD1: @{target&amp;#124;Target&amp;#124;token_id&amp;#125;">TMD &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A single targets Mystic Defense</option> -->
<option value="MDh" selected>hMD &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Highest Mystic Defense among all targets</option>
<option value="MDhp1p">hMD+ &nbsp;&nbsp;&nbsp; Highest Mystic Defense among all targets, plus one per additional target</option>
<option value="Ask: ?{Target Number&amp;#124;0&amp;#125;" >Ask &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ask for a target number when the roll is made</option>
<option value="2" >2</option>
<option value="3" >3</option>
<option value="4" >4</option>
<option value="5" >5</option>
<option value="6" >6</option>
<option value="7" >7</option>
<option value="8" >8</option>
<option value="9" >9</option>
<option value="10" >10</option>
<option value="11" >11</option>
<option value="12" >12</option>
<option value="13" >13</option>
<option value="14" >14</option>
<option value="15" >15</option>
</select><span>Casting</span></span>
<button class="text-button label-under button-nodice api" name="roll_SP_EditButton" type="roll"
value="!Earthdawn~ charID: @{character_id}~ ?{What Function|Attune,TuneMatrix: Spell: @{SP_RowID}|Create a matrix &amp; Attune,TuneMatrix: Share: @{SP_RowID}|GC - Start New G Casting,ForEach: inmt~ Grim: @{SP_RowID}: New : G|GC - Weave Threads, @{SP_KaskWeave} ForEach: inmt~ Grim: @{SP_RowID}: Weave: ?{Modifier&amp;#124;0&amp;#125;|GC - Cast from Grimoire,Target: @{SP_Casting}~ @{SP-Spellcasting-Kask} ForEach: inmt~ Grim: @{SP_RowID}: Cast: ?{Modifier&amp;#124;0&amp;#125;: @{SP_Casting}|GC - Effect Test, @{SP-WilEffect-Kask-DropDown} ForEach: inmt~ Grim: @{SP_RowID}: Effect: ?{Modifier&amp;#124;0&amp;#125;|Edit Duration,chatMenu: editSpell2: @{SP_RowID}: Dur: ?{Duration&amp;#124;Nothing&amp;#124;Rank&amp;#124;Circle&amp;#125;: ?{Duration plus&amp;#124;0&amp;#125;: ?{Duration increment&amp;#124;Rounds&amp;#44;Rnd&amp;#124;Minutes&amp;#44;Min&amp;#124;Hours&amp;#124;Days&amp;#124;Months&amp;#125;|Add Extra Thread,chatMenu: editSpell2: @{SP_RowID}: MenuAddExtraThread|Remove Extra Thread,chatMenu: editSpell2: @{SP_RowID}: MenuRemoveExtraThread|FX Set, FXset: SP: @{SP_RowID}: Set: ?{Every time Spell is attempted or only when succeeds&amp;#124;Attempt&amp;#124;Success&amp;#124;Effect&amp;#125;: ?{Effect Name&amp;#124;Beam&amp;#124;Bomb&amp;#124;Breath&amp;#124;Bubbling&amp;#124;Burn&amp;#124;Burst&amp;#124;Explode&amp;#124;Glow&amp;#124;Missile&amp;#124;Nova&amp;#124;Splatter&amp;#124;Other/Custom&amp;#44;Custom ?{Name of Custom FX&amp;#125;&amp;#125;: ?{Effect Color (this is ignored for custom effects)&amp;#124;Acid&amp;#124;Blood&amp;#124;Charm&amp;#124;Death&amp;#124;Fire&amp;#124;Frost&amp;#124;Holy&amp;#124;Magic&amp;#124;Slime&amp;#124;Smoke&amp;#124;Water&amp;#125;: ?{Where does the effect appear (Note: only Beam&amp;#44; Breath&amp;#44; or Splatter can travel from Caster to Target)&amp;#124;Caster Only&amp;#44;CO&amp;#124;First Target Only&amp;#44;FTO&amp;#124;All Targets&amp;#44;AT&amp;#124;Caster to 1st Target Only&amp;#44;CtFTO&amp;#124;Caster to all Targets&amp;#44;CtAT&amp;#125;|FX Clear, FXset: SP: @{SP_RowID}: Clear}"
title="%{selected|SP_EditButton} Edit this spell, Attune it into a Spell Matrix, cast it from the Grimoire, or some other special function. Note that creating a spell matrix and moving a spell into it is a quick way to do creature powers as well as spells that can share a matrix.">
Do Stuff</button>
<input type="radio" name="attr_SP_showDetails" class="show-all" value="1" checked title="Show All Details - All the details are displayed, including fields only used during set-up that are usually not needed during play." /><span class="option">+</span>
<input type="radio" name="attr_SP_showDetails" class="show-most" value="2" title="Show Most Details - The details used during play are displayed, but not the fields that are usually needed only during initial setup."/><span class="option">9</span>
<input type="radio" name="attr_SP_showDetails" class="hide-all" value="3" title="Hide All Details - Only a single line of the most important information is displayed, all the details are hidden." /><span class="option">-</span>
<div class="sect clear">
<label class="label-under2 autoexpand-wrap minWidth3" title="@{repeating_spell_X_SP_Range}: Range spell can be cast, Usually in Yards though it may be Touch or Self.">
<input name="attr_SP_Range" type="text" />
<span name="attr_SP_Range" class="autoexpand"></span>
<span>Range</span>
</label>
<label class="label-under2 autoexpand-wrap minWidth3 HideIfSecondaryChecked" title="@{repeating_spell_X_SP_AoE}: Area of Effect - Usually in Yards.">
<input name="attr_SP_AoE" type="text" value=" " />
<span name="attr_SP_AoE" class="autoexpand"></span>
<span>AoE</span>
</label>
<label class="label-under2 autoexpand-wrap minWidth3" title="@{repeating_spell_X_SP_Duration}: Duration of Spell. Press 'Do Stuff' button to edit this field.">
<input type="text" name="attr_SP_Duration" class="api" readonly/>
<input type="text" name="attr_SP_Duration" class="NoAPI"/>
<span name="attr_SP_Duration" class="autoexpand"></span>
<span>Duration</span>
</label>
<span class="middle">Effect:&nbsp;</span>
<span class="nowrap0 label-under" title="@{repeating_spell_X_SP_WilSelect}: Is the Will Effect based upon WIl, Spellcasting Rank, or spellcasting Circle.">
<select name="attr_SP_WilSelect" class="selShort">
<option value="None" selected>None</option>
<option value="Wil">Wil</option>
<option value="Rank">Rank</option>
<option value="Circle">Circle</option>
</select><span></span></span>
<span><input class="testZero" name="attr_SP_WilEffect" value="0" type="hidden"/>
<span class="middle HideIfSecondaryZero">+</span>
<span class="nowrap0 label-under HideIfSecondaryZero" title="@{repeating_spell_X_SP_WilEffect}: If this spell has a Willforce based effect, what is the spells Willforce modifier.">
<input name="attr_SP_WilEffect" type="number" value="0" class="numShort">
<span>Will</span></span></span>
<span><input class="hidden test-secondary" name="attr_SP_EffectArmor" type="checkbox" value="N/A"/>
<span class="middle">/</span>
<span class="nowrap0 label-under HideIfSecondaryChecked" title="@{repeating_spell_X_SP_EffectArmor}: If there is a will effect, what armor protects against it?">
<select name="attr_SP_EffectArmor" class="selLong">
<option value="N/A" selected>N/A &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Not Applicable: There is no Will Effect</option>
<option value="NoDmg" >No Dmg &nbsp;&nbsp; Not Applicable: The Will Effect does no damage</option>
<option value="MA" >MA &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Mystic Armor protects against this Will Effect</option>
<option value="PA" >PA &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Physical Armor protects against this Will Effect</option>
<option value="PA-Nat" >PA-Nat &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Only Natural Physical Armor protects against this Will Effect</option>
<option value="MA-Nat" >MA-Nat &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Only Natural Mystic Armor protects against this Will Effect</option>
<option value="NoArmor" >No Armor &nbsp;No Armor protects against this Will Effect damage</option>
</select><span>Efct Armor</span></span></span>
<span class="middle">-</span>
<label class="label-under2 autoexpand-wrap minWidth3" title="@{repeating_spell_X_SP_Effect}: Effect of Spell.">
<input type="text" name="attr_SP_Effect" />
<span name="attr_SP_Effect" class="autoexpand"></span>
<span>Other Effect</span>
</label>
<span class="nowrap label-under" title="@{repeating_spell_X_SP_SuccessLevels}: Effect of Extra Success Levels.">
<select name="attr_SP_SuccessLevels" class="txtShort">
<option value="None" selected >None</option>
<option value="Inc Efct Step (+2)" >Efct +2 Step Increase</option>
<option value="Inc Efct (Other)" >Efct Other Increase</option>
<option value="Inc Dur (+2)" >Dur +2 Increase</option>
<option value="Inc Dur (Other)" >Dur Other Increase</option>
<option value="Inc Area (+2)" >Area +2 yards Increase</option>
<option value="Inc Area (Other)" >Area Other Increase</option>
<option value="Inc Rng (+20)" >Range +20 yards Increase</option>
<option value="Add Tgt (+1)" >Target +1 Additional</option>
<option value="Special" >Special</option>
</select><span>Success Levels</span></span>
<span class="nowrap sect-showMost api" title="@{repeating_spell_X_SP_sayTotalSuccess} If this is checked, it says Total Successes, otherwise it says Extra Successes.">Say Total
<input name="attr_SP_sayTotalSuccess" type="checkbox" value="1"/></span>
<label class="label-under2 autoexpand-wrap sect-showMost" title="@{repeating_spell_X_SP_ExtraThreads}: Effect of weaving extra threads to the spell. Press 'Do Stuff' button to edit this field.">
<input type="text" name="attr_SP_ExtraThreads" class="api" readonly/>
<input type="text" name="attr_SP_ExtraThreads" class="NoAPI"/>
<span name="attr_SP_ExtraThreads" class="autoexpand"></span>
<span>Extra Threads</span>
</label>
<label class="label-under2 autoexpand-wrap sect-showMost minWidth3" title="@{repeating_spell_X_SP_SuccessText}: Text to display if the test succeeds. Can optionally be used to remind people how the spell works.">
<input name="attr_SP_SuccessText" type="text">
<span name="attr_SP_SuccessText" class="autoexpand"></span>
<span>Disp Text</span>
</label>
<label class="label-under2 autoexpand-wrap sect-showMost api" title="@{repeating_spell_X_SP_FX}: Special Effects command. FX command to be performed when this spell is used. Press 'Do Stuff' button to edit this field.">
<input name="attr_SP_FX" type="text" readonly >
<span name="attr_SP_FX" class="autoexpand"></span>
<span>SFX</span>
</label>
<input name="attr_SP_Name" type="text" class="hidden testPlaceholder" placeholder="Name" >
<br><span class="hideIfNotPlaceholder" title="@{SP_textImport}: Spell Text import: This only shows up if Name is empty.">
If you have a PDF copy of the book, you can copy an entire Spell description (starting with the name,
and including everything) and paste it into this tiny text box. It will be parsed and whatever fields
can be set based upon the text will be. You will still need to manually set some of the fields.
<textarea name="attr_SP_textImport" style="height: 28px; width: 8em; margin-bottom: 0em;"></textarea>
<br></span>
<textarea name="attr_SP_Notes" style="height: 100px; margin-bottom: 4px;" title="@{repeating_spell_X_SP_Notes} Description of Spell and how it works." placeholder="Description of the Spell and how it works."></textarea>
</div>
</div> <!-- End Filtered box -->
</fieldset>
</div> <!-- End of Section grimoire -->
<div class="section section-equipment">
<span class="info"
title="Instructions: For purposes of this character sheet, 'Equipment' is Weapons, Armor, Thread Items, Mounts and other things that directly effect attributes, combat, Talents, and other game effects. The Gear tab is for other stuff that your character has.">i</span>
<span class="nowrap" title="@{Armor-Name}: Type of Armor worn."><b>Armor -</b>
<input name="attr_Armor-Name" type="text" class="txtShort" placeholder="Armor type" ></span>
<span class="nowrap" title="@{Armor-Phys}: Physical protection armor provides.">Phys
<input name="attr_Armor-Phys" type="number" value="0" class="numShort"></span>
<span class="nowrap" title="@{Armor-Myst}: Mystic protection armor provides.">Myst
<input name="attr_Armor-Myst" type="number" value="0" class="numShort"></span>
<span class="nowrap" title="@{Armor-IP}: Initiative Penalty of wearing armor.">IP
<input name="attr_Armor-IP" type="number" value="0" min="0" class="numShort"></span>
<span class="nowrap" title="@{Armor-Weight}: Weight of armor.">Wt
<input name="attr_Armor-Weight" type="number" value="0" min="0" class="numLong"></span>
<span class="nowrap" title="@{Armor-Date}: Enhancements and Date(s) Armor was last enchanted/forged.">Notes:
<input name="attr_Armor-Date" type="text" class="txtMed" placeholder="Date forged"></span>
<br>
<span class="nowrap" title="@{Shield-Name}: Type of Shield Used."><b>Shield -</b>
<input name="attr_Shield-Name" type="text" class="txtShort" placeholder="Shield type" ></span>
<span class="nowrap" title="@{Shield-Phys}: Physical protection shield provides.">Phys
<input name="attr_Shield-Phys" type="number" value="0" class="numShort"></span>
<span class="nowrap" title="@{Shield-Myst}: Mystic protection shield provides.">Myst
<input name="attr_Shield-Myst" type="number" value="0" class="numShort"></span>
<span class="nowrap" title="@{Shield-IP}: Initiative Penalty of using Shield.">IP
<input name="attr_Shield-IP" type="number" value="0" min="0" class="numShort"></span>
<span class="nowrap" title="@{Shield-Weight}: Weight of Shield.">Wt
<input name="attr_Shield-Weight" type="number" value="0" min="0" class="numLong"></span>
<span class="nowrap" title="@{Shield-Date}: Enhancements and Date(s) Shield was last enchanted/forged.">Notes:
<input name="attr_Shield-Date" type="text" class="txtMed" placeholder="Date forged" ></span>
<span class="nowrap" title="@{Shield-Shatter}: Shatter Threshold of Shield.">Shatter
<input name="attr_Shield-Shatter" type="number" value="0" min="0" class="numShort"></span>
<br>
<b class="heading">Weapon&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Dmg&nbsp;</b>&nbsp;
<b class="heading">&nbsp;Mods&nbsp;</b>&nbsp;
<b class="heading">&nbsp;Step&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;CC&nbsp;</b>&nbsp;
<b class="heading">&nbsp;Range&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading">&nbsp;Weight&nbsp;</b>&nbsp;
<b class="heading">&nbsp;Date / Notes&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b class="heading api">&nbsp;Karma&nbsp;</b>&nbsp;&nbsp;
<input class="testCloseChecked hidden" name="attr_Questor" type="checkbox" value="None" />
<span class="HideIfCloseChecked api">&nbsp;
<b class="heading">&nbsp;Dev Pnts&nbsp;</b>&nbsp;</span>
<b class="heading">&nbsp;Tkn Actn&nbsp;</b>&nbsp;
<br>
<input class="testRepSpecialChecked hidden" name="attr_Questor" type="checkbox" value="None" />
<fieldset class="repeating_weapons">
<span class="hidden"><input name="attr_WPN_RowID" type="text" ></span>
<span class="nowrap0" title="@{repeating_weapons_X_WPN_Name}: Type of Weapon used.">
<input name="attr_WPN_Name" type="text" class="txtShort" placeholder="Weapon type" ></span>
<span class="nowrap0"><input name="attr_WPN_Base" type="number" value="0" min="0" class="numShort" title="@{repeating_weapons_X_WPN_Base} Base damage the weapon does." ></span>
<span class="nowrap0"><input name="attr_WPN_Mods" type="number" value="0" class="numShort" title="@{repeating_weapons_X_WPN_Mods} Modifications to the base damage."></span>
<span class="nowrap0"><input name="attr_WPN_Damage" type="number" disabled class="numShort"
value="(@{Str-Step}+@{Str-Adjust}+@{Str-Mods}+@{WPN_Base}+@{WPN_Mods}+(@{Adjust-Damage-Total-CC}*@{WPN_CloseCombat})+(@{Adjust-Damage-Total}*abs(@{WPN_CloseCombat}-1)))"
title="@{repeating_weapons_X_WPN_Damage} Damage Step this weapon does."></span>
<span class="nowrap0">
<button class="text-button api" name="roll_WPN_Roll" type="roll"
value="!Earthdawn~ charID: @{character_id}~ @{RollType}~ @{WPN_Karma-Control}~ @{WPN_DP-Control}~ foreach:sct:ust:c~ Action: WPN: @{WPN_RowID}: ?{Modification|0}"
title="@{repeating_weapons_X_WPN_Roll} Roll Damage for this weapon modified by combat options and conditions.">Dmg</button>
<button class="text-button NoAPI" name="roll_WPN_Roll-NoAPI" type="roll"
value="@{RollType-NoAPI} &{template:default} {{name=@{WPN_Name} Dmg}} {{Step=[[?{Step|@{WPN_Damage}}]] + Bonus Step [[?{Bonus or Karma Step|0}]]}} {{Result=[[ [[floor({?{Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Step}, 0}kh1]] * (3 - [[{?{Step}, 0}kh1]])]] + [[floor({?{Bonus or Karma Step}-8,0}kh1 / 11)]]d20! + [[ [[{1e3, 7}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{6, 7, 7, 8, 9, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d12! + [[ [[{1e3, 6}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{4, 5, 5, 6, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d10! + [[ [[{1e3, 5}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{2, 3, 3, 4, 9, 10, 10, 11}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d8! + [[ [[{1e3, 4}=[[{?{Bonus or Karma Step}, 0}kh1]] ]] + [[{1, 1, 2, 8, 8, 9}=[[{((?{Bonus or Karma Step}-8) % 11)+1,0}kh1]] ]] ]]d6! + [[{1, 2, 3}=[[{?{Bonus or Karma Step}, 0}kh1]] ]]d4! - [[{1, 2}=[[{?{Bonus or Karma Step}, 0}kh1]] * (3 - [[{?{Bonus or Karma Step}, 0}kh1]])]] ]]}}"
title="@{repeating_weapons_X_WPN_Roll-NoAPI} Roll Damage for this weapon modified by combat options and conditions.">Dmg</button>
</span>
<span class="nowrap0" title="@{repeating_weapons_X_WPN_CloseCombat} Check this box if the weapon is a Close Combat weapon.">
<input type="checkbox" name="attr_WPN_CloseCombat" value="1"/></span>
<span class="nowrap0"><input name="attr_WPN_Range" type="text" class="selLong" title="@{repeating_weapons_X_WPN_Range} Short and Long range of weapon if applicable." placeholder="shrt/Lng" ></span>
<span class="nowrap0"><input name="attr_WPN_Weight" type="number" value="0" min="0" class="numLong" title="@{repeating_weapons_X_WPN_Weight} Weight of Weapon." ></span>
<span class="nowrap0"><input name="attr_WPN_Date" type="text" class="txtMed" title="@{repeating_weapons_X_WPN_Date} Date weapon was last forged." ></span>
<select name="attr_WPN_Karma-Control" class="selShort api" title="@{repeating_weapons_X_WPN_Karma-Control} Under what circumstances should we add karma to damage tests with this weapon?">
<option value="-1" selected title="Never use karma on damage tests. This overrides the 'Add Karma to rolls' control."> Never</option>
<option value="0" title="Look at the 'Add Karma to rolls' control to determine if should use damage tests.">Sometimes </option>
<option value="1" title="If there is unspent karma, always use karma on damage tests. This overrides the 'Add Karma to rolls' control.">Always </option>
<option value="2" title="If there is unspent karma, always use 2 karma on damage tests. This overrides the 'Add Karma to rolls' control.">2 Always</option>
<option value="3" title="If there is unspent karma, always use 3 karma on damage tests. This overrides the 'Add Karma to rolls' control.">3 Always</option>
<option value="K-ask: ?{How many Karma to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many karma should be spent."> Ask</option>
</select>
<span class="nowrap HideIfRepSpecialChecked api" title="@{WPN_DP-Control} Under what circumstances should we add Devotion Points to tests with this Weapon?">
<select name="attr_WPN_DP-Control" class="selShort">
<option value="-1" selected title="Never use Devotion Points on damage tests for this weapon. This overrides the 'Use Dev Pnts in rolls' control."> Never</option>
<option value="0" title="Look at the 'Use Dev Pnts in rolls' control to determine if should use Devotion Points in damage tests for this weapon.">Sometimes </option>
<option value="1" title="If there are unspent Devotion Points, always use DP in damage tests for this weapon. This overrides the 'Use Dev Pnts rolls' control.">Always </option>
<option value="2" title="If there are unspent Devotion Points, always use 2 DP in damage tests for this weapon. This overrides the 'Use Dev Pnts in rolls' control.">2 Always</option>
<option value="3" title="If there are unspent Devotion Points, always use 3 DP in damage tests for this weapon. This overrides the 'Use Dev Pnts in rolls' control.">3 Always</option>
<option value="DP-ask: ?{How many Devotion Points to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many Devotion Points should be spent."> Ask</option>
</select></span>
<span class="nowrap0"><input name="attr_WPN_CombatSlot" type="checkbox" value="1"
title="@{repeating_weapons_X_WPN_CombatSlot}: Should this Weapon damage be summarized on the combat tab and placed in a Token Action?" ></span>
</fieldset>
<div class="headerbar">Mounts and other Animals</div>&nbsp;&nbsp;&nbsp;
<span class="fixed-width" style="width: 6.5em;"><b>&nbsp;Animal&nbsp;</b></span>&nbsp;&nbsp;
<span class="fixed-width numLong"><b>&nbsp;Speed&nbsp;</b></span>
<span class="fixed-width numLong"><b>&nbsp;Carry&nbsp;</b></span>
<span class="fixed-width numLong"><b>&nbsp;Feed&nbsp;</b></span>
<span class="fixed-width numLong"><b>&nbsp;Stable&nbsp;</b></span>
<span class="fixed-width numLong"><b>&nbsp;Weight&nbsp;&nbsp;</b></span>
<fieldset class="repeating_mount">
<span class="nowrap">
<input name="attr_MNT_Name" type="text" class="txtShort" title="@{repeating_mount_X_MNT_Name}: Type of Mount or Animal." placeholder="Type" ></span>
<span class="nowrap">
<input name="attr_MNT_Speed" type="number" value="0" min="0" class="numLong" title="@{repeating_mount_X_MNT_Speed}: Speed of Mount or Animal." ></span>
<span class="nowrap">
<input name="attr_MNT_Carry" type="number" value="0" min="0" class="numLong" title="@{repeating_mount_X_MNT_Carry}: How much can the Mount or Animal carry." ></span>
<span class="nowrap">
<input name="attr_MNT_Feed" type="number" value="0" min="0" class="numLong" title="@{repeating_mount_X_MNT_Feed}: How much does it cost to feed the Animal per day." ></span>
<span class="nowrap">
<input name="attr_MNT_Stable" type="number" value="0" min="0" class="numLong" title="@{repeating_mount_X_MNT_Stable}: How much does it usually cost to stable the Mount or Animal." ></span>
<span class="nowrap">
<input name="attr_MNT_Weight" type="number" value="0" min="0" class="numLong" title="@{repeating_mount_X_MNT_Weight}: Weight." ></span>
</fieldset>
<div class="headerbar">Thread Items and Woven Threads</div>
<p>Note that most of these will require adjsuting entries either in stats, talents, or miscellaneous adjustments on the last tab.</p>&nbsp;&nbsp;&nbsp;
<span class="fixed-width" style="width: 7.5em;"><b>&nbsp;Items&nbsp;</b></span>
<span class="fixed-width numShort"><b>&nbsp;Rank&nbsp;</b></span>
<span class="fixed-width txtShort"><b>&nbsp;Tier&nbsp;</b></span>
<span class="fixed-width selShort"><b>&nbsp;Effects&nbsp;</b></span>
<fieldset class="repeating_threads">
<span class="nowrap">
<input name="attr_TI_Name" type="text" class="txtShort" title="@{repeating_threads_X_TI_Name}: Name of Item, Person, or Group thread is attached to." placeholder="Item" ></span>
<span class="nowrap">
<input name="attr_TI_Rank" type="number" value="0" min="0" class="numShort" title="@{repeating_threads_X_TI_Rank}: Rank of thread attached to Thread Item." ></span>
<span class="nowrap" title="@{repeating_threads_X_TI_Type} What LP cost progression tier does this Thread Item use.">
<select name="attr_TI_Type" class="LockIfChecked selLong">
<option value="Novice" selected title="This item has a Novice cost progression meaning it costs as much to advance the thread rank as it does to advance a Novice Talent.">Novice</option>
<option value="Journeyman" title="This item has a Journeyman cost progression meaning it costs as much to advance the thread rank as it does to advance a Journeyman Talent." >Journeyman</option>
<option value="Warden" title="This item has a Warden cost progression meaning it costs as much to advance the thread rank as it does to advance a Warden Talent." >Warden</option>
<option value="Master" title="This item has a Master cost progression meaning it costs as much to advance the thread rank as it does to advance a Master Talent." >Master</option>
<option value="Free" title="This item does not cost LP to advance.">Free</option>
<option value="Special" title="This item has LP costs that are special for some reason.">Special</option>
<option value="Dummy" title="This is not really a standard Thread Item in and of itself, it is a placeholder for a something else.">Dummy</option>
</select></span>
<span class="nowrap">
<input name="attr_TI_Effects" type="text" style="width:95%;" title="@{repeating_threads_X_TI_Effects}: Thread Effects." ></span>
</fieldset>
<span class="nowrap">Equipment Weight:
<input name="attr_Weight-Mod" type="number" value="0" min="0" class="selShort" title="@{Weight-Mod}: Approximate weight of all carried equipment listed on Equipment tab that does not have a seperate weight field.">
<input name="attr_Weight-Equipment" type="number" readonly class="selShort"
title="@{Weight-Equipment}: Approximate weight of all equipment listed on this tab." value="0" >
</span>
</div> <!-- End of Section Equipment -->
<div class="section section-gear">
<span class="info"
title="Instructions: For purposes of this character sheet, 'Gear' is stuff that your character has that does not have a category for it on the Equipment Tab.">i</span>
<span class="nowrap" title="@{Wealth_Gold}: Number of Gold pieces owned.">Gold:
<input name="attr_Wealth_Gold" type="number" value="0" min="0" class="numLong"></span>
<span class="nowrap" title="@{Wealth_Silver}: Number of Silver pieces owned.">Silver:
<input name="attr_Wealth_Silver" type="number" value="0" min="0" class="numLong" ></span>
<span class="nowrap" title="@{Wealth_Copper}: Number of Copper pieces owned.">Copper:
<input name="attr_Wealth_Copper" type="number" value="0" min="0" class="numLong" ></span>
<span class="nowrap3" title="@{Weight-coin}: Calculated weight of all coin. Note that this weight is automatically added to weight carried. You may notate weight of coin not carried.">Coin wgt:
<input name="attr_Weight-coin" type="number" readonly value="0" min="0" class="selShort" ></span>
<span class="nowrap3" title="@{Weight-Gear-other}: Approximate weight of all equipment and gear that your character routinely travels with, but DOES NOT carry on his person (in saddlebags, packhorses, Etc.)" >Est wgt NOT carried:
<input name="attr_Weight-Gear-other" type="number" value="0" min="0" class="selShort" ></span>
<br>
<span class="nowrap" title="@{Wealth_Other}: Elemental Coins and Gems.">Other:
<input name="attr_Wealth_Other" type="text" style="width: 99%;" ></span>
<span class="nowrap" title="@{Healing_Booster}: Number of Booster Potions owned."><b>Healing Aids - </b>Booster
<input name="attr_Healing_Booster" type="number" value="0" min="0" class="numShort"></span>
<span class="nowrap" title="@{Healing_Healing}: Number of Healing Potions owned.">Healing P:
<input name="attr_Healing_Healing" type="number" value="0" min="0" class="numShort"></span>
<span class="nowrap" title="@{Healing_Last_Chance}: Number of Last Chance Salves owned.">Last Chance Salve:
<input name="attr_Healing_Last_Chance" type="number" value="0" min="0" class="numShort"></span>
<span class="nowrap" title="@{Healing_Closure}: Number of Salve's of Closure owned.">Salve of Closure:
<input name="attr_Healing_Closure" type="number" value="0" min="0" class="numShort"></span>
<span class="nowrap" title="@{Healing_Kit}: Number of uses in Healing Kit and all refills.">Healing Kit uses:
<input name="attr_Healing_Kit" type="number" value="0" min="0" class="numShort"></span>
<span class="nowrap3" title="@{Healing_Closure}: Number of uses in Physician's Kit and all refills.">Physician’s Kit uses:
<input name="attr_Healing_Physician_Kit" type="number" value="0" min="0" class="numShort"></span>
<span class="nowrap0" title="@{Gear_Rations_Trail}: Number of person/days of Trail Rations owned."><b>Rations:</b> (days) - Trail
<input name="attr_Gear_Rations_Trail" type="number" value="0" min="0" class="numLong"></span>
<span class="nowrap2" title="@{Gear_Rations_Mine}: Number of person/days of Dwarvish Mine Rations owned.">- Mine:
<input name="attr_Gear_Rations_Mine" type="number" value="0" min="0" class="numLong"></span>
<span class="nowrap2" title="@{Weight-supply}: Calculated weight of all food and potions at the top of the Gear Tab. Note that this weight is NOT automatically added to weight carried as some of it will be on mounts Etc. You should allocate this total between the Est weights carried and not carried fields.">Supply wgt:
<input name="attr_Weight-supply" type="number" readonly value="0" min="0" class="selShort" ></span>
<span class="nowrap3" title="@{Weight-Gear}: Approximate weight of all gear listed on Gear tab that your character routinly carries on his person (as opposed to saddlebags, packhorses, Etc.)" >Est wgt Gear carried:
<input name="attr_Weight-Gear" type="number" value="0" min="0" class="selShort"></span>
<span class="nowrap" title="@{Lifestyle} What Lifestyle does the character maintain. Part of your lifestyle is spent in cleaning/maintaining/repairing/replacing your possessions when they wear out.">Lifestyle
<select name="attr_Lifestyle" style="width:12em;">
<option value="Cash" selected title="Character does not use lifestyle rules and pays cash for everything.">Cash</option>
<option value="Destitute" title="A destitute character must track every purchase, and may need to resort to Survival checks or theft to feed himself. Most of your gear and equipment needs to be replaced after 6 months due to mold, mildew, rust, and lack of basic maintenance." >Destitute</option>
<option value="Squalid" title="5sp per month - Squalid. Minimum needed to avoid survival checks. You are homeless, having at most a nook, cave, or burrow. You suffer interaction penalties in social situations. Much of your gear and equipment needs to be replaced after 6 months due to mold, mildew, rust, and lack of basic maintenance.">Squalid - 5 sp/month</option>
<option value="Poor" title="25sp per month - Poor. You sleep on the floor of a flophouse. You buy your clothes secondhand. Meat is a luxury. You usually drink water that you fetch yourself, splurging on ale only two or three times a month. You have no funds for nonessential expenses. All your gear and equipment is maintained in poor condition and a random piece must be lost/replaced monthly.">Poor - 25 sp/month</option>
<option value="Lower-Class" title="50sp per month - Lower-Class. Your bed is a straw tick or a frame with a rope net, your room has no lock. You eat sausage or fried meat with ale every three days, and you can afford warm clothes. You get a full bath monthly and wash every week. You have very little funds for discretionary expenses. Some of your gear and equipment is in poor condition and a random piecer must be replaced quarterly.">Lower-Class - 50 sp/month</option>
<option value="Middle-Class" title="75sp per Month - Middle-Class. You have a room with a bed, and you can bar the door when you're there. You eat meat or fish every day and drink ale or wine instead of water. Your clothes may be plain, but you bought them new, and you get a bath every week. You have modest funds to engage in discretionary expenses, vices, and hobbies. Your basic and standard gear and mount are kept in good condition.">Middle-Class - 75 sp/month</option>
<option value="Wealthy" title="250sp per month - Wealthy. You eat vegetables and either lean meat or fine fish every day. You drink good wine and ale. You probably have at least one servant">Wealthy - 250 sp/month</option>
<option value="Very Wealthy" title="1000sp per month - Very Wealthy. Your home is large and has magic locks on the doors, and you have at least several servants. You own a very fine mount and/or a coach. You wear quite a bit of distinctive or enchanted clothing, some of which is very luxurious, and about four times a month, you indulge in a sumptuous, nine-course feast.">Very Wealthy - 1000 sp/month</option>
<option value="Filthy Rich" title="5000sp per month or more - Filthy Rich. Your home is very large and abounds with magical amenities: heat stones, light crystals, massaging baths, as well as a staff and a stable. Unless otherwise noted, your clothing is distinctive and enchanted, and often luxurious. You enjoy sumptuous feasts every three days or so.">Filthy Rich - 5000+ sp/month</option>
<option value="Adept" title="50sp/circle/month. This is the lifestyle of a 'typical' adept of your circle. You never run out of basic supplies and all your gear and (common) animals are kept in very good condition. Your living conditions improve to the level that you are spending. IE: at 4th circle, you are maintaining a lifestyle that is just short of wealthy. ">Adept - 50 sp/circle/month</option>
<!-- Note: Barsiave boxed set gives comfortable at 150/circle/month and Wealthy at 300/circle/month -->
</select></span>
<span class="nowrap" title="@{Lifestyle-Adjust}: Monthly adjustment to lifestyle for extra or exotic mounts, animals, and other extraordinary repeating expenses not normally covered by your lifestyle.">LS Adjust:
<input name="attr_Lifestyle-Adjust" type="number" Value="0" class="selShort"></span>
<span class="nowrap" title="@{Lifestyle-Prepaid}: Date through which the lifestyle is prepaid, or alternativly a running total of the number of days you have prepaid.">Prepaid Through:
<input name="attr_Lifestyle-Prepaid" type="text" class="txtShort" placeholder = "yyyy/mm/dd"></span>
<br>
<textarea name="attr_gear-Inventory" style="height: 360px;" title="@{gear-Inventory}" placeholder="Inventory Gear here."></textarea>
</div> <!-- End of Section Gear -->
<div class="section section-notes">
&nbsp;&nbsp;&nbsp;&nbsp;
<b>Release Notes:</b>
<input class="sect-show" name="attr_show-release-notes" type="checkbox" value="1" checked
title="@{show-release-notes} Show or hide the Release Notes for this version of the sheet. This section should be kept hidden except immediately after a sheet has been updated to a new version."/>
<span class="option-show"></span> <!-- You need a blank span here for the Show/Hide css code to work with -->
<div class="sect" style="background-color: salmon; font-size: small;">
Note: This section will automatically appear when a new version of the character sheet has been updated for the campaign.
It will sometimes give important instructions about actions that must be taken to keep the character sheet working correctly with the new version.
After reading these release notes, you should click "hide" above in order to hide this section and make your own notes more visible.<br>
<textarea name="attr_Release-notes" style="height: 250px;" title="@{Release-notes}" placeholder="Release Notes here." readonly></textarea>
</div>
<textarea name="attr_general-notes" style="height: 400px;" title="@{general-notes}" placeholder="Miscellaneous Notes here."></textarea>
<div style="font-size: xx-small;">
<em>Earthdawn&reg; by FASA</em> Character sheet and associated API.<br>
Earthdawn&reg; is the sole property of FASA Corporation, and is protected by copyright, trademark, and other intellectual property laws.
You are granted a limited, revocable, non-sub-licensable right to access and use this character sheet and associated API solely for personal and non-commercial use.
This character sheet is compatible with the Earthdawn&reg; game from FASA Games, Inc. and the Roll20 Earthdawn&reg; Compendium (Forthcoming).
Any information copied into this character sheet maintains its original sources copyright, whether it was copied from the Compendium, or copied or typed in by the user, or by any other means.<br>
Any use of FASA Games, Inc.’s Intellectual Property other than as specifically authorized by FASA Games, Inc. is strictly prohibited and will terminate the rights granted herein.<br>
Earthdawn&reg; is a registered trademark of FASA Corporation. Earthdawn&reg; and all associated trademarks, copyrights, and logos are used under license from FASA Corporation. Copyright &copy; 1993-2020 FASA Corporation<br>
Roll20 character sheet & API by Christopher D. Dickey. Approved by FASA.
</div>
</div> <!-- End of Section Notes -->
<div class="section section-record">
<span class="api">
<input class="testCloseChecked hidden" name="attr_record-item" type="checkbox" value="LP"/>
<span class="nowrap3 HideIfNotCloseChecked" title="@{LP-Current}: Unspent Legend Points.">Legend Points
<input name="attr_LP-Current" type="number" value="0" class="selShort" /></span>
<input class="testCloseChecked hidden" name="attr_record-item" type="checkbox" value="SP"/>
<span class="nowrap3 HideIfNotCloseChecked" title="@{Wealth_Silver}: Number of Silver pieces owned.">Silver:
<input name="attr_Wealth_Silver" type="number" value="0" min="0" class="numLong" /></span>
<span class="nowrap3" title="@{record-date-real}: Real world date."><b>Date</b> Real:
<input name="attr_record-date-real" type="text" value="" class="txtShort" /></span>
<span class="nowrap3" title="@{record-date-throalic}: Throalic date.">Throalic:
<input name="attr_record-date-throalic" type="text" value="" class="txtShort" /></span>
<button class="text-button button-nodice" name="roll_update_dates" type="roll"
value="!Earthdawn~ charID: @{character_id}~ updateDates : @{Party|record-date-throalic}" >Update Dates</button>
<br>
<span class="nowrap" title="@{record-item} Are we journaling a silver or LP transaction?">
<select name="attr_record-item" class="selShort">
<option value="LP" selected title="Legend Points."> LP</option>
<option value="SP" title="Silver Pieces."> SP</option>
<option value="Other" title="Other."> Other</option>
</select>
</span>
<input class="testCloseChecked hidden" name="attr_record-item" type="checkbox" value="Other"/>
<span class="nowrap3 HideIfCloseChecked">
<span class="nowrap" title="@{record-amount}: Amount of transaction.">Amount:
<input name="attr_record-amount" type="number" value="0" class="selShort" />
</span><span class="nowrap" title="@{record-type} Are we journaling a gain or a expenditure?">
<select name="attr_record-type" class="selShort">
<option value="Gain" selected title="Gain."> Gain</option>
<option value="Spend" title="Spend."> Spend</option>
<option value="Decrease" title="Decrease: Use this to undo a mistaken Gain."> Decrease</option>
<option value="Refund" title="Refund: Use this to undo a mistaken Spend."> Refund</option>
</select>
</span>
</span>
<span class="nowrap2"><input name="attr_record-reason" type="text" style="width:20em;"
title="@{record-reason}: Detailed description of the transaction."
placeholder="Description of transaction or other notes." /></span>
<button class="text-button button-nodice" name="roll_post_update" type="roll"
value="!Earthdawn~ charID: @{character_id}~ Record: @{record-date-real}: @{record-date-throalic}: @{record-item}: @{record-amount}: @{record-type}: @{record-reason}" >Post</button>
</span>
<textarea name="attr_record-journal" style="height: 400px;" title="@{record-journal} Record things here such as LP and Silver awards and expenditures."></textarea>
</div> <!-- End of Section Record -->
<div class="section section-adjustments">
<b>Advanced:</b>
<input class="sect-show" name="attr_show-advanced" type="checkbox" value="1" checked title="@{show-advanced} Show or hide the Advanced section"/>
<span class="option-show"></span> <!-- You need a blank span here for the Show/Hide css code to work with -->
<div class="sect">
Note: You can hide this section once you or the GM have linked this character's token. &nbsp; &nbsp; V1.0023<br>
<span class="nowrap3" title="@{NPC} Is this character a PC, NPC, Mook, or Object? (Mook means more than one token shares one character sheet) (Object means it is not really a character at all)">PC?
<select name="attr_NPC" class="numLong">
<option value="0" selected title="PC" > PC</option>
<option value="1" title="NPC" > NPC</option>
<option value="2" title="Mook"> Mook</option>
<option value="-1" title="Object - The token is not really a character at all, but is an object such as a campfire or a torch."> Object</option>
</select>
</span>
<span class="nowrap5" title="@{RollType} Should rolls made from this sheet be public, gm, or hidden?">Roll Type:
<select name="attr_RollType" class="selShort api">
<option value=" " selected title="Public"> Public</option>
<option value="pgm" title="GM"> Player&GM</option>
<option value="/w gm" title="Hidden"> GM Only</option>
<option value="RollType: ?{Who should be able to see the results|Public, |Player & GM,pgm|GM Only,/w gm}"
title="At runtime when the button is pressed, have a pop-up ask who should be able to see the results."> Ask</option>
</select>
<select name="attr_RollType-NoAPI" class="selShort NoAPI">
<option value=" " selected title="Public"> Public</option>
<option value="/w gm" title="Hidden"> GM Only</option>
<option value="?{Who should be able to see the results|Public, |GM Only,/w gm}"
title="At runtime when the button is pressed, have a pop-up ask who should be able to see the results."> Ask</option>
</select>
</span>
<!-- Future functionality
<span class="nowrap3" title="@{AnnounceTurn} When this characters turn comes up in Initiative, shall the system announce it via chat?">
<input name="attr_AnnounceTurn" type="checkbox" value="1" /> Announce Turn
</span>
-->
<span class="nowrap3" title="@{Hide-Spells-Tab} Hide the Spells and Grimoire tabs? If the character is not a spellcaster, might as well.">
<input name="attr_Hide-Spells-Tab" type="checkbox" value="1"/>Hide Spells
</span>
<span class="nowrap3" title="@{Logo-Size} Sometimes the logo gets in the way, especially if using a very small screen. Full sized, Half sized, or Get Rid of it?">Logo:
<select name="attr_Logo-Size" class="txtShort">
<option value="0" selected>Full</option>
<option value="1">Small</option>
<option value="2">Hide</option>
</select></span>
<span class="nowrap3" title="@{PlayerWho} This is the last player who pressed a button on this sheet, and sometimes the API's best guess as to who owns this sheet. It is displayed for information and debugging purposes.">
<input name="attr_playerWho" type="text" class="txtMed" value="" readonly/> <!-- Contains "/w " and the name of the last person who did a roll on this sheet. It is used so the API can with acceptable accuracy whisper messages to the person most likely to be editing the sheet. -->
</span>
<span class="nowrap5 api" title="@{SpecialFunction} Select a special function?"><br>Special Function:
<select name="attr_SpecialFunction" class="txtMed">
<option value="!Earthdawn~ charID: @{character_id}~ LinkToken: ?{Optional stuff|Standard|SetTokenOnly|LinkOnly}" title="Selecting this and pressing Do SF will cause selected tokens to link to this character. Standard processing both sets Token Options and Links the token. The next to options do one or the other.">
Link Token</option> <!-- Note: if link token value ever gets changed, change .js newCharacter to exact match. -->
<option value="Recalc" selected title="Simply setting to this value will cause workers to recalculate all calculated values.">
Recalc</option>
<option value="!Earthdawn~ charID: @{character_id}~ Misc: SetAdjust: " title="Copy the buffs from the Combat Tab to the Adjustments Tab. This makes it easier for the GM to create monsters. He can set the values directly on the combat tab, then copy them to be on the Adjustments tab instead.">
Set Adjustments</option>
<option value="!Earthdawn~ ChatMenu: gmState: ED" title="GM can set several State Variables that change how all sheets act.">
GM: Special Commands</option>
<option value="!Earthdawn~ Misc: MacroCreate : ?{Macros|Refresh|Create|Delete}" title="Selecting this and pressing Do SF will create all macros used by this sheet. Option to delete them and refresh them (delete followed by create).">
Macros</option>
<option value="Creature" title="This option allows a creature to be imported as a Text Block formated as the GM guild, companion, etc.">
Import Creature</option>
<option value="MaskApply" title="This option allows a Mask to be applied to the character.">
Import Mask</option>
<option value="!Earthdawn~ charID: @{character_id}~ ChatMenu: Mask" title="This option allows a Mask to be removed from the character.">
Mask Remove</option>
<option value="!Earthdawn~ charID: @{character_id}~ Debug: RepSecFix" title="This will run API code that will look for and fix any problems with repeating sections RowID's">
Verify/Fix Repeating Sections</option>
<option value="!Earthdawn~ charID: @{character_id}~ Chatmenu: Inspect" title="Allows you to inspect various variables, repeating sections, etc.">
Inspect</option>
<option value="!Earthdawn~ foreach~ StatusToToken" title="Set the Token to have the same conditions and status set as its associated character.">
Status to Token</option>
<option value="!Earthdawn charID: @{character_id}~ Debug: test" title="This will run API code under edParse Test">
Test routine run</option>
<option value="!Earthdawn~ charID: @{character_id}~ Debug: Showeach : API" title="Test code to cause whatever attributes the API is currently set to display to appear in the API Output Console.">
showEach API</option>
<option value="!Earthdawn~ Debug: SheetWorkerTest" title="Simply setting to this value (no need to press Do SF button) will cause Sheetworker test to run.">
Sheet Worker Test</option>
</select>
</span>
<span class="nowrap5 NoAPI" title="@{SpecialFunction-NoAPI} Select a special function?"><br>Special Function:
<select name="attr_SpecialFunction-NoAPI" class="txtMed">
<option value="Recalc" title="Simply setting to this value will cause workers to recalculate all calculated values.">
Recalc</option>
<option value="!Earthdawn~ Debug: SheetWorkerTest" title="Simply setting to this value (no need to press Do SF button) will cause Sheetworker test to run.">
Sheet Worker Test</option>
</select>
</span>
<span>
<input class="testChecked hidden" name="attr_SpecialFunction" type="checkbox" value="Recalc"/>
<input class="testChecked hidden" name="attr_SpecialFunction" type="checkbox" value="Creature"/>
<input class="testChecked hidden" name="attr_SpecialFunction" type="checkbox" value="MaskApply"/>
<span class="nowrap5 api HideIfChecked" title="This button will run whatever code is specified by the Special Function drop down menu to the left.">
<button class="text-button button-nodice" name="roll_SpecialFunct" type="roll"
value="@{SpecialFunction}" >Do SF</button>
</span></span>
<input class="testCloseChecked hidden" name="attr_SpecialFunction" type="checkbox" value="Creature"/>
<span class="nowrap5 api HideIfNotCloseChecked" title="Into this little text box, Copy and Paste whatever huge block of text describes the Creature in a format identical to that used in the FASA 4th edition books, and this will attempt to parse it and import the creature.">
Copy and Paste <i>creature</i> description (starting with name) into this tiny text box.
<textarea name="attr_textImport" style="height: 28px; width: 8em; margin-bottom: 0em;"></textarea>
<br></span>
<input class="testCloseChecked hidden" name="attr_SpecialFunction" type="checkbox" value="MaskApply"/>
<span class="nowrap5 api HideIfNotCloseChecked"
title="Into this little text box, Copy and Paste whatever huge block of text describes the mask in a format identical to that used in the FASA 4th edition books, and this will attempt to parse it and import. Importaint Note! Only paste in the part that directly describes the part of the mask being applied. For example, if you are applying the 'CADAVEROUS' Mask at the 'Moderate' level, then you would copy / past starting with 'Moderate (+1 Circle)' and ending just before the line that says 'Major (+2 Circles)'.">
Copy and Paste <i>mask</i> (starting with mask name) into this tiny text box.
<textarea name="attr_textImport" style="height: 28px; width: 8em; margin-bottom: 0em;"></textarea>
<br></span>
<br>
<span class="nowrap"><b>Test worker thread -</b> Change this one.
<input name="attr_wt-test1" type="number" value="0" class="numShort" title="test1: Worker Thread test - change this and see if the following one changes as well. If not the worker threads are not working, probably due to parser not being able to figure out javascript."></span>
<span class="nowrap"> See if this one changes.
<input name="attr_wt-test2" type="number" value="0" class="numShort" title="test2: See if this one changes as well. If not the worker threads are not working, probably due to parser not being able to figure out javascript.">
</span>
<span class="nowrap" title="@{TestText} Test code might put something in here to be displayed.">
<input name="attr_TestText" type="text" />
</span>
<br><br><b>Creature:</b>&nbsp;&nbsp;&nbsp;
<span class="nowrap2" title="@{Creature-HardenedArmor} Hardened Armor: Bonus damage resulting from additional successes on Attack tests is reduced by one per success. Typically, this means that instead of +2 damage per additional success, the attacker only gets +1 damage per additional success">
<input name="attr_Creature-HardenedArmor" type="checkbox" value="1" /> Hardened Armor </span>
<span class="nowrap2" title="@{Creature-GrabAndBite} Grab and Bite: The creature may spend an additional success from an Attack test to automatically grapple an opponent. Grappled opponents automatically take bite damage each round until the grapple is broken.">
<input name="attr_Creature-GrabAndBite" type="checkbox" value="1" /> Grab and Bite </span>
<span class="nowrap2" title="@{Creature-Hamstring} Hamstring: The creature may spend an additional success from an Attack test to halve the opponent’s Movement until the end of the next round. If the attack causes a Wound, the penalty lasts until the Wound is healed.">
<input name="attr_Creature-Hamstring" type="checkbox" value="1" /> Hamstring </span>
<span class="nowrap2" title="@{Creature-Overrun} Overrun: The creature may spend an additional success from an Attack test to force an opponent with a lower Strength Step to make a Knockdown test against a DN equal to the Attack test result.">
<input name="attr_Creature-Overrun" type="checkbox" value="1" /> Overrun </span>
<span class="nowrap2" title="@{Creature-Pounce} Pounce: If the creature reaches its opponent with a leap and the opponent isn’t too much larger, the creature may spend an additional success from the Attack test to force the opponent to make a Knockdown test against a DN equal to the Attack test result.">
<input name="attr_Creature-Pounce" type="checkbox" value="1" /> Pounce </span>
<span class="nowrap3" title="@{Creature-SqueezeTheLife} Squeeze the Life: The creature may spend two additional successes from an Attack test to automatically grapple an opponent. Grappled opponents automatically take claw damage each round until the grapple is broken">
<input name="attr_Creature-SqueezeTheLife" type="checkbox" value="1" /> Squeeze the Life </span>
<span class="nowrap2" title="@{Creature-Fury} Fury threshold - If non-zero, instead of suffering penalties, Wounds grant this creature a bonus to tests. Once the creature has more Wounds than indicated by the Step of this ability, the bonuses are lost and the creature suffers normal penalties for Wounds.">
Fury <input name="attr_Creature-Fury" type="number" value="0" min="0" /></span>
<span class="nowrap2" title="@{Creature-ResistPain} Resist Pain threshold - If non-zero, the creature ignores penalties for Wounds equal to this ability. For example, a creature with Resist Pain (2) ignores the penalties from the first two Wounds suffered.">
Resist Pain <input name="attr_Creature-ResistPain" type="number" value="0" min="0" /></span>
<span class="nowrap2" title="@{Creature-Willful} Willful threshold - If non-zero, Talents and abilities used to dominate, control, tame or train the creature require additional successes equal to the Step of this ability.">
Willful <input name="attr_Creature-Willful" type="number" value="0" min="0" /></span>
<span class="nowrap2" title="@{Creature-Ambush} If the 'Ambushing' box is checked, this is the amount that is added to Initiative, Attack, and Damage.">
Ambush <input name="attr_Creature-Ambush" type="number" value="0" min="0" />
<input name="attr_Creature-Ambushing" type="checkbox" value="1"
title="@{Creature-Ambushing} When this box is checked,then the creature is ambushing. Despite being here and not with the other Combat Options, this is a combat option checkbox. Make sure to uncheck this box when creature is not ambushing." /></span>
<span class="nowrap2" title="@{Creature-DiveCharge} If the 'Diving/Charging' box is checked, this is the amount that is added to Attack, and Damage. Use this for ether Diving or Charging creature powers.">
Dive/Charge <input name="attr_Creature-DiveCharge" type="number" value="0" min="0" />
<input name="attr_Creature-DivingCharging" type="checkbox" value="1"
title="@{Creature-DivingCharging} When this box is checked,then the creature is Ether Diving or Charging. Despite being here and not with the other Combat Options, this is a combat option checkbox. Make sure to uncheck this box when creature is not Diving or Charging." /></span>
<span class="nowrap3" title="@{Creature-Custom1Name} and @{Creature-Custom1Desc} Use these fields to specify a custom Creature Maneuver. Name in first field. A text description in the 2nd.">
C1:&nbsp;<span class="autoexpand-wrap">
<input name="attr_Creature-Custom1Name" type="text" >
<span name="attr_Creature-Custom1Name" class="autoexpand" ></span>
</span>
<span class="autoexpand-wrap">
<input name="attr_Creature-Custom1Desc" type="text" >
<span name="attr_Creature-Custom1Desc" class="autoexpand" ></span>
</span></span>
<span class="nowrap3" title="@{Creature-Custom2Name} and @{Creature-Custom2Desc} Use these fields to specify a custom Creature Maneuver. Name in first field. A text description in the 2nd.">
C2:&nbsp;<span class="autoexpand-wrap">
<input name="attr_Creature-Custom2Name" type="text" >
<span name="attr_Creature-Custom2Name" class="autoexpand" ></span>
</span>
<span class="autoexpand-wrap">
<input name="attr_Creature-Custom2Desc" type="text" >
<span name="attr_Creature-Custom2Desc" class="autoexpand" ></span>
</span></span>
<span class="nowrap3" title="@{Creature-Custom3Name} and @{Creature-Custom3Desc} Use these fields to specify a custom Creature Maneuver. Name in first field. A text description in the 2nd.">
C3:&nbsp;<span class="autoexpand-wrap">
<input name="attr_Creature-Custom3Name" type="text" >
<span name="attr_Creature-Custom3Name" class="autoexpand" ></span>
</span>
<span class="autoexpand-wrap">
<input name="attr_Creature-Custom3Desc" type="text" >
<span name="attr_Creature-Custom3Desc" class="autoexpand" ></span>
</span></span>
<br><b>Opponent:</b>&nbsp;&nbsp;&nbsp;
<span class="nowrap2" title="@{Opponent-ClipTheWing} Clip the Wing: The attacker may spend two additional successes from an Attack test to remove the creature’s ability to fly until the end of the next round. If the attack causes a Wound, the creature cannot fly until the Wound is healed. If the creature is in flight, it falls and suffers falling damage for half the distance fallen.">
<input name="attr_Opponent-ClipTheWing" type="checkbox" value="1" /> Clip the Wing </span>
<span class="nowrap2" title="@{Opponent-CrackTheShell} Crack the Shell: The attacker may spend extra successes from physical attacks (not spells) to reduce the creature’s Physical Armor by 1 per success spent. This reduction takes place after damage is assessed, and lasts until the end of combat.">
<input name="attr_Opponent-CrackTheShell" type="checkbox" value="1" /> Crack the Shell </span>
<span class="nowrap2" title="@{Opponent-Defang} Defang: The opponent may spend additional successes to affect the creature’s ability to use its poison. Each success spent reduces the Poison’s Step by 2. If the attack causes a Wound, the creature cannot use its Poison power at all until the Wound is healed">
<input name="attr_Opponent-Defang" type="checkbox" value="1" /> Defang </span>
<span class="nowrap2" title="@{Opponent-Enrage} Enrage: An opponent may spend additional successes from an Attack test to give a -1 penalty to the creature’s Attack tests and Physical Defense until the end of the next round. Multiple successes may be spent for a cumulative effect.">
<input name="attr_Opponent-Enrage" type="checkbox" value="1" /> Enrage </span>
<span class="nowrap2" title="@{Opponent-Provoke} Provoke: The attacker may spend two additional successes from an Attack test to enrage the creature and guarantee he will be the sole target of the creature’s next set of attacks. Only the most recent application of this maneuver has any effect.">
<input name="attr_Opponent-Provoke" type="checkbox" value="1" /> Provoke </span>
<span class="nowrap2" title="@{Opponent-PryLoose} Pry Loose: The attacker may spend additional successes from an Attack test to allow a grappled ally to immediately make an escape attempt with a +2 bonus per success spent on this maneuver">
<input name="attr_Opponent-PryLoose" type="checkbox" value="1" /> Pry Loose </span>
<span class="nowrap3" title="@{Opponent-Custom1Name}, @{Opponent-Custom1Show} and @{Opponent-Custom1Desc} Use these fields to specify a custom Opponent Maneuver. Name in first field. A text description in the last. It will not be offered up to the user as a way to spend extra successes unless the 'Show' field is checked. This allows the GM to get the opponent maneuvers all setup but not let the players see them until they have passed a knowledge test.">
O1:&nbsp;<span class="autoexpand-wrap">
<input name="attr_Opponent-Custom1Name" type="text" >
<span name="attr_Opponent-Custom1Name" class="autoexpand" ></span>
</span><input name="attr_Opponent-Custom1Show" type="checkbox" value="1" />
<span class="autoexpand-wrap">
<input name="attr_Opponent-Custom1Desc" type="text" >
<span name="attr_Opponent-Custom1Desc" class="autoexpand" ></span>
</span></span>
<span class="nowrap3" title="@{Opponent-Custom2Name}, @{Opponent-Custom2Show} and @{Opponent-Custom2Desc} Use these fields to specify a custom Opponent Maneuver. Name in first field. A text description in the last. It will not be offered up to the user as a way to spend extra successes unless the 'Show' field is checked. This allows the GM to get the opponent maneuvers all setup but not let the players see them until they have passed a knowledge test.">
O2:&nbsp;<span class="autoexpand-wrap">
<input name="attr_Opponent-Custom2Name" type="text" >
<span name="attr_Opponent-Custom2Name" class="autoexpand" ></span>
</span><input name="attr_Opponent-Custom2Show" type="checkbox" value="1" />
<span class="autoexpand-wrap">
<input name="attr_Opponent-Custom2Desc" type="text" >
<span name="attr_Opponent-Custom2Desc" class="autoexpand" ></span>
</span></span>
<span class="nowrap3" title="@{Opponent-Custom3Name}, @{Opponent-Custom3Show} and @{Opponent-Custom3Desc} Use these fields to specify a custom Opponent Maneuver. Name in first field. A text description in the last. It will not be offered up to the user as a way to spend extra successes unless the 'Show' field is checked. This allows the GM to get the opponent maneuvers all setup but not let the players see them until they have passed a knowledge test.">
O3:&nbsp;<span class="autoexpand-wrap">
<input name="attr_Opponent-Custom3Name" type="text" >
<span name="attr_Opponent-Custom3Name" class="autoexpand" ></span>
</span><input name="attr_Opponent-Custom3Show" type="checkbox" value="1" />
<span class="autoexpand-wrap">
<input name="attr_Opponent-Custom3Desc" type="text" >
<span name="attr_Opponent-Custom3Desc" class="autoexpand" ></span>
</span></span>
<b>Misc:</b>&nbsp;&nbsp;
<span class="nowrap2" title='@{Creature-CorruptKarmaBank} This is the bank of Corrupt Karma points that horrors have accumulated against this character. Then these points are transfered to the follow field is when they actually affect the character. This will usually not be set directly using this field, instead, a Talent named "Corrupt Karma" (the Talents tab is used for Horror Powers) that has the field "Special" set to "Corrupt Karma" will be run and the resulting number of successes will automatically be added to this field.'>
Corrupt Karma <input name="attr_Creature-CorruptKarmaBank" type="number" value="0" min="0" /></span>
<span class="nowrap2" title='@{Creature-CorruptKarma} This is the number of Karma Dice that will be negated in the next rolls. This will usually not be set directly using this field, instead, a Talent named "Corrupt Karma" (the Talents tab is used for Horror Powers) that has the field "Special" set to "Corrupt Karma" will have next to it a button (and a Token Action) that when run will transfer Corrupt Karma Points from the bank (previous field) to this field. IE: when the Corrupt Karma power is to be used, the GM should tell the players to check with them before making rolls, and when the player is making a roll with karma that the GM wishes to have corrupted, the GM should use the provided Token Action to set a value in this field.'>
<input name="attr_Creature-CorruptKarma" type="number" value="0" min="0" /></span>
<span class="nowrap2" title='@{Creature-CursedLuck} This is the number of Dice that will be "cursed" (set to 1) during the next roll. This will usually not be set directly using this field. Instead, a Talent named "Cursed Luck" (the Talents tab is used for Horror Powers) that has the field "Special" set to "Cursed Luck" will be run, and it will automatically set this field to the number of successes rolled.'>
Cursed Luck <input name="attr_Creature-CursedLuck" type="number" value="0" min="0" /></span>
<span class="hidden"> <!-- Use these to store misc stuff that does not logically go anywhere else. -->
<input name="attr_edition" type="number"/> <!-- Global value that the API will copy into each individual sheet giving the version number that this sheet has been updated to. -->
<input name="attr_effectIsAction" type="number"/> <!-- Global value that the API will copy into each individual sheet saying whether effect tests are action tests or not. -->
<input name="attr_CreatureFlags" type="number" /> <!-- Convert all the checkboxes above to one handy Earthdawn.flagsCreature bitfield and store it here. -->
<input name="attr_psuedoToken" type="text" /> <!-- If we can't figure out the token being used, Use this field to store stuff that should by rights be stored with a token -->
</span>
</div>
<div class="headerbar">Miscellaneous Adjustments</div>
<div style="font-size: x-small;">Everything here is calculated or entered on other tabs. This is a place where more or less permanent adjustments can be made.
For example: If you tie a thread to an item that gives you a +2 to Physical Defense, you should add the +2 on this tab.
Buffs and other temporary modifications to Defenses and Armor should be made on the Combat Tab.
It is a very good idea to use the notes field at the bottom to document the reason for each adjustment.
</div>
<div>Adjust Attribute &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<span class="nowrap2" title="@{Dex-Adjust-attr}: Adjustment to the Dex attribute.">Dex: <input name="attr_Dex-Adjust-attr" type="number" value="0" class="numShort" /></span>
<span class="nowrap2" title="@{Str-Adjust-attr}: Adjustment to the Str attribute.">Str: <input name="attr_Str-Adjust-attr" type="number" value="0" class="numShort" /></span>
<span class="nowrap2" title="@{Tou-Adjust-attr}: Adjustment to the Tou attribute.">Tou: <input name="attr_Tou-Adjust-attr" type="number" value="0" class="numShort" /></span>
<span class="nowrap2" title="@{Per-Adjust-attr}: Adjustment to the Per attribute.">Per: <input name="attr_Per-Adjust-attr" type="number" value="0" class="numShort" /></span>
<span class="nowrap2" title="@{Wil-Adjust-attr}: Adjustment to the Wil attribute.">Wil: <input name="attr_Wil-Adjust-attr" type="number" value="0" class="numShort" /></span>
<span class="nowrap2" title="@{Cha-Adjust-attr}: Adjustment to the Cha attribute.">Cha: <input name="attr_Cha-Adjust-attr" type="number" value="0" class="numShort" /></span>
</div>
<div>Adjust Attribute Step &nbsp;&nbsp;&nbsp;
<span class="nowrap2" title="@{Dex-Adjust}: Adjustment to the Dex step.">Dex: <input name="attr_Dex-Adjust" type="number" value="0" class="numShort" /></span>
<span class="nowrap2" title="@{Str-Adjust}: Adjustment to the Str step.">Str: <input name="attr_Str-Adjust" type="number" value="0" class="numShort" /></span>
<span class="nowrap2" title="@{Tou-Adjust}: Adjustment to the Tou step.">Tou: <input name="attr_Tou-Adjust" type="number" value="0" class="numShort" /></span>
<span class="nowrap2" title="@{Per-Adjust}: Adjustment to the Per step.">Per: <input name="attr_Per-Adjust" type="number" value="0" class="numShort" /></span>
<span class="nowrap2" title="@{Wil-Adjust}: Adjustment to the Wil step.">Wil: <input name="attr_Wil-Adjust" type="number" value="0" class="numShort" /></span>
<span class="nowrap2" title="@{Cha-Adjust}: Adjustment to the Cha step.">Cha: <input name="attr_Cha-Adjust" type="number" value="0" class="numShort" /></span>
</div>
<div class="table-left">
<div class="table-row">
<span class="table-data" title="@{Defense-Phys-Adjust}: Misc Physical Defense adjustment.">PD: Natural / Normal</span>
<span class="table-data nowrap">
<input name="attr_Defense-Phys-Nat-Adjust" type="number" value="0" class="numShort" title="@{Defense-Phys-Nat-Adjust}: Misc adjustment to Natural Physical Defense. This does include bonuses inherent from their Discipline, but does not include bonuses provided by spells, talents, or woven threads.">
<input name="attr_Defense-Phys-Adjust" type="number" value="0" class="numShort" title="@{Defense-Phys-Adjust}: Misc Physical Defense adjustment. Includes everything except bonuses inherent from Disciplines.">
</span>
<span class="table-data" title="@{Defense-Myst-Adjust}: Misc Mystical Defense adjustment.">MD: Nat / Normal</span>
<span class="table-data nowrap">
<input name="attr_Defense-Myst-Nat-Adjust" type="number" value="0" class="numShort" title="@{Defense-Myst-Nat-Adjust}: Misc adjustment to Natural Mystical Defense. This does include bonuses inherent from their Discipline, but does not include bonuses provided by spells, talents, or woven threads.">
<input name="attr_Defense-Myst-Adjust" type="number" value="0" class="numShort" title="@{Defense-Myst-Adjust}: Misc Mystical Defense adjustment. Includes everything except bonuses inherent from Disciplines.">
</span>
<span class="table-data" title="@{Defense-Soc-Adjust}: Misc Social Defense adjustment.">SD: Nat / Normal</span>
<span class="table-data">
<input name="attr_Defense-Soc-Nat-Adjust" type="number" value="0" class="numShort" title="@{Defense-Soc-Nat-Adjust}: Misc adjustment to Natural Social Defense. This does include bonuses inherent from their Discipline, but does not include bonuses provided by spells, talents, or woven threads.">
<input name="attr_Defense-Soc-Adjust" type="number" value="0" class="numShort" title="@{Defense-Soc-Adjust}: Misc Social Defense adjustment. Includes everything except bonuses inherent from Disciplines.">
</span>
</div>
<div class="table-row">
<span class="table-data" title="@{Armor-Phys-Adjust}: Misc Physical Armor adjustment.">Armor - PA: Nat / Norm&nbsp;</span>
<span class="table-data">
<input name="attr_Armor-Phys-Nat-Adjust" type="number" value="0" class="numShort" title="@{Armor-Phys-Nat-Adjust}: Misc adjustment to Natural Physical Armor. This does include bonuses inherent from their Discipline, but does not include bonuses provided by spells, talents, or woven threads.">
<input name="attr_Armor-Phys-Adjust" type="number" value="0" class="numShort" title="@{Armor-Phys-Adjust}: Misc Physical Armor adjustment. Includes everything except bonuses inherent from Disciplines.">
</span>
<span class="table-data" title="@{Armor-Myst-Adjust}: Misc Mystic Armor adjustment.">MA: Nat / Norm&nbsp;</span>
<span class="table-data">
<input name="attr_Armor-Myst-Nat-Adjust" type="number" value="0" class="numShort" title="@{Armor-Myst-Nat-Adjust}: Misc adjustment to Natural Mystic Armor. This does include bonuses inherent from their Discipline, but does not include bonuses provided by spells, talents, or woven threads.">
<input name="attr_Armor-Myst-Adjust" type="number" value="0" class="numShort" title="@{Armor-Myst-Adjust}: Misc Mystic Armor adjustment. Includes everything except bonuses inherent from Disciplines.">
</span>
</div>
<div class="table-row">
<span class="table-data" title="@{Damage-Unconscious-Adjust}: Adjustment to the calculated Unconscious Rating.">Unconscious Rating:</span>
<span class="table-data"><input name="attr_Damage-Unconscious-Adjust" type="number" value="0" class="numShort" title="@{Damage-Unconscious-Adjust}: Adjustment to the calculated Unconscious Rating."></span>
<span class="table-data" title="@{Damage-Death-Rating-Adjust}: Adjustment to the calculated Death Rating.">Death Rating:</span>
<span class="table-data"><input name="attr_Damage-Death-Rating-Adjust" type="number" value="0" class="numShort" title="@{Damage-Death-Rating-Adjust}: Adjustment to the calculated Death Rating."></span>
<span class="table-data" title="@{Wound-Threshold-Adjust}: Adjustment to the calculated Wound Threshold.">Wound Threshold:</span>
<span class="table-data"><input name="attr_Wound-Threshold-Adjust" type="number" value="0" class="numShort" title="@{Wound-Threshold-Adjust}: Adjustment to the calculated Wound Threshold."></span>
<span class="table-data" title="@{Durability-Rating-Adjust}: Adjustment to the Durability Rating of all Disciplines.">Durability Rating:</span>
<span class="table-data"><input name="attr_Durability-Rating-Adjust" type="number" value="0" class="numShort" title="@{Durability-Rating-Adjust}: Adjustment to the Durability Rating of all Disciplines."></span>
</div>
<div class="table-row">
<span class="table-data" title="@{Recovery-Tests-Misc-Adjust}: Adjustment to the number of Recovery Tests per day.">Recovery Tests per day:&nbsp;</span>
<span class="table-data"><input name="attr_Recovery-Tests-Misc-Adjust" type="number" value="0" class="numShort" title="@{Recovery-Tests-Misc-Adjust}: Adjustment to the number of Recovery Tests per day."></span>
<span class="table-data" title="@{Recovery-Adjust}: Adjustment to the Toughness Recovery step.">Recovery Step: </span>
<span class="table-data"><input name="attr_Recovery-Adjust" type="number" value="0" class="numShort" title="@{Recovery-Adjust}: Adjustment to the Toughness Recovery step."></span>
<span class="table-data" title="@{Damage-Blood-Magic}: Blood Magic damage.">Blood Magic: </span>
<span class="table-data"><input name="attr_Damage-Blood-Magic" type="number" value="0" min="0" class="numShort" title="@{Damage-Blood-Magic}: Blood Magic damage."></span>
</div>
<div class="table-row">
<span class="table-data" title="@{Misc-IP-Adjust}: Misc Initiative Penalty adjustment.">Initiative Penalty:</span>
<span class="table-data"><input name="attr_Misc-IP-Adjust" type="number" value="0" class="numShort" title="@{Misc-IP-Adjust}: Misc Initiative Penalty adjustment."></span>
<span class="table-data" title="@{Misc-Initiative-Adjust}: Misc Initiative adjustment.">Initiative Step:</span>
<span class="table-data"><input name="attr_Misc-Initiative-Adjust" type="number" value="0" class="numShort" title="@{Misc-Initiative-Adjust}: Misc Initiative adjustment."></span>
<span class="table-data" title="@{Knockdown-Adjust}: Misc Knockdown test adjustment.">Knockdown:</span>
<span class="table-data"><input name="attr_Knockdown-Adjust" type="number" value="0" class="numShort" title="@{Knockdown-Adjust}: Misc Knockdown test adjustment."></span>
</div>
<div class="table-row">
<span class="table-data" title="@{Misc-Karma-Max-Adjust}: Adjustment to Karma Max.">Karma Max: </span>
<span class="table-data"><input name="attr_Misc-Karma-Max-Adjust" type="number" value="0" class="numShort" title="@{Misc-Karma-Max-Adjust}: Adjustment to Karma Max."></span>
<span class="table-data" title="@{Misc-Carry-Adjust}: Adjustment to Carrying Capacity.">Carrying Capacity: </span>
<span class="table-data"><input name="attr_Misc-Carry-Adjust" type="number" value="0" class="numLong" title="@{Misc-Carry-Adjust}: Adjustment to Carrying Capacity."></span>
<span class="table-data" title="@{Misc-Movement-Adjust}: Adjustment to unmounted movement.">Movement: </span>
<span class="table-data"><input name="attr_Misc-Movement-Adjust" type="number" value="0" class="numShort" title="@{Misc-Movement-Adjust}: Adjustment to unmounted movement."></span>
</div>
<div class="table-row">
<span class="table-data" title="@{Misc-Renown-Adjust}: Adjustment to Renown.">Renown: </span>
<span class="table-data"><input name="attr_Misc-Renown-Adjust" type="number" value="0" class="numShort" title="@{Misc-Renown-Adjust}: Adjustment to Renown."></span>
<span class="table-data" title="@{Misc-Reputation-Adjust}: Adjustment to Reputation.">Reputation: </span>
<span class="table-data"><input name="attr_Misc-Reputation-Adjust" type="number" value="0" class="numShort" title="@{Misc-Reputation-Adjust}: Adjustment to Reputation."></span>
<span class="table-data" title="@{Misc-Aggressive-Strain}: How much Strain does this character take with each Aggressive Attack. This is usually one except for Journeyman or higher Sky Raiders.">Aggressive Strain: </span>
<span class="table-data"><input name="attr_Misc-Aggressive-Strain" type="number" value="1" class="numShort"
title="@{Misc-Aggressive-Strain}: How much Strain does this character take with each Aggressive Attack. This is usually one except for Journeyman or higher Sky Raiders."></span>
<span class="table-data" title="@{Misc-Aggressive-Penalty}: When Aggressively Attacking, what is the PD and MD penalty? This is usually three.">Aggressive Penalty: </span>
<span class="table-data"><input name="attr_Misc-Aggressive-Penalty" type="number" value="3" class="numShort"
title="@{Misc-Aggressive-Penalty}: When Aggressively Attacking, what is the PD and MD penalty? This is usually three."></span>
</div>
<div class="table-row api">
<span class="table-data" title="@{Karma-Control-JumpUp} Under what circumstances should we add karma to JumpUp test?">Karma - Jump Up: </span>
<span class="table-data" title="@{Karma-Control-JumpUp} Under what circumstances should we add karma to JumpUp test?">
<select name="attr_Karma-Control-JumpUp" class="selShort">
<option value="-1" selected title="Never use karma on JumpUp tests. This overrides the 'Add Karma to rolls' control."> Never</option>
<option value="0" title="Look at the 'Add Karma to rolls' control to determine if should use Karma on JumpUp rolls.">Sometimes </option>
<option value="1" title="If there is unspent karma, always use karma on JumpUp tests. This overrides the 'Add Karma to rolls' control.">Always </option>
<option value="2" title="If there is unspent karma, always use 2 karma on JumpUp tests. This overrides the 'Add Karma to rolls' control.">2 Always</option>
<option value="3" title="If there is unspent karma, always use 3 karma on JumpUp tests. This overrides the 'Add Karma to rolls' control.">3 Always</option>
<option value="K-ask: ?{How many Karma to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many karma should be spent."> Ask</option>
</select></span>
<span class="table-data" title="@{Karma-Control-KnockDown} Under what circumstances should we add karma to KnockDown test?">Knock Down: </span>
<span class="table-data" title="@{Karma-Control-KnockDown} Under what circumstances should we add karma to KnockDown test?">
<select name="attr_Karma-Control-KnockDown" class="selShort">
<option value="-1" selected title="Never use karma on KnockDown tests. This overrides the 'Add Karma to rolls' control."> Never</option>
<option value="0" title="Look at the 'Add Karma to rolls' control to determine if should use Karma on KnockDown rolls.">Sometimes </option>
<option value="1" title="If there is unspent karma, always use karma on KnockDown tests. This overrides the 'Add Karma to rolls' control.">Always </option>
<option value="2" title="If there is unspent karma, always use 2 karma on KnockDown tests. This overrides the 'Add Karma to rolls' control.">2 Always</option>
<option value="3" title="If there is unspent karma, always use 3 karma on KnockDown tests. This overrides the 'Add Karma to rolls' control.">3 Always</option>
<option value="K-ask: ?{How many Karma to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many karma should be spent."> Ask</option>
</select></span>
<span class="table-data" title="@{Karma-Control-Recovery} Under what circumstances should we add karma to Recovery test?">Recovery: </span>
<span class="table-data" title="@{Karma-Control-Recovery} Under what circumstances should we add karma to Recovery test?">
<select name="attr_Karma-Control-Recovery" class="selShort">
<option value="-1" selected title="Never use karma on Recovery tests. This overrides the 'Add Karma to rolls' control."> Never</option>
<option value="0" title="Look at the 'Add Karma to rolls' control to determine if should use Karma on Recovery rolls.">Sometimes </option>
<option value="1" title="If there is unspent karma, always use karma on Recovery tests. This overrides the 'Add Karma to rolls' control.">Always </option>
<option value="2" title="If there is unspent karma, always use 2 karma on Recovery tests. This overrides the 'Add Karma to rolls' control.">2 Always</option>
<option value="3" title="If there is unspent karma, always use 3 karma on Recovery tests. This overrides the 'Add Karma to rolls' control.">3 Always</option>
<option value="K-ask: ?{How many Karma to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many karma should be spent."> Ask</option>
</select></span>
<span class="table-data" title="@{Karma-Control-Initiative} Under what circumstances should we add karma to Initiative test?">Initiative: </span>
<span class="table-data" title="@{Karma-Control-Initiative} Under what circumstances should we add karma to Initiative test?">
<select name="attr_Karma-Control-Initiative" class="selShort">
<option value="-1" selected title="Never use karma on Initiative tests. This overrides the 'Add Karma to rolls' control."> Never</option>
<option value="0" title="Look at the 'Add Karma to rolls' control to determine if should use Karma on Initiative rolls.">Sometimes </option>
<option value="1" title="If there is unspent karma, always use karma on Initiative tests. This overrides the 'Add Karma to rolls' control.">Always </option>
<option value="2" title="If there is unspent karma, always use 2 karma on Initiative tests. This overrides the 'Add Karma to rolls' control.">2 Always</option>
<option value="3" title="If there is unspent karma, always use 3 karma on Initiative tests. This overrides the 'Add Karma to rolls' control.">3 Always</option>
<option value="K-ask: ?{How many Karma to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many karma should be spent."> Ask</option>
</select></span>
</div>
<input class="testCloseChecked hidden" name="attr_Questor" type="checkbox" value="None" />
<div class="table-row HideIfCloseChecked api">
<span class="table-data" title="@{DP-Control-JumpUp} Under what circumstances should we add Devotion Points to JumpUp test?">Dev Pnt - Jump Up: </span>
<span class="table-data" title="@{DP-Control-JumpUp} Under what circumstances should we add Devotion Points to JumpUp test?">
<select name="attr_DP-Control-JumpUp" class="selShort">
<option value="-1" selected title="Never use Devotion Points on JumpUp tests. This overrides the 'Use Dev Pnts in rolls' control."> Never</option>
<option value="0" title="Look at the 'Use Dev Pnts in rolls' control to determine if should use Devotion Points on JumpUp rolls.">Sometimes </option>
<option value="1" title="If there are unspent Devotion Points, always use DP on JumpUp tests. This overrides the 'Use Dev Pnts in rolls' control.">Always </option>
<option value="2" title="If there are unspent Devotion Points, always use 2 DP on JumpUp tests. This overrides the 'Use Dev Pnts in rolls' control.">2 Always</option>
<option value="3" title="If there are unspent Devotion Points, always use 3 DP on JumpUp tests. This overrides the 'Use Dev Pnts in rolls' control.">3 Always</option>
<option value="DP-ask: ?{How many Devotion Points to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many Devotion Points should be spent."> Ask</option>
</select></span>
<span class="table-data" title="@{DP-Control-KnockDown} Under what circumstances should we add Devotion Points to KnockDown test?">Knock Down: </span>
<span class="table-data" title="@{DP-Control-KnockDown} Under what circumstances should we add Devotion Points to KnockDown test?">
<select name="attr_DP-Control-KnockDown" class="selShort">
<option value="-1" selected title="Never use Devotion Points on KnockDown tests. This overrides the 'Use Dev Pnts in rolls' control."> Never</option>
<option value="0" title="Look at the 'Use Dev Pnts in rolls' control to determine if should use Devotion Points on KnockDown rolls.">Sometimes </option>
<option value="1" title="If there are unspent Devotion Points, always use DP on KnockDown tests. This overrides the 'Use Dev Pnts in rolls' control.">Always </option>
<option value="2" title="If there are unspent Devotion Points, always use 2 DP on KnockDown tests. This overrides the 'Use Dev Pnts in rolls' control.">2 Always</option>
<option value="3" title="If there are unspent Devotion Points, always use 3 DP on KnockDown tests. This overrides the 'Use Dev Pnts in rolls' control.">3 Always</option>
<option value="DP-ask: ?{How many Devotion Points to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many Devotion Points should be spent."> Ask</option>
</select></span>
<span class="table-data" title="@{DP-Control-Recovery} Under what circumstances should we add Devotion Points to Recovery test?">Recovery: </span>
<span class="table-data" title="@{DP-Control-Recovery} Under what circumstances should we add Devotion Points to Recovery test?">
<select name="attr_DP-Control-Recovery" class="selShort">
<option value="-1" selected title="Never use Devotion Points on Recovery tests. This overrides the 'Use Dev Pnts in rolls' control."> Never</option>
<option value="0" title="Look at the 'Use Dev Pnts in rolls' control to determine if should use Devotion Points on Recovery rolls.">Sometimes </option>
<option value="1" title="If there are unspent Devotion Points, always use DP on Recovery tests. This overrides the 'Use Dev Pnts in rolls' control.">Always </option>
<option value="2" title="If there are unspent Devotion Points, always use 2 DP on Recovery tests. This overrides the 'Use Dev Pnts in rolls' control.">2 Always</option>
<option value="3" title="If there are unspent Devotion Points, always use 3 DP on Recovery tests. This overrides the 'Use Dev Pnts in rolls' control.">3 Always</option>
<option value="DP-ask: ?{How many Devotion Points to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many Devotion Points should be spent."> Ask</option>
</select></span>
<span class="table-data" title="@{DP-Control-Initiative} Under what circumstances should we add Devotion Points to Initiative test?">Initiative: </span>
<span class="table-data" title="@{DP-Control-Initiative} Under what circumstances should we add Devotion Points to Initiative test?">
<select name="attr_DP-Control-Initiative" class="selShort">
<option value="-1" selected title="Never use Devotion Points on Initiative tests. This overrides the 'Use Dev Pnts in rolls' control."> Never</option>
<option value="0" title="Look at the 'Use Dev Pnts in rolls' control to determine if should use Devotion Points on Initiative rolls.">Sometimes </option>
<option value="1" title="If there are unspent Devotion Points, always use DP on Initiative tests. This overrides the 'Use Dev Pnts in rolls' control.">Always </option>
<option value="2" title="If there are unspent Devotion Points, always use 2 DP on Initiative tests. This overrides the 'Use Dev Pnts in rolls' control.">2 Always</option>
<option value="3" title="If there are unspent Devotion Points, always use 3 DP on Initiative tests. This overrides the 'Use Dev Pnts in rolls' control.">3 Always</option>
<option value="DP-ask: ?{How many Devotion Points to spend on this test|0}"
title="At runtime when the button is pressed, have a pop-up ask how many Devotion Points should be spent."> Ask</option>
</select></span>
</div>
</div>
<input class="testNum" name="attr_MaskList" value="0" type="hidden"/>
<div class="HideIfZero">
Masks:
<label class="autoexpand-wrap" title="@{MaskList} Names of Masks applied to this character.">
<input name="attr_MaskList" type="text" value="0" readonly>
<span name="attr_MaskList" class="autoexpand" ></span>
</label><br>
<textarea name="attr_MaskDetail" style="height: 120px;" readonly title="@{MaskDetail} Mask text detailing the Mask Template."></textarea>
</div>
<div style="font-size: x-small;">Document every permanent or semi-permanent adjustment here. You or your GM should be able to glance at these notes and
know why every adjustment has been made. Example typical entry might be "MD +3: +1 Wiz 2nd, +2 Group thread".</div>
<textarea name="attr_Adjustment-Notes" style="height: 300px;" title="@{Adjustment-Notes} Notes on why certain things are adjusted here." placeholder="Notes on why certain things are adjusted here."></textarea>
</div> <!-- End of section Adjustments -->
<div class="sec-border-bottom">
</div>
</div> <!-- Everything inside this outer form div wrapper should be indented, but is not. -->
<!-- rolltemplates -->
<rolltemplate class="sheet-rolltemplate-chatrecord">
<table>
{{#header}}<thead><tr><th colspan="2">{{header}}</th></tr></thead>{{/header}}
<tbody>
{{#miscval}}<tr><td>{{misclabel}}:</td><td>{{miscval}}</td></tr>{{/miscval}}
{{#refund}}<tr><td colspan="2" style="text-align: center; background-color: Orange;">Refund</td></tr>{{/refund}}
{{#throalic}}<tr><td>Throalic Date:</td><td>{{throalic}}</td></tr>{{/throalic}}
{{#lp}}<tr><td>LP:</td><td>{{lp}}</td></tr>{{/lp}}
{{#sp}}<tr><td>Silver:</td><td>{{sp}}</td></tr>{{/sp}}
{{#time}}<tr><td>Time:</td><td>{{time}}</td></tr>{{/time}}
{{#note}}<tr><td>Note:</td><td>{{note}}</td></tr>{{/note}}
</tbody>
</table>
{{#button1}}&nbsp;&nbsp;&nbsp;&nbsp;To record {{button1}}{{/button1}}
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-rolltargetnumber">
<table>
{{#header}}<thead><tr><th colspan="2">{{header}}</th></tr></thead>{{/header}}
<tbody>
{{#Step}}<tr><td>Step + bonus:</td><td>{{Step}}</td></tr>{{/Step}}
{{#target_number}}<tr><td>
Target
{{#target_name}}'{{target_name}}'{{/target_name}}
{{#target_defense}}{{target_defense}}{{/target_defense}}
</td><td>TN# {{target_number}}</td></tr>{{/target_number}}
<tr><td>Result:</td><td>{{Result}}
{{#target_number}}
{{#rollLess() Result target_number}}<span style="color: red;">Failed</span>{{/rollLess() Result target_number}}
{{#^rollLess() Result target_number}}<span style="color: green;">Success</span>{{/^rollLess() Result target_number}}
{{/target_number}}
</td></tr>
{{#Text}}<tr><td>Text:</td><td>{{Text}}</td></tr>{{/Text}}
</tbody>
</table>
</rolltemplate>
<!-- WORKERS -->
<script type="text/worker">
// This is Test code to see if worker threads are active (working). If wt-test1 changes, change wt-test2. if wt-test2 does not update, sheetworkers are not working.
on("change:wt-test1", function ocwttest1() {
'use strict';
getAttrs([ "wt-test1", "wt-test2" ], function(values) {
'use strict';
setAttrs({ "wt-test2": values[ "wt-test1" ] });
});
}); // End on change wt-test1
// This is a wrapper for parseInt.
// If you set lg to true it will write a log entry.
// vals = values.
// fld = feild within values to get and convert to an int with a default of zero.
var getInt = function fnGetInt( vals, fld, lg ) {
'use strict';
if( lg ) // Note: For debugging purposes, merely comment out this line to log everything.
console.log( "Got " + fld + " = " + vals[ fld ] );
return parseInt( vals[ fld ] ) || 0;
}; // End getInt()
// If Edition has not been set (probably because we are running without the API) then default to 4th edition.
var getEdition = function fnGetInt( vals ) {
'use strict';
return parseInt( vals[ "edition" ] ) || 4;
}; // End getEdition()
// This is a wrapper for call backs that log when callback is entered and exited.
// The console.log lines should be commented out when not actively debugging.
var fn = function fnfn(cb){
'use strict';
return function fnfn2(){
// console.log('Entering: '+(cb.name||'(anonymous function)'));
cb.apply({},arguments);
// console.log('Exiting: '+(cb.name||'(anonymous function)'));
};
};
// This will generate a log entry with the name of the function that called it.
var callstack = function fncallstack(){
var e = new Error('dummy');
var stack = e.stack.replace(/^[^\(]+?[\n$]/gm, '')
.replace(/^\s+at\s+/gm, '')
.replace(/^Object.<anonymous>\s*\(/gm, '{anonymous}()@')
.split('\n');
stack.shift();
console.log(stack);
};
// Takes a list of values, such as gotten from getAtters and logs them.
// Note that when not activly debugging, this whole routine can be commeneted out.
var logvalues = function fnlogvalues( vals ) {
'use strict';
// var txt = "getAttrs -";
// for(var key in vals)
// txt += " " + key + ": " + vals[ key ] ;
// console.log( txt );
};
// This is just like setAttrs(), except that before it sets the attrs, it writes net new values to the console log.
// NOTE That when not actively debugging, all lines except the last can/should be commented out.
var setAttrsLog = function fnlogvalues( vals, opt, cb ) {
// var txt = "setAttrs -";
// for(var key in vals)
// txt += " " + key + ": " + vals[ key ] ;
// console.log( txt );
setAttrs( vals, opt, cb );
};
// Takes a list of values, such as gotten from getAtters and logs them.
// Note that by changing specific instances of logvalues to logvalues2, you can easily turn debugging on and off for specific sections.
var logvalues2 = function fnlogvalues( vals ) {
'use strict';
var txt = "getAttrs -";
for(var key in vals)
txt += " " + key + ": " + vals[ key ] ;
console.log( txt );
};
// This is just like setAttrs(), except that before it sets the attrs, it writes net new values to the console log.
// NOTE That by changing specific instances of setAttrsLog to setAttrsLog2, you can easily turn debugging on and off for specific sections.
var setAttrsLog2 = function fnlogvalues( vals, opt, cb ) {
var txt = "setAttrs -";
for(var key in vals)
txt += " " + key + ": " + vals[ key ] ;
console.log( txt );
setAttrs( vals, opt, cb );
};
// Get a Parameter. IE: getParm( "1,2,3,4,5", 2, ","); will return 2. IE the 2nd item in the list.
// str: List to scan.
// num: Number of the parameter to return.
// delim: Character to treat as the delimiter.
var getParam = function ( str, num, delim ) {
'use strict';
var found;
var count = 0;
var j;
var i = -1;
do {
j = i + 1;
i = str.indexOf( delim, i+1);
} while ( (++count < num) && (i !== -1) );
if( count === num) {
if( i < 0)
i = str.length;
found = str.slice( j, i).trim();
}
return found;
}; // end getParam()
var buildPre = function ( code, rowID ) {
'use strict';
try {
let ret;
code = code.toUpperCase();
if( !rowID )
rowID = "xYz";
switch ( code ) {
case "DSP": ret = "repeating_discipline_" + rowID + "_" + code + "_"; break;
case "T": ret = "repeating_talents_" + rowID + "_" + code + "_"; break;
case "NAC": ret = "repeating_knacks_" + rowID + "_" + code + "_"; break;
case "SK": ret = "repeating_skills_" + rowID + "_" + code + "_"; break;
case "SKK": ret = "repeating_skillk_" + rowID + "_" + code + "_"; break;
case "SKAC":
case "SKA": ret = "repeating_skilla_" + rowID + "_" + code + "_"; break;
case "SKL": ret = "repeating_skilll_" + rowID + "_" + code + "_"; break;
case "SPM": ret = "repeating_matrix_" + rowID + "_" + code + "_"; break;
case "SP": ret = "repeating_spell_" + rowID + "_" + code + "_"; break;
case "WPN": ret = "repeating_weapons_" + rowID + "_" + code + "_"; break;
case "MNT": ret = "repeating_mount_" + rowID + "_" + code + "_"; break;
case "TI": ret = "repeating_threads_" + rowID + "_" + code + "_"; break;
default: log( "Earthdawn:buildPre() error. Unknown code: " + code + " RowID: " + rowID );
}
return ret.replace( /_xYz_/g, "_");
} catch(err) {
log( "Earthdawn:buildPre() error caught: " + err );
}
}; // end buildPre
// a version of getSectionIDs that returns the IDs in the order that they are displayed.
// getSectionIDs returns in the order the repeating section lines were created. The user has the ability to reorder the lines.
// getAttrs( [ "_reporder_repeating_" + section_name] , ... ) returns an empty object if the lines were not reordered,
// and may return an incomplete list or a list with items that were since deleted.
// This returns a complete and accurate list in the order that they are displayed.
var getSectionIDsOrdered = function (sectionName, callback) {
'use strict';
getAttrs([`_reporder_${sectionName}`], function (values) {
let reporder = values[`_reporder_${sectionName}`];
if( !reporder )
getSectionIDs( sectionName, callback ); // There is no ordering, so just call the standard getSectionIDs and tell it to run the callback passed to us.
else
getSectionIDs( sectionName, function (idArray) {
callback([...new Set(reporder.toLowerCase().split(",").filter(x => idArray.includes(x)).concat(idArray))]);
});
});
}; // end getSectionIDsOrdered()
// This is a helper function. It is useful to routines that may be called as part of a repeating section, or as part of an iteration through a repeating section.
var fullName = function fnfullName( name, ei ) {
'use strict';
if( _.isString( ei )) {
var u = name.indexOf( "_", name.indexOf( "_")+1); // Find the 2nd underscore.
return name.slice( 0, u+1) + ei + name.slice( u); // If ei is a string, then insert the RowID contained within eventInfo into name and return that.
} else
return name; // If ei is an actual eventInfo object, then simply return name, since the system does not need the rowID if it came from a repeating section.
}; // End fullName
//
// This section has the routines that are called by the "on change" routines.
//
var ConditionHealth = function fnConditionHealth() { // If Health is anything other than OK, make sure both blindsided and knocked down are set.
'use strict';
getAttrs([ "condition-Health", "condition-Blindsided", "condition-KnockedDown" ], function gaConditionHealth(values) {
'use strict';
logvalues( values);
if ( values[ "condition-Health" ] != "0" ) {
var vals = {};
if( values[ "condition-Blindsided" ] != "1" )
vals[ "condition-Blindsided" ] = "1";
if( values[ "condition-KnockedDown" ] != "1" )
vals[ "condition-KnockedDown" ] = "1";
if( Object.keys(vals).length > 0)
setAttrsLog( vals );
}
});
};
// My interpretation of the rules (unclear) is that effect tests are adjusted for little except wounds.
// Note that any change here should be reflected in the following routine as well.
var updateAdjustEffectTests = function fnUpdateAdjustEffectTests() {
'use strict';
getAttrs([ "Adjust-Effect-Tests-Total", "effectIsAction", "Adjust-Effect-Tests-Misc", "Wounds",
"Creature-Fury", "Creature-ResistPain" ], function gaUpdateAdjustEffectTests(values) {
'use strict';
logvalues( values);
if( values[ "effectIsAction" ] )
updateAdjustActionTests();
else {
let val = getInt( values, "Adjust-Effect-Tests-Misc")
+ (getInt( values, "Wounds") * ((getInt( values, "Wounds") <= getInt( values, "Creature-Fury" )) ? 1 : -1 ))
+ Math.min( getInt( values, "Wounds"), getInt( values, "Creature-ResistPain" ));
if( val != values[ "Adjust-Effect-Tests-Total" ] )
setAttrsLog({ "Adjust-Effect-Tests-Total": val });
}
});
}; // End updateAdjustEffectTests()
var updateAdjustActionTests = function fnUpdateAdjustActionTests() {
'use strict';
getAttrs([ "Adjust-All-Tests-Misc", "effectIsAction", "Adjust-Effect-Tests-Total", "Adjust-Effect-Tests-Misc", "combatOption-TailAttack" , "condition-Harried",
"combatOption-DefensiveStance", "condition-KnockedDown", "Adjust-All-Tests-Total",
"Wounds", "Creature-Fury", "Creature-ResistPain" ], function gaUpdateAdjustActionTests(values) {
'use strict';
logvalues( values);
if( values[ "effectIsAction" ] ) { // Effect tests are the same as action tests, so we don't use Adjust-Effect-Tests-Total. So find it's value here and use it.
let valE = (getInt( values, "Wounds") * (getInt( values, "Wounds") <= getInt( values, "Creature-Fury" ) ? 1 : -1 ))
+ Math.min( getInt( values, "Wounds"), getInt( values, "Creature-ResistPain" ));
let val = getInt( values, "Adjust-All-Tests-Misc") + valE
- (getInt( values, "condition-Harried") + (getInt( values, "combatOption-TailAttack") * 2)
+ (getInt( values, "combatOption-DefensiveStance") * 3) + (getInt( values, "condition-KnockedDown") * 3));
if( val != values[ "Adjust-All-Tests-Total" ] )
setAttrsLog({ "Adjust-All-Tests-Total": val, "Adjust-Effect-Tests-Total": val });
} else { // This is the normal Action Test adjustment code, assuming Adjust-Effect-Tests-Total has the normal value.
var val = getInt( values, "Adjust-All-Tests-Misc") + getInt( values, "Adjust-Effect-Tests-Total")
- (getInt( values, "Adjust-Effect-Tests-Misc") + getInt( values, "condition-Harried") + (getInt( values, "combatOption-TailAttack") * 2)
+ (getInt( values, "combatOption-DefensiveStance") * 3) + (getInt( values, "condition-KnockedDown") * 3));
if( val != values[ "Adjust-All-Tests-Total" ] )
setAttrsLog({ "Adjust-All-Tests-Total": val });
}
});
}; // End updateAdjustActionTests()
var updateAdjustAttacks = function fnUpdateAdjustAttacks() {
'use strict';
getAttrs([ "Adjust-Attacks-Misc", "combatOption-AggressiveAttack", "Wounds", "combatOption-CalledShot", "combatOption-DefensiveStance",
"combatOption-TailAttack" , "condition-Harried", "condition-RangeLong", "condition-KnockedDown",
"Adjust-All-Tests-Misc", "Adjust-Attacks-Total-CC", "Creature-Fury", "Creature-ResistPain",
"Creature-Ambush", "Creature-Ambushing", "Creature-DiveCharge", "Creature-DivingCharging" ], function gaUpdateAdjustAttacks(values) {
'use strict';
logvalues( values);
var vals = {};
var val = getInt( values, "Adjust-Attacks-Misc") + getInt( values, "Adjust-All-Tests-Misc")
+ (getInt( values, "Wounds") * (getInt( values, "Wounds") <= getInt( values, "Creature-Fury" ) ? 1 : -1 ))
+ Math.min( getInt( values, "Wounds"), getInt( values, "Creature-ResistPain" ))
+ ( getInt( values, "Creature-Ambushing") * getInt( values, "Creature-Ambush"))
+ ( getInt( values, "Creature-DivingCharging") * getInt( values, "Creature-DiveCharge"))
- ((getInt( values, "combatOption-CalledShot") * 3) + (getInt( values, "combatOption-DefensiveStance") * 3) +
getInt( values, "condition-Harried") + (getInt( values, "combatOption-TailAttack") * 2) +
(getInt( values, "condition-RangeLong") *2) + (getInt( values, "condition-KnockedDown") *3));
vals[ "Adjust-Attacks-Total" ] = val;
vals[ "Adjust-Attacks-Total-CC" ] = val + (getInt( values, "combatOption-AggressiveAttack") * 3);
setAttrsLog( vals );
});
}; // End updateAdjustAttacks()
var updateAdjustDamage = function fnUpdateAdjustDamage() {
'use strict';
getAttrs([ "Adjust-Damage-Total-CC", "Adjust-Damage-Misc", "Adjust-Effect-Tests-Misc", "combatOption-AggressiveAttack",
"combatOption-DefensiveStance", "Creature-Fury", "Creature-ResistPain", "Wounds", "condition-RangeLong",
"Creature-Ambush", "Creature-Ambushing", "Creature-DiveCharge", "Creature-DivingCharging" ], function gaUpdateAdjustDamage(values) {
'use strict';
logvalues( values);
var vals = {};
var val = getInt( values, "Adjust-Damage-Misc") + getInt( values, "Adjust-Effect-Tests-Misc")
+ (getInt( values, "Wounds") * (getInt( values, "Wounds") <= getInt( values, "Creature-Fury" ) ? 1 : -1 ))
+ Math.min( getInt( values, "Wounds"), getInt( values, "Creature-ResistPain" ))
+ ( getInt( values, "Creature-Ambushing") * getInt( values, "Creature-Ambush"))
+ ( getInt( values, "Creature-DivingCharging") * getInt( values, "Creature-DiveCharge"))
- ((getInt( values, "combatOption-DefensiveStance") * 3)
+ (getInt( values, "condition-RangeLong") *2));
vals[ "Adjust-Damage-Total" ] = val;
vals[ "Adjust-Damage-Total-CC" ] = val + (getInt( values, "combatOption-AggressiveAttack") * 3);
setAttrsLog( vals );
});
}; // End updateAdjustDamage()
var updateAdjustDefenses = function fnUpdateAdjustDefenses() {
'use strict';
getAttrs([ "Adjust-Defenses-Misc", "combatOption-DefensiveStance", "condition-Cover", "combatOption-AggressiveAttack", "Misc-Aggressive-Penalty",
"condition-Harried", "condition-Surprised", "condition-Blindsided", "condition-KnockedDown" ], function gaUpdateAdjustDefenses(values) {
'use strict';
logvalues( values);
var val = getInt( values, "Adjust-Defenses-Misc") + getInt( values, "condition-Cover")
+ ( getInt( values, "condition-Blindsided") ? 0 : getInt( values, "combatOption-DefensiveStance") *3) // If blindsided, not only take the -2 below, but also lose Def stance.
- ( getInt( values, "condition-Harried") + (getInt( values, "condition-Surprised") * 3)
+ ( getInt( values, "combatOption-AggressiveAttack") * ( getInt( values, "Misc-Aggressive-Penalty" )))
+ ( getInt( values, "condition-Blindsided") *2) + (getInt( values, "condition-KnockedDown") *3));
setAttrsLog({ "Adjust-Defenses-Total": val });
});
}; // End updateAdjustDefenses()
var updateAdjustTN = function fnUpdateAdjustTN() {
'use strict';
getAttrs([ "Adjust-TN-Misc", "combatOption-Reserved" ], function gaUpdateAdjustTN(values) {
'use strict';
logvalues( values);
var val = getInt( values, "Adjust-TN-Misc") + (getInt( values, "combatOption-Reserved") * 2);
setAttrsLog({ "Adjust-TN-Total": val });
});
}; // End updateAdjustTN()
var calculateAttribCosts = function fnCalculateAttribCosts( orig) { // calculate a single attribute cost depending on the original modifier bought by the player at character creation
'use strict';
var diff = parseInt( orig );
var cost = Math.max( diff, -2 );
while ( diff > 3 ) {
diff -= 3;
cost += (diff);
}
return cost;
};
var updateAttribCosts = function fnUpdateAttribCosts() { // At character creation, everybody starts with 25 attribute points to spend. NB : Unspent points are added to karma max by updateKarma().
'use strict';
getAttrs( [ "Attrib-Dex-Orig", "Attrib-Str-Orig", "Attrib-Tou-Orig", "Attrib-Per-Orig", "Attrib-Wil-Orig", "Attrib-Cha-Orig", "Attr-Costs" ], function gaUpdateAttribCosts(values) {
'use strict';
logvalues( values);
var val = 25;
val -= calculateAttribCosts( values[ "Attrib-Dex-Orig" ]);
val -= calculateAttribCosts( values[ "Attrib-Str-Orig" ]);
val -= calculateAttribCosts( values[ "Attrib-Tou-Orig" ]);
val -= calculateAttribCosts( values[ "Attrib-Per-Orig" ]);
val -= calculateAttribCosts( values[ "Attrib-Wil-Orig" ]);
val -= calculateAttribCosts( values[ "Attrib-Cha-Orig" ]);
setAttrsLog({ "Attr-Costs": val });
});
}; // End updateAttribCosts()
// calculate the final Value for the @attrib attribute
// silent means that we are coming from backfillOrigAttrib() and to avoid any possibility of a race condition we need to make subsequent calls manually instead of using events.
var updateAttribCurr = function fnUpdateAttribCurr( attrib, silent ) {
'use strict';
var curr = "Attrib-" + attrib + "-Curr";
var orig = "Attrib-" + attrib + "-Orig";
var race = "Attrib-" + attrib + "-Race";
var inc = "Attrib-" + attrib + "-Increases";
var adjust = attrib + "-Adjust-attr";
getAttrs( [ curr, race, orig, inc, adjust ], function gaUpdateAttribCurr(values) {
'use strict';
logvalues( values);
var vals = {};
vals[ curr ] = getInt( values, race) + getInt( values, orig) + getInt( values, inc) + getInt( values, adjust );
if( vals[ curr ] != getInt( values, curr) ) {
if( !silent )
setAttrsLog( vals );
else
setAttrsLog( vals, "silent", function saUpdateAttribCurr() {
'use strict';
updateAttribStep( attrib, silent);
switch ( attrib ) {
case "Dex":
updateDefensebase( "Dex", "PD");
break;
case "Str":
updateCarry();
break;
case "Tou":
updateHealth();
break;
case "Per":
updateDefensebase( "Per", "MD");
break;
case "Wil":
updateMaBase();
break;
case "Cha":
updateDefensebase( "Cha", "SD");
break;
}
});
updateAttribCosts();
}
});
}; // End updateAttribCurr()
// If somebody has changed the attribute step, go back and change the orig to match,
// Note: if you change this code, make sure that updateAttribStep() is also updated and tested to not make an infinite loop due to circular reference does not result.
// IE: make sure that this produces a correct value that updateAttribStep() will not attempt to "correct" and visa versa.
var backfillOrigAttrib = function fnBackfillOrigAttrib( attrib ) {
'use strict';
var step = attrib + "-Step";
var orig = "Attrib-" + attrib + "-Orig";
var race = "Attrib-" + attrib + "-Race";
var inc = "Attrib-" + attrib + "-Increases";
var adjust = attrib + "-Adjust-attr";
getAttrs( [ step, orig, race, inc, adjust ], function gabackfillOrigAttrib(values) {
'use strict';
logvalues( values);
var t = ((getInt( values, step) -2) * 3) + 2 - (getInt( values, inc) + getInt( values, race) + getInt( values, adjust));
var cval = getInt( values, orig);
if( cval < (t - 1) || (t + 1) < cval) {
var vals = {};
vals [ orig ] = t;
setAttrsLog( vals, "silent" );
updateAttribCurr( attrib, true);
}
});
}; // End backfillOrigAttrib()
// Calculate Step from Value for the @attrib attribute
// Note: if you change this code, make sure that backfillOrigAttrib() is also updated and tested to not make an infinite loop due to circular reference does not result.
// IE: make sure that this produces a correct value that backfillOrigAttrib() will not attempt to "correct" and visa versa.
// silent means that we are coming from backfillOrigAttrib() and to avoid any possibility of a race condition we need to make subsequent calls manually instead of using events.
var updateAttribStep = function fnUpdateAttribStep( attrib, silent ) {
'use strict';
var step = attrib + "-Step";
var curr = "Attrib-" + attrib + "-Curr";
getAttrs( [ step, curr ], function gaUpdateAttribStep(values) {
'use strict';
logvalues( values);
var vals = {};
vals[ step ] = Math.floor(( getInt( values, curr) - 1) / 3 ) + 2;
if( vals[ step ] != getInt( values, step) )
if( !silent )
setAttrsLog( vals );
else
setAttrsLog( vals, "silent", function saUpdateAttribStep() {
'use strict';
updateAttribFinal( attrib );
if( attrib == "Tou" )
updateHealth();
});
});
}; // End updateAttribStep()
var updateAttribFinal = function fnUpdateAttribFinal( base ) { //calculate Action Test Step for the attribute
'use strict';
let bs = _.isString( base ) ? base : (base[ "sourceAttribute"].slice(0, 1).toUpperCase() + base[ "sourceAttribute"].slice(1, 3)),
efct = bs + "-Effect";
getAttrs( [ bs + "-Step", bs + "-Adjust", bs + "-Mods", efct, bs, "Adjust-Effect-Tests-Total", "Adjust-All-Tests-Total" ], function gaUpdateAttribFinal(values) {
'use strict';
logvalues( values);
let vals = {},
both = getInt( values, bs + "-Step") + getInt( values, bs + "-Adjust") + getInt( values, bs + "-Mods");
let e = both + getInt( values, "Adjust-Effect-Tests-Total"),
a = both + getInt( values, "Adjust-All-Tests-Total");
if( e != getInt( values, efct) )
vals[ efct ] = e;
if( a != getInt( values, bs) )
vals[ bs ] = a;
if( _.size( vals ) > 0 )
setAttrsLog( vals );
});
}; // End updateAttribFinal()
var updateCarried = function fnUpdateCarried() {
'use strict';
getAttrs([ "Weight-Equipment", "Weight-Gear", "Weight-coin" ], function gaUpdateCarried(values) {
'use strict';
logvalues( values);
var val = getInt( values, "Weight-Equipment") + getInt( values, "Weight-Gear") + getInt( values, "Weight-coin");
// getInt( values, "Weight-supply");
setAttrsLog({ "Carrying-Carried": val });
});
};
var updateCarry = function fnUpdateCarry() {
'use strict';
getAttrs(["Attrib-Str-Curr", "Race", "Misc-Carry-Adjust", "Carrying-Capacity" ], function gaUpdateCarry(values) {
'use strict';
logvalues( values);
var str = getInt( values, "Attrib-Str-Curr") + (( values["Race"] == 1 ) ? 2 : 0);
var carry = 5 + getInt( values, "Misc-Carry-Adjust");
while ( str > 0 ) {
carry += (str * 5);
str -= 5;
}
if( carry != values[ "Carrying-Capacity" ])
setAttrsLog({ "Carrying-Capacity": carry });
});
}; // End updateCarry()
var calcED3Death = function fnCalcED3Death(value) { // function used to calculate 3rd edition Death Rating from Tou value
'use strict';
if ( value == 0 ) {
return 18;
} else if ( value == 1 ) {
return 19;
} else if ( value == 2 ){
return 20;
} else {
return 4 + calcED3Death( value-3 );
}
}; // End calcED3Death()
var updateHealth = function fnUpdateHealth() {
'use strict';
getAttrs([ "Damage-Unconscious-Adjust", "Attrib-Tou-Curr", "working-Durability", "Damage-Blood-Magic", "Damage-Unc-Rating", "Damage-Death-Rating",
"Damage-Death-Rating-Adjust", "Health-Buff", "Tou-Step", "working-Circle", "Recovery-Tests_max", "Recovery-Tests-Misc-Adjust",
"Wound-Threshold-Buff", "Wound-Threshold", "Wound-Threshold-Adjust", "Race", "edition" ], function gaUpdateHealth(values) {
'use strict';
logvalues( values);
var vals = {};
var unc = getInt( values, "Damage-Unconscious-Adjust") + getInt( values, "Health-Buff") - getInt( values, "Damage-Blood-Magic");
if ( getEdition( values ) == 3 ) { // 3rd edition Unconsciousness rating
//Below are the tables of Unconsciousness rates and Wound thresholds for 3rd edition. (Toughness Value - 1) is used as the index to find the corresponding value.
var ED3Uncon = [10, 11, 13, 14, 15, 17, 18, 19, 21, 22, 24, 26, 27, 28, 30, 31, 32, 34, 35, 36, 39, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52, 53, 55, 56, 57, 59, 60, 61, 63, 64, 65, 67, 68, 69, 71, 72, 73, 75, 76, 77, 80, 81, 82, 84, 85, 86, 88, 89, 90, 92, 93, 94, 96, 97, 98, 100, 101, 102, 104, 105, 106, 108, 109, 110, 112, 113, 114, 116, 117, 118, 120, 121, 122, 124, 125, 126, 128, 129, 130, 132, 133, 134, 136, 137, 138, 140, 141, 142, 144, 145,];
unc += ED3Uncon[ ((getInt( values, "Attrib-Tou-Curr")>100)?100:getInt( values, "Attrib-Tou-Curr")) -1 ];
}
else // 4th edition Unconsciousness rating
unc += (getInt( values, "Attrib-Tou-Curr") * 2) + getInt( values, "working-Durability");
if( unc != values[ "Damage-Unc-Rating" ])
vals[ "Damage-Unc-Rating" ] = unc;
var val = getInt( values, "Damage-Death-Rating-Adjust");
if ( getEdition( values ) == 3 ) { // 3rd edition Death rating
val += calcED3Death(getInt( values, "Attrib-Tou-Curr")) + getInt( values, "Health-Buff");
} else // 4th edition Death rating
val += unc + getInt( values, "Tou-Step") + getInt( values, "working-Circle") - getInt( values, "Damage-Unconscious-Adjust");
if( val < unc )
val = unc; // To simplify entering monsters, if unc has been set to higher than death rating, set death rating to unc.
if( val != values[ "Damage-Death-Rating" ])
vals[ "Damage-Death-Rating" ] = val;
val = getInt( values, "Wound-Threshold-Buff") + getInt( values, "Wound-Threshold-Adjust") + (( values[ "Race" ] == "4") ? 3 : 0);
if ( getEdition( values ) == 3 ) { // 3rd edition Wound threshold
//Below are the tables of Unconsciousness rates and Wound thresholds for 3rd edition. (Toughness Value - 1) is used as the index to find the corresponding value.
var ED3WndTreshold = [3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 16, 16, 17, 17, 17, 18, 18, 19, 19, 19, 20, 20, 21, 21, 21, 21, 22, 22, 22, 23, 23, 23, 23, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 27, 27, 27, 27, 27, 28, 28, 28, 28, 29, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31, 31, 32, 32, 32, 32, 33, 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35];
val += ED3WndTreshold[ ((getInt( values, "Attrib-Tou-Curr")>100)?100:getInt( values, "Attrib-Tou-Curr")) -1 ];
} else { // 4th edition Wound threshold
val += Math.floor((getInt( values, "Attrib-Tou-Curr") +1) / 2 ) +2;
};
if( val != values[ "Wound-Threshold" ])
vals[ "Wound-Threshold" ] = val;
val = getInt( values, "Recovery-Tests-Misc-Adjust");
if ( getEdition( values ) == 3 ) { // 3rd edition numbers of Recovery tests NB : here Tou values of 1 and 2 will produce 1 instead of "1/2", due to present version of character sheet not handling non Int values in this field
val += Math.max( Math.ceil( ( getInt( values, "Attrib-Tou-Curr")-1 ) / 6 ) ,1 );
} else { // 4th edition numbers of Recovery tests
val += Math.floor((getInt( values, "Attrib-Tou-Curr") -1) / 6 ) +1;
};
if( val != values[ "Recovery-Tests_max" ])
vals[ "Recovery-Tests_max" ] = val;
if( Object.keys(vals).length > 0 )
setAttrsLog( vals );
});
}; // End updateHealth()
var updateInitiative = function fnUpdateInitiative() {
'use strict';
getAttrs([ "Initiative", "Dex-Effect", "Misc-Initiative-Adjust", "Misc-Initiative-Buff", "IP", "Creature-Ambush", "Creature-Ambushing" ], function gaUpdateInitiative(values) {
'use strict';
logvalues( values);
var val = getInt( values, "Dex-Effect") + getInt( values, "Misc-Initiative-Adjust") + getInt( values, "Misc-Initiative-Buff") - getInt( values, "IP")
+ (getInt( values, "Creature-Ambushing") * getInt( values, "Creature-Ambush" ));
if( val != values[ "Initiative" ])
setAttrsLog({ "Initiative": val });
});
}; // End updateInitiative()
var updateIP = function fnUpdateIP() {
'use strict';
getAttrs([ "Armor-IP", "Shield-IP", "Misc-IP-Buff", "Misc-IP-Adjust", "condition-NoShield" ], function gaUpdateIP(values) {
'use strict';
logvalues( values);
var val = getInt( values, "Armor-IP") + ((values[ "condition-NoShield" ] == "1") ? 0 : getInt( values, "Shield-IP"))
+ getInt( values, "Misc-IP-Buff") + getInt( values, "Misc-IP-Adjust");
setAttrsLog({ "IP": val });
});
};
var updateKarma = function fnUpdateKarma() {
'use strict';
getAttrs([ "Karma-Modifier", "working-Circle", "Misc-Karma-Max-Adjust", "Attr-Costs", "Karma_max", "Race", "edition" ], function gaUpdateKarma(values) {
'use strict';
logvalues( values);
if ( getEdition( values ) == 4 && getInt( values, "Karma-Modifier" ) != 0) { // NB : Prior to 4th edition, Karma depends on Karmic Ritual rank, so is entered manually in those versions of the sheet. Also, if karma modifier is zero (because race is not selected or is "Other", don't set anything since for Dragons we directly enter values we don't want overwritten.
var val = (getInt( values, "Karma-Modifier") * getInt( values, "working-Circle")) + getInt( values, "Misc-Karma-Max-Adjust")
+ ((getInt( values, "Race") == 0) ? 0 : getInt( values, "Attr-Costs") );
if( val < 0 )
val = 0;
if( val != values[ "Karma_max" ])
setAttrsLog({ "Karma_max": val });
};
});
}; // End updateKarma()
var updateLpStatus = function fnUpdateLpStatus() {
'use strict';
getAttrs([ "LP-Total", "LP-Status" ], function gaUpdateLpStatus(values) {
'use strict';
logvalues( values);
var val = getInt( values, "LP-Total");
var vals;
if( val < 10000 )
vals = { "LP-Status": "LP up to 10,000", "LP-Renown": "16", "LP-Reputation": "NA" };
else if ( val < 100000 )
vals = { "LP-Status": "LP 10K to 100K", "LP-Renown": "12", "LP-Reputation": "+2" };
else if ( val < 1000000 )
vals = { "LP-Status": "LP 100K to 1M", "LP-Renown": "9", "LP-Reputation": "+4" };
else
vals = { "LP-Status": "LP over 1M", "LP-Renown": "7", "LP-Reputation": "+6" };
if( vals[ "LP-Status" ] != values[ "LP-Status" ])
setAttrsLog( vals );
});
};
var updateMaBase = function fnupdateMaBase() {
'use strict';
getAttrs([ "Attrib-Wil-Curr", "MA-Base", "edition" ], function gaupdateMaBase(values) {
'use strict';
logvalues( values);
var val = 0;
if ( getEdition( values ) == 3 ) { // 3rd edition MA-Base
if ( getInt( values, "Attrib-Wil-Curr") > 10)
val += Math.ceil( ( getInt( values, "Attrib-Wil-Curr") - 10 ) /3 );
} else // 4th edition MA-Base
val += Math.floor( getInt( values, "Attrib-Wil-Curr") / 5 );
if( val != values[ "MA-Base" ])
setAttrsLog({ "MA-Base": val });
});
}; // End updateMA()
var calcED3Defense = function fnCalcED3Defense(value) { // function used to calculate 3rd edition Defense value from an Attribute value
'use strict';
if ( value < 6) {
return Math.floor(value/2)+2;
} else if (value == 6) {
return 4 ;
} else {
return 3 + calcED3Defense( value-7 );
};
}; // End calcED3Defense()
var updateMD = function fnUpdateMD() {
'use strict';
getAttrs([ "MD-Nat", "MD-Buff", "Defense-Myst-Adjust", "Shield-Myst", "MD-ShieldBuff", "condition-Blindsided", "condition-NoShield", "edition", "MD" ], function gaUpdateMD(values) {
'use strict';
logvalues( values);
let val = getInt( values, "MD-Nat") + getInt( values, "MD-Buff") + getInt( values, "Defense-Myst-Adjust" );
if((getEdition( values ) === 4) && (values[ "condition-Blindsided" ] != "1") && (values[ "condition-NoShield" ] != "1"))
val += getInt( values, "Shield-Myst" ) + getInt( values, "MD-ShieldBuff" );
if( val != values[ "MD" ])
setAttrsLog({ "MD": val });
});
}; // End updateMD()
var updateMovement = function fnUpdateMovement() {
'use strict';
getAttrs([ "Movement", "Movement-Race", "Misc-Movement-Adjust", "Movement-Buff", "condition-ImpairedMovement",
"condition-KnockedDown" ], function gaUpdateMovement(values) {
'use strict';
logvalues( values);
let val;
if( values[ "condition-KnockedDown" ] == "1" )
val = 2;
else
val = getInt( values, "Movement-Race") + getInt( values, "Misc-Movement-Adjust") + getInt( values, "Movement-Buff");
val -= Math.ceil( getInt( values, "condition-ImpairedMovement") * 2.45);
if ( val < 1 )
val = "1*";
var vals = {};
if( val != values[ "Movement" ])
vals[ "Movement" ] = val;
if( Object.keys(vals).length > 0)
setAttrsLog( vals );
});
};
var updateMysticArmor = function fnUpdateMysticArmor() {
'use strict';
getAttrs([ "Armor-Myst", "MA-Buff", "Armor-Myst-Adjust", "MA-Nat", "Mystic-Armor", "condition-Blindsided", "edition", "Shield-Myst" ], function gaUpdateMysticArmor(values) {
'use strict';
logvalues( values);
var val = getInt( values, "Armor-Myst") + getInt( values, "Armor-Myst-Adjust") + getInt( values, "MA-Nat") +
getInt( values, "MA-Buff") +
(( values[ "condition-Blindsided"] != "1" && (getEdition( values ) != 4 ) ) ? getInt( values, "Shield-Myst" ) : 0);
if( val != values[ "Mystic-Armor" ])
setAttrsLog({ "Mystic-Armor": val });
});
}; // End updateMysticArmor()
var updateDefensebase = function fnUpdateDefensebase( attr, def) {
'use strict';
let attrib = "Attrib-" + attr + "-Curr",
defense = def + "-Base";
getAttrs([ attrib, defense, "edition" ], function gaUpdateDefensebase(values) {
'use strict';
logvalues( values);
var val = 0;
if ( getEdition( values ) == 3 ) // 3rd edition defense Base
val += calcED3Defense( getInt( values, attrib) );
else // 4th edition defense Base
val += Math.floor(( getInt( values, attrib) +1 ) / 2 ) + 1;
if( val != values[ defense ]) {
let vals = {};
vals[ defense ] = val;
setAttrsLog( vals );
}
});
}; // End updateDefensebase()
// Natural attributes, adjusted only for things specific to Natural values, and combat options and conditions.
var updateDefenseNatural = function fnUpdateDefenseNatural( eventInfo ) {
'use strict';
let att, att2, att3, att4, defAdjust = 0;
if ( _.isString( eventInfo ))
att = eventInfo.toLowerCase();
else
att = eventInfo["sourceAttribute"].toLowerCase();
if( att.startsWith( "defense-" ) ) // Defense-Phys/Myst/Soc-Nat-Adjust
att2 = getParam( att, 2, "-").slice( 0,1 ) + "d";
else if( att.startsWith( "armor-" ) ) // Armor-Phys/Myst-Nat-Adjust
att2 = getParam( att, 2, "-").slice( 0,1 ) + "a";
else // PD/MD/SD/MA-Base
att2 = getParam( att, 1, "-");
switch ( att2 ) {
case "pd": att3 = "PD"; att4 = "Defense-Phys-Nat-Adjust"; defAdjust = 1; break;
case "md": att3 = "MD"; att4 = "Defense-Myst-Nat-Adjust"; defAdjust = 1; break;
case "sd": att3 = "SD"; att4 = "Defense-Soc-Nat-Adjust"; break;
case "pa": att3 = "PA"; att4 = "Armor-Phys-Nat-Adjust"; break;
case "ma": att3 = "MA"; att4 = "Armor-Myst-Nat-Adjust"; break;
default:
log( "Earthdawn sheetworker error, updateDefenseNatural found " + att );
return;
}
// There is no PA-Base, but this should default gracefully.
getAttrs([ att3 + "-Base", att4 , att3 + "-Nat", "Race", "Adjust-Defenses-Total" ], function gaUpdateDefenseNatural(values) {
'use strict';
logvalues( values);
var val = getInt( values, att3 + "-Base") + getInt( values, att4) + (getInt( values, "Adjust-Defenses-Total") * defAdjust);
if( att3 === "PD" && values[ "Race" ] == "8") // Windlings get 2 extra PD.
val += 2;
if( att3 === "PA" && values[ "Race" ] == "4") // Obsidimen get 3 extra PA.
val += 3;
if( val != values[ att3 + "-Nat" ]) {
let vals = {};
vals[ att3 + "-Nat" ] = val;
setAttrsLog( vals );
}
});
}; // End updateDefenseNatural()
var updatePD = function fnUpdatePD() {
'use strict';
getAttrs([ "PD-Nat", "PD-Buff", "Defense-Phys-Adjust", "Shield-Phys", "PD-ShieldBuff", "condition-Blindsided", "condition-NoShield", "edition", "PD" ], function gaUpdatePD(values) {
'use strict';
logvalues( values);
let val = getInt( values, "PD-Nat") + getInt( values, "PD-Buff") + getInt( values, "Defense-Phys-Adjust" )
if((getEdition( values ) === 4) && (values[ "condition-Blindsided" ] != "1") && (values[ "condition-NoShield" ] != "1"))
val += getInt( values, "Shield-Phys" ) + getInt( values, "PD-ShieldBuff" );
if( val != values[ "PD" ])
setAttrsLog({ "PD": val });
});
}; // End updatePD()
var updatePhysicalArmor = function fnUpdatePhysicalArmor() {
'use strict';
getAttrs([ "Armor-Phys", "PA-Buff", "Armor-Phys-Adjust", "PA-Nat", "Pysical-Armor", "condition-Blindsided", "edition", "Shield-Phys" ], function gaUpdatePhysicalArmor(values) {
'use strict';
logvalues( values);
var val = getInt( values, "PA-Nat" ) + getInt( values, "Armor-Phys") + getInt( values, "Armor-Phys-Adjust") + getInt( values, "PA-Buff" ) +
(( values[ "condition-Blindsided"] != "1" && (getEdition( values ) != 4 ) ) ? getInt( values, "Shield-Phys" ) : 0);
if( val != values[ "Physical-Armor" ])
setAttrsLog({ "Physical-Armor": val });
});
}; // End updatePhysicalArmor()
var updateRace = function fnUpdateRace() { // Race based modifiers/characteristics to Attributes
'use strict';
getAttrs(["Race", "edition"], function gaUpdateRace(values) {
'use strict';
logvalues( values);
var race = getInt( values, "Race" );
if( race > 10 ) // If race is set to "Other", then use stat's for "None".
race = 0;
if ( getEdition( values ) == 3 ) { // Base values for 3rd edition - Race order: none, dwarf, elf, human, obsidiman, ork, troll, t'skrang, windling, human (Vorst)
setAttrsLog({
"Attrib-Dex-Race": [ "10", "10", "12", "10", "8", "10", "10", "11", "11", "10"][race],
"Attrib-Str-Race": [ "10", "12", "10", "10", "18", "13", "14", "10", "4", "10"][race],
"Attrib-Tou-Race": [ "10", "13", "8", "10", "13", "11", "12", "11", "8", "11"][race],
"Attrib-Per-Race": [ "10", "10", "11", "10", "9", "10", "9", "10", "11", "10"][race],
"Attrib-Wil-Race": [ "10", "10", "11", "10", "10", "8", "11", "10", "10", "11"][race],
"Attrib-Cha-Race": [ "10", "8", "11", "10", "9", "9", "10", "11", "12", "10"][race],
"Movement-Race": [ "10", "10", "14", "12", "10", "12", "14", "12", "16", "10"][race], //for windlings, we only store the air Movement (and keep in mind that ground Movement is ground-10)
"Karma-Modifier": [ "0", "4", "4", "5", "3", "5", "3", "4", "6", "5"][race] });
} else { // Base values for 4th edition - Race order: none, dwarf, elf, human, obsidiman, ork, troll, t'skrang, windling, human (Vorst)
setAttrsLog({
// Other, dwarf, Elf, Human, Obsidiman, Ork, Troll, T'skrang, Windling, Vorst ()human)
"Attrib-Dex-Race": [ "10", "9", "12", "10", "8", "10", "10", "11", "11", "10"][race],
"Attrib-Str-Race": [ "10", "10", "10", "10", "18", "13", "14", "10", "4", "10"][race],
"Attrib-Tou-Race": [ "10", "12", "8", "10", "13", "11", "12", "11", "8", "11"][race],
"Attrib-Per-Race": [ "10", "11", "11", "10", "9", "10", "9", "10", "11", "10"][race],
"Attrib-Wil-Race": [ "10", "11", "11", "10", "10", "8", "11", "10", "10", "11"][race],
"Attrib-Cha-Race": [ "10", "10", "11", "10", "9", "9", "10", "11", "12", "10"][race],
"Movement-Race": [ "10", "10", "14", "12", "10", "12", "14", "12", "16", "10"][race], //for windlings, we only store the air Movement (and keep in mind that ground Movement is ground-10)
"Karma-Modifier": [ "0", "4", "4", "5", "3", "5", "3", "4", "6", "5"][race] });
}
updateDefenseNatural( "PD");
updateDefenseNatural( "PA" );
});
}; // End on change Race()
var updateRecovery = function fnUpdateRecovery() {
'use strict';
getAttrs([ "Recovery-Step", "Tou-Effect", "Recovery-Adjust", "Recovery-Buff", "Wounds", "Creature-Fury", "Creature-ResistPain" ], function gaUpdateRecovery(values) {
'use strict';
logvalues( values);
var val = getInt( values, "Tou-Effect" ) + getInt( values, "Recovery-Adjust") + getInt( values, "Recovery-Buff" )
- (getInt( values, "Wounds") * (getInt( values, "Wounds") <= getInt( values, "Creature-Fury" ) ? 0 : -1 ))
- Math.min( getInt( values, "Wounds"), getInt( values, "Creature-ResistPain" ));
if( val != values[ "Recovery-Step" ])
setAttrsLog({ "Recovery-Step": val });
});
}; // End updateRecovery()
var updateSD = function fnUpdateSD() {
'use strict';
getAttrs([ "SD-Nat","Defense-Soc-Adjust", "SD-Buff", "SD" ], function gaUpdateSD(values) {
'use strict';
logvalues( values);
var val = getInt( values, "SD-Nat") + getInt( values, "Defense-Soc-Adjust" ) + getInt( values, "SD-Buff");
// In most cases SD does not get adjusted with the other ones.
// + getInt( values, "Adjust-Defenses-Total" )
if( val != values[ "SD" ])
setAttrsLog({ "SD": val });
});
}; // End updateSD()
var updateWeightCoin = function fnUpdateWeightCoin() {
'use strict';
getAttrs([ "Wealth_Gold", "Wealth_Silver", "Wealth_Copper", "Weight-coin" ], function gaUpdateWeightCoin(values) {
'use strict';
logvalues( values);
var val = Math.round((getInt( values, "Wealth_Gold") / 80) + (getInt( values, "Wealth_Silver") / 64 ) + (getInt( values, "Wealth_Copper") / 48));
if( val != values[ "Weight-coin" ])
setAttrsLog({ "Weight-coin": val });
});
};
var updateWeightEquipment = function fnUpdateWeightEquipment() {
'use strict';
var inArray = [];
inArray.push( "Weight-Equipment" );
inArray.push( "Armor-Weight" );
inArray.push( "Shield-Weight" );
inArray.push( "Weight-Mod" );
getSectionIDs("weapons", function(idarray) {
for(let i=0; i < idarray.length; i++)
inArray.push( buildPre( "WPN", idarray[ i ]) + "Weight" );
getAttrs( inArray, function gaUpateWeightEquipment(values) {
'use strict';
logvalues( values);
let val = 0;
for( let i=1; i < inArray.length; i++ )
val += getInt( values, inArray[ i ]);
if( val !== getInt( values, "Weight-Equipment" ))
setAttrsLog({ "Weight-Equipment": val });
});
});
};
var updateWeightSupply = function fnUpdateWeightSupply() {
'use strict';
getAttrs([ "Healing_Booster", "Healing_Healing", "Healing_Last_Chance", "Healing_Closure", "Healing_Kit", "Healing_Physician_Kit", "Gear_Rations_Trail", "Gear_Rations_Mine", "Weight-supply" ], function gaUpdateWeightSupply(values) {
'use strict';
logvalues( values);
var val = Math.round((getInt( values, "Healing_Booster") * 2) + (getInt( values, "Healing_Healing") * 2 ) + getInt( values, "Healing_Last_Chance") +
getInt( values, "Healing_Closure") + (getInt( values, "Gear_Rations_Trail") * 1.428 ) + (getInt( values, "Gear_Rations_Mine") * 0.8571));
if( getInt( values, "Healing_Kit") > 0)
val += 5;
if( getInt( values, "Healing_Physician_Kit") > 0)
val += Math.floor((getInt( values, "Healing_Physician_Kit") + 8) / 3);
if( val != values[ "Weight-supply" ])
setAttrsLog({ "Weight-supply": val });
});
}; // end updateWeightSupply
var updateWillforce = function fnUpdateWillforce() {
'use strict';
getAttrs([ "SP-Willforce-Step", "Wil-Effect", "SP-Willforce-Effective-Rank", "SP-Willforce-Mods", "SP-Willforce-Use" ], function gaUpdateWillforce(values) {
'use strict';
logvalues( values);
var val = getInt( values, "Wil-Effect") + (( values[ "SP-Willforce-Use" ] == "1" ) ? getInt( values, "SP-Willforce-Effective-Rank" ) + getInt( values, "SP-Willforce-Mods" ) : 0);
if( val != values[ "SP-Willforce-Step" ])
setAttrsLog({ "SP-Willforce-Step": val });
});
}; // End updateWillforce()
var updateWillEffect = function fnUpdateWillEffect() {
'use strict';
getAttrs([ "Will-Effect", "SP-Willforce-Step", "Will-Eff-Mods", "Will-Eff-All-Mods" ], function gaUpdateWillEffect(values) {
'use strict';
logvalues( values);
var val = getInt( values, "SP-Willforce-Step") + getInt( values, "Will-Eff-Mods" ) + getInt( values, "Will-Eff-All-Mods" );
if( val != values[ "Will-Effect" ])
setAttrsLog({ "Will-Effect": val });
});
}; // End updateWillEffect()
var updateTalentSummary = function fnupdateTalentSummary() {
'use strict';
var attarray = [];
attarray.push("SP-Spellcasting-Rank");
attarray.push("SP-Patterncraft-Rank");
attarray.push("SP-Elementalism-Rank");
attarray.push("SP-Illusionism-Rank");
attarray.push("SP-Nethermancy-Rank");
attarray.push("SP-Shamanism-Rank");
attarray.push("SP-Wizardry-Rank");
attarray.push("SP-Power-Rank");
attarray.push("SP-Willforce-Rank");
getSectionIDs("repeating_matrix", function gsIdRepeatingMatrix(marray) {
for( let i = 0; i < marray.length; i++) {
attarray.push( buildPre( "SPM", marray[ i ] ) + "Rank");
attarray.push( buildPre( "SPM", marray[ i ] ) + "Origin");
}
getSectionIDs("repeating_talents", function gsIdRepeatingTalents(tarray) {
for( let i = 0; i < tarray.length; i++) {
attarray.push( buildPre( "T", tarray[ i ] ) + "Rank");
attarray.push( buildPre( "T", tarray[ i ] ) + "Type");
}
getSectionIDsOrdered("repeating_discipline", function gsIdRepeatingDiscipline(darray) {
for( let i = 0; i < darray.length; i++)
attarray.push( buildPre( "DSP", darray[ i ] ) + "Code");
getAttrs( attarray , function gaTalentSummary(values) {
'use strict';
logvalues( values);
var s = "", s2 = " 5.3 6.3 7.3 16.3 22.3", s3,
cnt = 0, first,
arr = [],
discArr = [];
for( let i = 0; i < darray.length; i++) {
s3 = values[ buildPre( "DSP", darray[ i ] ) + "Code" ];
discArr.push( s3 );
if( s2.includes( " " + s3 )) {
if( first === undefined)
first = i;
++cnt;
}
}
function countTalents( new2, which, lvl ) {
'use strict';
if( getInt( values, new2 + "-Rank") > 0 ) {
if( !which && cnt > 0)
arr.push( { type: "D" + (first +1).toString(), level: (lvl ? lvl : "Novice"), rank: values[ new2 + "-Rank" ]} );
else if( which && discArr.indexOf( which ) !== -1)
arr.push( { type: "D" + (discArr.indexOf( which ) +1).toString(), level: (lvl ? lvl : "Novice"), rank: values[ new2 + "-Rank" ]} );
else
arr.push( { type: "Versatility", rank: values[ new2 + "-Rank" ]} );
}
};
countTalents( "SP-Spellcasting" );
countTalents( "SP-Patterncraft" );
countTalents( "SP-Elementalism", "5.3" );
countTalents( "SP-Illusionism", "6.3" );
countTalents( "SP-Nethermancy", "7.3" );
countTalents( "SP-Shamanism", "22.3" );
countTalents( "SP-Wizardry", "16.3" );
countTalents( "SP-Willforce", undefined, "Journeyman" );
var tmp, rnk;
for( let i = 0; i < marray.length; i++) {
rnk = values[ buildPre( "SPM", marray[ i ] ) + "Rank" ];
if( parseInt( rnk ) > 0) {
tmp = values[ buildPre( "SPM", marray[ i ] ) + "Origin" ];
if( !tmp )
tmp = "Free";
if( tmp !== "Item" && tmp !== "Other" && tmp !== "Sharing") {
if( tmp.indexOf( "-" ) !== -1)
arr.push( { type: getParam( tmp, 1, "-"), level: getParam( tmp, 2, "-"), rank: rnk} );
else
arr.push( { type: tmp, rank: rnk} );
}
}
}
for( let i = 0; i < tarray.length; i++) {
rnk = values[ buildPre( "T", tarray[ i ] ) + "Rank" ];
if( parseInt( rnk ) > 0) {
tmp = values[ buildPre( "T", tarray[ i ] ) + "Type" ];
if( tmp === undefined )
tmp= "D-Novice";
// else
// tmp = tmp.replace( "Talent Option", "TO").replace( "Discipline", "Disc");
if ( tmp !== "Dummy") {
if( tmp.indexOf( "-" ) != -1)
arr.push( { type: getParam( tmp, 1, "-"), level: getParam( tmp, 2, "-"), rank: rnk} );
else
arr.push( { type: tmp, rank: rnk} );
}
}
}
var val="", lvlCnt;
// Earthdawn groups by type (D1, F1, etc), then filters by level (novi, jour, etc).
// Note: At this point Arr is an array whose elements contain objects. Example: 1: {type: "D1", level: "Initiate", rank: "2"}
var artype = _.groupBy( arr, "type"); // Now artype is an object whose named properties are objects (groups) that contain arrays of objects.
// var artype2 = _.sortBy( artype, "length"); // artype2 is an array of arrays of objects.
var artype2 = _.sortBy( artype, x => x[0].type); // artype2 is an array of arrays of objects.
// artype2.reverse();
function sumRanks( groupby, group) {
var filtered;
if( groupby !== null)
filtered = _.where(group, {level: groupby});
else
filtered = group;
if( filtered.length > 0 ) {
if( lvlCnt++ > 0)
val += " " + groupby.slice( 0, 4) + ": ";
else {
if( val !== "" )
val += " ";
let s4 = group[0]["type"];
if( s4.charAt( s4.length -1) !== "1" )
val += group[0]["type"].slice( 0, 4);
if( groupby !== null) {
if( s4.charAt( s4.length -1) !== "1" )
val += " - ";
val += groupby.slice( 0, 4);
}
val += ": ";
}
var m = Math.max( filtered, function( group) { return group.rank; })["rank"];
var cb = _.countBy( filtered, function( grp ) { return grp.rank; });
var k, s="";
for( k = 1; k <= m; ++k ) {
s += "/" + ((cb[k] == undefined) ? "0" : cb[k]);
}
val += s.slice(1);
}
} // end sumRanks()
for( let i=0; i < artype2.length; i++ ) {
lvlCnt = 0
if( _.some( artype2[i], "level") ) {
sumRanks( "Novice", artype2[i]);
sumRanks( "Journeyman", artype2[i]);
sumRanks( "Warden", artype2[i]);
sumRanks( "Master", artype2[i]);
} else {
sumRanks( null, artype2[i]);
}
}
setAttrsLog({ "TalentSummary": val });
});
});
});
});
}; // End updateTalentSummary()
var updateSPEffectiveRank = function fnupdateSPEffectiveRank( eventInfo ) {
'use strict';
var att = getParam( eventInfo["sourceAttribute"], 2, "-" );
att = att.charAt(0).toUpperCase() + att.slice(1);
getAttrs([ "SP-" + att + "-Effective-Rank", "SP-" + att + "-Rank", "SP-" + att + "-Rank-Mods" ], function gaUpdateEffectiveRank(values) {
'use strict';
logvalues( values);
var val = getInt( values, "SP-" + att + "-Rank" ) + getInt( values, "SP-" + att + "-Rank-Mods" );
if( val != values[ "SP-" + att + "-Effective-Rank" ]) {
var vals = {};
vals[ "SP-" + att + "-Effective-Rank" ] = val;
setAttrsLog( vals );
}
if( eventInfo["sourceAttribute"].endsWith( "ank")) // If sourceAttribute is a _Rank, update TalentSummary.
updateTalentSummary();
});
}; // End updateSPEffectiveRank()
var updateSPStep = function fnupdateSPStep( eventInfo) {
'use strict';
var att;
if ( _.isString( eventInfo ))
att = eventInfo;
else {
att = getParam( eventInfo["sourceAttribute"], 2, "-" );
att = att.charAt(0).toUpperCase() + att.slice(1);
}
getAttrs([ "Per", "SP-" + att + "-Step", "SP-" + att + "-Effective-Rank", "SP-" + att + "-Mods", "condition-Darkness" ], function gaUpdateSPStep(values) {
'use strict';
logvalues( values);
var val = getInt( values, "Per") + getInt( values, "SP-" + att + "-Effective-Rank" ) + getInt( values, "SP-" + att + "-Mods" );
if( att === "Spellcasting" || att === "Patterncraft")
val -= getInt( values, "condition-Darkness" );
if( val != values[ "SP-" + att + "-Step" ]) {
var vals = {};
vals[ "SP-" + att + "-Step" ] = val;
setAttrsLog( vals );
}
});
}; // End updateSPStep()
// Split movement can only have two values, checked or unchecked. So if it is checked, it must have been unchecked a second ago and visa versa.
// So adjust the value of Harried, assuming that SM used to be in its other state.
var CoSplitMovement = function fnCoSplitMovement() {
'use strict';
getAttrs([ "combatOption-SplitMovement", "condition-Harried" ], function gaCoSplitMovement(values) {
'use strict';
logvalues( values);
var harr = getInt( values, "condition-Harried");
if( getInt( values, "combatOption-SplitMovement" ))
harr += (( harr == 0) ? 2 : 1);
else
harr -= (( harr == 2) ? 2 : 1);
harr = Math.max( harr, 0);
setAttrsLog({ "condition-Harried": harr });
});
};
// Note: this routine just sets two hidden values, working-durability and working-circle. These are used in other calculations
// It also sets durability if durability-rating-adjust changed.
var upateDurability = function fnupdateDurability() {
'use strict';
// Go through all the discipline ranks and calculate durability.
getSectionIDs("repeating_discipline", function gsIdRepeatingDiscipline(darray) {
var i;
var attarray = [];
attarray.push("working-Durability");
attarray.push("working-Circle");
attarray.push("Durability-Rating-Adjust");
attarray.push("DP_max");
attarray.push("DevotionStep");
for( i = 0; i < darray.length; i++) {
attarray.push( buildPre( "DSP", darray[ i ] ) + "Code");
attarray.push( buildPre( "DSP", darray[ i ] ) + "Circle");
attarray.push( buildPre( "DSP", darray[ i ] ) + "Durability");
}
getAttrs( attarray , function gaRdAttarray(values) {
'use strict';
logvalues( values);
var i;
var resarray = [],
res2 = [];;
var vals = {};
for( i = 0; i < darray.length; i++) {
var str1 = buildPre( "DSP", darray[ i ] ) + "Durability";
var str2 = buildPre( "DSP", darray[ i ] ) + "Circle";
var str3 = buildPre( "DSP", darray[ i ] ) + "Code"
var durStored = values[ str1 ] || "-1";
var tmp = values[ str3 ] || "0";
var durCalc = parseInt(tmp.slice( tmp.indexOf( ".") +1));
let sCircle = values[ str2 ] || "0";
if (tmp === "89.0" ) { // Questor - make sure devotion points and devotion step are right.
let circle = parseInt( sCircle );
let calc = circle * 10;
if( parseInt( values[ "DP_max" ] ) != calc )
vals[ "DP_max" ] = calc;
calc = Math.floor((circle + 11) / 4);
if( calc != values[ "DevotionStep" ])
vals[ "DevotionStep" ] = calc.toString();
} else if( durStored != durCalc && tmp != "0.5" && tmp != "89.0" && tmp != "98.5" && tmp != "99.5") { // Don't do this if Discipline is Other/Misc or Questor as then the user enters durability manually.
durStored = durCalc.toString();
vals[ str1 ] = durCalc;
}
if( parseInt( durStored ) > 0 ) { // Skip questor ranks that don't have durability.
resarray.push( ("000" + durStored).slice(-3) + ("000" + sCircle).slice(-3) ); // This gives 0DD0CC Where DD is durability and CC is circle.
res2.push( ("000" + sCircle).slice(-3) + ("000" + durStored).slice(-3)); // This gives 0CC0DD
}
}
resarray.sort(); // Sorted by Durability followed by Circle.
var dur = 0,
cir = 0;
for( i = resarray.length - 1; i > -1; i--) { // Go through backwards so starting at highest durability
var rank = parseInt( resarray[ i ].slice( -3 ));
if( rank > cir ) {
dur += (rank - cir) * parseInt(resarray[ i ].slice(0, 3));
cir = rank;
}
}
res2.sort();
if( res2.length > 0 ) // Now do Durability Rank Adjust for whatever discipline has the highest rank.
dur += getInt( values, "Durability-Rating-Adjust") * parseInt( res2[ res2.length -1 ].slice(4));
// console.log( "Durability: " + dur + " Circle: " + cir);
if( dur != values[ "working-Durability" ])
vals[ "working-Durability" ] = dur;
if( cir != values[ "working-Circle" ])
vals[ "working-Circle" ] = cir;
if( Object.keys(vals).length > 0)
setAttrsLog( vals );
});
});
}; // End upateDurability
// This section has routines that might be called directly by an on change event,
// but could also be called by recalc() as part of an iteration through all their repeating sections.
var repTalentRanks = function fnrepTalentRanks( eventInfo ) {
'use strict';
var strT = fullName( "repeating_talents_T_Effective-Rank", eventInfo );
var strS1 = fullName( "repeating_talents_T_Rank", eventInfo );
var strS2 = fullName( "repeating_talents_T_Rank-Mods", eventInfo );
getAttrs([ strS1, strS2, strT ], function gaRmTalentRank(values) {
'use strict';
logvalues( values);
var val = getInt( values, strS1) + getInt( values, strS2);
if( val != values[ strT ]) {
var vals = {};
vals[ strT ] = val;
setAttrsLog( vals );
}
});
}; // End repTalentRanks
var repMatrixType = function fnrepMatrixType( eventInfo ) {
'use strict';
var strS1 = fullName( "repeating_matrix_SPM_Type", eventInfo );
// var strS2 = fullName( "repeating_matrix_SPM_RowID", eventInfo );
var strT1 = fullName( "repeating_matrix_SPM_DR", eventInfo );
var strT2 = fullName( "repeating_matrix_SPM_mThreads", eventInfo );
getAttrs([ strS1 ], function gaRmTMatrixType(values) {
'use strict';
logvalues( values);
var val = values[ strS1 ];
if( val === undefined )
val = -10;
var vals = {};
vals[ strT1 ] = Math.abs(val);
vals[ strT2 ] = ((val > 0) ? 1 : 0);
setAttrsLog( vals );
});
}; // End repMatrixType
// With a new discipline, we need a new durability
var repDisciplineCode = function fnrepDisciplineCode( eventInfo ) {
'use strict';
var strT = fullName( "repeating_discipline_DSP_Durability", eventInfo ),
strS1 = fullName( "repeating_discipline_DSP_Code", eventInfo ),
nm = fullName( "repeating_discipline_DSP_Name", eventInfo );
getAttrs([ strT, strS1, "Durability-Rating-Adjust" ], function gaRDisciplineCode(values) {
'use strict';
logvalues( values);
var tmp = values[ strS1 ];
var val = parseInt(tmp.slice( tmp.indexOf( ".") +1)) + getInt( values, "Durability-Rating-Adjust" );
var vals = {};
switch( tmp ) {
case "0.0": vals[ nm ] = "None"; break;
case "1.5": vals[ nm ] = "Air Sailor"; break;
case "2.5": vals[ nm ] = "Archer"; break;
case "3.7": vals[ nm ] = "Beastmaster"; break;
case "4.7": vals[ nm ] = "Cavalryman"; break;
case "5.3": vals[ nm ] = "Elementalist"; break;
case "6.3": vals[ nm ] = "Illusionist"; break;
case "7.3": vals[ nm ] = "Nethermancer"; break;
case "8.5": vals[ nm ] = "Scout"; break;
case "9.7": vals[ nm ] = "Sky Raider"; break;
case "10.7": vals[ nm ] = "Swordmaster"; break;
case "11.5": vals[ nm ] = "Thief"; break;
case "12.5": vals[ nm ] = "Troubadour"; break;
case "13.7": vals[ nm ] = "Warrior"; break;
case "14.5": vals[ nm ] = "Weaponsmith"; break;
case "16.3": vals[ nm ] = "Wizard"; break;
case "20.5": vals[ nm ] = "Boatman/Sailor"; break;
case "21.7": vals[ nm ] = "Gauntlet"; break;
case "22.3": vals[ nm ] = "Shaman"; break;
case "0.5": vals[ nm ] = "Other/Misc."; break;
case "81.0": vals[ nm ] = "Path - Journeyman"; break;
case "83.0": vals[ nm ] = "Path - Master"; break;
case "89.0": vals[ nm ] = "Questor"; break;
case "98.5": vals[ nm ] = "Spirit"; break;
case "99.5": vals[ nm ] = "Creature"; break;
default:
log( "Error! ED DisciplineCodeToName found illegal Discipline Code of: " + tmp);
}
if( val != values[ strT ] && values[ strT ] !== "0.5" && values[ strT ] !== "89.0") // Never update for Discipline Other/Misc or Questors. They have user set Durability.
vals[ strT ] = val;
setAttrsLog( vals );
});
}; // End repDisciplineCode
// New spell name, See if brand new record that needs a circle and type.
var repSpellName = function fnrepSpellName( eventInfo ) {
'use strict';
var rowID = _.isString( eventInfo ) ? eventInfo : eventInfo["sourceAttribute"].slice(16, eventInfo["sourceAttribute"].lastIndexOf("_") -3);
var strS1 = fullName( "repeating_spell_SP_Circle", eventInfo );
var strS2 = fullName( "repeating_spell_SP_Discipline", eventInfo );
getAttrs([ strS1, "tab-spells", strS2, "SP-Elementalist", "SP-Illusionist", "SP-Nethermancer", "SP-Shaman", "SP-Wizard", "SP-Power", "edition", "API" ], function gaRsSpellName(values) {
'use strict';
logvalues( values);
var circle = getInt( values, strS1);
var vals = {};
if( getInt( values, "API" ) == 0 ) // If the API is not already doing this correctly, then do what you can (store the lowercased variable)
vals[ fullName( "repeating_spell_SP_RowID", eventInfo) ] = rowID;
if( getInt( values, "edition") == 0 ) { // Due to a bug in Welcome Package, sometimes the api does not run "on add character" and edition ends up being blank. If it is blank, just assign it to 4th edition and hope it is correct. Note that this is also the case if the API is not installed.
values[ "edition" ] = "4";
vals[ "edition" ] = "4";
}
var t = getInt( values, "tab-spells");
if(( circle == 0) && (t != 0)) {
circle = t;
vals[ strS1 ] = circle;
}
if( !(getInt( values, strS2) > 0)) { // If this record still has SP_Discipline of "-".
let d1 = getInt( values, "SP-Elementalist"),
d2 = getInt( values, "SP-Illusionist"),
d3 = getInt( values, "SP-Nethermancer"),
d4 = getInt( values, "SP-Wizard"),
d5 = getInt( values, "SP-Shaman"),
d6 = getInt( values, "SP-Power");
if( (d1 + d2 + d3 + d4 + d5 + d6) == 1) { // If the character only has Talent in one magical art, use that one.
if( d1 == 1)
vals[ strS2 ] = "5.3";
else if( d2 == 1)
vals[ strS2 ] = "6.3";
else if( d3 == 1)
vals[ strS2 ] = "7.3";
else if( d4 == 1)
vals[ strS2 ] = "16.3";
else if( d5 == 1)
vals[ strS2 ] = "22.3";
else if( d6 == 1)
vals[ strS2 ] = "80";
} else if ((d1 + d2 + d3 + d4 + d5) == 0 )
vals[ strS2 ] = "80";
}
if ( circle != 0 )
if ( getEdition( values ) == 4 )
vals[ fullName( "repeating_spell_SP_Numbers", eventInfo ) ] = circle + 4 + " / " + (circle + 9) + " / " + (circle + 10) + " / " + (circle + 15);
else if ( getEdition( values ) == 3 ) // Note: Dispelling, Disbelief, and Sensing Difficulty numbers are real 3rd edition numbers.
// Weaving and Attuning number are just made up as there was no formula I could find, so I just
// slapped some numbers in. When in 3rd edition the field is editable, so user can change to the real numbers.
vals[ fullName( "repeating_spell_SP_Numbers", eventInfo ) ] = ( circle + 4 ) + " / " + (circle + 9)
+ " / " + [ "9", "9", "11", "13", "15", "16", "17", "18", "20", "21", "23", "24", "25", "26", "28", "29"][circle] // Dispel Difficulty
+ " / " + (circle + 5) // Disbelief Difficulty
+ " / " + [ "13", "13", "15", "16", "18", "20", "21", "23", "25", "26", "27", "28", "30", "31", "33", "34"][circle]; // Sensing Difficulty.
if( Object.keys(vals).length > 0)
setAttrsLog( vals );
});
}; // End repSpellName
// If a modification type changes, see if we should hide or reveal the armor type field and the defensive/resistance fields.
// ModType-ArmorType determines if field asking what type of armor resists the damage shows up. 1 if damage modifiers are used.
// ActnEfct determines if defensive/resistance fields are displayed. 1 if Action, -1 if Effect. 0 if no Roll.
var repModType = function fnrepModType( eventInfo ) {
'use strict';
let x = (_.isString( eventInfo ) ? eventInfo : eventInfo[ "sourceAttribute"]).split("_");
x.pop();
x[ x.length - 2 ] = x[ x.length -2 ].toUpperCase();
let pre = x.join("_") + "_";
getAttrs([ pre + "Mod-Type", pre + "ModType-ArmorType", pre + "Target", pre + "RowID" ], function gaRModType(values) {
'use strict';
logvalues( values);
let pre2 = values[ pre + "RowID" ] // This will hopefully give us the REAL RowID, not the uppercased one.
if( pre2 ) {
x[ x.length -2 ] = pre2;
pre2 = x.join("_") + "_"
} else
pre2 = pre;
let mt = values[ pre + "Mod-Type" ];
if ( !mt )
mt = "@{Adjust-All-Tests-Total}";
let dmg = mt.startsWith( "@{Adjust-Damage-Total" ) ? "1" : "0",
vals = {};
if ( dmg === "1" && values[ pre + "Target" ] !== "None" )
vals[ pre2 + "Target" ] = "None";
if( values[ pre + "ModType-ArmorType" ] !== dmg )
vals[ pre2 + "ModType-ArmorType" ] = dmg;
if( values[ pre + "Mod-Type" ] === "@{Adjust-All-Tests-Total}"
|| mt.startsWith( "@{Adjust-Attacks-" )
|| mt.search( /IP/ ) != -1)
vals[ pre2 + "ActnEfct" ] = "1";
else {
vals[ pre2 + "Defensive" ] = "0";
vals[ pre2 + "Resistance" ] = "0";
if( values[ pre + "Mod-Type" ] === "0" || values[ pre + "Mod-Type" ] === "(0)" )
vals[ pre2 + "ActnEfct" ] = "0";
else
vals[ pre2 + "ActnEfct" ] = "-1";
}
if( Object.keys(vals).length > 0)
setAttrsLog( vals );
});
}; // End repDModType
/* // If an NPC or Mook, default is GM only. If PC or Item, default is public.
var updateNPC = function fnUpdateNPC() {
'use strict';
getAttrs([ "NPC", "RollType" ], function gaUpdateNPC(values) {
'use strict';
logvalues( values);
if ( parseInt( values[ "NPC" ] ) > 0 ) // NPC or Mook
var x = "/w gm";
else
var x = " ";
if( values[ "RollType"] != x )
setAttrsLog({ "RollType": x });
});
};
*/
var updateLanguage = function fnUpdateLangauge( code ) {
'use strict';
getSectionIDs("repeating_skilll", function(idArray) {
var toGet = [];
for( let i = 0; i < idArray.length; ++i) {
toGet.push( buildPre( "SKL", idArray[ i ] ) + (code.endsWith( "S" ) ? "Speak" : "ReadWrite" )
+ (code.startsWith( "T" ) ? "-T" : ""));
}
getAttrs( toGet, function gaUpdateLangauge(values) {
'use strict';
logvalues( values);
var cnt = 0, t;
for( let l = 0; l < toGet.length; ++l){
t = parseInt( values[ toGet[ l ]] );
if( t )
cnt += 1;
}
var vals = {};
vals[ "SKL_Total" + code.slice( 0, 1) + ( code.endsWith( "S" ) ? "-Speak" : "-ReadWrite") ] = cnt;
setAttrsLog( vals );
});
});
}; // End updateLanguage()
var updateCreatureFlags = function fnUpdateCreatureFlags() {
'use strict';
getAttrs([ "Creature-ResistPain", "Creature-Fury", "Creature-HardenedArmor", "Creature-GrabAndBite", "Creature-Hamstring", "Creature-Overrun",
"Creature-Pounce", "Creature-SqueezeTheLife", "Creature-Custom1Name", "Creature-Custom2Name", "Creature-Custom3Name",
"Opponent-ClipTheWing", "Opponent-CrackTheShell", "Opponent-Defang", "Opponent-Enrage", "Opponent-Provoke", "Opponent-PryLoose",
"Opponent-Custom1Show", "Opponent-Custom2Show", "Opponent-Custom3Show", "CreatureFlags" ], function gaUpdateCreatureFlags(values) {
'use strict';
logvalues( values);
let flagsCreature = { // Note: If you change this, also change in .js file.
Fury: 0x0001,
ResistPain: 0x0002,
HardenedArmor: 0x0004,
GrabAndBite: 0x0100,
Hamstring: 0x0200,
Overrun: 0x0400,
Pounce: 0x0800,
SqueezeTheLife: 0x1000,
CreatureCustom1: 0x2000,
CreatureCustom2: 0x4000,
CreatureCustom3: 0x8000,
CreatureMask: 0xffff,
ClipTheWing: 0x00100000,
CrackTheShell: 0x00200000,
Defang: 0x00400000,
Enrage: 0x00800000,
Provoke: 0x01000000,
PryLoose: 0x02000000,
OpponentCustom1: 0x04000000,
OpponentCustom2: 0x08000000,
OpponentCustom3: 0x10000000,
OpponentMask: 0x1ff00000 };
let val = 0;
if( values[ "Creature-Fury" ] === "1" ) val += flagsCreature.Fury;
if( values[ "Creature-ResistPain" ] === "1" ) val += flagsCreature.ResistPain;
if( values[ "Creature-HardenedArmor" ] === "1" ) val += flagsCreature.HardenedArmor;
if( values[ "Creature-GrabAndBite" ] === "1" ) val += flagsCreature.GrabAndBite;
if( values[ "Creature-Hamstring" ] === "1" ) val += flagsCreature.Hamstring;
if( values[ "Creature-Overrun" ] === "1" ) val += flagsCreature.Overrun;
if( values[ "Creature-Pounce" ] === "1" ) val += flagsCreature.Pounce;
if( values[ "Creature-SqueezeTheLife" ] === "1" ) val += flagsCreature.SqueezeTheLife;
if( values[ "Creature-Custom1Name" ].length > 2 ) val += flagsCreature.CreatureCustom1;
if( values[ "Creature-Custom2Name" ].length > 2 ) val += flagsCreature.CreatureCustom2;
if( values[ "Creature-Custom3Name" ].length > 2 ) val += flagsCreature.CreatureCustom3;
if( values[ "Opponent-ClipTheWing" ] === "1" ) val += flagsCreature.ClipTheWing;
if( values[ "Opponent-CrackTheShell" ] === "1" ) val += flagsCreature.CrackTheShell;
if( values[ "Opponent-Defang" ] === "1" ) val += flagsCreature.Defang;
if( values[ "Opponent-Enrage" ] === "1" ) val += flagsCreature.Enrage;
if( values[ "Opponent-Provoke" ] === "1" ) val += flagsCreature.Provoke;
if( values[ "Opponent-PryLoose" ] === "1" ) val += flagsCreature.PryLoose;
if( values[ "Opponent-Custom1Show" ] === "1" ) val += flagsCreature.OpponentCustom1;
if( values[ "Opponent-Custom2Show" ] === "1" ) val += flagsCreature.OpponentCustom2;
if( values[ "Opponent-Custom3Show" ] === "1" ) val += flagsCreature.OpponentCustom3;
if( val != values[ "CreatureFlags" ])
setAttrsLog({ "CreatureFlags": val });
});
}; // End updateCreatureFlags()
// When rolling from a sheet, button can use: @{target|Target|token_id}
// When called from a token action: @{selected|token_id}
// is much better. If the target has the first, put the second into another variable.
var updateTarget = function fnupdateTarget( eventInfo ) {
'use strict';
let x = (_.isString( eventInfo ) ? eventInfo : eventInfo[ "sourceAttribute"]).split("_");
x[ x.length -2 ] = x[ x.length -2 ].toUpperCase();
x.pop();
x.splice( 2, 1 ); // eventInfo is vandalized by the system. It has been all lowercased, Easiest to just strip the RowID out and let system figure it out (which it does).
let sa = x.join("_") + "_Target-TA",
val = eventInfo[ "newValue" ],
vals = {};
if( val.slice( 1, 13) == "D1: @{target" )
val += ": @{selected|token_id}";
vals[ sa ] = val;
setAttrsLog( vals );
}; // End updateTarget()
// Given an attribute and a value array as provided by getAttrs(),
// return a string that can be inserted into a command to ask about karma usage.
function Kask (att, values, button) {
let kask = "",
s1 = values[ att + "-Karma-Control" ],
s2 = values[ att + "-DP-Control" ];
if( s1.startsWith( "K-ask:" ))
kask = (button ? s1 : s1.replace("|0}", "&#124;0&#125;")) + "~";
if( s2.startsWith( "DP-ask:" ))
kask += (button ? s1 : s2.replace("|0}", "&#124;0&#125;")) + "~";
return kask;
}
// The discipline of the spell has been set. Set the kask attribute.
var updateSpDisp = function fnupdateSpDisp( eventInfo) {
'use strict';
let att;
switch( eventInfo[ "newValue" ] ) {
case "5.3": att = "SP-Elementalism"; break;
case "6.3": att = "SP-Illusionism"; break;
case "7.3": att = "SP-Nethermancy"; break;
case "16.3": att = "SP-Wizardry"; break;
case "22.3": att = "SP-Shamanism"; break;
default: att = "SP-Power";
}
getAttrs([ att + "-Karma-Control", att + "-DP-Control" ], function gaUpdateSpDisp(values) {
'use strict';
logvalues( values);
setAttrsLog({ "repeating_spell_SP_KaskWeave": Kask( att, values)});
});
}; // End updateSpDisp()
// This is the non-repeating kasks. SP-Spellcating, SP-WilEffect SP-Willforce, etc.
var updateSpKask = function fnupdateSpKask( eventInfo) {
'use strict';
let att = getParam( eventInfo["sourceAttribute"], 2, "-" ),
inArray = [];
att = "SP-" + att.charAt(0).toUpperCase() + att.slice(1);
if( att == "SP-Spellcasting" ) {
inArray.push( "SP-Spellcasting-Karma-Control" );
inArray.push( "SP-Spellcasting-DP-Control" );
} else {
att = "SP-WilEffect";
inArray.push( "SP-WilEffect-Karma-Control" );
inArray.push( "SP-WilEffect-DP-Control" );
inArray.push( "SP-Willforce-Karma-Control" );
inArray.push( "SP-Willforce-DP-Control" );
inArray.push( "SP-Willforce-Use" );
}
getAttrs( inArray, function gaUpdateSpKask(values) {
'use strict';
logvalues( values);
let vals = {};
if(att == "SP-Spellcasting")
vals[ att + "-Kask" ] = Kask( att, values);
else
vals[ att + "-Kask-DropDown" ] = Kask( "SP-WilEffect", values )
+ (( values[ "SP-Willforce-Use" ] == "1") ? Kask( "SP-Willforce", values) : "");
vals[ att + "-Kask-Button" ] = Kask( "SP-WilEffect", values, true )
+ (( values[ "SP-Willforce-Use" ] == "1") ? Kask( "SP-Willforce", values, true) : "");
setAttrsLog( vals );
});
}; // End updateSpKask()
// this routine is for thread weaving talents, that probably have spells pointing to them.
var updateWeaveKask = function fnupdateWeaveKask( eventInfo) {
'use strict';
let att = getParam( eventInfo["sourceAttribute"], 2, "-" );
att = "SP-" + att.charAt(0).toUpperCase() + att.slice(1);
getSectionIDs("spell", function(spa) {
'use strict';
getSectionIDs("matrix", function(maa) {
'use strict';
var inArray = [];
inArray.push( att + "-Karma-Control" );
inArray.push( att + "-DP-Control" );
for(let i=0; i < spa.length; i++)
inArray.push( buildPre( "SP", spa[ i ]) + "Discipline" );
for(let j=0; j < maa.length; j++)
inArray.push( buildPre( "SPM", maa[ j ]) + "spRowID" );
getAttrs( inArray, function gaUpdateWeaveKask(values) {
'use strict';
logvalues( values);
let kask = Kask( att, values),
vals = {};
vals[ att + "-Kask" ] = kask;
function decode( code ) {
switch( code ) {
case "5.3": return "SP-Elementalism";
case "6.3": return "SP-Illusionism";
case "7.3": return "SP-Nethermancy";
case "16.3": return "SP-Wizardry";
case "22.3": return "SP-Shamanism";
default: return "SP-Power";
} }
// Set all the spells and matrix's that use this weaving talent to ask about karma (or not).
for(let i=0; i < spa.length; i++)
if( att == decode( values[buildPre( "SP", spa[ i ]) + "Discipline"] ))
vals[ buildPre( "SP", spa[ i ]) + "KaskWeave" ] = kask;
for(let j=0; j < maa.length; j++) // use spRowID to find spell Discipline (which we already have anyway)
if( att == decode( values[buildPre( "SP", values[ buildPre( "SPM", maa[ j ]) + "spRowID" ].toLowerCase() ) + "Discipline"] ))
vals[ buildPre( "SPM", maa[ j ]) + "KaskWeave" ] = kask;
setAttrsLog( vals );
});
});
});
}; // End updateWeaveKask()
// Given an attribute name and value, look at the value and see if it is problematic (has double brackets, quotes, etc) and if so remove the problematic characters.
var sanitize = function fnsanitize( name, value) {
'use strict';
let newVal = value.replace( /['|"]/gi, "") // Remove all single and double quotes
.replace( /\@\{/gi, "{") // and all @ signs followed by {
.replace( /\[+/gi, "[" ).replace( /\]+/gi, "]" ).replace( /\{+/gi, "{" ).replace( /\}+/gi, "}" ).replace( /\(+/gi, "(" ).replace( /\)+/gi, ")" ); // All sequances of more than one [] {} () get replaced by a single one.
if ( value !== newVal ) {
let vals = {};
vals[ name ] = newVal;
setAttrsLog( vals );
}
}; // End sanitize()
// Often Sanitize is called by other routines which are doing other work on that attribute anyway. This routine if for those values that have no other work to be done. It just calls sanitize.
var preSanitize = function fnPreSanitize( eventInfo ) {
'use strict';
let isStr = _.isString( eventInfo ),
att, newAtt;
if( isStr )
att = eventInfo;
else {
if( eventInfo[ "sourceType" ] !== "player" )
return;
att = eventInfo["sourceAttribute"];
}
// Clumsily deal the the name vandalism.
if( att.startsWith( "repeating_" ))
{
let ar = att.split( "_" );
let pre = buildPre( ar[ ar.length - 2 ] );
if( att.search( /_name$/gi ) !== -1)
newAtt = pre + "Name";
else if( att.search( /successtext/gi ) !== -1)
newAtt = pre + "SuccessText";
else if( att.search( /basetalent/gi ) !== -1)
newAtt = pre + "BaseTalent";
else if( att.search( /restrictuions/gi ) !== -1)
newAtt = pre + "Restrictions";
else if( att.search( /range/gi ) !== -1)
newAtt = pre + "Range";
else if( att.search( /date/gi ) !== -1)
newAtt = pre + "Date";
else if( att.search( /aoe/gi ) !== -1)
newAtt = pre + "AoE";
} else {
newAtt = att.replace( /misc-poolname/gi, "Misc-PoolName" );
newAtt = att.replace( /armor-name/gi, "Armor-Name" );
newAtt = att.replace( /armor-date/gi, "Armor-Date" );
newAtt = att.replace( /shield-name/gi, "Shield-Name" );
newAtt = att.replace( /shield-date/gi, "Shield-Date" );
newAtt = att.replace( /wealth_other/gi, "Wealth_Other" );
if( att.indexOf( "creature-custom" ) !== -1 || att.indexOf( "opponent-custom" ) !== -1 )
newAtt = att.replace( /creature-custom/gi, "Creature-Custom" ).replace( /opponent-custom/gi, "Opponent-Custom" ).replace( /name$/gi, "Name" ).replace( /desc$/gi, "Desc" );
}
if( !isStr && "newValue" in eventInfo)
sanitize( newAtt, eventInfo[ "newValue"] );
else
getAttrs([ newAtt ], function gaPreSanitize(values) {
'use strict';
sanitize( newAtt, values[ newAtt ] );
});
}; // End preSanitize()
//
// Note: eventInfo's are of the form: {sourceAttribute: "wt-test1", sourceType: "player", triggerName: "wt-test1", previousValue: "3", newValue: "2"}
// or: {sourceAttribute: "repeating_spell_-lzpelordkrsvt5earlu_sp_discipline", sourceType: "player", triggerName: "repeating_spell_-lzpelordkrsvt5earlu_sp_discipline", previousValue: "6.3", newValue: "22.3"}
on("change:player-name change:character_name change:misc-poolname-1 change:misc-poolname-2 change:misc-poolname-3 change:armor-name change:shield-name change:record-date-real change:record-date-throalic change:record-reason change:wealth_other change:creature-custom1name change:creature-custom1desc change:opponent-custom1name change:opponent-custom1desc change:creature-custom2name change:creature-custom2desc change:opponent-custom2name change:opponent-custom2desc change:creature-custom3name change:creature-custom3desc change:opponent-custom3name change:opponent-custom3desc change:repeating_talents:t_name change:repeating_talents:t_successtext change:repeating_knacks:nac_name change:repeating_knacks:nac_successtext change:repeating_kancks:nac_basetalent change:repeating_knacks:nac_restrictions change:repeating_skills:sk_name change:repeating_skills:sk_successtext change:repeating_skillk:skk_name change:repeating_skilla:ska_name change:repeating_skilll:skl_name change:repeating_spell:sp_name change:repeating_spell:sp_successtext change:repeating_spell:sp_range change:repeating_spell:sp_aoe change:repeating_matrix:spm_successtext change:repeating_weapons:wpn_name change:repeating_weapons:wpn_range change:repeating_weapons:wpn_date change:repeating_mount:mnt_name change:repeating_threads:ti_name", fn( preSanitize ));
on("change:sp-elementalism-karma-control change:sp-elementalism-dp-control change:sp-illusionism-karma-control change:sp-illusionism-dp-control change:sp-nethermancy-karma-control change:sp-nethermancy-dp-control change:sp-shamanism-karma-control change:sp-shamanism-dp-control change:sp-wizardry-karma-control change:sp-wizardry-dp-control change:sp-power-karma-control change:sp-power-dp-control", fn( updateWeaveKask ));
on("change:sp-spellcasting-karma-control change:sp-spellcasting-dp-control change:sp-wileffect-karma-control change:sp-wileffect-dp-control change:sp-willforce-karma-control change:sp-willforce-dp-control change:sp-willforce-use", fn( updateSpKask ));
on("change:repeating_spell:sp_discipline", fn( updateSpDisp));
on("change:repeating_talents:t_target change:repeating_knacks:nac_target change:repeating_skills:sk_target", fn( updateTarget ));
on("change:creature-resistpain change:creature-fury change:creature-hardenedarmor change:creature-grabandbite change:creature-hamstring change:creature-overrun change:creature-pounce change:creature-squeezethelife change:creature-custom1name change:creature-custom2name change:creature-custom3name change:opponent-clipthewing change:opponent-cracktheshell change:opponent-defang change:opponent-enrage change:opponent-provoke change:opponent-pryloose change:opponent-custom1show change:opponent-custom2show change:opponent-custom3show", fn(updateCreatureFlags));
on("change:dex-mods change:str-mods change:tou-mods change:per-mods change:wil-mods change:cha-mods change:dex-adjust change:str-adjust change:tou-adjust change:per-adjust change:wil-adjust change:cha-adjust", fn(updateAttribFinal));
on("change:wounds", fn(updateAdjustEffectTests));
on("change:wounds change:adjust-effect-tests-misc change:creature-fury change:creature-resistpain", fn(updateAdjustEffectTests));
on("change:repeating_skilll:skl_speak", fn(_.bind(updateLanguage, {}, "SS")));
on("change:repeating_skilll:skl_readwrite", fn(_.bind(updateLanguage, {}, "SR")));
on("change:repeating_skilll:skl_speak-t", fn(_.bind(updateLanguage, {}, "TS")));
on("change:repeating_skilll:skl_readwrite-t", fn(_.bind(updateLanguage, {}, "TR")));
on("change:repeating_talents:t_mod-type change:repeating_knacks:nac_mod-type change:repeating_skills:sk_mod-type", fn(repModType) );
on("change:repeating_discipline change:durability-rating-adjust", fn(upateDurability) );
on("change:repeating_spell:sp_name change:repeating_spell:sp_circle", fn(repSpellName ) );
on("change:repeating_discipline:dsp_code", fn(repDisciplineCode) );
on("change:repeating_matrix:spm_type change:repeating_matrix:spm_rank", fn(repMatrixType) );
on("change:repeating_talents:t_rank change:repeating_talents:t_rank-mods", fn(repTalentRanks) );
// on("change:npc", fn(updateNPC) );
on("change:combatoption-splitmovement", fn(CoSplitMovement) );
on("change:dex-effect change:ip change:misc-initiative-adjust change:misc-initiative-buff change:creature-ambush change:creature-ambushing", fn(updateInitiative) );
on("change:wil-effect change:sp-willforce-effective-rank change:sp-willforce-mods change:sp-willforce-use", fn(updateWillforce) );
on("change:sp-spellcasting-rank change:sp-spellcasting-rank-mods change:sp-patterncraft-rank change:sp-patterncraft-rank-mods change:sp-elementalism-rank change:sp-elementalism-rank-mods change:sp-illusionism-rank change:sp-illusionism-rank-mods change:sp-nethermancy-rank change:sp-nethermancy-rank-mods change:sp-shamanism-rank change:sp-shamanism-rank-mods change:sp-wizardry-rank change:sp-wizardry-rank-mods change:sp-power-rank change:sp-power-rank-mods change:sp-willforce-rank change:sp-willforce-rank-mods", fn(updateSPEffectiveRank) );
on("change:sp-spellcasting-effective-rank change:sp-spellcasting-mods change:sp-patterncraft-effective-rank change:sp-patterncraft-mods change:sp-elementalism-effective-rank change:sp-elementalism-mods change:sp-illusionism-effective-rank change:sp-illusionism-mods change:sp-nethermancy-effective-rank change:sp-nethermancy-mods change:sp-shamanism-effective-rank change:sp-shamanism-mods change:sp-wizardry-effective-rank change:sp-wizardry-mods change:sp-power-effective-rank change:sp-power-mods", fn(updateSPStep) );
on("change:repeating_matrix:spm_rank change:repeating_matrix:spm_origin change:repeating_talents:t_rank change:repeating_talents:t_type", fn(updateTalentSummary) );
on("change:tou change:recovery-adjust change:recovery-buff", fn(updateRecovery) );
on("change:misc-carry-adjust", fn(updateCarry) );
on("change:condition-health", fn(ConditionHealth) );
on("change:adjust-tn-misc change:combatoption-reserved", fn(updateAdjustTN) );
on("change:adjust-defenses-misc change:condition-cover change:condition-surprised", fn(updateAdjustDefenses) );
on("change:adjust-attacks-misc change:combatoption-calledshot", fn(updateAdjustAttacks) );
on("change:adjust-damage-misc", fn(updateAdjustDamage) );
on("change:will-eff-mods change:sp-willforce-step change:will-eff-all-mods", fn(updateWillEffect) );
on("change:weight-equipment change:weight-gear change:weight-coin", fn(updateCarried) );
on("change:armor-weight change:shield-weight change:weight-mod change:repeating_weapons:wpn_weight", fn(updateWeightEquipment) );
on("change:armor-ip change:shield-ip change:misc-ip-buff change:misc-ip-adjust change:condition-noshield", fn(updateIP) );
on("change:wealth_gold change:wealth_silver change:wealth_copper", fn(updateWeightCoin) );
on("change:healing_booster change:healing_healing change:healing_last_chance change:healing_closure change:healing_kit change:healing_physician_kit change:gear_rations_trail change:gear_rations_mine", fn(updateWeightSupply) );
on("change:movement-race change:misc-movement-adjust change:movement-buff", fn(updateMovement) );
on("change:working-durability change:damage-unconscious-adjust change:damage-death-rating-adjust change:damage-blood-magic change:wound-threshold-adjust change:wound-threshold-buff change:health-buff change:recovery-tests-misc-adjust", fn(updateHealth) );
on("change:attr-costs change:karma-modifier change:misc-karma-max-adjust change:working-circle", fn(updateKarma) );
on("change:lp-total", fn(updateLpStatus) );
on("change:md-nat change:defense-myst-adjust change:md-buff change:shield-myst change:md-shieldbuff change:condition-noshield", fn(updateMD) );
on("change:pd-nat change:defense-phys-adjust change:pd-buff change:shield-phys change:pd-shieldbuff change:condition-noshield", fn(updatePD) );
on("change:armor-myst change:ma-buff change:armor-myst-adjust change:ma-nat change:shield-myst", fn(updateMysticArmor) );
on("change:pd-base change:md-base change:sd-base change:defense-phys-nat-adjust change:defense-myst-nat-adjust change:defense-soc-nat-adjust change:ma-base change:armor-phys-nat-adjust change:armor-myst-nat-adjust", fn(updateDefenseNatural) );
on("change:armor-phys change:pa-buff change:armor-phys-adjust change:shield-phys change:pa-nat", fn(updatePhysicalArmor) );
on("change:sd-nat change:defense-soc-adjust change:sd-buff", fn(updateSD) );
on("change:race", fn(updateRace) );
on("change:attrib-dex-orig change:attrib-dex-race change:attrib-dex-increases change:dex-adjust-attr", fn(_.bind(updateAttribCurr, {}, "Dex")));
on("change:attrib-str-orig change:attrib-str-race change:attrib-str-increases change:str-adjust-attr", fn(_.bind(updateAttribCurr, {}, "Str")));
on("change:attrib-tou-orig change:attrib-tou-race change:attrib-tou-increases change:tou-adjust-attr", fn(_.bind(updateAttribCurr, {}, "Tou")));
on("change:attrib-per-orig change:attrib-per-race change:attrib-per-increases change:per-adjust-attr", fn(_.bind(updateAttribCurr, {}, "Per")));
on("change:attrib-wil-orig change:attrib-wil-race change:attrib-wil-increases change:wil-adjust-attr", fn(_.bind(updateAttribCurr, {}, "Wil")));
on("change:attrib-cha-orig change:attrib-cha-race change:attrib-cha-increases change:cha-adjust-attr", fn(_.bind(updateAttribCurr, {}, "Cha")));
// This sets the unc rating (minus stun damage taken) into Damage_max, where token bars use it.
on("change:damage-stun change:damage-unc-rating", fn(function ocDamageStun( eventInfo ) {
'use strict';
getAttrs([ "Damage-Unc-Rating", "Damage-Stun" ], function gaDamageStun(values) {
'use strict';
logvalues( values);
var vals = {};
vals[ "Damage_max" ] = getInt( values, "Damage-Unc-Rating" ) - getInt( values, "Damage-Stun" );
setAttrsLog( vals );
});
}));
on("change:condition-impairedmovement", fn(function ocImpairedmovement() {
'use strict';
updateMovement();
}));
on("change:attrib-dex-curr", fn(function ocDexCurr() {
'use strict';
updateAttribStep("Dex");
updateDefensebase( "Dex", "PD");
}));
on("change:attrib-str-curr", fn(function ocStrCurr() {
'use strict';
updateAttribStep("Str");
updateCarry();
}));
on("change:attrib-tou-curr", fn(function ocTouCurr() {
'use strict';
updateAttribStep("Tou");
updateHealth();
}));
on("change:attrib-per-curr", fn(function ocPerCurr() {
'use strict';
updateAttribStep("Per");
updateDefensebase( "Per", "MD");
}));
on("change:attrib-wil-curr", fn(function ocWilCurr() {
'use strict';
updateAttribStep("Wil");
updateMaBase();
}));
on("change:attrib-cha-curr", fn(function ocCharCurr() {
'use strict';
updateAttribStep("Cha");
updateDefensebase( "Cha", "SD");
}));
on("change:dex-step", fn(function ocDexStep() {
'use strict';
updateAttribFinal( "Dex" );
backfillOrigAttrib( "Dex" );
}));
on("change:str-step", fn(function ocStrStep() {
'use strict';
updateAttribFinal( "Str" );
backfillOrigAttrib( "Str" );
}));
on("change:tou-step", fn(function ocTouStep() {
'use strict';
updateAttribFinal( "Tou" );
updateHealth();
backfillOrigAttrib( "Tou" )
}));
on("change:per-step", fn(function ocPerStep() {
'use strict';
updateAttribFinal( "Per" );
backfillOrigAttrib( "Per" );
}));
on("change:wil-step", fn(function ocWilStep() {
'use strict';
updateAttribFinal( "Wil" );
backfillOrigAttrib( "Wil" );
}));
on("change:cha-step", fn(function ocChaStep() {
'use strict';
updateAttribFinal( "Cha" );
backfillOrigAttrib( "Cha" );
}));
on("change:per", fn(function ocPer() {
'use strict';
updateSPStep("Spellcasting");
updateSPStep("Patterncraft");
updateSPStep("Elementalism");
updateSPStep("Illusionism");
updateSPStep("Nethermancy");
updateSPStep("Shamanism");
updateSPStep("Wizardry");
updateSPStep("Power");
}));
on("change:adjust-all-tests-total", fn(function ocAdjustAllTestsTotal() {
'use strict';
updateAttribFinal( "Dex" );
updateAttribFinal( "Str" );
updateAttribFinal( "Tou" );
updateAttribFinal( "Per" );
updateAttribFinal( "Wil" );
updateAttribFinal( "Cha" );
}));
on("change:combatoption-defensivestance", fn(function ocCoDefensiveStance() {
'use strict';
getAttrs([ "combatOption-AggressiveAttack", "combatOption-DefensiveStance" ], function gaDefensiveStance(values) {
'use strict';
logvalues( values);
if ( values[ "combatOption-AggressiveAttack" ] == "1" && values[ "combatOption-DefensiveStance" ] == "1")
setAttrsLog({ "combatOption-AggressiveAttack": "0" });
updateAdjustActionTests();
updateAdjustDefenses();
updateAdjustAttacks();
updateAdjustDamage();
});
}));
on("change:condition-blindsided", fn(function ocCoBlindsided() {
'use strict';
updateAdjustDefenses();
updatePhysicalArmor();
updateMysticArmor()
}));
on("change:combatoption-aggressiveattack", fn(function ocCoAggressiveAttack() {
'use strict';
getAttrs([ "combatOption-AggressiveAttack", "combatOption-DefensiveStance" ], function gaAggressiveAttack(values) {
'use strict';
logvalues( values);
if ( values[ "combatOption-AggressiveAttack" ] == "1" && values[ "combatOption-DefensiveStance" ] == "1")
setAttrsLog({ "combatOption-DefensiveStance": "0" });
updateAdjustDefenses();
updateAdjustAttacks();
updateAdjustDamage();
});
}));
on("change:condition-harried change:condition-knockeddown", fn(function ocConHarried() {
'use strict';
updateAdjustActionTests();
updateAdjustDefenses();
updateAdjustAttacks();
updateMovement();
}));
on("change:condition-darkness", fn(function ocConDarkness() {
'use strict';
updateSPStep("Spellcasting");
updateSPStep("Patterncraft");
}));
on("change:adjust-all-tests-misc change:adjust-effect-tests-total change:combatoption-tailattack", fn(function ocConAdjustAllTestsMisc() {
'use strict';
updateAttribFinal( "Dex" );
updateAttribFinal( "Str" );
updateAttribFinal( "Tou" );
updateAttribFinal( "Per" );
updateAttribFinal( "Wil" );
updateAttribFinal( "Cha" );
updateAdjustActionTests();
updateAdjustAttacks();
updateAdjustDamage();
updateRecovery();
}));
on("change:condition-rangelong change:creature-ambush change:creature-ambushing change:creature-divecharge change:creature-divingcharging", fn(function ocCondRangelong() {
'use strict';
updateAdjustAttacks();
updateAdjustDamage();
}));
on("change:adjust-defenses-total", fn(function ocAdjustDefensesTotal() {
'use strict';
updateDefenseNatural( "PD" );
updateDefenseNatural( "MD" );
}));
var recalc = function fnrecalc(){ // Recalculate all calculated fields.
'use strict';
getAttrs([ "wt-test1", "wt-test2" ], function(values) { // This is just an event to let the user know that recalculatin has started.
'use strict';
let v = {},
x = parseInt( values[ "wt-test1" ]) + 7;
v[ "wt-test2" ] = x;
setAttrsLog( v );
});
updateRace();
updateAttribCurr( "Dex" );
updateAttribCurr( "Str" );
updateAttribCurr( "Tou" );
updateAttribCurr( "Per" );
updateAttribCurr( "Wil" );
updateAttribCurr( "Cha" );
updateAttribStep( "Dex" );
updateAttribStep( "Str" );
updateAttribStep( "Tou" );
updateAttribStep( "Per" );
updateAttribStep( "Wil" );
updateAttribStep( "Cha" );
updateAttribFinal( "Dex" );
updateAttribFinal( "Str" );
updateAttribFinal( "Tou" );
updateAttribFinal( "Per" );
updateAttribFinal( "Wil" );
updateAttribFinal( "Cha" );
upateDurability();
updateAttribCosts();
updateCarry();
updateHealth();
updateInitiative();
updateIP();
updateKarma();
updateLpStatus();
updateMaBase();
updateMD();
updateMysticArmor();
updateMovement();
updateDefensebase( "Dex", "PD");
updateDefensebase( "Per", "MD");
updateDefensebase( "Cha", "SD");
updatePD();
updatePhysicalArmor();
updateRecovery();
updateSD();
updateWillEffect();
updateAdjustEffectTests();
updateAdjustActionTests();
updateAdjustTN();
updateAdjustDefenses();
updateAdjustAttacks();
updateAdjustDamage();
updateWeightCoin();
updateWeightEquipment();
updateWeightSupply();
updateCarried();
ConditionHealth();
updateDefenseNatural( "PD" );
updateDefenseNatural( "MD" );
updateDefenseNatural( "SD" );
updateDefenseNatural( "PA" );
updateDefenseNatural( "MA" );
updateCreatureFlags();
var i;
getSectionIDs("repeating_discipline", function gsIdRepeatingDiscipline(tarray) {
for( i = 0; i < tarray.length; i++)
repDisciplineCode( tarray[ i ]);
});
getSectionIDs("repeating_spell", function gsIdRepeatingSpellName(tarray) {
for( i = 0; i < tarray.length; i++)
repSpellName( tarray[ i ]);
});
getSectionIDs("repeating_matrix", function gsIdRepeatingMatrix(tarray) {
for( i = 0; i < tarray.length; i++)
repMatrixType( tarray[ i ]);
});
getSectionIDs("repeating_talents", function gsIdRepeatingTalents(tarray) {
for( i = 0; i < tarray.length; i++) {
repTalentRanks( tarray[ i ]);
repModType( fullName( "repeating_talents_T_", tarray[ i ]));
}
});
getSectionIDs("repeating_knacks", function gsIdRepeatingKnacks(tarray) {
for( i = 0; i < tarray.length; i++)
repModType( fullName( "repeating_knacks_nac_", tarray[ i ]));
});
getSectionIDs("repeating_skills", function gsIdRepeatingSkills(tarray) {
for( i = 0; i < tarray.length; i++)
repModType( fullName( "repeating_skills_SK_", tarray[ i ]));
});
updateTalentSummary();
getAttrs([ "wt-test1", "wt-test2" ], function(values) { // This is just an event to let the user know that recalculation has finished.
'use strict';
var x = parseInt( values[ "wt-test1" ]) + 1;
setAttrsLog({ "wt-test2": x });
});
} // recalc
on("change:specialfunction", fn(function ocSpecialFunction() {
'use strict';
getAttrs(["SpecialFunction" ], function gaSpecialFunction(values) {
'use strict';
logvalues( values);
if( values[ "SpecialFunction" ].trim().endsWith( "Recalc" ))
recalc(); // If SpecialFunction has been set to Recalc - Recalculate all calculated fields.
else if (values[ "SpecialFunction" ].trim().endsWith( "SheetWorkerTest")) {
log( "SpecialFunction SheetWorkerTest");
} // End SheetWrokerTest code
});
})); // End onSpecialFunct
// If this is a brand new character sheet (as tested by no languages existing)
// then create standard skills.
var checkIfNewCharacter = function fncheckIfNewCharacter() {
'use strict';
function generateRowIdNoUnderscore() {
return generateRowID().replace(/_/g, "-")
}
getSectionIDs("repeating_skilll", function(idArray) {
if( idArray.length === 0 ) {
var newRow = {};
let newId = generateRowIdNoUnderscore();
let newInfo = buildPre( "DSP", newId );
newRow[newInfo + "Code"] = "0.0";
newRow[newInfo + "Name"] = "None";
newRow[newInfo + "Durability" ] = "0";
newRow[newInfo + "Circle"] = 1;
newId = generateRowIdNoUnderscore();
newInfo = buildPre( "SKL", newId );
newRow[newInfo + "Name"] = "Dwarf: (Throalic)";
newRow[newInfo + "RowID"] = newId;
newRow[newInfo + "Speak"] = "1";
newRow[newInfo + "ReadWrite"] = "1";
newId = generateRowIdNoUnderscore();
newInfo = buildPre( "SKL", newId );
newRow[newInfo + "RowID"] = newId;
newRow[newInfo + "Speak"] = "1";
// PCs need these, but creatures don't. Lets not create them for now and see if they are better with or without.
// newId = generateRowIdNoUnderscore();
// newInfo = buildPre( "SKA", newId );
// newRow[newInfo + "RowID"] = newId;
// newRow[newInfo + "Rank"] = "1";
// newId = generateRowIdNoUnderscore();
// newInfo = buildPre( "SKK", newId );
// newRow[newInfo + "RowID"] = newId;
// newRow[newInfo + "Rank"] = "1";
// newId = generateRowIdNoUnderscore();
// newInfo = buildPre( "SKK", newId );
// newRow[newInfo + "RowID"] = newId;
// newRow[newInfo + "Rank"] = "1";
setAttrsLog(newRow, undefined,function fnAfterNewCharacter(tarray) {
updateLanguage("SS");
updateLanguage("SR");
});
}
});
}; // End checkIfNewCharacter()
// Update character sheet from a previous version to the current version.
// showNotes -1: new sheet so show welcome message, 0: Nothing, 1: show latest version notes.
var updateCharactersheet = function fnUpdateCharactersheet( newSheetVersion, fromSheetVersion, origSheetVersion, recurse, values, showNotes, notes ) {
'use strict';
let toSheetVersion = 1.002;
if( isNaN( fromSheetVersion) || fromSheetVersion < toSheetVersion ) {
var vals = [];
var newNotes = "Earthdawn by FASA Character Sheet version: " + toSheetVersion + " by Chris Dickey.\n\n"
// Note: Put update stuff here.
// + "\n\n"
// End of release specific stuff.
+ notes;
// Comment this line out if not to change tab to force release notes visible.
// showNotes = (showNotes === -1) ? -1 : 1;
if( vals.length > 0 ) // If the code above just changed some values, do those before making the recursive call.
setAttrsLog( vals, undefined , function fnUpdateCharactersheetSetAttrsLog( vals ) {
'use strict';
updateCharactersheet( newSheetVersion, toSheetVersion, origSheetVersion, recurse + 1, values, showNotes, newNotes); // Recursively call this routine to do any subsequent updates.
});
else
updateCharactersheet( newSheetVersion, toSheetVersion, origSheetVersion, recurse + 1, values, showNotes, newNotes); // Recursively call this routine to do any subsequent updates.
} // End ver 1.002
/*
*/
else if( recurse > 0) {
var vals = [];
vals[ "edition_max" ] = newSheetVersion.toString();
vals[ "APIflag" ] = "SheetUpdate," + origSheetVersion.toString() + "," + newSheetVersion.toString() + ", ED";
if( showNotes === -1 )
vals[ "Release-notes" ] = "Earthdawn by FASA Character Sheet version: " + newSheetVersion + " by Chris Dickey.\n\n"
+ "Welcome to the Earthdawn character sheet.\n"
+ "The button that says 'Help Wiki' at the very top right of the sheet will open a help file. "
+ "Alternatively the url is 'https://wiki.roll20.net/Earthdawn_-_FASA_Official'. Read it.\n\n"
+ "After you start your character sheet (Name and whether it is a PC or NPC, "
+ "go to the Core tab and spend your Attribute Points by modifying the AP column), be sure to provide an Avatar picture and link it. "
+ "See the help file for more details. \n\n";
else
vals[ "Release-notes" ] = notes;
if( showNotes ) {
vals[ "show-release-notes" ] = "1";
vals[ "tab" ] = "10";
}
setAttrsLog( vals );
recalc(); // If we actually updated something, recalculate every field.
}
}; // End updatecharactersheet()
// When a sheet is first opened, see if it needs to be updated from a previous version.
on('sheet:opened',function fnOnSheetOpened(){
'use strict';
checkIfNewCharacter(); // When sheet is first opened, see if this is a brand new character that needs some defaults set.
// edition_max is character sheet version
getAttrs(["edition_max" ], function gaSheetOpened(values) {
'use strict';
logvalues( values);
var newSheetVersion = 1.002; // This is hard-coded and changed with every revision of the sheet that needs to call this routine. Also updated twice above and in .js file.
var oldSheetVersion = parseFloat( values[ "edition_max" ] );
if( oldSheetVersion != newSheetVersion ) {
updateCharactersheet( newSheetVersion, oldSheetVersion, oldSheetVersion, 0, values, (oldSheetVersion == 0.0 || isNaN( oldSheetVersion)) ? -1: 0, "" );
} // End there are updates to perform
});
});
</script>