[Agon Official] Add official Agon sheet (#6167)
* [Agon Official] Add offical Agon sheet This is the first version of the offical sheet for Agon by John Harper and Sean Nittner. There is an older sheet for Agon in the repository, but it's for a very dated development version of the game and is not very useful for the released game. It would probably make sense to deprecate it in favour of this sheet. * [Agon Official] Small tweak and add Vault of Heaven background * [Agon Official] Fix Firefox display for some text fields * [Agon Official] Pretty-print the sheet code * [Agon Official] Update logo * [Agon Official] Support the final boon checkbox
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 6.5 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 575 KiB |
|
After Width: | Height: | Size: 287 KiB |
|
After Width: | Height: | Size: 156 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 199 KiB |
@@ -0,0 +1,908 @@
|
||||
<div class="preload"></div>
|
||||
<div>
|
||||
<input type="hidden" name="attr_advantage_bond_support_translated" value="Advantage/Bond/Support"/>
|
||||
<input type="hidden" name="attr_arts_oration_extra_domain_query" value="?{Add another Domain (spend Pathos)|No, |Blood & Valor, + @{blood_valor_die}[Blood & Valor]|Craft & Reason, + @{craft_reason_die}[Craft & Reason]|Resolve & Spirit, + @{resolve_spirit_die}[Resolve & Spirit]}"/>
|
||||
<input type="hidden" name="attr_arts_oration_translated" value="Arts & Oration"/>
|
||||
<input type="hidden" name="attr_blood_valor_extra_domain_query" value="?{Add another Domain (spend Pathos)|No, |Arts & Oration, + @{arts_oration_die}[Arts & Oration]|Craft & Reason, + @{craft_reason_die}[Craft & Reason]|Resolve & Spirit, + @{resolve_spirit_die}[Resolve & Spirit]}"/>
|
||||
<input type="hidden" name="attr_blood_valor_translated" value="Blood & Valor"/>
|
||||
<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_craft_reason_extra_domain_query" value="?{Add another Domain (spend Pathos)|No, |Arts & Oration, + @{arts_oration_die}[Arts & Oration]|Blood & Valor, + @{blood_valor_die}[Blood & Valor]|Resolve & Spirit, + @{resolve_spirit_die}[Resolve & Spirit]}"/>
|
||||
<input type="hidden" name="attr_craft_reason_translated" value="Craft & Reason"/>
|
||||
<input type="hidden" name="attr_divine_favor_query" value="?{Spend Divine Favor|0}"/>
|
||||
<input type="hidden" name="attr_epithet_and_name_query" value="?{Epithet die|None,roll=[[{@{name_die}[@{name_label}]|@{epithet},epithet=@{epithet}&#125;&#125; {{roll=[[{@{name_die}[@{name_label}] + @{epithet_die}[@{epithet_label}]}"/>
|
||||
<input type="hidden" name="attr_resolve_spirit_extra_domain_query" value="?{Add another Domain (spend Pathos)|No, |Arts & Oration, + @{arts_oration_die}[Arts & Oration]|Blood & Valor, + @{blood_valor_die}[Blood & Valor]|Craft & Reason, + @{craft_reason_die}[Craft & Reason]}"/>
|
||||
<input type="hidden" name="attr_resolve_spirit_translated" value="Resolve & Spirit"/>
|
||||
<input type="hidden" name="attr_target_query" value="?{Target Number|0}"/>
|
||||
</div>
|
||||
<div class="container">
|
||||
<div class="sheet-type-character">
|
||||
<div class="logo"></div>
|
||||
<div class="title-vertical glory">
|
||||
<input class="title" type="text" spellcheck="false" 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_name_label" value="Name"/>
|
||||
<div class="content">
|
||||
<label>
|
||||
<input class="squarebox" type="checkbox" name="attr_namebox_40" value="1"/><span></span><span>40</span>
|
||||
</label>
|
||||
<label>
|
||||
<input class="squarebox" type="checkbox" name="attr_namebox_80" value="1"/><span></span><span>80 (D8)</span>
|
||||
</label>
|
||||
<label>
|
||||
<input class="squarebox" type="checkbox" name="attr_namebox_120" value="1"/><span></span><span>120 (D10)</span>
|
||||
</label>
|
||||
<label>
|
||||
<input class="squarebox" type="checkbox" name="attr_namebox_160" value="1"/><span></span><span>160</span>
|
||||
</label>
|
||||
<label>
|
||||
<input class="squarebox" type="checkbox" name="attr_namebox_200" value="1"/><span></span><span>200</span>
|
||||
</label>
|
||||
<label>
|
||||
<input class="squarebox" type="checkbox" name="attr_namebox_240" value="1"/><span></span><span>240 (D12)</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="info">
|
||||
<div class="infobox">
|
||||
<div class="title">
|
||||
<div class="auto-expand"><span name="attr_epithet_label">Epithet</span>
|
||||
<textarea spellcheck="false" name="attr_epithet_label">Epithet</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_epithet_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_epithet_label">Epithet</span>
|
||||
<textarea spellcheck="false" name="attr_epithet_label">Epithet</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content epithet">
|
||||
<div class="auto-expand"><span name="attr_epithet_2"></span>
|
||||
<textarea spellcheck="false" name="attr_epithet_2"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="infobox">
|
||||
<div class="title">
|
||||
<div class="auto-expand"><span name="attr_name_label">Name</span>
|
||||
<textarea spellcheck="false" name="attr_name_label">Name</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content character-name">
|
||||
<input type="text" spellcheck="false" name="attr_character_name"/>
|
||||
<select name="attr_name_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_lineage_pronouns_label">Lineage / Pronouns</span>
|
||||
<textarea spellcheck="false" name="attr_lineage_pronouns_label">Lineage / Pronouns</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content lineage-pronouns">
|
||||
<div class="auto-expand"><span name="attr_lineage_pronouns"></span>
|
||||
<textarea spellcheck="false" name="attr_lineage_pronouns" data-i18n-placeholder="scion_of"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="infobox">
|
||||
<div class="title">
|
||||
<div class="auto-expand"><span name="attr_honored_god_label">Honored God</span>
|
||||
<textarea spellcheck="false" name="attr_honored_god_label">Honored God</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content honored-god">
|
||||
<div class="auto-expand"><span name="attr_honored_god"></span>
|
||||
<textarea spellcheck="false" name="attr_honored_god"></textarea>
|
||||
</div>
|
||||
<label>
|
||||
<input class="diamondbox" type="checkbox" name="attr_god_strength_1" value="1"/><span></span>
|
||||
</label>
|
||||
<label>
|
||||
<input class="diamondbox" type="checkbox" name="attr_god_strength_2" value="1"/><span></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="domains">
|
||||
<input class="title" type="text" spellcheck="false" name="attr_domains_label" value="Domains"/>
|
||||
<div class="domain">
|
||||
<button class="domain-button-arts_oration" name="roll_arts_oration" type="roll" value="&{template:agon-hero} {{name=@{character_name}}} {{type=arts_oration}} {{obstacle=[[@{target_query}]]}} {{@{epithet_and_name_query} + @{arts_oration_die}[@{arts_oration_translated}] @{arts_oration_extra_domain_query} + @{bonusdice_query}[@{advantage_bond_support_translated}]}k2 + @{divine_favor_query}d4k1[@{divine_favor_label}] ]]}}"><span name="attr_arts_oration_label"></span></button>
|
||||
<select name="attr_arts_oration_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-blood_valor" name="roll_blood_valor" type="roll" value="&{template:agon-hero} {{name=@{character_name}}} {{type=blood_valor}} {{obstacle=[[@{target_query}]]}} {{@{epithet_and_name_query} + @{blood_valor_die}[@{blood_valor_translated}] @{blood_valor_extra_domain_query} + @{bonusdice_query}[@{advantage_bond_support_translated}]}k2 + @{divine_favor_query}d4k1[@{divine_favor_label}] ]]}}"><span name="attr_blood_valor_label"></span></button>
|
||||
<select name="attr_blood_valor_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-craft_reason" name="roll_craft_reason" type="roll" value="&{template:agon-hero} {{name=@{character_name}}} {{type=craft_reason}} {{obstacle=[[@{target_query}]]}} {{@{epithet_and_name_query} + @{craft_reason_die}[@{craft_reason_translated}] @{craft_reason_extra_domain_query} + @{bonusdice_query}[@{advantage_bond_support_translated}]}k2 + @{divine_favor_query}d4k1[@{divine_favor_label}] ]]}}"><span name="attr_craft_reason_label"></span></button>
|
||||
<select name="attr_craft_reason_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-resolve_spirit" name="roll_resolve_spirit" type="roll" value="&{template:agon-hero} {{name=@{character_name}}} {{type=resolve_spirit}} {{obstacle=[[@{target_query}]]}} {{@{epithet_and_name_query} + @{resolve_spirit_die}[@{resolve_spirit_translated}] @{resolve_spirit_extra_domain_query} + @{bonusdice_query}[@{advantage_bond_support_translated}]}k2 + @{divine_favor_query}d4k1[@{divine_favor_label}] ]]}}"><span name="attr_resolve_spirit_label"></span></button>
|
||||
<select name="attr_resolve_spirit_die">
|
||||
<option value="d6">d6</option>
|
||||
<option value="d8">d8</option>
|
||||
<option value="d10">d10</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="title-vertical favors">
|
||||
<input class="title" type="text" spellcheck="false" name="attr_divine_favor_label" value="Divine Favor"/>
|
||||
<div class="content">
|
||||
<div class="favorbox">
|
||||
<input class="label" type="text" spellcheck="false" name="attr_authority_label" value="Authority"/>
|
||||
<input type="text" spellcheck="false" name="attr_zeus_label" value="Zeus"/>
|
||||
<label>
|
||||
<input class="diamondbox" type="checkbox" name="attr_favor_authority_1" value="1"/><span></span>
|
||||
</label>
|
||||
<label>
|
||||
<input class="diamondbox" type="checkbox" name="attr_favor_authority_2" value="1"/><span></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="favorbox">
|
||||
<input class="label" type="text" spellcheck="false" name="attr_beauty_label" value="Beauty"/>
|
||||
<input type="text" spellcheck="false" name="attr_aphrodite_label" value="Aphrodite"/>
|
||||
<label>
|
||||
<input class="diamondbox" type="checkbox" name="attr_favor_beauty_1" value="1"/><span></span>
|
||||
</label>
|
||||
<label>
|
||||
<input class="diamondbox" type="checkbox" name="attr_favor_beauty_2" value="1"/><span></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="favorbox">
|
||||
<input class="label" type="text" spellcheck="false" name="attr_conviction_label" value="Conviction"/>
|
||||
<input type="text" spellcheck="false" name="attr_demeter_label" value="Demeter"/>
|
||||
<label>
|
||||
<input class="diamondbox" type="checkbox" name="attr_favor_conviction_1" value="1"/><span></span>
|
||||
</label>
|
||||
<label>
|
||||
<input class="diamondbox" type="checkbox" name="attr_favor_conviction_2" value="1"/><span></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="favorbox">
|
||||
<input class="label" type="text" spellcheck="false" name="attr_cunning_label" value="Cunning"/>
|
||||
<input type="text" spellcheck="false" name="attr_hera_label" value="Hera"/>
|
||||
<label>
|
||||
<input class="diamondbox" type="checkbox" name="attr_favor_cunning_1" value="1"/><span></span>
|
||||
</label>
|
||||
<label>
|
||||
<input class="diamondbox" type="checkbox" name="attr_favor_cunning_2" value="1"/><span></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="favorbox">
|
||||
<input class="label" type="text" spellcheck="false" name="attr_daring_label" value="Daring"/>
|
||||
<input type="text" spellcheck="false" name="attr_hermes_label" value="Hermes"/>
|
||||
<label>
|
||||
<input class="diamondbox" type="checkbox" name="attr_favor_daring_1" value="1"/><span></span>
|
||||
</label>
|
||||
<label>
|
||||
<input class="diamondbox" type="checkbox" name="attr_favor_daring_2" value="1"/><span></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="favorbox">
|
||||
<input class="label" type="text" spellcheck="false" name="attr_ferocity_label" value="Ferocity"/>
|
||||
<input type="text" spellcheck="false" name="attr_ares_label" value="Ares"/>
|
||||
<label>
|
||||
<input class="diamondbox" type="checkbox" name="attr_favor_ferocity_1" value="1"/><span></span>
|
||||
</label>
|
||||
<label>
|
||||
<input class="diamondbox" type="checkbox" name="attr_favor_ferocity_2" value="1"/><span></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="favorbox">
|
||||
<input class="label" type="text" spellcheck="false" name="attr_fortitude_label" value="Fortitude"/>
|
||||
<input type="text" spellcheck="false" name="attr_poseidon_label" value="Poseidon"/>
|
||||
<label>
|
||||
<input class="diamondbox" type="checkbox" name="attr_favor_fortitude_1" value="1"/><span></span>
|
||||
</label>
|
||||
<label>
|
||||
<input class="diamondbox" type="checkbox" name="attr_favor_fortitude_2" value="1"/><span></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="favorbox">
|
||||
<input class="label" type="text" spellcheck="false" name="attr_ingenuity_label" value="Ingenuity"/>
|
||||
<input type="text" spellcheck="false" name="attr_hephaistos_label" value="Hephaistos"/>
|
||||
<label>
|
||||
<input class="diamondbox" type="checkbox" name="attr_favor_ingenuity_1" value="1"/><span></span>
|
||||
</label>
|
||||
<label>
|
||||
<input class="diamondbox" type="checkbox" name="attr_favor_ingenuity_2" value="1"/><span></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="favorbox">
|
||||
<input class="label" type="text" spellcheck="false" name="attr_insight_label" value="Insight"/>
|
||||
<input type="text" spellcheck="false" name="attr_hekate_label" value="Hekate"/>
|
||||
<label>
|
||||
<input class="diamondbox" type="checkbox" name="attr_favor_insight_1" value="1"/><span></span>
|
||||
</label>
|
||||
<label>
|
||||
<input class="diamondbox" type="checkbox" name="attr_favor_insight_2" value="1"/><span></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="favorbox">
|
||||
<input class="label" type="text" spellcheck="false" name="attr_knowledge_label" value="Knowledge"/>
|
||||
<input type="text" spellcheck="false" name="attr_apollo_label" value="Apollo"/>
|
||||
<label>
|
||||
<input class="diamondbox" type="checkbox" name="attr_favor_knowledge_1" value="1"/><span></span>
|
||||
</label>
|
||||
<label>
|
||||
<input class="diamondbox" type="checkbox" name="attr_favor_knowledge_2" value="1"/><span></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="favorbox">
|
||||
<input class="label" type="text" spellcheck="false" name="attr_precision_label" value="Precision"/>
|
||||
<input type="text" spellcheck="false" name="attr_artemis_label" value="Artemis"/>
|
||||
<label>
|
||||
<input class="diamondbox" type="checkbox" name="attr_favor_precision_1" value="1"/><span></span>
|
||||
</label>
|
||||
<label>
|
||||
<input class="diamondbox" type="checkbox" name="attr_favor_precision_2" value="1"/><span></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="favorbox">
|
||||
<input class="label" type="text" spellcheck="false" name="attr_wisdom_label" value="Wisdom"/>
|
||||
<input type="text" spellcheck="false" name="attr_athena_label" value="Athena"/>
|
||||
<label>
|
||||
<input class="diamondbox" type="checkbox" name="attr_favor_wisdom_1" value="1"/><span></span>
|
||||
</label>
|
||||
<label>
|
||||
<input class="diamondbox" type="checkbox" name="attr_favor_wisdom_2" value="1"/><span></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="title-vertical style-notes">
|
||||
<input class="title" type="text" spellcheck="false" name="attr_style_notes_label" value="Style & Notes"/>
|
||||
<div class="content">
|
||||
<div class="auto-expand notes"><span name="attr_style_notes"></span>
|
||||
<textarea spellcheck="false" name="attr_style_notes"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="title-vertical recite">
|
||||
<input class="title" type="text" spellcheck="false" name="attr_recite_your_deeds_label" value="Recite your deeds"/>
|
||||
<div class="content">
|
||||
<div class="auto-expand"><span name="attr_recite_top_label">How does your EPITHET, PATHOS (an added Domain), or DIVINE FAVOR manifest in the contest?</span>
|
||||
<textarea spellcheck="false" name="attr_recite_top_label">How does your EPITHET, PATHOS (an added Domain), or DIVINE FAVOR manifest in the contest?</textarea>
|
||||
</div>
|
||||
<div class="recite-box">
|
||||
<input class="title" type="text" spellcheck="false" name="attr_arts_oration_label" value="Arts & Oration"/>
|
||||
<div class="auto-expand"><span name="attr_recite_arts_oration_label">What honeyed words did you use? How did beauty manifest? How were passions stirred or truths attested?</span>
|
||||
<textarea spellcheck="false" name="attr_recite_arts_oration_label">What honeyed words did you use? How did beauty manifest? How were passions stirred or truths attested?</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="recite-box">
|
||||
<input class="title" type="text" spellcheck="false" name="attr_blood_valor_label" value="Blood & Valor"/>
|
||||
<div class="auto-expand"><span name="attr_recite_blood_valor_label">How was blood spilled? How was your strength, agility, or courage shown? How did you take our breath away?</span>
|
||||
<textarea spellcheck="false" name="attr_recite_blood_valor_label">How was blood spilled? How was your strength, agility, or courage shown? How did you take our breath away?</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="recite-box">
|
||||
<input class="title" type="text" spellcheck="false" name="attr_craft_reason_label" value="Craft & Reason"/>
|
||||
<div class="auto-expand"><span name="attr_recite_craft_reason_label">How was your knowledge or creativity shown? How was trickery or intrigue displayed? How did you figure it out?</span>
|
||||
<textarea spellcheck="false" name="attr_recite_craft_reason_label">How was your knowledge or creativity shown? How was trickery or intrigue displayed? How did you figure it out?</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="recite-box">
|
||||
<input class="title" type="text" spellcheck="false" name="attr_resolve_spirit_label" value="Resolve & Spirit"/>
|
||||
<div class="auto-expand"><span name="attr_recite_resolve_spirit_label">How did we see your willpower in action? How did you endure it? How did the arcane or occult manifest?</span>
|
||||
<textarea spellcheck="false" name="attr_recite_resolve_spirit_label">How did we see your willpower in action? How did you endure it? How did the arcane or occult manifest?</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="auto-expand"><span name="attr_recite_bottom_label">SUFFER—How did you fall short? Did you overreach yourself? Was the opponent too great? Was it cruel fortune?</span>
|
||||
<textarea spellcheck="false" name="attr_recite_bottom_label">SUFFER—How did you fall short? Did you overreach yourself? Was the opponent too great? Was it cruel fortune?</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pathos-bonds">
|
||||
<div class="pathos-fate">
|
||||
<input class="title" type="text" spellcheck="false" name="attr_pathos_label" value="Pathos"/>
|
||||
<input class="hidden fakeradio" type="checkbox" name="attr_pathos" value="0" checked="checked"/>
|
||||
<input class="circlebox fakeradio" type="checkbox" name="attr_pathos" value="1"/><span></span>
|
||||
<div class="floating-vert-bar"></div>
|
||||
<input class="circlebox fakeradio" type="checkbox" name="attr_pathos" value="2"/><span></span>
|
||||
<div class="floating-vert-bar"></div>
|
||||
<input class="circlebox fakeradio" type="checkbox" name="attr_pathos" value="3"/><span></span>
|
||||
<div class="floating-vert-bar"></div>
|
||||
<input class="circlebox fakeradio" type="checkbox" name="attr_pathos" value="4"/><span></span>
|
||||
<div class="floating-vert-bar"></div>
|
||||
<input class="circlebox fakeradio" type="checkbox" name="attr_pathos" value="5"/><span></span>
|
||||
<div class="floating-vert-bar"></div>
|
||||
<input class="agony" type="text" spellcheck="false" name="attr_agony_label" value="Agony"/>
|
||||
<div class="floating-vert-bar"></div>
|
||||
<input class="circlebox fakeradio" type="checkbox" name="attr_pathos" 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 class="floating-vert-bar"></div>
|
||||
<input class="squarebox fakeradio2" type="checkbox" name="attr_fate" value="9"/><span></span>
|
||||
<div class="floating-vert-bar"></div>
|
||||
<input class="squarebox fakeradio2" type="checkbox" name="attr_fate" value="10"/><span></span>
|
||||
<div class="floating-vert-bar"></div>
|
||||
<input class="squarebox fakeradio2" type="checkbox" name="attr_fate" value="11"/><span></span>
|
||||
<div class="floating-vert-bar"></div>
|
||||
<input class="squarebox fakeradio2" type="checkbox" name="attr_fate" value="12"/><span></span>
|
||||
</div>
|
||||
<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>
|
||||
<div class="great-deeds-boons">
|
||||
<div class="great-deeds">
|
||||
<input class="title" type="text" spellcheck="false" name="attr_great_deeds_and_trophies_label" value="Great Deeds & Trophies"/>
|
||||
<fieldset class="repeating_deeds">
|
||||
<input class="squarebox" type="checkbox" name="attr_deed_check" value="1"/><span></span>
|
||||
<div class="auto-expand deed-name"><span name="attr_deed_name"></span>
|
||||
<textarea spellcheck="false" name="attr_deed_name" data-i18n-placeholder="great_deed"></textarea>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
<div class="boons">
|
||||
<input class="title" type="text" spellcheck="false" name="attr_boons_label" value="Boons"/>
|
||||
<div class="boon">
|
||||
<input class="squarebox" type="checkbox" name="attr_boons_1_check_1" value="1"/><span></span>
|
||||
<div class="auto-expand"><span name="attr_boons_1_label">Advance a d8 Domain die to d10</span>
|
||||
<textarea spellcheck="false" name="attr_boons_1_label">Advance a d8 Domain die to d10</textarea>
|
||||
</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 name="attr_boons_2_label">Advance a d6 Domain die to d8</span>
|
||||
<textarea spellcheck="false" name="attr_boons_2_label">Advance a d6 Domain die to d8</textarea>
|
||||
</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 name="attr_boons_3_label">Advance your Epithet die to d8</span>
|
||||
<textarea spellcheck="false" name="attr_boons_3_label">Advance your Epithet die to d8</textarea>
|
||||
</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 name="attr_boons_4_label">Add another Epithet</span>
|
||||
<textarea spellcheck="false" name="attr_boons_4_label">Add another Epithet</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="divider"></div>
|
||||
<div class="boon">
|
||||
<input class="squarebox" type="checkbox" name="attr_boons_5_check_1" value="1"/><span></span>
|
||||
<div class="auto-expand"><span name="attr_boons_5_label">When you support or bolster, the die you give counts as one size larger.</span>
|
||||
<textarea spellcheck="false" name="attr_boons_5_label">When you support or bolster, the die you give counts as one size larger.</textarea>
|
||||
</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 name="attr_boons_6_label">When you mark Pathos for an extra domain, take two extra dice instead of one.</span>
|
||||
<textarea spellcheck="false" name="attr_boons_6_label">When you mark Pathos for an extra domain, take two extra dice instead of one.</textarea>
|
||||
</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 name="attr_boons_7_label">When you spend Divine Favor, roll +2d4 and keep the highest.</span>
|
||||
<textarea spellcheck="false" name="attr_boons_7_label">When you spend Divine Favor, roll +2d4 and keep the highest.</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="virtues">
|
||||
<input class="title" type="text" spellcheck="false" name="attr_virtues_label" value="Virtues"/>
|
||||
<div class="virtue">
|
||||
<input class="value" type="number" name="attr_acumen" value="0"/>
|
||||
<input class="title" type="text" spellcheck="false" name="attr_acumen_label" value="Acumen"/>
|
||||
</div>
|
||||
<div class="virtue">
|
||||
<input class="value" type="number" name="attr_courage" value="0"/>
|
||||
<input class="title" type="text" spellcheck="false" name="attr_courage_label" value="Courage"/>
|
||||
</div>
|
||||
<div class="virtue">
|
||||
<input class="value" type="number" name="attr_grace" value="0"/>
|
||||
<input class="title" type="text" spellcheck="false" name="attr_grace_label" value="Grace"/>
|
||||
</div>
|
||||
<div class="virtue">
|
||||
<input class="value" type="number" name="attr_passion" value="0"/>
|
||||
<input class="title" type="text" spellcheck="false" name="attr_passion_label" value="Passion"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<rolltemplate class="sheet-rolltemplate-agon-hero">{{#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>
|
||||
<script type="text/worker">(function () {
|
||||
/* global on, setAttrs, getAttrs, getSectionIDs, getTranslationByKey,
|
||||
generateRowID, removeRepeatingRow, _ */
|
||||
"use strict";
|
||||
function boolToFlag(v) {
|
||||
return v ? "1" : "0";
|
||||
}
|
||||
function getTranslation(key) {
|
||||
return getTranslationByKey(key) || `TRANSLATION_KEY_UNDEFINED: ${key}`;
|
||||
}
|
||||
function fillRepeatingSectionFromData(sectionName, dataList, setter) {
|
||||
const createdIDs = [];
|
||||
const setting = dataList
|
||||
.map((o) => {
|
||||
let rowID;
|
||||
while (!rowID) {
|
||||
let newID = generateRowID();
|
||||
if (!createdIDs.includes(newID)) {
|
||||
rowID = newID;
|
||||
createdIDs.push(rowID);
|
||||
}
|
||||
}
|
||||
const newAttrs = {};
|
||||
return Object.keys(o).reduce((m, key) => {
|
||||
m[`repeating_${sectionName}_${rowID}_${key}`] = o[key];
|
||||
return m;
|
||||
}, newAttrs);
|
||||
})
|
||||
.forEach((o) => setter.setAttrs(o));
|
||||
}
|
||||
function fillEmptyRows(sectionName, n, setter) {
|
||||
const data = [...Array(n).keys()].map(() => ({ autogen: "1" }));
|
||||
fillRepeatingSectionFromData(sectionName, data, setter);
|
||||
}
|
||||
// Convenience function that wraps Roll20 functions. Callback will be called with
|
||||
// an attribute setter proxy, which allows us to get and set function values using
|
||||
// object syntax. Optionally, a second argument is the setter itself, in order to
|
||||
// set values en masse.
|
||||
// Usage:
|
||||
// getSetAttrs(["foo", "bar"], (attrs, setter) => {
|
||||
// attrs["baz"] = attrs["foo"] + attrs["bar"];
|
||||
//})
|
||||
class AttributeSetter {
|
||||
constructor(attrs) {
|
||||
this._sourceAttrs = attrs;
|
||||
this._targetAttrs = {};
|
||||
}
|
||||
setAttr(name, value) {
|
||||
this._sourceAttrs[name] = value;
|
||||
this._targetAttrs[name] = value;
|
||||
}
|
||||
setAttrs(values) {
|
||||
for (let key in values) {
|
||||
this.setAttr(key, values[key]);
|
||||
}
|
||||
}
|
||||
getAttr(name) {
|
||||
return this._sourceAttrs[name];
|
||||
}
|
||||
finalize(callback) {
|
||||
getAttrs(Object.keys(this._targetAttrs), (values) => {
|
||||
const finalAttrs = {};
|
||||
for (let key in this._targetAttrs) {
|
||||
if (String(this._targetAttrs[key]) !== values[key])
|
||||
finalAttrs[key] = String(this._targetAttrs[key]);
|
||||
}
|
||||
setAttrs(finalAttrs, { silent: true }, callback);
|
||||
});
|
||||
}
|
||||
}
|
||||
const attributeHandler = {
|
||||
get: function (target, name) {
|
||||
return target.getAttr(name);
|
||||
},
|
||||
set: function (target, name, value) {
|
||||
target.setAttr(name, value);
|
||||
return true;
|
||||
},
|
||||
};
|
||||
function getSetAttrs(attrs, callback, finalCallback) {
|
||||
getAttrs(attrs, (values) => {
|
||||
const setter = new AttributeSetter(values);
|
||||
callback(new Proxy(setter, attributeHandler), setter);
|
||||
setter.finalize(finalCallback);
|
||||
});
|
||||
}
|
||||
// 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") {
|
||||
if (typeof attrs == "string") attrs = [attrs];
|
||||
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 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);
|
||||
},
|
||||
200,
|
||||
{ trailing: false }
|
||||
);
|
||||
on(`clicked:${buttonName}`, throttledFunction);
|
||||
}
|
||||
/* Constants */
|
||||
const kSheetVersion = "1.0";
|
||||
const kBrace = "&" + "#125" + ";";
|
||||
const kDoubleBrace = kBrace + kBrace;
|
||||
const kExtraEpithetField = "boons_4_check_1";
|
||||
const kPathosGivesTwoDiceField = "boons_6_check_1";
|
||||
const kSpendDivineFavorBoon = "boons_7_check_1";
|
||||
const kDomains = [
|
||||
"arts_oration",
|
||||
"blood_valor",
|
||||
"craft_reason",
|
||||
"resolve_spirit",
|
||||
];
|
||||
const kLabelAttributes = [
|
||||
"glory",
|
||||
"name",
|
||||
"epithet",
|
||||
"epithet",
|
||||
"epithet",
|
||||
"epithet",
|
||||
"name",
|
||||
"name",
|
||||
"lineage_pronouns",
|
||||
"lineage_pronouns",
|
||||
"honored_god",
|
||||
"honored_god",
|
||||
"domains",
|
||||
"arts_oration",
|
||||
"blood_valor",
|
||||
"craft_reason",
|
||||
"resolve_spirit",
|
||||
"divine_favor",
|
||||
"authority",
|
||||
"zeus",
|
||||
"beauty",
|
||||
"aphrodite",
|
||||
"conviction",
|
||||
"demeter",
|
||||
"cunning",
|
||||
"hera",
|
||||
"daring",
|
||||
"hermes",
|
||||
"ferocity",
|
||||
"ares",
|
||||
"fortitude",
|
||||
"poseidon",
|
||||
"ingenuity",
|
||||
"hephaistos",
|
||||
"insight",
|
||||
"hekate",
|
||||
"knowledge",
|
||||
"apollo",
|
||||
"precision",
|
||||
"artemis",
|
||||
"wisdom",
|
||||
"athena",
|
||||
"style_notes",
|
||||
"recite_your_deeds",
|
||||
"recite_top",
|
||||
"recite_top",
|
||||
"arts_oration",
|
||||
"recite_arts_oration",
|
||||
"recite_arts_oration",
|
||||
"blood_valor",
|
||||
"recite_blood_valor",
|
||||
"recite_blood_valor",
|
||||
"craft_reason",
|
||||
"recite_craft_reason",
|
||||
"recite_craft_reason",
|
||||
"resolve_spirit",
|
||||
"recite_resolve_spirit",
|
||||
"recite_resolve_spirit",
|
||||
"recite_bottom",
|
||||
"recite_bottom",
|
||||
"pathos",
|
||||
"agony",
|
||||
"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",
|
||||
"great_deeds_and_trophies",
|
||||
"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",
|
||||
"virtues",
|
||||
"acumen",
|
||||
"courage",
|
||||
"grace",
|
||||
"passion",
|
||||
];
|
||||
function query(question, options) {
|
||||
return `?{${getTranslation(question)}|${options.join("|")}}`;
|
||||
}
|
||||
function performFirstTimeSetup(attrs, setter) {
|
||||
fillEmptyRows("bonds", 8, setter);
|
||||
fillEmptyRows("deeds", 4, setter);
|
||||
kLabelAttributes.forEach(name => {
|
||||
attrs[`${name}_label`] = getTranslation(name);
|
||||
})
|
||||
}
|
||||
function setEpithetQuery(attrs) {
|
||||
const kNameDice = "roll=[[{@{name_die}[@{name_label}]";
|
||||
const epithet_options = [
|
||||
`${getTranslation("none")},${kNameDice}`,
|
||||
`@{epithet},epithet=@{epithet}${kDoubleBrace} {{${kNameDice} + @{epithet_die}[@{epithet_label}]`,
|
||||
];
|
||||
if (attrs[kExtraEpithetField] === "1") {
|
||||
const and = getTranslation("and");
|
||||
epithet_options.push(
|
||||
...[
|
||||
`@{epithet_2},epithet=@{epithet_2}${kDoubleBrace} {{${kNameDice} + @{epithet_die}[@{epithet_label}]`,
|
||||
`@{epithet} ${and} @{epithet_2},epithet=@{epithet} ${and} @{epithet_2}${kDoubleBrace} {{${kNameDice} + 2@{epithet_die}[@{epithet_label}]`,
|
||||
]
|
||||
);
|
||||
}
|
||||
attrs["epithet_and_name_query"] = query(
|
||||
"epithet_dice_query",
|
||||
epithet_options
|
||||
);
|
||||
}
|
||||
function setupDomainQueries(attrs) {
|
||||
const multiplier = attrs[kPathosGivesTwoDiceField] === "1" ? "2" : "";
|
||||
kDomains.forEach((domain) => {
|
||||
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_pathos",
|
||||
query_entries
|
||||
);
|
||||
attrs[`${domain}_translated`] = getTranslation(domain);
|
||||
});
|
||||
}
|
||||
function setupDivineFavorQuery(attrs) {
|
||||
const base_query = query("spend_divine_favor", [0]);
|
||||
if (attrs[kSpendDivineFavorBoon] === "1") {
|
||||
attrs["divine_favor_query"] = `[[${base_query} + 2*{${base_query},1}kl1]]`;
|
||||
} else {
|
||||
attrs["divine_favor_query"] = base_query;
|
||||
}
|
||||
}
|
||||
register(
|
||||
kPathosGivesTwoDiceField,
|
||||
function () {
|
||||
getSetAttrs([kPathosGivesTwoDiceField], setupDomainQueries);
|
||||
},
|
||||
"Handle giving two dice for extra domain"
|
||||
);
|
||||
register(
|
||||
kExtraEpithetField,
|
||||
function () {
|
||||
getSetAttrs([kExtraEpithetField], setEpithetQuery);
|
||||
},
|
||||
"Handle adding or removing an extra epithet"
|
||||
);
|
||||
register(
|
||||
kSpendDivineFavorBoon,
|
||||
function () {
|
||||
getSetAttrs([kSpendDivineFavorBoon], setupDivineFavorQuery);
|
||||
},
|
||||
"Handle boon for getting +2d4 on spending divine favor"
|
||||
)
|
||||
registerOpened(function () {
|
||||
getSetAttrs(
|
||||
[kExtraEpithetField, kPathosGivesTwoDiceField, kSpendDivineFavorBoon, "version"],
|
||||
function (attrs, setter) {
|
||||
if (!attrs["version"]) performFirstTimeSetup(attrs, setter);
|
||||
setter.setAttrs({
|
||||
advantage_bond_support_translated: getTranslation(
|
||||
"advantage_bond_support"
|
||||
),
|
||||
bonusdice_query: query("bonusdice_query", [0]),
|
||||
target_query: query("target_number", [0]),
|
||||
version: kSheetVersion,
|
||||
});
|
||||
setEpithetQuery(attrs);
|
||||
setupDomainQueries(attrs);
|
||||
setupDivineFavorQuery(attrs);
|
||||
}
|
||||
);
|
||||
}, "Handle setting default attributes when opening the sheet");}
|
||||
)();
|
||||
</script>
|
||||
|
After Width: | Height: | Size: 204 KiB |
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"html": "agon.html",
|
||||
"css": "agon.css",
|
||||
"authors": "Jakob Oesinghaus, Tim Denee",
|
||||
"roll20userid": "726129, 782723",
|
||||
"preview": "agon.png",
|
||||
"instructions": "This is the offical sheet for Agon by John Harper and Sean Nittner. Please report issues or feature requests [here](https://github.com/joesinghaus/Agon-Sheet/issues)."
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
{
|
||||
"acumen": "Acumen",
|
||||
"add_domain_spend_pathos": "Add another Domain (spend Pathos)",
|
||||
"advantage_bond_support": "Advantage/Bond/Support",
|
||||
"agony": "Agony",
|
||||
"and": "and",
|
||||
"aphrodite": "Aphrodite",
|
||||
"apollo": "Apollo",
|
||||
"ares": "Ares",
|
||||
"artemis": "Artemis",
|
||||
"arts_oration": "Arts & Oration",
|
||||
"athena": "Athena",
|
||||
"authority": "Authority",
|
||||
"beauty": "Beauty",
|
||||
"blood_valor": "Blood & Valor",
|
||||
"bond_use_1": "Bolster you",
|
||||
"bond_use_2": "Block Harm or Fate for you",
|
||||
"bond_use_3": "Follow your lead",
|
||||
"bond_use_top": "When you use a Bond, ask them to:",
|
||||
"bonds": "Bonds",
|
||||
"bonusdice_query": "Other dice (Advantage, Bond Dice, or Support), e.g. 1d8 + 1d8 + 1d6",
|
||||
"boons": "Boons",
|
||||
"boons_1": "Advance a d8 Domain die to d10",
|
||||
"boons_2": "Advance a d6 Domain die to d8",
|
||||
"boons_3": "Advance your Epithet die to d8",
|
||||
"boons_4": "Add another Epithet",
|
||||
"boons_5": "When you support or bolster, the die you give counts as one size larger.",
|
||||
"boons_6": "When you mark Pathos for an extra domain, take two extra dice instead of one.",
|
||||
"boons_7": "When you spend Divine Favor, roll +2d4 and keep the highest.",
|
||||
"conviction": "Conviction",
|
||||
"courage": "Courage",
|
||||
"craft_reason": "Craft & Reason",
|
||||
"cunning": "Cunning",
|
||||
"daring": "Daring",
|
||||
"demeter": "Demeter",
|
||||
"divine_favor": "Divine Favor",
|
||||
"domains": "Domains",
|
||||
"epithet": "Epithet",
|
||||
"epithet_dice_query": "Epithet die",
|
||||
"fate": "Fate",
|
||||
"ferocity": "Ferocity",
|
||||
"fortitude": "Fortitude",
|
||||
"glory": "Glory",
|
||||
"grace": "Grace",
|
||||
"great_deed": "Great Deed",
|
||||
"great_deeds_and_trophies": "Great Deeds & Trophies",
|
||||
"hekate": "Hekate",
|
||||
"hephaistos": "Hephaistos",
|
||||
"hera": "Hera",
|
||||
"hermes": "Hermes",
|
||||
"honored_god": "Honored God",
|
||||
"ingenuity": "Ingenuity",
|
||||
"insight": "Insight",
|
||||
"knowledge": "Knowledge",
|
||||
"lineage_pronouns": "Lineage / Pronouns",
|
||||
"name": "Name",
|
||||
"no": "No",
|
||||
"none": "None",
|
||||
"passion": "Passion",
|
||||
"pathos": "Pathos",
|
||||
"poseidon": "Poseidon",
|
||||
"precision": "Precision",
|
||||
"recite_arts_oration": "What honeyed words did you use?\nHow did beauty manifest?\nHow were passions stirred or truths attested?",
|
||||
"recite_blood_valor": "How was blood spilled?\nHow was your strength, agility, or courage shown?\nHow did you take our breath away?",
|
||||
"recite_bottom": "SUFFER—How did you fall short? Did you overreach yourself? Was the opponent too great? Was it cruel fortune?",
|
||||
"recite_craft_reason": "How was your knowledge or creativity shown?\nHow was trickery or intrigue displayed?\nHow did you figure it out?",
|
||||
"recite_resolve_spirit": "How did we see your willpower in action?\nHow did you endure it?\nHow did the arcane or occult manifest?",
|
||||
"recite_top": "How does your EPITHET, PATHOS (an added Domain), or DIVINE FAVOR manifest in the contest?",
|
||||
"recite_your_deeds": "Recite your deeds",
|
||||
"resolve_spirit": "Resolve & Spirit",
|
||||
"roll_prevails": "Your action goes well and you overcome the challenge. The best hero earns Glory equal to the target number. Heroes who prevail earn half that amount (round up).",
|
||||
"roll_suffers": "Heroes who suffer each earn 1 Glory.",
|
||||
"scion_of": "Scion Of",
|
||||
"spend_divine_favor": "Spend Divine Favor",
|
||||
"strength": "Strength",
|
||||
"style_notes": "Style & Notes",
|
||||
"target_number": "Target Number",
|
||||
"virtues": "Virtues",
|
||||
"wisdom": "Wisdom",
|
||||
"yes": "Yes",
|
||||
"zeus": "Zeus"
|
||||
}
|
||||