forked from public/foundryvtt-reve-de-dragon
Rêve de Dragon
This commit is contained in:
@ -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;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
Reference in New Issue
Block a user