Files
roll20-character-sheets-tester/13th Age Official/13th_Age_Official.html
T
NathaTerrien 02756619db 13th Age Official alyout fix
CSS fix following Roll20 update.
2018-07-22 20:54:48 +02:00

2213 lines
140 KiB
HTML

<div class="container">
<input class="options-check" type="checkbox" name="attr_options-check" checked="checked" data-i18n-title="show-hide-options" title="Show/hide options" /><span></span>
<div class="options">
<span class="row" style="font-size: 20px; margin-bottom: 10px;">
Options
</span>
<div>
<div style="width: 250px; margin-bottom: 4px;display: inline-block;">
<span class="row nowrap">
<span class="lib" data-i18n="base-ac-from-class">Base AC from class</span><input type="number" name="attr_AC-base" value="10" title="@{AC-base}" />
</span>
<span class="row nowrap">
<span class="lib" data-i18n="base-pd-from-class">Base PD from class</span><input type="number" name="attr_PD-base" value="10" title="@{PD-base}" />
</span>
<span class="row nowrap">
<span class="lib" data-i18n="base-md-from-class">Base MD from class</span><input type="number" name="attr_MD-base" value="10" title="@{MC-base}" />
</span>
</div>
<div style="width: 450px; display: inline-block; vertical-align: top;color: #666;">
<span class="row" data-i18n="help-options">These are base numbers necessary for the automatic calculations below to work. After you've input these numbers you're encouraged to click on the gear icon in the upper right hand corner to hide this section.</span>
</div>
</div>
<div>
<div style="width: 250px; margin-bottom: 4px;display: inline-block;">
<span class="row nowrap">
<span class="lib" data-i18n="base-hp-from-class">Base HP from class</span><input type="number" name="attr_HP-base" value="7" title="@{HP-base}" />
</span>
<span class="row nowrap">
<span class="lib" data-i18n="melee-basic-attack-based-on">Melee Basic Attack Based On</span>
<select name="attr_M-BAMOD">
<option value="@{STR-mod}" data-i18n="str-u" selected="selected">STR</option>
<option value="@{DEX-mod}" data-i18n="dex-u">DEX</option>
</select>
</span>
<span class="row nowrap">
<span class="lib" data-i18n="ranged-basic-attack-based-on">Ranged Basic Attack Based On</span>
<select name="attr_R-BAMOD">
<option value="@{STR-mod}" data-i18n="str-u">STR</option>
<option value="@{DEX-mod}" data-i18n="dex-u" selected="selected">DEX</option>
</select>
</span>
</div>
<div style="width: 250px; display: inline-block; vertical-align: top;">
<span class="row nowrap">
<span class="lib" data-i18n="flat-hp-mod-from-magic-items">Flat HP Mod from Magic Items</span><input type="number" name="attr_HP-mod" value="0" title="@{HP-mod}" />
</span>
<span class="row nowrap">
<span class="lib" data-i18n="damage-on-melee-miss">Damage on Melee Miss</span>
<select name="attr_M-MISS">
<option value="0">-</option>
<option value="@{level}" selected="selected" data-i18n="level">Level</option>
</select>
</span>
<span class="row nowrap">
<span class="lib" data-i18n="damage-on-ranged-miss">Damage on Ranged Miss</span>
<select name="attr_R-MISS">
<option value="0" selected="selected">-</option>
<option value="@{level}" data-i18n="level">Level</option>
</select>
</span>
</div>
<div style="display: inline-block; vertical-align: top;">
<span class="row nowrap">
<span class="lib" data-i18n="flat-recovery-mod">Flat Recovery Mod</span><input type="number" name="attr_REC-mod" value="0" title="@{REC-mod}" />
</span>
<span class="row nowrap">
<span class="lib" data-i18n="flat-initiative-mod">Flat Initiative Mod</span><input type="number" name="attr_INIT-mod" value="0" title="@{INIT-mod}" />
</span>
</div>
</div>
</div>
<div class="header">
<div class="meta">
<div class="metacontainer">
<div class="label"><span data-i18n="name">Name</span></div>
<input type="text" spellcheck="false" name="attr_character_name" title="@{character_name}" />
</div>
<div class="metacontainer">
<div class="label"><span data-i18n="race">Race</span></div>
<input type="text" spellcheck="false" name="attr_race" title="@{race}" />
</div>
<div class="metacontainer">
<div class="label"><span data-i18n="class">Class</span></div>
<input type="text" spellcheck="false" name="attr_class" title="@{class}" />
</div>
<div class="metacontainer">
<div class="label"><span data-i18n="level">Level</span></div>
<input type="number" name="attr_level" value="1" title="@{level}" />
</div>
</div>
<div class="attributes">
<div class="attrcontainer">
<input class="attrbase" type="text" spellcheck="false" name="attr_STR-base" value="10" title="@{STR-base}" />
<button class="attrlabel" type="roll" name="roll_STR" value="&{template:attr} {{attr=^{strength}}} {{attr_abr=^{str-u}}} {{attr_bonus=[[@{STR-mod}[STR]]]}} {{level=@{level}}} {{mod=[[?{Modifiers|0}[MOD]+@{E-DIE}]]}} {{result=[[1d20 + @{STR-mod}[STR] + @{level}[LVL] + ?{Modifiers|0}[MOD] + @{BACK-final}"><span data-i18n="str-u">STR</span></button>
<span class="attrmod" name="attr_STR-mod" title="@{STR-mod}"></span>
</div>
<div class="attrcontainer">
<input class="attrbase" type="text" spellcheck="false" name="attr_CON-base" value="10" title="@{CON-base}" />
<button class="attrlabel" type="roll" name="roll_CON" value="&{template:attr} {{attr=^{constitution}}} {{attr_abr=^{con-u}}} {{attr_bonus=[[@{CON-mod}[CON]]]}} {{level=@{level}}} {{mod=[[?{Modifiers|0}[MOD]+@{E-DIE}]]}} {{result=[[1d20 + @{CON-mod}[CON] + @{level}[LVL] + ?{Modifiers|0}[MOD] + @{BACK-final}"><span data-i18n="con-u">CON</span></button>
<span class="attrmod" name="attr_CON-mod" title="@{CON-mod}"></span>
</div>
<div class="attrcontainer" style="position: absolute;">
<input class="attrbase" type="text" spellcheck="false" name="attr_DEX-base" value="10" title="@{DEX-base}" />
<button class="attrlabel" type="roll" name="roll_DEX" value="&{template:attr} {{attr=^{dexterity}}} {{attr_abr=^{dex-u}}} {{attr_bonus=[[@{DEX-mod}[DEX]]]}} {{level=@{level}}} {{mod=[[?{Modifiers|0}[MOD]+@{E-DIE}]]}} {{result=[[1d20 + @{DEX-mod}[DEX] + @{level}[LVL] + ?{Modifiers|0}[MOD] + @{BACK-final}"><span data-i18n="dex-u">DEX</span></button>
<span class="attrmod" name="attr_DEX-mod" title="@{DEX-mod}"></span>
<button class="init" style="display: block;" type="roll" name="roll_INIT" value="&{template:init} {{name=@{selected|token_name}}} {{dex_bonus=[[@{DEX-mod}[DEX]]]}} {{level=@{level}}} {{mod=[[@{INIT-mod}+?{Modifiers|0}]]}} {{result=[[1d20 + @{DEX-mod}[DEX] + @{level}[LVL] + @{INIT-mod} + ?{Modifiers|0}[MOD] &{tracker}]]}}"><span data-i18n="initiative-u">INITIATIVE</span></button>
<button class="init" type="roll" name="roll_SAVE" value="&{template:save} {{mod=[[?{Modifiers|0}]]}} {{result=[[1d20+?{Modifiers|0}]]}}"><span data-i18n="save-u">SAVE</span></button>
</div>
</div>
<div class="attributes">
<div class="attrcontainer">
<input class="attrbase" type="text" spellcheck="false" name="attr_INT-base" value="10" title="@{INT-base}" />
<button class="attrlabel" type="roll" name="roll_INT" value="&{template:attr} {{attr=^{intelligence}}} {{attr_abr=^{int-u}}} {{attr_bonus=[[@{INT-mod}[INT]]]}} {{level=@{level}}} {{mod=[[?{Modifiers|0}[MOD]+@{E-DIE}]]}} {{result=[[1d20 + @{INT-mod}[INT] + @{level}[LVL] + ?{Modifiers|0}[MOD] + @{BACK-final}"><span data-i18n="int-u">INT</span></button>
<span class="attrmod" name="attr_INT-mod" title="@{INT-mod}"></span>
</div>
<div class="attrcontainer">
<input class="attrbase" type="text" spellcheck="false" name="attr_WIS-base" value="10" title="@{WIS-base}" />
<button class="attrlabel" type="roll" name="roll_WIS" value="&{template:attr} {{attr=^{wisdom}}} {{attr_abr=^{wis-u}}} {{attr_bonus=[[@{WIS-mod}[WIS]]]}} {{level=@{level}}} {{mod=[[?{Modifiers|0}[MOD]+@{E-DIE}]]}} {{result=[[1d20 + @{WIS-mod}[WIS] + @{level}[LVL] + ?{Modifiers|0}[MOD] + @{BACK-final}"><span data-i18n="wis-u">WIS</span></button>
<span class="attrmod" name="attr_WIS-mod" title="@{WIS-mod}"></span>
</div>
<div class="attrcontainer" style="position: relative;">
<input class="attrbase" type="text" spellcheck="false" name="attr_CHA-base" value="10" title="@{CHA-base}" />
<button class="attrlabel" type="roll" name="roll_CHA" value="&{template:attr} {{attr=^{charisma}}} {{attr_abr=^{cha-u}}} {{attr_bonus=[[@{CHA-mod}[CHA]]]}} {{level=@{level}}} {{mod=[[?{Modifiers|0}[MOD]+@{E-DIE}]]}} {{result=[[1d20 + @{CHA-mod}[CHA] + @{level}[LVL] + ?{Modifiers|0}[MOD] + @{BACK-final}"><span data-i18n="cha-u">CHA</span></button>
<span class="attrmod" name="attr_CHA-mod" title="@{CHA-mod}"></span>
<div class="deathsavecontainer">
<button class="init" type="roll" name="roll_DEATHSAVE" value="&{template:deathsave} {{mod=[[?{Modifiers|0}]]}} {{result=[[1d20+?{Modifiers|0}]]}}"><span data-i18n="death-save-u">DEATH SAVE</span></button>
<input class="pseudocheck" type="checkbox" name="attr_DEATHSAVE1" /><span class="mleft"></span>
<input class="pseudocheck" type="checkbox" name="attr_DEATHSAVE2" /><span class="mleft"></span>
<input class="pseudocheck" type="checkbox" name="attr_DEATHSAVE3" /><span class="mleft"></span>
<input class="pseudocheck" type="checkbox" name="attr_DEATHSAVE4" /><span class="mleft"></span>
</div>
</div>
</div>
<div class="derived">
<div class="dercontainer">
<span class="derlabel" data-i18n="ac-u">AC</span>
<span class="derbubble" name="attr_AC" title="@{AC}"></span>
</div>
<div class="dercontainer">
<span class="derlabel" data-i18n="pd-u">PD</span>
<span class="derbubble" name="attr_PD" title="@{PD}"></span>
</div>
<div class="dercontainer">
<span class="derlabel" data-i18n="md-u">MD</span>
<span class="derbubble" name="attr_MD" title="@{MD}"></span>
</div>
</div>
<div class="derived">
<div class="dercontainer" style="background-color: #014A89;">
<span class="derlabel hp" data-i18n="max-hp">Max HP</span>
<span class="derived" style="background-color: white;" name="attr_HP_max" title="@{HP_max}"></span>
<span class="derlabel hp stag" data-i18n="staggered">Staggered</span>
<span class="derived" style="background-color: white;" name="attr_HP-staggered" title="@{HP-staggered}"></span>
</div>
<div class="dercontainer">
<div class="hpbox">
<div class="left subbox">
<input type="text" spellcheck="false" name="attr_HP" title="@{HP}" />
<span data-i18n="current-hp">Current HP</span>
</div>
<div class="right subbox">
<input type="text" spellcheck="false" name="attr_HP-temp" title="@{HP-temp}" />
<span data-i18n="temp-hp">Temp HP</span>
</div>
</div>
</div>
<div class="dercontainer" style="margin-top:-5px;">
<button class="derlabel recovery" type="roll" name="roll_recovery" value="&{template:rec} {{name=@{character_name}}} {{rec_die=@{REC-die}}} {{rec_bonus=[[@{REC-bonus}]]}} {{level=@{level}}} {{mod=[[?{Modifiers|0}]]}} {{result=[[@{level}d@{REC-die}+@{REC-bonus}[REC]+?{Modifiers|0}[MOD]]]}}"><span data-i18n="recovery">Recovery</span></button>
<select class="recovery" type="text" spellcheck="false" name="attr_REC-die" title="@{REC-die}">
<option value="4">d4</option>
<option value="6">d6</option>
<option value="8" selected="selected">d8</option>
<option value="10">d10</option>
<option value="12">d12</option>
</select>
<span class="derlabel" style="width: 10px; padding-right:0; margin-left:-5px; border-left:0px; border-right:0px;">+</span>
<span class="derived recovery" name="attr_REC-bonus" style="width:22px;" title="@{REC-bonus}"></span>
<span class="derlabel" style="width: 7px; margin-left: -9px;" data-i18n="max">Max</span>
<input class="recovery recmax" type="text" spellcheck="false" style="border-left:0px; width:31px;" name="attr_REC_max" value="8" title="@{REC_max}" />
<span class="recoverycontainer">
<input class="recflag" name="attr_rec_flag" type="hidden" value="8" />
<input type="radio" class="sheet-normal 0" name="attr_REC" value="0" /><span></span>
<input type="radio" class="sheet-normal 1" name="attr_REC" value="1" /><span></span>
<input type="radio" class="sheet-normal 2" name="attr_REC" value="2" /><span></span>
<input type="radio" class="sheet-normal 3" name="attr_REC" value="3" /><span></span>
<input type="radio" class="sheet-normal 4" name="attr_REC" value="4" /><span></span>
<input type="radio" class="sheet-normal 5" name="attr_REC" value="5" /><span></span>
<input type="radio" class="sheet-normal 6" name="attr_REC" value="6" /><span></span>
<input type="radio" class="sheet-normal 7" name="attr_REC" value="7" /><span></span>
<input type="radio" class="sheet-normal 8" name="attr_REC" value="8" checked="checked" /><span></span>
<input type="radio" class="sheet-normal 9" name="attr_REC" value="9" /><span></span>
<input type="radio" class="sheet-normal 10" name="attr_REC" value="10" /><span></span>
</span>
</div>
</div>
</div>
<div class="body">
<div class="col column1">
<div class="bodycontainer">
<div class="logo"></div>
</div>
<div class="bodycontainer">
<div class="header"><span data-i18n="one-unique-thing">One Unique Thing</span></div>
<textarea name="attr_OUT"></textarea>
</div>
<div class="bodycontainer" style="margin-bottom: 10px;">
<div class="header">
<button class="attrlabel" type="roll" name="roll_icon" value="&{template:icon} {{icon1=[[1d6cf5]]}} {{icon2=[[1d6cf5]]}} {{icon3=[[1d6cf5]]}} {{icon4=[[1d6cf5]]}} {{charname=@{character_name}}} @{icon-final}"><span data-i18n="icon-relationships">Icon Relationships</span></button>
</div>
<div class="iconrelationship">
<input type="radio" class="iconrelationship blueradio" name="attr_icon-final" value="{{name=@{icon-name1}}} {{relationship=^{@{icon-type1}}}} {{iconlvl=[[@{icon1}]]}} {{iconrow=1}}" checked="checked" /><span></span>
<input type="text" spellcheck="false" class="title" name="attr_icon-name1" data-i18n-placeholder="orc-lord" placeholder="Orc Lord" title="@{icon-name1}" />
<input type="text" spellcheck="false" class="iconrelationship short" name="attr_icon1" placeholder="1" title="@{icon1}" />
<div class="subicon">
<select class="iconrelationship" name="attr_icon-type1" title="@{icon-type1}">
<option value="Positive" data-i18n="Positive">Positive</option>
<option value="Conflicted" data-i18n="Conflicted">Conflicted</option>
<option value="Negative" data-i18n="Negative">Negative</option>
</select>
<input type="text" spellcheck="false" class="iconrelationship symbolcount" name="attr_icon1-5-count" title="@{icon1-5-count}" />
<input type="checkbox" name="attr_icon1-5" /><span class="pictos">e</span>
<input type="checkbox" name="attr_icon1-6" /><span class="pictos">k</span>
<input type="text" spellcheck="false" class="iconrelationship symbolcount" name="attr_icon1-6-count" title="@{icon1-6-count}" />
</div>
</div>
<div class="iconrelationship">
<input type="radio" class="iconrelationship blueradio" name="attr_icon-final" value="{{name=@{icon-name2}}} {{relationship=^{@{icon-type2}}}} {{iconlvl=[[@{icon2}]]}} {{iconrow=2}}" /><span></span>
<input type="text" spellcheck="false" class="title" name="attr_icon-name2" title="@{icon-name2}" />
<input type="text" spellcheck="false" class="iconrelationship short" name="attr_icon2" title="@{icon2}" />
<div class="subicon">
<select class="iconrelationship" name="attr_icon-type2" title="@{icon-type2}">
<option value="Positive" data-i18n="Positive">Positive</option>
<option value="Conflicted" data-i18n="Conflicted">Conflicted</option>
<option value="Negative" data-i18n="Negative">Negative</option>
</select>
<input type="text" spellcheck="false" class="iconrelationship symbolcount" name="attr_icon2-5-count" title="@{icon2-5-count}" />
<input type="checkbox" name="attr_icon2-5" /><span class="pictos">e</span>
<input type="checkbox" name="attr_icon2-6" /><span class="pictos">k</span>
<input type="text" spellcheck="false" class="iconrelationship symbolcount" name="attr_icon2-6-count" title="@{icon2-6-count}" />
</div>
</div>
<div class="iconrelationship">
<input type="radio" class="iconrelationship blueradio" name="attr_icon-final" value="{{name=@{icon-name3}}} {{relationship=^{@{icon-type3}}}} {{iconlvl=[[@{icon3}]]}} {{iconrow=3}}" /><span></span>
<input type="text" spellcheck="false" class="title" name="attr_icon-name3" title="@{icon-name3}" />
<input type="text" spellcheck="false" class="iconrelationship short" name="attr_icon3" title="@{icon3}" />
<div class="subicon">
<select class="iconrelationship" name="attr_icon-type3" title="@{icon-type3}">
<option value="Positive" data-i18n="Positive">Positive</option>
<option value="Conflicted" data-i18n="Conflicted">Conflicted</option>
<option value="Negative" data-i18n="Negative">Negative</option>
</select>
<input type="text" spellcheck="false" class="iconrelationship symbolcount" name="attr_icon3-5-count" title="@{icon3-5-count}" />
<input type="checkbox" name="attr_icon3-5" /><span class="pictos">e</span>
<input type="checkbox" name="attr_icon3-6" /><span class="pictos">k</span>
<input type="text" spellcheck="false" class="iconrelationship symbolcount" name="attr_icon3-6-count" title="@{icon3-6-count}" />
</div>
</div>
<div class="iconrelationship">
<input type="radio" class="iconrelationship blueradio" name="attr_icon-final" value="{{name=@{icon-name4}}} {{relationship=^{@{icon-type4}}}} {{iconlvl=[[@{icon4}]]}} {{iconrow=4}}" /><span></span>
<input type="text" spellcheck="false" class="title" name="attr_icon-name4" title="@{icon-name4}" />
<input type="text" spellcheck="false" class="iconrelationship short" name="attr_icon4" title="@{icon4}" />
<div class="subicon">
<select class="iconrelationship" name="attr_icon-type4" title="@{icon-type4}">
<option value="Positive" data-i18n="Positive">Positive</option>
<option value="Conflicted" data-i18n="Conflicted">Conflicted</option>
<option value="Negative" data-i18n="Negative">Negative</option>
</select>
<input type="text" spellcheck="false" class="iconrelationship symbolcount" name="attr_icon4-5-count" title="@{icon4-5-count}" />
<input type="checkbox" name="attr_icon4-5" /><span class="pictos">e</span>
<input type="checkbox" name="attr_icon4-6" /><span class="pictos">k</span>
<input type="text" spellcheck="false" class="iconrelationship symbolcount" name="attr_icon4-6-count" title="@{icon4-6-count}" />
</div>
</div>
<div class="iconrelationship">
<input type="radio" class="iconrelationship blueradio" name="attr_icon-final" value="{{name=@{icon-name5}}} {{relationship=^{@{icon-type5}}}} {{iconlvl=[[@{icon5}]]}} {{iconrow=5}}" /><span></span>
<input type="text" spellcheck="false" class="title" name="attr_icon-name5" title="@{icon-name5}" />
<input type="text" spellcheck="false" class="iconrelationship short" name="attr_icon5" title="@{icon5}" />
<div class="subicon">
<select class="iconrelationship" name="attr_icon-type5" title="@{icon-type5}">
<option value="Positive" data-i18n="Positive">Positive</option>
<option value="Conflicted" data-i18n="Conflicted">Conflicted</option>
<option value="Negative" data-i18n="Negative">Negative</option>
</select>
<input type="text" spellcheck="false" class="iconrelationship symbolcount" name="attr_icon5-5-count" title="@{icon5-5-count}" />
<input type="checkbox" name="attr_icon5-5" /><span class="pictos">e</span>
<input type="checkbox" name="attr_icon5-6" /><span class="pictos">k</span>
<input type="text" spellcheck="false" class="iconrelationship symbolcount" name="attr_icon5-6-count" title="@{icon5-6-count}" />
</div>
</div>
</div>
<div class="bodycontainer">
<div class="header"><span data-i18n="equipment">Equipment</span></div>
<textarea name="attr_EQUIP" style="height:205px;"></textarea>
</div>
</div>
<div class="col column2">
<div class="bodycontainer">
<div class="header"><span data-i18n="backgrounds">Backgrounds</span></div>
<div class="background">
<input type="radio" class="background blueradio" name="attr_BACK-sel" value="1" checked="checked" /><span></span>
<input type="text" spellcheck="false" class="title" name="attr_BACK-name1" data-i18n-placeholder="assassin" placeholder="Assassin" title="@{BACK-name1}" />
<input type="text" spellcheck="false" class="background" name="attr_BACK1" placeholder="2" title="@{BACK1}" />
</div>
<div class="background">
<input type="radio" class="background blueradio" name="attr_BACK-sel" value="2" /><span></span>
<input type="text" spellcheck="false" class="title" name="attr_BACK-name2" title="@{BACK-name2}" />
<input type="text" spellcheck="false" class="background" name="attr_BACK2" title="@{BACK2}" />
</div>
<div class="background">
<input type="radio" class="background blueradio" name="attr_BACK-sel" value="3" /><span></span>
<input type="text" spellcheck="false" class="title" name="attr_BACK-name3" title="@{BACK-name3}" />
<input type="text" spellcheck="false" class="background" name="attr_BACK3" title="@{BACK3}" />
</div>
<div class="background">
<input type="radio" class="background blueradio" name="attr_BACK-sel" value="4" /><span></span>
<input type="text" spellcheck="false" class="title" name="attr_BACK-name4" title="@{BACK-name4}" />
<input type="text" spellcheck="false" class="background" name="attr_BACK4" title="@{BACK4}" />
</div>
<div class="background">
<input type="radio" class="background blueradio" name="attr_BACK-sel" value="5" /><span></span>
<input type="text" spellcheck="false" class="title" name="attr_BACK-name5" title="@{BACK-name5}" />
<input type="text" spellcheck="false" class="background" name="attr_BACK5" title="@{BACK5}" />
</div>
<div class="background">
<input type="radio" class="background blueradio" name="attr_BACK-sel" value="6" /><span></span>
<input type="text" spellcheck="false" class="title" name="attr_BACK-name6" title="@{BACK-name6}" />
<input type="text" spellcheck="false" class="background" name="attr_BACK6" title="@{BACK6}" />
</div>
<div class="background">
<input type="radio" class="background blueradio" name="attr_BACK-sel" value="7" /><span></span>
<input type="text" spellcheck="false" class="title" name="attr_BACK-name7" title="@{BACK-name7}" />
<input type="text" spellcheck="false" class="background" name="attr_BACK7" title="@{BACK7}" />
</div>
<div class="background">
<input type="radio" class="background blueradio" name="attr_BACK-sel" value="8" /><span></span>
<input type="text" spellcheck="false" class="title" name="attr_BACK-name8" title="@{BACK-name8}" />
<input type="text" spellcheck="false" class="background" name="attr_BACK8" title="@{BACK8}" />
</div>
<div class="background">
<input type="radio" class="background blueradio" name="attr_BACK-sel" value="9" /><span></span>
<input type="text" spellcheck="false" class="title" name="attr_BACK-name9" title="@{BACK-name9}" />
<input type="text" spellcheck="false" class="background" name="attr_BACK9" title="@{BACK9}" />
</div>
<div class="background">
<input type="radio" class="background blueradio" name="attr_BACK-sel" value="10" /><span></span>
<input type="text" spellcheck="false" class="title" name="attr_BACK-name10" title="@{BACK-name10}" />
<input type="text" spellcheck="false" class="background" name="attr_BACK10" title="@{BACK10}" />
</div>
</div>
<div class="bodycontainer">
<div class="header"><span data-i18n="melee-weapons">Melee Weapons</span></div>
<div class="weapon">
<input type="radio" class="weapon blueradio" name="attr_MWEAP-sel" value="1" checked="checked" /><span></span>
<input type="text" spellcheck="false" class="title" name="attr_MWEAP-name1" data-i18n-placeholder="rapier" placeholder="Rapier" title="@{MWEAP-name1}" />
<input type="text" spellcheck="false" class="weapon" name="attr_MWEAP-mod1" value="0" title="@{MWEAP-mod1}" />
<select class="weapon" name="attr_MWEAP1" title="@{MWEAP1}">
<option value="0"></option>
<option value="4">d4</option>
<option value="6">d6</option>
<option value="8">d8</option>
<option value="10">d10</option>
<option value="12">d12</option>
</select>
</div>
<div class="weapon">
<input type="radio" class="weapon blueradio" name="attr_MWEAP-sel" value="2" /><span></span>
<input type="text" spellcheck="false" class="title" name="attr_MWEAP-name2" title="@{MWEAP-name2}" />
<input type="text" spellcheck="false" class="weapon" name="attr_MWEAP-mod2" value="0" title="@{MWEAP-mod2}" />
<select class="weapon" name="attr_MWEAP2" title="@{MWEAP2}">
<option value="0"></option>
<option value="4">d4</option>
<option value="6">d6</option>
<option value="8">d8</option>
<option value="10">d10</option>
<option value="12">d12</option>
</select>
</div>
<div class="weapon">
<input type="radio" class="weapon blueradio" name="attr_MWEAP-sel" value="3" /><span></span>
<input type="text" spellcheck="false" class="title" name="attr_MWEAP-name3" title="@{MWEAP-name3}" />
<input type="text" spellcheck="false" class="weapon" name="attr_MWEAP-mod3" value="0" title="@{MWEAP-mod3}" />
<select class="weapon" name="attr_MWEAP3" title="@{MWEAP3}">
<option value="0"></option>
<option value="4">d4</option>
<option value="6">d6</option>
<option value="8">d8</option>
<option value="10">d10</option>
<option value="12">d12</option>
</select>
</div>
</div>
<div class="bodycontainer">
<div class="header"><span data-i18n="ranged-weapons">Ranged Weapons</span></div>
<div class="weapon">
<input type="radio" class="weapon blueradio" name="attr_RWEAP-sel" value="1" checked="checked" /><span></span>
<input type="text" spellcheck="false" class="title" name="attr_RWEAP-name1" title="@{RWEAP-name1}" />
<input type="text" spellcheck="false" class="weapon" name="attr_RWEAP-mod1" value="0" title="@{RWEAP-mod1}" />
<select class="weapon" name="attr_RWEAP1" title="@{RWEAP1}">
<option value="0"></option>
<option value="4">d4</option>
<option value="6">d6</option>
<option value="8">d8</option>
<option value="10">d10</option>
<option value="12">d12</option>
</select>
</div>
<div class="weapon">
<input type="radio" class="weapon blueradio" name="attr_RWEAP-sel" value="2"><span></span>
<input type="text" spellcheck="false" class="title" name="attr_RWEAP-name2" title="@{RWEAP-name2}" />
<input type="text" spellcheck="false" class="weapon" name="attr_RWEAP-mod2" value="0" title="@{RWEAP-mod2}" />
<select class="weapon" name="attr_RWEAP2" title="@{RWEAP2}">
<option value="0"></option>
<option value="4">d4</option>
<option value="6">d6</option>
<option value="8">d8</option>
<option value="10">d10</option>
<option value="12">d12</option>
</select>
</div>
<div class="weapon">
<input type="radio" class="weapon blueradio" name="attr_RWEAP-sel" value="3" /><span></span>
<input type="text" spellcheck="false" class="title" name="attr_RWEAP-name3" title="@{RWEAP-name3}" />
<input type="text" spellcheck="false" class="weapon" name="attr_RWEAP-mod3" value="0" title="@{RWEAP-mod3}" />
<select class="weapon" name="attr_RWEAP3" title="@{RWEAP3}">
<option value=""></option>
<option value="4">d4</option>
<option value="6">d6</option>
<option value="8">d8</option>
<option value="10">d10</option>
<option value="12">d12</option>
</select>
</div>
</div>
<div class="bodycontainer">
<div class="header"><span data-i18n="talents-and-features">Talents & Features</span></div>
<textarea name="attr_TAL-FEA" style="height:345px;"></textarea>
</div>
</div>
<div class="col column3">
<div class="power">
<div class="header atwill">
<button class="powerlabel" type="roll" name="roll_MBA" value="&{template:ba} {{range=^{nearby}}} {{miss=@{MBA-miss}}} @{MWEAP-final}"><span data-i18n="melee-basic-attack">Melee Basic Attack</span></button>
<span class="right">
<span data-i18n="at-will">At-Will</span>
</span>
</div>
<div class="body">
<span class="row">
<span class="left bold" data-i18n="standard-action">Standard Action</span>
<span class="right bold" data-i18n="nearby">Nearby</span>
</span>
<span class="row">
<span class="left"><b><span data-i18n="target">Target</span>:</b> <span data-i18n="one-creature">One creature</span></span>
<span class="right ba-attack">
<b><span data-i18n="attack">Attack</span>:</b>
<span class="stat" name="attr_MBA-attackvs" title="@{MBA-attackvs}"></span>
</span>
</span>
<span class="row">
<span class="left ba-hit">
<b><span data-i18n="hit">Hit</span>:</b>
<span class="stat" name="attr_MBA-hit" title="@{MBA-hit}"></span>
</span>
<span class="right">
<b><span data-i18n="miss">Miss</span>:</b>
<span class="stat" name="attr_MBA-miss" title="@{MBA-miss}"></span>
</span>
</span>
</div>
</div>
<div class="power">
<div class="header atwill">
<button class="powerlabel" type="roll" name="roll_RBA" value="&{template:ba} {{range=^{one-enemy}}} {{miss=@{RBA-miss}}} @{RWEAP-final}"><span data-i18n="ranged-basic-attack">Ranged Basic Attack</span></button>
<span class="right">
<span data-i18n="at-will">At-Will</span>
</span>
</div>
<div class="body">
<span class="row">
<span class="left bold" data-i18n="standard-action">Standard Action</span>
<span class="right bold" data-i18n="one-enemy">One enemy</span>
</span>
<span class="row">
<span class="left"><b><span data-i18n="target">Target</span>:</b> <span data-i18n="one-creature">One creature</span></span>
<span class="right ba-attack">
<b><span data-i18n="attack">Attack</span>:</b>
<span class="stat" name="attr_RBA-attackvs" title="@{RBA-attackvs}"></span>
</span>
</span>
<span class="row">
<span class="left ba-hit">
<b><span data-i18n="hit">Hit</span>:</b>
<span class="stat" name="attr_RBA-hit" title="@{RBA-hit}"></span>
</span>
<span class="right">
<b><span data-i18n="miss">Miss</span>:</b>
<span class="stat" name="attr_RBA-miss" title="@{RBA-miss}"></span>
</span>
</span>
</div>
</div>
<fieldset class="repeating_power">
<div class="power">
<!-- OPTIONS -->
<input class="poweroptions-check" type="checkbox" name="attr_poweroptions-check" checked="checked" /><span></span>
<div class="poption topspacer" class="bold" data-i18n="options">Options</div>
<div class="poption"><span class="bold" data-i18n="name">Name</span>:</div>
<input class="poption title" type="text" spellcheck="false" name="attr_name" />
<div class="poption spacer"></div>
<div class="poption">
<span class="bold" data-i18n="type">Type</span>:
<span class="nowrap"><input class="bluelib At-Will" type="radio" name="attr_type" value="atwill" checked="checked" /><span data-i18n="at-will">At-Will</span></span>
<span class="nowrap"><input class="bluelib Class" type="radio" name="attr_type" value="class" /><span data-i18n="class">Class</span></span>
<span class="nowrap"><input class="bluelib Racial" type="radio" name="attr_type" value="racial" /><span data-i18n="racial">Racial</span></span>
<span class="nowrap"><input class="bluelib Encounter" type="radio" name="attr_type" value="encounter" /><span data-i18n="encounter">Encounter</span></span>
<span class="nowrap"><input class="bluelib Recharge" type="radio" name="attr_type" value="recharge" /><span data-i18n="recharge">Recharge</span></span>
<span class="nowrap"><input class="bluelib Daily" type="radio" name="attr_type" value="daily" /><span data-i18n="daily">Daily</span></span>
<span class="nowrap"><input class="bluelib Spell" type="radio" name="attr_type" value="spell" /><span data-i18n="spell">Spell</span></span>
<span class="nowrap"><input class="bluelib Magic-Item" type="radio" name="attr_type" value="magicitem" /><span data-i18n="magic-item">Magic Item</span></span>
<span class="nowrap"><input class="bluelib Custom" type="radio" name="attr_type" value="custom" /><span data-i18n="custom">Custom</span></span>
<input class="title full" type="text" spellcheck="false" name="attr_type-custom" data-i18n-placeholder="custom" placeholder="Custom" />
<input class="invisible Class" type="checkbox" name="attr_type" value="class" />
<div class="suboption classtype">
<span class="spacer"></span>
<span class="nowrap"><input class="bluelib" type="radio" name="attr_classtype" value="Talent" checked="checked" /><span data-i18n="talent">Talent</span></span>
<span class="nowrap"><input class="bluelib" type="radio" name="attr_classtype" value="Feature" /><span data-i18n="feature">Feature</span></span>
<span class="nowrap"><input class="bluelib" type="radio" name="attr_classtype" value="Power" /><span data-i18n="power">Power</span></span>
<span class="nowrap"><input class="bluelib" type="radio" name="attr_classtype" value="Battle Cry" /><span data-i18n="battle-cry">Battle Cry</span></span>
<span class="nowrap"><input class="bluelib" type="radio" name="attr_classtype" value="Domain" /><span data-i18n="domain">Domain</span></span>
</div>
<input class="invisible Recharge" type="checkbox" name="attr_type" value="recharge" />
<div class="suboption rechargerate">
<span data-i18n="recharge-rate">Recharge Rate</span><input class="num" type="text" spellcheck="false" name="attr_rechargerate" />
</div>
</div>
<div class="poption spacer"></div>
<input class="poption Uses pseudocheck" type="checkbox" name="attr_uses" value="@{uses-type}" /><span class="poption mleft"></span><span class="poption"><span class="bold" data-i18n="uses">Uses</span>:</span>
<input class="suboption usesoptions 1" type="radio" name="attr_uses-type" value="1" /><span class="suboption usesoptions">1</span>
<input class="suboption usesoptions 2" type="radio" name="attr_uses-type" value="2" /><span class="suboption usesoptions">2</span>
<input class="suboption usesoptions 3" type="radio" name="attr_uses-type" value="3" /><span class="suboption usesoptions">3</span>
<input class="suboption usesoptions 4" type="radio" name="attr_uses-type" value="4" /><span class="suboption usesoptions">4</span>
<span class="poption spacer"></span>
<input class="poption Action pseudocheck" type="checkbox" name="attr_action" value="1" /><span class="poption mleft"></span><span class="poption"><span class="bold" data-i18n="action">Action</span>:</span>
<select class="suboption actionoptions" name="attr_action-type">
<option value="Standard Action" data-i18n="standard-action">Standard Action</option>
<option value="Move Action" data-i18n="move-action">Move Action</option>
<option value="Quick Action" data-i18n="quick-action">Quick Action</option>
<option value="Free Action" data-i18n="free-action">Free Action</option>
<option value="Flexible Action" data-i18n="flexible-action">Flexible Action</option>
<option value="Custom" data-i18n="custom">Custom</option>
</select>
<input class="suboption actionoptions title" type="text" spellcheck="false" name="attr_action-custom" style="width:55px;" data-i18n-placeholder="custom" placeholder="Custom" />
<span class="poption spacer"></span>
<input class="poption Range pseudocheck" type="checkbox" name="attr_range" value="1" /><span class="poption mleft"></span><span class="poption"><span class="bold" data-i18n="range">Range</span>:</span>
<select class="suboption rangeoptions" name="attr_range-type">
<option value="Engaged" data-i18n="engaged">Engaged</option>
<option value="Nearby" data-i18n="nearby">Nearby</option>
<option value="Far Away" data-i18n="far-away">Far Away</option>
<option value="Intercepting" data-i18n="intercepting">Intercepting</option>
<option value="Line of Sight" data-i18n="line-of-sight">Line of Sight</option>
<option value="Custom" data-i18n="custom">Custom</option>
</select>
<input class="suboption rangeoptions title" type="text" spellcheck="false" name="attr_range-custom" style="width:55px;" data-i18n-placeholder="custom" placeholder="Custom" />
<span class="poption spacer"></span>
<input class="poption Target pseudocheck" type="checkbox" name="attr_target" value="1" /><span class="poption mleft"></span><span class="poption"><span class="bold" data-i18n="target">Target</span>:</span>
<input class="suboption targetoptions title" type="text" spellcheck="false" name="attr_target-type" style="width:160px;" />
<span class="poption spacer"></span>
<input class="poption Attack pseudocheck" type="checkbox" name="attr_attack" value="1" /><span class="poption mleft"></span><span class="poption"><span class="bold" data-i18n="attack">Attack</span>:</span>
<select class="suboption attackoptions" name="attr_attack-type">
<option value="STR" data-i18n="melee-str">Melee(STR)</option>
<option value="DEX" data-i18n="ranged-dex">Ranged(DEX)</option>
<option value="INT" data-i18n="intelligence-based">Intelligence based</option>
<option value="CHA" data-i18n="charisma-based">Charisma based</option>
<option value="WIS" data-i18n="wisdom-based">Wisdom based</option>
<option value="CON" data-i18n="constitution-based">Constitution based</option>
<option value="MWEAP1" data-i18n="melee-weapon-1">Melee Weapon 1</option>
<option value="MWEAP2" data-i18n="melee-weapon-2">Melee Weapon 2</option>
<option value="MWEAP3" data-i18n="melee-weapon-3">Melee Weapon 3</option>
<option value="RWEAP1" data-i18n="ranged-weapon-1">Ranged Weapon 1</option>
<option value="RWEAP2" data-i18n="ranged-weapon-2">Ranged Weapon 2</option>
<option value="RWEAP3" data-i18n="ranged-weapon-3">Ranged Weapon 3</option>
<option value="CUSTOM" data-i18n="custom">Custom</option>
</select>
<input class="suboption attackoptions title" type="text" spellcheck="false" name="attr_attack-custom" style="width:55px;" placeholder="3" />
<span class="spacer suboption attackoptions" style="height: 1px;"></span>
<span class="suboption attackoptions" style="margin-left: 20px;"><span data-i18n="vs-u">VS</span>:</span>
<select class="suboption attackoptions" name="attr_attack-vstype">
<option value="AC" data-i18n="ac-u">AC</option>
<option value="PD" data-i18n="pd-u">PD</option>
<option value="MD" data-i18n="md-u">MD</option>
<option value="CUSTOM" data-i18n="custom">Custom</option>
</select>
<input class="suboption attackoptions title" type="text" spellcheck="false" name="attr_attack-vscustom" style="width:55px;" data-i18n-placeholder="custom" placeholder="Custom" />
<span class="poption spacer"></span>
<input class="poption Cust1 pseudocheck" type="checkbox" name="attr_cust1" value="1" /><span class="poption mleft"></span><span class="poption bold" data-i18n="custom-1">Custom 1</span>
<span class="spacer cust1options"></span>
<div class="suboption cust1options">
<span class="nowrap"><input class="bluelib cust1-hit" type="radio" name="attr_cust1-type" value="Hit" /><span data-i18n="hit">Hit</span></span>
<span class="nowrap"><input class="bluelib cust1-miss" type="radio" name="attr_cust1-type" value="Miss" /><span data-i18n="miss">Miss</span></span>
<span class="nowrap"><input class="bluelib cust1-trigger" type="radio" name="attr_cust1-type" value="Trigger" /><span data-i18n="trigger">Trigger</span></span>
<span class="nowrap"><input class="bluelib cust1-effect" type="radio" name="attr_cust1-type" value="Effect" /><span data-i18n="effect">Effect</span></span>
<span class="nowrap"><input class="bluelib cust1-improved" type="radio" name="attr_cust1-type" value="Improved" /><span data-i18n="improved">Improved</span></span>
<span class="nowrap"><input class="bluelib cust1-sustain" type="radio" name="attr_cust1-type" value="Sustain" /><span data-i18n="sustain">Sustain</span></span>
<span class="nowrap"><input class="bluelib cust1-special" type="radio" name="attr_cust1-type" value="Special" /><span data-i18n="special">Special</span></span>
<span class="nowrap"><input class="bluelib cust1-opening-sustaining-effect" type="radio" name="attr_cust1-type" value="Opening-Sustaining-Effect" /><span data-i18n="opening-sustaining-effect">Opening-Sustaining-Effect</span></span>
<span class="nowrap"><input class="bluelib cust1-final-verse" type="radio" name="attr_cust1-type" value="Final-Verse" /><span data-i18n="final-verse">Final-Verse</span></span>
<span class="nowrap"><input class="bluelib cust1-details" type="radio" name="attr_cust1-type" value="Details" /><span data-i18n="details">Details</span></span>
<span class="nowrap"><input class="bluelib cust1-attackcustom" type="radio" name="attr_cust1-type" value="typecustom" /><span data-i18n="custom">Custom</span></span>
</div>
<input class="suboption cust1options title" type="text" spellcheck="false" name="attr_cust1-custom" data-i18n-placeholder="custom" placeholder="Custom" />
<span class="spacer subption cust1options"></span>
<input class="suboption cust1options cust1subcust1" type="checkbox" name="attr_cust1-subcust1" value="1" />
<input class="suboption cust1options title full" type="text" spellcheck="false" name="attr_cust1-subcust1-desc" />
<input class="suboption cust1options cust1subcust2" type="checkbox" name="attr_cust1-subcust2" value="1" />
<input class="suboption cust1options title full" type="text" spellcheck="false" name="attr_cust1-subcust2-desc" />
<input class="suboption cust1options cust1subcust3" type="checkbox" name="attr_cust1-subcust3" value="1" />
<input class="suboption cust1options title full" type="text" spellcheck="false" name="attr_cust1-subcust3-desc" />
<input class="suboption cust1options cust1subcust4" type="checkbox" name="attr_cust1-subcust4" value="1" />
<input class="suboption cust1options title full" type="text" spellcheck="false" name="attr_cust1-subcust4-desc" />
<input class="poption Cust2 pseudocheck" type="checkbox" name="attr_cust2" value="1" /><span class="poption mleft"></span><span class="poption bold" data-i18n="custom-2">Custom 2</span>
<span class="spacer suboption cust2options"></span>
<div class="suboption cust2options">
<span class="nowrap"><input class="bluelib cust2-hit" type="radio" name="attr_cust2-type" value="Hit" /><span data-i18n="hit">Hit</span></span>
<span class="nowrap"><input class="bluelib cust2-miss" type="radio" name="attr_cust2-type" value="Miss" /><span data-i18n="miss">Miss</span></span>
<span class="nowrap"><input class="bluelib cust2-trigger" type="radio" name="attr_cust2-type" value="Trigger" /><span data-i18n="trigger">Trigger</span></span>
<span class="nowrap"><input class="bluelib cust2-effect" type="radio" name="attr_cust2-type" value="Effect" /><span data-i18n="effect">Effect</span></span>
<span class="nowrap"><input class="bluelib cust2-improved" type="radio" name="attr_cust2-type" value="Improved" /><span data-i18n="improved">Improved</span></span>
<span class="nowrap"><input class="bluelib cust2-sustain" type="radio" name="attr_cust2-type" value="Sustain" /><span data-i18n="sustain">Sustain</span></span>
<span class="nowrap"><input class="bluelib cust2-special" type="radio" name="attr_cust2-type" value="Special" /><span data-i18n="special">Special</span></span>
<span class="nowrap"><input class="bluelib cust2-opening-sustaining-effect" type="radio" name="attr_cust2-type" value="Opening-Sustaining-Effect" /><span data-i18n="opening-sustaining-effect">Opening-Sustaining-Effect</span></span>
<span class="nowrap"><input class="bluelib cust2-final-verse" type="radio" name="attr_cust2-type" value="Final-Verse" /><span data-i18n="final-verse">Final-Verse</span></span>
<span class="nowrap"><input class="bluelib cust2-details" type="radio" name="attr_cust2-type" value="Details" /><span data-i18n="details">Details</span></span>
<span class="nowrap"><input class="bluelib cust2-attackcustom" type="radio" name="attr_cust2-type" value="typecustom" /><span>Custom</span></span>
</div>
<input class="suboption cust2options title" type="text" spellcheck="false" name="attr_cust2-custom" data-i18n-placeholder="custom" placeholder="Custom" />
<span class="spacer subption cust2options"></span>
<input class="suboption cust2options cust2subcust1" type="checkbox" name="attr_cust2-subcust1" value="1" />
<input class="suboption cust2options title full" type="text" spellcheck="false" name="attr_cust2-subcust1-desc" />
<input class="suboption cust2options cust2subcust2" type="checkbox" name="attr_cust2-subcust2" value="1" />
<input class="suboption cust2options title full" type="text" spellcheck="false" name="attr_cust2-subcust2-desc" />
<input class="suboption cust2options cust2subcust3" type="checkbox" name="attr_cust2-subcust3" value="1" />
<input class="suboption cust2options title full" type="text" spellcheck="false" name="attr_cust2-subcust3-desc" />
<input class="suboption cust2options cust2subcust4" type="checkbox" name="attr_cust2-subcust4" value="1" />
<input class="suboption cust2options title full" type="text" spellcheck="false" name="attr_cust2-subcust4-desc" />
<input class="poption Cust3 pseudocheck" type="checkbox" name="attr_cust3" value="1" /><span class="poption mleft"></span><span class="poption bold" data-i18n="custom-3">Custom 3</span>
<span class="spacer suboption cust3options"></span>
<div class="suboption cust3options">
<span class="nowrap"><input class="bluelib cust3-hit" type="radio" name="attr_cust3-type" value="Hit" /><span data-i18n="hit">Hit</span></span>
<span class="nowrap"><input class="bluelib cust3-miss" type="radio" name="attr_cust3-type" value="Miss" /><span data-i18n="miss">Miss</span></span>
<span class="nowrap"><input class="bluelib cust3-trigger" type="radio" name="attr_cust3-type" value="Trigger" /><span data-i18n="trigger">Trigger</span></span>
<span class="nowrap"><input class="bluelib cust3-effect" type="radio" name="attr_cust3-type" value="Effect" /><span data-i18n="effect">Effect</span></span>
<span class="nowrap"><input class="bluelib cust3-improved" type="radio" name="attr_cust3-type" value="Improved" /><span data-i18n="improved">Improved</span></span>
<span class="nowrap"><input class="bluelib cust3-sustain" type="radio" name="attr_cust3-type" value="Sustain" /><span data-i18n="sustain">Sustain</span></span>
<span class="nowrap"><input class="bluelib cust3-special" type="radio" name="attr_cust3-type" value="Special" /><span data-i18n="special">Special</span></span>
<span class="nowrap"><input class="bluelib cust3-opening-sustaining-effect" type="radio" name="attr_cust3-type" value="Opening-Sustaining-Effect" /><span data-i18n="opening-sustaining-effect">Opening-Sustaining-Effect</span></span>
<span class="nowrap"><input class="bluelib cust3-final-verse" type="radio" name="attr_cust3-type" value="Final-Verse" /><span data-i18n="final-verse">Final-Verse</span></span>
<span class="nowrap"><input class="bluelib cust3-details" type="radio" name="attr_cust3-type" value="Details" /><span data-i18n="details">Details</span></span>
<span class="nowrap"><input class="bluelib cust3-attackcustom" type="radio" name="attr_cust3-type" value="typecustom" /><span data-i18n="custom">Custom</span></span>
</div>
<input class="suboption cust3options title" type="text" spellcheck="false" name="attr_cust3-custom" data-i18n-placeholder="custom" placeholder="Custom" />
<span class="spacer subption cust3options"></span>
<input class="suboption cust3options cust3subcust1" type="checkbox" name="attr_cust3-subcust1" value="1" />
<input class="suboption cust3options title full" type="text" spellcheck="false" name="attr_cust3-subcust1-desc" />
<input class="suboption cust3options cust3subcust2" type="checkbox" name="attr_cust3-subcust2" value="1" />
<input class="suboption cust3options title full" type="text" spellcheck="false" name="attr_cust3-subcust2-desc" />
<input class="suboption cust3options cust3subcust3" type="checkbox" name="attr_cust3-subcust3" value="1" />
<input class="suboption cust3options title full" type="text" spellcheck="false" name="attr_cust3-subcust3-desc" />
<input class="suboption cust3options cust3subcust4" type="checkbox" name="attr_cust3-subcust4" value="1" />
<input class="suboption cust3options title full" type="text" spellcheck="false" name="attr_cust3-subcust4-desc" />
<!-- TEMPLATE -->
<input type="hidden" name="attr_power-roll" value="" />
<input class="invisible At-Will" type="checkbox" name="attr_type" value="atwill" checked="checked" />
<input class="invisible Class" type="checkbox" name="attr_type" value="class" />
<input class="invisible Racial" type="checkbox" name="attr_type" value="racial" />
<input class="invisible Encounter" type="checkbox" name="attr_type" value="encounter" />
<input class="invisible Recharge" type="checkbox" name="attr_type" value="recharge" />
<input class="invisible Daily" type="checkbox" name="attr_type" value="daily" />
<input class="invisible Spell" type="checkbox" name="attr_type" value="spell" />
<input class="invisible Magic-Item" type="checkbox" name="attr_type" value="magicitem" />
<input class="invisible Custom" type="checkbox" name="attr_type" value="custom" />
<div class="header">
<button class="powerlabel" type="roll" name="roll_power" value="@{power-roll}">
<span class="label" name="attr_powname-display"></span>
</button>
<div style="position: absolute; top: 5px; right: -8px;">
<input class="1 pseudocheck" type="checkbox" name="attr_uses1" /><span class="mright"></span>
<input class="2 pseudocheck" type="checkbox" name="attr_uses2" /><span class="mright"></span>
<input class="3 pseudocheck" type="checkbox" name="attr_uses3" /><span class="mright"></span>
<input class="4 pseudocheck" type="checkbox" name="attr_uses4" /><span class="mright"></span>
<span class="label" style="margin-right: 2px;" name="attr_type-display"></span>
</div>
</div>
<div class="repbody">
<span class="action-range">
<span class="left action">
<span class="label bold" name="attr_action-display"></span>
</span>
<span class="right range">
<span class="label bold" name="attr_range-display"></span>
</span>
</span>
<span class="left target">
<b><span class="label i18n" data-i18n="target">Target</span>:</b>
<span class="label" name="attr_target-display" style="width: 180px;"></span>
</span>
<span class="left attack">
<b><span class="label i18n" data-i18n="attack">Attack</span>:</b>
<span class="label" name="attr_attack-display" style="width: 115px; text-align: left;"></span>
</span>
<span class="left cust1">
<span class="label bold toplineleft" name="attr_cust1-display"></span>
<span class="cust1subcust1 toplineright" name="attr_cust1-subcust1-display"></span>
<span class="cust1subcust2 fuller" name="attr_cust1-subcust2-display"></span>
<span class="cust1subcust3 fuller" name="attr_cust1-subcust3-display"></span>
<span class="cust1subcust4 fuller" name="attr_cust1-subcust4-display"></span>
</span>
<span class="left cust2">
<span class="label bold toplineleft" name="attr_cust2-display"></span>
<span class="cust2subcust1 toplineright" name="attr_cust2-subcust1-display"></span>
<span class="cust2subcust2 fuller" name="attr_cust2-subcust2-display"></span>
<span class="cust2subcust3 fuller" name="attr_cust2-subcust3-display"></span>
<span class="cust2subcust4 fuller" name="attr_cust2-subcust4-display"></span>
</span>
<span class="left cust3">
<span class="label bold toplineleft" name="attr_cust3-display"></span>
<span class="cust3subcust1 toplineright" name="attr_cust3-subcust1-display"></span>
<span class="cust3subcust2 fuller" name="attr_cust3-subcust2-display"></span>
<span class="cust3subcust3 fuller" name="attr_cust3-subcust3-display"></span>
<span class="cust3subcust4 fuller" name="attr_cust3-subcust4-display"></span>
</span>
</div>
</div>
</fieldset>
</div>
</div>
<!-- HIDDEN FIELDS USED FOR CALCULATIONS -->
<input type="hidden" disabled="true" name="attr_E-DIE" value="[[&{noerror}(((((@{tracker|Escalation Die}+0) + (6)) - abs((@{tracker|Escalation Die}+0) - (6))) / 2))]][^{escalation-die}]" />
</div>
<div class="footer" style="font-size: 10px; color: rgb(165, 165, 165);">
<span>
&copy;<span data-i18n="copyright">2015 Pelgrane Press Ltd. Published by Pelgrane Press Ltd. under license from Fire Opal Media. The 13th Age is a trademarks of Fire Opal Media, Inc.</span>
</span>
</div>
<!-- ROLL TEMPLATES -->
<rolltemplate class="sheet-rolltemplate-attr">
<div class="header">
<span class="headerlabel">{{attr}}</span>
{{#back}}
<span class="headerdivider">]</span>
<span class="headerlabel">{{back}}</span>
{{/back}}
</div>
<div class="body">
<div class="part">
<span class="partlabel">{{attr_abr}}</span>
<span class="partnumber">{{attr_bonus}}</span>
</div>
<div class="partspacer">+</div>
<div class="part">
<span class="partlabel" data-i18n="lvl-u">LVL</span>
<span class="partnumber">{{level}}</span>
</div>
{{#back}}
<div class="partspacer">+</div>
<div class="part">
<span class="partlabel" data-i18n="bck-u">BCK</span>
<span class="partnumber">{{back_bonus}}</span>
</div>
{{/back}}
{{#rollGreater() mod 0}}
<div class="partspacer">+</div>
<div class="part">
<span class="partlabel" data-i18n="mod-u">MOD</span>
<span class="partnumber">{{mod}}</span>
</div>
{{/rollGreater() mod 0}}
{{#rollLess() mod 0}}
<div class="partspacer">+</div>
<div class="part">
<span class="partlabel" data-i18n="mod-u">MOD</span>
<span class="partnumber">{{mod}}</span>
</div>
{{/rollLess() mod 0}}
<div class="partspacer">=</div>
<div class="result">{{result}}</div>
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-init">
<div class="header">
<span class="headerlabel" data-i18n="initiative">Initiative</span>
<span class="headerdivider">]</span>
<span class="headerlabel">{{name}}</span>
</div>
<div class="body">
<div class="part">
<span class="partlabel" data-i18n="dex-u">DEX</span>
<span class="partnumber">{{dex_bonus}}</span>
</div>
<div class="partspacer">+</div>
<div class="part">
<span class="partlabel" data-i18n="lvl-u">LVL</span>
<span class="partnumber">{{level}}</span>
</div>
{{#rollGreater() mod 0}}
<div class="partspacer">+</div>
<div class="part">
<span class="partlabel" data-i18n="mod-u">MOD</span>
<span class="partnumber">{{mod}}</span>
</div>
{{/rollGreater() mod 0}}
{{#rollLess() mod 0}}
<div class="partspacer">+</div>
<div class="part">
<span class="partlabel" data-i18n="mod-u">MOD</span>
<span class="partnumber">{{mod}}</span>
</div>
{{/rollLess() mod 0}}
<div class="partspacer">=</div>
<div class="result">{{result}}</div>
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-deathsave">
<div class="header">
<span class="headerlabel" data-i18n="death-save">Death Save</span>
</div>
<div class="body">
<div>
<div class="partspacer"> </div>
<div class="part">
<span class="partlabel" data-i18n="dice-u">DICE</span>
<span class="partnumber">1d20</span>
</div>
<div class="partspacer"> + </div>
<div class="part">
<span class="partlabel" data-i18n="mod-u">MOD</span>
<span class="partnumber">{{mod}}</span>
</div>
<div class="partspacer"> = </div>
<div class="result">{{result}}</div>
</div>
<div class="row">
{{#rollWasCrit() result}}
<div class="part">
<span class="partlabel" data-i18n="critical-success-u">CRITICAL SUCCESS</span>
<span class="partnumber" data-i18n="use-recovery-action">Use a recovery and take an action!</span>
</div>
{{/rollWasCrit() result}}
{{#rollBetween() result 16 19}}
<div class="part">
<span class="partlabel" data-i18n="success-u">SUCCESS</span>
<span class="partnumber" data-i18n="use-recovery">Use a recovery!</span>
</div>
{{/rollBetween() result 16 19}}
{{#rollLess() result 16}}
<div class="part">
<span class="partlabel" data-i18n="failure-u">FAILURE</span>
<span class="partnumber" data-i18n="step-toward-death">Mark a step toward death!</span>
</div>
{{/rollLess() result 16}}
</div>
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-save">
<div class="header">
<span class="headerlabel" data-i18n="save">Save</span>
</div>
<div class="body">
<div>
<div class="part">
<span class="partlabel" data-i18n="dice-u">DICE</span>
<span class="partnumber">1d20</span>
</div>
<div class="partspacer"> + </div>
<div class="part">
<span class="partlabel" data-i18n="mod-u">MOD</span>
<span class="partnumber">{{mod}}</span>
</div>
<div class="partspacer"> = </div>
<div class="result">{{result}}</div>
</div>
<div class="row">
<div class="part">
<span class="lib" data-i18n="easy-6">Easy (6+)</span>:
{{#rollGreater() result 5}}
<span class="libres" data-i18n="success-u">SUCCESS</span>
{{/rollGreater() result 5}}
{{#rollLess() result 6}}
<span class="libres" data-i18n="failure-u">FAILURE</span>
{{/rollLess() result 6}}
</div>
</div>
<div class="row">
<div class="part">
<span class="lib" data-i18n="normal-11">Normal (11+)</span>:
{{#rollGreater() result 10}}
<span class="libres" data-i18n="success-u">SUCCESS</span>
{{/rollGreater() result 10}}
{{#rollLess() result 11}}
<span class="libres" data-i18n="failure-u">FAILURE</span>
{{/rollLess() result 11}}
</div>
</div>
<div class="row">
<div class="part">
<span class="lib" data-i18n="hard-16">Hard (16+)</span>:
{{#rollGreater() result 15}}
<span class="libres" data-i18n="success-u">SUCCESS</span>
{{/rollGreater() result 15}}
{{#rollLess() result 16}}
<span class="libres" data-i18n="failure-u">FAILURE</span>
{{/rollLess() result 16}}
</div>
</div>
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-icon">
<div class="header">
<span class="headerlabel">{{name}}</span>
<span class="headerdivider">]</span>
<span class="headerlabel">{{relationship}}</span>
</div>
<div class="body">
{{#rollGreater() iconlvl 0}}
<div class="part">
{{#rollTotal() icon1 5}}
<span class="partlabel">e</span>
{{/rollTotal() icon1 5}}
{{#rollTotal() icon1 6}}
<span class="partlabel">k</span>
{{/rollTotal() icon1 6}}
<span class="partnumber">{{icon1}}</span>
</div>
{{/rollGreater() iconlvl 0}}
{{#rollGreater() iconlvl 1}}
<div class="partspacer">j</div>
<div class="part">
{{#rollTotal() icon2 5}}
<span class="partlabel">e</span>
{{/rollTotal() icon2 5}}
{{#rollTotal() icon2 6}}
<span class="partlabel">k</span>
{{/rollTotal() icon2 6}}
<span class="partnumber">{{icon2}}</span>
</div>
{{/rollGreater() iconlvl 1}}
{{#rollGreater() iconlvl 2}}
<div class="partspacer">j</div>
<div class="part">
{{#rollTotal() icon3 5}}
<span class="partlabel">e</span>
{{/rollTotal() icon3 5}}
{{#rollTotal() icon3 6}}
<span class="partlabel">k</span>
{{/rollTotal() icon3 6}}
<span class="partnumber">{{icon3}}</span>
</div>
{{/rollGreater() iconlvl 2}}
{{#rollGreater() iconlvl 3}}
<div class="partspacer">j</div>
<div class="part">
{{#rollTotal() icon4 5}}
<span class="partlabel">e</span>
{{/rollTotal() icon4 5}}
{{#rollTotal() icon4 6}}
<span class="partlabel">k</span>
{{/rollTotal() icon4 6}}
<span class="partnumber">{{icon4}}</span>
</div>
{{/rollGreater() iconlvl 3}}
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-rec">
<div class="header">
<span class="headerlabel" data-i18n="recovery">Recovery</span>
</div>
<div class="body">
<div class="part">
<span class="partlabel" data-i18n="lvl-u">LVL</span>
<span class="partnumber">{{level}}</span>
</div>
<div class="partspacer">d</div>
<div class="part">
<span class="partlabel" data-i18n="dice-u">DICE</span>
<span class="partnumber">{{rec_die}}</span>
</div>
<div class="partspacer">+</div>
<div class="part">
<span class="partlabel" data-i18n="rec-u">REC</span>
<span class="partnumber">{{rec_bonus}}</span>
</div>
{{#rollGreater() mod 0}}
<div class="partspacer">+</div>
<div class="part">
<span class="partlabel" data-i18n="mod-u">MOD</span>
<span class="partnumber">{{mod}}</span>
</div>
{{/rollGreater() mod 0}}
{{#rollLess() mod 0}}
<div class="partspacer">+</div>
<div class="part">
<span class="partlabel" data-i18n="mod-u">MOD</span>
<span class="partnumber">{{mod}}</span>
</div>
{{/rollLess() mod 0}}
<div class="partspacer">=</div>
<div class="result">{{result}}</div>
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-ba">
<div class="header atwill">
<span class="headerlabel left">{{wname}}</span>
<span class="headerlabel right" data-i18n="at-will">At-Will</span>
</div>
<div class="body">
<div class="row">
<span class="left bold" data-i18n="standard-action">Standard Action</span>
<span class="right bold">{{range}}</span>
</div>
<div class="row">
<span class="left"><b><span data-i18n="target">Target</span>:</b> <span data-i18n="one-creature">One Creature</span></span>
</div>
<div class="row">
<span class="left"><b><span data-i18n="attack">Attack</span>:</b> {{attbonus}} <span data-i18n="vs">vs</span> <span data-i18n="ac-u">AC</span></span>
</div>
<div class="row" style="margin-bottom: 5px;">
<span class="left"><b><span data-i18n="hit">Hit</span>:</b> {{damage}}</span>
<span class="right"><b><span data-i18n="miss">Miss</span>:</b> {{miss}}</span>
</div>
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-power">
{{#atwill}}
<div class="header atwill">
{{/atwill}}
{{#class}}
<div class="header class">
{{/class}}
{{#racial-encounter}}
<div class="header racial-encounter">
{{/racial-encounter}}
{{#recharge-daily}}
<div class="header recharge-daily">
{{/recharge-daily}}
{{#spell}}
<div class="header spell">
{{/spell}}
{{#magicitem}}
<div class="header magicitem">
{{/magicitem}}
{{#typecustom}}
<div class="header custom">
{{/typecustom}}
<span class="headerlabel left">{{name}}</span>
<span class="headerlabel right">{{type}}</span>
</div>
<div class="body">
{{#action-range-flag}}
<div class="row">
<span class="left bold">{{action}}</span>
<span class="right bold">{{range}}</span>
</div>
{{/action-range-flag}}
{{#target}}
<div class="row">
<span class="left"><b><span data-i18n="target">Target</span>:</b> {{target}}</span>
</div>
{{/target}}
{{#attack}}
<div class="row">
<span class="left"><b><span data-i18n="attack">Attack</span>:</b> {{attbonus}} <span data-i18n="vs">vs</span> {{vstype}}</span>
</div>
{{/attack}}
{{#cust1}}
<div class="row">
{{#Hit-1}}
<span class="bold left"><span data-i18n="hit">Hit</span>: </span><span style="width:10px;">{{cust1-subcust1-desc}}</span>
{{/Hit-1}}
{{#Miss-1}}
<span class="bold left"><span data-i18n="miss">Miss</span>: </span><span style="width:10px;">{{cust1-subcust1-desc}}</span>
{{/Miss-1}}
{{#Trigger-1}}
<span class="bold left"><span data-i18n="trigger">Trigger</span>: </span><span style="width:10px;">{{cust1-subcust1-desc}}</span>
{{/Trigger-1}}
{{#Effect-1}}
<span class="bold left"><span data-i18n="effect">Effect</span>: </span><span style="width:10px;">{{cust1-subcust1-desc}}</span>
{{/Effect-1}}
{{#Sustain-1}}
<span class="bold left"><span data-i18n="sustain">Sustain</span>: </span><span style="width:10px;">{{cust1-subcust1-desc}}</span>
{{/Sustain-1}}
{{#Improved-1}}
<span class="bold left"><span data-i18n="improved">Improved</span>: </span><span style="width:10px;">{{cust1-subcust1-desc}}</span>
{{/Improved-1}}
{{#Opening-Sustaining-Effect-1}}
<span class="bold left"><span data-i18n="opening-sustaining-effect">Opening/Sustaining Effect</span>: </span><span style="width:10px;">{{cust1-subcust1-desc}}</span>
{{/Opening-Sustaining-Effect-1}}
{{#Final-Verse-1}}
<span class="bold left"><span data-i18n="final-verse">Final Verse</span>: </span><span style="width:10px;">{{cust1-subcust1-desc}}</span>
{{/Final-Verse-1}}
{{#Special-1}}
<span class="bold left"><span data-i18n="special">Special</span>: </span><span style="width:10px;">{{cust1-subcust1-desc}}</span>
{{/Special-1}}
{{#Details-1}}
<span class="bold left"><span data-i18n="details">Details</span>: </span><span style="width:10px;">{{cust1-subcust1-desc}}</span>
{{/Details-1}}
{{#typecustom-1}}
<span class="bold left">{{custype1}}: </span><span style="width:10px;">{{cust1-subcust1-desc}}</span>
{{/typecustom-1}}
</div>
{{#cust1-subcust2}}
<div class="row">
<span class="left">{{cust1-subcust2-desc}}</span>
</div>
{{/cust1-subcust2}}
{{#cust1-subcust3}}
<div class="row">
<span class="left">{{cust1-subcust3-desc}}</span>
</div>
{{/cust1-subcust3}}
{{#cust1-subcust4}}
<div class="row">
<span class="left">{{cust1-subcust4-desc}}</span>
</div>
{{/cust1-subcust4}}
{{/cust1}}
{{#cust2}}
<div class="row">
{{#Hit-2}}
<span class="bold left"><span data-i18n="hit">Hit</span>: </span><span style="width:10px;">{{cust2-subcust1-desc}}</span>
{{/Hit-2}}
{{#Miss-2}}
<span class="bold left"><span data-i18n="miss">Miss</span>: </span><span style="width:10px;">{{cust2-subcust1-desc}}</span>
{{/Miss-2}}
{{#Trigger-2}}
<span class="bold left"><span data-i18n="trigger">Trigger</span>: </span><span style="width:10px;">{{cust2-subcust1-desc}}</span>
{{/Trigger-2}}
{{#Effect-2}}
<span class="bold left"><span data-i18n="effect">Effect</span>: </span><span style="width:10px;">{{cust2-subcust1-desc}}</span>
{{/Effect-2}}
{{#Sustain-2}}
<span class="bold left"><span data-i18n="sustain">Sustain</span>: </span><span style="width:10px;">{{cust2-subcust1-desc}}</span>
{{/Sustain-2}}
{{#Improved-2}}
<span class="bold left"><span data-i18n="improved">Improved</span>: </span><span style="width:10px;">{{cust2-subcust1-desc}}</span>
{{/Improved-2}}
{{#Opening-Sustaining-Effect-2}}
<span class="bold left"><span data-i18n="opening-sustaining-effect">Opening/Sustaining Effect</span>: </span><span style="width:10px;">{{cust2-subcust1-desc}}</span>
{{/Opening-Sustaining-Effect-2}}
{{#Final-Verse-2}}
<span class="bold left"><span data-i18n="final-verse">Final Verse</span>: </span><span style="width:10px;">{{cust2-subcust1-desc}}</span>
{{/Final-Verse-2}}
{{#Special-2}}
<span class="bold left"><span data-i18n="special">Special</span>: </span><span style="width:10px;">{{cust2-subcust1-desc}}</span>
{{/Special-2}}
{{#Details-2}}
<span class="bold left"><span data-i18n="details">Details</span>: </span><span style="width:10px;">{{cust2-subcust1-desc}}</span>
{{/Details-2}}
{{#typecustom-2}}
<span class="bold left">{{custype2}}: </span><span style="width:10px;">{{cust2-subcust1-desc}}</span>
{{/typecustom-2}}
</div>
{{#cust2-subcust2}}
<div class="row">
<span class="left">{{cust2-subcust2-desc}}</span>
</div>
{{/cust2-subcust2}}
{{#cust2-subcust3}}
<div class="row">
<span class="left">{{cust2-subcust3-desc}}</span>
</div>
{{/cust2-subcust3}}
{{#cust2-subcust4}}
<div class="row">
<span class="left">{{cust2-subcust4-desc}}</span>
</div>
{{/cust2-subcust4}}
{{/cust2}}
{{#cust3}}
<div class="row">
{{#Hit-3}}
<span class="bold left"><span data-i18n="hit">Hit</span>: </span><span style="width:10px;">{{cust3-subcust1-desc}}</span>
{{/Hit-3}}
{{#Miss-3}}
<span class="bold left"><span data-i18n="miss">Miss</span>: </span><span style="width:10px;">{{cust3-subcust1-desc}}</span>
{{/Miss-3}}
{{#Trigger-3}}
<span class="bold left"><span data-i18n="trigger">Trigger</span>: </span><span style="width:10px;">{{cust3-subcust1-desc}}</span>
{{/Trigger-3}}
{{#Effect-3}}
<span class="bold left"><span data-i18n="effect">Effect</span>: </span><span style="width:10px;">{{cust3-subcust1-desc}}</span>
{{/Effect-3}}
{{#Sustain-3}}
<span class="bold left"><span data-i18n="sustain">Sustain</span>: </span><span style="width:10px;">{{cust3-subcust1-desc}}</span>
{{/Sustain-3}}
{{#Improved-3}}
<span class="bold left"><span data-i18n="improved">Improved</span>: </span><span style="width:10px;">{{cust3-subcust1-desc}}</span>
{{/Improved-3}}
{{#Opening-Sustaining-Effect-3}}
<span class="bold left"><span data-i18n="opening-sustaining-effect">Opening/Sustaining Effect</span>: </span><span style="width:10px;">{{cust3-subcust1-desc}}</span>
{{/Opening-Sustaining-Effect-3}}
{{#Final-Verse-3}}
<span class="bold left"><span data-i18n="final-verse">Final Verse</span>: </span><span style="width:10px;">{{cust3-subcust1-desc}}</span>
{{/Final-Verse-3}}
{{#Special-3}}
<span class="bold left"><span data-i18n="special">Special</span>: </span><span style="width:10px;">{{cust3-subcust1-desc}}</span>
{{/Special-3}}
{{#Details-3}}
<span class="bold left"><span data-i18n="details">Details</span>: </span><span style="width:10px;">{{cust3-subcust1-desc}}</span>
{{/Details-3}}
{{#typecustom-3}}
<span class="bold left">{{custype3}}: </span><span style="width:10px;">{{cust3-subcust1-desc}}</span>
{{/typecustom-3}}
</div>
{{#cust3-subcust2}}
<div class="row">
<span class="left">{{cust3-subcust2-desc}}</span>
</div>
{{/cust3-subcust2}}
{{#cust3-subcust3}}
<div class="row">
<span class="left">{{cust3-subcust3-desc}}</span>
</div>
{{/cust3-subcust3}}
{{#cust3-subcust4}}
<div class="row">
<span class="left">{{cust3-subcust4-desc}}</span>
</div>
{{/cust3-subcust4}}
{{/cust3}}
</div>
</rolltemplate>
<!-- WORKERS -->
<script type="text/worker">
/* === GLOBAL VARIABLES === */
const i18n_atwill = getTranslationByKey("at-will"),
i18n_talent = getTranslationByKey("talent"),
i18n_feature = getTranslationByKey("feature"),
i18n_power = getTranslationByKey("power"),
i18n_battlecry = getTranslationByKey("battle-cry"),
i18n_domain = getTranslationByKey("domain"),
i18n_encounter = getTranslationByKey("encounter"),
i18n_recharge = getTranslationByKey("recharge"),
i18n_daily = getTranslationByKey("daily"),
i18n_spell = getTranslationByKey("spell"),
i18n_magicitem = getTranslationByKey("magic-item"),
i18n_standardaction = getTranslationByKey("standard-action"),
i18n_moveaction = getTranslationByKey("move-action"),
i18n_quickaction = getTranslationByKey("quick-action"),
i18n_freeaction = getTranslationByKey("free-action"),
i18n_flexibleaction = getTranslationByKey("flexible-action"),
i18n_engaged = getTranslationByKey("engaged"),
i18n_nearby = getTranslationByKey("nearby"),
i18n_faraway = getTranslationByKey("far-away"),
i18n_intercepting = getTranslationByKey("intercepting"),
i18n_lineofsight = getTranslationByKey("line-of-sight"),
i18n_lvlu = getTranslationByKey("lvl-u"),
i18n_stru = getTranslationByKey("str-u"),
i18n_conu = getTranslationByKey("con-u"),
i18n_dexu = getTranslationByKey("dex-u"),
i18n_intu = getTranslationByKey("int-u"),
i18n_wisu = getTranslationByKey("wis-u"),
i18n_chau = getTranslationByKey("cha-u"),
i18n_weapu = getTranslationByKey("weap-u"),
i18n_unknownu = getTranslationByKey("unknown-u"),
i18n_modifiers = getTranslationByKey("modifiers"),
i18n_modu = getTranslationByKey("mod-u"),
i18n_acu = getTranslationByKey("ac-u"),
i18n_pdu = getTranslationByKey("pd-u"),
i18n_mdu = getTranslationByKey("md-u"),
i18n_vs = getTranslationByKey("vs"),
i18n_hit = getTranslationByKey("hit"),
i18n_miss = getTranslationByKey("miss"),
i18n_trigger = getTranslationByKey("trigger"),
i18n_effect = getTranslationByKey("effect"),
i18n_improved = getTranslationByKey("improved"),
i18n_sustain = getTranslationByKey("sustain"),
i18n_special = getTranslationByKey("special"),
i18n_opening = getTranslationByKey("opening-sustaining-effect"),
i18n_finalverse = getTranslationByKey("final-verse"),
i18n_details = getTranslationByKey("details")
;
/* === EVENTS === */
// === Version handling
on("sheet:opened", function() {
versioning();
});
// === Abilities
on("change:str-base", function(e) {
setAttrs({"STR-mod": Math.floor((parseInt(e.newValue) - 10) / 2)});
});
on("change:con-base", function(e) {
setAttrs({"CON-mod": Math.floor((parseInt(e.newValue) - 10) / 2)});
});
on("change:dex-base", function(e) {
setAttrs({"DEX-mod": Math.floor((parseInt(e.newValue) - 10) / 2)});
});
on("change:int-base", function(e) {
setAttrs({"INT-mod": Math.floor((parseInt(e.newValue) - 10) / 2)});
});
on("change:wis-base", function(e) {
setAttrs({"WIS-mod": Math.floor((parseInt(e.newValue) - 10) / 2)});
});
on("change:cha-base", function(e) {
setAttrs({"CHA-mod": Math.floor((parseInt(e.newValue) - 10) / 2)});
});
// === Level / AC / PD / MD / HP / Recovery (mod) / Weapons (mods level) / Powers (mods level)
on("change:ac-base change:str-mod change:con-mod change:dex-mod change:int-mod change:wis-mod change:cha-mod change:pd-base change:md-base change:hp-base change:hp-mod change:rec-mod change:level change:m-miss change:r-miss",function(e){
if (["level","m-miss","r-miss"].includes(e.sourceAttribute)) {updateLvl()}
if (["level","ac-base","con-mod","dex-mod","wis-mod"].includes(e.sourceAttribute)) {updateAc()}
if (["level","pd-base","str-mod","con-mod","dex-mod"].includes(e.sourceAttribute)) {updatePd()}
if (["level","md-base","int-mod","wis-mod","cha-mod"].includes(e.sourceAttribute)) {updateMd()}
if (["level","hp-base","hp-mod","con-mod"].includes(e.sourceAttribute)) {updateHp()}
if (["level","con-mod","rec-mod"].includes(e.sourceAttribute)) {updateRec()}
if (["level","str-mod","dex-mod"].includes(e.sourceAttribute)) {
getAttrs(["MWEAP-sel","RWEAP-sel"], function(v){
updateMeleeWeapon(parseInt(v["MWEAP-sel"]) || 1);
updateRangeWeapon(parseInt(v["RWEAP-sel"]) || 1);
});
}
if (["level","str-mod","con-mod","dex-mod","int-mod","wis-mod","cha-mod"].includes(e.sourceAttribute)) {updateAllPowers()}
});
// === Background
on("change:back-sel", function(e){
updateBckgrd(parseInt(e.newValue) || 1);
});
on("change:BACK-name1 change:BACK1 change:BACK-name2 change:BACK2 change:BACK-name3 change:BACK3 change:BACK-name4 change:BACK4 change:BACK-name5 change:BACK5 change:BACK-name6 change:BACK6 change:BACK-name7 change:BACK7 change:BACK-name8 change:BACK8 change:BACK-name9 change:BACK9 change:BACK-name10 change:BACK10", function(e){
getAttrs(["BACK-sel"], function(v){
if((e.sourceAttribute == "back-name"+v["BACK-sel"]) || (e.sourceAttribute == "back"+v["BACK-sel"])){updateBckgrd(parseInt(v["BACK-sel"]) || 1);}
});
});
// === Recovery
on("change:rec_max", function(e) {
getAttrs(["REC_max"], function(v) {
setAttrs({
"rec_flag": v.REC_max
});
});
});
// === Powers
on("change:repeating_power:name change:repeating_power:type change:repeating_power:classtype change:repeating_power:type-custom change:repeating_power:rechargerate change:repeating_power:uses change:repeating_power:action change:repeating_power:action-type change:repeating_power:action-custom change:repeating_power:range change:repeating_power:range-type change:repeating_power:range-custom change:repeating_power:target change:repeating_power:target-type change:repeating_power:attack change:repeating_power:attack-type change:repeating_power:attack-custom change:repeating_power:attack-vstype change:repeating_power:attack-vscustom change:repeating_power:cust1 change:repeating_power:cust1-type change:repeating_power:cust1-custom change:repeating_power:cust1-subcust1 change:repeating_power:cust1-subcust2 change:repeating_power:cust1-subcust3 change:repeating_power:cust1-subcust4 change:repeating_power:cust1-subcust1-desc change:repeating_power:cust1-subcust2-desc change:repeating_power:cust1-subcust3-desc change:repeating_power:cust1-subcust4-desc change:repeating_power:cust2 change:repeating_power:cust2-type change:repeating_power:cust2-custom change:repeating_power:cust2-subcust1 change:repeating_power:cust2-subcust2 change:repeating_power:cust2-subcust3 change:repeating_power:cust2-subcust4 change:repeating_power:cust2-subcust1-desc change:repeating_power:cust2-subcust2-desc change:repeating_power:cust2-subcust3-desc change:repeating_power:cust2-subcust4-desc change:repeating_power:cust3 change:repeating_power:cust3-type change:repeating_power:cust3-custom change:repeating_power:cust3-subcust1 change:repeating_power:cust3-subcust2 change:repeating_power:cust3-subcust3 change:repeating_power:cust3-subcust4 change:repeating_power:cust3-subcust1-desc change:repeating_power:cust3-subcust2-desc change:repeating_power:cust3-subcust3-desc change:repeating_power:cust3-subcust4-desc", function(e) {
updatePower();
});
// === Weapons
// Selected Melee Weapon
on("change:mweap-sel", function(e){
updateMeleeWeapon(parseInt(e.newValue) || 1);
});
on("change:mweap-mod1 change:mweap-mod2 change:mweap-mod3 change:mweap1 change:mweap2 change:mweap3 change:m-bamod", function(e) {
// Update select melee weapon if necessary
getAttrs(["MWEAP-sel"], function(v){
if((e.sourceAttribute == "m-bamod") || (e.sourceAttribute == "mweap-mod"+v["MWEAP-sel"]) || (e.sourceAttribute == "mweap"+v["MWEAP-sel"])){updateMeleeWeapon(parseInt(v["MWEAP-sel"]) || 1);}
});
// Update all powers
if(["mweap-mod1","mweap-mod2","mweap-mod3"].includes(e.sourceAttribute)){updateAllPowers()}
});
//Selected Range Weapon
on("change:rweap-sel", function(e){
updateRangeWeapon(parseInt(e.newValue) || 1);
});
on("change:rweap-mod1 change:rweap-mod2 change:rweap-mod3 change:rweap1 change:rweap2 change:rweap3 change:r-bamod", function(e) {
// Update select melee weapon if necessary
getAttrs(["RWEAP-sel"], function(v){
if((e.sourceAttribute == "r-bamod") || (e.sourceAttribute == "rweap-mod"+v["RWEAP-sel"]) || (e.sourceAttribute == "rweap"+v["RWEAP-sel"])){
updateRangeWeapon(parseInt(v["RWEAP-sel"]) || 1);
}
});
// Update all powers
if(["rweap-mod1","rweap-mod2","rweap-mod3"].includes(e.sourceAttribute)){updateAllPowers()}
});
// === Icons
on("change:icon1-5 change:icon2-5 change:icon3-5 change:icon4-5 change:icon5-5 change:icon1-6 change:icon2-6 change:icon3-6 change:icon4-6 change:icon5-6", function() {
getAttrs(["icon1-5","icon2-5","icon3-5","icon4-5","icon5-5","icon1-6","icon2-6","icon3-6","icon4-6","icon5-6","icon1-5-count","icon2-5-count","icon3-5-count","icon4-5-count","icon5-5-count","icon1-6-count","icon2-6-count","icon3-6-count","icon4-6-count","icon5-6-count"], function(v) {
var setAttrsObj = {};
for(var input in v) {
if(v[input] == "0" && typeof v[input+"-count"] !== "undefined" && (""+v[input+"-count"]).trim() !== "") {
setAttrsObj[input+"-count"] = 0;
}
}
setAttrs(setAttrsObj);
});
});
on("change:icon1-5-count change:icon2-5-count change:icon3-5-count change:icon4-5-count change:icon5-5-count change:icon1-6-count change:icon2-6-count change:icon3-6-count change:icon4-6-count change:icon5-6-count", function() {
getAttrs(["icon1-5-count","icon2-5-count","icon3-5-count","icon4-5-count","icon5-5-count","icon1-6-count","icon2-6-count","icon3-6-count","icon4-6-count","icon5-6-count"], function(v) {
var setAttrsObj = {},
inputs = ["icon1-5-count","icon2-5-count","icon3-5-count","icon4-5-count","icon5-5-count","icon1-6-count","icon2-6-count","icon3-6-count","icon4-6-count","icon5-6-count"];
_.each(inputs, function(input) {
if(typeof v[input] === "undefined" || (""+v[input]).trim() === "") {
setAttrsObj[input.substr(0, input.indexOf("-count"))] = "0";
}
else if(v[input] && isNaN(v[input]) === false && (""+v[input]).trim() !== "0") {
setAttrsObj[input.substr(0, input.indexOf("-count"))] = "on";
setAttrsObj[input] = (typeof v[input] === "String") ? v[input].trim() : v[input];
}
else {
setAttrsObj[input.substr(0, input.indexOf("-count"))] = "0";
setAttrsObj[input] = 0;
}
});
setAttrs(setAttrsObj);
});
});
/* === FUNCTIONS === */
// === Level
var updateLvl = function() {
getAttrs(["level","M-MISS","R-MISS"], function (v) {
var mlt = 1, mmiss = 0, rmiss = 0, newlvl = parseInt(v["level"]) || 1;
if (newlvl > 7) {mlt=3;}
else if (newlvl > 4) {mlt=2;}
if (v["M-MISS"] != "0") {mmiss = newlvl;}
if (v["R-MISS"] != "0") {rmiss = newlvl;}
setAttrs({
"LVL-multiplier": mlt,
"MBA-miss": mmiss,
"RBA-miss": rmiss
});
});
};
// === AC
var updateAc = function() {
getAttrs(["level","AC-base","CON-mod","DEX-mod","WIS-mod"], function(v){
var modarr = _.sortBy([parseInt(v["CON-mod"]),parseInt(v["DEX-mod"]),parseInt(v["WIS-mod"])], function(num) {return num;});
setAttrs({"AC": parseInt(v["AC-base"])+parseInt(v["level"])+modarr[1]});
});
};
// === PD
var updatePd = function() {
getAttrs(["level","PD-base","STR-mod","CON-mod","DEX-mod"], function(v){
var modarr = _.sortBy([parseInt(v["STR-mod"]),parseInt(v["CON-mod"]),parseInt(v["DEX-mod"])], function(num) {return num;});
setAttrs({"PD": parseInt(v["PD-base"])+parseInt(v["level"])+modarr[1]});
});
};
// === MD
var updateMd = function() {
getAttrs(["level","MD-base","INT-mod","WIS-mod","CHA-mod"], function(v){
var modarr = _.sortBy([parseInt(v["INT-mod"]),parseInt(v["WIS-mod"]),parseInt(v["CHA-mod"])], function(num) {return num;});
setAttrs({"MD": parseInt(v["MD-base"])+parseInt(v["level"])+modarr[1]});
});
};
// === HP
var updateHp = function() {
getAttrs(["level","HP-base","HP-mod","CON-mod"], function(v){
var lvl = 0, mod4 = 0, hpmulti = 0, hpmax = 0;
lvl = parseInt(v["level"]) || 1;
mod4 = lvl % 4;
hpmulti = lvl + 2 + (Math.floor(lvl/4) * mod4) + (Math.floor(lvl/8) * (6 + mod4));
hpmax = ((parseInt(v["HP-base"])+parseInt(v["CON-mod"])) * hpmulti) + parseInt(v["HP-mod"]);
setAttrs({
"HP_max": hpmax,
"HP-staggered": Math.floor(hpmax/2)
});
});
};
// === Recovery
var updateRec = function () {
getAttrs(["level","CON-mod","REC-bonus","REC-mod"], function(v){
var mlt = 1, lvl = parseInt(v["level"]) || 1, oldrec = parseInt(v["REC-bonus"]) || 0;
if (lvl > 7) {mlt=3;}
else if (lvl > 4) {mlt=2;}
setAttrs({"REC-bonus": (parseInt(v["CON-mod"]) || 0) * mlt + (parseInt(v["REC-mod"]) || 0)});
});
};
// === Background
var updateBckgrd = function(bcknb) {
getAttrs(["BACK"+bcknb,"BACK-name"+bcknb], function (v) {
var backval = parseInt(v["BACK"+bcknb]) || 0;
setAttrs({"BACK-final": "[[" + backval + "]][BCK]]]}} {{back=" + v["BACK-name"+bcknb] + "}} {{back_bonus="+ backval + "}}"});
});
};
// === Powers
// All Powers
var updateAllPowers = function() {
getSectionIDs("repeating_power", function(idarray) {
_.each(idarray, function(pid) {
updatePower(pid);
});
});
};
// Single Power
var updatePower = function(pid) {
var vid = "";
if (typeof pid !== "undefined") {
vid = "_" + pid;
}
getAttrs(["STR-mod","DEX-mod","CON-mod","INT-mod","CHA-mod","WIS-mod","level","MWEAP-mod1","MWEAP-mod2","MWEAP-mod3","RWEAP-mod1","RWEAP-mod2","RWEAP-mod3","repeating_power"+vid+"_name","repeating_power"+vid+"_type","repeating_power"+vid+"_type-custom","repeating_power"+vid+"_uses","repeating_power"+vid+"_action","repeating_power"+vid+"_action-type","repeating_power"+vid+"_action-custom","repeating_power"+vid+"_range","repeating_power"+vid+"_range-type","repeating_power"+vid+"_range-custom","repeating_power"+vid+"_target","repeating_power"+vid+"_target-type","repeating_power"+vid+"_attack","repeating_power"+vid+"_attack-type","repeating_power"+vid+"_attack-custom","repeating_power"+vid+"_attack-vstype","repeating_power"+vid+"_attack-vscustom","repeating_power"+vid+"_cust1","repeating_power"+vid+"_cust1-type","repeating_power"+vid+"_cust1-custom","repeating_power"+vid+"_cust1-subcust1","repeating_power"+vid+"_cust1-subcust2","repeating_power"+vid+"_cust1-subcust3","repeating_power"+vid+"_cust1-subcust4","repeating_power"+vid+"_cust1-subcust1-desc","repeating_power"+vid+"_cust1-subcust2-desc","repeating_power"+vid+"_cust1-subcust3-desc","repeating_power"+vid+"_cust1-subcust4-desc","repeating_power"+vid+"_cust2","repeating_power"+vid+"_cust2-type","repeating_power"+vid+"_cust2-custom","repeating_power"+vid+"_cust2-subcust1","repeating_power"+vid+"_cust2-subcust2","repeating_power"+vid+"_cust2-subcust3","repeating_power"+vid+"_cust2-subcust4","repeating_power"+vid+"_cust2-subcust1-desc","repeating_power"+vid+"_cust2-subcust2-desc","repeating_power"+vid+"_cust2-subcust3-desc","repeating_power"+vid+"_cust2-subcust4-desc","repeating_power"+vid+"_cust3","repeating_power"+vid+"_cust3-type","repeating_power"+vid+"_cust3-custom","repeating_power"+vid+"_cust3-subcust1","repeating_power"+vid+"_cust3-subcust2","repeating_power"+vid+"_cust3-subcust3","repeating_power"+vid+"_cust3-subcust4","repeating_power"+vid+"_cust3-subcust1-desc","repeating_power"+vid+"_cust3-subcust2-desc","repeating_power"+vid+"_cust3-subcust3-desc","repeating_power"+vid+"_cust3-subcust4-desc","repeating_power"+vid+"_classtype","race","repeating_power"+vid+"_rechargerate"], function(v) {
var str = parseInt(v["STR-mod"]) || 0
dex = parseInt(v["DEX-mod"]) || 0,
con = parseInt(v["CON-mod"]) || 0,
int = parseInt(v["INT-mod"]) || 0,
wis = parseInt(v["WIS-mod"]) || 0,
cha = parseInt(v["CHA-mod"]) || 0,
mweap1 = parseInt(v["MWEAP-mod1"]) || 0,
mweap2 = parseInt(v["MWEAP-mod2"]) || 0,
mweap3 = parseInt(v["MWEAP-mod3"]) || 0,
rweap1 = parseInt(v["RWEAP-mod1"]) || 0,
rweap2 = parseInt(v["RWEAP-mod2"]) || 0,
rweap3 = parseInt(v["RWEAP-mod3"]) || 0,
level = parseInt(v["level"]) || 1
type = "",
action = "",
range = "",
attack = 0,
attackvs = "",
vs = "",
cust1type = "",
cust2type = "",
cust3type = "",
roll = "&{template:power} {{name=" + v["repeating_power"+vid+"_name"] + "}}";
// === Power Roll & Display
// TYPE
switch(v["repeating_power"+vid+"_type"]) {
case "atwill":
type = i18n_atwill;
roll += " {{atwill=1}} {{type=" + type + "}}";
break;
case "class":
switch(v["repeating_power"+vid+"_classtype"]) {
case "Talent":
type = i18n_talent;
break;
case "Feature":
type = i18n_feature;
break;
case "Power":
type = i18n_power;
break;
case "Battle Cry":
type = i18n_battlecry;
break;
case "Domain":
type = i18n_domain;
break;
}
roll += " {{class=1}} {{type=" + type + "}}";
break;
case "racial":
type = v.race;
roll += " {{racial-encounter=1}} {{type=" + v.race + "}}";
break;
case "encounter":
type = i18n_encounter;
roll += " {{racial-encounter=1}} {{type=" + type + "}}";
break;
case "recharge":
type = i18n_recharge + " +" + v["repeating_power"+vid+"_rechargerate"];
roll += " {{recharge-daily=1}} {{type=" + v["repeating_power"+vid+"_rechargerate"] + "+}}";
break;
case "daily":
type = i18n_daily;
roll += " {{recharge-daily=1}} {{type=" + type + "}}";
break;
case "spell":
type = i18n_spell;
roll += " {{spell=1}} {{type=" + type + "}}";
break;
case "magicitem":
type = i18n_magicitem;
roll += " {{magicitem=1}} {{type=" + type + "}}";
break;
case "custom":
type = v["repeating_power"+vid+"_type-custom"];
roll += " {{typecustom=1}} {{type=" + type + "}}";
break;
default:
type = i18n_atwill;
roll += " {{atwill=1}} {{type=" + type + "}}";
}
// Action and/or Range roll template line
if ((v["repeating_power"+vid+"_action"] == "1") || (v["repeating_power"+vid+"_range"] == "1")) {
roll +=" {{action-range-flag=1}}";
}
// ACTION
if (v["repeating_power"+vid+"_action"] == "1") {
switch(v["repeating_power"+vid+"_action-type"]) {
case "Standard Action":
action = i18n_standardaction;
break;
case "Move Action":
action = i18n_moveaction;
break;
case "Quick Action":
action = i18n_quickaction;
break;
case "Free Action":
action = i18n_freeaction;
break;
case "Flexible Action":
action = i18n_flexibleaction;
break;
case "Custom":
action = v["repeating_power"+vid+"_action-custom"];
break;
default:
action = i18n_standardaction;
}
roll += " {{action=" + action + "}}";
}
// RANGE
if(v["repeating_power"+vid+"_range"] == "1") {
switch(v["repeating_power"+vid+"_range-type"]) {
case "Engaged":
range = i18n_engaged;
break;
case "Nearby":
range = i18n_nearby;
break;
case "Far Away":
range = i18n_faraway;
break;
case "Intercepting":
range = i18n_intercepting;
break;
case "Line of Sight":
range = i18n_lineofsight;
break;
case "Custom":
range = v["repeating_power"+vid+"_range-custom"];
break;
default:
range = i18n_engaged;
}
roll += " {{range=" + range + "}}";
}
//TARGET
if(v["repeating_power"+vid+"_target"] == "1") {
roll += " {{target=" + v["repeating_power"+vid+"_target-type"] + "}}";
}
// ATTACK
if(v["repeating_power"+vid+"_attack"] == "1") {
roll += " {{attack=1}} {{attbonus=[[1d20+";
switch(v["repeating_power"+vid+"_attack-type"]) {
case "STR":
attack = str + level;
roll += "" + str + "[" + i18n_stru +"]+" + level + "["+ i18n_lvlu + "]";
break;
case "CON":
attack = con + level;
roll += "" + con + "[" + i18n_conu + "]+" + level + "["+ i18n_lvlu + "]";
break;
case "DEX":
attack = dex + level;
roll += "" + dex + "[" + i18n_dexu + "]+" + level + "["+ i18n_lvlu + "]";
break;
case "INT":
attack = int + level;
roll += "" + int + "[" + i18n_intu + "]+" + level + "["+ i18n_lvlu + "]";
break;
case "WIS":
attack = wis + level
roll += "" + wis + "[" + i18n_wisu + "]+" + level + "["+ i18n_lvlu + "]";
break;
case "CHA":
attack = cha + level;
roll += "" + cha + "[" + i18n_chau + "]+" + level + "["+ i18n_lvlu + "]";
break;
case "MWEAP1":
attack = str + level + mweap1;
roll += "" + str + "[" + i18n_stru +"]+" + level + "["+ i18n_lvlu + "]+" + mweap1 + "[" + i18n_weapu + "]";
break;
case "MWEAP2":
attack = str + level + mweap2;
roll += "" + str + "[" + i18n_stru +"]+" + level + "["+ i18n_lvlu + "]+" + mweap2 + "[" + i18n_weapu + "]";
break;
case "MWPEA3":
attack = str + level + mweap3;
roll += "" + str + "[" + i18n_stru +"]+" + level + "["+ i18n_lvlu + "]+" + mweap3 + "[" + i18n_weapu + "]";
break;
case "RWEAP1":
attack = dex + level + rweap1;
roll += "" + dex + "[" + i18n_dexu + "]+" + level + "["+ i18n_lvlu + "]+" + rweap1 + "[" + i18n_weapu + "]";
break;
case "RWEAP2":
attack = dex + level + rweap2;
roll += "" + dex + "[" + i18n_dexu + "]+" + level + "["+ i18n_lvlu + "]+" + rweap2 + "[" + i18n_weapu + "]";
break;
case "RWEAP3":
attack = dex + level + rweap3;
roll += "" + dex + "[" + i18n_dexu + "]+" + level + "["+ i18n_lvlu + "]+" + rweap3 + "[" + i18n_weapu + "]";
break;
case "CUSTOM":
attack = parseInt(v["repeating_power"+vid+"_attack-custom"]) || 0;
roll += v["repeating_power"+vid+"_attack-custom"];
break;
default:
roll += "0[" + i18n_unknownu + "]";
break;
}
roll += "+?{" + i18n_modifiers + "|0}[" + i18n_modu + "]+@{E-DIE}]]}}";
// VS
switch(v["repeating_power"+vid+"_attack-vstype"]) {
case "AC":
vs = i18n_acu;
break;
case "PD":
vs = i18n_pdu;
break;
case "MD":
vs = i18n_mdu;
break;
case "CUSTOM":
vs = v["repeating_power"+vid+"_attack-vscustom"];
break;
default:
vs = i18n_acu;
}
roll +=" {{vstype=" + vs + "}}";
attackvs = (attack < 0 ? "" : "+") + attack + " " + i18n_vs + " " + vs;
}
// CUSTOM 1
if(v["repeating_power"+vid+"_cust1"] == "1") {
roll += " {{cust1=1}} {{" + v["repeating_power"+vid+"_cust1-type"] + "-1=1}}";
switch(v["repeating_power"+vid+"_cust1-type"]) {
case "Hit":
cust1type = i18n_hit;
break;
case "Miss":
cust1type = i18n_miss;
break;
case "Trigger":
cust1type = i18n_trigger;
break;
case "Effect":
cust1type = i18n_effect;
break;
case "Improved":
cust1type = i18n_improved;
break;
case "Sustain":
cust1type = i18n_sustain;
break;
case "Special":
cust1type = i18n_special;
break;
case "Opening-Sustaining-Effect":
cust1type = i18n_opening;
break;
case "Final-Verse":
cust1type = i18n_finalverse;
break;
case "Details":
cust1type = i18n_details;
break;
case "typecustom":
cust1type = v["repeating_power"+vid+"_cust1-custom"];
roll += " {{custype1=" + cust1type + "}}";
break;
default:
cust1type = i18n_hit;
}
cust1type += ":";
if(v["repeating_power"+vid+"_cust1-subcust1"] == "1") {
roll += " {{cust1-subcust1=1}} {{cust1-subcust1-desc=" + v["repeating_power"+vid+"_cust1-subcust1-desc"] + "}}";
}
if(v["repeating_power"+vid+"_cust1-subcust2"] == "1") {
roll += " {{cust1-subcust2=1}} {{cust1-subcust2-desc=" + v["repeating_power"+vid+"_cust1-subcust2-desc"] + "}}";
}
if(v["repeating_power"+vid+"_cust1-subcust3"] == "1") {
roll += " {{cust1-subcust3=1}} {{cust1-subcust3-desc=" + v["repeating_power"+vid+"_cust1-subcust3-desc"] + "}}";
}
if(v["repeating_power"+vid+"_cust1-subcust4"] == "1") {
roll += " {{cust1-subcust4=1}} {{cust1-subcust4-desc=" + v["repeating_power"+vid+"_cust1-subcust4-desc"] + "}}";
}
}
// CUSTOM 2
if(v["repeating_power"+vid+"_cust2"] == "1") {
roll += " {{cust2=1}} {{" + v["repeating_power"+vid+"_cust2-type"] + "-2=1}}";
switch(v["repeating_power"+vid+"_cust2-type"]) {
case "Hit":
cust2type = i18n_hit;
break;
case "Miss":
cust2type = i18n_miss;
break;
case "Trigger":
cust2type = i18n_trigger;
break;
case "Effect":
cust2type = i18n_effect;
break;
case "Improved":
cust2type = i18n_improved;
break;
case "Sustain":
cust2type = i18n_sustain;
break;
case "Special":
cust2type = i18n_special;
break;
case "Opening-Sustaining-Effect":
cust2type = i18n_opening;
break;
case "Final-Verse":
cust2type = i18n_finalverse;
break;
case "Details":
cust2type = i18n_details;
break;
case "typecustom":
cust2type = v["repeating_power"+vid+"_cust2-custom"];
roll += " {{custype2=" + cust2type + "}}";
break;
default:
cust2type = i18n_hit;
}
cust2type += ":";
if(v["repeating_power"+vid+"_cust2-subcust1"] == "1") {
roll += " {{cust2-subcust1=1}} {{cust2-subcust1-desc=" + v["repeating_power"+vid+"_cust2-subcust1-desc"] + "}}";
}
if(v["repeating_power"+vid+"_cust2-subcust2"] == "1") {
roll += " {{cust2-subcust2=1}} {{cust2-subcust2-desc=" + v["repeating_power"+vid+"_cust2-subcust2-desc"] + "}}";
}
if(v["repeating_power"+vid+"_cust2-subcust3"] == "1") {
roll += " {{cust2-subcust3=1}} {{cust2-subcust3-desc=" + v["repeating_power"+vid+"_cust2-subcust3-desc"] + "}}";
}
if(v["repeating_power"+vid+"_cust2-subcust4"] == "1") {
roll += " {{cust2-subcust4=1}} {{cust2-subcust4-desc=" + v["repeating_power"+vid+"_cust2-subcust4-desc"] + "}}";
}
}
// CUSTOM 3
if(v["repeating_power"+vid+"_cust3"] == "1") {
roll += " {{cust3=1}} {{" + v["repeating_power"+vid+"_cust3-type"] + "-3=1}}";
switch(v["repeating_power"+vid+"_cust3-type"]) {
case "Hit":
cust3type = i18n_hit;
break;
case "Miss":
cust3type = i18n_miss;
break;
case "Trigger":
cust3type = i18n_trigger;
break;
case "Effect":
cust3type = i18n_effect;
break;
case "Improved":
cust3type = i18n_improved;
break;
case "Sustain":
cust3type = i18n_sustain;
break;
case "Special":
cust3type = i18n_special;
break;
case "Opening-Sustaining-Effect":
cust3type = i18n_opening;
break;
case "Final-Verse":
cust3type = i18n_finalverse;
break;
case "Details":
cust3type = i18n_details;
break;
case "typecustom":
cust3type = v["repeating_power"+vid+"_cust3-custom"];
roll += " {{custype3=" + cust3type + "}}";
break;
default:
cust3type = i18n_hit;
}
cust3type += ":";
if(v["repeating_power"+vid+"_cust3-subcust1"] == "1") {
roll += " {{cust3-subcust1=1}} {{cust3-subcust1-desc=" + v["repeating_power"+vid+"_cust3-subcust1-desc"] + "}}";
}
if(v["repeating_power"+vid+"_cust3-subcust2"] == "1") {
roll += " {{cust3-subcust2=1}} {{cust3-subcust2-desc=" + v["repeating_power"+vid+"_cust3-subcust2-desc"] + "}}";
}
if(v["repeating_power"+vid+"_cust3-subcust3"] == "1") {
roll += " {{cust3-subcust3=1}} {{cust3-subcust3-desc=" + v["repeating_power"+vid+"_cust3-subcust3-desc"] + "}}";
}
if(v["repeating_power"+vid+"_cust3-subcust4"] == "1") {
roll += " {{cust3-subcust4=1}} {{cust3-subcust4-desc=" + v["repeating_power"+vid+"_cust3-subcust4-desc"] + "}}";
}
}
// UPDATE
var obj = {};
obj["repeating_power"+vid+"_power-roll"] = roll;
obj["repeating_power"+vid+"_powname-display"] = v["repeating_power"+vid+"_name"];
obj["repeating_power"+vid+"_type-display"] = type;
obj["repeating_power"+vid+"_action-display"] = action;
obj["repeating_power"+vid+"_range-display"] = range;
obj["repeating_power"+vid+"_target-display"] = v["repeating_power"+vid+"_target-type"];
obj["repeating_power"+vid+"_attack-display"] = attackvs;
obj["repeating_power"+vid+"_cust1-display"] = cust1type;
obj["repeating_power"+vid+"_cust1-subcust1-display"] = v["repeating_power"+vid+"_cust1-subcust1-desc"];
obj["repeating_power"+vid+"_cust1-subcust2-display"] = v["repeating_power"+vid+"_cust1-subcust2-desc"];
obj["repeating_power"+vid+"_cust1-subcust3-display"] = v["repeating_power"+vid+"_cust1-subcust3-desc"];
obj["repeating_power"+vid+"_cust1-subcust4-display"] = v["repeating_power"+vid+"_cust1-subcust4-desc"];
obj["repeating_power"+vid+"_cust2-display"] = cust2type;
obj["repeating_power"+vid+"_cust2-subcust1-display"] = v["repeating_power"+vid+"_cust2-subcust1-desc"];
obj["repeating_power"+vid+"_cust2-subcust2-display"] = v["repeating_power"+vid+"_cust2-subcust2-desc"];
obj["repeating_power"+vid+"_cust2-subcust3-display"] = v["repeating_power"+vid+"_cust2-subcust3-desc"];
obj["repeating_power"+vid+"_cust2-subcust4-display"] = v["repeating_power"+vid+"_cust2-subcust4-desc"];
obj["repeating_power"+vid+"_cust3-display"] = cust3type;
obj["repeating_power"+vid+"_cust3-subcust1-display"] = v["repeating_power"+vid+"_cust3-subcust1-desc"];
obj["repeating_power"+vid+"_cust3-subcust2-display"] = v["repeating_power"+vid+"_cust3-subcust2-desc"];
obj["repeating_power"+vid+"_cust3-subcust3-display"] = v["repeating_power"+vid+"_cust3-subcust3-desc"];
obj["repeating_power"+vid+"_cust3-subcust4-display"] = v["repeating_power"+vid+"_cust3-subcust4-desc"];
setAttrs(obj);
});
};
// === Weapons
// Selected Melee weapon
var updateMeleeWeapon = function(i) {
var mwsel = parseInt(i) || 1;
getAttrs(["level","MWEAP-mod"+mwsel,"MWEAP"+mwsel,"M-BAMOD","STR-mod","DEX-mod","LVL-multiplier"], function(v) {
var str = parseInt(v["STR-mod"]) || 0,
dex = parseInt(v["DEX-mod"]) || 0,
mweap = parseInt(v["MWEAP-mod"+mwsel]) || 0,
level = parseInt(v["level"]) || 1,
lvlmultiplier = parseInt(v["LVL-multiplier"]) || 1,
mattmod = v["M-BAMOD"] === "@{STR-mod}" ? str : dex,
mattackvs = "",
mhit = "",
mfinal = "";
mfinal = "{{wname=@{MWEAP-name"+mwsel+"}}} {{attbonus=[[1d20+[[@{M-BAMOD}]][MMOD]+@{level}[LVL]+@{MWEAP-mod"+mwsel+"}[WEAP]+?{Modifiers|0}[MOD]+@{E-DIE}]]}} {{damage=[[@{level}d[[@{MWEAP"+mwsel+"}]]+@{MWEAP-mod"+mwsel+"}[WEAP]+[[(@{M-BAMOD}*@{LVL-multiplier})]]]]}}";
mattackvs = (parseInt(level + mattmod + mweap) < 0 ? "" : "+") + (level + mattmod + mweap) + " " + i18n_vs + " " + i18n_acu;
mhit = level + "d" + v["MWEAP"+mwsel] + (((mattmod*lvlmultiplier)+mweap) < 0 ? "" : "+") + ((mattmod*lvlmultiplier)+mweap);
setAttrs({
"MWEAP-final": mfinal,
"MBA-attackvs": mattackvs,
"MBA-hit": mhit,
});
});
};
// Selected Range weapon
var updateRangeWeapon = function(i) {
var rwsel = parseInt(i) || 1;
getAttrs(["level","RWEAP-mod"+rwsel,"RWEAP"+rwsel,"R-BAMOD","STR-mod","DEX-mod","LVL-multiplier"], function(v) {
var str = parseInt(v["STR-mod"]) || 0,
dex = parseInt(v["DEX-mod"]) || 0,
rweap = parseInt(v["RWEAP-mod"+rwsel]) || 0,
level = parseInt(v["level"]) || 1,
lvlmultiplier = parseInt(v["LVL-multiplier"]) || 1,
rattmod = v["R-BAMOD"] === "@{STR-mod}" ? str : dex,
rattackvs = "",
rhit = "",
rfinal = "";
rfinal = "{{wname=@{RWEAP-name"+rwsel+"}}} {{attbonus=[[1d20+[[@{R-BAMOD}]][RMOD]+@{level}[LVL]+@{RWEAP-mod"+rwsel+"}[WEAP]+?{Modifiers|0}[MOD]+@{E-DIE}]]}} {{damage=[[@{level}d[[@{RWEAP"+rwsel+"}]]+@{RWEAP-mod"+rwsel+"}[WEAP]+[[(@{R-BAMOD}*@{LVL-multiplier})]]]]}}";
rattackvs = (parseInt(level + rattmod + rweap) < 0 ? "" : "+") + (level + rattmod + rweap) + " " + i18n_vs + " " + i18n_acu;
rhit = level + "d" + v["RWEAP"+rwsel] + (parseInt((rattmod*lvlmultiplier)+rweap) < 0 ? "" : "+") + ((rattmod*lvlmultiplier)+rweap);
setAttrs({
"RWEAP-final": rfinal,
"RBA-attackvs": rattackvs,
"RBA-hit": rhit
});
});
};
// === Version and updating
var upgrade_to_2_0 = function(doneupdating) {
getAttrs(["level","REC-bonus","STR-base","CON-base","DEX-base","INT-base","WIS-base","CHA-base"], function(vat) {
var setAttrsObj = {},
conmod = Math.floor((parseInt(vat["CON-base"]) - 10) / 2),
mlt = 1,
lvl = parseInt(vat["level"]) || 1,
oldrec = parseInt(vat["REC-bonus"]) || 0;
if (lvl > 7) {mlt=3;}
else if (lvl > 4) {mlt=2;}
setAttrsObj["REC-mod"] = Math.max(oldrec - (conmod * mlt),0);
setAttrsObj["STR-mod"] = Math.floor((parseInt(vat["STR-base"]) - 10) / 2);
setAttrsObj["CON-mod"] = conmod;
setAttrsObj["DEX-mod"] = Math.floor((parseInt(vat["DEX-base"]) - 10) / 2);
setAttrsObj["INT-mod"] = Math.floor((parseInt(vat["INT-base"]) - 10) / 2);
setAttrsObj["WIS-mod"] = Math.floor((parseInt(vat["WIS-base"]) - 10) / 2);
setAttrsObj["CHA-mod"] = Math.floor((parseInt(vat["CHA-base"]) - 10) / 2);
getSectionIDs("repeating_power", function(idarray) {
var attrs = [];
_.each(idarray, function(pid) {
attrs.push("repeating_power_" + pid + "_type");
attrs.push("repeating_power_" + pid + "_action");
attrs.push("repeating_power_" + pid + "_action-type");
attrs.push("repeating_power_" + pid + "_range");
attrs.push("repeating_power_" + pid + "_range-type");
attrs.push("repeating_power_" + pid + "_target");
attrs.push("repeating_power_" + pid + "_attack");
attrs.push("repeating_power_" + pid + "_attack-type");
attrs.push("repeating_power_" + pid + "_attack-vstype");
attrs.push("repeating_power_" + pid + "_cust1");
attrs.push("repeating_power_" + pid + "_cust1-type");
attrs.push("repeating_power_" + pid + "_cust1-subcust1");
attrs.push("repeating_power_" + pid + "_cust1-subcust2");
attrs.push("repeating_power_" + pid + "_cust1-subcust3");
attrs.push("repeating_power_" + pid + "_cust1-subcust4");
attrs.push("repeating_power_" + pid + "_cust2");
attrs.push("repeating_power_" + pid + "_cust2-type");
attrs.push("repeating_power_" + pid + "_cust2-subcust1");
attrs.push("repeating_power_" + pid + "_cust2-subcust2");
attrs.push("repeating_power_" + pid + "_cust2-subcust3");
attrs.push("repeating_power_" + pid + "_cust2-subcust4");
attrs.push("repeating_power_" + pid + "_cust3");
attrs.push("repeating_power_" + pid + "_cust3-type");
attrs.push("repeating_power_" + pid + "_cust3-subcust1");
attrs.push("repeating_power_" + pid + "_cust3-subcust2");
attrs.push("repeating_power_" + pid + "_cust3-subcust3");
attrs.push("repeating_power_" + pid + "_cust3-subcust4");
});
getAttrs(attrs, function (v){
var endat = "";
_.each(attrs, function(attr) {
endat = attr.substr(attr.lastIndexOf("_")+1,attr.length-attr.lastIndexOf("_")+1);
switch(endat) {
case "type":
switch(v[attr]){
case "{{atwill=1}} {{type=At-Will}}":
setAttrsObj[attr] = "atwill";
break;
case "{{class=1}} {{type=@{classtype}}}":
setAttrsObj[attr] = "class";
break;
case "{{racial-encounter=1}} {{type=@{race}}}":
setAttrsObj[attr] = "racial";
break;
case "{{racial-encounter=1}} {{type=Encounter}}":
setAttrsObj[attr] = "encounter";
break;
case "{{recharge-daily=1}} {{type=@{rechargerate}+}}":
setAttrsObj[attr] = "recharge";
break;
case "{{recharge-daily=1}} {{type=Daily}}":
setAttrsObj[attr] = "daily";
break;
case "{{spell=1}} {{type=Spell}}":
setAttrsObj[attr] = "spell";
break;
case "{{magicitem=1}} {{type=Magic Item}}":
setAttrsObj[attr] = "magicitem";
break;
case "{{typecustom=1}} {{type=@{type-custom}}}":
setAttrsObj[attr] = "custom";
break;
default:
setAttrsObj[attr] = "atwill";
}
break;
case "action":
if(v[attr] == "{{action-range-flag=1}} {{action=@{action-type}}}") {setAttrsObj[attr] = "1"}
break;
case "action-type":
if(v[attr] == "@{action-custom}") {setAttrsObj[attr] = "Custom"}
break;
case "range":
if(v[attr] == "{{action-range-flag=1}} {{range=@{range-type}}}") {setAttrsObj[attr] = "1"}
break;
case "range-type":
if(v[attr] == "@{range-custom}") {setAttrsObj[attr] = "Custom"}
break;
case "target":
if(v[attr] == "{{target=@{target-type}}}") {setAttrsObj[attr] = "1"}
break;
case "attack":
if(v[attr] == "{{attack=1}} {{attbonus=[[1d20+@{attack-type}+?{Modifiers|0}[MOD]+@{E-DIE}]]}} {{vstype=@{attack-vstype}}}") {setAttrsObj[attr] = "1"}
break;
case "attack-type":
switch(v[attr]){
case "[[@{STR-mod}]][STR]+@{level}[LVL]":
setAttrsObj[attr] = "STR";
break;
case "[[@{DEX-mod}]][DEX]+@{level}[LVL]":
setAttrsObj[attr] = "DEX";
break;
case "[[@{INT-mod}]][INT]+@{level}[LVL]":
setAttrsObj[attr] = "INT";
break;
case "[[@{CHA-mod}]][CHA]+@{level}[LVL]":
setAttrsObj[attr] = "CHA";
break;
case "[[@{WIS-mod}]][WIS]+@{level}[LVL]":
setAttrsObj[attr] = "WIS";
break;
case "[[@{CON-mod}]][CON]+@{level}[LVL]":
setAttrsObj[attr] = "CON";
break;
case "[[@{STR-mod}]][STR]+@{level}[LVL]+@{MWEAP-mod1}[WEAP]":
setAttrsObj[attr] = "MWEAP1";
break;
case "[[@{STR-mod}]][STR]+@{level}[LVL]+@{MWEAP-mod2}[WEAP]":
setAttrsObj[attr] = "MWEAP2";
break;
case "[[@{STR-mod}]][STR]+@{level}[LVL]+@{MWEAP-mod3}[WEAP]":
setAttrsObj[attr] = "MWPEA3";
break;
case "[[@{DEX-mod}]][DEX]+@{level}[LVL]+@{RWEAP-mod1}[WEAP]":
setAttrsObj[attr] = "RWEAP1";
break;
case "[[@{DEX-mod}]][DEX]+@{level}[LVL]+@{RWEAP-mod2}[WEAP]":
setAttrsObj[attr] = "RWEAP2";
break;
case "[[@{DEX-mod}]][DEX]+@{level}[LVL]+@{RWEAP-mod3}[WEAP]":
setAttrsObj[attr] = "RWEAP3";
break;
case "@{attack-custom}":
setAttrsObj[attr] = "CUSTOM";
break;
default:
setAttrsObj[attr] = "STR";
}
break;
case "cust1":
if(v[attr] == "{{cust1=1}} {{@{cust1-type}-1=1}} @{cust1-subcust1} @{cust1-subcust2} @{cust1-subcust3} @{cust1-subcust4}") {setAttrsObj[attr] = "1"}
break;
case "cust1-type":
if(v[attr] == "@{cust1-custom}") {setAttrsObj[attr] = "typecustom"}
break;
case "cust1-subcust1":
if(v[attr] == "{{cust1-subcust1=1}} {{cust1-subcust1-desc=@{cust1-subcust1-desc}}}") {setAttrsObj[attr] = "1"}
break;
case "cust1-subcust2":
if(v[attr] == "{{cust1-subcust2=1}} {{cust1-subcust2-desc=@{cust1-subcust2-desc}}}") {setAttrsObj[attr] = "1"}
break;
case "cust1-subcust3":
if(v[attr] == "{{cust1-subcust3=1}} {{cust1-subcust3-desc=@{cust1-subcust3-desc}}}") {setAttrsObj[attr] = "1"}
break;
case "cust1-subcust4":
if(v[attr] == "{{cust1-subcust4=1}} {{cust1-subcust4-desc=@{cust1-subcust4-desc}}}") {setAttrsObj[attr] = "1"}
break;
case "cust2":
if(v[attr] == "{{cust2=1}} {{@{cust2-type}-2=1}} @{cust2-subcust1} @{cust2-subcust2} @{cust2-subcust3} @{cust2-subcust4}") {setAttrsObj[attr] = "1"}
break;
case "cust2-type":
if(v[attr] == "@{cust2-custom}") {setAttrsObj[attr] = "typecustom"}
break;
case "cust2-subcust1":
if(v[attr] == "{{cust2-subcust1=1}} {{cust2-subcust1-desc=@{cust2-subcust1-desc}}}") {setAttrsObj[attr] = "1"}
break;
case "cust2-subcust2":
if(v[attr] == "{{cust2-subcust2=1}} {{cust2-subcust2-desc=@{cust2-subcust2-desc}}}") {setAttrsObj[attr] = "1"}
break;
case "cust2-subcust3":
if(v[attr] == "{{cust2-subcust3=1}} {{cust2-subcust3-desc=@{cust2-subcust3-desc}}}") {setAttrsObj[attr] = "1"}
break;
case "cust2-subcust4":
if(v[attr] == "{{cust2-subcust4=1}} {{cust2-subcust4-desc=@{cust2-subcust4-desc}}}") {setAttrsObj[attr] = "1"}
break;
case "cust3":
if(v[attr] == "{{cust3=1}} {{@{cust3-type}-3=1}} @{cust3-subcust1} @{cust3-subcust2} @{cust3-subcust3} @{cust3-subcust4}") {setAttrsObj[attr] = "1"}
break;
case "cust3-type":
if(v[attr] == "@{cust3-custom}") {setAttrsObj[attr] = "typecustom"}
break;
case "cust3-subcust1":
if(v[attr] == "{{cust3-subcust1=1}} {{cust3-subcust1-desc=@{cust3-subcust1-desc}}}") {setAttrsObj[attr] = "1"}
break;
case "cust3-subcust2":
if(v[attr] == "{{cust3-subcust2=1}} {{cust3-subcust2-desc=@{cust3-subcust2-desc}}}") {setAttrsObj[attr] = "1"}
break;
case "cust3-subcust3":
if(v[attr] == "{{cust3-subcust3=1}} {{cust3-subcust3-desc=@{cust3-subcust3-desc}}}") {setAttrsObj[attr] = "1"}
break;
case "cust3-subcust4":
if(v[attr] == "{{cust3-subcust4=1}} {{cust3-subcust4-desc=@{cust3-subcust4-desc}}}") {setAttrsObj[attr] = "1"}
break;
}
});
setAttrs(setAttrsObj,{silent: true},function() {
updateLvl();
updateAc();
updatePd();
updateMd();
updateHp();
updateBckgrd(1);
updateRec();
updateMeleeWeapon(1);
updateRangeWeapon(1);
updateAllPowers();
doneupdating();
});
});
});
});
};
var versioning = function() {
getAttrs(["version"], function(v) {
var vrs = parseFloat(v["version"]) || 1.0;
if (vrs == 2.0) {
console.log("13th Age by Roll20 v" + vrs);
return;
} else if (vrs < 2.0) {
console.log("UPGRADING TO v2.0");
upgrade_to_2_0(function() {
setAttrs({"version": "2.0"});
versioning();
});
}
});
};
</script>