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)
This commit is contained in:
2026-07-10 19:07:05 +02:00
parent 54e769176a
commit 1749210322
12 changed files with 567 additions and 22 deletions
+49 -14
View File
@@ -515,6 +515,12 @@
"quote": "Citation",
"resistances": "Résistances",
"rituals": "Rituels",
"amateur": "Amateur",
"competent": "Compétent",
"expert": "Expert",
"effects": "Effets",
"information": "Informations",
"newSortilege": "Nouveau sortilège",
"rollView": "Vue de jet",
"satanicSuccess": "Succès satanique",
"scars": "Cicatrices",
@@ -577,30 +583,58 @@
"Sortilege": {
"FIELDS": {
"categorie": {
"label": "Catégorie"
"label": "Type"
},
"cost": {
"label": "Coût"
"niveauRequis": {
"label": "Niveau requis"
},
"description": {
"label": "Description"
},
"difficulty": {
"label": "Difficulté"
"portee": {
"label": "Pore"
},
"ingredients": {
"label": "Ingrédients"
"duree": {
"label": "Durée"
},
"limit": {
"label": "Limite"
"conditions": {
"label": "Conditions"
},
"nbAttempts": {
"label": "Nombre de tentatives"
"effetAmateur": {
"label": "Effet Amateur"
},
"threshold": {
"label": "Seuil"
"effetCompetent": {
"label": "Effet Compétent"
},
"effetExpert": {
"label": "Effet Expert"
},
"concentration": {
"label": "Concentration"
}
}
},
"cast": "Lancer le sort",
"noAtout": "Vous n'avez pas d'atout en main",
"noCoupe": "Vous n'avez pas de carte Coupe disponible",
"drawCard": "Tirer une carte",
"cardDrawn": "Carte tirée",
"cardValue": "Valeur de la carte",
"modifier": "Modificateur",
"totalDifficulty": "Difficulté totale",
"selectAtouts": "Choisir les atouts",
"atoutHint": "Sélectionnez un ou plusieurs atouts (lames majeures) à jouer. Leurs valeurs s'additionnent.",
"atoutTotal": "Total des atouts",
"selectCoupe": "Cartes Coupe bonus",
"coupeHint": "En tant que thaumaturge, vous pouvez ajouter des cartes Coupe.",
"coupeTotal": "Total Coupe",
"total": "Total",
"playerTotal": "Total du joueur",
"difficulty": "Difficulté du sort",
"rang": "Rang",
"atoutsUsed": "Atouts utilisés",
"coupeUsed": "Cartes Coupe utilisées",
"failureNormal": "Échec normal",
"failureCritical": "Échec critique"
},
"Roll": {
"cancel": "Annuler",
@@ -732,6 +766,7 @@
"addTalent": "Ajouter un talent",
"addTrait": "Ajouter un trait",
"addWeapon": "Ajouter une arme",
"addSortilege": "Ajouter un sortilège",
"damages": "Entrer les dégâts actuels subis"
},
"ViewDetails": "Voir les détails",