diff --git a/fonts/garamond.ttf b/fonts/garamond.ttf new file mode 100644 index 0000000..47b0178 Binary files /dev/null and b/fonts/garamond.ttf differ diff --git a/fonts/neuropol.ttf b/fonts/neuropol.ttf new file mode 100644 index 0000000..2bf0370 Binary files /dev/null and b/fonts/neuropol.ttf differ diff --git a/img/icons/filter.svg b/img/icons/filter.svg new file mode 100644 index 0000000..cc87a0f --- /dev/null +++ b/img/icons/filter.svg @@ -0,0 +1,59 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/img/icons/locked.svg b/img/icons/locked.svg new file mode 100644 index 0000000..6033b6c --- /dev/null +++ b/img/icons/locked.svg @@ -0,0 +1,60 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/img/icons/no-filter.svg b/img/icons/no-filter.svg new file mode 100644 index 0000000..1d09e88 --- /dev/null +++ b/img/icons/no-filter.svg @@ -0,0 +1,63 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/img/icons/unlocked.svg b/img/icons/unlocked.svg new file mode 100644 index 0000000..f86c359 --- /dev/null +++ b/img/icons/unlocked.svg @@ -0,0 +1,64 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/img/logos/sos_logo_small.webp b/img/logos/sos_logo_small.webp new file mode 100644 index 0000000..217f214 Binary files /dev/null and b/img/logos/sos_logo_small.webp differ diff --git a/lang/en.json b/lang/en.json index 8959dd5..c0d675f 100644 --- a/lang/en.json +++ b/lang/en.json @@ -5,6 +5,16 @@ "SHEET.TabGears": "Gears", "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.mental": "mental", "STATS.strength": "Strength", diff --git a/module/actor-sheet.js b/module/actor-sheet.js index c58ff9c..9f5d44a 100644 --- a/module/actor-sheet.js +++ b/module/actor-sheet.js @@ -16,14 +16,17 @@ export class SoSActorSheet extends ActorSheet { width: 640, //height: 720, 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() { let data = super.getData(); - + + data.data.edgecard = this.actor.getEdgesCard(); + data.data.editStatSkill = this.options.editStatSkill; console.log("stats", data); //data.stats = duplicate(this.actor.stats); //data.scores = duplicate(this.actor.scores); @@ -58,6 +61,21 @@ export class SoSActorSheet extends ActorSheet { const li = $(ev.currentTarget).parents(".item"); 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); + }); + + } /* -------------------------------------------- */ diff --git a/module/actor.js b/module/actor.js index 9b26bc8..5cffaab 100644 --- a/module/actor.js +++ b/module/actor.js @@ -1,3 +1,4 @@ +import { SoSCardDeck } from "./sos-card-deck.js"; import { SoSUtility } from "./sos-utility.js"; @@ -36,18 +37,95 @@ export class SoSActor extends Actor { } /* -------------------------------------------- */ - prepareData() { + async 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(); } /* -------------------------------------------- */ - /** - * Prepare Character type specific data - */ - async _prepareCharacterData(actorData) { - // Initialize empty items + getDefense( ) { + return this.data.data.scores.defense; + } + /* -------------------------------------------- */ + 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]) ); } } diff --git a/module/sos-card-deck.js b/module/sos-card-deck.js index f055211..efe9ae5 100644 --- a/module/sos-card-deck.js +++ b/module/sos-card-deck.js @@ -4,45 +4,66 @@ const NB_POKER_CARD = 54; const IDX2CARDFAMILY = ['c', 'd', 'h', 's']; /* -------------------------------------------- */ -export class SoSCardDeck extends Application { +export class SoSCardDeck { /* -------------------------------------------- */ - static async create(data, options) { - data.deck = []; - data.discard = []; - data.cardState = []; - - return super.create(data, options); + initCardDeck(actor) { + + this.data = {}; + this.data.deck = []; + this.data.discard = []; + this.data.cardState = []; + this.data.cardEdge = []; + this.data.actor = actor; + + this.shuffleDeck(); } /* -------------------------------------------- */ shuffleDeck() { this.cleanCardList(); // Randomize deck - while (data.deck.length != NB_POKER_CARD) { + while (this.data.deck.length != NB_POKER_CARD) { let idx = new Roll("1d54").roll().total; if (!this.data.cardState[idx - 1]) { if (idx == 53) { // Red Joker - data.deck.push = { cardName: 'jr' } + this.data.deck.push( { cardName: 'jr' } ); } else if (idx == 54) { // Black Joker - data.deck.push = { cardName: 'jb' } + this.data.deck.push({ cardName: 'jb' }); } else { let familyIdx = idx % 4; - let cardName = IDX2CARDFAMILY[familyIdx] + String((idx % 13) + 1); - data.deck.push = { cardName: cardName } + let cardIdx = String( (idx % 13) + 1); + cardIdx = (cardIdx.length < 2) ? "0"+cardIdx: cardIdx; + let cardName = IDX2CARDFAMILY[familyIdx] + cardIdx; + this.data.deck.push( { cardName: cardName } ); } 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() { - data.discard = []; // Reinit discard pile - data.deck = []; + this.data.discard = []; // Reinit discard pile + this.data.deck = []; 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 ); + } + } \ No newline at end of file diff --git a/styles/simple.css b/styles/simple.css index 661669f..9f564df 100644 --- a/styles/simple.css +++ b/styles/simple.css @@ -1,53 +1,37 @@ /* ==================== (A) Fonts ==================== */ @font-face { - font-family: "GoudyAcc"; - src: url('../fonts/goudyacc.ttf') format("truetype"); + font-family: "Garamond"; + src: url('../fonts/garamond.ttf') format("truetype"); } @font-face { - font-family: "MedievalSharp"; - src: url('../fonts/MedievalSharp.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"); + font-family: "Neuropol"; + src: url('../fonts/neuropol.ttf') format("truetype"); } :root { /* =================== 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-weight: normal; --window-header-title-color: #f5f5f5; - --major-button-font-family: CaslonAntique; + --major-button-font-family: Garamond; --major-button-font-size: 1.25rem; --major-button-font-weight: normal; --major-button-color: #dadada; - --tab-header-font-family: CaslonAntique; + --tab-header-font-family: Garamond; --tab-header-font-size: 1.2rem; --tab-header-font-weight: 700; --tab-header-color: #403f3e; --tab-header-color-active: #4a0404; - --actor-input-font-family: CaslonAntique; + --actor-input-font-family: Garamond; --actor-input-font-size: 1.2rem; --actor-input-font-weight: 500; --actor-input-color: black; - --actor-label-font-family: CaslonAntique; + --actor-label-font-family: Garamond; --actor-label-font-size: 1.2rem; --actor-label-font-weight: 700; --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");*/ /* Global styles & Font */ .window-app { - font-family: CaslonAntique; + font-family: Garamond; text-align: justify; font-size: 16px; letter-spacing: 1px; } /* 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 nav.sheet-tabs {font-family: "CaslonAntique";} /* 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 { - font-family: "CaslonAntique"; /* For sheet parts */ +.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: "Garamond";} /* For nav and title */ +.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: "Garamond"; /* For sheet parts */ } .window-header{ @@ -209,7 +193,7 @@ table {border: 1px solid #7a7971;} /* Styles limited to foundryvtt-reve-de-dragon sheets */ -.foundryvtt-reve-de-dragon .sheet-header { +.foundryvtt-shadows-over-sol .sheet-header { -webkit-box-flex: 0; -ms-flex: 0 0 210px; flex: 0 0 210px; @@ -229,7 +213,7 @@ table {border: 1px solid #7a7971;} margin-bottom: 10px; } -.foundryvtt-reve-de-dragon .sheet-header .profile-img { +.foundryvtt-shadows-over-sol .sheet-header .profile-img { -webkit-box-flex: 0; -ms-flex: 0 0 128px; flex: 0 0 128px; @@ -240,6 +224,12 @@ table {border: 1px solid #7a7971;} object-position: 50% 0; } +.card-img { + height: 128px; + width: 90px; + margin-right: 10px; +} + .button-img { vertical-align: baseline; width: 8%; @@ -263,34 +253,34 @@ table {border: 1px solid #7a7971;} vertical-align: bottom; } -.foundryvtt-reve-de-dragon .sheet-header .header-fields { +.foundryvtt-shadows-over-sol .sheet-header .header-fields { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; } -.foundryvtt-reve-de-dragon .sheet-header h1.charname { +.foundryvtt-shadows-over-sol .sheet-header h1.charname { height: 50px; padding: 0px; margin: 5px 0; border-bottom: 0; } -.foundryvtt-reve-de-dragon .sheet-header h1.charname input { +.foundryvtt-shadows-over-sol .sheet-header h1.charname input { width: 100%; height: 100%; margin: 0; } -.foundryvtt-reve-de-dragon .sheet-tabs { +.foundryvtt-shadows-over-sol .sheet-tabs { -webkit-box-flex: 0; -ms-flex: 0; flex: 0; } -.foundryvtt-reve-de-dragon .sheet-body, -.foundryvtt-reve-de-dragon .sheet-body .tab, -.foundryvtt-reve-de-dragon .sheet-body .tab .editor { +.foundryvtt-shadows-over-sol .sheet-body, +.foundryvtt-shadows-over-sol .sheet-body .tab, +.foundryvtt-shadows-over-sol .sheet-body .tab .editor { height: 100%; } @@ -312,69 +302,69 @@ table {border: 1px solid #7a7971;} padding: 0 3px; } -.foundryvtt-reve-de-dragon .tox .tox-editor-container { +.foundryvtt-shadows-over-sol .tox .tox-editor-container { background: #fff; } -.foundryvtt-reve-de-dragon .tox .tox-edit-area { +.foundryvtt-shadows-over-sol .tox .tox-edit-area { padding: 0 8px; } -.foundryvtt-reve-de-dragon .resource-label { +.foundryvtt-shadows-over-sol .resource-label { font-weight: bold; text-transform: uppercase; } -.foundryvtt-reve-de-dragon .tabs { +.foundryvtt-shadows-over-sol .tabs { height: 40px; border-top: 1px solid #AAA; border-bottom: 1px solid #AAA; } -.foundryvtt-reve-de-dragon .tabs .item { +.foundryvtt-shadows-over-sol .tabs .item { line-height: 40px; font-weight: bold; } -.foundryvtt-reve-de-dragon .tabs .item.active { +.foundryvtt-shadows-over-sol .tabs .item.active { text-decoration: underline; text-shadow: none; } -.foundryvtt-reve-de-dragon .items-list { +.foundryvtt-shadows-over-sol .items-list { list-style: none; margin: 7px 0; padding: 0; overflow-y: auto; } -.foundryvtt-reve-de-dragon .items-list .item-header { +.foundryvtt-shadows-over-sol .items-list .item-header { font-weight: bold; } -.foundryvtt-reve-de-dragon .items-list .item { +.foundryvtt-shadows-over-sol .items-list .item { height: 30px; line-height: 24px; padding: 3px 0; 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; -ms-flex: 0 0 24px; flex: 0 0 24px; margin-right: 5px; } -.foundryvtt-reve-de-dragon .items-list .item img { +.foundryvtt-shadows-over-sol .items-list .item img { display: block; } -.foundryvtt-reve-de-dragon .items-list .item-name { +.foundryvtt-shadows-over-sol .items-list .item-name { margin: 0; } -.foundryvtt-reve-de-dragon .items-list .item-controls { +.foundryvtt-shadows-over-sol .items-list .item-controls { -webkit-box-flex: 0; -ms-flex: 0 0 86px; flex: 0 0 86px; @@ -746,7 +736,7 @@ ul, li { .tokenhudext { display: flex; flex: 0 !important; - font-family: CaslonPro; + font-family: Neuropol; font-weight: 600; } .tokenhudext.left { @@ -984,279 +974,6 @@ ul, li { 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 { @@ -1328,7 +1045,7 @@ display: inline-flex; display: inline-block; cursor: pointer; color: #ffffff; - font-family: CaslonPro; + font-family: Neuropol; font-size: 14px; padding: 4px 12px 0px 12px; text-decoration: none; @@ -1349,7 +1066,7 @@ display: inline-flex; /*************************************************************/ #pause { - font-family: CaslonAntique; + font-family: Neuropol; font-size: 2rem; } #pause > h3 @@ -1357,7 +1074,7 @@ display: inline-flex; color: #CCC } #pause > img { - content: url(img/rdd_pause.png); + content: url(../img/logos/sos_logo_small.webp); height: 256px; width: 256px; top: -75px; @@ -1365,7 +1082,7 @@ display: inline-flex; } #logo { - content : url(img/logo.png); - width: 80px; - height: 68px; + content : url(../img/logos/sos_logo_small.webp); + width: 70px; + height: 60px; } \ No newline at end of file diff --git a/system.json b/system.json index 07d8b5b..603926a 100644 --- a/system.json +++ b/system.json @@ -2,11 +2,11 @@ "name": "foundryvtt-shadows-over-sol", "title": "Shadows over Sol", "description": "Shadows over Sol for FoundryVTT", - "version": "0.0.4", + "version": "0.0.5", "manifestPlusVersion": "1.0.0", "minimumCoreVersion": "0.7.5", "compatibleCoreVersion": "0.7.9", - "templateVersion": 4, + "templateVersion": 5, "author": "LeRatierBretonnien", "esmodules": [ "module/sos-main.js" ], "styles": ["styles/simple.css"], diff --git a/template.json b/template.json index 01f2b30..6ee0bf3 100644 --- a/template.json +++ b/template.json @@ -73,31 +73,40 @@ }, "scores": { "edge": { + "label": "SCORES.Edge", "value": 0 }, "wealth": { + "label": "SCORES.Wealth", "value": 0 }, "lifestyle": { + "label": "SCORES.Lifestyle", "value": 0 }, "defense": { - "value1": 0, - "value2": 0 + "label": "SCORES.Defense", + "value": 0, + "critical": 0 }, "dr": { + "label": "SCORES.DR", "value": 0 }, "shock": { + "label": "SCORES.Shock", "value": 0 }, "totalwounds": { + "label": "SCORES.Totalwounds", "value": 0 }, "wound": { + "label": "SCORES.Wounds", "value": 0 }, "encumbrance": { + "label": "SCORES.Encumbrance", "value": 0 } } diff --git a/templates/actor-sheet.html b/templates/actor-sheet.html index 9fd7c81..e2b8b8c 100644 --- a/templates/actor-sheet.html +++ b/templates/actor-sheet.html @@ -41,8 +41,8 @@ {{else}}
  • {{/if}} - {{localize stat.label}} - {{#select stat.value}} {{>"systems/foundryvtt-shadows-over-sol/templates/stat-option-list.html"}} {{/select}} @@ -52,7 +52,26 @@ {{/each}} +
    + +
    + +
    + Edge cardsDraw edge cards + {{#each data.edgecard as |card key|}} + + {{/each}} + +
    + {{!-- Skills Tab --}}