diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml index 7043c5a..d3c08a7 100644 --- a/.gitea/workflows/release.yaml +++ b/.gitea/workflows/release.yaml @@ -30,6 +30,30 @@ jobs: manifest: https://www.uberwald.me/gitea/public/fvtt-mournblade/releases/download/latest/system.json download: https://www.uberwald.me/gitea/${{gitea.repository}}/releases/download/${{github.event.release.tag_name}}/fvtt-mournblade.zip + # Set up Node.js and build compendium packs from source + - name: Setup Node.js + uses: https://github.com/actions/setup-node@v4 + with: + node-version: '20' + + - name: Install dependencies + run: npm install + + - name: Build journal-aide compendium pack + run: | + rm -rf packs/journal-aide/journal-aide + ./node_modules/.bin/fvtt package pack -n journal-aide --inputDirectory ./packs/src/journal-aide --outputDirectory ./packs/journal-aide + + - name: Build pouvoirs-elementaires compendium pack + run: | + rm -rf packs/pouvoirs-elementaires/pouvoirs-elementaires + ./node_modules/.bin/fvtt package pack -n pouvoirs-elementaires --inputDirectory ./packs/src/pouvoirs-elementaires --outputDirectory ./packs/pouvoirs-elementaires + + - name: Build creatures-elementaires compendium pack + run: | + rm -rf packs/creatures-elementaires/creatures-elementaires + ./node_modules/.bin/fvtt package pack -n creatures-elementaires --inputDirectory ./packs/src/creatures-elementaires --outputDirectory ./packs/creatures-elementaires + # Create a zip file with all files required by the module to add to the release - run: | apt update -y diff --git a/assets/icons/potion.svg b/assets/icons/potion.svg new file mode 100644 index 0000000..c3c1464 --- /dev/null +++ b/assets/icons/potion.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/ui/help/help-actor-sheet.png b/assets/ui/help/help-actor-sheet.png new file mode 100644 index 0000000..bfe18e4 Binary files /dev/null and b/assets/ui/help/help-actor-sheet.png differ diff --git a/assets/ui/help/help-compendiums.png b/assets/ui/help/help-compendiums.png new file mode 100644 index 0000000..c71ffbc Binary files /dev/null and b/assets/ui/help/help-compendiums.png differ diff --git a/assets/ui/help/help-equipment-tab.png b/assets/ui/help/help-equipment-tab.png new file mode 100644 index 0000000..16e2c57 Binary files /dev/null and b/assets/ui/help/help-equipment-tab.png differ diff --git a/assets/ui/help/help-overview.png b/assets/ui/help/help-overview.png new file mode 100644 index 0000000..3b8200e Binary files /dev/null and b/assets/ui/help/help-overview.png differ diff --git a/assets/ui/help/help-roll-dialog.png b/assets/ui/help/help-roll-dialog.png new file mode 100644 index 0000000..c1d9c52 Binary files /dev/null and b/assets/ui/help/help-roll-dialog.png differ diff --git a/assets/ui/help/help-roll-result.png b/assets/ui/help/help-roll-result.png new file mode 100644 index 0000000..7e8845f Binary files /dev/null and b/assets/ui/help/help-roll-result.png differ diff --git a/assets/ui/help/help-rune-dialog.png b/assets/ui/help/help-rune-dialog.png new file mode 100644 index 0000000..e3bef6e Binary files /dev/null and b/assets/ui/help/help-rune-dialog.png differ diff --git a/assets/ui/help/help-rune-section.png b/assets/ui/help/help-rune-section.png new file mode 100644 index 0000000..d2fba94 Binary files /dev/null and b/assets/ui/help/help-rune-section.png differ diff --git a/assets/ui/help/help-skills-tab.png b/assets/ui/help/help-skills-tab.png new file mode 100644 index 0000000..635f36d Binary files /dev/null and b/assets/ui/help/help-skills-tab.png differ diff --git a/assets/ui/help/help-sortilege-dialog.png b/assets/ui/help/help-sortilege-dialog.png new file mode 100644 index 0000000..79c0254 Binary files /dev/null and b/assets/ui/help/help-sortilege-dialog.png differ diff --git a/lang/en.json b/lang/en.json index ff4b8b1..cd258ea 100644 --- a/lang/en.json +++ b/lang/en.json @@ -171,34 +171,96 @@ "MNBL.weapontype": "Weapon Type", "MNBL.weight": "Weight", "MNBL.total": "Total", - "Présence": "Presence", "Puissance": "Might", "Trempe": "Mettle", "TYPES": { - "Actor": { - "creature": "Creature", - "personnage": "Character" - }, - "Item": { - "arme": "Weapon", - "bouclier": "Shield", - "capacite": "Ability", - "competence": "Skill", - "don": "Gifts", - "equipement": "Equipment", - "heritage": "Background", - "metier": "Profession", - "modifier": "Modifier", - "monnaie": "Currency", - "origine": "Origin", - "pacte": "Pacts", - "protection": "Protections", - "rune": "Rune", - "runeeffect": "Rune Effect", - "tendance": "Signs of Chaos", - "traitchaotique": "Background", - "traitespece": "Species Trait" - } - } + "Actor": { + "creature": "Creature", + "personnage": "Character" + }, + "Item": { + "arme": "Weapon", + "bouclier": "Shield", + "capacite": "Ability", + "competence": "Skill", + "don": "Gifts", + "equipement": "Equipment", + "heritage": "Background", + "metier": "Profession", + "modifier": "Modifier", + "monnaie": "Currency", + "origine": "Origin", + "pacte": "Pacts", + "protection": "Protections", + "rune": "Rune", + "runeeffect": "Rune Effect", + "tendance": "Signs of Chaos", + "traitchaotique": "Background", + "traitespece": "Species Trait" + } + }, + "MNBL.potion": "Potion", + "MNBL.potionRune": "Rune", + "MNBL.potionSeuil": "Rune Threshold", + "MNBL.potionPointsAme": "Soul Points invested", + "MNBL.potionForme": "Form", + "MNBL.potionStatut": "Status", + "MNBL.potionVirulence": "Virulence", + "MNBL.potionDuree": "Duration", + "MNBL.potionConservation": "Conservation", + "MNBL.potionTemps": "Preparation Time", + "MNBL.potionEffetCuratif": "Curative Effect", + "MNBL.potionEffetLetal": "Lethal Effect", + "MNBL.potionEffetSecondaire": "Side Effects", + "MNBL.potionDescription": "Description", + "MNBL.potionLiquide": "Liquid", + "MNBL.potionOnguent": "Ointment", + "MNBL.potionCachets": "Tablets", + "MNBL.potionPilules": "Pills", + "MNBL.potionInconnue": "Unknown", + "MNBL.potionEfficace": "Effective", + "MNBL.potionHeroique": "Heroic", + "MNBL.potionInefficace": "Ineffective", + "MNBL.potionPoison": "Poison", + "MNBL.preparePotion": "Prepare a Potion", + "MNBL.capacites": "Capacities / Powers", + "MNBL.capacite": "Capacity", + "MNBL.typeCapacite": "Capacity Type", + "MNBL.typeCapaciteElue": "Chosen Power", + "MNBL.typeCapaciteElementaire": "Elemental Power", + "MNBL.typeCapaciteDemoniaque": "Demonic Power", + "MNBL.typeCapaciteCreature": "Creature Power", + "MNBL.creatureTypeCreature": "Creature", + "MNBL.creatureTypeDemon": "Demon", + "MNBL.creatureTypeElementaire": "Elemental", + "MNBL.elementTypeAir": "Air", + "MNBL.elementTypeTerre": "Earth", + "MNBL.elementTypeFeu": "Fire", + "MNBL.elementTypeEau": "Water", + "MNBL.creatureType": "Creature Type", + "MNBL.elementType": "Element", + "MNBL.invoquerElementaire": "Summon an Elemental", + "MNBL.bannirElementaire": "Banish", + "MNBL.invocationsActives": "Active Invocations", + "MNBL.invocationElement": "Element", + "MNBL.invocationTier": "Power", + "MNBL.invocationSeuil": "Threshold", + "MNBL.invocationAmeExtra": "Extra Soul Points", + "MNBL.invocationAmeTotal": "Total Soul Cost", + "MNBL.invocationTemps": "Concentration Time", + "MNBL.invocationBonusPacte": "Elemental Pact Bonus", + "MNBL.invocationHautParler": "Savoir : Haut-Parler", + "MNBL.invocationSeigneursElem": "Savoir : Seigneurs Élémentaires", + "MNBL.invocationResultSucces": "The Elemental is summoned!", + "MNBL.invocationResultHeroique": "Heroic success! You may freely increase one of the Elemental's attributes by +2.", + "MNBL.invocationResultEchec": "The invocation failed. You lose half the Soul Points spent.", + "MNBL.invocationResultDramatique": "Dramatic failure! The invocation failed and you lose all invested Soul Points. A natural catastrophe is unleashed!", + "MNBL.invocationTierMineur": "Minor (Threshold 15)", + "MNBL.invocationTierMedian": "Median (Threshold 20)", + "MNBL.invocationTierMajeur": "Major (Threshold 25)", + "MNBL.invocationConcentrationMineur": "1 round", + "MNBL.invocationConcentrationMedian": "1 minute", + "MNBL.invocationConcentrationMajeur": "1 hour", + "MNBL.invocationAmeBloque": "Blocked Soul" } \ No newline at end of file diff --git a/lang/fr.json b/lang/fr.json index c7eeb84..48abc50 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -30,7 +30,6 @@ "Clairvoyance": "Clairvoyance", "Présence": "Présence", "Trempe": "Trempe", - "MNBL.assaut": "Assaut", "MNBL.preciseattack": "Attaque Précise", "MNBL.feint": "Feinte", @@ -38,7 +37,6 @@ "MNBL.charge": "Charger", "MNBL.contain": "Contenir l'adversaire", "MNBL.disarm": "Désarmer", - "MNBL.none": "Aucun", "MNBL.lightcover": "Rondache ou léger (-2)", "MNBL.mediumcover": "Pavois ou à moitié (-5)", @@ -46,12 +44,10 @@ "MNBL.roll": "Jet", "MNBL.defensecapacity": "Capacité défensive", "MNBL.attackcapacity": "Capacité offensive", - "MNBL.lessthanshort": "Moins que courte (10)", "MNBL.shortmore": "Courte et + (10)", "MNBL.mediummore": "Moyenne et + (20)", "MNBL.longmore": "Longue et + (25)", - "MNBL.noneunknwon": "Aucune/Inconnue", "MNBL.easy": "Facile (5)", "MNBL.medium": "Moyenne (10)", @@ -59,32 +55,28 @@ "MNBL.hazardous": "Hasardeuse (20)", "MNBL.insane": "Insensée (25)", "MNBL.puremadness": "Pure Folie (30)", - "MNBL.pronouncerune": "Prononcer la rune", "MNBL.tracerune": "Tracer la rune", "MNBL.pronounced": "Prononcée", "MNBL.traced": "Tracée", - "MNBL.meleeweapon": "Arme de contact", "MNBL.meleethrowweapon": "Arme de contact et de Jet", "MNBL.throwweapon": "Arme de Lancer", "MNBL.shootweapon": "Arme de Tir", "MNBL.specialweapon": "Spécial (capacité/don)", - "MNBL.all": "Tous", "MNBL.beastslords": "Seigneurs des Bêtes", "MNBL.elementslords": "Seigneurs Elementaires", - "MNBL.law": "Loi", "MNBL.chaos": "Chaos", "MNBL.level": "Niveau", "MNBL.points": "Points", "MNBL.aspect": "Aspect", "MNBL.margin": "Marge", - "MNBL.goodadventure" : "Bonne Aventure", + "MNBL.goodadventure": "Bonne Aventure", "MNBL.base": "Base", "MNBL.current": "Actuelle", - "MNBL.alignement" : "Alignement", + "MNBL.alignement": "Alignement", "MNBL.eclat": "Eclat", "MNBL.exp": "Expérience", "MNBL.attributes": "Attributs", @@ -97,14 +89,14 @@ "MNBL.malus": "Malus", "MNBL.nonlethal": "Non Létaux", "MNBL.lethal": "Létaux", - "MNBL.automalus" : "Malus Auto", + "MNBL.automalus": "Malus Auto", "MNBL.soul": "Ame", "MNBL.currentmax": "Max Actuel", "MNBL.consumed": "Consommé", "MNBL.damagebonus": "B. Dégats", - "MNBL.speed": "Vitesse", + "MNBL.speed": "Vitesse", "MNBL.defense": "Défense", - "MNBL.totalprotection": "Protection Totale", + "MNBL.totalprotection": "Protection Totale", "MNBL.modifier": "Modificateurs", "MNBL.type": "Type", "MNBL.value": "Valeur", @@ -133,10 +125,10 @@ "MNBL.protections": "Protections", "MNBL.equipments": "Equipements", "MNBL.equipment": "Equipement", - "MNBL.origin": "Origine", + "MNBL.origin": "Origine", "MNBL.legacy": "Héritage", "MNBL.profession": "Métier", - "MNBL.genre": "Genre", + "MNBL.genre": "Genre", "MNBL.size": "Taille", "MNBL.hair": "Cheveux", "MNBL.eyes": "Yeux", @@ -145,7 +137,6 @@ "MNBL.soulmultiplier": "Multiplicateur d'âme", "MNBL.ignorehealthmalus": "Ignore le malus de santé", "MNBL.ignoresoulmalus": "Ignore le malus d'âme", - "MNBL.weapon": "Arme", "MNBL.nextattackbonus": "Bonus pour prochaine attaque", "MNBL.nextactionmalus": "Malus au défenseur pour prochaine action", @@ -156,13 +147,12 @@ "MNBL.usedpredilection": "Prédilection utilisée", "MNBL.soulpoints": "Points d'âme", "MNBL.formula": "Formule", - "MNBL.dice":"Dé", + "MNBL.dice": "Dé", "MNBL.success": "Succés", "MNBL.failure": "Echec", "MNBL.heroicsuccess": "Succés Héroïque", "MNBL.dramaticfailure": "Echec Dramatique", "MNBL.oddresult": "Résultat impair — le dé compte pour 0", - "MNBL.attackmountbonus": "Attaquant monté vs def. au sol (+5)", "MNBL.targetdefense": "Défense adversaire", "MNBL.shootmodifier": "Modificateurs de Tir", @@ -182,7 +172,6 @@ "MNBL.soulmalus": "Malus d'âme", "MNBL.registeredmodifiers": "Modificateurs enregistrés", "MNBL.doubleD20": "Doubler le d20 (1 Point d'Eclat)", - "MNBL.pronouncedrune": "Rune prononcée", "MNBL.tracedrune": "Rune tracée", "MNBL.equipped": "Equipé", @@ -203,15 +192,14 @@ "MNBL.ignorearmor": "Ignore l'armure", "MNBL.creatureresourcecost": "Cout en Ressources (créatures)", "MNBL.shortrange": "Portée courte", - "MNBL.mediumrange":"Portée moyenne", - "MNBL.longrange":"Portée longue", + "MNBL.mediumrange": "Portée moyenne", + "MNBL.longrange": "Portée longue", "MNBL.reloadduration": "Temps de rechargement", "MNBL.attacks": "Attaques", "MNBL.ressources": "Ressources", "MNBL.weaponscapacities": "Armes/Capacités", "MNBL.use": "Utiliser", "MNBL.speciestrait": "Trait d'espèce", - "MNBL.attribute": "Attribut", "MNBL.Protections": "Protections", "MNBL.rune": "Rune", @@ -220,6 +208,68 @@ "MNBL.details": "Détails", "MNBL.sacrifice": "Sacrifice", "MNBL.identity": "Identité", - "MNBL.gmtools": "Outils MJ" - + "MNBL.gmtools": "Outils MJ", + "MNBL.potion": "Potion", + "MNBL.potionRune": "Rune", + "MNBL.potionSeuil": "Seuil de la Rune", + "MNBL.potionPointsAme": "Points d'Âme investis", + "MNBL.potionForme": "Forme", + "MNBL.potionStatut": "Statut", + "MNBL.potionVirulence": "Virulence", + "MNBL.potionDuree": "Durée d'effet", + "MNBL.potionConservation": "Conservation", + "MNBL.potionTemps": "Temps de préparation", + "MNBL.potionEffetCuratif": "Effet curatif", + "MNBL.potionEffetLetal": "Effet létal", + "MNBL.potionEffetSecondaire": "Effets secondaires", + "MNBL.potionDescription": "Description", + "MNBL.potionLiquide": "Liquide", + "MNBL.potionOnguent": "Onguent", + "MNBL.potionCachets": "Cachets", + "MNBL.potionPilules": "Pilules", + "MNBL.potionInconnue": "Inconnue", + "MNBL.potionEfficace": "Efficace", + "MNBL.potionHeroique": "Héroïque", + "MNBL.potionInefficace": "Inefficace", + "MNBL.potionPoison": "Poison", + "MNBL.preparePotion": "Préparer une Potion", + "MNBL.capacites": "Capacités / Pouvoirs", + "MNBL.capacite": "Capacité", + "MNBL.typeCapacite": "Type de capacité", + "MNBL.typeCapaciteElue": "Pouvoir Élue", + "MNBL.typeCapaciteElementaire": "Pouvoir Élémentaire", + "MNBL.typeCapaciteDemoniaque": "Pouvoir Démoniaque", + "MNBL.typeCapaciteCreature": "Pouvoir Créature", + "MNBL.creatureTypeCreature": "Créature", + "MNBL.creatureTypeDemon": "Démon", + "MNBL.creatureTypeElementaire": "Élémentaire", + "MNBL.elementTypeAir": "Air", + "MNBL.elementTypeTerre": "Terre", + "MNBL.elementTypeFeu": "Feu", + "MNBL.elementTypeEau": "Eau", + "MNBL.creatureType": "Type de créature", + "MNBL.elementType": "Élément", + "MNBL.invoquerElementaire": "Invoquer un Élémentaire", + "MNBL.bannirElementaire": "Bannir", + "MNBL.invocationsActives": "Invocations actives", + "MNBL.invocationElement": "Élément", + "MNBL.invocationTier": "Puissance", + "MNBL.invocationSeuil": "Seuil", + "MNBL.invocationAmeExtra": "Points d'Âme supplémentaires", + "MNBL.invocationAmeTotal": "Coût total en Âme", + "MNBL.invocationTemps": "Temps de concentration", + "MNBL.invocationBonusPacte": "Bonus Pacte élémentaire", + "MNBL.invocationHautParler": "Savoir : Haut-Parler", + "MNBL.invocationSeigneursElem": "Savoir : Seigneurs Élémentaires", + "MNBL.invocationResultSucces": "L'Élémentaire est invoqué !", + "MNBL.invocationResultHeroique": "Réussite héroïque ! Vous pouvez majorer gratuitement de +2 un attribut de l'Élémentaire.", + "MNBL.invocationResultEchec": "L'invocation a échoué. Vous perdez la moitié des points d'Âme dépensés.", + "MNBL.invocationResultDramatique": "Échec dramatique ! L'invocation a échoué et vous perdez tous les points d'Âme investis. Une catastrophe naturelle se déclenche !", + "MNBL.invocationTierMineur": "Mineur (Seuil 15)", + "MNBL.invocationTierMedian": "Médian (Seuil 20)", + "MNBL.invocationTierMajeur": "Majeur (Seuil 25)", + "MNBL.invocationConcentrationMineur": "1 tour", + "MNBL.invocationConcentrationMedian": "1 minute", + "MNBL.invocationConcentrationMajeur": "1 heure", + "MNBL.invocationAmeBloque": "Âme bloquée" } \ No newline at end of file diff --git a/less/actor-styles.less b/less/actor-styles.less index b5cb695..93e5ed1 100644 --- a/less/actor-styles.less +++ b/less/actor-styles.less @@ -872,3 +872,48 @@ } } } + +/* ==================== Sortilège Launch Button ==================== */ +.fvtt-mournblade.sheet { + .header-actions { + display: flex; + align-items: center; + gap: 6px; + flex-wrap: wrap; + padding: 4px 0; + + .chat-card-button { + display: inline-flex; + align-items: center; + gap: 6px; + padding: 5px 12px; + background: linear-gradient(135deg, #6b1a1a 0%, #8b2222 50%, #6b1a1a 100%); + border: 1px solid #c0392b; + border-radius: 4px; + color: #f5e6d3; + font-family: CentaurMT, serif; + font-size: 0.9rem; + cursor: pointer; + text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.1); + transition: all 0.2s ease; + white-space: nowrap; + + i { color: #d4af37; } + + &:hover { + background: linear-gradient(135deg, #8b2222 0%, #a52a2a 50%, #8b2222 100%); + border-color: #d4af37; + color: #fff; + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.15); + i { color: #ffd700; } + } + + &:active { + background: linear-gradient(135deg, #5a1010 0%, #6b1a1a 50%, #5a1010 100%); + transform: translateY(1px); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4); + } + } + } +} diff --git a/less/item-styles.less b/less/item-styles.less index 0e60dee..a162e1e 100644 --- a/less/item-styles.less +++ b/less/item-styles.less @@ -313,3 +313,130 @@ } } } + +/* ============================================= */ +/* Potion Item Sheet */ +/* ============================================= */ +.potion-content { + .potion-header-info { + display: flex; + flex-direction: column; + gap: 0.25rem; + padding: 0.5rem; + background: rgba(139, 0, 0, 0.08); + border-radius: 4px; + border: 1px solid rgba(139, 0, 0, 0.2); + margin-bottom: 0.5rem; + } + + .potion-statut-badge { + display: inline-flex; + align-items: center; + gap: 0.35rem; + padding: 0.2rem 0.6rem; + border-radius: 12px; + font-size: 0.85rem; + font-weight: bold; + + &.statut-efficace { background: rgba(0,128,0,0.15); color: #155215; border: 1px solid #4a904a; } + &.statut-heroique { background: rgba(180,120,0,0.15); color: #7a5000; border: 1px solid #c89000; } + &.statut-inefficace { background: rgba(100,100,100,0.15); color: #555; border: 1px solid #888; } + &.statut-poison { background: rgba(100,0,100,0.15); color: #4a004a; border: 1px solid #880088; } + &.statut-inconnue { background: rgba(50,50,50,0.1); color: #666; border: 1px solid #aaa; } + } +} + +/* Potion in chat */ +.potion-rune-info { + display: flex; + align-items: center; + gap: 0.5rem; + flex-wrap: wrap; + padding: 0.4rem; + background: rgba(0,0,0,0.04); + border-radius: 4px; + margin-bottom: 0.35rem; + + .potion-rune-name { font-weight: bold; } + .potion-rune-seuil { font-size: 0.85rem; color: #666; } + .potion-haut-parler { font-size: 0.85rem; color: #555; font-style: italic; } +} + +.potion-result-gm { + border: 1px dashed rgba(139,0,0,0.4); + background: rgba(139,0,0,0.05); + border-radius: 4px; + padding: 0.4rem; + + .potion-result-title { + font-size: 0.95rem; + margin: 0 0 0.3rem; + } + .potion-heroique { color: #8B6900; } + .potion-efficace { color: #155215; } + .potion-inefficace { color: #555; } + .potion-poison { color: #660066; } +} + +.potion-result-player { + font-style: italic; + color: #666; + font-size: 0.9rem; +} + +/* Potion dialog */ +.potion-dialog { + .potion-dialog-section { + margin-bottom: 0.75rem; + } + + .potion-dialog-title { + font-size: 0.9rem; + font-weight: bold; + border-bottom: 1px solid rgba(0,0,0,0.15); + padding-bottom: 0.2rem; + margin-bottom: 0.4rem; + } + + .potion-runes-table { + width: 100%; + font-size: 0.85rem; + border-collapse: collapse; + margin-bottom: 0.5rem; + + th, td { + padding: 0.2rem 0.4rem; + border-bottom: 1px solid rgba(0,0,0,0.08); + } + + .potion-rune-row:hover { background: rgba(0,0,0,0.04); } + .potion-rune-radio { cursor: pointer; } + + .rune-mini-img { + width: 20px; + height: 20px; + vertical-align: middle; + margin-right: 4px; + border-radius: 2px; + border: 1px solid rgba(139, 69, 19, 0.5); + object-fit: cover; + } + } + + .potion-summary { + background: rgba(0,0,0,0.05); + border-radius: 4px; + padding: 0.4rem 0.6rem; + font-size: 0.85rem; + + .summary-row { margin-bottom: 0.2rem; } + .summary-label { font-weight: bold; min-width: 150px; } + } + + .potion-info-note { + color: #888; + font-style: italic; + gap: 0.4rem; + align-items: center; + } +} diff --git a/less/simple-converted.less b/less/simple-converted.less index 9643c3f..ec21963 100644 --- a/less/simple-converted.less +++ b/less/simple-converted.less @@ -968,6 +968,165 @@ height: 64px; } + // ===================================================== + // Item Card (post-item, chat-display-description) + // ===================================================== + .mournblade-item-card { + font-family: CentaurMT, serif; + color: #2a1a0a; + background: linear-gradient(180deg, #fdf6e3 0%, #f7ead0 100%); + border: 1px solid #8b4513; + border-radius: 4px; + overflow: hidden; + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25); + + .item-card-header { + display: flex; + align-items: center; + gap: 10px; + background: linear-gradient(135deg, #4a0404 0%, #8b0000 50%, #6b2020 100%); + padding: 10px 12px; + border-bottom: 2px solid #c8860a; + + .item-card-img { + width: 56px; + height: 56px; + border-radius: 4px; + border: 2px solid #c8860a; + object-fit: cover; + flex-shrink: 0; + background: rgba(0,0,0,0.3); + } + + .item-card-title { + flex: 1; + min-width: 0; + + .item-card-name { + margin: 0 0 4px 0; + padding: 0; + font-family: Charlemagne, CentaurMT, serif; + font-size: 1.05rem; + font-weight: bold; + color: #f5deb3; + text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.6); + white-space: normal; + line-height: 1.2; + border: none; + } + + .item-card-type-badge { + display: inline-block; + background: rgba(200, 134, 10, 0.3); + border: 1px solid #c8860a; + border-radius: 10px; + padding: 1px 8px; + font-size: 0.72rem; + color: #f5deb3; + letter-spacing: 0.05em; + text-transform: uppercase; + + i { margin-right: 3px; } + } + } + } + + .item-card-stats { + padding: 8px 12px; + border-bottom: 1px solid rgba(139, 69, 19, 0.2); + display: flex; + flex-direction: column; + gap: 3px; + + .stat-row { + display: flex; + align-items: baseline; + justify-content: space-between; + gap: 8px; + font-size: 0.85rem; + padding: 2px 0; + border-bottom: 1px dotted rgba(139, 69, 19, 0.12); + + &:last-child { border-bottom: none; } + + .stat-label { + color: #6b3a1f; + font-weight: bold; + flex-shrink: 0; + i { margin-right: 4px; color: #8b4513; } + } + + .stat-value { + color: #2a1a0a; + text-align: right; + font-weight: normal; + + &.stat-highlight { + font-weight: bold; + color: #4a0404; + font-size: 0.95rem; + } + } + + &.stat-flag { + justify-content: flex-start; + color: #6b3a1f; + font-style: italic; + font-size: 0.8rem; + border-bottom: none; + padding: 1px 0; + i { margin-right: 5px; color: #8b0000; } + } + } + } + + .item-card-divider { + display: flex; + align-items: center; + padding: 6px 12px 0; + gap: 8px; + font-size: 0.72rem; + letter-spacing: 0.08em; + text-transform: uppercase; + color: #8b4513; + font-weight: bold; + + &::before, &::after { + content: ''; + flex: 1; + height: 1px; + background: linear-gradient(90deg, transparent, #c8860a, transparent); + } + } + + .item-card-description { + padding: 8px 12px 10px; + font-size: 0.88rem; + line-height: 1.5; + color: #2a1a0a; + + p { margin: 0 0 6px 0; &:last-child { margin-bottom: 0; } } + em, i { color: #5a2a0a; } + strong, b { color: #2a1a0a; } + } + + .item-card-sacrifice { + background: rgba(100, 0, 0, 0.05); + border-top: 1px solid rgba(139, 0, 0, 0.2); + font-style: italic; + color: #5a0000; + } + + &.mournblade-item-card--compact { + .item-card-header { + padding: 8px 10px; + .item-card-img { width: 44px; height: 44px; } + .item-card-name { font-size: 0.95rem; } + } + .item-card-description { padding: 6px 10px 8px; } + } + } + .roll-dialog-header { height: 52px; } @@ -2287,6 +2446,40 @@ } } + .result-chaos { + padding: 8px; + background: rgba(40, 0, 60, 0.85); + border-top: 2px solid #9400d3; + border-left: 4px solid #ff00ff; + color: #f0d0ff; + font-size: 0.85rem; + + .chaos-header { + font-weight: bold; + font-size: 1rem; + margin-bottom: 6px; + color: #ff88ff; + i { margin-right: 6px; } + } + + .chaos-effect { + line-height: 1.4; + i { margin-right: 6px; } + + &.desastre { + color: #ff4444; + font-weight: bold; + } + &.echec_absolu { + color: #ffaa44; + } + &.rien { + color: #aaaacc; + font-style: italic; + } + } + } + .predilection-section { padding: 8px; background: rgba(220, 200, 255, 0.4); @@ -2428,6 +2621,11 @@ text-decoration: none; transition: all 0.2s; font-size: 0.9rem; + background: none; + border: none; + padding: 0; + cursor: pointer; + font-family: inherit; i { margin-right: 4px; @@ -2473,4 +2671,303 @@ } } +// ===================================================== +// Sortilège dialog +// ===================================================== +.sortilege-dialog, +.potion-dialog, +.invocation-dialog { + font-family: CentaurMT, serif; + color: #2a1a0a; + padding: 10px; + background: url("../assets/ui/pc_sheet_bg.webp") repeat left top; + + // Texte de base sombre sur fond parchemin + label, input, span, p { + color: #2a1a0a; + } + th, td { + color: #2a1a0a; + } + + .sortilege-header { + display: flex; + align-items: center; + gap: 10px; + margin-bottom: 12px; + padding: 6px 10px; + background: linear-gradient(135deg, #4a0404 0%, #6d0808 100%); + border: 1px solid #8b0000; + border-radius: 4px; + + .sortilege-actor-info { + display: flex; + flex-direction: column; + gap: 3px; + } + + .sortilege-actor-img { + width: 48px; + height: 48px; + border-radius: 4px; + border: 2px solid #a05020; + object-fit: cover; + flex-shrink: 0; + } + .sortilege-actor-name { + font-weight: bold; + font-size: 1.05rem; + color: #ffffff; + text-shadow: 0 1px 3px rgba(0,0,0,0.9); + } + .sortilege-ame-info { + font-size: 0.88rem; + color: #fde0ff; + text-shadow: 0 1px 2px rgba(0,0,0,0.8); + strong { color: #ffffff; font-weight: bold; } + } + } + + .sortilege-mode-row { + display: flex; + align-items: center; + gap: 10px; + margin-bottom: 10px; + padding: 5px 4px; + border-bottom: 1px solid rgba(139, 69, 19, 0.4); + + label { + flex-shrink: 0; + font-weight: bold; + color: #5a1a00; + } + select { + flex: 1; + background: #3a1a08 !important; + border: 1px solid #c06030 !important; + border-radius: 3px; + padding: 5px 8px; + color: #ffffff !important; + font-family: CentaurMT, serif; + font-size: 0.95rem; + font-weight: bold; + cursor: pointer; + appearance: none; + -webkit-appearance: none; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%23ffd070' d='M6 8L0 0h12z'/%3E%3C/svg%3E") !important; + background-repeat: no-repeat !important; + background-position: right 8px center !important; + background-size: 10px 7px !important; + padding-right: 28px; + + option { + background: #1a0e06; + color: #ffffff; + font-weight: normal; + } + } + } + + .sortilege-runes-table { + width: 100%; + border-collapse: collapse; + margin-bottom: 12px; + font-size: 0.88rem; + border: 1px solid #6b3010; + border-radius: 4px; + overflow: hidden; + + thead tr th { + background: #3a1808; + padding: 6px 8px; + text-align: center; + border-bottom: 2px solid #8b4513; + color: #ffd070; + font-weight: bold; + font-size: 0.82rem; + text-transform: uppercase; + letter-spacing: 0.5px; + } + + tbody tr.sortilege-rune-row { + border-bottom: 1px solid rgba(139, 69, 19, 0.3); + transition: background 0.15s; + background: rgba(255, 240, 210, 0.3); + + &:last-child { border-bottom: none; } + &:nth-child(even) { background: rgba(200, 160, 100, 0.15); } + &:hover { background: rgba(139, 69, 19, 0.15); } + + &.rune-selected { + background: rgba(139, 69, 19, 0.25); + } + + td { + padding: 5px 8px; + vertical-align: middle; + color: #2a1a0a; + } + + .rune-mini-img { + width: 20px; + height: 20px; + vertical-align: middle; + margin-right: 4px; + border-radius: 2px; + border: 1px solid rgba(139, 69, 19, 0.5); + } + + .sortilege-rune-points { + width: 55px; + text-align: center; + background: #3a1a08; + border: 1px solid #8b4513; + border-radius: 3px; + color: #f0e8d8; + padding: 2px 4px; + font-family: CentaurMT, serif; + cursor: pointer; + + option { background: #1a0e06; color: #f0e8d8; } + + &:disabled { + opacity: 0.35; + cursor: not-allowed; + } + } + } + } + + .sortilege-summary { + background: linear-gradient(135deg, #4a0404 0%, #3a1808 100%); + border: 1px solid #8b4513; + border-left: 4px solid #c0392b; + border-radius: 4px; + padding: 10px 14px; + margin-bottom: 10px; + + .summary-row { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 6px; + font-size: 0.9rem; + + &:last-child { margin-bottom: 0; } + + .summary-label { + font-weight: bold; + color: #f0d8b0; + text-shadow: 0 1px 2px rgba(0,0,0,0.8); + } + .summary-value { + color: #ffd700; + font-weight: bold; + font-size: 1.05rem; + text-shadow: 0 1px 3px rgba(0,0,0,0.9); + } + } + } + + // Auto-cible and Modificateur rows + .flexrow { + display: flex; + align-items: center; + gap: 10px; + margin-bottom: 8px; + padding: 3px 4px; + + label { + flex: 1; + color: #5a1a00; + font-size: 0.9rem; + font-weight: bold; + } + + input[type="number"] { + width: 70px; + background: #3a1a08; + border: 1px solid #8b4513; + border-radius: 3px; + padding: 3px 8px; + color: #f0e8d8; + text-align: center; + font-family: CentaurMT, serif; + } + + .sortilege-modificateur-select { + width: 90px; + background: #3a1a08; + border: 1px solid #8b4513; + border-radius: 3px; + padding: 4px 8px; + color: #f0e8d8; + font-family: CentaurMT, serif; + text-align: center; + cursor: pointer; + + option { background: #1a0e06; color: #f0e8d8; } + } + + input[type="checkbox"] { + width: 16px; + height: 16px; + flex-shrink: 0; + accent-color: #c0392b; + } + } +} + +// ===================================================== +// Sortilège chat result +// ===================================================== +.mournblade-chat-result { + .sortilege-runes-summary { + margin-top: 8px; + border-top: 1px solid rgba(139, 69, 19, 0.3); + padding-top: 6px; + + .details-section-title { + font-weight: bold; + font-size: 0.85rem; + color: #4a0404; + margin-bottom: 4px; + + i { margin-right: 4px; } + } + + .sortilege-rune-detail { + align-items: center; + gap: 8px; + padding: 3px 0; + font-size: 0.82rem; + border-bottom: 1px solid rgba(0,0,0,0.06); + + .rune-mini-img { + width: 18px; + height: 18px; + border-radius: 2px; + flex-shrink: 0; + } + .rune-name { + flex: 1; + font-weight: bold; + } + .rune-formule { + font-style: italic; + color: #5a3a8a; + font-size: 0.8rem; + white-space: nowrap; + } + .rune-pts, .rune-actions { color: #666; white-space: nowrap; } + .rune-duree { color: #4a2060; font-style: italic; white-space: nowrap; } + } + } + + // Haut-Parler formule dans la rune (chat-generic-result) + .rune-formule { + font-style: italic; + color: #5a3a8a; + } +} diff --git a/modules/applications/mournblade-invocation-dialog.mjs b/modules/applications/mournblade-invocation-dialog.mjs new file mode 100644 index 0000000..7a79327 --- /dev/null +++ b/modules/applications/mournblade-invocation-dialog.mjs @@ -0,0 +1,126 @@ +import { MournbladeUtility } from "../mournblade-utility.js" + +export default class MournbladeInvocationDialog { + + 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) + + // Detect elemental pacte bonus — the bonus is always available, + // but we display it dynamically based on chosen element. + // We pass the pactes to let JS listeners detect the match. + const pactes = actor.getPactes().map(p => ({ + name: p.name, + 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") + + const context = { + ...rollData, + img: actor.img, + name: actor.name, + ameDisponible, + ameExtraOptions: Array.from({ length: maxExtra + 1 }, (_, i) => i), + modOptions: Array.from({ length: 21 }, (_, i) => i - 10), + hautParlerNiveau: hautParlerComp ? hautParlerComp.system.niveau : null, + seigneursElemNiveau: seigneursElemComp ? seigneursElemComp.system.niveau : null, + bonusPacte: false, + pactes, + } + + const content = await foundry.applications.handlebars.renderTemplate( + "systems/fvtt-mournblade/templates/dialog-invocation-elementaire.hbs", + context + ) + + Hooks.once("renderDialogV2", (_app, html) => { + const form = html.querySelector ? html : html[0] + MournbladeInvocationDialog._attachListeners(form, pactes) + }) + + return foundry.applications.api.DialogV2.wait({ + window: { title: "Invoquer un Élémentaire", icon: "fa-solid fa-wind" }, + classes: ["mournblade-roll-dialog"], + position: { width: 480 }, + modal: false, + content, + buttons: [ + { + action: "invoquer", + label: "Invoquer", + icon: "fa-solid fa-wind", + default: true, + callback: (event, button, dialog) => { + MournbladeInvocationDialog._updateRollData(rollData, button.form.elements, actor, pactes) + MournbladeUtility.rollInvocationElementaire(rollData) + } + }, + ], + rejectClose: false, + }) + } + + static _elementKeywords = { + air: ["air", "vent", "sylphe", "seigneur de l'air"], + terre: ["terre", "gnome", "seigneur de la terre"], + feu: ["feu", "flamme", "salamandre", "seigneur du feu"], + eau: ["eau", "ondine", "seigneur de l'eau"], + } + + static _hasPacteBonus(element, pactes) { + const keywords = MournbladeInvocationDialog._elementKeywords[element] || [] + return pactes.some(p => keywords.some(kw => p.allegeance.includes(kw))) + } + + static _attachListeners(html, pactes) { + const tierSeuils = { mineur: 15, median: 20, majeur: 25 } + const tierTemps = { mineur: "1 tour", median: "1 minute", majeur: "1 heure" } + + const recalculate = () => { + const element = html.querySelector('[name="element"]')?.value ?? "air" + const tier = html.querySelector('[name="tier"]')?.value ?? "mineur" + const ameExtra = parseInt(html.querySelector('[name="ameExtra"]')?.value ?? 0) + + const seuilBase = tierSeuils[tier] ?? 15 + const seuil = seuilBase + ameExtra + const hasPacte = MournbladeInvocationDialog._hasPacteBonus(element, pactes) + + const seuilEl = html.querySelector('#invoc-seuil') + const coutEl = html.querySelector('#invoc-cout') + const tempsEl = html.querySelector('#invoc-temps') + const pacteBanner = html.querySelector('.invoc-bonus-pacte') + + if (seuilEl) seuilEl.textContent = seuil + (hasPacte ? " (-5 avec bonus Pacte)" : "") + if (coutEl) coutEl.textContent = seuil + if (tempsEl) tempsEl.textContent = tierTemps[tier] ?? "1 tour" + if (pacteBanner) pacteBanner.style.display = hasPacte ? "" : "none" + } + + html.querySelectorAll('[name="element"], [name="tier"], [name="ameExtra"]').forEach(el => { + el.addEventListener('change', recalculate) + }) + recalculate() + } + + static _updateRollData(rollData, formElements, actor, pactes) { + const element = formElements['element']?.value ?? "air" + const tier = formElements['tier']?.value ?? "mineur" + const ameExtra = parseInt(formElements['ameExtra']?.value ?? 0) + const modificateur = parseInt(formElements['modificateur']?.value ?? 0) + + const tierSeuils = { mineur: 15, median: 20, majeur: 25 } + const seuilBase = tierSeuils[tier] ?? 15 + const seuil = seuilBase + ameExtra + + rollData.invocationElement = element + rollData.invocationTier = tier + rollData.invocationSeuil = seuil + rollData.invocationAmeExtra = ameExtra + rollData.invocationSoulCost = seuil + rollData.difficulte = seuil + rollData.modificateur = modificateur + rollData.bonusPacte = MournbladeInvocationDialog._hasPacteBonus(element, pactes) ? 5 : 0 + } +} diff --git a/modules/applications/mournblade-roll-dialog.mjs b/modules/applications/mournblade-roll-dialog.mjs index 8c9d720..1bdbac1 100644 --- a/modules/applications/mournblade-roll-dialog.mjs +++ b/modules/applications/mournblade-roll-dialog.mjs @@ -67,7 +67,248 @@ export class MournbladeRollDialog { } /** - * Mettre à jour rollData avec les valeurs du formulaire + * Create and display the sortilège (multi-rune spell) roll dialog + * @param {MournbladeActor} actor + * @param {Object} rollData + */ + static async createSortilege(actor, rollData) { + const ameDisponible = Math.max(1, (actor.system.ame.currentmax - actor.system.ame.value)) + const context = { + ...rollData, + img: actor.img, + name: actor.name, + config: game.system.mournblade.config, + runes: actor.getRunes(), + runemode: "prononcer", + ameDisponible, + ameOptions: Array.from({ length: ameDisponible }, (_, i) => i + 1), + modOptions: Array.from({ length: 21 }, (_, i) => i - 10), + } + + const content = await foundry.applications.handlebars.renderTemplate( + "systems/fvtt-mournblade/templates/dialog-sortilege.hbs", + context + ) + + // Attach dynamic recalculation after render + Hooks.once("renderDialogV2", (_app, html) => { + const form = html.querySelector ? html : html[0] + MournbladeRollDialog._attachSortilegeListeners(form) + }) + + return foundry.applications.api.DialogV2.wait({ + window: { title: "Lancer un Sortilège", icon: "fa-solid fa-star-of-david" }, + classes: ["mournblade-roll-dialog"], + position: { width: 520 }, + modal: false, + content, + buttons: [ + { + action: "rolld10", + label: "Lancer 1d10", + icon: "fa-solid fa-dice-d10", + default: true, + callback: (event, button, dialog) => { + this._updateSortilegeRollData(rollData, button.form.elements, actor) + rollData.mainDice = "1d10" + MournbladeUtility.rollSortilege(rollData) + } + }, + { + action: "rolld20", + label: "Lancer 1d20", + icon: "fa-solid fa-dice-d20", + callback: (event, button, dialog) => { + this._updateSortilegeRollData(rollData, button.form.elements, actor) + rollData.mainDice = "1d20" + MournbladeUtility.rollSortilege(rollData) + } + }, + ], + rejectClose: false, + }) + } + + /** + * Open the potion preparation dialog + * @param {MournbladeActor} actor + * @param {object} rollData + */ + static async createPotion(actor, rollData) { + const ameDisponible = Math.max(1, (actor.system.ame.currentmax - actor.system.ame.value)) + const context = { + ...rollData, + img: actor.img, + name: actor.name, + config: game.system.mournblade.config, + runes: actor.getRunes(), + ameDisponible, + ameOptions: Array.from({ length: ameDisponible }, (_, i) => i + 1), + modOptions: Array.from({ length: 21 }, (_, i) => i - 10), + } + + const content = await foundry.applications.handlebars.renderTemplate( + "systems/fvtt-mournblade/templates/dialog-potion.hbs", + context + ) + + Hooks.once("renderDialogV2", (_app, html) => { + const form = html.querySelector ? html : html[0] + MournbladeRollDialog._attachPotionListeners(form) + }) + + return foundry.applications.api.DialogV2.wait({ + window: { title: "Préparer une Potion", icon: "fa-solid fa-flask" }, + classes: ["mournblade-roll-dialog"], + position: { width: 520 }, + modal: false, + content, + buttons: [ + { + action: "preparer", + label: "Préparer", + icon: "fa-solid fa-flask", + default: true, + callback: (event, button, dialog) => { + MournbladeRollDialog._updatePotionRollData(rollData, button.form.elements, actor) + MournbladeUtility.rollPotion(rollData) + } + }, + ], + rejectClose: false, + }) + } + + /** + * Attach dynamic recalculation listeners to the potion dialog + * @param {HTMLElement} html + */ + static _attachPotionListeners(html) { + const recalculate = () => { + const radioChecked = html.querySelector('.potion-rune-radio:checked') + const runeRow = radioChecked?.closest('[data-seuil]') + const seuil = parseInt(runeRow?.dataset.seuil ?? 0) + const pa = parseInt(html.querySelector('[name="pointsAme"]')?.value ?? 1) + const mod = parseInt(html.querySelector('[name="modificateur"]')?.value ?? 0) + + const difficulteEl = html.querySelector('#potion-difficulte') + if (difficulteEl) difficulteEl.textContent = (seuil + pa) + (mod !== 0 ? ` (mod ${mod > 0 ? '+' : ''}${mod})` : '') + + const tempsEl = html.querySelector('#potion-temps') + if (tempsEl) { + const heures = Math.max(1, Math.ceil(pa / 3)) + tempsEl.textContent = heures === 1 ? '1 heure' : `${heures} heures` + } + } + + html.querySelectorAll('.potion-rune-radio, [name="pointsAme"]').forEach(el => { + el.addEventListener('change', recalculate) + }) + recalculate() + } + + /** + * Update rollData from the potion dialog form elements + * @param {object} rollData + * @param {HTMLFormControlsCollection} formElements + * @param {MournbladeActor} actor + */ + static _updatePotionRollData(rollData, formElements, actor) { + const runeId = formElements['rune-selected']?.value + if (runeId) { + const rune = actor.getRunes().find(r => r._id === runeId) + if (rune) { + rollData.runeId = runeId + rollData.runeName = rune.name + rollData.runeImg = rune.img + rollData.runeSeuil = rune.system.seuil ?? 0 + rollData.runeHautParler = rune.system.hautParler ?? "" + } + } + rollData.pointsAme = parseInt(formElements['pointsAme']?.value ?? 1) + rollData.forme = formElements['forme']?.value ?? "liquide" + rollData.modificateur = parseInt(formElements['modificateur']?.value ?? 0) + } + + /** + * Attach dynamic recalculation listeners to the sortilège dialog + * @param {HTMLElement} html + */ + static _attachSortilegeListeners(html) { + const recalculate = () => { + const checkboxes = html.querySelectorAll('.sortilege-rune-checkbox:checked') + const modeSelect = html.querySelector('[name="runemode"]') + const mode = modeSelect?.value ?? "prononcer" + + let maxSeuil = 0 + let totalAme = 0 + let totalActions = 0 + let count = 0 + + // Enable/disable points inputs based on checkbox state + html.querySelectorAll('.sortilege-rune-checkbox').forEach(cb => { + const row = cb.closest('.sortilege-rune-row') + const pointsInput = row?.querySelector('.sortilege-rune-points') + if (pointsInput) pointsInput.disabled = !cb.checked + }) + + checkboxes.forEach(cb => { + const row = cb.closest('.sortilege-rune-row') + const seuil = Number(row?.dataset.seuil ?? 0) + const pts = Number(row?.querySelector('.sortilege-rune-points')?.value ?? 1) + if (seuil > maxSeuil) maxSeuil = seuil + totalAme += pts + totalActions += Math.ceil(pts / 3) * (mode === "inscrire" ? 2 : 1) + count++ + }) + + const difficulte = count > 0 ? maxSeuil + (count - 1) : 0 + html.querySelector('#sortilege-difficulte').textContent = count > 0 ? difficulte : '—' + html.querySelector('#sortilege-total-ame').textContent = totalAme + html.querySelector('#sortilege-actions').textContent = totalActions + } + + html.querySelectorAll('.sortilege-rune-checkbox, .sortilege-rune-points, [name="runemode"]') + .forEach(el => el.addEventListener('change', recalculate)) + } + + /** + * Extract sortilège data from the form + * @param {Object} rollData + * @param {HTMLFormControlsCollection} formElements + * @param {MournbladeActor} actor + */ + static _updateSortilegeRollData(rollData, formElements, actor) { + rollData.runemode = formElements.runemode?.value ?? "prononcer" + rollData.modificateur = Number(formElements.modificateur?.value ?? 0) + rollData.runeautocible = formElements.runeautocible?.checked ?? false + + // Collect selected runes with their soul points + const runes = actor.getRunes() + rollData.sortilegeRunes = [] + for (const rune of runes) { + const checkbox = formElements[`rune-selected-${rune._id}`] + if (checkbox?.checked) { + const pts = Math.max(1, Number(formElements[`rune-points-${rune._id}`]?.value ?? 1)) + rollData.sortilegeRunes.push({ + id: rune._id, + name: rune.name, + img: rune.img, + seuil: rune.system.seuil, + formule: rune.system.formule, + pts, + }) + } + } + + if (rollData.sortilegeRunes.length === 0) return + + const maxSeuil = Math.max(...rollData.sortilegeRunes.map(r => r.seuil)) + rollData.difficulte = maxSeuil + (rollData.sortilegeRunes.length - 1) + rollData.runeame = rollData.sortilegeRunes.reduce((s, r) => s + r.pts, 0) + } + + /** * @param {Object} rollData - L'objet rollData à mettre à jour * @param {HTMLFormControlsCollection} formElements - Les éléments du formulaire * @param {MournbladeActor} actor - L'acteur pour récupérer les attributs @@ -98,6 +339,9 @@ export class MournbladeRollDialog { if (formElements.runeame) { rollData.runeame = Number(formElements.runeame.value) } + if (formElements.runeautocible !== undefined) { + rollData.runeautocible = formElements.runeautocible.checked + } // Combat mêlée if (formElements.typeAttaque) { diff --git a/modules/applications/sheets/_module.mjs b/modules/applications/sheets/_module.mjs index 8afe431..1f5b680 100644 --- a/modules/applications/sheets/_module.mjs +++ b/modules/applications/sheets/_module.mjs @@ -24,6 +24,7 @@ export { default as MournbladePacteSheet } from './mournblade-pacte-sheet.mjs'; export { default as MournbladeProtectionSheet } from './mournblade-protection-sheet.mjs'; export { default as MournbladeRuneSheet } from './mournblade-rune-sheet.mjs'; export { default as MournbladeRuneEffectSheet } from './mournblade-runeeffect-sheet.mjs'; +export { default as MournbladePotionSheet } from './mournblade-potion-sheet.mjs'; export { default as MournbladeTendanceSheet } from './mournblade-tendance-sheet.mjs'; export { default as MournbladeTraitChaotiqueSheet } from './mournblade-traitchaotique-sheet.mjs'; export { default as MournbladeTraitEspeceSheet } from './mournblade-traitespece-sheet.mjs'; diff --git a/modules/applications/sheets/base-actor-sheet.mjs b/modules/applications/sheets/base-actor-sheet.mjs index f7a8737..5170416 100644 --- a/modules/applications/sheets/base-actor-sheet.mjs +++ b/modules/applications/sheets/base-actor-sheet.mjs @@ -45,6 +45,7 @@ export default class MournbladeActorSheet extends HandlebarsApplicationMixin(fou editItem: MournbladeActorSheet.#onEditItem, deleteItem: MournbladeActorSheet.#onDeleteItem, createItem: MournbladeActorSheet.#onCreateItem, + postItem: MournbladeActorSheet.#onPostItem, equipItem: MournbladeActorSheet.#onEquipItem, modifyQuantity: MournbladeActorSheet.#onModifyQuantity, modifySante: MournbladeActorSheet.#onModifySante, @@ -52,6 +53,10 @@ export default class MournbladeActorSheet extends HandlebarsApplicationMixin(fou rollAttribut: MournbladeActorSheet.#onRollAttribut, rollCompetence: MournbladeActorSheet.#onRollCompetence, rollRune: MournbladeActorSheet.#onRollRune, + rollSortilege: MournbladeActorSheet.#onRollSortilege, + preparePotion: MournbladeActorSheet.#onPreparePotion, + invoquerElementaire: MournbladeActorSheet.#onInvoquerElementaire, + bannirElementaire: MournbladeActorSheet.#onBannirElementaire, rollArmeOffensif: MournbladeActorSheet.#onRollArmeOffensif, rollArmeSpecial: MournbladeActorSheet.#onRollArmeSpecial, rollArmeDegats: MournbladeActorSheet.#onRollArmeDegats, @@ -238,6 +243,16 @@ export default class MournbladeActorSheet extends HandlebarsApplicationMixin(fou await this.actor.createEmbeddedDocuments("Item", [{ name: `Nouveau ${itemType}`, type: itemType }], { renderSheet: true }) } + /** + * Handle posting an item to chat + */ + static async #onPostItem(event, target) { + const li = target.closest(".item") + const itemId = li?.dataset.itemId ?? target.dataset.itemId + if (!itemId) return + MournbladeUtility.postItemToChat(this.actor.id, itemId) + } + /** * Handle equipping an item * @param {Event} event - The triggering event @@ -335,6 +350,39 @@ export default class MournbladeActorSheet extends HandlebarsApplicationMixin(fou await actor.rollRune(runeId) } + /** + * Handle launching a sortilège (multi-rune spell) + */ + static async #onRollSortilege(event, target) { + event.preventDefault() + await this.document.rollSortilege() + } + + /** + * Handle preparing a potion + */ + static async #onPreparePotion(event, target) { + event.preventDefault() + await this.document.preparePotion() + } + + /** + * Handle invoking an elemental + */ + static async #onInvoquerElementaire(event, target) { + event.preventDefault() + await this.document.invoquerElementaire() + } + + /** + * Handle banishing an elemental invocation + */ + static async #onBannirElementaire(event, target) { + event.preventDefault() + const invocIndex = parseInt(target.dataset.invocIndex ?? "0") + await this.document.bannirElementaire(invocIndex) + } + /** * 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 6960ca7..420b81f 100644 --- a/modules/applications/sheets/base-item-sheet.mjs +++ b/modules/applications/sheets/base-item-sheet.mjs @@ -122,21 +122,37 @@ export default class MournbladeItemSheet extends HandlebarsApplicationMixin(foun if (this.document.actor) { chatData.actor = { id: this.document.actor.id } } - // Don't post any image for the item if the default image is used - if (chatData.img.includes("/blank.png")) { + if (chatData.img?.includes("/blank.png")) { chatData.img = null } - // JSON object for easy creation chatData.jsondata = JSON.stringify({ compendium: "postedItem", payload: chatData, }) - const html = await foundry.applications.handlebars.renderTemplate('systems/fvtt-mournblade/templates/post-item.hbs', chatData) - const chatOptions = { - user: game.user.id, - content: html, + // Localized type label + const typeLabels = { + arme: "Arme", bouclier: "Bouclier", competence: "Compétence", + rune: "Rune", runeeffect: "Rune Active", don: "Don", pacte: "Pacte", + 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" } - ChatMessage.create(chatOptions) + chatData.typeLabel = typeLabels[chatData.type] ?? chatData.type + + // Type icon for the badge + const typeIcons = { + arme: "fa-sword", bouclier: "fa-shield-halved", competence: "fa-graduation-cap", + rune: "fa-star-of-david", runeeffect: "fa-star-of-david", don: "fa-hand-sparkles", + 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" + } + chatData.typeIcon = typeIcons[chatData.type] ?? "fa-cube" + + const html = await foundry.applications.handlebars.renderTemplate('systems/fvtt-mournblade/templates/post-item.hbs', chatData) + ChatMessage.create({ user: game.user.id, content: html }) } } \ No newline at end of file diff --git a/modules/applications/sheets/mournblade-creature-sheet.mjs b/modules/applications/sheets/mournblade-creature-sheet.mjs index cb8a00f..094bed6 100644 --- a/modules/applications/sheets/mournblade-creature-sheet.mjs +++ b/modules/applications/sheets/mournblade-creature-sheet.mjs @@ -32,6 +32,7 @@ export default class MournbladeCreatureSheet extends MournbladeActorSheet { context.skills = actor.getSkills() context.armes = foundry.utils.duplicate(actor.getWeapons()) context.protections = foundry.utils.duplicate(actor.getArmors()) + context.capacites = foundry.utils.duplicate(actor.getCapacites()) context.runes = foundry.utils.duplicate(actor.getRunes()) context.combat = actor.getCombatValues() context.equipements = foundry.utils.duplicate(actor.getEquipments()) diff --git a/modules/applications/sheets/mournblade-potion-sheet.mjs b/modules/applications/sheets/mournblade-potion-sheet.mjs new file mode 100644 index 0000000..41ba7f7 --- /dev/null +++ b/modules/applications/sheets/mournblade-potion-sheet.mjs @@ -0,0 +1,47 @@ +import MournbladeItemSheet from "./base-item-sheet.mjs" + +export default class MournbladePotionSheet extends MournbladeItemSheet { + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["potion"], + position: { + width: 640, + }, + window: { + contentClasses: ["potion-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/fvtt-mournblade/templates/item-potion-sheet.hbs", + }, + } + + /** @override */ + tabGroups = { + primary: "details", + } + + #getTabs() { + const tabs = { + details: { id: "details", group: "primary", label: "Détails" }, + effets: { id: "effets", group: "primary", label: "Effets" }, + description: { id: "description", group: "primary", label: "Description" }, + } + for (const v of Object.values(tabs)) { + v.active = this.tabGroups[v.group] === v.id + v.cssClass = v.active ? "active" : "" + } + return tabs + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + context.tabs = this.#getTabs() + context.config = game.system.mournblade.config + return context + } +} diff --git a/modules/models/capacite.mjs b/modules/models/capacite.mjs index d13d921..3c434f6 100644 --- a/modules/models/capacite.mjs +++ b/modules/models/capacite.mjs @@ -5,6 +5,7 @@ export default class CapaciteDataModel extends foundry.abstract.TypeDataModel { static defineSchema() { const fields = foundry.data.fields; return { + typeCapacite: new fields.StringField({ initial: "creature", blank: false }), description: new fields.HTMLField({ initial: "" }) }; } diff --git a/modules/models/creature.mjs b/modules/models/creature.mjs index 5feb6e3..3830bd3 100644 --- a/modules/models/creature.mjs +++ b/modules/models/creature.mjs @@ -10,6 +10,8 @@ export default class CreatureDataModel extends foundry.abstract.TypeDataModel { name: new fields.StringField({ initial: "" }), age: new fields.NumberField({ initial: 0, integer: true }), alignement: new fields.StringField({ initial: "" }), + creatureType: new fields.StringField({ initial: "creature" }), + elementType: new fields.StringField({ initial: "" }), poids: new fields.StringField({ initial: "" }), taille: new fields.StringField({ initial: "" }), cheveux: new fields.StringField({ initial: "" }), diff --git a/modules/models/index.mjs b/modules/models/index.mjs index 983713f..e262812 100644 --- a/modules/models/index.mjs +++ b/modules/models/index.mjs @@ -19,6 +19,7 @@ export { default as PacteDataModel } from './pacte.mjs'; export { default as ProtectionDataModel } from './protection.mjs'; export { default as RuneDataModel } from './rune.mjs'; export { default as RuneEffectDataModel } from './runeeffect.mjs'; +export { default as PotionDataModel } from './potion.mjs'; export { default as TendanceDataModel } from './tendance.mjs'; export { default as TraitChaotiqueDataModel } from './traitchaotique.mjs'; export { default as TraitEspeceDataModel } from './traitespece.mjs'; diff --git a/modules/models/personnage.mjs b/modules/models/personnage.mjs index d667604..3c65891 100644 --- a/modules/models/personnage.mjs +++ b/modules/models/personnage.mjs @@ -80,6 +80,7 @@ export default class PersonnageDataModel extends foundry.abstract.TypeDataModel value: new fields.NumberField({ initial: 0, integer: true }), traumatismes: new fields.StringField({ initial: "" }) }), + invocationsElementaires: 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/potion.mjs b/modules/models/potion.mjs new file mode 100644 index 0000000..417772b --- /dev/null +++ b/modules/models/potion.mjs @@ -0,0 +1,24 @@ +/** + * Data model pour les potions à base de runes + */ +export default class PotionDataModel extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields; + return { + description: new fields.HTMLField({ initial: "" }), + effetCuratif: new fields.HTMLField({ initial: "" }), + effetLetal: new fields.HTMLField({ initial: "" }), + effetSecondaire: new fields.HTMLField({ initial: "" }), + rune: new fields.StringField({ initial: "" }), + runeImg: new fields.StringField({ initial: "" }), + runeSeuil: new fields.NumberField({ initial: 0, integer: true }), + pointsAme: new fields.NumberField({ initial: 1, integer: true, min: 1 }), + forme: new fields.StringField({ initial: "liquide" }), + statut: new fields.StringField({ initial: "inconnue" }), + virulence: new fields.NumberField({ initial: 0, integer: true }), + duree: new fields.StringField({ initial: "" }), + conservation: new fields.StringField({ initial: "" }), + tempsPreparation: new fields.StringField({ initial: "" }), + }; + } +} diff --git a/modules/mournblade-actor.js b/modules/mournblade-actor.js index a1f4228..bd524b7 100644 --- a/modules/mournblade-actor.js +++ b/modules/mournblade-actor.js @@ -1,6 +1,7 @@ /* -------------------------------------------- */ import { MournbladeUtility } from "./mournblade-utility.js"; import { MournbladeRollDialog } from "./applications/mournblade-roll-dialog.mjs"; +import MournbladeInvocationDialog from "./applications/mournblade-invocation-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] @@ -215,6 +216,9 @@ export class MournbladeActor extends Actor { getArmors() { return this.getItemSorted(["protection"]) } + getCapacites() { + return this.getItemSorted(["capacite"]) + } getRuneEffects() { return this.getItemSorted(["runeeffect"]) } @@ -455,7 +459,7 @@ export class MournbladeActor extends Actor { } else { ame.currentmax -= value } - this.update({ 'system.ame': ame }) + return this.update({ 'system.ame': ame }) } /* -------------------------------------------- */ @@ -650,6 +654,91 @@ export class MournbladeActor extends Actor { await MournbladeRollDialog.create(this, rollData) } + /* -------------------------------------------- */ + async rollSortilege() { + const runes = this.getRunes() + if (runes.length < 2) { + ui.notifications.warn("Il faut au moins deux Runes pour lancer un Sortilège.") + return + } + const comp = this.items.find(c => c.type == "competence" && c.name.toLowerCase() == "savoir : runes") + if (!comp) { + ui.notifications.warn("La compétence Savoir : Runes n'a pas été trouvée, abandon.") + return + } + let rollData = this.getCommonRollData("cla", undefined, "Savoir : Runes") + rollData.isSortilege = true + rollData.difficulte = 0 + rollData.runemode = "prononcer" + rollData.runeame = 0 + await MournbladeRollDialog.createSortilege(this, rollData) + } + + /* -------------------------------------------- */ + async preparePotion() { + const runes = this.getRunes() + if (runes.length === 0) { + ui.notifications.warn("Aucune Rune disponible pour préparer une potion.") + return + } + const comp = this.items.find(c => c.type == "competence" && c.name.toLowerCase() == "savoir : runes") + if (!comp) { + ui.notifications.warn("La compétence Savoir : Runes n'a pas été trouvée, abandon.") + return + } + let rollData = this.getCommonRollData("cla", comp._id) + rollData.isPotion = true + rollData.mainDice = "1d10" + + // Optionally cap by Savoir:Haut-Parler and Savoir:Alchimie + const hautParlerComp = this.items.find(c => c.type == "competence" && c.name.toLowerCase() == "savoir : haut-parler") + const alchimieComp = this.items.find(c => c.type == "competence" && c.name.toLowerCase() == "savoir : alchimie") + if (hautParlerComp) rollData.limitHautParlerValue = hautParlerComp.system.niveau + if (alchimieComp) rollData.limitAlchimieValue = alchimieComp.system.niveau + + await MournbladeRollDialog.createPotion(this, rollData) + } + + /* -------------------------------------------- */ + async invoquerElementaire() { + const persuasionComp = this.items.find(c => c.type == "competence" && c.name.toLowerCase() == "persuasion") + if (!persuasionComp) { + ui.notifications.warn("La compétence Persuasion est requise pour invoquer un Élémentaire.") + return + } + let rollData = this.getCommonRollData("pre", persuasionComp._id) + rollData.isInvocationElementaire = true + rollData.mainDice = "1d10" + + const hautParlerComp = this.items.find(c => c.type == "competence" && c.name.toLowerCase() == "savoir : haut-parler") + const seigneursElemComp = this.items.find(c => c.type == "competence" && c.name.toLowerCase() == "savoir : seigneurs élémentaires") + if (hautParlerComp) rollData.hautParlerNiveau = hautParlerComp.system.niveau + if (seigneursElemComp) rollData.seigneursElemNiveau = seigneursElemComp.system.niveau + + await MournbladeInvocationDialog.create(this, rollData) + } + + /* -------------------------------------------- */ + async bannirElementaire(invocIndex) { + const invocations = foundry.utils.duplicate(this.system.invocationsElementaires || []) + const invoc = invocations[invocIndex] + if (!invoc) return + + // Free the blocked soul + await this.subPointsAme("prononcer", -invoc.soulCost) + + // Delete the created actor if it still exists + if (invoc.actorId) { + const createdActor = game.actors.get(invoc.actorId) + if (createdActor) await createdActor.delete() + } + + // Remove from the list + invocations.splice(invocIndex, 1) + await this.update({ "system.invocationsElementaires": invocations }) + ui.notifications.info(`L'Élémentaire ${invoc.actorName} a été banni. ${invoc.soulCost} points d'Âme libérés.`) + } + /* -------------------------------------------- */ async rollArmeOffensif(armeId) { let arme = this.items.get(armeId) diff --git a/modules/mournblade-config.js b/modules/mournblade-config.js index 067fbc8..e59148f 100644 --- a/modules/mournblade-config.js +++ b/modules/mournblade-config.js @@ -72,6 +72,36 @@ export class MournbladeConfig { loi: game.i18n.localize("MNBL.law"), betes: game.i18n.localize("MNBL.beastslords"), elementaires: game.i18n.localize("MNBL.elementslords") + }, + potionFormeOptions: { + liquide: game.i18n.localize("MNBL.potionLiquide"), + onguent: game.i18n.localize("MNBL.potionOnguent"), + cachets: game.i18n.localize("MNBL.potionCachets"), + pilules: game.i18n.localize("MNBL.potionPilules"), + }, + potionStatutOptions: { + inconnue: game.i18n.localize("MNBL.potionInconnue"), + efficace: game.i18n.localize("MNBL.potionEfficace"), + heroique: game.i18n.localize("MNBL.potionHeroique"), + inefficace: game.i18n.localize("MNBL.potionInnefficace"), + poison: game.i18n.localize("MNBL.potionPoison"), + }, + typeCapaciteOptions: { + elue: game.i18n.localize("MNBL.typeCapaciteElue"), + elementaire: game.i18n.localize("MNBL.typeCapaciteElementaire"), + demoniaque: game.i18n.localize("MNBL.typeCapaciteDemoniaque"), + 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"), + }, + 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"), } } diff --git a/modules/mournblade-item.js b/modules/mournblade-item.js index 7b308c2..452ffb0 100644 --- a/modules/mournblade-item.js +++ b/modules/mournblade-item.js @@ -1,20 +1,22 @@ import { MournbladeUtility } from "./mournblade-utility.js"; export const defaultItemImg = { - competence: "systems/fvtt-mournblade/assets/icons/competence.webp", - arme: "systems/fvtt-mournblade/assets/icons/arme.webp", - capacite: "systems/fvtt-mournblade/assets/icons/capacite.webp", - don: "systems/fvtt-mournblade/assets/icons/don.webp", - equipement: "systems/fvtt-mournblade/assets/icons/equipement.webp", - monnaie: "systems/fvtt-mournblade/assets/icons/monnaie.webp", - pacte: "systems/fvtt-mournblade/assets/icons/pacte.webp", - predilection: "systems/fvtt-mournblade/assets/icons/predilection.webp", - protection: "systems/fvtt-mournblade/assets/icons/protection.webp", - rune: "systems/fvtt-mournblade/assets/icons/rune.webp", - runeeffect: "systems/fvtt-mournblade/assets/icons/rune.webp", - tendance: "systems/fvtt-mournblade/assets/icons/tendance.webp", - traitchaotique: "systems/fvtt-mournblade/assets/icons/traitchaotique.webp", - traitespece: "systems/fvtt-mournblade/assets/icons/capacite.webp" + competence: "systems/fvtt-mournblade/assets/icons/competence.webp", + arme: "systems/fvtt-mournblade/assets/icons/arme.webp", + capacite: "systems/fvtt-mournblade/assets/icons/capacite.webp", + don: "systems/fvtt-mournblade/assets/icons/don.webp", + equipement: "systems/fvtt-mournblade/assets/icons/equipement.webp", + monnaie: "systems/fvtt-mournblade/assets/icons/monnaie.webp", + pacte: "systems/fvtt-mournblade/assets/icons/pacte.webp", + predilection: "systems/fvtt-mournblade/assets/icons/predilection.webp", + protection: "systems/fvtt-mournblade/assets/icons/protection.webp", + rune: "systems/fvtt-mournblade/assets/icons/rune.webp", + runeeffect: "systems/fvtt-mournblade/assets/icons/rune.webp", + potion: "systems/fvtt-mournblade/assets/icons/potion.webp", + tendance: "systems/fvtt-mournblade/assets/icons/tendance.webp", + traitchaotique: "systems/fvtt-mournblade/assets/icons/traitchaotique.webp", + traitespece: "systems/fvtt-mournblade/assets/icons/capacite.webp", + potion: "systems/fvtt-mournblade/assets/icons/potion.svg", } /** diff --git a/modules/mournblade-main.js b/modules/mournblade-main.js index 7c0f49e..a89ab6b 100644 --- a/modules/mournblade-main.js +++ b/modules/mournblade-main.js @@ -74,6 +74,7 @@ Hooks.once("init", async function () { protection: models.ProtectionDataModel, rune: models.RuneDataModel, runeeffect: models.RuneEffectDataModel, + potion: models.PotionDataModel, tendance: models.TendanceDataModel, traitchaotique: models.TraitChaotiqueDataModel, traitespece: models.TraitEspeceDataModel @@ -108,6 +109,7 @@ Hooks.once("init", async function () { foundry.documents.collections.Items.registerSheet("fvtt-mournblade", sheets.MournbladeProtectionSheet, { types: ["protection"], makeDefault: true }); foundry.documents.collections.Items.registerSheet("fvtt-mournblade", sheets.MournbladeRuneSheet, { types: ["rune"], makeDefault: true }); foundry.documents.collections.Items.registerSheet("fvtt-mournblade", sheets.MournbladeRuneEffectSheet, { types: ["runeeffect"], makeDefault: true }); + foundry.documents.collections.Items.registerSheet("fvtt-mournblade", sheets.MournbladePotionSheet, { types: ["potion"], makeDefault: true }); foundry.documents.collections.Items.registerSheet("fvtt-mournblade", sheets.MournbladeTendanceSheet, { types: ["tendance"], makeDefault: true }); foundry.documents.collections.Items.registerSheet("fvtt-mournblade", sheets.MournbladeTraitChaotiqueSheet, { types: ["traitchaotique"], makeDefault: true }); foundry.documents.collections.Items.registerSheet("fvtt-mournblade", sheets.MournbladeTraitEspeceSheet, { types: ["traitespece"], makeDefault: true }); diff --git a/modules/mournblade-utility.js b/modules/mournblade-utility.js index a3ef150..fae82f0 100644 --- a/modules/mournblade-utility.js +++ b/modules/mournblade-utility.js @@ -127,6 +127,12 @@ export class MournbladeUtility { /* -------------------------------------------- */ static async chatListeners(html) { + $(html).on("click", '.mournblade-open-guide', async event => { + event.preventDefault() + const doc = await fromUuid("Compendium.fvtt-mournblade.journal-aide.JournalEntry.JurnlHelpGuide01") + if (doc) doc.sheet.render(true) + }) + $(html).on("click", '.predilection-reroll', async event => { let predIdx = $(event.currentTarget).data("predilection-index") let messageId = MournbladeUtility.findChatMessageId(event.currentTarget) @@ -157,6 +163,52 @@ export class MournbladeUtility { game.socket.emit("system.fvtt-mournblade", { name: "msg_apply_damage", data: { rollData: rollData } }) } }) + + $(html).on("click", '.rune-post-chat', async event => { + event.preventDefault() + const btn = event.currentTarget + const actorId = btn.dataset.actorId + const itemId = btn.dataset.itemId + await MournbladeUtility.postItemToChat(actorId, itemId) + }) + } + + /* -------------------------------------------- */ + static async postItemToChat(actorId, itemId) { + const actor = game.actors.get(actorId) + const item = actor?.items.get(itemId) + if (!item) { ui.notifications.warn("Item introuvable."); return } + + let chatData = foundry.utils.duplicate(item) + if (actor) chatData.actor = { id: actor.id } + if (chatData.img?.includes("/blank.png")) chatData.img = null + + chatData.jsondata = JSON.stringify({ compendium: "postedItem", payload: chatData }) + + const typeLabels = { + arme: "Arme", bouclier: "Bouclier", competence: "Compétence", + rune: "Rune", runeeffect: "Rune Active", don: "Don", pacte: "Pacte", + 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" + } + chatData.typeLabel = typeLabels[chatData.type] ?? chatData.type + + const typeIcons = { + arme: "fa-sword", bouclier: "fa-shield-halved", competence: "fa-graduation-cap", + rune: "fa-star-of-david", runeeffect: "fa-star-of-david", don: "fa-hand-sparkles", + 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", + potion: "fa-flask" + } + chatData.typeIcon = typeIcons[chatData.type] ?? "fa-cube" + + const html = await foundry.applications.handlebars.renderTemplate( + 'systems/fvtt-mournblade/templates/post-item.hbs', chatData) + ChatMessage.create({ user: game.user.id, content: html }) } /* -------------------------------------------- */ @@ -166,7 +218,9 @@ export class MournbladeUtility { 'systems/fvtt-mournblade/templates/editor-notes-gm.hbs', '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-nav.hbs', + 'systems/fvtt-mournblade/templates/dialog-invocation-elementaire.hbs', + 'systems/fvtt-mournblade/templates/chat-invocation-result.hbs', ] return foundry.applications.handlebars.loadTemplates(templatePaths); } @@ -391,12 +445,16 @@ export class MournbladeUtility { } if (rollData.rune) { - rollData.runeduree = Math.ceil((rollData.runeame + 3) / 3) + const actionsBase = Math.ceil(rollData.runeame / 3) + rollData.runeActionsComplexes = (rollData.runemode == "inscrire") ? actionsBase * 2 : actionsBase + if (rollData.runemode == "inscrire") { - rollData.runeduree *= 2 - } - if (rollData.runemode == "prononcer") { - rollData.runeduree = 1 + rollData.runeduree = null // durée infinie + rollData.dureeLabel = "infinie" + } else { + // prononcer : 1 heure de base + 1 heure par tranche de 2 points d'âme + rollData.runeduree = 1 + Math.floor(rollData.runeame / 2) + rollData.dureeLabel = rollData.runeduree === 1 ? "1 heure" : `${rollData.runeduree} heures` } } @@ -412,17 +470,40 @@ export class MournbladeUtility { // Application immédiate selon type de jet if (rollData.rune) { let subAme = rollData.runeame - if (rollData.isEchec && !rollData.isDramatique) { + + // Réussite héroïque + rune uniquement sur soi : coût d'âme divisé par 2 (arrondi sup.) + if (rollData.isHeroique && rollData.runeautocible) { + subAme = Math.ceil(subAme / 2) + rollData.runeameCostReduit = true + rollData.runeameCostFinal = subAme + } else if (rollData.isEchec && !rollData.isDramatique) { + // Échec simple : perd la moitié (arrondie sup.) subAme = Math.ceil((subAme + 1) / 2) } actor.subPointsAme(rollData.runemode, subAme) + // Échec dramatique : dé du Chaos (d20) + if (rollData.isDramatique) { + const chaosRoll = await new Roll("1d20").evaluate() + await this.showDiceSoNice(chaosRoll, game.settings.get("core", "rollMode")) + const cr = chaosRoll.terms[0].results[0].result + rollData.chaosDieResult = cr + const claValue = rollData.attr?.value ?? 0 + if (cr === 1 || cr === 11) { + rollData.chaosEffet = "desastre" + rollData.chaosEffetTexte = `Désastre extraordinaire ! La Rune se déclenche à des kilomètres de là sur des cibles inconnues. La Loi se manifeste : le sorcier ne peut plus utiliser l'Œil pendant ${claValue} semaine${claValue > 1 ? "s" : ""}.` + } else if (cr % 2 === 1) { + rollData.chaosEffet = "echec_absolu" + rollData.chaosEffetTexte = "Échec absolu. Le MJ décide si la Rune se manifeste sur des cibles autres, dans des proportions désavantageuses ou en un lieu très lointain." + } else { + rollData.chaosEffet = "rien" + rollData.chaosEffetTexte = "Rien de particulier ne se produit en plus de la perte des points d'Âme." + } + } + // Créer l'effet de rune sur l'acteur si le jet est réussi if (rollData.isSuccess) { const effetMode = (rollData.runemode == "prononcer") ? "prononcee" : "inscrite" - const dureeLabel = rollData.runeduree === 1 - ? `${rollData.runeduree} tour` - : `${rollData.runeduree} tours` await actor.createEmbeddedDocuments("Item", [{ name: rollData.rune.name, type: "runeeffect", @@ -430,7 +511,7 @@ export class MournbladeUtility { system: { rune: rollData.rune.name, mode: effetMode, - duree: dureeLabel, + duree: rollData.dureeLabel, pointame: rollData.runeame } }]) @@ -455,6 +536,99 @@ export class MournbladeUtility { } + /* -------------------------------------------- */ + static async rollSortilege(rollData) { + if (!rollData.sortilegeRunes || rollData.sortilegeRunes.length === 0) { + ui.notifications.warn("Aucune Rune sélectionnée pour le Sortilège.") + return + } + + const actor = rollData.tokenId + ? game.canvas.tokens.get(rollData.tokenId)?.actor + : game.actors.get(rollData.actorId) + + // Pré-calcul des infos du sortilège + const isInscrire = rollData.runemode === "inscrire" + + rollData.sortilegeRunes.forEach(r => { + r.actionsComplexes = Math.ceil(r.pts / 3) * (isInscrire ? 2 : 1) + if (isInscrire) { + r.dureeLabel = "infinie" + } else { + const h = 1 + Math.floor(r.pts / 2) + r.dureeLabel = h === 1 ? "1 heure" : `${h} heures` + } + }) + + rollData.runeActionsComplexes = rollData.sortilegeRunes.reduce((s, r) => s + r.actionsComplexes, 0) + + // Construction de la formule de jet : mainDice + CLA + Savoir:Runes + malus + modificateur + const compNiveau = rollData.competence?.system?.niveau ?? 0 + const compMod = compNiveau === 0 ? -3 : 0 + rollData.diceFormula = `${rollData.mainDice}+${rollData.attr.value}+${compNiveau}+${rollData.modificateur}+${compMod}+${rollData.malusSante}+${rollData.malusAme}` + + const myRoll = await new Roll(rollData.diceFormula).evaluate() + await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode")) + rollData.roll = foundry.utils.duplicate(myRoll) + rollData.diceResult = myRoll.terms[0].results[0].result + rollData.finalResult = myRoll.total + this.computeResult(rollData) + + // Déduction des points d'âme + let totalCost = rollData.sortilegeRunes.reduce((s, r) => s + r.pts, 0) + if (rollData.isHeroique && rollData.runeautocible) { + totalCost = Math.ceil(totalCost / 2) + rollData.runeameCostReduit = true + rollData.runeameCostFinal = totalCost + } else if (rollData.isEchec && !rollData.isDramatique) { + totalCost = Math.ceil((totalCost + 1) / 2) + } + actor.subPointsAme(rollData.runemode, totalCost) + + // Échec dramatique : dé du Chaos + if (rollData.isDramatique) { + const chaosRoll = await new Roll("1d20").evaluate() + await this.showDiceSoNice(chaosRoll, game.settings.get("core", "rollMode")) + const cr = chaosRoll.terms[0].results[0].result + rollData.chaosDieResult = cr + const claValue = rollData.attr?.value ?? 0 + if (cr === 1 || cr === 11) { + rollData.chaosEffet = "desastre" + rollData.chaosEffetTexte = `Désastre extraordinaire ! Les Runes se déclenchent à des kilomètres de là sur des cibles inconnues. La Loi se manifeste : le sorcier ne peut plus utiliser l'Œil pendant ${claValue} semaine${claValue > 1 ? "s" : ""}.` + } else if (cr % 2 === 1) { + rollData.chaosEffet = "echec_absolu" + rollData.chaosEffetTexte = "Échec absolu. Le MJ décide si les Runes se manifestent sur des cibles autres, dans des proportions désavantageuses ou en un lieu très lointain." + } else { + rollData.chaosEffet = "rien" + rollData.chaosEffetTexte = "Rien de particulier ne se produit en plus de la perte des points d'Âme." + } + } + + // Succès : créer un runeeffect par rune + if (rollData.isSuccess) { + const effetMode = isInscrire ? "inscrite" : "prononcee" + const items = rollData.sortilegeRunes.map(r => ({ + name: r.name, + type: "runeeffect", + img: r.img || "systems/fvtt-mournblade/assets/icons/rune.webp", + system: { + rune: r.name, + mode: effetMode, + duree: r.dureeLabel, + pointame: r.pts + } + })) + await actor.createEmbeddedDocuments("Item", items) + } + + rollData.runeame = rollData.sortilegeRunes.reduce((s, r) => s + r.pts, 0) + + this.createChatWithRollMode(rollData.alias, { + content: await foundry.applications.handlebars.renderTemplate( + `systems/fvtt-mournblade/templates/chat-sortilege-result.hbs`, rollData) + }, rollData) + } + /* -------------------------------------------- */ static async rollDegatsFromAttaque(rollData) { let maximize = false @@ -894,4 +1068,212 @@ export class MournbladeUtility { d.render(true); } -} \ No newline at end of file + /* -------------------------------------------- */ + /** + * Roll for potion preparation (blind mode — GM only sees result) + * @param {object} rollData + */ + static async rollPotion(rollData) { + if (!rollData.runeId) { + ui.notifications.warn("Aucune Rune sélectionnée pour la préparation de la potion.") + return + } + + const actor = rollData.tokenId + ? game.canvas.tokens.get(rollData.tokenId)?.actor + : game.actors.get(rollData.actorId) + + const pa = rollData.pointsAme ?? 1 + const seuil = rollData.runeSeuil ?? 0 + const difficulte = seuil + pa + const modificateur = rollData.modificateur ?? 0 + rollData.difficulte = difficulte + + const compNiveau = rollData.competence?.system?.niveau ?? 0 + const compMod = compNiveau === 0 ? -3 : 0 + + 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) + + // Determine potion status + let potionStatut + let virulence = 0 + let ameDeduct = pa + let potionCreated = false + + if (rollData.isHeroique) { + potionStatut = "heroique" + } else if (rollData.isSuccess) { + potionStatut = "efficace" + } else if (rollData.isDramatique) { + potionStatut = "inconnue" + virulence = pa * 3 + } else { + potionStatut = "inefficace" + ameDeduct = Math.ceil(pa / 2) + } + + rollData.virulence = virulence + actor.subPointsAme("prononcer", ameDeduct) + + // Calculate durations and prep time + const forme = rollData.forme ?? "liquide" + const isSolide = ["onguent", "cachets", "pilules"].includes(forme) + const dureeHeures = pa + const conservationMois = isSolide ? pa * 6 : pa + const tempsPrep = Math.max(1, Math.ceil(pa / 3)) + rollData.dureePotion = dureeHeures === 1 ? "1 heure" : `${dureeHeures} heures` + rollData.conservationPotion = `${conservationMois} mois` + rollData.tempsPreparation = tempsPrep === 1 ? "1 heure" : `${tempsPrep} heures` + + const formeLabels = { liquide: "Liquide", onguent: "Onguent", cachets: "Cachets", pilules: "Pilules" } + rollData.formeLabel = formeLabels[forme] ?? forme + + if (potionStatut !== "inefficace") { + const potionItem = { + name: `Potion de ${rollData.runeName}`, + type: "potion", + img: rollData.runeImg || "systems/fvtt-mournblade/assets/icons/potion.webp", + system: { + rune: rollData.runeName, + runeImg: rollData.runeImg ?? "", + runeSeuil: seuil, + pointsAme: pa, + forme: forme, + statut: potionStatut, + virulence: virulence, + duree: rollData.dureePotion, + conservation: rollData.conservationPotion, + tempsPreparation: rollData.tempsPreparation, + } + } + await actor.createEmbeddedDocuments("Item", [potionItem]) + potionCreated = true + } + + rollData.potionCreated = potionCreated + rollData.isGM = game.user.isGM + + this.createChatWithRollMode(rollData.alias, { + content: await foundry.applications.handlebars.renderTemplate( + `systems/fvtt-mournblade/templates/chat-potion-result.hbs`, rollData) + }, { ...rollData, rollMode: "blindroll" }) + } + + /* -------------------------------------------- */ + static async rollInvocationElementaire(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.") + return + } + + const soulCost = rollData.invocationSoulCost ?? rollData.invocationSeuil ?? 15 + const bonusPacte = rollData.bonusPacte ?? 0 + const compNiveau = rollData.competence?.system?.niveau ?? 0 + const compMod = compNiveau === 0 ? -3 : 0 + const modificateur = rollData.modificateur ?? 0 + + // Validate that the actor has enough soul to invoke + 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}+${bonusPacte}+${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) + + let ameDeduct = soulCost + let elementaireCreated = false + let createdActorId = null + let createdActorName = null + + if (rollData.isSuccess || rollData.isHeroique) { + // Build elemental name for compendium lookup + const elementNames = { air: "d'Air", terre: "de Terre", feu: "de Feu", eau: "de l'Eau" } + const tierNames = { mineur: "Mineur", median: "Médian", majeur: "Majeur" } + const elemLabel = elementNames[rollData.invocationElement] ?? rollData.invocationElement + const tierLabel = tierNames[rollData.invocationTier] ?? rollData.invocationTier + const searchName = `Élémentaire ${elemLabel} ${tierLabel}` + + // Import from compendium + const pack = game.packs.get("fvtt-mournblade.creatures-elementaires") + if (pack) { + const packIndex = await pack.getIndex() + const entry = packIndex.find(e => e.name === searchName) + if (entry) { + const doc = await pack.getDocument(entry._id) + if (doc) { + const createdActors = await Actor.createDocuments([doc.toObject()], { renderSheet: false }) + const createdActor = createdActors[0] + if (createdActor) { + // Set elemental soul = soulCost invested by invoker + await createdActor.update({ + "system.ame.fullmax": soulCost, + "system.ame.currentmax": soulCost, + "system.ame.value": 0, + }) + createdActorId = createdActor.id + createdActorName = createdActor.name + elementaireCreated = true + + // Soul blocked only on confirmed elemental creation + await actor.subPointsAme("prononcer", soulCost) + + // Track invocation on personnage + const invocations = foundry.utils.duplicate(actor.system.invocationsElementaires || []) + invocations.push({ + element: rollData.invocationElement, + tier: rollData.invocationTier, + soulCost, + actorId: createdActorId, + actorName: createdActorName, + }) + await actor.update({ "system.invocationsElementaires": invocations }) + } + } + } else { + ui.notifications.warn(`Élémentaire "${searchName}" introuvable dans le compendium creatures-elementaires.`) + } + } else { + ui.notifications.warn("Compendium creatures-elementaires introuvable.") + } + } else if (rollData.isDramatique) { + // All soul lost + actor.subPointsAme("prononcer", soulCost) + } else { + // Simple failure: half soul lost (round up) + ameDeduct = Math.ceil(soulCost / 2) + actor.subPointsAme("prononcer", ameDeduct) + } + + rollData.invocationSoulDeducted = rollData.isSuccess || rollData.isHeroique ? soulCost : ameDeduct + rollData.elementaireCreated = elementaireCreated + rollData.createdActorName = createdActorName + rollData.bonusPacte = bonusPacte + rollData.isGM = game.user.isGM + + this.createChatWithRollMode(rollData.alias, { + content: await foundry.applications.handlebars.renderTemplate( + `systems/fvtt-mournblade/templates/chat-invocation-result.hbs`, rollData) + }, { ...rollData, rollMode: "blindroll" }) + } + +} diff --git a/package-lock.json b/package-lock.json index eaabc7e..2c61733 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,11 +9,164 @@ "version": "1.0.0", "license": "SEE LICENSE IN LICENCE.txt", "devDependencies": { + "@foundryvtt/foundryvtt-cli": "^3.0.3", "gulp": "^4.0.2", "gulp-less": "^5.0.0", "gulp-sourcemaps": "^3.0.0" } }, + "node_modules/@foundryvtt/foundryvtt-cli": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@foundryvtt/foundryvtt-cli/-/foundryvtt-cli-3.0.3.tgz", + "integrity": "sha512-byNLOrZ9ev6PfW+gflhonT5Y+Goq2aHERwVGWO3eYRKez+lzZJoqMY/YMEi54XYozzWWn8d6LuRbBsVPJ30haw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.4.1", + "classic-level": "^1.4.1", + "esm": "^3.2.25", + "js-yaml": "^4.1.0", + "mkdirp": "^3.0.1", + "nedb-promises": "^6.2.3", + "yargs": "^17.7.2" + }, + "bin": { + "fvtt": "fvtt.mjs" + }, + "engines": { + "node": ">17.0.0" + } + }, + "node_modules/@foundryvtt/foundryvtt-cli/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@foundryvtt/foundryvtt-cli/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@foundryvtt/foundryvtt-cli/node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/@foundryvtt/foundryvtt-cli/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@foundryvtt/foundryvtt-cli/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@foundryvtt/foundryvtt-cli/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@foundryvtt/foundryvtt-cli/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@foundryvtt/foundryvtt-cli/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/@foundryvtt/foundryvtt-cli/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@foundryvtt/foundryvtt-cli/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/@gulp-sourcemaps/identity-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-2.0.1.tgz", @@ -80,6 +233,67 @@ "xtend": "~4.0.1" } }, + "node_modules/@seald-io/binary-search-tree": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@seald-io/binary-search-tree/-/binary-search-tree-1.0.3.tgz", + "integrity": "sha512-qv3jnwoakeax2razYaMsGI/luWdliBLHTdC6jU55hQt1hcFqzauH/HsBollQ7IR4ySTtYhT+xyHoijpA16C+tA==", + "dev": true + }, + "node_modules/@seald-io/nedb": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@seald-io/nedb/-/nedb-4.1.2.tgz", + "integrity": "sha512-bDr6TqjBVS2rDyYM9CPxAnotj5FuNL9NF8o7h7YyFXM7yruqT4ddr+PkSb2mJvvw991bqdftazkEo38gykvaww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@seald-io/binary-search-tree": "^1.0.3", + "localforage": "^1.10.0", + "util": "^0.12.5" + } + }, + "node_modules/abstract-level": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.4.tgz", + "integrity": "sha512-eUP/6pbXBkMbXFdx4IH2fVgvB7M0JvR7/lIL33zcs0IBcwjdzSSl31TOJsaCzmKSSDF9h8QYSOJux4Nd4YJqFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^6.0.3", + "catering": "^2.1.0", + "is-buffer": "^2.0.5", + "level-supports": "^4.0.0", + "level-transcoder": "^1.0.1", + "module-error": "^1.0.1", + "queue-microtask": "^1.2.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/abstract-level/node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/acorn": { "version": "6.4.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", @@ -129,6 +343,22 @@ "node": ">=0.10.0" } }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/ansi-wrap": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", @@ -183,6 +413,13 @@ "dev": true, "license": "MIT" }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, "node_modules/arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", @@ -396,6 +633,22 @@ "node": ">= 4.5.0" } }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/bach": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", @@ -456,6 +709,27 @@ "node": ">=0.10.0" } }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/binary-extensions": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", @@ -510,6 +784,31 @@ "node": ">=0.10.0" } }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "node_modules/buffer-equal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", @@ -611,6 +910,29 @@ "node": ">=0.10.0" } }, + "node_modules/catering": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz", + "integrity": "sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/chokidar": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", @@ -677,6 +999,24 @@ "node": ">= 0.4" } }, + "node_modules/classic-level": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/classic-level/-/classic-level-1.4.1.tgz", + "integrity": "sha512-qGx/KJl3bvtOHrGau2WklEZuXhS3zme+jf+fsu6Ej7W7IP/C49v7KNlWIsT1jZu0YnfzSIYDGcEWpCa1wKGWXQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "abstract-level": "^1.0.2", + "catering": "^2.1.0", + "module-error": "^1.0.1", + "napi-macros": "^2.2.2", + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", @@ -767,6 +1107,26 @@ "node": ">=0.10.0" } }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, "node_modules/color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", @@ -1071,6 +1431,13 @@ "node": ">=0.10.0" } }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, "node_modules/end-of-stream": { "version": "1.4.5", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", @@ -1194,6 +1561,26 @@ "es6-symbol": "^3.1.1" } }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/esniff": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", @@ -1488,6 +1875,22 @@ "readable-stream": "^2.3.6" } }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -1586,6 +1989,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", @@ -1937,6 +2350,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -2026,6 +2455,27 @@ "node": ">=0.10.0" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, "node_modules/image-size": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", @@ -2040,6 +2490,13 @@ "node": ">=0.10.0" } }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "dev": true, + "license": "MIT" + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -2113,6 +2570,23 @@ "node": ">= 0.10" } }, + "node_modules/is-arguments": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -2140,6 +2614,19 @@ "dev": true, "license": "MIT" }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-core-module": { "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", @@ -2216,6 +2703,26 @@ "node": ">=0.10.0" } }, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -2282,6 +2789,25 @@ "dev": true, "license": "MIT" }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-relative": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", @@ -2295,6 +2821,22 @@ "node": ">=0.10.0" } }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-unc-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", @@ -2366,6 +2908,19 @@ "node": ">=0.10.0" } }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", @@ -2471,6 +3026,40 @@ "source-map": "~0.6.0" } }, + "node_modules/level-supports": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz", + "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/level-transcoder": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz", + "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^6.0.3", + "module-error": "^1.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, "node_modules/liftoff": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", @@ -2531,6 +3120,16 @@ "node": ">=0.10.0" } }, + "node_modules/localforage": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", + "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "lie": "3.1.1" + } + }, "node_modules/lru-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", @@ -2819,6 +3418,32 @@ "node": ">=0.10.0" } }, + "node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/module-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz", + "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -2917,6 +3542,23 @@ "node": ">=0.10.0" } }, + "node_modules/napi-macros": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz", + "integrity": "sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/nedb-promises": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/nedb-promises/-/nedb-promises-6.2.3.tgz", + "integrity": "sha512-enq0IjNyBz9Qy9W/QPCcLGh/QORGBjXbIeZeWvIjO3OMLyAvlKT3hiJubP2BKEiFniUlR3L01o18ktqgn5jxqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@seald-io/nedb": "^4.0.2" + } + }, "node_modules/needle": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", @@ -2942,6 +3584,18 @@ "dev": true, "license": "ISC" }, + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "dev": true, + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, "node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -3437,6 +4091,16 @@ "node": ">=0.10.0" } }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/postcss": { "version": "7.0.39", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", @@ -3503,6 +4167,27 @@ "pump": "^2.0.0" } }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -3821,6 +4506,24 @@ "ret": "~0.1.10" } }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -4712,6 +5415,20 @@ "node": ">=0.10.0" } }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -4893,6 +5610,28 @@ "dev": true, "license": "ISC" }, + "node_modules/which-typed-array": { + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", diff --git a/package.json b/package.json index 657f063..1d69990 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "author": "Uberwald/LeRatierBretonnien", "license": "SEE LICENSE IN LICENCE.txt", "devDependencies": { + "@foundryvtt/foundryvtt-cli": "^3.0.3", "gulp": "^4.0.2", "gulp-less": "^5.0.0", "gulp-sourcemaps": "^3.0.0" diff --git a/packs/armes/000320.ldb b/packs/armes/000337.ldb similarity index 100% rename from packs/armes/000320.ldb rename to packs/armes/000337.ldb diff --git a/packs/armes/000331.log b/packs/armes/000370.log similarity index 100% rename from packs/armes/000331.log rename to packs/armes/000370.log diff --git a/packs/armes/CURRENT b/packs/armes/CURRENT index 10383e2..0e10e4f 100644 --- a/packs/armes/CURRENT +++ b/packs/armes/CURRENT @@ -1 +1 @@ -MANIFEST-000325 +MANIFEST-000368 diff --git a/packs/armes/LOG b/packs/armes/LOG index 930498a..b942314 100644 --- a/packs/armes/LOG +++ b/packs/armes/LOG @@ -1,7 +1,7 @@ -2026/04/09-23:45:58.303191 7f983b7fe6c0 Recovering log #323 -2026/04/09-23:45:58.319529 7f983b7fe6c0 Delete type=3 #321 -2026/04/09-23:45:58.319588 7f983b7fe6c0 Delete type=0 #323 -2026/04/09-23:47:18.879327 7f983a7fc6c0 Level-0 table #328: started -2026/04/09-23:47:18.879356 7f983a7fc6c0 Level-0 table #328: 0 bytes OK -2026/04/09-23:47:18.915679 7f983a7fc6c0 Delete type=0 #326 -2026/04/09-23:47:18.997838 7f983a7fc6c0 Manual compaction at level-0 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at (end) +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) diff --git a/packs/armes/LOG.old b/packs/armes/LOG.old index 61101c2..1c64911 100644 --- a/packs/armes/LOG.old +++ b/packs/armes/LOG.old @@ -1,7 +1,7 @@ -2026/04/09-23:12:16.588194 7f20ecbfc6c0 Recovering log #318 -2026/04/09-23:12:16.608112 7f20ecbfc6c0 Delete type=3 #316 -2026/04/09-23:12:16.608181 7f20ecbfc6c0 Delete type=0 #318 -2026/04/09-23:25:18.054476 7f1e4ffff6c0 Level-0 table #324: started -2026/04/09-23:25:18.054490 7f1e4ffff6c0 Level-0 table #324: 0 bytes OK -2026/04/09-23:25:18.060226 7f1e4ffff6c0 Delete type=0 #322 -2026/04/09-23:25:18.060329 7f1e4ffff6c0 Manual compaction at level-0 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at (end) +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) diff --git a/packs/armes/MANIFEST-000368 b/packs/armes/MANIFEST-000368 new file mode 100644 index 0000000..f4eeed7 Binary files /dev/null and b/packs/armes/MANIFEST-000368 differ diff --git a/packs/runes/000331.log b/packs/armes/lost/000331.log similarity index 100% rename from packs/runes/000331.log rename to packs/armes/lost/000331.log diff --git a/packs/pactes-dons/000008.log b/packs/creatures-elementaires/000008.log similarity index 100% rename from packs/pactes-dons/000008.log rename to packs/creatures-elementaires/000008.log diff --git a/packs/creatures-elementaires/CURRENT b/packs/creatures-elementaires/CURRENT new file mode 100644 index 0000000..f7753e2 --- /dev/null +++ b/packs/creatures-elementaires/CURRENT @@ -0,0 +1 @@ +MANIFEST-000006 diff --git a/packs/dons/000330.log b/packs/creatures-elementaires/LOCK similarity index 100% rename from packs/dons/000330.log rename to packs/creatures-elementaires/LOCK diff --git a/packs/creatures-elementaires/LOG b/packs/creatures-elementaires/LOG new file mode 100644 index 0000000..1c15d6e --- /dev/null +++ b/packs/creatures-elementaires/LOG @@ -0,0 +1,7 @@ +2026/05/01-23:30:18.177776 7fd755fef6c0 Recovering log #4 +2026/05/01-23:30:18.192738 7fd755fef6c0 Delete type=3 #2 +2026/05/01-23:30:18.192830 7fd755fef6c0 Delete type=0 #4 +2026/05/01-23:30:57.358830 7fd7477fe6c0 Level-0 table #9: started +2026/05/01-23:30:57.358954 7fd7477fe6c0 Level-0 table #9: 0 bytes OK +2026/05/01-23:30:57.365068 7fd7477fe6c0 Delete type=0 #7 +2026/05/01-23:30:57.384807 7fd7477fe6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) diff --git a/packs/creatures-elementaires/LOG.old b/packs/creatures-elementaires/LOG.old new file mode 100644 index 0000000..84e14b3 --- /dev/null +++ b/packs/creatures-elementaires/LOG.old @@ -0,0 +1,5 @@ +2026/05/01-23:21:09.633678 7fd7557ee6c0 Delete type=3 #1 +2026/05/01-23:30:12.668808 7fd7477fe6c0 Level-0 table #5: started +2026/05/01-23:30:12.668939 7fd7477fe6c0 Level-0 table #5: 0 bytes OK +2026/05/01-23:30:12.741575 7fd7477fe6c0 Delete type=0 #3 +2026/05/01-23:30:12.842987 7fd7477fe6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) diff --git a/packs/creatures-elementaires/MANIFEST-000006 b/packs/creatures-elementaires/MANIFEST-000006 new file mode 100644 index 0000000..97450be Binary files /dev/null and b/packs/creatures-elementaires/MANIFEST-000006 differ diff --git a/packs/equipement/000330.log b/packs/creatures-elementaires/creatures-elementaires/000014.log similarity index 100% rename from packs/equipement/000330.log rename to packs/creatures-elementaires/creatures-elementaires/000014.log diff --git a/packs/creatures-elementaires/creatures-elementaires/000016.ldb b/packs/creatures-elementaires/creatures-elementaires/000016.ldb new file mode 100644 index 0000000..2a7cd1f Binary files /dev/null and b/packs/creatures-elementaires/creatures-elementaires/000016.ldb differ diff --git a/packs/creatures-elementaires/creatures-elementaires/CURRENT b/packs/creatures-elementaires/creatures-elementaires/CURRENT new file mode 100644 index 0000000..ef20c6d --- /dev/null +++ b/packs/creatures-elementaires/creatures-elementaires/CURRENT @@ -0,0 +1 @@ +MANIFEST-000012 diff --git a/packs/heritages/000330.log b/packs/creatures-elementaires/creatures-elementaires/LOCK similarity index 100% rename from packs/heritages/000330.log rename to packs/creatures-elementaires/creatures-elementaires/LOCK diff --git a/packs/creatures-elementaires/creatures-elementaires/LOG b/packs/creatures-elementaires/creatures-elementaires/LOG new file mode 100644 index 0000000..6d9f530 --- /dev/null +++ b/packs/creatures-elementaires/creatures-elementaires/LOG @@ -0,0 +1,12 @@ +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) diff --git a/packs/creatures-elementaires/creatures-elementaires/LOG.old b/packs/creatures-elementaires/creatures-elementaires/LOG.old new file mode 100644 index 0000000..b56b402 --- /dev/null +++ b/packs/creatures-elementaires/creatures-elementaires/LOG.old @@ -0,0 +1,4 @@ +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. **** diff --git a/packs/creatures-elementaires/creatures-elementaires/MANIFEST-000012 b/packs/creatures-elementaires/creatures-elementaires/MANIFEST-000012 new file mode 100644 index 0000000..3b20883 Binary files /dev/null and b/packs/creatures-elementaires/creatures-elementaires/MANIFEST-000012 differ diff --git a/packs/metiers/000330.log b/packs/creatures-elementaires/creatures-elementaires/lost/000008.log similarity index 100% rename from packs/metiers/000330.log rename to packs/creatures-elementaires/creatures-elementaires/lost/000008.log diff --git a/packs/dons/000319.ldb b/packs/dons/000336.ldb similarity index 100% rename from packs/dons/000319.ldb rename to packs/dons/000336.ldb diff --git a/packs/origines/000330.log b/packs/dons/000369.log similarity index 100% rename from packs/origines/000330.log rename to packs/dons/000369.log diff --git a/packs/dons/CURRENT b/packs/dons/CURRENT index 75c473d..07a4d2c 100644 --- a/packs/dons/CURRENT +++ b/packs/dons/CURRENT @@ -1 +1 @@ -MANIFEST-000324 +MANIFEST-000367 diff --git a/packs/dons/LOG b/packs/dons/LOG index 697b4c2..fc284d9 100644 --- a/packs/dons/LOG +++ b/packs/dons/LOG @@ -1,7 +1,7 @@ -2026/04/09-23:45:58.356058 7f9888fff6c0 Recovering log #322 -2026/04/09-23:45:58.371202 7f9888fff6c0 Delete type=3 #320 -2026/04/09-23:45:58.371256 7f9888fff6c0 Delete type=0 #322 -2026/04/09-23:47:18.998002 7f983a7fc6c0 Level-0 table #327: started -2026/04/09-23:47:18.998033 7f983a7fc6c0 Level-0 table #327: 0 bytes OK -2026/04/09-23:47:19.033600 7f983a7fc6c0 Delete type=0 #325 -2026/04/09-23:47:19.180637 7f983a7fc6c0 Manual compaction at level-0 from '!items!5dGXNiL3WN4cAk7X' @ 72057594037927935 : 1 .. '!items!zzz9JrtWjELdoAfK' @ 0 : 0; will stop at (end) +2026/05/01-23:51:23.899083 7fd755fef6c0 Recovering log #365 +2026/05/01-23:51:23.963281 7fd755fef6c0 Delete type=3 #363 +2026/05/01-23:51:23.963367 7fd755fef6c0 Delete type=0 #365 +2026/05/02-08:26:03.439764 7fd7477fe6c0 Level-0 table #370: started +2026/05/02-08:26:03.439860 7fd7477fe6c0 Level-0 table #370: 0 bytes OK +2026/05/02-08:26:03.476944 7fd7477fe6c0 Delete type=0 #368 +2026/05/02-08:26:03.477143 7fd7477fe6c0 Manual compaction at level-0 from '!items!5dGXNiL3WN4cAk7X' @ 72057594037927935 : 1 .. '!items!zzz9JrtWjELdoAfK' @ 0 : 0; will stop at (end) diff --git a/packs/dons/LOG.old b/packs/dons/LOG.old index 61fac2a..ede433b 100644 --- a/packs/dons/LOG.old +++ b/packs/dons/LOG.old @@ -1,7 +1,7 @@ -2026/04/09-23:12:16.653158 7f20ecbfc6c0 Recovering log #317 -2026/04/09-23:12:16.667664 7f20ecbfc6c0 Delete type=3 #315 -2026/04/09-23:12:16.667723 7f20ecbfc6c0 Delete type=0 #317 -2026/04/09-23:25:18.072993 7f1e4ffff6c0 Level-0 table #323: started -2026/04/09-23:25:18.073014 7f1e4ffff6c0 Level-0 table #323: 0 bytes OK -2026/04/09-23:25:18.078766 7f1e4ffff6c0 Delete type=0 #321 -2026/04/09-23:25:18.084786 7f1e4ffff6c0 Manual compaction at level-0 from '!items!5dGXNiL3WN4cAk7X' @ 72057594037927935 : 1 .. '!items!zzz9JrtWjELdoAfK' @ 0 : 0; will stop at (end) +2026/05/01-23:45:25.887738 7fd755fef6c0 Recovering log #361 +2026/05/01-23:45:25.897606 7fd755fef6c0 Delete type=3 #359 +2026/05/01-23:45:25.897664 7fd755fef6c0 Delete type=0 #361 +2026/05/01-23:51:18.003483 7fd7477fe6c0 Level-0 table #366: started +2026/05/01-23:51:18.003518 7fd7477fe6c0 Level-0 table #366: 0 bytes OK +2026/05/01-23:51:18.037812 7fd7477fe6c0 Delete type=0 #364 +2026/05/01-23:51:18.167176 7fd7477fe6c0 Manual compaction at level-0 from '!items!5dGXNiL3WN4cAk7X' @ 72057594037927935 : 1 .. '!items!zzz9JrtWjELdoAfK' @ 0 : 0; will stop at (end) diff --git a/packs/dons/MANIFEST-000367 b/packs/dons/MANIFEST-000367 new file mode 100644 index 0000000..084bdbe Binary files /dev/null and b/packs/dons/MANIFEST-000367 differ diff --git a/packs/protection/000330.log b/packs/dons/lost/000330.log similarity index 100% rename from packs/protection/000330.log rename to packs/dons/lost/000330.log diff --git a/packs/equipement/000319.ldb b/packs/equipement/000336.ldb similarity index 100% rename from packs/equipement/000319.ldb rename to packs/equipement/000336.ldb diff --git a/packs/pnj-creatures/000226.log b/packs/equipement/000369.log similarity index 100% rename from packs/pnj-creatures/000226.log rename to packs/equipement/000369.log diff --git a/packs/equipement/CURRENT b/packs/equipement/CURRENT index 75c473d..07a4d2c 100644 --- a/packs/equipement/CURRENT +++ b/packs/equipement/CURRENT @@ -1 +1 @@ -MANIFEST-000324 +MANIFEST-000367 diff --git a/packs/equipement/LOG b/packs/equipement/LOG index 6f6df0f..c635eb8 100644 --- a/packs/equipement/LOG +++ b/packs/equipement/LOG @@ -1,7 +1,7 @@ -2026/04/09-23:45:58.338180 7f983affd6c0 Recovering log #322 -2026/04/09-23:45:58.354032 7f983affd6c0 Delete type=3 #320 -2026/04/09-23:45:58.354088 7f983affd6c0 Delete type=0 #322 -2026/04/09-23:47:18.915819 7f983a7fc6c0 Level-0 table #327: started -2026/04/09-23:47:18.915848 7f983a7fc6c0 Level-0 table #327: 0 bytes OK -2026/04/09-23:47:18.954437 7f983a7fc6c0 Delete type=0 #325 -2026/04/09-23:47:18.997849 7f983a7fc6c0 Manual compaction at level-0 from '!items!1cZd2hlTV9tykDED' @ 72057594037927935 : 1 .. '!items!y47dBO3Mf5Pn7tOd' @ 0 : 0; will stop at (end) +2026/05/01-23:51:23.839110 7fd754fed6c0 Recovering log #365 +2026/05/01-23:51:23.896151 7fd754fed6c0 Delete type=3 #363 +2026/05/01-23:51:23.896228 7fd754fed6c0 Delete type=0 #365 +2026/05/02-08:26:03.403387 7fd7477fe6c0 Level-0 table #370: started +2026/05/02-08:26:03.403427 7fd7477fe6c0 Level-0 table #370: 0 bytes OK +2026/05/02-08:26:03.439575 7fd7477fe6c0 Delete type=0 #368 +2026/05/02-08:26:03.477128 7fd7477fe6c0 Manual compaction at level-0 from '!items!1cZd2hlTV9tykDED' @ 72057594037927935 : 1 .. '!items!y47dBO3Mf5Pn7tOd' @ 0 : 0; will stop at (end) diff --git a/packs/equipement/LOG.old b/packs/equipement/LOG.old index aeb134a..ac338a2 100644 --- a/packs/equipement/LOG.old +++ b/packs/equipement/LOG.old @@ -1,7 +1,7 @@ -2026/04/09-23:12:16.632679 7f20ed3fd6c0 Recovering log #317 -2026/04/09-23:12:16.648389 7f20ed3fd6c0 Delete type=3 #315 -2026/04/09-23:12:16.648462 7f20ed3fd6c0 Delete type=0 #317 -2026/04/09-23:25:18.066787 7f1e4ffff6c0 Level-0 table #323: started -2026/04/09-23:25:18.066820 7f1e4ffff6c0 Level-0 table #323: 0 bytes OK -2026/04/09-23:25:18.072917 7f1e4ffff6c0 Delete type=0 #321 -2026/04/09-23:25:18.084778 7f1e4ffff6c0 Manual compaction at level-0 from '!items!1cZd2hlTV9tykDED' @ 72057594037927935 : 1 .. '!items!y47dBO3Mf5Pn7tOd' @ 0 : 0; will stop at (end) +2026/05/01-23:45:25.874605 7fd754fed6c0 Recovering log #361 +2026/05/01-23:45:25.884831 7fd754fed6c0 Delete type=3 #359 +2026/05/01-23:45:25.884885 7fd754fed6c0 Delete type=0 #361 +2026/05/01-23:51:17.956955 7fd7477fe6c0 Level-0 table #366: started +2026/05/01-23:51:17.956995 7fd7477fe6c0 Level-0 table #366: 0 bytes OK +2026/05/01-23:51:18.002857 7fd7477fe6c0 Delete type=0 #364 +2026/05/01-23:51:18.003348 7fd7477fe6c0 Manual compaction at level-0 from '!items!1cZd2hlTV9tykDED' @ 72057594037927935 : 1 .. '!items!y47dBO3Mf5Pn7tOd' @ 0 : 0; will stop at (end) diff --git a/packs/equipement/MANIFEST-000367 b/packs/equipement/MANIFEST-000367 new file mode 100644 index 0000000..aed3237 Binary files /dev/null and b/packs/equipement/MANIFEST-000367 differ diff --git a/packs/skills/000330.log b/packs/equipement/lost/000330.log similarity index 100% rename from packs/skills/000330.log rename to packs/equipement/lost/000330.log diff --git a/packs/heritages/000319.ldb b/packs/heritages/000336.ldb similarity index 100% rename from packs/heritages/000319.ldb rename to packs/heritages/000336.ldb diff --git a/packs/scenes/000246.log b/packs/heritages/000369.log similarity index 100% rename from packs/scenes/000246.log rename to packs/heritages/000369.log diff --git a/packs/heritages/CURRENT b/packs/heritages/CURRENT index 75c473d..07a4d2c 100644 --- a/packs/heritages/CURRENT +++ b/packs/heritages/CURRENT @@ -1 +1 @@ -MANIFEST-000324 +MANIFEST-000367 diff --git a/packs/heritages/LOG b/packs/heritages/LOG index d1962ae..e2d6b15 100644 --- a/packs/heritages/LOG +++ b/packs/heritages/LOG @@ -1,7 +1,7 @@ -2026/04/09-23:45:58.413719 7f983bfff6c0 Recovering log #322 -2026/04/09-23:45:58.433922 7f983bfff6c0 Delete type=3 #320 -2026/04/09-23:45:58.433990 7f983bfff6c0 Delete type=0 #322 -2026/04/09-23:47:19.033751 7f983a7fc6c0 Level-0 table #327: started -2026/04/09-23:47:19.033783 7f983a7fc6c0 Level-0 table #327: 0 bytes OK -2026/04/09-23:47:19.076272 7f983a7fc6c0 Delete type=0 #325 -2026/04/09-23:47:19.180652 7f983a7fc6c0 Manual compaction at level-0 from '!items!2GaJZsqr2c2mcDRv' @ 72057594037927935 : 1 .. '!items!ui4JGsGwHNlSXVK3' @ 0 : 0; will stop at (end) +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) diff --git a/packs/heritages/LOG.old b/packs/heritages/LOG.old index 3c656f8..39bf496 100644 --- a/packs/heritages/LOG.old +++ b/packs/heritages/LOG.old @@ -1,7 +1,7 @@ -2026/04/09-23:12:16.692032 7f20ed3fd6c0 Recovering log #317 -2026/04/09-23:12:16.709446 7f20ed3fd6c0 Delete type=3 #315 -2026/04/09-23:12:16.709514 7f20ed3fd6c0 Delete type=0 #317 -2026/04/09-23:25:18.091369 7f1e4ffff6c0 Level-0 table #323: started -2026/04/09-23:25:18.091389 7f1e4ffff6c0 Level-0 table #323: 0 bytes OK -2026/04/09-23:25:18.097952 7f1e4ffff6c0 Delete type=0 #321 -2026/04/09-23:25:18.111053 7f1e4ffff6c0 Manual compaction at level-0 from '!items!2GaJZsqr2c2mcDRv' @ 72057594037927935 : 1 .. '!items!ui4JGsGwHNlSXVK3' @ 0 : 0; will stop at (end) +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) diff --git a/packs/heritages/MANIFEST-000367 b/packs/heritages/MANIFEST-000367 new file mode 100644 index 0000000..09efdc1 Binary files /dev/null and b/packs/heritages/MANIFEST-000367 differ diff --git a/packs/tables/000330.log b/packs/heritages/lost/000330.log similarity index 100% rename from packs/tables/000330.log rename to packs/heritages/lost/000330.log diff --git a/packs/journal-aide/journal-aide/000010.ldb b/packs/journal-aide/journal-aide/000010.ldb new file mode 100644 index 0000000..4c147b6 Binary files /dev/null and b/packs/journal-aide/journal-aide/000010.ldb differ diff --git a/packs/skills-creatures/000238.log b/packs/journal-aide/journal-aide/000029.log similarity index 100% rename from packs/skills-creatures/000238.log rename to packs/journal-aide/journal-aide/000029.log diff --git a/packs/journal-aide/journal-aide/CURRENT b/packs/journal-aide/journal-aide/CURRENT new file mode 100644 index 0000000..3bf5164 --- /dev/null +++ b/packs/journal-aide/journal-aide/CURRENT @@ -0,0 +1 @@ +MANIFEST-000027 diff --git a/packs/tendances/000330.log b/packs/journal-aide/journal-aide/LOCK similarity index 100% rename from packs/tendances/000330.log rename to packs/journal-aide/journal-aide/LOCK diff --git a/packs/journal-aide/journal-aide/LOG b/packs/journal-aide/journal-aide/LOG new file mode 100644 index 0000000..7e500cb --- /dev/null +++ b/packs/journal-aide/journal-aide/LOG @@ -0,0 +1,8 @@ +2026/05/01-23:51:24.450092 7fd754fed6c0 Recovering log #25 +2026/05/01-23:51:24.512021 7fd754fed6c0 Delete type=3 #23 +2026/05/01-23:51:24.512123 7fd754fed6c0 Delete type=0 #25 +2026/05/02-08:26:03.753438 7fd7477fe6c0 Level-0 table #30: started +2026/05/02-08:26:03.753526 7fd7477fe6c0 Level-0 table #30: 0 bytes OK +2026/05/02-08:26:03.797061 7fd7477fe6c0 Delete type=0 #28 +2026/05/02-08:26:03.865053 7fd7477fe6c0 Manual compaction at level-0 from '!journal!JurnlHelpGuide01' @ 72057594037927935 : 1 .. '!journal.pages!JurnlHelpGuide01.JHelpPage0000008' @ 0 : 0; will stop at (end) +2026/05/02-08:26:03.911157 7fd7477fe6c0 Manual compaction at level-1 from '!journal!JurnlHelpGuide01' @ 72057594037927935 : 1 .. '!journal.pages!JurnlHelpGuide01.JHelpPage0000008' @ 0 : 0; will stop at (end) diff --git a/packs/journal-aide/journal-aide/LOG.old b/packs/journal-aide/journal-aide/LOG.old new file mode 100644 index 0000000..44a4845 --- /dev/null +++ b/packs/journal-aide/journal-aide/LOG.old @@ -0,0 +1,8 @@ +2026/05/01-23:45:26.025091 7fd747fff6c0 Recovering log #21 +2026/05/01-23:45:26.035419 7fd747fff6c0 Delete type=3 #19 +2026/05/01-23:45:26.035499 7fd747fff6c0 Delete type=0 #21 +2026/05/01-23:51:18.423732 7fd7477fe6c0 Level-0 table #26: started +2026/05/01-23:51:18.423792 7fd7477fe6c0 Level-0 table #26: 0 bytes OK +2026/05/01-23:51:18.458393 7fd7477fe6c0 Delete type=0 #24 +2026/05/01-23:51:18.501042 7fd7477fe6c0 Manual compaction at level-0 from '!journal!JurnlHelpGuide01' @ 72057594037927935 : 1 .. '!journal.pages!JurnlHelpGuide01.JHelpPage0000008' @ 0 : 0; will stop at (end) +2026/05/01-23:51:18.535320 7fd7477fe6c0 Manual compaction at level-1 from '!journal!JurnlHelpGuide01' @ 72057594037927935 : 1 .. '!journal.pages!JurnlHelpGuide01.JHelpPage0000008' @ 0 : 0; will stop at (end) diff --git a/packs/journal-aide/journal-aide/MANIFEST-000027 b/packs/journal-aide/journal-aide/MANIFEST-000027 new file mode 100644 index 0000000..a9ee538 Binary files /dev/null and b/packs/journal-aide/journal-aide/MANIFEST-000027 differ diff --git a/packs/metiers/000319.ldb b/packs/metiers/000336.ldb similarity index 100% rename from packs/metiers/000319.ldb rename to packs/metiers/000336.ldb diff --git a/packs/traits-chaotiques/000330.log b/packs/metiers/000369.log similarity index 100% rename from packs/traits-chaotiques/000330.log rename to packs/metiers/000369.log diff --git a/packs/metiers/CURRENT b/packs/metiers/CURRENT index 75c473d..07a4d2c 100644 --- a/packs/metiers/CURRENT +++ b/packs/metiers/CURRENT @@ -1 +1 @@ -MANIFEST-000324 +MANIFEST-000367 diff --git a/packs/metiers/LOG b/packs/metiers/LOG index 12720e7..312fb89 100644 --- a/packs/metiers/LOG +++ b/packs/metiers/LOG @@ -1,7 +1,7 @@ -2026/04/09-23:45:58.436168 7f9888fff6c0 Recovering log #322 -2026/04/09-23:45:58.451031 7f9888fff6c0 Delete type=3 #320 -2026/04/09-23:45:58.451098 7f9888fff6c0 Delete type=0 #322 -2026/04/09-23:47:19.180800 7f983a7fc6c0 Level-0 table #327: started -2026/04/09-23:47:19.180832 7f983a7fc6c0 Level-0 table #327: 0 bytes OK -2026/04/09-23:47:19.217176 7f983a7fc6c0 Delete type=0 #325 -2026/04/09-23:47:19.353947 7f983a7fc6c0 Manual compaction at level-0 from '!items!09s33sFuju8zjPqI' @ 72057594037927935 : 1 .. '!items!xlyFCQClBZ1N3O1B' @ 0 : 0; will stop at (end) +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) diff --git a/packs/metiers/LOG.old b/packs/metiers/LOG.old index c318f20..f7b68cd 100644 --- a/packs/metiers/LOG.old +++ b/packs/metiers/LOG.old @@ -1,7 +1,7 @@ -2026/04/09-23:12:16.716615 7f20ecbfc6c0 Recovering log #317 -2026/04/09-23:12:16.732299 7f20ecbfc6c0 Delete type=3 #315 -2026/04/09-23:12:16.732355 7f20ecbfc6c0 Delete type=0 #317 -2026/04/09-23:25:18.104079 7f1e4ffff6c0 Level-0 table #323: started -2026/04/09-23:25:18.104101 7f1e4ffff6c0 Level-0 table #323: 0 bytes OK -2026/04/09-23:25:18.110956 7f1e4ffff6c0 Delete type=0 #321 -2026/04/09-23:25:18.111069 7f1e4ffff6c0 Manual compaction at level-0 from '!items!09s33sFuju8zjPqI' @ 72057594037927935 : 1 .. '!items!xlyFCQClBZ1N3O1B' @ 0 : 0; will stop at (end) +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) diff --git a/packs/metiers/MANIFEST-000367 b/packs/metiers/MANIFEST-000367 new file mode 100644 index 0000000..b7f855c Binary files /dev/null and b/packs/metiers/MANIFEST-000367 differ diff --git a/packs/metiers/lost/000330.log b/packs/metiers/lost/000330.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/origines/000319.ldb b/packs/origines/000336.ldb similarity index 100% rename from packs/origines/000319.ldb rename to packs/origines/000336.ldb diff --git a/packs/origines/000369.log b/packs/origines/000369.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/origines/CURRENT b/packs/origines/CURRENT index 75c473d..07a4d2c 100644 --- a/packs/origines/CURRENT +++ b/packs/origines/CURRENT @@ -1 +1 @@ -MANIFEST-000324 +MANIFEST-000367 diff --git a/packs/origines/LOG b/packs/origines/LOG index d25b67b..36d2c59 100644 --- a/packs/origines/LOG +++ b/packs/origines/LOG @@ -1,7 +1,7 @@ -2026/04/09-23:45:58.395467 7f9888fff6c0 Recovering log #322 -2026/04/09-23:45:58.411559 7f9888fff6c0 Delete type=3 #320 -2026/04/09-23:45:58.411609 7f9888fff6c0 Delete type=0 #322 -2026/04/09-23:47:19.076420 7f983a7fc6c0 Level-0 table #327: started -2026/04/09-23:47:19.076448 7f983a7fc6c0 Level-0 table #327: 0 bytes OK -2026/04/09-23:47:19.118899 7f983a7fc6c0 Delete type=0 #325 -2026/04/09-23:47:19.180664 7f983a7fc6c0 Manual compaction at level-0 from '!items!2t1KmBeQNuKK5qlN' @ 72057594037927935 : 1 .. '!items!yBvkQb9S64s908sR' @ 0 : 0; will stop at (end) +2026/05/01-23:51:24.015685 7fd754fed6c0 Recovering log #365 +2026/05/01-23:51:24.068740 7fd754fed6c0 Delete type=3 #363 +2026/05/01-23:51:24.068836 7fd754fed6c0 Delete type=0 #365 +2026/05/02-08:26:03.477243 7fd7477fe6c0 Level-0 table #370: started +2026/05/02-08:26:03.477285 7fd7477fe6c0 Level-0 table #370: 0 bytes OK +2026/05/02-08:26:03.516015 7fd7477fe6c0 Delete type=0 #368 +2026/05/02-08:26:03.614814 7fd7477fe6c0 Manual compaction at level-0 from '!items!2t1KmBeQNuKK5qlN' @ 72057594037927935 : 1 .. '!items!yBvkQb9S64s908sR' @ 0 : 0; will stop at (end) diff --git a/packs/origines/LOG.old b/packs/origines/LOG.old index f126b23..881df00 100644 --- a/packs/origines/LOG.old +++ b/packs/origines/LOG.old @@ -1,7 +1,7 @@ -2026/04/09-23:12:16.671707 7f20ee3ff6c0 Recovering log #317 -2026/04/09-23:12:16.687095 7f20ee3ff6c0 Delete type=3 #315 -2026/04/09-23:12:16.687160 7f20ee3ff6c0 Delete type=0 #317 -2026/04/09-23:25:18.078816 7f1e4ffff6c0 Level-0 table #323: started -2026/04/09-23:25:18.078831 7f1e4ffff6c0 Level-0 table #323: 0 bytes OK -2026/04/09-23:25:18.084691 7f1e4ffff6c0 Delete type=0 #321 -2026/04/09-23:25:18.084792 7f1e4ffff6c0 Manual compaction at level-0 from '!items!2t1KmBeQNuKK5qlN' @ 72057594037927935 : 1 .. '!items!yBvkQb9S64s908sR' @ 0 : 0; will stop at (end) +2026/05/01-23:45:25.914723 7fd755fef6c0 Recovering log #361 +2026/05/01-23:45:25.925030 7fd755fef6c0 Delete type=3 #359 +2026/05/01-23:45:25.925095 7fd755fef6c0 Delete type=0 #361 +2026/05/01-23:51:18.080386 7fd7477fe6c0 Level-0 table #366: started +2026/05/01-23:51:18.080421 7fd7477fe6c0 Level-0 table #366: 0 bytes OK +2026/05/01-23:51:18.124527 7fd7477fe6c0 Delete type=0 #364 +2026/05/01-23:51:18.167208 7fd7477fe6c0 Manual compaction at level-0 from '!items!2t1KmBeQNuKK5qlN' @ 72057594037927935 : 1 .. '!items!yBvkQb9S64s908sR' @ 0 : 0; will stop at (end) diff --git a/packs/origines/MANIFEST-000367 b/packs/origines/MANIFEST-000367 new file mode 100644 index 0000000..e285fb0 Binary files /dev/null and b/packs/origines/MANIFEST-000367 differ diff --git a/packs/origines/lost/000330.log b/packs/origines/lost/000330.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/pactes-dons/000005.ldb b/packs/pactes-dons/000014.ldb similarity index 100% rename from packs/pactes-dons/000005.ldb rename to packs/pactes-dons/000014.ldb diff --git a/packs/pactes-dons/000047.log b/packs/pactes-dons/000047.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/pactes-dons/CURRENT b/packs/pactes-dons/CURRENT index 1a84852..800d995 100644 --- a/packs/pactes-dons/CURRENT +++ b/packs/pactes-dons/CURRENT @@ -1 +1 @@ -MANIFEST-000002 +MANIFEST-000045 diff --git a/packs/pactes-dons/LOG b/packs/pactes-dons/LOG index f5e7c1d..47b240b 100644 --- a/packs/pactes-dons/LOG +++ b/packs/pactes-dons/LOG @@ -1,5 +1,7 @@ -2026/04/09-23:45:58.393597 7f983bfff6c0 Delete type=3 #1 -2026/04/09-23:47:19.119062 7f983a7fc6c0 Level-0 table #5: started -2026/04/09-23:47:19.137928 7f983a7fc6c0 Level-0 table #5: 5639 bytes OK -2026/04/09-23:47:19.180471 7f983a7fc6c0 Delete type=0 #3 -2026/04/09-23:47:19.180674 7f983a7fc6c0 Manual compaction at level-0 from '!items!7KKX5anO8rJX492Y' @ 72057594037927935 : 1 .. '!items!veZcaW70wCVk99R7' @ 0 : 0; will stop at (end) +2026/05/01-23:51:23.965723 7fd7557ee6c0 Recovering log #43 +2026/05/01-23:51:24.013270 7fd7557ee6c0 Delete type=3 #41 +2026/05/01-23:51:24.013359 7fd7557ee6c0 Delete type=0 #43 +2026/05/02-08:26:03.516163 7fd7477fe6c0 Level-0 table #48: started +2026/05/02-08:26:03.516201 7fd7477fe6c0 Level-0 table #48: 0 bytes OK +2026/05/02-08:26:03.543330 7fd7477fe6c0 Delete type=0 #46 +2026/05/02-08:26:03.614833 7fd7477fe6c0 Manual compaction at level-0 from '!items!7KKX5anO8rJX492Y' @ 72057594037927935 : 1 .. '!items!veZcaW70wCVk99R7' @ 0 : 0; will stop at (end) diff --git a/packs/pactes-dons/LOG.old b/packs/pactes-dons/LOG.old new file mode 100644 index 0000000..ed09655 --- /dev/null +++ b/packs/pactes-dons/LOG.old @@ -0,0 +1,7 @@ +2026/05/01-23:45:25.901174 7fd754fed6c0 Recovering log #39 +2026/05/01-23:45:25.912205 7fd754fed6c0 Delete type=3 #37 +2026/05/01-23:45:25.912263 7fd754fed6c0 Delete type=0 #39 +2026/05/01-23:51:18.124721 7fd7477fe6c0 Level-0 table #44: started +2026/05/01-23:51:18.124762 7fd7477fe6c0 Level-0 table #44: 0 bytes OK +2026/05/01-23:51:18.167031 7fd7477fe6c0 Delete type=0 #42 +2026/05/01-23:51:18.167219 7fd7477fe6c0 Manual compaction at level-0 from '!items!7KKX5anO8rJX492Y' @ 72057594037927935 : 1 .. '!items!veZcaW70wCVk99R7' @ 0 : 0; will stop at (end) diff --git a/packs/pactes-dons/MANIFEST-000045 b/packs/pactes-dons/MANIFEST-000045 new file mode 100644 index 0000000..de362d5 Binary files /dev/null and b/packs/pactes-dons/MANIFEST-000045 differ diff --git a/packs/pactes-dons/lost/000008.log b/packs/pactes-dons/lost/000008.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/pnj-creatures/000215.ldb b/packs/pnj-creatures/000232.ldb similarity index 100% rename from packs/pnj-creatures/000215.ldb rename to packs/pnj-creatures/000232.ldb diff --git a/packs/pnj-creatures/000265.log b/packs/pnj-creatures/000265.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/pnj-creatures/CURRENT b/packs/pnj-creatures/CURRENT index 37ea67e..45bcdf0 100644 --- a/packs/pnj-creatures/CURRENT +++ b/packs/pnj-creatures/CURRENT @@ -1 +1 @@ -MANIFEST-000220 +MANIFEST-000263 diff --git a/packs/pnj-creatures/LOG b/packs/pnj-creatures/LOG index 4fe472e..2a78a87 100644 --- a/packs/pnj-creatures/LOG +++ b/packs/pnj-creatures/LOG @@ -1,7 +1,7 @@ -2026/04/09-23:45:58.246774 7f9888fff6c0 Recovering log #218 -2026/04/09-23:45:58.262844 7f9888fff6c0 Delete type=3 #216 -2026/04/09-23:45:58.262909 7f9888fff6c0 Delete type=0 #218 -2026/04/09-23:47:18.761713 7f983a7fc6c0 Level-0 table #223: started -2026/04/09-23:47:18.761753 7f983a7fc6c0 Level-0 table #223: 0 bytes OK -2026/04/09-23:47:18.804448 7f983a7fc6c0 Delete type=0 #221 -2026/04/09-23:47:18.841354 7f983a7fc6c0 Manual compaction at level-0 from '!actors!00CKDCqVh5fLZbYo' @ 72057594037927935 : 1 .. '!folders!dwT9WnH0ZnpuZh92' @ 0 : 0; will stop at (end) +2026/05/01-23:51:23.352194 7fd7557ee6c0 Recovering log #261 +2026/05/01-23:51:23.408632 7fd7557ee6c0 Delete type=3 #259 +2026/05/01-23:51:23.408711 7fd7557ee6c0 Delete type=0 #261 +2026/05/02-08:26:02.971512 7fd7477fe6c0 Level-0 table #266: started +2026/05/02-08:26:02.975617 7fd7477fe6c0 Level-0 table #266: 0 bytes OK +2026/05/02-08:26:03.013303 7fd7477fe6c0 Delete type=0 #264 +2026/05/02-08:26:03.143866 7fd7477fe6c0 Manual compaction at level-0 from '!actors!00CKDCqVh5fLZbYo' @ 72057594037927935 : 1 .. '!folders!dwT9WnH0ZnpuZh92' @ 0 : 0; will stop at (end) diff --git a/packs/pnj-creatures/LOG.old b/packs/pnj-creatures/LOG.old index 50ccf3b..6e97c01 100644 --- a/packs/pnj-creatures/LOG.old +++ b/packs/pnj-creatures/LOG.old @@ -1,7 +1,7 @@ -2026/04/09-23:12:16.520028 7f20ed3fd6c0 Recovering log #213 -2026/04/09-23:12:16.536063 7f20ed3fd6c0 Delete type=3 #211 -2026/04/09-23:12:16.536130 7f20ed3fd6c0 Delete type=0 #213 -2026/04/09-23:25:18.041614 7f1e4ffff6c0 Level-0 table #219: started -2026/04/09-23:25:18.041634 7f1e4ffff6c0 Level-0 table #219: 0 bytes OK -2026/04/09-23:25:18.048406 7f1e4ffff6c0 Delete type=0 #217 -2026/04/09-23:25:18.060314 7f1e4ffff6c0 Manual compaction at level-0 from '!actors!00CKDCqVh5fLZbYo' @ 72057594037927935 : 1 .. '!folders!dwT9WnH0ZnpuZh92' @ 0 : 0; will stop at (end) +2026/05/01-23:45:25.784183 7fd754fed6c0 Recovering log #257 +2026/05/01-23:45:25.793965 7fd754fed6c0 Delete type=3 #255 +2026/05/01-23:45:25.794022 7fd754fed6c0 Delete type=0 #257 +2026/05/01-23:51:17.545136 7fd7477fe6c0 Level-0 table #262: started +2026/05/01-23:51:17.545243 7fd7477fe6c0 Level-0 table #262: 0 bytes OK +2026/05/01-23:51:17.585589 7fd7477fe6c0 Delete type=0 #260 +2026/05/01-23:51:17.709862 7fd7477fe6c0 Manual compaction at level-0 from '!actors!00CKDCqVh5fLZbYo' @ 72057594037927935 : 1 .. '!folders!dwT9WnH0ZnpuZh92' @ 0 : 0; will stop at (end) diff --git a/packs/pnj-creatures/MANIFEST-000263 b/packs/pnj-creatures/MANIFEST-000263 new file mode 100644 index 0000000..fe22110 Binary files /dev/null and b/packs/pnj-creatures/MANIFEST-000263 differ diff --git a/packs/pnj-creatures/lost/000226.log b/packs/pnj-creatures/lost/000226.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/pnj-creatures/pnj-creatures/LOCK b/packs/pnj-creatures/pnj-creatures/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/packs/pnj-creatures/pnj-creatures/LOG b/packs/pnj-creatures/pnj-creatures/LOG new file mode 100644 index 0000000..e69de29 diff --git a/packs/pnj-creatures/pnj-creatures/LOG.old b/packs/pnj-creatures/pnj-creatures/LOG.old new file mode 100644 index 0000000..e69de29 diff --git a/packs/pnj-creatures/pnj-creatures/pnj-creatures/LOCK b/packs/pnj-creatures/pnj-creatures/pnj-creatures/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/packs/pnj-creatures/pnj-creatures/pnj-creatures/LOG b/packs/pnj-creatures/pnj-creatures/pnj-creatures/LOG new file mode 100644 index 0000000..e69de29 diff --git a/packs/pouvoirs-elementaires/000004.log b/packs/pouvoirs-elementaires/000004.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/pouvoirs-elementaires/pouvoirs-elementaires/000005.ldb b/packs/pouvoirs-elementaires/pouvoirs-elementaires/000005.ldb new file mode 100644 index 0000000..b256838 Binary files /dev/null and b/packs/pouvoirs-elementaires/pouvoirs-elementaires/000005.ldb differ diff --git a/packs/pouvoirs-elementaires/pouvoirs-elementaires/000012.log b/packs/pouvoirs-elementaires/pouvoirs-elementaires/000012.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/pouvoirs-elementaires/pouvoirs-elementaires/000014.ldb b/packs/pouvoirs-elementaires/pouvoirs-elementaires/000014.ldb new file mode 100644 index 0000000..6699cca Binary files /dev/null and b/packs/pouvoirs-elementaires/pouvoirs-elementaires/000014.ldb differ diff --git a/packs/pouvoirs-elementaires/pouvoirs-elementaires/CURRENT b/packs/pouvoirs-elementaires/pouvoirs-elementaires/CURRENT new file mode 100644 index 0000000..3051f81 --- /dev/null +++ b/packs/pouvoirs-elementaires/pouvoirs-elementaires/CURRENT @@ -0,0 +1 @@ +MANIFEST-000010 diff --git a/packs/pouvoirs-elementaires/pouvoirs-elementaires/LOCK b/packs/pouvoirs-elementaires/pouvoirs-elementaires/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/packs/pouvoirs-elementaires/pouvoirs-elementaires/LOG b/packs/pouvoirs-elementaires/pouvoirs-elementaires/LOG new file mode 100644 index 0000000..551dd1e --- /dev/null +++ b/packs/pouvoirs-elementaires/pouvoirs-elementaires/LOG @@ -0,0 +1,15 @@ +2026/05/01-23:51:23.598257 7fd754fed6c0 Recovering log #8 +2026/05/01-23:51:23.649867 7fd754fed6c0 Delete type=3 #6 +2026/05/01-23:51:23.649926 7fd754fed6c0 Delete type=0 #8 +2026/05/02-08:26:03.144045 7fd7477fe6c0 Level-0 table #13: started +2026/05/02-08:26:03.159830 7fd7477fe6c0 Level-0 table #13: 10556 bytes OK +2026/05/02-08:26:03.206591 7fd7477fe6c0 Delete type=0 #11 +2026/05/02-08:26:03.317611 7fd7477fe6c0 Manual compaction at level-0 from '!items!CapAirAppar0000001' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end) +2026/05/02-08:26:03.317675 7fd7477fe6c0 Manual compaction at level-1 from '!items!CapAirAppar0000001' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 57 : 1 +2026/05/02-08:26:03.317682 7fd7477fe6c0 Compacting 1@1 + 1@2 files +2026/05/02-08:26:03.331168 7fd7477fe6c0 Generated table #14@1: 1 keys, 1091 bytes +2026/05/02-08:26:03.331196 7fd7477fe6c0 Compacted 1@1 + 1@2 files => 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) diff --git a/packs/pouvoirs-elementaires/pouvoirs-elementaires/LOG.old b/packs/pouvoirs-elementaires/pouvoirs-elementaires/LOG.old new file mode 100644 index 0000000..663215a --- /dev/null +++ b/packs/pouvoirs-elementaires/pouvoirs-elementaires/LOG.old @@ -0,0 +1,8 @@ +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) diff --git a/packs/pouvoirs-elementaires/pouvoirs-elementaires/MANIFEST-000010 b/packs/pouvoirs-elementaires/pouvoirs-elementaires/MANIFEST-000010 new file mode 100644 index 0000000..e8e93ec Binary files /dev/null and b/packs/pouvoirs-elementaires/pouvoirs-elementaires/MANIFEST-000010 differ diff --git a/packs/protection/000319.ldb b/packs/protection/000336.ldb similarity index 100% rename from packs/protection/000319.ldb rename to packs/protection/000336.ldb diff --git a/packs/protection/000369.log b/packs/protection/000369.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/protection/CURRENT b/packs/protection/CURRENT index 75c473d..07a4d2c 100644 --- a/packs/protection/CURRENT +++ b/packs/protection/CURRENT @@ -1 +1 @@ -MANIFEST-000324 +MANIFEST-000367 diff --git a/packs/protection/LOG b/packs/protection/LOG index 2901c99..42ebdfc 100644 --- a/packs/protection/LOG +++ b/packs/protection/LOG @@ -1,7 +1,7 @@ -2026/04/09-23:45:58.321403 7f983bfff6c0 Recovering log #322 -2026/04/09-23:45:58.336285 7f983bfff6c0 Delete type=3 #320 -2026/04/09-23:45:58.336351 7f983bfff6c0 Delete type=0 #322 -2026/04/09-23:47:18.841528 7f983a7fc6c0 Level-0 table #327: started -2026/04/09-23:47:18.841568 7f983a7fc6c0 Level-0 table #327: 0 bytes OK -2026/04/09-23:47:18.879185 7f983a7fc6c0 Delete type=0 #325 -2026/04/09-23:47:18.997823 7f983a7fc6c0 Manual compaction at level-0 from '!items!2hD1DQVeCIQIXFU7' @ 72057594037927935 : 1 .. '!items!veoS6Gtzj6Dq087V' @ 0 : 0; will stop at (end) +2026/05/01-23:51:23.775713 7fd747fff6c0 Recovering log #365 +2026/05/01-23:51:23.836844 7fd747fff6c0 Delete type=3 #363 +2026/05/01-23:51:23.836923 7fd747fff6c0 Delete type=0 #365 +2026/05/02-08:26:03.360930 7fd7477fe6c0 Level-0 table #370: started +2026/05/02-08:26:03.360972 7fd7477fe6c0 Level-0 table #370: 0 bytes OK +2026/05/02-08:26:03.403236 7fd7477fe6c0 Delete type=0 #368 +2026/05/02-08:26:03.477112 7fd7477fe6c0 Manual compaction at level-0 from '!items!2hD1DQVeCIQIXFU7' @ 72057594037927935 : 1 .. '!items!veoS6Gtzj6Dq087V' @ 0 : 0; will stop at (end) diff --git a/packs/protection/LOG.old b/packs/protection/LOG.old index 86595ed..2a53add 100644 --- a/packs/protection/LOG.old +++ b/packs/protection/LOG.old @@ -1,7 +1,7 @@ -2026/04/09-23:12:16.615080 7f20ee3ff6c0 Recovering log #317 -2026/04/09-23:12:16.630250 7f20ee3ff6c0 Delete type=3 #315 -2026/04/09-23:12:16.630308 7f20ee3ff6c0 Delete type=0 #317 -2026/04/09-23:25:18.060419 7f1e4ffff6c0 Level-0 table #323: started -2026/04/09-23:25:18.060441 7f1e4ffff6c0 Level-0 table #323: 0 bytes OK -2026/04/09-23:25:18.066664 7f1e4ffff6c0 Delete type=0 #321 -2026/04/09-23:25:18.084770 7f1e4ffff6c0 Manual compaction at level-0 from '!items!2hD1DQVeCIQIXFU7' @ 72057594037927935 : 1 .. '!items!veoS6Gtzj6Dq087V' @ 0 : 0; will stop at (end) +2026/05/01-23:45:25.861602 7fd747fff6c0 Recovering log #361 +2026/05/01-23:45:25.872582 7fd747fff6c0 Delete type=3 #359 +2026/05/01-23:45:25.872659 7fd747fff6c0 Delete type=0 #361 +2026/05/01-23:51:17.920839 7fd7477fe6c0 Level-0 table #366: started +2026/05/01-23:51:17.920870 7fd7477fe6c0 Level-0 table #366: 0 bytes OK +2026/05/01-23:51:17.956761 7fd7477fe6c0 Delete type=0 #364 +2026/05/01-23:51:18.003330 7fd7477fe6c0 Manual compaction at level-0 from '!items!2hD1DQVeCIQIXFU7' @ 72057594037927935 : 1 .. '!items!veoS6Gtzj6Dq087V' @ 0 : 0; will stop at (end) diff --git a/packs/protection/MANIFEST-000367 b/packs/protection/MANIFEST-000367 new file mode 100644 index 0000000..4332c79 Binary files /dev/null and b/packs/protection/MANIFEST-000367 differ diff --git a/packs/protection/lost/000330.log b/packs/protection/lost/000330.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/runes/000328.ldb b/packs/runes/000337.ldb similarity index 100% rename from packs/runes/000328.ldb rename to packs/runes/000337.ldb diff --git a/packs/runes/000370.log b/packs/runes/000370.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/runes/CURRENT b/packs/runes/CURRENT index 75c473d..0e10e4f 100644 --- a/packs/runes/CURRENT +++ b/packs/runes/CURRENT @@ -1 +1 @@ -MANIFEST-000324 +MANIFEST-000368 diff --git a/packs/runes/LOG b/packs/runes/LOG index 4defa33..deb2405 100644 --- a/packs/runes/LOG +++ b/packs/runes/LOG @@ -1,14 +1,7 @@ -2026/04/09-23:45:58.487370 7f983bfff6c0 Recovering log #322 -2026/04/09-23:45:58.503708 7f983bfff6c0 Delete type=3 #320 -2026/04/09-23:45:58.503777 7f983bfff6c0 Delete type=0 #322 -2026/04/09-23:47:19.297266 7f983a7fc6c0 Level-0 table #327: started -2026/04/09-23:47:19.315493 7f983a7fc6c0 Level-0 table #327: 22260 bytes OK -2026/04/09-23:47:19.353728 7f983a7fc6c0 Delete type=0 #325 -2026/04/09-23:47:19.354006 7f983a7fc6c0 Manual compaction at level-0 from '!items!12OfTQijhZYbH4vE' @ 72057594037927935 : 1 .. '!items!yicDDY8Z8Xnz1Fam' @ 0 : 0; will stop at '!items!yicDDY8Z8Xnz1Fam' @ 199 : 1 -2026/04/09-23:47:19.354011 7f983a7fc6c0 Compacting 1@0 + 1@1 files -2026/04/09-23:47:19.377009 7f983a7fc6c0 Generated table #328@0: 76 keys, 58333 bytes -2026/04/09-23:47:19.377042 7f983a7fc6c0 Compacted 1@0 + 1@1 files => 58333 bytes -2026/04/09-23:47:19.413466 7f983a7fc6c0 compacted to: files[ 0 1 0 0 0 0 0 ] -2026/04/09-23:47:19.413579 7f983a7fc6c0 Delete type=2 #319 -2026/04/09-23:47:19.413754 7f983a7fc6c0 Delete type=2 #327 -2026/04/09-23:47:19.531415 7f983a7fc6c0 Manual compaction at level-0 from '!items!yicDDY8Z8Xnz1Fam' @ 199 : 1 .. '!items!yicDDY8Z8Xnz1Fam' @ 0 : 0; will stop at (end) +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) diff --git a/packs/runes/LOG.old b/packs/runes/LOG.old index 9c3b468..c3aff95 100644 --- a/packs/runes/LOG.old +++ b/packs/runes/LOG.old @@ -1,7 +1,7 @@ -2026/04/09-23:12:16.773729 7f20ecbfc6c0 Recovering log #317 -2026/04/09-23:12:16.789109 7f20ecbfc6c0 Delete type=3 #315 -2026/04/09-23:12:16.789176 7f20ecbfc6c0 Delete type=0 #317 -2026/04/09-23:25:18.111161 7f1e4ffff6c0 Level-0 table #323: started -2026/04/09-23:25:18.111183 7f1e4ffff6c0 Level-0 table #323: 0 bytes OK -2026/04/09-23:25:18.117197 7f1e4ffff6c0 Delete type=0 #321 -2026/04/09-23:25:18.139994 7f1e4ffff6c0 Manual compaction at level-0 from '!items!1JqWbEkHUoKXbsgn' @ 72057594037927935 : 1 .. '!items!xnCf2xIPzdsUoBTy' @ 0 : 0; will stop at (end) +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) diff --git a/packs/runes/MANIFEST-000368 b/packs/runes/MANIFEST-000368 new file mode 100644 index 0000000..678fa7c Binary files /dev/null and b/packs/runes/MANIFEST-000368 differ diff --git a/packs/runes/lost/000331.log b/packs/runes/lost/000331.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/runes/runes/LOCK b/packs/runes/runes/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/packs/runes/runes/LOG b/packs/runes/runes/LOG new file mode 100644 index 0000000..e69de29 diff --git a/packs/runes/runes/LOG.old b/packs/runes/runes/LOG.old new file mode 100644 index 0000000..e69de29 diff --git a/packs/runes/runes/runes/LOCK b/packs/runes/runes/runes/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/packs/runes/runes/runes/LOG b/packs/runes/runes/runes/LOG new file mode 100644 index 0000000..e69de29 diff --git a/packs/scenes/000235.ldb b/packs/scenes/000252.ldb similarity index 100% rename from packs/scenes/000235.ldb rename to packs/scenes/000252.ldb diff --git a/packs/scenes/000285.log b/packs/scenes/000285.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/scenes/CURRENT b/packs/scenes/CURRENT index 803ffe2..249a860 100644 --- a/packs/scenes/CURRENT +++ b/packs/scenes/CURRENT @@ -1 +1 @@ -MANIFEST-000240 +MANIFEST-000283 diff --git a/packs/scenes/LOG b/packs/scenes/LOG index 43db909..115671f 100644 --- a/packs/scenes/LOG +++ b/packs/scenes/LOG @@ -1,7 +1,7 @@ -2026/04/09-23:45:58.523395 7f983b7fe6c0 Recovering log #238 -2026/04/09-23:45:58.538137 7f983b7fe6c0 Delete type=3 #236 -2026/04/09-23:45:58.538186 7f983b7fe6c0 Delete type=0 #238 -2026/04/09-23:47:19.452269 7f983a7fc6c0 Level-0 table #243: started -2026/04/09-23:47:19.452300 7f983a7fc6c0 Level-0 table #243: 0 bytes OK -2026/04/09-23:47:19.496545 7f983a7fc6c0 Delete type=0 #241 -2026/04/09-23:47:19.531448 7f983a7fc6c0 Manual compaction at level-0 from '!scenes!ZDV2IwduhOXTxy72' @ 72057594037927935 : 1 .. '!scenes.levels!ZDV2IwduhOXTxy72.defaultLevel0000' @ 0 : 0; will stop at (end) +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) diff --git a/packs/scenes/LOG.old b/packs/scenes/LOG.old index 9435ad1..14dda3e 100644 --- a/packs/scenes/LOG.old +++ b/packs/scenes/LOG.old @@ -1,7 +1,7 @@ -2026/04/09-23:12:16.811675 7f20ed3fd6c0 Recovering log #233 -2026/04/09-23:12:16.826590 7f20ed3fd6c0 Delete type=3 #231 -2026/04/09-23:12:16.826656 7f20ed3fd6c0 Delete type=0 #233 -2026/04/09-23:25:18.123619 7f1e4ffff6c0 Level-0 table #239: started -2026/04/09-23:25:18.123643 7f1e4ffff6c0 Level-0 table #239: 0 bytes OK -2026/04/09-23:25:18.130176 7f1e4ffff6c0 Delete type=0 #237 -2026/04/09-23:25:18.140011 7f1e4ffff6c0 Manual compaction at level-0 from '!scenes!ZDV2IwduhOXTxy72' @ 72057594037927935 : 1 .. '!scenes.levels!ZDV2IwduhOXTxy72.defaultLevel0000' @ 0 : 0; will stop at (end) +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) diff --git a/packs/scenes/MANIFEST-000283 b/packs/scenes/MANIFEST-000283 new file mode 100644 index 0000000..b895f4a Binary files /dev/null and b/packs/scenes/MANIFEST-000283 differ diff --git a/packs/scenes/lost/000246.log b/packs/scenes/lost/000246.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/skills-creatures/000227.ldb b/packs/skills-creatures/000244.ldb similarity index 100% rename from packs/skills-creatures/000227.ldb rename to packs/skills-creatures/000244.ldb diff --git a/packs/skills-creatures/000277.log b/packs/skills-creatures/000277.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/skills-creatures/CURRENT b/packs/skills-creatures/CURRENT index bcb858e..1df8f35 100644 --- a/packs/skills-creatures/CURRENT +++ b/packs/skills-creatures/CURRENT @@ -1 +1 @@ -MANIFEST-000232 +MANIFEST-000275 diff --git a/packs/skills-creatures/LOG b/packs/skills-creatures/LOG index 7806503..f4438bd 100644 --- a/packs/skills-creatures/LOG +++ b/packs/skills-creatures/LOG @@ -1,7 +1,7 @@ -2026/04/09-23:45:58.286205 7f9888fff6c0 Recovering log #230 -2026/04/09-23:45:58.301112 7f9888fff6c0 Delete type=3 #228 -2026/04/09-23:45:58.301194 7f9888fff6c0 Delete type=0 #230 -2026/04/09-23:47:18.954669 7f983a7fc6c0 Level-0 table #235: started -2026/04/09-23:47:18.954723 7f983a7fc6c0 Level-0 table #235: 0 bytes OK -2026/04/09-23:47:18.997675 7f983a7fc6c0 Delete type=0 #233 -2026/04/09-23:47:18.997860 7f983a7fc6c0 Manual compaction at level-0 from '!items!6bmjc4MUduGs9s6n' @ 72057594037927935 : 1 .. '!items!t692JcsGHG4YJIlM' @ 0 : 0; will stop at (end) +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) diff --git a/packs/skills-creatures/LOG.old b/packs/skills-creatures/LOG.old index 491d68c..640b6ba 100644 --- a/packs/skills-creatures/LOG.old +++ b/packs/skills-creatures/LOG.old @@ -1,7 +1,7 @@ -2026/04/09-23:12:16.566435 7f20ed3fd6c0 Recovering log #225 -2026/04/09-23:12:16.585714 7f20ed3fd6c0 Delete type=3 #223 -2026/04/09-23:12:16.585791 7f20ed3fd6c0 Delete type=0 #225 -2026/04/09-23:25:18.035426 7f1e4ffff6c0 Level-0 table #231: started -2026/04/09-23:25:18.035487 7f1e4ffff6c0 Level-0 table #231: 0 bytes OK -2026/04/09-23:25:18.041540 7f1e4ffff6c0 Delete type=0 #229 -2026/04/09-23:25:18.060303 7f1e4ffff6c0 Manual compaction at level-0 from '!items!6bmjc4MUduGs9s6n' @ 72057594037927935 : 1 .. '!items!t692JcsGHG4YJIlM' @ 0 : 0; will stop at (end) +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) diff --git a/packs/skills-creatures/MANIFEST-000275 b/packs/skills-creatures/MANIFEST-000275 new file mode 100644 index 0000000..05a64fb Binary files /dev/null and b/packs/skills-creatures/MANIFEST-000275 differ diff --git a/packs/skills-creatures/lost/000238.log b/packs/skills-creatures/lost/000238.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/skills/000319.ldb b/packs/skills/000336.ldb similarity index 100% rename from packs/skills/000319.ldb rename to packs/skills/000336.ldb diff --git a/packs/skills/000369.log b/packs/skills/000369.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/skills/CURRENT b/packs/skills/CURRENT index 75c473d..07a4d2c 100644 --- a/packs/skills/CURRENT +++ b/packs/skills/CURRENT @@ -1 +1 @@ -MANIFEST-000324 +MANIFEST-000367 diff --git a/packs/skills/LOG b/packs/skills/LOG index 8477da4..b41f267 100644 --- a/packs/skills/LOG +++ b/packs/skills/LOG @@ -1,7 +1,7 @@ -2026/04/09-23:45:58.269799 7f983bfff6c0 Recovering log #322 -2026/04/09-23:45:58.283710 7f983bfff6c0 Delete type=3 #320 -2026/04/09-23:45:58.283784 7f983bfff6c0 Delete type=0 #322 -2026/04/09-23:47:18.804674 7f983a7fc6c0 Level-0 table #327: started -2026/04/09-23:47:18.804736 7f983a7fc6c0 Level-0 table #327: 0 bytes OK -2026/04/09-23:47:18.841172 7f983a7fc6c0 Delete type=0 #325 -2026/04/09-23:47:18.841366 7f983a7fc6c0 Manual compaction at level-0 from '!items!0LlzDyCurJedqeyG' @ 72057594037927935 : 1 .. '!items!tq6mEgXog7h4VyWk' @ 0 : 0; will stop at (end) +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) diff --git a/packs/skills/LOG.old b/packs/skills/LOG.old index 96c7bfb..149986f 100644 --- a/packs/skills/LOG.old +++ b/packs/skills/LOG.old @@ -1,7 +1,7 @@ -2026/04/09-23:12:16.548327 7f20ee3ff6c0 Recovering log #317 -2026/04/09-23:12:16.563230 7f20ee3ff6c0 Delete type=3 #315 -2026/04/09-23:12:16.563310 7f20ee3ff6c0 Delete type=0 #317 -2026/04/09-23:25:18.048547 7f1e4ffff6c0 Level-0 table #323: started -2026/04/09-23:25:18.048574 7f1e4ffff6c0 Level-0 table #323: 0 bytes OK -2026/04/09-23:25:18.054419 7f1e4ffff6c0 Delete type=0 #321 -2026/04/09-23:25:18.060322 7f1e4ffff6c0 Manual compaction at level-0 from '!items!0LlzDyCurJedqeyG' @ 72057594037927935 : 1 .. '!items!tq6mEgXog7h4VyWk' @ 0 : 0; will stop at (end) +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) diff --git a/packs/skills/MANIFEST-000367 b/packs/skills/MANIFEST-000367 new file mode 100644 index 0000000..a573cd7 Binary files /dev/null and b/packs/skills/MANIFEST-000367 differ diff --git a/packs/skills/lost/000330.log b/packs/skills/lost/000330.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/src/creatures-elementaires/elementaire-air-majeur.json b/packs/src/creatures-elementaires/elementaire-air-majeur.json new file mode 100644 index 0000000..933ad02 --- /dev/null +++ b/packs/src/creatures-elementaires/elementaire-air-majeur.json @@ -0,0 +1,143 @@ +{ + "_id": "ElemAirMaj0000003", + "_key": "!actors!ElemAirMaj0000003", + "name": "Élémentaire d'Air Majeur", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "ElemAirMajMvt0001", + "_key": "!actors.items!ElemAirMaj0000003.ElemAirMajMvt0001", + "name": "Mouvements", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 15, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "ElemAirMajPer0001", + "_key": "!actors.items!ElemAirMaj0000003.ElemAirMajPer0001", + "name": "Perception", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 10, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + } + ], + "effects": [], + "folder": null, + "sort": 300000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Élémentaire", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

Élémentaire d'Air Majeur

Seuil d'invocation : 25 | Capacité Offensive : 14 | Protection : 0 | Pouvoirs disponibles à l'invocation : 4

Voir le compendium Pouvoirs Élémentaires (Air) pour la liste des pouvoirs.

Règles générales des Élémentaires

Les Élémentaires possèdent très peu de compétences : ils sont la manifestation brute des forces de la nature. Leurs tests de Combat s'effectuent avec Puissance × 2.

La réserve de points d'Âme avec laquelle l'Élémentaire débute est toujours égale au nombre de points d'Âme que le sorcier a consacrés à l'invocation. L'invocateur choisit lors de l'invocation 2 Pouvoirs pour un Élémentaire mineur, 3 Pouvoirs pour un médian et 4 Pouvoirs pour un majeur.

Une fois invoqué, le sorcier peut lui demander de combattre, de le suivre ou d'activer ses Pouvoirs élémentaires en prononçant la formule consacrée (action complexe en Haut-Parler). Aucun test n'est requis : l'Élémentaire dépense 1 point d'Âme par activation. Quand sa réserve tombe à zéro, il est épuisé et disparaît.

Résistance physique : tous les dégâts physiques infligés à l'Élémentaire sont divisés par 2. En revanche, les dégâts magiques (armes runiques, sorts, Démons, créatures extra-planaires) le blessent normalement.

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

Voir compendium Pouvoirs Élémentaires (Air). L'Âme est égale aux points d'Âme consacrés à l'invocation.

", + "gmnotes": "

Seuil : 25 | CO : 14 | Mouvements : 15 | Perception : 10

", + "creatureType": "elementaire", + "elementType": "air" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 10 + }, + "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": 7 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 7 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 39, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 28, + "bonusdegats": 0, + "defensebonus": 2, + "monte": false + }, + "balance": { + "loi": 0, + "chaos": 0, + "aspect": 0, + "marge": 0, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/creatures-elementaires/elementaire-air-median.json b/packs/src/creatures-elementaires/elementaire-air-median.json new file mode 100644 index 0000000..84c6e27 --- /dev/null +++ b/packs/src/creatures-elementaires/elementaire-air-median.json @@ -0,0 +1,143 @@ +{ + "_id": "ElemAirMed0000002", + "_key": "!actors!ElemAirMed0000002", + "name": "Élémentaire d'Air Médian", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "ElemAirMedMvt0001", + "_key": "!actors.items!ElemAirMed0000002.ElemAirMedMvt0001", + "name": "Mouvements", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 10, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "ElemAirMedPer0001", + "_key": "!actors.items!ElemAirMed0000002.ElemAirMedPer0001", + "name": "Perception", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 8, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + } + ], + "effects": [], + "folder": null, + "sort": 200000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Élémentaire", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

Élémentaire d'Air Médian

Seuil d'invocation : 20 | Capacité Offensive : 14 | Protection : 0 | Pouvoirs disponibles à l'invocation : 3

Voir le compendium Pouvoirs Élémentaires (Air) pour la liste des pouvoirs.

Règles générales des Élémentaires

Les Élémentaires possèdent très peu de compétences : ils sont la manifestation brute des forces de la nature. Leurs tests de Combat s'effectuent avec Puissance × 2.

La réserve de points d'Âme avec laquelle l'Élémentaire débute est toujours égale au nombre de points d'Âme que le sorcier a consacrés à l'invocation. L'invocateur choisit lors de l'invocation 2 Pouvoirs pour un Élémentaire mineur, 3 Pouvoirs pour un médian et 4 Pouvoirs pour un majeur.

Une fois invoqué, le sorcier peut lui demander de combattre, de le suivre ou d'activer ses Pouvoirs élémentaires en prononçant la formule consacrée (action complexe en Haut-Parler). Aucun test n'est requis : l'Élémentaire dépense 1 point d'Âme par activation. Quand sa réserve tombe à zéro, il est épuisé et disparaît.

Résistance physique : tous les dégâts physiques infligés à l'Élémentaire sont divisés par 2. En revanche, les dégâts magiques (armes runiques, sorts, Démons, créatures extra-planaires) le blessent normalement.

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

Voir compendium Pouvoirs Élémentaires (Air). L'Âme est égale aux points d'Âme consacrés à l'invocation.

", + "gmnotes": "

Seuil : 20 | CO : 14 | Mouvements : 10 | Perception : 8

", + "creatureType": "elementaire", + "elementType": "air" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 7 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 7 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 3 + }, + "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": 29, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 24, + "bonusdegats": 0, + "defensebonus": 4, + "monte": false + }, + "balance": { + "loi": 0, + "chaos": 0, + "aspect": 0, + "marge": 0, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/creatures-elementaires/elementaire-air-mineur.json b/packs/src/creatures-elementaires/elementaire-air-mineur.json new file mode 100644 index 0000000..ca9eec8 --- /dev/null +++ b/packs/src/creatures-elementaires/elementaire-air-mineur.json @@ -0,0 +1,143 @@ +{ + "_id": "ElemAirMin0000001", + "_key": "!actors!ElemAirMin0000001", + "name": "Élémentaire d'Air Mineur", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "ElemAirMinMvt0001", + "_key": "!actors.items!ElemAirMin0000001.ElemAirMinMvt0001", + "name": "Mouvements", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 8, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "ElemAirMinPer0001", + "_key": "!actors.items!ElemAirMin0000001.ElemAirMinPer0001", + "name": "Perception", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 7, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + } + ], + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Élémentaire", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

Élémentaire d'Air Mineur

Seuil d'invocation : 15 | Capacité Offensive : 10 | Protection : 0 | Pouvoirs disponibles à l'invocation : 2

Voir le compendium Pouvoirs Élémentaires (Air) pour la liste des pouvoirs.

Règles générales des Élémentaires

Les Élémentaires possèdent très peu de compétences : ils sont la manifestation brute des forces de la nature. Leurs tests de Combat s'effectuent avec Puissance × 2.

La réserve de points d'Âme avec laquelle l'Élémentaire débute est toujours égale au nombre de points d'Âme que le sorcier a consacrés à l'invocation. L'invocateur choisit lors de l'invocation 2 Pouvoirs pour un Élémentaire mineur, 3 Pouvoirs pour un médian et 4 Pouvoirs pour un majeur.

Une fois invoqué, le sorcier peut lui demander de combattre, de le suivre ou d'activer ses Pouvoirs élémentaires en prononçant la formule consacrée (action complexe en Haut-Parler). Aucun test n'est requis : l'Élémentaire dépense 1 point d'Âme par activation. Quand sa réserve tombe à zéro, il est épuisé et disparaît.

Résistance physique : tous les dégâts physiques infligés à l'Élémentaire sont divisés par 2. En revanche, les dégâts magiques (armes runiques, sorts, Démons, créatures extra-planaires) le blessent normalement.

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

Voir compendium Pouvoirs Élémentaires (Air). L'Âme est égale aux points d'Âme consacrés à l'invocation.

", + "gmnotes": "

Seuil : 15 | CO : 10 | Mouvements : 8 | Perception : 7

", + "creatureType": "elementaire", + "elementType": "air" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 5 + }, + "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": 2 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 2 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 19, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 20, + "bonusdegats": 0, + "defensebonus": 3, + "monte": false + }, + "balance": { + "loi": 0, + "chaos": 0, + "aspect": 0, + "marge": 0, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/creatures-elementaires/elementaire-eau-majeur.json b/packs/src/creatures-elementaires/elementaire-eau-majeur.json new file mode 100644 index 0000000..291495a --- /dev/null +++ b/packs/src/creatures-elementaires/elementaire-eau-majeur.json @@ -0,0 +1,143 @@ +{ + "_id": "ElemEauMaj0000012", + "_key": "!actors!ElemEauMaj0000012", + "name": "Élémentaire de l'Eau Majeur", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "ElemEauMajMvt0001", + "_key": "!actors.items!ElemEauMaj0000012.ElemEauMajMvt0001", + "name": "Mouvements", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 10, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "ElemEauMajDis0001", + "_key": "!actors.items!ElemEauMaj0000012.ElemEauMajDis0001", + "name": "Discrétion", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 15, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + } + ], + "effects": [], + "folder": null, + "sort": 1200000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Élémentaire", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

Élémentaire de l'Eau Majeur

Seuil d'invocation : 25 | Capacité Offensive : 20 | Protection : 0 | Pouvoirs disponibles à l'invocation : 4

Voir le compendium Pouvoirs Élémentaires (Eau) pour la liste des pouvoirs.

Règles générales des Élémentaires

Les Élémentaires possèdent très peu de compétences : ils sont la manifestation brute des forces de la nature. Leurs tests de Combat s'effectuent avec Puissance × 2.

La réserve de points d'Âme avec laquelle l'Élémentaire débute est toujours égale au nombre de points d'Âme que le sorcier a consacrés à l'invocation. L'invocateur choisit lors de l'invocation 2 Pouvoirs pour un Élémentaire mineur, 3 Pouvoirs pour un médian et 4 Pouvoirs pour un majeur.

Une fois invoqué, le sorcier peut lui demander de combattre, de le suivre ou d'activer ses Pouvoirs élémentaires en prononçant la formule consacrée (action complexe en Haut-Parler). Aucun test n'est requis : l'Élémentaire dépense 1 point d'Âme par activation. Quand sa réserve tombe à zéro, il est épuisé et disparaît.

Résistance physique : tous les dégâts physiques infligés à l'Élémentaire sont divisés par 2. En revanche, les dégâts magiques (armes runiques, sorts, Démons, créatures extra-planaires) le blessent normalement.

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

Voir compendium Pouvoirs Élémentaires (Eau). L'Âme est égale aux points d'Âme consacrés à l'invocation.

", + "gmnotes": "

Seuil : 25 | CO : 20 | Mouvements : 10 | Discrétion : 15

", + "creatureType": "elementaire", + "elementType": "eau" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 7 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 10 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 7 + }, + "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": 37, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 14, + "bonusdegats": 0, + "defensebonus": 9, + "monte": false + }, + "balance": { + "loi": 0, + "chaos": 0, + "aspect": 0, + "marge": 0, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/creatures-elementaires/elementaire-eau-median.json b/packs/src/creatures-elementaires/elementaire-eau-median.json new file mode 100644 index 0000000..2ed2777 --- /dev/null +++ b/packs/src/creatures-elementaires/elementaire-eau-median.json @@ -0,0 +1,143 @@ +{ + "_id": "ElemEauMed0000011", + "_key": "!actors!ElemEauMed0000011", + "name": "Élémentaire de l'Eau Médian", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "ElemEauMedMvt0001", + "_key": "!actors.items!ElemEauMed0000011.ElemEauMedMvt0001", + "name": "Mouvements", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 5, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "ElemEauMedDis0001", + "_key": "!actors.items!ElemEauMed0000011.ElemEauMedDis0001", + "name": "Discrétion", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 10, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + } + ], + "effects": [], + "folder": null, + "sort": 1100000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Élémentaire", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

Élémentaire de l'Eau Médian

Seuil d'invocation : 20 | Capacité Offensive : 10 | Protection : 0 | Pouvoirs disponibles à l'invocation : 3

Voir le compendium Pouvoirs Élémentaires (Eau) pour la liste des pouvoirs.

Règles générales des Élémentaires

Les Élémentaires possèdent très peu de compétences : ils sont la manifestation brute des forces de la nature. Leurs tests de Combat s'effectuent avec Puissance × 2.

La réserve de points d'Âme avec laquelle l'Élémentaire débute est toujours égale au nombre de points d'Âme que le sorcier a consacrés à l'invocation. L'invocateur choisit lors de l'invocation 2 Pouvoirs pour un Élémentaire mineur, 3 Pouvoirs pour un médian et 4 Pouvoirs pour un majeur.

Une fois invoqué, le sorcier peut lui demander de combattre, de le suivre ou d'activer ses Pouvoirs élémentaires en prononçant la formule consacrée (action complexe en Haut-Parler). Aucun test n'est requis : l'Élémentaire dépense 1 point d'Âme par activation. Quand sa réserve tombe à zéro, il est épuisé et disparaît.

Résistance physique : tous les dégâts physiques infligés à l'Élémentaire sont divisés par 2. En revanche, les dégâts magiques (armes runiques, sorts, Démons, créatures extra-planaires) le blessent normalement.

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

Voir compendium Pouvoirs Élémentaires (Eau). L'Âme est égale aux points d'Âme consacrés à l'invocation.

", + "gmnotes": "

Seuil : 20 | CO : 10 | Mouvements : 5 | Discrétion : 10

", + "creatureType": "elementaire", + "elementType": "eau" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 5 + }, + "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": 7 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 3 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 25, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 8, + "bonusdegats": 0, + "defensebonus": 2, + "monte": false + }, + "balance": { + "loi": 0, + "chaos": 0, + "aspect": 0, + "marge": 0, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/creatures-elementaires/elementaire-eau-mineur.json b/packs/src/creatures-elementaires/elementaire-eau-mineur.json new file mode 100644 index 0000000..609f125 --- /dev/null +++ b/packs/src/creatures-elementaires/elementaire-eau-mineur.json @@ -0,0 +1,143 @@ +{ + "_id": "ElemEauMin0000010", + "_key": "!actors!ElemEauMin0000010", + "name": "Élémentaire de l'Eau Mineur", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "ElemEauMinMvt0001", + "_key": "!actors.items!ElemEauMin0000010.ElemEauMinMvt0001", + "name": "Mouvements", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 5, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "ElemEauMinDis0001", + "_key": "!actors.items!ElemEauMin0000010.ElemEauMinDis0001", + "name": "Discrétion", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 7, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + } + ], + "effects": [], + "folder": null, + "sort": 1000000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Élémentaire", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

Élémentaire de l'Eau Mineur

Seuil d'invocation : 15 | Capacité Offensive : 10 | Protection : 0 | Pouvoirs disponibles à l'invocation : 2

Voir le compendium Pouvoirs Élémentaires (Eau) pour la liste des pouvoirs.

Règles générales des Élémentaires

Les Élémentaires possèdent très peu de compétences : ils sont la manifestation brute des forces de la nature. Leurs tests de Combat s'effectuent avec Puissance × 2.

La réserve de points d'Âme avec laquelle l'Élémentaire débute est toujours égale au nombre de points d'Âme que le sorcier a consacrés à l'invocation. L'invocateur choisit lors de l'invocation 2 Pouvoirs pour un Élémentaire mineur, 3 Pouvoirs pour un médian et 4 Pouvoirs pour un majeur.

Une fois invoqué, le sorcier peut lui demander de combattre, de le suivre ou d'activer ses Pouvoirs élémentaires en prononçant la formule consacrée (action complexe en Haut-Parler). Aucun test n'est requis : l'Élémentaire dépense 1 point d'Âme par activation. Quand sa réserve tombe à zéro, il est épuisé et disparaît.

Résistance physique : tous les dégâts physiques infligés à l'Élémentaire sont divisés par 2. En revanche, les dégâts magiques (armes runiques, sorts, Démons, créatures extra-planaires) le blessent normalement.

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

Voir compendium Pouvoirs Élémentaires (Eau). L'Âme est égale aux points d'Âme consacrés à l'invocation.

", + "gmnotes": "

Seuil : 15 | CO : 10 | Mouvements : 5 | Discrétion : 7

", + "creatureType": "elementaire", + "elementType": "eau" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 2 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 5 + }, + "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": 2 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 19, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 4, + "bonusdegats": 0, + "defensebonus": 3, + "monte": false + }, + "balance": { + "loi": 0, + "chaos": 0, + "aspect": 0, + "marge": 0, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/creatures-elementaires/elementaire-feu-majeur.json b/packs/src/creatures-elementaires/elementaire-feu-majeur.json new file mode 100644 index 0000000..2b66eb7 --- /dev/null +++ b/packs/src/creatures-elementaires/elementaire-feu-majeur.json @@ -0,0 +1,143 @@ +{ + "_id": "ElemFeuMaj0000009", + "_key": "!actors!ElemFeuMaj0000009", + "name": "Élémentaire de Feu Majeur", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "ElemFeuMajMvt0001", + "_key": "!actors.items!ElemFeuMaj0000009.ElemFeuMajMvt0001", + "name": "Mouvements", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 10, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "ElemFeuMajCoe0001", + "_key": "!actors.items!ElemFeuMaj0000009.ElemFeuMajCoe0001", + "name": "Coercition", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 15, + "attribut1": "pre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + } + ], + "effects": [], + "folder": null, + "sort": 900000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Élémentaire", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

Élémentaire de Feu Majeur

Seuil d'invocation : 25 | Capacité Offensive : 20 | Protection : 0 | Pouvoirs disponibles à l'invocation : 4

Voir le compendium Pouvoirs Élémentaires (Feu) pour la liste des pouvoirs.

Règles générales des Élémentaires

Les Élémentaires possèdent très peu de compétences : ils sont la manifestation brute des forces de la nature. Leurs tests de Combat s'effectuent avec Puissance × 2.

La réserve de points d'Âme avec laquelle l'Élémentaire débute est toujours égale au nombre de points d'Âme que le sorcier a consacrés à l'invocation. L'invocateur choisit lors de l'invocation 2 Pouvoirs pour un Élémentaire mineur, 3 Pouvoirs pour un médian et 4 Pouvoirs pour un majeur.

Une fois invoqué, le sorcier peut lui demander de combattre, de le suivre ou d'activer ses Pouvoirs élémentaires en prononçant la formule consacrée (action complexe en Haut-Parler). Aucun test n'est requis : l'Élémentaire dépense 1 point d'Âme par activation. Quand sa réserve tombe à zéro, il est épuisé et disparaît.

Résistance physique : tous les dégâts physiques infligés à l'Élémentaire sont divisés par 2. En revanche, les dégâts magiques (armes runiques, sorts, Démons, créatures extra-planaires) le blessent normalement.

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

Voir compendium Pouvoirs Élémentaires (Feu). L'Âme est égale aux points d'Âme consacrés à l'invocation.

", + "gmnotes": "

Seuil : 25 | CO : 20 | Mouvements : 10 | Coercition : 15

", + "creatureType": "elementaire", + "elementType": "feu" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 7 + }, + "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": 10 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 7 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 39, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 7, + "bonusdegats": 0, + "defensebonus": 2, + "monte": false + }, + "balance": { + "loi": 0, + "chaos": 0, + "aspect": 0, + "marge": 0, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/creatures-elementaires/elementaire-feu-median.json b/packs/src/creatures-elementaires/elementaire-feu-median.json new file mode 100644 index 0000000..e292871 --- /dev/null +++ b/packs/src/creatures-elementaires/elementaire-feu-median.json @@ -0,0 +1,143 @@ +{ + "_id": "ElemFeuMed0000008", + "_key": "!actors!ElemFeuMed0000008", + "name": "Élémentaire de Feu Médian", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "ElemFeuMedMvt0001", + "_key": "!actors.items!ElemFeuMed0000008.ElemFeuMedMvt0001", + "name": "Mouvements", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 5, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "ElemFeuMedCoe0001", + "_key": "!actors.items!ElemFeuMed0000008.ElemFeuMedCoe0001", + "name": "Coercition", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 10, + "attribut1": "pre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + } + ], + "effects": [], + "folder": null, + "sort": 800000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Élémentaire", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

Élémentaire de Feu Médian

Seuil d'invocation : 20 | Capacité Offensive : 14 | Protection : 0 | Pouvoirs disponibles à l'invocation : 3

Voir le compendium Pouvoirs Élémentaires (Feu) pour la liste des pouvoirs.

Règles générales des Élémentaires

Les Élémentaires possèdent très peu de compétences : ils sont la manifestation brute des forces de la nature. Leurs tests de Combat s'effectuent avec Puissance × 2.

La réserve de points d'Âme avec laquelle l'Élémentaire débute est toujours égale au nombre de points d'Âme que le sorcier a consacrés à l'invocation. L'invocateur choisit lors de l'invocation 2 Pouvoirs pour un Élémentaire mineur, 3 Pouvoirs pour un médian et 4 Pouvoirs pour un majeur.

Une fois invoqué, le sorcier peut lui demander de combattre, de le suivre ou d'activer ses Pouvoirs élémentaires en prononçant la formule consacrée (action complexe en Haut-Parler). Aucun test n'est requis : l'Élémentaire dépense 1 point d'Âme par activation. Quand sa réserve tombe à zéro, il est épuisé et disparaît.

Résistance physique : tous les dégâts physiques infligés à l'Élémentaire sont divisés par 2. En revanche, les dégâts magiques (armes runiques, sorts, Démons, créatures extra-planaires) le blessent normalement.

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

Voir compendium Pouvoirs Élémentaires (Feu). L'Âme est égale aux points d'Âme consacrés à l'invocation.

", + "gmnotes": "

Seuil : 20 | CO : 14 | Mouvements : 5 | Coercition : 10

", + "creatureType": "elementaire", + "elementType": "feu" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 5 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 7 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 3 + }, + "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": 29, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 3, + "bonusdegats": 0, + "defensebonus": 4, + "monte": false + }, + "balance": { + "loi": 0, + "chaos": 0, + "aspect": 0, + "marge": 0, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/creatures-elementaires/elementaire-feu-mineur.json b/packs/src/creatures-elementaires/elementaire-feu-mineur.json new file mode 100644 index 0000000..637aac8 --- /dev/null +++ b/packs/src/creatures-elementaires/elementaire-feu-mineur.json @@ -0,0 +1,143 @@ +{ + "_id": "ElemFeuMin0000007", + "_key": "!actors!ElemFeuMin0000007", + "name": "Élémentaire de Feu Mineur", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "ElemFeuMinMvt0001", + "_key": "!actors.items!ElemFeuMin0000007.ElemFeuMinMvt0001", + "name": "Mouvements", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 0, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "ElemFeuMinCoe0001", + "_key": "!actors.items!ElemFeuMin0000007.ElemFeuMinCoe0001", + "name": "Coercition", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 7, + "attribut1": "pre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + } + ], + "effects": [], + "folder": null, + "sort": 700000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Élémentaire", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

Élémentaire de Feu Mineur

Seuil d'invocation : 15 | Capacité Offensive : 10 | Protection : 0 | Pouvoirs disponibles à l'invocation : 2

Voir le compendium Pouvoirs Élémentaires (Feu) pour la liste des pouvoirs.

Règles générales des Élémentaires

Les Élémentaires possèdent très peu de compétences : ils sont la manifestation brute des forces de la nature. Leurs tests de Combat s'effectuent avec Puissance × 2.

La réserve de points d'Âme avec laquelle l'Élémentaire débute est toujours égale au nombre de points d'Âme que le sorcier a consacrés à l'invocation. L'invocateur choisit lors de l'invocation 2 Pouvoirs pour un Élémentaire mineur, 3 Pouvoirs pour un médian et 4 Pouvoirs pour un majeur.

Une fois invoqué, le sorcier peut lui demander de combattre, de le suivre ou d'activer ses Pouvoirs élémentaires en prononçant la formule consacrée (action complexe en Haut-Parler). Aucun test n'est requis : l'Élémentaire dépense 1 point d'Âme par activation. Quand sa réserve tombe à zéro, il est épuisé et disparaît.

Résistance physique : tous les dégâts physiques infligés à l'Élémentaire sont divisés par 2. En revanche, les dégâts magiques (armes runiques, sorts, Démons, créatures extra-planaires) le blessent normalement.

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

Voir compendium Pouvoirs Élémentaires (Feu). L'Âme est égale aux points d'Âme consacrés à l'invocation.

", + "gmnotes": "

Seuil : 15 | CO : 10 | Mouvements : 0 | Coercition : 7

", + "creatureType": "elementaire", + "elementType": "feu" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 2 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 5 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 1 + }, + "pre": { + "label": "Présence", + "labelnorm": "presence", + "abbrev": "pre", + "value": 5 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 2 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 19, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 1, + "bonusdegats": 0, + "defensebonus": 3, + "monte": false + }, + "balance": { + "loi": 0, + "chaos": 0, + "aspect": 0, + "marge": 0, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/creatures-elementaires/elementaire-terre-majeur.json b/packs/src/creatures-elementaires/elementaire-terre-majeur.json new file mode 100644 index 0000000..da1e518 --- /dev/null +++ b/packs/src/creatures-elementaires/elementaire-terre-majeur.json @@ -0,0 +1,143 @@ +{ + "_id": "ElemTerMaj0000006", + "_key": "!actors!ElemTerMaj0000006", + "name": "Élémentaire de Terre Majeur", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "ElemTerMajMvt0001", + "_key": "!actors.items!ElemTerMaj0000006.ElemTerMajMvt0001", + "name": "Mouvements", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 4, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "ElemTerMajSur0001", + "_key": "!actors.items!ElemTerMaj0000006.ElemTerMajSur0001", + "name": "Survie", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 15, + "attribut1": "tre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + } + ], + "effects": [], + "folder": null, + "sort": 600000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Élémentaire", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

Élémentaire de Terre Majeur

Seuil d'invocation : 25 | Capacité Offensive : 20 | Protection : 10 | Pouvoirs disponibles à l'invocation : 4

Voir le compendium Pouvoirs Élémentaires (Terre) pour la liste des pouvoirs.

Règles générales des Élémentaires

Les Élémentaires possèdent très peu de compétences : ils sont la manifestation brute des forces de la nature. Leurs tests de Combat s'effectuent avec Puissance × 2.

La réserve de points d'Âme avec laquelle l'Élémentaire débute est toujours égale au nombre de points d'Âme que le sorcier a consacrés à l'invocation. L'invocateur choisit lors de l'invocation 2 Pouvoirs pour un Élémentaire mineur, 3 Pouvoirs pour un médian et 4 Pouvoirs pour un majeur.

Une fois invoqué, le sorcier peut lui demander de combattre, de le suivre ou d'activer ses Pouvoirs élémentaires en prononçant la formule consacrée (action complexe en Haut-Parler). Aucun test n'est requis : l'Élémentaire dépense 1 point d'Âme par activation. Quand sa réserve tombe à zéro, il est épuisé et disparaît.

Résistance physique : tous les dégâts physiques infligés à l'Élémentaire sont divisés par 2. En revanche, les dégâts magiques (armes runiques, sorts, Démons, créatures extra-planaires) le blessent normalement.

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

Voir compendium Pouvoirs Élémentaires (Terre). L'Âme est égale aux points d'Âme consacrés à l'invocation.

", + "gmnotes": "

Seuil : 25 | CO : 20 | Prot : 10 | Mouvements : 4 | Survie : 15

", + "creatureType": "elementaire", + "elementType": "terre" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 7 + }, + "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": 8 + }, + "tre": { + "label": "Trempe", + "labelnorm": "trempe", + "abbrev": "tre", + "value": 10 + } + }, + "bonneaventure": { + "base": 0, + "actuelle": 0 + }, + "experience": { + "value": 0 + }, + "eclat": { + "value": 0 + }, + "sante": { + "base": 45, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": -1, + "bonusdegats": 0, + "defensebonus": 5, + "monte": false + }, + "balance": { + "loi": 0, + "chaos": 0, + "aspect": 0, + "marge": 0, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/creatures-elementaires/elementaire-terre-median.json b/packs/src/creatures-elementaires/elementaire-terre-median.json new file mode 100644 index 0000000..a8231dd --- /dev/null +++ b/packs/src/creatures-elementaires/elementaire-terre-median.json @@ -0,0 +1,143 @@ +{ + "_id": "ElemTerMed0000005", + "_key": "!actors!ElemTerMed0000005", + "name": "Élémentaire de Terre Médian", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "ElemTerMedMvt0001", + "_key": "!actors.items!ElemTerMed0000005.ElemTerMedMvt0001", + "name": "Mouvements", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 3, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "ElemTerMedSur0001", + "_key": "!actors.items!ElemTerMed0000005.ElemTerMedSur0001", + "name": "Survie", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 10, + "attribut1": "tre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + } + ], + "effects": [], + "folder": null, + "sort": 500000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Élémentaire", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

Élémentaire de Terre Médian

Seuil d'invocation : 20 | Capacité Offensive : 14 | Protection : 8 | Pouvoirs disponibles à l'invocation : 3

Voir le compendium Pouvoirs Élémentaires (Terre) pour la liste des pouvoirs.

Règles générales des Élémentaires

Les Élémentaires possèdent très peu de compétences : ils sont la manifestation brute des forces de la nature. Leurs tests de Combat s'effectuent avec Puissance × 2.

La réserve de points d'Âme avec laquelle l'Élémentaire débute est toujours égale au nombre de points d'Âme que le sorcier a consacrés à l'invocation. L'invocateur choisit lors de l'invocation 2 Pouvoirs pour un Élémentaire mineur, 3 Pouvoirs pour un médian et 4 Pouvoirs pour un majeur.

Une fois invoqué, le sorcier peut lui demander de combattre, de le suivre ou d'activer ses Pouvoirs élémentaires en prononçant la formule consacrée (action complexe en Haut-Parler). Aucun test n'est requis : l'Élémentaire dépense 1 point d'Âme par activation. Quand sa réserve tombe à zéro, il est épuisé et disparaît.

Résistance physique : tous les dégâts physiques infligés à l'Élémentaire sont divisés par 2. En revanche, les dégâts magiques (armes runiques, sorts, Démons, créatures extra-planaires) le blessent normalement.

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

Voir compendium Pouvoirs Élémentaires (Terre). L'Âme est égale aux points d'Âme consacrés à l'invocation.

", + "gmnotes": "

Seuil : 20 | CO : 14 | Prot : 8 | Mouvements : 3 | Survie : 10

", + "creatureType": "elementaire", + "elementType": "terre" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 3 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 7 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 3 + }, + "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": 33, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 1, + "bonusdegats": 0, + "defensebonus": 2, + "monte": false + }, + "balance": { + "loi": 0, + "chaos": 0, + "aspect": 0, + "marge": 0, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/creatures-elementaires/elementaire-terre-mineur.json b/packs/src/creatures-elementaires/elementaire-terre-mineur.json new file mode 100644 index 0000000..0a39233 --- /dev/null +++ b/packs/src/creatures-elementaires/elementaire-terre-mineur.json @@ -0,0 +1,143 @@ +{ + "_id": "ElemTerMin0000004", + "_key": "!actors!ElemTerMin0000004", + "name": "Élémentaire de Terre Mineur", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "ElemTerMinMvt0001", + "_key": "!actors.items!ElemTerMin0000004.ElemTerMinMvt0001", + "name": "Mouvements", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 2, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "ElemTerMinSur0001", + "_key": "!actors.items!ElemTerMin0000004.ElemTerMinSur0001", + "name": "Survie", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 7, + "attribut1": "tre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + } + ], + "effects": [], + "folder": null, + "sort": 400000, + "flags": {}, + "ownership": { + "default": 0 + }, + "system": { + "biodata": { + "name": "", + "age": 0, + "alignement": "Élémentaire", + "poids": "", + "taille": "", + "cheveux": "", + "sexe": "", + "yeux": "", + "description": "

Élémentaire de Terre Mineur

Seuil d'invocation : 15 | Capacité Offensive : 10 | Protection : 5 | Pouvoirs disponibles à l'invocation : 2

Voir le compendium Pouvoirs Élémentaires (Terre) pour la liste des pouvoirs.

Règles générales des Élémentaires

Les Élémentaires possèdent très peu de compétences : ils sont la manifestation brute des forces de la nature. Leurs tests de Combat s'effectuent avec Puissance × 2.

La réserve de points d'Âme avec laquelle l'Élémentaire débute est toujours égale au nombre de points d'Âme que le sorcier a consacrés à l'invocation. L'invocateur choisit lors de l'invocation 2 Pouvoirs pour un Élémentaire mineur, 3 Pouvoirs pour un médian et 4 Pouvoirs pour un majeur.

Une fois invoqué, le sorcier peut lui demander de combattre, de le suivre ou d'activer ses Pouvoirs élémentaires en prononçant la formule consacrée (action complexe en Haut-Parler). Aucun test n'est requis : l'Élémentaire dépense 1 point d'Âme par activation. Quand sa réserve tombe à zéro, il est épuisé et disparaît.

Résistance physique : tous les dégâts physiques infligés à l'Élémentaire sont divisés par 2. En revanche, les dégâts magiques (armes runiques, sorts, Démons, créatures extra-planaires) le blessent normalement.

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

Voir compendium Pouvoirs Élémentaires (Terre). L'Âme est égale aux points d'Âme consacrés à l'invocation.

", + "gmnotes": "

Seuil : 15 | CO : 10 | Prot : 5 | Mouvements : 2 | Survie : 7

", + "creatureType": "elementaire", + "elementType": "terre" + }, + "subactors": [], + "attributs": { + "adr": { + "label": "Adresse", + "labelnorm": "adresse", + "abbrev": "adr", + "value": 2 + }, + "pui": { + "label": "Puissance", + "labelnorm": "puissance", + "abbrev": "pui", + "value": 5 + }, + "cla": { + "label": "Clairvoyance", + "labelnorm": "clairvoyance", + "abbrev": "cla", + "value": 1 + }, + "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": 25, + "bonus": 0, + "nonletaux": 0, + "letaux": 0, + "malusmanuel": 0, + "sequelles": "" + }, + "ame": { + "fullmax": 0, + "currentmax": 0, + "value": 0, + "traumatismes": "" + }, + "combat": { + "initbonus": 0, + "vitessebonus": 1, + "bonusdegats": 0, + "defensebonus": 0, + "monte": false + }, + "balance": { + "loi": 0, + "chaos": 0, + "aspect": 0, + "marge": 0, + "pointschaos": 0, + "pointsloi": 0 + }, + "ressources": { + "value": 0 + } + } +} \ No newline at end of file diff --git a/packs/src/journal-aide/guide-joueur.json b/packs/src/journal-aide/guide-joueur.json new file mode 100644 index 0000000..f6fb1c2 --- /dev/null +++ b/packs/src/journal-aide/guide-joueur.json @@ -0,0 +1,138 @@ +{ + "_id": "JurnlHelpGuide01", + "_key": "!journal!JurnlHelpGuide01", + "name": "Guide du Joueur", + "pages": [ + { + "_id": "JHelpPage0000001", + "_key": "!journal.pages!JurnlHelpGuide01.JHelpPage0000001", + "name": "Introduction", + "type": "text", + "title": { "show": true, "level": 1 }, + "text": { + "content": "

Bienvenue dans Mournblade

Ce guide vous présente les fonctionnalités du système FoundryVTT pour Mournblade, le jeu de rôle de sword & sorcery. Il couvre la navigation dans les fiches, les jets de dés, le combat et la magie runique.

Navigation générale

Aide rapide

Tapez /aide dans le tchat pour afficher la liste des commandes disponibles du système.

", + "format": 1 + }, + "image": { "caption": "" }, + "video": { "controls": true, "volume": 0.5 }, + "src": null, + "sort": 100000, + "flags": {} + }, + { + "_id": "JHelpPage0000002", + "_key": "!journal.pages!JurnlHelpGuide01.JHelpPage0000002", + "name": "La Fiche de Personnage", + "type": "text", + "title": { "show": true, "level": 1 }, + "text": { + "content": "

La Fiche de Personnage

\"Fiche
Onglet Attributs de la fiche

Onglets de la fiche

La fiche de personnage (Personnage) est divisée en cinq onglets :

Caractéristiques

Le personnage possède cinq caractéristiques de base :

Cliquez sur le nom d'une caractéristique pour effectuer un jet d'attribut.

Santé et Âme

La Santé (Sante) représente la résistance physique. Les points de santé se divisent en dommages létaux et non létaux. L'Âme (Ame) alimente la magie runique — chaque activation de rune consomme des points d'Âme.

Balance Loi/Chaos

Chaque personnage possède un indice de Loi et de Chaos qui détermine son alignement. L'aspect et la marge sont calculés automatiquement. Les sorciers accumulent des points de Chaos à l'usage des runes.

", + "format": 1 + }, + "image": { "caption": "" }, + "video": { "controls": true, "volume": 0.5 }, + "src": null, + "sort": 200000, + "flags": {} + }, + { + "_id": "JHelpPage0000003", + "_key": "!journal.pages!JurnlHelpGuide01.JHelpPage0000003", + "name": "Les Compétences", + "type": "text", + "title": { "show": true, "level": 1 }, + "text": { + "content": "

Les Compétences

\"Onglet
Onglet Compétences

Les compétences sont listées dans l'onglet COMPÉTENCES. Chaque compétence est associée à une ou plusieurs caractéristiques.

Effectuer un jet de compétence

  1. Cliquez sur le nom de la compétence dans la liste — le dialogue de jet s'ouvre.
  2. Choisissez le dé : 1d10 (difficulté normale) ou 1d20 (action difficile / dés du chaos).
  3. Ajustez le modificateur si nécessaire.
  4. Cliquez « Lancer » — le résultat apparaît dans le tchat.

Formule de base

La valeur de compétence = Niveau de compétence + Attribut associé. Le jet est réussi si le résultat du dé + la valeur de compétence est ≥ à la difficulté fixée par le MJ.

Prédilections

Certaines compétences peuvent avoir des prédilections — des spécialisations qui accordent un bonus. Ouvrez la fiche de la compétence (clic sur l'icône d'édition) pour les gérer.

", + "format": 1 + }, + "image": { "caption": "" }, + "video": { "controls": true, "volume": 0.5 }, + "src": null, + "sort": 300000, + "flags": {} + }, + { + "_id": "JHelpPage0000004", + "_key": "!journal.pages!JurnlHelpGuide01.JHelpPage0000004", + "name": "Les Jets de Dés", + "type": "text", + "title": { "show": true, "level": 1 }, + "text": { + "content": "

Les Jets de Dés

\"Dialogue
Dialogue de jet de compétence

Dialogue de jet

Cliquer sur une caractéristique, une compétence ou un bouton d'attaque ouvre le dialogue de jet qui affiche :

1d10 vs 1d20

Résultat dans le tchat

\"Résultat
Résultat d'un jet dans le tchat

Le résultat affiche : le détail du jet, la formule, le résultat numérique, et si c'est une Réussite ou un Échec (avec l'éventuel score de Chaos pour les jets runiques).

", + "format": 1 + }, + "image": { "caption": "" }, + "video": { "controls": true, "volume": 0.5 }, + "src": null, + "sort": 400000, + "flags": {} + }, + { + "_id": "JHelpPage0000005", + "_key": "!journal.pages!JurnlHelpGuide01.JHelpPage0000005", + "name": "Le Combat", + "type": "text", + "title": { "show": true, "level": 1 }, + "text": { + "content": "

Le Combat

\"Onglet
Onglet Equipement avec armes et protections

Initiative

L'initiative est calculée automatiquement lors du lancement d'un combat : 1d10 + Bonus d'Initiative. Le bonus d'initiative est affiché sur l'onglet Attributs sous la section Combat.

Attaque

Dans l'onglet EQUIPEMENT, cliquez sur le bouton d'attaque d'une arme pour lancer un jet d'attaque. La formule est : Mêlée (ou Armes à distance) + Attribut + Bonus d'arme.

Défense

La défense du personnage = Bonus de Défense + Niveau de compétence Mêlée + Bonus de bouclier. Le MJ peut demander un jet de défense opposé à l'attaque.

Dégâts

Si l'attaque réussit, les dégâts de l'arme sont lancés. La formule de dégâts est affichée sur la fiche de l'arme. Le Bonus de Dégâts du personnage (basé sur la Puissance) s'ajoute automatiquement.

Actions spéciales

L'onglet Equipement propose des boutons pour les actions spéciales de combat :

", + "format": 1 + }, + "image": { "caption": "" }, + "video": { "controls": true, "volume": 0.5 }, + "src": null, + "sort": 500000, + "flags": {} + }, + { + "_id": "JHelpPage0000006", + "_key": "!journal.pages!JurnlHelpGuide01.JHelpPage0000006", + "name": "La Magie des Runes", + "type": "text", + "title": { "show": true, "level": 1 }, + "text": { + "content": "

La Magie des Runes

\"Section
Section Runes dans l'onglet Dons/Pactes

Les runes sont les outils magiques du sorcier. Elles apparaissent dans l'onglet DONS/PACTES sous la section « Runes ».

Activer une rune

  1. Cliquez sur le nom de la rune dans la liste — le dialogue d'activation s'ouvre.
  2. Choisissez le nombre de points d'Âme à investir (minimum 1).
  3. Choisissez le mode d'activation :
  4. Optionnellement ajoutez un modificateur de jet.
  5. Choisissez le dé (1d10 normal ou 1d20 pour les dés du chaos).
\"Dialogue
Dialogue d'activation d'une rune

Formule de jet

Test de Clairvoyance + Savoir : Runes (pour prononcer) ou Clairvoyance + Savoir : Runes (pour inscrire), avec bonus Haut-Parler si applicable. La difficulté est fixée par la rune.

Runes actives

En cas de succès, la rune apparaît dans la section « Runes Actives » avec sa durée et le nombre de points d'Âme investis. Les points d'Âme sont déduits automatiquement.

Dés du Chaos et échecs dramatiques

Lancer 1d20 (dés du chaos) pour une rune comporte des risques. Un résultat pair signifie un échec (perte d'Âme sans effet). Un résultat impair peut provoquer un désastre extraordinaire — la rune se déclenche à distance sur des cibles inconnues, et le sorcier ne peut plus utiliser l'Œil pendant un nombre de semaines égal à sa Clairvoyance. Un résultat de 1 ou 11 est particulièrement catastrophique.

", + "format": 1 + }, + "image": { "caption": "" }, + "video": { "controls": true, "volume": 0.5 }, + "src": null, + "sort": 600000, + "flags": {} + }, + { + "_id": "JHelpPage0000007", + "_key": "!journal.pages!JurnlHelpGuide01.JHelpPage0000007", + "name": "Les Sortilèges", + "type": "text", + "title": { "show": true, "level": 1 }, + "text": { + "content": "

Les Sortilèges

\"Dialogue
Dialogue de lancement d'un sortilège

Un Sortilège est une combinaison de plusieurs runes activées simultanément pour un effet unique et puissant.

Lancer un sortilège

  1. Dans l'onglet DONS/PACTES, cliquez sur le bouton « Lancer un Sortilège ».
  2. Le dialogue s'ouvre avec la liste de vos runes disponibles.
  3. Pour chaque rune à inclure, cochez-la et attribuez-lui des points d'Âme (minimum 1 par rune).
  4. Choisissez le mode : Prononcer ou Inscrire.
  5. Ajoutez un modificateur global si nécessaire.
  6. Choisissez le dé (1d10 ou 1d20).

Règles du sortilège

Résultat dans le tchat

Le résultat du sortilège est affiché dans le tchat avec le détail de chaque rune et son Haut-Parler. En cas de succès, un lien « Voir les effets » permet d'afficher la description détaillée de chaque rune.

", + "format": 1 + }, + "image": { "caption": "" }, + "video": { "controls": true, "volume": 0.5 }, + "src": null, + "sort": 700000, + "flags": {} + }, + { + "_id": "JHelpPage0000008", + "_key": "!journal.pages!JurnlHelpGuide01.JHelpPage0000008", + "name": "Équipements et Items", + "type": "text", + "title": { "show": true, "level": 1 }, + "text": { + "content": "

Équipements et Items

L'onglet EQUIPEMENT centralise l'inventaire du personnage. Les items peuvent être glissés depuis les compendiums ou créés directement depuis la fiche.

Types d'items disponibles

Glisser-déposer depuis les compendiums

  1. Ouvrez l'onglet Compendiums dans la barre latérale.
  2. Ouvrez un compendium (ex. « Armes & Boucliers »).
  3. Glissez un item vers la fiche du personnage ouverte.

Autres types d'items

Poster un item dans le tchat

Depuis la fiche d'un item, cliquez sur le bouton « Poster dans le tchat » (icône de message) pour partager les caractéristiques de l'item avec tous les joueurs.

", + "format": 1 + }, + "image": { "caption": "" }, + "video": { "controls": true, "volume": 0.5 }, + "src": null, + "sort": 800000, + "flags": {} + } + ], + "folder": null, + "sort": 0, + "flags": {} +} diff --git a/packs/src/pouvoirs-elementaires/que-coulent-les-larmes-de-straasha-eau.json b/packs/src/pouvoirs-elementaires/que-coulent-les-larmes-de-straasha-eau.json new file mode 100644 index 0000000..10d40ae --- /dev/null +++ b/packs/src/pouvoirs-elementaires/que-coulent-les-larmes-de-straasha-eau.json @@ -0,0 +1,12 @@ +{ + "_id": "CapEauPluie0000006", + "_key": "!items!CapEauPluie0000006", + "name": "Que coulent les larmes de Straasha (Eau)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], "folder": null, "sort": 600000, "flags": {}, "ownership": { "default": 0 }, + "system": { + "typeCapacite": "elementaire", + "description": "

Par sa danse, l'Élémentaire provoque la pluie. Contrairement aux autres manifestations incluant de la pluie (comme la tempête), celle-ci offre une pluie tiède et agréable qui ne procure aucun malus. Elle est d'une pureté absolue et peut être bue sans hésitation.

" + } +} diff --git a/packs/src/pouvoirs-elementaires/que-la-chaleur-du-feu-veille-feu.json b/packs/src/pouvoirs-elementaires/que-la-chaleur-du-feu-veille-feu.json new file mode 100644 index 0000000..8ad84e1 --- /dev/null +++ b/packs/src/pouvoirs-elementaires/que-la-chaleur-du-feu-veille-feu.json @@ -0,0 +1,12 @@ +{ + "_id": "CapFeuChaleur00003", + "_key": "!items!CapFeuChaleur00003", + "name": "Que la chaleur du Feu veille sur moi (Feu)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], "folder": null, "sort": 300000, "flags": {}, "ownership": { "default": 0 }, + "system": { + "typeCapacite": "elementaire", + "description": "

L'Élémentaire s'ébroue et réchauffe l'environnement qui l'entoure dans un rayon de 1 mètre par point de Présence. L'air s'attiédit et le climat devient doux. Ce pouvoir dure aussi longtemps que l'Élémentaire le maintient.

" + } +} diff --git a/packs/src/pouvoirs-elementaires/que-la-peur-du-feu-terrasse-feu.json b/packs/src/pouvoirs-elementaires/que-la-peur-du-feu-terrasse-feu.json new file mode 100644 index 0000000..446e15c --- /dev/null +++ b/packs/src/pouvoirs-elementaires/que-la-peur-du-feu-terrasse-feu.json @@ -0,0 +1,12 @@ +{ + "_id": "CapFeuPeur0000007", + "_key": "!items!CapFeuPeur0000007", + "name": "Que la peur du Feu terrasse mon ennemi (Feu)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], "folder": null, "sort": 700000, "flags": {}, "ownership": { "default": 0 }, + "system": { + "typeCapacite": "elementaire", + "description": "

L'Élémentaire fixe une cible de ses grands yeux flamboyants et rugit de manière assourdissante. Il doit réussir un test de Présence x 2 en opposition à la Trempe x 2 de sa cible. S'il remporte l'opposition, la cible s'enfuit, prise d'une peur panique du feu pour une durée d'une heure.

" + } +} diff --git a/packs/src/pouvoirs-elementaires/que-la-terre-emprisonne-terre.json b/packs/src/pouvoirs-elementaires/que-la-terre-emprisonne-terre.json new file mode 100644 index 0000000..325e0e9 --- /dev/null +++ b/packs/src/pouvoirs-elementaires/que-la-terre-emprisonne-terre.json @@ -0,0 +1,16 @@ +{ + "_id": "CapTerPrison000007", + "_key": "!items!CapTerPrison000007", + "name": "Que la Terre emprisonne mon ennemi (Terre)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 700000, + "flags": {}, + "ownership": { "default": 0 }, + "system": { + "typeCapacite": "elementaire", + "description": "

L'Élémentaire touche le sol et une gangue de terre et de cailloux se forme autour de la cible pour l'emprisonner jusqu'à mi-torse. Pour briser cette prison, il faut lui infliger un nombre de points de dégâts égal à la Trempe x 2 de l'Élémentaire.

" + } +} diff --git a/packs/src/pouvoirs-elementaires/que-la-terre-feconde-lieu-terre.json b/packs/src/pouvoirs-elementaires/que-la-terre-feconde-lieu-terre.json new file mode 100644 index 0000000..cbac4f3 --- /dev/null +++ b/packs/src/pouvoirs-elementaires/que-la-terre-feconde-lieu-terre.json @@ -0,0 +1,16 @@ +{ + "_id": "CapTerFeconde00004", + "_key": "!items!CapTerFeconde00004", + "name": "Que la puissance de la Terre féconde ce lieu (Terre)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 400000, + "flags": {}, + "ownership": { "default": 0 }, + "system": { + "typeCapacite": "elementaire", + "description": "

L'Élémentaire entame une danse dans un champ ou tout autre espace naturel et le rend incroyablement fécond : les récoltes y sont doublées pendant Puissance années sur un rayon de Trempe x 100 mètres.

" + } +} diff --git a/packs/src/pouvoirs-elementaires/que-la-terre-me-protege-terre.json b/packs/src/pouvoirs-elementaires/que-la-terre-me-protege-terre.json new file mode 100644 index 0000000..3f56a58 --- /dev/null +++ b/packs/src/pouvoirs-elementaires/que-la-terre-me-protege-terre.json @@ -0,0 +1,16 @@ +{ + "_id": "CapTerProtege00002", + "_key": "!items!CapTerProtege00002", + "name": "Que la puissance de la Terre me protège (Terre)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 200000, + "flags": {}, + "ownership": { "default": 0 }, + "system": { + "typeCapacite": "elementaire", + "description": "

L'Élémentaire fait surgir de terre un bouclier de la taille de l'invocateur qui confère une protection égale à la Trempe x 2 de l'Élémentaire. Lorsque ce bouclier a subi autant de dégâts que son score en Protection, il vole en éclats.

" + } +} diff --git a/packs/src/pouvoirs-elementaires/que-la-terre-purifie-aliments-terre.json b/packs/src/pouvoirs-elementaires/que-la-terre-purifie-aliments-terre.json new file mode 100644 index 0000000..4c97c73 --- /dev/null +++ b/packs/src/pouvoirs-elementaires/que-la-terre-purifie-aliments-terre.json @@ -0,0 +1,16 @@ +{ + "_id": "CapTerPurifie00003", + "_key": "!items!CapTerPurifie00003", + "name": "Que la Terre purifie mes aliments (Terre)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 300000, + "flags": {}, + "ownership": { "default": 0 }, + "system": { + "typeCapacite": "elementaire", + "description": "

L'Élémentaire purifie les aliments désignés de toutes les impuretés susceptibles de les corrompre, de la vermine aux maladies en passant par les poisons. Il ne peut pas purifier une quantité de nourriture dont la masse en kilos est supérieure à sa Trempe.

" + } +} diff --git a/packs/src/pouvoirs-elementaires/que-la-terre-tremble-terre.json b/packs/src/pouvoirs-elementaires/que-la-terre-tremble-terre.json new file mode 100644 index 0000000..10da51f --- /dev/null +++ b/packs/src/pouvoirs-elementaires/que-la-terre-tremble-terre.json @@ -0,0 +1,16 @@ +{ + "_id": "CapTerTremble00005", + "_key": "!items!CapTerTremble00005", + "name": "Que la Terre tremble pour abattre mes ennemis (Terre)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 500000, + "flags": {}, + "ownership": { "default": 0 }, + "system": { + "typeCapacite": "elementaire", + "description": "

L'Élémentaire provoque un tremblement de terre dans un rayon de Trempe x 10 mètres.

" + } +} diff --git a/packs/src/pouvoirs-elementaires/que-lair-soit-purifie-air.json b/packs/src/pouvoirs-elementaires/que-lair-soit-purifie-air.json new file mode 100644 index 0000000..53f5490 --- /dev/null +++ b/packs/src/pouvoirs-elementaires/que-lair-soit-purifie-air.json @@ -0,0 +1,16 @@ +{ + "_id": "CapAirPurifie0006", + "_key": "!items!CapAirPurifie0006", + "name": "Que l'Air que je respire soit purifié (Air)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 600000, + "flags": {}, + "ownership": { "default": 0 }, + "system": { + "typeCapacite": "elementaire", + "description": "

L'Élémentaire purifie l'air autour de lui à raison d'1 mètre cube par point de Trempe. Plus sa Trempe est élevée, plus grande est la quantité d'air purifiée et plus lourds sont les miasmes qu'il est capable de dissiper… Ce pouvoir dure aussi longtemps que l'Élémentaire le maintient.

" + } +} diff --git a/packs/src/pouvoirs-elementaires/que-le-feu-cache-seveille-feu.json b/packs/src/pouvoirs-elementaires/que-le-feu-cache-seveille-feu.json new file mode 100644 index 0000000..172b388 --- /dev/null +++ b/packs/src/pouvoirs-elementaires/que-le-feu-cache-seveille-feu.json @@ -0,0 +1,12 @@ +{ + "_id": "CapFeuVolcan000006", + "_key": "!items!CapFeuVolcan000006", + "name": "Que le Feu caché s'éveille (Feu) [Majeur]", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], "folder": null, "sort": 600000, "flags": {}, "ownership": { "default": 0 }, + "system": { + "typeCapacite": "elementaire", + "description": "

Réservé aux Élémentaires majeurs. L'Élémentaire doit se trouver non loin d'un volcan actif ou endormi. Il se transforme en tourbillon de flamme et se jette dans le volcan qu'il éveille instantanément. L'éruption se déroule normalement ; son ampleur est conditionnée par la Puissance de l'Élémentaire, à la discrétion du MJ. Pour convaincre l'Élémentaire, l'invocateur doit réussir un test de Présence + Persuasion / Seuil de difficulté de l'invocation. Cet effort consume l'Élémentaire qui disparaît.

" + } +} diff --git a/packs/src/pouvoirs-elementaires/que-le-feu-consume-tout-feu.json b/packs/src/pouvoirs-elementaires/que-le-feu-consume-tout-feu.json new file mode 100644 index 0000000..e143d5a --- /dev/null +++ b/packs/src/pouvoirs-elementaires/que-le-feu-consume-tout-feu.json @@ -0,0 +1,12 @@ +{ + "_id": "CapFeuConsume00005", + "_key": "!items!CapFeuConsume00005", + "name": "Que le Feu consume tout (Feu)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], "folder": null, "sort": 500000, "flags": {}, "ownership": { "default": 0 }, + "system": { + "typeCapacite": "elementaire", + "description": "

L'Élémentaire peut provoquer un feu capable de consumer toute matière inflammable. L'intensité du feu commence à 1 et augmente d'un point à chaque tour jusqu'à atteindre la Puissance de l'Élémentaire ou jusqu'à ce que la cible soit entièrement consumée. Un être conscient et dans la pleine possession de ses moyens est théoriquement capable d'éteindre un tel feu rapidement.

" + } +} diff --git a/packs/src/pouvoirs-elementaires/que-le-feu-mobeisse-feu.json b/packs/src/pouvoirs-elementaires/que-le-feu-mobeisse-feu.json new file mode 100644 index 0000000..1cf2088 --- /dev/null +++ b/packs/src/pouvoirs-elementaires/que-le-feu-mobeisse-feu.json @@ -0,0 +1,12 @@ +{ + "_id": "CapFeuObeisse00004", + "_key": "!items!CapFeuObeisse00004", + "name": "Que le Feu m'obéisse (Feu)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], "folder": null, "sort": 400000, "flags": {}, "ownership": { "default": 0 }, + "system": { + "typeCapacite": "elementaire", + "description": "

L'Élémentaire peut contrôler le feu qui l'entoure sur ordre de son invocateur : orienter sa propagation et faire varier son intensité d'une valeur inférieure ou égale à sa Puissance. L'Élémentaire refuse d'éteindre le Feu ; il peut seulement en atténuer l'intensité. Dans ce cas, l'invocateur doit réussir un test de Présence + Persuasion / Seuil d'invocation. Ce pouvoir dure aussi longtemps que l'Élémentaire le maintient.

" + } +} diff --git a/packs/src/pouvoirs-elementaires/que-le-vent-chasse-les-nuages-air.json b/packs/src/pouvoirs-elementaires/que-le-vent-chasse-les-nuages-air.json new file mode 100644 index 0000000..bcf9691 --- /dev/null +++ b/packs/src/pouvoirs-elementaires/que-le-vent-chasse-les-nuages-air.json @@ -0,0 +1,16 @@ +{ + "_id": "CapAirNuages000003", + "_key": "!items!CapAirNuages000003", + "name": "Que le Vent chasse les nuages (Air)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 300000, + "flags": {}, + "ownership": { "default": 0 }, + "system": { + "typeCapacite": "elementaire", + "description": "

L'Élémentaire fait fuir les nuages et rétablit le beau temps dans une zone d'un rayon égal à sa Puissance en kilomètres. Ce beau temps dure au minimum une journée et peut durer davantage en fonction du climat.

" + } +} diff --git a/packs/src/pouvoirs-elementaires/que-le-vent-me-soit-propice-air.json b/packs/src/pouvoirs-elementaires/que-le-vent-me-soit-propice-air.json new file mode 100644 index 0000000..c94858e --- /dev/null +++ b/packs/src/pouvoirs-elementaires/que-le-vent-me-soit-propice-air.json @@ -0,0 +1,16 @@ +{ + "_id": "CapAirPropice00004", + "_key": "!items!CapAirPropice00004", + "name": "Que le Vent me soit propice (Air)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 400000, + "flags": {}, + "ownership": { "default": 0 }, + "system": { + "typeCapacite": "elementaire", + "description": "

L'Élémentaire peut réduire ou augmenter la force du vent de 5 km/h par point de Trempe. Ce pouvoir dure aussi longtemps que l'Élémentaire le maintient.

" + } +} diff --git a/packs/src/pouvoirs-elementaires/que-le-vent-porte-mon-fardeau-air.json b/packs/src/pouvoirs-elementaires/que-le-vent-porte-mon-fardeau-air.json new file mode 100644 index 0000000..985b554 --- /dev/null +++ b/packs/src/pouvoirs-elementaires/que-le-vent-porte-mon-fardeau-air.json @@ -0,0 +1,16 @@ +{ + "_id": "CapAirFardeau0005", + "_key": "!items!CapAirFardeau0005", + "name": "Que le Vent porte mon fardeau (Air)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 500000, + "flags": {}, + "ownership": { "default": 0 }, + "system": { + "typeCapacite": "elementaire", + "description": "

L'Élémentaire peut faire léviter un objet à raison de 1 kilogramme par point de Puissance. Il peut également le déplacer à sa Vitesse. Ce pouvoir dure aussi longtemps que l'Élémentaire le maintient.

" + } +} diff --git a/packs/src/pouvoirs-elementaires/que-leau-dechaîne-sa-fureur-eau.json b/packs/src/pouvoirs-elementaires/que-leau-dechaîne-sa-fureur-eau.json new file mode 100644 index 0000000..df3bd55 --- /dev/null +++ b/packs/src/pouvoirs-elementaires/que-leau-dechaîne-sa-fureur-eau.json @@ -0,0 +1,12 @@ +{ + "_id": "CapEauFureur000004", + "_key": "!items!CapEauFureur000004", + "name": "Que l'Eau déchaîne sa fureur (Eau)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], "folder": null, "sort": 400000, "flags": {}, "ownership": { "default": 0 }, + "system": { + "typeCapacite": "elementaire", + "description": "

L'Élémentaire danse non loin d'une étendue d'eau d'assez grande taille jusqu'à ce qu'elle s'agite puissamment dans un rayon égal à sa Présence en kilomètres. Tous les tests de Nage et de Navigation subissent un malus égal à la Puissance de l'Élémentaire tant que ce dernier poursuit sa danse.

" + } +} diff --git a/packs/src/pouvoirs-elementaires/que-leau-jaillisse-eau.json b/packs/src/pouvoirs-elementaires/que-leau-jaillisse-eau.json new file mode 100644 index 0000000..ba57456 --- /dev/null +++ b/packs/src/pouvoirs-elementaires/que-leau-jaillisse-eau.json @@ -0,0 +1,12 @@ +{ + "_id": "CapEauJaillit00005", + "_key": "!items!CapEauJaillit00005", + "name": "Que l'Eau jaillisse (Eau)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], "folder": null, "sort": 500000, "flags": {}, "ownership": { "default": 0 }, + "system": { + "typeCapacite": "elementaire", + "description": "

L'Élémentaire produit un jet d'eau capable de projeter un objet dans un rayon égal à sa Puissance en mètres. L'objet ne peut dépasser sa Puissance en kilos. Pour projeter avec précision : test d'Adresse x 2, difficulté fixée par le MJ. Le jaillissement peut causer des dégâts égaux à sa Puissance ; contre une cible vivante, l'Élémentaire doit réussir un test d'Adresse x 2 contre la Défense de la cible.

" + } +} diff --git a/packs/src/pouvoirs-elementaires/que-leau-noie-mes-ennemis-eau.json b/packs/src/pouvoirs-elementaires/que-leau-noie-mes-ennemis-eau.json new file mode 100644 index 0000000..4e54603 --- /dev/null +++ b/packs/src/pouvoirs-elementaires/que-leau-noie-mes-ennemis-eau.json @@ -0,0 +1,12 @@ +{ + "_id": "CapEauVague0000003", + "_key": "!items!CapEauVague0000003", + "name": "Que la puissance de l'Eau noie mes ennemis (Eau)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], "folder": null, "sort": 300000, "flags": {}, "ownership": { "default": 0 }, + "system": { + "typeCapacite": "elementaire", + "description": "

L'Élémentaire doit se trouver non loin d'une étendue ou d'un cours d'eau d'assez grande taille (lac, grande rivière, fleuve, mer, barrage). Il amasse l'eau pour produire une vague haute d'autant de mètres que son score en Présence, à raison de 1 tour par mètre. Une fois la hauteur souhaitée atteinte, il lance ce mur d'eau sur le lieu désigné. Les victimes du tsunami subissent Puissance x 2 points de dégâts létaux, en plus des dégâts matériels.

" + } +} diff --git a/packs/src/pouvoirs-elementaires/que-mon-ennemi-succombe-air.json b/packs/src/pouvoirs-elementaires/que-mon-ennemi-succombe-air.json new file mode 100644 index 0000000..7ef9195 --- /dev/null +++ b/packs/src/pouvoirs-elementaires/que-mon-ennemi-succombe-air.json @@ -0,0 +1,16 @@ +{ + "_id": "CapAirEnnemi000002", + "_key": "!items!CapAirEnnemi000002", + "name": "Que mon ennemi succombe devant la colère du Vent (Air)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 200000, + "flags": {}, + "ownership": { "default": 0 }, + "system": { + "typeCapacite": "elementaire", + "description": "

L'Élémentaire manipule son élément pour attaquer une cible désignée par son invocateur. Il effectue un test de Puissance x 2 contre la Défense de son adversaire et lui inflige sa Puissance x 2 points de dégâts létaux. Cette attaque prend la forme d'un violent coup de vent.

" + } +} diff --git a/packs/src/pouvoirs-elementaires/que-mon-ennemi-succombe-eau.json b/packs/src/pouvoirs-elementaires/que-mon-ennemi-succombe-eau.json new file mode 100644 index 0000000..d7d0fe3 --- /dev/null +++ b/packs/src/pouvoirs-elementaires/que-mon-ennemi-succombe-eau.json @@ -0,0 +1,12 @@ +{ + "_id": "CapEauEnnemi000002", + "_key": "!items!CapEauEnnemi000002", + "name": "Que mon ennemi succombe devant la colère de l'Eau (Eau)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], "folder": null, "sort": 200000, "flags": {}, "ownership": { "default": 0 }, + "system": { + "typeCapacite": "elementaire", + "description": "

L'Élémentaire manipule son élément pour attaquer une cible désignée par son invocateur. Il effectue un test de Puissance x 2 contre la Défense de son adversaire et lui inflige sa Puissance x 2 en dégâts. Cette attaque prend la forme d'une boule d'eau tournoyante.

" + } +} diff --git a/packs/src/pouvoirs-elementaires/que-mon-ennemi-succombe-feu.json b/packs/src/pouvoirs-elementaires/que-mon-ennemi-succombe-feu.json new file mode 100644 index 0000000..587f150 --- /dev/null +++ b/packs/src/pouvoirs-elementaires/que-mon-ennemi-succombe-feu.json @@ -0,0 +1,12 @@ +{ + "_id": "CapFeuEnnemi000002", + "_key": "!items!CapFeuEnnemi000002", + "name": "Que mon ennemi succombe devant la colère du Feu (Feu)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], "folder": null, "sort": 200000, "flags": {}, "ownership": { "default": 0 }, + "system": { + "typeCapacite": "elementaire", + "description": "

L'Élémentaire manipule son élément pour attaquer une cible désignée par son invocateur. Il effectue un test de Puissance x 2 contre la Défense de son adversaire et lui inflige sa Puissance x 2 dégâts. Cette attaque prend la forme d'une boule de feu lancée sur la cible.

" + } +} diff --git a/packs/src/pouvoirs-elementaires/que-mon-ennemi-succombe-terre.json b/packs/src/pouvoirs-elementaires/que-mon-ennemi-succombe-terre.json new file mode 100644 index 0000000..83f5d43 --- /dev/null +++ b/packs/src/pouvoirs-elementaires/que-mon-ennemi-succombe-terre.json @@ -0,0 +1,16 @@ +{ + "_id": "CapTerEnnemi000006", + "_key": "!items!CapTerEnnemi000006", + "name": "Que mon ennemi succombe devant la colère de la Terre (Terre)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 600000, + "flags": {}, + "ownership": { "default": 0 }, + "system": { + "typeCapacite": "elementaire", + "description": "

L'Élémentaire manipule son élément pour attaquer une cible désignée par son invocateur. Il effectue un test de Puissance x 2 contre la Défense de son adversaire. S'il touche, l'Élémentaire inflige à sa cible Puissance x 2 dégâts. Cette attaque prend la forme d'un rocher, d'une motte de terre lancée ou d'un poing de pierre rageur qui vient frapper la cible.

" + } +} diff --git a/packs/src/pouvoirs-elementaires/que-mon-serviteur-apparaisse-air.json b/packs/src/pouvoirs-elementaires/que-mon-serviteur-apparaisse-air.json new file mode 100644 index 0000000..d715d17 --- /dev/null +++ b/packs/src/pouvoirs-elementaires/que-mon-serviteur-apparaisse-air.json @@ -0,0 +1,16 @@ +{ + "_id": "CapAirAppar0000001", + "_key": "!items!CapAirAppar0000001", + "name": "Que mon serviteur apparaisse / disparaisse (Air)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { "default": 0 }, + "system": { + "typeCapacite": "elementaire", + "description": "

L'Élémentaire prend physiquement la forme d'un Sylphe devant l'invocateur. Dans le cas contraire, l'Élémentaire possède la forme d'une légère brise qui tournoie en permanence autour du sorcier.

" + } +} diff --git a/packs/src/pouvoirs-elementaires/que-mon-serviteur-apparaisse-eau.json b/packs/src/pouvoirs-elementaires/que-mon-serviteur-apparaisse-eau.json new file mode 100644 index 0000000..1778a12 --- /dev/null +++ b/packs/src/pouvoirs-elementaires/que-mon-serviteur-apparaisse-eau.json @@ -0,0 +1,12 @@ +{ + "_id": "CapEauAppar000001", + "_key": "!items!CapEauAppar000001", + "name": "Que mon serviteur apparaisse / disparaisse (Eau)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], "folder": null, "sort": 100000, "flags": {}, "ownership": { "default": 0 }, + "system": { + "typeCapacite": "elementaire", + "description": "

L'Élémentaire prend physiquement la forme d'une Ondine devant l'invocateur. Dans le cas contraire, l'Élémentaire possède la forme de fines gouttelettes qui parsèment l'équipement de l'invocateur.

" + } +} diff --git a/packs/src/pouvoirs-elementaires/que-mon-serviteur-apparaisse-feu.json b/packs/src/pouvoirs-elementaires/que-mon-serviteur-apparaisse-feu.json new file mode 100644 index 0000000..03a552e --- /dev/null +++ b/packs/src/pouvoirs-elementaires/que-mon-serviteur-apparaisse-feu.json @@ -0,0 +1,12 @@ +{ + "_id": "CapFeuAppar000001", + "_key": "!items!CapFeuAppar000001", + "name": "Que mon serviteur apparaisse / disparaisse (Feu)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], "folder": null, "sort": 100000, "flags": {}, "ownership": { "default": 0 }, + "system": { + "typeCapacite": "elementaire", + "description": "

L'Élémentaire prend physiquement la forme d'un animal de feu (souvent d'une Salamandre). Dans le cas contraire, l'Élémentaire possède la forme d'une petite flamme qui vient se nicher dans le support adéquat le plus proche (cheminée, pipe, chandelle, buisson…). Si aucun support convenable n'est disponible à proximité, l'Élémentaire reste sous sa forme de Salamandre.

" + } +} diff --git a/packs/src/pouvoirs-elementaires/que-mon-serviteur-apparaisse-terre.json b/packs/src/pouvoirs-elementaires/que-mon-serviteur-apparaisse-terre.json new file mode 100644 index 0000000..9701bd4 --- /dev/null +++ b/packs/src/pouvoirs-elementaires/que-mon-serviteur-apparaisse-terre.json @@ -0,0 +1,16 @@ +{ + "_id": "CapTerAppar000001", + "_key": "!items!CapTerAppar000001", + "name": "Que mon serviteur apparaisse / disparaisse (Terre)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 100000, + "flags": {}, + "ownership": { "default": 0 }, + "system": { + "typeCapacite": "elementaire", + "description": "

L'Élémentaire prend physiquement la forme d'un Gnome devant l'invocateur. Dans le cas contraire, l'Élémentaire possède la forme d'une fine couche de poussière qui macule l'équipement de l'invocateur.

" + } +} diff --git a/packs/src/pouvoirs-elementaires/que-notre-eau-soit-purifiee-eau.json b/packs/src/pouvoirs-elementaires/que-notre-eau-soit-purifiee-eau.json new file mode 100644 index 0000000..90fa745 --- /dev/null +++ b/packs/src/pouvoirs-elementaires/que-notre-eau-soit-purifiee-eau.json @@ -0,0 +1,12 @@ +{ + "_id": "CapEauPurifie00007", + "_key": "!items!CapEauPurifie00007", + "name": "Que notre Eau soit purifiée (Eau)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], "folder": null, "sort": 700000, "flags": {}, "ownership": { "default": 0 }, + "system": { + "typeCapacite": "elementaire", + "description": "

L'Élémentaire purifie l'eau ou un autre liquide désigné (composé majoritairement d'eau) de toutes les impuretés susceptibles de le corrompre : vermine, maladies, poisons. Il ne peut purifier un nombre de litres supérieur à sa Clairvoyance.

" + } +} diff --git a/packs/src/pouvoirs-elementaires/que-se-leve-la-tempete-air.json b/packs/src/pouvoirs-elementaires/que-se-leve-la-tempete-air.json new file mode 100644 index 0000000..d06bde2 --- /dev/null +++ b/packs/src/pouvoirs-elementaires/que-se-leve-la-tempete-air.json @@ -0,0 +1,16 @@ +{ + "_id": "CapAirTempete00007", + "_key": "!items!CapAirTempete00007", + "name": "Que se lève la Tempête (Air)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "effects": [], + "folder": null, + "sort": 700000, + "flags": {}, + "ownership": { "default": 0 }, + "system": { + "typeCapacite": "elementaire", + "description": "

L'Élémentaire souffle et provoque une tempête autour de lui, dans un rayon égal à Trempe kilomètres, pour une durée de 1 heure par point d'Âme qu'il dépense.

" + } +} diff --git a/packs/tables/000319.ldb b/packs/tables/000336.ldb similarity index 100% rename from packs/tables/000319.ldb rename to packs/tables/000336.ldb diff --git a/packs/tables/000369.log b/packs/tables/000369.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/tables/CURRENT b/packs/tables/CURRENT index 75c473d..07a4d2c 100644 --- a/packs/tables/CURRENT +++ b/packs/tables/CURRENT @@ -1 +1 @@ -MANIFEST-000324 +MANIFEST-000367 diff --git a/packs/tables/LOG b/packs/tables/LOG index d99ac98..eecbc79 100644 --- a/packs/tables/LOG +++ b/packs/tables/LOG @@ -1,7 +1,7 @@ -2026/04/09-23:45:58.505537 7f983affd6c0 Recovering log #322 -2026/04/09-23:45:58.521170 7f983affd6c0 Delete type=3 #320 -2026/04/09-23:45:58.521235 7f983affd6c0 Delete type=0 #322 -2026/04/09-23:47:19.413831 7f983a7fc6c0 Level-0 table #327: started -2026/04/09-23:47:19.413859 7f983a7fc6c0 Level-0 table #327: 0 bytes OK -2026/04/09-23:47:19.452127 7f983a7fc6c0 Delete type=0 #325 -2026/04/09-23:47:19.531432 7f983a7fc6c0 Manual compaction at level-0 from '!tables!zV2oJy8JZE0nngRY' @ 72057594037927935 : 1 .. '!tables.results!zV2oJy8JZE0nngRY.wTMX1TbxljHmHImp' @ 0 : 0; will stop at (end) +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) diff --git a/packs/tables/LOG.old b/packs/tables/LOG.old index d6e7b0f..b24d71f 100644 --- a/packs/tables/LOG.old +++ b/packs/tables/LOG.old @@ -1,7 +1,7 @@ -2026/04/09-23:12:16.792949 7f20ee3ff6c0 Recovering log #317 -2026/04/09-23:12:16.808924 7f20ee3ff6c0 Delete type=3 #315 -2026/04/09-23:12:16.808977 7f20ee3ff6c0 Delete type=0 #317 -2026/04/09-23:25:18.117313 7f1e4ffff6c0 Level-0 table #323: started -2026/04/09-23:25:18.117339 7f1e4ffff6c0 Level-0 table #323: 0 bytes OK -2026/04/09-23:25:18.123526 7f1e4ffff6c0 Delete type=0 #321 -2026/04/09-23:25:18.140003 7f1e4ffff6c0 Manual compaction at level-0 from '!tables!zV2oJy8JZE0nngRY' @ 72057594037927935 : 1 .. '!tables.results!zV2oJy8JZE0nngRY.wTMX1TbxljHmHImp' @ 0 : 0; will stop at (end) +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) diff --git a/packs/tables/MANIFEST-000367 b/packs/tables/MANIFEST-000367 new file mode 100644 index 0000000..ca62701 Binary files /dev/null and b/packs/tables/MANIFEST-000367 differ diff --git a/packs/tables/lost/000330.log b/packs/tables/lost/000330.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/tendances/000319.ldb b/packs/tendances/000336.ldb similarity index 100% rename from packs/tendances/000319.ldb rename to packs/tendances/000336.ldb diff --git a/packs/tendances/000369.log b/packs/tendances/000369.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/tendances/CURRENT b/packs/tendances/CURRENT index 75c473d..07a4d2c 100644 --- a/packs/tendances/CURRENT +++ b/packs/tendances/CURRENT @@ -1 +1 @@ -MANIFEST-000324 +MANIFEST-000367 diff --git a/packs/tendances/LOG b/packs/tendances/LOG index cbabcee..8861076 100644 --- a/packs/tendances/LOG +++ b/packs/tendances/LOG @@ -1,7 +1,7 @@ -2026/04/09-23:45:58.453302 7f983bfff6c0 Recovering log #322 -2026/04/09-23:45:58.469037 7f983bfff6c0 Delete type=3 #320 -2026/04/09-23:45:58.469091 7f983bfff6c0 Delete type=0 #322 -2026/04/09-23:47:19.217330 7f983a7fc6c0 Level-0 table #327: started -2026/04/09-23:47:19.217362 7f983a7fc6c0 Level-0 table #327: 0 bytes OK -2026/04/09-23:47:19.255438 7f983a7fc6c0 Delete type=0 #325 -2026/04/09-23:47:19.353970 7f983a7fc6c0 Manual compaction at level-0 from '!items!0CYP1JpZu9mst5tK' @ 72057594037927935 : 1 .. '!items!zhPPsmTtLv7cyNHJ' @ 0 : 0; will stop at (end) +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) diff --git a/packs/tendances/LOG.old b/packs/tendances/LOG.old index c4eb369..9473962 100644 --- a/packs/tendances/LOG.old +++ b/packs/tendances/LOG.old @@ -1,7 +1,7 @@ -2026/04/09-23:12:16.737235 7f20edbfe6c0 Recovering log #317 -2026/04/09-23:12:16.752970 7f20edbfe6c0 Delete type=3 #315 -2026/04/09-23:12:16.753044 7f20edbfe6c0 Delete type=0 #317 -2026/04/09-23:25:18.084916 7f1e4ffff6c0 Level-0 table #323: started -2026/04/09-23:25:18.084945 7f1e4ffff6c0 Level-0 table #323: 0 bytes OK -2026/04/09-23:25:18.091299 7f1e4ffff6c0 Delete type=0 #321 -2026/04/09-23:25:18.111042 7f1e4ffff6c0 Manual compaction at level-0 from '!items!0CYP1JpZu9mst5tK' @ 72057594037927935 : 1 .. '!items!zhPPsmTtLv7cyNHJ' @ 0 : 0; will stop at (end) +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) diff --git a/packs/tendances/MANIFEST-000367 b/packs/tendances/MANIFEST-000367 new file mode 100644 index 0000000..bc4c40e Binary files /dev/null and b/packs/tendances/MANIFEST-000367 differ diff --git a/packs/tendances/lost/000330.log b/packs/tendances/lost/000330.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/traits-chaotiques/000319.ldb b/packs/traits-chaotiques/000336.ldb similarity index 100% rename from packs/traits-chaotiques/000319.ldb rename to packs/traits-chaotiques/000336.ldb diff --git a/packs/traits-chaotiques/000369.log b/packs/traits-chaotiques/000369.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/traits-chaotiques/CURRENT b/packs/traits-chaotiques/CURRENT index 75c473d..07a4d2c 100644 --- a/packs/traits-chaotiques/CURRENT +++ b/packs/traits-chaotiques/CURRENT @@ -1 +1 @@ -MANIFEST-000324 +MANIFEST-000367 diff --git a/packs/traits-chaotiques/LOG b/packs/traits-chaotiques/LOG index 8148323..72ce6d6 100644 --- a/packs/traits-chaotiques/LOG +++ b/packs/traits-chaotiques/LOG @@ -1,7 +1,7 @@ -2026/04/09-23:45:58.470924 7f9888fff6c0 Recovering log #322 -2026/04/09-23:45:58.485339 7f9888fff6c0 Delete type=3 #320 -2026/04/09-23:45:58.485446 7f9888fff6c0 Delete type=0 #322 -2026/04/09-23:47:19.255626 7f983a7fc6c0 Level-0 table #327: started -2026/04/09-23:47:19.255673 7f983a7fc6c0 Level-0 table #327: 0 bytes OK -2026/04/09-23:47:19.297109 7f983a7fc6c0 Delete type=0 #325 -2026/04/09-23:47:19.353986 7f983a7fc6c0 Manual compaction at level-0 from '!items!3J0HKjcVtBT39BiR' @ 72057594037927935 : 1 .. '!items!zeOtWz6oscp8Su5l' @ 0 : 0; will stop at (end) +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) diff --git a/packs/traits-chaotiques/LOG.old b/packs/traits-chaotiques/LOG.old index 7c60520..b8ab3dd 100644 --- a/packs/traits-chaotiques/LOG.old +++ b/packs/traits-chaotiques/LOG.old @@ -1,7 +1,7 @@ -2026/04/09-23:12:16.756203 7f20ed3fd6c0 Recovering log #317 -2026/04/09-23:12:16.771012 7f20ed3fd6c0 Delete type=3 #315 -2026/04/09-23:12:16.771062 7f20ed3fd6c0 Delete type=0 #317 -2026/04/09-23:25:18.098075 7f1e4ffff6c0 Level-0 table #323: started -2026/04/09-23:25:18.098095 7f1e4ffff6c0 Level-0 table #323: 0 bytes OK -2026/04/09-23:25:18.103998 7f1e4ffff6c0 Delete type=0 #321 -2026/04/09-23:25:18.111061 7f1e4ffff6c0 Manual compaction at level-0 from '!items!3J0HKjcVtBT39BiR' @ 72057594037927935 : 1 .. '!items!zeOtWz6oscp8Su5l' @ 0 : 0; will stop at (end) +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) diff --git a/packs/traits-chaotiques/MANIFEST-000367 b/packs/traits-chaotiques/MANIFEST-000367 new file mode 100644 index 0000000..06f6a28 Binary files /dev/null and b/packs/traits-chaotiques/MANIFEST-000367 differ diff --git a/packs/traits-chaotiques/lost/000330.log b/packs/traits-chaotiques/lost/000330.log new file mode 100644 index 0000000..e69de29 diff --git a/styles/mournblade.css b/styles/mournblade.css index e3c49fb..5228f6e 100644 --- a/styles/mournblade.css +++ b/styles/mournblade.css @@ -806,6 +806,169 @@ li { width: 64px; height: 64px; } +.mournblade-item-card { + font-family: CentaurMT, serif; + color: #2a1a0a; + background: linear-gradient(180deg, #fdf6e3 0%, #f7ead0 100%); + border: 1px solid #8b4513; + border-radius: 4px; + overflow: hidden; + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25); +} +.mournblade-item-card .item-card-header { + display: flex; + align-items: center; + gap: 10px; + background: linear-gradient(135deg, #4a0404 0%, #8b0000 50%, #6b2020 100%); + padding: 10px 12px; + border-bottom: 2px solid #c8860a; +} +.mournblade-item-card .item-card-header .item-card-img { + width: 56px; + height: 56px; + border-radius: 4px; + border: 2px solid #c8860a; + object-fit: cover; + flex-shrink: 0; + background: rgba(0, 0, 0, 0.3); +} +.mournblade-item-card .item-card-header .item-card-title { + flex: 1; + min-width: 0; +} +.mournblade-item-card .item-card-header .item-card-title .item-card-name { + margin: 0 0 4px 0; + padding: 0; + font-family: Charlemagne, CentaurMT, serif; + font-size: 1.05rem; + font-weight: bold; + color: #f5deb3; + text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.6); + white-space: normal; + line-height: 1.2; + border: none; +} +.mournblade-item-card .item-card-header .item-card-title .item-card-type-badge { + display: inline-block; + background: rgba(200, 134, 10, 0.3); + border: 1px solid #c8860a; + border-radius: 10px; + padding: 1px 8px; + font-size: 0.72rem; + color: #f5deb3; + letter-spacing: 0.05em; + text-transform: uppercase; +} +.mournblade-item-card .item-card-header .item-card-title .item-card-type-badge i { + margin-right: 3px; +} +.mournblade-item-card .item-card-stats { + padding: 8px 12px; + border-bottom: 1px solid rgba(139, 69, 19, 0.2); + display: flex; + flex-direction: column; + gap: 3px; +} +.mournblade-item-card .item-card-stats .stat-row { + display: flex; + align-items: baseline; + justify-content: space-between; + gap: 8px; + font-size: 0.85rem; + padding: 2px 0; + border-bottom: 1px dotted rgba(139, 69, 19, 0.12); +} +.mournblade-item-card .item-card-stats .stat-row:last-child { + border-bottom: none; +} +.mournblade-item-card .item-card-stats .stat-row .stat-label { + color: #6b3a1f; + font-weight: bold; + flex-shrink: 0; +} +.mournblade-item-card .item-card-stats .stat-row .stat-label i { + margin-right: 4px; + color: #8b4513; +} +.mournblade-item-card .item-card-stats .stat-row .stat-value { + color: #2a1a0a; + text-align: right; + font-weight: normal; +} +.mournblade-item-card .item-card-stats .stat-row .stat-value.stat-highlight { + font-weight: bold; + color: #4a0404; + font-size: 0.95rem; +} +.mournblade-item-card .item-card-stats .stat-row.stat-flag { + justify-content: flex-start; + color: #6b3a1f; + font-style: italic; + font-size: 0.8rem; + border-bottom: none; + padding: 1px 0; +} +.mournblade-item-card .item-card-stats .stat-row.stat-flag i { + margin-right: 5px; + color: #8b0000; +} +.mournblade-item-card .item-card-divider { + display: flex; + align-items: center; + padding: 6px 12px 0; + gap: 8px; + font-size: 0.72rem; + letter-spacing: 0.08em; + text-transform: uppercase; + color: #8b4513; + font-weight: bold; +} +.mournblade-item-card .item-card-divider::before, +.mournblade-item-card .item-card-divider::after { + content: ''; + flex: 1; + height: 1px; + background: linear-gradient(90deg, transparent, #c8860a, transparent); +} +.mournblade-item-card .item-card-description { + padding: 8px 12px 10px; + font-size: 0.88rem; + line-height: 1.5; + color: #2a1a0a; +} +.mournblade-item-card .item-card-description p { + margin: 0 0 6px 0; +} +.mournblade-item-card .item-card-description p:last-child { + margin-bottom: 0; +} +.mournblade-item-card .item-card-description em, +.mournblade-item-card .item-card-description i { + color: #5a2a0a; +} +.mournblade-item-card .item-card-description strong, +.mournblade-item-card .item-card-description b { + color: #2a1a0a; +} +.mournblade-item-card .item-card-sacrifice { + background: rgba(100, 0, 0, 0.05); + border-top: 1px solid rgba(139, 0, 0, 0.2); + font-style: italic; + color: #5a0000; +} +.mournblade-item-card.mournblade-item-card--compact .item-card-header { + padding: 8px 10px; +} +.mournblade-item-card.mournblade-item-card--compact .item-card-header .item-card-img { + width: 44px; + height: 44px; +} +.mournblade-item-card.mournblade-item-card--compact .item-card-header .item-card-name { + font-size: 0.95rem; +} +.mournblade-item-card.mournblade-item-card--compact .item-card-description { + padding: 6px 10px 8px; +} .roll-dialog-header { height: 52px; } @@ -1954,6 +2117,40 @@ li { margin-right: 6px; color: #ff8c00; } +.mournblade-chat-result .result-chaos { + padding: 8px; + background: rgba(40, 0, 60, 0.85); + border-top: 2px solid #9400d3; + border-left: 4px solid #ff00ff; + color: #f0d0ff; + font-size: 0.85rem; +} +.mournblade-chat-result .result-chaos .chaos-header { + font-weight: bold; + font-size: 1rem; + margin-bottom: 6px; + color: #ff88ff; +} +.mournblade-chat-result .result-chaos .chaos-header i { + margin-right: 6px; +} +.mournblade-chat-result .result-chaos .chaos-effect { + line-height: 1.4; +} +.mournblade-chat-result .result-chaos .chaos-effect i { + margin-right: 6px; +} +.mournblade-chat-result .result-chaos .chaos-effect.desastre { + color: #ff4444; + font-weight: bold; +} +.mournblade-chat-result .result-chaos .chaos-effect.echec_absolu { + color: #ffaa44; +} +.mournblade-chat-result .result-chaos .chaos-effect.rien { + color: #aaaacc; + font-style: italic; +} .mournblade-chat-result .predilection-section { padding: 8px; background: rgba(220, 200, 255, 0.4); @@ -2079,6 +2276,11 @@ li { text-decoration: none; transition: all 0.2s; font-size: 0.9rem; + background: none; + border: none; + padding: 0; + cursor: pointer; + font-family: inherit; } .mournblade-welcome-message .welcome-content .welcome-section .section-text .welcome-link i { margin-right: 4px; @@ -2115,6 +2317,370 @@ li { opacity: 0.8; } } +.sortilege-dialog, +.potion-dialog, +.invocation-dialog { + font-family: CentaurMT, serif; + color: #2a1a0a; + padding: 10px; + background: url("../assets/ui/pc_sheet_bg.webp") repeat left top; +} +.sortilege-dialog label, +.potion-dialog label, +.invocation-dialog label, +.sortilege-dialog input, +.potion-dialog input, +.invocation-dialog input, +.sortilege-dialog span, +.potion-dialog span, +.invocation-dialog span, +.sortilege-dialog p, +.potion-dialog p, +.invocation-dialog p { + color: #2a1a0a; +} +.sortilege-dialog th, +.potion-dialog th, +.invocation-dialog th, +.sortilege-dialog td, +.potion-dialog td, +.invocation-dialog td { + color: #2a1a0a; +} +.sortilege-dialog .sortilege-header, +.potion-dialog .sortilege-header, +.invocation-dialog .sortilege-header { + display: flex; + align-items: center; + gap: 10px; + margin-bottom: 12px; + padding: 6px 10px; + background: linear-gradient(135deg, #4a0404 0%, #6d0808 100%); + border: 1px solid #8b0000; + border-radius: 4px; +} +.sortilege-dialog .sortilege-header .sortilege-actor-info, +.potion-dialog .sortilege-header .sortilege-actor-info, +.invocation-dialog .sortilege-header .sortilege-actor-info { + display: flex; + flex-direction: column; + gap: 3px; +} +.sortilege-dialog .sortilege-header .sortilege-actor-img, +.potion-dialog .sortilege-header .sortilege-actor-img, +.invocation-dialog .sortilege-header .sortilege-actor-img { + width: 48px; + height: 48px; + border-radius: 4px; + border: 2px solid #a05020; + object-fit: cover; + flex-shrink: 0; +} +.sortilege-dialog .sortilege-header .sortilege-actor-name, +.potion-dialog .sortilege-header .sortilege-actor-name, +.invocation-dialog .sortilege-header .sortilege-actor-name { + font-weight: bold; + font-size: 1.05rem; + color: #ffffff; + text-shadow: 0 1px 3px rgba(0, 0, 0, 0.9); +} +.sortilege-dialog .sortilege-header .sortilege-ame-info, +.potion-dialog .sortilege-header .sortilege-ame-info, +.invocation-dialog .sortilege-header .sortilege-ame-info { + font-size: 0.88rem; + color: #fde0ff; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.8); +} +.sortilege-dialog .sortilege-header .sortilege-ame-info strong, +.potion-dialog .sortilege-header .sortilege-ame-info strong, +.invocation-dialog .sortilege-header .sortilege-ame-info strong { + color: #ffffff; + font-weight: bold; +} +.sortilege-dialog .sortilege-mode-row, +.potion-dialog .sortilege-mode-row, +.invocation-dialog .sortilege-mode-row { + display: flex; + align-items: center; + gap: 10px; + margin-bottom: 10px; + padding: 5px 4px; + border-bottom: 1px solid rgba(139, 69, 19, 0.4); +} +.sortilege-dialog .sortilege-mode-row label, +.potion-dialog .sortilege-mode-row label, +.invocation-dialog .sortilege-mode-row label { + flex-shrink: 0; + font-weight: bold; + color: #5a1a00; +} +.sortilege-dialog .sortilege-mode-row select, +.potion-dialog .sortilege-mode-row select, +.invocation-dialog .sortilege-mode-row select { + flex: 1; + background: #3a1a08 !important; + border: 1px solid #c06030 !important; + border-radius: 3px; + padding: 5px 8px; + color: #ffffff !important; + font-family: CentaurMT, serif; + font-size: 0.95rem; + font-weight: bold; + cursor: pointer; + appearance: none; + -webkit-appearance: none; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%23ffd070' d='M6 8L0 0h12z'/%3E%3C/svg%3E") !important; + background-repeat: no-repeat !important; + background-position: right 8px center !important; + background-size: 10px 7px !important; + padding-right: 28px; +} +.sortilege-dialog .sortilege-mode-row select option, +.potion-dialog .sortilege-mode-row select option, +.invocation-dialog .sortilege-mode-row select option { + background: #1a0e06; + color: #ffffff; + font-weight: normal; +} +.sortilege-dialog .sortilege-runes-table, +.potion-dialog .sortilege-runes-table, +.invocation-dialog .sortilege-runes-table { + width: 100%; + border-collapse: collapse; + margin-bottom: 12px; + font-size: 0.88rem; + border: 1px solid #6b3010; + border-radius: 4px; + overflow: hidden; +} +.sortilege-dialog .sortilege-runes-table thead tr th, +.potion-dialog .sortilege-runes-table thead tr th, +.invocation-dialog .sortilege-runes-table thead tr th { + background: #3a1808; + padding: 6px 8px; + text-align: center; + border-bottom: 2px solid #8b4513; + color: #ffd070; + font-weight: bold; + font-size: 0.82rem; + text-transform: uppercase; + letter-spacing: 0.5px; +} +.sortilege-dialog .sortilege-runes-table tbody tr.sortilege-rune-row, +.potion-dialog .sortilege-runes-table tbody tr.sortilege-rune-row, +.invocation-dialog .sortilege-runes-table tbody tr.sortilege-rune-row { + border-bottom: 1px solid rgba(139, 69, 19, 0.3); + transition: background 0.15s; + background: rgba(255, 240, 210, 0.3); +} +.sortilege-dialog .sortilege-runes-table tbody tr.sortilege-rune-row:last-child, +.potion-dialog .sortilege-runes-table tbody tr.sortilege-rune-row:last-child, +.invocation-dialog .sortilege-runes-table tbody tr.sortilege-rune-row:last-child { + border-bottom: none; +} +.sortilege-dialog .sortilege-runes-table tbody tr.sortilege-rune-row:nth-child(even), +.potion-dialog .sortilege-runes-table tbody tr.sortilege-rune-row:nth-child(even), +.invocation-dialog .sortilege-runes-table tbody tr.sortilege-rune-row:nth-child(even) { + background: rgba(200, 160, 100, 0.15); +} +.sortilege-dialog .sortilege-runes-table tbody tr.sortilege-rune-row:hover, +.potion-dialog .sortilege-runes-table tbody tr.sortilege-rune-row:hover, +.invocation-dialog .sortilege-runes-table tbody tr.sortilege-rune-row:hover { + background: rgba(139, 69, 19, 0.15); +} +.sortilege-dialog .sortilege-runes-table tbody tr.sortilege-rune-row.rune-selected, +.potion-dialog .sortilege-runes-table tbody tr.sortilege-rune-row.rune-selected, +.invocation-dialog .sortilege-runes-table tbody tr.sortilege-rune-row.rune-selected { + background: rgba(139, 69, 19, 0.25); +} +.sortilege-dialog .sortilege-runes-table tbody tr.sortilege-rune-row td, +.potion-dialog .sortilege-runes-table tbody tr.sortilege-rune-row td, +.invocation-dialog .sortilege-runes-table tbody tr.sortilege-rune-row td { + padding: 5px 8px; + vertical-align: middle; + color: #2a1a0a; +} +.sortilege-dialog .sortilege-runes-table tbody tr.sortilege-rune-row .rune-mini-img, +.potion-dialog .sortilege-runes-table tbody tr.sortilege-rune-row .rune-mini-img, +.invocation-dialog .sortilege-runes-table tbody tr.sortilege-rune-row .rune-mini-img { + width: 20px; + height: 20px; + vertical-align: middle; + margin-right: 4px; + border-radius: 2px; + border: 1px solid rgba(139, 69, 19, 0.5); +} +.sortilege-dialog .sortilege-runes-table tbody tr.sortilege-rune-row .sortilege-rune-points, +.potion-dialog .sortilege-runes-table tbody tr.sortilege-rune-row .sortilege-rune-points, +.invocation-dialog .sortilege-runes-table tbody tr.sortilege-rune-row .sortilege-rune-points { + width: 55px; + text-align: center; + background: #3a1a08; + border: 1px solid #8b4513; + border-radius: 3px; + color: #f0e8d8; + padding: 2px 4px; + font-family: CentaurMT, serif; + cursor: pointer; +} +.sortilege-dialog .sortilege-runes-table tbody tr.sortilege-rune-row .sortilege-rune-points option, +.potion-dialog .sortilege-runes-table tbody tr.sortilege-rune-row .sortilege-rune-points option, +.invocation-dialog .sortilege-runes-table tbody tr.sortilege-rune-row .sortilege-rune-points option { + background: #1a0e06; + color: #f0e8d8; +} +.sortilege-dialog .sortilege-runes-table tbody tr.sortilege-rune-row .sortilege-rune-points:disabled, +.potion-dialog .sortilege-runes-table tbody tr.sortilege-rune-row .sortilege-rune-points:disabled, +.invocation-dialog .sortilege-runes-table tbody tr.sortilege-rune-row .sortilege-rune-points:disabled { + opacity: 0.35; + cursor: not-allowed; +} +.sortilege-dialog .sortilege-summary, +.potion-dialog .sortilege-summary, +.invocation-dialog .sortilege-summary { + background: linear-gradient(135deg, #4a0404 0%, #3a1808 100%); + border: 1px solid #8b4513; + border-left: 4px solid #c0392b; + border-radius: 4px; + padding: 10px 14px; + margin-bottom: 10px; +} +.sortilege-dialog .sortilege-summary .summary-row, +.potion-dialog .sortilege-summary .summary-row, +.invocation-dialog .sortilege-summary .summary-row { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 6px; + font-size: 0.9rem; +} +.sortilege-dialog .sortilege-summary .summary-row:last-child, +.potion-dialog .sortilege-summary .summary-row:last-child, +.invocation-dialog .sortilege-summary .summary-row:last-child { + margin-bottom: 0; +} +.sortilege-dialog .sortilege-summary .summary-row .summary-label, +.potion-dialog .sortilege-summary .summary-row .summary-label, +.invocation-dialog .sortilege-summary .summary-row .summary-label { + font-weight: bold; + color: #f0d8b0; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.8); +} +.sortilege-dialog .sortilege-summary .summary-row .summary-value, +.potion-dialog .sortilege-summary .summary-row .summary-value, +.invocation-dialog .sortilege-summary .summary-row .summary-value { + color: #ffd700; + font-weight: bold; + font-size: 1.05rem; + text-shadow: 0 1px 3px rgba(0, 0, 0, 0.9); +} +.sortilege-dialog .flexrow, +.potion-dialog .flexrow, +.invocation-dialog .flexrow { + display: flex; + align-items: center; + gap: 10px; + margin-bottom: 8px; + padding: 3px 4px; +} +.sortilege-dialog .flexrow label, +.potion-dialog .flexrow label, +.invocation-dialog .flexrow label { + flex: 1; + color: #5a1a00; + font-size: 0.9rem; + font-weight: bold; +} +.sortilege-dialog .flexrow input[type="number"], +.potion-dialog .flexrow input[type="number"], +.invocation-dialog .flexrow input[type="number"] { + width: 70px; + background: #3a1a08; + border: 1px solid #8b4513; + border-radius: 3px; + padding: 3px 8px; + color: #f0e8d8; + text-align: center; + font-family: CentaurMT, serif; +} +.sortilege-dialog .flexrow .sortilege-modificateur-select, +.potion-dialog .flexrow .sortilege-modificateur-select, +.invocation-dialog .flexrow .sortilege-modificateur-select { + width: 90px; + background: #3a1a08; + border: 1px solid #8b4513; + border-radius: 3px; + padding: 4px 8px; + color: #f0e8d8; + font-family: CentaurMT, serif; + text-align: center; + cursor: pointer; +} +.sortilege-dialog .flexrow .sortilege-modificateur-select option, +.potion-dialog .flexrow .sortilege-modificateur-select option, +.invocation-dialog .flexrow .sortilege-modificateur-select option { + background: #1a0e06; + color: #f0e8d8; +} +.sortilege-dialog .flexrow input[type="checkbox"], +.potion-dialog .flexrow input[type="checkbox"], +.invocation-dialog .flexrow input[type="checkbox"] { + width: 16px; + height: 16px; + flex-shrink: 0; + accent-color: #c0392b; +} +.mournblade-chat-result .sortilege-runes-summary { + margin-top: 8px; + border-top: 1px solid rgba(139, 69, 19, 0.3); + padding-top: 6px; +} +.mournblade-chat-result .sortilege-runes-summary .details-section-title { + font-weight: bold; + font-size: 0.85rem; + color: #4a0404; + margin-bottom: 4px; +} +.mournblade-chat-result .sortilege-runes-summary .details-section-title i { + margin-right: 4px; +} +.mournblade-chat-result .sortilege-runes-summary .sortilege-rune-detail { + align-items: center; + gap: 8px; + padding: 3px 0; + font-size: 0.82rem; + border-bottom: 1px solid rgba(0, 0, 0, 0.06); +} +.mournblade-chat-result .sortilege-runes-summary .sortilege-rune-detail .rune-mini-img { + width: 18px; + height: 18px; + border-radius: 2px; + flex-shrink: 0; +} +.mournblade-chat-result .sortilege-runes-summary .sortilege-rune-detail .rune-name { + flex: 1; + font-weight: bold; +} +.mournblade-chat-result .sortilege-runes-summary .sortilege-rune-detail .rune-formule { + font-style: italic; + color: #5a3a8a; + font-size: 0.8rem; + white-space: nowrap; +} +.mournblade-chat-result .sortilege-runes-summary .sortilege-rune-detail .rune-pts, +.mournblade-chat-result .sortilege-runes-summary .sortilege-rune-detail .rune-actions { + color: #666; + white-space: nowrap; +} +.mournblade-chat-result .sortilege-runes-summary .sortilege-rune-detail .rune-duree { + color: #4a2060; + font-style: italic; + white-space: nowrap; +} +.mournblade-chat-result .rune-formule { + font-style: italic; + color: #5a3a8a; +} /* ==================== Item Sheet Styles ==================== */ /* Item header with image and name */ .fvtt-mournblade.item { @@ -2386,6 +2952,159 @@ li { padding: 0.5rem; color: #000; } +/* ============================================= */ +/* Potion Item Sheet */ +/* ============================================= */ +.potion-content .potion-header-info { + display: flex; + flex-direction: column; + gap: 0.25rem; + padding: 0.5rem; + background: rgba(139, 0, 0, 0.08); + border-radius: 4px; + border: 1px solid rgba(139, 0, 0, 0.2); + margin-bottom: 0.5rem; +} +.potion-content .potion-statut-badge { + display: inline-flex; + align-items: center; + gap: 0.35rem; + padding: 0.2rem 0.6rem; + border-radius: 12px; + font-size: 0.85rem; + font-weight: bold; +} +.potion-content .potion-statut-badge.statut-efficace { + background: rgba(0, 128, 0, 0.15); + color: #155215; + border: 1px solid #4a904a; +} +.potion-content .potion-statut-badge.statut-heroique { + background: rgba(180, 120, 0, 0.15); + color: #7a5000; + border: 1px solid #c89000; +} +.potion-content .potion-statut-badge.statut-inefficace { + background: rgba(100, 100, 100, 0.15); + color: #555; + border: 1px solid #888; +} +.potion-content .potion-statut-badge.statut-poison { + background: rgba(100, 0, 100, 0.15); + color: #4a004a; + border: 1px solid #880088; +} +.potion-content .potion-statut-badge.statut-inconnue { + background: rgba(50, 50, 50, 0.1); + color: #666; + border: 1px solid #aaa; +} +/* Potion in chat */ +.potion-rune-info { + display: flex; + align-items: center; + gap: 0.5rem; + flex-wrap: wrap; + padding: 0.4rem; + background: rgba(0, 0, 0, 0.04); + border-radius: 4px; + margin-bottom: 0.35rem; +} +.potion-rune-info .potion-rune-name { + font-weight: bold; +} +.potion-rune-info .potion-rune-seuil { + font-size: 0.85rem; + color: #666; +} +.potion-rune-info .potion-haut-parler { + font-size: 0.85rem; + color: #555; + font-style: italic; +} +.potion-result-gm { + border: 1px dashed rgba(139, 0, 0, 0.4); + background: rgba(139, 0, 0, 0.05); + border-radius: 4px; + padding: 0.4rem; +} +.potion-result-gm .potion-result-title { + font-size: 0.95rem; + margin: 0 0 0.3rem; +} +.potion-result-gm .potion-heroique { + color: #8B6900; +} +.potion-result-gm .potion-efficace { + color: #155215; +} +.potion-result-gm .potion-inefficace { + color: #555; +} +.potion-result-gm .potion-poison { + color: #660066; +} +.potion-result-player { + font-style: italic; + color: #666; + font-size: 0.9rem; +} +/* Potion dialog */ +.potion-dialog .potion-dialog-section { + margin-bottom: 0.75rem; +} +.potion-dialog .potion-dialog-title { + font-size: 0.9rem; + font-weight: bold; + border-bottom: 1px solid rgba(0, 0, 0, 0.15); + padding-bottom: 0.2rem; + margin-bottom: 0.4rem; +} +.potion-dialog .potion-runes-table { + width: 100%; + font-size: 0.85rem; + border-collapse: collapse; + margin-bottom: 0.5rem; +} +.potion-dialog .potion-runes-table th, +.potion-dialog .potion-runes-table td { + padding: 0.2rem 0.4rem; + border-bottom: 1px solid rgba(0, 0, 0, 0.08); +} +.potion-dialog .potion-runes-table .potion-rune-row:hover { + background: rgba(0, 0, 0, 0.04); +} +.potion-dialog .potion-runes-table .potion-rune-radio { + cursor: pointer; +} +.potion-dialog .potion-runes-table .rune-mini-img { + width: 20px; + height: 20px; + vertical-align: middle; + margin-right: 4px; + border-radius: 2px; + border: 1px solid rgba(139, 69, 19, 0.5); + object-fit: cover; +} +.potion-dialog .potion-summary { + background: rgba(0, 0, 0, 0.05); + border-radius: 4px; + padding: 0.4rem 0.6rem; + font-size: 0.85rem; +} +.potion-dialog .potion-summary .summary-row { + margin-bottom: 0.2rem; +} +.potion-dialog .potion-summary .summary-label { + font-weight: bold; + min-width: 150px; +} +.potion-dialog .potion-info-note { + color: #888; + font-style: italic; + gap: 0.4rem; + align-items: center; +} /* ==================== Actor Sheet Styles ==================== */ .fvtt-mournblade.actor { background: url("../assets/ui/pc_sheet_bg.webp") repeat; @@ -3086,5 +3805,47 @@ li { .stat-group-alignment .alignment-info .info-label strong { color: #ffd700; } +/* ==================== Sortilège Launch Button ==================== */ +.fvtt-mournblade.sheet .header-actions { + display: flex; + align-items: center; + gap: 6px; + flex-wrap: wrap; + padding: 4px 0; +} +.fvtt-mournblade.sheet .header-actions .chat-card-button { + display: inline-flex; + align-items: center; + gap: 6px; + padding: 5px 12px; + background: linear-gradient(135deg, #6b1a1a 0%, #8b2222 50%, #6b1a1a 100%); + border: 1px solid #c0392b; + border-radius: 4px; + color: #f5e6d3; + font-family: CentaurMT, serif; + font-size: 0.9rem; + cursor: pointer; + text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.1); + transition: all 0.2s ease; + white-space: nowrap; +} +.fvtt-mournblade.sheet .header-actions .chat-card-button i { + color: #d4af37; +} +.fvtt-mournblade.sheet .header-actions .chat-card-button:hover { + background: linear-gradient(135deg, #8b2222 0%, #a52a2a 50%, #8b2222 100%); + border-color: #d4af37; + color: #fff; + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.15); +} +.fvtt-mournblade.sheet .header-actions .chat-card-button:hover i { + color: #ffd700; +} +.fvtt-mournblade.sheet .header-actions .chat-card-button:active { + background: linear-gradient(135deg, #5a1010 0%, #6b1a1a 50%, #5a1010 100%); + transform: translateY(1px); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4); +} /*# sourceMappingURL=mournblade.css.map */ /*# sourceMappingURL=mournblade.css.map */ diff --git a/styles/mournblade.css.map b/styles/mournblade.css.map index 4038ea1..6c02879 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 3ad9f6d..7d479ed 100644 --- a/system.json +++ b/system.json @@ -201,8 +201,11 @@ "color": "#00435c", "packs": [ "pnj-creatures", + "pouvoirs-elementaires", + "creatures-elementaires", "tables", - "scenes" + "scenes", + "journal-aide" ], "folders": [] } @@ -223,6 +226,18 @@ "ASSISTANT": "OWNER" } }, + { + "type": "Actor", + "label": "Elémentaires", + "name": "creatures-elementaires", + "path": "packs/creatures-elementaires/creatures-elementaires", + "system": "fvtt-mournblade", + "flags": {}, + "ownership": { + "PLAYER": "OBSERVER", + "ASSISTANT": "OWNER" + } + }, { "type": "Item", "label": "Compétences", @@ -235,6 +250,18 @@ "ASSISTANT": "OWNER" } }, + { + "type": "Item", + "label": "Pouvoirs Elémentaires", + "name": "pouvoirs-elementaires", + "path": "packs/pouvoirs-elementaires/pouvoirs-elementaires", + "system": "fvtt-mournblade", + "flags": {}, + "ownership": { + "PLAYER": "OBSERVER", + "ASSISTANT": "OWNER" + } + }, { "type": "Item", "label": "Compétences de Créatures", @@ -402,6 +429,18 @@ "PLAYER": "OBSERVER", "ASSISTANT": "OWNER" } + }, + { + "type": "JournalEntry", + "label": "Guide du Joueur", + "name": "journal-aide", + "path": "packs/journal-aide/journal-aide", + "system": "fvtt-mournblade", + "flags": {}, + "ownership": { + "PLAYER": "OBSERVER", + "ASSISTANT": "OWNER" + } } ], "primaryTokenAttribute": "sante.letaux", diff --git a/template.json b/template.json index bfe7ccb..e93e686 100644 --- a/template.json +++ b/template.json @@ -24,7 +24,8 @@ "runeeffect", "tendance", "traitchaotique", - "traitespece" + "traitespece", + "potion" ] } } \ No newline at end of file diff --git a/templates/actor-sheet.hbs b/templates/actor-sheet.hbs index 92985d4..a099dab 100644 --- a/templates/actor-sheet.hbs +++ b/templates/actor-sheet.hbs @@ -362,6 +362,11 @@ {{/each}} +
+ +
@@ -388,8 +393,49 @@ {{/each}} +
+ {{#if (gt runes.length 1)}} + + {{/if}} + {{#if (gt runes.length 0)}} + + {{/if}} +
+ {{!-- Invocations actives --}} + {{#if (gt system.invocationsElementaires.length 0)}} +
+

{{localize "MNBL.invocationsActives"}}

+ +
+ {{/if}} +

{{localize "MNBL.tendancies"}}

diff --git a/templates/chat-display-description.hbs b/templates/chat-display-description.hbs index b544268..1fa1da6 100644 --- a/templates/chat-display-description.hbs +++ b/templates/chat-display-description.hbs @@ -1,13 +1,24 @@ -
- {{#if actorImg}} - {{alias}} +
+ +
+ {{#if img}} + {{name}} + {{/if}} +
+

{{name}}

+ {{#if type}} + + {{type}} + + {{/if}} +
+
+ + {{#if system.description}} +
+ {{{system.description}}} +
{{/if}} -

{{name}}

-
- -
- -
- Description : {{{system.description}}} +
diff --git a/templates/chat-generic-result-v2.hbs b/templates/chat-generic-result-v2.hbs index 8f6174a..08e26eb 100644 --- a/templates/chat-generic-result-v2.hbs +++ b/templates/chat-generic-result-v2.hbs @@ -110,6 +110,12 @@ Rune: {{rune.name}}
+ {{#if rune.system.formule}} +
+ Haut-Parler: + {{rune.system.formule}} +
+ {{/if}}
Mode: {{runemode}} @@ -118,10 +124,16 @@ Points d'âme: {{runeame}}
- {{#if runeduree}} + {{#if dureeLabel}}
Durée: - {{runeduree}} tour{{#if (gt runeduree 1)}}s{{/if}} + {{dureeLabel}} +
+ {{/if}} + {{#if runeActionsComplexes}} +
+ Actions complexes: + {{runeActionsComplexes}}
{{/if}} {{/if}} @@ -171,10 +183,36 @@ {{#if rune}}
- La rune {{rune.name}} est activée pour {{runeduree}} tour{{#if (gt runeduree 1)}}s{{/if}}. + La rune {{rune.name}} est activée pour {{dureeLabel}}. + {{#if runeameCostReduit}} +
Réussite héroïque : coût d'âme réduit à {{runeameCostFinal}} points. + {{/if}} +
+
+
{{/if}}
+ {{else if isDramatique}} + {{#if rune}} +
+
+ Dé du Chaos : {{chaosDieResult}} +
+
+ {{#if (eq chaosEffet "desastre")}} + + {{else if (eq chaosEffet "echec_absolu")}} + + {{else}} + + {{/if}} + {{chaosEffetTexte}} +
+
+ {{/if}} {{else if (and (eq typeAttaque "fuir") (not isSuccess))}}
diff --git a/templates/chat-invocation-result.hbs b/templates/chat-invocation-result.hbs new file mode 100644 index 0000000..3156c70 --- /dev/null +++ b/templates/chat-invocation-result.hbs @@ -0,0 +1,120 @@ +
+ {{!-- Header --}} +
+ {{#if actorImg}} + {{alias}} + {{/if}} +
+

{{alias}}

+
+ Invocation Élémentaire +
+
+
+ + {{!-- 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 (GM only) --}} + {{#if isGM}} +
+
+ Formule : + {{diceFormula}} + Présence : + {{attr.value}} + Persuasion : + {{competence.system.niveau}} + {{#if bonusPacte}} + Bonus Pacte : + +{{bonusPacte}} + {{/if}} + Élément : + {{invocationElement}} + Puissance : + {{invocationTier}} + Coût Âme : + {{invocationSoulCost}} +
+
+ +
+

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

+ + {{#if isHeroique}} +

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.

+ {{/if}} + + {{#if elementaireCreated}} +

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

+ {{/if}} + +
+ 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.

+ {{else if isDramatique}} +

Quelque chose s'est terriblement mal passé…

+ {{else}} +

L'invocation a échoué.

+ {{/if}} +
+ {{/unless}} + +
diff --git a/templates/chat-potion-result.hbs b/templates/chat-potion-result.hbs new file mode 100644 index 0000000..5956ccd --- /dev/null +++ b/templates/chat-potion-result.hbs @@ -0,0 +1,124 @@ +
+ {{!-- Header --}} +
+ {{#if actorImg}} + {{alias}} + {{/if}} +
+

{{alias}}

+
+ Préparation de Potion +
+
+
+ + {{!-- Rune utilisée --}} +
+ {{#if runeImg}} + {{runeName}} + {{/if}} + {{runeName}} + Seuil : {{runeSeuil}} + {{#if runeHautParler}} + «{{runeHautParler}}» + {{/if}} +
+ + {{!-- 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}} + Clairvoyance : + {{attr.value}} + Savoir : Runes : + {{competence.system.niveau}} + {{#if limitHautParlerValue}} + Limite Haut-Parler : + {{limitHautParlerValue}} + {{/if}} + {{#if limitAlchimieValue}} + Limite Alchimie : + {{limitAlchimieValue}} + {{/if}} + 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 + {{else if isDramatique}} + POISON créé (Virulence {{virulence}}) — le personnage ne le sait pas + {{else if isSuccess}} + Potion efficace créée + {{else}} + Potion inefficace — le personnage le sait + {{/if}} +

+ {{#if potionCreated}} +

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

+ {{/if}} +
+ 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.

+
+ {{/unless}} + +
diff --git a/templates/chat-sortilege-result.hbs b/templates/chat-sortilege-result.hbs new file mode 100644 index 0000000..148bb17 --- /dev/null +++ b/templates/chat-sortilege-result.hbs @@ -0,0 +1,153 @@ +
+ {{!-- Header --}} +
+ {{#if actorImg}} + {{alias}} + {{/if}} +
+

{{alias}}

+
+ Sortilège +
+
+
+ + {{!-- Résultat principal --}} +
+
+
+ + {{diceResult}} +
+
+ Total + {{finalResult}} +
+ {{#if difficulte}} +
+ SD + {{difficulte}} +
+ {{/if}} +
+ + {{#if difficulte}} +
+ {{#if isHeroique}} +
+ HÉROÏQUE ! +
+ {{else if isDramatique}} +
+ DRAMATIQUE ! +
+ {{else if isSuccess}} +
+ Succès +
+ {{else}} +
+ Échec +
+ {{/if}} +
+ {{/if}} +
+ + {{#if isImpair}} +
+ {{localize "MNBL.oddresult"}} +
+ {{/if}} + + {{!-- Détails du sortilège --}} +
+
+
+ Formule : + {{diceFormula}} +
+
+ Mode : + {{runemode}} +
+
+ Points d'âme totaux : + {{runeame}} +
+
+ Actions complexes : + {{runeActionsComplexes}} +
+
+ + {{!-- Liste des runes du sortilège --}} +
+
Runes assemblées
+ {{#each sortilegeRunes as |rune|}} +
+ + {{rune.name}} + {{#if rune.formule}}« {{rune.formule}} »{{/if}} + {{rune.pts}} pts + {{rune.actionsComplexes}} ac. + {{rune.dureeLabel}} +
+ {{/each}} +
+
+ + {{!-- Effets --}} + {{#if isSuccess}} +
+ {{#each sortilegeRunes as |rune|}} +
+ + {{rune.name}} activée pour {{rune.dureeLabel}}. +
+ {{/each}} + {{#if runeameCostReduit}} +
+ Réussite héroïque : coût total réduit à {{runeameCostFinal}} points d'âme. +
+ {{/if}} +
+ {{#each sortilegeRunes as |rune|}} + + {{/each}} +
+
+ {{else if isDramatique}} + {{#if chaosDieResult}} +
+
+ Dé du Chaos : {{chaosDieResult}} +
+
+ {{#if (eq chaosEffet "desastre")}} + + {{else if (eq chaosEffet "echec_absolu")}} + + {{else}} + + {{/if}} + {{chaosEffetTexte}} +
+
+ {{/if}} + {{/if}} + + {{!-- Prédilections --}} + {{#each predilections as |pred key|}} + {{#if (not pred.used)}} +
+ +
+ {{/if}} + {{/each}} + +
diff --git a/templates/chat-welcome-message.hbs b/templates/chat-welcome-message.hbs index 72d0a5f..e03c0db 100644 --- a/templates/chat-welcome-message.hbs +++ b/templates/chat-welcome-message.hbs @@ -20,7 +20,20 @@
Droits : -

Mournblade est un jeu de rôle publié par Titam France/Sombres Projets. Tous les droits leur appartiennent.

+

Mournblade est un jeu de rôle publié par Titam France/Sombres + Projets. Tous les droits leur appartiennent.

+
+
+ +
+
+
+ Guide du Joueur : +

Consultez le guide intégré pour découvrir les fiches, les jets de + dés, le combat et la magie des runes. + @UUID[Compendium.fvtt-mournblade.journal-aide.JournalEntry.JurnlHelpGuide01]{Guide + du Joueur} +

@@ -29,8 +42,13 @@
Support & Communauté :

Système développé par LeRatierBretonnien

- - Discord FR de Foundry + + + Discord FR de Foundry
@@ -41,4 +59,4 @@ Que vos lames soient acérées et vos âmes fortes ! - + \ No newline at end of file diff --git a/templates/creature-sheet.hbs b/templates/creature-sheet.hbs index c185141..0d0ea2a 100644 --- a/templates/creature-sheet.hbs +++ b/templates/creature-sheet.hbs @@ -12,6 +12,18 @@ +
+ + + {{#if (eq system.biodata.creatureType "elementaire")}} + + + {{/if}} +
@@ -250,6 +262,32 @@ {{/if}} + +
+

{{localize "MNBL.capacites"}}

+ +
+ {{!-- Bio Tab --}} diff --git a/templates/dialog-invocation-elementaire.hbs b/templates/dialog-invocation-elementaire.hbs new file mode 100644 index 0000000..79e80ee --- /dev/null +++ b/templates/dialog-invocation-elementaire.hbs @@ -0,0 +1,89 @@ +
+ +
+ +
+ {{name}} + Âme disponible : {{ameDisponible}} +
+
+ +
+

Élément & Puissance

+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+ +
+
+ Seuil de difficulté : + 15 +
+
+ Coût total en Âme : + 15 +
+
+ Temps de concentration : + 1 tour +
+ {{#if bonusPacte}} +
+ + Bonus Pacte élémentaire : +5 sur les invocations liées à cet élément. +
+ {{/if}} + {{#if hautParlerNiveau}} +
+ Savoir : Haut-Parler : + {{hautParlerNiveau}} +
+ {{/if}} + {{#if seigneursElemNiveau}} +
+ Savoir : Seigneurs Élémentaires : + {{seigneursElemNiveau}} +
+ {{/if}} +
+ + Le jet sera effectué en secret par le MJ. +
+
+ +
diff --git a/templates/dialog-potion.hbs b/templates/dialog-potion.hbs new file mode 100644 index 0000000..a7d575f --- /dev/null +++ b/templates/dialog-potion.hbs @@ -0,0 +1,85 @@ +
+ +
+ +
+ {{name}} + Âme disponible : {{ameDisponible}} +
+
+ +
+

Sélectionner une Rune

+ + + + + + + + + + + {{#each runes as |rune|}} + + + + + + + {{/each}} + +
RuneSeuilFormule
+ + + + {{rune.name}} + {{rune.system.seuil}}{{rune.system.formule}}
+
+ +
+

Paramètres

+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+ +
+
+ Difficulté estimée : + +
+
+ Temps de préparation : + +
+
+ + Le jet sera effectué en secret par le MJ. +
+
+ +
diff --git a/templates/dialog-sortilege.hbs b/templates/dialog-sortilege.hbs new file mode 100644 index 0000000..f084d10 --- /dev/null +++ b/templates/dialog-sortilege.hbs @@ -0,0 +1,79 @@ +
+ +
+ +
+ {{name}} + Âme disponible : {{ameDisponible}} +
+
+ +
+ + +
+ + + + + + + + + + + + {{#each runes as |rune|}} + + + + + + + {{/each}} + +
RuneSeuilPoints d'âme
+ + + + {{rune.name}} + {{rune.system.seuil}} + +
+ +
+
+ Difficulté : + +
+
+ Points d'âme totaux : + 0 +
+
+ Actions complexes : + 0 +
+
+ +
+ + +
+ +
+ + +
+ +
diff --git a/templates/item-capacite-sheet.hbs b/templates/item-capacite-sheet.hbs index 3dd4f90..6656d10 100644 --- a/templates/item-capacite-sheet.hbs +++ b/templates/item-capacite-sheet.hbs @@ -7,6 +7,12 @@ {{> systems/fvtt-mournblade/templates/partial-item-description.hbs this}}
+
+ + +
diff --git a/templates/item-potion-sheet.hbs b/templates/item-potion-sheet.hbs new file mode 100644 index 0000000..314ba95 --- /dev/null +++ b/templates/item-potion-sheet.hbs @@ -0,0 +1,71 @@ +
+ + {{> systems/fvtt-mournblade/templates/partial-item-header.hbs this}} + + {{> systems/fvtt-mournblade/templates/partial-item-nav.hbs this}} + +
+ +
+ +
+
+

{{localize "MNBL.potionEffetCuratif"}}

+
+ {{editor system.effetCuratif target="system.effetCuratif" button=true owner=owner editable=editable}} +
+

{{localize "MNBL.potionEffetLetal"}}

+
+ {{editor system.effetLetal target="system.effetLetal" button=true owner=owner editable=editable}} +
+

{{localize "MNBL.potionEffetSecondaire"}}

+
+ {{editor system.effetSecondaire target="system.effetSecondaire" button=true owner=owner editable=editable}} +
+
+
+ + {{> systems/fvtt-mournblade/templates/partial-item-description.hbs this}} + +
diff --git a/templates/post-item.hbs b/templates/post-item.hbs index 8ce0f51..efb8b05 100644 --- a/templates/post-item.hbs +++ b/templates/post-item.hbs @@ -1,8 +1,113 @@ -
-

{{name}}

- {{#if img}} - +
+ + {{!-- Header --}} +
+ {{#if img}} + {{name}} + {{/if}} +
+

{{name}}

+ + {{typeLabel}} + +
+
+ + {{!-- Type-specific stats --}} + {{#if (eq type "arme")}} +
+ {{#if system.typearme}} +
Type{{system.typearme}}
+ {{/if}} + {{#if system.degats}} +
Dégâts{{system.degats}}
+ {{/if}} +
Bonus offensif{{system.bonusmaniementoff}}
+
Bonus défensif{{system.bonusmaniementdef}}
+ {{#if system.deuxmains}}
Deux mains
{{/if}} + {{#if system.ignorearmure}}
Ignore l'armure
{{/if}} + {{#if system.nonletaux}}
Non-létaux
{{/if}} + {{#if system.prix}}
Prix{{system.prix}}
{{/if}} +
+ + {{else if (eq type "bouclier")}} +
+
Bonus défense{{system.bonusdefense}}
+ {{#if system.degats}}
Dégâts{{system.degats}}
{{/if}} + {{#if system.nonletaux}}
Non-létaux
{{/if}} + {{#if system.prix}}
Prix{{system.prix}}
{{/if}} +
+ + {{else if (eq type "protection")}} +
+ {{#if system.typeprotection}}
Type{{system.typeprotection}}
{{/if}} +
Protection{{system.protection}}
+ {{#if system.degats}}
Dégâts encaissés{{system.degats}}
{{/if}} + {{#if system.prix}}
Prix{{system.prix}}
{{/if}} +
+ + {{else if (eq type "competence")}} +
+
Niveau{{system.niveau}}
+ {{#if system.attribut1}}
Attribut 1{{upper system.attribut1}}
{{/if}} + {{#if system.attribut2}}
Attribut 2{{upper system.attribut2}}
{{/if}} + {{#if system.attribut3}}
Attribut 3{{upper system.attribut3}}
{{/if}} + {{#if system.doublebonus}}
Double bonus
{{/if}} +
+ + {{else if (eq type "rune")}} +
+
Seuil{{system.seuil}}
+ {{#if system.formule}}
Formule{{system.formule}}
{{/if}} + {{#if system.prononcee}}
Prononcée{{system.prononcee}}
{{/if}} + {{#if system.tracee}}
Tracée{{system.tracee}}
{{/if}} +
+ + {{else if (eq type "runeeffect")}} +
+ {{#if system.rune}}
Rune{{system.rune}}
{{/if}} + {{#if system.mode}}
Mode{{system.mode}}
{{/if}} + {{#if system.duree}}
Durée{{system.duree}}
{{/if}} + {{#if system.pointame}}
Points d'âme{{system.pointame}}
{{/if}} +
+ + {{else if (eq type "don")}} +
+ {{#if system.allegeance}}
Allégeance{{system.allegeance}}
{{/if}} + {{#if system.prerequis}}
Prérequis{{system.prerequis}}
{{/if}} +
+ + {{else if (eq type "pacte")}} +
+ {{#if system.allegeance}}
Allégeance{{system.allegeance}}
{{/if}} +
+ + {{else if (eq type "tendance")}} +
+ {{#if system.allegeance}}
Allégeance{{system.allegeance}}
{{/if}} +
+ + {{else if (eq type "equipement")}} +
+ {{#if system.prix}}
Prix{{system.prix}}
{{/if}} + {{#if system.rarete}}
Rareté{{system.rarete}}
{{/if}} +
{{/if}} -

Description :

-

{{{system.description}}}

+ + {{!-- Description --}} + {{#if system.description}} +
Description
+
+ {{{system.description}}} +
+ {{/if}} + + {{!-- Sacrifice (dons) --}} + {{#if system.sacrifice}} +
Sacrifice
+
+ {{{system.sacrifice}}} +
+ {{/if}} +
diff --git a/templates/roll-dialog-generic.hbs b/templates/roll-dialog-generic.hbs index 81ffa89..938e909 100644 --- a/templates/roll-dialog-generic.hbs +++ b/templates/roll-dialog-generic.hbs @@ -62,6 +62,10 @@ {{selectOptions config.pointsAmeOptions selected=runeame}}
+
+ + +
{{/if}} {{#if arme}}
{{localize "MNBL.weapon"}} :