Big WIP...
This commit is contained in:
@ -97,7 +97,7 @@ export class RdDCombatManager extends Combat {
|
||||
}
|
||||
rollFormula = "2+( (" + RdDCombatManager.calculInitiative(competence.system.niveau, competence.system.carac_value) + ")/100)";
|
||||
} else {
|
||||
for (const itemData of combatant.actor.data.items) {
|
||||
for (const itemData of combatant.actor.items) {
|
||||
if (itemData.type == "arme" && itemData.data.equipe) {
|
||||
armeCombat = duplicate(itemData);
|
||||
}
|
||||
@ -428,9 +428,9 @@ export class RdDCombat {
|
||||
: "Vous devez choisir une cible à attaquer!");
|
||||
}
|
||||
else {
|
||||
const defender = target?.actor;
|
||||
const defenderTokenId = target?.data._id;
|
||||
if ( defender.type == 'entite' && defender.data.data.definition.typeentite == 'nonincarne') {
|
||||
const defender = target?.actor
|
||||
const defenderTokenId = target?.id
|
||||
if ( defender.type == 'entite' && defender.system.definition.typeentite == 'nonincarne') {
|
||||
ui.notifications.warn("Vous ne pouvez pas cibler une entité non incarnée !!!!");
|
||||
} else {
|
||||
return this.create(attacker, defender, defenderTokenId, target)
|
||||
@ -531,8 +531,8 @@ export class RdDCombat {
|
||||
this.attacker = attacker;
|
||||
this.defender = defender;
|
||||
this.target = target;
|
||||
this.attackerId = this.attacker.data._id;
|
||||
this.defenderId = this.defender.data._id;
|
||||
this.attackerId = this.attacker.id;
|
||||
this.defenderId = this.defender.id;
|
||||
this.defenderTokenId = defenderTokenId;
|
||||
}
|
||||
|
||||
@ -664,7 +664,7 @@ export class RdDCombat {
|
||||
if (!await this.accorderEntite('avant-attaque')) {
|
||||
return;
|
||||
}
|
||||
if (arme.data.cac == 'empoignade' && this.attacker.isCombatTouche()) {
|
||||
if (arme.system.cac == 'empoignade' && this.attacker.isCombatTouche()) {
|
||||
ChatMessage.create({
|
||||
alias: this.attacker.name,
|
||||
whisper: ChatUtility.getWhisperRecipientsAndGMs(this.attacker.name),
|
||||
@ -707,7 +707,7 @@ export class RdDCombat {
|
||||
_prepareAttaque(competence, arme) {
|
||||
let rollData = {
|
||||
passeArme: randomID(16),
|
||||
mortalite: arme?.data.mortalite,
|
||||
mortalite: arme?.system.mortalite,
|
||||
coupsNonMortels: false,
|
||||
competence: competence,
|
||||
surprise: this.attacker.getSurprise(true),
|
||||
@ -724,7 +724,7 @@ export class RdDCombat {
|
||||
}
|
||||
else {
|
||||
// sans armes: à mains nues
|
||||
const niveau = competence.data.niveau;
|
||||
const niveau = competence.system.niveau;
|
||||
const init = RdDCombatManager.calculInitiative(niveau, this.attacker.system.carac['melee'].value);
|
||||
rollData.arme = RdDItemArme.mainsNues({ niveau: niveau, initiative: init });
|
||||
}
|
||||
@ -738,9 +738,9 @@ export class RdDCombat {
|
||||
// force toujours, sauf empoignade
|
||||
// finesse seulement en mélée, pour l'empoignade, ou si la difficulté libre est de -1 minimum
|
||||
// rapidité seulement en mêlée, si l'arme le permet, et si la difficulté libre est de -1 minimum
|
||||
const isForce = !rollData.arme.data.empoignade;
|
||||
const isFinesse = rollData.arme.data.empoignade || isMeleeDiffNegative;
|
||||
const isRapide = !rollData.arme.data.empoignade && isMeleeDiffNegative && rollData.arme.data.rapide;
|
||||
const isForce = !rollData.arme.system.empoignade;
|
||||
const isFinesse = rollData.arme.system.empoignade || isMeleeDiffNegative;
|
||||
const isRapide = !rollData.arme.system.empoignade && isMeleeDiffNegative && rollData.arme.system.rapide;
|
||||
// si un seul choix possible, le prendre
|
||||
if (isForce && !isFinesse && !isRapide) {
|
||||
return await this.choixParticuliere(rollData, "force");
|
||||
@ -775,7 +775,7 @@ export class RdDCombat {
|
||||
attackerRoll.dmg = RdDBonus.dmg(attackerRoll, this.attacker.getBonusDegat(), this.defender.isEntiteCauchemar());
|
||||
let defenderRoll = { attackerRoll: attackerRoll, passeArme: attackerRoll.passeArme, show: {} }
|
||||
attackerRoll.show = {
|
||||
cible: this.target ? this.defender.data.name : 'la cible',
|
||||
cible: this.target ? this.defender.system.name : 'la cible',
|
||||
isRecul: (attackerRoll.particuliere == 'force' || attackerRoll.tactique == 'charge')
|
||||
}
|
||||
await RdDResolutionTable.displayRollData(attackerRoll, this.attacker, 'chat-resultat-attaque.html');
|
||||
@ -796,7 +796,7 @@ export class RdDCombat {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async _sendMessageDefense(attackerRoll, defenderRoll, essaisPrecedents = undefined) {
|
||||
console.log("RdDCombat._sendMessageDefense", attackerRoll, defenderRoll, essaisPrecedents, " / ", this.attacker, this.target, this.attackerId, attackerRoll.competence.data.categorie);
|
||||
console.log("RdDCombat._sendMessageDefense", attackerRoll, defenderRoll, essaisPrecedents, " / ", this.attacker, this.target, this.attackerId, attackerRoll.competence.system.categorie);
|
||||
|
||||
this.removeChatMessageActionsPasseArme(attackerRoll.passeArme);
|
||||
if (essaisPrecedents) {
|
||||
@ -821,7 +821,7 @@ export class RdDCombat {
|
||||
armes: this._filterArmesParade(this.defender, attackerRoll.competence, attackerRoll.arme),
|
||||
diffLibre: attackerRoll.ajustements?.diffLibre?.value ?? 0,
|
||||
attaqueParticuliere: attackerRoll.particuliere,
|
||||
attaqueCategorie: attackerRoll.competence.data.categorie,
|
||||
attaqueCategorie: attackerRoll.competence.system.categorie,
|
||||
attaqueArme: attackerRoll.arme,
|
||||
surprise: this.defender.getSurprise(true),
|
||||
dmg: attackerRoll.dmg,
|
||||
@ -853,8 +853,8 @@ export class RdDCombat {
|
||||
// envoyer le message au destinataire
|
||||
game.socket.emit(SYSTEM_SOCKET_ID, {
|
||||
msg: "msg_defense", data: {
|
||||
attackerId: this.attacker?.data._id,
|
||||
defenderId: this.defender?.data._id,
|
||||
attackerId: this.attacker?.id,
|
||||
defenderId: this.defender?.id,
|
||||
defenderTokenId: this.defenderTokenId,
|
||||
defenderRoll: defenderRoll,
|
||||
paramChatDefense: paramChatDefense,
|
||||
@ -865,12 +865,12 @@ export class RdDCombat {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
_filterArmesParade(defender, competence) {
|
||||
let items = defender.data.items;
|
||||
let items = defender.items;
|
||||
items = items.filter(it => RdDItemArme.isArmeUtilisable(it) || RdDItemCompetenceCreature.isCompetenceParade(it))
|
||||
for (let item of items) {
|
||||
item.data.nbUsage = defender.getItemUse(item._id); // Ajout du # d'utilisation ce round
|
||||
item.system.nbUsage = defender.getItemUse(item.id); // Ajout du # d'utilisation ce round
|
||||
}
|
||||
switch (competence.data.categorie) {
|
||||
switch (competence.system.categorie) {
|
||||
case 'tir':
|
||||
case 'lancer':
|
||||
return items.filter(item => RdDItemArme.getCategorieParade(item) == 'boucliers')
|
||||
@ -902,7 +902,7 @@ export class RdDCombat {
|
||||
console.log("RdDCombat._onEchecTotal >>>", rollData);
|
||||
|
||||
const arme = rollData.arme;
|
||||
const avecArme = !['', 'sans-armes', 'armes-naturelles'].includes(arme?.data.categorie_parade ?? '');
|
||||
const avecArme = !['', 'sans-armes', 'armes-naturelles'].includes(arme?.system.categorie_parade ?? '');
|
||||
const action = (rollData.attackerRoll ? (arme ? "la parade" : "l'esquive") : "l'attaque");
|
||||
ChatUtility.createChatWithRollMode(this.defender.name, {
|
||||
content: `<strong>Maladresse à ${action}!</strong> ` + await RdDRollTables.getMaladresse({ arme: avecArme })
|
||||
@ -921,7 +921,7 @@ export class RdDCombat {
|
||||
console.log("RdDCombat.choixParticuliere >>>", rollData, choix);
|
||||
|
||||
if (choix != "rapidite") {
|
||||
this.attacker.incDecItemUse(rollData.arme._id);
|
||||
this.attacker.incDecItemUse(rollData.arme.id);
|
||||
}
|
||||
|
||||
this.removeChatMessageActionsPasseArme(rollData.passeArme);
|
||||
@ -1101,11 +1101,11 @@ export class RdDCombat {
|
||||
|
||||
const dmg = attackerRoll.dmg.dmgArme + attackerRoll.dmg.dmgActor;
|
||||
let arme = defenderRoll.arme;
|
||||
let resistance = Misc.toInt(arme.data.resistance);
|
||||
if (arme.data.magique) {
|
||||
let resistance = Misc.toInt(arme.system.resistance);
|
||||
if (arme.system.magique) {
|
||||
defenderRoll.show.deteriorationArme = 'resiste'; // Par défaut
|
||||
if (arme.data.resistance_magique == undefined) arme.data.resistance_magique = 0; // Quick fix
|
||||
if (dmg > arme.data.resistance_magique) { // Jet uniquement si dommages supérieur à résistance magique (cf. 274)
|
||||
if (arme.system.resistance_magique == undefined) arme.system.resistance_magique = 0; // Quick fix
|
||||
if (dmg > arme.system.resistance_magique) { // Jet uniquement si dommages supérieur à résistance magique (cf. 274)
|
||||
// Jet de résistance de l'arme de parade (p.132)
|
||||
let resistRoll = await RdDResolutionTable.rollData({
|
||||
caracValue: resistance,
|
||||
@ -1113,7 +1113,7 @@ export class RdDCombat {
|
||||
showDice: HIDE_DICE
|
||||
});
|
||||
if (!resistRoll.rolled.isSuccess) {
|
||||
let perteResistance = (dmg - arme.data.resistance_magique)
|
||||
let perteResistance = (dmg - arme.system.resistance_magique)
|
||||
resistance -= perteResistance;
|
||||
defenderRoll.show.deteriorationArme = resistance <= 0 ? 'brise' : 'perte';
|
||||
defenderRoll.show.perteResistance = perteResistance;
|
||||
@ -1140,7 +1140,7 @@ export class RdDCombat {
|
||||
if (ReglesOptionelles.isUsing('defenseurDesarme') && resistance > 0 && RdDItemArme.getCategorieParade(defenderRoll.arme) != 'boucliers') {
|
||||
let desarme = await RdDResolutionTable.rollData({
|
||||
caracValue: this.defender.getForce(),
|
||||
finalLevel: Misc.toInt(defenderRoll.competence.data.niveau) - dmg,
|
||||
finalLevel: Misc.toInt(defenderRoll.competence.system.niveau) - dmg,
|
||||
showDice: HIDE_DICE
|
||||
});
|
||||
defenderRoll.show.desarme = desarme.rolled.isEchec;
|
||||
@ -1183,7 +1183,7 @@ export class RdDCombat {
|
||||
_computeImpactRecul(attaque) {
|
||||
const taille = this.defender.getTaille();
|
||||
const force = this.attacker.getForce();
|
||||
const dommages = attaque.arme.data.dommagesReels ?? attaque.arme.data.dommages;
|
||||
const dommages = attaque.arme.system.dommagesReels ?? attaque.arme.system.dommages;
|
||||
return taille - (force + dommages);
|
||||
}
|
||||
|
||||
@ -1254,7 +1254,7 @@ export class RdDCombat {
|
||||
isSonne: actor.getSonne(),
|
||||
blessuresStatus: actor.computeResumeBlessure(),
|
||||
SConst: actor.getSConst(),
|
||||
actorId: actor.data._id,
|
||||
actorId: actor.id,
|
||||
isGrave: false,
|
||||
isCritique: false
|
||||
}
|
||||
|
Reference in New Issue
Block a user