From 5ee0daccc7b5ac48ec504644971ede2429891a95 Mon Sep 17 00:00:00 2001 From: sladecraven Date: Sun, 15 Nov 2020 11:15:36 +0100 Subject: [PATCH] =?UTF-8?q?#19=20:=20Gestion=20des=20entit=C3=A9s=20dans?= =?UTF-8?q?=20les=20combats?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- module/actor.js | 53 ++++++++++++++++++++------------ module/rdd-roll-dialog.js | 3 ++ packs/competences-entites.db | 12 ++------ system.json | 4 +-- template.json | 6 ++++ templates/dialog-competence.html | 4 ++- 6 files changed, 50 insertions(+), 32 deletions(-) diff --git a/module/actor.js b/module/actor.js index f196e47d..4fd1aa9d 100644 --- a/module/actor.js +++ b/module/actor.js @@ -195,6 +195,9 @@ export class RdDActor extends Actor { rollData.degats = new Roll("2d10").roll().total + rollData.domArmePlusDom; rollData.loc = RdDUtility.getLocalisation(); for (let target of game.user.targets) { + rollData.mortalite = (rollData.mortalite) ? rollData.mortalite : "mortel";// Force default + rollData.mortalite = (target.actor.data.type == 'entite') ? "cauchemar" : rollData.mortalite; + console.log("Mortalité : ", rollData.mortalite, target.actor.data.type); defenseMsg = RdDUtility.buildDefenseChatCard(this, target, rollData); explications += "
Cible : " + target.actor.data.name; } @@ -246,6 +249,7 @@ export class RdDActor extends Actor { } } + /* -------------------------------------------- */ _calculBonusDommages(carac, arme, isForce=false) { const dmgArme = parseInt(arme.data.dommages) + (isForce)? 5 : 0; const dmgPerso = parseInt(this.data.data.attributs.plusdom.value); @@ -258,6 +262,7 @@ export class RdDActor extends Actor { return dmgArme + dmgPerso; } + /* -------------------------------------------- */ async _rollLancementDeSort(rollData, rolled) { let sort = duplicate(rollData.selectedSort); @@ -314,6 +319,7 @@ export class RdDActor extends Actor { return explications } + /* -------------------------------------------- */ async sortMisEnReserve(rollData, sort) { let reserve = duplicate(this.data.data.reve.reserve); reserve.list.push({ coord: rollData.coord, sort: sort, draconic: duplicate(rollData.selectedDraconic) }); @@ -469,6 +475,12 @@ export class RdDActor extends Actor { computeEtatGeneral( ) { let data = this.data.data; + // Pas d'état général pour les entités forçage à 0 + if ( this.data.type == 'entite') { + data.compteurs.etat.value = 0; + return; + } + // Pour les autres let state = 0; state = state - (data.sante.vie.max - data.sante.vie.value); if (data.sante.fatigue) // Creatures n'ont pas de fatigue @@ -576,7 +588,7 @@ export class RdDActor extends Actor { if ( data.value > data.max ) data.value = data.max; if ( data.value < 0 ) data.value = 0; - if (name == "endurance") { + if (name == "endurance" && this.data.type != 'entite' ) { if ( sante.fatigue && inc < 0 ) // Each endurance lost -> fatigue lost sante.fatigue.value = sante.fatigue.value - inc @@ -638,11 +650,11 @@ export class RdDActor extends Actor { /* -------------------------------------------- */ manageBlessures( blessuresData ) { - let workData = duplicate(blessuresData); - // Fast exit + if ( this.data.type == 'entite') return; // Une entité n'a pas de blessures if ( blessuresData.legeres + blessuresData.graves + blessuresData.critiques == 0 ) return; + let workData = duplicate(blessuresData); let blessures = duplicate(this.data.data.blessures); // Manage blessures if ( workData.legeres > 0 ) { @@ -813,23 +825,23 @@ export class RdDActor extends Actor { this.rollCompetence( armeName ); //Bypass mode! } - /* -------------------------------------------- */ - async rollCompetence( name, armeItem=undefined, attackerRoll=undefined ) - { - let competence = RdDUtility.findCompetence( this.data.items, name); - console.log("rollCompetence !!!", competence, armeItem, attackerRoll); - // Common rollData values - let rollData = { - ajustementsConditions: CONFIG.RDD.ajustementsConditions, - difficultesLibres: CONFIG.RDD.difficultesLibres, - etat: this.data.data.compteurs.etat.value, - diffConditions: 0, - diffLibre: (attackerRoll) ? attackerRoll.diffLibre : 0, - attackerRoll: attackerRoll, - finalLevel: 0 - } + /* -------------------------------------------- */ + async rollCompetence( name, armeItem=undefined, attackerRoll=undefined ) { + let competence = RdDUtility.findCompetence( this.data.items, name); + console.log("rollCompetence !!!", competence, armeItem, attackerRoll); + // Common rollData values + let rollData = { + ajustementsConditions: CONFIG.RDD.ajustementsConditions, + difficultesLibres: CONFIG.RDD.difficultesLibres, + etat: this.data.data.compteurs.etat.value, + diffConditions: 0, + diffLibre: (attackerRoll) ? attackerRoll.diffLibre : 0, + attackerRoll: attackerRoll, + finalLevel: 0, + coupsNonMortels: false + } - if ( competence.type == 'competencecreature') { // Specific case for Creatures + if ( competence.type == 'competencecreature') { // Specific case for Creatures if ( competence.data.iscombat ) { armeItem = { name: name, data: { dommages: competence.data.dommages} }; } @@ -898,7 +910,8 @@ export class RdDActor extends Actor { let degatsReel = attackerRoll.degats - armure; let result = RdDUtility.computeBlessuresSante(degatsReel, attackerRoll.mortalite); - this.santeIncDec("vie", result.vie); + if ( this.data.type != 'entite') // Pas de PV chez les entités + this.santeIncDec("vie", result.vie); this.santeIncDec("endurance", result.endurance); result.locName = attackerRoll.loc.label; diff --git a/module/rdd-roll-dialog.js b/module/rdd-roll-dialog.js index 11fafe98..f1615405 100644 --- a/module/rdd-roll-dialog.js +++ b/module/rdd-roll-dialog.js @@ -141,6 +141,9 @@ export class RdDRollDialog extends Dialog { console.log("RdDRollDialog - Cout reve", ptreve); updateRollResult(rollData); }); + html.find('#coupsNonMortels').change((event) => { + this.rollData.mortalite = event.currentTarget.checked ? "non-mortel" : "non-mortel"; + }); } /* -------------------------------------------- */ diff --git a/packs/competences-entites.db b/packs/competences-entites.db index eae40968..519236fb 100644 --- a/packs/competences-entites.db +++ b/packs/competences-entites.db @@ -1,17 +1,11 @@ {"name":"Esquive","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":false,"dommages":0,"description":"

Morsure de la créature

"},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/competence_esquive.png","effects":[],"_id":"0Ms9iKxqigNNpZEx"} {"_id":"18wcei5hlEInsBFO","name":"Attaque","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":true,"dommages":0,"description":"

Morsure de la créature

","carac-value":null},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-griffes.png","effects":[]} {"_id":"3Crwg8cx2JOb697T","name":"Parade","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":false,"dommages":0,"description":"

Morsure de la créature

","carac-value":null},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/competence_saut.png","effects":[]} +{"_id":"9Y83OsQgeyR5oCdH","name":"Griffes","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":true,"dommages":0,"description":"

Morsure de la créature

","carac-value":null},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.BjqRrGtHtTzuNpZB"}},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-griffes.png","effects":[]} {"_id":"QGULMUoC9JXFze0r","name":"Bouclier Lourd","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":true,"dommages":0,"description":"

Morsure de la créature

","carac-value":null},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/competence_bouclier.png","effects":[]} {"_id":"WsYnwR8GcOxfuCI0","name":"Bras-Galet","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":true,"dommages":0,"description":"

Morsure de la créature

","carac-value":null},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/competence_course.png","effects":[]} {"name":"Corps à Corps","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":true,"dommages":0,"description":"

Morsure de la créature

"},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/competence_corps_a_corps.png","effects":[],"_id":"c0I93Q53i4ZmxpyT"} -{"name":"Morsure","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":false,"dommages":0,"description":"

Morsure de la créature

"},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-morsure.png","effects":[],"_id":"j1xHCzfIeYKgXxoH"} {"name":"Bec","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":true,"dommages":0,"description":"

Morsure de la créature

"},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.os88Rsp7mBkahqmh"}},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-beak.png","effects":[],"_id":"d5SZ09sFaG3cL2Rg"} -{"name":"Griffes et Crocs","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":true,"dommages":0,"description":"

Morsure de la créature

"},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.BjqRrGtHtTzuNpZB"}},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-griffes.png","effects":[],"_id":"9Y83OsQgeyR5oCdH"} -{"_id":"9Y83OsQgeyR5oCdH","name":"Griffes","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":true,"dommages":0,"description":"

Morsure de la créature

","carac-value":null},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.BjqRrGtHtTzuNpZB"}},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-griffes.png","effects":[]} -{"_id":"3Crwg8cx2JOb697T","name":"Parade","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":false,"dommages":0,"description":"

Morsure de la créature

","carac-value":null},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/competence_saut.png","effects":[]} -{"name":"Epée Sorde","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":true,"dommages":0,"description":"

Morsure de la créature

"},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-humanoides.YTKld5ggDsHqwYoR"}},"img":"systems/foundryvtt-reve-de-dragon/icons/competence_epee_1_main.png","effects":[],"_id":"gPOQd9NI7AFH0whX"} -{"_id":"gPOQd9NI7AFH0whX","name":"Epée Bâtarde","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":true,"dommages":0,"description":"

Morsure de la créature

","carac-value":null},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-humanoides.YTKld5ggDsHqwYoR"}},"img":"systems/foundryvtt-reve-de-dragon/icons/competence_epee_1_main.png","effects":[]} -{"_id":"gPOQd9NI7AFH0whX","name":"Epée Bâtarde","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":true,"dommages":0,"description":"

Morsure de la créature

","carac-value":null},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-humanoides.YTKld5ggDsHqwYoR"}},"img":"systems/foundryvtt-reve-de-dragon/icons/competence_epee_1_main.png","effects":[]} -{"name":"Bras-bouches","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":true,"dommages":0,"description":"

Morsure de la créature

"},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.NctG7suzvGE7ZZzj"}},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-brasbouche.png","effects":[],"_id":"db8E8HwROw1ZcwRR"} -{"_id":"db8E8HwROw1ZcwRR","name":"Crocs","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":true,"dommages":0,"description":"

Morsure de la créature

","carac-value":null},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.NctG7suzvGE7ZZzj"}},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-brasbouche.png","effects":[]} {"_id":"db8E8HwROw1ZcwRR","name":"Crocs","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":true,"dommages":0,"description":"

Morsure de la créature

","carac-value":null},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.NctG7suzvGE7ZZzj"}},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-brasbouche.png","effects":[]} +{"_id":"gPOQd9NI7AFH0whX","name":"Epée Bâtarde","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":true,"dommages":0,"description":"

Morsure de la créature

","carac-value":null},"flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-humanoides.YTKld5ggDsHqwYoR"}},"img":"systems/foundryvtt-reve-de-dragon/icons/competence_epee_1_main.png","effects":[]} +{"name":"Morsure","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":false,"dommages":0,"description":"

Morsure de la créature

"},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-morsure.png","effects":[],"_id":"j1xHCzfIeYKgXxoH"} diff --git a/system.json b/system.json index bf3ac155..132188c0 100644 --- a/system.json +++ b/system.json @@ -2,10 +2,10 @@ "name": "foundryvtt-reve-de-dragon", "title": "Rêve de Dragon", "description": "Rêve de Dragon RPG for FoundryVTT", - "version": "0.9.44", + "version": "0.9.45", "minimumCoreVersion": "0.7.5", "compatibleCoreVersion": "0.7.6", - "templateVersion": 45, + "templateVersion": 46, "author": "LeRatierBretonnien", "esmodules": [ "module/rdd-main.js", "module/hook-renderChatLog.js" ], "styles": ["styles/simple.css"], diff --git a/template.json b/template.json index c611e197..18fbf7be 100644 --- a/template.json +++ b/template.json @@ -50,6 +50,12 @@ "derivee": false } }, + "compteurs": { + "etat": { + "value": 0, + "label": "Etat général" + } + }, "attributs": { "plusdom": { "type": "number", diff --git a/templates/dialog-competence.html b/templates/dialog-competence.html index 5c919c39..f1eeccce 100644 --- a/templates/dialog-competence.html +++ b/templates/dialog-competence.html @@ -19,7 +19,7 @@ {{/each}} {{/select}} - + {{/if}}