Initial system development
This commit is contained in:
parent
ca29af6b61
commit
e78b2ac67d
BIN
fonts/garamond.ttf
Normal file
BIN
fonts/garamond.ttf
Normal file
Binary file not shown.
BIN
fonts/neuropol.ttf
Normal file
BIN
fonts/neuropol.ttf
Normal file
Binary file not shown.
59
img/icons/filter.svg
Normal file
59
img/icons/filter.svg
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="12.5243mm"
|
||||||
|
height="11.2895mm"
|
||||||
|
viewBox="0 0 71 64"
|
||||||
|
version="1.1"
|
||||||
|
id="svg3"
|
||||||
|
sodipodi:docname="filter.svg"
|
||||||
|
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
|
||||||
|
<metadata
|
||||||
|
id="metadata9">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs
|
||||||
|
id="defs7" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="1818"
|
||||||
|
inkscape:window-height="1345"
|
||||||
|
id="namedview5"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="13.039316"
|
||||||
|
inkscape:cx="23.667968"
|
||||||
|
inkscape:cy="21.334489"
|
||||||
|
inkscape:window-x="460"
|
||||||
|
inkscape:window-y="29"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg3"
|
||||||
|
inkscape:document-rotation="0" />
|
||||||
|
<path
|
||||||
|
id="Sélection"
|
||||||
|
fill="none"
|
||||||
|
stroke="black"
|
||||||
|
stroke-width="1"
|
||||||
|
d="M 0,0 C 0,0 71,0 71,0 71,3.03 71.33,7.3 69.98,10 67.09,15.77 46.75,31.08 43.6,36 40.85,40.31 42,56.23 42,62 42,62 29,61 29,61 29,55.3 30.14,40.33 27.4,36 27.4,36 8,16 8,16 5.59,13.59 1.77,10.18 0.6,7 -0.12,5.05 0.01,2.1 0,0 Z m 52,15 c 0,0 -12,1 -12,1 0,0 -18,0 -18,0 1.31,4.38 11.04,15.49 16,13.84 C 42.71,28.26 50.6,19.77 52,15 Z"
|
||||||
|
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.0 KiB |
60
img/icons/locked.svg
Normal file
60
img/icons/locked.svg
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="24"
|
||||||
|
height="24"
|
||||||
|
viewBox="0 0 74.999964 74.999964"
|
||||||
|
version="1.1"
|
||||||
|
id="svg3"
|
||||||
|
sodipodi:docname="locked.svg"
|
||||||
|
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
|
||||||
|
<metadata
|
||||||
|
id="metadata9">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs
|
||||||
|
id="defs7" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="3840"
|
||||||
|
inkscape:window-height="2066"
|
||||||
|
id="namedview5"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="11.84917"
|
||||||
|
inkscape:cx="66.242132"
|
||||||
|
inkscape:cy="3.3681778"
|
||||||
|
inkscape:window-x="-11"
|
||||||
|
inkscape:window-y="-11"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg3"
|
||||||
|
inkscape:document-rotation="0"
|
||||||
|
units="px" />
|
||||||
|
<path
|
||||||
|
id="Sélection #1"
|
||||||
|
fill="none"
|
||||||
|
stroke="#000000"
|
||||||
|
stroke-width="0.43031"
|
||||||
|
d="m 17.920882,31.968974 c -0.275398,-1.686814 -0.02152,-6.407314 0.253883,-8.175887 1.613662,-10.314528 8.033886,-24.37275369 20.400992,-23.77462269 11.489274,0.5551 17.423247,13.45579069 19.041212,23.34431269 0.309823,1.919182 0.619646,6.773077 0.322733,8.606197 0,0 4.303099,0 4.303099,0 0,0 0,43.030993 0,43.030993 0,0 -49.485638,0 -49.485638,0 0,0 0,-43.030993 0,-43.030993 0,0 5.163719,0 5.163719,0 z m 36.146031,0 c 0,-7.517513 -1.080078,-14.703688 -5.38748,-21.085184 C 46.23097,7.2562774 43.124132,4.5453244 38.575757,4.4334444 26.699204,4.1451364 21.810883,19.614778 21.793671,29.387115 c 0,0 0,2.581859 0,2.581859 0,0 32.273242,0 32.273242,0 z"
|
||||||
|
style="fill:#000000;fill-opacity:1;stroke:#1a1a1a;stroke-opacity:1;opacity:1" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.3 KiB |
63
img/icons/no-filter.svg
Normal file
63
img/icons/no-filter.svg
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="12.5243mm"
|
||||||
|
height="11.2895mm"
|
||||||
|
viewBox="0 0 71 64"
|
||||||
|
version="1.1"
|
||||||
|
id="svg3"
|
||||||
|
sodipodi:docname="no-filter.svg"
|
||||||
|
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
|
||||||
|
<metadata
|
||||||
|
id="metadata9">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs
|
||||||
|
id="defs7" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="1818"
|
||||||
|
inkscape:window-height="1345"
|
||||||
|
id="namedview5"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="23.294527"
|
||||||
|
inkscape:cx="23.667968"
|
||||||
|
inkscape:cy="14.465922"
|
||||||
|
inkscape:window-x="630"
|
||||||
|
inkscape:window-y="276"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg3"
|
||||||
|
inkscape:document-rotation="0" />
|
||||||
|
<path
|
||||||
|
id="Sélection"
|
||||||
|
fill="none"
|
||||||
|
stroke="black"
|
||||||
|
stroke-width="1"
|
||||||
|
d="M 0.00,0.00 C 0.00,0.00 71.00,0.00 71.00,0.00 71.00,3.03 71.33,7.30 69.98,10.00 67.09,15.77 46.75,31.08 43.60,36.00 40.85,40.31 42.00,56.23 42.00,62.00 42.00,62.00 29.00,61.00 29.00,61.00 29.00,55.30 30.14,40.33 27.40,36.00 27.40,36.00 8.00,16.00 8.00,16.00 5.59,13.59 1.77,10.18 0.60,7.00 -0.12,5.05 0.01,2.10 0.00,0.00 Z M 52.00,15.00 C 52.00,15.00 40.00,16.00 40.00,16.00 40.00,16.00 22.00,16.00 22.00,16.00 23.31,20.38 33.04,31.49 38.00,29.84 42.71,28.26 50.60,19.77 52.00,15.00 Z"
|
||||||
|
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
style="fill:#6c0000;stroke:#6c0000;stroke-width:1.49992px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.5;fill-opacity:1"
|
||||||
|
d="M 47.004186,-2.0604574 10.753012,51.897773 14.551981,55.052848 56.920138,-6.3101511 52.090941,-8.4993871 Z"
|
||||||
|
id="path834" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.6 KiB |
64
img/icons/unlocked.svg
Normal file
64
img/icons/unlocked.svg
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="26.240078"
|
||||||
|
height="24.137722"
|
||||||
|
viewBox="0 0 82.000206 75.430344"
|
||||||
|
version="1.1"
|
||||||
|
id="svg3"
|
||||||
|
sodipodi:docname="unlocked.svg"
|
||||||
|
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
|
||||||
|
<metadata
|
||||||
|
id="metadata9">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs
|
||||||
|
id="defs7" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="1818"
|
||||||
|
inkscape:window-height="1345"
|
||||||
|
id="namedview5"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="9.407583"
|
||||||
|
inkscape:cx="32.22484"
|
||||||
|
inkscape:cy="24.325892"
|
||||||
|
inkscape:window-x="630"
|
||||||
|
inkscape:window-y="276"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg3"
|
||||||
|
inkscape:document-rotation="0"
|
||||||
|
units="px"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0" />
|
||||||
|
<path
|
||||||
|
id="Sélection #1"
|
||||||
|
fill="none"
|
||||||
|
stroke="#000000"
|
||||||
|
stroke-width="0.430321"
|
||||||
|
d="m 41.525985,32.183078 c -0.757365,-3.180073 0.619662,-10.938762 1.600794,-14.200596 1.097319,-3.636213 2.990736,-7.836147 5.422046,-10.7580268 1.36842,-1.639523 3.63191,-3.85998 5.45647,-4.957299 2.39689,-1.44587897 5.38332,-2.17312097 8.1761,-2.03541897 9.56174,0.460444 15.50017,9.83713977 17.88845,18.18106577 1.04138,3.636213 1.32539,5.723271 1.4717,9.467064 0.0645,0.933797 0.50347,2.891758 0,3.614697 -0.667,0.890765 -2.86164,0.688514 -3.86859,0.688514 0,-7.620987 -1.35551,-15.23767 -5.99007,-21.516054 -2.30652,-3.1198278 -5.46077,-5.8308508 -9.50149,-6.0072828 -4.9573,-0.21516 -8.35253,2.543198 -11.09798,6.4376038 -4.39788,6.239655 -5.684541,13.615359 -5.684541,21.085733 0,0 4.303211,0 4.303211,0 0,0 0,43.032105 0,43.032105 0,0 -49.4869245,0 -49.4869245,0 0,0 0,-43.032105 0,-43.032105 0,0 41.3108245,0 41.3108245,0 z"
|
||||||
|
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:0.5" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.6 KiB |
BIN
img/logos/sos_logo_small.webp
Normal file
BIN
img/logos/sos_logo_small.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 26 KiB |
10
lang/en.json
10
lang/en.json
@ -5,6 +5,16 @@
|
|||||||
"SHEET.TabGears": "Gears",
|
"SHEET.TabGears": "Gears",
|
||||||
"SHEET.TabDescription": "Description",
|
"SHEET.TabDescription": "Description",
|
||||||
|
|
||||||
|
"SCORES.Edge": "Edge",
|
||||||
|
"SCORES.Wealth": "Wealth",
|
||||||
|
"SCORES.Lifestyle": "Lifestyle",
|
||||||
|
"SCORES.Defense": "Defense",
|
||||||
|
"SCORES.DR": "DR",
|
||||||
|
"SCORES.Totalwounds": "Totalwounds",
|
||||||
|
"SCORES.Shock": "Shock",
|
||||||
|
"SCORES.Wounds": "Wounds",
|
||||||
|
"SCORES.Encumbrance": "Encumbrance",
|
||||||
|
|
||||||
"STATS.physical": "physical",
|
"STATS.physical": "physical",
|
||||||
"STATS.mental": "mental",
|
"STATS.mental": "mental",
|
||||||
"STATS.strength": "Strength",
|
"STATS.strength": "Strength",
|
||||||
|
@ -16,14 +16,17 @@ export class SoSActorSheet extends ActorSheet {
|
|||||||
width: 640,
|
width: 640,
|
||||||
//height: 720,
|
//height: 720,
|
||||||
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "stats" }],
|
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "stats" }],
|
||||||
dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }]
|
dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }],
|
||||||
|
editStatSkill: false
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getData() {
|
getData() {
|
||||||
let data = super.getData();
|
let data = super.getData();
|
||||||
|
|
||||||
|
data.data.edgecard = this.actor.getEdgesCard();
|
||||||
|
data.data.editStatSkill = this.options.editStatSkill;
|
||||||
console.log("stats", data);
|
console.log("stats", data);
|
||||||
//data.stats = duplicate(this.actor.stats);
|
//data.stats = duplicate(this.actor.stats);
|
||||||
//data.scores = duplicate(this.actor.scores);
|
//data.scores = duplicate(this.actor.scores);
|
||||||
@ -58,6 +61,21 @@ export class SoSActorSheet extends ActorSheet {
|
|||||||
const li = $(ev.currentTarget).parents(".item");
|
const li = $(ev.currentTarget).parents(".item");
|
||||||
RdDUtility.confirmerSuppression(this, li);
|
RdDUtility.confirmerSuppression(this, li);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
html.find('.stat-label a').click((event) => {
|
||||||
|
let statName = event.currentTarget.attributes.name.value;
|
||||||
|
this.actor.rollStat(statName);
|
||||||
|
});
|
||||||
|
html.find('.edge-draw').click((event) => {
|
||||||
|
this.actor.drawEdge();
|
||||||
|
this.render(true);
|
||||||
|
});
|
||||||
|
html.find('.lock-unlock-sheet').click((event) => {
|
||||||
|
this.options.editStatSkill = !this.options.editStatSkill;
|
||||||
|
this.render(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { SoSCardDeck } from "./sos-card-deck.js";
|
||||||
import { SoSUtility } from "./sos-utility.js";
|
import { SoSUtility } from "./sos-utility.js";
|
||||||
|
|
||||||
|
|
||||||
@ -36,18 +37,95 @@ export class SoSActor extends Actor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
prepareData() {
|
async prepareData() {
|
||||||
super.prepareData();
|
super.prepareData();
|
||||||
|
|
||||||
const actorData = this.data;
|
if ( !this.cardDeck ) {
|
||||||
|
this.cardDeck = new SoSCardDeck();
|
||||||
|
this.cardDeck.initCardDeck( this );
|
||||||
|
}
|
||||||
|
this.controlScores();
|
||||||
|
}
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
getEdgesCard( ) {
|
||||||
|
let edgesCard = duplicate(this.cardDeck.data.cardEdge);
|
||||||
|
for (let edge of edgesCard) {
|
||||||
|
edge.path = `systems/foundryvtt-shadows-over-sol/img/cards/${edge.cardName}.webp`
|
||||||
|
}
|
||||||
|
return edgesCard;
|
||||||
|
}
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
drawEdge( ) {
|
||||||
|
this.cardDeck.drawEdge();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
/**
|
getDefense( ) {
|
||||||
* Prepare Character type specific data
|
return this.data.data.scores.defense;
|
||||||
*/
|
}
|
||||||
async _prepareCharacterData(actorData) {
|
/* -------------------------------------------- */
|
||||||
// Initialize empty items
|
computeDefense() {
|
||||||
|
return { value: Math.ceil((this.data.data.stats.speed.value + this.data.data.stats.perception.value + this.data.data.stats.dexterity.value) / 2),
|
||||||
|
critical: this.data.data.stats.speed.value + this.data.data.stats.perception.value + this.data.data.stats.dexterity.value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
getEdge( ) {
|
||||||
|
return this.data.data.scores.edge.value;
|
||||||
|
}
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
getEncumbrance( ) {
|
||||||
|
return this.data.data.scores.encumbrance.value;
|
||||||
|
}
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
computeEdge( ) {
|
||||||
|
return Math.ceil( (this.data.data.stats.intelligence.value + this.data.data.stats.charisma.value) / 2);
|
||||||
|
}
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
getShock( ) {
|
||||||
|
return this.data.data.scores.shock.value;
|
||||||
|
}
|
||||||
|
computeShock() {
|
||||||
|
return Math.ceil( this.data.data.stats.endurance.value + this.data.data.stats.determination.value + this.data.data.scores.dr.value);
|
||||||
|
}
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
getWound( ) {
|
||||||
|
return this.data.data.scores.wound.value;
|
||||||
|
}
|
||||||
|
computeWound() {
|
||||||
|
return Math.ceil( (this.data.data.stats.strength.value + this.data.data.stats.endurance.value) / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
async controlScores() {
|
||||||
|
// Defense check
|
||||||
|
let defenseData = this.getDefense();
|
||||||
|
let newDefenseData = this.computeDefense();
|
||||||
|
if ( defenseData.value != newDefenseData.value || defenseData.critical != newDefenseData.critical) {
|
||||||
|
await this.update( {'data.scores.defense': newDefenseData});
|
||||||
|
}
|
||||||
|
// Edge check
|
||||||
|
if ( this.getEdge() != this.computeEdge() ) {
|
||||||
|
await this.update( {'data.scores.edge.value': this.computeEdge()});
|
||||||
|
}
|
||||||
|
// Encumbrance
|
||||||
|
if ( this.getEncumbrance() != this.data.data.stats.strength.value ) {
|
||||||
|
await this.update( {'data.scores.encumbrance.value': this.data.data.stats.strength.value });
|
||||||
|
}
|
||||||
|
// Shock
|
||||||
|
if ( this.getShock() != this.computeShock() ) {
|
||||||
|
await this.update( {'data.scores.shock.value': this.computeShock() });
|
||||||
|
}
|
||||||
|
// Wounds
|
||||||
|
if ( this.getWound() != this.computeWound() ) {
|
||||||
|
await this.update( {'data.scores.wound.value': this.computeWound() });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
rollStat( statKey ) {
|
||||||
|
console.log("STAT", this);
|
||||||
|
let result = this.cardDeck.doFlipStat( duplicate(this.data.data.stat[statKey]) );
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -4,45 +4,66 @@ const NB_POKER_CARD = 54;
|
|||||||
const IDX2CARDFAMILY = ['c', 'd', 'h', 's'];
|
const IDX2CARDFAMILY = ['c', 'd', 'h', 's'];
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
export class SoSCardDeck extends Application {
|
export class SoSCardDeck {
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async create(data, options) {
|
initCardDeck(actor) {
|
||||||
data.deck = [];
|
|
||||||
data.discard = [];
|
this.data = {};
|
||||||
data.cardState = [];
|
this.data.deck = [];
|
||||||
|
this.data.discard = [];
|
||||||
return super.create(data, options);
|
this.data.cardState = [];
|
||||||
|
this.data.cardEdge = [];
|
||||||
|
this.data.actor = actor;
|
||||||
|
|
||||||
|
this.shuffleDeck();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
shuffleDeck() {
|
shuffleDeck() {
|
||||||
this.cleanCardList();
|
this.cleanCardList();
|
||||||
// Randomize deck
|
// Randomize deck
|
||||||
while (data.deck.length != NB_POKER_CARD) {
|
while (this.data.deck.length != NB_POKER_CARD) {
|
||||||
let idx = new Roll("1d54").roll().total;
|
let idx = new Roll("1d54").roll().total;
|
||||||
if (!this.data.cardState[idx - 1]) {
|
if (!this.data.cardState[idx - 1]) {
|
||||||
if (idx == 53) { // Red Joker
|
if (idx == 53) { // Red Joker
|
||||||
data.deck.push = { cardName: 'jr' }
|
this.data.deck.push( { cardName: 'jr' } );
|
||||||
} else if (idx == 54) { // Black Joker
|
} else if (idx == 54) { // Black Joker
|
||||||
data.deck.push = { cardName: 'jb' }
|
this.data.deck.push({ cardName: 'jb' });
|
||||||
} else {
|
} else {
|
||||||
let familyIdx = idx % 4;
|
let familyIdx = idx % 4;
|
||||||
let cardName = IDX2CARDFAMILY[familyIdx] + String((idx % 13) + 1);
|
let cardIdx = String( (idx % 13) + 1);
|
||||||
data.deck.push = { cardName: cardName }
|
cardIdx = (cardIdx.length < 2) ? "0"+cardIdx: cardIdx;
|
||||||
|
let cardName = IDX2CARDFAMILY[familyIdx] + cardIdx;
|
||||||
|
this.data.deck.push( { cardName: cardName } );
|
||||||
}
|
}
|
||||||
this.data.cardState[idx - 1] = true;
|
this.data.cardState[idx - 1] = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
drawEdge() {
|
||||||
|
this.data.cardEdge.push( this.data.deck.pop() );
|
||||||
|
this.data.cardEdge.push( this.data.deck.pop() );
|
||||||
|
|
||||||
|
console.log("DRAW EDGE", this.data.cardEdge);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
cleanCardList() {
|
cleanCardList() {
|
||||||
data.discard = []; // Reinit discard pile
|
this.data.discard = []; // Reinit discard pile
|
||||||
data.deck = [];
|
this.data.deck = [];
|
||||||
for (let i = 0; i < NB_POKER_CARD; i++) {
|
for (let i = 0; i < NB_POKER_CARD; i++) {
|
||||||
data.cardState[i] = false;
|
this.data.cardState[i] = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
doFlipStat( statData ) {
|
||||||
|
let card = this.data.deck.pop();
|
||||||
|
this.data.discard.push( card );
|
||||||
|
console.log("CARD IS : ", card, this.data.deck.length );
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,53 +1,37 @@
|
|||||||
/* ==================== (A) Fonts ==================== */
|
/* ==================== (A) Fonts ==================== */
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: "GoudyAcc";
|
font-family: "Garamond";
|
||||||
src: url('../fonts/goudyacc.ttf') format("truetype");
|
src: url('../fonts/garamond.ttf') format("truetype");
|
||||||
}
|
}
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: "MedievalSharp";
|
font-family: "Neuropol";
|
||||||
src: url('../fonts/MedievalSharp.ttf') format("truetype");
|
src: url('../fonts/neuropol.ttf') format("truetype");
|
||||||
}
|
|
||||||
@font-face {
|
|
||||||
font-family: "GrenzeGotisch";
|
|
||||||
src: url('../fonts/GrenzeGotisch-Regular.ttf') format("truetype");
|
|
||||||
}
|
|
||||||
@font-face {
|
|
||||||
font-family: "Fondamento";
|
|
||||||
src: url('../fonts/Fondamento.ttf') format("truetype");
|
|
||||||
}
|
|
||||||
@font-face {
|
|
||||||
font-family: "CaslonAntique";
|
|
||||||
src: url('../fonts/CaslonAntique.ttf') format("truetype");
|
|
||||||
}
|
|
||||||
@font-face {
|
|
||||||
font-family: "heures Draconiques";
|
|
||||||
src: url('../fonts/heures_draconiques.ttf') format("truetype");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
/* =================== 1. ACTOR SHEET FONT STYLES =========== */
|
/* =================== 1. ACTOR SHEET FONT STYLES =========== */
|
||||||
--window-header-title-font-family: CaslonAntique;
|
--window-header-title-font-family: Neuropol;
|
||||||
--window-header-title-font-size: 1.5rem;
|
--window-header-title-font-size: 1.5rem;
|
||||||
--window-header-title-font-weight: normal;
|
--window-header-title-font-weight: normal;
|
||||||
--window-header-title-color: #f5f5f5;
|
--window-header-title-color: #f5f5f5;
|
||||||
|
|
||||||
--major-button-font-family: CaslonAntique;
|
--major-button-font-family: Garamond;
|
||||||
--major-button-font-size: 1.25rem;
|
--major-button-font-size: 1.25rem;
|
||||||
--major-button-font-weight: normal;
|
--major-button-font-weight: normal;
|
||||||
--major-button-color: #dadada;
|
--major-button-color: #dadada;
|
||||||
|
|
||||||
--tab-header-font-family: CaslonAntique;
|
--tab-header-font-family: Garamond;
|
||||||
--tab-header-font-size: 1.2rem;
|
--tab-header-font-size: 1.2rem;
|
||||||
--tab-header-font-weight: 700;
|
--tab-header-font-weight: 700;
|
||||||
--tab-header-color: #403f3e;
|
--tab-header-color: #403f3e;
|
||||||
--tab-header-color-active: #4a0404;
|
--tab-header-color-active: #4a0404;
|
||||||
|
|
||||||
--actor-input-font-family: CaslonAntique;
|
--actor-input-font-family: Garamond;
|
||||||
--actor-input-font-size: 1.2rem;
|
--actor-input-font-size: 1.2rem;
|
||||||
--actor-input-font-weight: 500;
|
--actor-input-font-weight: 500;
|
||||||
--actor-input-color: black;
|
--actor-input-color: black;
|
||||||
|
|
||||||
--actor-label-font-family: CaslonAntique;
|
--actor-label-font-family: Garamond;
|
||||||
--actor-label-font-size: 1.2rem;
|
--actor-label-font-size: 1.2rem;
|
||||||
--actor-label-font-weight: 700;
|
--actor-label-font-weight: 700;
|
||||||
--actor-label-color: #464331c4;
|
--actor-label-color: #464331c4;
|
||||||
@ -65,17 +49,17 @@
|
|||||||
/*@import url("https://fonts.googleapis.com/css2?family=Martel:wght@400;800&family=Roboto:wght@300;400;500&display=swap");*/
|
/*@import url("https://fonts.googleapis.com/css2?family=Martel:wght@400;800&family=Roboto:wght@300;400;500&display=swap");*/
|
||||||
/* Global styles & Font */
|
/* Global styles & Font */
|
||||||
.window-app {
|
.window-app {
|
||||||
font-family: CaslonAntique;
|
font-family: Garamond;
|
||||||
text-align: justify;
|
text-align: justify;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
letter-spacing: 1px;
|
letter-spacing: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Fonts */
|
/* Fonts */
|
||||||
.sheet header.sheet-header h1 input, .window-app .window-header, #actors .directory-list, #navigation #scene-list .scene.nav-item {font-family: "GoudyAcc"} /* For title, sidebar character and scene */
|
.sheet header.sheet-header h1 input, .window-app .window-header, #actors .directory-list, #navigation #scene-list .scene.nav-item {font-family: "Neuropol"} /* For title, sidebar character and scene */
|
||||||
.sheet nav.sheet-tabs {font-family: "CaslonAntique";} /* For nav and title */
|
.sheet nav.sheet-tabs {font-family: "Garamond";} /* For nav and title */
|
||||||
.window-app input, .foundryvtt-reve-de-dragon .item-form, .sheet header.sheet-header .flex-group-center.flex-compteurs, .sheet header.sheet-header .flex-group-center.flex-fatigue, select, button, .item-checkbox, #sidebar, #players, #navigation #nav-toggle {
|
.window-app input, .foundryvtt-shadows-over-sol .item-form, .sheet header.sheet-header .flex-group-center.flex-compteurs, .sheet header.sheet-header .flex-group-center.flex-fatigue, select, button, .item-checkbox, #sidebar, #players, #navigation #nav-toggle {
|
||||||
font-family: "CaslonAntique"; /* For sheet parts */
|
font-family: "Garamond"; /* For sheet parts */
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-header{
|
.window-header{
|
||||||
@ -209,7 +193,7 @@ table {border: 1px solid #7a7971;}
|
|||||||
|
|
||||||
/* Styles limited to foundryvtt-reve-de-dragon sheets */
|
/* Styles limited to foundryvtt-reve-de-dragon sheets */
|
||||||
|
|
||||||
.foundryvtt-reve-de-dragon .sheet-header {
|
.foundryvtt-shadows-over-sol .sheet-header {
|
||||||
-webkit-box-flex: 0;
|
-webkit-box-flex: 0;
|
||||||
-ms-flex: 0 0 210px;
|
-ms-flex: 0 0 210px;
|
||||||
flex: 0 0 210px;
|
flex: 0 0 210px;
|
||||||
@ -229,7 +213,7 @@ table {border: 1px solid #7a7971;}
|
|||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.foundryvtt-reve-de-dragon .sheet-header .profile-img {
|
.foundryvtt-shadows-over-sol .sheet-header .profile-img {
|
||||||
-webkit-box-flex: 0;
|
-webkit-box-flex: 0;
|
||||||
-ms-flex: 0 0 128px;
|
-ms-flex: 0 0 128px;
|
||||||
flex: 0 0 128px;
|
flex: 0 0 128px;
|
||||||
@ -240,6 +224,12 @@ table {border: 1px solid #7a7971;}
|
|||||||
object-position: 50% 0;
|
object-position: 50% 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.card-img {
|
||||||
|
height: 128px;
|
||||||
|
width: 90px;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
.button-img {
|
.button-img {
|
||||||
vertical-align: baseline;
|
vertical-align: baseline;
|
||||||
width: 8%;
|
width: 8%;
|
||||||
@ -263,34 +253,34 @@ table {border: 1px solid #7a7971;}
|
|||||||
vertical-align: bottom;
|
vertical-align: bottom;
|
||||||
}
|
}
|
||||||
|
|
||||||
.foundryvtt-reve-de-dragon .sheet-header .header-fields {
|
.foundryvtt-shadows-over-sol .sheet-header .header-fields {
|
||||||
-webkit-box-flex: 1;
|
-webkit-box-flex: 1;
|
||||||
-ms-flex: 1;
|
-ms-flex: 1;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.foundryvtt-reve-de-dragon .sheet-header h1.charname {
|
.foundryvtt-shadows-over-sol .sheet-header h1.charname {
|
||||||
height: 50px;
|
height: 50px;
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
margin: 5px 0;
|
margin: 5px 0;
|
||||||
border-bottom: 0;
|
border-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.foundryvtt-reve-de-dragon .sheet-header h1.charname input {
|
.foundryvtt-shadows-over-sol .sheet-header h1.charname input {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.foundryvtt-reve-de-dragon .sheet-tabs {
|
.foundryvtt-shadows-over-sol .sheet-tabs {
|
||||||
-webkit-box-flex: 0;
|
-webkit-box-flex: 0;
|
||||||
-ms-flex: 0;
|
-ms-flex: 0;
|
||||||
flex: 0;
|
flex: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.foundryvtt-reve-de-dragon .sheet-body,
|
.foundryvtt-shadows-over-sol .sheet-body,
|
||||||
.foundryvtt-reve-de-dragon .sheet-body .tab,
|
.foundryvtt-shadows-over-sol .sheet-body .tab,
|
||||||
.foundryvtt-reve-de-dragon .sheet-body .tab .editor {
|
.foundryvtt-shadows-over-sol .sheet-body .tab .editor {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -312,69 +302,69 @@ table {border: 1px solid #7a7971;}
|
|||||||
padding: 0 3px;
|
padding: 0 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.foundryvtt-reve-de-dragon .tox .tox-editor-container {
|
.foundryvtt-shadows-over-sol .tox .tox-editor-container {
|
||||||
background: #fff;
|
background: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.foundryvtt-reve-de-dragon .tox .tox-edit-area {
|
.foundryvtt-shadows-over-sol .tox .tox-edit-area {
|
||||||
padding: 0 8px;
|
padding: 0 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.foundryvtt-reve-de-dragon .resource-label {
|
.foundryvtt-shadows-over-sol .resource-label {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
}
|
}
|
||||||
|
|
||||||
.foundryvtt-reve-de-dragon .tabs {
|
.foundryvtt-shadows-over-sol .tabs {
|
||||||
height: 40px;
|
height: 40px;
|
||||||
border-top: 1px solid #AAA;
|
border-top: 1px solid #AAA;
|
||||||
border-bottom: 1px solid #AAA;
|
border-bottom: 1px solid #AAA;
|
||||||
}
|
}
|
||||||
|
|
||||||
.foundryvtt-reve-de-dragon .tabs .item {
|
.foundryvtt-shadows-over-sol .tabs .item {
|
||||||
line-height: 40px;
|
line-height: 40px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.foundryvtt-reve-de-dragon .tabs .item.active {
|
.foundryvtt-shadows-over-sol .tabs .item.active {
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.foundryvtt-reve-de-dragon .items-list {
|
.foundryvtt-shadows-over-sol .items-list {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
margin: 7px 0;
|
margin: 7px 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.foundryvtt-reve-de-dragon .items-list .item-header {
|
.foundryvtt-shadows-over-sol .items-list .item-header {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.foundryvtt-reve-de-dragon .items-list .item {
|
.foundryvtt-shadows-over-sol .items-list .item {
|
||||||
height: 30px;
|
height: 30px;
|
||||||
line-height: 24px;
|
line-height: 24px;
|
||||||
padding: 3px 0;
|
padding: 3px 0;
|
||||||
border-bottom: 1px solid #BBB;
|
border-bottom: 1px solid #BBB;
|
||||||
}
|
}
|
||||||
|
|
||||||
.foundryvtt-reve-de-dragon .items-list .item .item-image {
|
.foundryvtt-shadows-over-sol .items-list .item .item-image {
|
||||||
-webkit-box-flex: 0;
|
-webkit-box-flex: 0;
|
||||||
-ms-flex: 0 0 24px;
|
-ms-flex: 0 0 24px;
|
||||||
flex: 0 0 24px;
|
flex: 0 0 24px;
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.foundryvtt-reve-de-dragon .items-list .item img {
|
.foundryvtt-shadows-over-sol .items-list .item img {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.foundryvtt-reve-de-dragon .items-list .item-name {
|
.foundryvtt-shadows-over-sol .items-list .item-name {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.foundryvtt-reve-de-dragon .items-list .item-controls {
|
.foundryvtt-shadows-over-sol .items-list .item-controls {
|
||||||
-webkit-box-flex: 0;
|
-webkit-box-flex: 0;
|
||||||
-ms-flex: 0 0 86px;
|
-ms-flex: 0 0 86px;
|
||||||
flex: 0 0 86px;
|
flex: 0 0 86px;
|
||||||
@ -746,7 +736,7 @@ ul, li {
|
|||||||
.tokenhudext {
|
.tokenhudext {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex: 0 !important;
|
flex: 0 !important;
|
||||||
font-family: CaslonPro;
|
font-family: Neuropol;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
.tokenhudext.left {
|
.tokenhudext.left {
|
||||||
@ -984,279 +974,6 @@ ul, li {
|
|||||||
border-image-outset: 0px;
|
border-image-outset: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
|
||||||
/* CALENDAR STUFF */
|
|
||||||
#calendar-time-container{
|
|
||||||
position: absolute;
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
#calendar{
|
|
||||||
min-width: 150px;
|
|
||||||
grid-row: 1;
|
|
||||||
grid-column: 1;
|
|
||||||
width: fit-content;
|
|
||||||
height: 84px;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
border: 1px solid #000;
|
|
||||||
border-radius: 3%;
|
|
||||||
background: rgba(0, 0, 0, 0.5);
|
|
||||||
font-family: "GoudyAcc";
|
|
||||||
z-index: 100;
|
|
||||||
}
|
|
||||||
#calendar-hdr{
|
|
||||||
display: grid;
|
|
||||||
font-size: 1rem;
|
|
||||||
margin: 3px;
|
|
||||||
padding: 4px;
|
|
||||||
height: 25px;
|
|
||||||
width: fit-content;
|
|
||||||
min-width: 200px;
|
|
||||||
border-bottom: 1px solid #111;
|
|
||||||
color: #CCC;
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
.calendar-date-rdd {
|
|
||||||
font-family: "GoudyAcc";
|
|
||||||
color: #CCC;
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 1.10rem;
|
|
||||||
opacity: 90;
|
|
||||||
}
|
|
||||||
#calendar--move-handle {
|
|
||||||
font-family: "GoudyAcc";
|
|
||||||
font-size: 13px;
|
|
||||||
line-height: 1;
|
|
||||||
text-align: center;
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
border: none;
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
#calendar-date{
|
|
||||||
grid-row: 1;
|
|
||||||
grid-column: 2;
|
|
||||||
float: left;
|
|
||||||
text-align: center;
|
|
||||||
padding-top: 0px;
|
|
||||||
padding-bottom: 0px;
|
|
||||||
margin-bottom: 5px;
|
|
||||||
color: #CCC;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
#calendar-date,
|
|
||||||
#calendar-date-num {
|
|
||||||
transition: 0.2s;
|
|
||||||
}
|
|
||||||
#calendar-date-num {
|
|
||||||
grid-row: 1;
|
|
||||||
grid-column: 2;
|
|
||||||
float: left;
|
|
||||||
text-align: center;
|
|
||||||
padding-top: 0px;
|
|
||||||
padding-bottom: 0px;
|
|
||||||
margin-bottom: 5px;
|
|
||||||
color: #CCC;
|
|
||||||
opacity: 0;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
#calendar-heure-img{
|
|
||||||
width: 24px;
|
|
||||||
height: 24px;
|
|
||||||
flex-grow: 0;
|
|
||||||
border-width: 0;
|
|
||||||
opacity: 90;
|
|
||||||
color: #CCC;
|
|
||||||
}
|
|
||||||
#calendar-hdr:hover #calendar-date {
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
#calendar-hdr:hover #calendar-date-num{
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
.calendar-container{
|
|
||||||
padding-top: 3px;
|
|
||||||
padding-bottom: 20px;
|
|
||||||
}
|
|
||||||
.calendar-btn-container-left{
|
|
||||||
width: 20%;
|
|
||||||
display: grid;
|
|
||||||
float: left;
|
|
||||||
margin: 2px;
|
|
||||||
grid-row-gap: 3px;
|
|
||||||
color: rgba(0, 0, 0, 0.5);
|
|
||||||
}
|
|
||||||
.calendar-btn-container-right{
|
|
||||||
width: 20%;
|
|
||||||
display: grid;
|
|
||||||
float: right;
|
|
||||||
margin: 2px;
|
|
||||||
grid-row-gap: 3px;
|
|
||||||
}
|
|
||||||
#astrologie-btn-edit,
|
|
||||||
#calendar-btn-edit{
|
|
||||||
grid-row: 1;
|
|
||||||
grid-column: 1;
|
|
||||||
margin: auto;
|
|
||||||
color: rgba(0, 0, 0, 0.5);
|
|
||||||
}
|
|
||||||
#astrologie-btn-edit:hover,
|
|
||||||
#calendar-btn-edit:hover {
|
|
||||||
color: #FFF;
|
|
||||||
border: 0px solid #000;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
#calendar-btn-1min{
|
|
||||||
grid-row: 1;
|
|
||||||
grid-column: 1;
|
|
||||||
margin: auto;
|
|
||||||
color: rgba(0, 0, 0, 0.7);
|
|
||||||
}
|
|
||||||
#calendar-btn-5min{
|
|
||||||
grid-row: 1;
|
|
||||||
grid-column: 2;
|
|
||||||
margin: auto;
|
|
||||||
color: rgba(0, 0, 0, 0.7);
|
|
||||||
}
|
|
||||||
#calendar-btn-10min{
|
|
||||||
grid-row: 2;
|
|
||||||
grid-column: 1;
|
|
||||||
margin-left: 10px;
|
|
||||||
color: rgba(0, 0, 0, 0.7);
|
|
||||||
}
|
|
||||||
|
|
||||||
#calendar-btn-20min{
|
|
||||||
grid-row: 2;
|
|
||||||
grid-column: 2;
|
|
||||||
margin-left: 10px;
|
|
||||||
color: rgba(0, 0, 0, 0.7);
|
|
||||||
}
|
|
||||||
|
|
||||||
#calendar-btn-lyre{
|
|
||||||
grid-row: 1;
|
|
||||||
grid-column: 1;
|
|
||||||
height: fit-content;
|
|
||||||
text-align: center;
|
|
||||||
vertical-align: center;
|
|
||||||
color: rgba(0, 0, 0, 0.7);
|
|
||||||
}
|
|
||||||
|
|
||||||
#calendar-btn-vaisseau{
|
|
||||||
grid-row: 1;
|
|
||||||
grid-column: 2;
|
|
||||||
height: fit-content;
|
|
||||||
text-align: center;
|
|
||||||
vertical-align: center;
|
|
||||||
color: rgba(0, 0, 0, 0.7);
|
|
||||||
}
|
|
||||||
|
|
||||||
#calendar-btn-30min{
|
|
||||||
grid-row: 2;
|
|
||||||
grid-column: 1;
|
|
||||||
height: fit-content;
|
|
||||||
text-align: center;
|
|
||||||
vertical-align: center;
|
|
||||||
color: rgba(0, 0, 0, 0.7);
|
|
||||||
}
|
|
||||||
#calendar-btn-1heure{
|
|
||||||
grid-row: 2;
|
|
||||||
grid-column: 2;
|
|
||||||
height: fit-content;
|
|
||||||
text-align: center;
|
|
||||||
vertical-align: center;
|
|
||||||
color: rgba(0, 0, 0, 0.7);
|
|
||||||
}
|
|
||||||
#calendar-btn-container-left:hover{
|
|
||||||
color: #FFF;
|
|
||||||
border: 0px solid #000;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
#calendar-btn-1min:hover {
|
|
||||||
color: #FFF;
|
|
||||||
border: 0px solid #000;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
#calendar-btn-5min:hover {
|
|
||||||
color: #FFF;
|
|
||||||
border: 0px solid #000;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
#calendar-btn-10min:hover {
|
|
||||||
color: #FFF;
|
|
||||||
border: 0px solid #000;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
#calendar-btn-20min:hover {
|
|
||||||
color: #FFF;
|
|
||||||
border: 0px solid #000;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
#calendar-btn-30min:hover {
|
|
||||||
color: #FFF;
|
|
||||||
border: 0px solid #000;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
#calendar-btn-1heure:hover {
|
|
||||||
color: #FFF;
|
|
||||||
border: 0px solid #000;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
#calendar-btn-vaisseau:hover {
|
|
||||||
color: #FFF;
|
|
||||||
border: 0px solid #000;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
#calendar-btn-lyre:hover{
|
|
||||||
color: #FFF;
|
|
||||||
border: 0px solid #000;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendar-weekday-time{
|
|
||||||
display: grid;
|
|
||||||
float: left;
|
|
||||||
width: 55%;
|
|
||||||
padding-top: 0px;
|
|
||||||
padding-bottom: 0px;
|
|
||||||
margin: auto;
|
|
||||||
color: #CCC;
|
|
||||||
}
|
|
||||||
#calendar-weekday{
|
|
||||||
grid-column: 1;
|
|
||||||
grid-row: 1;
|
|
||||||
text-align: center;
|
|
||||||
margin: auto;
|
|
||||||
border-bottom: 1px solid #111;
|
|
||||||
}
|
|
||||||
.calendar-time{
|
|
||||||
grid-column: 1;
|
|
||||||
grid-row: 2;
|
|
||||||
font-size: 1.10rem;
|
|
||||||
text-align: center;
|
|
||||||
margin: auto;
|
|
||||||
cursor: pointer;
|
|
||||||
display: inline-flex;
|
|
||||||
}
|
|
||||||
.calendar-nombre-astral{
|
|
||||||
grid-column: 2;
|
|
||||||
grid-row: 2;
|
|
||||||
font-size: 1.10rem;
|
|
||||||
text-align: right;
|
|
||||||
margin: auto;
|
|
||||||
cursor: pointer;
|
|
||||||
display: inline-flex;
|
|
||||||
}
|
|
||||||
.calendar-time-disp{
|
|
||||||
position: relative;
|
|
||||||
bottom: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Tooltip container */
|
/* Tooltip container */
|
||||||
.tooltip {
|
.tooltip {
|
||||||
@ -1328,7 +1045,7 @@ display: inline-flex;
|
|||||||
display: inline-block;
|
display: inline-block;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
font-family: CaslonPro;
|
font-family: Neuropol;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
padding: 4px 12px 0px 12px;
|
padding: 4px 12px 0px 12px;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
@ -1349,7 +1066,7 @@ display: inline-flex;
|
|||||||
/*************************************************************/
|
/*************************************************************/
|
||||||
#pause
|
#pause
|
||||||
{
|
{
|
||||||
font-family: CaslonAntique;
|
font-family: Neuropol;
|
||||||
font-size: 2rem;
|
font-size: 2rem;
|
||||||
}
|
}
|
||||||
#pause > h3
|
#pause > h3
|
||||||
@ -1357,7 +1074,7 @@ display: inline-flex;
|
|||||||
color: #CCC
|
color: #CCC
|
||||||
}
|
}
|
||||||
#pause > img {
|
#pause > img {
|
||||||
content: url(img/rdd_pause.png);
|
content: url(../img/logos/sos_logo_small.webp);
|
||||||
height: 256px;
|
height: 256px;
|
||||||
width: 256px;
|
width: 256px;
|
||||||
top: -75px;
|
top: -75px;
|
||||||
@ -1365,7 +1082,7 @@ display: inline-flex;
|
|||||||
}
|
}
|
||||||
|
|
||||||
#logo {
|
#logo {
|
||||||
content : url(img/logo.png);
|
content : url(../img/logos/sos_logo_small.webp);
|
||||||
width: 80px;
|
width: 70px;
|
||||||
height: 68px;
|
height: 60px;
|
||||||
}
|
}
|
@ -2,11 +2,11 @@
|
|||||||
"name": "foundryvtt-shadows-over-sol",
|
"name": "foundryvtt-shadows-over-sol",
|
||||||
"title": "Shadows over Sol",
|
"title": "Shadows over Sol",
|
||||||
"description": "Shadows over Sol for FoundryVTT",
|
"description": "Shadows over Sol for FoundryVTT",
|
||||||
"version": "0.0.4",
|
"version": "0.0.5",
|
||||||
"manifestPlusVersion": "1.0.0",
|
"manifestPlusVersion": "1.0.0",
|
||||||
"minimumCoreVersion": "0.7.5",
|
"minimumCoreVersion": "0.7.5",
|
||||||
"compatibleCoreVersion": "0.7.9",
|
"compatibleCoreVersion": "0.7.9",
|
||||||
"templateVersion": 4,
|
"templateVersion": 5,
|
||||||
"author": "LeRatierBretonnien",
|
"author": "LeRatierBretonnien",
|
||||||
"esmodules": [ "module/sos-main.js" ],
|
"esmodules": [ "module/sos-main.js" ],
|
||||||
"styles": ["styles/simple.css"],
|
"styles": ["styles/simple.css"],
|
||||||
|
@ -73,31 +73,40 @@
|
|||||||
},
|
},
|
||||||
"scores": {
|
"scores": {
|
||||||
"edge": {
|
"edge": {
|
||||||
|
"label": "SCORES.Edge",
|
||||||
"value": 0
|
"value": 0
|
||||||
},
|
},
|
||||||
"wealth": {
|
"wealth": {
|
||||||
|
"label": "SCORES.Wealth",
|
||||||
"value": 0
|
"value": 0
|
||||||
},
|
},
|
||||||
"lifestyle": {
|
"lifestyle": {
|
||||||
|
"label": "SCORES.Lifestyle",
|
||||||
"value": 0
|
"value": 0
|
||||||
},
|
},
|
||||||
"defense": {
|
"defense": {
|
||||||
"value1": 0,
|
"label": "SCORES.Defense",
|
||||||
"value2": 0
|
"value": 0,
|
||||||
|
"critical": 0
|
||||||
},
|
},
|
||||||
"dr": {
|
"dr": {
|
||||||
|
"label": "SCORES.DR",
|
||||||
"value": 0
|
"value": 0
|
||||||
},
|
},
|
||||||
"shock": {
|
"shock": {
|
||||||
|
"label": "SCORES.Shock",
|
||||||
"value": 0
|
"value": 0
|
||||||
},
|
},
|
||||||
"totalwounds": {
|
"totalwounds": {
|
||||||
|
"label": "SCORES.Totalwounds",
|
||||||
"value": 0
|
"value": 0
|
||||||
},
|
},
|
||||||
"wound": {
|
"wound": {
|
||||||
|
"label": "SCORES.Wounds",
|
||||||
"value": 0
|
"value": 0
|
||||||
},
|
},
|
||||||
"encumbrance": {
|
"encumbrance": {
|
||||||
|
"label": "SCORES.Encumbrance",
|
||||||
"value": 0
|
"value": 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -41,8 +41,8 @@
|
|||||||
{{else}}
|
{{else}}
|
||||||
<li class="stat flexrow list-item" data-attribute="{{key}}">
|
<li class="stat flexrow list-item" data-attribute="{{key}}">
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<a name={{key}}>{{localize stat.label}}</a></span>
|
<span class="stat-label flexrow tooltip tooltip-nobottom" name="data.stat.{{key}}.label"><a name={{key}}>{{localize stat.label}}</a></span>
|
||||||
<select class="stat-value flexrow" type="text" name="data.stats.{{key}}.value" value="{{stat.value}}" data-dtype="Number">
|
<select class="stat-value flexrow" type="text" name="data.stats.{{key}}.value" value="{{stat.value}}" data-dtype="Number" {{#unless @root.data.editStatSkill}}disabled{{/unless}}>
|
||||||
{{#select stat.value}}
|
{{#select stat.value}}
|
||||||
{{>"systems/foundryvtt-shadows-over-sol/templates/stat-option-list.html"}}
|
{{>"systems/foundryvtt-shadows-over-sol/templates/stat-option-list.html"}}
|
||||||
{{/select}}
|
{{/select}}
|
||||||
@ -52,7 +52,26 @@
|
|||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="flex-group-left flexcol">
|
||||||
|
<ul class="stat-list alternate-list">
|
||||||
|
{{#each data.scores as |score key|}}
|
||||||
|
<li class="stat flexrow list-item" data-attribute="{{key}}">
|
||||||
|
<span class="stat-label flexrow tooltip tooltip-nobottom" name="data.scores.{{key}}.label"><a name={{key}}>{{localize score.label}}</a></span>
|
||||||
|
<input class="stat-value flexrow" type="text" name="data.scores.{{key}}.xp" value="{{score.value}}" data-dtype="Number" {{#unless @root.data.editStatSkill}}disabled{{/unless}} />
|
||||||
|
</li>
|
||||||
|
{{/each}}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<span class="edge-name">Edge cards</span><a class="edge-draw">Draw edge cards</a>
|
||||||
|
{{#each data.edgecard as |card key|}}
|
||||||
|
<img class="card-img" src="{{card.path}}" data-edit="img" title="{{card.cardName}}" />
|
||||||
|
{{/each}}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{!-- Skills Tab --}}
|
{{!-- Skills Tab --}}
|
||||||
|
Loading…
Reference in New Issue
Block a user