Rêve de Dragon

This commit is contained in:
Vincent Vandemeulebrouck
2021-02-06 23:58:15 +01:00
parent 2af358b924
commit ae3766f99b
8 changed files with 178 additions and 26 deletions

View File

@ -22,6 +22,8 @@ import { StatusEffects } from "./status-effects.js";
import { RdDItemCompetenceCreature } from "./item-competencecreature.js";
import { ReglesOptionelles } from "./regles-optionelles.js";
import { RdDItem } from "./item.js";
import { TMRRencontres } from "./tmr-rencontres.js";
import { Poetique } from "./poetique.js";
/* -------------------------------------------- */
@ -580,15 +582,57 @@ export class RdDActor extends Actor {
/* -------------------------------------------- */
async combattreReveDeDragon(force) {
let draconic = this.getBestDraconic();
let niveau = Math.max(0, draconic.data.niveau);
let etat = this.getEtatGeneral();
let difficulte = niveau - etat - force;
let reveActuel = this.getReveActuel();
let rolled = await RdDResolutionTable.roll(reveActuel, difficulte);
// TODO: xp particulière
console.log("combattreReveDeDragon", rolled);
return await this.appliquerReveDeDragon(rolled, force);
let rollData = {
actor: this,
competence: duplicate(this.getBestDraconic()),
canClose: false,
rencontre: duplicate(TMRRencontres.getRencontre('rdd')),
tmr: true,
use: {libre: false, conditions: false},
forceCarac: { 'reve-actuel': { label: "Rêve Actuel", value: this.getReveActuel() } }
}
rollData.rencontre.force = force;
rollData.competence.data.defaut_carac = 'reve-actuel';
const dialog = await RdDRoll.create(this, rollData,
{
html: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-reve-de-dragon.html',
options: { height: 400 }
},
{
name: 'maitrise',
label: 'Maîtriser le Rêve de Dragon',
callbacks: [
this.createCallbackExperience(),
{ action: r => this.resultCombatReveDeDragon(r) }
]
}
);
dialog.render(true);
}
async resultCombatReveDeDragon(rollData) {
rollData.queues = [];
if (rollData.rolled.isEchec) {
rollData.queues.push(await this.ajouterQueue());
}
if (rollData.rolled.isETotal) {
rollData.queues.push(await this.ajouterQueue());
}
if (rollData.rolled.isSuccess) {
await this.updatePointDeSeuil();
await this.reveActuelIncDec(rollData.rencontre.force);
}
if (rollData.rolled.isPart) {
// TODO: un dialogue pour demander le type de tête?
rollData.tete = true;
}
rollData.poesie = Poetique.getExtrait();
ChatMessage.create({
whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name),
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-resultat-reve-de-dragon.html`, rollData)
});
}
/* -------------------------------------------- */
@ -1074,7 +1118,7 @@ export class RdDActor extends Actor {
content: this.name + " subit une Queue de Dragon : " + queue.name
});
}
return queue.name;
return queue;
}
/* -------------------------------------------- */