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