Import initial du système
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -8,3 +8,4 @@ node_modules/
|
||||
package-lock.json
|
||||
|
||||
chroniquesdeletrange.lock
|
||||
*.pdf
|
||||
|
||||
18
CHANGELOG.md
18
CHANGELOG.md
@@ -1,3 +1,21 @@
|
||||
3.0.0
|
||||
- Refonte complète vers DataModels (FoundryVTT V13) et Application V2
|
||||
- Suppression du code legacy (module/) — réécriture totale en src/
|
||||
- Pipeline LESS (cde-theme.less → cde-theme.css) via lessc/esbuild
|
||||
- DataModels pour acteurs : character, npc, tinji, loksyu
|
||||
- DataModels pour items : item, kungfu, spell, supernatural
|
||||
- Fiches acteurs et items en ApplicationV2 avec tabs gérés via changeTab
|
||||
- Suppression de template.json (inutile avec DataModels)
|
||||
- Déclaration documentTypes dans system.json
|
||||
- Design Neo-Tokyo Neon Noir sur les fiches items :
|
||||
* Nouvelle palette : fond #080c14, accents néon par type
|
||||
* .cde-neon-header avec bande colorée + clip-path angulaire
|
||||
* .cde-stat-grid style terminal (labels mono uppercase)
|
||||
* .cde-badge parallélogramme clip-path (par type)
|
||||
* .cde-neon-tabs avec underline néon animé
|
||||
- Corrections AppV2 : DEFAULT_OPTIONS sans mergeObject, fix tabs display
|
||||
- ID système : fvtt-chroniques-de-l-etrange
|
||||
|
||||
2.3.3
|
||||
- Image monastère titre sans accentuations
|
||||
|
||||
|
||||
1634
css/cde-theme.css
1634
css/cde-theme.css
File diff suppressed because it is too large
Load Diff
1614
css/cde-theme.less
1614
css/cde-theme.less
File diff suppressed because it is too large
Load Diff
1024
dist/system.js
vendored
1024
dist/system.js
vendored
File diff suppressed because it is too large
Load Diff
8
dist/system.js.map
vendored
8
dist/system.js.map
vendored
File diff suppressed because one or more lines are too long
BIN
fonts/Averia-Regular.ttf
Normal file
BIN
fonts/Averia-Regular.ttf
Normal file
Binary file not shown.
@@ -172,11 +172,16 @@
|
||||
"CDE.SpellDelete": "Delete Spell",
|
||||
"CDE.SpellNew": "New Spell",
|
||||
|
||||
"CDE.SkillPromptName": "",
|
||||
"CDE.SkillPromptName": "Skill Roll",
|
||||
"CDE.Modifiers": "Modifiers",
|
||||
"CDE.BonusMalus": "Bonus/Malus D",
|
||||
"CDE.WoundMalus": "Wound Malus",
|
||||
"CDE.HeiSpend": "HEI Spend",
|
||||
"CDE.SpellBonus": "Spell Bonus",
|
||||
"CDE.SpellPower": "Spell Power",
|
||||
"CDE.BonusAuspiciousDice": "Bonus/Auspicious-Dice",
|
||||
|
||||
"CDE.MagicPromptName": "",
|
||||
"CDE.MagicPromptName": "Magic Roll",
|
||||
"CDE.OneMagicRoll": "1. Magic Roll",
|
||||
"CDE.DoNotModify": "Do not Modify this Aspect",
|
||||
"CDE.AspectSkill": "Aspect/Skill",
|
||||
@@ -203,7 +208,7 @@
|
||||
"CDE.Apprentice": "Apprentice",
|
||||
"CDE.Initiate": "Initiate",
|
||||
"CDE.Accomplished": "Accomplished",
|
||||
"CDE.Reknowned": "Reknowned",
|
||||
"CDE.Renowned": "Renowned",
|
||||
|
||||
"CDE.Nuisance": "Level of Nuisance",
|
||||
"CDE.Figurant": "Figurant",
|
||||
@@ -211,7 +216,7 @@
|
||||
"CDE.Adversary": "Adversary",
|
||||
"CDE.Ally": "Ally",
|
||||
"CDE.Boss": "Boss",
|
||||
"CDE.Dininity": "Divinity",
|
||||
"CDE.Divinity": "Divinity",
|
||||
|
||||
"CDE.Aptitudes": "Aptitudes",
|
||||
"CDE.SuperNatural": "Supernatural Abilities",
|
||||
@@ -336,5 +341,27 @@
|
||||
"spell": "Spell",
|
||||
"supernatural": "Supernatural Ability"
|
||||
}
|
||||
}
|
||||
},
|
||||
"CDE.WeaponCreate": "Create Weapon",
|
||||
"CDE.ArmorCreate": "Create Armor",
|
||||
"CDE.SanheiCreate": "Create San Hei",
|
||||
"CDE.IngredientCreate": "Create Ingredient",
|
||||
"CDE.WeaponNew": "New Weapon",
|
||||
"CDE.ArmorNew": "New Armor",
|
||||
"CDE.SanheiNew": "New San Hei",
|
||||
"CDE.IngredientNew": "New Ingredient",
|
||||
"CDE.ArmorType": "Armor",
|
||||
"CDE.SanheiType": "San Hei",
|
||||
"CDE.IngredientType": "Ingredient",
|
||||
"CDE.ItemType": "Item",
|
||||
"CDE.Weapons": "Weapons",
|
||||
"CDE.Armors": "Armors",
|
||||
"CDE.Sanheis": "San Hei",
|
||||
"CDE.CreatureMortel": "Mortal",
|
||||
"CDE.CreatureDemon": "Demon",
|
||||
"CDE.CreatureEsprit": "Spirit",
|
||||
"CDE.CreatureEspritAnimal": "Animal Spirit",
|
||||
"CDE.CreatureFantome": "Ghost",
|
||||
"CDE.CreatureJiugwaai": "Jiugwaai",
|
||||
"CDE.CreatureDieu": "God / Divinity"
|
||||
}
|
||||
|
||||
@@ -203,7 +203,7 @@
|
||||
"CDE.Apprentice": "Aprendiz",
|
||||
"CDE.Initiate": "Iniciado",
|
||||
"CDE.Accomplished": "Consumado",
|
||||
"CDE.Reknowned": "Renombrado",
|
||||
"CDE.Renowned": "Renombrado",
|
||||
|
||||
"CDE.Nuisance": "Capacitad de Molesta",
|
||||
"CDE.Figurant": "Extra",
|
||||
@@ -211,7 +211,7 @@
|
||||
"CDE.Adversary": "Adversario",
|
||||
"CDE.Ally": "Aliado",
|
||||
"CDE.Boss": "Jefe",
|
||||
"CDE.Dininity": "Deidad",
|
||||
"CDE.Divinity": "Deidad",
|
||||
|
||||
"CDE.Aptitudes": "Aptitudes",
|
||||
"CDE.SuperNatural": "Habilidades Sobrenaturales",
|
||||
|
||||
626
lang/fr-cde.json
626
lang/fr-cde.json
@@ -1,340 +1,370 @@
|
||||
{
|
||||
"CDE.ItemCreate": "Créer un Équipement",
|
||||
"CDE.ItemEdit": "Éditer l′Équipement",
|
||||
"CDE.ItemDelete": "Supprimer l′Équipement",
|
||||
"CDE.ItemNew": "Nouvel Équipement",
|
||||
|
||||
"CDE.TypeOfItem": "Type d′Équipement",
|
||||
"CDE.Weapon": "Arme",
|
||||
"CDE.Accomplished": "Accompli",
|
||||
"CDE.Activation": "Activation",
|
||||
"CDE.ActivationAid": "Action d'Aide",
|
||||
"CDE.ActivationAttack": "Action d'attaque",
|
||||
"CDE.ActivationAttackOrDefense": "Action d'attaque ou de défense",
|
||||
"CDE.ActivationDamageInflicted": "Dégâts infligés",
|
||||
"CDE.ActivationDamageReceived": "Dégâts reçus",
|
||||
"CDE.ActivationDefense": "Action de défense",
|
||||
"CDE.ActivationDice": "Dés-fastes",
|
||||
"CDE.ActivationReaction": "Réaction",
|
||||
"CDE.Acupuncture": "Acupuncture",
|
||||
"CDE.Adversary": "Adversaire",
|
||||
"CDE.Alchemy": "Alchimie",
|
||||
"CDE.Ally": "Allié",
|
||||
"CDE.AntiInitiative": "Anti-Initiative",
|
||||
"CDE.Apprentice": "Apprenti",
|
||||
"CDE.Aptitudes": "Aptitudes",
|
||||
"CDE.Armor": "Protection",
|
||||
"CDE.Sanhei": "Sanhei",
|
||||
"CDE.Other": "Autre",
|
||||
|
||||
|
||||
"CDE.ResourceMin": "Min",
|
||||
"CDE.ResourceValue": "Valeur",
|
||||
"CDE.ResourceMax": "Max",
|
||||
|
||||
"CDE.DefineTemplate": "Définir comme Modèle",
|
||||
"CDE.UnsetTemplate": "Désactiver le Modèle",
|
||||
"CDE.NoTemplate": "Aucun Modèle",
|
||||
|
||||
"CDE.Quantity": "Quantité",
|
||||
"CDE.Weight": "Poids",
|
||||
"CDE.Damage": "Dégâts",
|
||||
"CDE.Range": "Portée",
|
||||
|
||||
"CDE.Masterized": "Vous maîtrisez cette Technique",
|
||||
|
||||
"CDE.Create": "Créer",
|
||||
"CDE.New": "Nouveau",
|
||||
|
||||
"CDE.Name": "Nom",
|
||||
"CDE.PCName": "Nom du Personnage",
|
||||
"CDE.Concept": "Concept",
|
||||
"CDE.Arsenal": "Arsenal",
|
||||
"CDE.Art": "Art",
|
||||
"CDE.Aspect": "Aspect",
|
||||
"CDE.AspectSkill": "Aspect/Compétence",
|
||||
"CDE.AspectSpeciality": "Aspect/Spécialité",
|
||||
"CDE.AssociatedElement": "Élément Associé",
|
||||
"CDE.Attributes": "Attributs",
|
||||
"CDE.Aura": "Aura",
|
||||
"CDE.AuspiciousDice": "Dés-fastes",
|
||||
"CDE.AuspiciousDie": "Dé-faste",
|
||||
"CDE.Beneficial": "Dés-Fastes",
|
||||
"CDE.BonusAuspiciousDice": "Bonus/Dés-fastes",
|
||||
"CDE.Modifiers": "Modificateurs",
|
||||
"CDE.WoundMalus": "Malus blessures",
|
||||
"CDE.HeiSpend": "Dépense HEI",
|
||||
"CDE.SpellBonus": "Bonus Sort",
|
||||
"CDE.SpellPower": "Puissance du Sort",
|
||||
"CDE.Boss": "Boss",
|
||||
"CDE.Cancel": "Annuler",
|
||||
"CDE.CancelChanges": "Annuler les modifications",
|
||||
"CDE.CelestialGuardian": "Gardien Céleste",
|
||||
"CDE.CelestialGuardian1": "Tigre Blanc (Métal)",
|
||||
"CDE.CelestialGuardian2": "Tortue Noire (Eau)",
|
||||
"CDE.CelestialGuardian3": "Kirin Jaune (Terre)",
|
||||
"CDE.CelestialGuardian4": "Oiseau Écarlate (Feu)",
|
||||
"CDE.CelestialGuardian5": "Dragon d′Azur (Bois)",
|
||||
|
||||
"CDE.Description": "Description",
|
||||
"CDE.Description2" : "Descript.",
|
||||
"CDE.Attributes": "Attributs",
|
||||
"CDE.Skills": "Compétences",
|
||||
"CDE.Magics": "Magies",
|
||||
"CDE.Resources": "Ressources",
|
||||
"CDE.Treasures": "Trois Trésors",
|
||||
"CDE.NgHang": "Ng Hang",
|
||||
"CDE.Items": "Équipement",
|
||||
"CDE.KungFu": "Kung Fu",
|
||||
"CDE.Spells": "Sortilèges",
|
||||
"CDE.ModernJapan": "Japon contemporain",
|
||||
|
||||
"CDE.Die": "Cliquez ici pour jeter les dés pour ",
|
||||
"CDE.DieSP": "Cliquez ici pour jeter les dés pour la spécialité ",
|
||||
"CDE.DieDM": "Cliquez ici pour jeter les dés pour un de ces domaines",
|
||||
"CDE.Debt": "Cochez si vous avec contracté une dette en ",
|
||||
|
||||
"CDE.Specialities": "Spécialités",
|
||||
"CDE.Fields": "Domaines",
|
||||
"CDE.Art": "Art",
|
||||
"CDE.Investigation": "Enquête",
|
||||
"CDE.Erudition": "Érudition",
|
||||
"CDE.Knavery": "Filouterie",
|
||||
"CDE.Wordliness": "Mondanités",
|
||||
"CDE.Prowess": "Prouesse",
|
||||
"CDE.Sciences": "Sciences",
|
||||
"CDE.Technologies": "Technologies",
|
||||
"CDE.RangedCombat": "Combat à Distance",
|
||||
|
||||
"CDE.Supply": "Matériel",
|
||||
"CDE.Inquiry": "Renseignement",
|
||||
"CDE.Influence": "Influence",
|
||||
|
||||
"CDE.Components2": "Composants & Ingrédients",
|
||||
"CDE.Component": "Composant n° ",
|
||||
"CDE.ChanceThrow": "Choisir un composant au hasard dans l′urgence",
|
||||
"CDE.TypesOfMagic": "Types de Magie",
|
||||
|
||||
"CDE.InternalCinnabar": "Cinabre Interne",
|
||||
"CDE.Alchemy": "Alchimie",
|
||||
"CDE.MasteryOfTheWay": "Maîtrise de la Voie",
|
||||
"CDE.Exorcism": "Exorcisme",
|
||||
"CDE.Geomancy": "Géomancie",
|
||||
"CDE.WoodYin": "㊍ Bois Yin (4)",
|
||||
|
||||
"CDE.Metal": "㊎ Métal ",
|
||||
"CDE.MetalQualities": "– agressif, passionné, combatif, enthousiate…",
|
||||
"CDE.Water": "㊌ Eau ",
|
||||
"CDE.WaterQualities": "– souple, appliqué, adaptable, discipliné…",
|
||||
"CDE.ClimateControl": "Maîtrise Climatique",
|
||||
"CDE.Component": "Composant n° ",
|
||||
"CDE.Components": "Composantes",
|
||||
"CDE.Components2": "Composants & Ingrédients",
|
||||
"CDE.Concept": "Concept",
|
||||
"CDE.Create": "Créer",
|
||||
"CDE.Curse": "Malédiction",
|
||||
"CDE.DMOnly": "Le MJ uniquement",
|
||||
"CDE.Damage": "Dégâts",
|
||||
"CDE.DamageAspect": "Aspect des dégâts",
|
||||
"CDE.DamageBase": "Dégâts de base",
|
||||
"CDE.Data": "Données",
|
||||
"CDE.Debt": "Cochez si vous avec contracté une dette en ",
|
||||
"CDE.DefineTemplate": "Définir comme Modèle",
|
||||
"CDE.Description": "Description",
|
||||
"CDE.Description2": "Descript.",
|
||||
"CDE.Details": "Détails",
|
||||
"CDE.DeterminateInitiative": "Déterminer l'initiative : Prouesse + première action",
|
||||
"CDE.DeterminateNPCInitiative": "Déterminer l'initiative : Aptitude physique + première action",
|
||||
"CDE.Die": "Cliquez ici pour jeter les dés pour ",
|
||||
"CDE.DieDM": "Cliquez ici pour jeter les dés pour un de ces domaines",
|
||||
"CDE.DieSP": "Cliquez ici pour jeter les dés pour la spécialité ",
|
||||
"CDE.Difficulty": "Difficulté",
|
||||
"CDE.Divinity": "Divinité",
|
||||
"CDE.Discipline": "Discipline",
|
||||
"CDE.Divination": "Divination",
|
||||
"CDE.DoNotModify": "Ne modifiez pas cet Aspect",
|
||||
"CDE.Domain": "Domaine d'accès",
|
||||
"CDE.Domination": "Domination",
|
||||
"CDE.Earth": "㊏ Terre ",
|
||||
"CDE.EarthQualities": "– obstiné, résilient, endurant, patient…",
|
||||
"CDE.Fire": "㊋ Feu ",
|
||||
"CDE.FireQualities": "– chaleureux, créatif, empathique, inspiré…",
|
||||
"CDE.Wood": "㊍ Bois ",
|
||||
"CDE.WoodQualities": "– intuitif, observateur, ouvert, instinctif…",
|
||||
|
||||
"CDE.PracticeSpecialty": "Cochez si vous pratiquez la spécialité ",
|
||||
|
||||
"CDE.Essence": "Essence",
|
||||
"CDE.Mind": "Esprit",
|
||||
"CDE.Purification": "Purification",
|
||||
"CDE.Manipulation": "Manipulation",
|
||||
"CDE.Aura": "Aura",
|
||||
|
||||
"CDE.Acupuncture": "Acupuncture",
|
||||
"CDE.Elixirs": "Élixirs",
|
||||
"CDE.Poisons": "Poisons",
|
||||
"CDE.Arsenal": "Arsenal",
|
||||
"CDE.Potions": "Philtres",
|
||||
|
||||
"CDE.Curse": "Malédiction",
|
||||
"CDE.Transfiguration": "Transfiguration",
|
||||
"CDE.Necromancy": "Nécromancie",
|
||||
"CDE.ClimateControl": "Maîtrise Climatique",
|
||||
"CDE.GoldenMagic": "Magie d′Or",
|
||||
|
||||
"CDE.Invocation": "Invocation",
|
||||
"CDE.Tracking": "Traque",
|
||||
"CDE.Protection": "Protection",
|
||||
"CDE.Punishment": "Punition",
|
||||
"CDE.Domination": "Domination",
|
||||
|
||||
"CDE.Neutralization": "Neutralisation",
|
||||
"CDE.Divination": "Divination",
|
||||
"CDE.EarthlyPrayer": "Prière Terrestre",
|
||||
"CDE.HeavenlyPrayer": "Prière Céleste",
|
||||
"CDE.Fungseoi": "Fungseoi",
|
||||
|
||||
"CDE.HEI": "HEI",
|
||||
"CDE.Essence2": "(Essence)",
|
||||
"CDE.YANG-YIN": "YANG ● YIN",
|
||||
"CDE.Max-Present-Present-Max": "Max ● Actuel ● Actuel ● Max",
|
||||
"CDE.SAN-ZING": "SAN ● ZING",
|
||||
"CDE.MentalHealth-PhysicalHealth": "(Santé Mentale ● Santé Physique)",
|
||||
"CDE.Max-Present-Malus-Present-Max": "Max ● Actuel ● Malus ● Actuel ● Max",
|
||||
"CDE.PTAO": "PTAO",
|
||||
"CDE.Experience": "(Expérience)",
|
||||
"CDE.Total-Present": "Total ● Actuel",
|
||||
|
||||
"CDE.Present": "Actuel",
|
||||
"CDE.Total": "Total",
|
||||
"CDE.Max": "Max",
|
||||
|
||||
"CDE.Orientation": "Orientation",
|
||||
"CDE.Aspect": "Aspect",
|
||||
"CDE.Skill": "Compétence",
|
||||
"CDE.Speciality": "Spécialité",
|
||||
"CDE.Field": "Domaine",
|
||||
"CDE.Style": "Style",
|
||||
"CDE.Technique": "Technique",
|
||||
"CDE.Activation": "Activation",
|
||||
|
||||
"CDE.KFCreate": "Créer un Art Martial",
|
||||
"CDE.KFEdit": "Éditer l′Art Martial",
|
||||
"CDE.KFDelete": "Supprimer l′Art Martial",
|
||||
"CDE.KFNew": "Nouvel Art Martial",
|
||||
|
||||
"CDE.SpecialityName": "Nom Spécialité",
|
||||
"CDE.AssociatedElement": "Élément Associé",
|
||||
"CDE.HEI2": "Hei",
|
||||
"CDE.RealizationTimeRitual": "Temps de Réalisation (Rituel)",
|
||||
"CDE.RealizationTimeAccelerated": "Temps de Réalisation (Accéléré)",
|
||||
"CDE.Flashback": "Flash-back",
|
||||
"CDE.Data": "Données",
|
||||
"CDE.Components": "Composantes",
|
||||
"CDE.Effects": "Effets",
|
||||
"CDE.Examples": "Exemples",
|
||||
|
||||
"CDE.SpellCreate": "Créer un Sortilège",
|
||||
"CDE.SpellEdit": "Éditer le Sortilège",
|
||||
"CDE.SpellDelete": "Supprimer le Sortilège",
|
||||
"CDE.SpellNew": "Nouveau Sortilège",
|
||||
|
||||
"CDE.SkillPromptName": "",
|
||||
"CDE.BonusMalus": "D Bonus/Malus",
|
||||
"CDE.BonusAuspiciousDice": "Bonus/Dés-fastes",
|
||||
|
||||
"CDE.MagicPromptName": "",
|
||||
"CDE.OneMagicRoll": "1. Jet de Magie",
|
||||
"CDE.DoNotModify": "Ne modifiez pas cet Aspect",
|
||||
"CDE.AspectSkill": "Aspect/Compétence",
|
||||
"CDE.TwoPowerOfSpell": "2. Puissance du Sort",
|
||||
"CDE.AspectSpeciality": "Aspect/Spécialité",
|
||||
"CDE.RollDifficulty": "Difficulté du Jet",
|
||||
|
||||
"CDE.TypeOfThrow": "Type de jet : visible pour…",
|
||||
"CDE.Everybody": "Tout le monde",
|
||||
"CDE.JustDMAndMe": "Juste le MJ et moi",
|
||||
"CDE.DMOnly": "Le MJ uniquement",
|
||||
"CDE.MeOnly": "Moi uniquement",
|
||||
"CDE.AuspiciousDice": "Dés-fastes",
|
||||
"CDE.AuspiciousDie": "Dé-faste",
|
||||
|
||||
"CDE.Validate": "Valider",
|
||||
"CDE.Cancel": "Annuler",
|
||||
|
||||
"CDE.NPCName": "Nom du PNJ",
|
||||
"CDE.TypeOfCreature": "Type de Créature",
|
||||
|
||||
"CDE.Threat": "Niveau de Menace",
|
||||
"CDE.Profane": "Profane",
|
||||
"CDE.Apprentice": "Apprenti",
|
||||
"CDE.Initiate": "Initié",
|
||||
"CDE.Accomplished": "Accompli",
|
||||
"CDE.Reknowned": "Renommé",
|
||||
|
||||
"CDE.Nuisance": "Capacité de Nuisance",
|
||||
"CDE.Figurant": "Figurant",
|
||||
"CDE.Minion": "Sbire",
|
||||
"CDE.Adversary": "Adversaire",
|
||||
"CDE.Ally": "Allié",
|
||||
"CDE.Boss": "Boss",
|
||||
"CDE.Dininity": "Divinité",
|
||||
|
||||
"CDE.Aptitudes": "Aptitudes",
|
||||
"CDE.SuperNatural": "Capacités Surnaturelles",
|
||||
|
||||
"CDE.Physical": "● Physique",
|
||||
"CDE.Martial": "● Martiale",
|
||||
"CDE.Mental": "● Mentale",
|
||||
"CDE.Social": "● Sociale",
|
||||
"CDE.Spiritual": "● Spirituelle",
|
||||
|
||||
"CDE.Vitality": "Vitalité",
|
||||
"CDE.Hei": "Hei",
|
||||
|
||||
"CDE.Notes": "Notes",
|
||||
|
||||
"CDE.SupernaturalCreate": "Créer une Capacité Surnaturelle",
|
||||
"CDE.SupernaturalEdit": "Éditer la Capacité Surnaturelle",
|
||||
"CDE.SupernaturalDelete": "Supprimer la Capacité Surnaturelle",
|
||||
"CDE.SupernaturalNew": "Nouvelle Capacité Surnaturelle",
|
||||
|
||||
"CDE.LoksyuName": "Nom du Loksyu",
|
||||
"CDE.Loksyu": "Loksyu",
|
||||
"CDE.MetalYang": "㊎ Métal Yang (3)",
|
||||
"CDE.MetalYin": "㊎ Métal Yin (8)",
|
||||
"CDE.WaterYang": "㊌ Eau Yang (1)",
|
||||
"CDE.WaterYin": "㊌ Eau Yin (6)",
|
||||
"CDE.EarthYang": "㊏ Terre Yang (5)",
|
||||
"CDE.EarthYin": "㊏ Terre Yin (0)",
|
||||
"CDE.FireYang": "㊋ Feu Yang (7)",
|
||||
"CDE.FireYin": "㊋ Feu Yin (2)",
|
||||
"CDE.WoodYang": "㊍ Bois Yang (9)",
|
||||
|
||||
"CDE.Yin": "● Yin",
|
||||
"CDE.Yang": "○ Yang",
|
||||
"CDE.Successes": "Succès",
|
||||
"CDE.Beneficial": "Dés-Fastes",
|
||||
"CDE.Noxious": "Dés-Néfastes",
|
||||
"CDE.TinJi": "Tin Ji :",
|
||||
"CDE.Loksyu2": "Loksyu :",
|
||||
"CDE.Results": "Résultats :",
|
||||
"CDE.SpecialAspect": "Aspect Spécialité",
|
||||
|
||||
"CDE.Randomize": "Tirage aléatoire",
|
||||
"CDE.RandomizeSentence": "n° du composant choisi au hasard dans l'urgence",
|
||||
|
||||
"CDE.Reference": "Référence",
|
||||
|
||||
"CDE.EarthlyPrayer": "Prière Terrestre",
|
||||
"CDE.Effects": "Effets",
|
||||
"CDE.Elixirs": "Élixirs",
|
||||
"CDE.Error0": "Impossible de poursuivre : le nombre total de vos dés à lancer est inférieur à 1.",
|
||||
"CDE.Error1": "Impossible de poursuivre : vous ne possédez pas cette Compétence.",
|
||||
"CDE.Error10": "Impossible de poursuivre : vous avez 0 ou moins dans cet Aspect.",
|
||||
"CDE.Error12": "Impossible de poursuivre : vous ne pouvez pas posséder de Spécialité dans cette Compétence dont le score est inférieur à 1.",
|
||||
"CDE.Error14": "Impossible de poursuivre : vous ne pouvez pas posséder de Domaine dans cette Ressource dont le score est inférieur à 1.",
|
||||
"CDE.Error16": "Impossible de poursuivre : vous ne pouvez pas posséder de Spécialité dans cette Compétence de Magie dont le score est inférieur à 1.",
|
||||
"CDE.Error2": "Impossible de poursuivre : vous ne possédez pas de Spécialité dans cette Compétence.",
|
||||
"CDE.Error3": "Impossible de poursuivre : vous ne possédez pas cette Ressource.",
|
||||
"CDE.Error4": "Impossible de poursuivre : vous ne possédez pas de Domaine dans cette Ressource.",
|
||||
"CDE.Error5": "Impossible de poursuivre : vous ne possédez pas cette Compétence de Magie.",
|
||||
"CDE.Error6": "Impossible de poursuivre : vous ne possédez pas cette Spécialité dans cette Compétence de Magie.",
|
||||
"CDE.Error10": "Impossible de poursuivre : vous avez 0 ou moins dans cet Aspect.",
|
||||
"CDE.Error12": "Impossible de poursuivre : vous ne pouvez pas posséder de Spécialité dans cette Compétence dont le score est inférieur à 1.",
|
||||
"CDE.Error14": "Impossible de poursuivre : vous ne pouvez pas posséder de Domaine dans cette Ressource dont le score est inférieur à 1.",
|
||||
"CDE.Error16": "Impossible de poursuivre : vous ne pouvez pas posséder de Spécialité dans cette Compétence de Magie dont le score est inférieur à 1.",
|
||||
|
||||
"CDE.Preferences": "Préférences pour cet acteur",
|
||||
"CDE.TypeOfThrowCheck": "Toujours demander avant d'effectuer un lancer",
|
||||
|
||||
"CDE.TypeOfThrow4ThisTime": "Type de jet pour cette fois : visible pour…",
|
||||
"CDE.TypeOfThrowTitle": "Modifier le type de jet ?",
|
||||
"CDE.CancelChanges": "Annuler les modifications",
|
||||
|
||||
"CDE.NextTimeGoToTheSettings": "Tout ceci est paramétrable dans les Préférences",
|
||||
|
||||
|
||||
"CDE.OneDie": "dé",
|
||||
"CDE.ManyDice": "dés",
|
||||
|
||||
"CDE.Erudition": "Érudition",
|
||||
"CDE.Essence": "Essence",
|
||||
"CDE.Essence2": "(Essence)",
|
||||
"CDE.Everybody": "Tout le monde",
|
||||
"CDE.Examples": "Exemples",
|
||||
"CDE.Exorcism": "Exorcisme",
|
||||
"CDE.Experience": "(Expérience)",
|
||||
"CDE.Field": "Domaine",
|
||||
"CDE.Fields": "Domaines",
|
||||
"CDE.Figurant": "Figurant",
|
||||
"CDE.Fire": "㊋ Feu ",
|
||||
"CDE.FirstAction": "Première action",
|
||||
"CDE.FireQualities": "– chaleureux, créatif, empathique, inspiré…",
|
||||
"CDE.FireYang": "㊋ Feu Yang (7)",
|
||||
"CDE.FireYin": "㊋ Feu Yin (2)",
|
||||
"CDE.Flashback": "Flash-back",
|
||||
"CDE.Fungseoi": "Fungseoi",
|
||||
"CDE.Geomancy": "Géomancie",
|
||||
"CDE.GoldenMagic": "Magie d′Or",
|
||||
"CDE.HEI": "HEI",
|
||||
"CDE.HEI2": "Hei",
|
||||
"CDE.HasCastASpell": "a lancé un sortilège ",
|
||||
"CDE.HeavenlyPrayer": "Prière Céleste",
|
||||
"CDE.Hei": "Hei",
|
||||
"CDE.HeiCost": "Coût en Hei",
|
||||
"CDE.HeiType": "Type de Hei",
|
||||
"CDE.HeiYang": "Yang",
|
||||
"CDE.HeiYin": "Yin",
|
||||
"CDE.Influence": "Influence",
|
||||
"CDE.Ingredient": "Ingrédient",
|
||||
"CDE.Ingredients": "Ingrédients",
|
||||
"CDE.Initiate": "Initié",
|
||||
"CDE.Initiative": "Initiative",
|
||||
"CDE.InitiativeBonus": "Modificateur",
|
||||
"CDE.InitiativeFormula": "Prouesse + Première action choisie",
|
||||
"CDE.InitiativeFormulaNPC": "Aptitude physique + Première action choisie",
|
||||
"CDE.InitiativeNPCSpeciality": "Première action (Aptitude) que vous escomptez effectuer",
|
||||
"CDE.InitiativeRoll": "Jet d'initiative",
|
||||
"CDE.InitiativeSpeciality": "Première action (Compétence) que vous escomptez effectuer",
|
||||
"CDE.Inquiry": "Renseignement",
|
||||
"CDE.InternalCinnabar": "Cinabre Interne",
|
||||
"CDE.Investigation": "Enquête",
|
||||
"CDE.Invocation": "Invocation",
|
||||
"CDE.ItemCreate": "Créer un Équipement",
|
||||
"CDE.ItemDelete": "Supprimer l′Équipement",
|
||||
"CDE.ItemEdit": "Éditer l′Équipement",
|
||||
"CDE.ItemNew": "Nouvel Équipement",
|
||||
"CDE.Items": "Équipement",
|
||||
"CDE.JustDMAndMe": "Juste le MJ et moi",
|
||||
"CDE.KFCreate": "Créer un Art Martial",
|
||||
"CDE.KFDelete": "Supprimer l′Art Martial",
|
||||
"CDE.KFEdit": "Éditer l′Art Martial",
|
||||
"CDE.KFNew": "Nouvel Art Martial",
|
||||
"CDE.Knavery": "Filouterie",
|
||||
"CDE.KungFu": "Kung Fu",
|
||||
"CDE.Loksyu": "Loksyu",
|
||||
"CDE.Loksyu2": "Loksyu :",
|
||||
"CDE.LoksyuName": "Nom du Loksyu",
|
||||
"CDE.MagicPromptName": "Jet de Magie",
|
||||
"CDE.Magics": "Magies",
|
||||
"CDE.Manipulation": "Manipulation",
|
||||
"CDE.ManyDice": "dés",
|
||||
"CDE.Martial": "● Martiale",
|
||||
"CDE.MartialArts": "Arts Martiaux",
|
||||
"CDE.Masterized": "Vous maîtrisez cette Technique",
|
||||
"CDE.MasteryOfTheWay": "Maîtrise de la Voie",
|
||||
"CDE.Max": "Max",
|
||||
"CDE.Max-Present-Malus-Present-Max": "Max ● Actuel ● Malus ● Actuel ● Max",
|
||||
"CDE.Max-Present-Present-Max": "Max ● Actuel ● Actuel ● Max",
|
||||
"CDE.MeOnly": "Moi uniquement",
|
||||
"CDE.Mental": "● Mentale",
|
||||
"CDE.MentalHealth-PhysicalHealth": "(Santé Mentale ● Santé Physique)",
|
||||
"CDE.Metal": "㊎ Métal ",
|
||||
"CDE.MetalQualities": "– agressif, passionné, combatif, enthousiate…",
|
||||
"CDE.MetalYang": "㊎ Métal Yang (3)",
|
||||
"CDE.MetalYin": "㊎ Métal Yin (8)",
|
||||
"CDE.Mind": "Esprit",
|
||||
"CDE.Minion": "Sbire",
|
||||
"CDE.MinusInitiative": "Moins Initiative",
|
||||
"CDE.ModernJapan": "Japon contemporain",
|
||||
"CDE.MsgMagic1": "Le nombre de points de Hei dépensés pour le sort de spécialité ",
|
||||
"CDE.MsgMagic2": "s'élève à ",
|
||||
"CDE.MsgMagic3": ". La puissance à invoquer est de ",
|
||||
"CDE.MsgMagic4": ", si toutefois le sort est lancé avec succès.",
|
||||
|
||||
|
||||
"CDE.TinJiName": "Nom de la Tin Ji",
|
||||
"CDE.NPCName": "Nom du PNJ",
|
||||
"CDE.Name": "Nom",
|
||||
"CDE.Necromancy": "Nécromancie",
|
||||
"CDE.Neutralization": "Neutralisation",
|
||||
"CDE.New": "Nouveau",
|
||||
"CDE.NextTimeGoToTheSettings": "Tout ceci est paramétrable dans les Préférences",
|
||||
"CDE.NgHang": "Ng Hang",
|
||||
"CDE.NoTemplate": "Aucun Modèle",
|
||||
"CDE.Notes": "Notes",
|
||||
"CDE.Noxious": "Dés-Néfastes",
|
||||
"CDE.Nuisance": "Capacité de Nuisance",
|
||||
"CDE.ObtainDifficulty": "Diff. d'obtention",
|
||||
"CDE.ObtainLevel": "Niv. d'obtention",
|
||||
"CDE.OneDie": "dé",
|
||||
"CDE.OneMagicRoll": "1. Jet de Magie",
|
||||
"CDE.Orientation": "Orientation",
|
||||
"CDE.OrientationYang": "Yang (offensif)",
|
||||
"CDE.OrientationYin": "Yin (défensif)",
|
||||
"CDE.OrientationYinYang": "Yin ou Yang",
|
||||
"CDE.Other": "Autre",
|
||||
"CDE.PCName": "Nom du Personnage",
|
||||
"CDE.PTAO": "PTAO",
|
||||
"CDE.Physical": "● Physique",
|
||||
"CDE.PlusInitiative": "Plus Initiative",
|
||||
"CDE.Poisons": "Poisons",
|
||||
"CDE.Potions": "Philtres",
|
||||
"CDE.PracticeSpecialty": "Cochez si vous pratiquez la spécialité ",
|
||||
"CDE.Preferences": "Préférences pour cet acteur",
|
||||
"CDE.Present": "Actuel",
|
||||
"CDE.Profane": "Profane",
|
||||
"CDE.Property": "Propriété",
|
||||
"CDE.Protection": "Protection",
|
||||
"CDE.ProtectionValue": "Valeur de protection",
|
||||
"CDE.Prowess": "Prouesse",
|
||||
"CDE.Punishment": "Punition",
|
||||
"CDE.Purification": "Purification",
|
||||
"CDE.Quantity": "Quantité",
|
||||
"CDE.Randomize": "Tirage aléatoire",
|
||||
"CDE.RandomizeSentence": "n° du composant choisi au hasard dans l'urgence",
|
||||
"CDE.Range": "Portée",
|
||||
"CDE.RangeContact": "Au contact",
|
||||
"CDE.RangeCourte": "Distance courte",
|
||||
"CDE.RangeExtreme": "Distance extrême",
|
||||
"CDE.RangeLongue": "Distance longue",
|
||||
"CDE.RangeMediane": "Distance médiane",
|
||||
"CDE.RangedCombat": "Combat à Distance",
|
||||
"CDE.RealizationTimeAccelerated": "Temps de Réalisation (Accéléré)",
|
||||
"CDE.RealizationTimeRitual": "Temps de Réalisation (Rituel)",
|
||||
"CDE.Reference": "Référence",
|
||||
"CDE.Renowned": "Renommé",
|
||||
"CDE.ResourceMax": "Max",
|
||||
"CDE.ResourceMin": "Min",
|
||||
"CDE.ResourceValue": "Valeur",
|
||||
"CDE.Resources": "Ressources",
|
||||
"CDE.Results": "Résultats :",
|
||||
"CDE.RollDifficulty": "Difficulté du Jet",
|
||||
"CDE.SAN-ZING": "SAN ● ZING",
|
||||
"CDE.Sanhei": "Sanhei",
|
||||
"CDE.SanheiProperties": "Propriétés du sanhei",
|
||||
"CDE.School": "École",
|
||||
"CDE.SchoolAlchemy": "Alchimie",
|
||||
"CDE.SchoolAll": "Toutes disciplines",
|
||||
"CDE.SchoolCinabre": "Cinabre interne",
|
||||
"CDE.SchoolExorcisme": "Exorcisme",
|
||||
"CDE.SchoolGeomancy": "Géomancie",
|
||||
"CDE.SchoolVoie": "Maîtrise de la Voie",
|
||||
"CDE.Sciences": "Sciences",
|
||||
"CDE.Skill": "Compétence",
|
||||
"CDE.SkillCombatDistance": "Combat à distance",
|
||||
"CDE.SkillKungfu": "Kung-fu",
|
||||
"CDE.SkillPromptName": "Jet de Compétence",
|
||||
"CDE.Skills": "Compétences",
|
||||
"CDE.Social": "● Sociale",
|
||||
"CDE.SpecialAspect": "Aspect Spécialité",
|
||||
"CDE.Specialities": "Spécialités",
|
||||
"CDE.Speciality": "Spécialité",
|
||||
"CDE.SpecialityName": "Nom Spécialité",
|
||||
"CDE.SpellCreate": "Créer un Sortilège",
|
||||
"CDE.SpellDelete": "Supprimer le Sortilège",
|
||||
"CDE.SpellEdit": "Éditer le Sortilège",
|
||||
"CDE.SpellNew": "Nouveau Sortilège",
|
||||
"CDE.Spells": "Sortilèges",
|
||||
"CDE.Spiritual": "● Spirituelle",
|
||||
"CDE.Style": "Style",
|
||||
"CDE.Successes": "Succès",
|
||||
"CDE.SuperNatural": "Capacités Surnaturelles",
|
||||
"CDE.SupernaturalCreate": "Créer une Capacité Surnaturelle",
|
||||
"CDE.SupernaturalDelete": "Supprimer la Capacité Surnaturelle",
|
||||
"CDE.SupernaturalEdit": "Éditer la Capacité Surnaturelle",
|
||||
"CDE.SupernaturalNew": "Nouvelle Capacité Surnaturelle",
|
||||
"CDE.Supply": "Matériel",
|
||||
"CDE.Technique": "Technique",
|
||||
"CDE.Technologies": "Technologies",
|
||||
"CDE.Threat": "Niveau de Menace",
|
||||
"CDE.TinJi": "Tin Ji :",
|
||||
"CDE.TinJi2": "Tin Ji",
|
||||
|
||||
"CDE.UpperCaseSuccesses": "SUCCÈS",
|
||||
"CDE.TinJiName": "Nom de la Tin Ji",
|
||||
"CDE.Total": "Total",
|
||||
"CDE.Total-Present": "Total ● Actuel",
|
||||
"CDE.Tracking": "Traque",
|
||||
"CDE.Transfiguration": "Transfiguration",
|
||||
"CDE.Treasures": "Trois Trésors",
|
||||
"CDE.Trigger": "Déclenchement",
|
||||
"CDE.TurnOrder": "Détermination de votre initiative",
|
||||
"CDE.TwoPowerOfSpell": "2. Puissance du Sort",
|
||||
"CDE.TypeOfCreature": "Type de Créature",
|
||||
"CDE.TypeOfItem": "Type d′Équipement",
|
||||
"CDE.TypeOfThrow": "Type de jet : visible pour…",
|
||||
"CDE.TypeOfThrow4ThisTime": "Type de jet pour cette fois : visible pour…",
|
||||
"CDE.TypeOfThrowCheck": "Toujours demander avant d'effectuer un lancer",
|
||||
"CDE.TypeOfThrowTitle": "Modifier le type de jet ?",
|
||||
"CDE.TypesOfMagic": "Types de Magie",
|
||||
"CDE.UnsetTemplate": "Désactiver le Modèle",
|
||||
"CDE.UpperCaseAuspiciousDice": "DÉS-FASTES",
|
||||
"CDE.UpperCaseNoxiousDice": "DÉS-NÉFASTES",
|
||||
"CDE.UpperCaseLoksyu": "LOKSYU",
|
||||
"CDE.UpperCaseTinJi": "TIN JI",
|
||||
|
||||
"CDE.UpperCaseMetal": "METAL",
|
||||
"CDE.UpperCaseWater": "EAU",
|
||||
"CDE.UpperCaseEarth": "TERRE",
|
||||
"CDE.UpperCaseFire": "FEU",
|
||||
"CDE.UpperCaseLoksyu": "LOKSYU",
|
||||
"CDE.UpperCaseMetal": "METAL",
|
||||
"CDE.UpperCaseNoxiousDice": "DÉS-NÉFASTES",
|
||||
"CDE.UpperCaseSuccesses": "SUCCÈS",
|
||||
"CDE.UpperCaseTinJi": "TIN JI",
|
||||
"CDE.UpperCaseWater": "EAU",
|
||||
"CDE.UpperCaseWood": "BOIS",
|
||||
|
||||
|
||||
"CDE.Validate": "Valider",
|
||||
"CDE.Visible": "Spécialités visibles",
|
||||
|
||||
"CDE.MartialArts": "Arts Martiaux",
|
||||
|
||||
"CDE.Initiative": "Initiative",
|
||||
"CDE.TurnOrder": "Détermination de votre initiative",
|
||||
"CDE.InitiativeSpeciality": "Première action (Compétence) que vous escomptez effectuer",
|
||||
"CDE.InitiativeNPCSpeciality": "Première action (Aptitude) que vous escomptez effectuer",
|
||||
|
||||
"CDE.DeterminateInitiative": "Déterminer l'initiative : Prouesse + première action",
|
||||
"CDE.DeterminateNPCInitiative": "Déterminer l'initiative : Aptitude physique + première action",
|
||||
"CDE.PlusInitiative": "Plus Initiative",
|
||||
"CDE.MinusInitiative": "Moins Initiative",
|
||||
|
||||
|
||||
"CDE.Vitality": "Vitalité",
|
||||
"CDE.Water": "㊌ Eau ",
|
||||
"CDE.WaterQualities": "– souple, appliqué, adaptable, discipliné…",
|
||||
"CDE.WaterYang": "㊌ Eau Yang (1)",
|
||||
"CDE.WaterYin": "㊌ Eau Yin (6)",
|
||||
"CDE.Weapon": "Arme",
|
||||
"CDE.WeaponFirearm": "Arme à feu",
|
||||
"CDE.WeaponMelee": "Arme blanche",
|
||||
"CDE.WeaponRanged": "Arme à distance",
|
||||
"CDE.WeaponThrown": "Arme de jet",
|
||||
"CDE.WeaponType": "Type d'arme",
|
||||
"CDE.Weight": "Poids",
|
||||
"CDE.Wood": "㊍ Bois ",
|
||||
"CDE.WoodQualities": "– intuitif, observateur, ouvert, instinctif…",
|
||||
"CDE.WoodYang": "㊍ Bois Yang (9)",
|
||||
"CDE.WoodYin": "㊍ Bois Yin (4)",
|
||||
"CDE.Wordliness": "Mondanités",
|
||||
"CDE.YANG-YIN": "YANG ● YIN",
|
||||
"CDE.Yang": "○ Yang",
|
||||
"CDE.Yin": "● Yin",
|
||||
"TYPES": {
|
||||
"Actor": {
|
||||
"character": "Fat si",
|
||||
"loksyu": "Loksyu",
|
||||
"npc": "Créature",
|
||||
"tinji": "Tin Ji",
|
||||
"loksyu": "Loksyu"
|
||||
"tinji": "Tin Ji"
|
||||
},
|
||||
"Item": {
|
||||
"armor": "Protection",
|
||||
"ingredient": "Ingrédient",
|
||||
"item": "Équipement",
|
||||
"kungfu": "Art martial",
|
||||
"sanhei": "Sanhei",
|
||||
"spell": "Sortilège",
|
||||
"supernatural": "Capacité surnaturelle"
|
||||
"supernatural": "Capacité surnaturelle",
|
||||
"weapon": "Arme"
|
||||
}
|
||||
}
|
||||
},
|
||||
"CDE.WeaponCreate": "Créer une arme",
|
||||
"CDE.ArmorCreate": "Créer une protection",
|
||||
"CDE.SanheiCreate": "Créer un San Hei",
|
||||
"CDE.IngredientCreate": "Créer un ingrédient",
|
||||
"CDE.WeaponNew": "Nouvelle arme",
|
||||
"CDE.ArmorNew": "Nouvelle protection",
|
||||
"CDE.SanheiNew": "Nouveau San Hei",
|
||||
"CDE.IngredientNew": "Nouvel ingrédient",
|
||||
"CDE.ArmorType": "Protection",
|
||||
"CDE.SanheiType": "San Hei",
|
||||
"CDE.IngredientType": "Ingrédient",
|
||||
"CDE.ItemType": "Objet",
|
||||
"CDE.Weapons": "Armes",
|
||||
"CDE.Armors": "Protections",
|
||||
"CDE.Sanheis": "San Hei",
|
||||
"CDE.CreatureMortel": "Mortel",
|
||||
"CDE.CreatureDemon": "Démon",
|
||||
"CDE.CreatureEsprit": "Esprit",
|
||||
"CDE.CreatureEspritAnimal": "Esprit animal",
|
||||
"CDE.CreatureFantome": "Fantôme",
|
||||
"CDE.CreatureJiugwaai": "Jiugwaai",
|
||||
"CDE.CreatureDieu": "Dieu / Divinité",
|
||||
|
||||
"CDE.WeaponRollTitle": "Jet d'attaque",
|
||||
"CDE.EffectiveRange": "Portée effective",
|
||||
"CDE.TotalDamage": "Dommages",
|
||||
"CDE.WeaponRoll": "Jet d'arme",
|
||||
"CDE.RangePenalty": "Pénalité de portée",
|
||||
"CDE.SuccessTimesDamage": "succès × dégâts de base"
|
||||
}
|
||||
|
||||
@@ -22,5 +22,8 @@
|
||||
"devDependencies": {
|
||||
"esbuild": "^0.27.4",
|
||||
"less": "^4.2.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"puppeteer-core": "^24.40.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
MANIFEST-000034
|
||||
MANIFEST-000050
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
2026/03/25-23:20:54.993495 7f90f7fff6c0 Recovering log #32
|
||||
2026/03/25-23:20:55.003177 7f90f7fff6c0 Delete type=3 #30
|
||||
2026/03/25-23:20:55.003228 7f90f7fff6c0 Delete type=0 #32
|
||||
2026/03/26-23:22:41.148674 7f90f77fe6c0 Recovering log #48
|
||||
2026/03/26-23:22:41.202546 7f90f77fe6c0 Delete type=3 #46
|
||||
2026/03/26-23:22:41.202617 7f90f77fe6c0 Delete type=0 #48
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
2026/03/25-23:09:24.686953 7f90f67fc6c0 Recovering log #27
|
||||
2026/03/25-23:09:24.697512 7f90f67fc6c0 Delete type=3 #25
|
||||
2026/03/25-23:09:24.697571 7f90f67fc6c0 Delete type=0 #27
|
||||
2026/03/25-23:20:49.874535 7f90f5ffb6c0 Level-0 table #33: started
|
||||
2026/03/25-23:20:49.874573 7f90f5ffb6c0 Level-0 table #33: 0 bytes OK
|
||||
2026/03/25-23:20:49.881637 7f90f5ffb6c0 Delete type=0 #31
|
||||
2026/03/25-23:20:49.894392 7f90f5ffb6c0 Manual compaction at level-0 from '!journal!ZWBHiWW5QlUeseAX' @ 72057594037927935 : 1 .. '!journal.pages!ZWBHiWW5QlUeseAX.jtQXIqLfyet8Nlte' @ 0 : 0; will stop at (end)
|
||||
2026/03/26-22:00:22.685636 7f90f7fff6c0 Recovering log #44
|
||||
2026/03/26-22:00:22.746783 7f90f7fff6c0 Delete type=3 #42
|
||||
2026/03/26-22:00:22.746837 7f90f7fff6c0 Delete type=0 #44
|
||||
2026/03/26-23:22:30.433416 7f90f5ffb6c0 Level-0 table #49: started
|
||||
2026/03/26-23:22:30.433442 7f90f5ffb6c0 Level-0 table #49: 0 bytes OK
|
||||
2026/03/26-23:22:30.471510 7f90f5ffb6c0 Delete type=0 #47
|
||||
2026/03/26-23:22:30.471678 7f90f5ffb6c0 Manual compaction at level-0 from '!journal!ZWBHiWW5QlUeseAX' @ 72057594037927935 : 1 .. '!journal.pages!ZWBHiWW5QlUeseAX.jtQXIqLfyet8Nlte' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000150
|
||||
MANIFEST-000166
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
2026/03/25-23:20:54.979842 7f90f67fc6c0 Recovering log #148
|
||||
2026/03/25-23:20:54.991234 7f90f67fc6c0 Delete type=3 #146
|
||||
2026/03/25-23:20:54.991298 7f90f67fc6c0 Delete type=0 #148
|
||||
2026/03/26-23:22:41.093289 7f90f67fc6c0 Recovering log #164
|
||||
2026/03/26-23:22:41.146507 7f90f67fc6c0 Delete type=3 #162
|
||||
2026/03/26-23:22:41.146560 7f90f67fc6c0 Delete type=0 #164
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/03/25-23:09:24.673117 7f90f7fff6c0 Recovering log #143
|
||||
2026/03/25-23:09:24.683104 7f90f7fff6c0 Delete type=3 #141
|
||||
2026/03/25-23:09:24.683202 7f90f7fff6c0 Delete type=0 #143
|
||||
2026/03/25-23:20:49.854866 7f90f5ffb6c0 Level-0 table #149: started
|
||||
2026/03/25-23:20:49.854893 7f90f5ffb6c0 Level-0 table #149: 0 bytes OK
|
||||
2026/03/25-23:20:49.861669 7f90f5ffb6c0 Delete type=0 #147
|
||||
2026/03/25-23:20:49.874373 7f90f5ffb6c0 Manual compaction at level-0 from '!journal!TniC3ok9W0hDYxJS' @ 72057594037927935 : 1 .. '!journal.pages!yZsG9QaBHT3cUfNd.AHcfBcO96nUCELxv' @ 0 : 0; will stop at (end)
|
||||
2026/03/25-23:20:49.874418 7f90f5ffb6c0 Manual compaction at level-1 from '!journal!TniC3ok9W0hDYxJS' @ 72057594037927935 : 1 .. '!journal.pages!yZsG9QaBHT3cUfNd.AHcfBcO96nUCELxv' @ 0 : 0; will stop at (end)
|
||||
2026/03/26-22:00:22.608830 7f90f67fc6c0 Recovering log #160
|
||||
2026/03/26-22:00:22.665730 7f90f67fc6c0 Delete type=3 #158
|
||||
2026/03/26-22:00:22.665947 7f90f67fc6c0 Delete type=0 #160
|
||||
2026/03/26-23:22:30.583548 7f90f5ffb6c0 Level-0 table #165: started
|
||||
2026/03/26-23:22:30.583573 7f90f5ffb6c0 Level-0 table #165: 0 bytes OK
|
||||
2026/03/26-23:22:30.620608 7f90f5ffb6c0 Delete type=0 #163
|
||||
2026/03/26-23:22:30.620784 7f90f5ffb6c0 Manual compaction at level-0 from '!journal!TniC3ok9W0hDYxJS' @ 72057594037927935 : 1 .. '!journal.pages!yZsG9QaBHT3cUfNd.AHcfBcO96nUCELxv' @ 0 : 0; will stop at (end)
|
||||
2026/03/26-23:22:30.620826 7f90f5ffb6c0 Manual compaction at level-1 from '!journal!TniC3ok9W0hDYxJS' @ 72057594037927935 : 1 .. '!journal.pages!yZsG9QaBHT3cUfNd.AHcfBcO96nUCELxv' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000722
|
||||
MANIFEST-000738
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
2026/03/25-23:20:54.966841 7f90f77fe6c0 Recovering log #720
|
||||
2026/03/25-23:20:54.977160 7f90f77fe6c0 Delete type=3 #718
|
||||
2026/03/25-23:20:54.977234 7f90f77fe6c0 Delete type=0 #720
|
||||
2026/03/26-23:22:41.037729 7f90f7fff6c0 Recovering log #736
|
||||
2026/03/26-23:22:41.091148 7f90f7fff6c0 Delete type=3 #734
|
||||
2026/03/26-23:22:41.091204 7f90f7fff6c0 Delete type=0 #736
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/03/25-23:09:24.659514 7f90f77fe6c0 Recovering log #716
|
||||
2026/03/25-23:09:24.669834 7f90f77fe6c0 Delete type=3 #714
|
||||
2026/03/25-23:09:24.669899 7f90f77fe6c0 Delete type=0 #716
|
||||
2026/03/25-23:20:49.868039 7f90f5ffb6c0 Level-0 table #721: started
|
||||
2026/03/25-23:20:49.868078 7f90f5ffb6c0 Level-0 table #721: 0 bytes OK
|
||||
2026/03/25-23:20:49.874183 7f90f5ffb6c0 Delete type=0 #719
|
||||
2026/03/25-23:20:49.874400 7f90f5ffb6c0 Manual compaction at level-0 from '!journal!f6UhPlIUh2O0F36q' @ 72057594037927935 : 1 .. '!journal.pages!f6UhPlIUh2O0F36q.keqszrb6FAI7CVZx' @ 0 : 0; will stop at (end)
|
||||
2026/03/25-23:20:49.881831 7f90f5ffb6c0 Manual compaction at level-1 from '!journal!f6UhPlIUh2O0F36q' @ 72057594037927935 : 1 .. '!journal.pages!f6UhPlIUh2O0F36q.keqszrb6FAI7CVZx' @ 0 : 0; will stop at (end)
|
||||
2026/03/26-22:00:22.529664 7f90f77fe6c0 Recovering log #732
|
||||
2026/03/26-22:00:22.584296 7f90f77fe6c0 Delete type=3 #730
|
||||
2026/03/26-22:00:22.584358 7f90f77fe6c0 Delete type=0 #732
|
||||
2026/03/26-23:22:30.358180 7f90f5ffb6c0 Level-0 table #737: started
|
||||
2026/03/26-23:22:30.358207 7f90f5ffb6c0 Level-0 table #737: 0 bytes OK
|
||||
2026/03/26-23:22:30.395875 7f90f5ffb6c0 Delete type=0 #735
|
||||
2026/03/26-23:22:30.471656 7f90f5ffb6c0 Manual compaction at level-0 from '!journal!f6UhPlIUh2O0F36q' @ 72057594037927935 : 1 .. '!journal.pages!f6UhPlIUh2O0F36q.keqszrb6FAI7CVZx' @ 0 : 0; will stop at (end)
|
||||
2026/03/26-23:22:30.471686 7f90f5ffb6c0 Manual compaction at level-1 from '!journal!f6UhPlIUh2O0F36q' @ 72057594037927935 : 1 .. '!journal.pages!f6UhPlIUh2O0F36q.keqszrb6FAI7CVZx' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-004343
|
||||
MANIFEST-004359
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
2026/03/25-23:20:54.941740 7f90f67fc6c0 Recovering log #4341
|
||||
2026/03/25-23:20:54.952935 7f90f67fc6c0 Delete type=3 #4339
|
||||
2026/03/25-23:20:54.952993 7f90f67fc6c0 Delete type=0 #4341
|
||||
2026/03/26-23:22:40.912790 7f90f67fc6c0 Recovering log #4357
|
||||
2026/03/26-23:22:40.970516 7f90f67fc6c0 Delete type=3 #4355
|
||||
2026/03/26-23:22:40.970566 7f90f67fc6c0 Delete type=0 #4357
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
2026/03/25-23:09:24.632404 7f90f7fff6c0 Recovering log #4337
|
||||
2026/03/25-23:09:24.642953 7f90f7fff6c0 Delete type=3 #4335
|
||||
2026/03/25-23:09:24.643019 7f90f7fff6c0 Delete type=0 #4337
|
||||
2026/03/25-23:20:49.861772 7f90f5ffb6c0 Level-0 table #4342: started
|
||||
2026/03/25-23:20:49.861806 7f90f5ffb6c0 Level-0 table #4342: 0 bytes OK
|
||||
2026/03/25-23:20:49.867856 7f90f5ffb6c0 Delete type=0 #4340
|
||||
2026/03/25-23:20:49.874387 7f90f5ffb6c0 Manual compaction at level-0 from '!journal!0lxwWrzKsdTBQhH0' @ 72057594037927935 : 1 .. '!journal.pages!wgSyae4GTJDkmBOm.6Ql0lgquUCTrMyTZ' @ 0 : 0; will stop at (end)
|
||||
2026/03/26-22:00:22.375122 7f90f67fc6c0 Recovering log #4353
|
||||
2026/03/26-22:00:22.431093 7f90f67fc6c0 Delete type=3 #4351
|
||||
2026/03/26-22:00:22.431156 7f90f67fc6c0 Delete type=0 #4353
|
||||
2026/03/26-23:22:30.322515 7f90f5ffb6c0 Level-0 table #4358: started
|
||||
2026/03/26-23:22:30.322564 7f90f5ffb6c0 Level-0 table #4358: 0 bytes OK
|
||||
2026/03/26-23:22:30.358054 7f90f5ffb6c0 Delete type=0 #4356
|
||||
2026/03/26-23:22:30.471641 7f90f5ffb6c0 Manual compaction at level-0 from '!journal!0lxwWrzKsdTBQhH0' @ 72057594037927935 : 1 .. '!journal.pages!wgSyae4GTJDkmBOm.6Ql0lgquUCTrMyTZ' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000063
|
||||
MANIFEST-000079
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
2026/03/25-23:20:55.028995 7f90f6ffd6c0 Recovering log #61
|
||||
2026/03/25-23:20:55.038606 7f90f6ffd6c0 Delete type=3 #59
|
||||
2026/03/25-23:20:55.038658 7f90f6ffd6c0 Delete type=0 #61
|
||||
2026/03/26-23:22:41.320339 7f90f6ffd6c0 Recovering log #77
|
||||
2026/03/26-23:22:41.378833 7f90f6ffd6c0 Delete type=3 #75
|
||||
2026/03/26-23:22:41.378896 7f90f6ffd6c0 Delete type=0 #77
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/03/25-23:09:24.728225 7f90f7fff6c0 Recovering log #56
|
||||
2026/03/25-23:09:24.738919 7f90f7fff6c0 Delete type=3 #54
|
||||
2026/03/25-23:09:24.738983 7f90f7fff6c0 Delete type=0 #56
|
||||
2026/03/25-23:20:49.894409 7f90f5ffb6c0 Level-0 table #62: started
|
||||
2026/03/25-23:20:49.894444 7f90f5ffb6c0 Level-0 table #62: 0 bytes OK
|
||||
2026/03/25-23:20:49.900567 7f90f5ffb6c0 Delete type=0 #60
|
||||
2026/03/25-23:20:49.907833 7f90f5ffb6c0 Manual compaction at level-0 from '!tables!J9VdvrwkbyKxMAT7' @ 72057594037927935 : 1 .. '!tables.results!jGKjfCyk4ROSy9fU.zRzADzATtijaBdNX' @ 0 : 0; will stop at (end)
|
||||
2026/03/25-23:20:49.907898 7f90f5ffb6c0 Manual compaction at level-1 from '!tables!J9VdvrwkbyKxMAT7' @ 72057594037927935 : 1 .. '!tables.results!jGKjfCyk4ROSy9fU.zRzADzATtijaBdNX' @ 0 : 0; will stop at (end)
|
||||
2026/03/26-22:00:22.875118 7f90f77fe6c0 Recovering log #73
|
||||
2026/03/26-22:00:22.937050 7f90f77fe6c0 Delete type=3 #71
|
||||
2026/03/26-22:00:22.937152 7f90f77fe6c0 Delete type=0 #73
|
||||
2026/03/26-23:22:30.545930 7f90f5ffb6c0 Level-0 table #78: started
|
||||
2026/03/26-23:22:30.545959 7f90f5ffb6c0 Level-0 table #78: 0 bytes OK
|
||||
2026/03/26-23:22:30.583434 7f90f5ffb6c0 Delete type=0 #76
|
||||
2026/03/26-23:22:30.620775 7f90f5ffb6c0 Manual compaction at level-0 from '!tables!J9VdvrwkbyKxMAT7' @ 72057594037927935 : 1 .. '!tables.results!jGKjfCyk4ROSy9fU.zRzADzATtijaBdNX' @ 0 : 0; will stop at (end)
|
||||
2026/03/26-23:22:30.620818 7f90f5ffb6c0 Manual compaction at level-1 from '!tables!J9VdvrwkbyKxMAT7' @ 72057594037927935 : 1 .. '!tables.results!jGKjfCyk4ROSy9fU.zRzADzATtijaBdNX' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000044
|
||||
MANIFEST-000060
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
2026/03/25-23:20:55.016989 7f90f7fff6c0 Recovering log #42
|
||||
2026/03/25-23:20:55.027035 7f90f7fff6c0 Delete type=3 #40
|
||||
2026/03/25-23:20:55.027104 7f90f7fff6c0 Delete type=0 #42
|
||||
2026/03/26-23:22:41.264104 7f90f77fe6c0 Recovering log #58
|
||||
2026/03/26-23:22:41.318473 7f90f77fe6c0 Delete type=3 #56
|
||||
2026/03/26-23:22:41.318542 7f90f77fe6c0 Delete type=0 #58
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/03/25-23:09:24.715707 7f90f67fc6c0 Recovering log #37
|
||||
2026/03/25-23:09:24.725437 7f90f67fc6c0 Delete type=3 #35
|
||||
2026/03/25-23:09:24.725504 7f90f67fc6c0 Delete type=0 #37
|
||||
2026/03/25-23:20:49.888146 7f90f5ffb6c0 Level-0 table #43: started
|
||||
2026/03/25-23:20:49.888170 7f90f5ffb6c0 Level-0 table #43: 0 bytes OK
|
||||
2026/03/25-23:20:49.894221 7f90f5ffb6c0 Delete type=0 #41
|
||||
2026/03/25-23:20:49.900722 7f90f5ffb6c0 Manual compaction at level-0 from '!macros!apyHJT40enTKFUfX' @ 72057594037927935 : 1 .. '!macros!suexsLbORUfE9ptz' @ 0 : 0; will stop at (end)
|
||||
2026/03/25-23:20:49.907877 7f90f5ffb6c0 Manual compaction at level-1 from '!macros!apyHJT40enTKFUfX' @ 72057594037927935 : 1 .. '!macros!suexsLbORUfE9ptz' @ 0 : 0; will stop at (end)
|
||||
2026/03/26-22:00:22.812984 7f90f7fff6c0 Recovering log #54
|
||||
2026/03/26-22:00:22.870518 7f90f7fff6c0 Delete type=3 #52
|
||||
2026/03/26-22:00:22.870588 7f90f7fff6c0 Delete type=0 #54
|
||||
2026/03/26-23:22:30.508599 7f90f5ffb6c0 Level-0 table #59: started
|
||||
2026/03/26-23:22:30.508625 7f90f5ffb6c0 Level-0 table #59: 0 bytes OK
|
||||
2026/03/26-23:22:30.545804 7f90f5ffb6c0 Delete type=0 #57
|
||||
2026/03/26-23:22:30.620763 7f90f5ffb6c0 Manual compaction at level-0 from '!macros!apyHJT40enTKFUfX' @ 72057594037927935 : 1 .. '!macros!suexsLbORUfE9ptz' @ 0 : 0; will stop at (end)
|
||||
2026/03/26-23:22:30.620799 7f90f5ffb6c0 Manual compaction at level-1 from '!macros!apyHJT40enTKFUfX' @ 72057594037927935 : 1 .. '!macros!suexsLbORUfE9ptz' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000222
|
||||
MANIFEST-000238
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
2026/03/25-23:20:55.005125 7f90f77fe6c0 Recovering log #220
|
||||
2026/03/25-23:20:55.015600 7f90f77fe6c0 Delete type=3 #218
|
||||
2026/03/25-23:20:55.015651 7f90f77fe6c0 Delete type=0 #220
|
||||
2026/03/26-23:22:41.206104 7f90f6ffd6c0 Recovering log #236
|
||||
2026/03/26-23:22:41.262267 7f90f6ffd6c0 Delete type=3 #234
|
||||
2026/03/26-23:22:41.262335 7f90f6ffd6c0 Delete type=0 #236
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/03/25-23:09:24.701586 7f90f6ffd6c0 Recovering log #216
|
||||
2026/03/25-23:09:24.712861 7f90f6ffd6c0 Delete type=3 #214
|
||||
2026/03/25-23:09:24.712933 7f90f6ffd6c0 Delete type=0 #216
|
||||
2026/03/25-23:20:49.881844 7f90f5ffb6c0 Level-0 table #221: started
|
||||
2026/03/25-23:20:49.881867 7f90f5ffb6c0 Level-0 table #221: 0 bytes OK
|
||||
2026/03/25-23:20:49.888032 7f90f5ffb6c0 Delete type=0 #219
|
||||
2026/03/25-23:20:49.900708 7f90f5ffb6c0 Manual compaction at level-0 from '!macros!Admg6zBHid4mfbJY' @ 72057594037927935 : 1 .. '!macros!wY3tga12higX7soz' @ 0 : 0; will stop at (end)
|
||||
2026/03/25-23:20:49.907859 7f90f5ffb6c0 Manual compaction at level-1 from '!macros!Admg6zBHid4mfbJY' @ 72057594037927935 : 1 .. '!macros!wY3tga12higX7soz' @ 0 : 0; will stop at (end)
|
||||
2026/03/26-22:00:22.749196 7f90f6ffd6c0 Recovering log #232
|
||||
2026/03/26-22:00:22.804213 7f90f6ffd6c0 Delete type=3 #230
|
||||
2026/03/26-22:00:22.804283 7f90f6ffd6c0 Delete type=0 #232
|
||||
2026/03/26-23:22:30.471790 7f90f5ffb6c0 Level-0 table #237: started
|
||||
2026/03/26-23:22:30.471814 7f90f5ffb6c0 Level-0 table #237: 0 bytes OK
|
||||
2026/03/26-23:22:30.508477 7f90f5ffb6c0 Delete type=0 #235
|
||||
2026/03/26-23:22:30.620742 7f90f5ffb6c0 Manual compaction at level-0 from '!macros!Admg6zBHid4mfbJY' @ 72057594037927935 : 1 .. '!macros!wY3tga12higX7soz' @ 0 : 0; will stop at (end)
|
||||
2026/03/26-23:22:30.620792 7f90f5ffb6c0 Manual compaction at level-1 from '!macros!Admg6zBHid4mfbJY' @ 72057594037927935 : 1 .. '!macros!wY3tga12higX7soz' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000964
|
||||
MANIFEST-000980
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
2026/03/25-23:20:54.955460 7f90f6ffd6c0 Recovering log #962
|
||||
2026/03/25-23:20:54.965054 7f90f6ffd6c0 Delete type=3 #960
|
||||
2026/03/25-23:20:54.965130 7f90f6ffd6c0 Delete type=0 #962
|
||||
2026/03/26-23:22:40.972919 7f90f77fe6c0 Recovering log #978
|
||||
2026/03/26-23:22:41.035302 7f90f77fe6c0 Delete type=3 #976
|
||||
2026/03/26-23:22:41.035379 7f90f77fe6c0 Delete type=0 #978
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
2026/03/25-23:09:24.646478 7f90f67fc6c0 Recovering log #957
|
||||
2026/03/25-23:09:24.656447 7f90f67fc6c0 Delete type=3 #955
|
||||
2026/03/25-23:09:24.656519 7f90f67fc6c0 Delete type=0 #957
|
||||
2026/03/25-23:20:49.848491 7f90f5ffb6c0 Level-0 table #963: started
|
||||
2026/03/25-23:20:49.848532 7f90f5ffb6c0 Level-0 table #963: 0 bytes OK
|
||||
2026/03/25-23:20:49.854765 7f90f5ffb6c0 Delete type=0 #961
|
||||
2026/03/25-23:20:49.874351 7f90f5ffb6c0 Manual compaction at level-0 from '!journal!OgzOugwIXfHtijaY' @ 72057594037927935 : 1 .. '!journal.pages!OgzOugwIXfHtijaY.OOev7kj2KoMOGoMD' @ 0 : 0; will stop at (end)
|
||||
2026/03/25-23:20:49.874410 7f90f5ffb6c0 Manual compaction at level-1 from '!journal!OgzOugwIXfHtijaY' @ 72057594037927935 : 1 .. '!journal.pages!OgzOugwIXfHtijaY.OOev7kj2KoMOGoMD' @ 0 : 0; will stop at (end)
|
||||
2026/03/26-22:00:22.455743 7f90f6ffd6c0 Recovering log #974
|
||||
2026/03/26-22:00:22.523057 7f90f6ffd6c0 Delete type=3 #972
|
||||
2026/03/26-22:00:22.523122 7f90f6ffd6c0 Delete type=0 #974
|
||||
2026/03/26-23:22:30.395975 7f90f5ffb6c0 Level-0 table #979: started
|
||||
2026/03/26-23:22:30.395996 7f90f5ffb6c0 Level-0 table #979: 0 bytes OK
|
||||
2026/03/26-23:22:30.433284 7f90f5ffb6c0 Delete type=0 #977
|
||||
2026/03/26-23:22:30.471668 7f90f5ffb6c0 Manual compaction at level-0 from '!journal!OgzOugwIXfHtijaY' @ 72057594037927935 : 1 .. '!journal.pages!OgzOugwIXfHtijaY.OOev7kj2KoMOGoMD' @ 0 : 0; will stop at (end)
|
||||
2026/03/26-23:22:30.471709 7f90f5ffb6c0 Manual compaction at level-1 from '!journal!OgzOugwIXfHtijaY' @ 72057594037927935 : 1 .. '!journal.pages!OgzOugwIXfHtijaY.OOev7kj2KoMOGoMD' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
@@ -12,6 +12,10 @@ export const ITEM_TYPES = {
|
||||
kungfu: "kungfu",
|
||||
spell: "spell",
|
||||
supernatural: "supernatural",
|
||||
weapon: "weapon",
|
||||
armor: "armor",
|
||||
sanhei: "sanhei",
|
||||
ingredient: "ingredient",
|
||||
}
|
||||
|
||||
export const SUBTYPES = {
|
||||
|
||||
@@ -86,7 +86,7 @@ export default class CharacterDataModel extends foundry.abstract.TypeDataModel {
|
||||
|
||||
const schema = {
|
||||
concept: stringField(""),
|
||||
guardian: stringField("0"),
|
||||
guardian: numberField(0, { min: 0, max: 5 }),
|
||||
initiative: numberField(1, { min: 0 }),
|
||||
anti_initiative: numberField(24, { min: 0 }),
|
||||
description: htmlField(""),
|
||||
@@ -158,8 +158,8 @@ export default class CharacterDataModel extends foundry.abstract.TypeDataModel {
|
||||
geomancy: magicField(),
|
||||
}),
|
||||
threetreasures: new fields.SchemaField({
|
||||
heiyang: new fields.SchemaField({ value: numberField(0, { min: 0 }) }),
|
||||
heiyin: new fields.SchemaField({ value: numberField(0, { min: 0 }) }),
|
||||
heiyang: new fields.SchemaField({ value: numberField(0, { min: 0 }), max: numberField(0, { min: 0 }) }),
|
||||
heiyin: new fields.SchemaField({ value: numberField(0, { min: 0 }), max: numberField(0, { min: 0 }) }),
|
||||
dicelevel: new fields.SchemaField({
|
||||
level0d: treasureLevel(),
|
||||
level1d: treasureLevel(),
|
||||
|
||||
@@ -21,8 +21,8 @@ export default class NpcDataModel extends foundry.abstract.TypeDataModel {
|
||||
|
||||
return {
|
||||
type: stringField(""),
|
||||
levelofthreat: numberField(0, { min: 0 }),
|
||||
powerofnuisance: numberField(0, { min: 0 }),
|
||||
threat: numberField(0, { min: 0, max: 4 }), // profane(0) | apprentice(1) | initiate(2) | accomplished(3) | renowned(4)
|
||||
nuisance: numberField(0, { min: 0, max: 5 }), // figurant(0) | minion(1) | adversary(2) | ally(3) | boss(4) | divinity(5)
|
||||
initiative: numberField(1, { min: 0 }),
|
||||
anti_initiative: numberField(24, { min: 0 }),
|
||||
aptitudes: new fields.SchemaField({
|
||||
|
||||
19
src/data/items/armor.js
Normal file
19
src/data/items/armor.js
Normal file
@@ -0,0 +1,19 @@
|
||||
export default class ArmorDataModel extends foundry.abstract.TypeDataModel {
|
||||
static defineSchema() {
|
||||
const { fields } = foundry.data
|
||||
const stringField = (initial = "") => new fields.StringField({ required: true, nullable: false, initial })
|
||||
const htmlField = (initial = "") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true })
|
||||
const intField = (initial = 0, opts = {}) => new fields.NumberField({ required: true, nullable: false, integer: true, initial, ...opts })
|
||||
|
||||
return {
|
||||
reference: stringField(""),
|
||||
description: htmlField(""),
|
||||
protectionValue: intField(0),
|
||||
domain: stringField(""),
|
||||
obtainLevel: intField(0, { min: 0, max: 5 }),
|
||||
obtainDifficulty: intField(0, { min: 0, max: 3 }),
|
||||
quantity: intField(1),
|
||||
notes: htmlField(""),
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,3 +2,7 @@ export { default as EquipmentDataModel } from "./item.js"
|
||||
export { default as KungfuDataModel } from "./kungfu.js"
|
||||
export { default as SpellDataModel } from "./spell.js"
|
||||
export { default as SupernaturalDataModel } from "./supernatural.js"
|
||||
export { default as WeaponDataModel } from "./weapon.js"
|
||||
export { default as ArmorDataModel } from "./armor.js"
|
||||
export { default as SanheiDataModel } from "./sanhei.js"
|
||||
export { default as IngredientDataModel } from "./ingredient.js"
|
||||
|
||||
18
src/data/items/ingredient.js
Normal file
18
src/data/items/ingredient.js
Normal file
@@ -0,0 +1,18 @@
|
||||
export default class IngredientDataModel extends foundry.abstract.TypeDataModel {
|
||||
static defineSchema() {
|
||||
const { fields } = foundry.data
|
||||
const stringField = (initial = "") => new fields.StringField({ required: true, nullable: false, initial })
|
||||
const htmlField = (initial = "") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true })
|
||||
const intField = (initial = 0, opts = {}) => new fields.NumberField({ required: true, nullable: false, integer: true, initial, ...opts })
|
||||
|
||||
return {
|
||||
reference: stringField(""),
|
||||
description: htmlField(""),
|
||||
school: stringField("all"),
|
||||
obtainLevel: intField(0, { min: 0, max: 5 }),
|
||||
obtainDifficulty: intField(0, { min: 0, max: 3 }),
|
||||
quantity: intField(1),
|
||||
notes: htmlField(""),
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6,14 +6,10 @@ export default class EquipmentDataModel extends foundry.abstract.TypeDataModel {
|
||||
const htmlField = (initial = "") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true })
|
||||
|
||||
return {
|
||||
subtype: stringField(""),
|
||||
reference: stringField(""),
|
||||
description: htmlField(""),
|
||||
quantity: numberField(1, { min: 0 }),
|
||||
weight: numberField(0, { min: 0 }),
|
||||
protection: stringField(""),
|
||||
damage: stringField(""),
|
||||
range: stringField(""),
|
||||
notes: htmlField(""),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,16 +9,16 @@ export default class KungfuDataModel extends foundry.abstract.TypeDataModel {
|
||||
new fields.SchemaField({
|
||||
check: boolField(false),
|
||||
name: stringField(""),
|
||||
activation: stringField(""),
|
||||
activation: stringField("action-attack"), // action-attack | action-defense | action-aid | action-attack-defense | reaction | dice | damage-inflicted | damage-received
|
||||
technique: htmlField(""),
|
||||
})
|
||||
|
||||
return {
|
||||
reference: stringField(""),
|
||||
description: htmlField(""),
|
||||
orientation: stringField(""),
|
||||
aspect: stringField(""),
|
||||
skill: stringField(""),
|
||||
orientation: stringField("yin"), // yin | yang | yinyang
|
||||
aspect: stringField("metal"), // metal | eau | terre | feu | bois
|
||||
skill: stringField("kungfu"), // kungfu | rangedcombat
|
||||
speciality: stringField(""),
|
||||
style: stringField(""),
|
||||
techniques: new fields.SchemaField({
|
||||
|
||||
27
src/data/items/sanhei.js
Normal file
27
src/data/items/sanhei.js
Normal file
@@ -0,0 +1,27 @@
|
||||
export default class SanheiDataModel extends foundry.abstract.TypeDataModel {
|
||||
static defineSchema() {
|
||||
const { fields } = foundry.data
|
||||
const stringField = (initial = "") => new fields.StringField({ required: true, nullable: false, initial })
|
||||
const htmlField = (initial = "") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true })
|
||||
const intField = (initial = 0, opts = {}) => new fields.NumberField({ required: true, nullable: false, integer: true, initial, ...opts })
|
||||
|
||||
const propertySchema = () => new fields.SchemaField({
|
||||
name: stringField(""),
|
||||
heiCost: intField(0),
|
||||
heiType: stringField("yin"),
|
||||
description: htmlField(""),
|
||||
})
|
||||
|
||||
return {
|
||||
reference: stringField(""),
|
||||
description: htmlField(""),
|
||||
heiType: stringField("yin"),
|
||||
properties: new fields.SchemaField({
|
||||
prop1: propertySchema(),
|
||||
prop2: propertySchema(),
|
||||
prop3: propertySchema(),
|
||||
}),
|
||||
notes: htmlField(""),
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,7 @@ export default class SpellDataModel extends foundry.abstract.TypeDataModel {
|
||||
reference: stringField(""),
|
||||
description: htmlField(""),
|
||||
specialityname: stringField(""),
|
||||
associatedelement: stringField(""),
|
||||
associatedelement: stringField("metal"), // metal | eau | terre | feu | bois
|
||||
hei: stringField(""),
|
||||
realizationtimeritual: stringField(""),
|
||||
realizationtimeaccelerated: stringField(""),
|
||||
@@ -17,6 +17,10 @@ export default class SpellDataModel extends foundry.abstract.TypeDataModel {
|
||||
effects: htmlField(""),
|
||||
examples: htmlField(""),
|
||||
notes: htmlField(""),
|
||||
discipline: stringField("cinabre"),
|
||||
heiType: stringField("yin"),
|
||||
heiCost: new fields.NumberField({ required: true, nullable: false, integer: true, min: 0, initial: 1 }),
|
||||
difficulty: new fields.NumberField({ required: true, nullable: false, integer: true, min: 0, initial: 1 }),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,10 @@ export default class SupernaturalDataModel extends foundry.abstract.TypeDataMode
|
||||
reference: stringField(""),
|
||||
description: htmlField(""),
|
||||
notes: htmlField(""),
|
||||
heiType: stringField("yin"),
|
||||
heiCost: new fields.NumberField({ required: true, nullable: false, integer: true, min: 0, initial: 0 }),
|
||||
trigger: stringField(""),
|
||||
effects: htmlField(""),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
22
src/data/items/weapon.js
Normal file
22
src/data/items/weapon.js
Normal file
@@ -0,0 +1,22 @@
|
||||
export default class WeaponDataModel extends foundry.abstract.TypeDataModel {
|
||||
static defineSchema() {
|
||||
const { fields } = foundry.data
|
||||
const stringField = (initial = "") => new fields.StringField({ required: true, nullable: false, initial })
|
||||
const htmlField = (initial = "") => new fields.HTMLField({ required: true, nullable: false, initial, textSearch: true })
|
||||
const intField = (initial = 0, opts = {}) => new fields.NumberField({ required: true, nullable: false, integer: true, initial, ...opts })
|
||||
|
||||
return {
|
||||
reference: stringField(""),
|
||||
description: htmlField(""),
|
||||
weaponType: stringField("melee"),
|
||||
material: stringField(""),
|
||||
damageAspect: stringField("metal"),
|
||||
damageBase: intField(1),
|
||||
range: stringField("contact"), // contact | courte | mediane | longue | extreme
|
||||
obtainLevel: intField(0, { min: 0, max: 5 }),
|
||||
obtainDifficulty: intField(0, { min: 0, max: 3 }),
|
||||
quantity: intField(1),
|
||||
notes: htmlField(""),
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -15,7 +15,7 @@ export function registerSettings() {
|
||||
export async function migrateIfNeeded() {
|
||||
const current = game.system.version ?? MIGRATION_VERSION
|
||||
const stored = game.settings.get(SYSTEM_ID, "migrationVersion") ?? "0.0.0"
|
||||
if (!isNewerVersion(current, stored)) return
|
||||
if (!foundry.utils.isNewerVersion(current, stored)) return
|
||||
|
||||
ui.notifications.info(`CHRONIQUESDELETRANGE | Migration vers ${current} en cours...`, { permanent: true })
|
||||
await migrateActors()
|
||||
@@ -92,6 +92,26 @@ function migrateActorData(actor) {
|
||||
updateData["system.prefs.typeofthrow"] = { check: defaultCheck, choice: "0" }
|
||||
}
|
||||
|
||||
// Migrate NPC field renames: levelofthreat → threat, powerofnuisance → nuisance
|
||||
if (actorType === "npc") {
|
||||
if (system.levelofthreat !== undefined && system.threat === undefined) {
|
||||
updateData["system.threat"] = system.levelofthreat
|
||||
updateData["system.-=levelofthreat"] = null
|
||||
}
|
||||
if (system.powerofnuisance !== undefined && system.nuisance === undefined) {
|
||||
updateData["system.nuisance"] = system.powerofnuisance
|
||||
updateData["system.-=powerofnuisance"] = null
|
||||
}
|
||||
}
|
||||
|
||||
// Migrate character guardian from string to number
|
||||
if (actorType === "character" && typeof system.guardian === "string") {
|
||||
const guardianNum = parseInt(system.guardian, 10)
|
||||
if (!isNaN(guardianNum)) {
|
||||
updateData["system.guardian"] = guardianNum
|
||||
}
|
||||
}
|
||||
|
||||
return updateData
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ import { ACTOR_TYPES, ITEM_TYPES, MAGICS, SUBTYPES, SYSTEM_ID } from "./config/c
|
||||
import { preLocalizeConfig } from "./config/localize.js"
|
||||
import { configureRuntime } from "./config/runtime.js"
|
||||
import { CharacterDataModel, LoksyuDataModel, NpcDataModel, TinjiDataModel } from "./data/actors/index.js"
|
||||
import { EquipmentDataModel, KungfuDataModel, SpellDataModel, SupernaturalDataModel } from "./data/items/index.js"
|
||||
import { EquipmentDataModel, KungfuDataModel, SpellDataModel, SupernaturalDataModel, WeaponDataModel, ArmorDataModel, SanheiDataModel, IngredientDataModel } from "./data/items/index.js"
|
||||
import { CDEMessage } from "./documents/chat-message.js"
|
||||
import { CDEActor } from "./documents/actor.js"
|
||||
import { CDEItem } from "./documents/item.js"
|
||||
@@ -10,7 +10,7 @@ import { registerDice } from "./ui/dice.js"
|
||||
import { registerHandlebarsHelpers } from "./ui/helpers.js"
|
||||
import { preloadPartials } from "./ui/templates.js"
|
||||
import { CDELoksyuSheet, CDECharacterSheet, CDENpcSheet, CDETinjiSheet } from "./ui/sheets/actors/index.js"
|
||||
import { CDEItemSheet, CDEKungfuSheet, CDESpellSheet, CDESupernaturalSheet } from "./ui/sheets/items/index.js"
|
||||
import { CDEItemSheet, CDEKungfuSheet, CDESpellSheet, CDESupernaturalSheet, CDEWeaponSheet, CDEArmorSheet, CDESanheiSheet, CDEIngredientSheet } from "./ui/sheets/items/index.js"
|
||||
import { migrateIfNeeded, registerSettings } from "./migration.js"
|
||||
|
||||
Hooks.once("i18nInit", preLocalizeConfig)
|
||||
@@ -22,17 +22,21 @@ Hooks.once("init", async () => {
|
||||
|
||||
game.system.CONST = { MAGICS, SUBTYPES }
|
||||
|
||||
CONFIG.Actor.systemDataModels = {
|
||||
CONFIG.Actor.dataModels = {
|
||||
[ACTOR_TYPES.character]: CharacterDataModel,
|
||||
[ACTOR_TYPES.npc]: NpcDataModel,
|
||||
[ACTOR_TYPES.tinji]: TinjiDataModel,
|
||||
[ACTOR_TYPES.loksyu]: LoksyuDataModel,
|
||||
}
|
||||
CONFIG.Item.systemDataModels = {
|
||||
CONFIG.Item.dataModels = {
|
||||
[ITEM_TYPES.item]: EquipmentDataModel,
|
||||
[ITEM_TYPES.kungfu]: KungfuDataModel,
|
||||
[ITEM_TYPES.spell]: SpellDataModel,
|
||||
[ITEM_TYPES.supernatural]: SupernaturalDataModel,
|
||||
[ITEM_TYPES.weapon]: WeaponDataModel,
|
||||
[ITEM_TYPES.armor]: ArmorDataModel,
|
||||
[ITEM_TYPES.sanhei]: SanheiDataModel,
|
||||
[ITEM_TYPES.ingredient]: IngredientDataModel,
|
||||
}
|
||||
|
||||
CONFIG.Actor.documentClass = CDEActor
|
||||
@@ -41,50 +45,70 @@ Hooks.once("init", async () => {
|
||||
|
||||
configureRuntime()
|
||||
|
||||
DocumentSheetConfig.unregisterSheet(Actor, "core", ActorSheet)
|
||||
DocumentSheetConfig.unregisterSheet(Item, "core", ItemSheet)
|
||||
foundry.applications.apps.DocumentSheetConfig.unregisterSheet(Actor, "core", ActorSheet)
|
||||
foundry.applications.apps.DocumentSheetConfig.unregisterSheet(Item, "core", ItemSheet)
|
||||
|
||||
DocumentSheetConfig.registerSheet(Actor, SYSTEM_ID, CDECharacterSheet, {
|
||||
foundry.applications.apps.DocumentSheetConfig.registerSheet(Actor, SYSTEM_ID, CDECharacterSheet, {
|
||||
types: [ACTOR_TYPES.character],
|
||||
makeDefault: true,
|
||||
label: "CDE Character Sheet (V2)",
|
||||
})
|
||||
DocumentSheetConfig.registerSheet(Actor, SYSTEM_ID, CDENpcSheet, {
|
||||
foundry.applications.apps.DocumentSheetConfig.registerSheet(Actor, SYSTEM_ID, CDENpcSheet, {
|
||||
types: [ACTOR_TYPES.npc],
|
||||
makeDefault: true,
|
||||
label: "CDE NPC Sheet (V2)",
|
||||
})
|
||||
DocumentSheetConfig.registerSheet(Actor, SYSTEM_ID, CDETinjiSheet, {
|
||||
foundry.applications.apps.DocumentSheetConfig.registerSheet(Actor, SYSTEM_ID, CDETinjiSheet, {
|
||||
types: [ACTOR_TYPES.tinji],
|
||||
makeDefault: true,
|
||||
label: "CDE Tinji Sheet (V2)",
|
||||
})
|
||||
DocumentSheetConfig.registerSheet(Actor, SYSTEM_ID, CDELoksyuSheet, {
|
||||
foundry.applications.apps.DocumentSheetConfig.registerSheet(Actor, SYSTEM_ID, CDELoksyuSheet, {
|
||||
types: [ACTOR_TYPES.loksyu],
|
||||
makeDefault: true,
|
||||
label: "CDE Loksyu Sheet (V2)",
|
||||
})
|
||||
|
||||
DocumentSheetConfig.registerSheet(Item, SYSTEM_ID, CDEItemSheet, {
|
||||
foundry.applications.apps.DocumentSheetConfig.registerSheet(Item, SYSTEM_ID, CDEItemSheet, {
|
||||
types: [ITEM_TYPES.item],
|
||||
makeDefault: true,
|
||||
label: "CDE Item Sheet (V2)",
|
||||
})
|
||||
DocumentSheetConfig.registerSheet(Item, SYSTEM_ID, CDEKungfuSheet, {
|
||||
foundry.applications.apps.DocumentSheetConfig.registerSheet(Item, SYSTEM_ID, CDEKungfuSheet, {
|
||||
types: [ITEM_TYPES.kungfu],
|
||||
makeDefault: true,
|
||||
label: "CDE KungFu Sheet (V2)",
|
||||
})
|
||||
DocumentSheetConfig.registerSheet(Item, SYSTEM_ID, CDESpellSheet, {
|
||||
foundry.applications.apps.DocumentSheetConfig.registerSheet(Item, SYSTEM_ID, CDESpellSheet, {
|
||||
types: [ITEM_TYPES.spell],
|
||||
makeDefault: true,
|
||||
label: "CDE Spell Sheet (V2)",
|
||||
})
|
||||
DocumentSheetConfig.registerSheet(Item, SYSTEM_ID, CDESupernaturalSheet, {
|
||||
foundry.applications.apps.DocumentSheetConfig.registerSheet(Item, SYSTEM_ID, CDESupernaturalSheet, {
|
||||
types: [ITEM_TYPES.supernatural],
|
||||
makeDefault: true,
|
||||
label: "CDE Supernatural Sheet (V2)",
|
||||
})
|
||||
foundry.applications.apps.DocumentSheetConfig.registerSheet(Item, SYSTEM_ID, CDEWeaponSheet, {
|
||||
types: [ITEM_TYPES.weapon],
|
||||
makeDefault: true,
|
||||
label: "CDE Weapon Sheet (V2)",
|
||||
})
|
||||
foundry.applications.apps.DocumentSheetConfig.registerSheet(Item, SYSTEM_ID, CDEArmorSheet, {
|
||||
types: [ITEM_TYPES.armor],
|
||||
makeDefault: true,
|
||||
label: "CDE Armor Sheet (V2)",
|
||||
})
|
||||
foundry.applications.apps.DocumentSheetConfig.registerSheet(Item, SYSTEM_ID, CDESanheiSheet, {
|
||||
types: [ITEM_TYPES.sanhei],
|
||||
makeDefault: true,
|
||||
label: "CDE Sanhei Sheet (V2)",
|
||||
})
|
||||
foundry.applications.apps.DocumentSheetConfig.registerSheet(Item, SYSTEM_ID, CDEIngredientSheet, {
|
||||
types: [ITEM_TYPES.ingredient],
|
||||
makeDefault: true,
|
||||
label: "CDE Ingredient Sheet (V2)",
|
||||
})
|
||||
|
||||
await preloadPartials()
|
||||
registerHandlebarsHelpers()
|
||||
|
||||
173
src/ui/initiative.js
Normal file
173
src/ui/initiative.js
Normal file
@@ -0,0 +1,173 @@
|
||||
/**
|
||||
* Initiative determination system for Chroniques de l'Étrange.
|
||||
*
|
||||
* PJ formula: Initiative = Prouesse + Première action (compétence/ressource/magie)
|
||||
* PNJ formula: Initiative = Aptitude physique + Première action (aptitude)
|
||||
*
|
||||
* Range 1-24 ; anti-initiative = 25 − initiative.
|
||||
* Combat order is ascending (low initiative acts first).
|
||||
*/
|
||||
|
||||
const PC_PROMPT_TEMPLATE = "systems/fvtt-chroniques-de-l-etrange/templates/form/cde-initiative-prompt.html"
|
||||
const NPC_PROMPT_TEMPLATE = "systems/fvtt-chroniques-de-l-etrange/templates/form/cde-initiative-prompt-npc.html"
|
||||
const RESULT_TEMPLATE = "systems/fvtt-chroniques-de-l-etrange/templates/form/cde-initiative-result.html"
|
||||
|
||||
/** Skills, resources and magics available as "première action" for a PC. */
|
||||
function buildPCOptions(sys) {
|
||||
const sk = sys.skills ?? {}
|
||||
const rs = sys.resources ?? {}
|
||||
const mg = sys.magics ?? {}
|
||||
return [
|
||||
{ key: "art", label: game.i18n.localize("CDE.Art"), value: sk.art?.value ?? 0 },
|
||||
{ key: "investigation", label: game.i18n.localize("CDE.Investigation"), value: sk.investigation?.value ?? 0 },
|
||||
{ key: "erudition", label: game.i18n.localize("CDE.Erudition"), value: sk.erudition?.value ?? 0 },
|
||||
{ key: "knavery", label: game.i18n.localize("CDE.Knavery"), value: sk.knavery?.value ?? 0 },
|
||||
{ key: "wordliness", label: game.i18n.localize("CDE.Wordliness"), value: sk.wordliness?.value ?? 0 },
|
||||
{ key: "prowess", label: game.i18n.localize("CDE.Prowess"), value: sk.prowess?.value ?? 0 },
|
||||
{ key: "sciences", label: game.i18n.localize("CDE.Sciences"), value: sk.sciences?.value ?? 0 },
|
||||
{ key: "technologies", label: game.i18n.localize("CDE.Technologies"), value: sk.technologies?.value ?? 0 },
|
||||
{ key: "kungfu", label: game.i18n.localize("CDE.KungFu"), value: sk.kungfu?.value ?? 0 },
|
||||
{ key: "rangedcombat", label: game.i18n.localize("CDE.RangedCombat"), value: sk.rangedcombat?.value ?? 0 },
|
||||
{ key: "supply", label: game.i18n.localize("CDE.Supply"), value: rs.supply?.value ?? 0 },
|
||||
{ key: "inquiry", label: game.i18n.localize("CDE.Inquiry"), value: rs.inquiry?.value ?? 0 },
|
||||
{ key: "influence", label: game.i18n.localize("CDE.Influence"), value: rs.influence?.value ?? 0 },
|
||||
{ key: "internalcinnabar", label: game.i18n.localize("CDE.InternalCinnabar"), value: mg.internalcinnabar?.value ?? 0 },
|
||||
{ key: "alchemy", label: game.i18n.localize("CDE.Alchemy"), value: mg.alchemy?.value ?? 0 },
|
||||
{ key: "masteryoftheway", label: game.i18n.localize("CDE.MasteryOfTheWay"), value: mg.masteryoftheway?.value ?? 0 },
|
||||
{ key: "exorcism", label: game.i18n.localize("CDE.Exorcism"), value: mg.exorcism?.value ?? 0 },
|
||||
{ key: "geomancy", label: game.i18n.localize("CDE.Geomancy"), value: mg.geomancy?.value ?? 0 },
|
||||
]
|
||||
}
|
||||
|
||||
/** Aptitudes available as "première action" for an NPC. */
|
||||
function buildNPCOptions(sys) {
|
||||
const ap = sys.aptitudes ?? {}
|
||||
return [
|
||||
{ key: "physical", label: game.i18n.localize("CDE.Physical"), value: ap.physical?.value ?? 0 },
|
||||
{ key: "martial", label: game.i18n.localize("CDE.Martial"), value: ap.martial?.value ?? 0 },
|
||||
{ key: "mental", label: game.i18n.localize("CDE.Mental"), value: ap.mental?.value ?? 0 },
|
||||
{ key: "social", label: game.i18n.localize("CDE.Social"), value: ap.social?.value ?? 0 },
|
||||
{ key: "spiritual", label: game.i18n.localize("CDE.Spiritual"), value: ap.spiritual?.value ?? 0 },
|
||||
]
|
||||
}
|
||||
|
||||
/** Parse the dialog element and extract firstaction + modifier. */
|
||||
function readInitFields(dialog) {
|
||||
const root = dialog.element ?? dialog
|
||||
const selectedKey = root.querySelector("select[name='firstaction']")?.value ?? ""
|
||||
const modifier = parseInt(root.querySelector("input[name='modifier']")?.value ?? 0) || 0
|
||||
return { selectedKey, modifier }
|
||||
}
|
||||
|
||||
/** Post a styled initiative chat message. */
|
||||
async function sendInitChatMessage({ actor, baseName, baseValue, actionName, actionValue, modifier, initiative, antiInitiative }) {
|
||||
const html = await foundry.applications.handlebars.renderTemplate(RESULT_TEMPLATE, {
|
||||
actorName: actor.name,
|
||||
actorImg: actor.img,
|
||||
baseName,
|
||||
baseValue,
|
||||
actionName,
|
||||
actionValue,
|
||||
modifier,
|
||||
hasModifier: modifier !== 0,
|
||||
initiative,
|
||||
antiInitiative,
|
||||
})
|
||||
await ChatMessage.create({
|
||||
user: game.user.id,
|
||||
speaker: ChatMessage.getSpeaker({ actor }),
|
||||
content: html,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Open the PC initiative dialog, compute initiative (Prouesse + Première action + modificateur)
|
||||
* and update the actor, then post a chat card.
|
||||
*/
|
||||
export async function rollInitiativePC(actor) {
|
||||
const sys = actor.system
|
||||
const prowess = sys.skills?.prowess?.value ?? 0
|
||||
const options = buildPCOptions(sys)
|
||||
const baseName = game.i18n.localize("CDE.Prowess")
|
||||
|
||||
const content = await foundry.applications.handlebars.renderTemplate(PC_PROMPT_TEMPLATE, {
|
||||
prowessValue: prowess,
|
||||
options,
|
||||
modifier: 0,
|
||||
})
|
||||
|
||||
const result = await foundry.applications.api.DialogV2.prompt({
|
||||
window: { title: game.i18n.localize("CDE.InitiativeRoll") },
|
||||
content,
|
||||
rejectClose: false,
|
||||
ok: {
|
||||
label: game.i18n.localize("CDE.Validate"),
|
||||
callback: (_ev, _btn, dialog) => readInitFields(dialog),
|
||||
},
|
||||
})
|
||||
if (!result) return
|
||||
|
||||
const { selectedKey, modifier } = result
|
||||
const selected = options.find((o) => o.key === selectedKey) ?? options[0]
|
||||
const rawValue = prowess + selected.value + modifier
|
||||
const initiative = Math.max(1, Math.min(24, rawValue))
|
||||
const antiInit = 25 - initiative
|
||||
|
||||
await actor.update({ "system.initiative": initiative })
|
||||
await sendInitChatMessage({
|
||||
actor,
|
||||
baseName,
|
||||
baseValue: prowess,
|
||||
actionName: selected.label,
|
||||
actionValue: selected.value,
|
||||
modifier,
|
||||
initiative,
|
||||
antiInitiative: antiInit,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Open the NPC initiative dialog, compute initiative (Aptitude physique + Première action + modificateur)
|
||||
* and update the actor, then post a chat card.
|
||||
*/
|
||||
export async function rollInitiativeNPC(actor) {
|
||||
const sys = actor.system
|
||||
const physical = sys.aptitudes?.physical?.value ?? 0
|
||||
const options = buildNPCOptions(sys)
|
||||
const baseName = game.i18n.localize("CDE.Physical")
|
||||
|
||||
const content = await foundry.applications.handlebars.renderTemplate(NPC_PROMPT_TEMPLATE, {
|
||||
physicalValue: physical,
|
||||
options,
|
||||
modifier: 0,
|
||||
})
|
||||
|
||||
const result = await foundry.applications.api.DialogV2.prompt({
|
||||
window: { title: game.i18n.localize("CDE.InitiativeRoll") },
|
||||
content,
|
||||
rejectClose: false,
|
||||
ok: {
|
||||
label: game.i18n.localize("CDE.Validate"),
|
||||
callback: (_ev, _btn, dialog) => readInitFields(dialog),
|
||||
},
|
||||
})
|
||||
if (!result) return
|
||||
|
||||
const { selectedKey, modifier } = result
|
||||
const selected = options.find((o) => o.key === selectedKey) ?? options[0]
|
||||
const rawValue = physical + selected.value + modifier
|
||||
const initiative = Math.max(1, Math.min(24, rawValue))
|
||||
const antiInit = 25 - initiative
|
||||
|
||||
await actor.update({ "system.initiative": initiative })
|
||||
await sendInitChatMessage({
|
||||
actor,
|
||||
baseName,
|
||||
baseValue: physical,
|
||||
actionName: selected.label,
|
||||
actionValue: selected.value,
|
||||
modifier,
|
||||
initiative,
|
||||
antiInitiative: antiInit,
|
||||
})
|
||||
}
|
||||
621
src/ui/rolling.js
Normal file
621
src/ui/rolling.js
Normal file
@@ -0,0 +1,621 @@
|
||||
/**
|
||||
* Wu Xing rolling system for Chroniques de l'Étrange.
|
||||
*
|
||||
* The Wu Xing cycle maps each aspect (by index 0-4) to die face groups:
|
||||
* - metal=0 : faces 3,8
|
||||
* - water=1 : faces 1,6
|
||||
* - earth=2 : faces 0/10,5
|
||||
* - fire=3 : faces 2,7
|
||||
* - wood=4 : faces 4,9
|
||||
*
|
||||
* For a given active aspect the five result categories are:
|
||||
* successes / auspicious / noxious / loksyu (yin face, yang face) / tinji
|
||||
* Each category is associated with one of the five aspects in Wu Xing cycle order.
|
||||
*/
|
||||
|
||||
const RESULT_TEMPLATE = "systems/fvtt-chroniques-de-l-etrange/templates/form/cde-dice-result.html"
|
||||
const SKILL_PROMPT_TEMPLATE = "systems/fvtt-chroniques-de-l-etrange/templates/form/cde-skill-dice-prompt.html"
|
||||
const SKILL_SPECIAL_PROMPT_TEMPLATE = "systems/fvtt-chroniques-de-l-etrange/templates/form/cde-skill-special-dice-prompt.html"
|
||||
const MAGIC_PROMPT_TEMPLATE = "systems/fvtt-chroniques-de-l-etrange/templates/form/cde-magic-dice-prompt.html"
|
||||
const WEAPON_PROMPT_TEMPLATE = "systems/fvtt-chroniques-de-l-etrange/templates/form/cde-weapon-dice-prompt.html"
|
||||
|
||||
/** Maps i18n element label → aspect name (for speciality default aspect lookup) */
|
||||
const LABELELEMENT_TO_ASPECT = {
|
||||
"CDE.Metal": "metal",
|
||||
"CDE.Water": "water",
|
||||
"CDE.Earth": "earth",
|
||||
"CDE.Fire": "fire",
|
||||
"CDE.Wood": "wood",
|
||||
}
|
||||
|
||||
/** Map aspect index → string name used in result template */
|
||||
const ASPECT_NAMES = ["metal", "water", "earth", "fire", "wood"]
|
||||
|
||||
/** Map aspect name → i18n label key */
|
||||
const ASPECT_LABELS = {
|
||||
metal: "CDE.Metal",
|
||||
water: "CDE.Water",
|
||||
earth: "CDE.Earth",
|
||||
fire: "CDE.Fire",
|
||||
wood: "CDE.Wood",
|
||||
}
|
||||
|
||||
/** Map aspect name → image path */
|
||||
const ASPECT_ICONS = {
|
||||
metal: "systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png",
|
||||
water: "systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png",
|
||||
earth: "systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png",
|
||||
fire: "systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png",
|
||||
wood: "systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png",
|
||||
}
|
||||
|
||||
/** Map aspect index → die face pair [yin, yang] (face=10 stored as 0) */
|
||||
const ASPECT_FACES = {
|
||||
metal: [3, 8],
|
||||
water: [1, 6],
|
||||
earth: [0, 5], // 0 = face "10"
|
||||
fire: [2, 7],
|
||||
wood: [4, 9],
|
||||
}
|
||||
|
||||
/**
|
||||
* Wu Xing generating/overcoming cycle:
|
||||
* wood → fire → earth → metal → water → wood (generating)
|
||||
* For each active aspect, the five categories in order:
|
||||
* [successes, auspicious, noxious, loksyu, tinji]
|
||||
*/
|
||||
const WU_XING_CYCLE = {
|
||||
wood: ["wood", "fire", "water", "earth", "metal"],
|
||||
fire: ["fire", "earth", "wood", "metal", "water"],
|
||||
earth: ["earth", "metal", "fire", "water", "wood"],
|
||||
metal: ["metal", "water", "earth", "wood", "fire"],
|
||||
water: ["water", "wood", "metal", "fire", "earth"],
|
||||
}
|
||||
|
||||
/** Maps weapon range string → dice malus applied to the attack pool */
|
||||
const RANGE_MALUS = {
|
||||
contact: 0,
|
||||
courte: 0,
|
||||
mediane: -1,
|
||||
longue: -2,
|
||||
extreme: -3,
|
||||
}
|
||||
|
||||
/** Maps weapon type string → default skill key */
|
||||
const WEAPON_TYPE_SKILL = {
|
||||
melee: "kungfu",
|
||||
thrown: "rangedcombat",
|
||||
ranged: "rangedcombat",
|
||||
firearm: "rangedcombat",
|
||||
}
|
||||
|
||||
/** Maps weapon damageAspect name → ASPECT_NAMES index */
|
||||
const WEAPON_ASPECT_INDEX = { metal: 0, eau: 1, water: 1, terre: 2, earth: 2, feu: 3, fire: 3, bois: 4, wood: 4 }
|
||||
|
||||
/** Count how many times each die face appeared in the roll results */
|
||||
function countFaces(rollResults) {
|
||||
const counts = { 1:0, 2:0, 3:0, 4:0, 5:0, 6:0, 7:0, 8:0, 9:0, 0:0 }
|
||||
for (const die of rollResults) {
|
||||
const face = die.result === 10 ? 0 : die.result
|
||||
counts[face]++
|
||||
}
|
||||
return counts
|
||||
}
|
||||
|
||||
/**
|
||||
* Compute Wu Xing result categories from face counts and active aspect.
|
||||
* Returns { successesdice, auspiciousdice, noxiousdice, loksyudice, tinjidice, loksyurepartition }
|
||||
*/
|
||||
function computeWuXingResults(faces, aspectName, bonusAuspicious = 0) {
|
||||
const cycle = WU_XING_CYCLE[aspectName]
|
||||
if (!cycle) return null
|
||||
|
||||
const [succAspect, ausAspect, noxAspect, lokAspect, tinAspect] = cycle
|
||||
const [succYin, succYang] = ASPECT_FACES[succAspect]
|
||||
const [ausYin, ausYang] = ASPECT_FACES[ausAspect]
|
||||
const [noxYin, noxYang] = ASPECT_FACES[noxAspect]
|
||||
const [lokYin, lokYang] = ASPECT_FACES[lokAspect]
|
||||
const [tinYin, tinYang] = ASPECT_FACES[tinAspect]
|
||||
|
||||
const yin = game.i18n.localize("CDE.Yin")
|
||||
const yang = game.i18n.localize("CDE.Yang")
|
||||
|
||||
return {
|
||||
successesdice: faces[succYin] + faces[succYang],
|
||||
auspiciousdice: faces[ausYin] + faces[ausYang] + bonusAuspicious,
|
||||
noxiousdice: faces[noxYin] + faces[noxYang],
|
||||
loksyudice: faces[lokYin] + faces[lokYang],
|
||||
loksyurepartition: `[${yin}(${faces[lokYin]}) ${yang}(${faces[lokYang]})]`,
|
||||
tinjidice: faces[tinYin] + faces[tinYang],
|
||||
}
|
||||
}
|
||||
|
||||
/** Read a named field from a dialog DOM element */
|
||||
function readField(dlg, name) {
|
||||
const el = dlg.querySelector(`[name="${name}"]`)
|
||||
if (!el) return null
|
||||
return el.type === "checkbox" ? el.checked : el.value
|
||||
}
|
||||
|
||||
/**
|
||||
* Open a DialogV2.prompt with the given template + data and return the resolved form values.
|
||||
* The callback receives the DialogV2 application instance; fields are read from its .element.
|
||||
* @returns {Promise<Record<string,string>|null>}
|
||||
*/
|
||||
async function showRollPrompt({ title, template, data, fields }) {
|
||||
const content = await foundry.applications.handlebars.renderTemplate(template, data)
|
||||
return foundry.applications.api.DialogV2.prompt({
|
||||
window: { title },
|
||||
content,
|
||||
rejectClose: false,
|
||||
ok: {
|
||||
label: game.i18n.localize("CDE.Validate"),
|
||||
callback: (event, button, dialog) => {
|
||||
// In AppV2, dialog is the application instance; .element is the root HTMLElement
|
||||
const root = dialog.element ?? dialog
|
||||
const result = {}
|
||||
for (const field of fields) {
|
||||
result[field] = readField(root, field)
|
||||
}
|
||||
return result
|
||||
},
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Open the skill roll prompt and return the user-confirmed parameters.
|
||||
* @param {object} params - Initial values
|
||||
* @returns {Promise<object|null>}
|
||||
*/
|
||||
export async function showSkillPrompt(params) {
|
||||
return showRollPrompt({
|
||||
title: params.title,
|
||||
template: params.isSpecial ? SKILL_SPECIAL_PROMPT_TEMPLATE : SKILL_PROMPT_TEMPLATE,
|
||||
data: {
|
||||
numberofdice: params.numberofdice,
|
||||
aspect: Number(params.aspect ?? 0),
|
||||
bonusmalus: params.bonusmalus ?? 0,
|
||||
woundmalus: params.woundmalus ?? 0,
|
||||
bonusauspiciousdice: params.bonusauspiciousdice ?? 0,
|
||||
typeofthrow: Number(params.typeofthrow ?? 0),
|
||||
},
|
||||
fields: ["aspect", "bonusmalus", "woundmalus", "bonusauspiciousdice", "typeofthrow"],
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Open the magic roll prompt and return the user-confirmed parameters.
|
||||
*/
|
||||
export async function showMagicPrompt(params) {
|
||||
return showRollPrompt({
|
||||
title: params.title,
|
||||
template: MAGIC_PROMPT_TEMPLATE,
|
||||
data: {
|
||||
numberofdice: params.numberofdice ?? 0,
|
||||
aspectskill: Number(params.aspectskill ?? 0),
|
||||
bonusmalusskill: params.bonusmalusskill ?? 0,
|
||||
bonusauspiciousdice: params.bonusauspiciousdice ?? 0,
|
||||
aspectspeciality: Number(params.aspectspeciality ?? 0),
|
||||
rolldifficulty: params.rolldifficulty ?? 1,
|
||||
bonusmalusspeciality: params.bonusmalusspeciality ?? 0,
|
||||
heispend: params.heispend ?? 0,
|
||||
typeofthrow: Number(params.typeofthrow ?? 0),
|
||||
},
|
||||
fields: ["aspectskill", "bonusmalusskill", "bonusauspiciousdice",
|
||||
"aspectspeciality", "rolldifficulty", "bonusmalusspeciality",
|
||||
"heispend", "typeofthrow"],
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Open the weapon attack roll prompt and return user-confirmed parameters.
|
||||
*/
|
||||
export async function showWeaponPrompt(params) {
|
||||
return showRollPrompt({
|
||||
title: params.title,
|
||||
template: WEAPON_PROMPT_TEMPLATE,
|
||||
data: {
|
||||
numberofdice: params.numberofdice ?? 0,
|
||||
weaponName: params.weaponName ?? "",
|
||||
weaponTypeLabel: params.weaponTypeLabel ?? "CDE.Weapon",
|
||||
weaponAspectIcon: params.weaponAspectIcon ?? "",
|
||||
weaponAspectLabel: params.weaponAspectLabel ?? "",
|
||||
damageBase: params.damageBase ?? 1,
|
||||
weaponskill: params.weaponskill ?? "kungfu",
|
||||
aspect: Number(params.aspect ?? 0),
|
||||
effectiverange: params.effectiverange ?? "contact",
|
||||
bonusmalus: params.bonusmalus ?? 0,
|
||||
woundmalus: params.woundmalus ?? 0,
|
||||
bonusauspiciousdice: params.bonusauspiciousdice ?? 0,
|
||||
typeofthrow: Number(params.typeofthrow ?? 0),
|
||||
},
|
||||
fields: ["weaponskill", "aspect", "effectiverange", "bonusmalus", "woundmalus",
|
||||
"bonusauspiciousdice", "typeofthrow"],
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Build and send a single enriched ChatMessage containing both the roll
|
||||
* (for Dice So Nice) and the Wu Xing result card.
|
||||
*/
|
||||
async function sendResultMessage(actor, resultData, roll, rollMode) {
|
||||
const html = await foundry.applications.handlebars.renderTemplate(RESULT_TEMPLATE, resultData)
|
||||
return ChatMessage.create({
|
||||
user: game.user.id,
|
||||
speaker: ChatMessage.getSpeaker({ actor }),
|
||||
content: html,
|
||||
rolls: [roll],
|
||||
rollMode,
|
||||
})
|
||||
}
|
||||
|
||||
const ROLL_MODES = ["roll", "gmroll", "blindroll", "selfroll"]
|
||||
|
||||
/**
|
||||
* Main entry point: roll dice for a given actor.
|
||||
*
|
||||
* @param {Actor} actor
|
||||
* @param {string} rollKey - e.g. "prowess-skill", "fire-aspect", "alchemy-magic-elixirs"
|
||||
*/
|
||||
export async function rollForActor(actor, rollKey) {
|
||||
const parts = rollKey.split("-")
|
||||
const skillLibel = parts[0]
|
||||
const typeLibel = parts[1]
|
||||
const specialLibel = parts[2] ?? null
|
||||
|
||||
const sys = actor.system
|
||||
const typeOfThrow = Number(sys.prefs?.typeofthrow?.choice ?? 0)
|
||||
|
||||
let numberofdice = 0
|
||||
let title = ""
|
||||
let isSpecial = false
|
||||
let isMagic = false
|
||||
let isMagicSpecial = false
|
||||
let kfDefaultAspect = -1 // set in "itemkungfu" case, used when computing defaultAspect
|
||||
|
||||
// ---- Determine dice count + title ----
|
||||
const MAGIC_I18N_KEYS = {
|
||||
internalcinnabar: "CDE.InternalCinnabar",
|
||||
alchemy: "CDE.Alchemy",
|
||||
masteryoftheway: "CDE.MasteryOfTheWay",
|
||||
exorcism: "CDE.Exorcism",
|
||||
geomancy: "CDE.Geomancy",
|
||||
}
|
||||
|
||||
switch (typeLibel) {
|
||||
case "aspect":
|
||||
numberofdice = sys.aspect[skillLibel]?.value ?? 0
|
||||
title = game.i18n.localize(sys.aspect[skillLibel]?.label ?? "CDE.Roll")
|
||||
break
|
||||
case "skill":
|
||||
numberofdice = sys.skills[skillLibel]?.value ?? 0
|
||||
title = game.i18n.localize(sys.skills[skillLibel]?.label ?? "CDE.Roll")
|
||||
break
|
||||
case "special":
|
||||
numberofdice = sys.skills[skillLibel]?.value ?? 0
|
||||
title = game.i18n.localize(sys.skills[skillLibel]?.label ?? "CDE.Roll")
|
||||
title += ` [${game.i18n.localize("CDE.Speciality")}]`
|
||||
isSpecial = true
|
||||
if (!sys.skills[skillLibel]?.specialities) {
|
||||
ui.notifications.warn(game.i18n.localize("CDE.Error2"))
|
||||
return
|
||||
}
|
||||
break
|
||||
case "resource":
|
||||
numberofdice = sys.resources[skillLibel]?.value ?? 0
|
||||
title = game.i18n.localize(sys.resources[skillLibel]?.label ?? "CDE.Roll")
|
||||
break
|
||||
case "field":
|
||||
numberofdice = sys.resources[skillLibel]?.value ?? 0
|
||||
title = game.i18n.localize(sys.resources[skillLibel]?.label ?? "CDE.Roll")
|
||||
title += ` [${game.i18n.localize("CDE.Field")}]`
|
||||
isSpecial = true
|
||||
if (!sys.resources[skillLibel]?.specialities) {
|
||||
ui.notifications.warn(game.i18n.localize("CDE.Error4"))
|
||||
return
|
||||
}
|
||||
break
|
||||
case "magic":
|
||||
numberofdice = sys.magics[skillLibel]?.value ?? 0
|
||||
isMagic = true
|
||||
title = game.i18n.localize(MAGIC_I18N_KEYS[skillLibel] ?? "CDE.Magics")
|
||||
break
|
||||
case "magicspecial":
|
||||
numberofdice = sys.magics[skillLibel]?.value ?? 0
|
||||
isMagicSpecial = true
|
||||
isMagic = true
|
||||
if (!sys.magics[skillLibel]?.speciality?.[specialLibel]?.check) {
|
||||
ui.notifications.warn(game.i18n.localize("CDE.Error6"))
|
||||
return
|
||||
}
|
||||
title = `${game.i18n.localize(MAGIC_I18N_KEYS[skillLibel] ?? "CDE.Magics")} [${game.i18n.localize(game.system.CONST?.MAGICS?.[skillLibel]?.speciality?.[specialLibel]?.label ?? "")}]`
|
||||
break
|
||||
case "itemkungfu": {
|
||||
// skillLibel = item._id — look up the kungfu item to find which skill + aspect to use
|
||||
const kfItem = actor.items.get(skillLibel)
|
||||
if (!kfItem) { ui.notifications.warn(game.i18n.localize("CDE.Error0")); return }
|
||||
const kfSkill = kfItem.system.skill ?? "kungfu"
|
||||
numberofdice = sys.skills[kfSkill]?.value ?? 0
|
||||
title = `${kfItem.name} [${game.i18n.localize(sys.skills[kfSkill]?.label ?? "CDE.KungFu")}]`
|
||||
kfDefaultAspect = ASPECT_NAMES.indexOf(kfItem.system.aspect ?? "metal")
|
||||
if (kfDefaultAspect < 0) kfDefaultAspect = 0
|
||||
break
|
||||
}
|
||||
case "itemweapon": {
|
||||
// skillLibel = item._id — look up the weapon item to find type + aspect + damage
|
||||
const wpItem = actor.items.get(skillLibel)
|
||||
if (!wpItem) { ui.notifications.warn(game.i18n.localize("CDE.Error0")); return }
|
||||
|
||||
const wpType = wpItem.system.weaponType ?? "melee"
|
||||
const wpSkill = WEAPON_TYPE_SKILL[wpType] ?? "kungfu"
|
||||
numberofdice = sys.skills[wpSkill]?.value ?? 0
|
||||
|
||||
const wpAspectRaw = wpItem.system.damageAspect ?? "metal"
|
||||
const wpAspectIdx = WEAPON_ASPECT_INDEX[wpAspectRaw] ?? 0
|
||||
const wpRange = wpItem.system.range ?? "contact"
|
||||
|
||||
const WEAPON_TYPE_LABELS = {
|
||||
melee: "CDE.WeaponMelee",
|
||||
thrown: "CDE.WeaponThrown",
|
||||
ranged: "CDE.WeaponRanged",
|
||||
firearm: "CDE.WeaponFirearm",
|
||||
}
|
||||
|
||||
// Show weapon-specific prompt
|
||||
const wParams = await showWeaponPrompt({
|
||||
title: `${wpItem.name} [${game.i18n.localize(sys.skills[wpSkill]?.label ?? "CDE.WeaponRoll")}]`,
|
||||
numberofdice,
|
||||
weaponName: wpItem.name,
|
||||
weaponTypeLabel: WEAPON_TYPE_LABELS[wpType] ?? "CDE.Weapon",
|
||||
weaponAspectIcon: ASPECT_ICONS[ASPECT_NAMES[wpAspectIdx]] ?? "",
|
||||
weaponAspectLabel: game.i18n.localize(ASPECT_LABELS[ASPECT_NAMES[wpAspectIdx]] ?? ""),
|
||||
damageBase: wpItem.system.damageBase ?? 1,
|
||||
weaponskill: wpSkill,
|
||||
aspect: wpAspectIdx,
|
||||
effectiverange: wpRange,
|
||||
bonusmalus: 0,
|
||||
woundmalus: 0,
|
||||
bonusauspiciousdice: 0,
|
||||
typeofthrow: typeOfThrow,
|
||||
})
|
||||
|
||||
if (!wParams) return // cancelled
|
||||
|
||||
// Resolve final pool from weapon prompt values
|
||||
const wpChosenSkill = wParams.weaponskill ?? wpSkill
|
||||
const wpSkillDice = sys.skills[wpChosenSkill]?.value ?? 0
|
||||
const wpAspFinal = Number(wParams.aspect ?? wpAspectIdx)
|
||||
const wpAspectDice = sys.aspect[ASPECT_NAMES[wpAspFinal]]?.value ?? 0
|
||||
const wpRangeMalus = RANGE_MALUS[wParams.effectiverange ?? "contact"] ?? 0
|
||||
const wpBonusMalus = Number(wParams.bonusmalus ?? 0)
|
||||
const wpWoundMalus = Number(wParams.woundmalus ?? 0)
|
||||
const wpBonusAusp = Number(wParams.bonusauspiciousdice ?? 0)
|
||||
const wpThrowMode = Number(wParams.typeofthrow ?? 0)
|
||||
const wpDamageBase = wpItem.system.damageBase ?? 1
|
||||
|
||||
const wpTotalDice = wpSkillDice + wpAspectDice + wpRangeMalus + wpBonusMalus - wpWoundMalus
|
||||
if (wpTotalDice <= 0) {
|
||||
ui.notifications.warn(game.i18n.localize("CDE.Error0"))
|
||||
return
|
||||
}
|
||||
|
||||
const wpRoll = new Roll(`${wpTotalDice}d10`)
|
||||
await wpRoll.evaluate()
|
||||
|
||||
const wpAspectName = ASPECT_NAMES[wpAspFinal] ?? "metal"
|
||||
const wpFaces = countFaces(wpRoll.dice[0]?.results ?? [])
|
||||
const wpResults = computeWuXingResults(wpFaces, wpAspectName, wpBonusAusp)
|
||||
if (!wpResults) return
|
||||
|
||||
const wpModParts = []
|
||||
if (wpRangeMalus !== 0) wpModParts.push(`${wpRangeMalus} ${game.i18n.localize("CDE.RangePenalty")}`)
|
||||
if (wpBonusMalus !== 0) wpModParts.push(`${wpBonusMalus > 0 ? "+" : ""}${wpBonusMalus} ${game.i18n.localize("CDE.BonusMalus")}`)
|
||||
if (wpWoundMalus !== 0) wpModParts.push(`-${wpWoundMalus} ${game.i18n.localize("CDE.WoundMalus")}`)
|
||||
if (wpBonusAusp !== 0) wpModParts.push(`+${wpBonusAusp} ${game.i18n.localize("CDE.BonusAuspiciousDice")}`)
|
||||
|
||||
const wpMsg = await sendResultMessage(actor, {
|
||||
rollLabel: `${wpItem.name}`,
|
||||
aspectName: wpAspectName,
|
||||
aspectLabel: game.i18n.localize(ASPECT_LABELS[wpAspectName] ?? ""),
|
||||
aspectIcon: ASPECT_ICONS[wpAspectName] ?? "",
|
||||
totalDice: wpTotalDice,
|
||||
modifiersText: wpModParts.length ? wpModParts.join(" · ") : "",
|
||||
spellPower: null,
|
||||
rollDifficulty: null,
|
||||
actorName: actor.name ?? "",
|
||||
actorImg: actor.img ?? "",
|
||||
// weapon-specific
|
||||
weaponName: wpItem.name,
|
||||
damageBase: wpDamageBase,
|
||||
totalDamage: wpResults.successesdice * wpDamageBase,
|
||||
...wpResults,
|
||||
aspect: wpAspectName,
|
||||
d1: wpFaces[1], d2: wpFaces[2], d3: wpFaces[3], d4: wpFaces[4], d5: wpFaces[5],
|
||||
d6: wpFaces[6], d7: wpFaces[7], d8: wpFaces[8], d9: wpFaces[9], d0: wpFaces[0],
|
||||
}, wpRoll, ROLL_MODES[wpThrowMode] ?? "roll")
|
||||
|
||||
if (game.modules.get("dice-so-nice")?.active && wpMsg?.id) {
|
||||
await game.dice3d.waitFor3DAnimationByMessageID(wpMsg.id)
|
||||
}
|
||||
return
|
||||
}
|
||||
default:
|
||||
ui.notifications.warn(`Unknown roll type: ${typeLibel}`)
|
||||
return
|
||||
}
|
||||
|
||||
// For magic rolls the prompt allows adding HEI dice, so don't block early.
|
||||
// For itemkungfu, allow 0 base dice (user can add bonus dice in the prompt).
|
||||
if (numberofdice <= 0 && typeLibel !== "aspect" && typeLibel !== "itemkungfu" && !isMagic) {
|
||||
ui.notifications.warn(game.i18n.localize("CDE.Error0"))
|
||||
return
|
||||
}
|
||||
|
||||
// ---- Pre-compute default aspect for magic based on skill ----
|
||||
const MAGIC_ASPECTS = {
|
||||
internalcinnabar: 0, // metal
|
||||
alchemy: 1, // water
|
||||
masteryoftheway: 2, // earth
|
||||
exorcism: 3, // fire
|
||||
geomancy: 4, // wood
|
||||
}
|
||||
|
||||
let defaultAspect = typeLibel === "aspect"
|
||||
? ["metal","water","earth","fire","wood"].indexOf(skillLibel)
|
||||
: 0
|
||||
if (isMagic && MAGIC_ASPECTS[skillLibel] !== undefined) {
|
||||
defaultAspect = MAGIC_ASPECTS[skillLibel]
|
||||
}
|
||||
if (kfDefaultAspect >= 0) {
|
||||
defaultAspect = kfDefaultAspect
|
||||
}
|
||||
|
||||
let defaultSpecialAspect = 0
|
||||
if (isMagicSpecial && specialLibel) {
|
||||
// Look up the speciality's element from the MAGICS config constant
|
||||
const specialCfg = game.system.CONST?.MAGICS?.[skillLibel]?.speciality?.[specialLibel]
|
||||
const aspectName = LABELELEMENT_TO_ASPECT[specialCfg?.labelelement]
|
||||
if (aspectName) {
|
||||
defaultSpecialAspect = ASPECT_NAMES.indexOf(aspectName)
|
||||
}
|
||||
}
|
||||
|
||||
// ---- Show roll prompt ----
|
||||
let params
|
||||
|
||||
if (isMagic) {
|
||||
params = await showMagicPrompt({
|
||||
title,
|
||||
numberofdice,
|
||||
aspectskill: defaultAspect,
|
||||
bonusmalusskill: 0,
|
||||
bonusauspiciousdice: 0,
|
||||
aspectspeciality: defaultSpecialAspect,
|
||||
rolldifficulty: 1,
|
||||
bonusmalusspeciality: 0,
|
||||
heispend: 0,
|
||||
typeofthrow: typeOfThrow,
|
||||
})
|
||||
} else {
|
||||
params = await showSkillPrompt({
|
||||
title,
|
||||
numberofdice,
|
||||
aspect: defaultAspect,
|
||||
bonusmalus: 0,
|
||||
woundmalus: 0,
|
||||
bonusauspiciousdice: 0,
|
||||
typeofthrow: typeOfThrow,
|
||||
isSpecial,
|
||||
})
|
||||
}
|
||||
|
||||
if (!params) return // cancelled
|
||||
|
||||
// ---- Compute total dice and roll ----
|
||||
let aspectIndex, bonusMalus, bonusAuspicious, throwMode
|
||||
let spellAspectIndex = null // magic only: aspect of the speciality for Wu Xing
|
||||
let rollDifficulty = 1 // magic only: multiplier applied to successes
|
||||
|
||||
if (isMagic) {
|
||||
const skillAspectIndex = Number(params.aspectskill ?? 0)
|
||||
spellAspectIndex = Number(params.aspectspeciality ?? skillAspectIndex)
|
||||
aspectIndex = skillAspectIndex // used only for skill dice pool
|
||||
bonusMalus = Number(params.bonusmalusskill ?? 0)
|
||||
bonusAuspicious = Number(params.bonusauspiciousdice ?? 0)
|
||||
rollDifficulty = Math.max(1, Number(params.rolldifficulty ?? 1))
|
||||
throwMode = Number(params.typeofthrow ?? 0)
|
||||
// magic: magic skill + aspect + bonuses + 1 (speciality base) + HEI spent
|
||||
const aspectDice = sys.aspect[ASPECT_NAMES[aspectIndex]]?.value ?? 0
|
||||
const bonusSpec = Number(params.bonusmalusspeciality ?? 0)
|
||||
const heiDice = Number(params.heispend ?? 0)
|
||||
numberofdice = numberofdice + aspectDice + bonusMalus + 1 + bonusSpec + heiDice
|
||||
} else {
|
||||
aspectIndex = Number(params.aspect ?? 0)
|
||||
bonusMalus = Number(params.bonusmalus ?? 0)
|
||||
const woundMalus = Number(params.woundmalus ?? 0)
|
||||
bonusAuspicious = Number(params.bonusauspiciousdice ?? 0)
|
||||
throwMode = Number(params.typeofthrow ?? 0)
|
||||
|
||||
const aspectDice = (typeLibel !== "aspect")
|
||||
? (sys.aspect[ASPECT_NAMES[aspectIndex]]?.value ?? 0)
|
||||
: 0
|
||||
|
||||
numberofdice = numberofdice + aspectDice + bonusMalus - woundMalus
|
||||
if (isSpecial) numberofdice += 1 // +1d for speciality
|
||||
}
|
||||
|
||||
if (numberofdice <= 0) {
|
||||
ui.notifications.warn(game.i18n.localize("CDE.Error0"))
|
||||
return
|
||||
}
|
||||
|
||||
// ---- Roll ----
|
||||
const roll = new Roll(`${numberofdice}d10`)
|
||||
await roll.evaluate()
|
||||
|
||||
const rollModeKey = ROLL_MODES[throwMode] ?? "roll"
|
||||
|
||||
// ---- Compute Wu Xing results ----
|
||||
// For magic rolls, the spell's aspect (aspectspeciality) governs the Wu Xing
|
||||
// cycle (which faces count as successes/auspicious/etc.), not the skill aspect.
|
||||
const wuXingAspectName = spellAspectIndex !== null
|
||||
? ASPECT_NAMES[spellAspectIndex]
|
||||
: ASPECT_NAMES[aspectIndex]
|
||||
const allResults = roll.dice[0]?.results ?? []
|
||||
const faces = countFaces(allResults)
|
||||
const results = computeWuXingResults(faces, wuXingAspectName, bonusAuspicious)
|
||||
if (!results) return
|
||||
|
||||
// For magic, successesdice × rollDifficulty = spell power
|
||||
const spellPower = isMagic ? results.successesdice * rollDifficulty : null
|
||||
|
||||
// ---- Build modifier summary text ----
|
||||
const modParts = []
|
||||
if (isMagic) {
|
||||
const bm = Number(params.bonusmalusskill ?? 0)
|
||||
const bs = Number(params.bonusmalusspeciality ?? 0)
|
||||
const hs = Number(params.heispend ?? 0)
|
||||
const ba = Number(params.bonusauspiciousdice ?? 0)
|
||||
if (bm !== 0) modParts.push(`${bm > 0 ? "+" : ""}${bm} ${game.i18n.localize("CDE.BonusMalus")}`)
|
||||
if (bs !== 0) modParts.push(`${bs > 0 ? "+" : ""}${bs} ${game.i18n.localize("CDE.SpellBonus")}`)
|
||||
if (ba !== 0) modParts.push(`+${ba} ${game.i18n.localize("CDE.BonusAuspiciousDice")}`)
|
||||
if (hs !== 0) modParts.push(`${hs} ${game.i18n.localize("CDE.HeiSpend")}`)
|
||||
if (rollDifficulty !== 1) modParts.push(`×${rollDifficulty} ${game.i18n.localize("CDE.RollDifficulty")}`)
|
||||
} else {
|
||||
const bm = Number(params.bonusmalus ?? 0)
|
||||
const wm = Number(params.woundmalus ?? 0)
|
||||
const ba = Number(params.bonusauspiciousdice ?? 0)
|
||||
if (bm !== 0) modParts.push(`${bm > 0 ? "+" : ""}${bm} ${game.i18n.localize("CDE.BonusMalus")}`)
|
||||
if (wm !== 0) modParts.push(`-${wm} ${game.i18n.localize("CDE.WoundMalus")}`)
|
||||
if (ba !== 0) modParts.push(`+${ba} ${game.i18n.localize("CDE.BonusAuspiciousDice")}`)
|
||||
}
|
||||
|
||||
// ---- Send single enriched ChatMessage (roll + result card) ----
|
||||
const msg = await sendResultMessage(actor, {
|
||||
// Roll identity
|
||||
rollLabel: title,
|
||||
aspectName: wuXingAspectName,
|
||||
aspectLabel: game.i18n.localize(ASPECT_LABELS[wuXingAspectName] ?? ""),
|
||||
aspectIcon: ASPECT_ICONS[wuXingAspectName] ?? "",
|
||||
totalDice: numberofdice,
|
||||
modifiersText: modParts.length ? modParts.join(" · ") : "",
|
||||
// Spell power (magic only)
|
||||
spellPower,
|
||||
rollDifficulty: isMagic ? rollDifficulty : null,
|
||||
// Actor info
|
||||
actorName: actor.name ?? "",
|
||||
actorImg: actor.img ?? "",
|
||||
// Wu Xing results
|
||||
aspect: wuXingAspectName,
|
||||
...results,
|
||||
// Die face counts
|
||||
d1: faces[1], d2: faces[2], d3: faces[3], d4: faces[4], d5: faces[5],
|
||||
d6: faces[6], d7: faces[7], d8: faces[8], d9: faces[9], d0: faces[0],
|
||||
}, roll, rollModeKey)
|
||||
|
||||
// ---- Wait for Dice So Nice animation ----
|
||||
if (game.modules.get("dice-so-nice")?.active && msg?.id) {
|
||||
await game.dice3d.waitFor3DAnimationByMessageID(msg.id)
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,7 @@ const { HandlebarsApplicationMixin } = foundry.applications.api
|
||||
export class CDEBaseActorSheet extends HandlebarsApplicationMixin(foundry.applications.sheets.ActorSheetV2) {
|
||||
static DEFAULT_OPTIONS = {
|
||||
classes: ["fvtt-chroniques-de-l-etrange", "actor"],
|
||||
position: { width: 920, height: "auto" },
|
||||
position: { width: 920, height: 800 },
|
||||
window: { resizable: true },
|
||||
form: { submitOnChange: true },
|
||||
dragDrop: [{ dragSelector: ".item, [data-drag='true']", dropSelector: null }],
|
||||
@@ -16,6 +16,10 @@ export class CDEBaseActorSheet extends HandlebarsApplicationMixin(foundry.applic
|
||||
|
||||
tabGroups = { primary: "description" }
|
||||
|
||||
get title() {
|
||||
return this.document.name
|
||||
}
|
||||
|
||||
async _prepareContext() {
|
||||
const descriptionHTML = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description ?? "", { async: true })
|
||||
const cssClass = this.options.classes?.join(" ") ?? ""
|
||||
@@ -23,6 +27,7 @@ export class CDEBaseActorSheet extends HandlebarsApplicationMixin(foundry.applic
|
||||
actor: this.document,
|
||||
system: this.document.system,
|
||||
systemData: this.document.system,
|
||||
systemFields: this.document.system.schema.fields,
|
||||
items: this.document.items.contents,
|
||||
descriptionHTML,
|
||||
editable: this.isEditable,
|
||||
@@ -30,14 +35,11 @@ export class CDEBaseActorSheet extends HandlebarsApplicationMixin(foundry.applic
|
||||
}
|
||||
}
|
||||
|
||||
async _onFirstRender(context, options) {
|
||||
await super._onFirstRender(context, options)
|
||||
for (const [group, tab] of Object.entries(this.tabGroups)) {
|
||||
this.changeTab(tab, group, { force: true })
|
||||
}
|
||||
}
|
||||
|
||||
// Restore the active tab after every render (including re-renders from submitOnChange).
|
||||
// AppV2 does NOT preserve tab state natively — we must re-apply it from this.tabGroups,
|
||||
// which is dynamically updated by changeTab() when the user clicks a tab.
|
||||
_onRender(context, options) {
|
||||
super._onRender?.(context, options)
|
||||
for (const [group, tab] of Object.entries(this.tabGroups)) {
|
||||
this.changeTab(tab, group, { force: true })
|
||||
}
|
||||
@@ -48,6 +50,10 @@ export class CDEBaseActorSheet extends HandlebarsApplicationMixin(foundry.applic
|
||||
const cls = getDocumentClass("Item")
|
||||
const labels = {
|
||||
item: "CDE.ItemNew",
|
||||
weapon: "CDE.WeaponNew",
|
||||
armor: "CDE.ArmorNew",
|
||||
sanhei: "CDE.SanheiNew",
|
||||
ingredient: "CDE.IngredientNew",
|
||||
kungfu: "CDE.KFNew",
|
||||
spell: "CDE.SpellNew",
|
||||
supernatural: "CDE.SupernaturalNew",
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import { MAGICS, SUBTYPES } from "../../../config/constants.js"
|
||||
import { rollInitiativePC } from "../../initiative.js"
|
||||
import { rollForActor } from "../../rolling.js"
|
||||
import { CDEBaseActorSheet } from "./base.js"
|
||||
|
||||
export class CDECharacterSheet extends CDEBaseActorSheet {
|
||||
@@ -15,6 +17,10 @@ export class CDECharacterSheet extends CDEBaseActorSheet {
|
||||
async _prepareContext() {
|
||||
const context = await super._prepareContext()
|
||||
context.equipments = context.items.filter((item) => item.type === "item")
|
||||
context.weapons = context.items.filter((item) => item.type === "weapon")
|
||||
context.armors = context.items.filter((item) => item.type === "armor")
|
||||
context.sanheis = context.items.filter((item) => item.type === "sanhei")
|
||||
context.ingredients = context.items.filter((item) => item.type === "ingredient")
|
||||
context.spells = context.items.filter((item) => item.type === "spell")
|
||||
context.kungfus = context.items.filter((item) => item.type === "kungfu")
|
||||
context.CDE = { MAGICS, SUBTYPES }
|
||||
@@ -25,6 +31,7 @@ export class CDECharacterSheet extends CDEBaseActorSheet {
|
||||
super._onRender?.(context, options)
|
||||
this.#bindInitiativeControls()
|
||||
this.#bindPrefs()
|
||||
this.#bindRollButtons()
|
||||
}
|
||||
|
||||
#bindInitiativeControls() {
|
||||
@@ -45,26 +52,7 @@ export class CDECharacterSheet extends CDEBaseActorSheet {
|
||||
return
|
||||
}
|
||||
if (action === "create") {
|
||||
const html = `
|
||||
<form class="flexcol">
|
||||
<div class="form-group">
|
||||
<label>${game.i18n.localize("CDE.TurnOrder")}</label>
|
||||
<input type="number" name="initiative" value="${initiative}" min="1" max="24" />
|
||||
</div>
|
||||
</form>`
|
||||
const value = await Dialog.prompt({
|
||||
title: game.i18n.localize("CDE.TurnOrder"),
|
||||
content: html,
|
||||
label: game.i18n.localize("CDE.Validate"),
|
||||
callback: (dlg) => {
|
||||
const input = dlg.querySelector("input[name='initiative']")
|
||||
return Number(input?.value ?? initiative)
|
||||
},
|
||||
})
|
||||
if (Number.isFinite(value)) {
|
||||
const sanitized = foundry.utils.clamp(Number(value), 1, 24)
|
||||
await this.document.update({ "system.initiative": sanitized })
|
||||
}
|
||||
await rollInitiativePC(this.document)
|
||||
}
|
||||
})
|
||||
})
|
||||
@@ -109,4 +97,16 @@ export class CDECharacterSheet extends CDEBaseActorSheet {
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
#bindRollButtons() {
|
||||
const cells = this.element?.querySelectorAll("td.click[data-libel-id], td.click2[data-libel-id], .cde-roll-trigger[data-libel-id]")
|
||||
if (!cells?.length) return
|
||||
cells.forEach((cell) => {
|
||||
cell.addEventListener("click", (event) => {
|
||||
event.preventDefault()
|
||||
const rollKey = cell.dataset.libelId
|
||||
if (rollKey) rollForActor(this.document, rollKey)
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { rollInitiativeNPC } from "../../initiative.js"
|
||||
import { CDEBaseActorSheet } from "./base.js"
|
||||
|
||||
export class CDENpcSheet extends CDEBaseActorSheet {
|
||||
@@ -43,23 +44,7 @@ export class CDENpcSheet extends CDEBaseActorSheet {
|
||||
return
|
||||
}
|
||||
if (action === "create") {
|
||||
const html = `
|
||||
<form class="flexcol">
|
||||
<div class="form-group">
|
||||
<label>${game.i18n.localize("CDE.TurnOrder")}</label>
|
||||
<input type="number" name="initiative" value="${initiative}" min="1" max="24" />
|
||||
</div>
|
||||
</form>`
|
||||
const value = await Dialog.prompt({
|
||||
title: game.i18n.localize("CDE.TurnOrder"),
|
||||
content: html,
|
||||
label: game.i18n.localize("CDE.Validate"),
|
||||
callback: (dlg) => Number(dlg.querySelector("input[name='initiative']")?.value ?? initiative),
|
||||
})
|
||||
if (Number.isFinite(value)) {
|
||||
const sanitized = foundry.utils.clamp(Number(value), 1, 24)
|
||||
await this.document.update({ "system.initiative": sanitized })
|
||||
}
|
||||
await rollInitiativeNPC(this.document)
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
12
src/ui/sheets/items/armor.js
Normal file
12
src/ui/sheets/items/armor.js
Normal file
@@ -0,0 +1,12 @@
|
||||
import { CDEBaseItemSheet } from "./base.js"
|
||||
|
||||
export class CDEArmorSheet extends CDEBaseItemSheet {
|
||||
static DEFAULT_OPTIONS = {
|
||||
classes: ["armor"],
|
||||
position: { width: 520, height: 460 },
|
||||
}
|
||||
|
||||
static PARTS = {
|
||||
main: { template: "systems/fvtt-chroniques-de-l-etrange/templates/item/cde-armor-sheet.html" },
|
||||
}
|
||||
}
|
||||
@@ -9,7 +9,11 @@ export class CDEBaseItemSheet extends HandlebarsApplicationMixin(foundry.applica
|
||||
actions: {},
|
||||
}
|
||||
|
||||
tabGroups = { primary: "description" }
|
||||
tabGroups = { primary: "details" }
|
||||
|
||||
get title() {
|
||||
return this.document.name
|
||||
}
|
||||
|
||||
async _prepareContext() {
|
||||
const cssClass = this.options.classes?.join(" ") ?? ""
|
||||
@@ -19,6 +23,7 @@ export class CDEBaseItemSheet extends HandlebarsApplicationMixin(foundry.applica
|
||||
item: this.document,
|
||||
system: this.document.system,
|
||||
systemData: this.document.system,
|
||||
systemFields: this.document.system.schema.fields,
|
||||
editable: this.isEditable,
|
||||
cssClass,
|
||||
enrichedDescription,
|
||||
@@ -28,14 +33,9 @@ export class CDEBaseItemSheet extends HandlebarsApplicationMixin(foundry.applica
|
||||
}
|
||||
}
|
||||
|
||||
async _onFirstRender(context, options) {
|
||||
await super._onFirstRender(context, options)
|
||||
for (const [group, tab] of Object.entries(this.tabGroups)) {
|
||||
this.changeTab(tab, group, { force: true })
|
||||
}
|
||||
}
|
||||
|
||||
// Restore the active tab after every render (including re-renders from submitOnChange).
|
||||
_onRender(context, options) {
|
||||
super._onRender?.(context, options)
|
||||
for (const [group, tab] of Object.entries(this.tabGroups)) {
|
||||
this.changeTab(tab, group, { force: true })
|
||||
}
|
||||
|
||||
@@ -3,3 +3,7 @@ export { CDEItemSheet } from "./item.js"
|
||||
export { CDEKungfuSheet } from "./kungfu.js"
|
||||
export { CDESpellSheet } from "./spell.js"
|
||||
export { CDESupernaturalSheet } from "./supernatural.js"
|
||||
export { CDEWeaponSheet } from "./weapon.js"
|
||||
export { CDEArmorSheet } from "./armor.js"
|
||||
export { CDESanheiSheet } from "./sanhei.js"
|
||||
export { CDEIngredientSheet } from "./ingredient.js"
|
||||
|
||||
12
src/ui/sheets/items/ingredient.js
Normal file
12
src/ui/sheets/items/ingredient.js
Normal file
@@ -0,0 +1,12 @@
|
||||
import { CDEBaseItemSheet } from "./base.js"
|
||||
|
||||
export class CDEIngredientSheet extends CDEBaseItemSheet {
|
||||
static DEFAULT_OPTIONS = {
|
||||
classes: ["ingredient"],
|
||||
position: { width: 520, height: 460 },
|
||||
}
|
||||
|
||||
static PARTS = {
|
||||
main: { template: "systems/fvtt-chroniques-de-l-etrange/templates/item/cde-ingredient-sheet.html" },
|
||||
}
|
||||
}
|
||||
@@ -1,23 +1,12 @@
|
||||
import { SUBTYPES } from "../../../config/constants.js"
|
||||
import { CDEBaseItemSheet } from "./base.js"
|
||||
|
||||
export class CDEItemSheet extends CDEBaseItemSheet {
|
||||
static DEFAULT_OPTIONS = {
|
||||
classes: ["equipment"],
|
||||
position: { width: 620, height: 580 },
|
||||
position: { width: 560, height: 460 },
|
||||
}
|
||||
|
||||
static PARTS = {
|
||||
main: { template: "systems/fvtt-chroniques-de-l-etrange/templates/item/cde-item-sheet.html" },
|
||||
}
|
||||
|
||||
async _prepareContext() {
|
||||
const context = await super._prepareContext()
|
||||
context.subtypes = SUBTYPES
|
||||
context.isWeapon = this.document.isWeapon
|
||||
context.isArmor = this.document.isArmor
|
||||
context.isSanhei = this.document.isSanhei
|
||||
context.isOther = this.document.isOther
|
||||
return context
|
||||
}
|
||||
}
|
||||
|
||||
23
src/ui/sheets/items/sanhei.js
Normal file
23
src/ui/sheets/items/sanhei.js
Normal file
@@ -0,0 +1,23 @@
|
||||
import { CDEBaseItemSheet } from "./base.js"
|
||||
|
||||
export class CDESanheiSheet extends CDEBaseItemSheet {
|
||||
static DEFAULT_OPTIONS = {
|
||||
classes: ["sanhei"],
|
||||
position: { width: 580, height: 620 },
|
||||
}
|
||||
|
||||
static PARTS = {
|
||||
main: { template: "systems/fvtt-chroniques-de-l-etrange/templates/item/cde-sanhei-sheet.html" },
|
||||
}
|
||||
|
||||
async _prepareContext() {
|
||||
const context = await super._prepareContext()
|
||||
const enrich = (content) => foundry.applications.ux.TextEditor.implementation.enrichHTML(content ?? "", { async: true })
|
||||
const props = this.document.system.properties
|
||||
context.prop1DescriptionHTML = await enrich(props.prop1.description)
|
||||
context.prop2DescriptionHTML = await enrich(props.prop2.description)
|
||||
context.prop3DescriptionHTML = await enrich(props.prop3.description)
|
||||
context.propFields = this.document.system.schema.fields.properties.fields
|
||||
return context
|
||||
}
|
||||
}
|
||||
@@ -9,4 +9,11 @@ export class CDESupernaturalSheet extends CDEBaseItemSheet {
|
||||
static PARTS = {
|
||||
main: { template: "systems/fvtt-chroniques-de-l-etrange/templates/item/cde-supernatural-sheet.html" },
|
||||
}
|
||||
|
||||
async _prepareContext() {
|
||||
const context = await super._prepareContext()
|
||||
const enrich = (content) => foundry.applications.ux.TextEditor.implementation.enrichHTML(content ?? "", { async: true })
|
||||
context.effectsHTML = await enrich(this.document.system.effects)
|
||||
return context
|
||||
}
|
||||
}
|
||||
|
||||
12
src/ui/sheets/items/weapon.js
Normal file
12
src/ui/sheets/items/weapon.js
Normal file
@@ -0,0 +1,12 @@
|
||||
import { CDEBaseItemSheet } from "./base.js"
|
||||
|
||||
export class CDEWeaponSheet extends CDEBaseItemSheet {
|
||||
static DEFAULT_OPTIONS = {
|
||||
classes: ["weapon"],
|
||||
position: { width: 580, height: 520 },
|
||||
}
|
||||
|
||||
static PARTS = {
|
||||
main: { template: "systems/fvtt-chroniques-de-l-etrange/templates/item/cde-weapon-sheet.html" },
|
||||
}
|
||||
}
|
||||
104
system.json
104
system.json
@@ -10,8 +10,12 @@
|
||||
"name": "LeRatierBretonnien"
|
||||
}
|
||||
],
|
||||
"esmodules": ["dist/system.js"],
|
||||
"styles": ["css/cde-theme.css"],
|
||||
"esmodules": [
|
||||
"dist/system.js"
|
||||
],
|
||||
"styles": [
|
||||
"css/cde-theme.css"
|
||||
],
|
||||
"packFolders": [
|
||||
{
|
||||
"name": "FR - Aides",
|
||||
@@ -142,7 +146,7 @@
|
||||
"name": "English",
|
||||
"path": "lang/en-cde.json"
|
||||
},
|
||||
{
|
||||
{
|
||||
"lang": "fr",
|
||||
"name": "Français",
|
||||
"path": "lang/fr-cde.json"
|
||||
@@ -155,13 +159,34 @@
|
||||
],
|
||||
"documentTypes": {
|
||||
"Actor": {
|
||||
"character": { "htmlFields": ["description"] },
|
||||
"npc": { "htmlFields": ["description"] },
|
||||
"tinji": { "htmlFields": ["description"] },
|
||||
"loksyu": { "htmlFields": ["description"] }
|
||||
"character": {
|
||||
"htmlFields": [
|
||||
"description"
|
||||
]
|
||||
},
|
||||
"npc": {
|
||||
"htmlFields": [
|
||||
"description"
|
||||
]
|
||||
},
|
||||
"tinji": {
|
||||
"htmlFields": [
|
||||
"description"
|
||||
]
|
||||
},
|
||||
"loksyu": {
|
||||
"htmlFields": [
|
||||
"description"
|
||||
]
|
||||
}
|
||||
},
|
||||
"Item": {
|
||||
"item": { "htmlFields": ["description", "notes"] },
|
||||
"item": {
|
||||
"htmlFields": [
|
||||
"description",
|
||||
"notes"
|
||||
]
|
||||
},
|
||||
"kungfu": {
|
||||
"htmlFields": [
|
||||
"description",
|
||||
@@ -171,8 +196,49 @@
|
||||
"notes"
|
||||
]
|
||||
},
|
||||
"spell": { "htmlFields": ["description", "components", "effects", "examples", "notes"] },
|
||||
"supernatural": { "htmlFields": ["description", "notes"] }
|
||||
"spell": {
|
||||
"htmlFields": [
|
||||
"description",
|
||||
"components",
|
||||
"effects",
|
||||
"examples",
|
||||
"notes"
|
||||
]
|
||||
},
|
||||
"supernatural": {
|
||||
"htmlFields": [
|
||||
"description",
|
||||
"notes",
|
||||
"effects"
|
||||
]
|
||||
},
|
||||
"weapon": {
|
||||
"htmlFields": [
|
||||
"description",
|
||||
"notes"
|
||||
]
|
||||
},
|
||||
"armor": {
|
||||
"htmlFields": [
|
||||
"description",
|
||||
"notes"
|
||||
]
|
||||
},
|
||||
"sanhei": {
|
||||
"htmlFields": [
|
||||
"description",
|
||||
"properties.prop1.description",
|
||||
"properties.prop2.description",
|
||||
"properties.prop3.description",
|
||||
"notes"
|
||||
]
|
||||
},
|
||||
"ingredient": {
|
||||
"htmlFields": [
|
||||
"description",
|
||||
"notes"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"compatibility": {
|
||||
@@ -180,14 +246,16 @@
|
||||
"verified": "13"
|
||||
},
|
||||
"relationships": {
|
||||
"requires": [{
|
||||
"id": "lib-wrapper",
|
||||
"type": "module",
|
||||
"manifest": "https://github.com/ruipin/fvtt-lib-wrapper/releases/download/v1.12.13.1/module.json",
|
||||
"compatibility": {
|
||||
"minimum": "1.12.13.1"
|
||||
"requires": [
|
||||
{
|
||||
"id": "lib-wrapper",
|
||||
"type": "module",
|
||||
"manifest": "https://github.com/ruipin/fvtt-lib-wrapper/releases/download/v1.12.13.1/module.json",
|
||||
"compatibility": {
|
||||
"minimum": "1.12.13.1"
|
||||
}
|
||||
}
|
||||
}]
|
||||
]
|
||||
},
|
||||
"background": "/systems/fvtt-chroniques-de-l-etrange/images/background/accueil.jpg",
|
||||
"grid": {
|
||||
@@ -199,4 +267,4 @@
|
||||
"secondaryTokenAttribute": "threetreasures.heiyin",
|
||||
"manifest": "https://chroniques-etrange-no.fr/download/foundry/system.json",
|
||||
"download": "https://chroniques-etrange-no.fr/download/foundry/release-233.zip"
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
<form class="flexcol cde-sheet cde-actor {{cssClass}}" autocomplete="off">
|
||||
<section class="flexcol cde-sheet cde-actor {{cssClass}}">
|
||||
{{log 'actor-sheet' this}}
|
||||
|
||||
<header class="cde-header cde-actor-header">
|
||||
@@ -20,14 +20,12 @@
|
||||
<div class="cde-field">
|
||||
<label>{{ localize "CDE.CelestialGuardian" }}</label>
|
||||
<select name="system.guardian">
|
||||
{{#select systemData.guardian }}
|
||||
<option value="0">{{ localize "CDE.CelestialGuardian" }}</option>
|
||||
<option value="1">{{ localize "CDE.CelestialGuardian1" }}</option>
|
||||
<option value="2">{{ localize "CDE.CelestialGuardian2" }}</option>
|
||||
<option value="3">{{ localize "CDE.CelestialGuardian3" }}</option>
|
||||
<option value="4">{{ localize "CDE.CelestialGuardian4" }}</option>
|
||||
<option value="5">{{ localize "CDE.CelestialGuardian5" }}</option>
|
||||
{{/select}}
|
||||
<option value="0" {{#if (eq systemData.guardian 0)}}selected{{/if}}>{{ localize "CDE.CelestialGuardian" }}</option>
|
||||
<option value="1" {{#if (eq systemData.guardian 1)}}selected{{/if}}>{{ localize "CDE.CelestialGuardian1" }}</option>
|
||||
<option value="2" {{#if (eq systemData.guardian 2)}}selected{{/if}}>{{ localize "CDE.CelestialGuardian2" }}</option>
|
||||
<option value="3" {{#if (eq systemData.guardian 3)}}selected{{/if}}>{{ localize "CDE.CelestialGuardian3" }}</option>
|
||||
<option value="4" {{#if (eq systemData.guardian 4)}}selected{{/if}}>{{ localize "CDE.CelestialGuardian4" }}</option>
|
||||
<option value="5" {{#if (eq systemData.guardian 5)}}selected{{/if}}>{{ localize "CDE.CelestialGuardian5" }}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
@@ -37,37 +35,40 @@
|
||||
<span>Chroniques de l'Étrange</span>
|
||||
</div>
|
||||
<div class="cde-initiative-card">
|
||||
<label>{{ localize "CDE.Initiative" }}</label>
|
||||
<div class="cde-initiative-header">
|
||||
<i class="fa-solid fa-bolt cde-initiative-icon"></i>
|
||||
<span class="cde-initiative-title">{{ localize "CDE.Initiative" }}</span>
|
||||
</div>
|
||||
<div class="cde-initiative-controls">
|
||||
<img
|
||||
class="click-initiative"
|
||||
<button
|
||||
type="button"
|
||||
class="click-initiative cde-init-btn cde-init-btn--minus"
|
||||
data-libel-id="minus"
|
||||
src="systems/fvtt-chroniques-de-l-etrange/images/kung-fu/kung-fu-2-moins.png"
|
||||
title="{{ localize 'CDE.MinusInitiative' }}"
|
||||
alt="Init -"
|
||||
/>
|
||||
<span class="cde-initiative-value">{{systemData.initiative}}</span>
|
||||
<img
|
||||
class="click-initiative"
|
||||
><i class="fa-solid fa-chevron-down"></i></button>
|
||||
<div class="cde-initiative-values">
|
||||
<span class="cde-initiative-value">{{systemData.initiative}}</span>
|
||||
<span class="cde-anti-initiative-value"><i class="fa-solid fa-ranking-star"></i> {{systemData.anti_initiative}}</span>
|
||||
</div>
|
||||
<button
|
||||
type="button"
|
||||
class="click-initiative cde-init-btn cde-init-btn--roll"
|
||||
data-libel-id="create"
|
||||
src="systems/fvtt-chroniques-de-l-etrange/images/kung-fu/kung-fu-2.png"
|
||||
title="{{ localize 'CDE.DeterminateInitiative' }}"
|
||||
alt="Init set"
|
||||
/>
|
||||
<img
|
||||
class="click-initiative"
|
||||
><i class="fa-solid fa-dice-d10"></i></button>
|
||||
<button
|
||||
type="button"
|
||||
class="click-initiative cde-init-btn cde-init-btn--plus"
|
||||
data-libel-id="plus"
|
||||
src="systems/fvtt-chroniques-de-l-etrange/images/kung-fu/kung-fu-2-plus.png"
|
||||
title="{{ localize 'CDE.PlusInitiative' }}"
|
||||
alt="Init +"
|
||||
/>
|
||||
><i class="fa-solid fa-chevron-up"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<nav class="sheet-tabs tabs cde-tabs" data-group="primary">
|
||||
<nav class="sheet-tabs tabs cde-neon-tabs" data-group="primary">
|
||||
<a class="item" data-action="tab" data-group="primary" data-tab="description">{{ localize "CDE.Description" }}</a>
|
||||
<a class="item" data-action="tab" data-group="primary" data-tab="nghang">{{ localize "CDE.NgHang" }}</a>
|
||||
<a class="item" data-action="tab" data-group="primary" data-tab="skills">{{ localize "CDE.Skills" }}</a>
|
||||
@@ -81,7 +82,7 @@
|
||||
<section class="sheet-body cde-tab-body">
|
||||
<div class="tab" data-group="primary" data-tab="description">
|
||||
<div class="cde-card cde-notes-editor">
|
||||
{{editor descriptionHTML target="system.description" button=true editable=editable engine="prosemirror"}}
|
||||
{{formInput systemFields.description enriched=descriptionHTML value=system.description name="system.description" toggled=true}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -127,4 +128,4 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<form class="flexcol cde-sheet cde-actor {{cssClass}}" autocomplete="off">
|
||||
{{log 'loksyu-sheet' this}}
|
||||
<section class="flexcol cde-sheet cde-actor {{cssClass}}">
|
||||
<header class="cde-header cde-actor-header">
|
||||
<img class="profile-img" src="{{actor.img}}" data-edit="img" title="{{actor.name}}" />
|
||||
<div class="header-fields">
|
||||
@@ -7,67 +6,132 @@
|
||||
<input name="name" type="text" value="{{actor.name}}" placeholder="{{ localize 'CDE.LoksyuName' }}" />
|
||||
</h1>
|
||||
<div class="cde-tag">
|
||||
<span class="cde-pill spell">{{ localize "CDE.Loksyu" }}</span>
|
||||
<span>{{ localize "CDE.ModernJapan" }}</span>
|
||||
<span class="cde-pill spell">{{ localize "CDE.UpperCaseLoksyu" }}</span>
|
||||
<span>Chroniques de l'Étrange</span>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<nav class="sheet-tabs tabs cde-tabs" data-group="primary">
|
||||
<nav class="sheet-tabs tabs cde-neon-tabs" data-group="primary">
|
||||
<a class="item" data-action="tab" data-group="primary" data-tab="loksyu">{{ localize "CDE.Loksyu" }}</a>
|
||||
<a class="item" data-action="tab" data-group="primary" data-tab="description">{{ localize "CDE.Description" }}</a>
|
||||
</nav>
|
||||
|
||||
<section class="sheet-body cde-tab-body">
|
||||
<div class="tab" data-group="primary" data-tab="loksyu">
|
||||
<div class="cde-card loksyu_wrap">
|
||||
<div class="schema">
|
||||
<div class="logo">
|
||||
<img
|
||||
src="systems/fvtt-chroniques-de-l-etrange/images/logo_jeu.png"
|
||||
title="奇闻异事 ● Hong Kong – Les Chroniques de l'Étrange ● R.d′Huissier & C.Lameire ● Antre Monde Éditions"
|
||||
alt="Logo"
|
||||
/>
|
||||
<div class="cde-loksyu-grid">
|
||||
|
||||
<div class="cde-element-card cde-element--wood">
|
||||
<div class="cde-element-header">
|
||||
<img class="cde-element-img" src="systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png" alt="Bois" />
|
||||
<div class="cde-element-titles">
|
||||
<span class="cde-element-name">{{ localize "CDE.Wood" }}</span>
|
||||
<span class="cde-element-qualities">{{ localize "CDE.WoodQualities" }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="wood-yang">
|
||||
<input type="number" name="system.wood.yang.value" value="{{systemData.wood.yang.value}}" title="{{ localize 'CDE.WoodYang' }}" />
|
||||
</div>
|
||||
<div class="wood-yin">
|
||||
<input type="number" name="system.wood.yin.value" value="{{systemData.wood.yin.value}}" title="{{ localize 'CDE.WoodYin' }}" />
|
||||
</div>
|
||||
<div class="metal-yang">
|
||||
<input type="number" name="system.metal.yang.value" value="{{systemData.metal.yang.value}}" title="{{ localize 'CDE.MetalYang' }}" />
|
||||
</div>
|
||||
<div class="fire-yang">
|
||||
<input type="number" name="system.fire.yang.value" value="{{systemData.fire.yang.value}}" title="{{ localize 'CDE.FireYang' }}" />
|
||||
</div>
|
||||
<div class="earth-yang">
|
||||
<input type="number" name="system.earth.yang.value" value="{{systemData.earth.yang.value}}" title="{{ localize 'CDE.EarthYang' }}" />
|
||||
</div>
|
||||
<div class="earth-yin">
|
||||
<input type="number" name="system.earth.yin.value" value="{{systemData.earth.yin.value}}" title="{{ localize 'CDE.EarthYin' }}" />
|
||||
</div>
|
||||
<div class="metal-yin">
|
||||
<input type="number" name="system.metal.yin.value" value="{{systemData.metal.yin.value}}" title="{{ localize 'CDE.MetalYin' }}" />
|
||||
</div>
|
||||
<div class="fire-yin">
|
||||
<input type="number" name="system.fire.yin.value" value="{{systemData.fire.yin.value}}" title="{{ localize 'CDE.FireYin' }}" />
|
||||
</div>
|
||||
<div class="water-yang">
|
||||
<input type="number" name="system.water.yang.value" value="{{systemData.water.yang.value}}" title="{{ localize 'CDE.WaterYang' }}" />
|
||||
</div>
|
||||
<div class="water-yin">
|
||||
<input type="number" name="system.water.yin.value" value="{{systemData.water.yin.value}}" title="{{ localize 'CDE.WaterYin' }}" />
|
||||
<div class="cde-element-values">
|
||||
<div class="cde-element-polarity cde-element-polarity--yang">
|
||||
<span class="cde-polarity-label">○ {{ localize "CDE.Yang" }}</span>
|
||||
<input type="number" min="0" name="system.wood.yang.value" value="{{systemData.wood.yang.value}}" title="{{ localize 'CDE.WoodYang' }}" />
|
||||
</div>
|
||||
<div class="cde-element-polarity cde-element-polarity--yin">
|
||||
<span class="cde-polarity-label">● {{ localize "CDE.Yin" }}</span>
|
||||
<input type="number" min="0" name="system.wood.yin.value" value="{{systemData.wood.yin.value}}" title="{{ localize 'CDE.WoodYin' }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<img class="loksyu-visual" src="systems/fvtt-chroniques-de-l-etrange/images/loksyu_long.png" title="Loksyu" alt="Loksyu" />
|
||||
|
||||
<div class="cde-element-card cde-element--fire">
|
||||
<div class="cde-element-header">
|
||||
<img class="cde-element-img" src="systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png" alt="Feu" />
|
||||
<div class="cde-element-titles">
|
||||
<span class="cde-element-name">{{ localize "CDE.Fire" }}</span>
|
||||
<span class="cde-element-qualities">{{ localize "CDE.FireQualities" }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cde-element-values">
|
||||
<div class="cde-element-polarity cde-element-polarity--yang">
|
||||
<span class="cde-polarity-label">○ {{ localize "CDE.Yang" }}</span>
|
||||
<input type="number" min="0" name="system.fire.yang.value" value="{{systemData.fire.yang.value}}" title="{{ localize 'CDE.FireYang' }}" />
|
||||
</div>
|
||||
<div class="cde-element-polarity cde-element-polarity--yin">
|
||||
<span class="cde-polarity-label">● {{ localize "CDE.Yin" }}</span>
|
||||
<input type="number" min="0" name="system.fire.yin.value" value="{{systemData.fire.yin.value}}" title="{{ localize 'CDE.FireYin' }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cde-element-card cde-element--earth">
|
||||
<div class="cde-element-header">
|
||||
<img class="cde-element-img" src="systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png" alt="Terre" />
|
||||
<div class="cde-element-titles">
|
||||
<span class="cde-element-name">{{ localize "CDE.Earth" }}</span>
|
||||
<span class="cde-element-qualities">{{ localize "CDE.EarthQualities" }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cde-element-values">
|
||||
<div class="cde-element-polarity cde-element-polarity--yang">
|
||||
<span class="cde-polarity-label">○ {{ localize "CDE.Yang" }}</span>
|
||||
<input type="number" min="0" name="system.earth.yang.value" value="{{systemData.earth.yang.value}}" title="{{ localize 'CDE.EarthYang' }}" />
|
||||
</div>
|
||||
<div class="cde-element-polarity cde-element-polarity--yin">
|
||||
<span class="cde-polarity-label">● {{ localize "CDE.Yin" }}</span>
|
||||
<input type="number" min="0" name="system.earth.yin.value" value="{{systemData.earth.yin.value}}" title="{{ localize 'CDE.EarthYin' }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cde-element-card cde-element--metal">
|
||||
<div class="cde-element-header">
|
||||
<img class="cde-element-img" src="systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png" alt="Métal" />
|
||||
<div class="cde-element-titles">
|
||||
<span class="cde-element-name">{{ localize "CDE.Metal" }}</span>
|
||||
<span class="cde-element-qualities">{{ localize "CDE.MetalQualities" }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cde-element-values">
|
||||
<div class="cde-element-polarity cde-element-polarity--yang">
|
||||
<span class="cde-polarity-label">○ {{ localize "CDE.Yang" }}</span>
|
||||
<input type="number" min="0" name="system.metal.yang.value" value="{{systemData.metal.yang.value}}" title="{{ localize 'CDE.MetalYang' }}" />
|
||||
</div>
|
||||
<div class="cde-element-polarity cde-element-polarity--yin">
|
||||
<span class="cde-polarity-label">● {{ localize "CDE.Yin" }}</span>
|
||||
<input type="number" min="0" name="system.metal.yin.value" value="{{systemData.metal.yin.value}}" title="{{ localize 'CDE.MetalYin' }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cde-element-card cde-element--water">
|
||||
<div class="cde-element-header">
|
||||
<img class="cde-element-img" src="systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png" alt="Eau" />
|
||||
<div class="cde-element-titles">
|
||||
<span class="cde-element-name">{{ localize "CDE.Water" }}</span>
|
||||
<span class="cde-element-qualities">{{ localize "CDE.WaterQualities" }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cde-element-values">
|
||||
<div class="cde-element-polarity cde-element-polarity--yang">
|
||||
<span class="cde-polarity-label">○ {{ localize "CDE.Yang" }}</span>
|
||||
<input type="number" min="0" name="system.water.yang.value" value="{{systemData.water.yang.value}}" title="{{ localize 'CDE.WaterYang' }}" />
|
||||
</div>
|
||||
<div class="cde-element-polarity cde-element-polarity--yin">
|
||||
<span class="cde-polarity-label">● {{ localize "CDE.Yin" }}</span>
|
||||
<input type="number" min="0" name="system.water.yin.value" value="{{systemData.water.yin.value}}" title="{{ localize 'CDE.WaterYin' }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="cde-loksyu-visual-row">
|
||||
<img class="loksyu-visual" src="systems/fvtt-chroniques-de-l-etrange/images/loksyu_long.png" title="Loksyu — Roue des Cinq Éléments" alt="Loksyu" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tab" data-group="primary" data-tab="description">
|
||||
<div class="cde-card cde-notes-editor">
|
||||
{{editor descriptionHTML target="system.description" button=true editable=editable engine="prosemirror"}}
|
||||
{{formInput systemFields.description enriched=descriptionHTML value=system.description name="system.description" toggled=true}}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
<form class="flexcol cde-sheet cde-actor {{cssClass}}" autocomplete="off">
|
||||
{{log 'npc-sheet' this}}
|
||||
|
||||
<section class="flexcol cde-sheet cde-actor {{cssClass}}">
|
||||
<header class="cde-header cde-actor-header">
|
||||
<img class="profile-img" src="{{actor.img}}" data-edit="img" title="{{actor.name}}" />
|
||||
<div class="header-fields">
|
||||
@@ -12,19 +10,26 @@
|
||||
<div class="cde-grid two">
|
||||
<div class="cde-field">
|
||||
<label>{{ localize "CDE.TypeOfCreature" }}</label>
|
||||
<input name="system.type" type="text" value="{{systemData.type}}" placeholder="{{ localize 'CDE.TypeOfCreature' }}" />
|
||||
<select name="system.type">
|
||||
<option value="" {{#if (eq systemData.type "")}}selected{{/if}}>—</option>
|
||||
<option value="mortel" {{#if (eq systemData.type "mortel")}}selected{{/if}}>{{ localize "CDE.CreatureMortel" }}</option>
|
||||
<option value="demon" {{#if (eq systemData.type "demon")}}selected{{/if}}>{{ localize "CDE.CreatureDemon" }}</option>
|
||||
<option value="esprit" {{#if (eq systemData.type "esprit")}}selected{{/if}}>{{ localize "CDE.CreatureEsprit" }}</option>
|
||||
<option value="esprit-animal" {{#if (eq systemData.type "esprit-animal")}}selected{{/if}}>{{ localize "CDE.CreatureEspritAnimal" }}</option>
|
||||
<option value="fantome" {{#if (eq systemData.type "fantome")}}selected{{/if}}>{{ localize "CDE.CreatureFantome" }}</option>
|
||||
<option value="jiugwaai" {{#if (eq systemData.type "jiugwaai")}}selected{{/if}}>{{ localize "CDE.CreatureJiugwaai" }}</option>
|
||||
<option value="dieu" {{#if (eq systemData.type "dieu")}}selected{{/if}}>{{ localize "CDE.CreatureDieu" }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="cde-field">
|
||||
<label>{{ localize "CDE.Nuisance" }}</label>
|
||||
<select name="system.nuisance">
|
||||
{{#select systemData.nuisance }}
|
||||
<option value="0">{{ localize "CDE.Figurant" }}</option>
|
||||
<option value="1">{{ localize "CDE.Minion" }}</option>
|
||||
<option value="2">{{ localize "CDE.Adversary" }}</option>
|
||||
<option value="3">{{ localize "CDE.Ally" }}</option>
|
||||
<option value="4">{{ localize "CDE.Boss" }}</option>
|
||||
<option value="5">{{ localize "CDE.Dininity" }}</option>
|
||||
{{/select}}
|
||||
<option value="0" {{#if (eq systemData.nuisance 0)}}selected{{/if}}>{{ localize "CDE.Figurant" }}</option>
|
||||
<option value="1" {{#if (eq systemData.nuisance 1)}}selected{{/if}}>{{ localize "CDE.Minion" }}</option>
|
||||
<option value="2" {{#if (eq systemData.nuisance 2)}}selected{{/if}}>{{ localize "CDE.Adversary" }}</option>
|
||||
<option value="3" {{#if (eq systemData.nuisance 3)}}selected{{/if}}>{{ localize "CDE.Ally" }}</option>
|
||||
<option value="4" {{#if (eq systemData.nuisance 4)}}selected{{/if}}>{{ localize "CDE.Boss" }}</option>
|
||||
<option value="5" {{#if (eq systemData.nuisance 5)}}selected{{/if}}>{{ localize "CDE.Divinity" }}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
@@ -32,40 +37,41 @@
|
||||
<div class="cde-field">
|
||||
<label>{{ localize "CDE.Threat" }}</label>
|
||||
<select name="system.threat">
|
||||
{{#select systemData.threat }}
|
||||
<option value="0">{{ localize "CDE.Profane" }}</option>
|
||||
<option value="1">{{ localize "CDE.Apprentice" }}</option>
|
||||
<option value="2">{{ localize "CDE.Initiate" }}</option>
|
||||
<option value="3">{{ localize "CDE.Accomplished" }}</option>
|
||||
<option value="4">{{ localize "CDE.Reknowned" }}</option>
|
||||
{{/select}}
|
||||
<option value="0" {{#if (eq systemData.threat 0)}}selected{{/if}}>{{ localize "CDE.Profane" }}</option>
|
||||
<option value="1" {{#if (eq systemData.threat 1)}}selected{{/if}}>{{ localize "CDE.Apprentice" }}</option>
|
||||
<option value="2" {{#if (eq systemData.threat 2)}}selected{{/if}}>{{ localize "CDE.Initiate" }}</option>
|
||||
<option value="3" {{#if (eq systemData.threat 3)}}selected{{/if}}>{{ localize "CDE.Accomplished" }}</option>
|
||||
<option value="4" {{#if (eq systemData.threat 4)}}selected{{/if}}>{{ localize "CDE.Renowned" }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="cde-initiative-card">
|
||||
<label>{{ localize "CDE.Initiative" }}</label>
|
||||
<div class="cde-initiative-header">
|
||||
<i class="fa-solid fa-bolt cde-initiative-icon"></i>
|
||||
<span class="cde-initiative-title">{{ localize "CDE.Initiative" }}</span>
|
||||
</div>
|
||||
<div class="cde-initiative-controls">
|
||||
<img
|
||||
class="click-initiative-npc"
|
||||
<button
|
||||
type="button"
|
||||
class="click-initiative-npc cde-init-btn cde-init-btn--minus"
|
||||
data-libel-id="minus"
|
||||
src="systems/fvtt-chroniques-de-l-etrange/images/kung-fu/kung-fu-2-moins.png"
|
||||
title="{{ localize 'CDE.MinusInitiative' }}"
|
||||
alt="Init -"
|
||||
/>
|
||||
<span class="cde-initiative-value">{{systemData.initiative}}</span>
|
||||
<img
|
||||
class="click-initiative-npc"
|
||||
><i class="fa-solid fa-chevron-down"></i></button>
|
||||
<div class="cde-initiative-values">
|
||||
<span class="cde-initiative-value">{{systemData.initiative}}</span>
|
||||
<span class="cde-anti-initiative-value"><i class="fa-solid fa-ranking-star"></i> {{systemData.anti_initiative}}</span>
|
||||
</div>
|
||||
<button
|
||||
type="button"
|
||||
class="click-initiative-npc cde-init-btn cde-init-btn--roll"
|
||||
data-libel-id="create"
|
||||
src="systems/fvtt-chroniques-de-l-etrange/images/kung-fu/kung-fu-2.png"
|
||||
title="{{ localize 'CDE.DeterminateNPCInitiative' }}"
|
||||
alt="Init set"
|
||||
/>
|
||||
<img
|
||||
class="click-initiative-npc"
|
||||
><i class="fa-solid fa-dice-d10"></i></button>
|
||||
<button
|
||||
type="button"
|
||||
class="click-initiative-npc cde-init-btn cde-init-btn--plus"
|
||||
data-libel-id="plus"
|
||||
src="systems/fvtt-chroniques-de-l-etrange/images/kung-fu/kung-fu-2-plus.png"
|
||||
title="{{ localize 'CDE.PlusInitiative' }}"
|
||||
alt="Init +"
|
||||
/>
|
||||
><i class="fa-solid fa-chevron-up"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -76,7 +82,7 @@
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<nav class="sheet-tabs tabs cde-tabs" data-group="primary">
|
||||
<nav class="sheet-tabs tabs cde-neon-tabs" data-group="primary">
|
||||
<a class="item" data-action="tab" data-group="primary" data-tab="description">{{ localize "CDE.Description" }}</a>
|
||||
<a class="item" data-action="tab" data-group="primary" data-tab="aptitudes">{{ localize "CDE.Aptitudes" }}</a>
|
||||
<a class="item" data-action="tab" data-group="primary" data-tab="supernaturals">{{ localize "CDE.SuperNatural" }}</a>
|
||||
@@ -88,141 +94,91 @@
|
||||
<section class="sheet-body cde-tab-body">
|
||||
<div class="tab" data-group="primary" data-tab="description">
|
||||
<div class="cde-card cde-notes-editor">
|
||||
{{editor descriptionHTML target="system.description" button=true editable=editable engine="prosemirror"}}
|
||||
{{formInput systemFields.description enriched=descriptionHTML value=system.description name="system.description" toggled=true}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tab" data-group="primary" data-tab="aptitudes">
|
||||
<div class="cde-card cde-data-table cde-aptitudes">
|
||||
<div class="cde-card">
|
||||
<div class="tab-sous-titre">{{ localize "CDE.Aptitudes" }}</div>
|
||||
<table>
|
||||
<table class="cde-skills-table cde-aptitudes-table">
|
||||
<tr>
|
||||
<td class="label"><b> {{ localize "CDE.Physical" }}</b></td>
|
||||
<td class="image">
|
||||
<img src="systems/fvtt-chroniques-de-l-etrange/images/cercle.png" title="Cercle" alt="Cercle" />
|
||||
<div class="stick"> </div>
|
||||
<input class="input phys-apt" type="number" placeholder="0" name="system.aptitudes.physical.value" value="{{systemData.aptitudes.physical.value}}" />
|
||||
<td class="cde-skill-label"><b>{{ localize "CDE.Physical" }}</b></td>
|
||||
<td class="cde-val-cell">
|
||||
<input class="cde-circle-input" type="number" min="0" placeholder="0" name="system.aptitudes.physical.value" value="{{systemData.aptitudes.physical.value}}" />
|
||||
</td>
|
||||
<td class="specialities">
|
||||
<input
|
||||
class="input"
|
||||
type="text"
|
||||
placeholder="{{ localize 'CDE.Specialities' }}"
|
||||
name="system.aptitudes.physical.speciality"
|
||||
value="{{systemData.aptitudes.physical.speciality}}"
|
||||
/>
|
||||
<td class="cde-spec-cell">
|
||||
<input type="text" placeholder="{{ localize 'CDE.Specialities' }}…" name="system.aptitudes.physical.speciality" value="{{systemData.aptitudes.physical.speciality}}" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="label"><b> {{ localize "CDE.Martial" }}</b></td>
|
||||
<td class="image">
|
||||
<img src="systems/fvtt-chroniques-de-l-etrange/images/cercle.png" title="Cercle" alt="Cercle" />
|
||||
<div class="stick"> </div>
|
||||
<input class="input" type="number" placeholder="0" name="system.aptitudes.martial.value" value="{{systemData.aptitudes.martial.value}}" />
|
||||
<td class="cde-skill-label"><b>{{ localize "CDE.Martial" }}</b></td>
|
||||
<td class="cde-val-cell">
|
||||
<input class="cde-circle-input" type="number" min="0" placeholder="0" name="system.aptitudes.martial.value" value="{{systemData.aptitudes.martial.value}}" />
|
||||
</td>
|
||||
<td class="specialities">
|
||||
<input
|
||||
class="input"
|
||||
type="text"
|
||||
placeholder="{{ localize 'CDE.Specialities' }}"
|
||||
name="system.aptitudes.martial.speciality"
|
||||
value="{{systemData.aptitudes.martial.speciality}}"
|
||||
/>
|
||||
<td class="cde-spec-cell">
|
||||
<input type="text" placeholder="{{ localize 'CDE.Specialities' }}…" name="system.aptitudes.martial.speciality" value="{{systemData.aptitudes.martial.speciality}}" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="label"><b> {{ localize "CDE.Mental" }}</b></td>
|
||||
<td class="image">
|
||||
<img src="systems/fvtt-chroniques-de-l-etrange/images/cercle.png" title="Cercle" alt="Cercle" />
|
||||
<div class="stick"> </div>
|
||||
<input class="input" type="number" placeholder="0" name="system.aptitudes.mental.value" value="{{systemData.aptitudes.mental.value}}" />
|
||||
<td class="cde-skill-label"><b>{{ localize "CDE.Mental" }}</b></td>
|
||||
<td class="cde-val-cell">
|
||||
<input class="cde-circle-input" type="number" min="0" placeholder="0" name="system.aptitudes.mental.value" value="{{systemData.aptitudes.mental.value}}" />
|
||||
</td>
|
||||
<td class="specialities">
|
||||
<input
|
||||
class="input"
|
||||
type="text"
|
||||
placeholder="{{ localize 'CDE.Specialities' }}"
|
||||
name="system.aptitudes.mental.speciality"
|
||||
value="{{systemData.aptitudes.mental.speciality}}"
|
||||
/>
|
||||
<td class="cde-spec-cell">
|
||||
<input type="text" placeholder="{{ localize 'CDE.Specialities' }}…" name="system.aptitudes.mental.speciality" value="{{systemData.aptitudes.mental.speciality}}" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="label"><b> {{ localize "CDE.Social" }}</b></td>
|
||||
<td class="image">
|
||||
<img src="systems/fvtt-chroniques-de-l-etrange/images/cercle.png" title="Cercle" alt="Cercle" />
|
||||
<div class="stick"> </div>
|
||||
<input class="input" type="number" placeholder="0" name="system.aptitudes.social.value" value="{{systemData.aptitudes.social.value}}" />
|
||||
<td class="cde-skill-label"><b>{{ localize "CDE.Social" }}</b></td>
|
||||
<td class="cde-val-cell">
|
||||
<input class="cde-circle-input" type="number" min="0" placeholder="0" name="system.aptitudes.social.value" value="{{systemData.aptitudes.social.value}}" />
|
||||
</td>
|
||||
<td class="specialities">
|
||||
<input
|
||||
class="input"
|
||||
type="text"
|
||||
placeholder="{{ localize 'CDE.Specialities' }}"
|
||||
name="system.aptitudes.social.speciality"
|
||||
value="{{systemData.aptitudes.social.speciality}}"
|
||||
/>
|
||||
<td class="cde-spec-cell">
|
||||
<input type="text" placeholder="{{ localize 'CDE.Specialities' }}…" name="system.aptitudes.social.speciality" value="{{systemData.aptitudes.social.speciality}}" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="label"><b> {{ localize "CDE.Spiritual" }}</b></td>
|
||||
<td class="image">
|
||||
<img src="systems/fvtt-chroniques-de-l-etrange/images/cercle.png" title="Cercle" alt="Cercle" />
|
||||
<div class="stick"> </div>
|
||||
<input class="input spir-apt" type="number" placeholder="0" name="system.aptitudes.spiritual.value" value="{{systemData.aptitudes.spiritual.value}}" />
|
||||
<td class="cde-skill-label"><b>{{ localize "CDE.Spiritual" }}</b></td>
|
||||
<td class="cde-val-cell">
|
||||
<input class="cde-circle-input" type="number" min="0" placeholder="0" name="system.aptitudes.spiritual.value" value="{{systemData.aptitudes.spiritual.value}}" />
|
||||
</td>
|
||||
<td class="specialities">
|
||||
<input
|
||||
class="input"
|
||||
type="text"
|
||||
placeholder="{{ localize 'CDE.Specialities' }}"
|
||||
name="system.aptitudes.spiritual.speciality"
|
||||
value="{{systemData.aptitudes.spiritual.speciality}}"
|
||||
/>
|
||||
<td class="cde-spec-cell">
|
||||
<input type="text" placeholder="{{ localize 'CDE.Specialities' }}…" name="system.aptitudes.spiritual.speciality" value="{{systemData.aptitudes.spiritual.speciality}}" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table>
|
||||
<tr>
|
||||
<td class="label"><b> {{ localize "CDE.Vitality" }}</b></td>
|
||||
<td class="image">
|
||||
<img src="systems/fvtt-chroniques-de-l-etrange/images/cercle.png" title="Cercle" alt="Cercle" />
|
||||
<div class="stick"> </div>
|
||||
<input class="input" type="number" placeholder="0" name="system.vitality.value" value="{{systemData.vitality.value}}" />
|
||||
</td>
|
||||
<td class="image2">
|
||||
<img src="systems/fvtt-chroniques-de-l-etrange/images/cercle.png" title="Cercle" alt="Cercle" />
|
||||
<div class="stick"> </div>
|
||||
<div>-{{systemData.vitality.calcul}}-</div>
|
||||
</td>
|
||||
<td class="specialities">
|
||||
<input class="input" type="text" placeholder="{{ localize 'CDE.Notes' }}" name="system.vitality.note" value="{{systemData.vitality.note}}" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="label"><b> {{ localize "CDE.Hei" }}</b></td>
|
||||
<td class="image">
|
||||
<img src="systems/fvtt-chroniques-de-l-etrange/images/cercle.png" title="Cercle" alt="Cercle" />
|
||||
<div class="stick"> </div>
|
||||
<input class="input" type="number" placeholder="0" name="system.hei.value" value="{{systemData.hei.value}}" />
|
||||
</td>
|
||||
<td class="image2">
|
||||
<img src="systems/fvtt-chroniques-de-l-etrange/images/cercle.png" title="Cercle" alt="Cercle" />
|
||||
<div class="stick"> </div>
|
||||
<div>-{{systemData.hei.calcul}}-</div>
|
||||
</td>
|
||||
<td class="specialities">
|
||||
<input class="input" type="text" placeholder="{{ localize 'CDE.Notes' }}" name="system.hei.note" value="{{systemData.hei.note}}" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="dragon">
|
||||
<img
|
||||
class="logo"
|
||||
src="systems/fvtt-chroniques-de-l-etrange/images/logo_dore.png"
|
||||
title="奇闻异事 ● Hong Kong – Les Chroniques de l'Étrange ● R.d′Huissier & C.Lameire ● Antre Monde Éditions"
|
||||
alt="Logo"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="cde-card cde-npc-tracks">
|
||||
<div class="tab-sous-titre">{{ localize "CDE.Vitality" }} & {{ localize "CDE.Hei" }}</div>
|
||||
<div class="cde-track-row">
|
||||
<div class="cde-track-label">
|
||||
<i class="fa-solid fa-heart-pulse"></i>
|
||||
<span>{{ localize "CDE.Vitality" }}</span>
|
||||
</div>
|
||||
<div class="cde-track-value">
|
||||
<input class="cde-circle-input" type="number" min="0" placeholder="0" name="system.vitality.value" value="{{systemData.vitality.value}}" />
|
||||
<span class="cde-track-sep">/</span>
|
||||
<span class="cde-track-max">{{systemData.vitality.calcul}}</span>
|
||||
</div>
|
||||
<div class="cde-track-note">
|
||||
<input type="text" placeholder="{{ localize 'CDE.Notes' }}…" name="system.vitality.note" value="{{systemData.vitality.note}}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="cde-track-row">
|
||||
<div class="cde-track-label">
|
||||
<i class="fa-solid fa-yin-yang"></i>
|
||||
<span>{{ localize "CDE.HEI2" }}</span>
|
||||
</div>
|
||||
<div class="cde-track-value">
|
||||
<input class="cde-circle-input" type="number" min="0" placeholder="0" name="system.hei.value" value="{{systemData.hei.value}}" />
|
||||
<span class="cde-track-sep">/</span>
|
||||
<span class="cde-track-max">{{systemData.hei.calcul}}</span>
|
||||
</div>
|
||||
<div class="cde-track-note">
|
||||
<input type="text" placeholder="{{ localize 'CDE.Notes' }}…" name="system.hei.note" value="{{systemData.hei.note}}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -251,4 +207,4 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<form class="flexcol cde-sheet cde-actor {{cssClass}}" autocomplete="off">
|
||||
{{log 'tinji-sheet' this}}
|
||||
<section class="flexcol cde-sheet cde-actor {{cssClass}}">
|
||||
<header class="cde-header cde-actor-header">
|
||||
<img class="profile-img" src="{{actor.img}}" data-edit="img" title="{{actor.name}}" />
|
||||
<div class="header-fields">
|
||||
@@ -7,40 +6,43 @@
|
||||
<input name="name" type="text" value="{{actor.name}}" placeholder="{{ localize 'CDE.TinJiName' }}" />
|
||||
</h1>
|
||||
<div class="cde-tag">
|
||||
<span class="cde-pill supernatural">{{ localize "CDE.TinJi2" }}</span>
|
||||
<span>{{ localize "CDE.ModernJapan" }}</span>
|
||||
<span class="cde-pill supernatural">{{ localize "CDE.UpperCaseTinJi" }}</span>
|
||||
<span>Chroniques de l'Étrange</span>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<nav class="sheet-tabs tabs cde-tabs" data-group="primary">
|
||||
<nav class="sheet-tabs tabs cde-neon-tabs" data-group="primary">
|
||||
<a class="item" data-action="tab" data-group="primary" data-tab="tinji">{{ localize "CDE.TinJi2" }}</a>
|
||||
<a class="item" data-action="tab" data-group="primary" data-tab="description">{{ localize "CDE.Description" }}</a>
|
||||
</nav>
|
||||
|
||||
<section class="sheet-body cde-tab-body">
|
||||
<div class="tab" data-group="primary" data-tab="tinji">
|
||||
<div class="cde-card cde-centered-card tinji_wrap">
|
||||
<div class="tinji schema">
|
||||
<div class="tinji-value">
|
||||
<label>{{ localize "CDE.TinJi2" }}</label>
|
||||
<input type="number" name="system.value" value="{{systemData.value}}" title="{{ localize 'CDE.TinJi2' }}" />
|
||||
<div class="cde-tinji-layout">
|
||||
<div class="cde-tinji-main">
|
||||
<div class="cde-tinji-chinese">天機</div>
|
||||
<div class="cde-tinji-subtitle">{{ localize "CDE.UpperCaseTinJi" }}</div>
|
||||
<div class="cde-tinji-value-wrapper">
|
||||
<input
|
||||
class="cde-tinji-input"
|
||||
type="number"
|
||||
min="0"
|
||||
name="system.value"
|
||||
value="{{systemData.value}}"
|
||||
title="{{ localize 'CDE.TinJi2' }}"
|
||||
/>
|
||||
</div>
|
||||
<img
|
||||
class="logo"
|
||||
src="systems/fvtt-chroniques-de-l-etrange/images/logo_jeu.png"
|
||||
title="奇闻异事 ● Hong Kong – Les Chroniques de l'Étrange ● R.d′Huissier & C.Lameire ● Antre Monde Éditions"
|
||||
alt="Logo"
|
||||
/>
|
||||
<div class="cde-tinji-hint">{{ localize "CDE.AuspiciousDice" }}</div>
|
||||
</div>
|
||||
<img class="tinji-visual" src="systems/fvtt-chroniques-de-l-etrange/images/tinji.webp" title="Tin Ji" alt="Tin Ji" />
|
||||
<img class="tinji-visual" src="systems/fvtt-chroniques-de-l-etrange/images/tinji.webp" title="Tin Ji — 天機" alt="Tin Ji" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tab" data-group="primary" data-tab="description">
|
||||
<div class="cde-card cde-notes-editor">
|
||||
{{editor descriptionHTML target="system.description" button=true editable=editable engine="prosemirror"}}
|
||||
{{formInput systemFields.description enriched=descriptionHTML value=system.description name="system.description" toggled=true}}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
@@ -1,8 +1,100 @@
|
||||
{{! Weapons }}
|
||||
{{#if weapons.length}}
|
||||
<p class="cde-item-group-label">{{ localize "CDE.Weapons" }}</p>
|
||||
{{/if}}
|
||||
<ol class="item-list">
|
||||
{{#each weapons as |item id|}}
|
||||
<li class="item flexrow" data-item-id="{{item._id}}">
|
||||
<img src="{{item.img}}" title="{{item.name}}" width="24" height="24" />
|
||||
<h4 class="item-name">{{item.name}}</h4>
|
||||
<span class="cde-badge weapon">{{ localize "CDE.WeaponType" }}</span>
|
||||
<span class="cde-item-stat cde-item-damage">{{item.system.damageBase}}</span>
|
||||
<div class="item-controls">
|
||||
<a class="item-control cde-roll-trigger cde-weapon-roll-btn" title="{{ localize 'CDE.WeaponRoll' }}" data-libel-id="{{item._id}}-itemweapon"><i class="fas fa-dice-d10"></i></a>
|
||||
<a class="item-control" title="{{ localize 'CDE.ItemEdit' }}" data-action="edit"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control" title="{{ localize 'CDE.ItemDelete' }}" data-action="delete"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ol>
|
||||
<p>
|
||||
<a class="item-control" title="{{ localize 'CDE.WeaponCreate' }}" data-action="create" data-type="weapon"><i class="fas fa-plus"></i> {{ localize "CDE.WeaponCreate" }}</a>
|
||||
</p>
|
||||
|
||||
{{! Armors }}
|
||||
{{#if armors.length}}
|
||||
<p class="cde-item-group-label">{{ localize "CDE.Armors" }}</p>
|
||||
{{/if}}
|
||||
<ol class="item-list">
|
||||
{{#each armors as |item id|}}
|
||||
<li class="item flexrow" data-item-id="{{item._id}}">
|
||||
<img src="{{item.img}}" title="{{item.name}}" width="24" height="24" />
|
||||
<h4 class="item-name">{{item.name}}</h4>
|
||||
<span class="cde-badge armor">{{ localize "CDE.ArmorType" }}</span>
|
||||
{{#if item.system.protection}}<span class="cde-item-stat">{{item.system.protection}}</span>{{/if}}
|
||||
<div class="item-controls">
|
||||
<a class="item-control" title="{{ localize 'CDE.ItemEdit' }}" data-action="edit"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control" title="{{ localize 'CDE.ItemDelete' }}" data-action="delete"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ol>
|
||||
<p>
|
||||
<a class="item-control" title="{{ localize 'CDE.ArmorCreate' }}" data-action="create" data-type="armor"><i class="fas fa-plus"></i> {{ localize "CDE.ArmorCreate" }}</a>
|
||||
</p>
|
||||
|
||||
{{! Sanhei }}
|
||||
{{#if sanheis.length}}
|
||||
<p class="cde-item-group-label">{{ localize "CDE.Sanheis" }}</p>
|
||||
{{/if}}
|
||||
<ol class="item-list">
|
||||
{{#each sanheis as |item id|}}
|
||||
<li class="item flexrow" data-item-id="{{item._id}}">
|
||||
<img src="{{item.img}}" title="{{item.name}}" width="24" height="24" />
|
||||
<h4 class="item-name">{{item.name}}</h4>
|
||||
<span class="cde-badge sanhei">{{ localize "CDE.SanheiType" }}</span>
|
||||
<div class="item-controls">
|
||||
<a class="item-control" title="{{ localize 'CDE.ItemEdit' }}" data-action="edit"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control" title="{{ localize 'CDE.ItemDelete' }}" data-action="delete"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ol>
|
||||
<p>
|
||||
<a class="item-control" title="{{ localize 'CDE.SanheiCreate' }}" data-action="create" data-type="sanhei"><i class="fas fa-plus"></i> {{ localize "CDE.SanheiCreate" }}</a>
|
||||
</p>
|
||||
|
||||
{{! Ingredients }}
|
||||
{{#if ingredients.length}}
|
||||
<p class="cde-item-group-label">{{ localize "CDE.Ingredients" }}</p>
|
||||
{{/if}}
|
||||
<ol class="item-list">
|
||||
{{#each ingredients as |item id|}}
|
||||
<li class="item flexrow" data-item-id="{{item._id}}">
|
||||
<img src="{{item.img}}" title="{{item.name}}" width="24" height="24" />
|
||||
<h4 class="item-name">{{item.name}}</h4>
|
||||
<span class="cde-badge ingredient">{{ localize "CDE.IngredientType" }}</span>
|
||||
<div class="item-controls">
|
||||
<a class="item-control" title="{{ localize 'CDE.ItemEdit' }}" data-action="edit"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control" title="{{ localize 'CDE.ItemDelete' }}" data-action="delete"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ol>
|
||||
<p>
|
||||
<a class="item-control" title="{{ localize 'CDE.IngredientCreate' }}" data-action="create" data-type="ingredient"><i class="fas fa-plus"></i> {{ localize "CDE.IngredientCreate" }}</a>
|
||||
</p>
|
||||
|
||||
{{! Generic items }}
|
||||
{{#if equipments.length}}
|
||||
<p class="cde-item-group-label">{{ localize "CDE.Items" }}</p>
|
||||
{{/if}}
|
||||
<ol class="item-list">
|
||||
{{#each equipments as |item id|}}
|
||||
<li class="item flexrow" data-item-id="{{item._id}}">
|
||||
<img src="{{item.img}}" title="{{item.name}}" width="24" height="24" />
|
||||
<h4 class="item-name">{{item.name}}</h4>
|
||||
<span class="cde-badge item">{{ localize "CDE.ItemType" }}</span>
|
||||
<div class="item-controls">
|
||||
<a class="item-control" title="{{ localize 'CDE.ItemEdit' }}" data-action="edit"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control" title="{{ localize 'CDE.ItemDelete' }}" data-action="delete"><i class="fas fa-trash"></i></a>
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
<img src="{{item.img}}" title="{{item.name}}" width="24" height="24" />
|
||||
<h4 class="item-name">{{item.name}}</h4>
|
||||
<div class="item-controls">
|
||||
<a class="item-control cde-roll-trigger" title="{{ localize 'CDE.Roll' }}" data-libel-id="{{item._id}}-itemkungfu"><i class="fas fa-dice"></i></a>
|
||||
<a class="item-control" title="{{ localize 'CDE.KFEdit' }}" data-action="edit"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control" title="{{ localize 'CDE.KFDelete' }}" data-action="delete"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
|
||||
@@ -1,66 +1,65 @@
|
||||
<div class="tab-sous-titre">{{ localize "CDE.Components2" }}</div>
|
||||
<table>
|
||||
<table class="cde-magics-table">
|
||||
<tr>
|
||||
<td style="width: 2.2%" class="image"><img src="systems/fvtt-chroniques-de-l-etrange/images/d10-1.png" alt="Die" /></td>
|
||||
<td class="value" style="width: 25%">
|
||||
<td class="image"><img src="systems/fvtt-chroniques-de-l-etrange/images/d10-1.png" alt="Die" /></td>
|
||||
<td class="value">
|
||||
<input class="input" type="text" placeholder="{{ localize 'CDE.Component' }}1" name="system.component.one.value" value="{{systemData.component.one.value}}" />
|
||||
</td>
|
||||
<td style="width: 2.2%"> </td>
|
||||
<td style="width: 2%" class="image"><img src="systems/fvtt-chroniques-de-l-etrange/images/d10-6.png" alt="Die" /></td>
|
||||
<td class="value" style="width: 25%" ;>
|
||||
<td class="td-spacer"> </td>
|
||||
<td class="image td-die"><img src="systems/fvtt-chroniques-de-l-etrange/images/d10-6.png" alt="Die" /></td>
|
||||
<td class="value">
|
||||
<input class="input" type="text" placeholder="{{ localize 'CDE.Component' }}6" name="system.component.six.value" value="{{systemData.component.six.value}}" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 2.2%" class="image"><img src="systems/fvtt-chroniques-de-l-etrange/images/d10-2.png" alt="Die" /></td>
|
||||
<td class="value" style="width: 25%">
|
||||
<td class="image"><img src="systems/fvtt-chroniques-de-l-etrange/images/d10-2.png" alt="Die" /></td>
|
||||
<td class="value">
|
||||
<input class="input" type="text" placeholder="{{ localize 'CDE.Component' }}2" name="system.component.two.value" value="{{systemData.component.two.value}}" />
|
||||
</td>
|
||||
<td style="width: 2.2%"> </td>
|
||||
<td style="width: 2%" class="image"><img src="systems/fvtt-chroniques-de-l-etrange/images/d10-7.png" alt="Die" /></td>
|
||||
<td class="value" style="width: 25%" ;>
|
||||
<td class="td-spacer"> </td>
|
||||
<td class="image td-die"><img src="systems/fvtt-chroniques-de-l-etrange/images/d10-7.png" alt="Die" /></td>
|
||||
<td class="value">
|
||||
<input class="input" type="text" placeholder="{{ localize 'CDE.Component' }}7" name="system.component.seven.value" value="{{systemData.component.seven.value}}" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 2.2%" class="image"><img src="systems/fvtt-chroniques-de-l-etrange/images/d10-3.png" alt="Die" /></td>
|
||||
<td class="value" style="width: 25%">
|
||||
<td class="image"><img src="systems/fvtt-chroniques-de-l-etrange/images/d10-3.png" alt="Die" /></td>
|
||||
<td class="value">
|
||||
<input class="input" type="text" placeholder="{{ localize 'CDE.Component' }}3" name="system.component.three.value" value="{{systemData.component.three.value}}" />
|
||||
</td>
|
||||
<td style="width: 2.2%"> </td>
|
||||
<td style="width: 2%" class="image"><img src="systems/fvtt-chroniques-de-l-etrange/images/d10-8.png" alt="Die" /></td>
|
||||
<td class="value" style="width: 25%" ;>
|
||||
<td class="td-spacer"> </td>
|
||||
<td class="image td-die"><img src="systems/fvtt-chroniques-de-l-etrange/images/d10-8.png" alt="Die" /></td>
|
||||
<td class="value">
|
||||
<input class="input" type="text" placeholder="{{ localize 'CDE.Component' }}8" name="system.component.eight.value" value="{{systemData.component.eight.value}}" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 2.2%" class="image"><img src="systems/fvtt-chroniques-de-l-etrange/images/d10-4.png" alt="Die" /></td>
|
||||
<td class="value" style="width: 25%">
|
||||
<td class="image"><img src="systems/fvtt-chroniques-de-l-etrange/images/d10-4.png" alt="Die" /></td>
|
||||
<td class="value">
|
||||
<input class="input" type="text" placeholder="{{ localize 'CDE.Component' }}4" name="system.component.four.value" value="{{systemData.component.four.value}}" />
|
||||
</td>
|
||||
<td style="width: 2.2%"> </td>
|
||||
<td style="width: 2%" class="image"><img src="systems/fvtt-chroniques-de-l-etrange/images/d10-9.png" alt="Die" /></td>
|
||||
<td class="value" style="width: 25%" ;>
|
||||
<td class="td-spacer"> </td>
|
||||
<td class="image td-die"><img src="systems/fvtt-chroniques-de-l-etrange/images/d10-9.png" alt="Die" /></td>
|
||||
<td class="value">
|
||||
<input class="input" type="text" placeholder="{{ localize 'CDE.Component' }}9" name="system.component.nine.value" value="{{systemData.component.nine.value}}" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 2.2%" class="image"><img src="systems/fvtt-chroniques-de-l-etrange/images/d10-5.png" alt="Die" /></td>
|
||||
<td class="value" style="width: 25%">
|
||||
<td class="image"><img src="systems/fvtt-chroniques-de-l-etrange/images/d10-5.png" alt="Die" /></td>
|
||||
<td class="value">
|
||||
<input class="input" type="text" placeholder="{{ localize 'CDE.Component' }}5" name="system.component.five.value" value="{{systemData.component.five.value}}" />
|
||||
</td>
|
||||
<td style="width: 2.2%"> </td>
|
||||
<td style="width: 2%" class="image"><img src="systems/fvtt-chroniques-de-l-etrange/images/d10-0.png" alt="Die" /></td>
|
||||
<td class="value" style="width: 25%" ;>
|
||||
<td class="td-spacer"> </td>
|
||||
<td class="image td-die"><img src="systems/fvtt-chroniques-de-l-etrange/images/d10-0.png" alt="Die" /></td>
|
||||
<td class="value">
|
||||
<input class="input" type="text" placeholder="{{ localize 'CDE.Component' }}0" name="system.component.zero.value" value="{{systemData.component.zero.value}}" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div class="chancethrow" style="display: flex; justify-content: center; align-items: center" ;>
|
||||
<div class="chancethrow">
|
||||
<img
|
||||
style="width: 27px"
|
||||
class="click"
|
||||
class="click img-die-sm"
|
||||
data-libel-id="randomize-randomize"
|
||||
src="systems/fvtt-chroniques-de-l-etrange/images/d10-10.png"
|
||||
title="{{ localize 'CDE.Die' }}{{ localize 'CDE.ChanceThrow' }}"
|
||||
|
||||
@@ -1,87 +1,79 @@
|
||||
<div class="schema">
|
||||
<img
|
||||
class="logo"
|
||||
src="systems/fvtt-chroniques-de-l-etrange/images/logo_jeu.png"
|
||||
title="奇闻异事 ● Hong Kong – Les Chroniques de l'Étrange ● R.d′Huissier & C.Lameire ● Antre Monde Éditions"
|
||||
alt="Logo"
|
||||
/>
|
||||
|
||||
<div class="clickondie nghangpart1">
|
||||
<div class="fire">
|
||||
<img
|
||||
class="click2"
|
||||
data-libel-id="fire-aspect"
|
||||
src="systems/fvtt-chroniques-de-l-etrange/images/d10-transparent.png"
|
||||
title="{{ localize 'CDE.Die' }}{{ localize 'CDE.Fire' }}"
|
||||
alt="Die"
|
||||
onmouseout="this.src='/systems/fvtt-chroniques-de-l-etrange/images/d10-transparent.png';"
|
||||
;
|
||||
onmouseover="this.src='/systems/fvtt-chroniques-de-l-etrange/images/d10-10.png';"
|
||||
/>
|
||||
</div>
|
||||
<input type="number" name="system.aspect.fire.value" value="{{systemData.aspect.fire.value}}" title="{{ localize 'CDE.Fire' }}{{ localize 'CDE.FireQualities' }}" />
|
||||
</div>
|
||||
<div class="clickondie nghangpart2">
|
||||
<div class="wood">
|
||||
<img
|
||||
class="click2"
|
||||
data-libel-id="wood-aspect"
|
||||
src="systems/fvtt-chroniques-de-l-etrange/images/d10-transparent.png"
|
||||
title="{{ localize 'CDE.Die' }}{{ localize 'CDE.Wood' }}"
|
||||
alt="Die"
|
||||
onmouseout="this.src='/systems/fvtt-chroniques-de-l-etrange/images/d10-transparent.png';"
|
||||
;
|
||||
onmouseover="this.src='/systems/fvtt-chroniques-de-l-etrange/images/d10-10.png';"
|
||||
/>
|
||||
</div>
|
||||
<input type="number" name="system.aspect.wood.value" value="{{systemData.aspect.wood.value}}" title="{{ localize 'CDE.Wood' }}{{ localize 'CDE.WoodQualities' }}" />
|
||||
</div>
|
||||
<div class="nghangpart3"></div>
|
||||
<div class="clickondie nghangpart4">
|
||||
<div class="earth">
|
||||
<img
|
||||
class="click2"
|
||||
data-libel-id="earth-aspect"
|
||||
src="systems/fvtt-chroniques-de-l-etrange/images/d10-transparent.png"
|
||||
title="{{ localize 'CDE.Die' }}{{ localize 'CDE.Earth' }}"
|
||||
alt="Die"
|
||||
onmouseout="this.src='/systems/fvtt-chroniques-de-l-etrange/images/d10-transparent.png';"
|
||||
;
|
||||
onmouseover="this.src='/systems/fvtt-chroniques-de-l-etrange/images/d10-10.png';"
|
||||
/>
|
||||
</div>
|
||||
<input type="number" name="system.aspect.earth.value" value="{{systemData.aspect.earth.value}}" title="{{ localize 'CDE.Earth' }}{{ localize 'CDE.EarthQualities' }}" />
|
||||
</div>
|
||||
<div class="clickondie nghangpart5">
|
||||
<div class="water">
|
||||
<img
|
||||
class="click2"
|
||||
data-libel-id="water-aspect"
|
||||
src="systems/fvtt-chroniques-de-l-etrange/images/d10-transparent.png"
|
||||
title="{{ localize 'CDE.Die' }}{{ localize 'CDE.Water' }}"
|
||||
alt="Die"
|
||||
onmouseout="this.src='/systems/fvtt-chroniques-de-l-etrange/images/d10-transparent.png';"
|
||||
;
|
||||
onmouseover="this.src='/systems/fvtt-chroniques-de-l-etrange/images/d10-10.png';"
|
||||
/>
|
||||
</div>
|
||||
<input type="number" name="system.aspect.water.value" value="{{systemData.aspect.water.value}}" title="{{ localize 'CDE.Water' }}{{ localize 'CDE.WaterQualities' }}" />
|
||||
</div>
|
||||
<div class="nghangpart6"></div>
|
||||
<div class="clickondie nghangpart7">
|
||||
<div class="metal">
|
||||
<img
|
||||
class="click2"
|
||||
data-libel-id="metal-aspect"
|
||||
src="systems/fvtt-chroniques-de-l-etrange/images/d10-transparent.png"
|
||||
title="{{ localize 'CDE.Die' }}{{ localize 'CDE.Metal' }}"
|
||||
alt="Die"
|
||||
onmouseout="this.src='/systems/fvtt-chroniques-de-l-etrange/images/d10-transparent.png';"
|
||||
;
|
||||
onmouseover="this.src='/systems/fvtt-chroniques-de-l-etrange/images/d10-10.png';"
|
||||
/>
|
||||
</div>
|
||||
<input type="number" name="system.aspect.metal.value" value="{{systemData.aspect.metal.value}}" title="{{ localize 'CDE.Metal' }}{{ localize 'CDE.MetalQualities' }}" />
|
||||
</div>
|
||||
<div class="cde-aspects-header">
|
||||
<img class="cde-aspects-logo" src="systems/fvtt-chroniques-de-l-etrange/images/logo_jeu.png" title="奇闻异事 ● Hong Kong – Les Chroniques de l'Étrange" alt="Logo" />
|
||||
</div>
|
||||
<div class="cde-aspects-grid">
|
||||
|
||||
<div class="cde-aspect-card cde-aspect--fire">
|
||||
<div class="cde-aspect-top">
|
||||
<img class="cde-aspect-gif" src="systems/fvtt-chroniques-de-l-etrange/images/aspects/FEU.gif" alt="Feu" />
|
||||
<span class="cde-aspect-name">{{ localize "CDE.Fire" }}</span>
|
||||
</div>
|
||||
<div class="cde-aspect-roll">
|
||||
<span class="cde-roll-trigger" data-libel-id="fire-aspect" title="{{ localize 'CDE.Die' }}{{ localize 'CDE.Fire' }}">
|
||||
<img class="img-die-sm" src="systems/fvtt-chroniques-de-l-etrange/images/d10-10.png" alt="Die" />
|
||||
</span>
|
||||
<input class="cde-circle-input" type="number" min="0" name="system.aspect.fire.value" value="{{systemData.aspect.fire.value}}" />
|
||||
</div>
|
||||
<div class="cde-aspect-qual">{{ localize "CDE.FireQualities" }}</div>
|
||||
</div>
|
||||
|
||||
<div class="cde-aspect-card cde-aspect--wood">
|
||||
<div class="cde-aspect-top">
|
||||
<img class="cde-aspect-gif" src="systems/fvtt-chroniques-de-l-etrange/images/aspects/BOIS.gif" alt="Bois" />
|
||||
<span class="cde-aspect-name">{{ localize "CDE.Wood" }}</span>
|
||||
</div>
|
||||
<div class="cde-aspect-roll">
|
||||
<span class="cde-roll-trigger" data-libel-id="wood-aspect" title="{{ localize 'CDE.Die' }}{{ localize 'CDE.Wood' }}">
|
||||
<img class="img-die-sm" src="systems/fvtt-chroniques-de-l-etrange/images/d10-10.png" alt="Die" />
|
||||
</span>
|
||||
<input class="cde-circle-input" type="number" min="0" name="system.aspect.wood.value" value="{{systemData.aspect.wood.value}}" />
|
||||
</div>
|
||||
<div class="cde-aspect-qual">{{ localize "CDE.WoodQualities" }}</div>
|
||||
</div>
|
||||
|
||||
<div class="cde-aspect-card cde-aspect--earth">
|
||||
<div class="cde-aspect-top">
|
||||
<img class="cde-aspect-gif" src="systems/fvtt-chroniques-de-l-etrange/images/aspects/TERRE.gif" alt="Terre" />
|
||||
<span class="cde-aspect-name">{{ localize "CDE.Earth" }}</span>
|
||||
</div>
|
||||
<div class="cde-aspect-roll">
|
||||
<span class="cde-roll-trigger" data-libel-id="earth-aspect" title="{{ localize 'CDE.Die' }}{{ localize 'CDE.Earth' }}">
|
||||
<img class="img-die-sm" src="systems/fvtt-chroniques-de-l-etrange/images/d10-10.png" alt="Die" />
|
||||
</span>
|
||||
<input class="cde-circle-input" type="number" min="0" name="system.aspect.earth.value" value="{{systemData.aspect.earth.value}}" />
|
||||
</div>
|
||||
<div class="cde-aspect-qual">{{ localize "CDE.EarthQualities" }}</div>
|
||||
</div>
|
||||
|
||||
<div class="cde-aspect-card cde-aspect--water">
|
||||
<div class="cde-aspect-top">
|
||||
<img class="cde-aspect-gif" src="systems/fvtt-chroniques-de-l-etrange/images/aspects/EAU.gif" alt="Eau" />
|
||||
<span class="cde-aspect-name">{{ localize "CDE.Water" }}</span>
|
||||
</div>
|
||||
<div class="cde-aspect-roll">
|
||||
<span class="cde-roll-trigger" data-libel-id="water-aspect" title="{{ localize 'CDE.Die' }}{{ localize 'CDE.Water' }}">
|
||||
<img class="img-die-sm" src="systems/fvtt-chroniques-de-l-etrange/images/d10-10.png" alt="Die" />
|
||||
</span>
|
||||
<input class="cde-circle-input" type="number" min="0" name="system.aspect.water.value" value="{{systemData.aspect.water.value}}" />
|
||||
</div>
|
||||
<div class="cde-aspect-qual">{{ localize "CDE.WaterQualities" }}</div>
|
||||
</div>
|
||||
|
||||
<div class="cde-aspect-card cde-aspect--metal">
|
||||
<div class="cde-aspect-top">
|
||||
<img class="cde-aspect-gif" src="systems/fvtt-chroniques-de-l-etrange/images/aspects/METAL.gif" alt="Metal" />
|
||||
<span class="cde-aspect-name">{{ localize "CDE.Metal" }}</span>
|
||||
</div>
|
||||
<div class="cde-aspect-roll">
|
||||
<span class="cde-roll-trigger" data-libel-id="metal-aspect" title="{{ localize 'CDE.Die' }}{{ localize 'CDE.Metal' }}">
|
||||
<img class="img-die-sm" src="systems/fvtt-chroniques-de-l-etrange/images/d10-10.png" alt="Die" />
|
||||
</span>
|
||||
<input class="cde-circle-input" type="number" min="0" name="system.aspect.metal.value" value="{{systemData.aspect.metal.value}}" />
|
||||
</div>
|
||||
<div class="cde-aspect-qual">{{ localize "CDE.MetalQualities" }}</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="cde-nghang-diagram">
|
||||
<img src="systems/fvtt-chroniques-de-l-etrange/images/nghang_long.png" alt="Ng Hang" />
|
||||
</div>
|
||||
<img src="systems/fvtt-chroniques-de-l-etrange/images/nghang_long.png" title="Ng Hang" alt="Ng Hang" />
|
||||
|
||||
@@ -1,42 +1,46 @@
|
||||
<div class="tab-sous-titre">{{ localize "CDE.Skills" }}</div>
|
||||
<table>
|
||||
<table class="cde-skills-table">
|
||||
{{#each systemData.skills as |skill key|}}
|
||||
<tr class="clickondie">
|
||||
<td class="click" data-libel-id="{{key}}-skill">
|
||||
<img class="d1click" src="systems/fvtt-chroniques-de-l-etrange/images/d10-10.png" title="{{ localize 'CDE.Die' }}{{ localize skill.label }}" alt="Die" />
|
||||
<tr>
|
||||
<td class="click cde-die-cell" data-libel-id="{{key}}-skill">
|
||||
<img class="img-die-sm" src="systems/fvtt-chroniques-de-l-etrange/images/d10-10.png" title="{{ localize 'CDE.Die' }}{{ localize skill.label }}" alt="Die" />
|
||||
</td>
|
||||
<td class="label"><b> {{ localize skill.label }}</b></td>
|
||||
<td class="image">
|
||||
<img src="systems/fvtt-chroniques-de-l-etrange/images/cercle.png" title="Cercle" alt="Cercle" />
|
||||
<div class="stick"> </div>
|
||||
<input class="input" type="number" placeholder="0" name="system.skills.{{@key}}.value" value="{{skill.value}}" />
|
||||
<td class="cde-skill-label"><b>{{ localize skill.label }}</b></td>
|
||||
<td class="cde-val-cell">
|
||||
<input class="cde-circle-input" type="number" min="0" placeholder="0" name="system.skills.{{@key}}.value" value="{{skill.value}}" />
|
||||
</td>
|
||||
<td class="specialities">
|
||||
<input class="input" type="text" placeholder="{{ localize 'CDE.Specialities' }}…" name="system.skills.{{@key}}.specialities" value="{{skill.specialities}}" />
|
||||
<td class="cde-spec-cell">
|
||||
<input type="text" placeholder="{{ localize 'CDE.Specialities' }}…" name="system.skills.{{@key}}.specialities" value="{{skill.specialities}}" />
|
||||
</td>
|
||||
<td class="cde-bonus-cell"><b>+1D</b></td>
|
||||
<td class="click cde-die-cell" data-libel-id="{{key}}-special">
|
||||
<img class="img-die-sm" src="systems/fvtt-chroniques-de-l-etrange/images/d10-10.png" title="{{ localize 'CDE.DieSP' }}" alt="Die" />
|
||||
</td>
|
||||
<td class="bonus"><b>+1 D</b></td>
|
||||
<td class="click" data-libel-id="{{key}}-special"><img class="d2click" src="systems/fvtt-chroniques-de-l-etrange/images/d10-10.png" title="{{ localize 'CDE.DieSP' }}" alt="Die" /></td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
</table>
|
||||
|
||||
<div class="tab-sous-titre">{{ localize "CDE.Resources" }}</div>
|
||||
<table>
|
||||
<table class="cde-skills-table">
|
||||
{{#each systemData.resources as |resource key|}}
|
||||
<tr class="clickondie">
|
||||
<td class="noclick" data-libel-id="{{key}}-resource"><img class="d1click" src="systems/fvtt-chroniques-de-l-etrange/images/d10-transparent.png" title="" alt="NoDie" /></td>
|
||||
<td class="label"><b> {{ localize resource.label }}</b></td>
|
||||
<td class="image">
|
||||
<img src="systems/fvtt-chroniques-de-l-etrange/images/cercle.png" title="Cercle" alt="Cercle" />
|
||||
<div class="stick"> </div>
|
||||
<input class="input" type="number" placeholder="0" name="system.resources.{{@key}}.value" value="{{resource.value}}" />
|
||||
<tr>
|
||||
<td class="noclick cde-die-cell" data-libel-id="{{key}}-resource">
|
||||
<img class="img-die-sm" src="systems/fvtt-chroniques-de-l-etrange/images/d10-transparent.png" title="" alt="NoDie" />
|
||||
</td>
|
||||
<td class="specialities">
|
||||
<input class="input" type="text" placeholder="{{ localize 'CDE.Fields' }}…" name="system.resources.{{@key}}.specialities" value="{{resource.specialities}}" />
|
||||
<td class="cde-skill-label"><b>{{ localize resource.label }}</b></td>
|
||||
<td class="cde-val-cell">
|
||||
<input class="cde-circle-input" type="number" min="0" placeholder="0" name="system.resources.{{@key}}.value" value="{{resource.value}}" />
|
||||
</td>
|
||||
<td class="cde-spec-cell">
|
||||
<input type="text" placeholder="{{ localize 'CDE.Fields' }}…" name="system.resources.{{@key}}.specialities" value="{{resource.specialities}}" />
|
||||
</td>
|
||||
<td class="cde-bonus-cell"><b>+1D</b></td>
|
||||
<td class="click cde-die-cell" data-libel-id="{{key}}-field">
|
||||
<img class="img-die-sm" src="systems/fvtt-chroniques-de-l-etrange/images/d10-10.png" title="{{ localize 'CDE.DieDM' }}" alt="Die" />
|
||||
</td>
|
||||
<td class="cde-check-cell">
|
||||
<input type="checkbox" name="system.resources.{{@key}}.debt" {{checked resource.debt}} title="{{ localize 'CDE.Debt' }}{{ localize resource.label }}" />
|
||||
</td>
|
||||
<td class="bonus"><b>+1 D</b></td>
|
||||
<td class="click" data-libel-id="{{key}}-field"><img class="d2click" src="systems/fvtt-chroniques-de-l-etrange/images/d10-10.png" title="{{ localize 'CDE.DieDM' }}" alt="Die" /></td>
|
||||
<td class="check"><input type="checkbox" name="system.resources.{{@key}}.debt" {{checked resource.debt}} title="{{ localize 'CDE.Debt' }}{{ localize resource.label }}" /></td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
</table>
|
||||
|
||||
@@ -1,98 +1,64 @@
|
||||
<div style="display: flex; justify-content: center; align-items: center;text-align: center;">
|
||||
<b>{{ localize "CDE.HEI" }}</b>
|
||||
{{!-- HEI — Essence --}}
|
||||
<div class="tab-sous-titre">{{ localize "CDE.HEI" }} — {{ localize "CDE.Essence2" }}</div>
|
||||
<div class="cde-tt-block">
|
||||
<div class="cde-tt-row cde-tt-labels">
|
||||
<span>Yang max</span>
|
||||
<span>Yang</span>
|
||||
<span class="cde-tt-center"></span>
|
||||
<span>Yin</span>
|
||||
<span>Yin max</span>
|
||||
</div>
|
||||
<div class="cde-tt-row cde-tt-values">
|
||||
<input class="cde-circle-input cde-circle-sm" type="number" name="system.threetreasures.heiyang.max" value="{{systemData.threetreasures.heiyang.max}}" />
|
||||
<input class="cde-circle-input" type="number" name="system.threetreasures.heiyang.value" value="{{systemData.threetreasures.heiyang.value}}" />
|
||||
<img class="cde-tt-yinyang" src="systems/fvtt-chroniques-de-l-etrange/images/yin_yang.png" alt="Yin Yang" />
|
||||
<input class="cde-circle-input" type="number" name="system.threetreasures.heiyin.value" value="{{systemData.threetreasures.heiyin.value}}" />
|
||||
<input class="cde-circle-input cde-circle-sm" type="number" name="system.threetreasures.heiyin.max" value="{{systemData.threetreasures.heiyin.max}}" />
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;text-align: center;">
|
||||
<b>{{ localize "CDE.Essence2" }}</b>
|
||||
|
||||
{{!-- SAN-ZING — Santé --}}
|
||||
<div class="tab-sous-titre">{{ localize "CDE.SAN-ZING" }} — {{ localize "CDE.MentalHealth-PhysicalHealth" }}</div>
|
||||
<div class="cde-tt-sanzing">
|
||||
<div class="cde-tt-sz-header">
|
||||
<span>San max</span>
|
||||
<span>San</span>
|
||||
<span>Malus</span>
|
||||
<span>Zing</span>
|
||||
<span>Zing max</span>
|
||||
</div>
|
||||
<div class="cde-tt-sz-row">
|
||||
<input class="cde-circle-input cde-circle-sm" type="number" name="system.threetreasures.dicelevel.level0d.san.max" value="{{systemData.threetreasures.dicelevel.level0d.san.max}}" />
|
||||
<input class="cde-circle-input" type="number" name="system.threetreasures.dicelevel.level0d.san.value" value="{{systemData.threetreasures.dicelevel.level0d.san.value}}" />
|
||||
<span class="cde-tt-level">0 dé</span>
|
||||
<input class="cde-circle-input" type="number" name="system.threetreasures.dicelevel.level0d.zing.value" value="{{systemData.threetreasures.dicelevel.level0d.zing.value}}" />
|
||||
<input class="cde-circle-input cde-circle-sm" type="number" name="system.threetreasures.dicelevel.level0d.zing.max" value="{{systemData.threetreasures.dicelevel.level0d.zing.max}}" />
|
||||
</div>
|
||||
<div class="cde-tt-sz-row">
|
||||
<input class="cde-circle-input cde-circle-sm" type="number" name="system.threetreasures.dicelevel.level1d.san.max" value="{{systemData.threetreasures.dicelevel.level1d.san.max}}" />
|
||||
<input class="cde-circle-input" type="number" name="system.threetreasures.dicelevel.level1d.san.value" value="{{systemData.threetreasures.dicelevel.level1d.san.value}}" />
|
||||
<span class="cde-tt-level">- 1 dé</span>
|
||||
<input class="cde-circle-input" type="number" name="system.threetreasures.dicelevel.level1d.zing.value" value="{{systemData.threetreasures.dicelevel.level1d.zing.value}}" />
|
||||
<input class="cde-circle-input cde-circle-sm" type="number" name="system.threetreasures.dicelevel.level1d.zing.max" value="{{systemData.threetreasures.dicelevel.level1d.zing.max}}" />
|
||||
</div>
|
||||
<div class="cde-tt-sz-row">
|
||||
<input class="cde-circle-input cde-circle-sm" type="number" name="system.threetreasures.dicelevel.level2d.san.max" value="{{systemData.threetreasures.dicelevel.level2d.san.max}}" />
|
||||
<input class="cde-circle-input" type="number" name="system.threetreasures.dicelevel.level2d.san.value" value="{{systemData.threetreasures.dicelevel.level2d.san.value}}" />
|
||||
<span class="cde-tt-level">- 2 dés</span>
|
||||
<input class="cde-circle-input" type="number" name="system.threetreasures.dicelevel.level2d.zing.value" value="{{systemData.threetreasures.dicelevel.level2d.zing.value}}" />
|
||||
<input class="cde-circle-input cde-circle-sm" type="number" name="system.threetreasures.dicelevel.level2d.zing.max" value="{{systemData.threetreasures.dicelevel.level2d.zing.max}}" />
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;text-align: center;">
|
||||
<b>{{ localize "CDE.YANG-YIN" }}</b>
|
||||
|
||||
{{!-- PTAO — Expérience --}}
|
||||
<div class="tab-sous-titre">{{ localize "CDE.PTAO" }} — {{ localize "CDE.Experience" }}</div>
|
||||
<div class="cde-tt-block">
|
||||
<div class="cde-tt-row cde-tt-labels">
|
||||
<span>{{ localize "CDE.Total" }}</span>
|
||||
<span>{{ localize "CDE.Present" }}</span>
|
||||
</div>
|
||||
<div class="cde-tt-row cde-tt-values">
|
||||
<input class="cde-circle-input" type="number" name="system.experience.max" value="{{systemData.experience.max}}" />
|
||||
<input class="cde-circle-input" type="number" name="system.experience.value" value="{{systemData.experience.value}}" />
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;text-align: center;">
|
||||
{{ localize "CDE.Max-Present-Present-Max" }}
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img style="width: 7%;margin-top: 0px;" class="cercle-petit" src="systems/fvtt-chroniques-de-l-etrange/images/cercle.png" title="{{ localize "CDE.Max" }}" alt="Cercle">
|
||||
<img style="width: 17%;margin-left: -15px;" class="cercle-grand" src="systems/fvtt-chroniques-de-l-etrange/images/cercle.png" title="{{ localize "CDE.Present" }}" alt="Cercle">
|
||||
<img style="width: 15%;margin-top: 0px;" class="cercle-yinyang" src="systems/fvtt-chroniques-de-l-etrange/images/yin_yang.png" title="Yin Yang" alt="Yin Yang">
|
||||
<img style="width: 17%;position: relative;" class="cercle-grand" src="systems/fvtt-chroniques-de-l-etrange/images/cercle.png" title="{{ localize "CDE.Present" }}" alt="Cercle">
|
||||
<img style="width: 7%;margin-left: -15px;" class="cercle-petit" src="systems/fvtt-chroniques-de-l-etrange/images/cercle.png" title="{{ localize "CDE.Max" }}" alt="Cercle">
|
||||
</div>
|
||||
<div style ="position: relative;margin-top: -90px;" class="hei-yang">
|
||||
<input style="border: none; width: 40px;height: 28px;margin-left: 150px;margin-top: 17px;text-align: center;font-size: 1.5em;" class="input heiyang.max" type="number" name="system.threetreasures.heiyang.max" value="{{systemData.threetreasures.heiyang.max}}"/>
|
||||
<input style="border: none; width: 40px;height: 28px;margin-left: 27px;text-align: center;font-size: 1.5em;" class="input heiyang.value" type="number" name="system.threetreasures.heiyang.value" value="{{systemData.threetreasures.heiyang.value}}"/>
|
||||
<input style="border: none; width: 40px;height: 28px;margin-left: 185px;text-align: center;font-size: 1.5em;" class="input heiyin.value" type="number" name="system.threetreasures.heiyin.value" value="{{systemData.threetreasures.heiyin.value}}"/>
|
||||
<input style="border: none; width: 40px;height: 28px;margin-left: 25px;text-align: center;font-size: 1.5em;" class="input heiyin.max" type="number" name="system.threetreasures.heiyin.max" value="{{systemData.threetreasures.heiyin.max}}"/>
|
||||
</div>
|
||||
<br>
|
||||
<br>
|
||||
<div style="display: flex; justify-content: center; align-items: center;text-align: center;">
|
||||
<b>{{ localize "CDE.SAN-ZING" }}</b>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;text-align: center;">
|
||||
<b>{{ localize "CDE.MentalHealth-PhysicalHealth" }}</b>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;text-align: center;">
|
||||
{{ localize "CDE.Max-Present-Malus-Present-Max" }}
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img style="width: 7%;margin-top: 0px;" class="cercle-petit" src="systems/fvtt-chroniques-de-l-etrange/images/cercle.png" title="{{ localize "CDE.Max" }}" alt="Cercle">
|
||||
<img style="width: 17%;margin-left: -15px;" class="cercle-moyen" src="systems/fvtt-chroniques-de-l-etrange/images/cercle.png" title="{{ localize "CDE.Present" }}" alt="Cercle">
|
||||
<b>--</b>
|
||||
<img style="width: 17%;position: relative;" class="cercle-moyen" src="systems/fvtt-chroniques-de-l-etrange/images/cercle.png" title="{{ localize "CDE.Present" }}" alt="Cercle">
|
||||
<img style="width: 7%;margin-left: -15px;" class="cercle.petit" src="systems/fvtt-chroniques-de-l-etrange/images/cercle.png" title="{{ localize "CDE.Max" }}" alt="Cercle">
|
||||
</div>
|
||||
<div style ="position: relative;margin-top: -90px;" class="hei-yang">
|
||||
<input style="border: none; width: 40px;height: 28px;margin-left: 195px;margin-top: 17px;text-align: center;font-size: 1.5em;" class="input san1.max" type="number" name="system.threetreasures.dicelevel.level0d.san.max" value="{{systemData.threetreasures.dicelevel.level0d.san.max}}"/>
|
||||
<input style="border: none; width: 40px;height: 28px;margin-left: 30px;text-align: center;font-size: 1.5em;" class="input san1.value" type="number" name="system.threetreasures.dicelevel.level0d.san.value" value="{{systemData.threetreasures.dicelevel.level0d.san.value}}"/>
|
||||
<input style="border: none; width: 40px;height: 28px;margin-left: 90px;text-align: center;font-size: 1.5em;" class="input zing1.value" type="number" name="system.threetreasures.dicelevel.level0d.zing.value" value="{{systemData.threetreasures.dicelevel.level0d.zing.value}}"/>
|
||||
<input style="border: none; width: 40px;height: 28px;margin-left: 25px;text-align: center;font-size: 1.5em;" class="input zing1.max" type="number" name="system.threetreasures.dicelevel.level0d.zing.max" value="{{systemData.threetreasures.dicelevel.level0d.zing.max}}"/>
|
||||
</div>
|
||||
<br>
|
||||
<br>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img style="width: 7%;margin-top: 0px;" class="cercle-tres-petit" src="systems/fvtt-chroniques-de-l-etrange/images/cercle.png" title="{{ localize "CDE.Max" }}" alt="Cercle">
|
||||
<img style="width: 17%;margin-left: -15px;" class="cercle-moyen" src="systems/fvtt-chroniques-de-l-etrange/images/cercle.png" title="{{ localize "CDE.Present" }}" alt="Cercle">
|
||||
<b>- 1 D</b>
|
||||
<img style="width: 17%;position: relative;" class="cercle-moyen" src="systems/fvtt-chroniques-de-l-etrange/images/cercle.png" title="{{ localize "CDE.Present" }}" alt="Cercle">
|
||||
<img style="width: 7%;margin-left: -15px;" class="cercle-tres_petit" src="systems/fvtt-chroniques-de-l-etrange/images/cercle.png" title="{{ localize "CDE.Max" }}" alt="Cercle">
|
||||
</div>
|
||||
<div style ="position: relative;margin-top: -90px;" class="hei-yang">
|
||||
<input style="border: none; width: 40px;height: 28px;margin-left: 185px;margin-top: 17px;text-align: center;font-size: 1.5em;" class="input san2.max" type="number" name="system.threetreasures.dicelevel.level1d.san.max" value="{{systemData.threetreasures.dicelevel.level1d.san.max}}"/>
|
||||
<input style="border: none; width: 40px;height: 28px;margin-left: 30px;text-align: center;font-size: 1.5em;" class="input san2.value" type="number" name="system.threetreasures.dicelevel.level1d.san.value" value="{{systemData.threetreasures.dicelevel.level1d.san.value}}"/>
|
||||
<input style="border: none; width: 40px;height: 28px;margin-left: 110px;text-align: center;font-size: 1.5em;" class="input zing2.value" type="number" name="system.threetreasures.dicelevel.level1d.zing.value" value="{{systemData.threetreasures.dicelevel.level1d.zing.value}}"/>
|
||||
<input style="border: none; width: 40px;height: 28px;margin-left: 25px;text-align: center;font-size: 1.5em;" class="input zing2.max" type="number" name="system.threetreasures.dicelevel.level1d.zing.max" value="{{systemData.threetreasures.dicelevel.level1d.zing.max}}"/>
|
||||
</div>
|
||||
<br>
|
||||
<br>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img style="width: 7%;margin-top: 0px;" class="cercle-tres-petit" src="systems/fvtt-chroniques-de-l-etrange/images/cercle.png" title="{{ localize "CDE.Max" }}" alt="Cercle">
|
||||
<img style="width: 17%;margin-left: -15px;" class="cercle-moyen" src="systems/fvtt-chroniques-de-l-etrange/images/cercle.png" title="{{ localize "CDE.Present" }}" alt="Cercle">
|
||||
<b>- 2 D</b>
|
||||
<img style="width: 17%;position: relative;" class="cercle-moyen" src="systems/fvtt-chroniques-de-l-etrange/images/cercle.png" title="{{ localize "CDE.Present" }}" alt="Cercle">
|
||||
<img style="width: 7%;margin-left: -15px;" class="cercle-tres-petit" src="systems/fvtt-chroniques-de-l-etrange/images/cercle.png" title="{{ localize "CDE.Max" }}" alt="Cercle">
|
||||
</div>
|
||||
<div style ="position: relative;margin-top: -90px;" class="hei-yang">
|
||||
<input style="border: none; width: 40px;height: 28px;margin-left: 185px;margin-top: 17px;text-align: center;font-size: 1.5em;" class="input san3.max" type="number" name="system.threetreasures.dicelevel.level2d.san.max" value="{{systemData.threetreasures.dicelevel.level2d.san.max}}"/>
|
||||
<input style="border: none; width: 40px;height: 28px;margin-left: 30px;text-align: center;font-size: 1.5em;" class="input san3.value" type="number" name="system.threetreasures.dicelevel.level2d.san.value" value="{{systemData.threetreasures.dicelevel.level2d.san.value}}"/>
|
||||
<input style="border: none; width: 40px;height: 28px;margin-left: 110px;text-align: center;font-size: 1.5em;" class="input zing3.value" type="number" name="system.threetreasures.dicelevel.level2d.zing.value" value="{{systemData.threetreasures.dicelevel.level2d.zing.value}}"/>
|
||||
<input style="border: none; width: 40px;height: 28px;margin-left: 25px;text-align: center;font-size: 1.5em;" class="input zing3.max" type="number" name="system.threetreasures.dicelevel.level2d.zing.max" value="{{systemData.threetreasures.dicelevel.level2d.zing.max}}"/>
|
||||
</div>
|
||||
<br>
|
||||
<br>
|
||||
<div style="display: flex; justify-content: center; align-items: center;text-align: center;">
|
||||
<b>{{ localize "CDE.PTAO" }}</b>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;text-align: center;">
|
||||
<b>{{ localize "CDE.Experience" }}</b>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;text-align: center;">
|
||||
{{ localize "CDE.Total-Present" }}
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img style="width: 7%;margin-top: 0px;" class="cercle-tres-petit" src="systems/fvtt-chroniques-de-l-etrange/images/cercle.png" title="{{ localize "CDE.Total" }}" alt="Cercle">
|
||||
<img style="width: 17%;margin-left: -15px;" class="cercle-moyen" src="systems/fvtt-chroniques-de-l-etrange/images/cercle.png" title="{{ localize "CDE.Present" }}" alt="Cercle">
|
||||
</div>
|
||||
<div style ="position: relative;margin-top: -90px;" class="hei-yang">
|
||||
<input style="border: none; width: 40px;height: 28px;margin-left: 278px;margin-top: 17px;text-align: center;font-size: 1.5em;" class="input experience.max" type="number" name="system.experience.max" value="{{systemData.experience.max}}"/>
|
||||
<input style="border: none; width: 40px;height: 28px;margin-left: 32px;text-align: center;font-size: 1.5em;" class="input experience.value" type="number" name="system.experience.value" value="{{systemData.experience.value}}"/>
|
||||
</div>
|
||||
@@ -1,437 +1,133 @@
|
||||
<form class="flexcol {{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<div class="cde-roll-result" data-aspect="{{aspect}}">
|
||||
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
{{!-- Header: aspect identity + roll label --}}
|
||||
<div class="cde-rr-header">
|
||||
<div class="cde-rr-header-left">
|
||||
<img class="cde-rr-aspect-icon" src="{{aspectIcon}}" alt="{{aspectLabel}}" />
|
||||
<div class="cde-rr-header-text">
|
||||
<span class="cde-rr-aspect-label">{{aspectLabel}}</span>
|
||||
<span class="cde-rr-roll-label">{{rollLabel}}</span>
|
||||
</div>
|
||||
</div>
|
||||
{{#if actorImg}}
|
||||
<div class="cde-rr-header-right">
|
||||
<img class="cde-rr-actor-avatar" src="{{actorImg}}" alt="{{actorName}}" />
|
||||
<span class="cde-rr-actor-name">{{actorName}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
{{!-- Frame --}}
|
||||
<div class="frame">
|
||||
{{!-- Hero: successes count (+ spell power for magic rolls) --}}
|
||||
<div class="cde-rr-hero">
|
||||
<span class="cde-rr-hero-count">{{successesdice}}</span>
|
||||
<div class="cde-rr-hero-right">
|
||||
<span class="cde-rr-hero-label">{{ localize "CDE.UpperCaseSuccesses" }}</span>
|
||||
<span class="cde-rr-hero-dice">{{totalDice}} <span class="cde-rr-hero-dice-label">d10</span></span>
|
||||
</div>
|
||||
{{#if spellPower}}
|
||||
<div class="cde-rr-spell-power">
|
||||
<span class="cde-rr-spell-power-count">{{spellPower}}</span>
|
||||
<span class="cde-rr-spell-power-label">{{ localize "CDE.SpellPower" }}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
{{#if (eq aspect 'wood')}}
|
||||
<table style="border: 0px; background-color: transparent;" >
|
||||
<tr style="background-color: transparent;">
|
||||
<td>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="value" style="font-size: 25px; color: rgba(65, 164, 54, 1); text-align: center;"><b>{{ successesdice }}</b></span>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img class="aspect" style="border: 0px; width:10%;" src="systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png" />
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="label" style="font-size: 20px; color: rgba(65, 164, 54, 1); text-align: center;"><b>{{ localize "CDE.UpperCaseSuccesses" }}</b></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="background-color: transparent;">
|
||||
<td>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="value" style="font-size: 25px; color: rgba(205, 23, 26, 1); text-align: center;"><b>{{ auspiciousdice }}</b></span>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img class="aspect" style="border: 0px; width:10%;" src="systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png" />
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="label" style="font-size: 20px; color: rgba(205, 23, 26, 1); text-align: center;"><b>{{ localize "CDE.UpperCaseAuspiciousDice" }}</b></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="background-color: transparent;">
|
||||
<td>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="value" style="font-size: 25px; color: rgba(0, 159, 226, 1); text-align: center;"><b>{{ noxiousdice }}</b></span>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img class="aspect" style="border: 0px; width:10%;" src="systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png" />
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="label" style="font-size: 20px; color: rgba(0, 159, 226, 1); text-align: center;"><b>{{ localize "CDE.UpperCaseNoxiousDice" }}</b></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="background-color: transparent;">
|
||||
<td>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="value" style="font-size: 25px; color: rgba(168, 87, 71, 1); text-align: center;"><b>{{ loksyudice }} {{ loksyurepartition }}</b></span>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img class="aspect" style="border: 0px; width:10%;" src="systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png" />
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="label" style="font-size: 20px; color: rgba(168, 87, 71, 1); text-align: center;"><b>{{ localize "CDE.UpperCaseLoksyu" }}</b></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="background-color: transparent;">
|
||||
<td>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="value" style="font-size: 25px; color: rgba(112, 112, 110, 1); text-align: center;"><b>{{ tinjidice }}</b></span>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img class="aspect" style="border: 0px; width:10%;" src="systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png" />
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="label" style="font-size: 20px; color: rgba(112, 112, 110, 1); text-align: center;"><b>{{ localize "CDE.UpperCaseTinJi" }}</b></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
{{/if}}
|
||||
{{!-- Detail rows: auspicious / noxious / loksyu / tinji --}}
|
||||
<div class="cde-rr-details">
|
||||
|
||||
{{#if (eq aspect 'fire')}}
|
||||
<table style="border: 0px; background-color: transparent;" >
|
||||
<tr style="background-color: transparent;">
|
||||
<td>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="value" style="font-size: 25px; color: rgba(205, 23, 26, 1); text-align: center;"><b>{{ successesdice }}</b></span>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img class="aspect" style="border: 0px; width:10%;" src="systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png" />
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="value" style="font-size: 20px; color: rgba(205, 23, 26, 1); text-align: center;"><b>{{ localize "CDE.UpperCaseSuccesses" }}</b></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="background-color: transparent;">
|
||||
<td>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="value" style="font-size: 25px; color: rgba(168, 87, 71, 1); text-align: center;"><b>{{ auspiciousdice }}</b></span>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img class="aspect" style="border: 0px; width:10%;" src="systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png" />
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="value" style="font-size: 20px; color: rgba(168, 87, 71, 1); text-align: center;"><b>{{ localize "CDE.UpperCaseAuspiciousDice" }}</b></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="background-color: transparent;">
|
||||
<td>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="label" style="font-size: 25px; color: rgba(65, 164, 54, 1); text-align: center;"><b>{{ noxiousdice }}</b></span>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img class="aspect" style="border: 0px; width:10%;" src="systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png" />
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="label" style="font-size: 20px; color: rgba(65, 164, 54, 1); text-align: center;"><b>{{ localize "CDE.UpperCaseNoxiousDice" }}</b></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="background-color: transparent;">
|
||||
<td>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="label" style="font-size: 25px; color: rgba(112, 112, 110, 1); text-align: center;"><b>{{ loksyudice }} {{ loksyurepartition }}</b></span>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img class="aspect" style="border: 0px; width:10%;" src="systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png" />
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="label" style="font-size: 20px; color: rgba(112, 112, 110, 1); text-align: center;"><b>{{ localize "CDE.UpperCaseLoksyu" }}</b></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="background-color: transparent;">
|
||||
<td>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="label" style="font-size: 25px; color: rgba(0, 159, 226, 1); text-align: center;"><b>{{ tinjidice }}</b></span>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img class="aspect" style="border: 0px; width:10%;" src="systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png" />
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="label" style="font-size: 20px; color: rgba(0, 159, 226, 1); text-align: center;"><b>{{ localize "CDE.UpperCaseTinJi" }}</b></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
{{/if}}
|
||||
<div class="cde-rr-row cde-rr-row--auspicious">
|
||||
<span class="cde-rr-count">{{auspiciousdice}}</span>
|
||||
<div class="cde-rr-icon"></div>
|
||||
<span class="cde-rr-label">{{ localize "CDE.UpperCaseAuspiciousDice" }}</span>
|
||||
</div>
|
||||
|
||||
{{#if (eq aspect 'earth')}}
|
||||
<table style="border: 0px; background-color: transparent;" >
|
||||
<tr style="background-color: transparent;">
|
||||
<td>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="value" style="font-size: 25px; color: rgba(168, 87, 71, 1); text-align: center;"><b>{{ successesdice }}</b></span>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img class="aspect" style="border: 0px; width:10%;" src="systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png" />
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="value" style="font-size: 20px; color: rgba(168, 87, 71, 1); text-align: center;"><b>{{ localize "CDE.UpperCaseSuccesses" }}</b></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="background-color: transparent;">
|
||||
<td>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="label" style="font-size: 25px; color: rgba(112, 112, 110, 1); text-align: center;"><b>{{ auspiciousdice }}</b></span>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img class="aspect" style="border: 0px; width:10%;" src="systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png" />
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="label" style="font-size: 20px; color: rgba(112, 112, 110, 1); text-align: center;"><b>{{ localize "CDE.UpperCaseAuspiciousDice" }}</b></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="background-color: transparent;">
|
||||
<td>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="value" style="font-size: 25px; color: rgba(205, 23, 26, 1); text-align: center;"><b>{{ noxiousdice }}</b></span>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img class="aspect" style="border: 0px; width:10%;" src="systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png" />
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="value" style="font-size: 20px; color: rgba(205, 23, 26, 1); text-align: center;"><b>{{ localize "CDE.UpperCaseNoxiousDice" }}</b></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="background-color: transparent;">
|
||||
<td>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="label" style="font-size: 25px; color: rgba(0, 159, 226, 1); text-align: center;"><b>{{ loksyudice }} {{ loksyurepartition }}</b></span>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img class="aspect" style="border: 0px; width:10%;" src="systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png" />
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="label" style="font-size: 20px; color: rgba(0, 159, 226, 1); text-align: center;"><b>{{ localize "CDE.UpperCaseLoksyu" }}</b></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="background-color: transparent;">
|
||||
<td>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="label" style="font-size: 25px; color: rgba(65, 164, 54, 1); text-align: center;"><b>{{ tinjidice }}</b></span>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img class="aspect" style="border: 0px; width:10%;" src="systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png" />
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="label" style="font-size: 20px; color: rgba(65, 164, 54, 1); text-align: center;"><b>{{ localize "CDE.UpperCaseTinJi" }}</b></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
{{/if}}
|
||||
<div class="cde-rr-row cde-rr-row--noxious">
|
||||
<span class="cde-rr-count">{{noxiousdice}}</span>
|
||||
<div class="cde-rr-icon"></div>
|
||||
<span class="cde-rr-label">{{ localize "CDE.UpperCaseNoxiousDice" }}</span>
|
||||
</div>
|
||||
|
||||
{{#if (eq aspect 'metal')}}
|
||||
<table style="border: 0px; background-color: transparent;">
|
||||
<tr style="background-color: transparent;">
|
||||
<td>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="label" style="font-size: 25px; color: rgba(112, 112, 110, 1); text-align: center;"><b>{{ successesdice }}</b></span>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img class="aspect" style="border: 0px; width:10%;" src="systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png" />
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="label" style="font-size: 20px; color: rgba(112, 112, 110, 1); text-align: center;"><b>{{ localize "CDE.UpperCaseSuccesses" }}</b></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="background-color: transparent;">
|
||||
<td>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="label" style="font-size: 25px; color: rgba(0, 159, 226, 1); text-align: center;"><b>{{ auspiciousdice }}</b></span>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img class="aspect" style="border: 0px; width:10%;" src="systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png" />
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="label" style="font-size: 20px; color: rgba(0, 159, 226, 1); text-align: center;"><b>{{ localize "CDE.UpperCaseAuspiciousDice" }}</b></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="background-color: transparent;">
|
||||
<td>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="value" style="font-size: 25px; color: rgba(168, 87, 71, 1); text-align: center;"><b>{{ noxiousdice }}</b></span>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img class="aspect" style="border: 0px; width:10%;" src="systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png" />
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="value" style="font-size: 20px; color: rgba(168, 87, 71, 1); text-align: center;"><b>{{ localize "CDE.UpperCaseNoxiousDice" }}</b></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="background-color: transparent;">
|
||||
<td>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="label" style="font-size: 25px; color: rgba(65, 164, 54, 1); text-align: center;"><b>{{ loksyudice }} {{ loksyurepartition }}</b></span>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img class="aspect" style="border: 0px; width:10%;" src="systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png" />
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="label" style="font-size: 20px; color: rgba(65, 164, 54, 1); text-align: center;"><b>{{ localize "CDE.UpperCaseLoksyu" }}</b></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="background-color: transparent;">
|
||||
<td>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="value" style="font-size: 25px; color: rgba(205, 23, 26, 1); text-align: center;"><b>{{ tinjidice }}</b></span>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img class="aspect" style="border: 0px; width:10%;" src="systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png" />
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="value" style="font-size: 20px; color: rgba(205, 23, 26, 1); text-align: center;"><b>{{ localize "CDE.UpperCaseTinJi" }}</b></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
{{/if}}
|
||||
<div class="cde-rr-row cde-rr-row--loksyu">
|
||||
<span class="cde-rr-count">{{loksyudice}}</span>
|
||||
<div class="cde-rr-icon"></div>
|
||||
<span class="cde-rr-label">{{ localize "CDE.UpperCaseLoksyu" }}
|
||||
<span class="cde-rr-partition">{{loksyurepartition}}</span>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
{{#if (eq aspect 'water')}}
|
||||
<table style="border: 0px; background-color: transparent;" >
|
||||
<tr style="background-color: transparent;">
|
||||
<td>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="label" style="font-size: 25px; color: rgba(0, 159, 226, 1); text-align: center;"><b>{{ successesdice }}</b></span>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img class="aspect" style="border: 0px; width:10%;" src="systems/fvtt-chroniques-de-l-etrange/images/cde_eau.png" />
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="label" style="font-size: 20px; color: rgba(0, 159, 226, 1); text-align: center;"><b>{{ localize "CDE.UpperCaseSuccesses" }}</b></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="background-color: transparent;">
|
||||
<td>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="label" style="font-size: 25px; color: rgba(65, 164, 54, 1); text-align: center;"><b>{{ auspiciousdice }}</b></span>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img class="aspect" style="border: 0px; width:10%;" src="systems/fvtt-chroniques-de-l-etrange/images/cde_bois.png" />
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="label" style="font-size: 20px; color: rgba(65, 164, 54, 1); text-align: center;"><b>{{ localize "CDE.UpperCaseAuspiciousDice" }}</b></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="background-color: transparent;">
|
||||
<td>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="label" style="font-size: 25px; color: rgba(112, 112, 110, 1); text-align: center;"><b>{{ noxiousdice }}</b></span>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img class="aspect" style="border: 0px; width:10%;" src="systems/fvtt-chroniques-de-l-etrange/images/cde_metal.png" />
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="label" style="font-size: 20px; color: rgba(112, 112, 110, 1); text-align: center;"><b>{{ localize "CDE.UpperCaseNoxiousDice" }}</b></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="background-color: transparent;">
|
||||
<td>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="value" style="font-size: 25px; color: rgba(205, 23, 26, 1); text-align: center;"><b>{{ loksyudice }} {{ loksyurepartition }}</b></span>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img class="aspect" style="border: 0px; width:10%;" src="systems/fvtt-chroniques-de-l-etrange/images/cde_feu.png" />
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="value" style="font-size: 20px; color: rgba(205, 23, 26, 1); text-align: center;"><b>{{ localize "CDE.UpperCaseLoksyu" }}</b></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="background-color: transparent;">
|
||||
<td>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="value" style="font-size: 25px; color: rgba(168, 87, 71, 1); text-align: center;"><b>{{ tinjidice }}</b></span>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img class="aspect" style="border: 0px; width:10%;" src="systems/fvtt-chroniques-de-l-etrange/images/cde_terre.png" />
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="value" style="font-size: 20px; color: rgba(168, 87, 71, 1); text-align: center;"><b>{{ localize "CDE.UpperCaseTinJi" }}</b></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
{{/if}}
|
||||
<div class="app">
|
||||
<table style="border: 0px; background-color: transparent;">
|
||||
<tr style="background-color: transparent;">
|
||||
<td style="width: 18.75%;">
|
||||
<span style="display: flex; justify-content: center; align-items: center; font-size: 25px; text-align: center;" class="value"><b>{{ d1 }}</b></span>
|
||||
</td>
|
||||
<td style="width: 18%;">
|
||||
<span style="display: flex; justify-content: center; align-items: center; font-size: 25px; text-align: center;" class="value"><b>{{ d2 }}</b></span>
|
||||
</td>
|
||||
<td style="width: 18%;">
|
||||
<span style="display: flex; justify-content: center; align-items: center; font-size: 25px; text-align: center;" class="value"><b>{{ d3 }}</b></span>
|
||||
</td>
|
||||
<td style="width: 18%;">
|
||||
<span style="display: flex; justify-content: center; align-items: center; font-size: 25px; text-align: center;" class="value"><b>{{ d4 }}</b></span>
|
||||
</td>
|
||||
<td style="width: 18%;">
|
||||
<span style="display: flex; justify-content: center; align-items: center; font-size: 25px; text-align: center;" class="value"><b>{{ d5 }}</b></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="background-color: transparent;">
|
||||
<td style="width: 18.75%;">
|
||||
<img class="plate" style="width: 100%; border: 0px;" src="systems/fvtt-chroniques-de-l-etrange/images/dice-plate/d10-1.png" />
|
||||
</td>
|
||||
<td style="width: 18%;">
|
||||
<img class="plate" style="width: 100%; border: 0px;" src="systems/fvtt-chroniques-de-l-etrange/images/dice-plate/d10-2.png" />
|
||||
</td>
|
||||
<td style="width: 18%;">
|
||||
<img class="plate" style="width: 100%; border: 0px;" src="systems/fvtt-chroniques-de-l-etrange/images/dice-plate/d10-3.png" />
|
||||
</td>
|
||||
<td style="width: 18%;">
|
||||
<img class="plate" style="width: 100%; border: 0px;" src="systems/fvtt-chroniques-de-l-etrange/images/dice-plate/d10-4.png" />
|
||||
</td>
|
||||
<td style="width: 18%;">
|
||||
<img class="plate" style="width: 100%; border: 0px;" src="systems/fvtt-chroniques-de-l-etrange/images/dice-plate/d10-5.png" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table style="border: 0px; background-color: transparent;">
|
||||
<tr style="background-color: transparent;">
|
||||
<td style="width: 18.65%;">
|
||||
<span style="display: flex; justify-content: center; align-items: center; font-size: 25px; text-align: center;" class="value"><b>{{ d6 }}</b></span>
|
||||
</td>
|
||||
<td style="width: 18%;">
|
||||
<span style="display: flex; justify-content: center; align-items: center; font-size: 25px; text-align: center;" class="value"><b>{{ d7 }}</b></span>
|
||||
</td>
|
||||
<td style="width: 18%;">
|
||||
<span style="display: flex; justify-content: center; align-items: center; font-size: 25px; text-align: center;" class="value"><b>{{ d8 }}</b></span>
|
||||
</td>
|
||||
<td style="width: 18%;">
|
||||
<span style="display: flex; justify-content: center; align-items: center; font-size: 25px; text-align: center;" class="value"><b>{{ d9 }}</b></span>
|
||||
</td>
|
||||
<td style="width: 18%;">
|
||||
<span style="display: flex; justify-content: center; align-items: center; font-size: 25px; text-align: center;" class="value"><b>{{ d0 }}</b></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="background-color: transparent;">
|
||||
<td style="width: 18.65%;">
|
||||
<img class="plate" style="width: 100%; border: 0px;" src="systems/fvtt-chroniques-de-l-etrange/images/dice-plate/d10-6.png" />
|
||||
</td>
|
||||
<td style="width: 18%;">
|
||||
<img class="plate" style="width: 100%; border: 0px;" src="systems/fvtt-chroniques-de-l-etrange/images/dice-plate/d10-7.png" />
|
||||
</td>
|
||||
<td style="width: 18%;">
|
||||
<img class="plate" style="width: 100%; border: 0px;" src="systems/fvtt-chroniques-de-l-etrange/images/dice-plate/d10-8.png" />
|
||||
</td>
|
||||
<td style="width: 18%;">
|
||||
<img class="plate" style="width: 100%; border: 0px;" src="systems/fvtt-chroniques-de-l-etrange/images/dice-plate/d10-9.png" />
|
||||
</td>
|
||||
<td style="width: 18%;">
|
||||
<img class="plate" style="width: 100%; border: 0px;" src="systems/fvtt-chroniques-de-l-etrange/images/dice-plate/d10-0.png" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</form>
|
||||
<div class="cde-rr-row cde-rr-row--tinji">
|
||||
<span class="cde-rr-count">{{tinjidice}}</span>
|
||||
<div class="cde-rr-icon"></div>
|
||||
<span class="cde-rr-label">{{ localize "CDE.UpperCaseTinJi" }}</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{{!-- Weapon damage (only for weapon rolls) --}}
|
||||
{{#if weaponName}}
|
||||
<div class="cde-rr-weapon-damage">
|
||||
<i class="fas fa-khanda cde-rr-weapon-icon"></i>
|
||||
<div class="cde-rr-weapon-text">
|
||||
<span class="cde-rr-weapon-name">{{weaponName}}</span>
|
||||
<span class="cde-rr-weapon-calc">
|
||||
{{successesdice}} × {{damageBase}} =
|
||||
<strong class="cde-rr-weapon-total">{{totalDamage}}</strong>
|
||||
<span class="cde-rr-weapon-unit">{{ localize "CDE.TotalDamage" }}</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{!-- Modifiers footer (only if non-empty) --}}
|
||||
{{#if modifiersText}}
|
||||
<div class="cde-rr-footer">
|
||||
<span class="cde-rr-footer-label">{{ localize "CDE.Modifiers" }}</span>
|
||||
<span class="cde-rr-footer-text">{{modifiersText}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{!-- Die face counts grid (d1–d9, d0=10) --}}
|
||||
<div class="cde-dice-grid">
|
||||
<div class="cde-dice-cell" data-face="1">
|
||||
<span class="cde-dice-count">{{d1}}</span>
|
||||
<img class="cde-dice-plate" src="systems/fvtt-chroniques-de-l-etrange/images/dice-plate/d10-1.png" alt="1" />
|
||||
</div>
|
||||
<div class="cde-dice-cell" data-face="2">
|
||||
<span class="cde-dice-count">{{d2}}</span>
|
||||
<img class="cde-dice-plate" src="systems/fvtt-chroniques-de-l-etrange/images/dice-plate/d10-2.png" alt="2" />
|
||||
</div>
|
||||
<div class="cde-dice-cell" data-face="3">
|
||||
<span class="cde-dice-count">{{d3}}</span>
|
||||
<img class="cde-dice-plate" src="systems/fvtt-chroniques-de-l-etrange/images/dice-plate/d10-3.png" alt="3" />
|
||||
</div>
|
||||
<div class="cde-dice-cell" data-face="4">
|
||||
<span class="cde-dice-count">{{d4}}</span>
|
||||
<img class="cde-dice-plate" src="systems/fvtt-chroniques-de-l-etrange/images/dice-plate/d10-4.png" alt="4" />
|
||||
</div>
|
||||
<div class="cde-dice-cell" data-face="5">
|
||||
<span class="cde-dice-count">{{d5}}</span>
|
||||
<img class="cde-dice-plate" src="systems/fvtt-chroniques-de-l-etrange/images/dice-plate/d10-5.png" alt="5" />
|
||||
</div>
|
||||
<div class="cde-dice-cell" data-face="6">
|
||||
<span class="cde-dice-count">{{d6}}</span>
|
||||
<img class="cde-dice-plate" src="systems/fvtt-chroniques-de-l-etrange/images/dice-plate/d10-6.png" alt="6" />
|
||||
</div>
|
||||
<div class="cde-dice-cell" data-face="7">
|
||||
<span class="cde-dice-count">{{d7}}</span>
|
||||
<img class="cde-dice-plate" src="systems/fvtt-chroniques-de-l-etrange/images/dice-plate/d10-7.png" alt="7" />
|
||||
</div>
|
||||
<div class="cde-dice-cell" data-face="8">
|
||||
<span class="cde-dice-count">{{d8}}</span>
|
||||
<img class="cde-dice-plate" src="systems/fvtt-chroniques-de-l-etrange/images/dice-plate/d10-8.png" alt="8" />
|
||||
</div>
|
||||
<div class="cde-dice-cell" data-face="9">
|
||||
<span class="cde-dice-count">{{d9}}</span>
|
||||
<img class="cde-dice-plate" src="systems/fvtt-chroniques-de-l-etrange/images/dice-plate/d10-9.png" alt="9" />
|
||||
</div>
|
||||
<div class="cde-dice-cell" data-face="0">
|
||||
<span class="cde-dice-count">{{d0}}</span>
|
||||
<img class="cde-dice-plate" src="systems/fvtt-chroniques-de-l-etrange/images/dice-plate/d10-0.png" alt="10" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
33
templates/form/cde-initiative-prompt-npc.html
Normal file
33
templates/form/cde-initiative-prompt-npc.html
Normal file
@@ -0,0 +1,33 @@
|
||||
<div class="cde-roll-prompt cde-initiative-prompt">
|
||||
|
||||
<div class="cde-roll-header">
|
||||
<span class="cde-roll-title">{{ localize "CDE.InitiativeRoll" }}</span>
|
||||
<span class="cde-roll-dice-count cde-initiative-icon">⚡</span>
|
||||
</div>
|
||||
|
||||
<div class="cde-roll-section cde-initiative-base-row">
|
||||
<div class="cde-roll-field cde-initiative-base-field">
|
||||
<label>{{ localize "CDE.Physical" }}</label>
|
||||
<span class="cde-initiative-base-value">{{physicalValue}}</span>
|
||||
</div>
|
||||
<span class="cde-initiative-op">+</span>
|
||||
<div class="cde-roll-field cde-initiative-action-field">
|
||||
<label>{{ localize "CDE.FirstAction" }}</label>
|
||||
<select name="firstaction" class="cde-initiative-select">
|
||||
{{#each options}}
|
||||
<option value="{{key}}">{{label}} ({{value}})</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cde-roll-section">
|
||||
<div class="cde-roll-field">
|
||||
<label>{{ localize "CDE.InitiativeBonus" }}</label>
|
||||
<input class="cde-roll-input" type="number" name="modifier" value="{{modifier}}" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cde-initiative-hint">{{ localize "CDE.InitiativeFormulaNPC" }}</div>
|
||||
|
||||
</div>
|
||||
33
templates/form/cde-initiative-prompt.html
Normal file
33
templates/form/cde-initiative-prompt.html
Normal file
@@ -0,0 +1,33 @@
|
||||
<div class="cde-roll-prompt cde-initiative-prompt">
|
||||
|
||||
<div class="cde-roll-header">
|
||||
<span class="cde-roll-title">{{ localize "CDE.InitiativeRoll" }}</span>
|
||||
<span class="cde-roll-dice-count cde-initiative-icon">⚡</span>
|
||||
</div>
|
||||
|
||||
<div class="cde-roll-section cde-initiative-base-row">
|
||||
<div class="cde-roll-field cde-initiative-base-field">
|
||||
<label>{{ localize "CDE.Prowess" }}</label>
|
||||
<span class="cde-initiative-base-value">{{prowessValue}}</span>
|
||||
</div>
|
||||
<span class="cde-initiative-op">+</span>
|
||||
<div class="cde-roll-field cde-initiative-action-field">
|
||||
<label>{{ localize "CDE.FirstAction" }}</label>
|
||||
<select name="firstaction" class="cde-initiative-select">
|
||||
{{#each options}}
|
||||
<option value="{{key}}">{{label}} ({{value}})</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cde-roll-section">
|
||||
<div class="cde-roll-field">
|
||||
<label>{{ localize "CDE.InitiativeBonus" }}</label>
|
||||
<input class="cde-roll-input" type="number" name="modifier" value="{{modifier}}" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cde-initiative-hint">{{ localize "CDE.InitiativeFormula" }}</div>
|
||||
|
||||
</div>
|
||||
41
templates/form/cde-initiative-result.html
Normal file
41
templates/form/cde-initiative-result.html
Normal file
@@ -0,0 +1,41 @@
|
||||
<div class="cde-initiative-result">
|
||||
|
||||
{{!-- Header: actor identity --}}
|
||||
<div class="cde-ir-header">
|
||||
{{#if actorImg}}
|
||||
<img class="cde-ir-avatar" src="{{actorImg}}" alt="{{actorName}}" />
|
||||
{{/if}}
|
||||
<div class="cde-ir-actor-info">
|
||||
<span class="cde-ir-actor-name">{{actorName}}</span>
|
||||
<span class="cde-ir-roll-label">{{ localize "CDE.InitiativeRoll" }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{!-- Formula display --}}
|
||||
<div class="cde-ir-formula">
|
||||
<span class="cde-ir-formula-base">{{baseName}}</span>
|
||||
<span class="cde-ir-formula-val">{{baseValue}}</span>
|
||||
<span class="cde-ir-formula-sep">+</span>
|
||||
<span class="cde-ir-formula-base">{{actionName}}</span>
|
||||
<span class="cde-ir-formula-val">{{actionValue}}</span>
|
||||
{{#if hasModifier}}
|
||||
<span class="cde-ir-formula-sep">{{#if (gt modifier 0)}}+{{else}}{{/if}}</span>
|
||||
<span class="cde-ir-formula-val cde-ir-formula-mod">{{modifier}}</span>
|
||||
{{/if}}
|
||||
<span class="cde-ir-formula-eq">=</span>
|
||||
<span class="cde-ir-formula-total">{{initiative}}</span>
|
||||
</div>
|
||||
|
||||
{{!-- Hero: big neon initiative number --}}
|
||||
<div class="cde-ir-hero">
|
||||
<span class="cde-ir-init-value">{{initiative}}</span>
|
||||
<div class="cde-ir-hero-right">
|
||||
<span class="cde-ir-init-label">{{ localize "CDE.Initiative" }}</span>
|
||||
<span class="cde-ir-anti">
|
||||
<span class="cde-ir-anti-label">{{ localize "CDE.AntiInitiative" }}</span>
|
||||
<span class="cde-ir-anti-value">{{antiInitiative}}</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -1,152 +1,77 @@
|
||||
<form class="flexcol {{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<div class="name">
|
||||
<label><b>{{ localize "CDE.MagicPromptName" }}</b></label>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body" style="background-image: url('/systems/fvtt-chroniques-de-l-etrange/images/cde_fond_transp.png')";
|
||||
<div class="cde-roll-prompt cde-roll-prompt--magic {{cssClass}}">
|
||||
|
||||
{{!-- Frame --}}
|
||||
<div class="frame">
|
||||
<div class="cde-roll-header">
|
||||
<span class="cde-roll-title">{{ localize "CDE.MagicPromptName" }}</span>
|
||||
</div>
|
||||
|
||||
<table style="background-color: transparent; border-top: 0px; border-bottom: 1px; border-color: transparent transparent black;">
|
||||
<tr style="background-color: transparent;">
|
||||
<td>
|
||||
<b>{{ localize "CDE.OneMagicRoll" }}</b>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table style="border: 0px; background-color: transparent;" >
|
||||
<tr style="background-color: transparent;">
|
||||
<td class="label col1-5" style="width: 20%"> </td>
|
||||
<td class="image col2-5">
|
||||
<!-- style="display: flex; justify-content: center; align-items: center;" -->
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img class="bigsquare" style="border: 0px; z-index: 4;" src="systems/fvtt-chroniques-de-l-etrange/images/bigsquare.png" />
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="value" style="font-size: 30px; text-align: center; margin-top: -47px; z-index: 4;"><b>{{ numberofdice }}</b></span>
|
||||
</div>
|
||||
</td>
|
||||
<td class="label col3-5"> </td>
|
||||
<td class="label col4-5" style="font-size: 30px"><b> + </b><b>1 +</b></td>
|
||||
<td class="label col5-5"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
<table style="border: 0px; background-color: transparent;">
|
||||
<tr style="background-color: transparent;">
|
||||
<td class="label col1-5">{{ localize "CDE.AspectSkill" }}</td>
|
||||
<td class="label col2-5"> </td>
|
||||
<td class="label col3-5">{{ localize "CDE.BonusMalus" }}</td>
|
||||
<td class="label col4-5"> </td>
|
||||
<td class="label col5-5">{{ localize "CDE.BonusAuspiciousDice" }}</td>
|
||||
</tr>
|
||||
<tr style="background-color: transparent;">
|
||||
<td class="select col1-5">
|
||||
<select name="aspectskill">
|
||||
{{#select aspectskill }}
|
||||
<option value="0">{{ localize "CDE.Metal" }}</option>
|
||||
<option value="1">{{ localize "CDE.Water" }}</option>
|
||||
<option value="2">{{ localize "CDE.Earth" }}</option>
|
||||
<option value="3">{{ localize "CDE.Fire" }}</option>
|
||||
<option value="4">{{ localize "CDE.Wood" }}</option>
|
||||
{{/select}}
|
||||
</select>
|
||||
</td>
|
||||
<td class="label col2-5" style="font-size: 25px;">+</td>
|
||||
<td class="value col3-5"><input class="input" style="text-align: center; width: 60px;" type="number" name="bonusmalusskill" value="{{bonusmalusskill}}"/></td>
|
||||
<td class="label col4-5"> </td>
|
||||
<td class="select col5-5">
|
||||
<select name="bonusauspiciousdice">
|
||||
{{#select bonusauspiciousdice }}
|
||||
<option value="0">0</option>
|
||||
<option value="1">+1 {{ localize "CDE.AuspiciousDie" }}</option>
|
||||
<option value="2">+2 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="3">+3 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="4">+4 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="5">+5 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="6">+6 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="7">+7 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="8">+8 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="9">+9 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="10">+10 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="11">+11 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="12">+12 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="13">+13 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="14">+14 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="15">+15 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
{{/select}}
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table style="border: 0px; background-color: transparent; margin-top: -10px;">
|
||||
<tr style="background-color: transparent;">
|
||||
<td class="small">
|
||||
<small><i class="click-prefs fas fa-alert"></i> <i>{{ localize "CDE.DoNotModify" }}</i></small>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<table style="background-color: transparent; border-top: 0px; border-bottom: 1px; border-color: transparent transparent black;">
|
||||
<tr style="background-color: transparent;">
|
||||
<td>
|
||||
<b>{{ localize "CDE.TwoPowerOfSpell" }}</b>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table style="border: 0px; background-color: transparent;">
|
||||
<tr style="background-color: transparent;">
|
||||
<td class="label col1-5">{{ localize "CDE.AspectSpeciality" }}</td>
|
||||
<td class="label col2-5"> </td>
|
||||
<td class="label col3-5">{{ localize "CDE.RollDifficulty" }}</td>
|
||||
<td class="label col4-5"> </td>
|
||||
<td class="label col5-5">{{ localize "CDE.BonusMalus" }}</td>
|
||||
</tr>
|
||||
<tr style="background-color: transparent;">
|
||||
<td class="select col1-5">
|
||||
<select name="aspectspeciality">
|
||||
{{#select aspectspeciality }}
|
||||
<option value="0">{{ localize "CDE.Metal" }}</option>
|
||||
<option value="1">{{ localize "CDE.Water" }}</option>
|
||||
<option value="2">{{ localize "CDE.Earth" }}</option>
|
||||
<option value="3">{{ localize "CDE.Fire" }}</option>
|
||||
<option value="4">{{ localize "CDE.Wood" }}</option>
|
||||
{{/select}}
|
||||
</select>
|
||||
</td>
|
||||
<td class="label col2-5" style="font-size: 25px;">⨯</td>
|
||||
<td class="value col3-5"><input class="input" style="text-align: center; width: 60px;" type="number" name="rolldifficulty" value="{{rolldifficulty}}"/></td>
|
||||
<td class="label col4-5" style="font-size: 25px;">+</td>
|
||||
<td class="value col3-5"><input class="input" style="text-align: center; width: 60px;" type="number" name="bonusmalusspeciality" value="{{bonusmalusspeciality}}"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table style="border: 0px; background-color: transparent; margin-top: -10px;">
|
||||
<tr style="background-color: transparent;">
|
||||
<td class="small" style="margin-top: -5px">
|
||||
<small><i class="click-prefs fas fa-alert"></i> <i>{{ localize "CDE.DoNotModify" }}</i></small>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br> <br>
|
||||
<table style="border: 0px; background-color: transparent;">
|
||||
<tr style="background-color: transparent;">
|
||||
<b>{{ localize "CDE.TypeOfThrow" }}</b>
|
||||
<td class="select col 1-2">
|
||||
<select name="typeofthrow">
|
||||
{{#select typeofthrow }}
|
||||
<option value="0">{{ localize "CDE.Everybody" }}</option>
|
||||
<option value="1">{{ localize "CDE.JustDMAndMe" }}</option>
|
||||
<option value="2">{{ localize "CDE.DMOnly" }}</option>
|
||||
<option value="3">{{ localize "CDE.MeOnly" }}</option>
|
||||
{{/select}}
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
{{!-- Part 1: Magic Skill Roll --}}
|
||||
<div class="cde-roll-section cde-roll-section--separator">
|
||||
<p class="cde-roll-section-title">① {{ localize "CDE.OneMagicRoll" }}</p>
|
||||
<div class="cde-roll-dice-count">{{ numberofdice }}<span class="cde-roll-dice-label">d10 +1</span></div>
|
||||
<div class="cde-roll-fields">
|
||||
<div class="cde-roll-field">
|
||||
<label>{{ localize "CDE.AspectSkill" }}</label>
|
||||
<select name="aspectskill">
|
||||
<option value="0" {{#if (eq aspectskill 0)}}selected{{/if}}>{{ localize "CDE.Metal" }}</option>
|
||||
<option value="1" {{#if (eq aspectskill 1)}}selected{{/if}}>{{ localize "CDE.Water" }}</option>
|
||||
<option value="2" {{#if (eq aspectskill 2)}}selected{{/if}}>{{ localize "CDE.Earth" }}</option>
|
||||
<option value="3" {{#if (eq aspectskill 3)}}selected{{/if}}>{{ localize "CDE.Fire" }}</option>
|
||||
<option value="4" {{#if (eq aspectskill 4)}}selected{{/if}}>{{ localize "CDE.Wood" }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="cde-roll-field">
|
||||
<label>{{ localize "CDE.BonusMalus" }}</label>
|
||||
<input class="cde-roll-input" type="number" name="bonusmalusskill" value="{{bonusmalusskill}}" />
|
||||
</div>
|
||||
<div class="cde-roll-field">
|
||||
<label>{{ localize "CDE.BonusAuspiciousDice" }}</label>
|
||||
<input class="cde-roll-input" type="number" name="bonusauspiciousdice" min="0" max="15" value="{{bonusauspiciousdice}}" />
|
||||
</div>
|
||||
</div>
|
||||
<p class="cde-roll-hint"><i>{{ localize "CDE.DoNotModify" }}</i></p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
</form>
|
||||
{{!-- Part 2: Spell Power Roll --}}
|
||||
<div class="cde-roll-section cde-roll-section--separator">
|
||||
<p class="cde-roll-section-title">② {{ localize "CDE.TwoPowerOfSpell" }}</p>
|
||||
<div class="cde-roll-fields">
|
||||
<div class="cde-roll-field">
|
||||
<label>{{ localize "CDE.AspectSpeciality" }}</label>
|
||||
<select name="aspectspeciality">
|
||||
<option value="0" {{#if (eq aspectspeciality 0)}}selected{{/if}}>{{ localize "CDE.Metal" }}</option>
|
||||
<option value="1" {{#if (eq aspectspeciality 1)}}selected{{/if}}>{{ localize "CDE.Water" }}</option>
|
||||
<option value="2" {{#if (eq aspectspeciality 2)}}selected{{/if}}>{{ localize "CDE.Earth" }}</option>
|
||||
<option value="3" {{#if (eq aspectspeciality 3)}}selected{{/if}}>{{ localize "CDE.Fire" }}</option>
|
||||
<option value="4" {{#if (eq aspectspeciality 4)}}selected{{/if}}>{{ localize "CDE.Wood" }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="cde-roll-field">
|
||||
<label>{{ localize "CDE.RollDifficulty" }} (×)</label>
|
||||
<input class="cde-roll-input" type="number" name="rolldifficulty" value="{{rolldifficulty}}" />
|
||||
</div>
|
||||
<div class="cde-roll-field">
|
||||
<label>{{ localize "CDE.BonusMalus" }}</label>
|
||||
<input class="cde-roll-input" type="number" name="bonusmalusspeciality" value="{{bonusmalusspeciality}}" />
|
||||
</div>
|
||||
<div class="cde-roll-field">
|
||||
<label>{{ localize "CDE.HeiSpend" }}</label>
|
||||
<input class="cde-roll-input" type="number" name="heispend" min="0" value="{{heispend}}" />
|
||||
</div>
|
||||
</div>
|
||||
<p class="cde-roll-hint"><i>{{ localize "CDE.DoNotModify" }}</i></p>
|
||||
</div>
|
||||
|
||||
{{!-- Visibility --}}
|
||||
<div class="cde-roll-section">
|
||||
<div class="cde-roll-field">
|
||||
<label>{{ localize "CDE.TypeOfThrow" }}</label>
|
||||
<select name="typeofthrow">
|
||||
<option value="0" {{#if (eq typeofthrow 0)}}selected{{/if}}>{{ localize "CDE.Everybody" }}</option>
|
||||
<option value="1" {{#if (eq typeofthrow 1)}}selected{{/if}}>{{ localize "CDE.JustDMAndMe" }}</option>
|
||||
<option value="2" {{#if (eq typeofthrow 2)}}selected{{/if}}>{{ localize "CDE.DMOnly" }}</option>
|
||||
<option value="3" {{#if (eq typeofthrow 3)}}selected{{/if}}>{{ localize "CDE.MeOnly" }}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -1,102 +1,45 @@
|
||||
<form class="flexcol {{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<div class="name">
|
||||
<label><b>{{ localize "CDE.SkillPromptName" }}</b></label>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body" style="background-image: url('/systems/fvtt-chroniques-de-l-etrange/images/cde_fond_transp.png')";
|
||||
>
|
||||
<div class="cde-roll-prompt {{cssClass}}">
|
||||
|
||||
{{!-- Frame --}}
|
||||
<div class="frame">
|
||||
<div class="cde-roll-header">
|
||||
<span class="cde-roll-title">{{ localize "CDE.SkillPromptName" }}</span>
|
||||
<span class="cde-roll-dice-count">{{ numberofdice }}<span class="cde-roll-dice-label">d10</span></span>
|
||||
</div>
|
||||
|
||||
<table style="border: 0px; background-color: transparent;" >
|
||||
<tr style="background-color: transparent;">
|
||||
<td class="label col1-5"> </td>
|
||||
<td class="image col2-5">
|
||||
<!-- style="display: flex; justify-content: center; align-items: center;" -->
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img class="bigsquare" style="border: 0px; z-index: 4;" src="systems/fvtt-chroniques-de-l-etrange/images/bigsquare.png" />
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="value" style="font-size: 30px; text-align: center; margin-top: -47px; z-index: 4;"><b>{{ numberofdice }}</b></span>
|
||||
</div>
|
||||
</td>
|
||||
<td class="label col3-5"> </td>
|
||||
<td class="label col4-5" style="font-size: 30px"><b> + </b></td>
|
||||
<td class="label col5-5"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
<table style="border: 0px; background-color: transparent;">
|
||||
<tr style="background-color: transparent;">
|
||||
<td class="label col1-3">{{ localize "CDE.Aspect" }}</td>
|
||||
<td class="label col2-3"> </td>
|
||||
<td class="label col3-3">{{ localize "CDE.BonusMalus" }}</td>
|
||||
</tr>
|
||||
<tr style="background-color: transparent;">
|
||||
<td class="select col1-3">
|
||||
<select name="aspect">
|
||||
{{#select aspect }}
|
||||
<option value="0">{{ localize "CDE.Metal" }}</option>
|
||||
<option value="1">{{ localize "CDE.Water" }}</option>
|
||||
<option value="2">{{ localize "CDE.Earth" }}</option>
|
||||
<option value="3">{{ localize "CDE.Fire" }}</option>
|
||||
<option value="4">{{ localize "CDE.Wood" }}</option>
|
||||
{{/select}}
|
||||
</select>
|
||||
</td>
|
||||
<td class="label col2-3" style="font-size: 25px"> + </td>
|
||||
<td class="value col3-3"><input class="input" style="text-align: center; width: 60px;" type="number" name="bonusmalus" value="{{bonusmalus}}"/></td>
|
||||
</tr style="background-color: transparent;">
|
||||
</table>
|
||||
<table style="border: 0px; background-color: transparent;">
|
||||
<tr>
|
||||
<td class="label col123 totheleft">{{ localize "CDE.BonusAuspiciousDice" }}</td>
|
||||
</tr>
|
||||
<tr style="background-color: transparent;">
|
||||
<td class="select col1-1">
|
||||
<select name="bonusauspiciousdice">
|
||||
{{#select bonusauspiciousdice }}
|
||||
<option value="0">0</option>
|
||||
<option value="1">+1 {{ localize "CDE.AuspiciousDie" }}</option>
|
||||
<option value="2">+2 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="3">+3 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="4">+4 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="5">+5 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="6">+6 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="7">+7 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="8">+8 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="9">+9 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="10">+10 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="11">+11 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="12">+12 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="13">+13 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="14">+14 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="15">+15 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
{{/select}}
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<table style="border: 0px; background-color: transparent;">
|
||||
<tr style="background-color: transparent;">
|
||||
<b>{{ localize "CDE.TypeOfThrow" }}</b>
|
||||
<td class="select col 1-2">
|
||||
<select name="typeofthrow">
|
||||
{{#select typeofthrow }}
|
||||
<option value="0">{{ localize "CDE.Everybody" }}</option>
|
||||
<option value="1">{{ localize "CDE.JustDMAndMe" }}</option>
|
||||
<option value="2">{{ localize "CDE.DMOnly" }}</option>
|
||||
<option value="3">{{ localize "CDE.MeOnly" }}</option>
|
||||
{{/select}}
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="cde-roll-section">
|
||||
<div class="cde-roll-field">
|
||||
<label>{{ localize "CDE.Aspect" }}</label>
|
||||
<select name="aspect">
|
||||
<option value="0" {{#if (eq aspect 0)}}selected{{/if}}>{{ localize "CDE.Metal" }}</option>
|
||||
<option value="1" {{#if (eq aspect 1)}}selected{{/if}}>{{ localize "CDE.Water" }}</option>
|
||||
<option value="2" {{#if (eq aspect 2)}}selected{{/if}}>{{ localize "CDE.Earth" }}</option>
|
||||
<option value="3" {{#if (eq aspect 3)}}selected{{/if}}>{{ localize "CDE.Fire" }}</option>
|
||||
<option value="4" {{#if (eq aspect 4)}}selected{{/if}}>{{ localize "CDE.Wood" }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="cde-roll-field">
|
||||
<label>{{ localize "CDE.BonusMalus" }}</label>
|
||||
<input class="cde-roll-input" type="number" name="bonusmalus" value="{{bonusmalus}}" />
|
||||
</div>
|
||||
<div class="cde-roll-field">
|
||||
<label>{{ localize "CDE.WoundMalus" }}</label>
|
||||
<input class="cde-roll-input" type="number" name="woundmalus" value="{{woundmalus}}" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
</form>
|
||||
<div class="cde-roll-section">
|
||||
<div class="cde-roll-field">
|
||||
<label>{{ localize "CDE.BonusAuspiciousDice" }}</label>
|
||||
<input class="cde-roll-input" type="number" name="bonusauspiciousdice" min="0" max="15" value="{{bonusauspiciousdice}}" />
|
||||
</div>
|
||||
<div class="cde-roll-field">
|
||||
<label>{{ localize "CDE.TypeOfThrow" }}</label>
|
||||
<select name="typeofthrow">
|
||||
<option value="0" {{#if (eq typeofthrow 0)}}selected{{/if}}>{{ localize "CDE.Everybody" }}</option>
|
||||
<option value="1" {{#if (eq typeofthrow 1)}}selected{{/if}}>{{ localize "CDE.JustDMAndMe" }}</option>
|
||||
<option value="2" {{#if (eq typeofthrow 2)}}selected{{/if}}>{{ localize "CDE.DMOnly" }}</option>
|
||||
<option value="3" {{#if (eq typeofthrow 3)}}selected{{/if}}>{{ localize "CDE.MeOnly" }}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -1,102 +1,45 @@
|
||||
<form class="flexcol {{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<div class="name">
|
||||
<label><b>{{ localize "CDE.SkillPromptName" }}</b></label>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body" style="background-image: url('/systems/fvtt-chroniques-de-l-etrange/images/cde_fond_transp.png')";
|
||||
>
|
||||
<div class="cde-roll-prompt {{cssClass}}">
|
||||
|
||||
{{!-- Frame --}}
|
||||
<div class="frame">
|
||||
<div class="cde-roll-header">
|
||||
<span class="cde-roll-title">{{ localize "CDE.SkillPromptName" }}</span>
|
||||
<span class="cde-roll-dice-count">{{ numberofdice }}<span class="cde-roll-dice-label">d10 +1</span></span>
|
||||
</div>
|
||||
|
||||
<table style="border: 0px; background-color: transparent;" >
|
||||
<tr style="background-color: transparent;">
|
||||
<td class="label col1-5" style="width: 20%;"> </td>
|
||||
<td class="image col2-5">
|
||||
<!-- style="display: flex; justify-content: center; align-items: center;" -->
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<img class="bigsquare" style="border: 0px; z-index: 4;" src="systems/fvtt-chroniques-de-l-etrange/images/bigsquare.png" />
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;">
|
||||
<span class="value" style="font-size: 30px; text-align: center; margin-top: -47px; z-index: 4;"><b>{{ numberofdice }}</b></span>
|
||||
</div>
|
||||
</td>
|
||||
<td class="label col3-5"> </td>
|
||||
<td class="label col4-5" style="font-size: 30px"><b> + </b><b>1 +</b></td>
|
||||
<td class="label col5-5"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
<table style="border: 0px; background-color: transparent;">
|
||||
<tr style="background-color: transparent;">
|
||||
<td class="label col1-3">{{ localize "CDE.Aspect" }}</td>
|
||||
<td class="label col2-3"> </td>
|
||||
<td class="label col3-3">{{ localize "CDE.BonusMalus" }}</td>
|
||||
</tr>
|
||||
<tr style="background-color: transparent;">
|
||||
<td class="select col1-3">
|
||||
<select name="aspect">
|
||||
{{#select aspect }}
|
||||
<option value="0">{{ localize "CDE.Metal" }}</option>
|
||||
<option value="1">{{ localize "CDE.Water" }}</option>
|
||||
<option value="2">{{ localize "CDE.Earth" }}</option>
|
||||
<option value="3">{{ localize "CDE.Fire" }}</option>
|
||||
<option value="4">{{ localize "CDE.Wood" }}</option>
|
||||
{{/select}}
|
||||
</select>
|
||||
</td>
|
||||
<td class="label col2-3" style="font-size: 25px"> + </td>
|
||||
<td class="value col3-3"><input class="input" style="text-align: center; width: 60px;" type="number" name="bonusmalus" value="{{bonusmalus}}"/></td>
|
||||
</tr style="background-color: transparent;">
|
||||
</table>
|
||||
<table style="border: 0px; background-color: transparent;">
|
||||
<tr>
|
||||
<td class="label col123 totheleft">{{ localize "CDE.BonusAuspiciousDice" }}</td>
|
||||
</tr>
|
||||
<tr style="background-color: transparent;">
|
||||
<td class="select col1-1">
|
||||
<select name="bonusauspiciousdice">
|
||||
{{#select bonusauspiciousdice }}
|
||||
<option value="0">0</option>
|
||||
<option value="1">+1 {{ localize "CDE.AuspiciousDie" }}</option>
|
||||
<option value="2">+2 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="3">+3 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="4">+4 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="5">+5 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="6">+6 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="7">+7 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="8">+8 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="9">+9 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="10">+10 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="11">+11 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="12">+12 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="13">+13 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="14">+14 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
<option value="15">+15 {{ localize "CDE.AuspiciousDice" }}</option>
|
||||
{{/select}}
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<table style="border: 0px; background-color: transparent;">
|
||||
<tr style="background-color: transparent;">
|
||||
<b>{{ localize "CDE.TypeOfThrow" }}</b>
|
||||
<td class="select col 1-2">
|
||||
<select name="typeofthrow">
|
||||
{{#select typeofthrow }}
|
||||
<option value="0">{{ localize "CDE.Everybody" }}</option>
|
||||
<option value="1">{{ localize "CDE.JustDMAndMe" }}</option>
|
||||
<option value="2">{{ localize "CDE.DMOnly" }}</option>
|
||||
<option value="3">{{ localize "CDE.MeOnly" }}</option>
|
||||
{{/select}}
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="cde-roll-section">
|
||||
<div class="cde-roll-field">
|
||||
<label>{{ localize "CDE.Aspect" }}</label>
|
||||
<select name="aspect">
|
||||
<option value="0" {{#if (eq aspect 0)}}selected{{/if}}>{{ localize "CDE.Metal" }}</option>
|
||||
<option value="1" {{#if (eq aspect 1)}}selected{{/if}}>{{ localize "CDE.Water" }}</option>
|
||||
<option value="2" {{#if (eq aspect 2)}}selected{{/if}}>{{ localize "CDE.Earth" }}</option>
|
||||
<option value="3" {{#if (eq aspect 3)}}selected{{/if}}>{{ localize "CDE.Fire" }}</option>
|
||||
<option value="4" {{#if (eq aspect 4)}}selected{{/if}}>{{ localize "CDE.Wood" }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="cde-roll-field">
|
||||
<label>{{ localize "CDE.BonusMalus" }}</label>
|
||||
<input class="cde-roll-input" type="number" name="bonusmalus" value="{{bonusmalus}}" />
|
||||
</div>
|
||||
<div class="cde-roll-field">
|
||||
<label>{{ localize "CDE.WoundMalus" }}</label>
|
||||
<input class="cde-roll-input" type="number" name="woundmalus" value="{{woundmalus}}" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
</form>
|
||||
<div class="cde-roll-section">
|
||||
<div class="cde-roll-field">
|
||||
<label>{{ localize "CDE.BonusAuspiciousDice" }}</label>
|
||||
<input class="cde-roll-input" type="number" name="bonusauspiciousdice" min="0" max="15" value="{{bonusauspiciousdice}}" />
|
||||
</div>
|
||||
<div class="cde-roll-field">
|
||||
<label>{{ localize "CDE.TypeOfThrow" }}</label>
|
||||
<select name="typeofthrow">
|
||||
<option value="0" {{#if (eq typeofthrow 0)}}selected{{/if}}>{{ localize "CDE.Everybody" }}</option>
|
||||
<option value="1" {{#if (eq typeofthrow 1)}}selected{{/if}}>{{ localize "CDE.JustDMAndMe" }}</option>
|
||||
<option value="2" {{#if (eq typeofthrow 2)}}selected{{/if}}>{{ localize "CDE.DMOnly" }}</option>
|
||||
<option value="3" {{#if (eq typeofthrow 3)}}selected{{/if}}>{{ localize "CDE.MeOnly" }}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
80
templates/form/cde-weapon-dice-prompt.html
Normal file
80
templates/form/cde-weapon-dice-prompt.html
Normal file
@@ -0,0 +1,80 @@
|
||||
<div class="cde-roll-prompt cde-weapon-prompt {{cssClass}}">
|
||||
|
||||
{{!-- Weapon identity bar --}}
|
||||
<div class="cde-weapon-info-bar">
|
||||
<img class="cde-weapon-aspect-icon" src="{{weaponAspectIcon}}" alt="{{weaponAspectLabel}}" />
|
||||
<div class="cde-weapon-info-text">
|
||||
<span class="cde-weapon-info-name">{{weaponName}}</span>
|
||||
<span class="cde-weapon-info-meta">{{ localize weaponTypeLabel }} · {{ localize "CDE.DamageBase" }}: {{damageBase}}</span>
|
||||
</div>
|
||||
<div class="cde-weapon-info-badge">
|
||||
<i class="fas fa-dice-d10"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cde-roll-header">
|
||||
<span class="cde-roll-title">{{ localize "CDE.WeaponRollTitle" }}</span>
|
||||
<span class="cde-roll-dice-count">{{numberofdice}}<span class="cde-roll-dice-label">d10</span></span>
|
||||
</div>
|
||||
|
||||
<div class="cde-roll-section">
|
||||
<div class="cde-roll-field">
|
||||
<label>{{ localize "CDE.Skill" }}</label>
|
||||
<select name="weaponskill">
|
||||
<option value="kungfu" {{#if (eq weaponskill "kungfu")}}selected{{/if}}>{{ localize "CDE.KungFu" }}</option>
|
||||
<option value="rangedcombat" {{#if (eq weaponskill "rangedcombat")}}selected{{/if}}>{{ localize "CDE.RangedCombat" }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="cde-roll-field">
|
||||
<label>{{ localize "CDE.Aspect" }}</label>
|
||||
<select name="aspect">
|
||||
<option value="0" {{#if (eq aspect 0)}}selected{{/if}}>{{ localize "CDE.Metal" }}</option>
|
||||
<option value="1" {{#if (eq aspect 1)}}selected{{/if}}>{{ localize "CDE.Water" }}</option>
|
||||
<option value="2" {{#if (eq aspect 2)}}selected{{/if}}>{{ localize "CDE.Earth" }}</option>
|
||||
<option value="3" {{#if (eq aspect 3)}}selected{{/if}}>{{ localize "CDE.Fire" }}</option>
|
||||
<option value="4" {{#if (eq aspect 4)}}selected{{/if}}>{{ localize "CDE.Wood" }}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cde-roll-section">
|
||||
<div class="cde-roll-field">
|
||||
<label>{{ localize "CDE.EffectiveRange" }}</label>
|
||||
<select name="effectiverange">
|
||||
<option value="contact" {{#if (eq effectiverange "contact")}}selected{{/if}}>{{ localize "CDE.RangeContact" }} (±0)</option>
|
||||
<option value="courte" {{#if (eq effectiverange "courte") }}selected{{/if}}>{{ localize "CDE.RangeCourte" }} (±0)</option>
|
||||
<option value="mediane" {{#if (eq effectiverange "mediane")}}selected{{/if}}>{{ localize "CDE.RangeMediane" }} (−1)</option>
|
||||
<option value="longue" {{#if (eq effectiverange "longue") }}selected{{/if}}>{{ localize "CDE.RangeLongue" }} (−2)</option>
|
||||
<option value="extreme" {{#if (eq effectiverange "extreme")}}selected{{/if}}>{{ localize "CDE.RangeExtreme" }} (−3)</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="cde-roll-field">
|
||||
<label>{{ localize "CDE.BonusMalus" }}</label>
|
||||
<input class="cde-roll-input" type="number" name="bonusmalus" value="{{bonusmalus}}" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cde-roll-section">
|
||||
<div class="cde-roll-field">
|
||||
<label>{{ localize "CDE.WoundMalus" }}</label>
|
||||
<input class="cde-roll-input" type="number" name="woundmalus" value="{{woundmalus}}" />
|
||||
</div>
|
||||
<div class="cde-roll-field">
|
||||
<label>{{ localize "CDE.BonusAuspiciousDice" }}</label>
|
||||
<input class="cde-roll-input" type="number" name="bonusauspiciousdice" min="0" max="15" value="{{bonusauspiciousdice}}" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cde-roll-section">
|
||||
<div class="cde-roll-field">
|
||||
<label>{{ localize "CDE.TypeOfThrow" }}</label>
|
||||
<select name="typeofthrow">
|
||||
<option value="0" {{#if (eq typeofthrow 0)}}selected{{/if}}>{{ localize "CDE.Everybody" }}</option>
|
||||
<option value="1" {{#if (eq typeofthrow 1)}}selected{{/if}}>{{ localize "CDE.JustDMAndMe" }}</option>
|
||||
<option value="2" {{#if (eq typeofthrow 2)}}selected{{/if}}>{{ localize "CDE.DMOnly" }}</option>
|
||||
<option value="3" {{#if (eq typeofthrow 3)}}selected{{/if}}>{{ localize "CDE.MeOnly" }}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
65
templates/item/cde-armor-sheet.html
Normal file
65
templates/item/cde-armor-sheet.html
Normal file
@@ -0,0 +1,65 @@
|
||||
<section class="flexcol cde-sheet {{cssClass}}">
|
||||
<header class="cde-neon-header armor">
|
||||
<img class="cde-avatar" src="{{item.img}}" data-edit="img" title="{{item.name}}" />
|
||||
<div class="cde-header-content">
|
||||
<h1 class="cde-item-name">
|
||||
<input name="name" type="text" value="{{item.name}}" placeholder="{{ localize 'CDE.Name' }}" />
|
||||
</h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<nav class="sheet-tabs tabs cde-neon-tabs" data-group="primary">
|
||||
<a class="item" data-action="tab" data-group="primary" data-tab="details">{{ localize "CDE.Details" }}</a>
|
||||
<a class="item" data-action="tab" data-group="primary" data-tab="description">{{ localize "CDE.Description" }}</a>
|
||||
<a class="item" data-action="tab" data-group="primary" data-tab="notes">{{ localize "CDE.Notes" }}</a>
|
||||
</nav>
|
||||
|
||||
<section class="sheet-body cde-tab-body">
|
||||
<div class="tab" data-group="primary" data-tab="details">
|
||||
<div class="cde-tab-label">{{ localize "CDE.Details" }}</div>
|
||||
<div class="cde-card">
|
||||
<div class="cde-stat-grid">
|
||||
<div class="cde-stat-cell">
|
||||
<span class="cde-stat-label">{{ localize "CDE.ProtectionValue" }}</span>
|
||||
<input type="number" name="system.protectionValue" value="{{systemData.protectionValue}}" />
|
||||
</div>
|
||||
<div class="cde-stat-cell">
|
||||
<span class="cde-stat-label">{{ localize "CDE.Domain" }}</span>
|
||||
<input type="text" name="system.domain" value="{{systemData.domain}}" placeholder="—" />
|
||||
</div>
|
||||
<div class="cde-stat-cell">
|
||||
<span class="cde-stat-label">{{ localize "CDE.ObtainLevel" }}</span>
|
||||
<input type="number" name="system.obtainLevel" value="{{systemData.obtainLevel}}" min="0" max="5" />
|
||||
</div>
|
||||
<div class="cde-stat-cell">
|
||||
<span class="cde-stat-label">{{ localize "CDE.ObtainDifficulty" }}</span>
|
||||
<input type="number" name="system.obtainDifficulty" value="{{systemData.obtainDifficulty}}" min="0" max="3" />
|
||||
</div>
|
||||
<div class="cde-stat-cell">
|
||||
<span class="cde-stat-label">{{ localize "CDE.Quantity" }}</span>
|
||||
<input type="number" name="system.quantity" value="{{systemData.quantity}}" />
|
||||
</div>
|
||||
<div class="cde-stat-cell">
|
||||
<span class="cde-stat-label">{{ localize "CDE.Reference" }}</span>
|
||||
<input type="text" name="system.reference" value="{{systemData.reference}}" placeholder="—" />
|
||||
</div>
|
||||
</div>
|
||||
<div style="margin-top:8px;">
|
||||
<span class="cde-badge armor">{{ localize "CDE.Protection" }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab" data-group="primary" data-tab="description">
|
||||
<div class="cde-tab-label">{{ localize "CDE.Description" }}</div>
|
||||
<div class="cde-card cde-notes-editor">
|
||||
{{formInput systemFields.description enriched=descriptionHTML value=system.description name="system.description" toggled=true}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab" data-group="primary" data-tab="notes">
|
||||
<div class="cde-tab-label">{{ localize "CDE.Notes" }}</div>
|
||||
<div class="cde-card cde-notes-editor">
|
||||
{{formInput systemFields.notes enriched=notesHTML value=system.notes name="system.notes" toggled=true}}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
68
templates/item/cde-ingredient-sheet.html
Normal file
68
templates/item/cde-ingredient-sheet.html
Normal file
@@ -0,0 +1,68 @@
|
||||
<section class="flexcol cde-sheet {{cssClass}}">
|
||||
<header class="cde-neon-header ingredient">
|
||||
<img class="cde-avatar" src="{{item.img}}" data-edit="img" title="{{item.name}}" />
|
||||
<div class="cde-header-content">
|
||||
<h1 class="cde-item-name">
|
||||
<input name="name" type="text" value="{{item.name}}" placeholder="{{ localize 'CDE.Name' }}" />
|
||||
</h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<nav class="sheet-tabs tabs cde-neon-tabs" data-group="primary">
|
||||
<a class="item" data-action="tab" data-group="primary" data-tab="details">{{ localize "CDE.Details" }}</a>
|
||||
<a class="item" data-action="tab" data-group="primary" data-tab="description">{{ localize "CDE.Description" }}</a>
|
||||
<a class="item" data-action="tab" data-group="primary" data-tab="notes">{{ localize "CDE.Notes" }}</a>
|
||||
</nav>
|
||||
|
||||
<section class="sheet-body cde-tab-body">
|
||||
<div class="tab" data-group="primary" data-tab="details">
|
||||
<div class="cde-tab-label">{{ localize "CDE.Details" }}</div>
|
||||
<div class="cde-card">
|
||||
<div class="cde-stat-grid">
|
||||
<div class="cde-stat-cell">
|
||||
<span class="cde-stat-label">{{ localize "CDE.School" }}</span>
|
||||
<select name="system.school">
|
||||
<option value="all" {{#if (eq systemData.school "all")}}selected{{/if}}>{{ localize "CDE.SchoolAll" }}</option>
|
||||
<option value="cinabre" {{#if (eq systemData.school "cinabre")}}selected{{/if}}>{{ localize "CDE.SchoolCinabre" }}</option>
|
||||
<option value="alchemy" {{#if (eq systemData.school "alchemy")}}selected{{/if}}>{{ localize "CDE.SchoolAlchemy" }}</option>
|
||||
<option value="voie" {{#if (eq systemData.school "voie")}}selected{{/if}}>{{ localize "CDE.SchoolVoie" }}</option>
|
||||
<option value="exorcisme" {{#if (eq systemData.school "exorcisme")}}selected{{/if}}>{{ localize "CDE.SchoolExorcisme" }}</option>
|
||||
<option value="geomancy" {{#if (eq systemData.school "geomancy")}}selected{{/if}}>{{ localize "CDE.SchoolGeomancy" }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="cde-stat-cell">
|
||||
<span class="cde-stat-label">{{ localize "CDE.ObtainLevel" }}</span>
|
||||
<input type="number" name="system.obtainLevel" value="{{systemData.obtainLevel}}" min="0" max="5" />
|
||||
</div>
|
||||
<div class="cde-stat-cell">
|
||||
<span class="cde-stat-label">{{ localize "CDE.ObtainDifficulty" }}</span>
|
||||
<input type="number" name="system.obtainDifficulty" value="{{systemData.obtainDifficulty}}" min="0" max="3" />
|
||||
</div>
|
||||
<div class="cde-stat-cell">
|
||||
<span class="cde-stat-label">{{ localize "CDE.Quantity" }}</span>
|
||||
<input type="number" name="system.quantity" value="{{systemData.quantity}}" />
|
||||
</div>
|
||||
<div class="cde-stat-cell">
|
||||
<span class="cde-stat-label">{{ localize "CDE.Reference" }}</span>
|
||||
<input type="text" name="system.reference" value="{{systemData.reference}}" placeholder="—" />
|
||||
</div>
|
||||
</div>
|
||||
<div style="margin-top:8px;">
|
||||
<span class="cde-badge ingredient">{{ localize "CDE.Ingredient" }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab" data-group="primary" data-tab="description">
|
||||
<div class="cde-tab-label">{{ localize "CDE.Description" }}</div>
|
||||
<div class="cde-card cde-notes-editor">
|
||||
{{formInput systemFields.description enriched=descriptionHTML value=system.description name="system.description" toggled=true}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab" data-group="primary" data-tab="notes">
|
||||
<div class="cde-tab-label">{{ localize "CDE.Notes" }}</div>
|
||||
<div class="cde-card cde-notes-editor">
|
||||
{{formInput systemFields.notes enriched=notesHTML value=system.notes name="system.notes" toggled=true}}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
@@ -1,67 +1,53 @@
|
||||
<form class="flexcol cde-sheet {{cssClass}}" autocomplete="off">
|
||||
<section class="flexcol cde-sheet {{cssClass}}">
|
||||
<header class="cde-neon-header item">
|
||||
<img class="cde-avatar" src="{{item.img}}" data-edit="img" title="{{item.name}}" />
|
||||
<div class="cde-header-content">
|
||||
<h1 class="cde-item-name">
|
||||
<input name="name" type="text" value="{{item.name}}" placeholder="{{ localize 'CDE.Name' }}" />
|
||||
</h1>
|
||||
<div class="cde-stat-grid">
|
||||
<div class="cde-stat-cell">
|
||||
<span class="cde-stat-label">{{ localize "CDE.TypeOfItem" }}</span>
|
||||
<select name="system.subtype">
|
||||
{{selectOptions subtypes selected=systemData.subtype labelAttr="label"}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="cde-stat-cell">
|
||||
<span class="cde-stat-label">{{ localize "CDE.Reference" }}</span>
|
||||
<input type="text" name="system.reference" value="{{systemData.reference}}" placeholder="—" />
|
||||
</div>
|
||||
<div class="cde-stat-cell">
|
||||
<span class="cde-stat-label">{{ localize "CDE.Quantity" }}</span>
|
||||
<input type="number" name="system.quantity" value="{{systemData.quantity}}" />
|
||||
</div>
|
||||
<div class="cde-stat-cell">
|
||||
<span class="cde-stat-label">{{ localize "CDE.Weight" }}</span>
|
||||
<input type="number" name="system.weight" value="{{systemData.weight}}" />
|
||||
</div>
|
||||
{{#if isWeapon}}
|
||||
<div class="cde-stat-cell">
|
||||
<span class="cde-stat-label">{{ localize "CDE.Damage" }}</span>
|
||||
<input type="text" name="system.damage" value="{{systemData.damage}}" placeholder="—" />
|
||||
</div>
|
||||
<div class="cde-stat-cell">
|
||||
<span class="cde-stat-label">{{ localize "CDE.Range" }}</span>
|
||||
<input type="text" name="system.range" value="{{systemData.range}}" placeholder="—" />
|
||||
</div>
|
||||
{{/if}}
|
||||
{{#if isArmor}}
|
||||
<div class="cde-stat-cell">
|
||||
<span class="cde-stat-label">{{ localize "CDE.Protection" }}</span>
|
||||
<input type="text" name="system.protection" value="{{systemData.protection}}" placeholder="—" />
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
<div style="margin-top:6px;">
|
||||
<span class="cde-badge item">{{ localize "CDE.Items" }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<nav class="sheet-tabs tabs cde-neon-tabs" data-group="primary">
|
||||
<a class="item" data-action="tab" data-group="primary" data-tab="details">{{ localize "CDE.Details" }}</a>
|
||||
<a class="item" data-action="tab" data-group="primary" data-tab="description">{{ localize "CDE.Description" }}</a>
|
||||
<a class="item" data-action="tab" data-group="primary" data-tab="notes">{{ localize "CDE.Notes" }}</a>
|
||||
</nav>
|
||||
|
||||
<section class="sheet-body cde-tab-body">
|
||||
<div class="tab" data-group="primary" data-tab="details">
|
||||
<div class="cde-tab-label">{{ localize "CDE.Details" }}</div>
|
||||
<div class="cde-card">
|
||||
<div class="cde-stat-grid">
|
||||
<div class="cde-stat-cell">
|
||||
<span class="cde-stat-label">{{ localize "CDE.Reference" }}</span>
|
||||
<input type="text" name="system.reference" value="{{systemData.reference}}" placeholder="—" />
|
||||
</div>
|
||||
<div class="cde-stat-cell">
|
||||
<span class="cde-stat-label">{{ localize "CDE.Quantity" }}</span>
|
||||
<input type="number" name="system.quantity" value="{{systemData.quantity}}" />
|
||||
</div>
|
||||
<div class="cde-stat-cell">
|
||||
<span class="cde-stat-label">{{ localize "CDE.Weight" }}</span>
|
||||
<input type="number" name="system.weight" value="{{systemData.weight}}" />
|
||||
</div>
|
||||
</div>
|
||||
<div style="margin-top:8px;">
|
||||
<span class="cde-badge item">{{ localize "CDE.Items" }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab" data-group="primary" data-tab="description">
|
||||
<div class="cde-tab-label">{{ localize "CDE.Description" }}</div>
|
||||
<div class="cde-card cde-notes-editor">
|
||||
{{editor descriptionHTML target="system.description" button=true editable=editable engine="prosemirror"}}
|
||||
{{formInput systemFields.description enriched=descriptionHTML value=system.description name="system.description" toggled=true}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab" data-group="primary" data-tab="notes">
|
||||
<div class="cde-tab-label">{{ localize "CDE.Notes" }}</div>
|
||||
<div class="cde-card cde-notes-editor">
|
||||
{{editor notesHTML target="system.notes" button=true editable=editable engine="prosemirror"}}
|
||||
{{formInput systemFields.notes enriched=notesHTML value=system.notes name="system.notes" toggled=true}}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user