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

1638 lines
79 KiB
HTML

<div class="preload"></div>
<div>
<input type="hidden" name="attr_command_extra_domain_query"
value="?{Add another Domain (spend Burn)|No, |Tactical, + @{tactical_die}[Tactical]|Operations, + @{operations_die}[Operations]|Systems, + @{systems_die}[Systems]}" />
<input type="hidden" name="attr_advantage_bond_support_translated" value="Advantage/Bond/Support" />
<input type="hidden" name="attr_command_translated" value="Command" />
<input type="hidden" name="attr_tactical_extra_domain_query"
value="?{Add another Domain (spend Burn)|No, |Command, + @{command_die}[Command]|Operations, + @{operations_die}[Operations]|Systems, + @{systems_die}[Systems]}" />
<input type="hidden" name="attr_tactical_translated" value="Tactical" />
<input type="hidden" name="attr_bonusdice_query"
value="?{Other dice (Advantage, Bond Dice, or Support), e.g. 1d8 + 1d8 + 1d6|0}" />
<input type="hidden" name="attr_operations_extra_domain_query"
value="?{Add another Domain (spend Burn)|No, |Command, + @{command_die}[Command]|Tactical, + @{tactical_die}[Tactical]|Systems, + @{systems_die}[Systems]}" />
<input type="hidden" name="attr_operations_translated" value="Operations" />
<input type="hidden" name="attr_charges_query" value="?{Spend Charges|0}" />
<input type="hidden" name="attr_role_and_callsign_query"
value="?{Epithet die|None,roll=[[{@{callsign_die}[@{callsign_label}]|@{epithet},epithet=@{epithet}&amp;#125;&amp;#125; {{roll=[[{@{callsign_die}[@{callsign_label}] + @{role_die}[@{role_label}]}" />
<input type="hidden" name="attr_systems_extra_domain_query"
value="?{Add another Domain (spend Burn)|No, |Command, + @{command_die}[Command]|Tactical, + @{tactical_die}[Tactical]|Operations, + @{operations_die}[Operations]}" />
<input type="hidden" name="attr_systems_translated" value="Systems" />
<input type="hidden" name="attr_target_query" value="?{Target Number|0}" />
<input type="hidden" name="attr_domain_query"
value="?{Domain|@{command_label},command|@{tactical_label},tactical|@{operations_label},operations|@{systems_label},systems|Any domain,any}" />
<input type="hidden" name="attr_strife_formula"
value="{{roll=[[{d8[Callsign] + d8[Role]}k1 + @{strife_level}[Strife Level]]]}} {{harm=}}" />
</div>
<div class="container">
<input class="sheet-type" type="hidden" name="attr_sheet_type" value="" />
<div class="sheet-type-selector">
<div class="title" data-i18n="choose_sheet_type"></div>
<div class="content">
<button type="action" name="act_choose_character" data-i18n="character"></button>
<button type="action" name="act_choose_thread" data-i18n="thread"></button>
<button type="action" name="act_choose_squadron" data-i18n="squadron"></button>
</div>
</div>
<div class="sheet-type-character">
<div class="logo"></div>
<div class="info">
<div class="infobox">
<div class="title">
<div class="auto-expand"><span data-i18n="role" name="attr_role_label">Role</span>
<textarea spellcheck="false" data-i18n="role" name="attr_role_label">Role</textarea>
</div>
</div>
<div class="content epithet">
<div class="auto-expand"><span name="attr_epithet"></span>
<textarea spellcheck="false" name="attr_epithet"></textarea>
</div>
<select name="attr_role_die">
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
</select>
</div>
</div>
<input class="hider" type="hidden" name="attr_boons_4_check_1" value="0" />
<div class="infobox">
<div class="title">
<div class="auto-expand"><span name="attr_role_label">Role</span>
<textarea spellcheck="false" name="attr_role_label">Role</textarea>
</div>
</div>
<div class="content epithet">
<div class="auto-expand"><span name="attr_role_2"></span>
<textarea spellcheck="false" name="attr_role_2"></textarea>
</div>
</div>
</div>
<div class="infobox">
<div class="title">
<div class="auto-expand"><span name="attr_callsign_label">Call Sign</span>
<textarea spellcheck="false" name="attr_callsign_label">Call Sign</textarea>
</div>
</div>
<div class="content character-name">
<input type="text" spellcheck="false" name="attr_character_name" />
<select name="attr_callsign_die">
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
</select>
</div>
</div>
<div class="infobox">
<div class="title">
<div class="auto-expand"><span name="attr_name_pronouns_label">Name &sol; Pronouns</span>
<textarea spellcheck="false" name="attr_name_pronouns_label">Name &sol; Pronouns</textarea>
</div>
</div>
<div class="content lineage-pronouns">
<div class="auto-expand"><span name="attr_name_pronouns"></span>
<textarea spellcheck="false" name="attr_name_pronouns"></textarea>
</div>
</div>
</div>
<div class="infobox">
<div class="title">
<div class="auto-expand"><span name="attr_rank_label">Rank</span>
<textarea spellcheck="false" name="attr_rank_label">Rank</textarea>
</div>
</div>
<div class="content rank">
<select name="attr_rank">
<option value="CPT">CPT - Captain</option>
<option value="COR">COR - Commander</option>
<option value="LT">LT - Lieutenant</option>
<option value="CWO">CWO - Chief Warrant Officer "Chief"</option>
<option value="WO">WO - Warrant Officer "Pilot"</option>
<option value="FSGT">FSGT - Flight Sergeant</option>
</select>
</div>
</div>
<div class="title-vertical style">
<input class="title" type="text" spellcheck="false" name="attr_style_label" value="Style" />
<div class="content">
<div class="auto-expand notes"><span name="attr_style"></span>
<textarea spellcheck="false" name="attr_style"></textarea>
</div>
</div>
</div>
</div>
<div class="domains">
<div class="domain">
<button class="domain-button-command" name="roll_command" type="roll"
value="&amp;{template:stormfury-pilot} {{name=@{character_name}}} {{type=command}} {{obstacle=[[@{target_query}]]}} {{@{role_and_callsign_query} + @{command_die}[@{command_translated}] @{command_extra_domain_query} + @{bonusdice_query}[@{advantage_bond_support_translated}]}k2 + @{charges_query}d4k1[@{charges_label}] ]]}}"><span
name="attr_command_label"></span></button> <!-- name tag for translation missing -->
<select name="attr_command_die">
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
</select>
</div>
<div class="domain">
<button class="domain-button-tactical" name="roll_tactical" type="roll"
value="&amp;{template:stormfury-pilot} {{name=@{character_name}}} {{type=tactical}} {{obstacle=[[@{target_query}]]}} {{@{role_and_callsign_query} + @{tactical_die}[@{tactical_translated}] @{tactical_extra_domain_query} + @{bonusdice_query}[@{advantage_bond_support_translated}]}k2 + @{charges_query}d4k1[@{charges_label}] ]]}}"><span
name="attr_tactical_label"></span></button> <!-- name tag for translation missing -->
<select name="attr_tactical_die">
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
</select>
</div>
<div class="domain">
<button class="domain-button-operations" name="roll_operations" type="roll"
value="&amp;{template:stormfury-pilot} {{name=@{character_name}}} {{type=operations}} {{obstacle=[[@{target_query}]]}} {{@{role_and_callsign_query} + @{operations_die}[@{operations_translated}] @{operations_extra_domain_query} + @{bonusdice_query}[@{advantage_bond_support_translated}]}k2 + @{charges_query}d4k1[@{charges_label}] ]]}}"><span
name="attr_operations_label"></span></button> <!-- name tag for translation missing -->
<select name="attr_operations_die">
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
</select>
</div>
<div class="domain">
<button class="domain-button-systems" name="roll_systems" type="roll"
value="&amp;{template:stormfury-pilot} {{name=@{character_name}}} {{type=systems}} {{obstacle=[[@{target_query}]]}} {{@{role_and_callsign_query} + @{systems_die}[@{systems_translated}] @{systems_extra_domain_query} + @{bonusdice_query}[@{advantage_bond_support_translated}]}k2 + @{charges_query}d4k1[@{charges_label}] ]]}}"><span
name="attr_systems_label"></span></button> <!-- name tag for translation missing -->
<select name="attr_systems_die">
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
</select>
</div>
</div>
<div class="bonds-commendations">
<div class="bonds">
<input class="title" type="text" spellcheck="false" name="attr_bonds_label" value="Bonds" />
<fieldset class="repeating_bonds">
<input class="bond-number" type="number" name="attr_bond_number" value="0" />
<input class="bond-name" type="text" spellcheck="false" name="attr_bond_name" />
</fieldset>
<div class="bond-uses">
<div class="auto-expand top"><span name="attr_bond_use_top_label">When you use a Bond, ask them to:</span>
<textarea spellcheck="false" name="attr_bond_use_top_label">When you use a Bond, ask them to:</textarea>
</div>
<div class="auto-expand bond-use"><span name="attr_bond_use_1_label">Bolster you</span>
<textarea spellcheck="false" name="attr_bond_use_1_label">Bolster you</textarea>
</div>
<div class="auto-expand bond-use"><span name="attr_bond_use_2_label">Block Harm or Fate for you</span>
<textarea spellcheck="false" name="attr_bond_use_2_label">Block Harm or Fate for you</textarea>
</div>
<div class="auto-expand bond-use"><span name="attr_bond_use_3_label">Follow your lead</span>
<textarea spellcheck="false" name="attr_bond_use_3_label">Follow your lead</textarea>
</div>
</div>
</div>
<div class="divider"></div>
<div class="commendations">
<input class="title" type="text" spellcheck="false" name="attr_commendations_label" value="Commendations" />
<!-- missing name for translation -->
<fieldset class="repeating_deeds">
<input class="squarebox" type="checkbox" name="attr_commendation_check" value="1" /><span></span>
<div class="auto-expand deed-name"><span name="attr_commendation_name"></span>
<textarea spellcheck="false" name="attr_commendation_name" data-i18n-placeholder="commendation"></textarea>
</div>
</fieldset>
</div>
</div>
<div class="title-vertical recite">
<input class="title" type="text" spellcheck="false" name="attr_recite_deeds_label"="Recite your deeds" />
<!-- missing name for translation -->
<div class="content">
<div class="auto-expand"><span name="attr_recite_top_label">How does your Role, Burn (an added Domain), or
Charges manifest in the contest?</span>
<textarea spellcheck="false"
name="attr_recite_top_label">How does your Role, Burn (an added Domain), or Charges manifest in the contest?</textarea>
</div>
<div class="recite-box">
<input class="title" type="text" spellcheck="false" name="attr_command_label" />
<div class="auto-expand"><span name="attr_recite_command_label">What squadron strategy did you use?&#10;How
did we see your willpower in action?&#10;How were passions stirred or truths attested?</span>
<textarea spellcheck="false"
name="attr_recite_command_label">What squadron strategy did you use?&#10;How did we see your willpower in action?&#10;How were passions stirred or truths attested?</textarea>
</div>
</div>
<div class="recite-box">
<input class="title" type="text" spellcheck="false" name="attr_tactical_label" />
<div class="auto-expand"><span name="attr_recite_tactical_label">How was blood spilled?&#10;How was your
strength, agility, or courage shown?&#10;How did you take our breath away?</span>
<textarea spellcheck="false"
name="attr_recite_tactical_label">How was blood spilled?&#10;How was your strength, agility, or courage shown?&#10;How did you take our breath away?</textarea>
</div>
</div>
<div class="recite-box">
<input class="title" type="text" spellcheck="false" name="attr_operations_label" />
<!-- missing name for translation -->
<div class="auto-expand"><span name="attr_recite_operations_label">How was your knowledge or creativity
shown?&#10;How was trickery or intrigue displayed?&#10;How did you figure it out?</span>
<textarea spellcheck="false"
name="attr_recite_operations_label">How was your knowledge or creativity shown?&#10;How was trickery or intrigue displayed?&#10;How did you figure it out?</textarea>
</div>
</div>
<div class="recite-box">
<input class="title" type="text" spellcheck="false" name="attr_systems_label" />
<div class="auto-expand"><span name="attr_recite_systems_label">How did you teach something?&#10;How did you
employ technology to your means?&#10;How did science help your purpose?</span>
<textarea spellcheck="false"
name="attr_recite_systems_label">How did you teach something?&#10;How did you employ technology to your means?&#10;How did science help your purpose?</textarea>
</div>
</div>
<div class="recite-box">
<input class="title" type="text" spellcheck="false" name="attr_suffer_label" />
<div class="auto-expand"><span>How did you fall short?&#10;Did you overreach yourself?&#10;Was the opponent
too great?&#10;Was it bad luck?</span>
<textarea
spellcheck="false">How did you fall short?&#10;Did you overreach yourself?&#10;Was the opponent too great?&#10;Was it bad luck?</textarea>
</div>
</div>
</div>
</div>
<div class="charges-burn">
<div class="flightsystems left">
<div class="exprbox">
<input class="header" type="text" spellcheck="false" name="attr_bravado_label" value="Bravado" />
<input class="hidden fakeradio" type="checkbox" name="attr_bravado_expr" value="0" checked="checked" />
<input class="rectbox fakeradio" type="checkbox" name="attr_bravado_expr" value="1" /><span></span>
<input class="rectbox fakeradio" type="checkbox" name="attr_bravado_expr" value="2" /><span></span>
<input class="rectbox fakeradio" type="checkbox" name="attr_bravado_expr" value="3" /><span></span>
<div class="charge">
<input class="diamondbox" type="checkbox" name="attr_bravado_charge" value="1" /><span></span>
</div>
<div class="burn">
<input class="circlebox" type="checkbox" name="attr_bravado_burn" value="1" /><span></span>
</div>
</div>
<div class="exprbox">
<input class="header" type="text" spellcheck="false" name="attr_courage_label" value="Courage" />
<input class="hidden fakeradio" type="checkbox" name="attr_courage_expr" value="0" checked="checked" />
<input class="rectbox fakeradio" type="checkbox" name="attr_courage_expr" value="1" /><span></span>
<input class="rectbox fakeradio" type="checkbox" name="attr_courage_expr" value="2" /><span></span>
<input class="rectbox fakeradio" type="checkbox" name="attr_courage_expr" value="3" /><span></span>
<div class="charge">
<input class="diamondbox" type="checkbox" name="attr_courage_charge" value="1" /><span></span>
</div>
<div class="burn">
<input class="circlebox" type="checkbox" name="attr_courage_burn" value="1" /><span></span>
</div>
</div>
<div class="exprbox">
<input class="header" type="text" spellcheck="false" name="attr_devotion_label" value="Devotion" />
<input class="hidden fakeradio" type="checkbox" name="attr_devotion_expr" value="0" checked="checked" />
<input class="rectbox fakeradio" type="checkbox" name="attr_devotion_expr" value="1" /><span></span>
<input class="rectbox fakeradio" type="checkbox" name="attr_devotion_expr" value="2" /><span></span>
<input class="rectbox fakeradio" type="checkbox" name="attr_devotion_expr" value="3" /><span></span>
<div class="charge">
<input class="diamondbox" type="checkbox" name="attr_devotion_charge" value="1" /><span></span>
</div>
<div class="burn">
<input class="circlebox" type="checkbox" name="attr_devotion_burn" value="1" /><span></span>
</div>
</div>
<div class="exprbox">
<input class="header" type="text" spellcheck="false" name="attr_duty_label" value="Duty" />
<input class="hidden fakeradio" type="checkbox" name="attr_duty_expr" value="0" checked="checked" />
<input class="rectbox fakeradio" type="checkbox" name="attr_duty_expr" value="1" /><span></span>
<input class="rectbox fakeradio" type="checkbox" name="attr_duty_expr" value="2" /><span></span>
<input class="rectbox fakeradio" type="checkbox" name="attr_duty_expr" value="3" /><span></span>
<div class="charge">
<input class="diamondbox" type="checkbox" name="attr_duty_charge" value="1" /><span></span>
</div>
<div class="burn">
<input class="circlebox" type="checkbox" name="attr_duty_burn" value="1" /><span></span>
</div>
</div>
<div class="divider"></div>
<div class="chargebox">
<input class="header" type="text" spellcheck="false" name="attr_flightclass_label" value="Flight Class" />
<select name="attr_flightclass">
<option value="fox">Fox</option>
<option value="owl">Owl</option>
<option value="raven">Raven</option>
<option value="wolf">Wolf</option>
</select>
<div class="charge">
<input class="diamondbox" type="checkbox" name="attr_flightclass_1" value="1" /><span></span>
</div>
</div>
<div class="chargebox">
<input class="header" type="text" spellcheck="false" name="attr_flightsystems_label" value="Flight Systems" />
<input class="detail" type="text" spellcheck="false" name="attr_power_sensors_label" value="Power &amp; Sensors" />
<div class="charge">
<input class="diamondbox" type="checkbox" name="attr_flightsystems_1" value="1" /><span></span>
</div>
<div class="charge">
<input class="diamondbox" type="checkbox" name="attr_flightsystems_2" value="1" /><span></span>
</div>
</div>
<div class="chargebox">
<input class="header" type="text" spellcheck="false" name="attr_maneuvers_label" value="Flight Maneuvers" />
<input class="detail" type="text" spellcheck="false" value="Corkscrew" />
<input class="detail" type="text" spellcheck="false" value="Hard Boost" />
<input class="detail" type="text" spellcheck="false" value="Switchback" />
<div class="charge">
<input class="diamondbox" type="checkbox" name="attr_flight_maneuvers_1" value="1" /><span></span>
</div>
<div class="charge">
<input class="diamondbox" type="checkbox" name="attr_flight_maneuvers_2" value="1" /><span></span>
</div>
</div>
</div>
<div class="burn">
<div class="burn-fate">
<input class="title" type="text" spellcheck="false" name="attr_burn_label" value="Burn" />
<input class="hidden fakeradio" type="checkbox" name="attr_burn" value="0" checked="checked" />
<input class="circlebox fakeradio" type="checkbox" name="attr_burn" value="1" /><span></span>
<div class="floating-vert-bar"></div>
<input class="circlebox fakeradio" type="checkbox" name="attr_burn" value="2" /><span></span>
<div class="floating-vert-bar"></div>
<input class="circlebox fakeradio" type="checkbox" name="attr_burn" value="3" /><span></span>
<div class="floating-vert-bar"></div>
<input class="circlebox fakeradio" type="checkbox" name="attr_burn" value="4" /><span></span>
<div class="floating-vert-bar"></div>
<input class="circlebox fakeradio" type="checkbox" name="attr_burn" value="5" /><span></span>
<div class="floating-vert-bar"></div>
<input class="burnout" type="text" spellcheck="false" name="attr_burnout_label" value="Out" />
<div class="floating-vert-bar"></div>
<input class="circlebox fakeradio" type="checkbox" name="attr_burn" value="6" /><span></span>
<div class="floating-vert-bar"></div>
<input class="fate" type="text" spellcheck="false" name="attr_fate_label" value="Fate" />
<div class="floating-vert-bar"></div>
<input class="hidden fakeradio2" type="checkbox" name="attr_fate" value="0" checked="checked" />
<input class="squarebox fakeradio2 dot" type="checkbox" name="attr_fate" value="1" /><span></span>
<div class="floating-vert-bar"></div>
<input class="squarebox fakeradio2" type="checkbox" name="attr_fate" value="2" /><span></span>
<div class="floating-vert-bar"></div>
<input class="squarebox fakeradio2" type="checkbox" name="attr_fate" value="3" /><span></span>
<div class="floating-vert-bar"></div>
<input class="squarebox fakeradio2 dot" type="checkbox" name="attr_fate" value="4" /><span></span>
<div class="floating-vert-bar"></div>
<input class="squarebox fakeradio2" type="checkbox" name="attr_fate" value="5" /><span></span>
<div class="floating-vert-bar"></div>
<input class="squarebox fakeradio2" type="checkbox" name="attr_fate" value="6" /><span></span>
<div class="floating-vert-bar"></div>
<input class="squarebox fakeradio2" type="checkbox" name="attr_fate" value="7" /><span></span>
<div class="floating-vert-bar"></div>
<input class="squarebox fakeradio2 dot" type="checkbox" name="attr_fate" value="8" /><span></span>
</div>
</div>
<div class="flightsystems right">
<div class="exprbox">
<input class="header" type="text" spellcheck="false" name="attr_honor_label" value="Honor" />
<input class="hidden fakeradio" type="checkbox" name="attr_honor_expr" value="0" checked="checked" />
<input class="rectbox fakeradio" type="checkbox" name="attr_honor_expr" value="1" /><span></span>
<input class="rectbox fakeradio" type="checkbox" name="attr_honor_expr" value="2" /><span></span>
<input class="rectbox fakeradio" type="checkbox" name="attr_honor_expr" value="3" /><span></span>
<div class="charge">
<input class="diamondbox" type="checkbox" name="attr_honor_charge" value="1" /><span></span>
</div>
<div class="burn">
<input class="circlebox" type="checkbox" name="attr_honor_burn" value="1" /><span></span>
</div>
</div>
<div class="exprbox">
<input class="header" type="text" spellcheck="false" name="attr_passion_label" value="Passion" />
<input class="hidden fakeradio" type="checkbox" name="attr_passion_expr" value="0" checked="checked" />
<input class="rectbox fakeradio" type="checkbox" name="attr_passion_expr" value="1" /><span></span>
<input class="rectbox fakeradio" type="checkbox" name="attr_passion_expr" value="2" /><span></span>
<input class="rectbox fakeradio" type="checkbox" name="attr_passion_expr" value="3" /><span></span>
<div class="charge">
<input class="diamondbox" type="checkbox" name="attr_passion_charge" value="1" /><span></span>
</div>
<div class="burn">
<input class="circlebox" type="checkbox" name="attr_passion_burn" value="1" /><span></span>
</div>
</div>
<div class="exprbox">
<input class="header" type="text" spellcheck="false" name="attr_wrath_label" value="Wrath" />
<input class="hidden fakeradio" type="checkbox" name="attr_wrath_expr" value="0" checked="checked" />
<input class="rectbox fakeradio" type="checkbox" name="attr_wrath_expr" value="1" /><span></span>
<input class="rectbox fakeradio" type="checkbox" name="attr_wrath_expr" value="2" /><span></span>
<input class="rectbox fakeradio" type="checkbox" name="attr_wrath_expr" value="3" /><span></span>
<div class="charge">
<input class="diamondbox" type="checkbox" name="attr_wrath_charge" value="1" /><span></span>
</div>
<div class="burn">
<input class="circlebox" type="checkbox" name="attr_wrath_burn" value="1" /><span></span>
</div>
</div>
<div class="exprbox">
<input class="header" type="text" spellcheck="false" name="attr_forged_label" value="Forged" />
<input class="hidden fakeradio" type="checkbox" name="attr_forged_expr" value="0" checked="checked" />
<input class="rectbox fakeradio" type="checkbox" name="attr_forged_expr" value="1" /><span></span>
<input class="rectbox fakeradio" type="checkbox" name="attr_forged_expr" value="2" /><span></span>
<input class="rectbox fakeradio" type="checkbox" name="attr_forged_expr" value="3" /><span></span>
<div class="charge">
<input class="diamondbox" type="checkbox" name="attr_forged_charge" value="1" /><span></span>
</div>
<div class="burn">
<input class="circlebox" type="checkbox" name="attr_forged_burn" value="1" /><span></span>
</div>
</div>
<div class="divider"></div>
<div class="chargebox">
<input class="header" type="text" spellcheck="false" name="attr_combatclass_label" value="Combat Class" />
<select name="attr_combatclass">
<option value="blade">Blade</option>
<option value="claw">Claw</option>
<option value="hammer">Hammer</option>
<option value="spear">Spear</option>
</select>
<div class="charge">
<input class="diamondbox" type="checkbox" name="attr_combatclass_1" value="1" /><span></span>
</div>
</div>
<div class="chargebox">
<input class="header" type="text" spellcheck="false" name="attr_combatsystems_label" value="Combat Systems" />
<input class="detail" type="text" spellcheck="false" name="attr_shields_weapons_label" value="Shields &amp; Weapons" />
<div class="charge">
<input class="diamondbox" type="checkbox" name="attr_combatsystems_1" value="1" /><span></span>
</div>
<div class="charge">
<input class="diamondbox" type="checkbox" name="attr_combatsystems_2" value="1" /><span></span>
</div>
</div>
<div class="chargebox">
<input class="header" type="text" spellcheck="false" name="attr_maneuvers_label" value="Combat Maneuvers" />
<input class="detail" type="text" spellcheck="false" value="Firestorm" />
<input class="detail" type="text" spellcheck="false" value="Bulls Eye" />
<input class="detail" type="text" spellcheck="false" value="Thread the Needle" />
<div class="charge">
<input class="diamondbox" type="checkbox" name="attr_combat_maneuvers_1" value="1" /><span></span>
</div>
<div class="charge">
<input class="diamondbox" type="checkbox" name="attr_combat_maneuvers_2" value="1" /><span></span>
</div>
</div>
</div>
</div>
<div class="title-vertical glory">
<input class="title" type="text" spellcheck="false" data-i18n="glory" name="attr_glory_label" value="Glory" />
<div class="content">
<div class="box">
<input class="hidden fakeradio" type="checkbox" name="attr_glory_0" value="0" checked="checked" />
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_0" value="1" /><span></span>
<div class="floatingbar"></div>
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_0" value="2" /><span></span>
<div class="floatingbar"></div>
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_0" value="3" /><span></span>
<div class="floatingbar"></div>
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_0" value="4" /><span></span>
<div class="floatingbar"></div>
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_0" value="5" /><span></span>
</div>
<div class="box">
<input class="hidden fakeradio" type="checkbox" name="attr_glory_1" value="0" checked="checked" />
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_1" value="1" /><span></span>
<div class="floatingbar"></div>
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_1" value="2" /><span></span>
<div class="floatingbar"></div>
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_1" value="3" /><span></span>
<div class="floatingbar"></div>
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_1" value="4" /><span></span>
<div class="floatingbar"></div>
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_1" value="5" /><span></span>
</div>
<div class="box">
<input class="hidden fakeradio" type="checkbox" name="attr_glory_2" value="0" checked="checked" />
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_2" value="1" /><span></span>
<div class="floatingbar"></div>
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_2" value="2" /><span></span>
<div class="floatingbar"></div>
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_2" value="3" /><span></span>
<div class="floatingbar"></div>
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_2" value="4" /><span></span>
<div class="floatingbar"></div>
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_2" value="5" /><span></span>
</div>
<div class="box">
<input class="hidden fakeradio" type="checkbox" name="attr_glory_3" value="0" checked="checked" />
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_3" value="1" /><span></span>
<div class="floatingbar"></div>
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_3" value="2" /><span></span>
<div class="floatingbar"></div>
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_3" value="3" /><span></span>
<div class="floatingbar"></div>
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_3" value="4" /><span></span>
<div class="floatingbar"></div>
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_3" value="5" /><span></span>
</div>
<div class="box">
<input class="hidden fakeradio" type="checkbox" name="attr_glory_4" value="0" checked="checked" />
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_4" value="1" /><span></span>
<div class="floatingbar"></div>
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_4" value="2" /><span></span>
<div class="floatingbar"></div>
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_4" value="3" /><span></span>
<div class="floatingbar"></div>
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_4" value="4" /><span></span>
<div class="floatingbar"></div>
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_4" value="5" /><span></span>
</div>
<div class="box">
<input class="hidden fakeradio" type="checkbox" name="attr_glory_5" value="0" checked="checked" />
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_5" value="1" /><span></span>
<div class="floatingbar"></div>
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_5" value="2" /><span></span>
<div class="floatingbar"></div>
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_5" value="3" /><span></span>
<div class="floatingbar"></div>
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_5" value="4" /><span></span>
<div class="floatingbar"></div>
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_5" value="5" /><span></span>
</div>
<div class="box">
<input class="hidden fakeradio" type="checkbox" name="attr_glory_6" value="0" checked="checked" />
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_6" value="1" /><span></span>
<div class="floatingbar"></div>
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_6" value="2" /><span></span>
<div class="floatingbar"></div>
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_6" value="3" /><span></span>
<div class="floatingbar"></div>
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_6" value="4" /><span></span>
<div class="floatingbar"></div>
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_6" value="5" /><span></span>
</div>
<div class="box">
<input class="hidden fakeradio" type="checkbox" name="attr_glory_7" value="0" checked="checked" />
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_7" value="1" /><span></span>
<div class="floatingbar"></div>
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_7" value="2" /><span></span>
<div class="floatingbar"></div>
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_7" value="3" /><span></span>
<div class="floatingbar"></div>
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_7" value="4" /><span></span>
<div class="floatingbar"></div>
<input class="squarebox fakeradio" type="checkbox" name="attr_glory_7" value="5" /><span></span>
</div>
</div>
</div>
<div class="title-vertical namebox">
<input class="title" type="text" spellcheck="false" name="attr_glory_label" value="Glory" />
<div class="content">
<label>
<input class="squarebox" type="checkbox" name="attr_glory_40" value="1" /><span></span><span>40</span>
</label>
<label>
<input class="squarebox" type="checkbox" name="attr_glory_80" value="1" /><span></span><span>80 (D8)</span>
</label>
<label>
<input class="squarebox" type="checkbox" name="attr_glory_120" value="1" /><span></span><span>120 (D10)</span>
</label>
<label>
<input class="squarebox" type="checkbox" name="attr_glory_160" value="1" /><span></span><span>160</span>
</label>
<label>
<input class="squarebox" type="checkbox" name="attr_glory_200" value="1" /><span></span><span>200</span>
</label>
<label>
<input class="squarebox" type="checkbox" name="attr_glory_240" value="1" /><span></span><span>240 (D12)</span>
</label>
</div>
</div>
<div class="title-vertical advances">
<input class="title" type="text" spellcheck="false" name="attr_boons_label" value="Advances" />
<div class="content">
<div class="boon">
<input class="squarebox" type="checkbox" name="attr_boons_1_check_1" value="1" /><span></span>
<div class="auto-expand"><span>Advance a d8 Domain die to d10</span> <!-- missing name for translation -->
<textarea spellcheck="false">Advance a d8 Domain die to d10</textarea> <!-- missing name for translation -->
</div>
</div>
<div class="boon">
<input class="squarebox" type="checkbox" name="attr_boons_2_check_1" value="1" /><span></span>
<input class="squarebox" type="checkbox" name="attr_boons_2_check_2" value="1" /><span></span>
<div class="auto-expand"><span>Advance a d6 Domain die to d8</span> <!-- missing name for translation -->
<textarea spellcheck="false">Advance a d6 Domain die to d8</textarea> <!-- missing name for translation -->
</div>
</div>
<div class="boon">
<input class="squarebox" type="checkbox" name="attr_boons_3_check_1" value="1" /><span></span>
<div class="auto-expand"><span>Advance your Role die to d8</span> <!-- missing name for translation -->
<textarea spellcheck="false">Advance your Role die to d8</textarea> <!-- missing name for translation -->
</div>
</div>
<div class="boon">
<input class="squarebox" type="checkbox" name="attr_boons_4_check_1" value="1" /><span></span>
<div class="auto-expand"><span>Add another Role</span> <!-- missing name for translation -->
<textarea spellcheck="false">Add another Role</textarea> <!-- missing name for translation -->
</div>
</div>
<div class="boon">
<input class="squarebox" type="checkbox" name="attr_boons_5_check_1" value="1" /><span></span>
<div class="auto-expand"><span>When you support or bolster, the die you give counts as one size larger.</span>
<!-- missing name for translation -->
<textarea
spellcheck="false">When you support or bolster, the die you give counts as one size larger.</textarea>
<!-- missing name for translation -->
</div>
</div>
<div class="boon">
<input class="squarebox" type="checkbox" name="attr_boons_6_check_1" value="1" /><span></span>
<div class="auto-expand"><span>When you mark Burn for an extra domain, take two extra dice.</span> <!-- missing name for translation -->
<textarea
spellcheck="false">When you mark Burn for an extra domain, take two extra dice.</textarea>
<!-- missing name for translation -->
</div>
</div>
<div class="boon">
<input class="squarebox" type="checkbox" name="attr_boons_7_check_1" value="1" /><span></span>
<div class="auto-expand"><span>When you spend a Charge, roll +2d4 and keep the highest.</span>
<!-- missing name for translation -->
<textarea spellcheck="false">When you spend a Charge, roll +2d4 and keep the highest.</textarea>
<!-- missing name for translation -->
</div>
</div>
</div>
</div>
<div class="character-copyright">
<label>Images of Stormfuries logo, the Temptest and the Storm are courtesy of John Harper.</label>
</div>
</div>
<div class="sheet-type-thread">
<div class="roller">
<div class="harm">
<div class="harmbox">
<input class="title" type="text" spellcheck="false" name="attr_dire_label" value="Dire" />
<input class="squarebox" type="checkbox" name="attr_dire" value="1" /><span></span>
</div>
<div class="harmbox">
<input class="title" type="text" spellcheck="false" name="attr_daunding_label" value="Daunding" />
<input class="squarebox" type="checkbox" name="attr_daunding" value="1" /><span></span>
</div>
<div class="harmbox">
<input class="title" type="text" spellcheck="false" name="attr_perilous_label" value="Perilous" />
<input class="squarebox" type="checkbox" name="attr_perilous" value="1" /><span></span>
</div>
<div class="harmbox">
<input class="title" type="text" spellcheck="false" name="attr_arduous_label" value="Arduous" />
<input class="squarebox" type="checkbox" name="attr_arduous" value="1" /><span></span>
</div>
</div>
<div class="thread-advantage">
<input class="title" type="text" spellcheck="false" name="attr_thread_advantage_label"
value="Thread Advantage" />
<div class="checks">
<label>
<input class="trianglebox" type="checkbox" name="attr_thread_advantage"
value="d8" /><span></span><span>d8</span>
</label>
<label>
<input class="trianglebox" type="checkbox" name="attr_thread_advantage"
value="d10" /><span></span><span>d10</span>
</label>
<label>
<input class="trianglebox" type="checkbox" name="attr_thread_advantage"
value="d12" /><span></span><span>d12</span>
</label>
</div>
</div>
<div class="strife-level">
<input class="title" type="text" spellcheck="false" name="attr_plus_thread_level_label"
value="Plus Thread Level" />
<div class="checks">
<label>
<input name="attr_strife_level" type="radio" value="0" /><span>+0</span>
</label>
<label>
<input name="attr_strife_level" type="radio" value="4" /><span>+4</span>
</label>
<label>
<input name="attr_strife_level" type="radio" value="5" checked="checked" /><span>+5</span>
</label>
<label>
<input name="attr_strife_level" type="radio" value="6" /><span>+6</span>
</label>
</div>
</div>
<button class="strife-button" name="roll_thread" type="roll" data-i18n="roll_thread"
value="&amp;{template:stormfury-thread} @{strife_formula} {{type=@{domain_query}}}"></button>
<div class="dice">
<fieldset class="repeating_strifedie">
<input type="text" spellcheck="false" data-i18n-placeholder="die_placeholder" />
<select name="attr_strifedie_size">
<option value="d6">d6</option>
<option value="d8" selected="selected">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
</select>
</fieldset>
</div>
</div>
<div class="missionlogs">
<input class="title" type="text" spellcheck="false" name="attr_mission_logs_label" value="Mission Logs" />
<fieldset class="repeating_missionlog">
<input class="name" type="text" spellcheck="false" name="attr_remnant_name" data-i18n-placeholder="name" />
<div class="auto-expand notes"><span name="attr_remnant_notes"></span>
<textarea spellcheck="false" name="attr_remnant_notes"></textarea>
</div>
</fieldset>
</div>
<div class="enemies">
<input class="title" type="text" spellcheck="false" name="attr_enemies_label" value="Threads" />
<div class="enemy">
<input class="name" type="text" spellcheck="false" value="Raider" /> <!-- missing name for translation -->
<div class="autoexpand notes"><span></span>
<textarea
spellcheck="false">Fast attack craft [d8]. Nimble [d8], Rapid-fire Cannons [d6], Seeking Missiles [d6]. Perilous. Deployed in squadrons of 12.</textarea>
</div>
</div>
<div class="enemy">
<input class="name" type="text" spellcheck="false" value="Heavy Raider" /> <!-- missing name for translation -->
<div class="autoexpand notes"><span></span>
<textarea
spellcheck="false">Gunboat [d6]. Armored [d8], Heavy Cannons [d8], Long Range Torpedoes [d8]. Perilous. Deployed in squadrons of 8.</textarea>
</div>
</div>
<div class="enemy">
<input class="name" type="text" spellcheck="false" value="Reaver" /> <!-- missing name for translation -->
<div class="autoexpand notes"><span></span>
<textarea
spellcheck="false">Assault trooper [d8]. Armored [d8], Breaching Claws [d8], Autocannon [d6], Thrusters [d6]. Perilous. Also Dire in close combat. Deployed in squads of 6</textarea>
</div>
</div>
<fieldset class="repeating_enemy">
<input class="name" type="text" spellcheck="false" name="attr_enemy_name" data-i18n-placeholder="name" />
<!-- missing name for translation -->
<div class="autoexpand notes"><span name="attr_enemy_notes"></span>
<textarea spellcheck="false" name="attr_enemy_notes"></textarea>
</div>
</fieldset>
</div>
</div>
<div class="sheet-type-squadron">
<div class="tempest">
<div class="tempest_attributes">
<label class="tempest-intel-1">
<input class="squarebox" type="checkbox" name="attr_intel1" value="1" /><span></span>
</label>
<label class="tempest-intel-2">
<input class="squarebox" type="checkbox" name="attr_intel2" value="1" /><span></span>
</label>
<label class="tempest-intel-3">
<input class="squarebox" type="checkbox" name="attr_intel3" value="1" /><span></span>
</label>
<label class="tempest-intel-4">
<input class="squarebox" type="checkbox" name="attr_intel4" value="1" /><span></span>
</label>
<label class="tempest-hull-1">
<input class="squarebox" type="checkbox" name="attr_hull1" value="1" /><span></span>
</label>
<label class="tempest-hull-2">
<input class="squarebox" type="checkbox" name="attr_hull2" value="1" /><span></span>
</label>
<label class="tempest-hull-3">
<input class="squarebox" type="checkbox" name="attr_hull3" value="1" /><span></span>
</label>
<label class="tempest-carrierdeck-1">
<input class="squarebox" type="checkbox" name="attr_carrierdeck1" value="1" /><span></span>
</label>
<label class="tempest-carrierdeck-2">
<input class="squarebox" type="checkbox" name="attr_carrierdeck2" value="1" /><span></span>
</label>
<label class="tempest-carrierdeck-3">
<input class="squarebox" type="checkbox" name="attr_carrierdeck3" value="1" /><span></span>
</label>
<label class="tempest-carrierdeck-4">
<input class="squarebox" type="checkbox" name="attr_carrierdeck4" value="1" /><span></span>
</label>
<label class="tempest-stormdrive-1">
<input class="squarebox" type="checkbox" name="attr_stormdrive1" value="1" /><span></span>
</label>
<label class="tempest-stormdrive-2">
<input class="squarebox" type="checkbox" name="attr_stormdrive2" value="1" /><span></span>
</label>
<label class="tempest-stormdrive-3">
<input class="squarebox" type="checkbox" name="attr_stormdrive3" value="1" /><span></span>
</label>
<label class="tempest-stormdrive-4">
<input class="squarebox" type="checkbox" name="attr_stormdrive4" value="1" /><span></span>
</label>
<label class="tempest-wavebreaker-1">
<input class="squarebox" type="checkbox" name="attr_wavebreaker1" value="1" /><span></span>
</label>
<label class="tempest-wavebreaker-2">
<input class="squarebox" type="checkbox" name="attr_wavebreaker2" value="1" /><span></span>
</label>
<label class="tempest-wavebreaker-3">
<input class="squarebox" type="checkbox" name="attr_wavebreaker3" value="1" /><span></span>
</label>
<label class="tempest-stores-1">
<input class="squarebox" type="checkbox" name="attr_stores1" value="1" /><span></span>
</label>
<label class="tempest-stores-2">
<input class="squarebox" type="checkbox" name="attr_stores2" value="1" /><span></span>
</label>
<label class="tempest-stores-3">
<input class="squarebox" type="checkbox" name="attr_stores3" value="1" /><span></span>
</label>
<label class="tempest-stores-4">
<input class="squarebox" type="checkbox" name="attr_stores4" value="1" /><span></span>
</label>
<label class="tempest-raildriver-1">
<input class="squarebox" type="checkbox" name="attr_raildriver1" value="1" /><span></span>
</label>
<label class="tempest-raildriver-2">
<input class="squarebox" type="checkbox" name="attr_raildriver2" value="1" /><span></span>
</label>
<label class="tempest-raildriver-3">
<input class="squarebox" type="checkbox" name="attr_raildriver3" value="1" /><span></span>
</label>
<label class="tempest-raildriver-4">
<input class="squarebox" type="checkbox" name="attr_raildriver4" value="1" /><span></span>
</label>
</div>
</div>
<div class="resource-effects">
<div class="resource-effect">
<input class="title" type="text" spellcheck="false" value="Launch" /> <!-- missing name for translation -->
<div class="textarea"><span></span>
<textarea spellcheck="false">-1 Carrier Deck&#10;-1 Intel</textarea>
</div>
</div>
<div class="resource-effect">
<input class="title" type="text" spellcheck="false" value="Return" /> <!-- missing name for translation -->
<textarea spellcheck="false">-1 Stores&#10;+0-+3 Intel</textarea>
</div>
<div class="resource-effect">
<input class="title" type="text" spellcheck="false" value="Jump" /> <!-- missing name for translation -->
<textarea spellcheck="false">-1 Stores&#10;-1 Drive&#10;-1 Wave Breaker</textarea>
</div>
<div class="resource-effect">
<input class="title" type="text" spellcheck="false" value="Full Carrier Deck" />
<!-- missing name for translation -->
<textarea spellcheck="false">+1 Charge</textarea>
</div>
<div class="resource-effect">
<input class="title" type="text" spellcheck="false" value="Full Rail Driver" />
<!-- missing name for translation -->
<textarea spellcheck="false">May engage Pyramid</textarea>
</div>
<div class="resource-effect">
<input class="title" type="text" spellcheck="false" value="After Pyramid" />
<!-- missing name for translation -->
<div class="autoexpand"><span></span>
<textarea spellcheck="false">-all Rail Driver&#10;-2 Hull,-1 Carrier Deck&#10;-1 Storm Drive</textarea>
</div>
</div>
<div class="resource-effect">
<input class="title" type="text" spellcheck="false" value="Empty Stormdrive" />
<!-- missing name for translation -->
<textarea spellcheck="false">Vulnerable to boarding</textarea>
</div>
</div>
<div class="storm">
<div class="mission_attributes">
<label class="storm-arvang-1">
<input class="squarebox" type="checkbox" name="attr_arvang1" value="1" /><span></span>
</label>
<label class="storm-arvang-2">
<input class="squarebox" type="checkbox" name="attr_arvang2" value="1" /><span></span>
</label>
<label class="storm-arvang-3">
<input class="squarebox" type="checkbox" name="attr_arvang3" value="1" /><span></span>
</label>
<label class="storm-lysium-1">
<input class="squarebox" type="checkbox" name="attr_lysium1" value="1" /><span></span>
</label>
<label class="storm-lysium-2">
<input class="squarebox" type="checkbox" name="attr_lysium2" value="1" /><span></span>
</label>
<label class="storm-lysium-3">
<input class="squarebox" type="checkbox" name="attr_lysium3" value="1" /><span></span>
</label>
<label class="storm-nythvell-1">
<input class="squarebox" type="checkbox" name="attr_nythvell1" value="1" /><span></span>
</label>
<label class="storm-nythvell-2">
<input class="squarebox" type="checkbox" name="attr_nythvell2" value="1" /><span></span>
</label>
<label class="storm-nythvell-3">
<input class="squarebox" type="checkbox" name="attr_nythvell3" value="1" /><span></span>
</label>
<label class="storm-ode-1">
<input class="squarebox" type="checkbox" name="attr_ode1" value="1" /><span></span>
</label>
<label class="storm-ode-2">
<input class="squarebox" type="checkbox" name="attr_ode2" value="1" /><span></span>
</label>
<label class="storm-ode-3">
<input class="squarebox" type="checkbox" name="attr_ode3" value="1" /><span></span>
</label>
<label class="storm-thorvast-1">
<input class="squarebox" type="checkbox" name="attr_thorvast1" value="1" /><span></span>
</label>
<label class="storm-thorvast-2">
<input class="squarebox" type="checkbox" name="attr_thorvast2" value="1" /><span></span>
</label>
<label class="storm-thorvast-3">
<input class="squarebox" type="checkbox" name="attr_thorvast3" value="1" /><span></span>
</label>
<label class="storm-skelka-1">
<input class="squarebox" type="checkbox" name="attr_skelka1" value="1" /><span></span>
</label>
<label class="storm-skelka-2">
<input class="squarebox" type="checkbox" name="attr_skelka2" value="1" /><span></span>
</label>
<label class="storm-skelka-3">
<input class="squarebox" type="checkbox" name="attr_skelka3" value="1" /><span></span>
</label>
</div>
</div>
<div class="squadron">
<div class="squadron-content">
<div class="squadron-title">
<input class="squadron-title" type="text" spellcheck="false" name="attr_character_name" value="" />
<button class="stormcraftdamage-button" name="roll_stormcraftdamage" type="roll" data-i18n="roll_stormcraftdamage"
value="&amp;{template:stormfury-stormcraft} {{roll=[[D12]]}}"></button>
</div>
<div class="stormcraft">
<input class="title" type="text" spellcheck="false" value="1" />
<div class="damage">
<input class="hidden fakeradio" type="checkbox" name="attr_stormcraft_1_damage" value="0"
checked="checked" />
<input class="circlebox fakeradio" type="checkbox" name="attr_stormcraft_1_damage" value="1" /><span></span>
<input class="circlebox fakeradio" type="checkbox" name="attr_stormcraft_1_damage" value="2" /><span></span>
</div>
<div class="content">
<div class="auto-expand"><span name="attr_stormcraft_1_pilot"></span>
<textarea spellcheck="false" name="attr_stormcraft_1_pilot">Cpt</textarea>
</div>
</div>
</div>
<div class="stormcraft">
<input class="title" type="text" spellcheck="false" value="2" />
<div class="damage">
<input class="hidden fakeradio" type="checkbox" name="attr_stormcraft_2_damage" value="0"
checked="checked" />
<input class="circlebox fakeradio" type="checkbox" name="attr_stormcraft_2_damage" value="1" /><span></span>
<input class="circlebox fakeradio" type="checkbox" name="attr_stormcraft_2_damage" value="2" /><span></span>
</div>
<div class="content">
<div class="auto-expand"><span name="attr_stormcraft_2_pilot"></span>
<textarea spellcheck="false" name="attr_stormcraft_2_pilot">Cor</textarea>
</div>
</div>
</div>
<div class="squadron-section">
<input class="squadron-title" type="text" spellcheck="false" value="Flight Alpha" />
</div>
<div class="squadron-section">
<input class="squadron-title" type="text" spellcheck="false" value="Flight Bravo" />
</div>
<div class="stormcraft">
<input class="title" type="text" spellcheck="false" value="3" />
<div class="damage">
<input class="circlebox" type="checkbox" name="attr_stormcraft_3_damage1" value="1" /><span></span>
<input class="circlebox" type="checkbox" name="attr_stormcraft_3_damage2" value="1" /><span></span>
</div>
<div class="content">
<div class="auto-expand"><span name="attr_stormcraft_3_pilot"></span>
<textarea spellcheck="false" name="attr_stormcraft_3_pilot">Lt</textarea>
</div>
</div>
</div>
<div class="stormcraft">
<input class="title" type="text" spellcheck="false" value="4" />
<div class="damage">
<input class="circlebox" type="checkbox" name="attr_stormcraft_4_damage1" value="1" /><span></span>
<input class="circlebox" type="checkbox" name="attr_stormcraft_4_damage2" value="1" /><span></span>
</div>
<div class="content">
<div class="auto-expand"><span name="attr_stormcraft_4_pilot"></span>
<textarea spellcheck="false" name="attr_stormcraft_4_pilot">Lt</textarea>
</div>
</div>
</div>
<div class="stormcraft">
<input class="title" type="text" spellcheck="false" value="5" />
<div class="damage">
<input class="circlebox" type="checkbox" name="attr_stormcraft_5_damage1" value="1" /><span></span>
<input class="circlebox" type="checkbox" name="attr_stormcraft_5_damage2" value="1" /><span></span>
</div>
<div class="content">
<div class="auto-expand"><span name="attr_stormcraft_5_pilot"></span>
<textarea spellcheck="false" name="attr_stormcraft_5_pilot">CWO</textarea>
</div>
</div>
</div>
<div class="stormcraft">
<input class="title" type="text" spellcheck="false" value="6" />
<div class="damage">
<input class="circlebox" type="checkbox" name="attr_stormcraft_6_damage1" value="1" /><span></span>
<input class="circlebox" type="checkbox" name="attr_stormcraft_6_damage2" value="1" /><span></span>
</div>
<div class="content">
<div class="auto-expand"><span name="attr_stormcraft_6_pilot"></span>
<textarea spellcheck="false" name="attr_stormcraft_6_pilot">CWO</textarea>
</div>
</div>
</div>
<div class="stormcraft">
<input class="title" type="text" spellcheck="false" value="7" />
<div class="damage">
<input class="circlebox" type="checkbox" name="attr_stormcraft_7_damage1" value="1" /><span></span>
<input class="circlebox" type="checkbox" name="attr_stormcraft_7_damage2" value="1" /><span></span>
</div>
<div class="content">
<div class="auto-expand"><span name="attr_stormcraft_7_pilot"></span>
<textarea spellcheck="false" name="attr_stormcraft_7_pilot">WO</textarea>
</div>
</div>
</div>
<div class="stormcraft">
<input class="title" type="text" spellcheck="false" value="8" />
<div class="damage">
<input class="circlebox" type="checkbox" name="attr_stormcraft_8_damage1" value="1" /><span></span>
<input class="circlebox" type="checkbox" name="attr_stormcraft_8_damage2" value="1" /><span></span>
</div>
<div class="content">
<div class="auto-expand"><span name="attr_stormcraft_8_pilot"></span>
<textarea spellcheck="false" name="attr_stormcraft_8_pilot">WO</textarea>
</div>
</div>
</div>
<div class="stormcraft">
<input class="title" type="text" spellcheck="false" value="9" />
<div class="damage">
<input class="circlebox" type="checkbox" name="attr_stormcraft_9_damage1" value="1" /><span></span>
<input class="circlebox" type="checkbox" name="attr_stormcraft_9_damage2" value="1" /><span></span>
</div>
<div class="content">
<div class="auto-expand"><span name="attr_stormcraft_9_pilot"></span>
<textarea spellcheck="false" name="attr_stormcraft_9_pilot">FSGT</textarea>
</div>
</div>
</div>
<div class="stormcraft">
<input class="title" type="text" spellcheck="false" value="10" />
<div class="damage">
<input class="circlebox" type="checkbox" name="attr_stormcraft_10_damage1" value="1" /><span></span>
<input class="circlebox" type="checkbox" name="attr_stormcraft_10_damage2" value="1" /><span></span>
</div>
<div class="content">
<div class="auto-expand"><span name="attr_stormcraft_10_pilot"></span>
<textarea spellcheck="false" name="attr_stormcraft_10_pilot">FSGT</textarea>
</div>
</div>
</div>
<div class="stormcraft">
<input class="title" type="text" spellcheck="false" value="11" />
<div class="damage">
<input class="circlebox" type="checkbox" name="attr_stormcraft_11_damage1" value="1" /><span></span>
<input class="circlebox" type="checkbox" name="attr_stormcraft_11_damage2" value="1" /><span></span>
</div>
<div class="content">
<input class="title" type="text" spellcheck="false" value="Vulture 1" />
<div class="auto-expand"><span name="attr_stormcraft_11_pilot"></span>
<textarea spellcheck="false" name="attr_stormcraft_11_pilot">Lt</textarea>
</div>
<select name="attr_vulture1_cargo1">
<option value="empty">-</option>
<option value="food">Food</option>
<option value="fuel">Fuel</option>
<option value="ordnance">Ordnance</option>
<option value="tech">Tech</option>
<option value="water">Water</option>
<option value="uru">Uru</option>
<option value="people">People</option>
<option value="other">Other</option>
</select>
<select name="attr_vulture1_cargo2">
<option value="empty">-</option>
<option value="food">Food</option>
<option value="fuel">Fuel</option>
<option value="ordnance">Ordnance</option>
<option value="tech">Tech</option>
<option value="water">Water</option>
<option value="uru">Uru</option>
<option value="people">People</option>
<option value="other">Other</option>
</select>
<select name="attr_vulture1_cargo3">
<option value="empty">-</option>
<option value="food">Food</option>
<option value="fuel">Fuel</option>
<option value="ordnance">Ordnance</option>
<option value="tech">Tech</option>
<option value="water">Water</option>
<option value="uru">Uru</option>
<option value="people">People</option>
<option value="other">Other</option>
</select>
</div>
</div>
<div class="stormcraft">
<input class="title" type="text" spellcheck="false" value="12" />
<div class="damage">
<input class="circlebox" type="checkbox" name="attr_stormcraft_12_damage1" value="1" /><span></span>
<input class="circlebox" type="checkbox" name="attr_stormcraft_12_damage2" value="1" /><span></span>
</div>
<div class="content">
<input class="title" type="text" spellcheck="false" value="Vulture 2" />
<div class="auto-expand"><span name="attr_stormcraft_12_pilot"></span>
<textarea spellcheck="false" name="attr_stormcraft_12_pilot">Lt</textarea>
</div>
<select name="attr_vulture2_cargo1">
<option value="empty">-</option>
<option value="food">Food</option>
<option value="fuel">Fuel</option>
<option value="ordnance">Ordnance</option>
<option value="tech">Tech</option>
<option value="water">Water</option>
<option value="uru">Uru</option>
<option value="people">People</option>
<option value="other">Other</option>
</select>
<select name="attr_vulture2_cargo2">
<option value="empty">-</option>
<option value="food">Food</option>
<option value="fuel">Fuel</option>
<option value="ordnance">Ordnance</option>
<option value="tech">Tech</option>
<option value="water">Water</option>
<option value="uru">Uru</option>
<option value="people">People</option>
<option value="other">Other</option>
</select>
<select name="attr_vulture2_cargo3">
<option value="empty">-</option>
<option value="food">Food</option>
<option value="fuel">Fuel</option>
<option value="ordnance">Ordnance</option>
<option value="tech">Tech</option>
<option value="water">Water</option>
<option value="uru">Uru</option>
<option value="people">People</option>
<option value="other">Other</option>
</select>
</div>
</div>
<div class="title-vertical">
<input class="title" type="text" spellcheck="false" name="attr_marines_label" value="Marines" />
<div class="content">
<div class="auto-expand notes"><span name="attr_marines"></span>
<textarea spellcheck="false" name="attr_marines"></textarea>
</div>
</div>
</div>
</div>
</div>
<div class="squadron-copyright">
<label>Images of Stormfuries logo, the Temptest and the Storm are courtesy of John Harper.</label>
</div>
</div>
</div>
<rolltemplate class="sheet-rolltemplate-stormfury-pilot">{{#rollGreater() obstacle roll}}
<div class="suffers"></div>{{/rollGreater() obstacle roll}} {{#^rollGreater() obstacle roll}}
<div class="prevails"></div>{{/^rollGreater() obstacle roll}}
<div class="holder">
<div class="type type-{{type}}"></div>
<div class="target">{{obstacle}}</div>
<div class="result">{{roll}}</div>
<div class="name">{{epithet}} {{name}}</div>{{#rollGreater() obstacle roll}}
<div class="description" data-i18n="roll_suffers"></div>{{/rollGreater() obstacle roll}} {{#^rollGreater() obstacle roll}}
<div class="description" data-i18n="roll_prevails"></div>{{/^rollGreater() obstacle roll}}
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-stormfury-thread">
<div class="holder">
<div class="type type-{{type}}"></div>
<div class="harm">{{harm}}</div>
<div class="roll">{{roll}}</div>
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-stormfury-stormcraft">
<div class="holder">
<div class="roll">{{roll}}</div>
<!-- <div class="pilot">@{attr_stormcraft_{{roll}}_pilot}</div> -->
</div>
</rolltemplate>
<script type="text/worker">(function () {
/* global on, setAttrs, getAttrs, getSectionIDs, getTranslationByKey,
generateRowID, removeRepeatingRow, _ */
"use strict";
function getTranslation(key) {
return getTranslationByKey(key) || `TRANSLATION_KEY_UNDEFINED: ${key}`;
}
function query(question, options) {
return `?{${getTranslation(question)}|${options.join("|")}}`;
}
function fillRepeatingSectionFromData(sectionName, dataList, setter) {
const createdIDs = [];
for (const entry of dataList) {
let rowID;
while (!rowID) {
const newID = generateRowID();
if (!createdIDs.includes(newID)) {
rowID = newID;
createdIDs.push(rowID);
}
}
const row = setter.addRepeatingRow(sectionName, rowID);
for (const [key, value] of Object.entries(entry)) {
row[key] = value;
}
}
}
function fillEmptyRows(sectionName, n, setter) {
const data = [...Array(n).keys()].map(() => ({ autogen: "1" }));
fillRepeatingSectionFromData(sectionName, data, setter);
}
const attributeHandler = {
get: function (target, name) {
return target.getAttr(name);
},
set: function (target, name, value) {
target.setAttr(name, value);
return true;
},
};
class RepeatingRow {
constructor(setter, sectionName, id) {
this._setter = setter;
if (id) this._prefix = `repeating_${sectionName}_${id}`;
else this._prefix = `repeating_${sectionName}`;
this._id = id;
}
fullName(attrName) {
return `${this._prefix}_${attrName}`;
}
setAttr(name, value) {
return this._setter.setAttr(this.fullName(name), value);
}
getAttr(name) {
if (name == "id") return this._id;
return this._setter.getAttr(this.fullName(name));
}
proxy() {
return new Proxy(this, attributeHandler);
}
}
class AttributeSetter {
constructor(attrs, sectionToIds = {}) {
this._sourceAttrs = attrs;
this._targetAttrs = {};
this._repeating = new Proxy({}, {
get: function (target, name) {
if (!target[name]) target[name] = [];
return target[name];
},
});
for (const [sectionName, sectionIds] of Object.entries(sectionToIds)) {
this._repeating[sectionName] = sectionIds.map((id) =>
new RepeatingRow(this, sectionName, id).proxy()
);
}
}
setAttr(name, value) {
if (name == "repeating") {
throw new Error("Tried to modify the 'repeating' attribute.");
}
this._sourceAttrs[name] = value;
this._targetAttrs[name] = value;
}
setAttrs(values) {
for (const [key, value] of Object.entries(values)) {
this.setAttr(key, value);
}
}
getAttr(name) {
if (name == "repeating") return this._repeating;
return this._sourceAttrs[name];
}
proxy() {
return new Proxy(this, attributeHandler);
}
addRepeatingRow(sectionName, id) {
id = id || generateRowID();
const row = new RepeatingRow(this, sectionName, id).proxy();
this._repeating[sectionName].push(row);
return row;
}
finalize(callback) {
getAttrs(Object.keys(this._targetAttrs), (values) => {
const finalAttrs = {};
for (const [key, value] of Object.entries(this._targetAttrs)) {
if (String(value) !== values[key]) finalAttrs[key] = String(value);
}
setAttrs(finalAttrs, { silent: true }, callback);
});
}
}
function getSetAttrs(attrs, callback, { repeating = {}, finalCallback } = {}) {
attrs = [...attrs];
const sectionToIds = {};
const finished = _.after(Object.keys(repeating).length + 1, () => {
getAttrs(attrs, (values) => {
const setter = new AttributeSetter(values, sectionToIds);
callback(setter.proxy(), setter);
setter.finalize(finalCallback);
});
});
for (const [sectionName, sectionAttrs] of Object.entries(repeating)) {
getSectionIDs(`repeating_${sectionName}`, (idArray) => {
sectionToIds[sectionName] = idArray;
for (const id of idArray) {
for (const attr of sectionAttrs) {
attrs.push(`repeating_${sectionName}_${id}_${attr}`);
}
}
finished();
});
}
finished();
}
// We define our own wrappers for Roll20 event handlers to provide
// a bit more useful feedback and reduce boilerplate.
function register(attrs, callback, handlerName = "handler") {
console.log(`Registering ${handlerName} for attributes: ${attrs.join(", ")}`);
on(attrs.map((x) => `change:${x}`).join(" "), (event) => {
console.log(
`Triggering ${handlerName} for attribute: ${event.sourceAttribute}.`
);
callback(event);
});
}
function registerOpened(callback, handlerName = "handler") {
console.log(`Registering ${handlerName} for sheet opening.`);
on("sheet:opened", () => {
console.log(`Triggering ${handlerName} for sheet opening.`);
callback();
});
}
function registerSingle(attr, handler, handlerName = "handler") {
register([attr], () => getSetAttrs([attr], handler), handlerName);
registerOpened(() => getSetAttrs([attr], handler), handlerName);
}
function registerButton(buttonName, callback, handlerName = "handler") {
console.log(`Registering ${handlerName} for button: ${buttonName}.`);
const throttledFunction = _.throttle(
(event) => {
console.log(`Triggering ${handlerName} for button: ${buttonName}.`);
callback(event);
},
50,
{ trailing: false }
);
on(`clicked:${buttonName}`, throttledFunction);
}
/* Constants */
const kSheetVersion = "2";
const kBrace = "&" + "#125" + ";";
const kDoubleBrace = kBrace + kBrace;
const kExtraRoleField = "boons_4_check_1";
const kBurnGivesTwoDiceField = "boons_6_check_1";
const kSpendChargesBoon = "boons_7_check_1";
const kHarms = ["dire", "daunding", "perilous", "arduous"];
const kDomains = [
"command",
"tactical",
"operations",
"systems",
];
const kInitialStrifeDice = [
{
strifedie_name: getTranslation("callsign"),
},
{
strifedie_name: getTranslation("role"),
},
];
const kLabelAttributes = [
"glory",
"role",
"callsign",
"name_pronouns",
"rank",
"domains",
"command",
"tactical",
"operations",
"systems",
"stormcraft",
"flightclass",
"flightsystems",
"power_sensors",
"combatclass",
"combatsystems",
"shields_weapons",
"maneuvers",
"expressions",
"bravado",
"courage",
"devotion",
"duty",
"honor",
"passion",
"wrath",
"forged",
"charges",
"authority",
"style_notes",
"recite_your_deeds",
"recite_top",
"recite_top",
"command",
"recite_command",
"tactical",
"recite_tactical",
"operations",
"recite_operations",
"systems",
"recite_systems",
"recite_bottom",
"burn",
"burnout",
"fate",
"bonds",
"bond_use_top",
"bond_use_top",
"bond_use_1",
"bond_use_1",
"bond_use_2",
"bond_use_2",
"bond_use_3",
"bond_use_3",
"commendations",
"boons",
"boons_1",
"boons_1",
"boons_2",
"boons_2",
"boons_3",
"boons_3",
"boons_4",
"boons_4",
"boons_5",
"boons_5",
"boons_6",
"boons_6",
"boons_7",
"boons_7",
"thread_advantage",
"plus_thread_level",
"mission_logs",
"dire",
"daunding",
"perilous",
"arduous",
"dire_desc",
"daunding_desc",
"perilous_desc",
"arduous_desc",
"marines",
"suffer"
];
function performFirstTimeSetup(attrs, setter) {
fillEmptyRows("bonds", 6, setter);
fillEmptyRows("deeds", 4, setter);
fillEmptyRows("missionlog", 6, setter);
fillEmptyRows("enemy", 4, setter);
fillRepeatingSectionFromData("strifedie", kInitialStrifeDice, setter);
for (const name of kLabelAttributes) {
attrs[`${name}_label`] = getTranslation(name);
}
}
function setupRoleQuery(attrs) {
const kCallSignDice = "roll=[[{@{callsign_die}[@{callsign_label}]";
const role_options = [
`${getTranslation("none")},${kCallSignDice}`,
`@{epithet},epithet=@{epithet}${kDoubleBrace} {{${kCallSignDice} + @{role_die}[@{role_label}]`,
];
if (attrs[kExtraRoleField] === "1") {
const and = getTranslation("and");
role_options.push(
...[
`@{role_2},epithet=@{role_2}${kDoubleBrace} {{${kCallSignDice} + @{role_die}[@{role_label}]`,
`@{epithet} ${and} @{role_2},epithet=@{epithet} ${and} @{role_2}${kDoubleBrace} {{${kCallSignDice} + 2@{role_die}[@{role_label}]`,
]
);
}
attrs["role_and_callsign_query"] = query("role_die", role_options);
}
function setupDomainQueries(attrs) {
const multiplier = attrs[kBurnGivesTwoDiceField] === "1" ? "2" : "";
for (const domain of kDomains) {
const query_entries = [
`${getTranslation("no")}, `,
...kDomains
.filter((other) => other != domain)
.map(
(other) =>
`${getTranslation(
other
)}, + ${multiplier}@{${other}_die}[${getTranslation(other)}]`
),
];
attrs[`${domain}_extra_domain_query`] = query(
"add_domain_spend_burn",
query_entries
);
attrs[`${domain}_translated`] = getTranslation(domain);
}
attrs["domain_query"] = query("domain", [
...kDomains.map((d) => `@{${d}_label},${d}`),
`${getTranslation("any_domain")},any`,
]);
}
function setupChargesQuery(attrs) {
const base_query = query("spend_charges", [0]);
if (attrs[kSpendChargesBoon] === "1") {
attrs["charges_query"] = `[[${base_query} + 2*{${base_query},1}kl1]]`;
} else {
attrs["charges_query"] = base_query;
}
}
function calcStrifeRoll(attrs) {
const harmType = kHarms
.filter((harm) => attrs[harm] == "1")
.map((x) => `@{${x}_desc_label}`)
.join(", ");
const dieSources = attrs.repeating.strifedie.map((row) => [
row.strifedie_name,
row.strifedie_size,
]);
if (attrs["thread_advantage"] !== "0") {
dieSources.push(["@{thread_advantage_label}", "@{thread_advantage}"]);
}
const dieFormula = dieSources
.map(([name, die]) => `${die}[${name}]`)
.join(" + ");
attrs[
"strife_formula"
] = `{{roll=[[{${dieFormula}}k1 + @{strife_level}[${getTranslation(
"strife_level"
)}]]]}} {{harm=${harmType}}}`;
}
function handleStrifeRoll() {
getSetAttrs([...kHarms, "thread_advantage"], calcStrifeRoll, {
repeating: {
strifedie: ["strifedie_name", "strifedie_size"],
},
});
}
registerSingle(
kBurnGivesTwoDiceField,
setupDomainQueries,
"Handle giving two dice for extra domain"
);
registerSingle(
kExtraRoleField,
setupRoleQuery,
"Handle adding or removing an extra epithet"
);
registerSingle(
kSpendChargesBoon,
setupChargesQuery,
"Handle boon for getting +2d4 on spending divine favor"
);
register(
[...kHarms, "thread_advantage", "repeating_strifedie"],
handleStrifeRoll,
"Handle strife player roll"
);
on("remove:repeating_strifedie", handleStrifeRoll);
registerOpened(function () {
getSetAttrs(["version"], function (attrs, setter) {
if (!attrs["version"]) performFirstTimeSetup(attrs, setter);
if (attrs["version"] == "1.0") {
attrs["sheet_type"] = "character";
}
setter.setAttrs({
advantage_bond_support_translated: getTranslation(
"advantage_bond_support"
),
bonusdice_query: query("bonusdice_query", [0]),
target_query: query("target_number", [0]),
version: kSheetVersion,
});
});
}, "Handle setting default attributes when opening the sheet");
registerButton("choose_character", () =>
getSetAttrs([], (attrs) => {
attrs["sheet_type"] = "character";
})
);
registerButton("choose_squadron", () =>
getSetAttrs([], (attrs) => {
attrs["sheet_type"] = "squadron";
})
);
registerButton("choose_thread", () =>
getSetAttrs([], (attrs) => {
attrs["sheet_type"] = "thread";
})
);}
)();
</script>