#13 - Fight management update

This commit is contained in:
2020-11-12 23:50:37 +01:00
parent a554f173c1
commit 568cb764a2
6 changed files with 60 additions and 61 deletions

View File

@ -151,7 +151,7 @@ export class RdDActor extends Actor {
// Fight management !
let defenseMsg;
let encaisser = false;
if (rollData.arme) {
if (rollData.arme || rollData.competence.name.toLowerCase() == 'esquive' ) {
// In case of fight, replace the message per dommages + localization. it indicates if result is OK or not
if (rollData.attackerRoll) { // Defense case !
if (rolled.isSuccess) {
@ -231,8 +231,10 @@ export class RdDActor extends Actor {
}
// Save it for fight in the flags area
console.log("Saving Flag", this);
await this.setFlag('world', 'rollData', null);
await this.setFlag('world', 'rollData', rollData);
game.system.rdd.rollDataHandler[this.data._id] = duplicate(rollData);
// Final chat message
let chatOptions = {
@ -246,6 +248,7 @@ export class RdDActor extends Actor {
// This an attack, generate the defense message
if (defenseMsg) {
defenseMsg.rollData = duplicate(rollData);
if (defenseMsg.toSocket) {
game.socket.emit("system.foundryvtt-reve-de-dragon", {
msg: "msg_defense",
@ -714,49 +717,35 @@ export class RdDActor extends Actor {
this.rollCompetence( armeName ); //Bypass mode!
}
/* -------------------------------------------- */
async rollCreatureCompetence( compName, armeItem=undefined, attackerRoll=undefined )
{
let compItem = RdDUtility.findCompetence( this.data.items, compName);
if ( compItem.data.iscombat ) {
armeItem = { name: compName, data: { dommages: compItem.data.dommages} };
}
compItem.data.defaut_carac = "carac_creature"; // Fake default competence
let rollData = {
"competence": compItem,
"arme": armeItem,
"carac": { carac_creature: { label: compName, value: compItem.data.carac_value } },
"bonusmalusTable": CONFIG.RDD.bonusmalus,
"etat": this.data.data.compteurs.etat.value,
"bmValue": (attackerRoll) ? attackerRoll.bmValue : 0,
"attackerRoll": attackerRoll,
"finalLevel": 0
}
let html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/dialog-competence.html', rollData);
if (armeItem) {
new RdDRollDialog("arme", html, rollData, this ).render(true);
} else {
new RdDRollDialog("competence", html, rollData, this ).render(true);
}
}
/* -------------------------------------------- */
async rollCompetence( compName, armeItem=undefined, attackerRoll=undefined )
{
console.log("!!!!!!", compName, armeItem);
let compItem = RdDUtility.findCompetence( this.data.items, compName);
console.log("!!!!!!", compName, this.data.items, compItem);
// Common rollData values
let rollData = {
"competence": compItem,
"arme": armeItem,
"carac": this.data.data.carac,
"bonusmalusTable": CONFIG.RDD.bonusmalus,
"etat": this.data.data.compteurs.etat.value,
"bmValue": (attackerRoll) ? attackerRoll.bmValue : 0,
"attackerRoll": attackerRoll,
"finalLevel": 0
}
bonusmalusTable: CONFIG.RDD.bonusmalus,
etat: this.data.data.compteurs.etat.value,
bmValue: (attackerRoll) ? attackerRoll.bmValue : 0,
attackerRoll: attackerRoll,
finalLevel: 0
}
if ( compItem.type == 'competencecreature') { // Specific case for Creatures
if ( compItem.data.iscombat ) {
armeItem = { name: compName, data: { dommages: compItem.data.dommages} };
}
compItem.data.defaut_carac = "carac_creature"; // Fake default competence
compItem.data.categorie = "creature"; // Fake default competence
rollData.competence = compItem;
rollData.arme = armeItem;
rollData.carac = { carac_creature: { label: compName, value: compItem.data.carac_value } };
} else { // Usual competence
rollData.competence = compItem;
rollData.arme = armeItem;
rollData.carac = this.data.data.carac;
}
let html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/dialog-competence.html', rollData);
if (armeItem) {
new RdDRollDialog("arme", html, rollData, this ).render(true);
@ -844,7 +833,6 @@ export class RdDActor extends Actor {
/* -------------------------------------------- */
esquiverAttaque( attackerRoll )
{
console.log("Going to DODGE !!!!!!!!!", attackerRoll.bmValue);
this.rollCompetence( "esquive", undefined, attackerRoll );
}