forked from public/foundryvtt-reve-de-dragon
@ -1436,6 +1436,11 @@ export class RdDActor extends Actor {
|
||||
ChatUtility.chatWithRollMode(chatOptions, this.name)
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getCompetenceList() {
|
||||
return this.data.items.filter( (item) => item.type == 'competence');
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async rollCarac( caracName ) {
|
||||
let rollData = {
|
||||
@ -1503,6 +1508,55 @@ export class RdDActor extends Actor {
|
||||
dialog.render(true);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getTache ( id ) {
|
||||
return this.data.items.find( item => item._id == id );
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async rollTache( id ) {
|
||||
let tache = duplicate( this.getTache( id ) );
|
||||
let competence = duplicate(this.getCompetence(tache.data.competence));
|
||||
competence.data.defaut_carac = tache.data.carac; // Patch !
|
||||
let rollData = {
|
||||
competence: competence,
|
||||
needSignificative : this.data.data.sante.sonne.value,
|
||||
tache: tache,
|
||||
diffConditions: tache.data.difficulte,
|
||||
editLibre: false,
|
||||
editConditions: false,
|
||||
actor: this
|
||||
}
|
||||
|
||||
rollData.carac = {};
|
||||
rollData.carac[tache.data.carac] = duplicate(this.data.data.carac[tache.data.carac]); // Single carac
|
||||
console.log("rollTache !!!", duplicate(rollData));
|
||||
|
||||
const dialog = await RdDRoll.create(this, rollData, {html: 'systems/foundryvtt-reve-de-dragon/templates/dialog-competence.html'}, {
|
||||
name: 'jet-competence',
|
||||
label: 'Jet de Tâche ' + tache.name,
|
||||
callbacks: [
|
||||
this.createCallbackExperience(),
|
||||
{ action: this._tacheResult }
|
||||
]
|
||||
} );
|
||||
dialog.render(true);
|
||||
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
_tacheResult(rollData) {
|
||||
ChatUtility.chatWithRollMode({
|
||||
content: "<strong>Test de Tache : " + rollData.tache.name + " - " + rollData.selectedCarac.label + " / " + rollData.competence.name + "</strong>"
|
||||
+ "<br>Difficultés <strong>libre : " + rollData.diffLibre + "</strong> / conditions : " + Misc.toSignedString(rollData.diffConditions) +" / état : " + rollData.etat
|
||||
+ RdDResolutionTable.explain(rollData.rolled)
|
||||
+ "<br>Points de taches : " + rollData.rolled.ptTache + ", ajustement qualité: " + rollData.rolled.ptQualite
|
||||
}, this.name);
|
||||
|
||||
rollData.tache.data.points_de_tache_courant += rollData.rolled.ptTache;
|
||||
rollData.actor.updateEmbeddedEntity( "OwnedItem", rollData.tache);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
_competenceResult(rollData) {
|
||||
ChatUtility.chatWithRollMode({
|
||||
@ -1510,7 +1564,7 @@ export class RdDActor extends Actor {
|
||||
+ "<br>Difficultés <strong>libre : " + rollData.diffLibre + "</strong> / conditions : " + Misc.toSignedString(rollData.diffConditions) +" / état : " + rollData.etat
|
||||
+ RdDResolutionTable.explain(rollData.rolled)
|
||||
+ "<br>Points de taches : " + rollData.rolled.ptTache + ", ajustement qualité: " + rollData.rolled.ptQualite
|
||||
}, this.name)
|
||||
}, this.name);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -1587,6 +1641,8 @@ export class RdDActor extends Actor {
|
||||
let competence = duplicate( RdDUtility.findCompetence( this.data.items, competenceName ) );
|
||||
competence.data.xp += xpComp;
|
||||
await this.updateEmbeddedEntity( "OwnedItem", competence);
|
||||
} else {
|
||||
xpCarac = 1; // Si pas de competence, le max d'XP en carac est de 1 (cf p. 144)
|
||||
}
|
||||
if ( !carac[caracName].isderivee) {
|
||||
carac[caracName].xp += xpCarac;
|
||||
|
Reference in New Issue
Block a user