mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-30 03:40:32 +00:00
596 lines
77 KiB
HTML
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">👹</button><button class="button is-large emoji" type="action" name="act_changetab" data-tab-attr="tabs" data-tab="tab5">⚙</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">🧑</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">👥</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">⚔</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="&{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 & 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">🛡</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="&{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 & 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 & 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 & 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 & Ward.</p></div></div></div></div></section><section class="noctis-section block"><span class="noctis-section-icon">❤</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">💊</button><p>HP/4</p></div></div></div></div></div></div></div></section><section class="noctis-section block"><span class="noctis-section-icon">📗</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">♻</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">💎</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">💊</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> </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">⚡</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="&{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="&{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"/> <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"/> <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"/> <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"/> <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"/> <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">🔴</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="&{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 & 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 & 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">🟢</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="&{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 & 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 & 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 & 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="&{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="&{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"/> <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"/> <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"/> <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"/> <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"/> <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 <garrett@astralfrontier.org></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 & 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 & 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 & 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>
|
|
|
|
|
|
|
|
|