Fix: Replace deprecated ActiveEffectDialog.create() with createEmbeddedDocuments
- ActiveEffectDialog.create() was removed in Foundry VTT v14 - Replaced with direct document.createEmbeddedDocuments() call - After creation, opens the effect sheet for editing - Fixed in both base-actor-sheet.mjs and base-item-sheet.mjs Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
@@ -327,29 +327,36 @@ export default class MournbladeCYD2ActorSheetV2 extends HandlebarsApplicationMix
|
||||
*/
|
||||
static async #onCreateEffect(event, target) {
|
||||
event.preventDefault();
|
||||
if (!this.isEditable || !this.document) return;
|
||||
|
||||
// Créer les données par défaut pour un nouvel effet
|
||||
const defaultEffectData = {
|
||||
name: game.i18n.localize("MOURNBLADECYD2.effect.new") || "Nouvel Effet",
|
||||
icon: "systems/fvtt-mournblade-cyd-2-0/assets/icons/effect.webp",
|
||||
description: "",
|
||||
changes: [],
|
||||
disabled: false,
|
||||
duration: {},
|
||||
origin: this.document.uuid,
|
||||
tint: "",
|
||||
transfer: true,
|
||||
flags: {}
|
||||
};
|
||||
|
||||
// Utiliser la dialog native FoundryVTT pour créer l'effet
|
||||
const effect = await foundry.applications.api.ActiveEffectDialog.create({
|
||||
document: this.document,
|
||||
effect: defaultEffectData
|
||||
});
|
||||
|
||||
if (effect) {
|
||||
await this.document.createEmbeddedDocuments("ActiveEffect", [effect.toObject()]);
|
||||
try {
|
||||
// Créer les données par défaut pour un nouvel effet
|
||||
const defaultEffectData = {
|
||||
name: game.i18n.localize("MOURNBLADECYD2.EFFECT.new") || "Nouvel Effet",
|
||||
icon: "systems/fvtt-mournblade-cyd-2-0/assets/icons/effect.webp",
|
||||
description: "",
|
||||
changes: [],
|
||||
disabled: false,
|
||||
duration: {},
|
||||
origin: this.document.uuid,
|
||||
tint: "",
|
||||
transfer: true,
|
||||
flags: {}
|
||||
};
|
||||
|
||||
// Créer directement l'effet actif sur l'acteur
|
||||
const [effect] = await this.document.createEmbeddedDocuments("ActiveEffect", [defaultEffectData]);
|
||||
|
||||
if (effect) {
|
||||
// Ouvrir la feuille d'édition de l'effet
|
||||
effect.sheet.render(true);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("MournbladeCYD2 | Failed to create effect:", error);
|
||||
ui.notifications.error(
|
||||
game.i18n.localize("MOURNBLADECYD2.EFFECT.createError") ||
|
||||
"Erreur lors de la création de l'effet"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -361,6 +368,8 @@ export default class MournbladeCYD2ActorSheetV2 extends HandlebarsApplicationMix
|
||||
*/
|
||||
static async #onEditEffect(event, target) {
|
||||
event.preventDefault();
|
||||
if (!this.isEditable || !this.document) return;
|
||||
|
||||
const effectId = target?.dataset?.effectId;
|
||||
if (!effectId) return;
|
||||
|
||||
@@ -379,18 +388,30 @@ export default class MournbladeCYD2ActorSheetV2 extends HandlebarsApplicationMix
|
||||
*/
|
||||
static async #onDeleteEffect(event, target) {
|
||||
event.preventDefault();
|
||||
if (!this.isEditable || !this.document) return;
|
||||
|
||||
const effectId = target?.dataset?.effectId;
|
||||
if (!effectId) return;
|
||||
|
||||
const effect = this.document.effects.get(effectId);
|
||||
if (effect) {
|
||||
const effectName = effect.name;
|
||||
const confirmed = await foundry.applications.api.DialogV2.confirm({
|
||||
title: game.i18n.localize("MOURNBLADECYD2.effect.deleteConfirm") || "Supprimer l'effet",
|
||||
content: game.i18n.localize("MOURNBLADECYD2.effect.deleteConfirmText") || `Êtes-vous sûr de vouloir supprimer l'effet "${effect.name}" ?`
|
||||
title: game.i18n.localize("MOURNBLADECYD2.EFFECT.deleteConfirm") || "Supprimer l'effet",
|
||||
content: game.i18n.localize("MOURNBLADECYD2.EFFECT.deleteConfirmText", {name: effectName}) ||
|
||||
`Êtes-vous sûr de vouloir supprimer l'effet "${effectName}" ?`
|
||||
});
|
||||
|
||||
if (confirmed) {
|
||||
await this.document.deleteEmbeddedDocuments("ActiveEffect", [effectId]);
|
||||
try {
|
||||
await this.document.deleteEmbeddedDocuments("ActiveEffect", [effectId]);
|
||||
} catch (error) {
|
||||
console.error("MournbladeCYD2 | Failed to delete effect:", error);
|
||||
ui.notifications.error(
|
||||
game.i18n.localize("MOURNBLADECYD2.EFFECT.deleteError") ||
|
||||
"Erreur lors de la suppression de l'effet"
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -403,12 +424,22 @@ export default class MournbladeCYD2ActorSheetV2 extends HandlebarsApplicationMix
|
||||
*/
|
||||
static async #onToggleEffect(event, target) {
|
||||
event.preventDefault();
|
||||
if (!this.isEditable || !this.document) return;
|
||||
|
||||
const effectId = target?.dataset?.effectId;
|
||||
if (!effectId) return;
|
||||
|
||||
const effect = this.document.effects.get(effectId);
|
||||
if (effect) {
|
||||
await effect.update({ disabled: !effect.disabled });
|
||||
try {
|
||||
await effect.update({ disabled: !effect.disabled });
|
||||
} catch (error) {
|
||||
console.error("MournbladeCYD2 | Failed to toggle effect:", error);
|
||||
ui.notifications.error(
|
||||
game.i18n.localize("MOURNBLADECYD2.EFFECT.toggleError") ||
|
||||
"Erreur lors du basculement de l'effet"
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user