Files
roll20-character-sheets-tester/Adventures on a Dime/adventures-on-a-dime.html
T
2020-05-29 10:47:43 -04:00

395 lines
17 KiB
HTML

<input type="hidden" name="attr_sheet" value="character">
<div class="header">
<ul>
<li data-i18n="written-by-brian-tyrrell">Written by Brian Tyrrell</li>
<li data-i18n="edited-by-vi-huntsman">Edited by Vi Huntsman</li>
<li data-i18n="roll20-by-wes-baker">Roll20 by Wes Baker</li>
<li data-i18n="copyright-dungeons-on-a-dime">Copyright © Dungeons on a Dime 2020</li>
</ul>
<img src="https://i.postimg.cc/gcQPFxKY/AOAD-roll20-Banner.jpg" />
</div>
<div class="grid-two-columns">
<div>
<div class="adventurer">
<h1 data-i18n="your-adventurer">Your Adventurer</h1>
<div class="outer-block">
<h2 data-i18n="adventurers-abilities">Adventurer's Abilities</h2>
<div class="inner-bubble">
<label class="character-name">
<span data-i18n="my-name-is">My name is</span>
<input type="text" name="attr_character_name" />
<span data-i18n="and-i-am">and I am:</span>
</label>
<div class="attributes">
<div class="attribute">
<input readonly type="text" name="attr_cunning_characteristic" />
<h3 data-i18n="cunning">Cunning</h3>
<label>
<span data-i18n="base">Base</span>
<select name="attr_cunning_base">
<option>D4</option>
<option>D6</option>
<option>D8</option>
<option>D10</option>
<option>D12</option>
</select>
</label>
<label>
<span data-i18n="current">Current</span>
<select name="attr_cunning_current">
<option>D4</option>
<option>D6</option>
<option>D8</option>
<option>D10</option>
<option>D12</option>
</select>
<button type="roll"
value="&{template:ability} {{ability=Cunning}} {{name=@{character_name}}} {{roll=[[@{cunning_current}]]}}"></button>
</label>
</div>
<div class="attribute">
<input readonly type="text" name="attr_vigour_characteristic" />
<h3 data-i18n="vigour">Vigour</h3>
<label>
<span data-i18n="base">Base</span>
<select name="attr_vigour_base">
<option>D4</option>
<option>D6</option>
<option>D8</option>
<option>D10</option>
<option>D12</option>
</select>
</label>
<label>
<span data-i18n="current">Current</span>
<select name="attr_vigour_current">
<option>D4</option>
<option>D6</option>
<option>D8</option>
<option>D10</option>
<option>D12</option>
</select>
<button type="roll"
value="&{template:ability} {{ability=Vigour}} {{name=@{character_name}}} {{roll=[[@{vigour_current}]]}}"></button>
</label>
</div>
<div class="attribute">
<input readonly type="text" name="attr_willpower_characteristic" />
<h3 data-i18n="willpower">Willpower</h3>
<label>
<span data-i18n="base">Base</span>
<select name="attr_willpower_base">
<option>D4</option>
<option>D6</option>
<option>D8</option>
<option>D10</option>
<option>D12</option>
</select>
</label>
<label>
<span data-i18n="current">Current</span>
<select name="attr_willpower_current">
<option>D4</option>
<option>D6</option>
<option>D8</option>
<option>D10</option>
<option>D12</option>
</select>
<button type="roll"
value="&{template:ability} {{ability=Willpower}} {{name=@{character_name}}} {{roll=[[@{willpower_current}]]}}"></button>
</label>
</div>
</div>
</div>
</div>
<div class="outer-block inline-header">
<h2 data-i18n="injuries">Injuries</h2>
<div class="inner-bubble">
<input type="text" name="attr_injuries" />
</div>
</div>
</div>
<div class="inventory">
<h1 data-i18n="inventory">Inventory</h1>
<div class="grid-two-columns">
<div>
<div class="outer-block">
<h2 data-i18n="standard-gear">Standard Gear</h2>
<div class="inner-bubble">
<input type="text" name="attr_tool_1" placeholder="Tool 1" data-i18n-placeholder="tool-1">
<input type="text" name="attr_tool_2" placeholder="Tool 2" data-i18n-placeholder="tool-2">
<input type="text" name="attr_tool_3" placeholder="Tool 3" data-i18n-placeholder="tool-3">
<input type="text" name="attr_tool_4" placeholder="Tool 4" data-i18n-placeholder="tool-4">
<input type="text" name="attr_weapon" placeholder="Weapon" data-i18n-placeholder="weapon">
<input type="text" name="attr_packed lunch" placeholder="Packed Lunch"
data-i18n-placeholder="packed-lunch">
<input type="text" name="attr_money" placeholder="Money" data-i18n-placeholder="money">
<input type="text" name="attr_light_source" placeholder="Light Source"
data-i18n-placeholder="light-source">
<input type="text" name="attr_backpack" placeholder="Backpack" data-i18n-placeholder="backpack">
</div>
</div>
</div>
<div>
<div class="outer-block">
<div class="split-header">
<h2 class="with-aside" data-i18n="carried-items">Carried Items</h2>
<label>
<span data-i18n="max">Max:</span>
<input readonly type="text" name="attr_max_carried_items" value="4" />
</label>
</div>
<div class="inner-bubble">
<fieldset class="repeating_carrieditems">
<input type="text" name="attr_carried_item" placeholder="Carried Item"
data-i18n-placeholder="carried-item">
</fieldset>
</div>
</div>
<div class="outer-block">
<h2 data-i18n="pocket-items">Pocket Items</h2>
<div class="inner-bubble">
<fieldset class="repeating_pocketitems">
<input type="text" name="attr_pocket_item" placeholder="Pocket Item"
data-i18n-placeholder="pocket-item">
</fieldset>
</div>
</div>
</div>
</div>
</div>
</div>
<div>
<div class="jobs-and-features">
<h1 data-i18n="jobs-and-features">Jobs and Features</h1>
<div class="grid-two-columns">
<fieldset class="repeating_jobfeature">
<div class="outer-block job-or-feature">
<select name="attr_job_or_feature">
<option data-i18n="job">Job</option>
<option data-i18n="feature">Feature</option>
</select>
<div class="inner-bubble">
<input type="hidden" name="attr_job_or_feature_toggle" value="job" class="job-or-feature-toggle">
<div class="job">
<input type="text" name="attr_job_title" placeholder="Job Title" data-i18n-placeholder="job-title">
<input type="text" name="attr_job_skill_1" placeholder="Skill 1" data-i18n-placeholder="skill-1">
<input type="text" name="attr_job_skill_2" placeholder="Skill 2" data-i18n-placeholder="skill-2">
<input type="text" name="attr_job_skill_3" placeholder="Skill 3" data-i18n-placeholder="skill-3">
<input type="text" name="attr_job_trait" placeholder="Trait" data-i18n-placeholder="trait">
<input type="text" name="attr_job_flaw" placeholder="Flaw" data-i18n-placeholder="flaw">
</div>
<div class="feature">
<div class="feature-line">
<select name="attr_feature_1_type">
<option data-i18n="skill">Skill</option>
<option data-i18n="trait">Trait</option>
<option data-i18n="flaw">Flaw</option>
</select>
<input type="text" name="attr_feature_1" placeholder="Feature 1" data-i18n-placeholder="Feature 1">
</div>
<div class="feature-line">
<select name="attr_feature_2_type">
<option data-i18n="skill">Skill</option>
<option data-i18n="trait">Trait</option>
<option data-i18n="flaw">Flaw</option>
</select>
<input type="text" name="attr_feature_2" placeholder="Feature 2" data-i18n-placeholder="Feature 2">
</div>
<div class="feature-line">
<select name="attr_feature_3_type">
<option data-i18n="skill">Skill</option>
<option data-i18n="trait">Trait</option>
<option data-i18n="flaw">Flaw</option>
</select>
<input type="text" name="attr_feature_3" placeholder="Feature 3" data-i18n-placeholder="Feature 3">
</div>
<div class="feature-line">
<select name="attr_feature_4_type">
<option data-i18n="skill">Skill</option>
<option data-i18n="trait">Trait</option>
<option data-i18n="flaw">Flaw</option>
</select>
<input type="text" name="attr_feature_4" placeholder="Feature 4" data-i18n-placeholder="Feature 4">
</div>
<div class="feature-line">
<select name="attr_feature_5_type">
<option data-i18n="skill">Skill</option>
<option data-i18n="trait">Trait</option>
<option data-i18n="flaw">Flaw</option>
</select>
<input type="text" name="attr_feature_5" placeholder="Feature 5" data-i18n-placeholder="Feature 5">
</div>
<div class="feature-line">
<select name="attr_feature_6_type">
<option data-i18n="skill">Skill</option>
<option data-i18n="trait">Trait</option>
<option data-i18n="flaw">Flaw</option>
</select>
<input type="text" name="attr_feature_6" placeholder="Feature 6" data-i18n-placeholder="Feature 6">
</div>
</div>
</div>
</div>
</fieldset>
</div>
</div>
<div class="training">
<h1 data-i18n="training">Training</h1>
<div class="grid-two-columns">
<div>
<div class="outer-block">
<h2 data-i18n="desired-job">Desired Job</h2>
<div class="inner-bubble">
<input type="text" name="attr_desired_job_skill_1" placeholder="New Skill 1"
data-i18n-placeholder="new-skill-1">
<input type="text" name="attr_desired_job_skill_2" placeholder="New Skill 2"
data-i18n-placeholder="new-skill-2">
<input type="text" name="attr_desired_job_skill_3" placeholder="New Skill 3"
data-i18n-placeholder="new-skill-3">
<input type="text" name="attr_desired_job_trait" placeholder="New Trait"
data-i18n-placeholder="new-trait">
<input type="text" name="attr_desired_job_flaw" placeholder="New Flaw" data-i18n-placeholder="new-flaw">
</div>
</div>
</div>
<div class="rules">
<h2 data-i18n="sessions-without-skills">Sessions without Skills</h2>
<p data-i18n="sessions-without-skills-paragraph-1">During each sessionof play of AOAD, you should get the
chance to learn a new Skill for a Job you are
training to get.</p>
<p data-i18n="sessions-without-skills-paragraph-2">Mark sessions played where you haven't learnt a skill
below, which you can make up for later with the
Narrator.</p>
<div class="session-without-skills">
<input type="checkbox" name="attr_session_without_skill_1" />
<input type="checkbox" name="attr_session_without_skill_2" />
<input type="checkbox" name="attr_session_without_skill_3" />
<input type="checkbox" name="attr_session_without_skill_4" />
<input type="checkbox" name="attr_session_without_skill_5" />
<input type="checkbox" name="attr_session_without_skill_6" />
<input type="checkbox" name="attr_session_without_skill_7" />
<input type="checkbox" name="attr_session_without_skill_8" />
<input type="checkbox" name="attr_session_without_skill_9" />
<input type="checkbox" name="attr_session_without_skill_10" />
</div>
</div>
</div>
</div>
</div>
</div>
<rolltemplate class="sheet-rolltemplate-ability">
<div>
<h1>{{name}} / {{ability}}</h1>
<div class="inner">
<div class="row">
<div class="label" data-i18n="roll">Roll</div>
<div class="result">{{roll}}</div>
</div>
<div class="row">
<div class="label" data-i18n="result">Result</div>
<!-- Success -->
{{#rollGreater() roll 3}}
<div class="result result-success">
{{#rollWasCrit() roll}}<strong data-i18n="critical">Critical</strong>{{/rollWasCrit() roll}}
<span data-i18n="success">Success</span>
</div>
{{/rollGreater() roll 3}}
<!-- Complication -->
{{#rollBetween() roll 2 3}}
<div class="result result-complication" data-i18n="complication">Complication</div>
{{/rollBetween() roll 2 3}}
<!-- Hijinx -->
{{#rollLess() roll 2}}
<div class="result result-hijinx" data-i18n="hijinx">Hijinx</div>
{{/rollLess() roll 2}}
</div>
{{#rollGreater() roll 3}}
<div class="description">
<p data-i18n="description-success">You do as well as you can. The Narrator describes how successful you are.</p>
</div>
{{/rollGreater() roll 3}}
{{#rollBetween() roll 2 3}}
<div class="description">
<p data-i18n="description-complication">You barely manage to pull it off, but not without consequence. The
Narrator describes how the situation
becomes more complicated.</p>
</div>
{{/rollBetween() roll 2 3}}
{{#rollLess() roll 2}}
<div class="description">
<p data-i18n="description-hijinx">Something goes terribly wrong. The Narrator describes how things go awry, and
hijinx may follow.</p>
</div>
{{/rollLess() roll 2}}
{{#rollWasCrit() roll}}
<div class="description">
<p data-i18n="description-critical-success">You do better than expected! The Narrator describes how things go in
your favor.</p>
</div>
{{/rollWasCrit() roll}}
</div>
</div>
</rolltemplate>
<script type="text/worker">
// Autofill characteristics
const characteristics = {
cunning: { d4: 'Foolish', d6: 'Cautious', d8: 'Resourceful', d10: 'Sly', d12: 'Devious'},
vigour: { d4: 'Frail', d6: 'Healthy', d8: 'Fit', d10: 'Hardy', d12: 'Enduring'},
willpower: { d4: 'Fearful', d6: 'Present', d8: 'Confident', d10: 'Charismatic', d12: 'Heroic'}
};
Object.keys(characteristics).forEach(characteristic => {
on(`change:${characteristic}_base`, function(event) {
const value = event.newValue;
const newCharacteristic = characteristics[characteristic][value.toLowerCase()];
setAttrs({ [`${characteristic}_characteristic`]: newCharacteristic })
});
});
// Ensure all repeating sections start with something
on('sheet:opened', function() {
const map = {
carrieditems: ["carried_item"],
pocketitems: ["pocket_item"],
jobfeature: ["job_or_feature"]
}
for (const [section, fields] of Object.entries(map)) {
getSectionIDs(section, function(ids) {
if (ids.length === 0) {
const rowId = generateRowID();
const newRow = {};
fields.forEach(field => {
newRow[`repeating_${section}_${rowId}_${field}`] = "";
})
setAttrs(newRow);
}
});
}
})
// Toggle the hidden input to display the correct contents
on("change:repeating_jobfeature:job_or_feature", function(eventInfo) {
if (eventInfo.newValue) {
setAttrs({
repeating_jobfeature_job_or_feature_toggle: eventInfo.newValue.toLowerCase()
});
} else {
setAttrs({ repeating_jobfeature_job_or_feature_toggle: "job" });
}
})
on("change:vigour_base", function(event) {
const max = parseInt(event.newValue.substr(1), 10);
setAttrs({ max_carried_items: max })
})
</script>