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

@ -1,52 +1,38 @@
import { RdDRollTables } from "./rdd-rolltables.js";
import { EffetsRencontre } from "./effets-rencontres.js";
const tableEffets = [
{ code: "messager", resultat: "succes", description: "Envoie un message à (force) cases" },
{ code: "passeur", resultat: "succes", description: "Déplacer le demi-rêve à (force) cases" },
{ code: "reve+f", resultat: "succes", description: "Gain de (force) points de rêve" },
{ code: "teleport", resultat: "succes", description: "Déplacer le demi-rêve (même type de case)" },
{ code: "part+tete", resultat: "succes", description: "Tête de dragon sur réussite particulière" },
{ code: "part+xp", resultat: "succes", description: "Expérience sur réussite particulière" },
{ code: "messager", resultat: "succes", description: "Envoie un message à (force) cases", method: EffetsRencontre.messager },
{ code: "passeur", resultat: "succes", description: "Déplacer le demi-rêve à (force) cases", method: EffetsRencontre.passeur},
{ code: "reve+f", resultat: "succes", description: "Gain de (force) points de rêve" , method: EffetsRencontre.reve_plus_f},
{ code: "teleport", resultat: "succes", description: "Déplacer le demi-rêve (même type)", method: EffetsRencontre.teleportation_typecase },
{ code: "part+tete", resultat: "succes", description: "Tête de dragon sur réussite particulière", method: EffetsRencontre.rdd_part_tete },
{ code: "part+xp", resultat: "succes", description: "Expérience sur réussite particulière", method: EffetsRencontre.experience_particuliere },
{ code: "seuil", resultat: "succes", description: "Récupération de seuil de rêve", method: EffetsRencontre.regain_seuil },
{ code: "reve-1", resultat: "echec", description: "Perte de 1 point de rêve" },
{ code: "reve-f", resultat: "echec", description: "Perte de (force) points de rêve" },
{ code: "vie-1", resultat: "echec", description: "Perte de 1 point de vie" },
{ code: "reinsere", resultat: "echec", description: "Réinsertion aléatoire" },
{ code: "declenhe", resultat: "echec", description: "Déclenche un sort aléatoire" },
{ code: "persistant", resultat: "echec", description: "Bloque le demi-rêve" },
{ code: "teleport-aleatoire", resultat: "echec", description: "Déplacement aléatoire (même type de case)" },
{ code: "aleatoire", resultat: "echec", description: "Déplacement aléatoire" },
{ code: "sort-aleatoire", resultat: "echec", description: "Déplacement pour déclencher un sort en réserve aléatoire" },
{ code: "rompu", resultat: "echec", description: "Demi-rêve interrompu" },
{ code: "echec-queue", resultat: "echec", description: "Queue de dragon sur échec" },
{ code: "etotal-queue", resultat: "echec", description: "Queue de dragon sur échec total" },
{ code: "moral+1", resultat: "succes", description: "Gain de 1 point de moral" },
{ code: "reve+1", resultat: "succes", description: "Gain de 1 point de rêve" },
{ code: "vie-f", resultat: "echec", description: "Perte de (force) point de vie" },
{ code: "endurance-1", resultat: "echec", description: "Perte de 1 point d'endurance" },
{ code: "endurance-f", resultat: "echec", description: "Perte de (force) point d'endurance" },
{ code: "fatigue-1", resultat: "echec", description: "Perte de 1 point de fatigue" },
{ code: "fatigue-f", resultat: "echec", description: "Perte de (force) point de fatigue" },
{ code: "moral-1", resultat: "echec", description: "Perte de 1 point de moral" },
{ code: "chance-1", resultat: "echec", description: "Perte de 1 point de chance actuelle" },
{ code: "chance-f", resultat: "echec", description: "Perte de (force) point de chance" },
{ code: "epart-queue", resultat: "echec", description: "Queue de dragon sur échec particulier" },
{ code: "etotal-souffle", resultat: "echec", description: "Souffle de dragon sur échec total" },
{ code: "epart-souffle", resultat: "echec", description: "Souffle de dragon sur échec particulier" },
{ code: "reve-1", resultat: "echec", description: "Perte de 1 point de rêve", method: EffetsRencontre.reve_moins_1 },
{ code: "reve-f", resultat: "echec", description: "Perte de (force) points de rêve", method: EffetsRencontre.reve_moins_f },
{ code: "vie-1", resultat: "echec", description: "Perte de 1 point de vie", method: EffetsRencontre.vie_moins_1 },
{ code: "reinsere", resultat: "echec", description: "Réinsertion aléatoire", method: EffetsRencontre.reinsertion },
{ code: "persistant", resultat: "echec", description: "Bloque le demi-rêve", method: EffetsRencontre.rencontre_persistante },
{ code: "teleport-aleatoire", resultat: "echec", description: "Déplacement aléatoire (même type)", method: EffetsRencontre.teleportation_aleatoire_typecase },
{ code: "aleatoire", resultat: "echec", description: "Déplacement aléatoire", method: EffetsRencontre.deplacement_aleatoire },
{ code: "sort-aleatoire", resultat: "echec", description: "Déclenche un sort en réserve aléatoire", method: EffetsRencontre.sort_aleatoire },
{ code: "rompu", resultat: "echec", description: "Demi-rêve interrompu", method: EffetsRencontre.demireve_rompu },
{ code: "echec-queue", resultat: "echec", description: "Queue(s) de dragon sur échec", method: EffetsRencontre.rdd_echec_queue },
];
export class RdDRencontre {
static getEffetsSucces() { return RdDRencontre.getEffets("succes"); }
static getEffetsEchec() { return RdDRencontre.getEffets("echec"); }
static getEffets(resultat) {
return tableEffets.filter(e => resultat == e.resultat);
}
static getEffetsSucces() { return RdDRencontre.getEffets("succes"); }
static getEffetsEchec() { return RdDRencontre.getEffets("echec"); }
static mapEffets(liste) {
return liste.map(it => tableEffets.find(e => it == e.code));
return liste.map(it => RdDRencontre.getEffet(it));
}
static getListeEffets(item, reussite) {
if (reussite == 'echec') {
return [...item.system.echec.effets];
@ -57,4 +43,14 @@ export class RdDRencontre {
return [];
}
static getEffet(code) {
return tableEffets.find(it => code == it.code)
}
static async appliquer(codes, tmrDialog, rencData) {
for(const effet of RdDRencontre.mapEffets(codes)){
await effet.method(tmrDialog, rencData);
}
}
}