XP fix avec tooltip

This commit is contained in:
2021-01-14 15:29:47 +01:00
parent b69c515a7c
commit 4f236adbec
7 changed files with 119 additions and 23 deletions

View File

@ -621,6 +621,7 @@ export class RdDActor extends Actor {
async updateCompetenceXP(compName, compValue) {
let comp = this.getCompetence(compName);
if (comp) {
this.checkCompetenceXP(compName, compValue);
const update = { _id: comp._id, 'data.xp': compValue };
const updated = await this.updateEmbeddedEntity("OwnedItem", update); // Updates one EmbeddedEntity
} else {
@ -1461,14 +1462,19 @@ export class RdDActor extends Actor {
}
/* -------------------------------------------- */
async checkCompetenceXP(compName) {
async checkCompetenceXP(compName, newXP = undefined) {
let competence = RdDItemCompetence.findCompetence(this.data.items, compName);
if (competence && competence.data.xp > 0) {
if ( competence && newXP && newXP == competence.data.xp ) { // Si édition, mais sans changement XP
return;
}
newXP = (newXP) ? newXP : competence.data.xp;
if (competence && newXP > 0) {
let xpNeeded = RdDItemCompetence.getCompetenceNextXp(competence.data.niveau);
if (competence.data.xp >= xpNeeded) {
if (newXP >= xpNeeded) {
let newCompetence = duplicate(competence);
newCompetence.data.niveau += 1;
newCompetence.data.xp = newXP;
let xpData = {
alias: this.name,
competence: newCompetence.name,
@ -2698,4 +2704,12 @@ export class RdDActor extends Actor {
await this.createEmbeddedEntity('ActiveEffect', effet, options);
this.applyActiveEffects();
}
/* -------------------------------------------- */
async updateEmbeddedEntity(embeddedName, data, options) {
if ( data && data['data.defaut_carac'] && data['data.xp'] ) { // C'est une compétence
this.checkCompetenceXP(data['name'], data['data.xp'] );
}
return super.updateEmbeddedEntity(embeddedName, data, options);
}
}