mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-30 03:40:32 +00:00
767 lines
48 KiB
HTML
767 lines
48 KiB
HTML
<div class='sheet-container'>
|
|
<div class='sheet-header'>
|
|
<div class='sheet-2colrow'>
|
|
<div class='sheet-col'>
|
|
<div class="sheet-block">
|
|
<div class="row">
|
|
<label class='sheet-label' data-i18n="name-u">Name:</label>
|
|
<input type="text" class='sheet-input' name="attr_character_name" placeholder="Character Name" />
|
|
</div>
|
|
<div class="row">
|
|
<label class='sheet-label' data-i18n="title-u">Title:</label>
|
|
<input type="text" class='sheet-input' name="attr_character_title" placeholder="Character Title" />
|
|
</div>
|
|
<div class="row">
|
|
<label class='sheet-label' data-i18n="species-u">Species:</label>
|
|
<input type="text" class='sheet-input' name="attr_character_race" placeholder="Race/Species" />
|
|
</div>
|
|
<br />
|
|
</div>
|
|
</div>
|
|
<div class='sheet-col'>
|
|
<img style="padding-top:15px;" src="https://github.com/SPConlin/roll20-character-sheets/blob/master/Elemental/images/logo.png?raw=true" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-tabs">
|
|
<div class="sheet-tab sheet-tab-core">
|
|
<input type="radio" name="attr_tab" value="core" checked="checked">
|
|
<span class="sheet-tab-label">Core</span>
|
|
<div class="sheet-tab-content">
|
|
<div class="sheet-content">
|
|
<div class='sheet-2colrow'>
|
|
<div class='sheet-col'>
|
|
<div class="sheet-heading">Experience Points</div>
|
|
<div class="sheet-block">
|
|
<div class="sheet-top">
|
|
<span class="sheet-blocklabel" style="width: 82px;" data-i18n="total-u">Total</span>
|
|
<span class="sheet-blocklabel" style="width: 84px;" data-i18n="spent-u">Spent</span>
|
|
<span class="sheet-blocklabel" style="width: 82px;" data-i18n="sacrifice-u">Sacrificed</span>
|
|
<span class="sheet-blocklabel" style="width: 80px;" data-i18n="reserve-u">Reserve</span>
|
|
</div>
|
|
<input type="number" class="sheet-number" style="width: 80px;" name="attr_xp_total" placeholder="0" />
|
|
<input type="number" class="sheet-derstat" style="width: 80px; color:white;" name="attr_xp_spent" value="0" readonly />
|
|
<input type="number" class="sheet-number" style="width: 80px;" name="attr_xp_sacrificed" placeholder="0" />
|
|
<input type="number" class="sheet-derstat" style="width: 80px; color:white;" name="attr_xp_reserve" value="0" readonly />
|
|
</div>
|
|
<br />
|
|
<div class="sheet-heading" data-i18n="attrskill-u">Attributes & Skills</div>
|
|
<div class="sheet-block">
|
|
<button type="roll" class="sheet-rollbutton" name="roll_agi" value="&{template:basic} {{type= Attribute}} {{name= Agility}} {{roll= [[1d6+@{agi}]]}} {{explode= [[1d6]]}}"></button>
|
|
<input type="text" style="width:275px; color:white;" class="sheet-attrname" data-i18n="agi-u" value="Agility" readonly />
|
|
<input type="number" class="sheet-number" name="attr_agi" value="0" />
|
|
<input type="hidden" name="attr_agi_xp_used" value="0" />
|
|
<input type="hidden" name="attr_agiskill_xp_used" value="0" />
|
|
<div class="sheet-skillblock">
|
|
<fieldset class="repeating_agiskills">
|
|
<button type="roll" class="sheet-rollbutton" name="roll_agi_skill" value="&{template:basic} {{type= Skill}} {{name= @{agi_skill} @{agi_skill_spec} }} {{roll= [[1d6 + @{agi} + @{agi_skill_rating}]]}} {{explode= [[1d6]]}}"></button>
|
|
<select style="width:125px;" name="attr_agi_skill">
|
|
<option value="" data-i18n="flaws" disabled>Skills</option>
|
|
<option value="Assassination" data-i18n="assassination">Assassination</option>
|
|
<option value="Athletics" data-i18n="athletics">Athletics</option>
|
|
<option value="Cover" data-i18n="cover">Cover</option>
|
|
<option value="Driving" data-i18n="driving">Driving</option>
|
|
<option value="Grappling" data-i18n="grappling">Grappling</option>
|
|
<option value="Marksmanship" data-i18n="marksmanship">Marksmanship</option>
|
|
<option value="Missle Deflection" data-i18n="missle_deflection">Missle Deflection</option>
|
|
<option value="Multistrike" data-i18n="multistrike">Multistrike</option>
|
|
<option value="Piloting" data-i18n="piloting">Piloting</option>
|
|
<option value="Riding" data-i18n="riding">Riding</option>
|
|
<option value="Sailing" data-i18n="sailing">Sailing</option>
|
|
<option value="Sleight-of-hand" data-i18n="sleight-of-hand">Sleight-of-Hand</option>
|
|
<option value="Stealth" data-i18n="stealth">Stealth</option>
|
|
<option value="Sworn Enemy" data-i18n="sworn_enemy">Sworn Enemy*</option>
|
|
<option value="Team Tactics" data-i18n="team_tactics">Team Tactics</option>
|
|
<option value="Unarmed Strike" data-i18n="unarmed_strike">Unarmed Strike</option>
|
|
<option value="Weapon Mastery" data-i18n="weapon_mastery">Weapon Mastery*</option>
|
|
<option value="" data-i18n="flaws" disabled>Flaws</option>
|
|
<option value='Clumsiness' data-i18n='clumsiness'>Clumsiness</option>
|
|
<option value='Handicap' data-i18n='handicap'>Handicap</option>
|
|
</select>
|
|
<input type="text" style="width: 125px;" name="attr_agi_skill_spec" value="" data-i18n-placeholder="skillspec-u" placeholder="Specifics" />
|
|
<input type="number" class="sheet-attrval" name="attr_agi_skill_rating" value="0" />
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
<br />
|
|
<div class="sheet-block">
|
|
<button type="roll" class="sheet-rollbutton" name="roll_tough" value="&{template:basic} {{type= Attribute}} {{name= Toughness}} {{roll= [[1d6+@{tough}]]}} {{explode= [[1d6]]}}"></button>
|
|
<input type="text" style="width:275px; color:white;" class="sheet-attrname" data-i18n="tough-u" value="Toughness" readonly />
|
|
<input type="number" class="sheet-number" name="attr_tough" value="0" />
|
|
<input type="hidden" name="attr_tough_xp_used" value="0" />
|
|
<input type="hidden" name="attr_toughskill_xp_used" value="0" />
|
|
<div class="sheet-skillblock">
|
|
<fieldset class="repeating_toughskills">
|
|
<button type="roll" class="sheet-rollbutton" name="roll_tough_skill" value="&{template:basic} {{type= Skill}} {{name= @{tough_skill} @{tough_skill_spec} }} {{roll= [[1d6 + @{tough} + @{tough_skill_rating}]]}} {{explode= [[1d6]]}}"></button>
|
|
<select style="width:125px;" name="attr_tough_skill">
|
|
<option value="" data-i18n="skills" disabled>Skills</option>
|
|
<option value='Aquatic' data-i18n='aquatic'>Aquatic</option>
|
|
<option value='Armored Combat' data-i18n='armored combat'>Armored Combat</option>
|
|
<option value='Charge' data-i18n='charge'>Charge</option>
|
|
<option value='Endurance' data-i18n='endurance'>Endurance</option>
|
|
<option value='Bighty Blow' data-i18n='mighty blow'>Mighty Blow</option>
|
|
<option value='Resistance' data-i18n='resistance'>Resistance*</option>
|
|
<option value='Second Wind' data-i18n='second wind'>Second Wind</option>
|
|
<option value='Strength' data-i18n='strength'>Strength</option>
|
|
<option value='Unlife' data-i18n='unlife'>Unlife</option>
|
|
<option value="" data-i18n="flaws" disabled>Flaws</option>
|
|
<option value='Breathless' data-i18n='breathless'>Breathless</option>
|
|
<option value='Frailty' data-i18n='frailty'>Frailty</option>
|
|
<option value='Sunlight sensitivity' data-i18n='sunlight sensitivity'>Sunlight Sensitivity</option>
|
|
<option value='Vulnerability' data-i18n='vulnerability'>Vulnerability</option>
|
|
<option value='Weakness' data-i18n='weakness'>Weakness</option>
|
|
</select>
|
|
<input type="text" style="width: 125px;" name="attr_tough_skill_spec" value="" data-i18n-placeholder="skillspec-u" placeholder="Specifics" />
|
|
<input type="number" class="sheet-attrval" name="attr_tough_skill_rating" value="0" />
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
<br />
|
|
<div class="sheet-block">
|
|
<button type="roll" class="sheet-rollbutton" name="roll_aware" value="&{template:basic} {{type= Attribute}} {{name= Awareness}} {{roll= [[1d6+@{aware}]]}} {{explode= [[1d6]]}}"></button>
|
|
<input type="text" style="width:275px; color:white;" class="sheet-attrname" data-i18n="aware-u" value="Awareness" readonly />
|
|
<input type="number" class="sheet-number" name="attr_aware" value="0" />
|
|
<input type="hidden" name="attr_aware_xp_used" value="0" />
|
|
<input type="hidden" name="attr_awareskill_xp_used" value="0" />
|
|
<div class="sheet-skillblock">
|
|
<fieldset class="repeating_awareskills">
|
|
<button type="roll" class="sheet-rollbutton" name="roll_aware_skill" value="&{template:basic} {{type= Skill}} {{name= @{aware_skill} @{aware_skill_spec} }} {{roll= [[1d6 + @{aware} + @{aware_skill_rating}]]}} {{explode= [[1d6]]}}"></button>
|
|
<select style="width:125px;" name="attr_aware_skill">
|
|
<option value="" data-i18n="Skills" disabled>Skills</option>
|
|
<option value='Appraisal' data-i18n='appraisal'>Appraisal</option>
|
|
<option value='Arcane Lore' data-i18n='arcane lore'>Arcane Lore</option>
|
|
<option value='Background' data-i18n='background'>Background*</option>
|
|
<option value='Computers' data-i18n='computers'>Computers</option>
|
|
<option value='Criminology' data-i18n='criminology'>Criminology</option>
|
|
<option value='Fixing' data-i18n='fixing'>Fixing</option>
|
|
<option value='Heavy Weapon' data-i18n='heavy_weapon'>Heavy Weapon*</option>
|
|
<option value='Languages' data-i18n='languages'>Languages*</option>
|
|
<option value='Locks & Traps' data-i18n='locks_traps'>Locks & Traps</option>
|
|
<option value='Medicine' data-i18n='medicine'>Medicine</option>
|
|
<option value='Memory' data-i18n='memory'>Memory</option>
|
|
<option value='Nightvision' data-i18n='nightvision'>Nightvision</option>
|
|
<option value='Observation' data-i18n='observation'>Observation</option>
|
|
<option value='Power or Spell' data-i18n='power_or_spell'>Power or Spell*</option>
|
|
<option value='Psychology' data-i18n='psychology'>Psychology</option>
|
|
<option value='Research' data-i18n='research'>Research</option>
|
|
<option value='Senses' data-i18n='senses'>Senses</option>
|
|
<option value='Sixth Sense' data-i18n='sixth sense'>Sixth Sense</option>
|
|
<option value='Survival' data-i18n='survival'>Survival*</option>
|
|
<option value='Surgery' data-i18n='surgery'>Surgery</option>
|
|
<option value='Surveillance' data-i18n='surveillance'>Surveillance</option>
|
|
<option value='Trivia' data-i18n='trivia'>Trivia</option>
|
|
<option value='Underworld' data-i18n='underworld'>Underworld</option>
|
|
<option value="" data-i18n="flaws" disabled>Flaws</option>
|
|
<option value='Absent-mindedness' data-i18n='absent-mindedness'>Absent-Mindedness</option>
|
|
<option value='Blindness' data-i18n='blindness'>Blindness</option>
|
|
<option value='Deafness' data-i18n='deafness'>Deafness</option>
|
|
</select>
|
|
<input type="text" style="width: 125px;" name="attr_aware_skill_spec" value="" data-i18n-placeholder="skillspec-u" placeholder="Specifics" />
|
|
<input type="number" class="sheet-attrval" name="attr_aware_skill_rating" value="0" />
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
<br />
|
|
<div class="sheet-block">
|
|
<button type="roll" class="sheet-rollbutton" name="roll_will" value="&{template:basic} {{type= Attribute}} {{name= Will}} {{roll= [[1d6+@{will}]]}} {{explode= [[1d6]]}}"></button>
|
|
<input type="text" style="width:275px; color:white;" class="sheet-attrname" data-i18n="will-u" value="Will" readonly />
|
|
<input type="number" class="sheet-number" name="attr_will" value="0" />
|
|
<input type="hidden" name="attr_will_xp_used" value="0" />
|
|
<input type="hidden" name="attr_willskill_xp_used" value="0" />
|
|
<div class="sheet-skillblock">
|
|
<fieldset class="repeating_willskills">
|
|
<button type="roll" class="sheet-rollbutton" name="roll_will_skill" value="&{template:basic} {{type= Skill}} {{name= @{will_skill} @{will_skill_spec} }} {{roll= [[1d6 + @{will} + @{will_skill_rating}]]}} {{explode= [[1d6]]}}"></button>
|
|
<select style="width:125px;" name="attr_will_skill">
|
|
<option value="" data-i18n="skills" disabled>Skills</option>
|
|
<option value='Animal Handling' data-i18n='animal_handling'>Animal Handling*</option>
|
|
<option value='Art' data-i18n='art'>Art*</option>
|
|
<option value='Bargaining' data-i18n='bargaining'>Bargaining</option>
|
|
<option value='Battle Rage' data-i18n='battle_rage'>Battle Rage</option>
|
|
<option value='Command' data-i18n='command'>Command</option>
|
|
<option value='Focus' data-i18n='focus'>Focus</option>
|
|
<option value='Followers' data-i18n='followers'>Followers</option>
|
|
<option value='Impersonation' data-i18n='impersonation'>Impersonation</option>
|
|
<option value='Intimidation/Fear' data-i18n='intimidation_fear'>Intimidation/Fear</option>
|
|
<option value='Luck' data-i18n='luck'>Luck</option>
|
|
<option value='Oratory' data-i18n='oratory'>Oratory</option>
|
|
<option value='Persuasion' data-i18n='persuasion'>Persuasion</option>
|
|
<option value='Politics' data-i18n='politics'>Politics</option>
|
|
<option value='Reputation' data-i18n='reputation'>Reputation*</option>
|
|
<option value='Street Smarts' data-i18n='street_smarts'>Street Smarts</option>
|
|
<option value='Trickery' data-i18n='trickery'>Trickery</option>
|
|
<option value="" data-i18n="flaws" disabled>Flaws</option>
|
|
<option value='Addiction' data-i18n='addiction'>Addiction*</option>
|
|
<option value='Cowardice' data-i18n='cowardice'>Cowardice</option>
|
|
<option value='Code of Honor' data-i18n='code_of_honor'>Code of Honor*</option>
|
|
<option value='Flashbacks' data-i18n='flashbacks'>Flashbacks</option>
|
|
<option value='Greed' data-i18n='greed'>Greed*</option>
|
|
<option value='Outcast' data-i18n='outcast'>Outcast*</option>
|
|
<option value='Phobia' data-i18n='phobia'>Phobia*</option>
|
|
<option value='Unluck' data-i18n='unluck'>Unluck</option>
|
|
<option value='Unmistakable Feature' data-i18n='unmistakable_feature'>Unmistakable Feature*</option>
|
|
</select>
|
|
<input type="text" style="width: 125px;" name="attr_will_skill_spec" value="" data-i18n-placeholder="skillspec-u" placeholder="Specifics" />
|
|
<input type="number" class="sheet-attrval" name="attr_will_skill_rating" value="0" />
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class='sheet-col'>
|
|
<div class="sheet-heading" data-i18n='derstat'>Derived Statistics</div>
|
|
<div class="sheet-block sheet-smallblock">
|
|
<div class="sheet-top">
|
|
<button type="roll" class="sheet-rollbutton" style="width:65px" name="roll_health" value="&{template:stat} {{name= Health}} {{check= [[ 1d6*1d6 ]]}}" data-i18n="health-u">Health</button>
|
|
</div>
|
|
<input type="text" class="sheet-derstat" style="width:40px; color:white;" name="attr_curhealth" value="0" readonly />/<input type="text" class="sheet-derstat" style="width:35px; color:white;" name="attr_health" value="0" readonly />
|
|
</div>
|
|
<div class="sheet-block sheet-smallblock">
|
|
<div class="sheet-top">
|
|
<button type="roll" class="sheet-rollbutton" style="width:65px" name="roll_move" value="&{template:stat} {{name= Move}} {{check= [[ 1d6*1d6 ]]}}" data-i18n="move-u">Move</button>
|
|
</div>
|
|
<input type="text" class="sheet-derstat" style="width:40px; color:white;" name="attr_curmove" value="0" readonly />/<input type="text" class="sheet-derstat" style="width: 35px; color:white;" name="attr_move" value="0" readonly />
|
|
</div>
|
|
<div class="sheet-block sheet-smallblock">
|
|
<div class="sheet-top">
|
|
<button type="roll" class="sheet-rollbutton" style="width:65px" name="roll_init" value="&{template:stat} {{name= Initiative}} {{check= [[ 1d6*1d6 ]]}}" data-i18n="init-u">Init</button>
|
|
</div>
|
|
<input type="text" class="sheet-derstat" style="width:40px; color:white;" name="attr_curinit" value="0" readonly />/<input type="text" class="sheet-derstat" style="width: 35px; color:white;" name="attr_initiative" value="0" readonly />
|
|
</div>
|
|
<div class="sheet-block sheet-smallblock">
|
|
<div class="sheet-top">
|
|
<button type="roll" class="sheet-rollbutton" style="width:65px" name="roll_spirit" value="&{template:stat} {{name= Spirit}} {{check= [[ 1d6*1d6 ]]}}" data-i18n="spirit-u">Spirit</button>
|
|
</div>
|
|
<input type="text" class="sheet-derstat" style="width:40px; color:white;" name="attr_curspirit" value="0" readonly />/<input type="text" class="sheet-derstat" style="width: 35px; color:white;" name="attr_spirit" value="0" readonly />
|
|
</div>
|
|
<br/>
|
|
<div class="sheet-heading" data-i18n='bonus'>Bonuses & Penalties</div>
|
|
<div class="sheet-block sheet-smallblock" style="width:55px">
|
|
<div class="sheet-top" data-i18n='atk'>
|
|
Attack
|
|
</div>
|
|
<input type="text" class="sheet-number" style="width:50px" name="attr_atk" value="0" />
|
|
</div>
|
|
<div class="sheet-block sheet-smallblock" style="width:55px">
|
|
<div class="sheet-top" data-i18n='defense'>
|
|
Defense
|
|
</div>
|
|
<input type="text" class="sheet-number" style="width:50px" name="attr_def" value="0" />
|
|
</div>
|
|
<div class="sheet-block sheet-smallblock" style="width:55px">
|
|
<div class="sheet-top" data-i18n='damage'>
|
|
Damage
|
|
</div>
|
|
<input type="number" class="sheet-number" style="width:50px" name="attr_dam" value="0" />
|
|
</div>
|
|
<div class="sheet-block sheet-smallblock" style="width:110px;">
|
|
<div class="sheet-top" data-i18n='impair'>
|
|
Impairment Level
|
|
</div>
|
|
<input type="checkbox" name="attr_impair" value="1"/><span></span>
|
|
<input type="checkbox" name="attr_impair" value="2"/><span></span>
|
|
<input type="checkbox" name="attr_impair" value="3"/><span></span>
|
|
</div>
|
|
<div class="sheet-block sheet-smallblock" style="width:55px">
|
|
<div class="sheet-top" data-i18n='injury'>
|
|
Injuries
|
|
</div>
|
|
<input type="number" class="sheet-number" style="width:50px" name="attr_injury" value="0" />
|
|
</div>
|
|
<div class="sheet-block sheet-smallblock" style="width:55px">
|
|
<div class="sheet-top" data-i18n='move-u'>
|
|
Move
|
|
</div>
|
|
<input type="number" class="sheet-number" style="width:50px" name="attr_move_mod" value="0" />
|
|
</div>
|
|
<div class="sheet-block sheet-smallblock" style="width:55px">
|
|
<div class="sheet-top" data-i18n='init-u'>
|
|
Init
|
|
</div>
|
|
<input type="number" class="sheet-number" style="width:50px" name="attr_init_mod" value="0" />
|
|
</div>
|
|
<div class="sheet-block sheet-smallblock" style="width:55px">
|
|
<div class="sheet-top" data-i18n='spirit-u'>
|
|
Spirit
|
|
</div>
|
|
<input type="number" class="sheet-number" style="width:50px" name="attr_spirit_mod" value="0" />
|
|
</div>
|
|
<br/>
|
|
<div class="sheet-heading" data-i18n='notes-u'>Notes</div>
|
|
<div class="sheet-block">
|
|
<textarea name="attr_notes" style="width:95%; height:200px; color:black;"></textarea>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-tab sheet-tab-equipment">
|
|
<input type="radio" name="attr_tab" value="equipment">
|
|
<span class="sheet-tab-label">Equipment</span>
|
|
<div class="sheet-tab-content">
|
|
<div class="sheet-content">
|
|
<div class="sheet-heading">Weapons</div>
|
|
<div class="sheet-block">
|
|
<div class="sheet-top">
|
|
<span class="sheet-blocklabel" style="width: 155px;" data-i18n="name-u">Name</span>
|
|
<span class="sheet-blocklabel" style="width: 55px;" data-i18n="ammo-u">Ammo</span>
|
|
<span class="sheet-blocklabel" style="width: 50px;" data-i18n="rel-u">Rel</span>
|
|
<span class="sheet-blocklabel" style="width: 55px;" data-i18n="rng-u">Range</span>
|
|
<span class="sheet-blocklabel" style="width: 80px;" data-i18n="dam-u">DAM</span>
|
|
<span class="sheet-blocklabel" style="width: 55px;" data-i18n="aoe-u">AOE</span>
|
|
<span class="sheet-blocklabel" style="width: 50px;" data-i18n="wt-u">Wt</span>
|
|
<span class="sheet-blocklabel" style="width: 100px;" data-i18n="notes-u">Notes</span>
|
|
</div>
|
|
<fieldset class="repeating_weapons">
|
|
<input type="text" style="width:150px" name="attr_weaponname" />
|
|
<input type="text" style="width:50px" name="attr_weaponammo" />
|
|
<input type="text" style="width:50px" name="attr_weaponrel" />
|
|
<input type="text" style="width:50px" name="attr_weaponrng" />
|
|
<input type="text" style="width:75px" name="attr_weapondmg" />
|
|
<input type="text" style="width:50px" name="attr_weaponaoe" />
|
|
<input type="text" style="width:50px" name="attr_weaponwt" />
|
|
<input type="text" style="width:270px" name="attr_weaponnote" data-i18n-placeholder="notes-u" placeholder="Notes" />
|
|
</fieldset>
|
|
</div>
|
|
<div class="sheet-2colrow">
|
|
<div class="sheet-col">
|
|
<div class="sheet-heading">Armor</div>
|
|
<div class="sheet-block">
|
|
<div class="sheet-top">
|
|
<span class="sheet-blocklabel" style="width: 250px;" data-i18n="name-u">Name</span>
|
|
<span class="sheet-blocklabel" style="width: 55px;" data-i18n="arm-u">ARM</span>
|
|
<span class="sheet-blocklabel" style="width: 20px;" data-i18n="wt-u">Wt</span>
|
|
</div>
|
|
<fieldset class="repeating_armor">
|
|
<input type="text" style="width:250px" name="attr_armorname" />
|
|
<input type="text" style="width:50px" name="attr_armorsoak" />
|
|
<input type="text" style="width:50px" name="attr_armorwt" />
|
|
<br />
|
|
<input type="text" style="margin-left:20px; width:335px" name="attr_armornote" data-i18n-placeholder="notes-u" placeholder="Notes" />
|
|
</fieldset>
|
|
</div>
|
|
<div class="sheet-heading">Mounts & Vehicles</div>
|
|
<div class="sheet-block">
|
|
<div class="sheet-top">
|
|
<span class="sheet-blocklabel" style="width: 140px;" data-i18n="name-u">Name</span>
|
|
<span class="sheet-blocklabel" style="width: 55px;" data-i18n="crew-u">Crew</span>
|
|
<span class="sheet-blocklabel" style="width: 30px;" data-i18n="agiabbr-u">AGI</span>
|
|
<span class="sheet-blocklabel" style="width: 62px;" data-i18n="move-u">Move</span>
|
|
<span class="sheet-blocklabel" style="width: 37px;" data-i18n="arm-u">ARM</span>
|
|
<span class="sheet-blocklabel" style="width: 20px;" data-i18n="health-u">Health</span>
|
|
</div>
|
|
<fieldset class="repeating_armor">
|
|
<input type="text" style="width:135px" name="attr_mntname" />
|
|
<input type="text" style="width:50px" name="attr_mntcrew" />
|
|
<input type="text" style="width:30px" name="attr_mntagi" />
|
|
<input type="text" style="width:60px" name="attr_mntmove" />
|
|
<input type="text" style="width:30px" name="attr_mntarm" />
|
|
<input type="text" style="width:35px" name="attr_mnthealth" />
|
|
<br />
|
|
<input type="text" style="margin-left:20px; width:335px" name="attr_mntnote" data-i18n-placeholder="notes-u" placeholder="Notes" />
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-col">
|
|
<div class="sheet-heading">Equipment</div>
|
|
<div class="sheet-block">
|
|
<div class="sheet-top">
|
|
<span class="sheet-blocklabel" style="width: 180px;" data-i18n="name-u">Name</span>
|
|
<span class="sheet-blocklabel" style="width: 130px;" data-i18n="loc-u">Location</span>
|
|
<span class="sheet-blocklabel" style="width: 20px;" data-i18n="wt-u">Wt</span>
|
|
</div>
|
|
<fieldset class="repeating_equipment">
|
|
<input type="text" style="width:175px" name="attr_equipname" />
|
|
<input type="text" style="width:125px" name="attr_equiploc" />
|
|
<input type="text" style="width:50px" name="attr_equipwt" />
|
|
<br />
|
|
<input type="text" style="margin-left:20px; width:335px" name="attr_equipnote" data-i18n-placeholder="notes-u" placeholder="Notes" />
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-tab sheet-tab-features">
|
|
<input type="radio" name="attr_tab" value="features">
|
|
<span class="sheet-tab-label">Spells & Powers</span>
|
|
<div class="sheet-tab-content">
|
|
<div class="sheet-content">
|
|
<div class="sheet-heading">Spells & Psionics</div>
|
|
<div class="sheet-block">
|
|
<div class="sheet-top">
|
|
<span class="sheet-blocklabel" style="width: 155px;" data-i18n="name-u">Name</span>
|
|
<span class="sheet-blocklabel" style="width: 55px;" data-i18n="dif-u">DIF</span>
|
|
<span class="sheet-blocklabel" style="width: 55px;" data-i18n="cast-u">Casting Time</span>
|
|
<span class="sheet-blocklabel" style="width: 55px;" data-i18n="rng-u">Range</span>
|
|
<span class="sheet-blocklabel" style="width: 80px;" data-i18n="dur-u">Duration</span>
|
|
<span class="sheet-blocklabel" style="width: 350px;" data-i18n="notes-u">Notes</span>
|
|
</div>
|
|
<fieldset class="repeating_spells">
|
|
<input type="text" style="width:150px" name="attr_spellname" />
|
|
<input type="text" style="width:50px" name="attr_spelldif" />
|
|
<input type="text" style="width:50px" name="attr_casttime" />
|
|
<input type="text" style="width:50px" name="attr_spellrng" />
|
|
<input type="text" style="width:75px" name="attr_spellduration" />
|
|
<input type="text" style="width:375px" name="attr_spellnote" data-i18n-placeholder="notes-u" placeholder="Notes" />
|
|
</fieldset>
|
|
</div>
|
|
<div class="sheet-heading">Powers</div>
|
|
<div class="sheet-block">
|
|
<div class="sheet-top">
|
|
<span class="sheet-blocklabel" style="width: 155px;" data-i18n="name-u">Name</span>
|
|
<span class="sheet-blocklabel" style="width: 130px;" data-i18n="rng-u">Range</span>
|
|
<span class="sheet-blocklabel" style="width: 200px;" data-i18n="meffect-u">Description</span>
|
|
</div>
|
|
<fieldset class="repeating_spells">
|
|
<input type="text" style="width:150px" name="attr_powername" />
|
|
<input type="text" style="width:125px" name="attr_powerrng" />
|
|
<input type="text" style="width:475px" name="attr_majoreffect" />
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-tab sheet-tab-features" style="display:none">
|
|
<input type="radio" name="attr_tab" value="">
|
|
<span class="sheet-tab-label"></span>
|
|
<div class="sheet-tab-content">
|
|
<div class="sheet-content">
|
|
Settings
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-tab sheet-tab-features" style="display:none">
|
|
<input type="radio" name="attr_tab" value="advanced">
|
|
<span class="sheet-tab-label">Advanced Settings</span>
|
|
<div class="sheet-tab-content">
|
|
<div class="sheet-content">
|
|
Settings
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<rolltemplate class="sheet-rolltemplate-basic">
|
|
<div class="sheet-template-container">
|
|
<div class="sheet-template-header" data-i18n="sc-u">{{type}} Check</div>
|
|
<div class="sheet-template-row">{{name}}: {{roll}}
|
|
{{#rollWasCrit() roll}}
|
|
<span> + </span>{{explode}}
|
|
{{#rollWasCrit() explode}}
|
|
<span data-i18n="crit-u">Critical!</span>
|
|
{{/rollWasCrit() explode}}
|
|
{{/rollWasCrit() roll}}
|
|
</div>
|
|
</div>
|
|
</rolltemplate>
|
|
|
|
<rolltemplate class="sheet-rolltemplate-stat">
|
|
<div class="sheet-template-container">
|
|
<div class="sheet-template-header" data-i18n="statc-u">Stat Check</div>
|
|
<div class="sheet-template-row">
|
|
{{#rollTotal() check 36}}
|
|
Fumble {{name}}: {{check}}
|
|
{{/rollTotal() check 36}}
|
|
{{#rollTotal() check 1}}
|
|
Crit {{name}}: {{check}}
|
|
{{/rollTotal() check 1}}
|
|
{{#rollBetween() check 2 35}}
|
|
{{name}}: {{check}}
|
|
{{/rollBetween() check 2 35}}
|
|
</div>
|
|
</div>
|
|
</rolltemplate>
|
|
|
|
<script type="text/worker">
|
|
|
|
on("change:agi", function() {
|
|
getAttrs(["agi","xp_total","xp_sacrificed","move_mod","tough_xp_used","aware_xp_used","will_xp_used","agiskill_xp_used","toughskill_xp_used","awareskill_xp_used","willskill_xp_used"], function(values) {
|
|
agi = parseInt(values.agi,10)||0;
|
|
xp_total = parseInt(values.xp_total,10)||0;
|
|
xp_sacrificed = parseInt(values.xp_sacrificed,10)||0;
|
|
move_mod = parseInt(values.move_mod,10)||0;
|
|
tough_xp_used = parseInt(values.tough_xp_used,10)||0;
|
|
aware_xp_used = parseInt(values.aware_xp_used,10)||0;
|
|
will_xp_used = parseInt(values.will_xp_used,10)||0;
|
|
agiskill_xp_used = parseInt(values.agiskill_xp_used,10)||0;
|
|
toughskill_xp_used = parseInt(values.toughskill_xp_used,10)||0;
|
|
awareskill_xp_used = parseInt(values.awareskill_xp_used,10)||0;
|
|
willskill_xp_used = parseInt(values.willskill_xp_used,10)||0;
|
|
agi_xp_used = calc_XPUsed(agi);
|
|
xpUsed = agi_xp_used + tough_xp_used + aware_xp_used + will_xp_used + agiskill_xp_used + toughskill_xp_used + awareskill_xp_used + willskill_xp_used;
|
|
setAttrs({
|
|
move: 9 + agi_xp_used,
|
|
curmove: 9 + agi_xp_used + move_mod,
|
|
agi_xp_used: agi_xp_used,
|
|
xp_spent: xpUsed,
|
|
xp_reserve: xp_total - xpUsed - xp_sacrificed
|
|
});
|
|
});
|
|
});
|
|
|
|
on("change:tough", function() {
|
|
getAttrs(["tough","xp_total","xp_sacrificed","injury","agi_xp_used","aware_xp_used","will_xp_used","agiskill_xp_used","toughskill_xp_used","awareskill_xp_used","willskill_xp_used"], function(values) {
|
|
tough = parseInt(values.tough,10)||0;
|
|
xp_total = parseInt(values.xp_total,10)||0;
|
|
xp_sacrificed = parseInt(values.xp_sacrificed,10)||0;
|
|
injuries = parseInt(values.injury,10)||0;
|
|
agi_xp_used = parseInt(values.agi_xp_used,10)||0;
|
|
aware_xp_used = parseInt(values.aware_xp_used,10)||0;
|
|
will_xp_used = parseInt(values.will_xp_used,10)||0;
|
|
agiskill_xp_used = parseInt(values.agiskill_xp_used,10)||0;
|
|
toughskill_xp_used = parseInt(values.toughskill_xp_used,10)||0;
|
|
awareskill_xp_used = parseInt(values.awareskill_xp_used,10)||0;
|
|
willskill_xp_used = parseInt(values.willskill_xp_used,10)||0;
|
|
tough_xp_used = calc_XPUsed(tough);
|
|
xpUsed = agi_xp_used + tough_xp_used + aware_xp_used + will_xp_used + agiskill_xp_used + toughskill_xp_used + awareskill_xp_used + willskill_xp_used;
|
|
setAttrs({
|
|
health: 9 + tough_xp_used,
|
|
curhealth: 9 + tough_xp_used - injuries,
|
|
tough_xp_used: tough_xp_used,
|
|
xp_spent: xpUsed,
|
|
xp_reserve: xp_total - xpUsed - xp_sacrificed
|
|
});
|
|
});
|
|
});
|
|
|
|
on("change:aware", function() {
|
|
getAttrs(["aware","xp_total","xp_sacrificed","init_mod","tough_xp_used","agi_xp_used","will_xp_used","agiskill_xp_used","toughskill_xp_used","awareskill_xp_used","willskill_xp_used"], function(values) {
|
|
aware = parseInt(values.aware,10)||0;
|
|
xp_total = parseInt(values.xp_total,10)||0;
|
|
xp_sacrificed = parseInt(values.xp_sacrificed,10)||0;
|
|
init_mod = parseInt(values.init_mod,10)||0;
|
|
agi_xp_used = parseInt(values.agi_xp_used,10)||0;
|
|
tough_xp_used = parseInt(values.tough_xp_used,10)||0;
|
|
will_xp_used = parseInt(values.will_xp_used,10)||0;
|
|
agiskill_xp_used = parseInt(values.agiskill_xp_used,10)||0;
|
|
toughskill_xp_used = parseInt(values.toughskill_xp_used,10)||0;
|
|
awareskill_xp_used = parseInt(values.awareskill_xp_used,10)||0;
|
|
willskill_xp_used = parseInt(values.willskill_xp_used,10)||0;
|
|
aware_xp_used = calc_XPUsed(aware);
|
|
xpUsed = agi_xp_used + tough_xp_used + aware_xp_used + will_xp_used + agiskill_xp_used + toughskill_xp_used + awareskill_xp_used + willskill_xp_used;
|
|
setAttrs({
|
|
initiative: 9 + aware_xp_used,
|
|
curinit: 9 + aware_xp_used + init_mod,
|
|
aware_xp_used: aware_xp_used,
|
|
xp_spent: xpUsed,
|
|
xp_reserve: xp_total - xpUsed - xp_sacrificed
|
|
});
|
|
});
|
|
});
|
|
|
|
on("change:will", function() {
|
|
getAttrs(["will","xp_total","xp_sacrificed","spirit_mod","tough_xp_used","aware_xp_used","agi_xp_used","agiskill_xp_used","toughskill_xp_used","awareskill_xp_used","willskill_xp_used"], function(values) {
|
|
will = parseInt(values.will,10)||0;
|
|
xp_total = parseInt(values.xp_total,10)||0;
|
|
xp_sacrificed = parseInt(values.xp_sacrificed,10)||0;
|
|
spirit_mod = parseInt(values.spirit_mod,10)||0;
|
|
agi_xp_used = parseInt(values.agi_xp_used,10)||0;
|
|
tough_xp_used = parseInt(values.tough_xp_used,10)||0;
|
|
aware_xp_used = parseInt(values.aware_xp_used,10)||0;
|
|
agiskill_xp_used = parseInt(values.agiskill_xp_used,10)||0;
|
|
toughskill_xp_used = parseInt(values.toughskill_xp_used,10)||0;
|
|
awareskill_xp_used = parseInt(values.awareskill_xp_used,10)||0;
|
|
willskill_xp_used = parseInt(values.willskill_xp_used,10)||0;
|
|
will_xp_used = calc_XPUsed(will);
|
|
xpUsed = agi_xp_used + tough_xp_used + aware_xp_used + will_xp_used + agiskill_xp_used + toughskill_xp_used + awareskill_xp_used + willskill_xp_used;
|
|
setAttrs({
|
|
spirit: 9 + will_xp_used,
|
|
curspirit: 9 + will_xp_used + spirit_mod,
|
|
will_xp_used: will_xp_used,
|
|
xp_spent: xpUsed,
|
|
xp_reserve: xp_total - xpUsed - xp_sacrificed
|
|
});
|
|
});
|
|
});
|
|
|
|
on("change:xp_total", function() {
|
|
getAttrs(["xp_total","xp_spent","xp_sacrificed"], function(values) {
|
|
xp_total = parseInt(values.xp_total,10)||0;
|
|
xp_spent = parseInt(values.xp_spent,10)||0;
|
|
xp_sacrificed = parseInt(values.xp_sacrificed,10)||0;
|
|
setAttrs({
|
|
xp_reserve: xp_total - xp_spent - xp_sacrificed
|
|
});
|
|
});
|
|
});
|
|
|
|
on("change:xp_sacrificed", function() {
|
|
getAttrs(["xp_total","xp_spent","xp_sacrificed"], function(values) {
|
|
xp_total = parseInt(values.xp_total,10)||0;
|
|
xp_spent = parseInt(values.xp_spent,10)||0;
|
|
xp_sacrificed = parseInt(values.xp_sacrificed,10)||0;
|
|
setAttrs({
|
|
xp_reserve: xp_total - xp_spent - xp_sacrificed
|
|
});
|
|
});
|
|
});
|
|
|
|
on("change:injury", function() {
|
|
getAttrs(["health","injury"], function(values) {
|
|
health = parseInt(values.health,10)||0;
|
|
injuries = parseInt(values.injury,10)||0;
|
|
setAttrs({
|
|
curhealth: health - injuries
|
|
});
|
|
});
|
|
});
|
|
|
|
on("change:move_mod", function() {
|
|
getAttrs(["move","move_mod"], function(values) {
|
|
move = parseInt(values.move,10)||0;
|
|
move_mod = parseInt(values.move_mod,10)||0;
|
|
setAttrs({
|
|
curmove: move + move_mod
|
|
});
|
|
});
|
|
});
|
|
|
|
on("change:init_mod", function() {
|
|
getAttrs(["initiative","init_mod"], function(values) {
|
|
init = parseInt(values.initiative,10)||0;
|
|
init_mod = parseInt(values.init_mod,10)||0;
|
|
setAttrs({
|
|
curinit: init + init_mod
|
|
});
|
|
});
|
|
});
|
|
|
|
on("change:spirit_mod", function() {
|
|
getAttrs(["spirit","spirit_mod"], function(values) {
|
|
spirit = parseInt(values.spirit,10)||0;
|
|
spirit_mod = parseInt(values.spirit_mod,10)||0;
|
|
setAttrs({
|
|
curspirit: spirit + spirit_mod
|
|
});
|
|
});
|
|
});
|
|
|
|
on('change:repeating_agiskills remove:repeating_agiskills', () => {
|
|
repeatingXPSum("agiskill_xp_used","agiskills","agi_skill_rating", function() {
|
|
getAttrs(["xp_total","xp_sacrificed","agi_xp_used","tough_xp_used","aware_xp_used","will_xp_used","agiskill_xp_used","toughskill_xp_used","awareskill_xp_used","willskill_xp_used"], function(values) {
|
|
xp_total = parseInt(values.xp_total,10)||0;
|
|
xp_sacrificed = parseInt(values.xp_sacrificed,10)||0;
|
|
agi_xp_used = parseInt(values.agi_xp_used,10)||0;
|
|
tough_xp_used = parseInt(values.tough_xp_used,10)||0;
|
|
aware_xp_used = parseInt(values.aware_xp_used,10)||0;
|
|
will_xp_used = parseInt(values.will_xp_used,10)||0;
|
|
agiskill_xp_used = parseInt(values.agiskill_xp_used,10)||0;
|
|
toughskill_xp_used = parseInt(values.toughskill_xp_used,10)||0;
|
|
awareskill_xp_used = parseInt(values.awareskill_xp_used,10)||0;
|
|
willskill_xp_used = parseInt(values.willskill_xp_used,10)||0;
|
|
xpUsed = agi_xp_used + tough_xp_used + aware_xp_used + will_xp_used + agiskill_xp_used + toughskill_xp_used + awareskill_xp_used + willskill_xp_used;
|
|
setAttrs({
|
|
xp_spent: xpUsed,
|
|
xp_reserve: xp_total - xpUsed - xp_sacrificed
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
on('change:repeating_toughskills remove:repeating_toughskills', () => {
|
|
repeatingXPSum("toughskill_xp_used","toughskills","tough_skill_rating", function() {
|
|
getAttrs(["xp_total","xp_sacrificed","agi_xp_used","tough_xp_used","aware_xp_used","will_xp_used","agiskill_xp_used","toughskill_xp_used","awareskill_xp_used","willskill_xp_used"], function(values) {
|
|
xp_total = parseInt(values.xp_total,10)||0;
|
|
xp_sacrificed = parseInt(values.xp_sacrificed,10)||0;
|
|
agi_xp_used = parseInt(values.agi_xp_used,10)||0;
|
|
tough_xp_used = parseInt(values.tough_xp_used,10)||0;
|
|
aware_xp_used = parseInt(values.aware_xp_used,10)||0;
|
|
will_xp_used = parseInt(values.will_xp_used,10)||0;
|
|
agiskill_xp_used = parseInt(values.agiskill_xp_used,10)||0;
|
|
toughskill_xp_used = parseInt(values.toughskill_xp_used,10)||0;
|
|
awareskill_xp_used = parseInt(values.awareskill_xp_used,10)||0;
|
|
willskill_xp_used = parseInt(values.willskill_xp_used,10)||0;
|
|
xpUsed = agi_xp_used + tough_xp_used + aware_xp_used + will_xp_used + agiskill_xp_used + toughskill_xp_used + awareskill_xp_used + willskill_xp_used;
|
|
setAttrs({
|
|
xp_spent: xpUsed,
|
|
xp_reserve: xp_total - xpUsed - xp_sacrificed
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
on('change:repeating_awareskills remove:repeating_awareskills', () => {
|
|
repeatingXPSum("awareskill_xp_used","awareskills","aware_skill_rating", function() {
|
|
getAttrs(["xp_total","xp_sacrificed","agi_xp_used","tough_xp_used","aware_xp_used","will_xp_used","agiskill_xp_used","toughskill_xp_used","awareskill_xp_used","willskill_xp_used"], function(values) {
|
|
xp_total = parseInt(values.xp_total,10)||0;
|
|
xp_sacrificed = parseInt(values.xp_sacrificed,10)||0;
|
|
agi_xp_used = parseInt(values.agi_xp_used,10)||0;
|
|
tough_xp_used = parseInt(values.tough_xp_used,10)||0;
|
|
aware_xp_used = parseInt(values.aware_xp_used,10)||0;
|
|
will_xp_used = parseInt(values.will_xp_used,10)||0;
|
|
agiskill_xp_used = parseInt(values.agiskill_xp_used,10)||0;
|
|
toughskill_xp_used = parseInt(values.toughskill_xp_used,10)||0;
|
|
awareskill_xp_used = parseInt(values.awareskill_xp_used,10)||0;
|
|
willskill_xp_used = parseInt(values.willskill_xp_used,10)||0;
|
|
xpUsed = agi_xp_used + tough_xp_used + aware_xp_used + will_xp_used + agiskill_xp_used + toughskill_xp_used + awareskill_xp_used + willskill_xp_used;
|
|
setAttrs({
|
|
xp_spent: xpUsed,
|
|
xp_reserve: xp_total - xpUsed - xp_sacrificed
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
on('change:repeating_willskills remove:repeating_willskills', () => {
|
|
repeatingXPSum("willskill_xp_used","willskills","will_skill_rating", function() {
|
|
getAttrs(["xp_total","xp_sacrificed","agi_xp_used","tough_xp_used","aware_xp_used","will_xp_used","agiskill_xp_used","toughskill_xp_used","awareskill_xp_used","willskill_xp_used"], function(values) {
|
|
xp_total = parseInt(values.xp_total,10)||0;
|
|
xp_sacrificed = parseInt(values.xp_sacrificed,10)||0;
|
|
agi_xp_used = parseInt(values.agi_xp_used,10)||0;
|
|
tough_xp_used = parseInt(values.tough_xp_used,10)||0;
|
|
aware_xp_used = parseInt(values.aware_xp_used,10)||0;
|
|
will_xp_used = parseInt(values.will_xp_used,10)||0;
|
|
agiskill_xp_used = parseInt(values.agiskill_xp_used,10)||0;
|
|
toughskill_xp_used = parseInt(values.toughskill_xp_used,10)||0;
|
|
awareskill_xp_used = parseInt(values.awareskill_xp_used,10)||0;
|
|
willskill_xp_used = parseInt(values.willskill_xp_used,10)||0;
|
|
xpUsed = agi_xp_used + tough_xp_used + aware_xp_used + will_xp_used + agiskill_xp_used + toughskill_xp_used + awareskill_xp_used + willskill_xp_used;
|
|
setAttrs({
|
|
xp_spent: xpUsed,
|
|
xp_reserve: xp_total - xpUsed - xp_sacrificed
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
function calc_XPUsed(grade) {
|
|
total = 0;
|
|
if (grade >= 0) {
|
|
for (i = 1; i <= grade; i++) {total += i; }
|
|
} else {
|
|
total = grade;
|
|
}
|
|
return total;
|
|
}
|
|
|
|
|
|
/* ===== PARAMETERS ==========
|
|
destination = the name of the attribute that stores the total quantity
|
|
section = name of repeating fieldset, without the repeating_
|
|
fields = the name of the attribute field to be summed
|
|
can be a single attribute: 'weight'
|
|
or an array of attributes: ['weight','number','equipped']
|
|
multiplier (optional) = a multiplier to to entire fieldset total. For instance, if summing coins of weight 0.02, might want to multiply the final total by 0.02.
|
|
*/
|
|
const repeatingXPSum = (destination, section, fields, callback, multiplier = 1) => {
|
|
if (!Array.isArray(fields)) fields = [fields];
|
|
getSectionIDs(`repeating_${section}`, idArray => {
|
|
const attrArray = idArray.reduce( (m,id) => [...m, ...(fields.map(field => `repeating_${section}_${id}_${field}`))],[]);
|
|
getAttrs(attrArray, v => {
|
|
console.log("===== values of v: "+ JSON.stringify(v) +" =====");
|
|
// getValue: if not a number, returns 1 if it is 'on' (checkbox), otherwise returns 0..
|
|
const getValue = (section, id,field) => parseFloat(v[`repeating_${section}_${id}_${field}`], 10) || (v[`repeating_${section}_${id}_${field}`] === 'on' ? 1 : 0);
|
|
const sumTotal = idArray.reduce((total, id) => total + fields.reduce((subtotal,field) => subtotal * calc_XPUsed(getValue(section, id,field)),1),0);
|
|
setAttrs({[destination]: sumTotal * multiplier}, callback);
|
|
});
|
|
});
|
|
};
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|