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

526 lines
24 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<div class="charsheetcontent">
<div class="details">
<img name="attr_character_avatar" class="portrait"><br />
<input type="text" name="attr_character_name" placeholder="Character Name" class="name" /><br />
<label class="points">Afflicted or Enlightened?</label><select name="attr_path">
<option value="Afflicted">Afflicted</option>
<option value="Enlightened">Enlightened</option>
</select>
<label class="points">Hit Points</label><input type="number" name="attr_hp" /> / <input type="number" name="attr_hp_max" /><br />
<label class="points">Advancement Points</label><input type="number" name="attr_advancement" /> / <input type="number" name="attr_advancement_max" /><br />
<label>Stress</label><div style="margin-top:2px;display:inline-block;"><radiogroup><input type="radio" value="0" name="attr_stress"></input><input type="radio" value="1" name="attr_stress"></input><input type="radio" value="2" name="attr_stress"></input><input type="radio" value="3" name="attr_stress"></input><input type="radio" value="4" name="attr_stress"></input><input type="radio" value="5" name="attr_stress"></input><input type="radio" value="6" name="attr_stress"></input></radiogroup><button type='roll' name='roll_stress' value='&{template:dotd} {{title=@{character_name}}} {{Stress=[[2d6cs>2cf<5 + @{advancement} + ?{Modifier|0}]]}}'></button></div><br />
<div class="stresslabels"><span>0</span><span>1</span><span>2</span><span>3</span><span>4</span><span>5</span><span>6</span></div>
<label>Initiative</label><button type='roll' name='roll_initiative' value='&{template:dotd} {{title=@{character_name}}} {{Initiative=[[2d6cs>2cf<5 + ?{Modifier|0} &{tracker}]]}}'></button><br />
<label>Age</label><input type="text" name="attr_age" /><br />
<label>Height</label><input type="text" name="attr_height" /><br />
<label>Weight</label><input type="text" name="attr_weight" /><br />
<label>Gender</label><input type="text" name="attr_gender" /><br />
<label>Hair</label><input type="text" name="attr_hair" /><br />
<label>Facial Hair</label><input type="text" name="attr_facial_hair" /><br />
<label>Complexion</label><input type="text" name="attr_complexion" /><br />
<label>Nationality</label><input type="text" name="attr_nationality"></input>
<label>Home City</label><input type="text" name="attr_home_city"></input>
<label>Languages</label><textarea name="attr_languages"></textarea>
<div class="inventory">
<h2>Inventory <input type="number" name="attr_inventory"></input></h2>
<label>1</label><input type="text" name="attr_inventory1"></input>
<label>2</label><input type="text" name="attr_inventory2"></input>
<label>3</label><input type="text" name="attr_inventory3"></input>
<label>4</label><input type="text" name="attr_inventory4"></input>
<label>5</label><input type="text" name="attr_inventory5"></input>
<label>6</label><input type="text" name="attr_inventory6"></input>
<label>7</label><input type="text" name="attr_inventory7"></input>
<label>8</label><input type="text" name="attr_inventory8"></input>
<label>9</label><input type="text" name="attr_inventory9"></input>
</div>
</div>
<div class="stats">
<img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Darkness%20Of%20The%20Demimonde/images/DOTD_Logo.png" alt="Darkness of the Demimonde" class="logo" />
<div class="archetypes">
<h2>Archetypes</h2>
<h3 style="display:inline-block;width:95px;">ARCHETYPE</h3><h3 style="display:inline-block;width:120px;">POINTS</h3><h3 style="display:inline-block;width:250px;">USES</h3>
<br />
<button type='roll' name='roll_acrobat' value='&{template:dotd} {{title=@{character_name}}} {{Acrobat=[[2d6cs>2cf<5 + @{acrobat} - @{stress} + ?{Modifier|0}]]}}'></button><label>ACROBAT:</label><input type="number" name='attr_acrobat' max="6"></input><label class="archetype_uses">Feats of dexterity, dodging, legerdemain, running</label>
<br />
<button type='roll' name='roll_aristocrat' value='&{template:dotd} {{title=@{character_name}}} {{Aristocrat=[[2d6cs>2cf<5 + @{aristocrat} - @{stress} + ?{Modifier|0}]]}}'></button><label>ARISTOCRAT:</label><input type="number" name='attr_aristocrat' max="6"></input><label class="archetype_uses">Talking, charming, bluffing, oratory</label>
<br />
<button type='roll' name='roll_hunter' value='&{template:dotd} {{title=@{character_name}}} {{Hunter=[[2d6cs>2cf<5 + @{hunter} - @{stress} + ?{Modifier|0}]]}}'></button><label>HUNTER:</label><input type="number" name='attr_hunter' max="6"></input><label class="archetype_uses">Ranged attacks, stealth, nature lore, survival</label>
<br />
<button type='roll' name='roll_occultist' value='&{template:dotd} {{title=@{character_name}}} {{Occultist=[[2d6cs>2cf<5 + @{occultist} - @{stress} + ?{Modifier|0}]]}}'></button><label>OCCULTIST:</label><input type="number" name='attr_occultist' max="6"></input><label class="archetype_uses">Supernatural lore, alchemy, enchantments, grimoires</label>
<br />
<button type='roll' name='roll_priest' value='&{template:dotd} {{title=@{character_name}}} {{Priest=[[2d6cs>2cf<5 + @{priest} - @{stress} + ?{Modifier|0}]]}}'></button><label>PRIEST:</label><input type="number" name='attr_priest' max="6"></input><label class="archetype_uses">Religious lore, mythology, leadership</label>
<br />
<button type='roll' name='roll_ruffian' value='&{template:dotd} {{title=@{character_name}}} {{Ruffian=[[2d6cs>2cf<5 + @{ruffian} - @{stress} + ?{Modifier|0}]]}}'></button><label>RUFFIAN:</label><input type="number" name='attr_ruffian' max="6"></input><label class="archetype_uses">Melee attacks, feats of strength, endurance</label>
<br />
<button type='roll' name='roll_scientist' value='&{template:dotd} {{title=@{character_name}}} {{Scientist=[[2d6cs>2cf<5 + @{scientist} - @{stress} + ?{Modifier|0}]]}}'></button><label>SCIENTIST:</label><input type="number" name='attr_scientist' max="6"></input><label class="archetype_uses">Scientific lore, first aid, learning, perception, insight</label>
</div>
<div class="affliction_occupation">
<div class="afflicted">
<h2>Affliction</h2>
<select name="attr_affliction">
<option value="">--Select--</option>
<option value="Created">Created</option>
<option value="Deep One Hybrid">Deep One Hybrid</option>
<option value="Demon">Demon</option>
<option value="Feyblood">Feyblood</option>
<option value="Magician">Magician</option>
<option value="Psychic">Psychic</option>
<option value="Revenant">Revenant</option>
<option value="Vampire">Vampire</option>
<option value="Werewolf">Werewolf</option>
<option value="Custom">Custom</option>
</select>
<textarea name="attr_afflictiondetails" class="standard"></textarea>
<textarea name="attr_afflictiondetailscustom" class="custom"></textarea>
<div class="weakness">
<label>Weakness</label>
<input type="text" name="attr_weakness"></input>
</div>
</div>
<div class="enlightened">
<h2>Occupation</h2>
<select name="attr_occupation">
<option value="">--Select--</option>
<option value="Academic">Academic</option>
<option value="Alienist">Alienist</option>
<option value="Athlete">Athlete</option>
<option value="Clergy">Clergy</option>
<option value="Criminal">Criminal</option>
<option value="Detective">Detective</option>
<option value="Doctor">Doctor</option>
<option value="Explorer">Explorer</option>
<option value="Gentry">Gentry</option>
<option value="Pugilist">Pugilist</option>
<option value="Soldier">Soldier</option>
<option value="Spiritualist">Spiritualist</option>
<option value="Tumbler">Tumbler</option>
<option value="Urchin">Urchin</option>
<option value="Custom">Custom</option>
</select>
<textarea name="attr_occupationdetails" class="standard"></textarea>
<textarea name="attr_occupationdetailscustom" class="custom"></textarea>
</div>
</div>
<div class="knacks">
<h2>Knacks</h2>
<select name="attr_knack1">
<option value="">--Select--</option>
<option value="Animal Handler">Animal Handler</option>
<option value="Brawler">Brawler</option>
<option value="Deadeye">Deadeye</option>
<option value="Enchanter">Enchanter</option>
<option value="Footpad">Footpad</option>
<option value="Hardy">Hardy</option>
<option value="Healer">Healer</option>
<option value="Learned">Learned</option>
<option value="Medium">Medium</option>
<option value="Nimble">Nimble</option>
<option value="Precise">Precise</option>
<option value="Savant">Savant</option>
<option value="Shapeshifter">Shapeshifter</option>
<option value="Swordplay">Swordplay</option>
<option value="Thief">Thief</option>
<option value="Vicious">Vicious</option>
<option value="Wealthy">Wealthy</option>
<option value="Custom">Custom</option>
</select>
<textarea name="attr_knack1details"></textarea>
<select name="attr_knack2" class="enlightened">
<option value="">--Select--</option>
<option value="Animal Handler">Animal Handler</option>
<option value="Brawler">Brawler</option>
<option value="Deadeye">Deadeye</option>
<option value="Enchanter">Enchanter</option>
<option value="Footpad">Footpad</option>
<option value="Hardy">Hardy</option>
<option value="Healer">Healer</option>
<option value="Learned">Learned</option>
<option value="Medium">Medium</option>
<option value="Nimble">Nimble</option>
<option value="Precise">Precise</option>
<option value="Savant">Savant</option>
<option value="Shapeshifter">Shapeshifter</option>
<option value="Swordplay">Swordplay</option>
<option value="Thief">Thief</option>
<option value="Vicious">Vicious</option>
<option value="Wealthy">Wealthy</option>
<option value="Custom">Custom</option>
</select>
<textarea name="attr_knack2details" class="enlightened"></textarea>
</div>
<div class="goals">
<h2>Goals/Personality</h2>
<textarea name="attr_goals"></textarea>
</div>
<div class="backstory">
<h2>Backstory</h2>
<textarea name="attr_backstory"></textarea>
</div>
<div class="notes">
<h2>Notes</h2>
<textarea name="attr_notes"></textarea>
</div>
</div>
</div>
<!-- END SHEET -->
<!-- ROLL TEMPLATE -->
<rolltemplate class="sheet-rolltemplate-dotd">
<div class="sheet-container">
<div class="sheet-header">
{{#title}}<div class="sheet-title">{{title}}</div>{{/title}}
{{#subtitle}}<div class="sheet-subtitle">{{subtitle}}</div>{{/subtitle}}
</div>
<div class="sheet-content">
{{#allprops() title subtitle desc color}}
<div class="sheet-key">{{key}}</div>
<div class="sheet-value">{{value}}</div>
{{/allprops() title subtitle desc color}}
{{#desc}}<div class="sheet-desc">{{desc}}</div>{{/desc}}
</div>
</div>
</rolltemplate>
<script type="text/worker">
// Initialise archetypes and other numbered attributes
on("sheet:opened", function() {
getAttrs(["acrobat","aristocrat","hunter","occultist","priest","ruffian","scientist","stress","hp","hp_max","advancement","advancement_max","inventory"], function(values) {
let acrobat = parseInt(values.acrobat)||0;
let aristocrat = parseInt(values.aristocrat)||0;
let hunter = parseInt(values.hunter)||0;
let occultist = parseInt(values.occultist)||0;
let priest = parseInt(values.priest)||0;
let ruffian = parseInt(values.ruffian)||0;
let scientist = parseInt(values.scientist)||0;
let stress = parseInt(values.stress)||0;
let hp = parseInt(values.hp)||0;
let hp_max = parseInt(values.hp_max)||10 + ruffian;
let advancement = parseInt(values.advancement)||0;
let advancement_max = parseInt(values.advancement_max)||0;
let inventory = parseInt(values.inventory)||5;
setAttrs({
"acrobat": acrobat,
"aristocrat": aristocrat,
"hunter": hunter,
"occultist": occultist,
"priest": priest,
"ruffian": ruffian,
"scientist": scientist,
"stress": stress,
"hp": hp,
"hp_max": hp_max,
"advancement": advancement,
"advancement_max": advancement_max,
"inventory": inventory
});
});
});
// Set hp max
on("change:ruffian change:knack1 change:knack2 change:path", function() {
getAttrs(["ruffian","knack1","knack2","path"], function(values) {
let ruffian = parseInt(values.ruffian)||0;
let bonushp = 0;
if (values.knack1 === "Hardy" || (values.knack2 === "Hardy" && values.path === "Enlightened")){
bonushp = 4;
}
let hp_max = parseInt(values.hp_max)||10 + ruffian + bonushp;
setAttrs({
"hp_max": hp_max
});
});
});
// Show/hide second knack, custom sections, weakness
on("sheet:opened change:path", function() {
getAttrs(["path","occupation","affliction"], function(values) {
if (values.path === "Enlightened") {
$20('.enlightened').removeClass('hidden');
$20('.afflicted').addClass('hidden');
if (values.occupation != "Custom") {
$20('.enlightened .custom').addClass('hidden');
$20('.enlightened .standard').removeClass('hidden');
}
else {
$20('.enlightened .custom').removeClass('hidden');
$20('.enlightened .standard').addClass('hidden');
}
}
else{
$20('.enlightened').addClass('hidden');
$20('.afflicted').removeClass('hidden');
if (values.affliction != "Custom") {
$20('.afflicted .custom').addClass('hidden');
$20('.afflicted .standard').removeClass('hidden');
if (values.affliction === "Feyblood" || values.affliction === "Magician" || values.affliction === "Psychic") {
$20('.afflicted .weakness').addClass('hidden');
}
else{
$20('.afflicted .weakness').removeClass('hidden');
}
}
else {
$20('.afflicted .custom').removeClass('hidden');
$20('.afflicted .standard').addClass('hidden');
}
}
});
});
// Show occupation info
on("change:occupation", function() {
getAttrs(["occupation"], function(values) {
if (values.occupation != "Custom") {
$20('.enlightened .custom').addClass('hidden');
$20('.enlightened .standard').removeClass('hidden');
let occupationdetails = GetOccupationDetails(values.occupation);
setAttrs({
"occupationdetails": occupationdetails
});
}
else {
$20('.enlightened .custom').removeClass('hidden');
$20('.enlightened .standard').addClass('hidden');
}
});
});
// Show affliction info
on("change:affliction", function() {
getAttrs(["affliction"], function(values) {
if (values.affliction != "Custom") {
$20('.afflicted .custom').addClass('hidden');
$20('.afflicted .standard').removeClass('hidden');
if (values.affliction === "Feyblood" || values.affliction === "Magician" || values.affliction === "Psychic") {
$20('.afflicted .weakness').addClass('hidden');
}
else{
$20('.afflicted .weakness').removeClass('hidden');
}
let afflictiondetails = GetAfflictionDetails(values.affliction);
setAttrs({
"afflictiondetails": afflictiondetails
});
}
else {
$20('.afflicted .custom').removeClass('hidden');
$20('.afflicted .standard').addClass('hidden');
}
});
});
// Show knack info
on("change:knack1", function() {
getAttrs(["knack1"], function(values) {
if (values.knack1 != "Custom") {
let knack1details = GetKnackDetails(values.knack1);
setAttrs({
"knack1details": knack1details
});
}
});
});
on("change:knack2", function() {
getAttrs(["knack2"], function(values) {
if (values.knack2 != "Custom") {
let knack2details = GetKnackDetails(values.knack2);
setAttrs({
"knack2details": knack2details
});
}
});
});
function GetOccupationDetails(occupationname){
let details = "";
switch(occupationname) {
case "Academic":
details = "Areas of expertise are history, literature, education, and research.";
break;
case "Alienist":
details = "Areas of expertise are science and psychology, as well as rolls made to resist psychic powers.";
break;
case "Athlete":
details = "Areas of expertise are running, swimming, leaping and other feats of athleticism.";
break;
case "Clergy":
details = "Areas of expertise are religion, sociology, and oratory.";
break;
case "Criminal":
details = "Areas of expertise are thievery, larceny, sneaking, and bluffing.";
break;
case "Detective":
details = "Areas of expertise are criminology, investigation, searching, and interrogation.";
break;
case "Doctor":
details = "Areas of expertise are first aid, biology, and medicine.";
break;
case "Explorer":
details = "Areas of expertise are the outdoors, geography, hunting, tracking, and wilderness survival.";
break;
case "Gentry":
details = "Areas of expertise are charm, leadership, and high social status.";
break;
case "Pugilist":
details = "Areas of expertise are melee attacks and endurance.";
break;
case "Soldier":
details = "Areas of expertise are ranged attacks and strategy.";
break;
case "Spiritualist":
details = "Areas of expertise are the occult, folklore, and supernatural lore, as well as rolls made to resist magic spells.";
break;
case "Tumbler":
details = "Areas of expertise are acrobatics, feats of dexterity, and dodging.";
break;
case "Urchin":
details = "Areas of expertise are street smarts, hiding, or low social status.";
break;
default:
details = "";
}
return details;
}
function GetAfflictionDetails(afflictionname){
let details = "";
switch(afflictionname) {
case "Created":
details = "You are neither man nor beast, god nor devil, but a golem; you were created through sorcery or science. Your unnatural body is uncommonly strong and resilient; you gain +1 to all Ruffian rolls and you ignore 1 point of damage every time youre injured.\n\nChoose one weakness: Youre repelled by fire; fire causes +2 damage to you; or permanently reduce your Aristocrat by 2 points.";
break;
case "Deep One Hybrid":
details = "You have an ancestral tie to the sea and the ancient folk who live there. You are amphibious, a master swimmer, and can breathe underwater indefinitely. Gain +2 to any Action Rolls made while in a body of water. On land, gain +1 to Ruffian rolls, but lose 1 point from initiative, Aristocrat, and Acrobat rolls.\n\nChoose a weakness: You must rest in water to recover HP; fire causes +2 damage to you; or permanently reduce your Acrobat by 2 points.";
break;
case "Demon":
details = "You have some connection to Hell; you might be an escaped denizen of that place masquerading as a human or a human suffering from possession. Your attacks cause Splatter on a natural 11 or 12; when you resist magic, roll 3d6 and resolve the roll with the two highest dice.\n\nChoose a weakness: Holy water and blessed items cause 1d6 damage to you; holy symbols repel you; or permanently reduce your Priest by 2 points.";
break;
case "Feyblood":
details = "Somewhere in your lineage, your ancestors mixed with the fey people of the Otherworld—elfs, goblins, faeries, and their ilk. Their resurfaced traits allow you to change into one type of small land animal (no larger than a fox). By making a successful Occultist roll, you can cast magical spells associated with nature, animals, the weather, and illusion, according to the rules on page 14. When you fail a roll, reduce your Occultist points by 1; when they reach 0, you cant cast any more spells. All of your Occultist points are recovered after you rest.";
break;
case "Magician":
details = "You practice the arts of sorcery. By making a successful Occultist roll, you can cast a magical spell associated with pain, necromancy, divination, the elements, healing, light or darkness, protection, weather, or the summoning of supernal or infernal assistance. Follow the spellcasting rules found on page 14. When you fail a roll, reduce your Occultist points by 1; when they reach 0, you cant cast any more spells. All of your Occultist points are recovered after you rest.";
break;
case "Psychic":
details = "By making a successful Scientist roll, you can perform feats of the mind. You might detect supernatural presences, employ psychometry, send short telepathic messages, etc. Follow the rules on page 14 to use psychic powers. When you fail a roll, reduce your Scientist points by 1; when they are 0, you cant use any more psychic powers. All of your Scientist points are recovered after you rest.";
break;
case "Revenant":
details = "You returned from the dead to perform some task or service unfulfilled in life. You are one with shadow, can see in darkness, and can use your action to meld with it. When you do, increase your Hunter rolls by +2 and decrease all other archetypes rolls by 1. When you switch back, all archetype rolls return to normal.\n\nChoose a weakness: You cannot enter sunlight; you are compelled to perform a task; or permanently reduce your Aristocrat and Scientist by 1 point each.";
break;
case "Vampire":
details = "You are an unliving creature of the night and must drink blood in order to survive. You can see in darkness without hindrance. You regain 4 HP after killing an opponent, if you choose to drink blood. Reduce all archetypes rolls by 1 when in daylight.\n\nChoose a weakness: Holy water and blessed items cause 1d6 damage to you; you cannot cross running water; or you are repelled by garlic and mirrors.";
break;
case "Werewolf":
details = "You suffer from the dreaded curse of lycanthropy and can shift into a monstrous half-beast as an action. When you do, increase Ruffian rolls by +2 and decrease all other archetypes rolls by 1. When you switch back, all archetypes return to normal.\n\nChoose a weakness: Silver weapons inflict +2 damage to you; your curse is uncontrollable during the full moon; or normal canines despise you and will bark, snap, and even attack you.";
break;
default:
details = "";
}
return details;
}
function GetKnackDetails(knackname){
let details = "";
switch(knackname) {
case "Animal Handler":
details = "Gain +1 to any rolls associated with riding horses, driving coaches, or otherwise handling animals.";
break;
case "Brawler":
details = "Gain +1 when making unarmed melee attacks.";
break;
case "Deadeye":
details = "Gain +1 when fighting with a ranged weapon.";
break;
case "Enchanter":
details = "As an action, you can reduce your Occultist points. For every point you reduce, you may increase another archetype by that number of points. You may affect your own archetypes or those of another character. Regain lost Occultist points after a rest.";
break;
case "Footpad":
details = "Gain 1 point to all Hunter rolls to hide and sneak.";
break;
case "Hardy":
details = "You gain +4 hit points.";
break;
case "Healer":
details = "When you perform first aid, you heal someone 3 HP, instead of 1.";
break;
case "Learned":
details = "Gain +1 to Occultist, Scientist, and Priest rolls.";
break;
case "Medium":
details = "You can see invisible spirits. As an action, you can make an Occultist roll to sense magic and the supernatural in your immediate area. If your roll fails, reduce your Occultist points by 1 until you rest.";
break;
case "Nimble":
details = "Gain +1 on Acrobat rolls made to balance, dodge, and race.";
break;
case "Precise":
details = "You can spend 1 AP to roll 1d6 and add the result to any roll.";
break;
case "Savant":
details = "You have a minor psychic sixth sense and gain +1 to initiative roles. As an action you can make an Scientist roll to send a short telepathic message to someone in your immediate area. If your roll fails, reduce your Scientist points by 1 until you rest.";
break;
case "Shapeshifter":
details = "Choose one of the following animals: Bat, Cat, Fox, Owl, Rat, Raven, or Wolf. Once per day, you can change into that animal and back into your normal form.";
break;
case "Swordplay":
details = "Gain +1 to melee attack rolls made with a melee weapon, sword or otherwise.";
break;
case "Thief":
details = "Gain +1 to rolls made to steal, open locks, and sneak.";
break;
case "Vicious":
details = "Gain +2 damage to Splatter.";
break;
case "Wealthy":
details = "You have enough money to buy most anything. If a purchase is in question, the GM can set a DS for you to beat with an Aristocrat roll.";
break;
default:
details = "";
}
return details;
}
</script>