Files
2024-06-03 13:15:14 -04:00

596 lines
77 KiB
HTML

<div class="roll20reset"><div id="megalos-sheet"><div id="noctis"><div class="container"> <div class="tabs-section"><input class="tabs-trigger" type="hidden" name="attr_tabs" value="tab1"/><div class="tabs-buttons"><button class="button is-large" type="action" name="act_changetab" data-tab-attr="tabs" data-tab="tab1">Character</button><button class="button is-large" type="action" name="act_changetab" data-tab-attr="tabs" data-tab="tab2">Powers</button><button class="button is-large" type="action" name="act_changetab" data-tab-attr="tabs" data-tab="tab3">Conditions</button><button class="button is-large emoji" type="action" name="act_changetab" data-tab-attr="tabs" data-tab="tab4">&#x1F479;</button><button class="button is-large emoji" type="action" name="act_changetab" data-tab-attr="tabs" data-tab="tab5">&#x2699;</button></div><div class="sheet sheet-tab1"><div class="columns"><div class="column"><section class="noctis-section block"><div class="noctis-section-body"><div class="columns"><div class="column"><div id="sheet-logo">MEGALOS</div></div><div class="column is-narrow"><div class="noctis-box"><h4 class="noctis-box-title">HP</h4><div class="columns is-centered"><div class="column is-one-half"><div class="p-3"><input type="number" name="attr_hp" value="0"/><p><input type="hidden" name="attr_injured"/><span name="attr_injured"></span></p></div></div><div class="column is-one-half"><div class="p-3"><input type="number" name="attr_hp_max" value="0"/><p>Max</p></div></div></div></div></div><div class="column is-narrow"><div class="noctis-box"><h4 class="noctis-box-title">Armor HP</h4><div class="columns is-centered"><div class="column is-one-half"><div class="p-3"><input type="number" name="attr_armor_hp" value="0"/><p>Current</p></div></div><div class="column is-one-half"><div class="p-3"><input type="number" name="attr_armor_hp_max" value="0"/><p>Max</p></div></div></div></div></div><div class="column is-narrow"><div class="noctis-box"><h4 class="noctis-box-title">Recovery</h4><div class="columns is-centered"><div class="column is-one-half"><div class="p-3"><input type="number" name="attr_recovery" value="0"/><p>Current</p></div></div><div class="column is-one-half"><div class="p-3"><input type="number" name="attr_recovery_max" value="0"/><p>Max</p></div></div></div></div></div></div></div></section></div></div><div class="columns"><div class="column"><section class="noctis-section block"><div class="noctis-section-body"><section class="noctis-section block"><div class="noctis-section-body"><div class="columns"><div class="column"><label><input type="checkbox" name="attr_show_combat_effects"/><span>Show Combat Effects</span></label></div></div><input class="show-combat-effects-toggle" type="hidden" name="attr_show_combat_effects"/><div class="show-combat-effects-section"><div class="columns"><div class="column is-2"><label><input type="checkbox" name="attr_ce_toggle_advantage"/><span>Enabled</span></label></div><div class="column is-2"><p>Advantage</p></div><div class="column is-1"><input type="number" name="attr_ce_advantage" min="0" value="0"/></div><div class="column is-2"><p>Disadvantage</p></div><div class="column is-1"><input type="number" name="attr_ce_disadvantage" min="0" value="0"/></div></div><div class="columns"><div class="column is-2"><label><input type="checkbox" name="attr_ce_toggle_soak"/><span>Enabled</span></label></div><div class="column is-2"><p>Soak bonus</p></div><div class="column is-1"><input type="number" name="attr_ce_soak_bonus" min="0" value="0"/></div></div><div class="columns"><div class="column is-2"><label><input type="checkbox" name="attr_ce_toggle_ac_bonus"/><span>Enabled</span></label></div><div class="column is-2"><p>Aether Current rolls</p></div><div class="column is-1"><input type="number" name="attr_ce_ac_bonus" min="0" value="0"/></div></div></div></div></section></div></section></div></div><div class="columns"><div class="column is-one-half"><section class="noctis-section block"><span class="noctis-section-icon">&#x1F9D1;</span><h3 class="is-size-3 noctis-section-title noctis-section-offset">Character Profile</h3><div class="noctis-section-body"><div class="columns"><div class="column is-one-fifth">Name</div><div class="column"><input type="text" name="attr_character_name"/></div></div><div class="columns"><div class="column is-one-fifth">Homeland</div><div class="column"><input type="text" name="attr_homeland"/></div></div><div class="columns"><div class="column is-one-fifth">Pronouns</div><div class="column"><input type="text" name="attr_pronouns"/></div><div class="column is-narrow pt-0"><button class="noctis-button-announce" type="action" name="act_introduction"></button></div></div><div class="columns"><div class="column is-one-fifth">Class</div><div class="column"><input type="text" name="attr_class" list="classes"/></div></div><div class="columns"><div class="column is-one-fifth">Calling</div><div class="column"><input type="text" name="attr_calling" list="callings"/></div></div><div class="columns"><div class="column is-one-fifth">Role</div><div class="column"><input type="text" name="attr_role" list="roles"/></div></div></div></section><section class="noctis-section block"><span class="noctis-section-icon">&#x1F465;</span><h3 class="is-size-3 noctis-section-title noctis-section-offset">Bonds</h3><div class="noctis-section-body"><fieldset class="repeating_bonds"><div class="repeating-section columns"><div class="repeating-section column"><input type="text" name="attr_bondname" placeholder="Bond name"/></div><div class="repeating-section column is-narrow"><input type="checkbox" name="attr_bondstressed"/></div></div></fieldset></div></section><section class="noctis-section block"><span class="noctis-section-icon">&#x2694;</span><h3 class="is-size-3 noctis-section-title noctis-section-offset">Weapon</h3><div class="noctis-section-body"><div class="columns is-vcentered"><div class="column is-narrow">Name</div><div class="column"><input type="text" name="attr_weapon_name"/></div><div class="column is-narrow pt-0"><button class="noctis-button-announce" type="roll" name="announce_weapon" value="&amp;{template:announce} {{name=@{weapon_name}}} {{text=@{weapon_desc}}} {{Auto-Attack=@{weapon_auto_attack}}} {{Core Damage=@{weapon_core_damage}}} {{Range=@{weapon_range}}}"></button></div></div><div class="columns"><div class="column"><textarea name="attr_weapon_desc" rows="3"></textarea></div></div><div class="columns"><div class="column"><div class="noctis-box"><h4 class="noctis-box-title">Auto-Atk</h4><div class="columns is-centered"><div class="column"><div class="p-3"><input type="number" name="attr_weapon_auto_attack" value="0"/><p>Value</p></div></div></div></div></div><div class="column"><div class="noctis-box"><h4 class="noctis-box-title">Core Dmg</h4><div class="columns is-centered"><div class="column"><div class="p-3"><input type="number" name="attr_weapon_core_damage" value="0"/><p> +<span name="attr_throne_damage"></span>
Throne</p></div></div></div></div></div><div class="column"><div class="noctis-box"><h4 class="noctis-box-title">Range</h4><div class="columns is-centered"><div class="column"><div class="p-3"><input type="number" name="attr_weapon_range" value="0"/><p>Value</p></div></div></div></div></div><div class="column"><div class="noctis-box"><h4 class="noctis-box-title">Wpn Dice</h4><div class="columns is-centered"><div class="column"><div class="p-3"><input type="number" name="attr_weapon_dice" value="0"/><button class="noctis-button-red d20" type="action" name="act_attack"></button><p>Value</p></div></div></div></div></div></div><div class="columns"><div class="column"><div class="guard-block"><input class="defense-warning-trigger" type="hidden" name="attr_status_save_afraid" value="0"/><p class="defense-warning-message">AFRAID: Do -3 damage vs. whoever inflicted this on you.</p></div><div class="guard-block"><input class="defense-warning-trigger" type="hidden" name="attr_status_save_dazed" value="0"/><p class="defense-warning-message">DAZED: Disadvantage on attack rolls &amp; skill tests.</p></div><div class="guard-block"><input class="defense-warning-trigger" type="hidden" name="attr_status_save_taunted" value="0"/><p class="defense-warning-message">TAUNTED: Unable to make attacks that don't include the taunter, do your best to attack/auto-attack them.</p></div><div class="guard-block"><input class="defense-warning-trigger" type="hidden" name="attr_condition_empowered" value="0"/><p class="defense-warning-message">EMPOWERED: Do +3 damage with single-target attacks, +1 with AOE/multitarget.</p></div><div class="guard-block"><input class="defense-warning-trigger" type="hidden" name="attr_condition_focused" value="0"/><p class="defense-warning-message">FOCUSED: Gain Advantage on attacks.</p></div></div></div></div></section><section class="noctis-section block"><span class="noctis-section-icon">&#x1F6E1;</span><h3 class="is-size-3 noctis-section-title noctis-section-offset">Armor</h3><div class="noctis-section-body"><div class="columns is-vcentered"><div class="column is-narrow">Name</div><div class="column"><input type="text" name="attr_armor_name"/></div><div class="column is-narrow pt-0"><button class="noctis-button-announce" type="roll" name="announce_armor" value="&amp;{template:announce} {{name=@{armor_name}}} {{text=@{armor_desc}}} {{Dodge=@{armor_dodge}}} {{Ward=@{armor_ward}}}"></button></div></div><div class="columns"><div class="column"><textarea name="attr_armor_desc" rows="3"></textarea></div></div><div class="columns"><div class="column"><div class="noctis-box"><h4 class="noctis-box-title">Dodge</h4><div class="columns is-centered"><div class="column"><div class="p-3"><input type="number" name="attr_armor_dodge" value="0"/><p>Value</p></div></div></div></div></div><div class="column"><div class="noctis-box"><h4 class="noctis-box-title">Ward</h4><div class="columns is-centered"><div class="column"><div class="p-3"><input type="number" name="attr_armor_ward" value="0"/><p>Value</p></div></div></div></div></div><div class="column"><div class="noctis-box"><h4 class="noctis-box-title">Barrier</h4><div class="columns is-centered"><div class="column"><div class="p-3"><input type="number" name="attr_barrier" value="0"/><p>Uses</p></div></div></div></div></div></div><div class="columns"><div class="column"><div class="guard-block"><input class="defense-warning-trigger" type="hidden" name="attr_status_save_immobilized" value="0"/><p class="defense-warning-message">IMMOBILIZED: Unable to move, -3 to Dodge.</p></div><div class="guard-block"><input class="defense-warning-trigger" type="hidden" name="attr_status_save_sick" value="0"/><p class="defense-warning-message">SICK: Disadvantage on saves, -3 to Dodge &amp; Ward</p></div><div class="guard-block"><input class="defense-warning-trigger" type="hidden" name="attr_condition_blink" value="0"/><p class="defense-warning-message">BLINK: Teleport 1 at the start or end of your turn as a Free action, +3 to Dodge &amp; Ward.</p></div><div class="guard-block"><input class="defense-warning-trigger" type="hidden" name="attr_condition_cloaked" value="0"/><p class="defense-warning-message">CLOAKED: Unhittable by single target attacks, advantage on Sneaks, +3 to Dodge &amp; Ward vs. AOE attacks.</p></div><div class="guard-block"><input class="defense-warning-trigger" type="hidden" name="attr_condition_cover" value="0"/><p class="defense-warning-message">COVER: +3 to Dodge &amp; Ward.</p></div></div></div></div></section><section class="noctis-section block"><span class="noctis-section-icon">&#x2764;</span><h3 class="is-size-3 noctis-section-title noctis-section-offset">Soak</h3><div class="noctis-section-body"><div class="columns"><div class="column"><div class="noctis-box"><h4 class="noctis-box-title">Physical</h4><div class="columns is-centered"><div class="column"><div class="p-3"><input type="number" name="attr_soak_physical" value="0"/><button class="noctis-button-yellow d6" type="action" name="act_soak" data-soak-label="Physical" data-soak-attr="soak_physical"></button><p>Value</p></div></div></div></div></div><div class="column"><div class="noctis-box"><h4 class="noctis-box-title">Astral</h4><div class="columns is-centered"><div class="column"><div class="p-3"><input type="number" name="attr_soak_astral" value="0"/><button class="noctis-button-yellow d6" type="action" name="act_soak" data-soak-label="Astral" data-soak-attr="soak_astral"></button><p>Value</p></div></div></div></div></div><div class="column"><div class="noctis-box"><h4 class="noctis-box-title">Umbral</h4><div class="columns is-centered"><div class="column"><div class="p-3"><input type="number" name="attr_soak_umbral" value="0"/><button class="noctis-button-yellow d6" type="action" name="act_soak" data-soak-label="Umbral" data-soak-attr="soak_umbral"></button><p>Value</p></div></div></div></div></div><div class="column"><div class="noctis-box"><h4 class="noctis-box-title">Toxic</h4><div class="columns is-centered"><div class="column"><div class="p-3"><input type="number" name="attr_soak_toxic" value="0"/><button class="noctis-button-yellow d6" type="action" name="act_soak" data-soak-label="Toxic" data-soak-attr="soak_toxic"></button><p>Value</p></div></div></div></div></div></div><div class="columns"><div class="column"><div class="guard-block"><input class="defense-warning-trigger" type="hidden" name="attr_condition_shielded" value="0"/><p class="defense-warning-message">SHIELDED: Gain +3 on Soak rolls.</p></div></div></div></div></section></div><div class="column is-one-half"><section class="noctis-section block"><div class="noctis-section-body"><div class="columns"><div class="column"><div class="noctis-box"><h4 class="noctis-box-title">Level</h4><div class="columns is-centered"><div class="column"><div class="p-3"><input type="number" name="attr_level" value="0"/><p>Value</p></div></div></div></div></div><div class="column"><div class="noctis-box"><h4 class="noctis-box-title">XP</h4><div class="columns is-centered"><div class="column"><div class="p-3"><input type="number" name="attr_xp" value="0"/><p>Value</p></div></div></div></div></div><div class="column"><div class="noctis-box"><h4 class="noctis-box-title">RB</h4><div class="columns is-centered"><div class="column"><div class="p-3"><input type="number" name="attr_rb" value="0"/><button class="emoji" type="action" name="act_heal">&#x1F48A;</button><p>HP/4</p></div></div></div></div></div></div></div></section><section class="noctis-section block"><span class="noctis-section-icon">&#x1F4D7;</span><h3 class="is-size-3 noctis-section-title noctis-section-offset">Skills</h3><div class="noctis-section-body"><fieldset class="repeating_skills"><div class="repeating-section columns"><div class="repeating-section column"><input type="text" name="attr_skillname" placeholder="Skill name" list="skillnames"/></div><div class="repeating-section column is-narrow"><input type="number" name="attr_skillrank" placeholder="Rank" min="1" max="5" value="2"/><button class="noctis-button-green d20" type="action" name="act_skill"></button></div></div></fieldset><div class="columns mt-3"><div class="column"><input type="text" value="All Others" readonly="readonly"/></div><div class="column is-narrow"><input type="number" value="1" readonly="readonly"/><button class="noctis-button-green d20" type="action" name="act_skilldefault"></button></div></div></div></section><section class="noctis-section block"><span class="noctis-section-icon">&#x267B;</span><h3 class="is-size-3 noctis-section-title noctis-section-offset">Traits</h3><div class="noctis-section-body"><div class="columns"><div class="column is-one-fifth">Background</div><div class="column"><input type="text" name="attr_trait_background"/></div><div class="column is-narrow pt-0"><button class="noctis-button-green d20" type="action" name="act_trait" data-trait-attr="trait_background"></button></div></div><div class="columns"><div class="column is-one-fifth">Physical</div><div class="column"><input type="text" name="attr_trait_physical"/></div><div class="column is-narrow pt-0"><button class="noctis-button-green d20" type="action" name="act_trait" data-trait-attr="trait_physical"></button></div></div><div class="columns"><div class="column is-one-fifth">Mental</div><div class="column"><input type="text" name="attr_trait_mental"/></div><div class="column is-narrow pt-0"><button class="noctis-button-green d20" type="action" name="act_trait" data-trait-attr="trait_mental"></button></div></div><div class="columns"><div class="column is-one-fifth">Special</div><div class="column"><input type="text" name="attr_trait_special"/></div><div class="column is-narrow pt-0"><button class="noctis-button-green d20" type="action" name="act_trait" data-trait-attr="trait_special"></button></div></div></div></section><section class="noctis-section block"><span class="noctis-section-icon">&#x1F48E;</span><h3 class="is-size-3 noctis-section-title noctis-section-offset">Inventory</h3><div class="noctis-section-body"><fieldset class="repeating_inventory"><input type="text" name="attr_itemname" placeholder="Item name"/></fieldset><div class="columns is-centered mt-3"><div class="column is-narrow"><div class="noctis-box"><h4 class="noctis-box-title">Inventory Points (IP)</h4><div class="columns is-centered"><div class="column is-one-half"><div class="p-3"><input type="number" name="attr_ip" value="0"/><p>Current</p></div></div><div class="column is-one-half"><div class="p-3"><input type="number" name="attr_ip_max" value="0"/><p>Max</p></div></div></div></div></div><div class="column is-narrow"><div class="noctis-box"><h4 class="noctis-box-title">Libra</h4><div class="columns is-centered"><div class="column"><div class="p-3"><input type="number" name="attr_libra" value="0" style="width: 4rem;"/><p>Value</p></div></div></div></div></div></div><div class="content"><ul><li>Aether Point - 2 IP. You or an ally in range 0 may <i>Power Up!!</i> as a Free Action</li><li>Elixir - 2 IP. You or an ally in range 0 Heal (RB * 2)</li><li>Panacea - 2 IP. Gain Advantage on saves for the next 3 rounds</li><li>Phoenix Ash - 3 IP. Raise (RB) on an ally in range 0</li></ul></div></div></section></div></div></div><div class="sheet sheet-tab2"><div class="columns"><div class="column"><div class="noctis-box"><h4 class="noctis-box-title">HP</h4><div class="columns is-centered"><div class="column is-one-half"><div class="p-3"><input type="number" name="attr_hp" value="0"/><p><input type="hidden" name="attr_injured"/><span name="attr_injured"></span></p></div></div><div class="column is-one-half"><div class="p-3"><input type="number" name="attr_hp_max" value="0"/><p>Max</p></div></div></div></div><div class="noctis-box"><h4 class="noctis-box-title">Recovery</h4><div class="columns is-centered"><div class="column is-one-half"><div class="p-3"><input type="number" name="attr_recovery" value="0"/><p>Current</p></div></div><div class="column is-one-half"><div class="p-3"><input type="number" name="attr_recovery_max" value="0"/><p>Max</p></div></div></div></div></div><div class="column"><div class="noctis-box"><h4 class="noctis-box-title">Armor HP</h4><div class="columns is-centered"><div class="column is-one-half"><div class="p-3"><input type="number" name="attr_armor_hp" value="0"/><p>Current</p></div></div><div class="column is-one-half"><div class="p-3"><input type="number" name="attr_armor_hp_max" value="0"/><p>Max</p></div></div></div></div><div class="noctis-box"><h4 class="noctis-box-title">Recovery Base (RB)</h4><div class="columns is-centered"><div class="column"><div class="p-3"><input type="number" name="attr_rb" value="0"/><button class="emoji" type="action" name="act_heal">&#x1F48A;</button><p>HP/4</p></div></div></div></div></div><div class="column"><section class="noctis-section block"><h3 class="noctis-section-title">Aether Current</h3><div class="noctis-section-body"><textarea name="attr_aether_current" placeholder="Aether Current Rules" rows="4"></textarea><button class="noctis-button-red d6" type="action" name="act_aethercurrent" data-aethercurrent-number="0"></button><span>&nbsp;</span><label><input type="checkbox" name="attr_unlock_ac5"/>
Unlock fifth AC die</label></div></section></div></div><div class="columns"><div class="column ac_die_1"><div class="noctis-box"><h4 class="noctis-box-title">AC 1</h4><div class="columns is-centered"><div class="column"><div class="p-3"><select name="attr_aether_current_1"><option>Available</option><option>Used</option><option>Throne Damage</option><option>Astral Seal</option><option>Umbral Seal</option><option>Weak Charge</option><option>Surging Charge</option></select><button class="noctis-button-red d6" type="action" name="act_aethercurrent" data-aethercurrent-number="1"></button></div></div></div></div></div><div class="column ac_die_2"><div class="noctis-box"><h4 class="noctis-box-title">AC 2</h4><div class="columns is-centered"><div class="column"><div class="p-3"><select name="attr_aether_current_2"><option>Available</option><option>Used</option><option>Throne Damage</option><option>Astral Seal</option><option>Umbral Seal</option><option>Weak Charge</option><option>Surging Charge</option></select><button class="noctis-button-red d6" type="action" name="act_aethercurrent" data-aethercurrent-number="2"></button></div></div></div></div></div><div class="column ac_die_3"><div class="noctis-box"><h4 class="noctis-box-title">AC 3</h4><div class="columns is-centered"><div class="column"><div class="p-3"><select name="attr_aether_current_3"><option>Available</option><option>Used</option><option>Throne Damage</option><option>Astral Seal</option><option>Umbral Seal</option><option>Weak Charge</option><option>Surging Charge</option></select><button class="noctis-button-red d6" type="action" name="act_aethercurrent" data-aethercurrent-number="3"></button></div></div></div></div></div><div class="column ac_die_4"><div class="noctis-box"><h4 class="noctis-box-title">AC 4</h4><div class="columns is-centered"><div class="column"><div class="p-3"><select name="attr_aether_current_4"><option>Available</option><option>Used</option><option>Throne Damage</option><option>Astral Seal</option><option>Umbral Seal</option><option>Weak Charge</option><option>Surging Charge</option></select><button class="noctis-button-red d6" type="action" name="act_aethercurrent" data-aethercurrent-number="4"></button></div></div></div></div></div><input class="unlock_ac5_toggle" type="hidden" name="attr_unlock_ac5"/><div class="column ac_die_5"><div class="noctis-box"><h4 class="noctis-box-title">AC 5</h4><div class="columns is-centered"><div class="column"><div class="p-3"><select name="attr_aether_current_5"><option>Available</option><option>Used</option><option>Throne Damage</option><option>Astral Seal</option><option>Umbral Seal</option><option>Weak Charge</option><option>Surging Charge</option></select><button class="noctis-button-red d6" type="action" name="act_aethercurrent" data-aethercurrent-number="5"></button></div></div></div></div></div></div><div class="columns"><div class="column"><div class="noctis-box"><h4 class="noctis-box-title">Auto-Atk</h4><div class="columns is-centered"><div class="column"><div class="p-3"><input type="number" name="attr_weapon_auto_attack" value="0"/><p>Value</p></div></div></div></div></div><div class="column"><div class="noctis-box"><h4 class="noctis-box-title">Core Dmg</h4><div class="columns is-centered"><div class="column"><div class="p-3"><input type="number" name="attr_weapon_core_damage" value="0"/><p>Value</p></div></div></div></div></div><div class="column"><div class="noctis-box"><h4 class="noctis-box-title">Range</h4><div class="columns is-centered"><div class="column"><div class="p-3"><input type="number" name="attr_weapon_range" value="0"/><p>Value</p></div></div></div></div></div><div class="column"><div class="noctis-box"><h4 class="noctis-box-title">Wpn Dice</h4><div class="columns is-centered"><div class="column"><div class="p-3"><input type="number" name="attr_weapon_dice" value="0"/><button class="noctis-button-red d20" type="action" name="act_attack"></button><p>Value</p></div></div></div></div></div></div><section class="noctis-section block"><span class="noctis-section-icon">&#x26A1;</span><h3 class="is-size-3 noctis-section-title noctis-section-offset">Powers</h3><div class="noctis-section-body"><input class="unlock_ac5_toggle" type="hidden" name="attr_unlock_ac5"/><fieldset class="repeating_powers"><input type="hidden" name="attr_readonly"/><div class="power-block-readonly"><input class="attr_powertype_key" type="hidden" name="attr_powertype"/><div class="attr_powertype_container block"><div class="columns"><div class="column powertype-display"><strong><span name="attr_powername"></span></strong>
- <strong><span name="attr_powertype"></span></strong></div><div class="column is-narrow"><button class="noctis-button-unlock" type="action" name="act_togglepower"></button><button class="noctis-button-announce" type="roll" name="announce_power" value="&amp;{template:announce} {{name=@{powername}}} {{text=@{powerdesc}}} {{Type=@{powertype}}}"></button></div></div><div class="columns"><div class="column"><span name="attr_powerdesc" style="white-space: pre-line"></span></div></div></div></div><div class="power-block-editable"><input class="attr_powertype_key" type="hidden" name="attr_powertype"/><div class="attr_powertype_container"><div class="repeating-section columns"><div class="repeating-section column is-narrow">Name</div><div class="repeating-section column"><input type="text" name="attr_powername" placeholder="Power Name"/></div><div class="repeating-section column is-narrow">Type</div><div class="repeating-section column"><input type="text" name="attr_powertype" placeholder="Power Type" size="24" list="powertypes"/></div><div class="repeating-section column is-narrow pt-0"><button class="noctis-button-lock" type="action" name="act_togglepower"></button><button class="noctis-button-announce" type="roll" name="announce_power" value="&amp;{template:announce} {{name=@{powername}}} {{text=@{powerdesc}}} {{Type=@{powertype}}}"></button></div></div><div class="repeating-section columns"><div class="repeating-section column"><textarea name="attr_powerdesc" placeholder="Power Description" rows="3"></textarea></div></div></div></div><input class="powertype_toggle" type="hidden" name="attr_powertype"/><div class="repeating-section columns aether-current-charges pt-0"><div class="repeating-section column pt-0 ac_die_1"><span class="tag is-primary is-medium"><label><input type="checkbox" name="attr_aether_current_assigned_1"/>&nbsp;<span class="has-text-white" name="attr_aether_current_1"></span></label></span></div><div class="repeating-section column pt-0 ac_die_2"><span class="tag is-primary is-medium"><label><input type="checkbox" name="attr_aether_current_assigned_2"/>&nbsp;<span class="has-text-white" name="attr_aether_current_2"></span></label></span></div><div class="repeating-section column pt-0 ac_die_3"><span class="tag is-primary is-medium"><label><input type="checkbox" name="attr_aether_current_assigned_3"/>&nbsp;<span class="has-text-white" name="attr_aether_current_3"></span></label></span></div><div class="repeating-section column pt-0 ac_die_4"><span class="tag is-primary is-medium"><label><input type="checkbox" name="attr_aether_current_assigned_4"/>&nbsp;<span class="has-text-white" name="attr_aether_current_4"></span></label></span></div><input class="unlock_ac5_toggle" type="hidden" name="attr_unlock_ac5"/><div class="repeating-section column pt-0 ac_die_5"><span class="tag is-primary is-medium"><label><input type="checkbox" name="attr_aether_current_assigned_5"/>&nbsp;<span class="has-text-white" name="attr_aether_current_5"></span></label></span></div></div></fieldset></div></section></div><div class="sheet sheet-tab3"><section class="noctis-section block"><div class="noctis-section-body"><div class="columns"><div class="column"><label><input type="checkbox" name="attr_show_combat_effects"/><span>Show Combat Effects</span></label></div></div><input class="show-combat-effects-toggle" type="hidden" name="attr_show_combat_effects"/><div class="show-combat-effects-section"><div class="columns"><div class="column is-2"><label><input type="checkbox" name="attr_ce_toggle_advantage"/><span>Enabled</span></label></div><div class="column is-2"><p>Advantage</p></div><div class="column is-1"><input type="number" name="attr_ce_advantage" min="0" value="0"/></div><div class="column is-2"><p>Disadvantage</p></div><div class="column is-1"><input type="number" name="attr_ce_disadvantage" min="0" value="0"/></div></div><div class="columns"><div class="column is-2"><label><input type="checkbox" name="attr_ce_toggle_soak"/><span>Enabled</span></label></div><div class="column is-2"><p>Soak bonus</p></div><div class="column is-1"><input type="number" name="attr_ce_soak_bonus" min="0" value="0"/></div></div><div class="columns"><div class="column is-2"><label><input type="checkbox" name="attr_ce_toggle_ac_bonus"/><span>Enabled</span></label></div><div class="column is-2"><p>Aether Current rolls</p></div><div class="column is-1"><input type="number" name="attr_ce_ac_bonus" min="0" value="0"/></div></div></div></div></section><div class="columns"><div class="column is-one-half"><section class="noctis-section block"><span class="noctis-section-icon">&#x1F534;</span><h3 class="is-size-3 noctis-section-title noctis-section-offset">Statuses</h3><div class="noctis-section-body"><div class="columns"><div class="column">Announce Marked</div><div class="column is-narrow"><button class="noctis-button-announce" type="roll" name="announce_statuses" value="&amp;{template:announce} {{name=Statuses}}@{status_tracker}"></button></div></div><div class="columns"><div class="column"><strong>AFRAID</strong><p>Do -3 damage vs. whoever inflicted this on you.</p></div><div class="column is-narrow"><input type="number" name="attr_status_save_afraid" value="0"/><button class="noctis-button-yellow d20" type="action" name="act_save" data-status-name="afraid"></button></div></div><div class="columns"><div class="column"><strong>AGONY</strong><p>Don't regain HP. Cleansed by the first healing effect you receive.</p></div><div class="column is-narrow"><input type="number" name="attr_status_save_agony" value="0"/><button class="noctis-button-yellow d20" type="action" name="act_save" data-status-name="agony"></button></div></div><div class="columns"><div class="column"><strong>DAZED</strong><p>Disadvantage on attack rolls &amp; skill tests.</p></div><div class="column is-narrow"><input type="number" name="attr_status_save_dazed" value="0"/><button class="noctis-button-yellow d20" type="action" name="act_save" data-status-name="dazed"></button></div></div><div class="columns"><div class="column"><strong>EXPOSED</strong><p>Take +3 damage (+4 from Strikers) from the next attack to hit you.</p></div><div class="column is-narrow"><input type="number" name="attr_status_save_exposed" value="0"/><button class="noctis-button-yellow d20" type="action" name="act_save" data-status-name="exposed"></button></div></div><div class="columns"><div class="column"><strong>IMMOBILIZED</strong><p>Unable to move, -3 to Dodge.</p></div><div class="column is-narrow"><input type="number" name="attr_status_save_immobilized" value="0"/><button class="noctis-button-yellow d20" type="action" name="act_save" data-status-name="immobilized"></button></div></div><div class="columns"><div class="column"><strong>SICK</strong><p>Disadvantage on saves, -3 to Dodge &amp; Ward</p></div><div class="column is-narrow"><input type="number" name="attr_status_save_sick" value="0"/><button class="noctis-button-yellow d20" type="action" name="act_save" data-status-name="sick"></button></div></div><div class="columns"><div class="column"><strong>SLOWED</strong><p>No Charged actions, all terrain is difficult, only Slow actions, only receive ◆◆ action budget.</p></div><div class="column is-narrow"><input type="number" name="attr_status_save_slowed" value="0"/><button class="noctis-button-yellow d20" type="action" name="act_save" data-status-name="slowed"></button></div></div><div class="columns"><div class="column"><strong>STUNNED</strong><p>Lose one ◆ on your turn, automatically cleansed after 1 turn.</p></div><div class="column is-narrow"><input type="number" name="attr_status_save_stunned" value="0"/><button class="noctis-button-yellow d20" type="action" name="act_save" data-status-name="stunned"></button></div></div><div class="columns"><div class="column"><strong>TAUNTED</strong><p>Unable to make attacks that don't include the taunter, do your best to attack/auto-attack them.</p></div><div class="column is-narrow"><input type="number" name="attr_status_save_taunted" value="0"/><button class="noctis-button-yellow d20" type="action" name="act_save" data-status-name="taunted"></button></div></div><div class="columns"><div class="column"><strong>WOUNDED</strong><input type="radio" name="attr_stacks_wounded" value="1"/><input type="radio" name="attr_stacks_wounded" value="2"/><input type="radio" name="attr_stacks_wounded" value="3"/><input type="radio" name="attr_stacks_wounded" value="4"/><p>Take 3 piercing at the start of your turn, +1 per extra stack of WOUNDED.</p></div><div class="column is-narrow"><input type="number" name="attr_status_save_wounded" value="0"/><button class="noctis-button-yellow d20" type="action" name="act_save" data-status-name="wounded"></button></div></div><input type="hidden" name="attr_status_tracker"/></div></section></div><div class="column is-one-half"><section class="noctis-section block"><span class="noctis-section-icon">&#x1F7E2;</span><h3 class="is-size-3 noctis-section-title noctis-section-offset">Conditions</h3><div class="noctis-section-body"><div class="columns"><div class="column">Announce Marked</div><div class="column is-narrow"><button class="noctis-button-announce" type="roll" name="announce_conditions" value="&amp;{template:announce} {{name=Conditions}}@{condition_tracker}"></button></div></div><div class="columns"><div class="column"><strong>BLINK</strong><p>Teleport 1 at the start or end of your turn as a Free action, +3 to Dodge &amp; Ward.</p></div><div class="column is-narrow"><input type="number" name="attr_condition_blink" value="0"/><button class="noctis-button-yellow" type="action" name="act_addcondition" data-condition-name="blink">+</button></div></div><div class="columns"><div class="column"><strong>CLOAKED</strong><p>Unhittable by single target attacks, advantage on Sneaks, +3 to Dodge &amp; Ward vs. AOE attacks.</p></div><div class="column is-narrow"><input type="number" name="attr_condition_cloaked" value="0"/><button class="noctis-button-yellow" type="action" name="act_addcondition" data-condition-name="cloaked">+</button></div></div><div class="columns"><div class="column"><strong>COVER</strong><p>+3 to Dodge &amp; Ward.</p></div><div class="column is-narrow"><input type="number" name="attr_condition_cover" value="0"/><button class="noctis-button-yellow" type="action" name="act_addcondition" data-condition-name="cover">+</button></div></div><div class="columns"><div class="column"><strong>EMPOWERED</strong><p>Do +3 damage with single-target attacks, +1 with AOE/multitarget.</p></div><div class="column is-narrow"><input type="number" name="attr_condition_empowered" value="0"/><button class="noctis-button-yellow" type="action" name="act_addcondition" data-condition-name="empowered">+</button></div></div><div class="columns"><div class="column"><strong>FOCUSED</strong><p>Gain Advantage on attacks.</p></div><div class="column is-narrow"><input type="number" name="attr_condition_focused" value="0"/><button class="noctis-button-yellow" type="action" name="act_addcondition" data-condition-name="focused">+</button></div></div><div class="columns"><div class="column"><strong>HASTE</strong><p>Gain +1 ◆ on your turn.</p></div><div class="column is-narrow"><input type="number" name="attr_condition_haste" value="0"/><button class="noctis-button-yellow" type="action" name="act_addcondition" data-condition-name="haste">+</button></div></div><div class="columns"><div class="column"><strong>REGEN</strong><input type="radio" name="attr_stacks_regen" value="1"/><input type="radio" name="attr_stacks_regen" value="2"/><input type="radio" name="attr_stacks_regen" value="3"/><input type="radio" name="attr_stacks_regen" value="4"/><p>Heal 3 at the start of your turn, +1 per extra stack of REGEN.</p></div><div class="column is-narrow"><input type="number" name="attr_condition_regen" value="0"/><button class="noctis-button-yellow" type="action" name="act_addcondition" data-condition-name="regen">+</button></div></div><div class="columns"><div class="column"><strong>SHIELDED</strong><p>Gain +3 on Soak rolls.</p></div><div class="column is-narrow"><input type="number" name="attr_condition_shielded" value="0"/><button class="noctis-button-yellow" type="action" name="act_addcondition" data-condition-name="shielded">+</button></div></div><input type="hidden" name="attr_condition_tracker"/><button class="noctis-button-yellow" type="action" name="act_clearconditions">One Round Passes</button></div></section><section class="noctis-section block"><h3 class="noctis-section-title">Marks</h3><div class="noctis-section-body"><textarea name="attr_condition_marks" placeholder="Marks and temporary effects" rows="7"></textarea></div></section></div></div></div><div class="sheet sheet-tab4"><div class="columns"><div class="column"><section class="noctis-section block"><div class="noctis-section-body"><div class="columns"><div class="column is-6"><strong><span name="attr_character_name"></span></strong><span> - </span><span name="attr_class"></span></div><div class="column is-2"><strong>Movement:</strong></div><div class="column is-3"><input type="text" name="attr_movement" list="movement"/></div></div><div class="columns"><div class="column"><strong style="width: 6rem">HP: </strong><input type="number" name="attr_hp" value="0"/><span> / </span><input type="number" name="attr_hp_max" value="0"/><span> </span><input class="mini-hp" type="hidden" name="attr_injured" readonly="readonly"/><span name="attr_injured"></span></div><div class="column"><strong style="width: 6rem">RB: </strong><input type="number" name="attr_rb" value="0"/></div><div class="column"><strong style="width: 6rem">Dodge: </strong><input type="number" name="attr_armor_dodge" value="0"/></div><div class="column"><strong style="width: 6rem">Ward: </strong><input type="number" name="attr_armor_ward" value="0"/></div></div><div class="columns"><div class="column"><strong style="width: 6rem">Physical: </strong><input type="number" name="attr_soak_physical" value="0"/><button class="noctis-button-yellow d6" type="action" name="act_soak" data-soak-label="Physical" data-soak-attr="soak_physical"></button></div><div class="column"><strong style="width: 6rem">Astral: </strong><input type="number" name="attr_soak_astral" value="0"/><button class="noctis-button-yellow d6" type="action" name="act_soak" data-soak-label="Astral" data-soak-attr="soak_astral"></button></div><div class="column"><strong style="width: 6rem">Umbral: </strong><input type="number" name="attr_soak_umbral" value="0"/><button class="noctis-button-yellow d6" type="action" name="act_soak" data-soak-label="Umbral" data-soak-attr="soak_umbral"></button></div><div class="column"><strong style="width: 6rem">Toxic: </strong><input type="number" name="attr_soak_toxic" value="0"/><button class="noctis-button-yellow d6" type="action" name="act_soak" data-soak-label="Toxic" data-soak-attr="soak_toxic"></button></div></div><div class="columns"><div class="column"><strong style="width: 6rem">Auto-Atk: </strong><input type="number" name="attr_weapon_auto_attack" value="0"/></div><div class="column"><strong style="width: 6rem">Core Dmg: </strong><input type="number" name="attr_weapon_core_damage" value="0"/></div><div class="column"><strong style="width: 6rem">Range: </strong><input type="number" name="attr_weapon_range" value="0"/></div><div class="column"><strong style="width: 6rem">Wpn Dice: </strong><input type="number" name="attr_weapon_dice" value="0"/><button class="noctis-button-red d20" type="action" name="act_attack"></button></div></div></div></section><section class="noctis-section block"><h3 class="noctis-section-title">Talents and Powers</h3><div class="noctis-section-body"><input class="unlock_ac5_toggle" type="hidden" name="attr_unlock_ac5"/><fieldset class="repeating_powers"><input type="hidden" name="attr_readonly"/><div class="power-block-readonly"><input class="attr_powertype_key" type="hidden" name="attr_powertype"/><div class="attr_powertype_container block"><div class="columns"><div class="column powertype-display"><strong><span name="attr_powername"></span></strong>
- <strong><span name="attr_powertype"></span></strong></div><div class="column is-narrow"><button class="noctis-button-unlock" type="action" name="act_togglepower"></button><button class="noctis-button-announce" type="roll" name="announce_power" value="&amp;{template:announce} {{name=@{powername}}} {{text=@{powerdesc}}} {{Type=@{powertype}}}"></button></div></div><div class="columns"><div class="column"><span name="attr_powerdesc" style="white-space: pre-line"></span></div></div></div></div><div class="power-block-editable"><input class="attr_powertype_key" type="hidden" name="attr_powertype"/><div class="attr_powertype_container"><div class="repeating-section columns"><div class="repeating-section column is-narrow">Name</div><div class="repeating-section column"><input type="text" name="attr_powername" placeholder="Power Name"/></div><div class="repeating-section column is-narrow">Type</div><div class="repeating-section column"><input type="text" name="attr_powertype" placeholder="Power Type" size="24" list="powertypes"/></div><div class="repeating-section column is-narrow pt-0"><button class="noctis-button-lock" type="action" name="act_togglepower"></button><button class="noctis-button-announce" type="roll" name="announce_power" value="&amp;{template:announce} {{name=@{powername}}} {{text=@{powerdesc}}} {{Type=@{powertype}}}"></button></div></div><div class="repeating-section columns"><div class="repeating-section column"><textarea name="attr_powerdesc" placeholder="Power Description" rows="3"></textarea></div></div></div></div><input class="powertype_toggle" type="hidden" name="attr_powertype"/><div class="repeating-section columns aether-current-charges pt-0"><div class="repeating-section column pt-0 ac_die_1"><span class="tag is-primary is-medium"><label><input type="checkbox" name="attr_aether_current_assigned_1"/>&nbsp;<span class="has-text-white" name="attr_aether_current_1"></span></label></span></div><div class="repeating-section column pt-0 ac_die_2"><span class="tag is-primary is-medium"><label><input type="checkbox" name="attr_aether_current_assigned_2"/>&nbsp;<span class="has-text-white" name="attr_aether_current_2"></span></label></span></div><div class="repeating-section column pt-0 ac_die_3"><span class="tag is-primary is-medium"><label><input type="checkbox" name="attr_aether_current_assigned_3"/>&nbsp;<span class="has-text-white" name="attr_aether_current_3"></span></label></span></div><div class="repeating-section column pt-0 ac_die_4"><span class="tag is-primary is-medium"><label><input type="checkbox" name="attr_aether_current_assigned_4"/>&nbsp;<span class="has-text-white" name="attr_aether_current_4"></span></label></span></div><input class="unlock_ac5_toggle" type="hidden" name="attr_unlock_ac5"/><div class="repeating-section column pt-0 ac_die_5"><span class="tag is-primary is-medium"><label><input type="checkbox" name="attr_aether_current_assigned_5"/>&nbsp;<span class="has-text-white" name="attr_aether_current_5"></span></label></span></div></div></fieldset></div></section></div></div></div><div class="sheet sheet-tab5"><div class="columns"><div class="column"><section class="noctis-section block"><h3 class="noctis-section-title">Import</h3><div class="noctis-section-body"><p>You can use the MEGALOS character maker: https://megalos.astralfrontier.org/character</p><p>On the "Sheet" tab of that tool, click "Export". Copy the JSON into this text field. Click "Import".</p><p>WARNING: this will delete ALL existing character data!</p><textarea name="attr_jsonimport" rows="8" style="white-space: pre-line"></textarea><button class="noctis-button-red" type="action" name="act_jsonimport">Import</button></div></section><section class="noctis-section block"><h3 class="noctis-section-title">Introduction</h3><div class="noctis-section-body"><p>You can customize your introduction text here!</p><p>Use <code>@{attribute_name}</code> to substitute attribute names.</p><p>Use **text** to bold, _text_ to italicize, etc.</p><p>You can even use images, with <code>[Image alt tag](https://image-url/)</code>, as long as the name ends in <code>.jpg</code> or <code>.png</code>.</p><p>Use <code>@AVATAR</code> to add your Roll20 character's own avatar as an image.</p><textarea name="attr_introduction_text" rows="8" style="white-space: pre-line"></textarea></div></section><section class="noctis-section block"><div class="noctis-section-body"><hr/><p style="text-align: center"><i>This is version 1.3.4 of the MEGALOS character sheet, created by Bill Garrett &lt;garrett@astralfrontier.org&gt;</i></p></div></section></div></div></div></div></div></div></div></div><datalist id="classes"><option>Invoker</option><option>Throne</option><option>Witch</option></datalist><datalist id="callings"><option>Arklight</option><option>Champion</option><option>Shadowblade</option><option>Astromancer</option><option>Chanter</option><option>Raconteur</option><option>Draloi</option><option>Psythe</option><option>Rune Magus</option></datalist><datalist id="roles"><option>Tank</option><option>Striker</option><option>Support</option></datalist><datalist id="skillnames"><option>Attune</option><option>Bargain</option><option>Create</option><option>Drive</option><option>Finesse</option><option>Force</option><option>Hunt</option><option>Inspect</option><option>Learn</option><option>Move</option><option>Perform</option><option>Restore</option><option>Sneak</option><option>Survive</option><option>Talk</option><option>Watch</option><option>Cautious (Cutscene)</option><option>Clever (Cutscene)</option><option>Forceful (Cutscene)</option><option>Quick (Cutscene)</option></datalist><datalist id="powertypes"><option>Talent</option><option>Calling Bonus</option><option>Invocation</option><option>Astral Invocation</option><option>Umbral Invocation</option><option>Arcana</option><option>Charged Strike</option><option>Combo Strike</option><option>Counter</option><option>Finisher</option><option>Sorcery</option><option>Cantrip</option><option>Artifact</option><option>Major Action (◆◆)</option><option>Minor Action (◆)</option><option>Reaction (◇)</option></datalist><datalist id="movement"><option>Normal</option><option>Flying</option><option>Slow</option><option>Teleporting</option></datalist><script type="text/worker">const variables ={
"avatar_reactions_enabled": false
}
// Cleverly use HTML attributes so we can support any number of tabbed elements on the sheet
on("clicked:changetab", function (event) {
var tabattr = event.htmlAttributes['data-tab-attr'];
var tabvalue = event.htmlAttributes['data-tab'];
var O = {};
O[tabattr] = tabvalue;
setAttrs(O);
});
/// <reference path="sheet.d.ts" />
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
// Documentation: https://wiki.roll20.net/Sheet_Worker_Scripts
var ce_advantage_attrs = [
'ce_toggle_advantage',
'ce_advantage',
'ce_disadvantage',
];
var ce_soak_attrs = ['ce_toggle_soak', 'ce_soak_bonus'];
var ce_ac_attrs = ['ce_toggle_ac_bonus', 'ce_ac_bonus'];
/**
* Turns a template name and a bag of properties into a properly formatted Roll20 string.
*
* @param template the template name, e.g. "attack"
* @param props a collection of keys and values, e.g. {"roll": "[[1d6]]"}
* @returns a Roll20 template string, e.g. &{template:attack} {{roll=[[1d6]]}}
*/
function propsToRollTemplate(template, props) {
var props_s = Object.keys(props).map(function (prop) { return "{{".concat(prop, "=").concat(props[prop], "}}"); });
return "&{template:".concat(template, "} ").concat(props_s.join(' '));
}
/**
* Take a die count and size.
* Look for advantage & disadvantage combat effects in the retrieved attributes.
* If enabled, apply advantage/disadvantage stacks.
* Return the final die command.
*
* @param diecount the starting numbre of dice to roll
* @param diesize the die size, e.g 6 or 20
* @param v a properties bag
* @param keep_highest whether the die roll should keep the highest result
* @returns a Roll20 die rolling command, e.g. "3d20kh2"
*/
function modifiedDiceCount(diecount, diesize, v, keep_highest) {
if (keep_highest === void 0) { keep_highest = false; }
if (v['ce_toggle_advantage'] != 'on') {
return "".concat(diecount, "d").concat(diesize).concat(keep_highest ? 'kh1' : '');
}
var updatedDieCount = parseInt(diecount) +
parseInt(v['ce_advantage'] || '0') -
parseInt(v['ce_disadvantage'] || '0');
var rollstring = updatedDieCount < 1
? "2d".concat(diesize, "kl1")
: "".concat(updatedDieCount, "d").concat(diesize).concat(keep_highest ? 'kh1' : '');
console.log("Updated die count is ".concat(updatedDieCount, " rollstring is ").concat(rollstring));
return rollstring;
}
function finishSkillRoll(outcome) {
var rollId = outcome.rollId, _a = outcome.results.roll, dice = _a.dice, expression = _a.expression;
var _b = expression.split('>'), dicestmt = _b[0], diff = _b[1];
// Discard the highest die if we rolled with disadvantage
var mydice = dice;
if (dice.length == 2 && dicestmt.endsWith('kl1')) {
mydice = [Math.min.apply(Math, dice)];
}
// A hit is anything that beats difficulty or is a nat 20, a strong hit is any nat 20 that beats difficulty
var target = parseInt(diff);
var hitmap = mydice.map(function (die) { return (die >= target ? 1 : 0) + (die == 20 ? 1 : 0); });
// Calculate total hits
var hittotal = hitmap.reduce(function (sum, hits) { return sum + hits; }, 0);
var message;
if (hittotal == 0) {
message = 'FAIL';
}
else if (hitmap.includes(2)) {
// Found a nat20 that beat the difficulty
message = "STRONG HIT (".concat(hittotal, ")");
}
else {
message = "HIT (".concat(hittotal, ")");
}
finishRoll(rollId, {
diff: "".concat(diff),
roll: dice.map(function (die) { return "".concat(die); }).join(' '),
message: message,
});
}
function startSkillRoll(skillname, skillrank, v, includeStatus) {
if (includeStatus === void 0) { includeStatus = true; }
var diestring = modifiedDiceCount(skillrank, 20, v);
var extraProperties = {};
if (includeStatus) {
extraProperties = {
dazed: '[[@{status_save_dazed}]]',
};
}
var template = propsToRollTemplate('check', __assign({ name: skillname, diff: '[[0]]', roll: "[[".concat(diestring, ">?{Difficulty|15}]]"), message: '[[0]]' }, extraProperties));
startRoll(template, finishSkillRoll);
}
function startSaveRoll(status, difficulty, v) {
var diestring = modifiedDiceCount(1, 20, v);
var template = propsToRollTemplate('save', {
name: status,
roll: "[[".concat(diestring, ">").concat(difficulty, "]]"),
message: '[[0]]',
sick: '[[@{status_save_sick}]]',
});
startRoll(template, finishSkillRoll);
}
function startAttackRoll(weaponname, weapondice, weapondamage, v) {
var diestring = modifiedDiceCount(weapondice, 20, v);
var template = propsToRollTemplate('attack', {
name: weaponname,
diff: '[[0]]',
roll: "[[".concat(diestring, ">?{Defense|15}]]"),
message: '[[0]]',
damage: "[[".concat(weapondamage, " + @{throne_damage}]]"),
throne: '[[@{throne_damage}]]',
afraid: '[[@{status_save_afraid}]]',
dazed: '[[@{status_save_dazed}]]',
taunted: '[[@{status_save_taunted}]]',
empowered: '[[@{condition_empowered}]]',
focused: '[[@{condition_focused}]]',
});
startRoll(template, finishSkillRoll);
}
on('clicked:repeating_skills:skill', function (event) {
var sourceAttribute = event.sourceAttribute;
// SourceAttribute: repeating_skills_-NRFjaNa3LW-sC6ntcBd_skill
getAttrs(__spreadArray(["".concat(sourceAttribute, "name"), "".concat(sourceAttribute, "rank")], ce_advantage_attrs, true), function (v) {
var skillname = v["".concat(sourceAttribute, "name")];
var skillrank = parseInt(v["".concat(sourceAttribute, "rank")]);
startSkillRoll(skillname, skillrank, v);
});
});
on('clicked:skilldefault', function (event) {
getAttrs(ce_advantage_attrs, function (v) {
startSkillRoll('Untrained Skill', 1, v);
});
});
on('clicked:trait', function (event) {
// e.g. "trait_physical"
var trait = event.htmlAttributes['data-trait-attr'];
startSkillRoll("@{".concat(trait, "}"), 1, {}, false);
});
on('clicked:save', function (event) {
var status = event.htmlAttributes['data-status-name'];
var attrname = "status_save_".concat(status);
getAttrs(__spreadArray([attrname], ce_advantage_attrs, true), function (v) {
var diff = parseInt(v[attrname]) || 10;
startSaveRoll("".concat(status.toUpperCase(), "(").concat(diff, ")"), diff, v);
});
});
on('clicked:aethercurrent', function (event) {
getAttrs(__spreadArray(['class', 'unlock_ac5'], ce_ac_attrs, true), function (v) {
// Which die are we rolling?
var ac_die = parseInt(event.htmlAttributes['data-aethercurrent-number']);
// Create an array of the AC slots to be rolled
var ac_dice = [ac_die];
if (ac_die == 0) {
ac_dice = [1, 2, 3, 4];
if (v['unlock_ac5'] == 'on') {
ac_dice.push(5);
}
}
// What do we add to each roll?
var ac_bonus = v['ce_toggle_ac_bonus'] == 'on' ? parseInt(v['ce_ac_bonus']) : 0;
var className = v.class.toUpperCase();
var rollprops = ac_dice.reduce(function (props, die) {
props["ac_die_".concat(die)] = "[[1d6+".concat(ac_bonus, "]]");
return props;
}, {
name: 'Aether Current',
});
var template = propsToRollTemplate('aether', rollprops);
startRoll(template, function (outcome) {
var rollId = outcome.rollId, results = outcome.results;
console.dir(outcome);
var O = {};
var messages = {};
for (var _i = 0, ac_dice_1 = ac_dice; _i < ac_dice_1.length; _i++) {
var die = ac_dice_1[_i];
var result = results["ac_die_".concat(die)].result;
var newAetherCurrent = '';
var message = '';
switch (className) {
case 'INVOKER':
newAetherCurrent = result % 2 ? 'Umbral Seal' : 'Astral Seal';
message = newAetherCurrent;
break;
case 'THRONE':
if (ac_die > 0) {
newAetherCurrent = 'Used';
message = "".concat(result, " damage");
}
else {
newAetherCurrent = 'Throne Damage';
message = '+1 Core Damage';
}
break;
case 'WITCH':
if (ac_die > 0) {
newAetherCurrent = result > 4 ? 'Surging Charge' : 'Weak Charge';
message = newAetherCurrent;
}
else {
newAetherCurrent = 'Available';
message = 'Available';
}
break;
default:
if (ac_die == 0) {
newAetherCurrent = 'Available';
message = 'Available';
}
else {
message = "".concat(result);
}
break;
}
if (newAetherCurrent) {
O["aether_current_".concat(die)] = newAetherCurrent;
}
messages["ac_die_".concat(die)] = message;
}
if (Object.keys(O)) {
setAttrs(O);
}
finishRoll(rollId, messages);
});
});
});
on('clicked:attack', function (event) {
getAttrs(__spreadArray(['weapon_name', 'weapon_dice', 'weapon_core_damage'], ce_advantage_attrs, true), function (v) {
var weapon_name = v.weapon_name, weapon_dice = v.weapon_dice, weapon_core_damage = v.weapon_core_damage;
startAttackRoll(weapon_name || '@{character_name}', parseInt(weapon_dice), parseInt(weapon_core_damage), v);
});
});
on('clicked:soak', function (event) {
var label = event.htmlAttributes['data-soak-label'];
var attr_name = event.htmlAttributes['data-soak-attr'];
getAttrs(__spreadArray(__spreadArray(['role', attr_name], ce_advantage_attrs, true), ce_soak_attrs, true), function (v) {
var dice = v['role'].toUpperCase() == 'TANK' ? 2 : 1;
var diestring = modifiedDiceCount(dice, 6, v, true);
var bonuses = 0;
if (v['ce_toggle_soak'] == 'on') {
bonuses += parseInt(v['ce_soak_bonus']);
}
var template = propsToRollTemplate('soak', {
name: label,
roll: "[[".concat(diestring, "+@{").concat(attr_name, "}+").concat(bonuses, "]]"),
barrier: '[[@{barrier}]]',
exposed: '[[@{status_save_exposed}]]',
shielded: '[[@{condition_shielded}]]',
});
startRoll(template, function (outcome) {
finishRoll(outcome.rollId, {});
});
});
});
on('clicked:addcondition', function (event) {
var condition = event.htmlAttributes['data-condition-name'];
var O = {};
O["condition_".concat(condition)] = '2';
setAttrs(O, {}, function () { });
});
var conditionNames = [
'blink',
'cloaked',
'cover',
'empowered',
'focused',
'haste',
'regen',
'shielded',
].map(function (name) { return "condition_".concat(name); });
on('clicked:clearconditions', function (event) {
getAttrs(conditionNames, function (v) {
for (var _i = 0, conditionNames_1 = conditionNames; _i < conditionNames_1.length; _i++) {
var condition = conditionNames_1[_i];
var value = parseInt(v[condition]);
v[condition] = value > 1 ? "".concat(value - 1) : '0';
}
setAttrs(v, {}, function () { });
});
});
on('clicked:heal', function (_event) {
getAttrs(['hp', 'hp_max', 'rb'], function (v) {
var hp = Math.min(parseInt(v['hp_max']), parseInt(v['hp']) + parseInt(v['rb']));
var O = {};
O['hp'] = "".concat(hp);
setAttrs(O);
});
});
on('clicked:repeating_powers:togglepower', function (event) {
var attr_editable = (event.sourceAttribute || '').replace(/_togglepower$/, '_readonly');
getAttrs([attr_editable], function (v) {
v[attr_editable] = v[attr_editable] == 'on' ? '0' : 'on';
setAttrs(v);
});
});
on('clicked:introduction', function () {
getAttrs(['character_avatar', 'character_token', 'introduction_text'], function (v) {
var introduction_text = v['introduction_text'].replace('@AVATAR', "[x](".concat(v['character_avatar'].replace(/\?\d+$/, ''), ")"));
startRoll("&{template:announce} {{name=@{character_name}}} {{text=".concat(introduction_text, "}}"), function (outcome) {
finishRoll(outcome.rollId, {});
});
});
});
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
var STATUS_LIST = [
'afraid',
'agony',
'dazed',
'exposed',
'immobilized',
'sick',
'slowed',
'stunned',
'taunted',
'wounded',
].map(function (name) { return "status_save_".concat(name); });
var CONDITION_LIST = [
'blink',
'cloaked',
'cover',
'empowered',
'focused',
'haste',
'regen',
'shielded',
].map(function (name) { return "condition_".concat(name); });
function statusConditionNameWithStacks(attribute, prefix, v) {
var nameWithoutPrefix = attribute.replace(prefix, '');
var stacksName = "stacks_".concat(nameWithoutPrefix);
var suffix = '';
if (v[stacksName]) {
suffix = " [".concat(v[stacksName], "]");
}
return "".concat(nameWithoutPrefix.toUpperCase()).concat(suffix);
}
function update_tracker(attributes, tracker, prefix, message) {
getAttrs(attributes, function (v) {
var O = {};
O[tracker] =
attributes
.filter(function (attr) { return attr.startsWith(prefix); })
.map(function (name) { return [
statusConditionNameWithStacks(name, prefix, v),
parseInt(v[name]),
]; })
.filter(function (tuple) { return tuple[1] > 0; })
.map(function (tuple) { return " {{".concat(tuple[0], "=(").concat(tuple[1], ")}}"); })
.join('') || " {{text=".concat(message, "}}");
setAttrs(O);
});
}
function update_status_tracker() {
update_tracker(__spreadArray(__spreadArray([], STATUS_LIST, true), ['stacks_wounded'], false), 'status_tracker', 'status_save_', 'No Statuses');
}
function update_condition_tracker() {
update_tracker(__spreadArray(__spreadArray([], CONDITION_LIST, true), ['stacks_regen'], false), 'condition_tracker', 'condition_', 'No Conditions');
}
on("change:stacks_wounded ".concat(STATUS_LIST.map(function (attr) { return "change:".concat(attr); }).join(' ')), update_status_tracker);
on("change:stacks_regen ".concat(CONDITION_LIST.map(function (attr) { return "change:".concat(attr); }).join(' ')), update_condition_tracker);
var aethercurrents_attributes = __spreadArray([
'unlock_ac5'
], [1, 2, 3, 4, 5].map(function (n) { return "aether_current_".concat(n); }), true);
on(aethercurrents_attributes.map(function (s) { return "change:".concat(s); }).join(' '), function (event) {
var attr = event.sourceAttribute || '';
getAttrs(aethercurrents_attributes, function (v) {
var output = {};
var throne_damage = Object.keys(v).reduce(function (total, key) { return total + (v[key] == 'Throne Damage' ? 1 : 0); }, 0);
output['throne_damage'] = "".concat(throne_damage);
getSectionIDs('repeating_powers', function (idarray) {
// Update
idarray.forEach(function (id) {
output["repeating_powers_".concat(id, "_").concat(attr)] = v[attr];
});
setAttrs(output);
});
});
});
function isInjured(hp, hp_max) {
if (hp_max > 0) {
return hp / hp_max <= 0.5 ? 'Injured' : 'Current';
}
else {
return 'Current';
}
}
on('change:hp change:hp_max', function (_event) {
getAttrs(['hp', 'hp_max'], function (v) {
var O = {};
O['injured'] = isInjured(parseInt(v['hp']) || 0, parseInt(v['hp_max']) || 0);
setAttrs(O);
});
});
on('sheet:opened', function (_event) {
getAttrs(__spreadArray(__spreadArray([
'throne_damage',
'condition_tracker',
'status_tracker'
], [1, 2, 3, 4, 5].map(function (n) { return "aether_current_".concat(n); }), true), [
'introduction_text',
'hp',
'hp_max',
], false), function (v) {
var defaults = {
throne_damage: '0',
condition_tracker: ' {{text=No Conditions}}',
status_tracker: ' {{text=No Statuses}}',
aether_current_1: 'Used',
aether_current_2: 'Used',
aether_current_3: 'Used',
aether_current_4: 'Used',
aether_current_5: 'Used',
introduction_text: "Nice to meet you! I'm **@{character_name}** from **@{homeland}**. My pronouns are **@{pronouns}**. My class is **@{class}**, my calling is **@{calling}**, and my role is **@{role}**.",
};
for (var _i = 0, _a = Object.keys(defaults); _i < _a.length; _i++) {
var key = _a[_i];
if (v[key]) {
delete defaults[key];
}
}
defaults['injured'] = isInjured(parseInt(v['hp']) || 0, parseInt(v['hp_max']) || 0);
setAttrs(defaults);
});
});
function clearExistingRows(name) {
getSectionIDs("repeating_".concat(name), function (idarray) {
for (var _i = 0, idarray_1 = idarray; _i < idarray_1.length; _i++) {
var id = idarray_1[_i];
removeRepeatingRow("repeating_".concat(name, "_").concat(id));
}
});
}
function sanitizeCopyableText(text) {
var lines = (text || '').split('\n');
// Remove the name (assumed to be the first line)
lines.splice(0, 1);
// Trim leading whitespace and rejoin
return lines.map(function (line) { return line.trim(); }).join('\n');
}
on('clicked:jsonimport', function () {
getAttrs(['jsonimport'], function (v) {
var character = JSON.parse(v['jsonimport']);
clearExistingRows('bonds');
clearExistingRows('inventory');
clearExistingRows('powers');
clearExistingRows('skills');
var O = {};
// Take us back to page 1 when import finishes
O['sheetTab'] = 'page1';
// Clear the import field
O['jsonimport'] = '';
// Profile
// O['character_name'] = character.name
O['homeland'] = character.homeland.name;
// O['pronouns'] = character.pronouns
O['class'] = character.class.name;
O['calling'] = character.calling.name;
O['role'] = character.calling.role;
// Bonds
O["repeating_bonds_".concat(generateRowID(), "_bondname")] = '(write a new bond)';
// Weapon
O['weapon_name'] = character.weapon.weaponName;
O['weapon_desc'] = sanitizeCopyableText(character.weapon.copyableWeaponText);
O['weapon_auto_attack'] = "".concat(character.calling.benefits.baseDamage);
O['weapon_core_damage'] = "".concat(character.calling.benefits.baseDamage + character.weapon.finalDamageBonus);
O['weapon_range'] = character.weapon.finalRange;
O['weapon_dice'] = character.weapon.finalWeaponDice;
// Armor
O['armor_name'] = character.armor.outfitName;
O['armor_desc'] = sanitizeCopyableText(character.armor.copyableOutfitText);
O['armor_dodge'] = "".concat(character.calling.benefits.baseDodge +
character.armor.finalDefenseBonus +
character.armor.dodgeBonus);
O['armor_ward'] = "".concat(character.calling.benefits.baseWard +
character.armor.finalDefenseBonus +
character.armor.wardBonus);
// Soak
O['soak_physical'] = "".concat(character.armor.finalSoakBonus + character.armor.physicalSoak);
O['soak_astral'] = "".concat(character.armor.finalSoakBonus + character.armor.astralSoak);
O['soak_umbral'] = "".concat(character.armor.finalSoakBonus + character.armor.umbralSoak);
O['soak_toxic'] = "".concat(character.armor.finalSoakBonus + character.armor.toxicSoak);
// HP, AHP, Recovery, RB
O['hp'] = character.calling.benefits.baseHp;
O['hp_max'] = character.calling.benefits.baseHp;
O['armor_hp'] = "".concat(character.armor.finalArmorHP);
O['armor_hp_max'] = "".concat(character.armor.finalArmorHP);
O['recovery'] = character.calling.benefits.recovery;
O['recovery_max'] = character.calling.benefits.recovery;
O['rb'] = "".concat(Math.ceil(character.calling.benefits.baseHp / 4));
// Skills
for (var _i = 0, _a = character.skills; _i < _a.length; _i++) {
var skill = _a[_i];
var row = generateRowID();
O["repeating_skills_".concat(row, "_skillname")] = skill.skill;
O["repeating_skills_".concat(row, "_skillrank")] = skill.effectiveRank;
}
// Traits
O['trait_background'] = character.traits.background;
O['trait_physical'] = character.traits.physical;
O['trait_mental'] = character.traits.mental;
O['trait_special'] = character.traits.special;
// Inventory
O['ip'] = "".concat(character.armor.finalInventoryPoints);
O['ip_max'] = "".concat(character.armor.finalInventoryPoints);
// Aether Current
O['aether_current'] = character.class.aetherCurrentRules.join('\n');
O['unlock_ac5'] = character.features.fifthAetherCurrentDie ? 'on' : '0';
// Powers
for (var _b = 0, _c = character.powers; _b < _c.length; _b++) {
var power = _c[_b];
var description = power.description.join('');
if (power.type == 'Invocation') {
// Split description into Astral and Umbral invocations
var splitPoint = description.indexOf('> Umbral Power');
if (splitPoint > -1) {
var regex = /^> (Astral|Umbral) Power - ([^\n]+)\n+/m;
for (var _d = 0, _e = [
description.substring(0, splitPoint - 1),
description.substring(splitPoint),
]; _d < _e.length; _d++) {
var subpower = _e[_d];
var matchData = subpower.match(regex);
if (matchData) {
var powername = matchData[2];
var remaining = (matchData.input || '').replace(matchData[0], '');
var row = generateRowID();
O["repeating_powers_".concat(row, "_powername")] = "".concat(power.name, " - ").concat(powername);
O["repeating_powers_".concat(row, "_powertype")] = "".concat(matchData[1], " ").concat(power.type);
O["repeating_powers_".concat(row, "_powerdesc")] = remaining;
O["repeating_powers_".concat(row, "_readonly")] = 'on';
}
}
}
else {
// We couldn't find the expected split point, add the power as-is
var row = generateRowID();
O["repeating_powers_".concat(row, "_powername")] = power.name;
O["repeating_powers_".concat(row, "_powertype")] = power.type;
O["repeating_powers_".concat(row, "_powerdesc")] = description;
O["repeating_powers_".concat(row, "_readonly")] = 'on';
}
}
else {
var row = generateRowID();
O["repeating_powers_".concat(row, "_powername")] = power.name;
O["repeating_powers_".concat(row, "_powertype")] = power.type;
O["repeating_powers_".concat(row, "_powerdesc")] = description;
O["repeating_powers_".concat(row, "_readonly")] = 'on';
}
}
setAttrs(O);
});
});
</script><rolltemplate class="sheet-rolltemplate-aether"><div class="sheet-rolltemplate-header"><h3>{{name}}</h3></div><div class="sheet-rolltemplate-outcome">{{#rollGreater() ac_die_1 0}}<p><span class="sheet-rolltemplate-outcome-label">AC Die 1</span><span class="sheet-rolltemplate-outcome-text">{{computed::ac_die_1}}</span></p>{{/rollGreater() ac_die_1 0}}{{#rollGreater() ac_die_2 0}}<p><span class="sheet-rolltemplate-outcome-label">AC Die 2</span><span class="sheet-rolltemplate-outcome-text">{{computed::ac_die_2}}</span></p>{{/rollGreater() ac_die_2 0}}{{#rollGreater() ac_die_3 0}}<p><span class="sheet-rolltemplate-outcome-label">AC Die 3</span><span class="sheet-rolltemplate-outcome-text">{{computed::ac_die_3}}</span></p>{{/rollGreater() ac_die_3 0}}{{#rollGreater() ac_die_4 0}}<p><span class="sheet-rolltemplate-outcome-label">AC Die 4</span><span class="sheet-rolltemplate-outcome-text">{{computed::ac_die_4}}</span></p>{{/rollGreater() ac_die_4 0}}{{#rollGreater() ac_die_5 0}}<p><span class="sheet-rolltemplate-outcome-label">AC Die 5</span><span class="sheet-rolltemplate-outcome-text">{{computed::ac_die_5}}</span></p>{{/rollGreater() ac_die_5 0}}</div></rolltemplate><rolltemplate class="sheet-rolltemplate-attack"><div class="sheet-rolltemplate-header"><h3>{{name}}</h3></div><div class="sheet-rolltemplate-outcome"><p><span class="sheet-rolltemplate-outcome-label">Defense</span><span class="sheet-rolltemplate-outcome-text">{{computed::diff}}</span></p><p><span class="sheet-rolltemplate-outcome-label">Roll</span><span class="sheet-rolltemplate-outcome-text">{{computed::roll}}</span></p><p><span class="sheet-rolltemplate-outcome-label">Outcome</span><span class="sheet-rolltemplate-outcome-text">{{computed::message}}</span></p><p><span class="sheet-rolltemplate-outcome-label">Damage</span><span class="sheet-rolltemplate-outcome-text">{{damage}}</span></p>{{#rollGreater() throne 0}}<p><span class="sheet-rolltemplate-outcome-label">Throne Bonus</span><span class="sheet-rolltemplate-outcome-text">{{throne}}</span></p>{{/rollGreater() throne 0}}{{#rollGreater() afraid 0}}<p><span class="sheet-rolltemplate-outcome-label">AFRAID</span><span class="sheet-rolltemplate-outcome-text">Do -3 damage vs. whoever inflicted this on you.</span></p>{{/rollGreater() afraid 0}}{{#rollGreater() dazed 0}}<p><span class="sheet-rolltemplate-outcome-label">DAZED</span><span class="sheet-rolltemplate-outcome-text">Disadvantage on attack rolls &amp; skill tests.</span></p>{{/rollGreater() dazed 0}}{{#rollGreater() taunted 0}}<p><span class="sheet-rolltemplate-outcome-label">TAUNTED</span><span class="sheet-rolltemplate-outcome-text">Unable to make attacks that don't include the taunter, do your best to attack/auto-attack them.</span></p>{{/rollGreater() taunted 0}}{{#rollGreater() empowered 0}}<p><span class="sheet-rolltemplate-outcome-label">EMPOWERED</span><span class="sheet-rolltemplate-outcome-text">Do +3 damage with single-target attacks, +1 with AOE/multitarget.</span></p>{{/rollGreater() empowered 0}}{{#rollGreater() focused 0}}<p><span class="sheet-rolltemplate-outcome-label">FOCUSED</span><span class="sheet-rolltemplate-outcome-text">Gain Advantage on attacks.</span></p>{{/rollGreater() focused 0}}</div></rolltemplate><rolltemplate class="sheet-rolltemplate-check"><div class="sheet-rolltemplate-header"><h3>{{name}}</h3></div><div class="sheet-rolltemplate-outcome"><p><span class="sheet-rolltemplate-outcome-label">Difficulty</span><span class="sheet-rolltemplate-outcome-text">{{computed::diff}}</span></p><p><span class="sheet-rolltemplate-outcome-label">Roll</span><span class="sheet-rolltemplate-outcome-text">{{computed::roll}}</span></p><p><span class="sheet-rolltemplate-outcome-label">Outcome</span><span class="sheet-rolltemplate-outcome-text">{{computed::message}}</span></p>{{#rollGreater() dazed 0}}<p><span class="sheet-rolltemplate-outcome-label">DAZED</span><span class="sheet-rolltemplate-outcome-text">Disadvantage on attack rolls &amp; skill tests.</span></p>{{/rollGreater() dazed 0}}</div></rolltemplate><rolltemplate class="sheet-rolltemplate-save"><div class="sheet-rolltemplate-header"><h3>{{name}}</h3></div><div class="sheet-rolltemplate-outcome"><p><span class="sheet-rolltemplate-outcome-label">Save</span><span class="sheet-rolltemplate-outcome-text">{{computed::roll}}</span></p><p><span class="sheet-rolltemplate-outcome-label">Outcome</span><span class="sheet-rolltemplate-outcome-text">{{computed::message}}</span></p>{{#rollGreater() sick 0}}<p><span class="sheet-rolltemplate-outcome-label">SICK</span><span class="sheet-rolltemplate-outcome-text">Disadvantage on saves, -3 to Dodge &amp; Ward.</span></p>{{/rollGreater() sick 0}}</div></rolltemplate><rolltemplate class="sheet-rolltemplate-soak"><div class="sheet-rolltemplate-header"><h3>{{name}}</h3></div><div class="sheet-rolltemplate-outcome"><p><span class="sheet-rolltemplate-outcome-label">Soak</span><span class="sheet-rolltemplate-outcome-text">{{roll}}</span></p>{{#rollGreater() barrier 0}}<p><span class="sheet-rolltemplate-outcome-label">Barrier</span><span class="sheet-rolltemplate-outcome-text">{{barrier}}</span></p>{{/rollGreater() barrier 0}}{{#rollGreater() exposed 0}}<p><span class="sheet-rolltemplate-outcome-label">EXPOSED</span><span class="sheet-rolltemplate-outcome-text">Take +3 damage (+4 from Strikers) from the next attack to hit you.</span></p>{{/rollGreater() exposed 0}}{{#rollGreater() shielded 0}}<p><span class="sheet-rolltemplate-outcome-label">SHIELDED</span><span class="sheet-rolltemplate-outcome-text">Gain +3 on Soak rolls.</span></p>{{/rollGreater() shielded 0}}</div></rolltemplate><rolltemplate class="sheet-rolltemplate-announce"><div class="sheet-rolltemplate-header"><h3>{{name}}</h3></div><div class="sheet-rolltemplate-outcome">{{#allprops() name text}}<p><span class="sheet-rolltemplate-outcome-label">{{key}}</span><span class="sheet-rolltemplate-outcome-text">{{value}}</span></p>{{/allprops() name text}}<p>{{text}}</p></div></rolltemplate><div class="btn repcontrol_add repcontrol_edit repcontrol_move repcontrol_del aether-current-charges pictos"></div>