Remplacement progressif rencontres

This commit is contained in:
Vincent Vandemeulebrouck
2022-11-07 00:04:43 +01:00
parent d20a6a1506
commit f659a7508a
21 changed files with 460 additions and 746 deletions

View File

@ -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);
}