Ajout bouton augmenter niveau

This commit is contained in:
Vincent Vandemeulebrouck
2021-05-28 00:55:22 +02:00
parent 63d5281a0c
commit 41bb5ca919
6 changed files with 78 additions and 26 deletions

View File

@ -440,7 +440,15 @@ export class RdDActorSheet extends ActorSheet {
RdDUtility.toggleAfficheContenu(myID);
this.render(true);
});
html.find('.carac-xp-augmenter').click((event) => {
let caracName = event.currentTarget.name.replace("augmenter.", "");
this.actor.updateCaracXPAuto(caracName);
});
html.find('.competence-xp-augmenter').click((event) => {
let compName = event.currentTarget.attributes.compname.value;
this.actor.updateCompetenceXPAuto(compName);
});
if (this.options.editCaracComp) {
// On carac change
html.find('.carac-value').change((event) => {

View File

@ -793,6 +793,40 @@ export class RdDActor extends Actor {
await this.update({ [`data.carac.${caracName}.xp`]: caracXP ?? 0 });
this.checkCaracXP(caracName);
}
async updateCaracXPAuto(caracName) {
if (caracName == 'Taille') {
return;
}
let carac = RdDActor._findCaracByName(Misc.templateData(this).carac, caracName);
if (carac) {
carac = duplicate(carac);
let xp = Number(carac.xp);
let value = Number(carac.value);
while (xp >= RdDCarac.getCaracNextXp(value) && xp > 0) {
xp -= RdDCarac.getCaracNextXp(value);
value++;
}
carac.xp = xp;
carac.value = value;
await this.update({ [`data.carac.${caracName}`]: carac });
}
}
async updateCompetenceXPAuto(compName) {
let competence = this.getCompetence(compName);
if (competence) {
let compData = Misc.data(competence);
let xp = Number(compData.data.xp);
let niveau = Number(compData.data.niveau);
while (xp >= RdDItemCompetence.getCompetenceNextXp(niveau) && xp > 0) {
xp -= RdDItemCompetence.getCompetenceNextXp(niveau);
niveau++;
}
competence.update({
"data.xp": xp,
"data.niveau": niveau,
});
}
}
/* -------------------------------------------- */
async updateCreatureCompetence(compName, fieldName, compValue) {
@ -2002,7 +2036,7 @@ export class RdDActor extends Actor {
value: niveauSuivant,
xp: carac.xp
}
if (display){
if (display) {
ChatUtility.createChatMessage(this.name, "default", {
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-actor-carac-xp.html`, checkXp)
});
@ -2812,7 +2846,7 @@ export class RdDActor extends Actor {
await this._xpCarac(xpData);
return xpData;
}
/* -------------------------------------------- */
async _xpCompetence(xpData) {
if (xpData.competence) {
@ -2823,7 +2857,7 @@ export class RdDActor extends Actor {
this.updateExperienceLog("XP", xpData.xp, "XP gagné en " + xpData.competence.name);
}
}
/* -------------------------------------------- */
async _xpCarac(xpData) {
if (xpData.xpCarac > 0) {

View File

@ -219,7 +219,7 @@ export class RdDUtility {
Handlebars.registerHelper('caseTmr-label', coord => TMRUtility.getTMRLabel(coord));
Handlebars.registerHelper('caseTmr-type', coord => TMRUtility.getTMRType(coord));
Handlebars.registerHelper('typeTmr-name', coord => TMRUtility.typeTmrName(coord));
Handlebars.registerHelper('equals', (a, b) => a == b);
Handlebars.registerHelper('sortCompetence', competences => competences.sort((a, b) => {
if (a.name.startsWith("Survie") && b.name.startsWith("Survie")) {
if (a.name.includes("Cité")) return -1;