From e1b10bc489b65b85fc7cd2f2f57c5b5864104e4f Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Sun, 14 Mar 2021 14:22:25 +0100 Subject: [PATCH] Message si un combatant n'a pas d'actor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Par exemple, après suppression d'un acteur, les combatants correspondant aux tokens n'ont plus d'acteur. --- module/rdd-combat.js | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/module/rdd-combat.js b/module/rdd-combat.js index 0412decd..9091df1d 100644 --- a/module/rdd-combat.js +++ b/module/rdd-combat.js @@ -50,7 +50,12 @@ export class RdDCombatManager extends Combat { /* -------------------------------------------- */ cleanSonne() { for (let combatant of this.data.combatants) { - combatant.actor.verifierSonneRound(this.current.round); + if (combatant.actor){ + combatant.actor.verifierSonneRound(this.current.round); + } + else{ + ui.notifications.warn(`Le combatant ${combatant.name} n'est pas associé à un acteur!`) + } } } @@ -171,10 +176,13 @@ export class RdDCombatManager extends Combat { /* -------------------------------------------- */ static buildListeActionsCombat(combatant) { - const actor = combatant.actor; // Easy access - let items = actor.data.items; + if (combatant.actor == undefined) { + ui.notifications.warn(`Le combatant ${combatant.name} n'est pas associé à un acteur, impossible de déterminer ses actions de combat!`) + return []; + } + let items = combatant.actor.data.items; let actions = [] - if (actor.isCreature()) { + if (combatant.actor.isCreature()) { actions = actions.concat(items.filter(it => RdDItemCompetenceCreature.isCompetenceAttaque(it)) .map(competence => RdDItemCompetenceCreature.toArme(competence))); } else { @@ -184,7 +192,7 @@ export class RdDCombatManager extends Combat { .concat(RdDItemArme.mainsNues()); let competences = items.filter(it => it.type == 'competence'); - actions = actions.concat(RdDCombatManager.finalizeArmeList(armes, competences, actor.data.data.carac)); + actions = actions.concat(RdDCombatManager.finalizeArmeList(armes, competences, combatant.actor.data.data.carac)); actions.push({ name: "Draconic", data: { initOnly: true, competence: "Draconic" } }); } @@ -251,17 +259,20 @@ export class RdDCombatManager extends Combat { /* -------------------------------------------- */ static rollInitiativeCompetence(combatantId, arme) { const combatant = game.combat.getCombatant(combatantId); - const actor = combatant.actor; + if (combatant.actor == undefined) { + ui.notifications.warn(`Le combatant ${combatant.name} n'est pas associé à un acteur, impossible de déterminer ses actions de combat!`) + return []; + } let initInfo = ""; let initOffset = 0; let caracForInit = 0; let compNiveau = 0; let competence = { name: "Aucune" }; - if (actor.getSurprise() == "totale") { + if (combatant.actor.getSurprise() == "totale") { initOffset = -1; // To force 0 initInfo = "Surprise Totale" - } else if (actor.getSurprise() == "demi") { + } else if (combatant.actor.getSurprise() == "demi") { initOffset = 0; initInfo = "Demi Surprise" } else if (arme.name == "Autre action") { @@ -276,13 +287,13 @@ export class RdDCombatManager extends Combat { compNiveau = competence.data.niveau; initInfo = arme.name + " / " + arme.data.competence; - if (actor.data.type == 'creature' || actor.data.type == 'entite') { + if (combatant.actor.data.type == 'creature' || combatant.actor.data.type == 'entite') { caracForInit = competence.data.carac_value; if (competence.data.categorie == "lancer") { initOffset = 5; } } else { - caracForInit = actor.data.data.carac[competence.data.defaut_carac].value; + caracForInit = combatant.actor.data.data.carac[competence.data.defaut_carac].value; if (competence.data.categorie == "lancer") { // Offset de principe pour les armes de jet initOffset = 4; } @@ -294,7 +305,7 @@ export class RdDCombatManager extends Combat { } } } - let malus = actor.getEtatGeneral(); // Prise en compte état général + let malus = combatant.actor.getEtatGeneral(); // Prise en compte état général // Cas des créatures et entités vs personnages let rollFormula = initOffset + "+ ( (" + RdDCombatManager.calculInitiative(compNiveau, caracForInit) + " + " + malus + ") /100)"; // Garder la trace de l'arme/compétence utilisée pour l'iniative