Adds Heat and Wanted

This commit is contained in:
Peter Varaksin 2020-04-27 19:42:40 +03:00
parent 0bdf86ee93
commit bb6e00d8b5
8 changed files with 170 additions and 78 deletions

1
TODO
View file

@ -1,4 +1,5 @@
- Add upgrade points count for Crew and Character!!!
- Add Custom Notes (item or field)
- Add values to classes default attributes
- Add friends-and-foes
- Add XP gain cheetsheet for each class

View file

@ -1 +1 @@
{"_id":"678LJHqxkBAaSJci","name":"Cult","permission":{"default":0},"type":"crew_type","data":{"description":"","turfs":{"1":{"name":"Cloister","value":false,"description":"+1 scale for your Adept cohorts","connects":["right"],"connected":[false,false,false,false]},"2":{"name":"Vice Den","value":false,"description":"(Tier roll) - Heat = coin in Downtime","connects":["left","right","bottom"],"connected":[false,false,false,false]},"3":{"name":"Offertory","value":false,"description":"+2 coin for occult operations","connects":["left"],"connected":[false,false,false,false]},"4":{"name":"Ancient Obelisk","value":false,"description":"-1 stress cost for all arcane powers and rituals","connects":["right"],"connected":[false,false,false,false]},"5":{"name":"Ancient Tower","value":false,"description":"+1d to Consort w/ arcane entities on site","connects":["left","bottom"],"connected":[false,false,false,false]},"6":{"name":"Turf","value":false,"description":"","connects":["top","right"],"connected":[false,false,false,false]},"7":{"name":"Turf","value":false,"description":"","connects":["left","top","right","bottom"],"connected":[false,false,false,false]},"8":{"name":"Lair","value":true,"description":"","connects":["left","top","right","bottom"],"connected":[false,false,false,true]},"9":{"name":"Turf","value":false,"description":"","connects":["left","right","bottom"],"connected":[false,false,false,false]},"10":{"name":"Turf","value":false,"description":"","connects":["left","top","bottom"],"connected":[false,false,false,false]},"11":{"name":"Spirit Well","value":false,"description":"+1d to Attune on site","connects":["right"],"connected":[false,false,false,false]},"12":{"name":"Ancient Gate","value":false,"description":"Safe passage in the Deathlands","connects":["left","top"],"connected":[false,false,false,false]},"13":{"name":"Sanctuary","value":false,"description":"+1d to Command and Sway on site","connects":["top"],"connected":[false,false,false,false]},"14":{"name":"Sacred Nexus","value":false,"description":"+1d to healing rolls","connects":["top","right"],"connected":[false,false,false,false]},"15":{"name":"Ancient Altar","value":false,"description":"+1d engagement for occult plans","connects":["left","top"],"connected":[false,false,false,false]}}},"folder":null,"sort":100001,"flags":{}}
{"_id":"678LJHqxkBAaSJci","name":"Cult","permission":{"default":0},"type":"crew_type","data":{"description":"","turfs":{"1":{"name":"Cloister","value":false,"description":"+1 scale for your Adept cohorts","connects":["right"],"connected":[false,false,false,false]},"2":{"name":"Vice Den","value":false,"description":"(Tier roll) - Heat = coin in Downtime","connects":["left","right","bottom"],"connected":[false,false,false,false]},"3":{"name":"Offertory","value":false,"description":"+2 coin for occult operations","connects":["left"],"connected":[false,false,false,false]},"4":{"name":"Ancient Obelisk","value":false,"description":"-1 stress cost for all arcane powers and rituals","connects":["right"],"connected":[false,false,false,false]},"5":{"name":"Ancient Tower","value":false,"description":"+1d to Consort w/ arcane entities on site","connects":["left","bottom"],"connected":[false,false,false,false]},"6":{"name":"Turf","value":false,"description":"","connects":["top","right"],"connected":[false,false,false,false]},"7":{"name":"Turf","value":false,"description":"","connects":["left","top","right","bottom"],"connected":[false,false,false,false]},"8":{"name":"Lair","value":true,"description":"","connects":["left","top","right","bottom"],"connected":[false,false,false,true]},"9":{"name":"Turf","value":false,"description":"","connects":["left","right","bottom"],"connected":[false,false,false,false]},"10":{"name":"Turf","value":false,"description":"","connects":["left","top","bottom"],"connected":[false,false,false,false]},"11":{"name":"Spirit Well","value":false,"description":"+1d to Attune on site","connects":["right"],"connected":[false,false,false,false]},"12":{"name":"Ancient Gate","value":false,"description":"Safe passage in the Deathlands","connects":["left","top"],"connected":[false,false,false,false]},"13":{"name":"Sanctuary","value":false,"description":"+1d to Command and Sway on site","connects":["top"],"connected":[false,false,false,false]},"14":{"name":"Sacred Nexus","value":false,"description":"+1d to healing rolls","connects":["top","right"],"connected":[false,false,false,false]},"15":{"name":"Ancient Altar","value":false,"description":"+1d engagement for occult plans","connects":["left","top"],"connected":[false,false,false,false]}}},"folder":null,"sort":100001,"flags":{}}

View file

@ -103,7 +103,7 @@ $red: red;
// Stress and Trauma
#stress-trauma {
.big-teeth-section {
border-top: 3px solid black;
display: flex;
@ -112,6 +112,10 @@ $red: red;
> * {
margin-right: 10px;
&:last-child {
margin-right: 0px;
}
}
&:last-child {
@ -119,18 +123,18 @@ $red: red;
}
// Stress
#character-stress {
.big-teeth {
@include toothradio(17px, 50px, "assets/teeth/stresstooth-halfgrey.png", "assets/teeth/stresstooth-red.png");
}
/* Trauma */
#character-trauma-container {
.small-teeth-container {
#character-trauma {
.small-teeth-wrap {
@include toothradio(17px, 50px, "assets/teeth/shorttooth-grey.png", "assets/teeth/shorttooth-red.png");
flex-direction: column;
#trauma-teeth {
.small-teeth {
display: flex;
flex-direction: row;
}
@ -271,8 +275,13 @@ $red: red;
width: 100px;
}
}
.item-class-label {
margin-bottom: 10px;
}
#name,
#lair,
#alias {
margin-bottom: 10px;
@ -321,7 +330,7 @@ $red: red;
// Stress
#crew-reputation {
border-top: 2px solid black;
border-top: 3px solid black;
@include toothradio(17px, 50px, "assets/teeth/stresstooth-halfgrey.png", "assets/teeth/stresstooth-red.png");
input[disabled="disabled"] + label {
@ -363,7 +372,7 @@ $red: red;
}
#crew-hold {
border-top: 2px solid black;
border-top: 3px solid black;
@include toothradio_single(17px, 50px, "assets/teeth/stresstooth-halfgrey.png", "assets/teeth/stresstooth-red.png");
}
@ -371,6 +380,7 @@ $red: red;
background-color: $gray;
height: 30px;
width: 145px;
display: flex;
align-items: center;
@ -382,4 +392,8 @@ $red: red;
}
#heat-wanted {
justify-content: none;
}
}

View file

@ -100,24 +100,27 @@
position: relative;
padding-left: 10px;
}
* #stress-trauma {
* .big-teeth-section {
border-top: 3px solid black;
display: flex;
flex-direction: row;
margin-bottom: 0px;
/* Trauma */
}
* #stress-trauma > * {
* .big-teeth-section > * {
margin-right: 10px;
}
* #stress-trauma:last-child {
* .big-teeth-section > *:last-child {
margin-right: 0px;
}
* #stress-trauma #character-stress {
* .big-teeth-section:last-child {
margin-right: 0px;
}
* .big-teeth-section .big-teeth {
display: flex;
/* Hide the browser's default checkbox */
}
* #stress-trauma #character-stress label {
* .big-teeth-section .big-teeth label {
height: 50px;
width: 17px;
background-image: url("assets/teeth/stresstooth-red.png");
@ -125,31 +128,31 @@
background-size: contain;
margin-right: 5px;
}
* #stress-trauma #character-stress label:last-of-type {
* .big-teeth-section .big-teeth label:last-of-type {
margin-right: 0px;
}
* #stress-trauma #character-stress label[for$="-0"] {
* .big-teeth-section .big-teeth label[for$="-0"] {
width: auto;
height: auto;
background-image: none !important;
background: black !important;
margin-right: 0px;
}
* #stress-trauma #character-stress input {
* .big-teeth-section .big-teeth input {
display: none;
}
* #stress-trauma #character-stress input:checked ~ label {
* .big-teeth-section .big-teeth input:checked ~ label {
background-image: url("assets/teeth/stresstooth-halfgrey.png");
}
* #stress-trauma #character-stress input:checked + label {
* .big-teeth-section .big-teeth input:checked + label {
background-image: url("assets/teeth/stresstooth-red.png");
}
* #stress-trauma #character-trauma-container #character-trauma {
* .big-teeth-section .small-teeth-container .small-teeth-wrap {
display: flex;
/* Hide the browser's default checkbox */
flex-direction: column;
}
* #stress-trauma #character-trauma-container #character-trauma label {
* .big-teeth-section .small-teeth-container .small-teeth-wrap label {
height: 50px;
width: 17px;
background-image: url("assets/teeth/shorttooth-red.png");
@ -157,36 +160,36 @@
background-size: contain;
margin-right: 5px;
}
* #stress-trauma #character-trauma-container #character-trauma label:last-of-type {
* .big-teeth-section .small-teeth-container .small-teeth-wrap label:last-of-type {
margin-right: 0px;
}
* #stress-trauma #character-trauma-container #character-trauma label[for$="-0"] {
* .big-teeth-section .small-teeth-container .small-teeth-wrap label[for$="-0"] {
width: auto;
height: auto;
background-image: none !important;
background: black !important;
margin-right: 0px;
}
* #stress-trauma #character-trauma-container #character-trauma input {
* .big-teeth-section .small-teeth-container .small-teeth-wrap input {
display: none;
}
* #stress-trauma #character-trauma-container #character-trauma input:checked ~ label {
* .big-teeth-section .small-teeth-container .small-teeth-wrap input:checked ~ label {
background-image: url("assets/teeth/shorttooth-grey.png");
}
* #stress-trauma #character-trauma-container #character-trauma input:checked + label {
* .big-teeth-section .small-teeth-container .small-teeth-wrap input:checked + label {
background-image: url("assets/teeth/shorttooth-red.png");
}
* #stress-trauma #character-trauma-container #character-trauma #trauma-teeth {
* .big-teeth-section .small-teeth-container .small-teeth-wrap .small-teeth {
display: flex;
flex-direction: row;
}
* #stress-trauma #trauma-list {
* .big-teeth-section #trauma-list {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
align-items: flex-start;
}
* #stress-trauma #trauma-list label {
* .big-teeth-section #trauma-list label {
cursor: pointer;
font-size: 19px;
-webkit-user-select: none;
@ -196,13 +199,13 @@
margin-right: 10px;
/* Hide the browser's default checkbox */
}
* #stress-trauma #trauma-list label input {
* .big-teeth-section #trauma-list label input {
display: none;
}
* #stress-trauma #trauma-list label input:checked ~ .checkmark {
* .big-teeth-section #trauma-list label input:checked ~ .checkmark {
color: red;
}
* #stress-trauma #trauma-list label .checkmark {
* .big-teeth-section #trauma-list label .checkmark {
text-decoration: none;
font-weight: bold;
}
@ -421,7 +424,11 @@
* .item .item-class-label {
width: 100px;
}
* .item-class-label {
margin-bottom: 10px;
}
* #name,
* #lair,
* #alias {
margin-bottom: 10px;
}
@ -466,7 +473,7 @@
width: 190px;
}
* #crew-reputation {
border-top: 2px solid black;
border-top: 3px solid black;
display: flex;
/* Hide the browser's default checkbox */
}
@ -646,7 +653,7 @@
left: -7px;
}
* #crew-hold {
border-top: 2px solid black;
border-top: 3px solid black;
display: flex;
/* Hide the browser's default checkbox */
}
@ -670,6 +677,7 @@
* #crew-tier {
background-color: #999;
height: 30px;
width: 145px;
display: flex;
align-items: center;
display: flex;
@ -697,5 +705,8 @@
* #crew-tier > * {
margin-right: 5px;
}
* #heat-wanted {
justify-content: none;
}
/*# sourceMappingURL=style.css.map */

View file

@ -63,6 +63,13 @@
"system": "blades-in-the-dark",
"path": "./packs/crew_features.db",
"entity": "Item"
},
{
"name": "Crew Types",
"label": "Crew Types",
"system": "blades-in-the-dark",
"path": "./packs/crew_types.db",
"entity": "Item"
}
]
}

View file

@ -4,7 +4,7 @@
"character": {
"alias": "",
"stress": [0],
"traumas": [],
"traumas": [0],
"healing-clock": [0],
"experience": [0],
"coins": [0],
@ -74,7 +74,9 @@
"coins": [0],
"vault": [0],
"turfs": [8],
"features": []
"features": [],
"heat": [0],
"wanted": [0]
}
},
"Item": {

View file

@ -81,8 +81,8 @@
<div class="section experience">
</div>
{{!-- Stress and Trauma --}}
<div id="stress-trauma" class="section">
<div id="character-stress">
<div id="stress-trauma" class="section big-teeth-section">
<div id="character-stress" class="big-teeth">
{{#multiboxes data.stress}}
<input type="radio" id="character-stress-0" name="data.stress" value="0" dtype="Radio">
<label class="black-label" for="character-stress-0">Stress</label>
@ -107,12 +107,12 @@
{{/multiboxes}}
</div>
<div id="character-trauma-container">
<div id="character-trauma-container" class="small-teeth-container">
{{#traumacounter data.traumas}}
<div id="character-trauma">
<div id="character-trauma" class="small-teeth-wrap">
<label class="black-label" for="character-trauma-counter-0">Trauma</label>
<div id="trauma-teeth">
<input type="radio" id="character-trauma-counter-0" name="trauma-counter" value="0" checked="checked">
<div id="trauma-teeth" class="small-teeth">
<input type="radio" id="character-trauma-counter-0" name="trauma-counter" value="0">
<input type="radio" id="character-trauma-counter-1" name="trauma-counter" value="1">
<label for="character-trauma-counter-1"></label>
<input type="radio" id="character-trauma-counter-2" name="trauma-counter" value="2">

View file

@ -1,35 +1,55 @@
<form class="{{cssClass}} actor-sheet" autocomplete="off">
<div id="name-alias" class="section">
<div id="name">
<label for="crew-name">Name</label>
<input type="text" id="crew-name" name="name" value="{{actor.name}}">
</div>
<div id="lair">
<label for="crew-lair">Lair</label>
<input type="text" id="crew-lair" name="data.lair" value="{{data.lair}}">
</div>
<div class="section">
<div id="name-alias" class="grow-two flex-column">
<div id="name">
<label for="crew-name">Name</label>
<input type="text" id="crew-name" name="name" value="{{actor.name}}">
</div>
<div id="crew-features">
<div class="item-class-label">Crew Features (add 2)</div>
{{#each actor.items as |item id|}}
{{#eq item.type "crew_feature"}}
<div class="item flex-horizontal" data-item-id="{{item._id}}">
<div class="item-body flex-horizontal">
<img src="{{item.img}}" title="{{item.name}}" width="24" height="24"/>
<div class="item-name">{{item.name}}</div>
</div>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
{{/eq}}
{{/each}}
</div>
</div>
<img class="profile-img" src="{{actor.img}}" data-edit="img" title="{{actor.name}}" height="100" width="100"/>
<div id="crew-features">
<div class="item-label">Add 2 Crew Features</div>
{{#each actor.items as |item id|}}
{{#eq item.type "crew_feature"}}
<div class="item flex-horizontal" data-item-id="{{item._id}}">
<div class="item-body flex-horizontal">
<img src="{{item.img}}" title="{{item.name}}" width="24" height="24"/>
<div class="item-name">{{item.name}}</div>
</div>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
{{/eq}}
{{/each}}
<div class="grow-two flex-vertical">
<div id="lair">
<label for="crew-lair">Lair</label>
<input type="text" id="crew-lair" name="data.lair" value="{{data.lair}}">
</div>
<div id="crew-tier">
{{#multiboxes data.tier}}
<input id="crew-tier-0" type="radio" name="data.tier" value="0">
<label for="crew-tier-0" class="black-label">Tier</label>
<input id="crew-tier-1" type="radio" name="data.tier" value="1">
<label for="crew-tier-1"></label>
<input id="crew-tier-2" type="radio" name="data.tier" value="2">
<label for="crew-tier-2"></label>
<input id="crew-tier-3" type="radio" name="data.tier" value="3">
<label for="crew-tier-3"></label>
<input id="crew-tier-4" type="radio" name="data.tier" value="4">
<label for="crew-tier-4"></label>
{{/multiboxes}}
</div>
</div>
</div>
<div class="section">
<div id="crew-reputation">
{{#multiboxes data.reputation}}
@ -65,6 +85,57 @@
<div class="gray-label">Turf</div>
</div>
<div id="heat-wanted" class="flex-horizontal big-teeth-section">
<div id="crew-heat" class="big-teeth">
{{#multiboxes data.heat}}
<input type="radio" id="crew-heat-0" name="data.heat" value="0" dtype="Radio">
<label class="black-label" for="crew-heat-0">Heat</label>
<input type="radio" id="crew-heat-1" name="data.heat" value="1" dtype="Radio">
<label for="crew-heat-1"></label>
<input type="radio" id="crew-heat-2" name="data.heat" value="2" dtype="Radio">
<label for="crew-heat-2"></label>
<input type="radio" id="crew-heat-3" name="data.heat" value="3" dtype="Radio">
<label for="crew-heat-3"></label>
<input type="radio" id="crew-heat-4" name="data.heat" value="4" dtype="Radio">
<label for="crew-heat-4"></label>
<input type="radio" id="crew-heat-5" name="data.heat" value="5" dtype="Radio">
<label for="crew-heat-5"></label>
<input type="radio" id="crew-heat-6" name="data.heat" value="6" dtype="Radio">
<label for="crew-heat-6"></label>
<input type="radio" id="crew-heat-7" name="data.heat" value="7" dtype="Radio">
<label for="crew-heat-7"></label>
<input type="radio" id="crew-heat-8" name="data.heat" value="8" dtype="Radio">
<label for="crew-heat-8"></label>
<input type="radio" id="crew-heat-9" name="data.heat" value="9" dtype="Radio">
<label for="crew-heat-9"></label>
{{/multiboxes}}
</div>
<div id="crew-wanted-container" class="small-teeth-container">
{{#multiboxes data.wanted}}
<div id="crew-wanted" class="small-teeth-wrap">
<label class="black-label" for="crew-wanted-counter-0">Wanted</label>
<div class="small-teeth">
<input type="radio" id="crew-wanted-counter-0" name="data.wanted" value="0">
<input type="radio" id="crew-wanted-counter-1" name="data.wanted" value="1">
<label for="crew-wanted-counter-1"></label>
<input type="radio" id="crew-wanted-counter-2" name="data.wanted" value="2">
<label for="crew-wanted-counter-2"></label>
<input type="radio" id="crew-wanted-counter-3" name="data.wanted" value="3">
<label for="crew-wanted-counter-3"></label>
<input type="radio" id="crew-wanted-counter-4" name="data.wanted" value="4">
<label for="crew-wanted-counter-4"></label>
</div>
</div>
{{/multiboxes}}
</div>
</div>
</div>
<div class="section">
<div id="crew-hold" class="flex-horizontal">
<div class="black-label">Hold</div>
{{#multiboxes data.hold}}
@ -81,20 +152,6 @@
{{/multiboxes}}
</div>
<div id="crew-tier">
{{#multiboxes data.tier}}
<input id="crew-tier-0" type="radio" name="data.tier" value="0">
<label for="crew-tier-0" class="black-label">Tier</label>
<input id="crew-tier-1" type="radio" name="data.tier" value="1">
<label for="crew-tier-1"></label>
<input id="crew-tier-2" type="radio" name="data.tier" value="2">
<label for="crew-tier-2"></label>
<input id="crew-tier-3" type="radio" name="data.tier" value="3">
<label for="crew-tier-3"></label>
<input id="crew-tier-4" type="radio" name="data.tier" value="4">
<label for="crew-tier-4"></label>
{{/multiboxes}}
</div>
</div>
{{!-- Crew Type --}}