mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-30 03:40:32 +00:00
1657 lines
74 KiB
HTML
1657 lines
74 KiB
HTML
<div class="mainsheet">
|
|
<div class="twoFifths logo">
|
|
<img class="logo" src="https://raw.githubusercontent.com/Drazili/Legends-Roll20/refs/heads/main/Powers%20Division.png"></img>
|
|
<!-- <img class="logo" src="https://raw.githubusercontent.com/Drazili/Legends-Roll20/refs/heads/main/Legends%20background.png"></img> -->
|
|
<!-- <span>Powered Individual Records - Form 2A</span> -->
|
|
</div>
|
|
|
|
<div class="threeFifths">
|
|
<section>
|
|
<div class="sectionHeader">
|
|
<span>General Information</span>
|
|
</div>
|
|
<div class="sectionContent">
|
|
<span class="sectionContentStyle sectionContentMedium spanTitle">Code Name:</span>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input class="largeInput" type="text" name="attr_code_name" value="">
|
|
</div>
|
|
|
|
<span class="sectionContentStyle sectionContentMedium spanTitle dividerLeft">Level:</span>
|
|
<div class="sectionContentStyle sectionContentSmall">
|
|
<input type="number" name="attr_level" value="0">
|
|
</div>
|
|
|
|
<span class="sectionContentStyle sectionContentMedium spanTitle dividerLeft">Age:</span>
|
|
<div class="sectionContentStyle sectionContentSmall">
|
|
<input class="smallInput" type="text" name="attr_age" value="">
|
|
</div>
|
|
|
|
<span class="sectionContentStyle sectionContentMedium spanTitle">Legal Name:</span>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input class="largeInput" type="text" name="attr_legal_name" value="">
|
|
</div>
|
|
|
|
<span class="sectionContentStyle sectionContentMedium spanTitle dividerLeft">Current XP:</span>
|
|
<div class="sectionContentStyle sectionContentSmall">
|
|
<input type="number" name="attr_experience_points" value="0">
|
|
</div>
|
|
|
|
<span class="sectionContentStyle sectionContentMedium spanTitle dividerLeft">Height:</span>
|
|
<div class="sectionContentStyle sectionContentSmall">
|
|
<input class="smallInput" type="text" name="attr_height" value="">
|
|
</div>
|
|
|
|
<span class="sectionContentStyle sectionContentMedium spanTitle">Pronouns:</span>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input class="largeInput" type="text" name="attr_pronouns" value="">
|
|
</div>
|
|
|
|
<span class="sectionContentStyle sectionContentMedium spanTitle dividerLeft">Training Points:</span>
|
|
<div class="sectionContentStyle sectionContentSmall">
|
|
<input type="number" name="attr_training_points" value="0">
|
|
</div>
|
|
|
|
<span class="sectionContentStyle sectionContentMedium spanTitle dividerLeft">Weight:</span>
|
|
<div class="sectionContentStyle sectionContentSmall">
|
|
<input class="smallInput" type="text" name="attr_weight" value="">
|
|
</div>
|
|
|
|
<span class="sectionContentStyle sectionContentMedium spanTitle">Power Setting:</span>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<select class="largeInput" name="attr_power_setting">
|
|
<option value="none" selected disabled hidden>Choose a power setting</option>
|
|
<option>Low</option>
|
|
<option>Medium</option>
|
|
<option>High</option>
|
|
<option>Godly</option>
|
|
</select>
|
|
</div>
|
|
|
|
<span class="sectionContentStyle sectionContentMedium spanTitle dividerLeft">Hero Points:</span>
|
|
<div class="sectionContentStyle sectionContentSmall">
|
|
<input type="number" name="attr_hero_points" value="0">
|
|
</div>
|
|
|
|
<span class="sectionContentStyle sectionContentQuarter dividerLeft"> </span>
|
|
|
|
|
|
<div class="sectionContentStyle sectionContentAll"></div>
|
|
</div>
|
|
</section>
|
|
</div>
|
|
|
|
<div class="twoFifths" style="display: none;">
|
|
<section>
|
|
<div class="sectionHeader">
|
|
<span>Powers</span>
|
|
</div>
|
|
<div class="sectionContent">
|
|
<textarea name="attr_powers" cols="150"></textarea>
|
|
</div>
|
|
</section>
|
|
</div>
|
|
|
|
<div class="threeFifths" style="display: none;">
|
|
<section>
|
|
<div class="sectionHeader">
|
|
<span>Abilities</span>
|
|
</div>
|
|
<div class="sectionContent">
|
|
<textarea name="attr_abilities" cols="150"></textarea>
|
|
</div>
|
|
</section>
|
|
</div>
|
|
|
|
<!-- Skills -->
|
|
|
|
<div class="twoFifths sectionContent tab">
|
|
<section class="sectionContentAll">
|
|
<div class="sectionHeader">
|
|
<span>Skills</span>
|
|
</div>
|
|
<div class="sectionContent">
|
|
<div class="sectionContentStyle sectionContentLarge label"> </div>
|
|
<label class="sectionContentStyle sectionContentQuarter label">
|
|
<input class="hidden" id="unpow" type="radio" name="attr_power_status" value="unpowered">
|
|
<span for="unpow">Unpowered</span>
|
|
</label>
|
|
<label class="sectionContentStyle sectionContentQuarter label">
|
|
<input class="hidden" id="pow" type="radio" name="attr_power_status" value="powered" checked>
|
|
<span for="pow">Powered</span>
|
|
</label>
|
|
<span class="sectionContentStyle sectionContentMedium label">Mod:</span>
|
|
|
|
<!-- Agility Data -->
|
|
|
|
<div class="sectionContentStyle sectionContentSmall">
|
|
<button class="" type="roll" name="roll_agility" value="/r 1d20@{agility}"></Button>
|
|
</div>
|
|
<input type="hidden" name="attr_agility" value="">
|
|
|
|
<span class="sectionContentStyle sectionContentQuarter spanTitle">Agility:</span>
|
|
<div class="sectionContentStyle sectionContentQuarter">
|
|
<input type="number" name="attr_agility_unpowered" value="0">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentQuarter">
|
|
<input type="number" name="attr_agility_powered" value="0">
|
|
</div>
|
|
|
|
<div class="sectionContentStyle sectionContentMedium">
|
|
<input class="tinyInput" type="number" name="attr_agility_mod" value="0">
|
|
</div>
|
|
|
|
<!-- Charisma Data -->
|
|
|
|
<div class="sectionContentStyle sectionContentSmall">
|
|
<button class="" type="roll" name="roll_charisma" value="/r 1d20@{charisma}"></Button>
|
|
</div>
|
|
<input type="hidden" name="attr_charisma" value="">
|
|
|
|
<span class="sectionContentStyle sectionContentQuarter spanTitle">Charisma:</span>
|
|
<div class="sectionContentStyle sectionContentQuarter">
|
|
<input type="number" name="attr_charisma_unpowered" value="0">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentQuarter">
|
|
<input type="number" name="attr_charisma_powered" value="0">
|
|
</div>
|
|
|
|
<div class="sectionContentStyle sectionContentMedium">
|
|
<input class="tinyInput" type="number" name="attr_charisma_mod" value="0">
|
|
</div>
|
|
|
|
<!-- Intelligence Data -->
|
|
|
|
<div class="sectionContentStyle sectionContentSmall">
|
|
<button class="" type="roll" name="roll_intelligence" value="/r 1d20@{intelligence}"></Button>
|
|
</div>
|
|
<input type="hidden" name="attr_intelligence" value="">
|
|
|
|
<span class="sectionContentStyle sectionContentQuarter spanTitle">Intelligence:</span>
|
|
<div class="sectionContentStyle sectionContentQuarter">
|
|
<input class="" type="number" name="attr_intelligence_unpowered" value="0">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentQuarter">
|
|
<input class="" type="number" name="attr_intelligence_powered" value="0">
|
|
</div>
|
|
|
|
<div class="sectionContentStyle sectionContentMedium">
|
|
<input class="tinyInput" type="number" name="attr_intelligence_mod" value="0">
|
|
</div>
|
|
|
|
<!-- Senses Data -->
|
|
|
|
<div class="sectionContentStyle sectionContentSmall">
|
|
<button class="" type="roll" name="roll_senses" value="/r 1d20@{senses}"></Button>
|
|
</div>
|
|
<input type="hidden" name="attr_senses" value="">
|
|
|
|
<span class="sectionContentStyle sectionContentQuarter spanTitle">Senses:</span>
|
|
<div class="sectionContentStyle sectionContentQuarter">
|
|
<input type="number" name="attr_senses_unpowered" value="0">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentQuarter">
|
|
<input type="number" name="attr_senses_powered" value="0">
|
|
</div>
|
|
|
|
<div class="sectionContentStyle sectionContentMedium">
|
|
<input class="tinyInput" type="number" name="attr_senses_mod" value="0">
|
|
</div>
|
|
|
|
<!-- Speed Data -->
|
|
|
|
<div class="sectionContentStyle sectionContentSmall">
|
|
<button class="" type="roll" name="roll_speed" value="/r 1d20@{speed}"></Button>
|
|
</div>
|
|
<input type="hidden" name="attr_speed" value="">
|
|
|
|
<span class="sectionContentStyle sectionContentQuarter spanTitle">Speed:</span>
|
|
<div class="sectionContentStyle sectionContentQuarter">
|
|
<input type="number" name="attr_speed_unpowered" value="0">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentQuarter">
|
|
<input type="number" name="attr_speed_powered" value="0">
|
|
</div>
|
|
|
|
<div class="sectionContentStyle sectionContentMedium">
|
|
<input class="tinyInput" type="number" name="attr_speed_mod" value="0">
|
|
</div>
|
|
|
|
<!-- Stamina Data -->
|
|
|
|
<div class="sectionContentStyle sectionContentSmall">
|
|
<button class="" type="roll" name="roll_stamina" value="/r 1d20@{stamina}"></Button>
|
|
</div>
|
|
<input type="hidden" name="attr_stamina" value="">
|
|
|
|
<span class="sectionContentStyle sectionContentQuarter spanTitle">Stamina:</span>
|
|
<div class="sectionContentStyle sectionContentQuarter">
|
|
<input type="number" name="attr_stamina_unpowered" value="0">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentQuarter">
|
|
<input type="number" name="attr_stamina_powered" value="0">
|
|
</div>
|
|
|
|
<div class="sectionContentStyle sectionContentMedium">
|
|
<input class="tinyInput" type="number" name="attr_stamina_mod" value="0">
|
|
</div>
|
|
|
|
<!-- Strength Data -->
|
|
|
|
<div class="sectionContentStyle sectionContentSmall">
|
|
<button class="" type="roll" name="roll_strength" value="/r 1d20@{strength}"></Button>
|
|
</div>
|
|
<input type="hidden" name="attr_strength" value="">
|
|
|
|
<span class="sectionContentStyle sectionContentQuarter spanTitle">Strength:</span>
|
|
<div class="sectionContentStyle sectionContentQuarter">
|
|
<input type="number" name="attr_strength_unpowered" value="0">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentQuarter">
|
|
<input type="number" name="attr_strength_powered" value="0">
|
|
</div>
|
|
|
|
<div class="sectionContentStyle sectionContentMedium">
|
|
<input class="tinyInput" type="number" name="attr_strength_mod" value="0">
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Durability -->
|
|
|
|
<section class="sectionContentAll">
|
|
<div class="sectionHeader">
|
|
<span>Durability</span>
|
|
</div>
|
|
<div class="sectionContent">
|
|
|
|
<!-- Durability Labels -->
|
|
|
|
<span class="sectionContentStyle sectionContentLarge label">Type:</span>
|
|
<span class="sectionContentStyle sectionContentLarge label">Resistant:</span>
|
|
<span class="sectionContentStyle sectionContentLarge label">Invulnerable</span>
|
|
|
|
<!-- Blunt Data -->
|
|
|
|
<span class="sectionContentStyle sectionContentLarge spanTitle">Blunt:</span>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input
|
|
type="checkbox"
|
|
name="attr_blunt_resistant"
|
|
value="1">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input
|
|
type="checkbox"
|
|
name="attr_blunt_invulnerable"
|
|
value="1">
|
|
</div>
|
|
|
|
<!-- Disruption Data -->
|
|
|
|
<span class="sectionContentStyle sectionContentLarge spanTitle">Disruption:</span>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input
|
|
type="checkbox"
|
|
name="attr_disruption_resistant"
|
|
value="1">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input
|
|
type="checkbox"
|
|
name="attr_disruption_invulnerable"
|
|
value="1">
|
|
</div>
|
|
|
|
<!-- Earth Data -->
|
|
|
|
<span class="sectionContentStyle sectionContentLarge spanTitle">Earth:</span>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input
|
|
type="checkbox"
|
|
name="attr_earth_resistant"
|
|
value="1">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input
|
|
type="checkbox"
|
|
name="attr_earth_invulnerable"
|
|
value="1">
|
|
</div>
|
|
|
|
<!-- Fall Data -->
|
|
|
|
<span class="sectionContentStyle sectionContentLarge spanTitle">Fall:</span>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input
|
|
type="checkbox"
|
|
name="attr_fall_resistant"
|
|
value="1">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input
|
|
type="checkbox"
|
|
name="attr_fall_invulnerable"
|
|
value="1">
|
|
</div>
|
|
|
|
<!-- Fire Data -->
|
|
|
|
<span class="sectionContentStyle sectionContentLarge spanTitle">Fire:</span>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input
|
|
type="checkbox"
|
|
name="attr_fire_resistant"
|
|
value="1">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input
|
|
type="checkbox"
|
|
name="attr_fire_invulnerable"
|
|
value="1">
|
|
</div>
|
|
|
|
<!-- Force Fields Data -->
|
|
|
|
<span class="sectionContentStyle sectionContentLarge spanTitle">Force Fields:</span>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input
|
|
type="checkbox"
|
|
name="attr_force_fields_resistant"
|
|
value="1">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input
|
|
type="checkbox"
|
|
name="attr_force_fields_invulnerable"
|
|
value="1">
|
|
</div>
|
|
|
|
<!-- Ice Data -->
|
|
|
|
<span class="sectionContentStyle sectionContentLarge spanTitle">Ice:</span>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input
|
|
type="checkbox"
|
|
name="attr_ice_resistant"
|
|
value="1">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input
|
|
type="checkbox"
|
|
name="attr_ice_invulnerable"
|
|
value="1">
|
|
</div>
|
|
|
|
<!-- Light Data -->
|
|
|
|
<span class="sectionContentStyle sectionContentLarge spanTitle">Light:</span>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input
|
|
type="checkbox"
|
|
name="attr_light_resistant"
|
|
value="1">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input
|
|
type="checkbox"
|
|
name="attr_light_invulnerable"
|
|
value="1">
|
|
</div>
|
|
|
|
<!-- Lightning Data -->
|
|
|
|
<span class="sectionContentStyle sectionContentLarge spanTitle">Lightning:</span>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input
|
|
type="checkbox"
|
|
name="attr_lightning_resistant"
|
|
value="1">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input
|
|
type="checkbox"
|
|
name="attr_lightning_invulnerable"
|
|
value="1">
|
|
</div>
|
|
|
|
<!-- Piercing Data -->
|
|
|
|
<span class="sectionContentStyle sectionContentLarge spanTitle">Piercing:</span>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input
|
|
type="checkbox"
|
|
name="attr_piercing_resistant"
|
|
value="1">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input
|
|
type="checkbox"
|
|
name="attr_piercing_invulnerable"
|
|
value="1">
|
|
</div>
|
|
|
|
<!-- Poison Data -->
|
|
|
|
<span class="sectionContentStyle sectionContentLarge spanTitle">Poison:</span>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input
|
|
type="checkbox"
|
|
name="attr_poison_resistant"
|
|
value="1">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input
|
|
type="checkbox"
|
|
name="attr_poison_invulnerable"
|
|
value="1">
|
|
</div>
|
|
|
|
<!-- Power Data -->
|
|
|
|
<span class="sectionContentStyle sectionContentLarge spanTitle">Power:</span>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input
|
|
type="checkbox"
|
|
name="attr_power_resistant"
|
|
value="1">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input
|
|
type="checkbox"
|
|
name="attr_power_invulnerable"
|
|
value="1">
|
|
</div>
|
|
|
|
<!-- Psychic Data -->
|
|
|
|
<span class="sectionContentStyle sectionContentLarge spanTitle">Psychic:</span>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input
|
|
type="checkbox"
|
|
name="attr_psychic_resistant"
|
|
value="1">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input
|
|
type="checkbox"
|
|
name="attr_psychic_invulnerable"
|
|
value="1">
|
|
</div>
|
|
|
|
<!-- Slashing Data -->
|
|
|
|
<span class="sectionContentStyle sectionContentLarge spanTitle">Slashing:</span>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input
|
|
type="checkbox"
|
|
name="attr_slashing_resistant"
|
|
value="1">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input
|
|
type="checkbox"
|
|
name="attr_slashing_invulnerable"
|
|
value="1">
|
|
</div>
|
|
|
|
<!-- Sonic Data -->
|
|
|
|
<span class="sectionContentStyle sectionContentLarge spanTitle">Sonic:</span>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input
|
|
type="checkbox"
|
|
name="attr_sonic_resistant"
|
|
value="1">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input
|
|
type="checkbox"
|
|
name="attr_sonic_invulnerable"
|
|
value="1">
|
|
</div>
|
|
</div>
|
|
</section>
|
|
</div>
|
|
|
|
<div class="threeFifths">
|
|
|
|
<!-- Tabs buttons -->
|
|
|
|
<input type="hidden" name="attr_sheet_tab" class="tabs" value="combat_tab">
|
|
<div class="sectionHeader">
|
|
<button class="combat_tab_button tabButton" type="action" name="act_combat_tab">Combat</button>
|
|
<button class="powers_tab_button tabButton" type="action" name="act_powers_tab">Powers</button>
|
|
<button class="details_tab_button tabButton" type="action" name="act_details_tab">Personal Details</button>
|
|
<button class="notes_tab_button tabButton" type="action" name="act_notes_tab">Notes</button>
|
|
<button class="advancements_tab_button tabButton" type="action" name="act_advancements_tab">Advancements</button>
|
|
<!-- <button class="settings_tab_button tabButton" type="action" name="act_settings_tab">Settings</button> -->
|
|
</div>
|
|
|
|
<!-- TAB: Combat -->
|
|
|
|
<div class="combat_tab tab sectionContent">
|
|
|
|
<!-- Attacks -->
|
|
|
|
<section class="sectionContentAll">
|
|
<div class="sectionHeader">
|
|
<span>Attacks</span>
|
|
</div>
|
|
<fieldset class="repeating_attacks">
|
|
<div class="sectionContent">
|
|
<div class="sectionContent sectionContentHalf">
|
|
<span class="sectionContentStyle sectionContentMedium label">Atk</span>
|
|
<span class="sectionContentStyle sectionContentLarge label">Name</span>
|
|
<span class="sectionContentStyle sectionContentMedium label">SP</span>
|
|
<span class="sectionContentStyle sectionContentLarge label">Bonus</span>
|
|
|
|
<div class="sectionContentStyle sectionContentMedium">
|
|
<button class="" type="roll" name="roll_attack" value="/r 1d20@{attack}"></Button>
|
|
</div>
|
|
<input type="hidden" name="attr_attack" value="">
|
|
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input class="mediumInput" type="text" name="attr_attack-name" value="" placeholder="Punch!">
|
|
</div>
|
|
|
|
<div class="sectionContentStyle sectionContentMedium">
|
|
<input class="tinyInput" type="number" name="attr_attack-cost" value="" placeholder="5">
|
|
</div>
|
|
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input class="tinyInput" type="number" name="attr_attack-bonus" placeholder="0">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="sectionContent sectionContentHalf dividerLeft">
|
|
|
|
<span class="sectionContentStyle sectionContentMedium label">Dmg</span>
|
|
<span class="sectionContentStyle sectionContentLarge label">Bonus</span>
|
|
<span class="sectionContentStyle sectionContentMedium label">HtH</span>
|
|
<span class="sectionContentStyle sectionContentLarge label">Type</span>
|
|
|
|
<div class="sectionContentStyle sectionContentMedium">
|
|
<button class="" type="roll" name="roll_damage" value="/r @{damage}"></Button>
|
|
</div>
|
|
<input type="hidden" name="attr_damage" value="">
|
|
|
|
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input class="mediumInput" type="text" name="attr_damage-bonus" value="" placeholder="+0">
|
|
</div>
|
|
|
|
<div class="sectionContentStyle sectionContentMedium">
|
|
<input type="checkbox" name="attr_attack-hth" checked value="1">
|
|
</div>
|
|
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input class="mediumInput" type="text" name="attr_damage-type" value="" placeholder="Blunt">
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
</section>
|
|
|
|
<!-- Combat Attributes -->
|
|
|
|
<section class="sectionContentAll">
|
|
<div class="sectionHeader">
|
|
<span>Combat Attributes:</span>
|
|
</div>
|
|
<div class="sectionContent">
|
|
<div class="sectionContent sectionContentHalf">
|
|
|
|
<!-- Hit Points & Armor Points Labels -->
|
|
|
|
<span class="sectionContentStyle sectionContentLarge label"> </span>
|
|
<span class="sectionContentStyle sectionContentMedium label">Current:</span>
|
|
<span class="sectionContentStyle sectionContentLarge label">Maximum:</span>
|
|
<span class="sectionContentStyle sectionContentMedium label">Modifiers:</span>
|
|
|
|
<!-- Hit Points Data -->
|
|
|
|
<span class="sectionContentStyle sectionContentLarge spanTitle">Hit Points:</span>
|
|
<div class="sectionContentStyle sectionContentMedium">
|
|
<input type="number" name="attr_hitpoints" value="0">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input type="number" name="attr_hitpoints_max" value="0">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentMedium">
|
|
<input type="number" name="attr_hitpoints_mod" value="0">
|
|
</div>
|
|
|
|
<!-- Armour Points Data -->
|
|
|
|
<span class="sectionContentStyle sectionContentLarge spanTitle">Armour:</span>
|
|
<div class="sectionContentStyle sectionContentMedium">
|
|
<input type="number" name="attr_armourpoints" value="0">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input type="number" name="attr_armourpoints_max" value="0">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentMedium">
|
|
<input type="number" name="attr_armourpoints_mod" value="0">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="sectionContent sectionContentHalf">
|
|
|
|
<!-- Stamina Points & Recoveries Labels -->
|
|
|
|
<span class="sectionContentStyle sectionContentLarge label dividerLeft"> </span>
|
|
<span class="sectionContentStyle sectionContentMedium label">Current:</span>
|
|
<span class="sectionContentStyle sectionContentLarge label">Maximum:</span>
|
|
<span class="sectionContentStyle sectionContentMedium label">Modifiers:</span>
|
|
|
|
<!-- Stamina Points Data -->
|
|
|
|
<span class="sectionContentStyle sectionContentLarge dividerLeft spanTitle">Stamina Points:</span>
|
|
<div class="sectionContentStyle sectionContentMedium">
|
|
<input type="number" name="attr_staminapoints" value="0">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input type="number" name="attr_staminapoints_max" value="0">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentMedium">
|
|
<input type="number" name="attr_staminapoints_mod" value="0">
|
|
</div>
|
|
|
|
|
|
<!-- Recoveries Data -->
|
|
|
|
<span class="sectionContentStyle sectionContentLarge dividerLeft spanTitle">Recoveries:</span>
|
|
<div class="sectionContentStyle sectionContentMedium">
|
|
<input type="number" name="attr_recoveries" value="0">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input type="number" name="attr_recoveries_max" value="2">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentMedium mod">
|
|
<input type="number" name="attr_recoveries_mod" value="0">
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Linebreak -->
|
|
|
|
<div class="gap sectionContentStyle sectionContentAll"> </div>
|
|
<div class="gap sectionContentAll"></div>
|
|
<div class="gap sectionContentAll"></div>
|
|
|
|
<div class="sectionContent sectionContentHalf">
|
|
|
|
<!-- Initiative & Accuracy Labels -->
|
|
|
|
<span class="sectionContentStyle sectionContentHalf label"> </span>
|
|
<div class="sectionContentStyle sectionContentQuarter label">
|
|
<span class="tinyInput">Score:</span>
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentQuarter label">
|
|
<span class="tinyInput">Mod:</span>
|
|
</div>
|
|
|
|
<!-- Initiative Data -->
|
|
|
|
<div class="sectionContentStyle sectionContentQuarter">
|
|
<button class="" type="roll" name="roll_initiative" value="/r 1d20@{initiative}"></Button>
|
|
</div>
|
|
<input type="hidden" name="attr_initiative" value="">
|
|
<span class="sectionContentStyle sectionContentQuarter spanTitle">Initiative:</span>
|
|
<div class="sectionContentStyle sectionContentQuarter">
|
|
<input class="tinyInput" type="number" name="attr_initiative_score" value="0">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentQuarter">
|
|
<input class="tinyInput" type="number" name="attr_initiative_mod" value="0">
|
|
</div>
|
|
|
|
<!-- Accuracy Data -->
|
|
|
|
<div class="sectionContentStyle sectionContentQuarter">
|
|
<button class="" type="roll" name="roll_accuracy" value="/r 1d20@{accuracy}"></Button>
|
|
</div>
|
|
<input type="hidden" name="attr_accuracy" value="">
|
|
<span class="sectionContentStyle sectionContentQuarter spanTitle">Accuracy:</span>
|
|
<div class="sectionContentStyle sectionContentQuarter">
|
|
<input class="tinyInput" type="number" name="attr_accuracy_score" value="0">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentQuarter">
|
|
<input class="tinyInput" type="number" name="attr_accuracy_mod" value="0">
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="sectionContent sectionContentHalf">
|
|
|
|
<!-- Defense & Inspiration Labels -->
|
|
|
|
<span class="sectionContentStyle sectionContentLarge label dividerLeft"> </span>
|
|
<div class="sectionContentStyle sectionContentLarge label">
|
|
<span class="tinyInput">Score:</span>
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentLarge label">
|
|
<span class="tinyInput">Mod:</span>
|
|
</div>
|
|
|
|
<!-- Defense Data -->
|
|
|
|
<span class="sectionContentStyle sectionContentLarge dividerLeft spanTitle">Defense:</span>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input type="number" name="attr_defense" value="0">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input type="number" name="attr_defense_mod" value="0">
|
|
</div>
|
|
|
|
<!-- Inspiration Data -->
|
|
|
|
<span class="sectionContentStyle sectionContentLarge dividerLeft spanTitle">Inspiration:</span>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input type="number" name="attr_inspiration" value="0">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input type="number" name="attr_inspiration_mod" value="0">
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Linebreak -->
|
|
|
|
<div class="gap sectionContentStyle sectionContentAll"></div>
|
|
<div class="gap sectionContentAll"></div>
|
|
|
|
<div class="sectionContent sectionContentHalf">
|
|
<!-- Max Lift Labels -->
|
|
|
|
<span class="sectionContentStyle sectionContentLarge label"> </span>
|
|
<div class="sectionContentStyle sectionContentMedium label">
|
|
<span class="smallInput">Score:</span>
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentLarge label">
|
|
<span class="smallInput">Unit:</span>
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentMedium label">
|
|
<span class="smallInput">Mod:</span>
|
|
</div>
|
|
|
|
<!-- Maximum Lift Data -->
|
|
|
|
<span class="sectionContentStyle sectionContentLarge spanTitle">Max Lift:</span>
|
|
<div class="sectionContentStyle sectionContentMedium">
|
|
<input type="number" name="attr_lift" value="0">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input class="smallInput" type="text" name="attr_lift_unit" value="kg">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentMedium">
|
|
<input type="number" name="attr_lift_mod" value="0">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="sectionContent sectionContentHalf">
|
|
<!-- Movement Labels -->
|
|
|
|
<span class="sectionContentStyle sectionContentLarge label dividerLeft"> </span>
|
|
<div class="sectionContentStyle sectionContentMedium label">
|
|
<span class="smallInput">Score:</span>
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentLarge label">
|
|
<span class="smallInput">Unit:</span>
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentMedium label">
|
|
<span class="smallInput">Mod:</span>
|
|
</div>
|
|
|
|
<!-- Movement Data -->
|
|
|
|
<span class="sectionContentStyle sectionContentLarge dividerLeft spanTitle">Movement:</span>
|
|
<div class="sectionContentStyle sectionContentMedium">
|
|
<input type="number" name="attr_movement" value="0">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input class="smallInput" type="text" name="attr_movement_unit" value="km/h">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentMedium">
|
|
<input type="number" name="attr_movement_mod" value="0">
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Linebreak -->
|
|
<div class="gap sectionContentStyle sectionContentAll"></div>
|
|
<div class="gap sectionContentAll"></div>
|
|
|
|
<!-- Hand to Hand -->
|
|
|
|
<div class="sectionContentAll sectionContent">
|
|
<span class="sectionContentStyle sectionContentHalf label"> </span>
|
|
<div class="sectionContentStyle sectionContentMedium label">
|
|
<span class="mediumInput">Damage:</span>
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentMedium label">
|
|
<span class="mediumInput">Mod:</span>
|
|
</div>
|
|
<span class="sectionContentStyle sectionContentMedium label"> </span>
|
|
|
|
<span class="sectionContentStyle sectionContentMedium"> </span>
|
|
<div class="sectionContentStyle sectionContentMedium">
|
|
<button class="" type="roll" name="roll_hth" value="/r @{hth}"></Button>
|
|
</div>
|
|
<input type="hidden" name="attr_hth" value="">
|
|
|
|
<span class="sectionContentStyle sectionContentMedium spanTitle">Hand to Hand:</span>
|
|
<div class="sectionContentStyle sectionContentMedium">
|
|
<input class="mediumInput" type="text" name="attr_hth_score" value="">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentMedium">
|
|
<input class="smallInput" type="text" name="attr_hth_mod" value="">
|
|
</div>
|
|
<span class="sectionContentStyle sectionContentMedium"> </span>
|
|
</div>
|
|
|
|
</div>
|
|
</section>
|
|
</div>
|
|
|
|
<!-- TAB: Powers -->
|
|
|
|
<div class="powers_tab tab sectionContent">
|
|
<section class="sectionContentAll">
|
|
<div class="sectionHeader">
|
|
<span>Powers</span>
|
|
</div>
|
|
<fieldset class="repeating_powers">
|
|
<details>
|
|
<summary class="sectionContent">
|
|
<!-- Post -->
|
|
<!-- Name -->
|
|
<!-- Tier -->
|
|
<span class="sectionContentStyle sectionContentSmall label"> </span>
|
|
<span class="sectionContentStyle sectionContentExtraLarge label">Name</span>
|
|
<span class="sectionContentStyle sectionContentMedium label">Tier</span>
|
|
<span class="sectionContentStyle sectionContentSmall label"> </span>
|
|
|
|
<div class="sectionContentStyle sectionContentSmall">
|
|
<button class="pictos chatButton" type="roll" name="roll_power" value="@{power}">w</Button>
|
|
</div>
|
|
<input type="hidden" name="attr_power" value="">
|
|
|
|
<div class="sectionContentStyle sectionContentExtraLarge">
|
|
<input class="extraLargeInput" type="text" name="attr_name" value="" placeholder="">
|
|
</div>
|
|
<div class="sectionContentStyle sectionContentMedium">
|
|
<select class="smallInput" name="attr_tier">
|
|
<option selected>C</option>
|
|
<option>B</option>
|
|
<option>A</option>
|
|
</select>
|
|
</div>
|
|
<span class="sectionContentStyle sectionContentSmall spanTitle pictos">s</span>
|
|
</summary>
|
|
<!-- Description -->
|
|
<div class="sectionContentStyle">
|
|
<textarea class="sectionContentAll" name="attr_description" cols="69" placeholder="Description"></textarea>
|
|
</div>
|
|
</details>
|
|
</fieldset>
|
|
</section>
|
|
|
|
<section class="sectionContentAll">
|
|
<div class="sectionHeader">
|
|
<span>Abilities</span>
|
|
</div>
|
|
<fieldset class="repeating_abilities">
|
|
<details class="">
|
|
<summary class="sectionContent sectionContentAll">
|
|
<!-- Post -->
|
|
<!-- Name -->
|
|
<!-- SP -->
|
|
<!-- Tier -->
|
|
<span class="sectionContentStyle sectionContentSmall label"> </span>
|
|
<span class="sectionContentStyle sectionContentLarge label">Name</span>
|
|
<span class="sectionContentStyle sectionContentLarge label">SP & Upkeep</span>
|
|
<span class="sectionContentStyle sectionContentMedium label">Tier</span>
|
|
<span class="sectionContentStyle sectionContentSmall label"> </span>
|
|
|
|
<div class="sectionContentStyle sectionContentSmall">
|
|
<button class="pictos chatButton" type="roll" name="roll_ability-chat" value="@{ability}">w</Button>
|
|
</div>
|
|
<input type="hidden" name="attr_ability" value="">
|
|
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input class="largeInput" type="text" name="attr_name" value="" placeholder="">
|
|
</div>
|
|
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input class="mediumInput" type="text" name="attr_sp" value="" placeholder="Natural">
|
|
</div>
|
|
|
|
|
|
<div class="sectionContentStyle sectionContentMedium">
|
|
<select class="smallInput" name="attr_tier">
|
|
<option selected>-</option>
|
|
<option>t0</option>
|
|
<option>t1</option>
|
|
<option>t2</option>
|
|
<option>t3</option>
|
|
<option>t4</option>
|
|
</select>
|
|
</div>
|
|
<span class="sectionContentStyle sectionContentSmall spanTitle pictos">s</span>
|
|
</summary>
|
|
<!-- Description -->
|
|
<div class="sectionContent">
|
|
<div class="sectionContentStyle sectionContentHalf">
|
|
<textarea class="personalityTraits" name="attr_description" cols="33" placeholder="Ability Description"></textarea>
|
|
</div>
|
|
|
|
<div class="sectionContentStyle sectionContentHalf">
|
|
<textarea class="personalityTraits" name="attr_enhancement" cols="32" placeholder="Ability Enhancements"></textarea>
|
|
</div>
|
|
</div>
|
|
</details>
|
|
</fieldset>
|
|
</section>
|
|
|
|
<section class="sectionContentAll">
|
|
<div class="sectionHeader">
|
|
<span>Power Details</span>
|
|
</div>
|
|
<div class="sectionContent">
|
|
<textarea class="sectionContentAll" name="attr_power_details" cols="69" placeholder="Write down how your Powers originate and how they work. What do they look, sound, and feel like?"></textarea>
|
|
</div>
|
|
</section>
|
|
</div>
|
|
|
|
<!-- TAB: Personal Details -->
|
|
|
|
<div class="details_tab tab sectionContent">
|
|
|
|
<!-- Personality Traits -->
|
|
|
|
<section class="sectionContentHalf">
|
|
<div class="sectionHeader">
|
|
<span>Personality Traits</span>
|
|
</div>
|
|
<div class="sectionContent">
|
|
<span class="sectionContentStyle sectionContentLarge"></span>
|
|
<span class="sectionContentStyle sectionContentMedium spanTitle">Archetype:</span>
|
|
<div class="sectionContentStyle sectionContentMedium">
|
|
<input class="mediumInput" type="text" name="attr_archetype" value="">
|
|
</div>
|
|
<span class="sectionContentStyle sectionContentLarge"></span>
|
|
|
|
<span class="sectionContentStyle sectionContentAll label">Strenghts:</span>
|
|
<div class="sectionContentStyle sectionContentAll">
|
|
<textarea class="personalityTraits" name="attr_archetype_strengths" cols="10" placeholder="Two or more strengths of your archtype."></textarea>
|
|
</div>
|
|
|
|
<span class="sectionContentStyle sectionContentAll label">Flaws:</span>
|
|
<div class="sectionContentStyle sectionContentAll">
|
|
<textarea class="personalityTraits" name="attr_archetype_flaws" cols="10" placeholder="One or more flaws of your archtype."></textarea>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Secret Identity -->
|
|
|
|
<section class="sectionContentHalf">
|
|
<div class="sectionHeader">
|
|
<span>Secret Identity</span>
|
|
</div>
|
|
<div class="sectionContent">
|
|
<span class="sectionContentStyle sectionContentMedium"></span>
|
|
<span class="sectionContentStyle sectionContentLarge spanTitle">Day Job:</span>
|
|
<div class="sectionContentStyle sectionContentLarge">
|
|
<input class="mediumInput" type="text" name="attr_secret" value="">
|
|
</div>
|
|
<span class="sectionContentStyle sectionContentMedium"></span>
|
|
|
|
<span class="sectionContentStyle sectionContentAll label">Risk of getting away:</span>
|
|
<div class="sectionContentStyle sectionContentAll">
|
|
<textarea class="secretIdentity" name="attr_secret_risk" cols="10" placeholder=""></textarea>
|
|
</div>
|
|
<span class="sectionContentStyle sectionContentAll label">Finatial situation:</span>
|
|
<div class="sectionContentStyle sectionContentAll">
|
|
<textarea class="secretIdentity" name="attr_secret_finance" cols="10" placeholder=""></textarea>
|
|
</div>
|
|
<span class="sectionContentStyle sectionContentAll label">Living situation:</span>
|
|
<div class="sectionContentStyle sectionContentAll">
|
|
<textarea class="secretIdentity" name="attr_secret_living" cols="10" placeholder=""></textarea>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Background Information -->
|
|
|
|
<section class="sectionContentAll">
|
|
<div class="sectionHeader">
|
|
<span>Background Information</span>
|
|
</div>
|
|
<div class="sectionContent">
|
|
<textarea class="backgroundInfo sectionContentAll" name="attr_background" cols="69" placeholder="Additional background information"></textarea>
|
|
</div>
|
|
</section>
|
|
|
|
|
|
</div>
|
|
|
|
<!-- TAB: Notes -->
|
|
|
|
<div class="notes_tab tab">
|
|
<section>
|
|
<div class="sectionHeader">
|
|
<span>Notes</span>
|
|
</div>
|
|
<div class="sectionContent">
|
|
<textarea class="notes sectionContentAll" name="attr_notes" cols="69" placeholder="Assorted notes"></textarea>
|
|
</div>
|
|
</section>
|
|
</div>
|
|
|
|
<!-- TAB: Advancements -->
|
|
|
|
<div class="advancements_tab tab">
|
|
<section>
|
|
<div class="sectionHeader">
|
|
<span>Advancements</span>
|
|
</div>
|
|
<div class="sectionContent">
|
|
<!-- Hp & sp base increase per level -->
|
|
<textarea class="notes sectionContentAll" name="attr_advancements_log" cols="69" placeholder="Advancements log"></textarea>
|
|
</div>
|
|
</section>
|
|
</div>
|
|
|
|
<!-- TAB: Settings -->
|
|
|
|
<div class="settings_tab tab">
|
|
<section>
|
|
<div class="sectionHeader">
|
|
<span>Settings</span>
|
|
</div>
|
|
<div class="sectionContent">
|
|
Automatic calculations
|
|
</div>
|
|
</section>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<script type="text/worker">
|
|
const DEBUG = false;
|
|
|
|
const names = ["code_name", "legal_name"]
|
|
const namesChangesAny = "change:" + [...names].join(" change:")
|
|
|
|
const stats = ["agility", "charisma", "intelligence", "senses", "speed", "stamina", "strength"]
|
|
const statsPowered = ["agility_powered", "charisma_powered", "intelligence_powered", "senses_powered", "speed_powered", "stamina_powered", "strength_powered"]
|
|
const statsUnpowered = ["agility_unpowered", "charisma_unpowered", "intelligence_unpowered", "senses_unpowered", "speed_unpowered", "stamina_unpowered", "strength_unpowered"]
|
|
const statsMod = ["agility_mod", "charisma_mod", "intelligence_mod", "senses_mod", "speed_mod", "stamina_mod", "strength_mod"]
|
|
const statChangesAny = "change:" + [...statsPowered, ...statsUnpowered, ...statsMod].join(" change:")
|
|
|
|
const attributes = ["initiative", "accuracy"];
|
|
const attributesScore = ["initiative_score", "accuracy_score"];
|
|
const attributesMod = ["initiative_mod", "accuracy_mod"];
|
|
const attributesChangesAny = "change:" + [...attributesScore, ...attributesMod].join(" change:")
|
|
|
|
const inspirationTeamBonus = "+?{Team inspiration bonus|0}"
|
|
|
|
const powersAttributes = ["name", "tier", "description"];
|
|
const powersAttributesChangesAny = "change:repeating_powers:" + [...powersAttributes].join(" change:repeating_powers:");
|
|
|
|
const abilitiesAttributes = ["name", "tier", "sp", "description", "enhancement"];
|
|
const abilitiesAttributesChangesAny = "change:repeating_abilities:" + [...abilitiesAttributes].join(" change:repeating_abilities:");
|
|
|
|
const initiative = ["agility", "speed"]
|
|
const initiativeChangesAny = "change:" + [...initiative].join(" change:")
|
|
|
|
const defense = ["agility", "senses"]
|
|
const defenseChangesAny = "change:" + [...defense].join(" change:")
|
|
|
|
const accuracy = ["intelligence", "senses"]
|
|
const accuracyChangesAny = "change:" + [...accuracy].join(" change:")
|
|
|
|
const movement = ["speed"]
|
|
const movementChangesAny = "change:" + [...movement].join(" change:")
|
|
|
|
const inspiration = ["charisma"]
|
|
const inspirationChangesAny = "change:" + [...inspiration].join(" change:")
|
|
|
|
const hth = ["strength"]
|
|
const hthChangesAny = "change:" + [...hth].join(" change:")
|
|
|
|
const maxlift = ["strength"]
|
|
const maxliftChangesAny = "change:" + [...maxlift].join(" change:")
|
|
|
|
|
|
const agilityData = {
|
|
initiativeBonusData:[0,
|
|
0,0,0,0,0,0,0,0,0,0,
|
|
1,1,2,2,3,3,4,4,5,5,
|
|
6,6,7,7,8,8,9,9,10,15,
|
|
|
|
15,16,16,17,17,18,18,19,19,20,
|
|
20,21,21,22,22,23,23,24,24,25
|
|
],
|
|
defenseBonusData:[ 0,
|
|
0,0,0,0,0,0,0,0,0,0,
|
|
0,1,1,2,2,3,3,4,4,5,
|
|
5,6,6,7,7,8,8,9,9,10,
|
|
|
|
10,11,11,12,12,13,13,14,14,15,
|
|
15,16,16,17,17,18,18,19,19,20
|
|
],
|
|
};
|
|
|
|
const charismaData = {
|
|
inspireBonusData:[ 0,
|
|
0,0,0,0,0,0,0,0,0,0,
|
|
0,1,1,1,2,2,2,2,2,3,
|
|
3,3,3,3,4,4,4,4,4,5,
|
|
|
|
5,6,6,7,7,8,8,9,9,10,
|
|
10,11,11,12,12,13,13,14,14,15
|
|
]
|
|
};
|
|
|
|
const intelligenceData = {
|
|
accuracyBonusData: [0,
|
|
0,0,0,0,0,0,0,0,0,0,
|
|
0,1,1,2,2,3,3,4,4,5,
|
|
5,6,6,7,7,8,8,9,9,10,
|
|
|
|
10,11,11,12,12,13,13,14,14,15,
|
|
15,16,16,17,17,18,18,19,19,20
|
|
]
|
|
};
|
|
|
|
const sensesData = {
|
|
accuracyBonusData: [0,
|
|
0,0,0,0,0,0,0,0,0,0,
|
|
0,1,1,2,2,3,3,4,4,5,
|
|
5,6,6,7,7,8,8,9,9,10,
|
|
|
|
10,11,11,12,12,13,13,14,14,15,
|
|
15,16,16,17,17,18,18,19,19,20
|
|
],
|
|
defenseBonusData: [0,
|
|
0,0,0,0,0,0,0,0,0,0,
|
|
1,1,2,2,3,3,4,4,5,5,
|
|
6,6,7,7,8,8,9,9,10,15,
|
|
|
|
15,16,16,17,17,18,18,19,19,20,
|
|
20,21,21,22,22,23,23,24,24,25
|
|
]
|
|
};
|
|
|
|
const speedData = {
|
|
initiativeBonusData: [0,
|
|
0,0,0,0,0,0,0,0,0,0,
|
|
1,2,3,4,5,6,7,8,9,10,
|
|
11,12,13,14,15,16,17,18,19,20,
|
|
|
|
21,22,23,24,25,26,27,28,29,30,
|
|
31,32,33,34,35,36,37,38,39,40
|
|
],
|
|
movementSpeedData: [0,
|
|
20,20,20,20,25,25,25,25,30,30,
|
|
30,30,35,40,45,60,65,75,75,80,
|
|
80,90,90,100,100,110,110,115,115,120,
|
|
|
|
130,140,150,160,170,180,190,200,210,220,
|
|
230,240,250,260,270,280,290,300,400,500
|
|
]
|
|
};
|
|
|
|
const staminaData = {
|
|
hpBonusData: [0,
|
|
0,0,0,0,0,0,0,0,0,1,
|
|
2,3,4,5,6,7,8,9,10,11,
|
|
12,13,14,15,16,17,18,19,20,25,
|
|
|
|
25,26,26,27,27,28,28,29,29,30,
|
|
30,31,31,32,32,33,33,34,34,35
|
|
]
|
|
};
|
|
|
|
const strengthData = {
|
|
hpBonusData: [ 0,
|
|
// | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
|
|
2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
|
|
12, 13, 14, 15, 16, 17, 18, 19, 20, 25,
|
|
|
|
26,27,28,29,30,31,32,33,34,35,
|
|
36,37,38,39,40,41,42,43,44,45
|
|
],
|
|
hthDamageDieData: ["0",
|
|
// | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |
|
|
"0", "0", "1", "1", "1", "1", "1", "1d4", "1d4", "1d4+1",
|
|
"1d6", "1d6+1", "1d8", "1d8+1", "1d10", "1d10+1","1d10+2","1d10+3","1d10+4","2d10",
|
|
"2d10+1","2d10+2","2d10+3","2d10+4","3d10", "3d10+1","3d10+2","3d10+3","3d10+4","3d10+5",
|
|
|
|
"4d10", "4d10+1","4d10+2","4d10+3","4d10+4","4d10+5","5d10", "5d10+1","5d10+2","5d10+3",
|
|
"5d10+4","5d10+5","6d10", "6d10+1","6d10+2","6d10+3","6d10+4","6d10+5","7d10", "8d10",
|
|
],
|
|
maximumLiftData: [0,
|
|
5,10,20,30,40,50,60,70,80,90,
|
|
100,200,300,400,500,1000,2000,3000,4000,5000,
|
|
6000,7000,8000,9000,10000,15000,20000,30000,40000,50000,
|
|
|
|
60000,70000,80000,90000,100000,200000,300000,400000,500000,600000,
|
|
700000,800000,900000,1000000,1500000,2000000,3000000,4000000,5000000,10000000
|
|
]
|
|
};
|
|
|
|
const tabButtonList = ["combat_tab","powers_tab","details_tab", "notes_tab", "advancements_tab", "settings_tab"];
|
|
tabButtonList.forEach(button => {
|
|
on(`clicked:${button}`, function() {
|
|
if (DEBUG) console.log("tab")
|
|
setAttrs({
|
|
sheet_tab: button
|
|
});
|
|
});
|
|
});
|
|
|
|
on(namesChangesAny, function(event) {
|
|
if (DEBUG) console.log("name")
|
|
getAttrs([...names], function(values) {
|
|
const code = values.code_name;
|
|
const legal = values.legal_name;
|
|
|
|
const output = {"character_name": code + " / " + legal};
|
|
setAttrs(output);
|
|
});
|
|
});
|
|
|
|
on("change:power_status", function(event) {
|
|
if (DEBUG) console.log("power status")
|
|
getAttrs(["power_status", ...statsPowered, ...statsUnpowered, ...statsMod], function(values) {
|
|
const status = values.power_status;
|
|
const output = {};
|
|
|
|
stats.forEach(stat => {
|
|
let key = stat+"_"+status;
|
|
let mod = stat+"_mod";
|
|
output[stat] = format(values[key])+format(values[mod])+inspirationTeamBonus;
|
|
});
|
|
|
|
setAttrs(output);
|
|
});
|
|
});
|
|
|
|
on(statChangesAny, function(event) {
|
|
if (DEBUG) console.log("stats")
|
|
getAttrs(["power_status", ...statsPowered, ...statsUnpowered, ...statsMod], function(values) {
|
|
const status = values.power_status;
|
|
const stat = event.triggerName.split("_")[0];
|
|
if (DEBUG) console.log(" - " + stat)
|
|
const key = stat+"_"+status;
|
|
const mod = stat+"_mod";
|
|
const powered = stat+"_powered"
|
|
const unpowered = stat+"_unpowered"
|
|
|
|
let result = values[key]
|
|
|
|
const output = {}
|
|
if (parseInt(values[powered]) < parseInt(values[unpowered])){
|
|
if (DEBUG) console.log("Yes")
|
|
output[powered] = values[unpowered]
|
|
result = values[unpowered]
|
|
}
|
|
|
|
output[stat] = format(result)+format(values[mod])+inspirationTeamBonus;
|
|
|
|
setAttrs(output);
|
|
});
|
|
});
|
|
|
|
on(attributesChangesAny, function(event) {
|
|
if (DEBUG) console.log("initiative and accuracy rolls")
|
|
getAttrs([...attributesScore, ...attributesMod], function(values) {
|
|
const attribute = event.triggerName.split("_")[0];
|
|
if (DEBUG) console.log(" - " + attribute)
|
|
const score = attribute+"_score";
|
|
const mod = attribute+"_mod";
|
|
let additional = "";
|
|
if (attribute !== "initiative") additional = inspirationTeamBonus;
|
|
else additional = " &{tracker}"
|
|
|
|
const output = {[attribute]: format(values[score])+format(values[mod])+additional};
|
|
setAttrs(output);
|
|
});
|
|
});
|
|
|
|
on("change:hth_score change:hth_mod", function(event) {
|
|
if (DEBUG) console.log("hth rolls")
|
|
getAttrs(["hth_score", "hth_mod"], function(values) {
|
|
const attribute = event.triggerName.split("_")[0];
|
|
const key = attribute+"_score";
|
|
const mod = attribute+"_mod";
|
|
|
|
const output = {[attribute]: formatRoll(values[key])+formatRollMod(values[mod])};
|
|
setAttrs(output);
|
|
});
|
|
});
|
|
|
|
on(initiativeChangesAny, function(event) {
|
|
if (DEBUG) console.log("initiative auto")
|
|
getAttrs([...initiative], function(values) {
|
|
const autocalculate = true;
|
|
|
|
if(autocalculate){
|
|
const agility = parseInt(values["agility"].split("+")[1]) + parseInt(values["agility"].split("+")[2]);
|
|
const speed = parseInt(values["speed"].split("+")[1]) + parseInt(values["speed"].split("+")[2]);
|
|
const max = 50;
|
|
|
|
var agilityResult = agilityData.initiativeBonusData[Math.min(agility, max)]
|
|
var speedResult = speedData.initiativeBonusData[Math.min(speed,max)]
|
|
var result = 10 + Math.max(agilityResult, speedResult);
|
|
|
|
const output = {"initiative_score": result};
|
|
setAttrs(output);
|
|
}
|
|
});
|
|
});
|
|
|
|
on(defenseChangesAny, function(event) {
|
|
if (DEBUG) console.log("defense auto")
|
|
getAttrs([...defense], function(values) {
|
|
const autocalculate = true;
|
|
|
|
if(autocalculate){
|
|
const agility = parseInt(values["agility"].split("+")[1]) + parseInt(values["agility"].split("+")[2]);
|
|
const senses = parseInt(values["senses"].split("+")[1]) + parseInt(values["senses"].split("+")[2]);
|
|
const max = 50;
|
|
|
|
var agilityResult = agilityData.defenseBonusData[Math.min(agility, max)]
|
|
var sensesResult = sensesData.defenseBonusData[Math.min(senses,max)]
|
|
var result = 10 + Math.max(agilityResult, sensesResult);
|
|
|
|
const output = {"defense": result};
|
|
setAttrs(output);
|
|
}
|
|
});
|
|
});
|
|
|
|
on(accuracyChangesAny, function(event) {
|
|
if (DEBUG) console.log("accuracy auto")
|
|
getAttrs([...accuracy], function(values) {
|
|
const autocalculate = true;
|
|
|
|
if(autocalculate){
|
|
const intelligence = parseInt(values["intelligence"].split("+")[1]) + parseInt(values["intelligence"].split("+")[2]);
|
|
const senses = parseInt(values["senses"].split("+")[1]) + parseInt(values["senses"].split("+")[2]);
|
|
const max = 50;
|
|
|
|
var intelligenceResult = intelligenceData.accuracyBonusData[Math.min(intelligence, max)]
|
|
var sensesResult = sensesData.accuracyBonusData[Math.min(senses,max)]
|
|
var result = Math.max(intelligenceResult, sensesResult);
|
|
|
|
const output = {"accuracy_score": result};
|
|
setAttrs(output);
|
|
}
|
|
});
|
|
});
|
|
|
|
on(movementChangesAny, function(event) {
|
|
if (DEBUG) console.log("movement auto")
|
|
getAttrs([...movement], function(values) {
|
|
const autocalculate = true;
|
|
|
|
if(autocalculate){
|
|
const speed = parseInt(values["speed"].split("+")[1]) + parseInt(values["speed"].split("+")[2]);
|
|
const max = 50;
|
|
|
|
var result = speedData.movementSpeedData[Math.min(speed, max)];
|
|
|
|
const output = {"movement": result};
|
|
setAttrs(output);
|
|
}
|
|
});
|
|
});
|
|
|
|
on(inspirationChangesAny, function(event) {
|
|
if (DEBUG) console.log("inspiration auto")
|
|
getAttrs([...inspiration], function(values) {
|
|
const autocalculate = true;
|
|
|
|
if(autocalculate){
|
|
const charisma = parseInt(values["charisma"].split("+")[1]) + parseInt(values["charisma"].split("+")[2]);
|
|
const max = 50;
|
|
|
|
var result = charismaData.inspireBonusData[Math.min(charisma, max)];
|
|
|
|
const output = {"inspiration": result};
|
|
setAttrs(output);
|
|
}
|
|
});
|
|
});
|
|
|
|
on(hthChangesAny, function(event) {
|
|
if (DEBUG) console.log("hth auto")
|
|
getAttrs([...hth], function(values) {
|
|
const autocalculate = true;
|
|
|
|
if(autocalculate){
|
|
const strength = parseInt(values["strength"].split("+")[1]) + parseInt(values["strength"].split("+")[2]);
|
|
const max = 50;
|
|
|
|
var result = strengthData.hthDamageDieData[Math.min(strength, max)];
|
|
|
|
const output = {"hth_score": result};
|
|
setAttrs(output);
|
|
}
|
|
});
|
|
});
|
|
|
|
on(maxliftChangesAny, function(event) {
|
|
if (DEBUG) console.log("max lift auto")
|
|
getAttrs([...maxlift], function(values) {
|
|
const autocalculate = true;
|
|
|
|
if(autocalculate){
|
|
const strength = parseInt(values["strength"].split("+")[1]) + parseInt(values["strength"].split("+")[2]);
|
|
const max = 50;
|
|
|
|
var result = strengthData.maximumLiftData[Math.min(strength, max)];
|
|
var unit = "kg";
|
|
if (result >= 1000) {
|
|
result = result/1000;
|
|
unit = "t";
|
|
}
|
|
if (result >= 1000){
|
|
result = result/1000;
|
|
unit = "kt";
|
|
}
|
|
|
|
const output = {"lift": result,
|
|
"lift_unit": unit};
|
|
setAttrs(output);
|
|
}
|
|
});
|
|
});
|
|
|
|
on("change:repeating_attacks:attack-bonus change:accuracy", function(event) {
|
|
if (DEBUG) console.log("attacks section - attack")
|
|
const section = "attacks"
|
|
getSectionIDs(`repeating_${section}`, id_attacks => {
|
|
const fields = [];
|
|
let atk = "";
|
|
let acc = "";
|
|
|
|
id_attacks.forEach(id => {
|
|
atk = section_attribute(section, id, 'attack-bonus')
|
|
|
|
fields.push(atk);
|
|
});
|
|
getAttrs([...fields, "accuracy"], function(values) {
|
|
const output = {};
|
|
id_attacks.forEach(id => {
|
|
atk = section_attribute(section, id, 'attack-bonus')
|
|
|
|
output[section_attribute(section, id, 'attack')] = formatRollMod(values[atk]+values["accuracy"])
|
|
});
|
|
|
|
setAttrs(output);
|
|
});
|
|
});
|
|
});
|
|
|
|
on("change:repeating_attacks:damage-bonus change:repeating_attacks:attack-hth change:hth", function(event) {
|
|
if (DEBUG) console.log("attacks section - damage")
|
|
const section = "attacks"
|
|
getSectionIDs(`repeating_${section}`, id_attacks => {
|
|
const fields = [];
|
|
let dmg = "";
|
|
let hth = "";
|
|
let hthdmg = "";
|
|
|
|
id_attacks.forEach(id => {
|
|
dmg = section_attribute(section, id, 'damage-bonus')
|
|
hth = section_attribute(section, id, 'attack-hth')
|
|
|
|
fields.push(dmg);
|
|
fields.push(hth);
|
|
});
|
|
|
|
getAttrs([...fields, "hth"], values => {
|
|
const output = {};
|
|
|
|
id_attacks.forEach(id => {
|
|
dmg = section_attribute(section, id, 'damage-bonus');
|
|
hth = section_attribute(section, id, 'attack-hth');
|
|
|
|
if (values[hth] === "1") hthdmg = values["hth"];
|
|
|
|
output[section_attribute(section, id, 'damage')] = formatRoll(values[dmg]) + formatRollMod(hthdmg)
|
|
});
|
|
|
|
setAttrs(output);
|
|
});
|
|
});
|
|
});
|
|
|
|
on(powersAttributesChangesAny, function(event) {
|
|
if (DEBUG) console.log("powers section")
|
|
const section = "powers"
|
|
getSectionIDs(`repeating_${section}`, id_powers => {
|
|
const fields = [];
|
|
let name = "";
|
|
let tier = "";
|
|
let description = "";
|
|
|
|
id_powers.forEach(id => {
|
|
name = section_attribute(section, id, 'name')
|
|
tier = section_attribute(section, id, 'tier')
|
|
description = section_attribute(section, id, 'description')
|
|
|
|
fields.push(name);
|
|
fields.push(tier);
|
|
fields.push(description);
|
|
});
|
|
getAttrs([...fields], function(values) {
|
|
const output = {};
|
|
|
|
id_powers.forEach(id => {
|
|
name = section_attribute(section, id, 'name')
|
|
tier = section_attribute(section, id, 'tier')
|
|
description = section_attribute(section, id, 'description')
|
|
output[section_attribute(section, id, 'power')] = powerTemplate(values[name], values[tier], values[description])
|
|
});
|
|
|
|
setAttrs(output);
|
|
});
|
|
});
|
|
});
|
|
|
|
on(abilitiesAttributesChangesAny, function(event) {
|
|
if (DEBUG) console.log("abilities section")
|
|
const section = "abilities"
|
|
getSectionIDs(`repeating_${section}`, id_abilities => {
|
|
const fields = [];
|
|
let name = "";
|
|
let tier = "";
|
|
let sp = "";
|
|
let description = "";
|
|
let enhancement = "";
|
|
id_abilities.forEach(id => {
|
|
name = section_attribute(section, id, 'name')
|
|
tier = section_attribute(section, id, 'tier')
|
|
sp = section_attribute(section, id, 'sp')
|
|
description = section_attribute(section, id, 'description')
|
|
enhancement = section_attribute(section, id, 'enhancement')
|
|
|
|
fields.push(name);
|
|
fields.push(tier);
|
|
fields.push(sp);
|
|
fields.push(description);
|
|
fields.push(enhancement);
|
|
});
|
|
getAttrs([...fields], function(values) {
|
|
const output = {};
|
|
|
|
id_abilities.forEach(id => {
|
|
name = section_attribute(section, id, 'name')
|
|
tier = section_attribute(section, id, 'tier')
|
|
sp = section_attribute(section, id, 'sp')
|
|
description = section_attribute(section, id, 'description')
|
|
enhancement = section_attribute(section, id, 'enhancement')
|
|
|
|
output[section_attribute(section, id, 'ability')] = abilityTemplate(values[name], values[tier], values[sp], values[description], values[enhancement])
|
|
});
|
|
|
|
setAttrs(output);
|
|
});
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
function format(number){
|
|
let sign = "+";
|
|
let abs = Math.abs(number);
|
|
if (Math.sign(number) < 0) {
|
|
sign = "-";
|
|
}
|
|
return sign + abs;
|
|
};
|
|
|
|
function formatRoll(rollExpression){
|
|
let sign = "";
|
|
let result = rollExpression.trimStart();
|
|
if (result.charAt(0) === "+") {
|
|
result = result.slice(1);
|
|
}
|
|
return sign + result;
|
|
};
|
|
|
|
function formatRollMod(rollExpression){
|
|
let sign = "";
|
|
let result = rollExpression.trimStart();
|
|
|
|
if ((!(result.charAt(0) === "+") || (result.charAt(0) === "-")) && !(result === "")) {
|
|
sign = "+"
|
|
}
|
|
return sign + result;
|
|
};
|
|
|
|
const section_attribute = (section, id, field) => `repeating_${section}_${id}_${field}`
|
|
|
|
function powerTemplate(name, tier, description) {
|
|
const template = "default"
|
|
const result = `&{template:${template}} {{name=${name} [${tier}]}} {{${description}}}`
|
|
|
|
return result;
|
|
}
|
|
|
|
function abilityTemplate(name, tier, sp, description, enhancement) {
|
|
const template = "default"
|
|
const result = `&{template:${template}} {{name=${name} [${tier}]}} {{sp=${sp}}} {{description=${description}}} {{enhancements=${enhancement}}}`
|
|
|
|
return result;
|
|
}
|
|
|
|
|
|
</script> |