From 0df4a5a9fb521233d82dc1b871e3785d77fea4f7 Mon Sep 17 00:00:00 2001 From: LeRatierBretonnier Date: Sat, 2 May 2026 23:16:10 +0200 Subject: [PATCH] Esprit de la Loi + Automaton --- lang/en.json | 58 ++- lang/fr.json | 61 ++- less/actor-styles.less | 35 +- less/item-styles.less | 38 ++ less/simple-converted.less | 232 +++++++++++ .../mournblade-enchantement-dialog.mjs | 157 ++++++++ .../mournblade-invocation-demon-dialog.mjs | 174 +++++++++ .../mournblade-invocation-dialog.mjs | 32 +- .../mournblade-invocation-esprit-dialog.mjs | 138 +++++++ .../applications/sheets/base-actor-sheet.mjs | 88 ++++- .../applications/sheets/base-item-sheet.mjs | 58 ++- .../sheets/mournblade-creature-sheet.mjs | 1 + .../sheets/mournblade-personnage-sheet.mjs | 4 + modules/models/arme.mjs | 7 +- modules/models/bouclier.mjs | 7 +- modules/models/creature.mjs | 5 + modules/models/equipement.mjs | 7 +- modules/models/personnage.mjs | 1 + modules/models/protection.mjs | 7 +- modules/mournblade-actor.js | 100 ++++- modules/mournblade-config.js | 37 ++ modules/mournblade-utility.js | 244 +++++++++++- packs/armes/{000370.log => 000398.log} | 0 packs/armes/CURRENT | 2 +- packs/armes/LOG | 14 +- packs/armes/LOG.old | 14 +- .../{MANIFEST-000368 => MANIFEST-000396} | Bin 175 -> 175 bytes .../automatons/000004.log} | 0 packs/automatons/automatons/000005.ldb | Bin 0 -> 30382 bytes .../automatons/000018.log} | 0 packs/automatons/automatons/000020.ldb | Bin 0 -> 20355 bytes packs/automatons/automatons/CURRENT | 1 + .../000369.log => automatons/automatons/LOCK} | 0 packs/automatons/automatons/LOG | 5 + packs/automatons/automatons/MANIFEST-000002 | Bin 0 -> 161 bytes .../capacites-automaton/000004.log} | 0 .../capacites-automaton/000005.ldb | Bin 0 -> 3865 bytes .../capacites-automaton/CURRENT | 1 + .../capacites-automaton/LOCK} | 0 .../capacites-automaton/LOG | 5 + .../capacites-automaton/MANIFEST-000002 | Bin 0 -> 134 bytes .../creatures-elementaires/000049.log} | 0 .../{000016.ldb => 000051.ldb} | Bin 12773 -> 12842 bytes .../creatures-elementaires/CURRENT | 2 +- .../creatures-elementaires/LOG | 26 +- .../creatures-elementaires/LOG.old | 18 +- .../creatures-elementaires/MANIFEST-000012 | Bin 351 -> 0 bytes .../creatures-elementaires/MANIFEST-000047 | Bin 0 -> 393 bytes .../demons-types/000028.log} | 0 packs/demons-types/demons-types/000030.ldb | Bin 0 -> 34643 bytes packs/demons-types/demons-types/CURRENT | 1 + .../demons-types/LOCK} | 0 packs/demons-types/demons-types/LOG | 15 + packs/demons-types/demons-types/LOG.old | 15 + .../demons-types/demons-types/MANIFEST-000026 | Bin 0 -> 395 bytes .../000265.log => dons/000397.log} | 0 packs/dons/CURRENT | 2 +- packs/dons/LOG | 14 +- packs/dons/LOG.old | 14 +- .../dons/{MANIFEST-000367 => MANIFEST-000395} | Bin 173 -> 173 bytes .../000012.log => equipement/000397.log} | 0 packs/equipement/CURRENT | 2 +- packs/equipement/LOG | 14 +- packs/equipement/LOG.old | 14 +- .../{MANIFEST-000367 => MANIFEST-000395} | Bin 175 -> 175 bytes .../000369.log => heritages/000397.log} | 0 packs/heritages/CURRENT | 2 +- packs/heritages/LOG | 14 +- packs/heritages/LOG.old | 14 +- .../{MANIFEST-000367 => MANIFEST-000395} | Bin 173 -> 173 bytes .../journal-aide/000057.log} | 0 packs/journal-aide/journal-aide/CURRENT | 2 +- packs/journal-aide/journal-aide/LOG | 16 +- packs/journal-aide/journal-aide/LOG.old | 16 +- .../{MANIFEST-000027 => MANIFEST-000055} | Bin 220 -> 220 bytes .../{scenes/000285.log => metiers/000397.log} | 0 packs/metiers/CURRENT | 2 +- packs/metiers/LOG | 14 +- packs/metiers/LOG.old | 14 +- .../{MANIFEST-000367 => MANIFEST-000395} | Bin 173 -> 173 bytes .../000277.log => origines/000397.log} | 0 packs/origines/CURRENT | 2 +- packs/origines/LOG | 14 +- packs/origines/LOG.old | 14 +- .../{MANIFEST-000367 => MANIFEST-000395} | Bin 173 -> 173 bytes .../000369.log => pactes-dons/000075.log} | 0 packs/pactes-dons/CURRENT | 2 +- packs/pactes-dons/LOG | 14 +- packs/pactes-dons/LOG.old | 14 +- .../{MANIFEST-000045 => MANIFEST-000073} | Bin 168 -> 168 bytes .../pnj-creatures/{000232.ldb => 000279.ldb} | Bin .../000369.log => pnj-creatures/000294.log} | 0 packs/pnj-creatures/CURRENT | 2 +- packs/pnj-creatures/LOG | 14 +- packs/pnj-creatures/LOG.old | 14 +- packs/pnj-creatures/MANIFEST-000263 | Bin 181 -> 0 bytes packs/pnj-creatures/MANIFEST-000292 | Bin 0 -> 181 bytes .../pouvoirs-elementaires/000014.ldb | Bin 1091 -> 0 bytes .../pouvoirs-elementaires/000047.log} | 0 .../pouvoirs-elementaires/000049.ldb | Bin 0 -> 1092 bytes .../pouvoirs-elementaires/CURRENT | 2 +- .../pouvoirs-elementaires/LOG | 30 +- .../pouvoirs-elementaires/LOG.old | 23 +- .../pouvoirs-elementaires/MANIFEST-000010 | Bin 316 -> 0 bytes .../pouvoirs-elementaires/MANIFEST-000045 | Bin 0 -> 341 bytes .../000369.log => protection/000397.log} | 0 packs/protection/CURRENT | 2 +- packs/protection/LOG | 14 +- packs/protection/LOG.old | 14 +- .../{MANIFEST-000367 => MANIFEST-000395} | Bin 173 -> 173 bytes packs/runes/000398.log | 0 packs/runes/CURRENT | 2 +- packs/runes/LOG | 14 +- packs/runes/LOG.old | 14 +- .../{MANIFEST-000368 => MANIFEST-000396} | Bin 176 -> 176 bytes packs/scenes/000313.log | 0 packs/scenes/CURRENT | 2 +- packs/scenes/LOG | 14 +- packs/scenes/LOG.old | 14 +- .../{MANIFEST-000283 => MANIFEST-000311} | Bin 224 -> 224 bytes packs/skills-creatures/000305.log | 0 packs/skills-creatures/CURRENT | 2 +- packs/skills-creatures/LOG | 14 +- packs/skills-creatures/LOG.old | 14 +- .../{MANIFEST-000275 => MANIFEST-000303} | Bin 173 -> 173 bytes packs/skills/000397.log | 0 packs/skills/CURRENT | 2 +- packs/skills/LOG | 14 +- packs/skills/LOG.old | 14 +- .../{MANIFEST-000367 => MANIFEST-000395} | Bin 173 -> 173 bytes .../automatons/automaton-combat-majeur.json | 245 ++++++++++++ .../automatons/automaton-combat-median.json | 202 ++++++++++ .../automatons/automaton-combat-mineur.json | 159 ++++++++ .../automatons/automaton-coursier-gris.json | 151 +++++++ .../automaton-justicier-donblas.json | 210 ++++++++++ .../automatons/automaton-oeil-de-verite.json | 140 +++++++ .../automaton-perception-majeur.json | 245 ++++++++++++ .../automaton-perception-median.json | 202 ++++++++++ .../automaton-perception-mineur.json | 159 ++++++++ .../automaton-reparateur-majeur.json | 181 +++++++++ .../automaton-reparateur-median.json | 170 ++++++++ .../automaton-reparateur-mineur.json | 159 ++++++++ .../automaton-restauration-majeur.json | 245 ++++++++++++ .../automaton-restauration-median.json | 202 ++++++++++ .../automaton-restauration-mineur.json | 159 ++++++++ .../automatons/automaton-voyage-majeur.json | 245 ++++++++++++ .../automatons/automaton-voyage-median.json | 202 ++++++++++ .../automatons/automaton-voyage-mineur.json | 159 ++++++++ .../combat-absorption.json | 13 + .../src/capacites-automaton/combat-aura.json | 13 + .../combat-benediction.json | 13 + .../perception-alarme.json | 13 + .../perception-dissertation.json | 13 + .../perception-reponse.json | 13 + .../reparateur-petite-reparation.json | 18 + .../reparateur-renovation.json | 18 + .../reparateur-reparation.json | 18 + .../restauration-soin-grave.json | 18 + .../restauration-soin-leger.json | 18 + .../restauration-soin-mortel.json | 18 + .../capacites-automaton/voyage-air-pur.json | 13 + .../voyage-invulnerabilite.json | 13 + .../capacites-automaton/voyage-vitesse.json | 13 + packs/src/demons/demon-combat-majeur.json | 208 ++++++++++ packs/src/demons/demon-combat-median.json | 176 +++++++++ packs/src/demons/demon-combat-mineur.json | 144 +++++++ packs/src/demons/demon-desir-majeur.json | 208 ++++++++++ packs/src/demons/demon-desir-median.json | 176 +++++++++ packs/src/demons/demon-desir-mineur.json | 144 +++++++ packs/src/demons/demon-protection-majeur.json | 208 ++++++++++ packs/src/demons/demon-protection-median.json | 176 +++++++++ packs/src/demons/demon-protection-mineur.json | 144 +++++++ packs/src/demons/demon-savoir-majeur.json | 208 ++++++++++ packs/src/demons/demon-savoir-median.json | 176 +++++++++ packs/src/demons/demon-savoir-mineur.json | 144 +++++++ packs/src/demons/demon-voyage-majeur.json | 208 ++++++++++ packs/src/demons/demon-voyage-median.json | 176 +++++++++ packs/src/demons/demon-voyage-mineur.json | 144 +++++++ packs/src/traits-demoniaques/absorption.json | 18 + packs/src/traits-demoniaques/acidite.json | 18 + packs/src/traits-demoniaques/adresse.json | 18 + packs/src/traits-demoniaques/ailes.json | 18 + packs/src/traits-demoniaques/allure.json | 18 + packs/src/traits-demoniaques/antennes.json | 18 + packs/src/traits-demoniaques/aquatique.json | 18 + .../traits-demoniaques/arme-specifique.json | 18 + .../traits-demoniaques/armure-naturelle.json | 18 + .../traits-demoniaques/armure-specifique.json | 18 + packs/src/traits-demoniaques/asymetrie.json | 18 + packs/src/traits-demoniaques/beaute.json | 18 + packs/src/traits-demoniaques/bec.json | 18 + .../bras-supplementaires.json | 18 + packs/src/traits-demoniaques/brulure.json | 18 + packs/src/traits-demoniaques/brume.json | 18 + packs/src/traits-demoniaques/cameleon.json | 18 + .../src/traits-demoniaques/clairvoyance.json | 18 + packs/src/traits-demoniaques/competent.json | 18 + packs/src/traits-demoniaques/contagion.json | 18 + packs/src/traits-demoniaques/corne-s.json | 18 + packs/src/traits-demoniaques/dents-crocs.json | 18 + packs/src/traits-demoniaques/derangeant.json | 18 + packs/src/traits-demoniaques/drain.json | 18 + packs/src/traits-demoniaques/epines.json | 18 + packs/src/traits-demoniaques/glace.json | 18 + packs/src/traits-demoniaques/glue.json | 18 + packs/src/traits-demoniaques/griffes.json | 18 + .../hurlement-terrifiant.json | 18 + packs/src/traits-demoniaques/hypnose.json | 18 + .../src/traits-demoniaques/insensibilite.json | 18 + .../traits-demoniaques/invulnerabilite.json | 18 + .../jambes-exceptionnelles.json | 18 + packs/src/traits-demoniaques/langue.json | 18 + packs/src/traits-demoniaques/levitation.json | 18 + .../traits-demoniaques/maitre-des-ombres.json | 18 + packs/src/traits-demoniaques/malediction.json | 18 + packs/src/traits-demoniaques/mou.json | 18 + packs/src/traits-demoniaques/paralysie.json | 18 + .../perception-exceptionnelle.json | 18 + packs/src/traits-demoniaques/pitie.json | 18 + packs/src/traits-demoniaques/poison.json | 18 + packs/src/traits-demoniaques/polymorphie.json | 18 + packs/src/traits-demoniaques/puanteur.json | 18 + packs/src/traits-demoniaques/puissance.json | 18 + packs/src/traits-demoniaques/queue.json | 18 + packs/src/traits-demoniaques/rapidite.json | 18 + packs/src/traits-demoniaques/reflexion.json | 18 + .../src/traits-demoniaques/regeneration.json | 18 + .../reptation-spectaculaire.json | 18 + packs/src/traits-demoniaques/rugissement.json | 18 + .../src/traits-demoniaques/scintillement.json | 18 + packs/src/traits-demoniaques/spores.json | 18 + packs/src/traits-demoniaques/tatouages.json | 18 + packs/src/traits-demoniaques/tentacule.json | 18 + .../tete-supplementaire.json | 18 + .../src/traits-demoniaques/transmutation.json | 18 + packs/src/traits-demoniaques/traumatisme.json | 18 + packs/src/traits-demoniaques/trempe.json | 18 + packs/src/traits-demoniaques/vampirisme.json | 18 + packs/tables/000397.log | 0 packs/tables/CURRENT | 2 +- packs/tables/LOG | 14 +- packs/tables/LOG.old | 14 +- .../{MANIFEST-000367 => MANIFEST-000395} | Bin 226 -> 226 bytes packs/tendances/000397.log | 0 packs/tendances/CURRENT | 2 +- packs/tendances/LOG | 14 +- packs/tendances/LOG.old | 14 +- .../{MANIFEST-000367 => MANIFEST-000395} | Bin 176 -> 176 bytes packs/traits-chaotiques/000397.log | 0 packs/traits-chaotiques/CURRENT | 2 +- packs/traits-chaotiques/LOG | 14 +- packs/traits-chaotiques/LOG.old | 14 +- .../{MANIFEST-000367 => MANIFEST-000395} | Bin 173 -> 173 bytes .../traits-demoniaques/000023.log | 0 .../traits-demoniaques/000025.ldb | Bin 0 -> 14498 bytes .../traits-demoniaques/CURRENT | 1 + .../traits-demoniaques/LOCK | 0 .../traits-demoniaques/traits-demoniaques/LOG | 15 + .../traits-demoniaques/LOG.old | 15 + .../traits-demoniaques/MANIFEST-000021 | Bin 0 -> 296 bytes styles/mournblade.css | 368 +++++++++++++++++- styles/mournblade.css.map | 2 +- system.json | 52 +++ templates/actor-sheet.hbs | 66 ++++ templates/chat-enchantement-result.hbs | 90 +++++ templates/chat-invocation-demon-result.hbs | 125 ++++++ templates/chat-invocation-esprit-result.hbs | 150 +++++++ templates/chat-invocation-result.hbs | 102 +++-- templates/chat-potion-result.hbs | 114 +++--- templates/creature-sheet.hbs | 26 ++ templates/dialog-enchantement.hbs | 102 +++++ templates/dialog-invocation-demon.hbs | 140 +++++++ templates/dialog-invocation-esprit.hbs | 98 +++++ templates/item-arme-sheet.hbs | 3 + templates/item-bouclier-sheet.hbs | 3 + templates/item-equipement-sheet.hbs | 3 + templates/item-protection-sheet.hbs | 3 + templates/partial-item-enchantement.hbs | 42 ++ templates/partial-item-header.hbs | 14 + templates/post-item.hbs | 24 ++ 280 files changed, 10668 insertions(+), 419 deletions(-) create mode 100644 modules/applications/mournblade-enchantement-dialog.mjs create mode 100644 modules/applications/mournblade-invocation-demon-dialog.mjs create mode 100644 modules/applications/mournblade-invocation-esprit-dialog.mjs rename packs/armes/{000370.log => 000398.log} (100%) rename packs/armes/{MANIFEST-000368 => MANIFEST-000396} (73%) rename packs/{creatures-elementaires/creatures-elementaires/000014.log => automatons/automatons/000004.log} (100%) create mode 100644 packs/automatons/automatons/000005.ldb rename packs/{dons/000369.log => automatons/automatons/000018.log} (100%) create mode 100644 packs/automatons/automatons/000020.ldb create mode 100644 packs/automatons/automatons/CURRENT rename packs/{equipement/000369.log => automatons/automatons/LOCK} (100%) create mode 100644 packs/automatons/automatons/LOG create mode 100644 packs/automatons/automatons/MANIFEST-000002 rename packs/{heritages/000369.log => capacites-automaton/capacites-automaton/000004.log} (100%) create mode 100644 packs/capacites-automaton/capacites-automaton/000005.ldb create mode 100644 packs/capacites-automaton/capacites-automaton/CURRENT rename packs/{journal-aide/journal-aide/000029.log => capacites-automaton/capacites-automaton/LOCK} (100%) create mode 100644 packs/capacites-automaton/capacites-automaton/LOG create mode 100644 packs/capacites-automaton/capacites-automaton/MANIFEST-000002 rename packs/{metiers/000369.log => creatures-elementaires/creatures-elementaires/000049.log} (100%) rename packs/creatures-elementaires/creatures-elementaires/{000016.ldb => 000051.ldb} (55%) delete mode 100644 packs/creatures-elementaires/creatures-elementaires/MANIFEST-000012 create mode 100644 packs/creatures-elementaires/creatures-elementaires/MANIFEST-000047 rename packs/{origines/000369.log => demons-types/demons-types/000028.log} (100%) create mode 100644 packs/demons-types/demons-types/000030.ldb create mode 100644 packs/demons-types/demons-types/CURRENT rename packs/{pactes-dons/000047.log => demons-types/demons-types/LOCK} (100%) create mode 100644 packs/demons-types/demons-types/LOG create mode 100644 packs/demons-types/demons-types/LOG.old create mode 100644 packs/demons-types/demons-types/MANIFEST-000026 rename packs/{pnj-creatures/000265.log => dons/000397.log} (100%) rename packs/dons/{MANIFEST-000367 => MANIFEST-000395} (73%) rename packs/{pouvoirs-elementaires/pouvoirs-elementaires/000012.log => equipement/000397.log} (100%) rename packs/equipement/{MANIFEST-000367 => MANIFEST-000395} (73%) rename packs/{protection/000369.log => heritages/000397.log} (100%) rename packs/heritages/{MANIFEST-000367 => MANIFEST-000395} (73%) rename packs/{runes/000370.log => journal-aide/journal-aide/000057.log} (100%) rename packs/journal-aide/journal-aide/{MANIFEST-000027 => MANIFEST-000055} (73%) rename packs/{scenes/000285.log => metiers/000397.log} (100%) rename packs/metiers/{MANIFEST-000367 => MANIFEST-000395} (73%) rename packs/{skills-creatures/000277.log => origines/000397.log} (100%) rename packs/origines/{MANIFEST-000367 => MANIFEST-000395} (73%) rename packs/{skills/000369.log => pactes-dons/000075.log} (100%) rename packs/pactes-dons/{MANIFEST-000045 => MANIFEST-000073} (76%) rename packs/pnj-creatures/{000232.ldb => 000279.ldb} (100%) rename packs/{tables/000369.log => pnj-creatures/000294.log} (100%) delete mode 100644 packs/pnj-creatures/MANIFEST-000263 create mode 100644 packs/pnj-creatures/MANIFEST-000292 delete mode 100644 packs/pouvoirs-elementaires/pouvoirs-elementaires/000014.ldb rename packs/{tendances/000369.log => pouvoirs-elementaires/pouvoirs-elementaires/000047.log} (100%) create mode 100644 packs/pouvoirs-elementaires/pouvoirs-elementaires/000049.ldb delete mode 100644 packs/pouvoirs-elementaires/pouvoirs-elementaires/MANIFEST-000010 create mode 100644 packs/pouvoirs-elementaires/pouvoirs-elementaires/MANIFEST-000045 rename packs/{traits-chaotiques/000369.log => protection/000397.log} (100%) rename packs/protection/{MANIFEST-000367 => MANIFEST-000395} (73%) create mode 100644 packs/runes/000398.log rename packs/runes/{MANIFEST-000368 => MANIFEST-000396} (72%) create mode 100644 packs/scenes/000313.log rename packs/scenes/{MANIFEST-000283 => MANIFEST-000311} (57%) create mode 100644 packs/skills-creatures/000305.log rename packs/skills-creatures/{MANIFEST-000275 => MANIFEST-000303} (73%) create mode 100644 packs/skills/000397.log rename packs/skills/{MANIFEST-000367 => MANIFEST-000395} (73%) create mode 100644 packs/src/automatons/automaton-combat-majeur.json create mode 100644 packs/src/automatons/automaton-combat-median.json create mode 100644 packs/src/automatons/automaton-combat-mineur.json create mode 100644 packs/src/automatons/automaton-coursier-gris.json create mode 100644 packs/src/automatons/automaton-justicier-donblas.json create mode 100644 packs/src/automatons/automaton-oeil-de-verite.json create mode 100644 packs/src/automatons/automaton-perception-majeur.json create mode 100644 packs/src/automatons/automaton-perception-median.json create mode 100644 packs/src/automatons/automaton-perception-mineur.json create mode 100644 packs/src/automatons/automaton-reparateur-majeur.json create mode 100644 packs/src/automatons/automaton-reparateur-median.json create mode 100644 packs/src/automatons/automaton-reparateur-mineur.json create mode 100644 packs/src/automatons/automaton-restauration-majeur.json create mode 100644 packs/src/automatons/automaton-restauration-median.json create mode 100644 packs/src/automatons/automaton-restauration-mineur.json create mode 100644 packs/src/automatons/automaton-voyage-majeur.json create mode 100644 packs/src/automatons/automaton-voyage-median.json create mode 100644 packs/src/automatons/automaton-voyage-mineur.json create mode 100644 packs/src/capacites-automaton/combat-absorption.json create mode 100644 packs/src/capacites-automaton/combat-aura.json create mode 100644 packs/src/capacites-automaton/combat-benediction.json create mode 100644 packs/src/capacites-automaton/perception-alarme.json create mode 100644 packs/src/capacites-automaton/perception-dissertation.json create mode 100644 packs/src/capacites-automaton/perception-reponse.json create mode 100644 packs/src/capacites-automaton/reparateur-petite-reparation.json create mode 100644 packs/src/capacites-automaton/reparateur-renovation.json create mode 100644 packs/src/capacites-automaton/reparateur-reparation.json create mode 100644 packs/src/capacites-automaton/restauration-soin-grave.json create mode 100644 packs/src/capacites-automaton/restauration-soin-leger.json create mode 100644 packs/src/capacites-automaton/restauration-soin-mortel.json create mode 100644 packs/src/capacites-automaton/voyage-air-pur.json create mode 100644 packs/src/capacites-automaton/voyage-invulnerabilite.json create mode 100644 packs/src/capacites-automaton/voyage-vitesse.json create mode 100644 packs/src/demons/demon-combat-majeur.json create mode 100644 packs/src/demons/demon-combat-median.json create mode 100644 packs/src/demons/demon-combat-mineur.json create mode 100644 packs/src/demons/demon-desir-majeur.json create mode 100644 packs/src/demons/demon-desir-median.json create mode 100644 packs/src/demons/demon-desir-mineur.json create mode 100644 packs/src/demons/demon-protection-majeur.json create mode 100644 packs/src/demons/demon-protection-median.json create mode 100644 packs/src/demons/demon-protection-mineur.json create mode 100644 packs/src/demons/demon-savoir-majeur.json create mode 100644 packs/src/demons/demon-savoir-median.json create mode 100644 packs/src/demons/demon-savoir-mineur.json create mode 100644 packs/src/demons/demon-voyage-majeur.json create mode 100644 packs/src/demons/demon-voyage-median.json create mode 100644 packs/src/demons/demon-voyage-mineur.json create mode 100644 packs/src/traits-demoniaques/absorption.json create mode 100644 packs/src/traits-demoniaques/acidite.json create mode 100644 packs/src/traits-demoniaques/adresse.json create mode 100644 packs/src/traits-demoniaques/ailes.json create mode 100644 packs/src/traits-demoniaques/allure.json create mode 100644 packs/src/traits-demoniaques/antennes.json create mode 100644 packs/src/traits-demoniaques/aquatique.json create mode 100644 packs/src/traits-demoniaques/arme-specifique.json create mode 100644 packs/src/traits-demoniaques/armure-naturelle.json create mode 100644 packs/src/traits-demoniaques/armure-specifique.json create mode 100644 packs/src/traits-demoniaques/asymetrie.json create mode 100644 packs/src/traits-demoniaques/beaute.json create mode 100644 packs/src/traits-demoniaques/bec.json create mode 100644 packs/src/traits-demoniaques/bras-supplementaires.json create mode 100644 packs/src/traits-demoniaques/brulure.json create mode 100644 packs/src/traits-demoniaques/brume.json create mode 100644 packs/src/traits-demoniaques/cameleon.json create mode 100644 packs/src/traits-demoniaques/clairvoyance.json create mode 100644 packs/src/traits-demoniaques/competent.json create mode 100644 packs/src/traits-demoniaques/contagion.json create mode 100644 packs/src/traits-demoniaques/corne-s.json create mode 100644 packs/src/traits-demoniaques/dents-crocs.json create mode 100644 packs/src/traits-demoniaques/derangeant.json create mode 100644 packs/src/traits-demoniaques/drain.json create mode 100644 packs/src/traits-demoniaques/epines.json create mode 100644 packs/src/traits-demoniaques/glace.json create mode 100644 packs/src/traits-demoniaques/glue.json create mode 100644 packs/src/traits-demoniaques/griffes.json create mode 100644 packs/src/traits-demoniaques/hurlement-terrifiant.json create mode 100644 packs/src/traits-demoniaques/hypnose.json create mode 100644 packs/src/traits-demoniaques/insensibilite.json create mode 100644 packs/src/traits-demoniaques/invulnerabilite.json create mode 100644 packs/src/traits-demoniaques/jambes-exceptionnelles.json create mode 100644 packs/src/traits-demoniaques/langue.json create mode 100644 packs/src/traits-demoniaques/levitation.json create mode 100644 packs/src/traits-demoniaques/maitre-des-ombres.json create mode 100644 packs/src/traits-demoniaques/malediction.json create mode 100644 packs/src/traits-demoniaques/mou.json create mode 100644 packs/src/traits-demoniaques/paralysie.json create mode 100644 packs/src/traits-demoniaques/perception-exceptionnelle.json create mode 100644 packs/src/traits-demoniaques/pitie.json create mode 100644 packs/src/traits-demoniaques/poison.json create mode 100644 packs/src/traits-demoniaques/polymorphie.json create mode 100644 packs/src/traits-demoniaques/puanteur.json create mode 100644 packs/src/traits-demoniaques/puissance.json create mode 100644 packs/src/traits-demoniaques/queue.json create mode 100644 packs/src/traits-demoniaques/rapidite.json create mode 100644 packs/src/traits-demoniaques/reflexion.json create mode 100644 packs/src/traits-demoniaques/regeneration.json create mode 100644 packs/src/traits-demoniaques/reptation-spectaculaire.json create mode 100644 packs/src/traits-demoniaques/rugissement.json create mode 100644 packs/src/traits-demoniaques/scintillement.json create mode 100644 packs/src/traits-demoniaques/spores.json create mode 100644 packs/src/traits-demoniaques/tatouages.json create mode 100644 packs/src/traits-demoniaques/tentacule.json create mode 100644 packs/src/traits-demoniaques/tete-supplementaire.json create mode 100644 packs/src/traits-demoniaques/transmutation.json create mode 100644 packs/src/traits-demoniaques/traumatisme.json create mode 100644 packs/src/traits-demoniaques/trempe.json create mode 100644 packs/src/traits-demoniaques/vampirisme.json create mode 100644 packs/tables/000397.log rename packs/tables/{MANIFEST-000367 => MANIFEST-000395} (84%) create mode 100644 packs/tendances/000397.log rename packs/tendances/{MANIFEST-000367 => MANIFEST-000395} (72%) create mode 100644 packs/traits-chaotiques/000397.log rename packs/traits-chaotiques/{MANIFEST-000367 => MANIFEST-000395} (73%) create mode 100644 packs/traits-demoniaques/traits-demoniaques/000023.log create mode 100644 packs/traits-demoniaques/traits-demoniaques/000025.ldb create mode 100644 packs/traits-demoniaques/traits-demoniaques/CURRENT create mode 100644 packs/traits-demoniaques/traits-demoniaques/LOCK create mode 100644 packs/traits-demoniaques/traits-demoniaques/LOG create mode 100644 packs/traits-demoniaques/traits-demoniaques/LOG.old create mode 100644 packs/traits-demoniaques/traits-demoniaques/MANIFEST-000021 create mode 100644 templates/chat-enchantement-result.hbs create mode 100644 templates/chat-invocation-demon-result.hbs create mode 100644 templates/chat-invocation-esprit-result.hbs create mode 100644 templates/dialog-enchantement.hbs create mode 100644 templates/dialog-invocation-demon.hbs create mode 100644 templates/dialog-invocation-esprit.hbs create mode 100644 templates/partial-item-enchantement.hbs diff --git a/lang/en.json b/lang/en.json index cd258ea..cfc9162 100644 --- a/lang/en.json +++ b/lang/en.json @@ -223,6 +223,9 @@ "MNBL.potionHeroique": "Heroic", "MNBL.potionInefficace": "Ineffective", "MNBL.potionPoison": "Poison", + "MNBL.potions": "Potions", + "MNBL.potionStatut": "Status", + "MNBL.potionDuree": "Duration", "MNBL.preparePotion": "Prepare a Potion", "MNBL.capacites": "Capacities / Powers", "MNBL.capacite": "Capacity", @@ -230,6 +233,7 @@ "MNBL.typeCapaciteElue": "Chosen Power", "MNBL.typeCapaciteElementaire": "Elemental Power", "MNBL.typeCapaciteDemoniaque": "Demonic Power", + "MNBL.typeCapaciteAutomaton": "Automaton Ability", "MNBL.typeCapaciteCreature": "Creature Power", "MNBL.creatureTypeCreature": "Creature", "MNBL.creatureTypeDemon": "Demon", @@ -240,6 +244,37 @@ "MNBL.elementTypeEau": "Water", "MNBL.creatureType": "Creature Type", "MNBL.elementType": "Element", + "MNBL.demonType": "Demon Type", + "MNBL.demonPuissance": "Power Level", + "MNBL.demonTypeNone": "— Undefined —", + "MNBL.demonTypeCombat": "Combat Demon", + "MNBL.demonTypeDesir": "Desire Demon", + "MNBL.demonTypeSavoir": "Knowledge Demon", + "MNBL.demonTypeProtection": "Protection Demon", + "MNBL.demonTypeVoyage": "Travel Demon", + "MNBL.demonPuissanceNone": "— Undefined —", + "MNBL.demonPuissanceMineur": "Minor", + "MNBL.demonPuissanceMedian": "Median", + "MNBL.demonPuissanceMajeur": "Major", + "MNBL.creatureTypeAutomaton": "Automaton", + "MNBL.automatonType": "Automaton Type", + "MNBL.automatonPuissance": "Power Level", + "MNBL.automatonTypeNone": "— Undefined —", + "MNBL.automatonTypeCombat": "Combat", + "MNBL.automatonTypeVoyage": "Travel", + "MNBL.automatonTypePerception": "Perception", + "MNBL.automatonTypeRestauration": "Restoration", + "MNBL.automatonTypeReparateur": "Repairer", + "MNBL.automatonPuissanceNone": "— Undefined —", + "MNBL.automatonPuissanceMineur": "Minor", + "MNBL.automatonPuissanceMedian": "Median", + "MNBL.automatonPuissanceMajeur": "Major", + "MNBL.automatonVoyageType": "Travel Type", + "MNBL.automatonVoyageTypeNone": "— Undefined —", + "MNBL.automatonVoyageTypeTerrestre": "Terrestrial", + "MNBL.automatonVoyageTypeAquatique": "Aquatic", + "MNBL.automatonVoyageTypeAerien": "Aerial", + "MNBL.automatonVoyageTypeExtradimensionnel": "Extra-dimensional", "MNBL.invoquerElementaire": "Summon an Elemental", "MNBL.bannirElementaire": "Banish", "MNBL.invocationsActives": "Active Invocations", @@ -262,5 +297,26 @@ "MNBL.invocationConcentrationMineur": "1 round", "MNBL.invocationConcentrationMedian": "1 minute", "MNBL.invocationConcentrationMajeur": "1 hour", - "MNBL.invocationAmeBloque": "Blocked Soul" + "MNBL.invocationAmeBloque": "Blocked Soul", + + "MNBL.invoquerDemon": "Invoke a Demon", + "MNBL.invoquerEsprit": "Invoke a Law Spirit", + "MNBL.libererDemon": "Release", + "MNBL.invocationsDemons": "Active Demonic Invocations", + "MNBL.invocationDemonSeuil": "Difficulty Threshold", + "MNBL.invocationDemonAme": "Soul Spent", + "MNBL.invocationDemonCoercition": "Coercion", + "MNBL.invocationDemonLoiChaos": "Lore: Law & Chaos", + "MNBL.invocationDemonResultSucces": "The Demon is invoked!", + "MNBL.invocationDemonResultHeroique": "Heroic success! More favorable agreement.", + "MNBL.invocationDemonResultEchec": "Invocation failed. You lose half the Soul points spent.", + "MNBL.invocationDemonResultDramatique": "Dramatic failure! All Soul points are lost.", + + "MNBL.enchantementLoi": "Law Enchantment", + "MNBL.enchanter": "Enchant", + "MNBL.enchantementActif": "Enchanted", + "MNBL.enchantementBonus": "Bonus", + "MNBL.enchantementAntiChaos": "Anti-Chaos", + "MNBL.enchantementStandard": "Standard (skill bonus)", + "MNBL.enchantementTypeAntiChaos": "Anti-Chaos (luminous aura)" } \ No newline at end of file diff --git a/lang/fr.json b/lang/fr.json index 48abc50..ef1682b 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -22,7 +22,8 @@ "runeeffect": "Effet de Rune", "bouclier": "Bouclier", "modifier": "Modificateur", - "traitespece": "Trait d'Espèce" + "traitespece": "Trait d'Espèce", + "potion": "Potion" } }, "Adresse": "Adresse", @@ -232,6 +233,9 @@ "MNBL.potionHeroique": "Héroïque", "MNBL.potionInefficace": "Inefficace", "MNBL.potionPoison": "Poison", + "MNBL.potions": "Potions", + "MNBL.potionStatut": "Statut", + "MNBL.potionDuree": "Durée", "MNBL.preparePotion": "Préparer une Potion", "MNBL.capacites": "Capacités / Pouvoirs", "MNBL.capacite": "Capacité", @@ -239,6 +243,7 @@ "MNBL.typeCapaciteElue": "Pouvoir Élue", "MNBL.typeCapaciteElementaire": "Pouvoir Élémentaire", "MNBL.typeCapaciteDemoniaque": "Pouvoir Démoniaque", + "MNBL.typeCapaciteAutomaton": "Capacité Automaton", "MNBL.typeCapaciteCreature": "Pouvoir Créature", "MNBL.creatureTypeCreature": "Créature", "MNBL.creatureTypeDemon": "Démon", @@ -249,6 +254,37 @@ "MNBL.elementTypeEau": "Eau", "MNBL.creatureType": "Type de créature", "MNBL.elementType": "Élément", + "MNBL.demonType": "Type de Démon", + "MNBL.demonPuissance": "Puissance", + "MNBL.demonTypeNone": "— Non défini —", + "MNBL.demonTypeCombat": "Démon de Combat", + "MNBL.demonTypeDesir": "Démon du Désir", + "MNBL.demonTypeSavoir": "Démon du Savoir", + "MNBL.demonTypeProtection": "Démon de Protection", + "MNBL.demonTypeVoyage": "Démon du Voyage", + "MNBL.demonPuissanceNone": "— Non défini —", + "MNBL.demonPuissanceMineur": "Mineur", + "MNBL.demonPuissanceMedian": "Médian", + "MNBL.demonPuissanceMajeur": "Majeur", + "MNBL.creatureTypeAutomaton": "Automaton", + "MNBL.automatonType": "Type d'Automaton", + "MNBL.automatonPuissance": "Puissance", + "MNBL.automatonTypeNone": "— Non défini —", + "MNBL.automatonTypeCombat": "Combat", + "MNBL.automatonTypeVoyage": "Voyage", + "MNBL.automatonTypePerception": "Perception", + "MNBL.automatonTypeRestauration": "Restauration", + "MNBL.automatonTypeReparateur": "Réparateur", + "MNBL.automatonPuissanceNone": "— Non défini —", + "MNBL.automatonPuissanceMineur": "Mineur", + "MNBL.automatonPuissanceMedian": "Médian", + "MNBL.automatonPuissanceMajeur": "Majeur", + "MNBL.automatonVoyageType": "Type de voyage", + "MNBL.automatonVoyageTypeNone": "— Non défini —", + "MNBL.automatonVoyageTypeTerrestre": "Terrestre", + "MNBL.automatonVoyageTypeAquatique": "Aquatique", + "MNBL.automatonVoyageTypeAerien": "Aérien", + "MNBL.automatonVoyageTypeExtradimensionnel": "Extra-dimensionnel", "MNBL.invoquerElementaire": "Invoquer un Élémentaire", "MNBL.bannirElementaire": "Bannir", "MNBL.invocationsActives": "Invocations actives", @@ -271,5 +307,26 @@ "MNBL.invocationConcentrationMineur": "1 tour", "MNBL.invocationConcentrationMedian": "1 minute", "MNBL.invocationConcentrationMajeur": "1 heure", - "MNBL.invocationAmeBloque": "Âme bloquée" + "MNBL.invocationAmeBloque": "Âme bloquée", + + "MNBL.invoquerDemon": "Invoquer un Démon", + "MNBL.invoquerEsprit": "Invoquer un Esprit de la Loi", + "MNBL.libererDemon": "Libérer", + "MNBL.invocationsDemons": "Invocations démoniaques actives", + "MNBL.invocationDemonSeuil": "Seuil de difficulté", + "MNBL.invocationDemonAme": "Âme dépensée", + "MNBL.invocationDemonCoercition": "Coercition", + "MNBL.invocationDemonLoiChaos": "Savoir : Loi & Chaos", + "MNBL.invocationDemonResultSucces": "Le Démon est invoqué !", + "MNBL.invocationDemonResultHeroique": "Réussite héroïque ! Accord plus favorable.", + "MNBL.invocationDemonResultEchec": "L'invocation a échoué. Vous perdez la moitié des points d'Âme dépensés.", + "MNBL.invocationDemonResultDramatique": "Échec dramatique ! Tous les points d'Âme sont perdus.", + + "MNBL.enchantementLoi": "Enchantement de la Loi", + "MNBL.enchanter": "Enchanter", + "MNBL.enchantementActif": "Enchanté", + "MNBL.enchantementBonus": "Bonus", + "MNBL.enchantementAntiChaos": "Anti-Chaos", + "MNBL.enchantementStandard": "Standard (bonus de compétence)", + "MNBL.enchantementTypeAntiChaos": "Anti-Chaos (aura lumineuse)" } \ No newline at end of file diff --git a/less/actor-styles.less b/less/actor-styles.less index 93e5ed1..4206fb2 100644 --- a/less/actor-styles.less +++ b/less/actor-styles.less @@ -343,8 +343,8 @@ } .item-controls-fixed { - min-width: 3.2rem; - max-width: 3.2rem; + min-width: 5rem; + max-width: 5rem; } // Couleurs pour les labels et textes dans les onglets @@ -917,3 +917,34 @@ } } } + +// Chat potion result — rune mini image and haut-parler styling +.mournblade-chat-result { + .detail-row { + .rune-mini-img { + width: 18px; + height: 18px; + border-radius: 2px; + object-fit: cover; + flex-shrink: 0; + border: 1px solid rgba(139, 69, 19, 0.4); + vertical-align: middle; + margin-right: 4px; + } + + .potion-haut-parler { + font-style: italic; + color: #5a3a8a; + } + } +} + +// Post-item card: danger divider variant (for létal effects) +.mournblade-item-card { + .item-card-divider--danger { + color: #8b0000; + &::before, &::after { + background: linear-gradient(90deg, transparent, #8b0000, transparent); + } + } +} diff --git a/less/item-styles.less b/less/item-styles.less index a162e1e..b55f827 100644 --- a/less/item-styles.less +++ b/less/item-styles.less @@ -440,3 +440,41 @@ align-items: center; } } + +/* Enchantement de la Loi */ +.enchantement-section { + margin-top: 0.6rem; + padding: 0.5rem 0.6rem; + background: rgba(255, 215, 0, 0.05); + border: 1px solid rgba(255, 215, 0, 0.3); + border-radius: 4px; + + .section-title-small { + font-size: 0.9rem; + margin: 0 0 0.4rem 0; + color: #a07800; + font-weight: bold; + display: flex; + align-items: center; + gap: 0.3rem; + border-bottom: 1px solid rgba(255, 215, 0, 0.2); + padding-bottom: 0.2rem; + } + + .enchant-badge { + display: inline-block; + background: gold; + color: #333; + font-size: 0.7rem; + padding: 0.1rem 0.4rem; + border-radius: 8px; + margin-left: 0.5rem; + } + + .enchant-none { + color: #888; + font-size: 0.85rem; + margin: 0; + padding: 0.2rem 0; + } +} diff --git a/less/simple-converted.less b/less/simple-converted.less index ec21963..657fbcf 100644 --- a/less/simple-converted.less +++ b/less/simple-converted.less @@ -2418,6 +2418,25 @@ &:last-child { margin-bottom: 0; } + + &.next-steps { + background: rgba(200, 220, 255, 0.5); + border-left-color: #2255aa; + + ol { + margin: 6px 0 0 0; + padding-left: 18px; + + li { + margin-bottom: 4px; + font-size: 0.82rem; + } + } + + i { + color: #2255aa; + } + } } .damage-buttons { @@ -2916,6 +2935,219 @@ accent-color: #c0392b; } } + + // ---- Invocation démon specific ---- + + .actor-header { + display: flex; + align-items: center; + gap: 10px; + margin-bottom: 10px; + padding: 6px 10px; + background: linear-gradient(135deg, #1a0030 0%, #3a0060 100%); + border: 1px solid #6a008a; + border-radius: 4px; + + .actor-portrait { + width: 44px; + height: 44px; + border-radius: 4px; + border: 2px solid #9900cc; + object-fit: cover; + flex-shrink: 0; + } + h3 { + font-weight: bold; + font-size: 1.05rem; + color: #ffffff; + text-shadow: 0 1px 3px rgba(0,0,0,0.9); + margin: 0; + } + .dialog-subtitle { + font-size: 0.85rem; + color: #ddb0ff; + i { margin-right: 4px; } + } + .actor-info { display: flex; flex-direction: column; gap: 2px; } + } + + .invoc-warning-box { + background: rgba(180, 20, 20, 0.15); + border: 1px solid #8b0000; + border-left: 4px solid #c0392b; + border-radius: 4px; + padding: 7px 10px; + margin-bottom: 8px; + font-size: 0.85rem; + color: #6a0000; + i { margin-right: 6px; color: #c0392b; } + strong { color: #8b0000; } + div { margin-top: 3px; } + } + + .invoc-comp-summary { + display: flex; + flex-wrap: wrap; + gap: 6px; + margin-bottom: 10px; + + .comp-badge { + background: rgba(60, 20, 80, 0.12); + border: 1px solid rgba(120, 40, 160, 0.4); + border-radius: 12px; + padding: 3px 10px; + font-size: 0.82rem; + color: #3a0060; + + &.comp-missing { + background: rgba(120, 0, 0, 0.08); + border-color: rgba(180, 0, 0, 0.3); + color: #800000; + em { font-style: italic; opacity: 0.7; } + } + strong { color: #2a004a; font-weight: bold; } + } + } + + .invoc-seuil-calculator { + background: rgba(60, 10, 80, 0.07); + border: 1px solid rgba(120, 40, 160, 0.35); + border-radius: 5px; + padding: 10px 12px; + margin-bottom: 10px; + + .invoc-section-title { + font-size: 0.88rem; + font-weight: bold; + color: #3a0060; + margin: 0 0 8px 0; + text-transform: uppercase; + letter-spacing: 0.5px; + i { margin-right: 5px; } + } + + .invoc-criteria-grid { + display: grid; + grid-template-columns: 1fr auto; + gap: 5px 10px; + align-items: center; + margin-bottom: 10px; + + label { + font-size: 0.83rem; + color: #3a1a0a; + font-weight: bold; + padding: 1px 0; + } + + select, input[type="number"] { + background: #3a1a08; + border: 1px solid #8b4513; + border-radius: 3px; + padding: 4px 24px 4px 8px; + color: #f0e8d8; + font-family: CentaurMT, serif; + font-size: 0.83rem; + cursor: pointer; + min-width: 200px; + appearance: none; + -webkit-appearance: none; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='7' viewBox='0 0 10 7'%3E%3Cpath fill='%23ffd070' d='M5 7L0 0h10z'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: right 7px center; + background-size: 9px 6px; + option { background: #1a0e06; color: #f0e8d8; } + } + + input[type="number"] { + min-width: 80px; + max-width: 80px; + text-align: center; + background-image: none; + padding: 4px 8px; + } + } + + .invoc-seuil-total-row { + display: flex; + align-items: center; + gap: 10px; + padding: 6px 8px; + background: linear-gradient(135deg, #2a005a 0%, #4a0080 100%); + border: 1px solid #9900cc; + border-radius: 4px; + + .invoc-seuil-label { + flex: 1; + font-weight: bold; + font-size: 0.9rem; + color: #ddb0ff; + } + + .invoc-seuil-total { + font-size: 1.3rem; + font-weight: bold; + color: #ffd700; + text-shadow: 0 0 8px rgba(255, 200, 0, 0.6); + min-width: 32px; + text-align: center; + } + } + } + + .invoc-form-grid { + display: flex; + flex-direction: column; + gap: 5px; + + .invoc-field { + display: flex; + align-items: center; + gap: 8px; + padding: 4px 6px; + border-bottom: 1px solid rgba(139, 69, 19, 0.2); + + label { + flex: 1; + font-weight: bold; + font-size: 0.87rem; + color: #3a1a0a; + } + + .invoc-value-highlight { + font-size: 1.1rem; + font-weight: bold; + color: #6a0080; + min-width: 30px; + text-align: center; + } + + .invoc-hint { + font-size: 0.78rem; + color: #5a3a0a; + font-style: italic; + strong { color: #8b0000; font-weight: bold; } + } + + select { + background: #3a1a08; + border: 1px solid #8b4513; + border-radius: 3px; + padding: 4px 24px 4px 8px; + color: #f0e8d8; + font-family: CentaurMT, serif; + font-size: 0.85rem; + cursor: pointer; + appearance: none; + -webkit-appearance: none; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='7' viewBox='0 0 10 7'%3E%3Cpath fill='%23ffd070' d='M5 7L0 0h10z'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: right 7px center; + background-size: 9px 6px; + option { background: #1a0e06; color: #f0e8d8; } + } + } + } } // ===================================================== diff --git a/modules/applications/mournblade-enchantement-dialog.mjs b/modules/applications/mournblade-enchantement-dialog.mjs new file mode 100644 index 0000000..3a830f5 --- /dev/null +++ b/modules/applications/mournblade-enchantement-dialog.mjs @@ -0,0 +1,157 @@ +import { MournbladeUtility } from "../mournblade-utility.js" + +export default class MournbladeEnchantementDialog { + + static _normalize(str) { + return (str ?? "") + .toLowerCase() + .replace(/œ/g, "oe") + .replace(/æ/g, "ae") + .normalize("NFD") + .replace(/[\u0300-\u036f]/g, "") + .replace(/[^a-z0-9]+/g, " ") + .trim() + } + + static _findCompetence(actor, ...keywords) { + const normKeys = keywords.map(k => MournbladeEnchantementDialog._normalize(k)) + return actor.items.find(item => { + if (item.type !== "competence") return false + const norm = MournbladeEnchantementDialog._normalize(item.name) + return normKeys.every(k => norm.includes(k)) + }) ?? null + } + + static async create(actor, item) { + const normalize = MournbladeEnchantementDialog._normalize.bind(MournbladeEnchantementDialog) + const findComp = (...kw) => MournbladeEnchantementDialog._findCompetence(actor, ...kw) + + const ameDisponible = Math.max(0, (actor.system.ame.currentmax - actor.system.ame.value)) + const aspect = actor.system.balance.aspect ?? 0 + + // Skill lookups + const savoirRunesComp = findComp("rune") + const hautParlerComp = findComp("haut", "parler") + const artisanatComp = findComp("savoir", "artisanat") + const claAttr = actor.system.attributs?.clairvoyance + + // Prerequisite: Rune de la Loi in inventory + const hasRuneLoi = actor.items.some(i => { + if (i.type !== "rune") return false + return normalize(i.name).includes("loi") + }) + + const savoirRunesNiveau = savoirRunesComp ? (savoirRunesComp.system.niveau ?? 0) : null + const hautParlerNiveau = hautParlerComp ? (hautParlerComp.system.niveau ?? 0) : null + const artisanatNiveau = artisanatComp ? (artisanatComp.system.niveau ?? 0) : null + const claValeur = claAttr ? (claAttr.value ?? 0) : 0 + + // Limit: CLA + Savoir:Runes is capped by min(Haut-Parler, Artisanat) if those skills exist + const limiteur = (hautParlerNiveau !== null && artisanatNiveau !== null) + ? Math.min(hautParlerNiveau, artisanatNiveau) + : (hautParlerNiveau ?? artisanatNiveau ?? null) + + const context = { + actorImg: actor.img, + actorName: actor.name, + itemImg: item.img, + itemName: item.name, + itemType: item.type, + itemId: item.id, + ameDisponible, + aspect, + hasRuneLoi, + savoirRunesNiveau, + hautParlerNiveau, + artisanatNiveau, + claValeur, + limiteur, + modOptions: Array.from({ length: 21 }, (_, i) => i - 10), + enchantementActif: item.system.enchantementLoi?.actif ?? false, + enchantementBonus: item.system.enchantementLoi?.bonus ?? 0, + enchantementAntiChaos: item.system.enchantementLoi?.antiChaos ?? false, + } + + const prerequisOk = hasRuneLoi + + const content = await foundry.applications.handlebars.renderTemplate( + "systems/fvtt-mournblade/templates/dialog-enchantement.hbs", + context + ) + + Hooks.once("renderDialogV2", (_app, html) => { + const form = html.querySelector ? html : html[0] + MournbladeEnchantementDialog._attachListeners(form, ameDisponible, claValeur, savoirRunesNiveau, limiteur, prerequisOk) + }) + + return foundry.applications.api.DialogV2.wait({ + window: { title: `Enchanter : ${item.name}`, icon: "fa-solid fa-star" }, + classes: ["mournblade-roll-dialog"], + position: { width: 520 }, + modal: false, + content, + buttons: [ + { + action: "enchanter", + label: "Enchanter", + icon: "fa-solid fa-star", + default: true, + callback: (event, button, dialog) => { + const elems = button.form.elements + const ptsAme = parseInt(elems["ptsAme"]?.value ?? 5) || 5 + const antiChaos = elems["antiChaos"]?.value === "true" + const modificateur = parseInt(elems["modificateur"]?.value ?? 0) || 0 + MournbladeUtility.rollEnchantement({ + actor, + item, + ptsAme, + antiChaos, + modificateur, + savoirRunesComp, + hautParlerComp, + artisanatComp, + claValeur, + limiteur, + }) + } + }, + ], + rejectClose: false, + }) + } + + static _attachListeners(html, ameDisponible, claValeur, savoirRunesNiveau, limiteur, prerequisOk = true) { + const enchanterBtn = html.querySelector('button[data-action="enchanter"]') + if (enchanterBtn) enchanterBtn.disabled = !prerequisOk + + const diffEl = html.querySelector('#enchant-difficulte') + const bonusEl = html.querySelector('#enchant-bonus-preview') + const warnAmeEl = html.querySelector('#enchant-ame-warn') + const warnLimitEl = html.querySelector('#enchant-limit-warn') + const totalEl = html.querySelector('#enchant-total-dice') + + const recalculate = () => { + const ptsAme = parseInt(html.querySelector('[name="ptsAme"]')?.value ?? 5) || 0 + const difficulte = ptsAme + const bonus = Math.floor(ptsAme / 5) + const savoir = savoirRunesNiveau ?? 0 + const basePool = claValeur + savoir + const effectivePool = limiteur !== null ? Math.min(basePool, limiteur) : basePool + + if (diffEl) diffEl.textContent = difficulte + if (bonusEl) bonusEl.textContent = `+${bonus}` + if (totalEl) totalEl.textContent = effectivePool + + if (warnAmeEl) warnAmeEl.style.display = ptsAme > ameDisponible ? "" : "none" + if (warnLimitEl && limiteur !== null) + warnLimitEl.style.display = basePool > limiteur ? "" : "none" + } + + const ptsAmeEl = html.querySelector('[name="ptsAme"]') + if (ptsAmeEl) { + ptsAmeEl.addEventListener('input', recalculate) + ptsAmeEl.addEventListener('change', recalculate) + } + recalculate() + } +} diff --git a/modules/applications/mournblade-invocation-demon-dialog.mjs b/modules/applications/mournblade-invocation-demon-dialog.mjs new file mode 100644 index 0000000..92b632c --- /dev/null +++ b/modules/applications/mournblade-invocation-demon-dialog.mjs @@ -0,0 +1,174 @@ +import { MournbladeUtility } from "../mournblade-utility.js" + +export default class MournbladeInvocationDemonDialog { + + /** + * Normalize a string for fuzzy matching: lowercase, remove diacritics, + * replace œ/æ ligatures, collapse whitespace and punctuation. + */ + static _normalize(str) { + return (str ?? "") + .toLowerCase() + .replace(/œ/g, "oe") + .replace(/æ/g, "ae") + .normalize("NFD") + .replace(/[\u0300-\u036f]/g, "") // strip combining diacritics + .replace(/[^a-z0-9]+/g, " ") // replace any non-alnum with space + .trim() + } + + /** + * Returns the first competence item whose name contains all of the given keywords. + * Keywords are normalized before comparison. + */ + static _findCompetence(actor, ...keywords) { + const normKeys = keywords.map(k => MournbladeInvocationDemonDialog._normalize(k)) + return actor.items.find(item => { + if (item.type !== "competence") return false + const norm = MournbladeInvocationDemonDialog._normalize(item.name) + return normKeys.every(k => norm.includes(k)) + }) ?? null + } + + /** + * Returns true if the actor has a capacite or don whose name contains all given keywords. + */ + static _hasCapacite(actor, ...keywords) { + const normKeys = keywords.map(k => MournbladeInvocationDemonDialog._normalize(k)) + return actor.items.some(item => { + if (item.type !== "capacite" && item.type !== "don") return false + const norm = MournbladeInvocationDemonDialog._normalize(item.name) + return normKeys.every(k => norm.includes(k)) + }) + } + + static async create(actor, rollData) { + const ameDisponible = Math.max(0, (actor.system.ame.currentmax - actor.system.ame.value)) + + // Robust skill detection: partial keyword matching, diacritic-insensitive + const coercitionComp = MournbladeInvocationDemonDialog._findCompetence(actor, "coercition") + const hautParlerComp = MournbladeInvocationDemonDialog._findCompetence(actor, "haut", "parler") + const loiChaosComp = MournbladeInvocationDemonDialog._findCompetence(actor, "loi", "chaos") + + // Check prerequisites — robust capacite/rune detection + const isChaotique = actor.system.balance.chaos > actor.system.balance.loi + const hasOeilSorcier = MournbladeInvocationDemonDialog._hasCapacite(actor, "oeil", "sorcier") + const hasRuneChaos = actor.items.some(i => { + if (i.type !== "rune") return false + return MournbladeInvocationDemonDialog._normalize(i.name).includes("chaos") + }) + const prerequisOk = isChaotique && hasOeilSorcier && hasRuneChaos + + // Auto-detect chaos link bonuses + const aspectGe8 = (actor.system.balance.aspect ?? 0) >= 8 + // hasPacte: true if actor has a Pacte item whose associated deity matches a demon + // (simplified: just expose it as a selectable option — can't auto-detect) + const hasPacte = false + + const context = { + ...rollData, + img: actor.img, + name: actor.name, + ameDisponible, + modOptions: Array.from({ length: 21 }, (_, i) => i - 10), + coercitionNiveau: coercitionComp ? coercitionComp.system.niveau : null, + hautParlerNiveau: hautParlerComp ? hautParlerComp.system.niveau : null, + loiChaosNiveau: loiChaosComp ? loiChaosComp.system.niveau : null, + isChaotique, + hasOeilSorcier, + hasRuneChaos, + prerequisOk, + aspectGe8, + hasPacte, + } + + const content = await foundry.applications.handlebars.renderTemplate( + "systems/fvtt-mournblade/templates/dialog-invocation-demon.hbs", + context + ) + + Hooks.once("renderDialogV2", (_app, html) => { + const form = html.querySelector ? html : html[0] + MournbladeInvocationDemonDialog._attachListeners(form, ameDisponible, prerequisOk) + }) + + return foundry.applications.api.DialogV2.wait({ + window: { title: "Invoquer un Démon", icon: "fa-solid fa-skull" }, + classes: ["mournblade-roll-dialog"], + position: { width: 560 }, + modal: false, + content, + buttons: [ + { + action: "invoquer", + label: "Invoquer", + icon: "fa-solid fa-skull", + default: true, + callback: (event, button, dialog) => { + MournbladeInvocationDemonDialog._updateRollData(rollData, button.form.elements, actor, { + coercitionComp, hautParlerComp, loiChaosComp + }) + MournbladeUtility.rollInvocationDemon(rollData) + } + }, + ], + rejectClose: false, + }) + } + + static _calculateSeuil(html) { + const get = (name) => parseInt(html.querySelector(`[name="${name}"]`)?.value ?? 0) || 0 + const seuil = get("seuil_nature") + + get("seuil_traits") + + get("seuil_augmentation") + + get("seuil_service") + + get("seuil_duree") + + get("seuil_marche") + + get("seuil_chaos") + + get("seuil_sacrifice") + return Math.max(1, seuil) + } + + static _attachListeners(html, ameDisponible, prerequisOk = true) { + const invoquerBtn = html.querySelector('button[data-action="invoquer"]') + if (invoquerBtn) invoquerBtn.disabled = !prerequisOk + + const coutEl = html.querySelector('#invoc-demon-cout') + const totalEl = html.querySelector('#invoc-demon-seuil-total') + const hiddenEl = html.querySelector('#invoc-demon-seuil-hidden') + const warnEl = html.querySelector('#invoc-demon-ame-warn') + + const criteriaNames = [ + "seuil_nature", "seuil_traits", "seuil_augmentation", + "seuil_service", "seuil_duree", "seuil_marche", + "seuil_chaos", "seuil_sacrifice" + ] + + const recalculate = () => { + const seuil = MournbladeInvocationDemonDialog._calculateSeuil(html) + if (totalEl) totalEl.textContent = seuil + if (hiddenEl) hiddenEl.value = seuil + if (coutEl) coutEl.textContent = seuil + if (warnEl) warnEl.style.display = seuil > ameDisponible ? "" : "none" + } + + for (const name of criteriaNames) { + const el = html.querySelector(`[name="${name}"]`) + if (el) el.addEventListener('change', recalculate) + if (el && el.type === 'number') el.addEventListener('input', recalculate) + } + + recalculate() + } + + static _updateRollData(rollData, formElements, actor, { coercitionComp }) { + const seuil = parseInt(formElements['seuil']?.value ?? 5) + const modificateur = parseInt(formElements['modificateur']?.value ?? 0) + + rollData.invocationSeuil = seuil + rollData.invocationSoulCost = seuil + rollData.difficulte = seuil + rollData.modificateur = modificateur + rollData.competence = coercitionComp ?? null + } +} diff --git a/modules/applications/mournblade-invocation-dialog.mjs b/modules/applications/mournblade-invocation-dialog.mjs index 7a79327..118e550 100644 --- a/modules/applications/mournblade-invocation-dialog.mjs +++ b/modules/applications/mournblade-invocation-dialog.mjs @@ -2,6 +2,33 @@ import { MournbladeUtility } from "../mournblade-utility.js" export default class MournbladeInvocationDialog { + /** + * Normalize a string for fuzzy matching: lowercase, remove diacritics, + * replace œ/æ ligatures, collapse whitespace and punctuation. + */ + static _normalize(str) { + return (str ?? "") + .toLowerCase() + .replace(/œ/g, "oe") + .replace(/æ/g, "ae") + .normalize("NFD") + .replace(/[\u0300-\u036f]/g, "") + .replace(/[^a-z0-9]+/g, " ") + .trim() + } + + /** + * Returns the first competence item whose name contains all of the given keywords. + */ + static _findCompetence(actor, ...keywords) { + const normKeys = keywords.map(k => MournbladeInvocationDialog._normalize(k)) + return actor.items.find(item => { + if (item.type !== "competence") return false + const norm = MournbladeInvocationDialog._normalize(item.name) + return normKeys.every(k => norm.includes(k)) + }) ?? null + } + static async create(actor, rollData) { const ameDisponible = Math.max(0, (actor.system.ame.currentmax - actor.system.ame.value)) const maxExtra = Math.max(0, ameDisponible - 15) @@ -14,8 +41,9 @@ export default class MournbladeInvocationDialog { allegeance: (p.system.allegeance || "").toLowerCase() })) - const hautParlerComp = actor.items.find(c => c.type == "competence" && c.name.toLowerCase() == "savoir : haut-parler") - const seigneursElemComp = actor.items.find(c => c.type == "competence" && c.name.toLowerCase() == "savoir : seigneurs élémentaires") + // Robust skill detection: partial keyword matching, diacritic-insensitive + const hautParlerComp = MournbladeInvocationDialog._findCompetence(actor, "haut", "parler") + const seigneursElemComp = MournbladeInvocationDialog._findCompetence(actor, "seigneurs", "elementaires") const context = { ...rollData, diff --git a/modules/applications/mournblade-invocation-esprit-dialog.mjs b/modules/applications/mournblade-invocation-esprit-dialog.mjs new file mode 100644 index 0000000..d3fa77b --- /dev/null +++ b/modules/applications/mournblade-invocation-esprit-dialog.mjs @@ -0,0 +1,138 @@ +import { MournbladeUtility } from "../mournblade-utility.js" + +export default class MournbladeInvocationEspritDialog { + + static _normalize(str) { + return (str ?? "") + .toLowerCase() + .replace(/œ/g, "oe").replace(/æ/g, "ae") + .normalize("NFD").replace(/[\u0300-\u036f]/g, "") + .replace(/[^a-z0-9]+/g, " ").trim() + } + + static _findCompetence(actor, ...keywords) { + const normKeys = keywords.map(k => MournbladeInvocationEspritDialog._normalize(k)) + return actor.items.find(item => { + if (item.type !== "competence") return false + const norm = MournbladeInvocationEspritDialog._normalize(item.name) + return normKeys.every(k => norm.includes(k)) + }) ?? null + } + + /** Seuil and soul cost per puissance */ + static SEUILS = { mineur: 15, median: 20, majeur: 25 } + + static async create(actor, rollData) { + const ameDisponible = Math.max(0, actor.system.ame.currentmax - actor.system.ame.value) + + const persuasionComp = MournbladeInvocationEspritDialog._findCompetence(actor, "persuasion") + const hautParlerComp = MournbladeInvocationEspritDialog._findCompetence(actor, "haut", "parler") + const loiChaosComp = MournbladeInvocationEspritDialog._findCompetence(actor, "loi", "chaos") + + const isLoyal = actor.system.balance.loi > actor.system.balance.chaos + const hasRuneLoi = actor.items.some(i => + i.type === "rune" && MournbladeInvocationEspritDialog._normalize(i.name).includes("loi") + ) + const prerequisOk = isLoyal && hasRuneLoi + + const automatonTypes = { + combat: "Combat", + voyage: "Voyage", + perception: "Perception", + restauration:"Restauration", + reparateur: "Réparateur", + } + + const context = { + ...rollData, + img: actor.img, + name: actor.name, + ameDisponible, + treValeur: actor.system.attributs?.tre?.value ?? 0, + persuasionNiveau: persuasionComp?.system?.niveau ?? null, + hautParlerNiveau: hautParlerComp?.system?.niveau ?? null, + loiChaosNiveau: loiChaosComp?.system?.niveau ?? null, + isLoyal, + hasRuneLoi, + prerequisOk, + automatonTypes, + seuils: MournbladeInvocationEspritDialog.SEUILS, + modOptions: Array.from({ length: 21 }, (_, i) => i - 10), + } + + const content = await foundry.applications.handlebars.renderTemplate( + "systems/fvtt-mournblade/templates/dialog-invocation-esprit.hbs", + context + ) + + Hooks.once("renderDialogV2", (_app, html) => { + const form = html.querySelector ? html : html[0] + MournbladeInvocationEspritDialog._attachListeners(form, ameDisponible, prerequisOk) + }) + + return foundry.applications.api.DialogV2.wait({ + window: { title: "Invoquer un Esprit de la Loi", icon: "fa-solid fa-star" }, + classes: ["mournblade-roll-dialog"], + position: { width: 520 }, + modal: false, + content, + buttons: [ + { + action: "invoquer", + label: "Invoquer", + icon: "fa-solid fa-star", + default: true, + callback: (event, button, dialog) => { + MournbladeInvocationEspritDialog._updateRollData(rollData, button.form.elements, actor, { + persuasionComp, hautParlerComp, loiChaosComp + }) + MournbladeUtility.rollInvocationEsprit(rollData) + } + }, + ], + rejectClose: false, + }) + } + + static _attachListeners(html, ameDisponible, prerequisOk = true) { + const invoquerBtn = html.querySelector('button[data-action="invoquer"]') + if (invoquerBtn) invoquerBtn.disabled = !prerequisOk + + const puissanceEl = html.querySelector('[name="puissance"]') + const seuilEl = html.querySelector('#esprit-seuil-total') + const coutEl = html.querySelector('#esprit-cout-ame') + const hiddenEl = html.querySelector('#esprit-seuil-hidden') + const warnEl = html.querySelector('#esprit-ame-warn') + const dureeEl = html.querySelector('#esprit-duree') + + const DUREE = { mineur: "1 heure", median: "1 jour", majeur: "1 semaine" } + + const recalculate = () => { + const puissance = puissanceEl?.value ?? "mineur" + const seuil = MournbladeInvocationEspritDialog.SEUILS[puissance] ?? 15 + if (seuilEl) seuilEl.textContent = seuil + if (coutEl) coutEl.textContent = seuil + if (hiddenEl) hiddenEl.value = seuil + if (dureeEl) dureeEl.textContent = DUREE[puissance] ?? "1 heure" + if (warnEl) warnEl.style.display = seuil > ameDisponible ? "" : "none" + } + + if (puissanceEl) puissanceEl.addEventListener("change", recalculate) + recalculate() + } + + static _updateRollData(rollData, formElements, actor, { persuasionComp }) { + const seuil = parseInt(formElements["seuil"]?.value ?? 15) + const modificateur = parseInt(formElements["modificateur"]?.value ?? 0) + const automatonType = formElements["automatonType"]?.value ?? "combat" + const puissance = formElements["puissance"]?.value ?? "mineur" + + rollData.invocationSeuil = seuil + rollData.invocationSoulCost = seuil + rollData.difficulte = seuil + rollData.modificateur = modificateur + rollData.competence = persuasionComp ?? null + rollData.automatonType = automatonType + rollData.automatonPuissance = puissance + } +} diff --git a/modules/applications/sheets/base-actor-sheet.mjs b/modules/applications/sheets/base-actor-sheet.mjs index 5170416..911122f 100644 --- a/modules/applications/sheets/base-actor-sheet.mjs +++ b/modules/applications/sheets/base-actor-sheet.mjs @@ -57,6 +57,10 @@ export default class MournbladeActorSheet extends HandlebarsApplicationMixin(fou preparePotion: MournbladeActorSheet.#onPreparePotion, invoquerElementaire: MournbladeActorSheet.#onInvoquerElementaire, bannirElementaire: MournbladeActorSheet.#onBannirElementaire, + invoquerDemon: MournbladeActorSheet.#onInvoquerDemon, + libererDemon: MournbladeActorSheet.#onLibererDemon, + invoquerEsprit: MournbladeActorSheet.#onInvoquerEsprit, + enchanter: MournbladeActorSheet.#onEnchanter, rollArmeOffensif: MournbladeActorSheet.#onRollArmeOffensif, rollArmeSpecial: MournbladeActorSheet.#onRollArmeSpecial, rollArmeDegats: MournbladeActorSheet.#onRollArmeDegats, @@ -110,6 +114,21 @@ export default class MournbladeActorSheet extends HandlebarsApplicationMixin(fou return context } + /** @override */ + _preSyncPartState(partId, newElement, priorElement, state) { + super._preSyncPartState(partId, newElement, priorElement, state) + // Save scrollable tab positions for deferred restoration in _onRender. + // Tabs are hidden (display:none) at _syncPartState time, so scrollTop + // assignments have no effect. We re-apply them after making tabs visible. + const part = this.constructor.PARTS?.[partId] + if (part?.scrollable) { + this._pendingScrollRestores = part.scrollable.map(selector => { + const el = selector ? priorElement.querySelector(selector) : priorElement + return el ? { selector, scrollTop: el.scrollTop } : null + }).filter(Boolean) + } + } + /** @override */ _onRender(context, options) { super._onRender(context, options) @@ -136,22 +155,37 @@ export default class MournbladeActorSheet extends HandlebarsApplicationMixin(fou const nav = this.element.querySelector('nav.tabs[data-group]') if (nav) { const group = nav.dataset.group - // Activate the current tab const activeTab = this.tabGroups[group] || "stats" + + const switchTab = (tab) => { + this.tabGroups[group] = tab + nav.querySelectorAll('[data-tab]').forEach(link => { + link.classList.toggle('active', link.dataset.tab === tab) + }) + this.element.querySelectorAll('[data-group="' + group + '"][data-tab]').forEach(content => { + content.classList.toggle('active', content.dataset.tab === tab) + }) + } + + // Set initial state (makes active tab visible) + switchTab(activeTab) + + // Restore scroll positions now that the active tab is visible + if (this._pendingScrollRestores?.length) { + for (const { selector, scrollTop } of this._pendingScrollRestores) { + const el = selector ? this.element.querySelector(selector) : this.element + if (el) el.scrollTop = scrollTop + } + this._pendingScrollRestores = null + } + + // Tab clicks: DOM-only, no re-render (preserves scroll positions) nav.querySelectorAll('[data-tab]').forEach(link => { - const tab = link.dataset.tab - link.classList.toggle('active', tab === activeTab) link.addEventListener('click', (event) => { event.preventDefault() - this.tabGroups[group] = tab - this.render() + switchTab(link.dataset.tab) }) }) - - // Show/hide tab content - this.element.querySelectorAll('[data-group="' + group + '"][data-tab]').forEach(content => { - content.classList.toggle('active', content.dataset.tab === activeTab) - }) } } @@ -383,6 +417,40 @@ export default class MournbladeActorSheet extends HandlebarsApplicationMixin(fou await this.document.bannirElementaire(invocIndex) } + /** + * Handle invoking a demon + */ + static async #onInvoquerDemon(event, target) { + event.preventDefault() + await this.document.invoquerDemon() + } + + /** + * Handle releasing a demon invocation + */ + static async #onLibererDemon(event, target) { + event.preventDefault() + const invocIndex = parseInt(target.dataset.invocIndex ?? "0") + await this.document.libererDemon(invocIndex) + } + + /** + * Handle invoking a Law Spirit into an Automaton + */ + static async #onInvoquerEsprit(event, target) { + event.preventDefault() + await this.document.invoquerEspritLoi() + } + + /** + * Handle enchanting an item with Loi power + */ + static async #onEnchanter(event, target) { + event.preventDefault() + const itemId = target.dataset.itemId + await this.document.enchanter(itemId) + } + /** * Handle rolling an arme offensif * @param {Event} event - The triggering event diff --git a/modules/applications/sheets/base-item-sheet.mjs b/modules/applications/sheets/base-item-sheet.mjs index 420b81f..5677b79 100644 --- a/modules/applications/sheets/base-item-sheet.mjs +++ b/modules/applications/sheets/base-item-sheet.mjs @@ -32,6 +32,7 @@ export default class MournbladeItemSheet extends HandlebarsApplicationMixin(foun actions: { editImage: MournbladeItemSheet.#onEditImage, postItem: MournbladeItemSheet.#onPostItem, + enchanter: MournbladeItemSheet.#onEnchanter, }, } @@ -43,17 +44,24 @@ export default class MournbladeItemSheet extends HandlebarsApplicationMixin(foun /** @override */ async _prepareContext() { + const item = this.document + const enchantableTypes = ["arme", "equipement", "protection", "bouclier"] + const actorIsLoyal = item.actor?.getAlignement?.() === "loyal" + const alreadyEnchanted = enchantableTypes.includes(item.type) && (item.system.enchantementLoi?.actif ?? false) + const canEnchant = enchantableTypes.includes(item.type) && !!item.actor && actorIsLoyal && !alreadyEnchanted const context = { - fields: this.document.schema.fields, - systemFields: this.document.system.schema.fields, - item: this.document, - system: this.document.system, - source: this.document.toObject(), - enrichedDescription: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true }), + fields: item.schema.fields, + systemFields: item.system.schema.fields, + item, + system: item.system, + source: item.toObject(), + enrichedDescription: await foundry.applications.ux.TextEditor.implementation.enrichHTML(item.system.description, { async: true }), isEditMode: true, isEditable: this.isEditable, isGM: game.user.isGM, config: game.system.mournblade.config, + canEnchant, + enchantementActif: alreadyEnchanted, } return context } @@ -96,6 +104,19 @@ export default class MournbladeItemSheet extends HandlebarsApplicationMixin(foun // #region Actions + /** + * Handle enchanting this item with Loi power + */ + static async #onEnchanter(event) { + event.preventDefault() + const item = this.document + if (!item.actor) { + ui.notifications.warn("Cet objet doit être sur un personnage pour être enchanté.") + return + } + await item.actor.enchanter(item.id) + } + /** * Handle editing the item image * @param {Event} event - The triggering event @@ -137,7 +158,8 @@ export default class MournbladeItemSheet extends HandlebarsApplicationMixin(foun protection: "Protection", equipement: "Équipement", heritage: "Héritage", metier: "Métier", capacite: "Capacité", tendance: "Tendance", traitchaotique: "Trait Chaotique", traitespece: "Trait d'Espèce", - origine: "Origine", modifier: "Modificateur", monnaie: "Monnaie" + origine: "Origine", modifier: "Modificateur", monnaie: "Monnaie", + potion: "Potion" } chatData.typeLabel = typeLabels[chatData.type] ?? chatData.type @@ -148,10 +170,30 @@ export default class MournbladeItemSheet extends HandlebarsApplicationMixin(foun pacte: "fa-scroll", protection: "fa-shield", equipement: "fa-box", heritage: "fa-dna", metier: "fa-hammer", capacite: "fa-bolt", tendance: "fa-yin-yang", traitchaotique: "fa-skull", traitespece: "fa-paw", - origine: "fa-compass", modifier: "fa-sliders", monnaie: "fa-coins" + origine: "fa-compass", modifier: "fa-sliders", monnaie: "fa-coins", + potion: "fa-flask" } chatData.typeIcon = typeIcons[chatData.type] ?? "fa-cube" + // Potion: add localized labels for statut and forme + if (chatData.type === "potion") { + const statutLabels = { + inconnue: game.i18n.localize("MNBL.potionInconnue"), + efficace: game.i18n.localize("MNBL.potionEfficace"), + heroique: game.i18n.localize("MNBL.potionHeroique"), + inefficace: game.i18n.localize("MNBL.potionInefficace"), + poison: game.i18n.localize("MNBL.potionPoison"), + } + const formeLabels = { + liquide: game.i18n.localize("MNBL.potionLiquide"), + onguent: game.i18n.localize("MNBL.potionOnguent"), + cachets: game.i18n.localize("MNBL.potionCachets"), + pilules: game.i18n.localize("MNBL.potionPilules"), + } + chatData.system.statutLabel = statutLabels[chatData.system.statut] ?? chatData.system.statut + chatData.system.formeLabel = formeLabels[chatData.system.forme] ?? chatData.system.forme + } + const html = await foundry.applications.handlebars.renderTemplate('systems/fvtt-mournblade/templates/post-item.hbs', chatData) ChatMessage.create({ user: game.user.id, content: html }) } diff --git a/modules/applications/sheets/mournblade-creature-sheet.mjs b/modules/applications/sheets/mournblade-creature-sheet.mjs index 094bed6..50bda4b 100644 --- a/modules/applications/sheets/mournblade-creature-sheet.mjs +++ b/modules/applications/sheets/mournblade-creature-sheet.mjs @@ -15,6 +15,7 @@ export default class MournbladeCreatureSheet extends MournbladeActorSheet { static PARTS = { sheet: { template: "systems/fvtt-mournblade/templates/creature-sheet.hbs", + scrollable: [".tab.competences", ".tab.equipement", ".tab.biodata"], }, } diff --git a/modules/applications/sheets/mournblade-personnage-sheet.mjs b/modules/applications/sheets/mournblade-personnage-sheet.mjs index 797aa14..5700b34 100644 --- a/modules/applications/sheets/mournblade-personnage-sheet.mjs +++ b/modules/applications/sheets/mournblade-personnage-sheet.mjs @@ -15,6 +15,7 @@ export default class MournbladePersonnageSheet extends MournbladeActorSheet { static PARTS = { sheet: { template: "systems/fvtt-mournblade/templates/actor-sheet.hbs", + scrollable: [".tab.principal", ".tab.competences", ".tab.dons", ".tab.equipement"], }, } @@ -35,6 +36,8 @@ export default class MournbladePersonnageSheet extends MournbladeActorSheet { context.dons = foundry.utils.duplicate(actor.getDons()) context.pactes = foundry.utils.duplicate(actor.getPactes()) context.alignement = actor.getAlignement() + context.isChaotique = context.alignement === "chaotique" + context.isLoyal = context.alignement === "loyal" context.aspect = actor.getAspect() context.marge = actor.getMarge() context.tendances = foundry.utils.duplicate(actor.getTendances()) @@ -46,6 +49,7 @@ export default class MournbladePersonnageSheet extends MournbladeActorSheet { context.metier = foundry.utils.duplicate(actor.getMetier() || {}) context.combat = actor.getCombatValues() context.equipements = foundry.utils.duplicate(actor.getEquipments()) + context.potions = foundry.utils.duplicate(actor.getPotions()) context.modifiers = foundry.utils.duplicate(actor.getModifiers()) context.monnaies = foundry.utils.duplicate(actor.getMonnaies()) context.runeEffects = foundry.utils.duplicate(actor.getRuneEffects()) diff --git a/modules/models/arme.mjs b/modules/models/arme.mjs index 9fadee3..27ba52d 100644 --- a/modules/models/arme.mjs +++ b/modules/models/arme.mjs @@ -21,7 +21,12 @@ export default class ArmeDataModel extends foundry.abstract.TypeDataModel { tr: new fields.NumberField({ initial: 0, integer: true }), rarete: new fields.NumberField({ initial: 0, integer: true }), prix: new fields.NumberField({ initial: 0, integer: true }), - equipped: new fields.BooleanField({ initial: false }) + equipped: new fields.BooleanField({ initial: false }), + enchantementLoi: new fields.SchemaField({ + actif: new fields.BooleanField({ initial: false }), + bonus: new fields.NumberField({ initial: 0, integer: true }), + antiChaos: new fields.BooleanField({ initial: false }), + }), }; } } \ No newline at end of file diff --git a/modules/models/bouclier.mjs b/modules/models/bouclier.mjs index 3e03918..b08d748 100644 --- a/modules/models/bouclier.mjs +++ b/modules/models/bouclier.mjs @@ -11,7 +11,12 @@ export default class BouclierDataModel extends foundry.abstract.TypeDataModel { nonletaux: new fields.BooleanField({ initial: false }), rarete: new fields.NumberField({ initial: 0, integer: true }), prix: new fields.NumberField({ initial: 0, integer: true }), - equipped: new fields.BooleanField({ initial: false }) + equipped: new fields.BooleanField({ initial: false }), + enchantementLoi: new fields.SchemaField({ + actif: new fields.BooleanField({ initial: false }), + bonus: new fields.NumberField({ initial: 0, integer: true }), + antiChaos: new fields.BooleanField({ initial: false }), + }), }; } } \ No newline at end of file diff --git a/modules/models/creature.mjs b/modules/models/creature.mjs index 3830bd3..dce8292 100644 --- a/modules/models/creature.mjs +++ b/modules/models/creature.mjs @@ -12,6 +12,11 @@ export default class CreatureDataModel extends foundry.abstract.TypeDataModel { alignement: new fields.StringField({ initial: "" }), creatureType: new fields.StringField({ initial: "creature" }), elementType: new fields.StringField({ initial: "" }), + demonType: new fields.StringField({ initial: "" }), + demonPuissance: new fields.StringField({ initial: "" }), + automatonType: new fields.StringField({ initial: "" }), + automatonPuissance: new fields.StringField({ initial: "" }), + automatonVoyageType: new fields.StringField({ initial: "" }), poids: new fields.StringField({ initial: "" }), taille: new fields.StringField({ initial: "" }), cheveux: new fields.StringField({ initial: "" }), diff --git a/modules/models/equipement.mjs b/modules/models/equipement.mjs index 9036766..02c09c6 100644 --- a/modules/models/equipement.mjs +++ b/modules/models/equipement.mjs @@ -7,7 +7,12 @@ export default class EquipementDataModel extends foundry.abstract.TypeDataModel return { description: new fields.HTMLField({ initial: "" }), rarete: new fields.NumberField({ initial: 0, integer: true }), - prix: new fields.NumberField({ initial: 0, integer: true }) + prix: new fields.NumberField({ initial: 0, integer: true }), + enchantementLoi: new fields.SchemaField({ + actif: new fields.BooleanField({ initial: false }), + bonus: new fields.NumberField({ initial: 0, integer: true }), + antiChaos: new fields.BooleanField({ initial: false }), + }), }; } } \ No newline at end of file diff --git a/modules/models/personnage.mjs b/modules/models/personnage.mjs index 3c65891..275fed9 100644 --- a/modules/models/personnage.mjs +++ b/modules/models/personnage.mjs @@ -81,6 +81,7 @@ export default class PersonnageDataModel extends foundry.abstract.TypeDataModel traumatismes: new fields.StringField({ initial: "" }) }), invocationsElementaires: new fields.ArrayField(new fields.ObjectField(), { initial: [] }), + invocationsDemons: new fields.ArrayField(new fields.ObjectField(), { initial: [] }), combat: new fields.SchemaField({ initbonus: new fields.NumberField({ initial: 0, integer: true }), vitessebonus: new fields.NumberField({ initial: 0, integer: true }), diff --git a/modules/models/protection.mjs b/modules/models/protection.mjs index babf502..0d35eab 100644 --- a/modules/models/protection.mjs +++ b/modules/models/protection.mjs @@ -11,7 +11,12 @@ export default class ProtectionDataModel extends foundry.abstract.TypeDataModel degats: new fields.StringField({ initial: "" }), rarete: new fields.NumberField({ initial: 0, integer: true }), prix: new fields.NumberField({ initial: 0, integer: true }), - equipped: new fields.BooleanField({ initial: false }) + equipped: new fields.BooleanField({ initial: false }), + enchantementLoi: new fields.SchemaField({ + actif: new fields.BooleanField({ initial: false }), + bonus: new fields.NumberField({ initial: 0, integer: true }), + antiChaos: new fields.BooleanField({ initial: false }), + }), }; } } \ No newline at end of file diff --git a/modules/mournblade-actor.js b/modules/mournblade-actor.js index bd524b7..da022ee 100644 --- a/modules/mournblade-actor.js +++ b/modules/mournblade-actor.js @@ -2,6 +2,9 @@ import { MournbladeUtility } from "./mournblade-utility.js"; import { MournbladeRollDialog } from "./applications/mournblade-roll-dialog.mjs"; import MournbladeInvocationDialog from "./applications/mournblade-invocation-dialog.mjs"; +import MournbladeInvocationDemonDialog from "./applications/mournblade-invocation-demon-dialog.mjs"; +import MournbladeInvocationEspritDialog from "./applications/mournblade-invocation-esprit-dialog.mjs"; +import MournbladeEnchantementDialog from "./applications/mournblade-enchantement-dialog.mjs"; /* -------------------------------------------- */ const __degatsBonus = [-2, -2, -1, -1, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 8, 8, 9, 9, 10, 10] @@ -91,6 +94,8 @@ export class MournbladeActor extends Actor { prepareArme(arme) { arme = foundry.utils.duplicate(arme) let combat = this.getCombatValues() + const enchBonus = (arme.system.enchantementLoi?.actif && arme.system.enchantementLoi?.bonus > 0) + ? arme.system.enchantementLoi.bonus : 0 if (arme.system.typearme == "contact" || arme.system.typearme == "contactjet") { arme.system.isMelee = true let competence = this.items.find(item => item.type == "competence" && item.name.toLowerCase() == "mêlée") @@ -98,7 +103,7 @@ export class MournbladeActor extends Actor { arme.system.competence = foundry.utils.duplicate(competence) arme.system.attrKey = "pui" arme.system.totalDegats = arme.system.degats + "+" + combat.bonusDegatsTotal - arme.system.totalOffensif = this.system.attributs.pui.value + arme.system.competence.system.niveau + arme.system.bonusmaniementoff + combat.attaqueModifier + arme.system.totalOffensif = this.system.attributs.pui.value + arme.system.competence.system.niveau + arme.system.bonusmaniementoff + combat.attaqueModifier + enchBonus if (arme.system.isdefense) { arme.system.totalDefensif = combat.defenseTotal + arme.system.competence.system.niveau + arme.system.bonusmaniementdef } @@ -115,7 +120,7 @@ export class MournbladeActor extends Actor { if (competence) { arme.system.competence = foundry.utils.duplicate(competence) arme.system.attrKey = "adr" - arme.system.totalOffensif = this.system.attributs.adr.value + arme.system.competence.system.niveau + arme.system.bonusmaniementoff + combat.attaqueModifier + arme.system.totalOffensif = this.system.attributs.adr.value + arme.system.competence.system.niveau + arme.system.bonusmaniementoff + combat.attaqueModifier + enchBonus arme.system.totalDegats = arme.system.degats if (arme.system.isdefense) { arme.system.totalDefensif = combat.defenseTotal + arme.system.competence.system.niveau + arme.system.bonusmaniementdef @@ -133,12 +138,14 @@ export class MournbladeActor extends Actor { prepareBouclier(bouclier) { bouclier = foundry.utils.duplicate(bouclier) let combat = this.getCombatValues() + const enchBonus = (bouclier.system.enchantementLoi?.actif && bouclier.system.enchantementLoi?.bonus > 0) + ? bouclier.system.enchantementLoi.bonus : 0 let competence = this.items.find(item => item.type == "competence" && item.name.toLowerCase() == "mêlée") if (competence) { bouclier.system.competence = foundry.utils.duplicate(competence) bouclier.system.attrKey = "pui" bouclier.system.totalDegats = bouclier.system.degats + "+" + combat.bonusDegatsTotal - bouclier.system.totalOffensif = this.system.attributs.pui.value + bouclier.system.competence.system.niveau + bouclier.system.totalOffensif = this.system.attributs.pui.value + bouclier.system.competence.system.niveau + enchBonus bouclier.system.isdefense = true bouclier.system.bonusmaniementoff = 0 bouclier.system.totalDefensif = combat.defenseTotal + bouclier.system.competence.system.niveau + bouclier.system.bonusdefense @@ -213,6 +220,9 @@ export class MournbladeActor extends Actor { getMonnaies() { return this.getItemSorted(["monnaie"]) } + getPotions() { + return this.getItemSorted(["potion"]) + } getArmors() { return this.getItemSorted(["protection"]) } @@ -739,6 +749,90 @@ export class MournbladeActor extends Actor { ui.notifications.info(`L'Élémentaire ${invoc.actorName} a été banni. ${invoc.soulCost} points d'Âme libérés.`) } + /* -------------------------------------------- */ + async invoquerDemon() { + const normalize = str => str.toLowerCase() + .replace(/œ/g, "oe").replace(/æ/g, "ae") + .normalize("NFD").replace(/[\u0300-\u036f]/g, "") + .replace(/[^a-z0-9]+/g, " ").trim() + const hasKeywords = (item, ...words) => { + const n = normalize(item.name) + return words.every(w => n.includes(normalize(w))) + } + const coercitionComp = this.items.find(c => c.type === "competence" && hasKeywords(c, "coercition")) + if (!coercitionComp) { + ui.notifications.warn("La compétence Coercition est requise pour invoquer un Démon.") + return + } + const isChaotique = this.system.balance.chaos > this.system.balance.loi + const hasOeilSorcier = this.items.some(c => (c.type === "capacite" || c.type === "don") && hasKeywords(c, "oeil", "sorcier")) + const hasRuneChaos = this.items.some(i => i.type === "rune" && hasKeywords(i, "chaos")) + if (!isChaotique || !hasOeilSorcier || !hasRuneChaos) { + const missing = [] + if (!isChaotique) missing.push("alignement chaotique (Chaos > Loi)") + if (!hasOeilSorcier) missing.push("Capacité/Don Œil du Sorcier") + if (!hasRuneChaos) missing.push("Rune du Chaos") + ui.notifications.warn(`Prérequis manquants pour l'invocation démoniaque : ${missing.join(", ")}.`) + } + + let rollData = this.getCommonRollData("tre", coercitionComp._id) + rollData.isInvocationDemon = true + rollData.mainDice = "1d10" + + await MournbladeInvocationDemonDialog.create(this, rollData) + } + + /* -------------------------------------------- */ + async libererDemon(invocIndex) { + const invocations = foundry.utils.duplicate(this.system.invocationsDemons || []) + const invoc = invocations[invocIndex] + if (!invoc) return + + invocations.splice(invocIndex, 1) + await this.update({ "system.invocationsDemons": invocations }) + ui.notifications.info(`Le Démon ${invoc.demonName ?? "invoqué"} a été libéré.`) + } + + /* -------------------------------------------- */ + async invoquerEspritLoi() { + const normalize = str => str.toLowerCase() + .replace(/œ/g, "oe").replace(/æ/g, "ae") + .normalize("NFD").replace(/[\u0300-\u036f]/g, "") + .replace(/[^a-z0-9]+/g, " ").trim() + const hasKeywords = (item, ...words) => { + const n = normalize(item.name) + return words.every(w => n.includes(normalize(w))) + } + + const persuasionComp = this.items.find(c => c.type === "competence" && hasKeywords(c, "persuasion")) + const isLoyal = this.system.balance.loi > this.system.balance.chaos + const hasRuneLoi = this.items.some(i => i.type === "rune" && hasKeywords(i, "loi")) + + if (!isLoyal || !hasRuneLoi) { + const missing = [] + if (!isLoyal) missing.push("alignement loyal (Loi > Chaos)") + if (!hasRuneLoi) missing.push("Rune de la Loi") + ui.notifications.warn(`Prérequis manquants : ${missing.join(", ")}.`) + } + + const rollData = this.getCommonRollData("tre", persuasionComp?._id ?? null) + rollData.isInvocationEsprit = true + rollData.mainDice = "1d10" + + await MournbladeInvocationEspritDialog.create(this, rollData) + } + + /* -------------------------------------------- */ + async enchanter(itemId) { + const item = this.items.get(itemId) + if (!item) return + if (!["arme", "equipement", "protection", "bouclier"].includes(item.type)) { + ui.notifications.warn("Seules les armes, équipements, protections et boucliers peuvent être enchantés.") + return + } + await MournbladeEnchantementDialog.create(this, item) + } + /* -------------------------------------------- */ async rollArmeOffensif(armeId) { let arme = this.items.get(armeId) diff --git a/modules/mournblade-config.js b/modules/mournblade-config.js index e59148f..3e6b584 100644 --- a/modules/mournblade-config.js +++ b/modules/mournblade-config.js @@ -90,18 +90,55 @@ export class MournbladeConfig { elue: game.i18n.localize("MNBL.typeCapaciteElue"), elementaire: game.i18n.localize("MNBL.typeCapaciteElementaire"), demoniaque: game.i18n.localize("MNBL.typeCapaciteDemoniaque"), + automaton: game.i18n.localize("MNBL.typeCapaciteAutomaton"), creature: game.i18n.localize("MNBL.typeCapaciteCreature"), }, creatureTypeOptions: { creature: game.i18n.localize("MNBL.creatureTypeCreature"), demon: game.i18n.localize("MNBL.creatureTypeDemon"), elementaire: game.i18n.localize("MNBL.creatureTypeElementaire"), + automaton: game.i18n.localize("MNBL.creatureTypeAutomaton"), + }, + demonTypeOptions: { + "": game.i18n.localize("MNBL.demonTypeNone"), + combat: game.i18n.localize("MNBL.demonTypeCombat"), + desir: game.i18n.localize("MNBL.demonTypeDesir"), + savoir: game.i18n.localize("MNBL.demonTypeSavoir"), + protection: game.i18n.localize("MNBL.demonTypeProtection"), + voyage: game.i18n.localize("MNBL.demonTypeVoyage"), + }, + demonPuissanceOptions: { + "": game.i18n.localize("MNBL.demonPuissanceNone"), + mineur: game.i18n.localize("MNBL.demonPuissanceMineur"), + median: game.i18n.localize("MNBL.demonPuissanceMedian"), + majeur: game.i18n.localize("MNBL.demonPuissanceMajeur"), }, elementTypeOptions: { air: game.i18n.localize("MNBL.elementTypeAir"), terre: game.i18n.localize("MNBL.elementTypeTerre"), feu: game.i18n.localize("MNBL.elementTypeFeu"), eau: game.i18n.localize("MNBL.elementTypeEau"), + }, + automatonTypeOptions: { + "": game.i18n.localize("MNBL.automatonTypeNone"), + combat: game.i18n.localize("MNBL.automatonTypeCombat"), + voyage: game.i18n.localize("MNBL.automatonTypeVoyage"), + perception: game.i18n.localize("MNBL.automatonTypePerception"), + restauration: game.i18n.localize("MNBL.automatonTypeRestauration"), + reparateur: game.i18n.localize("MNBL.automatonTypeReparateur"), + }, + automatonPuissanceOptions: { + "": game.i18n.localize("MNBL.automatonPuissanceNone"), + mineur: game.i18n.localize("MNBL.automatonPuissanceMineur"), + median: game.i18n.localize("MNBL.automatonPuissanceMedian"), + majeur: game.i18n.localize("MNBL.automatonPuissanceMajeur"), + }, + automatonVoyageTypeOptions: { + "": game.i18n.localize("MNBL.automatonVoyageTypeNone"), + terrestre: game.i18n.localize("MNBL.automatonVoyageTypeTerrestre"), + aquatique: game.i18n.localize("MNBL.automatonVoyageTypeAquatique"), + aerien: game.i18n.localize("MNBL.automatonVoyageTypeAerien"), + extradimensionnel: game.i18n.localize("MNBL.automatonVoyageTypeExtradimensionnel"), } } diff --git a/modules/mournblade-utility.js b/modules/mournblade-utility.js index fae82f0..a94a280 100644 --- a/modules/mournblade-utility.js +++ b/modules/mournblade-utility.js @@ -219,8 +219,15 @@ export class MournbladeUtility { 'systems/fvtt-mournblade/templates/partial-item-description.hbs', 'systems/fvtt-mournblade/templates/partial-item-header.hbs', 'systems/fvtt-mournblade/templates/partial-item-nav.hbs', + 'systems/fvtt-mournblade/templates/partial-item-enchantement.hbs', 'systems/fvtt-mournblade/templates/dialog-invocation-elementaire.hbs', 'systems/fvtt-mournblade/templates/chat-invocation-result.hbs', + 'systems/fvtt-mournblade/templates/dialog-invocation-demon.hbs', + 'systems/fvtt-mournblade/templates/chat-invocation-demon-result.hbs', + 'systems/fvtt-mournblade/templates/dialog-enchantement.hbs', + 'systems/fvtt-mournblade/templates/chat-enchantement-result.hbs', + 'systems/fvtt-mournblade/templates/dialog-invocation-esprit.hbs', + 'systems/fvtt-mournblade/templates/chat-invocation-esprit-result.hbs', ] return foundry.applications.handlebars.loadTemplates(templatePaths); } @@ -1079,9 +1086,7 @@ export class MournbladeUtility { return } - const actor = rollData.tokenId - ? game.canvas.tokens.get(rollData.tokenId)?.actor - : game.actors.get(rollData.actorId) + const actor = game.actors.get(rollData.actorId) const pa = rollData.pointsAme ?? 1 const seuil = rollData.runeSeuil ?? 0 @@ -1269,6 +1274,8 @@ export class MournbladeUtility { rollData.createdActorName = createdActorName rollData.bonusPacte = bonusPacte rollData.isGM = game.user.isGM + const powersByTier = { mineur: 2, median: 3, majeur: 4 } + rollData.invocationPowerCount = powersByTier[rollData.invocationTier] ?? 2 this.createChatWithRollMode(rollData.alias, { content: await foundry.applications.handlebars.renderTemplate( @@ -1276,4 +1283,235 @@ export class MournbladeUtility { }, { ...rollData, rollMode: "blindroll" }) } + /* -------------------------------------------- */ + static async rollInvocationDemon(rollData) { + const actor = rollData.tokenId + ? game.canvas.tokens.get(rollData.tokenId)?.actor + : game.actors.get(rollData.actorId) + + if (!actor) { + ui.notifications.error("Acteur introuvable pour l'invocation démoniaque.") + return + } + + const soulCost = rollData.invocationSoulCost ?? rollData.invocationSeuil ?? 20 + const compNiveau = rollData.competence?.system?.niveau ?? 0 + const compMod = compNiveau === 0 ? -3 : 0 + const modificateur = rollData.modificateur ?? 0 + + // Validate soul + const ameDisponible = Math.max(0, actor.system.ame.currentmax - actor.system.ame.value) + if (ameDisponible < soulCost) { + ui.notifications.warn(`Âme insuffisante pour cette invocation (requis : ${soulCost}, disponible : ${ameDisponible}).`) + return + } + + rollData.difficulte = rollData.invocationSeuil + rollData.diceFormula = `${rollData.mainDice ?? "1d10"}+${rollData.attr.value}+${compNiveau}+${modificateur}+${compMod}+${rollData.malusSante}+${rollData.malusAme}` + + const myRoll = await new Roll(rollData.diceFormula).evaluate() + await this.showDiceSoNice(myRoll, "blindroll") + rollData.roll = foundry.utils.duplicate(myRoll) + rollData.diceResult = myRoll.terms[0].results[0].result + rollData.finalResult = myRoll.total + this.computeResult(rollData) + + // Soul cost handling + let ameDeduct = soulCost + let d20Result = null + let isDemonAttaque = false + let isDisastreDramatique = false + let isTraitChaotique = false + + if (rollData.isSuccess || rollData.isHeroique) { + // Soul spent immediately (not blocked) + await actor.subPointsAme("prononcer", soulCost) + + // Track active invocation + const invocations = foundry.utils.duplicate(actor.system.invocationsDemons || []) + invocations.push({ demonName: "Démon invoqué", soulCost, date: Date.now() }) + await actor.update({ "system.invocationsDemons": invocations }) + } else if (rollData.isDramatique) { + // All soul lost + await actor.subPointsAme("prononcer", soulCost) + + // Roll d20 for dramatic failure consequences + const d20Roll = await new Roll("1d20").evaluate() + await this.showDiceSoNice(d20Roll, "blindroll") + d20Result = d20Roll.total + if (d20Result === 1 || d20Result === 11) { + isDisastreDramatique = true + } else if (d20Result % 2 !== 0) { + // Odd (not 1 or 11) → demon attacks + isDemonAttaque = true + } else { + // Even → chaotic trait + isTraitChaotique = true + } + } else { + // Simple failure: half soul lost (round up) + ameDeduct = Math.ceil(soulCost / 2) + await actor.subPointsAme("prononcer", ameDeduct) + } + + rollData.invocationSoulDeducted = (rollData.isSuccess || rollData.isHeroique) ? soulCost : ameDeduct + rollData.d20Result = d20Result + rollData.isDemonAttaque = isDemonAttaque + rollData.isDisastreDramatique = isDisastreDramatique + rollData.isTraitChaotique = isTraitChaotique + rollData.isGM = game.user.isGM + rollData.claValue = actor.system.attributs?.cla?.value ?? 0 + + this.createChatWithRollMode(rollData.alias, { + content: await foundry.applications.handlebars.renderTemplate( + `systems/fvtt-mournblade/templates/chat-invocation-demon-result.hbs`, rollData) + }, { ...rollData, rollMode: "blindroll" }) + } + + /* -------------------------------------------- */ + static async rollInvocationEsprit(rollData) { + const actor = rollData.tokenId + ? game.canvas.tokens.get(rollData.tokenId)?.actor + : game.actors.get(rollData.actorId) + + if (!actor) { + ui.notifications.error("Acteur introuvable pour l'invocation d'un Esprit de la Loi.") + return + } + + const soulCost = rollData.invocationSoulCost ?? 15 + const compNiveau = rollData.competence?.system?.niveau ?? 0 + const compMod = compNiveau === 0 ? -3 : 0 + const modificateur = rollData.modificateur ?? 0 + + const ameDisponible = Math.max(0, actor.system.ame.currentmax - actor.system.ame.value) + if (ameDisponible < soulCost) { + ui.notifications.warn(`Âme insuffisante (requis : ${soulCost}, disponible : ${ameDisponible}).`) + return + } + + rollData.difficulte = soulCost + rollData.diceFormula = `${rollData.mainDice ?? "1d10"}+${rollData.attr.value}+${compNiveau}+${modificateur}+${compMod}+${rollData.malusSante}+${rollData.malusAme}` + + const myRoll = await new Roll(rollData.diceFormula).evaluate() + await this.showDiceSoNice(myRoll, "roll") + rollData.roll = foundry.utils.duplicate(myRoll) + rollData.diceResult = myRoll.terms[0].results[0].result + rollData.finalResult = myRoll.total + this.computeResult(rollData) + + let ameDeduct = soulCost + + if (rollData.isSuccess || rollData.isHeroique) { + await actor.subPointsAme("prononcer", soulCost) + } else if (rollData.isDramatique) { + // All soul lost, Réceptacle destroyed + await actor.subPointsAme("prononcer", soulCost) + } else { + // Simple failure: half soul lost (round up) + ameDeduct = Math.ceil(soulCost / 2) + await actor.subPointsAme("prononcer", ameDeduct) + } + + rollData.invocationSoulDeducted = (rollData.isSuccess || rollData.isHeroique) ? soulCost : ameDeduct + rollData.isGM = game.user.isGM + + const typeLabels = { + combat: "Combat", voyage: "Voyage", perception: "Perception", + restauration: "Restauration", reparateur: "Réparateur", + } + const puissanceLabels = { mineur: "Mineur", median: "Médian", majeur: "Majeur" } + rollData.automatonTypeLabel = typeLabels[rollData.automatonType] ?? rollData.automatonType + rollData.automatonPuissanceLabel = puissanceLabels[rollData.automatonPuissance] ?? rollData.automatonPuissance + + this.createChatWithRollMode(rollData.alias, { + content: await foundry.applications.handlebars.renderTemplate( + `systems/fvtt-mournblade/templates/chat-invocation-esprit-result.hbs`, rollData) + }, { ...rollData, rollMode: "roll" }) + } + + /* -------------------------------------------- */ + static async rollEnchantement({ actor, item, ptsAme, antiChaos, modificateur, + savoirRunesComp, hautParlerComp, artisanatComp, claValeur, limiteur }) { + + // Validate soul + const ameDisponible = Math.max(0, actor.system.ame.currentmax - actor.system.ame.value) + if (ameDisponible < ptsAme) { + ui.notifications.warn(`Âme insuffisante (requis : ${ptsAme}, disponible : ${ameDisponible}).`) + return + } + + const savoirNiveau = savoirRunesComp?.system?.niveau ?? 0 + const compMod = savoirNiveau === 0 ? -3 : 0 + const basePool = claValeur + savoirNiveau + compMod + (modificateur ?? 0) + const effectivePool = limiteur !== null ? Math.min(basePool, limiteur) : basePool + const difficulte = ptsAme + + const formula = `1d10+${effectivePool}` + const myRoll = await new Roll(formula).evaluate() + await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode")) + + const rollData = this.getBasicRollData() + rollData.alias = actor.name + rollData.actorImg = actor.img + rollData.diceResult = myRoll.terms[0].results[0].result + rollData.finalResult = myRoll.total + rollData.difficulte = difficulte + rollData.roll = foundry.utils.duplicate(myRoll) + this.computeResult(rollData) + + // Compute bonus + let bonusBase = Math.floor(ptsAme / 5) + let bonusFinal = bonusBase + let ameDeduct = ptsAme + let itemDestroyed = false + let message = "" + + if (rollData.isHeroique) { + bonusFinal = bonusBase + 1 + await actor.subPointsAme("prononcer", ptsAme) + await item.update({ + "system.enchantementLoi.actif": true, + "system.enchantementLoi.bonus": bonusFinal, + "system.enchantementLoi.antiChaos": antiChaos, + }) + message = `Réussite héroïque ! L'objet est enchanté avec un bonus de +${bonusFinal}.` + } else if (rollData.isSuccess) { + await actor.subPointsAme("prononcer", ptsAme) + await item.update({ + "system.enchantementLoi.actif": true, + "system.enchantementLoi.bonus": bonusFinal, + "system.enchantementLoi.antiChaos": antiChaos, + }) + message = `Succès ! L'objet est enchanté avec un bonus de +${bonusFinal}.` + } else if (rollData.isDramatique) { + ameDeduct = ptsAme + await actor.subPointsAme("prononcer", ameDeduct) + await item.delete() + itemDestroyed = true + message = `Échec dramatique ! Tous les points d'Âme sont perdus et l'objet est détruit !` + } else { + // Failure: half soul lost + ameDeduct = Math.ceil(ptsAme / 2) + await actor.subPointsAme("prononcer", ameDeduct) + message = `Échec ! ${ameDeduct} points d'Âme perdus. L'objet n'est pas enchanté.` + } + + rollData.itemName = item.name + rollData.itemImg = item.img + rollData.ptsAme = ptsAme + rollData.antiChaos = antiChaos + rollData.bonusFinal = bonusFinal + rollData.ameDeduct = ameDeduct + rollData.itemDestroyed = itemDestroyed + rollData.enchantMessage = message + rollData.effectivePool = effectivePool + rollData.savoirNiveau = savoirNiveau + + this.createChatWithRollMode(actor.name, { + content: await foundry.applications.handlebars.renderTemplate( + `systems/fvtt-mournblade/templates/chat-enchantement-result.hbs`, rollData) + }) + } + } diff --git a/packs/armes/000370.log b/packs/armes/000398.log similarity index 100% rename from packs/armes/000370.log rename to packs/armes/000398.log diff --git a/packs/armes/CURRENT b/packs/armes/CURRENT index 0e10e4f..3e632f4 100644 --- a/packs/armes/CURRENT +++ b/packs/armes/CURRENT @@ -1 +1 @@ -MANIFEST-000368 +MANIFEST-000396 diff --git a/packs/armes/LOG b/packs/armes/LOG index b942314..7f8b154 100644 --- a/packs/armes/LOG +++ b/packs/armes/LOG @@ -1,7 +1,7 @@ -2026/05/01-23:51:23.718556 7fd754fed6c0 Recovering log #366 -2026/05/01-23:51:23.773168 7fd754fed6c0 Delete type=3 #364 -2026/05/01-23:51:23.773253 7fd754fed6c0 Delete type=0 #366 -2026/05/02-08:26:03.206863 7fd7477fe6c0 Level-0 table #371: started -2026/05/02-08:26:03.206928 7fd7477fe6c0 Level-0 table #371: 0 bytes OK -2026/05/02-08:26:03.241219 7fd7477fe6c0 Delete type=0 #369 -2026/05/02-08:26:03.317629 7fd7477fe6c0 Manual compaction at level-0 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at (end) +2026/05/02-22:17:12.618357 7fd747fff6c0 Recovering log #394 +2026/05/02-22:17:12.628023 7fd747fff6c0 Delete type=3 #392 +2026/05/02-22:17:12.628086 7fd747fff6c0 Delete type=0 #394 +2026/05/02-23:14:30.830178 7fd7477fe6c0 Level-0 table #399: started +2026/05/02-23:14:30.830206 7fd7477fe6c0 Level-0 table #399: 0 bytes OK +2026/05/02-23:14:30.842898 7fd7477fe6c0 Delete type=0 #397 +2026/05/02-23:14:30.854693 7fd7477fe6c0 Manual compaction at level-0 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at (end) diff --git a/packs/armes/LOG.old b/packs/armes/LOG.old index 1c64911..8318c33 100644 --- a/packs/armes/LOG.old +++ b/packs/armes/LOG.old @@ -1,7 +1,7 @@ -2026/05/01-23:45:25.849265 7fd7557ee6c0 Recovering log #362 -2026/05/01-23:45:25.858985 7fd7557ee6c0 Delete type=3 #360 -2026/05/01-23:45:25.859069 7fd7557ee6c0 Delete type=0 #362 -2026/05/01-23:51:17.894067 7fd7477fe6c0 Level-0 table #367: started -2026/05/01-23:51:17.894105 7fd7477fe6c0 Level-0 table #367: 0 bytes OK -2026/05/01-23:51:17.920657 7fd7477fe6c0 Delete type=0 #365 -2026/05/01-23:51:18.003271 7fd7477fe6c0 Manual compaction at level-0 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at (end) +2026/05/02-10:42:39.976018 7fd755fef6c0 Recovering log #390 +2026/05/02-10:42:39.986262 7fd755fef6c0 Delete type=3 #388 +2026/05/02-10:42:39.986345 7fd755fef6c0 Delete type=0 #390 +2026/05/02-10:55:36.095495 7fd7477fe6c0 Level-0 table #395: started +2026/05/02-10:55:36.095552 7fd7477fe6c0 Level-0 table #395: 0 bytes OK +2026/05/02-10:55:36.101888 7fd7477fe6c0 Delete type=0 #393 +2026/05/02-10:55:36.113150 7fd7477fe6c0 Manual compaction at level-0 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at (end) diff --git a/packs/armes/MANIFEST-000368 b/packs/armes/MANIFEST-000396 similarity index 73% rename from packs/armes/MANIFEST-000368 rename to packs/armes/MANIFEST-000396 index f4eeed7477a61c1d1078a9aea16f31e22cc1e40e..ff0c8ed511ee8e5e53fb8a4928085f96603502cc 100644 GIT binary patch delta 43 tcmZ3_xSnxBx5}~u2X}EZFf#Qrb22dZF|)j9tlx8ME=Z&gBr*Xc0suF043q!> delta 43 tcmZ3_xSnxBx5_q->rvbcj7%SyI2o8fF|oX76s@o^0*QPAiF^Tx000z%3wHnj diff --git a/packs/creatures-elementaires/creatures-elementaires/000014.log b/packs/automatons/automatons/000004.log similarity index 100% rename from packs/creatures-elementaires/creatures-elementaires/000014.log rename to packs/automatons/automatons/000004.log diff --git a/packs/automatons/automatons/000005.ldb b/packs/automatons/automatons/000005.ldb new file mode 100644 index 0000000000000000000000000000000000000000..040f7021610744a855330b0219beb30b1c58041f GIT binary patch literal 30382 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 CktY-Y literal 0 HcmV?d00001 diff --git a/packs/dons/000369.log b/packs/automatons/automatons/000018.log similarity index 100% rename from packs/dons/000369.log rename to packs/automatons/automatons/000018.log diff --git a/packs/automatons/automatons/000020.ldb b/packs/automatons/automatons/000020.ldb new file mode 100644 index 0000000000000000000000000000000000000000..681408ceecf857f7d7444716418d77fb1408f94c GIT binary patch literal 20355 zcmd^{3w+zu+5dGE*_IRAu~R2?QYV$&Bs9fwV<&MOH%+VDAYD>=9}R6f#a0ppUs7K} z(>APuwe+% zf4lT^a0&;fo8QnU)SA z65!$-$|$Yg50}Vw@z4N1gF;uB5Ak7WZ*PeRu&XyB1mL)+*cj)8V9?fB2pj#~d>^0K zq|K#c{3iWOqCeZ*5a46}sL&f1B4PM)O}D$Y=<&88)LkeyB$1~;CIhIodH$D=|=;>0k|oH)t^ImRD7G0dUO z+nhD?duwaD%WLboUd}JXPYlPHSnr8pzrY3g7&EsV^)uzQHHlztO;E@!wlFSughH5I zpkrRy_679mvcQSqP9ZEr;Xpyb=OhZ<(BQ;yK;Xg$=MzNv>MymeCy4oIKLaOO8j15Y z^U)B~TU*aFfrvk0yX$I(kHz7VnHoM+8;S%@JQ(EJKQkR%44T3w^oX?=ohv3-=y+MK9z__5RbcG{P9$5;xU;=J>JeuH5 zIYbOC)LR^#TrkE%_k^p7*?vp+*0y?f6Q*CgcM&=#Q_fWGG0u&ZFfrF&8a|7@W`xJo z70O>@Ue({rGro<_6>epgC4^Xv3;R*F@EhB!?19jW$fbja#SJcDL+CY=PH!dr+c{@0 zk-Y|Q4{a}Z77)fYk$$erv=$$c4>k_!m*Qa(;6oA9dQ&E`%rwl+G2_ma=-73hvirE_ zTffDP8n@WFK$P2W400WOaPY^*K$MTg2Jca2>EJhp(DT_jX0D?n%J*q!EQaIt!B2)x zSPcj2O$g3rBKLEI!~H3O=*_;1aOAe4n(S7>HCRdcgWIoAZJ!I5S0ChrXkVn?cB5}O zLHIqhi0mO$m%WPcpdl*CyN3u1beI_2_1a|w-5cdiGqYRJ0(T2R#62y9aaEKLLBE7G zQ+D=M$di3lg?9kX-vN(}=lb~YNec}lh-)6s)cNBHe*6E}GR^!Zc(8)%Vam6~)u+nU z`GZ{CXC`4cSVy%rQ z-(a@bJ7Fw`xJ{~iE&fC_3PaD7*{UytX7MPO2yt;C7Rp}K`Yr=k0$n!V5i#wj`-C{V zG1sI@*9G`4jy+11IYwG&J{-%pnL`oiVfI~WTRp`E8*|L?yVe7zvS^rojA23*Hg3g*n zudvc8+l{co-}g2Pif$X zoYLexsD~!+o}$a@n`*zM(YfoY>clT*%H^>yW|piLhcsu0G=vNFKR=`qqe|(C!X{XA zMm0s};Il3Y*DLRRDykXT0oA`m;p(EACTLj>pZ|!$4~%MFk4kID;6T-xsin9&(@MZU zgqP2ZK5^Y2ivVA{XH3A?GCu0(dnJCkknzLurEh3}2^nU$2?U$>PZDg4)!k6fDg
  • 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 ISN;0`0wa$bZvX%Q literal 0 HcmV?d00001 diff --git a/packs/automatons/automatons/CURRENT b/packs/automatons/automatons/CURRENT new file mode 100644 index 0000000..1a84852 --- /dev/null +++ b/packs/automatons/automatons/CURRENT @@ -0,0 +1 @@ +MANIFEST-000002 diff --git a/packs/equipement/000369.log b/packs/automatons/automatons/LOCK similarity index 100% rename from packs/equipement/000369.log rename to packs/automatons/automatons/LOCK diff --git a/packs/automatons/automatons/LOG b/packs/automatons/automatons/LOG new file mode 100644 index 0000000..06abb5b --- /dev/null +++ b/packs/automatons/automatons/LOG @@ -0,0 +1,5 @@ +2026/05/02-23:15:37.006124 7fcf117ed6c0 Delete type=3 #1 +2026/05/02-23:15:37.009476 7fcef3fff6c0 Level-0 table #5: started +2026/05/02-23:15:37.013256 7fcef3fff6c0 Level-0 table #5: 30382 bytes OK +2026/05/02-23:15:37.019148 7fcef3fff6c0 Delete type=0 #3 +2026/05/02-23:15:37.019361 7fcef3fff6c0 Manual compaction at level-0 from '!actors!AutomCombatMaj001' @ 72057594037927935 : 1 .. '!actors.items!OeilDeVerite0001.OeilVeritProt001' @ 0 : 0; will stop at (end) diff --git a/packs/automatons/automatons/MANIFEST-000002 b/packs/automatons/automatons/MANIFEST-000002 new file mode 100644 index 0000000000000000000000000000000000000000..f6c967c4af161e7cbab694cbf91ff56a176fe5a5 GIT binary patch literal 161 zcmWIhx#Ncn10$nUPHI_dPD+xVQ)NkNd1i5{bAE0?Vo_pAe$kRS-TOEg7@3$k8JJmE z7}9?@oy-7oS%6$NmI`(z)^%?g6%`Ycfl7-N9ZO5{bAfu35=(p&vkVLj85tSCz#OVV mFS8^yw^-3XH8aO0H7vCV$Ta{e(*p^BxdBD_B_Ms85PbmKG%qp$ literal 0 HcmV?d00001 diff --git a/packs/heritages/000369.log b/packs/capacites-automaton/capacites-automaton/000004.log similarity index 100% rename from packs/heritages/000369.log rename to packs/capacites-automaton/capacites-automaton/000004.log diff --git a/packs/capacites-automaton/capacites-automaton/000005.ldb b/packs/capacites-automaton/capacites-automaton/000005.ldb new file mode 100644 index 0000000000000000000000000000000000000000..97cda4cd70d4ce60f878275a7ef0cff27ce92cd0 GIT binary patch literal 3865 zcmb`K3v3+48OLYWd-k61ZgX}niB0Wv?y&1~>zp5XkQiffNiN{XhSS)81e5?;hb+At*p4OyFErA zM3V^Hf)`~dPcz;3@*@9J+LSVFI_}c#m#T zmo?#@!bCLA) zFhMayEf`$k>IuAZn0SMZty=-U5Mj1y)P{qDoj{~gD^W6Vj$5@)o{&Zhr(%cW5i*$plNz_>nE6c6Sp~T zk3PEyCh1}WRu5-foTl4XHNiAFPP4)U5iWzDH2UW-$At%lq{U6bM%=;##|}x&_V-l5 zYaHt4QcIRQ@ci^JL|V8Po3I{S+8bVs&B8%nG6)$lu034EZ3xhz$)j;N!QDZf;ntR} zJACaOnZm?S;Xc7JES(_kmfnG?3hjfE71T;@L?r_oWk0@ZBU%wnsF1$K%A%>fWh$tx zI4r}K7?#yG96v-AJP7gYu&^{GhXu8Wo}7m=W7qCKR+Yeooj5(5zb4;2=e(LGtQ!#b zQ2q*O9$MIXN-@ZfKgBkbuf_EoO^t>LUR9WoDtv8Hu8J6j4l(zZVXb0JSxZ^c$m>Yy zE0^cstIAuF24Rr*I1Hre_&91TiqgkKDY~FoCcj!HSHEA}Qu@Re^63?XK>;{~C-6Fg zVSOFwAKEmwe(HB?vF+;c#g+}VNjVggZCR81Xc1;Mc|jFCKGWb@$qv;TqRIMXT`+CC z#!0`gW|GGp!i1i74V^M+om7Qr{)3=b1if=371}$>D!uXs75N5cdy6=`W|a=z%LExu z6szU;s%5kc_ONwU%eUWL8hu3@^(%u0{rMv36T=>IA)_Qm(^^bj1wEXGmn3i(ES}>) zrB<#}RYCc2vC4sX(mDrSffU=E>w}XwAwGAT8s_dMDng+kG>S3SBaI+k+ppF!8)_96 zg1S^K_hVuFEB4_Hn$v-IEe&SDw zqos>71m0&fP!KZ4$ZfYm*_>4Rs55y7DjnGBMZ6XDnJvYfd@d)WrLc#sGbcZMS83x} zl+iY;TFCEBjnk*p5m(pVD^Dd9$F5WZN`@{w8|J#{81;YahOUS3D9pG4N{2UqI0)%m z5y42t)hjdpFcx%+7<b_ao^unt>Wh7W_2wU$*riY zZ>tP}h9JNQoB`FYzfd8}Z=!he`%*}=gT+YMW05k{THGCYVRxYRY;ktk>DkGf5z#h< z#=bp&vb^#~0mSkn^MhJlhPqp@JqU@ayc|N=1Y#9?I}`?iqr76inz8lDje*J=0-71X zm|7Xz1a;JI2}I)1?M8#PEwF!O;}a23ke)S-y-~=*OG=-WOU_5?zri>uW%$hue$k_c=IK>^Ni@A@^ z3Nj$f*yC!}wklCb1@yE%Us^*33x~|YMB~YOrmhZy6cNLJ*QYNp2k`?jV$cDu1=4b# zsH_k74%Hy|NZ$AKpbwg0tNu<6 zJdf$n7ITCOKnht)@l36Q@J&ly*SxBka!*L_*8#1=vz}J?B`lRid6iqSA#+g-(rWP~t&Gc#|&xPR9g42V@Ot;Z4LGq$#Jp;OqU%oFhuxqRW2f z>v==6Q^%?wPrZX&VurWqrfW(E(8$CyOU}s^JAxh5>>Tr}Oixe#va#D|ugI3bgyc7dAOiTE!b>%9al%!A5$do-z! z{|bfr)_4|X&C(=TF$WB497bR%i?aH-tfIxKX4F*7l^@BKdxhygbME6Zl-0He6kTYG z%MsTe4b(t}Awh)i*Mcn08>L~@XdnyH`JaTL(Hwp1Im9bl)L;W8Zv86?v9wM#4(=G9 z2cDU-@dGWMX|Sl_!A4;1u|OEykIO1eHNPY18B-0Hqg?&3l_os?fOcbfjnOb8=lNT; zp7JpFe0D{)4&)RVAb<)JH|F<*r%Jl4+}IwZ4Rmva)5i)Ia+mHc?wSrrboQMGtlI(1q?i(n61 z;Cb?7koMNlaf8nX! z9nw4Zo_zc2wtdlEuh!LWx_i%ur5@%Y@C~4k-duJ&ij`z_0}_@nXpS10!Ndv|j&*B= zVcX{F>7lmY*VKAB9{h->YePp!Oo~=)Zri{CMa0>fB3S`zPl76_fw~ literal 0 HcmV?d00001 diff --git a/packs/capacites-automaton/capacites-automaton/CURRENT b/packs/capacites-automaton/capacites-automaton/CURRENT new file mode 100644 index 0000000..1a84852 --- /dev/null +++ b/packs/capacites-automaton/capacites-automaton/CURRENT @@ -0,0 +1 @@ +MANIFEST-000002 diff --git a/packs/journal-aide/journal-aide/000029.log b/packs/capacites-automaton/capacites-automaton/LOCK similarity index 100% rename from packs/journal-aide/journal-aide/000029.log rename to packs/capacites-automaton/capacites-automaton/LOCK diff --git a/packs/capacites-automaton/capacites-automaton/LOG b/packs/capacites-automaton/capacites-automaton/LOG new file mode 100644 index 0000000..0d5f472 --- /dev/null +++ b/packs/capacites-automaton/capacites-automaton/LOG @@ -0,0 +1,5 @@ +2026/05/02-22:42:38.620324 7fe3377fe6c0 Delete type=3 #1 +2026/05/02-22:42:38.623484 7fe335ffb6c0 Level-0 table #5: started +2026/05/02-22:42:38.627227 7fe335ffb6c0 Level-0 table #5: 3865 bytes OK +2026/05/02-22:42:38.633343 7fe335ffb6c0 Delete type=0 #3 +2026/05/02-22:42:38.633487 7fe335ffb6c0 Manual compaction at level-0 from '!items!CapAutoComAbs001' @ 72057594037927935 : 1 .. '!items!CapAutoVoyVit001' @ 0 : 0; will stop at (end) diff --git a/packs/capacites-automaton/capacites-automaton/MANIFEST-000002 b/packs/capacites-automaton/capacites-automaton/MANIFEST-000002 new file mode 100644 index 0000000000000000000000000000000000000000..c003ed9e53cf5dae94e92c026dda9ca2fbd83df4 GIT binary patch literal 134 zcmWIhx#Ncn10$nUPHI_dPD+xVQ)NkNd1i5{bAE0?Vo_pAe$kRS-TOEg7@3$k8JJmE z7$i*8y?lXO79f|6g`b^?b*7xWVrEHdZn2_sVu536Nj^}oV^Xn!fgvL!0~nymhvip> LWtM>C`62QE9)==_ literal 0 HcmV?d00001 diff --git a/packs/metiers/000369.log b/packs/creatures-elementaires/creatures-elementaires/000049.log similarity index 100% rename from packs/metiers/000369.log rename to packs/creatures-elementaires/creatures-elementaires/000049.log diff --git a/packs/creatures-elementaires/creatures-elementaires/000016.ldb b/packs/creatures-elementaires/creatures-elementaires/000051.ldb similarity index 55% rename from packs/creatures-elementaires/creatures-elementaires/000016.ldb rename to packs/creatures-elementaires/creatures-elementaires/000051.ldb index 2a7cd1f3b68d0681fc80f9b2f43260d55b1ec03f..839273f80da2b60a121e304c61093db0ff0069fb 100644 GIT binary patch delta 3357 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 delta 3279 zcmbVOdrVvB75~1=wP#~vz%`E~6zoeN*dfL?_QkfgEH*Y^u!EljXhZSi8ch7+`URxO z>m$+96gu^4U8_~ui26{`rZ$BU5ts7 z?ysS9F5kV@cklVm?|07ctVjM5e#X<(^ssyg$kv(^!EiQ3XB5d?JPz*#JSNtZX^;9e zp+F=wPC9*#jKecSbQ6P%!SQTwbVi%fdB^iU>K9)({gGe14_C*sR3fA39Xd3Z8ndUo z*@Dd(nwf>)lb#o~zAOU7emMXH@w%uH2m#Ugyh!qEA)ckKeBAh==&47hGdS+v7gr!G*T^j$N8#Z0zwQbc}O4exA;<*8tfFl+Bp?<`IW z1zN)V$>;S_pldXX>T5x-u(mFe%7x;WJ}|WlBC&Ymd)3lk3DsAj&5b zk63m(@{Jo}ph>ef_R>BO{v0-<{vyk(c654^W zQJCiT0C1GJBNiddgn@zTMPX#?umQ>W^!cY0(|6YO{`*eEAU=BKL9`nAltArsyyg`Zd3)TTU-T}`S{;c%)C6Zq759=-nhvW#AL+wcC01!mO3Y@Vtg-p=rGS2{Zy_@r zNx&six%qLWtUram9%GmJA1(9EN=%TZixlg{D=q59o%i9^bT|>~8??+(Y2OmrYka=!`k_g$f7Z7Aw#3^&eGW@RKUf`Ymosxclyoc_H|BP zd!09jpK(6?zB~;~_cLqlO|syeh6nLp^$zK7S3axJXtWSx-tRnCJzK5@15>}(X%tGD zRkinH2&RrUP}R{o+y-kD@F&W)5^};{vTg8k8w46tjiPN6yEf=;gED5ieRr`JvR*9e z#lXpc7x1UrxLafc=!uc_V5dBo_#_rfIy^ud@Zhne#{&doI@q8O2~ZXQ*yy ztV4Z`3d4{dJ-hAjayLOmqf|J%iT+6pF$AICRDu3(S1OmM5>zsq*(5*_0t49!#lZ+o z?2xjp(9|kxZ0EqWyKzll8Qoo*=$dpWYa1TS?g4!W0ylOFLAtXNU~{qxJ)Ux7yQOAnUW-nxabpFLi+alDE;UPS!&V=M`$NQemgeGHZ5vBy9wdMU!H zwN#~R2KF59^>aM)8dsv{c$4RNcdcFe2QUO&fI4#)hw`x=L_SjwDyl#5kbz#-h5g2b z0R}0VcTSRCB#En;*sy-B);)5(#7 zN8=9-(w0y@9fH{#rEAzM2N5(fB!dYGC1soXyBU+Zo1_1M>-0DLU-W05Q+M;=7cFLj zxuRYvX17(awrK^Q_a8Y(E;{tq1Z~k-@~~*{noy#UI1#KY1SNJ^iGg0S3oF+_7sghY zu8ZTvD(8-Tq z{J3pvS}SgkYw+%}V6#sOHl7qnpA-OHyp8jC)ymzT?{yXM6PB}np^uhoSchM^TaOMChU z2WE#NqZa$D$?1cXT`AuluTZRtb%&}Xi^`W!ly9n#%uO^|l$)}6<6x3RgUQmwpl8@P z5DP8z_a9nJ#$mn;5$nS@eE6}V4>eV^@5YH_&Wm4HjOexdpM9rkuSMAProjxFaepMy@ zog&__Ap%qU{@Syt+sTWq#>em{PT$T43X~}!aw+m%$UBickdGr50rAt~N0=8h9nyQI zbLhe5bP7I77uBC)%s(}O;`G*B`pxl|H{A>_sef7zn$7zFZuizZW&ir_*L={nzYVm+ zsRXBcq54kowSj;0tTeEFv%v^y*)`|O-vUi$9{`E^k(TrR5BWfd6ZLiCXKs59hsHHkb?&IVb?K%Mfx-fHR{ diff --git a/packs/creatures-elementaires/creatures-elementaires/CURRENT b/packs/creatures-elementaires/creatures-elementaires/CURRENT index ef20c6d..1afa5d4 100644 --- a/packs/creatures-elementaires/creatures-elementaires/CURRENT +++ b/packs/creatures-elementaires/creatures-elementaires/CURRENT @@ -1 +1 @@ -MANIFEST-000012 +MANIFEST-000047 diff --git a/packs/creatures-elementaires/creatures-elementaires/LOG b/packs/creatures-elementaires/creatures-elementaires/LOG index 6d9f530..2dd1014 100644 --- a/packs/creatures-elementaires/creatures-elementaires/LOG +++ b/packs/creatures-elementaires/creatures-elementaires/LOG @@ -1,12 +1,14 @@ -2026/05/01-23:51:23.539516 7fd754fed6c0 Delete type=3 #1 -2026/05/02-08:26:02.910133 7fd7477fe6c0 Level-0 table #15: started -2026/05/02-08:26:02.928665 7fd7477fe6c0 Level-0 table #15: 17652 bytes OK -2026/05/02-08:26:02.971253 7fd7477fe6c0 Delete type=0 #13 -2026/05/02-08:26:03.098794 7fd7477fe6c0 Manual compaction at level-0 from '!actors!ElemAirMaj0000003' @ 72057594037927935 : 1 .. '!actors.items!zYGQJ8FibxCCWynl' @ 0 : 0; will stop at '!actors.items!zYGQJ8FibxCCWynl' @ 118 : 1 -2026/05/02-08:26:03.098818 7fd7477fe6c0 Compacting 2@0 + 0@1 files -2026/05/02-08:26:03.114677 7fd7477fe6c0 Generated table #16@0: 61 keys, 12773 bytes -2026/05/02-08:26:03.114714 7fd7477fe6c0 Compacted 2@0 + 0@1 files => 12773 bytes -2026/05/02-08:26:03.143492 7fd7477fe6c0 compacted to: files[ 0 1 0 0 0 0 0 ] -2026/05/02-08:26:03.143650 7fd7477fe6c0 Delete type=2 #10 -2026/05/02-08:26:03.143790 7fd7477fe6c0 Delete type=2 #15 -2026/05/02-08:26:03.143908 7fd7477fe6c0 Manual compaction at level-0 from '!actors.items!zYGQJ8FibxCCWynl' @ 118 : 1 .. '!actors.items!zYGQJ8FibxCCWynl' @ 0 : 0; will stop at (end) +2026/05/02-22:17:12.533680 7fd754fed6c0 Recovering log #44 +2026/05/02-22:17:12.543680 7fd754fed6c0 Delete type=3 #42 +2026/05/02-22:17:12.543746 7fd754fed6c0 Delete type=0 #44 +2026/05/02-23:14:30.692810 7fd7477fe6c0 Level-0 table #50: started +2026/05/02-23:14:30.701352 7fd7477fe6c0 Level-0 table #50: 17662 bytes OK +2026/05/02-23:14:30.711206 7fd7477fe6c0 Delete type=0 #48 +2026/05/02-23:14:30.731427 7fd7477fe6c0 Manual compaction at level-0 from '!actors!ElemAirMaj0000003' @ 72057594037927935 : 1 .. '!actors.items!xgdbv9heAyLXGkCu' @ 0 : 0; will stop at '!actors.items!xgdbv9heAyLXGkCu' @ 547 : 1 +2026/05/02-23:14:30.731439 7fd7477fe6c0 Compacting 1@0 + 1@1 files +2026/05/02-23:14:30.738933 7fd7477fe6c0 Generated table #51@0: 61 keys, 12842 bytes +2026/05/02-23:14:30.739005 7fd7477fe6c0 Compacted 1@0 + 1@1 files => 12842 bytes +2026/05/02-23:14:30.747174 7fd7477fe6c0 compacted to: files[ 0 1 0 0 0 0 0 ] +2026/05/02-23:14:30.747353 7fd7477fe6c0 Delete type=2 #46 +2026/05/02-23:14:30.747504 7fd7477fe6c0 Delete type=2 #50 +2026/05/02-23:14:30.779059 7fd7477fe6c0 Manual compaction at level-0 from '!actors.items!xgdbv9heAyLXGkCu' @ 547 : 1 .. '!actors.items!xgdbv9heAyLXGkCu' @ 0 : 0; will stop at (end) diff --git a/packs/creatures-elementaires/creatures-elementaires/LOG.old b/packs/creatures-elementaires/creatures-elementaires/LOG.old index b56b402..13928a3 100644 --- a/packs/creatures-elementaires/creatures-elementaires/LOG.old +++ b/packs/creatures-elementaires/creatures-elementaires/LOG.old @@ -1,4 +1,14 @@ -2026/05/01-23:51:23.458933 7fd754fed6c0 Log #8: 0 ops saved to Table #11 OK -2026/05/01-23:51:23.459064 7fd754fed6c0 Archiving /home/morr/foundry/foundrydata-dev/Data/systems/fvtt-mournblade/packs/creatures-elementaires/creatures-elementaires/000008.log: OK -2026/05/01-23:51:23.459141 7fd754fed6c0 Table #10: 61 entries OK -2026/05/01-23:51:23.477072 7fd754fed6c0 **** Repaired leveldb /home/morr/foundry/foundrydata-dev/Data/systems/fvtt-mournblade/packs/creatures-elementaires/creatures-elementaires; recovered 1 files; 12818 bytes. Some data may have been lost. **** +2026/05/02-10:42:39.892083 7fd754fed6c0 Recovering log #39 +2026/05/02-10:42:39.902219 7fd754fed6c0 Delete type=3 #37 +2026/05/02-10:42:39.902273 7fd754fed6c0 Delete type=0 #39 +2026/05/02-10:55:36.036221 7fd7477fe6c0 Level-0 table #45: started +2026/05/02-10:55:36.039553 7fd7477fe6c0 Level-0 table #45: 17295 bytes OK +2026/05/02-10:55:36.045711 7fd7477fe6c0 Delete type=0 #43 +2026/05/02-10:55:36.063221 7fd7477fe6c0 Manual compaction at level-0 from '!actors!ElemAirMaj0000003' @ 72057594037927935 : 1 .. '!actors.items!vZXf6vfOj986NEYr' @ 0 : 0; will stop at '!actors.items!zCAO1NzNTX1SCdQ8' @ 456 : 0 +2026/05/02-10:55:36.063230 7fd7477fe6c0 Compacting 1@0 + 1@1 files +2026/05/02-10:55:36.066937 7fd7477fe6c0 Generated table #46@0: 61 keys, 12728 bytes +2026/05/02-10:55:36.066956 7fd7477fe6c0 Compacted 1@0 + 1@1 files => 12728 bytes +2026/05/02-10:55:36.073653 7fd7477fe6c0 compacted to: files[ 0 1 0 0 0 0 0 ] +2026/05/02-10:55:36.073784 7fd7477fe6c0 Delete type=2 #41 +2026/05/02-10:55:36.073906 7fd7477fe6c0 Delete type=2 #45 +2026/05/02-10:55:36.083653 7fd7477fe6c0 Manual compaction at level-0 from '!actors.items!zCAO1NzNTX1SCdQ8' @ 456 : 0 .. '!actors.items!vZXf6vfOj986NEYr' @ 0 : 0; will stop at (end) diff --git a/packs/creatures-elementaires/creatures-elementaires/MANIFEST-000012 b/packs/creatures-elementaires/creatures-elementaires/MANIFEST-000012 deleted file mode 100644 index 3b20883e13fb848d739e537dd8c48b325be90a1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 351 zcmccnO*cM^fss)vC$%g!CnZVGsj?)sJhM2}IX|}`u_&=5zlfcIYf_4$Vq!9oU99Mu zlbY+8S>&6TWdH`ojEoFmpaxZ;msygUTdY`-6l(5~9v);=;+>lkW)Q$=1W{(S>YhFa z10xeJCj&Ddi^sz2Jx9EOTs|OIfTe|zoq_*LC!+|=w!G4u9L5%`7F0#L2YOk!WhPZP vJBL^1l>yCVxHPgcaIrD)voi`jO(xm5xXc6q&PiPR diff --git a/packs/creatures-elementaires/creatures-elementaires/MANIFEST-000047 b/packs/creatures-elementaires/creatures-elementaires/MANIFEST-000047 new file mode 100644 index 0000000000000000000000000000000000000000..82f807e944d05e677dd405ed4397658ff4d4c535 GIT binary patch literal 393 zcmazoy=FI=fss)vC$%g!CnZVGsj?)sJhM2}IX|}`u_&=5zlfDVO))VU$SBs!EJ@8R zR;+S%^f&aY@(YPD40cWlv|u>F$N&QDjCwng6`^VsU2{@%9W#r36SEA!z?c!D3f;7_ zsE9PPvNZoJOA9kU*T^EqClGZ$n>S45WME`6;ACJnWO>8Pm*yhq4dfdF`Nk|OSlAhi z{&g~nz^uzF&BuglO*8?Th~ZIO W8rc|(*ckQL8I4z^knCMtW&!}5i)mf} literal 0 HcmV?d00001 diff --git a/packs/origines/000369.log b/packs/demons-types/demons-types/000028.log similarity index 100% rename from packs/origines/000369.log rename to packs/demons-types/demons-types/000028.log diff --git a/packs/demons-types/demons-types/000030.ldb b/packs/demons-types/demons-types/000030.ldb new file mode 100644 index 0000000000000000000000000000000000000000..2dd1cecfe50f97f7f6692ce9e1017692b5a3ea5d GIT binary patch literal 34643 zcmeI53tSsj+W%+L37t%mAxQ%b6zC*{0+mt{Af=IB(gH2DP)bWJ)uKZfAZ;!*7wiqU zptX0kUizx*rF3nzu9vO%>ndVhFWc^V*{WUj6}78W+g0Cn_g!_f|L4q1k_m*Hm)-yS zd0##!WHOoD=bZCBzu)tm^N+kOnDNDABkKrweSTvZ=k|IQc-@U`po(2vP+-P!Opd2* zHeKRuGTBV?jhMldXY#Oa4xhyI9)W|ICXP|qOPCxuo(uYN;qJi3HhjwO9X^f?1brOr zaJpOI!A^(Q2Vgi<9HLb}ram~$~BY^+xQrK?x zx|%qj$>s^VTzMwH*B3C^%mq09E4a(Ww!lkm?#MHFFY|Cdf2*?%Zkn37W;W=8;|ky& zKYE95e4?Sz>1|>IEUuhB^CozoYzqemz_rWS;^Ew!2aY!_Xl1>AxU2ettWx`HJE7#5iHz-m_Kes_W5!;xgU(&?+9X@AU!0GkC!%JH&bIN*GcjJN58L(N} zHmB4d@OeEgbCz>Kr;BOIc6!>q4i=wpJek(W`Z>l{IzyeMXUxUS7Dii`xx&Xf1AfNM zZpfd4VTI|YMYX+0f_^`IsZ49{5udmBf%QSlQj9#Wkdc>X=J<1&79adJPF(px=?r+e z*1|ap*f!ST4D=phmbdjDaX48Q2k)j3y_@-7Pteb>!3|7V?~#_?gYZ%|#-)AcSMYN) zZCo(GH1!^7<2-)O2PcD{fv>>>$24X4cDXsY1xK;L7USkLxZlMwjb3dX(bTK1Bb$Ou z#e7_2X4(Rbyo{L5$W@A2+F~p(OP4mAvHRQL=QLJeuJoIU+$0yl$t_v<6(kj7AMO{=Gb-ir!-eE=t#xGYKqzqq;bJ`L2(7I*q;as{+j z8OLwW+``lZoql*a2cA@Q2HT>oPhY~_2~T71zCSm# zPg&|@J=@sm+rkJC;} zT7sW%S%P5!>k>?}!pFJW=2XHhZBo)g+?uqosH6j4y%A0zj&0{Wx|IqNn&eJZ@)DAC z1cKckC3li~ZUdZTPWk3bL-`un4kUyNy01YvM6S=sTq0+Xg%e38XQ6R1v~+5VwJi8 z4i5O(pqmXi{qCf>Rd*ZUEjc~T!0Bdr8QJa(*e^=a$|+S7*TT}jRuBbw^iBl{?O?i5 z4;^EGGws}DTtKj{@?N3A~|^usm_KcP-_%( z(c7}0RYA+*z@M4zN$cp)tN)(FHPII;F;cfuS$m;UZuG&8-qVLdtCUdk;lD*Jhb_wK zTTT@!dy3i%m6+vz^soQXP@!_Hg@#8KWc*fnxKMdSSzQD-=&jUZxSp9>sHA^G!Tt1n z4OvrLE+^5kMe35(uxpBPnnj6M=)RyVaGeY{`b9FNRCd9RwG?b* zD3#>Qjy&B<6#Xul+N}&x@I>%$8l@zPJLu08x^174we>D^HIRRyM_j75hlAQvQQs<){=^&Km$LByO7<9G-e;_8G&_ z(SHRnN6)W|zwQafXO6NFnWG3gyMfHnY|j>$LthN{0(0o(SN41xVUF8vH6n8?2j*Cg zS?~jhIS#~Uj-(};LU@+A*pa?45AKRW$Kxb|4)&@3Z+PaoE_p^Qa|G!{WE47<^3Y*H z&=Caas28ClCk!211?U(bfe!X6dzo&#VhG+)VFkv?X%gJHD}ozIB5tgX;)aXIjhO>* zBX^cBEYRYS2!0v~`QYMhXaJ{T@xj0;}sD#lxKU`n16o&A{wh5RD z2Jlws{e^OsQfWJYp9DZKcfZ!IQudg%rY@BdE9}4Kd6iOyhCDsL(0xT=j=t~cZ%B;m z`(T<}LEo=XOv7??4^vpLj!+V;PoAX7V_Z(RZmkm65w7fprzn!C=5(nfdq4fCO3$oi z-K;ZpnSy97tbT*aT;YY0tJ4ER?d0E)IWVq+;fWu(mh1Zn4Yk@}giLQH`;O~jSOWvi zR1!Tfw1FC??AkzK=Hx8(>W$Q1r)?vZ+^DYD2)lH8YR)Fg00RXyfY3Q862=d@D=4Cb zNxp&tYQ9JXgA41*&6K_dhEYM5cF-_*Sb%OhxHkGlB~;V-hB7C}2E9j;H2Mms3*J3_ z6$$(6RiM|nakE;TFp;@T&uEP@V_p(m)WCn&6hPN85k12(O2T>;m# z@B>yih1I+d+h!mz`bvsEPl2(?e^#D==dgyJqz=M$5nM})=}9VzT#aj<`1YY(K&}t; zF~}vHLR?b;LavEJBG-n9h!j4t#36WCNXq=4LQ+sXEkQ?;4>~JLg|kwk8m;xsN6$>q`}U{ z-07Sk`55nyp{QrEw6Nr3Od~<@sdH<1#YfSF<&?LV4b*!$AAZ;3E}WNpax$ZGkJXP8 zE;eh8iUDaXR^_==0H-BVmB-#u@7K5ck*HR6$F)Q2JQ79D_$Q?Jl;(vcJ5lu6wgC%p zZQ5J(g6NZb1i!8*M)To}-K=~NN2!qLW8Z?g%00%rYvM{i_Sr;$Dep&`Px-5$`TWBm zYCiI?)$VQB}h5m2FF3@ATxQiB8`81?dkPZ}J|x7_TtgslYMrr{fIV->W|mC<%P zM`*V}#Ncf5n(mh4yYb)gsMYfgk6KB368cuHKIs!4wYZ+QBdB#gLamy*l%DZ%QLE?M z5m5`l)IikQX}>^3Ed*i?*ReYRwf06(t7iaeSw})G7|X{;El_xhV-+5+09*grzefcE z4|m$r*F%E9W1oog`c6=uq6*79ex9_3dR?ckUcSTK52H&6SeY z5{a@ikhD}FP&O*=(IaUG#OZ5!X-C3ZAreVDFO#v-PE{;xDQ?1A>8D7-W~SdDPgly5 zNsxBvPf0xa$Q?t$7Squ&fxZD=w}AFhSekA#5KMVmW*P zmAm5PVygQ@dnI(&_oILPmxd~-QI;p+0mUyaqP7JVFNCdBnwnEVb+*zK(7~rxP(&e< zTtVR^x(!2wX4sxTt%8y}L)n!4#lDZ=swFQ}hHS z{iTAwiA=p%c>)~^2iy+VC84R5w3wz!_+fg=r-vUmZors5#u$F60r8%^QzW4$><#-&!2~=i3Q#miGPxPE7#{kHwL7r1x zUqr^ifI-gG3}z6(pX$3Y9zt%ei9$%!bMh;S(-6f8G?IH!)N^`Gppj={Xyjb|$0Cim zHKU`E%8TTKStRQKu*k;}O~*gTfSSv;4`Pwg8&Iox1FCcg1M23m0d-IUBi)KI!pM$c zV1#`hD~>^tjpYnLh2TDQree1Bi6H5$Nw48v=22uW1LrR?o4~+cumqq3nNJ8sO5mDz zop6H+nNYm>=OL1 zf()b+Wgw!>w{NL7r8p7ocAvgI%qHMlA~^X1yr;Y3!bxAxh;UL82TqQLy(c|#ra%WO zlV904Jpw1jF~P|&-cyOWAQnxmVe@G^Z$9-9$&C>q=mFk*0%0I31PSg_A>c`j`*cxQ z2pZ%*v2WSSb&63NPa>bFckm|^4aEG7+S=~_HgKLMXVAS|ey7#|O$_+F z4mQA9Ct}FxgNTiMaQ0NBH{hioR%%vw*Kr=>`Kk9)$pqQG``FJ z#!J#r0Lv1mXWjH`)ACH0Ihz8lrk(|wR?gYdN?)KfzJRr?v3=L~Et|D*c0>DgEdU9K{~F8~UrPchE`*AB1CYx-CvSF6v;doZ_Rp(X&Xdr)nV zS7}^9x6^~4#aoTrKoaySwI+O}#smJQ-^uFzt!$I`vRr~>J&)`4#UNHk&vP z+vvh;Q+JW1kM*#BGCnw4L9{#BBV?7g$+$-Yfhfc_&R`3^z*vw5(MX;uc+2#EDzMF+9!1XVyYOjP zp7Tb9(*Bn5+pJ?*4H|fQw>SB760_^ZY0Q6^HZ{=zZ@FkjZ{9!!8+yVXuiW?6#p8R>Ny$-;-ifhND;#Vx`}UUT2zJ|9AlTFYeuDjllwheb670_52{u+t8%VIh3?SHs^kv*DJi*RO6A5-EzMu>_ z9U{P@VIlx5($aum1ue~u<7>Gu85@FIK6dI$6gyQ>?}*~73)pr^_q%7YuzL2Qgiv#| zDM_CS@>ySP7*YElLxlQDT}Dr5d_oP5NT~7Tvt9NYQ9iRmzX61r0fag}La5Kj5~_Rz zpAt!MaeYb<&t}FFYQG?!eVm*igh#!be13#b1^J9#At6)oeER!Q@G1LC706Uxx+Myz+o}F{ zyB*KW$-h;?r?m0XD4*_&@@bmLr&&tlu?U}j&hzO>sOx}GcMTv^hd`*GgbDSYVF*p;Chg^~!jJnkFIC zm55MpjuNUo9-%&t2-Q0bp}vR+_3=a?R4huU4@L;}=*Wcn_^ut#A4G)u*U5tk6-CN{ z@Va4Cgc=oIV*=*BxA5vK3_9xC7x-#C{`;H^QPBBdMt$#IR`p@GN@M7}eC@$5T_!)_)XMQxkuvn)=ZQEE@dj)zoe& zi;`nx(e1;qC<^B<*4~7iT`@pzW0^!wO$nX{D0*?qQtmfAiq1yyaY#(kmo*;Jm(7J zdEVH_^HnK%_VDCMP&6AR&y)yxzDNzNj6N_1^2~^mXA{-`RQLR6GN#o^$a4r~wEG*8 zJn_NG=$;|T^E)c6jE3SUqfqqmF(JEuyq z^M?zgcMcF&U>nm9K9dD~B3~^7Z3qoE{hvMCTj-AOX=ICFAsq-J>w}m-<)-nD=7v zAjG`3c|DNEhGO=R9}Vf2em>O059yb1TpNqhD485T3&9JJ>d2uW$95-#gFs5*4Aui- ze_Sr(4Kl85lwF3xm(2zI5f;cn$=BWzWAk5^2C=J5JEU)By^1mvo$fXlXG}lfMEQ}B zu?Y!>{(Pp+6BA7c*{(<6#Zkg@zIKfeL3q9-f{^#`b6-tbKRAGpgs^4v3wfZ`hJy$L zau;T=bA_4HcnvuC!4+{Gd?pe{I2!0Ij9U031{7``F`&>`t3esQ5Kx#S2`Dsf*SmSA zBKOWHcCuaaff0r42gehR+QXLw6vjy+#XZH(iV=m=CD_?{!;si%Uxy9KA)PQJbnZ4<9L`VghN> z&oXTg%Hm+bUb87GRVbYBPzr$PqT~0$J&PcN6mmu(b5H}x)}W7GDg=RBp0M#cWp!(-nP=z$pLgcAQQ%IMEQ%I}u^OLGHC>UTUnRGxF zX)n*JeG~eh6k-f-#h;E%B9#Og9*k|CQ%Ko&z{J09C{R@o z$mWO}V<<@<&ErA!Zv$csw+Nsb_VD=_!+t)-5Lc*BdOTgE(12kHk%q|%h%`JA8)-No ziS$!FB$2)Vp?|tws`dp6l1Sl3Z%+>92_2)LOoRV-h~@Ad)b!1#4p2SC?FS&z?|$^J z|FO^kYLw;I@PL9B4^TTVtL}y^$mCoM*E8uI6j58QyOyF4Q1qlk_zwYxa41Osm&2ZG zscCmm^v@`hk22js$&+>P@4|DNDBUJX!=b!$y1yuSSCpMzPH&VB6qzJPWHl)S0Q4)*z$U3TUPcg8`&tr2L zL^cu9M{T2KlNdGZdrycFWfQ@TwMg99pGpBcGgk5#QUQxk9xFyc9y=xE@uNs!|C7Mu zl^+>AUWtImeNm~42an#t;IS?SJOU$tNA?)OiDn8grI2~FydP=|bxKplE;TfNgRz)IvTQo*b5RuLmay(=M{6uOnY+P*;d4Jkh|0cKq= zW=N7k1&lZno2pPBO$+^iPgVHk0E{pj=c8FDlEhFz9wTn!G2#(Yz=%&t5hGqf2@6-m zV#H_R>`?b2$PS%wAG6ZC5#~WcLv=HLwa!dgEmS&FZKf2HHGJ@W$V{2clzasVq4LvU zV*;_f4i3ZelFQ(Rt_(5*U=WQ}(`%vUNBN)&Aukk7=)}j)TSFa`P_F8rvZl^DaIyn3 z9U$xBa;hf>QbR9?hxgz3JY21GuF){8!{MV}qcG;{hiSh8Yoo8HQZIuqz{k)}DV!-8 zx00~$Nd*a05Yc`zxlo~9h9(|L{*%H0qd*iDp86^&SE)0xJYAcTgn5U!uD%=dJ22lb zs2mvNIlRryF!FS;pOYTegU{2z+&0b4^j=DLn4ESSrMsHc!zi@f$tfNp1KuFLM*&T@ z1M*PWKfEnfT(+|-p*wudSDR=^dA_|@4Q6Ba{Y3NN}BMBug*AmU96ZAvNDHN6-_x>K)vk``QgOVW^9DSd+`ESBnaDu<3ERq}D9S0@Q^r1n=* z-_)l*Ny2;F4x zD8IfniN+NK>!klHF^+0_O%fkZO4lY1luZGbzoWyB{h{jz8}{$(!m_Cf;z|9wOVxs9 zUz4#=L%TG(0FC9R*3jTL zeFs~sdm$0qTp1_Q^fEp8_-lvp@jn7VReo;YhG~mZB6{kZDd9lVdq=kMUpp~*(a({M z|L0g6Uu>iy)YOb$FCDTBkw2xFTMCVLY>4Ui&Akq2_#`Qq!*6@q@;aCtK$sMOmsU~J zUs{c3?kkcEWd1Mxdgw{}2Blv=J_-eOB~1PYv*q#KBfgw~`TCw1;}kd>^k}|5mJ#~P z=|y^>x0KJ|C+b7}rTnXC&eT-sG0`l2&&EipkCjP!P&6eL--XujT`0=Cf&}hBSVmQ7 z(ohmM>PyuRl|omF5}U(asXxgjXsQN@ri%Yf@!O=WqM-U=bX)_Impwl?A*wqvs_6we z^`1fV+T<=?{HTzUeK8ZshQdEFgeTxT0H`TUz_%qfHTwo(K(jR_8R}^LU0AzuD#ld3 zQ94jaHFoI53HXx53HX+sAD(`1+r1DwDiKcYa|exIjE}OjN+R>`@!8)4Cg3yvV@bT} z_drHW=M%C2iE^L9iP+_Gaqc}x#O@Sj(?;p&<>etqFYzbeTQubOC5wuahu73p4Bqv)x37H5z_~y$b34dN9|`fI-d8(kb=^ z82NVyM*biBpB4r+xA%QH6HVI6c9yRc1Q~hsrufDH1zdA~!<&^Q_ zXz1wP2#xk6iZJ>XW$X#F=(10F6x}hTf&V&1e?kI^c5C90=-(+Jv&lOcL_1R=9J*;R zhw37MqdbR}HwzfL>}XT>PHrDWj=IVpibRgyF5yp>MvLhA_m7G?(ah05icszsq0^soRjCM_Ya-Ju{-01DcTVWI(=2{J zynK9&c-bC{mzLr2GV9-smwhAQ-$zMF^FeWI1Cr#r{m0ki_Xz6vdl8a6_BoJbuc(ec8zITbh$Pn(|D{L& zeMvH2DiUX(8XFIK6iD)x;YhMDERe@1$pImuF(f%a9*0g4&71gS|IGqPZtgoVBuQ5D zB#GwoVFN&tt3;CgjYyI|8$^=ZfF!ei2uUu9lBAL+$&*o%d+zVdX9XPisZ&NA8JmWcOK-BOjuS&qX-$6P_dI49SuAQ}i*OBjYKWe-Js+6Ne)o4|Ak07$*$$ zix@q#oD=2DqmJ$!+_k`w>&hRDaO7=Ljzlu%vcJUR$ot}P*nb_%T`Xkcx-0I} zvynKGmoKvsN50K-Bo>b&cOs4)PQAP*tX^In<;c_sM-HK0>N`3})n^&_RuaDj&wn@( zpRo9FqF#ux$UjJQz77rKkxNb21PjvVtLQJ(DikYd|A798rl+WhHkMvUUpuNmLHek|I28<-3KOPtf-9g| z+?i+)0|S#!s3ZP7-K)Wz^k?wg-kw|y9~hXwJ(0F*R45+M{(91ykS}qV@{KQXZ_629 zBE341E=WZ4saxR2u0(nh`oG$jsP2H-gM?79X1r zIdN}y+*P?6|r@&+4S96z;`$tEs50YPg`P8V1TY!O<>W(}x4!h$q% zTF={GuxdzVWDXU-Vz*wHKqcwkG;qH7g=(}-V7=E@gG<}NEHl**B#pDQ+r=Vp5 zxFLNn2Hu6R6pq$bCai)}AX)Y%*QG*h-ry;?c}sXzoDSM>0})*Y$j-03gI|VQrpmxM zFdnI#S_D&UfiNph7{pelg$iUR3S^kIKEqysm6k|Ek|p1$AaHrZ6kNf~nu09|J)(eOds7MjS3jc2 zN=v?uB=B(!Y3Tm6(1YZ;2T9$7WT-@TONlI6-MU_MeE6{OT5Q%%S!{KS{+{9YR+gm8 z6joX?<1*<$J*7}>9COXv^h0Z2t61}3Hlp}dZ~ADeUgLnOr=atu(bvet-#;NMb@3$l z0`c2&Q;TBG0iTf$neY=P9J9_!G#dF6!HCxyal;J7)iNtS-j@b!uLRN`+Rt`$9@r7|d$OR+ZYzxHhj?I!Yf6PdeY!t8@MC7uer+Rd*+67izrFkm;5j#Hh!i*P)xY>%S$~?#kPO6W9amJU8VBJXaSRN zR7RRWSTRRf7_1{zwVSA-bCp65-L-jEK}KTO$a?ce)Z$yLz85Y zVxMF%&{q=>!9ssSVOKSzqedz{9B~nPTXE)Xg^iJg+7ni{Cxl=lTyNpgVEB2WBA$m;b53ILa!#!qEY_)|>;NR0@ z&i>c+m^G2p#lS$lglH(pn9r{_r|~t~iYJ#BEH=YgU_4rB7HhS!C1jRCsWd}JXFt5m z1lx7yoQ^!z4jGyoA5Usd#o>HQ#nJg@d@EEr?quaS%(`(VTNyIo4F(*VjNLL}a(#S4 zLn>-!QX?l>vFuE-461lK9%?35HxokFa$gswZ%9W+riZ%Z=ep#Fx@@y#p)|ZX4bR*y z<4t)pt`!>;4N5@w`I^NKcGI=+&h_(k4b~X@rYQuE&;?qNy6Xz}`c3vK89CxsB+>MuG zli*#!PAK!?KSu4xs6)4)M;Q3`Qa?+0#J07+A9Ykd&fv5YX9Pi$Dpmdzb669K#vRWwei~xWil0_lBz;tC!Up#ZJvL9 zqJjxsMnJjkG8;5{ml3Ps*7b>zLSHXI+iCBAefUX)wnNudA(af@HEdml?;EE0=a&K$ z=vKc1EttmBZFKEKgtud)fFSseWbD&)}llU3)(Y67TF1l3@Sst z(GK}3L1(B?CM^wxGSy_@=4}_3mk1PK#l6;SM9lTs19*AoQmFMO%)k%U0@)C_oEygF zLfjRL%iWKMx)M%xp`Kj8<#%55!yaj|bS32F3Vji3Q#>N}Mw$smc7_3#wL%XxmyniC za|sl(N%v6Lx&{VyV2qTq`Ga@P1=^ODwUZIY?3D4VcA9af5%Ao&h6&wE3FYd0snZ*E z->OMin4$sU*R0ggx9W4>s$rk4UXD57mb5f~tB!Vvk9B-`@B`D^*vx_BN4`Vke@9_1 zz5Icb+TrVAIWSpd;Zpb^#tgNW{lL!gfAes%AX4Eb8}<_QGlfpE5ck_*cFVe{sD8mn zGTbd*63UgG%0(l{iRHPN&wl%|RM;aemRuQ})6iP;E5b&Ga?;b2KP@XK^EGM_5t5XK zMFgCpJHn@EcK8(K5<-00#U*gFgv8$>JRtO{DH^_E?l*)w$DiyR50!P5obTdhjSERi z!>n<7!{og%U%T#p#ot?xR1)}QFy4i#QxI~>&pG9XoB-1>9(Ky5WxrF7<-yw!_F0{B zTe>WCLb>{ca#hD((ANt>hZ(;KUyU>p;~kZg%U9%}l|{u&(omLcaOujD zfyQwIQHbB@gMOiKF(WgG`K6tfPz7zd@~kbSb`dqAt1AwqEI6$(n~D<}Y8sA|Bz`(%Z<*_VNb zUQ$3=4FB!2TkJBp=X#I`iqJjBNTHlLMl#W=Y~U|%9L!2r^*OIgfQCC9VCx*mcUa@d>TzUPEJ-A#VhJReh*NDpKt`nE zjAzLKTFLo}A&0)YDT*IOEAc8KT1jc7-9e-Yy>j0vY=_8<5>4vO@$bJm9*rS`L`3iq zHlV4=+)h;6QR)xAM|>m+c`BjblTcEBPx6>OiwH?d!z@B`o@y_#l3qb$yPGE>ZDyiO z1&JGo*%(z1~Nmf&Sik9K~xI%oFv>HMW zEKylTKXMz3JUaBqZGbEBzhmSURatWBosdU{k_qsgIf@v!BQfsWBw5uY zBH+V!E>lH>Ibp*xNv2Ot-%D^!mP$gf63qBD4bu>*O_Ne&B@wD5c2@G0lHZ1#LTRof zGWWt6i!vAR>%>8oo=>x4yKjdf5%M64-dP!HO^}wZ)&ycNk-DA4_KA-PZ70udCv~vL zDji6{_C1qjCfI!~9EdH~-9^?<#+D05+dyjEPD;zB?Ig5N)o}O?@G-C|boex^N;m|V z6W(_01AN=b8!NFJ`R5isQGO+Xo;Umfg^jiF{X}Llf9sMb9{7li)Ixzl$o^YB2CHkNp1w3vV~!Y%BI%xM5YTYZY6*aaoxa z_e3nb&{P=|J94+{lS0`tY1x!5@soaa{&%`a-z;g+UPi{HdGqe1b=XNe36c;?YtoPJ2H`UC$`kx)diYq5#Rp~1d zxQ0eLvu4fZi{6|5`K*SMpKiVN3HcEaTVTwa9B@8F`uTJ+c9m`UF3bOktHzKd(;TuqJn^Mi2P>6!2Hdfgzy!(Eo{ z9kQEb@DP59a?IFz_Vq&vO<4N4m|0h04bMh4P}Pk8Q-SNT<610@uuQ>FzyU18+Nd?@ zU)P?~Vae7h7*?)L*B{G#N`pn+@ohf`SBT-eOEj4`jTl`D{W~?s7vYf>i7+!k=e`-87 zwJ{gV6qV(jIELezeSgI78o%;F%(@j^kj>f8h5eUuGXpN` q;Bp8qFTe#dlrg-}?EB@fLG}K6m+Z(m*fHGSh2L)7of%yC$NvW{hqnv> literal 0 HcmV?d00001 diff --git a/packs/demons-types/demons-types/CURRENT b/packs/demons-types/demons-types/CURRENT new file mode 100644 index 0000000..8b15215 --- /dev/null +++ b/packs/demons-types/demons-types/CURRENT @@ -0,0 +1 @@ +MANIFEST-000026 diff --git a/packs/pactes-dons/000047.log b/packs/demons-types/demons-types/LOCK similarity index 100% rename from packs/pactes-dons/000047.log rename to packs/demons-types/demons-types/LOCK diff --git a/packs/demons-types/demons-types/LOG b/packs/demons-types/demons-types/LOG new file mode 100644 index 0000000..2fc009c --- /dev/null +++ b/packs/demons-types/demons-types/LOG @@ -0,0 +1,15 @@ +2026/05/02-22:17:12.519161 7fd755fef6c0 Recovering log #23 +2026/05/02-22:17:12.529405 7fd755fef6c0 Delete type=3 #21 +2026/05/02-22:17:12.529482 7fd755fef6c0 Delete type=0 #23 +2026/05/02-23:14:30.629959 7fd7477fe6c0 Level-0 table #29: started +2026/05/02-23:14:30.639557 7fd7477fe6c0 Level-0 table #29: 24275 bytes OK +2026/05/02-23:14:30.650756 7fd7477fe6c0 Delete type=0 #27 +2026/05/02-23:14:30.662871 7fd7477fe6c0 Manual compaction at level-0 from '!actors!DemonCombatMaj001' @ 72057594037927935 : 1 .. '!actors.items!ip5rWxXRlXaEyQD6' @ 0 : 0; will stop at (end) +2026/05/02-23:14:30.662925 7fd7477fe6c0 Manual compaction at level-1 from '!actors!DemonCombatMaj001' @ 72057594037927935 : 1 .. '!actors.items!ip5rWxXRlXaEyQD6' @ 0 : 0; will stop at '!actors.items!ip5rWxXRlXaEyQD6' @ 366 : 1 +2026/05/02-23:14:30.662935 7fd7477fe6c0 Compacting 1@1 + 1@2 files +2026/05/02-23:14:30.671179 7fd7477fe6c0 Generated table #30@1: 99 keys, 34643 bytes +2026/05/02-23:14:30.671218 7fd7477fe6c0 Compacted 1@1 + 1@2 files => 34643 bytes +2026/05/02-23:14:30.682390 7fd7477fe6c0 compacted to: files[ 0 0 1 0 0 0 0 ] +2026/05/02-23:14:30.682554 7fd7477fe6c0 Delete type=2 #25 +2026/05/02-23:14:30.682716 7fd7477fe6c0 Delete type=2 #29 +2026/05/02-23:14:30.731391 7fd7477fe6c0 Manual compaction at level-1 from '!actors.items!ip5rWxXRlXaEyQD6' @ 366 : 1 .. '!actors.items!ip5rWxXRlXaEyQD6' @ 0 : 0; will stop at (end) diff --git a/packs/demons-types/demons-types/LOG.old b/packs/demons-types/demons-types/LOG.old new file mode 100644 index 0000000..2ea2cc5 --- /dev/null +++ b/packs/demons-types/demons-types/LOG.old @@ -0,0 +1,15 @@ +2026/05/02-10:42:39.878619 7fd7557ee6c0 Recovering log #18 +2026/05/02-10:42:39.888389 7fd7557ee6c0 Delete type=3 #16 +2026/05/02-10:42:39.888487 7fd7557ee6c0 Delete type=0 #18 +2026/05/02-10:55:36.007797 7fd7477fe6c0 Level-0 table #24: started +2026/05/02-10:55:36.011680 7fd7477fe6c0 Level-0 table #24: 24272 bytes OK +2026/05/02-10:55:36.018592 7fd7477fe6c0 Delete type=0 #22 +2026/05/02-10:55:36.025623 7fd7477fe6c0 Manual compaction at level-0 from '!actors!DemonCombatMaj001' @ 72057594037927935 : 1 .. '!actors.items!GqtMRrjUTucZj9cj' @ 0 : 0; will stop at (end) +2026/05/02-10:55:36.025666 7fd7477fe6c0 Manual compaction at level-1 from '!actors!DemonCombatMaj001' @ 72057594037927935 : 1 .. '!actors.items!GqtMRrjUTucZj9cj' @ 0 : 0; will stop at '!actors.items!gPJSnL0lXZ0x3Uvt' @ 300 : 0 +2026/05/02-10:55:36.025679 7fd7477fe6c0 Compacting 1@1 + 1@2 files +2026/05/02-10:55:36.030173 7fd7477fe6c0 Generated table #25@1: 99 keys, 34641 bytes +2026/05/02-10:55:36.030197 7fd7477fe6c0 Compacted 1@1 + 1@2 files => 34641 bytes +2026/05/02-10:55:36.035952 7fd7477fe6c0 compacted to: files[ 0 0 1 0 0 0 0 ] +2026/05/02-10:55:36.036040 7fd7477fe6c0 Delete type=2 #20 +2026/05/02-10:55:36.036148 7fd7477fe6c0 Delete type=2 #24 +2026/05/02-10:55:36.063204 7fd7477fe6c0 Manual compaction at level-1 from '!actors.items!gPJSnL0lXZ0x3Uvt' @ 300 : 0 .. '!actors.items!GqtMRrjUTucZj9cj' @ 0 : 0; will stop at (end) diff --git a/packs/demons-types/demons-types/MANIFEST-000026 b/packs/demons-types/demons-types/MANIFEST-000026 new file mode 100644 index 0000000000000000000000000000000000000000..4dce264c902f770eb399ce6cceb4378bb10711c9 GIT binary patch literal 395 zcmWfc;ny>Tfss)vC$%g!CnZVGsj?)sJhM2}IX|}`u_&=5zlfDlO))VU$SBs!EJ@8R zR!k4@3eNK}$cczDs4xyKD`C)KWB>tnCdrF^Oo~v&iY}?S`FTKNk`haN6SE8q3>hKH z7|@J!FD&s5D#{8CDNT;bvP{lmw1lWDk$!rUlYx;*nv;Q9hUF&H(tjHI-ax(#kT1tF zixR!B3x6=D>uMcoBFf#Qpb22dZGP6|FwARf43G{*l`hfxfCQl2j delta 41 scmZ3>xR!B3w-VC=*Iq6LMy3x;oD9q#nOG_c`7SR8348i_@% delta 43 tcmZ3_xSnxBw~E|dx4+yBj7%SxI2o8fGO^rYY|r1l6(sTzB=Q*~0su264F>=K diff --git a/packs/protection/000369.log b/packs/heritages/000397.log similarity index 100% rename from packs/protection/000369.log rename to packs/heritages/000397.log diff --git a/packs/heritages/CURRENT b/packs/heritages/CURRENT index 07a4d2c..e889b4d 100644 --- a/packs/heritages/CURRENT +++ b/packs/heritages/CURRENT @@ -1 +1 @@ -MANIFEST-000367 +MANIFEST-000395 diff --git a/packs/heritages/LOG b/packs/heritages/LOG index e2d6b15..d5f9cdb 100644 --- a/packs/heritages/LOG +++ b/packs/heritages/LOG @@ -1,7 +1,7 @@ -2026/05/01-23:51:24.071860 7fd755fef6c0 Recovering log #365 -2026/05/01-23:51:24.119019 7fd755fef6c0 Delete type=3 #363 -2026/05/01-23:51:24.119097 7fd755fef6c0 Delete type=0 #365 -2026/05/02-08:26:03.577938 7fd7477fe6c0 Level-0 table #370: started -2026/05/02-08:26:03.577975 7fd7477fe6c0 Level-0 table #370: 0 bytes OK -2026/05/02-08:26:03.614658 7fd7477fe6c0 Delete type=0 #368 -2026/05/02-08:26:03.684819 7fd7477fe6c0 Manual compaction at level-0 from '!items!2GaJZsqr2c2mcDRv' @ 72057594037927935 : 1 .. '!items!ui4JGsGwHNlSXVK3' @ 0 : 0; will stop at (end) +2026/05/02-22:17:12.696255 7fd747fff6c0 Recovering log #393 +2026/05/02-22:17:12.706814 7fd747fff6c0 Delete type=3 #391 +2026/05/02-22:17:12.706879 7fd747fff6c0 Delete type=0 #393 +2026/05/02-23:14:30.921060 7fd7477fe6c0 Level-0 table #398: started +2026/05/02-23:14:30.921121 7fd7477fe6c0 Level-0 table #398: 0 bytes OK +2026/05/02-23:14:30.931783 7fd7477fe6c0 Delete type=0 #396 +2026/05/02-23:14:30.954777 7fd7477fe6c0 Manual compaction at level-0 from '!items!2GaJZsqr2c2mcDRv' @ 72057594037927935 : 1 .. '!items!ui4JGsGwHNlSXVK3' @ 0 : 0; will stop at (end) diff --git a/packs/heritages/LOG.old b/packs/heritages/LOG.old index 39bf496..15a375c 100644 --- a/packs/heritages/LOG.old +++ b/packs/heritages/LOG.old @@ -1,7 +1,7 @@ -2026/05/01-23:45:25.928160 7fd7557ee6c0 Recovering log #361 -2026/05/01-23:45:25.938724 7fd7557ee6c0 Delete type=3 #359 -2026/05/01-23:45:25.938783 7fd7557ee6c0 Delete type=0 #361 -2026/05/01-23:51:18.037971 7fd7477fe6c0 Level-0 table #366: started -2026/05/01-23:51:18.038026 7fd7477fe6c0 Level-0 table #366: 0 bytes OK -2026/05/01-23:51:18.080237 7fd7477fe6c0 Delete type=0 #364 -2026/05/01-23:51:18.167195 7fd7477fe6c0 Manual compaction at level-0 from '!items!2GaJZsqr2c2mcDRv' @ 72057594037927935 : 1 .. '!items!ui4JGsGwHNlSXVK3' @ 0 : 0; will stop at (end) +2026/05/02-10:42:40.055555 7fd747fff6c0 Recovering log #389 +2026/05/02-10:42:40.065759 7fd747fff6c0 Delete type=3 #387 +2026/05/02-10:42:40.065822 7fd747fff6c0 Delete type=0 #389 +2026/05/02-10:55:36.175186 7fd7477fe6c0 Level-0 table #394: started +2026/05/02-10:55:36.175225 7fd7477fe6c0 Level-0 table #394: 0 bytes OK +2026/05/02-10:55:36.182810 7fd7477fe6c0 Delete type=0 #392 +2026/05/02-10:55:36.196140 7fd7477fe6c0 Manual compaction at level-0 from '!items!2GaJZsqr2c2mcDRv' @ 72057594037927935 : 1 .. '!items!ui4JGsGwHNlSXVK3' @ 0 : 0; will stop at (end) diff --git a/packs/heritages/MANIFEST-000367 b/packs/heritages/MANIFEST-000395 similarity index 73% rename from packs/heritages/MANIFEST-000367 rename to packs/heritages/MANIFEST-000395 index 09efdc19934bfbf29bca5b955a3cec802db4c78f..408b93e7ed4d661412682061ec3971ac4fe5c68b 100644 GIT binary patch delta 41 rcmZ3>xR!B3x01=sAU`e!My4KSP6p;)W)_X($`2la1bRUN{XhW#<1`6= delta 41 rcmZ3>xR!B3w~{5(b4D%(My3x;oD9q#nOHPd$?wImJ(MkX0f24-0np;DJMPe5E*AXlD62mq!r2Ic?& diff --git a/packs/scenes/000285.log b/packs/metiers/000397.log similarity index 100% rename from packs/scenes/000285.log rename to packs/metiers/000397.log diff --git a/packs/metiers/CURRENT b/packs/metiers/CURRENT index 07a4d2c..e889b4d 100644 --- a/packs/metiers/CURRENT +++ b/packs/metiers/CURRENT @@ -1 +1 @@ -MANIFEST-000367 +MANIFEST-000395 diff --git a/packs/metiers/LOG b/packs/metiers/LOG index 312fb89..31ec3e0 100644 --- a/packs/metiers/LOG +++ b/packs/metiers/LOG @@ -1,7 +1,7 @@ -2026/05/01-23:51:24.121693 7fd747fff6c0 Recovering log #365 -2026/05/01-23:51:24.175522 7fd747fff6c0 Delete type=3 #363 -2026/05/01-23:51:24.175606 7fd747fff6c0 Delete type=0 #365 -2026/05/02-08:26:03.543492 7fd7477fe6c0 Level-0 table #370: started -2026/05/02-08:26:03.543537 7fd7477fe6c0 Level-0 table #370: 0 bytes OK -2026/05/02-08:26:03.577774 7fd7477fe6c0 Delete type=0 #368 -2026/05/02-08:26:03.614845 7fd7477fe6c0 Manual compaction at level-0 from '!items!09s33sFuju8zjPqI' @ 72057594037927935 : 1 .. '!items!xlyFCQClBZ1N3O1B' @ 0 : 0; will stop at (end) +2026/05/02-22:17:12.708790 7fd7557ee6c0 Recovering log #393 +2026/05/02-22:17:12.719560 7fd7557ee6c0 Delete type=3 #391 +2026/05/02-22:17:12.719616 7fd7557ee6c0 Delete type=0 #393 +2026/05/02-23:14:30.931940 7fd7477fe6c0 Level-0 table #398: started +2026/05/02-23:14:30.931974 7fd7477fe6c0 Level-0 table #398: 0 bytes OK +2026/05/02-23:14:30.943441 7fd7477fe6c0 Delete type=0 #396 +2026/05/02-23:14:30.954807 7fd7477fe6c0 Manual compaction at level-0 from '!items!09s33sFuju8zjPqI' @ 72057594037927935 : 1 .. '!items!xlyFCQClBZ1N3O1B' @ 0 : 0; will stop at (end) diff --git a/packs/metiers/LOG.old b/packs/metiers/LOG.old index f7b68cd..a57a534 100644 --- a/packs/metiers/LOG.old +++ b/packs/metiers/LOG.old @@ -1,7 +1,7 @@ -2026/05/01-23:45:25.941264 7fd755fef6c0 Recovering log #361 -2026/05/01-23:45:25.951481 7fd755fef6c0 Delete type=3 #359 -2026/05/01-23:45:25.951534 7fd755fef6c0 Delete type=0 #361 -2026/05/01-23:51:18.167311 7fd7477fe6c0 Level-0 table #366: started -2026/05/01-23:51:18.167365 7fd7477fe6c0 Level-0 table #366: 0 bytes OK -2026/05/01-23:51:18.213184 7fd7477fe6c0 Delete type=0 #364 -2026/05/01-23:51:18.334580 7fd7477fe6c0 Manual compaction at level-0 from '!items!09s33sFuju8zjPqI' @ 72057594037927935 : 1 .. '!items!xlyFCQClBZ1N3O1B' @ 0 : 0; will stop at (end) +2026/05/02-10:42:40.067527 7fd7557ee6c0 Recovering log #389 +2026/05/02-10:42:40.078178 7fd7557ee6c0 Delete type=3 #387 +2026/05/02-10:42:40.078243 7fd7557ee6c0 Delete type=0 #389 +2026/05/02-10:55:36.182940 7fd7477fe6c0 Level-0 table #394: started +2026/05/02-10:55:36.182962 7fd7477fe6c0 Level-0 table #394: 0 bytes OK +2026/05/02-10:55:36.189078 7fd7477fe6c0 Delete type=0 #392 +2026/05/02-10:55:36.202390 7fd7477fe6c0 Manual compaction at level-0 from '!items!09s33sFuju8zjPqI' @ 72057594037927935 : 1 .. '!items!xlyFCQClBZ1N3O1B' @ 0 : 0; will stop at (end) diff --git a/packs/metiers/MANIFEST-000367 b/packs/metiers/MANIFEST-000395 similarity index 73% rename from packs/metiers/MANIFEST-000367 rename to packs/metiers/MANIFEST-000395 index b7f855c353cdfc431a5b0d757d9f4351af055344..4bb14299ee5056fd45482467984da5bd63b68f67 100644 GIT binary patch delta 41 rcmZ3>xR!B3x02o?y{%jfj7&YuoD9sp%q%W@efG=-3G{*l`hfxf@x}@8 delta 41 scmZ3>xR!B3x017Ea|ag#Bhv>aP6pxR!B3x6(G}vmsmzj7&YuoD9sp%q#(}JEQ-A1bRUN{XhW#_R|U^ delta 41 scmZ3>xR!B3x6Nc!dv68H!b_zV;P03DhO`pgoS$2eSd>_jU&P9wsF;?Ylag9gtQcD5 znU);o>1gg&lo*&*QNY;7%K!rGjMJHBevnj9OiTvqC{{EuaQ1d_E)2^sP4kILip*zx z$OTr1Fe#-x#47%Q7~N5ATnk6ojomoNi1CsrF>L%((zLRSOF~Okno6J=P)ku6?|ybhnw?qi z%s2_bsDOloxWEAki4&2am~yBJ2QC#7=EMOZ!38)JE?hVv1U+zo&meJRq}kPcZ|1#k z-@N@YebSk|mM(Jxp)N}+1nD?QQrvSd^T2JA*&jVuvJl*+`-BB580|nD12r*(T>&&w zHm0o03>Ihznu3%Na!r>zWVu*zJ=g3;@o#al_uo zbJezlSa0zNmu>((W(Dr6Ba(iF%#rt;M{@gK(**$`NW*wcu0I!m_G2Cyt|YeCirSk? zlh?##9M0V5(I{3!H9!NbY}`#sSsI`P_qmES!+8DrHTNC$Qa1o?FR{)D#acQOKOOipC+8wAhYB9DmC(L zTn?4b40*L4fyM7a7kFPn*~9 z3U6M#=u8#*lYOIC4tq7cBNy{>SsTXAF7LU%is2~?6+iV;v9VfxaINkR?sd+*m3B1T zC{&J5e;v>DV_*h?4u5GeJ(~|zzqj=G;s%v9UY&q~$Bjh77n3&!YuC_nLAYTj8GjT{_gI)6RA`qh<%Gt;$m$MliLd8c#h;TN-xd!WY!-gH&K z5Jb?eZdhD%xgnGaAN>b9axHaedTPq$xWE54aMA}{^4Gt^c|Y|Z_QkR7hdxi$Z>Q#_ RrT-sK|9R#01$+93zX5AeSgZg5 diff --git a/packs/tendances/000369.log b/packs/pouvoirs-elementaires/pouvoirs-elementaires/000047.log similarity index 100% rename from packs/tendances/000369.log rename to packs/pouvoirs-elementaires/pouvoirs-elementaires/000047.log diff --git a/packs/pouvoirs-elementaires/pouvoirs-elementaires/000049.ldb b/packs/pouvoirs-elementaires/pouvoirs-elementaires/000049.ldb new file mode 100644 index 0000000000000000000000000000000000000000..f747eec056c667d5935549d1bac8a424c95b19c3 GIT binary patch literal 1092 zcmaJ=O>7%Q7~N4FQVU1ejU7A4i1CsrF>L%(+7MZmO9BN-T?teJYAGt?-OtWQvoo8W z88;yq6_Ah+7dRjxaUv3G4LwxQLoZbid*g&uF2JF1fdh9yaDdMsab%>~)qHQ}y>H*V z{VM&8Gyi$I!VQGFBCQalL>xj&`|d>^xGggOgXc;Xg4=SRw?GA>J&0qVCWf#tfJVy3 zl=Ydx0u4b^kP1vOxma4Ajn!Sje==v;TKB{1WheKr3dz$Q;`e0@++P@P$GahccrXVY~0rI1|c6|Rj?s$*dKeY zx+Edi+dRUh8^C~Bf%_VWq~9h*@~QJg?!argARq*37>~*IR|C*~%p=2<#P-@zr@NB8 zE0Re#_mD@USdG*U8enDfep1fT04=D@;+siL9>~UQPf1dY+SfU?n#?wizI^2Kop+qwHwrT3*vSY8GCve)}~d24d{AudJ!jE(-Zb!i+_P zj+9^$i6}~Fh5QlIlnpAMY$Ow`8U*Q%T>(LEZa$pSHvMr%fQ`wCEPjLFxx3_9QcW?x z!c&@7e{t;0X^&Z?5>(qh*W_37O*Ul0>ROki){Yi#FP;-Gpx8iRIwBTRgSYNcvBKp@ z`OJ`a8WC9hE_8tpB~-i&P@ivpceq7G>nBo1AOfl3_^o^sbH`=nTqb!dgu?hR1(Unw z0GU+Bi;tC`vs`N?{mO5PUuGyKiJdHAaGy*jgBhL*fZR9pex^px^5z}KD=aJ@aZKTZ z^XHwZ!Z0~7dTqh0;~lw}my6mkc6xQ+^;HZnVyO7ZA4|<+wMW+*?#_eGsSneRhA#@$ zjp@JRxqb}HK+xlFE~n@7p$hnbujietVA`CSE2Xyfc5bwNh1rk+x8Yf|z=vEZ8`wzj z%E5Zk$-{1hsjlUnrSaIoL8h~PeW7=G>C|-X+%tWoao+3Pef*8A;~pAtfj3 1091 bytes -2026/05/02-08:26:03.360519 7fd7477fe6c0 compacted to: files[ 0 0 2 0 0 0 0 ] -2026/05/02-08:26:03.360656 7fd7477fe6c0 Delete type=2 #9 -2026/05/02-08:26:03.360818 7fd7477fe6c0 Delete type=2 #13 -2026/05/02-08:26:03.477095 7fd7477fe6c0 Manual compaction at level-1 from '!items!null' @ 57 : 1 .. '!items!null' @ 0 : 0; will stop at (end) +2026/05/02-22:17:12.590806 7fd755fef6c0 Recovering log #42 +2026/05/02-22:17:12.601747 7fd755fef6c0 Delete type=3 #40 +2026/05/02-22:17:12.601846 7fd755fef6c0 Delete type=0 #42 +2026/05/02-23:14:30.796686 7fd7477fe6c0 Level-0 table #48: started +2026/05/02-23:14:30.803793 7fd7477fe6c0 Level-0 table #48: 10558 bytes OK +2026/05/02-23:14:30.814403 7fd7477fe6c0 Delete type=0 #46 +2026/05/02-23:14:30.843076 7fd7477fe6c0 Manual compaction at level-0 from '!items!CapAirAppar0000001' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end) +2026/05/02-23:14:30.854710 7fd7477fe6c0 Manual compaction at level-1 from '!items!CapAirAppar0000001' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 253 : 1 +2026/05/02-23:14:30.854719 7fd7477fe6c0 Compacting 1@1 + 1@2 files +2026/05/02-23:14:30.861664 7fd7477fe6c0 Generated table #49@1: 1 keys, 1092 bytes +2026/05/02-23:14:30.861694 7fd7477fe6c0 Compacted 1@1 + 1@2 files => 1092 bytes +2026/05/02-23:14:30.872601 7fd7477fe6c0 compacted to: files[ 0 0 2 0 0 0 0 ] +2026/05/02-23:14:30.872731 7fd7477fe6c0 Delete type=2 #44 +2026/05/02-23:14:30.872863 7fd7477fe6c0 Delete type=2 #48 +2026/05/02-23:14:30.895164 7fd7477fe6c0 Manual compaction at level-1 from '!items!null' @ 253 : 1 .. '!items!null' @ 0 : 0; will stop at (end) diff --git a/packs/pouvoirs-elementaires/pouvoirs-elementaires/LOG.old b/packs/pouvoirs-elementaires/pouvoirs-elementaires/LOG.old index 663215a..72b62a0 100644 --- a/packs/pouvoirs-elementaires/pouvoirs-elementaires/LOG.old +++ b/packs/pouvoirs-elementaires/pouvoirs-elementaires/LOG.old @@ -1,8 +1,15 @@ -2026/05/01-23:45:25.824231 7fd754fed6c0 Recovering log #4 -2026/05/01-23:45:25.834817 7fd754fed6c0 Delete type=3 #2 -2026/05/01-23:45:25.834893 7fd754fed6c0 Delete type=0 #4 -2026/05/01-23:51:17.830570 7fd7477fe6c0 Level-0 table #9: started -2026/05/01-23:51:17.854407 7fd7477fe6c0 Level-0 table #9: 10558 bytes OK -2026/05/01-23:51:17.893854 7fd7477fe6c0 Delete type=0 #7 -2026/05/01-23:51:17.920823 7fd7477fe6c0 Manual compaction at level-0 from '!items!CapAirAppar0000001' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end) -2026/05/01-23:51:18.003309 7fd7477fe6c0 Manual compaction at level-1 from '!items!CapAirAppar0000001' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end) +2026/05/02-10:42:39.947277 7fd747fff6c0 Recovering log #37 +2026/05/02-10:42:39.958663 7fd747fff6c0 Delete type=3 #35 +2026/05/02-10:42:39.958760 7fd747fff6c0 Delete type=0 #37 +2026/05/02-10:55:36.102057 7fd7477fe6c0 Level-0 table #43: started +2026/05/02-10:55:36.105728 7fd7477fe6c0 Level-0 table #43: 10555 bytes OK +2026/05/02-10:55:36.112964 7fd7477fe6c0 Delete type=0 #41 +2026/05/02-10:55:36.123389 7fd7477fe6c0 Manual compaction at level-0 from '!items!CapAirAppar0000001' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end) +2026/05/02-10:55:36.137149 7fd7477fe6c0 Manual compaction at level-1 from '!items!CapAirAppar0000001' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 225 : 1 +2026/05/02-10:55:36.137160 7fd7477fe6c0 Compacting 1@1 + 1@2 files +2026/05/02-10:55:36.140798 7fd7477fe6c0 Generated table #44@1: 1 keys, 1091 bytes +2026/05/02-10:55:36.140834 7fd7477fe6c0 Compacted 1@1 + 1@2 files => 1091 bytes +2026/05/02-10:55:36.147266 7fd7477fe6c0 compacted to: files[ 0 0 2 0 0 0 0 ] +2026/05/02-10:55:36.147374 7fd7477fe6c0 Delete type=2 #39 +2026/05/02-10:55:36.147533 7fd7477fe6c0 Delete type=2 #43 +2026/05/02-10:55:36.154016 7fd7477fe6c0 Manual compaction at level-1 from '!items!null' @ 225 : 1 .. '!items!null' @ 0 : 0; will stop at (end) diff --git a/packs/pouvoirs-elementaires/pouvoirs-elementaires/MANIFEST-000010 b/packs/pouvoirs-elementaires/pouvoirs-elementaires/MANIFEST-000010 deleted file mode 100644 index e8e93ecbd4925c522b0dfa7efccdefa562fb18a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 316 zcmZSNtNuQTfss)vC$%g!CnZVGsj?)sJhM2}IX|}`u_&=5zlfcQ^@x|EVrEHdZn2_s zVu533kz)Z+&HxMy8O0gE07*qiYEej0YHm_aDoBYbBL_qUI}_)=AYrIMd8Iiyj1~|H z6fs$dn50Nd3a#7hw>;hb3Dm|5gl0Muas28N8{5M@XzLQ;!Dic)iva#BG`Oc^;~2I(B; zK(XNuL;{=GE8!j+P6kFMJx&H@eU?9r8)j|%U6{lVhRI?FKGnz-Cs@NC}*qC(KnGBDhx)PhgP%!`xR!B3w^F;d=uR#MMy4KSP6p;)W)_(*2b$-D1bRUN{XhW#=q(AO delta 41 scmZ3>xR!B3w^G)VJuO@ej7%SxI2o8fGO@_~jMQ5L68H!b_zV;P02hc0lK=n! diff --git a/packs/runes/000398.log b/packs/runes/000398.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/runes/CURRENT b/packs/runes/CURRENT index 0e10e4f..3e632f4 100644 --- a/packs/runes/CURRENT +++ b/packs/runes/CURRENT @@ -1 +1 @@ -MANIFEST-000368 +MANIFEST-000396 diff --git a/packs/runes/LOG b/packs/runes/LOG index deb2405..90d3620 100644 --- a/packs/runes/LOG +++ b/packs/runes/LOG @@ -1,7 +1,7 @@ -2026/05/01-23:51:24.295669 7fd7557ee6c0 Recovering log #366 -2026/05/01-23:51:24.348109 7fd7557ee6c0 Delete type=3 #364 -2026/05/01-23:51:24.348203 7fd7557ee6c0 Delete type=0 #366 -2026/05/02-08:26:03.684840 7fd7477fe6c0 Level-0 table #371: started -2026/05/02-08:26:03.684875 7fd7477fe6c0 Level-0 table #371: 0 bytes OK -2026/05/02-08:26:03.718916 7fd7477fe6c0 Delete type=0 #369 -2026/05/02-08:26:03.753418 7fd7477fe6c0 Manual compaction at level-0 from '!items!12OfTQijhZYbH4vE' @ 72057594037927935 : 1 .. '!items!yicDDY8Z8Xnz1Fam' @ 0 : 0; will stop at (end) +2026/05/02-22:17:12.748263 7fd755fef6c0 Recovering log #394 +2026/05/02-22:17:12.758646 7fd755fef6c0 Delete type=3 #392 +2026/05/02-22:17:12.758728 7fd755fef6c0 Delete type=0 #394 +2026/05/02-23:14:30.966503 7fd7477fe6c0 Level-0 table #399: started +2026/05/02-23:14:30.966533 7fd7477fe6c0 Level-0 table #399: 0 bytes OK +2026/05/02-23:14:30.977474 7fd7477fe6c0 Delete type=0 #397 +2026/05/02-23:14:30.999786 7fd7477fe6c0 Manual compaction at level-0 from '!items!12OfTQijhZYbH4vE' @ 72057594037927935 : 1 .. '!items!yicDDY8Z8Xnz1Fam' @ 0 : 0; will stop at (end) diff --git a/packs/runes/LOG.old b/packs/runes/LOG.old index c3aff95..78d8fe5 100644 --- a/packs/runes/LOG.old +++ b/packs/runes/LOG.old @@ -1,7 +1,7 @@ -2026/05/01-23:45:25.982906 7fd7557ee6c0 Recovering log #362 -2026/05/01-23:45:25.993525 7fd7557ee6c0 Delete type=3 #360 -2026/05/01-23:45:25.993608 7fd7557ee6c0 Delete type=0 #362 -2026/05/01-23:51:18.290657 7fd7477fe6c0 Level-0 table #367: started -2026/05/01-23:51:18.290716 7fd7477fe6c0 Level-0 table #367: 0 bytes OK -2026/05/01-23:51:18.334423 7fd7477fe6c0 Delete type=0 #365 -2026/05/01-23:51:18.334624 7fd7477fe6c0 Manual compaction at level-0 from '!items!12OfTQijhZYbH4vE' @ 72057594037927935 : 1 .. '!items!yicDDY8Z8Xnz1Fam' @ 0 : 0; will stop at (end) +2026/05/02-10:42:40.104905 7fd747fff6c0 Recovering log #390 +2026/05/02-10:42:40.115004 7fd747fff6c0 Delete type=3 #388 +2026/05/02-10:42:40.115072 7fd747fff6c0 Delete type=0 #390 +2026/05/02-10:55:36.202418 7fd7477fe6c0 Level-0 table #395: started +2026/05/02-10:55:36.202446 7fd7477fe6c0 Level-0 table #395: 0 bytes OK +2026/05/02-10:55:36.208922 7fd7477fe6c0 Delete type=0 #393 +2026/05/02-10:55:36.221573 7fd7477fe6c0 Manual compaction at level-0 from '!items!12OfTQijhZYbH4vE' @ 72057594037927935 : 1 .. '!items!yicDDY8Z8Xnz1Fam' @ 0 : 0; will stop at (end) diff --git a/packs/runes/MANIFEST-000368 b/packs/runes/MANIFEST-000396 similarity index 72% rename from packs/runes/MANIFEST-000368 rename to packs/runes/MANIFEST-000396 index 678fa7ca51f8b3a2724605411da3b7e87498daf6..882bb00dde45400c809519c677119ef641b42fc6 100644 GIT binary patch delta 43 scmdnMxPfs(kBa-<5*cm=My6h7P6p;aW|qs0_Z~>wf<*d2A`?I&00jsNmH+?% delta 43 tcmdnMxPfs(k4m_zTn#q^BhyDFP6p;rOe~ifOQ!yu0228G68QoW0RRr{3;+NC diff --git a/packs/scenes/000313.log b/packs/scenes/000313.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/scenes/CURRENT b/packs/scenes/CURRENT index 249a860..cd37fac 100644 --- a/packs/scenes/CURRENT +++ b/packs/scenes/CURRENT @@ -1 +1 @@ -MANIFEST-000283 +MANIFEST-000311 diff --git a/packs/scenes/LOG b/packs/scenes/LOG index 115671f..5493234 100644 --- a/packs/scenes/LOG +++ b/packs/scenes/LOG @@ -1,7 +1,7 @@ -2026/05/01-23:51:24.396589 7fd755fef6c0 Recovering log #281 -2026/05/01-23:51:24.446531 7fd755fef6c0 Delete type=3 #279 -2026/05/01-23:51:24.446586 7fd755fef6c0 Delete type=0 #281 -2026/05/02-08:26:03.797250 7fd7477fe6c0 Level-0 table #286: started -2026/05/02-08:26:03.797327 7fd7477fe6c0 Level-0 table #286: 0 bytes OK -2026/05/02-08:26:03.824814 7fd7477fe6c0 Delete type=0 #284 -2026/05/02-08:26:03.865079 7fd7477fe6c0 Manual compaction at level-0 from '!scenes!ZDV2IwduhOXTxy72' @ 72057594037927935 : 1 .. '!scenes.levels!ZDV2IwduhOXTxy72.defaultLevel0000' @ 0 : 0; will stop at (end) +2026/05/02-22:17:12.774173 7fd755fef6c0 Recovering log #309 +2026/05/02-22:17:12.784741 7fd755fef6c0 Delete type=3 #307 +2026/05/02-22:17:12.784820 7fd755fef6c0 Delete type=0 #309 +2026/05/02-23:14:30.987870 7fd7477fe6c0 Level-0 table #314: started +2026/05/02-23:14:30.987912 7fd7477fe6c0 Level-0 table #314: 0 bytes OK +2026/05/02-23:14:30.999620 7fd7477fe6c0 Delete type=0 #312 +2026/05/02-23:14:31.012587 7fd7477fe6c0 Manual compaction at level-0 from '!scenes!ZDV2IwduhOXTxy72' @ 72057594037927935 : 1 .. '!scenes.levels!ZDV2IwduhOXTxy72.defaultLevel0000' @ 0 : 0; will stop at (end) diff --git a/packs/scenes/LOG.old b/packs/scenes/LOG.old index 14dda3e..b09671e 100644 --- a/packs/scenes/LOG.old +++ b/packs/scenes/LOG.old @@ -1,7 +1,7 @@ -2026/05/01-23:45:26.011066 7fd7557ee6c0 Recovering log #277 -2026/05/01-23:45:26.021962 7fd7557ee6c0 Delete type=3 #275 -2026/05/01-23:45:26.022017 7fd7557ee6c0 Delete type=0 #277 -2026/05/01-23:51:18.377264 7fd7477fe6c0 Level-0 table #282: started -2026/05/01-23:51:18.377325 7fd7477fe6c0 Level-0 table #282: 0 bytes OK -2026/05/01-23:51:18.423378 7fd7477fe6c0 Delete type=0 #280 -2026/05/01-23:51:18.501027 7fd7477fe6c0 Manual compaction at level-0 from '!scenes!ZDV2IwduhOXTxy72' @ 72057594037927935 : 1 .. '!scenes.levels!ZDV2IwduhOXTxy72.defaultLevel0000' @ 0 : 0; will stop at (end) +2026/05/02-10:42:40.131208 7fd755fef6c0 Recovering log #305 +2026/05/02-10:42:40.142443 7fd755fef6c0 Delete type=3 #303 +2026/05/02-10:42:40.142526 7fd755fef6c0 Delete type=0 #305 +2026/05/02-10:55:36.215385 7fd7477fe6c0 Level-0 table #310: started +2026/05/02-10:55:36.215417 7fd7477fe6c0 Level-0 table #310: 0 bytes OK +2026/05/02-10:55:36.221473 7fd7477fe6c0 Delete type=0 #308 +2026/05/02-10:55:36.228686 7fd7477fe6c0 Manual compaction at level-0 from '!scenes!ZDV2IwduhOXTxy72' @ 72057594037927935 : 1 .. '!scenes.levels!ZDV2IwduhOXTxy72.defaultLevel0000' @ 0 : 0; will stop at (end) diff --git a/packs/scenes/MANIFEST-000283 b/packs/scenes/MANIFEST-000311 similarity index 57% rename from packs/scenes/MANIFEST-000283 rename to packs/scenes/MANIFEST-000311 index b895f4a695bd20adb86d965faadd2ce88f303cc3..e5ea517c5cc6702efd97c90d07b7b2065a017af5 100644 GIT binary patch delta 41 scmaFB_<(W3J|&evl~OJSMy4H1oD9r6nONAa-`;i`B(M`Cup1}<0RJlrw*UYD delta 41 scmaFB_<(W3KBd!6XTNeWFfz?y;$&c+%f!Mau_ihiBrq2wFdrxY02P%AKL7v# diff --git a/packs/skills-creatures/000305.log b/packs/skills-creatures/000305.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/skills-creatures/CURRENT b/packs/skills-creatures/CURRENT index 1df8f35..284c57b 100644 --- a/packs/skills-creatures/CURRENT +++ b/packs/skills-creatures/CURRENT @@ -1 +1 @@ -MANIFEST-000275 +MANIFEST-000303 diff --git a/packs/skills-creatures/LOG b/packs/skills-creatures/LOG index f4438bd..d8c39ea 100644 --- a/packs/skills-creatures/LOG +++ b/packs/skills-creatures/LOG @@ -1,7 +1,7 @@ -2026/05/01-23:51:23.652171 7fd755fef6c0 Recovering log #273 -2026/05/01-23:51:23.716490 7fd755fef6c0 Delete type=3 #271 -2026/05/01-23:51:23.716570 7fd755fef6c0 Delete type=0 #273 -2026/05/02-08:26:03.241385 7fd7477fe6c0 Level-0 table #278: started -2026/05/02-08:26:03.241425 7fd7477fe6c0 Level-0 table #278: 0 bytes OK -2026/05/02-08:26:03.278575 7fd7477fe6c0 Delete type=0 #276 -2026/05/02-08:26:03.317643 7fd7477fe6c0 Manual compaction at level-0 from '!items!6bmjc4MUduGs9s6n' @ 72057594037927935 : 1 .. '!items!t692JcsGHG4YJIlM' @ 0 : 0; will stop at (end) +2026/05/02-22:17:12.604032 7fd754fed6c0 Recovering log #301 +2026/05/02-22:17:12.614838 7fd754fed6c0 Delete type=3 #299 +2026/05/02-22:17:12.614923 7fd754fed6c0 Delete type=0 #301 +2026/05/02-23:14:30.747643 7fd7477fe6c0 Level-0 table #306: started +2026/05/02-23:14:30.747678 7fd7477fe6c0 Level-0 table #306: 0 bytes OK +2026/05/02-23:14:30.759522 7fd7477fe6c0 Delete type=0 #304 +2026/05/02-23:14:30.796653 7fd7477fe6c0 Manual compaction at level-0 from '!items!6bmjc4MUduGs9s6n' @ 72057594037927935 : 1 .. '!items!t692JcsGHG4YJIlM' @ 0 : 0; will stop at (end) diff --git a/packs/skills-creatures/LOG.old b/packs/skills-creatures/LOG.old index 640b6ba..f3c7e9b 100644 --- a/packs/skills-creatures/LOG.old +++ b/packs/skills-creatures/LOG.old @@ -1,7 +1,7 @@ -2026/05/01-23:45:25.836879 7fd747fff6c0 Recovering log #269 -2026/05/01-23:45:25.847120 7fd747fff6c0 Delete type=3 #267 -2026/05/01-23:45:25.847204 7fd747fff6c0 Delete type=0 #269 -2026/05/01-23:51:17.793448 7fd7477fe6c0 Level-0 table #274: started -2026/05/01-23:51:17.793525 7fd7477fe6c0 Level-0 table #274: 0 bytes OK -2026/05/01-23:51:17.830421 7fd7477fe6c0 Delete type=0 #272 -2026/05/01-23:51:17.894053 7fd7477fe6c0 Manual compaction at level-0 from '!items!6bmjc4MUduGs9s6n' @ 72057594037927935 : 1 .. '!items!t692JcsGHG4YJIlM' @ 0 : 0; will stop at (end) +2026/05/02-10:42:39.961329 7fd7557ee6c0 Recovering log #297 +2026/05/02-10:42:39.973326 7fd7557ee6c0 Delete type=3 #295 +2026/05/02-10:42:39.973409 7fd7557ee6c0 Delete type=0 #297 +2026/05/02-10:55:36.130757 7fd7477fe6c0 Level-0 table #302: started +2026/05/02-10:55:36.130806 7fd7477fe6c0 Level-0 table #302: 0 bytes OK +2026/05/02-10:55:36.136997 7fd7477fe6c0 Delete type=0 #300 +2026/05/02-10:55:36.147652 7fd7477fe6c0 Manual compaction at level-0 from '!items!6bmjc4MUduGs9s6n' @ 72057594037927935 : 1 .. '!items!t692JcsGHG4YJIlM' @ 0 : 0; will stop at (end) diff --git a/packs/skills-creatures/MANIFEST-000275 b/packs/skills-creatures/MANIFEST-000303 similarity index 73% rename from packs/skills-creatures/MANIFEST-000275 rename to packs/skills-creatures/MANIFEST-000303 index 05a64fb1c1fa568b7846c106f84c7fd3ee71215c..c558dc8d74db2c140af57bd98b490ea352e83ace 100644 GIT binary patch delta 41 scmZ3>xR!B3w^Gh($ delta 41 scmZ3>xR!B3x6(|-``fq}7@4LpaWXJZWn$6v>JD545||1Sm<|*G0P|}Jng9R* diff --git a/packs/skills/000397.log b/packs/skills/000397.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/skills/CURRENT b/packs/skills/CURRENT index 07a4d2c..e889b4d 100644 --- a/packs/skills/CURRENT +++ b/packs/skills/CURRENT @@ -1 +1 @@ -MANIFEST-000367 +MANIFEST-000395 diff --git a/packs/skills/LOG b/packs/skills/LOG index b41f267..7d673ca 100644 --- a/packs/skills/LOG +++ b/packs/skills/LOG @@ -1,7 +1,7 @@ -2026/05/01-23:51:23.543672 7fd747fff6c0 Recovering log #365 -2026/05/01-23:51:23.596151 7fd747fff6c0 Delete type=3 #363 -2026/05/01-23:51:23.596212 7fd747fff6c0 Delete type=0 #365 -2026/05/02-08:26:03.278699 7fd7477fe6c0 Level-0 table #370: started -2026/05/02-08:26:03.278732 7fd7477fe6c0 Level-0 table #370: 0 bytes OK -2026/05/02-08:26:03.317405 7fd7477fe6c0 Delete type=0 #368 -2026/05/02-08:26:03.317660 7fd7477fe6c0 Manual compaction at level-0 from '!items!0LlzDyCurJedqeyG' @ 72057594037927935 : 1 .. '!items!tq6mEgXog7h4VyWk' @ 0 : 0; will stop at (end) +2026/05/02-22:17:12.547929 7fd7557ee6c0 Recovering log #393 +2026/05/02-22:17:12.557743 7fd7557ee6c0 Delete type=3 #391 +2026/05/02-22:17:12.557812 7fd7557ee6c0 Delete type=0 #393 +2026/05/02-23:14:30.682841 7fd7477fe6c0 Level-0 table #398: started +2026/05/02-23:14:30.682877 7fd7477fe6c0 Level-0 table #398: 0 bytes OK +2026/05/02-23:14:30.692633 7fd7477fe6c0 Delete type=0 #396 +2026/05/02-23:14:30.731406 7fd7477fe6c0 Manual compaction at level-0 from '!items!0LlzDyCurJedqeyG' @ 72057594037927935 : 1 .. '!items!tq6mEgXog7h4VyWk' @ 0 : 0; will stop at (end) diff --git a/packs/skills/LOG.old b/packs/skills/LOG.old index 149986f..bac2114 100644 --- a/packs/skills/LOG.old +++ b/packs/skills/LOG.old @@ -1,7 +1,7 @@ -2026/05/01-23:45:25.812446 7fd755fef6c0 Recovering log #361 -2026/05/01-23:45:25.822133 7fd755fef6c0 Delete type=3 #359 -2026/05/01-23:45:25.822190 7fd755fef6c0 Delete type=0 #361 -2026/05/01-23:51:17.756110 7fd7477fe6c0 Level-0 table #366: started -2026/05/01-23:51:17.756160 7fd7477fe6c0 Level-0 table #366: 0 bytes OK -2026/05/01-23:51:17.793257 7fd7477fe6c0 Delete type=0 #364 -2026/05/01-23:51:17.894035 7fd7477fe6c0 Manual compaction at level-0 from '!items!0LlzDyCurJedqeyG' @ 72057594037927935 : 1 .. '!items!tq6mEgXog7h4VyWk' @ 0 : 0; will stop at (end) +2026/05/02-10:42:39.905833 7fd755fef6c0 Recovering log #389 +2026/05/02-10:42:39.917059 7fd755fef6c0 Delete type=3 #387 +2026/05/02-10:42:39.917119 7fd755fef6c0 Delete type=0 #389 +2026/05/02-10:55:36.045904 7fd7477fe6c0 Level-0 table #394: started +2026/05/02-10:55:36.045940 7fd7477fe6c0 Level-0 table #394: 0 bytes OK +2026/05/02-10:55:36.053242 7fd7477fe6c0 Delete type=0 #392 +2026/05/02-10:55:36.073989 7fd7477fe6c0 Manual compaction at level-0 from '!items!0LlzDyCurJedqeyG' @ 72057594037927935 : 1 .. '!items!tq6mEgXog7h4VyWk' @ 0 : 0; will stop at (end) diff --git a/packs/skills/MANIFEST-000367 b/packs/skills/MANIFEST-000395 similarity index 73% rename from packs/skills/MANIFEST-000367 rename to packs/skills/MANIFEST-000395 index a573cd758e8ea05e44410753dde8fb5360adfaa9..7875f63eeb2e087587714533626eb994dd31987a 100644 GIT binary patch delta 41 rcmZ3>xR!B3x6+z78`g3$Ff#Qpb22dZGPBs&H`zCX1bRUN{XhW#1nLR} delta 41 scmZ3>xR!B3x6;AI9E-RZ7@0mWaWXJ}WMZ)~lAN^-B=8X=@EIro0RPbn!TAutomaton de Combat — Capacité 1 (Mineur, Médian, Majeur)

    L'Automaton draine la magie runique utilisée contre lui. Chaque point d'Âme drainé vient alimenter pour le tour suivant son attribut le plus fort.

    " + } + }, + { + "_id": "CapAutoComBemCom", + "_key": "!actors.items!AutomCombatMaj001.CapAutoComBemCom", + "name": "Bénédiction (Combat)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Combat — Capacité 2 (Médian, Majeur)

    L'Automaton bénit ses partenaires de combat. À chaque tour de combat, il augmente de 3 points la Capacité offensive et la Défense de ses alliés.

    " + } + }, + { + "_id": "CapAutoComAumCom", + "_key": "!actors.items!AutomCombatMaj001.CapAutoComAumCom", + "name": "Aura (Combat)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Combat — Capacité 3 (Majeur)

    L'Automaton génère une aura lumineuse de protection contre le Chaos : tout au long du combat, les créatures et les êtres marqués par le Chaos ne peuvent approcher à moins de 5 mètres de l'Automaton sous peine de subir 10 points de dégâts létaux.

    " + } + } + ], + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Loi", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

    Automaton de Combat (Majeur)

    Un Automaton majeur bénéficie de 3 Capacités spéciales sur les 3 propres aux Automata de Combat.

    Capacités spéciales actives

    • Capacité 1 — Absorption
    • Capacité 2 — Bénédiction
    • Capacité 3 — Aura

    Règle

    Un Automaton mineur bénéficie de la 1re Capacité spéciale, un Automaton médian des deux premières, un Automaton majeur de toutes les Capacités spéciales.

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Modèle de base — à personnaliser. 3 Capacité(s) spéciale(s).

    ", + "gmnotes": "

    Type : Combat | Puissance : Majeur

    ", + "creatureType": "automaton", + "automatonType": "combat", + "automatonPuissance": "majeur", + "automatonVoyageType": "", + "elementType": "", + "demonType": "", + "demonPuissance": "" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 9 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 10 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 6 + }, + "pre": { + "label": "Présence", + "labelnorm": "presence", + "abbrev": "pre", + "value": 6 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 8 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 40, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 0, + "bonusdegats": 0, + "defensebonus": 0, + "monte": false + }, + "balance": { + "loi": 10, + "chaos": 0, + "aspect": 0, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/automatons/automaton-combat-median.json b/packs/src/automatons/automaton-combat-median.json new file mode 100644 index 0000000..17c6b17 --- /dev/null +++ b/packs/src/automatons/automaton-combat-median.json @@ -0,0 +1,202 @@ +{ + "_id": "AutomCombatMed001", + "_key": "!actors!AutomCombatMed001", + "name": "Automaton de Combat (Median)", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "AutomCombaB2F500", + "_key": "!actors.items!AutomCombatMed001.AutomCombaB2F500", + "name": "Mêlée", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 8, + "attribut1": "pui", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomCombaFC0000", + "_key": "!actors.items!AutomCombatMed001.AutomCombaFC0000", + "name": "Mouvements", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomCombaEF5800", + "_key": "!actors.items!AutomCombatMed001.AutomCombaEF5800", + "name": "Armes à distance", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomComba843F00", + "_key": "!actors.items!AutomCombatMed001.AutomComba843F00", + "name": "Coercition", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 4, + "attribut1": "pre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "CapAutoComAbmCom", + "_key": "!actors.items!AutomCombatMed001.CapAutoComAbmCom", + "name": "Absorption (Combat)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Combat — Capacité 1 (Mineur, Médian, Majeur)

    L'Automaton draine la magie runique utilisée contre lui. Chaque point d'Âme drainé vient alimenter pour le tour suivant son attribut le plus fort.

    " + } + }, + { + "_id": "CapAutoComBemCom", + "_key": "!actors.items!AutomCombatMed001.CapAutoComBemCom", + "name": "Bénédiction (Combat)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Combat — Capacité 2 (Médian, Majeur)

    L'Automaton bénit ses partenaires de combat. À chaque tour de combat, il augmente de 3 points la Capacité offensive et la Défense de ses alliés.

    " + } + } + ], + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Loi", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

    Automaton de Combat (Médian)

    Un Automaton médian bénéficie de 2 Capacités spéciales sur les 3 propres aux Automata de Combat.

    Capacités spéciales actives

    • Capacité 1 — Absorption
    • Capacité 2 — Bénédiction
    • Capacité 3 — Aura (niveau supérieur)

    Règle

    Un Automaton mineur bénéficie de la 1re Capacité spéciale, un Automaton médian des deux premières, un Automaton majeur de toutes les Capacités spéciales.

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Modèle de base — à personnaliser. 2 Capacité(s) spéciale(s).

    ", + "gmnotes": "

    Type : Combat | Puissance : Median

    ", + "creatureType": "automaton", + "automatonType": "combat", + "automatonPuissance": "median", + "automatonVoyageType": "", + "elementType": "", + "demonType": "", + "demonPuissance": "" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 6 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 7 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 5 + }, + "pre": { + "label": "Présence", + "labelnorm": "presence", + "abbrev": "pre", + "value": 4 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 5 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 28, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 0, + "bonusdegats": 0, + "defensebonus": 0, + "monte": false + }, + "balance": { + "loi": 10, + "chaos": 0, + "aspect": 0, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/automatons/automaton-combat-mineur.json b/packs/src/automatons/automaton-combat-mineur.json new file mode 100644 index 0000000..0e4ab9a --- /dev/null +++ b/packs/src/automatons/automaton-combat-mineur.json @@ -0,0 +1,159 @@ +{ + "_id": "AutomCombatMin001", + "_key": "!actors!AutomCombatMin001", + "name": "Automaton de Combat (Mineur)", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "AutomComba0CF000", + "_key": "!actors.items!AutomCombatMin001.AutomComba0CF000", + "name": "Mêlée", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 5, + "attribut1": "pui", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomComba2B7B00", + "_key": "!actors.items!AutomCombatMin001.AutomComba2B7B00", + "name": "Mouvements", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 5, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "CapAutoComAbmCom", + "_key": "!actors.items!AutomCombatMin001.CapAutoComAbmCom", + "name": "Absorption (Combat)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Combat — Capacité 1 (Mineur, Médian, Majeur)

    L'Automaton draine la magie runique utilisée contre lui. Chaque point d'Âme drainé vient alimenter pour le tour suivant son attribut le plus fort.

    " + } + } + ], + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Loi", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

    Automaton de Combat (Mineur)

    Un Automaton mineur bénéficie de 1 Capacité spéciale sur les 3 propres aux Automata de Combat.

    Capacités spéciales actives

    • Capacité 1 — Absorption
    • Capacité 2 — Bénédiction (niveau supérieur)
    • Capacité 3 — Aura (niveau supérieur)

    Règle

    Un Automaton mineur bénéficie de la 1re Capacité spéciale, un Automaton médian des deux premières, un Automaton majeur de toutes les Capacités spéciales.

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Modèle de base — à personnaliser. 1 Capacité(s) spéciale(s).

    ", + "gmnotes": "

    Type : Combat | Puissance : Mineur

    ", + "creatureType": "automaton", + "automatonType": "combat", + "automatonPuissance": "mineur", + "automatonVoyageType": "", + "elementType": "", + "demonType": "", + "demonPuissance": "" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 4 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 5 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 3 + }, + "pre": { + "label": "Présence", + "labelnorm": "presence", + "abbrev": "pre", + "value": 2 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 3 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 20, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 0, + "bonusdegats": 0, + "defensebonus": 0, + "monte": false + }, + "balance": { + "loi": 10, + "chaos": 0, + "aspect": 0, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/automatons/automaton-coursier-gris.json b/packs/src/automatons/automaton-coursier-gris.json new file mode 100644 index 0000000..527db5e --- /dev/null +++ b/packs/src/automatons/automaton-coursier-gris.json @@ -0,0 +1,151 @@ +{ + "_id": "CoursierGris0001", + "_key": "!actors!CoursierGris0001", + "name": "Coursier gris", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "CoursierMouv0001", + "_key": "!actors.items!CoursierGris0001.CoursierMouv0001", + "name": "Mouvements", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 5, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "CoursierNage0001", + "_key": "!actors.items!CoursierGris0001.CoursierNage0001", + "name": "Nage", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 10, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "CoursierProt0001", + "_key": "!actors.items!CoursierGris0001.CoursierProt0001", + "name": "Armure (structure)", + "type": "protection", + "img": "systems/fvtt-mournblade/assets/icons/protection.webp", + "system": { + "description": "

    Carcasse de fer articulé. Protection intégrée de l'Automaton.

    ", + "typeprotection": "armure", + "protection": 5, + "degats": "", + "rarete": 0, + "prix": 0, + "equipped": true, + "enchantementLoi": { "actif": false, "bonus": 0, "antiChaos": false } + } + }, + { + "_id": "CoursierVite0001", + "_key": "!actors.items!CoursierGris0001.CoursierVite0001", + "name": "Vitesse (Voyage)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Voyage — Capacité 1 (Mineur, Médian, Majeur)

    La vitesse de l'Automaton triple lorsqu'il doit fuir un danger. Cette fuite accélérée dure 5 tours, après quoi l'Automaton reprend sa vitesse normale.

    " + } + }, + { + "_id": "CoursierAirP0001", + "_key": "!actors.items!CoursierGris0001.CoursierAirP0001", + "name": "Air pur (Voyage)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Voyage — Capacité 2 (Médian, Majeur)

    L'Automaton fournit à son (ses) passager(s) de l'air pur pour respirer sous l'eau ou dans le vide interdimensionnel. Cet effet dure tout le long du voyage, tant que l'Esprit est présent dans le Réceptacle.

    " + } + } + ], + "effects": [], + "folder": null, + "sort": 200001, + "flags": {}, + "ownership": { "default": 0 }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Loi", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "Obsidienne", + "description": "

    Coursier gris

    Automaton médian du Voyage

    Grand cheval de fer articulé aux yeux d'obsidienne possédant deux selles en zinc incorporées à son dos. Infatigable, il galope sur de grandes distances et constitue un moyen de locomotion particulièrement sûr.

    Note : Ce coursier refuse de porter tout être dont le score de Chaos est strictement supérieur au score de Loi.

    Capacités spéciales actives

    • Capacité 1 — Vitesse
    • Capacité 2 — Air pur
    • Capacité 3 — Invulnérabilité (niveau supérieur)

    Stat Block (référence)

    CO : 3 | Protection : 5 | Défense : 7 | Vitesse : 10 | Initiative : 1d10+10 | Santé : 15 | Âme : 11

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Automaton médian de Voyage. 2 Capacités spéciales.

    ", + "gmnotes": "

    Point Faible : la machinerie au niveau du poitrail qui commande l'ensemble des mouvements. Elle est en règle générale mal ou peu protégée là où les pattes avant sont reliées au corps.

    Restriction : refuse de porter tout être dont le Chaos est strictement supérieur au score de Loi.

    ", + "creatureType": "automaton", + "automatonType": "voyage", + "automatonPuissance": "median", + "automatonVoyageType": "", + "elementType": "", + "demonType": "", + "demonPuissance": "" + }, + "subactors": [], + "attributs": { + "adr": { "label": "Adresse", "labelnorm": "adresse", "abbrev": "adr", "value": 4 }, + "pui": { "label": "Puissance", "labelnorm": "puissance", "abbrev": "pui", "value": 3 }, + "cla": { "label": "Clairvoyance", "labelnorm": "clairvoyance", "abbrev": "cla", "value": 2 }, + "pre": { "label": "Présence", "labelnorm": "presence", "abbrev": "pre", "value": 1 }, + "tre": { "label": "Trempe", "labelnorm": "trempe", "abbrev": "tre", "value": 2 } + }, + "bonneaventure": { "base": 0, "actuelle": 0 }, + "experience": { "value": 0 }, + "eclat": { "value": 0 }, + "sante": { + "base": 15, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 11, + "currentmax": 11, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 6, + "vitessebonus": 5, + "bonusdegats": 0, + "defensebonus": 0, + "monte": true + }, + "balance": { + "loi": 10, + "chaos": 0, + "aspect": 10, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { "value": 0 } + } +} diff --git a/packs/src/automatons/automaton-justicier-donblas.json b/packs/src/automatons/automaton-justicier-donblas.json new file mode 100644 index 0000000..2ef1313 --- /dev/null +++ b/packs/src/automatons/automaton-justicier-donblas.json @@ -0,0 +1,210 @@ +{ + "_id": "JusticierDonblas", + "_key": "!actors!JusticierDonblas", + "name": "Justicier de Donblas", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "JusticierMele001", + "_key": "!actors.items!JusticierDonblas.JusticierMele001", + "name": "Mêlée", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 10, + "attribut1": "pui", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "JusticierMouv001", + "_key": "!actors.items!JusticierDonblas.JusticierMouv001", + "name": "Mouvements", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 8, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "JusticierADis001", + "_key": "!actors.items!JusticierDonblas.JusticierADis001", + "name": "Armes à distance", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 8, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "JusticierCoer001", + "_key": "!actors.items!JusticierDonblas.JusticierCoer001", + "name": "Coercition", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "pre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "JusticierMont001", + "_key": "!actors.items!JusticierDonblas.JusticierMont001", + "name": "Monte", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 4, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "JusticierProt001", + "_key": "!actors.items!JusticierDonblas.JusticierProt001", + "name": "Armure (structure)", + "type": "protection", + "img": "systems/fvtt-mournblade/assets/icons/protection.webp", + "system": { + "description": "

    Structure d'argent et d'airain. Protection intégrée de l'Automaton.

    ", + "typeprotection": "armure", + "protection": 5, + "degats": "", + "rarete": 0, + "prix": 0, + "equipped": true, + "enchantementLoi": { "actif": false, "bonus": 0, "antiChaos": false } + } + }, + { + "_id": "JusticierAbs0001", + "_key": "!actors.items!JusticierDonblas.JusticierAbs0001", + "name": "Absorption (Combat)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Combat — Capacité 1 (Mineur, Médian, Majeur)

    L'Automaton draine la magie runique utilisée contre lui. Chaque point d'Âme drainé vient alimenter pour le tour suivant son attribut le plus fort.

    " + } + }, + { + "_id": "JusticierBen0001", + "_key": "!actors.items!JusticierDonblas.JusticierBen0001", + "name": "Bénédiction (Combat)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Combat — Capacité 2 (Médian, Majeur)

    L'Automaton bénit ses partenaires de combat. À chaque tour de combat, il augmente de 3 points la Capacité offensive et la Défense de ses alliés.

    " + } + }, + { + "_id": "JusticierAur0001", + "_key": "!actors.items!JusticierDonblas.JusticierAur0001", + "name": "Aura (Combat)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Combat — Capacité 3 (Majeur)

    L'Automaton génère une aura lumineuse de protection contre le Chaos : tout au long du combat, les créatures et les êtres marqués par le Chaos ne peuvent approcher à moins de 5 mètres de l'Automaton sous peine de subir 10 points de dégâts létaux.

    " + } + } + ], + "effects": [], + "folder": null, + "sort": 200000, + "flags": {}, + "ownership": { "default": 0 }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Loi", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "Saphir", + "description": "

    Justicier de Donblas

    Automaton majeur de Combat

    Ces guerriers d'argent et d'airain, aux yeux de saphir et au bouclier recouvert d'or, représentent l'idéal de vertu chevaleresque qu'incarne le Seigneur Donblas. Plus puissants que les Guerriers d'Ionarat, ils ont la capacité d'illuminer les ténèbres et de repousser le Chaos. Ils luttent contre les êtres humains lorsque ceux-ci sont chaotiques et se livrent au pillage et au massacre. Ils n'aiment rien tant que lutter contre le Chaos.

    Capacités spéciales actives

    • Capacité 1 — Absorption
    • Capacité 2 — Bénédiction
    • Capacité 3 — Aura

    Stat Block (référence)

    CO : 19 | Protection : 5 | Défense : 17 | Vitesse : 6 | Initiative : 1d10+6 | Santé : 37 | Âme : 29

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Automaton majeur de Combat de Donblas. 3 Capacités spéciales.

    ", + "gmnotes": "

    Point Faible : la nuque (là où passent de nombreux filins contrôlant l'ensemble du corps).

    Ne prend jamais part aux batailles n'impliquant pas une lutte entre la Loi et le Chaos. Peut passer par le fil de l'épée tout être chaotique qui lui apparaît comme une menace.

    ", + "creatureType": "automaton", + "automatonType": "combat", + "automatonPuissance": "majeur", + "automatonVoyageType": "", + "elementType": "", + "demonType": "", + "demonPuissance": "" + }, + "subactors": [], + "attributs": { + "adr": { "label": "Adresse", "labelnorm": "adresse", "abbrev": "adr", "value": 8 }, + "pui": { "label": "Puissance", "labelnorm": "puissance", "abbrev": "pui", "value": 9 }, + "cla": { "label": "Clairvoyance", "labelnorm": "clairvoyance", "abbrev": "cla", "value": 5 }, + "pre": { "label": "Présence", "labelnorm": "presence", "abbrev": "pre", "value": 5 }, + "tre": { "label": "Trempe", "labelnorm": "trempe", "abbrev": "tre", "value": 7 } + }, + "bonneaventure": { "base": 0, "actuelle": 0 }, + "experience": { "value": 0 }, + "eclat": { "value": 0 }, + "sante": { + "base": 37, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 29, + "currentmax": 29, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": -2, + "vitessebonus": -1, + "bonusdegats": 0, + "defensebonus": 5, + "monte": false + }, + "balance": { + "loi": 10, + "chaos": 0, + "aspect": 10, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { "value": 0 } + } +} diff --git a/packs/src/automatons/automaton-oeil-de-verite.json b/packs/src/automatons/automaton-oeil-de-verite.json new file mode 100644 index 0000000..9a74f9c --- /dev/null +++ b/packs/src/automatons/automaton-oeil-de-verite.json @@ -0,0 +1,140 @@ +{ + "_id": "OeilDeVerite0001", + "_key": "!actors!OeilDeVerite0001", + "name": "Œil de Vérité", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "OeilVeritPerc001", + "_key": "!actors.items!OeilDeVerite0001.OeilVeritPerc001", + "name": "Perception", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 5, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "OeilVeritMouv001", + "_key": "!actors.items!OeilDeVerite0001.OeilVeritMouv001", + "name": "Mouvements", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 5, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "OeilVeritProt001", + "_key": "!actors.items!OeilDeVerite0001.OeilVeritProt001", + "name": "Armure (structure)", + "type": "protection", + "img": "systems/fvtt-mournblade/assets/icons/protection.webp", + "system": { + "description": "

    Corps de fer et de zinc. Protection intégrée de l'Automaton.

    ", + "typeprotection": "armure", + "protection": 2, + "degats": "", + "rarete": 0, + "prix": 0, + "equipped": true, + "enchantementLoi": { "actif": false, "bonus": 0, "antiChaos": false } + } + }, + { + "_id": "OeilVeritAlrm001", + "_key": "!actors.items!OeilDeVerite0001.OeilVeritAlrm001", + "name": "Alarme (Perception)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Perception — Capacité 1 (Mineur, Médian, Majeur)

    L'Automaton ne parle pas. Sa réponse, du type oui ou non, est donnée sous la forme d'un changement de couleur, d'un son particulier ou d'une lumière.

    " + } + } + ], + "effects": [], + "folder": null, + "sort": 200002, + "flags": {}, + "ownership": { "default": 0 }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Loi", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "Verre (unique)", + "description": "

    Œil de Vérité

    Automaton mineur de Perception

    Petit Automaton de fer et de zinc au corps humanoïde dont la tête est un unique œil en verre aux paupières de fer. De chaque côté de cet œil sortent deux petits pavillons qui lui servent d'oreilles.

    L'Œil de Vérité ne supporte pas le mensonge. Lorsque quelqu'un ment à côté de lui, son œil émet une vive lueur blanche de protestation. Plus le mensonge est important (aux yeux de celui qui parle), plus l'éclat est intense et long.

    Capacités spéciales actives

    • Capacité 1 — Alarme
    • Capacité 2 — Réponse (niveau supérieur)
    • Capacité 3 — Dissertation (niveau supérieur)

    Stat Block (référence)

    CO : 2 | Protection : 2 | Défense : 7 | Vitesse : 4 | Initiative : 1d10+4 | Santé : 13 | Âme : 17

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Automaton mineur de Perception. 1 Capacité spéciale.

    ", + "gmnotes": "

    Point Faible : l'œil de verre.

    ", + "creatureType": "automaton", + "automatonType": "perception", + "automatonPuissance": "mineur", + "automatonVoyageType": "", + "elementType": "", + "demonType": "", + "demonPuissance": "" + }, + "subactors": [], + "attributs": { + "adr": { "label": "Adresse", "labelnorm": "adresse", "abbrev": "adr", "value": 3 }, + "pui": { "label": "Puissance", "labelnorm": "puissance", "abbrev": "pui", "value": 2 }, + "cla": { "label": "Clairvoyance", "labelnorm": "clairvoyance", "abbrev": "cla", "value": 4 }, + "pre": { "label": "Présence", "labelnorm": "presence", "abbrev": "pre", "value": 1 }, + "tre": { "label": "Trempe", "labelnorm": "trempe", "abbrev": "tre", "value": 2 } + }, + "bonneaventure": { "base": 0, "actuelle": 0 }, + "experience": { "value": 0 }, + "eclat": { "value": 0 }, + "sante": { + "base": 13, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 17, + "currentmax": 17, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 1, + "vitessebonus": 0, + "bonusdegats": 0, + "defensebonus": 0, + "monte": false + }, + "balance": { + "loi": 10, + "chaos": 0, + "aspect": 10, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { "value": 0 } + } +} diff --git a/packs/src/automatons/automaton-perception-majeur.json b/packs/src/automatons/automaton-perception-majeur.json new file mode 100644 index 0000000..f2783cb --- /dev/null +++ b/packs/src/automatons/automaton-perception-majeur.json @@ -0,0 +1,245 @@ +{ + "_id": "AutomPerceptMaj01", + "_key": "!actors!AutomPerceptMaj01", + "name": "Automaton de Perception (Majeur)", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "AutomPerce2DCA00", + "_key": "!actors.items!AutomPerceptMaj01.AutomPerce2DCA00", + "name": "Perception", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 10, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomPerceA5BD00", + "_key": "!actors.items!AutomPerceptMaj01.AutomPerceA5BD00", + "name": "Commerce", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 8, + "attribut1": "pre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomPerceAF0100", + "_key": "!actors.items!AutomPerceptMaj01.AutomPerceAF0100", + "name": "Savoir : Langues", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 8, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomPerce8FC600", + "_key": "!actors.items!AutomPerceptMaj01.AutomPerce8FC600", + "name": "Savoir : Arcanes", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomPerceB9F000", + "_key": "!actors.items!AutomPerceptMaj01.AutomPerceB9F000", + "name": "Soins", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "tre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomPerceA54300", + "_key": "!actors.items!AutomPerceptMaj01.AutomPerceA54300", + "name": "Persuasion", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 4, + "attribut1": "pre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "CapAutoPerAlmPer", + "_key": "!actors.items!AutomPerceptMaj01.CapAutoPerAlmPer", + "name": "Alarme (Perception)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Perception — Capacité 1 (Mineur, Médian, Majeur)

    L'Automaton ne parle pas. Sa réponse, du type oui ou non, est donnée sous la forme d'un changement de couleur, d'un son particulier ou d'une lumière.

    " + } + }, + { + "_id": "CapAutoPerRemPer", + "_key": "!actors.items!AutomPerceptMaj01.CapAutoPerRemPer", + "name": "Réponse (Perception)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Perception — Capacité 2 (Médian, Majeur)

    L'Automaton répond à une question qui lui est posée de manière simple et concise. S'il s'agit de traduire un texte ou une parole, il le fait de manière scrupuleuse et sans poésie mais ne peut se lancer dans une conversation ou apporter des précisions.

    " + } + }, + { + "_id": "CapAutoPerDimPer", + "_key": "!actors.items!AutomPerceptMaj01.CapAutoPerDimPer", + "name": "Dissertation (Perception)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Perception — Capacité 3 (Majeur)

    L'Automaton est capable de dialoguer avec le sorcier. Il apporte toutes les précisions possibles sur le sujet sur lequel il est interrogé. Seules les réponses relatives au futur sont données de manière imprécise et plongent souvent l'Automaton dans l'embarras.

    " + } + } + ], + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Loi", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

    Automaton de Perception (Majeur)

    Un Automaton majeur bénéficie de 3 Capacités spéciales sur les 3 propres aux Automata de Perception.

    Capacités spéciales actives

    • Capacité 1 — Alarme
    • Capacité 2 — Réponse
    • Capacité 3 — Dissertation

    Règle

    Un Automaton mineur bénéficie de la 1re Capacité spéciale, un Automaton médian des deux premières, un Automaton majeur de toutes les Capacités spéciales.

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Modèle de base — à personnaliser. 3 Capacité(s) spéciale(s).

    ", + "gmnotes": "

    Type : Perception | Puissance : Majeur

    ", + "creatureType": "automaton", + "automatonType": "perception", + "automatonPuissance": "majeur", + "automatonVoyageType": "", + "elementType": "", + "demonType": "", + "demonPuissance": "" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 6 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 6 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 10 + }, + "pre": { + "label": "Présence", + "labelnorm": "presence", + "abbrev": "pre", + "value": 9 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 8 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 24, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 0, + "bonusdegats": 0, + "defensebonus": 0, + "monte": false + }, + "balance": { + "loi": 10, + "chaos": 0, + "aspect": 0, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/automatons/automaton-perception-median.json b/packs/src/automatons/automaton-perception-median.json new file mode 100644 index 0000000..6706864 --- /dev/null +++ b/packs/src/automatons/automaton-perception-median.json @@ -0,0 +1,202 @@ +{ + "_id": "AutomPerceptMed01", + "_key": "!actors!AutomPerceptMed01", + "name": "Automaton de Perception (Median)", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "AutomPerce97FB00", + "_key": "!actors.items!AutomPerceptMed01.AutomPerce97FB00", + "name": "Perception", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 8, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomPerce5FA800", + "_key": "!actors.items!AutomPerceptMed01.AutomPerce5FA800", + "name": "Commerce", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "pre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomPerceB37000", + "_key": "!actors.items!AutomPerceptMed01.AutomPerceB37000", + "name": "Savoir : Langues", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomPerce8E8800", + "_key": "!actors.items!AutomPerceptMed01.AutomPerce8E8800", + "name": "Savoir : Arcanes", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 4, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "CapAutoPerAlmPer", + "_key": "!actors.items!AutomPerceptMed01.CapAutoPerAlmPer", + "name": "Alarme (Perception)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Perception — Capacité 1 (Mineur, Médian, Majeur)

    L'Automaton ne parle pas. Sa réponse, du type oui ou non, est donnée sous la forme d'un changement de couleur, d'un son particulier ou d'une lumière.

    " + } + }, + { + "_id": "CapAutoPerRemPer", + "_key": "!actors.items!AutomPerceptMed01.CapAutoPerRemPer", + "name": "Réponse (Perception)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Perception — Capacité 2 (Médian, Majeur)

    L'Automaton répond à une question qui lui est posée de manière simple et concise. S'il s'agit de traduire un texte ou une parole, il le fait de manière scrupuleuse et sans poésie mais ne peut se lancer dans une conversation ou apporter des précisions.

    " + } + } + ], + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Loi", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

    Automaton de Perception (Médian)

    Un Automaton médian bénéficie de 2 Capacités spéciales sur les 3 propres aux Automata de Perception.

    Capacités spéciales actives

    • Capacité 1 — Alarme
    • Capacité 2 — Réponse
    • Capacité 3 — Dissertation (niveau supérieur)

    Règle

    Un Automaton mineur bénéficie de la 1re Capacité spéciale, un Automaton médian des deux premières, un Automaton majeur de toutes les Capacités spéciales.

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Modèle de base — à personnaliser. 2 Capacité(s) spéciale(s).

    ", + "gmnotes": "

    Type : Perception | Puissance : Median

    ", + "creatureType": "automaton", + "automatonType": "perception", + "automatonPuissance": "median", + "automatonVoyageType": "", + "elementType": "", + "demonType": "", + "demonPuissance": "" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 5 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 4 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 7 + }, + "pre": { + "label": "Présence", + "labelnorm": "presence", + "abbrev": "pre", + "value": 6 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 5 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 16, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 0, + "bonusdegats": 0, + "defensebonus": 0, + "monte": false + }, + "balance": { + "loi": 10, + "chaos": 0, + "aspect": 0, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/automatons/automaton-perception-mineur.json b/packs/src/automatons/automaton-perception-mineur.json new file mode 100644 index 0000000..816c298 --- /dev/null +++ b/packs/src/automatons/automaton-perception-mineur.json @@ -0,0 +1,159 @@ +{ + "_id": "AutomPerceptMin01", + "_key": "!actors!AutomPerceptMin01", + "name": "Automaton de Perception (Mineur)", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "AutomPerce6D2000", + "_key": "!actors.items!AutomPerceptMin01.AutomPerce6D2000", + "name": "Perception", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 5, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomPerce11D000", + "_key": "!actors.items!AutomPerceptMin01.AutomPerce11D000", + "name": "Commerce", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 5, + "attribut1": "pre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "CapAutoPerAlmPer", + "_key": "!actors.items!AutomPerceptMin01.CapAutoPerAlmPer", + "name": "Alarme (Perception)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Perception — Capacité 1 (Mineur, Médian, Majeur)

    L'Automaton ne parle pas. Sa réponse, du type oui ou non, est donnée sous la forme d'un changement de couleur, d'un son particulier ou d'une lumière.

    " + } + } + ], + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Loi", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

    Automaton de Perception (Mineur)

    Un Automaton mineur bénéficie de 1 Capacité spéciale sur les 3 propres aux Automata de Perception.

    Capacités spéciales actives

    • Capacité 1 — Alarme
    • Capacité 2 — Réponse (niveau supérieur)
    • Capacité 3 — Dissertation (niveau supérieur)

    Règle

    Un Automaton mineur bénéficie de la 1re Capacité spéciale, un Automaton médian des deux premières, un Automaton majeur de toutes les Capacités spéciales.

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Modèle de base — à personnaliser. 1 Capacité(s) spéciale(s).

    ", + "gmnotes": "

    Type : Perception | Puissance : Mineur

    ", + "creatureType": "automaton", + "automatonType": "perception", + "automatonPuissance": "mineur", + "automatonVoyageType": "", + "elementType": "", + "demonType": "", + "demonPuissance": "" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 3 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 2 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 5 + }, + "pre": { + "label": "Présence", + "labelnorm": "presence", + "abbrev": "pre", + "value": 4 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 3 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 8, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 0, + "bonusdegats": 0, + "defensebonus": 0, + "monte": false + }, + "balance": { + "loi": 10, + "chaos": 0, + "aspect": 0, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/automatons/automaton-reparateur-majeur.json b/packs/src/automatons/automaton-reparateur-majeur.json new file mode 100644 index 0000000..60e7b18 --- /dev/null +++ b/packs/src/automatons/automaton-reparateur-majeur.json @@ -0,0 +1,181 @@ +{ + "_id": "AutomRepairMaj001", + "_key": "!actors!AutomRepairMaj001", + "name": "Automaton Réparateur (Majeur)", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "AutomRepair7D43", + "_key": "!actors.items!AutomRepairMaj001.AutomRepair7D43", + "name": "Réparation", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 5, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomRepairB2CE", + "_key": "!actors.items!AutomRepairMaj001.AutomRepairB2CE", + "name": "Perception", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 5, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "CapAutoRepPemRep", + "_key": "!actors.items!AutomRepairMaj001.CapAutoRepPemRep", + "name": "Petite réparation (Réparateur)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton Réparateur — Capacité 1 (Mineur, Médian, Majeur)

    L'Automaton répare les dégâts mineurs de deux objets par jour. Ces objets doivent être peu endommagés (à l'appréciation du MJ).

    " + } + }, + { + "_id": "CapAutoRepRpmRep", + "_key": "!actors.items!AutomRepairMaj001.CapAutoRepRpmRep", + "name": "Réparation (Réparateur)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton Réparateur — Capacité 2 (Médian, Majeur)

    L'Automaton est capable de réparer jusqu'à 12 points de dégâts causés à quatre objets, y compris d'autres Automata, chaque jour. Il peut réparer les dégâts sérieux causés aux objets (à l'appréciation du MJ).

    " + } + }, + { + "_id": "CapAutoRepRnmRep", + "_key": "!actors.items!AutomRepairMaj001.CapAutoRepRnmRep", + "name": "Rénovation (Réparateur)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton Réparateur — Capacité 3 (Majeur)

    L'Automaton peut reconstruire un objet entièrement détruit, même un Réceptacle (il faut cependant invoquer à nouveau un Esprit pour refaire fonctionner l'Automaton abîmé). Il est également capable de restaurer un bâtiment.

    " + } + } + ], + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Loi", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

    Automaton de Réparateur (Majeur)

    Un Automaton majeur bénéficie de 3 Capacités spéciales sur les 3 propres aux Automata de Réparateur.

    Capacités spéciales actives

    • Capacité 1 — Petite réparation
    • Capacité 2 — Réparation
    • Capacité 3 — Rénovation

    Règle

    Un Automaton mineur bénéficie de la 1re Capacité spéciale, un Automaton médian des deux premières, un Automaton majeur de toutes les Capacités spéciales.

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Modèle de base — 3 capacité(s).

    ", + "gmnotes": "

    Type : Réparateur | Puissance : Majeur

    ", + "creatureType": "automaton", + "automatonType": "reparateur", + "automatonPuissance": "majeur", + "automatonVoyageType": "", + "elementType": "", + "demonType": "", + "demonPuissance": "" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 3 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 5 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 4 + }, + "pre": { + "label": "Présence", + "labelnorm": "presence", + "abbrev": "pre", + "value": 2 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 4 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 10, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 0, + "bonusdegats": 0, + "defensebonus": 0, + "monte": false + }, + "balance": { + "loi": 10, + "chaos": 0, + "aspect": 0, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/automatons/automaton-reparateur-median.json b/packs/src/automatons/automaton-reparateur-median.json new file mode 100644 index 0000000..204db34 --- /dev/null +++ b/packs/src/automatons/automaton-reparateur-median.json @@ -0,0 +1,170 @@ +{ + "_id": "AutomRepairMed001", + "_key": "!actors!AutomRepairMed001", + "name": "Automaton Réparateur (Median)", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "AutomRepair7D43", + "_key": "!actors.items!AutomRepairMed001.AutomRepair7D43", + "name": "Réparation", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 5, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomRepairB2CE", + "_key": "!actors.items!AutomRepairMed001.AutomRepairB2CE", + "name": "Perception", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 5, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "CapAutoRepPemRep", + "_key": "!actors.items!AutomRepairMed001.CapAutoRepPemRep", + "name": "Petite réparation (Réparateur)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton Réparateur — Capacité 1 (Mineur, Médian, Majeur)

    L'Automaton répare les dégâts mineurs de deux objets par jour. Ces objets doivent être peu endommagés (à l'appréciation du MJ).

    " + } + }, + { + "_id": "CapAutoRepRpmRep", + "_key": "!actors.items!AutomRepairMed001.CapAutoRepRpmRep", + "name": "Réparation (Réparateur)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton Réparateur — Capacité 2 (Médian, Majeur)

    L'Automaton est capable de réparer jusqu'à 12 points de dégâts causés à quatre objets, y compris d'autres Automata, chaque jour. Il peut réparer les dégâts sérieux causés aux objets (à l'appréciation du MJ).

    " + } + } + ], + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Loi", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

    Automaton de Réparateur (Médian)

    Un Automaton médian bénéficie de 2 Capacités spéciales sur les 3 propres aux Automata de Réparateur.

    Capacités spéciales actives

    • Capacité 1 — Petite réparation
    • Capacité 2 — Réparation
    • Capacité 3 — Rénovation (niveau supérieur)

    Règle

    Un Automaton mineur bénéficie de la 1re Capacité spéciale, un Automaton médian des deux premières, un Automaton majeur de toutes les Capacités spéciales.

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Modèle de base — 2 capacité(s).

    ", + "gmnotes": "

    Type : Réparateur | Puissance : Median

    ", + "creatureType": "automaton", + "automatonType": "reparateur", + "automatonPuissance": "median", + "automatonVoyageType": "", + "elementType": "", + "demonType": "", + "demonPuissance": "" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 3 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 5 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 4 + }, + "pre": { + "label": "Présence", + "labelnorm": "presence", + "abbrev": "pre", + "value": 2 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 4 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 10, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 0, + "bonusdegats": 0, + "defensebonus": 0, + "monte": false + }, + "balance": { + "loi": 10, + "chaos": 0, + "aspect": 0, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/automatons/automaton-reparateur-mineur.json b/packs/src/automatons/automaton-reparateur-mineur.json new file mode 100644 index 0000000..9fed12f --- /dev/null +++ b/packs/src/automatons/automaton-reparateur-mineur.json @@ -0,0 +1,159 @@ +{ + "_id": "AutomRepairMin001", + "_key": "!actors!AutomRepairMin001", + "name": "Automaton Réparateur (Mineur)", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "AutomRepair7D43", + "_key": "!actors.items!AutomRepairMin001.AutomRepair7D43", + "name": "Réparation", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 5, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomRepairB2CE", + "_key": "!actors.items!AutomRepairMin001.AutomRepairB2CE", + "name": "Perception", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 5, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "CapAutoRepPemRep", + "_key": "!actors.items!AutomRepairMin001.CapAutoRepPemRep", + "name": "Petite réparation (Réparateur)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton Réparateur — Capacité 1 (Mineur, Médian, Majeur)

    L'Automaton répare les dégâts mineurs de deux objets par jour. Ces objets doivent être peu endommagés (à l'appréciation du MJ).

    " + } + } + ], + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Loi", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

    Automaton de Réparateur (Mineur)

    Un Automaton mineur bénéficie de 1 Capacité spéciale sur les 3 propres aux Automata de Réparateur.

    Capacités spéciales actives

    • Capacité 1 — Petite réparation
    • Capacité 2 — Réparation (niveau supérieur)
    • Capacité 3 — Rénovation (niveau supérieur)

    Règle

    Un Automaton mineur bénéficie de la 1re Capacité spéciale, un Automaton médian des deux premières, un Automaton majeur de toutes les Capacités spéciales.

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Modèle de base — 1 capacité(s).

    ", + "gmnotes": "

    Type : Réparateur | Puissance : Mineur

    ", + "creatureType": "automaton", + "automatonType": "reparateur", + "automatonPuissance": "mineur", + "automatonVoyageType": "", + "elementType": "", + "demonType": "", + "demonPuissance": "" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 3 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 5 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 4 + }, + "pre": { + "label": "Présence", + "labelnorm": "presence", + "abbrev": "pre", + "value": 2 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 4 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 10, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 0, + "bonusdegats": 0, + "defensebonus": 0, + "monte": false + }, + "balance": { + "loi": 10, + "chaos": 0, + "aspect": 0, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/automatons/automaton-restauration-majeur.json b/packs/src/automatons/automaton-restauration-majeur.json new file mode 100644 index 0000000..12d21b9 --- /dev/null +++ b/packs/src/automatons/automaton-restauration-majeur.json @@ -0,0 +1,245 @@ +{ + "_id": "AutomRestaMaj0001", + "_key": "!actors!AutomRestaMaj0001", + "name": "Automaton de Restauration (Majeur)", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "AutomResta512F00", + "_key": "!actors.items!AutomRestaMaj0001.AutomResta512F00", + "name": "Soins", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 10, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomResta19B200", + "_key": "!actors.items!AutomRestaMaj0001.AutomResta19B200", + "name": "Perception", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 8, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomRestaD10400", + "_key": "!actors.items!AutomRestaMaj0001.AutomRestaD10400", + "name": "Persuasion", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 8, + "attribut1": "pre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomResta387B00", + "_key": "!actors.items!AutomRestaMaj0001.AutomResta387B00", + "name": "Survie", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "tre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomResta4F8400", + "_key": "!actors.items!AutomRestaMaj0001.AutomResta4F8400", + "name": "Savoir : Médecine", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomResta4D4100", + "_key": "!actors.items!AutomRestaMaj0001.AutomResta4D4100", + "name": "Savoir : Artisanat", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 4, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "CapAutoResSLmRes", + "_key": "!actors.items!AutomRestaMaj0001.CapAutoResSLmRes", + "name": "Soin des blessures légères (Restauration)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Restauration — Capacité 1 (Mineur, Médian, Majeur)

    L'Automaton soigne les maladies jusqu'à une Virulence de 15 et peut restaurer un total de 6 points de dégâts létaux par jour pour un ou deux êtres vivants.

    " + } + }, + { + "_id": "CapAutoResGrmRes", + "_key": "!actors.items!AutomRestaMaj0001.CapAutoResGrmRes", + "name": "Soin des blessures graves (Restauration)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Restauration — Capacité 2 (Médian, Majeur)

    L'Automaton soigne tous les types de maladies non magiques. Il est capable d'exercer la chirurgie et peut restaurer un total de 12 points de dégâts létaux pour quatre êtres vivants par jour.

    " + } + }, + { + "_id": "CapAutoResMomRes", + "_key": "!actors.items!AutomRestaMaj0001.CapAutoResMomRes", + "name": "Soin des blessures mortelles (Restauration)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Restauration — Capacité 3 (Majeur)

    L'Automaton est capable de véritables prouesses chirurgicales et peut poser une prothèse rudimentaire (une fois par invocation) permettant au blessé de retrouver l'usage partiel d'un bras, d'une main ou d'une jambe.

    L'Automaton restaure 24 points de dégâts létaux par jour pour un maximum de quatre êtres vivants.

    Restriction : L'Automaton ne peut soigner un être dont le score en Chaos est strictement supérieur au score de Loi.

    " + } + } + ], + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Loi", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

    Automaton de Restauration (Majeur)

    Un Automaton majeur bénéficie de 3 Capacités spéciales sur les 3 propres aux Automata de Restauration.

    Capacités spéciales actives

    • Capacité 1 — Soin des blessures légères
    • Capacité 2 — Soin des blessures graves
    • Capacité 3 — Soin des blessures mortelles

    Règle

    Un Automaton mineur bénéficie de la 1re Capacité spéciale, un Automaton médian des deux premières, un Automaton majeur de toutes les Capacités spéciales.

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Modèle de base — à personnaliser. 3 Capacité(s) spéciale(s).

    ", + "gmnotes": "

    Type : Restauration | Puissance : Majeur

    ", + "creatureType": "automaton", + "automatonType": "restauration", + "automatonPuissance": "majeur", + "automatonVoyageType": "", + "elementType": "", + "demonType": "", + "demonPuissance": "" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 6 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 6 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 9 + }, + "pre": { + "label": "Présence", + "labelnorm": "presence", + "abbrev": "pre", + "value": 8 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 10 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 24, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 0, + "bonusdegats": 0, + "defensebonus": 0, + "monte": false + }, + "balance": { + "loi": 10, + "chaos": 0, + "aspect": 0, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/automatons/automaton-restauration-median.json b/packs/src/automatons/automaton-restauration-median.json new file mode 100644 index 0000000..9e5e2f7 --- /dev/null +++ b/packs/src/automatons/automaton-restauration-median.json @@ -0,0 +1,202 @@ +{ + "_id": "AutomRestaMed0001", + "_key": "!actors!AutomRestaMed0001", + "name": "Automaton de Restauration (Median)", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "AutomRestaB0FC00", + "_key": "!actors.items!AutomRestaMed0001.AutomRestaB0FC00", + "name": "Soins", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 8, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomResta718D00", + "_key": "!actors.items!AutomRestaMed0001.AutomResta718D00", + "name": "Perception", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomResta4C2700", + "_key": "!actors.items!AutomRestaMed0001.AutomResta4C2700", + "name": "Persuasion", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "pre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomRestaFC9000", + "_key": "!actors.items!AutomRestaMed0001.AutomRestaFC9000", + "name": "Survie", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 4, + "attribut1": "tre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "CapAutoResSLmRes", + "_key": "!actors.items!AutomRestaMed0001.CapAutoResSLmRes", + "name": "Soin des blessures légères (Restauration)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Restauration — Capacité 1 (Mineur, Médian, Majeur)

    L'Automaton soigne les maladies jusqu'à une Virulence de 15 et peut restaurer un total de 6 points de dégâts létaux par jour pour un ou deux êtres vivants.

    " + } + }, + { + "_id": "CapAutoResGrmRes", + "_key": "!actors.items!AutomRestaMed0001.CapAutoResGrmRes", + "name": "Soin des blessures graves (Restauration)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Restauration — Capacité 2 (Médian, Majeur)

    L'Automaton soigne tous les types de maladies non magiques. Il est capable d'exercer la chirurgie et peut restaurer un total de 12 points de dégâts létaux pour quatre êtres vivants par jour.

    " + } + } + ], + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Loi", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

    Automaton de Restauration (Médian)

    Un Automaton médian bénéficie de 2 Capacités spéciales sur les 3 propres aux Automata de Restauration.

    Capacités spéciales actives

    • Capacité 1 — Soin des blessures légères
    • Capacité 2 — Soin des blessures graves
    • Capacité 3 — Soin des blessures mortelles (niveau supérieur)

    Règle

    Un Automaton mineur bénéficie de la 1re Capacité spéciale, un Automaton médian des deux premières, un Automaton majeur de toutes les Capacités spéciales.

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Modèle de base — à personnaliser. 2 Capacité(s) spéciale(s).

    ", + "gmnotes": "

    Type : Restauration | Puissance : Median

    ", + "creatureType": "automaton", + "automatonType": "restauration", + "automatonPuissance": "median", + "automatonVoyageType": "", + "elementType": "", + "demonType": "", + "demonPuissance": "" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 5 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 4 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 6 + }, + "pre": { + "label": "Présence", + "labelnorm": "presence", + "abbrev": "pre", + "value": 5 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 7 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 16, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 0, + "bonusdegats": 0, + "defensebonus": 0, + "monte": false + }, + "balance": { + "loi": 10, + "chaos": 0, + "aspect": 0, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/automatons/automaton-restauration-mineur.json b/packs/src/automatons/automaton-restauration-mineur.json new file mode 100644 index 0000000..e58094b --- /dev/null +++ b/packs/src/automatons/automaton-restauration-mineur.json @@ -0,0 +1,159 @@ +{ + "_id": "AutomRestaMin0001", + "_key": "!actors!AutomRestaMin0001", + "name": "Automaton de Restauration (Mineur)", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "AutomResta7D4300", + "_key": "!actors.items!AutomRestaMin0001.AutomResta7D4300", + "name": "Soins", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 5, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomRestaB2CE00", + "_key": "!actors.items!AutomRestaMin0001.AutomRestaB2CE00", + "name": "Perception", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 5, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "CapAutoResSLmRes", + "_key": "!actors.items!AutomRestaMin0001.CapAutoResSLmRes", + "name": "Soin des blessures légères (Restauration)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Restauration — Capacité 1 (Mineur, Médian, Majeur)

    L'Automaton soigne les maladies jusqu'à une Virulence de 15 et peut restaurer un total de 6 points de dégâts létaux par jour pour un ou deux êtres vivants.

    " + } + } + ], + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Loi", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

    Automaton de Restauration (Mineur)

    Un Automaton mineur bénéficie de 1 Capacité spéciale sur les 3 propres aux Automata de Restauration.

    Capacités spéciales actives

    • Capacité 1 — Soin des blessures légères
    • Capacité 2 — Soin des blessures graves (niveau supérieur)
    • Capacité 3 — Soin des blessures mortelles (niveau supérieur)

    Règle

    Un Automaton mineur bénéficie de la 1re Capacité spéciale, un Automaton médian des deux premières, un Automaton majeur de toutes les Capacités spéciales.

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Modèle de base — à personnaliser. 1 Capacité(s) spéciale(s).

    ", + "gmnotes": "

    Type : Restauration | Puissance : Mineur

    ", + "creatureType": "automaton", + "automatonType": "restauration", + "automatonPuissance": "mineur", + "automatonVoyageType": "", + "elementType": "", + "demonType": "", + "demonPuissance": "" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 3 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 2 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 4 + }, + "pre": { + "label": "Présence", + "labelnorm": "presence", + "abbrev": "pre", + "value": 3 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 5 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 8, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 0, + "bonusdegats": 0, + "defensebonus": 0, + "monte": false + }, + "balance": { + "loi": 10, + "chaos": 0, + "aspect": 0, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/automatons/automaton-voyage-majeur.json b/packs/src/automatons/automaton-voyage-majeur.json new file mode 100644 index 0000000..fcdcadd --- /dev/null +++ b/packs/src/automatons/automaton-voyage-majeur.json @@ -0,0 +1,245 @@ +{ + "_id": "AutomVoyageMaj001", + "_key": "!actors!AutomVoyageMaj001", + "name": "Automaton de Voyage (Majeur)", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "AutomVoyag1EF800", + "_key": "!actors.items!AutomVoyageMaj001.AutomVoyag1EF800", + "name": "Mouvements", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 10, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomVoyag464400", + "_key": "!actors.items!AutomVoyageMaj001.AutomVoyag464400", + "name": "Survie", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 8, + "attribut1": "tre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomVoyag297400", + "_key": "!actors.items!AutomVoyageMaj001.AutomVoyag297400", + "name": "Perception", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 8, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomVoyag374900", + "_key": "!actors.items!AutomVoyageMaj001.AutomVoyag374900", + "name": "Navigation", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomVoyag521C00", + "_key": "!actors.items!AutomVoyageMaj001.AutomVoyag521C00", + "name": "Nage", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "pui", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomVoyagA2AD00", + "_key": "!actors.items!AutomVoyageMaj001.AutomVoyagA2AD00", + "name": "Discrétion", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 4, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "CapAutoVoyVimVoy", + "_key": "!actors.items!AutomVoyageMaj001.CapAutoVoyVimVoy", + "name": "Vitesse (Voyage)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Voyage — Capacité 1 (Mineur, Médian, Majeur)

    La vitesse de l'Automaton triple lorsqu'il doit fuir un danger. Cette fuite accélérée dure 5 tours, après quoi l'Automaton reprend sa vitesse normale.

    " + } + }, + { + "_id": "CapAutoVoyAimVoy", + "_key": "!actors.items!AutomVoyageMaj001.CapAutoVoyAimVoy", + "name": "Air pur (Voyage)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Voyage — Capacité 2 (Médian, Majeur)

    L'Automaton fournit à son (ses) passager(s) de l'air pur pour respirer sous l'eau ou dans le vide interdimensionnel. Cet effet dure tout le long du voyage, tant que l'Esprit est présent dans le Réceptacle.

    " + } + }, + { + "_id": "CapAutoVoyInmVoy", + "_key": "!actors.items!AutomVoyageMaj001.CapAutoVoyInmVoy", + "name": "Invulnérabilité (Voyage)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Voyage — Capacité 3 (Majeur)

    L'Automaton est invulnérable aux armes humaines. Il reste cependant vulnérable aux attaques du Chaos et aux attaques élémentaires.

    " + } + } + ], + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Loi", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

    Automaton de Voyage (Majeur)

    Un Automaton majeur bénéficie de 3 Capacités spéciales sur les 3 propres aux Automata de Voyage.

    Capacités spéciales actives

    • Capacité 1 — Vitesse
    • Capacité 2 — Air pur
    • Capacité 3 — Invulnérabilité

    Règle

    Un Automaton mineur bénéficie de la 1re Capacité spéciale, un Automaton médian des deux premières, un Automaton majeur de toutes les Capacités spéciales.

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Modèle de base — à personnaliser. 3 Capacité(s) spéciale(s).

    ", + "gmnotes": "

    Type : Voyage | Puissance : Majeur

    ", + "creatureType": "automaton", + "automatonType": "voyage", + "automatonPuissance": "majeur", + "automatonVoyageType": "", + "elementType": "", + "demonType": "", + "demonPuissance": "" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 10 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 9 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 6 + }, + "pre": { + "label": "Présence", + "labelnorm": "presence", + "abbrev": "pre", + "value": 6 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 8 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 36, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 0, + "bonusdegats": 0, + "defensebonus": 0, + "monte": false + }, + "balance": { + "loi": 10, + "chaos": 0, + "aspect": 0, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/automatons/automaton-voyage-median.json b/packs/src/automatons/automaton-voyage-median.json new file mode 100644 index 0000000..5847fef --- /dev/null +++ b/packs/src/automatons/automaton-voyage-median.json @@ -0,0 +1,202 @@ +{ + "_id": "AutomVoyageMed001", + "_key": "!actors!AutomVoyageMed001", + "name": "Automaton de Voyage (Median)", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "AutomVoyagB66300", + "_key": "!actors.items!AutomVoyageMed001.AutomVoyagB66300", + "name": "Mouvements", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 8, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomVoyag4A0A00", + "_key": "!actors.items!AutomVoyageMed001.AutomVoyag4A0A00", + "name": "Survie", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "tre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomVoyag40A100", + "_key": "!actors.items!AutomVoyageMed001.AutomVoyag40A100", + "name": "Perception", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomVoyag3BFB00", + "_key": "!actors.items!AutomVoyageMed001.AutomVoyag3BFB00", + "name": "Navigation", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 4, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "CapAutoVoyVimVoy", + "_key": "!actors.items!AutomVoyageMed001.CapAutoVoyVimVoy", + "name": "Vitesse (Voyage)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Voyage — Capacité 1 (Mineur, Médian, Majeur)

    La vitesse de l'Automaton triple lorsqu'il doit fuir un danger. Cette fuite accélérée dure 5 tours, après quoi l'Automaton reprend sa vitesse normale.

    " + } + }, + { + "_id": "CapAutoVoyAimVoy", + "_key": "!actors.items!AutomVoyageMed001.CapAutoVoyAimVoy", + "name": "Air pur (Voyage)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Voyage — Capacité 2 (Médian, Majeur)

    L'Automaton fournit à son (ses) passager(s) de l'air pur pour respirer sous l'eau ou dans le vide interdimensionnel. Cet effet dure tout le long du voyage, tant que l'Esprit est présent dans le Réceptacle.

    " + } + } + ], + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Loi", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

    Automaton de Voyage (Médian)

    Un Automaton médian bénéficie de 2 Capacités spéciales sur les 3 propres aux Automata de Voyage.

    Capacités spéciales actives

    • Capacité 1 — Vitesse
    • Capacité 2 — Air pur
    • Capacité 3 — Invulnérabilité (niveau supérieur)

    Règle

    Un Automaton mineur bénéficie de la 1re Capacité spéciale, un Automaton médian des deux premières, un Automaton majeur de toutes les Capacités spéciales.

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Modèle de base — à personnaliser. 2 Capacité(s) spéciale(s).

    ", + "gmnotes": "

    Type : Voyage | Puissance : Median

    ", + "creatureType": "automaton", + "automatonType": "voyage", + "automatonPuissance": "median", + "automatonVoyageType": "", + "elementType": "", + "demonType": "", + "demonPuissance": "" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 7 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 6 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 5 + }, + "pre": { + "label": "Présence", + "labelnorm": "presence", + "abbrev": "pre", + "value": 4 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 5 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 24, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 0, + "bonusdegats": 0, + "defensebonus": 0, + "monte": false + }, + "balance": { + "loi": 10, + "chaos": 0, + "aspect": 0, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/automatons/automaton-voyage-mineur.json b/packs/src/automatons/automaton-voyage-mineur.json new file mode 100644 index 0000000..ab51463 --- /dev/null +++ b/packs/src/automatons/automaton-voyage-mineur.json @@ -0,0 +1,159 @@ +{ + "_id": "AutomVoyageMin001", + "_key": "!actors!AutomVoyageMin001", + "name": "Automaton de Voyage (Mineur)", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "AutomVoyagB88900", + "_key": "!actors.items!AutomVoyageMin001.AutomVoyagB88900", + "name": "Mouvements", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 5, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomVoyag63A700", + "_key": "!actors.items!AutomVoyageMin001.AutomVoyag63A700", + "name": "Survie", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 5, + "attribut1": "tre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "CapAutoVoyVimVoy", + "_key": "!actors.items!AutomVoyageMin001.CapAutoVoyVimVoy", + "name": "Vitesse (Voyage)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Voyage — Capacité 1 (Mineur, Médian, Majeur)

    La vitesse de l'Automaton triple lorsqu'il doit fuir un danger. Cette fuite accélérée dure 5 tours, après quoi l'Automaton reprend sa vitesse normale.

    " + } + } + ], + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Loi", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

    Automaton de Voyage (Mineur)

    Un Automaton mineur bénéficie de 1 Capacité spéciale sur les 3 propres aux Automata de Voyage.

    Capacités spéciales actives

    • Capacité 1 — Vitesse
    • Capacité 2 — Air pur (niveau supérieur)
    • Capacité 3 — Invulnérabilité (niveau supérieur)

    Règle

    Un Automaton mineur bénéficie de la 1re Capacité spéciale, un Automaton médian des deux premières, un Automaton majeur de toutes les Capacités spéciales.

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Modèle de base — à personnaliser. 1 Capacité(s) spéciale(s).

    ", + "gmnotes": "

    Type : Voyage | Puissance : Mineur

    ", + "creatureType": "automaton", + "automatonType": "voyage", + "automatonPuissance": "mineur", + "automatonVoyageType": "", + "elementType": "", + "demonType": "", + "demonPuissance": "" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 5 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 4 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 3 + }, + "pre": { + "label": "Présence", + "labelnorm": "presence", + "abbrev": "pre", + "value": 2 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 3 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 16, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 0, + "bonusdegats": 0, + "defensebonus": 0, + "monte": false + }, + "balance": { + "loi": 10, + "chaos": 0, + "aspect": 0, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/capacites-automaton/combat-absorption.json b/packs/src/capacites-automaton/combat-absorption.json new file mode 100644 index 0000000..1ee9afb --- /dev/null +++ b/packs/src/capacites-automaton/combat-absorption.json @@ -0,0 +1,13 @@ +{ + "_id": "CapAutoComAbs001", + "_key": "!items!CapAutoComAbs001", + "name": "Absorption (Combat)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], "folder": null, "sort": 100000, "flags": {}, + "ownership": { "default": 0 }, + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Combat — Capacité 1 (Mineur, Médian, Majeur)

    L'Automaton draine la magie runique utilisée contre lui. Chaque point d'Âme drainé vient alimenter pour le tour suivant son attribut le plus fort.

    " + } +} diff --git a/packs/src/capacites-automaton/combat-aura.json b/packs/src/capacites-automaton/combat-aura.json new file mode 100644 index 0000000..e392cad --- /dev/null +++ b/packs/src/capacites-automaton/combat-aura.json @@ -0,0 +1,13 @@ +{ + "_id": "CapAutoComAur001", + "_key": "!items!CapAutoComAur001", + "name": "Aura (Combat)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], "folder": null, "sort": 300000, "flags": {}, + "ownership": { "default": 0 }, + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Combat — Capacité 3 (Majeur)

    L'Automaton génère une aura lumineuse de protection contre le Chaos : tout au long du combat, les créatures et les êtres marqués par le Chaos ne peuvent approcher à moins de 5 mètres de l'Automaton sous peine de subir 10 points de dégâts létaux.

    " + } +} diff --git a/packs/src/capacites-automaton/combat-benediction.json b/packs/src/capacites-automaton/combat-benediction.json new file mode 100644 index 0000000..74a87e8 --- /dev/null +++ b/packs/src/capacites-automaton/combat-benediction.json @@ -0,0 +1,13 @@ +{ + "_id": "CapAutoComBen001", + "_key": "!items!CapAutoComBen001", + "name": "Bénédiction (Combat)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], "folder": null, "sort": 200000, "flags": {}, + "ownership": { "default": 0 }, + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Combat — Capacité 2 (Médian, Majeur)

    L'Automaton bénit ses partenaires de combat. À chaque tour de combat, il augmente de 3 points la Capacité offensive et la Défense de ses alliés.

    " + } +} diff --git a/packs/src/capacites-automaton/perception-alarme.json b/packs/src/capacites-automaton/perception-alarme.json new file mode 100644 index 0000000..a1cf841 --- /dev/null +++ b/packs/src/capacites-automaton/perception-alarme.json @@ -0,0 +1,13 @@ +{ + "_id": "CapAutoPerAlr001", + "_key": "!items!CapAutoPerAlr001", + "name": "Alarme (Perception)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], "folder": null, "sort": 700000, "flags": {}, + "ownership": { "default": 0 }, + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Perception — Capacité 1 (Mineur, Médian, Majeur)

    L'Automaton ne parle pas. Sa réponse, du type oui ou non, est donnée sous la forme d'un changement de couleur, d'un son particulier ou d'une lumière.

    " + } +} diff --git a/packs/src/capacites-automaton/perception-dissertation.json b/packs/src/capacites-automaton/perception-dissertation.json new file mode 100644 index 0000000..0fcef44 --- /dev/null +++ b/packs/src/capacites-automaton/perception-dissertation.json @@ -0,0 +1,13 @@ +{ + "_id": "CapAutoPerDis001", + "_key": "!items!CapAutoPerDis001", + "name": "Dissertation (Perception)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], "folder": null, "sort": 900000, "flags": {}, + "ownership": { "default": 0 }, + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Perception — Capacité 3 (Majeur)

    L'Automaton est capable de dialoguer avec le sorcier. Il apporte toutes les précisions possibles sur le sujet sur lequel il est interrogé. Seules les réponses relatives au futur sont données de manière imprécise et plongent souvent l'Automaton dans l'embarras.

    " + } +} diff --git a/packs/src/capacites-automaton/perception-reponse.json b/packs/src/capacites-automaton/perception-reponse.json new file mode 100644 index 0000000..c7ae40a --- /dev/null +++ b/packs/src/capacites-automaton/perception-reponse.json @@ -0,0 +1,13 @@ +{ + "_id": "CapAutoPerRep001", + "_key": "!items!CapAutoPerRep001", + "name": "Réponse (Perception)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], "folder": null, "sort": 800000, "flags": {}, + "ownership": { "default": 0 }, + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Perception — Capacité 2 (Médian, Majeur)

    L'Automaton répond à une question qui lui est posée de manière simple et concise. S'il s'agit de traduire un texte ou une parole, il le fait de manière scrupuleuse et sans poésie mais ne peut se lancer dans une conversation ou apporter des précisions.

    " + } +} diff --git a/packs/src/capacites-automaton/reparateur-petite-reparation.json b/packs/src/capacites-automaton/reparateur-petite-reparation.json new file mode 100644 index 0000000..166de54 --- /dev/null +++ b/packs/src/capacites-automaton/reparateur-petite-reparation.json @@ -0,0 +1,18 @@ +{ + "_id": "CapAutoRepPet001", + "_key": "!items!CapAutoRepPet001", + "name": "Petite réparation (Réparateur)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 1300000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton Réparateur — Capacité 1 (Mineur, Médian, Majeur)

    L'Automaton répare les dégâts mineurs de deux objets par jour. Ces objets doivent être peu endommagés (à l'appréciation du MJ).

    " + } +} \ No newline at end of file diff --git a/packs/src/capacites-automaton/reparateur-renovation.json b/packs/src/capacites-automaton/reparateur-renovation.json new file mode 100644 index 0000000..eab13ab --- /dev/null +++ b/packs/src/capacites-automaton/reparateur-renovation.json @@ -0,0 +1,18 @@ +{ + "_id": "CapAutoRepRnv001", + "_key": "!items!CapAutoRepRnv001", + "name": "Rénovation (Réparateur)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 1300000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton Réparateur — Capacité 3 (Majeur)

    L'Automaton peut reconstruire un objet entièrement détruit, même un Réceptacle (il faut cependant invoquer à nouveau un Esprit pour refaire fonctionner l'Automaton abîmé). Il est également capable de restaurer un bâtiment.

    " + } +} \ No newline at end of file diff --git a/packs/src/capacites-automaton/reparateur-reparation.json b/packs/src/capacites-automaton/reparateur-reparation.json new file mode 100644 index 0000000..42304f8 --- /dev/null +++ b/packs/src/capacites-automaton/reparateur-reparation.json @@ -0,0 +1,18 @@ +{ + "_id": "CapAutoRepRpa001", + "_key": "!items!CapAutoRepRpa001", + "name": "Réparation (Réparateur)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 1300000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton Réparateur — Capacité 2 (Médian, Majeur)

    L'Automaton est capable de réparer jusqu'à 12 points de dégâts causés à quatre objets, y compris d'autres Automata, chaque jour. Il peut réparer les dégâts sérieux causés aux objets (à l'appréciation du MJ).

    " + } +} \ No newline at end of file diff --git a/packs/src/capacites-automaton/restauration-soin-grave.json b/packs/src/capacites-automaton/restauration-soin-grave.json new file mode 100644 index 0000000..fb72a31 --- /dev/null +++ b/packs/src/capacites-automaton/restauration-soin-grave.json @@ -0,0 +1,18 @@ +{ + "_id": "CapAutoResGra001", + "_key": "!items!CapAutoResGra001", + "name": "Soin des blessures graves (Restauration)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 1100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Restauration — Capacité 2 (Médian, Majeur)

    L'Automaton soigne tous les types de maladies non magiques. Il est capable d'exercer la chirurgie et peut restaurer un total de 12 points de dégâts létaux pour quatre êtres vivants par jour.

    " + } +} \ No newline at end of file diff --git a/packs/src/capacites-automaton/restauration-soin-leger.json b/packs/src/capacites-automaton/restauration-soin-leger.json new file mode 100644 index 0000000..7ef1365 --- /dev/null +++ b/packs/src/capacites-automaton/restauration-soin-leger.json @@ -0,0 +1,18 @@ +{ + "_id": "CapAutoResSLe001", + "_key": "!items!CapAutoResSLe001", + "name": "Soin des blessures légères (Restauration)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 1000000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Restauration — Capacité 1 (Mineur, Médian, Majeur)

    L'Automaton soigne les maladies jusqu'à une Virulence de 15 et peut restaurer un total de 6 points de dégâts létaux par jour pour un ou deux êtres vivants.

    " + } +} \ No newline at end of file diff --git a/packs/src/capacites-automaton/restauration-soin-mortel.json b/packs/src/capacites-automaton/restauration-soin-mortel.json new file mode 100644 index 0000000..87ef8f9 --- /dev/null +++ b/packs/src/capacites-automaton/restauration-soin-mortel.json @@ -0,0 +1,18 @@ +{ + "_id": "CapAutoResMor001", + "_key": "!items!CapAutoResMor001", + "name": "Soin des blessures mortelles (Restauration)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 1200000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Restauration — Capacité 3 (Majeur)

    L'Automaton est capable de véritables prouesses chirurgicales et peut poser une prothèse rudimentaire (une fois par invocation) permettant au blessé de retrouver l'usage partiel d'un bras, d'une main ou d'une jambe.

    L'Automaton restaure 24 points de dégâts létaux par jour pour un maximum de quatre êtres vivants.

    Restriction : L'Automaton ne peut soigner un être dont le score en Chaos est strictement supérieur au score de Loi.

    " + } +} \ No newline at end of file diff --git a/packs/src/capacites-automaton/voyage-air-pur.json b/packs/src/capacites-automaton/voyage-air-pur.json new file mode 100644 index 0000000..bdff967 --- /dev/null +++ b/packs/src/capacites-automaton/voyage-air-pur.json @@ -0,0 +1,13 @@ +{ + "_id": "CapAutoVoyAir001", + "_key": "!items!CapAutoVoyAir001", + "name": "Air pur (Voyage)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], "folder": null, "sort": 500000, "flags": {}, + "ownership": { "default": 0 }, + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Voyage — Capacité 2 (Médian, Majeur)

    L'Automaton fournit à son (ses) passager(s) de l'air pur pour respirer sous l'eau ou dans le vide interdimensionnel. Cet effet dure tout le long du voyage, tant que l'Esprit est présent dans le Réceptacle.

    " + } +} diff --git a/packs/src/capacites-automaton/voyage-invulnerabilite.json b/packs/src/capacites-automaton/voyage-invulnerabilite.json new file mode 100644 index 0000000..22b9c99 --- /dev/null +++ b/packs/src/capacites-automaton/voyage-invulnerabilite.json @@ -0,0 +1,13 @@ +{ + "_id": "CapAutoVoyInv001", + "_key": "!items!CapAutoVoyInv001", + "name": "Invulnérabilité (Voyage)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], "folder": null, "sort": 600000, "flags": {}, + "ownership": { "default": 0 }, + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Voyage — Capacité 3 (Majeur)

    L'Automaton est invulnérable aux armes humaines. Il reste cependant vulnérable aux attaques du Chaos et aux attaques élémentaires.

    " + } +} diff --git a/packs/src/capacites-automaton/voyage-vitesse.json b/packs/src/capacites-automaton/voyage-vitesse.json new file mode 100644 index 0000000..0c47ceb --- /dev/null +++ b/packs/src/capacites-automaton/voyage-vitesse.json @@ -0,0 +1,13 @@ +{ + "_id": "CapAutoVoyVit001", + "_key": "!items!CapAutoVoyVit001", + "name": "Vitesse (Voyage)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], "folder": null, "sort": 400000, "flags": {}, + "ownership": { "default": 0 }, + "system": { + "typeCapacite": "automaton", + "description": "

    Automaton de Voyage — Capacité 1 (Mineur, Médian, Majeur)

    La vitesse de l'Automaton triple lorsqu'il doit fuir un danger. Cette fuite accélérée dure 5 tours, après quoi l'Automaton reprend sa vitesse normale.

    " + } +} diff --git a/packs/src/demons/demon-combat-majeur.json b/packs/src/demons/demon-combat-majeur.json new file mode 100644 index 0000000..f9aa80e --- /dev/null +++ b/packs/src/demons/demon-combat-majeur.json @@ -0,0 +1,208 @@ +{ + "_id": "DemonCombatMaj001", + "_key": "!actors!DemonCombatMaj001", + "name": "Démon de Combat (Majeur)", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "DemonCombaMÊL001", + "_key": "!actors.items!DemonCombatMaj001.DemonCombaMÊL001", + "name": "Mêlée", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 10, + "attribut1": "pui", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonCombaMOU002", + "_key": "!actors.items!DemonCombatMaj001.DemonCombaMOU002", + "name": "Mouvements", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 8, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonCombaARM003", + "_key": "!actors.items!DemonCombatMaj001.DemonCombaARM003", + "name": "Armes à distance", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 8, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonCombaCOE004", + "_key": "!actors.items!DemonCombatMaj001.DemonCombaCOE004", + "name": "Coercition", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "pre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonCombaSAV005", + "_key": "!actors.items!DemonCombatMaj001.DemonCombaSAV005", + "name": "Savoir : Guerre", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonCombaSAV006", + "_key": "!actors.items!DemonCombatMaj001.DemonCombaSAV006", + "name": "Savoir : Armes", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 4, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + } + ], + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Chaos", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

    Démon de Combat (Majeur)

    Seuil d'invocation de base : 15 | Traits max : 3 | Réussite héroïque : +3 Trait(s) gratuit(s)

    Capacité Spéciale

    Bonus aux Dégâts : l'invocateur peut dépenser des points d'Âme pour augmenter le bonus aux dégâts du Démon de Combat (1 pt Âme = 1 pt bonus dégâts, max = Aspect de l'invocateur).

    Possessions

    Une arme de mêlée au choix de l'invocateur.

    Protection

    Armure naturelle/artificielle : Mineur max 2, Médian max 3, Majeur max 5.

    Règles générales des Démons

    Pour invoquer un Démon, l'invocateur doit être d'Alignement chaotique (Chaos > Loi), posséder la Capacité Spéciale Œil du Sorcier et maîtriser la Rune du Chaos.

    Le jet d'invocation est TRE + Coercition vs le Seuil de Difficulté. Le coût en points d'Âme = Seuil, dépensés immédiatement.

    Ce document est un modèle de base — le MJ doit personnaliser les attributs, compétences et Traits spécifiques selon les termes de l'invocation.

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Modèle de base — à personnaliser. Seuil d'invocation de base : 15.

    ", + "gmnotes": "

    Type : Combat | Puissance : Majeur | Seuil de base : 15

    Attributs : PUI=10 | ADR=9 | TRE=8 | PRE=6 | CLA=6

    Compétences : Mêlée:10 | Mouvements:8 | Armes à distance:8 | Coercition:6 | Savoir : Guerre:6 | Savoir : Armes:4

    ", + "creatureType": "demon", + "demonType": "combat", + "demonPuissance": "majeur" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 9 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 10 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 6 + }, + "pre": { + "label": "Présence", + "labelnorm": "presence", + "abbrev": "pre", + "value": 6 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 8 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 40, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 0, + "bonusdegats": 0, + "defensebonus": 0, + "monte": false + }, + "balance": { + "loi": 0, + "chaos": 10, + "aspect": 0, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/demons/demon-combat-median.json b/packs/src/demons/demon-combat-median.json new file mode 100644 index 0000000..5b5e130 --- /dev/null +++ b/packs/src/demons/demon-combat-median.json @@ -0,0 +1,176 @@ +{ + "_id": "DemonCombatMed001", + "_key": "!actors!DemonCombatMed001", + "name": "Démon de Combat (Médian)", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "DemonCombaMÊL001", + "_key": "!actors.items!DemonCombatMed001.DemonCombaMÊL001", + "name": "Mêlée", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 8, + "attribut1": "pui", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonCombaMOU002", + "_key": "!actors.items!DemonCombatMed001.DemonCombaMOU002", + "name": "Mouvements", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonCombaARM003", + "_key": "!actors.items!DemonCombatMed001.DemonCombaARM003", + "name": "Armes à distance", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonCombaCOE004", + "_key": "!actors.items!DemonCombatMed001.DemonCombaCOE004", + "name": "Coercition", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 4, + "attribut1": "pre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + } + ], + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Chaos", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

    Démon de Combat (Médian)

    Seuil d'invocation de base : 10 | Traits max : 2 | Réussite héroïque : +2 Trait(s) gratuit(s)

    Capacité Spéciale

    Bonus aux Dégâts : l'invocateur peut dépenser des points d'Âme pour augmenter le bonus aux dégâts du Démon de Combat (1 pt Âme = 1 pt bonus dégâts, max = Aspect de l'invocateur).

    Possessions

    Une arme de mêlée au choix de l'invocateur.

    Protection

    Armure naturelle/artificielle : Mineur max 2, Médian max 3, Majeur max 5.

    Règles générales des Démons

    Pour invoquer un Démon, l'invocateur doit être d'Alignement chaotique (Chaos > Loi), posséder la Capacité Spéciale Œil du Sorcier et maîtriser la Rune du Chaos.

    Le jet d'invocation est TRE + Coercition vs le Seuil de Difficulté. Le coût en points d'Âme = Seuil, dépensés immédiatement.

    Ce document est un modèle de base — le MJ doit personnaliser les attributs, compétences et Traits spécifiques selon les termes de l'invocation.

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Modèle de base — à personnaliser. Seuil d'invocation de base : 10.

    ", + "gmnotes": "

    Type : Combat | Puissance : Médian | Seuil de base : 10

    Attributs : PUI=7 | ADR=6 | TRE=5 | PRE=5 | CLA=4

    Compétences : Mêlée:8 | Mouvements:6 | Armes à distance:6 | Coercition:4

    ", + "creatureType": "demon", + "demonType": "combat", + "demonPuissance": "median" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 6 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 7 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 4 + }, + "pre": { + "label": "Présence", + "labelnorm": "presence", + "abbrev": "pre", + "value": 5 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 5 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 28, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 0, + "bonusdegats": 0, + "defensebonus": 0, + "monte": false + }, + "balance": { + "loi": 0, + "chaos": 10, + "aspect": 0, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/demons/demon-combat-mineur.json b/packs/src/demons/demon-combat-mineur.json new file mode 100644 index 0000000..8e86213 --- /dev/null +++ b/packs/src/demons/demon-combat-mineur.json @@ -0,0 +1,144 @@ +{ + "_id": "DemonCombatMin001", + "_key": "!actors!DemonCombatMin001", + "name": "Démon de Combat (Mineur)", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "DemonCombaMÊL001", + "_key": "!actors.items!DemonCombatMin001.DemonCombaMÊL001", + "name": "Mêlée", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 5, + "attribut1": "pui", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonCombaMOU002", + "_key": "!actors.items!DemonCombatMin001.DemonCombaMOU002", + "name": "Mouvements", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 5, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + } + ], + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Chaos", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

    Démon de Combat (Mineur)

    Seuil d'invocation de base : 5 | Traits max : 1 | Réussite héroïque : +1 Trait(s) gratuit(s)

    Capacité Spéciale

    Bonus aux Dégâts : l'invocateur peut dépenser des points d'Âme pour augmenter le bonus aux dégâts du Démon de Combat (1 pt Âme = 1 pt bonus dégâts, max = Aspect de l'invocateur).

    Possessions

    Une arme de mêlée au choix de l'invocateur.

    Protection

    Armure naturelle/artificielle : Mineur max 2, Médian max 3, Majeur max 5.

    Règles générales des Démons

    Pour invoquer un Démon, l'invocateur doit être d'Alignement chaotique (Chaos > Loi), posséder la Capacité Spéciale Œil du Sorcier et maîtriser la Rune du Chaos.

    Le jet d'invocation est TRE + Coercition vs le Seuil de Difficulté. Le coût en points d'Âme = Seuil, dépensés immédiatement.

    Ce document est un modèle de base — le MJ doit personnaliser les attributs, compétences et Traits spécifiques selon les termes de l'invocation.

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Modèle de base — à personnaliser. Seuil d'invocation de base : 5.

    ", + "gmnotes": "

    Type : Combat | Puissance : Mineur | Seuil de base : 5

    Attributs : PUI=5 | ADR=4 | TRE=3 | PRE=3 | CLA=2

    Compétences : Mêlée:5 | Mouvements:5

    ", + "creatureType": "demon", + "demonType": "combat", + "demonPuissance": "mineur" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 4 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 5 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 2 + }, + "pre": { + "label": "Présence", + "labelnorm": "presence", + "abbrev": "pre", + "value": 3 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 3 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 20, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 0, + "bonusdegats": 0, + "defensebonus": 0, + "monte": false + }, + "balance": { + "loi": 0, + "chaos": 10, + "aspect": 0, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/demons/demon-desir-majeur.json b/packs/src/demons/demon-desir-majeur.json new file mode 100644 index 0000000..703a703 --- /dev/null +++ b/packs/src/demons/demon-desir-majeur.json @@ -0,0 +1,208 @@ +{ + "_id": "DemonDesirMaj0001", + "_key": "!actors!DemonDesirMaj0001", + "name": "Démon de Désir (Majeur)", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "DemonDesirPER001", + "_key": "!actors.items!DemonDesirMaj0001.DemonDesirPER001", + "name": "Persuasion", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 10, + "attribut1": "pre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonDesirPER002", + "_key": "!actors.items!DemonDesirMaj0001.DemonDesirPER002", + "name": "Perception", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 8, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonDesirDIS003", + "_key": "!actors.items!DemonDesirMaj0001.DemonDesirDIS003", + "name": "Discrétion", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 8, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonDesirFIL004", + "_key": "!actors.items!DemonDesirMaj0001.DemonDesirFIL004", + "name": "Filouterie", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonDesirCOM005", + "_key": "!actors.items!DemonDesirMaj0001.DemonDesirCOM005", + "name": "Commerce", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "pre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonDesirCOE006", + "_key": "!actors.items!DemonDesirMaj0001.DemonDesirCOE006", + "name": "Coercition", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 4, + "attribut1": "pre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + } + ], + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Chaos", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

    Démon de Désir (Majeur)

    Seuil d'invocation de base : 15 | Traits max : 3 | Réussite héroïque : +3 Trait(s) gratuit(s)

    Capacité Spéciale

    Runes : peut connaître et maîtriser des Runes (1 pt Âme par Rune, limité par l'Aspect de l'invocateur). Ne les enseigne jamais.

    Possessions

    Tout instrument nécessaire à la pratique de son art.

    Règles générales des Démons

    Pour invoquer un Démon, l'invocateur doit être d'Alignement chaotique (Chaos > Loi), posséder la Capacité Spéciale Œil du Sorcier et maîtriser la Rune du Chaos.

    Le jet d'invocation est TRE + Coercition vs le Seuil de Difficulté. Le coût en points d'Âme = Seuil, dépensés immédiatement.

    Ce document est un modèle de base — le MJ doit personnaliser les attributs, compétences et Traits spécifiques selon les termes de l'invocation.

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Modèle de base — à personnaliser. Seuil d'invocation de base : 15.

    ", + "gmnotes": "

    Type : Désir | Puissance : Majeur | Seuil de base : 15

    Attributs : PRE=10 | CLA=9 | ADR=8 | TRE=6 | PUI=6

    Compétences : Persuasion:10 | Perception:8 | Discrétion:8 | Filouterie:6 | Commerce:6 | Coercition:4

    ", + "creatureType": "demon", + "demonType": "desir", + "demonPuissance": "majeur" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 8 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 6 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 9 + }, + "pre": { + "label": "Présence", + "labelnorm": "presence", + "abbrev": "pre", + "value": 10 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 6 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 24, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 0, + "bonusdegats": 0, + "defensebonus": 0, + "monte": false + }, + "balance": { + "loi": 0, + "chaos": 10, + "aspect": 0, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/demons/demon-desir-median.json b/packs/src/demons/demon-desir-median.json new file mode 100644 index 0000000..018d253 --- /dev/null +++ b/packs/src/demons/demon-desir-median.json @@ -0,0 +1,176 @@ +{ + "_id": "DemonDesirMed0001", + "_key": "!actors!DemonDesirMed0001", + "name": "Démon de Désir (Médian)", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "DemonDesirPER001", + "_key": "!actors.items!DemonDesirMed0001.DemonDesirPER001", + "name": "Persuasion", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 8, + "attribut1": "pre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonDesirPER002", + "_key": "!actors.items!DemonDesirMed0001.DemonDesirPER002", + "name": "Perception", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonDesirDIS003", + "_key": "!actors.items!DemonDesirMed0001.DemonDesirDIS003", + "name": "Discrétion", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonDesirFIL004", + "_key": "!actors.items!DemonDesirMed0001.DemonDesirFIL004", + "name": "Filouterie", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 4, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + } + ], + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Chaos", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

    Démon de Désir (Médian)

    Seuil d'invocation de base : 10 | Traits max : 2 | Réussite héroïque : +2 Trait(s) gratuit(s)

    Capacité Spéciale

    Runes : peut connaître et maîtriser des Runes (1 pt Âme par Rune, limité par l'Aspect de l'invocateur). Ne les enseigne jamais.

    Possessions

    Tout instrument nécessaire à la pratique de son art.

    Règles générales des Démons

    Pour invoquer un Démon, l'invocateur doit être d'Alignement chaotique (Chaos > Loi), posséder la Capacité Spéciale Œil du Sorcier et maîtriser la Rune du Chaos.

    Le jet d'invocation est TRE + Coercition vs le Seuil de Difficulté. Le coût en points d'Âme = Seuil, dépensés immédiatement.

    Ce document est un modèle de base — le MJ doit personnaliser les attributs, compétences et Traits spécifiques selon les termes de l'invocation.

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Modèle de base — à personnaliser. Seuil d'invocation de base : 10.

    ", + "gmnotes": "

    Type : Désir | Puissance : Médian | Seuil de base : 10

    Attributs : PRE=7 | CLA=6 | ADR=5 | TRE=5 | PUI=4

    Compétences : Persuasion:8 | Perception:6 | Discrétion:6 | Filouterie:4

    ", + "creatureType": "demon", + "demonType": "desir", + "demonPuissance": "median" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 5 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 4 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 6 + }, + "pre": { + "label": "Présence", + "labelnorm": "presence", + "abbrev": "pre", + "value": 7 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 5 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 16, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 0, + "bonusdegats": 0, + "defensebonus": 0, + "monte": false + }, + "balance": { + "loi": 0, + "chaos": 10, + "aspect": 0, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/demons/demon-desir-mineur.json b/packs/src/demons/demon-desir-mineur.json new file mode 100644 index 0000000..b49d2c5 --- /dev/null +++ b/packs/src/demons/demon-desir-mineur.json @@ -0,0 +1,144 @@ +{ + "_id": "DemonDesirMin0001", + "_key": "!actors!DemonDesirMin0001", + "name": "Démon de Désir (Mineur)", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "DemonDesirPER001", + "_key": "!actors.items!DemonDesirMin0001.DemonDesirPER001", + "name": "Persuasion", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 5, + "attribut1": "pre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonDesirPER002", + "_key": "!actors.items!DemonDesirMin0001.DemonDesirPER002", + "name": "Perception", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 5, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + } + ], + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Chaos", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

    Démon de Désir (Mineur)

    Seuil d'invocation de base : 5 | Traits max : 1 | Réussite héroïque : +1 Trait(s) gratuit(s)

    Capacité Spéciale

    Runes : peut connaître et maîtriser des Runes (1 pt Âme par Rune, limité par l'Aspect de l'invocateur). Ne les enseigne jamais.

    Possessions

    Tout instrument nécessaire à la pratique de son art.

    Règles générales des Démons

    Pour invoquer un Démon, l'invocateur doit être d'Alignement chaotique (Chaos > Loi), posséder la Capacité Spéciale Œil du Sorcier et maîtriser la Rune du Chaos.

    Le jet d'invocation est TRE + Coercition vs le Seuil de Difficulté. Le coût en points d'Âme = Seuil, dépensés immédiatement.

    Ce document est un modèle de base — le MJ doit personnaliser les attributs, compétences et Traits spécifiques selon les termes de l'invocation.

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Modèle de base — à personnaliser. Seuil d'invocation de base : 5.

    ", + "gmnotes": "

    Type : Désir | Puissance : Mineur | Seuil de base : 5

    Attributs : PRE=5 | CLA=4 | ADR=3 | TRE=3 | PUI=2

    Compétences : Persuasion:5 | Perception:5

    ", + "creatureType": "demon", + "demonType": "desir", + "demonPuissance": "mineur" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 3 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 2 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 4 + }, + "pre": { + "label": "Présence", + "labelnorm": "presence", + "abbrev": "pre", + "value": 5 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 3 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 8, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 0, + "bonusdegats": 0, + "defensebonus": 0, + "monte": false + }, + "balance": { + "loi": 0, + "chaos": 10, + "aspect": 0, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/demons/demon-protection-majeur.json b/packs/src/demons/demon-protection-majeur.json new file mode 100644 index 0000000..6affded --- /dev/null +++ b/packs/src/demons/demon-protection-majeur.json @@ -0,0 +1,208 @@ +{ + "_id": "DemonProtMaj0001", + "_key": "!actors!DemonProtMaj0001", + "name": "Démon de Protection (Majeur)", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "DemonProtMMÊL001", + "_key": "!actors.items!DemonProtMaj0001.DemonProtMMÊL001", + "name": "Mêlée", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 10, + "attribut1": "pui", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonProtMMOU002", + "_key": "!actors.items!DemonProtMaj0001.DemonProtMMOU002", + "name": "Mouvements", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 8, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonProtMCOE003", + "_key": "!actors.items!DemonProtMaj0001.DemonProtMCOE003", + "name": "Coercition", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 8, + "attribut1": "pre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonProtMPER004", + "_key": "!actors.items!DemonProtMaj0001.DemonProtMPER004", + "name": "Perception", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonProtMDIS005", + "_key": "!actors.items!DemonProtMaj0001.DemonProtMDIS005", + "name": "Discrétion", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonProtMARM006", + "_key": "!actors.items!DemonProtMaj0001.DemonProtMARM006", + "name": "Armes à distance", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 4, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + } + ], + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Chaos", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

    Démon de Protection (Majeur)

    Seuil d'invocation de base : 15 | Traits max : 3 | Réussite héroïque : +3 Trait(s) gratuit(s)

    Capacité Spéciale

    Apparence humaine + Armure naturelle bonus : 1 pt Âme = 1 pt Protection supplémentaire (max = Aspect de l'invocateur).

    Possessions

    Une arme de mêlée au choix de l'invocateur.

    Protection

    Armure naturelle/artificielle : Mineur max 2, Médian max 3, Majeur max 5 (hors bonus Capacité Spéciale).

    Règles générales des Démons

    Pour invoquer un Démon, l'invocateur doit être d'Alignement chaotique (Chaos > Loi), posséder la Capacité Spéciale Œil du Sorcier et maîtriser la Rune du Chaos.

    Le jet d'invocation est TRE + Coercition vs le Seuil de Difficulté. Le coût en points d'Âme = Seuil, dépensés immédiatement.

    Ce document est un modèle de base — le MJ doit personnaliser les attributs, compétences et Traits spécifiques selon les termes de l'invocation.

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Modèle de base — à personnaliser. Seuil d'invocation de base : 15.

    ", + "gmnotes": "

    Type : Protection | Puissance : Majeur | Seuil de base : 15

    Attributs : TRE=10 | PUI=9 | ADR=8 | CLA=6 | PRE=6

    Compétences : Mêlée:10 | Mouvements:8 | Coercition:8 | Perception:6 | Discrétion:6 | Armes à distance:4

    ", + "creatureType": "demon", + "demonType": "protection", + "demonPuissance": "majeur" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 8 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 9 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 6 + }, + "pre": { + "label": "Présence", + "labelnorm": "presence", + "abbrev": "pre", + "value": 6 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 10 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 36, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 0, + "bonusdegats": 0, + "defensebonus": 0, + "monte": false + }, + "balance": { + "loi": 0, + "chaos": 10, + "aspect": 0, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/demons/demon-protection-median.json b/packs/src/demons/demon-protection-median.json new file mode 100644 index 0000000..a3e9c1e --- /dev/null +++ b/packs/src/demons/demon-protection-median.json @@ -0,0 +1,176 @@ +{ + "_id": "DemonProtMed0001", + "_key": "!actors!DemonProtMed0001", + "name": "Démon de Protection (Médian)", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "DemonProtMMÊL001", + "_key": "!actors.items!DemonProtMed0001.DemonProtMMÊL001", + "name": "Mêlée", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 8, + "attribut1": "pui", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonProtMMOU002", + "_key": "!actors.items!DemonProtMed0001.DemonProtMMOU002", + "name": "Mouvements", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonProtMCOE003", + "_key": "!actors.items!DemonProtMed0001.DemonProtMCOE003", + "name": "Coercition", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "pre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonProtMPER004", + "_key": "!actors.items!DemonProtMed0001.DemonProtMPER004", + "name": "Perception", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 4, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + } + ], + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Chaos", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

    Démon de Protection (Médian)

    Seuil d'invocation de base : 10 | Traits max : 2 | Réussite héroïque : +2 Trait(s) gratuit(s)

    Capacité Spéciale

    Apparence humaine + Armure naturelle bonus : 1 pt Âme = 1 pt Protection supplémentaire (max = Aspect de l'invocateur).

    Possessions

    Une arme de mêlée au choix de l'invocateur.

    Protection

    Armure naturelle/artificielle : Mineur max 2, Médian max 3, Majeur max 5 (hors bonus Capacité Spéciale).

    Règles générales des Démons

    Pour invoquer un Démon, l'invocateur doit être d'Alignement chaotique (Chaos > Loi), posséder la Capacité Spéciale Œil du Sorcier et maîtriser la Rune du Chaos.

    Le jet d'invocation est TRE + Coercition vs le Seuil de Difficulté. Le coût en points d'Âme = Seuil, dépensés immédiatement.

    Ce document est un modèle de base — le MJ doit personnaliser les attributs, compétences et Traits spécifiques selon les termes de l'invocation.

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Modèle de base — à personnaliser. Seuil d'invocation de base : 10.

    ", + "gmnotes": "

    Type : Protection | Puissance : Médian | Seuil de base : 10

    Attributs : TRE=7 | PUI=6 | ADR=5 | CLA=5 | PRE=4

    Compétences : Mêlée:8 | Mouvements:6 | Coercition:6 | Perception:4

    ", + "creatureType": "demon", + "demonType": "protection", + "demonPuissance": "median" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 5 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 6 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 5 + }, + "pre": { + "label": "Présence", + "labelnorm": "presence", + "abbrev": "pre", + "value": 4 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 7 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 24, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 0, + "bonusdegats": 0, + "defensebonus": 0, + "monte": false + }, + "balance": { + "loi": 0, + "chaos": 10, + "aspect": 0, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/demons/demon-protection-mineur.json b/packs/src/demons/demon-protection-mineur.json new file mode 100644 index 0000000..24a2c05 --- /dev/null +++ b/packs/src/demons/demon-protection-mineur.json @@ -0,0 +1,144 @@ +{ + "_id": "DemonProtMin0001", + "_key": "!actors!DemonProtMin0001", + "name": "Démon de Protection (Mineur)", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "DemonProtMMÊL001", + "_key": "!actors.items!DemonProtMin0001.DemonProtMMÊL001", + "name": "Mêlée", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 5, + "attribut1": "pui", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonProtMMOU002", + "_key": "!actors.items!DemonProtMin0001.DemonProtMMOU002", + "name": "Mouvements", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 5, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + } + ], + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Chaos", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

    Démon de Protection (Mineur)

    Seuil d'invocation de base : 5 | Traits max : 1 | Réussite héroïque : +1 Trait(s) gratuit(s)

    Capacité Spéciale

    Apparence humaine + Armure naturelle bonus : 1 pt Âme = 1 pt Protection supplémentaire (max = Aspect de l'invocateur).

    Possessions

    Une arme de mêlée au choix de l'invocateur.

    Protection

    Armure naturelle/artificielle : Mineur max 2, Médian max 3, Majeur max 5 (hors bonus Capacité Spéciale).

    Règles générales des Démons

    Pour invoquer un Démon, l'invocateur doit être d'Alignement chaotique (Chaos > Loi), posséder la Capacité Spéciale Œil du Sorcier et maîtriser la Rune du Chaos.

    Le jet d'invocation est TRE + Coercition vs le Seuil de Difficulté. Le coût en points d'Âme = Seuil, dépensés immédiatement.

    Ce document est un modèle de base — le MJ doit personnaliser les attributs, compétences et Traits spécifiques selon les termes de l'invocation.

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Modèle de base — à personnaliser. Seuil d'invocation de base : 5.

    ", + "gmnotes": "

    Type : Protection | Puissance : Mineur | Seuil de base : 5

    Attributs : TRE=5 | PUI=4 | ADR=3 | CLA=3 | PRE=2

    Compétences : Mêlée:5 | Mouvements:5

    ", + "creatureType": "demon", + "demonType": "protection", + "demonPuissance": "mineur" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 3 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 4 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 3 + }, + "pre": { + "label": "Présence", + "labelnorm": "presence", + "abbrev": "pre", + "value": 2 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 5 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 16, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 0, + "bonusdegats": 0, + "defensebonus": 0, + "monte": false + }, + "balance": { + "loi": 0, + "chaos": 10, + "aspect": 0, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/demons/demon-savoir-majeur.json b/packs/src/demons/demon-savoir-majeur.json new file mode 100644 index 0000000..f5fe7fb --- /dev/null +++ b/packs/src/demons/demon-savoir-majeur.json @@ -0,0 +1,208 @@ +{ + "_id": "DemonSavoirMaj001", + "_key": "!actors!DemonSavoirMaj001", + "name": "Démon de Savoir (Majeur)", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "DemonSavoiSAV001", + "_key": "!actors.items!DemonSavoirMaj001.DemonSavoiSAV001", + "name": "Savoir : Arcanes", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 10, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonSavoiPER002", + "_key": "!actors.items!DemonSavoirMaj001.DemonSavoiPER002", + "name": "Perception", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 8, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonSavoiSAV003", + "_key": "!actors.items!DemonSavoirMaj001.DemonSavoiSAV003", + "name": "Savoir : Histoire", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 8, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonSavoiSOI004", + "_key": "!actors.items!DemonSavoirMaj001.DemonSavoiSOI004", + "name": "Soins", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonSavoiCOM005", + "_key": "!actors.items!DemonSavoirMaj001.DemonSavoiCOM005", + "name": "Commerce", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "pre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonSavoiSAV006", + "_key": "!actors.items!DemonSavoirMaj001.DemonSavoiSAV006", + "name": "Savoir : Stratégie", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 4, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + } + ], + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Chaos", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

    Démon de Savoir (Majeur)

    Seuil d'invocation de base : 15 | Traits max : 3 | Réussite héroïque : +3 Trait(s) gratuit(s)

    Capacité Spéciale

    Oracle : peut répondre à une question sur le passé (sacrifice 10 victimes/année) ou l'avenir (100 victimes/année).

    Possessions

    Des vêtements simples mais imposants. Un nécessaire d'écriture.

    Règles générales des Démons

    Pour invoquer un Démon, l'invocateur doit être d'Alignement chaotique (Chaos > Loi), posséder la Capacité Spéciale Œil du Sorcier et maîtriser la Rune du Chaos.

    Le jet d'invocation est TRE + Coercition vs le Seuil de Difficulté. Le coût en points d'Âme = Seuil, dépensés immédiatement.

    Ce document est un modèle de base — le MJ doit personnaliser les attributs, compétences et Traits spécifiques selon les termes de l'invocation.

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Modèle de base — à personnaliser. Seuil d'invocation de base : 15.

    ", + "gmnotes": "

    Type : Savoir | Puissance : Majeur | Seuil de base : 15

    Attributs : CLA=10 | PRE=9 | TRE=8 | ADR=6 | PUI=6

    Compétences : Savoir : Arcanes:10 | Perception:8 | Savoir : Histoire:8 | Soins:6 | Commerce:6 | Savoir : Stratégie:4

    ", + "creatureType": "demon", + "demonType": "savoir", + "demonPuissance": "majeur" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 6 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 6 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 10 + }, + "pre": { + "label": "Présence", + "labelnorm": "presence", + "abbrev": "pre", + "value": 9 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 8 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 24, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 0, + "bonusdegats": 0, + "defensebonus": 0, + "monte": false + }, + "balance": { + "loi": 0, + "chaos": 10, + "aspect": 0, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/demons/demon-savoir-median.json b/packs/src/demons/demon-savoir-median.json new file mode 100644 index 0000000..0b707af --- /dev/null +++ b/packs/src/demons/demon-savoir-median.json @@ -0,0 +1,176 @@ +{ + "_id": "DemonSavoirMed001", + "_key": "!actors!DemonSavoirMed001", + "name": "Démon de Savoir (Médian)", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "DemonSavoiSAV001", + "_key": "!actors.items!DemonSavoirMed001.DemonSavoiSAV001", + "name": "Savoir : Arcanes", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 8, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonSavoiPER002", + "_key": "!actors.items!DemonSavoirMed001.DemonSavoiPER002", + "name": "Perception", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonSavoiSAV003", + "_key": "!actors.items!DemonSavoirMed001.DemonSavoiSAV003", + "name": "Savoir : Histoire", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonSavoiSOI004", + "_key": "!actors.items!DemonSavoirMed001.DemonSavoiSOI004", + "name": "Soins", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 4, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + } + ], + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Chaos", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

    Démon de Savoir (Médian)

    Seuil d'invocation de base : 10 | Traits max : 2 | Réussite héroïque : +2 Trait(s) gratuit(s)

    Capacité Spéciale

    Oracle : peut répondre à une question sur le passé (sacrifice 10 victimes/année) ou l'avenir (100 victimes/année).

    Possessions

    Des vêtements simples mais imposants. Un nécessaire d'écriture.

    Règles générales des Démons

    Pour invoquer un Démon, l'invocateur doit être d'Alignement chaotique (Chaos > Loi), posséder la Capacité Spéciale Œil du Sorcier et maîtriser la Rune du Chaos.

    Le jet d'invocation est TRE + Coercition vs le Seuil de Difficulté. Le coût en points d'Âme = Seuil, dépensés immédiatement.

    Ce document est un modèle de base — le MJ doit personnaliser les attributs, compétences et Traits spécifiques selon les termes de l'invocation.

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Modèle de base — à personnaliser. Seuil d'invocation de base : 10.

    ", + "gmnotes": "

    Type : Savoir | Puissance : Médian | Seuil de base : 10

    Attributs : CLA=7 | PRE=6 | TRE=5 | ADR=5 | PUI=4

    Compétences : Savoir : Arcanes:8 | Perception:6 | Savoir : Histoire:6 | Soins:4

    ", + "creatureType": "demon", + "demonType": "savoir", + "demonPuissance": "median" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 5 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 4 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 7 + }, + "pre": { + "label": "Présence", + "labelnorm": "presence", + "abbrev": "pre", + "value": 6 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 5 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 16, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 0, + "bonusdegats": 0, + "defensebonus": 0, + "monte": false + }, + "balance": { + "loi": 0, + "chaos": 10, + "aspect": 0, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/demons/demon-savoir-mineur.json b/packs/src/demons/demon-savoir-mineur.json new file mode 100644 index 0000000..c3d2372 --- /dev/null +++ b/packs/src/demons/demon-savoir-mineur.json @@ -0,0 +1,144 @@ +{ + "_id": "DemonSavoirMin001", + "_key": "!actors!DemonSavoirMin001", + "name": "Démon de Savoir (Mineur)", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "DemonSavoiSAV001", + "_key": "!actors.items!DemonSavoirMin001.DemonSavoiSAV001", + "name": "Savoir : Arcanes", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 5, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonSavoiPER002", + "_key": "!actors.items!DemonSavoirMin001.DemonSavoiPER002", + "name": "Perception", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 5, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + } + ], + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Chaos", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

    Démon de Savoir (Mineur)

    Seuil d'invocation de base : 5 | Traits max : 1 | Réussite héroïque : +1 Trait(s) gratuit(s)

    Capacité Spéciale

    Oracle : peut répondre à une question sur le passé (sacrifice 10 victimes/année) ou l'avenir (100 victimes/année).

    Possessions

    Des vêtements simples mais imposants. Un nécessaire d'écriture.

    Règles générales des Démons

    Pour invoquer un Démon, l'invocateur doit être d'Alignement chaotique (Chaos > Loi), posséder la Capacité Spéciale Œil du Sorcier et maîtriser la Rune du Chaos.

    Le jet d'invocation est TRE + Coercition vs le Seuil de Difficulté. Le coût en points d'Âme = Seuil, dépensés immédiatement.

    Ce document est un modèle de base — le MJ doit personnaliser les attributs, compétences et Traits spécifiques selon les termes de l'invocation.

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Modèle de base — à personnaliser. Seuil d'invocation de base : 5.

    ", + "gmnotes": "

    Type : Savoir | Puissance : Mineur | Seuil de base : 5

    Attributs : CLA=5 | PRE=4 | TRE=3 | ADR=3 | PUI=2

    Compétences : Savoir : Arcanes:5 | Perception:5

    ", + "creatureType": "demon", + "demonType": "savoir", + "demonPuissance": "mineur" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 3 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 2 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 5 + }, + "pre": { + "label": "Présence", + "labelnorm": "presence", + "abbrev": "pre", + "value": 4 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 3 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 8, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 0, + "bonusdegats": 0, + "defensebonus": 0, + "monte": false + }, + "balance": { + "loi": 0, + "chaos": 10, + "aspect": 0, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/demons/demon-voyage-majeur.json b/packs/src/demons/demon-voyage-majeur.json new file mode 100644 index 0000000..e13fbcb --- /dev/null +++ b/packs/src/demons/demon-voyage-majeur.json @@ -0,0 +1,208 @@ +{ + "_id": "DemonVoyageMaj01", + "_key": "!actors!DemonVoyageMaj01", + "name": "Démon de Voyage (Majeur)", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "DemonVoyagMOU001", + "_key": "!actors.items!DemonVoyageMaj01.DemonVoyagMOU001", + "name": "Mouvements", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 10, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonVoyagSUR002", + "_key": "!actors.items!DemonVoyageMaj01.DemonVoyagSUR002", + "name": "Survie", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 8, + "attribut1": "tre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonVoyagPER003", + "_key": "!actors.items!DemonVoyageMaj01.DemonVoyagPER003", + "name": "Perception", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 8, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonVoyagNAV004", + "_key": "!actors.items!DemonVoyageMaj01.DemonVoyagNAV004", + "name": "Navigation", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonVoyagNAG005", + "_key": "!actors.items!DemonVoyageMaj01.DemonVoyagNAG005", + "name": "Nage", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "pui", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonVoyagDIS006", + "_key": "!actors.items!DemonVoyageMaj01.DemonVoyagDIS006", + "name": "Discrétion", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 4, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + } + ], + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Chaos", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

    Démon de Voyage (Majeur)

    Seuil d'invocation de base : 15 | Traits max : 3 | Réussite héroïque : +3 Trait(s) gratuit(s)

    Capacité Spéciale

    Vitesse accrue : l'invocateur peut dépenser des points d'Âme pour augmenter la Vitesse du Démon (1 pt Âme = 1 pt Vitesse, max = Aspect de l'invocateur).

    Possessions

    Un coffre contenant des affaires et nécessaires de survie pour tous les climats.

    Règles générales des Démons

    Pour invoquer un Démon, l'invocateur doit être d'Alignement chaotique (Chaos > Loi), posséder la Capacité Spéciale Œil du Sorcier et maîtriser la Rune du Chaos.

    Le jet d'invocation est TRE + Coercition vs le Seuil de Difficulté. Le coût en points d'Âme = Seuil, dépensés immédiatement.

    Ce document est un modèle de base — le MJ doit personnaliser les attributs, compétences et Traits spécifiques selon les termes de l'invocation.

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Modèle de base — à personnaliser. Seuil d'invocation de base : 15.

    ", + "gmnotes": "

    Type : Voyage | Puissance : Majeur | Seuil de base : 15

    Attributs : ADR=10 | PUI=9 | TRE=8 | CLA=6 | PRE=6

    Compétences : Mouvements:10 | Survie:8 | Perception:8 | Navigation:6 | Nage:6 | Discrétion:4

    ", + "creatureType": "demon", + "demonType": "voyage", + "demonPuissance": "majeur" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 10 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 9 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 6 + }, + "pre": { + "label": "Présence", + "labelnorm": "presence", + "abbrev": "pre", + "value": 6 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 8 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 36, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 0, + "bonusdegats": 0, + "defensebonus": 0, + "monte": false + }, + "balance": { + "loi": 0, + "chaos": 10, + "aspect": 0, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/demons/demon-voyage-median.json b/packs/src/demons/demon-voyage-median.json new file mode 100644 index 0000000..ef0196c --- /dev/null +++ b/packs/src/demons/demon-voyage-median.json @@ -0,0 +1,176 @@ +{ + "_id": "DemonVoyageMed01", + "_key": "!actors!DemonVoyageMed01", + "name": "Démon de Voyage (Médian)", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "DemonVoyagMOU001", + "_key": "!actors.items!DemonVoyageMed01.DemonVoyagMOU001", + "name": "Mouvements", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 8, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonVoyagSUR002", + "_key": "!actors.items!DemonVoyageMed01.DemonVoyagSUR002", + "name": "Survie", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "tre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonVoyagPER003", + "_key": "!actors.items!DemonVoyageMed01.DemonVoyagPER003", + "name": "Perception", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonVoyagNAV004", + "_key": "!actors.items!DemonVoyageMed01.DemonVoyagNAV004", + "name": "Navigation", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 4, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + } + ], + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Chaos", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

    Démon de Voyage (Médian)

    Seuil d'invocation de base : 10 | Traits max : 2 | Réussite héroïque : +2 Trait(s) gratuit(s)

    Capacité Spéciale

    Vitesse accrue : l'invocateur peut dépenser des points d'Âme pour augmenter la Vitesse du Démon (1 pt Âme = 1 pt Vitesse, max = Aspect de l'invocateur).

    Possessions

    Un coffre contenant des affaires et nécessaires de survie pour tous les climats.

    Règles générales des Démons

    Pour invoquer un Démon, l'invocateur doit être d'Alignement chaotique (Chaos > Loi), posséder la Capacité Spéciale Œil du Sorcier et maîtriser la Rune du Chaos.

    Le jet d'invocation est TRE + Coercition vs le Seuil de Difficulté. Le coût en points d'Âme = Seuil, dépensés immédiatement.

    Ce document est un modèle de base — le MJ doit personnaliser les attributs, compétences et Traits spécifiques selon les termes de l'invocation.

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Modèle de base — à personnaliser. Seuil d'invocation de base : 10.

    ", + "gmnotes": "

    Type : Voyage | Puissance : Médian | Seuil de base : 10

    Attributs : ADR=7 | PUI=6 | TRE=5 | CLA=5 | PRE=4

    Compétences : Mouvements:8 | Survie:6 | Perception:6 | Navigation:4

    ", + "creatureType": "demon", + "demonType": "voyage", + "demonPuissance": "median" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 7 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 6 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 5 + }, + "pre": { + "label": "Présence", + "labelnorm": "presence", + "abbrev": "pre", + "value": 4 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 5 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 24, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 0, + "bonusdegats": 0, + "defensebonus": 0, + "monte": false + }, + "balance": { + "loi": 0, + "chaos": 10, + "aspect": 0, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/demons/demon-voyage-mineur.json b/packs/src/demons/demon-voyage-mineur.json new file mode 100644 index 0000000..8135912 --- /dev/null +++ b/packs/src/demons/demon-voyage-mineur.json @@ -0,0 +1,144 @@ +{ + "_id": "DemonVoyageMin01", + "_key": "!actors!DemonVoyageMin01", + "name": "Démon de Voyage (Mineur)", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "DemonVoyagMOU001", + "_key": "!actors.items!DemonVoyageMin01.DemonVoyagMOU001", + "name": "Mouvements", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 5, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "DemonVoyagSUR002", + "_key": "!actors.items!DemonVoyageMin01.DemonVoyagSUR002", + "name": "Survie", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 5, + "attribut1": "tre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + } + ], + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Chaos", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

    Démon de Voyage (Mineur)

    Seuil d'invocation de base : 5 | Traits max : 1 | Réussite héroïque : +1 Trait(s) gratuit(s)

    Capacité Spéciale

    Vitesse accrue : l'invocateur peut dépenser des points d'Âme pour augmenter la Vitesse du Démon (1 pt Âme = 1 pt Vitesse, max = Aspect de l'invocateur).

    Possessions

    Un coffre contenant des affaires et nécessaires de survie pour tous les climats.

    Règles générales des Démons

    Pour invoquer un Démon, l'invocateur doit être d'Alignement chaotique (Chaos > Loi), posséder la Capacité Spéciale Œil du Sorcier et maîtriser la Rune du Chaos.

    Le jet d'invocation est TRE + Coercition vs le Seuil de Difficulté. Le coût en points d'Âme = Seuil, dépensés immédiatement.

    Ce document est un modèle de base — le MJ doit personnaliser les attributs, compétences et Traits spécifiques selon les termes de l'invocation.

    ", + "amemultiplier": 1, + "ignoreamemalus": true, + "ignoresantemalus": false, + "notes": "

    Modèle de base — à personnaliser. Seuil d'invocation de base : 5.

    ", + "gmnotes": "

    Type : Voyage | Puissance : Mineur | Seuil de base : 5

    Attributs : ADR=5 | PUI=4 | TRE=3 | CLA=3 | PRE=2

    Compétences : Mouvements:5 | Survie:5

    ", + "creatureType": "demon", + "demonType": "voyage", + "demonPuissance": "mineur" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 5 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 4 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 3 + }, + "pre": { + "label": "Présence", + "labelnorm": "presence", + "abbrev": "pre", + "value": 2 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 3 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 16, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 0, + "bonusdegats": 0, + "defensebonus": 0, + "monte": false + }, + "balance": { + "loi": 0, + "chaos": 10, + "aspect": 0, + "marge": 10, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/absorption.json b/packs/src/traits-demoniaques/absorption.json new file mode 100644 index 0000000..cb154f7 --- /dev/null +++ b/packs/src/traits-demoniaques/absorption.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemAbsorpti00", + "_key": "!items!TraitDemAbsorpti00", + "name": "Absorption", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 10000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué draine la magie runique utilisée contre lui.

    Effet : Chaque point d'Âme drainé vient alimenter pour le tour suivant son attribut le plus haut.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/acidite.json b/packs/src/traits-demoniaques/acidite.json new file mode 100644 index 0000000..b79fbd6 --- /dev/null +++ b/packs/src/traits-demoniaques/acidite.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemAcidite000", + "_key": "!items!TraitDemAcidite000", + "name": "Acidité", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 30000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué possède un sang acide blessant tout attaquant parvenant à le toucher et à le faire saigner.

    Effet : À chaque fois que le Démon est touché, l'attaquant subit 4 points de dégâts.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/adresse.json b/packs/src/traits-demoniaques/adresse.json new file mode 100644 index 0000000..2e9bdd7 --- /dev/null +++ b/packs/src/traits-demoniaques/adresse.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemAdresse000", + "_key": "!items!TraitDemAdresse000", + "name": "Adresse", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 40000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué est particulièrement adroit et agile.

    Effet : Son Adresse est majorée de 3 points.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/ailes.json b/packs/src/traits-demoniaques/ailes.json new file mode 100644 index 0000000..e4aef8f --- /dev/null +++ b/packs/src/traits-demoniaques/ailes.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemAiles0060", + "_key": "!items!TraitDemAiles0060", + "name": "Ailes", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 600000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué possède des ailes et sait voler.

    Effet : Le Démon utilise la compétence Mouvements pour se servir de ses ailes.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/allure.json b/packs/src/traits-demoniaques/allure.json new file mode 100644 index 0000000..f88a2c5 --- /dev/null +++ b/packs/src/traits-demoniaques/allure.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemAllure0006", + "_key": "!items!TraitDemAllure0006", + "name": "Allure", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 60000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué émet des phéromones qui séduisent ses cibles.

    Effet : Il bénéficie d'un bonus de +10 à tous ses tests de Persuasion.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/antennes.json b/packs/src/traits-demoniaques/antennes.json new file mode 100644 index 0000000..4efffc9 --- /dev/null +++ b/packs/src/traits-demoniaques/antennes.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemAntennes00", + "_key": "!items!TraitDemAntennes00", + "name": "Antennes", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 70000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué possède des antennes qui lui permettent de bénéficier d'un sens supplémentaire à choisir.

    Effet : Il peut percevoir au choix : les volumes, la chaleur, la folie, les êtres vivants ou les manifestations magiques.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/aquatique.json b/packs/src/traits-demoniaques/aquatique.json new file mode 100644 index 0000000..869acd7 --- /dev/null +++ b/packs/src/traits-demoniaques/aquatique.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemAquatiqu00", + "_key": "!items!TraitDemAquatiqu00", + "name": "Aquatique", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 520000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué possède des extrémités palmées qui lui donnent une grande aisance dans l'eau.

    Effet : Il bénéficie d'un bonus de +10 à toute action impliquant la Nage.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/arme-specifique.json b/packs/src/traits-demoniaques/arme-specifique.json new file mode 100644 index 0000000..526af95 --- /dev/null +++ b/packs/src/traits-demoniaques/arme-specifique.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemArmeSpec00", + "_key": "!items!TraitDemArmeSpec00", + "name": "Arme spécifique", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 80000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué possède une très belle arme.

    Effet : Les dégâts de son arme sont majorés de 3 points.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/armure-naturelle.json b/packs/src/traits-demoniaques/armure-naturelle.json new file mode 100644 index 0000000..238a72b --- /dev/null +++ b/packs/src/traits-demoniaques/armure-naturelle.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemArmureNa00", + "_key": "!items!TraitDemArmureNa00", + "name": "Armure naturelle", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 220000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : La peau du Démon invoqué est très résistante car recouverte par une substance ou une matière la protégeant (écailles, cristal, cuir épais, fourrure…).

    Effet : Le Démon bénéficie d'un bonus de Protection de +3.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/armure-specifique.json b/packs/src/traits-demoniaques/armure-specifique.json new file mode 100644 index 0000000..52daaad --- /dev/null +++ b/packs/src/traits-demoniaques/armure-specifique.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemArmureSp00", + "_key": "!items!TraitDemArmureSp00", + "name": "Armure spécifique", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 90000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué possède une très belle armure.

    Effet : La Protection offerte par son armure est majorée de 3 points.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/asymetrie.json b/packs/src/traits-demoniaques/asymetrie.json new file mode 100644 index 0000000..4cecb9c --- /dev/null +++ b/packs/src/traits-demoniaques/asymetrie.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemAsymetri00", + "_key": "!items!TraitDemAsymetri00", + "name": "Asymétrie", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 110000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué est asymétrique et disproportionné.

    Effet : En raison du trouble provoqué par son aspect étrange et disproportionné, le Démon invoqué bénéficie d'un bonus de +5 à son score de Défense.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/beaute.json b/packs/src/traits-demoniaques/beaute.json new file mode 100644 index 0000000..fd6d2c3 --- /dev/null +++ b/packs/src/traits-demoniaques/beaute.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemBeaute0013", + "_key": "!items!TraitDemBeaute0013", + "name": "Beauté", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 130000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué est particulièrement beau et charismatique.

    Effet : Sa Présence est majorée de 3 points.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/bec.json b/packs/src/traits-demoniaques/bec.json new file mode 100644 index 0000000..eeb7fea --- /dev/null +++ b/packs/src/traits-demoniaques/bec.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemBec0012", + "_key": "!items!TraitDemBec0012", + "name": "Bec", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 120000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué possède un bec avec lequel il peut attaquer.

    Effet : Dégâts : 1d8+1.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/bras-supplementaires.json b/packs/src/traits-demoniaques/bras-supplementaires.json new file mode 100644 index 0000000..03f03d5 --- /dev/null +++ b/packs/src/traits-demoniaques/bras-supplementaires.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemBrasSupp00", + "_key": "!items!TraitDemBrasSupp00", + "name": "Bras supplémentaires", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué possède une paire de bras supplémentaire.

    Effet : Outre les avantages évidents offerts par une deuxième paire de bras, le Démon invoqué bénéficie d'une action supplémentaire par tour.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/brulure.json b/packs/src/traits-demoniaques/brulure.json new file mode 100644 index 0000000..d158cd8 --- /dev/null +++ b/packs/src/traits-demoniaques/brulure.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemBrulure001", + "_key": "!items!TraitDemBrulure001", + "name": "Brûlure", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 160000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué irradie de chaleur et brûle quiconque ose le toucher.

    Effet : Quiconque l'approche subit 1 point de dégât par tour qu'aucune protection ne peut contrer, si ce n'est une protection magique liée au froid.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/brume.json b/packs/src/traits-demoniaques/brume.json new file mode 100644 index 0000000..b17b6da --- /dev/null +++ b/packs/src/traits-demoniaques/brume.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemBrume0034", + "_key": "!items!TraitDemBrume0034", + "name": "Brume", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 340000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué sait s'entourer d'une brume protectrice.

    Effet : Son assaillant doit réussir un test de Clairvoyance + Perception / 12 pour pouvoir essayer de le frapper.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/cameleon.json b/packs/src/traits-demoniaques/cameleon.json new file mode 100644 index 0000000..e0a2883 --- /dev/null +++ b/packs/src/traits-demoniaques/cameleon.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemCameleon00", + "_key": "!items!TraitDemCameleon00", + "name": "Caméléon", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 170000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon possède une enveloppe qui lui permet de se fondre dans son environnement.

    Effet : Il bénéficie d'un bonus de +5 en Discrétion pour toute action visant à se dissimuler ou à se fondre dans l'environnement.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/clairvoyance.json b/packs/src/traits-demoniaques/clairvoyance.json new file mode 100644 index 0000000..b7e7aed --- /dev/null +++ b/packs/src/traits-demoniaques/clairvoyance.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemClairvoy00", + "_key": "!items!TraitDemClairvoy00", + "name": "Clairvoyance", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 190000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué est particulièrement clairvoyant.

    Effet : Sa Clairvoyance est majorée de 3 points.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/competent.json b/packs/src/traits-demoniaques/competent.json new file mode 100644 index 0000000..5f09438 --- /dev/null +++ b/packs/src/traits-demoniaques/competent.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemCompeten00", + "_key": "!items!TraitDemCompeten00", + "name": "Compétent", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 50000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué est particulièrement compétent.

    Effet : Il maîtrise deux compétences de plus au niveau 5.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/contagion.json b/packs/src/traits-demoniaques/contagion.json new file mode 100644 index 0000000..e7f74cf --- /dev/null +++ b/packs/src/traits-demoniaques/contagion.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemContagio00", + "_key": "!items!TraitDemContagio00", + "name": "Contagion", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 210000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué peut contaminer sa victime en lui soufflant ou en lui crachant dessus.

    Effet : La victime est contaminée par une maladie de Virulence 15. Effet pathologique : fièvre, amaigrissement, tremblements, délires et cauchemars, démence. Effet létal : le malade perd 2 points de Santé et 1 point de Clairvoyance (définitif) par jour. Après avoir perdu 10 points de Santé, le malade perd 1 point d'Âme par heure jusqu'à ce qu'il devienne fou (0 point d'Âme).

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/corne-s.json b/packs/src/traits-demoniaques/corne-s.json new file mode 100644 index 0000000..92a4f30 --- /dev/null +++ b/packs/src/traits-demoniaques/corne-s.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemCornes0027", + "_key": "!items!TraitDemCornes0027", + "name": "Corne(s)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 270000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué est doté d'une corne (ou d'une paire de cornes) avec laquelle il peut se battre.

    Effet : Dégâts des cornes : 1d6+3.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/dents-crocs.json b/packs/src/traits-demoniaques/dents-crocs.json new file mode 100644 index 0000000..b7e9d2b --- /dev/null +++ b/packs/src/traits-demoniaques/dents-crocs.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemDentsCro00", + "_key": "!items!TraitDemDentsCro00", + "name": "Dents/Crocs", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 560000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon est doté d'une dentition impressionnante, constituant une arme conséquente.

    Effet : Dégâts : 1d6+4.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/derangeant.json b/packs/src/traits-demoniaques/derangeant.json new file mode 100644 index 0000000..d6f7d10 --- /dev/null +++ b/packs/src/traits-demoniaques/derangeant.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemDerangea00", + "_key": "!items!TraitDemDerangea00", + "name": "Dérangeant", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 230000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : L'aspect du Démon provoque un malaise durable.

    Effet : Quiconque approche le Démon doit réussir tous les trois tours un test de Terreur (15).

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/drain.json b/packs/src/traits-demoniaques/drain.json new file mode 100644 index 0000000..e7bf37c --- /dev/null +++ b/packs/src/traits-demoniaques/drain.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemDrain0024", + "_key": "!items!TraitDemDrain0024", + "name": "Drain", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 240000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué possède la capacité d'entrer dans l'esprit de sa victime et d'affaiblir sa volonté.

    Effet : À chaque tour, la victime doit réussir un test d'opposition de Trempe × 2 contre la Trempe × 2 du Démon. Si elle échoue, la victime perd un point de Trempe. Les points de Trempe sont regagnés dès que le Démon retourne d'où il vient.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/epines.json b/packs/src/traits-demoniaques/epines.json new file mode 100644 index 0000000..da91b1c --- /dev/null +++ b/packs/src/traits-demoniaques/epines.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemEpines0047", + "_key": "!items!TraitDemEpines0047", + "name": "Épines", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 470000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué est couvert d'épines : tout attaquant qui le touche s'y blesse à son tour.

    Effet : Dégâts des épines : 1d6 points.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/glace.json b/packs/src/traits-demoniaques/glace.json new file mode 100644 index 0000000..6e2178f --- /dev/null +++ b/packs/src/traits-demoniaques/glace.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemGlace0028", + "_key": "!items!TraitDemGlace0028", + "name": "Glace", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 280000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué est froid comme la glace et irradie le froid au point de blesser tous ceux qui approchent à moins de cinq mètres (à moins qu'ils soient magiquement protégés).

    Effet : Le Démon inflige un point de dégât létal par tour à tous ceux qui l'approchent à moins de cinq mètres.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/glue.json b/packs/src/traits-demoniaques/glue.json new file mode 100644 index 0000000..4fb564c --- /dev/null +++ b/packs/src/traits-demoniaques/glue.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemGlue0050", + "_key": "!items!TraitDemGlue0050", + "name": "Glue", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 500000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué sécrète une substance gluante des plus gênantes.

    Effet : Après un contact avec le Démon, la victime doit réussir un test de Puissance × 2 / 15 pour se libérer (ou libérer un objet).

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/griffes.json b/packs/src/traits-demoniaques/griffes.json new file mode 100644 index 0000000..34f619e --- /dev/null +++ b/packs/src/traits-demoniaques/griffes.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemGriffes001", + "_key": "!items!TraitDemGriffes001", + "name": "Griffes", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 180000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué possède une paire de griffes dont il peut se servir pour attaquer.

    Effet : Dégâts : 1d6+3.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/hurlement-terrifiant.json b/packs/src/traits-demoniaques/hurlement-terrifiant.json new file mode 100644 index 0000000..b6037b0 --- /dev/null +++ b/packs/src/traits-demoniaques/hurlement-terrifiant.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemHurlemen00", + "_key": "!items!TraitDemHurlemen00", + "name": "Hurlement terrifiant", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 450000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Par ses hurlements, le Démon invoqué sait inspirer une terreur telle qu'il peut faire fuir ses opposants.

    Effet : Le Hurlement terrifiant se résout en un test d'opposition Présence × 2 / Trempe × 2. En cas d'échec, la victime est prise de panique et fuit la présence du Démon pendant une heure.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/hypnose.json b/packs/src/traits-demoniaques/hypnose.json new file mode 100644 index 0000000..05b7f70 --- /dev/null +++ b/packs/src/traits-demoniaques/hypnose.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemHypnose002", + "_key": "!items!TraitDemHypnose002", + "name": "Hypnose", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 250000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué peut hypnotiser sa victime à l'aide d'un léger bourdonnement et de mouvements souples et réguliers.

    Effet : La victime doit réussir un test d'opposition de Trempe × 2 contre la Présence × 2 du Démon. Si le test est un échec, la victime ne peut agir à ce tour et le Démon lui donne un ordre simple que la victime exécute au tour suivant (à l'exception du suicide et de l'automutilation).

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/insensibilite.json b/packs/src/traits-demoniaques/insensibilite.json new file mode 100644 index 0000000..c74f954 --- /dev/null +++ b/packs/src/traits-demoniaques/insensibilite.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemInsensib00", + "_key": "!items!TraitDemInsensib00", + "name": "Insensibilité", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 330000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué ne ressent pas la souffrance.

    Effet : Il ne subit jamais les malus dus aux blessures ou à la douleur.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/invulnerabilite.json b/packs/src/traits-demoniaques/invulnerabilite.json new file mode 100644 index 0000000..d45b292 --- /dev/null +++ b/packs/src/traits-demoniaques/invulnerabilite.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemInvulner00", + "_key": "!items!TraitDemInvulner00", + "name": "Invulnérabilité", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 290000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué est invulnérable à un (et un seul) type de dégâts : métal, feu, poison, froid, maladie, bois... Il ne peut bénéficier que d'une invulnérabilité à la fois car sa perfection irait contre les principes dynamiques du Chaos.

    Effet : Le Démon ignore totalement les dégâts du type choisi lors de l'invocation.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/jambes-exceptionnelles.json b/packs/src/traits-demoniaques/jambes-exceptionnelles.json new file mode 100644 index 0000000..685d29d --- /dev/null +++ b/packs/src/traits-demoniaques/jambes-exceptionnelles.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemJambesEx00", + "_key": "!items!TraitDemJambesEx00", + "name": "Jambes exceptionnelles", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 300000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué possède une paire de jambes aux proportions et à la musculature parfaites.

    Effet : Il bénéficie d'un bonus de +10 à toute action de Mouvements impliquant de courir ou de sauter.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/langue.json b/packs/src/traits-demoniaques/langue.json new file mode 100644 index 0000000..a18952f --- /dev/null +++ b/packs/src/traits-demoniaques/langue.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemLangue0055", + "_key": "!items!TraitDemLangue0055", + "name": "Langue", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 550000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon possède une langue lui permettant d'attaquer ses victimes et d'attraper des objets.

    Effet : Dégâts : 1d4+4.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/levitation.json b/packs/src/traits-demoniaques/levitation.json new file mode 100644 index 0000000..be28444 --- /dev/null +++ b/packs/src/traits-demoniaques/levitation.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemLevitati00", + "_key": "!items!TraitDemLevitati00", + "name": "Lévitation", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 310000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué ne touche pas réellement le sol : il se déplace en lévitant quelques centimètres au-dessus de la surface sur laquelle il se trouve.

    Effet : Le Démon peut franchir n'importe quelle étendue solide ou liquide sans la toucher.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/maitre-des-ombres.json b/packs/src/traits-demoniaques/maitre-des-ombres.json new file mode 100644 index 0000000..88bb9cc --- /dev/null +++ b/packs/src/traits-demoniaques/maitre-des-ombres.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemMaitreDe00", + "_key": "!items!TraitDemMaitreDe00", + "name": "Maître des Ombres", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 460000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué sait manipuler les ombres qui l'entourent à sa guise, pour provoquer des manifestations particulièrement impressionnantes mais également pour s'y dissimuler.

    Effet : Il bénéficie d'un bonus de +10 à tous les tests de Discrétion visant à se dissimuler dans les ombres.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/malediction.json b/packs/src/traits-demoniaques/malediction.json new file mode 100644 index 0000000..fec6a74 --- /dev/null +++ b/packs/src/traits-demoniaques/malediction.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemMaledict00", + "_key": "!items!TraitDemMaledict00", + "name": "Malédiction", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 20000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué draine la puissance magique de son adversaire.

    Effet : Chaque fois que l'adversaire est touché par le Démon, il perd 3 points d'Âme.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/mou.json b/packs/src/traits-demoniaques/mou.json new file mode 100644 index 0000000..fda5c05 --- /dev/null +++ b/packs/src/traits-demoniaques/mou.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemMou0014", + "_key": "!items!TraitDemMou0014", + "name": "Mou", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 140000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué n'a pas d'os.

    Effet : Il peut se couler dans n'importe quel trou et survit à n'importe quelle chute.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/paralysie.json b/packs/src/traits-demoniaques/paralysie.json new file mode 100644 index 0000000..3062d52 --- /dev/null +++ b/packs/src/traits-demoniaques/paralysie.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemParalysi00", + "_key": "!items!TraitDemParalysi00", + "name": "Paralysie", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 360000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué paralyse peu à peu sa victime à chaque coup qu'il lui inflige.

    Effet : À chaque attaque qu'elle subit, la cible du Démon perd temporairement un point d'Adresse. Ses points d'Adresse reviennent à raison d'un point par heure dès lors qu'elle s'est éloignée d'au moins une centaine de mètres du Démon.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/perception-exceptionnelle.json b/packs/src/traits-demoniaques/perception-exceptionnelle.json new file mode 100644 index 0000000..a2e3bb5 --- /dev/null +++ b/packs/src/traits-demoniaques/perception-exceptionnelle.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemPercepti00", + "_key": "!items!TraitDemPercepti00", + "name": "Perception exceptionnelle", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 350000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué possède des appareils sensoriels hyper-développés qui lui permettent de percevoir son environnement avec une acuité surhumaine.

    Effet : Il bénéficie d'un bonus de +10 à tous ses tests de Perception.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/pitie.json b/packs/src/traits-demoniaques/pitie.json new file mode 100644 index 0000000..e2da6a6 --- /dev/null +++ b/packs/src/traits-demoniaques/pitie.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemPitie0032", + "_key": "!items!TraitDemPitie0032", + "name": "Pitié", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 320000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué provoque la pitié ou la tristesse au point qu'il est difficile de le contrarier ou l'attaquer.

    Effet : Avant de contrarier ou d'attaquer le Démon, il faut réussir un test d'opposition de Trempe × 2 contre la Trempe × 2 du Démon.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/poison.json b/packs/src/traits-demoniaques/poison.json new file mode 100644 index 0000000..0af0586 --- /dev/null +++ b/packs/src/traits-demoniaques/poison.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemPoison0038", + "_key": "!items!TraitDemPoison0038", + "name": "Poison", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 380000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué peut cracher du venin.

    Effet : Venin : Virulence 15. Effet : douleur, vomissement, œdème. Effet létal : la Santé baisse de 2 points par tour de jeu. Si le score de Santé tombe à 9, le malade est pris de vomissements (malus de −2). S'il tombe à 4 (malus de −5), le malade est cloué au sol par un œdème pulmonaire qui le fait étouffer.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/polymorphie.json b/packs/src/traits-demoniaques/polymorphie.json new file mode 100644 index 0000000..b3806d1 --- /dev/null +++ b/packs/src/traits-demoniaques/polymorphie.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemPolymorp00", + "_key": "!items!TraitDemPolymorp00", + "name": "Polymorphie", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 390000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué peut changer de forme et d'apparence.

    Effet : Le Démon peut changer de forme et d'apparence mais conserve sa taille, ses caractéristiques, et ses Traits spécifiques. La transformation prend deux tours pour devenir effective.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/puanteur.json b/packs/src/traits-demoniaques/puanteur.json new file mode 100644 index 0000000..242f031 --- /dev/null +++ b/packs/src/traits-demoniaques/puanteur.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemPuanteur00", + "_key": "!items!TraitDemPuanteur00", + "name": "Puanteur", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 490000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué émet une puanteur telle qu'il incommode son entourage au point de causer la nausée voire de faire vomir.

    Effet : Quiconque se trouve à moins de cinq mètres du Démon doit réussir un test de Trempe × 2 / 10 sous peine de subir un malus de −2 à toutes ses actions.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/puissance.json b/packs/src/traits-demoniaques/puissance.json new file mode 100644 index 0000000..14bf52b --- /dev/null +++ b/packs/src/traits-demoniaques/puissance.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemPuissanc00", + "_key": "!items!TraitDemPuissanc00", + "name": "Puissance", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 510000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué est particulièrement puissant.

    Effet : Sa Puissance est majorée de 3 points.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/queue.json b/packs/src/traits-demoniaques/queue.json new file mode 100644 index 0000000..cb9ea09 --- /dev/null +++ b/packs/src/traits-demoniaques/queue.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemQueue0053", + "_key": "!items!TraitDemQueue0053", + "name": "Queue", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 530000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué possède une queue suffisamment longue et puissante pour constituer une arme.

    Effet : Le Démon peut attaquer avec sa Queue une fois par tour en plus de son attaque normale. Dégâts : 1d4+6.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/rapidite.json b/packs/src/traits-demoniaques/rapidite.json new file mode 100644 index 0000000..7cdf354 --- /dev/null +++ b/packs/src/traits-demoniaques/rapidite.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemRapidite00", + "_key": "!items!TraitDemRapidite00", + "name": "Rapidité", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 400000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué est d'une rapidité surnaturelle.

    Effet : Il bénéficie d'un bonus de +10 à sa Vitesse et à son Initiative.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/reflexion.json b/packs/src/traits-demoniaques/reflexion.json new file mode 100644 index 0000000..c67857e --- /dev/null +++ b/packs/src/traits-demoniaques/reflexion.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemReflexio00", + "_key": "!items!TraitDemReflexio00", + "name": "Réflexion", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 410000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Toutes les Runes lancées contre le Démon sont réfléchies et leurs effets affectent le lanceur.

    Effet : Réservé aux Démons Majeurs. Toute Rune lancée contre le Démon affecte son lanceur à la place.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/regeneration.json b/packs/src/traits-demoniaques/regeneration.json new file mode 100644 index 0000000..296de1f --- /dev/null +++ b/packs/src/traits-demoniaques/regeneration.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemRegenera00", + "_key": "!items!TraitDemRegenera00", + "name": "Régénération", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 420000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon régénère ses blessures à chaque tour de jeu.

    Effet : Il régénère 2 points de dégâts létaux et 4 points de dégâts non-létaux à chaque tour.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/reptation-spectaculaire.json b/packs/src/traits-demoniaques/reptation-spectaculaire.json new file mode 100644 index 0000000..2ea4ac2 --- /dev/null +++ b/packs/src/traits-demoniaques/reptation-spectaculaire.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemReptatio00", + "_key": "!items!TraitDemReptatio00", + "name": "Reptation spectaculaire", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 200000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué possède la capacité de l'araignée et du lézard de grimper sur les murs.

    Effet : Il bénéficie d'un bonus de +10 pour toute action de Mouvements visant à se déplacer sur un mur.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/rugissement.json b/packs/src/traits-demoniaques/rugissement.json new file mode 100644 index 0000000..d781a26 --- /dev/null +++ b/packs/src/traits-demoniaques/rugissement.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemRugissem00", + "_key": "!items!TraitDemRugissem00", + "name": "Rugissement", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 430000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué peut rugir si fort qu'il étourdit ses adversaires.

    Effet : Ce rugissement se résout par un test d'opposition Puissance × 2 / Trempe × 2. Si la victime ne parvient pas à résister, elle est abasourdie pendant au moins un tour et doit réussir un nouveau test en opposition pour reprendre ses esprits.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/scintillement.json b/packs/src/traits-demoniaques/scintillement.json new file mode 100644 index 0000000..5feffcf --- /dev/null +++ b/packs/src/traits-demoniaques/scintillement.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemScintill00", + "_key": "!items!TraitDemScintill00", + "name": "Scintillement", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 440000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon possède une apparence mouvante et scintillante qui provoque la stupéfaction et la fascination chez ceux qui le regardent.

    Effet : Pour réussir à échapper à la fascination provoquée par le scintillement, la victime doit réussir tous les trois tours un test d'Extase (15).

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/spores.json b/packs/src/traits-demoniaques/spores.json new file mode 100644 index 0000000..de6d4f9 --- /dev/null +++ b/packs/src/traits-demoniaques/spores.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemSpores0048", + "_key": "!items!TraitDemSpores0048", + "name": "Spores", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 480000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon invoqué émet des nuages de spores qu'il peut projeter ou souffler sur son adversaire.

    Effet : Si l'adversaire inhale les spores, il doit réussir un test de Puissance × 2 / 15. En cas d'échec, des champignons et moisissures poussent dans ses poumons lui infligeant 2 points de dégâts par heure jusqu'à sa mort ou sa guérison.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/tatouages.json b/packs/src/traits-demoniaques/tatouages.json new file mode 100644 index 0000000..61405a0 --- /dev/null +++ b/packs/src/traits-demoniaques/tatouages.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemTatouage00", + "_key": "!items!TraitDemTatouage00", + "name": "Tatouages", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 370000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon possède des tatouages, colorés ou non, qui le rendent particulièrement fascinant à regarder et peuvent atteindre un remarquable niveau de détail.

    Effet : Pour réussir à échapper à la fascination provoquée par les tatouages, la victime doit réussir un test d'Extase (15).

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/tentacule.json b/packs/src/traits-demoniaques/tentacule.json new file mode 100644 index 0000000..771f5f9 --- /dev/null +++ b/packs/src/traits-demoniaques/tentacule.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemTentacul00", + "_key": "!items!TraitDemTentacul00", + "name": "Tentacule", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 540000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon possède une paire de tentacules qui lui permet d'attaquer une fois de plus par tour.

    Effet : Dégâts : 1d4+6. Permet une attaque supplémentaire par tour.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/tete-supplementaire.json b/packs/src/traits-demoniaques/tete-supplementaire.json new file mode 100644 index 0000000..6c73ea0 --- /dev/null +++ b/packs/src/traits-demoniaques/tete-supplementaire.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemTeteSupp00", + "_key": "!items!TraitDemTeteSupp00", + "name": "Tête supplémentaire", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 260000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon possède une deuxième tête pouvant diriger le reste du corps même si la première tête est endommagée.

    Effet : Le Démon peut continuer à agir normalement même si sa première tête est endommagée ou détruite.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/transmutation.json b/packs/src/traits-demoniaques/transmutation.json new file mode 100644 index 0000000..3da712d --- /dev/null +++ b/packs/src/traits-demoniaques/transmutation.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemTransmut00", + "_key": "!items!TraitDemTransmut00", + "name": "Transmutation", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 580000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon peut changer ce qu'il touche en un matériau à définir (cristal, poussière, or, eau, vin…). Ses victimes peuvent résister à son pouvoir de transmutation.

    Effet : Pour résister, la cible doit réussir un test de Puissance × 2 / 20. Si elle échoue, la partie touchée se transforme et la victime subit 5 points de dégâts létaux.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/traumatisme.json b/packs/src/traits-demoniaques/traumatisme.json new file mode 100644 index 0000000..8bc36c1 --- /dev/null +++ b/packs/src/traits-demoniaques/traumatisme.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemTraumati00", + "_key": "!items!TraitDemTraumati00", + "name": "Traumatisme", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 150000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Lorsqu'on le blesse, le Démon invoqué répercute la souffrance qu'il ressent sur tous les êtres vivants présents dans un rayon de cinq mètres.

    Effet : Chaque être vivant présent dans un rayon de cinq mètres doit effectuer un test de Trempe × 2 / 15. S'il échoue, il perd un nombre de points d'Âme égal à la moitié des dégâts subis par le Démon.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/trempe.json b/packs/src/traits-demoniaques/trempe.json new file mode 100644 index 0000000..84dfe37 --- /dev/null +++ b/packs/src/traits-demoniaques/trempe.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemTrempe0057", + "_key": "!items!TraitDemTrempe0057", + "name": "Trempe", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 570000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon possède une trempe hors du commun.

    Effet : Sa Trempe est majorée de 3 points.

    " + } +} \ No newline at end of file diff --git a/packs/src/traits-demoniaques/vampirisme.json b/packs/src/traits-demoniaques/vampirisme.json new file mode 100644 index 0000000..908a119 --- /dev/null +++ b/packs/src/traits-demoniaques/vampirisme.json @@ -0,0 +1,18 @@ +{ + "_id": "TraitDemVampiris00", + "_key": "!items!TraitDemVampiris00", + "name": "Vampirisme", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 590000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "typeCapacite": "demoniaque", + "description": "

    Description : Le Démon est capable de voler de l'énergie vitale à son adversaire à chaque coup qu'il lui porte.

    Effet : À chaque attaque qu'elle subit, la cible du Démon perd temporairement, en plus de ses points de Santé, un point de Puissance. Ses points de Puissance reviennent à raison d'un point par heure dès lors que la victime s'est éloignée d'au moins une centaine de mètres du Démon.

    " + } +} \ No newline at end of file diff --git a/packs/tables/000397.log b/packs/tables/000397.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/tables/CURRENT b/packs/tables/CURRENT index 07a4d2c..e889b4d 100644 --- a/packs/tables/CURRENT +++ b/packs/tables/CURRENT @@ -1 +1 @@ -MANIFEST-000367 +MANIFEST-000395 diff --git a/packs/tables/LOG b/packs/tables/LOG index eecbc79..d92ff59 100644 --- a/packs/tables/LOG +++ b/packs/tables/LOG @@ -1,7 +1,7 @@ -2026/05/01-23:51:24.350949 7fd754fed6c0 Recovering log #365 -2026/05/01-23:51:24.393625 7fd754fed6c0 Delete type=3 #363 -2026/05/01-23:51:24.393700 7fd754fed6c0 Delete type=0 #365 -2026/05/02-08:26:03.719193 7fd7477fe6c0 Level-0 table #370: started -2026/05/02-08:26:03.719233 7fd7477fe6c0 Level-0 table #370: 0 bytes OK -2026/05/02-08:26:03.753130 7fd7477fe6c0 Delete type=0 #368 -2026/05/02-08:26:03.825020 7fd7477fe6c0 Manual compaction at level-0 from '!tables!zV2oJy8JZE0nngRY' @ 72057594037927935 : 1 .. '!tables.results!zV2oJy8JZE0nngRY.wTMX1TbxljHmHImp' @ 0 : 0; will stop at (end) +2026/05/02-22:17:12.761060 7fd7557ee6c0 Recovering log #393 +2026/05/02-22:17:12.771661 7fd7557ee6c0 Delete type=3 #391 +2026/05/02-22:17:12.771745 7fd7557ee6c0 Delete type=0 #393 +2026/05/02-23:14:30.977639 7fd7477fe6c0 Level-0 table #398: started +2026/05/02-23:14:30.977672 7fd7477fe6c0 Level-0 table #398: 0 bytes OK +2026/05/02-23:14:30.987562 7fd7477fe6c0 Delete type=0 #396 +2026/05/02-23:14:30.999805 7fd7477fe6c0 Manual compaction at level-0 from '!tables!zV2oJy8JZE0nngRY' @ 72057594037927935 : 1 .. '!tables.results!zV2oJy8JZE0nngRY.wTMX1TbxljHmHImp' @ 0 : 0; will stop at (end) diff --git a/packs/tables/LOG.old b/packs/tables/LOG.old index b24d71f..a973ee7 100644 --- a/packs/tables/LOG.old +++ b/packs/tables/LOG.old @@ -1,7 +1,7 @@ -2026/05/01-23:45:25.998382 7fd747fff6c0 Recovering log #361 -2026/05/01-23:45:26.008324 7fd747fff6c0 Delete type=3 #359 -2026/05/01-23:45:26.008386 7fd747fff6c0 Delete type=0 #361 -2026/05/01-23:51:18.334705 7fd7477fe6c0 Level-0 table #366: started -2026/05/01-23:51:18.334736 7fd7477fe6c0 Level-0 table #366: 0 bytes OK -2026/05/01-23:51:18.377025 7fd7477fe6c0 Delete type=0 #364 -2026/05/01-23:51:18.500999 7fd7477fe6c0 Manual compaction at level-0 from '!tables!zV2oJy8JZE0nngRY' @ 72057594037927935 : 1 .. '!tables.results!zV2oJy8JZE0nngRY.wTMX1TbxljHmHImp' @ 0 : 0; will stop at (end) +2026/05/02-10:42:40.117395 7fd7557ee6c0 Recovering log #389 +2026/05/02-10:42:40.128393 7fd7557ee6c0 Delete type=3 #387 +2026/05/02-10:42:40.128483 7fd7557ee6c0 Delete type=0 #389 +2026/05/02-10:55:36.209107 7fd7477fe6c0 Level-0 table #394: started +2026/05/02-10:55:36.209133 7fd7477fe6c0 Level-0 table #394: 0 bytes OK +2026/05/02-10:55:36.215251 7fd7477fe6c0 Delete type=0 #392 +2026/05/02-10:55:36.228665 7fd7477fe6c0 Manual compaction at level-0 from '!tables!zV2oJy8JZE0nngRY' @ 72057594037927935 : 1 .. '!tables.results!zV2oJy8JZE0nngRY.wTMX1TbxljHmHImp' @ 0 : 0; will stop at (end) diff --git a/packs/tables/MANIFEST-000367 b/packs/tables/MANIFEST-000395 similarity index 84% rename from packs/tables/MANIFEST-000367 rename to packs/tables/MANIFEST-000395 index ca62701025b274b50fd41dfd366677feaa21195f..38879b4aee56711fa2918706d7ada90af04fd12d 100644 GIT binary patch delta 41 rcmaFF_=s`B0j0x-e%Ns_Ff#Qpb22dZGP8sj=wwNO1bRUN{XhW#4p9mB delta 41 scmaFF_=s`B0i|`3iQHTaj7%SxI2o8fGO>i%K0dDs68H!b_zV;P01o>LZvX%Q diff --git a/packs/tendances/000397.log b/packs/tendances/000397.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/tendances/CURRENT b/packs/tendances/CURRENT index 07a4d2c..e889b4d 100644 --- a/packs/tendances/CURRENT +++ b/packs/tendances/CURRENT @@ -1 +1 @@ -MANIFEST-000367 +MANIFEST-000395 diff --git a/packs/tendances/LOG b/packs/tendances/LOG index 8861076..8b66e1e 100644 --- a/packs/tendances/LOG +++ b/packs/tendances/LOG @@ -1,7 +1,7 @@ -2026/05/01-23:51:24.177981 7fd7557ee6c0 Recovering log #365 -2026/05/01-23:51:24.237144 7fd7557ee6c0 Delete type=3 #363 -2026/05/01-23:51:24.237228 7fd7557ee6c0 Delete type=0 #365 -2026/05/02-08:26:03.615020 7fd7477fe6c0 Level-0 table #370: started -2026/05/02-08:26:03.615059 7fd7477fe6c0 Level-0 table #370: 0 bytes OK -2026/05/02-08:26:03.649039 7fd7477fe6c0 Delete type=0 #368 -2026/05/02-08:26:03.719145 7fd7477fe6c0 Manual compaction at level-0 from '!items!0CYP1JpZu9mst5tK' @ 72057594037927935 : 1 .. '!items!zhPPsmTtLv7cyNHJ' @ 0 : 0; will stop at (end) +2026/05/02-22:17:12.721740 7fd755fef6c0 Recovering log #393 +2026/05/02-22:17:12.732234 7fd755fef6c0 Delete type=3 #391 +2026/05/02-22:17:12.732326 7fd755fef6c0 Delete type=0 #393 +2026/05/02-23:14:30.943643 7fd7477fe6c0 Level-0 table #398: started +2026/05/02-23:14:30.943677 7fd7477fe6c0 Level-0 table #398: 0 bytes OK +2026/05/02-23:14:30.954546 7fd7477fe6c0 Delete type=0 #396 +2026/05/02-23:14:30.966486 7fd7477fe6c0 Manual compaction at level-0 from '!items!0CYP1JpZu9mst5tK' @ 72057594037927935 : 1 .. '!items!zhPPsmTtLv7cyNHJ' @ 0 : 0; will stop at (end) diff --git a/packs/tendances/LOG.old b/packs/tendances/LOG.old index 9473962..8d6301e 100644 --- a/packs/tendances/LOG.old +++ b/packs/tendances/LOG.old @@ -1,7 +1,7 @@ -2026/05/01-23:45:25.955487 7fd754fed6c0 Recovering log #361 -2026/05/01-23:45:25.965532 7fd754fed6c0 Delete type=3 #359 -2026/05/01-23:45:25.965608 7fd754fed6c0 Delete type=0 #361 -2026/05/01-23:51:18.213336 7fd7477fe6c0 Level-0 table #366: started -2026/05/01-23:51:18.213372 7fd7477fe6c0 Level-0 table #366: 0 bytes OK -2026/05/01-23:51:18.248049 7fd7477fe6c0 Delete type=0 #364 -2026/05/01-23:51:18.334596 7fd7477fe6c0 Manual compaction at level-0 from '!items!0CYP1JpZu9mst5tK' @ 72057594037927935 : 1 .. '!items!zhPPsmTtLv7cyNHJ' @ 0 : 0; will stop at (end) +2026/05/02-10:42:40.080036 7fd755fef6c0 Recovering log #389 +2026/05/02-10:42:40.090287 7fd755fef6c0 Delete type=3 #387 +2026/05/02-10:42:40.090373 7fd755fef6c0 Delete type=0 #389 +2026/05/02-10:55:36.189179 7fd7477fe6c0 Level-0 table #394: started +2026/05/02-10:55:36.189217 7fd7477fe6c0 Level-0 table #394: 0 bytes OK +2026/05/02-10:55:36.195907 7fd7477fe6c0 Delete type=0 #392 +2026/05/02-10:55:36.202406 7fd7477fe6c0 Manual compaction at level-0 from '!items!0CYP1JpZu9mst5tK' @ 72057594037927935 : 1 .. '!items!zhPPsmTtLv7cyNHJ' @ 0 : 0; will stop at (end) diff --git a/packs/tendances/MANIFEST-000367 b/packs/tendances/MANIFEST-000395 similarity index 72% rename from packs/tendances/MANIFEST-000367 rename to packs/tendances/MANIFEST-000395 index bc4c40e4e5ad2232b5c92b1d4010f03473b0d8b9..2811670204b75bc05f178c597d86696c54fbab91 100644 GIT binary patch delta 43 scmdnMxPfs(kBXkE&RlK=My4KSP6p;)W|ljQ)6K7jf<$^jBK;r{0PM2~?f?J) delta 43 tcmdnMxPfs(kBZz~x4+yBj7%SxI2o8fGO^rYY|r1l6(sTzB=Q*~0su3h4GI7N diff --git a/packs/traits-chaotiques/000397.log b/packs/traits-chaotiques/000397.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/traits-chaotiques/CURRENT b/packs/traits-chaotiques/CURRENT index 07a4d2c..e889b4d 100644 --- a/packs/traits-chaotiques/CURRENT +++ b/packs/traits-chaotiques/CURRENT @@ -1 +1 @@ -MANIFEST-000367 +MANIFEST-000395 diff --git a/packs/traits-chaotiques/LOG b/packs/traits-chaotiques/LOG index 72ce6d6..94bf12b 100644 --- a/packs/traits-chaotiques/LOG +++ b/packs/traits-chaotiques/LOG @@ -1,7 +1,7 @@ -2026/05/01-23:51:24.240100 7fd754fed6c0 Recovering log #365 -2026/05/01-23:51:24.292935 7fd754fed6c0 Delete type=3 #363 -2026/05/01-23:51:24.293037 7fd754fed6c0 Delete type=0 #365 -2026/05/02-08:26:03.649175 7fd7477fe6c0 Level-0 table #370: started -2026/05/02-08:26:03.649213 7fd7477fe6c0 Level-0 table #370: 0 bytes OK -2026/05/02-08:26:03.684649 7fd7477fe6c0 Delete type=0 #368 -2026/05/02-08:26:03.719173 7fd7477fe6c0 Manual compaction at level-0 from '!items!3J0HKjcVtBT39BiR' @ 72057594037927935 : 1 .. '!items!zeOtWz6oscp8Su5l' @ 0 : 0; will stop at (end) +2026/05/02-22:17:12.735316 7fd7557ee6c0 Recovering log #393 +2026/05/02-22:17:12.745658 7fd7557ee6c0 Delete type=3 #391 +2026/05/02-22:17:12.745736 7fd7557ee6c0 Delete type=0 #393 +2026/05/02-23:14:30.954826 7fd7477fe6c0 Level-0 table #398: started +2026/05/02-23:14:30.954874 7fd7477fe6c0 Level-0 table #398: 0 bytes OK +2026/05/02-23:14:30.966320 7fd7477fe6c0 Delete type=0 #396 +2026/05/02-23:14:30.987842 7fd7477fe6c0 Manual compaction at level-0 from '!items!3J0HKjcVtBT39BiR' @ 72057594037927935 : 1 .. '!items!zeOtWz6oscp8Su5l' @ 0 : 0; will stop at (end) diff --git a/packs/traits-chaotiques/LOG.old b/packs/traits-chaotiques/LOG.old index b8ab3dd..3f80e63 100644 --- a/packs/traits-chaotiques/LOG.old +++ b/packs/traits-chaotiques/LOG.old @@ -1,7 +1,7 @@ -2026/05/01-23:45:25.968745 7fd747fff6c0 Recovering log #361 -2026/05/01-23:45:25.979459 7fd747fff6c0 Delete type=3 #359 -2026/05/01-23:45:25.979545 7fd747fff6c0 Delete type=0 #361 -2026/05/01-23:51:18.248176 7fd7477fe6c0 Level-0 table #366: started -2026/05/01-23:51:18.248208 7fd7477fe6c0 Level-0 table #366: 0 bytes OK -2026/05/01-23:51:18.290348 7fd7477fe6c0 Delete type=0 #364 -2026/05/01-23:51:18.334613 7fd7477fe6c0 Manual compaction at level-0 from '!items!3J0HKjcVtBT39BiR' @ 72057594037927935 : 1 .. '!items!zeOtWz6oscp8Su5l' @ 0 : 0; will stop at (end) +2026/05/02-10:42:40.092228 7fd7557ee6c0 Recovering log #389 +2026/05/02-10:42:40.102343 7fd7557ee6c0 Delete type=3 #387 +2026/05/02-10:42:40.102444 7fd7557ee6c0 Delete type=0 #389 +2026/05/02-10:55:36.196160 7fd7477fe6c0 Level-0 table #394: started +2026/05/02-10:55:36.196194 7fd7477fe6c0 Level-0 table #394: 0 bytes OK +2026/05/02-10:55:36.202280 7fd7477fe6c0 Delete type=0 #392 +2026/05/02-10:55:36.209093 7fd7477fe6c0 Manual compaction at level-0 from '!items!3J0HKjcVtBT39BiR' @ 72057594037927935 : 1 .. '!items!zeOtWz6oscp8Su5l' @ 0 : 0; will stop at (end) diff --git a/packs/traits-chaotiques/MANIFEST-000367 b/packs/traits-chaotiques/MANIFEST-000395 similarity index 73% rename from packs/traits-chaotiques/MANIFEST-000367 rename to packs/traits-chaotiques/MANIFEST-000395 index 06f6a285ee6ed5532840ca95ed6816616b8d0b9a..c2ca1a2d9ef0ea0ddffd39501a33008f7b0db1eb 100644 GIT binary patch delta 41 rcmZ3>xR!B3x6(G}vmsmzj7&YuoD9sp%q#(}JEQ-A1bRUN{XhW#_R|U^ delta 41 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 XzQoh?#~uIue`kMr=?{yn)86_o4kkUW literal 0 HcmV?d00001 diff --git a/packs/traits-demoniaques/traits-demoniaques/CURRENT b/packs/traits-demoniaques/traits-demoniaques/CURRENT new file mode 100644 index 0000000..e60e154 --- /dev/null +++ b/packs/traits-demoniaques/traits-demoniaques/CURRENT @@ -0,0 +1 @@ +MANIFEST-000021 diff --git a/packs/traits-demoniaques/traits-demoniaques/LOCK b/packs/traits-demoniaques/traits-demoniaques/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/packs/traits-demoniaques/traits-demoniaques/LOG b/packs/traits-demoniaques/traits-demoniaques/LOG new file mode 100644 index 0000000..6e11bd3 --- /dev/null +++ b/packs/traits-demoniaques/traits-demoniaques/LOG @@ -0,0 +1,15 @@ +2026/05/02-22:17:12.577831 7fd7557ee6c0 Recovering log #18 +2026/05/02-22:17:12.588179 7fd7557ee6c0 Delete type=3 #16 +2026/05/02-22:17:12.588250 7fd7557ee6c0 Delete type=0 #18 +2026/05/02-23:14:30.759712 7fd7477fe6c0 Level-0 table #24: started +2026/05/02-23:14:30.766956 7fd7477fe6c0 Level-0 table #24: 15781 bytes OK +2026/05/02-23:14:30.778915 7fd7477fe6c0 Delete type=0 #22 +2026/05/02-23:14:30.796671 7fd7477fe6c0 Manual compaction at level-0 from '!items!TraitDemAbsorpti00' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end) +2026/05/02-23:14:30.814564 7fd7477fe6c0 Manual compaction at level-1 from '!items!TraitDemAbsorpti00' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 239 : 1 +2026/05/02-23:14:30.814573 7fd7477fe6c0 Compacting 1@1 + 1@2 files +2026/05/02-23:14:30.819791 7fd7477fe6c0 Generated table #25@1: 61 keys, 14498 bytes +2026/05/02-23:14:30.819835 7fd7477fe6c0 Compacted 1@1 + 1@2 files => 14498 bytes +2026/05/02-23:14:30.829290 7fd7477fe6c0 compacted to: files[ 0 0 1 0 0 0 0 ] +2026/05/02-23:14:30.829412 7fd7477fe6c0 Delete type=2 #20 +2026/05/02-23:14:30.830076 7fd7477fe6c0 Delete type=2 #24 +2026/05/02-23:14:30.854673 7fd7477fe6c0 Manual compaction at level-1 from '!items!null' @ 239 : 1 .. '!items!null' @ 0 : 0; will stop at (end) diff --git a/packs/traits-demoniaques/traits-demoniaques/LOG.old b/packs/traits-demoniaques/traits-demoniaques/LOG.old new file mode 100644 index 0000000..376af7a --- /dev/null +++ b/packs/traits-demoniaques/traits-demoniaques/LOG.old @@ -0,0 +1,15 @@ +2026/05/02-10:42:39.934277 7fd755fef6c0 Recovering log #13 +2026/05/02-10:42:39.944523 7fd755fef6c0 Delete type=3 #11 +2026/05/02-10:42:39.944600 7fd755fef6c0 Delete type=0 #13 +2026/05/02-10:55:36.074017 7fd7477fe6c0 Level-0 table #19: started +2026/05/02-10:55:36.077422 7fd7477fe6c0 Level-0 table #19: 15783 bytes OK +2026/05/02-10:55:36.083525 7fd7477fe6c0 Delete type=0 #17 +2026/05/02-10:55:36.102042 7fd7477fe6c0 Manual compaction at level-0 from '!items!TraitDemAbsorpti00' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end) +2026/05/02-10:55:36.113168 7fd7477fe6c0 Manual compaction at level-1 from '!items!TraitDemAbsorpti00' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 180 : 1 +2026/05/02-10:55:36.113179 7fd7477fe6c0 Compacting 1@1 + 1@2 files +2026/05/02-10:55:36.116781 7fd7477fe6c0 Generated table #20@1: 61 keys, 14495 bytes +2026/05/02-10:55:36.116812 7fd7477fe6c0 Compacted 1@1 + 1@2 files => 14495 bytes +2026/05/02-10:55:36.123073 7fd7477fe6c0 compacted to: files[ 0 0 1 0 0 0 0 ] +2026/05/02-10:55:36.123182 7fd7477fe6c0 Delete type=2 #15 +2026/05/02-10:55:36.123315 7fd7477fe6c0 Delete type=2 #19 +2026/05/02-10:55:36.137128 7fd7477fe6c0 Manual compaction at level-1 from '!items!null' @ 180 : 1 .. '!items!null' @ 0 : 0; will stop at (end) diff --git a/packs/traits-demoniaques/traits-demoniaques/MANIFEST-000021 b/packs/traits-demoniaques/traits-demoniaques/MANIFEST-000021 new file mode 100644 index 0000000000000000000000000000000000000000..89e9bb2e87c3054b8df79c446bde3c5e314ca1cd GIT binary patch literal 296 zcmZop$|}rdU}TiaNi9pwNlDUksw_z@&n!-L&d)7KEJ`fNFJfgBR?I9(%`H~UE6vGa z+`<3`>`Wr_3l*UfAw`LqB`&GCj!DJ&MFl091_q3b5M?M@-$BHpIAvaNGB7fUaWXKA zv%F)xqT7Go49FJ;@+DbTGO;sCEUiY-s0lF*MeIGqFpWK)MhQ^OQb5gUu7#>%W0YWH P5@BbOTtupyp;iL`igQT= literal 0 HcmV?d00001 diff --git a/styles/mournblade.css b/styles/mournblade.css index 5228f6e..61e5cfb 100644 --- a/styles/mournblade.css +++ b/styles/mournblade.css @@ -2096,6 +2096,21 @@ li { .mournblade-chat-result .result-effects .effect-item:last-child { margin-bottom: 0; } +.mournblade-chat-result .result-effects .effect-item.next-steps { + background: rgba(200, 220, 255, 0.5); + border-left-color: #2255aa; +} +.mournblade-chat-result .result-effects .effect-item.next-steps ol { + margin: 6px 0 0 0; + padding-left: 18px; +} +.mournblade-chat-result .result-effects .effect-item.next-steps ol li { + margin-bottom: 4px; + font-size: 0.82rem; +} +.mournblade-chat-result .result-effects .effect-item.next-steps i { + color: #2255aa; +} .mournblade-chat-result .result-effects .damage-buttons { display: flex; flex-direction: column; @@ -2630,6 +2645,300 @@ li { flex-shrink: 0; accent-color: #c0392b; } +.sortilege-dialog .actor-header, +.potion-dialog .actor-header, +.invocation-dialog .actor-header { + display: flex; + align-items: center; + gap: 10px; + margin-bottom: 10px; + padding: 6px 10px; + background: linear-gradient(135deg, #1a0030 0%, #3a0060 100%); + border: 1px solid #6a008a; + border-radius: 4px; +} +.sortilege-dialog .actor-header .actor-portrait, +.potion-dialog .actor-header .actor-portrait, +.invocation-dialog .actor-header .actor-portrait { + width: 44px; + height: 44px; + border-radius: 4px; + border: 2px solid #9900cc; + object-fit: cover; + flex-shrink: 0; +} +.sortilege-dialog .actor-header h3, +.potion-dialog .actor-header h3, +.invocation-dialog .actor-header h3 { + font-weight: bold; + font-size: 1.05rem; + color: #ffffff; + text-shadow: 0 1px 3px rgba(0, 0, 0, 0.9); + margin: 0; +} +.sortilege-dialog .actor-header .dialog-subtitle, +.potion-dialog .actor-header .dialog-subtitle, +.invocation-dialog .actor-header .dialog-subtitle { + font-size: 0.85rem; + color: #ddb0ff; +} +.sortilege-dialog .actor-header .dialog-subtitle i, +.potion-dialog .actor-header .dialog-subtitle i, +.invocation-dialog .actor-header .dialog-subtitle i { + margin-right: 4px; +} +.sortilege-dialog .actor-header .actor-info, +.potion-dialog .actor-header .actor-info, +.invocation-dialog .actor-header .actor-info { + display: flex; + flex-direction: column; + gap: 2px; +} +.sortilege-dialog .invoc-warning-box, +.potion-dialog .invoc-warning-box, +.invocation-dialog .invoc-warning-box { + background: rgba(180, 20, 20, 0.15); + border: 1px solid #8b0000; + border-left: 4px solid #c0392b; + border-radius: 4px; + padding: 7px 10px; + margin-bottom: 8px; + font-size: 0.85rem; + color: #6a0000; +} +.sortilege-dialog .invoc-warning-box i, +.potion-dialog .invoc-warning-box i, +.invocation-dialog .invoc-warning-box i { + margin-right: 6px; + color: #c0392b; +} +.sortilege-dialog .invoc-warning-box strong, +.potion-dialog .invoc-warning-box strong, +.invocation-dialog .invoc-warning-box strong { + color: #8b0000; +} +.sortilege-dialog .invoc-warning-box div, +.potion-dialog .invoc-warning-box div, +.invocation-dialog .invoc-warning-box div { + margin-top: 3px; +} +.sortilege-dialog .invoc-comp-summary, +.potion-dialog .invoc-comp-summary, +.invocation-dialog .invoc-comp-summary { + display: flex; + flex-wrap: wrap; + gap: 6px; + margin-bottom: 10px; +} +.sortilege-dialog .invoc-comp-summary .comp-badge, +.potion-dialog .invoc-comp-summary .comp-badge, +.invocation-dialog .invoc-comp-summary .comp-badge { + background: rgba(60, 20, 80, 0.12); + border: 1px solid rgba(120, 40, 160, 0.4); + border-radius: 12px; + padding: 3px 10px; + font-size: 0.82rem; + color: #3a0060; +} +.sortilege-dialog .invoc-comp-summary .comp-badge.comp-missing, +.potion-dialog .invoc-comp-summary .comp-badge.comp-missing, +.invocation-dialog .invoc-comp-summary .comp-badge.comp-missing { + background: rgba(120, 0, 0, 0.08); + border-color: rgba(180, 0, 0, 0.3); + color: #800000; +} +.sortilege-dialog .invoc-comp-summary .comp-badge.comp-missing em, +.potion-dialog .invoc-comp-summary .comp-badge.comp-missing em, +.invocation-dialog .invoc-comp-summary .comp-badge.comp-missing em { + font-style: italic; + opacity: 0.7; +} +.sortilege-dialog .invoc-comp-summary .comp-badge strong, +.potion-dialog .invoc-comp-summary .comp-badge strong, +.invocation-dialog .invoc-comp-summary .comp-badge strong { + color: #2a004a; + font-weight: bold; +} +.sortilege-dialog .invoc-seuil-calculator, +.potion-dialog .invoc-seuil-calculator, +.invocation-dialog .invoc-seuil-calculator { + background: rgba(60, 10, 80, 0.07); + border: 1px solid rgba(120, 40, 160, 0.35); + border-radius: 5px; + padding: 10px 12px; + margin-bottom: 10px; +} +.sortilege-dialog .invoc-seuil-calculator .invoc-section-title, +.potion-dialog .invoc-seuil-calculator .invoc-section-title, +.invocation-dialog .invoc-seuil-calculator .invoc-section-title { + font-size: 0.88rem; + font-weight: bold; + color: #3a0060; + margin: 0 0 8px 0; + text-transform: uppercase; + letter-spacing: 0.5px; +} +.sortilege-dialog .invoc-seuil-calculator .invoc-section-title i, +.potion-dialog .invoc-seuil-calculator .invoc-section-title i, +.invocation-dialog .invoc-seuil-calculator .invoc-section-title i { + margin-right: 5px; +} +.sortilege-dialog .invoc-seuil-calculator .invoc-criteria-grid, +.potion-dialog .invoc-seuil-calculator .invoc-criteria-grid, +.invocation-dialog .invoc-seuil-calculator .invoc-criteria-grid { + display: grid; + grid-template-columns: 1fr auto; + gap: 5px 10px; + align-items: center; + margin-bottom: 10px; +} +.sortilege-dialog .invoc-seuil-calculator .invoc-criteria-grid label, +.potion-dialog .invoc-seuil-calculator .invoc-criteria-grid label, +.invocation-dialog .invoc-seuil-calculator .invoc-criteria-grid label { + font-size: 0.83rem; + color: #3a1a0a; + font-weight: bold; + padding: 1px 0; +} +.sortilege-dialog .invoc-seuil-calculator .invoc-criteria-grid select, +.potion-dialog .invoc-seuil-calculator .invoc-criteria-grid select, +.invocation-dialog .invoc-seuil-calculator .invoc-criteria-grid select, +.sortilege-dialog .invoc-seuil-calculator .invoc-criteria-grid input[type="number"], +.potion-dialog .invoc-seuil-calculator .invoc-criteria-grid input[type="number"], +.invocation-dialog .invoc-seuil-calculator .invoc-criteria-grid input[type="number"] { + background: #3a1a08; + border: 1px solid #8b4513; + border-radius: 3px; + padding: 4px 24px 4px 8px; + color: #f0e8d8; + font-family: CentaurMT, serif; + font-size: 0.83rem; + cursor: pointer; + min-width: 200px; + appearance: none; + -webkit-appearance: none; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='7' viewBox='0 0 10 7'%3E%3Cpath fill='%23ffd070' d='M5 7L0 0h10z'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: right 7px center; + background-size: 9px 6px; +} +.sortilege-dialog .invoc-seuil-calculator .invoc-criteria-grid select option, +.potion-dialog .invoc-seuil-calculator .invoc-criteria-grid select option, +.invocation-dialog .invoc-seuil-calculator .invoc-criteria-grid select option, +.sortilege-dialog .invoc-seuil-calculator .invoc-criteria-grid input[type="number"] option, +.potion-dialog .invoc-seuil-calculator .invoc-criteria-grid input[type="number"] option, +.invocation-dialog .invoc-seuil-calculator .invoc-criteria-grid input[type="number"] option { + background: #1a0e06; + color: #f0e8d8; +} +.sortilege-dialog .invoc-seuil-calculator .invoc-criteria-grid input[type="number"], +.potion-dialog .invoc-seuil-calculator .invoc-criteria-grid input[type="number"], +.invocation-dialog .invoc-seuil-calculator .invoc-criteria-grid input[type="number"] { + min-width: 80px; + max-width: 80px; + text-align: center; + background-image: none; + padding: 4px 8px; +} +.sortilege-dialog .invoc-seuil-calculator .invoc-seuil-total-row, +.potion-dialog .invoc-seuil-calculator .invoc-seuil-total-row, +.invocation-dialog .invoc-seuil-calculator .invoc-seuil-total-row { + display: flex; + align-items: center; + gap: 10px; + padding: 6px 8px; + background: linear-gradient(135deg, #2a005a 0%, #4a0080 100%); + border: 1px solid #9900cc; + border-radius: 4px; +} +.sortilege-dialog .invoc-seuil-calculator .invoc-seuil-total-row .invoc-seuil-label, +.potion-dialog .invoc-seuil-calculator .invoc-seuil-total-row .invoc-seuil-label, +.invocation-dialog .invoc-seuil-calculator .invoc-seuil-total-row .invoc-seuil-label { + flex: 1; + font-weight: bold; + font-size: 0.9rem; + color: #ddb0ff; +} +.sortilege-dialog .invoc-seuil-calculator .invoc-seuil-total-row .invoc-seuil-total, +.potion-dialog .invoc-seuil-calculator .invoc-seuil-total-row .invoc-seuil-total, +.invocation-dialog .invoc-seuil-calculator .invoc-seuil-total-row .invoc-seuil-total { + font-size: 1.3rem; + font-weight: bold; + color: #ffd700; + text-shadow: 0 0 8px rgba(255, 200, 0, 0.6); + min-width: 32px; + text-align: center; +} +.sortilege-dialog .invoc-form-grid, +.potion-dialog .invoc-form-grid, +.invocation-dialog .invoc-form-grid { + display: flex; + flex-direction: column; + gap: 5px; +} +.sortilege-dialog .invoc-form-grid .invoc-field, +.potion-dialog .invoc-form-grid .invoc-field, +.invocation-dialog .invoc-form-grid .invoc-field { + display: flex; + align-items: center; + gap: 8px; + padding: 4px 6px; + border-bottom: 1px solid rgba(139, 69, 19, 0.2); +} +.sortilege-dialog .invoc-form-grid .invoc-field label, +.potion-dialog .invoc-form-grid .invoc-field label, +.invocation-dialog .invoc-form-grid .invoc-field label { + flex: 1; + font-weight: bold; + font-size: 0.87rem; + color: #3a1a0a; +} +.sortilege-dialog .invoc-form-grid .invoc-field .invoc-value-highlight, +.potion-dialog .invoc-form-grid .invoc-field .invoc-value-highlight, +.invocation-dialog .invoc-form-grid .invoc-field .invoc-value-highlight { + font-size: 1.1rem; + font-weight: bold; + color: #6a0080; + min-width: 30px; + text-align: center; +} +.sortilege-dialog .invoc-form-grid .invoc-field .invoc-hint, +.potion-dialog .invoc-form-grid .invoc-field .invoc-hint, +.invocation-dialog .invoc-form-grid .invoc-field .invoc-hint { + font-size: 0.78rem; + color: #5a3a0a; + font-style: italic; +} +.sortilege-dialog .invoc-form-grid .invoc-field .invoc-hint strong, +.potion-dialog .invoc-form-grid .invoc-field .invoc-hint strong, +.invocation-dialog .invoc-form-grid .invoc-field .invoc-hint strong { + color: #8b0000; + font-weight: bold; +} +.sortilege-dialog .invoc-form-grid .invoc-field select, +.potion-dialog .invoc-form-grid .invoc-field select, +.invocation-dialog .invoc-form-grid .invoc-field select { + background: #3a1a08; + border: 1px solid #8b4513; + border-radius: 3px; + padding: 4px 24px 4px 8px; + color: #f0e8d8; + font-family: CentaurMT, serif; + font-size: 0.85rem; + cursor: pointer; + appearance: none; + -webkit-appearance: none; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='7' viewBox='0 0 10 7'%3E%3Cpath fill='%23ffd070' d='M5 7L0 0h10z'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: right 7px center; + background-size: 9px 6px; +} +.sortilege-dialog .invoc-form-grid .invoc-field select option, +.potion-dialog .invoc-form-grid .invoc-field select option, +.invocation-dialog .invoc-form-grid .invoc-field select option { + background: #1a0e06; + color: #f0e8d8; +} .mournblade-chat-result .sortilege-runes-summary { margin-top: 8px; border-top: 1px solid rgba(139, 69, 19, 0.3); @@ -3105,6 +3414,40 @@ li { gap: 0.4rem; align-items: center; } +/* Enchantement de la Loi */ +.enchantement-section { + margin-top: 0.6rem; + padding: 0.5rem 0.6rem; + background: rgba(255, 215, 0, 0.05); + border: 1px solid rgba(255, 215, 0, 0.3); + border-radius: 4px; +} +.enchantement-section .section-title-small { + font-size: 0.9rem; + margin: 0 0 0.4rem 0; + color: #a07800; + font-weight: bold; + display: flex; + align-items: center; + gap: 0.3rem; + border-bottom: 1px solid rgba(255, 215, 0, 0.2); + padding-bottom: 0.2rem; +} +.enchantement-section .enchant-badge { + display: inline-block; + background: gold; + color: #333; + font-size: 0.7rem; + padding: 0.1rem 0.4rem; + border-radius: 8px; + margin-left: 0.5rem; +} +.enchantement-section .enchant-none { + color: #888; + font-size: 0.85rem; + margin: 0; + padding: 0.2rem 0; +} /* ==================== Actor Sheet Styles ==================== */ .fvtt-mournblade.actor { background: url("../assets/ui/pc_sheet_bg.webp") repeat; @@ -3385,8 +3728,8 @@ li { background: rgba(74, 124, 89, 0.2); } .fvtt-mournblade.actor .sheet-body .item-controls-fixed { - min-width: 3.2rem; - max-width: 3.2rem; + min-width: 5rem; + max-width: 5rem; } .fvtt-mournblade.actor .sheet-body h4, .fvtt-mournblade.actor .sheet-body h3, @@ -3847,5 +4190,26 @@ li { transform: translateY(1px); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4); } +.mournblade-chat-result .detail-row .rune-mini-img { + width: 18px; + height: 18px; + border-radius: 2px; + object-fit: cover; + flex-shrink: 0; + border: 1px solid rgba(139, 69, 19, 0.4); + vertical-align: middle; + margin-right: 4px; +} +.mournblade-chat-result .detail-row .potion-haut-parler { + font-style: italic; + color: #5a3a8a; +} +.mournblade-item-card .item-card-divider--danger { + color: #8b0000; +} +.mournblade-item-card .item-card-divider--danger::before, +.mournblade-item-card .item-card-divider--danger::after { + background: linear-gradient(90deg, transparent, #8b0000, transparent); +} /*# sourceMappingURL=mournblade.css.map */ /*# sourceMappingURL=mournblade.css.map */ diff --git a/styles/mournblade.css.map b/styles/mournblade.css.map index 6c02879..41efc42 100644 --- a/styles/mournblade.css.map +++ b/styles/mournblade.css.map @@ -1 +1 @@ -{"version":3,"sources":["../simple-converted.less","../item-styles.less","../actor-styles.less"],"names":[],"mappings":"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","file":"mournblade.css","sourcesContent":[]} \ No newline at end of file +{"version":3,"sources":["../simple-converted.less","../item-styles.less","../actor-styles.less"],"names":[],"mappings":"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","file":"mournblade.css","sourcesContent":[]} \ No newline at end of file diff --git a/system.json b/system.json index 7d479ed..483a7b1 100644 --- a/system.json +++ b/system.json @@ -202,7 +202,11 @@ "packs": [ "pnj-creatures", "pouvoirs-elementaires", + "traits-demoniaques", + "automatons", + "capacites-automaton", "creatures-elementaires", + "demons-types", "tables", "scenes", "journal-aide" @@ -226,6 +230,18 @@ "ASSISTANT": "OWNER" } }, + { + "type": "Actor", + "label": "Démons", + "name": "demons-types", + "path": "packs/demons-types/demons-types", + "system": "fvtt-mournblade", + "flags": {}, + "ownership": { + "PLAYER": "OBSERVER", + "ASSISTANT": "OWNER" + } + }, { "type": "Actor", "label": "Elémentaires", @@ -250,6 +266,42 @@ "ASSISTANT": "OWNER" } }, + { + "type": "Actor", + "label": "Automatons de la Loi", + "name": "automatons", + "path": "packs/automatons/automatons", + "system": "fvtt-mournblade", + "flags": {}, + "ownership": { + "PLAYER": "OBSERVER", + "ASSISTANT": "OWNER" + } + }, + { + "type": "Item", + "label": "Capacités des Automatons", + "name": "capacites-automaton", + "path": "packs/capacites-automaton/capacites-automaton", + "system": "fvtt-mournblade", + "flags": {}, + "ownership": { + "PLAYER": "OBSERVER", + "ASSISTANT": "OWNER" + } + }, + { + "type": "Item", + "label": "Traits Démoniaques", + "name": "traits-demoniaques", + "path": "packs/traits-demoniaques/traits-demoniaques", + "system": "fvtt-mournblade", + "flags": {}, + "ownership": { + "PLAYER": "OBSERVER", + "ASSISTANT": "OWNER" + } + }, { "type": "Item", "label": "Pouvoirs Elémentaires", diff --git a/templates/actor-sheet.hbs b/templates/actor-sheet.hbs index a099dab..21170eb 100644 --- a/templates/actor-sheet.hbs +++ b/templates/actor-sheet.hbs @@ -366,6 +366,16 @@ + {{#if isChaotique}} + + {{/if}} + {{#if isLoyal}} + + {{/if}} @@ -436,6 +446,31 @@ {{/if}} + {{!-- Invocations démoniaques actives --}} + {{#if (gt system.invocationsDemons.length 0)}} +
    + {{/if}} +

    {{localize "MNBL.tendancies"}}

    @@ -619,6 +654,7 @@
     
    + {{#if arme.system.enchantementLoi.actif}}{{else if ../isLoyal}}{{/if}} {{#if arme.system.equipped}}{{else}}{{/if}} @@ -650,6 +686,7 @@
     
    + {{#if protection.system.enchantementLoi.actif}}{{else if ../isLoyal}}{{/if}} {{#if protection.system.equipped}}{{else}}{{/if}} @@ -676,6 +713,35 @@ {{equipement.name}}
     
    +
    + {{#if equipement.system.enchantementLoi.actif}}{{else if ../isLoyal}}{{/if}} + + +
    +
  • + {{/each}} + + + +
    +

    {{localize "MNBL.potions"}}

    +
      +
    • + {{localize "MNBL.potions"}} + {{localize "MNBL.potionStatut"}} + {{localize "MNBL.potionDuree"}} +
       
      +
      + +
      +
    • + {{#each potions as |potion key|}} +
    • + + {{potion.name}} + {{upperFirst potion.system.statut}} + {{potion.system.duree}} +
       
      diff --git a/templates/chat-enchantement-result.hbs b/templates/chat-enchantement-result.hbs new file mode 100644 index 0000000..e912e33 --- /dev/null +++ b/templates/chat-enchantement-result.hbs @@ -0,0 +1,90 @@ +
      + {{!-- Header --}} +
      + {{#if actorImg}}{{alias}}{{/if}} +
      +

      {{alias}}

      +
      + {{#if itemImg}}{{itemName}}{{/if}} + Enchantement : {{itemName}} +
      +
      +
      + + {{!-- Résultat principal --}} +
      +
      +
      + + {{diceResult}} +
      +
      + Total + {{finalResult}} +
      +
      + SD + {{difficulte}} +
      +
      + +
      + {{#if isHeroique}} +
      HÉROÏQUE !
      + {{else if isDramatique}} +
      DRAMATIQUE !
      + {{else if isSuccess}} +
      Succès
      + {{else}} +
      Échec
      + {{/if}} +
      +
      + + {{!-- Détails --}} +
      +
      +
      + Points d'Âme investis : + {{ptsAme}} +
      +
      + Âme dépensée : + {{ameDeduct}} +
      +
      + Type : + {{#if antiChaos}}Anti-Chaos (aura){{else}}Standard{{/if}} +
      + {{#if isSuccess}}{{#unless itemDestroyed}} +
      + Bonus conféré : + +{{bonusFinal}} +
      + {{/unless}}{{/if}} + {{#if isHeroique}}{{#unless itemDestroyed}} +
      + Bonus conféré : + +{{bonusFinal}} +
      + {{/unless}}{{/if}} +
      +
      + + {{!-- Effets / narration --}} +
      +
      + {{#if isHeroique}} + {{else if isDramatique}} + {{else if isSuccess}} + {{else}}{{/if}} + {{enchantMessage}} +
      + {{#if itemDestroyed}} +
      + L'objet a été détruit ! +
      + {{/if}} +
      + +
      diff --git a/templates/chat-invocation-demon-result.hbs b/templates/chat-invocation-demon-result.hbs new file mode 100644 index 0000000..b39558a --- /dev/null +++ b/templates/chat-invocation-demon-result.hbs @@ -0,0 +1,125 @@ +
      + {{!-- Header --}} +
      + {{#if actorImg}} + {{alias}} + {{/if}} +
      +

      {{alias}}

      +
      + Invocation Démoniaque +
      +
      +
      + + {{!-- Résultat principal --}} +
      +
      +
      + + {{diceResult}} +
      +
      + Total + {{finalResult}} +
      +
      + SD + {{difficulte}} +
      +
      + +
      + {{#if isHeroique}} +
      + HÉROÏQUE ! +
      + {{else if isDramatique}} +
      + DRAMATIQUE ! +
      + {{else if isSuccess}} +
      + Succès +
      + {{else}} +
      + Échec +
      + {{/if}} +
      +
      + + {{!-- Détails du jet --}} +
      +
      +
      + Formule : + {{diceFormula}} +
      +
      + Trempe : + {{attr.value}} +
      +
      + Coercition : + {{competence.system.niveau}} +
      +
      + Coût Âme : + {{invocationSoulCost}} +
      +
      +
      + + {{!-- Résultat détaillé (GM only) --}} + {{#if isGM}} +
      +
      + {{#if isHeroique}} + Réussite héroïque — Accord plus favorable obtenu + {{else if isDramatique}} + ÉCHEC DRAMATIQUE — Voir résultat d20 + {{else if isSuccess}} + Démon invoqué — accord conclu + {{else}} + Invocation échouée — démon non invoqué + {{/if}} +
      + {{#if isHeroique}} +
      + L'invocateur peut obtenir un accord plus favorable : ne rien céder ou améliorer un critère (nature, traits, service, durée, attribut/capacité +5). +
      + {{/if}} +
      + Points d'Âme dépensés : {{invocationSoulDeducted}} +
      + {{#if isDramatique}} +
      + Résultat du d20 : {{d20Result}} — + {{#if isDisastreDramatique}} + DÉSASTRE ABSOLU — entité surpuissante ou possession. L'invocateur perd l'usage de l'Œil pendant {{claValue}} semaines (CLA={{claValue}}). + {{else if isDemonAttaque}} + Un Démon est invoqué et attaque immédiatement l'invocateur ! + {{else}} + L'invocateur acquiert un Trait Chaotique aléatoire (d20, table p.189). + {{/if}} +
      + {{/if}} +
      + {{/if}} + + {{!-- Message joueur --}} + {{#unless isGM}} +
      + {{#if isSuccess}} + Invocation réussie. Le Démon répond à l'appel et s'engage par contrat. + {{else if isDramatique}} + Quelque chose s'est terriblement mal passé dans les sphères du Multivers… + {{else}} + L'invocation a échoué. Le Démon repart dans son plan d'origine. + {{/if}} +
      + {{/unless}} + +
      diff --git a/templates/chat-invocation-esprit-result.hbs b/templates/chat-invocation-esprit-result.hbs new file mode 100644 index 0000000..a968cc6 --- /dev/null +++ b/templates/chat-invocation-esprit-result.hbs @@ -0,0 +1,150 @@ +
      + {{!-- Header --}} +
      + {{#if actorImg}} + {{alias}} + {{/if}} +
      +

      {{alias}}

      +
      + Invocation d'un Esprit de la Loi +
      +
      +
      + + {{!-- Résultat principal --}} +
      +
      +
      + + {{diceResult}} +
      +
      + Total + {{finalResult}} +
      +
      + SD + {{difficulte}} +
      +
      + +
      + {{#if isHeroique}} +
      + HÉROÏQUE ! +
      + {{else if isDramatique}} +
      + DRAMATIQUE ! +
      + {{else if isSuccess}} +
      + Succès +
      + {{else}} +
      + Échec +
      + {{/if}} +
      +
      + + {{!-- Détails du jet --}} +
      +
      +
      + Formule : + {{diceFormula}} +
      +
      + Trempe : + {{attr.value}} +
      +
      + Persuasion : + {{#if competence}}{{competence.system.niveau}}{{else}}0 (absente){{/if}} +
      +
      + Automaton : + {{automatonTypeLabel}} — {{automatonPuissanceLabel}} +
      +
      + Coût Âme : + {{invocationSoulCost}} +
      +
      +
      + + {{!-- Effets (MJ only) --}} + {{#if isGM}} +
      +
      + {{#if isHeroique}} + Réussite héroïque — Esprit invoqué avec succès + {{else if isDramatique}} + ÉCHEC DRAMATIQUE — Réceptacle détruit + {{else if isSuccess}} + Esprit invoqué — il habite le Réceptacle + {{else}} + Invocation échouée — l'Esprit n'est pas venu + {{/if}} +
      + {{#if isHeroique}} +
      + L'enchanteur peut majorer gratuitement un attribut de l'Automaton de +2 points. +
      + {{/if}} + {{#if isSuccess}} +
      + Durée de vie : {{invocationSoulCost}} jours (= points d'Âme dépensés). +
      + {{/if}} + {{#if isDramatique}} +
      + Le Réceptacle est détruit de manière irrémédiable. L'invocateur perd tous ses points d'Âme dépensés. La récupération des matériaux est laissée à l'appréciation du MJ. +
      + {{/if}} + {{#unless isSuccess}} + {{#unless isHeroique}} +
      + Points d'Âme perdus : {{invocationSoulDeducted}} +
      + {{/unless}} + {{/unless}} + {{#if isSuccess}} +
      + Points d'Âme dépensés : {{invocationSoulDeducted}} +
      + {{/if}} + {{#if isSuccess}} +
      + Prochaines étapes : +
        +
      1. Ouvrir le Compendium "Automatons" et faire glisser un Automaton {{automatonTypeLabel}} — {{automatonPuissanceLabel}} dans les acteurs de la scène.
      2. +
      3. Les capacités spéciales correspondant au type et à la puissance sont déjà intégrées dans l'Automaton.
      4. +
      5. Renseigner les attributs de l'Automaton si nécessaire (Force, Défense, etc.).
      6. + {{#if isHeroique}}
      7. Réussite héroïque : majorer gratuitement un attribut de l'Automaton de +2 points.
      8. {{/if}} +
      9. L'Esprit habite le Réceptacle pendant {{invocationSoulCost}} jours. Noter la date d'expiration.
      10. +
      +
      + {{/if}} +
      + {{/if}} + + {{!-- Message joueur --}} + {{#unless isGM}} +
      + {{#if isHeroique}} + Invocation héroïque ! L'Esprit répond à l'appel avec bienveillance. + {{else if isSuccess}} + L'Esprit de la Loi a répondu à l'appel et habite désormais le Réceptacle. + {{else if isDramatique}} + Quelque chose s'est terriblement mal passé… + {{else}} + L'invocation a échoué. L'Esprit ne s'est pas manifesté. + {{/if}} +
      + {{/unless}} + +
      diff --git a/templates/chat-invocation-result.hbs b/templates/chat-invocation-result.hbs index 3156c70..b87e138 100644 --- a/templates/chat-invocation-result.hbs +++ b/templates/chat-invocation-result.hbs @@ -50,71 +50,97 @@
    - {{!-- Détails du jet (GM only) --}} - {{#if isGM}} -
    -
    - Formule : - {{diceFormula}} - Présence : - {{attr.value}} - Persuasion : - {{competence.system.niveau}} + {{!-- Détails du jet --}} +
    +
    +
    + Formule : + {{diceFormula}} +
    +
    + Présence : + {{attr.value}} +
    +
    + Persuasion : + {{competence.system.niveau}} +
    {{#if bonusPacte}} - Bonus Pacte : - +{{bonusPacte}} +
    + Bonus Pacte : + +{{bonusPacte}} +
    {{/if}} - Élément : - {{invocationElement}} - Puissance : - {{invocationTier}} - Coût Âme : - {{invocationSoulCost}} +
    + Élément : + {{invocationElement}} +
    +
    + Puissance : + {{invocationTier}} +
    +
    + Coût Âme : + {{invocationSoulCost}} +
    -
    -

    + {{!-- Résultat (GM only) --}} + {{#if isGM}} +
    +
    {{#if isHeroique}} - Réussite héroïque — Élémentaire invoqué + Réussite héroïque — Élémentaire invoqué {{else if isDramatique}} - ÉCHEC DRAMATIQUE — Catastrophe naturelle ! + ÉCHEC DRAMATIQUE — Catastrophe naturelle ! {{else if isSuccess}} - Élémentaire invoqué + Élémentaire invoqué {{else}} - Invocation échouée + Invocation échouée {{/if}} -

    - +
    {{#if isHeroique}} -

    L'invocateur peut majorer gratuitement de +2 un attribut de l'Élémentaire.

    +
    + L'invocateur peut majorer gratuitement de +2 un attribut de l'Élémentaire. +
    {{/if}} {{#if isDramatique}} -

    Une catastrophe naturelle se déclenche ! Durée et portée selon la puissance de l'invocation. Tous les points d'Âme investis sont perdus.

    +
    + Une catastrophe naturelle se déclenche ! Tous les points d'Âme investis sont perdus. +
    {{/if}} - {{#if elementaireCreated}} -

    {{createdActorName}} a été créé et son Âme définie à {{invocationSoulCost}} points.

    +
    + {{createdActorName}} créé — Âme : {{invocationSoulCost}} pts. +
    {{/if}} - -
    - Points d'Âme déduits : - {{invocationSoulDeducted}} +
    + Points d'Âme déduits : {{invocationSoulDeducted}}
    {{/if}} {{!-- Message neutre pour le joueur --}} {{#unless isGM}} -
    +
    {{#if isSuccess}} -

    Invocation réussie ! L'Élémentaire répond à votre appel.

    + Invocation réussie ! L'Élémentaire répond à votre appel. {{else if isDramatique}} -

    Quelque chose s'est terriblement mal passé…

    + Quelque chose s'est terriblement mal passé… {{else}} -

    L'invocation a échoué.

    + L'invocation a échoué. {{/if}}
    {{/unless}} + {{!-- Rappel des pouvoirs élémentaires (succès ou héroïque) --}} + {{#if isSuccess}} +
    + + Pouvoirs élémentaires : l'invocateur choisit {{invocationPowerCount}} Pouvoirs pour cet Élémentaire. + Chaque activation coûte 1 pt d'Âme à l'Élémentaire (action complexe, formule en Haut-Parler). +
    + {{/if}} +
    diff --git a/templates/chat-potion-result.hbs b/templates/chat-potion-result.hbs index 5956ccd..4b91b3b 100644 --- a/templates/chat-potion-result.hbs +++ b/templates/chat-potion-result.hbs @@ -12,18 +12,6 @@
    - {{!-- Rune utilisée --}} -
    - {{#if runeImg}} - {{runeName}} - {{/if}} - {{runeName}} - Seuil : {{runeSeuil}} - {{#if runeHautParler}} - «{{runeHautParler}}» - {{/if}} -
    - {{!-- Résultat principal --}}
    @@ -63,61 +51,97 @@
    {{!-- Détails du jet --}} -
    -
    - Formule : - {{diceFormula}} - Clairvoyance : - {{attr.value}} - Savoir : Runes : - {{competence.system.niveau}} +
    +
    + {{!-- Rune utilisée --}} +
    + + {{#if runeImg}}{{runeName}}{{/if}} + {{runeName}} + + Seuil : {{runeSeuil}} +
    + {{#if runeHautParler}} +
    + Haut-Parler : + «{{runeHautParler}}» +
    + {{/if}} +
    + Formule : + {{diceFormula}} +
    +
    + Clairvoyance : + {{attr.value}} +
    +
    + Savoir : Runes : + {{competence.system.niveau}} +
    {{#if limitHautParlerValue}} - Limite Haut-Parler : - {{limitHautParlerValue}} +
    + Limite Haut-Parler : + {{limitHautParlerValue}} +
    {{/if}} {{#if limitAlchimieValue}} - Limite Alchimie : - {{limitAlchimieValue}} +
    + Limite Alchimie : + {{limitAlchimieValue}} +
    {{/if}} - Points d'Âme : - {{pointsAme}} - Forme : - {{formeLabel}} +
    + Points d'Âme : + {{pointsAme}} +
    +
    + Forme : + {{formeLabel}} +
    {{!-- Résultat de la potion (visible uniquement du MJ) --}} {{#if isGM}} -
    -

    +
    +
    {{#if isHeroique}} - Potion héroïque créée + Potion héroïque créée {{else if isDramatique}} - POISON créé (Virulence {{virulence}}) — le personnage ne le sait pas + POISON créé (Virulence {{virulence}}) — le personnage ne le sait pas {{else if isSuccess}} - Potion efficace créée + Potion efficace créée {{else}} - Potion inefficace — le personnage le sait + Potion inefficace — le personnage le sait {{/if}} -

    +
    {{#if potionCreated}} -

    La potion a été ajoutée à l'inventaire du personnage.

    +
    + La potion a été ajoutée à l'inventaire du personnage. +
    {{/if}} -
    - Durée d'effet : - {{dureePotion}} - Conservation : - {{conservationPotion}} - Temps de préparation : - {{tempsPreparation}} +
    +
    + Durée d'effet : + {{dureePotion}} +
    +
    + Conservation : + {{conservationPotion}} +
    +
    + Temps de préparation : + {{tempsPreparation}} +
    {{/if}} {{!-- Message neutre pour le joueur --}} {{#unless isGM}} -
    -

    La préparation est en cours… le résultat sera connu bientôt.

    +
    + La préparation est en cours… le résultat sera connu bientôt.
    {{/unless}} diff --git a/templates/creature-sheet.hbs b/templates/creature-sheet.hbs index 0d0ea2a..9438502 100644 --- a/templates/creature-sheet.hbs +++ b/templates/creature-sheet.hbs @@ -23,6 +23,32 @@ {{selectOptions config.elementTypeOptions selected=system.biodata.elementType}} {{/if}} + {{#if (eq system.biodata.creatureType "demon")}} + + + + + {{/if}} + {{#if (eq system.biodata.creatureType "automaton")}} + + + + + {{#if (eq system.biodata.automatonType "voyage")}} + + + {{/if}} + {{/if}}
    diff --git a/templates/dialog-enchantement.hbs b/templates/dialog-enchantement.hbs new file mode 100644 index 0000000..673e348 --- /dev/null +++ b/templates/dialog-enchantement.hbs @@ -0,0 +1,102 @@ +
    + + {{!-- Header --}} +
    + {{#if actorImg}}{{actorName}}{{/if}} +
    + {{actorName}} + Âme disponible : {{ameDisponible}} + + + Enchantement de la Loi + +
    +
    + + {{!-- Objet ciblé --}} +
    + + {{#if itemImg}}{{itemName}}{{/if}} + {{itemName}} + + {{#if enchantementActif}} + + Déjà enchanté : +{{enchantementBonus}}{{#if enchantementAntiChaos}}, Anti-Chaos{{/if}} + + {{/if}} +
    + + {{!-- Prérequis --}} + {{#unless hasRuneLoi}} +
    + + Prérequis : +
    • Rune de la Loi requise dans l'inventaire
    +
    + {{/unless}} + + {{!-- Compétences disponibles --}} +
    + + Savoir : Runes : {{#if savoirRunesNiveau}}{{savoirRunesNiveau}}{{else}}absent{{/if}} + + + Haut-Parler : {{#if hautParlerNiveau}}{{hautParlerNiveau}}{{else}}absent{{/if}} + + + Savoir : Artisanat : {{#if artisanatNiveau}}{{artisanatNiveau}}{{else}}absent{{/if}} + +
    + + {{!-- Paramètres du jet --}} +
    +

    Jet d'Enchantement

    + +
    + + + + + + + + +
    +
    + + {{!-- Résumé calculé --}} +
    +
    + Formule : + CLA ({{claValeur}}) + Savoir:Runes ({{savoirRunesNiveau}}) +
    + {{#if limiteur}} +
    + Limité par : + min(Haut-Parler, Artisanat) = {{limiteur}} +
    + {{/if}} +
    + Difficulté : + +
    +
    + Bonus prévu : + +0 +
    +
    + Âme disponible : + {{ameDisponible}} +
    +
    + + + +
    diff --git a/templates/dialog-invocation-demon.hbs b/templates/dialog-invocation-demon.hbs new file mode 100644 index 0000000..c5a9d2c --- /dev/null +++ b/templates/dialog-invocation-demon.hbs @@ -0,0 +1,140 @@ +
    + +
    + {{#if img}}{{name}}{{/if}} +
    +

    {{name}}

    +
    Invocation Démoniaque
    +
    +
    + + {{!-- Prérequis --}} + {{#unless prerequisOk}} +
    + + Prérequis non remplis : + {{#unless isChaotique}}
    • Alignement chaotique requis (Chaos doit être supérieur à Loi)
    {{/unless}} + {{#unless hasOeilSorcier}}
    • Capacité Spéciale "Œil du Sorcier" requise
    {{/unless}} + {{#unless hasRuneChaos}}
    • Rune du Chaos requise dans l'inventaire
    {{/unless}} +
    + {{/unless}} + + {{!-- Compétences disponibles --}} +
    + + Coercition : + {{#if coercitionNiveau}}{{coercitionNiveau}}{{else}}absente{{/if}} + + + Haut-Parler : + {{#if hautParlerNiveau}}{{hautParlerNiveau}}{{else}}absent{{/if}} + + + Loi & Chaos : + {{#if loiChaosNiveau}}{{loiChaosNiveau}}{{else}}absent{{/if}} + +
    + + {{!-- Calculateur de seuil --}} +
    +

    Déterminer le Seuil de difficulté

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + {{!-- Total seuil calculé --}} +
    + Seuil total calculé : + 5 + +
    + +
    + +
    + + {{!-- Coût en Âme --}} +
    + + {{ameDisponible}} + Coût requis : 5 (= Seuil) +
    + + {{!-- Attribut TRE --}} +
    + + {{attr.value}} +
    + + {{!-- Modificateur --}} +
    + + +
    + +
    + + {{!-- Avertissement âme insuffisante --}} + + +
    diff --git a/templates/dialog-invocation-esprit.hbs b/templates/dialog-invocation-esprit.hbs new file mode 100644 index 0000000..f73bf67 --- /dev/null +++ b/templates/dialog-invocation-esprit.hbs @@ -0,0 +1,98 @@ +
    + + {{!-- Header --}} +
    + {{#if img}}{{name}}{{/if}} +
    + {{name}} + Âme disponible : {{ameDisponible}} + + Invocation d'un Esprit de la Loi + +
    +
    + + {{!-- Prérequis --}} + {{#unless prerequisOk}} +
    + + Prérequis non remplis : + {{#unless isLoyal}}
    • Alignement loyal requis (Loi doit être supérieur au Chaos)
    {{/unless}} + {{#unless hasRuneLoi}}
    • Rune de la Loi requise dans l'inventaire
    {{/unless}} +
    + {{/unless}} + + {{!-- Compétences disponibles --}} +
    + + Persuasion : {{#if persuasionNiveau}}{{persuasionNiveau}}{{else}}absente{{/if}} + + + Haut-Parler : {{#if hautParlerNiveau}}{{hautParlerNiveau}}{{else}}absent{{/if}} + + + Loi & Chaos : {{#if loiChaosNiveau}}{{loiChaosNiveau}}{{else}}absent{{/if}} + +
    + + {{!-- Choix de l'Automaton --}} +
    +

    Choisir l'Automaton

    + +
    + + + + + + + + + 1 heure + + + + +
    + + {{!-- Seuil calculé --}} +
    + Seuil de difficulté : + 15 + +
    +
    + + {{!-- Résumé du jet --}} +
    +
    + Formule : + Trempe ({{treValeur}}) + Persuasion ({{#if persuasionNiveau}}{{persuasionNiveau}}{{else}}0{{/if}}) +
    +
    + Coût en Âme : + 15 points (= Seuil) +
    +
    + Durée de vie : + Seuil jours après invocation réussie +
    +
    + + + +
    diff --git a/templates/item-arme-sheet.hbs b/templates/item-arme-sheet.hbs index cf38b13..673b32d 100644 --- a/templates/item-arme-sheet.hbs +++ b/templates/item-arme-sheet.hbs @@ -77,6 +77,9 @@ + + {{!-- Enchantement de la Loi --}} + {{> systems/fvtt-mournblade/templates/partial-item-enchantement.hbs this}}
    diff --git a/templates/item-bouclier-sheet.hbs b/templates/item-bouclier-sheet.hbs index 76faf6d..38da328 100644 --- a/templates/item-bouclier-sheet.hbs +++ b/templates/item-bouclier-sheet.hbs @@ -33,6 +33,9 @@ + + {{!-- Enchantement de la Loi --}} + {{> systems/fvtt-mournblade/templates/partial-item-enchantement.hbs this}} diff --git a/templates/item-equipement-sheet.hbs b/templates/item-equipement-sheet.hbs index 5767662..396a31a 100644 --- a/templates/item-equipement-sheet.hbs +++ b/templates/item-equipement-sheet.hbs @@ -17,6 +17,9 @@ + + {{!-- Enchantement de la Loi --}} + {{> systems/fvtt-mournblade/templates/partial-item-enchantement.hbs this}} diff --git a/templates/item-protection-sheet.hbs b/templates/item-protection-sheet.hbs index 3ec2344..a6d7040 100644 --- a/templates/item-protection-sheet.hbs +++ b/templates/item-protection-sheet.hbs @@ -25,6 +25,9 @@ + + {{!-- Enchantement de la Loi --}} + {{> systems/fvtt-mournblade/templates/partial-item-enchantement.hbs this}} diff --git a/templates/partial-item-enchantement.hbs b/templates/partial-item-enchantement.hbs new file mode 100644 index 0000000..5d5ac03 --- /dev/null +++ b/templates/partial-item-enchantement.hbs @@ -0,0 +1,42 @@ +{{!-- Section Enchantement de la Loi - affichée sur les items enchantables --}} +
    +

    + + {{localize "MNBL.enchantementLoi"}} + {{#if system.enchantementLoi.actif}}{{localize "MNBL.enchantementActif"}}{{/if}} +

    + + {{#if isGM}} + {{!-- MJ : champs éditables --}} +
      +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    + {{else}} + {{!-- Joueur : lecture seule --}} + {{#if system.enchantementLoi.actif}} +
      +
    • + + +{{system.enchantementLoi.bonus}} +
    • +
    • + + {{#if system.enchantementLoi.antiChaos}}{{else}}{{/if}} +
    • +
    + {{else}} +

    Non enchanté

    + {{/if}} + {{/if}} +
    diff --git a/templates/partial-item-header.hbs b/templates/partial-item-header.hbs index 85cd530..01c0ae8 100644 --- a/templates/partial-item-header.hbs +++ b/templates/partial-item-header.hbs @@ -17,6 +17,20 @@
    + {{#if canEnchant}} + + {{else if enchantementActif}} + + + + {{/if}}
    {{/if}} {{#if system.rarete}}
    Rareté{{system.rarete}}
    {{/if}} + + {{else if (eq type "potion")}} +
    +
    Statut{{system.statutLabel}}
    + {{#if system.rune}}
    Rune{{system.rune}}
    {{/if}} + {{#if system.runeSeuil}}
    Seuil{{system.runeSeuil}}
    {{/if}} + {{#if system.formeLabel}}
    Forme{{system.formeLabel}}
    {{/if}} + {{#if system.duree}}
    Durée{{system.duree}}
    {{/if}} + {{#if system.conservation}}
    Conservation{{system.conservation}}
    {{/if}} + {{#if system.pointsAme}}
    Points d'Âme{{system.pointsAme}}
    {{/if}} + {{#if system.virulence}}
    Virulence{{system.virulence}}
    {{/if}} +
    + {{#if system.effetCuratif}} +
    Effet curatif
    +
    {{{system.effetCuratif}}}
    + {{/if}} + {{#if system.effetLetal}} +
    Effet létal
    +
    {{{system.effetLetal}}}
    + {{/if}} + {{#if system.effetSecondaire}} +
    Effet secondaire
    +
    {{{system.effetSecondaire}}}
    + {{/if}} {{/if}} {{!-- Description --}}