forked from public/foundryvtt-reve-de-dragon
Remplacement progressif rencontres
This commit is contained in:
@ -36,6 +36,7 @@ import { RdDPossession } from "./rdd-possession.js";
|
||||
import { ENTITE_BLURETTE, ENTITE_INCARNE, ENTITE_NONINCARNE, HIDE_DICE, SHOW_DICE, SYSTEM_RDD, SYSTEM_SOCKET_ID } from "./constants.js";
|
||||
import { RdDConfirm } from "./rdd-confirm.js";
|
||||
import { DialogValidationEncaissement } from "./dialog-validation-encaissement.js";
|
||||
import { RdDRencontre } from "./item-rencontre.js";
|
||||
|
||||
const POSSESSION_SANS_DRACONIC = {
|
||||
img: 'systems/foundryvtt-reve-de-dragon/icons/entites/possession.webp',
|
||||
@ -757,25 +758,24 @@ export class RdDActor extends Actor {
|
||||
actor: this,
|
||||
competence: duplicate(this.getDraconicOuPossession()),
|
||||
canClose: false,
|
||||
rencontre: duplicate(TMRRencontres.getRencontre('rdd')),
|
||||
rencontre: await TMRRencontres.getReveDeDragon(force),
|
||||
tmr: true,
|
||||
use: { libre: false, conditions: false },
|
||||
forceCarac: { 'reve-actuel': { label: "Rêve Actuel", value: this.getReveActuel() } }
|
||||
}
|
||||
rollData.rencontre.force = force;
|
||||
rollData.competence.system.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 }
|
||||
options: { height: 'fit-content' }
|
||||
},
|
||||
{
|
||||
name: 'maitrise',
|
||||
label: 'Maîtriser le Rêve de Dragon',
|
||||
callbacks: [
|
||||
this.createCallbackExperience(),
|
||||
{ action: async r => this.resultCombatReveDeDragon(r) }
|
||||
{ action: async r =>
|
||||
this.resultCombatReveDeDragon(r) }
|
||||
]
|
||||
}
|
||||
);
|
||||
@ -784,27 +784,11 @@ export class RdDActor extends Actor {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
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 = await Poetique.getExtrait();
|
||||
const result = rollData.rolled.isSuccess
|
||||
? rollData.rencontre.system.succes
|
||||
: rollData.rencontre.system.echec;
|
||||
|
||||
ChatMessage.create({
|
||||
whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name),
|
||||
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-resultat-reve-de-dragon.html`, rollData)
|
||||
});
|
||||
RdDRencontre.appliquer(result.effets, {}, rollData)
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -1541,42 +1525,27 @@ export class RdDActor extends Actor {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getTMRRencontres() {
|
||||
return this.system.reve.rencontre.list;
|
||||
return this.itemTypes['rencontre'];
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async deleteTMRRencontreAtPosition() {
|
||||
let rencontres = this.getTMRRencontres();
|
||||
let newRencontres = rencontres.filter(it => it.coord != this.getDemiReve());
|
||||
if (newRencontres.length != rencontres.length) {
|
||||
await this.update({ "system.reve.rencontre.list": newRencontres });
|
||||
const demiReve = this.getDemiReve()
|
||||
let rencontreIds = this.items.filter(it => it.type == 'rencontre' && it.system.coord == demiReve).map(it => it.id);
|
||||
if (rencontreIds.length>0) {
|
||||
await this.deleteEmbeddedDocuments('Item', rencontreIds);
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async addTMRRencontre(currentRencontre) {
|
||||
let rencontres = this.getTMRRencontres();
|
||||
let newRencontres = rencontres.filter(it => it.coord != this.getDemiReve());
|
||||
if (newRencontres.length == rencontres.length) {
|
||||
newRencontres.push(currentRencontre);
|
||||
await this.update({ "system.reve.rencontre.list": newRencontres });
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async deleteTMRRencontre(rencontreKey) {
|
||||
let list = duplicate(this.system.reve.rencontre.list);
|
||||
let newList = [];
|
||||
for (let i = 0; i < list.length; i++) {
|
||||
if (i != rencontreKey)
|
||||
newList.push(list[i]);
|
||||
}
|
||||
await this.update({ "system.reve.rencontre.list": newList });
|
||||
const toCreate = currentRencontre.toObject();
|
||||
console.log('actor.addTMRRencontre(', toCreate,')');
|
||||
this.createEmbeddedDocuments('Item', [toCreate]);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async updateCoordTMR(coord) {
|
||||
//console.log("UPDATE TMR", coord);
|
||||
await this.update({ "system.reve.tmrpos.coord": coord });
|
||||
}
|
||||
|
||||
@ -2383,7 +2352,7 @@ export class RdDActor extends Actor {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
isRencontreSpeciale() { // Gestion queue/souffle 'Mauvaise Rencontre en Perpective'
|
||||
isMauvaiseRencontre() { // Gestion queue/souffle 'Mauvaise Rencontre en Perpective'
|
||||
let addMsg = "";
|
||||
let rencSpecial = EffetsDraconiques.mauvaiseRencontre(this);
|
||||
if (rencSpecial) {
|
||||
@ -3825,7 +3794,7 @@ export class RdDActor extends Actor {
|
||||
/* -------------------------------------------- */
|
||||
_buildActorLinksList(links, actorTransformation = it => RdDActor._buildActorData(it)) {
|
||||
return links.map(link => game.actors.get(link.id))
|
||||
.filter(it => it != null)
|
||||
.filter(it => it != undefined)
|
||||
.map(actorTransformation);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user