mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-30 03:40:32 +00:00
Alternate sheet for Heart: The City Beneath (#6726)
* Halo_Mythic * major updates to Heart sheet--enough to be distinct option? * updating sheet image * internationalization prep updates * internationalization prep updates * renaming & aesthetic reformatting of equipment and resource repeating fields section * fixing minor formatting error to line up repeating fields * minor base translation label update
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 215 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 99 KiB |
@@ -0,0 +1,191 @@
|
||||
@import url('https://fonts.googleapis.com/css?family=Staatliches&display=swap');
|
||||
|
||||
.sheet-container {
|
||||
background-image: url("https://raw.githubusercontent.com/brocktopus/roll20-character-sheets/heart/Heart-the-City-Beneath-mk2/Heart-bg.png");
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
.sheet-container div {
|
||||
padding: 2px;
|
||||
margin: 2px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
|
||||
button[type="roll"] {
|
||||
width: 80%;
|
||||
height: 50%;
|
||||
}
|
||||
|
||||
img {
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
input[type="text"] {
|
||||
margin-top: .01;
|
||||
line-height: .8;
|
||||
margin-right: 0;
|
||||
padding-right: 0;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
p {
|
||||
padding: .5em;
|
||||
}
|
||||
|
||||
textarea {
|
||||
width: 100%;
|
||||
height: 60px;
|
||||
}
|
||||
|
||||
input[type="text"], select, textarea {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
|
||||
/* Adjusting repeating-item button placement */
|
||||
|
||||
|
||||
/* Font & text color-related formatting */
|
||||
|
||||
h1, h2, h3, h4, h5, h6, .sheet-redtext, .sheet-pinktext, .sheet-whiteonredtext {
|
||||
text-transform: uppercase;
|
||||
font-family: 'Staatliches', cursive;
|
||||
}
|
||||
|
||||
.sheet-redtext {
|
||||
font-weight: bold;
|
||||
color: #a00a03;
|
||||
}
|
||||
|
||||
span.sheet-redtext {
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
.sheet-redtext input[type="text"] {
|
||||
background: transparent;
|
||||
border: 0;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.sheet-pinktext {
|
||||
color: #c33d37;
|
||||
}
|
||||
|
||||
.sheet-whiteonredtext {
|
||||
color: white;
|
||||
background-color: #a00a03;
|
||||
padding: .2em;
|
||||
}
|
||||
|
||||
.sheet-rightalign {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.sheet-small-text p {
|
||||
font-size: x-small;
|
||||
}
|
||||
|
||||
|
||||
/* Flex displays */
|
||||
|
||||
.sheet-flex {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.sheet-flex-align-start {
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
.sheet-flex-around {
|
||||
justify-content: space-around;
|
||||
}
|
||||
|
||||
.sheet-flex-between {
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.sheet-flex-center {
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.sheet-flex-end {
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.sheet-flex-even {
|
||||
justify-content: space-evenly;
|
||||
}
|
||||
|
||||
.sheet-flex-start {
|
||||
justify-content: flex-start;
|
||||
}
|
||||
|
||||
.sheet-flex-grow-2 {
|
||||
flex-grow: 2;
|
||||
}
|
||||
|
||||
textarea.sheet-flex-grow-2 {
|
||||
height: 15px;
|
||||
}
|
||||
|
||||
|
||||
/* Width-related formatting */
|
||||
|
||||
.sheet-width100 {
|
||||
width: 100px;
|
||||
max-width: 100px;
|
||||
}
|
||||
|
||||
.sheet-twentywide {
|
||||
display: inline-block;
|
||||
max-width: 18%;
|
||||
width: 18%;
|
||||
}
|
||||
|
||||
.sheet-quarterwide {
|
||||
display: inline-block;
|
||||
max-width: 23%;
|
||||
width: 23%;
|
||||
}
|
||||
|
||||
.sheet-thirdwide {
|
||||
display: inline-block;
|
||||
max-width: 33%;
|
||||
width: 33%;
|
||||
}
|
||||
|
||||
.sheet-fortywide {
|
||||
display: inline-block;
|
||||
max-width: 37%;
|
||||
width: 37%;
|
||||
}
|
||||
|
||||
.sheet-halfwide {
|
||||
display: inline-block;
|
||||
max-width: 46%;
|
||||
width: 46%;
|
||||
}
|
||||
|
||||
.sheet-threequarterswide {
|
||||
display: inline-block;
|
||||
max-width: 80%;
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
.sheet-fullwide {
|
||||
display: inline-block;
|
||||
max-width: 96%;
|
||||
width: 96%;
|
||||
}
|
||||
|
||||
|
||||
/* Miscellaneous formatting */
|
||||
|
||||
.sheet-inline-block {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.sheet-no-display {
|
||||
display: none;
|
||||
}
|
||||
@@ -0,0 +1,263 @@
|
||||
<div class="container">
|
||||
|
||||
<div class="flex flex-around">
|
||||
<div class="halfwide">
|
||||
<img src="https://raw.githubusercontent.com/brocktopus/roll20-character-sheets/heart/Heart-the-City-Beneath-mk2/Heart-logo-transparent.png" alt="Heart: The City Beneath logo" />
|
||||
<div class="flex flex-between">
|
||||
<span class="redtext width100" data-i18n="name-label">Name</span> <input type="text" class="flex-grow-2" name="attr_character_name">
|
||||
</div>
|
||||
<div class="flex flex-between">
|
||||
<span class="redtext width100" data-i18n="class-label">Class</span> <input type="text" class="flex-grow-2" name="attr_class">
|
||||
</div>
|
||||
<div class="flex flex-between">
|
||||
<span class="redtext width100" data-i18n="calling-label">Calling</span> <input type="text" class="flex-grow-2" name="attr_calling">
|
||||
</div>
|
||||
<div class="flex flex-between">
|
||||
<span class="redtext width100" data-i18n="ancestry-label">Ancestry</span> <input type="text" class="flex-grow-2" name="attr_ancestry">
|
||||
</div>
|
||||
</div>
|
||||
<div class="halfwide flex flex-even">
|
||||
<div class="thirdwide flex flex-end">
|
||||
<h3 class="redtext" data-i18n="stress-label">Stress</h3>
|
||||
<div class="flex flex-between">
|
||||
<span class="redtext" data-i18n="blood-label">Blood</span> <input type="number" placeholder="0" min="0" max="10" name="attr_blood_stress"/>
|
||||
</div>
|
||||
<div class="flex flex-between">
|
||||
<span class="redtext" data-i18n="mind-label">Mind</span> <input type="number" placeholder="0" min="0" max="10" name="attr_mind_stress"/>
|
||||
</div>
|
||||
<div class="flex flex-between">
|
||||
<span class="redtext" data-i18n="echo-label">Echo</span> <input type="number" placeholder="0" min="0" max="10" name="attr_echo_stress"/>
|
||||
</div>
|
||||
<div class="flex flex-between">
|
||||
<span class="redtext" data-i18n="fortune-label">Fortune</span> <input type="number" placeholder="0" min="0" max="10" name="attr_fortune_stress"/>
|
||||
</div>
|
||||
<div class="flex flex-between">
|
||||
<span class="redtext" data-i18n="supplies-label">Supplies</span> <input type="number" placeholder="0" min="0" max="10" name="attr_supplies_stress"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="quarterwide">
|
||||
<h3 class="redtext" data-i18n="protection-label">Protection</h3>
|
||||
<div>
|
||||
<input type="number" placeholder="0" min="0" max="5" name="attr_blood_protection"/>
|
||||
</div>
|
||||
<div>
|
||||
<input type="number" placeholder="0" min="0" max="5" name="attr_mind_protection"/>
|
||||
</div>
|
||||
<div>
|
||||
<input type="number" placeholder="0" min="0" max="5" name="attr_echo_protection"/>
|
||||
</div>
|
||||
<div>
|
||||
<input type="number" placeholder="0" min="0" max="5" name="attr_fortune_protection"/>
|
||||
</div>
|
||||
<div>
|
||||
<input type="number" placeholder="0" min="0" max="5" name="attr_supplies_protection"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="thirdwide flex flex-even">
|
||||
<h4 class="redtext" data-i18n="clearstress-label">Clear Stress</h4>
|
||||
<div>
|
||||
<select name="attr_clearedstress" class="fullwide">
|
||||
<option value="blood" data-i18n="blood-label" selected>Blood</option>
|
||||
<option value="mind" data-i18n="mind-label">Mind</option>
|
||||
<option value="echo" data-i18n="echo-label">Echo</option>
|
||||
<option value="fortune" data-i18n="fortune-label">Fortune</option>
|
||||
<option value="supplies" data-i18n="supplies-label">Supplies</option>
|
||||
<option value="all" data-i18n="all-stress-label">All Stress</option>
|
||||
</select>
|
||||
<button type="action" title="Clear Stress" name="act_clear_stress">Clear</button>
|
||||
</div>
|
||||
<h4 class="redtext" data-i18n="fallout-test-label">Fallout Test</h4>
|
||||
<div>
|
||||
<select name="attr_falloutstress" class="fullwide">
|
||||
<option value="@{blood_stress}" data-i18n="blood-label" selected>Blood</option>
|
||||
<option value="@{mind_stress}" data-i18n="mind-label">Mind</option>
|
||||
<option value="@{echo_stress}" data-i18n="echo-label">Echo</option>
|
||||
<option value="@{fortune_stress}" data-i18n="fortune-label">Fortune</option>
|
||||
<option value="@{supplies_stress}" data-i18n="supplies-label">Supplies</option>
|
||||
</select>
|
||||
<button type="roll" title="Receive fallout?" name="roll_fallout" value="/em @{check-fallout-msg}: [[1d12 > @{falloutstress}]] vs. @{falloutstress}">Fallout</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-even">
|
||||
<div>
|
||||
<button type="roll" title="roll dice" name="roll_normal" value="/roll ?{@{howmanydice-msg}|1}d10kl[[?{@{howmanydice-msg}|1}-?{Difficulty|Standard, 0|Risky, 1|Dangerous, 2}]]dl[[?{@{howmanydice-msg}|1}-?{Difficulty|Standard, 0|Risky, 1|Dangerous, 2}-1]]"><span data-i18n="roll-label">Roll</span></button>
|
||||
</div>
|
||||
<div class="small-text">
|
||||
<p>
|
||||
<span data-i18n="build-pool-label">Build dice pool: 1D + Skill + Domain + Mastery + Knack</span>
|
||||
<br /><b><span data-i18n="standard-msg">Standard</span>:</b> <span data-i18n="standard-pool-label">use highest result</span>
|
||||
<br /><b><span data-i18n="risky-msg">Risky</span>:</b> <span data-i18n="risky-pool-label">drop highest result, use second-highest result</span>
|
||||
<br /><b><span data-i18n="dangerous-msg">Dangerous</span>:</b> <span data-i18n="dangerous-pool-label">drop 2 highest results, use third-highest result</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-around">
|
||||
<div class="halfwide">
|
||||
<div>
|
||||
<h3 class="redtext" data-i18n="active-beats-label">Active Beats</h3>
|
||||
<fieldset class="repeating_activebeats">
|
||||
<input type="text" name="attr_beats" class="threequarterswide" />
|
||||
</fieldset>
|
||||
</div>
|
||||
<div class="flex-even flex-align-start">
|
||||
<h3 class="redtext" data-i18n="equipment-label">Equipment</h3>
|
||||
<div class="flex flex-even">
|
||||
<h4 class="flex-grow-2 fortywide" data-i18n="name-label">Name</h4>
|
||||
<h4 class="flex-grow-2 fortywide" data-i18n="description-label">Domain/Tags</h4>
|
||||
<h4 class="inline-block" data-i18n="die-label">Die</h4>
|
||||
</div>
|
||||
<fieldset class="repeating_equipment flex flex-even flex-align-start">
|
||||
<textarea name="attr_equipment_name" class="flex-grow-2 fortywide"></textarea>
|
||||
<textarea name="attr_equipment_desc" class="flex-grow-2 fortywide"></textarea>
|
||||
<select name="attr_equipment_die" class="twentywide">
|
||||
<option value="0" selected>None</option>
|
||||
<option value="2">d2</option>
|
||||
<option value="4">d4</option>
|
||||
<option value="6">d6</option>
|
||||
<option value="8">d8</option>
|
||||
<option value="10">d10</option>
|
||||
<option value="12">d12</option>
|
||||
<option value="20">d20</option>
|
||||
</select>
|
||||
</fieldset>
|
||||
</div>
|
||||
<div class="flex-even flex-align-start">
|
||||
<h3 class="redtext" data-i18n="resources-label">Resources</h3>
|
||||
<div class="flex flex-even">
|
||||
<h4 class="flex-grow-2 fortywide" data-i18n="name-label">Name</h4>
|
||||
<h4 class="flex-grow-2 fortywide" data-i18n="description-label">Domain/Tags</h4>
|
||||
<h4 class="inline-block" data-i18n="die-label">Die</h4>
|
||||
</div>
|
||||
<fieldset class="repeating_resources flex flex-even flex-align-start">
|
||||
<textarea name="attr_resource_name" class="flex-grow-2 fortywide"></textarea>
|
||||
<textarea name="attr_resource_desc" class="flex-grow-2 fortywide"></textarea>
|
||||
<select name="attr_resource_die" class="twentywide">
|
||||
<option value="0" selected>None</option>
|
||||
<option value="2">d2</option>
|
||||
<option value="4">d4</option>
|
||||
<option value="6">d6</option>
|
||||
<option value="8">d8</option>
|
||||
<option value="10">d10</option>
|
||||
<option value="12">d12</option>
|
||||
<option value="20">d20</option>
|
||||
</select>
|
||||
</fieldset>
|
||||
</div>
|
||||
<div class="4colrow">
|
||||
<div class="col">
|
||||
<h4 class="redtext" data-i18n="skills-label">Skills</h4>
|
||||
<div><input type="checkbox" name="attr_skillCompel" value="1" /><span>Compel</span></div>
|
||||
<div><input type="checkbox" name="attr_skillDelve" value="1" /><span>Delve</span></div>
|
||||
<div><input type="checkbox" name="attr_skillDiscern" value="1"/><span>Discern</span></div>
|
||||
<div><input type="checkbox" name="attr_skillEndure" value="1" /><span>Endure</span></div>
|
||||
<div><input type="checkbox" name="attr_skillEvade" value="1" /><span>Evade</span></div>
|
||||
<div><input type="checkbox" name="attr_skillHunt" value="1" /><span>Hunt</span></div>
|
||||
<div><input type="checkbox" name="attr_skillKill" value="1" /><span>Kill</span></div>
|
||||
<div><input type="checkbox" name="attr_skillMend" value="1" /><span>Mend</span></div>
|
||||
<div><input type="checkbox" name="attr_skillSneak" value="1" /><span>Sneak</span></div>
|
||||
</div>
|
||||
<div class="quarterwide">
|
||||
<h4 class="pinktext" data-i18n="knacks-label">Knacks</h4>
|
||||
<input type="text" /><br />
|
||||
<input type="text" /><br />
|
||||
<input type="text" /><br />
|
||||
<input type="text" /><br />
|
||||
<input type="text" /><br />
|
||||
<input type="text" /><br />
|
||||
<input type="text" /><br />
|
||||
<input type="text" /><br />
|
||||
<input type="text" /><br />
|
||||
</div>
|
||||
<div class="col">
|
||||
<h4 class="redtext" data-i18n="domains-label">Domains</h4>
|
||||
<div><input type="checkbox" name="attr_domainCursed" value="1" /><span>Cursed</span></div>
|
||||
<div><input type="checkbox" name="attr_domainDesolate" value="1" /><span>Desolate</span></div>
|
||||
<div><input type="checkbox" name="attr_domainHaven" value="1" /><span>Haven</span></div>
|
||||
<div><input type="checkbox" name="attr_domainOccult" value="1" /><span>Occult</span></div>
|
||||
<div><input type="checkbox" name="attr_domainReligion" value="1" /><span>Religion</span></div>
|
||||
<div><input type="checkbox" name="attr_domainTechnology" value="1"/><span>Technology</span></div>
|
||||
<div><input type="checkbox" name="attr_domainWarren" value="1" /><span>Warren</span></div>
|
||||
<div><input type="checkbox" name="attr_domainWild" value="1" /><span>Wild</span></div>
|
||||
</div>
|
||||
<div class="quarterwide">
|
||||
<h4 class="pinktext" data-i18n="knacks-label">Knacks</h4>
|
||||
<input type="text" /><br />
|
||||
<input type="text" /><br />
|
||||
<input type="text" /><br />
|
||||
<input type="text" /><br />
|
||||
<input type="text" /><br />
|
||||
<input type="text" /><br />
|
||||
<input type="text" /><br />
|
||||
<input type="text" /><br />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="halfwide">
|
||||
<h3><span class="whiteonredtext" data-i18n="abilities-label">Abilities</span></h3>
|
||||
<fieldset class="repeating_Abilities">
|
||||
<div>
|
||||
<h4 class="redtext"><input type="text" name="attr_AbilityTitle" class="abilitytitle" placeholder="Ability Name" /></h4>
|
||||
<textarea name="attr_AbilityDetails"></textarea>
|
||||
</div>
|
||||
</fieldset>
|
||||
<div>
|
||||
<h3><span class="whiteonredtext" data-i18n="fallout-label">Fallout</span></h3>
|
||||
<textarea name="attr_fallout" spellcheck="false"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="fullwide">
|
||||
<h3><span class="redtext" data-i18n="notes-label">Notes</h3>
|
||||
<fieldset class="repeating_notes">
|
||||
<textarea name="attr_notes"></textarea>
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
<div class="no-display">
|
||||
<span class="no-display" data-i18n="howmanydice-msg">How many dice?</span>
|
||||
<span class="no-display" data-i18n="difficulty-msg">Difficulty</span>
|
||||
<span class="no-display" data-i18n="standard-msg">Standard</span>
|
||||
<span class="no-display" data-i18n="risky-msg">Risky</span>
|
||||
<span class="no-display" data-i18n="dangerous-msg">Dangerous</span>
|
||||
<span class="no-display" data-i18n="check-fallout-msg">checks for Fallout</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/worker">
|
||||
on("sheet:opened", function (eventInfo) {
|
||||
setAttrs({
|
||||
["howmanydice-msg"]: getTranslationByKey("howmanydice-msg"),
|
||||
["difficulty-msg"]: getTranslationByKey("difficulty-msg"),
|
||||
["standard-msg"]: getTranslationByKey("standard-msg"),
|
||||
["risky-msg"]: getTranslationByKey("risky-msg"),
|
||||
["dangerous-msg"]: getTranslationByKey("dangerous-msg"),
|
||||
["check-fallout-msg"]: getTranslationByKey("check-fallout-msg")
|
||||
});
|
||||
});
|
||||
|
||||
on("clicked:clear_stress", function () {
|
||||
getAttrs(["clearedstress"], function(values) {
|
||||
var stress_attr = "" + values["clearedstress"];
|
||||
if (stress_attr == "all") {
|
||||
var stresses = ["blood", "mind", "echo", "fortune", "supplies"];
|
||||
stresses.forEach(function (stress) {
|
||||
setAttrs({
|
||||
[stress + "_stress"]: 0
|
||||
});
|
||||
});
|
||||
} else {
|
||||
setAttrs({
|
||||
[stress_attr + "_stress"]: 0
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 390 KiB |
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"html": "Heart.html",
|
||||
"css": "Heart.css",
|
||||
"authors": "Tim Rudloff, Kevin B. (@brocktopus)",
|
||||
"roll20userid": "832737, 250192",
|
||||
"preview": "Heart.png",
|
||||
"instructions": "Character sheet for HEART: The City Beneath by Grant Howitt and Christopher Taylor. Based on Tim Rudloff's Roll20 sheet."
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"name-label":"Name",
|
||||
"class-label":"Class",
|
||||
"calling-label":"Calling",
|
||||
"ancestry-label":"Ancestry",
|
||||
"stress-label":"Stress",
|
||||
"blood-label":"Blood",
|
||||
"mind-label":"Mind",
|
||||
"echo-label":"Echo",
|
||||
"fortune-label":"Fortune",
|
||||
"supplies-label":"Supplies",
|
||||
"protection-label":"Protection",
|
||||
"all-stress-label":"All Stress",
|
||||
"clearstress-label":"Clear Stress",
|
||||
"fallout-test-label":"Fallout Test",
|
||||
"roll-label":"Roll",
|
||||
"active-beats-label":"Active Beats",
|
||||
"equipment-label":"Equipment",
|
||||
"description-label":"Domains/Tags",
|
||||
"die-label":"Die",
|
||||
"resources-label":"Resources",
|
||||
"skills-label":"Skills",
|
||||
"knacks-label":"Knacks",
|
||||
"domains-label":"Domains",
|
||||
"abilities-label":"Abilities",
|
||||
"fallout-label":"Fallout",
|
||||
"notes-label":"Notes",
|
||||
"howmanydice-msg":"How many dice?",
|
||||
"difficulty-msg":"Difficulty",
|
||||
"standard-msg":"Standard",
|
||||
"risky-msg":"Risky",
|
||||
"dangerous-msg":"Dangerous",
|
||||
"check-fallout-msg":"checks for Fallout",
|
||||
"build-pool-label":"Build dice pool: 1D + Skill + Domain + Mastery + Knack",
|
||||
"standard-pool-label":"use highest result",
|
||||
"risky-pool-label":"drop highest result, use second-highest result",
|
||||
"dangerous-pool-label":"drop 2 highest results, use third-highest result"
|
||||
}
|
||||
Reference in New Issue
Block a user