Implementations diverses

This commit is contained in:
2021-04-13 14:01:22 +02:00
parent a898f4ce5a
commit 8170c1d407
18 changed files with 317 additions and 443 deletions

View File

@@ -86,30 +86,45 @@ export class VadentisUtility extends Entity {
let attacker = game.actors.get(combatData.attackerActorId);
let defender = game.actors.get(combatData.targetActorId);
if( attacker && defender) {
let defense = defender.getDefenseScore();
let defense = defender.getDefenseScore();
let attaque = attacker.getAttaqueScore();
let myRoll = await this.processRoll("1d20+"+attaque);
let msgData = {
alias: this.name,
title: `${attacker.name} attaque ${defender.name}`
}
let formulaTouche = "1d20+"+attaque;
let formulaFull = attacker.buildTexteFormula( attacker.data.data.combat.attaque );
let myRoll = await this.processRoll(formulaTouche);
if (myRoll.results[0] > 1 && myRoll.total >= defense) { // Success !
let degats = `normaux : ${combatData.arme.data.damage}`;
let formula = combatData.arme.data.damage.toLowerCase();
msgData.msg = `${attacker.name} a réussi son attaque sur ${defender.name} (${formulaFull} => ${myRoll.total} / ${defense}) !<br> Les dégâts sont ${degats}.`;
if ( myRoll.results[0] == 20) {
degats = `critiques : ${combatData.arme.data.criticaldamage}`;
formula = combatData.arme.data.criticaldamage.toLowerCase();
msgData.msg += `<br>C'est une <strong>réussite critique</strong> !`;
}
ChatMessage.create( { content: `${attacker.name} a réussi son attaque sur ${defender.name} (${myRoll.total} / ${defense}) !<br> Les dégâts sont ${degats}`});
msgData.img = 'systems/foundryvtt-vadentis/images/icons/tchat_attaque_réussie.webp'
formula = this.processDamageString( formula, attacker );
let degatsRoll = await this.processRoll(formula);
ChatMessage.create( { content: `Et les dégats infligés sont de ${degatsRoll.total} (${formula}) à appliquer à ${defender.name}`});
msgData.msg +=`<br>Les dégats infligés sont de <strong>${degatsRoll.total}</strong> (${formula}).`;
defender.applyDamage( degatsRoll.total );
} else { //Echec
msgData.img = 'systems/foundryvtt-vadentis/images/icons/tchat_attaque_échouée.webp';
if ( myRoll.results[0] == 1) {
ChatMessage.create( { content: `${attacker.name} a fait un <strong>échec critique</strong> et a raté son attaque sur ${defender.name} (${myRoll.total} / ${defense}) !` });
msgData.msg = `${attacker.name} a fait un <strong>échec critique</strong> et a raté son attaque sur ${defender.name} (${myRoll.total} / ${defense}) !`;
} else {
ChatMessage.create( { content: `${attacker.name} a raté son attaque sur ${defender.name} (${myRoll.total} / ${defense}) !` });
msgData.msg = `${attacker.name} a raté son attaque sur ${defender.name} (${myRoll.total} / ${defense}) !`;
}
}
ChatMessage.create({
//whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name),
content: await renderTemplate(`systems/foundryvtt-vadentis/templates/chat-generic-result.html`, msgData)
});
} else {
ui.notifications.warn("Impossible de trouver l'attaquant et le défenseur.")
}