forked from public/foundryvtt-reve-de-dragon
#13 - Fight management update
This commit is contained in:
@ -411,7 +411,8 @@ export class RdDUtility {
|
||||
/* -------------------------------------------- */
|
||||
static findCompetence(compList, compName)
|
||||
{
|
||||
return compList.find(item => item.name == compName && (item.type =="competence" || item.type =="competencecreature"))
|
||||
compName = compName.toLowerCase();
|
||||
return compList.find(item => item.name.toLowerCase() == compName && (item.type =="competence" || item.type == "competencecreature"))
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -436,7 +437,7 @@ export class RdDUtility {
|
||||
static isArmeMelee( compName)
|
||||
{
|
||||
let comp = compName.toLowerCase();
|
||||
if (comp.match("epée") || comp.match("hache") || comp.match("fleau") || comp.match("mass") || comp.match("lance") || comp.match("hast") || comp == "dague" || comp=="bouclier")
|
||||
if (comp.match("epée") || comp.match("épée") || comp.match("hache") || comp.match("fleau") || comp.match("mass") || comp.match("lance") || comp.match("hast") || comp == "dague" || comp=="bouclier")
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
@ -444,6 +445,7 @@ export class RdDUtility {
|
||||
/* -------------------------------------------- */
|
||||
static buildDefenseChatCard( attacker, target, rollData )
|
||||
{
|
||||
console.log("Attacker.defense", attacker, target, attacker.data._id, rollData.competence.data.categorie );
|
||||
let myTarget = target.actor;
|
||||
let defenseMsg = { title: "Défense en combat",
|
||||
content: "<strong>"+myTarget.name+"</strong> doit se défendre : <br><span class='chat-card-button-area'>" +
|
||||
@ -453,7 +455,7 @@ export class RdDUtility {
|
||||
rollMode: true
|
||||
};
|
||||
|
||||
if ( rollData.competence.data.categorie == "melee" ) { // Melee attack
|
||||
if ( rollData.competence.data.categorie == 'melee' || rollData.competence.data.categorie == 'creature') { // Melee attack or creature
|
||||
let defenderArmes = [];
|
||||
for (const arme of myTarget.data.items) {
|
||||
if (arme.type == "arme" && this.isArmeMelee(arme.data.competence)) {
|
||||
@ -481,7 +483,10 @@ export class RdDUtility {
|
||||
defenseMsg.content += "<br><a class='chat-card-button' id='esquiver-button' data-attackerid='"+attacker.data._id + "' data-defenderid='" + myTarget.data._id + "'>Esquiver</a></span>";
|
||||
}
|
||||
|
||||
defenseMsg.toSocket = myTarget.hasPlayerOwner;
|
||||
defenseMsg.toSocket = true; // True per default for all players
|
||||
if (game.user.isGM) { // In GM case, only if target is a player
|
||||
defenseMsg.toSocket = myTarget.hasPlayerOwner;
|
||||
}
|
||||
|
||||
return defenseMsg;
|
||||
}
|
||||
@ -491,17 +496,17 @@ export class RdDUtility {
|
||||
{
|
||||
console.log(">>>>> MSG RECV", sockmsg);
|
||||
if ( sockmsg.msg == "msg_encaisser" ) {
|
||||
if ( game.user.isGM ) {
|
||||
console.log("Encaisser ici !!!");
|
||||
if ( game.user.isGM ) { // Seul le GM effectue l'encaissement sur la fiche
|
||||
let rollData = game.system.rdd.rollDataHandler[sockmsg.data.attackerid]; // Retrieve the rolldata from the store
|
||||
let defenderActor = game.actors.get( sockmsg.data.defenderid );
|
||||
defenderActor.encaisserDommages( sockmsg.data );
|
||||
defenderActor.encaisserDommages( rollData );
|
||||
}
|
||||
} else if (sockmsg.msg == "msg_defense" ) {
|
||||
let defenderActor = game.actors.get( sockmsg.data.defenderid );
|
||||
console.log("Defense message reçu : ", defenderActor.hasPlayerOwner, game.user.character.id, defenderActor.id);
|
||||
if ( defenderActor ) {
|
||||
if ( (game.user.isGM && !defenderActor.hasPlayerOwner) || (defenderActor.hasPlayerOwner && (game.user.character.id == defenderActor.id) ) ) {
|
||||
console.log("User is pushing message...", game.user.name);
|
||||
defenderActor.currentRollData = duplicate(sockmsg.data.rollData);
|
||||
sockmsg.data.whisper = [ game.user ];
|
||||
sockmsg.data.blind = true;
|
||||
sockmsg.data.rollMode = "blindroll";
|
||||
@ -516,36 +521,37 @@ export class RdDUtility {
|
||||
{
|
||||
html.on("click", '#encaisser-button', event => {
|
||||
event.preventDefault();
|
||||
let attackerActor = game.actors.get( event.currentTarget.attributes['data-attackerid'].value );
|
||||
let rollData = attackerActor.getFlag( "world", "rollData" );
|
||||
rollData.attackerid = event.currentTarget.attributes['data-attackerid'].value;
|
||||
rollData.defenderid = event.currentTarget.attributes['data-defenderid'].value;
|
||||
let defenderActor = game.actors.get( rollData.defenderid );
|
||||
let attackerid = event.currentTarget.attributes['data-attackerid'].value;
|
||||
let defenderid = event.currentTarget.attributes['data-defenderid'].value;
|
||||
if ( game.user.isGM ) { // Current user is the GM -> direct access
|
||||
console.log("Encaissement direct", rollData);
|
||||
let rollData = game.system.rdd.rollDataHandler[attackerid];
|
||||
rollData.attackerid = attackerid;
|
||||
rollData.defenderid = defenderid;
|
||||
let defenderActor = game.actors.get(defenderid );
|
||||
defenderActor.encaisserDommages( rollData );
|
||||
} else { // Emit message for GM
|
||||
game.socket.emit("system.foundryvtt-reve-de-dragon", {
|
||||
msg: "msg_encaisser",
|
||||
data: rollData
|
||||
data: { attackerid: attackerid, defenderid: defenderid }
|
||||
} );
|
||||
}
|
||||
});
|
||||
|
||||
html.on("click", '#parer-button', event => {
|
||||
event.preventDefault();
|
||||
let attackerActor = game.actors.get(event.currentTarget.attributes['data-attackerid'].value );
|
||||
//let attackerActor = game.actors.get(event.currentTarget.attributes['data-attackerid'].value );
|
||||
let defenderActor = game.actors.get(event.currentTarget.attributes['data-defenderid'].value );
|
||||
let armeId = event.currentTarget.attributes['data-armeid'].value;
|
||||
let rollData = attackerActor.getFlag( "world", "rollData" );
|
||||
let rollData = defenderActor.currentRollData;
|
||||
defenderActor.parerAttaque( rollData, armeId );
|
||||
});
|
||||
|
||||
html.on("click", '#esquiver-button', event => {
|
||||
event.preventDefault();
|
||||
let attackerActor = game.actors.get(event.currentTarget.attributes['data-attackerid'].value );
|
||||
//let attackerActor = game.actors.get(event.currentTarget.attributes['data-attackerid'].value );
|
||||
let defenderActor = game.actors.get(event.currentTarget.attributes['data-defenderid'].value );
|
||||
let rollData = attackerActor.getFlag( "world", "rollData" );
|
||||
let rollData = defenderActor.currentRollData;
|
||||
console.log("Esquive !", rollData, defenderActor);
|
||||
defenderActor.esquiverAttaque( rollData );
|
||||
});
|
||||
|
||||
|
Reference in New Issue
Block a user