395 lines
17 KiB
HTML
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>
|