diff --git a/lang/en.json b/lang/en.json index cd258ea..cfc9162 100644 --- a/lang/en.json +++ b/lang/en.json @@ -223,6 +223,9 @@ "MNBL.potionHeroique": "Heroic", "MNBL.potionInefficace": "Ineffective", "MNBL.potionPoison": "Poison", + "MNBL.potions": "Potions", + "MNBL.potionStatut": "Status", + "MNBL.potionDuree": "Duration", "MNBL.preparePotion": "Prepare a Potion", "MNBL.capacites": "Capacities / Powers", "MNBL.capacite": "Capacity", @@ -230,6 +233,7 @@ "MNBL.typeCapaciteElue": "Chosen Power", "MNBL.typeCapaciteElementaire": "Elemental Power", "MNBL.typeCapaciteDemoniaque": "Demonic Power", + "MNBL.typeCapaciteAutomaton": "Automaton Ability", "MNBL.typeCapaciteCreature": "Creature Power", "MNBL.creatureTypeCreature": "Creature", "MNBL.creatureTypeDemon": "Demon", @@ -240,6 +244,37 @@ "MNBL.elementTypeEau": "Water", "MNBL.creatureType": "Creature Type", "MNBL.elementType": "Element", + "MNBL.demonType": "Demon Type", + "MNBL.demonPuissance": "Power Level", + "MNBL.demonTypeNone": "— Undefined —", + "MNBL.demonTypeCombat": "Combat Demon", + "MNBL.demonTypeDesir": "Desire Demon", + "MNBL.demonTypeSavoir": "Knowledge Demon", + "MNBL.demonTypeProtection": "Protection Demon", + "MNBL.demonTypeVoyage": "Travel Demon", + "MNBL.demonPuissanceNone": "— Undefined —", + "MNBL.demonPuissanceMineur": "Minor", + "MNBL.demonPuissanceMedian": "Median", + "MNBL.demonPuissanceMajeur": "Major", + "MNBL.creatureTypeAutomaton": "Automaton", + "MNBL.automatonType": "Automaton Type", + "MNBL.automatonPuissance": "Power Level", + "MNBL.automatonTypeNone": "— Undefined —", + "MNBL.automatonTypeCombat": "Combat", + "MNBL.automatonTypeVoyage": "Travel", + "MNBL.automatonTypePerception": "Perception", + "MNBL.automatonTypeRestauration": "Restoration", + "MNBL.automatonTypeReparateur": "Repairer", + "MNBL.automatonPuissanceNone": "— Undefined —", + "MNBL.automatonPuissanceMineur": "Minor", + "MNBL.automatonPuissanceMedian": "Median", + "MNBL.automatonPuissanceMajeur": "Major", + "MNBL.automatonVoyageType": "Travel Type", + "MNBL.automatonVoyageTypeNone": "— Undefined —", + "MNBL.automatonVoyageTypeTerrestre": "Terrestrial", + "MNBL.automatonVoyageTypeAquatique": "Aquatic", + "MNBL.automatonVoyageTypeAerien": "Aerial", + "MNBL.automatonVoyageTypeExtradimensionnel": "Extra-dimensional", "MNBL.invoquerElementaire": "Summon an Elemental", "MNBL.bannirElementaire": "Banish", "MNBL.invocationsActives": "Active Invocations", @@ -262,5 +297,26 @@ "MNBL.invocationConcentrationMineur": "1 round", "MNBL.invocationConcentrationMedian": "1 minute", "MNBL.invocationConcentrationMajeur": "1 hour", - "MNBL.invocationAmeBloque": "Blocked Soul" + "MNBL.invocationAmeBloque": "Blocked Soul", + + "MNBL.invoquerDemon": "Invoke a Demon", + "MNBL.invoquerEsprit": "Invoke a Law Spirit", + "MNBL.libererDemon": "Release", + "MNBL.invocationsDemons": "Active Demonic Invocations", + "MNBL.invocationDemonSeuil": "Difficulty Threshold", + "MNBL.invocationDemonAme": "Soul Spent", + "MNBL.invocationDemonCoercition": "Coercion", + "MNBL.invocationDemonLoiChaos": "Lore: Law & Chaos", + "MNBL.invocationDemonResultSucces": "The Demon is invoked!", + "MNBL.invocationDemonResultHeroique": "Heroic success! More favorable agreement.", + "MNBL.invocationDemonResultEchec": "Invocation failed. You lose half the Soul points spent.", + "MNBL.invocationDemonResultDramatique": "Dramatic failure! All Soul points are lost.", + + "MNBL.enchantementLoi": "Law Enchantment", + "MNBL.enchanter": "Enchant", + "MNBL.enchantementActif": "Enchanted", + "MNBL.enchantementBonus": "Bonus", + "MNBL.enchantementAntiChaos": "Anti-Chaos", + "MNBL.enchantementStandard": "Standard (skill bonus)", + "MNBL.enchantementTypeAntiChaos": "Anti-Chaos (luminous aura)" } \ No newline at end of file diff --git a/lang/fr.json b/lang/fr.json index 48abc50..ef1682b 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -22,7 +22,8 @@ "runeeffect": "Effet de Rune", "bouclier": "Bouclier", "modifier": "Modificateur", - "traitespece": "Trait d'Espèce" + "traitespece": "Trait d'Espèce", + "potion": "Potion" } }, "Adresse": "Adresse", @@ -232,6 +233,9 @@ "MNBL.potionHeroique": "Héroïque", "MNBL.potionInefficace": "Inefficace", "MNBL.potionPoison": "Poison", + "MNBL.potions": "Potions", + "MNBL.potionStatut": "Statut", + "MNBL.potionDuree": "Durée", "MNBL.preparePotion": "Préparer une Potion", "MNBL.capacites": "Capacités / Pouvoirs", "MNBL.capacite": "Capacité", @@ -239,6 +243,7 @@ "MNBL.typeCapaciteElue": "Pouvoir Élue", "MNBL.typeCapaciteElementaire": "Pouvoir Élémentaire", "MNBL.typeCapaciteDemoniaque": "Pouvoir Démoniaque", + "MNBL.typeCapaciteAutomaton": "Capacité Automaton", "MNBL.typeCapaciteCreature": "Pouvoir Créature", "MNBL.creatureTypeCreature": "Créature", "MNBL.creatureTypeDemon": "Démon", @@ -249,6 +254,37 @@ "MNBL.elementTypeEau": "Eau", "MNBL.creatureType": "Type de créature", "MNBL.elementType": "Élément", + "MNBL.demonType": "Type de Démon", + "MNBL.demonPuissance": "Puissance", + "MNBL.demonTypeNone": "— Non défini —", + "MNBL.demonTypeCombat": "Démon de Combat", + "MNBL.demonTypeDesir": "Démon du Désir", + "MNBL.demonTypeSavoir": "Démon du Savoir", + "MNBL.demonTypeProtection": "Démon de Protection", + "MNBL.demonTypeVoyage": "Démon du Voyage", + "MNBL.demonPuissanceNone": "— Non défini —", + "MNBL.demonPuissanceMineur": "Mineur", + "MNBL.demonPuissanceMedian": "Médian", + "MNBL.demonPuissanceMajeur": "Majeur", + "MNBL.creatureTypeAutomaton": "Automaton", + "MNBL.automatonType": "Type d'Automaton", + "MNBL.automatonPuissance": "Puissance", + "MNBL.automatonTypeNone": "— Non défini —", + "MNBL.automatonTypeCombat": "Combat", + "MNBL.automatonTypeVoyage": "Voyage", + "MNBL.automatonTypePerception": "Perception", + "MNBL.automatonTypeRestauration": "Restauration", + "MNBL.automatonTypeReparateur": "Réparateur", + "MNBL.automatonPuissanceNone": "— Non défini —", + "MNBL.automatonPuissanceMineur": "Mineur", + "MNBL.automatonPuissanceMedian": "Médian", + "MNBL.automatonPuissanceMajeur": "Majeur", + "MNBL.automatonVoyageType": "Type de voyage", + "MNBL.automatonVoyageTypeNone": "— Non défini —", + "MNBL.automatonVoyageTypeTerrestre": "Terrestre", + "MNBL.automatonVoyageTypeAquatique": "Aquatique", + "MNBL.automatonVoyageTypeAerien": "Aérien", + "MNBL.automatonVoyageTypeExtradimensionnel": "Extra-dimensionnel", "MNBL.invoquerElementaire": "Invoquer un Élémentaire", "MNBL.bannirElementaire": "Bannir", "MNBL.invocationsActives": "Invocations actives", @@ -271,5 +307,26 @@ "MNBL.invocationConcentrationMineur": "1 tour", "MNBL.invocationConcentrationMedian": "1 minute", "MNBL.invocationConcentrationMajeur": "1 heure", - "MNBL.invocationAmeBloque": "Âme bloquée" + "MNBL.invocationAmeBloque": "Âme bloquée", + + "MNBL.invoquerDemon": "Invoquer un Démon", + "MNBL.invoquerEsprit": "Invoquer un Esprit de la Loi", + "MNBL.libererDemon": "Libérer", + "MNBL.invocationsDemons": "Invocations démoniaques actives", + "MNBL.invocationDemonSeuil": "Seuil de difficulté", + "MNBL.invocationDemonAme": "Âme dépensée", + "MNBL.invocationDemonCoercition": "Coercition", + "MNBL.invocationDemonLoiChaos": "Savoir : Loi & Chaos", + "MNBL.invocationDemonResultSucces": "Le Démon est invoqué !", + "MNBL.invocationDemonResultHeroique": "Réussite héroïque ! Accord plus favorable.", + "MNBL.invocationDemonResultEchec": "L'invocation a échoué. Vous perdez la moitié des points d'Âme dépensés.", + "MNBL.invocationDemonResultDramatique": "Échec dramatique ! Tous les points d'Âme sont perdus.", + + "MNBL.enchantementLoi": "Enchantement de la Loi", + "MNBL.enchanter": "Enchanter", + "MNBL.enchantementActif": "Enchanté", + "MNBL.enchantementBonus": "Bonus", + "MNBL.enchantementAntiChaos": "Anti-Chaos", + "MNBL.enchantementStandard": "Standard (bonus de compétence)", + "MNBL.enchantementTypeAntiChaos": "Anti-Chaos (aura lumineuse)" } \ No newline at end of file diff --git a/less/actor-styles.less b/less/actor-styles.less index 93e5ed1..4206fb2 100644 --- a/less/actor-styles.less +++ b/less/actor-styles.less @@ -343,8 +343,8 @@ } .item-controls-fixed { - min-width: 3.2rem; - max-width: 3.2rem; + min-width: 5rem; + max-width: 5rem; } // Couleurs pour les labels et textes dans les onglets @@ -917,3 +917,34 @@ } } } + +// Chat potion result — rune mini image and haut-parler styling +.mournblade-chat-result { + .detail-row { + .rune-mini-img { + width: 18px; + height: 18px; + border-radius: 2px; + object-fit: cover; + flex-shrink: 0; + border: 1px solid rgba(139, 69, 19, 0.4); + vertical-align: middle; + margin-right: 4px; + } + + .potion-haut-parler { + font-style: italic; + color: #5a3a8a; + } + } +} + +// Post-item card: danger divider variant (for létal effects) +.mournblade-item-card { + .item-card-divider--danger { + color: #8b0000; + &::before, &::after { + background: linear-gradient(90deg, transparent, #8b0000, transparent); + } + } +} diff --git a/less/item-styles.less b/less/item-styles.less index a162e1e..b55f827 100644 --- a/less/item-styles.less +++ b/less/item-styles.less @@ -440,3 +440,41 @@ align-items: center; } } + +/* Enchantement de la Loi */ +.enchantement-section { + margin-top: 0.6rem; + padding: 0.5rem 0.6rem; + background: rgba(255, 215, 0, 0.05); + border: 1px solid rgba(255, 215, 0, 0.3); + border-radius: 4px; + + .section-title-small { + font-size: 0.9rem; + margin: 0 0 0.4rem 0; + color: #a07800; + font-weight: bold; + display: flex; + align-items: center; + gap: 0.3rem; + border-bottom: 1px solid rgba(255, 215, 0, 0.2); + padding-bottom: 0.2rem; + } + + .enchant-badge { + display: inline-block; + background: gold; + color: #333; + font-size: 0.7rem; + padding: 0.1rem 0.4rem; + border-radius: 8px; + margin-left: 0.5rem; + } + + .enchant-none { + color: #888; + font-size: 0.85rem; + margin: 0; + padding: 0.2rem 0; + } +} diff --git a/less/simple-converted.less b/less/simple-converted.less index ec21963..657fbcf 100644 --- a/less/simple-converted.less +++ b/less/simple-converted.less @@ -2418,6 +2418,25 @@ &:last-child { margin-bottom: 0; } + + &.next-steps { + background: rgba(200, 220, 255, 0.5); + border-left-color: #2255aa; + + ol { + margin: 6px 0 0 0; + padding-left: 18px; + + li { + margin-bottom: 4px; + font-size: 0.82rem; + } + } + + i { + color: #2255aa; + } + } } .damage-buttons { @@ -2916,6 +2935,219 @@ accent-color: #c0392b; } } + + // ---- Invocation démon specific ---- + + .actor-header { + display: flex; + align-items: center; + gap: 10px; + margin-bottom: 10px; + padding: 6px 10px; + background: linear-gradient(135deg, #1a0030 0%, #3a0060 100%); + border: 1px solid #6a008a; + border-radius: 4px; + + .actor-portrait { + width: 44px; + height: 44px; + border-radius: 4px; + border: 2px solid #9900cc; + object-fit: cover; + flex-shrink: 0; + } + h3 { + font-weight: bold; + font-size: 1.05rem; + color: #ffffff; + text-shadow: 0 1px 3px rgba(0,0,0,0.9); + margin: 0; + } + .dialog-subtitle { + font-size: 0.85rem; + color: #ddb0ff; + i { margin-right: 4px; } + } + .actor-info { display: flex; flex-direction: column; gap: 2px; } + } + + .invoc-warning-box { + background: rgba(180, 20, 20, 0.15); + border: 1px solid #8b0000; + border-left: 4px solid #c0392b; + border-radius: 4px; + padding: 7px 10px; + margin-bottom: 8px; + font-size: 0.85rem; + color: #6a0000; + i { margin-right: 6px; color: #c0392b; } + strong { color: #8b0000; } + div { margin-top: 3px; } + } + + .invoc-comp-summary { + display: flex; + flex-wrap: wrap; + gap: 6px; + margin-bottom: 10px; + + .comp-badge { + background: rgba(60, 20, 80, 0.12); + border: 1px solid rgba(120, 40, 160, 0.4); + border-radius: 12px; + padding: 3px 10px; + font-size: 0.82rem; + color: #3a0060; + + &.comp-missing { + background: rgba(120, 0, 0, 0.08); + border-color: rgba(180, 0, 0, 0.3); + color: #800000; + em { font-style: italic; opacity: 0.7; } + } + strong { color: #2a004a; font-weight: bold; } + } + } + + .invoc-seuil-calculator { + background: rgba(60, 10, 80, 0.07); + border: 1px solid rgba(120, 40, 160, 0.35); + border-radius: 5px; + padding: 10px 12px; + margin-bottom: 10px; + + .invoc-section-title { + font-size: 0.88rem; + font-weight: bold; + color: #3a0060; + margin: 0 0 8px 0; + text-transform: uppercase; + letter-spacing: 0.5px; + i { margin-right: 5px; } + } + + .invoc-criteria-grid { + display: grid; + grid-template-columns: 1fr auto; + gap: 5px 10px; + align-items: center; + margin-bottom: 10px; + + label { + font-size: 0.83rem; + color: #3a1a0a; + font-weight: bold; + padding: 1px 0; + } + + select, input[type="number"] { + background: #3a1a08; + border: 1px solid #8b4513; + border-radius: 3px; + padding: 4px 24px 4px 8px; + color: #f0e8d8; + font-family: CentaurMT, serif; + font-size: 0.83rem; + cursor: pointer; + min-width: 200px; + appearance: none; + -webkit-appearance: none; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='7' viewBox='0 0 10 7'%3E%3Cpath fill='%23ffd070' d='M5 7L0 0h10z'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: right 7px center; + background-size: 9px 6px; + option { background: #1a0e06; color: #f0e8d8; } + } + + input[type="number"] { + min-width: 80px; + max-width: 80px; + text-align: center; + background-image: none; + padding: 4px 8px; + } + } + + .invoc-seuil-total-row { + display: flex; + align-items: center; + gap: 10px; + padding: 6px 8px; + background: linear-gradient(135deg, #2a005a 0%, #4a0080 100%); + border: 1px solid #9900cc; + border-radius: 4px; + + .invoc-seuil-label { + flex: 1; + font-weight: bold; + font-size: 0.9rem; + color: #ddb0ff; + } + + .invoc-seuil-total { + font-size: 1.3rem; + font-weight: bold; + color: #ffd700; + text-shadow: 0 0 8px rgba(255, 200, 0, 0.6); + min-width: 32px; + text-align: center; + } + } + } + + .invoc-form-grid { + display: flex; + flex-direction: column; + gap: 5px; + + .invoc-field { + display: flex; + align-items: center; + gap: 8px; + padding: 4px 6px; + border-bottom: 1px solid rgba(139, 69, 19, 0.2); + + label { + flex: 1; + font-weight: bold; + font-size: 0.87rem; + color: #3a1a0a; + } + + .invoc-value-highlight { + font-size: 1.1rem; + font-weight: bold; + color: #6a0080; + min-width: 30px; + text-align: center; + } + + .invoc-hint { + font-size: 0.78rem; + color: #5a3a0a; + font-style: italic; + strong { color: #8b0000; font-weight: bold; } + } + + select { + background: #3a1a08; + border: 1px solid #8b4513; + border-radius: 3px; + padding: 4px 24px 4px 8px; + color: #f0e8d8; + font-family: CentaurMT, serif; + font-size: 0.85rem; + cursor: pointer; + appearance: none; + -webkit-appearance: none; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='7' viewBox='0 0 10 7'%3E%3Cpath fill='%23ffd070' d='M5 7L0 0h10z'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: right 7px center; + background-size: 9px 6px; + option { background: #1a0e06; color: #f0e8d8; } + } + } + } } // ===================================================== diff --git a/modules/applications/mournblade-enchantement-dialog.mjs b/modules/applications/mournblade-enchantement-dialog.mjs new file mode 100644 index 0000000..3a830f5 --- /dev/null +++ b/modules/applications/mournblade-enchantement-dialog.mjs @@ -0,0 +1,157 @@ +import { MournbladeUtility } from "../mournblade-utility.js" + +export default class MournbladeEnchantementDialog { + + static _normalize(str) { + return (str ?? "") + .toLowerCase() + .replace(/œ/g, "oe") + .replace(/æ/g, "ae") + .normalize("NFD") + .replace(/[\u0300-\u036f]/g, "") + .replace(/[^a-z0-9]+/g, " ") + .trim() + } + + static _findCompetence(actor, ...keywords) { + const normKeys = keywords.map(k => MournbladeEnchantementDialog._normalize(k)) + return actor.items.find(item => { + if (item.type !== "competence") return false + const norm = MournbladeEnchantementDialog._normalize(item.name) + return normKeys.every(k => norm.includes(k)) + }) ?? null + } + + static async create(actor, item) { + const normalize = MournbladeEnchantementDialog._normalize.bind(MournbladeEnchantementDialog) + const findComp = (...kw) => MournbladeEnchantementDialog._findCompetence(actor, ...kw) + + const ameDisponible = Math.max(0, (actor.system.ame.currentmax - actor.system.ame.value)) + const aspect = actor.system.balance.aspect ?? 0 + + // Skill lookups + const savoirRunesComp = findComp("rune") + const hautParlerComp = findComp("haut", "parler") + const artisanatComp = findComp("savoir", "artisanat") + const claAttr = actor.system.attributs?.clairvoyance + + // Prerequisite: Rune de la Loi in inventory + const hasRuneLoi = actor.items.some(i => { + if (i.type !== "rune") return false + return normalize(i.name).includes("loi") + }) + + const savoirRunesNiveau = savoirRunesComp ? (savoirRunesComp.system.niveau ?? 0) : null + const hautParlerNiveau = hautParlerComp ? (hautParlerComp.system.niveau ?? 0) : null + const artisanatNiveau = artisanatComp ? (artisanatComp.system.niveau ?? 0) : null + const claValeur = claAttr ? (claAttr.value ?? 0) : 0 + + // Limit: CLA + Savoir:Runes is capped by min(Haut-Parler, Artisanat) if those skills exist + const limiteur = (hautParlerNiveau !== null && artisanatNiveau !== null) + ? Math.min(hautParlerNiveau, artisanatNiveau) + : (hautParlerNiveau ?? artisanatNiveau ?? null) + + const context = { + actorImg: actor.img, + actorName: actor.name, + itemImg: item.img, + itemName: item.name, + itemType: item.type, + itemId: item.id, + ameDisponible, + aspect, + hasRuneLoi, + savoirRunesNiveau, + hautParlerNiveau, + artisanatNiveau, + claValeur, + limiteur, + modOptions: Array.from({ length: 21 }, (_, i) => i - 10), + enchantementActif: item.system.enchantementLoi?.actif ?? false, + enchantementBonus: item.system.enchantementLoi?.bonus ?? 0, + enchantementAntiChaos: item.system.enchantementLoi?.antiChaos ?? false, + } + + const prerequisOk = hasRuneLoi + + const content = await foundry.applications.handlebars.renderTemplate( + "systems/fvtt-mournblade/templates/dialog-enchantement.hbs", + context + ) + + Hooks.once("renderDialogV2", (_app, html) => { + const form = html.querySelector ? html : html[0] + MournbladeEnchantementDialog._attachListeners(form, ameDisponible, claValeur, savoirRunesNiveau, limiteur, prerequisOk) + }) + + return foundry.applications.api.DialogV2.wait({ + window: { title: `Enchanter : ${item.name}`, icon: "fa-solid fa-star" }, + classes: ["mournblade-roll-dialog"], + position: { width: 520 }, + modal: false, + content, + buttons: [ + { + action: "enchanter", + label: "Enchanter", + icon: "fa-solid fa-star", + default: true, + callback: (event, button, dialog) => { + const elems = button.form.elements + const ptsAme = parseInt(elems["ptsAme"]?.value ?? 5) || 5 + const antiChaos = elems["antiChaos"]?.value === "true" + const modificateur = parseInt(elems["modificateur"]?.value ?? 0) || 0 + MournbladeUtility.rollEnchantement({ + actor, + item, + ptsAme, + antiChaos, + modificateur, + savoirRunesComp, + hautParlerComp, + artisanatComp, + claValeur, + limiteur, + }) + } + }, + ], + rejectClose: false, + }) + } + + static _attachListeners(html, ameDisponible, claValeur, savoirRunesNiveau, limiteur, prerequisOk = true) { + const enchanterBtn = html.querySelector('button[data-action="enchanter"]') + if (enchanterBtn) enchanterBtn.disabled = !prerequisOk + + const diffEl = html.querySelector('#enchant-difficulte') + const bonusEl = html.querySelector('#enchant-bonus-preview') + const warnAmeEl = html.querySelector('#enchant-ame-warn') + const warnLimitEl = html.querySelector('#enchant-limit-warn') + const totalEl = html.querySelector('#enchant-total-dice') + + const recalculate = () => { + const ptsAme = parseInt(html.querySelector('[name="ptsAme"]')?.value ?? 5) || 0 + const difficulte = ptsAme + const bonus = Math.floor(ptsAme / 5) + const savoir = savoirRunesNiveau ?? 0 + const basePool = claValeur + savoir + const effectivePool = limiteur !== null ? Math.min(basePool, limiteur) : basePool + + if (diffEl) diffEl.textContent = difficulte + if (bonusEl) bonusEl.textContent = `+${bonus}` + if (totalEl) totalEl.textContent = effectivePool + + if (warnAmeEl) warnAmeEl.style.display = ptsAme > ameDisponible ? "" : "none" + if (warnLimitEl && limiteur !== null) + warnLimitEl.style.display = basePool > limiteur ? "" : "none" + } + + const ptsAmeEl = html.querySelector('[name="ptsAme"]') + if (ptsAmeEl) { + ptsAmeEl.addEventListener('input', recalculate) + ptsAmeEl.addEventListener('change', recalculate) + } + recalculate() + } +} diff --git a/modules/applications/mournblade-invocation-demon-dialog.mjs b/modules/applications/mournblade-invocation-demon-dialog.mjs new file mode 100644 index 0000000..92b632c --- /dev/null +++ b/modules/applications/mournblade-invocation-demon-dialog.mjs @@ -0,0 +1,174 @@ +import { MournbladeUtility } from "../mournblade-utility.js" + +export default class MournbladeInvocationDemonDialog { + + /** + * Normalize a string for fuzzy matching: lowercase, remove diacritics, + * replace œ/æ ligatures, collapse whitespace and punctuation. + */ + static _normalize(str) { + return (str ?? "") + .toLowerCase() + .replace(/œ/g, "oe") + .replace(/æ/g, "ae") + .normalize("NFD") + .replace(/[\u0300-\u036f]/g, "") // strip combining diacritics + .replace(/[^a-z0-9]+/g, " ") // replace any non-alnum with space + .trim() + } + + /** + * Returns the first competence item whose name contains all of the given keywords. + * Keywords are normalized before comparison. + */ + static _findCompetence(actor, ...keywords) { + const normKeys = keywords.map(k => MournbladeInvocationDemonDialog._normalize(k)) + return actor.items.find(item => { + if (item.type !== "competence") return false + const norm = MournbladeInvocationDemonDialog._normalize(item.name) + return normKeys.every(k => norm.includes(k)) + }) ?? null + } + + /** + * Returns true if the actor has a capacite or don whose name contains all given keywords. + */ + static _hasCapacite(actor, ...keywords) { + const normKeys = keywords.map(k => MournbladeInvocationDemonDialog._normalize(k)) + return actor.items.some(item => { + if (item.type !== "capacite" && item.type !== "don") return false + const norm = MournbladeInvocationDemonDialog._normalize(item.name) + return normKeys.every(k => norm.includes(k)) + }) + } + + static async create(actor, rollData) { + const ameDisponible = Math.max(0, (actor.system.ame.currentmax - actor.system.ame.value)) + + // Robust skill detection: partial keyword matching, diacritic-insensitive + const coercitionComp = MournbladeInvocationDemonDialog._findCompetence(actor, "coercition") + const hautParlerComp = MournbladeInvocationDemonDialog._findCompetence(actor, "haut", "parler") + const loiChaosComp = MournbladeInvocationDemonDialog._findCompetence(actor, "loi", "chaos") + + // Check prerequisites — robust capacite/rune detection + const isChaotique = actor.system.balance.chaos > actor.system.balance.loi + const hasOeilSorcier = MournbladeInvocationDemonDialog._hasCapacite(actor, "oeil", "sorcier") + const hasRuneChaos = actor.items.some(i => { + if (i.type !== "rune") return false + return MournbladeInvocationDemonDialog._normalize(i.name).includes("chaos") + }) + const prerequisOk = isChaotique && hasOeilSorcier && hasRuneChaos + + // Auto-detect chaos link bonuses + const aspectGe8 = (actor.system.balance.aspect ?? 0) >= 8 + // hasPacte: true if actor has a Pacte item whose associated deity matches a demon + // (simplified: just expose it as a selectable option — can't auto-detect) + const hasPacte = false + + const context = { + ...rollData, + img: actor.img, + name: actor.name, + ameDisponible, + modOptions: Array.from({ length: 21 }, (_, i) => i - 10), + coercitionNiveau: coercitionComp ? coercitionComp.system.niveau : null, + hautParlerNiveau: hautParlerComp ? hautParlerComp.system.niveau : null, + loiChaosNiveau: loiChaosComp ? loiChaosComp.system.niveau : null, + isChaotique, + hasOeilSorcier, + hasRuneChaos, + prerequisOk, + aspectGe8, + hasPacte, + } + + const content = await foundry.applications.handlebars.renderTemplate( + "systems/fvtt-mournblade/templates/dialog-invocation-demon.hbs", + context + ) + + Hooks.once("renderDialogV2", (_app, html) => { + const form = html.querySelector ? html : html[0] + MournbladeInvocationDemonDialog._attachListeners(form, ameDisponible, prerequisOk) + }) + + return foundry.applications.api.DialogV2.wait({ + window: { title: "Invoquer un Démon", icon: "fa-solid fa-skull" }, + classes: ["mournblade-roll-dialog"], + position: { width: 560 }, + modal: false, + content, + buttons: [ + { + action: "invoquer", + label: "Invoquer", + icon: "fa-solid fa-skull", + default: true, + callback: (event, button, dialog) => { + MournbladeInvocationDemonDialog._updateRollData(rollData, button.form.elements, actor, { + coercitionComp, hautParlerComp, loiChaosComp + }) + MournbladeUtility.rollInvocationDemon(rollData) + } + }, + ], + rejectClose: false, + }) + } + + static _calculateSeuil(html) { + const get = (name) => parseInt(html.querySelector(`[name="${name}"]`)?.value ?? 0) || 0 + const seuil = get("seuil_nature") + + get("seuil_traits") + + get("seuil_augmentation") + + get("seuil_service") + + get("seuil_duree") + + get("seuil_marche") + + get("seuil_chaos") + + get("seuil_sacrifice") + return Math.max(1, seuil) + } + + static _attachListeners(html, ameDisponible, prerequisOk = true) { + const invoquerBtn = html.querySelector('button[data-action="invoquer"]') + if (invoquerBtn) invoquerBtn.disabled = !prerequisOk + + const coutEl = html.querySelector('#invoc-demon-cout') + const totalEl = html.querySelector('#invoc-demon-seuil-total') + const hiddenEl = html.querySelector('#invoc-demon-seuil-hidden') + const warnEl = html.querySelector('#invoc-demon-ame-warn') + + const criteriaNames = [ + "seuil_nature", "seuil_traits", "seuil_augmentation", + "seuil_service", "seuil_duree", "seuil_marche", + "seuil_chaos", "seuil_sacrifice" + ] + + const recalculate = () => { + const seuil = MournbladeInvocationDemonDialog._calculateSeuil(html) + if (totalEl) totalEl.textContent = seuil + if (hiddenEl) hiddenEl.value = seuil + if (coutEl) coutEl.textContent = seuil + if (warnEl) warnEl.style.display = seuil > ameDisponible ? "" : "none" + } + + for (const name of criteriaNames) { + const el = html.querySelector(`[name="${name}"]`) + if (el) el.addEventListener('change', recalculate) + if (el && el.type === 'number') el.addEventListener('input', recalculate) + } + + recalculate() + } + + static _updateRollData(rollData, formElements, actor, { coercitionComp }) { + const seuil = parseInt(formElements['seuil']?.value ?? 5) + const modificateur = parseInt(formElements['modificateur']?.value ?? 0) + + rollData.invocationSeuil = seuil + rollData.invocationSoulCost = seuil + rollData.difficulte = seuil + rollData.modificateur = modificateur + rollData.competence = coercitionComp ?? null + } +} diff --git a/modules/applications/mournblade-invocation-dialog.mjs b/modules/applications/mournblade-invocation-dialog.mjs index 7a79327..118e550 100644 --- a/modules/applications/mournblade-invocation-dialog.mjs +++ b/modules/applications/mournblade-invocation-dialog.mjs @@ -2,6 +2,33 @@ import { MournbladeUtility } from "../mournblade-utility.js" export default class MournbladeInvocationDialog { + /** + * Normalize a string for fuzzy matching: lowercase, remove diacritics, + * replace œ/æ ligatures, collapse whitespace and punctuation. + */ + static _normalize(str) { + return (str ?? "") + .toLowerCase() + .replace(/œ/g, "oe") + .replace(/æ/g, "ae") + .normalize("NFD") + .replace(/[\u0300-\u036f]/g, "") + .replace(/[^a-z0-9]+/g, " ") + .trim() + } + + /** + * Returns the first competence item whose name contains all of the given keywords. + */ + static _findCompetence(actor, ...keywords) { + const normKeys = keywords.map(k => MournbladeInvocationDialog._normalize(k)) + return actor.items.find(item => { + if (item.type !== "competence") return false + const norm = MournbladeInvocationDialog._normalize(item.name) + return normKeys.every(k => norm.includes(k)) + }) ?? null + } + static async create(actor, rollData) { const ameDisponible = Math.max(0, (actor.system.ame.currentmax - actor.system.ame.value)) const maxExtra = Math.max(0, ameDisponible - 15) @@ -14,8 +41,9 @@ export default class MournbladeInvocationDialog { allegeance: (p.system.allegeance || "").toLowerCase() })) - const hautParlerComp = actor.items.find(c => c.type == "competence" && c.name.toLowerCase() == "savoir : haut-parler") - const seigneursElemComp = actor.items.find(c => c.type == "competence" && c.name.toLowerCase() == "savoir : seigneurs élémentaires") + // Robust skill detection: partial keyword matching, diacritic-insensitive + const hautParlerComp = MournbladeInvocationDialog._findCompetence(actor, "haut", "parler") + const seigneursElemComp = MournbladeInvocationDialog._findCompetence(actor, "seigneurs", "elementaires") const context = { ...rollData, diff --git a/modules/applications/mournblade-invocation-esprit-dialog.mjs b/modules/applications/mournblade-invocation-esprit-dialog.mjs new file mode 100644 index 0000000..d3fa77b --- /dev/null +++ b/modules/applications/mournblade-invocation-esprit-dialog.mjs @@ -0,0 +1,138 @@ +import { MournbladeUtility } from "../mournblade-utility.js" + +export default class MournbladeInvocationEspritDialog { + + static _normalize(str) { + return (str ?? "") + .toLowerCase() + .replace(/œ/g, "oe").replace(/æ/g, "ae") + .normalize("NFD").replace(/[\u0300-\u036f]/g, "") + .replace(/[^a-z0-9]+/g, " ").trim() + } + + static _findCompetence(actor, ...keywords) { + const normKeys = keywords.map(k => MournbladeInvocationEspritDialog._normalize(k)) + return actor.items.find(item => { + if (item.type !== "competence") return false + const norm = MournbladeInvocationEspritDialog._normalize(item.name) + return normKeys.every(k => norm.includes(k)) + }) ?? null + } + + /** Seuil and soul cost per puissance */ + static SEUILS = { mineur: 15, median: 20, majeur: 25 } + + static async create(actor, rollData) { + const ameDisponible = Math.max(0, actor.system.ame.currentmax - actor.system.ame.value) + + const persuasionComp = MournbladeInvocationEspritDialog._findCompetence(actor, "persuasion") + const hautParlerComp = MournbladeInvocationEspritDialog._findCompetence(actor, "haut", "parler") + const loiChaosComp = MournbladeInvocationEspritDialog._findCompetence(actor, "loi", "chaos") + + const isLoyal = actor.system.balance.loi > actor.system.balance.chaos + const hasRuneLoi = actor.items.some(i => + i.type === "rune" && MournbladeInvocationEspritDialog._normalize(i.name).includes("loi") + ) + const prerequisOk = isLoyal && hasRuneLoi + + const automatonTypes = { + combat: "Combat", + voyage: "Voyage", + perception: "Perception", + restauration:"Restauration", + reparateur: "Réparateur", + } + + const context = { + ...rollData, + img: actor.img, + name: actor.name, + ameDisponible, + treValeur: actor.system.attributs?.tre?.value ?? 0, + persuasionNiveau: persuasionComp?.system?.niveau ?? null, + hautParlerNiveau: hautParlerComp?.system?.niveau ?? null, + loiChaosNiveau: loiChaosComp?.system?.niveau ?? null, + isLoyal, + hasRuneLoi, + prerequisOk, + automatonTypes, + seuils: MournbladeInvocationEspritDialog.SEUILS, + modOptions: Array.from({ length: 21 }, (_, i) => i - 10), + } + + const content = await foundry.applications.handlebars.renderTemplate( + "systems/fvtt-mournblade/templates/dialog-invocation-esprit.hbs", + context + ) + + Hooks.once("renderDialogV2", (_app, html) => { + const form = html.querySelector ? html : html[0] + MournbladeInvocationEspritDialog._attachListeners(form, ameDisponible, prerequisOk) + }) + + return foundry.applications.api.DialogV2.wait({ + window: { title: "Invoquer un Esprit de la Loi", icon: "fa-solid fa-star" }, + classes: ["mournblade-roll-dialog"], + position: { width: 520 }, + modal: false, + content, + buttons: [ + { + action: "invoquer", + label: "Invoquer", + icon: "fa-solid fa-star", + default: true, + callback: (event, button, dialog) => { + MournbladeInvocationEspritDialog._updateRollData(rollData, button.form.elements, actor, { + persuasionComp, hautParlerComp, loiChaosComp + }) + MournbladeUtility.rollInvocationEsprit(rollData) + } + }, + ], + rejectClose: false, + }) + } + + static _attachListeners(html, ameDisponible, prerequisOk = true) { + const invoquerBtn = html.querySelector('button[data-action="invoquer"]') + if (invoquerBtn) invoquerBtn.disabled = !prerequisOk + + const puissanceEl = html.querySelector('[name="puissance"]') + const seuilEl = html.querySelector('#esprit-seuil-total') + const coutEl = html.querySelector('#esprit-cout-ame') + const hiddenEl = html.querySelector('#esprit-seuil-hidden') + const warnEl = html.querySelector('#esprit-ame-warn') + const dureeEl = html.querySelector('#esprit-duree') + + const DUREE = { mineur: "1 heure", median: "1 jour", majeur: "1 semaine" } + + const recalculate = () => { + const puissance = puissanceEl?.value ?? "mineur" + const seuil = MournbladeInvocationEspritDialog.SEUILS[puissance] ?? 15 + if (seuilEl) seuilEl.textContent = seuil + if (coutEl) coutEl.textContent = seuil + if (hiddenEl) hiddenEl.value = seuil + if (dureeEl) dureeEl.textContent = DUREE[puissance] ?? "1 heure" + if (warnEl) warnEl.style.display = seuil > ameDisponible ? "" : "none" + } + + if (puissanceEl) puissanceEl.addEventListener("change", recalculate) + recalculate() + } + + static _updateRollData(rollData, formElements, actor, { persuasionComp }) { + const seuil = parseInt(formElements["seuil"]?.value ?? 15) + const modificateur = parseInt(formElements["modificateur"]?.value ?? 0) + const automatonType = formElements["automatonType"]?.value ?? "combat" + const puissance = formElements["puissance"]?.value ?? "mineur" + + rollData.invocationSeuil = seuil + rollData.invocationSoulCost = seuil + rollData.difficulte = seuil + rollData.modificateur = modificateur + rollData.competence = persuasionComp ?? null + rollData.automatonType = automatonType + rollData.automatonPuissance = puissance + } +} diff --git a/modules/applications/sheets/base-actor-sheet.mjs b/modules/applications/sheets/base-actor-sheet.mjs index 5170416..911122f 100644 --- a/modules/applications/sheets/base-actor-sheet.mjs +++ b/modules/applications/sheets/base-actor-sheet.mjs @@ -57,6 +57,10 @@ export default class MournbladeActorSheet extends HandlebarsApplicationMixin(fou preparePotion: MournbladeActorSheet.#onPreparePotion, invoquerElementaire: MournbladeActorSheet.#onInvoquerElementaire, bannirElementaire: MournbladeActorSheet.#onBannirElementaire, + invoquerDemon: MournbladeActorSheet.#onInvoquerDemon, + libererDemon: MournbladeActorSheet.#onLibererDemon, + invoquerEsprit: MournbladeActorSheet.#onInvoquerEsprit, + enchanter: MournbladeActorSheet.#onEnchanter, rollArmeOffensif: MournbladeActorSheet.#onRollArmeOffensif, rollArmeSpecial: MournbladeActorSheet.#onRollArmeSpecial, rollArmeDegats: MournbladeActorSheet.#onRollArmeDegats, @@ -110,6 +114,21 @@ export default class MournbladeActorSheet extends HandlebarsApplicationMixin(fou return context } + /** @override */ + _preSyncPartState(partId, newElement, priorElement, state) { + super._preSyncPartState(partId, newElement, priorElement, state) + // Save scrollable tab positions for deferred restoration in _onRender. + // Tabs are hidden (display:none) at _syncPartState time, so scrollTop + // assignments have no effect. We re-apply them after making tabs visible. + const part = this.constructor.PARTS?.[partId] + if (part?.scrollable) { + this._pendingScrollRestores = part.scrollable.map(selector => { + const el = selector ? priorElement.querySelector(selector) : priorElement + return el ? { selector, scrollTop: el.scrollTop } : null + }).filter(Boolean) + } + } + /** @override */ _onRender(context, options) { super._onRender(context, options) @@ -136,22 +155,37 @@ export default class MournbladeActorSheet extends HandlebarsApplicationMixin(fou const nav = this.element.querySelector('nav.tabs[data-group]') if (nav) { const group = nav.dataset.group - // Activate the current tab const activeTab = this.tabGroups[group] || "stats" + + const switchTab = (tab) => { + this.tabGroups[group] = tab + nav.querySelectorAll('[data-tab]').forEach(link => { + link.classList.toggle('active', link.dataset.tab === tab) + }) + this.element.querySelectorAll('[data-group="' + group + '"][data-tab]').forEach(content => { + content.classList.toggle('active', content.dataset.tab === tab) + }) + } + + // Set initial state (makes active tab visible) + switchTab(activeTab) + + // Restore scroll positions now that the active tab is visible + if (this._pendingScrollRestores?.length) { + for (const { selector, scrollTop } of this._pendingScrollRestores) { + const el = selector ? this.element.querySelector(selector) : this.element + if (el) el.scrollTop = scrollTop + } + this._pendingScrollRestores = null + } + + // Tab clicks: DOM-only, no re-render (preserves scroll positions) nav.querySelectorAll('[data-tab]').forEach(link => { - const tab = link.dataset.tab - link.classList.toggle('active', tab === activeTab) link.addEventListener('click', (event) => { event.preventDefault() - this.tabGroups[group] = tab - this.render() + switchTab(link.dataset.tab) }) }) - - // Show/hide tab content - this.element.querySelectorAll('[data-group="' + group + '"][data-tab]').forEach(content => { - content.classList.toggle('active', content.dataset.tab === activeTab) - }) } } @@ -383,6 +417,40 @@ export default class MournbladeActorSheet extends HandlebarsApplicationMixin(fou await this.document.bannirElementaire(invocIndex) } + /** + * Handle invoking a demon + */ + static async #onInvoquerDemon(event, target) { + event.preventDefault() + await this.document.invoquerDemon() + } + + /** + * Handle releasing a demon invocation + */ + static async #onLibererDemon(event, target) { + event.preventDefault() + const invocIndex = parseInt(target.dataset.invocIndex ?? "0") + await this.document.libererDemon(invocIndex) + } + + /** + * Handle invoking a Law Spirit into an Automaton + */ + static async #onInvoquerEsprit(event, target) { + event.preventDefault() + await this.document.invoquerEspritLoi() + } + + /** + * Handle enchanting an item with Loi power + */ + static async #onEnchanter(event, target) { + event.preventDefault() + const itemId = target.dataset.itemId + await this.document.enchanter(itemId) + } + /** * Handle rolling an arme offensif * @param {Event} event - The triggering event diff --git a/modules/applications/sheets/base-item-sheet.mjs b/modules/applications/sheets/base-item-sheet.mjs index 420b81f..5677b79 100644 --- a/modules/applications/sheets/base-item-sheet.mjs +++ b/modules/applications/sheets/base-item-sheet.mjs @@ -32,6 +32,7 @@ export default class MournbladeItemSheet extends HandlebarsApplicationMixin(foun actions: { editImage: MournbladeItemSheet.#onEditImage, postItem: MournbladeItemSheet.#onPostItem, + enchanter: MournbladeItemSheet.#onEnchanter, }, } @@ -43,17 +44,24 @@ export default class MournbladeItemSheet extends HandlebarsApplicationMixin(foun /** @override */ async _prepareContext() { + const item = this.document + const enchantableTypes = ["arme", "equipement", "protection", "bouclier"] + const actorIsLoyal = item.actor?.getAlignement?.() === "loyal" + const alreadyEnchanted = enchantableTypes.includes(item.type) && (item.system.enchantementLoi?.actif ?? false) + const canEnchant = enchantableTypes.includes(item.type) && !!item.actor && actorIsLoyal && !alreadyEnchanted const context = { - fields: this.document.schema.fields, - systemFields: this.document.system.schema.fields, - item: this.document, - system: this.document.system, - source: this.document.toObject(), - enrichedDescription: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true }), + fields: item.schema.fields, + systemFields: item.system.schema.fields, + item, + system: item.system, + source: item.toObject(), + enrichedDescription: await foundry.applications.ux.TextEditor.implementation.enrichHTML(item.system.description, { async: true }), isEditMode: true, isEditable: this.isEditable, isGM: game.user.isGM, config: game.system.mournblade.config, + canEnchant, + enchantementActif: alreadyEnchanted, } return context } @@ -96,6 +104,19 @@ export default class MournbladeItemSheet extends HandlebarsApplicationMixin(foun // #region Actions + /** + * Handle enchanting this item with Loi power + */ + static async #onEnchanter(event) { + event.preventDefault() + const item = this.document + if (!item.actor) { + ui.notifications.warn("Cet objet doit être sur un personnage pour être enchanté.") + return + } + await item.actor.enchanter(item.id) + } + /** * Handle editing the item image * @param {Event} event - The triggering event @@ -137,7 +158,8 @@ export default class MournbladeItemSheet extends HandlebarsApplicationMixin(foun protection: "Protection", equipement: "Équipement", heritage: "Héritage", metier: "Métier", capacite: "Capacité", tendance: "Tendance", traitchaotique: "Trait Chaotique", traitespece: "Trait d'Espèce", - origine: "Origine", modifier: "Modificateur", monnaie: "Monnaie" + origine: "Origine", modifier: "Modificateur", monnaie: "Monnaie", + potion: "Potion" } chatData.typeLabel = typeLabels[chatData.type] ?? chatData.type @@ -148,10 +170,30 @@ export default class MournbladeItemSheet extends HandlebarsApplicationMixin(foun pacte: "fa-scroll", protection: "fa-shield", equipement: "fa-box", heritage: "fa-dna", metier: "fa-hammer", capacite: "fa-bolt", tendance: "fa-yin-yang", traitchaotique: "fa-skull", traitespece: "fa-paw", - origine: "fa-compass", modifier: "fa-sliders", monnaie: "fa-coins" + origine: "fa-compass", modifier: "fa-sliders", monnaie: "fa-coins", + potion: "fa-flask" } chatData.typeIcon = typeIcons[chatData.type] ?? "fa-cube" + // Potion: add localized labels for statut and forme + if (chatData.type === "potion") { + const statutLabels = { + inconnue: game.i18n.localize("MNBL.potionInconnue"), + efficace: game.i18n.localize("MNBL.potionEfficace"), + heroique: game.i18n.localize("MNBL.potionHeroique"), + inefficace: game.i18n.localize("MNBL.potionInefficace"), + poison: game.i18n.localize("MNBL.potionPoison"), + } + const formeLabels = { + liquide: game.i18n.localize("MNBL.potionLiquide"), + onguent: game.i18n.localize("MNBL.potionOnguent"), + cachets: game.i18n.localize("MNBL.potionCachets"), + pilules: game.i18n.localize("MNBL.potionPilules"), + } + chatData.system.statutLabel = statutLabels[chatData.system.statut] ?? chatData.system.statut + chatData.system.formeLabel = formeLabels[chatData.system.forme] ?? chatData.system.forme + } + const html = await foundry.applications.handlebars.renderTemplate('systems/fvtt-mournblade/templates/post-item.hbs', chatData) ChatMessage.create({ user: game.user.id, content: html }) } diff --git a/modules/applications/sheets/mournblade-creature-sheet.mjs b/modules/applications/sheets/mournblade-creature-sheet.mjs index 094bed6..50bda4b 100644 --- a/modules/applications/sheets/mournblade-creature-sheet.mjs +++ b/modules/applications/sheets/mournblade-creature-sheet.mjs @@ -15,6 +15,7 @@ export default class MournbladeCreatureSheet extends MournbladeActorSheet { static PARTS = { sheet: { template: "systems/fvtt-mournblade/templates/creature-sheet.hbs", + scrollable: [".tab.competences", ".tab.equipement", ".tab.biodata"], }, } diff --git a/modules/applications/sheets/mournblade-personnage-sheet.mjs b/modules/applications/sheets/mournblade-personnage-sheet.mjs index 797aa14..5700b34 100644 --- a/modules/applications/sheets/mournblade-personnage-sheet.mjs +++ b/modules/applications/sheets/mournblade-personnage-sheet.mjs @@ -15,6 +15,7 @@ export default class MournbladePersonnageSheet extends MournbladeActorSheet { static PARTS = { sheet: { template: "systems/fvtt-mournblade/templates/actor-sheet.hbs", + scrollable: [".tab.principal", ".tab.competences", ".tab.dons", ".tab.equipement"], }, } @@ -35,6 +36,8 @@ export default class MournbladePersonnageSheet extends MournbladeActorSheet { context.dons = foundry.utils.duplicate(actor.getDons()) context.pactes = foundry.utils.duplicate(actor.getPactes()) context.alignement = actor.getAlignement() + context.isChaotique = context.alignement === "chaotique" + context.isLoyal = context.alignement === "loyal" context.aspect = actor.getAspect() context.marge = actor.getMarge() context.tendances = foundry.utils.duplicate(actor.getTendances()) @@ -46,6 +49,7 @@ export default class MournbladePersonnageSheet extends MournbladeActorSheet { context.metier = foundry.utils.duplicate(actor.getMetier() || {}) context.combat = actor.getCombatValues() context.equipements = foundry.utils.duplicate(actor.getEquipments()) + context.potions = foundry.utils.duplicate(actor.getPotions()) context.modifiers = foundry.utils.duplicate(actor.getModifiers()) context.monnaies = foundry.utils.duplicate(actor.getMonnaies()) context.runeEffects = foundry.utils.duplicate(actor.getRuneEffects()) diff --git a/modules/models/arme.mjs b/modules/models/arme.mjs index 9fadee3..27ba52d 100644 --- a/modules/models/arme.mjs +++ b/modules/models/arme.mjs @@ -21,7 +21,12 @@ export default class ArmeDataModel extends foundry.abstract.TypeDataModel { tr: new fields.NumberField({ initial: 0, integer: true }), rarete: new fields.NumberField({ initial: 0, integer: true }), prix: new fields.NumberField({ initial: 0, integer: true }), - equipped: new fields.BooleanField({ initial: false }) + equipped: new fields.BooleanField({ initial: false }), + enchantementLoi: new fields.SchemaField({ + actif: new fields.BooleanField({ initial: false }), + bonus: new fields.NumberField({ initial: 0, integer: true }), + antiChaos: new fields.BooleanField({ initial: false }), + }), }; } } \ No newline at end of file diff --git a/modules/models/bouclier.mjs b/modules/models/bouclier.mjs index 3e03918..b08d748 100644 --- a/modules/models/bouclier.mjs +++ b/modules/models/bouclier.mjs @@ -11,7 +11,12 @@ export default class BouclierDataModel extends foundry.abstract.TypeDataModel { nonletaux: new fields.BooleanField({ initial: false }), rarete: new fields.NumberField({ initial: 0, integer: true }), prix: new fields.NumberField({ initial: 0, integer: true }), - equipped: new fields.BooleanField({ initial: false }) + equipped: new fields.BooleanField({ initial: false }), + enchantementLoi: new fields.SchemaField({ + actif: new fields.BooleanField({ initial: false }), + bonus: new fields.NumberField({ initial: 0, integer: true }), + antiChaos: new fields.BooleanField({ initial: false }), + }), }; } } \ No newline at end of file diff --git a/modules/models/creature.mjs b/modules/models/creature.mjs index 3830bd3..dce8292 100644 --- a/modules/models/creature.mjs +++ b/modules/models/creature.mjs @@ -12,6 +12,11 @@ export default class CreatureDataModel extends foundry.abstract.TypeDataModel { alignement: new fields.StringField({ initial: "" }), creatureType: new fields.StringField({ initial: "creature" }), elementType: new fields.StringField({ initial: "" }), + demonType: new fields.StringField({ initial: "" }), + demonPuissance: new fields.StringField({ initial: "" }), + automatonType: new fields.StringField({ initial: "" }), + automatonPuissance: new fields.StringField({ initial: "" }), + automatonVoyageType: new fields.StringField({ initial: "" }), poids: new fields.StringField({ initial: "" }), taille: new fields.StringField({ initial: "" }), cheveux: new fields.StringField({ initial: "" }), diff --git a/modules/models/equipement.mjs b/modules/models/equipement.mjs index 9036766..02c09c6 100644 --- a/modules/models/equipement.mjs +++ b/modules/models/equipement.mjs @@ -7,7 +7,12 @@ export default class EquipementDataModel extends foundry.abstract.TypeDataModel return { description: new fields.HTMLField({ initial: "" }), rarete: new fields.NumberField({ initial: 0, integer: true }), - prix: new fields.NumberField({ initial: 0, integer: true }) + prix: new fields.NumberField({ initial: 0, integer: true }), + enchantementLoi: new fields.SchemaField({ + actif: new fields.BooleanField({ initial: false }), + bonus: new fields.NumberField({ initial: 0, integer: true }), + antiChaos: new fields.BooleanField({ initial: false }), + }), }; } } \ No newline at end of file diff --git a/modules/models/personnage.mjs b/modules/models/personnage.mjs index 3c65891..275fed9 100644 --- a/modules/models/personnage.mjs +++ b/modules/models/personnage.mjs @@ -81,6 +81,7 @@ export default class PersonnageDataModel extends foundry.abstract.TypeDataModel traumatismes: new fields.StringField({ initial: "" }) }), invocationsElementaires: new fields.ArrayField(new fields.ObjectField(), { initial: [] }), + invocationsDemons: new fields.ArrayField(new fields.ObjectField(), { initial: [] }), combat: new fields.SchemaField({ initbonus: new fields.NumberField({ initial: 0, integer: true }), vitessebonus: new fields.NumberField({ initial: 0, integer: true }), diff --git a/modules/models/protection.mjs b/modules/models/protection.mjs index babf502..0d35eab 100644 --- a/modules/models/protection.mjs +++ b/modules/models/protection.mjs @@ -11,7 +11,12 @@ export default class ProtectionDataModel extends foundry.abstract.TypeDataModel degats: new fields.StringField({ initial: "" }), rarete: new fields.NumberField({ initial: 0, integer: true }), prix: new fields.NumberField({ initial: 0, integer: true }), - equipped: new fields.BooleanField({ initial: false }) + equipped: new fields.BooleanField({ initial: false }), + enchantementLoi: new fields.SchemaField({ + actif: new fields.BooleanField({ initial: false }), + bonus: new fields.NumberField({ initial: 0, integer: true }), + antiChaos: new fields.BooleanField({ initial: false }), + }), }; } } \ No newline at end of file diff --git a/modules/mournblade-actor.js b/modules/mournblade-actor.js index bd524b7..da022ee 100644 --- a/modules/mournblade-actor.js +++ b/modules/mournblade-actor.js @@ -2,6 +2,9 @@ import { MournbladeUtility } from "./mournblade-utility.js"; import { MournbladeRollDialog } from "./applications/mournblade-roll-dialog.mjs"; import MournbladeInvocationDialog from "./applications/mournblade-invocation-dialog.mjs"; +import MournbladeInvocationDemonDialog from "./applications/mournblade-invocation-demon-dialog.mjs"; +import MournbladeInvocationEspritDialog from "./applications/mournblade-invocation-esprit-dialog.mjs"; +import MournbladeEnchantementDialog from "./applications/mournblade-enchantement-dialog.mjs"; /* -------------------------------------------- */ const __degatsBonus = [-2, -2, -1, -1, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 8, 8, 9, 9, 10, 10] @@ -91,6 +94,8 @@ export class MournbladeActor extends Actor { prepareArme(arme) { arme = foundry.utils.duplicate(arme) let combat = this.getCombatValues() + const enchBonus = (arme.system.enchantementLoi?.actif && arme.system.enchantementLoi?.bonus > 0) + ? arme.system.enchantementLoi.bonus : 0 if (arme.system.typearme == "contact" || arme.system.typearme == "contactjet") { arme.system.isMelee = true let competence = this.items.find(item => item.type == "competence" && item.name.toLowerCase() == "mêlée") @@ -98,7 +103,7 @@ export class MournbladeActor extends Actor { arme.system.competence = foundry.utils.duplicate(competence) arme.system.attrKey = "pui" arme.system.totalDegats = arme.system.degats + "+" + combat.bonusDegatsTotal - arme.system.totalOffensif = this.system.attributs.pui.value + arme.system.competence.system.niveau + arme.system.bonusmaniementoff + combat.attaqueModifier + arme.system.totalOffensif = this.system.attributs.pui.value + arme.system.competence.system.niveau + arme.system.bonusmaniementoff + combat.attaqueModifier + enchBonus if (arme.system.isdefense) { arme.system.totalDefensif = combat.defenseTotal + arme.system.competence.system.niveau + arme.system.bonusmaniementdef } @@ -115,7 +120,7 @@ export class MournbladeActor extends Actor { if (competence) { arme.system.competence = foundry.utils.duplicate(competence) arme.system.attrKey = "adr" - arme.system.totalOffensif = this.system.attributs.adr.value + arme.system.competence.system.niveau + arme.system.bonusmaniementoff + combat.attaqueModifier + arme.system.totalOffensif = this.system.attributs.adr.value + arme.system.competence.system.niveau + arme.system.bonusmaniementoff + combat.attaqueModifier + enchBonus arme.system.totalDegats = arme.system.degats if (arme.system.isdefense) { arme.system.totalDefensif = combat.defenseTotal + arme.system.competence.system.niveau + arme.system.bonusmaniementdef @@ -133,12 +138,14 @@ export class MournbladeActor extends Actor { prepareBouclier(bouclier) { bouclier = foundry.utils.duplicate(bouclier) let combat = this.getCombatValues() + const enchBonus = (bouclier.system.enchantementLoi?.actif && bouclier.system.enchantementLoi?.bonus > 0) + ? bouclier.system.enchantementLoi.bonus : 0 let competence = this.items.find(item => item.type == "competence" && item.name.toLowerCase() == "mêlée") if (competence) { bouclier.system.competence = foundry.utils.duplicate(competence) bouclier.system.attrKey = "pui" bouclier.system.totalDegats = bouclier.system.degats + "+" + combat.bonusDegatsTotal - bouclier.system.totalOffensif = this.system.attributs.pui.value + bouclier.system.competence.system.niveau + bouclier.system.totalOffensif = this.system.attributs.pui.value + bouclier.system.competence.system.niveau + enchBonus bouclier.system.isdefense = true bouclier.system.bonusmaniementoff = 0 bouclier.system.totalDefensif = combat.defenseTotal + bouclier.system.competence.system.niveau + bouclier.system.bonusdefense @@ -213,6 +220,9 @@ export class MournbladeActor extends Actor { getMonnaies() { return this.getItemSorted(["monnaie"]) } + getPotions() { + return this.getItemSorted(["potion"]) + } getArmors() { return this.getItemSorted(["protection"]) } @@ -739,6 +749,90 @@ export class MournbladeActor extends Actor { ui.notifications.info(`L'Élémentaire ${invoc.actorName} a été banni. ${invoc.soulCost} points d'Âme libérés.`) } + /* -------------------------------------------- */ + async invoquerDemon() { + const normalize = str => str.toLowerCase() + .replace(/œ/g, "oe").replace(/æ/g, "ae") + .normalize("NFD").replace(/[\u0300-\u036f]/g, "") + .replace(/[^a-z0-9]+/g, " ").trim() + const hasKeywords = (item, ...words) => { + const n = normalize(item.name) + return words.every(w => n.includes(normalize(w))) + } + const coercitionComp = this.items.find(c => c.type === "competence" && hasKeywords(c, "coercition")) + if (!coercitionComp) { + ui.notifications.warn("La compétence Coercition est requise pour invoquer un Démon.") + return + } + const isChaotique = this.system.balance.chaos > this.system.balance.loi + const hasOeilSorcier = this.items.some(c => (c.type === "capacite" || c.type === "don") && hasKeywords(c, "oeil", "sorcier")) + const hasRuneChaos = this.items.some(i => i.type === "rune" && hasKeywords(i, "chaos")) + if (!isChaotique || !hasOeilSorcier || !hasRuneChaos) { + const missing = [] + if (!isChaotique) missing.push("alignement chaotique (Chaos > Loi)") + if (!hasOeilSorcier) missing.push("Capacité/Don Œil du Sorcier") + if (!hasRuneChaos) missing.push("Rune du Chaos") + ui.notifications.warn(`Prérequis manquants pour l'invocation démoniaque : ${missing.join(", ")}.`) + } + + let rollData = this.getCommonRollData("tre", coercitionComp._id) + rollData.isInvocationDemon = true + rollData.mainDice = "1d10" + + await MournbladeInvocationDemonDialog.create(this, rollData) + } + + /* -------------------------------------------- */ + async libererDemon(invocIndex) { + const invocations = foundry.utils.duplicate(this.system.invocationsDemons || []) + const invoc = invocations[invocIndex] + if (!invoc) return + + invocations.splice(invocIndex, 1) + await this.update({ "system.invocationsDemons": invocations }) + ui.notifications.info(`Le Démon ${invoc.demonName ?? "invoqué"} a été libéré.`) + } + + /* -------------------------------------------- */ + async invoquerEspritLoi() { + const normalize = str => str.toLowerCase() + .replace(/œ/g, "oe").replace(/æ/g, "ae") + .normalize("NFD").replace(/[\u0300-\u036f]/g, "") + .replace(/[^a-z0-9]+/g, " ").trim() + const hasKeywords = (item, ...words) => { + const n = normalize(item.name) + return words.every(w => n.includes(normalize(w))) + } + + const persuasionComp = this.items.find(c => c.type === "competence" && hasKeywords(c, "persuasion")) + const isLoyal = this.system.balance.loi > this.system.balance.chaos + const hasRuneLoi = this.items.some(i => i.type === "rune" && hasKeywords(i, "loi")) + + if (!isLoyal || !hasRuneLoi) { + const missing = [] + if (!isLoyal) missing.push("alignement loyal (Loi > Chaos)") + if (!hasRuneLoi) missing.push("Rune de la Loi") + ui.notifications.warn(`Prérequis manquants : ${missing.join(", ")}.`) + } + + const rollData = this.getCommonRollData("tre", persuasionComp?._id ?? null) + rollData.isInvocationEsprit = true + rollData.mainDice = "1d10" + + await MournbladeInvocationEspritDialog.create(this, rollData) + } + + /* -------------------------------------------- */ + async enchanter(itemId) { + const item = this.items.get(itemId) + if (!item) return + if (!["arme", "equipement", "protection", "bouclier"].includes(item.type)) { + ui.notifications.warn("Seules les armes, équipements, protections et boucliers peuvent être enchantés.") + return + } + await MournbladeEnchantementDialog.create(this, item) + } + /* -------------------------------------------- */ async rollArmeOffensif(armeId) { let arme = this.items.get(armeId) diff --git a/modules/mournblade-config.js b/modules/mournblade-config.js index e59148f..3e6b584 100644 --- a/modules/mournblade-config.js +++ b/modules/mournblade-config.js @@ -90,18 +90,55 @@ export class MournbladeConfig { elue: game.i18n.localize("MNBL.typeCapaciteElue"), elementaire: game.i18n.localize("MNBL.typeCapaciteElementaire"), demoniaque: game.i18n.localize("MNBL.typeCapaciteDemoniaque"), + automaton: game.i18n.localize("MNBL.typeCapaciteAutomaton"), creature: game.i18n.localize("MNBL.typeCapaciteCreature"), }, creatureTypeOptions: { creature: game.i18n.localize("MNBL.creatureTypeCreature"), demon: game.i18n.localize("MNBL.creatureTypeDemon"), elementaire: game.i18n.localize("MNBL.creatureTypeElementaire"), + automaton: game.i18n.localize("MNBL.creatureTypeAutomaton"), + }, + demonTypeOptions: { + "": game.i18n.localize("MNBL.demonTypeNone"), + combat: game.i18n.localize("MNBL.demonTypeCombat"), + desir: game.i18n.localize("MNBL.demonTypeDesir"), + savoir: game.i18n.localize("MNBL.demonTypeSavoir"), + protection: game.i18n.localize("MNBL.demonTypeProtection"), + voyage: game.i18n.localize("MNBL.demonTypeVoyage"), + }, + demonPuissanceOptions: { + "": game.i18n.localize("MNBL.demonPuissanceNone"), + mineur: game.i18n.localize("MNBL.demonPuissanceMineur"), + median: game.i18n.localize("MNBL.demonPuissanceMedian"), + majeur: game.i18n.localize("MNBL.demonPuissanceMajeur"), }, elementTypeOptions: { air: game.i18n.localize("MNBL.elementTypeAir"), terre: game.i18n.localize("MNBL.elementTypeTerre"), feu: game.i18n.localize("MNBL.elementTypeFeu"), eau: game.i18n.localize("MNBL.elementTypeEau"), + }, + automatonTypeOptions: { + "": game.i18n.localize("MNBL.automatonTypeNone"), + combat: game.i18n.localize("MNBL.automatonTypeCombat"), + voyage: game.i18n.localize("MNBL.automatonTypeVoyage"), + perception: game.i18n.localize("MNBL.automatonTypePerception"), + restauration: game.i18n.localize("MNBL.automatonTypeRestauration"), + reparateur: game.i18n.localize("MNBL.automatonTypeReparateur"), + }, + automatonPuissanceOptions: { + "": game.i18n.localize("MNBL.automatonPuissanceNone"), + mineur: game.i18n.localize("MNBL.automatonPuissanceMineur"), + median: game.i18n.localize("MNBL.automatonPuissanceMedian"), + majeur: game.i18n.localize("MNBL.automatonPuissanceMajeur"), + }, + automatonVoyageTypeOptions: { + "": game.i18n.localize("MNBL.automatonVoyageTypeNone"), + terrestre: game.i18n.localize("MNBL.automatonVoyageTypeTerrestre"), + aquatique: game.i18n.localize("MNBL.automatonVoyageTypeAquatique"), + aerien: game.i18n.localize("MNBL.automatonVoyageTypeAerien"), + extradimensionnel: game.i18n.localize("MNBL.automatonVoyageTypeExtradimensionnel"), } } diff --git a/modules/mournblade-utility.js b/modules/mournblade-utility.js index fae82f0..a94a280 100644 --- a/modules/mournblade-utility.js +++ b/modules/mournblade-utility.js @@ -219,8 +219,15 @@ export class MournbladeUtility { 'systems/fvtt-mournblade/templates/partial-item-description.hbs', 'systems/fvtt-mournblade/templates/partial-item-header.hbs', 'systems/fvtt-mournblade/templates/partial-item-nav.hbs', + 'systems/fvtt-mournblade/templates/partial-item-enchantement.hbs', 'systems/fvtt-mournblade/templates/dialog-invocation-elementaire.hbs', 'systems/fvtt-mournblade/templates/chat-invocation-result.hbs', + 'systems/fvtt-mournblade/templates/dialog-invocation-demon.hbs', + 'systems/fvtt-mournblade/templates/chat-invocation-demon-result.hbs', + 'systems/fvtt-mournblade/templates/dialog-enchantement.hbs', + 'systems/fvtt-mournblade/templates/chat-enchantement-result.hbs', + 'systems/fvtt-mournblade/templates/dialog-invocation-esprit.hbs', + 'systems/fvtt-mournblade/templates/chat-invocation-esprit-result.hbs', ] return foundry.applications.handlebars.loadTemplates(templatePaths); } @@ -1079,9 +1086,7 @@ export class MournbladeUtility { return } - const actor = rollData.tokenId - ? game.canvas.tokens.get(rollData.tokenId)?.actor - : game.actors.get(rollData.actorId) + const actor = game.actors.get(rollData.actorId) const pa = rollData.pointsAme ?? 1 const seuil = rollData.runeSeuil ?? 0 @@ -1269,6 +1274,8 @@ export class MournbladeUtility { rollData.createdActorName = createdActorName rollData.bonusPacte = bonusPacte rollData.isGM = game.user.isGM + const powersByTier = { mineur: 2, median: 3, majeur: 4 } + rollData.invocationPowerCount = powersByTier[rollData.invocationTier] ?? 2 this.createChatWithRollMode(rollData.alias, { content: await foundry.applications.handlebars.renderTemplate( @@ -1276,4 +1283,235 @@ export class MournbladeUtility { }, { ...rollData, rollMode: "blindroll" }) } + /* -------------------------------------------- */ + static async rollInvocationDemon(rollData) { + const actor = rollData.tokenId + ? game.canvas.tokens.get(rollData.tokenId)?.actor + : game.actors.get(rollData.actorId) + + if (!actor) { + ui.notifications.error("Acteur introuvable pour l'invocation démoniaque.") + return + } + + const soulCost = rollData.invocationSoulCost ?? rollData.invocationSeuil ?? 20 + const compNiveau = rollData.competence?.system?.niveau ?? 0 + const compMod = compNiveau === 0 ? -3 : 0 + const modificateur = rollData.modificateur ?? 0 + + // Validate soul + const ameDisponible = Math.max(0, actor.system.ame.currentmax - actor.system.ame.value) + if (ameDisponible < soulCost) { + ui.notifications.warn(`Âme insuffisante pour cette invocation (requis : ${soulCost}, disponible : ${ameDisponible}).`) + return + } + + rollData.difficulte = rollData.invocationSeuil + rollData.diceFormula = `${rollData.mainDice ?? "1d10"}+${rollData.attr.value}+${compNiveau}+${modificateur}+${compMod}+${rollData.malusSante}+${rollData.malusAme}` + + const myRoll = await new Roll(rollData.diceFormula).evaluate() + await this.showDiceSoNice(myRoll, "blindroll") + rollData.roll = foundry.utils.duplicate(myRoll) + rollData.diceResult = myRoll.terms[0].results[0].result + rollData.finalResult = myRoll.total + this.computeResult(rollData) + + // Soul cost handling + let ameDeduct = soulCost + let d20Result = null + let isDemonAttaque = false + let isDisastreDramatique = false + let isTraitChaotique = false + + if (rollData.isSuccess || rollData.isHeroique) { + // Soul spent immediately (not blocked) + await actor.subPointsAme("prononcer", soulCost) + + // Track active invocation + const invocations = foundry.utils.duplicate(actor.system.invocationsDemons || []) + invocations.push({ demonName: "Démon invoqué", soulCost, date: Date.now() }) + await actor.update({ "system.invocationsDemons": invocations }) + } else if (rollData.isDramatique) { + // All soul lost + await actor.subPointsAme("prononcer", soulCost) + + // Roll d20 for dramatic failure consequences + const d20Roll = await new Roll("1d20").evaluate() + await this.showDiceSoNice(d20Roll, "blindroll") + d20Result = d20Roll.total + if (d20Result === 1 || d20Result === 11) { + isDisastreDramatique = true + } else if (d20Result % 2 !== 0) { + // Odd (not 1 or 11) → demon attacks + isDemonAttaque = true + } else { + // Even → chaotic trait + isTraitChaotique = true + } + } else { + // Simple failure: half soul lost (round up) + ameDeduct = Math.ceil(soulCost / 2) + await actor.subPointsAme("prononcer", ameDeduct) + } + + rollData.invocationSoulDeducted = (rollData.isSuccess || rollData.isHeroique) ? soulCost : ameDeduct + rollData.d20Result = d20Result + rollData.isDemonAttaque = isDemonAttaque + rollData.isDisastreDramatique = isDisastreDramatique + rollData.isTraitChaotique = isTraitChaotique + rollData.isGM = game.user.isGM + rollData.claValue = actor.system.attributs?.cla?.value ?? 0 + + this.createChatWithRollMode(rollData.alias, { + content: await foundry.applications.handlebars.renderTemplate( + `systems/fvtt-mournblade/templates/chat-invocation-demon-result.hbs`, rollData) + }, { ...rollData, rollMode: "blindroll" }) + } + + /* -------------------------------------------- */ + static async rollInvocationEsprit(rollData) { + const actor = rollData.tokenId + ? game.canvas.tokens.get(rollData.tokenId)?.actor + : game.actors.get(rollData.actorId) + + if (!actor) { + ui.notifications.error("Acteur introuvable pour l'invocation d'un Esprit de la Loi.") + return + } + + const soulCost = rollData.invocationSoulCost ?? 15 + const compNiveau = rollData.competence?.system?.niveau ?? 0 + const compMod = compNiveau === 0 ? -3 : 0 + const modificateur = rollData.modificateur ?? 0 + + const ameDisponible = Math.max(0, actor.system.ame.currentmax - actor.system.ame.value) + if (ameDisponible < soulCost) { + ui.notifications.warn(`Âme insuffisante (requis : ${soulCost}, disponible : ${ameDisponible}).`) + return + } + + rollData.difficulte = soulCost + rollData.diceFormula = `${rollData.mainDice ?? "1d10"}+${rollData.attr.value}+${compNiveau}+${modificateur}+${compMod}+${rollData.malusSante}+${rollData.malusAme}` + + const myRoll = await new Roll(rollData.diceFormula).evaluate() + await this.showDiceSoNice(myRoll, "roll") + rollData.roll = foundry.utils.duplicate(myRoll) + rollData.diceResult = myRoll.terms[0].results[0].result + rollData.finalResult = myRoll.total + this.computeResult(rollData) + + let ameDeduct = soulCost + + if (rollData.isSuccess || rollData.isHeroique) { + await actor.subPointsAme("prononcer", soulCost) + } else if (rollData.isDramatique) { + // All soul lost, Réceptacle destroyed + await actor.subPointsAme("prononcer", soulCost) + } else { + // Simple failure: half soul lost (round up) + ameDeduct = Math.ceil(soulCost / 2) + await actor.subPointsAme("prononcer", ameDeduct) + } + + rollData.invocationSoulDeducted = (rollData.isSuccess || rollData.isHeroique) ? soulCost : ameDeduct + rollData.isGM = game.user.isGM + + const typeLabels = { + combat: "Combat", voyage: "Voyage", perception: "Perception", + restauration: "Restauration", reparateur: "Réparateur", + } + const puissanceLabels = { mineur: "Mineur", median: "Médian", majeur: "Majeur" } + rollData.automatonTypeLabel = typeLabels[rollData.automatonType] ?? rollData.automatonType + rollData.automatonPuissanceLabel = puissanceLabels[rollData.automatonPuissance] ?? rollData.automatonPuissance + + this.createChatWithRollMode(rollData.alias, { + content: await foundry.applications.handlebars.renderTemplate( + `systems/fvtt-mournblade/templates/chat-invocation-esprit-result.hbs`, rollData) + }, { ...rollData, rollMode: "roll" }) + } + + /* -------------------------------------------- */ + static async rollEnchantement({ actor, item, ptsAme, antiChaos, modificateur, + savoirRunesComp, hautParlerComp, artisanatComp, claValeur, limiteur }) { + + // Validate soul + const ameDisponible = Math.max(0, actor.system.ame.currentmax - actor.system.ame.value) + if (ameDisponible < ptsAme) { + ui.notifications.warn(`Âme insuffisante (requis : ${ptsAme}, disponible : ${ameDisponible}).`) + return + } + + const savoirNiveau = savoirRunesComp?.system?.niveau ?? 0 + const compMod = savoirNiveau === 0 ? -3 : 0 + const basePool = claValeur + savoirNiveau + compMod + (modificateur ?? 0) + const effectivePool = limiteur !== null ? Math.min(basePool, limiteur) : basePool + const difficulte = ptsAme + + const formula = `1d10+${effectivePool}` + const myRoll = await new Roll(formula).evaluate() + await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode")) + + const rollData = this.getBasicRollData() + rollData.alias = actor.name + rollData.actorImg = actor.img + rollData.diceResult = myRoll.terms[0].results[0].result + rollData.finalResult = myRoll.total + rollData.difficulte = difficulte + rollData.roll = foundry.utils.duplicate(myRoll) + this.computeResult(rollData) + + // Compute bonus + let bonusBase = Math.floor(ptsAme / 5) + let bonusFinal = bonusBase + let ameDeduct = ptsAme + let itemDestroyed = false + let message = "" + + if (rollData.isHeroique) { + bonusFinal = bonusBase + 1 + await actor.subPointsAme("prononcer", ptsAme) + await item.update({ + "system.enchantementLoi.actif": true, + "system.enchantementLoi.bonus": bonusFinal, + "system.enchantementLoi.antiChaos": antiChaos, + }) + message = `Réussite héroïque ! L'objet est enchanté avec un bonus de +${bonusFinal}.` + } else if (rollData.isSuccess) { + await actor.subPointsAme("prononcer", ptsAme) + await item.update({ + "system.enchantementLoi.actif": true, + "system.enchantementLoi.bonus": bonusFinal, + "system.enchantementLoi.antiChaos": antiChaos, + }) + message = `Succès ! L'objet est enchanté avec un bonus de +${bonusFinal}.` + } else if (rollData.isDramatique) { + ameDeduct = ptsAme + await actor.subPointsAme("prononcer", ameDeduct) + await item.delete() + itemDestroyed = true + message = `Échec dramatique ! Tous les points d'Âme sont perdus et l'objet est détruit !` + } else { + // Failure: half soul lost + ameDeduct = Math.ceil(ptsAme / 2) + await actor.subPointsAme("prononcer", ameDeduct) + message = `Échec ! ${ameDeduct} points d'Âme perdus. L'objet n'est pas enchanté.` + } + + rollData.itemName = item.name + rollData.itemImg = item.img + rollData.ptsAme = ptsAme + rollData.antiChaos = antiChaos + rollData.bonusFinal = bonusFinal + rollData.ameDeduct = ameDeduct + rollData.itemDestroyed = itemDestroyed + rollData.enchantMessage = message + rollData.effectivePool = effectivePool + rollData.savoirNiveau = savoirNiveau + + this.createChatWithRollMode(actor.name, { + content: await foundry.applications.handlebars.renderTemplate( + `systems/fvtt-mournblade/templates/chat-enchantement-result.hbs`, rollData) + }) + } + } diff --git a/packs/armes/000370.log b/packs/armes/000398.log similarity index 100% rename from packs/armes/000370.log rename to packs/armes/000398.log diff --git a/packs/armes/CURRENT b/packs/armes/CURRENT index 0e10e4f..3e632f4 100644 --- a/packs/armes/CURRENT +++ b/packs/armes/CURRENT @@ -1 +1 @@ -MANIFEST-000368 +MANIFEST-000396 diff --git a/packs/armes/LOG b/packs/armes/LOG index b942314..7f8b154 100644 --- a/packs/armes/LOG +++ b/packs/armes/LOG @@ -1,7 +1,7 @@ -2026/05/01-23:51:23.718556 7fd754fed6c0 Recovering log #366 -2026/05/01-23:51:23.773168 7fd754fed6c0 Delete type=3 #364 -2026/05/01-23:51:23.773253 7fd754fed6c0 Delete type=0 #366 -2026/05/02-08:26:03.206863 7fd7477fe6c0 Level-0 table #371: started -2026/05/02-08:26:03.206928 7fd7477fe6c0 Level-0 table #371: 0 bytes OK -2026/05/02-08:26:03.241219 7fd7477fe6c0 Delete type=0 #369 -2026/05/02-08:26:03.317629 7fd7477fe6c0 Manual compaction at level-0 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at (end) +2026/05/02-22:17:12.618357 7fd747fff6c0 Recovering log #394 +2026/05/02-22:17:12.628023 7fd747fff6c0 Delete type=3 #392 +2026/05/02-22:17:12.628086 7fd747fff6c0 Delete type=0 #394 +2026/05/02-23:14:30.830178 7fd7477fe6c0 Level-0 table #399: started +2026/05/02-23:14:30.830206 7fd7477fe6c0 Level-0 table #399: 0 bytes OK +2026/05/02-23:14:30.842898 7fd7477fe6c0 Delete type=0 #397 +2026/05/02-23:14:30.854693 7fd7477fe6c0 Manual compaction at level-0 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at (end) diff --git a/packs/armes/LOG.old b/packs/armes/LOG.old index 1c64911..8318c33 100644 --- a/packs/armes/LOG.old +++ b/packs/armes/LOG.old @@ -1,7 +1,7 @@ -2026/05/01-23:45:25.849265 7fd7557ee6c0 Recovering log #362 -2026/05/01-23:45:25.858985 7fd7557ee6c0 Delete type=3 #360 -2026/05/01-23:45:25.859069 7fd7557ee6c0 Delete type=0 #362 -2026/05/01-23:51:17.894067 7fd7477fe6c0 Level-0 table #367: started -2026/05/01-23:51:17.894105 7fd7477fe6c0 Level-0 table #367: 0 bytes OK -2026/05/01-23:51:17.920657 7fd7477fe6c0 Delete type=0 #365 -2026/05/01-23:51:18.003271 7fd7477fe6c0 Manual compaction at level-0 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at (end) +2026/05/02-10:42:39.976018 7fd755fef6c0 Recovering log #390 +2026/05/02-10:42:39.986262 7fd755fef6c0 Delete type=3 #388 +2026/05/02-10:42:39.986345 7fd755fef6c0 Delete type=0 #390 +2026/05/02-10:55:36.095495 7fd7477fe6c0 Level-0 table #395: started +2026/05/02-10:55:36.095552 7fd7477fe6c0 Level-0 table #395: 0 bytes OK +2026/05/02-10:55:36.101888 7fd7477fe6c0 Delete type=0 #393 +2026/05/02-10:55:36.113150 7fd7477fe6c0 Manual compaction at level-0 from '!items!0swiE8k5zfUIqmXu' @ 72057594037927935 : 1 .. '!items!wv5EiePmPTpqFutt' @ 0 : 0; will stop at (end) diff --git a/packs/armes/MANIFEST-000368 b/packs/armes/MANIFEST-000396 similarity index 73% rename from packs/armes/MANIFEST-000368 rename to packs/armes/MANIFEST-000396 index f4eeed7..ff0c8ed 100644 Binary files a/packs/armes/MANIFEST-000368 and b/packs/armes/MANIFEST-000396 differ diff --git a/packs/creatures-elementaires/creatures-elementaires/000014.log b/packs/automatons/automatons/000004.log similarity index 100% rename from packs/creatures-elementaires/creatures-elementaires/000014.log rename to packs/automatons/automatons/000004.log diff --git a/packs/automatons/automatons/000005.ldb b/packs/automatons/automatons/000005.ldb new file mode 100644 index 0000000..040f702 Binary files /dev/null and b/packs/automatons/automatons/000005.ldb differ diff --git a/packs/dons/000369.log b/packs/automatons/automatons/000018.log similarity index 100% rename from packs/dons/000369.log rename to packs/automatons/automatons/000018.log diff --git a/packs/automatons/automatons/000020.ldb b/packs/automatons/automatons/000020.ldb new file mode 100644 index 0000000..681408c Binary files /dev/null and b/packs/automatons/automatons/000020.ldb differ diff --git a/packs/automatons/automatons/CURRENT b/packs/automatons/automatons/CURRENT new file mode 100644 index 0000000..1a84852 --- /dev/null +++ b/packs/automatons/automatons/CURRENT @@ -0,0 +1 @@ +MANIFEST-000002 diff --git a/packs/equipement/000369.log b/packs/automatons/automatons/LOCK similarity index 100% rename from packs/equipement/000369.log rename to packs/automatons/automatons/LOCK diff --git a/packs/automatons/automatons/LOG b/packs/automatons/automatons/LOG new file mode 100644 index 0000000..06abb5b --- /dev/null +++ b/packs/automatons/automatons/LOG @@ -0,0 +1,5 @@ +2026/05/02-23:15:37.006124 7fcf117ed6c0 Delete type=3 #1 +2026/05/02-23:15:37.009476 7fcef3fff6c0 Level-0 table #5: started +2026/05/02-23:15:37.013256 7fcef3fff6c0 Level-0 table #5: 30382 bytes OK +2026/05/02-23:15:37.019148 7fcef3fff6c0 Delete type=0 #3 +2026/05/02-23:15:37.019361 7fcef3fff6c0 Manual compaction at level-0 from '!actors!AutomCombatMaj001' @ 72057594037927935 : 1 .. '!actors.items!OeilDeVerite0001.OeilVeritProt001' @ 0 : 0; will stop at (end) diff --git a/packs/automatons/automatons/MANIFEST-000002 b/packs/automatons/automatons/MANIFEST-000002 new file mode 100644 index 0000000..f6c967c Binary files /dev/null and b/packs/automatons/automatons/MANIFEST-000002 differ diff --git a/packs/heritages/000369.log b/packs/capacites-automaton/capacites-automaton/000004.log similarity index 100% rename from packs/heritages/000369.log rename to packs/capacites-automaton/capacites-automaton/000004.log diff --git a/packs/capacites-automaton/capacites-automaton/000005.ldb b/packs/capacites-automaton/capacites-automaton/000005.ldb new file mode 100644 index 0000000..97cda4c Binary files /dev/null and b/packs/capacites-automaton/capacites-automaton/000005.ldb differ diff --git a/packs/capacites-automaton/capacites-automaton/CURRENT b/packs/capacites-automaton/capacites-automaton/CURRENT new file mode 100644 index 0000000..1a84852 --- /dev/null +++ b/packs/capacites-automaton/capacites-automaton/CURRENT @@ -0,0 +1 @@ +MANIFEST-000002 diff --git a/packs/journal-aide/journal-aide/000029.log b/packs/capacites-automaton/capacites-automaton/LOCK similarity index 100% rename from packs/journal-aide/journal-aide/000029.log rename to packs/capacites-automaton/capacites-automaton/LOCK diff --git a/packs/capacites-automaton/capacites-automaton/LOG b/packs/capacites-automaton/capacites-automaton/LOG new file mode 100644 index 0000000..0d5f472 --- /dev/null +++ b/packs/capacites-automaton/capacites-automaton/LOG @@ -0,0 +1,5 @@ +2026/05/02-22:42:38.620324 7fe3377fe6c0 Delete type=3 #1 +2026/05/02-22:42:38.623484 7fe335ffb6c0 Level-0 table #5: started +2026/05/02-22:42:38.627227 7fe335ffb6c0 Level-0 table #5: 3865 bytes OK +2026/05/02-22:42:38.633343 7fe335ffb6c0 Delete type=0 #3 +2026/05/02-22:42:38.633487 7fe335ffb6c0 Manual compaction at level-0 from '!items!CapAutoComAbs001' @ 72057594037927935 : 1 .. '!items!CapAutoVoyVit001' @ 0 : 0; will stop at (end) diff --git a/packs/capacites-automaton/capacites-automaton/MANIFEST-000002 b/packs/capacites-automaton/capacites-automaton/MANIFEST-000002 new file mode 100644 index 0000000..c003ed9 Binary files /dev/null and b/packs/capacites-automaton/capacites-automaton/MANIFEST-000002 differ diff --git a/packs/metiers/000369.log b/packs/creatures-elementaires/creatures-elementaires/000049.log similarity index 100% rename from packs/metiers/000369.log rename to packs/creatures-elementaires/creatures-elementaires/000049.log diff --git a/packs/creatures-elementaires/creatures-elementaires/000016.ldb b/packs/creatures-elementaires/creatures-elementaires/000051.ldb similarity index 55% rename from packs/creatures-elementaires/creatures-elementaires/000016.ldb rename to packs/creatures-elementaires/creatures-elementaires/000051.ldb index 2a7cd1f..839273f 100644 Binary files a/packs/creatures-elementaires/creatures-elementaires/000016.ldb and b/packs/creatures-elementaires/creatures-elementaires/000051.ldb differ diff --git a/packs/creatures-elementaires/creatures-elementaires/CURRENT b/packs/creatures-elementaires/creatures-elementaires/CURRENT index ef20c6d..1afa5d4 100644 --- a/packs/creatures-elementaires/creatures-elementaires/CURRENT +++ b/packs/creatures-elementaires/creatures-elementaires/CURRENT @@ -1 +1 @@ -MANIFEST-000012 +MANIFEST-000047 diff --git a/packs/creatures-elementaires/creatures-elementaires/LOG b/packs/creatures-elementaires/creatures-elementaires/LOG index 6d9f530..2dd1014 100644 --- a/packs/creatures-elementaires/creatures-elementaires/LOG +++ b/packs/creatures-elementaires/creatures-elementaires/LOG @@ -1,12 +1,14 @@ -2026/05/01-23:51:23.539516 7fd754fed6c0 Delete type=3 #1 -2026/05/02-08:26:02.910133 7fd7477fe6c0 Level-0 table #15: started -2026/05/02-08:26:02.928665 7fd7477fe6c0 Level-0 table #15: 17652 bytes OK -2026/05/02-08:26:02.971253 7fd7477fe6c0 Delete type=0 #13 -2026/05/02-08:26:03.098794 7fd7477fe6c0 Manual compaction at level-0 from '!actors!ElemAirMaj0000003' @ 72057594037927935 : 1 .. '!actors.items!zYGQJ8FibxCCWynl' @ 0 : 0; will stop at '!actors.items!zYGQJ8FibxCCWynl' @ 118 : 1 -2026/05/02-08:26:03.098818 7fd7477fe6c0 Compacting 2@0 + 0@1 files -2026/05/02-08:26:03.114677 7fd7477fe6c0 Generated table #16@0: 61 keys, 12773 bytes -2026/05/02-08:26:03.114714 7fd7477fe6c0 Compacted 2@0 + 0@1 files => 12773 bytes -2026/05/02-08:26:03.143492 7fd7477fe6c0 compacted to: files[ 0 1 0 0 0 0 0 ] -2026/05/02-08:26:03.143650 7fd7477fe6c0 Delete type=2 #10 -2026/05/02-08:26:03.143790 7fd7477fe6c0 Delete type=2 #15 -2026/05/02-08:26:03.143908 7fd7477fe6c0 Manual compaction at level-0 from '!actors.items!zYGQJ8FibxCCWynl' @ 118 : 1 .. '!actors.items!zYGQJ8FibxCCWynl' @ 0 : 0; will stop at (end) +2026/05/02-22:17:12.533680 7fd754fed6c0 Recovering log #44 +2026/05/02-22:17:12.543680 7fd754fed6c0 Delete type=3 #42 +2026/05/02-22:17:12.543746 7fd754fed6c0 Delete type=0 #44 +2026/05/02-23:14:30.692810 7fd7477fe6c0 Level-0 table #50: started +2026/05/02-23:14:30.701352 7fd7477fe6c0 Level-0 table #50: 17662 bytes OK +2026/05/02-23:14:30.711206 7fd7477fe6c0 Delete type=0 #48 +2026/05/02-23:14:30.731427 7fd7477fe6c0 Manual compaction at level-0 from '!actors!ElemAirMaj0000003' @ 72057594037927935 : 1 .. '!actors.items!xgdbv9heAyLXGkCu' @ 0 : 0; will stop at '!actors.items!xgdbv9heAyLXGkCu' @ 547 : 1 +2026/05/02-23:14:30.731439 7fd7477fe6c0 Compacting 1@0 + 1@1 files +2026/05/02-23:14:30.738933 7fd7477fe6c0 Generated table #51@0: 61 keys, 12842 bytes +2026/05/02-23:14:30.739005 7fd7477fe6c0 Compacted 1@0 + 1@1 files => 12842 bytes +2026/05/02-23:14:30.747174 7fd7477fe6c0 compacted to: files[ 0 1 0 0 0 0 0 ] +2026/05/02-23:14:30.747353 7fd7477fe6c0 Delete type=2 #46 +2026/05/02-23:14:30.747504 7fd7477fe6c0 Delete type=2 #50 +2026/05/02-23:14:30.779059 7fd7477fe6c0 Manual compaction at level-0 from '!actors.items!xgdbv9heAyLXGkCu' @ 547 : 1 .. '!actors.items!xgdbv9heAyLXGkCu' @ 0 : 0; will stop at (end) diff --git a/packs/creatures-elementaires/creatures-elementaires/LOG.old b/packs/creatures-elementaires/creatures-elementaires/LOG.old index b56b402..13928a3 100644 --- a/packs/creatures-elementaires/creatures-elementaires/LOG.old +++ b/packs/creatures-elementaires/creatures-elementaires/LOG.old @@ -1,4 +1,14 @@ -2026/05/01-23:51:23.458933 7fd754fed6c0 Log #8: 0 ops saved to Table #11 OK -2026/05/01-23:51:23.459064 7fd754fed6c0 Archiving /home/morr/foundry/foundrydata-dev/Data/systems/fvtt-mournblade/packs/creatures-elementaires/creatures-elementaires/000008.log: OK -2026/05/01-23:51:23.459141 7fd754fed6c0 Table #10: 61 entries OK -2026/05/01-23:51:23.477072 7fd754fed6c0 **** Repaired leveldb /home/morr/foundry/foundrydata-dev/Data/systems/fvtt-mournblade/packs/creatures-elementaires/creatures-elementaires; recovered 1 files; 12818 bytes. Some data may have been lost. **** +2026/05/02-10:42:39.892083 7fd754fed6c0 Recovering log #39 +2026/05/02-10:42:39.902219 7fd754fed6c0 Delete type=3 #37 +2026/05/02-10:42:39.902273 7fd754fed6c0 Delete type=0 #39 +2026/05/02-10:55:36.036221 7fd7477fe6c0 Level-0 table #45: started +2026/05/02-10:55:36.039553 7fd7477fe6c0 Level-0 table #45: 17295 bytes OK +2026/05/02-10:55:36.045711 7fd7477fe6c0 Delete type=0 #43 +2026/05/02-10:55:36.063221 7fd7477fe6c0 Manual compaction at level-0 from '!actors!ElemAirMaj0000003' @ 72057594037927935 : 1 .. '!actors.items!vZXf6vfOj986NEYr' @ 0 : 0; will stop at '!actors.items!zCAO1NzNTX1SCdQ8' @ 456 : 0 +2026/05/02-10:55:36.063230 7fd7477fe6c0 Compacting 1@0 + 1@1 files +2026/05/02-10:55:36.066937 7fd7477fe6c0 Generated table #46@0: 61 keys, 12728 bytes +2026/05/02-10:55:36.066956 7fd7477fe6c0 Compacted 1@0 + 1@1 files => 12728 bytes +2026/05/02-10:55:36.073653 7fd7477fe6c0 compacted to: files[ 0 1 0 0 0 0 0 ] +2026/05/02-10:55:36.073784 7fd7477fe6c0 Delete type=2 #41 +2026/05/02-10:55:36.073906 7fd7477fe6c0 Delete type=2 #45 +2026/05/02-10:55:36.083653 7fd7477fe6c0 Manual compaction at level-0 from '!actors.items!zCAO1NzNTX1SCdQ8' @ 456 : 0 .. '!actors.items!vZXf6vfOj986NEYr' @ 0 : 0; will stop at (end) diff --git a/packs/creatures-elementaires/creatures-elementaires/MANIFEST-000012 b/packs/creatures-elementaires/creatures-elementaires/MANIFEST-000012 deleted file mode 100644 index 3b20883..0000000 Binary files a/packs/creatures-elementaires/creatures-elementaires/MANIFEST-000012 and /dev/null differ diff --git a/packs/creatures-elementaires/creatures-elementaires/MANIFEST-000047 b/packs/creatures-elementaires/creatures-elementaires/MANIFEST-000047 new file mode 100644 index 0000000..82f807e Binary files /dev/null and b/packs/creatures-elementaires/creatures-elementaires/MANIFEST-000047 differ diff --git a/packs/origines/000369.log b/packs/demons-types/demons-types/000028.log similarity index 100% rename from packs/origines/000369.log rename to packs/demons-types/demons-types/000028.log diff --git a/packs/demons-types/demons-types/000030.ldb b/packs/demons-types/demons-types/000030.ldb new file mode 100644 index 0000000..2dd1cec Binary files /dev/null and b/packs/demons-types/demons-types/000030.ldb differ diff --git a/packs/demons-types/demons-types/CURRENT b/packs/demons-types/demons-types/CURRENT new file mode 100644 index 0000000..8b15215 --- /dev/null +++ b/packs/demons-types/demons-types/CURRENT @@ -0,0 +1 @@ +MANIFEST-000026 diff --git a/packs/pactes-dons/000047.log b/packs/demons-types/demons-types/LOCK similarity index 100% rename from packs/pactes-dons/000047.log rename to packs/demons-types/demons-types/LOCK diff --git a/packs/demons-types/demons-types/LOG b/packs/demons-types/demons-types/LOG new file mode 100644 index 0000000..2fc009c --- /dev/null +++ b/packs/demons-types/demons-types/LOG @@ -0,0 +1,15 @@ +2026/05/02-22:17:12.519161 7fd755fef6c0 Recovering log #23 +2026/05/02-22:17:12.529405 7fd755fef6c0 Delete type=3 #21 +2026/05/02-22:17:12.529482 7fd755fef6c0 Delete type=0 #23 +2026/05/02-23:14:30.629959 7fd7477fe6c0 Level-0 table #29: started +2026/05/02-23:14:30.639557 7fd7477fe6c0 Level-0 table #29: 24275 bytes OK +2026/05/02-23:14:30.650756 7fd7477fe6c0 Delete type=0 #27 +2026/05/02-23:14:30.662871 7fd7477fe6c0 Manual compaction at level-0 from '!actors!DemonCombatMaj001' @ 72057594037927935 : 1 .. '!actors.items!ip5rWxXRlXaEyQD6' @ 0 : 0; will stop at (end) +2026/05/02-23:14:30.662925 7fd7477fe6c0 Manual compaction at level-1 from '!actors!DemonCombatMaj001' @ 72057594037927935 : 1 .. '!actors.items!ip5rWxXRlXaEyQD6' @ 0 : 0; will stop at '!actors.items!ip5rWxXRlXaEyQD6' @ 366 : 1 +2026/05/02-23:14:30.662935 7fd7477fe6c0 Compacting 1@1 + 1@2 files +2026/05/02-23:14:30.671179 7fd7477fe6c0 Generated table #30@1: 99 keys, 34643 bytes +2026/05/02-23:14:30.671218 7fd7477fe6c0 Compacted 1@1 + 1@2 files => 34643 bytes +2026/05/02-23:14:30.682390 7fd7477fe6c0 compacted to: files[ 0 0 1 0 0 0 0 ] +2026/05/02-23:14:30.682554 7fd7477fe6c0 Delete type=2 #25 +2026/05/02-23:14:30.682716 7fd7477fe6c0 Delete type=2 #29 +2026/05/02-23:14:30.731391 7fd7477fe6c0 Manual compaction at level-1 from '!actors.items!ip5rWxXRlXaEyQD6' @ 366 : 1 .. '!actors.items!ip5rWxXRlXaEyQD6' @ 0 : 0; will stop at (end) diff --git a/packs/demons-types/demons-types/LOG.old b/packs/demons-types/demons-types/LOG.old new file mode 100644 index 0000000..2ea2cc5 --- /dev/null +++ b/packs/demons-types/demons-types/LOG.old @@ -0,0 +1,15 @@ +2026/05/02-10:42:39.878619 7fd7557ee6c0 Recovering log #18 +2026/05/02-10:42:39.888389 7fd7557ee6c0 Delete type=3 #16 +2026/05/02-10:42:39.888487 7fd7557ee6c0 Delete type=0 #18 +2026/05/02-10:55:36.007797 7fd7477fe6c0 Level-0 table #24: started +2026/05/02-10:55:36.011680 7fd7477fe6c0 Level-0 table #24: 24272 bytes OK +2026/05/02-10:55:36.018592 7fd7477fe6c0 Delete type=0 #22 +2026/05/02-10:55:36.025623 7fd7477fe6c0 Manual compaction at level-0 from '!actors!DemonCombatMaj001' @ 72057594037927935 : 1 .. '!actors.items!GqtMRrjUTucZj9cj' @ 0 : 0; will stop at (end) +2026/05/02-10:55:36.025666 7fd7477fe6c0 Manual compaction at level-1 from '!actors!DemonCombatMaj001' @ 72057594037927935 : 1 .. '!actors.items!GqtMRrjUTucZj9cj' @ 0 : 0; will stop at '!actors.items!gPJSnL0lXZ0x3Uvt' @ 300 : 0 +2026/05/02-10:55:36.025679 7fd7477fe6c0 Compacting 1@1 + 1@2 files +2026/05/02-10:55:36.030173 7fd7477fe6c0 Generated table #25@1: 99 keys, 34641 bytes +2026/05/02-10:55:36.030197 7fd7477fe6c0 Compacted 1@1 + 1@2 files => 34641 bytes +2026/05/02-10:55:36.035952 7fd7477fe6c0 compacted to: files[ 0 0 1 0 0 0 0 ] +2026/05/02-10:55:36.036040 7fd7477fe6c0 Delete type=2 #20 +2026/05/02-10:55:36.036148 7fd7477fe6c0 Delete type=2 #24 +2026/05/02-10:55:36.063204 7fd7477fe6c0 Manual compaction at level-1 from '!actors.items!gPJSnL0lXZ0x3Uvt' @ 300 : 0 .. '!actors.items!GqtMRrjUTucZj9cj' @ 0 : 0; will stop at (end) diff --git a/packs/demons-types/demons-types/MANIFEST-000026 b/packs/demons-types/demons-types/MANIFEST-000026 new file mode 100644 index 0000000..4dce264 Binary files /dev/null and b/packs/demons-types/demons-types/MANIFEST-000026 differ diff --git a/packs/pnj-creatures/000265.log b/packs/dons/000397.log similarity index 100% rename from packs/pnj-creatures/000265.log rename to packs/dons/000397.log diff --git a/packs/dons/CURRENT b/packs/dons/CURRENT index 07a4d2c..e889b4d 100644 --- a/packs/dons/CURRENT +++ b/packs/dons/CURRENT @@ -1 +1 @@ -MANIFEST-000367 +MANIFEST-000395 diff --git a/packs/dons/LOG b/packs/dons/LOG index fc284d9..0a01b62 100644 --- a/packs/dons/LOG +++ b/packs/dons/LOG @@ -1,7 +1,7 @@ -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) +2026/05/02-22:17:12.656044 7fd754fed6c0 Recovering log #393 +2026/05/02-22:17:12.666131 7fd754fed6c0 Delete type=3 #391 +2026/05/02-22:17:12.666231 7fd754fed6c0 Delete type=0 #393 +2026/05/02-23:14:30.872981 7fd7477fe6c0 Level-0 table #398: started +2026/05/02-23:14:30.873018 7fd7477fe6c0 Level-0 table #398: 0 bytes OK +2026/05/02-23:14:30.884443 7fd7477fe6c0 Delete type=0 #396 +2026/05/02-23:14:30.905834 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 ede433b..a0eae73 100644 --- a/packs/dons/LOG.old +++ b/packs/dons/LOG.old @@ -1,7 +1,7 @@ -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) +2026/05/02-10:42:40.016911 7fd7557ee6c0 Recovering log #389 +2026/05/02-10:42:40.026916 7fd7557ee6c0 Delete type=3 #387 +2026/05/02-10:42:40.026980 7fd7557ee6c0 Delete type=0 #389 +2026/05/02-10:55:36.154029 7fd7477fe6c0 Level-0 table #394: started +2026/05/02-10:55:36.154054 7fd7477fe6c0 Level-0 table #394: 0 bytes OK +2026/05/02-10:55:36.161757 7fd7477fe6c0 Delete type=0 #392 +2026/05/02-10:55:36.175161 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-000395 similarity index 73% rename from packs/dons/MANIFEST-000367 rename to packs/dons/MANIFEST-000395 index 084bdbe..79621e3 100644 Binary files a/packs/dons/MANIFEST-000367 and b/packs/dons/MANIFEST-000395 differ diff --git a/packs/pouvoirs-elementaires/pouvoirs-elementaires/000012.log b/packs/equipement/000397.log similarity index 100% rename from packs/pouvoirs-elementaires/pouvoirs-elementaires/000012.log rename to packs/equipement/000397.log diff --git a/packs/equipement/CURRENT b/packs/equipement/CURRENT index 07a4d2c..e889b4d 100644 --- a/packs/equipement/CURRENT +++ b/packs/equipement/CURRENT @@ -1 +1 @@ -MANIFEST-000367 +MANIFEST-000395 diff --git a/packs/equipement/LOG b/packs/equipement/LOG index c635eb8..f6c2930 100644 --- a/packs/equipement/LOG +++ b/packs/equipement/LOG @@ -1,7 +1,7 @@ -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) +2026/05/02-22:17:12.642987 7fd747fff6c0 Recovering log #393 +2026/05/02-22:17:12.653769 7fd747fff6c0 Delete type=3 #391 +2026/05/02-22:17:12.653830 7fd747fff6c0 Delete type=0 #393 +2026/05/02-23:14:30.884592 7fd7477fe6c0 Level-0 table #398: started +2026/05/02-23:14:30.884621 7fd7477fe6c0 Level-0 table #398: 0 bytes OK +2026/05/02-23:14:30.895025 7fd7477fe6c0 Delete type=0 #396 +2026/05/02-23:14:30.905852 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 ac338a2..eac2bf5 100644 --- a/packs/equipement/LOG.old +++ b/packs/equipement/LOG.old @@ -1,7 +1,7 @@ -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) +2026/05/02-10:42:40.003066 7fd755fef6c0 Recovering log #389 +2026/05/02-10:42:40.013617 7fd755fef6c0 Delete type=3 #387 +2026/05/02-10:42:40.013702 7fd755fef6c0 Delete type=0 #389 +2026/05/02-10:55:36.147664 7fd7477fe6c0 Level-0 table #394: started +2026/05/02-10:55:36.147700 7fd7477fe6c0 Level-0 table #394: 0 bytes OK +2026/05/02-10:55:36.153904 7fd7477fe6c0 Delete type=0 #392 +2026/05/02-10:55:36.168246 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-000395 similarity index 73% rename from packs/equipement/MANIFEST-000367 rename to packs/equipement/MANIFEST-000395 index aed3237..a07bde7 100644 Binary files a/packs/equipement/MANIFEST-000367 and b/packs/equipement/MANIFEST-000395 differ diff --git a/packs/protection/000369.log b/packs/heritages/000397.log similarity index 100% rename from packs/protection/000369.log rename to packs/heritages/000397.log diff --git a/packs/heritages/CURRENT b/packs/heritages/CURRENT index 07a4d2c..e889b4d 100644 --- a/packs/heritages/CURRENT +++ b/packs/heritages/CURRENT @@ -1 +1 @@ -MANIFEST-000367 +MANIFEST-000395 diff --git a/packs/heritages/LOG b/packs/heritages/LOG index e2d6b15..d5f9cdb 100644 --- a/packs/heritages/LOG +++ b/packs/heritages/LOG @@ -1,7 +1,7 @@ -2026/05/01-23:51:24.071860 7fd755fef6c0 Recovering log #365 -2026/05/01-23:51:24.119019 7fd755fef6c0 Delete type=3 #363 -2026/05/01-23:51:24.119097 7fd755fef6c0 Delete type=0 #365 -2026/05/02-08:26:03.577938 7fd7477fe6c0 Level-0 table #370: started -2026/05/02-08:26:03.577975 7fd7477fe6c0 Level-0 table #370: 0 bytes OK -2026/05/02-08:26:03.614658 7fd7477fe6c0 Delete type=0 #368 -2026/05/02-08:26:03.684819 7fd7477fe6c0 Manual compaction at level-0 from '!items!2GaJZsqr2c2mcDRv' @ 72057594037927935 : 1 .. '!items!ui4JGsGwHNlSXVK3' @ 0 : 0; will stop at (end) +2026/05/02-22:17:12.696255 7fd747fff6c0 Recovering log #393 +2026/05/02-22:17:12.706814 7fd747fff6c0 Delete type=3 #391 +2026/05/02-22:17:12.706879 7fd747fff6c0 Delete type=0 #393 +2026/05/02-23:14:30.921060 7fd7477fe6c0 Level-0 table #398: started +2026/05/02-23:14:30.921121 7fd7477fe6c0 Level-0 table #398: 0 bytes OK +2026/05/02-23:14:30.931783 7fd7477fe6c0 Delete type=0 #396 +2026/05/02-23:14:30.954777 7fd7477fe6c0 Manual compaction at level-0 from '!items!2GaJZsqr2c2mcDRv' @ 72057594037927935 : 1 .. '!items!ui4JGsGwHNlSXVK3' @ 0 : 0; will stop at (end) diff --git a/packs/heritages/LOG.old b/packs/heritages/LOG.old index 39bf496..15a375c 100644 --- a/packs/heritages/LOG.old +++ b/packs/heritages/LOG.old @@ -1,7 +1,7 @@ -2026/05/01-23:45:25.928160 7fd7557ee6c0 Recovering log #361 -2026/05/01-23:45:25.938724 7fd7557ee6c0 Delete type=3 #359 -2026/05/01-23:45:25.938783 7fd7557ee6c0 Delete type=0 #361 -2026/05/01-23:51:18.037971 7fd7477fe6c0 Level-0 table #366: started -2026/05/01-23:51:18.038026 7fd7477fe6c0 Level-0 table #366: 0 bytes OK -2026/05/01-23:51:18.080237 7fd7477fe6c0 Delete type=0 #364 -2026/05/01-23:51:18.167195 7fd7477fe6c0 Manual compaction at level-0 from '!items!2GaJZsqr2c2mcDRv' @ 72057594037927935 : 1 .. '!items!ui4JGsGwHNlSXVK3' @ 0 : 0; will stop at (end) +2026/05/02-10:42:40.055555 7fd747fff6c0 Recovering log #389 +2026/05/02-10:42:40.065759 7fd747fff6c0 Delete type=3 #387 +2026/05/02-10:42:40.065822 7fd747fff6c0 Delete type=0 #389 +2026/05/02-10:55:36.175186 7fd7477fe6c0 Level-0 table #394: started +2026/05/02-10:55:36.175225 7fd7477fe6c0 Level-0 table #394: 0 bytes OK +2026/05/02-10:55:36.182810 7fd7477fe6c0 Delete type=0 #392 +2026/05/02-10:55:36.196140 7fd7477fe6c0 Manual compaction at level-0 from '!items!2GaJZsqr2c2mcDRv' @ 72057594037927935 : 1 .. '!items!ui4JGsGwHNlSXVK3' @ 0 : 0; will stop at (end) diff --git a/packs/heritages/MANIFEST-000367 b/packs/heritages/MANIFEST-000395 similarity index 73% rename from packs/heritages/MANIFEST-000367 rename to packs/heritages/MANIFEST-000395 index 09efdc1..408b93e 100644 Binary files a/packs/heritages/MANIFEST-000367 and b/packs/heritages/MANIFEST-000395 differ diff --git a/packs/runes/000370.log b/packs/journal-aide/journal-aide/000057.log similarity index 100% rename from packs/runes/000370.log rename to packs/journal-aide/journal-aide/000057.log diff --git a/packs/journal-aide/journal-aide/CURRENT b/packs/journal-aide/journal-aide/CURRENT index 3bf5164..8355b42 100644 --- a/packs/journal-aide/journal-aide/CURRENT +++ b/packs/journal-aide/journal-aide/CURRENT @@ -1 +1 @@ -MANIFEST-000027 +MANIFEST-000055 diff --git a/packs/journal-aide/journal-aide/LOG b/packs/journal-aide/journal-aide/LOG index 7e500cb..781810a 100644 --- a/packs/journal-aide/journal-aide/LOG +++ b/packs/journal-aide/journal-aide/LOG @@ -1,8 +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) +2026/05/02-22:17:12.787407 7fd754fed6c0 Recovering log #53 +2026/05/02-22:17:12.798064 7fd754fed6c0 Delete type=3 #51 +2026/05/02-22:17:12.798132 7fd754fed6c0 Delete type=0 #53 +2026/05/02-23:14:30.999818 7fd7477fe6c0 Level-0 table #58: started +2026/05/02-23:14:30.999850 7fd7477fe6c0 Level-0 table #58: 0 bytes OK +2026/05/02-23:14:31.012433 7fd7477fe6c0 Delete type=0 #56 +2026/05/02-23:14:31.041770 7fd7477fe6c0 Manual compaction at level-0 from '!journal!JurnlHelpGuide01' @ 72057594037927935 : 1 .. '!journal.pages!JurnlHelpGuide01.JHelpPage0000008' @ 0 : 0; will stop at (end) +2026/05/02-23:14:31.054104 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 index 44a4845..481974f 100644 --- a/packs/journal-aide/journal-aide/LOG.old +++ b/packs/journal-aide/journal-aide/LOG.old @@ -1,8 +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) +2026/05/02-10:42:40.145436 7fd754fed6c0 Recovering log #49 +2026/05/02-10:42:40.155668 7fd754fed6c0 Delete type=3 #47 +2026/05/02-10:42:40.155737 7fd754fed6c0 Delete type=0 #49 +2026/05/02-10:55:36.221587 7fd7477fe6c0 Level-0 table #54: started +2026/05/02-10:55:36.221615 7fd7477fe6c0 Level-0 table #54: 0 bytes OK +2026/05/02-10:55:36.228497 7fd7477fe6c0 Delete type=0 #52 +2026/05/02-10:55:36.234981 7fd7477fe6c0 Manual compaction at level-0 from '!journal!JurnlHelpGuide01' @ 72057594037927935 : 1 .. '!journal.pages!JurnlHelpGuide01.JHelpPage0000008' @ 0 : 0; will stop at (end) +2026/05/02-10:55:36.253890 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-000055 similarity index 73% rename from packs/journal-aide/journal-aide/MANIFEST-000027 rename to packs/journal-aide/journal-aide/MANIFEST-000055 index a9ee538..77d5275 100644 Binary files a/packs/journal-aide/journal-aide/MANIFEST-000027 and b/packs/journal-aide/journal-aide/MANIFEST-000055 differ diff --git a/packs/scenes/000285.log b/packs/metiers/000397.log similarity index 100% rename from packs/scenes/000285.log rename to packs/metiers/000397.log diff --git a/packs/metiers/CURRENT b/packs/metiers/CURRENT index 07a4d2c..e889b4d 100644 --- a/packs/metiers/CURRENT +++ b/packs/metiers/CURRENT @@ -1 +1 @@ -MANIFEST-000367 +MANIFEST-000395 diff --git a/packs/metiers/LOG b/packs/metiers/LOG index 312fb89..31ec3e0 100644 --- a/packs/metiers/LOG +++ b/packs/metiers/LOG @@ -1,7 +1,7 @@ -2026/05/01-23:51:24.121693 7fd747fff6c0 Recovering log #365 -2026/05/01-23:51:24.175522 7fd747fff6c0 Delete type=3 #363 -2026/05/01-23:51:24.175606 7fd747fff6c0 Delete type=0 #365 -2026/05/02-08:26:03.543492 7fd7477fe6c0 Level-0 table #370: started -2026/05/02-08:26:03.543537 7fd7477fe6c0 Level-0 table #370: 0 bytes OK -2026/05/02-08:26:03.577774 7fd7477fe6c0 Delete type=0 #368 -2026/05/02-08:26:03.614845 7fd7477fe6c0 Manual compaction at level-0 from '!items!09s33sFuju8zjPqI' @ 72057594037927935 : 1 .. '!items!xlyFCQClBZ1N3O1B' @ 0 : 0; will stop at (end) +2026/05/02-22:17:12.708790 7fd7557ee6c0 Recovering log #393 +2026/05/02-22:17:12.719560 7fd7557ee6c0 Delete type=3 #391 +2026/05/02-22:17:12.719616 7fd7557ee6c0 Delete type=0 #393 +2026/05/02-23:14:30.931940 7fd7477fe6c0 Level-0 table #398: started +2026/05/02-23:14:30.931974 7fd7477fe6c0 Level-0 table #398: 0 bytes OK +2026/05/02-23:14:30.943441 7fd7477fe6c0 Delete type=0 #396 +2026/05/02-23:14:30.954807 7fd7477fe6c0 Manual compaction at level-0 from '!items!09s33sFuju8zjPqI' @ 72057594037927935 : 1 .. '!items!xlyFCQClBZ1N3O1B' @ 0 : 0; will stop at (end) diff --git a/packs/metiers/LOG.old b/packs/metiers/LOG.old index f7b68cd..a57a534 100644 --- a/packs/metiers/LOG.old +++ b/packs/metiers/LOG.old @@ -1,7 +1,7 @@ -2026/05/01-23:45:25.941264 7fd755fef6c0 Recovering log #361 -2026/05/01-23:45:25.951481 7fd755fef6c0 Delete type=3 #359 -2026/05/01-23:45:25.951534 7fd755fef6c0 Delete type=0 #361 -2026/05/01-23:51:18.167311 7fd7477fe6c0 Level-0 table #366: started -2026/05/01-23:51:18.167365 7fd7477fe6c0 Level-0 table #366: 0 bytes OK -2026/05/01-23:51:18.213184 7fd7477fe6c0 Delete type=0 #364 -2026/05/01-23:51:18.334580 7fd7477fe6c0 Manual compaction at level-0 from '!items!09s33sFuju8zjPqI' @ 72057594037927935 : 1 .. '!items!xlyFCQClBZ1N3O1B' @ 0 : 0; will stop at (end) +2026/05/02-10:42:40.067527 7fd7557ee6c0 Recovering log #389 +2026/05/02-10:42:40.078178 7fd7557ee6c0 Delete type=3 #387 +2026/05/02-10:42:40.078243 7fd7557ee6c0 Delete type=0 #389 +2026/05/02-10:55:36.182940 7fd7477fe6c0 Level-0 table #394: started +2026/05/02-10:55:36.182962 7fd7477fe6c0 Level-0 table #394: 0 bytes OK +2026/05/02-10:55:36.189078 7fd7477fe6c0 Delete type=0 #392 +2026/05/02-10:55:36.202390 7fd7477fe6c0 Manual compaction at level-0 from '!items!09s33sFuju8zjPqI' @ 72057594037927935 : 1 .. '!items!xlyFCQClBZ1N3O1B' @ 0 : 0; will stop at (end) diff --git a/packs/metiers/MANIFEST-000367 b/packs/metiers/MANIFEST-000395 similarity index 73% rename from packs/metiers/MANIFEST-000367 rename to packs/metiers/MANIFEST-000395 index b7f855c..4bb1429 100644 Binary files a/packs/metiers/MANIFEST-000367 and b/packs/metiers/MANIFEST-000395 differ diff --git a/packs/skills-creatures/000277.log b/packs/origines/000397.log similarity index 100% rename from packs/skills-creatures/000277.log rename to packs/origines/000397.log diff --git a/packs/origines/CURRENT b/packs/origines/CURRENT index 07a4d2c..e889b4d 100644 --- a/packs/origines/CURRENT +++ b/packs/origines/CURRENT @@ -1 +1 @@ -MANIFEST-000367 +MANIFEST-000395 diff --git a/packs/origines/LOG b/packs/origines/LOG index 36d2c59..05402d1 100644 --- a/packs/origines/LOG +++ b/packs/origines/LOG @@ -1,7 +1,7 @@ -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) +2026/05/02-22:17:12.682739 7fd754fed6c0 Recovering log #393 +2026/05/02-22:17:12.693951 7fd754fed6c0 Delete type=3 #391 +2026/05/02-22:17:12.694015 7fd754fed6c0 Delete type=0 #393 +2026/05/02-23:14:30.905870 7fd7477fe6c0 Level-0 table #398: started +2026/05/02-23:14:30.905915 7fd7477fe6c0 Level-0 table #398: 0 bytes OK +2026/05/02-23:14:30.920801 7fd7477fe6c0 Delete type=0 #396 +2026/05/02-23:14:30.943625 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 881df00..c7d9c63 100644 --- a/packs/origines/LOG.old +++ b/packs/origines/LOG.old @@ -1,7 +1,7 @@ -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) +2026/05/02-10:42:40.043275 7fd7557ee6c0 Recovering log #389 +2026/05/02-10:42:40.053566 7fd7557ee6c0 Delete type=3 #387 +2026/05/02-10:42:40.053647 7fd7557ee6c0 Delete type=0 #389 +2026/05/02-10:55:36.161945 7fd7477fe6c0 Level-0 table #394: started +2026/05/02-10:55:36.161989 7fd7477fe6c0 Level-0 table #394: 0 bytes OK +2026/05/02-10:55:36.168112 7fd7477fe6c0 Delete type=0 #392 +2026/05/02-10:55:36.175175 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-000395 similarity index 73% rename from packs/origines/MANIFEST-000367 rename to packs/origines/MANIFEST-000395 index e285fb0..073f1d3 100644 Binary files a/packs/origines/MANIFEST-000367 and b/packs/origines/MANIFEST-000395 differ diff --git a/packs/skills/000369.log b/packs/pactes-dons/000075.log similarity index 100% rename from packs/skills/000369.log rename to packs/pactes-dons/000075.log diff --git a/packs/pactes-dons/CURRENT b/packs/pactes-dons/CURRENT index 800d995..60f8f3c 100644 --- a/packs/pactes-dons/CURRENT +++ b/packs/pactes-dons/CURRENT @@ -1 +1 @@ -MANIFEST-000045 +MANIFEST-000073 diff --git a/packs/pactes-dons/LOG b/packs/pactes-dons/LOG index 47b240b..15db546 100644 --- a/packs/pactes-dons/LOG +++ b/packs/pactes-dons/LOG @@ -1,7 +1,7 @@ -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) +2026/05/02-22:17:12.669289 7fd755fef6c0 Recovering log #71 +2026/05/02-22:17:12.680179 7fd755fef6c0 Delete type=3 #69 +2026/05/02-22:17:12.680245 7fd755fef6c0 Delete type=0 #71 +2026/05/02-23:14:30.895178 7fd7477fe6c0 Level-0 table #76: started +2026/05/02-23:14:30.895205 7fd7477fe6c0 Level-0 table #76: 0 bytes OK +2026/05/02-23:14:30.905579 7fd7477fe6c0 Delete type=0 #74 +2026/05/02-23:14:30.921033 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 index ed09655..264c6d3 100644 --- a/packs/pactes-dons/LOG.old +++ b/packs/pactes-dons/LOG.old @@ -1,7 +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) +2026/05/02-10:42:40.029411 7fd755fef6c0 Recovering log #67 +2026/05/02-10:42:40.040864 7fd755fef6c0 Delete type=3 #65 +2026/05/02-10:42:40.040925 7fd755fef6c0 Delete type=0 #67 +2026/05/02-10:55:36.168263 7fd7477fe6c0 Level-0 table #72: started +2026/05/02-10:55:36.168296 7fd7477fe6c0 Level-0 table #72: 0 bytes OK +2026/05/02-10:55:36.175025 7fd7477fe6c0 Delete type=0 #70 +2026/05/02-10:55:36.182928 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-000073 similarity index 76% rename from packs/pactes-dons/MANIFEST-000045 rename to packs/pactes-dons/MANIFEST-000073 index de362d5..efabd19 100644 Binary files a/packs/pactes-dons/MANIFEST-000045 and b/packs/pactes-dons/MANIFEST-000073 differ diff --git a/packs/pnj-creatures/000232.ldb b/packs/pnj-creatures/000279.ldb similarity index 100% rename from packs/pnj-creatures/000232.ldb rename to packs/pnj-creatures/000279.ldb diff --git a/packs/tables/000369.log b/packs/pnj-creatures/000294.log similarity index 100% rename from packs/tables/000369.log rename to packs/pnj-creatures/000294.log diff --git a/packs/pnj-creatures/CURRENT b/packs/pnj-creatures/CURRENT index 45bcdf0..1c8246a 100644 --- a/packs/pnj-creatures/CURRENT +++ b/packs/pnj-creatures/CURRENT @@ -1 +1 @@ -MANIFEST-000263 +MANIFEST-000292 diff --git a/packs/pnj-creatures/LOG b/packs/pnj-creatures/LOG index 2a78a87..c7c8ba8 100644 --- a/packs/pnj-creatures/LOG +++ b/packs/pnj-creatures/LOG @@ -1,7 +1,7 @@ -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) +2026/05/02-22:17:12.499898 7fd7557ee6c0 Recovering log #290 +2026/05/02-22:17:12.510769 7fd7557ee6c0 Delete type=3 #288 +2026/05/02-22:17:12.510837 7fd7557ee6c0 Delete type=0 #290 +2026/05/02-23:14:30.650934 7fd7477fe6c0 Level-0 table #295: started +2026/05/02-23:14:30.650972 7fd7477fe6c0 Level-0 table #295: 0 bytes OK +2026/05/02-23:14:30.662662 7fd7477fe6c0 Delete type=0 #293 +2026/05/02-23:14:30.662885 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 6e97c01..6b45fab 100644 --- a/packs/pnj-creatures/LOG.old +++ b/packs/pnj-creatures/LOG.old @@ -1,7 +1,7 @@ -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) +2026/05/02-10:42:39.863251 7fd754fed6c0 Recovering log #286 +2026/05/02-10:42:39.874170 7fd754fed6c0 Delete type=3 #284 +2026/05/02-10:42:39.874230 7fd754fed6c0 Delete type=0 #286 +2026/05/02-10:55:36.018781 7fd7477fe6c0 Level-0 table #291: started +2026/05/02-10:55:36.018828 7fd7477fe6c0 Level-0 table #291: 0 bytes OK +2026/05/02-10:55:36.025349 7fd7477fe6c0 Delete type=0 #289 +2026/05/02-10:55:36.025635 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 deleted file mode 100644 index fe22110..0000000 Binary files a/packs/pnj-creatures/MANIFEST-000263 and /dev/null differ diff --git a/packs/pnj-creatures/MANIFEST-000292 b/packs/pnj-creatures/MANIFEST-000292 new file mode 100644 index 0000000..8e79d1d Binary files /dev/null and b/packs/pnj-creatures/MANIFEST-000292 differ diff --git a/packs/pouvoirs-elementaires/pouvoirs-elementaires/000014.ldb b/packs/pouvoirs-elementaires/pouvoirs-elementaires/000014.ldb deleted file mode 100644 index 6699cca..0000000 Binary files a/packs/pouvoirs-elementaires/pouvoirs-elementaires/000014.ldb and /dev/null differ diff --git a/packs/tendances/000369.log b/packs/pouvoirs-elementaires/pouvoirs-elementaires/000047.log similarity index 100% rename from packs/tendances/000369.log rename to packs/pouvoirs-elementaires/pouvoirs-elementaires/000047.log diff --git a/packs/pouvoirs-elementaires/pouvoirs-elementaires/000049.ldb b/packs/pouvoirs-elementaires/pouvoirs-elementaires/000049.ldb new file mode 100644 index 0000000..f747eec Binary files /dev/null and b/packs/pouvoirs-elementaires/pouvoirs-elementaires/000049.ldb differ diff --git a/packs/pouvoirs-elementaires/pouvoirs-elementaires/CURRENT b/packs/pouvoirs-elementaires/pouvoirs-elementaires/CURRENT index 3051f81..800d995 100644 --- a/packs/pouvoirs-elementaires/pouvoirs-elementaires/CURRENT +++ b/packs/pouvoirs-elementaires/pouvoirs-elementaires/CURRENT @@ -1 +1 @@ -MANIFEST-000010 +MANIFEST-000045 diff --git a/packs/pouvoirs-elementaires/pouvoirs-elementaires/LOG b/packs/pouvoirs-elementaires/pouvoirs-elementaires/LOG index 551dd1e..b612149 100644 --- a/packs/pouvoirs-elementaires/pouvoirs-elementaires/LOG +++ b/packs/pouvoirs-elementaires/pouvoirs-elementaires/LOG @@ -1,15 +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) +2026/05/02-22:17:12.590806 7fd755fef6c0 Recovering log #42 +2026/05/02-22:17:12.601747 7fd755fef6c0 Delete type=3 #40 +2026/05/02-22:17:12.601846 7fd755fef6c0 Delete type=0 #42 +2026/05/02-23:14:30.796686 7fd7477fe6c0 Level-0 table #48: started +2026/05/02-23:14:30.803793 7fd7477fe6c0 Level-0 table #48: 10558 bytes OK +2026/05/02-23:14:30.814403 7fd7477fe6c0 Delete type=0 #46 +2026/05/02-23:14:30.843076 7fd7477fe6c0 Manual compaction at level-0 from '!items!CapAirAppar0000001' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end) +2026/05/02-23:14:30.854710 7fd7477fe6c0 Manual compaction at level-1 from '!items!CapAirAppar0000001' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 253 : 1 +2026/05/02-23:14:30.854719 7fd7477fe6c0 Compacting 1@1 + 1@2 files +2026/05/02-23:14:30.861664 7fd7477fe6c0 Generated table #49@1: 1 keys, 1092 bytes +2026/05/02-23:14:30.861694 7fd7477fe6c0 Compacted 1@1 + 1@2 files => 1092 bytes +2026/05/02-23:14:30.872601 7fd7477fe6c0 compacted to: files[ 0 0 2 0 0 0 0 ] +2026/05/02-23:14:30.872731 7fd7477fe6c0 Delete type=2 #44 +2026/05/02-23:14:30.872863 7fd7477fe6c0 Delete type=2 #48 +2026/05/02-23:14:30.895164 7fd7477fe6c0 Manual compaction at level-1 from '!items!null' @ 253 : 1 .. '!items!null' @ 0 : 0; will stop at (end) diff --git a/packs/pouvoirs-elementaires/pouvoirs-elementaires/LOG.old b/packs/pouvoirs-elementaires/pouvoirs-elementaires/LOG.old index 663215a..72b62a0 100644 --- a/packs/pouvoirs-elementaires/pouvoirs-elementaires/LOG.old +++ b/packs/pouvoirs-elementaires/pouvoirs-elementaires/LOG.old @@ -1,8 +1,15 @@ -2026/05/01-23:45:25.824231 7fd754fed6c0 Recovering log #4 -2026/05/01-23:45:25.834817 7fd754fed6c0 Delete type=3 #2 -2026/05/01-23:45:25.834893 7fd754fed6c0 Delete type=0 #4 -2026/05/01-23:51:17.830570 7fd7477fe6c0 Level-0 table #9: started -2026/05/01-23:51:17.854407 7fd7477fe6c0 Level-0 table #9: 10558 bytes OK -2026/05/01-23:51:17.893854 7fd7477fe6c0 Delete type=0 #7 -2026/05/01-23:51:17.920823 7fd7477fe6c0 Manual compaction at level-0 from '!items!CapAirAppar0000001' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end) -2026/05/01-23:51:18.003309 7fd7477fe6c0 Manual compaction at level-1 from '!items!CapAirAppar0000001' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end) +2026/05/02-10:42:39.947277 7fd747fff6c0 Recovering log #37 +2026/05/02-10:42:39.958663 7fd747fff6c0 Delete type=3 #35 +2026/05/02-10:42:39.958760 7fd747fff6c0 Delete type=0 #37 +2026/05/02-10:55:36.102057 7fd7477fe6c0 Level-0 table #43: started +2026/05/02-10:55:36.105728 7fd7477fe6c0 Level-0 table #43: 10555 bytes OK +2026/05/02-10:55:36.112964 7fd7477fe6c0 Delete type=0 #41 +2026/05/02-10:55:36.123389 7fd7477fe6c0 Manual compaction at level-0 from '!items!CapAirAppar0000001' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end) +2026/05/02-10:55:36.137149 7fd7477fe6c0 Manual compaction at level-1 from '!items!CapAirAppar0000001' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 225 : 1 +2026/05/02-10:55:36.137160 7fd7477fe6c0 Compacting 1@1 + 1@2 files +2026/05/02-10:55:36.140798 7fd7477fe6c0 Generated table #44@1: 1 keys, 1091 bytes +2026/05/02-10:55:36.140834 7fd7477fe6c0 Compacted 1@1 + 1@2 files => 1091 bytes +2026/05/02-10:55:36.147266 7fd7477fe6c0 compacted to: files[ 0 0 2 0 0 0 0 ] +2026/05/02-10:55:36.147374 7fd7477fe6c0 Delete type=2 #39 +2026/05/02-10:55:36.147533 7fd7477fe6c0 Delete type=2 #43 +2026/05/02-10:55:36.154016 7fd7477fe6c0 Manual compaction at level-1 from '!items!null' @ 225 : 1 .. '!items!null' @ 0 : 0; will stop at (end) diff --git a/packs/pouvoirs-elementaires/pouvoirs-elementaires/MANIFEST-000010 b/packs/pouvoirs-elementaires/pouvoirs-elementaires/MANIFEST-000010 deleted file mode 100644 index e8e93ec..0000000 Binary files a/packs/pouvoirs-elementaires/pouvoirs-elementaires/MANIFEST-000010 and /dev/null differ diff --git a/packs/pouvoirs-elementaires/pouvoirs-elementaires/MANIFEST-000045 b/packs/pouvoirs-elementaires/pouvoirs-elementaires/MANIFEST-000045 new file mode 100644 index 0000000..486f41d Binary files /dev/null and b/packs/pouvoirs-elementaires/pouvoirs-elementaires/MANIFEST-000045 differ diff --git a/packs/traits-chaotiques/000369.log b/packs/protection/000397.log similarity index 100% rename from packs/traits-chaotiques/000369.log rename to packs/protection/000397.log diff --git a/packs/protection/CURRENT b/packs/protection/CURRENT index 07a4d2c..e889b4d 100644 --- a/packs/protection/CURRENT +++ b/packs/protection/CURRENT @@ -1 +1 @@ -MANIFEST-000367 +MANIFEST-000395 diff --git a/packs/protection/LOG b/packs/protection/LOG index 42ebdfc..aa523d1 100644 --- a/packs/protection/LOG +++ b/packs/protection/LOG @@ -1,7 +1,7 @@ -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) +2026/05/02-22:17:12.630499 7fd754fed6c0 Recovering log #393 +2026/05/02-22:17:12.640876 7fd754fed6c0 Delete type=3 #391 +2026/05/02-22:17:12.640957 7fd754fed6c0 Delete type=0 #393 +2026/05/02-23:14:30.843095 7fd7477fe6c0 Level-0 table #398: started +2026/05/02-23:14:30.843130 7fd7477fe6c0 Level-0 table #398: 0 bytes OK +2026/05/02-23:14:30.854502 7fd7477fe6c0 Delete type=0 #396 +2026/05/02-23:14:30.872960 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 2a53add..89ce33a 100644 --- a/packs/protection/LOG.old +++ b/packs/protection/LOG.old @@ -1,7 +1,7 @@ -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) +2026/05/02-10:42:39.989119 7fd7557ee6c0 Recovering log #389 +2026/05/02-10:42:40.001093 7fd7557ee6c0 Delete type=3 #387 +2026/05/02-10:42:40.001159 7fd7557ee6c0 Delete type=0 #389 +2026/05/02-10:55:36.123407 7fd7477fe6c0 Level-0 table #394: started +2026/05/02-10:55:36.123440 7fd7477fe6c0 Level-0 table #394: 0 bytes OK +2026/05/02-10:55:36.130595 7fd7477fe6c0 Delete type=0 #392 +2026/05/02-10:55:36.147636 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-000395 similarity index 73% rename from packs/protection/MANIFEST-000367 rename to packs/protection/MANIFEST-000395 index 4332c79..0af2796 100644 Binary files a/packs/protection/MANIFEST-000367 and b/packs/protection/MANIFEST-000395 differ diff --git a/packs/runes/000398.log b/packs/runes/000398.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/runes/CURRENT b/packs/runes/CURRENT index 0e10e4f..3e632f4 100644 --- a/packs/runes/CURRENT +++ b/packs/runes/CURRENT @@ -1 +1 @@ -MANIFEST-000368 +MANIFEST-000396 diff --git a/packs/runes/LOG b/packs/runes/LOG index deb2405..90d3620 100644 --- a/packs/runes/LOG +++ b/packs/runes/LOG @@ -1,7 +1,7 @@ -2026/05/01-23:51:24.295669 7fd7557ee6c0 Recovering log #366 -2026/05/01-23:51:24.348109 7fd7557ee6c0 Delete type=3 #364 -2026/05/01-23:51:24.348203 7fd7557ee6c0 Delete type=0 #366 -2026/05/02-08:26:03.684840 7fd7477fe6c0 Level-0 table #371: started -2026/05/02-08:26:03.684875 7fd7477fe6c0 Level-0 table #371: 0 bytes OK -2026/05/02-08:26:03.718916 7fd7477fe6c0 Delete type=0 #369 -2026/05/02-08:26:03.753418 7fd7477fe6c0 Manual compaction at level-0 from '!items!12OfTQijhZYbH4vE' @ 72057594037927935 : 1 .. '!items!yicDDY8Z8Xnz1Fam' @ 0 : 0; will stop at (end) +2026/05/02-22:17:12.748263 7fd755fef6c0 Recovering log #394 +2026/05/02-22:17:12.758646 7fd755fef6c0 Delete type=3 #392 +2026/05/02-22:17:12.758728 7fd755fef6c0 Delete type=0 #394 +2026/05/02-23:14:30.966503 7fd7477fe6c0 Level-0 table #399: started +2026/05/02-23:14:30.966533 7fd7477fe6c0 Level-0 table #399: 0 bytes OK +2026/05/02-23:14:30.977474 7fd7477fe6c0 Delete type=0 #397 +2026/05/02-23:14:30.999786 7fd7477fe6c0 Manual compaction at level-0 from '!items!12OfTQijhZYbH4vE' @ 72057594037927935 : 1 .. '!items!yicDDY8Z8Xnz1Fam' @ 0 : 0; will stop at (end) diff --git a/packs/runes/LOG.old b/packs/runes/LOG.old index c3aff95..78d8fe5 100644 --- a/packs/runes/LOG.old +++ b/packs/runes/LOG.old @@ -1,7 +1,7 @@ -2026/05/01-23:45:25.982906 7fd7557ee6c0 Recovering log #362 -2026/05/01-23:45:25.993525 7fd7557ee6c0 Delete type=3 #360 -2026/05/01-23:45:25.993608 7fd7557ee6c0 Delete type=0 #362 -2026/05/01-23:51:18.290657 7fd7477fe6c0 Level-0 table #367: started -2026/05/01-23:51:18.290716 7fd7477fe6c0 Level-0 table #367: 0 bytes OK -2026/05/01-23:51:18.334423 7fd7477fe6c0 Delete type=0 #365 -2026/05/01-23:51:18.334624 7fd7477fe6c0 Manual compaction at level-0 from '!items!12OfTQijhZYbH4vE' @ 72057594037927935 : 1 .. '!items!yicDDY8Z8Xnz1Fam' @ 0 : 0; will stop at (end) +2026/05/02-10:42:40.104905 7fd747fff6c0 Recovering log #390 +2026/05/02-10:42:40.115004 7fd747fff6c0 Delete type=3 #388 +2026/05/02-10:42:40.115072 7fd747fff6c0 Delete type=0 #390 +2026/05/02-10:55:36.202418 7fd7477fe6c0 Level-0 table #395: started +2026/05/02-10:55:36.202446 7fd7477fe6c0 Level-0 table #395: 0 bytes OK +2026/05/02-10:55:36.208922 7fd7477fe6c0 Delete type=0 #393 +2026/05/02-10:55:36.221573 7fd7477fe6c0 Manual compaction at level-0 from '!items!12OfTQijhZYbH4vE' @ 72057594037927935 : 1 .. '!items!yicDDY8Z8Xnz1Fam' @ 0 : 0; will stop at (end) diff --git a/packs/runes/MANIFEST-000368 b/packs/runes/MANIFEST-000396 similarity index 72% rename from packs/runes/MANIFEST-000368 rename to packs/runes/MANIFEST-000396 index 678fa7c..882bb00 100644 Binary files a/packs/runes/MANIFEST-000368 and b/packs/runes/MANIFEST-000396 differ diff --git a/packs/scenes/000313.log b/packs/scenes/000313.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/scenes/CURRENT b/packs/scenes/CURRENT index 249a860..cd37fac 100644 --- a/packs/scenes/CURRENT +++ b/packs/scenes/CURRENT @@ -1 +1 @@ -MANIFEST-000283 +MANIFEST-000311 diff --git a/packs/scenes/LOG b/packs/scenes/LOG index 115671f..5493234 100644 --- a/packs/scenes/LOG +++ b/packs/scenes/LOG @@ -1,7 +1,7 @@ -2026/05/01-23:51:24.396589 7fd755fef6c0 Recovering log #281 -2026/05/01-23:51:24.446531 7fd755fef6c0 Delete type=3 #279 -2026/05/01-23:51:24.446586 7fd755fef6c0 Delete type=0 #281 -2026/05/02-08:26:03.797250 7fd7477fe6c0 Level-0 table #286: started -2026/05/02-08:26:03.797327 7fd7477fe6c0 Level-0 table #286: 0 bytes OK -2026/05/02-08:26:03.824814 7fd7477fe6c0 Delete type=0 #284 -2026/05/02-08:26:03.865079 7fd7477fe6c0 Manual compaction at level-0 from '!scenes!ZDV2IwduhOXTxy72' @ 72057594037927935 : 1 .. '!scenes.levels!ZDV2IwduhOXTxy72.defaultLevel0000' @ 0 : 0; will stop at (end) +2026/05/02-22:17:12.774173 7fd755fef6c0 Recovering log #309 +2026/05/02-22:17:12.784741 7fd755fef6c0 Delete type=3 #307 +2026/05/02-22:17:12.784820 7fd755fef6c0 Delete type=0 #309 +2026/05/02-23:14:30.987870 7fd7477fe6c0 Level-0 table #314: started +2026/05/02-23:14:30.987912 7fd7477fe6c0 Level-0 table #314: 0 bytes OK +2026/05/02-23:14:30.999620 7fd7477fe6c0 Delete type=0 #312 +2026/05/02-23:14:31.012587 7fd7477fe6c0 Manual compaction at level-0 from '!scenes!ZDV2IwduhOXTxy72' @ 72057594037927935 : 1 .. '!scenes.levels!ZDV2IwduhOXTxy72.defaultLevel0000' @ 0 : 0; will stop at (end) diff --git a/packs/scenes/LOG.old b/packs/scenes/LOG.old index 14dda3e..b09671e 100644 --- a/packs/scenes/LOG.old +++ b/packs/scenes/LOG.old @@ -1,7 +1,7 @@ -2026/05/01-23:45:26.011066 7fd7557ee6c0 Recovering log #277 -2026/05/01-23:45:26.021962 7fd7557ee6c0 Delete type=3 #275 -2026/05/01-23:45:26.022017 7fd7557ee6c0 Delete type=0 #277 -2026/05/01-23:51:18.377264 7fd7477fe6c0 Level-0 table #282: started -2026/05/01-23:51:18.377325 7fd7477fe6c0 Level-0 table #282: 0 bytes OK -2026/05/01-23:51:18.423378 7fd7477fe6c0 Delete type=0 #280 -2026/05/01-23:51:18.501027 7fd7477fe6c0 Manual compaction at level-0 from '!scenes!ZDV2IwduhOXTxy72' @ 72057594037927935 : 1 .. '!scenes.levels!ZDV2IwduhOXTxy72.defaultLevel0000' @ 0 : 0; will stop at (end) +2026/05/02-10:42:40.131208 7fd755fef6c0 Recovering log #305 +2026/05/02-10:42:40.142443 7fd755fef6c0 Delete type=3 #303 +2026/05/02-10:42:40.142526 7fd755fef6c0 Delete type=0 #305 +2026/05/02-10:55:36.215385 7fd7477fe6c0 Level-0 table #310: started +2026/05/02-10:55:36.215417 7fd7477fe6c0 Level-0 table #310: 0 bytes OK +2026/05/02-10:55:36.221473 7fd7477fe6c0 Delete type=0 #308 +2026/05/02-10:55:36.228686 7fd7477fe6c0 Manual compaction at level-0 from '!scenes!ZDV2IwduhOXTxy72' @ 72057594037927935 : 1 .. '!scenes.levels!ZDV2IwduhOXTxy72.defaultLevel0000' @ 0 : 0; will stop at (end) diff --git a/packs/scenes/MANIFEST-000283 b/packs/scenes/MANIFEST-000311 similarity index 57% rename from packs/scenes/MANIFEST-000283 rename to packs/scenes/MANIFEST-000311 index b895f4a..e5ea517 100644 Binary files a/packs/scenes/MANIFEST-000283 and b/packs/scenes/MANIFEST-000311 differ diff --git a/packs/skills-creatures/000305.log b/packs/skills-creatures/000305.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/skills-creatures/CURRENT b/packs/skills-creatures/CURRENT index 1df8f35..284c57b 100644 --- a/packs/skills-creatures/CURRENT +++ b/packs/skills-creatures/CURRENT @@ -1 +1 @@ -MANIFEST-000275 +MANIFEST-000303 diff --git a/packs/skills-creatures/LOG b/packs/skills-creatures/LOG index f4438bd..d8c39ea 100644 --- a/packs/skills-creatures/LOG +++ b/packs/skills-creatures/LOG @@ -1,7 +1,7 @@ -2026/05/01-23:51:23.652171 7fd755fef6c0 Recovering log #273 -2026/05/01-23:51:23.716490 7fd755fef6c0 Delete type=3 #271 -2026/05/01-23:51:23.716570 7fd755fef6c0 Delete type=0 #273 -2026/05/02-08:26:03.241385 7fd7477fe6c0 Level-0 table #278: started -2026/05/02-08:26:03.241425 7fd7477fe6c0 Level-0 table #278: 0 bytes OK -2026/05/02-08:26:03.278575 7fd7477fe6c0 Delete type=0 #276 -2026/05/02-08:26:03.317643 7fd7477fe6c0 Manual compaction at level-0 from '!items!6bmjc4MUduGs9s6n' @ 72057594037927935 : 1 .. '!items!t692JcsGHG4YJIlM' @ 0 : 0; will stop at (end) +2026/05/02-22:17:12.604032 7fd754fed6c0 Recovering log #301 +2026/05/02-22:17:12.614838 7fd754fed6c0 Delete type=3 #299 +2026/05/02-22:17:12.614923 7fd754fed6c0 Delete type=0 #301 +2026/05/02-23:14:30.747643 7fd7477fe6c0 Level-0 table #306: started +2026/05/02-23:14:30.747678 7fd7477fe6c0 Level-0 table #306: 0 bytes OK +2026/05/02-23:14:30.759522 7fd7477fe6c0 Delete type=0 #304 +2026/05/02-23:14:30.796653 7fd7477fe6c0 Manual compaction at level-0 from '!items!6bmjc4MUduGs9s6n' @ 72057594037927935 : 1 .. '!items!t692JcsGHG4YJIlM' @ 0 : 0; will stop at (end) diff --git a/packs/skills-creatures/LOG.old b/packs/skills-creatures/LOG.old index 640b6ba..f3c7e9b 100644 --- a/packs/skills-creatures/LOG.old +++ b/packs/skills-creatures/LOG.old @@ -1,7 +1,7 @@ -2026/05/01-23:45:25.836879 7fd747fff6c0 Recovering log #269 -2026/05/01-23:45:25.847120 7fd747fff6c0 Delete type=3 #267 -2026/05/01-23:45:25.847204 7fd747fff6c0 Delete type=0 #269 -2026/05/01-23:51:17.793448 7fd7477fe6c0 Level-0 table #274: started -2026/05/01-23:51:17.793525 7fd7477fe6c0 Level-0 table #274: 0 bytes OK -2026/05/01-23:51:17.830421 7fd7477fe6c0 Delete type=0 #272 -2026/05/01-23:51:17.894053 7fd7477fe6c0 Manual compaction at level-0 from '!items!6bmjc4MUduGs9s6n' @ 72057594037927935 : 1 .. '!items!t692JcsGHG4YJIlM' @ 0 : 0; will stop at (end) +2026/05/02-10:42:39.961329 7fd7557ee6c0 Recovering log #297 +2026/05/02-10:42:39.973326 7fd7557ee6c0 Delete type=3 #295 +2026/05/02-10:42:39.973409 7fd7557ee6c0 Delete type=0 #297 +2026/05/02-10:55:36.130757 7fd7477fe6c0 Level-0 table #302: started +2026/05/02-10:55:36.130806 7fd7477fe6c0 Level-0 table #302: 0 bytes OK +2026/05/02-10:55:36.136997 7fd7477fe6c0 Delete type=0 #300 +2026/05/02-10:55:36.147652 7fd7477fe6c0 Manual compaction at level-0 from '!items!6bmjc4MUduGs9s6n' @ 72057594037927935 : 1 .. '!items!t692JcsGHG4YJIlM' @ 0 : 0; will stop at (end) diff --git a/packs/skills-creatures/MANIFEST-000275 b/packs/skills-creatures/MANIFEST-000303 similarity index 73% rename from packs/skills-creatures/MANIFEST-000275 rename to packs/skills-creatures/MANIFEST-000303 index 05a64fb..c558dc8 100644 Binary files a/packs/skills-creatures/MANIFEST-000275 and b/packs/skills-creatures/MANIFEST-000303 differ diff --git a/packs/skills/000397.log b/packs/skills/000397.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/skills/CURRENT b/packs/skills/CURRENT index 07a4d2c..e889b4d 100644 --- a/packs/skills/CURRENT +++ b/packs/skills/CURRENT @@ -1 +1 @@ -MANIFEST-000367 +MANIFEST-000395 diff --git a/packs/skills/LOG b/packs/skills/LOG index b41f267..7d673ca 100644 --- a/packs/skills/LOG +++ b/packs/skills/LOG @@ -1,7 +1,7 @@ -2026/05/01-23:51:23.543672 7fd747fff6c0 Recovering log #365 -2026/05/01-23:51:23.596151 7fd747fff6c0 Delete type=3 #363 -2026/05/01-23:51:23.596212 7fd747fff6c0 Delete type=0 #365 -2026/05/02-08:26:03.278699 7fd7477fe6c0 Level-0 table #370: started -2026/05/02-08:26:03.278732 7fd7477fe6c0 Level-0 table #370: 0 bytes OK -2026/05/02-08:26:03.317405 7fd7477fe6c0 Delete type=0 #368 -2026/05/02-08:26:03.317660 7fd7477fe6c0 Manual compaction at level-0 from '!items!0LlzDyCurJedqeyG' @ 72057594037927935 : 1 .. '!items!tq6mEgXog7h4VyWk' @ 0 : 0; will stop at (end) +2026/05/02-22:17:12.547929 7fd7557ee6c0 Recovering log #393 +2026/05/02-22:17:12.557743 7fd7557ee6c0 Delete type=3 #391 +2026/05/02-22:17:12.557812 7fd7557ee6c0 Delete type=0 #393 +2026/05/02-23:14:30.682841 7fd7477fe6c0 Level-0 table #398: started +2026/05/02-23:14:30.682877 7fd7477fe6c0 Level-0 table #398: 0 bytes OK +2026/05/02-23:14:30.692633 7fd7477fe6c0 Delete type=0 #396 +2026/05/02-23:14:30.731406 7fd7477fe6c0 Manual compaction at level-0 from '!items!0LlzDyCurJedqeyG' @ 72057594037927935 : 1 .. '!items!tq6mEgXog7h4VyWk' @ 0 : 0; will stop at (end) diff --git a/packs/skills/LOG.old b/packs/skills/LOG.old index 149986f..bac2114 100644 --- a/packs/skills/LOG.old +++ b/packs/skills/LOG.old @@ -1,7 +1,7 @@ -2026/05/01-23:45:25.812446 7fd755fef6c0 Recovering log #361 -2026/05/01-23:45:25.822133 7fd755fef6c0 Delete type=3 #359 -2026/05/01-23:45:25.822190 7fd755fef6c0 Delete type=0 #361 -2026/05/01-23:51:17.756110 7fd7477fe6c0 Level-0 table #366: started -2026/05/01-23:51:17.756160 7fd7477fe6c0 Level-0 table #366: 0 bytes OK -2026/05/01-23:51:17.793257 7fd7477fe6c0 Delete type=0 #364 -2026/05/01-23:51:17.894035 7fd7477fe6c0 Manual compaction at level-0 from '!items!0LlzDyCurJedqeyG' @ 72057594037927935 : 1 .. '!items!tq6mEgXog7h4VyWk' @ 0 : 0; will stop at (end) +2026/05/02-10:42:39.905833 7fd755fef6c0 Recovering log #389 +2026/05/02-10:42:39.917059 7fd755fef6c0 Delete type=3 #387 +2026/05/02-10:42:39.917119 7fd755fef6c0 Delete type=0 #389 +2026/05/02-10:55:36.045904 7fd7477fe6c0 Level-0 table #394: started +2026/05/02-10:55:36.045940 7fd7477fe6c0 Level-0 table #394: 0 bytes OK +2026/05/02-10:55:36.053242 7fd7477fe6c0 Delete type=0 #392 +2026/05/02-10:55:36.073989 7fd7477fe6c0 Manual compaction at level-0 from '!items!0LlzDyCurJedqeyG' @ 72057594037927935 : 1 .. '!items!tq6mEgXog7h4VyWk' @ 0 : 0; will stop at (end) diff --git a/packs/skills/MANIFEST-000367 b/packs/skills/MANIFEST-000395 similarity index 73% rename from packs/skills/MANIFEST-000367 rename to packs/skills/MANIFEST-000395 index a573cd7..7875f63 100644 Binary files a/packs/skills/MANIFEST-000367 and b/packs/skills/MANIFEST-000395 differ diff --git a/packs/src/automatons/automaton-combat-majeur.json b/packs/src/automatons/automaton-combat-majeur.json new file mode 100644 index 0000000..8b808a8 --- /dev/null +++ b/packs/src/automatons/automaton-combat-majeur.json @@ -0,0 +1,245 @@ +{ + "_id": "AutomCombatMaj001", + "_key": "!actors!AutomCombatMaj001", + "name": "Automaton de Combat (Majeur)", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "AutomComba16CB00", + "_key": "!actors.items!AutomCombatMaj001.AutomComba16CB00", + "name": "Mêlée", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 10, + "attribut1": "pui", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomComba848A00", + "_key": "!actors.items!AutomCombatMaj001.AutomComba848A00", + "name": "Mouvements", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 8, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomComba10AB00", + "_key": "!actors.items!AutomCombatMaj001.AutomComba10AB00", + "name": "Armes à distance", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 8, + "attribut1": "adr", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomCombaA4AF00", + "_key": "!actors.items!AutomCombatMaj001.AutomCombaA4AF00", + "name": "Coercition", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "pre", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomCombaFCFD00", + "_key": "!actors.items!AutomCombatMaj001.AutomCombaFCFD00", + "name": "Savoir : Guerre", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 6, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "AutomComba1EE500", + "_key": "!actors.items!AutomCombatMaj001.AutomComba1EE500", + "name": "Savoir : Armes", + "type": "competence", + "img": "systems/fvtt-mournblade/assets/icons/competence.webp", + "system": { + "description": "", + "niveau": 4, + "attribut1": "cla", + "attribut2": "", + "attribut3": "", + "doublebonus": false, + "predilections": [] + } + }, + { + "_id": "CapAutoComAbmCom", + "_key": "!actors.items!AutomCombatMaj001.CapAutoComAbmCom", + "name": "Absorption (Combat)", + "type": "capacite", + "img": "systems/fvtt-mournblade/assets/icons/capacite.webp", + "system": { + "typeCapacite": "automaton", + "description": "

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

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

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

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

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

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

Automaton de Combat — Capacité 3 (Majeur)

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

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

Automaton de Combat (Majeur)

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

Capacités spéciales actives

Règle

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

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

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

", + "gmnotes": "

Type : Combat | Puissance : Majeur

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

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

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

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

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

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

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

Automaton de Combat (Médian)

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

Capacités spéciales actives

Règle

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

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

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

", + "gmnotes": "

Type : Combat | Puissance : Median

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

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

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

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

Automaton de Combat (Mineur)

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

Capacités spéciales actives

Règle

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

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

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

", + "gmnotes": "

Type : Combat | Puissance : Mineur

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

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

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

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

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

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

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

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

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

Coursier gris

Automaton médian du Voyage

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

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

Capacités spéciales actives

Stat Block (référence)

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

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

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

", + "gmnotes": "

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

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

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

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

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

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

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

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

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

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

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

Automaton de Combat — Capacité 3 (Majeur)

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

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

Justicier de Donblas

Automaton majeur de Combat

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

Capacités spéciales actives

Stat Block (référence)

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

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

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

", + "gmnotes": "

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

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

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

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

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

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

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

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

Œil de Vérité

Automaton mineur de Perception

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

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

Capacités spéciales actives

Stat Block (référence)

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

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

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

", + "gmnotes": "

Point Faible : l'œil de verre.

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

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

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

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

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

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

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

Automaton de Perception — Capacité 3 (Majeur)

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

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

Automaton de Perception (Majeur)

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

Capacités spéciales actives

Règle

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

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

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

", + "gmnotes": "

Type : Perception | Puissance : Majeur

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

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

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

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

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

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

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

Automaton de Perception (Médian)

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

Capacités spéciales actives

Règle

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

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

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

", + "gmnotes": "

Type : Perception | Puissance : Median

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

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

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

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

Automaton de Perception (Mineur)

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

Capacités spéciales actives

Règle

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

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

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

", + "gmnotes": "

Type : Perception | Puissance : Mineur

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

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

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

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

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

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

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

Automaton Réparateur — Capacité 3 (Majeur)

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

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

Automaton de Réparateur (Majeur)

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

Capacités spéciales actives

Règle

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

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

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

", + "gmnotes": "

Type : Réparateur | Puissance : Majeur

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

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

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

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

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

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

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

Automaton de Réparateur (Médian)

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

Capacités spéciales actives

Règle

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

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

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

", + "gmnotes": "

Type : Réparateur | Puissance : Median

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

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

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

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

Automaton de Réparateur (Mineur)

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

Capacités spéciales actives

Règle

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

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

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

", + "gmnotes": "

Type : Réparateur | Puissance : Mineur

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

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

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

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

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

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

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

Automaton de Restauration — Capacité 3 (Majeur)

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

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

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

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

Automaton de Restauration (Majeur)

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

Capacités spéciales actives

Règle

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

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

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

", + "gmnotes": "

Type : Restauration | Puissance : Majeur

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

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

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

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

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

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

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

Automaton de Restauration (Médian)

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

Capacités spéciales actives

Règle

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

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

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

", + "gmnotes": "

Type : Restauration | Puissance : Median

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

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

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

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

Automaton de Restauration (Mineur)

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

Capacités spéciales actives

Règle

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

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

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

", + "gmnotes": "

Type : Restauration | Puissance : Mineur

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

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

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

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

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

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

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

Automaton de Voyage — Capacité 3 (Majeur)

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

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

Automaton de Voyage (Majeur)

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

Capacités spéciales actives

Règle

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

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

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

", + "gmnotes": "

Type : Voyage | Puissance : Majeur

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

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

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

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

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

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

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

Automaton de Voyage (Médian)

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

Capacités spéciales actives

Règle

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

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

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

", + "gmnotes": "

Type : Voyage | Puissance : Median

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

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

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

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

Automaton de Voyage (Mineur)

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

Capacités spéciales actives

Règle

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

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

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

", + "gmnotes": "

Type : Voyage | Puissance : Mineur

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

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

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

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

Automaton de Combat — Capacité 3 (Majeur)

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

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

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

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

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

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

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

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

Automaton de Perception — Capacité 3 (Majeur)

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

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

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

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

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

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

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

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

Automaton Réparateur — Capacité 3 (Majeur)

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

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

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

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

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

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

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

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

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

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

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

Automaton de Restauration — Capacité 3 (Majeur)

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

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

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

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

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

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

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

Automaton de Voyage — Capacité 3 (Majeur)

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

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

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

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

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

Démon de Combat (Majeur)

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

Capacité Spéciale

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

Possessions

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

Protection

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

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

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

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

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

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

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

", + "gmnotes": "

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

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

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

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

Démon de Combat (Médian)

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

Capacité Spéciale

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

Possessions

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

Protection

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

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

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

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

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

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

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

", + "gmnotes": "

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

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

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

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

Démon de Combat (Mineur)

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

Capacité Spéciale

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

Possessions

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

Protection

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

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

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

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

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

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

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

", + "gmnotes": "

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

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

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

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

Démon de Désir (Majeur)

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

Capacité Spéciale

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

Possessions

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

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

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

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

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

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

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

", + "gmnotes": "

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

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

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

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

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

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

Capacité Spéciale

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

Possessions

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

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

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

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

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

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

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

", + "gmnotes": "

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

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

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

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

Démon de Désir (Mineur)

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

Capacité Spéciale

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

Possessions

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

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

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

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

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

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

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

", + "gmnotes": "

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

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

Compétences : Persuasion:5 | Perception:5

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

Démon de Protection (Majeur)

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

Capacité Spéciale

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

Possessions

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

Protection

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

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

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

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

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

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

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

", + "gmnotes": "

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

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

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

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

Démon de Protection (Médian)

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

Capacité Spéciale

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

Possessions

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

Protection

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

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

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

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

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

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

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

", + "gmnotes": "

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

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

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

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

Démon de Protection (Mineur)

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

Capacité Spéciale

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

Possessions

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

Protection

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

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

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

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

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

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

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

", + "gmnotes": "

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

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

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

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

Démon de Savoir (Majeur)

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

Capacité Spéciale

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

Possessions

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

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

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

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

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

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

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

", + "gmnotes": "

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

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

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

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

Démon de Savoir (Médian)

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

Capacité Spéciale

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

Possessions

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

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

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

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

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

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

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

", + "gmnotes": "

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

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

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

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

Démon de Savoir (Mineur)

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

Capacité Spéciale

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

Possessions

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

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

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

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

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

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

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

", + "gmnotes": "

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

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

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

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

Démon de Voyage (Majeur)

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

Capacité Spéciale

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

Possessions

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

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

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

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

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

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

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

", + "gmnotes": "

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

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

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

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

Démon de Voyage (Médian)

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

Capacité Spéciale

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

Possessions

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

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

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

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

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

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

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

", + "gmnotes": "

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

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

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

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

Démon de Voyage (Mineur)

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

Capacité Spéciale

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

Possessions

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

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

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

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

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

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

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

", + "gmnotes": "

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

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

Compétences : Mouvements:5 | Survie:5

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

" + } +} \ No newline at end of file diff --git a/packs/tables/000397.log b/packs/tables/000397.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/tables/CURRENT b/packs/tables/CURRENT index 07a4d2c..e889b4d 100644 --- a/packs/tables/CURRENT +++ b/packs/tables/CURRENT @@ -1 +1 @@ -MANIFEST-000367 +MANIFEST-000395 diff --git a/packs/tables/LOG b/packs/tables/LOG index eecbc79..d92ff59 100644 --- a/packs/tables/LOG +++ b/packs/tables/LOG @@ -1,7 +1,7 @@ -2026/05/01-23:51:24.350949 7fd754fed6c0 Recovering log #365 -2026/05/01-23:51:24.393625 7fd754fed6c0 Delete type=3 #363 -2026/05/01-23:51:24.393700 7fd754fed6c0 Delete type=0 #365 -2026/05/02-08:26:03.719193 7fd7477fe6c0 Level-0 table #370: started -2026/05/02-08:26:03.719233 7fd7477fe6c0 Level-0 table #370: 0 bytes OK -2026/05/02-08:26:03.753130 7fd7477fe6c0 Delete type=0 #368 -2026/05/02-08:26:03.825020 7fd7477fe6c0 Manual compaction at level-0 from '!tables!zV2oJy8JZE0nngRY' @ 72057594037927935 : 1 .. '!tables.results!zV2oJy8JZE0nngRY.wTMX1TbxljHmHImp' @ 0 : 0; will stop at (end) +2026/05/02-22:17:12.761060 7fd7557ee6c0 Recovering log #393 +2026/05/02-22:17:12.771661 7fd7557ee6c0 Delete type=3 #391 +2026/05/02-22:17:12.771745 7fd7557ee6c0 Delete type=0 #393 +2026/05/02-23:14:30.977639 7fd7477fe6c0 Level-0 table #398: started +2026/05/02-23:14:30.977672 7fd7477fe6c0 Level-0 table #398: 0 bytes OK +2026/05/02-23:14:30.987562 7fd7477fe6c0 Delete type=0 #396 +2026/05/02-23:14:30.999805 7fd7477fe6c0 Manual compaction at level-0 from '!tables!zV2oJy8JZE0nngRY' @ 72057594037927935 : 1 .. '!tables.results!zV2oJy8JZE0nngRY.wTMX1TbxljHmHImp' @ 0 : 0; will stop at (end) diff --git a/packs/tables/LOG.old b/packs/tables/LOG.old index b24d71f..a973ee7 100644 --- a/packs/tables/LOG.old +++ b/packs/tables/LOG.old @@ -1,7 +1,7 @@ -2026/05/01-23:45:25.998382 7fd747fff6c0 Recovering log #361 -2026/05/01-23:45:26.008324 7fd747fff6c0 Delete type=3 #359 -2026/05/01-23:45:26.008386 7fd747fff6c0 Delete type=0 #361 -2026/05/01-23:51:18.334705 7fd7477fe6c0 Level-0 table #366: started -2026/05/01-23:51:18.334736 7fd7477fe6c0 Level-0 table #366: 0 bytes OK -2026/05/01-23:51:18.377025 7fd7477fe6c0 Delete type=0 #364 -2026/05/01-23:51:18.500999 7fd7477fe6c0 Manual compaction at level-0 from '!tables!zV2oJy8JZE0nngRY' @ 72057594037927935 : 1 .. '!tables.results!zV2oJy8JZE0nngRY.wTMX1TbxljHmHImp' @ 0 : 0; will stop at (end) +2026/05/02-10:42:40.117395 7fd7557ee6c0 Recovering log #389 +2026/05/02-10:42:40.128393 7fd7557ee6c0 Delete type=3 #387 +2026/05/02-10:42:40.128483 7fd7557ee6c0 Delete type=0 #389 +2026/05/02-10:55:36.209107 7fd7477fe6c0 Level-0 table #394: started +2026/05/02-10:55:36.209133 7fd7477fe6c0 Level-0 table #394: 0 bytes OK +2026/05/02-10:55:36.215251 7fd7477fe6c0 Delete type=0 #392 +2026/05/02-10:55:36.228665 7fd7477fe6c0 Manual compaction at level-0 from '!tables!zV2oJy8JZE0nngRY' @ 72057594037927935 : 1 .. '!tables.results!zV2oJy8JZE0nngRY.wTMX1TbxljHmHImp' @ 0 : 0; will stop at (end) diff --git a/packs/tables/MANIFEST-000367 b/packs/tables/MANIFEST-000395 similarity index 84% rename from packs/tables/MANIFEST-000367 rename to packs/tables/MANIFEST-000395 index ca62701..38879b4 100644 Binary files a/packs/tables/MANIFEST-000367 and b/packs/tables/MANIFEST-000395 differ diff --git a/packs/tendances/000397.log b/packs/tendances/000397.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/tendances/CURRENT b/packs/tendances/CURRENT index 07a4d2c..e889b4d 100644 --- a/packs/tendances/CURRENT +++ b/packs/tendances/CURRENT @@ -1 +1 @@ -MANIFEST-000367 +MANIFEST-000395 diff --git a/packs/tendances/LOG b/packs/tendances/LOG index 8861076..8b66e1e 100644 --- a/packs/tendances/LOG +++ b/packs/tendances/LOG @@ -1,7 +1,7 @@ -2026/05/01-23:51:24.177981 7fd7557ee6c0 Recovering log #365 -2026/05/01-23:51:24.237144 7fd7557ee6c0 Delete type=3 #363 -2026/05/01-23:51:24.237228 7fd7557ee6c0 Delete type=0 #365 -2026/05/02-08:26:03.615020 7fd7477fe6c0 Level-0 table #370: started -2026/05/02-08:26:03.615059 7fd7477fe6c0 Level-0 table #370: 0 bytes OK -2026/05/02-08:26:03.649039 7fd7477fe6c0 Delete type=0 #368 -2026/05/02-08:26:03.719145 7fd7477fe6c0 Manual compaction at level-0 from '!items!0CYP1JpZu9mst5tK' @ 72057594037927935 : 1 .. '!items!zhPPsmTtLv7cyNHJ' @ 0 : 0; will stop at (end) +2026/05/02-22:17:12.721740 7fd755fef6c0 Recovering log #393 +2026/05/02-22:17:12.732234 7fd755fef6c0 Delete type=3 #391 +2026/05/02-22:17:12.732326 7fd755fef6c0 Delete type=0 #393 +2026/05/02-23:14:30.943643 7fd7477fe6c0 Level-0 table #398: started +2026/05/02-23:14:30.943677 7fd7477fe6c0 Level-0 table #398: 0 bytes OK +2026/05/02-23:14:30.954546 7fd7477fe6c0 Delete type=0 #396 +2026/05/02-23:14:30.966486 7fd7477fe6c0 Manual compaction at level-0 from '!items!0CYP1JpZu9mst5tK' @ 72057594037927935 : 1 .. '!items!zhPPsmTtLv7cyNHJ' @ 0 : 0; will stop at (end) diff --git a/packs/tendances/LOG.old b/packs/tendances/LOG.old index 9473962..8d6301e 100644 --- a/packs/tendances/LOG.old +++ b/packs/tendances/LOG.old @@ -1,7 +1,7 @@ -2026/05/01-23:45:25.955487 7fd754fed6c0 Recovering log #361 -2026/05/01-23:45:25.965532 7fd754fed6c0 Delete type=3 #359 -2026/05/01-23:45:25.965608 7fd754fed6c0 Delete type=0 #361 -2026/05/01-23:51:18.213336 7fd7477fe6c0 Level-0 table #366: started -2026/05/01-23:51:18.213372 7fd7477fe6c0 Level-0 table #366: 0 bytes OK -2026/05/01-23:51:18.248049 7fd7477fe6c0 Delete type=0 #364 -2026/05/01-23:51:18.334596 7fd7477fe6c0 Manual compaction at level-0 from '!items!0CYP1JpZu9mst5tK' @ 72057594037927935 : 1 .. '!items!zhPPsmTtLv7cyNHJ' @ 0 : 0; will stop at (end) +2026/05/02-10:42:40.080036 7fd755fef6c0 Recovering log #389 +2026/05/02-10:42:40.090287 7fd755fef6c0 Delete type=3 #387 +2026/05/02-10:42:40.090373 7fd755fef6c0 Delete type=0 #389 +2026/05/02-10:55:36.189179 7fd7477fe6c0 Level-0 table #394: started +2026/05/02-10:55:36.189217 7fd7477fe6c0 Level-0 table #394: 0 bytes OK +2026/05/02-10:55:36.195907 7fd7477fe6c0 Delete type=0 #392 +2026/05/02-10:55:36.202406 7fd7477fe6c0 Manual compaction at level-0 from '!items!0CYP1JpZu9mst5tK' @ 72057594037927935 : 1 .. '!items!zhPPsmTtLv7cyNHJ' @ 0 : 0; will stop at (end) diff --git a/packs/tendances/MANIFEST-000367 b/packs/tendances/MANIFEST-000395 similarity index 72% rename from packs/tendances/MANIFEST-000367 rename to packs/tendances/MANIFEST-000395 index bc4c40e..2811670 100644 Binary files a/packs/tendances/MANIFEST-000367 and b/packs/tendances/MANIFEST-000395 differ diff --git a/packs/traits-chaotiques/000397.log b/packs/traits-chaotiques/000397.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/traits-chaotiques/CURRENT b/packs/traits-chaotiques/CURRENT index 07a4d2c..e889b4d 100644 --- a/packs/traits-chaotiques/CURRENT +++ b/packs/traits-chaotiques/CURRENT @@ -1 +1 @@ -MANIFEST-000367 +MANIFEST-000395 diff --git a/packs/traits-chaotiques/LOG b/packs/traits-chaotiques/LOG index 72ce6d6..94bf12b 100644 --- a/packs/traits-chaotiques/LOG +++ b/packs/traits-chaotiques/LOG @@ -1,7 +1,7 @@ -2026/05/01-23:51:24.240100 7fd754fed6c0 Recovering log #365 -2026/05/01-23:51:24.292935 7fd754fed6c0 Delete type=3 #363 -2026/05/01-23:51:24.293037 7fd754fed6c0 Delete type=0 #365 -2026/05/02-08:26:03.649175 7fd7477fe6c0 Level-0 table #370: started -2026/05/02-08:26:03.649213 7fd7477fe6c0 Level-0 table #370: 0 bytes OK -2026/05/02-08:26:03.684649 7fd7477fe6c0 Delete type=0 #368 -2026/05/02-08:26:03.719173 7fd7477fe6c0 Manual compaction at level-0 from '!items!3J0HKjcVtBT39BiR' @ 72057594037927935 : 1 .. '!items!zeOtWz6oscp8Su5l' @ 0 : 0; will stop at (end) +2026/05/02-22:17:12.735316 7fd7557ee6c0 Recovering log #393 +2026/05/02-22:17:12.745658 7fd7557ee6c0 Delete type=3 #391 +2026/05/02-22:17:12.745736 7fd7557ee6c0 Delete type=0 #393 +2026/05/02-23:14:30.954826 7fd7477fe6c0 Level-0 table #398: started +2026/05/02-23:14:30.954874 7fd7477fe6c0 Level-0 table #398: 0 bytes OK +2026/05/02-23:14:30.966320 7fd7477fe6c0 Delete type=0 #396 +2026/05/02-23:14:30.987842 7fd7477fe6c0 Manual compaction at level-0 from '!items!3J0HKjcVtBT39BiR' @ 72057594037927935 : 1 .. '!items!zeOtWz6oscp8Su5l' @ 0 : 0; will stop at (end) diff --git a/packs/traits-chaotiques/LOG.old b/packs/traits-chaotiques/LOG.old index b8ab3dd..3f80e63 100644 --- a/packs/traits-chaotiques/LOG.old +++ b/packs/traits-chaotiques/LOG.old @@ -1,7 +1,7 @@ -2026/05/01-23:45:25.968745 7fd747fff6c0 Recovering log #361 -2026/05/01-23:45:25.979459 7fd747fff6c0 Delete type=3 #359 -2026/05/01-23:45:25.979545 7fd747fff6c0 Delete type=0 #361 -2026/05/01-23:51:18.248176 7fd7477fe6c0 Level-0 table #366: started -2026/05/01-23:51:18.248208 7fd7477fe6c0 Level-0 table #366: 0 bytes OK -2026/05/01-23:51:18.290348 7fd7477fe6c0 Delete type=0 #364 -2026/05/01-23:51:18.334613 7fd7477fe6c0 Manual compaction at level-0 from '!items!3J0HKjcVtBT39BiR' @ 72057594037927935 : 1 .. '!items!zeOtWz6oscp8Su5l' @ 0 : 0; will stop at (end) +2026/05/02-10:42:40.092228 7fd7557ee6c0 Recovering log #389 +2026/05/02-10:42:40.102343 7fd7557ee6c0 Delete type=3 #387 +2026/05/02-10:42:40.102444 7fd7557ee6c0 Delete type=0 #389 +2026/05/02-10:55:36.196160 7fd7477fe6c0 Level-0 table #394: started +2026/05/02-10:55:36.196194 7fd7477fe6c0 Level-0 table #394: 0 bytes OK +2026/05/02-10:55:36.202280 7fd7477fe6c0 Delete type=0 #392 +2026/05/02-10:55:36.209093 7fd7477fe6c0 Manual compaction at level-0 from '!items!3J0HKjcVtBT39BiR' @ 72057594037927935 : 1 .. '!items!zeOtWz6oscp8Su5l' @ 0 : 0; will stop at (end) diff --git a/packs/traits-chaotiques/MANIFEST-000367 b/packs/traits-chaotiques/MANIFEST-000395 similarity index 73% rename from packs/traits-chaotiques/MANIFEST-000367 rename to packs/traits-chaotiques/MANIFEST-000395 index 06f6a28..c2ca1a2 100644 Binary files a/packs/traits-chaotiques/MANIFEST-000367 and b/packs/traits-chaotiques/MANIFEST-000395 differ diff --git a/packs/traits-demoniaques/traits-demoniaques/000023.log b/packs/traits-demoniaques/traits-demoniaques/000023.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/traits-demoniaques/traits-demoniaques/000025.ldb b/packs/traits-demoniaques/traits-demoniaques/000025.ldb new file mode 100644 index 0000000..e1e471b Binary files /dev/null and b/packs/traits-demoniaques/traits-demoniaques/000025.ldb differ diff --git a/packs/traits-demoniaques/traits-demoniaques/CURRENT b/packs/traits-demoniaques/traits-demoniaques/CURRENT new file mode 100644 index 0000000..e60e154 --- /dev/null +++ b/packs/traits-demoniaques/traits-demoniaques/CURRENT @@ -0,0 +1 @@ +MANIFEST-000021 diff --git a/packs/traits-demoniaques/traits-demoniaques/LOCK b/packs/traits-demoniaques/traits-demoniaques/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/packs/traits-demoniaques/traits-demoniaques/LOG b/packs/traits-demoniaques/traits-demoniaques/LOG new file mode 100644 index 0000000..6e11bd3 --- /dev/null +++ b/packs/traits-demoniaques/traits-demoniaques/LOG @@ -0,0 +1,15 @@ +2026/05/02-22:17:12.577831 7fd7557ee6c0 Recovering log #18 +2026/05/02-22:17:12.588179 7fd7557ee6c0 Delete type=3 #16 +2026/05/02-22:17:12.588250 7fd7557ee6c0 Delete type=0 #18 +2026/05/02-23:14:30.759712 7fd7477fe6c0 Level-0 table #24: started +2026/05/02-23:14:30.766956 7fd7477fe6c0 Level-0 table #24: 15781 bytes OK +2026/05/02-23:14:30.778915 7fd7477fe6c0 Delete type=0 #22 +2026/05/02-23:14:30.796671 7fd7477fe6c0 Manual compaction at level-0 from '!items!TraitDemAbsorpti00' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end) +2026/05/02-23:14:30.814564 7fd7477fe6c0 Manual compaction at level-1 from '!items!TraitDemAbsorpti00' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 239 : 1 +2026/05/02-23:14:30.814573 7fd7477fe6c0 Compacting 1@1 + 1@2 files +2026/05/02-23:14:30.819791 7fd7477fe6c0 Generated table #25@1: 61 keys, 14498 bytes +2026/05/02-23:14:30.819835 7fd7477fe6c0 Compacted 1@1 + 1@2 files => 14498 bytes +2026/05/02-23:14:30.829290 7fd7477fe6c0 compacted to: files[ 0 0 1 0 0 0 0 ] +2026/05/02-23:14:30.829412 7fd7477fe6c0 Delete type=2 #20 +2026/05/02-23:14:30.830076 7fd7477fe6c0 Delete type=2 #24 +2026/05/02-23:14:30.854673 7fd7477fe6c0 Manual compaction at level-1 from '!items!null' @ 239 : 1 .. '!items!null' @ 0 : 0; will stop at (end) diff --git a/packs/traits-demoniaques/traits-demoniaques/LOG.old b/packs/traits-demoniaques/traits-demoniaques/LOG.old new file mode 100644 index 0000000..376af7a --- /dev/null +++ b/packs/traits-demoniaques/traits-demoniaques/LOG.old @@ -0,0 +1,15 @@ +2026/05/02-10:42:39.934277 7fd755fef6c0 Recovering log #13 +2026/05/02-10:42:39.944523 7fd755fef6c0 Delete type=3 #11 +2026/05/02-10:42:39.944600 7fd755fef6c0 Delete type=0 #13 +2026/05/02-10:55:36.074017 7fd7477fe6c0 Level-0 table #19: started +2026/05/02-10:55:36.077422 7fd7477fe6c0 Level-0 table #19: 15783 bytes OK +2026/05/02-10:55:36.083525 7fd7477fe6c0 Delete type=0 #17 +2026/05/02-10:55:36.102042 7fd7477fe6c0 Manual compaction at level-0 from '!items!TraitDemAbsorpti00' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end) +2026/05/02-10:55:36.113168 7fd7477fe6c0 Manual compaction at level-1 from '!items!TraitDemAbsorpti00' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 180 : 1 +2026/05/02-10:55:36.113179 7fd7477fe6c0 Compacting 1@1 + 1@2 files +2026/05/02-10:55:36.116781 7fd7477fe6c0 Generated table #20@1: 61 keys, 14495 bytes +2026/05/02-10:55:36.116812 7fd7477fe6c0 Compacted 1@1 + 1@2 files => 14495 bytes +2026/05/02-10:55:36.123073 7fd7477fe6c0 compacted to: files[ 0 0 1 0 0 0 0 ] +2026/05/02-10:55:36.123182 7fd7477fe6c0 Delete type=2 #15 +2026/05/02-10:55:36.123315 7fd7477fe6c0 Delete type=2 #19 +2026/05/02-10:55:36.137128 7fd7477fe6c0 Manual compaction at level-1 from '!items!null' @ 180 : 1 .. '!items!null' @ 0 : 0; will stop at (end) diff --git a/packs/traits-demoniaques/traits-demoniaques/MANIFEST-000021 b/packs/traits-demoniaques/traits-demoniaques/MANIFEST-000021 new file mode 100644 index 0000000..89e9bb2 Binary files /dev/null and b/packs/traits-demoniaques/traits-demoniaques/MANIFEST-000021 differ diff --git a/styles/mournblade.css b/styles/mournblade.css index 5228f6e..61e5cfb 100644 --- a/styles/mournblade.css +++ b/styles/mournblade.css @@ -2096,6 +2096,21 @@ li { .mournblade-chat-result .result-effects .effect-item:last-child { margin-bottom: 0; } +.mournblade-chat-result .result-effects .effect-item.next-steps { + background: rgba(200, 220, 255, 0.5); + border-left-color: #2255aa; +} +.mournblade-chat-result .result-effects .effect-item.next-steps ol { + margin: 6px 0 0 0; + padding-left: 18px; +} +.mournblade-chat-result .result-effects .effect-item.next-steps ol li { + margin-bottom: 4px; + font-size: 0.82rem; +} +.mournblade-chat-result .result-effects .effect-item.next-steps i { + color: #2255aa; +} .mournblade-chat-result .result-effects .damage-buttons { display: flex; flex-direction: column; @@ -2630,6 +2645,300 @@ li { flex-shrink: 0; accent-color: #c0392b; } +.sortilege-dialog .actor-header, +.potion-dialog .actor-header, +.invocation-dialog .actor-header { + display: flex; + align-items: center; + gap: 10px; + margin-bottom: 10px; + padding: 6px 10px; + background: linear-gradient(135deg, #1a0030 0%, #3a0060 100%); + border: 1px solid #6a008a; + border-radius: 4px; +} +.sortilege-dialog .actor-header .actor-portrait, +.potion-dialog .actor-header .actor-portrait, +.invocation-dialog .actor-header .actor-portrait { + width: 44px; + height: 44px; + border-radius: 4px; + border: 2px solid #9900cc; + object-fit: cover; + flex-shrink: 0; +} +.sortilege-dialog .actor-header h3, +.potion-dialog .actor-header h3, +.invocation-dialog .actor-header h3 { + font-weight: bold; + font-size: 1.05rem; + color: #ffffff; + text-shadow: 0 1px 3px rgba(0, 0, 0, 0.9); + margin: 0; +} +.sortilege-dialog .actor-header .dialog-subtitle, +.potion-dialog .actor-header .dialog-subtitle, +.invocation-dialog .actor-header .dialog-subtitle { + font-size: 0.85rem; + color: #ddb0ff; +} +.sortilege-dialog .actor-header .dialog-subtitle i, +.potion-dialog .actor-header .dialog-subtitle i, +.invocation-dialog .actor-header .dialog-subtitle i { + margin-right: 4px; +} +.sortilege-dialog .actor-header .actor-info, +.potion-dialog .actor-header .actor-info, +.invocation-dialog .actor-header .actor-info { + display: flex; + flex-direction: column; + gap: 2px; +} +.sortilege-dialog .invoc-warning-box, +.potion-dialog .invoc-warning-box, +.invocation-dialog .invoc-warning-box { + background: rgba(180, 20, 20, 0.15); + border: 1px solid #8b0000; + border-left: 4px solid #c0392b; + border-radius: 4px; + padding: 7px 10px; + margin-bottom: 8px; + font-size: 0.85rem; + color: #6a0000; +} +.sortilege-dialog .invoc-warning-box i, +.potion-dialog .invoc-warning-box i, +.invocation-dialog .invoc-warning-box i { + margin-right: 6px; + color: #c0392b; +} +.sortilege-dialog .invoc-warning-box strong, +.potion-dialog .invoc-warning-box strong, +.invocation-dialog .invoc-warning-box strong { + color: #8b0000; +} +.sortilege-dialog .invoc-warning-box div, +.potion-dialog .invoc-warning-box div, +.invocation-dialog .invoc-warning-box div { + margin-top: 3px; +} +.sortilege-dialog .invoc-comp-summary, +.potion-dialog .invoc-comp-summary, +.invocation-dialog .invoc-comp-summary { + display: flex; + flex-wrap: wrap; + gap: 6px; + margin-bottom: 10px; +} +.sortilege-dialog .invoc-comp-summary .comp-badge, +.potion-dialog .invoc-comp-summary .comp-badge, +.invocation-dialog .invoc-comp-summary .comp-badge { + background: rgba(60, 20, 80, 0.12); + border: 1px solid rgba(120, 40, 160, 0.4); + border-radius: 12px; + padding: 3px 10px; + font-size: 0.82rem; + color: #3a0060; +} +.sortilege-dialog .invoc-comp-summary .comp-badge.comp-missing, +.potion-dialog .invoc-comp-summary .comp-badge.comp-missing, +.invocation-dialog .invoc-comp-summary .comp-badge.comp-missing { + background: rgba(120, 0, 0, 0.08); + border-color: rgba(180, 0, 0, 0.3); + color: #800000; +} +.sortilege-dialog .invoc-comp-summary .comp-badge.comp-missing em, +.potion-dialog .invoc-comp-summary .comp-badge.comp-missing em, +.invocation-dialog .invoc-comp-summary .comp-badge.comp-missing em { + font-style: italic; + opacity: 0.7; +} +.sortilege-dialog .invoc-comp-summary .comp-badge strong, +.potion-dialog .invoc-comp-summary .comp-badge strong, +.invocation-dialog .invoc-comp-summary .comp-badge strong { + color: #2a004a; + font-weight: bold; +} +.sortilege-dialog .invoc-seuil-calculator, +.potion-dialog .invoc-seuil-calculator, +.invocation-dialog .invoc-seuil-calculator { + background: rgba(60, 10, 80, 0.07); + border: 1px solid rgba(120, 40, 160, 0.35); + border-radius: 5px; + padding: 10px 12px; + margin-bottom: 10px; +} +.sortilege-dialog .invoc-seuil-calculator .invoc-section-title, +.potion-dialog .invoc-seuil-calculator .invoc-section-title, +.invocation-dialog .invoc-seuil-calculator .invoc-section-title { + font-size: 0.88rem; + font-weight: bold; + color: #3a0060; + margin: 0 0 8px 0; + text-transform: uppercase; + letter-spacing: 0.5px; +} +.sortilege-dialog .invoc-seuil-calculator .invoc-section-title i, +.potion-dialog .invoc-seuil-calculator .invoc-section-title i, +.invocation-dialog .invoc-seuil-calculator .invoc-section-title i { + margin-right: 5px; +} +.sortilege-dialog .invoc-seuil-calculator .invoc-criteria-grid, +.potion-dialog .invoc-seuil-calculator .invoc-criteria-grid, +.invocation-dialog .invoc-seuil-calculator .invoc-criteria-grid { + display: grid; + grid-template-columns: 1fr auto; + gap: 5px 10px; + align-items: center; + margin-bottom: 10px; +} +.sortilege-dialog .invoc-seuil-calculator .invoc-criteria-grid label, +.potion-dialog .invoc-seuil-calculator .invoc-criteria-grid label, +.invocation-dialog .invoc-seuil-calculator .invoc-criteria-grid label { + font-size: 0.83rem; + color: #3a1a0a; + font-weight: bold; + padding: 1px 0; +} +.sortilege-dialog .invoc-seuil-calculator .invoc-criteria-grid select, +.potion-dialog .invoc-seuil-calculator .invoc-criteria-grid select, +.invocation-dialog .invoc-seuil-calculator .invoc-criteria-grid select, +.sortilege-dialog .invoc-seuil-calculator .invoc-criteria-grid input[type="number"], +.potion-dialog .invoc-seuil-calculator .invoc-criteria-grid input[type="number"], +.invocation-dialog .invoc-seuil-calculator .invoc-criteria-grid input[type="number"] { + background: #3a1a08; + border: 1px solid #8b4513; + border-radius: 3px; + padding: 4px 24px 4px 8px; + color: #f0e8d8; + font-family: CentaurMT, serif; + font-size: 0.83rem; + cursor: pointer; + min-width: 200px; + appearance: none; + -webkit-appearance: none; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='7' viewBox='0 0 10 7'%3E%3Cpath fill='%23ffd070' d='M5 7L0 0h10z'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: right 7px center; + background-size: 9px 6px; +} +.sortilege-dialog .invoc-seuil-calculator .invoc-criteria-grid select option, +.potion-dialog .invoc-seuil-calculator .invoc-criteria-grid select option, +.invocation-dialog .invoc-seuil-calculator .invoc-criteria-grid select option, +.sortilege-dialog .invoc-seuil-calculator .invoc-criteria-grid input[type="number"] option, +.potion-dialog .invoc-seuil-calculator .invoc-criteria-grid input[type="number"] option, +.invocation-dialog .invoc-seuil-calculator .invoc-criteria-grid input[type="number"] option { + background: #1a0e06; + color: #f0e8d8; +} +.sortilege-dialog .invoc-seuil-calculator .invoc-criteria-grid input[type="number"], +.potion-dialog .invoc-seuil-calculator .invoc-criteria-grid input[type="number"], +.invocation-dialog .invoc-seuil-calculator .invoc-criteria-grid input[type="number"] { + min-width: 80px; + max-width: 80px; + text-align: center; + background-image: none; + padding: 4px 8px; +} +.sortilege-dialog .invoc-seuil-calculator .invoc-seuil-total-row, +.potion-dialog .invoc-seuil-calculator .invoc-seuil-total-row, +.invocation-dialog .invoc-seuil-calculator .invoc-seuil-total-row { + display: flex; + align-items: center; + gap: 10px; + padding: 6px 8px; + background: linear-gradient(135deg, #2a005a 0%, #4a0080 100%); + border: 1px solid #9900cc; + border-radius: 4px; +} +.sortilege-dialog .invoc-seuil-calculator .invoc-seuil-total-row .invoc-seuil-label, +.potion-dialog .invoc-seuil-calculator .invoc-seuil-total-row .invoc-seuil-label, +.invocation-dialog .invoc-seuil-calculator .invoc-seuil-total-row .invoc-seuil-label { + flex: 1; + font-weight: bold; + font-size: 0.9rem; + color: #ddb0ff; +} +.sortilege-dialog .invoc-seuil-calculator .invoc-seuil-total-row .invoc-seuil-total, +.potion-dialog .invoc-seuil-calculator .invoc-seuil-total-row .invoc-seuil-total, +.invocation-dialog .invoc-seuil-calculator .invoc-seuil-total-row .invoc-seuil-total { + font-size: 1.3rem; + font-weight: bold; + color: #ffd700; + text-shadow: 0 0 8px rgba(255, 200, 0, 0.6); + min-width: 32px; + text-align: center; +} +.sortilege-dialog .invoc-form-grid, +.potion-dialog .invoc-form-grid, +.invocation-dialog .invoc-form-grid { + display: flex; + flex-direction: column; + gap: 5px; +} +.sortilege-dialog .invoc-form-grid .invoc-field, +.potion-dialog .invoc-form-grid .invoc-field, +.invocation-dialog .invoc-form-grid .invoc-field { + display: flex; + align-items: center; + gap: 8px; + padding: 4px 6px; + border-bottom: 1px solid rgba(139, 69, 19, 0.2); +} +.sortilege-dialog .invoc-form-grid .invoc-field label, +.potion-dialog .invoc-form-grid .invoc-field label, +.invocation-dialog .invoc-form-grid .invoc-field label { + flex: 1; + font-weight: bold; + font-size: 0.87rem; + color: #3a1a0a; +} +.sortilege-dialog .invoc-form-grid .invoc-field .invoc-value-highlight, +.potion-dialog .invoc-form-grid .invoc-field .invoc-value-highlight, +.invocation-dialog .invoc-form-grid .invoc-field .invoc-value-highlight { + font-size: 1.1rem; + font-weight: bold; + color: #6a0080; + min-width: 30px; + text-align: center; +} +.sortilege-dialog .invoc-form-grid .invoc-field .invoc-hint, +.potion-dialog .invoc-form-grid .invoc-field .invoc-hint, +.invocation-dialog .invoc-form-grid .invoc-field .invoc-hint { + font-size: 0.78rem; + color: #5a3a0a; + font-style: italic; +} +.sortilege-dialog .invoc-form-grid .invoc-field .invoc-hint strong, +.potion-dialog .invoc-form-grid .invoc-field .invoc-hint strong, +.invocation-dialog .invoc-form-grid .invoc-field .invoc-hint strong { + color: #8b0000; + font-weight: bold; +} +.sortilege-dialog .invoc-form-grid .invoc-field select, +.potion-dialog .invoc-form-grid .invoc-field select, +.invocation-dialog .invoc-form-grid .invoc-field select { + background: #3a1a08; + border: 1px solid #8b4513; + border-radius: 3px; + padding: 4px 24px 4px 8px; + color: #f0e8d8; + font-family: CentaurMT, serif; + font-size: 0.85rem; + cursor: pointer; + appearance: none; + -webkit-appearance: none; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='7' viewBox='0 0 10 7'%3E%3Cpath fill='%23ffd070' d='M5 7L0 0h10z'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: right 7px center; + background-size: 9px 6px; +} +.sortilege-dialog .invoc-form-grid .invoc-field select option, +.potion-dialog .invoc-form-grid .invoc-field select option, +.invocation-dialog .invoc-form-grid .invoc-field select option { + background: #1a0e06; + color: #f0e8d8; +} .mournblade-chat-result .sortilege-runes-summary { margin-top: 8px; border-top: 1px solid rgba(139, 69, 19, 0.3); @@ -3105,6 +3414,40 @@ li { gap: 0.4rem; align-items: center; } +/* Enchantement de la Loi */ +.enchantement-section { + margin-top: 0.6rem; + padding: 0.5rem 0.6rem; + background: rgba(255, 215, 0, 0.05); + border: 1px solid rgba(255, 215, 0, 0.3); + border-radius: 4px; +} +.enchantement-section .section-title-small { + font-size: 0.9rem; + margin: 0 0 0.4rem 0; + color: #a07800; + font-weight: bold; + display: flex; + align-items: center; + gap: 0.3rem; + border-bottom: 1px solid rgba(255, 215, 0, 0.2); + padding-bottom: 0.2rem; +} +.enchantement-section .enchant-badge { + display: inline-block; + background: gold; + color: #333; + font-size: 0.7rem; + padding: 0.1rem 0.4rem; + border-radius: 8px; + margin-left: 0.5rem; +} +.enchantement-section .enchant-none { + color: #888; + font-size: 0.85rem; + margin: 0; + padding: 0.2rem 0; +} /* ==================== Actor Sheet Styles ==================== */ .fvtt-mournblade.actor { background: url("../assets/ui/pc_sheet_bg.webp") repeat; @@ -3385,8 +3728,8 @@ li { background: rgba(74, 124, 89, 0.2); } .fvtt-mournblade.actor .sheet-body .item-controls-fixed { - min-width: 3.2rem; - max-width: 3.2rem; + min-width: 5rem; + max-width: 5rem; } .fvtt-mournblade.actor .sheet-body h4, .fvtt-mournblade.actor .sheet-body h3, @@ -3847,5 +4190,26 @@ li { transform: translateY(1px); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4); } +.mournblade-chat-result .detail-row .rune-mini-img { + width: 18px; + height: 18px; + border-radius: 2px; + object-fit: cover; + flex-shrink: 0; + border: 1px solid rgba(139, 69, 19, 0.4); + vertical-align: middle; + margin-right: 4px; +} +.mournblade-chat-result .detail-row .potion-haut-parler { + font-style: italic; + color: #5a3a8a; +} +.mournblade-item-card .item-card-divider--danger { + color: #8b0000; +} +.mournblade-item-card .item-card-divider--danger::before, +.mournblade-item-card .item-card-divider--danger::after { + background: linear-gradient(90deg, transparent, #8b0000, transparent); +} /*# sourceMappingURL=mournblade.css.map */ /*# sourceMappingURL=mournblade.css.map */ diff --git a/styles/mournblade.css.map b/styles/mournblade.css.map index 6c02879..41efc42 100644 --- a/styles/mournblade.css.map +++ b/styles/mournblade.css.map @@ -1 +1 @@ -{"version":3,"sources":["../simple-converted.less","../item-styles.less","../actor-styles.less"],"names":[],"mappings":";AACE;EACE,aAAa,aAAb;EACA,SAAS,2CAA2C,OAAO,WAA3D;;AAGF;EACE,aAAa,WAAb;EACA,SAAS,iCAAiC,OAAO,WAAjD;;AAGF;;EAEE,sCAAA;EACA,uCAAA;EACA,yCAAA;EACA,oCAAA;EAEA,qCAAA;EACA,iCAAA;EACA,kCAAA;EACA,6BAAA;EAEA,mCAAA;EACA,4BAAA;EACA,6BAAA;EACA,2BAAA;EACA,kCAAA;EAEA,yBAAA;EACA,2BAAA;EAEA,+BAAA;EACA,8BAAA;EACA,0BAAA;EAEA,+BAAA;EACA,8BAAA;EACA,8BAAA;;EAGA,uCAAA;EACA,wCAAA;EACA,yCAAA;EAEA,yCAAA;EACA,2CAAA;EACA,6CAAA;;AAIF,WAAY;AACZ,WAAY;AACZ,WAAY;EACV,aAAa,WAAb;EACA,kBAAA;;;;AAKF;EACE,sBAAA;EACA,mBAAA;EACA,eAAA;EACA,mBAAA;;;AAIF,MAAO,OAAM,aAAc,GAAG;AAC9B,WAAY;AACZ,OAAQ;AACR,WAAY,YAAY,OAAM;EAC5B,aAAa,WAAb;EACA,iBAAA;;;AAIF,MAAO,IAAG;EACR,aAAa,aAAb;EACA,iBAAA;;;AAIF,WAAY;AACZ,gBAAiB;AACjB,MAAO,OAAM,aAAc,mBAAkB;AAC7C,MAAO,OAAM,aAAc,mBAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA,WAAY;EACV,iBAAA;;AAGF;EACE,+BAAA;;AAGF,WAAW,MAAO;EAChB,SAAA;EACA,UAAA;;AAGF;EACE,iBAAA;;AAGF,KAAM,MAAK;AACX,eAAgB,GAAG,GAAG,GAAE,YAAY;AACpC,CAAC;EACC,gCAAA;;AAGF,SAAS;AACT,SAAS;EACP,WAAA;EACA,yBAAA;EACA,eAAA;;AAGF,KAAK;AACL,MAAM;EACJ,UAAA;EACA,mBAAA;EACA,qCAAA;;AAGF;EACE,yBAAA;;AAGF;AACA;EACE,aAAA;EACA,4BAAA;EACA,uBAAuB,UAAU,eAAjC;EACA,SAAA;EACA,cAAA;EACA,UAAA;;AAGF;EACE,4BAAA;EACA,uBAAuB,UAAU,eAAjC;;AAGF;EACE,4BAAA;EACA,uBAAuB,UAAU,eAAjC;;AAGF;EACE,4BAAA;EACA,uBAAuB,UAAU,eAAjC;;AAGF;EACE,4BAAA;EACA,uBAAuB,UAAU,eAAjC;;AAGF;EACE,4BAAA;EACA,uBAAuB,UAAU,eAAjC;;AAGF;EACE,4BAAA;EACA,uBAAuB,UAAU,eAAjC;;AAGF;EACE,4BAAA;EACA,uBAAuB,UAAU,eAAjC;;AAGF;EACE,8BAAA;EACA,uBAAuB,WAAW,eAAlC;;AAGF;EACE,8BAAA;EACA,uBAAuB,WAAW,eAAlC;;AAGF;EACE,8BAAA;EACA,uBAAuB,WAAW,eAAlC;;AAGF;AACA;AACA;EACE,wBAAA;EACA,qBAAA;EACA,uBAAA;EACA,yBAAA;EACA,sBAAA;EACA,mBAAA;EACA,kBAAA;EACA,YAAA;;AAGF;EACE,uBAAA;EACA,oBAAA;EACA,2BAAA;EACA,gBAAA;;AAGF;EACE,qBAAA;EACA,kBAAA;EACA,yBAAA;EACA,iBAAA;;AAGF;EACE,yBAAA;EACA,sBAAA;EACA,mBAAA;EACA,wBAAA;EACA,qBAAA;EACA,uBAAA;EACA,kBAAA;;AAGF;EACE,iBAAA;;AAGF;EACE,yBAAA;EACA,sBAAA;EACA,8BAAA;;AAGF;EACE,MAAM,aAAN;;;AAKF,gBAAiB;EACf,mBAAA;EACA,mBAAA;EACA,eAAA;EACA,gBAAA;EACA,oBAAA;EACA,oBAAA;EACA,aAAA;EACA,8BAAA;EACA,6BAAA;EACA,uBAAA;EACA,mBAAA;EACA,mBAAA;EACA,eAAA;EACA,uBAAA;EACA,oBAAA;EACA,2BAAA;EACA,mBAAA;;AAGF,gBAAiB,cAAc;EAC7B,mBAAA;EACA,mBAAA;EACA,eAAA;EACA,aAAA;EACA,YAAA;EACA,kBAAA;EACA,iBAAA;EACA,sBAAA;;AAGF;EACE,wBAAA;EACA,SAAA;EACA,UAAA;EACA,gBAAA;EACA,eAAA;EACA,kCAAA;;AAGF,WAAW;EACT,+BAAA;EACA,wCAAA;EACA,eAAA;;AAGF;EACE,wBAAA;EACA,WAAA;EACA,gBAAA;EACA,UAAA;EACA,eAAA;;AAGF;EACE,YAAA;EACA,WAAA;EACA,SAAA;EACA,sBAAA;;AAGF,gBAAiB,cAAc;EAC7B,mBAAA;EACA,WAAA;EACA,OAAA;;AAGF,gBAAiB,cAAc,GAAE;EAC/B,YAAA;EACA,YAAA;EACA,aAAA;EACA,gBAAA;EACA,iBAAA;EACA,eAAA;EACA,aAAa,WAAb;;AAGF,gBAAiB,cAAc,GAAE,SAAU;EACzC,WAAA;EACA,YAAA;EACA,SAAA;EACA,iBAAA;EACA,aAAa,WAAb;EACA,eAAA;EACA,gBAAA;;AAGF,gBAAiB;EACf,mBAAA;EACA,WAAA;EACA,OAAA;;AAGF,gBAAiB;AACjB,gBAAiB,YAAY;EAC3B,YAAA;EACA,iBAAA;;AAGF,gBAAiB,YAAY,KAAK;EAChC,YAAA;EACA,iBAAA;;AAGF;EACE,iBAAA;EACA,kBAAA;EACA,iBAAA;;AAGF;EACE,SAAA;EACA,aAAA;EACA,cAAA;;AAGF;EACE,SAAA;EACA,aAAA;EACA,cAAA;;AAGF;EACE,SAAA;EACA,aAAA;EACA,cAAA;;AAGF,gBAAiB,KAAK;EACpB,gBAAA;;AAGF,gBAAiB,KAAK;EACpB,cAAA;;AAGF,gBAAiB;EACf,iBAAA;EACA,yBAAA;;AAGF,gBAAiB;EACf,YAAA;EACA,0BAAA;EACA,6BAAA;EACA,cAAA;;AAGF,gBAAiB,MAAM;EACrB,iBAAA;EACA,iBAAA;;AAGF,gBAAiB,MAAM,MAAK;EAC1B,0BAAA;EACA,iBAAA;;AAGF,gBAAiB;EACf,gBAAA;EACA,aAAA;EACA,UAAA;EACA,gBAAA;;AAGF,gBAAiB,YAAY;EAC3B,iBAAA;;AAGF,gBAAiB,YAAY;EAC3B,YAAA;EACA,iBAAA;EACA,cAAA;EACA,6BAAA;;AAGF,gBAAiB,YAAY,MAAM;EACjC,mBAAA;EACA,kBAAA;EACA,cAAA;EACA,iBAAA;;AAGF,gBAAiB,YAAY,MAAM;EACjC,cAAA;;AAGF,gBAAiB,YAAY;EAC3B,SAAA;;AAGF,gBAAiB,YAAY;EAC3B,mBAAA;EACA,kBAAA;EACA,cAAA;EACA,iBAAA;;;;AAMF,WAAW,MAAO,gBAAgB;;EAEhC,gBAAgB,gDAAhB;;;AAIF,WAAW,MAAO,gBAAgB,cAAc,MAAK;AACrD,WAAW,MAAO,gBAAgB,cAAc,MAAK;AACrD,WAAW,MAAO,gBAAgB,cAAc,MAAK;AACrD,WAAW,MAAO,gBAAgB,cAAc,MAAK;AACrD,WAAW,MAAO,gBAAgB,cAAc,MAAK;EACnD,6BAAA;EACA,qCAAA;EACA,cAAA;EACA,sBAAA;;AAGF,WAAY;AACZ,WAAW,MAAO,gBAAgB;EAChC,iBAAA;EACA,gBAAgB,gDAAhB;;;AAKF,OAAO;EACL,uBAAA;;AAGF,MAAO,OAAM,aAAc;EACzB,iBAAA;EACA,sBAAA;EACA,8BAAA;EACA,UAAA;;AAGF,MAAO,IAAG;EACR,iBAAA;EACA,iBAAA;EACA,YAAA;EACA,cAAA;EACA,SAAA;EACA,sBAAA;EACA,kBAAA;EACA,yBAAA;EACA,mBAAA;EACA,kBAAA;EACA,qBAAA;EACA,uBAAA;EACA,YAAA;;AAGF,GAAG,WAAY;EACb,kBAAA;EACA,kBAAA;EACA,YAAA;;AAGF,GAAG,WAAY,MAAK;EAClB,SAAS,EAAT;EACA,kBAAA;EACA,MAAA;EACA,QAAA;EACA,YAAA;EACA,UAAA;EACA,+CAAA;;AAGF,MAAO,KAAI;EACT,UAAA;;AAGF,OAAO,WAAW;EAChB,SAAS,EAAT;EACA,cAAA;EACA,WAAA;;AAGF,MAAO,OAAM,aAAc;EACzB,iBAAA;;AAGF,MAAO,OAAM,aAAc;EACzB,WAAA;;AAGF;EACE,qBAAA;EACA,gBAAA;EACA,WAAA;;AAGF,WAAW,MAAO,gBAAgB,SAAQ,MAAO;EAC/C,SAAA;EACA,UAAA;EACA,SAAA;EACA,gBAAA;;AAGF,WAAW,MAAO,gBAAgB;AAClC,WAAW,MAAO,gBAAgB;EAChC,eAAA;EACA,gBAAA;EACA,kBAAA;;;;;AAQF;AACA;AACA;AACA;EACE,iBAAA;;AAGF;AACA;EACE,SAAA;EACA,UAAA;;AAGF;AACA;EACE,qBAAA;;AAGF,MAAO;EACL,eAAA;EACA,gBAAA;;AAGF,cAAe;EACb,SAAA;EACA,UAAA;;AAGF,aAAa,aAAW;EACtB,oCAAA;;AAGF,aAAa,aAAW,UAAU;EAChC,gCAAA;;AAGF,aAAa,aAAW,UAAU;EAChC,mBAAA;;AAGF;EACE,iBAAA;;AAGF;AACA;EACE,iBAAA;;AAGF;EACE,gBAAA;EACA,uCAAA;EACA,sBAAA;EACA,iBAAA;EACA,cAAA;;AAGF;EACE,cAAA;;AAGF;EACE,aAAA;;AAGF;EACE,mBAAA;;AAGF;EACE,mBAAA;;AAGF;EACE,iBAAA;;AAGF;EACE,iBAAA;;AAGF;EACE,iBAAA;;AAGF;EACE,iBAAA;;AAGF;EACE,WAAA;EACA,YAAA;EACA,YAAA;EACA,qBAAA;;AAGF;EACE,sBAAA;EACA,yBAAA;EACA,2BAAA;EACA,YAAA;EACA,aAAA;;AAGF;EACE,yBAAA;EACA,2BAAA;EACA,iBAAA;EACA,YAAA;;AAGF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,YAAA;EACA,gBAAA;;AAGF;EACE,aAAA;;AAGF;EACE,YAAA;;AAGF;EACE,kBAAA;;AAGF;EACE,YAAA;;AAGF;EACE,YAAA;;AAGF;EACE,YAAA;EACA,qBAAA;;AAGF;AACA;EACE,YAAA;EACA,gBAAA;EACA,iBAAA;EACA,gBAAA;;AAGF;AACA;EACE,YAAA;EACA,gBAAA;EACA,qBAAA;EACA,oBAAA;;AAGF;EACE,YAAA;EACA,gBAAA;EACA,qBAAA;EACA,oBAAA;;AAGF;EACE,YAAA;EACA,gBAAA;EACA,qBAAA;EACA,oBAAA;;AAGF;EACE,iBAAA;;AAGF;EACE,iBAAA;;AAGF;EACE,mBAAA;EACA,yBAAA;EACA,2BAAA;;AAGF;EACE,YAAA;EACA,gBAAA;EACA,iBAAA;EACA,gBAAA;;AAGF;EACE,YAAA;EACA,gBAAA;EACA,iBAAA;EACA,gBAAA;;AAGF;EACE,YAAA;EACA,gBAAA;EACA,iBAAA;EACA,gBAAA;;AAGF;AACA;EACE,YAAA;EACA,gBAAA;EACA,iBAAA;EACA,gBAAA;;AAGF;EACE,eAAA;;AAGF;EACE,iBAAA;;AAGF;EACE,gBAAA;;AAGF;EACE,mBAAA;EACA,cAAA;EACA,YAAA;;AAGF;EACE,YAAA;;AAGF;EACE,mBAAA;EACA,YAAA;;AAGF;EACE,WAAA;EACA,eAAA;EACA,YAAA;EACA,cAAA;EACA,gBAAA;EACA,qBAAA;EACA,oBAAA;;AAGF;EACE,yBAAA;;;AAIF;EACE,aAAA;EACA,kBAAA;EACA,gBAAA;;AAGF,YAAY;EACV,2BAAA;EACA,sBAAA;EACA,kBAAA;EACA,YAAA;EACA,WAAA;;AAGF,YAAY;EACV,2BAAA;EACA,sBAAA;EACA,kBAAA;EACA,YAAA;EACA,UAAA;;AAGF,aAAa;EACX,kBAAA;EACA,mBAAA;EACA,eAAA;EACA,gBAAA;EACA,UAAA;EACA,iBAAA;EACA,eAAA;;AAGF,aAAa,aAAa;EACxB,gBAAA;;AAGF,UAAW,gBAAe;EACxB,UAAA;;;AAIF;EACE,YAAA;EACA,2BAAA;EACA,iBAAA;EACA,gBAAA;EACA,eAAA;EACA,YAAA;EACA,gBAAA;EACA,iBAAA;EACA,WAAA;EACA,kBAAA;EACA,SAAA;EACA,kBAAA;;AAIF;EACE,YAAA;;;;AAKF;EACE,eAAA;EACA,yBAAA;EACA,gCAAA;;;AAKF,QAAQ;EACN,wBAAA;;AAGF,aAAa;AACb,cAAe;EACb,gCAAA;EACA,0CAAA;;AAGF,YAAa,gBAAgB;EAC3B,0CAAA;EACA,qBAAA;EACA,kBAAA;;AAGF,YAAa,gBAAgB,QAAO;EAClC,+BAAA;EACA,eAAA;;AAGF;EACE,oCAAA;EACA,iBAAA;EACA,YAAA;EACA,kBAAA;EACA,sBAAA;EACA,aAAA;EACA,mBAAA;;AAGF,aAAc,gBAAgB;AAC9B,aAAc,gBAAgB;EAC5B,iBAAA;;AAGF,aAAc;EACZ,iBAAA;EACA,sBAAA;;AAGF,gBAAiB;EACf,cAAA;EACA,iBAAA;EACA,wBAAA;;AAGF,gBAAiB;EACf,cAAA;EACA,iBAAA;EACA,wBAAA;;AAGF,gBAAiB;EACf,cAAA;EACA,iBAAA;EACA,wBAAA;;AAGF,gBAAiB;EACf,aAAA;EACA,iBAAA;EACA,wBAAA;;AAGF;EACE,YAAA;;AAGF;EACE,WAAA;EACA,YAAA;;AAMF;EACE,6BAAA;EACA,cAAA;EACA,YAAY,iDAAZ;EACA,yBAAA;EACA,kBAAA;EACA,gBAAA;EACA,yCAAA;;AAPF,qBASE;EACE,aAAA;EACA,mBAAA;EACA,SAAA;EACA,YAAY,8DAAZ;EACA,kBAAA;EACA,gCAAA;;AAfJ,qBASE,kBAQE;EACE,WAAA;EACA,YAAA;EACA,kBAAA;EACA,yBAAA;EACA,iBAAA;EACA,cAAA;EACA,8BAAA;;AAxBN,qBASE,kBAkBE;EACE,OAAA;EACA,YAAA;;AA7BN,qBASE,kBAkBE,iBAIE;EACE,iBAAA;EACA,UAAA;EACA,0CAAA;EACA,kBAAA;EACA,iBAAA;EACA,cAAA;EACA,2CAAA;EACA,mBAAA;EACA,gBAAA;EACA,YAAA;;AAzCR,qBASE,kBAkBE,iBAiBE;EACE,qBAAA;EACA,mCAAA;EACA,yBAAA;EACA,mBAAA;EACA,gBAAA;EACA,kBAAA;EACA,cAAA;EACA,sBAAA;EACA,yBAAA;;AArDR,qBASE,kBAkBE,iBAiBE,sBAWE;EAAI,iBAAA;;AAvDZ,qBA4DE;EACE,iBAAA;EACA,+CAAA;EACA,aAAA;EACA,sBAAA;EACA,QAAA;;AAjEJ,qBA4DE,iBAOE;EACE,aAAA;EACA,qBAAA;EACA,8BAAA;EACA,QAAA;EACA,kBAAA;EACA,cAAA;EACA,iDAAA;;AAEA,qBAhBJ,iBAOE,UASG;EAAc,mBAAA;;AA5ErB,qBA4DE,iBAOE,UAWE;EACE,cAAA;EACA,iBAAA;EACA,cAAA;;AAjFR,qBA4DE,iBAOE,UAWE,YAIE;EAAI,iBAAA;EAAmB,cAAA;;AAlF/B,qBA4DE,iBAOE,UAkBE;EACE,cAAA;EACA,iBAAA;EACA,mBAAA;;AAEA,qBA9BN,iBAOE,UAkBE,YAKG;EACC,iBAAA;EACA,cAAA;EACA,kBAAA;;AAIJ,qBArCJ,iBAOE,UA8BG;EACC,2BAAA;EACA,cAAA;EACA,kBAAA;EACA,iBAAA;EACA,mBAAA;EACA,cAAA;;AANF,qBArCJ,iBAOE,UA8BG,UAOC;EAAI,iBAAA;EAAmB,cAAA;;AAxG/B,qBA6GE;EACE,aAAA;EACA,mBAAA;EACA,mBAAA;EACA,QAAA;EACA,kBAAA;EACA,sBAAA;EACA,yBAAA;EACA,cAAA;EACA,iBAAA;;AAEA,qBAXF,mBAWG;AAAU,qBAXb,mBAWc;EACV,SAAS,EAAT;EACA,OAAA;EACA,WAAA;EACA,YAAY,yDAAZ;;AA5HN,qBAgIE;EACE,sBAAA;EACA,kBAAA;EACA,gBAAA;EACA,cAAA;;AApIJ,qBAgIE,uBAME;EAAI,iBAAA;;AAAmB,qBANzB,uBAME,EAAwB;EAAc,gBAAA;;AAtI1C,qBAgIE,uBAOE;AAvIJ,qBAgIE,uBAOM;EAAI,cAAA;;AAvIZ,qBAgIE,uBAQE;AAxIJ,qBAgIE,uBAQU;EAAI,cAAA;;AAxIhB,qBA2IE;EACE,iCAAA;EACA,0CAAA;EACA,kBAAA;EACA,cAAA;;AAGF,qBAAC,8BACC;EACE,iBAAA;;AAFJ,qBAAC,8BACC,kBAEE;EAAiB,WAAA;EAAa,YAAA;;AAHlC,qBAAC,8BACC,kBAGE;EAAkB,kBAAA;;AAJtB,qBAAC,8BAMC;EAAyB,qBAAA;;AAI7B;EACE,YAAA;;AAGF;EACE,sBAAA;;AAGF;EACE,WAAA;EACA,WAAA;EACA,YAAA;EACA,wBAAA;;AAGF;EACE,mBAAA;EACA,sBAAA;;AAGF;EACE,sBAAA;EACA,YAAA;EACA,gBAAA;EACA,eAAA;;AAGF;EACE,2CAAA;EACA,qBAAA;EACA,sBAAA;EACA,WAAA;EACA,iBAAA;EACA,eAAA;;AAGF;EACE,UAAA;EACA,WAAA;EACA,eAAA;EACA,aAAA;EACA,oBAAA;EACA,mBAAA;EACA,sBAAA;;AAGF;EACE,YAAA;EACA,uBAAA;;AAGF;EACE,qBAAA;EACA,gBAAA;EACA,2BAAA;EACA,6BAAA;;AAGF;EACE,kBAAA;;AAGF;EACE,oCAAA;EACA,iBAAA;;AAGF,aAAa;EACX,qCAAA;EACA,yBAAA;;AAGF,aAAc;EACZ,SAAA;EACA,wBAAA;EACA,WAAA;EACA,WAAA;EACA,YAAA;;AAGF;EACE,cAAA;EACA,sBAAA;EACA,eAAA;EACA,yCAAA;EACA,6CAAA;;AAGF,aAAa,QAAM;EACjB,yBAAA;EACA,kCAAA;EACA,iCAAA;;AAGF,QAAS,cAAc;EACrB,qBAAA;EACA,2BAAA;EACA,sBAAA;EACA,0CAAA;;;;;;;;;;;;;;;;;;;;AAwBF,SAAU;AACV,SAAU;EACR,wBAAA;EACA,eAAA;EACA,gBAAA;EACA,mBAAA;EACA,8BAAA;EACA,qDAAA;EACA,uBAAA;EACA,wBAAA;;AAGF,SAAU,eAAc;AACxB,SAAU,cAAa;AACvB,SAAU,eAAc;AACxB,SAAU,cAAa;EACrB,mBAAA;EACA,8BAAA;EACA,qDAAA;EACA,uBAAA;EACA,wBAAA;EACA,2BAAA;;AAGF,OAAQ,YAAY;EAClB,yBAAA;EACA,+BAAA;;AAGF,OAAQ,YAAY;EAClB,kDAAA;EACA,gCAAA;EACA,mCAAA;EACA,oCAAA;EACA,kBAAA;;AAGF,OAAQ;EACN,mBAAA;EACA,yBAAA;;AAGF;EACE,qDAAA;EACA,uBAAA;EACA,wBAAA;EACA,mBAAA;;AAGF,WAAY,YAAY,OAAM,SAAS;EACrC,mBAAA;;AAGF,WAAY,YAAY,OAAM;EAC5B,mBAAA;EACA,8BAAA;EACA,qDAAA;EACA,uBAAA;EACA,wBAAA;;AAGF,WAAY,YAAY,OAAM;AAC9B,WAAY,YAAY,OAAM;EAC5B,mBAAA;EACA,8BAAA;EACA,qDAAA;EACA,uBAAA;EACA,wBAAA;EACA,2BAAA;;AAGF,WAAY;EACV,mBAAA;EACA,8BAAA;EACA,qDAAA;EACA,uBAAA;EACA,wBAAA;;;AAIF;EACE,kBAAA;EACA,qBAAA;;;;AAKF,QAAS;EACP,gBAAA;EACA,oCAAA;EACA,YAAA;EACA,cAAA;EACA,iBAAA;;EAGA,QAAA;EACA,kBAAA;EACA,UAAA;;EAGA,kBAAA;EACA,UAAA;EACA,wBAAA;;AAGF,QAAS;EACP,YAAA;EAEA,iCAAA;EACA,kDAAA;EACA,gCAAA;EACA,mCAAA;EACA,oCAAA;EACA,kBAAA;EAEA,iBAAA;EACA,cAAA;;AAGF,QAAS;EACP,YAAA;EACA,qCAAA;EACA,kBAAA;EACA,iBAAA;EACA,cAAA;;AAGF;EACE,oBAAA;;;AAIF,QAAS;EACP,YAAA;EACA,qCAAA;EACA,kBAAA;EACA,iBAAA;EACA,cAAA;;;AAIF,QAAQ,MAAO;EACb,mBAAA;EACA,UAAA;;AAGF;EACE,yCAAA;EACA,YAAY,wDAAZ;EACA,2BAAA;EACA,kBAAA;EACA,yBAAA;EACA,qBAAA;EACA,eAAA;EACA,cAAA;EACA,iBAAA;EACA,wBAAA;EACA,qBAAA;EACA,gCAAA;EACA,kBAAA;EACA,WAAA;;AAGF;EACE,yCAAA;EACA,YAAY,wDAAZ;EACA,2BAAA;EACA,kBAAA;EACA,yBAAA;EACA,qBAAA;EACA,eAAA;EACA,cAAA;EACA,iBAAA;EACA,wBAAA;EACA,qBAAA;EACA,gCAAA;EACA,kBAAA;EACA,WAAA;;AAGF;EACE,YAAY,wDAAZ;EACA,2BAAA;;AAGF,iBAAiB;EACf,YAAY,oDAAZ;EACA,qBAAA;;AAGF,iBAAiB;EACf,kBAAA;EACA,QAAA;;AAGF;EACE,yCAAA;EACA,YAAY,uDAAZ;EACA,2BAAA;EACA,kBAAA;EACA,yBAAA;EACA,qBAAA;EACA,eAAA;EACA,cAAA;EACA,iBAAA;EACA,wBAAA;EACA,qBAAA;EACA,gCAAA;EACA,kBAAA;EACA,kBAAA;EACA,aAAA;EACA,gBAAA;;AAGF;EACE,yCAAA;EACA,YAAY,uDAAZ;EACA,2BAAA;EACA,kBAAA;EACA,yBAAA;EACA,qBAAA;EACA,eAAA;EACA,6BAAA;EACA,iBAAA;EACA,wBAAA;EACA,qBAAA;EACA,gCAAA;EACA,kBAAA;EACA,kBAAA;EACA,aAAA;EACA,gBAAA;;AAGF;EACE,eAAA;;AAGF,kBAAkB;EAChB,YAAY,oDAAZ;EACA,qBAAA;;AAGF,kBAAkB;EAChB,kBAAA;EACA,QAAA;;AAGF;EACE,yCAAA;EACA,YAAY,wDAAZ;EACA,2BAAA;EACA,kBAAA;EACA,yBAAA;EACA,qBAAA;EACA,eAAA;EACA,cAAA;EACA,wBAAA;EACA,qBAAA;EACA,gCAAA;EACA,kBAAA;EACA,WAAA;EACA,iBAAA;;AAGF,aAAa;AACb,kBAAkB;AAClB,iBAAiB;EACf,YAAY,oDAAZ;EACA,qBAAA;;AAGF,kBAAkB;AAClB,iBAAiB;EACf,kBAAA;EACA,QAAA;;AAGF;EACE,iBAAA;EACA,iBAAA;;AAGF;EACE,kBAAA;;AAGF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,YAAY,wDAAZ;EACA,2BAAA;EACA,kBAAA;EACA,yBAAA;;AAGF;EACE,gBAAA;EACA,iBAAA;EACA,gBAAA;EACA,eAAA;EACA,eAAA;;;AAIF;EACE,gBAAA;EACA,iBAAA;EACA,gBAAA;EACA,YAAA;;;AAIF;EACE,YAAA;EACA,eAAA;EACA,eAAA;;;AAIF;EACE,gBAAA;EACA,iBAAA;EACA,gBAAA;EACA,kBAAA;EACA,YAAA;;;AAIF;EACE,eAAA;EACA,eAAA;EACA,yBAAA;EACA,gBAAA;EACA,iBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;;;AAIF;EACE,eAAA;EACA,eAAA;EACA,gBAAA;EACA,iBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;;;AAIF;EACE,YAAA;EACA,eAAA;EACA,eAAA;EACA,gBAAA;;;AAIF;EACE,eAAA;;AAGF,MAAM;EACJ,WAAA;;AAGF,MAAM;EACJ,wDAAA;EACA,aAAA;EACA,YAAA;EACA,UAAA;EACA,MAAM,iBAAN;;AAGF;EACE,wDAAA;EACA,YAAA;EACA,YAAA;;AAGF;EACE,kBAAA;EACA,mBAAA;EACA,WAAA;EACA,kBAAA;;AAGF;AACA;EACE,YAAA;EACA,kBAAA;;AAGF;EACE,YAAA;EACA,gBAAA;EACA,gBAAA;;AAGF;EACE,YAAA;EACA,gBAAA;EACA,gBAAA;;AAGF;EACE,YAAA;EACA,eAAA;EACA,eAAA;;AAGF;EACE,YAAA;EACA,eAAA;EACA,eAAA;;AAGF;EACE,YAAA;EACA,eAAA;EACA,eAAA;;AAGF;EACE,YAAA;EACA,eAAA;EACA,eAAA;;AAGF;EACE,oBAAA;;AAGF;EACE,eAAA;EACA,iBAAA;;AAGF;EACE,YAAA;EACA,cAAA;;AAGF;EACE,iBAAA;EACA,iBAAA;;;AAIF;EACE,aAAA;EACA,mBAAA;EACA,QAAA;EACA,iBAAA;;AAGF;EACE,gBAAA;EACA,YAAA;EACA,eAAA;EACA,gBAAA;EACA,kBAAA;EACA,iCAAA;EACA,cAAA;EACA,eAAA;;AAGF,iBAAiB;EACf,yCAAA;EACA,cAAA;;AAGF,iBAAkB;EAChB,iBAAA;;;AAIF,WAAW;EACT,aAAA;EACA,gCAAA;EACA,mBAAA;EACA,yBAAA;EACA,YAAA;;AAGF,WAAW,KAAM;EACf,iBAAA;EACA,cAAA;EACA,qBAAA;EACA,6BAAA;EACA,0BAAA;EACA,iBAAA;EACA,oBAAA;;AAGF,WAAW,KAAM,MAAK;EACpB,yCAAA;;AAGF,WAAW,KAAM,MAAK;EACpB,yBAAA;EACA,4BAAA;EACA,cAAA;;AAGF,WAAW,KAAM,MAAM;EACrB,iBAAA;;;AAGJ,YAAY,uBAAwB;EAClC,UAAA;;AAGF,WAAW,uBAAwB;EACjC,SAAA;EACA,UAAA;;AAGF;EACE,gBAAgB,gCAAhB;EACA,yBAAA;EACA,sBAAA;;AAGF,uBAAwB;EACtB,cAAA;;;AAIF,uBAAwB;EACtB,aAAA;EACA,mBAAA;EACA,SAAA;EACA,YAAA;EACA,YAAY,iDAAZ;EACA,gCAAA;EACA,gBAAA;;AAGF,uBAAwB,eAAe;EACrC,WAAA;EACA,YAAA;EACA,kBAAA;EACA,yBAAA;EACA,iBAAA;EACA,wCAAA;;AAGF,uBAAwB,eAAe;EACrC,OAAA;;AAGF,uBAAwB,eAAe,cAAc;EACnD,SAAA;EACA,iBAAA;EACA,cAAA;EACA,2CAAA;EACA,wBAAA;EACA,iBAAA;;AAGF,uBAAwB,eAAe,cAAc;EACnD,kBAAA;EACA,cAAA;EACA,eAAA;EACA,2CAAA;;AAGF,uBAAwB,eAAe,cAAc,iBAAiB;EACpE,cAAA;EACA,iBAAA;EACA,gBAAA;;;AAIF,uBAAwB;EACtB,YAAA;EACA,iBAAA;EACA,gBAAA;;AAGF,uBAAwB,gBAAe;EACrC,UAAA;;AAGF,uBAAwB,gBAAe;EACrC,8BAAA;EACA,kBAAA;;AAGF,uBAAwB,gBAAe;EACrC,gCAAA;EACA,kBAAA;;AAGF,uBAAwB,gBAAe,yBAAyB;EAC9D,gCAAA;;;AAIF,uBAAwB;EACtB,kBAAA;;AAGF,uBAAwB,YAAY;EAClC,cAAA;EACA,iBAAA;EACA,cAAA;EACA,iDAAA;EACA,kBAAA;EACA,iBAAA;;AAIF,uBAAwB,YAAY;AACpC,uBAAwB,YAAY;EAClC,WAAA;EACA,gBAAA;EACA,qCAAA;EACA,0CAAA;EACA,kBAAA;EACA,cAAA;EACA,kBAAA;EACA,gBAAA;EACA,sBAAA;;AAGF,uBAAwB,YAAY,MAAK;AACzC,uBAAwB,YAAY,OAAM;EACxC,aAAA;EACA,qBAAA;EACA,wCAAA;EACA,mBAAA;;AAGF,uBAAwB,YAAY,MAAK;AACzC,uBAAwB,YAAY,OAAM;EACxC,YAAA;EACA,mBAAA;EACA,oCAAA;EACA,WAAA;;;AAIF,uBAAwB;EACtB,aAAA;EACA,uBAAuB,cAAvB;EACA,QAAA;EACA,mBAAA;;;AAIF,uBAAwB;EACtB,gCAAA;EACA,YAAA;EACA,kBAAA;EACA,sCAAA;EACA,mBAAA;;AAGF,uBAAwB;EACtB,iCAAA;EACA,YAAA;EACA,kBAAA;EACA,uCAAA;EACA,mBAAA;;AAGF,uBAAwB;EACtB,mCAAA;EACA,YAAA;EACA,kBAAA;EACA,yCAAA;EACA,mBAAA;;AAGF,uBAAwB;EACtB,aAAA;EACA,8BAAA;EACA,mBAAA;EACA,gBAAA;EACA,oCAAA;EACA,kBAAA;EACA,kBAAA;;AAGF,uBAAwB,aAAa;EACnC,iBAAA;EACA,iBAAA;EACA,cAAA;;AAGF,uBAAwB,aAAa;EACnC,kBAAA;EACA,cAAA;EACA,iBAAA;;AAGF,uBAAwB;EACtB,aAAA;EACA,8BAAA;EACA,mBAAA;EACA,gBAAA;EACA,gCAAA;EACA,kBAAA;EACA,kBAAA;;AAGF,uBAAwB,cAAc;EACpC,kBAAA;EACA,cAAA;EACA,iBAAA;;AAGF,uBAAwB,cAAc;EACpC,eAAA;EACA,cAAA;EACA,iBAAA;;;AAIF,uBAAwB;AACxB,uBAAwB;EACtB,gCAAA;EACA,YAAA;EACA,kBAAA;EACA,sCAAA;EACA,mBAAA;;AAGF,uBAAwB,kBAAkB;AAC1C,uBAAwB,uBAAuB;EAC7C,iBAAA;EACA,cAAA;EACA,iDAAA;EACA,kBAAA;EACA,iBAAA;;AAIF,uBAAwB;EACtB,aAAA;EACA,uBAAuB,cAAvB;EACA,aAAA;;AAGF,uBAAwB;EACtB,aAAA;EACA,mBAAA;EACA,QAAA;EACA,gBAAA;EACA,eAAA;EACA,kBAAA;EACA,gCAAA;;AAGF,uBAAwB,gBAAe;EACrC,qCAAA;;AAGF,uBAAwB,gBAAgB,MAAK;EAC3C,WAAA;EACA,SAAA;EACA,eAAA;EACA,qBAAA;;AAGF,uBAAwB,gBAAgB;EACtC,cAAA;EACA,kBAAA;EACA,iBAAA;EACA,iDAAA;;AAGF,uBAAwB,gBAAe;EACrC,mCAAA;EACA,wCAAA;EACA,iBAAA;;AAGF,uBAAwB;EACtB,iBAAA;EACA,mCAAA;EACA,8CAAA;EACA,kBAAA;EACA,kBAAA;EACA,cAAA;EACA,kBAAA;;;AAKF,uBAAwB;EACtB,oCAAA;EACA,YAAA;EACA,kBAAA;EACA,0CAAA;EACA,mBAAA;;AAGF,uBAAwB;EACtB,aAAA;EACA,uBAAuB,cAAvB;EACA,QAAA;;AAGF,uBAAwB;EACtB,aAAA;EACA,8BAAA;EACA,mBAAA;EACA,gBAAA;EACA,+BAAA;EACA,kBAAA;;AAGF,uBAAwB,YAAY;EAClC,kBAAA;EACA,cAAA;EACA,gBAAA;;AAGF,uBAAwB,YAAY;EAClC,kBAAA;EACA,cAAA;EACA,iBAAA;;;AAIF,uBAAwB;EACtB,iCAAA;EACA,YAAA;EACA,kBAAA;EACA,uCAAA;EACA,mBAAA;;AAGF,uBAAwB,sBAAsB;EAC5C,iBAAA;EACA,cAAA;EACA,iDAAA;EACA,iBAAA;EACA,iBAAA;;AAGF,uBAAwB,sBAAsB,GAAG;EAC/C,iBAAA;EACA,cAAA;;AAGF,uBAAwB;EACtB,kBAAA;;;AAIF,uBAAwB;EACtB,gBAAA;;;AAIF,uBAAwB;EACtB,aAAA;EACA,SAAA;EACA,aAAA;EACA,0CAAA;EACA,+BAAA;;AAGF,uBAAwB,gBAAgB;EACtC,OAAA;EACA,iBAAA;EACA,YAAA;EACA,kBAAA;EACA,iBAAA;EACA,eAAA;EACA,yBAAA;EACA,iBAAA;EACA,wBAAA;EACA,yBAAA;;AAGF,uBAAwB,gBAAgB,OAAM;AAC9C,uBAAwB,gBAAgB,OAAM;EAC5C,YAAY,iDAAZ;EACA,cAAA;EACA,wCAAA;;AAGF,uBAAwB,gBAAgB,OAAM,uBAAuB;AACrE,uBAAwB,gBAAgB,OAAM,uBAAuB;EACnE,YAAY,iDAAZ;EACA,WAAW,gBAAX;EACA,0CAAA;;AAGF,uBAAwB,gBAAgB,OAAM;EAC5C,oCAAA;EACA,cAAA;;AAGF,uBAAwB,gBAAgB,OAAM,sBAAsB;EAClE,oCAAA;;;AAIF;EACE,YAAY,iDAAZ;EACA,yBAAA;EACA,kBAAA;EACA,cAAA;EACA,gBAAA;EACA,eAAA;EACA,oBAAA;EACA,iBAAA;EACA,aAAA;EACA,cAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,cAAA;;AAEA,kBAAC;EACC,YAAY,iDAAZ;EACA,WAAW,gBAAX;EACA,wCAAA;;AAnBJ,kBAsBE;EACE,SAAA;EACA,kBAAA;;;AAKJ;EACE,YAAY,2EAAZ;EACA,yBAAA;EACA,kBAAA;EACA,gBAAA;EACA,6BAAA;;AALF,uBAOE;EACE,YAAY,iDAAZ;EACA,gCAAA;EACA,YAAA;EACA,aAAA;EACA,mBAAA;EACA,SAAA;;AAbJ,uBAOE,oBAQE;EACE,WAAA;EACA,YAAA;EACA,kBAAA;EACA,yBAAA;EACA,iBAAA;EACA,cAAA;;AArBN,uBAOE,oBAiBE;EACE,OAAA;;AAzBN,uBAOE,oBAiBE,aAGE;EACE,SAAA;EACA,cAAA;EACA,iBAAA;EACA,2CAAA;;AA/BR,uBAOE,oBAiBE,aAUE;EACE,cAAA;EACA,iBAAA;EACA,eAAA;EACA,2CAAA;;AAtCR,uBAOE,oBAiBE,aAUE,cAME;EACE,iBAAA;;AAzCV,uBA+CE;EACE,oCAAA;EACA,gBAAA;EACA,6CAAA;;AAlDJ,uBA+CE,aAKE;EACE,aAAA;EACA,6BAAA;EACA,mBAAA;EACA,QAAA;EACA,kBAAA;;AAzDN,uBA+CE,aAKE,gBAOE;AA3DN,uBA+CE,aAKE,gBAQE;AA5DN,uBA+CE,aAKE,gBASE;EACE,kBAAA;EACA,OAAA;EACA,oCAAA;EACA,gBAAA;EACA,kBAAA;EACA,sCAAA;;AAnER,uBA+CE,aAKE,gBAOE,aAUE;AArER,uBA+CE,aAKE,gBAQE,cASE;AArER,uBA+CE,aAKE,gBASE,YAQE;EACE,cAAA;EACA,eAAA;EACA,cAAA;EACA,kBAAA;;AAzEV,uBA+CE,aAKE,gBAOE,aAiBE;AA5ER,uBA+CE,aAKE,gBAQE,cAgBE;AA5ER,uBA+CE,aAKE,gBASE,YAeE;EACE,cAAA;EACA,iBAAA;;AA9EV,uBA+CE,aAKE,gBAOE,aAsBE;AAjFR,uBA+CE,aAKE,gBAQE,cAqBE;AAjFR,uBA+CE,aAKE,gBASE,YAoBE;AAjFR,uBA+CE,aAKE,gBAOE,aAuBE;AAlFR,uBA+CE,aAKE,gBAQE,cAsBE;AAlFR,uBA+CE,aAKE,gBASE,YAqBE;AAlFR,uBA+CE,aAKE,gBAOE,aAwBE;AAnFR,uBA+CE,aAKE,gBAQE,cAuBE;AAnFR,uBA+CE,aAKE,gBASE,YAsBE;EACE,iBAAA;EACA,cAAA;EACA,iDAAA;EACA,iBAAA;EACA,gBAAA;;AAxFV,uBA+CE,aAKE,gBAOE,aAgCE;AA3FR,uBA+CE,aAKE,gBAQE,cA+BE;AA3FR,uBA+CE,aAKE,gBASE,YA8BE;AA3FR,uBA+CE,aAKE,gBAOE,aAiCE;AA5FR,uBA+CE,aAKE,gBAQE,cAgCE;AA5FR,uBA+CE,aAKE,gBASE,YA+BE;EACE,kBAAA;EACA,cAAA;EACA,yBAAA;EACA,iBAAA;EACA,gBAAA;;AAjGV,uBA+CE,aAuDE;EACE,aAAA;EACA,uBAAA;EACA,eAAA;;AAzGN,uBA+CE,aAuDE,wBAKE;EACE,iBAAA;EACA,kBAAA;EACA,iBAAA;EACA,iBAAA;EACA,yBAAA;EACA,kBAAA;EACA,wCAAA;;AAlHR,uBA+CE,aAuDE,wBAKE,cASE;EACE,iBAAA;;AAGF,uBAzEN,aAuDE,wBAKE,cAaG;EACC,YAAY,iDAAZ;EACA,cAAA;EACA,iDAAA;;AAGF,uBA/EN,aAuDE,wBAKE,cAmBG;EACC,YAAY,iDAAZ;EACA,YAAA;EACA,2CAAA;;AAGF,uBArFN,aAuDE,wBAKE,cAyBG;EACC,YAAY,iDAAZ;EACA,YAAA;EACA,2CAAA;;AAGF,uBA3FN,aAuDE,wBAKE,cA+BG;EACC,YAAY,iDAAZ;EACA,YAAA;EACA,2CAAA;;AA7IV,uBAmJE;EACE,YAAA;EACA,oCAAA;;AArJJ,uBAmJE,gBAIE;EACE,aAAA;EACA,sBAAA;EACA,QAAA;;AA1JN,uBAmJE,gBAIE,iBAKE;EACE,aAAA;EACA,8BAAA;EACA,gBAAA;EACA,oCAAA;EACA,kBAAA;EACA,kBAAA;;AAEA,uBAjBN,gBAIE,iBAKE,YAQG;EACC,oCAAA;EACA,sCAAA;;AAGF,uBAtBN,gBAIE,iBAKE,YAaG;EACC,oCAAA;EACA,sCAAA;;AAGF,uBA3BN,gBAIE,iBAKE,YAkBG;EACC,oCAAA;EACA,uCAAA;;AAhLV,uBAmJE,gBAIE,iBAKE,YAuBE;EACE,cAAA;EACA,iBAAA;;AArLV,uBAmJE,gBAIE,iBAKE,YA4BE;EACE,cAAA;EACA,gBAAA;;AA1LV,uBAgME;EACE,YAAA;EACA,oCAAA;EACA,0CAAA;;AAnMJ,uBAgME,gBAKE;EACE,gBAAA;EACA,kBAAA;EACA,oCAAA;EACA,8BAAA;EACA,kBAAA;EACA,cAAA;EACA,kBAAA;;AAEA,uBAdJ,gBAKE,aASG;EACC,oCAAA;EACA,0BAAA;;AAhNR,uBAgME,gBAKE,aAcE;EACE,iBAAA;EACA,cAAA;;AAGF,uBAxBJ,gBAKE,aAmBG;EACC,gBAAA;;AAzNR,uBAgME,gBA6BE;EACE,aAAA;EACA,sBAAA;EACA,QAAA;EACA,eAAA;;AAjON,uBAgME,gBA6BE,gBAME;EACE,WAAA;;AApOR,uBAyOE;EACE,YAAA;EACA,oCAAA;EACA,4CAAA;EACA,8BAAA;EACA,cAAA;EACA,kBAAA;;AA/OJ,uBAyOE,gBAQE;EACE,iBAAA;EACA,cAAA;;AAnPN,uBAuPE;EACE,YAAA;EACA,iCAAA;EACA,6BAAA;EACA,8BAAA;EACA,cAAA;EACA,kBAAA;;AA7PJ,uBAuPE,cAQE;EACE,iBAAA;EACA,eAAA;EACA,kBAAA;EACA,cAAA;;AAnQN,uBAuPE,cAQE,cAKE;EAAI,iBAAA;;AApQV,uBAuPE,cAgBE;EACE,gBAAA;;AAxQN,uBAuPE,cAgBE,cAEE;EAAI,iBAAA;;AAEJ,uBApBJ,cAgBE,cAIG;EACC,cAAA;EACA,iBAAA;;AAEF,uBAxBJ,cAgBE,cAQG;EACC,cAAA;;AAEF,uBA3BJ,cAgBE,cAWG;EACC,cAAA;EACA,kBAAA;;AApRR,uBAyRE;EACE,YAAA;EACA,oCAAA;EACA,2CAAA;;AA5RJ,uBAyRE,sBAKE;EACE,WAAA;;AA/RN,uBAmSE;EACE,YAAY,iDAAZ;EACA,yBAAA;EACA,kBAAA;EACA,cAAA;EACA,iBAAA;EACA,6BAAA;EACA,iBAAA;EACA,eAAA;EACA,oBAAA;EACA,2CAAA;;AA7SJ,uBAmSE,kBAYE;EACE,iBAAA;;AAGF,uBAhBF,kBAgBG;EACC,YAAY,iDAAZ;EACA,WAAW,gBAAX;EACA,wCAAA;;AAGF,uBAtBF,kBAsBG;EACC,YAAY,iDAAZ;EACA,qBAAA;;AAEA,uBA1BJ,kBAsBG,oBAIE;EACC,YAAY,iDAAZ;;;;;AASR;EACE,YAAY,2EAAZ;EACA,yBAAA;EACA,kBAAA;EACA,UAAA;EACA,aAAA;EACA,gBAAA;EACA,6BAAA;EACA,wCAAA;;AARF,2BAUE;EACE,YAAY,iDAAZ;EACA,aAAA;EACA,kBAAA;EACA,gCAAA;EACA,kBAAA;;AAfJ,2BAUE,gBAOE;EACE,iBAAA;EACA,cAAA;EACA,kBAAA;EACA,4CAAA;EACA,wCAAA;;AAtBN,2BAUE,gBAeE;EACE,mBAAA;EACA,iBAAA;EACA,iBAAA;EACA,cAAA;EACA,2CAAA;EACA,6BAAA;EACA,gBAAA;;AAhCN,2BAUE,gBAyBE;EACE,iBAAA;EACA,cAAA;EACA,kBAAA;EACA,eAAA;EACA,gBAAA;;AAxCN,2BA4CE;EACE,aAAA;EACA,oCAAA;;AA9CJ,2BA4CE,iBAIE;EACE,aAAA;EACA,SAAA;EACA,mBAAA;EACA,YAAA;EACA,oCAAA;EACA,8BAAA;EACA,kBAAA;;AAEA,2BAbJ,iBAIE,iBASG;EACC,gBAAA;;AA1DR,2BA4CE,iBAIE,iBAaE;EACE,cAAA;EACA,iBAAA;EACA,cAAA;EACA,WAAA;EACA,kBAAA;;AAlER,2BA4CE,iBAIE,iBAqBE;EACE,OAAA;EACA,cAAA;;AAvER,2BA4CE,iBAIE,iBAqBE,cAIE;EACE,cAAA;EACA,cAAA;EACA,eAAA;EACA,kBAAA;EACA,gBAAA;;AA9EV,2BA4CE,iBAIE,iBAqBE,cAYE;EACE,aAAA;EACA,gBAAA;EACA,iBAAA;;AApFV,2BA4CE,iBAIE,iBAqBE,cAkBE;EACE,qBAAA;EACA,eAAA;EACA,cAAA;EACA,gBAAA;EACA,qBAAA;EACA,oBAAA;EACA,iBAAA;EACA,gBAAA;EACA,YAAA;EACA,UAAA;EACA,eAAA;EACA,oBAAA;;AAnGV,2BA4CE,iBAIE,iBAqBE,cAkBE,cAcE;EACE,iBAAA;;AAGF,2BA7DR,iBAIE,iBAqBE,cAkBE,cAkBG;EACC,cAAA;EACA,yCAAA;EACA,WAAW,eAAX;;AA5GZ,2BAmHE;EACE,YAAY,iDAAZ;EACA,YAAA;EACA,kBAAA;EACA,cAAA;EACA,kBAAA;EACA,kBAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,SAAA;EACA,gBAAA;;AA9HJ,2BAmHE,gBAaE;EACE,eAAA;;AAKN;EACE;EAAI;IACF,WAAW,QAAX;IACA,UAAA;;EAEF;IACE,WAAW,UAAX;IACA,YAAA;;;AAOJ;AACA;AACA;EACE,6BAAA;EACA,cAAA;EACA,aAAA;EACA,gBAAgB,gDAAhB;;AANF,iBASE;AARF,cAQE;AAPF,kBAOE;AATF,iBASS;AART,cAQS;AAPT,kBAOS;AATT,iBASgB;AARhB,cAQgB;AAPhB,kBAOgB;AAThB,iBASsB;AARtB,cAQsB;AAPtB,kBAOsB;EAClB,cAAA;;AAVJ,iBAYE;AAXF,cAWE;AAVF,kBAUE;AAZF,iBAYM;AAXN,cAWM;AAVN,kBAUM;EACF,cAAA;;AAbJ,iBAgBE;AAfF,cAeE;AAdF,kBAcE;EACE,aAAA;EACA,mBAAA;EACA,SAAA;EACA,mBAAA;EACA,iBAAA;EACA,YAAY,iDAAZ;EACA,yBAAA;EACA,kBAAA;;AAxBJ,iBAgBE,kBAUE;AAzBJ,cAeE,kBAUE;AAxBJ,kBAcE,kBAUE;EACE,aAAA;EACA,sBAAA;EACA,QAAA;;AA7BN,iBAgBE,kBAgBE;AA/BJ,cAeE,kBAgBE;AA9BJ,kBAcE,kBAgBE;EACE,WAAA;EACA,YAAA;EACA,kBAAA;EACA,yBAAA;EACA,iBAAA;EACA,cAAA;;AAtCN,iBAgBE,kBAwBE;AAvCJ,cAeE,kBAwBE;AAtCJ,kBAcE,kBAwBE;EACE,iBAAA;EACA,kBAAA;EACA,cAAA;EACA,yCAAA;;AA5CN,iBAgBE,kBA8BE;AA7CJ,cAeE,kBA8BE;AA5CJ,kBAcE,kBA8BE;EACE,kBAAA;EACA,cAAA;EACA,yCAAA;;AAjDN,iBAgBE,kBA8BE,oBAIE;AAjDN,cAeE,kBA8BE,oBAIE;AAhDN,kBAcE,kBA8BE,oBAIE;EAAS,cAAA;EAAgB,iBAAA;;AAlD/B,iBAsDE;AArDF,cAqDE;AApDF,kBAoDE;EACE,aAAA;EACA,mBAAA;EACA,SAAA;EACA,mBAAA;EACA,gBAAA;EACA,+CAAA;;AA5DJ,iBAsDE,oBAQE;AA7DJ,cAqDE,oBAQE;AA5DJ,kBAoDE,oBAQE;EACE,cAAA;EACA,iBAAA;EACA,cAAA;;AAjEN,iBAsDE,oBAaE;AAlEJ,cAqDE,oBAaE;AAjEJ,kBAoDE,oBAaE;EACE,OAAA;EACA,mBAAA;EACA,yBAAA;EACA,kBAAA;EACA,gBAAA;EACA,cAAA;EACA,6BAAA;EACA,kBAAA;EACA,iBAAA;EACA,eAAA;EACA,gBAAA;EACA,wBAAA;EACA,sBAAsB,kKAAtB;EACA,4BAAA;EACA,gDAAA;EACA,oCAAA;EACA,mBAAA;;AApFN,iBAsDE,oBAaE,OAmBE;AArFN,cAqDE,oBAaE,OAmBE;AApFN,kBAoDE,oBAaE,OAmBE;EACE,mBAAA;EACA,cAAA;EACA,mBAAA;;AAzFR,iBA8FE;AA7FF,cA6FE;AA5FF,kBA4FE;EACE,WAAA;EACA,yBAAA;EACA,mBAAA;EACA,kBAAA;EACA,yBAAA;EACA,kBAAA;EACA,gBAAA;;AArGJ,iBA8FE,uBASE,MAAM,GAAG;AAtGb,cA6FE,uBASE,MAAM,GAAG;AArGb,kBA4FE,uBASE,MAAM,GAAG;EACP,mBAAA;EACA,gBAAA;EACA,kBAAA;EACA,gCAAA;EACA,cAAA;EACA,iBAAA;EACA,kBAAA;EACA,yBAAA;EACA,qBAAA;;AAhHN,iBA8FE,uBAqBE,MAAM,GAAE;AAlHZ,cA6FE,uBAqBE,MAAM,GAAE;AAjHZ,kBA4FE,uBAqBE,MAAM,GAAE;EACN,+CAAA;EACA,4BAAA;EACA,oCAAA;;AAEA,iBA1BJ,uBAqBE,MAAM,GAAE,mBAKL;AAAD,cA1BJ,uBAqBE,MAAM,GAAE,mBAKL;AAAD,kBA1BJ,uBAqBE,MAAM,GAAE,mBAKL;EAAc,mBAAA;;AACf,iBA3BJ,uBAqBE,MAAM,GAAE,mBAML,UAAU;AAAX,cA3BJ,uBAqBE,MAAM,GAAE,mBAML,UAAU;AAAX,kBA3BJ,uBAqBE,MAAM,GAAE,mBAML,UAAU;EAAS,qCAAA;;AACpB,iBA5BJ,uBAqBE,MAAM,GAAE,mBAOL;AAAD,cA5BJ,uBAqBE,MAAM,GAAE,mBAOL;AAAD,kBA5BJ,uBAqBE,MAAM,GAAE,mBAOL;EAAS,mCAAA;;AAEV,iBA9BJ,uBAqBE,MAAM,GAAE,mBASL;AAAD,cA9BJ,uBAqBE,MAAM,GAAE,mBASL;AAAD,kBA9BJ,uBAqBE,MAAM,GAAE,mBASL;EACC,mCAAA;;AA7HR,iBA8FE,uBAqBE,MAAM,GAAE,mBAaN;AA/HN,cA6FE,uBAqBE,MAAM,GAAE,mBAaN;AA9HN,kBA4FE,uBAqBE,MAAM,GAAE,mBAaN;EACE,gBAAA;EACA,sBAAA;EACA,cAAA;;AAnIR,iBA8FE,uBAqBE,MAAM,GAAE,mBAmBN;AArIN,cA6FE,uBAqBE,MAAM,GAAE,mBAmBN;AApIN,kBA4FE,uBAqBE,MAAM,GAAE,mBAmBN;EACE,WAAA;EACA,YAAA;EACA,sBAAA;EACA,iBAAA;EACA,kBAAA;EACA,wCAAA;;AA5IR,iBA8FE,uBAqBE,MAAM,GAAE,mBA4BN;AA9IN,cA6FE,uBAqBE,MAAM,GAAE,mBA4BN;AA7IN,kBA4FE,uBAqBE,MAAM,GAAE,mBA4BN;EACE,WAAA;EACA,kBAAA;EACA,mBAAA;EACA,yBAAA;EACA,kBAAA;EACA,cAAA;EACA,gBAAA;EACA,6BAAA;EACA,eAAA;;AAxJR,iBA8FE,uBAqBE,MAAM,GAAE,mBA4BN,uBAWE;AAzJR,cA6FE,uBAqBE,MAAM,GAAE,mBA4BN,uBAWE;AAxJR,kBA4FE,uBAqBE,MAAM,GAAE,mBA4BN,uBAWE;EAAS,mBAAA;EAAqB,cAAA;;AAE9B,iBA9DN,uBAqBE,MAAM,GAAE,mBA4BN,uBAaG;AAAD,cA9DN,uBAqBE,MAAM,GAAE,mBA4BN,uBAaG;AAAD,kBA9DN,uBAqBE,MAAM,GAAE,mBA4BN,uBAaG;EACC,aAAA;EACA,mBAAA;;AA9JV,iBAoKE;AAnKF,cAmKE;AAlKF,kBAkKE;EACE,YAAY,iDAAZ;EACA,yBAAA;EACA,8BAAA;EACA,kBAAA;EACA,kBAAA;EACA,mBAAA;;AA1KJ,iBAoKE,mBAQE;AA3KJ,cAmKE,mBAQE;AA1KJ,kBAkKE,mBAQE;EACE,aAAA;EACA,8BAAA;EACA,mBAAA;EACA,kBAAA;EACA,iBAAA;;AAEA,iBAfJ,mBAQE,aAOG;AAAD,cAfJ,mBAQE,aAOG;AAAD,kBAfJ,mBAQE,aAOG;EAAc,gBAAA;;AAnLrB,iBAoKE,mBAQE,aASE;AApLN,cAmKE,mBAQE,aASE;AAnLN,kBAkKE,mBAQE,aASE;EACE,iBAAA;EACA,cAAA;EACA,yCAAA;;AAxLR,iBAoKE,mBAQE,aAcE;AAzLN,cAmKE,mBAQE,aAcE;AAxLN,kBAkKE,mBAQE,aAcE;EACE,cAAA;EACA,iBAAA;EACA,kBAAA;EACA,yCAAA;;AA9LR,iBAoME;AAnMF,cAmME;AAlMF,kBAkME;EACE,aAAA;EACA,mBAAA;EACA,SAAA;EACA,kBAAA;EACA,gBAAA;;AAzMJ,iBAoME,SAOE;AA1MJ,cAmME,SAOE;AAzMJ,kBAkME,SAOE;EACE,OAAA;EACA,cAAA;EACA,iBAAA;EACA,iBAAA;;AA/MN,iBAoME,SAcE,MAAK;AAjNT,cAmME,SAcE,MAAK;AAhNT,kBAkME,SAcE,MAAK;EACH,WAAA;EACA,mBAAA;EACA,yBAAA;EACA,kBAAA;EACA,gBAAA;EACA,cAAA;EACA,kBAAA;EACA,6BAAA;;AA1NN,iBAoME,SAyBE;AA5NJ,cAmME,SAyBE;AA3NJ,kBAkME,SAyBE;EACE,WAAA;EACA,mBAAA;EACA,yBAAA;EACA,kBAAA;EACA,gBAAA;EACA,cAAA;EACA,6BAAA;EACA,kBAAA;EACA,eAAA;;AAtON,iBAoME,SAyBE,+BAWE;AAvON,cAmME,SAyBE,+BAWE;AAtON,kBAkME,SAyBE,+BAWE;EAAS,mBAAA;EAAqB,cAAA;;AAxOpC,iBAoME,SAuCE,MAAK;AA1OT,cAmME,SAuCE,MAAK;AAzOT,kBAkME,SAuCE,MAAK;EACH,WAAA;EACA,YAAA;EACA,cAAA;EACA,qBAAA;;AAQN,uBACE;EACE,eAAA;EACA,4CAAA;EACA,gBAAA;;AAJJ,uBACE,yBAKE;EACE,iBAAA;EACA,kBAAA;EACA,cAAA;EACA,kBAAA;;AAVN,uBACE,yBAKE,uBAME;EAAI,iBAAA;;AAZV,uBACE,yBAcE;EACE,mBAAA;EACA,QAAA;EACA,cAAA;EACA,kBAAA;EACA,4CAAA;;AApBN,uBACE,yBAcE,uBAOE;EACE,WAAA;EACA,YAAA;EACA,kBAAA;EACA,cAAA;;AA1BR,uBACE,yBAcE,uBAaE;EACE,OAAA;EACA,iBAAA;;AA9BR,uBACE,yBAcE,uBAiBE;EACE,kBAAA;EACA,cAAA;EACA,iBAAA;EACA,mBAAA;;AApCR,uBACE,yBAcE,uBAuBE;AAtCN,uBACE,yBAcE,uBAuBa;EAAgB,WAAA;EAAa,mBAAA;;AAtC9C,uBACE,yBAcE,uBAwBE;EAAc,cAAA;EAAgB,kBAAA;EAAoB,mBAAA;;AAvCxD,uBA4CE;EACE,kBAAA;EACA,cAAA;;;;ACt5FJ,gBAAgB;;EAEd,gBAAgB,uCAAhB;EACA,aAAA;EACA,sBAAA;EACA,YAAA;EACA,UAAA;EACA,SAAA;;;;;;;;;;;;AAPF,gBAAgB,KAUd;EACE,UAAA;EACA,SAAA;;AAZJ,gBAAgB,KAgBd;EACE,gBAAgB,yCAAhB;EACA,YAAA;EACA,aAAA;EACA,sBAAA;EACA,YAAA;EACA,gBAAA;EACA,UAAA;EACA,SAAA;;AAxBJ,gBAAgB,KA4Bd,MAAK;AA5BP,gBAAgB,KA6Bd,OAAM;EACJ,cAAA;EACA,YAAA;EACA,0CAAA;;AAhCJ,gBAAgB,KAoCd,MAAK;AApCP,gBAAgB,KAqCd,MAAK;AArCP,gBAAgB,KAsCd;EACE,cAAA;EACA,0CAAA;EACA,yBAAA;EACA,SAAA;EACA,gBAAA;EACA,aAAa,kBAAb;EACA,kBAAA;;AA7CJ,gBAAgB,KAgDd;EACE,SAAA;EACA,gBAAA;;AAlDJ,gBAAgB,KAqDd,MAAK;EACH,WAAA;EACA,YAAA;EACA,aAAA;EACA,kBAAA;;AAzDJ,gBAAgB,KA4Dd;EACE,cAAA;EACA,6BAAA;EACA,SAAA;;AA/DJ,gBAAgB,KAkEd;EACE,aAAA;EACA,mBAAA;EACA,mBAAA;EACA,SAAA;EACA,eAAA;EACA,gBAAgB,uCAAhB;EACA,cAAA;;AAzEJ,gBAAgB,KA4Ed;EACE,cAAA;EACA,WAAA;EACA,YAAA;EACA,iBAAA;EACA,sBAAA;EACA,kBAAA;EACA,eAAA;;AAEA,gBArFY,KA4Ed,gBASG;EACC,0CAAA;;AAtFN,gBAAgB,KA0Fd;EACE,OAAA;EACA,aAAA;EACA,sBAAA;EACA,YAAA;;AA9FJ,gBAAgB,KAiGd;EACE,cAAA;EACA,aAAA;EACA,mBAAA;EACA,WAAA;;AArGJ,gBAAgB,KAiGd,gBAME;EACE,8BAAA;EACA,sBAAA;EACA,uBAAA;EACA,eAAA;EACA,aAAa,kBAAb;;AAEA,gBA9GU,KAiGd,gBAME,OAOG;EACC,kCAAA;EACA,0CAAA;;AAhHR,gBAAgB,KAsHd;EACE,YAAY,wDAAZ;EACA,yBAAA;EACA,cAAA;EACA,sBAAA;EACA,yBAAA;EACA,eAAA;;AA5HJ,gBAAgB,KAsHd,kBAQE;EACE,iBAAA;;AAGF,gBAlIY,KAsHd,kBAYG;EACC,YAAY,oDAAZ;EACA,cAAA;EACA,wCAAA;;AAGF,gBAxIY,KAsHd,kBAkBG;EACC,kBAAA;EACA,QAAA;;AA1IN,gBAAgB,KA8Id,cAAc,GAAE;EACd,YAAA;EACA,UAAA;EACA,aAAA;EACA,gBAAA;EACA,iBAAA;EACA,eAAA;EACA,aAAa,WAAb;;AArJJ,gBAAgB,KAwJd,cAAc,GAAE,SAAU;EACxB,WAAA;EACA,YAAA;EACA,SAAA;EACA,iBAAA;EACA,aAAa,WAAb;EACA,eAAA;EACA,gBAAA;EACA,cAAA;;AAEA,gBAlKY,KAwJd,cAAc,GAAE,SAAU,MAUvB;EACC,0BAAA;;AAnKN,gBAAgB,KAwKd,IAAG;EACD,aAAA;EACA,gCAAA;EACA,SAAA;EACA,YAAA;EACA,yBAAA;EACA,cAAA;;AA9KJ,gBAAgB,KAiLd,IAAG,KAAM,EAAC;EACR,iBAAA;EACA,cAAA;EACA,qBAAA;EACA,6BAAA;EACA,0BAAA;EACA,iBAAA;EACA,oBAAA;;AAxLJ,gBAAgB,KAiLd,IAAG,KAAM,EAAC,KASR;EACE,aAAA;;AAGF,gBA9LY,KAiLd,IAAG,KAAM,EAAC,KAaP;EACC,yCAAA;;AAGF,gBAlMY,KAiLd,IAAG,KAAM,EAAC,KAiBP;EACC,yBAAA;EACA,4BAAA;EACA,cAAA;;AArMN,gBAAgB,KA0Md;EACE,aAAA;EACA,gBAAA;EACA,gBAAA;EACA,cAAA;;AAEA,gBAhNY,KA0Md,KAMG;EACC,cAAA;;AAjNN,gBAAgB,KAsNd;EACE,gBAAA;EACA,SAAA;EACA,UAAA;;AAzNJ,gBAAgB,KAsNd,WAKE,GAAE;EACA,aAAA;EACA,mBAAA;EACA,kBAAA;EACA,gBAAA;EACA,gBAAA;EACA,mBAAA;;AAEA,gBAnOU,KAsNd,WAKE,GAAE,KAQC;EACC,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,QAAA;;AAJF,gBAnOU,KAsNd,WAKE,GAAE,KAQC,QAMC,MAAK;EACH,eAAA;EACA,cAAA;;AA3OV,gBAAgB,KAsNd,WAKE,GAAE,KAoBA;EACE,cAAA;EACA,eAAA;EACA,iBAAA;EACA,SAAA;EACA,iBAAA;;AApPR,gBAAgB,KA0Pd;EACE,qBAAA;EACA,mBAAA;EACA,gBAAA;EACA,gBAAA;EACA,iBAAA;EACA,aAAa,kBAAb;EACA,SAAA;EACA,kBAAA;;AAlQJ,gBAAgB,KAsQd;EACE,cAAA;EACA,eAAA;;AAxQJ,gBAAgB,KA2Qd;EACE,eAAA;EACA,gBAAA;;AA7QJ,gBAAgB,KAgRd;EACE,OAAA;EACA,gBAAA;;AAlRJ,gBAAgB,KAqRd;EACE,OAAA;EACA,gBAAA;;AAvRJ,gBAAgB,KA0Rd;EACE,OAAA;EACA,gBAAA;EACA,gBAAA;;AA7RJ,gBAAgB,KA+Rd;EACE,OAAA;EACA,gBAAA;EACA,mBAAA;EACA,gBAAA;;AAnSJ,gBAAgB,KAsSd;EACE,kBAAA;EACA,WAAA;;AAxSJ,gBAAgB,KA4Sd;EACE,aAAA;EACA,sBAAA;EACA,oCAAA;;AA/SJ,gBAAgB,KA4Sd,QAKE;EACE,YAAA;EACA,eAAA;EACA,WAAA;;;;;AAQN,eACE;EACE,aAAA;EACA,sBAAA;EACA,YAAA;EACA,eAAA;EACA,iCAAA;EACA,kBAAA;EACA,sCAAA;EACA,qBAAA;;AATJ,eAYE;EACE,oBAAA;EACA,mBAAA;EACA,YAAA;EACA,sBAAA;EACA,mBAAA;EACA,kBAAA;EACA,iBAAA;;AAEA,eATF,qBASG;EAAmB,iCAAA;EAAgC,cAAA;EAAgB,yBAAA;;AACpE,eAVF,qBAUG;EAAmB,mCAAA;EAAkC,cAAA;EAAgB,yBAAA;;AACtE,eAXF,qBAWG;EAAqB,qCAAA;EAAoC,WAAA;EAAa,sBAAA;;AACvE,eAZF,qBAYG;EAAiB,mCAAA;EAAkC,cAAA;EAAgB,yBAAA;;AACpE,eAbF,qBAaG;EAAmB,iCAAA;EAAgC,WAAA;EAAa,sBAAA;;;AAKrE;EACE,aAAA;EACA,mBAAA;EACA,WAAA;EACA,eAAA;EACA,eAAA;EACA,+BAAA;EACA,kBAAA;EACA,sBAAA;;AARF,iBAUE;EAAoB,iBAAA;;AAVtB,iBAWE;EAAqB,kBAAA;EAAoB,WAAA;;AAX3C,iBAYE;EAAsB,kBAAA;EAAoB,WAAA;EAAa,kBAAA;;AAGzD;EACE,uCAAA;EACA,iCAAA;EACA,kBAAA;EACA,eAAA;;AAJF,iBAME;EACE,kBAAA;EACA,kBAAA;;AARJ,iBAUE;EAAmB,cAAA;;AAVrB,iBAWE;EAAmB,cAAA;;AAXrB,iBAYE;EAAqB,WAAA;;AAZvB,iBAaE;EAAiB,cAAA;;AAGnB;EACE,kBAAA;EACA,WAAA;EACA,iBAAA;;;AAIF,cACE;EACE,sBAAA;;AAFJ,cAKE;EACE,iBAAA;EACA,iBAAA;EACA,4CAAA;EACA,sBAAA;EACA,qBAAA;;AAVJ,cAaE;EACE,WAAA;EACA,kBAAA;EACA,yBAAA;EACA,qBAAA;;AAjBJ,cAaE,oBAME;AAnBJ,cAaE,oBAMM;EACF,sBAAA;EACA,4CAAA;;AArBN,cAaE,oBAWE,iBAAgB;EAAS,+BAAA;;AAxB7B,cAaE,oBAYE;EAAqB,eAAA;;AAzBzB,cAaE,oBAcE;EACE,WAAA;EACA,YAAA;EACA,sBAAA;EACA,iBAAA;EACA,kBAAA;EACA,wCAAA;EACA,iBAAA;;AAlCN,cAsCE;EACE,+BAAA;EACA,kBAAA;EACA,sBAAA;EACA,kBAAA;;AA1CJ,cAsCE,gBAME;EAAe,qBAAA;;AA5CnB,cAsCE,gBAOE;EAAiB,iBAAA;EAAmB,gBAAA;;AA7CxC,cAgDE;EACE,WAAA;EACA,kBAAA;EACA,WAAA;EACA,mBAAA;;;AClbJ,gBAAgB;EAEd,gBAAgB,uCAAhB;;AAFF,gBAAgB,MAKd;EACE,YAAA;EACA,UAAA;EACA,SAAA;EACA,aAAA;EACA,sBAAA;EACA,gBAAA;;AAXJ,gBAAgB,MAed;AAfF,gBAAgB,MAgBd;EACE,YAAA;EACA,gBAAgB,yCAAhB;EACA,YAAA;EACA,aAAA;EACA,sBAAA;EACA,OAAA;EACA,aAAA;EACA,gBAAA;EACA,UAAA;EACA,SAAA;;AA1BJ,gBAAgB,MAed,KAcE;AA7BJ,gBAAgB,MAgBd,mBAaE;EACE,YAAA;EACA,aAAA;EACA,sBAAA;EACA,OAAA;EACA,aAAA;EACA,gBAAA;;AAnCN,gBAAgB,MAwCd;EACE,gBAAgB,uCAAhB;EACA,eAAA;EACA,SAAA;EACA,yBAAA;EACA,4BAAA;;AA7CJ,gBAAgB,MAwCd,cAOE;EACE,uBAAA;;AAhDN,gBAAgB,MAwCd,cAWE;EACE,OAAA;EACA,aAAA;EACA,sBAAA;EACA,WAAA;;AAvDN,gBAAgB,MAwCd,cAkBE;EACE,aAAA;EACA,kCAAA;EACA,YAAA;EACA,eAAA;EACA,+BAAA;EACA,wCAAA;EACA,kBAAA;;AAjEN,gBAAgB,MAwCd,cA4BE;EACE,aAAA;EACA,sBAAA;EACA,WAAA;EACA,uBAAA;EACA,8BAAA;EACA,wCAAA;EACA,kBAAA;;AAEA,gBA7EU,MAwCd,cA4BE,YASG;EACC,2CAAA;EACA,gCAAA;;AA/ER,gBAAgB,MAwCd,cA2CE;EACE,kBAAA;EACA,iBAAA;EACA,cAAA;EACA,SAAA;EACA,qBAAA;EACA,+CAAA;EACA,yBAAA;EACA,qBAAA;EACA,aAAa,kBAAb;EACA,2CAAA;;AA7FN,gBAAgB,MAwCd,cAwDE;EACE,aAAA;EACA,mBAAA;EACA,WAAA;EACA,eAAA;EACA,uBAAA;;AArGN,gBAAgB,MAwCd,cAgEE;EACE,aAAA;EACA,sBAAA;EACA,WAAA;EACA,mBAAA;EACA,OAAA;EACA,YAAA;;AA9GN,gBAAgB,MAwCd,cAyEE;EACE,iBAAA;EACA,cAAA;EACA,SAAA;EACA,gBAAA;EACA,2CAAA;;AAtHN,gBAAgB,MAwCd,cAiFE;EACE,kBAAA;EACA,iBAAA;EACA,WAAA;EACA,uBAAA;EACA,8BAAA;EACA,wCAAA;EACA,kBAAA;EACA,iBAAA;EACA,kBAAA;EACA,2CAAA;EACA,WAAA;;AApIN,gBAAgB,MAwCd,cA+FE;EACE,iBAAA;EACA,gBAAA;EACA,uBAAA;EACA,iCAAA;EACA,wCAAA;EACA,WAAA;EACA,kBAAA;EACA,kBAAA;EACA,iBAAA;EACA,eAAA;EACA,WAAA;EACA,2CAAA;EACA,8CAAA;;AAEA,gBAtJU,MAwCd,cA+FE,YAeG;EACC,iBAAA;;AAGF,gBA1JU,MAwCd,cA+FE,YAmBG;EACC,kCAAA;EACA,+BAAA;;AAGF,gBA/JU,MAwCd,cA+FE,YAwBG;EACC,iCAAA;EACA,oCAAA;;AAGF,gBApKU,MAwCd,cA+FE,YA6BG;EACC,aAAA;EACA,qBAAA;EACA,8EAAA;EACA,iCAAA;;AAxKR,gBAAgB,MAwCd,cAoIE,eACE,GAAE,gBAAgB;EAChB,kBAAA;EACA,gBAAA;;AA/KR,gBAAgB,MAwCd,cAoIE,eAME,iBAAgB;EACd,kBAAA;;AAnLR,gBAAgB,MAwCd,cAoIE,eAUE,MAAK,gBAAgB;EACnB,iBAAA;;AAvLR,gBAAgB,MAwCd,cAoIE,eAcE;EACE,iBAAA;;AA3LR,gBAAgB,MAwCd,cAoIE,eAkBE;EACE,iBAAA;;AA/LR,gBAAgB,MAsMd;EACE,SAAA;EACA,iBAAA;EACA,yBAAA;;AAzMJ,gBAAgB,MA+Md;EACE,SAAA;EACA,eAAA;EACA,kBAAA;EACA,wBAAA;EACA,2BAAA;;AApNJ,gBAAgB,MA+Md,YAOE;EACE,UAAA;EACA,uBAAA;;AAEA,gBA1NU,MA+Md,YAOE,KAIG,IAAI;EACH,aAAA;;AA3NR,gBAAgB,MA+Md,YAOE,KASE;AA/NN,gBAAgB,MA+Md,YAOE,KASS;EACL,YAAA;EACA,iBAAA;;AAjOR,gBAAgB,MA+Md,YAOE,KAcE;EACE,YAAA;;AArOR,gBAAgB,MA+Md,YA2BE;EACE,gBAAA;EACA,SAAA;EACA,UAAA;;AA7ON,gBAAgB,MA+Md,YA2BE,cAKE,GAAE;EACA,sBAAA;EACA,sBAAA;EACA,8BAAA;EACA,wCAAA;EACA,kBAAA;;AAEA,gBAtPQ,MA+Md,YA2BE,cAKE,GAAE,KAOC;EACC,+BAAA;;AAGF,gBA1PQ,MA+Md,YA2BE,cAKE,GAAE,KAWC;EACC,8BAAA;EACA,oCAAA;EACA,gBAAA;EACA,qBAAA;;AAJF,gBA1PQ,MA+Md,YA2BE,cAKE,GAAE,KAWC,eAMC;EACE,cAAA;EACA,2CAAA;;AAlQZ,gBAAgB,MA+Md,YA0DE;EACE,aAAA;EACA,mBAAA;EACA,WAAA;EACA,yBAAA;;AA7QN,gBAAgB,MA+Md,YA0DE,eAME;EACE,oBAAA;EACA,mBAAA;EACA,uBAAA;EACA,WAAA;EACA,YAAA;EACA,cAAA;EACA,qBAAA;EACA,eAAA;EACA,kBAAA;EACA,oBAAA;;AAEA,gBA3RQ,MA+Md,YA0DE,eAME,cAYG;EACC,cAAA;EACA,kCAAA;EACA,WAAW,UAAX;;AA9RV,gBAAgB,MA+Md,YA0DE,eAME,cAkBE;EACE,kBAAA;;AAGF,gBArSQ,MA+Md,YA0DE,eAME,cAsBG;EACC,cAAA;;AAEA,gBAxSM,MA+Md,YA0DE,eAME,cAsBG,UAGE;EACC,cAAA;EACA,kCAAA;;AAIJ,gBA9SQ,MA+Md,YA0DE,eAME,cA+BG;EACC,cAAA;;AAEA,gBAjTM,MA+Md,YA0DE,eAME,cA+BG,YAGE;EACC,cAAA;EACA,kCAAA;;AAIJ,gBAvTQ,MA+Md,YA0DE,eAME,cAwCG;EACC,cAAA;;AAEA,gBA1TM,MA+Md,YA0DE,eAME,cAwCG,WAGE;EACC,cAAA;EACA,kCAAA;;AALJ,gBAvTQ,MA+Md,YA0DE,eAME,cAwCG,WAQC,EAAC;EACC,cAAA;;AATJ,gBAvTQ,MA+Md,YA0DE,eAME,cAwCG,WAYC,EAAC;EACC,cAAA;;AAIJ,gBAxUQ,MA+Md,YA0DE,eAME,cAyDG;EACC,cAAA;;AAEA,gBA3UM,MA+Md,YA0DE,eAME,cAyDG,SAGE;EACC,cAAA;EACA,kCAAA;;AA7UZ,gBAAgB,MA+Md,YAoIE;EACE,iBAAA;EACA,iBAAA;;AArVN,gBAAgB,MA+Md,YA0IE;AAzVJ,gBAAgB,MA+Md,YA0IM;AAzVR,gBAAgB,MA+Md,YA0IU;AAzVZ,gBAAgB,MA+Md,YA0IiB,KAAI;AAzVvB,gBAAgB,MA+Md,YA0IuC,KAAI;AAzV7C,gBAAgB,MA+Md,YA2IE;AA1VJ,gBAAgB,MA+Md,YA2Ie;AA1VjB,gBAAgB,MA+Md,YA2I+B;AA1VjC,gBAAgB,MA+Md,YA4IE;AA3VJ,gBAAgB,MA+Md,YA4I4B;AA3V9B,gBAAgB,MA+Md,YA6IE;AA5VJ,gBAAgB,MA+Md,YA6IgB;EACZ,cAAA;EACA,iDAAA;;AA9VN,gBAAgB,MA+Md,YAmJE,MAAK;AAlWT,gBAAgB,MA+Md,YAmJsB,MAAK;AAlW7B,gBAAgB,MA+Md,YAmJ4C;EACxC,cAAA;EACA,oCAAA;EACA,wCAAA;EACA,YAAA;EACA,uBAAA;EACA,gBAAA;;AAEA,gBA1WU,MA+Md,YAmJE,MAAK,aAQF;AAAD,gBA1WU,MA+Md,YAmJsB,MAAK,eAQtB;AAAD,gBA1WU,MA+Md,YAmJ4C,OAQvC;EACC,qCAAA;EACA,oCAAA;;AA5WR,gBAAgB,MA+Md,YAkKE;AAjXJ,gBAAgB,MA+Md,YAkKM;EACF,iBAAA;EACA,cAAA;;AAnXN,gBAAgB,MA+Md,YAwKE,GAAE,gBAAgB;EAChB,kBAAA;EACA,kBAAA;EACA,qBAAA;EACA,cAAA;;AA3XN,gBAAgB,MA+Md,YAgLE;EACE,aAAA;EACA,sBAAA;EACA,WAAA;EACA,sBAAA;EACA,qBAAA;EACA,+BAAA;EACA,wCAAA;EACA,kBAAA;;AAvYN,gBAAgB,MA+Md,YAgLE,cAUE;EACE,kBAAA;EACA,iBAAA;EACA,cAAA;EACA,yBAAA;EACA,qBAAA;EACA,oBAAA;EACA,sBAAA;EACA,8BAAA;EACA,6CAAA;EACA,kBAAA;EACA,2CAAA;;AApZR,gBAAgB,MA+Md,YAgLE,cAwBE;EACE,aAAA;EACA,8BAAA;EACA,mBAAA;EACA,WAAA;EACA,uBAAA;EACA,8BAAA;EACA,wCAAA;EACA,kBAAA;;AA/ZR,gBAAgB,MA+Md,YAgLE,cAwBE,UAUE;EACE,WAAA;EACA,eAAA;;AAGF,gBAtaQ,MA+Md,YAgLE,cAwBE,UAeG;EACC,oCAAA;EACA,WAAA;;AAFF,gBAtaQ,MA+Md,YAgLE,cAwBE,UAeG,SAIC;EACE,WAAA;EACA,YAAA;EACA,kBAAA;EACA,wCAAA;;AARJ,gBAtaQ,MA+Md,YAgLE,cAwBE,UAeG,SAWC;EACE,aAAA;EACA,mBAAA;;AAbJ,gBAtaQ,MA+Md,YAgLE,cAwBE,UAeG,SAWC,YAIE;EACE,cAAA;EACA,2CAAA;EACA,gBAAA;EACA,eAAA;;AAEA,gBA3bE,MA+Md,YAgLE,cAwBE,UAeG,SAWC,YAIE,EAMG;EACC,WAAA;EACA,6CAAA;;AAvBR,gBAtaQ,MA+Md,YAgLE,cAwBE,UAeG,SA4BC;EACE,WAAA;;AAncZ,gBAAgB,MA+Md,YAgLE,cAwBE,UAgDE;EACE,gBAAA;EACA,iBAAA;EACA,cAAA;EACA,2CAAA;;AA3cV,gBAAgB,MA+Md,YAgLE,cAwBE,UAuDE;EACE,gBAAA;EACA,iBAAA;EACA,cAAA;EACA,2CAAA;;AAldV,gBAAgB,MA+Md,YAgLE,cAwBE,UA8DE;EACE,kBAAA;EACA,iBAAA;EACA,eAAA;EACA,WAAA;EACA,8BAAA;EACA,sBAAA;EACA,kBAAA;EACA,wCAAA;EACA,2CAAA;;AA9dV,gBAAgB,MA+Md,YAgLE,cAwBE,UA0EE;EACE,kBAAA;EACA,iBAAA;EACA,eAAA;EACA,cAAA;EACA,8BAAA;EACA,sBAAA;EACA,kBAAA;EACA,wCAAA;EACA,2CAAA;;AAGF,gBA7eQ,MA+Md,YAgLE,cAwBE,UAsFG;EACC,gCAAA;;AADF,gBA7eQ,MA+Md,YAgLE,cAwBE,UAsFG,WAGC;EACE,kBAAA;EACA,gBAAA;;AALJ,gBA7eQ,MA+Md,YAgLE,cAwBE,UAsFG,WAQC;EACE,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,WAAA;;AAZJ,gBA7eQ,MA+Md,YAgLE,cAwBE,UAsFG,WAQC,iBAME;EACE,WAAA;EACA,eAAA;EACA,cAAA;EACA,kBAAA;EACA,iBAAA;EACA,iBAAA;;AApBN,gBA7eQ,MA+Md,YAgLE,cAwBE,UAsFG,WAQC,iBAeE;EACE,WAAA;EACA,YAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,iBAAA;EACA,iBAAA;EACA,kBAAA;EACA,wCAAA;EACA,YAAY,8EAAZ;EACA,cAAA;EACA,eAAA;EACA,qBAAA;;AAEA,gBAnhBE,MA+Md,YAgLE,cAwBE,UAsFG,WAQC,iBAeE,mBAeG;EACC,YAAY,gFAAZ;EACA,oCAAA;EACA,WAAW,WAAX;;AAGF,gBAzhBE,MA+Md,YAgLE,cAwBE,UAsFG,WAQC,iBAeE,mBAqBG;EACC,WAAW,WAAX;;AAMR,gBAhiBQ,MA+Md,YAgLE,cAwBE,UAyIG;EACC,gCAAA;;AAGF,gBApiBQ,MA+Md,YAgLE,cAwBE,UA6IG;EACC,+BAAA;EACA,WAAA;;AAFF,gBApiBQ,MA+Md,YAgLE,cAwBE,UA6IG,eAIC;EACE,kBAAA;;AALJ,gBApiBQ,MA+Md,YAgLE,cAwBE,UA6IG,eAQC;EACE,iBAAA;EACA,sBAAA;;AAIJ,gBAljBQ,MA+Md,YAgLE,cAwBE,UA2JG;EACC,0CAAA;EACA,WAAA;;AAFF,gBAljBQ,MA+Md,YAgLE,cAwBE,UA2JG,UAIC;EACE,kBAAA;;AALJ,gBAljBQ,MA+Md,YAgLE,cAwBE,UA2JG,UAQC;EACE,WAAA;EACA,gBAAA;;AAVJ,gBAljBQ,MA+Md,YAgLE,cAwBE,UA2JG,UAaC;EACE,iBAAA;EACA,sBAAA;;AAKN,gBAtkBU,MA+Md,YAgLE,cAuMG,YACC,UAAS;EACP,0CAAA;EACA,WAAA;;AAHJ,gBAtkBU,MA+Md,YAgLE,cAuMG,YACC,UAAS,YAIP;EACE,kBAAA;;AANN,gBAtkBU,MA+Md,YAgLE,cAuMG,YACC,UAAS,YAQP;EACE,kBAAA;EACA,iBAAA;EACA,kBAAA;EACA,WAAA;EACA,8BAAA;EACA,sBAAA;EACA,kBAAA;EACA,wCAAA;EACA,2CAAA;;AAlBN,gBAtkBU,MA+Md,YAgLE,cAuMG,YACC,UAAS,YAoBP;EACE,WAAA;EACA,eAAA;EACA,kBAAA;;AAxBN,gBAtkBU,MA+Md,YAgLE,cAuMG,YACC,UAAS,YA0BP;EACE,kBAAA;EACA,iBAAA;EACA,kBAAA;EACA,WAAA;EACA,8BAAA;EACA,sBAAA;EACA,kBAAA;EACA,wCAAA;EACA,2CAAA;;AApCN,gBAtkBU,MA+Md,YAgLE,cAuMG,YAwCC,UAAS;EACP,8BAAA;;AAzCJ,gBAtkBU,MA+Md,YAgLE,cAuMG,YAwCC,UAAS,eAGP;EACE,kBAAA;EACA,iBAAA;EACA,iBAAA;EACA,WAAA;EACA,8BAAA;EACA,uBAAA;EACA,kBAAA;EACA,wCAAA;EACA,2CAAA;;AA1nBZ,gBAAgB,MA+Md,YAkbE;EACE,aAAA;EACA,sBAAA;EACA,WAAA;EACA,iBAAA;;AAroBN,gBAAgB,MA+Md,YAkbE,gBAME;EACE,SAAA;;AAxoBR,gBAAgB,MA+Md,YA6bE;EACE,aAAA;EACA,mBAAA;EACA,mBAAA;EACA,WAAA;EACA,iBAAA;;AAjpBN,gBAAgB,MA+Md,YA6bE,oBAOE;EACE,SAAA;EACA,OAAA;;AArpBR,gBAAgB,MA+Md,YA6bE,oBAYE;EACE,aAAA;EACA,mBAAA;EACA,WAAA;EACA,sBAAA;EACA,mBAAA;;AA7pBR,gBAAgB,MA+Md,YA6bE,oBAYE,kBAOE;EACE,SAAA;EACA,iBAAA;;AAjqBV,gBAAgB,MA+Md,YA6bE,oBAYE,kBAYE,MAAK;EACH,SAAA;EACA,eAAA;;;AAQV,gBAAgB,MAAM,eAGpB;EACE,YAAY,4EAAZ;EACA,wCAAA;EACA,kBAAA;EACA,UAAA;;AAKA,gBAZY,MAAM,eAWpB,WACG;EACC,YAAY,6EAAZ;;AAbN,gBAAgB,MAAM,eAkBpB;EACE,yBAAA;EACA,UAAA;;AApBJ,gBAAgB,MAAM,eAuBpB;EACE,WAAA;EACA,YAAA;EACA,kBAAA;EACA,wCAAA;EACA,iBAAA;EACA,eAAA;EACA,cAAA;;AA9BJ,gBAAgB,MAAM,eAkCpB,IAAG,KACD,MAAK;EACH,2CAAA;EACA,cAAA;;AArCN,gBAAgB,MAAM,eA0CpB;EACE,cAAA;EACA,2CAAA;;AA5CJ,gBAAgB,MAAM,eAgDpB;EACE,YAAY,4EAAZ;EACA,+CAAA;;AAMJ,gBAAgB,MAAM,UAGpB;EACE,YAAY,6EAAZ;EACA,yCAAA;EACA,kBAAA;EACA,UAAA;;AAKA,gBAZY,MAAM,UAWpB,WACG;EACC,YAAY,6EAAZ;;AAbN,gBAAgB,MAAM,UAkBpB;EACE,yBAAA;EACA,UAAA;;AApBJ,gBAAgB,MAAM,UAuBpB;EACE,WAAA;EACA,YAAA;EACA,kBAAA;EACA,yCAAA;EACA,iBAAA;EACA,eAAA;EACA,cAAA;;AA9BJ,gBAAgB,MAAM,UAkCpB,IAAG,KACD,MAAK;EACH,4CAAA;EACA,cAAA;;AArCN,gBAAgB,MAAM,UA0CpB;EACE,cAAA;EACA,4CAAA;;AA5CJ,gBAAgB,MAAM,UAgDpB;EACE,YAAY,6EAAZ;EACA,gDAAA;;AAMA,iBACE,MACE,WAAW,SAAQ,KACjB;EACE,OAAA;EACA,gBAAA;;AAOR,qBACE,aAAY;EACV,aAAA;EACA,sBAAA;EACA,WAAA;;AAJJ,qBAOE;EACE,aAAA;EACA,mBAAA;EACA,WAAA;;AAVJ,qBAOE,eAKE;EACE,iBAAA;EACA,eAAA;EACA,kBAAA;;AAfN,qBAOE,eAWE;EACE,aAAA;EACA,mBAAA;EACA,WAAA;EACA,OAAA;;AAtBN,qBAOE,eAkBE;EACE,iBAAA;EACA,iBAAA;;AA3BN,qBAOE,eAuBE;EACE,aAAA;EACA,cAAA;EACA,sBAAA;EACA,iBAAA;;AAlCN,qBAOE,eA8BE,OAAM;EACJ,WAAA;;AAtCN,qBA0CE;EACE,aAAA;EACA,6BAAA;EACA,kBAAA;EACA,mBAAA;EACA,4CAAA;;AA/CJ,qBA0CE,gBAOE;EACE,kBAAA;EACA,cAAA;;AAnDN,qBA0CE,gBAOE,YAIE;EACE,cAAA;;;AAOZ,gBAAgB,MACd;EACE,aAAA;EACA,mBAAA;EACA,QAAA;EACA,eAAA;EACA,cAAA;;AANJ,gBAAgB,MACd,gBAOE;EACE,oBAAA;EACA,mBAAA;EACA,QAAA;EACA,iBAAA;EACA,YAAY,8DAAZ;EACA,yBAAA;EACA,kBAAA;EACA,cAAA;EACA,6BAAA;EACA,iBAAA;EACA,eAAA;EACA,2CAAA;EACA,gFAAA;EACA,yBAAA;EACA,mBAAA;;AAvBN,gBAAgB,MACd,gBAOE,kBAiBE;EAAI,cAAA;;AAEJ,gBA3BU,MACd,gBAOE,kBAmBG;EACC,YAAY,8DAAZ;EACA,qBAAA;EACA,WAAA;EACA,iFAAA;;AAJF,gBA3BU,MACd,gBAOE,kBAmBG,MAKC;EAAI,cAAA;;AAGN,gBAnCU,MACd,gBAOE,kBA2BG;EACC,YAAY,8DAAZ;EACA,WAAW,eAAX;EACA,wCAAA","file":"mournblade.css","sourcesContent":[]} \ No newline at end of file +{"version":3,"sources":["../simple-converted.less","../item-styles.less","../actor-styles.less"],"names":[],"mappings":";AACE;EACE,aAAa,aAAb;EACA,SAAS,2CAA2C,OAAO,WAA3D;;AAGF;EACE,aAAa,WAAb;EACA,SAAS,iCAAiC,OAAO,WAAjD;;AAGF;;EAEE,sCAAA;EACA,uCAAA;EACA,yCAAA;EACA,oCAAA;EAEA,qCAAA;EACA,iCAAA;EACA,kCAAA;EACA,6BAAA;EAEA,mCAAA;EACA,4BAAA;EACA,6BAAA;EACA,2BAAA;EACA,kCAAA;EAEA,yBAAA;EACA,2BAAA;EAEA,+BAAA;EACA,8BAAA;EACA,0BAAA;EAEA,+BAAA;EACA,8BAAA;EACA,8BAAA;;EAGA,uCAAA;EACA,wCAAA;EACA,yCAAA;EAEA,yCAAA;EACA,2CAAA;EACA,6CAAA;;AAIF,WAAY;AACZ,WAAY;AACZ,WAAY;EACV,aAAa,WAAb;EACA,kBAAA;;;;AAKF;EACE,sBAAA;EACA,mBAAA;EACA,eAAA;EACA,mBAAA;;;AAIF,MAAO,OAAM,aAAc,GAAG;AAC9B,WAAY;AACZ,OAAQ;AACR,WAAY,YAAY,OAAM;EAC5B,aAAa,WAAb;EACA,iBAAA;;;AAIF,MAAO,IAAG;EACR,aAAa,aAAb;EACA,iBAAA;;;AAIF,WAAY;AACZ,gBAAiB;AACjB,MAAO,OAAM,aAAc,mBAAkB;AAC7C,MAAO,OAAM,aAAc,mBAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA,WAAY;EACV,iBAAA;;AAGF;EACE,+BAAA;;AAGF,WAAW,MAAO;EAChB,SAAA;EACA,UAAA;;AAGF;EACE,iBAAA;;AAGF,KAAM,MAAK;AACX,eAAgB,GAAG,GAAG,GAAE,YAAY;AACpC,CAAC;EACC,gCAAA;;AAGF,SAAS;AACT,SAAS;EACP,WAAA;EACA,yBAAA;EACA,eAAA;;AAGF,KAAK;AACL,MAAM;EACJ,UAAA;EACA,mBAAA;EACA,qCAAA;;AAGF;EACE,yBAAA;;AAGF;AACA;EACE,aAAA;EACA,4BAAA;EACA,uBAAuB,UAAU,eAAjC;EACA,SAAA;EACA,cAAA;EACA,UAAA;;AAGF;EACE,4BAAA;EACA,uBAAuB,UAAU,eAAjC;;AAGF;EACE,4BAAA;EACA,uBAAuB,UAAU,eAAjC;;AAGF;EACE,4BAAA;EACA,uBAAuB,UAAU,eAAjC;;AAGF;EACE,4BAAA;EACA,uBAAuB,UAAU,eAAjC;;AAGF;EACE,4BAAA;EACA,uBAAuB,UAAU,eAAjC;;AAGF;EACE,4BAAA;EACA,uBAAuB,UAAU,eAAjC;;AAGF;EACE,4BAAA;EACA,uBAAuB,UAAU,eAAjC;;AAGF;EACE,8BAAA;EACA,uBAAuB,WAAW,eAAlC;;AAGF;EACE,8BAAA;EACA,uBAAuB,WAAW,eAAlC;;AAGF;EACE,8BAAA;EACA,uBAAuB,WAAW,eAAlC;;AAGF;AACA;AACA;EACE,wBAAA;EACA,qBAAA;EACA,uBAAA;EACA,yBAAA;EACA,sBAAA;EACA,mBAAA;EACA,kBAAA;EACA,YAAA;;AAGF;EACE,uBAAA;EACA,oBAAA;EACA,2BAAA;EACA,gBAAA;;AAGF;EACE,qBAAA;EACA,kBAAA;EACA,yBAAA;EACA,iBAAA;;AAGF;EACE,yBAAA;EACA,sBAAA;EACA,mBAAA;EACA,wBAAA;EACA,qBAAA;EACA,uBAAA;EACA,kBAAA;;AAGF;EACE,iBAAA;;AAGF;EACE,yBAAA;EACA,sBAAA;EACA,8BAAA;;AAGF;EACE,MAAM,aAAN;;;AAKF,gBAAiB;EACf,mBAAA;EACA,mBAAA;EACA,eAAA;EACA,gBAAA;EACA,oBAAA;EACA,oBAAA;EACA,aAAA;EACA,8BAAA;EACA,6BAAA;EACA,uBAAA;EACA,mBAAA;EACA,mBAAA;EACA,eAAA;EACA,uBAAA;EACA,oBAAA;EACA,2BAAA;EACA,mBAAA;;AAGF,gBAAiB,cAAc;EAC7B,mBAAA;EACA,mBAAA;EACA,eAAA;EACA,aAAA;EACA,YAAA;EACA,kBAAA;EACA,iBAAA;EACA,sBAAA;;AAGF;EACE,wBAAA;EACA,SAAA;EACA,UAAA;EACA,gBAAA;EACA,eAAA;EACA,kCAAA;;AAGF,WAAW;EACT,+BAAA;EACA,wCAAA;EACA,eAAA;;AAGF;EACE,wBAAA;EACA,WAAA;EACA,gBAAA;EACA,UAAA;EACA,eAAA;;AAGF;EACE,YAAA;EACA,WAAA;EACA,SAAA;EACA,sBAAA;;AAGF,gBAAiB,cAAc;EAC7B,mBAAA;EACA,WAAA;EACA,OAAA;;AAGF,gBAAiB,cAAc,GAAE;EAC/B,YAAA;EACA,YAAA;EACA,aAAA;EACA,gBAAA;EACA,iBAAA;EACA,eAAA;EACA,aAAa,WAAb;;AAGF,gBAAiB,cAAc,GAAE,SAAU;EACzC,WAAA;EACA,YAAA;EACA,SAAA;EACA,iBAAA;EACA,aAAa,WAAb;EACA,eAAA;EACA,gBAAA;;AAGF,gBAAiB;EACf,mBAAA;EACA,WAAA;EACA,OAAA;;AAGF,gBAAiB;AACjB,gBAAiB,YAAY;EAC3B,YAAA;EACA,iBAAA;;AAGF,gBAAiB,YAAY,KAAK;EAChC,YAAA;EACA,iBAAA;;AAGF;EACE,iBAAA;EACA,kBAAA;EACA,iBAAA;;AAGF;EACE,SAAA;EACA,aAAA;EACA,cAAA;;AAGF;EACE,SAAA;EACA,aAAA;EACA,cAAA;;AAGF;EACE,SAAA;EACA,aAAA;EACA,cAAA;;AAGF,gBAAiB,KAAK;EACpB,gBAAA;;AAGF,gBAAiB,KAAK;EACpB,cAAA;;AAGF,gBAAiB;EACf,iBAAA;EACA,yBAAA;;AAGF,gBAAiB;EACf,YAAA;EACA,0BAAA;EACA,6BAAA;EACA,cAAA;;AAGF,gBAAiB,MAAM;EACrB,iBAAA;EACA,iBAAA;;AAGF,gBAAiB,MAAM,MAAK;EAC1B,0BAAA;EACA,iBAAA;;AAGF,gBAAiB;EACf,gBAAA;EACA,aAAA;EACA,UAAA;EACA,gBAAA;;AAGF,gBAAiB,YAAY;EAC3B,iBAAA;;AAGF,gBAAiB,YAAY;EAC3B,YAAA;EACA,iBAAA;EACA,cAAA;EACA,6BAAA;;AAGF,gBAAiB,YAAY,MAAM;EACjC,mBAAA;EACA,kBAAA;EACA,cAAA;EACA,iBAAA;;AAGF,gBAAiB,YAAY,MAAM;EACjC,cAAA;;AAGF,gBAAiB,YAAY;EAC3B,SAAA;;AAGF,gBAAiB,YAAY;EAC3B,mBAAA;EACA,kBAAA;EACA,cAAA;EACA,iBAAA;;;;AAMF,WAAW,MAAO,gBAAgB;;EAEhC,gBAAgB,gDAAhB;;;AAIF,WAAW,MAAO,gBAAgB,cAAc,MAAK;AACrD,WAAW,MAAO,gBAAgB,cAAc,MAAK;AACrD,WAAW,MAAO,gBAAgB,cAAc,MAAK;AACrD,WAAW,MAAO,gBAAgB,cAAc,MAAK;AACrD,WAAW,MAAO,gBAAgB,cAAc,MAAK;EACnD,6BAAA;EACA,qCAAA;EACA,cAAA;EACA,sBAAA;;AAGF,WAAY;AACZ,WAAW,MAAO,gBAAgB;EAChC,iBAAA;EACA,gBAAgB,gDAAhB;;;AAKF,OAAO;EACL,uBAAA;;AAGF,MAAO,OAAM,aAAc;EACzB,iBAAA;EACA,sBAAA;EACA,8BAAA;EACA,UAAA;;AAGF,MAAO,IAAG;EACR,iBAAA;EACA,iBAAA;EACA,YAAA;EACA,cAAA;EACA,SAAA;EACA,sBAAA;EACA,kBAAA;EACA,yBAAA;EACA,mBAAA;EACA,kBAAA;EACA,qBAAA;EACA,uBAAA;EACA,YAAA;;AAGF,GAAG,WAAY;EACb,kBAAA;EACA,kBAAA;EACA,YAAA;;AAGF,GAAG,WAAY,MAAK;EAClB,SAAS,EAAT;EACA,kBAAA;EACA,MAAA;EACA,QAAA;EACA,YAAA;EACA,UAAA;EACA,+CAAA;;AAGF,MAAO,KAAI;EACT,UAAA;;AAGF,OAAO,WAAW;EAChB,SAAS,EAAT;EACA,cAAA;EACA,WAAA;;AAGF,MAAO,OAAM,aAAc;EACzB,iBAAA;;AAGF,MAAO,OAAM,aAAc;EACzB,WAAA;;AAGF;EACE,qBAAA;EACA,gBAAA;EACA,WAAA;;AAGF,WAAW,MAAO,gBAAgB,SAAQ,MAAO;EAC/C,SAAA;EACA,UAAA;EACA,SAAA;EACA,gBAAA;;AAGF,WAAW,MAAO,gBAAgB;AAClC,WAAW,MAAO,gBAAgB;EAChC,eAAA;EACA,gBAAA;EACA,kBAAA;;;;;AAQF;AACA;AACA;AACA;EACE,iBAAA;;AAGF;AACA;EACE,SAAA;EACA,UAAA;;AAGF;AACA;EACE,qBAAA;;AAGF,MAAO;EACL,eAAA;EACA,gBAAA;;AAGF,cAAe;EACb,SAAA;EACA,UAAA;;AAGF,aAAa,aAAW;EACtB,oCAAA;;AAGF,aAAa,aAAW,UAAU;EAChC,gCAAA;;AAGF,aAAa,aAAW,UAAU;EAChC,mBAAA;;AAGF;EACE,iBAAA;;AAGF;AACA;EACE,iBAAA;;AAGF;EACE,gBAAA;EACA,uCAAA;EACA,sBAAA;EACA,iBAAA;EACA,cAAA;;AAGF;EACE,cAAA;;AAGF;EACE,aAAA;;AAGF;EACE,mBAAA;;AAGF;EACE,mBAAA;;AAGF;EACE,iBAAA;;AAGF;EACE,iBAAA;;AAGF;EACE,iBAAA;;AAGF;EACE,iBAAA;;AAGF;EACE,WAAA;EACA,YAAA;EACA,YAAA;EACA,qBAAA;;AAGF;EACE,sBAAA;EACA,yBAAA;EACA,2BAAA;EACA,YAAA;EACA,aAAA;;AAGF;EACE,yBAAA;EACA,2BAAA;EACA,iBAAA;EACA,YAAA;;AAGF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,YAAA;EACA,gBAAA;;AAGF;EACE,aAAA;;AAGF;EACE,YAAA;;AAGF;EACE,kBAAA;;AAGF;EACE,YAAA;;AAGF;EACE,YAAA;;AAGF;EACE,YAAA;EACA,qBAAA;;AAGF;AACA;EACE,YAAA;EACA,gBAAA;EACA,iBAAA;EACA,gBAAA;;AAGF;AACA;EACE,YAAA;EACA,gBAAA;EACA,qBAAA;EACA,oBAAA;;AAGF;EACE,YAAA;EACA,gBAAA;EACA,qBAAA;EACA,oBAAA;;AAGF;EACE,YAAA;EACA,gBAAA;EACA,qBAAA;EACA,oBAAA;;AAGF;EACE,iBAAA;;AAGF;EACE,iBAAA;;AAGF;EACE,mBAAA;EACA,yBAAA;EACA,2BAAA;;AAGF;EACE,YAAA;EACA,gBAAA;EACA,iBAAA;EACA,gBAAA;;AAGF;EACE,YAAA;EACA,gBAAA;EACA,iBAAA;EACA,gBAAA;;AAGF;EACE,YAAA;EACA,gBAAA;EACA,iBAAA;EACA,gBAAA;;AAGF;AACA;EACE,YAAA;EACA,gBAAA;EACA,iBAAA;EACA,gBAAA;;AAGF;EACE,eAAA;;AAGF;EACE,iBAAA;;AAGF;EACE,gBAAA;;AAGF;EACE,mBAAA;EACA,cAAA;EACA,YAAA;;AAGF;EACE,YAAA;;AAGF;EACE,mBAAA;EACA,YAAA;;AAGF;EACE,WAAA;EACA,eAAA;EACA,YAAA;EACA,cAAA;EACA,gBAAA;EACA,qBAAA;EACA,oBAAA;;AAGF;EACE,yBAAA;;;AAIF;EACE,aAAA;EACA,kBAAA;EACA,gBAAA;;AAGF,YAAY;EACV,2BAAA;EACA,sBAAA;EACA,kBAAA;EACA,YAAA;EACA,WAAA;;AAGF,YAAY;EACV,2BAAA;EACA,sBAAA;EACA,kBAAA;EACA,YAAA;EACA,UAAA;;AAGF,aAAa;EACX,kBAAA;EACA,mBAAA;EACA,eAAA;EACA,gBAAA;EACA,UAAA;EACA,iBAAA;EACA,eAAA;;AAGF,aAAa,aAAa;EACxB,gBAAA;;AAGF,UAAW,gBAAe;EACxB,UAAA;;;AAIF;EACE,YAAA;EACA,2BAAA;EACA,iBAAA;EACA,gBAAA;EACA,eAAA;EACA,YAAA;EACA,gBAAA;EACA,iBAAA;EACA,WAAA;EACA,kBAAA;EACA,SAAA;EACA,kBAAA;;AAIF;EACE,YAAA;;;;AAKF;EACE,eAAA;EACA,yBAAA;EACA,gCAAA;;;AAKF,QAAQ;EACN,wBAAA;;AAGF,aAAa;AACb,cAAe;EACb,gCAAA;EACA,0CAAA;;AAGF,YAAa,gBAAgB;EAC3B,0CAAA;EACA,qBAAA;EACA,kBAAA;;AAGF,YAAa,gBAAgB,QAAO;EAClC,+BAAA;EACA,eAAA;;AAGF;EACE,oCAAA;EACA,iBAAA;EACA,YAAA;EACA,kBAAA;EACA,sBAAA;EACA,aAAA;EACA,mBAAA;;AAGF,aAAc,gBAAgB;AAC9B,aAAc,gBAAgB;EAC5B,iBAAA;;AAGF,aAAc;EACZ,iBAAA;EACA,sBAAA;;AAGF,gBAAiB;EACf,cAAA;EACA,iBAAA;EACA,wBAAA;;AAGF,gBAAiB;EACf,cAAA;EACA,iBAAA;EACA,wBAAA;;AAGF,gBAAiB;EACf,cAAA;EACA,iBAAA;EACA,wBAAA;;AAGF,gBAAiB;EACf,aAAA;EACA,iBAAA;EACA,wBAAA;;AAGF;EACE,YAAA;;AAGF;EACE,WAAA;EACA,YAAA;;AAMF;EACE,6BAAA;EACA,cAAA;EACA,YAAY,iDAAZ;EACA,yBAAA;EACA,kBAAA;EACA,gBAAA;EACA,yCAAA;;AAPF,qBASE;EACE,aAAA;EACA,mBAAA;EACA,SAAA;EACA,YAAY,8DAAZ;EACA,kBAAA;EACA,gCAAA;;AAfJ,qBASE,kBAQE;EACE,WAAA;EACA,YAAA;EACA,kBAAA;EACA,yBAAA;EACA,iBAAA;EACA,cAAA;EACA,8BAAA;;AAxBN,qBASE,kBAkBE;EACE,OAAA;EACA,YAAA;;AA7BN,qBASE,kBAkBE,iBAIE;EACE,iBAAA;EACA,UAAA;EACA,0CAAA;EACA,kBAAA;EACA,iBAAA;EACA,cAAA;EACA,2CAAA;EACA,mBAAA;EACA,gBAAA;EACA,YAAA;;AAzCR,qBASE,kBAkBE,iBAiBE;EACE,qBAAA;EACA,mCAAA;EACA,yBAAA;EACA,mBAAA;EACA,gBAAA;EACA,kBAAA;EACA,cAAA;EACA,sBAAA;EACA,yBAAA;;AArDR,qBASE,kBAkBE,iBAiBE,sBAWE;EAAI,iBAAA;;AAvDZ,qBA4DE;EACE,iBAAA;EACA,+CAAA;EACA,aAAA;EACA,sBAAA;EACA,QAAA;;AAjEJ,qBA4DE,iBAOE;EACE,aAAA;EACA,qBAAA;EACA,8BAAA;EACA,QAAA;EACA,kBAAA;EACA,cAAA;EACA,iDAAA;;AAEA,qBAhBJ,iBAOE,UASG;EAAc,mBAAA;;AA5ErB,qBA4DE,iBAOE,UAWE;EACE,cAAA;EACA,iBAAA;EACA,cAAA;;AAjFR,qBA4DE,iBAOE,UAWE,YAIE;EAAI,iBAAA;EAAmB,cAAA;;AAlF/B,qBA4DE,iBAOE,UAkBE;EACE,cAAA;EACA,iBAAA;EACA,mBAAA;;AAEA,qBA9BN,iBAOE,UAkBE,YAKG;EACC,iBAAA;EACA,cAAA;EACA,kBAAA;;AAIJ,qBArCJ,iBAOE,UA8BG;EACC,2BAAA;EACA,cAAA;EACA,kBAAA;EACA,iBAAA;EACA,mBAAA;EACA,cAAA;;AANF,qBArCJ,iBAOE,UA8BG,UAOC;EAAI,iBAAA;EAAmB,cAAA;;AAxG/B,qBA6GE;EACE,aAAA;EACA,mBAAA;EACA,mBAAA;EACA,QAAA;EACA,kBAAA;EACA,sBAAA;EACA,yBAAA;EACA,cAAA;EACA,iBAAA;;AAEA,qBAXF,mBAWG;AAAU,qBAXb,mBAWc;EACV,SAAS,EAAT;EACA,OAAA;EACA,WAAA;EACA,YAAY,yDAAZ;;AA5HN,qBAgIE;EACE,sBAAA;EACA,kBAAA;EACA,gBAAA;EACA,cAAA;;AApIJ,qBAgIE,uBAME;EAAI,iBAAA;;AAAmB,qBANzB,uBAME,EAAwB;EAAc,gBAAA;;AAtI1C,qBAgIE,uBAOE;AAvIJ,qBAgIE,uBAOM;EAAI,cAAA;;AAvIZ,qBAgIE,uBAQE;AAxIJ,qBAgIE,uBAQU;EAAI,cAAA;;AAxIhB,qBA2IE;EACE,iCAAA;EACA,0CAAA;EACA,kBAAA;EACA,cAAA;;AAGF,qBAAC,8BACC;EACE,iBAAA;;AAFJ,qBAAC,8BACC,kBAEE;EAAiB,WAAA;EAAa,YAAA;;AAHlC,qBAAC,8BACC,kBAGE;EAAkB,kBAAA;;AAJtB,qBAAC,8BAMC;EAAyB,qBAAA;;AAI7B;EACE,YAAA;;AAGF;EACE,sBAAA;;AAGF;EACE,WAAA;EACA,WAAA;EACA,YAAA;EACA,wBAAA;;AAGF;EACE,mBAAA;EACA,sBAAA;;AAGF;EACE,sBAAA;EACA,YAAA;EACA,gBAAA;EACA,eAAA;;AAGF;EACE,2CAAA;EACA,qBAAA;EACA,sBAAA;EACA,WAAA;EACA,iBAAA;EACA,eAAA;;AAGF;EACE,UAAA;EACA,WAAA;EACA,eAAA;EACA,aAAA;EACA,oBAAA;EACA,mBAAA;EACA,sBAAA;;AAGF;EACE,YAAA;EACA,uBAAA;;AAGF;EACE,qBAAA;EACA,gBAAA;EACA,2BAAA;EACA,6BAAA;;AAGF;EACE,kBAAA;;AAGF;EACE,oCAAA;EACA,iBAAA;;AAGF,aAAa;EACX,qCAAA;EACA,yBAAA;;AAGF,aAAc;EACZ,SAAA;EACA,wBAAA;EACA,WAAA;EACA,WAAA;EACA,YAAA;;AAGF;EACE,cAAA;EACA,sBAAA;EACA,eAAA;EACA,yCAAA;EACA,6CAAA;;AAGF,aAAa,QAAM;EACjB,yBAAA;EACA,kCAAA;EACA,iCAAA;;AAGF,QAAS,cAAc;EACrB,qBAAA;EACA,2BAAA;EACA,sBAAA;EACA,0CAAA;;;;;;;;;;;;;;;;;;;;AAwBF,SAAU;AACV,SAAU;EACR,wBAAA;EACA,eAAA;EACA,gBAAA;EACA,mBAAA;EACA,8BAAA;EACA,qDAAA;EACA,uBAAA;EACA,wBAAA;;AAGF,SAAU,eAAc;AACxB,SAAU,cAAa;AACvB,SAAU,eAAc;AACxB,SAAU,cAAa;EACrB,mBAAA;EACA,8BAAA;EACA,qDAAA;EACA,uBAAA;EACA,wBAAA;EACA,2BAAA;;AAGF,OAAQ,YAAY;EAClB,yBAAA;EACA,+BAAA;;AAGF,OAAQ,YAAY;EAClB,kDAAA;EACA,gCAAA;EACA,mCAAA;EACA,oCAAA;EACA,kBAAA;;AAGF,OAAQ;EACN,mBAAA;EACA,yBAAA;;AAGF;EACE,qDAAA;EACA,uBAAA;EACA,wBAAA;EACA,mBAAA;;AAGF,WAAY,YAAY,OAAM,SAAS;EACrC,mBAAA;;AAGF,WAAY,YAAY,OAAM;EAC5B,mBAAA;EACA,8BAAA;EACA,qDAAA;EACA,uBAAA;EACA,wBAAA;;AAGF,WAAY,YAAY,OAAM;AAC9B,WAAY,YAAY,OAAM;EAC5B,mBAAA;EACA,8BAAA;EACA,qDAAA;EACA,uBAAA;EACA,wBAAA;EACA,2BAAA;;AAGF,WAAY;EACV,mBAAA;EACA,8BAAA;EACA,qDAAA;EACA,uBAAA;EACA,wBAAA;;;AAIF;EACE,kBAAA;EACA,qBAAA;;;;AAKF,QAAS;EACP,gBAAA;EACA,oCAAA;EACA,YAAA;EACA,cAAA;EACA,iBAAA;;EAGA,QAAA;EACA,kBAAA;EACA,UAAA;;EAGA,kBAAA;EACA,UAAA;EACA,wBAAA;;AAGF,QAAS;EACP,YAAA;EAEA,iCAAA;EACA,kDAAA;EACA,gCAAA;EACA,mCAAA;EACA,oCAAA;EACA,kBAAA;EAEA,iBAAA;EACA,cAAA;;AAGF,QAAS;EACP,YAAA;EACA,qCAAA;EACA,kBAAA;EACA,iBAAA;EACA,cAAA;;AAGF;EACE,oBAAA;;;AAIF,QAAS;EACP,YAAA;EACA,qCAAA;EACA,kBAAA;EACA,iBAAA;EACA,cAAA;;;AAIF,QAAQ,MAAO;EACb,mBAAA;EACA,UAAA;;AAGF;EACE,yCAAA;EACA,YAAY,wDAAZ;EACA,2BAAA;EACA,kBAAA;EACA,yBAAA;EACA,qBAAA;EACA,eAAA;EACA,cAAA;EACA,iBAAA;EACA,wBAAA;EACA,qBAAA;EACA,gCAAA;EACA,kBAAA;EACA,WAAA;;AAGF;EACE,yCAAA;EACA,YAAY,wDAAZ;EACA,2BAAA;EACA,kBAAA;EACA,yBAAA;EACA,qBAAA;EACA,eAAA;EACA,cAAA;EACA,iBAAA;EACA,wBAAA;EACA,qBAAA;EACA,gCAAA;EACA,kBAAA;EACA,WAAA;;AAGF;EACE,YAAY,wDAAZ;EACA,2BAAA;;AAGF,iBAAiB;EACf,YAAY,oDAAZ;EACA,qBAAA;;AAGF,iBAAiB;EACf,kBAAA;EACA,QAAA;;AAGF;EACE,yCAAA;EACA,YAAY,uDAAZ;EACA,2BAAA;EACA,kBAAA;EACA,yBAAA;EACA,qBAAA;EACA,eAAA;EACA,cAAA;EACA,iBAAA;EACA,wBAAA;EACA,qBAAA;EACA,gCAAA;EACA,kBAAA;EACA,kBAAA;EACA,aAAA;EACA,gBAAA;;AAGF;EACE,yCAAA;EACA,YAAY,uDAAZ;EACA,2BAAA;EACA,kBAAA;EACA,yBAAA;EACA,qBAAA;EACA,eAAA;EACA,6BAAA;EACA,iBAAA;EACA,wBAAA;EACA,qBAAA;EACA,gCAAA;EACA,kBAAA;EACA,kBAAA;EACA,aAAA;EACA,gBAAA;;AAGF;EACE,eAAA;;AAGF,kBAAkB;EAChB,YAAY,oDAAZ;EACA,qBAAA;;AAGF,kBAAkB;EAChB,kBAAA;EACA,QAAA;;AAGF;EACE,yCAAA;EACA,YAAY,wDAAZ;EACA,2BAAA;EACA,kBAAA;EACA,yBAAA;EACA,qBAAA;EACA,eAAA;EACA,cAAA;EACA,wBAAA;EACA,qBAAA;EACA,gCAAA;EACA,kBAAA;EACA,WAAA;EACA,iBAAA;;AAGF,aAAa;AACb,kBAAkB;AAClB,iBAAiB;EACf,YAAY,oDAAZ;EACA,qBAAA;;AAGF,kBAAkB;AAClB,iBAAiB;EACf,kBAAA;EACA,QAAA;;AAGF;EACE,iBAAA;EACA,iBAAA;;AAGF;EACE,kBAAA;;AAGF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,YAAY,wDAAZ;EACA,2BAAA;EACA,kBAAA;EACA,yBAAA;;AAGF;EACE,gBAAA;EACA,iBAAA;EACA,gBAAA;EACA,eAAA;EACA,eAAA;;;AAIF;EACE,gBAAA;EACA,iBAAA;EACA,gBAAA;EACA,YAAA;;;AAIF;EACE,YAAA;EACA,eAAA;EACA,eAAA;;;AAIF;EACE,gBAAA;EACA,iBAAA;EACA,gBAAA;EACA,kBAAA;EACA,YAAA;;;AAIF;EACE,eAAA;EACA,eAAA;EACA,yBAAA;EACA,gBAAA;EACA,iBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;;;AAIF;EACE,eAAA;EACA,eAAA;EACA,gBAAA;EACA,iBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;;;AAIF;EACE,YAAA;EACA,eAAA;EACA,eAAA;EACA,gBAAA;;;AAIF;EACE,eAAA;;AAGF,MAAM;EACJ,WAAA;;AAGF,MAAM;EACJ,wDAAA;EACA,aAAA;EACA,YAAA;EACA,UAAA;EACA,MAAM,iBAAN;;AAGF;EACE,wDAAA;EACA,YAAA;EACA,YAAA;;AAGF;EACE,kBAAA;EACA,mBAAA;EACA,WAAA;EACA,kBAAA;;AAGF;AACA;EACE,YAAA;EACA,kBAAA;;AAGF;EACE,YAAA;EACA,gBAAA;EACA,gBAAA;;AAGF;EACE,YAAA;EACA,gBAAA;EACA,gBAAA;;AAGF;EACE,YAAA;EACA,eAAA;EACA,eAAA;;AAGF;EACE,YAAA;EACA,eAAA;EACA,eAAA;;AAGF;EACE,YAAA;EACA,eAAA;EACA,eAAA;;AAGF;EACE,YAAA;EACA,eAAA;EACA,eAAA;;AAGF;EACE,oBAAA;;AAGF;EACE,eAAA;EACA,iBAAA;;AAGF;EACE,YAAA;EACA,cAAA;;AAGF;EACE,iBAAA;EACA,iBAAA;;;AAIF;EACE,aAAA;EACA,mBAAA;EACA,QAAA;EACA,iBAAA;;AAGF;EACE,gBAAA;EACA,YAAA;EACA,eAAA;EACA,gBAAA;EACA,kBAAA;EACA,iCAAA;EACA,cAAA;EACA,eAAA;;AAGF,iBAAiB;EACf,yCAAA;EACA,cAAA;;AAGF,iBAAkB;EAChB,iBAAA;;;AAIF,WAAW;EACT,aAAA;EACA,gCAAA;EACA,mBAAA;EACA,yBAAA;EACA,YAAA;;AAGF,WAAW,KAAM;EACf,iBAAA;EACA,cAAA;EACA,qBAAA;EACA,6BAAA;EACA,0BAAA;EACA,iBAAA;EACA,oBAAA;;AAGF,WAAW,KAAM,MAAK;EACpB,yCAAA;;AAGF,WAAW,KAAM,MAAK;EACpB,yBAAA;EACA,4BAAA;EACA,cAAA;;AAGF,WAAW,KAAM,MAAM;EACrB,iBAAA;;;AAGJ,YAAY,uBAAwB;EAClC,UAAA;;AAGF,WAAW,uBAAwB;EACjC,SAAA;EACA,UAAA;;AAGF;EACE,gBAAgB,gCAAhB;EACA,yBAAA;EACA,sBAAA;;AAGF,uBAAwB;EACtB,cAAA;;;AAIF,uBAAwB;EACtB,aAAA;EACA,mBAAA;EACA,SAAA;EACA,YAAA;EACA,YAAY,iDAAZ;EACA,gCAAA;EACA,gBAAA;;AAGF,uBAAwB,eAAe;EACrC,WAAA;EACA,YAAA;EACA,kBAAA;EACA,yBAAA;EACA,iBAAA;EACA,wCAAA;;AAGF,uBAAwB,eAAe;EACrC,OAAA;;AAGF,uBAAwB,eAAe,cAAc;EACnD,SAAA;EACA,iBAAA;EACA,cAAA;EACA,2CAAA;EACA,wBAAA;EACA,iBAAA;;AAGF,uBAAwB,eAAe,cAAc;EACnD,kBAAA;EACA,cAAA;EACA,eAAA;EACA,2CAAA;;AAGF,uBAAwB,eAAe,cAAc,iBAAiB;EACpE,cAAA;EACA,iBAAA;EACA,gBAAA;;;AAIF,uBAAwB;EACtB,YAAA;EACA,iBAAA;EACA,gBAAA;;AAGF,uBAAwB,gBAAe;EACrC,UAAA;;AAGF,uBAAwB,gBAAe;EACrC,8BAAA;EACA,kBAAA;;AAGF,uBAAwB,gBAAe;EACrC,gCAAA;EACA,kBAAA;;AAGF,uBAAwB,gBAAe,yBAAyB;EAC9D,gCAAA;;;AAIF,uBAAwB;EACtB,kBAAA;;AAGF,uBAAwB,YAAY;EAClC,cAAA;EACA,iBAAA;EACA,cAAA;EACA,iDAAA;EACA,kBAAA;EACA,iBAAA;;AAIF,uBAAwB,YAAY;AACpC,uBAAwB,YAAY;EAClC,WAAA;EACA,gBAAA;EACA,qCAAA;EACA,0CAAA;EACA,kBAAA;EACA,cAAA;EACA,kBAAA;EACA,gBAAA;EACA,sBAAA;;AAGF,uBAAwB,YAAY,MAAK;AACzC,uBAAwB,YAAY,OAAM;EACxC,aAAA;EACA,qBAAA;EACA,wCAAA;EACA,mBAAA;;AAGF,uBAAwB,YAAY,MAAK;AACzC,uBAAwB,YAAY,OAAM;EACxC,YAAA;EACA,mBAAA;EACA,oCAAA;EACA,WAAA;;;AAIF,uBAAwB;EACtB,aAAA;EACA,uBAAuB,cAAvB;EACA,QAAA;EACA,mBAAA;;;AAIF,uBAAwB;EACtB,gCAAA;EACA,YAAA;EACA,kBAAA;EACA,sCAAA;EACA,mBAAA;;AAGF,uBAAwB;EACtB,iCAAA;EACA,YAAA;EACA,kBAAA;EACA,uCAAA;EACA,mBAAA;;AAGF,uBAAwB;EACtB,mCAAA;EACA,YAAA;EACA,kBAAA;EACA,yCAAA;EACA,mBAAA;;AAGF,uBAAwB;EACtB,aAAA;EACA,8BAAA;EACA,mBAAA;EACA,gBAAA;EACA,oCAAA;EACA,kBAAA;EACA,kBAAA;;AAGF,uBAAwB,aAAa;EACnC,iBAAA;EACA,iBAAA;EACA,cAAA;;AAGF,uBAAwB,aAAa;EACnC,kBAAA;EACA,cAAA;EACA,iBAAA;;AAGF,uBAAwB;EACtB,aAAA;EACA,8BAAA;EACA,mBAAA;EACA,gBAAA;EACA,gCAAA;EACA,kBAAA;EACA,kBAAA;;AAGF,uBAAwB,cAAc;EACpC,kBAAA;EACA,cAAA;EACA,iBAAA;;AAGF,uBAAwB,cAAc;EACpC,eAAA;EACA,cAAA;EACA,iBAAA;;;AAIF,uBAAwB;AACxB,uBAAwB;EACtB,gCAAA;EACA,YAAA;EACA,kBAAA;EACA,sCAAA;EACA,mBAAA;;AAGF,uBAAwB,kBAAkB;AAC1C,uBAAwB,uBAAuB;EAC7C,iBAAA;EACA,cAAA;EACA,iDAAA;EACA,kBAAA;EACA,iBAAA;;AAIF,uBAAwB;EACtB,aAAA;EACA,uBAAuB,cAAvB;EACA,aAAA;;AAGF,uBAAwB;EACtB,aAAA;EACA,mBAAA;EACA,QAAA;EACA,gBAAA;EACA,eAAA;EACA,kBAAA;EACA,gCAAA;;AAGF,uBAAwB,gBAAe;EACrC,qCAAA;;AAGF,uBAAwB,gBAAgB,MAAK;EAC3C,WAAA;EACA,SAAA;EACA,eAAA;EACA,qBAAA;;AAGF,uBAAwB,gBAAgB;EACtC,cAAA;EACA,kBAAA;EACA,iBAAA;EACA,iDAAA;;AAGF,uBAAwB,gBAAe;EACrC,mCAAA;EACA,wCAAA;EACA,iBAAA;;AAGF,uBAAwB;EACtB,iBAAA;EACA,mCAAA;EACA,8CAAA;EACA,kBAAA;EACA,kBAAA;EACA,cAAA;EACA,kBAAA;;;AAKF,uBAAwB;EACtB,oCAAA;EACA,YAAA;EACA,kBAAA;EACA,0CAAA;EACA,mBAAA;;AAGF,uBAAwB;EACtB,aAAA;EACA,uBAAuB,cAAvB;EACA,QAAA;;AAGF,uBAAwB;EACtB,aAAA;EACA,8BAAA;EACA,mBAAA;EACA,gBAAA;EACA,+BAAA;EACA,kBAAA;;AAGF,uBAAwB,YAAY;EAClC,kBAAA;EACA,cAAA;EACA,gBAAA;;AAGF,uBAAwB,YAAY;EAClC,kBAAA;EACA,cAAA;EACA,iBAAA;;;AAIF,uBAAwB;EACtB,iCAAA;EACA,YAAA;EACA,kBAAA;EACA,uCAAA;EACA,mBAAA;;AAGF,uBAAwB,sBAAsB;EAC5C,iBAAA;EACA,cAAA;EACA,iDAAA;EACA,iBAAA;EACA,iBAAA;;AAGF,uBAAwB,sBAAsB,GAAG;EAC/C,iBAAA;EACA,cAAA;;AAGF,uBAAwB;EACtB,kBAAA;;;AAIF,uBAAwB;EACtB,gBAAA;;;AAIF,uBAAwB;EACtB,aAAA;EACA,SAAA;EACA,aAAA;EACA,0CAAA;EACA,+BAAA;;AAGF,uBAAwB,gBAAgB;EACtC,OAAA;EACA,iBAAA;EACA,YAAA;EACA,kBAAA;EACA,iBAAA;EACA,eAAA;EACA,yBAAA;EACA,iBAAA;EACA,wBAAA;EACA,yBAAA;;AAGF,uBAAwB,gBAAgB,OAAM;AAC9C,uBAAwB,gBAAgB,OAAM;EAC5C,YAAY,iDAAZ;EACA,cAAA;EACA,wCAAA;;AAGF,uBAAwB,gBAAgB,OAAM,uBAAuB;AACrE,uBAAwB,gBAAgB,OAAM,uBAAuB;EACnE,YAAY,iDAAZ;EACA,WAAW,gBAAX;EACA,0CAAA;;AAGF,uBAAwB,gBAAgB,OAAM;EAC5C,oCAAA;EACA,cAAA;;AAGF,uBAAwB,gBAAgB,OAAM,sBAAsB;EAClE,oCAAA;;;AAIF;EACE,YAAY,iDAAZ;EACA,yBAAA;EACA,kBAAA;EACA,cAAA;EACA,gBAAA;EACA,eAAA;EACA,oBAAA;EACA,iBAAA;EACA,aAAA;EACA,cAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,cAAA;;AAEA,kBAAC;EACC,YAAY,iDAAZ;EACA,WAAW,gBAAX;EACA,wCAAA;;AAnBJ,kBAsBE;EACE,SAAA;EACA,kBAAA;;;AAKJ;EACE,YAAY,2EAAZ;EACA,yBAAA;EACA,kBAAA;EACA,gBAAA;EACA,6BAAA;;AALF,uBAOE;EACE,YAAY,iDAAZ;EACA,gCAAA;EACA,YAAA;EACA,aAAA;EACA,mBAAA;EACA,SAAA;;AAbJ,uBAOE,oBAQE;EACE,WAAA;EACA,YAAA;EACA,kBAAA;EACA,yBAAA;EACA,iBAAA;EACA,cAAA;;AArBN,uBAOE,oBAiBE;EACE,OAAA;;AAzBN,uBAOE,oBAiBE,aAGE;EACE,SAAA;EACA,cAAA;EACA,iBAAA;EACA,2CAAA;;AA/BR,uBAOE,oBAiBE,aAUE;EACE,cAAA;EACA,iBAAA;EACA,eAAA;EACA,2CAAA;;AAtCR,uBAOE,oBAiBE,aAUE,cAME;EACE,iBAAA;;AAzCV,uBA+CE;EACE,oCAAA;EACA,gBAAA;EACA,6CAAA;;AAlDJ,uBA+CE,aAKE;EACE,aAAA;EACA,6BAAA;EACA,mBAAA;EACA,QAAA;EACA,kBAAA;;AAzDN,uBA+CE,aAKE,gBAOE;AA3DN,uBA+CE,aAKE,gBAQE;AA5DN,uBA+CE,aAKE,gBASE;EACE,kBAAA;EACA,OAAA;EACA,oCAAA;EACA,gBAAA;EACA,kBAAA;EACA,sCAAA;;AAnER,uBA+CE,aAKE,gBAOE,aAUE;AArER,uBA+CE,aAKE,gBAQE,cASE;AArER,uBA+CE,aAKE,gBASE,YAQE;EACE,cAAA;EACA,eAAA;EACA,cAAA;EACA,kBAAA;;AAzEV,uBA+CE,aAKE,gBAOE,aAiBE;AA5ER,uBA+CE,aAKE,gBAQE,cAgBE;AA5ER,uBA+CE,aAKE,gBASE,YAeE;EACE,cAAA;EACA,iBAAA;;AA9EV,uBA+CE,aAKE,gBAOE,aAsBE;AAjFR,uBA+CE,aAKE,gBAQE,cAqBE;AAjFR,uBA+CE,aAKE,gBASE,YAoBE;AAjFR,uBA+CE,aAKE,gBAOE,aAuBE;AAlFR,uBA+CE,aAKE,gBAQE,cAsBE;AAlFR,uBA+CE,aAKE,gBASE,YAqBE;AAlFR,uBA+CE,aAKE,gBAOE,aAwBE;AAnFR,uBA+CE,aAKE,gBAQE,cAuBE;AAnFR,uBA+CE,aAKE,gBASE,YAsBE;EACE,iBAAA;EACA,cAAA;EACA,iDAAA;EACA,iBAAA;EACA,gBAAA;;AAxFV,uBA+CE,aAKE,gBAOE,aAgCE;AA3FR,uBA+CE,aAKE,gBAQE,cA+BE;AA3FR,uBA+CE,aAKE,gBASE,YA8BE;AA3FR,uBA+CE,aAKE,gBAOE,aAiCE;AA5FR,uBA+CE,aAKE,gBAQE,cAgCE;AA5FR,uBA+CE,aAKE,gBASE,YA+BE;EACE,kBAAA;EACA,cAAA;EACA,yBAAA;EACA,iBAAA;EACA,gBAAA;;AAjGV,uBA+CE,aAuDE;EACE,aAAA;EACA,uBAAA;EACA,eAAA;;AAzGN,uBA+CE,aAuDE,wBAKE;EACE,iBAAA;EACA,kBAAA;EACA,iBAAA;EACA,iBAAA;EACA,yBAAA;EACA,kBAAA;EACA,wCAAA;;AAlHR,uBA+CE,aAuDE,wBAKE,cASE;EACE,iBAAA;;AAGF,uBAzEN,aAuDE,wBAKE,cAaG;EACC,YAAY,iDAAZ;EACA,cAAA;EACA,iDAAA;;AAGF,uBA/EN,aAuDE,wBAKE,cAmBG;EACC,YAAY,iDAAZ;EACA,YAAA;EACA,2CAAA;;AAGF,uBArFN,aAuDE,wBAKE,cAyBG;EACC,YAAY,iDAAZ;EACA,YAAA;EACA,2CAAA;;AAGF,uBA3FN,aAuDE,wBAKE,cA+BG;EACC,YAAY,iDAAZ;EACA,YAAA;EACA,2CAAA;;AA7IV,uBAmJE;EACE,YAAA;EACA,oCAAA;;AArJJ,uBAmJE,gBAIE;EACE,aAAA;EACA,sBAAA;EACA,QAAA;;AA1JN,uBAmJE,gBAIE,iBAKE;EACE,aAAA;EACA,8BAAA;EACA,gBAAA;EACA,oCAAA;EACA,kBAAA;EACA,kBAAA;;AAEA,uBAjBN,gBAIE,iBAKE,YAQG;EACC,oCAAA;EACA,sCAAA;;AAGF,uBAtBN,gBAIE,iBAKE,YAaG;EACC,oCAAA;EACA,sCAAA;;AAGF,uBA3BN,gBAIE,iBAKE,YAkBG;EACC,oCAAA;EACA,uCAAA;;AAhLV,uBAmJE,gBAIE,iBAKE,YAuBE;EACE,cAAA;EACA,iBAAA;;AArLV,uBAmJE,gBAIE,iBAKE,YA4BE;EACE,cAAA;EACA,gBAAA;;AA1LV,uBAgME;EACE,YAAA;EACA,oCAAA;EACA,0CAAA;;AAnMJ,uBAgME,gBAKE;EACE,gBAAA;EACA,kBAAA;EACA,oCAAA;EACA,8BAAA;EACA,kBAAA;EACA,cAAA;EACA,kBAAA;;AAEA,uBAdJ,gBAKE,aASG;EACC,oCAAA;EACA,0BAAA;;AAhNR,uBAgME,gBAKE,aAcE;EACE,iBAAA;EACA,cAAA;;AAGF,uBAxBJ,gBAKE,aAmBG;EACC,gBAAA;;AAGF,uBA5BJ,gBAKE,aAuBG;EACC,oCAAA;EACA,0BAAA;;AAFF,uBA5BJ,gBAKE,aAuBG,WAIC;EACE,iBAAA;EACA,kBAAA;;AANJ,uBA5BJ,gBAKE,aAuBG,WAIC,GAIE;EACE,kBAAA;EACA,kBAAA;;AAVN,uBA5BJ,gBAKE,aAuBG,WAcC;EACE,cAAA;;AA3OV,uBAgME,gBAgDE;EACE,aAAA;EACA,sBAAA;EACA,QAAA;EACA,eAAA;;AApPN,uBAgME,gBAgDE,gBAME;EACE,WAAA;;AAvPR,uBA4PE;EACE,YAAA;EACA,oCAAA;EACA,4CAAA;EACA,8BAAA;EACA,cAAA;EACA,kBAAA;;AAlQJ,uBA4PE,gBAQE;EACE,iBAAA;EACA,cAAA;;AAtQN,uBA0QE;EACE,YAAA;EACA,iCAAA;EACA,6BAAA;EACA,8BAAA;EACA,cAAA;EACA,kBAAA;;AAhRJ,uBA0QE,cAQE;EACE,iBAAA;EACA,eAAA;EACA,kBAAA;EACA,cAAA;;AAtRN,uBA0QE,cAQE,cAKE;EAAI,iBAAA;;AAvRV,uBA0QE,cAgBE;EACE,gBAAA;;AA3RN,uBA0QE,cAgBE,cAEE;EAAI,iBAAA;;AAEJ,uBApBJ,cAgBE,cAIG;EACC,cAAA;EACA,iBAAA;;AAEF,uBAxBJ,cAgBE,cAQG;EACC,cAAA;;AAEF,uBA3BJ,cAgBE,cAWG;EACC,cAAA;EACA,kBAAA;;AAvSR,uBA4SE;EACE,YAAA;EACA,oCAAA;EACA,2CAAA;;AA/SJ,uBA4SE,sBAKE;EACE,WAAA;;AAlTN,uBAsTE;EACE,YAAY,iDAAZ;EACA,yBAAA;EACA,kBAAA;EACA,cAAA;EACA,iBAAA;EACA,6BAAA;EACA,iBAAA;EACA,eAAA;EACA,oBAAA;EACA,2CAAA;;AAhUJ,uBAsTE,kBAYE;EACE,iBAAA;;AAGF,uBAhBF,kBAgBG;EACC,YAAY,iDAAZ;EACA,WAAW,gBAAX;EACA,wCAAA;;AAGF,uBAtBF,kBAsBG;EACC,YAAY,iDAAZ;EACA,qBAAA;;AAEA,uBA1BJ,kBAsBG,oBAIE;EACC,YAAY,iDAAZ;;;;;AASR;EACE,YAAY,2EAAZ;EACA,yBAAA;EACA,kBAAA;EACA,UAAA;EACA,aAAA;EACA,gBAAA;EACA,6BAAA;EACA,wCAAA;;AARF,2BAUE;EACE,YAAY,iDAAZ;EACA,aAAA;EACA,kBAAA;EACA,gCAAA;EACA,kBAAA;;AAfJ,2BAUE,gBAOE;EACE,iBAAA;EACA,cAAA;EACA,kBAAA;EACA,4CAAA;EACA,wCAAA;;AAtBN,2BAUE,gBAeE;EACE,mBAAA;EACA,iBAAA;EACA,iBAAA;EACA,cAAA;EACA,2CAAA;EACA,6BAAA;EACA,gBAAA;;AAhCN,2BAUE,gBAyBE;EACE,iBAAA;EACA,cAAA;EACA,kBAAA;EACA,eAAA;EACA,gBAAA;;AAxCN,2BA4CE;EACE,aAAA;EACA,oCAAA;;AA9CJ,2BA4CE,iBAIE;EACE,aAAA;EACA,SAAA;EACA,mBAAA;EACA,YAAA;EACA,oCAAA;EACA,8BAAA;EACA,kBAAA;;AAEA,2BAbJ,iBAIE,iBASG;EACC,gBAAA;;AA1DR,2BA4CE,iBAIE,iBAaE;EACE,cAAA;EACA,iBAAA;EACA,cAAA;EACA,WAAA;EACA,kBAAA;;AAlER,2BA4CE,iBAIE,iBAqBE;EACE,OAAA;EACA,cAAA;;AAvER,2BA4CE,iBAIE,iBAqBE,cAIE;EACE,cAAA;EACA,cAAA;EACA,eAAA;EACA,kBAAA;EACA,gBAAA;;AA9EV,2BA4CE,iBAIE,iBAqBE,cAYE;EACE,aAAA;EACA,gBAAA;EACA,iBAAA;;AApFV,2BA4CE,iBAIE,iBAqBE,cAkBE;EACE,qBAAA;EACA,eAAA;EACA,cAAA;EACA,gBAAA;EACA,qBAAA;EACA,oBAAA;EACA,iBAAA;EACA,gBAAA;EACA,YAAA;EACA,UAAA;EACA,eAAA;EACA,oBAAA;;AAnGV,2BA4CE,iBAIE,iBAqBE,cAkBE,cAcE;EACE,iBAAA;;AAGF,2BA7DR,iBAIE,iBAqBE,cAkBE,cAkBG;EACC,cAAA;EACA,yCAAA;EACA,WAAW,eAAX;;AA5GZ,2BAmHE;EACE,YAAY,iDAAZ;EACA,YAAA;EACA,kBAAA;EACA,cAAA;EACA,kBAAA;EACA,kBAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,SAAA;EACA,gBAAA;;AA9HJ,2BAmHE,gBAaE;EACE,eAAA;;AAKN;EACE;EAAI;IACF,WAAW,QAAX;IACA,UAAA;;EAEF;IACE,WAAW,UAAX;IACA,YAAA;;;AAOJ;AACA;AACA;EACE,6BAAA;EACA,cAAA;EACA,aAAA;EACA,gBAAgB,gDAAhB;;AANF,iBASE;AARF,cAQE;AAPF,kBAOE;AATF,iBASS;AART,cAQS;AAPT,kBAOS;AATT,iBASgB;AARhB,cAQgB;AAPhB,kBAOgB;AAThB,iBASsB;AARtB,cAQsB;AAPtB,kBAOsB;EAClB,cAAA;;AAVJ,iBAYE;AAXF,cAWE;AAVF,kBAUE;AAZF,iBAYM;AAXN,cAWM;AAVN,kBAUM;EACF,cAAA;;AAbJ,iBAgBE;AAfF,cAeE;AAdF,kBAcE;EACE,aAAA;EACA,mBAAA;EACA,SAAA;EACA,mBAAA;EACA,iBAAA;EACA,YAAY,iDAAZ;EACA,yBAAA;EACA,kBAAA;;AAxBJ,iBAgBE,kBAUE;AAzBJ,cAeE,kBAUE;AAxBJ,kBAcE,kBAUE;EACE,aAAA;EACA,sBAAA;EACA,QAAA;;AA7BN,iBAgBE,kBAgBE;AA/BJ,cAeE,kBAgBE;AA9BJ,kBAcE,kBAgBE;EACE,WAAA;EACA,YAAA;EACA,kBAAA;EACA,yBAAA;EACA,iBAAA;EACA,cAAA;;AAtCN,iBAgBE,kBAwBE;AAvCJ,cAeE,kBAwBE;AAtCJ,kBAcE,kBAwBE;EACE,iBAAA;EACA,kBAAA;EACA,cAAA;EACA,yCAAA;;AA5CN,iBAgBE,kBA8BE;AA7CJ,cAeE,kBA8BE;AA5CJ,kBAcE,kBA8BE;EACE,kBAAA;EACA,cAAA;EACA,yCAAA;;AAjDN,iBAgBE,kBA8BE,oBAIE;AAjDN,cAeE,kBA8BE,oBAIE;AAhDN,kBAcE,kBA8BE,oBAIE;EAAS,cAAA;EAAgB,iBAAA;;AAlD/B,iBAsDE;AArDF,cAqDE;AApDF,kBAoDE;EACE,aAAA;EACA,mBAAA;EACA,SAAA;EACA,mBAAA;EACA,gBAAA;EACA,+CAAA;;AA5DJ,iBAsDE,oBAQE;AA7DJ,cAqDE,oBAQE;AA5DJ,kBAoDE,oBAQE;EACE,cAAA;EACA,iBAAA;EACA,cAAA;;AAjEN,iBAsDE,oBAaE;AAlEJ,cAqDE,oBAaE;AAjEJ,kBAoDE,oBAaE;EACE,OAAA;EACA,mBAAA;EACA,yBAAA;EACA,kBAAA;EACA,gBAAA;EACA,cAAA;EACA,6BAAA;EACA,kBAAA;EACA,iBAAA;EACA,eAAA;EACA,gBAAA;EACA,wBAAA;EACA,sBAAsB,kKAAtB;EACA,4BAAA;EACA,gDAAA;EACA,oCAAA;EACA,mBAAA;;AApFN,iBAsDE,oBAaE,OAmBE;AArFN,cAqDE,oBAaE,OAmBE;AApFN,kBAoDE,oBAaE,OAmBE;EACE,mBAAA;EACA,cAAA;EACA,mBAAA;;AAzFR,iBA8FE;AA7FF,cA6FE;AA5FF,kBA4FE;EACE,WAAA;EACA,yBAAA;EACA,mBAAA;EACA,kBAAA;EACA,yBAAA;EACA,kBAAA;EACA,gBAAA;;AArGJ,iBA8FE,uBASE,MAAM,GAAG;AAtGb,cA6FE,uBASE,MAAM,GAAG;AArGb,kBA4FE,uBASE,MAAM,GAAG;EACP,mBAAA;EACA,gBAAA;EACA,kBAAA;EACA,gCAAA;EACA,cAAA;EACA,iBAAA;EACA,kBAAA;EACA,yBAAA;EACA,qBAAA;;AAhHN,iBA8FE,uBAqBE,MAAM,GAAE;AAlHZ,cA6FE,uBAqBE,MAAM,GAAE;AAjHZ,kBA4FE,uBAqBE,MAAM,GAAE;EACN,+CAAA;EACA,4BAAA;EACA,oCAAA;;AAEA,iBA1BJ,uBAqBE,MAAM,GAAE,mBAKL;AAAD,cA1BJ,uBAqBE,MAAM,GAAE,mBAKL;AAAD,kBA1BJ,uBAqBE,MAAM,GAAE,mBAKL;EAAc,mBAAA;;AACf,iBA3BJ,uBAqBE,MAAM,GAAE,mBAML,UAAU;AAAX,cA3BJ,uBAqBE,MAAM,GAAE,mBAML,UAAU;AAAX,kBA3BJ,uBAqBE,MAAM,GAAE,mBAML,UAAU;EAAS,qCAAA;;AACpB,iBA5BJ,uBAqBE,MAAM,GAAE,mBAOL;AAAD,cA5BJ,uBAqBE,MAAM,GAAE,mBAOL;AAAD,kBA5BJ,uBAqBE,MAAM,GAAE,mBAOL;EAAS,mCAAA;;AAEV,iBA9BJ,uBAqBE,MAAM,GAAE,mBASL;AAAD,cA9BJ,uBAqBE,MAAM,GAAE,mBASL;AAAD,kBA9BJ,uBAqBE,MAAM,GAAE,mBASL;EACC,mCAAA;;AA7HR,iBA8FE,uBAqBE,MAAM,GAAE,mBAaN;AA/HN,cA6FE,uBAqBE,MAAM,GAAE,mBAaN;AA9HN,kBA4FE,uBAqBE,MAAM,GAAE,mBAaN;EACE,gBAAA;EACA,sBAAA;EACA,cAAA;;AAnIR,iBA8FE,uBAqBE,MAAM,GAAE,mBAmBN;AArIN,cA6FE,uBAqBE,MAAM,GAAE,mBAmBN;AApIN,kBA4FE,uBAqBE,MAAM,GAAE,mBAmBN;EACE,WAAA;EACA,YAAA;EACA,sBAAA;EACA,iBAAA;EACA,kBAAA;EACA,wCAAA;;AA5IR,iBA8FE,uBAqBE,MAAM,GAAE,mBA4BN;AA9IN,cA6FE,uBAqBE,MAAM,GAAE,mBA4BN;AA7IN,kBA4FE,uBAqBE,MAAM,GAAE,mBA4BN;EACE,WAAA;EACA,kBAAA;EACA,mBAAA;EACA,yBAAA;EACA,kBAAA;EACA,cAAA;EACA,gBAAA;EACA,6BAAA;EACA,eAAA;;AAxJR,iBA8FE,uBAqBE,MAAM,GAAE,mBA4BN,uBAWE;AAzJR,cA6FE,uBAqBE,MAAM,GAAE,mBA4BN,uBAWE;AAxJR,kBA4FE,uBAqBE,MAAM,GAAE,mBA4BN,uBAWE;EAAS,mBAAA;EAAqB,cAAA;;AAE9B,iBA9DN,uBAqBE,MAAM,GAAE,mBA4BN,uBAaG;AAAD,cA9DN,uBAqBE,MAAM,GAAE,mBA4BN,uBAaG;AAAD,kBA9DN,uBAqBE,MAAM,GAAE,mBA4BN,uBAaG;EACC,aAAA;EACA,mBAAA;;AA9JV,iBAoKE;AAnKF,cAmKE;AAlKF,kBAkKE;EACE,YAAY,iDAAZ;EACA,yBAAA;EACA,8BAAA;EACA,kBAAA;EACA,kBAAA;EACA,mBAAA;;AA1KJ,iBAoKE,mBAQE;AA3KJ,cAmKE,mBAQE;AA1KJ,kBAkKE,mBAQE;EACE,aAAA;EACA,8BAAA;EACA,mBAAA;EACA,kBAAA;EACA,iBAAA;;AAEA,iBAfJ,mBAQE,aAOG;AAAD,cAfJ,mBAQE,aAOG;AAAD,kBAfJ,mBAQE,aAOG;EAAc,gBAAA;;AAnLrB,iBAoKE,mBAQE,aASE;AApLN,cAmKE,mBAQE,aASE;AAnLN,kBAkKE,mBAQE,aASE;EACE,iBAAA;EACA,cAAA;EACA,yCAAA;;AAxLR,iBAoKE,mBAQE,aAcE;AAzLN,cAmKE,mBAQE,aAcE;AAxLN,kBAkKE,mBAQE,aAcE;EACE,cAAA;EACA,iBAAA;EACA,kBAAA;EACA,yCAAA;;AA9LR,iBAoME;AAnMF,cAmME;AAlMF,kBAkME;EACE,aAAA;EACA,mBAAA;EACA,SAAA;EACA,kBAAA;EACA,gBAAA;;AAzMJ,iBAoME,SAOE;AA1MJ,cAmME,SAOE;AAzMJ,kBAkME,SAOE;EACE,OAAA;EACA,cAAA;EACA,iBAAA;EACA,iBAAA;;AA/MN,iBAoME,SAcE,MAAK;AAjNT,cAmME,SAcE,MAAK;AAhNT,kBAkME,SAcE,MAAK;EACH,WAAA;EACA,mBAAA;EACA,yBAAA;EACA,kBAAA;EACA,gBAAA;EACA,cAAA;EACA,kBAAA;EACA,6BAAA;;AA1NN,iBAoME,SAyBE;AA5NJ,cAmME,SAyBE;AA3NJ,kBAkME,SAyBE;EACE,WAAA;EACA,mBAAA;EACA,yBAAA;EACA,kBAAA;EACA,gBAAA;EACA,cAAA;EACA,6BAAA;EACA,kBAAA;EACA,eAAA;;AAtON,iBAoME,SAyBE,+BAWE;AAvON,cAmME,SAyBE,+BAWE;AAtON,kBAkME,SAyBE,+BAWE;EAAS,mBAAA;EAAqB,cAAA;;AAxOpC,iBAoME,SAuCE,MAAK;AA1OT,cAmME,SAuCE,MAAK;AAzOT,kBAkME,SAuCE,MAAK;EACH,WAAA;EACA,YAAA;EACA,cAAA;EACA,qBAAA;;AA/ON,iBAqPE;AApPF,cAoPE;AAnPF,kBAmPE;EACE,aAAA;EACA,mBAAA;EACA,SAAA;EACA,mBAAA;EACA,iBAAA;EACA,YAAY,iDAAZ;EACA,yBAAA;EACA,kBAAA;;AA7PJ,iBAqPE,cAUE;AA9PJ,cAoPE,cAUE;AA7PJ,kBAmPE,cAUE;EACE,WAAA;EACA,YAAA;EACA,kBAAA;EACA,yBAAA;EACA,iBAAA;EACA,cAAA;;AArQN,iBAqPE,cAkBE;AAtQJ,cAoPE,cAkBE;AArQJ,kBAmPE,cAkBE;EACE,iBAAA;EACA,kBAAA;EACA,cAAA;EACA,yCAAA;EACA,SAAA;;AA5QN,iBAqPE,cAyBE;AA7QJ,cAoPE,cAyBE;AA5QJ,kBAmPE,cAyBE;EACE,kBAAA;EACA,cAAA;;AAhRN,iBAqPE,cAyBE,iBAGE;AAhRN,cAoPE,cAyBE,iBAGE;AA/QN,kBAmPE,cAyBE,iBAGE;EAAI,iBAAA;;AAjRV,iBAqPE,cA8BE;AAlRJ,cAoPE,cA8BE;AAjRJ,kBAmPE,cA8BE;EAAc,aAAA;EAAe,sBAAA;EAAwB,QAAA;;AAnRzD,iBAsRE;AArRF,cAqRE;AApRF,kBAoRE;EACE,mCAAA;EACA,yBAAA;EACA,8BAAA;EACA,kBAAA;EACA,iBAAA;EACA,kBAAA;EACA,kBAAA;EACA,cAAA;;AA9RJ,iBAsRE,mBASE;AA9RJ,cAqRE,mBASE;AA7RJ,kBAoRE,mBASE;EAAI,iBAAA;EAAmB,cAAA;;AA/R3B,iBAsRE,mBAUE;AA/RJ,cAqRE,mBAUE;AA9RJ,kBAoRE,mBAUE;EAAS,cAAA;;AAhSb,iBAsRE,mBAWE;AAhSJ,cAqRE,mBAWE;AA/RJ,kBAoRE,mBAWE;EAAM,eAAA;;AAjSV,iBAoSE;AAnSF,cAmSE;AAlSF,kBAkSE;EACE,aAAA;EACA,eAAA;EACA,QAAA;EACA,mBAAA;;AAxSJ,iBAoSE,oBAME;AAzSJ,cAmSE,oBAME;AAxSJ,kBAkSE,oBAME;EACE,kCAAA;EACA,yCAAA;EACA,mBAAA;EACA,iBAAA;EACA,kBAAA;EACA,cAAA;;AAEA,iBAdJ,oBAME,YAQG;AAAD,cAdJ,oBAME,YAQG;AAAD,kBAdJ,oBAME,YAQG;EACC,iCAAA;EACA,kCAAA;EACA,cAAA;;AAHF,iBAdJ,oBAME,YAQG,aAIC;AAJF,cAdJ,oBAME,YAQG,aAIC;AAJF,kBAdJ,oBAME,YAQG,aAIC;EAAK,kBAAA;EAAoB,YAAA;;AAtTjC,iBAoSE,oBAME,YAcE;AAvTN,cAmSE,oBAME,YAcE;AAtTN,kBAkSE,oBAME,YAcE;EAAS,cAAA;EAAgB,iBAAA;;AAxT/B,iBA4TE;AA3TF,cA2TE;AA1TF,kBA0TE;EACE,kCAAA;EACA,0CAAA;EACA,kBAAA;EACA,kBAAA;EACA,mBAAA;;AAjUJ,iBA4TE,wBAOE;AAlUJ,cA2TE,wBAOE;AAjUJ,kBA0TE,wBAOE;EACE,kBAAA;EACA,iBAAA;EACA,cAAA;EACA,iBAAA;EACA,yBAAA;EACA,qBAAA;;AAzUN,iBA4TE,wBAOE,qBAOE;AAzUN,cA2TE,wBAOE,qBAOE;AAxUN,kBA0TE,wBAOE,qBAOE;EAAI,iBAAA;;AA1UV,iBA4TE,wBAiBE;AA5UJ,cA2TE,wBAiBE;AA3UJ,kBA0TE,wBAiBE;EACE,aAAA;EACA,+BAAA;EACA,aAAA;EACA,mBAAA;EACA,mBAAA;;AAlVN,iBA4TE,wBAiBE,qBAOE;AAnVN,cA2TE,wBAiBE,qBAOE;AAlVN,kBA0TE,wBAiBE,qBAOE;EACE,kBAAA;EACA,cAAA;EACA,iBAAA;EACA,cAAA;;AAxVR,iBA4TE,wBAiBE,qBAcE;AA1VN,cA2TE,wBAiBE,qBAcE;AAzVN,kBA0TE,wBAiBE,qBAcE;AA3VN,iBA4TE,wBAiBE,qBAcU,MAAK;AA1VnB,cA2TE,wBAiBE,qBAcU,MAAK;AAzVnB,kBA0TE,wBAiBE,qBAcU,MAAK;EACX,mBAAA;EACA,yBAAA;EACA,kBAAA;EACA,yBAAA;EACA,cAAA;EACA,6BAAA;EACA,kBAAA;EACA,eAAA;EACA,gBAAA;EACA,gBAAA;EACA,wBAAA;EACA,sBAAsB,kKAAtB;EACA,4BAAA;EACA,qCAAA;EACA,wBAAA;;AA1WR,iBA4TE,wBAiBE,qBAcE,OAgBE;AA1WR,cA2TE,wBAiBE,qBAcE,OAgBE;AAzWR,kBA0TE,wBAiBE,qBAcE,OAgBE;AA3WR,iBA4TE,wBAiBE,qBAcU,MAAK,eAgBX;AA1WR,cA2TE,wBAiBE,qBAcU,MAAK,eAgBX;AAzWR,kBA0TE,wBAiBE,qBAcU,MAAK,eAgBX;EAAS,mBAAA;EAAqB,cAAA;;AA3WtC,iBA4TE,wBAiBE,qBAiCE,MAAK;AA7WX,cA2TE,wBAiBE,qBAiCE,MAAK;AA5WX,kBA0TE,wBAiBE,qBAiCE,MAAK;EACH,eAAA;EACA,eAAA;EACA,kBAAA;EACA,sBAAA;EACA,gBAAA;;AAnXR,iBA4TE,wBA2DE;AAtXJ,cA2TE,wBA2DE;AArXJ,kBA0TE,wBA2DE;EACE,aAAA;EACA,mBAAA;EACA,SAAA;EACA,gBAAA;EACA,YAAY,iDAAZ;EACA,yBAAA;EACA,kBAAA;;AA9XN,iBA4TE,wBA2DE,uBASE;AA/XN,cA2TE,wBA2DE,uBASE;AA9XN,kBA0TE,wBA2DE,uBASE;EACE,OAAA;EACA,iBAAA;EACA,iBAAA;EACA,cAAA;;AApYR,iBA4TE,wBA2DE,uBAgBE;AAtYN,cA2TE,wBA2DE,uBAgBE;AArYN,kBA0TE,wBA2DE,uBAgBE;EACE,iBAAA;EACA,iBAAA;EACA,cAAA;EACA,2CAAA;EACA,eAAA;EACA,kBAAA;;AA7YR,iBAkZE;AAjZF,cAiZE;AAhZF,kBAgZE;EACE,aAAA;EACA,sBAAA;EACA,QAAA;;AArZJ,iBAkZE,iBAKE;AAtZJ,cAiZE,iBAKE;AArZJ,kBAgZE,iBAKE;EACE,aAAA;EACA,mBAAA;EACA,QAAA;EACA,gBAAA;EACA,+CAAA;;AA5ZN,iBAkZE,iBAKE,aAOE;AA7ZN,cAiZE,iBAKE,aAOE;AA5ZN,kBAgZE,iBAKE,aAOE;EACE,OAAA;EACA,iBAAA;EACA,kBAAA;EACA,cAAA;;AAlaR,iBAkZE,iBAKE,aAcE;AApaN,cAiZE,iBAKE,aAcE;AAnaN,kBAgZE,iBAKE,aAcE;EACE,iBAAA;EACA,iBAAA;EACA,cAAA;EACA,eAAA;EACA,kBAAA;;AA1aR,iBAkZE,iBAKE,aAsBE;AA5aN,cAiZE,iBAKE,aAsBE;AA3aN,kBAgZE,iBAKE,aAsBE;EACE,kBAAA;EACA,cAAA;EACA,kBAAA;;AAhbR,iBAkZE,iBAKE,aAsBE,YAIE;AAhbR,cAiZE,iBAKE,aAsBE,YAIE;AA/aR,kBAgZE,iBAKE,aAsBE,YAIE;EAAS,cAAA;EAAgB,iBAAA;;AAjbjC,iBAkZE,iBAKE,aA6BE;AAnbN,cAiZE,iBAKE,aA6BE;AAlbN,kBAgZE,iBAKE,aA6BE;EACE,mBAAA;EACA,yBAAA;EACA,kBAAA;EACA,yBAAA;EACA,cAAA;EACA,6BAAA;EACA,kBAAA;EACA,eAAA;EACA,gBAAA;EACA,wBAAA;EACA,sBAAsB,kKAAtB;EACA,4BAAA;EACA,qCAAA;EACA,wBAAA;;AAlcR,iBAkZE,iBAKE,aA6BE,OAeE;AAlcR,cAiZE,iBAKE,aA6BE,OAeE;AAjcR,kBAgZE,iBAKE,aA6BE,OAeE;EAAS,mBAAA;EAAqB,cAAA;;AAStC,uBACE;EACE,eAAA;EACA,4CAAA;EACA,gBAAA;;AAJJ,uBACE,yBAKE;EACE,iBAAA;EACA,kBAAA;EACA,cAAA;EACA,kBAAA;;AAVN,uBACE,yBAKE,uBAME;EAAI,iBAAA;;AAZV,uBACE,yBAcE;EACE,mBAAA;EACA,QAAA;EACA,cAAA;EACA,kBAAA;EACA,4CAAA;;AApBN,uBACE,yBAcE,uBAOE;EACE,WAAA;EACA,YAAA;EACA,kBAAA;EACA,cAAA;;AA1BR,uBACE,yBAcE,uBAaE;EACE,OAAA;EACA,iBAAA;;AA9BR,uBACE,yBAcE,uBAiBE;EACE,kBAAA;EACA,cAAA;EACA,iBAAA;EACA,mBAAA;;AApCR,uBACE,yBAcE,uBAuBE;AAtCN,uBACE,yBAcE,uBAuBa;EAAgB,WAAA;EAAa,mBAAA;;AAtC9C,uBACE,yBAcE,uBAwBE;EAAc,cAAA;EAAgB,kBAAA;EAAoB,mBAAA;;AAvCxD,uBA4CE;EACE,kBAAA;EACA,cAAA;;;;AC9nGJ,gBAAgB;;EAEd,gBAAgB,uCAAhB;EACA,aAAA;EACA,sBAAA;EACA,YAAA;EACA,UAAA;EACA,SAAA;;;;;;;;;;;;AAPF,gBAAgB,KAUd;EACE,UAAA;EACA,SAAA;;AAZJ,gBAAgB,KAgBd;EACE,gBAAgB,yCAAhB;EACA,YAAA;EACA,aAAA;EACA,sBAAA;EACA,YAAA;EACA,gBAAA;EACA,UAAA;EACA,SAAA;;AAxBJ,gBAAgB,KA4Bd,MAAK;AA5BP,gBAAgB,KA6Bd,OAAM;EACJ,cAAA;EACA,YAAA;EACA,0CAAA;;AAhCJ,gBAAgB,KAoCd,MAAK;AApCP,gBAAgB,KAqCd,MAAK;AArCP,gBAAgB,KAsCd;EACE,cAAA;EACA,0CAAA;EACA,yBAAA;EACA,SAAA;EACA,gBAAA;EACA,aAAa,kBAAb;EACA,kBAAA;;AA7CJ,gBAAgB,KAgDd;EACE,SAAA;EACA,gBAAA;;AAlDJ,gBAAgB,KAqDd,MAAK;EACH,WAAA;EACA,YAAA;EACA,aAAA;EACA,kBAAA;;AAzDJ,gBAAgB,KA4Dd;EACE,cAAA;EACA,6BAAA;EACA,SAAA;;AA/DJ,gBAAgB,KAkEd;EACE,aAAA;EACA,mBAAA;EACA,mBAAA;EACA,SAAA;EACA,eAAA;EACA,gBAAgB,uCAAhB;EACA,cAAA;;AAzEJ,gBAAgB,KA4Ed;EACE,cAAA;EACA,WAAA;EACA,YAAA;EACA,iBAAA;EACA,sBAAA;EACA,kBAAA;EACA,eAAA;;AAEA,gBArFY,KA4Ed,gBASG;EACC,0CAAA;;AAtFN,gBAAgB,KA0Fd;EACE,OAAA;EACA,aAAA;EACA,sBAAA;EACA,YAAA;;AA9FJ,gBAAgB,KAiGd;EACE,cAAA;EACA,aAAA;EACA,mBAAA;EACA,WAAA;;AArGJ,gBAAgB,KAiGd,gBAME;EACE,8BAAA;EACA,sBAAA;EACA,uBAAA;EACA,eAAA;EACA,aAAa,kBAAb;;AAEA,gBA9GU,KAiGd,gBAME,OAOG;EACC,kCAAA;EACA,0CAAA;;AAhHR,gBAAgB,KAsHd;EACE,YAAY,wDAAZ;EACA,yBAAA;EACA,cAAA;EACA,sBAAA;EACA,yBAAA;EACA,eAAA;;AA5HJ,gBAAgB,KAsHd,kBAQE;EACE,iBAAA;;AAGF,gBAlIY,KAsHd,kBAYG;EACC,YAAY,oDAAZ;EACA,cAAA;EACA,wCAAA;;AAGF,gBAxIY,KAsHd,kBAkBG;EACC,kBAAA;EACA,QAAA;;AA1IN,gBAAgB,KA8Id,cAAc,GAAE;EACd,YAAA;EACA,UAAA;EACA,aAAA;EACA,gBAAA;EACA,iBAAA;EACA,eAAA;EACA,aAAa,WAAb;;AArJJ,gBAAgB,KAwJd,cAAc,GAAE,SAAU;EACxB,WAAA;EACA,YAAA;EACA,SAAA;EACA,iBAAA;EACA,aAAa,WAAb;EACA,eAAA;EACA,gBAAA;EACA,cAAA;;AAEA,gBAlKY,KAwJd,cAAc,GAAE,SAAU,MAUvB;EACC,0BAAA;;AAnKN,gBAAgB,KAwKd,IAAG;EACD,aAAA;EACA,gCAAA;EACA,SAAA;EACA,YAAA;EACA,yBAAA;EACA,cAAA;;AA9KJ,gBAAgB,KAiLd,IAAG,KAAM,EAAC;EACR,iBAAA;EACA,cAAA;EACA,qBAAA;EACA,6BAAA;EACA,0BAAA;EACA,iBAAA;EACA,oBAAA;;AAxLJ,gBAAgB,KAiLd,IAAG,KAAM,EAAC,KASR;EACE,aAAA;;AAGF,gBA9LY,KAiLd,IAAG,KAAM,EAAC,KAaP;EACC,yCAAA;;AAGF,gBAlMY,KAiLd,IAAG,KAAM,EAAC,KAiBP;EACC,yBAAA;EACA,4BAAA;EACA,cAAA;;AArMN,gBAAgB,KA0Md;EACE,aAAA;EACA,gBAAA;EACA,gBAAA;EACA,cAAA;;AAEA,gBAhNY,KA0Md,KAMG;EACC,cAAA;;AAjNN,gBAAgB,KAsNd;EACE,gBAAA;EACA,SAAA;EACA,UAAA;;AAzNJ,gBAAgB,KAsNd,WAKE,GAAE;EACA,aAAA;EACA,mBAAA;EACA,kBAAA;EACA,gBAAA;EACA,gBAAA;EACA,mBAAA;;AAEA,gBAnOU,KAsNd,WAKE,GAAE,KAQC;EACC,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,QAAA;;AAJF,gBAnOU,KAsNd,WAKE,GAAE,KAQC,QAMC,MAAK;EACH,eAAA;EACA,cAAA;;AA3OV,gBAAgB,KAsNd,WAKE,GAAE,KAoBA;EACE,cAAA;EACA,eAAA;EACA,iBAAA;EACA,SAAA;EACA,iBAAA;;AApPR,gBAAgB,KA0Pd;EACE,qBAAA;EACA,mBAAA;EACA,gBAAA;EACA,gBAAA;EACA,iBAAA;EACA,aAAa,kBAAb;EACA,SAAA;EACA,kBAAA;;AAlQJ,gBAAgB,KAsQd;EACE,cAAA;EACA,eAAA;;AAxQJ,gBAAgB,KA2Qd;EACE,eAAA;EACA,gBAAA;;AA7QJ,gBAAgB,KAgRd;EACE,OAAA;EACA,gBAAA;;AAlRJ,gBAAgB,KAqRd;EACE,OAAA;EACA,gBAAA;;AAvRJ,gBAAgB,KA0Rd;EACE,OAAA;EACA,gBAAA;EACA,gBAAA;;AA7RJ,gBAAgB,KA+Rd;EACE,OAAA;EACA,gBAAA;EACA,mBAAA;EACA,gBAAA;;AAnSJ,gBAAgB,KAsSd;EACE,kBAAA;EACA,WAAA;;AAxSJ,gBAAgB,KA4Sd;EACE,aAAA;EACA,sBAAA;EACA,oCAAA;;AA/SJ,gBAAgB,KA4Sd,QAKE;EACE,YAAA;EACA,eAAA;EACA,WAAA;;;;;AAQN,eACE;EACE,aAAA;EACA,sBAAA;EACA,YAAA;EACA,eAAA;EACA,iCAAA;EACA,kBAAA;EACA,sCAAA;EACA,qBAAA;;AATJ,eAYE;EACE,oBAAA;EACA,mBAAA;EACA,YAAA;EACA,sBAAA;EACA,mBAAA;EACA,kBAAA;EACA,iBAAA;;AAEA,eATF,qBASG;EAAmB,iCAAA;EAAgC,cAAA;EAAgB,yBAAA;;AACpE,eAVF,qBAUG;EAAmB,mCAAA;EAAkC,cAAA;EAAgB,yBAAA;;AACtE,eAXF,qBAWG;EAAqB,qCAAA;EAAoC,WAAA;EAAa,sBAAA;;AACvE,eAZF,qBAYG;EAAiB,mCAAA;EAAkC,cAAA;EAAgB,yBAAA;;AACpE,eAbF,qBAaG;EAAmB,iCAAA;EAAgC,WAAA;EAAa,sBAAA;;;AAKrE;EACE,aAAA;EACA,mBAAA;EACA,WAAA;EACA,eAAA;EACA,eAAA;EACA,+BAAA;EACA,kBAAA;EACA,sBAAA;;AARF,iBAUE;EAAoB,iBAAA;;AAVtB,iBAWE;EAAqB,kBAAA;EAAoB,WAAA;;AAX3C,iBAYE;EAAsB,kBAAA;EAAoB,WAAA;EAAa,kBAAA;;AAGzD;EACE,uCAAA;EACA,iCAAA;EACA,kBAAA;EACA,eAAA;;AAJF,iBAME;EACE,kBAAA;EACA,kBAAA;;AARJ,iBAUE;EAAmB,cAAA;;AAVrB,iBAWE;EAAmB,cAAA;;AAXrB,iBAYE;EAAqB,WAAA;;AAZvB,iBAaE;EAAiB,cAAA;;AAGnB;EACE,kBAAA;EACA,WAAA;EACA,iBAAA;;;AAIF,cACE;EACE,sBAAA;;AAFJ,cAKE;EACE,iBAAA;EACA,iBAAA;EACA,4CAAA;EACA,sBAAA;EACA,qBAAA;;AAVJ,cAaE;EACE,WAAA;EACA,kBAAA;EACA,yBAAA;EACA,qBAAA;;AAjBJ,cAaE,oBAME;AAnBJ,cAaE,oBAMM;EACF,sBAAA;EACA,4CAAA;;AArBN,cAaE,oBAWE,iBAAgB;EAAS,+BAAA;;AAxB7B,cAaE,oBAYE;EAAqB,eAAA;;AAzBzB,cAaE,oBAcE;EACE,WAAA;EACA,YAAA;EACA,sBAAA;EACA,iBAAA;EACA,kBAAA;EACA,wCAAA;EACA,iBAAA;;AAlCN,cAsCE;EACE,+BAAA;EACA,kBAAA;EACA,sBAAA;EACA,kBAAA;;AA1CJ,cAsCE,gBAME;EAAe,qBAAA;;AA5CnB,cAsCE,gBAOE;EAAiB,iBAAA;EAAmB,gBAAA;;AA7CxC,cAgDE;EACE,WAAA;EACA,kBAAA;EACA,WAAA;EACA,mBAAA;;;AAKJ;EACE,kBAAA;EACA,sBAAA;EACA,mCAAA;EACA,wCAAA;EACA,kBAAA;;AALF,qBAOE;EACE,iBAAA;EACA,oBAAA;EACA,cAAA;EACA,iBAAA;EACA,aAAA;EACA,mBAAA;EACA,WAAA;EACA,+CAAA;EACA,sBAAA;;AAhBJ,qBAmBE;EACE,qBAAA;EACA,gBAAA;EACA,WAAA;EACA,iBAAA;EACA,sBAAA;EACA,kBAAA;EACA,mBAAA;;AA1BJ,qBA6BE;EACE,WAAA;EACA,kBAAA;EACA,SAAA;EACA,iBAAA;;;ACxdJ,gBAAgB;EAEd,gBAAgB,uCAAhB;;AAFF,gBAAgB,MAKd;EACE,YAAA;EACA,UAAA;EACA,SAAA;EACA,aAAA;EACA,sBAAA;EACA,gBAAA;;AAXJ,gBAAgB,MAed;AAfF,gBAAgB,MAgBd;EACE,YAAA;EACA,gBAAgB,yCAAhB;EACA,YAAA;EACA,aAAA;EACA,sBAAA;EACA,OAAA;EACA,aAAA;EACA,gBAAA;EACA,UAAA;EACA,SAAA;;AA1BJ,gBAAgB,MAed,KAcE;AA7BJ,gBAAgB,MAgBd,mBAaE;EACE,YAAA;EACA,aAAA;EACA,sBAAA;EACA,OAAA;EACA,aAAA;EACA,gBAAA;;AAnCN,gBAAgB,MAwCd;EACE,gBAAgB,uCAAhB;EACA,eAAA;EACA,SAAA;EACA,yBAAA;EACA,4BAAA;;AA7CJ,gBAAgB,MAwCd,cAOE;EACE,uBAAA;;AAhDN,gBAAgB,MAwCd,cAWE;EACE,OAAA;EACA,aAAA;EACA,sBAAA;EACA,WAAA;;AAvDN,gBAAgB,MAwCd,cAkBE;EACE,aAAA;EACA,kCAAA;EACA,YAAA;EACA,eAAA;EACA,+BAAA;EACA,wCAAA;EACA,kBAAA;;AAjEN,gBAAgB,MAwCd,cA4BE;EACE,aAAA;EACA,sBAAA;EACA,WAAA;EACA,uBAAA;EACA,8BAAA;EACA,wCAAA;EACA,kBAAA;;AAEA,gBA7EU,MAwCd,cA4BE,YASG;EACC,2CAAA;EACA,gCAAA;;AA/ER,gBAAgB,MAwCd,cA2CE;EACE,kBAAA;EACA,iBAAA;EACA,cAAA;EACA,SAAA;EACA,qBAAA;EACA,+CAAA;EACA,yBAAA;EACA,qBAAA;EACA,aAAa,kBAAb;EACA,2CAAA;;AA7FN,gBAAgB,MAwCd,cAwDE;EACE,aAAA;EACA,mBAAA;EACA,WAAA;EACA,eAAA;EACA,uBAAA;;AArGN,gBAAgB,MAwCd,cAgEE;EACE,aAAA;EACA,sBAAA;EACA,WAAA;EACA,mBAAA;EACA,OAAA;EACA,YAAA;;AA9GN,gBAAgB,MAwCd,cAyEE;EACE,iBAAA;EACA,cAAA;EACA,SAAA;EACA,gBAAA;EACA,2CAAA;;AAtHN,gBAAgB,MAwCd,cAiFE;EACE,kBAAA;EACA,iBAAA;EACA,WAAA;EACA,uBAAA;EACA,8BAAA;EACA,wCAAA;EACA,kBAAA;EACA,iBAAA;EACA,kBAAA;EACA,2CAAA;EACA,WAAA;;AApIN,gBAAgB,MAwCd,cA+FE;EACE,iBAAA;EACA,gBAAA;EACA,uBAAA;EACA,iCAAA;EACA,wCAAA;EACA,WAAA;EACA,kBAAA;EACA,kBAAA;EACA,iBAAA;EACA,eAAA;EACA,WAAA;EACA,2CAAA;EACA,8CAAA;;AAEA,gBAtJU,MAwCd,cA+FE,YAeG;EACC,iBAAA;;AAGF,gBA1JU,MAwCd,cA+FE,YAmBG;EACC,kCAAA;EACA,+BAAA;;AAGF,gBA/JU,MAwCd,cA+FE,YAwBG;EACC,iCAAA;EACA,oCAAA;;AAGF,gBApKU,MAwCd,cA+FE,YA6BG;EACC,aAAA;EACA,qBAAA;EACA,8EAAA;EACA,iCAAA;;AAxKR,gBAAgB,MAwCd,cAoIE,eACE,GAAE,gBAAgB;EAChB,kBAAA;EACA,gBAAA;;AA/KR,gBAAgB,MAwCd,cAoIE,eAME,iBAAgB;EACd,kBAAA;;AAnLR,gBAAgB,MAwCd,cAoIE,eAUE,MAAK,gBAAgB;EACnB,iBAAA;;AAvLR,gBAAgB,MAwCd,cAoIE,eAcE;EACE,iBAAA;;AA3LR,gBAAgB,MAwCd,cAoIE,eAkBE;EACE,iBAAA;;AA/LR,gBAAgB,MAsMd;EACE,SAAA;EACA,iBAAA;EACA,yBAAA;;AAzMJ,gBAAgB,MA+Md;EACE,SAAA;EACA,eAAA;EACA,kBAAA;EACA,wBAAA;EACA,2BAAA;;AApNJ,gBAAgB,MA+Md,YAOE;EACE,UAAA;EACA,uBAAA;;AAEA,gBA1NU,MA+Md,YAOE,KAIG,IAAI;EACH,aAAA;;AA3NR,gBAAgB,MA+Md,YAOE,KASE;AA/NN,gBAAgB,MA+Md,YAOE,KASS;EACL,YAAA;EACA,iBAAA;;AAjOR,gBAAgB,MA+Md,YAOE,KAcE;EACE,YAAA;;AArOR,gBAAgB,MA+Md,YA2BE;EACE,gBAAA;EACA,SAAA;EACA,UAAA;;AA7ON,gBAAgB,MA+Md,YA2BE,cAKE,GAAE;EACA,sBAAA;EACA,sBAAA;EACA,8BAAA;EACA,wCAAA;EACA,kBAAA;;AAEA,gBAtPQ,MA+Md,YA2BE,cAKE,GAAE,KAOC;EACC,+BAAA;;AAGF,gBA1PQ,MA+Md,YA2BE,cAKE,GAAE,KAWC;EACC,8BAAA;EACA,oCAAA;EACA,gBAAA;EACA,qBAAA;;AAJF,gBA1PQ,MA+Md,YA2BE,cAKE,GAAE,KAWC,eAMC;EACE,cAAA;EACA,2CAAA;;AAlQZ,gBAAgB,MA+Md,YA0DE;EACE,aAAA;EACA,mBAAA;EACA,WAAA;EACA,yBAAA;;AA7QN,gBAAgB,MA+Md,YA0DE,eAME;EACE,oBAAA;EACA,mBAAA;EACA,uBAAA;EACA,WAAA;EACA,YAAA;EACA,cAAA;EACA,qBAAA;EACA,eAAA;EACA,kBAAA;EACA,oBAAA;;AAEA,gBA3RQ,MA+Md,YA0DE,eAME,cAYG;EACC,cAAA;EACA,kCAAA;EACA,WAAW,UAAX;;AA9RV,gBAAgB,MA+Md,YA0DE,eAME,cAkBE;EACE,kBAAA;;AAGF,gBArSQ,MA+Md,YA0DE,eAME,cAsBG;EACC,cAAA;;AAEA,gBAxSM,MA+Md,YA0DE,eAME,cAsBG,UAGE;EACC,cAAA;EACA,kCAAA;;AAIJ,gBA9SQ,MA+Md,YA0DE,eAME,cA+BG;EACC,cAAA;;AAEA,gBAjTM,MA+Md,YA0DE,eAME,cA+BG,YAGE;EACC,cAAA;EACA,kCAAA;;AAIJ,gBAvTQ,MA+Md,YA0DE,eAME,cAwCG;EACC,cAAA;;AAEA,gBA1TM,MA+Md,YA0DE,eAME,cAwCG,WAGE;EACC,cAAA;EACA,kCAAA;;AALJ,gBAvTQ,MA+Md,YA0DE,eAME,cAwCG,WAQC,EAAC;EACC,cAAA;;AATJ,gBAvTQ,MA+Md,YA0DE,eAME,cAwCG,WAYC,EAAC;EACC,cAAA;;AAIJ,gBAxUQ,MA+Md,YA0DE,eAME,cAyDG;EACC,cAAA;;AAEA,gBA3UM,MA+Md,YA0DE,eAME,cAyDG,SAGE;EACC,cAAA;EACA,kCAAA;;AA7UZ,gBAAgB,MA+Md,YAoIE;EACE,eAAA;EACA,eAAA;;AArVN,gBAAgB,MA+Md,YA0IE;AAzVJ,gBAAgB,MA+Md,YA0IM;AAzVR,gBAAgB,MA+Md,YA0IU;AAzVZ,gBAAgB,MA+Md,YA0IiB,KAAI;AAzVvB,gBAAgB,MA+Md,YA0IuC,KAAI;AAzV7C,gBAAgB,MA+Md,YA2IE;AA1VJ,gBAAgB,MA+Md,YA2Ie;AA1VjB,gBAAgB,MA+Md,YA2I+B;AA1VjC,gBAAgB,MA+Md,YA4IE;AA3VJ,gBAAgB,MA+Md,YA4I4B;AA3V9B,gBAAgB,MA+Md,YA6IE;AA5VJ,gBAAgB,MA+Md,YA6IgB;EACZ,cAAA;EACA,iDAAA;;AA9VN,gBAAgB,MA+Md,YAmJE,MAAK;AAlWT,gBAAgB,MA+Md,YAmJsB,MAAK;AAlW7B,gBAAgB,MA+Md,YAmJ4C;EACxC,cAAA;EACA,oCAAA;EACA,wCAAA;EACA,YAAA;EACA,uBAAA;EACA,gBAAA;;AAEA,gBA1WU,MA+Md,YAmJE,MAAK,aAQF;AAAD,gBA1WU,MA+Md,YAmJsB,MAAK,eAQtB;AAAD,gBA1WU,MA+Md,YAmJ4C,OAQvC;EACC,qCAAA;EACA,oCAAA;;AA5WR,gBAAgB,MA+Md,YAkKE;AAjXJ,gBAAgB,MA+Md,YAkKM;EACF,iBAAA;EACA,cAAA;;AAnXN,gBAAgB,MA+Md,YAwKE,GAAE,gBAAgB;EAChB,kBAAA;EACA,kBAAA;EACA,qBAAA;EACA,cAAA;;AA3XN,gBAAgB,MA+Md,YAgLE;EACE,aAAA;EACA,sBAAA;EACA,WAAA;EACA,sBAAA;EACA,qBAAA;EACA,+BAAA;EACA,wCAAA;EACA,kBAAA;;AAvYN,gBAAgB,MA+Md,YAgLE,cAUE;EACE,kBAAA;EACA,iBAAA;EACA,cAAA;EACA,yBAAA;EACA,qBAAA;EACA,oBAAA;EACA,sBAAA;EACA,8BAAA;EACA,6CAAA;EACA,kBAAA;EACA,2CAAA;;AApZR,gBAAgB,MA+Md,YAgLE,cAwBE;EACE,aAAA;EACA,8BAAA;EACA,mBAAA;EACA,WAAA;EACA,uBAAA;EACA,8BAAA;EACA,wCAAA;EACA,kBAAA;;AA/ZR,gBAAgB,MA+Md,YAgLE,cAwBE,UAUE;EACE,WAAA;EACA,eAAA;;AAGF,gBAtaQ,MA+Md,YAgLE,cAwBE,UAeG;EACC,oCAAA;EACA,WAAA;;AAFF,gBAtaQ,MA+Md,YAgLE,cAwBE,UAeG,SAIC;EACE,WAAA;EACA,YAAA;EACA,kBAAA;EACA,wCAAA;;AARJ,gBAtaQ,MA+Md,YAgLE,cAwBE,UAeG,SAWC;EACE,aAAA;EACA,mBAAA;;AAbJ,gBAtaQ,MA+Md,YAgLE,cAwBE,UAeG,SAWC,YAIE;EACE,cAAA;EACA,2CAAA;EACA,gBAAA;EACA,eAAA;;AAEA,gBA3bE,MA+Md,YAgLE,cAwBE,UAeG,SAWC,YAIE,EAMG;EACC,WAAA;EACA,6CAAA;;AAvBR,gBAtaQ,MA+Md,YAgLE,cAwBE,UAeG,SA4BC;EACE,WAAA;;AAncZ,gBAAgB,MA+Md,YAgLE,cAwBE,UAgDE;EACE,gBAAA;EACA,iBAAA;EACA,cAAA;EACA,2CAAA;;AA3cV,gBAAgB,MA+Md,YAgLE,cAwBE,UAuDE;EACE,gBAAA;EACA,iBAAA;EACA,cAAA;EACA,2CAAA;;AAldV,gBAAgB,MA+Md,YAgLE,cAwBE,UA8DE;EACE,kBAAA;EACA,iBAAA;EACA,eAAA;EACA,WAAA;EACA,8BAAA;EACA,sBAAA;EACA,kBAAA;EACA,wCAAA;EACA,2CAAA;;AA9dV,gBAAgB,MA+Md,YAgLE,cAwBE,UA0EE;EACE,kBAAA;EACA,iBAAA;EACA,eAAA;EACA,cAAA;EACA,8BAAA;EACA,sBAAA;EACA,kBAAA;EACA,wCAAA;EACA,2CAAA;;AAGF,gBA7eQ,MA+Md,YAgLE,cAwBE,UAsFG;EACC,gCAAA;;AADF,gBA7eQ,MA+Md,YAgLE,cAwBE,UAsFG,WAGC;EACE,kBAAA;EACA,gBAAA;;AALJ,gBA7eQ,MA+Md,YAgLE,cAwBE,UAsFG,WAQC;EACE,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,WAAA;;AAZJ,gBA7eQ,MA+Md,YAgLE,cAwBE,UAsFG,WAQC,iBAME;EACE,WAAA;EACA,eAAA;EACA,cAAA;EACA,kBAAA;EACA,iBAAA;EACA,iBAAA;;AApBN,gBA7eQ,MA+Md,YAgLE,cAwBE,UAsFG,WAQC,iBAeE;EACE,WAAA;EACA,YAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,iBAAA;EACA,iBAAA;EACA,kBAAA;EACA,wCAAA;EACA,YAAY,8EAAZ;EACA,cAAA;EACA,eAAA;EACA,qBAAA;;AAEA,gBAnhBE,MA+Md,YAgLE,cAwBE,UAsFG,WAQC,iBAeE,mBAeG;EACC,YAAY,gFAAZ;EACA,oCAAA;EACA,WAAW,WAAX;;AAGF,gBAzhBE,MA+Md,YAgLE,cAwBE,UAsFG,WAQC,iBAeE,mBAqBG;EACC,WAAW,WAAX;;AAMR,gBAhiBQ,MA+Md,YAgLE,cAwBE,UAyIG;EACC,gCAAA;;AAGF,gBApiBQ,MA+Md,YAgLE,cAwBE,UA6IG;EACC,+BAAA;EACA,WAAA;;AAFF,gBApiBQ,MA+Md,YAgLE,cAwBE,UA6IG,eAIC;EACE,kBAAA;;AALJ,gBApiBQ,MA+Md,YAgLE,cAwBE,UA6IG,eAQC;EACE,iBAAA;EACA,sBAAA;;AAIJ,gBAljBQ,MA+Md,YAgLE,cAwBE,UA2JG;EACC,0CAAA;EACA,WAAA;;AAFF,gBAljBQ,MA+Md,YAgLE,cAwBE,UA2JG,UAIC;EACE,kBAAA;;AALJ,gBAljBQ,MA+Md,YAgLE,cAwBE,UA2JG,UAQC;EACE,WAAA;EACA,gBAAA;;AAVJ,gBAljBQ,MA+Md,YAgLE,cAwBE,UA2JG,UAaC;EACE,iBAAA;EACA,sBAAA;;AAKN,gBAtkBU,MA+Md,YAgLE,cAuMG,YACC,UAAS;EACP,0CAAA;EACA,WAAA;;AAHJ,gBAtkBU,MA+Md,YAgLE,cAuMG,YACC,UAAS,YAIP;EACE,kBAAA;;AANN,gBAtkBU,MA+Md,YAgLE,cAuMG,YACC,UAAS,YAQP;EACE,kBAAA;EACA,iBAAA;EACA,kBAAA;EACA,WAAA;EACA,8BAAA;EACA,sBAAA;EACA,kBAAA;EACA,wCAAA;EACA,2CAAA;;AAlBN,gBAtkBU,MA+Md,YAgLE,cAuMG,YACC,UAAS,YAoBP;EACE,WAAA;EACA,eAAA;EACA,kBAAA;;AAxBN,gBAtkBU,MA+Md,YAgLE,cAuMG,YACC,UAAS,YA0BP;EACE,kBAAA;EACA,iBAAA;EACA,kBAAA;EACA,WAAA;EACA,8BAAA;EACA,sBAAA;EACA,kBAAA;EACA,wCAAA;EACA,2CAAA;;AApCN,gBAtkBU,MA+Md,YAgLE,cAuMG,YAwCC,UAAS;EACP,8BAAA;;AAzCJ,gBAtkBU,MA+Md,YAgLE,cAuMG,YAwCC,UAAS,eAGP;EACE,kBAAA;EACA,iBAAA;EACA,iBAAA;EACA,WAAA;EACA,8BAAA;EACA,uBAAA;EACA,kBAAA;EACA,wCAAA;EACA,2CAAA;;AA1nBZ,gBAAgB,MA+Md,YAkbE;EACE,aAAA;EACA,sBAAA;EACA,WAAA;EACA,iBAAA;;AAroBN,gBAAgB,MA+Md,YAkbE,gBAME;EACE,SAAA;;AAxoBR,gBAAgB,MA+Md,YA6bE;EACE,aAAA;EACA,mBAAA;EACA,mBAAA;EACA,WAAA;EACA,iBAAA;;AAjpBN,gBAAgB,MA+Md,YA6bE,oBAOE;EACE,SAAA;EACA,OAAA;;AArpBR,gBAAgB,MA+Md,YA6bE,oBAYE;EACE,aAAA;EACA,mBAAA;EACA,WAAA;EACA,sBAAA;EACA,mBAAA;;AA7pBR,gBAAgB,MA+Md,YA6bE,oBAYE,kBAOE;EACE,SAAA;EACA,iBAAA;;AAjqBV,gBAAgB,MA+Md,YA6bE,oBAYE,kBAYE,MAAK;EACH,SAAA;EACA,eAAA;;;AAQV,gBAAgB,MAAM,eAGpB;EACE,YAAY,4EAAZ;EACA,wCAAA;EACA,kBAAA;EACA,UAAA;;AAKA,gBAZY,MAAM,eAWpB,WACG;EACC,YAAY,6EAAZ;;AAbN,gBAAgB,MAAM,eAkBpB;EACE,yBAAA;EACA,UAAA;;AApBJ,gBAAgB,MAAM,eAuBpB;EACE,WAAA;EACA,YAAA;EACA,kBAAA;EACA,wCAAA;EACA,iBAAA;EACA,eAAA;EACA,cAAA;;AA9BJ,gBAAgB,MAAM,eAkCpB,IAAG,KACD,MAAK;EACH,2CAAA;EACA,cAAA;;AArCN,gBAAgB,MAAM,eA0CpB;EACE,cAAA;EACA,2CAAA;;AA5CJ,gBAAgB,MAAM,eAgDpB;EACE,YAAY,4EAAZ;EACA,+CAAA;;AAMJ,gBAAgB,MAAM,UAGpB;EACE,YAAY,6EAAZ;EACA,yCAAA;EACA,kBAAA;EACA,UAAA;;AAKA,gBAZY,MAAM,UAWpB,WACG;EACC,YAAY,6EAAZ;;AAbN,gBAAgB,MAAM,UAkBpB;EACE,yBAAA;EACA,UAAA;;AApBJ,gBAAgB,MAAM,UAuBpB;EACE,WAAA;EACA,YAAA;EACA,kBAAA;EACA,yCAAA;EACA,iBAAA;EACA,eAAA;EACA,cAAA;;AA9BJ,gBAAgB,MAAM,UAkCpB,IAAG,KACD,MAAK;EACH,4CAAA;EACA,cAAA;;AArCN,gBAAgB,MAAM,UA0CpB;EACE,cAAA;EACA,4CAAA;;AA5CJ,gBAAgB,MAAM,UAgDpB;EACE,YAAY,6EAAZ;EACA,gDAAA;;AAMA,iBACE,MACE,WAAW,SAAQ,KACjB;EACE,OAAA;EACA,gBAAA;;AAOR,qBACE,aAAY;EACV,aAAA;EACA,sBAAA;EACA,WAAA;;AAJJ,qBAOE;EACE,aAAA;EACA,mBAAA;EACA,WAAA;;AAVJ,qBAOE,eAKE;EACE,iBAAA;EACA,eAAA;EACA,kBAAA;;AAfN,qBAOE,eAWE;EACE,aAAA;EACA,mBAAA;EACA,WAAA;EACA,OAAA;;AAtBN,qBAOE,eAkBE;EACE,iBAAA;EACA,iBAAA;;AA3BN,qBAOE,eAuBE;EACE,aAAA;EACA,cAAA;EACA,sBAAA;EACA,iBAAA;;AAlCN,qBAOE,eA8BE,OAAM;EACJ,WAAA;;AAtCN,qBA0CE;EACE,aAAA;EACA,6BAAA;EACA,kBAAA;EACA,mBAAA;EACA,4CAAA;;AA/CJ,qBA0CE,gBAOE;EACE,kBAAA;EACA,cAAA;;AAnDN,qBA0CE,gBAOE,YAIE;EACE,cAAA;;;AAOZ,gBAAgB,MACd;EACE,aAAA;EACA,mBAAA;EACA,QAAA;EACA,eAAA;EACA,cAAA;;AANJ,gBAAgB,MACd,gBAOE;EACE,oBAAA;EACA,mBAAA;EACA,QAAA;EACA,iBAAA;EACA,YAAY,8DAAZ;EACA,yBAAA;EACA,kBAAA;EACA,cAAA;EACA,6BAAA;EACA,iBAAA;EACA,eAAA;EACA,2CAAA;EACA,gFAAA;EACA,yBAAA;EACA,mBAAA;;AAvBN,gBAAgB,MACd,gBAOE,kBAiBE;EAAI,cAAA;;AAEJ,gBA3BU,MACd,gBAOE,kBAmBG;EACC,YAAY,8DAAZ;EACA,qBAAA;EACA,WAAA;EACA,iFAAA;;AAJF,gBA3BU,MACd,gBAOE,kBAmBG,MAKC;EAAI,cAAA;;AAGN,gBAnCU,MACd,gBAOE,kBA2BG;EACC,YAAY,8DAAZ;EACA,WAAW,eAAX;EACA,wCAAA;;AAOR,uBACE,YACE;EACE,WAAA;EACA,YAAA;EACA,kBAAA;EACA,iBAAA;EACA,cAAA;EACA,wCAAA;EACA,sBAAA;EACA,iBAAA;;AAVN,uBACE,YAYE;EACE,kBAAA;EACA,cAAA;;AAMN,qBACE;EACE,cAAA;;AACA,qBAFF,2BAEG;AAAU,qBAFb,2BAEc;EACV,YAAY,yDAAZ","file":"mournblade.css","sourcesContent":[]} \ No newline at end of file diff --git a/system.json b/system.json index 7d479ed..483a7b1 100644 --- a/system.json +++ b/system.json @@ -202,7 +202,11 @@ "packs": [ "pnj-creatures", "pouvoirs-elementaires", + "traits-demoniaques", + "automatons", + "capacites-automaton", "creatures-elementaires", + "demons-types", "tables", "scenes", "journal-aide" @@ -226,6 +230,18 @@ "ASSISTANT": "OWNER" } }, + { + "type": "Actor", + "label": "Démons", + "name": "demons-types", + "path": "packs/demons-types/demons-types", + "system": "fvtt-mournblade", + "flags": {}, + "ownership": { + "PLAYER": "OBSERVER", + "ASSISTANT": "OWNER" + } + }, { "type": "Actor", "label": "Elémentaires", @@ -250,6 +266,42 @@ "ASSISTANT": "OWNER" } }, + { + "type": "Actor", + "label": "Automatons de la Loi", + "name": "automatons", + "path": "packs/automatons/automatons", + "system": "fvtt-mournblade", + "flags": {}, + "ownership": { + "PLAYER": "OBSERVER", + "ASSISTANT": "OWNER" + } + }, + { + "type": "Item", + "label": "Capacités des Automatons", + "name": "capacites-automaton", + "path": "packs/capacites-automaton/capacites-automaton", + "system": "fvtt-mournblade", + "flags": {}, + "ownership": { + "PLAYER": "OBSERVER", + "ASSISTANT": "OWNER" + } + }, + { + "type": "Item", + "label": "Traits Démoniaques", + "name": "traits-demoniaques", + "path": "packs/traits-demoniaques/traits-demoniaques", + "system": "fvtt-mournblade", + "flags": {}, + "ownership": { + "PLAYER": "OBSERVER", + "ASSISTANT": "OWNER" + } + }, { "type": "Item", "label": "Pouvoirs Elémentaires", diff --git a/templates/actor-sheet.hbs b/templates/actor-sheet.hbs index a099dab..21170eb 100644 --- a/templates/actor-sheet.hbs +++ b/templates/actor-sheet.hbs @@ -366,6 +366,16 @@ + {{#if isChaotique}} + + {{/if}} + {{#if isLoyal}} + + {{/if}} @@ -436,6 +446,31 @@ {{/if}} + {{!-- Invocations démoniaques actives --}} + {{#if (gt system.invocationsDemons.length 0)}} +
+

{{localize "MNBL.invocationsDemons"}}

+ +
+ {{/if}} +

{{localize "MNBL.tendancies"}}

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

{{localize "MNBL.potions"}}

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

    {{alias}}

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

    {{alias}}

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

    {{alias}}

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

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

- +
{{#if isHeroique}} -

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

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

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

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

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

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

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

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

Quelque chose s'est terriblement mal passé…

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

L'invocation a échoué.

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

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

+
{{#if potionCreated}} -

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

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

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

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

Jet d'Enchantement

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

{{name}}

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

Déterminer le Seuil de difficulté

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

Choisir l'Automaton

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

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

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

Non enchanté

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