This commit is contained in:
Salvador Melo
2020-12-31 17:46:06 -05:00
parent e6fce19c5d
commit ff9a27dc2a
3 changed files with 194 additions and 9 deletions
+1 -1
View File
@@ -1 +1 @@
{"name":"Name","race-look":"Race &amp; Look","dark-impulse":"Dark Impulse","revelry":"Revelry","gear":"Gear","supply":"Supply","slots":" Slots","extra-slots":"Extra Slots","stress":"Stress","go-feral":"When the Clock is full, you Go Feral.","resistance-rolls":"Resistance Rolls","failure":"Failure","resist-failure":": Partial Resist, take 3 Stress.","mixed":"Mixed","resist-mixed":": Partial Resist, take 2 Stress.","success":"Success","resist-success":": Full Resist, take 1 Stress","critical":"Critical","resist-critical":": Full Resist, clear 1 Stress","resisting-death":"Resisting Death","resist-death-failure":": You die.","resist-death-mixed":": Knocked out of the scene.","defenses":"Defenses","dungeon-duties":"Dungeon Duties","tier":"Tier","type":"Type","description":"Description","downtime-projects":"Downtime Projects","brew-project":"<strong>Brew</strong> Potions and Alchemicals","build-project":"<strong>Build</strong> Locks, Traps, Tricks, and Rooms.","contact-project":"<strong>Contact</strong> Vile Friends, NPCs, or Factions.","craft-project":"<strong>Craft</strong> an Item, Edge, or Contraption","incant-project":"<strong>Incant</strong> a Ritual.","recruit-project":"<strong>Recruit</strong> a Pack of Minions","torture-project":"<strong>Torture</strong> a Prisoner","project":"Project","risk-it-downtime":"<strong>Risk it:</strong> Re-roll a Downtime Action but lose its Dominant Position.","bigmouth":"Bigmouth","cruel":"Cruel","deranged":"Deranged","fickle":"Fickle","obsessed":"Obsessed","paranoid":"Paranoid","reckless":"Reckless","vengeful":"Vengeful","craving":"Craving","drinking":"Drinking","gambling":"Gambling","occult":"Occult","violence":"Violence","worship":"Worship","notes":"Notes"}
{"name":"Name","race-look":"Race &amp; Look","dark-impulse":"Dark Impulse","revelry":"Revelry","bigmouth":"Bigmouth","cruel":"Cruel","deranged":"Deranged","fickle":"Fickle","obsessed":"Obsessed","paranoid":"Paranoid","reckless":"Reckless","vengeful":"Vengeful","craving":"Craving","drinking":"Drinking","gambling":"Gambling","occult":"Occult","violence":"Violence","worship":"Worship","gear":"Gear","supply":"Supply","slots":" Slots","extra-slots":"Extra Slots","stress":"Stress","go-feral":"When the Clock is full, you Go Feral.","resistance-rolls":"Resistance Rolls","failure":"Failure","resist-failure":": Partial Resist, take 3 Stress.","mixed":"Mixed","resist-mixed":": Partial Resist, take 2 Stress.","success":"Success","resist-success":": Full Resist, take 1 Stress","critical":"Critical","resist-critical":": Full Resist, clear 1 Stress","resisting-death":"Resisting Death","resist-death-failure":": You die.","resist-death-mixed":": Knocked out of the scene.","defenses":"Defenses","notes":"Notes","dungeon-duties":"Dungeon Duties","tier":"Tier","type":"Type","description":"Description","downtime-projects":"Downtime Projects","brew-project":"<strong>Brew</strong> Potions and Alchemicals","build-project":"<strong>Build</strong> Locks, Traps, Tricks, and Rooms.","contact-project":"<strong>Contact</strong> Vile Friends, NPCs, or Factions.","craft-project":"<strong>Craft</strong> an Item, Edge, or Contraption","incant-project":"<strong>Incant</strong> a Ritual.","recruit-project":"<strong>Recruit</strong> a Pack of Minions","torture-project":"<strong>Torture</strong> a Prisoner","project":"Project","risk-it-downtime":"<strong>Risk it:</strong> Re-roll a Downtime Action but lose its Dominant Position.","brains":"Brains","brains-desc":"Smarts, Awareness, Insight","scan":"Scan","perceptively":" / perceptively","tinker":"Tinker","cleverly":" / cleverly","trick":"Trick","slyly":" / slyly","muscles":"Muscles","muscles-desc":"Strength, Agility, Speed","finesse":"Finesse","precisely":" / precisely","skulk":"Skulk","sneakily":" / sneakily","smash":"Smash","powerfully":" / powerfully","guts":"Guts","guts-desc":"Personality, Mettle, Magic","banter":"Banter","affably":" / affably","invoke":"Invoke","magically":" / magically","threaten":"Threaten","forecefully":" / forecefully","forcefully":" / forcefully"}
+71 -6
View File
@@ -27,6 +27,10 @@
grid-area: right;
}
.sheet-middle {
grid-area: middle;
}
.sheet-calling {
grid-area: calling;
background-color: darkgrey;
@@ -126,8 +130,18 @@
}
.sheet-actions {
background-color: goldenrod;
min-height: 500px;
display:grid;
grid-template-rows: repeat(7, min-content);
grid-template-columns: repeat(2, auto);
width: 100%;
}
.sheet-actions > div {
grid-column: 1 / span 2;
}
.sheet-actions > div > div:not(:first-of-type) {
margin-left: 7px;
}
.sheet-friend {
@@ -203,6 +217,13 @@ ul > li.sheet-subheader {
font-weight: bolder;
font-size: large;
display: flex;
align-items: baseline;
}
.sheet-header > .sheet-subheader {
font-size: x-small;
font-weight: normal;
align-self: center;
}
.sheet-header > .sheet-spacer {
@@ -214,8 +235,8 @@ ul > li.sheet-subheader {
font-weight: normal;
}
.sheet-header .sheet-normal {
align-self: center;
.sheet-header > button.sheet-diamond + * {
margin-left: 4px
}
/* Inputs */
@@ -430,17 +451,61 @@ input[type="radio"]:checked ~ input[type="radio"] + span::before {
/* Fake Checkboxes */
button.sheet-square {
button.sheet-square, button.sheet-diamond {
border: 1px solid black;
width: 10px;
height: 10px;
margin: auto 2px;
}
input[value="used"] + button.sheet-square.sheet-square {
input[value="used"] + button.sheet-square,
input[value="used"] + button.sheet-diamond,
input[value="1"] ~ button.sheet-action1,
input[value="2"] ~ button.sheet-action2, input[value="2"] ~ button.sheet-action1,
input[value="3"] ~ button.sheet-action3, input[value="3"] ~ button.sheet-action2, input[value="3"] ~ button.sheet-action1 {
background-color: black;
}
button.sheet-practice {
display: grid;
}
button.sheet-practice > span {
width: 100%;
height: 100%;
grid-area: 1 /1;
}
input.sheet-action[value="0.1"] ~ button.sheet-practice {
background:
linear-gradient(to top left,
rgba(0,0,0,0) 0%,
rgba(0,0,0,0) calc(50% - 0.8px),
rgba(0,0,0,1) 50%,
rgba(0,0,0,0) calc(50% + 0.8px),
rgba(0,0,0,0) 100%);
}
input.sheet-action[value="0.2"] ~ button.sheet-practice {
background:
linear-gradient(to top left,
rgba(0,0,0,0) 0%,
rgba(0,0,0,0) calc(50% - 0.8px),
rgba(0,0,0,1) 50%,
rgba(0,0,0,0) calc(50% + 0.8px),
rgba(0,0,0,0) 100%),
linear-gradient(to top right,
rgba(0,0,0,0) 0%,
rgba(0,0,0,0) calc(50% - 0.8px),
rgba(0,0,0,1) 50%,
rgba(0,0,0,0) calc(50% + 0.8px),
rgba(0,0,0,0) 100%);
}
button.sheet-diamond {
transform: rotate(45deg);
}
button.sheet-symbol > span {
font-family: pictos;
opacity: 0.35;
+122 -2
View File
@@ -296,7 +296,93 @@
</div>
<div class="sheet-right">
<div class="sheet-actions">
Actions
<div>
<div class="header">
<input type="hidden" name="attr_brains-shock" class="toggle"/>
<button type="action" name="act_toggle-brains-shock" class="toggle diamond"></button>
<span data-i18n="brains">Brains</span> &nbsp;
<span class="subheader" data-i18n="brains-desc">Smarts, Awareness, Insight</span>
</div>
<div class="header">
<input type="hidden" name="attr_scan" value="0" class="action"/>
<button type="action" name="act_scan1" class="practice square toggle action1"></button>
<button type="action" name="act_scan2" class="square toggle action2"></button>
<button type="action" name="act_scan3" class="square toggle action3"></button>
<span data-i18n="scan">Scan</span> &nbsp; <em class="normal" data-i18n="perceptively"> / perceptively</em>
</div>
<div class="header">
<input type="hidden" name="attr_tinker" value="0" class="action"/>
<button type="action" name="act_tinker1" class="practice square toggle action1"></button>
<button type="action" name="act_tinker2" class="square toggle action2"></button>
<button type="action" name="act_tinker3" class="square toggle action3"></button>
<span data-i18n="tinker">Tinker</span> &nbsp; <em class="normal" data-i18n="cleverly"> / cleverly</em>
</div>
<div class="header">
<input type="hidden" name="attr_trick" value="0" class="action"/>
<button type="action" name="act_trick1" class="practice square toggle action1"></button>
<button type="action" name="act_trick2" class="square toggle action2"></button>
<button type="action" name="act_trick3" class="square toggle action3"></button>
<span data-i18n="trick">Trick</span> &nbsp; <em class="normal" data-i18n="slyly"> / slyly</em>
</div>
</div>
<div>
<div class="header">
<input type="hidden" name="attr_muscles-shock" class="toggle"/>
<button type="action" name="act_toggle-muscles-shock" class="toggle diamond"></button>
<span data-i18n="muscles">Muscles</span> &nbsp;
<span class="subheader" data-i18n="muscles-desc">Strength, Agility, Speed</span>
</div>
<div class="header">
<input type="hidden" name="attr_finesse" value="0" class="action"/>
<button type="action" name="act_finesse1" class="practice square toggle action1"></button>
<button type="action" name="act_finesse2" class="square toggle action2"></button>
<button type="action" name="act_finesse3" class="square toggle action3"></button>
<span data-i18n="finesse">Finesse</span> &nbsp; <em class="normal" data-i18n="precisely"> / precisely</em>
</div>
<div class="header">
<input type="hidden" name="attr_skulk" value="0" class="action"/>
<button type="action" name="act_skulk1" class="practice square toggle action1"></button>
<button type="action" name="act_skulk2" class="square toggle action2"></button>
<button type="action" name="act_skulk3" class="square toggle action3"></button>
<span data-i18n="skulk">Skulk</span> &nbsp; <em class="normal" data-i18n="sneakily"> / sneakily</em>
</div>
<div class="header">
<input type="hidden" name="attr_smash" value="0" class="action"/>
<button type="action" name="act_smash1" class="practice square toggle action1"></button>
<button type="action" name="act_smash2" class="square toggle action2"></button>
<button type="action" name="act_smash3" class="square toggle action3"></button>
<span data-i18n="smash">Smash</span> &nbsp; <em class="normal" data-i18n="powerfully"> / powerfully</em>
</div>
</div>
<div>
<div class="header">
<input type="hidden" name="attr_guts-shock" class="toggle"/>
<button type="action" name="act_toggle-guts-shock" class="toggle diamond"></button>
<span data-i18n="guts">Guts</span> &nbsp;
<span class="subheader" data-i18n="guts-desc">Personality, Mettle, Magic</span>
</div>
<div class="header">
<input type="hidden" name="attr_banter" value="0" class="action"/>
<button type="action" name="act_banter1" class="practice square toggle action1"></button>
<button type="action" name="act_banter2" class="square toggle action2"></button>
<button type="action" name="act_banter3" class="square toggle action3"></button>
<span data-i18n="banter">Banter</span> &nbsp; <em class="normal" data-i18n="affably"> / affably</em>
</div>
<div class="header">
<input type="hidden" name="attr_invoke" value="0" class="action"/>
<button type="action" name="act_invoke1" class="practice square toggle action1"></button>
<button type="action" name="act_invoke2" class="square toggle action2"></button>
<button type="action" name="act_invoke3" class="square toggle action3"></button>
<span data-i18n="invoke">Invoke</span> &nbsp; <em class="normal" data-i18n="magically"> / magically</em>
</div>
<div class="header">
<input type="hidden" name="attr_threaten" value="0" class="action"/>
<button type="action" name="act_threaten1" class="practice square toggle action1"></button>
<button type="action" name="act_threaten2" class="square toggle action2"></button>
<button type="action" name="act_threaten3" class="square toggle action3"></button>
<span data-i18n="threaten">Threaten</span> &nbsp; <em class="normal" data-i18n="forcefully"> / forcefully</em>
</div>
</div>
</div>
<div class="sheet-friend">
Vile Friend
@@ -340,7 +426,13 @@
}
function eventList(count, ...events) {
var nums = [...Array(count).keys()].map(v => v + 1);
if (isNaN(events[0])){
var nums = [...Array(count).keys()];
} else {
var nums = [...Array(events[0]).keys()].slice(count-1);
events = events.slice(1);
}
nums = nums.map(v => v + 1);
return events.flatMap( e => nums.map( v => e + v)).join(" ");
}
@@ -374,4 +466,32 @@
});
});
on("clicked:toggle-brains-shock clicked:toggle-muscles-shock clicked:toggle-guts-shock", function(eventInfo){
var attr = eventInfo.triggerName.replace("clicked:toggle-", "")
toggle(attr,"used","0")
console.log(attr)
});
on(eventList(3,"clicked:scan","clicked:tinker","clicked:trick","clicked:finesse","clicked:skulk","clicked:smash","clicked:banter","clicked:invoke","clicked:threaten"), function(eventInfo){
var match = eventInfo.triggerName.match(/clicked:(.+)(\d)/)
var attr = match[1]
var set = {}
if (match[2] == "1"){
getAttrs([attr], v => {
switch(v[attr]){
case "0": set[attr] = "0.1"; break;
case "0.1": set[attr] = "0.2"; break;
case "0.2": set[attr] = "1"; break;
case "1": set[attr] = "0"; break;
default: set[attr] = "1"; break;
}
setAttrs(set);
});
} else {
set[attr] = match[2];
setAttrs(set);
}
console.log(match)
});
</script>