From 82b0ec1015fd101419f1aa27997b0594aaf6e70e Mon Sep 17 00:00:00 2001 From: sladecraven Date: Wed, 2 Dec 2020 00:09:47 +0100 Subject: [PATCH] Fix synthetic actors --- module/rdd-utility.js | 44 +++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/module/rdd-utility.js b/module/rdd-utility.js index ce1bcd25..eff98f86 100644 --- a/module/rdd-utility.js +++ b/module/rdd-utility.js @@ -617,14 +617,14 @@ export class RdDUtility { /* -------------------------------------------- */ static buildDefenseChatCard( attacker, target, rollData ) { - console.log("Attacker.defense", attacker, target, attacker.data._id, rollData.competence.data.categorie ); + console.log("Attacker.defense", attacker, target, target.actor.isToken, attacker.data._id, rollData.competence.data.categorie ); let myTarget = target.actor; let defenseMsg = { title: "Défense en combat", content: ""+myTarget.name+" doit se défendre :
" + - "Encaisser !", + "Encaisser !", whisper: ChatMessage.getWhisperRecipients( myTarget.name ), attackerid: attacker.data._id, - defenderid: myTarget.data._id, + defenderTokenId: target.data._id, rollMode: true }; @@ -633,16 +633,16 @@ export class RdDUtility { for (const arme of myTarget.data.items) { if (arme.type == "arme" && this.isArmeMelee(arme.data.competence)) { defenderArmes.push( arme ); - defenseMsg.content += "
Parer avec " + arme.name + ""; + defenseMsg.content += "
Parer avec " + arme.name + ""; } } - defenseMsg.content += "
Esquiver"; + defenseMsg.content += "
Esquiver"; } if ( rollData.competence.data.categorie == "tir" ) { for (const arme of myTarget.data.items) { // Bouclier for parry if ( arme.type == "arme" && arme.name.toLowerCase.match("bouclier") ) { defenderArmes.push( arme ); - defenseMsg.content += "
Parer avec " + arme.name + ""; + defenseMsg.content += "
Parer avec " + arme.name + ""; } } } @@ -650,10 +650,10 @@ export class RdDUtility { for (const arme of myTarget.data.items) { // Bouclier for parry Dodge/Esquive if ( arme.type == "arme" && arme.name.toLowerCase.match("bouclier") ) { defenderArmes.push( arme ); - defenseMsg.content += "
Parer avec " + arme.name + ""; + defenseMsg.content += "
Parer avec " + arme.name + ""; } } - defenseMsg.content += "
Esquiver"; + defenseMsg.content += "
Esquiver"; } defenseMsg.toSocket = true; // True per default for all players @@ -680,9 +680,9 @@ export class RdDUtility { /* -------------------------------------------- */ static _handleMsgDefense(data) { - let defenderActor = game.actors.get(data.defenderid); - if (defenderActor) { - if ((game.user.isGM && !defenderActor.hasPlayerOwner) || (defenderActor.hasPlayerOwner && (game.user.character.id == defenderActor.id))) { + let defenderToken = canvas.tokens.get(data.defenderTokenId); + if (defenderToken) { + if ((game.user.isGM && !defenderToken.actor.hasPlayerOwner) || (defenderToken.actor.hasPlayerOwner && (game.user.character.id == defenderToken.actor.data._id))) { console.log("User is pushing message...", game.user.name); game.system.rdd.rollDataHandler[data.attackerid] = duplicate(data.rollData); data.whisper = [game.user]; @@ -792,8 +792,8 @@ export class RdDUtility { static _handleMsgEncaisser(data) { if (game.user.isGM) { // Seul le GM effectue l'encaissement sur la fiche let rollData = game.system.rdd.rollDataHandler[data.attackerid]; // Retrieve the rolldata from the store - let defenderActor = game.actors.get(data.defenderid); - defenderActor.encaisserDommages(rollData); + let defenderToken = canvas.tokens.get(data.defenderTokenId); + defenderToken.actor.encaisserDommages(rollData); } } @@ -803,17 +803,17 @@ export class RdDUtility { html.on("click", '#encaisser-button', event => { event.preventDefault(); let attackerid = event.currentTarget.attributes['data-attackerid'].value; - let defenderid = event.currentTarget.attributes['data-defenderid'].value; + let defenderTokenId = event.currentTarget.attributes['data-defendertokenid'].value; if ( game.user.isGM ) { // Current user is the GM -> direct access let rollData = game.system.rdd.rollDataHandler[attackerid]; rollData.attackerid = attackerid; - rollData.defenderid = defenderid; - let defenderActor = game.actors.get(defenderid ); - defenderActor.encaisserDommages( rollData ); + rollData.defenderTokenId = defenderTokenId; + let defenderToken = canvas.tokens.get( defenderTokenId ); + defenderToken.actor.encaisserDommages( rollData ); } else { // Emit message for GM game.socket.emit("system.foundryvtt-reve-de-dragon", { msg: "msg_encaisser", - data: { attackerid: attackerid, defenderid: defenderid } + data: { attackerid: attackerid, defenderTokenId: defenderTokenId } } ); } }); @@ -821,19 +821,19 @@ export class RdDUtility { html.on("click", '#parer-button', event => { event.preventDefault(); let attackerid = event.currentTarget.attributes['data-attackerid'].value; - let defenderActor = game.actors.get(event.currentTarget.attributes['data-defenderid'].value ); + let defenderToken = canvas.tokens.get(event.currentTarget.attributes['data-defenderTokenId'].value ); let armeId = event.currentTarget.attributes['data-armeid'].value; let rollData = game.system.rdd.rollDataHandler[attackerid]; - defenderActor.parerAttaque( rollData, armeId ); + defenderToken.actor.parerAttaque( rollData, armeId ); }); html.on("click", '#esquiver-button', event => { event.preventDefault(); let attackerid = event.currentTarget.attributes['data-attackerid'].value; - let defenderActor = game.actors.get(event.currentTarget.attributes['data-defenderid'].value ); + let defenderToken = canvas.tokens.get(event.currentTarget.attributes['data-defenderTokenId'].value ); let rollData = game.system.rdd.rollDataHandler[attackerid]; //console.log("Esquive !", rollData, defenderActor); - defenderActor.esquiverAttaque( rollData ); + defenderToken.actor.esquiverAttaque( rollData ); }); html.on("click", '#particuliere-attaque', event => {