Merge from v1.5 possession fix

This commit is contained in:
2022-07-02 09:02:31 +02:00
7 changed files with 116 additions and 124 deletions

View File

@ -369,12 +369,27 @@ export class RdDActor extends Actor {
const list = this.getDraconicList()
return duplicate(list[0])
}
getDraconicOrZero() {
const list = this.getDraconicList().filter(it => it.system.niveau >= 0);
if (list.length == 0) {
return { name: "Aucun", system: { niveau: 0 } };
getDraconicOuPossession() {
const possessions = this.items.filter(it => it.type == 'competencecreature' && it.system.ispossession)
.sort(Misc.descending(it => it.system.niveau));
if (possessions.length>0) {
return duplicate(possessions[0]);
}
return duplicate(list[0]);
const draconics = this.getDraconicList().filter(it => it.system.niveau >= 0);
if (draconics.length> 0) {
return duplicate(draconics[0]);
}
return {
img: 'systems/foundryvtt-reve-de-dragon/icons/entites/possession.webp',
name: 'Sans draconic',
data: {
niveau: 0,
defaut_carac: "reve",
}
};
}
getPossession(possessionId) {
return this.items.find(it => it.type == 'possession' && it.system.possessionid == possessionId);
}
getDemiReve() {
@ -779,7 +794,7 @@ export class RdDActor extends Actor {
async combattreReveDeDragon(force) {
let rollData = {
actor: this,
competence: duplicate(this.getDraconicOrZero()),
competence: duplicate(this.getDraconicOuPossession()),
canClose: false,
rencontre: duplicate(TMRRencontres.getRencontre('rdd')),
tmr: true,
@ -2519,7 +2534,7 @@ export class RdDActor extends Actor {
if (rollData.competence.type == 'competencecreature') {
if (rollData.competence.system.iscombat) {
if (rollData.competence.system.ispossession) {
RdDPossession.managePossession(this, rollData.competence)
RdDPossession.onAttaquePossession(this, rollData.competence)
} else {
const arme = RdDItemCompetenceCreature.toArme(rollData.competence)
RdDCombat.createUsingTarget(this)?.attaque(competence, arme)
@ -2547,8 +2562,8 @@ export class RdDActor extends Actor {
/* -------------------------------------------- */
conjurerPossession(possession) {
let draconic = this.getBestDraconic();
RdDPossession.managePossession(this, draconic, possession)
let draconic = this.getDraconicOuPossession();
RdDPossession.onAttaquePossession(this, draconic, possession)
}
/* -------------------------------------------- */
@ -3179,7 +3194,7 @@ export class RdDActor extends Actor {
let competence = this.getCompetence(arme.system.competence)
if (arme || (competence.type == 'competencecreature' && competence.system.iscombat)) {
if (competence.system.ispossession) {
RdDPossession.managePossession(this, competence);
RdDPossession.onAttaquePossession(this, competence);
} else {
RdDCombat.createUsingTarget(this)?.attaque(competence, arme);
}