Files
roll20-character-sheets/Generation/genCharR20sheet.html
T
Cacealeos 9c9b1ff2bd Update genCharR20sheet.html
Changed Layout
Fixed Module Bugs
Fixed Labels/Spelling
Made Adjustable and trackable TTT/Vitality changes
Added Turn to Turn Guard Guage button
2021-02-20 22:59:13 -08:00

4256 lines
181 KiB
HTML

<div>
<button type="action" name="act_character" >Character</button>
<button type="action" name="act_equipment" >Equipment</button>
<button type="action" name="act_styles" >Styles</button>
<button type="action" name="act_spells" >Spells</button>
<button type="action" name="act_passives" >Passives</button>
<button type="action" name="act_energytechniques" >Energy tech</button>
<button type="action" name="act_meleetechniques" >Melee tech</button>
<button type="action" name="act_inventory" >Inventory</button>
<button type="action" name="act_training" >Training</button>
<!-- <button type="action" name="act_memories" >Mind</button>-->
<!-- <button type="action" name="act_minions" >Minions</button>-->
</div>
<input type='hidden' class='sheet-tabstoggle' name='attr_sheetTab' value='character' />
<div class='sheet-character'>
<br>
<b>Level: </b>
<input name="attr_Char_Level" value="@{attr_Char_Level}" max=100 min=0 />
<button type="action" name="act_AddLevel" >Add</button> <!-- disabled = "true"-->
<button type="action" name="act_Add10Level" >Add 10</button>
<button type="action" name="act_ResetLevel" >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 class='2colrow'>
<div class='col'>
<b>Skill Points: </b>
<input name="attr_skill_points" value="@{attr_skill_points}" title="Remaining Spendable Skill Points" readonly="readonly" />
<button type='action' name='act_add_skill_points' style="padding: 0; font-family: 'Pictos'">{</button>
<button type='action' name='act_minus_skill_points' style="padding: 0; font-family: 'Pictos'">}</button>
<br>
<b>Spell Points: </b>
<input name="attr_spell_points" value="@{attr_spell_points}" title="Remaining Spendable Spell Points" readonly="readonly" />
<button type='action' name='act_add_spell_points' style="padding: 0; font-family: 'Pictos'">{</button>
<button type='action' name='act_minus_spell_points' style="padding: 0; font-family: 'Pictos'">}</button>
</div>
<div class='col'>
<b>Extra Skill Points: </b>
<input name="attr_Exskill_points" value="@{attr_Exskill_points}" title="Total Accumlated Extra Skill Points" readonly="readonly" />
<button type='action' name='act_add_Exskill_points' style="padding: 0; font-family: 'Pictos'">{</button>
<button type='action' name='act_minus_Exskill_points' style="padding: 0; font-family: 'Pictos'">}</button>
<br>
<b>Extra Spell Points: </b>
<input name="attr_Exspell_points" value="@{attr_Exspell_points}" title="Total Accumlated Extra Spell Points" readonly="readonly" />
<button type='action' name='act_add_Exspell_points' style="padding: 0; font-family: 'Pictos'">{</button>
<button type='action' name='act_minus_Exspell_points' style="padding: 0; font-family: 'Pictos'">}</button>
</div>
</div>
<div>
<b>Age</b>
<input type="number" name="attr_Age" value="@{attr_Age}" title="Character Age" style='width: 50px;' max=500 min=0 />
<b>Manna Training</b>
<input type="number" name="attr_Char_Manna_Training" value=0 style='width: 50px;' max=100 min=0/>
<b>Difficulty</b>
<input name="attr_Difficulty" value="@{attr_Difficulty}" title="Character Difficulty" readonly="readonly" />
</div>
<br>
<div class='2colrow'>
<div class='col'>
<label>Stats</label>
<b>Constitution:</b><input name="attr_char_constitution" value="@{attr_char_constitution}" title="constitution" readonly="readonly" max="10" min="0" />
<div style='display: inline'>
<button type='action' name='act_add_constitution' style="padding: 0; font-family: 'Pictos'">{</button>
<button type='action' name='act_minus_constitution' style="padding: 0; font-family: 'Pictos'">}</button>
</div>
<br>
<b>Discipline:</b><input name="attr_char_discipline" value="@{attr_char_discipline}" title="discipline" readonly="readonly" max="10" min="0" />
<div style='display: inline'>
<button type='action' name='act_add_discipline' style="padding: 0; font-family: 'Pictos'">{</button>
<button type='action' name='act_minus_discipline' style="padding: 0; font-family: 'Pictos'">}</button>
</div>
<br>
<b>Resistance:</b><input name="attr_char_resistance" value="@{attr_char_resistance}" title="resistance" readonly="readonly" max="10" min="0" />
<div style='display: inline'>
<button type='action' name='act_add_resistance' style="padding: 0; font-family: 'Pictos'">{</button>
<button type='action' name='act_minus_resistance' style="padding: 0; font-family: 'Pictos'">}</button>
</div>
<br>
<b>Intelligence:</b><input name="attr_char_intelligence" value="@{attr_char_intelligence}" title="intelligence" readonly="readonly" max="10" min="0" />
<div style='display: inline'>
<button type='action' name='act_add_intelligence' style="padding: 0; font-family: 'Pictos'">{</button>
<button type='action' name='act_minus_intelligence' style="padding: 0; font-family: 'Pictos'">}</button>
</div>
<br>
<br>
<label>Skills</label>
<b>Combat Arts:</b><input name="attr_char_combat_arts" value="@{attr_char_combat_arts}" title="Combat Arts" readonly="readonly" max="100" min="0" />
<div style='display: inline'>
<button type='action' name='act_add_combat_arts' style="padding: 0; font-family: 'Pictos'">{</button>
<button type='action' name='act_minus_combat_arts' style="padding: 0; font-family: 'Pictos'">}</button>
</div>
<br>
<b>Weapon Arts:</b><input name="attr_char_weapon_arts" value="@{attr_char_weapon_arts}" title="Weapon Arts" readonly="readonly" max="100" min="0" />
<div style='display: inline'>
<button type='action' name='act_add_weapon_arts' style="padding: 0; font-family: 'Pictos'">{</button>
<button type='action' name='act_minus_weapon_arts' style="padding: 0; font-family: 'Pictos'">}</button>
</div>
<br>
<b>Magi-Tech:</b><input name="attr_char_magitech" value="@{attr_char_magitech}" title="Mage tech" readonly="readonly" max="100" min="0" />
<div style='display: inline'>
<button type='action' name='act_add_magitech' style="padding: 0; font-family: 'Pictos'">{</button>
<button type='action' name='act_minus_magitech' style="padding: 0; font-family: 'Pictos'">}</button>
</div>
<br>
<b>Tech:</b><input name="attr_char_tech" value="@{attr_char_tech}" title="tech" readonly="readonly" max="100" min="0" />
<div style='display: inline'>
<button type='action' name='act_add_tech' style="padding: 0; font-family: 'Pictos'">{</button>
<button type='action' name='act_minus_tech' style="padding: 0; font-family: 'Pictos'">}</button>
</div>
<br>
</div>
<div class='col'>
<input class='sheet-halfbreed' type='hidden' name='attr_halfbreed' value='0' >
<input class='sheet-deathcovenant' type='hidden' name='attr_deathcovenant' value='0' >
<label>Catalyst Proficiency</label>
<b>Mental Energy:</b><input name="attr_catalyst_mental" value="@{catalyst_mental}*@{powerstate}" title="Mental Energy" readonly="readonly" />
<div style='display: inline'>
<button type='action' name='act_add_catalyst_mental' style="padding: 0; font-family: 'Pictos'">{</button>
<button type='action' name='act_minus_catalyst_mental' style="padding: 0; font-family: 'Pictos'">}</button>
</div>
<br>
<b>Body Energy:</b><input name="attr_catalyst_body" value="@{catalyst_body}*@{powerstate}" title="Body Energy" readonly="readonly" />
<div style='display: inline'>
<button type='action' name='act_add_catalyst_body' style="padding: 0; font-family: 'Pictos'">{</button>
<button type='action' name='act_minus_catalyst_body' style="padding: 0; font-family: 'Pictos'">}</button>
</div>
<br>
<b>Spirit Energy:</b><input name="attr_catalyst_spirit" value="@{catalyst_spirit}*@{powerstate}" title="Spirit Energy" readonly="readonly" />
<div style='display: inline'>
<button type='action' name='act_add_catalyst_spirit' style="padding: 0; font-family: 'Pictos'">{</button>
<button type='action' name='act_minus_catalyst_spirit' style="padding: 0; font-family: 'Pictos'">}</button>
</div>
<br>
<b>Memory Energy:</b><input name="attr_catalyst_memory" value="@{catalyst_memory}*@{powerstate})" title="Memory Energy" readonly="readonly" />
<div style='display: inline'>
<button type='action' name='act_add_catalyst_memory' style="padding: 0; font-family: 'Pictos'">{</button>
<button type='action' name='act_minus_catalyst_memory' style="padding: 0; font-family: 'Pictos'">}</button>
</div>
<br>
<div class='sheet-demon' >
<b>Demon Energy:</b><input name="attr_catalyst_demon" value="@{catalyst_demon}*@{powerstate}" title="Demon Energy" readonly="readonly" />
<button type='action' name='act_add_catalyst_demon' style="padding: 0; font-family: 'Pictos'">{</button>
<button type='action' name='act_minus_catalyst_demon' style="padding: 0; font-family: 'Pictos'">}</button>
</div>
<br>
<div class='sheet-necro' >
<b>Necro-Force:</b><input name="attr_catalyst_necro" value="@{catalyst_necro}*@{powerstate}" title="necro Force" readonly="readonly" />
<button type='action' name='act_add_catalyst_necro' style="padding: 0; font-family: 'Pictos'">{</button>
<button type='action' name='act_minus_catalyst_necro' style="padding: 0; font-family: 'Pictos'">}</button>
</div>
<br>
<br>
<label>Covenants</label>
<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>
</div>
<br>
<label style='text-align: center'>VITALITY & STATUS</label>
<span>Life-Force:</span><input type="number" name="attr_Char_Life_Force" value="@{attr_Char_Life_Force}" title="Life-Force" />
<span>Spirit:</span><input type="number" name="attr_Char_Spirit_Force" value="200" title="Spirit" style='width: 50px;' max=500 min=0 />
<span>Soul:</span><input type="number" name="attr_Char_Soul_Force" value="300" title="Soul" style='width: 50px;' max=1000 min=0 />
<span>Manna:</span><input type="number" name="attr_Char_Manna" value="@{attr_Char_Manna}" title="Manna" />
<div class='sheet-demon' style='display: inline-block'>
<span>Demonic Essence:</span><input type="number" name="attr_Char_Demon" value="@{attr_Char_Demon}" title="Demonic Essence" />
</div>
<span>Disruption:</span><input type="number" name="attr_Disruption" value="@{attr_Disruption}" title="Disruption Meter" />
<span>Pain:</span><input type="number" name="attr_Pain" value="@{attr_Pain}" title="Pain Meter" />
<input type='hidden' name="attr_Capacity" value="@{attr_Capacity}" title="Mental Capacity" readonly="readonly" />
<br>
<span>TTT:</span><input name="attr_Char_TTT" value="@{attr_Char_TTT}" title="Turn-to-Turn Cost (TTT)" readonly="readonly" />
<br>
<label>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 name='attr_dismembered'>
<option>None</option>
<option>Arm</option>
<option>Leg</option>
<option>Arm & Leg</option>
<option>Decapitation</option>
</select>
<span>(Dismemberment)</span>
</label>
<label style='text-align: center'>C O M B A T</label>
<div class='sheet-center'>
<b>Turn Economy:</b><input type=number name='attr_economy' value=100 style='width: 50px;' max=100 min=0>
</div>
<div class='sheet-center'>
<button type=action name='act_gather' style='height: 25px; width: 100px; font-size: 10px'>GATHER</button>
<button type=action name='act_endTurn' style='height: 35px; width: 200px; font-size: 20px'>END TURN</button>
<button type=action name='act_vitalize' style='height: 25px; width: 100px; font-size: 10px'>VITALIZE</button>
</div>
<br>
<!--*************************************************************************************-->
<div class='3colrow'>
<!--************************************** HIDDEN ATTRIBUTES ******************************<span>Mental Cap:</span>-->
<input type="hidden" name="attr_equipped-weapon" />
<input type="hidden" name="attr_equipped-weapon-style" />
<input type="hidden" name="attr_weapon-warning" />
<input type="hidden" name="attr_armor-warning" />
<input type="hidden" value="@{attr_Capacity}//@{attr_catalyst_memory+attr_catalyst_mental}" title="Mental Capacity" readonly="readonly" />
<!--************************************** HIDDEN ATTRIBUTES ******************************-->
<div class='col'>
<label>Weapon Arts</label>
<br>
<b>Acc:</b><input name="attr_weapon_acc" value="@{attr_weapon_acc}" title="Total Accuracy" readonly="readonly"/>
<br>
<b>Eva:</b><input name="attr_weapon_eva" value="@{attr_weapon_eva}" title="Total Evasion" readonly="readonly"/>
<br>
<b>GG:</b><input name="attr_weapon_gg" value="@{attr_weapon_gg}" title="Total Guard Gauge" readonly="readonly"/>
<br>
<b>Style:</b><input name="attr_weapon_style" value="@{attr_weapon_style}" title="Current Style" readonly="readonly"/>
<br>
<b>Comp:</b><input name="attr_style-types" value="@{attr_style-types}" title="Style Compatibility" readonly="readonly" />
<br>
<br>
<label>Weapon</label>
<b>Name:</b><input name="attr_weapon" value="@{attr_weapon}" title="Equiped Weapon" readonly="readonly"/>
<br>
<b>Type:</b><input name="attr_weapon-type" value="@{attr_weapon-type}" title="Weapon Type" readonly="readonly"/>
<br>
<b>Base:</b><input name="attr_weapon_base" value="@{attr_weapon_base}" title="Base Damage" readonly="readonly"/>
<br>
<b>Scale:</b><input name="attr_weapon-scaling" value="@{attr_weapon-scaling}" title= "Scaling (P/N)" readonly="readonly"/>
<br>
<b>Stress:</b><input name="attr_weapon-stress" value="@{attr_weapon-stress}" title= "Scaling (P/N)" readonly="readonly"/>
<br>
<b>Dur:</b><input name="attr_weapon-rem-dur" value="@{attr_weapon-rem-dur}" title="Remaining Durability" readonly="readonly"/>
<br>
<b>Max:</b><input name="attr_weapon-max-dur" value="@{attr_weapon-max-dur}" title="Maximum Durability" readonly="readonly"/>
<br>
<span name="attr_weapon-warning"></span>
<br>
<span name="attr_armor-warning"></span>
<label>Combat Arts</label>
<b>Base:</b><input name="attr_combat_base" value="@{attr_combat_base}" title="Base Damage" readonly="readonly"/>
<b>Acc:</b><input name="attr_combat_acc" value="@{attr_combat_acc}" title="Total Accuracy" readonly="readonly"/>
<b>Eva:</b><input name="attr_combat_eva" value="@{attr_combat_eva}" title="Total Evasion" readonly="readonly"/>
<b>GG:</b><input name="attr_combat_gg" value="@{attr_combat_gg}" title="Total Guard Gauge" readonly="readonly"/>
<b>Name:</b><input name="attr_combat_style" value="@{attr_combat_style}" title="Current Style" readonly="readonly"/>
<b>Scale:</b><input name="attr_combat_scaling" value="@{attr_combat_scaling}" title= "Scaling (P/N)" readonly="readonly"/>
</div>
<div class='col'>
<label>Catalysts</label>
<div class="energies">
<input type="hidden" class="energy" name="attr_Energy_type" value="" />
<input class='sheet-halfbreed' type='hidden' name='attr_halfbreed' value='0' >
<input class='sheet-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="sheet-demon">
<span class="checked"></span>
</button>
<button type="action" name="act_Energy_type_necroforce" class="sheet-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="Power: @{attr_Power}" title="Power" readonly="readonly" />
<br>
<b>Endurance</b><br><input name="attr_Endurance" value="Endurance: @{attr_Endurance}" title="Endurance" readonly="readonly" />
<br>
<b>Speed</b><br><input name="attr_Speed" value="Speed: @{attr_Speed}" title="Speed" readonly="readonly" />
<br>
<b>Flight</b><br><input name="attr_Flight" value="Flight: @{attr_Flight}" title="Flight" readonly="readonly" />
<br>
</div>
<div class='col'>
<label>Defenses</label>
<b>Equipped Armor Durability: </b><span name="attr_armor-current-dur"></span>
<br>
<b>Defensive Action Limit: </b><span name="attr_defensiveMeasures"></span>
<br>
<b>Number of hits blocked: </b><span name="attr_blockedHits"></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">Block</button>
<br>
<span 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">Block</button>
<br>
<span name="attr_guardWarningW"></span>
<input type="hidden" name="attr_defensiveMeasures">
<input type="hidden" name="attr_blockedHits">
<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" >Defend</button>
</div>
<div class="sheet-phasestep">
<br>
<span>Evades one while grounded.</span>
<br>
<button type="action" name="act_PhaseStep" >Phase Step</button>
</div>
<div class="sheet-phasejump">
<br>
<span>Evades one Attack while airborne.</span>
<br>
<button type="action" name="act_PhaseJump" >Phase Jump</button>
</div>
<div class="sheet-reflect">
<br>
<span>Deflects one Projectile.</span>
<br>
<button type="action" name="act_Reflect" >Reflect</button>
</div>
<div class="sheet-absorb">
<br>
<span>Absorb one Manna-based Projectile.</span>
<br>
<button type="action" name="act_Absorb" >Absorb</button>
</div>
<div class="sheet-barrier">
<br>
<span>Blocks 30% Damage within SMALL AoE.</span>
<br>
<button type="action" name="act_Barrier" >Barrier</button>
</div>
<div class="sheet-cutter">
<br>
<span>Destroys one Manna-based Projectile or Barrier.</span>
<br>
<button type="action" name="act_Cutter" >Manna Cutter</button>
</div>
<div class="sheet-armor1">
<pre><span name="attr_mod1"></span></pre>
<br>
<button type="action" name="act_activate-1" >Activate</button>
<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="sheet-armor2">
<pre><span name="attr_mod2"></span></pre>
<br>
<button type="action" name="act_activate-2" >Activate</button>
<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="sheet-armor3">
<pre><span name="attr_mod3"></span></pre>
<br>
<button type="action" name="act_activate-3" >Activate</button>
<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="sheet-armor4">
<pre><span name="attr_mod4"></span></pre>
<br>
<button type="action" name="act_activate-4" >Activate</button>
<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="sheet-armor5">
<pre><span name="attr_mod5"></span></pre>
<br>
<button type="action" name="act_activate-5" >Activate</button>
<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='sheet-passives'>
<fieldset class="repeating_passives">
<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"></textarea>
</fieldset>
</div>
<div class='sheet-inventory'>
<fieldset class="repeating_inventory">
<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"></textarea>
</fieldset>
</div>
<div class='sheet-equipment'>
<div class='2colrow'>
<div class='col'>
<br>
<label style='text-align: center'>W E A P O N S</label>
<fieldset class="repeating_weapons">
<button type="action" name="act_equip-weapon">Equip</button>
<br>
<input type='hidden' name='attr_weapon-equipwarning' value='' />
<span name='attr_weapon-equipwarning'></span>
<br>
<b>Name:</b><input type='text' name='attr_weapon-name' value='' title="Weapon Name" placeholder="Name" />
<br>
<b>Req:</b><input type='text' name='attr_weapon-req' value='' title="constitution Requirement" placeholder="Req" />
<br>
<b>Stress:</b><input type='text' name='attr_weapon-stress' value='' title="Stress Tolerance" placeholder="Stress Rating" />
<br>
<b>(Max) Dur:</b><input type='text' name='attr_weapon-maximum-dur' value='' title="Max Durability" placeholder="Durability MAX" />
<br>
<b>Dur:</b><input type='text' name='attr_weapon-current-dur' value='' title="Remaining Durability" placeholder="Current Durability" />
<br>
<b>Base:</b><input type='text' name='attr_weapon-base' value='' title="Base Damage" placeholder="Base" />
<br>
<b>+ Scale:</b><input type='text' name='attr_weapon-pscaling' value='' title="+ Scaling" placeholder="Positive Scaling" />
<br>
<b>- Scale:</b><input type='text' name='attr_weapon-nscaling' value='' title="- Scaling" placeholder="Negative Scaling" />
<br>
<b>Acc:</b><input type='text' name='attr_weapon-acc' value='' title="Accuracy" placeholder="Accuracy Rating" />
<br>
<b>Demonic:</b><select name='attr_armor-weapon'>
<option value="true">YES</option>
<option value="false">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='SS'>Shield & Small (SS)</option>
<option value='P'>Polearm (P)</option>
<option value='PS'>Shield & Polearm (PS)</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" placeholder="description"></textarea>
</fieldset>
</div>
<div class='col'>
<br>
<label style='text-align: center'>A R M O R</label>
<br>
<button type="action" name="act_equip-armor">Equip</button>
<br>
<input type='hidden' name='attr_armor-equipwarning' value='' />
<span name='attr_armor-equipwarning'></span>
<br>
<b>Name:</b><input type='text' name='attr_armor-name' value='' title="Weapon Name" placeholder="Name"/>
<br>
<b>Dur:</b><input type='text' name='attr_armor-max-dur' value='' title="Max Durability" placeholder="Durability"/>
<br>
<input type='hidden' name='attr_armor-current-dur' value='' />
<b>Base TTT:</b><input type='text' name='attr_armor-basettt' value='' title="Turn to Turn (TTT) Cost" placeholder="TTT"/>
<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"/>
<br>
<b>Disrutpion:</b><input type='text' name='attr_armor-disruption' value='' title="Disruption Resistance" placeholder="Disruption"/>
<br>
<b>Stress:</b><input type='text' name='attr_armor-stress' value='' title="Stress Tolerance" placeholder="Stress"/>
<br>
<b>Demonic:</b><select name='attr_armor-demon'>
<option value="true">YES</option>
<option value="false">NO</option>
</select>
<br>
<!--***** CRESTS; STILL UNIMPLEMENTED <input type='text' name='attr_armor-crests' value='' title="Weapon Type" placeholder="Type"/> -->
<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>
<label>M O D U L E S</label>
<fieldset class="repeating_armor">
<!--************ R A D I O S ******************-->
<div class="module">
<div class="mods">
<input type="hidden" class="sheet-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>
<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>
<br>
<div class="sheet-assault" >
<select name='attr_module-form' />
<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>
</div>
<div class="sheet-vigilant">
<select name='attr_module-form' />
<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>
</div>
<div class="sheet-caster" >
<select name='attr_module-form' />
<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>
</div>
<div class="sheet-universal">
<select name='attr_module-form' />
<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>
</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>
</fieldset>
</div>
</div>
</div>
<div class='sheet-styles'>
<div class='2colrow'>
<div class='col'>
<br>
<label style='text-align: center'>WEAPON STYLES</label>
<fieldset class="repeating_weapon-styles">
<button type="action" name="act_equip-weapon-style">Equip</button>
<br>
<input type="hidden" name="attr_weapon-style-warning" value='' />
<span name="attr_weapon-style-warning"></span>
<br>
<b>Style:</b><input type="text" name="attr_style-name" value='' title="Style" placeholder="Name" />
<br>
<b>Acc:</b><input type="text" name="attr_style-acc" value='' title="Accuracy" placeholder="Accuracy" />
<br>
<b>Eva:</b><input type="text" name="attr_style-eva" value='' title="Evasion" placeholder="Evasion" />
<br>
<b>GG:</b><input type="text" name="attr_style-gg" value='' title="Guard Gauge" placeholder="Guard Guage" />
<br>
<b>Req:</b><input type="text" name="attr_style-req" value='' title="Weapon Arts Requirement" placeholder="W.A. Requirement" />
<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>
</fieldset>
</div>
<div class='col'>
<br>
<label style='text-align: center'>COMBAT STYLES</label>
<fieldset class="repeating_combat-styles">
<button type="action" name="act_equip-combat-style">Equip</button>
<br>
<input type='hidden' name='attr_combat-style-warning' value='' />
<span name='attr_combat-style-warning'></span>
<br>
<b>Style:</b><input type='text' name='attr_style-name' value='' title="Style" placeholder="Name" />
<br>
<b>Acc:</b><input type='text' name='attr_style-acc' value='' title="Accuracy" placeholder="Accuracy" />
<br>
<b>Eva:</b><input type='text' name='attr_style-eva' value='' title="Evasion" placeholder="Evasion" />
<br>
<b>GG:</b><input type='text' name='attr_style-gg' value='' title="Guard Gauge" placeholder="Guard Guage" />
<br>
<b>Req:</b><input type="text" name="attr_style-req" value='' title="Combat Arts Requirement" placeholder="C.A. Requirement" />
<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>
</fieldset>
</div>
</div>
</div>
<div class='sheet-spells'>
<div style='justify-content: center;'>
<br>
<label>Spell Techniques</label>
<table border="1">
<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>Spell Reflex</span><input type='checkbox' name='attr_spell-reflex' title="" />
</td>
<td>
<span>Counter Spell</span><input type='checkbox' name='attr_spell-counter' title="" />
</td>
<td>
<span>Hyper Spell</span><input type='checkbox' name='attr_spell-hyper' 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>Triple Spell</span><input type='checkbox' name='attr_spell-triple' title="" />
</td>
<td>
<span>Father Spell</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>Auto Cast</span><input type='checkbox' name='attr_spell-auto' title="" />
</td>
<td>
<span>Infiinty Spell</span><input type='checkbox' name='attr_spell-infinity' 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>Spell Surge</span><input type='checkbox' name='attr_spell-surge' title="" />
</td>
<td>
<span>???</span>
</td>
</tr>
</table>
<br>
<label>Spells</label>
</div>
<br>
<fieldset class="repeating_spells">
<b>Name:</b><input type='text' name='attr_spells-name' title='Name' placeholder="Name"/>
<b>School:</b><select name='attr_spells-school' 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='Sage Arts (Basic)'>Sage Arts (Basic)</option>
<option value='Prayer (Covenant)'>Prayer (Covenant)</option>
<option value='Kinetics (Advanced)'>Kinetics (Advanced)</option>
<option value='Sealing (Advanced)'>Sealing (Advanced)</option>
<option value='Transcendalism (Advanced)'>Transcendalism (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>Branch:</b><input type='text' name='attr_spells-branch' title='School Branch' placeholder="School Branch"/>
<b>Mastery:</b><select name='attr_spells-mastery' 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' 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>
<b>Cost:</b><input type='text' name='attr_spells-cost' title='Spell Cost' placeholder="Spell Cost"/>
<b>Cast-Time:</b><input type='text' name='attr_spells-cast-time' title="Cast Time" placeholder="Cast Time"/>
<textarea name="attr_inventory-text" placeholder="description"></textarea>
</fieldset>
</div>
<div class='sheet-energytechniques'>
<fieldset class="repeating_energytech">
<b>Name:</b><input type='text' name='attr_etech-name' title='Name' placeholder="Name"/>
<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>
<b>Lv:</b><select name='attr_etech-level' value=''/>
<option>N/A</option>
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<b>Cost:</b><input type='text' name='attr_etech-cost' title='Cost' placeholder="Cost"/>
<textarea name="attr_etech-text" placeholder="description"></textarea>
</fieldset>
</div>
<div class='sheet-meleetechniques'>
<input type= 'hidden' name="attr_combo_counter" value=''>
<input type= 'hidden' name="attr_techwarning" value=''>
<b>Combo Counter:</b><span name="attr_combo_counter"></span>
<br>
<b>Equipped Weapon Durability:</b><span name="attr_weapon-rem-dur"></span>
<span name="attr_techwarning"></span>
<div class="sheet-progress">
<input type="hidden" value="0" name="attr_dur-bar" class="sheet-durbar">
<div class="sheet-durbar"></div>
</div>
<br>
<fieldset class="repeating_meleetech">
<!-- Cooldown Bar -->
<div class="sheet-progress">
<input type="hidden" value="0" name="attr_tech-bar" class="sheet-techbar">
<div class="sheet-techbar"></div>
</div>
<button type="action" name='act_execute'>Execute</button>
<b>Name:</b><input type='text' name='attr_meleetech-name' value='' title='Name' placeholder="Name"/>
<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>
<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'/>
<b>Cost/Cooldown:</b><input type='text' name='attr_meleetech-cost' value='' title='Cost' placeholder="Cost: (Durability/Cooldown)"/>
<textarea name="attr_meleetech-text" placeholder="description"></textarea>
</fieldset>
</div>
<div class='sheet-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"></textarea>
</fieldset>
</div>
<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
});
});
});
//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","equipped-weapon"], v => {
if(v[`char_${value}`] < 100)
{
setAttrs({
[`char_${value}`]: v[`char_${value}`] + 5
});
}else
{
setAttrs({
[`char_${value}`]: 100
});
}
Adjust_Battle(v["equipped-weapon"], v["equipped-weapon-style"]);
})
});
on(`clicked:minus_${value}`, () => {
getAttrs([`char_${value}`,"equipped-weapon-style","equipped-weapon"], v => {
if(v[`char_${value}`] > 5)
{
setAttrs({
[`char_${value}`]: v[`char_${value}`] - 5
});
}else
{
setAttrs({
[`char_${value}`]: 0
});
}
Adjust_Battle(v["equipped-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}`], v => {
if(v[`mod-cd${bar}`]==="")
{
setAttrs({
[`mod-cd${bar}`]: parseInt(v[`modmax${bar}`])
});
}
console.log(v[`modmax${bar}`]);
});
});
});
//Defensive Techiques
on('clicked:PhaseStep', () => {
getAttrs(["Char_Manna", "Energy_type","Char_Demon"], v => {
if(v.Energy_type==="Demon"&&v.Char_Demon > 14)
{
setAttrs({
Char_Demon: parseInt(v.Char_Demon) - 15
})
return
}
if(parseInt(v.Char_Manna) > 14)
{
setAttrs({
Char_Manna: parseInt(v.Char_Manna) - 15
})
}
});
});
on('clicked:PhaseJump', () => {
getAttrs(["Char_Manna", "Energy_type","Char_Demon"], v => {
if(v.Energy_type==="Demon"&&v.Char_Demon > 14)
{
setAttrs({
Char_Demon: parseInt(v.Char_Demon) - 15
})
return
}
if(parseInt(v.Char_Manna) > 14)
{
setAttrs({
Char_Manna: parseInt(v.Char_Manna) - 15
})
}
});
});
on('clicked:Barrier', () => {
getAttrs(["Char_Manna", "Energy_type","Char_Demon"], v => {
if(v.Energy_type==="Demon"&&v.Char_Demon > 29)
{
setAttrs({
Char_Demon: parseInt(v.Char_Demon) - 30
})
return
}
if(parseInt(v.Char_Manna) > 29)
{
setAttrs({
Char_Manna: parseInt(v.Char_Manna) - 30
})
}
});
});
on('clicked:Reflect', () => {
getAttrs(["Char_Manna", "Energy_type","Char_Demon"], v => {
if(v.Energy_type==="Demon"&&v.Char_Demon > 4)
{
setAttrs({
Char_Demon: parseInt(v.Char_Demon) - 5
})
return
}
if(parseInt(v.Char_Manna) > 4)
{
setAttrs({
Char_Manna: parseInt(v.Char_Manna) - 5
})
}
});
});
on('clicked:Defend', () => {
getAttrs(["Char_Manna", "Energy_type","Char_Demon"], v => {
if(v.Energy_type==="Demon"&&v.Char_Demon > 6)
{
setAttrs({
Char_Demon: parseInt(v.Char_Demon) - 7
})
return
}
if(parseInt(v.Char_Manna) > 6)
{
setAttrs({
Char_Manna: parseInt(v.Char_Manna) - 7
})
}
});
});
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 = parseInt(value.Char_Manna_Training) + 100 + parseInt(value.Char_Level);
if(value.economy >= 70)
{
setAttrs({
Char_Manna: ((parseInt(value.Manna) + 30) <= max) ? value.Char_Manna + 30 : max,
economy: 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});
//console.log(Object.values(initiate));
//console.log(Object.keys(initiate));
}
});
});
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:powerstate", () => 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","equipped-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["equipped-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
})
})
console.log(eventInfo.newValue);
});
//equips weapon
on("clicked:repeating_weapons:equip-weapon", function(eventInfo) {
// Check the current value of the hidden attribute.
const rowid = eventInfo.sourceAttribute.split('_')[2];
getAttrs([`repeating_weapons_${rowid}_weapon-name`,
`repeating_weapons_${rowid}_weapon-req`,
`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`,
`repeating_weapons_${rowid}_weapon-effects`,
"char_constitution","equipped-weapon-style",
"Power"], function(weapon) {
// Toggle the hidden attribute value between
if(weapon[`repeating_weapons_${rowid}_weapon-name`]==="")
{
setAttrs({
[`repeating_weapons_${rowid}_weapon-equipwarning`]: "Weapon Name Missing"
});
return
}else if(weapon[`repeating_weapons_${rowid}_weapon-req`] > weapon["char_constitution"])
{
setAttrs({
[`repeating_weapons_${rowid}_weapon-equipwarning`]: "Inadequate constitution"
});
return
}else if(weapon[`repeating_weapons_${rowid}_weapon-stress`] < weapon["Power"])
{
setAttrs({
[`repeating_weapons_${rowid}_weapon-equipwarning`]: "Exceeds Power Tolerance"
});
return
}else if(weapon[`repeating_weapons_${rowid}_weapon-base`]==="")
{
setAttrs({
[`repeating_weapons_${rowid}_weapon-equipwarning`]: "Weapon Incomplete"
});
return
}else if(weapon[`repeating_weapons_${rowid}_weapon-pscaling`]==="")
{
setAttrs({
[`repeating_weapons_${rowid}_weapon-equipwarning`]: "Weapon Incomplete"
});
return
}else if(weapon[`repeating_weapons_${rowid}_weapon-nscaling`]==="")
{
setAttrs({
[`repeating_weapons_${rowid}_weapon-equipwarning`]: "Weapon Incomplete"
});
return
}else if(weapon[`repeating_weapons_${rowid}_weapon-acc`]==="")
{
setAttrs({
[`repeating_weapons_${rowid}_weapon-equipwarning`]: "Weapon Incomplete"
});
return
}else if(weapon[`repeating_weapons_${rowid}_weapon-type`]==="")
{
setAttrs({
[`repeating_weapons_${rowid}_weapon-equipwarning`]: "Weapon Incomplete"
});
return
}else if(weapon[`repeating_weapons_${rowid}_weapon-maximum-dur`]==="")
{
setAttrs({
[`repeating_weapons_${rowid}_weapon-equipwarning`]: "Weapon Incomplete"
});
return
}
setAttrs({[`equipped-weapon`]: rowid});
Adjust_Battle(rowid, weapon[`equipped-weapon-style`]);
});
});
//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`,
`equipped-weapon`,"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});
Adjust_Battle(style[`equipped-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),
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`]: ""
});
});
});
//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",`equipped-weapon`,`weapon-rem-dur`,`weapon-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[`equipped-weapon`]==="")
{
setAttrs({
techwarning: "WARNING: No weapon Equipped!"
});
return
}else if(parseInt(value[`repeating_meleetech_${rowid}_meleetech-cost`]) > parseInt(value[`weapon-rem-dur`]))
{
setAttrs({
techwarning: "WARNING: Weapon will break if tech is used!"
});
return
}//END IF ELSE
setAttrs({
[`weapon-rem-dur`]: value[`weapon-rem-dur`] - value[`repeating_meleetech_${rowid}_meleetech-cost`],
[`dur-bar`]: Math.floor(((value[`weapon-rem-dur`] - value[`repeating_meleetech_${rowid}_meleetech-cost`])/value[`weapon-max-dur`])*5 + 1),
combo_counter: parseInt(value.combo_counter) + 1 || 1,
techwarning: ""
});
console.log(Math.floor(((value[`weapon-rem-dur`] - value[`repeating_meleetech_${rowid}_meleetech-cost`])/value[`weapon-max-dur`])*5 + 1));
return
}
if(parseInt(value[`repeating_meleetech_${rowid}_meleetech-cost`]) < 10)//combat tech tree
{
if(value[`repeating_meleetech_${rowid}_tech-bar`]!=="")
{
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: "",
"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`);
});
const bar = ["armor-equipwarning","armor-basettt", "armor-disruption","armor-max-dur","Char_Level", "char_constitution", "char_resistance"];
foo.push.apply(foo, bar);
getAttrs(foo, v => {
if(v["armor-equipwarning"]!=="")
return
idArray.forEach(id => {
i++;
Mods[`mod${i}`] = [`Module Type: ${v[`repeating_armor_${id}_module-form`]}. Cooldown: ${v[`repeating_armor_${id}_module-cooldown`]}.\n
Cost: ${v[`repeating_armor_${id}_module-cost`]}. TTT: ${v[`repeating_armor_${id}_module-turn-to-turn`]}.\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['armor-current-dur'] = v['armor-max-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) {
const rowid = eventInfo.sourceAttribute.split('_')[2];
getAttrs([`repeating_armor_${rowid}_module-level`, "char_constitution", "armor-type"], v => {
let module = Defensive_Module(eventInfo.newValue, v[`repeating_armor_${rowid}_module-level`], v["armor-type"], v["char_constitution"]);
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,
["armor-equipwarning"]: module.warn
});
});
});
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('change:Energy_type', () => Adjust_Energy());
on('clicked:endTurn', ()=>{
var manna = true;
getSectionIDs('repeating_meleetech', techs => {
let cooldown = {
economy: 100,
blockedHits: 0,
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_TTT","Energy_type","Char_Manna","Char_Demon","Char_Life_Force","combat_gg","weapon_gg","curCGG","curWGG","defense"];
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`] = "";
})
//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;
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))
{
cooldown.Char_Demon = 0;
manna = false;
}
else
cooldown.Char_Demon = value.Char_Demon - value.Char_TTT;
setAttrs(cooldown);
} else //using just manna, TTT will reduce Manna pool
{
if(parseInt(value.Char_Manna) < parseInt(value.Char_TTT))
{
cooldown.Char_Manna = 0;
manna = false;
}
else
cooldown.Char_Manna = value.Char_Manna - value.Char_TTT;
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(["equipped-weapon-style","equipped-weapon","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","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;
console.log(eventInfo.newValue);
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_resistance)) * 10
}, {silent:true});
Adjust_Energy();
});
});
Vitalize=function()
{
let vital = {};
const stats = ["combat_gg","weapon_gg","char_constitution","char_discipline","char_resistance","Char_Level","weapon-max-dur","armor-max-dur","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 = (value.combat_gg != "") ? value.combat_gg : 0;
vital.curWGG = (value.weapon_gg != "") ? value.weapon_gg : 0;
vital.blockedHits = 0;
vital.guardWarningC = "";
vital.guardWarningW = "";
vital.Char_Manna = value.Char_Manna_Training + 100 + 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["weapon-current-dur"] = value["weapon-max-dur"];
vital["armor-current-dur"] = value["armor-max-dur"];
vital.economy = 100;
setAttrs(vital);
});
});
//Adjust_Energy();
};
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(parseInt(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(parseInt(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(parseInt(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(parseInt(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(parseInt(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(parseInt(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(parseInt(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(parseInt(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(parseInt(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(parseInt(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(parseInt(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(parseInt(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(parseInt(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(parseInt(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(parseInt(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(parseInt(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 = 3;
Base.Dis = 2;
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 = 20;
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(weapon, style)
{
//weapon and style are rowids or "" if not previously assigned
//console.log(weapon);
//console.log(style);
const weaponAttrs = [`repeating_weapons_${weapon}_weapon-name`,
`repeating_weapons_${weapon}_weapon-req`,
`repeating_weapons_${weapon}_weapon-stress`,
`repeating_weapons_${weapon}_weapon-current-dur`,
`repeating_weapons_${weapon}_weapon-maximum-dur`,
`repeating_weapons_${weapon}_weapon-base`,
`repeating_weapons_${weapon}_weapon-pscaling`,
`repeating_weapons_${weapon}_weapon-nscaling`,
`repeating_weapons_${weapon}_weapon-acc`,
`repeating_weapons_${weapon}_weapon-type`];
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 getArray = ["char_constitution","char_discipline","char_weapon_arts",
"Power"];
//test to make certain if either weapon or style is blank
if(weapon==="")
return
else
getArray.push.apply(getArray, weaponAttrs);
if(style==="")
return
else
{
getArray.push.apply(getArray, styleAttrs);
getArray.push.apply(getArray, styleComp);
}
getAttrs(getArray, function(battle) {
const styleTypes = [];
var T = true;
var i = 0;
styleComp.forEach(type => {
//console.log(type); // debugging
//console.log(Object.values(battle));
if(battle[`${type}`]!="0")
{
styleTypes.push(battle[`${type}`]);
i++;
}
});//console.log(styleTypes);
if(i==0)
{
setAttrs({
[`repeating_weapon-styles_${style}_weapon-style-warning`]: "WARNING: Missing Type Compatibility",
sheetTab: "styles"
});
T = false;
return
}
if(battle[`repeating_weapons_${weapon}_weapon-req`] > battle["char_constitution"])
{
setAttrs({
[`repeating_weapons_${weapon}_weapon-equipwarning`]: "WARNING: Inadequate constitution",
sheetTab: "equipment"
});
return
}
var scaling = [battle[`repeating_weapons_${weapon}_weapon-pscaling`], battle[`repeating_weapons_${weapon}_weapon-nscaling`]];
styleTypes.forEach(type => {
if(battle[`repeating_weapons_${weapon}_weapon-type`]===type)
T = false;
})
if(battle[`repeating_weapons_${weapon}_weapon-current-dur`]==0)
{
setAttrs({
[`repeating_weapons_${weapon}_weapon-equipwarning`]: "WARNING: Weapon Broken",
sheetTab: "equipment"
});
return
}
if(T==true)
i = "WARNING: Weapon type not supported by style.";
else
i = "";
if(battle["Power"] > battle[`repeating_weapons_${weapon}_weapon-stress`])
i += `\nWARNING: Weapon Stress Tolerance exceeded. Using the weapon (attack/blocking) with too much Power will destroy it.`;
setAttrs({
weapon: battle[`repeating_weapons_${weapon}_weapon-name`],
weapon_base: battle[`repeating_weapons_${weapon}_weapon-base`],
weapon_acc: parseInt(battle[`repeating_weapons_${weapon}_weapon-acc`]) + parseInt(battle[`repeating_weapon-styles_${style}_style-acc`]) + 100 + parseInt(battle["char_weapon_arts"]),
weapon_eva: parseInt(battle[`repeating_weapon-styles_${style}_style-eva`]) + (parseInt(battle["char_discipline"]) *5),
weapon_gg: parseInt(battle[`repeating_weapon-styles_${style}_style-gg`]) + (parseInt(battle["char_discipline"]) *5),
weapon_style: battle[`repeating_weapon-styles_${style}_style-name`],
[`weapon-stress`]: battle[`repeating_weapons_${weapon}_weapon-stress`],
[`weapon-type`]: battle[`repeating_weapons_${weapon}_weapon-type`],
[`weapon-scaling`]: [`${scaling[0]}/${scaling[1]}`],
[`style-types`]: styleTypes.join(',') || "Error",
[`repeating_weapon-styles_${style}_weapon-style-warning`]: "",
[`repeating_weapons_${weapon}_weapon-equipwarning`]: "",
[`weapon-rem-dur`]: battle[`repeating_weapons_${weapon}_weapon-current-dur`]==="" ? battle[`repeating_weapons_${weapon}_weapon-maximum-dur`] : battle[`repeating_weapons_${weapon}_weapon-current-dur`],
[`weapon-max-dur`]: battle[`repeating_weapons_${weapon}_weapon-maximum-dur`],
[`weapon-warning`]: i
});
});
};
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
}
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>