843 lines
34 KiB
HTML
843 lines
34 KiB
HTML
|
|
<input type="hidden" name="attr_character_sheet" style="display: none;" value="TailsOfEquestria"/>
|
|
<input type="checkbox" name="attr_useApiExplodingHoof" style="display: none;"/>
|
|
<div class="top"><img src="http://ninjadivision.com/wp-content/uploads/2017/02/MLP-Website-Header-900x325.jpg"/>
|
|
<div class="mask"></div>
|
|
</div>
|
|
<div class="main-container">
|
|
<div>
|
|
<div class="bio">
|
|
<div class="labelledUnderlined">
|
|
<label>Pony Name:</label>
|
|
<div class="inner">
|
|
<input type="text" name="attr_character_name"/>
|
|
</div>
|
|
</div>
|
|
<div class="labelledUnderlined">
|
|
<label>Player Name:</label>
|
|
<div class="inner">
|
|
<input type="text" name="attr_player_name"/>
|
|
</div>
|
|
</div>
|
|
<div class="labelledUnderlined">
|
|
<label>Race:</label>
|
|
<div class="inner">
|
|
<input type="text" name="attr_race"/>
|
|
</div>
|
|
</div>
|
|
<div class="labelledUnderlined">
|
|
<label>Level:</label>
|
|
<div class="inner">
|
|
<input type="number" name="attr_level"/>
|
|
</div>
|
|
</div>
|
|
<div class="labelledUnderlined">
|
|
<label>Element of Harmony:</label>
|
|
<div class="inner">
|
|
<select name="attr_elementOfHarmony">
|
|
<option value="generosity">generosity</option>
|
|
<option value="honesty">honesty</option>
|
|
<option value="kindness">kindness</option>
|
|
<option value="laughter">laughter</option>
|
|
<option value="loyalty">loyalty</option>
|
|
<option value="magic">magic</option>
|
|
<option value="other">other</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div style="display: inline-block; width: 2.2in;">
|
|
<div class="friendshipTokens">
|
|
<h1><span>F</span><span>R</span><span>I</span><span>E</span><span>N</span><span>D</span><span>S</span><span>H</span><span>I</span><span>P</span></h1>
|
|
<input type="number" name="attr_friendshipTokens" value="0"/>
|
|
</div>
|
|
<div class="explodingHooves api">
|
|
<h1>Exploding Hoof Dice:</h1>
|
|
<div class="explodingHoof">
|
|
<button type="roll" value="!tailsOfEquestriaHelper_explodingHoof @{character_name} 4" title="Click to roll!"></button>
|
|
</div>
|
|
<div class="explodingHoof">
|
|
<button type="roll" value="!tailsOfEquestriaHelper_explodingHoof @{character_name} 6" title="Click to roll!"></button>
|
|
</div>
|
|
<div class="explodingHoof">
|
|
<button type="roll" value="!tailsOfEquestriaHelper_explodingHoof @{character_name} 8" title="Click to roll!"></button>
|
|
</div>
|
|
<div class="explodingHoof">
|
|
<button type="roll" value="!tailsOfEquestriaHelper_explodingHoof @{character_name} 10" title="Click to roll!"></button>
|
|
</div>
|
|
<div class="explodingHoof">
|
|
<button type="roll" value="!tailsOfEquestriaHelper_explodingHoof @{character_name} 12" title="Click to roll!"></button>
|
|
</div>
|
|
<div class="explodingHoof">
|
|
<button type="roll" value="!tailsOfEquestriaHelper_explodingHoof @{character_name} 20" title="Click to roll!"></button>
|
|
</div>
|
|
</div>
|
|
<div class="explodingHooves noApi">
|
|
<h1>Exploding Hoof Dice:</h1>
|
|
<div class="explodingHoof">
|
|
<input type="hidden" name="attr_exploding_hoof_d4" style="display: none;" value="{1d3, floor(1d4/4)*{{0} + 4, 1d5, floor(1d6/6)*{{0} + 6, 1d7, floor(1d8/8)*{{0} + 8, 1d9, floor(1d10/10)*{{0} + 10, 1d11, floor(1d12/12)*{{0} + 12, 1d20}k1}k1}k1}k1}k1}k1"/>
|
|
<button type="roll" value="&{template:toe} {{charName=@{character_name}}} {{attr=exploding_hoof_d4}} {{result=[[@{exploding_hoof_d4}]]}}" title="Click to roll!"></button>
|
|
</div>
|
|
<div class="explodingHoof">
|
|
<input type="hidden" name="attr_exploding_hoof_d6" style="display: none;" value="{1d5, floor(1d6/6)*{{0} + 6, 1d7, floor(1d8/8)*{{0} + 8, 1d9, floor(1d10/10)*{{0} + 10, 1d11, floor(1d12/12)*{{0} + 12, 1d20}k1}k1}k1}k1}k1"/>
|
|
<button type="roll" value="&{template:toe} {{charName=@{character_name}}} {{attr=exploding_hoof_d6}} {{result=[[@{exploding_hoof_d6}]]}}" title="Click to roll!"></button>
|
|
</div>
|
|
<div class="explodingHoof">
|
|
<input type="hidden" name="attr_exploding_hoof_d8" style="display: none;" value="{1d7, floor(1d8/8)*{{0} + 8, 1d9, floor(1d10/10)*{{0} + 10, 1d11, floor(1d12/12)*{{0} + 12, 1d20}k1}k1}k1}k1"/>
|
|
<button type="roll" value="&{template:toe} {{charName=@{character_name}}} {{attr=exploding_hoof_d8}} {{result=[[@{exploding_hoof_d8}]]}}" title="Click to roll!"></button>
|
|
</div>
|
|
<div class="explodingHoof">
|
|
<input type="hidden" name="attr_exploding_hoof_d10" style="display: none;" value="{1d9, floor(1d10/10)*{{0} + 10, 1d11, floor(1d12/12)*{{0} + 12, 1d20}k1}k1}k1"/>
|
|
<button type="roll" value="&{template:toe} {{charName=@{character_name}}} {{attr=exploding_hoof_d10}} {{result=[[@{exploding_hoof_d10}]]}}" title="Click to roll!"></button>
|
|
</div>
|
|
<div class="explodingHoof">
|
|
<input type="hidden" name="attr_exploding_hoof_d12" style="display: none;" value="{1d11, floor(1d12/12)*{{0} + 12, 1d20}k1}k1"/>
|
|
<button type="roll" value="&{template:toe} {{charName=@{character_name}}} {{attr=exploding_hoof_d12}} {{result=[[@{exploding_hoof_d12}]]}}" title="Click to roll!"></button>
|
|
</div>
|
|
<div class="explodingHoof">
|
|
<input type="hidden" name="attr_exploding_hoof_d20" style="display: none;" value="1d20"/>
|
|
<button type="roll" value="&{template:toe} {{charName=@{character_name}}} {{attr=exploding_hoof_d20}} {{result=[[@{exploding_hoof_d20}]]}}" title="Click to roll!"></button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div class="stamina">
|
|
<div>
|
|
<h1>Stamina:</h1>
|
|
<div class="fraction">
|
|
<input type="number" name="attr_stamina"/><span>/</span>
|
|
<input type="number" name="attr_stamina_max"/>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div class="labelledUnderlined" style="font-size: 1.5em; max-width: 2in;">
|
|
<label>Damage Modifiers:</label>
|
|
<div class="inner">
|
|
<input type="text" name="attr_damageReduction" style="width: 2.4in;"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="traits">
|
|
<div class="trait body">
|
|
<label class="traitName">Body</label>
|
|
<button type="roll" value="&{template:toe} {{charName=@{character_name}}} {{attr=Body}} {{result=[[@{body_equation}]]}}{{updowngrade=@{body_updowngrade}}}" title="Click to roll!"></button>
|
|
<select name="attr_body">
|
|
<option value="null" selected="selected">Pick One</option>
|
|
<option value="D4">D4</option>
|
|
<option value="D6">D6</option>
|
|
<option value="D8">D8</option>
|
|
<option value="D10">D10</option>
|
|
<option value="D12">D12</option>
|
|
<option value="D20">D20</option>
|
|
<option value="{D20,D4}k1">D20/D4</option>
|
|
<option value="{D20,D6}k1">D20/D6</option>
|
|
<option value="{D20,D8}k1">D20/D8</option>
|
|
<option value="{D20,D10}k1">D20/D10</option>
|
|
<option value="{D20,D12}k1">D20/D12</option>
|
|
<option value="{D20,D20}k1">D20x2</option>
|
|
<option value="{D20,D20,D4}k1">D20x2/D4</option>
|
|
<option value="{D20,D20,D6}k1">D20x2/D6</option>
|
|
<option value="{D20,D20,D8}k1">D20x2/D8</option>
|
|
<option value="{D20,D20,D10}k1">D20x2/D10</option>
|
|
<option value="{D20,D20,D12}k1">D20x2/D12</option>
|
|
<option value="{D20,D20,D20}k1">D20x3</option>
|
|
</select>
|
|
<div class="updowngrade" title="Adjust this to upgrade or downgrade your roll.">
|
|
<label>Upgrade/<br/>Downgrade</label><span class="arrows">
|
|
<div class="up">
|
|
<input type="checkbox" name="attr_body_tickup" value="1" title="Upgrade 1 step"/><span>▲</span>
|
|
</div>
|
|
<div class="down">
|
|
<input type="checkbox" name="attr_body_tickdown" value="1" title="Downgrade 1 step"/><span>▼</span>
|
|
</div></span><span>
|
|
<div class="labelledUnderlined" style="width: 0.3in;">
|
|
<label></label>
|
|
<div class="inner">
|
|
<input type="number" name="attr_body_updowngrade"/>
|
|
</div>
|
|
</div></span>
|
|
</div>
|
|
<input type="hidden" name="attr_body_equation"/>
|
|
</div>
|
|
<div class="trait mind">
|
|
<label class="traitName">Mind</label>
|
|
<button type="roll" value="&{template:toe} {{charName=@{character_name}}} {{attr=Mind}} {{result=[[@{mind_equation}]]}}{{updowngrade=@{mind_updowngrade}}}" title="Click to roll!"></button>
|
|
<select name="attr_mind">
|
|
<option value="null" selected="selected">Pick One</option>
|
|
<option value="D4">D4</option>
|
|
<option value="D6">D6</option>
|
|
<option value="D8">D8</option>
|
|
<option value="D10">D10</option>
|
|
<option value="D12">D12</option>
|
|
<option value="D20">D20</option>
|
|
<option value="{D20,D4}k1">D20/D4</option>
|
|
<option value="{D20,D6}k1">D20/D6</option>
|
|
<option value="{D20,D8}k1">D20/D8</option>
|
|
<option value="{D20,D10}k1">D20/D10</option>
|
|
<option value="{D20,D12}k1">D20/D12</option>
|
|
<option value="{D20,D20}k1">D20x2</option>
|
|
<option value="{D20,D20,D4}k1">D20x2/D4</option>
|
|
<option value="{D20,D20,D6}k1">D20x2/D6</option>
|
|
<option value="{D20,D20,D8}k1">D20x2/D8</option>
|
|
<option value="{D20,D20,D10}k1">D20x2/D10</option>
|
|
<option value="{D20,D20,D12}k1">D20x2/D12</option>
|
|
<option value="{D20,D20,D20}k1">D20x3</option>
|
|
</select>
|
|
<div class="updowngrade" title="Adjust this to upgrade or downgrade your roll.">
|
|
<label>Upgrade/<br/>Downgrade</label><span class="arrows">
|
|
<div class="up">
|
|
<input type="checkbox" name="attr_mind_tickup" value="1" title="Upgrade 1 step"/><span>▲</span>
|
|
</div>
|
|
<div class="down">
|
|
<input type="checkbox" name="attr_mind_tickdown" value="1" title="Downgrade 1 step"/><span>▼</span>
|
|
</div></span><span>
|
|
<div class="labelledUnderlined" style="width: 0.3in;">
|
|
<label></label>
|
|
<div class="inner">
|
|
<input type="number" name="attr_mind_updowngrade"/>
|
|
</div>
|
|
</div></span>
|
|
</div>
|
|
<input type="hidden" name="attr_mind_equation"/>
|
|
</div>
|
|
<div class="trait charm">
|
|
<label class="traitName">Charm</label>
|
|
<button type="roll" value="&{template:toe} {{charName=@{character_name}}} {{attr=Charm}} {{result=[[@{charm_equation}]]}}{{updowngrade=@{charm_updowngrade}}}" title="Click to roll!"></button>
|
|
<select name="attr_charm">
|
|
<option value="null" selected="selected">Pick One</option>
|
|
<option value="D4">D4</option>
|
|
<option value="D6">D6</option>
|
|
<option value="D8">D8</option>
|
|
<option value="D10">D10</option>
|
|
<option value="D12">D12</option>
|
|
<option value="D20">D20</option>
|
|
<option value="{D20,D4}k1">D20/D4</option>
|
|
<option value="{D20,D6}k1">D20/D6</option>
|
|
<option value="{D20,D8}k1">D20/D8</option>
|
|
<option value="{D20,D10}k1">D20/D10</option>
|
|
<option value="{D20,D12}k1">D20/D12</option>
|
|
<option value="{D20,D20}k1">D20x2</option>
|
|
<option value="{D20,D20,D4}k1">D20x2/D4</option>
|
|
<option value="{D20,D20,D6}k1">D20x2/D6</option>
|
|
<option value="{D20,D20,D8}k1">D20x2/D8</option>
|
|
<option value="{D20,D20,D10}k1">D20x2/D10</option>
|
|
<option value="{D20,D20,D12}k1">D20x2/D12</option>
|
|
<option value="{D20,D20,D20}k1">D20x3</option>
|
|
</select>
|
|
<div class="updowngrade" title="Adjust this to upgrade or downgrade your roll.">
|
|
<label>Upgrade/<br/>Downgrade</label><span class="arrows">
|
|
<div class="up">
|
|
<input type="checkbox" name="attr_charm_tickup" value="1" title="Upgrade 1 step"/><span>▲</span>
|
|
</div>
|
|
<div class="down">
|
|
<input type="checkbox" name="attr_charm_tickdown" value="1" title="Downgrade 1 step"/><span>▼</span>
|
|
</div></span><span>
|
|
<div class="labelledUnderlined" style="width: 0.3in;">
|
|
<label></label>
|
|
<div class="inner">
|
|
<input type="number" name="attr_charm_updowngrade"/>
|
|
</div>
|
|
</div></span>
|
|
</div>
|
|
<input type="hidden" name="attr_charm_equation"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div class="talents">
|
|
<h1>Talents:</h1>
|
|
<div class="talent isCutieMark">
|
|
<button type="roll" value="&{template:toe} {{charName=@{character_name}}} {{attr=@{talent_cutieMark_name}}} {{result=[[@{talent_cutieMark_equation}]]}}{{notes=@{talent_cutieMark_notes}}}{{updowngrade=@{talent_cutieMark_updowngrade}}}" title="Click to roll!"></button>
|
|
<div style="display: inline-block; vertical-align: top; width: 0.4in;">
|
|
<div class="talentIcon" style="font-size: 3em;"></div>
|
|
</div>
|
|
<div style="display: inline-block; width: 6.5in;">
|
|
<div class="labelledUnderlined" style="width: 2.5in;">
|
|
<label></label>
|
|
<div class="inner">
|
|
<input type="text" name="attr_talent_cutieMark_name"/>
|
|
</div>
|
|
</div>
|
|
<div class="labelledUnderlined">
|
|
<label>Dice:</label>
|
|
<div class="inner">
|
|
<select name="attr_talent_cutieMark_dice">
|
|
<option value="null" selected="selected">Pick One</option>
|
|
<option value="D4">D4</option>
|
|
<option value="D6">D6</option>
|
|
<option value="D8">D8</option>
|
|
<option value="D10">D10</option>
|
|
<option value="D12">D12</option>
|
|
<option value="D20">D20</option>
|
|
<option value="{D20,D4}k1">D20/D4</option>
|
|
<option value="{D20,D6}k1">D20/D6</option>
|
|
<option value="{D20,D8}k1">D20/D8</option>
|
|
<option value="{D20,D10}k1">D20/D10</option>
|
|
<option value="{D20,D12}k1">D20/D12</option>
|
|
<option value="{D20,D20}k1">D20x2</option>
|
|
<option value="{D20,D20,D4}k1">D20x2/D4</option>
|
|
<option value="{D20,D20,D6}k1">D20x2/D6</option>
|
|
<option value="{D20,D20,D8}k1">D20x2/D8</option>
|
|
<option value="{D20,D20,D10}k1">D20x2/D10</option>
|
|
<option value="{D20,D20,D12}k1">D20x2/D12</option>
|
|
<option value="{D20,D20,D20}k1">D20x3</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="labelledUnderlined">
|
|
<label>Trait</label>
|
|
<div class="inner">
|
|
<select name="attr_talent_cutieMark_trait">
|
|
<option value="null" selected="selected">none</option>
|
|
<option value="body">body</option>
|
|
<option value="mind">mind</option>
|
|
<option value="charm">charm</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="updowngrade" title="Adjust this to upgrade or downgrade your roll.">
|
|
<label>Upgrade/<br/>Downgrade</label><span class="arrows">
|
|
<div class="up">
|
|
<input type="checkbox" name="attr_talent_cutieMark_tickup" value="1" title="Upgrade 1 step"/><span>▲</span>
|
|
</div>
|
|
<div class="down">
|
|
<input type="checkbox" name="attr_talent_cutieMark_tickdown" value="1" title="Downgrade 1 step"/><span>▼</span>
|
|
</div></span><span>
|
|
<div class="labelledUnderlined" style="width: 0.3in;">
|
|
<label></label>
|
|
<div class="inner">
|
|
<input type="number" name="attr_talent_cutieMark_updowngrade"/>
|
|
</div>
|
|
</div></span>
|
|
</div>
|
|
<div class="notes">
|
|
<div class="labelledUnderlined">
|
|
<label>Notes:</label>
|
|
<div class="inner">
|
|
<input type="text" name="attr_talent_cutieMark_notes"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<input type="hidden" name="attr_talent_cutieMark_equation"/>
|
|
</div>
|
|
<div class="talent">
|
|
<button type="roll" value="&{template:toe} {{charName=@{character_name}}} {{attr=@{talent_racial_name}}} {{result=[[@{talent_racial_equation}]]}}{{notes=@{talent_racial_notes}}}{{updowngrade=@{talent_racial_updowngrade}}}" title="Click to roll!"></button>
|
|
<div style="display: inline-block; vertical-align: top; width: 0.4in;">
|
|
<div class="talentIcon" style="font-size: 3em;"></div>
|
|
</div>
|
|
<div style="display: inline-block; width: 6.5in;">
|
|
<div class="labelledUnderlined" style="width: 2.5in;">
|
|
<label></label>
|
|
<div class="inner">
|
|
<input type="text" name="attr_talent_racial_name"/>
|
|
</div>
|
|
</div>
|
|
<div class="labelledUnderlined">
|
|
<label>Dice:</label>
|
|
<div class="inner">
|
|
<select name="attr_talent_racial_dice">
|
|
<option value="null" selected="selected">Pick One</option>
|
|
<option value="D4">D4</option>
|
|
<option value="D6">D6</option>
|
|
<option value="D8">D8</option>
|
|
<option value="D10">D10</option>
|
|
<option value="D12">D12</option>
|
|
<option value="D20">D20</option>
|
|
<option value="{D20,D4}k1">D20/D4</option>
|
|
<option value="{D20,D6}k1">D20/D6</option>
|
|
<option value="{D20,D8}k1">D20/D8</option>
|
|
<option value="{D20,D10}k1">D20/D10</option>
|
|
<option value="{D20,D12}k1">D20/D12</option>
|
|
<option value="{D20,D20}k1">D20x2</option>
|
|
<option value="{D20,D20,D4}k1">D20x2/D4</option>
|
|
<option value="{D20,D20,D6}k1">D20x2/D6</option>
|
|
<option value="{D20,D20,D8}k1">D20x2/D8</option>
|
|
<option value="{D20,D20,D10}k1">D20x2/D10</option>
|
|
<option value="{D20,D20,D12}k1">D20x2/D12</option>
|
|
<option value="{D20,D20,D20}k1">D20x3</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="labelledUnderlined">
|
|
<label>Trait</label>
|
|
<div class="inner">
|
|
<select name="attr_talent_racial_trait">
|
|
<option value="null" selected="selected">none</option>
|
|
<option value="body">body</option>
|
|
<option value="mind">mind</option>
|
|
<option value="charm">charm</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="updowngrade" title="Adjust this to upgrade or downgrade your roll.">
|
|
<label>Upgrade/<br/>Downgrade</label><span class="arrows">
|
|
<div class="up">
|
|
<input type="checkbox" name="attr_talent_racial_tickup" value="1" title="Upgrade 1 step"/><span>▲</span>
|
|
</div>
|
|
<div class="down">
|
|
<input type="checkbox" name="attr_talent_racial_tickdown" value="1" title="Downgrade 1 step"/><span>▼</span>
|
|
</div></span><span>
|
|
<div class="labelledUnderlined" style="width: 0.3in;">
|
|
<label></label>
|
|
<div class="inner">
|
|
<input type="number" name="attr_talent_racial_updowngrade"/>
|
|
</div>
|
|
</div></span>
|
|
</div>
|
|
<div class="notes">
|
|
<div class="labelledUnderlined">
|
|
<label>Notes:</label>
|
|
<div class="inner">
|
|
<input type="text" name="attr_talent_racial_notes"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<input type="hidden" name="attr_talent_racial_equation"/>
|
|
</div>
|
|
<fieldset class="repeating_talents">
|
|
<div class="talent">
|
|
<button type="roll" value="&{template:toe} {{charName=@{character_name}}} {{attr=@{name}}} {{result=[[@{equation}]]}}{{notes=@{notes}}}{{updowngrade=@{updowngrade}}}" title="Click to roll!"></button>
|
|
<div style="display: inline-block; vertical-align: top; width: 0.4in;">
|
|
<div class="talentIcon" style="font-size: 3em;"></div>
|
|
</div>
|
|
<div style="display: inline-block; width: 6.5in;">
|
|
<div class="labelledUnderlined" style="width: 2.5in;">
|
|
<label></label>
|
|
<div class="inner">
|
|
<input type="text" name="attr_name"/>
|
|
</div>
|
|
</div>
|
|
<div class="labelledUnderlined">
|
|
<label>Dice:</label>
|
|
<div class="inner">
|
|
<select name="attr_dice">
|
|
<option value="null" selected="selected">Pick One</option>
|
|
<option value="D4">D4</option>
|
|
<option value="D6">D6</option>
|
|
<option value="D8">D8</option>
|
|
<option value="D10">D10</option>
|
|
<option value="D12">D12</option>
|
|
<option value="D20">D20</option>
|
|
<option value="{D20,D4}k1">D20/D4</option>
|
|
<option value="{D20,D6}k1">D20/D6</option>
|
|
<option value="{D20,D8}k1">D20/D8</option>
|
|
<option value="{D20,D10}k1">D20/D10</option>
|
|
<option value="{D20,D12}k1">D20/D12</option>
|
|
<option value="{D20,D20}k1">D20x2</option>
|
|
<option value="{D20,D20,D4}k1">D20x2/D4</option>
|
|
<option value="{D20,D20,D6}k1">D20x2/D6</option>
|
|
<option value="{D20,D20,D8}k1">D20x2/D8</option>
|
|
<option value="{D20,D20,D10}k1">D20x2/D10</option>
|
|
<option value="{D20,D20,D12}k1">D20x2/D12</option>
|
|
<option value="{D20,D20,D20}k1">D20x3</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="labelledUnderlined">
|
|
<label>Trait</label>
|
|
<div class="inner">
|
|
<select name="attr_trait">
|
|
<option value="null" selected="selected">none</option>
|
|
<option value="body">body</option>
|
|
<option value="mind">mind</option>
|
|
<option value="charm">charm</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="updowngrade" title="Adjust this to upgrade or downgrade your roll.">
|
|
<label>Upgrade/<br/>Downgrade</label><span class="arrows">
|
|
<div class="up">
|
|
<input type="checkbox" name="attr_tickup" value="1" title="Upgrade 1 step"/><span>▲</span>
|
|
</div>
|
|
<div class="down">
|
|
<input type="checkbox" name="attr_tickdown" value="1" title="Downgrade 1 step"/><span>▼</span>
|
|
</div></span><span>
|
|
<div class="labelledUnderlined" style="width: 0.3in;">
|
|
<label></label>
|
|
<div class="inner">
|
|
<input type="number" name="attr_updowngrade"/>
|
|
</div>
|
|
</div></span>
|
|
</div>
|
|
<div class="notes">
|
|
<div class="labelledUnderlined">
|
|
<label>Notes:</label>
|
|
<div class="inner">
|
|
<input type="text" name="attr_notes"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<input type="hidden" name="attr_equation"/>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div class="quirks">
|
|
<h1>Quirks:</h1>
|
|
<div class="quirk quirkMain">
|
|
<div class="quirkIcon" style="font-size: 2em;"></div>
|
|
<div class="labelledUnderlined">
|
|
<label></label>
|
|
<div class="inner">
|
|
<input type="text" name="attr_quirk_main_name"/>
|
|
</div>
|
|
</div>
|
|
<div class="labelledUnderlined">
|
|
<label>Notes</label>
|
|
<div class="inner">
|
|
<input type="text" name="attr_quirk_main_notes"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<fieldset class="repeating_quirks">
|
|
<div class="quirk">
|
|
<div class="quirkIcon" style="font-size: 2em;"></div>
|
|
<div class="labelledUnderlined">
|
|
<label></label>
|
|
<div class="inner">
|
|
<input type="text" name="attr_name"/>
|
|
</div>
|
|
</div>
|
|
<div class="labelledUnderlined">
|
|
<label>Notes</label>
|
|
<div class="inner">
|
|
<input type="text" name="attr_notes"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div class="reputations">
|
|
<h1>Reputation:</h1>
|
|
<fieldset class="repeating_reputations">
|
|
<div class="reputation">
|
|
<div class="reputationIcon" style="font-size: 2em;"></div>
|
|
<div class="labelledUnderlined">
|
|
<label>Faction/Individual</label>
|
|
<div class="inner">
|
|
<input type="text" name="attr_name"/>
|
|
</div>
|
|
</div>
|
|
<div class="labelledUnderlined">
|
|
<label>Level</label>
|
|
<div class="inner">
|
|
<select name="attr_level">
|
|
<option value="2">Esteemed (2x upgrade)</option>
|
|
<option value="1">Friendly (1x upgrade)</option>
|
|
<option value="Neutral" selected="selected">Neutral</option>
|
|
<option value="-1">Unfriendly (1x downgrade)</option>
|
|
<option value="-2">Hostile (2x downgrade)</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="labelledUnderlined" style="width: 3in;">
|
|
<label>Notes</label>
|
|
<div class="inner">
|
|
<input type="text" name="attr_notes"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div class="inlineBlock" style="margin-right: 1em; vertical-align: top; width: 48%;">
|
|
<h1>Equipment:</h1>
|
|
<textarea name="attr_equipment" style="height: 4in;"></textarea>
|
|
</div>
|
|
<div class="inlineBlock" style="width: 48%;">
|
|
<h1>Appearance/Cutie Mark:</h1>
|
|
<textarea name="attr_appearance"></textarea>
|
|
<h1>Campaign Notes:</h1>
|
|
<textarea name="attr_campaignNotes"></textarea>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<script type="text/worker">/**
|
|
* Forces an update on a list of numerical fields, also making sure that
|
|
* any undefined fields are set to 0.
|
|
* @param {string[]} attrs
|
|
* @param {function} cb
|
|
*/
|
|
function forceUpdate(attrs, cb) {
|
|
parseAttrs(attrs, values => {
|
|
let tempValues = {};
|
|
_.each(attrs, attr => {
|
|
tempValues[attr] = -9999;
|
|
});
|
|
setAttrs(tempValues);
|
|
setAttrs(values);
|
|
});
|
|
}
|
|
|
|
var rollSteps = [
|
|
'D4',
|
|
'D6',
|
|
'D8',
|
|
'D10',
|
|
'D12',
|
|
'D20',
|
|
'{D20,D4}k1',
|
|
'{D20,D6}k1',
|
|
'{D20,D8}k1',
|
|
'{D20,D10}k1',
|
|
'{D20,D12}k1',
|
|
'{D20,D20}k1',
|
|
'{D20,D20,D4}k1',
|
|
'{D20,D20,D6}k1',
|
|
'{D20,D20,D8}k1',
|
|
'{D20,D20,D10}k1',
|
|
'{D20,D20,D12}k1',
|
|
'{D20,D20,D20}k1'
|
|
];
|
|
|
|
/**
|
|
* Gets the upgraded/downgraded dice for a roll.
|
|
* @param {string} roll
|
|
* The roll expression.
|
|
* @param {int} steps
|
|
* Positive for upgrade, negative for downgrade.
|
|
*/
|
|
function getUpDowngradedRoll(roll, steps) {
|
|
let index = rollSteps.indexOf(roll) + steps;
|
|
index = Math.max(0, Math.min(index, rollSteps.length-1));
|
|
return rollSteps[index];
|
|
}
|
|
|
|
function onChange(attrs, cb) {
|
|
attrs = _.map(attrs, attr => {
|
|
return 'change:' + attr;
|
|
}).join(' ');
|
|
on(attrs, cb);
|
|
}
|
|
|
|
function onChangeParse(attrs, cb) {
|
|
onChange(attrs, () => {
|
|
parseAttrs(attrs, cb);
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Gets the specified attributes and parses them as an integer or 0.
|
|
*/
|
|
function parseAttrs(attrs, cb) {
|
|
getAttrs(attrs, function(values) {
|
|
_.each(attrs, function(attr) {
|
|
if(_.isUndefined(values[attr]))
|
|
values[attr] = 0;
|
|
else if(!isNaN(values[attr]))
|
|
values[attr] = parseInt(values[attr]);
|
|
});
|
|
cb(values);
|
|
});
|
|
}
|
|
|
|
function updateCutieMarkTalent() {
|
|
var prefix = 'talent_cutieMark';
|
|
_updateTalents(prefix);
|
|
}
|
|
|
|
function updateRacialTalent() {
|
|
var prefix = 'talent_racial';
|
|
_updateTalents(prefix);
|
|
}
|
|
|
|
function updateTalents() {
|
|
updateCutieMarkTalent();
|
|
updateRacialTalent();
|
|
|
|
getSectionIDs('repeating_talents', ids => {
|
|
_.each(ids, id => {
|
|
var prefix = 'repeating_talents_' + id;
|
|
_updateTalents(prefix);
|
|
});
|
|
});
|
|
}
|
|
|
|
function _updateTalents(prefix) {
|
|
// If we just up-ticked or down-ticked the up/downgrade, then quit early
|
|
// after handling that.
|
|
if(_tickDowngrade(prefix) || _tickUpgrade(prefix))
|
|
return;
|
|
|
|
parseAttrs([prefix + '_dice', prefix + '_trait', prefix + '_updowngrade', 'body_equation', 'mind_equation', 'charm_equation'], values => {
|
|
var talentDice = values[prefix + '_dice'];
|
|
|
|
var trait = values[prefix + '_trait'];
|
|
var traitDice = values[trait + '_equation'] || 'D0';
|
|
|
|
var updown = parseInt(values[prefix + '_updowngrade']) || 0;
|
|
|
|
// Apply upgrades/downgrades to talent dice.
|
|
if(talentDice && updown)
|
|
talentDice = getUpDowngradedRoll(talentDice, updown);
|
|
|
|
if(talentDice === 'null')
|
|
setAttrs({
|
|
[prefix + '_equation']: 0
|
|
});
|
|
else {
|
|
//var traitDice = values[trait];
|
|
setAttrs({
|
|
[prefix + '_equation']: `{${talentDice},${traitDice}}k1`
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
function updateTraits(cb) {
|
|
_updateTrait('body', () => {
|
|
_updateTrait('mind', () => {
|
|
_updateTrait('charm', cb);
|
|
});
|
|
});
|
|
}
|
|
|
|
function _updateTrait(trait, cb) {
|
|
parseAttrs([trait, trait + '_updowngrade'], values => {
|
|
var traitDice = values[trait];
|
|
if(traitDice === 'null')
|
|
setAttrs({
|
|
[trait + '_equation']: 0
|
|
}, {}, cb);
|
|
else {
|
|
var updown = values[trait + '_updowngrade'] || 0;
|
|
if(updown)
|
|
traitDice = getUpDowngradedRoll(traitDice, updown);
|
|
setAttrs({
|
|
[trait + '_equation']: traitDice
|
|
}, {}, cb);
|
|
}
|
|
});
|
|
}
|
|
|
|
function _tickDowngrade(prefix) {
|
|
parseAttrs([prefix + '_tickdown', prefix + '_updowngrade'], values => {
|
|
let checked = !!values[prefix + '_tickdown'];
|
|
if(checked) {
|
|
updown = parseInt(values[prefix + '_updowngrade']) || 0;
|
|
|
|
setAttrs({
|
|
[prefix + '_updowngrade']: updown - 1,
|
|
[prefix + '_tickdown']: 0
|
|
});
|
|
return true;
|
|
}
|
|
return false;
|
|
});
|
|
}
|
|
|
|
function _tickUpgrade(prefix) {
|
|
parseAttrs([prefix + '_tickup', prefix + '_updowngrade'], values => {
|
|
let checked = !!values[prefix + '_tickup'];
|
|
if(checked) {
|
|
updown = parseInt(values[prefix + '_updowngrade']) || 0;
|
|
|
|
setAttrs({
|
|
[prefix + '_updowngrade']: updown + 1,
|
|
[prefix + '_tickup']: 0
|
|
});
|
|
return true;
|
|
}
|
|
return false;
|
|
});
|
|
}
|
|
|
|
// Change events
|
|
|
|
on('change:repeating_talents', evt => {
|
|
updateTalents();
|
|
});
|
|
|
|
onChange(['talent_cutieMark_dice', 'talent_cutieMark_trait', 'talent_cutieMark_updowngrade', 'talent_cutieMark_tickup', 'talent_cutieMark_tickdown'], () => {
|
|
updateCutieMarkTalent();
|
|
});
|
|
|
|
onChange(['talent_racial_dice', 'talent_racial_trait', 'talent_racial_updowngrade', 'talent_racial_tickup', 'talent_racial_tickdown'], () => {
|
|
updateRacialTalent();
|
|
});
|
|
|
|
onChange(['body_equation', 'mind_equation', 'charm_equation'], () => {
|
|
updateTalents();
|
|
});
|
|
|
|
on('sheet:opened', () => {
|
|
setAttrs({
|
|
character_sheet: 'TailsOfEquestria v1.4'
|
|
});
|
|
updateTraits(() => {
|
|
updateTalents();
|
|
});
|
|
});
|
|
|
|
// Up/downgrade tick events
|
|
onChange(['body_tickup'], () => {
|
|
_tickUpgrade('body');
|
|
});
|
|
|
|
onChange(['body_tickdown'], () => {
|
|
_tickDowngrade('body');
|
|
});
|
|
|
|
onChange(['body', 'body_updowngrade'], () => {
|
|
_updateTrait('body');
|
|
});
|
|
|
|
onChange(['mind_tickup'], () => {
|
|
_tickUpgrade('mind');
|
|
});
|
|
|
|
onChange(['mind_tickdown'], () => {
|
|
_tickDowngrade('mind');
|
|
});
|
|
|
|
onChange(['mind', 'mind_updowngrade'], () => {
|
|
_updateTrait('mind');
|
|
});
|
|
|
|
onChange(['charm_tickup'], () => {
|
|
_tickUpgrade('charm');
|
|
});
|
|
|
|
onChange(['charm_tickdown'], () => {
|
|
_tickDowngrade('charm');
|
|
});
|
|
|
|
onChange(['charm', 'charm_updowngrade'], () => {
|
|
_updateTrait('charm');
|
|
});
|
|
|
|
</script>
|
|
<rolltemplate class="sheet-rolltemplate-toe">
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>{{charName}} ⇒ {{attr}}</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>Result {{result}}</td>
|
|
</tr>{{#updowngrade}}
|
|
<tr>
|
|
<td class="updowngrade"><span>Up/Downgrade:</span><span>{{updowngrade}}</span></td>
|
|
</tr>
|
|
{{/updowngrade}}
|
|
{{#notes}}
|
|
<tr>
|
|
<td class="notes">
|
|
<div>Notes:</div>
|
|
<div>{{notes}}</div>
|
|
</td>
|
|
</tr>{{/notes}}
|
|
</tbody>
|
|
</table>
|
|
</rolltemplate> |