Esprit de la Loi + Automaton
This commit is contained in:
@@ -32,6 +32,7 @@ export default class MournbladeItemSheet extends HandlebarsApplicationMixin(foun
|
||||
actions: {
|
||||
editImage: MournbladeItemSheet.#onEditImage,
|
||||
postItem: MournbladeItemSheet.#onPostItem,
|
||||
enchanter: MournbladeItemSheet.#onEnchanter,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -43,17 +44,24 @@ export default class MournbladeItemSheet extends HandlebarsApplicationMixin(foun
|
||||
|
||||
/** @override */
|
||||
async _prepareContext() {
|
||||
const item = this.document
|
||||
const enchantableTypes = ["arme", "equipement", "protection", "bouclier"]
|
||||
const actorIsLoyal = item.actor?.getAlignement?.() === "loyal"
|
||||
const alreadyEnchanted = enchantableTypes.includes(item.type) && (item.system.enchantementLoi?.actif ?? false)
|
||||
const canEnchant = enchantableTypes.includes(item.type) && !!item.actor && actorIsLoyal && !alreadyEnchanted
|
||||
const context = {
|
||||
fields: this.document.schema.fields,
|
||||
systemFields: this.document.system.schema.fields,
|
||||
item: this.document,
|
||||
system: this.document.system,
|
||||
source: this.document.toObject(),
|
||||
enrichedDescription: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true }),
|
||||
fields: item.schema.fields,
|
||||
systemFields: item.system.schema.fields,
|
||||
item,
|
||||
system: item.system,
|
||||
source: item.toObject(),
|
||||
enrichedDescription: await foundry.applications.ux.TextEditor.implementation.enrichHTML(item.system.description, { async: true }),
|
||||
isEditMode: true,
|
||||
isEditable: this.isEditable,
|
||||
isGM: game.user.isGM,
|
||||
config: game.system.mournblade.config,
|
||||
canEnchant,
|
||||
enchantementActif: alreadyEnchanted,
|
||||
}
|
||||
return context
|
||||
}
|
||||
@@ -96,6 +104,19 @@ export default class MournbladeItemSheet extends HandlebarsApplicationMixin(foun
|
||||
|
||||
// #region Actions
|
||||
|
||||
/**
|
||||
* Handle enchanting this item with Loi power
|
||||
*/
|
||||
static async #onEnchanter(event) {
|
||||
event.preventDefault()
|
||||
const item = this.document
|
||||
if (!item.actor) {
|
||||
ui.notifications.warn("Cet objet doit être sur un personnage pour être enchanté.")
|
||||
return
|
||||
}
|
||||
await item.actor.enchanter(item.id)
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle editing the item image
|
||||
* @param {Event} event - The triggering event
|
||||
@@ -137,7 +158,8 @@ export default class MournbladeItemSheet extends HandlebarsApplicationMixin(foun
|
||||
protection: "Protection", equipement: "Équipement", heritage: "Héritage",
|
||||
metier: "Métier", capacite: "Capacité", tendance: "Tendance",
|
||||
traitchaotique: "Trait Chaotique", traitespece: "Trait d'Espèce",
|
||||
origine: "Origine", modifier: "Modificateur", monnaie: "Monnaie"
|
||||
origine: "Origine", modifier: "Modificateur", monnaie: "Monnaie",
|
||||
potion: "Potion"
|
||||
}
|
||||
chatData.typeLabel = typeLabels[chatData.type] ?? chatData.type
|
||||
|
||||
@@ -148,10 +170,30 @@ export default class MournbladeItemSheet extends HandlebarsApplicationMixin(foun
|
||||
pacte: "fa-scroll", protection: "fa-shield", equipement: "fa-box",
|
||||
heritage: "fa-dna", metier: "fa-hammer", capacite: "fa-bolt",
|
||||
tendance: "fa-yin-yang", traitchaotique: "fa-skull", traitespece: "fa-paw",
|
||||
origine: "fa-compass", modifier: "fa-sliders", monnaie: "fa-coins"
|
||||
origine: "fa-compass", modifier: "fa-sliders", monnaie: "fa-coins",
|
||||
potion: "fa-flask"
|
||||
}
|
||||
chatData.typeIcon = typeIcons[chatData.type] ?? "fa-cube"
|
||||
|
||||
// Potion: add localized labels for statut and forme
|
||||
if (chatData.type === "potion") {
|
||||
const statutLabels = {
|
||||
inconnue: game.i18n.localize("MNBL.potionInconnue"),
|
||||
efficace: game.i18n.localize("MNBL.potionEfficace"),
|
||||
heroique: game.i18n.localize("MNBL.potionHeroique"),
|
||||
inefficace: game.i18n.localize("MNBL.potionInefficace"),
|
||||
poison: game.i18n.localize("MNBL.potionPoison"),
|
||||
}
|
||||
const formeLabels = {
|
||||
liquide: game.i18n.localize("MNBL.potionLiquide"),
|
||||
onguent: game.i18n.localize("MNBL.potionOnguent"),
|
||||
cachets: game.i18n.localize("MNBL.potionCachets"),
|
||||
pilules: game.i18n.localize("MNBL.potionPilules"),
|
||||
}
|
||||
chatData.system.statutLabel = statutLabels[chatData.system.statut] ?? chatData.system.statut
|
||||
chatData.system.formeLabel = formeLabels[chatData.system.forme] ?? chatData.system.forme
|
||||
}
|
||||
|
||||
const html = await foundry.applications.handlebars.renderTemplate('systems/fvtt-mournblade/templates/post-item.hbs', chatData)
|
||||
ChatMessage.create({ user: game.user.id, content: html })
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user