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:
Kevin Brock
2020-06-15 09:18:30 -05:00
committed by GitHub
parent 25a9797d3f
commit dba42e834b
7 changed files with 500 additions and 0 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 215 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

+191
View File
@@ -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;
}
+263
View File
@@ -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

+8
View File
@@ -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"
}