Files
fvtt-hamalron/module/models/sortilege.mjs
T
uberwald 1749210322 feat: système de magie complet avec dialogue de lancement
- Modèle sortilege enrichi (type, niveau, portée, durée, conditions, effets)
- Personnage: champ rangMagie (ensorceleur/initié/thaumaturge)
- Constantes: SORTILEGE_MODIFICATEURS (table 3x3), RANG_MAGICIEN
- Dialogue de lancement: tirage MJ, sélection atouts + Coupe, total temps réel
- Calcul difficulté: carte MJ + modificateur selon type × niveau
- Table des échecs magiques (normal/critique selon rang)
- Pioche automatique après succès, défausse après échec
- Template chat avec résultat localisé

Corrections post-review:
- Boucle de défausse sur échec corrigée (itérait toujours sur [0])
- Clé de localisation HAMALRON.Roll.cast -> HAMALRON.Sortilege.cast
- Ajout de la clé manquante noCoupe
- Labels localisés dans le chat (categorieLabel, niveauLabel)
2026-07-10 19:07:05 +02:00

24 lines
1.3 KiB
JavaScript

import { SYSTEM } from "../config/system.mjs"
export default class HamalronSortilege extends foundry.abstract.TypeDataModel {
static defineSchema() {
const fields = foundry.data.fields
const schema = {}
schema.description = new fields.HTMLField({ required: true, textSearch: true })
schema.categorie = new fields.StringField({ required: true, initial: "domestique", choices: Object.fromEntries(Object.entries(SYSTEM.SORTILEGE_CATEGORIES).map(([key, val]) => [key, val.label])) })
schema.niveauRequis = new fields.StringField({ required: true, initial: "amateur", choices: Object.fromEntries(Object.entries(SYSTEM.NIVEAU_COMPETENCES).map(([key, val]) => [key, val.name])) })
schema.portee = new fields.StringField({ required: false, initial: "" })
schema.duree = new fields.StringField({ required: false, initial: "" })
schema.conditions = new fields.StringField({ required: false, initial: "" })
schema.effetAmateur = new fields.HTMLField({ required: false, textSearch: true })
schema.effetCompetent = new fields.HTMLField({ required: false, textSearch: true })
schema.effetExpert = new fields.HTMLField({ required: false, textSearch: true })
schema.concentration = new fields.BooleanField({ required: true, initial: false })
return schema
}
/** @override */
static LOCALIZATION_PREFIXES = ["HAMALRON.Sortilege"]
}