Expérience par le stress
- Vue détaillée (regroupe archétype et contrôles) - Ajout d'un bouton pour mettre du stress dans une compétence
This commit is contained in:
@ -30,8 +30,7 @@ export class RdDActorSheet extends ActorSheet {
|
||||
dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }],
|
||||
editCaracComp: false,
|
||||
showCompNiveauBase: false,
|
||||
montrerArchetype: false,
|
||||
hideControls: true
|
||||
vueDetaillee: false
|
||||
});
|
||||
}
|
||||
|
||||
@ -80,7 +79,7 @@ export class RdDActorSheet extends ActorSheet {
|
||||
|
||||
formData.competences.forEach(item => {
|
||||
item.visible = !this.options.showCompNiveauBase || !RdDItemCompetence.isNiveauBase(item);
|
||||
RdDItemCompetence.levelUp(item);
|
||||
RdDItemCompetence.levelUp(item, formData.data.compteurs.experience.value);
|
||||
});
|
||||
|
||||
Object.values(formData.data.carac).forEach(c => {
|
||||
@ -414,7 +413,7 @@ export class RdDActorSheet extends ActorSheet {
|
||||
});
|
||||
}
|
||||
|
||||
html.find('#show-hide-competences').click(async event => {
|
||||
html.find('.show-hide-competences').click(async event => {
|
||||
this.options.showCompNiveauBase = !this.options.showCompNiveauBase;
|
||||
this.render(true);
|
||||
});
|
||||
@ -422,13 +421,9 @@ export class RdDActorSheet extends ActorSheet {
|
||||
this.options.editCaracComp = !this.options.editCaracComp;
|
||||
this.render(true);
|
||||
});
|
||||
html.find('#show-hide-archetype').click(async event => {
|
||||
this.options.montrerArchetype = !this.options.montrerArchetype;
|
||||
this.render(true);
|
||||
});
|
||||
html.find('.lock-unlock-controls').click(async event => {
|
||||
console.log("CONTROLS", this.options.hideControls)
|
||||
this.options.hideControls = !this.options.hideControls;
|
||||
html.find('.vue-detaillee').click(async event => {
|
||||
console.log("CONTROLS", this.options.vueDetaillee)
|
||||
this.options.vueDetaillee = !this.options.vueDetaillee;
|
||||
this.render(true);
|
||||
});
|
||||
|
||||
|
@ -922,6 +922,36 @@ export class RdDActor extends Actor {
|
||||
}
|
||||
}
|
||||
|
||||
async updateCompetenceStress(idOrName) {
|
||||
const competence = this.getCompetence(idOrName);
|
||||
if (!competence) {
|
||||
return;
|
||||
}
|
||||
const compData = Misc.data(competence);
|
||||
const niveau = Number(compData.data.niveau);
|
||||
const stressTransforme = Misc.data(this).data.compteurs.experience.value;
|
||||
const xpRequis = RdDItemCompetence.getCompetenceNextXp(niveau) - compData.data.xp;
|
||||
if (stressTransforme <= 0 || niveau >= compData.data.niveau_archetype || xpRequis <=0) {
|
||||
ui.notifications.info(`La compétence ne peut pas augmenter!
|
||||
stress disponible: ${stressTransforme}
|
||||
expérience requise: ${xpRequis}
|
||||
niveau : ${niveau}
|
||||
archétype : ${compData.data.niveau_archetype}`);
|
||||
return;
|
||||
}
|
||||
const xpUtilise = Math.min(stressTransforme, xpRequis);
|
||||
const stressTransformeRestant = Math.max(0, stressTransforme - xpUtilise);
|
||||
const gainNiveau = xpUtilise>=xpRequis ? 1 : 0;
|
||||
|
||||
await this.update({ "data.compteurs.experience.value": stressTransformeRestant });
|
||||
const nouveauNiveau = niveau + gainNiveau;
|
||||
await competence.update({
|
||||
"data.xp": Math.max(compData.data.xp - xpRequis, 0),
|
||||
"data.niveau": nouveauNiveau,
|
||||
});
|
||||
this.updateExperienceLog('Dépense stress', xpUtilise, `Stress en ${competence.name} ${gainNiveau? "pour passer à "+nouveauNiveau : ""}`);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async updateCreatureCompetence(idOrName, fieldName, compValue) {
|
||||
let competence = this.getCompetence(idOrName);
|
||||
|
@ -84,7 +84,7 @@ export class RdDItemCompetence extends Item {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static getVoieDraconic(competences, voie) {
|
||||
return RdDItemCompetence.findCompetence(competences.filter(it => RdDItemCompetence.isDraconic(it) ), voie);
|
||||
return RdDItemCompetence.findCompetence(competences.filter(it => RdDItemCompetence.isDraconic(it)), voie);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -145,11 +145,11 @@ export class RdDItemCompetence extends Item {
|
||||
static computeEconomieXPTronc(competences) {
|
||||
return competenceTroncs.map(
|
||||
list => list.map(name => RdDItemCompetence.findCompetence(competences, name))
|
||||
// calcul du coût xp jusqu'au niveau 0 maximum
|
||||
.map(it => RdDItemCompetence.computeDeltaXP(it?.data.base ?? -11, Math.min(it?.data.niveau ?? -11, 0)))
|
||||
.sort(Misc.ascending())
|
||||
.splice(0, list.length-1) // prendre toutes les valeurs sauf l'une des plus élevées
|
||||
.reduce(Misc.sum(), 0)
|
||||
// calcul du coût xp jusqu'au niveau 0 maximum
|
||||
.map(it => RdDItemCompetence.computeDeltaXP(it?.data.base ?? -11, Math.min(it?.data.niveau ?? -11, 0)))
|
||||
.sort(Misc.ascending())
|
||||
.splice(0, list.length - 1) // prendre toutes les valeurs sauf l'une des plus élevées
|
||||
.reduce(Misc.sum(), 0)
|
||||
).reduce(Misc.sum(), 0);
|
||||
}
|
||||
|
||||
@ -160,7 +160,6 @@ export class RdDItemCompetence extends Item {
|
||||
return competence_xp_cumul[to] - competence_xp_cumul[from];
|
||||
}
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static computeCompetenceXPCost(competence) {
|
||||
const compData = Misc.data(competence);
|
||||
@ -186,9 +185,15 @@ export class RdDItemCompetence extends Item {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static levelUp(itemData) {
|
||||
static levelUp(itemData, stressTransforme) {
|
||||
itemData.data.xpNext = RdDItemCompetence.getCompetenceNextXp(itemData.data.niveau);
|
||||
itemData.data.isLevelUp = itemData.data.xp >= itemData.data.xpNext;
|
||||
const xpManquant = itemData.data.xpNext - itemData.data.xp;
|
||||
itemData.data.isLevelUp = xpManquant <= 0;
|
||||
itemData.data.isStressLevelUp = (xpManquant > 0 && stressTransforme >= xpManquant && itemData.data.niveau < itemData.data.niveau_archetype);
|
||||
itemData.data.stressXpMax = 0;
|
||||
if (xpManquant > 0 && stressTransforme > 0 && itemData.data.niveau < itemData.data.niveau_archetype) {
|
||||
itemData.data.stressXpMax = Math.min(xpManquant , stressTransforme);
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
Reference in New Issue
Block a user