Files
roll20-character-sheets/Generation/genCharR20sheet.html
T
Cacealeos dcb50ee51d Update genCharR20sheet.html
Added ability to equip offhand, dual-wield, and use guns with rolls.
Better controlled error messages
layout improvements
Added graphical overhaul,
2021-05-17 01:05:25 -07:00

4764 lines
224 KiB
HTML

<div class='App'>
<input type='hidden' class='tabstoggle' name='attr_sheetTab' value='character' />
<button type="action" name="act_character" value='@{attr_sheetTab}' class='character-semi'>CHARACTER</button>
<button type="action" name="act_equipment" value='@{attr_sheetTab}' class='equipment-semi'>EQUIPMENT</button>
<button type="action" name="act_styles" value='@{attr_sheetTab}' class='styles-semi'>STYLES</button>
<button type="action" name="act_spells" value='@{attr_sheetTab}' class='spells-semi'>SPELLS</button>
<button type="action" name="act_passives" value='@{attr_sheetTab}' class='passives-semi'>PASSIVES</button>
<button type="action" name="act_energytechniques" value='@{attr_sheetTab}' class='energy-techniques-semi'>ENERGY TECH</button>
<button type="action" name="act_meleetechniques" value='@{attr_sheetTab}' class='melee-techniques-semi'>MELEE TECH</button>
<button type="action" name="act_inventory" value='@{attr_sheetTab}' class='inventory-semi'>INVENTORY</button>
<button type="action" name="act_training" value='@{attr_sheetTab}' class='training-semi'>TRAINING</button>
<!-- <button type="action" name="act_memories" >Mind</button>-->
<!-- <button type="action" name="act_minions" >Minions</button>-->
<!-- disabled = "true"-->
<div class='character'>
<br>
<div class='menuborder'>
<b>Level: </b>
<input name="attr_Char_Level" value="@{attr_Char_Level}" max=100 min=0 class="character-inputs-secondary"/>
<button type="action" name="act_AddLevel" class='semi'>Add</button>
<button type="action" name="act_Add10Level" class='semi'>Add 10</button>
<button type="action" name="act_ResetLevel" class='semi' >Reset</button>
<b>Race: </b>
<div class="races">
<input type="hidden" class="race" name="attr_Char_Race" value="" />
<span name="attr_Char_Race"></span><br>
<button type="action" name="act_Race_Ciaha" class="race race-1">
<span class="checked"></span>
</button>
<button type="action" name="act_Race_Magian" class="race race-2">
<span class="checked"></span>
</button>
<button type="action" name="act_Race_Adept" class="race race-3">
<span class="checked"></span>
</button>
<button type="action" name="act_Race_Arbiter" class="race race-4">
<span class="checked"></span>
</button>
<button type="action" name="act_Race_Necrian" class="race race-5">
<span class="checked"></span>
</button>
</div>
</div>
<div class="spell-tech-points">
<div class='menuborder'>
<div style="text-align: center">
<b>Skill Points: </b>
<input name="attr_skill_points" value="@{attr_skill_points}" title="Remaining Spendable Skill Points" readonly="readonly"
class="character-inputs-secondary"
style="width: 15%"/>
<button type='action' name='act_add_skill_points' style="padding: 0; font-family: 'Pictos'" class='semi'>{</button>
<button type='action' name='act_minus_skill_points' style="padding: 0; font-family: 'Pictos'" class='semi'>}</button>
<b>Extra Skill Points: </b>
<input name="attr_Exskill_points" value="@{attr_Exskill_points}" title="Total Accumlated Extra Skill Points" readonly="readonly"
class="character-inputs-secondary"
style="width: 15%"/>
<button type='action' name='act_add_Exskill_points' style="padding: 0; font-family: 'Pictos'" class='semi'>{</button>
<button type='action' name='act_minus_Exskill_points' style="padding: 0; font-family: 'Pictos'" class='semi'>}</button>
</div>
<div style="text-align: center">
<b>Spell Points: </b>
<input name="attr_spell_points" value="@{attr_spell_points}" title="Remaining Spendable Spell Points" readonly="readonly"
class="character-inputs-secondary"
style="width: 15%"/>
<button type='action' name='act_add_spell_points' style="padding: 0; font-family: 'Pictos'" class='semi'>{</button>
<button type='action' name='act_minus_spell_points' style="padding: 0; font-family: 'Pictos'" class='semi'>}</button>
<b>Extra Spell Points: </b>
<input name="attr_Exspell_points" value="@{attr_Exspell_points}" title="Total Accumlated Extra Spell Points" readonly="readonly"
class="character-inputs-secondary"
style="width: 15%"/>
<button type='action' name='act_add_Exspell_points' style="padding: 0; font-family: 'Pictos'" class='semi'>{</button>
<button type='action' name='act_minus_Exspell_points' style="padding: 0; font-family: 'Pictos'" class='semi'>}</button>
</div>
</div>
</div>
<div class='menuborder'>
<b>Age</b>
<input type="number" name="attr_Age" value="@{attr_Age}" title="Character Age" style='width: 75px;' max=500 min=0 class="character-inputs-secondary"/>
<b>Manna Training</b>
<input type="number" name="attr_Char_Manna_Training" value=0 style='width: 60px;' max=100 min=0 class="character-inputs-secondary"/>
<b>Difficulty</b>
<input name="attr_Difficulty" value="@{attr_Difficulty}" title="Character Difficulty" readonly="readonly" class="character-inputs-secondary"/>
</div>
<span class="label-general">Covenants</span>
<div class='menuborder'>
<b>Restrictive:</b>
<select name='attr_restrict' value='None' style='display: inline-block; padding: 5'>
<option value=''>None</option>
<option value='Elemental'>Elemental</option>
<option value='Order'>Order</option>
<option value='Chaos'>Chaos</option>
<option value='Judgement'>Judgement</option>
</select>
<br>
<b>Non-Restrictive:</b>
<input type='checkbox' name='attr_deathcovenant' ><span>Death</span>
<input type='checkbox' name='' value='Hell'><span>Hell</span>
<input type='checkbox' name='' value='Void'><span>Void</span>
<input type='checkbox' name='' value='Primordial'><span>Primordial</span>
</div>
<span class="label-stats">Stats</span>
<span class="label-skills">Skills</span>
<span class="label-energy">Energies</span>
<div class='char-sect'>
<div class="stats">
<input name="attr_char_constitution" value="@{attr_char_constitution}" title="constitution" readonly="readonly" max="10" min="0" class='character-inputs'/>
<div style='display: inline'>
<button type='action' name='act_add_constitution' style="padding: 0; font-family: 'Pictos'" class='semi'>{</button>
<button type='action' name='act_minus_constitution' style="padding: 0; font-family: 'Pictos'" class='semi'>}</button>
<br><b>Constitution:</b><button type="roll" value="/roll 1d6 + @{char_constitution}" name="roll_constitution"></button>
</div>
<br>
<input name="attr_char_discipline" value="@{attr_char_discipline}" title="discipline" readonly="readonly" max="10" min="0" class='character-inputs'/>
<div style='display: inline'>
<button type='action' name='act_add_discipline' style="padding: 0; font-family: 'Pictos'" class='semi'>{</button>
<button type='action' name='act_minus_discipline' style="padding: 0; font-family: 'Pictos'" class='semi'>}</button>
<br><b>Discipline:</b><button type="roll" value="/roll 1d6 + @{char_discipline}" name="roll_discipline"></button>
</div>
<br>
<input name="attr_char_resistance" value="@{attr_char_resistance}" title="resistance" readonly="readonly" max="10" min="0" class='character-inputs'/>
<div style='display: inline'>
<button type='action' name='act_add_resistance' style="padding: 0; font-family: 'Pictos'" class='semi'>{</button>
<button type='action' name='act_minus_resistance' style="padding: 0; font-family: 'Pictos'" class='semi'>}</button>
<br><b>Resistance:</b><button type="roll" value="/roll 1d6 + @{char_resistance}" name="roll_resistance"></button>
</div>
<br>
<input name="attr_char_intelligence" value="@{attr_char_intelligence}" title="intelligence" readonly="readonly" max="10" min="0" class='character-inputs'/>
<div style='display: inline'>
<button type='action' name='act_add_intelligence' style="padding: 0; font-family: 'Pictos'" class='semi'>{</button>
<button type='action' name='act_minus_intelligence' style="padding: 0; font-family: 'Pictos'" class='semi'>}</button>
<br><b>Intelligence:</b><button type="roll" value="/roll 1d6 + @{char_intelligence}" name="roll_intelligence"></button>
</div>
</div>
<div class="skills">
<input name="attr_char_combat_arts" value="@{attr_char_combat_arts}" title="Combat Arts" readonly="readonly" max="100" min="0" class='character-inputs'/>
<div style='display: inline'>
<button type='action' name='act_add_combat_arts' style="padding: 0; font-family: 'Pictos'" class='semi'>{</button>
<button type='action' name='act_minus_combat_arts' style="padding: 0; font-family: 'Pictos'" class='semi'>}</button>
<br><b>Combat Arts</b>
</div>
<br>
<input name="attr_char_weapon_arts" value="@{attr_char_weapon_arts}" title="Weapon Arts" readonly="readonly" max="100" min="0" class='character-inputs'/>
<div style='display: inline'>
<button type='action' name='act_add_weapon_arts' style="padding: 0; font-family: 'Pictos'" class='semi'>{</button>
<button type='action' name='act_minus_weapon_arts' style="padding: 0; font-family: 'Pictos'" class='semi'>}</button>
<br><b>Weapon Arts</b>
</div>
<br>
<input name="attr_char_magitech" value="@{attr_char_magitech}" title="Mage tech" readonly="readonly" max="100" min="0" class='character-inputs'/>
<div style='display: inline'>
<button type='action' name='act_add_magitech' style="padding: 0; font-family: 'Pictos'" class='semi'>{</button>
<button type='action' name='act_minus_magitech' style="padding: 0; font-family: 'Pictos'" class='semi'>}</button>
<br><b>Magi-Tech</b>
</div>
<br>
<input name="attr_char_tech" value="@{attr_char_tech}" title="tech" readonly="readonly" max="100" min="0" class='character-inputs'/>
<div style='display: inline'>
<button type='action' name='act_add_tech' style="padding: 0; font-family: 'Pictos'" class='semi'>{</button>
<button type='action' name='act_minus_tech' style="padding: 0; font-family: 'Pictos'" class='semi'>}</button>
<br><b>Tech</b>
</div>
</div>
<br>
<input class='halfbreed' type='hidden' name='attr_halfbreed' value='0' >
<input class='deathcovenant' type='hidden' name='attr_deathcovenant' value='0' >
<div class="energy-catalyst">
<input name="attr_catalyst_mental" value="@{catalyst_mental}*@{powerstate}" title="Mental Energy" readonly="readonly" class='character-inputs'/>
<div style='display: inline'>
<button type='action' name='act_add_catalyst_mental' style="padding: 0; font-family: 'Pictos'" class='semi'>{</button>
<button type='action' name='act_minus_catalyst_mental' style="padding: 0; font-family: 'Pictos'" class='semi'>}</button>
<br><b>Mental Energy</b>
</div>
<br>
<input name="attr_catalyst_body" value="@{catalyst_body}*@{powerstate}" title="Body Energy" readonly="readonly" class='character-inputs'/>
<div style='display: inline'>
<button type='action' name='act_add_catalyst_body' style="padding: 0; font-family: 'Pictos'" class='semi'>{</button>
<button type='action' name='act_minus_catalyst_body' style="padding: 0; font-family: 'Pictos'" class='semi'>}</button>
<br><b>Body Energy</b>
</div>
<br>
<input name="attr_catalyst_spirit" value="@{catalyst_spirit}*@{powerstate}" title="Spirit Energy" readonly="readonly" class='character-inputs'/>
<div style='display: inline'>
<button type='action' name='act_add_catalyst_spirit' style="padding: 0; font-family: 'Pictos'" class='semi'>{</button>
<button type='action' name='act_minus_catalyst_spirit' style="padding: 0; font-family: 'Pictos'" class='semi'>}</button>
<br><b>Spirit Energy</b>
</div>
<br>
<input name="attr_catalyst_memory" value="@{catalyst_memory}*@{powerstate})" title="Memory Energy" readonly="readonly" class='character-inputs'/>
<div style='display: inline'>
<button type='action' name='act_add_catalyst_memory' style="padding: 0; font-family: 'Pictos'" class='semi'>{</button>
<button type='action' name='act_minus_catalyst_memory' style="padding: 0; font-family: 'Pictos'" class='semi'>}</button>
<br><b>Memory Energy</b>
</div>
<br>
<div class='demon' >
<input name="attr_catalyst_demon" value="@{catalyst_demon}*@{powerstate}" title="Demon Energy" readonly="readonly" class='character-inputs'/>
<button type='action' name='act_add_catalyst_demon' style="padding: 0; font-family: 'Pictos'" class='semi'>{</button>
<button type='action' name='act_minus_catalyst_demon' style="padding: 0; font-family: 'Pictos'" class='semi'>}</button>
<br><b>Demon Energy</b>
</div>
<br>
<div class='necro' >
<input name="attr_catalyst_necro" value="@{catalyst_necro}*@{powerstate}" title="necro Force" readonly="readonly" class='character-inputs'/>
<button type='action' name='act_add_catalyst_necro' style="padding: 0; font-family: 'Pictos'" class='semi'>{</button>
<button type='action' name='act_minus_catalyst_necro' style="padding: 0; font-family: 'Pictos'" class='semi'>}</button>
<br><b>Necro-Force</b>
</div>
</div>
<br>
</div>
<span class="label-general">VITALITY & STATUS</span>
<div class='menuborder' style="text-align: center;">
<table class="vitality-status">
<td><span>Life-Force:</span></td><td><input type="number" name="attr_Char_Life_Force" value="@{attr_Char_Life_Force}" style='width: 55px;' title="Life-Force" /></td>
<td><span>Spirit:</span></td><td><input type="number" name="attr_Char_Spirit_Force" value="200" title="Spirit" style='width: 55px;' max=500 min=0 /></td>
<td><span>Soul:</span></td><td><input type="number" name="attr_Char_Soul_Force" value="300" title="Soul" style='width: 55px;' max=1000 min=0 /></td>
<td><span>Manna:</span></td><td><input type="number" name="attr_Char_Manna" value="@{attr_Char_Manna}" title="Manna" style='width: 55px;' /></td>
<td><div class='demon' style='display: inline-block'>
<span>Essence:</span><input type="number" name="attr_Char_Demon" value="@{attr_Char_Demon}" title="Demonic Essence" style='width: 55px;'/>
</div></td>
<td><span>Disruption:</span></td><td><input type="number" name="attr_Disruption" value="@{attr_Disruption}" title="Disruption Meter" style='width: 55px;'/></td>
<td><span>Pain:</span></td><td><input type="number" name="attr_Pain" value="@{attr_Pain}" title="Pain Meter" style='width: 55px;'/></td>
<input type='hidden' name="attr_Capacity" value="@{attr_Capacity}" title="Mental Capacity" readonly="readonly" />
</table>
<br>
<span>TTT:</span><input name="attr_Char_TTT" value="@{attr_Char_TTT}" title="Turn-to-Turn Cost (TTT)" readonly="readonly"
class="character-inputs" style="width: 10%; color: red;"/>
<span>(Additional TTT):</span><input type='number' name="attr_adTTT" value='0' class="character-inputs" style="width: 10%; color: blue;"/>
<br>
<label style="color: mediumspringgreen; text-align: center">Conditions:
<input type='radio' name='attr_airborn' value='1'><span>Airborn</span>
<input type='radio' name='attr_airborn' value='0'><span>Grounded</span>
<input type='checkbox' name='attr_halfbreed'><span>Half-Demon</span>
<input type='checkbox' name='attr_defense'><span>Defensive</span>
<select style='width: 15%' name='attr_dismembered'>
<option>None</option>
<option>Arm</option>
<option>Leg</option>
<option>Arm & Leg</option>
<option>Decapitation</option>
</select>
<span>(Dismemberment)</span>
</label>
</div>
<div class='center'>
<button class='semi'>TURN ECONOMY:</button><input type=number name='attr_economy' value=100 style='width: 50px;' max=100 min=0>
</div>
<div class='center'>
<button type=action name='act_gather' style='height: 25px; width: 100px; font-size: 10px' class='semi'>GATHER</button>
<button type=action name='act_endTurn' style='height: 35px; width: 200px; font-size: 20px' class='semi'>END TURN</button>
<button type=action name='act_vitalize' style='height: 25px; width: 100px; font-size: 10px' class='semi'>VITALIZE</button>
</div>
<br>
<span class="label-general">C O M B A T</span>
<!--*************************************************************************************-->
<div class='char-sect-secondary'>
<!--************************************** HIDDEN ATTRIBUTES ******************************<span>Mental Cap:</span>-->
<input type="hidden" name="attr_primary-weapon" />
<input type="hidden" name="attr_secondary-weapon" />
<input type="hidden" name="attr_equipped-weapon-style" />
<input type="hidden" name="attr_primaryweapon-max-dur`" />
<input type="hidden" name="attr_secondaryweapon-max-dur`" />
<input type="hidden" name="attr_weapon-warning" />
<input type="hidden" name="attr_armor-warning" />
<!--************************************** HIDDEN ATTRIBUTES ******************************-->
<div style="flex-flow: column; width: 60%; text-align: text-align: justify-all;">
<div class='menuborder-secondary'>
<input type="hidden" name="attr_weapon-toggle" class="weapon-toggle" value="primary"/>
<div class='primaryweapon'>
<button type="action" name="act_primary-toggle" class='semi'>Main-Hand</button>
<button type="action" name="act_secondary-toggle" class='semi'>Off-Hand</button>
<button type="action" name="act_dual-toggle" class='semi'>Dual Wield</button>
<button type="action" name="act_ranged-toggle" class='semi'>Secondary</button>
<br>
<span style="font-size: 20px; color: #333333;" >Main-Hand:</span><button type='roll' value="?{Target's Endurance|0|1|2|3|4|5|6|7|8|9|10}
&{template:default}{{name=Melee}}{{Wielding=@{primaryweapon}}}{{Employing=@{weapon_style}}}{{Hits=[[floor([[@{primaryweapon_acc}/100]])]]}}{{Extra Hits=[[{ceil([[([[@{primaryweapon_acc}%100]]-[[1d100]])/100]])}]]}}{{Base=@{primaryweapon_base}(+@{primaryweapon-positive-scaling}/-@{primaryweapon-negative-scaling})}}{{Total Damage=[[([[floor([[@{primaryweapon_acc}/100]])]]+[[{ceil([[([[@{primaryweapon_acc}%100]]-[[1d100]])/100]])}]])*{[[([[@{primaryweapon_base}]]+({([[@{power}]]-[[?{Target's Endurance}]]),0}kh1*[[@{primaryweapon-positive-scaling}]])+({([[@{power}]]-[[?{Target's Endurance}]]),0}kl1*[[@{primaryweapon-negative-scaling}]]))]],0}kh1]]}}"
class='semi'>Attack</button><br>
<b>Name:</b><input style="font-size: 16px; width: 60%;" name="attr_primaryweapon" value="@{attr_primaryweapon}" title="Equiped Weapon" readonly="readonly" class="character-inputs"/>
<br>
<b>Style:</b><input style="font-size: 16px; width: 60%;" name="attr_weapon_style" value="@{attr_weapon_style}" title="Current Style" readonly="readonly" class="character-inputsleft"/>
<br>
<b>Comp:</b><input style="font-size: 16px;" name="attr_style-types" value="@{attr_style-types}" title="Style Compatibility" readonly="readonly" class="character-inputsright"/>
<br>
<b>Base:</b><input name="attr_primaryweapon_base" value="@{attr_primaryweapon_base}" title="Base Damage" readonly="readonly" class="character-inputsleft"/>
<b>Scaling:</b><input name="attr_primaryweapon-scaling" value="@{attr_primaryweapon-scaling}" title= "Scaling (+)/(-)" readonly="readonly" class="character-inputsright"/>
<br>
<b>Type:</b><input name="attr_primaryweapon-type" value="@{attr_primaryweapon-type}" title="Weapon Type" readonly="readonly" class="character-inputsleft"/>
<b>Acc:</b><input name="attr_primaryweapon_acc" value="@{attr_primaryweapon_acc}" title="Total Accuracy" readonly="readonly" class="character-inputsright"/>
<br>
<b>Stress:</b><input name="attr_primaryweapon-stress" value="@{attr_primaryweapon-stress}" title= "Stress" readonly="readonly" class="character-inputsleft"/>
<b>Eva:</b><input name="attr_primaryweapon_eva" value="@{attr_primaryweapon_eva}" title="Total Evasion" readonly="readonly" class="character-inputsright"/>
<br>
<b>Dur:</b><input name="attr_primaryweapon-rem-dur" value="@{attr_primaryweapon-rem-dur}" title="Remaining Durability" readonly="readonly" class="character-inputsleft"/>
<b>GG:</b><input name="attr_primaryweapon_gg" value="@{attr_primaryweapon_gg}" title="Total Guard Gauge" readonly="readonly" class="character-inputsright"/>
<br>
<span style="color: deeppink" name="attr_weapon-warning"></span>
<br>
<span style="color: deeppink" name="attr_armor-warning"></span>
</div>
<div class='secondaryweapon'>
<button type="action" name="act_primary-toggle" class='semi'>Main Hand</button>
<button type="action" name="act_secondary-toggle" class='semi'>Off Hand</button>
<button type="action" name="act_dual-toggle" class='semi'>Dual Wield</button>
<button type="action" name="act_ranged-toggle" class='semi'>Secondary</button>
<br>
<span style="font-size: 20px; color: #333333;">Off-Hand: </span><button type='roll' value="?{Target's Endurance|0|1|2|3|4|5|6|7|8|9|10}
&{template:default}{{name=Melee}}{{Wielding=@{secondaryweapon}}}{{Employing=@{weapon_style}}}{{Hits=[[floor([[@{secondaryweapon_acc}/100]])]]}}{{Extra Hits=[[{ceil([[([[@{secondaryweapon_acc}%100]]-[[1d100]])/100]])}]]}}{{Base=@{secondaryweapon_base}(+@{secondaryweapon-positive-scaling}/-@{secondaryweapon-negative-scaling})}}{{Total Damage=[[([[floor([[@{secondaryweapon_acc}/100]])]]+[[{ceil([[([[@{secondaryweapon_acc}%100]]-[[1d100]])/100]])}]])*{[[([[@{secondaryweapon_base}]]+({([[@{power}]]-[[?{Target's Endurance}]]),0}kh1*[[@{secondaryweapon-positive-scaling}]])+({([[@{power}]]-[[?{Target's Endurance}]]),0}kl1*[[@{secondaryweapon-negative-scaling}]]))]],0}kh1]]}}"
class='semi'>Attack</button><br>
<b>Name:</b><input style="font-size: 16px; width: 60%;" name="attr_secondaryweapon" value="@{attr_secondaryweapon}" title="Equiped Weapon" readonly="readonly" class="character-inputs"/>
<br>
<b>Style:</b><input style="font-size: 16px; width: 60%;" name="attr_weapon_style" value="@{attr_weapon_style}" title="Current Style" readonly="readonly" class="character-inputsleft"/>
<br>
<b>Comp:</b><input style="font-size: 16px;" name="attr_style-types" value="@{attr_style-types}" title="Style Compatibility" readonly="readonly" class="character-inputsleft"/>
<br>
<b>Base:</b><input name="attr_secondaryweapon_base" value="@{attr_secondaryweapon_base}" title="Base Damage" readonly="readonly" class="character-inputsleft"/>
<b>Scaling:</b><input name="attr_secondaryweapon-scaling" value="@{attr_secondaryweapon-scaling}" title= "Scaling (+)/(-)" readonly="readonly" class="character-inputsright"/>
<br>
<b>Type:</b><input name="attr_secondaryweapon-type" value="@{attr_secondaryweapon-type}" title="Weapon Type" readonly="readonly" class="character-inputsright"/>
<b>Acc:</b><input name="attr_secondaryweapon_acc" value="@{attr_secondaryweapon_acc}" title="Total Accuracy" readonly="readonly" class="character-inputsright"/>
<br>
<b>Stress:</b><input name="attr_secondaryweapon-stress" value="@{attr_weapon-stress}" title= "Stress" readonly="readonly" class="character-inputsleft"/>
<b>Eva:</b><input name="attr_secondaryweapon_eva" value="@{attr_secondaryweapon_eva}" title="Total Evasion" readonly="readonly" class="character-inputsright"/>
<br>
<b>Dur:</b><input name="attr_secondaryweapon-rem-dur" value="@{attr_secondaryweapon-rem-dur}" title="Remaining Durability" readonly="readonly" class="character-inputsleft"/>
<b>GG:</b><input name="attr_secondaryweapon_gg" value="@{attr_secondaryweapon_gg}" title="Total Guard Gauge" readonly="readonly" class="character-inputsright"/>
<br>
<span style="color: deeppink" name="attr_weapon-warning"></span>
<br>
<span style="color: deeppink" name="attr_armor-warning"></span>
</div>
<div class='dualweapon'>
<button type="action" name="act_primary-toggle" class='semi'>Main Hand</button>
<button type="action" name="act_secondary-toggle" class='semi'>Off Hand</button>
<button type="action" name="act_dual-toggle" class='semi'>Dual Wield</button>
<button type="action" name="act_ranged-toggle" class='semi'>Secondary</button>
<br>
<span style="font-size: 20px; color: #333333;">Dual Wield: </span><button type='roll' value="?{Target's Endurance|0|1|2|3|4|5|6|7|8|9|10}
&{template:default}{{name=Melee}}{{Wielding=@{primaryweapon} & @{secondaryweapon}}}{{Employing=@{weapon_style}}}{{Hits=[[floor([[@{dualweapon_acc}/100]])]]}}{{Extra Hits=[[{ceil([[([[@{dualweapon_acc}%100]]-[[1d100]])/100]])}]]}}{{Base=@{dualweapon_base}(+@{dualweapon-positive-scaling}/-@{dualweapon-negative-scaling})}}{{Total Damage=[[([[floor([[@{dualweapon_acc}/100]])]]+[[{ceil([[([[@{dualweapon_acc}%100]]-[[1d100]])/100]])}]])*{[[([[@{dualweapon_base}]]+({([[@{power}]]-[[?{Target's Endurance}]]),0}kh1*[[@{dualweapon-positive-scaling}]])+({([[@{power}]]-[[?{Target's Endurance}]]),0}kl1*[[@{dualweapon-negative-scaling}]]))]],0}kh1]]}}"
class='semi'>Attack</button><br>
<b>Style:</b><input style="font-size: 16px; width: 60%;" name="attr_weapon_style" value="@{attr_weapon_style}" title="Current Style" readonly="readonly" class="character-inputs"/>
<br>
<b>Comp:</b><input style="font-size: 16px;" name="attr_style-types" value="@{attr_style-types}" title="Style Compatibility" readonly="readonly" class="character-inputsleft"/>
<br>
<b>Base:</b><input name="attr_dualweapon_base" value="@{attr_weapon_base}" title="Base Damage" readonly="readonly" class="character-inputs"/>
<b>Scaling:</b><input name="attr_dualweapon-scaling" value="@{attr_dualweapon-scaling}" title= "Scaling (+)/(-)" readonly="readonly" class="character-inputs"/>
<br>
<b>Acc:</b><input name="attr_dualweapon_acc" value="@{attr_dualweapon_acc}" title="Total Accuracy" readonly="readonly" class="character-inputs"/>
<b>Eva:</b><input name="attr_dualweapon_eva" value="@{attr_dualweapon_eva}" title="Total Evasion" readonly="readonly" class="character-inputs"/>
<br>
<b>GG:</b><input name="attr_dualweapon_gg" value="@{attr_dualweapon_gg}" title="Total Guard Gauge" readonly="readonly" class="character-inputs"/>
<b>Stress:</b><input name="attr_dualweapon-stress" value="@{attr_dualweapon-stress}" title= "Stress" readonly="readonly" class="character-inputs"/>
<br>
<span style="color: deeppink" name="attr_armor-warning"></span>
</div>
<div class='rangedweapon'>
<button type="action" name="act_primary-toggle" class='semi'>Main Hand</button>
<button type="action" name="act_secondary-toggle" class='semi'>Off Hand</button>
<button type="action" name="act_dual-toggle" class='semi'>Dual Wield</button>
<button type="action" name="act_ranged-toggle" class='semi'>Secondary</button>
<span style="font-size: 20px; color: #333333;">Secondary: </span><button type='roll' value="?{Target's Endurance|0|1|2|3|4|5|6|7|8|9|10}
&{template:default}{{name=Melee}}{{Wielding=@{rangedweapon}}}{{Base=@{ranged_base}(+@{ranged_pscaling}/-@{ranged_nscaling})}}{{Total Damage=[[{[[([[@{ranged_base}]]+({([[@{power}]]-[[?{Target's Endurance}]]),0}kh1*[[@{ranged_pscaling}]])+({([[@{power}]]-[[?{Target's Endurance}]]),0}kl1*[[@{ranged_nscaling}]]))]],0}kh1]]}}"
class='semi'>Attack</button>
<br>
<b>Name:</b><input style="font-size: 16px; width: 60%;" name="attr_rangedweapon" value="@{attr_rangedweapon}" title="Equiped Weapon" readonly="readonly" class="character-inputs"/>
<br>
<b>Base:</b><input name="attr_ranged_base" value="@{attr_ranged_base}" title="Base Damage" readonly="readonly" class="character-inputsleft"/>
<b>Scaling:</b><input name="attr_ranged_scaling" value="@{attr_ranged_scaling}" title= "Scaling (+)/(-)" readonly="readonly" class="character-inputsright"/>
<br>
<b>Stress:</b><input name="attr_ranged_stress" value="@{attr_ranged_stress}" title= "Stress" readonly="readonly" class="character-inputsleft"/>
<b>Dur:</b><input name="attr_ranged_dur" value="@{attr_ranged_dur}" title="Remaining Durability" readonly="readonly" class="character-inputsleft"/>
<span style="color: deeppink" name="attr_rangedweapon-warning"></span>
<br>
<span style="color: deeppink" name="attr_armor-warning"></span>
<br>
</div>
</div>
<div class='menuborder-secondary'>
<span style="font-size: 20px; color: #333333;">Combat Arts: </span><button type='roll' value="?{Target's Endurance|0|1|2|3|4|5|6|7|8|9|10}
&{template:default}{{name=Melee}}{{Wielding=Unarmed}}{{Employing=@{combat_style}}}{{Hits=[[floor([[@{combat_acc}/100]])]]}}{{Extra Hits=[[{ceil([[([[@{combat_acc}%100]]-[[1d100]])/100]])}]]}}{{Base=@{combat_base}(+@{combat_base}/-5)}}{{Total Damage=[[([[floor([[@{combat_acc}/100]])]]+[[{ceil([[([[@{combat_acc}%100]]-[[1d100]])/100]])}]])*{[[([[@{combat_base}]]+({([[@{power}]]-[[?{Target's Endurance}]]),0}kh1*[[@{combat_base}]])+({([[@{power}]]-[[?{Target's Endurance}]]),0}kl1*5))]],0}kh1]]}}"
class='semi'>Attack</button><br>
<b>Style:</b><input style="font-size: 16px; width: 60%;" name="attr_combat_style" value="@{attr_combat_style}" title="Current Style" readonly="readonly" class="character-inputs"/>
<br>
<b>Base:</b><input name="attr_combat_base" value="@{attr_combat_base}" title="Base Damage" readonly="readonly" class="character-inputs"/>
<br>
<b>Scaling:</b><input name="attr_combat_scaling" value="@{attr_combat_scaling}" title= "Scaling (+)/(-)" readonly="readonly" class="character-inputs"/>
<br>
<b>Acc:</b><input name="attr_combat_acc" value="@{attr_combat_acc}" title="Total Accuracy" readonly="readonly" class="character-inputs"/>
<br>
<b>Eva:</b><input name="attr_combat_eva" value="@{attr_combat_eva}" title="Total Evasion" readonly="readonly" class="character-inputs"/>
<br>
<b>GG:</b><input name="attr_combat_gg" value="@{attr_combat_gg}" title="Total Guard Gauge" readonly="readonly" class="character-inputs"/>
</div>
</div>
<div class='menuborder' style="height: 100%;">
<label>Catalysts</label>
<div class="energies">
<input type="hidden" class="energy" name="attr_Energy_type" value="" />
<input class='halfbreed' type='hidden' name='attr_halfbreed' value='0' >
<input class='deathcovenant' type='hidden' name='attr_deathcovenant' value='0' >
<b><span name="attr_Energy_type"></span></b><br>
<button type="action" name="act_Energy_type_Mental" class="energy energy-1">
<span class="checked"></span>
</button>
<button type="action" name="act_Energy_type_Body" class="energy energy-2">
<span class="checked"></span>
</button>
<button type="action" name="act_Energy_type_Spirit" class="energy energy-3">
<span class="checked"></span>
</button>
<button type="action" name="act_Energy_type_Memory" class="energy energy-4">
<span class="checked"></span>
</button>
<button type="action" name="act_Energy_type_Demon" class="demon">
<span class="checked"></span>
</button>
<button type="action" name="act_Energy_type_necroforce" class="necro">
<span class="checked"></span>
</button>
</div>
<br>
<label>Power State</label>
<input type='radio' name='attr_powerstate' value=1 checked='checked'><span>Normal</span>
<input type='radio' name='attr_powerstate' value=.5 ><span>Suppressed</span>
<input type='radio' name='attr_powerstate' value=1.25 ><span>Full</span>
<br>
<br>
<b>Power</b><br><input name="attr_Power" value="@{attr_Power}" title="Power" readonly="readonly"
class="character-inputs-secondary"
style="width: 15%"/>
<br>
<b>Endurance</b><br><input name="attr_Endurance" value="@{attr_Endurance}" title="Endurance" readonly="readonly"
class="character-inputs-secondary"
style="width: 15%"/>
<br>
<b>Speed</b><br><input name="attr_Speed" value="@{attr_Speed}" title="Speed" readonly="readonly"
class="character-inputs-secondary"
style="width: 15%"/>
<br>
<b>Flight</b><br><input name="attr_Flight" value="@{attr_Flight}" title="Flight" readonly="readonly"
class="character-inputs-secondary"
style="width: 15%"/>
<br>
</div>
<div class='menuborder' style="height: 100%;">
<label>D E F E N C E S</label>
<label>Armor Dur: <input type='text' name="attr_armor-current-dur" value='@{attr_armor-current-dur}' readonly='readonly' style="width: 75px;" class="entry-inputs"/></label>
<label>Defensive Actions: <input type='text' name="attr_defensive-limit" value='@{attr_defensive-limit}' readonly='readonly' style="width: 45px;" class="entry-inputs"/></label>
<label>Hits Blocked: <input type='text' name="attr_blockedHits" value='@{attr_blockedHits}' readonly='readonly' style="width: 45px;" class="entry-inputs"/></label>
<span style="color: deeppink" name="attr_defactionW"></span>
<br>
<b>Guard Gauge (Combat)</b>
<input type="number" name="attr_curCGG" value="@{attr_curCGG}" style="width: 50px" >
<button type="action" name="act_combatBlock" class="semi">BLOCK</button>
<br>
<span style="color: deeppink" name="attr_guardWarningC"></span>
<br>
<b>Guard Gauge (Weapon)</b>
<input type="number" name="attr_curWGG" value="@{attr_curWGG}" style="width: 50px" >
<button type="action" name="act_weaponBlock" class="semi">BLOCK</button>
<br>
<span style="color: deeppink" name="attr_guardWarningW"></span>
<input type="hidden" name="attr_weapon_gg">
<input type="hidden" name="attr_defactionW">
<input type="hidden" name="attr_guardWarningW">
<input type="hidden" name="attr_guardWarningC">
<input type="hidden" class="defensive-technique-defend" name="attr_defend" value="">
<input type="hidden" class="defensive-technique-phasestep" name="attr_phasestep" value="">
<input type="hidden" class="defensive-technique-phasejump" name="attr_phasejump" value="">
<input type="hidden" class="defensive-technique-absorb" name="attr_absorb" value="">
<input type="hidden" class="defensive-technique-reflect" name="attr_reflect" value="">
<input type="hidden" class="defensive-technique-barrier" name="attr_barrier" value="">
<input type="hidden" class="defensive-technique-cutter" name="attr_cutter" value="">
<input type="hidden" class="defensive-module1" name="attr_mod1" value="">
<input type="hidden" class="defensive-module2" name="attr_mod2" value="">
<input type="hidden" class="defensive-module3" name="attr_mod3" value="">
<input type="hidden" class="defensive-module4" name="attr_mod4" value="">
<input type="hidden" class="defensive-module5" name="attr_mod5" value="">
<div>
<br>
<label>A C T I O N S</label>
<br>
<span>Reduce Damage by 30%.</span>
<br>
<button type="action" name="act_Defend" class='semi'>Defend</button>
</div>
<div class="phasestep">
<br>
<span>Evades one Attack while grounded.</span>
<br>
<button type="action" name="act_PhaseStep" >Phase Step</button>
</div>
<div class="phasejump">
<br>
<span>Evades one Attack while airborne.</span>
<br>
<button type="action" name="act_PhaseJump" >Phase Jump</button>
</div>
<div class="reflect">
<br>
<span>Deflects one Projectile.</span>
<br>
<button type="action" name="act_Reflect" >Reflect</button>
</div>
<div class="absorb">
<br>
<span>Absorb one Manna-based Projectile.</span>
<br>
<button type="action" name="act_Absorb" >Absorb</button>
</div>
<div class="barrier">
<br>
<span>Blocks 30% Damage within SMALL AoE.</span>
<br>
<button type="action" name="act_Barrier" >Barrier</button>
</div>
<div class="cutter">
<br>
<span>Destroys one Manna-based Projectile or Barrier.</span>
<br>
<button type="action" name="act_Cutter" >Manna Cutter</button>
</div>
<div class="armor1">
<pre><span name="attr_mod1"></span></pre>
<br>
<button type="action" name="act_activate-1" >Activate</button>
<input type="hidden" name="attr_modcost1" value="">
<input type="hidden" name="attr_modmax1" value="">
<input type="hidden" name="attr_mod-cd1" value="" class="cooldown">
<br>
<div class="cooldown"></div>
</div>
<div class="armor2">
<pre><span name="attr_mod2"></span></pre>
<br>
<button type="action" name="act_activate-2" >Activate</button>
<input type="hidden" name="attr_modcost2" value="">
<input type="hidden" name="attr_modmax2" value="">
<input type="hidden" name="attr_mod-cd2" value="" class="cooldown">
<br>
<div class="cooldown"></div>
</div>
<div class="armor3">
<pre><span name="attr_mod3"></span></pre>
<br>
<button type="action" name="act_activate-3" >Activate</button>
<input type="hidden" name="attr_modcost2" value="">
<input type="hidden" name="attr_modmax3" value="">
<input type="hidden" name="attr_mod-cd3" value="" class="cooldown">
<br>
<div class="cooldown"></div>
</div>
<div class="armor4">
<pre><span name="attr_mod4"></span></pre>
<br>
<button type="action" name="act_activate-4" >Activate</button>
<input type="hidden" name="attr_modcost4" value="">
<input type="hidden" name="attr_modmax4" value="">
<input type="hidden" name="attr_mod-cd4" value="" class="cooldown">
<br>
<div class="cooldown"></div>
</div>
<div class="armor5">
<pre><span name="attr_mod5"></span></pre>
<br>
<button type="action" name="act_activate-5" >Activate</button>
<input type="hidden" name="attr_modcost5" value="">
<input type="hidden" name="attr_modmax5" value="">
<input type="hidden" name="attr_mod-cd5" value="" class="cooldown">
<br>
<div class="cooldown"></div>
</div>
</div>
</div>
</div>
<div class='passives'>
<span class="label-general">PASSIVE ENERGY TECHNQIUES</span><br>
<fieldset class="repeating_passives">
<div class='menuborder'>
<input type='text' name='attr_passive-name' title='Name' placeholder="Name"/>
<select name='attr_passive-energytype' />
<option>Other</option>
<option>Mental</option>
<option>Body</option>
<option>Spirit</option>
<option>Memory</option>
<option>Demonic</option>
</select>
<input type='text' name='attr_passive-requirement' title='Requirement' placeholder="Requirement"/>
<textarea name="attr_passive-text" placeholder="description" style='width: 95%'></textarea>
</div>
</fieldset>
</div>
<div class='inventory'>
<fieldset class="repeating_inventory">
<div class='menuborder'>
<input type='text' name='attr_inventory-name' title='Name' placeholder="Name"/>
<input type='text' name='attr_inventory-quantity' title='Quantity of Item' placeholder="Quantity"/>
<input type='text' name='attr_inventory-mental-mass' title='Mental Weight' placeholder="Mental Mass"/>
<textarea name="attr_inventory-text" placeholder="description" style='width: 95%'></textarea>
</div>
</fieldset>
</div>
<div class='equipment'>
<div class='2colrow'>
<div class='col'>
<span class="label-general">W E A P O N S</span><br>
<fieldset class="repeating_weapons">
<div class='menuborder'>
<button type="action" name="act_equip-primaryweapon" class='semi'>Equip: Main Hand</button>
<span style="color: deeppink" name='attr_weapon-primarywarning'></span>
<input type='hidden' name='attr_weapon-primarywarning' value='' />
<br>
<button type="action" name="act_equip-secondaryweapon" class='semi'>Equip: Off-Hand</button>
<span style="color: deeppink" name='attr_weapon-secondarywarning'></span>
<input type='hidden' name='attr_weapon-secondarywarning' value='' />
<br>
<button type="action" name="act_equip-rangedweapon" class='semi'>Equip: Secondary</button>
<span style="color: deeppink" name='attr_weapon-rangedwarning'></span>
<input type='hidden' name='attr_weapon-rangedwarning' value='' />
<br>
<b>Name:</b><input style="width: 80%" type='text' name='attr_weapon-name' value='' title="Weapon Name" placeholder="Name" class="entry-inputs"/>
<br>
<b>Req:</b><input type='text' name='attr_weapon-req' value='' title="constitution Requirement" placeholder="Req" class="entry-inputs"/>
<input type="radio" name="attr_reqtype" value="Con" checked="checked"><span>Con</span>
<input type="radio" name="attr_reqtype" value="Tech"><span>Tech</span>
<input type="radio" name="attr_reqtype" value="MTech"><span>M.Tech</span>
<br>
<b>Stress:</b><input type='text' name='attr_weapon-stress' value='' title="Stress Tolerance" placeholder="Stress Rating" class="entry-inputs"/>
<br>
<b>(Max) Dur:</b><input type='text' name='attr_weapon-maximum-dur' value='' title="Max Durability" placeholder="Durability MAX" class="entry-inputs"/>
<br>
<b>Dur:</b><input type='text' name='attr_weapon-current-dur' value='' title="Remaining Durability" placeholder="Current Durability" class="entry-inputs"/>
<br>
<b>Base:</b><input type='text' name='attr_weapon-base' value='' title="Base Damage" placeholder="Base" class="entry-inputs"/>
<br>
<b>+ Scale:</b><input type='text' name='attr_weapon-pscaling' value='' title="+ Scaling" placeholder="Positive Scaling" class="entry-inputs"/>
<br>
<b>- Scale:</b><input type='text' name='attr_weapon-nscaling' value='' title="- Scaling" placeholder="Negative Scaling" class="entry-inputs"/>
<br>
<b>Acc:</b><input type='text' name='attr_weapon-acc' value='' title="Accuracy" placeholder="Accuracy Rating" class="entry-inputs"/>
<br>
<b>Demonic:</b><select name='attr_armor-weapon' value='NO'>
<option value="true">YES</option>
<option value="false" selected>NO</option>
</select>
<br>
<b>Type:</b><select name = "attr_weapon-type" value='' title="Weapon Type" placeholder="Type" >
<option value='S'>Small (S)</option>
<option value='H'>1-handed (H)</option>
<option value='P'>Polearm (P)</option>
<option value='HH'>2-Handed (HH)</option>
<option value='U'>Unorthedox (U)</option>
<option value='SH'>Shield (SH)</option>
</select>
<textarea name="attr_weapon-effects" style='width: 85%;' placeholder="description"></textarea>
</div>
</fieldset>
</div>
<div class='col'>
<span class="label-general">A R M O R</span><br>
<div class='menuborder'>
<button type="action" name="act_equip-armor" class='semi'>Equip</button>
<br>
<input type='hidden' name='attr_armor-equipwarning' value='' />
<span style='color: deeppink' name='attr_armor-equipwarning'></span>
<br>
<b>Name:</b><input style="width: 80%" type='text' name='attr_armor-name' value='' title="Weapon Name" placeholder="Name" class="entry-inputs"/>
<br>
<b>(Max)Dur:</b><input type='text' name='attr_armor-max-dur' value='' title="Max Durability" placeholder="Max Durability" class="entry-inputs"/>
<br>
<b>Dur:</b><input type='text' name='attr_equippedarmor-current-dur' value='' title="Remaining Durability" placeholder="Remaining Durability" class="entry-inputs"/>
<br>
<b>Base TTT:</b><input type='text' name='attr_armor-basettt' value='' title="Turn to Turn (TTT) Cost" placeholder="TTT" class="entry-inputs"/>
<br>
<b>Total TTT:</b><input type='text' name='attr_armor-totalttt' value='' title="Total (TTT) Cost" placeholder="Combined Turn to Turn (TTT) Cost" readonly="readonly" class="entry-inputs"/>
<br>
<b>Disrutpion:</b><input type='text' name='attr_armor-disruption' value='' title="Disruption Resistance" placeholder="Disruption" class="entry-inputs"/>
<br>
<b>Stress:</b><input type='text' name='attr_armor-stress' value='' title="Stress Tolerance" placeholder="Stress" class="entry-inputs"/>
<br>
<b>Demonic:</b><select name='attr_armor-demon' value='NO'>
<option value="true">YES</option>
<option value="false" selected>NO</option>
</select>
<br>
<b>Armor Type:</b><select name="attr_armor-type">
<option value='A'>Assault</option>
<option value='V'>Vigilant</option>
<option value='C'>Caster</option>
<option value='U'>Unique</option>
</select>
</div>
<span class="label-general">M O D U L E S</span><br>
<fieldset class="repeating_armor">
<!--************ R A D I O S ******************-->
<div class='menuborder'>
<div class="module">
<div class="mods">
<br>Module Type:: </b>
<input type="hidden" class="moduletype-toggle" name="attr_module-type" value="assault" />
<span name="attr_module-type"></span>
<button type="action" name="act_module-assault" class="mod mod-1">
<span class="checked"></span>
</button>
<button type="action" name="act_module-vigilant" class="mod mod-2">
<span class="checked"></span>
</button>
<button type="action" name="act_module-caster" class="mod mod-3">
<span class="checked"></span>
</button>
<button type="action" name="act_module-universal" class="mod mod-4">
<span class="checked"></span>
</button>
<br>
<input type='hidden' name='attr_modwarning' value='' />
<span style="color: deeppink" name='attr_modwarning'></span>
<br>
<b>Lv:
<select name="attr_module-level">
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
<option value='6'>6</option>
</select>
</b>
<br>
<div class="assault" >
<b>Mod:
<select name='attr_module-form' style=' inline-block; padding: 5'/>
<option value='N'>None</option>
<option value='XSB'>Speed Boost (Assault. EXCLUSIVE)</option>
<option value='C'>Counterattack (Assault)</option>
<option value='GR'>GG Regeneration (Assault)</option>
<option value='GB'>GG Boost (Assault)</option>
<option value='RA'>Repair Armor (Universal)</option>
<option value='RH'>Restore Health (Universal)</option>
<option value='DP'>Disruption Purge (Universal)</option>
</select>
</b>
</div>
<div class="vigilant">
<b>Mod:
<select name='attr_module-form' style=' inline-block; padding: 5'/>
<option value='N'>None</option>
<option value='XB'>Barrier (Vigilant. EXCLUSIVE)</option>
<option value='XER'>Emergency Reconstitution (Vigilant. EXCLUSIVE)</option>
<option value='EB'>Evasion Boost (Vigilant)</option>
<option value='RS'>Recover Spirit (Vigilant)</option>
<option value='NS'>Neutral Stress Relief (Vigilant)</option>
<option value='RA'>Repair Armor (Universal)</option>
<option value='RH'>Restore Health (Universal)</option>
<option value='DP'>Disruption Purge (Universal)</option>
</select>
</b>
</div>
<div class="caster" >
<b>Mod:
<select name='attr_module-form' style=' inline-block; padding: 5'/>
<option value='N'>None</option>
<option value='XJC'>Junction Cast (Caster. EXCLUSIVE)</option>
<option value='XSC'>Spell Charge (Caster. EXCLUSIVE)</option>
<option value='EG'>Enhanced Gather (Caster)</option>
<option value='SR'>Saturation Replenish (Caster)</option>
<option value='RA'>Repair Armor (Universal)</option>
<option value='RH'>Restore Health (Universal)</option>
<option value='DP'>Disruption Purge (Universal)</option>
</select>
</b>
</div>
<div class="universal">
<b>Mod:
<select name='attr_module-form' style=' inline-block; padding: 5'/>
<option value='N'>None</option>
<option value='C'>Counterattack (Assault)</option>
<option value='GR'>GG Regeneration (Assault)</option>
<option value='GB'>GG Boost (Assault)</option>
<option value='EB'>Evasion Boost (Vigilant)</option>
<option value='RS'>Recover Spirit (Vigilant)</option>
<option value='NS'>Neutral Stress Relief (Vigilant)</option>
<option value='EG'>Enhanced Gather (Caster)</option>
<option value='SR'>Saturation Replenish (Caster)</option>
<option value='RA'>Repair Armor (Universal)</option>
<option value='RH'>Restore Health (Universal)</option>
<option value='DP'>Disruption Purge (Universal)</option>
</select>
</b>
</div>
</div>
<b>Cost:</b><input type='text' name='attr_module-cost' value='' readonly="readonly"/>
<br>
<b>Cooldown:</b><input type='text' name='attr_module-cooldown' value='' readonly="readonly"/>
<br>
<b>TTT:</b><input type='text' name='attr_module-turn-to-turn' value='' readonly="readonly"/>
<br>
<b>Effect:</b><input type='text' name="attr_module-effect" value='' readonly="readonly"/>
</div>
</div>
</fieldset>
</div>
</div>
</div>
<div class='styles'>
<div class='2colrow'>
<div class='col'>
<span style='text-align: center' class="label-general">WEAPON STYLES</span><br>
<fieldset class="repeating_weapon-styles">
<div class='menuborder'>
<button type="action" name="act_equip-weapon-style" class='semi'>Equip</button>
<br>
<input type="hidden" name="attr_weapon-style-warning" value='' />
<span style="color: deeppink" name="attr_weapon-style-warning"></span>
<br>
<b>Style:</b><input type="text" name="attr_style-name" value='' title="Style" placeholder="Name" class="entry-inputs"/>
<br>
<b>Acc:</b><input type="text" name="attr_style-acc" value='' title="Accuracy" placeholder="Accuracy" class="entry-inputs"/>
<br>
<b>Eva:</b><input type="text" name="attr_style-eva" value='' title="Evasion" placeholder="Evasion" class="entry-inputs"/>
<br>
<b>GG:</b><input type="text" name="attr_style-gg" value='' title="Guard Gauge" placeholder="Guard Guage" class="entry-inputs"/>
<br>
<b>Req:</b><input type="text" name="attr_style-req" value='' title="Weapon Arts Requirement" placeholder="W.A. Requirement" class="entry-inputs"/>
<br>
<b>Rank:</b><select type="text" placeholder="Rank" />
<option>D</option>
<option>C</option>
<option>B</option>
<option>A</option>
<option>S</option>
</select>
<br>
<br>
<label>Type Compatibiilty</label>
<input type='checkbox' name='attr_style-S' value='S' title="Small (S)" />
<lable for="Small">Small (S)</lable>
<input type='checkbox' name='attr_style-H' value='H' title="1-Handed (H)" />
<lable for="1-Handed">1-Handed (H)</lable>
<input type='checkbox' name='attr_style-SS' value='SS' title="Shield & Small (SS)" />
<lable for="Shield & Small">Shield & Small (SS)</lable>
<input type='checkbox' name='attr_style-D' value='D' title="Dual Wield (D)" />
<lable for="Dual Wield">Dual Wield (D)</lable>
<input type='checkbox' name='attr_style-P' value='P' title="Polearm (P)" />
<lable for="Polearm">Polearm (P)</lable>
<input type='checkbox' name='attr_style-PS' value='PS' title="Shield & Polearm (PS)" />
<lable for="Shield & Polearm">Shield & Polearm (PS)</lable>
<input type='checkbox' name='attr_style-HH' value='HH' title="2-Handed (HH)" />
<lable for="2-Handed">2-Handed (HH)</lable>
<input type='checkbox' name='attr_style-U' value='U' title="Unorthedox (U)" />
<lable for="Unorthedox">Unorthedox (U)</lable>
<input type='checkbox' name='attr_style-SH' value='SH' title="Shield (SH)" />
<lable for="Shield">Shield (SH)</lable>
</div>
</fieldset>
</div>
<div class='col'>
<span style='text-align: center' class="label-general">COMBAT STYLES</span><br>
<fieldset class="repeating_combat-styles">
<div class='menuborder'>
<button type="action" name="act_equip-combat-style" class='semi'>Equip</button>
<br>
<input type='hidden' name='attr_combat-style-warning' value='' class="entry-inputs"/>
<span style="color: deeppink" name='attr_combat-style-warning'></span>
<br>
<b>Style:</b><input type='text' name='attr_style-name' value='' title="Style" placeholder="Name" class="entry-inputs"/>
<br>
<b>Acc:</b><input type='text' name='attr_style-acc' value='' title="Accuracy" placeholder="Accuracy" class="entry-inputs"/>
<br>
<b>Eva:</b><input type='text' name='attr_style-eva' value='' title="Evasion" placeholder="Evasion" class="entry-inputs"/>
<br>
<b>GG:</b><input type='text' name='attr_style-gg' value='' title="Guard Gauge" placeholder="Guard Guage" class="entry-inputs"/>
<br>
<b>Req:</b><input type="text" name="attr_style-req" value='' title="Combat Arts Requirement" placeholder="C.A. Requirement" class="entry-inputs"/>
<br>
<b>Rank:</b><select type="text" placeholder="Rank" />
<option>D</option>
<option>C</option>
<option>B</option>
<option>A</option>
<option>S</option>
</select>
<br>
</div>
</fieldset>
</div>
</div>
</div>
<div class='spells'>
<div style='text-align: center; margin-left: auto; margin-right: auto;'>
<span style='text-align: center' class="label-general">Spell Techniques</span><br>
<table border="1" style='width: 95%'>
<tr>
<td>
<span>Speed Cast</span><input type='checkbox' name='attr_spell-speed' title="" />
</td>
<td>
<span>High-Speed Cast</span><input type='checkbox' name='attr_spell-hispeed' title="" />
</td>
<td>
<span>Auto Cast</span><input type='checkbox' name='attr_spell-reflex' title="" />
</td>
<td>
<span>Counter Spell</span><input type='checkbox' name='attr_spell-counter' title="" />
</td>
</tr>
<tr>
<td>
<span>Double Cast</span><input type='checkbox' name='attr_spell-double' title="" />
</td>
<td>
<span>Junction Cast</span><input type='checkbox' name='attr_spell-junction' title="" />
</td>
<td>
<span>Double Pulse</span><input type='checkbox' name='attr_spell-pulse' title="" />
</td>
<td>
<span>Spell Surge</span><input type='checkbox' name='attr_spell-father' title="" />
</td>
</tr>
<tr>
<td>
<span>Spell Lift</span><input type='checkbox' name='attr_spell-lift' title="" />
</td>
<td>
<span>Carry Spell</span><input type='checkbox' name='attr_spell-carry' title="" />
</td>
<td>
<span>Spell Recovery</span><input type='checkbox' name='attr_spell-recovery' title="" />
</td>
<td>
<span>Hyper Spell</span><input type='checkbox' name='attr_spell-auto' title="" />
</td>
</tr>
<tr>
<td>
<span>Spell Shift</span><input type='checkbox' name='attr_spell-shift' title="" />
</td>
<td>
<span>Spell Charge</span><input type='checkbox' name='attr_spell-charge' title="" />
</td>
<td>
<span>Rivet Cast</span><input type='checkbox' name='attr_spell-rivet' title="" />
</td>
<td>
<span>Father Spell</span><input type='checkbox' name='attr_spell-surge' title="" />
</td>
</tr>
</table>
<span style='text-align: center' class="label-general">S P E L L S</span><br>
</div>
<br>
<fieldset class="repeating_spells">
<div class='menuborder'>
<b>Name:</b><input type='text' name='attr_spells-name' title='Name' placeholder="Name" class="entry-inputs"/>
<b>Branch:</b><input type='text' name='attr_spells-branch' title='School Branch' placeholder="School Branch" class="entry-inputs"/>
<br>
<b>School:</b><select name='attr_spells-school' style="width: 20%" value='None' />
<option value='None'>None</option>
<option value='Elementalism (Covenant)'>Elementalism (Covenant)</option>
<option value='Plying Arts (Basic)'>Plying Arts (Basic)</option>
<option value='Enchanting (Basic)'>Enchanting (Basic)</option>
<option value='High Magic (Basic)'>High Magic (Basic)</option>
<option value='Kinetics (Basic)'>Kinetics (Basic)</option>
<option value='Prayer (Covenant)'>Prayer (Covenant)</option>
<option value='Sealing (Advanced)'>Sealing (Advanced)</option>
<option value='Transcendalism (Advanced)'>Transcendalism (Advanced)</option>
<option value='Deliverance (Advanced)'>Deliverance (Advanced)</option>
<option value='Elder Magic (Advanced)'>Elder Magic (Advanced)</option>
<option value='Arcane (Covenant)'>Arcane (Covenant)</option>
<option value='Sorcery (Forbidden)'>Sorcery (Forbidden)</option>
<option value='Ghosting Arts (Forbidden)'>Ghosting Arts (Forbidden)</option>
<option value='Demonic Magic (Forbidden)'>Demonic Magic (Forbidden)</option>
<option value='Alchemy (Forbidden)'>Alchemy (Forbidden)</option>
<option value='Godden Magic'>Godden Magic</option>
</select>
<b>Mastery:</b><select name='attr_spells-mastery' style="width: 20%" value='N/A'/>
<option value='N/A'>N/A</option>
<option>Novice</option>
<option>Intermediate</option>
<option>Mastered</option>
</select>
<b>Potency:</b><select name='attr_spells-potency' style="width: 20%" value='N/A' />
<option value='N/A'>N/A</option>
<option value='Minor'>Minor</option>
<option value='Major'>Major</option>
<option value='Extreme'>Extreme</option>
<option value='Cataclysmic'>Cataclysmic</option>
</select>
<br>
<b>Cost:</b><input type='text' name='attr_spells-cost' title='Spell Cost' placeholder="Spell Cost" class="entry-inputs"/>
<b>Cast-Time:</b><input type='text' name='attr_spells-cast-time' title="Cast Time" placeholder="Cast Time" class="entry-inputs"/>
<textarea name="attr_inventory-text" placeholder="description" style='width: 95%'></textarea>
</div>
</fieldset>
</div>
<div class='energytechniques'>
<br>
<b>Defaults:</b>
<div class='2colrow'>
<div class='col'>
<b>Mental</b>
<ul>
<li>Cognitive Telekinesis (Req: 5)</li>
<ul>
<li>Base: 0</li>
<li>Power Cap: 2</li>
<li>Turn Eco: 3</li>
<li>Cost 3 (+3 TTT)</li>
</ul>
</ul>
</div>
<div class='col'>
<b>Body (Scaling: 20%/25%)</b>
<ul>
<li>Light Form (Req: 5)</li>
<ul>
<li>Base: 8</li>
<li>Cost: 10</li>
<li>Turn Eco: 20</li>
</ul>
<li>Heavy Form (Req: 10)</li>
<ul>
<li>Base: 40</li>
<li>Cost: 35</li>
<li>Turn Eco: 70</li>
<li>Small AOE</li>
</ul>
<li>Immense Form (Req: 15)</li>
<ul>
<li>Base: 80</li>
<li>Cost: 65</li>
<li>Turn Eco: 130</li>
<li>Moderate AOE</li>
</ul>
</ul>
</div>
</div>
<br>
<fieldset class="repeating_energytech">
<div class='menuborder'>
<b>Name:</b><input type='text' name='attr_etech-name' title='Name' placeholder="Name" class="entry-inputs"/>
<b>Req:</b><select name='attr_etech-requirement' title='Requirement'/>
<option>0</option>
<option>5</option>
<option>10</option>
<option>15</option>
<option>20</option>
<option>25</option>
<option>30</option>
<option>35</option>
<option>40</option>
<option>45</option>
<option>50</option>
<option>55</option>
<option>60</option>
<option>65</option>
<option>70</option>
<option>75</option>
<option>80</option>
<option>85</option>
<option>90</option>
<option>95</option>
<option>100</option>
</select>
<br>
<b>Cost:</b><input type='text' name='attr_etech-cost' title='Cost' placeholder="Cost" class="entry-inputs"/>
<b>Lv:</b><select name='attr_etech-level' value=''/>
<option>N/A</option>
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<br>
<textarea name="attr_etech-text" placeholder="description" style='width: 95%'></textarea>
</div>
</fieldset>
</div>
<div class='meleetechniques'>
<div class='2colrow'>
<div class='col'>
<br>
<b>Melee-Tech Sequences:</b>
<ul>
<li>Lunges & Spikes</li>
<ul>
<li>Lunges</li>
<li>Lauchers</li>
<li>Enders</li>
</ul>
<li>Lauchers & Streaks</li>
<ul>
<li>Streaks</li>
<li>Spikes</li>
<li>Enders</li>
</ul>
<li>Enders</li>
<b>None</b>
<li>Counter & Parries</li>
<b>Used as Defensive Actions and do not Combo</b>
</ul>
</div>
<div class="col">
<input type= 'hidden' name="attr_techwarning" value=''>
<span class="label-general" style="text-align: right">Combo Counter:</span>
<input type='text' name="attr_combo_counter" value='@{attr_combo_counter}' readonly='readonly' style="width: 45px;" class="entry-inputs"/>
<br>
<span class="label-general" style="text-align: right">Weapon Durability:</span>
<input type='text' name="attr_weapon-rem-dur" value='@{attr_weapon-rem-dur}' readonly='readonly' style="width: 45px;" class="entry-inputs"/>
<span style="color: deeppink;" name="attr_techwarning"></span>
<div class="progress">
<input type="hidden" value="0" name="attr_dur-bar" class="durbar">
<div class="durbar"></div>
</div>
</div>
</div>
<br>
<fieldset class="repeating_meleetech">
<!-- Cooldown Bar -->
<div class='menuborder'>
<div class="progress">
<input type="hidden" value="0" name="attr_tech-bar" class="techbar">
<div class="techbar"></div>
</div>
<button type="action" name='act_execute' class='semi'>Execute</button>
<b>Name:</b><input type='text' name='attr_meleetech-name' value='' title='Name' placeholder="Name" class="entry-inputs"/>
<b>Req:</b><select name='attr_meleetech-requirement' title='Requirement'>
<option>0</option>
<option>5</option>
<option>10</option>
<option>15</option>
<option>20</option>
<option>25</option>
<option>30</option>
<option>35</option>
<option>40</option>
<option>45</option>
<option>50</option>
<option>55</option>
<option>60</option>
<option>65</option>
<option>70</option>
<option>75</option>
<option>80</option>
<option>85</option>
<option>90</option>
<option>95</option>
<option>100</option>
</select>
<br>
<b>Type: </b>
<input type='radio' name='attr_meleetech-type' value='Combat'>
<lable for="Combat">Combat</lable>
<input type='radio' name='attr_meleetech-type' value='Weapon'>
<lable for="Weapon">Weapon</lable>
<br>
<b>Sequence:</b>
<div style='display: inline'>
<input type='checkbox' name='attr_meleetech-lunge'>
<lable for="Lunge">Lunge</lable>
<input type='checkbox' name='attr_meleetech-launcher'>
<lable for="Launcher">Launcher</lable>
<input type='checkbox' name='attr_meleetech-spike'>
<lable for="Spike">Spike</lable>
<input type='checkbox' name='attr_meleetech-streak'>
<lable for="Streak">Streak</lable>
<input type='checkbox' name='attr_meleetech-ender'>
<lable for="Ender">Ender</lable>
<input type='checkbox' name='attr_meleetech-counter'>
<lable for="Counter">Counter</lable>
<input type='checkbox' name='attr_meleetech-parry'>
<lable for="Parry">Parry</lable>
</div>
<br>
<b>Base:</b><input type='number' name='attr_meleetech-base' value='' title='Base Damage Bonus' placeholder="Base" max='50' min='0' style='width: 65px' class="entry-inputs"/>
<b>Cost/Cooldown:</b><input type='text' name='attr_meleetech-cost' value='' title='Cost' placeholder="Numbers ONLY" class="entry-inputs"/>
<textarea name="attr_meleetech-text" placeholder="description" style='width: 95%'></textarea>
</div>
</fieldset>
</div>
<div class='training'>
<fieldset class="repeating_training">
<select name="attr_training-origin">
<option value='Ciaha'>Ciaha</option>
<option value='Magian'>Magian</option>
<option value='Adept'>Adept</option>
<option value='Arbitar'>Arbitar</option>
<option value='Necrian'>Necrian</option>
<option value='Riahan'>Riahan</option>
<option value='Celestial'>Celestial</option>
</select>
<input type='text' name='attr_training-req' value='' title='Requirement' placeholder="Requirement"/>
<textarea name="attr_training-text" placeholder="STILL IN DEVELOPEMENT" style='width: 95%'></textarea>
</fieldset>
</div>
</div>
<rolltemplate class="rolltemplate-melee">
<div class="template-container">
<div class="template-header"></div>
<div class="template-row"><span>Attacking with: </span>{{Name}}</div>
<div class="template-row"><span>Employed: </span>{{style}}</div>
<div class="template-row"><span>Base: </span>{{base}}</div>
<div class="template-row"><span>Scored: </span>{{acc}}</div>
<div class="template-row"><span>Damage: </span>{{damage}} </div>
</div>
</rolltemplate>
<script type="text/worker">
//tab buttons
const buttonlist = ["character","passives","inventory","equipment","spells","styles","meleetechniques","energytechniques","training","memories","minions"];
buttonlist.forEach(button => {
//creates several functions with a foreach using energyRadioValues array and string concatenation for function names
on(`clicked:${button}`, function() {
setAttrs({
sheetTab: button
});
});
});
//Energy Catalyst buttons
const energyRadioValues = ["Mental","Body","Spirit","Memory","Demon","necroforce"];
//creates several functions with a foreach using energyRadioValues array and string concatenation for function names
energyRadioValues.forEach(value => {
on(`clicked:Energy_type_${value}`, function() {
setAttrs({
Energy_type: value
});
});
});
//governs the weapon attack display between mainhand, offhand, and dualwielding or ranged
const weapontoggle= ["primary","secondary","dual","ranged"];
weapontoggle.forEach(value => {
on(`clicked:${value}-toggle`, function() {
setAttrs({
"weapon-toggle": value
});
console.log(value);
});
});
//race radio buttons
const raceRadioValues = ["Ciaha","Magian","Necrian","Adept","Arbiter"];
//creates several functions with a foreach using raceRadioValues array and string concatenation for function names
raceRadioValues.forEach(value => {
on(`clicked:Race_${value}`, function() {
setAttrs({
Char_Race: value
});
//console.log(value);
});
});
//unfortunately, there is no way to incremenant an attribute without the API
const statButtons = ["constitution","discipline","resistance","intelligence"];
statButtons.forEach(value => {
on(`clicked:add_${value}`, () => {
getAttrs([`char_${value}`], v => {
if(v[`char_${value}`] < 10)
{
setAttrs({
[`char_${value}`]: v[`char_${value}`] + 1
});
}else
{
setAttrs({
[`char_${value}`]: 10
});
}
})
});
on(`clicked:minus_${value}`, () => {
getAttrs([`char_${value}`], v => {
if(v[`char_${value}`] > 0)
{
setAttrs({
[`char_${value}`]: v[`char_${value}`] - 1
});
}else
{
setAttrs({
[`char_${value}`]: 0
});
}
})
});
});
//unfortunately, there is no way to incremenant an attribute without the API
const skillsButtons = ["weapon_arts","combat_arts","magitech","tech"];
skillsButtons.forEach(value => {
on(`clicked:add_${value}`, () => {
getAttrs([`char_${value}`,"equipped-weapon-style","primary-weapon","secondary-weapon"], v => {
if(v[`char_${value}`] < 100)
{
setAttrs({
[`char_${value}`]: v[`char_${value}`] + 5
});
}else
{
setAttrs({
[`char_${value}`]: 100
});
}
Adjust_Battle(v["primary-weapon"], v["secondary-weapon"], v["equipped-weapon-style"]);
})
});
on(`clicked:minus_${value}`, () => {
getAttrs([`char_${value}`,"equipped-weapon-style","primary-weapon","secondary-weapon"], v => {
if(v[`char_${value}`] > 5)
{
setAttrs({
[`char_${value}`]: v[`char_${value}`] - 5
});
}else
{
setAttrs({
[`char_${value}`]: 0
});
}
Adjust_Battle(v["primary-weapon"], v["secondary-weapon"], v["equipped-weapon-style"]);
})
});
});
//unfortunately, there is no way to incremenant an attribute without the API
const CatalystButtons = ["catalyst_mental","catalyst_body","catalyst_spirit","catalyst_memory","catalyst_demon","catalyst_necro"];
CatalystButtons.forEach(value => {
on(`clicked:add_${value}`, () => {
getAttrs([`${value}`], v => {
if(v[`${value}`] <96)
{
setAttrs({
[`${value}`]: v[`${value}`] + 5
});
}else
{
setAttrs({
[`${value}`]: 100
});
}
});
Adjust_Energy();
});
on(`clicked:minus_${value}`, () => {
getAttrs([`${value}`], v => {
if(v[`${value}`] > 4)
{
setAttrs({
[`${value}`]: v[`${value}`] - 5
});
}else
{
setAttrs({
[`${value}`]: 0
});
}
});
Adjust_Energy();
});
});
//governs skill and Spell Points growth and extra point accumulation
const growthPointButtons = ["spell_points","skill_points"];
growthPointButtons.forEach(value => {
on(`clicked:add_${value}`, () => {
getAttrs([`${value}`], v => {
setAttrs({
[`${value}`]: v[`${value}`] + 1
});
});
});
on(`clicked:minus_${value}`, () => {
getAttrs([`${value}`], v => {
setAttrs({
[`${value}`]: v[`${value}`] - 1
});
});
});
on(`clicked:add_Ex${value}`, () => {
getAttrs([`Ex${value}`,`${value}`], v => {
setAttrs({
[`Ex${value}`]: v[`Ex${value}`] + 1,
[`${value}`]: v[`${value}`] + 1
});
});
});
on(`clicked:minus_Ex${value}`, () => {
getAttrs([`Ex${value}`,`${value}`], v => {
setAttrs({
[`Ex${value}`]: v[`Ex${value}`] - 1,
[`${value}`]: v[`${value}`] - 1
});
});
});
});
//armor module radio buttons
const ModuleValues = ["assault","vigilant","caster","universal"];
//creates several functions with a foreach using ModuleValues array and string concatenation for function names
//button within repeating sections are NOT detected with an "_" therefore, a "-" is necessary instead
ModuleValues.forEach(value => {
on(`clicked:repeating_armor:module-${value}`, function(eventInfo) {
const rowid = eventInfo.sourceAttribute.split('_')[2];
setAttrs({
[`repeating_armor_${rowid}_module-type`]: value
});
});
});
//defense module prog bars
const defensiveProgBar = ["0","1","2","3","4","5"]
defensiveProgBar.forEach(bar => {
on(`clicked:activate-${bar}`, () => {
getAttrs([`modmax${bar}`,`mod-cd${bar}`,`modcost${bar}`,`armor-current-dur`,'defensive-limit'], v => {
if(v[`mod-cd${bar}`]==="" && v['defensive-limit'] > 0)
{
setAttrs({
[`armor-current-dur`]: parseInt(v[`armor-current-dur`])-parseInt(v[`modcost${bar}`]),
[`mod-cd${bar}`]: parseInt(v[`modmax${bar}`]),
['defensive-limit']: parseInt(v['defensive-limit']) > 0 ? parseInt(v['defensive-limit']) - 1 : 0,
defactionW: parseInt(v['defensive-limit']) > 0 ? "" : "Out of defensive actions!"
});
}
});
});
});
//Defensive Techiques
on('clicked:PhaseStep', () => {
getAttrs(["Char_Manna", "Energy_type","Char_Demon",'defensive-limit'], v => {
if(v.Energy_type==="Demon"&&v.Char_Demon > 14)
{
setAttrs({
Char_Demon: parseInt(v.Char_Demon) - 15,
['defensive-limit']: parseInt(v['defensive-limit']) > 0 ? parseInt(v['defensive-limit']) - 1 : 0,
defactionW: parseInt(v['defensive-limit']) > 0 ? "" : "Out of defensive actions!"
})
return
}
if(parseInt(v.Char_Manna) > 14)
{
setAttrs({
Char_Manna: parseInt(v.Char_Manna) - 15,
['defensive-limit']: parseInt(v['defensive-limit']) > 0 ? parseInt(v['defensive-limit']) - 1 : 0,
defactionW: parseInt(v['defensive-limit']) > 0 ? "" : "Out of defensive actions!"
})
}
});
});
on('clicked:PhaseJump', () => {
getAttrs(["Char_Manna", "Energy_type","Char_Demon",'defensive-limit'], v => {
if(v.Energy_type==="Demon"&&v.Char_Demon > 14)
{
setAttrs({
Char_Demon: parseInt(v.Char_Demon) - 15,
['defensive-limit']: parseInt(v['defensive-limit']) > 0 ? parseInt(v['defensive-limit']) - 1 : 0,
defactionW: parseInt(v['defensive-limit']) > 0 ? "" : "Out of defensive actions!"
})
return
}
if(parseInt(v.Char_Manna) > 14)
{
setAttrs({
Char_Manna: parseInt(v.Char_Manna) - 15,
['defensive-limit']: parseInt(v['defensive-limit']) > 0 ? parseInt(v['defensive-limit']) - 1 : 0,
defactionW: parseInt(v['defensive-limit']) > 0 ? "" : "Out of defensive actions!"
})
}
});
});
on('clicked:Barrier', () => {
getAttrs(["Char_Manna", "Energy_type","Char_Demon",'defensive-limit'], v => {
if(v.Energy_type==="Demon"&&v.Char_Demon > 29)
{
setAttrs({
Char_Demon: parseInt(v.Char_Demon) - 30,
['defensive-limit']: parseInt(v['defensive-limit']) > 0 ? parseInt(v['defensive-limit']) - 1 : 0,
defactionW: parseInt(v['defensive-limit']) > 0 ? "" : "Out of defensive actions!"
})
return
}
if(parseInt(v.Char_Manna) > 29)
{
setAttrs({
Char_Manna: parseInt(v.Char_Manna) - 30,
['defensive-limit']: parseInt(v['defensive-limit']) > 0 ? parseInt(v['defensive-limit']) - 1 : 0,
defactionW: parseInt(v['defensive-limit']) > 0 ? "" : "Out of defensive actions!"
})
}
});
});
on('clicked:Reflect', () => {
getAttrs(["Char_Manna", "Energy_type","Char_Demon",'defensive-limit'], v => {
if(v.Energy_type==="Demon"&&v.Char_Demon > 4)
{
setAttrs({
Char_Demon: parseInt(v.Char_Demon) - 5,
['defensive-limit']: parseInt(v['defensive-limit']) > 0 ? parseInt(v['defensive-limit']) - 1 : 0,
defactionW: parseInt(v['defensive-limit']) > 0 ? "" : "Out of defensive actions!"
})
return
}
if(parseInt(v.Char_Manna) > 4)
{
setAttrs({
Char_Manna: parseInt(v.Char_Manna) - 5,
['defensive-limit']: parseInt(v['defensive-limit']) > 0 ? parseInt(v['defensive-limit']) - 1 : 0,
defactionW: parseInt(v['defensive-limit']) > 0 ? "" : "Out of defensive actions!"
})
}
});
});
on('clicked:Defend', () => {
getAttrs(["Char_Manna", "Energy_type","Char_Demon",'defensive-limit'], v => {
if(v.Energy_type==="Demon"&&v.Char_Demon > 6)
{
setAttrs({
Char_Demon: parseInt(v.Char_Demon) - 7,
['defensive-limit']: parseInt(v['defensive-limit']) > 0 ? parseInt(v['defensive-limit']) - 1 : 0,
defactionW: parseInt(v['defensive-limit']) > 0 ? "" : "Out of defensive actions!"
})
return
}
if(parseInt(v.Char_Manna) > 6)
{
setAttrs({
Char_Manna: parseInt(v.Char_Manna) - 7,
['defensive-limit']: parseInt(v['defensive-limit']) > 0 ? parseInt(v['defensive-limit']) - 1 : 0,
defactionW: parseInt(v['defensive-limit']) > 0 ? "" : "Out of defensive actions!"
})
}
});
});
on('clicked:combatBlock', () => {
getAttrs(["curCGG","blockedHits"], v => {
setAttrs({
curCGG: (v.curCGG > 100) ? v.curCGG - 100 : 0,
guardWarningC: (v.curCGG > 100) ? "" : "Guard Break!",
economy: (v.curCGG > 100) ? 100 : 25,
blockedHits: 1 + v.blockedHits
})
})
});
on('clicked:weaponBlock', () => {
getAttrs(["curWGG","blockedHits"], v => {
setAttrs({
curWGG: (v.curWGG > 100) ? v.curWGG - 100 : 0,
guardWarningW: (v.curWGG > 100) ? "" : "Guard Break!",
economy: (v.curWGG > 100) ? 100 : 25,
blockedHits: 1 + v.blockedHits
})
})
});
on('clicked:gather', () => {
getAttrs(["economy","Char_Manna","Char_Manna_Training","Char_Level"], value => {
var max = (100 + parseInt(value.Char_Manna_Training) + parseInt(value.Char_Level));
console.log(value.Char_Manna + 30);
if(value.economy >= 70)
{
setAttrs({
Char_Manna: (parseInt(value.Char_Manna) + 30) <= max ? parseInt(value.Char_Manna) + 30 : max,
economy: parseInt(value.economy) - 30
})
}
});
Adjust_Energy();
});
on('clicked:vitalize', () => Vitalize());
//intialize new characters //default to Ciaha
on("sheet:opened", ()=> {
getAttrs(["Char_Race"], v => {
if(v.Char_Race ==="")
{
let initiate = {
Char_Race: "Ciaha",
Char_Level: 1,
char_constitution: 3,
char_discipline: 2,
char_resistance: 0,
char_intelligence: 1,
char_combat_arts: 20,
char_weapon_arts: 25,
char_tech: 5,
char_magitech: 5,
catalyst_mental: 0,
catalyst_body: 10,
catalyst_spirit: 0,
catalyst_memory: 5,
catalyst_demon: 0,
catalyst_necro: 0,
Char_Life_Force: 131,
Char_Manna: 101,
Char_Demon: 0,
Char_Manna_Training: 0,
spell_points: 1,
skill_points: 12,
Exspell_points: 0,
Exskill_points: 0,
};
setAttrs(initiate, {silent:true});
}
});
});
on("change:Char_Life_Force", (eventInfo) => {
if(eventInfo.newValue <= 1)
{
setAttrs({
Char_Manna: 0,
Char_Demon: 0
})
Adjust_Energy(false);
}
});
on("change:Char_Spirit_Force", (eventInfo) => {
if(eventInfo.newValue <= 1)
{
setAttrs({
Char_Manna: 0
})
Adjust_Energy(false);
}
});
on("change:Age",(eventInfo) => {
if(eventInfo.previousValue < 100 && eventInfo.newValue >= 100)
getAttrs(['Difficutly'], v => {
setAttrs({Difficulty: parseInt(v.Difficulty) + 1})
})
if(eventInfo.newValue < 100 && eventInfo.previousValue >= 100)
getAttrs(['Difficutly'], v => {
setAttrs({Difficulty: parseInt(v.Difficulty) - 1})
})
});
on("change:powerstate change:Energy_type", () => Adjust_Energy());
on("change:Power", (eventInfo) => {
getAttrs(["weapon-stress", "armor-stress"], v => {
if(parseInt(eventInfo.newValue) > v["weapon-stress"] && v["weapon-stress"] !=="")
setAttrs({[`weapon-warning`]: "WARNING: Weapon Stress Tolerance exceeded. Using the weapon (attack/blocking) with too much Power will destroy it."})
if(parseInt(eventInfo.newValue) > v["armor-stress"] && v["armor-stress"] !== "")
setAttrs({[`armor-warning`]: "WARNING: Armor Stress Tolerance exceeded. Wearing the armor during a turn of battle with too much Power will destroy it."})
});
});
on("change:char_constitution", (eventInfo) => {
getAttrs(["Char_Level","char_resistance","armor-disruption","char_discipline"], v => {
var dis = 0;
if(v["armor-disruption"]!=="")
dis = parseInt(v["armor-disruption"]);
setAttrs({
Char_Life_Force: parseInt(eventInfo.newValue)*10 + v.Char_Level + 100,
Disruption: v.Char_Level + dis + (parseInt(eventInfo.newValue) + v.char_resistance)*5,
Pain: v.Char_Level + (parseInt(eventInfo.newValue) + v.char_discipline)*10
})
});
});
on("change:char_resistance", (eventInfo) => {
getAttrs(["Char_Level","char_constitution","armor-disruption"], v => {
var dis = 0;
if(v["armor-disruption"]!=="")
dis = parseInt(v["armor-disruption"]);
setAttrs({
Disruption: v.Char_Level + dis + (parseInt(eventInfo.newValue) + v.char_constitution)*5
})
});
});
on("change:char_discipline", (eventInfo) => {
getAttrs(["Char_Level","char_constitution","char_weapon_arts","char_combat_arts","equipped-weapon-style","primary-weapon","secondary-weapon"], v => {
var WA = v.char_weapon_arts + (parseInt(eventInfo.newValue) - parseInt(eventInfo.previousValue))*5
var CA = v.char_combat_arts + (parseInt(eventInfo.newValue) - parseInt(eventInfo.previousValue))*5
setAttrs({
Pain: v.Char_Level + (parseInt(eventInfo.newValue) + v.char_constitution)*10,
char_weapon_arts: WA,
char_combat_arts: CA
})
Adjust_Battle(v["primary-weapon"], v["secondary-weapon"], v["equipped-weapon-style"]);
});
});
on("change:char_intelligence", (eventInfo) => {
getAttrs(["char_magitech","char_tech"], v => {
setAttrs({
char_magitech: v.char_magitech + (parseInt(eventInfo.newValue) - parseInt(eventInfo.previousValue))*5,
char_tech: v.char_tech + (parseInt(eventInfo.newValue) - parseInt(eventInfo.previousValue))*5
})
});
});
on("change:halfbreed", (eventInfo) =>{
getAttrs(["Char_Race","Difficulty","Char_Level","Age"], v => {
let race = Adjust_Race(v.Char_Race);
var Diff = v.Difficulty;
var Age = v.Age;
if(eventInfo.newValue=="on"){
Age *= 1.5;
Diff ++;
}
else{
Age *= (2/3);
Diff--;
}
if(v.Age < 100 && Age > 100)
Diff++;
else if(v.Age > 100 && Age < 100)
Diff--;
setAttrs({
Char_Demon: 100 + ((eventInfo.newValue=="on") ? v.Char_Level * 9 : v.Char_Level*3),
Difficulty: Diff,
Age: Age
}, {silent: true})
})
console.log(eventInfo.newValue);
});
//equips weapon
on("clicked:repeating_weapons:equip-primaryweapon clicked:repeating_weapons:equip-secondaryweapon", function(eventInfo) {
// Check the current value of the hidden attribute.
const rowid = eventInfo.sourceAttribute.split('_')[2];
const weaponPriority = eventInfo.sourceAttribute.split('_')[3];//Secondary or Primary
const warning = weaponPriority === "equip-primaryweapon" ? "primary" : "secondary";
const wget = [`repeating_weapons_${rowid}_weapon-name`,
`repeating_weapons_${rowid}_weapon-req`,
`repeating_weapons_${rowid}_reqtype`,
`repeating_weapons_${rowid}_weapon-stress`,
`repeating_weapons_${rowid}_weapon-current-dur`,
`repeating_weapons_${rowid}_weapon-maximum-dur`,
`repeating_weapons_${rowid}_weapon-base`,
`repeating_weapons_${rowid}_weapon-pscaling`,
`repeating_weapons_${rowid}_weapon-nscaling`,
`repeating_weapons_${rowid}_weapon-acc`,
`repeating_weapons_${rowid}_weapon-type`];
const sget = ["char_constitution","equipped-weapon-style",
"Power","primary-weapon","secondary-weapon"];
const allget = [];
allget.push.apply(allget, wget);
allget.push.apply(allget, sget);
console.log(weaponPriority + " " + warning);
getAttrs(allget, function(weapon) {
// Toggle the hidden attribute value between
if(weapon[`equipped-weapon-style`]==="")
{
setAttrs({
[`repeating_weapons_${rowid}_weapon-${warning}warning`]: "Weapon-Style Missing. Equip a style on STYLE page."
});
return
}else if(weapon[`repeating_weapons_${rowid}_reqtype`] !== "Con")
{
setAttrs({
[`repeating_weapons_${rowid}_weapon-${warning}warning`]: `Select "Con" for Melee Weapons.`
});
return
}else if(weapon[`repeating_weapons_${rowid}_weapon-req`] > weapon["char_constitution"])
{
setAttrs({
[`repeating_weapons_${rowid}_weapon-${warning}warning`]: "Inadequate constitution"
});
return
}else if(weapon[`repeating_weapons_${rowid}_weapon-stress`] < weapon["Power"])
{
setAttrs({
[`repeating_weapons_${rowid}_weapon-${warning}warning`]: "Exceeds Power Tolerance"
});
return
}
wget.forEach(field => {
if(weapon.field === "")
{
setAttrs({
[`repeating_weapons_${rowid}_weapon-${warning}warning`]: "Weapon incomplete"
});
return
}
})
//equipped "X"-weapon is a hidden input found character tab. The warnings of equipped weapons with same rowid need to be cleared
if(warning === "primary")
{
setAttrs({
[`${warning}-weapon`]: rowid,
[`repeating_weapons_${rowid}_weapon-${warning}warning`]: "Equipped",
[`repeating_weapons_${rowid}_weapon-secondarywarning`]: "",
[`repeating_weapons_${rowid}_weapon-rangedwarning`]: ""
});
Adjust_Battle(rowid, weapon["secondary-weapon"], weapon[`equipped-weapon-style`]);
}else if(warning === "secondary")
{
setAttrs({
[`${warning}-weapon`]: rowid,
[`repeating_weapons_${rowid}_weapon-${warning}warning`]: "Equipped",
[`repeating_weapons_${rowid}_weapon-primarywarning`]: "",
[`repeating_weapons_${rowid}_weapon-rangedwarning`]: ""
});
Adjust_Battle(weapon["primary-weapon"], rowid, weapon[`equipped-weapon-style`]);
}
});
});
//equips tech and magi weapons
on("clicked:repeating_weapons:equip-rangedweapon", function(eventInfo) {
const rowid = eventInfo.sourceAttribute.split('_')[2];
getAttrs([`repeating_weapons_${rowid}_weapon-name`,
`repeating_weapons_${rowid}_weapon-req`,
`repeating_weapons_${rowid}_reqtype`,
`repeating_weapons_${rowid}_weapon-stress`,
`repeating_weapons_${rowid}_weapon-current-dur`,
`repeating_weapons_${rowid}_weapon-maximum-dur`,
`repeating_weapons_${rowid}_weapon-base`,
`repeating_weapons_${rowid}_weapon-pscaling`,
`repeating_weapons_${rowid}_weapon-nscaling`,
"char_tech","char_magitech"], function (weapon) {
Object.values(weapon).forEach(field => {
if(field === "")
{
setAttrs({[`repeating_weapons_${rowid}_weapon-rangedwarning`]: "Weapon Incomplete"});
return
}
})
if(weapon[`repeating_weapons_${rowid}_reqtype`] !== "Tech" && weapon[`repeating_weapons_${rowid}_reqtype`] !== "MTech")
{
setAttrs({[`repeating_weapons_${rowid}_weapon-rangedwarning`]: `Select: "Tech" or "Magi-Tech" requirement`});
return
}
if(weapon[`repeating_weapons_${rowid}_reqtype`] === "MTech" && parseInt(weapon["char_magitech"]) < parseInt(weapon[`repeating_weapons_${rowid}_weapon-req`]))
{
setAttrs({[`repeating_weapons_${rowid}_weapon-rangedwarning`]: `Insufficiant "Magi-Tech" Skill`});
return
}
if(weapon[`repeating_weapons_${rowid}_reqtype`] === "Tech" && parseInt(weapon[`char_tech`]) < parseInt(weapon[`repeating_weapons_${rowid}_weapon-req`]))
{
setAttrs({[`repeating_weapons_${rowid}_weapon-rangedwarning`]: `Insufficiant "Tech" Skill`});
return
}
setAttrs({
rangedweapon: weapon[`repeating_weapons_${rowid}_weapon-name`],
ranged_base: weapon[`repeating_weapons_${rowid}_weapon-base`],
ranged_scaling: (weapon[`repeating_weapons_${rowid}_weapon-pscaling`] + " / " + weapon[`repeating_weapons_${rowid}_weapon-nscaling`]),
ranged_pscaling: weapon[`repeating_weapons_${rowid}_weapon-pscaling`],
ranged_nscaling: weapon[`repeating_weapons_${rowid}_weapon-nscaling`],
ranged_stress: weapon[`repeating_weapons_${rowid}_weapon-stress`],
ranged_dur: weapon[`repeating_weapons_${rowid}_weapon-current-dur`],
[`repeating_weapons_${rowid}_weapon-rangedwarning`]: "Equipped",
[`repeating_weapons_${rowid}_weapon-primarywarning`]: "",
[`repeating_weapons_${rowid}_weapon-secondarywarning`]: ""
});
});
});
//equips weapon style
on("clicked:repeating_weapon-styles:equip-weapon-style", function(eventInfo) {
const rowid = eventInfo.sourceAttribute.split('_')[2];
getAttrs([`repeating_weapon-styles_${rowid}_style-name`,
`repeating_weapon-styles_${rowid}_style-name`,
`repeating_weapon-styles_${rowid}_style-acc`,
`repeating_weapon-styles_${rowid}_style-eva`,
`repeating_weapon-styles_${rowid}_style-gg`,
`repeating_weapon-styles_${rowid}_style-req`,
`primary-weapon`,"secondary-weapon","char_discipline","char_weapon_arts"], function(style) {
if(style[`repeating_weapon-styles_${rowid}_style-name`]==="")
{
setAttrs({
[`repeating_weapon-styles_${rowid}_weapon-style-warning`]: "Style Name Missing"
});
return
}else if(style[`repeating_weapon-styles_${rowid}_style-acc`]==="")
{
setAttrs({
[`repeating_weapon-styles_${rowid}_weapon-style-warning`]: "Accuracy Rating Missing"
});
return
}else if(style[`repeating_weapon-styles_${rowid}_style-eva`]==="")
{
setAttrs({
[`repeating_weapon-styles_${rowid}_weapon-style-warning`]: "Evasion Rating Missing"
});
return
}else if(style[`repeating_weapon-styles_${rowid}_style-gg`]==="")
{
setAttrs({
[`repeating_weapon-styles_${rowid}_weapon-style-warning`]: "Guard Guarge Rating Missing"
});
return
}else if(style[`repeating_weapon-styles_${rowid}_style-req`]==="" || style[`repeating_weapon-styles_${rowid}_style-req`] > (style.char_weapon_arts))
{
setAttrs({
[`repeating_weapon-styles_${rowid}_weapon-style-warning`]: "Weapon Arts Requirement Failed or Missing"
});
return
}
setAttrs({
[`equipped-weapon-style`]: rowid,
[`repeating_weapon-styles_${rowid}_weapon-style-warning`]: "Equipped",
weapon_gg: parseInt(style[`repeating_weapon-styles_${rowid}_style-gg`]) + (parseInt(style["char_discipline"])*5)
});
Adjust_Battle(style["primary-weapon"], style["secondary-weapon"], rowid);
});
});
//equips combat style
on("clicked:repeating_combat-styles:equip-combat-style", function(eventInfo) {
const rowid = eventInfo.sourceAttribute.split('_')[2];
getAttrs([`repeating_combat-styles_${rowid}_style-name`,
`repeating_combat-styles_${rowid}_style-acc`,
`repeating_combat-styles_${rowid}_style-eva`,
`repeating_combat-styles_${rowid}_style-gg`,
"char_constitution", `repeating_combat-styles_${rowid}_style-req`,
"char_discipline", "char_combat_arts"], function (style) {
if(style[`repeating_combat-styles_${rowid}_style-name`]==="")
{
setAttrs({
[`repeating_combat-styles_${rowid}_combat-style-warning`]: "Missing Style Name"
});
return
}else if(style[`repeating_combat-styles_${rowid}_style-acc`]==="")
{
setAttrs({
[`repeating_combat-styles_${rowid}_combat-style-warning`]: "Missing Accuracy Rating"
});
return
}else if(style[`repeating_combat-styles_${rowid}_style-eva`]==="")
{
setAttrs({
[`repeating_combat-styles_${rowid}_combat-style-warning`]: "Missing Evasion Rating"
});
return
}else if(style[`repeating_combat-styles_${rowid}_style-gg`]==="")
{
setAttrs({
[`repeating_combat-styles_${rowid}_combat-style-warning`]: "Missing Guard Guage Rating"
});
return
}else if(style[`repeating_combat-styles_${rowid}_style-req`]==="" || style[`repeating_combat-styles_${rowid}_style-req`] > (style.char_combat_arts))
{
setAttrs({
[`repeating_combat-styles_${rowid}_combat-style-warning`]: "Combat Arts Requirement Failed or Missing"
});
return
}
var NewBase = (5 + style.char_constitution);
setAttrs({
combat_base: `${NewBase}`,
combat_acc: (parseInt(style[`repeating_combat-styles_${rowid}_style-acc`]) + 100 + parseInt(style[`char_combat_arts`])*2),
combat_eva: (parseInt(style[`repeating_combat-styles_${rowid}_style-eva`]) + (style.char_discipline * 5)),
combat_gg: (parseInt(style[`repeating_combat-styles_${rowid}_style-gg`]) + (style.char_discipline * 5)),
combat_style: style[`repeating_combat-styles_${rowid}_style-name`],
combat_scaling: ([`${NewBase}/5`]),
[`repeating_combat-styles_${rowid}_combat-style-warning`]: "Equipped"
});
});
});
//updates progress bars for meleetechs
on("clicked:repeating_meleetech:execute", function(eventInfo) {
const rowid = eventInfo.sourceAttribute.split('_')[2];
getAttrs([`repeating_meleetech_${rowid}_meleetech-cost`,"combo_counter",`primary-weapon`, `secondary-weapon`,`primaryweapon-rem-dur`,`primaryweapon-max-dur`,`repeating_meleetech_${rowid}_tech-bar`], function(value){
//the repeating section only has one input for cost but...
//combat techniques always have a cooldown whereas weapon tech use DURABILITY
//However, This means that weapon tech will always have at least 10 meleetech-cost
//using this, we seperate the execute button to either start a cooldown progress bar or subtract the cost from DURABILITY bar
if(value[`repeating_meleetech_${rowid}_meleetech-cost`]==="")
{
setAttrs({
techwarning: "WARNING: Tech Incomplete"
});
return
}
if(value[`repeating_meleetech_${rowid}_meleetech-cost`] > 9)//weapon tech tree
{
if(value[`primary-weapon`]==="" && value[`secondary-weapon`]==="")
{
setAttrs({
techwarning: "WARNING: No weapon Equipped!"
});
return
}else if(parseInt(value[`repeating_meleetech_${rowid}_meleetech-cost`]) > parseInt(value[`primaryweapon-rem-dur`]))
{
setAttrs({
techwarning: "WARNING: Weapon will break if tech is used!"
});
return
}//END IF ELSE
setAttrs({
[`primaryweapon-rem-dur`]: value[`primaryweapon-rem-dur`] - value[`repeating_meleetech_${rowid}_meleetech-cost`],
[`weapon-rem-dur`]: value[`primaryweapon-rem-dur`] - value[`repeating_meleetech_${rowid}_meleetech-cost`],
[`dur-bar`]: Math.floor(((value[`primaryweapon-rem-dur`] - value[`repeating_meleetech_${rowid}_meleetech-cost`])/value[`primaryweapon-max-dur`])*5 + 1),
combo_counter: parseInt(value.combo_counter) + 1 || 1,
techwarning: ""
});
console.log(Math.floor(((value[`primaryweapon-rem-dur`] - value[`repeating_meleetech_${rowid}_meleetech-cost`])/value[`primaryweapon-max-dur`])*5 + 1));
return
}
if(parseInt(value[`repeating_meleetech_${rowid}_meleetech-cost`]) < 10)//combat tech tree
{
if(value[`repeating_meleetech_${rowid}_tech-bar`]!=="" && value[`repeating_meleetech_${rowid}_tech-bar`] > 0)
{
console.log(value[`repeating_meleetech_${rowid}_tech-bar`]);
setAttrs({
techwarning: "WARNING: Tech in Cooldown"
});
return
}
setAttrs({
[`repeating_meleetech_${rowid}_tech-bar`]: value[`repeating_meleetech_${rowid}_meleetech-cost`],
combo_counter: parseInt(value.combo_counter) + 1 || 1,
techwarning: ""
});
}
});
});
//equips armor and modules
on("clicked:equip-armor", ()=> {
getSectionIDs('repeating_armor', idArray => {
//console.log(idArray); //debugging
const foo = [];
let Mods = {
mod1: "",
mod2: "",
mod3: "",
mod4: "",
mod5: "",
modcost1: "",
modcost2: "",
modcost3: "",
modcost4: "",
modcost5: "",
"mod-cd1": "",
"modmax1": "",
"mod-cd2": "",
"modmax2": "",
"mod-cd3": "",
"modmax3": "",
"mod-cd4": "",
"modmax4": "",
"mod-cd5": "",
"modmax5": "",
['armor-totalttt']: 0,
['Disruption']: 0,
["armor-equipwarning"]: "Equipped"
};
var i =0;
idArray.forEach(id => {
foo.push(`repeating_armor_${id}_module-form`,
`repeating_armor_${id}_module-cooldown`,
`repeating_armor_${id}_module-cost`,
`repeating_armor_${id}_module-effect`,
`repeating_armor_${id}_module-turn-to-turn`,
`repeating_armor_${id}_modulewarning`);
});
const bar = ["armor-basettt", "armor-disruption","armor-max-dur","equippedarmor-current-dur","Char_Level", "char_constitution", "char_resistance"];
foo.push.apply(foo, bar);
getAttrs(foo, v => {
idArray.forEach(id => {
if(typeof v[`repeating_armor_${id}_modulewarning`] !== "undefined"){
setAttrs({["armor-equipwarning"]: "Module Error - Cannot Equip"});
return
}
i++;
Mods[`mod${i}`] = [`Cost: ${v[`repeating_armor_${id}_module-cost`]}. \n
Effect: ${v[`repeating_armor_${id}_module-effect`]}.`];
Mods['armor-totalttt'] += parseInt(v[`repeating_armor_${id}_module-turn-to-turn`]);
Mods[`modmax${i}`] = v[`repeating_armor_${id}_module-cooldown`];
Mods[`modcost${i}`] = parseInt(v[`repeating_armor_${id}_module-cost`]);
});
if(v['armor-current-dur'] > v['armor-max-dur'])
Mods['armor-current-dur'] = parseInt(v['armor-max-dur']);
else
Mods['armor-current-dur'] = parseInt(v['equippedarmor-current-dur']);
Mods['armor-totalttt'] += parseInt(v["armor-basettt"]);
Mods['Disruption'] = parseInt(v["armor-disruption"]) + parseInt(v["Char_Level"]) + (parseInt(v["char_resistance"]) + parseInt(v["char_constitution"]))*5;
setAttrs(Mods);
console.log(Mods['Disruption']);
});
Adjust_Energy();
});
});
on("change:repeating_armor:module-form", function(eventInfo) {
//load module data into armor modules
const rowid = eventInfo.sourceAttribute.split('_')[2];
getAttrs([`repeating_armor_${rowid}_module-level`, "char_constitution", "armor-type"], v => {
//call Defensive_MOdule to assign values to module
let module = Defensive_Module(eventInfo.newValue, v[`repeating_armor_${rowid}_module-level`], v["armor-type"], v["char_constitution"]);
console.log(module.warn);
setAttrs({
[`repeating_armor_${rowid}_module-turn-to-turn`]: module.TTT,
[`repeating_armor_${rowid}_module-cooldown`]: module.CoolD,
[`repeating_armor_${rowid}_module-cost`]: module.Cost,
[`repeating_armor_${rowid}_module-effect`]: module.effect,
[`repeating_armor_${rowid}_modwarning`]: module.warn,
['armor-equipwarning']: module.warn !== "" ? "Module Error - Cannot Equip" : "Unequipped"
});
});
});
on("change:repeating_armor:module-level", function(eventInfo) {
const rowid = eventInfo.sourceAttribute.split('_')[2];
//place dropdown to default "None" entry
setAttrs({[`repeating_armor_${rowid}_module-form`]: 'None'});
});
on('clicked:endTurn', ()=>{
var manna = true;
getSectionIDs('repeating_meleetech', techs => {
let cooldown = {
economy: 100,
combo_counter: 0,
['defensive-limit']: 3,
blockedHits: 0,
defactionW: "",
guardWarningC: "",
guardWarningW: "",
};
const foo = [];
techs.forEach(id => {
foo.push(`repeating_meleetech_${id}_tech-bar`);
});
for(var i = 1; i<=5; i++)
{
foo.push(`mod-cd${i}`);
foo.push(`modmax${i}`);
cooldown[`mod-cd${i}`] = "";
}
const bar = ["char_constitution","char_discipline","char_resistance","Char_TTT","adTTT","Energy_type","Char_Manna","Char_Demon","Char_Life_Force","Char_Level","armor-disruption","combat_gg","weapon_gg","curCGG","curWGG","defense","Disruption","Pain"];
foo.push.apply(foo, bar);
getAttrs(foo, value => {
//reduce cooldowns for each combat tech by 1 until zero
techs.forEach(id => {
if(parseInt(value[`repeating_meleetech_${id}_tech-bar`]) > 1)
cooldown[`repeating_meleetech_${id}_tech-bar`] = value[`repeating_meleetech_${id}_tech-bar`] - 1;
else
cooldown[`repeating_meleetech_${id}_tech-bar`] = "";
})
//reduce pain and Disruption
var dis = 0;
if(value["armor-disruption"]!=="")
dis = parseInt(value["armor-disruption"]) || 0;
var maxDis = parseInt(value.Char_Level) + dis + ((parseInt(value.char_resistance) + parseInt(value.char_constitution)) * 5);
var maxPain = parseInt(value.Char_Level) + ((parseInt(value.char_discipline) + parseInt(value.char_constitution)) * 10);
cooldown.Disruption = (parseInt(value.Disruption) + 5) <= maxDis ? (parseInt(value.Disruption) + 5) : maxDis;
cooldown.Pain = (parseInt(value.Pain) + 5) <= maxPain ? (parseInt(value.Pain) + 5) : maxPain;
console.log(parseInt(value.Pain) + 5);
//increase gg meter for blocking
// guard is set to 100 after Guard break during next turn
var def = 50;
if(value.defense == "on")
def = 100;
if(value.combat_gg != "" && (def + value.curCGG) <= value.combat_gg)
cooldown.curCGG = (value.curCGG != 0) ? def + value.curCGG : 100;
else if(value.combat_gg != "")
cooldown.curCGG = (value.curCGG != 0) ? value.combat_gg : 100;
if(value.weapon_gg != "" && (def + value.curWGG) <= value.weapon_gg)
cooldown.curWGG = (value.curWGG != 0) ? def + value.curWGG : 100;
else if(value.weapon_gg != "")
cooldown.curWGG = (value.curWGG != 0) ? value.weapon_gg : 100;
//console.log(value.curWGG);
//console.log(value.curCGG);
//reduce cooldown for each armor mod
for(var i = 1; i<=5; i++)
{
if(value[`modmax${i}`]!=="")
if(value[`mod-cd${i}`] > 1)
cooldown[`mod-cd${i}`] = value[`mod-cd${i}`] - 1;
}
if(value.Energy_type==="necroforce") //if using necro, no manna is consumed but all armor ceases to operate - INCOMPLETE
{
cooldown.Char_Life_Force = parseInt(value.Char_Life_Force) - value.Char_TTT - value.adTTT;
setAttrs(cooldown);
}
else if(value.Energy_type==="Demon") //if using demon, TTT will reduce Demon pool
{
if(parseInt(value.Char_Demon) < (parseInt(value.Char_TTT) + parseInt(value.adTTT)))
{
cooldown.Char_Demon = 0;
manna = false;
}
else
cooldown.Char_Demon = value.Char_Demon - value.Char_TTT - value.adTTT;
setAttrs(cooldown);
} else //using just manna, TTT will reduce Manna pool
{
if(parseInt(value.Char_Manna) < (parseInt(value.Char_TTT) + parseInt(value.adTTT)))
{
cooldown.Char_Manna = 0;
manna = false;
}
else
cooldown.Char_Manna = value.Char_Manna - value.Char_TTT - value.adTTT;
setAttrs(cooldown);
}
});
Adjust_Energy(manna);//change stats if manna/demon reaches zero
});
});
on('clicked:AddLevel', function() {
getAttrs(["Char_Level"], function(value){
setAttrs({
Char_Level: ((parseInt(value.Char_Level)+1) || 1)
});
});
});
on('clicked:Add10Level', function() {
getAttrs(["Char_Level"], function(value){
setAttrs({
Char_Level: ((parseInt(value.Char_Level)+10) || 10)
});
});
});
on('clicked:ResetLevel', function() {
setAttrs({
Char_Level: 1
});
});
on('change:Char_Race', function(eventInfo) {
//gather data about race base stats before adjusting all derivatives
let OldBase = Adjust_Race(eventInfo.previousValue);
let NewBase = Adjust_Race(eventInfo.newValue);
getAttrs(["Char_Manna_Training","Char_Level","armor-disruption","armor-totalttt","spell_points","skill_points","Exspell_points","Exskill_points","powerstate"], function (value) {
var dis = 0;
if(value["armor-disruption"]!=="")
dis = parseInt(value["armor-disruption"]);
var TTT = 0;
if(value.powerstate == 1)
TTT = 5 + value["armor-totalttt"];
else if(value.powerstate == .5)
TTT = (5 + value["armor-totalttt"]) *0.5;
else if(value.powerstate == 1.25)
TTT = (5 + value["armor-totalttt"]) *2;
//let newAll = Adjust_Energy(energies);
setAttrs({
char_combat_arts: NewBase.Dis*5 + NewBase.CA,
char_weapon_arts: NewBase.Dis*5 + NewBase.WA,
char_tech: NewBase.Int*5 + NewBase.TE,
char_magitech: NewBase.Int*5 + NewBase.MT,
char_constitution: NewBase.Con,
char_discipline: NewBase.Dis,
char_resistance: NewBase.Res,
char_intelligence: NewBase.Int,
catalyst_mental: ((Math.floor(value.Char_Level/2)) || 0) + NewBase.Me,
catalyst_body: ((Math.floor(value.Char_Level/2)) || 0) + NewBase.Be,
catalyst_spirit: ((Math.floor(value.Char_Level/2)) || 0) + NewBase.Se,
catalyst_memory: ((Math.floor(value.Char_Level/2)) || 0) + NewBase.Mem,
catalyst_demon: ((Math.floor(value.Char_Level/2)) || 0),
catalyst_necro: ((Math.floor(value.Char_Level/2)) || 0),
Char_Life_Force: parseInt(value.Char_Level) + 100 + (NewBase.Con* 10),
Char_Manna: parseInt(value.Char_Level) + 100 + parseInt(value.Char_Manna_Training),
Char_Demon: 0,
halfbreed: "",
spell_points: (value.Char_Level*NewBase.SPG) + NewBase.SPB - ((value.Char_Level*OldBase.SPG) + OldBase.SPB - value.spell_points),
skill_points: (value.Char_Level*NewBase.SKG) + NewBase.SKB - ((value.Char_Level*OldBase.SKG) + OldBase.SKB - value.skill_points),
Disruption: parseInt(value.Char_Level) + dis + (NewBase.Res + NewBase.Con)*5,
Pain: parseInt(value.Char_Level) + (NewBase.Con + NewBase.Dis)*10,
defend: "",
phasestep: "",
phasejump: "",
reflect: "",
absorb: "",
barrier: "",
cutter: "",
Energy_type: "",
Age: NewBase.Age,
Difficulty: 1,
Power: 0,
Endurance: 0,
Speed: 0,
Flight: 0,
Char_TTT: TTT
}, {silent: true});
//attempt to deal with asynchrononicity. Silent:true fails if setAttrs is called too quickly
//Adjust_Battle(value["equipped-weapon"], value["equipped-weapon-style"]);
});
});
on('change:Char_Level', function(eventInfo) {
getAttrs(["char_constitution","char_discipline","char_resistance","Char_Manna_Training","Char_Race","Age","armor-disruption","spell_points","skill_points"], function(value){
let Base = Adjust_Race(value.Char_Race);
var dis = 0;
if(value["armor-disruption"]!=="")
dis = parseInt(value["armor-disruption"]) || 0;
setAttrs({
catalyst_mental: ((Math.floor(parseInt(eventInfo.newValue)/2)) || 0) + Base.Me,
catalyst_body: ((Math.floor(parseInt(eventInfo.newValue)/2)) || 0) + Base.Be,
catalyst_spirit: ((Math.floor(parseInt(eventInfo.newValue)/2)) || 0) + Base.Se,
catalyst_memory: ((Math.floor(parseInt(eventInfo.newValue)/2)) || 0) + Base.Mem,
catalyst_demon: ((Math.floor(parseInt(eventInfo.newValue)/2)) || 0),
catalyst_necro: ((Math.floor(parseInt(eventInfo.newValue)/2)) || 0),
Char_Life_Force: parseInt(eventInfo.newValue) + 100 + (value.char_constitution * 10),
Char_Manna: parseInt(eventInfo.newValue) + 100 + value.Char_Manna_Training,
spell_points: value.spell_points + ((parseInt(eventInfo.newValue) - parseInt(eventInfo.previousValue))*Base.SPG),
skill_points: value.skill_points + ((parseInt(eventInfo.newValue) - parseInt(eventInfo.previousValue))*Base.SKG),
Disruption: parseInt(eventInfo.newValue) + dis + ((value.char_resistance + value.char_constitution) *5),
Pain: parseInt(eventInfo.newValue) + (parseInt(value.char_discipline) + parseInt(value.char_constitution)) * 10,
Age: parseInt(value.Age) - (parseInt(eventInfo.newValue) - parseInt(eventInfo.previousValue))
}, {silent:true});
Adjust_Energy();
});
});
Vitalize=function()
{
let vital = {};
const stats = ["combat_gg","weapon_gg","primaryweapon-max-dur","armor-max-dur","char_constitution","char_discipline","char_resistance","Char_Level","armor-disruption","Char_Manna_Training"];
//const foo = [];
getSectionIDs('repeating_meleetech', techs => {
techs.forEach(id => {//reset tech cooldown
vital[`repeating_meleetech_${id}_tech-bar`] = "";
})
for(var i = 1; i<=5; i++)//reset defensive mod cooldown
vital[`mod-cd${i}`] = "";
//foo.push.apply(foo, stats);
//restore manna, life-force, pain, disruption, GG, and dur to max
//spirit & soul are not restored with vitalize
getAttrs(stats, value => {
var dis = 0;
if(value["armor-disruption"]!=="")
dis = parseInt(value["armor-disruption"]) || 0;
//reset gg meter for blocking
vital.curCGG = (parseInt(value.combat_gg) != "") ? parseInt(value.combat_gg) : 0;
vital.curWGG = (parseInt(value.weapon_gg) != "") ? parseInt(value.weapon_gg) : 0;
vital.blockedHits = 0;
vital.combo_counter = 0;
vital.defactionW = "";
vital['defensive-limit'] = 3;
vital.guardWarningC = "";
vital.guardWarningW = "";
vital.adTTT = 0;
vital.Char_Manna = 100 + parseInt(value.Char_Manna_Training) + parseInt(value.Char_Level);
vital.Char_Life_Force = 100 + value.Char_Level + (value.char_constitution * 10);
vital.Disruption = value.Char_Level + dis + (value.char_constitution + value.char_resistance) * 5;
vital.Pain = value.Char_Level + (value.char_constitution + value.char_discipline) * 10;
vital["primaryweapon-rem-dur"] = parseInt(value["primaryweapon-max-dur"]);
vital["weapon-rem-dur"] = parseInt(value["primaryweapon-max-dur"]);
vital["armor-current-dur"] = parseInt(value["armor-max-dur"]);
vital["equippedarmor-current-dur"] = parseInt(value["armor-max-dur"]);
vital.economy = 100;
console.log(vital);
setAttrs(vital);
});
});
}
Defensive_Module=function(New, Mlevel, Atype, Con)
{
let Module = {
TTT: "",
CoolD: "",
Cost: "",
effect: "",
warn: ""
};
var level = parseInt(Mlevel);
//console.log(New);
switch(New)
{
case "N": //No module selected
break;
case "XSB": //Speed Boost Module
if(level != 2 && level != 3 && level != 5 && level != 6)
Module.warn = "Error: Module only compatible with Level: 2,3,5, or 6. ";
else if(Atype!=="A" && Atype!=="U")
Module.warn = "Error: Module Exclusive to Assault Type Armor. ";
else
{
switch(level)
{
case 2:
Module.TTT = 2;
Module.CoolD = 8;
Module.Cost = 100;
Module.effect = "+1 Speed for 2 turns(Max of 4)";
break;
case 3:
Module.TTT = 3;
Module.CoolD = 8;
Module.Cost = 100;
Module.effect = "+1 Speed for 4 turns(Max of 4)";
break;
case 5:
Module.TTT = 4;
Module.CoolD = 8;
Module.Cost = 150;
Module.effect = "+2 Speed for 2 turns(Max of 6)";
break;
case 6:
Module.TTT = 5;
Module.CoolD = 8;
Module.Cost = 150;
Module.effect = "+2 Speed for 4 turns(Max of 6)";
break;
}
Module.ward = "";
}
break;
case "XB": //Barrier Module
if(Atype!=="V" && Atype!=="U")
Module.warn = "Error: Module Exclusive to Vigilant Type Armor. ";
else
{
switch(level)
{
case 1:
Module.TTT = 1;
Module.CoolD = 3;
Module.Cost = 30;
Module.effect = "+50 Vit Shield";
break;
case 2:
Module.TTT = 2;
Module.CoolD = 3;
Module.Cost = 45;
Module.effect = "+100 Vit Shield";
break;
case 3:
Module.TTT = 3;
Module.CoolD = 3;
Module.Cost = 60;
Module.effect = "+150 Vit Shield";
break;
case 4:
Module.TTT = 4;
Module.CoolD = 4;
Module.Cost = 75;
Module.effect = "+200 Vit Shield";
break;
case 5:
Module.TTT = 5;
Module.CoolD = 4;
Module.Cost = 90;
Module.effect = "+250 Vit Shield";
break;
case 6:
Module.TTT = 6;
Module.CoolD = 4;
Module.Cost = 105;
Module.effect = "+300 Vit Shield";
break;
}
Module.warn = "";
}
break;
case "XER": //Emergency Reconstitution Module
if(level != 2 && level != 3 && level != 5 && level != 6)
Module.warn = "Error: Module only compatible with Level: 2,3,5, or 6. ";
else if(Atype!=="V" && Atype!=="U")
Module.warn = "Error: Module Exclusive to Vigilant Type Armor. ";
else
{
switch(level)
{
case 2:
Module.TTT = 1;
Module.CoolD = 5;
Module.Cost = 150;
Module.effect = "Reconstitute 2 units of body mass";
break;
case 3:
Module.TTT = 1;
Module.CoolD = 5;
Module.Cost = 250;
Module.effect = "Reconstitute 3 units of body mass";
break;
case 5:
Module.TTT = 1;
Module.CoolD = 5;
Module.Cost = 350;
Module.effect = "Reconstitute 4 units of body mass";
break;
case 6:
Module.TTT = 1;
Module.CoolD = 5;
Module.Cost = 450;
Module.effect = "Reconstitute 5 units of body mass";
break;
}
Module.warn = "";
}
break;
case "XJC": //Junction Cast Module
if(level != 2 && level != 4 && level != 6)
Module.warn = "Error: Module only compatible with Level: 2, 4, or 6. ";
else if(Atype!=="C" && Atype!=="U")
Module.warn = "Error: Module Exclusive to Caster Type Armor. ";
else
{
switch(level)
{
case 2:
Module.TTT = 1;
Module.CoolD = 3;
Module.Cost = 45;
Module.effect = "+100 Vit Shield";
break;
case 4:
Module.TTT = 1;
Module.CoolD = 3;
Module.Cost = 60;
Module.effect = "+150 Vit Shield";
break;
case 6:
Module.TTT = 1;
Module.CoolD = 4;
Module.Cost = 105;
Module.effect = "+300 Vit Shield";
break;
}
Module.warn = "";
}
break;
case "XSC": //Spell Charge Module
if(level != 1 && level != 3 && level != 5)
Module.warn = "Error: Module only compatible with Level: 1, 3, or 5. ";
else if(Atype!=="C" && Atype!=="U")
Module.warn = "Error: Module Exclusive to Caster Type Armor. ";
else
{
switch(level)
{
case 1:
Module.TTT = 2;
Module.CoolD = 1;
Module.Cost = 50;
Module.effect = "Charge a spell for up to 2 turns";
break;
case 3:
Module.TTT = 2;
Module.CoolD = 1;
Module.Cost = 50;
Module.effect = "Charge a spell for up to 3 turns";
break;
case 5:
Module.TTT = 2;
Module.CoolD = 1;
Module.Cost = 50;
Module.effect = "Charge a spell for up to 4 turns";
break;
}
Module.warn = "";
}
break;
case "C": //Counter Attack Module
if(level != 2 && level != 4 && level != 6)
Module.warn = "Error: Module only compatible with Level: 2, 4, or 6. ";
else
{
switch(level)
{
case 2:
Module.TTT = 2;
Module.CoolD = 0;
Module.Cost = 30;
Module.effect = `Counter Attack: Base=${parseInt(Con)*4} `;
break;
case 4:
Module.TTT = 4;
Module.CoolD = 0;
Module.Cost = 45;
Module.effect = `Counter Attack: Base=${parseInt(Con)*6} `;
break;
case 6:
Module.TTT = 6;
Module.CoolD = 0;
Module.Cost = 60;
Module.effect = `Counter Attack: Base=${parseInt(Con)*8} `;
break;
}
Module.warn = "";
}
break;
case "GB": //Guard Boost Module
if(level != 2 && level != 4 && level != 6)
Module.warn = "Error: Module only compatible with Level: 2, 4, or 6. ";
else
{
switch(level)
{
case 2:
Module.TTT = 2;
Module.CoolD = 3;
Module.Cost = 20;
Module.effect = "+ 50 GG; block with armor";
break;
case 3:
Module.TTT = 2;
Module.CoolD = 3;
Module.Cost = 40;
Module.effect = "+ 100 GG; block with armor";
break;
case 5:
Module.TTT = 2;
Module.CoolD = 3;
Module.Cost = 60;
Module.effect = "+ 150 GG; block with armor";
break;
case 6:
Module.TTT = 2;
Module.CoolD = 3;
Module.Cost = 80;
Module.effect = "+ 200 GG; block with armor";
break;
}
Module.warn = "";
}
break;
case "GR": //Guard Regeneration Module
switch(level)
{
case 1:
Module.TTT = 2;
Module.CoolD = 3;
Module.Cost = 20;
Module.effect = "+25 GG a turn for 3 turns";
break;
case 2:
Module.TTT = 2;
Module.CoolD = 3;
Module.Cost = 40;
Module.effect = "+50 GG a turn for 3 turns";
break;
case 3:
Module.TTT = 2;
Module.CoolD = 3;
Module.Cost = 60;
Module.effect = "+75 GG a turn for 3 turns";
break;
case 4:
Module.TTT = 4;
Module.CoolD = 4;
Module.Cost = 80;
Module.effect = "+100 GG a turn for 3 turns";
break;
case 5:
Module.TTT = 4;
Module.CoolD = 4;
Module.Cost = 100;
Module.effect = "+125 GG a turn for 3 turns";
break;
case 6:
Module.TTT = 4;
Module.CoolD = 4;
Module.Cost = 120;
Module.effect = "+150 GG a turn for 3 turns";
break;
}
Module.warn = "";
break;
case "EB": //Evasion Boost Module
if(level > 5 )
Module.warn = "Error: Module only compatible with Levels up to 5. ";
else
{
switch(level)
{
case 1:
Module.TTT = 2;
Module.CoolD = 2;
Module.Cost = 10;
Module.effect = "+30 Eva";
break;
case 2:
Module.TTT = 2;
Module.CoolD = 2;
Module.Cost = 20;
Module.effect = "+60 Eva";
break;
case 3:
Module.TTT = 3;
Module.CoolD = 2;
Module.Cost = 30;
Module.effect = "+90 Eva";
break;
case 4:
Module.TTT = 3;
Module.CoolD = 2;
Module.Cost = 40;
Module.effect = "+120 Eva";
break;
case 5:
Module.TTT = 3;
Module.CoolD = 2;
Module.Cost = 50;
Module.effect = "+150 Eva";
break;
}
Module.warn = "";
}
break;
case "RS": //Restore Spirit Module
if(level != 2 && level != 3 && level != 5 && level != 6)
Module.warn = "Error: Module only compatible with Level: 2,3,5, or 6. ";
else
{
switch(level)
{
case 2:
Module.TTT = 1;
Module.CoolD = 6;
Module.Cost = 200;
Module.effect = "Recover 50 Spirit";
break;
case 3:
Module.TTT = 1;
Module.CoolD = 6;
Module.Cost = 200;
Module.effect = "Recover 100 Spirit";
break;
case 5:
Module.TTT = 1;
Module.CoolD = 6;
Module.Cost = 300;
Module.effect = "Recover 150 Spirit";
break;
case 6:
Module.TTT = 1;
Module.CoolD = 6;
Module.Cost = 300;
Module.effect = "Recover 200 Spirit";
break;
}
Module.warn = "";
}
break;
case "NS": //Nueral Stress Relief Module
if(level > 5 )
Module.warn = "Error: Module only compatible with Levels upt o 5. ";
else
{
switch(level)
{
case 1:
Module.TTT = 1;
Module.CoolD = 3;
Module.Cost = 25;
Module.effect = "Reduce Pain by 30";
break;
case 2:
Module.TTT = 1;
Module.CoolD = 3;
Module.Cost = 30;
Module.effect = "Reduce Pain by 60";
break;
case 3:
Module.TTT = 1;
Module.CoolD = 3;
Module.Cost = 35;
Module.effect = "Reduce Pain by 90";
break;
case 4:
Module.TTT = 1;
Module.CoolD = 3;
Module.Cost = 40;
Module.effect = "Reduce Pain by 120";
break;
case 5:
Module.TTT = 1;
Module.CoolD = 3;
Module.Cost = 45;
Module.effect = "Reduce Pain by 150";
break;
}
Module.warn = "";
}
break;
case "EG": //Enhanced Gather Module
switch(level)
{
case 1:
Module.TTT = 0;
Module.CoolD = 3;
Module.Cost = 20;
Module.effect = "Gather 10 Extra Manna. +1 Saturation";
break;
case 2:
Module.TTT = 0;
Module.CoolD = 3;
Module.Cost = 30;
Module.effect = "Gather 30 Extra Manna. +2 Saturation";
break;
case 3:
Module.TTT = 0;
Module.CoolD = 3;
Module.Cost = 40;
Module.effect = "Gather 50 Extra Manna. +3 Saturation";
break;
case 4:
Module.TTT = 0;
Module.CoolD = 4;
Module.Cost = 50;
Module.effect = "Gather 70 Extra Manna. +4 Saturation";
break;
case 5:
Module.TTT = 0;
Module.CoolD = 4;
Module.Cost = 60;
Module.effect = "Gather 90 Extra Manna. +5 Saturation";
break;
case 6:
Module.TTT = 0;
Module.CoolD = 4;
Module.Cost = 70;
Module.effect = "Gather 110 Extra Manna. +6 Saturation";
break;
}
Module.warn = "";
break;
case "SR": //Saturation Replenishment Module
if(level != 1 && level != 3 && level != 5)
Module.warn = "Error: Module only compatible with Level: 1, 3, or 5. ";
else
{
switch(level)
{
case 1:
Module.TTT = 2;
Module.CoolD = 3;
Module.Cost = 35;
Module.effect = "Reduce Saturation by 10";
break;
case 3:
Module.TTT = 2;
Module.CoolD = 4;
Module.Cost = 70;
Module.effect = "Reduce Saturation by 15";
break;
case 5:
Module.TTT = 2;
Module.CoolD = 5;
Module.Cost = 105;
Module.effect = "Reduce Saturation by 20";
break;
}
Module.warn = "";
}
break;
case "RA": //Repair Armor Module
if(level != 2 && level != 3 && level != 5 && level != 6)
Module.warn = "Error: Module only compatible with Level: 2,3,5, or 6. ";
else
{
switch(level)
{
case 2:
Module.TTT = 1;
Module.CoolD = 8;
Module.Cost = 0;
Module.effect = "Restore 25% Max durability";
break;
case 3:
Module.TTT = 1;
Module.CoolD = 8;
Module.Cost = 0;
Module.effect = "Restore 50% Max durability";
break;
case 5:
Module.TTT = 1;
Module.CoolD = 8;
Module.Cost = 0;
Module.effect = "Restore 75% Max durability";
break;
case 6:
Module.TTT = 1;
Module.CoolD = 8;
Module.Cost = 0;
Module.effect = "Restore 100% Max durability";
break;
}
Module.warn = "";
}
break;
case "RH": //Restore Health Module
switch(level)
{
case 1:
Module.TTT = 2;
Module.CoolD = 2;
Module.Cost = 20;
Module.effect = "+25 Life-Force";
break;
case 2:
Module.TTT = 2;
Module.CoolD = 2;
Module.Cost = 40;
Module.effect = "+50 Life-Force";
break;
case 3:
Module.TTT = 2;
Module.CoolD = 3;
Module.Cost = 60;
Module.effect = "+75 Life-Force";
break;
case 4:
Module.TTT = 3;
Module.CoolD = 3;
Module.Cost = 80;
Module.effect = "+100 Life-Force";
break;
case 5:
Module.TTT = 3;
Module.CoolD = 4;
Module.Cost = 100;
Module.effect = "+125 Life-Force";
break;
case 6:
Module.TTT = 3;
Module.CoolD = 4;
Module.Cost = 120;
Module.effect = "+150 Life-Force";
break;
}
Module.warn = "";
break;
case "DP": //Disruption Purge Module
if(level != 2 && level != 3 && level != 5 && level != 6)
Module.warn = "Error: Module only compatible with Level: 2,3,5, or 6. ";
else
{
switch(level)
{
case 2:
Module.TTT = 2;
Module.CoolD = 3;
Module.Cost = 50;
Module.effect = "Remove 50 Disruption";
break;
case 3:
Module.TTT = 2;
Module.CoolD = 3;
Module.Cost = 75;
Module.effect = "Remove 100 Disruption";
break;
case 5:
Module.TTT = 2;
Module.CoolD = 3;
Module.Cost = 100;
Module.effect = "Remove 150 Disruption";
break;
case 6:
Module.TTT = 2;
Module.CoolD = 3;
Module.Cost = 125;
Module.effect = "Remove 200 Disruption";
break;
}
Module.warn = "";
}
break;
}
//console.log(Object.keys(Module));
return Module
}
Adjust_Race=function(Race)
{
let Base = {};
switch(Race)
{
case "Ciaha":
Base.Con = 3;
Base.Dis = 2;
Base.Res = 0;
Base.Int = 1;
Base.CA = 10;
Base.WA = 15;
Base.TE = 0;
Base.MT = 0;
Base.Be = 10;
Base.Me = 0;
Base.Se = 0;
Base.Mem = 5;
Base.SPG = 1;
Base.SKG = 2;
Base.SPB = 0;
Base.SKB = 10;
Base.Age = 20;
break;
case "Adept" :
Base.Con = 2;
Base.Dis = 3;
Base.Res = 0;
Base.Int = 1;
Base.CA = 15;
Base.WA = 5;
Base.TE = 0;
Base.MT = 5;
Base.Be = 5;
Base.Me = 0;
Base.Se = 10;
Base.Mem = 0;
Base.SPG = 1;
Base.SKG = 2;
Base.SPB = 0;
Base.SKB = 10;
Base.Age = 20;
break;
case "Magian" :
Base.Con = 1;
Base.Dis = 1;
Base.Res = 2;
Base.Int = 3;
Base.CA = 5;
Base.WA = 10;
Base.TE = 5;
Base.MT = 15;
Base.Be = 0;
Base.Me = 5;
Base.Se = 0;
Base.Mem = 5;
Base.SPG = 2;
Base.SKG = 1;
Base.SPB = 30;
Base.SKB = 0;
Base.Age = 20;
break;
case "Arbiter" :
Base.Con = 1;
Base.Dis = 1;
Base.Res = 1;
Base.Int = 3;
Base.CA = 5;
Base.WA = 10;
Base.TE = 15;
Base.MT = 5;
Base.Be = 0;
Base.Me = 10;
Base.Se = 0;
Base.Mem = 0;
Base.SPG = 1.5;
Base.SKG = 1.5;
Base.SPB = 5;
Base.SKB = 5;
Base.Age = 20;
break;
case "Necrian" :
Base.Con = 1;
Base.Dis = 1;
Base.Res = 3;
Base.Int = 2;
Base.CA = 10;
Base.WA = 10;
Base.TE = 0;
Base.MT = 10;
Base.Be = 5;
Base.Me = 5;
Base.Se = 5;
Base.Mem = 5;
Base.SPG = 1.5;
Base.SKG = 1.5;
Base.SPB = 0;
Base.SKB = 0;
Base.Age = 40;
break;
case "Celestial" :
Base.Con = 7;
Base.Dis = 7;
Base.Res = 7;
Base.Int = 7;
Base.CA = 30;
Base.WA = 30;
Base.TE = 0;
Base.MT = 50;
Base.Be = -10;
Base.Me = -10;
Base.Se = -10;
Base.Mem = -10;
Base.SPG = .5;
Base.SKG = .5;
Base.SPB = 0;
Base.SKB = 0;
Base.Age = 0;
break;
};
Base.R=Race;
return Base
}
Adjust_Battle=function(mainHand, offHand, style)
{
//weapon and style are rowids or "" if not previously assigned
if(mainHand === offHand || style ==="")//both main and off-hand cannot be empty or the same weapon
return
let Dual = {
[`dualweapon_base`]: 0,
[`dualweapon_acc`]: 0,
[`dualweapon_eva`]: 0,
[`dualweapon_gg`]: 0,
[`dualweapon_style`]: "Empty",
[`dualweapon-stress`]: 0,
[`dualweapon-scaling`]: 0,
[`dualweapon-positive-scaling`]: 0,
[`dualweapon-negative-scaling`]: 0
};
var rowids = [mainHand, offHand];
let getArray = [];
rowids.forEach(hand => {
if(hand.length > 0)
{
const lol = [`repeating_weapons_${hand}_weapon-name`,
`repeating_weapons_${hand}_weapon-req`,
`repeating_weapons_${hand}_weapon-stress`,
`repeating_weapons_${hand}_weapon-current-dur`,
`repeating_weapons_${hand}_weapon-maximum-dur`,
`repeating_weapons_${hand}_weapon-base`,
`repeating_weapons_${hand}_weapon-pscaling`,
`repeating_weapons_${hand}_weapon-nscaling`,
`repeating_weapons_${hand}_weapon-acc`,
`repeating_weapons_${hand}_weapon-type`];
getArray.push.apply(getArray, lol);
}
})
const styleAttrs = [`repeating_weapon-styles_${style}_style-name`,
`repeating_weapon-styles_${style}_style-acc`,
`repeating_weapon-styles_${style}_style-eva`,
`repeating_weapon-styles_${style}_style-gg`];
const styleComp = [`repeating_weapon-styles_${style}_style-S`,
`repeating_weapon-styles_${style}_style-H`,
`repeating_weapon-styles_${style}_style-SS`,
`repeating_weapon-styles_${style}_style-D`,
`repeating_weapon-styles_${style}_style-P`,
`repeating_weapon-styles_${style}_style-PS`,
`repeating_weapon-styles_${style}_style-HH`,
`repeating_weapon-styles_${style}_style-U`,
`repeating_weapon-styles_${style}_style-SH`];
const stats = ["char_constitution","char_discipline","char_weapon_arts","Power"];
if(style==="")
return
else
{
getArray.push.apply(getArray, stats);
getArray.push.apply(getArray, styleAttrs);
getArray.push.apply(getArray, styleComp);
}
getAttrs(getArray, function(battle) {
console.log(battle);
const Adjust = {};
const styleTypes = [];
var T = false;
var dualWield = false;
var priority = "primary";
var i = 0;
//checks if style compatibility is set and if Dual wield is enabled
styleComp.forEach(type => {
//console.log(type); // debugging
//console.log(Object.values(battle));
// 0 represents an empty checkbox button
if(battle[`${type}`]!="0")
{
styleTypes.push(battle[`${type}`]);
i++;
}
if(battle[`${type}`]==="D")
dualWield = true;
});
if(i==0)// no selected styles
{
setAttrs({
[`repeating_weapon-styles_${style}_weapon-style-warning`]: "WARNING: Missing Type Compatibility",
sheetTab: "styles"
});
return
}
rowids.forEach(hand=> {
if(hand.length > 0)
{
if(battle[`repeating_weapons_${hand}_weapon-req`] > battle["char_constitution"])
{
setAttrs({
[`repeating_weapons_${hand}_weapon-${priority}warning`]: "WARNING: Inadequate constitution",
sheetTab: "equipment"
});
return
}
if(battle[`repeating_weapons_${hand}_weapon-current-dur`]==0)
{
setAttrs({
[`repeating_weapons_${hand}_weapon-${priority}warning`]: "WARNING: Weapon Broken",
sheetTab: "equipment"
});
return
}
styleTypes.forEach(type => {
if(battle[`repeating_weapons_${hand}_weapon-type`]===type)
T = true;
})
if(T==false)
i = "WARNING: Weapon type not supported by style.";
else
i = "";
if(battle["Power"] > battle[`repeating_weapons_${hand}_weapon-stress`])
i += `\nWARNING: Weapon Stress Tolerance exceeded. Using the weapon (attack/blocking) with too much Power will destroy it.`;
var scaling = [battle[`repeating_weapons_${hand}_weapon-pscaling`], battle[`repeating_weapons_${hand}_weapon-nscaling`]];
let weapon = {
[`${priority}weapon`]: battle[`repeating_weapons_${hand}_weapon-name`],
[`${priority}weapon_base`]: battle[`repeating_weapons_${hand}_weapon-base`],
[`${priority}weapon_acc`]: parseInt(battle[`repeating_weapons_${hand}_weapon-acc`]) + parseInt(battle[`repeating_weapon-styles_${style}_style-acc`]) + 100 + parseInt(battle["char_weapon_arts"]),
[`${priority}weapon_eva`]: parseInt(battle[`repeating_weapon-styles_${style}_style-eva`]) + (parseInt(battle["char_discipline"]) *5),
[`${priority}weapon_gg`]: parseInt(battle[`repeating_weapon-styles_${style}_style-gg`]) + (parseInt(battle["char_discipline"]) *5),
[`${priority}weapon-stress`]: battle[`repeating_weapons_${hand}_weapon-stress`],
[`${priority}weapon-type`]: battle[`repeating_weapons_${hand}_weapon-type`],
[`${priority}weapon-scaling`]: `${scaling[0]} / ${scaling[1]}`,
[`${priority}weapon-positive-scaling`]: scaling[0],
[`${priority}weapon-negative-scaling`]: scaling[1],
[`${priority}weapon-rem-dur`]: battle[`repeating_weapons_${hand}_weapon-current-dur`]!=="" ? battle[`repeating_weapons_${hand}_weapon-maximum-dur`] : battle[`repeating_weapons_${hand}_weapon-current-dur`],
[`${priority}weapon-max-dur`]: battle[`repeating_weapons_${hand}_weapon-maximum-dur`],
[`weapon-warning`]: i,
["weapon-rem-dur"]: priority === "primary" ? battle[`repeating_weapons_${hand}_weapon-current-dur`] || 0 : 0
};
Object.assign(Adjust, weapon);
priority = "secondary";
}
})
if(dualWield == true && offHand!=="" && mainHand!=="")
{
//both weapons cannot be pole-arms, must be 1-handed, and neither can be shields
if(Adjust[`repeating_weapons_${mainHand}_weapon-type`]==="HH" || Adjust[`repeating_weapons_${offHand}_weapon-type`]==="HH")
dualWield = false;
if(Adjust[`repeating_weapons_${mainHand}_weapon-type`]==="P" && Adjust[`repeating_weapons_${offHand}_weapon-type`]==="P")
dualWield = false;
if(Adjust[`repeating_weapons_${mainHand}_weapon-type`]==="SH" || Adjust[`repeating_weapons_${offHand}_weapon-type`]==="SH")
{
daulWield = false;
shield = true;
}
if(dualWield == true)
{
Dual[`dualweapon_base`] = Adjust[`primaryweapon_base`] >= Adjust[`secondaryweapon_base`] ? Adjust[`primaryweapon_base`] : Adjust[`secondaryweapon_base`];
Dual[`dualweapon_acc`] = Adjust[`primaryweapon_acc`] - 100 + Adjust[`secondaryweapon_acc`] - parseInt(battle[`repeating_weapon-styles_${style}_style-acc`]) - parseInt(battle["char_weapon_arts"]);
Dual[`dualweapon_eva`] = Adjust[`primaryweapon_eva`];
Dual[`dualweapon_gg`] = Adjust[`primaryweapon_gg`];
Dual[`dualweapon_style`] = battle[`repeating_weapon-styles_${style}_style-name`];
Dual[`dualweapon-stress`] = Adjust[`primaryweapon-stress`] <= Adjust[`secondaryweapon-stress`] ? Adjust[`primaryweapon-stress`] : Adjust[`secondaryweapon-stress`];
Dual[`dualweapon-scaling`] = Adjust[`primaryweapon-scaling`];
Dual[`dualweapon-positive-scaling`] = Adjust[`primaryweapon-positive-scaling`] >= Adjust[`secondaryweapon-positive-scaling`] ? Adjust[`primaryweapon-positive-scaling`] : Adjust[`secondaryweapon-positive-scaling`];
Dual[`dualweapon-negative-scaling`] = Adjust[`primaryweapon-positive-scaling`] >= Adjust[`secondaryweapon-positive-scaling`] ? Adjust[`primaryweapon-negative-scaling`] : Adjust[`secondaryweapon-negative-scaling`];
}
}
//if(dualWield == false)
Object.assign(Adjust, Dual);
Adjust[`style-types`] = styleTypes.join(',') || "Error";
Adjust[`weapon_style`] = battle[`repeating_weapon-styles_${style}_style-name`];
console.log(Adjust);
setAttrs(Adjust);
});
}
//not used
function Async_Battle (mainHand, offHand, style)
{
getAttrs(getArray, function(battle) {
const Adjust = {}; //Final Object sent to setAttrs
const styleStats = {};
Object.keys(battle).filter(item => styleAttrs.includes(item)).forEach(key => styleStats[`${key}`] = battle[`${key}`]);
const statsObject = {};
Object.keys(battle).filter(item => statsArray.includes(item)).forEach(key => statsObject[`${key}`] = battle[`${key}`]);
setTimeout( async function(){
if(mainHand!=="")
Object.assign(Adjust, await new Promise((resolve) => resolve(Apply_Battle(mainHand, "primary", style, statsObject, styleTypes, styleStats))));
console.log(Adjust);
}, 500);
setTimeout( async function(){
if(offHand!=="")
Object.assign(Adjust, await new Promise((resolve) => resolve(Apply_Battle(offHand, "secondary", style, statsObject, styleTypes, styleStats))));
console.log(Adjust);
}, 500);
Adjust[`style-types`] = styleTypes.join(',') || "Error";
Adjust[`weapon_style`] = battle[`repeating_weapon-styles_${style}_style-name`];
console.log(Adjust);
setTimeout(setAttrs({Adjust}),3000);
});
}
Adjust_Energy=function(manna = true)
{
var defensive_measures = {
defend: "",
phasestep: "",
phasejump: "",
reflect: "",
absorb: "",
barrier: "",
cutter: "",
};
var foo = ["catalyst_mental","catalyst_body","catalyst_spirit","catalyst_memory","catalyst_demon","catalyst_necro"];
var bar = ["Energy_type","powerstate", "armor-totalttt"];
//if(!energies.length)
bar.push.apply(bar,foo);
getAttrs(bar, function(value){
//get attrs turns array of attributes into object properties specified here as "value"
var Stats = {};// Empty javascript Object. Different from roll20 object
//Stats.Power = 15; Example assignment of empty javascript-object properties made without declaration. "use strict" dissallows this notation
if(value.powerstate == 1)
Stats.TTT = 5 + value["armor-totalttt"];
else if(value.powerstate == .5)
Stats.TTT = (5 + value["armor-totalttt"]) *0.5;
else if(value.powerstate == 1.25)
Stats.TTT = (5 + value["armor-totalttt"]) *2;
if(manna==false)//if out of manna/demonic essence
{
if(value.Energy_type!=="necroforce")
{
defensive_measures.Power = 0;
defensive_measures.Endurance = 0;
defensive_measures.Speed = 0;
defensive_measures.Flight = 0;
defensive_measures.Char_TTT = Stats.TTT;
setAttrs(defensive_measures);
return
}
setAttrs(defensive_measures);
return
}
switch(value.Energy_type){
case "Mental" :
switch((Math.floor((parseInt(value.catalyst_mental)*value.powerstate)/5))*5){
case 0 :
Stats.Power = 0;
Stats.Endurance = 0;
Stats.Speed = 0;
Stats.Flight = 0;
break;
case 5 :
Stats.Power = 0;
Stats.Endurance = 0;
Stats.Speed = 1;
Stats.Flight = 0;
break;
case 10 :
Stats.Power = 0;
Stats.Endurance = 0;
Stats.Speed = 1;
Stats.Flight = 0;
break;
case 15 :
Stats.Power = 1;
Stats.Endurance = 0;
Stats.Speed = 1;
Stats.Flight = 1;
defensive_measures.phasejump = "active";
break;
case 20 :
Stats.Power = 1;
Stats.Endurance = 0;
Stats.Speed = 2;
Stats.Flight = 1;
defensive_measures.phasejump = "active";
break;
case 25 :
Stats.Power = 1;
Stats.Endurance = 1;
Stats.Speed = 2;
Stats.Flight = 1;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
break;
case 30 :
Stats.Power = 1;
Stats.Endurance = 1;
Stats.Speed = 2;
Stats.Flight = 1;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
break;
case 35 :
Stats.Power = 2;
Stats.Endurance = 1;
Stats.Speed = 3;
Stats.Flight = 2;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
break;
case 40 :
Stats.Power = 2;
Stats.Endurance = 1;
Stats.Speed = 3;
Stats.Flight = 2;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
break;
case 45 :
Stats.Power = 2;
Stats.Endurance = 1;
Stats.Speed = 3;
Stats.Flight = 2;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
break;
case 50 :
Stats.Power = 2;
Stats.Endurance = 2;
Stats.Speed = 4;
Stats.Flight = 2;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
break;
case 55 :
Stats.Power = 3;
Stats.Endurance = 2;
Stats.Speed = 4;
Stats.Flight = 3;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
break;
case 60 :
Stats.Power = 3;
Stats.Endurance = 2;
Stats.Speed = 4;
Stats.Flight = 3;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
break;
case 65 :
Stats.Power = 3;
Stats.Endurance = 2;
Stats.Speed = 5;
Stats.Flight = 3;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
break;
case 70 :
Stats.Power = 3;
Stats.Endurance = 2;
Stats.Speed = 5;
Stats.Flight = 3;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
break;
case 75 :
Stats.Power = 4;
Stats.Endurance = 3;
Stats.Speed = 5;
Stats.Flight = 4;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
case 80 :
Stats.Power = 4;
Stats.Endurance = 3;
Stats.Speed = 6;
Stats.Flight = 4;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
case 85 :
Stats.Power = 4;
Stats.Endurance = 3;
Stats.Speed = 6;
Stats.Flight = 4;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
case 90 :
Stats.Power = 4;
Stats.Endurance = 3;
Stats.Speed = 6;
Stats.Flight = 4;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
case 95 :
Stats.Power = 5;
Stats.Endurance = 3;
Stats.Speed = 7;
Stats.Flight = 5;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
case 100 :
Stats.Power = 5;
Stats.Endurance = 4;
Stats.Speed = 7;
Stats.Flight = 5;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
};
break;
case "Spirit" :
switch((Math.floor((parseInt(value.catalyst_spirit)*value.powerstate)/5))*5){
case 0 :
Stats.Power = 0;
Stats.Endurance = 0;
Stats.Speed = 1;
Stats.Flight = 1;
break;
case 5 :
Stats.Power = 0;
Stats.Endurance = 0;
Stats.Speed = 1;
Stats.Flight = 1;
defensive_measures.phasestep = "active";
break;
case 10 :
Stats.Power = 1;
Stats.Endurance = 1;
Stats.Speed = 1;
Stats.Flight = 1;
defensive_measures.phasestep = "active";
break;
case 15 :
Stats.Power = 1;
Stats.Endurance = 1;
Stats.Speed = 2;
Stats.Flight = 2;
defensive_measures.phasestep = "active";
defensive_measures.phasestep = "active";
break;
case 20 :
Stats.Power = 1;
Stats.Endurance = 2;
Stats.Speed = 2;
Stats.Flight = 2;
defensive_measures.phasestep = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
break;
case 25 :
Stats.Power = 2;
Stats.Endurance = 2;
Stats.Speed = 2;
Stats.Flight = 2;
defensive_measures.phasestep = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
break;
case 30 :
Stats.Power = 2;
Stats.Endurance = 2;
Stats.Speed = 3;
Stats.Flight = 3;
defensive_measures.phasestep = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
break;
case 35 :
Stats.Power = 2;
Stats.Endurance = 3;
Stats.Speed = 3;
Stats.Flight = 3;
defensive_measures.phasestep = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
break;
case 40 :
Stats.Power = 3;
Stats.Endurance = 3;
Stats.Speed = 3;
Stats.Flight = 3;
defensive_measures.phasestep = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
break;
case 45 :
Stats.Power = 3;
Stats.Endurance = 3;
Stats.Speed = 4;
Stats.Flight = 4;
defensive_measures.phasestep = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
break;
case 50 :
Stats.Power = 3;
Stats.Endurance = 4;
Stats.Speed = 4;
Stats.Flight = 4;
defensive_measures.phasestep = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
break;
case 55 :
Stats.Power = 4;
Stats.Endurance = 4;
Stats.Speed = 4;
Stats.Flight = 4;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
case 60 :
Stats.Power = 4;
Stats.Endurance = 4;
Stats.Speed = 5;
Stats.Flight = 5;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
case 65 :
Stats.Power = 4;
Stats.Endurance = 5;
Stats.Speed = 5;
Stats.Flight = 5;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
case 70 :
Stats.Power = 5;
Stats.Endurance = 5;
Stats.Speed = 5;
Stats.Flight = 5;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
case 75 :
Stats.Power = 5;
Stats.Endurance = 5;
Stats.Speed = 6;
Stats.Flight = 6;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
case 80 :
Stats.Power = 5;
Stats.Endurance = 6;
Stats.Speed = 6;
Stats.Flight = 6;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
case 85 :
Stats.Power = 6;
Stats.Endurance = 6;
Stats.Speed = 6;
Stats.Flight = 6;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
case 90 :
Stats.Power = 6;
Stats.Endurance = 6;
Stats.Speed = 7;
Stats.Flight = 7;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
case 95 :
Stats.Power = 6;
Stats.Endurance = 7;
Stats.Speed = 7;
Stats.Flight = 7;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
case 100 :
Stats.Power = 7;
Stats.Endurance = 7;
Stats.Speed = 7;
Stats.Flight = 7;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
};
break;
case "Memory" :
switch((Math.floor((parseInt(value.catalyst_memory)*value.powerstate)/5))*5){
case 0 :
Stats.Power = 0;
Stats.Endurance = 1;
Stats.Speed = 0;
Stats.Flight = 0;
break;
case 5 :
Stats.Power = 1;
Stats.Endurance = 1;
Stats.Speed = 0;
Stats.Flight = 0;
defensive_measures.defend = "active";
break;
case 10 :
Stats.Power = 1;
Stats.Endurance = 1;
Stats.Speed = 0;
Stats.Flight = 0;
defensive_measures.defend = "active";
break;
case 15 :
Stats.Power = 1;
Stats.Endurance = 2;
Stats.Speed = 0;
Stats.Flight = 1;
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
break;
case 20 :
Stats.Power = 2;
Stats.Endurance = 2;
Stats.Speed = 1;
Stats.Flight = 1;
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
break;
case 25 :
Stats.Power = 2;
Stats.Endurance = 2;
Stats.Speed = 1;
Stats.Flight = 1;
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
break;
case 30 :
Stats.Power = 2;
Stats.Endurance = 3;
Stats.Speed = 1;
Stats.Flight = 2;
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
break;
case 35 :
Stats.Power = 3;
Stats.Endurance = 3;
Stats.Speed = 1;
Stats.Flight = 2;
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
defensive_measures.absorb = "active";
break;
case 40 :
Stats.Power = 3;
Stats.Endurance = 3;
Stats.Speed = 2;
Stats.Flight = 2;
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
defensive_measures.absorb = "active";
defensive_measures.barrier = "active";
break;
case 45 :
Stats.Power = 3;
Stats.Endurance = 4;
Stats.Speed = 2;
Stats.Flight = 3;
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
defensive_measures.absorb = "active";
defensive_measures.barrier = "active";
break;
case 50 :
Stats.Power = 4;
Stats.Endurance = 4;
Stats.Speed = 2;
Stats.Flight = 3;
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
defensive_measures.absorb = "active";
defensive_measures.barrier = "active";
break;
case 55 :
Stats.Power = 4;
Stats.Endurance = 4;
Stats.Speed = 2;
Stats.Flight = 3;
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
defensive_measures.absorb = "active";
defensive_measures.barrier = "active";
break;
case 60 :
Stats.Power = 4;
Stats.Endurance = 5;
Stats.Speed = 3;
Stats.Flight = 4;
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
defensive_measures.absorb = "active";
defensive_measures.barrier = "active";
break;
case 65 :
Stats.Power = 5;
Stats.Endurance = 5;
Stats.Speed = 3;
Stats.Flight = 4;
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
defensive_measures.absorb = "active";
defensive_measures.barrier = "active";
break;
case 70 :
Stats.Power = 5;
Stats.Endurance = 5;
Stats.Speed = 3;
Stats.Flight = 4;
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
defensive_measures.absorb = "active";
defensive_measures.barrier = "active";
break;
case 75 :
Stats.Power = 5;
Stats.Endurance = 6;
Stats.Speed = 3;
Stats.Flight = 5;
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
defensive_measures.absorb = "active";
defensive_measures.barrier = "active";
break;
case 80 :
Stats.Power = 6;
Stats.Endurance = 6;
Stats.Speed = 4;
Stats.Flight = 5;
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
defensive_measures.absorb = "active";
defensive_measures.barrier = "active";
break;
case 85 :
Stats.Power = 6;
Stats.Endurance = 6;
Stats.Speed = 4;
Stats.Flight = 5;
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
defensive_measures.absorb = "active";
defensive_measures.barrier = "active";
break;
case 90 :
Stats.Power = 6;
Stats.Endurance = 7;
Stats.Speed = 4;
Stats.Flight = 6;
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
defensive_measures.absorb = "active";
defensive_measures.barrier = "active";
break;
case 95 :
Stats.Power = 7;
Stats.Endurance = 7;
Stats.Speed = 4;
Stats.Flight = 6;
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
defensive_measures.absorb = "active";
defensive_measures.barrier = "active";
break;
case 100 :
Stats.Power = 7;
Stats.Endurance = 7;
Stats.Speed = 5;
Stats.Flight = 6;
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
defensive_measures.absorb = "active";
defensive_measures.barrier = "active";
break;
};
break;
case "Body" :
switch((Math.floor((parseInt(value.catalyst_body)*value.powerstate)/5))*5){
case 0 :
Stats.Power = 1;
Stats.Endurance = 0;
Stats.Speed = 0;
Stats.Flight = 0;
break;
case 5 :
Stats.Power = 1;
Stats.Endurance = 0;
Stats.Speed = 0;
Stats.Flight = 0;
defensive_measures.reflect = "active";
break;
case 10 :
Stats.Power = 1;
Stats.Endurance = 0;
Stats.Speed = 0;
Stats.Flight = 1;
defensive_measures.reflect = "active";
break;
case 15 :
Stats.Power = 2;
Stats.Endurance = 0;
Stats.Speed = 1;
Stats.Flight = 1;
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
break;
case 20 :
Stats.Power = 2;
Stats.Endurance = 1;
Stats.Speed = 1;
Stats.Flight = 1;
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
break;
case 25 :
Stats.Power = 2;
Stats.Endurance = 1;
Stats.Speed = 1;
Stats.Flight = 2;
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
break;
case 30 :
Stats.Power = 3;
Stats.Endurance = 1;
Stats.Speed = 2;
Stats.Flight = 2;
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
break;
case 35 :
Stats.Power = 3;
Stats.Endurance = 1;
Stats.Speed = 2;
Stats.Flight = 2;
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
break;
case 40 :
Stats.Power = 3;
Stats.Endurance = 2;
Stats.Speed = 2;
Stats.Flight = 3;
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
defensive_measures.defend = "active";
break;
case 45 :
Stats.Power = 4;
Stats.Endurance = 2;
Stats.Speed = 3;
Stats.Flight = 3;
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
defensive_measures.defend = "active";
defensive_measures.absorb = "active";
break;
case 50 :
Stats.Power = 4;
Stats.Endurance = 2;
Stats.Speed = 3;
Stats.Flight = 3;
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
defensive_measures.defend = "active";
defensive_measures.absorb = "active";
break;
case 55 :
Stats.Power = 4;
Stats.Endurance = 2;
Stats.Speed = 3;
Stats.Flight = 4;
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
defensive_measures.defend = "active";
defensive_measures.absorb = "active";
break;
case 60 :
Stats.Power = 5;
Stats.Endurance = 3;
Stats.Speed = 4;
Stats.Flight = 4;
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
defensive_measures.defend = "active";
defensive_measures.absorb = "active";
defensive_measures.barrier = "active";
break;
case 65 :
Stats.Power = 5;
Stats.Endurance = 3;
Stats.Speed = 4;
Stats.Flight = 4;
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
defensive_measures.defend = "active";
defensive_measures.absorb = "active";
defensive_measures.barrier = "active";
break;
case 70 :
Stats.Power = 5;
Stats.Endurance = 3;
Stats.Speed = 4;
Stats.Flight = 5;
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
defensive_measures.defend = "active";
defensive_measures.absorb = "active";
defensive_measures.barrier = "active";
break;
case 75 :
Stats.Power = 6;
Stats.Endurance = 3;
Stats.Speed = 5;
Stats.Flight = 5;
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
defensive_measures.defend = "active";
defensive_measures.absorb = "active";
defensive_measures.barrier = "active";
break;
case 80 :
Stats.Power = 6;
Stats.Endurance = 4;
Stats.Speed = 5;
Stats.Flight = 5;
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
defensive_measures.defend = "active";
defensive_measures.absorb = "active";
defensive_measures.barrier = "active";
break;
case 85 :
Stats.Power = 6;
Stats.Endurance = 4;
Stats.Speed = 5;
Stats.Flight = 6;
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
defensive_measures.defend = "active";
defensive_measures.absorb = "active";
defensive_measures.barrier = "active";
break;
case 90 :
Stats.Power = 7;
Stats.Endurance = 4;
Stats.Speed = 6;
Stats.Flight = 6;
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
defensive_measures.defend = "active";
defensive_measures.absorb = "active";
defensive_measures.barrier = "active";
break;
case 95 :
Stats.Power = 7;
Stats.Endurance = 4;
Stats.Speed = 6;
Stats.Flight = 6;
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
defensive_measures.defend = "active";
defensive_measures.absorb = "active";
defensive_measures.barrier = "active";
break;
case 100 :
Stats.Power = 7;
Stats.Endurance = 5;
Stats.Speed = 6;
Stats.Flight = 7;
defensive_measures.reflect = "active";
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
defensive_measures.defend = "active";
defensive_measures.absorb = "active";
defensive_measures.barrier = "active";
break;
};
break;
case "necroforce" :
switch((Math.floor((parseInt(value.catalyst_necro)*value.powerstate)/5))*5){
case 0 :
Stats.Power = 0;
Stats.Endurance = 0;
Stats.Speed = 1;
Stats.Flight = 1;
break;
case 5 :
Stats.Power = 0;
Stats.Endurance = 0;
Stats.Speed = 1;
Stats.Flight = 1;
defensive_measures.phasestep = "active";
break;
case 10 :
Stats.Power = 1;
Stats.Endurance = 1;
Stats.Speed = 1;
Stats.Flight = 1;
defensive_measures.phasestep = "active";
break;
case 15 :
Stats.Power = 1;
Stats.Endurance = 1;
Stats.Speed = 2;
Stats.Flight = 2;
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
break;
case 20 :
Stats.Power = 1;
Stats.Endurance = 2;
Stats.Speed = 2;
Stats.Flight = 2;
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
defensive_measures.defend = "active";
break;
case 25 :
Stats.Power = 2;
Stats.Endurance = 2;
Stats.Speed = 2;
Stats.Flight = 2;
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
defensive_measures.defend = "active";
break;
case 30 :
Stats.Power = 2;
Stats.Endurance = 2;
Stats.Speed = 3;
Stats.Flight = 3;
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
defensive_measures.defend = "active";
break;
case 35 :
Stats.Power = 2;
Stats.Endurance = 3;
Stats.Speed = 3;
Stats.Flight = 3;
defensive_measures.phasestep = "active";
defensive_measures.phasejump = "active";
defensive_measures.defend = "active";
break;
case 40 :
Stats.Power = 3;
Stats.Endurance = 3;
Stats.Speed = 3;
Stats.Flight = 3;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
break;
case 45 :
Stats.Power = 3;
Stats.Endurance = 3;
Stats.Speed = 4;
Stats.Flight = 4;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
break;
case 50 :
Stats.Power = 3;
Stats.Endurance = 4;
Stats.Speed = 4;
Stats.Flight = 4;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
break;
case 55 :
Stats.Power = 4;
Stats.Endurance = 4;
Stats.Speed = 4;
Stats.Flight = 4;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
case 60 :
Stats.Power = 4;
Stats.Endurance = 4;
Stats.Speed = 5;
Stats.Flight = 5;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
case 65 :
Stats.Power = 4;
Stats.Endurance = 5;
Stats.Speed = 5;
Stats.Flight = 5;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
case 70 :
Stats.Power = 5;
Stats.Endurance = 5;
Stats.Speed = 5;
Stats.Flight = 5;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
case 75 :
Stats.Power = 5;
Stats.Endurance = 5;
Stats.Speed = 6;
Stats.Flight = 6;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
case 80 :
Stats.Power = 5;
Stats.Endurance = 6;
Stats.Speed = 6;
Stats.Flight = 6;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
case 85 :
Stats.Power = 6;
Stats.Endurance = 6;
Stats.Speed = 6;
Stats.Flight = 6;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
case 90 :
Stats.Power = 6;
Stats.Endurance = 6;
Stats.Speed = 7;
Stats.Flight = 7;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
case 95 :
Stats.Power = 6;
Stats.Endurance = 7;
Stats.Speed = 7;
Stats.Flight = 7;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
case 100 :
Stats.Power = 7;
Stats.Endurance = 7;
Stats.Speed = 7;
Stats.Flight = 7;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
};
break;
case "Demon" :
switch((Math.floor((parseInt(value.catalyst_demon)*value.powerstate)/5))*5){
case 0 :
Stats.Power = 0;
Stats.Endurance = 0;
Stats.Speed = 1;
Stats.Flight = 1;
break;
case 5 :
Stats.Power = 0;
Stats.Endurance = 0;
Stats.Speed = 1;
Stats.Flight = 1;
defensive_measures.phasestep = "active";
break;
case 10 :
Stats.Power = 1;
Stats.Endurance = 1;
Stats.Speed = 1;
Stats.Flight = 1;
defensive_measures.phasestep = "active";
break;
case 15 :
Stats.Power = 1;
Stats.Endurance = 1;
Stats.Speed = 2;
Stats.Flight = 2;
defensive_measures.phasestep = "active";
defensive_measures.phasestep = "active";
break;
case 20 :
Stats.Power = 1;
Stats.Endurance = 2;
Stats.Speed = 2;
Stats.Flight = 2;
defensive_measures.phasestep = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
break;
case 25 :
Stats.Power = 2;
Stats.Endurance = 2;
Stats.Speed = 2;
Stats.Flight = 2;
defensive_measures.phasestep = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
break;
case 30 :
Stats.Power = 2;
Stats.Endurance = 2;
Stats.Speed = 3;
Stats.Flight = 3;
defensive_measures.phasestep = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
break;
case 35 :
Stats.Power = 2;
Stats.Endurance = 3;
Stats.Speed = 3;
Stats.Flight = 3;
defensive_measures.phasestep = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
break;
case 40 :
Stats.Power = 3;
Stats.Endurance = 3;
Stats.Speed = 3;
Stats.Flight = 3;
defensive_measures.phasestep = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
break;
case 45 :
Stats.Power = 3;
Stats.Endurance = 3;
Stats.Speed = 4;
Stats.Flight = 4;
defensive_measures.phasestep = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
break;
case 50 :
Stats.Power = 3;
Stats.Endurance = 4;
Stats.Speed = 4;
Stats.Flight = 4;
defensive_measures.phasestep = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
break;
case 55 :
Stats.Power = 4;
Stats.Endurance = 4;
Stats.Speed = 4;
Stats.Flight = 4;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
case 60 :
Stats.Power = 4;
Stats.Endurance = 4;
Stats.Speed = 5;
Stats.Flight = 5;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
case 65 :
Stats.Power = 4;
Stats.Endurance = 5;
Stats.Speed = 5;
Stats.Flight = 5;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
case 70 :
Stats.Power = 5;
Stats.Endurance = 5;
Stats.Speed = 5;
Stats.Flight = 5;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
case 75 :
Stats.Power = 5;
Stats.Endurance = 5;
Stats.Speed = 6;
Stats.Flight = 6;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
case 80 :
Stats.Power = 5;
Stats.Endurance = 6;
Stats.Speed = 6;
Stats.Flight = 6;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
case 85 :
Stats.Power = 6;
Stats.Endurance = 6;
Stats.Speed = 6;
Stats.Flight = 6;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
case 90 :
Stats.Power = 6;
Stats.Endurance = 6;
Stats.Speed = 7;
Stats.Flight = 7;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
case 95 :
Stats.Power = 6;
Stats.Endurance = 7;
Stats.Speed = 7;
Stats.Flight = 7;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
case 100 :
Stats.Power = 7;
Stats.Endurance = 7;
Stats.Speed = 7;
Stats.Flight = 7;
defensive_measures.phasejump = "active";
defensive_measures.phasestep = "active";
defensive_measures.defend = "active";
defensive_measures.reflect = "active";
defensive_measures.barrier = "active";
defensive_measures.absorb = "active";
break;
};
break;
}
//activate techniques
//wrote Stat switch case first and don't feel like changing it, so defensive measures becomes the object sent to setAttrs
defensive_measures.Power = Stats.Power;
defensive_measures.Endurance = Stats.Endurance;
defensive_measures.Speed = Stats.Speed;
defensive_measures.Flight = Stats.Flight;
defensive_measures.Char_TTT = Stats.TTT;
setAttrs(defensive_measures);
});
}
</script>