Files
roll20-character-sheets/Zafir/zafir.html
T
2024-06-03 13:15:14 -04:00

5166 lines
337 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<input type="hidden" class="tabstoggle" name="attr_sheetTypeToggle" value="charactersheet" />
<div class="charactersheet">
<input type="hidden" class="hideifone" name="attr_condensesheet" value="0"/>
<!-- Top Row: Logo, Character info, Class & Level info -->
<div class="main">
<div class="3colrow">
<div class="col">
<img style="max-height:100px;" src="https://raw.githubusercontent.com/RandyKnapp/roll20-character-sheets/master/Zafir/zafir-black-small.png" />
</div>
<div class="col">
<label data-i18n="Name:">Name:</label><input type="text" spellcheck="false" name="attr_char_name" />
<label data-i18n="Pronouns:">Pronouns:</label><input type="text" spellcheck="false" name="attr_char_pronouns" />
<input type="hidden" class="hideifone" name="attr_largeorigin" value="0"/>
<div><label data-i18n="Origin:">Origin:</label><input type="text" spellcheck="false" name="attr_char_origin" /></div>
<input type="hidden" class="hideifzero" name="attr_largeorigin" value="0"/>
<div><label data-i18n="Origin:">Origin:</label><input type="text" style="visibility:hidden;" /></div>
</div>
<div class="col">
<label data-i18n="Class:">Class:</label><input type="text" spellcheck="false" name="attr_class" />
<label data-i18n="Level:">Level:</label><input type="number" name="attr_level" value="1" /><br/>
<label data-i18n="XP:">XP:</label><input type="number" name="attr_xp" value="0" />
</div>
</div>
<input type="hidden" class="hideifzero" name="attr_largeorigin" value="0"/>
<div style="margin-left:310px;margin-right:16px;">
<textarea spellcheck="false" name="attr_char_origin" style="margin-bottom:-26px;position:relative;top:-10px;min-height:34px;"></textarea>
</div>
<hr/>
<!-- Second Row: Base Attributes, Combat Attributes, Status -->
<div class="3colrow attributes">
<div class="attrcol1">
<h3 data-i18n="Base Attributes">Base Attributes</h3>
<label class="iconlabel"><span style="font-family:Pictos">k</span></label>
<label data-i18n="Toughness:">Toughness:</label><input type="number" name="attr_toughness" value="0" /><br/>
<img class="focusicon" src="https://raw.githubusercontent.com/RandyKnapp/roll20-character-sheets/master/Zafir/agilitysymbol.png" />
<label data-i18n="Agility:">Agility:</label><input type="number" name="attr_agility" value="0" /><br/>
<img class="focusicon" src="https://raw.githubusercontent.com/RandyKnapp/roll20-character-sheets/master/Zafir/accuracysymbol.png" />
<label data-i18n="Accuracy:">Accuracy:</label><input type="number" name="attr_accuracy" value="0" /><br/>
<img class="focusicon" src="https://raw.githubusercontent.com/RandyKnapp/roll20-character-sheets/master/Zafir/focussymbol.png" />
<label data-i18n="Discipline:">Discipline:</label><input type="number" name="attr_discipline" value="0" />
</div>
<div class="attrcol2 combatattr">
<h3 data-i18n="Combat Attributes">Combat Attributes</h3>
<label data-i18n="Max HP:">Max HP:</label><span class="labellike attrvalue attrtotal" name="attr_hp_max"></span>
<span class="labellike attrvalue">=</span>
<span class="labellike attrvalue tooltip">2<span class="tooltiptext" data-i18n="Base HP Tooltip">Base HP: 2</span></span>
<span class="labellike attrvalue">+</span>
<span class="tooltip"><span class="labellike attrvalue" name="attr_halflevel"></span><span class="tooltiptext" data-i18n="Half Level Tooltip">Half Level</span></span>
<span class="labellike attrvalue">+</span>
<span class="tooltip"><span class="labellike attrvalue" name="attr_toughness"></span><span class="tooltiptext" data-i18n="Toughness">Toughness</span></span>
<span class="labellike attrvalue">+</span>
<span class="tooltip"><span class="labellike attrvalue" name="attr_bahp"></span><span class="tooltiptext" data-i18n="Body Armor Tooltip">Body Armor: HP</span></span>
<span class="labellike attrvalue">+</span>
<span class="tooltip"><input type="number" name="attr_maxhpother" value="0" /><span class="tooltiptext" data-i18n="Other">Other</span></span>
<br/>
<label data-i18n="Speed:">Speed:</label><span class="labellike attrvalue attrtotal" name="attr_speed"></span>
<span class="labellike attrvalue">=</span>
<span class="labellike attrvalue tooltip">6<span class="tooltiptext" data-i18n="Base Speed Tooltip">Base Speed: 6</span></span>
<span class="labellike attrvalue">+</span>
<span class="tooltip"><span class="labellike attrvalue" name="attr_doubleagility"></span><span class="tooltiptext" data-i18n="Double Agility Tooltip">Agility × 2</span></span>
<span class="labellike attrvalue">+</span>
<span class="tooltip"><input type="number" name="attr_speedother" value="0" /><span class="tooltiptext" data-i18n="Other">Other</span></span>
<br/>
<label data-i18n="Aim:">Aim:</label><span class="labellike attrvalue attrtotal" name="attr_aim"></span>
<span class="labellike attrvalue">=</span>
<span class="tooltip"><span class="labellike attrvalue" name="attr_accuracy"></span><span class="tooltiptext" data-i18n="Accuracy">Accuracy</span></span>
<span class="labellike attrvalue">+</span>
<span class="tooltip"><input type="number" name="attr_aimother" value="0" /><span class="tooltiptext" data-i18n="Other">Other</span></span>
<br/>
<label data-i18n="Will:">Will:</label><span class="labellike attrvalue attrtotal" name="attr_will"></span>
<span class="labellike attrvalue">=</span>
<span class="tooltip"><span class="labellike attrvalue" name="attr_discipline"></span><span class="tooltiptext" data-i18n="Discipline">Discipline</span></span>
<span class="labellike attrvalue">+</span>
<span class="tooltip"><input type="number" name="attr_willother" value="0" /><span class="tooltiptext" data-i18n="Other">Other</span></span>
</div>
<div class="attrcol3 nowrap">
<h3 data-i18n="Status">Status</h3>
<span class="tooltip">
<span class="tooltiptext" data-i18n="Hit Points Tooltip">Hit Points</span>
<label class="iconlabel"><span style="font-family:Pictos">k</span></label>
<label style="width:46px;"><span data-i18n="Hit Points:">HP:</span></label></span><input type="number" name="attr_hp" value="0" /><span class="labellike">&nbsp;/&nbsp;</span><span class="labellike" name="attr_hp_max"></span>
<br />
<span class="tooltip">
<span class="tooltiptext" data-i18n="Armor Points Tooltip">Armor Points</span>
<label class="iconlabel"><span style="font-family:'Pictos Three'">b</span></label>
<label style="width:46px;"><span data-i18n="Armor Points:">AP:</span></label></span><input type="number" name="attr_ap" value="0" /><span class="labellike">&nbsp;/&nbsp;</span><input type="number" name="attr_ap_max"/>
<br />
<span class="tooltip">
<span class="tooltiptext" data-i18n="Shield Points Tooltip">Shield Points</span>
<img class="shieldicon" src="https://raw.githubusercontent.com/RandyKnapp/roll20-character-sheets/master/Zafir/shieldsymbol.png" />
<label style="width:46px;"><span data-i18n="Shield Points:">SP:</span></label></span><input type="number" name="attr_sp" value="0" /><span class="labellike">&nbsp;/&nbsp;</span><input type="number" name="attr_sp_max" />
<br />
<input type="hidden" class="hideifzero" name="attr_showfocus" value="1"/>
<div><span class="tooltip">
<span class="tooltiptext" data-i18n="Focus Points Tooltip">Focus Points</span>
<img class="focusicon" src="https://raw.githubusercontent.com/RandyKnapp/roll20-character-sheets/master/Zafir/focussymbol.png" />
<label style="width:46px;" data-i18n="Focus Points:">FP:</label></span><input type="number" name="attr_focus" value="0" /><span class="labellike">&nbsp;/&nbsp;</span><input type="number" name="attr_focus_max" value="0" />
</div>
</div>
</div>
</div>
<input type="hidden" class="hideifzero" name="attr_condensesheet" value="0"/>
<div class="condensed main">
<div class="3colrow">
<div class="col" style="width:280px;">
<h2 class="name"><span name="attr_char_name"></span><span class="condensedpronouns"> (<span name="attr_char_pronouns"></span>)</span></h2>
<label style="width:auto;padding-right:0px;"><span data-i18n="Level">Level</span> <span name="attr_level"></span> <span name="attr_class"></span> - <span data-i18n="XP:">XP:</span></label>
<input type="number" name="attr_xp" />
</div>
<div class="col nowrap baseattr" style="width:130px;margin-right:15px;">
<label style="width:90px;" data-i18n="Toughness:">Toughness:</label><label class="attrvalue"><span name="attr_toughness"></span></label><br />
<label style="width:90px;" data-i18n="Agility:">Agility:</label><label class="attrvalue"><span name="attr_agility"></span></label><br />
<label style="width:90px;" data-i18n="Accuracy:">Accuracy:</label><label class="attrvalue"><span name="attr_accuracy"></span></label><br />
<label style="width:90px;" data-i18n="Discipline:">Discipline:</label><label class="attrvalue"><span name="attr_discipline"></span></label>
</div>
<div class="col nowrap combatattr" style="width:130px;margin-right:15px;">
<label style="width:90px;" data-i18n="Max HP:">Max HP:</label><label class="attrvalue"><span name="attr_hp_max"></span></label><br />
<label style="width:90px;" data-i18n="Speed:">Speed:</label><label class="attrvalue"><span name="attr_speed"></span></label><br />
<label style="width:90px;" data-i18n="Aim:">Aim:</label><label class="attrvalue"><span name="attr_aim"></span></label><br />
<label style="width:90px;" data-i18n="Will:">Will:</label><label class="attrvalue"><span name="attr_will"></span></label>
</div>
<div class="col status" style="width:120px;margin-right:15px;">
<label style="width:30px;"><span data-i18n="Hit Points:">HP:</span></label><input type="number" name="attr_hp" /><span class="labellike">&nbsp;/&nbsp;</span><span class="labellike" name="attr_hp_max"></span><br/>
<label style="width:30px;"><span data-i18n="Armor Points:">AP</span></label><input type="number" name="attr_ap" /><span class="labellike">&nbsp;/&nbsp;</span><span class="labellike" name="attr_ap_max"></span><br/>
<label style="width:30px;"><span data-i18n="Shield Points:">SP</span></label><input type="number" name="attr_sp" /><span class="labellike">&nbsp;/&nbsp;</span><span class="labellike" name="attr_sp_max"></span><br/>
</div>
<input type="hidden" class="hideifzero" name="attr_showfocus" value="1"/>
<div class="col status" style="width:130px;">
<label style="width:30px;" data-i18n="Focus Points:">FP:</label><input type="number" name="attr_focus" /><span class="labellike">&nbsp;/&nbsp;</span><span class="labellike" name="attr_focus_max"></span>
</div>
</div>
</div>
<!-- Main tab bar -->
<br />
<input type="hidden" class="tabstoggle" name="attr_sheetTab" value="atk" />
<div class="tabrow">
<button type="action" name="act_atk" class="atkbtn"><span data-i18n="Combat">Combat</span></button>
<button type="action" name="act_aab" class="aabbtn"><span data-i18n="Abilities">Abilities</span></button>
<button type="action" name="act_eqp" class="eqpbtn"><span data-i18n="Equipment">Equipment</span></button>
<button type="action" name="act_res" class="resbtn"><span data-i18n="Responsibilities">Responsibilities</span></button>
<button type="action" name="act_inv" class="invbtn"><span data-i18n="Inventory">Inventory</span></button>
<button type="action" name="act_oth" class="othbtn"><span data-i18n="Misc">Misc</span></button>
<button type="action" name="act_set" class="setbtn"><span data-i18n="Settings">Settings</span></button>
</div>
<br />
<!-- Combat -->
<div class="atk">
<div class="2colrow">
<div class="col1 nowrap">
<input type="hidden" class="tabstoggle" name="attr_sheetTabAttacks" value="cwp" />
<div class="tabrow">
<h2 data-i18n="Combat">Combat</h2>
<button type="action" name="act_cwp" class="cwpbtn"><span data-i18n="Attack">Attack</span></button>
<button type="action" name="act_cgn" class="cgnbtn"><span data-i18n="Area of Effect">Area of Effect</span></button>
<button type="action" name="act_cwl" class="cwlbtn"><span data-i18n="Will Attack">Will Attack</span></button>
<button type="action" name="act_cit" class="citbtn"><span data-i18n="Usable">Usable</span></button>
</div>
<br />
<div class="cwp">
<h3 data-i18n="Attacks">Attacks</h3>
<label data-i18n="Target Cover:">Target Cover:</label><select name="attr_atkcover">
<option value="Full Cover" data-i18n="Full Cover Option">Full Cover (+0)</option>
<option value="Half Cover" data-i18n="Half Cover Option">Half Cover (+1 aim)</option>
<option value="No Cover" data-i18n="No Cover Option">No Cover (+2 aim/+2 crit)</option>
</select><br />
<label data-i18n="Elevation:">Elevation:</label><select name="attr_atkelevation">
<option value="None" data-i18n="No Elevation Option">None (+0)</option>
<option value="Elevation" data-i18n="Elevation Option">Elevation (+1 aim)</option>
</select><br />
<label data-i18n="Range:">Range:</label><select name="attr_atkrange">
<option value="Optimal Range" data-i18n="Optimal Range Option">Optimal Range (+0)</option>
<option value="Non-optimal" data-i18n="Out Of Range Option">Too Close/Too Far (-1 aim)</option>
</select><br />
<label data-i18n="Overwatch:">Overwatch:</label><select name="attr_atkoverwatch">
<option value="No" data-i18n="Normal Attack Option">Normal Attack (+0)</option>
<option value="Yes" data-i18n="Overwatch Attack Option">Overwatch Reaction Attack (-1 aim)</option>
</select><br />
<label data-i18n="Bonus Aim:">Bonus Aim:</label><input style="width:18%;position:relative;right:3px;margin-right:93px;" type="number" value="0" name="attr_atkotheraim" />
<label data-i18n="Bonus Crit:">Bonus Crit:</label><input style="width:18%;position:relative;right:3px;" type="number" value="0" name="attr_atkothercrit" />
<input type="hidden" name="attr_wptype" class="weaponhider" value="Weapon">
<div class="weapon">
<input type="hidden" class="valuehider" name="attr_wpname" value="">
<div class="attack clearfix">
<input type="hidden" class="hideifzero" name="attr_wpammo" value="0"/>
<button type="action" name="act_useammo" class="btn tooltip" style="width:12px;padding-left:6px;padding-right:6px;">
<span style="font-family:'Pictos Custom'">[</span>
<span class="tooltiptext" style="left:2px;"><b>Use Ammo</b><hr />Decrement the ammo counter for this weapon</span></button>
<input type="hidden" class="hideifzero" name="attr_wpneedreload" value="0"/>
<button type="action" name="act_reloadprimary" class="btn"><span style="font-family:Pictos">1</span> <span data-i18n="Reload">Reload</span></button>
<input type="hidden" class="hideifone" name="attr_wpneedreload" value="0"/>
<button type="roll" name="roll_attackprimary" class="btn" value="&{template:zafir} {{name=@{wpname}}} {{aim=[[ [Aim Dice] (@{wpattackaimdice})d6>5]]}} {{crit=[[ [Crit Dice] (@{wpattackcritdice})d6>6]]}} {{damage=[[ [Damage] (@{wpattackdamage})]]}} {{critdmg=[[(@{wpattackdamage}) + (@{wpcritdmg})]]}} {{notes=@{wpnotes}}} {{ammo=@{specialammoeffect}}} {{player=@{char_name}}}"><span data-i18n="Attack">Attack</span></button>
<label style="width:110px"><span name="attr_wpname"></span></label>
<label>+<span name="attr_wpattackaimdice"></span> <span data-i18n="aim">aim</span>&nbsp;&nbsp;&nbsp;+<span name="attr_wpattackcritdice"></span> <span data-i18n="crit">crit</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tooltip"><span name="attr_wpattackdamage"></span> (+<span name="attr_wpcritdmg"></span>)<span class="tooltiptext">Damage</span></span></label>
</div>
</div>
<input type="hidden" class="valuehider" name="attr_wsname" value="">
<div class="attack clearfix">
<button type="roll" name="roll_attacksecondary" class="btn" value="&{template:zafir} {{name=@{wsname}}} {{aim=[[ [Aim Dice] (@{wsattackaimdice})d6>5]]}} {{crit=[[ [Crit Dice] (@{wsattackcritdice})d6>6]]}} {{damage=[[(@{wsattackdamage})]]}} {{critdmg=[[(@{wsattackdamage}) + (@{wscritdmg})]]}} {{notes=@{wsnotes}}} {{player=@{char_name}}}"><span data-i18n="Attack">Attack</span></button>
<label style="width:110px"><span name="attr_wsname"></span></label>
<label>+<span name="attr_wsattackaimdice"></span> <span data-i18n="aim">aim</span>&nbsp;&nbsp;&nbsp;+<span name="attr_wsattackcritdice"></span> <span data-i18n="crit">crit</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tooltip"><span name="attr_wsattackdamage"></span> (+<span name="attr_wscritdmg"></span>)<span class="tooltiptext">Damage</span></span></label>
</div>
<div class="readonly">
<fieldset class="repeating_activeabilities">
<input type="hidden" name="attr_aablname" />
<input type="hidden" name="attr_aablcooldown" />
<input type="hidden" name="attr_aablcharges" />
<input type="hidden" name="attr_aableffect" />
<input type="hidden" name="attr_aablatkrollaimdice" />
<input type="hidden" name="attr_aablatkrollcritdice" />
<input type="hidden" name="attr_aablatkrolldamage" />
<input type="hidden" name="attr_aablatkrollcritdamage" />
<input type="hidden" class="tabstoggle" name="attr_aabltype" />
<div class="attack clearfix aablWeapon">
<input type="hidden" class="hideifzero" name="attr_aablnocharges" value="0" />
<span>
<label class="attacklabel" data-i18n="Out of Charges!">Out of Charges!</label>
</span>
<input type="hidden" class="hideifone" name="attr_aablnocharges" value="0" />
<span>
<input type="hidden" class="hideifzero" name="attr_aabloncooldown" value="0" />
<span>
<label class="attacklabel" data-i18n="Ability On Cooldown!">Ability On Cooldown!</label>
</span>
<input type="hidden" class="hideifone" name="attr_aabloncooldown" value="0" />
<span>
<input type="hidden" class="hideifzero" name="attr_aablneedreload" value="0"/>
<span>
<label class="attacklabel" data-i18n="Out of Ammo!">Out of Ammo!</label>
</span>
<input type="hidden" class="hideifone" name="attr_aablneedreload" value="0"/>
<span>
<input type="hidden" class="hideifzero" name="attr_aablcooldown" value="0"/>
<button type="action" name="act_setcooldown" class="btn tooltip" style="width:12px;padding-left:6px;padding-right:6px;">
<span style="font-family:Pictos">t</span>
<span class="tooltiptext" style="left:2px;" data-i18n="Cooldown Tooltip"><b>Set Cooldown</b><hr />Put this ability on cooldown</span></button>
<input type="hidden" class="hideifzero" name="attr_aablcharges" value="0"/>
<button type="action" name="act_usecharge" class="btn tooltip" style="width:12px;padding-left:6px;padding-right:6px;">
<span style="font-family:Pictos">}</span>
<span class="tooltiptext" style="left:2px;" data-i18n="Charges Tooltip"><b>Use Charge</b><hr />Expend one of this ability's charges</span></button>
<input type="hidden" class="hideifzero" name="attr_aablhasammo" value="0"/>
<button type="action" name="act_useammo" class="btn tooltip" style="width:12px;padding-left:6px;padding-right:6px;">
<span style="font-family:'Pictos Custom'">[</span>
<span class="tooltiptext" style="left:2px;" data-i18n="Ammo Tooltip"><b>Use Ammo</b><hr />Decrement the ammo counter for this weapon</span></button>
<input type="hidden" class="hideifone" name="attr_aablneedreload" value="0"/>
<span>
<input type="hidden" class="tabstoggle" name="attr_aablatkweap" />
<div class="nothing">
<button type="roll" name="roll_attackability" class="btn" value="&{template:zafir} {{name=@{aablname}}} {{aim=[[ [Aim Dice] (@{aablatkrollaimdice})d6>5]]}} {{crit=[[ [Crit Dice] (@{aablatkrollcritdice})d6>6]]}} {{damage=[[(@{aablatkrolldamage})]]}} {{critdmg=[[(@{aablatkrolldamage}) + (@{aablatkrollcritdamage})]]}} {{notes=@{aableffect}}} {{player=@{char_name}}}">
<span data-i18n="Attack">Attack</span>
</button>
</div>
<div class="primaryweapon">
<button type="roll" name="roll_attackability" class="btn" value="&{template:zafir} {{name=@{aablname}}} {{aim=[[ [Aim Dice] (@{aablatkrollaimdice})d6>5]]}} {{crit=[[ [Crit Dice] (@{aablatkrollcritdice})d6>6]]}} {{damage=[[(@{aablatkrolldamage})]]}} {{critdmg=[[(@{aablatkrolldamage}) + (@{aablatkrollcritdamage})]]}} {{notes=@{wpnotes}}} {{ammo=@{specialammoeffect}}} {{player=@{char_name}}}">
<span data-i18n="Attack">Attack</span>
</button>
</div>
<div class="secondaryweapon">
<button type="roll" name="roll_attackability" class="btn" value="&{template:zafir} {{name=@{aablname}}} {{aim=[[ [Aim Dice] (@{aablatkrollaimdice})d6>5]]}} {{crit=[[ [Crit Dice] (@{aablatkrollcritdice})d6>6]]}} {{damage=[[(@{aablatkrolldamage})]]}} {{critdmg=[[(@{aablatkrolldamage}) + (@{aablatkrollcritdamage})]]}} {{notes=@{wsnotes}}} {{player=@{char_name}}}">
<span data-i18n="Attack">Attack</span>
</button>
</div>
</span>
</span>
</span>
</span>
<label style="width:110px;"><span name="attr_aablname"></span></label>
<label>+<span name="attr_aablatkrollaimdice"></span> <span data-i18n="aim">aim</span>&nbsp;&nbsp;&nbsp;+<span name="attr_aablatkrollcritdice"></span> <span data-i18n="crit">crit</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tooltip"><span name="attr_aablatkrolldamage"></span> (+<span name="attr_aablatkrollcritdamage" value="0"></span>)<span class="tooltiptext">Damage</span></span></label>
</div>
</fieldset>
</div>
<div class="customattack attack clearfix">
<button type="roll" name="roll_attackcustom" class="btn" value="&{template:zafir} {{name=@{custattackname}}} {{aim=[[ [Aim Dice] (@{custattackaimdice})d6>5]]}} {{crit=[[ [Crit Dice] (@{custattackcritdice})d6>6]]}} {{damage=[[(@{custattackdamage})]]}} {{critdmg=[[(@{custattackdamage}) + (@{custcritdamage})]]}} {{player=@{char_name}}}"><span data-i18n="Attack">Attack</span></button>
<input type="text" name="attr_custattackname" spellcheck="false" placeholder="Custom Atk" style="width:110px;margin-right:10px;">
<label>+<span name="attr_custattackaimdice"></span> <span data-i18n="aim">aim</span>&nbsp;&nbsp;&nbsp;+<span name="attr_custattackcritdice"></span> <span data-i18n="crit">crit</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tooltip"><input type="text" name="attr_custattackdamage" spellcheck="false" value="0"><span class="tooltiptext">Damage</span></span><span class="tooltip">(+<input type="number" name="attr_custcritdamage" value="0">)<span class="tooltiptext" data-i18n="Crit Damage">Crit Damage</span></span></label>
</div>
</div>
<div class="cgn">
<!-- Grenade Attack -->
<h3 data-i18n="Grenade Attack">Grenade Attack</h3>
<label data-i18n="Targets:">Targets:</label><input style="margin-right:8px;" type="number" name="attr_gtargets" value="1" min="1" max="5">
<label style="width:80px;" data-i18n="Effects:">Effects:</label><input style="width:279px;" type="text" name="attr_geffects" value="">
<div class="readonly">
<fieldset class="repeating_items">
<input type="hidden" name="attr_itemname" />
<input type="hidden" name="attr_itemcharges" />
<input type="hidden" name="attr_itemcritdice" />
<input type="hidden" name="attr_itemdamage" />
<input type="hidden" name="attr_itemcritdmg" />
<input type="hidden" name="attr_itemeffects" />
<input type="hidden" name="attr_itembreaking" />
<input type="hidden" class="tabstoggle" name="attr_itemtype" />
<div class="attack clearfix itemGrenade">
<input type="hidden" class="hideifzero" name="attr_itemnocharges" value="0" />
<span>
<label class="attacklabel" data-i18n="Out of Charges!">Out of Charges!</label>
</span>
<input type="hidden" class="hideifone" name="attr_itemnocharges" value="0" />
<span>
<input type="hidden" class="hideifzero" name="attr_itemcharges" value="0"/>
<button type="action" name="act_usecharge" class="btn tooltip" style="width:12px;padding-left:6px;padding-right:6px;">
<span style="font-family:Pictos">}</span>
<span class="tooltiptext" style="left:2px;" data-i18n="Charges Item Tooltip"><b>Use Charge</b><hr />Expend item charge</span></button>
<button type="roll" name="roll_gatk" class="btn" value="&{template:zafirgrenade} {{name=@{itemname}}} {{targets=@{gtargets}}} {{targetsroll=[[@{gtargets}]]}} {{crit1=[[ [Crit Dice] (@{itemcritdice})d6>6]]}} {{damage1=[[ [Damage] @{itemdamage}]]}} {{critdmg1=[[ [Damage] @{itemdamage} + @{itemcritdmg}]]}} {{crit2=[[ [Crit Dice] (@{itemcritdice})d6>6]]}} {{damage2=[[ [Damage] @{itemdamage}]]}} {{critdmg2=[[ [Damage] @{itemdamage} + @{itemcritdmg}]]}} {{crit3=[[ [Crit Dice] (@{itemcritdice})d6>6]]}} {{damage3=[[ [Damage] @{itemdamage}]]}} {{critdmg3=[[ [Damage] @{itemdamage} + @{itemcritdmg}]]}} {{crit4=[[ [Crit Dice] (@{itemcritdice})d6>6]]}} {{damage4=[[ [Damage] @{itemdamage}]]}} {{critdmg4=[[ [Damage] @{itemdamage} + @{itemcritdmg}]]}} {{crit5=[[ [Crit Dice] (@{itemcritdice})d6>6]]}} {{damage5=[[ [Damage] @{itemdamage}]]}} {{critdmg5=[[ [Damage] @{itemdamage} + @{itemcritdmg}]]}} {{notes=Breaking: @{itembreaking}, @{itemeffects}}} {{player=@{char_name}}}">
<span data-i18n="Throw Grenade">Throw Grenade</span>
</button>
</span>
<label style="width:140px;"><span name="attr_itemname" ></span></label>
<label>&nbsp;<span name="attr_itemcritdice"></span>&nbsp;<span data-i18n="crit">crit</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span name="attr_itemdamage"></span> (+<span name="attr_itemcritdmg"></span>)</label>
</div>
<div class="attack clearfix itemHeavyWeapon">
<input type="hidden" class="hideifzero" name="attr_itemnocharges" value="0" />
<span>
<label class="attacklabel" data-i18n="Out of Charges!">Out of Charges!</label>
</span>
<input type="hidden" class="hideifone" name="attr_itemnocharges" value="0" />
<span>
<input type="hidden" class="hideifzero" name="attr_itemcharges" value="0"/>
<button type="action" name="act_usecharge" class="btn tooltip" style="width:12px;padding-left:6px;padding-right:6px;">
<span style="font-family:Pictos">}</span>
<span class="tooltiptext" style="left:2px;" data-i18n="Charges Item Tooltip"><b>Use Charge</b><hr />Expend item charge</span></button>
<button type="roll" name="roll_gatk" class="btn" value="&{template:zafirgrenade} {{name=@{itemname}}} {{targets=@{gtargets}}} {{targetsroll=[[@{gtargets}]]}} {{crit1=[[ [Crit Dice] (@{itemcritdice})d6>6]]}} {{damage1=[[ [Damage] @{itemdamage}]]}} {{critdmg1=[[ [Damage] @{itemdamage} + @{itemcritdmg}]]}} {{crit2=[[ [Crit Dice] (@{itemcritdice})d6>6]]}} {{damage2=[[ [Damage] @{itemdamage}]]}} {{critdmg2=[[ [Damage] @{itemdamage} + @{itemcritdmg}]]}} {{crit3=[[ [Crit Dice] (@{itemcritdice})d6>6]]}} {{damage3=[[ [Damage] @{itemdamage}]]}} {{critdmg3=[[ [Damage] @{itemdamage} + @{itemcritdmg}]]}} {{crit4=[[ [Crit Dice] (@{itemcritdice})d6>6]]}} {{damage4=[[ [Damage] @{itemdamage}]]}} {{critdmg4=[[ [Damage] @{itemdamage} + @{itemcritdmg}]]}} {{crit5=[[ [Crit Dice] (@{itemcritdice})d6>6]]}} {{damage5=[[ [Damage] @{itemdamage}]]}} {{critdmg5=[[ [Damage] @{itemdamage} + @{itemcritdmg}]]}} {{notes=Breaking: @{itembreaking}, @{itemeffects}}} {{player=@{char_name}}}">
<span data-i18n="Use Heavy Weapon">Use Heavy Weapon</span>
</button>
</span>
<label style="width:140px;"><span name="attr_itemname" ></span></label>
<label>&nbsp;<span name="attr_itemcritdice"></span>&nbsp;<span data-i18n="crit">crit</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span name="attr_itemdamage"></span> (+<span name="attr_itemcritdmg"></span>)</label>
</div>
</fieldset>
</div>
<div class="customattack attack clearfix">
<button type="roll" name="roll_gatk" class="btn"
value="&{template:zafirgrenade} {{name=@{gatkname}}} {{targets=@{gtargets}}} {{targetsroll=[[@{gtargets}]]}} {{crit1=[[ [Crit Dice] (@{gatkcritdice})d6>6]]}} {{damage1=[[ [Damage] @{gatkdamage}]]}} {{critdmg1=[[ [Damage] @{gatkdamage} + @{gatkcritdamage}]]}} {{crit2=[[ [Crit Dice] (@{gatkcritdice})d6>6]]}} {{damage2=[[ [Damage] @{gatkdamage}]]}} {{critdmg2=[[ [Damage] @{gatkdamage} + @{gatkcritdamage}]]}} {{crit3=[[ [Crit Dice] (@{gatkcritdice})d6>6]]}} {{damage3=[[ [Damage] @{gatkdamage}]]}} {{critdmg3=[[ [Damage] @{gatkdamage} + @{gatkcritdamage}]]}} {{crit4=[[ [Crit Dice] (@{gatkcritdice})d6>6]]}} {{damage4=[[ [Damage] @{gatkdamage}]]}} {{critdmg4=[[ [Damage] @{gatkdamage} + @{gatkcritdamage}]]}} {{crit5=[[ [Crit Dice] (@{gatkcritdice})d6>6]]}} {{damage5=[[ [Damage] @{gatkdamage}]]}} {{critdmg5=[[ [Damage] @{gatkdamage} + @{gatkcritdamage}]]}} {{notes=@{geffects}}} {{player=@{char_name}}}"><span data-i18n="Grenade Attack">Grenade Attack</span></button>
<input type="text" name="attr_gatkname" spellcheck="false" placeholder="Custom Grenade" style="width:110px;margin-right:10px;">
<label>&nbsp;<input type="number" name="attr_gatkcritdice" value="0">&nbsp;<span data-i18n="crit">crit</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" name="attr_gatkdamage" spellcheck="false" value="0">(+<input type="number" name="attr_gatkcritdamage" value="0">)</label>
</div>
<br />
<h3 data-i18n="Abilities">Abilities</h3>
<label data-i18n="Targets:">Targets:</label><input style="margin-right:8px;" type="number" name="attr_areaabltargets" value="1" min="1" max="5">
<div class="readonly">
<fieldset class="repeating_activeabilities">
<input type="hidden" name="attr_aablname" />
<input type="hidden" name="attr_aablcooldown" />
<input type="hidden" name="attr_aablcharges" />
<input type="hidden" name="attr_aablatkrollcritdice" />
<input type="hidden" name="attr_aablatkrolldamage" />
<input type="hidden" name="attr_aablatkrollcritdamage" />
<input type="hidden" name="attr_aablatkeffects" />
<input type="hidden" class="tabstoggle" name="attr_aabltype" />
<div class="attack clearfix aablArea">
<input type="hidden" class="hideifzero" name="attr_aablnocharges" value="0" />
<span>
<label class="attacklabel" data-i18n="Out of Charges!">Out of Charges!</label>
</span>
<input type="hidden" class="hideifone" name="attr_aablnocharges" value="0" />
<span>
<input type="hidden" class="hideifzero" name="attr_aabloncooldown" value="0" />
<span>
<label class="attacklabel" data-i18n="Ability On Cooldown!">Ability On Cooldown!</label>
</span>
<input type="hidden" class="hideifone" name="attr_aabloncooldown" value="0" />
<span>
<input type="hidden" class="hideifzero" name="attr_aablcooldown" value="0"/>
<button type="action" name="act_setcooldown" class="btn tooltip" style="width:12px;padding-left:6px;padding-right:6px;">
<span style="font-family:Pictos">t</span>
<span class="tooltiptext" style="left:2px;" data-i18n="Cooldown Tooltip"><b>Set Cooldown</b><hr />Put ability on cooldown</span></button>
<input type="hidden" class="hideifzero" name="attr_aablcharges" value="0"/>
<button type="action" name="act_usecharge" class="btn tooltip" style="width:12px;padding-left:6px;padding-right:6px;">
<span style="font-family:Pictos">}</span>
<span class="tooltiptext" style="left:2px;" data-i18n="Charges Tooltip"><b>Use Charge</b><hr />Expend ability charge</span></button>
<button type="roll" name="roll_gatk" class="btn"
value="&{template:zafirgrenade} {{name=@{aablname}}} {{targets=@{areaabltargets}}} {{targetsroll=[[@{areaabltargets}]]}} {{crit1=[[ [Crit Dice] (@{aablatkrollcritdice})d6>6]]}} {{damage1=[[ [Damage] @{aablatkrolldamage}]]}} {{critdmg1=[[ [Damage] @{aablatkrolldamage} + @{aablatkrollcritdamage}]]}} {{crit2=[[ [Crit Dice] (@{aablatkrollcritdice})d6>6]]}} {{damage2=[ [Damage] @{aablatkrolldamage}]]}} {{critdmg2=[[ [Damage] @{aablatkrolldamage} + @{aablatkrollcritdamage}]]}} {{crit3=[[ [Crit Dice] (@{aablatkrollcritdice})d6>6]]}} {{damage3=[[ [Damage] @{aablatkrolldamage}]]}} {{critdmg3=[[ [Damage] @{aablatkrolldamage} + @{aablatkrollcritdamage}]]}} {{crit4=[[ [Crit Dice] (@{aablatkrollcritdice})d6>6]]}} {{damage4=[[ [Damage] @{aablatkrolldamage}]]}} {{critdmg4=[[ [Damage] @{aablatkrolldamage} + @{aablatkrollcritdamage}]]}} {{crit5=[[ [Crit Dice] (@{aablatkrollcritdice})d6>6]]}} {{damage5=[[ [Damage] @{aablatkrolldamage}]]}} {{critdmg5=[[ [Damage] @{aablatkrolldamage} + @{aablatkrollcritdamage}]]}} {{notes=@{aablatkeffects}}} {{player=@{char_name}}}"><span data-i18n="Area Attack">Area Attack</span></button>
</span>
</span>
<label style="width:140px;"><span name="attr_aablname" ></span></label>
<label>&nbsp;<span name="attr_aablatkrollcritdice"></span>&nbsp;<span data-i18n="crit">crit</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span name="attr_aablatkrolldamage"></span> (+<span name="attr_aablatkrollcritdamage"></span>)</label>
</div>
</fieldset>
</div>
</div>
<div class="cwl">
<h3 data-i18n="Will Attack">Will Attack</h3>
<label data-i18n="Wounded:">Wounded:</label><select name="attr_willatkwounded">
<option value="No" data-i18n="Full Health Option">Target at Full Health (+0)</option>
<option value="Yes" data-i18n="Wounded Option">Target Wounded (+1 will)</option>
</select><br />
<label data-i18n="Conditions:">Conditions:</label><select name="attr_willatkcondition">
<option value="No" data-i18n="No Conditions Option">None (+0)</option>
<option value="Yes" data-i18n="Some Conditions Option">Target has Negative Condition (+1 will)</option>
</select><br />
<label data-i18n="Isolated:">Isolated:</label><select name="attr_willatkisolated">
<option value="No" data-i18n="Not Isolated Option">No (+0)</option>
<option value="Yes" data-i18n="Isolated Option">Target is Isolated (no allies within 4 tiles) (+1 will)</option>
</select><br />
<label data-i18n="Panic:">Panic:</label><select name="attr_willatkpanic">
<option value="No" data-i18n="Not Panicked Option">No (+0)</option>
<option value="Ally" data-i18n="Ally Panicked Option">Target's Ally Panicked (+1 will)</option>
<option value="Target" data-i18n="Target Panicked Option">Target is Panicked (+1 will, +2 crit)</option>
</select><br />
<label data-i18n="Bonus Will:">Bonus Will:</label><input style="width:18%;position:relative;right:3px;margin-right:93px;" type="number" value="0" name="attr_bonuswill" />
<label data-i18n="Bonus Crit:">Bonus Crit:</label><input style="width:18%;position:relative;right:3px;" type="number" value="0" name="attr_bonuswillcrit" /><br />
<label data-i18n="Enemy Will:">Enemy Will:</label><input style="width:18%;position:relative;right:3px;" type="number" value="0" name="attr_enemywill" />
<div class="readonly">
<fieldset class="repeating_activeabilities">
<input type="hidden" name="attr_aablname" />
<input type="hidden" name="attr_aablcooldown" />
<input type="hidden" name="attr_aablcharges" />
<input type="hidden" name="attr_aablwillatkaimdice" />
<input type="hidden" name="attr_aablwillatkcritdice" />
<input type="hidden" name="attr_aablresist" />
<input type="hidden" class="tabstoggle" name="attr_aabltype" />
<div class="attack clearfix willattack aablWill">
<input type="hidden" class="hideifzero" name="attr_aablnocharges" value="0" />
<span>
<label class="attacklabel" data-i18n="Out of Charges!">Out of Charges!</label>
</span>
<input type="hidden" class="hideifone" name="attr_aablnocharges" value="0" />
<span>
<input type="hidden" class="hideifzero" name="attr_aabloncooldown" value="0" />
<span>
<label class="attacklabel" data-i18n="Ability On Cooldown!">Ability On Cooldown!</label>
</span>
<input type="hidden" class="hideifone" name="attr_aabloncooldown" value="0" />
<span>
<input type="hidden" class="hideifzero" name="attr_aablcooldown" value="0"/>
<button type="action" name="act_setcooldown" class="btn tooltip" style="width:12px;padding-left:6px;padding-right:6px;">
<span style="font-family:Pictos">t</span>
<span class="tooltiptext" style="left:2px;" data-i18n="Cooldown Tooltip"><b>Set Cooldown</b><hr />Put ability on cooldown</span></button>
<input type="hidden" class="hideifzero" name="attr_aablcharges" value="0"/>
<button type="action" name="act_usecharge" class="btn tooltip" style="width:12px;padding-left:6px;padding-right:6px;">
<span style="font-family:Pictos">}</span>
<span class="tooltiptext" style="left:2px;" data-i18n="Charges Tooltip"><b>Use Charge</b><hr />Expend ability charge</span></button>
<button type="roll" name="roll_willattack" class="btn" value="&{template:zafirwillattack} {{name=@{aablname}}} {{aim=[[ [Will Attack Dice] (@{aablwillatkaimdice})d6>5]]}} {{crit=[[ [Crit Effect Dice] (@{aablwillatkcritdice})d6>6]]}} {{resist=[[ [Resist Dice] (@{aablresist})d6>6]]}} {{player=@{char_name}}}"><span data-i18n="Will Attack">Will Attack</span></button>
</span>
</span>
<label style="width:110px;"><span name="attr_aablname" ></span></label>
<label>+<span name="attr_aablwillatkaimdice"></span> <span data-i18n="will">will</span>&nbsp;&nbsp;&nbsp;+<span name="attr_aablwillatkcritdice"></span> <span data-i18n="crit">crit</span>&nbsp;&nbsp;&nbsp;+<span name="attr_aablresist"></span> <span data-i18n="resist">resist</span</label>
</div>
</fieldset>
</div>
<div class="attack clearfix willattack">
<button type="roll" name="roll_willattack" class="btn" value="&{template:zafirwillattack} {{name=@{custwillattackname}}} {{aim=[[ [Will Attack Dice] (@{willattackaimdice})d6>5]]}} {{crit=[[ [Crit Effect Dice] (@{willattackcritdice})d6>6]]}} {{resist=[[ [Resist Dice] (@{willattackresistdice})d6>6]]}} {{player=@{char_name}}}"><span data-i18n="Will Attack">Will Attack</span></button>
<input type="text" name="attr_custwillattackname" spellcheck="false" placeholder="Ability Name" style="width:110px;margin-right:10px;">
<label>+<span name="attr_willattackaimdice"></span> <span data-i18n="will">will</span>&nbsp;&nbsp;&nbsp;+<span name="attr_willattackcritdice"></span> <span data-i18n="crit">crit</span>&nbsp;&nbsp;&nbsp;+<span name="attr_willattackresistdice"></span> <span data-i18n="resist">resist</span</label>
</div>
</div>
<div class="cit">
<h3 data-i18n="Usable Items">Usable Items</h3>
<div class="readonly">
<fieldset class="repeating_items">
<input type="hidden" name="attr_itemname" />
<input type="hidden" name="attr_itemeffects" />
<input type="hidden" class="tabstoggle" name="attr_itemtype" value="Utility" />
<div class="itemUtility">
<input type="hidden" class="tabstoggle" name="attr_itemusage" value="Passive" />
<div class="itemUsable">
<div class="attack clearfix">
<div class="flexcontainer">
<div class="left">
<label style="width:auto;"><span name="attr_itemname"></span></label>
</div>
<div class="center usableeffects">
<span name="attr_itemeffects"></span>
</div>
<div class="right">
<input type="hidden" class="hideifzero" name="attr_itemnocharges" value="0" />
<div>
<label class="attacklabel">Out of Charges!</label>
</div>
<input type="hidden" class="hideifone" name="attr_itemnocharges" value="0" />
<div>
<button type="roll" name="roll_useitem" class="btn" style="float:none;" value="&{template:zafir} {{name=@{itemname}}} {{notes=@{itemeffects}}} {{player=@{char_name}}} {{label=Use Item:}}"><span data-i18n="Use Item">Use Item</span>
</button><input type="hidden" class="hideifzero" name="attr_itemcharges" value="0"/><button type="action" name="act_usecharge" class="btn" style="float:none;width:12px;padding-left:6px;padding-right:6px;">
<span style="font-family:Pictos">}</span>
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</fieldset>
</div>
<br />
<h3 data-i18n="Usable Abilities">Usable Abilities</h3>
<div class="readonly">
<fieldset class="repeating_activeabilities">
<input type="hidden" name="attr_aablname" />
<input type="hidden" name="attr_aableffect" />
<input type="hidden" class="tabstoggle" name="attr_aabltype" value="Standard" />
<div class="attack clearfix aablStandard">
<div class="flexcontainer">
<div class="left">
<label style="width:auto;"><span name="attr_aablname"></span></label>
</div>
<div class="center usableeffects">
<span name="attr_aableffect"</span>
</div>
<div class="right">
<input type="hidden" class="hideifzero" name="attr_aablnocharges" value="0" />
<div>
<label class="attacklabel">Out of Charges!</label>
</div>
<input type="hidden" class="hideifone" name="attr_aablnocharges" value="0" />
<div>
<input type="hidden" class="hideifzero" name="attr_aabloncooldown" value="0" />
<div>
<label class="attacklabel">Ability On Cooldown!</label>
</div>
<input type="hidden" class="hideifone" name="attr_aabloncooldown" value="0" />
<div>
<input type="hidden" class="hideifzero" name="attr_aablcharges" value="0"/>
<span>
<button type="roll" name="roll_useability" class="btn" style="float:none;" value="&{template:zafir} {{name=@{aablname}}} {{notes=@{aableffect}}} {{player=@{char_name}}} {{label=Use Ability:}}"><span data-i18n="Use Ability">Use Ability</span></button><button type="action" name="act_usecharge" class="btn" style="float:none;width:12px;padding-left:6px;padding-right:6px;"><span style="font-family:Pictos">}</span>
</button><input type="hidden" class="hideifzero" name="attr_aablcooldown" value="0"/><button type="action" name="act_setcooldown" class="btn tooltip" style="float:none;width:12px;padding-left:6px;padding-right:6px;">
<span style="font-family:Pictos">t</span>
<span class="tooltiptext" style="left:2px;" data-i18n="Cooldown Tooltip"><b>Set Cooldown</b><hr />Put this ability on cooldown</span>
</button>
</span>
<input type="hidden" class="hideifnotzero" name="attr_aablcharges" value="0"/>
<span>
<button type="roll" name="roll_useability" class="btn" style="float:none;" value="&{template:zafir} {{name=@{aablname}}} {{notes=@{aableffect}}} {{player=@{char_name}}} {{label=Use Ability:}}"><span data-i18n="Use Ability">Use Ability</span>
</button><input type="hidden" class="hideifzero" name="attr_aablcooldown" value="0"/><button type="action" name="act_setcooldown" class="btn" style="float:none;width:12px;padding-left:6px;padding-right:6px;"><span style="font-family:Pictos">t</span></button>
</span>
</div>
</div>
</div>
</div>
</div>
</fieldset>
</div>
</div>
</div>
<div class="col2 nowrap">
<div class="clearfix">
<button type="action" name="act_roundstart" class="btn"><span data-i18n="Round Start">Round Start</span></button>
<button type="action" name="act_initcombat" class="btn"><span data-i18n="Mission Start">Mission Start</span></button>
</div>
<input type="hidden" class="hideifzero" name="attr_showammotracker" value="1"/>
<div>
<input type="hidden" class="valuehider" name="attr_wpname" value="">
<div>
<h3 data-i18n="Ammo Tracker">Ammo Tracker</h3>
<div class="paneltracker ammotrack clearfix">
<input type="hidden" class="hideifzero" name="attr_wpcanreload" value="1" />
<button type="action" name="act_reloadprimary" class="btn"><span data-i18n="Reload">Reload</span></button>
<input type="hidden" class="hideifone" name="attr_wpcanreload" />
<button class="btn" disabled><span data-i18n="Reload">Reload</span></button>
<label style="width:110px"><span name="attr_wpname"></span>:</label><input type="number" name="attr_wpammo" value="0" /><span class="labellike">&nbsp;/&nbsp;</span><span class="labellike" name="attr_wpammo_max"></span><br/>
<input type="hidden" class="valuehider" name="attr_specialammo" value=""/>
<div class="bottomfilledinset specialammo"><span name="attr_specialammo"></span>: <span name="attr_specialammoreloads"></span> <span data-i18n="reloads">reloads</span></div>
</div>
</div>
</div>
<input type="hidden" class="hideifzero" name="attr_showconcealment" value="1"/>
<div>
<input type="hidden" class="valuehider" name="attr_wpname" value="">
<div>
<h3 data-i18n="Concealment Tracker">Concealment Tracker</h3>
<input type="hidden" class="hideifone" name="attr_concealed" value="0">
<div class="paneltracker revealed clearfix">
<button type="action" name="act_conceal" class="btn"><span data-i18n="Conceal">Conceal</span></button>
<label data-i18n="Revealed">Revealed</label>
</div>
<input type="hidden" class="hideifzero" name="attr_concealed" value="0">
<div class="paneltracker concealed clearfix">
<button type="action" name="act_reveal" class="btn"><span data-i18n="Reveal">Reveal</span></button>
<label data-i18n="Concealed">Concealed</label>
</div>
</div>
</div>
<input type="hidden" class="hideifzero" name="attr_showdodgeroller" value="1"/>
<div>
<h3 data-i18n="Dodge Roller">Dodge Roller</h3>
<div class="paneltracker dodgeroller clearfix">
<button type="roll" name="roll_dodge" class="btn" value="&{template:zafirdodge} {{dodge=[[ [Dodge Dice] (@{dodgedice})d6>6]]}} {{player=@{char_name}}}"><span data-i18n="Dodge">Dodge</span></button>
<label style="width:110px" data-i18n="Dodge Dice:">Dodge Dice:</label><input type="number" name="attr_dodgedice" value="0" />
</div>
</div>
<input type="hidden" class="hideifzero" name="attr_showconditiontracker" value="1"/>
<div>
<h3 data-i18n="Condition Tracker">Condition Tracker</h3>
<div class="inset nowrap tracker clearfix">
<fieldset class="repeating_conditiontracker">
<input type="text" spellcheck="false" name="attr_conditionname" />
<input type="number" name="attr_conditionvalue" />
</fieldset>
</div>
</div>
<input type="hidden" class="hideifzero" name="attr_showcooldowntracker" value="1"/>
<div>
<h3><span data-i18n="Cooldown Tracker">Cooldown Tracker</span> <span style="font-family:Pictos">t</span></h3>
<div class="inset nowrap tracker clearfix">
<fieldset class="repeating_cooldowntracker">
<input type="text" spellcheck="false" name="attr_cooldownname" />
<input type="number" name="attr_cooldownvalue" value="0"/>
</fieldset>
</div>
</div>
<input type="hidden" class="hideifzero" name="attr_showchargestracker" value="1"/>
<div>
<h3><span data-i18n="Charges Tracker">Charges Tracker</span> <span style="font-family:Pictos">}</span></h3>
<div class="inset nowrap tracker clearfix">
<fieldset class="repeating_chargetracker">
<input type="text" spellcheck="false" name="attr_chargename" />
<input type="number" name="attr_chargevalue" />
</fieldset>
</div>
</div>
</div>
</div>
</div>
<!-- Abilities -->
<div class="aab">
<input type="hidden" class="tabstoggle" name="attr_sheetTabAbilities" value="aaa" />
<div class="tabrow">
<h2 data-i18n="Abilities">Abilities</h2>
<button type="action" name="act_aaa" class="aaabtn"><span data-i18n="Active Abilities">Active Abilities</span></button>
<button type="action" name="act_apa" class="apabtn"><span data-i18n="Passive Abilities">Passive Abilities</span></button>
</div>
<br />
<div class="aaa">
<h3 data-i18n="Active Abilities">Active Abilities</h3>
<fieldset class="repeating_activeabilities">
<div class="2colrow">
<div class="col1 nowrap">
<label data-i18n="Name:">Name:</label><input type="text" spellcheck="false" name="attr_aablname" />
<label data-i18n="Activation:">Activation:</label>
<select name="attr_aablactivation">
<option value="Free Action" data-i18n="Free Action Option">Free Action</option>
<option value="Action" data-i18n="Action Option">Action</option>
<option value="Action + Ends Turn" data-i18n="Action End Turn Option">Action + Ends Turn</option>
</select>
<br/>
<label data-i18n="Range:">Range:</label>
<select name="attr_aablrange" class="rangeselect">
<option value="Self" data-i18n="Self Range Option">Self</option>
<option value="Weapon" data-i18n="Weapon Range Option">Weapon</option>
<option value="Adjacent" data-i18n="Adjacent Range Option">Adjacent</option>
<option value="Short" data-i18n="Short Range Option">Short</option>
<option value="Medium" data-i18n="Medium Range Option">Medium</option>
<option value="Long" data-i18n="Long Range Option">Long</option>
<option value="-" data-i18n="None Range Option">-</option>
</select>
<label style="margin-left:27px;" data-i18n="Cooldown:">Cooldown:</label><input type="number" name="attr_aablcooldown" value="0" />
<label style="margin-left:27px;" data-i18n="Charges:">Charges:</label><input type="number" name="attr_aablcharges" value="0" /><br/>
<label data-i18n="Effect:">Effect:</label><textarea name="attr_aableffect"></textarea>
</div>
<div class="col2">
<label data-i18n="Usage:">Usage:</label>
<select name="attr_aabltype">
<option value="Standard" data-i18n="Standard Ability">Usable Ability</option>
<option value="Weapon" data-i18n="Attack">Attack</option>
<option value="Area" data-i18n="Area of Effect Attack">Area of Effect Attack</option>
<option value="Will" data-i18n="Will Attack">Will Attack</option>
</select>
<input type="hidden" class="tabstoggle" name="attr_aabltype" value="Standard" />
<div class="aablStandard">
<span class="labellike help tooltip" style="right:32px;top:-32px;">&nbsp;<span style="font-family:Pictos">?</span><span class="tooltiptext" data-i18n="Usable Ability Tooltip"><b>Usable Ability</b><hr />This ability appears as an <em>Ability</em> in Usable tab of the Combat panel.</span></span>
</div>
<div class="aablWeapon nowrap">
<span class="labellike help tooltip" style="right:32px;top:-32px;">&nbsp;<span style="font-family:Pictos">?</span><span class="tooltiptext" data-i18n="Weapon Attack Tooltip"><b>Attack</b><hr />This ability appears as a <em>Attack</em> on the Combat panel.</span></span>
<label data-i18n="Weapon:">Weapon:</label>
<select name="attr_aablatkweap" style="width:211px;margin-right:0;">
<option value="Nothing" data-i18n="Does Not Use Weapon">Does Not Use Weapon</option>
<option value="Primary" data-i18n="Primary Weapon">Primary Weapon</option>
<option value="Secondary" data-i18n="Secondary Weapon">Secondary Weapon</option>
</select><br />
<label style="margin-left:0px;" data-i18n="Aim Dice:">Aim Dice:</label><input type="number" name="attr_aablatkaim" value="0" />
<label style="margin-left:17px;" data-i18n="Crit Dice:">Crit Dice:</label><input type="number" name="attr_aablatkcrit" value="0" /><br/>
<input type="hidden" class="tabstoggle" name="attr_aablatkweap" value="Nothing" />
<div class="nothing">
<label data-i18n="Damage:">Damage:</label><input style="width:62px;margin-right:0;" type="text" spellcheck="false" name="attr_aablatkdmg" />
<label style="width:90px;margin-left:0px;" data-i18n="Crit Dmg:">Crit Dmg:</label><input type="number" name="attr_aablatkcritdmg" value="0" /><br/>
</div>
<div class="weapon">
<label data-i18n="Bonus Dmg:">Bonus Dmg:</label><input type="number" name="attr_aablatkbonusdmg" value="0" />
</div>
</div>
<div class="aablArea">
<span class="labellike help tooltip" style="right:32px;top:-32px;">&nbsp;<span style="font-family:Pictos">?</span><span class="tooltiptext" data-i18n="Area Attack Tooltip"><b>Area of Effect</b><hr />This ability appears as an <em>Area of Effect</em> on the Combat panel.</span></span>
<label data-i18n="Damage:">Damage:</label><input style="width:207px;margin-right:0;" type="text" spellcheck="false" name="attr_aablatkdmg" /><br/>
<label data-i18n="Crit Dice:">Crit Dice:</label><input type="number" name="attr_aablatkcrit" value="0" />
<label style="width:90px;margin-left:13px;" data-i18n="Crit Dmg:">Crit Dmg:</label><input type="number" name="attr_aablatkcritdmg" value="0" />
<label data-i18n="Effects:">Effects:</label><input style="width:207px;margin-right:0;" type="text" spellcheck="false" name="attr_aablatkeffects" /><br/>
</div>
<div class="aablWill wrap">
<span class="labellike help tooltip" style="right:32px;top:-32px;">&nbsp;<span style="font-family:Pictos">?</span><span class="tooltiptext" data-i18n="Will Attack Tooltip"><b>Will Attack</b><hr />This ability appears as a <em>Will Attack</em> on the Combat panel.</span></span>
<label data-i18n="Crit Dice:">Crit Dice:</label><input type="number" name="attr_aablcritdice" value="0" />
</div>
</div>
</div>
<hr style="margin-top:4px;" />
</fieldset>
</div>
<div class="apa">
<h3 data-i18n="Passive Abilities">Passive Abilities</h3>
<fieldset class="repeating_passiveabilities">
<label data-i18n="Name:">Name:</label><input type="text" spellcheck="false" name="attr_pablname" /><br/>
<label data-i18n="Effect:">Effect:</label><textarea name="attr_pableffect"></textarea>
<hr />
</fieldset>
</div>
</div>
<!-- Equipment -->
<div class="eqp">
<input type="hidden" class="tabstoggle" name="attr_sheetTabEqp" value="epw" />
<div class="tabrow">
<h2 data-i18n="Equipment">Equipment</h2>
<button type="action" name="act_epw" class="epwbtn"><span data-i18n="Primary Weapon">Primary Weapon</span></button>
<button type="action" name="act_esw" class="eswbtn"><span data-i18n="Secondary Weapon">Secondary Weapon</span></button>
<button type="action" name="act_eba" class="ebabtn"><span data-i18n="Body Armor">Body Armor</span></button>
<button type="action" name="act_ehg" class="ehgbtn"><span data-i18n="Headgear">Headgear</span></button>
<button type="action" name="act_eit" class="eitbtn"><span data-i18n="Items">Items</span></button>
</div>
<br />
<div class="epw">
<div style="display:inline-block;float:right;margin-right:4px;">
<span data-i18n="Type:" class="labellike">Type:</span>&nbsp;&nbsp;<select name="attr_wptype" style="width:200px;" value="Weapon">
<option value="Weapon" data-i18n="Weapon">Weapon</option>
<option value="Special Equipment" data-i18n="Special Equipment">Special Equipment</option>
</select>
</div>
<input type="hidden" name="attr_wptype" class="weaponhider" value="Weapon">
<div class="weapon">
<h3 data-i18n="Primary Weapon">Primary Weapon</h3>
</div>
<div class="specialequipment">
<h3 data-i18n="Special Equipment">Special Equipment</h3>
</div>
<div class="2colrow">
<div class="col nowrap">
<label data-i18n="Name:">Name:</label><input type="text" spellcheck="false" name="attr_wpname" /><br/>
<input type="hidden" name="attr_wptype" class="weaponhider" value="Weapon">
<div class="weapon">
<label data-i18n="Range:">Range:</label>
<select name="attr_wprange">
<option value="Adjacent" data-i18n="Adjacent Range Option">Adjacent</option>
<option value="Short" data-i18n="Short Range Option">Short</option>
<option value="Medium" data-i18n="Medium Range Option">Medium</option>
<option value="Long" data-i18n="Long Range Option">Long</option>
</select>
<br/>
<div class="2colrowx">
<div class="colx">
<label data-i18n="Aim Dice:">Aim Dice:</label><input type="number" name="attr_wpaimdice" value="0" />
</div>
<div class="colx">
<label data-i18n="Crit Dice:">Crit Dice:</label><input type="number" name="attr_wpcritdice" value="0" />
</div>
</div>
<label data-i18n="Damage:">Damage:</label><input type="text" spellcheck="false" name="attr_wpdamage" value="0" /><br/>
<div class="2colrowx">
<div class="colx">
<label data-i18n="Crit Dmg:">Crit Dmg:</label><input type="number" name="attr_wpcritdmg" value="0" />
</div>
<div class="colx">
<label data-i18n="Max Ammo:">Max Ammo:</label><input type="number" name="attr_wpammo_max" value="0" />
</div>
</div>
</div>
<div class="specialequipment">
<div class="clearfix">
<label data-i18n="Notes:">Notes:</label><textarea name="attr_wpnotes"></textarea>
</div>
<label data-i18n="Mod Slots:">Mod Slots:</label><input type="number" name="attr_wp_modslots" value="0" /><br/>
<div class="clearfix">
<label data-i18n="Mods:">Mods:</label><textarea name="attr_wpmods"></textarea>
</div>
</div>
</div>
<div class="col">
<input type="hidden" name="attr_wptype" class="weaponhider" value="Weapon">
<div class="weapon">
<div class="clearfix">
<label data-i18n="Notes:">Notes:</label><textarea name="attr_wpnotes"></textarea>
</div>
<label data-i18n="Mod Slots:">Mod Slots:</label><input type="number" name="attr_wp_modslots" value="0" /><br/>
<div class="clearfix">
<label data-i18n="Mods:">Mods:</label><textarea name="attr_wpmods"></textarea>
</div>
</div>
</div>
</div>
</div>
<div class="esw">
<h3 data-i18n="Secondary Weapon">Secondary Weapon</h3>
<div class="2colrow">
<div class="col nowrap">
<label data-i18n="Name:">Name:</label><input type="text" spellcheck="false" name="attr_wsname" /><br/>
<label data-i18n="Range:">Range:</label>
<select name="attr_wsrange">
<option value="Adjacent" data-i18n="Adjacent Range Option">Adjacent</option>
<option value="Short" data-i18n="Short Range Option">Short</option>
<option value="Medium" data-i18n="Medium Range Option">Medium</option>
<option value="Long" data-i18n="Long Range Option">Long</option>
</select>
<br/>
<div class="2colrowx">
<div class="colx">
<label data-i18n="Aim Dice:">Aim Dice:</label><input type="number" name="attr_wsaimdice" value="0" />
</div>
<div class="colx">
<label data-i18n="Crit Dice:">Crit Dice:</label><input type="number" name="attr_wscritdice" value="0" />
</div>
</div>
<label data-i18n="Damage:">Damage:</label><input type="text" spellcheck="false" name="attr_wsdamage" value="0" /><br/>
<div class="2colrowx">
<div class="colx">
<label data-i18n="Crit Dmg:">Crit Dmg:</label><input type="number" name="attr_wscritdmg" value="0" />
</div>
</div>
</div>
<div class="col">
<div class="clearfix">
<label data-i18n="Notes:">Notes:</label><textarea name="attr_wsnotes"></textarea>
</div>
<label data-i18n="Mod Slots:">Mod Slots:</label><input type="number" name="attr_ws_modslots" value="0" /><br/>
<div class="clearfix">
<label data-i18n="Mods:">Mods:</label><textarea name="attr_wsmods"></textarea>
</div>
</div>
</div>
</div>
<div class="eba">
<h3 data-i18n="Body Armor">Body Armor</h3>
<div class="2colrow">
<div class="col nowrap">
<label data-i18n="Name:">Name:</label><input type="text" spellcheck="false" name="attr_baname" /><br/>
<label data-i18n="Hit Points:">HP:</label><input type="number" name="attr_bahp" style="margin-right:10px;" value="0" />
<label style="width:74px;" data-i18n="Armor Points:">AP:</label><input type="number" name="attr_baap" style="margin-right:10px;" value="0" />
<label style="width:73px;" data-i18n="Shield Points:">SP:</label><input type="number" name="attr_basp" value="0" />
<div class="clearfix">
<label data-i18n="Notes:">Notes:</label><textarea name="attr_banotes"></textarea>
</div>
<label data-i18n="Mod Slots:">Mod Slots:</label><input type="number" name="attr_ba_modslots" value="0" /><br/>
<div class="clearfix">
<label data-i18n="Mods:">Mods:</label><textarea name="attr_bamods"></textarea>
</div>
</div>
<div class="col pockets">
<span class="labellike help tooltip">&nbsp;<span style="font-family:Pictos">?</span><span class="tooltiptext" data-i18n="Pockets Tooltip"><b>Pockets:</b><br/>A single item can be equipped in each pocket. Utility can hold Utility Items or Grenades.</span></span>
<h3 data-i18n="Pockets">Pockets</h3>
<label style="width:160px;">Utility Pockets:</label><input type="number" name="attr_ba_utilitypockets" value="1" /><br/>
<label style="width:160px;">Grenade Pockets:</label><input type="number" name="attr_ba_grenadepockets" value="0" /><br/>
<label style="width:160px;">Ammo Pockets:</label><input type="number" name="attr_ba_ammopockets" value="0" /><br/>
<label style="width:160px;">Hardpoints:</label><input type="number" name="attr_ba_hardpoints" value="0" /><br/>
</div>
</div>
</div>
<div class="ehg">
<h3 data-i18n="Headgear">Headgear</h3>
<div class="2colrow">
<div class="col">
<label data-i18n="Name:">Name:</label><input type="text" spellcheck="false" name="attr_hgname" /><br/>
<div class="clearfix">
<label data-i18n="Effects:">Effects:</label><textarea name="attr_hgeffects"></textarea>
</div>
</div>
<div class="col">
</div>
</div>
</div>
<div class="eit">
<h2 data-i18n="Equipped Items">Equipped Items</h2>
<fieldset class="repeating_items">
<h3 style="margin-bottom:0px;"><span name="attr_itemname">New Item</span></h3>
<div class="2colrow">
<div class="col nowrap">
<label data-i18n="Name:">Name:</label><input type="text" spellcheck="false" name="attr_itemname" value="New Item" /><br />
<div class="clearfix">
<label data-i18n="Effects:">Effects:</label><textarea name="attr_itemeffects"></textarea>
</div>
</div>
<div class="col nowrap">
<label data-i18n="Type:">Type:</label>
<select name="attr_itemtype">
<option value="Utility" data-i18n="Utility Item Option">Utility Item</option>
<option value="Grenade" data-i18n="Grenade Item Option">Grenade</option>
<option value="SpecialAmmo" data-i18n="Special Ammo Item Option">Special Ammo</option>
<option value="HeavyWeapon" data-i18n="Heavy Weapon Item Option">Heavy Weapon</option>
</select><br />
<input type="hidden" class="tabstoggle" name="attr_itemtype" value="Utility" />
<div class="itemUtility">
<label data-i18n="Usage:">Usage:</label>
<select name="attr_itemusage">
<option value="Passive" data-i18n="Passive Usage Option">Passive/Reactive</option>
<option value="Usable" data-i18n="Usable Usage Option">Usable</option>
</select><br />
<input type="hidden" class="tabstoggle" name="attr_itemusage" value="Passive" />
<div class="itemUsable">
<label data-i18n="Charges:">Charges:</label><input type="number" name="attr_itemcharges" value="0" /><br/>
</div>
</div>
<div class="itemGrenade">
<label data-i18n="Charges:">Charges:</label><input type="number" name="attr_itemcharges" value="0" />
<label style="width:55px;margin-left:8px" data-i18n="Range:">Range:</label><select style="width:73px;" name="attr_itemrange">
<option value="Short" data-i18n="Short Range Option">Short</option>
<option value="Medium" data-i18n="Medium Range Option">Medium</option>
<option value="Long" data-i18n="Long Range Option">Long</option>
</select>
<label style="width:72px;margin-left:4px" data-i18n="Radius:">Radius:</label><input type="number" name="attr_itemradius" value="0.0" step="0.5" /><br/>
<label data-i18n="Damage:">Damage:</label><input type="text" name="attr_itemdamage" value="0" /><br/>
<label data-i18n="Crit Dice:">Crit Dice:</label><input type="number" name="attr_itemcritdice" value="0" />
<label style="width:75px;margin-left:8px" data-i18n="Crit Dmg:">Crit Dmg:</label><input type="number" name="attr_itemcritdmg" value="0" />
<label style="width:76px;margin-left:8px" data-i18n="Breaking:">Breaking:</label><input type="number" name="attr_itembreaking" value="0" /><br/>
</div>
<div class="itemSpecialAmmo">
<label data-i18n="Reloads:">Reloads:</label><input type="number" name="attr_itemcharges" value="0" /><br/>
</div>
<div class="itemHeavyWeapon">
<label data-i18n="Charges:">Charges:</label><input type="number" name="attr_itemcharges" value="0" />
<label style="width:55px;margin-left:8px" data-i18n="Range:">Range:</label><select style="width:73px;" name="attr_itemrange">
<option value="Short" data-i18n="Short Range Option">Short</option>
<option value="Medium" data-i18n="Medium Range Option">Medium</option>
<option value="Long" data-i18n="Long Range Option">Long</option>
<option value="Self" data-i18n="Self Range Option">Self</option>
</select>
<label style="width:72px;margin-left:4px" data-i18n="Radius:">Radius:</label><input type="number" name="attr_itemradius" value="0.0" step="0.5" /><br/>
<label data-i18n="Damage:">Damage:</label><input type="text" name="attr_itemdamage" value="0" /><br/>
<label data-i18n="Crit Dice:">Crit Dice:</label><input type="number" name="attr_itemcritdice" value="0" />
<label style="width:75px;margin-left:8px" data-i18n="Crit Dmg:">Crit Dmg:</label><input type="number" name="attr_itemcritdmg" value="0" />
<label style="width:76px;margin-left:8px" data-i18n="Breaking:">Breaking:</label><input type="number" name="attr_itembreaking" value="0" /><br/>
</div>
</div>
</div>
<hr style="margin-top:2px;margin-bottom:6px;" />
</fieldset>
</div>
</div>
<!-- Responsibilities -->
<div class="res">
<h2 data-i18n="Responsibilities">Responsibilities</h2>
<div class="2colrow">
<div class="col2">
<label data-i18n="Acquisition:">Acquisition:</label><input type="number" name="attr_acquisition" value="0" />
<button type="action" name="act_useacquisition" class="skillbtn"><span data-i18n="Use">Use</span></button><br/>
<label data-i18n="Arcana:">Arcana:</label><input type="number" name="attr_arcana" value="0" />
<button type="action" name="act_usearcana" class="skillbtn"><span data-i18n="Use">Use</span></button><br/>
<label data-i18n="Engineering:">Engineering:</label><input type="number" name="attr_engineering" value="0" />
<button type="action" name="act_useengineering" class="skillbtn"><span data-i18n="Use">Use</span></button><br/>
<label data-i18n="Entertainment:">Entertainment:</label><input type="number" name="attr_entertainment" value="0" />
<button type="action" name="act_useentertainment" class="skillbtn"><span data-i18n="Use">Use</span></button><br/>
<label data-i18n="Leadership:">Leadership:</label><input type="number" name="attr_leadership" value="0" />
<button type="action" name="act_useleadership" class="skillbtn"><span data-i18n="Use">Use</span></button><br/>
<label data-i18n="Medicine:">Medicine:</label><input type="number" name="attr_medicine" value="0" />
<button type="action" name="act_usemedicine" class="skillbtn"><span data-i18n="Use">Use</span></button><br/>
<label data-i18n="Navigation:">Navigation:</label><input type="number" name="attr_navigation" value="0" />
<button type="action" name="act_usenavigation" class="skillbtn"><span data-i18n="Use">Use</span></button><br/>
<label data-i18n="Security:">Security:</label><input type="number" name="attr_security" value="0" />
<button type="action" name="act_usesecurity" class="skillbtn"><span data-i18n="Use">Use</span></button><br/>
<label data-i18n="Spirituality:">Spirituality:</label><input type="number" name="attr_spirituality" value="0" />
<button type="action" name="act_usespirituality" class="skillbtn"><span data-i18n="Use">Use</span></button><br/>
<label data-i18n="Sustenance:">Sustenance:</label><input type="number" name="attr_sustenance" value="0" />
<button type="action" name="act_usesustenance" class="skillbtn"><span data-i18n="Use">Use</span></button>
</div>
<div class="col1 nowrap">
<h3 data-i18n="Skill Action">Skill Action</h3>
<label data-i18n="Difficulty:">Difficulty:</label><select name="attr_skilldifficulty">
<option value="Easy" data-i18n="Easy Difficulty Option">Easy (+2 skill)</option>
<option value="Average" data-i18n="Average Difficulty Option">Average (+1 skill)</option>
<option value="Difficult" data-i18n="Difficult Difficulty Option">Difficult (+0)</option>
</select><br />
<label data-i18n="Responsibility:">Responsibility:</label><select name="attr_skillresponsibility">
<option value="acquisition" data-i18n="Acquisition Option">Acquisition</option>
<option value="arcana" data-i18n="Arcana Option">Arcana</option>
<option value="engineering" data-i18n="Engineering Option">Engineering</option>
<option value="entertainment" data-i18n="Entertainment Option">Entertainment</option>
<option value="leadership" data-i18n="Leadership Option">Leadership</option>
<option value="medicine" data-i18n="Medicine Option">Medicine</option>
<option value="navigation" data-i18n="Navigation Option">Navigation</option>
<option value="security" data-i18n="Security Option">Security</option>
<option value="spirituality" data-i18n="Spirituality Option">Spirituality</option>
<option value="sustenance" data-i18n="Sustenance Option">Sustenance</option>
</select><br />
<label data-i18n="Assist:">Assist:</label><select name="attr_skillassist">
<option value="No" data-i18n="No Assist Option">No (+0)</option>
<option value="Yes" data-i18n="Assist Option">Assisted By Another Character (+1 skill)</option>
</select><br />
<label data-i18n="Equipment:">Equipment:</label><select name="attr_skillitem">
<option value="No" data-i18n="No Equipment Option">None (+0)</option>
<option value="Yes" data-i18n="Equipment Option">Using a Useful Item or Piece of Equipment (+1 skill)</option>
</select><br />
<label data-i18n="Bonus Skill:">Bonus Skill:</label><input style="width:18%;position:relative;right:3px;margin-right:93px;" type="number" value="0" name="attr_bonusskill" />
<label data-i18n="Bonus Crit:">Bonus Crit:</label><input style="width:18%;position:relative;right:3px;" type="number" value="0" name="attr_bonusskillcrit" />
<div class="attack clearfix skillroller">
<button type="roll" name="roll_skillaction" class="btn" value="&{template:zafirskillaction} {{name=@{skillname}}} {{aim=[[ [Skill Dice] (@{skilldice})d6>5]]}} {{crit=[[ [Skill Crit Dice] (@{bonusskillcrit})d6>6]]}} {{responsibility=@{skillresponsibility}}} {{player=@{char_name}}}"><span data-i18n="Skill Roll">Skill Roll</span></button>
<select name="attr_skillname" style="width:110px;margin-right:10px;">
<option value="Coerce" data-i18n="Coerce Skill Option">Coerce</option>
<option value="Deceive" data-i18n="Deceive Skill Option">Deceive</option>
<option value="Persuade" data-i18n="Persuade Skill Option">Persuade</option>
<option value="Intuit" data-i18n="Intuit Skill Option">Intuit</option>
<option value="Investigate" data-i18n="Investigate Skill Option">Investigate</option>
<option value="Notice" data-i18n="Notice Skill Option">Notice</option>
<option value="Pilot" data-i18n="Pilot Skill Option">Pilot</option>
<option value="Stunts" data-i18n="Stunts Skill Option">Stunts</option>
<option value="Tinker" data-i18n="Tinker Skill Option">Tinker</option>
</select>
<label>+<span name="attr_skilldice"></span> <span data-i18n="skill">skill</span>&nbsp;&nbsp;&nbsp;+<span name="attr_bonusskillcrit"></span> <span data-i18n="crit">crit</span></label>
</div>
</div>
</div>
</div>
<!-- Inventory -->
<div class="inv">
<div class="3colrow">
<div class="col">
<h2 data-i18n="Money">Money</h2>
<label class="short money" style="font-family:Helvetica, Arial"></label><input type="number" class="expand" name="attr_money" value="0" /><br/>
</div>
<div class="col">
<h2 data-i18n="Inventory">Inventory</h2>
<textarea name="attr_inventory"></textarea>
</div>
<div class="col">
</div>
</div>
</div>
<!-- Misc -->
<div class="oth">
<div class="3colrow">
<div class="col">
<div class="clearfix">
<h2 data-i18n="Proficiencies">Proficiencies</h2>
<textarea name="attr_proficiencies" spellcheck="false"></textarea>
</div>
<br />
<h2><span data-i18n="Z-mail Address">Z-mail Address</span> <span class="labellike icontooltip tooltip">&nbsp;<span style="font-family:Pictos">?</span><span style="width:200px;left:-38px;" class="tooltiptext" data-i18n="Zmail Tooltip"><b>Z-mail Address</b><br/>Your character's personal address for Nexus messages. Formatted like: "my_zmail_addres.zmail"</span></span> </h2>
<input type="text" class="full" spellcheck="false" name="attr_zmail" />
</div>
<div class="col">
<h2 data-i18n="Languages">Languages</h2>
<h3 data-i18n="Fluent">Fluent</h3>
<textarea name="attr_fluentlanguages" spellcheck="false"></textarea>
<br />
<h3 data-i18n="Conversational">Conversational</h3>
<textarea name="attr_conversationallanguages" spellcheck="false"></textarea>
</div>
<div class="col">
<h2 data-i18n="Notes">Notes</h2>
<textarea name="attr_notes" spellcheck="false" style="height:250px;"></textarea>
</div>
</div>
</div>
<!-- Settings -->
<div class="set">
<h2 data-i18n="Settings">Settings</h2>
<div class="3colrow">
<div class="col">
<h3 data-i18n="General Sheet Options">General Sheet Options</h3>
<label style="width:250px;" data-i18n="Condense Upper Sheet:">Condense Upper Sheet:</label><input type="checkbox" name="attr_condensesheet" value="1"/><br />
<label style="width:250px;" data-i18n="Large Origin Textbox:">Large Origin Textbox:</label><input type="checkbox" name="attr_largeorigin" value="1"/><br />
<label style="width:250px;" data-i18n="Show Focus:">Show Focus:</label><input type="checkbox" name="attr_showfocus" value="1" checked /><br />
</div>
<div class="col">
<h3 data-i18n="Combat Tab Options">Combat Tab Options</h3>
<label style="width:250px;" data-i18n="Show Ammo Tracker:">Show Ammo Tracker:</label><input type="checkbox" name="attr_showammotracker" value="1" checked /><br />
<label style="width:250px;" data-i18n="Show Concealment:">Show Concealment:</label><input type="checkbox" name="attr_showconcealment" value="1" checked /><br />
<label style="width:250px;" data-i18n="Show Dodge Roller:">Show Dodge Roller:</label><input type="checkbox" name="attr_showdodgeroller" value="1" checked /><br />
<label style="width:250px;" data-i18n="Show Condition Tracker:">Show Condition Tracker:</label><input type="checkbox" name="attr_showconditiontracker" value="1" checked /><br />
<label style="width:250px;" data-i18n="Show Cooldown Tracker:">Show Cooldown Tracker:</label><input type="checkbox" name="attr_showcooldowntracker" value="1" checked /><br />
<label style="width:250px;" data-i18n="Show Charges Tracker:">Show Charges Tracker:</label><input type="checkbox" name="attr_showchargestracker" value="1" checked />
</div>
<div class="col">
<!-- Temporarily turning off Charactermancer
<h3 data-i18n="Charactermancer">Charactermancer</h3>
<button type="action" name="act_startcharactermancerfromsheet" class="btn" style="float:none;margin-left:0;">Start Charactermancer</button>
-->
<h3 data-i18n="Game Master Options">Game Master Options</h3>
<button type="action" name="act_switchsheettype" class="btn" style="float:none;margin-left:0;"><span data-i18n="Switch to Game Master's Toolkit">Switch to Game Master's Toolkit</span></button>
</div>
</div>
</div>
</div>
<div class="gmtools">
<button type="action" name="act_switchsheettype" class="btn" style="position:relative;top:-15px;"><span data-i18n="Switch to Character Sheet">Switch to Character Sheet</span></button>
<input type="hidden" class="tabstoggle" name="attr_gmTab" value="gmcombat" />
<div class="tabrow">
<h2 data-i18n="Game Master's Toolkit">Game Master's Toolkit</h2>
<button type="action" name="act_gmcombat" class="gmcombatbtn"><span data-i18n="Combat">Combat</span></button>
<button type="action" name="act_gmunits" class="gmunitsbtn"><span data-i18n="Enemy Units">Enemy Units</span></button>
</div>
<br />
<div class="gmcombat">
<div class="2colrow">
<div class="col1 nowrap">
<h3 data-i18n="Attacks">Attacks</h3>
<label data-i18n="Target Cover:">Target Cover:</label><select name="attr_atkcover">
<option value="Full Cover" data-i18n="Full Cover Option">Full Cover (+0)</option>
<option value="Half Cover" data-i18n="Half Cover Option">Half Cover (+1 aim)</option>
<option value="No Cover" data-i18n="No Cover Option">No Cover (+2 aim/+2 crit)</option>
</select><br />
<label data-i18n="Elevation:">Elevation:</label><select name="attr_atkelevation">
<option value="None" data-i18n="No Elevation Option">None (+0)</option>
<option value="Elevation" data-i18n="Elevation Option">Elevation (+1 aim)</option>
</select><br />
<label data-i18n="Range:">Range:</label><select name="attr_atkrange">
<option value="Optimal Range" data-i18n="Optimal Range Option">Optimal Range (+0)</option>
<option value="Non-optimal" data-i18n="Out Of Range Option">Too Close/Too Far (-1 aim)</option>
</select><br />
<label data-i18n="Overwatch:">Overwatch:</label><select name="attr_atkoverwatch">
<option value="No" data-i18n="Normal Attack Option">Normal Attack (+0)</option>
<option value="Yes" data-i18n="Overwatch Attack Option">Overwatch Reaction Attack (-1 aim)</option>
</select><br />
<label data-i18n="Bonus:">Bonus:</label><input type="number" name="attr_gmatkaimdice" value="0" style="position:relative;right:3px;"><span data-i18n="aim">aim</span>&nbsp;&nbsp;&nbsp;<input type="number" name="attr_gmatkcritdice" value="0">&nbsp;<span data-i18n="crit">crit</span>
<br />
<div class="customattack attack clearfix">
<button type="roll" name="roll_gmatk" class="btn" value="&{template:zafir} {{name=@{gmatkname}}} {{aim=[[ [Aim Dice] (@{gmatkaimdicetotal})d6>5]]}} {{crit=[[ [Crit Dice] (@{gmatkcritdicetotal})d6>6]]}} {{damage=[[(@{gmatkdamage})]]}} {{critdmg=[[(@{gmatkdamage}) + (@{gmatkcritdamage})]]}} {{notes=@{selectedenemyatknotes}}} {{enemy=@{selectedenemy}}}"><span data-i18n="Attack">Attack</span></button>
<input type="text" name="attr_gmatkname" spellcheck="false" placeholder="Custom" style="width:110px;margin-right:10px;">
<label>&nbsp;&nbsp;<input type="number" name="attr_gmatkaimdice" value="0">&nbsp;<span data-i18n="aim">aim</span>&nbsp;&nbsp;&nbsp;<input type="number" name="attr_gmatkcritdice" value="0">&nbsp;<span data-i18n="crit">crit</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" name="attr_gmatkdamage" spellcheck="false" value="0">(+<input type="number" name="attr_gmatkcritdamage" value="0">)</label>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemyatk0_id" value="">
<div class="customattack attack clearfix">
<button type="roll" name="roll_gmatk0" class="btn" value="&{template:zafir} {{name=@{selectedenemyatkname}}} {{aim=[[ [Aim Dice] (@{gmatkaimdicetotal}+@{selectedenemyatkaim})d6>5]]}} {{crit=[[ [Crit Dice] (@{gmatkcritdicetotal}+@{selectedenemyatkcrit})d6>6]]}} {{damage=[[(@{selectedenemyatkdmg})]]}} {{critdmg=[[(@{selectedenemyatkdmg}) + (@{selectedenemyatkcritdmg})]]}} {{notes=@{selectedenemyatknotes}}} {{enemy=@{selectedenemy}}}"><span data-i18n="Attack">Attack</span></button>
<label style="width:110px;overflow:hidden;text-overflow:ellipsis;"><span name="attr_selectedenemyatkname"></span></label>
<label>+<span name="attr_selectedenemyatkaim"></span> <span data-i18n="aim">aim</span>&nbsp;&nbsp;&nbsp;+<span name="attr_selectedenemyatkcrit"></span> <span data-i18n="crit">crit</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span name="attr_selectedenemyatkdmg"></span> (+<span name="attr_selectedenemyatkcritdmg"></span>)</label>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemyatk1_id" value="">
<div class="customattack attack clearfix">
<button type="roll" name="roll_gmatk1" class="btn" value="&{template:zafir} {{name=@{selectedenemyatk1name}}} {{aim=[[ [Aim Dice] (@{gmatkaimdicetotal}+@{selectedenemyatk1aim})d6>5]]}} {{crit=[[ [Crit Dice] (@{gmatkcritdicetotal}+@{selectedenemyatk1crit})d6>6]]}} {{damage=[[(@{selectedenemyatk1dmg})]]}} {{critdmg=[[(@{selectedenemyatk1dmg}) + (@{selectedenemyatk1critdmg})]]}} {{notes=@{selectedenemyatk1notes}}} {{enemy=@{selectedenemy}}}"><span data-i18n="Attack">Attack</span></button>
<label style="width:110px;overflow:hidden;text-overflow:ellipsis;"><span name="attr_selectedenemyatk1name"></span></label>
<label>+<span name="attr_selectedenemyatk1aim"></span> <span data-i18n="aim">aim</span>&nbsp;&nbsp;&nbsp;+<span name="attr_selectedenemyatk1crit"></span> <span data-i18n="crit">crit</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span name="attr_selectedenemyatk1dmg"></span> (+<span name="attr_selectedenemyatk1critdmg"></span>)</label>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemyatk2_id" value="">
<div class="customattack attack clearfix">
<button type="roll" name="roll_gmatk2" class="btn" value="&{template:zafir} {{name=@{selectedenemyatk2name}}} {{aim=[[ [Aim Dice] (@{gmatkaimdicetotal}+@{selectedenemyatk2aim})d6>5]]}} {{crit=[[ [Crit Dice] (@{gmatkcritdicetotal}+@{selectedenemyatk2crit})d6>6]]}} {{damage=[[(@{selectedenemyatk2dmg})]]}} {{critdmg=[[(@{selectedenemyatk2dmg}) + (@{selectedenemyatk2critdmg})]]}} {{notes=@{selectedenemyatk2notes}}} {{enemy=@{selectedenemy}}}"><span data-i18n="Attack">Attack</span></button>
<label style="width:110px;overflow:hidden;text-overflow:ellipsis;"><span name="attr_selectedenemyatk2name"></span></label>
<label>+<span name="attr_selectedenemyatk2aim"></span> <span data-i18n="aim">aim</span>&nbsp;&nbsp;&nbsp;+<span name="attr_selectedenemyatk2crit"></span> <span data-i18n="crit">crit</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span name="attr_selectedenemyatk2dmg"></span> (+<span name="attr_selectedenemyatk2critdmg"></span>)</label>
</div>
<br />
<!-- Grenade Attack -->
<h3 data-i18n="Area of Effect Attacks">Area of Effect Attacks</h3>
<label data-i18n="Targets:">Targets:</label><input style="margin-right:8px;" type="number" name="attr_gmgtargets" value="1" min="1" max="5">
<label style="width:80px;" data-i18n="Effects:">Effects:</label><input style="width:279px;" type="text" name="attr_gmgeffects" value="">
<div class="customattack attack clearfix">
<button type="roll" name="roll_gmgatk" class="btn"
value="&{template:zafirgrenade} {{name=@{gmgatkname}}} {{targets=@{gmgtargets}}} {{targetsroll=[[@{gmgtargets}]]}} {{crit1=[[ [Crit Dice] (@{gmgatkcritdice})d6>6]]}} {{damage1=[[ [Damage] @{gmgatkdamage}]]}} {{critdmg1=[[ [Damage] @{gmgatkdamage} + @{gmgatkcritdamage}]]}} {{crit2=[[ [Crit Dice] (@{gmgatkcritdice})d6>6]]}} {{damage2=[[ [Damage] @{gmgatkdamage}]]}} {{critdmg2=[[ [Damage] @{gmgatkdamage} + @{gmgatkcritdamage}]]}} {{crit3=[[ [Crit Dice] (@{gmgatkcritdice})d6>6]]}} {{damage3=[[ [Damage] @{gmgatkdamage}]]}} {{critdmg3=[[ [Damage] @{gmgatkdamage} + @{gmgatkcritdamage}]]}} {{crit4=[[ [Crit Dice] (@{gmgatkcritdice})d6>6]]}} {{damage4=[[ [Damage] @{gmgatkdamage}]]}} {{critdmg4=[[ [Damage] @{gmgatkdamage} + @{gmgatkcritdamage}]]}} {{crit5=[[ [Crit Dice] (@{gmgatkcritdice})d6>6]]}} {{damage5=[[ [Damage] @{gmgatkdamage}]]}} {{critdmg5=[[ [Damage] @{gmgatkdamage} + @{gmgatkcritdamage}]]}} {{notes=@{gmgeffects}}} {{enemy=@{selectedenemy}}}"><span data-i18n="Grenade Attack">Grenade Attack</span></button>
<input type="text" name="attr_gmgatkname" spellcheck="false" placeholder="Custom" style="width:110px;margin-right:10px;">
<label>&nbsp;<input type="number" name="attr_gmgatkcritdice" value="0">&nbsp;<span data-i18n="crit">crit</span>&nbsp;&nbsp;&nbsp;<input type="text" name="attr_gmgatkdamage" spellcheck="false" value="0">(+<input type="number" name="attr_gmgatkcritdamage" value="0">)</label>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemygrenadeatk0_id" value="">
<div class="customattack attack clearfix">
<button type="roll" name="roll_gmgatk" class="btn"
value="&{template:zafirgrenade} {{name=@{selectedenemygrenadeatk0name}}} {{targets=@{gmgtargets}}} {{targetsroll=[[@{gmgtargets}]]}} {{crit1=[[ [Crit Dice] (@{selectedenemygrenadeatk0critdice})d6>6]]}} {{damage1=[[ [Damage] @{selectedenemygrenadeatk0damage}]]}} {{critdmg1=[[ [Damage] @{selectedenemygrenadeatk0damage} + @{selectedenemygrenadeatk0critdmg}]]}} {{crit2=[[ [Crit Dice] (@{selectedenemygrenadeatk0critdice})d6>6]]}} {{damage2=[[ [Damage] @{selectedenemygrenadeatk0damage}]]}} {{critdmg2=[[ [Damage] @{selectedenemygrenadeatk0damage} + @{selectedenemygrenadeatk0critdmg}]]}} {{crit3=[[ [Crit Dice] (@{selectedenemygrenadeatk0critdice})d6>6]]}} {{damage3=[[ [Damage] @{selectedenemygrenadeatk0damage}]]}} {{critdmg3=[[ [Damage] @{selectedenemygrenadeatk0damage} + @{selectedenemygrenadeatk0critdmg}]]}} {{crit4=[[ [Crit Dice] (@{selectedenemygrenadeatk0critdice})d6>6]]}} {{damage4=[[ [Damage] @{selectedenemygrenadeatk0damage}]]}} {{critdmg4=[[ [Damage] @{selectedenemygrenadeatk0damage} + @{selectedenemygrenadeatk0critdmg}]]}} {{crit5=[[ [Crit Dice] (@{selectedenemygrenadeatk0critdice})d6>6]]}} {{damage5=[[ [Damage] @{selectedenemygrenadeatk0damage}]]}} {{critdmg5=[[ [Damage] @{selectedenemygrenadeatk0damage} + @{selectedenemygrenadeatk0critdmg}]]}} {{notes=@{selectedenemygrenadeatk0effect}}} {{enemy=@{selectedenemy}}}"><span data-i18n="Grenade Attack">Grenade Attack</span></button>
<label style="width:110px;overflow:hidden;text-overflow:ellipsis;"><span name="attr_selectedenemygrenadeatk0name"></span></label>
<label>+<span name="attr_selectedenemygrenadeatk0critdice" value="0"></span> <span data-i18n="crit">crit</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span name="attr_selectedenemygrenadeatk0damage" value="0"></span> (+<span name="attr_selectedenemygrenadeatk0critdmg"></span>)</label>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemygrenadeatk1_id" value="">
<div class="customattack attack clearfix">
<button type="roll" name="roll_gmgatk" class="btn"
value="&{template:zafirgrenade} {{name=@{selectedenemygrenadeatk1name}}} {{targets=@{gmgtargets}}} {{targetsroll=[[@{gmgtargets}]]}} {{crit1=[[ [Crit Dice] (@{selectedenemygrenadeatk1critdice})d6>6]]}} {{damage1=[[ [Damage] @{selectedenemygrenadeatk1damage}]]}} {{critdmg1=[[ [Damage] @{selectedenemygrenadeatk1damage} + @{selectedenemygrenadeatk1critdmg}]]}} {{crit2=[[ [Crit Dice] (@{selectedenemygrenadeatk1critdice})d6>6]]}} {{damage2=[[ [Damage] @{selectedenemygrenadeatk1damage}]]}} {{critdmg2=[[ [Damage] @{selectedenemygrenadeatk1damage} + @{selectedenemygrenadeatk1critdmg}]]}} {{crit3=[[ [Crit Dice] (@{selectedenemygrenadeatk1critdice})d6>6]]}} {{damage3=[[ [Damage] @{selectedenemygrenadeatk1damage}]]}} {{critdmg3=[[ [Damage] @{selectedenemygrenadeatk1damage} + @{selectedenemygrenadeatk1critdmg}]]}} {{crit4=[[ [Crit Dice] (@{selectedenemygrenadeatk1critdice})d6>6]]}} {{damage4=[[ [Damage] @{selectedenemygrenadeatk1damage}]]}} {{critdmg4=[[ [Damage] @{selectedenemygrenadeatk1damage} + @{selectedenemygrenadeatk1critdmg}]]}} {{crit5=[[ [Crit Dice] (@{selectedenemygrenadeatk1critdice})d6>6]]}} {{damage5=[[ [Damage] @{selectedenemygrenadeatk1damage}]]}} {{critdmg5=[[ [Damage] @{selectedenemygrenadeatk1damage} + @{selectedenemygrenadeatk1critdmg}]]}} {{notes=@{selectedenemygrenadeatk1effect}}} {{enemy=@{selectedenemy}}}"><span data-i18n="Grenade Attack">Grenade Attack</span></button>
<label style="width:110px;overflow:hidden;text-overflow:ellipsis;"><span name="attr_selectedenemygrenadeatk1name"></span></label>
<label>+<span name="attr_selectedenemygrenadeatk1critdice" value="0"></span> <span data-i18n="crit">crit</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span name="attr_selectedenemygrenadeatk1damage" value="0"></span> (+<span name="attr_selectedenemygrenadeatk1critdmg"></span>)</label>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemygrenadeatk2_id" value="">
<div class="customattack attack clearfix">
<button type="roll" name="roll_gmgatk" class="btn"
value="&{template:zafirgrenade} {{name=@{selectedenemygrenadeatk2name}}} {{targets=@{gmgtargets}}} {{targetsroll=[[@{gmgtargets}]]}} {{crit1=[[ [Crit Dice] (@{selectedenemygrenadeatk2critdice})d6>6]]}} {{damage1=[[ [Damage] @{selectedenemygrenadeatk2damage}]]}} {{critdmg1=[[ [Damage] @{selectedenemygrenadeatk2damage} + @{selectedenemygrenadeatk2critdmg}]]}} {{crit2=[[ [Crit Dice] (@{selectedenemygrenadeatk2critdice})d6>6]]}} {{damage2=[[ [Damage] @{selectedenemygrenadeatk2damage}]]}} {{critdmg2=[[ [Damage] @{selectedenemygrenadeatk2damage} + @{selectedenemygrenadeatk2critdmg}]]}} {{crit3=[[ [Crit Dice] (@{selectedenemygrenadeatk2critdice})d6>6]]}} {{damage3=[[ [Damage] @{selectedenemygrenadeatk2damage}]]}} {{critdmg3=[[ [Damage] @{selectedenemygrenadeatk2damage} + @{selectedenemygrenadeatk2critdmg}]]}} {{crit4=[[ [Crit Dice] (@{selectedenemygrenadeatk2critdice})d6>6]]}} {{damage4=[[ [Damage] @{selectedenemygrenadeatk2damage}]]}} {{critdmg4=[[ [Damage] @{selectedenemygrenadeatk2damage} + @{selectedenemygrenadeatk2critdmg}]]}} {{crit5=[[ [Crit Dice] (@{selectedenemygrenadeatk2critdice})d6>6]]}} {{damage5=[[ [Damage] @{selectedenemygrenadeatk2damage}]]}} {{critdmg5=[[ [Damage] @{selectedenemygrenadeatk2damage} + @{selectedenemygrenadeatk2critdmg}]]}} {{notes=@{selectedenemygrenadeatk2effect}}} {{enemy=@{selectedenemy}}}"><span data-i18n="Grenade Attack">Grenade Attack</span></button>
<label style="width:110px;overflow:hidden;text-overflow:ellipsis;"><span name="attr_selectedenemygrenadeatk2name"></span></label>
<label>+<span name="attr_selectedenemygrenadeatk2critdice" value="0"></span> <span data-i18n="crit">crit</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span name="attr_selectedenemygrenadeatk2damage" value="0"></span> (+<span name="attr_selectedenemygrenadeatk2critdmg"></span>)</label>
</div>
<br />
<!-- Will Attack -->
<div>
<h3 data-i18n="Will Attacks">Will Attacks</h3>
<label data-i18n="Wounded:">Wounded:</label><select name="attr_willatkwounded">
<option value="No" data-i18n="Full Health Option">Target at Full Health (+0)</option>
<option value="Yes" data-i18n="Wounded Option">Target Wounded (+1 will)</option>
</select><br />
<label data-i18n="Conditions:">Conditions:</label><select name="attr_willatkcondition">
<option value="No" data-i18n="No Conditions Option">None (+0)</option>
<option value="Yes" data-i18n="Some Conditions Option">Target has Negative Condition (+1 will)</option>
</select><br />
<label data-i18n="Isolated:">Isolated:</label><select name="attr_willatkisolated">
<option value="No" data-i18n="Not Isolated Option">No (+0)</option>
<option value="Yes" data-i18n="Isolated Option">Target is Isolated (no allies within 4 tiles) (+1 will)</option>
</select><br />
<label data-i18n="Panic:">Panic:</label><select name="attr_willatkpanic">
<option value="No" data-i18n="Not Panicked Option">No (+0)</option>
<option value="Ally" data-i18n="Ally Panicked Option">Target's Ally Panicked (+1 will)</option>
<option value="Target" data-i18n="Target Panicked Option">Target is Panicked (+1 will, +2 crit)</option>
</select><br />
<label data-i18n="Bonus:">Bonus:</label><input type="number" name="attr_gmwatkwill" value="0" style="position:relative;right:3px;"><span data-i18n="will">will</span>&nbsp;&nbsp;<input type="number" name="attr_gmwatkwillcrit" value="0"> <span data-i18n="crit">crit</span><br />
<div class="customattack attack clearfix willattack">
<button type="roll" name="roll_willattack" class="btn" value="&{template:zafirwillattack} {{name=@{gmwatkname}}} {{aim=[[ [Will Attack Dice] (@{gmwatkaimdice})d6>5]]}} {{crit=[[ [Crit Effect Dice] (@{gmwatkcritdice})d6>6]]}} {{resist=[[ [Resist Dice] (@{gmwatkresistdice})d6>6]]}} {{enemy=@{selectedenemy}}}"><span data-i18n="Will Attack">Will Attack</span></button>
<input type="text" name="attr_gmwatkname" spellcheck="false" placeholder="Custom" style="width:110px;margin-right:10px;">
<label><input type="number" name="attr_gmwatkwill" value="0"> <span data-i18n="will">will</span>&nbsp;&nbsp;<input type="number" name="attr_gmwatkwillcrit" value="0"> <span data-i18n="crit">crit</span>&nbsp;&nbsp;<input type="number" name="attr_gmenemywill" value="0"> <span data-i18n="resist">resist</span></label>
</div>
<div class="customattack attack clearfix willattack">
<button type="roll" name="roll_panicattack" class="btn" value="&{template:zafirwillattack} {{panic=panic}} {{aim=[[ [Panic Attack Dice] 2d6>5]]}} {{crit=[[0]]}} {{resist=[[ [Panic Resist Dice] (@{panicresist})d6>6]]}} {{enemy=@{panicname}}}"><span data-i18n="Test For Panic">Test For Panic</span></button>
<input type="text" name="attr_panicname" spellcheck="false" placeholder="Character" style="width:110px;margin-right:10px;">
<label>2 <span data-i18n="will">will</span>&nbsp;&nbsp;<input type="number" name="attr_panicresist" value="0"> <span data-i18n="resist">resist</span></label>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemywillatk0_id" value="">
<div class="customattack attack clearfix willattack">
<button type="roll" name="roll_willattack" class="btn" value="&{template:zafirwillattack} {{name=@{selectedenemywillatk0name}}} {{aim=[[ [Will Attack Dice] (@{gmwatkaimdice}+@{selectedenemywill})d6>5]]}} {{crit=[[ [Crit Effect Dice] (@{selectedenemywillatk0critdice})d6>6]]}} {{resist=[[ [Resist Dice] (@{gmwatkresistdice})d6>6]]}} {{enemy=@{selectedenemy}}}"><span data-i18n="Will Attack">Will Attack</span></button>
<label style="width:110px;overflow:hidden;text-overflow:ellipsis;"><span name="attr_selectedenemywillatk0name"></span></label>
<label>+<span name="attr_selectedenemywill"></span> <span data-i18n="will">will</span>&nbsp;&nbsp;+<span name="attr_selectedenemywillatk0critdice" value="0"></span> <span data-i18n="crit">crit</span>&nbsp;&nbsp;<input type="number" name="attr_gmenemywill" value="0"> <span data-i18n="resist">resist</span></label>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemywillatk1_id" value="">
<div class="customattack attack clearfix willattack">
<button type="roll" name="roll_willattack" class="btn" value="&{template:zafirwillattack} {{name=@{selectedenemywillatk1name}}} {{aim=[[ [Will Attack Dice] (@{gmwatkaimdice}+@{selectedenemywill})d6>5]]}} {{crit=[[ [Crit Effect Dice] (@{selectedenemywillatk1critdice})d6>6]]}} {{resist=[[ [Resist Dice] (@{gmwatkresistdice})d6>6]]}} {{enemy=@{selectedenemy}}}"><span data-i18n="Will Attack">Will Attack</span></button>
<label style="width:110px;overflow:hidden;text-overflow:ellipsis;"><span name="attr_selectedenemywillatk1name"></span></label>
<label>+<span name="attr_selectedenemywill"></span> <span data-i18n="will">will</span>&nbsp;&nbsp;+<span name="attr_selectedenemywillatk1critdice" value="0"></span> <span data-i18n="crit">crit</span>&nbsp;&nbsp;<input type="number" name="attr_gmenemywill" value="0"> <span data-i18n="resist">resist</span></label>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemywillatk2_id" value="">
<div class="customattack attack clearfix willattack">
<button type="roll" name="roll_willattack" class="btn" value="&{template:zafirwillattack} {{name=@{selectedenemywillatk2name}}} {{aim=[[ [Will Attack Dice] (@{gmwatkaimdice}+@{selectedenemywill})d6>5]]}} {{crit=[[ [Crit Effect Dice] (@{selectedenemywillatk2critdice})d6>6]]}} {{resist=[[ [Resist Dice] (@{gmwatkresistdice})d6>6]]}} {{enemy=@{selectedenemy}}}"><span data-i18n="Will Attack">Will Attack</span></button>
<label style="width:110px;overflow:hidden;text-overflow:ellipsis;"><span name="attr_selectedenemywillatk2name"></span></label>
<label>+<span name="attr_selectedenemywill"></span> <span data-i18n="will">will</span>&nbsp;&nbsp;+<span name="attr_selectedenemywillatk2critdice" value="0"></span> <span data-i18n="crit">crit</span>&nbsp;&nbsp;<input type="number" name="attr_gmenemywill" value="0"> <span data-i18n="resist">resist</span></label>
</div>
</div>
<br />
<div>
<h3 data-i18n="Abilities">Abilities</h3>
<div class="customattack attack clearfix">
<button type="roll" name="roll_useability" class="btn" value="&{template:zafir} {{name=@{gmuseabilityname}}} {{notes=@{gmuseabilityeffect}}} {{enemy=@{selectedenemy}}} {{label=Use Ability:}}"><span data-i18n="Use Ability">Use Ability</span></button>
<input type="text" name="attr_gmuseabilityname" spellcheck="false" placeholder="Ability Name" style="width:110px;margin-right:10px;">
<input type="text" name="attr_gmuseabilityeffect" spellcheck="false" placeholder="Ability Effect" style="width:275px;margin-right:10px;">
<label style="width:0px">&nbsp;</label>
</div>
<input type="hidden" class="tabstoggle" name="attr_selectedenemyabl0activation" value="Passive" />
<div class="itemNotPassive">
<input type="hidden" class="valuehider" name="attr_selectedenemyabl0_id" value="">
<div class="customattack attack clearfix">
<div class="flexcontainer">
<div class="left">
<label style="width:auto;"><span name="attr_selectedenemyabl0name"></span></label>
</div>
<div class="center usableeffects">
<span name="attr_selectedenemyabl0effect"></span>
</div>
<div class="right">
<button type="roll" name="roll_useitem" class="btn" style="float:none;" value="&{template:zafir} {{name=@{selectedenemyabl0name}}} {{notes=@{selectedenemyabl0effect}}} {{enemy=@{selectedenemy}}} {{label=Use Ability:}}"><span data-i18n="Use Ability">Use Ability</span>
</button>
</div>
</div>
</div>
</div>
<input type="hidden" class="tabstoggle" name="attr_selectedenemyabl1activation" value="Passive" />
<div class="itemNotPassive">
<input type="hidden" class="valuehider" name="attr_selectedenemyabl1_id" value="">
<div class="customattack attack clearfix">
<div class="flexcontainer">
<div class="left">
<label style="width:auto;"><span name="attr_selectedenemyabl1name"></span></label>
</div>
<div class="center usableeffects">
<span name="attr_selectedenemyabl1effect"></span>
</div>
<div class="right">
<button type="roll" name="roll_useitem" class="btn" style="float:none;" value="&{template:zafir} {{name=@{selectedenemyabl1name}}} {{notes=@{selectedenemyabl1effect}}} {{enemy=@{selectedenemy}}} {{label=Use Ability:}}"><span data-i18n="Use Ability">Use Ability</span>
</button>
</div>
</div>
</div>
</div>
<input type="hidden" class="tabstoggle" name="attr_selectedenemyabl2activation" value="Passive" />
<div class="itemNotPassive">
<input type="hidden" class="valuehider" name="attr_selectedenemyabl2_id" value="">
<div class="customattack attack clearfix">
<div class="flexcontainer">
<div class="left">
<label style="width:auto;"><span name="attr_selectedenemyabl2name"></span></label>
</div>
<div class="center usableeffects">
<span name="attr_selectedenemyabl2effect"></span>
</div>
<div class="right">
<button type="roll" name="roll_useitem" class="btn" style="float:none;" value="&{template:zafir} {{name=@{selectedenemyabl2name}}} {{notes=@{selectedenemyabl2effect}}} {{enemy=@{selectedenemy}}} {{label=Use Ability:}}"><span data-i18n="Use Ability">Use Ability</span>
</button>
</div>
</div>
</div>
</div>
<br />
<h3 data-i18n="Items">Items</h3>
<div class="customattack attack clearfix">
<button type="roll" name="roll_useitem" class="btn" value="&{template:zafir} {{name=@{gmuseitemname}}} {{notes=@{gmuseitemeffect}}} {{enemy=@{selectedenemy}}} {{label=Use Item:}}"><span data-i18n="Use Item">Use Item</span></button>
<input type="text" name="attr_gmuseitemname" spellcheck="false" placeholder="Item Name" style="width:110px;margin-right:10px;">
<input type="text" name="attr_gmuseitemeffect" spellcheck="false" placeholder="Item Effect" style="width:290px;margin-right:10px;">
<label style="width:0px">&nbsp;</label>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemyitem0_id" value="">
<div class="customattack attack clearfix">
<div class="flexcontainer">
<div class="left">
<label style="width:auto;"><span name="attr_selectedenemyitem0name"></span></label>
</div>
<div class="center usableeffects">
<span name="attr_selectedenemyitem0effect"></span>
</div>
<div class="right">
<button type="roll" name="roll_useitem" class="btn" style="float:none;" value="&{template:zafir} {{name=@{selectedenemyitem0name}}} {{notes=@{selectedenemyitem0effect}}} {{enemy=@{selectedenemy}}} {{label=Use Item:}}"><span data-i18n="Use Item">Use Item</span>
</button>
</div>
</div>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemyitem1_id" value="">
<div class="customattack attack clearfix">
<div class="flexcontainer">
<div class="left">
<label style="width:auto;"><span name="attr_selectedenemyitem1name"></span></label>
</div>
<div class="center usableeffects">
<span name="attr_selectedenemyitem1effect"></span>
</div>
<div class="right">
<button type="roll" name="roll_useitem" class="btn" style="float:none;" value="&{template:zafir} {{name=@{selectedenemyitem1name}}} {{notes=@{selectedenemyitem1effect}}} {{enemy=@{selectedenemy}}} {{label=Use Item:}}"><span data-i18n="Use Item">Use Item</span>
</button>
</div>
</div>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemyitem2_id" value="">
<div class="customattack attack clearfix">
<div class="flexcontainer">
<div class="left">
<label style="width:auto;"><span name="attr_selectedenemyitem2name"></span></label>
</div>
<div class="center usableeffects">
<span name="attr_selectedenemyitem2effect"></span>
</div>
<div class="right">
<button type="roll" name="roll_useitem" class="btn" style="float:none;" value="&{template:zafir} {{name=@{selectedenemyitem2name}}} {{notes=@{selectedenemyitem2effect}}} {{enemy=@{selectedenemy}}} {{label=Use Item:}}"><span data-i18n="Use Item">Use Item</span>
</button>
</div>
</div>
</div>
</div>
<br />
<!-- Dodge Roller -->
<div>
<h3 data-i18n="Dodge">Dodge</h3>
<div class="attack customattack clearfix dodgeroller">
<button type="roll" name="roll_dodge" class="btn" value="&{template:zafirdodge} {{dodge=[[ [Dodge Dice] (@{gmdodgedice})d6>6]]}} {{enemy=@{selectedenemy}}}"><span data-i18n="Dodge">Dodge</span></button>
<label style="width:110px" data-i18n="Dodge Dice:">Dodge Dice:</label><input type="number" name="attr_gmdodgedice" value="0" />
</div>
</div>
</div>
<div class="col2 nowrap readonly gmunits">
<input type="hidden" class="valuehider" name="attr_selectedenemyid" value="">
<div class="selectedunit">
<div class="nameplate">
<span name="attr_selectedenemy">&nbsp;</span>
</div>
<div class="content">
<div class="3colrowx">
<div class="colx">
<span class="label" data-i18n="Hit Points:">HP:</span> <span name="attr_selectedenemyhp"></span>
</div>
<input type="hidden" class="hideifzero valuehider" name="attr_selectedenemyap" value=""/>
<div class="colx">
<span class="label" data-i18n="Armor Points:">AP:</span> <span name="attr_selectedenemyap"></span>
</div>
<input type="hidden" class="hideifzero valuehider" name="attr_selectedenemysp" value=""/>
<div class="colx">
<span class="label" data-i18n="Shield Points:">SP:</span> <span name="attr_selectedenemysp"></span>
</div>
</div>
<div class="3colrowx">
<div class="colx">
<span class="label" data-i18n="Speed:">Speed:</span> <span name="attr_selectedenemyspeed"></span>
</div>
<div class="colx">
<span class="label" data-i18n="Aim:">Aim:</span> <span name="attr_selectedenemyaim"></span>
</div>
<div class="colx">
<span class="label" data-i18n="Will:">Will:</span> <span name="attr_selectedenemywill"></span>
</div>
</div>
<input type="hidden" class="hideifzero" name="attr_selectedenemydodge" value="0"/>
<div>
<span class="label" data-i18n="Dodge:">Dodge:</span> <span name="attr_selectedenemydodge"></span>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemynotes" value=""/>
<div class="notes wrap" style="margin-left:8px;"><span name="attr_selectedenemynotes"></span></div>
<!-- Attacks -->
<input type="hidden" class="valuehider" name="attr_selectedenemyatk0_id" value="">
<div class="attackinfo">
<div class="unitsectionlabel" data-i18n="Attacks:">Attacks:</div>
<input type="hidden" class="hideifone" name="attr_gmobfuscateattacks" value="0"/>
<span class="label" name="attr_selectedenemyatkname">Weapon</span>
<input type="hidden" class="hideifzero" name="attr_gmobfuscateattacks" value="0"/>
<span class="label">???</span>
<input type="hidden" class="hideifzero" name="attr_gmshowattackinfo" value="1"/>
<div class="stats">
<span class="label2" data-i18n="Aim:">Aim:</span> +<span name="attr_selectedenemyatkaim"></span>,
<span class="label2" data-i18n="Crit:">Crit:</span> +<span name="attr_selectedenemyatkcrit"></span>,
<span class="label2" data-i18n="Dmg:">Dmg:</span> <span name="attr_selectedenemyatkdmg"></span> (+<span name="attr_selectedenemyatkcritdmg"></span>)
<input type="hidden" class="valuehider" name="attr_selectedenemyatknotes" value=""/>
<div class="notes wrap">&#8226; <span name="attr_selectedenemyatknotes"></span></div>
</div>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemyatk1_id" value="">
<div class="attackinfo">
<input type="hidden" class="hideifone" name="attr_gmobfuscateattacks" value="0"/>
<span class="label" name="attr_selectedenemyatk1name">Weapon</span>
<input type="hidden" class="hideifzero" name="attr_gmobfuscateattacks" value="0"/>
<span class="label">???</span>
<input type="hidden" class="hideifzero" name="attr_gmshowattackinfo" value="1"/>
<input type="hidden" class="hideifzero" name="attr_gmshowattackinfo" value="1"/>
<div class="stats">
<span class="label2" data-i18n="Aim:">Aim:</span> +<span name="attr_selectedenemyatk1aim"></span>,
<span class="label2" data-i18n="Crit:">Crit:</span> +<span name="attr_selectedenemyatk1crit"></span>,
<span class="label2" data-i18n="Dmg:">Dmg:</span> <span name="attr_selectedenemyatk1dmg"></span> (+<span name="attr_selectedenemyatk1critdmg"></span>)
<input type="hidden" class="valuehider" name="attr_selectedenemyatk1notes" value=""/>
<div class="notes wrap">&#8226; <span name="attr_selectedenemyatk1notes"></span></div>
</div>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemyatk2_id" value="">
<div class="attackinfo">
<input type="hidden" class="hideifone" name="attr_gmobfuscateattacks" value="0"/>
<span class="label" name="attr_selectedenemyatk2name">Weapon</span>
<input type="hidden" class="hideifzero" name="attr_gmobfuscateattacks" value="0"/>
<span class="label">???</span>
<input type="hidden" class="hideifzero" name="attr_gmshowattackinfo" value="1"/>
<div class="stats">
<span class="label2" data-i18n="Aim:">Aim:</span> +<span name="attr_selectedenemyatk2aim"></span>,
<span class="label2" data-i18n="Crit:">Crit:</span> +<span name="attr_selectedenemyatk2crit"></span>,
<span class="label2" data-i18n="Dmg:">Dmg:</span> <span name="attr_selectedenemyatk2dmg"></span> (+<span name="attr_selectedenemyatk2critdmg"></span>)
<input type="hidden" class="valuehider" name="attr_selectedenemyatk2notes" value=""/>
<div class="notes wrap">&#8226; <span name="attr_selectedenemyatk2notes"></span></div>
</div>
</div>
<!-- Grenade Attacks -->
<input type="hidden" class="valuehider" name="attr_selectedenemygrenadeatk0_id" value="">
<div class="attackinfo">
<div class="unitsectionlabel" data-i18n="Area of Effect Attacks:">Area of Effect Attacks:</div>
<input type="hidden" class="hideifone" name="attr_gmobfuscateattacks" value="0"/>
<span class="label" name="attr_selectedenemygrenadeatk0name">Weapon</span>
<input type="hidden" class="hideifzero" name="attr_gmobfuscateattacks" value="0"/>
<span class="label">???</span>
<input type="hidden" class="hideifzero" name="attr_gmshowattackinfo" value="1"/>
<div class="stats">
<span class="label2" data-i18n="Charges:">Charges:</span> <span name="attr_selectedenemygrenadeatk0charges"></span>,
<span class="label2" data-i18n="Range:">Range:</span> <span name="attr_selectedenemygrenadeatk0range"></span>,
<span class="label2" data-i18n="Radius:">Radius:</span> <span name="attr_selectedenemygrenadeatk0radius"></span>,<br />
<span class="label2" data-i18n="Dmg:">Dmg:</span> <span name="attr_selectedenemygrenadeatk0damage"></span> (+<span name="attr_selectedenemygrenadeatk0critdmg"></span>),
<span class="label2" data-i18n="Crit:">Crit:</span> +<span name="attr_selectedenemygrenadeatk0critdice"></span>,
<span class="label2" data-i18n="Breaking:">Breaking:</span> +<span name="attr_selectedenemygrenadeatk0breaking"></span>
<input type="hidden" class="valuehider" name="attr_selectedenemygrenadeatk0effect" value=""/>
<div class="notes wrap">&#8226; <span name="attr_selectedenemygrenadeatk0effect"></span></div>
</div>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemygrenadeatk1_id" value="">
<div class="attackinfo">
<input type="hidden" class="hideifone" name="attr_gmobfuscateattacks" value="0"/>
<span class="label" name="attr_selectedenemygrenadeatk1name">Weapon</span>
<input type="hidden" class="hideifzero" name="attr_gmobfuscateattacks" value="0"/>
<span class="label">???</span>
<input type="hidden" class="hideifzero" name="attr_gmshowattackinfo" value="1"/>
<div class="stats">
<span class="label2" data-i18n="Charges:">Charges:</span> <span name="attr_selectedenemygrenadeatk1charges"></span>,
<span class="label2" data-i18n="Range:">Range:</span> <span name="attr_selectedenemygrenadeatk1range"></span>,
<span class="label2" data-i18n="Radius:">Radius:</span> <span name="attr_selectedenemygrenadeatk1radius"></span>,<br />
<span class="label2" data-i18n="Dmg:">Dmg:</span> <span name="attr_selectedenemygrenadeatk1damage"></span> (+<span name="attr_selectedenemygrenadeatk1critdmg"></span>),
<span class="label2" data-i18n="Crit:">Crit:</span> +<span name="attr_selectedenemygrenadeatk1critdice"></span>,
<span class="label2" data-i18n="Breaking:">Breaking:</span> +<span name="attr_selectedenemygrenadeatk1breaking"></span>
<input type="hidden" class="valuehider" name="attr_selectedenemygrenadeatk1effect" value=""/>
<div class="notes wrap">&#8226; <span name="attr_selectedenemygrenadeatk1effect"></span></div>
</div>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemygrenadeatk2_id" value="">
<div class="attackinfo">
<input type="hidden" class="hideifone" name="attr_gmobfuscateattacks" value="0"/>
<span class="label" name="attr_selectedenemygrenadeatk2name">Weapon</span>
<input type="hidden" class="hideifzero" name="attr_gmobfuscateattacks" value="0"/>
<span class="label">???</span>
<input type="hidden" class="hideifzero" name="attr_gmshowattackinfo" value="1"/>
<div class="stats">
<span class="label2" data-i18n="Charges:">Charges:</span> <span name="attr_selectedenemygrenadeatk2charges"></span>,
<span class="label2" data-i18n="Range:">Range:</span> <span name="attr_selectedenemygrenadeatk2range"></span>,
<span class="label2" data-i18n="Radius:">Radius:</span> <span name="attr_selectedenemygrenadeatk2radius"></span>,<br />
<span class="label2" data-i18n="Dmg:">Dmg:</span> <span name="attr_selectedenemygrenadeatk2damage"></span> (+<span name="attr_selectedenemygrenadeatk2critdmg"></span>),
<span class="label2" data-i18n="Crit:">Crit:</span> +<span name="attr_selectedenemygrenadeatk2critdice"></span>,
<span class="label2" data-i18n="Breaking:">Breaking:</span> +<span name="attr_selectedenemygrenadeatk2breaking"></span>
<input type="hidden" class="valuehider" name="attr_selectedenemygrenadeatk2effect" value=""/>
<div class="notes wrap">&#8226; <span name="attr_selectedenemygrenadeatk2effect"></span></div>
</div>
</div>
<!-- Will Attacks -->
<input type="hidden" class="valuehider" name="attr_selectedenemywillatk0_id" value="">
<div class="attackinfo">
<div class="unitsectionlabel" data-i18n="Will Attacks:">Will Attacks:</div>
<input type="hidden" class="hideifone" name="attr_gmobfuscateabilities" value="0"/>
<span class="label" name="attr_selectedenemywillatk0name">Ability</span>
<input type="hidden" class="hideifzero" name="attr_gmobfuscateabilities" value="0"/>
<span class="label">???</span>
<input type="hidden" class="hideifzero" name="attr_gmshowabilityinfo" value="1"/>
<span style="font-style:italic;">(<span name="attr_selectedenemywillatk0activation"></span>)</span>
<input type="hidden" class="hideifzero" name="attr_gmshowabilityinfo" value="1"/>
<div class="stats">
<input type="hidden" class="hideifzero" name="attr_selectedenemywillatk0cooldown"/>
<span><span class="label2" data-i18n="Cooldown:">Cooldown:</span> <span name="attr_selectedenemywillatk0cooldown"></span>, </span>
<input type="hidden" class="hideifzero" name="attr_selectedenemywillatk0charges"/>
<span><span class="label2" data-i18n="Charges:">Charges:</span> <span name="attr_selectedenemywillatk0charges"></span>, </span>
<span class="label2" data-i18n="Crit:">Crit:</span> +<span name="attr_selectedenemywillatk0critdice"></span>
<input type="hidden" class="valuehider" name="attr_selectedenemywillatk0effect" value=""/>
<div class="notes wrap">&#8226; <span name="attr_selectedenemywillatk0effect"></span></div>
</div>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemywillatk1_id" value="">
<div class="attackinfo">
<input type="hidden" class="hideifone" name="attr_gmobfuscateabilities" value="0"/>
<span class="label" name="attr_selectedenemywillatk1name">Ability</span>
<input type="hidden" class="hideifzero" name="attr_gmobfuscateabilities" value="0"/>
<span class="label">???</span>
<input type="hidden" class="hideifzero" name="attr_gmshowabilityinfo" value="1"/>
<span style="font-style:italic;">(<span name="attr_selectedenemywillatk1activation"></span>)</span>
<input type="hidden" class="hideifzero" name="attr_gmshowabilityinfo" value="1"/>
<div class="stats">
<input type="hidden" class="hideifzero" name="attr_selectedenemywillatk1cooldown"/>
<span><span class="label2" data-i18n="Cooldown:">Cooldown:</span> <span name="attr_selectedenemywillatk1cooldown"></span>, </span>
<input type="hidden" class="hideifzero" name="attr_selectedenemywillatk1charges"/>
<span><span class="label2" data-i18n="Charges:">Charges:</span> <span name="attr_selectedenemywillatk1charges"></span>, </span>
<span class="label2" data-i18n="Crit:">Crit:</span> +<span name="attr_selectedenemywillatk1critdice"></span>
<input type="hidden" class="valuehider" name="attr_selectedenemywillatk1effect" value=""/>
<div class="notes wrap">&#8226; <span name="attr_selectedenemywillatk1effect"></span></div>
</div>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemywillatk2_id" value="">
<div class="attackinfo">
<input type="hidden" class="hideifone" name="attr_gmobfuscateabilities" value="0"/>
<span class="label" name="attr_selectedenemywillatk2name">Ability</span>
<input type="hidden" class="hideifzero" name="attr_gmobfuscateabilities" value="0"/>
<span class="label">???</span>
<input type="hidden" class="hideifzero" name="attr_gmshowabilityinfo" value="1"/>
<span style="font-style:italic;">(<span name="attr_selectedenemywillatk2activation"></span>)</span>
<input type="hidden" class="hideifzero" name="attr_gmshowabilityinfo" value="1"/>
<div class="stats">
<input type="hidden" class="hideifzero" name="attr_selectedenemywillatk2cooldown"/>
<span><span class="label2" data-i18n="Cooldown:">Cooldown:</span> <span name="attr_selectedenemywillatk2cooldown"></span>, </span>
<input type="hidden" class="hideifzero" name="attr_selectedenemywillatk2charges"/>
<span><span class="label2" data-i18n="Charges:">Charges:</span> <span name="attr_selectedenemywillatk2charges"></span>, </span>
<span class="label2" data-i18n="Crit:">Crit:</span> +<span name="attr_selectedenemywillatk2critdice"></span>
<input type="hidden" class="valuehider" name="attr_selectedenemywillatk2effect" value=""/>
<div class="notes wrap">&#8226; <span name="attr_selectedenemywillatk2effect"></span></div>
</div>
</div>
<!-- ABILITIES -->
<input type="hidden" class="valuehider" name="attr_selectedenemyabl0_id" value="">
<div class="attackinfo">
<div class="unitsectionlabel" data-i18n="Abilities:">Abilities:</div>
<input type="hidden" class="hideifone" name="attr_gmobfuscateabilities" value="0"/>
<span class="label" name="attr_selectedenemyabl0name">Ability</span>
<input type="hidden" class="hideifzero" name="attr_gmobfuscateabilities" value="0"/>
<span class="label">???</span>
<input type="hidden" class="hideifzero" name="attr_gmshowabilityinfo" value="1"/>
<span style="font-style:italic;">(<span name="attr_selectedenemyabl0activation"></span>)</span>
<input type="hidden" class="hideifzero" name="attr_gmshowabilityinfo" value="1"/>
<div class="stats">
<input type="hidden" class="hideifzero" name="attr_selectedenemyabl0cooldown"/>
<span><span class="label2" data-i18n="Cooldown:">Cooldown:</span> <span name="attr_selectedenemyabl0cooldown"></span>&nbsp;&nbsp;&nbsp;</span>
<input type="hidden" class="hideifzero" name="attr_selectedenemyabl0charges"/>
<span><span class="label2" data-i18n="Charges:">Charges:</span> <span name="attr_selectedenemyabl0charges"></span></span>
<input type="hidden" class="valuehider" name="attr_selectedenemyabl0effect" value=""/>
<div class="notes wrap">&#8226; <span name="attr_selectedenemyabl0effect"></span></div>
</div>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemyabl1_id" value="">
<div class="attackinfo">
<input type="hidden" class="hideifone" name="attr_gmobfuscateabilities" value="0"/>
<span class="label" name="attr_selectedenemyabl1name">Ability</span>
<input type="hidden" class="hideifzero" name="attr_gmobfuscateabilities" value="0"/>
<span class="label">???</span>
<input type="hidden" class="hideifzero" name="attr_gmshowabilityinfo" value="1"/>
<span style="font-style:italic;">(<span name="attr_selectedenemyabl1activation"></span>)</span>
<input type="hidden" class="hideifzero" name="attr_gmshowabilityinfo" value="1"/>
<div class="stats">
<input type="hidden" class="hideifzero" name="attr_selectedenemyabl1cooldown"/>
<span><span class="label2" data-i18n="Cooldown:">Cooldown:</span> <span name="attr_selectedenemyabl1cooldown"></span>&nbsp;&nbsp;&nbsp;</span>
<input type="hidden" class="hideifzero" name="attr_selectedenemyabl1charges"/>
<span><span class="label2" data-i18n="Charges:">Charges:</span> <span name="attr_selectedenemyabl1charges"></span></span>
<input type="hidden" class="valuehider" name="attr_selectedenemyabl1effect" value=""/>
<div class="notes wrap">&#8226; <span name="attr_selectedenemyabl1effect"></span></div>
</div>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemyabl2_id" value="">
<div class="attackinfo">
<input type="hidden" class="hideifone" name="attr_gmobfuscateabilities" value="0"/>
<span class="label" name="attr_selectedenemyabl2name">Ability</span>
<input type="hidden" class="hideifzero" name="attr_gmobfuscateabilities" value="0"/>
<span class="label">???</span>
<input type="hidden" class="hideifzero" name="attr_gmshowabilityinfo" value="1"/>
<span style="font-style:italic;">(<span name="attr_selectedenemyabl2activation"></span>)</span>
<input type="hidden" class="hideifzero" name="attr_gmshowabilityinfo" value="1"/>
<div class="stats">
<input type="hidden" class="hideifzero" name="attr_selectedenemyabl2cooldown"/>
<span><span class="label2" data-i18n="Cooldown:">Cooldown:</span> <span name="attr_selectedenemyabl2cooldown"></span>&nbsp;&nbsp;&nbsp;</span>
<input type="hidden" class="hideifzero" name="attr_selectedenemyabl2charges"/>
<span><span class="label2" data-i18n="Charges:">Charges:</span> <span name="attr_selectedenemyabl2charges"></span></span>
<input type="hidden" class="valuehider" name="attr_selectedenemyabl2effect" value=""/>
<div class="notes wrap">&#8226; <span name="attr_selectedenemyabl2effect"></span></div>
</div>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemyabl3_id" value="">
<div class="attackinfo">
<input type="hidden" class="hideifone" name="attr_gmobfuscateabilities" value="0"/>
<span class="label" name="attr_selectedenemyabl3name">Ability</span>
<input type="hidden" class="hideifzero" name="attr_gmobfuscateabilities" value="0"/>
<span class="label">???</span>
<input type="hidden" class="hideifzero" name="attr_gmshowabilityinfo" value="1"/>
<span style="font-style:italic;">(<span name="attr_selectedenemyabl3activation"></span>)</span>
<input type="hidden" class="hideifzero" name="attr_gmshowabilityinfo" value="1"/>
<div class="stats">
<input type="hidden" class="hideifzero" name="attr_selectedenemyabl3cooldown"/>
<span><span class="label2" data-i18n="Cooldown:">Cooldown:</span> <span name="attr_selectedenemyabl3cooldown"></span>&nbsp;&nbsp;&nbsp;</span>
<input type="hidden" class="hideifzero" name="attr_selectedenemyabl3charges"/>
<span><span class="label2" data-i18n="Charges:">Charges:</span> <span name="attr_selectedenemyabl3charges"></span></span>
<input type="hidden" class="valuehider" name="attr_selectedenemyabl3effect" value=""/>
<div class="notes wrap">&#8226; <span name="attr_selectedenemyabl3effect"></span></div>
</div>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemyabl4_id" value="">
<div class="attackinfo">
<input type="hidden" class="hideifone" name="attr_gmobfuscateabilities" value="0"/>
<span class="label" name="attr_selectedenemyabl4name">Ability</span>
<input type="hidden" class="hideifzero" name="attr_gmobfuscateabilities" value="0"/>
<span class="label">???</span>
<input type="hidden" class="hideifzero" name="attr_gmshowabilityinfo" value="1"/>
<span style="font-style:italic;">(<span name="attr_selectedenemyabl4activation"></span>)</span>
<input type="hidden" class="hideifzero" name="attr_gmshowabilityinfo" value="1"/>
<div class="stats">
<input type="hidden" class="hideifzero" name="attr_selectedenemyabl4cooldown"/>
<span><span class="label2" data-i18n="Cooldown:">Cooldown:</span> <span name="attr_selectedenemyabl4cooldown"></span>&nbsp;&nbsp;&nbsp;</span>
<input type="hidden" class="hideifzero" name="attr_selectedenemyabl4charges"/>
<span><span class="label2" data-i18n="Charges:">Charges:</span> <span name="attr_selectedenemyabl4charges"></span></span>
<input type="hidden" class="valuehider" name="attr_selectedenemyabl4effect" value=""/>
<div class="notes wrap">&#8226; <span name="attr_selectedenemyabl4effect"></span></div>
</div>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemyabl5_id" value="">
<div class="attackinfo">
<input type="hidden" class="hideifone" name="attr_gmobfuscateabilities" value="0"/>
<span class="label" name="attr_selectedenemyabl5name">Ability</span>
<input type="hidden" class="hideifzero" name="attr_gmobfuscateabilities" value="0"/>
<span class="label">???</span>
<input type="hidden" class="hideifzero" name="attr_gmshowabilityinfo" value="1"/>
<span style="font-style:italic;">(<span name="attr_selectedenemyabl5activation"></span>)</span>
<input type="hidden" class="hideifzero" name="attr_gmshowabilityinfo" value="1"/>
<div class="stats">
<input type="hidden" class="hideifzero" name="attr_selectedenemyabl5cooldown"/>
<span><span class="label2" data-i18n="Cooldown:">Cooldown:</span> <span name="attr_selectedenemyabl5cooldown"></span>&nbsp;&nbsp;&nbsp;</span>
<input type="hidden" class="hideifzero" name="attr_selectedenemyabl5charges"/>
<span><span class="label2" data-i18n="Charges:">Charges:</span> <span name="attr_selectedenemyabl5charges"></span></span>
<input type="hidden" class="valuehider" name="attr_selectedenemyabl5effect" value=""/>
<div class="notes wrap">&#8226; <span name="attr_selectedenemyabl5effect"></span></div>
</div>
</div>
<!-- Items -->
<input type="hidden" class="valuehider" name="attr_selectedenemyitem0_id" value="">
<div class="attackinfo">
<div class="unitsectionlabel" data-i18n="Items:">Items:</div>
<input type="hidden" class="hideifone" name="attr_gmobfuscateabilities" value="0"/>
<span class="label" name="attr_selectedenemyitem0name">Item</span>
<input type="hidden" class="hideifzero" name="attr_gmobfuscateabilities" value="0"/>
<span class="label">???</span>
<input type="hidden" class="hideifzero" name="attr_gmshowabilityinfo" value="1"/>
<div class="stats">
<input type="hidden" class="hideifzero" name="attr_selectedenemyitem0charges"/>
<span><span class="label2" data-i18n="Charges:">Charges:</span> <span name="attr_selectedenemyitem0charges"></span></span>
<input type="hidden" class="valuehider" name="attr_selectedenemyitem0effect" value=""/>
<div class="notes wrap">&#8226; <span name="attr_selectedenemyitem0effect"></span></div>
</div>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemyitem1_id" value="">
<div class="attackinfo">
<input type="hidden" class="hideifone" name="attr_gmobfuscateabilities" value="0"/>
<span class="label" name="attr_selectedenemyitem1name">Item</span>
<input type="hidden" class="hideifzero" name="attr_gmobfuscateabilities" value="0"/>
<span class="label">???</span>
<input type="hidden" class="hideifzero" name="attr_gmshowabilityinfo" value="1"/>
<div class="stats">
<input type="hidden" class="hideifzero" name="attr_selectedenemyitem1charges"/>
<span><span class="label2" data-i18n="Charges:">Charges:</span> <span name="attr_selectedenemyitem1charges"></span></span>
<input type="hidden" class="valuehider" name="attr_selectedenemyitem1effect" value=""/>
<div class="notes wrap">&#8226; <span name="attr_selectedenemyitem1effect"></span></div>
</div>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemyitem2_id" value="">
<div class="attackinfo">
<input type="hidden" class="hideifone" name="attr_gmobfuscateabilities" value="0"/>
<span class="label" name="attr_selectedenemyitem2name">Item</span>
<input type="hidden" class="hideifzero" name="attr_gmobfuscateabilities" value="0"/>
<span class="label">???</span>
<input type="hidden" class="hideifzero" name="attr_gmshowabilityinfo" value="1"/>
<div class="stats">
<input type="hidden" class="hideifzero" name="attr_selectedenemyitem2charges"/>
<span><span class="label2" data-i18n="Charges:">Charges:</span> <span name="attr_selectedenemyitem2charges"></span></span>
<input type="hidden" class="valuehider" name="attr_selectedenemyitem2effect" value=""/>
<div class="notes wrap">&#8226; <span name="attr_selectedenemyitem2effect"></span></div>
</div>
</div>
</div>
</div>
<button type="action" name="act_refreshselectedunit" class="btn" style="float:right;width:auto;padding-top:4px;padding-bottom:4px;">Refresh</button>
<h3 data-i18n="Enemy Unit Selector">Enemy Unit Selector</h3>
<fieldset class="repeating_gmenemyunitlist">
<input type="hidden" class="hideifone" name="attr_selected" value="0">
<button type="action" name="act_selectunit" class="btn"><span name="attr_gmunitname"></span></button>
<input type="hidden" class="hideifzero" name="attr_selected" value="0">
<button type="action" name="act_selectunit" class="btn selected"><span name="attr_gmunitname"></span></button>
</fieldset>
<h3 data-i18n="Unit Display Options">Unit Display Options</h3>
<label data-i18n="Show Attack Info:">Show Attack Info:</label><input type="checkbox" name="attr_gmshowattackinfo" value="1" checked /><br />
<label data-i18n="Obfuscate Attacks:">Obfuscate Attacks:</label><input type="checkbox" name="attr_gmobfuscateattacks" value="1" /><br />
<label data-i18n="Show Ability Info:">Show Ability Info:</label><input type="checkbox" name="attr_gmshowabilityinfo" value="1" checked /><br />
<label data-i18n="Obfuscate Abilities:">Obfuscate Abilities:</label><input type="checkbox" name="attr_gmobfuscateabilities" value="1" />
</div>
</div>
</div>
<div class="gmunits">
<input type="hidden" name="attr_selectedenemyid" value="" />
<div class="2colrow">
<div class="col1">
<h3 data-i18n="Enemy Units">Enemy Units</h3>
<fieldset class="repeating_gmenemyunitlist">
<input type="hidden" name="attr_gmunitname" value="New Unit" >
<input type="hidden" class="hideifone" name="attr_selected" value="0">
<button type="action" name="act_selectunit" class="btn"><span name="attr_gmunitname"></span></button>
<input type="hidden" class="hideifzero" name="attr_selected" value="0">
<button type="action" name="act_selectunit" class="btn selected"><span name="attr_gmunitname"></span></button>
</fieldset>
<button class="addbtn" type="action" name="act_addgmunit"><span data-i18n="Plus Add">+Add</span></button>
</div>
<div class="col2">
<input type="hidden" class="valuehider" name="attr_selectedenemyid" value="">
<div>
<h2 style="border-bottom:1px solid #aaa;"><span name="attr_selectedenemy"></span></h2>
<div class="nowrap">
<label data-i18n="Unit Name:">Unit Name:</label><input type="text" spellcheck="false" name="attr_selectedenemy" />
<br />
<label data-i18n="Hit Points:">HP:</label><input type="number" name="attr_selectedenemyhp" style="margin-right:10px;" value="0" />
<label style="width:74px;" data-i18n="Armor Points:">AP:</label><input type="number" name="attr_selectedenemyap" style="margin-right:10px;" value="0" />
<label style="width:73px;" data-i18n="Shield Points:">SP:</label><input type="number" name="attr_selectedenemysp" value="0" />
<br />
<label data-i18n="Speed:">Speed:</label><input type="number" name="attr_selectedenemyspeed" style="margin-right:10px;" value="0" />
<label style="width:74px;" data-i18n="Aim:">Aim:</label><input type="number" name="attr_selectedenemyaim" style="margin-right:10px;" value="0" />
<label style="width:73px;" data-i18n="Will:">Will:</label><input type="number" name="attr_selectedenemywill" style="margin-right:10px;" value="0" />
<label style="width:73px;" data-i18n="Dodge:">Dodge:</label><input type="number" name="attr_selectedenemydodge" style="margin-right:10px;" value="0" /><br />
<label data-i18n="Unit Notes:">Unit Notes:</label><input type="text" spellcheck="false" name="attr_selectedenemynotes"></input>
</div>
<br />
<div class="nowrap">
<h3 data-i18n="Attacks">Attacks</h3>
<div class="enemyattacklist">
<input type="hidden" class="valuehider" name="attr_selectedenemyatk0_id" value="">
<div class="enemyattackentry">
<label data-i18n="Name:">Name:</label><input type="text" spellcheck="false" name="attr_selectedenemyatkname" /><br />
<label data-i18n="Aim Dice:">Aim Dice:</label><input type="number" name="attr_selectedenemyatkaim" value="0" />
<label data-i18n="Crit Dice:" style="margin-left:32px;">Crit Dice:</label><input type="number" name="attr_selectedenemyatkcrit" value="0" />
<label data-i18n="Damage:" style="margin-left:29px;">Damage:</label><input style="width:65px;" type="text" spellcheck="false" name="attr_selectedenemyatkdmg" value="0" />
<label data-i18n="Crit Dmg:" style="margin-left:12px;">Crit Dmg:</label><input type="number" name="attr_selectedenemyatkcritdmg" value="0" /><br />
<label data-i18n="Notes:">Notes:</label><input type="text" spellcheck="false" name="attr_selectedenemyatknotes" />
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemyatk1_id" value="">
<div class="enemyattackentry">
<label data-i18n="Name:">Name:</label><input type="text" spellcheck="false" name="attr_selectedenemyatk1name" /><br />
<label data-i18n="Aim Dice:">Aim Dice:</label><input type="number" name="attr_selectedenemyatk1aim" value="0" />
<label data-i18n="Crit Dice:" style="margin-left:32px;">Crit Dice:</label><input type="number" name="attr_selectedenemyatk1crit" value="0" />
<label data-i18n="Damage:" style="margin-left:29px;">Damage:</label><input style="width:65px;" type="text" spellcheck="false" name="attr_selectedenemyatk1dmg" value="0" />
<label data-i18n="Crit Dmg:" style="margin-left:12px;">Crit Dmg:</label><input type="number" name="attr_selectedenemyatk1critdmg" value="0" /><br />
<label data-i18n="Notes:">Notes:</label><input type="text" spellcheck="false" name="attr_selectedenemyatk1notes" />
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemyatk2_id" value="">
<div class="enemyattackentry">
<label data-i18n="Name:">Name:</label><input type="text" spellcheck="false" name="attr_selectedenemyatk2name" /><br />
<label data-i18n="Aim Dice:">Aim Dice:</label><input type="number" name="attr_selectedenemyatk2aim" value="0" />
<label data-i18n="Crit Dice:" style="margin-left:32px;">Crit Dice:</label><input type="number" name="attr_selectedenemyatk2crit" value="0" />
<label data-i18n="Damage:" style="margin-left:29px;">Damage:</label><input style="width:65px;" type="text" spellcheck="false" name="attr_selectedenemyatk2dmg" value="0" />
<label data-i18n="Crit Dmg:" style="margin-left:12px;">Crit Dmg:</label><input type="number" name="attr_selectedenemyatk2critdmg" value="0" /><br />
<label data-i18n="Notes:">Notes:</label><input type="text" spellcheck="false" name="attr_selectedenemyatk2notes" />
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemyatk0_id" value="">
<div>
<button class="removebtn" type="action" name="act_removegmunitatk"><span data-i18n="Remove">Remove</span></button>
</div>
<input type="hidden" class="avaluehider" name="attr_selectedenemyatk2_id" value="">
<div>
<button class="addbtn" type="action" name="act_addgmunitatk"><span data-i18n="Plus Add">+Add</span></button>
</div>
<div class="clearfix" />
</div>
<br />
<h3 data-i18n="Area of Effect Attacks">Area of Effect Attacks</h3>
<div class="enemyattacklist">
<input type="hidden" class="valuehider" name="attr_selectedenemygrenadeatk0_id" value="">
<div class="enemyattackentry">
<label data-i18n="Name:">Name:</label><input type="text" spellcheck="false" name="attr_selectedenemygrenadeatk0name" /><br />
<label data-i18n="Charges:">Charges:</label><input type="number" name="attr_selectedenemygrenadeatk0charges" value="0" />
<label style="width:80px;margin-left:31px" data-i18n="Range:">Range:</label><select style="width:73px;" name="attr_selectedenemygrenadeatk0range">
<option value="Short" data-i18n="Short Range Option">Short</option>
<option value="Medium" data-i18n="Medium Range Option">Medium</option>
<option value="Long" data-i18n="Long Range Option">Long</option>
</select>
<label style="width:75px;margin-left:26px" data-i18n="Radius:">Radius:</label><input type="number" name="attr_selectedenemygrenadeatk0radius" value="0.0" step="0.5" /><br/>
<label data-i18n="Damage:">Damage:</label><input type="text" style="width:65px;" name="attr_selectedenemygrenadeatk0damage" value="0" />
<label data-i18n="Crit Dice:" style="margin-left:12px">Crit Dice:</label><input type="number" name="attr_selectedenemygrenadeatk0critdice" value="0" />
<label style="width:75px;margin-left:53px" data-i18n="Crit Dmg:">Crit Dmg:</label><input type="number" name="attr_selectedenemygrenadeatk0critdmg" value="0" />
<label style="width:76px;margin-left:17px" data-i18n="Breaking:">Breaking:</label><input type="number" name="attr_selectedenemygrenadeatk0breaking" value="0" /><br/>
<label data-i18n="Effect:">Effect:</label><input type="text" spellcheck="false" name="attr_selectedenemygrenadeatk0effect" />
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemygrenadeatk1_id" value="">
<div class="enemyattackentry">
<label data-i18n="Name:">Name:</label><input type="text" spellcheck="false" name="attr_selectedenemygrenadeatk1name" /><br />
<label data-i18n="Charges:">Charges:</label><input type="number" name="attr_selectedenemygrenadeatk1charges" value="0" />
<label style="width:80px;margin-left:31px" data-i18n="Range:">Range:</label><select style="width:73px;" name="attr_selectedenemygrenadeatk1range">
<option value="Short" data-i18n="Short Range Option">Short</option>
<option value="Medium" data-i18n="Medium Range Option">Medium</option>
<option value="Long" data-i18n="Long Range Option">Long</option>
</select>
<label style="width:75px;margin-left:26px" data-i18n="Radius:">Radius:</label><input type="number" name="attr_selectedenemygrenadeatk1radius" value="0.0" step="0.5" /><br/>
<label data-i18n="Damage:">Damage:</label><input type="text" style="width:65px;" name="attr_selectedenemygrenadeatk1damage" value="0" />
<label data-i18n="Crit Dice:" style="margin-left:12px">Crit Dice:</label><input type="number" name="attr_selectedenemygrenadeatk1critdice" value="0" />
<label style="width:75px;margin-left:53px" data-i18n="Crit Dmg:">Crit Dmg:</label><input type="number" name="attr_selectedenemygrenadeatk1critdmg" value="0" />
<label style="width:76px;margin-left:17px" data-i18n="Breaking:">Breaking:</label><input type="number" name="attr_selectedenemygrenadeatk1breaking" value="0" /><br/>
<label data-i18n="Effect:">Effect:</label><input type="text" spellcheck="false" name="attr_selectedenemygrenadeatk1effect" />
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemygrenadeatk2_id" value="">
<div class="enemyattackentry">
<label data-i18n="Name:">Name:</label><input type="text" spellcheck="false" name="attr_selectedenemygrenadeatk2name" /><br />
<label data-i18n="Charges:">Charges:</label><input type="number" name="attr_selectedenemygrenadeatk2charges" value="0" />
<label style="width:80px;margin-left:31px" data-i18n="Range:">Range:</label><select style="width:73px;" name="attr_selectedenemygrenadeatk2range">
<option value="Short" data-i18n="Short Range Option">Short</option>
<option value="Medium" data-i18n="Medium Range Option">Medium</option>
<option value="Long" data-i18n="Long Range Option">Long</option>
</select>
<label style="width:75px;margin-left:26px" data-i18n="Radius:">Radius:</label><input type="number" name="attr_selectedenemygrenadeatk2radius" value="0.0" step="0.5" /><br/>
<label data-i18n="Damage:">Damage:</label><input type="text" style="width:65px;" name="attr_selectedenemygrenadeatk2damage" value="0" />
<label data-i18n="Crit Dice:" style="margin-left:12px">Crit Dice:</label><input type="number" name="attr_selectedenemygrenadeatk2critdice" value="0" />
<label style="width:75px;margin-left:53px" data-i18n="Crit Dmg:">Crit Dmg:</label><input type="number" name="attr_selectedenemygrenadeatk2critdmg" value="0" />
<label style="width:76px;margin-left:17px" data-i18n="Breaking:">Breaking:</label><input type="number" name="attr_selectedenemygrenadeatk2breaking" value="0" /><br/>
<label data-i18n="Effect:">Effect:</label><input type="text" spellcheck="false" name="attr_selectedenemygrenadeatk2effect" />
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemygrenadeatk0_id" value="">
<div>
<button class="removebtn" type="action" name="act_removegmunitgrenadeatk"><span data-i18n="Remove">Remove</span></button>
</div><input type="hidden" class="avaluehider" name="attr_selectedenemygrenadeatk2_id" value="">
<div>
<button class="addbtn" type="action" name="act_addgmunitgrenadeatk"><span data-i18n="Plus Add">+Add</span></button>
</div>
<div class="clearfix" />
</div>
<br />
<h3 data-i18n="Will Attacks">Will Attacks</h3>
<div class="enemyattacklist">
<input type="hidden" class="valuehider" name="attr_selectedenemywillatk0_id" value="">
<div class="enemyattackentry clearfix">
<label data-i18n="Name:">Name:</label><input type="text" spellcheck="false" name="attr_selectedenemywillatk0name" /><br />
<label data-i18n="Activation:">Activation:</label><select name="attr_selectedenemywillatk0activation">
<option value="Passive" data-i18n="Passive Option">Passive</option>
<option value="Reaction" data-i18n="Reaction Option">Reaction</option>
<option value="Free Action" data-i18n="Free Action Option">Free Action</option>
<option value="Action" data-i18n="Action Option">Action</option>
<option value="Action + Ends Turn" data-i18n="Action End Turn Option">Action + Ends Turn</option>
</select>
<br/>
<label data-i18n="Cooldown:">Cooldown:</label><input type="number" name="attr_selectedenemywillatk0cooldown" value="0" />
<label style="margin-left:32px;" data-i18n="Charges:">Charges:</label><input type="number" name="attr_selectedenemywillatk0charges" value="0" />
<label style="margin-left:32px" data-i18n="Crit Dice:" >Crit Dice:</label><input type="number" name="attr_selectedenemywillatk0critdice" value="0" /><br/>
<label data-i18n="Effect:">Effect:</label><textarea name="attr_selectedenemywillatk0effect"></textarea>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemywillatk1_id" value="">
<div class="enemyattackentry clearfix">
<label data-i18n="Name:">Name:</label><input type="text" spellcheck="false" name="attr_selectedenemywillatk1name" /><br />
<label data-i18n="Activation:">Activation:</label><select name="attr_selectedenemywillatk1activation">
<option value="Passive" data-i18n="Passive Option">Passive</option>
<option value="Reaction" data-i18n="Reaction Option">Reaction</option>
<option value="Free Action" data-i18n="Free Action Option">Free Action</option>
<option value="Action" data-i18n="Action Option">Action</option>
<option value="Action + Ends Turn" data-i18n="Action End Turn Option">Action + Ends Turn</option>
</select>
<br/>
<label data-i18n="Cooldown:">Cooldown:</label><input type="number" name="attr_selectedenemywillatk1cooldown" value="0" />
<label style="margin-left:32px;" data-i18n="Charges:">Charges:</label><input type="number" name="attr_selectedenemywillatk1charges" value="0" />
<label style="margin-left:32px" data-i18n="Crit Dice:" >Crit Dice:</label><input type="number" name="attr_selectedenemywillatk1critdice" value="0" /><br/>
<label data-i18n="Effect:">Effect:</label><textarea name="attr_selectedenemywillatk1effect"></textarea>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemywillatk2_id" value="">
<div class="enemyattackentry clearfix">
<label data-i18n="Name:">Name:</label><input type="text" spellcheck="false" name="attr_selectedenemywillatk2name" /><br />
<label data-i18n="Activation:">Activation:</label><select name="attr_selectedenemywillatk2activation">
<option value="Passive" data-i18n="Passive Option">Passive</option>
<option value="Reaction" data-i18n="Reaction Option">Reaction</option>
<option value="Free Action" data-i18n="Free Action Option">Free Action</option>
<option value="Action" data-i18n="Action Option">Action</option>
<option value="Action + Ends Turn" data-i18n="Action End Turn Option">Action + Ends Turn</option>
</select>
<br/>
<label data-i18n="Cooldown:">Cooldown:</label><input type="number" name="attr_selectedenemywillatk2cooldown" value="0" />
<label style="margin-left:32px;" data-i18n="Charges:">Charges:</label><input type="number" name="attr_selectedenemywillatk2charges" value="0" />
<label style="margin-left:32px" data-i18n="Crit Dice:" >Crit Dice:</label><input type="number" name="attr_selectedenemywillatk2critdice" value="0" /><br/>
<label data-i18n="Effect:">Effect:</label><textarea name="attr_selectedenemywillatk2effect"></textarea>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemywillatk0_id" value="">
<div>
<button class="removebtn" type="action" name="act_removegmunitwillatk"><span data-i18n="Remove">Remove</span></button>
</div>
<input type="hidden" class="avaluehider" name="attr_selectedenemywillatk2_id" value="">
<div>
<button class="addbtn" type="action" name="act_addgmunitwillatk"><span data-i18n="Plus Add">+Add</span></button>
</div>
<div class="clearfix" />
</div>
<br />
<h3 data-i18n="Abilities">Abilities</h3>
<div class="enemyattacklist">
<input type="hidden" class="valuehider" name="attr_selectedenemyabl0_id" value="">
<div class="enemyattackentry clearfix">
<label data-i18n="Name:">Name:</label><input type="text" spellcheck="false" name="attr_selectedenemyabl0name" /><br />
<label data-i18n="Activation:">Activation:</label><select name="attr_selectedenemyabl0activation">
<option value="Passive" data-i18n="Passive Option">Passive</option>
<option value="Reaction" data-i18n="Reaction Option">Reaction</option>
<option value="Free Action" data-i18n="Free Action Option">Free Action</option>
<option value="Action" data-i18n="Action Option">Action</option>
<option value="Action + Ends Turn" data-i18n="Action End Turn Option">Action + Ends Turn</option>
</select>
<br/>
<label data-i18n="Cooldown:">Cooldown:</label><input type="number" name="attr_selectedenemyabl0cooldown" value="0" />
<label style="margin-left:32px;" data-i18n="Charges:">Charges:</label><input type="number" name="attr_selectedenemyabl0charges" value="0" /><br/>
<label data-i18n="Effect:">Effect:</label><textarea name="attr_selectedenemyabl0effect"></textarea>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemyabl1_id" value="">
<div class="enemyattackentry clearfix">
<label data-i18n="Name:">Name:</label><input type="text" spellcheck="false" name="attr_selectedenemyabl1name" /><br />
<label data-i18n="Activation:">Activation:</label><select name="attr_selectedenemyabl1activation">
<option value="Passive" data-i18n="Passive Option">Passive</option>
<option value="Reaction" data-i18n="Reaction Option">Reaction</option>
<option value="Free Action" data-i18n="Free Action Option">Free Action</option>
<option value="Action" data-i18n="Action Option">Action</option>
<option value="Action + Ends Turn" data-i18n="Action End Turn Option">Action + Ends Turn</option>
</select>
<br/>
<label data-i18n="Cooldown:">Cooldown:</label><input type="number" name="attr_selectedenemyabl1cooldown" value="0" />
<label style="margin-left:32px;" data-i18n="Charges:">Charges:</label><input type="number" name="attr_selectedenemyabl1charges" value="0" /><br/>
<label data-i18n="Effect:">Effect:</label><textarea name="attr_selectedenemyabl1effect"></textarea>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemyabl2_id" value="">
<div class="enemyattackentry clearfix">
<label data-i18n="Name:">Name:</label><input type="text" spellcheck="false" name="attr_selectedenemyabl2name" /><br />
<label data-i18n="Activation:">Activation:</label><select name="attr_selectedenemyabl2activation">
<option value="Passive" data-i18n="Passive Option">Passive</option>
<option value="Reaction" data-i18n="Reaction Option">Reaction</option>
<option value="Free Action" data-i18n="Free Action Option">Free Action</option>
<option value="Action" data-i18n="Action Option">Action</option>
<option value="Action + Ends Turn" data-i18n="Action End Turn Option">Action + Ends Turn</option>
</select>
<br/>
<label data-i18n="Cooldown:">Cooldown:</label><input type="number" name="attr_selectedenemyabl2cooldown" value="0" />
<label style="margin-left:32px;" data-i18n="Charges:">Charges:</label><input type="number" name="attr_selectedenemyabl2charges" value="0" /><br/>
<label data-i18n="Effect:">Effect:</label><textarea name="attr_selectedenemyabl2effect"></textarea>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemyabl3_id" value="">
<div class="enemyattackentry clearfix">
<label data-i18n="Name:">Name:</label><input type="text" spellcheck="false" name="attr_selectedenemyabl3name" /><br />
<label data-i18n="Activation:">Activation:</label><select name="attr_selectedenemyabl3activation">
<option value="Passive" data-i18n="Passive Option">Passive</option>
<option value="Reaction" data-i18n="Reaction Option">Reaction</option>
<option value="Free Action" data-i18n="Free Action Option">Free Action</option>
<option value="Action" data-i18n="Action Option">Action</option>
<option value="Action + Ends Turn" data-i18n="Action End Turn Option">Action + Ends Turn</option>
</select>
<br/>
<label data-i18n="Cooldown:">Cooldown:</label><input type="number" name="attr_selectedenemyabl3cooldown" value="0" />
<label style="margin-left:32px;" data-i18n="Charges:">Charges:</label><input type="number" name="attr_selectedenemyabl3charges" value="0" /><br/>
<label data-i18n="Effect:">Effect:</label><textarea name="attr_selectedenemyabl3effect"></textarea>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemyabl4_id" value="">
<div class="enemyattackentry clearfix">
<label data-i18n="Name:">Name:</label><input type="text" spellcheck="false" name="attr_selectedenemyabl4name" /><br />
<label data-i18n="Activation:">Activation:</label><select name="attr_selectedenemyabl4activation">
<option value="Passive" data-i18n="Passive Option">Passive</option>
<option value="Reaction" data-i18n="Reaction Option">Reaction</option>
<option value="Free Action" data-i18n="Free Action Option">Free Action</option>
<option value="Action" data-i18n="Action Option">Action</option>
<option value="Action + Ends Turn" data-i18n="Action End Turn Option">Action + Ends Turn</option>
</select>
<br/>
<label data-i18n="Cooldown:">Cooldown:</label><input type="number" name="attr_selectedenemyabl4cooldown" value="0" />
<label style="margin-left:32px;" data-i18n="Charges:">Charges:</label><input type="number" name="attr_selectedenemyabl4charges" value="0" /><br/>
<label data-i18n="Effect:">Effect:</label><textarea name="attr_selectedenemyabl4effect"></textarea>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemyabl5_id" value="">
<div class="enemyattackentry clearfix">
<label data-i18n="Name:">Name:</label><input type="text" spellcheck="false" name="attr_selectedenemyabl5name" /><br />
<label data-i18n="Activation:">Activation:</label><select name="attr_selectedenemyabl5activation">
<option value="Passive" data-i18n="Passive Option">Passive</option>
<option value="Reaction" data-i18n="Reaction Option">Reaction</option>
<option value="Free Action" data-i18n="Free Action Option">Free Action</option>
<option value="Action" data-i18n="Action Option">Action</option>
<option value="Action + Ends Turn" data-i18n="Action End Turn Option">Action + Ends Turn</option>
</select>
<br/>
<label data-i18n="Cooldown:">Cooldown:</label><input type="number" name="attr_selectedenemyabl5cooldown" value="0" />
<label style="margin-left:32px;" data-i18n="Charges:">Charges:</label><input type="number" name="attr_selectedenemyabl5charges" value="0" /><br/>
<label data-i18n="Effect:">Effect:</label><textarea name="attr_selectedenemyabl5effect"></textarea>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemyabl0_id" value="">
<div>
<button class="removebtn" type="action" name="act_removegmunitabl"><span data-i18n="Remove">Remove</span></button>
</div><input type="hidden" class="avaluehider" name="attr_selectedenemyabl5_id" value="">
<div>
<button class="addbtn" type="action" name="act_addgmunitabl"><span data-i18n="Plus Add">+Add</span></button>
</div>
<div class="clearfix" />
</div>
<br />
<h3 data-i18n="Items">Items</h3>
<div class="enemyattacklist">
<input type="hidden" class="valuehider" name="attr_selectedenemyitem0_id" value="">
<div class="enemyattackentry clearfix">
<label data-i18n="Name:">Name:</label><input type="text" spellcheck="false" name="attr_selectedenemyitem0name" /><br />
<label data-i18n="Charges:">Charges:</label><input type="number" name="attr_selectedenemyitem0charges" value="0" /><br/>
<label data-i18n="Effect:">Effect:</label><textarea name="attr_selectedenemyitem0effect"></textarea>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemyitem1_id" value="">
<div class="enemyattackentry clearfix">
<label data-i18n="Name:">Name:</label><input type="text" spellcheck="false" name="attr_selectedenemyitem1name" /><br />
<label data-i18n="Charges:">Charges:</label><input type="number" name="attr_selectedenemyitem1charges" value="0" /><br/>
<label data-i18n="Effect:">Effect:</label><textarea name="attr_selectedenemyitem1effect"></textarea>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemyitem2_id" value="">
<div class="enemyattackentry clearfix">
<label data-i18n="Name:">Name:</label><input type="text" spellcheck="false" name="attr_selectedenemyitem2name" /><br />
<label data-i18n="Charges:">Charges:</label><input type="number" name="attr_selectedenemyitem2charges" value="0" /><br/>
<label data-i18n="Effect:">Effect:</label><textarea name="attr_selectedenemyitem2effect"></textarea>
</div>
<input type="hidden" class="valuehider" name="attr_selectedenemyitem0_id" value="">
<div>
<button class="removebtn" type="action" name="act_removegmunititem"><span data-i18n="Remove">Remove</span></button>
</div>
<input type="hidden" class="avaluehider" name="attr_selectedenemyitem2_id" value="">
<div>
<button class="addbtn" type="action" name="act_addgmunititem"><span data-i18n="Plus Add">+Add</span></button>
</div>
<div class="clearfix" />
</div>
<br />
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Temporarily turning off Charactermancer
<input type="hidden" class="hideifzero" name="attr_newchar" value="1">
<div>
<div class="popup-bg">
</div>
<div class="popup">
<div class="popup-header">
New Character
</div>
<div class="popup-content">
Would you like to use the Charactermancer to create this character?
</div>
<div class="popup-content clearfix">
<button class="btn" type="action" name="act_declinecharactermancer">No</button>
<button class="btn" type="action" name="act_startcharactermancer">Yes</button>
</div>
</div>
</div>
<input type="hidden" class="hideifzero" name="attr_confirmstartcharmancer" value="0">
<div>
<div class="popup-bg">
</div>
<div class="popup">
<div class="popup-header">
Start Charactermancer?
</div>
<div class="popup-content">
Are you sure you want to start the Charactermancer?<br /><br />Finishing the Charactermancer will overwrite current character info!
</div>
<div class="popup-content clearfix">
<button class="btn" type="action" name="act_declinecharactermancer">No</button>
<button class="btn" type="action" name="act_startcharactermancer">Yes</button>
</div>
</div>
</div>
-->
<!-- // Roll Templates //////////////////////////////////////////////////////////////// -->
<rolltemplate class="sheet-rolltemplate-zafir">
{{#enemy}}<div class="enemy">{{/enemy}}
{{#player}}<div class="player">{{/player}}
<div class="sheet-template-container">
{{#enemy}}<div class="sheet-template-nameplate">{{enemy}}</div>{{/enemy}}
{{#player}}<div class="sheet-template-nameplate">{{player}}</div>{{/player}}
<div class="sheet-template-header">
{{^label}}
<span data-i18n="Attack:">Attack:</span>
{{/label}}
{{#label}}
<span>{{label}}</span>
{{/label}}
{{name}}</div>
{{#notes}}
<div class="sheet-template-row sheet-notes">{{notes}}</div>
{{/notes}}
{{#ammo}}
<div class="sheet-template-row sheet-notes">{{ammo}}</div>
{{/ammo}}
{{#rollGreater() aim 0}}
{{#rollGreater() crit 0}}
<div class="sheet-template-row sheet-crit-hit"><span data-i18n="CRITICAL HIT!">CRITICAL HIT!</span> <span class="critroll">{{crit}}</span> <span class="aimroll">{{aim}}</span></div>
<div class="sheet-template-row sheet-crit-dmg"><span data-i18n="Critical Damage:">Critical Damage:</span> {{critdmg}}</div>
{{/rollGreater() crit 0}}
{{#rollTotal() crit 0}}
<div class="sheet-template-row sheet-hit"><span data-i18n="HIT!">HIT!</span> <span class="critroll">{{crit}}</span> <span class="aimroll">{{aim}}</span></div>
<div class="sheet-template-row sheet-damage"><span data-i18n="Damage:">Damage:</span> {{damage}}</div>
{{/rollTotal() crit 0}}
{{/rollGreater() aim 0}}
{{#rollTotal() aim 0}}
<div class="sheet-template-row sheet-miss"><span data-i18n="MISS!">MISS!</span> <span class="critroll">{{crit}}</span> <span class="aimroll">{{aim}}</span></div>
{{/rollTotal() aim 0}}
</div>
{{#enemy}}</div>{{/enemy}}
{{#player}}</div>{{/player}}
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-zafirwillattack">
{{#enemy}}<div class="enemy">{{/enemy}}
{{#player}}<div class="player">{{/player}}
{{^enemy}}{{^player}}<div class="enemy">{{/player}}{{/enemy}}
<div class="sheet-template-container">
{{#enemy}}<div class="sheet-template-nameplate">{{enemy}}</div>{{/enemy}}
{{#player}}<div class="sheet-template-nameplate">{{player}}</div>{{/player}}
{{^enemy}}{{^player}}
<div class="sheet-template-nameplate">
{{#panic}}<span data-i18n="Test For Panic">Test For Panic</span>{{/panic}}
{{^panic}}<span data-i18n="Will Attack">Will Attack</span>{{/panic}}
</div>
{{/player}}{{/enemy}}
{{#panic}}
<div class="sheet-template-header"><span data-i18n="Test For Panic">Test For Panic</span>!</div>
{{/panic}}
{{^panic}}
{{#name}}<div class="sheet-template-header">{{name}}</div>{{/name}}
{{^name}}<div class="sheet-template-header"><span data-i18n="Will Attack">Will Attack</span></div>{{/name}}
{{/panic}}
{{#rollGreater() aim 0}}
{{#rollGreater() resist 0}}
{{#panic}}<div class="sheet-template-row sheet-hit">{{/panic}}
{{^panic}}<div class="sheet-template-row sheet-miss">{{/panic}}
<span class="resistroll">{{resist}}</span> <span class="critroll">{{crit}}</span> <span class="aimroll">{{aim}}</span><span data-i18n="RESISTED!">RESISTED!</span></div>
{{/rollGreater() resist 0}}
{{#rollTotal() resist 0}}
{{#rollGreater() crit 0}}
<div class="sheet-template-row sheet-crit-hit sheet-critsuccess"> <span class="resistroll">{{resist}}</span> <span class="critroll">{{crit}}</span> <span class="aimroll">{{aim}}</span><span data-i18n="SUCCESS">SUCCESS</span> + <br /><span data-i18n="CRITICAL EFFECT!">CRITICAL EFFECT!</span></div>
{{/rollGreater() crit 0}}
{{#rollTotal() crit 0}}
{{#panic}}
<div class="sheet-template-row sheet-crit-hit"><span data-i18n="PANIC!">PANIC!</span> <span class="resistroll">{{resist}}</span> <span class="critroll">{{crit}}</span> <span class="aimroll">{{aim}}</span></div>
{{/panic}}
{{^panic}}
<div class="sheet-template-row sheet-hit"><span data-i18n="SUCCESS!">SUCCESS!</span> <span class="resistroll">{{resist}}</span> <span class="critroll">{{crit}}</span> <span class="aimroll">{{aim}}</span></div>
{{/panic}}
{{/rollTotal() crit 0}}
{{/rollTotal() resist 0}}
{{#notes}}
<div class="sheet-template-row sheet-notes">{{notes}}</div>
{{/notes}}
{{/rollGreater() aim 0}}
{{#rollTotal() aim 0}}
{{#panic}}<div class="sheet-template-row sheet-hit">{{/panic}}
{{^panic}}<div class="sheet-template-row sheet-miss">{{/panic}}
<span data-i18n="RESISTED!">RESISTED!</span> <span class="resistroll">{{resist}}</span> <span class="critroll">{{crit}}</span> <span class="aimroll">{{aim}}</span></div>
{{/rollTotal() aim 0}}
</div>
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-zafirskillaction">
<div class="player">
<div class="sheet-template-container">
{{#player}}<div class="sheet-template-nameplate">{{player}}</div>{{/player}}
<div class="sheet-template-header">{{name}} <span data-i18n="Action">Action</span></div>
<div class="sheet-template-row sheet-responsibility"><span data-i18n="Using">Using</span> {{responsibility}}</div>
{{#rollGreater() aim 0}}
{{#rollGreater() crit 0}}
<div class="sheet-template-row sheet-crit-hit"><span data-i18n="CRITICAL SUCCESS!">CRITICAL SUCCESS!</span> <span class="critroll">{{crit}}</span> <span class="aimroll">{{aim}}</span></div>
{{/rollGreater() crit 0}}
{{#rollTotal() crit 0}}
<div class="sheet-template-row sheet-hit"><span data-i18n="SUCCESS!">SUCCESS!</span> <span class="critroll">{{crit}}</span> <span class="aimroll">{{aim}}</span></div>
{{/rollTotal() crit 0}}
{{/rollGreater() aim 0}}
{{#rollTotal() aim 0}}
<div class="sheet-template-row sheet-miss"><span data-i18n="FAILED!">FAILED!</span> <span class="critroll">{{crit}}</span> <span class="aimroll">{{aim}}</span></div>
{{/rollTotal() aim 0}}
</div>
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-zafirdodge">
{{#enemy}}<div class="enemy">{{/enemy}}
{{#player}}<div class="player">{{/player}}
<div class="sheet-template-container">
{{#enemy}}<div class="sheet-template-nameplate">{{enemy}}</div>{{/enemy}}
{{#player}}<div class="sheet-template-nameplate">{{player}}</div>{{/player}}
<div class="sheet-template-header"><span data-i18n="Dodge!">Dodge!</span></div>
{{#rollGreater() dodge 0}}
<div class="sheet-template-row sheet-hit"><span data-i18n="SUCCESS!">SUCCESS!</span> <span class="dodgeroll">{{dodge}}</span></div>
{{/rollGreater() dodge 0}}
{{#rollTotal() dodge 0}}
<div class="sheet-template-row sheet-miss"><span data-i18n="FAILED!">FAILED!</span> <span class="dodgeroll">{{dodge}}</span></div>
{{/rollTotal() dodge 0}}
</div>
{{#enemy}}</div>{{/enemy}}
{{#player}}</div>{{/player}}
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-zafirgrenade">
{{#enemy}}<div class="enemy">{{/enemy}}
{{#player}}<div class="player">{{/player}}
<div class="sheet-template-container">
{{#enemy}}<div class="sheet-template-nameplate">{{enemy}}</div>{{/enemy}}
{{#player}}<div class="sheet-template-nameplate">{{player}}</div>{{/player}}
{{#name}}
<div class="sheet-template-header">{{name}} (×{{targets}})</div>
{{/name}}
{{^name}}
<div class="sheet-template-header"><span data-i18n="Grenade Attack">Grenade Attack</span> (×{{targets}})</div>
{{/name}}
{{#notes}}
<div class="sheet-template-row sheet-notes">{{notes}}</div>
{{/notes}}
{{#rollGreater() targetsroll 0}}
{{#rollGreater() crit1 0}}
<div class="sheet-template-row sheet-crit-hit"><span data-i18n="Critical Damage:">Critical Damage:</span> {{critdmg1}} <span class="critroll">{{crit1}}</span></div>
{{/rollGreater() crit1 0}}
{{#rollTotal() crit1 0}}
<div class="sheet-template-row sheet-damage"><span data-i18n="Damage:">Damage:</span> {{damage1}} <span class="critroll">{{crit1}}</span></div>
{{/rollTotal() crit1 0}}
{{/rollGreater() targetsroll 0}}
{{#rollGreater() targetsroll 1}}
{{#rollGreater() crit2 0}}
<div class="sheet-template-row sheet-crit-hit"><span data-i18n="Critical Damage:">Critical Damage:</span> {{critdmg2}} <span class="critroll">{{crit2}}</span></div>
{{/rollGreater() crit2 0}}
{{#rollTotal() crit2 0}}
<div class="sheet-template-row sheet-damage"><span data-i18n="Damage:">Damage:</span> {{damage2}} <span class="critroll">{{crit2}}</span></div>
{{/rollTotal() crit2 0}}
{{/rollGreater() targetsroll 1}}
{{#rollGreater() targetsroll 2}}
{{#rollGreater() crit3 0}}
<div class="sheet-template-row sheet-crit-hit"><span data-i18n="Critical Damage:">Critical Damage:</span> {{critdmg3}} <span class="critroll">{{crit3}}</span></div>
{{/rollGreater() crit3 0}}
{{#rollTotal() crit3 0}}
<div class="sheet-template-row sheet-damage"><span data-i18n="Damage:">Damage:</span> {{damage3}} <span class="critroll">{{crit3}}</span></div>
{{/rollTotal() crit3 0}}
{{/rollGreater() targetsroll 2}}
{{#rollGreater() targetsroll 3}}
{{#rollGreater() crit4 0}}
<div class="sheet-template-row sheet-crit-hit"><span data-i18n="Critical Damage:">Critical Damage:</span> {{critdmg4}} <span class="critroll">{{crit4}}</span></div>
{{/rollGreater() crit4 0}}
{{#rollTotal() crit4 0}}
<div class="sheet-template-row sheet-damage"><span data-i18n="Damage:">Damage:</span> {{damage4}} <span class="critroll">{{crit4}}</span></div>
{{/rollTotal() crit4 0}}
{{/rollGreater() targetsroll 3}}
{{#rollGreater() targetsroll 4}}
{{#rollGreater() crit5 0}}
<div class="sheet-template-row sheet-crit-hit"><span data-i18n="Critical Damage:">Critical Damage:</span> {{critdmg5}} <span class="critroll">{{crit5}}</span></div>
{{/rollGreater() crit5 0}}
{{#rollTotal() crit5 0}}
<div class="sheet-template-row sheet-damage"><span data-i18n="Damage:">Damage:</span> {{damage5}} <span class="critroll">{{crit5}}</span></div>
{{/rollTotal() crit5 0}}
{{/rollGreater() targetsroll 4}}
</div>
{{#enemy}}</div>{{/enemy}}
{{#player}}</div>{{/player}}
</rolltemplate>
<!-- // Charactermancer ////////////////////////////////////////////////////////////// -->
<charmancer class="sheet-charmancer-intro">
<div class="charmancer">
<div class="steps">
<button type="back" value="intro" class="cbtn here">Intro</button>
<button type="back" value="classx" class="cbtn">Class</button>
<button type="back" value="origin" class="cbtn">Origin</button>
<button type="back" value="namex" class="cbtn">Name</button>
<button type="back" value="equipment" class="cbtn">Equipment</button>
<button type="back" value="inventory" class="cbtn">Inventory</button>
<button type="back" value="responsibilities" class="cbtn">Responsibilities</button>
<button type="back" value="languages" class="cbtn">Languages</button>
<button type="cancel" class="cbtn cancel">Cancel</button>
</div>
<div class="content">
<img style="max-height:130px;" src="https://raw.githubusercontent.com/RandyKnapp/roll20-character-sheets/master/Zafir/zafir-black-small.png" />
<h2 class="subtitle">Charactermancer</h2>
<p style="margin-top:30px;margin-bottom:30px;">Welcome to Zafir! This wizard will guide you through the process of creating your character! If you click "Cancel" above, it will take you right back to the character sheet without applying any data.</p>
<h3>Click the "Start <span style="font-family:Pictos;">]</span>" button below to get started!</h3>
</div>
<div class="bottomnav">
<button type="submit" value="classx" class="cbtn next">Start <span style="font-family:Pictos;">]</span></button>
</div>
</div>
</charmancer>
<charmancer class="sheet-charmancer-classx">
<div class="charmancer">
<div class="steps">
<button type="back" value="intro" class="cbtn">Intro</button>
<button type="back" value="classx" class="cbtn here">Class</button>
<button type="back" value="origin" class="cbtn">Origin</button>
<button type="back" value="namex" class="cbtn">Name</button>
<button type="back" value="equipment" class="cbtn">Equipment</button>
<button type="back" value="inventory" class="cbtn">Inventory</button>
<button type="back" value="responsibilities" class="cbtn">Responsibilities</button>
<button type="back" value="languages" class="cbtn">Languages</button>
<button type="cancel" class="cbtn cancel">Cancel</button>
</div>
<div class="content">
<h2>Class</h2>
<div class="3colrow">
<div class="col clearfix">
<p>Your characters Class defines their abilities in battle. It broadly represents the types of skills and experience they have gained in their lives that allow them to be proficient on the battlefield. In Zafir, newly created characters begin as one of three starting classes: <b>Recruit</b>, <b>Novice</b>, or <b>Seeker</b>.</p>
<p>Optionally, choose a starting class at random.</p>
<button type="roll" name="roll_class" class="btn" value="/em rolls for a random class: [[d3]]">Random Class</button>
</div>
<div class="col">
<label>Class:</label><select name="comp_classx">
<option disabled selected>Select a class...</option>
<option value="recruit">Recruit</option>
<option value="novice">Novice</option>
<option value="seeker">Seeker</option>
</select>
<hr />
<div class="sheet-choice classx-recruit">
<h3>Recruit</h3>
<p>Recruits are the starting <b>soldier</b> class.</p><p>They use guns, equipment, and specialized training to be effective on the battlefield. They rarely use magic or spirits.</p><p>Recruits can eventually specialize into soldier classes with expertise in close-combat fighting, explosives, long-range sharpshooting, or dabble in support magic. At level 2 they can become one of the following base classes, Trencher, Sapper, Arcanist, or Sharpshooter.</p>
</div>
<div class="sheet-choice classx-novice">
<h3>Novice</h3>
<p>Novices are the starting <b>mage</b> class. A mage is the term in Zafir for anyone that uses magic.</p><p>More specialized mage classes invoke the magical powers of the gods to wreak havoc on the battlefield.</p><p>Novices can eventually become full mages with a vast array of magical abilities to choose from, or a powerful arcane monk that specializes in magically-augmented hand-to-hand combat. Novices become the Adept base class.</p>
</div>
<div class="sheet-choice classx-seeker">
<h3>Seeker</h3>
<p>Seekers are the starting <b>spiritist</b> class. The worlds of the spirits overlap our own and the Spiritists use their strange science to contact those worlds.</p><p>Spiritists interact with spirits and daeva to influence the minds of their enemies and cause them harm.</p><p>Seekers can eventually choose to specialize in speaking with the spirits of the dead and convincing them to aid them and their allies on the battlefield, or in summoning and controlling daeva to unleash destruction upon their enemies. Seekers become the Acolyte base class.</p>
</div>
</div>
<div class="col">
<div class="sheet-choice classx-recruit">
<img src="https://raw.githubusercontent.com/RandyKnapp/roll20-character-sheets/master/Zafir/class-recruit.png" />
</div>
<div class="sheet-choice classx-novice">
<img src="https://raw.githubusercontent.com/RandyKnapp/roll20-character-sheets/master/Zafir/class-novice.png" />
</div>
<div class="sheet-choice classx-seeker">
<img src="https://raw.githubusercontent.com/RandyKnapp/roll20-character-sheets/master/Zafir/class-seeker.png" />
</div>
</div>
</div>
</div>
<div class="bottomnav">
<button type="back" value="intro" class="cbtn back"><span style="font-family:Pictos;">[</span> Back</button>
<button type="submit" value="origin" class="cbtn next">Next <span style="font-family:Pictos;">]</span></button>
</div>
</div>
</charmancer>
<charmancer class="sheet-charmancer-origin">
<div class="charmancer">
<div class="steps">
<button type="back" value="intro" class="cbtn">Intro</button>
<button type="back" value="classx" class="cbtn">Class</button>
<button type="back" value="origin" class="cbtn here">Origin</button>
<button type="back" value="namex" class="cbtn">Name</button>
<button type="back" value="equipment" class="cbtn">Equipment</button>
<button type="back" value="inventory" class="cbtn">Inventory</button>
<button type="back" value="responsibilities" class="cbtn">Responsibilities</button>
<button type="back" value="languages" class="cbtn">Languages</button>
<button type="cancel" class="cbtn cancel">Cancel</button>
</div>
<div class="content">
<h2>Origin</h2>
<div class="3colrow">
<div class="col">
<p>Our pasts always inform our present. Your origin may have a part in what you look like, but only your actions can determine your future.</p>
<p>Start by choosing which sapient species your character belongs to or rolling for a random species.</p>
<p>Optionally, choose a starting species at random.</p>
<p>Feel free to be as detailed or as vague with your origin as you like. It could include your age, appearance, height, coloration, birthplace, city of residence, citizenship, religion, former occupations, family, social status, deepest fear, secret desire, or any combination thereof.</p>
<div class="clearfix">
<button type="roll" name="roll_species" class="btn" value="/em rolls for a random species: [[d6]] [[d2]]">Random Species</button>
</div>
</div>
<div class="col">
<label>Species:</label><select name="comp_species">
<option disabled selected>Select a species...</option>
<option value="insaan">Insaan</option>
<option value="hinn">Hinn</option>
<option value="athenki">Ath'enki</option>
<option value="rhuthari">Rhuthari</option>
<option value="dyn">Dyn</option>
<option value="jaan">Jaan</option>
</select>
<div class="sheet-choice species-insaan">
<label>Origin:</label><textarea name="comp_origin" spellcheck="false" value=""></textarea>
<hr />
<h3>Insaan</h3>
<p>The insaan of Zafir are identical to the humans of Earth. They are the most populous species in Zafir, but also the most fractious, versatile, and contentious. Vast empires, tiny tribes, and numerous nations of insaan people exist across all the landmasses of Zafir.</p>
</div>
<div class="sheet-choice species-hinn">
<label>Origin:</label><textarea name="comp_origin" spellcheck="false" value=""></textarea>
<hr />
<h3>Hinn</h3>
<p>The hinn trace their lineage back for thousands of years to a people beloved by the gods and created from pure ethereal substance...or so they claim. These folk appear similar to the insaan but tend to be slightly smaller in stature and have large, pointed ears and narrow features. The hinn are wary and distrustful towards the other sapient species, but must often bury their own pride to work alongside them as the hinn have but one formal nation of their own and often integrate into the societies of primarily insaan nations.</p>
</div>
<div class="sheet-choice species-athenki">
<label>Origin:</label><textarea name="comp_origin" spellcheck="false" value=""></textarea>
<hr />
<h3>Ath'enki</h3>
<p>The athenki were completely unknown to the surface dwellers until 22 years ago, at the outbreak of what would become known as the Blue War. Tall, thin, wiry, and pale, the athenki can appear alien to those not used to seeing them. They have pupil-less varicolor eyes, two sharp tusks protruding upwards from their lower jaws, and skin that is a seemingly unnatural pale color ranging from cyan to blue to purple.</p>
</div>
<div class="sheet-choice species-rhuthari">
<label>Origin:</label><textarea name="comp_origin" spellcheck="false" value=""></textarea>
<hr />
<h3>Rhuthari</h3>
<p>A proud and upright folk, the leonine rhuthari form a massive nation of interconnected, semi-nomadic tribes. Standing a full head above most insaan with broad shoulders and a lions facial features, the rhuthari are imposing figures. They care deeply about justice and what is right. Some rhuthari have violated the strict codes of one of the Great Tribes and are currently living as Exiles.</p>
</div>
<div class="sheet-choice species-dyn">
<label>Subspecies:</label><select name="comp_dynsub" value="errad">
<option disabled selected>Select a subspecies...</option>
<option value="errad">Dyn-Errad</option>
<option value="essat">Dyn-Essat</option>
</select>
<label>Origin:</label><textarea name="comp_origin" spellcheck="false" value=""></textarea>
<hr />
<div class="sheet-choice dynsub-errad">
<h3>Dyn-Errad</h3>
<p>The dyn are a species of short, fox-like sapients. All dyn have a fox-like face with bright eyes, bodies covered in fur, and short tails.</p>
<p>The dyn-errad have reddish-brown fur and golden eyes. They can be found anywhere in the world, mingling with the other sapients, and are generally well-regarded or at least tolerated.</p>
</div>
<div class="sheet-choice dynsub-essat">
<h3>Dyn-Essat</h3>
<p>The dyn are a species of short, fox-like sapients. All dyn have a fox-like face with bright eyes, bodies covered in fur, and short tails.</p>
<p>The agrarian dyn-essat rarely travel away from their home island of Essat. The dyn-essat have completely white fur and blue or gold eyes.</p>
</div>
</div>
<div class="sheet-choice species-jaan">
<label>Subspecies:</label><select name="comp_jaansub" value="aquatic">
<option disabled selected>Select a subspecies...</option>
<option value="aquatic">Aquatic</option>
<option value="arboreal">Arboreal</option>
</select>
<label>Origin:</label><textarea name="comp_origin" spellcheck="false" value=""></textarea>
<hr />
<div class="sheet-choice jaansub-aquatic">
<h3>Jaan (Aquatic)</h3>
<p>The semi-aquatic jaan live peaceful lives on the coasts of their island nation far from conflict. These lizard-like people are tall and broad with long tails but have a hunched over posture when walking on land. Despite their adaptations for island life and peaceful nature, they are fierce warriors on land when given proper training.</p>
</div>
<div class="sheet-choice jaansub-arboreal">
<h3>Jaan (Arboreal)</h3>
<p>The arboreal jaan live peaceful lives in the boughs of their tree-cities in their rainforest, far from conflict. These lizard-like people are short and wiry with prehensile tails but have a hunched over posture when walking on the ground.</p>
</div>
</div>
</div>
<div class="col">
<div class="sheet-choice species-insaan">
<img class="species" src="https://raw.githubusercontent.com/RandyKnapp/roll20-character-sheets/master/Zafir/species-insaan.png" />
</div>
<div class="sheet-choice species-hinn">
<img class="species" src="https://raw.githubusercontent.com/RandyKnapp/roll20-character-sheets/master/Zafir/species-hinn.png" />
</div>
<div class="sheet-choice species-athenki">
<img class="species" src="https://raw.githubusercontent.com/RandyKnapp/roll20-character-sheets/master/Zafir/species-athenki.png" />
</div>
<div class="sheet-choice species-rhuthari">
<img class="species" src="https://raw.githubusercontent.com/RandyKnapp/roll20-character-sheets/master/Zafir/species-rhuthari.png" />
</div>
<div class="sheet-choice species-dyn">
<div class="sheet-choice dynsub-errad">
<img class="species" src="https://raw.githubusercontent.com/RandyKnapp/roll20-character-sheets/master/Zafir/species-dynerrad.png" />
</div>
<div class="sheet-choice dynsub-essat">
<img class="species" src="https://raw.githubusercontent.com/RandyKnapp/roll20-character-sheets/master/Zafir/species-dynessat.png" />
</div>
</div>
<div class="sheet-choice species-jaan">
<div class="sheet-choice jaansub-aquatic">
<img class="species" src="https://raw.githubusercontent.com/RandyKnapp/roll20-character-sheets/master/Zafir/class-recruit.png" />
</div>
<div class="sheet-choice jaansub-arboreal">
<img class="species" src="https://raw.githubusercontent.com/RandyKnapp/roll20-character-sheets/master/Zafir/species-jaanarboreal.png" />
</div>
</div>
</div>
</div>
</div>
<div class="bottomnav">
<button type="back" value="classx" class="cbtn back"><span style="font-family:Pictos;">[</span> Back</button>
<button type="submit" value="namex" class="cbtn next">Next <span style="font-family:Pictos;">]</span></button>
</div>
</div>
</charmancer>
<charmancer class="sheet-charmancer-namex">
<div class="charmancer">
<div class="steps">
<button type="back" value="intro" class="cbtn">Intro</button>
<button type="back" value="classx" class="cbtn">Class</button>
<button type="back" value="origin" class="cbtn">Origin</button>
<button type="back" value="namex" class="cbtn here">Name</button>
<button type="back" value="equipment" class="cbtn">Equipment</button>
<button type="back" value="inventory" class="cbtn">Inventory</button>
<button type="back" value="responsibilities" class="cbtn">Responsibilities</button>
<button type="back" value="languages" class="cbtn">Languages</button>
<button type="cancel" class="cbtn cancel">Cancel</button>
</div>
<div class="content">
<div class="3colrow">
<div class="col">
<h2>Pronouns</h2>
<p>Sex, gender, and gender expression are intensely personal in both our real world and on Zafir. All the GM and the other players really need to know is how to address your character, so choose some pronouns to use and write them in on your character sheet. Common pronouns for people in Zafir are they/them, she/her, and he/him.</p>
<label>Pronouns:</label><input type="text" name="comp_pronouns" spellcheck="false" value="" /><br />
<br />
<p>Or roll for random pronouns.</p>
<div class="clearfix">
<button type="roll" name="roll_pronouns" class="btn" value="/em rolls for a random pronouns: [[d3]]">Random Pronouns</button>
</div>
</div>
<div class="col">
<h2>Name</h2>
<p>Give your character a name. It can be anything, but your friends would probably prefer that they can pronounce it. Some suggestions based on your species are listed in the column to the right.</p>
<label>Name:</label><textarea name="comp_name" spellcheck="false" value=""></textarea>
<p>Or roll for a random name based on your species.</p>
<div class="sheet-choice species-insaan clearfix">
<button type="roll" name="roll_name" class="btn" value="/em rolls for a random name: [[d3]] [[d72]] [[d36]] [[d36]]">Random Name</button>
</div>
<div class="sheet-choice species-hinn clearfix">
<button type="roll" name="roll_name" class="btn" value="/em rolls for a random name: [[d3]] [[d72]] [[d36]] [[d36]]">Random Name</button>
</div>
<div class="sheet-choice species-athenki clearfix">
<button type="roll" name="roll_name" class="btn" value="/em rolls for a random name: [[d3]] [[d12]] [[d18]]">Random Name</button>
</div>
<div class="sheet-choice species-rhuthari clearfix">
<button type="roll" name="roll_name" class="btn" value="/em rolls for a random name: [[d3]] [[d6]] [[d18]]">Random Name</button>
</div>
<div class="sheet-choice species-dyn clearfix">
<button type="roll" name="roll_name" class="btn" value="/em rolls for a random name: [[d3]] [[d36]] [[d36]] [[d36]] [[d36]]">Random Name</button>
</div>
<div class="sheet-choice species-jaan clearfix">
<button type="roll" name="roll_name" class="btn" value="/em rolls for a random name: [[d3]] [[d36]] [[d36]] [[d36]] [[d36]] [[d36]] [[d36]]">Random Name</button>
</div>
</div>
<div class="col">
<div class="sheet-choice species-insaan">
<h3>Insaan Names</h3>
<p>Insaan are named like the humans of the real-world, they have a name given to them by their parents and a family name, which they share with their family. Given names are often gender specific, but can be gender neutral. When choosing a name for a character with an insaan background, feel free to use any name you desire. Insaan names are extremely varied and may be similar to names from any Earth language or society.</p>
</div>
<div class="sheet-choice species-hinn">
<h3>Hinn Given Names</h3>
<p>Hinn use names similarly to insaan, with both given and family names. Names for hinn can be similar to the insaan in the region in which they are born, or they can be based on ancient Etherian words and names.</p>
</div>
<div class="sheet-choice species-athenki">
<h3>Ath'enki Names</h3>
<p>The athenki language Batarak includes an apostrophe in many words to denote an implication of subtextual meaning, similar to how it denotes missing letters in contractions in English on Earth. It also favors fricative sounds like V, Z, SH, and TH and hard consonants such as G, T, and K combined with vowels. Names follow a similar form. Like the insaan, athenki have a given name and a family name.</p>
</div>
<div class="sheet-choice species-rhuthari">
<h3>Rhuthari Names</h3>
<p>Rhuthari generally have two names, a chosen name and a tribal name. All members of one tribe share the tribal name, which has a prefix “al-” which means “of”. When a rhuthari comes of age, they choose for themselves a name they find appropriate or desirable. Savanna rhuthari have chosen names similar to African or Middle Eastern people of Earth, while islander rhuthari tend to have names that sound like Indonesian and Polynesian names. Before they choose their own names, children are simply referred to as “child of so-and-so.”</p>
</div>
<div class="sheet-choice species-dyn">
<h3>Dyn Names</h3>
<p>Dyn exclusively use single-syllable given names, but often have three of four familial names tracing their heritage back a few generations. The family names of any one dyn are simply the given names of their ancestors: one name of their parents, their grandparents, their great-grandparents, etc. Its uncommon to have five or more family names, and its considered somewhat pretentious to use that many. Insaan often mistakenly combine all the familial names into a single last name when creating records of dyn associates. Littermates are often given names that rhyme with each other. Dynish names dont carry gender connotation.</p>
</div>
<div class="sheet-choice species-jaan">
<h3>Jaan Names</h3>
<p>Jaan usually have one name, and that name can be quite complex to insaan ears. The mothers of a child give them their name on the dawn of the 6th day after they are born, traditionally arguing about what the name should be, and who it should honor. Compromises are made, and the name tends to become long by the 6th day.</p>
</div>
<hr />
<div class="sheet-choice species-insaan">
<h3>Insaan Given Names</h3>
<div class="inset">
<p><b>Masculine given names:</b> Atandwa, Aziz, Chen, Farid, Frederick, George, Jonathan, Marcus, Nico, Nozumo, Remi, Solomon, Yousef.</p>
<p><b>Feminine given names:</b> Gertrude, Jennifer, Kira, Koichi, Layla, Nadine, Naima, Yasmine, Ziyi.</p>
<p><b>Neutral given names:</b> Aki, Alex, Bevan, Cam, Hunter, Kieran, Nicky, Rei, Scout, Sky, Zaza.</p>
</div>
<h3>Insaan Family Names</h3>
<div class="inset">
<p><b>Family names:</b> Akosh, Al-Kwarismi, Amedda, Baker, Gurira, Hernandez, Higge, Holstead, Nyongo, Petrunich, Pin, Shao, Smith, Sunkett, Takashi, Trewella, Vanater, Zulu.</p>
</div>
</div>
<div class="sheet-choice species-hinn">
<h3>Hinn Given Names</h3>
<div class="inset">
<p><b>Masculine given names:</b> Elleran, Makatosh, Malon, Omar, Relanor, Kevin.</p>
<p><b>Feminine given names:</b> Aleria, Fareena, Gelleneth, Nadia, Octavia, Tela.</p>
<p><b>Neutral given names:</b> Aramani, Auden, Janus, Hadli, Katana, Reinn.</p>
</div>
<h3>Hinn Family Names</h3>
<div class="inset">
<p><b>Family names:</b> <em>Use insaan family names or:</em> Aenwyn, Alavara, Elandor, Elion, Elpharae, Haera, Halanaestra, Ilmadia, Myrdin, Nephinae, Orivaris, Saphielle, Thaola, Umeleth, Vaeri, Xilren, Zestari, Zilyana.</p>
</div>
</div>
<div class="sheet-choice species-athenki">
<h3>Ath'enki Given Names</h3>
<div class="inset">
<p><b>Masculine given names:</b> Agizja, Dakka, Harakan, Kagana, Kathaxo, Koshtuko, Livogorak, Luriz, Ntuukuguk, Tannakka, Zivik.</p>
<p><b>Feminine given names:</b> Azoza, Bannika, Chabat, Chkoda, Eshozi, Inkathu, Kruthani, Mimirik, Rizo, Tishek, Tozakamak.</p>
<p><b>Neutral given names:</b> Bhak, Gonka, Lazgak, Marzuk, Vetkag, Zakath.</p>
</div>
<h3>Ath'enki Family Names</h3>
<div class="inset">
<p><b>Family names:</b> Aggoganon, Ghazat, Harztarni, Inzegonogorek, Ktuj, Lashtal, Merkikot, Molvixo, Nguchat, Oh, Ongkud, Thalnuutong, Uzak, Vasht, Vox, Vromdak, Zagnatz, Zarod, Zetrok.</p>
</div>
</div>
<div class="sheet-choice species-rhuthari">
<h3>Rhuthari Chosen Names</h3>
<div class="inset">
<p><b>Masculine chosen names:</b> Barmasai, Fetu, Lo-ikerra, Palueiite, Rangi, Tamati.</p>
<p><b>Feminine chosen names:</b> Akinyi, Asoese, La-ei, Lanuola, Makena, Tueila.</p>
<p><b>Neutral chosen names:</b> Ainalani, Aputi, Kerubo, Kioko, Laki, Nataana.</p>
</div>
<h3>Rhuthari Tribal Names</h3>
<div class="inset">
<p><b>Tribal names:</b> al-Arana, al-Devi, al-Juma, al-Kama, al-Kaukai, al-Kikuyu, al-Kimani, al-Kura, al-Maina, al-Mwangi, al-Njeri, al-Odhiambo, al-Omondi, al-Ora, al-Palakiko, al-Shah, al-Turi, al-Ashi (Exiles).</p>
</div>
</div>
<div class="sheet-choice species-dyn">
<h3>Dynish Names</h3>
<div class="inset">
<p><b>Dynish names:</b> Ash, Bekke, Bo, Bru, Chik, Clank, Cronk, Darn, Denn, Djit, Etch, Forp, Gage, Jai, Jax, Kye, Mack, Mark, Mim, Mok, Perl, Poe, Poz, Quin, Star, Stim, Til, Tiz, Viv, Wren, Xed, Zee, Zilch.</p>
</div>
</div>
<div class="sheet-choice species-jaan">
<h3>Jaan Names</h3>
<div class="inset">
<p>Agoranamchanigaragara “Gara”, Farudammangeringthoriadishmalchannagath “Chi-chi”, Ishinsherishawankalatisheevarundi “Ishi”, Lalamomoannanciama “Lala”, Maltinoragbarinthia “Malta”, Torrakamundabaruthadaring “Rakamunda”</p>
</div>
</div>
</div>
</div>
</div>
<div class="bottomnav">
<button type="back" value="origin" class="cbtn back"><span style="font-family:Pictos;">[</span> Back</button>
<button type="submit" value="equipment" class="cbtn next">Next <span style="font-family:Pictos;">]</span></button>
</div>
</div>
</div>
</charmancer>
<charmancer class="sheet-charmancer-equipment">
<div class="charmancer">
<div class="steps">
<button type="back" value="intro" class="cbtn">Intro</button>
<button type="back" value="classx" class="cbtn">Class</button>
<button type="back" value="origin" class="cbtn">Origin</button>
<button type="back" value="namex" class="cbtn">Name</button>
<button type="back" value="equipment" class="cbtn here">Equipment</button>
<button type="back" value="inventory" class="cbtn">Inventory</button>
<button type="back" value="responsibilities" class="cbtn">Responsibilities</button>
<button type="back" value="languages" class="cbtn">Languages</button>
<button type="cancel" class="cbtn cancel">Cancel</button>
</div>
<div class="content">
<h2>Equipment</h2>
<div class="3colrow">
<div class="col">
<p>Each character starts with a set of gear that will get them through their first mission. Choose one of two starting primary weapons and one of three starting secondary weapons. Novices and Seekers can choose an arcane focus (spell focus) or spiritual resonator (idiophone), respectively, instead of a primary weapon. Every character starts with the same body armor: a ballistic vest.</p>
</div>
<div class="col">
<div class="sheet-choice classx-recruit">
<label>Primary:</label><select name="comp_wp">
<option disabled selected>Select a primary weapon...</option>
<option value="autorifle">Autorifle</option>
<option value="lightcarbine">Light Carbine</option>
</select>
</div>
<div class="sheet-choice classx-novice">
<label>Primary:</label><select name="comp_wp">
<option disabled selected>Select a primary weapon...</option>
<option value="autorifle">Autorifle</option>
<option value="lightcarbine">Light Carbine</option>
<option value="spellfocus">Spell Focus</option>
</select>
</div>
<div class="sheet-choice classx-seeker">
<label>Primary:</label><select name="comp_wp">
<option disabled selected>Select a primary weapon...</option>
<option value="autorifle">Autorifle</option>
<option value="lightcarbine">Light Carbine</option>
<option value="idiophone">Idiophone</option>
</select>
</div>
<label>Secondary:</label><select name="comp_ws">
<option disabled selected>Select a secondary weapon...</option>
<option value="combatknife">Combat Knife (melee)</option>
<option value="pistol">Pistol</option>
<option value="heavypistol">Heavy Pistol</option>
</select>
<hr />
<div class="sheet-choice wp-lightcarbine">
<label class="weaponlabel">Light Carbine</label><br />
<b>Range:</b> Med, <b>Aim Dice:</b> 0, <b>Crit Dice:</b> 0<br />
<b>Damage:</b> d3 + 2, <b>Crit Dmg:</b> +2, <b>Ammo:</b> 4<br />
<em>Lightweight: +2 Speed</em>
</div>
<div class="sheet-choice wp-autorifle">
<label class="weaponlabel">Autorifle</label><br />
<b>Range:</b> Med, <b>Aim Dice:</b> 0, <b>Crit Dice:</b> 0<br />
<b>Damage:</b> d3 + 2, <b>Crit Dmg:</b> +2, <b>Ammo:</b> 4
</div>
<div class="sheet-choice wp-spellfocus">
<label class="weaponlabel">Spell Focus <em>(Arcane Focus)</em></label><br />
<b>Effect:</b> Once per mission, reduce a magic abilitys cooldown by 1.<br />
<em>(Uses Primary Weapon Slot)</em>
</div>
<div class="sheet-choice wp-idiophone">
<label class="weaponlabel">Idiophone <em>(Spiritual Resonator)</em></label><br />
<b>Effect:</b> +1 Will when making Will Attacks.<br />
<em>(Uses Primary Weapon Slot)</em>
</div>
<br />
<div class="sheet-choice ws-combatknife">
<label class="weaponlabel">Combat Knife</label><br />
<b>Range:</b> Adj, <b>Aim Dice:</b> +2, <b>Crit Dice:</b> 0<br />
<b>Damage:</b> d3, <b>Crit Dmg:</b> +1
</div>
<div class="sheet-choice ws-pistol">
<label class="weaponlabel">Pistol</label><br />
<b>Range:</b> Short, <b>Aim Dice:</b> +1, <b>Crit Dice:</b> 0<br />
<b>Damage:</b> 2, <b>Crit Dmg:</b> +1, <b>Ammo:</b>
</div>
<div class="sheet-choice ws-heavypistol">
<label class="weaponlabel">Heavy Pistol</label><br />
<b>Range:</b> Short, <b>Aim Dice:</b> 0, <b>Crit Dice:</b> 0<br />
<b>Damage:</b> 3, <b>Crit Dmg:</b> +1, <b>Ammo:</b>
</div>
</div>
<div class="col">
<div class="sheet-choice classx-recruit">
<h3>Starting Item</h3>
<p>Recruits start with one of two utility items: a frag grenade or a medkit.</p>
<label>Item:</label><select name="comp_item">
<option disabled selected>Select an item...</option>
<option value="fraggrenade">Frag Grenade</option>
<option value="medkit">Medkit</option>
</select>
<hr />
<div class="sheet-choice item-fraggrenade">
<label class="weaponlabel">Frag Grenade</label><br />
<b>Range:</b> Short, <b>Radius:</b> 1.5, <b>Crit Dice:</b> 0<br />
<b>Damage:</b> d2 + 2, <b>Crit Dmg:</b> +1, <b>Breaking:</b> 1<br />
<b>Effect:</b> Destroys Cover.
</div>
<div class="sheet-choice item-medkit">
<label class="weaponlabel">Medkit</label><br />
<b>Effect:</b> Heal self or target adjacent unit for 4 HP.
</div>
</div>
<div class="sheet-choice classx-novice">
<h3>Starting Ability</h3>
<p>Novices start with the Ignite ability.</p>
<hr />
<label class="abilitylabel">Ignite</label><br />
<b>Activation:</b> >|, <b>Range:</b> Short<br />
<b>Cooldown:</b> 3, <b>Charges:</b> 2<br />
<b>Effect:</b> Target unit in range and in line of sight gains Burning.
</div>
<div class="sheet-choice classx-seeker">
<h3>Starting Ability</h3>
<p>Seekers start with the Terrorize ability.</p>
<hr />
<label class="abilitylabel">Terrorize</label><br />
<b>Activation:</b> >, <b>Range:</b> Medium<br />
<b>Cooldown:</b> 2, <b>Charges:</b> 2<br />
<b>Effect:</b> Target a Living unit in range and in line of sight and make a Will Attack against it.<br /><em>On Success:</em> target unit gains Panic.<br /><em>On Resist:</em> target unit gains Disoriented.
</div>
</div>
</div>
</div>
<div class="bottomnav">
<button type="back" value="namex" class="cbtn back"><span style="font-family:Pictos;">[</span> Back</button>
<button type="submit" value="inventory" class="cbtn next">Next <span style="font-family:Pictos;">]</span></button>
</div>
</div>
</div>
</charmancer>
<charmancer class="sheet-charmancer-inventory">
<div class="charmancer">
<div class="steps">
<button type="back" value="intro" class="cbtn">Intro</button>
<button type="back" value="classx" class="cbtn">Class</button>
<button type="back" value="origin" class="cbtn">Origin</button>
<button type="back" value="namex" class="cbtn">Name</button>
<button type="back" value="equipment" class="cbtn">Equipment</button>
<button type="back" value="inventory" class="cbtn here">Inventory</button>
<button type="back" value="responsibilities" class="cbtn">Responsibilities</button>
<button type="back" value="languages" class="cbtn">Languages</button>
<button type="cancel" class="cbtn cancel">Cancel</button>
</div>
<div class="content">
<h2>Inventory</h2>
<div class="3colrow">
<div class="col">
<h3>Money</h3>
<p>Each character starts with 2d6 + 20 riyals. Roll your starting money now by clicking the button below, or entering the value you rolled by hand.</p>
<button type="roll" name="roll_money" class="btn" value="/em rolls for starting money: [[2d6+20]]">Roll Starting Money</button>
<label class="short money" style="font-family:Helvetica, Arial"></label><input type="number" name="comp_startingmoney" value="0"/><br/>
</div>
<div class="col">
<h3>Inventory Items</h3>
<p>Choose any number of the suggested useful items that feel appropriate for your character (or randomly generate a few trinkets).</p>
<label>Inventory:</label><br />
<textarea spellcheck="false" name="comp_inventory" style="height:250px;" value=""></textarea>
<button type="roll" name="roll_trinket" class="btn" value="/em rolls for a random trinket: ([[d6]], [[d6]])">Add Random Trinket</button>
</div>
<div class="col">
<h4>Suggestions:</h4>
<ul>
<li>Bag, backpack, or rucksack</li>
<li>Two sets of common clothing</li>
<li>Rifle cleaning &amp; maintenance kit</li>
<li>Canteen</li>
<li>Mess kit (metal plate, fork &amp; spoon)</li >
<li>Small folding knife</li>
<li>Toolkit (screwdriver, hammer, wrench, pliers, file, fasteners)</li>
<li>Auranite-powered flashlight, or hooded nethane lantern</li>
<li>Tinderbox &amp; chemical matches, or artifact fire-starter</li>
<li>15 meters of rope</li>
<li>Musical instrument</li>
<li>Journal &amp; pencil</li>
<li>Deck of royal hokm cards</li>
<li>Personal keepsake (jewelry, photograph, etc.)</li>
<li>Tobacco or qunubu cigarettes</li>
</ul>
</div>
</div>
</div>
<div class="bottomnav">
<button type="back" value="equipment" class="cbtn back"><span style="font-family:Pictos;">[</span> Back</button>
<button type="submit" value="responsibilities" class="cbtn next">Next <span style="font-family:Pictos;">]</span></button>
</div>
</div>
</charmancer>
<charmancer class="sheet-charmancer-responsibilities">
<div class="charmancer">
<div class="steps">
<button type="back" value="intro" class="cbtn">Intro</button>
<button type="back" value="classx" class="cbtn">Class</button>
<button type="back" value="origin" class="cbtn">Origin</button>
<button type="back" value="namex" class="cbtn">Name</button>
<button type="back" value="equipment" class="cbtn">Equipment</button>
<button type="back" value="inventory" class="cbtn">Inventory</button>
<button type="back" value="responsibilities" class="cbtn here">Responsibilities</button>
<button type="back" value="languages" class="cbtn">Languages</button>
<button type="cancel" class="cbtn cancel">Cancel</button>
</div>
<div class="content">
<h2>Responsibilities</h2>
<div class="3colrow">
<div class="col">
<p>
Responsibilities describe your characters skill in non-combat situations.
</p>
<p>
Your character starts at Expert skill level in one responsibility and gains 3 points in that responsibility. They also start at Basic skill level with the duties of two other responsibilities and gain 1 point in each of those. Your character starts with zero points in the rest of the responsibilities.
</p>
<button type="roll" name="roll_responsibilities" class="btn" value="/em rolls for starting responsibilities: [[d10]] [[d10]] [[d10]]">Roll Random Responsibilities</button>
</div>
<div class="col">
<label style="width:150px" data-i18n="Acquisition:">Acquisition:</label><input type="number" name="comp_acquisition" value="0" /><br />
<label style="width:150px" data-i18n="Arcana:">Arcana:</label><input type="number" name="comp_arcana" value="0" /><br />
<label style="width:150px" data-i18n="Engineering:">Engineering:</label><input type="number" name="comp_engineering" value="0" /><br />
<label style="width:150px" data-i18n="Entertainment:">Entertainment:</label><input type="number" name="comp_entertainment" value="0" /><br />
<label style="width:150px" data-i18n="Leadership:">Leadership:</label><input type="number" name="comp_leadership" value="0" /><br />
<label style="width:150px" data-i18n="Medicine:">Medicine:</label><input type="number" name="comp_medicine" value="0" /><br />
<label style="width:150px" data-i18n="Navigation:">Navigation:</label><input type="number" name="comp_navigation" value="0" /><br />
<label style="width:150px" data-i18n="Security:">Security:</label><input type="number" name="comp_security" value="0" /><br />
<label style="width:150px" data-i18n="Spirituality:">Spirituality:</label><input type="number" name="comp_spirituality" value="0" /><br />
<label style="width:150px" data-i18n="Sustenance:">Sustenance:</label><input type="number" name="comp_sustenance" value="0" />
</div>
<div class="col">
<b>Acquisition:</b><br />Clever. Finds stuff, buys stuff, or steals stuff. Negotiates a good price. Knows the value of things. Completely 100% trustworthy, probably.<br /><br />
<b>Arcana:</b><br />Knows secrets, themselves, and a little bit of everything else. Identifies monsters and magic. Understands the layers of the cosmos. Strong willed. Reads a lot of old books.<br /><br />
<b>Engineering:</b><br />Smart, intuitive. Understands machines. Fixes stuff, makes stuff, upgrades stuff. Has a lot of tools youve never heard of.<br /><br />
<b>Entertainment:</b><br />Fun! Tells stories, sings songs, brightens spirits. Likes to laugh. Knows how to talk to people, understands them.<br /><br />
<b>Leadership:</b><br />Respected, loved, or feared. Gives orders, commands. Knows how to talk to people, public relations, roots in the community. Convinces others to act.<br /><br />
<b>Medicine:</b><br />Steady hands, keeps their tools sharp, cleans things. Keeps people alive, keeps people healthy. Knows about drugs.<br /><br />
<b>Navigation:</b><br />Good memory, reads a lot, book smart. Reads maps. Can fly airships and drive autocars. Probably wont get lost.<br /><br />
<b>Security:</b><br />Street smart, reads a room. Enforces order, keeps the peace, causes a ruckus. Likes guns; knows about guns, bullets, and bombs; keeps their guns ready. Will punch folk.<br /><br />
<b>Spirituality:</b><br />Has a big heart, but knows how to guard it. Helps others think, feel, and know their own hearts. Knows about gods, religions, and rituals. Knows about spirits, daeva, love, and loss.<br /><br />
<b>Sustenance:</b><br />Dependable, confident. Grows food, buys food, cooks food. Keeps people healthy. Knows about plants, animals, soil, and seasons.
</div>
</div>
</div>
<div class="bottomnav">
<button type="back" value="inventory" class="cbtn back"><span style="font-family:Pictos;">[</span> Back</button>
<button type="submit" value="languages" class="cbtn next">Next <span style="font-family:Pictos;">]</span></button>
</div>
</div>
</charmancer>
<charmancer class="sheet-charmancer-languages">
<div class="charmancer">
<div class="steps">
<button type="back" value="intro" class="cbtn">Intro</button>
<button type="back" value="classx" class="cbtn">Class</button>
<button type="back" value="origin" class="cbtn">Origin</button>
<button type="back" value="namex" class="cbtn">Name</button>
<button type="back" value="equipment" class="cbtn">Equipment</button>
<button type="back" value="inventory" class="cbtn">Inventory</button>
<button type="back" value="responsibilities" class="cbtn">Responsibilities</button>
<button type="back" value="languages" class="cbtn here">Languages</button>
<button type="cancel" class="cbtn cancel">Cancel</button>
</div>
<div class="content">
<h2>Languages</h2>
<div class="3colrow">
<div class="col">
<p>Every character can communicate using language. For any language, your character can either be fluent, meaning they speak the language well with a wide vocabulary; conversational, meaning they speak the language well enough to get by in daily life but lack an extended vocabulary; or not at all, in which they do not understand that language at all.
</p>
<p>You may choose to start with one of the following sets of language capabilities:
</p>
<ul>
<li>1 Fluent Language</li>
<li>3 Conversational Languages</li>
</ul>
<p>Or</p>
<ul>
<li>2 Fluent Languages</li>
</ul>
</div>
<div class="col">
<h3 data-i18n="Fluent">Fluent</h3>
<textarea name="comp_fluentlanguages" spellcheck="false" value=""></textarea>
<br />
<h3 data-i18n="Conversational">Conversational</h3>
<textarea name="comp_conversationallanguages" spellcheck="false" value=""></textarea>
</div>
<div class="col">
<b>Akkor:</b><br />Jaan common language.<br /><br />
<b>Kikkir:</b><br />Arboreal jaan dialect of Akkor.<br /><br />
<b>Batarak:</b><br />Athenki common language.<br /><br />
<b>Gabatura:</b><br />Athenki religious/ultra-formal dialect of Batarak (sometimes called Zephyrian).<br /><br />
<b>Daevic:</b><br />The language of daevas.<br /><br />
<b>Daulite:</b><br />Daul regional language, insaan.<br /><br />
<b>Dynish:</b><br />Dyn common language.<br /><br />
<b>Etherian:</b><br />Ancient hinn language (archaic, most modern hinn speak Everan or Sultain).<br /><br />
<b>Everan:</b><br />Common surface world language, mainly insaan, Delardian Federation official language.<br /><br />
<b>Morrillian:</b><br />Morril regional dialect of Everan, insaan.<br /><br />
<b>UZS (Universal Zafiri Sign):</b><br />The official sign language of Zafir, adopted worldwide in 919 MA3.<br /><br />
<b>Jaxton (Jacks Tongue):</b><br />Secret code/cant of the Disciples of Jack (usually in Everan).<br /><br />
<b>Rhuthari:</b><br />Rhuthari common language.<br /><br />
<b>Sultain:</b><br />Sultain Imperium official language.<br /><br />
<b>Old Sultain:</b><br />Ancient Sultain language, still used for religious purposes (archaic).
</div>
</div>
</div>
<div class="bottomnav">
<button type="back" value="responsibilities" class="cbtn back"><span style="font-family:Pictos;">[</span> Back</button>
<button type="finish" value="x" class="cbtn next finish">Finish <span style="font-family:Pictos;">3</span></button>
</div>
</div>
</charmancer>
<!-- // Sheet Workers //////////////////////////////////////////////////////////////// -->
<script type="text/worker">
// Main tab bar
const buttonlist = ["atk", "aab", "pab", "eqp", "res", "inv", "oth", "set"];
buttonlist.forEach(button => {
on(`clicked:${button}`, function() {
setAttrs({
sheetTab: button
});
});
});
// Equipment sheet tab bar
const buttonlistEqp = ["epw", "esw", "eba", "ehg", "eit"];
buttonlistEqp.forEach(button => {
on(`clicked:${button}`, function() {
setAttrs({
sheetTabEqp: button
});
});
});
// Equipment sheet tab bar
const buttonlistAbilities = ["aaa", "apa"];
buttonlistAbilities.forEach(button => {
on(`clicked:${button}`, function() {
setAttrs({
sheetTabAbilities: button
});
});
});
// Combat sheet tab bar
const buttonlistAttacks = ["cwp", "cgn", "cwl", "cit"];
buttonlistAttacks.forEach(button => {
on(`clicked:${button}`, function() {
setAttrs({
sheetTabAttacks: button
});
});
});
// Combat sheet tab bar
const buttonlistGm = ["gmcombat", "gmunits"];
buttonlistGm.forEach(button => {
on(`clicked:${button}`, function() {
setAttrs({
gmTab: button
});
});
});
// Skill use responsibilities buttons
const responsibilities = [
"acquisition",
"arcana",
"engineering",
"entertainment",
"leadership",
"medicine",
"navigation",
"security",
"spirituality",
"sustenance"
];
responsibilities.forEach(responsibility => {
on(`clicked:use${responsibility}`, function() {
setAttrs({
skillresponsibility: responsibility
});
});
});
function sheetOpenAndAttrChanged(inputs) {
return "sheet:opened change:" + inputs.join(" change:");
}
function getRepeatingAttrs(repeatingSection, attrs, onComplete) {
getSectionIDs(repeatingSection, function (ids) {
let attrsToGet = [];
for (let i = 0; i < ids.length; ++i) {
let id = ids[i];
for (let j = 0; j < attrs.length; ++j) {
let attrName = attrs[j];
attrsToGet.push(`repeating_${repeatingSection}_${id}_${attrName}`);
}
}
getAttrs(attrsToGet, function(values) {
let simpleValues = {};
for (let i = 0; i < ids.length; ++i) {
let id = ids[i];
simpleValues[id] = {};
for (let j = 0; j < attrs.length; ++j) {
let attrName = attrs[j];
simpleValues[id][attrName] = values[`repeating_${repeatingSection}_${id}_${attrName}`];
}
}
onComplete(ids, simpleValues, values);
});
});
}
// Setting the calculated attributes
const combatAttrInputs = [
"level",
"toughness",
"agility",
"accuracy",
"discipline",
"maxhpother",
"speedother",
"aimother",
"willother",
"bahp"
];
on(sheetOpenAndAttrChanged(combatAttrInputs), function() {
getAttrs(combatAttrInputs, function(values) {
let level = parseInt(values.level)||0;
let toughness = parseInt(values.toughness)||0;
let agility = parseInt(values.agility)||0;
let accuracy = parseInt(values.accuracy)||0;
let discipline = parseInt(values.discipline)||0;
let maxhpother = parseInt(values.maxhpother)||0;
let speedother = parseInt(values.speedother)||0;
let aimother = parseInt(values.aimother)||0;
let willother = parseInt(values.willother)||0;
let bodyArmorHP = parseInt(values.bahp)||0;
let halflevel = Math.floor(level / 2);
let doubleAgility = (agility * 2);
setAttrs({
halflevel: halflevel,
doubleagility: doubleAgility,
hp_max: 2 + halflevel + toughness + bodyArmorHP + maxhpother,
speed: 6 + doubleAgility + speedother,
aim: accuracy + aimother,
will: discipline + willother
});
});
});
// Setting the aim dice for weapon attacks
const attackDiceInputs = [
"wpaimdice",
"wpcritdice",
"wpdamage",
"wpcritdmg",
"wsaimdice",
"wscritdice",
"wsdamage",
"wscritdmg",
"aim",
"atkcover",
"atkelevation",
"atkrange",
"atkotheraim",
"atkothercrit",
"gmatkaimdice",
"gmatkcritdice",
"gmatk1aimdice",
"gmatk1critdice",
"gmatk2aimdice",
"gmatk2critdice",
"atkoverwatch"
];
on(sheetOpenAndAttrChanged(attackDiceInputs) +
" change:repeating_activeabilities" +
" change:repeating_activeabilities:aablatkweap" +
" change:repeating_activeabilities:aablatkaim" +
" change:repeating_activeabilities:aablatkcrit" +
" change:repeating_activeabilities:aablatkdmg" +
" change:repeating_activeabilities:aablatkcritdmg" +
" change:repeating_activeabilities:aablatkbonusdmg", function() {
getAttrs(attackDiceInputs, function(values) {
let wpaimdice = parseInt(values.wpaimdice)||0;
let wpcritdice = parseInt(values.wpcritdice)||0;
let wpdamage = values.wpdamage;
let wpcritdmg = parseInt(values.wpcritdmg)||0;
let wsaimdice = parseInt(values.wsaimdice)||0;
let wscritdice = parseInt(values.wscritdice)||0;
let wsdamage = values.wsdamage;
let wscritdmg = parseInt(values.wscritdmg)||0;
let aim = parseInt(values.aim)||0;
let atkcover = values.atkcover;
let atkelevation = values.atkelevation;
let atkrange = values.atkrange;
let atkoverwatch = values.atkoverwatch;
let atkotheraim = parseInt(values.atkotheraim)||0;
let atkothercrit = parseInt(values.atkothercrit)||0;
let gmatkaimdice = parseInt(values.gmatkaimdice)||0;
let gmatkcritdice = parseInt(values.gmatkcritdice)||0;
let gmatk1aimdice = parseInt(values.gmatk1aimdice)||0;
let gmatk1critdice = parseInt(values.gmatk1critdice)||0;
let gmatk2aimdice = parseInt(values.gmatk2aimdice)||0;
let gmatk2critdice = parseInt(values.gmatk2critdice)||0;
let aimBonus = 0;
let critBonus = 0;
// Cover
if (atkcover == "No Cover") {
aimBonus += 2;
critBonus += 2;
}
else if (atkcover == "Half Cover") {
aimBonus += 1;
}
// Elevation
if (atkelevation == "Elevation") {
aimBonus += 1;
}
// Range
if (atkrange == "Non-optimal") {
aimBonus -= 1;
}
// Overwatch
if (atkoverwatch == "Yes") {
aimBonus -= 1;
}
setAttrs({
wpattackaimdice: Math.max(wpaimdice + aim + atkotheraim + aimBonus, 0),
wpattackcritdice: Math.max(wpcritdice + atkothercrit + critBonus, 0),
wpattackdamage: wpdamage,
wsattackaimdice: Math.max(wsaimdice + aim + atkotheraim + aimBonus, 0),
wsattackcritdice: Math.max(wscritdice + atkothercrit + critBonus, 0),
wsattackdamage: wsdamage,
custattackaimdice: Math.max(aim + atkotheraim + aimBonus, 0),
custattackcritdice: Math.max(atkothercrit + critBonus, 0),
gmatkaimdicetotal: Math.max(gmatkaimdice + aimBonus, 0),
gmatkcritdicetotal: Math.max(gmatkcritdice + critBonus, 0),
gmatk1aimdicetotal: Math.max(gmatk1aimdice + aimBonus, 0),
gmatk1critdicetotal: Math.max(gmatk1critdice + critBonus, 0),
gmatk2aimdicetotal: Math.max(gmatk2aimdice + aimBonus, 0),
gmatk2critdicetotal: Math.max(gmatk2critdice + critBonus, 0)
});
const repeatAttrs = [
"aablatkweap",
"aablatkaim",
"aablatkcrit",
"aablatkdmg",
"aablatkcritdmg",
"aablatkbonusdmg"
];
getRepeatingAttrs("activeabilities", repeatAttrs, function(ids, simpleValues) {
let output = {};
for (let i = 0; i < ids.length; ++i) {
let id = ids[i];
let aablatkweap = simpleValues[id].aablatkweap;
let aablatkaim = parseInt(simpleValues[id].aablatkaim)||0;
let aablatkcrit = parseInt(simpleValues[id].aablatkcrit)||0;
let aablatkdmg = simpleValues[id].aablatkdmg;
let aablatkcritdmg = parseInt(simpleValues[id].aablatkcritdmg)||0;
let aablatkbonusdmg = parseInt(simpleValues[id].aablatkbonusdmg)||0;
let baseAimDice = 0;
let baseCritDice = 0;
let totalDamage = "";
let totalCritDamage = 0;
if (aablatkweap == "Nothing") {
baseAimDice = aablatkaim;
baseCritDice = aablatkcrit;
totalDamage = aablatkdmg;
totalCritDamage = aablatkcritdmg;
}
else if (aablatkweap == "Primary") {
baseAimDice = wpaimdice + aablatkaim;
baseCritDice = wpcritdice + aablatkcrit;
totalDamage = wpdamage;
totalCritDamage = wpcritdmg + aablatkcritdmg;
if (aablatkbonusdmg > 0) {
totalDamage += "+" + aablatkbonusdmg;
}
}
else if (aablatkweap == "Secondary") {
baseAimDice = wsaimdice + aablatkaim;
baseCritDice = wscritdice + aablatkcrit;
totalDamage = wsdamage;
totalCritDamage = wscritdmg + aablatkcritdmg;
if (aablatkbonusdmg > 0) {
totalDamage += "+" + aablatkbonusdmg;
}
}
output["repeating_activeabilities_" + id + "_aablatkrollaimdice"] = Math.max(baseAimDice + aim + atkotheraim + aimBonus, 0);
output["repeating_activeabilities_" + id + "_aablatkrollcritdice"] = Math.max(baseCritDice + atkothercrit + critBonus, 0);
output["repeating_activeabilities_" + id + "_aablatkrolldamage"] = totalDamage;
output["repeating_activeabilities_" + id + "_aablatkrollcritdamage"] = totalCritDamage;
}
setAttrs(output);
});
});
});
const willAttackInputs = [
"will",
"bonuswill",
"bonuswillcrit",
"enemywill",
"gmwatkwill",
"gmwatkwillcrit",
"gmenemywill",
"willatkwounded",
"willatkcondition",
"willatkisolated",
"willatkpanic"
];
on(sheetOpenAndAttrChanged(willAttackInputs) +
" change:repeating_activeabilities" +
" change:repeating_activeabilities:aablcritdice", function() {
getAttrs(willAttackInputs, function(values) {
let will = parseInt(values.will)||0;
let extraWill = parseInt(values.bonuswill)||0;
let extraCrit = parseInt(values.bonuswillcrit)||0;
let enemywill = parseInt(values.enemywill)||0;
let gmwatkwill = parseInt(values.gmwatkwill)||0;
let gmwatkwillcrit = parseInt(values.gmwatkwillcrit)||0;
let gmenemywill = parseInt(values.gmenemywill)||0;
let willatkwounded = values.willatkwounded;
let willatkcondition = values.willatkcondition;
let willatkisolated = values.willatkisolated;
let willatkpanic = values.willatkpanic;
let willBonus = 0;
let critBonus = 0;
if (willatkwounded == "Yes") {
willBonus += 1;
}
if (willatkcondition == "Yes") {
willBonus += 1;
}
if (willatkisolated == "Yes") {
willBonus += 1;
}
if (willatkpanic == "Ally") {
willBonus += 1;
}
else if (willatkpanic == "Target") {
willBonus += 1;
critBonus += 2;
}
setAttrs({
willattackaimdice: Math.max(will + extraWill + willBonus, 0),
willattackcritdice: Math.max(extraCrit + critBonus, 0),
willattackresistdice: Math.max(enemywill, 0),
gmwatkaimdice: Math.max(gmwatkwill + willBonus, 0),
gmwatkcritdice: Math.max(gmwatkwillcrit + critBonus, 0),
gmwatkresistdice: Math.max(gmenemywill, 0)
});
const repeatAttrs = [
"aablcritdice"
];
getRepeatingAttrs("activeabilities", repeatAttrs, function(ids, simpleValues) {
let output = {};
for (let i = 0; i < ids.length; ++i) {
let id = ids[i];
let aablcritdice = parseInt(simpleValues[id].aablcritdice)||0;
output["repeating_activeabilities_" + id + "_aablwillatkaimdice"] = Math.max(will + extraWill + willBonus, 0);
output["repeating_activeabilities_" + id + "_aablwillatkcritdice"] = Math.max(aablcritdice + extraCrit + critBonus, 0);
output["repeating_activeabilities_" + id + "_aablresist"] = Math.max(enemywill, 0);
}
setAttrs(output);
});
});
});
//skilldice
const skillActionInputs = [
"skilldifficulty",
"skillresponsibility",
"skillassist",
"skillitem",
"bonusskill",
"acquisition",
"arcana",
"engineering",
"entertainment",
"leadership",
"medicine",
"navigation",
"security",
"spirituality",
"sustenance"
];
on(sheetOpenAndAttrChanged(skillActionInputs), function() {
getAttrs(skillActionInputs, function(values) {
let skilldifficulty = values.skilldifficulty;
let skillresponsibility = values.skillresponsibility;
let skillassist = values.skillassist;
let skillitem = values.skillitem;
let bonusskill = parseInt(values.bonusskill)||0;
let responsibility = parseInt(values[skillresponsibility])||0;
let skillBonus = 0;
if (skilldifficulty == "Easy") {
skillBonus += 2;
}
else if (skilldifficulty == "Average") {
skillBonus += 1;
}
if (skillassist == "Yes") {
skillBonus += 1;
}
if (skillitem == "Yes") {
skillBonus += 1;
}
setAttrs({
skilldice: Math.max(responsibility + skillBonus + bonusskill, 0)
});
});
});
function ReloadPrimaryWeapon(decrementSpecialAmmo) {
getAttrs(["wpammp", "wpammo_max", "specialammo"], function(values) {
let wpammo = parseInt(values.wpammo)||0;
let wpammo_max = parseInt(values.wpammo_max)||0;
let specialammo = values.specialammo;
let specialammoreloads = parseInt(values.specialammoreloads)||0;
if (wpammo < wpammo_max) {
setAttrs({
wpammo: wpammo_max
});
}
if (decrementSpecialAmmo && specialammo) {
getRepeatingAttrs("chargetracker", ["chargename", "chargevalue"], function(ids, values) {
ids.forEach(id => {
let chargename = values[id].chargename;
if (chargename == specialammo) {
DecrementAndRemoveZeroValues("chargetracker", "chargevalue", id);
return;
}
});
});
}
});
}
on("clicked:reloadprimary clicked:repeating_activeabilities:reloadprimary", function() {
ReloadPrimaryWeapon(true);
});
on("sheet:opened change:repeating_chargetracker remove:repeating_chargetracker" +
" change:repeating_items remove:repeating_items", function() {
getRepeatingAttrs("items", ["itemname", "itemtype", "itemcharges", "itemeffects"], function(itemIds, itemValues) {
getRepeatingAttrs("chargetracker", ["chargename", "chargevalue"], function(chargeIds, chargeValues) {
let currentSpecialAmmo = "";
let currentReloads = 0;
let currentEffect = "";
let firstSpecialAmmoName = "";
let firstSpecialAmmoEffect = "";
for (var i = 0; i < itemIds.length; ++i) {
let itemId = itemIds[i];
let itemtype = itemValues[itemId].itemtype;
let itemMaxCharges = parseInt(itemValues[itemId].itemcharges)||0;
if (itemtype == "SpecialAmmo" && itemMaxCharges > 0) {
firstSpecialAmmoName = itemValues[itemId].itemname;
firstSpecialAmmoEffect = itemValues[itemId].itemeffects;
}
}
if (firstSpecialAmmoName) {
for (var j = 0; j < chargeIds.length; ++j) {
let chargeId = chargeIds[j];
let chargename = chargeValues[chargeId].chargename;
let chargevalue = parseInt(chargeValues[chargeId].chargevalue)||0;
if (chargename == firstSpecialAmmoName && chargevalue > 0) {
currentSpecialAmmo = firstSpecialAmmoName;
currentReloads = chargevalue;
currentEffect = firstSpecialAmmoName + ": " + firstSpecialAmmoEffect;
}
}
}
setAttrs({
specialammo: currentSpecialAmmo,
specialammoreloads: currentReloads,
specialammoeffect: currentEffect
});
});
});
})
on("clicked:useammo clicked:repeating_activeabilities:useammo", function() {
getAttrs(["wpammo"], function(values) {
let wpammo = parseInt(values.wpammo)||0;
setAttrs({
wpammo: Math.max(wpammo - 1, 0)
});
});
});
on("sheet:opened change:wpammo change:wpammo_max", function(eventInfo) {
getAttrs(["wpammo", "wpammo_max"], function(values) {
let wpammo = parseInt(values.wpammo)||0;
let wpammo_max = parseInt(values.wpammo_max)||0;
setAttrs({
wpneedreload: (wpammo == 0) ? 1 : 0,
wpcanreload: (wpammo < wpammo_max) ? 1 : 0
});
});
});
on("clicked:switchsheettype", function() {
getAttrs(["sheetTypeToggle"], function(values) {
let sheetTypeToggle = values.sheetTypeToggle;
setAttrs({
sheetTypeToggle: sheetTypeToggle == "charactersheet" ? "gmtools" : "charactersheet"
});
});
});
on("sheet:opened change:repeating_activeabilities:aabltype change:wpammo", function(eventInfo) {
getAttrs(["wpammo"], function(values) {
let wpammo = parseInt(values.wpammo)||0;
getRepeatingAttrs("activeabilities", ["aabltype", "aablatkweap"], function(abilityIds, abilityValues) {
let output = {};
for (var i = 0; i < abilityIds.length; ++i) {
let id = abilityIds[i];
let abilityType = abilityValues[id].aabltype;
let abilityAtkWeapon = abilityValues[id].aablatkweap;
//console.log(id + " type:" + abilityType + ", weapon:" + abilityAtkWeapon);
if (abilityType == "Weapon" && abilityAtkWeapon == "Primary") {
output[`repeating_activeabilities_${id}_aablhasammo`] = (wpammo > 0) ? 1 : 0;
output[`repeating_activeabilities_${id}_aablneedreload`] = (wpammo == 0) ? 1 : 0;
}
else {
output[`repeating_activeabilities_${id}_aablhasammo`] = 0;
output[`repeating_activeabilities_${id}_aablneedreload`] = 0;
}
}
setAttrs(output);
});
});
});
const MAX_GM_UNIT_ATKS = 3;
const MAX_GM_UNIT_ABILITIES = 6;
const selectedEnemyAttrs = [
// Base attrs
["_gmunitname", "selectedenemy"],
["_gmunithp", "selectedenemyhp"],
["_gmunitap", "selectedenemyap"],
["_gmunitsp", "selectedenemysp"],
["_gmunitspeed", "selectedenemyspeed"],
["_gmunitaim", "selectedenemyaim"],
["_gmunitwill", "selectedenemywill"],
["_gmunitdodge", "selectedenemydodge"],
["_gmunitnotes", "selectedenemynotes"],
// Attack 0
["_gmunitatk0_id", "selectedenemyatk0_id"],
["_gmunitatkname", "selectedenemyatkname"],
["_gmunitatkaim", "selectedenemyatkaim"],
["_gmunitatkcrit", "selectedenemyatkcrit"],
["_gmunitatkdmg", "selectedenemyatkdmg"],
["_gmunitatkcritdmg", "selectedenemyatkcritdmg"],
["_gmunitatknotes", "selectedenemyatknotes"],
// Attack 1
["_gmunitatk1_id", "selectedenemyatk1_id"],
["_gmunitatk1name", "selectedenemyatk1name"],
["_gmunitatk1aim", "selectedenemyatk1aim"],
["_gmunitatk1crit", "selectedenemyatk1crit"],
["_gmunitatk1dmg", "selectedenemyatk1dmg"],
["_gmunitatk1critdmg", "selectedenemyatk1critdmg"],
["_gmunitatk1notes", "selectedenemyatk1notes"],
// Attack 2
["_gmunitatk2_id", "selectedenemyatk2_id"],
["_gmunitatk2name", "selectedenemyatk2name"],
["_gmunitatk2aim", "selectedenemyatk2aim"],
["_gmunitatk2crit", "selectedenemyatk2crit"],
["_gmunitatk2dmg", "selectedenemyatk2dmg"],
["_gmunitatk2critdmg", "selectedenemyatk2critdmg"],
["_gmunitatk2notes", "selectedenemyatk2notes"],
// Grenade Attack 0
["_gmunitgrenadeatk0_id", "selectedenemygrenadeatk0_id"],
["_gmunitgrenadeatk0name", "selectedenemygrenadeatk0name"],
["_gmunitgrenadeatk0charges", "selectedenemygrenadeatk0charges"],
["_gmunitgrenadeatk0range", "selectedenemygrenadeatk0range"],
["_gmunitgrenadeatk0radius", "selectedenemygrenadeatk0radius"],
["_gmunitgrenadeatk0damage", "selectedenemygrenadeatk0damage"],
["_gmunitgrenadeatk0critdice", "selectedenemygrenadeatk0critdice"],
["_gmunitgrenadeatk0critdmg", "selectedenemygrenadeatk0critdmg"],
["_gmunitgrenadeatk0breaking", "selectedenemygrenadeatk0breaking"],
["_gmunitgrenadeatk0effect", "selectedenemygrenadeatk0effect"],
// Grenade Attack 1
["_gmunitgrenadeatk1_id", "selectedenemygrenadeatk1_id"],
["_gmunitgrenadeatk1name", "selectedenemygrenadeatk1name"],
["_gmunitgrenadeatk1charges", "selectedenemygrenadeatk1charges"],
["_gmunitgrenadeatk1range", "selectedenemygrenadeatk1range"],
["_gmunitgrenadeatk1radius", "selectedenemygrenadeatk1radius"],
["_gmunitgrenadeatk1damage", "selectedenemygrenadeatk1damage"],
["_gmunitgrenadeatk1critdice", "selectedenemygrenadeatk1critdice"],
["_gmunitgrenadeatk1critdmg", "selectedenemygrenadeatk1critdmg"],
["_gmunitgrenadeatk1breaking", "selectedenemygrenadeatk1breaking"],
["_gmunitgrenadeatk1effect", "selectedenemygrenadeatk1effect"],
// Grenade Attack 2
["_gmunitgrenadeatk2_id", "selectedenemygrenadeatk2_id"],
["_gmunitgrenadeatk2name", "selectedenemygrenadeatk2name"],
["_gmunitgrenadeatk2charges", "selectedenemygrenadeatk2charges"],
["_gmunitgrenadeatk2range", "selectedenemygrenadeatk2range"],
["_gmunitgrenadeatk2radius", "selectedenemygrenadeatk2radius"],
["_gmunitgrenadeatk2damage", "selectedenemygrenadeatk2damage"],
["_gmunitgrenadeatk2critdice", "selectedenemygrenadeatk2critdice"],
["_gmunitgrenadeatk2critdmg", "selectedenemygrenadeatk2critdmg"],
["_gmunitgrenadeatk2breaking", "selectedenemygrenadeatk2breaking"],
["_gmunitgrenadeatk2effect", "selectedenemygrenadeatk2effect"],
// Will Attack 0
["_gmunitwillatk0_id", "selectedenemywillatk0_id"],
["_gmunitwillatk0name", "selectedenemywillatk0name"],
["_gmunitwillatk0activation", "selectedenemywillatk0activation"],
["_gmunitwillatk0cooldown", "selectedenemywillatk0cooldown"],
["_gmunitwillatk0charges", "selectedenemywillatk0charges"],
["_gmunitwillatk0critdice", "selectedenemywillatk0critdice"],
["_gmunitwillatk0effect", "selectedenemywillatk0effect"],
// Will Attack 1
["_gmunitwillatk1_id", "selectedenemywillatk1_id"],
["_gmunitwillatk1name", "selectedenemywillatk1name"],
["_gmunitwillatk1activation", "selectedenemywillatk1activation"],
["_gmunitwillatk1cooldown", "selectedenemywillatk1cooldown"],
["_gmunitwillatk1charges", "selectedenemywillatk1charges"],
["_gmunitwillatk1critdice", "selectedenemywillatk1critdice"],
["_gmunitwillatk1effect", "selectedenemywillatk1effect"],
// Will Attack 2
["_gmunitwillatk2_id", "selectedenemywillatk2_id"],
["_gmunitwillatk2name", "selectedenemywillatk2name"],
["_gmunitwillatk2activation", "selectedenemywillatk2activation"],
["_gmunitwillatk2cooldown", "selectedenemywillatk2cooldown"],
["_gmunitwillatk2charges", "selectedenemywillatk2charges"],
["_gmunitwillatk2critdice", "selectedenemywillatk2critdice"],
["_gmunitwillatk2effect", "selectedenemywillatk2effect"],
// Ability 0
["_gmunitabl0_id", "selectedenemyabl0_id"],
["_gmunitabl0name", "selectedenemyabl0name"],
["_gmunitabl0activation", "selectedenemyabl0activation"],
["_gmunitabl0cooldown", "selectedenemyabl0cooldown"],
["_gmunitabl0charges", "selectedenemyabl0charges"],
["_gmunitabl0effect", "selectedenemyabl0effect"],
// Ability 1
["_gmunitabl1_id", "selectedenemyabl1_id"],
["_gmunitabl1name", "selectedenemyabl1name"],
["_gmunitabl1activation", "selectedenemyabl1activation"],
["_gmunitabl1cooldown", "selectedenemyabl1cooldown"],
["_gmunitabl1charges", "selectedenemyabl1charges"],
["_gmunitabl1effect", "selectedenemyabl1effect"],
// Ability 2
["_gmunitabl2_id", "selectedenemyabl2_id"],
["_gmunitabl2name", "selectedenemyabl2name"],
["_gmunitabl2activation", "selectedenemyabl2activation"],
["_gmunitabl2cooldown", "selectedenemyabl2cooldown"],
["_gmunitabl2charges", "selectedenemyabl2charges"],
["_gmunitabl2effect", "selectedenemyabl2effect"],
// Ability 3
["_gmunitabl3_id", "selectedenemyabl3_id"],
["_gmunitabl3name", "selectedenemyabl3name"],
["_gmunitabl3activation", "selectedenemyabl3activation"],
["_gmunitabl3cooldown", "selectedenemyabl3cooldown"],
["_gmunitabl3charges", "selectedenemyabl3charges"],
["_gmunitabl3effect", "selectedenemyabl3effect"],
// Ability 4
["_gmunitabl4_id", "selectedenemyabl4_id"],
["_gmunitabl4name", "selectedenemyabl4name"],
["_gmunitabl4activation", "selectedenemyabl4activation"],
["_gmunitabl4cooldown", "selectedenemyabl4cooldown"],
["_gmunitabl4charges", "selectedenemyabl4charges"],
["_gmunitabl4effect", "selectedenemyabl4effect"],
// Ability 5
["_gmunitabl5_id", "selectedenemyabl5_id"],
["_gmunitabl5name", "selectedenemyabl5name"],
["_gmunitabl5activation", "selectedenemyabl5activation"],
["_gmunitabl5cooldown", "selectedenemyabl5cooldown"],
["_gmunitabl5charges", "selectedenemyabl5charges"],
["_gmunitabl5effect", "selectedenemyabl5effect"],
// Item 0
["_gmunititem0_id", "selectedenemyitem0_id"],
["_gmunititem0name", "selectedenemyitem0name"],
["_gmunititem0charges", "selectedenemyitem0charges"],
["_gmunititem0effect", "selectedenemyitem0effect"],
// Item 1
["_gmunititem1_id", "selectedenemyitem1_id"],
["_gmunititem1name", "selectedenemyitem1name"],
["_gmunititem1charges", "selectedenemyitem1charges"],
["_gmunititem1effect", "selectedenemyitem1effect"],
// Item 2
["_gmunititem2_id", "selectedenemyitem2_id"],
["_gmunititem2name", "selectedenemyitem2name"],
["_gmunititem2charges", "selectedenemyitem2charges"],
["_gmunititem2effect", "selectedenemyitem2effect"]
];
function SelectUnit(unitId, force) {
getAttrs(["selectedenemyid"], function(values) {
let selectedenemyid = values.selectedenemyid;
if (!force && selectedenemyid == unitId) {
return;
}
//console.log("selectedenemyid: " + selectedenemyid);
let attrs = [
["_gmunitwill", "gmwatkwill"],
["_gmunitdodge", "gmdodgedice"]
];
attrGetters = [];
attrs.forEach(attrPair => {
attrPair[0] = "repeating_gmenemyunitlist_" + unitId + attrPair[0];
attrGetters.push(attrPair[0]);
});
selectedEnemyAttrs.forEach(attrPair => {
let completeAttr = "repeating_gmenemyunitlist_" + unitId + attrPair[0];
attrs.push([completeAttr, attrPair[1]]);
attrGetters.push(completeAttr);
});
let output = {
selectedenemyid: unitId,
[`repeating_gmenemyunitlist_${unitId}_selected`]: 1
};
if (selectedenemyid && selectedenemyid != unitId) {
output[`repeating_gmenemyunitlist_${selectedenemyid}_selected`] = 0;
}
getAttrs(attrGetters, function(values) {
attrs.forEach(attrPair => {
output[attrPair[1]] = values[attrPair[0]]||"";
});
setAttrs(output);
});
});
}
on("clicked:repeating_gmenemyunitlist:selectunit", function(eventInfo) {
let unitId = eventInfo.sourceAttribute.replace("repeating_gmenemyunitlist_", "").replace("_selectunit", "");
SelectUnit(unitId);
});
// Edit underlying unit of selected unit
selectedEnemyAttrs.forEach(attrPair => {
var listAttr = attrPair[0];
var selectAttr = attrPair[1];
on(`change:${selectAttr}`, function(eventInfo) {
getAttrs(["selectedenemyid"], function(values) {
var selectedenemyid = values.selectedenemyid;
if (selectedenemyid) {
let fullListAttr = `repeating_gmenemyunitlist_${selectedenemyid}${listAttr}`;
setAttrs({
[fullListAttr]: eventInfo.newValue
});
}
else {
console.warn("'selectedenemyid' is null or empty. Reselect the unit before editing.");
}
});
});
});
function ClearSelectedUnit() {
setAttrs({
selectedenemyid: ""
});
}
function RemoveSelectedUnitAttack(index) {
if (index < 0 || index >= MAX_GM_UNIT_ATKS) {
return;
}
var indexValue = index == 0 ? "" : index;
setAttrs({
[`selectedenemyatk${index}_id`]: "",
[`selectedenemyatk${indexValue}name`]: "",
[`selectedenemyatk${indexValue}aim`]: 0,
[`selectedenemyatk${indexValue}crit`]: 0,
[`selectedenemyatk${indexValue}dmg`]: "0",
[`selectedenemyatk${indexValue}critdmg`]: 0,
[`selectedenemyatk${indexValue}notes`]: ""
});
}
function AddSelectedUnitAttack(index) {
if (index < 0 || index >= MAX_GM_UNIT_ATKS) {
return;
}
var indexValue = index == 0 ? "" : index;
setAttrs({
[`selectedenemyatk${index}_id`]: "active",
[`selectedenemyatk${indexValue}name`]: "",
[`selectedenemyatk${indexValue}aim`]: 0,
[`selectedenemyatk${indexValue}crit`]: 0,
[`selectedenemyatk${indexValue}dmg`]: "0",
[`selectedenemyatk${indexValue}critdmg`]: 0,
[`selectedenemyatk${indexValue}notes`]: ""
});
}
function RemoveSelectedUnitGrenadeAttack(index) {
if (index < 0 || index >= MAX_GM_UNIT_ATKS) {
return;
}
setAttrs({
[`selectedenemygrenadeatk${index}_id`]: "",
[`selectedenemygrenadeatk${index}name`]: "",
[`selectedenemygrenadeatk${index}charges`]: 0,
[`selectedenemygrenadeatk${index}range`]: "Short",
[`selectedenemygrenadeatk${index}radius`]: "0.0",
[`selectedenemygrenadeatk${index}damage`]: "0",
[`selectedenemygrenadeatk${index}critdice`]: 0,
[`selectedenemygrenadeatk${index}critdmg`]: 0,
[`selectedenemygrenadeatk${index}breaking`]: 0,
[`selectedenemygrenadeatk${index}effect`]: ""
});
}
function AddSelectedUnitGrenadeAttack(index) {
if (index < 0 || index >= MAX_GM_UNIT_ATKS) {
return;
}
setAttrs({
[`selectedenemygrenadeatk${index}_id`]: "active",
[`selectedenemygrenadeatk${index}name`]: "",
[`selectedenemygrenadeatk${index}charges`]: 0,
[`selectedenemygrenadeatk${index}range`]: "Short",
[`selectedenemygrenadeatk${index}radius`]: "0.0",
[`selectedenemygrenadeatk${index}damage`]: "0",
[`selectedenemygrenadeatk${index}critdice`]: 0,
[`selectedenemygrenadeatk${index}critdmg`]: 0,
[`selectedenemygrenadeatk${index}breaking`]: 0,
[`selectedenemygrenadeatk${index}effect`]: ""
});
}
function RemoveSelectedUnitAbility(index, baseAttrName, maxEntries) {
if (index < 0 || index >= maxEntries) {
return;
}
setAttrs({
[`${baseAttrName}${index}_id`]: "",
[`${baseAttrName}${index}name`]: "",
[`${baseAttrName}${index}activation`]: "Passive",
[`${baseAttrName}${index}cooldown`]: 0,
[`${baseAttrName}${index}charges`]: 0,
[`${baseAttrName}${index}critdice`]: 0,
[`${baseAttrName}${index}effect`]: ""
});
}
function AddSelectedUnitAbility(index, baseAttrName, maxEntries) {
if (index < 0 || index >= maxEntries) {
return;
}
setAttrs({
[`${baseAttrName}${index}_id`]: "active",
[`${baseAttrName}${index}name`]: "",
[`${baseAttrName}${index}activation`]: "Passive",
[`${baseAttrName}${index}cooldown`]: 0,
[`${baseAttrName}${index}charges`]: 0,
[`${baseAttrName}${index}critdice`]: 0,
[`${baseAttrName}${index}effect`]: ""
});
}
on("clicked:clearselectedunit", function() {
ClearSelectedUnit();
});
on("clicked:refreshselectedunit", function() {
getAttrs(["selectedenemyid"], function(values) {
let unitId = values.selectedenemyid;
SelectUnit(unitId, true);
});
});
on("remove:repeating_gmenemyunitlist", function(eventInfo) {
getAttrs(["selectedenemyid"], function(values) {
let unitId = values.selectedenemyid;
if (eventInfo.sourceAttribute.includes(unitId)) {
ClearSelectedUnit();
}
});
});
on("clicked:addgmunit", function() {
var newRowId = generateRowID();
var newAttrs = {};
newAttrs[`repeating_gmenemyunitlist_${newRowId}_selectedenemy`] = "New Unit";
setAttrs(newAttrs, null, function() {
SelectUnit(newRowId);
});
});
const ENEMY_ATTACK_ATTR = [
"selectedenemyatk0_id",
"selectedenemyatk1_id",
"selectedenemyatk2_id"
];
const ENEMY_GRENADE_ATTACK_ATTR = [
"selectedenemygrenadeatk0_id",
"selectedenemygrenadeatk1_id",
"selectedenemygrenadeatk2_id"
];
const ENEMY_WILL_ATK_ATTR = [
"selectedenemywillatk0_id",
"selectedenemywillatk1_id",
"selectedenemywillatk2_id"
];
const ENEMY_ABILITY_ATTR = [
"selectedenemyabl0_id",
"selectedenemyabl1_id",
"selectedenemyabl2_id",
"selectedenemyabl3_id",
"selectedenemyabl4_id",
"selectedenemyabl5_id"
];
const ENEMY_ITEM_ATTR = [
"selectedenemyitem0_id",
"selectedenemyitem1_id",
"selectedenemyitem2_id"
];
on("clicked:addgmunitatk", function() {
getAttrs(ENEMY_ATTACK_ATTR, function(values) {
let highestAttackIndex = -1;
for(let i = 0; i < MAX_GM_UNIT_ATKS; ++i) {
var attrName = ENEMY_ATTACK_ATTR[i];
var attrValue = values[attrName]||"";
if (attrValue != "") {
highestAttackIndex = i;
}
}
if (highestAttackIndex == (MAX_GM_UNIT_ATKS - 1)) {
return;
}
let nextAttackIndex = highestAttackIndex + 1;
AddSelectedUnitAttack(nextAttackIndex);
});
});
on("clicked:removegmunitatk", function() {
getAttrs(ENEMY_ATTACK_ATTR, function(values) {
let highestAttackIndex = -1;
for(let i = 0; i < MAX_GM_UNIT_ATKS; ++i) {
var attrName = ENEMY_ATTACK_ATTR[i];
var attrValue = values[attrName]||"";
if (attrValue != "") {
highestAttackIndex = i;
}
}
if (highestAttackIndex == -1) {
return;
}
RemoveSelectedUnitAttack(highestAttackIndex);
});
});
on("clicked:addgmunitgrenadeatk", function() {
getAttrs(ENEMY_GRENADE_ATTACK_ATTR, function(values) {
let highestAttackIndex = -1;
for(let i = 0; i < MAX_GM_UNIT_ATKS; ++i) {
var attrName = ENEMY_GRENADE_ATTACK_ATTR[i];
var attrValue = values[attrName]||"";
if (attrValue != "") {
highestAttackIndex = i;
}
}
if (highestAttackIndex == (MAX_GM_UNIT_ATKS - 1)) {
return;
}
let nextAttackIndex = highestAttackIndex + 1;
AddSelectedUnitGrenadeAttack(nextAttackIndex);
});
});
on("clicked:removegmunitgrenadeatk", function() {
getAttrs(ENEMY_GRENADE_ATTACK_ATTR, function(values) {
let highestAttackIndex = -1;
for(let i = 0; i < MAX_GM_UNIT_ATKS; ++i) {
var attrName = ENEMY_GRENADE_ATTACK_ATTR[i];
var attrValue = values[attrName]||"";
if (attrValue != "") {
highestAttackIndex = i;
}
}
if (highestAttackIndex == -1) {
return;
}
RemoveSelectedUnitGrenadeAttack(highestAttackIndex);
});
});
on("clicked:addgmunitwillatk", function() {
getAttrs(ENEMY_WILL_ATK_ATTR, function(values) {
let highestAbilityIndex = -1;
for(let i = 0; i < MAX_GM_UNIT_ATKS; ++i) {
var attrName = ENEMY_WILL_ATK_ATTR[i];
var attrValue = values[attrName]||"";
if (attrValue != "") {
highestAbilityIndex = i;
}
}
if (highestAbilityIndex == (MAX_GM_UNIT_ATKS - 1)) {
return;
}
let nextAbilityIndex = highestAbilityIndex + 1;
//console.log("AddSelectedUnitAbility:" + nextAbilityIndex);
AddSelectedUnitAbility(nextAbilityIndex, "selectedenemywillatk", MAX_GM_UNIT_ATKS);
});
});
on("clicked:removegmunitwillatk", function() {
getAttrs(ENEMY_WILL_ATK_ATTR, function(values) {
let highestAbilityIndex = -1;
for(let i = 0; i < MAX_GM_UNIT_ATKS; ++i) {
var attrName = ENEMY_WILL_ATK_ATTR[i];
var attrValue = values[attrName]||"";
if (attrValue != "") {
highestAbilityIndex = i;
}
}
if (highestAbilityIndex == -1) {
return;
}
//console.log("RemoveSelectedUnitAbility:" + highestAbilityIndex);
RemoveSelectedUnitAbility(highestAbilityIndex, "selectedenemywillatk", MAX_GM_UNIT_ATKS);
});
});
on("clicked:addgmunitabl", function() {
getAttrs(ENEMY_ABILITY_ATTR, function(values) {
let highestAbilityIndex = -1;
for(let i = 0; i < MAX_GM_UNIT_ABILITIES; ++i) {
var attrName = ENEMY_ABILITY_ATTR[i];
var attrValue = values[attrName]||"";
if (attrValue != "") {
highestAbilityIndex = i;
}
}
if (highestAbilityIndex == (MAX_GM_UNIT_ABILITIES - 1)) {
return;
}
let nextAbilityIndex = highestAbilityIndex + 1;
//console.log("AddSelectedUnitAbility:" + nextAbilityIndex);
AddSelectedUnitAbility(nextAbilityIndex, "selectedenemyabl", MAX_GM_UNIT_ABILITIES);
});
});
on("clicked:removegmunitabl", function() {
getAttrs(ENEMY_ABILITY_ATTR, function(values) {
let highestAbilityIndex = -1;
for(let i = 0; i < MAX_GM_UNIT_ABILITIES; ++i) {
var attrName = ENEMY_ABILITY_ATTR[i];
var attrValue = values[attrName]||"";
if (attrValue != "") {
highestAbilityIndex = i;
}
}
if (highestAbilityIndex == -1) {
return;
}
//console.log("RemoveSelectedUnitAbility:" + highestAbilityIndex);
RemoveSelectedUnitAbility(highestAbilityIndex, "selectedenemyabl", MAX_GM_UNIT_ABILITIES);
});
});
on("clicked:addgmunititem", function() {
getAttrs(ENEMY_ITEM_ATTR, function(values) {
let highestAbilityIndex = -1;
for(let i = 0; i < MAX_GM_UNIT_ATKS; ++i) {
var attrName = ENEMY_ITEM_ATTR[i];
var attrValue = values[attrName]||"";
if (attrValue != "") {
highestAbilityIndex = i;
}
}
if (highestAbilityIndex == (MAX_GM_UNIT_ATKS - 1)) {
return;
}
let nextAbilityIndex = highestAbilityIndex + 1;
//console.log("AddSelectedUnitAbility:" + nextAbilityIndex);
AddSelectedUnitAbility(nextAbilityIndex, "selectedenemyitem", MAX_GM_UNIT_ATKS);
});
});
on("clicked:removegmunititem", function() {
getAttrs(ENEMY_ITEM_ATTR, function(values) {
let highestAbilityIndex = -1;
for(let i = 0; i < MAX_GM_UNIT_ATKS; ++i) {
var attrName = ENEMY_ITEM_ATTR[i];
var attrValue = values[attrName]||"";
if (attrValue != "") {
highestAbilityIndex = i;
}
}
if (highestAbilityIndex == -1) {
return;
}
//console.log("RemoveSelectedUnitAbility:" + highestAbilityIndex);
RemoveSelectedUnitAbility(highestAbilityIndex, "selectedenemyitem", MAX_GM_UNIT_ATKS);
});
});
on("clicked:repeating_activeabilities:setcooldown", function(eventInfo) {
let unitId = eventInfo.sourceAttribute.replace("repeating_activeabilities_", "").replace("_setcooldown", "");
let abilityNameAttr = `repeating_activeabilities_${unitId}_aablname`;
let abilityCooldownAttr = `repeating_activeabilities_${unitId}_aablcooldown`;
getAttrs([abilityNameAttr, abilityCooldownAttr], function (values) {
let abilityName = values[abilityNameAttr];
let abilityCooldown = parseInt(values[abilityCooldownAttr])||0;
if (abilityCooldown > 0) {
getRepeatingAttrs("cooldowntracker", ["cooldownname"], function(ids, simpleValues) {
let existingId = null;
for (let i = 0; i < ids.length; ++i) {
let id = ids[i];
let itemName = simpleValues[id].cooldownname;
if (itemName == abilityName) {
existingId = id;
break;
}
}
if (!existingId) {
let newCooldownId = generateRowID();
setAttrs({
[`repeating_cooldowntracker_${newCooldownId}_cooldownname`]: abilityName,
[`repeating_cooldowntracker_${newCooldownId}_cooldownvalue`]: abilityCooldown
});
}
else {
setAttrs({
[`repeating_cooldowntracker_${existingId}_cooldownvalue`]: abilityCooldown
});
}
});
}
});
});
on("clicked:repeating_activeabilities:usecharge", function(eventInfo) {
let unitId = eventInfo.sourceAttribute.replace("repeating_activeabilities_", "").replace("_usecharge", "");
let abilityNameAttr = `repeating_activeabilities_${unitId}_aablname`;
let abilityChargesAttr = `repeating_activeabilities_${unitId}_aablcharges`;
getAttrs([abilityNameAttr, abilityChargesAttr], function (values) {
let abilityName = values[abilityNameAttr];
let abilityCharges = parseInt(values[abilityChargesAttr])||0;
if (abilityCharges > 0) {
getRepeatingAttrs("chargetracker", ["chargename", "chargevalue"], function(ids, simpleValues) {
let existingId = null;
for (let i = 0; i < ids.length; ++i) {
let id = ids[i];
let chargeName = simpleValues[id].chargename;
if (chargeName == abilityName) {
existingId = id;
break;
}
}
if (!existingId) {
let newChargesId = generateRowID();
setAttrs({
[`repeating_chargetracker_${newChargesId}_chargename`]: abilityName,
[`repeating_chargetracker_${newChargesId}_chargevalue`]: (abilityCharges - 1)
});
}
else {
let currentCharges = simpleValues[existingId].chargevalue;
setAttrs({
[`repeating_chargetracker_${existingId}_chargevalue`]: Math.max(currentCharges - 1, 0)
});
}
});
}
});
});
on("clicked:repeating_items:usecharge", function(eventInfo) {
let unitId = eventInfo.sourceAttribute.replace("repeating_items_", "").replace("_usecharge", "");
let itemNameAttr = `repeating_items_${unitId}_itemname`;
let itemChargesAttr = `repeating_items_${unitId}_itemcharges`;
getAttrs([itemNameAttr, itemChargesAttr], function (values) {
let itemName = values[itemNameAttr];
let itemCharges = parseInt(values[itemChargesAttr])||0;
if (itemCharges > 0) {
getRepeatingAttrs("chargetracker", ["chargename", "chargevalue"], function(ids, simpleValues) {
let existingId = null;
for (let i = 0; i < ids.length; ++i) {
let id = ids[i];
let chargeName = simpleValues[id].chargename;
if (chargeName == itemName) {
existingId = id;
break;
}
}
if (!existingId) {
let newChargesId = generateRowID();
setAttrs({
[`repeating_chargetracker_${newChargesId}_chargename`]: itemName,
[`repeating_chargetracker_${newChargesId}_chargevalue`]: (itemCharges - 1)
});
}
else {
let currentCharges = simpleValues[existingId].chargevalue;
setAttrs({
[`repeating_chargetracker_${existingId}_chargevalue`]: Math.max(currentCharges - 1, 0)
});
}
});
}
});
});
// Update charges
on("sheet:opened change:repeating_chargetracker remove:repeating_chargetracker", function(eventInfo) {
getRepeatingAttrs("chargetracker", ["chargename", "chargevalue"], function(chargeIds, chargeValues) {
getRepeatingAttrs("activeabilities", ["aablname", "aablcharges"], function(abilityIds, abilityValues) {
let output = {};
for (var abilityIndex = 0; abilityIndex < abilityIds.length; ++abilityIndex) {
let abilityId = abilityIds[abilityIndex];
let abilityName = abilityValues[abilityId].aablname;
let abilityMaxCharges = abilityValues[abilityId].aablcharges;
let abilityNoChargesAttr = `repeating_activeabilities_${abilityId}_aablnocharges`;
let abilityChargesLeftAttr = `repeating_activeabilities_${abilityId}_aablchargesleft`;
if (abilityMaxCharges == 0)
{
output[abilityNoChargesAttr] = 0;
output[abilityChargesLeftAttr] = 0;
}
else {
let exists = false;
for (let chargeTrackerIndex = 0; chargeTrackerIndex < chargeIds.length; ++chargeTrackerIndex) {
let chargeTrackerId = chargeIds[chargeTrackerIndex];
let chargeTrackerName = chargeValues[chargeTrackerId].chargename;
let chargeTrackerValue = chargeValues[chargeTrackerId].chargevalue;
if (abilityName == chargeTrackerName) {
output[abilityChargesLeftAttr] = chargeTrackerValue;
output[abilityNoChargesAttr] = (chargeTrackerValue == 0) ? 1 : 0;
exists = true;
break;
}
}
if (!exists) {
output[abilityNoChargesAttr] = 0;
output[abilityChargesLeftAttr] = abilityMaxCharges;
}
}
}
setAttrs(output);
});
getRepeatingAttrs("items", ["itemname", "itemcharges"], function(itemIds, itemValues) {
let output = {};
for (var itemIndex = 0; itemIndex < itemIds.length; ++itemIndex) {
let itemId = itemIds[itemIndex];
let itemName = itemValues[itemId].itemname;
let itemMaxCharges = itemValues[itemId].itemcharges;
let itemNoChargesAttr = `repeating_items_${itemId}_itemnocharges`;
let itemChargesLeftAttr = `repeating_items_${itemId}_itemchargesleft`;
if (itemMaxCharges == 0)
{
output[itemNoChargesAttr] = 0;
output[itemChargesLeftAttr] = 0;
}
else {
let exists = false;
for (let chargeTrackerIndex = 0; chargeTrackerIndex < chargeIds.length; ++chargeTrackerIndex) {
let chargeTrackerId = chargeIds[chargeTrackerIndex];
let chargeTrackerName = chargeValues[chargeTrackerId].chargename;
let chargeTrackerValue = chargeValues[chargeTrackerId].chargevalue;
if (itemName == chargeTrackerName) {
output[itemChargesLeftAttr] = chargeTrackerValue;
output[itemNoChargesAttr] = (chargeTrackerValue == 0) ? 1 : 0;
exists = true;
break;
}
}
if (!exists) {
output[itemNoChargesAttr] = 0;
output[itemChargesLeftAttr] = itemMaxCharges;
}
}
}
setAttrs(output);
});
});
});
// Update cooldowns
on("sheet:opened change:repeating_cooldowntracker remove:repeating_cooldowntracker", function(eventInfo) {
getRepeatingAttrs("cooldowntracker", ["cooldownname", "cooldownvalue"], function(cooldownIds, cooldownValues) {
getRepeatingAttrs("activeabilities", ["aablname", "aablcooldown"], function(abilityIds, abilityValues) {
let output = {};
for (var abilityIndex = 0; abilityIndex < abilityIds.length; ++abilityIndex) {
let abilityId = abilityIds[abilityIndex];
let abilityName = abilityValues[abilityId].aablname;
let abilityCooldown = abilityValues[abilityId].aablcooldown;
let abilityOnCooldownAttr = `repeating_activeabilities_${abilityId}_aabloncooldown`;
let abilityCooldownLeftAttr = `repeating_activeabilities_${abilityId}_aablcooldownleft`;
if (abilityCooldown == 0)
{
output[abilityOnCooldownAttr] = 0;
output[abilityCooldownLeftAttr] = 0;
}
else {
let exists = false;
for (let cooldownIndex = 0; cooldownIndex < cooldownIds.length; ++cooldownIndex) {
let cooldownId = cooldownIds[cooldownIndex];
let cooldownName = cooldownValues[cooldownId].cooldownname;
let cooldownValue = parseInt(cooldownValues[cooldownId].cooldownvalue)||0;
if (abilityName == cooldownName) {
output[abilityCooldownLeftAttr] = cooldownValue;
output[abilityOnCooldownAttr] = (cooldownValue > 0) ? 1 : 0;
exists = true;
break;
}
}
if (!exists) {
output[abilityOnCooldownAttr] = 0;
output[abilityCooldownLeftAttr] = abilityCooldown;
}
}
}
setAttrs(output);
});
});
});
on("clicked:conceal", function() {
setAttrs({
concealed: 1
});
});
on("clicked:reveal", function() {
setAttrs({
concealed: 0
});
});
function ClearRepeatingSection(repeating) {
getSectionIDs(repeating, function(ids) {
for (let i = 0; i < ids.length; ++i) {
removeRepeatingRow(`repeating_${repeating}_${ids[i]}`);
}
});
}
function AddChargesToChargeTracker(repeating, nameAttr, chargesAttr) {
getRepeatingAttrs(repeating, [nameAttr, chargesAttr], function(repeatingIds, repeatingValues) {
repeatingIds.forEach(repeatingId => {
let id = generateRowID();
let name = repeatingValues[repeatingId][nameAttr];
let charges = parseInt(repeatingValues[repeatingId][chargesAttr])||0;
if (charges > 0) {
setAttrs({
[`repeating_chargetracker_${id}_chargename`]: name,
[`repeating_chargetracker_${id}_chargevalue`]: charges
});
}
});
});
}
on("clicked:initcombat", function() {
ClearRepeatingSection("conditiontracker");
ClearRepeatingSection("cooldowntracker");
ClearRepeatingSection("chargetracker");
ReloadPrimaryWeapon(false);
let currentHp = parseInt(values.hp_max)||0;
let maxAp = parseInt(values.ap)||0;
let maxSp = parseInt(values.sp)||0;
// Setup max AP
getAttrs(["hp_max", "ap", "sp"], function(values) {
setAttrs({
hp: currentHp,
ap_max: maxAp == 0 ? "" : maxAp,
sp_max: maxSp == 0 ? "" : maxSp
});
});
// Add all charges
AddChargesToChargeTracker("activeabilities", "aablname", "aablcharges");
AddChargesToChargeTracker("items", "itemname", "itemcharges");
});
function DecrementAndRemoveZeroValues(repeating, valueAttr, specificId) {
getRepeatingAttrs(repeating, [valueAttr], function(ids, values) {
let output = {};
let remove = [];
for (var i = 0; i < ids.length; ++i) {
let id = ids[i];
if (specificId && id != specificId) {
continue;
}
let value = parseInt(values[id][valueAttr]);
if (!isNaN(value)) {
let newValue = Math.max(value - 1, 0);
output[`repeating_${repeating}_${id}_${valueAttr}`] = newValue;
if (newValue == 0) {
remove.push(`repeating_${repeating}_${id}`);
}
}
}
setAttrs(output, null, function() {
remove.forEach(attr => {
removeRepeatingRow(attr);
});
});
});
}
on("clicked:roundstart", function() {
DecrementAndRemoveZeroValues("cooldowntracker", "cooldownvalue");
DecrementAndRemoveZeroValues("conditiontracker", "conditionvalue");
});
on("clicked:declinecharactermancer", function() {
setAttrs({
newchar: 0,
confirmstartcharmancer: 0
});
});
on("clicked:startcharactermancer", function() {
setAttrs({
newchar: 0,
confirmstartcharmancer: 0
});
startCharactermancer("intro")
});
on("clicked:startcharactermancerfromsheet", function() {
setAttrs({
confirmstartcharmancer: 1
});
});
on("mancerfinish:x", function(eventInfo) {
let data = eventInfo.data;
//console.log(data);
let output = {};
let xclass = data.classx.values.classx || "";
output.class = CapitalizeFirstLetter(xclass);
let recruit = xclass == "recruit";
let seeker = xclass == "seeker";
let novice = xclass == "novice";
let species = data.origin.values.species || "";
output.char_origin = CapitalizeFirstLetter(species) +
(species == "jaan" ? (" (" + CapitalizeFirstLetter(data.origin.values.jaansub || "") + ")") :
(species == "dyn" ? ("-" + data.origin.values.dynsub || "") : "") );
if (data.origin.values.origin) {
output.char_origin += ", " + data.origin.values.origin;
}
output.char_pronouns = data.namex.values.pronouns || "";
output.char_name = data.namex.values.name || "";
// Base Attributes
output.level = 1;
output.xp = 0;
output.toughness = recruit ? 2 : 1;
output.agility = 1;
output.accuracy = 1;
output.discipline = recruit ? 1 : 2;
output.hp = recruit ? 6 : 5;
output.ap = 0;
output.sp = 0;
output.focus = 0;
// Proficiencies
if (recruit) {
output.proficiencies = "Autorifles, Sidearms, Medium Armor"
}
else if (seeker) {
output.proficiencies = "Autorifles, Sidearms, Spiritual Resonators, Medium Armor, Daeva Summoning"
}
else if (novice) {
output.proficiencies = "Autorifles, Sidearms, Arcane Focuses, Medium Armor, Fire Magic"
}
// Equipment
let wpname = data.equipment.values.wp || "";
if (wpname == "autorifle") {
output.wpname = "Autorifle";
output.wptype = "Weapon";
output.wprange = "Medium";
output.wpaimdice = 0;
output.wpcritdice = 0;
output.wpdamage = "d3+2";
output.wpcritdmg = 2;
output.wpammo = 4;
output.wpammo_max = 4;
output.wpnotes = "";
output.wp_modslots = 1;
output.wpmods = "";
}
else if (wpname == "lightcarbine") {
output.wpname = "Light Carbine";
output.wptype = "Weapon";
output.wprange = "Medium"
output.wpaimdice = 0;
output.wpcritdice = 0;
output.wpdamage = "d2+2";
output.wpcritdmg = 2;
output.wpammo = 4;
output.wpammo_max = 4;
output.wpnotes = "Lightweight: +2 Speed";
output.wp_modslots = 1;
output.wpmods = "";
output.speedother = 2;
}
else if (seeker && wpname == "idiophone") {
output.wpname = "Idiophone";
output.wptype = "Special Equipment";
output.wpnotes = "Improved Resonator 1 (+1 Will when making Will Attacks)";
output.wp_modslots = 1;
output.wpmods = "";
}
else if (novice && wpname == "spellfocus") {
output.wpname = "Spell Focus";
output.wptype = "Special Equipment";
output.wpnotes = "Channel Energy 1 (Once per mission, reduce a magic abilitys cooldown by 1)";
output.wp_modslots = 1;
output.wpmods = "";
}
let wsname = data.equipment.values.ws || "";
if (wsname == "combatknife") {
output.wsname = "Combat Knife";
output.wsrange = "Adjacent"
output.wsaimdice = 2;
output.wscritdice = 0;
output.wsdamage = "d3";
output.wscritdmg = 1;
output.wsnotes = "";
output.ws_modslots = 0;
output.wsmods = "";
}
else if (wsname == "pistol") {
output.wsname = "Pistol";
output.wsrange = "Short"
output.wsaimdice = 1;
output.wscritdice = 0;
output.wsdamage = "2";
output.wscritdmg = 1;
output.wsnotes = "";
output.ws_modslots = 1;
output.wsmods = "";
}
else if (wsname == "heavypistol") {
output.wsname = "Heavy Pistol";
output.wsrange = "Short"
output.wsaimdice = 0;
output.wscritdice = 0;
output.wsdamage = "3";
output.wscritdmg = 1;
output.wsnotes = "";
output.ws_modslots = 1;
output.wsmods = "";
}
ClearRepeatingSection("items");
if (recruit) {
let item = data.equipment.values.item || "";
if (item == "fraggrenade") {
let newRowAttr = `repeating_items_${generateRowID()}_item`;
output[newRowAttr + "name"] = "Frag Grenade";
output[newRowAttr + "type"] = "Grenade";
output[newRowAttr + "effects"] = "Destroy Cover";
output[newRowAttr + "charges"] = 1;
output[newRowAttr + "range"] = "Short";
output[newRowAttr + "radius"] = 1.5;
output[newRowAttr + "damage"] = "d2+2";
output[newRowAttr + "critdice"] = 0;
output[newRowAttr + "critdmg"] = 0;
output[newRowAttr + "breaking"] = 1;
}
else if (item == "medkit") {
let newRowAttr = `repeating_items_${generateRowID()}_item`;
output[newRowAttr + "name"] = "Medkit";
output[newRowAttr + "type"] = "Utility";
output[newRowAttr + "usage"] = "Usable";
output[newRowAttr + "effects"] = "Target self or adjacent allied unit. Heal target unit for 4 HP.";
output[newRowAttr + "charges"] = 1;
}
}
output.baname = "Ballistic Vest";
output.bahp = 2;
output.ba_modslots = 1;
output.ba_utilitypockets = 1;
// Abilities
ClearRepeatingSection("activeabilities");
if (seeker) {
let newRowAttr = `repeating_activeabilities_${generateRowID()}_aabl`;
output[newRowAttr + "name"] = "Terrorize";
output[newRowAttr + "activation"] = "Action";
output[newRowAttr + "range"] = "Medium";
output[newRowAttr + "cooldown"] = 2;
output[newRowAttr + "charges"] = 2;
output[newRowAttr + "effect"] = "Target a Living unit in range and in line of sight and make a Will Attack against it. On Success: target unit gains Panic. On Resist: target unit gains Disoriented.";
output[newRowAttr + "type"] = "Will";
output[newRowAttr + "critdice"] = 0;
}
else if (novice) {
let newRowAttr = `repeating_activeabilities_${generateRowID()}_aabl`;
output[newRowAttr + "name"] = "Ignite";
output[newRowAttr + "activation"] = "Action + Ends Turn";
output[newRowAttr + "range"] = "Short";
output[newRowAttr + "cooldown"] = 3;
output[newRowAttr + "charges"] = 2;
output[newRowAttr + "effect"] = "Target unit in range and in line of sight gains Burning.";
output[newRowAttr + "type"] = "Standard";
}
// Inventory
output.inventory = data.inventory.values.inventory || "";
output.money = parseInt(data.inventory.values.startingmoney) || 0;
// Responsibilities
output.acquisition = parseInt(data.responsibilities.values.acquisition) || 0;
output.arcana = parseInt(data.responsibilities.values.arcana) || 0;
output.engineering = parseInt(data.responsibilities.values.engineering) || 0;
output.entertainment = parseInt(data.responsibilities.values.entertainment) || 0;
output.leadership = parseInt(data.responsibilities.values.leadership) || 0;
output.medicine = parseInt(data.responsibilities.values.medicine) || 0;
output.navigation = parseInt(data.responsibilities.values.navigation) || 0;
output.security = parseInt(data.responsibilities.values.security) || 0;
output.spirituality = parseInt(data.responsibilities.values.spirituality) || 0;
output.sustenance = parseInt(data.responsibilities.values.sustenance) || 0;
// Languages
output.fluentlanguages = data.languages.values.fluentlanguages || "";
output.conversationallanguages = data.languages.values.conversationallanguages || "";
setAttrs(output, function() {
finishCharactermancer();
deleteCharmancerData();
});
});
on("mancer:cancel", function(eventInfo) {
deleteCharmancerData();
});
function RollOnTable(dieResult, table) {
dieResult = Math.max(dieResult - 1, 0);
if (!table || !Array.isArray(table) || table.length == 0) {
return "";
}
return table[dieResult % table.length];
}
const classesTable = ["recruit", "novice", "seeker"];
on("mancerroll:class", function(eventInfo) {
setAttrs({
class: RollOnTable(eventInfo.roll[0].result, classesTable)
});
});
const speciesTable = ["insaan", "hinn", "athenki", "rhuthari", "dyn", "jaan"];
const dynsubTable = ["errad", "essat"];
const jaansubTable = ["aquatic", "arboreal"];
on("mancerroll:species", function(eventInfo) {
setAttrs({
species: RollOnTable(eventInfo.roll[0].result, speciesTable),
dynsub: RollOnTable(eventInfo.roll[1].result, dynsubTable),
jaansub: RollOnTable(eventInfo.roll[1].result, jaansubTable)
});
});
const pronounsTable = ["they/them", "she/her", "he/him"];
on("mancerroll:pronouns", function(eventInfo) {
setAttrs({
pronouns: RollOnTable(eventInfo.roll[0].result, pronounsTable)
});
});
const insaanFamilyNames = [
"Baker", "Smith", "Higge", "Holstead", "Sunkett", "Al-Kwarismi",
"Akosh", "Nyongo", "Gurira", "Takashi", "Petrunich", "Hernandez",
"Trewella", "Shao", "Amedda", "Pin", "Vanater", "Zulu",
"Duarte", "Lynch", "Stout", "Stark", "Bishop", "Sheppard",
"Acosta", "Melendez", "Amarst", "Schwartz", "Odom", "Clements",
"Gregory", "Wong", "Leon", "Good", "Mccoy", "Alvarez",
"Reynolds", "Lewis", "Pearson", "Montgomery", "Byers", "Cannon",
"Samie", "Saqqat", "Nedali", "Hasimi", "Rhozali", "Tobji",
"Zhou", "Wei", "Bo", "Yi", "Jianhong", "Wuying",
"Brahmani", "Isfahani", "Khushk", "Sistani", "Abidi", "Hesbani",
"Kamyar", "Malya", "Pochee", "Khushrokhan", "Fozdar", "Sumondi",
"Maalin", "Xaaf", "Yalaxow", "Shankaron", "Guxaad", "Nageeye"
];
const insaanMascGivenNames = [
"Jonathan", "Jordan", "Marcus", "Noah", "Atandwa", "Tyler",
"Nozumo", "Evan", "Farid", "Brian", "Yousef", "Daxton",
"Moshe", "Farid", "Will", "Youssef", "Travis", "Hamdan",
"Calvin", "Thamir", "Aadil", "Muaz", "Emmett", "Adil",
"Abdiel", "Quan", "Rhett", "Zhuan", "Kieran", "Xie",
"Abraham", "Duan", "Todd", "Lie", "Ramzi", "Sun",
"Camron", "Raza", "Savion", "Aqiq", "Billy", "Tabiq",
"Jasiah", "Matee", "Micah", "Rakhshan", "Uthmaa", "Qarib",
"Maurice", "Arshan", "Dax", "Arif", "Alex", "Darius",
"Alden", "Parvis", "Reuben", "Amavand", "Gianni", "Habub",
"Abdul", "Badru", "Maalik", "Issa", "Zack", "Njowga",
"Corey", "Hamadi", "Marvin", "Hanif", "Ali", "Baraka"
];
const insaanFemGivenNames = [
"Koichi", "Scarlett", "Jennifer", "Rosie", "Naima", "Eliza",
"Layla", "Jillian", "Yasmine", "Anna", "Gertrude", "Kaylee",
"Kelsey", "Khadija", "Hayley", "Fadma", "Mya", "Isra",
"Kenna", "Tamou", "Tabitha", "Nezha", "Lilyana", "Ayat",
"Kelsie", "Lai", "Mattie", "Yan", "Emery", "Zhang",
"Sabrina", "Dai", "Maci", "Shi", "Campbell", "Tian",
"Justine", "Arosa", "Alanna", "Anisa", "Emilia", "Bahar",
"Maia", "Shma", "Kaylee", "Nighat", "Neveah", "Bukhdan",
"Bailee", "Delnaz", "Brynn", "Fozhan", "Abigail", "Dana",
"Deanna", "Bita", "Nadia", "Samirah", "Isabel", "Nazanin",
"Angelina", "Kiania", "Noemi", "Saada", "Annabel", "Zakia",
"Sarai", "Safiri", "Aiyana", "Aisha", "Joy", "Endelea"
];
const insaanNeutralGivenNames = [
"Lee", "Robin", "Hunter", "Rei", "Kiran", "Skyler",
"Jaden", "Harper", "Danni", "Rowan", "Jaime", "Bryn",
"Shen", "Fu", "Zeng", "Cao", "Jiang", "Tao",
"Aara", "Bahsaa", "Farokh", "Nawroz", "Rozhiar", "Zuriz",
"Rashan", "Anaqat", "Ayan", "Faraaz", "Hwaida", "Jahan",
"Ray", "Ash", "Kris", "Aren", "Silver", "Phoenix"
];
const insaanGivenNames = [
insaanMascGivenNames,
insaanFemGivenNames,
insaanNeutralGivenNames
];
const hinnFamilyNames = [
"Aenwyn", "Alavara", "Elandor", "Elion", "Elpharae", "Haera",
"Halanaestra", "Ilmadia", "Myrdin", "Nephinae", "Orivaris", "Saphielle",
"Thaola", "Umeleth", "Vaeri", "Xilren", "Zestari", "Zilyana",
"Vavalur", "Olahana", "Faharic", "Xilthrya", "Iliris", "Luneiros",
"Sylfield", "Elthir", "Vifaran", "Torrieth", "Trakian", "Thenala",
"Elafir", "Adphyra", "Xyrlen", "Balris", "Carawin", "Sylleth"
];
const hinnMascGivenNames = [
"Elleran", "Makatosh", "Malon", "Omar", "Relanor", "Kevin",
"Eilauver", "Kivissen", "Khilseith", "Ryfon", "Bialaer", "Neldor",
"Darkin", "Erlarea", "Gorred", "Rathal", "Taravan", "Rynnyn",
"Folmar", "Marikoth", "Marlevar", "Melandrach", "Iliphar", "Alosrin",
"Katar", "Faronik", "Amrynn", "Conal", "Iefyr", "Ruven",
"Rhalyf", "Niossae", "Anhalen", "Vilwin", "Riluaneth", "Nalaeryn"
];
const hinnFemGivenNames = [
"Aleria", "Fareena", "Gelleneth", "Nadia", "Octavia", "Tela",
"Irhaal", "Elanil", "Mariona", "Nephinae", "Imryll", "Taenya",
"Myriani", "Immianthe", "Eliyen", "Filaural", "Kylantha", "Yrathea",
"Dessielle", "Filauria", "Imra", "Mabra", "Anarzia", "Finnea",
"Sana", "Delimira", "Alvaerele", "Essaerae", "Lusserina", "Nithonael",
"Arnara", "Arana", "Aerilya", "Nuala", "Vithronael", "Keishara"
];
const hinnNeutralGivenNames = [
"Aramani", "Auden", "Janus", "Hadli", "Katana", "Reinn",
"Vulen", "Aimer", "Mirthal", "Uneathaen", "Alais", "Elas",
"Maeral", "Gweyir", "Falaern", "Ryo", "Zyno", "Amra",
"Ylf", "Elda", "Fala", "Ala", "Ado", "Syl",
"Ilbryen", "Elaerenth", "Bel", "Ehlark", "Tan", "Navaer",
"Caed", "Aubreon", "Nym", "Elaith", "Ruenar", "Paeri"
];
const hinnGivenNames = [
hinnMascGivenNames,
hinnFemGivenNames,
hinnNeutralGivenNames
];
const athenkiMascGivenNames = [
"Agizja", "Dakka", "Harakan", "Kagana", "Kathaxo", "Koshtuko",
"Livogorak", "Luriz", "Ntuukuguk", "Tannakka", "Zivik", "Kakaroz"
];
const athenkiFemGivenNames = [
"Azoza", "Bannika", "Chabat", "Chkoda", "Eshozi", "Inkathu",
"Kruthani", "Mimirik", "Rizo", "Tishek", "Tozakamak", "Elikkiza"
];
const athenkiNeutralGivenNames = [
"Bhak", "Gonka", "Lazgak", "Marzuk", "Vetkag", "Zakath",
"Makduk", "Tukaz", "Gorgoraz", "Kruz", "Tuzkaiz", "Moldak"
];
const athenkiFamilyNames = [
"Aggoganon", "Ghazat", "Harztarni", "Inzegonogorek", "Ktuj", "Lashtal",
"Merkikot", "Molvixo", "Nguchat", "Oh", "Ongkud", "Thalnuutong",
"Uzak", "Vasht", "Vox", "Vromdak", "Zagnatz", "Zarod"
];
const athenkiGivenNames = [
athenkiMascGivenNames,
athenkiFemGivenNames,
athenkiNeutralGivenNames
];
const rhuthariMascGivenNames = [
"Barmasai", "Fetu", "Lo-ikerra", "Palueiite", "Rangi", "Tamati"
];
const rhuthariFemGivenNames = [
"Akinyi", "Asoese", "La-ei", "Lanuola", "Makena", "Tueila"
];
const rhuthariNeutralGivenNames = [
"Ainalani", "Aputi", "Kerubo", "Kioko", "Laki", "Nataana"
];
const rhuthariFamilyNames = [
"al-Arana", "al-Devi", "al-Juma", "al-Kama", "al-Kaukai", "al-Kikuyu",
"al-Kimani", "al-Kura", "al-Maina", "al-Mwangi", "al-Njeri", "al-Odhiambo",
"al-Omondi", "al-Ora", "al-Palakiko", "al-Shah", "al-Turi", "al-Ashi"
];
const rhuthariGivenNames = [
rhuthariMascGivenNames,
rhuthariFemGivenNames,
rhuthariNeutralGivenNames
];
const dynNames = [
"Ash", "Bekke", "Bo", "Bru", "Chik", "Clank",
"Cronk", "Darn", "Denn", "Djit", "Etch", "Forp",
"Gage", "Jai", "Jax", "Kye", "Mack", "Mark",
"Mim", "Mok", "Perl", "Poe", "Poz", "Quin",
"Star", "Stim", "Til", "Tiz", "Viv", "Wren",
"Xed", "Zee", "Zilch", "Bar", "Thal", "Yeez"
];
const jaanNameParts = [
"salli", "namora", "agallo", "morchan", "nichoto", "killi",
"machin", "dalin", "foratu", "norga", "porcha", "varundi",
"ishin", "toras", "malind", "forgo", "moanna", "ciama",
"taliz", "waka", "mundba", "uvadra", "ormiz", "matchink",
"oliana", "farud", "boborik", "ukkrund", "pluuzim", "rema",
"kikaa", "shalund", "barutha", "gigara", "chini", "zanna"
];
function GetPronounIndex(pronouns, roll) {
if (pronouns == "he/him") {
return roll < 2 ? 0 : 2;
}
else if (pronouns == "she/her") {
return roll < 2 ? 1 : 2;
}
else if (pronouns == "they/them") {
return 2;
}
else {
return roll;
}
}
const vowels = "aeiou";
function IsNotVowel(c) {
return !vowels.includes(c);
}
function IndexIsNotVowel(s, i) {
return IsNotVowel(s.charAt(i));
}
function FirstIsNotVowel(s) {
return IndexIsNotVowel(s, 0);
}
function LastIsNotVowel(s) {
return IndexIsNotVowel(s, s.length - 1);
}
function CapitalizeFirstLetter(s) {
if (!s || s.length == 0) {
return "";
}
return s.charAt(0).toUpperCase() + s.slice(1);
}
on("mancerroll:name", function(eventInfo) {
let data = getCharmancerData();
let pronounRoll = eventInfo.roll[0].result - 1;
let species = data.origin.values.species;
let pronouns = data.namex.values.pronouns;
let pronounIndex = GetPronounIndex(pronouns, pronounRoll);
let name = "";
if (species == "insaan") {
let d72Roll = eventInfo.roll[1].result - 1;
let d36Roll1 = eventInfo.roll[2].result - 1;
let d36Roll2 = eventInfo.roll[3].result - 1;
let givenName = insaanGivenNames[pronounIndex][pronounIndex == 2 ? d36Roll1 : d72Roll];
let familyName = insaanFamilyNames[d36Roll2];
name = givenName + " " + familyName;
}
else if (species == "hinn") {
let d72Roll = eventInfo.roll[1].result - 1;
let d36Roll1 = eventInfo.roll[2].result - 1;
let d36Roll2 = eventInfo.roll[3].result - 1;
let givenName = (d72Roll < 10) ? insaanGivenNames[pronounIndex][d36Roll1] : hinnGivenNames[pronounIndex][d36Roll1];
let familyName = (d72Roll > 5 && d72Roll < 15) ? insaanFamilyNames[d36Roll2] : hinnFamilyNames[d36Roll2];
name = givenName + " " + familyName;
}
else if (species == "athenki") {
let nameRoll = eventInfo.roll[1].result - 1;
let familyNameRoll = eventInfo.roll[2].result - 1;
let givenName = athenkiGivenNames[pronounIndex][nameRoll];
let familyName = athenkiFamilyNames[familyNameRoll];
name = givenName + " " + familyName;
}
else if (species == "rhuthari") {
let nameRoll = eventInfo.roll[1].result - 1;
let tribeRoll = eventInfo.roll[2].result - 1;
let givenName = rhuthariGivenNames[pronounIndex][nameRoll];
let tribeName = rhuthariFamilyNames[tribeRoll];
name = givenName + " " + tribeName;
}
else if (species == "dyn") {
let nameCount = eventInfo.roll[0].result + 1;
let rolls = [ eventInfo.roll[1].result - 1, eventInfo.roll[2].result - 1, eventInfo.roll[3].result - 1, eventInfo.roll[4].result - 1 ];
name = dynNames[rolls[0]];
for (var i = 0; i < nameCount - 1; ++i) {
name += " " + dynNames[rolls[i + 1]];
}
}
else if (species == "jaan") {
let partCount = eventInfo.roll[0].result + 3;
let rolls = [
eventInfo.roll[1].result - 1,
eventInfo.roll[2].result - 1,
eventInfo.roll[3].result - 1,
eventInfo.roll[4].result - 1,
eventInfo.roll[5].result - 1,
eventInfo.roll[6].result - 1
];
for (var i = 0; i < partCount; ++i) {
let part = jaanNameParts[rolls[i]];
if (i > 0) {
if (LastIsNotVowel(name) && FirstIsNotVowel(part)) {
name += (rolls[(i + 2) % 6] > 3) ? "a" : "i";
}
}
name += part;
}
name = CapitalizeFirstLetter(name);
}
setAttrs({
name: name
});
});
on("mancerroll:money", function(eventInfo) {
setAttrs({
startingmoney: eventInfo.roll[0].result
});
});
const trinkets = [["Pen & Pencil", "Small Journal", "Foreign Coins", "Coffee Mug", "Deck of Cards", "Crowbar"],
["Flask", "Dainty Napkin", "Bag of Snacks", "Butter Crock", "Monocle", "Leather Wallet"],
["World Atlas", "Spyglass", "Padlock & Key", "Flute", "Setar", "Compass"],
["Toolset", "Folding Knife", "Matches", "Qunubu Cigarettes", "Tobacco Pipe", "Locket w/ Portrait"],
["Fancy Hat", "Fine Gloves", "Spectacles", "Box of Tea Leaves", "Azi Statue", "Hand Mirror"],
["Wooden Animal Figurine", "Athenki Toen Hourglass", "Piece of katta'ka shell", "Salacious Romance Novel", "Package of Dried Mushrooms", "Tiny Zephyrite Shard"]];
on("mancerroll:trinket", function(eventInfo) {
let roll1 = eventInfo.roll[0].result - 1;
let roll2 = eventInfo.roll[1].result - 1;
let newTrinket = trinkets[roll1][roll2];
let data = getCharmancerData();
let inventory = data.inventory.values.inventory;
if (!inventory) {
inventory = newTrinket;
}
else {
let rerollCount = 0;
while (inventory.includes(newTrinket)) {
if (rerollCount >= 36) {
//console.log("All!!!");
break;
}
if (roll2 == 6) {
roll1 = (roll1 + 1) % 6;
roll2 = 0;
}
else {
roll2++;
}
//console.log("Duplicate! Next: " + roll1 + ", " + roll2);
newTrinket = trinkets[roll1][roll2];
rerollCount++;
}
inventory += "\n" + newTrinket;
}
setAttrs({
inventory: inventory
});
});
const responsibilitiesTable = [
"acquisition" ,
"arcana",
"engineering",
"entertainment",
"leadership",
"medicine",
"navigation",
"security",
"spirituality",
"sustenance"
];
on("mancerroll:responsibilities", function(eventInfo) {
let roll1 = eventInfo.roll[0].result - 1;
let roll2 = eventInfo.roll[1].result - 1;
let roll3 = eventInfo.roll[2].result - 1;
if (roll2 == roll1) {
roll2 = (roll2 + 53) % 10;
}
if (roll3 == roll2 || roll3 == roll1) {
roll3 = (roll3 + 293) % 10;
if (roll3 == roll2 || roll3 == roll1) {
roll3 = (roll3 + 547) % 10;
}
}
let output = {};
for (var i = 0; i < responsibilitiesTable.length; ++i) {
output[responsibilitiesTable[i]] = (i == roll1) ? 3 : ((i == roll2 || i == roll3) ? 1 : 0);
}
setAttrs(output)
});
function LogAllPropsRecursive(value, indent) {
indent = indent || "";
var propValue;
for(var propName in value) {
propValue = value[propName];
//console.log(indent + propName + ": " + propValue);
//LogAllPropsRecursive(propValue, indent + " ");
}
}
function ShowOneChoice(choice, allChoices) {
hideChoices(allChoices);
showChoices([choice]);
}
function SetUpChoices(pageEvent, pageData, type, choices) {
let fullChoices = choices.map(x => type + "-" + x);
on("page:" + pageEvent, function(eventInfo) {
let data = getCharmancerData();
if (data[pageData] && data[pageData].values[type]) {
let value = data[pageData].values[type];
ShowOneChoice(type + "-" + value, fullChoices);
}
});
on("mancerchange:" + type, function(eventInfo) {
ShowOneChoice(type + "-" + eventInfo.newValue, fullChoices);
});
}
SetUpChoices("classx", "classx", "classx", classesTable);
SetUpChoices("origin", "origin", "species", speciesTable);
SetUpChoices("origin", "origin", "dynsub", dynsubTable);
SetUpChoices("origin", "origin", "jaansub", jaansubTable);
SetUpChoices("namex", "origin", "species", speciesTable);
SetUpChoices("equipment", "classx", "classx", classesTable);
SetUpChoices("equipment", "equipment", "wp", ["lightcarbine", "autorifle", "spellfocus", "idiophone"]);
SetUpChoices("equipment", "equipment", "ws", ["combatknife", "pistol", "heavypistol"]);
SetUpChoices("equipment", "equipment", "item", ["fraggrenade", "medkit"]);
</script>