Gestion de la périodicité/temporalité
This commit is contained in:
@ -1,4 +1,6 @@
|
||||
import { RdDItem } from "../item.js";
|
||||
import { Misc } from "../misc.js";
|
||||
import { RdDTimestamp } from "../rdd-timestamp.js";
|
||||
|
||||
export class RdDItemMaladie extends RdDItem {
|
||||
|
||||
@ -7,7 +9,39 @@ export class RdDItemMaladie extends RdDItem {
|
||||
}
|
||||
|
||||
async calculerFinPeriodeTemporel(debut) {
|
||||
return await debut.addPeriode(this.system.periode.nombre, this.system.periode.unite) ;
|
||||
return await debut.addPeriode(this.system.periode.nombre, this.system.periode.unite);
|
||||
}
|
||||
|
||||
async onFinPeriode(oldTimestamp, newTimestamp) {
|
||||
await RdDItemMaladie.notifierMaladiePoison(this, oldTimestamp, newTimestamp)
|
||||
}
|
||||
|
||||
static async notifierMaladiePoison(mal, oldTimestamp, newTimestamp) {
|
||||
if (mal.actor) {
|
||||
const souffrance = mal.system.identifie
|
||||
? `de ${mal.name}`
|
||||
: `d'un mal inconnu`
|
||||
ChatMessage.create({ content: `${mal.actor.name} souffre ${souffrance} (${Misc.typeName('Item', mal.type)}): vérifiez que les effets ne se sont pas aggravés !` });
|
||||
mal.postItemToChat('gmroll');
|
||||
await RdDItemMaladie.prolongerPeriode(mal,oldTimestamp, newTimestamp);
|
||||
}
|
||||
}
|
||||
|
||||
static async prolongerPeriode(mal, oldTimestamp, newTimestamp) {
|
||||
if (mal.actor) {
|
||||
// TODO: déterminer le nombre de périodes écoulées
|
||||
console.log(`${mal.actor.name}: le mal ${mal.name} a atteint la fin de sa période et été prolongé`);
|
||||
const current = newTimestamp;
|
||||
const finPeriode = new RdDTimestamp(mal.system.temporel.fin)
|
||||
const periodeSuivante = (finPeriode.compare(current) > 0 ? finPeriode : current);
|
||||
const timestampFin = await mal.calculerFinPeriodeTemporel(periodeSuivante);
|
||||
|
||||
await mal.actor.updateEmbeddedDocuments('Item', [{
|
||||
_id: mal.id,
|
||||
'system.temporel.fin': duplicate(timestampFin),
|
||||
}])
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,7 +1,6 @@
|
||||
import { RdDItem } from "../item.js";
|
||||
|
||||
export class RdDItemOmbre extends RdDItem {
|
||||
|
||||
static get defaultIcon() {
|
||||
return "systems/foundryvtt-reve-de-dragon/icons/queue_dragon.webp";
|
||||
}
|
||||
@ -9,10 +8,4 @@ export class RdDItemOmbre extends RdDItem {
|
||||
async calculerFinPeriodeTemporel(debut) {
|
||||
return await debut.appliquerDuree(this.system.duree, this.parent);
|
||||
}
|
||||
|
||||
async onFinTemporel() {
|
||||
// fin de période
|
||||
await this.prolongerPeriode();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { RdDItem } from "../item.js";
|
||||
import { RdDItemMaladie } from "./maladie.js";
|
||||
|
||||
export class RdDItemPoison extends RdDItem {
|
||||
|
||||
@ -10,8 +11,7 @@ export class RdDItemPoison extends RdDItem {
|
||||
return await debut.addPeriode(this.system.periode.nombre, this.system.periode.unite) ;
|
||||
}
|
||||
|
||||
async onFinTemporel() {
|
||||
// fin de période
|
||||
await this.prolongerPeriode();
|
||||
async onFinPeriode(oldTimestamp, newTimestamp) {
|
||||
RdDItemMaladie.notifierMaladiePoison(this, oldTimestamp, newTimestamp)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user