forked from public/foundryvtt-reve-de-dragon
Fixes recul/desarmement
# Conflicts: # module/rdd-combat.js
This commit is contained in:
@ -270,7 +270,7 @@ export class RdDCombat {
|
||||
/* -------------------------------------------- */
|
||||
attaqueDestinee(attackerRoll) {
|
||||
ui.notifications.info('Attaque significative grâce à la destinée')
|
||||
RdDResolutionTable.forceSignificative(attackerRoll.rolled);
|
||||
RdDResolutionTable.significativeRequise(attackerRoll.rolled);
|
||||
this.removeChatMessageActionsPasseArme(attackerRoll.passeArme);
|
||||
this._onAttaqueNormale(attackerRoll);
|
||||
}
|
||||
@ -289,7 +289,7 @@ export class RdDCombat {
|
||||
let defenderRoll = RdDCombat._getDefense(attackerRoll.passeArme);
|
||||
if (defenderRoll) {
|
||||
ui.notifications.info('Défense significative grâce à la destinée')
|
||||
RdDResolutionTable.forceSignificative(defenderRoll.rolled);
|
||||
RdDResolutionTable.significativeRequise(defenderRoll.rolled);
|
||||
this.removeChatMessageActionsPasseArme(defenderRoll.passeArme);
|
||||
if (defenderRoll.arme) {
|
||||
this._onParadeNormale(defenderRoll);
|
||||
@ -601,7 +601,6 @@ export class RdDCombat {
|
||||
|
||||
let rollData = {
|
||||
passeArme: attackerRoll.passeArme,
|
||||
forceValue: this.defender.getForceValue(),
|
||||
diffLibre: attackerRoll.diffLibre,
|
||||
attackerRoll: attackerRoll,
|
||||
competence: this.defender.getCompetence(compName),
|
||||
@ -698,7 +697,6 @@ export class RdDCombat {
|
||||
_prepareEsquive(attackerRoll, competence) {
|
||||
let rollData = {
|
||||
passeArme: attackerRoll.passeArme,
|
||||
forceValue: this.defender.getForceValue(),
|
||||
diffLibre: attackerRoll.diffLibre,
|
||||
attackerRoll: attackerRoll,
|
||||
competence: competence,
|
||||
@ -774,16 +772,13 @@ export class RdDCombat {
|
||||
}
|
||||
}
|
||||
// Si l'arme de parade n'est pas un bouclier, jet de désarmement (p.132)
|
||||
if (resistance > 0 && !RdDItemArme.getCategorieParade(rollData.arme) == 'boucliers') {
|
||||
if (resistance > 0 && RdDItemArme.getCategorieParade(rollData.arme) != 'boucliers') {
|
||||
let desarme = await RdDResolutionTable.rollData({
|
||||
caracValue: this.defender.data.data.carac.force.value,
|
||||
caracValue: this.defender.getForce(),
|
||||
finalLevel: Misc.toInt(rollData.competence.data.niveau) - dmg,
|
||||
showDice: false
|
||||
});
|
||||
rollData.show.desarme = desarme.rolled.isEchec;
|
||||
if (desarme.rolled.isEchec) {
|
||||
rollData.show.desarme = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -793,31 +788,18 @@ export class RdDCombat {
|
||||
const attackerRoll = defenderRoll.attackerRoll;
|
||||
if (this._isAttaqueCauseRecul(attackerRoll)) {
|
||||
|
||||
let impactRecul = this._computeImpactRecul(attackerRoll);
|
||||
const agilite = 10;
|
||||
if ( this.defender.data.data.carac.agilite ) {
|
||||
agilite = this.defender.data.data.carac.agilite.value;
|
||||
} else if ( this.defender.data.data.carac.force) {
|
||||
agilite = this.defender.data.data.carac.force.value;
|
||||
} else if ( this.defender.isEntiteCauchemar()) {
|
||||
agilite = this.defender.data.data.carac.reve.value;
|
||||
} else
|
||||
ui.notifications.warn("Recul impossible pour cette créature/entité");
|
||||
return;
|
||||
}
|
||||
|
||||
let rollRecul = await RdDResolutionTable.rollData({ caracValue: 10, finalLevel: impactRecul, showDice: false });
|
||||
|
||||
if (rollRecul.isSuccess) {
|
||||
const impact = this._computeImpactRecul(attackerRoll);
|
||||
const rollRecul = await RdDResolutionTable.rollData({ caracValue: 10, finalLevel: impact });
|
||||
|
||||
if (rollRecul.rolled.isSuccess) {
|
||||
defenderRoll.show.recul = 'encaisse';
|
||||
} else if (rollRecul.isETotal) {
|
||||
} else if (rollRecul.rolled.isETotal) {
|
||||
defenderRoll.show.recul = 'chute';
|
||||
}
|
||||
else {
|
||||
let chute = await RdDResolutionTable.rollData({ caracValue: agilite, finalLevel: impactRecul, showDice: false });
|
||||
defenderRoll.show.recul = (chute.isSuccess)
|
||||
? 'recul'
|
||||
: 'chute';
|
||||
const agilite = this.defender.getAgilite();
|
||||
const chute = await RdDResolutionTable.rollData({ caracValue: agilite, finalLevel: impact });
|
||||
defenderRoll.show.recul = (chute.rolled.isSuccess) ? 'recul' : 'chute';
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -827,7 +809,10 @@ export class RdDCombat {
|
||||
}
|
||||
|
||||
_computeImpactRecul(attaque) {
|
||||
return Misc.toInt(this.defender.data.data.carac.taille.value) - (attaque.forceValue + attaque.arme.data.dommagesReels);
|
||||
const taille = this.defender.getTaille();
|
||||
const force = this.attacker.getForce();
|
||||
const dommages = attaque.arme.data.dommagesReels;
|
||||
return taille - (force + dommages);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -849,7 +834,7 @@ export class RdDCombat {
|
||||
attackerRoll.defenderTokenId = defenderTokenId;
|
||||
|
||||
await this.computeRecul(defenderRoll);
|
||||
this.defender.encaisserDommages(attackerRoll, this.attacker);
|
||||
this.defender.encaisserDommages(attackerRoll, this.attacker, defenderRoll);
|
||||
} else { // envoi à un GM: les joueurs n'ont pas le droit de modifier les personnages qu'ils ne possèdent pas
|
||||
game.socket.emit("system.foundryvtt-reve-de-dragon", {
|
||||
msg: "msg_encaisser",
|
||||
|
Reference in New Issue
Block a user