feat: gestion des Dés de Totems (influence, instincts, interdits)
Release Creation / build (release) Failing after 1m32s

- VermineTotemDice : influence Humain/Adapté (+1D/-1D par domaine, règles
  p. 121), gains/pertes via Instincts/Interdits avec limites (3D/totem,
  5D total) et règles d'échange.
- roll.mjs applique l'influence selon le Totem dominant (au lieu de
  l'ancienne logique basée sur identity.totem).
- Dialogue TotemDiceDialog (instinct Humain/autre totem, interdit Humain,
  acte grave ±2D) + bouton et ligne d'influence sur la fiche personnage.
- Dés de Totem gagnés en cas d'échec à l'apprentissage Dé d'Évolution
  (dés dépensés, garde capacité vide).
- Couleur de texte @color-text-light-2 assombrie (#c9e0c0 → #3f9b55)
  pour la lisibilité dans tous les dialogues.

fix: robustesse et visibilité des évolutions

- buyEvolutionDialog : n'efface les Dés d'Évolution que si l'item est créé.
- Flag mutation éditable sur la fiche item evolution + badge
  Adaptation/Mutation dans la liste du personnage.
- loseDie : applique aussi la limite totale de 5 dés au gain Adapté.
- Case "acte grave" conservée entre les rendus du dialogue.
This commit is contained in:
2026-08-06 15:32:55 +02:00
parent 3cb96410b9
commit b0a3aff648
23 changed files with 884 additions and 100 deletions
+17 -1
View File
@@ -10,7 +10,9 @@ export default class VermineCharacterSheetV2 extends VermineBaseActorSheet {
addSpecialty: VermineCharacterSheetV2.#onAddSpecialty,
openExperiencePhase: VermineCharacterSheetV2.#onOpenExperiencePhase,
openLearning: VermineCharacterSheetV2.#onOpenLearning,
validatePhase: VermineCharacterSheetV2.#onValidatePhase
validatePhase: VermineCharacterSheetV2.#onValidatePhase,
buyEvolution: VermineCharacterSheetV2.#onBuyEvolution,
openTotemDice: VermineCharacterSheetV2.#onOpenTotemDice
}
}
@@ -133,4 +135,18 @@ export default class VermineCharacterSheetV2 extends VermineBaseActorSheet {
await VermineExperience.resetPhaseLimits(this.document)
ui.notifications.info(game.i18n.localize("VERMINE.validate_phase_done"))
}
/** Ouvre le dialogue d'achat d'une Adaptation/Mutation (Dés d'Évolution). */
static async #onBuyEvolution(event, target) {
const { default: BuyEvolutionDialog } = await import("../../system/dialogs/buyEvolutionDialog.mjs")
const dialog = await BuyEvolutionDialog.create({ actorId: this.document.id })
if (dialog) dialog.render(true)
}
/** Ouvre le dialogue de gestion des Dés de Totems. */
static async #onOpenTotemDice(event, target) {
const { default: TotemDiceDialog } = await import("../../system/dialogs/totemDiceDialog.mjs")
const dialog = await TotemDiceDialog.create({ actorId: this.document.id })
if (dialog) dialog.render(true)
}
}