L'initiative utilise l'écaille d'efficacité
This commit is contained in:
parent
a7b20bdd35
commit
427a950954
@ -3,7 +3,9 @@
|
|||||||
- le propriétaire est indiqué dans les feuilles d'équipements/compétences/...
|
- le propriétaire est indiqué dans les feuilles d'équipements/compétences/...
|
||||||
- Ecaille d'efficacité
|
- Ecaille d'efficacité
|
||||||
- l'écaille d'efficacité est prise en compte même si on n'utilise pas le ciblage en combat
|
- l'écaille d'efficacité est prise en compte même si on n'utilise pas le ciblage en combat
|
||||||
|
- l'écaille d'efficacité est prise en compte pour l'initiative
|
||||||
- Corrections
|
- Corrections
|
||||||
|
- l'état général est pris en compte pour les initiatives
|
||||||
- le tooltip de l'initiative affiche correctement l'initiative
|
- le tooltip de l'initiative affiche correctement l'initiative
|
||||||
|
|
||||||
## 12.0.7 - La propriété d'Astrobazzarh
|
## 12.0.7 - La propriété d'Astrobazzarh
|
||||||
|
@ -75,6 +75,12 @@ export class RdDCombatManager extends Combat {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
static calculAjustementInit(actor, arme) {
|
||||||
|
const efficacite = (arme?.system.magique) ? arme.system.ecaille_efficacite : 0
|
||||||
|
const etatGeneral = actor.getEtatGeneral() ?? 0
|
||||||
|
return efficacite + etatGeneral
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/************************************************************************************/
|
/************************************************************************************/
|
||||||
async rollInitiative(ids, formula = undefined, messageOptions = {}) {
|
async rollInitiative(ids, formula = undefined, messageOptions = {}) {
|
||||||
@ -84,12 +90,14 @@ export class RdDCombatManager extends Combat {
|
|||||||
// calculate initiative
|
// calculate initiative
|
||||||
for (let cId = 0; cId < ids.length; cId++) {
|
for (let cId = 0; cId < ids.length; cId++) {
|
||||||
const combatant = this.combatants.get(ids[cId]);
|
const combatant = this.combatants.get(ids[cId]);
|
||||||
let rollFormula = formula ?? RdDCombatManager.formuleInitiative(2, 10, 0, 0);
|
const ajustement = RdDCombatManager.calculAjustementInit(combatant.actor, undefined);
|
||||||
|
let rollFormula = formula ?? RdDCombatManager.formuleInitiative(2, 10, 0, ajustement);
|
||||||
|
|
||||||
if (!formula) {
|
if (!formula) {
|
||||||
if (combatant.actor.type == 'creature' || combatant.actor.type == 'entite') {
|
if (combatant.actor.type == 'creature' || combatant.actor.type == 'entite') {
|
||||||
const competence = combatant.actor.items.find(it => RdDItemCompetenceCreature.isCompetenceAttaque(it))
|
const competence = combatant.actor.items.find(it => RdDItemCompetenceCreature.isCompetenceAttaque(it))
|
||||||
if (competence) {
|
if (competence) {
|
||||||
rollFormula = RdDCombatManager.formuleInitiative(2, competence.system.carac_value, competence.system.niveau, 0);
|
rollFormula = RdDCombatManager.formuleInitiative(2, competence.system.carac_value, competence.system.niveau, etatGeneral);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
const armeCombat = combatant.actor.itemTypes['arme'].find(it => it.system.equipe)
|
const armeCombat = combatant.actor.itemTypes['arme'].find(it => it.system.equipe)
|
||||||
@ -109,9 +117,9 @@ export class RdDCombatManager extends Combat {
|
|||||||
if (competence && competence.system.defaut_carac) {
|
if (competence && competence.system.defaut_carac) {
|
||||||
const carac = combatant.actor.system.carac[competence.system.defaut_carac].value;
|
const carac = combatant.actor.system.carac[competence.system.defaut_carac].value;
|
||||||
const niveau = competence.system.niveau;
|
const niveau = competence.system.niveau;
|
||||||
const bonusEcaille = (armeCombat?.system.magique) ? armeCombat.system.ecaille_efficacite : 0;
|
|
||||||
//console.log("RollInitiative", competence, carac, niveau, bonusEcaille);
|
const ajustement = RdDCombatManager.calculAjustementInit(combatant.actor, armeCombat)
|
||||||
rollFormula = RdDCombatManager.formuleInitiative(2, carac, niveau, bonusEcaille);
|
rollFormula = RdDCombatManager.formuleInitiative(2, carac, niveau, ajustement);
|
||||||
} else {
|
} else {
|
||||||
ui.notifications.warn(`Votre arme ${armeCombat.name} n'a pas de compétence renseignée`);
|
ui.notifications.warn(`Votre arme ${armeCombat.name} n'a pas de compétence renseignée`);
|
||||||
}
|
}
|
||||||
@ -215,13 +223,16 @@ export class RdDCombatManager extends Combat {
|
|||||||
|
|
||||||
static $prepareAttaqueArme(infoAttaque) {
|
static $prepareAttaqueArme(infoAttaque) {
|
||||||
const comp = infoAttaque.competences.find(c => c.name == infoAttaque.competence);
|
const comp = infoAttaque.competences.find(c => c.name == infoAttaque.competence);
|
||||||
const attaque = foundry.utils.duplicate(infoAttaque.arme);
|
const arme = infoAttaque.arme;
|
||||||
|
const attaque = foundry.utils.duplicate(arme);
|
||||||
attaque.action = 'attaque';
|
attaque.action = 'attaque';
|
||||||
attaque.system.competence = infoAttaque.competence;
|
attaque.system.competence = infoAttaque.competence;
|
||||||
attaque.system.dommagesReels = infoAttaque.dommagesReel;
|
attaque.system.dommagesReels = infoAttaque.dommagesReel;
|
||||||
attaque.system.infoMain = infoAttaque.infoMain;
|
attaque.system.infoMain = infoAttaque.infoMain;
|
||||||
attaque.system.niveau = comp.system.niveau;
|
attaque.system.niveau = comp.system.niveau;
|
||||||
attaque.system.initiative = RdDCombatManager.calculInitiative(comp.system.niveau, infoAttaque.carac[comp.system.defaut_carac].value);
|
|
||||||
|
const ajustement = (arme?.parent?.getEtatGeneral() ?? 0) + (arme?.system.magique) ? arme.system.ecaille_efficacite : 0;
|
||||||
|
attaque.system.initiative = RdDCombatManager.calculInitiative(comp.system.niveau, infoAttaque.carac[comp.system.defaut_carac].value, ajustement);
|
||||||
return attaque;
|
return attaque;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -336,7 +347,6 @@ export class RdDCombatManager extends Combat {
|
|||||||
ui.notifications.warn(`Le combatant ${combatant.name} n'est pas associé à un acteur, impossible de déterminer ses actions de combat!`)
|
ui.notifications.warn(`Le combatant ${combatant.name} n'est pas associé à un acteur, impossible de déterminer ses actions de combat!`)
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
let initInfo = "";
|
let initInfo = "";
|
||||||
let initOffset = 0;
|
let initOffset = 0;
|
||||||
let caracForInit = 0;
|
let caracForInit = 0;
|
||||||
@ -371,9 +381,9 @@ export class RdDCombatManager extends Combat {
|
|||||||
initOffset = RdDCombatManager._baseInitOffset(compData.system.categorie, action);
|
initOffset = RdDCombatManager._baseInitOffset(compData.system.categorie, action);
|
||||||
}
|
}
|
||||||
|
|
||||||
let malus = combatant.actor.getEtatGeneral(); // Prise en compte état général
|
|
||||||
// Cas des créatures et entités vs personnages
|
// Cas des créatures et entités vs personnages
|
||||||
let rollFormula = RdDCombatManager.formuleInitiative(initOffset, caracForInit, compNiveau, malus);
|
const ajustement = RdDCombatManager.calculAjustementInit(combatant.actor, action)
|
||||||
|
let rollFormula = RdDCombatManager.formuleInitiative(initOffset, caracForInit, compNiveau, ajustement);
|
||||||
// Garder la trace de l'arme/compétence utilisée pour l'iniative
|
// Garder la trace de l'arme/compétence utilisée pour l'iniative
|
||||||
combatant.initiativeData = { arme: action } // pour reclasser l'init au round 0
|
combatant.initiativeData = { arme: action } // pour reclasser l'init au round 0
|
||||||
game.combat.rollInitiative(combatantId, rollFormula, { initInfo: initInfo });
|
game.combat.rollInitiative(combatantId, rollFormula, { initInfo: initInfo });
|
||||||
|
Loading…
Reference in New Issue
Block a user