diff --git a/img/icons/armors/bulwak_armor.svg b/img/icons/armors/bulwak_armor.svg new file mode 100644 index 0000000..ceffe32 --- /dev/null +++ b/img/icons/armors/bulwak_armor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/weapons/usd-1200.svg b/img/icons/weapons/usd-1200.svg new file mode 100644 index 0000000..0fea9aa --- /dev/null +++ b/img/icons/weapons/usd-1200.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/weapons/usd-3200.svg b/img/icons/weapons/usd-3200.svg new file mode 100644 index 0000000..341575b --- /dev/null +++ b/img/icons/weapons/usd-3200.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/weapons/usd-383.svg b/img/icons/weapons/usd-383.svg new file mode 100644 index 0000000..7ceac7c --- /dev/null +++ b/img/icons/weapons/usd-383.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/weapons/usd-720.svg b/img/icons/weapons/usd-720.svg new file mode 100644 index 0000000..fa09c4f --- /dev/null +++ b/img/icons/weapons/usd-720.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/module/actor-sheet.js b/module/actor-sheet.js index 2d86bb8..557f3c0 100644 --- a/module/actor-sheet.js +++ b/module/actor-sheet.js @@ -36,6 +36,11 @@ export class SoSActorSheet extends ActorSheet { if ( a.name > b.name ) return 1; return -1; }); + data.data.gears = this.actor.data.items.filter( item => item.type == 'gear'); + data.data.weapons = this.actor.data.items.filter( item => item.type == 'weapon'); + data.data.armors = this.actor.data.items.filter( item => item.type == 'armor'); + data.data.totalEncumbrance = SoSUtility.computeEncumbrance(this.actor.data.items); + data.data.subculture = this.actor.data.items.find( item => item.type == 'subculture'); data.data.geneline = this.actor.data.items.find( item => item.type == 'geneline'); data.data.editStatSkill = this.options.editStatSkill; @@ -67,7 +72,17 @@ export class SoSActorSheet extends ActorSheet { const item = this.actor.getOwnedItem(li.data("item-id")); item.sheet.render(true); }); - + html.find('.item-equip').click(ev => { + const li = $(ev.currentTarget).parents(".item"); + const item = this.actor.equipObject( li.data("item-id") ); + this.render(true); + }); + html.find('.item-worn').click(ev => { + const li = $(ev.currentTarget).parents(".item"); + const item = this.actor.wornObject( li.data("item-id") ); + this.render(true); + }); + // Delete Inventory Item html.find('.item-delete').click(ev => { const li = $(ev.currentTarget).parents(".item"); @@ -83,6 +98,16 @@ export class SoSActorSheet extends ActorSheet { const skill = this.actor.getOwnedItem(li.data("item-id")); this.actor.rollSkill(skill); }); + html.find('.skill-value').change((event) => { + let skillName = event.currentTarget.attributes.skillname.value; + //console.log("Competence changed :", skillName); + this.actor.updateSkill(skillName, parseInt(event.target.value)); + }); + html.find('.skill-xp').change((event) => { + let skillName = event.currentTarget.attributes.skillname.value; + //console.log("Competence changed :", skillName); + this.actor.updateSkillExperience(skillName, parseInt(event.target.value)); + }); html.find('.reset-deck-full').click((event) => { this.actor.resetDeckFull(); this.render(true); @@ -124,7 +149,6 @@ export class SoSActorSheet extends ActorSheet { return position; } - /* -------------------------------------------- */ /** @override */ _updateObject(event, formData) { diff --git a/module/actor.js b/module/actor.js index 1d95258..5b3c258 100644 --- a/module/actor.js +++ b/module/actor.js @@ -128,7 +128,25 @@ export class SoSActor extends Actor { computeWound() { return Math.ceil( (this.data.data.stats.strength.value + this.data.data.stats.endurance.value) / 2); } - + + /* -------------------------------------------- */ + async wornObject( itemID) { + let item = this.getOwnedItem(itemID); + if (item && item.data.data) { + let update = { _id: item._id, "data.worn": !item.data.data.worn }; + await this.updateEmbeddedEntity("OwnedItem", update); + } + } + + /* -------------------------------------------- */ + async equipObject(itemID) { + let item = this.getOwnedItem(itemID); + if (item && item.data.data) { + let update = { _id: item._id, "data.equiped": !item.data.data.equiped }; + await this.updateEmbeddedEntity("OwnedItem", update); + } + } + /* -------------------------------------------- */ async controlScores() { // Defense check @@ -155,6 +173,29 @@ export class SoSActor extends Actor { } } + /* -------------------------------------------- */ + async updateSkill(skillName, value) { + let skill = this.data.items.find( item => item.name == skillName); + if (skill) { + const update = { _id: skill._id, 'data.value': value }; + const updated = await this.updateEmbeddedEntity("OwnedItem", update); // Updates one EmbeddedEntity + } + } + /* -------------------------------------------- */ + async updateSkillExperience(skillName, value) { + let skill = this.data.items.find( item => item.name == skillName); + if (skill) { + const update = { _id: skill._id, 'data.xp': value }; + const updated = await this.updateEmbeddedEntity("OwnedItem", update); // Updates one EmbeddedEntity + } + } + + /* -------------------------------------------- */ + getApplicableConsequences( ) { + let consequences = this.data.items.filter( item => item.type == 'consequence' && item.data.severity != 'none'); + return consequences; + } + /* -------------------------------------------- */ async rollStat( statKey ) { @@ -163,7 +204,9 @@ export class SoSActor extends Actor { stat: duplicate(this.data.data.stats[statKey]), actor: this, modifierList: SoSUtility.fillRange(-10, +10), - tnList: SoSUtility.fillRange(6, 20) + tnList: SoSUtility.fillRange(6, 20), + consequencesList: duplicate( this.getApplicableConsequences() ), + malusConsequence: 0 } let html = await renderTemplate('systems/foundryvtt-shadows-over-sol/templates/dialog-flip.html', flipData); new SoSFlipDialog(flipData, html).render(true); @@ -175,10 +218,12 @@ export class SoSActor extends Actor { let flipData = { mode: 'skill', statList: duplicate(this.data.data.stats), + consequencesList: duplicate( this.getApplicableConsequences() ), skill: duplicate(skill), actor: this, modifierList: SoSUtility.fillRange(-10, +10), - tnList: SoSUtility.fillRange(6, 20) + tnList: SoSUtility.fillRange(6, 20), + malusConsequence: 0 } flipData.statList['nostat'] = { label: "No stat (ie defaulting skills)", value: 0, cardsuit: "none" } let html = await renderTemplate('systems/foundryvtt-shadows-over-sol/templates/dialog-flip.html', flipData); diff --git a/module/sos-card-deck.js b/module/sos-card-deck.js index 8a6f591..f1fca53 100644 --- a/module/sos-card-deck.js +++ b/module/sos-card-deck.js @@ -220,9 +220,9 @@ export class SoSCardDeck { // Compute final result and compare if ( flipData.mode == 'stat' ) { - flipData.baseScore = flipData.stat.value; + flipData.baseScore = flipData.stat.value + flipData.malusConsequence; } else if (flipData.mode == 'skill') { - flipData.baseScore = Math.floor(flipData.stat.value/2) + flipData.skill.data.value; + flipData.baseScore = Math.floor(flipData.stat.value/2) + flipData.skill.data.value + flipData.malusConsequence } flipData.finalScore = flipData.baseScore + flipData.cardTotal + Number(flipData.modifier); flipData.magnitude = flipData.finalScore - flipData.tn; diff --git a/module/sos-combat.js b/module/sos-combat.js index 3afd1c8..de1d05d 100644 --- a/module/sos-combat.js +++ b/module/sos-combat.js @@ -47,7 +47,7 @@ export class SoSCombat extends Combat { /* -------------------------------------------- */ async nextTurn() { - console.log("Goingo to phase !", this.phaseNumber ); + console.log("Going to phase !", this.phaseNumber ); // Get all actions for this phase let phaseIndex = this.phaseNumber - 1; let actionList = []; diff --git a/module/sos-dialog-combat-actions.js b/module/sos-dialog-combat-actions.js index 064344d..b0c0d16 100644 --- a/module/sos-dialog-combat-actions.js +++ b/module/sos-dialog-combat-actions.js @@ -5,12 +5,14 @@ export class SoSDialogCombatActions extends Dialog { /* -------------------------------------------- */ static async create( combatId, combatantId, round, uniqId ) { - + let combat = game.combats.get( combatId); + let combatActions = { actionsList: await SoSUtility.loadCompendium( 'foundryvtt-shadows-over-sol.combat-actions' ), actionPoints: SoSUtility.fillRange(0, 6), - combatId: combatId, + combatId: combatId, combatantId: combatantId, + combatantsList: combat.data.combatants, uniqId: uniqId, round: round } @@ -22,7 +24,7 @@ export class SoSDialogCombatActions extends Dialog { //console.log("ACTIONS", combatActions.actionsList ); let html = await renderTemplate('systems/foundryvtt-shadows-over-sol/templates/dialog-combat-actions.html', combatActions); - return new SoSDialogCombatActions(combatActions, html ); + return new SoSDialogCombatActions(combatActions, html , { width: 640, height: 320} ); } /* -------------------------------------------- */ @@ -56,6 +58,10 @@ export class SoSDialogCombatActions extends Dialog { let action2 = duplicate(this.combatActions.actionsList[action2Index]); let action1Index = $('#action1').val(); let action1 = duplicate(this.combatActions.actionsList[action1Index]); + + let combatant3Id = $('#combatant3').val(); + let combatant2Id = $('#combatant2').val(); + let combatant1Id = $('#combatant1').val(); let msgdata = { combatId: this.combatActions.combatId, @@ -63,6 +69,7 @@ export class SoSDialogCombatActions extends Dialog { uniqId: this.combatActions.uniqId, userId: game.userId, phaseArray: [ action1, action2, action3], + targetArray: [ combatant1Id, combatant2Id, combatant3Id], remainingAP: ap } diff --git a/module/sos-flip-dialog.js b/module/sos-flip-dialog.js index 4a6a148..63f6d04 100644 --- a/module/sos-flip-dialog.js +++ b/module/sos-flip-dialog.js @@ -1,3 +1,4 @@ +import { SoSUtility } from "./sos-utility.js"; export class SoSFlipDialog extends Dialog { @@ -11,7 +12,7 @@ export class SoSFlipDialog extends Dialog { }, default: 'flip' }; - super(conf, { classes: ["sosdialog"], width: 800, height: 800 }); + super(conf, { classes: ["sosdialog"], width: 800 }); this.flipData = flipData; } @@ -21,15 +22,32 @@ export class SoSFlipDialog extends Dialog { this.close(); } + /* -------------------------------------------- */ + updateScoreBase( ) { + let scoreBase = 0; + if ( this.flipData.mode == 'skill') { + let statKey = $('#statSelect').val(); + this.flipData.stat = duplicate( this.flipData.statList[ statKey ] ); + scoreBase = Math.floor(this.flipData.statList[ statKey ].value / 2) + this.flipData.skill.data.value; + } else { //Stat mode + let statKey = $('#statSelect').val(); + scoreBase = this.flipData.stat.value; + } + scoreBase += this.flipData.malusConsequence; + $('#score-base').text( scoreBase); + } + /* -------------------------------------------- */ async updateFlip( flipData ) { - console.log("UPDATE !!!", flipData); + //console.log("UPDATE !!!", flipData); $('.view-deck').remove(); $("#view-deck").append(await flipData.actor.cardDeck.getDeckHTML()); $('.view-edge').remove(); $("#view-edge").append(await flipData.actor.cardDeck.getEdgeHTML()); + this.updateScoreBase(); + $('.edge-card').click((event) => { let flipData = duplicate(this.flipData); flipData.modifier = $('#modifier').val(); @@ -45,6 +63,20 @@ export class SoSFlipDialog extends Dialog { } + /* -------------------------------------------- */ + updateConsequence(event) { + this.flipData.consequencesSelected = $('#consequenceSelect').val(); + let malusConsequence = 0; + for (let consequenceId of this.flipData.consequencesSelected) { + let consequence = this.flipData.consequencesList.find( item => item._id == consequenceId); + console.log(consequence, consequenceId); + malusConsequence += SoSUtility.getConsequenceMalus( consequence.data.severity ); + } + $('#consequence-malus').text(malusConsequence); + this.flipData.malusConsequence = malusConsequence; + this.updateScoreBase(); + } + /* -------------------------------------------- */ activateListeners(html) { super.activateListeners(html); @@ -64,6 +96,14 @@ export class SoSFlipDialog extends Dialog { // Setup everything onload $(function () { onLoad(); }); + html.find('#statSelect').change((event) => { + this.updateFlip(dialog.flipData ); + } ); + + html.find('#consequenceSelect').change((event) => { + this.updateConsequence( event ); + } ); + html.find('.class-view-deck').click((event) => { let flipData = duplicate(this.flipData); flipData.modifier = html.find('#modifier').val(); diff --git a/module/sos-utility.js b/module/sos-utility.js index f85cbb9..02bb582 100644 --- a/module/sos-utility.js +++ b/module/sos-utility.js @@ -2,7 +2,10 @@ import { SoSDialogCombatActions } from "./sos-dialog-combat-actions.js"; /* -------------------------------------------- */ - export class SoSUtility { +const severity2malus = { "none": 0, "light": -1, "moderate": -2, "severe": -3, "critical": -4}; + +/* -------------------------------------------- */ +export class SoSUtility { /* -------------------------------------------- */ static async preloadHandlebarsTemplates() { @@ -16,6 +19,8 @@ import { SoSDialogCombatActions } from "./sos-dialog-combat-actions.js"; 'systems/foundryvtt-shadows-over-sol/templates/item-sheet.html', 'systems/foundryvtt-shadows-over-sol/templates/item-geneline-sheet.html', 'systems/foundryvtt-shadows-over-sol/templates/item-subculture-sheet.html', + 'systems/foundryvtt-shadows-over-sol/templates/item-weapon-sheet.html', + 'systems/foundryvtt-shadows-over-sol/templates/item-commongear-sheet.html', 'systems/foundryvtt-shadows-over-sol/templates/dialog-flip.html' ] @@ -82,6 +87,23 @@ import { SoSDialogCombatActions } from "./sos-dialog-combat-actions.js"; d.render(true); } + /* -------------------------------------------- */ + static getConsequenceMalus(severity) { + return severity2malus[severity] ?? 0; + } + + /* -------------------------------------------- */ + static computeEncumbrance( items) { + let trappings = items.filter( item => item.type == 'gear' || item.type == 'armor' || item.type == 'weapon' ); + let sumEnc = 0; + for (let object of trappings) { + if ( (!object.data.worn) && (!object.data.neg) && (!object.data.containerid || object.data.containerid == "") ) { + sumEnc += (object.big > 0) ? object.big : 1; + } + } + return sumEnc; + } + /* -------------------------------------------- */ static closeAction(event) { let uniqId = event.currentTarget.attributes['data-uniq-id'].value; diff --git a/packs/gears.db b/packs/gears.db new file mode 100644 index 0000000..77ac6cb --- /dev/null +++ b/packs/gears.db @@ -0,0 +1,6 @@ +{"name":"USD-720 Widowmaker Heavy Pistol","permission":{"default":0,"pJLHbu8WlBVyfXG4":3},"type":"weapon","data":{"big":0,"computer":0,"conceal":0,"container":0,"implant":0,"neg":false,"mil":false,"software":0,"worn":false,"description":"

The ultimate man-stopper, the USD-720 “Windowmaker” Heavy Pistol is sure to leave you standing and your enemies taking a dirt nap. A long-time favorite of bounty hunters and security forces the Sol system over, this sleek .50 caliber handgun is now available on the open market! Order yours today!

\n

 

","quantity":0,"costrating":6,"defensive":0,"containerid":"","area":0,"autofire":2,"damage_club":"2M","damage_hearth":"10M","damage_spade":"15M","damage_diamond":"5M","hands":1,"pierce":0,"range":10,"reload":1,"shots":10,"stun":false,"thrown":false,"reach":false,"shallow":false,"spread":false,"category":"ballistic","equiped":false},"flags":{},"img":"systems/foundryvtt-shadows-over-sol/img/icons/weapons/usd-720.svg","effects":[],"_id":"CgOBdHEwfFMUbEYk"} +{"name":"USD-IIh Bulwak Ballistic Suite","permission":{"default":0,"pJLHbu8WlBVyfXG4":3},"type":"armor","data":{"big":0,"computer":0,"conceal":0,"container":0,"implant":0,"neg":false,"mil":false,"software":0,"worn":true,"description":"

Simply the best in light but durable ballistic protection, the USD-11h “Bulwark” Ballistic Suit stops bullets in their tracks. Utilizing Utakar’s proprietary Shell-StopperTM gel technology, the Bulwark hardens upon impact, distributing the kinetic force of the impact throughout the body. Self-sealing gel closes in seconds. Designer pockets fit most common magazines. It is available in black, charcoal, rosewood and navy.

\n

 

","quantity":0,"costrating":5,"defensive":0,"containerid":"","bulky":0,"dr":2,"gel":3,"reflect":0,"str":0,"vac":false},"flags":{},"img":"systems/foundryvtt-shadows-over-sol/img/icons/armors/bulwak_armor.svg","effects":[],"_id":"IzyB0If465nUk2Ws"} +{"name":"USD-24k Aegis Reflect Suit","permission":{"default":0,"pJLHbu8WlBVyfXG4":3},"type":"armor","data":{"big":0,"computer":0,"conceal":0,"container":0,"implant":0,"neg":false,"mil":false,"software":0,"worn":true,"description":"

Do lasers threaten to give you health problems by burning holes into your flesh? Then look no further! The USD-24k “Aegis” Reflect Suit scatters lasers before they can scatter you. Constructed of bleeding-edge materials, the Aegis refracts laser light, leaving the wearer unharmed. This comes with either a frosted or glossy finish.

\n

 

","quantity":0,"costrating":6,"defensive":0,"containerid":"","bulky":0,"dr":2,"gel":0,"reflect":3,"str":0,"vac":false},"flags":{},"img":"systems/foundryvtt-shadows-over-sol/img/icons/armors/bulwak_armor.svg","effects":[],"_id":"K6pBGZRiBzPzHHPZ"} +{"name":"USD-1200 Amazon Light Rifle","permission":{"default":0,"pJLHbu8WlBVyfXG4":3},"type":"weapon","data":{"big":0,"computer":0,"conceal":0,"container":0,"implant":0,"neg":false,"mil":false,"software":0,"worn":false,"description":"

The rifle you need when you’re on the go, the USD-1200 “Amazon” Light Rifle has beendesigned from the ground up for easy transportation and assembly. With  balancing range, magazine capacity and ease of maintenance, the Amazon gets the job done. Satisfaction guaranteed. Some assembly required.

\n

 

","quantity":0,"costrating":6,"defensive":0,"containerid":"","area":0,"autofire":2,"damage_club":"3M","damage_hearth":"12M","damage_spade":"18M","damage_diamond":"6M","hands":2,"pierce":0,"range":20,"reload":1,"shots":10,"stun":false,"thrown":false,"reach":false,"shallow":false,"spread":false,"category":"ballistic","equiped":false},"flags":{},"img":"systems/foundryvtt-shadows-over-sol/img/icons/weapons/usd-1200.svg","effects":[],"_id":"NN9iWxPKU9djFfA9"} +{"name":"USD-3200 Valkyrie Heavy Rifle","permission":{"default":0,"pJLHbu8WlBVyfXG4":3},"type":"weapon","data":{"big":0,"computer":0,"conceal":0,"container":0,"implant":0,"neg":false,"mil":false,"software":0,"worn":false,"description":"

The USD-3200 “Valkyrie” Heavy Rifle is a masterpiece of twenty-third century engi-neering, combined with sleek twenty-second century ascetics. Own the best-designed and best-looking heavy rifle on the market! It comes with two autofire settings and a designer gun case. Remember, Valkyrie means quality.

\n

 

","quantity":0,"costrating":7,"defensive":0,"containerid":"","area":0,"autofire":2,"damage_club":"3M","damage_hearth":"14M","damage_spade":"21M","damage_diamond":"7M","hands":2,"pierce":0,"range":20,"reload":1,"shots":20,"stun":false,"thrown":false,"reach":false,"shallow":false,"spread":false,"category":"ballistic","equiped":false},"flags":{},"img":"systems/foundryvtt-shadows-over-sol/img/icons/weapons/usd-3200.svg","effects":[],"_id":"O4B0meZMhDgxDXcC"} +{"name":"USD-383 Wasp Light Pistol","permission":{"default":0,"pJLHbu8WlBVyfXG4":3},"type":"weapon","data":{"big":0,"computer":0,"conceal":0,"container":0,"implant":0,"neg":false,"mil":false,"software":0,"worn":false,"description":"

A personal protection favorite, the USD-383 “Wasp” Light Pistol is ready to lock and load! Take aim at your favorite shooting  range or when your life is in danger. The gun is small enough to fit most holsters or to slip into a purse! It comes with patent-pending rubberized grip and is available in gun barrel gray, matte black, racing stripe red or powder pink. 

\n

 

","quantity":0,"costrating":5,"defensive":0,"containerid":"","area":0,"autofire":0,"damage_club":"2M","damage_hearth":"8M","damage_spade":"12M","damage_diamond":"4M","hands":1,"pierce":0,"range":10,"reload":1,"shots":10,"stun":false,"thrown":false,"reach":false,"shallow":false,"spread":false,"category":"ballistic","equiped":false},"flags":{},"img":"systems/foundryvtt-shadows-over-sol/img/icons/weapons/usd-383.svg","effects":[],"_id":"U55o7zC4bKnqpXug"} diff --git a/system.json b/system.json index 86024c4..ed367d9 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.13", + "version": "0.0.20", "manifestPlusVersion": "1.0.0", "minimumCoreVersion": "0.7.5", "compatibleCoreVersion": "0.7.9", - "templateVersion": 9, + "templateVersion": 15, "author": "LeRatierBretonnien", "esmodules": [ "module/sos-main.js" ], "styles": ["styles/simple.css"], @@ -31,6 +31,15 @@ "path": "./packs/consequences.db", "entity": "Item", "tags" : [ "consequence", "Consequences" ] + }, + { + "name": "gears", + "label": "Gears", + "system": "foundryvtt-shadows-over-sol", + "module": "foundryvtt-shadows-over-sol", + "path": "./packs/gears.db", + "entity": "Item", + "tags" : [ "gear", "weapon", "armor" ] }, { "name": "combat-actions", diff --git a/template.json b/template.json index 1a46f33..c9d705f 100644 --- a/template.json +++ b/template.json @@ -139,7 +139,8 @@ } }, "Item": { - "types": ["gear", "weapon", "armor", "container", "skill", "language", "weakness", "geneline", "subculture", "consequence", "action", "injury", "malady" ], + "types": ["gear", "weapon", "armor", "container", "skill", "language", "weakness", "geneline", + "subculture", "consequence", "action", "injury", "malady", "vehicle" ], "templates": { "commongear": { "big": 0, @@ -154,7 +155,8 @@ "description": "", "quantity": 0, "costrating": 0, - "defensive": 0 + "defensive": 0, + "containerid": "" } }, "consequence": { @@ -198,7 +200,10 @@ "templates": [ "commongear" ], "area": 0, "autofire": 0, - "damage": "", + "damage_club": "", + "damage_hearth": "", + "damage_spade": "", + "damage_diamond": "", "hands": 1, "pierce": 0, "range": 0, @@ -208,7 +213,9 @@ "thrown": false, "reach": false, "shallow": false, - "spread": false + "spread": false, + "category": "", + "equiped": false }, "armor": { "templates": [ "commongear" ], @@ -231,6 +238,7 @@ "action": { "type": "", "minap": 0, + "targetneeded": false, "description": 0 }, "injury": { diff --git a/templates/actor-sheet.html b/templates/actor-sheet.html index ea4a594..f3695d9 100644 --- a/templates/actor-sheet.html +++ b/templates/actor-sheet.html @@ -115,8 +115,8 @@ {{else}} {{skill.name}} {{/if}} - - + +
@@ -143,8 +143,8 @@ {{else}} {{skill.name}} {{/if}} - - + +
@@ -163,7 +163,7 @@ {{#each data.consequences as |conseq key|}}
  • - {{conseq.name}} + {{conseq.name}} {{#select action3}} {{#each actionsList as |action key|}} {{/each}} {{/select}} - + + + +
  • - + + + +
    - + + + + +
    diff --git a/templates/dialog-flip.html b/templates/dialog-flip.html index 97785eb..6aa5875 100644 --- a/templates/dialog-flip.html +++ b/templates/dialog-flip.html @@ -2,25 +2,46 @@

    Flip Dialog !

    - {{#if (eq mode 'stat')}} -

    - Stat Only Flip : {{localize stat.label}} ({{stat.value}}, {{stat.cardsuit}}) -

    - {{else}} -

    - Select Stat - -

    -

    - Skill Flip : {{skill.name}} ({{skill.data.value}}) -

    - {{/if}} +
    + +
    + {{#if (eq mode 'stat')}} +

    + Stat Only Flip : {{localize stat.label}} : {{stat.value}} - +

    + +

    Final Score : 0

    +
    + {{else}} +

    + Select Stat + +

    + +

    Skill Flip : {{skill.name}} ({{skill.data.value}})

    +

    Final Score : 0

    +
    + {{/if}} +
    +
    +
    + +

    Consequences malus : 0

    +
    +
    +
    @@ -32,7 +53,7 @@ {{/each}} {{/select}} - +
    @@ -42,18 +63,18 @@ {{/each}} {{/select}} - + +
    -
    - -
    -
    - - -
    -
    - -
    +
    + +
    +
    + + +
    +
    +
    diff --git a/templates/item-action-sheet.html b/templates/item-action-sheet.html index a5271a5..a88110f 100644 --- a/templates/item-action-sheet.html +++ b/templates/item-action-sheet.html @@ -29,6 +29,10 @@ +
    + + +
    diff --git a/templates/item-armor-sheet.html b/templates/item-armor-sheet.html new file mode 100644 index 0000000..3d26f84 --- /dev/null +++ b/templates/item-armor-sheet.html @@ -0,0 +1,42 @@ +
    +
    + +
    +

    +
    +
    + + {{!-- Sheet Body --}} +
    + +
    + +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    + {{>"systems/foundryvtt-shadows-over-sol/templates/item-commongear-sheet.html"}} +
    + +
    +
    diff --git a/templates/item-commongear-sheet.html b/templates/item-commongear-sheet.html new file mode 100644 index 0000000..cc763b7 --- /dev/null +++ b/templates/item-commongear-sheet.html @@ -0,0 +1,51 @@ +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + +
    + {{editor content=data.description target="data.description" button=true owner=owner editable=editable}} +
    +
    + diff --git a/templates/item-container-sheet.html b/templates/item-container-sheet.html new file mode 100644 index 0000000..fd50779 --- /dev/null +++ b/templates/item-container-sheet.html @@ -0,0 +1,22 @@ +
    +
    + +
    +

    +
    +
    + + {{!-- Sheet Body --}} +
    + +
    + +
    + + +
    + {{>"systems/foundryvtt-shadows-over-sol/templates/item-commongear-sheet.html"}} +
    + +
    +
    diff --git a/templates/item-gear-sheet.html b/templates/item-gear-sheet.html new file mode 100644 index 0000000..8dd71f5 --- /dev/null +++ b/templates/item-gear-sheet.html @@ -0,0 +1,17 @@ +
    +
    + +
    +

    +
    +
    + + {{!-- Sheet Body --}} +
    + +
    + {{>"systems/foundryvtt-shadows-over-sol/templates/item-commongear-sheet.html"}} +
    + +
    +
    diff --git a/templates/item-vehicle-sheet.html b/templates/item-vehicle-sheet.html new file mode 100644 index 0000000..24a6c7a --- /dev/null +++ b/templates/item-vehicle-sheet.html @@ -0,0 +1,42 @@ +
    +
    + +
    +

    +
    +
    + + {{!-- Sheet Body --}} +
    + +
    + +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    + {{>"systems/foundryvtt-shadows-over-sol/templates/item-commongear-sheet.html"}} +
    + +
    +
    diff --git a/templates/item-weapon-sheet.html b/templates/item-weapon-sheet.html new file mode 100644 index 0000000..15cc5a3 --- /dev/null +++ b/templates/item-weapon-sheet.html @@ -0,0 +1,90 @@ +
    +
    + +
    +

    +
    +
    + + {{!-- Sheet Body --}} +
    + +
    + +
    + + +
    + +
    + + + + + + + + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    + + {{>"systems/foundryvtt-shadows-over-sol/templates/item-commongear-sheet.html"}} +
    + +
    +