From ed68c173044b228aa6593293d905d89d9a18752f Mon Sep 17 00:00:00 2001 From: LeRatierBretonnien Date: Thu, 5 Sep 2024 20:14:17 +0200 Subject: [PATCH] =?UTF-8?q?Gestion=20des=20hordes=20et=20divers=20am=C3=A9?= =?UTF-8?q?liorations=20+=20traduction=20espagnole?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- css/bol.css | 9 +- lang/en.json | 17 +- lang/es.json | 595 ++++++++++++++++++ lang/fr.json | 15 +- module/actor/actor.js | 102 ++- module/actor/horde-sheet.js | 217 +++++++ module/bol.js | 4 +- module/controllers/bol-rolls.js | 8 +- module/system/bol-combat.js | 24 +- module/system/bol-utility.js | 2 +- module/system/config.js | 45 +- module/system/templates.js | 1 + packs/aides-de-jeu/{000317.log => 000377.log} | 0 packs/aides-de-jeu/CURRENT | 2 +- packs/aides-de-jeu/LOG | 16 +- packs/aides-de-jeu/LOG.old | 16 +- .../{MANIFEST-000315 => MANIFEST-000375} | Bin 228 -> 228 bytes packs/armors/{000223.log => 000283.log} | 0 packs/armors/CURRENT | 2 +- packs/armors/LOG | 16 +- packs/armors/LOG.old | 16 +- .../{MANIFEST-000221 => MANIFEST-000281} | Bin 173 -> 173 bytes packs/boons/{000317.log => 000377.log} | 0 packs/boons/CURRENT | 2 +- packs/boons/LOG | 16 +- packs/boons/LOG.old | 16 +- .../{MANIFEST-000315 => MANIFEST-000375} | Bin 176 -> 176 bytes .../{000317.log => 000377.log} | 0 packs/boonsflawscreatures/CURRENT | 2 +- packs/boonsflawscreatures/LOG | 16 +- packs/boonsflawscreatures/LOG.old | 16 +- .../{MANIFEST-000315 => MANIFEST-000375} | Bin 173 -> 173 bytes packs/careers/{000317.log => 000377.log} | 0 packs/careers/CURRENT | 2 +- packs/careers/LOG | 16 +- packs/careers/LOG.old | 16 +- .../{MANIFEST-000315 => MANIFEST-000375} | Bin 176 -> 176 bytes .../{000315.log => 000375.log} | 0 packs/effets-exemples/CURRENT | 2 +- packs/effets-exemples/LOG | 16 +- packs/effets-exemples/LOG.old | 16 +- .../{MANIFEST-000313 => MANIFEST-000373} | Bin 173 -> 173 bytes packs/equipment/{000318.log => 000378.log} | 0 packs/equipment/CURRENT | 2 +- packs/equipment/LOG | 16 +- packs/equipment/LOG.old | 16 +- .../{MANIFEST-000316 => MANIFEST-000376} | Bin 175 -> 175 bytes packs/fightoptions/{000316.log => 000376.log} | 0 packs/fightoptions/CURRENT | 2 +- packs/fightoptions/LOG | 16 +- packs/fightoptions/LOG.old | 16 +- .../{MANIFEST-000314 => MANIFEST-000374} | Bin 175 -> 175 bytes packs/flaws/{000317.log => 000377.log} | 0 packs/flaws/CURRENT | 2 +- packs/flaws/LOG | 16 +- packs/flaws/LOG.old | 16 +- .../{MANIFEST-000315 => MANIFEST-000375} | Bin 175 -> 175 bytes packs/godsfaith/{000316.log => 000376.log} | 0 packs/godsfaith/CURRENT | 2 +- packs/godsfaith/LOG | 16 +- packs/godsfaith/LOG.old | 16 +- .../{MANIFEST-000314 => MANIFEST-000374} | Bin 173 -> 173 bytes packs/languages/{000317.log => 000377.log} | 0 packs/languages/CURRENT | 2 +- packs/languages/LOG | 16 +- packs/languages/LOG.old | 16 +- .../{MANIFEST-000315 => MANIFEST-000375} | Bin 173 -> 173 bytes .../{000317.log => 000377.log} | 0 packs/objets-alchimie/CURRENT | 2 +- packs/objets-alchimie/LOG | 16 +- packs/objets-alchimie/LOG.old | 16 +- .../{MANIFEST-000315 => MANIFEST-000375} | Bin 175 -> 175 bytes packs/origins/{000317.log => 000377.log} | 0 packs/origins/CURRENT | 2 +- packs/origins/LOG | 16 +- packs/origins/LOG.old | 16 +- .../{MANIFEST-000315 => MANIFEST-000375} | Bin 176 -> 176 bytes .../{000317.log => 000377.log} | 0 packs/potions-alchimie/CURRENT | 2 +- packs/potions-alchimie/LOG | 16 +- packs/potions-alchimie/LOG.old | 16 +- .../{MANIFEST-000315 => MANIFEST-000375} | Bin 175 -> 175 bytes packs/races/{000317.log => 000377.log} | 0 packs/races/CURRENT | 2 +- packs/races/LOG | 16 +- packs/races/LOG.old | 16 +- .../{MANIFEST-000315 => MANIFEST-000375} | Bin 173 -> 173 bytes packs/spells/{000317.log => 000377.log} | 0 packs/spells/CURRENT | 2 +- packs/spells/LOG | 16 +- packs/spells/LOG.old | 16 +- .../{MANIFEST-000315 => MANIFEST-000375} | Bin 173 -> 173 bytes .../vehicleweapons/{000224.log => 000284.log} | 0 packs/vehicleweapons/CURRENT | 2 +- packs/vehicleweapons/LOG | 16 +- packs/vehicleweapons/LOG.old | 16 +- .../{MANIFEST-000222 => MANIFEST-000282} | Bin 173 -> 173 bytes packs/weapons/{000228.log => 000288.log} | 0 packs/weapons/CURRENT | 2 +- packs/weapons/LOG | 16 +- packs/weapons/LOG.old | 16 +- .../{MANIFEST-000226 => MANIFEST-000286} | Bin 176 -> 176 bytes system.json | 10 +- template.json | 10 + templates/actor/horde-sheet.hbs | 75 +++ templates/actor/parts/tabs/actor-actions.hbs | 2 +- .../actor/parts/tabs/horde-description.hbs | 10 + templates/chat/rolls/attack-damage-card.hbs | 13 +- templates/chat/rolls/default-roll-card.hbs | 15 +- ui/icons/icon-horde-portrait.webp | Bin 0 -> 46014 bytes ui/icons/icon-horde-token.webp | Bin 0 -> 29610 bytes 111 files changed, 1443 insertions(+), 343 deletions(-) create mode 100644 lang/es.json create mode 100644 module/actor/horde-sheet.js rename packs/aides-de-jeu/{000317.log => 000377.log} (100%) rename packs/aides-de-jeu/{MANIFEST-000315 => MANIFEST-000375} (84%) rename packs/armors/{000223.log => 000283.log} (100%) rename packs/armors/{MANIFEST-000221 => MANIFEST-000281} (73%) rename packs/boons/{000317.log => 000377.log} (100%) rename packs/boons/{MANIFEST-000315 => MANIFEST-000375} (72%) rename packs/boonsflawscreatures/{000317.log => 000377.log} (100%) rename packs/boonsflawscreatures/{MANIFEST-000315 => MANIFEST-000375} (73%) rename packs/careers/{000317.log => 000377.log} (100%) rename packs/careers/{MANIFEST-000315 => MANIFEST-000375} (72%) rename packs/effets-exemples/{000315.log => 000375.log} (100%) rename packs/effets-exemples/{MANIFEST-000313 => MANIFEST-000373} (73%) rename packs/equipment/{000318.log => 000378.log} (100%) rename packs/equipment/{MANIFEST-000316 => MANIFEST-000376} (73%) rename packs/fightoptions/{000316.log => 000376.log} (100%) rename packs/fightoptions/{MANIFEST-000314 => MANIFEST-000374} (73%) rename packs/flaws/{000317.log => 000377.log} (100%) rename packs/flaws/{MANIFEST-000315 => MANIFEST-000375} (73%) rename packs/godsfaith/{000316.log => 000376.log} (100%) rename packs/godsfaith/{MANIFEST-000314 => MANIFEST-000374} (76%) rename packs/languages/{000317.log => 000377.log} (100%) rename packs/languages/{MANIFEST-000315 => MANIFEST-000375} (73%) rename packs/objets-alchimie/{000317.log => 000377.log} (100%) rename packs/objets-alchimie/{MANIFEST-000315 => MANIFEST-000375} (73%) rename packs/origins/{000317.log => 000377.log} (100%) rename packs/origins/{MANIFEST-000315 => MANIFEST-000375} (72%) rename packs/potions-alchimie/{000317.log => 000377.log} (100%) rename packs/potions-alchimie/{MANIFEST-000315 => MANIFEST-000375} (73%) rename packs/races/{000317.log => 000377.log} (100%) rename packs/races/{MANIFEST-000315 => MANIFEST-000375} (73%) rename packs/spells/{000317.log => 000377.log} (100%) rename packs/spells/{MANIFEST-000315 => MANIFEST-000375} (73%) rename packs/vehicleweapons/{000224.log => 000284.log} (100%) rename packs/vehicleweapons/{MANIFEST-000222 => MANIFEST-000282} (73%) rename packs/weapons/{000228.log => 000288.log} (100%) rename packs/weapons/{MANIFEST-000226 => MANIFEST-000286} (72%) create mode 100644 templates/actor/horde-sheet.hbs create mode 100644 templates/actor/parts/tabs/horde-description.hbs create mode 100644 ui/icons/icon-horde-portrait.webp create mode 100644 ui/icons/icon-horde-token.webp diff --git a/css/bol.css b/css/bol.css index 4c2fe56..353896e 100644 --- a/css/bol.css +++ b/css/bol.css @@ -1050,7 +1050,7 @@ body.system-bol img#logo { flex-direction: column; position: absolute; top: 2.75rem; - right: 4rem; + right: 16rem; } .tokenhudext.right { justify-content: flex-start; @@ -1064,10 +1064,10 @@ body.system-bol img#logo { .tokenhudext.right2 { justify-content: flex-start; flex-direction: column; - transform: translate(0, -30%); + /*transform: translate(0, -30%);*/ position: absolute; top: -4rem; - left: -12rem; + left: 11rem; } .control-icon.tokenhudicon { width: fit-content; @@ -1097,3 +1097,6 @@ body.system-bol img#logo { .character-summary-rollable { text-decoration: underline; } +.activated-green { + color: darkgreen; +} \ No newline at end of file diff --git a/lang/en.json b/lang/en.json index 03a52a0..710858d 100644 --- a/lang/en.json +++ b/lang/en.json @@ -4,7 +4,8 @@ "character": "PC", "encounter": "NPC", "npc": "NPC", - "vehicle": "Vehicle" + "vehicle": "Vehicle", + "horde": "Horde" }, "Item": { "item": "Object", @@ -220,7 +221,13 @@ "BOL.ui.newNaturalProtection": "Natural protection", "BOL.ui.createNaturalWeapon": "Create a natural weapon", "BOL.ui.createNaturalProtection": "Create a natural protection", - + "BOL.ui.hordeSize": "Horde size", + "BOL.ui.hordeAttack": "Horde attack", + "BOL.ui.hordeName": "Name of the Horde", + "BOL.ui.criticallegend": "Legendary Success", + "BOL.ui.hordeHP": "Horde Vitality (1 member)", + "BOL.ui.hordehp": "Horde Vitality (total)", + "BOL.featureCategory.origins": "Origins", "BOL.featureCategory.races": "Races", "BOL.featureCategory.careers": "Careers", @@ -466,12 +473,14 @@ "BOL.chat.rolldamage": "Roll for damages", "BOL.chat.rolldamage6": "Roll for damages +6", "BOL.chat.rolldamage12": "Roll for damages +12 (1 HP)", + "BOL.chat.rolldamage12Legend": "Roll for damages +12", "BOL.chat.damageresult": "Damages of {name} : {total}", "BOL.chat.damagetarget": "Target : {target}", "BOL.chat.applydamagetotarget": "Apply damages to the target", "BOL.chat.fightoption": "Combat options", "BOL.chat.reroll": "Reroll (1 HP)", "BOL.chat.heroicreminder": "In addition of the actions below, you can : If you spent 1 Hero Point in addition, all these effects can be doubled.", + "BOL.chat.legendaryreminder": "In addition of the actions below, you can twice the following actions: ", "BOL.chat.toheroic": "Convert to Mighty success (1 HP)", "BOL.chat.tolegend": "Convert to Legendary succes (1 HP)", "BOL.chat.hurttitle": "{name} is going to receive {damageTotal} damages !", @@ -529,8 +538,10 @@ "BOL.chat.criticalrabble": "Rabble Massacre : If you fight against rabble, damages results indicate the amount of rabble you kill.", "BOL.chat.criticalpush": "Prone : If the size allow it, you push your opponent on the ground. He suffer 1 Malus Die for all his actions during the next round.", "BOL.chat.criticalup": "Transform to Legendary : If you spent 1 Hero Point/Villain, you can transform this Heroic success into a Legendary success.You can the choose 2 options in this list above.", - "BOL.chat.criticalinfo": "This is a Legendary or Heroic succes ! Choose your options and effects !", + "BOL.chat.criticalinfo": "This is an Heroic success ! Choose your options and effects !", + "BOL.chat.criticallegendaryinfo": "This is a Legendary succes ! Choisissez vos options et effets !", "BOL.chat.criticalbuttonjournal": "Legendary/Heroic Success", + "BOL.chat.nodamage": "Do not apply damages", "BOL.dialog.soeasy": "So easy (+4)", "BOL.dialog.veryeasy": "Very easy (+2)", diff --git a/lang/es.json b/lang/es.json new file mode 100644 index 0000000..60b8289 --- /dev/null +++ b/lang/es.json @@ -0,0 +1,595 @@ +{ + "TYPES": { + "Actor": { + "character": "PJ", + "encounter": "PNJ", + "npc": "PNJ", + "vehicle": "Vehículo" + }, + "Item": { + "item": "Objeto", + "feature": "Rasgo", + "weapon": "Arma", + "armure": "Armadura" + } + }, + + "BOL.attributes.vigor": "Fuerza", + "BOL.attributes.halfvigor" : "Media-Fuerza", + "BOL.attributes.agility": "Agilidad", + "BOL.attributes.mind": "Mente", + "BOL.attributes.appeal": "Atractivo", + "BOL.aptitudes.init": "Iniciativa", + "BOL.aptitudes.melee": "Melé", + "BOL.aptitudes.ranged": "Distancia", + "BOL.aptitudes.def": "Defensa", + "BOL.aptitudes.prot": "Protección", + "BOL.resources.hp": "Vitalidad", + "BOL.resources.hero": "Héroe", + "BOL.resources.faith": "Fe", + "BOL.resources.creation": "Creación", + "BOL.resources.power": "Poder", + "BOL.resources.villainy": "Villano", + "BOL.resources.alchemypoints": "Puntos Alquimia", + "BOL.traits.xp": "Experiencia", + + "BOL.ui.tab.stats": "Atributos", + "BOL.ui.tab.combat": "Combate", + "BOL.ui.tab.actions": "Acciones", + "BOL.ui.tab.features": "Rasgos", + "BOL.ui.tab.equipment": "Equipo", + "BOL.ui.tab.description": "Descripción", + "BOL.ui.tab.details": "Detalles", + "BOL.ui.tab.spellalchemy": "Alquimia", + "BOL.ui.tab.astrologer": "Astrólogo", + + "BOL.ui.astrologerPoints": "Puntos Astrología", + "BOL.ui.astrologerPointsLabel": "Puntos Astrología actuales", + "BOL.ui.ishoroscopemajor": "¿Horóscopo Mayor (ej del grupo)?", + "BOL.ui.answer": "Respuesta", + "BOL.ui.horoscopefavorable": "Favorable (1dB)", + "BOL.ui.horoscopeunfavorable": "Desfavorable (1dM)", + "BOL.ui.horoscopes": "Horóscopos", + "BOL.ui.horoscopesBonus": "Horóscopos (Ventaja)", + "BOL.ui.horoscopesMalus": "Horóscopos (Desventaja)", + "BOL.ui.groupHoroscope": "Horóscropo de Grupo de ", + + "BOL.ui.rabble": "Chusma", + "BOL.ui.tough": "Matones", + "BOL.ui.villain": "Villanos", + "BOL.ui.properties": "Propiedades", + "BOL.ui.description": "Descripción", + "BOL.ui.actions": "Acciones", + "BOL.ui.capacities": "Capacidad", + "BOL.ui.damages": "Daño", + "BOL.ui.details": "Detalles", + "BOL.ui.category": "Categoría", + "BOL.ui.subcategory": "Sub-Categoría", + "BOL.ui.type": "Tipo", + "BOL.ui.subtype": "Subtipo", + "BOL.ui.attribute" : "Atributo", + "BOL.ui.aptitude" : "Habilidad", + "BOL.ui.advantages" : "Ventaja/Desventaja", + "BOL.ui.modifiers": "Modificador", + "BOL.ui.item": "Objeto", + "BOL.ui.edit": "Editar", + "BOL.ui.unequip": "Quitar", + "BOL.ui.equip": "Equipar", + "BOL.ui.delete": "Borrar", + "BOL.ui.roll" : "Tirar", + "BOL.ui.equipment" : "Equipo", + "BOL.ui.equipmentProperties" : "Propiedades Equipo", + "BOL.ui.weaponAttack" : "Ataque Arma", + "BOL.ui.weaponProperties" : "Propiedades Arma", + "BOL.ui.protectionProperties" : "Propiedades Protección", + "BOL.ui.magicalProperties" : "Propiedades Mágicas", + "BOL.ui.alchemyProperties": "Propiedades Alquimia", + "BOL.ui.armor" : "Armadura", + "BOL.ui.reach" : "Alcance", + "BOL.ui.weapon" : "Arma", + "BOL.ui.melee" : "Melé", + "BOL.ui.ranged" : "Distancia", + "BOL.ui.protection" : "Protección", + "BOL.ui.shield" : "Escudo", + "BOL.ui.blocking" : "Bloqueo", + "BOL.ui.range" : "Alcance", + "BOL.ui.quantity" : "Cantidad", + "BOL.ui.qty" : "Cant.", + "BOL.ui.slot" : "Hueco", + "BOL.ui.weight" : "Peso", + "BOL.ui.price": "Precio", + "BOL.ui.cancel": "Cancelar", + "BOL.ui.submit": "OK", + "BOL.ui.attributeCheck" : "Tirada Atributo", + "BOL.ui.aptitudeCheck" : "Tirada Habilidad", + "BOL.ui.weaponCheck" : "Tirada Arma", + "BOL.ui.spellCheck" : "Tirada Conjuro", + "BOL.ui.careers" : "Oficios", + "BOL.ui.boons" : "Ventaja", + "BOL.ui.flaws" : "Desventaja", + "BOL.ui.rank" : "Rango", + "BOL.ui.success" : "Éxito", + "BOL.ui.failure" : "Fallo", + "BOL.ui.fumble" : "Pifia", + "BOL.ui.critical" : "Éxito Asombroso", + "BOL.ui.criticallegend" : "Éxito Legendario", + "BOL.ui.maneuvers" : "Maniobras", + "BOL.ui.stacksize" : "Tamaño Pila (máx)", + "BOL.ui.weapons" : "Armas", + "BOL.ui.protections" : "Protección", + "BOL.ui.ammos" : "Munición", + "BOL.ui.containers" : "Contenedor", + "BOL.ui.treasure" : "Tesoro", + "BOL.ui.vehicles" : "Vehículo/Montura", + "BOL.ui.misc" : "Varios", + "BOL.ui.vehicleProperties" : "Propiedades Vehículo", + "BOL.ui.speed" : "Velocidad", + "BOL.ui.noWeaponName" : "Nombre Arma", + "BOL.ui.targetDefence": "Defensa", + "BOL.ui.applyShieldMalus": "Aplicar Mod. Escudo", + "BOL.ui.shieldMalus": "Mod. Escudo", + "BOL.ui.defenseScore": "Valor Defensa", + "BOL.ui.defender": "Defensor", + "BOL.ui.difficulty": "Dificultad", + "BOL.ui.spellProperties": "Propiedades Conjuro", + "BOL.ui.duration": "Duración", + "BOL.ui.spellkeep": "Mantenimiento", + "BOL.ui.concentrate": "Concentración", + "BOL.ui.registerInit": "Registrar Inic.", + "BOL.ui.isSorcerer": "¿Es Hechicero?", + "BOL.ui.isAlchemist": "¿Es Alquimista?", + "BOL.ui.isPriest": "¿Es Clérigo/Druida?", + "BOL.ui.isAstrologer": "¿Es Astrólogo?", + "BOL.ui.circle": "Círculo", + "BOL.ui.spells": "Conjuros", + "BOL.ui.focusSpell": "Lanzar conjuro", + "BOL.ui.sorcererRank" : "Rango Hechicero", + "BOL.ui.alchemistRank": "Rango Alquimista", + "BOL.ui.mandatoryconditions": "Condiciones obligatorias", + "BOL.ui.optionnalconditions": "Condiciones opcionales", + "BOL.ui.ppcost": "Coste Puntos Poder", + "BOL.ui.ppAvailable": "Puntos Poder Disponibles", + "BOL.ui.pccost": "Coste Puntos Creación", + "BOL.ui.pcnow": "Puntos Creación Actuales", + "BOL.ui.alchemyType": "Tipo", + "BOL.ui.alchemy": "Alquimia", + "BOL.ui.makeAlchemy": "Realizar Alquimia", + "BOL.ui.alchemyCostTotal": "Coste Total Puntos Alquimia", + "BOL.ui.alchemyInvest": "Invertir Puntos Alquimia", + "BOL.ui.alchemyCurrent": "Puntos Alquimia actuales en Objeto", + "BOL.ui.advance": "Estado", + "BOL.ui.isadvantage": "¿Da un dado ventaja?", + "BOL.ui.bonusmalus": "Ventaja/desventaja adicional", + "BOL.ui.nbdices": "Número Dados", + "BOL.ui.totalmod": "Mod. Total", + "BOL.ui.rangeModifiers": "Mod. distancia", + "BOL.ui.money": "Dinero", + "BOL.ui.moneyTitle": "Tesoro", + "BOL.ui.fightOption": "Opciones Combate", + "BOL.ui.none": "Ninguno", + "BOL.ui.fightOptionType": "Tipo Opción Combate", + "BOL.ui.activated": "Activado", + "BOL.ui.deactivated": "Desactivado", + "BOL.ui.status": "Estado", + "BOL.ui.toactivated": "Activo", + "BOL.ui.todeactivated": "Inactivo", + "BOL.ui.armorAgiMalus": "Mod. Armadura+Escudo (Agi)", + "BOL.ui.armorInitMalus": "Mod. Armadura (Inic)", + "BOL.ui.attackValue": "Valor Ataque", + "BOL.ui.attackModifier": "Mod. Ataque", + "BOL.ui.weaponbonus": "Esta arma se beneficia de un Dado de ventaja (ej Arma Personal)", + "BOL.ui.initMalus": "Desventaja Inic.", + "BOL.ui.creature": "Criatura", + "BOL.ui.undead": "No-muerto", + "BOL.ui.daemon": "Demonio", + "BOL.ui.attributaptitude": "Atributo o Habilidad", + "BOL.ui.always": "Todos (ej siempre)", + "BOL.ui.effectbonusmalus": "Ventaja o Desventaja a aplicar", + "BOL.ui.boleffects": "Efectos (automático)", + "BOL.ui.modifier": "Modificador", + "BOL.ui.effects": "Efectos Activos", + "BOL.ui.pcname": "PCs", + "BOL.ui.npcname": "NPCs", + "BOL.ui.pclistbutton": "Vista compacta", + "BOL.ui.noactorfound": "PNJ Desconocido. El PNJ debe ser conocido en el mundo de juego para poder mostrase.", + "BOL.ui.deletetitle": "Borrar", + "BOL.ui.confirmdelete": "¿Seguro que quieres borrar este objeto?", + "BOL.ui.nomorealchemypoints": "¡Sin Puntos de Creación!", + "BOL.ui.armornoformula": "La Armadura {protect.name} no dispone de fórmula de protección!", + "BOL.ui.selectactor": "Selecciona un actora para aplicar la macro", + "BOL.ui.itemnotfound": "Imposible encontrar el objeto de esta macro", + "BOL.ui.noinit": "Sin iniciativa. Tira por iniciativa desde la hoja del actor.", + "BOL.ui.warninitiative": "Iniciativa no disponible. Tira Iniciativa para este combate.", + "BOL.ui.isspecial": "¿Especial?", + "BOL.ui.createEquipment": "Crear equipo", + "BOL.ui.astrology": "Astrología", + "BOL.ui.astrologyMinor": "Crear Horóscopo Menor", + "BOL.ui.astrologyMajor": "Crear Horóscopo Mayor", + "BOL.ui.astrologyMajorGroup": "Crear Grupo Horóscopo Mayor", + "BOL.ui.makeHoroscope": "Crear Horóscopo", + "BOL.ui.astrologerRank": "Rango Astrólogo", + "BOL.ui.horoscopeCost": "Coste Puntos Astrología", + "BOL.ui.minor": "Menor", + "BOL.ui.major": "Mayor", + "BOL.ui.majorgroup": "Grupo Mayor", + "BOL.ui.horoscopeGroup": "Grupo Horóscopo", + "BOL.ui.horoscopeDiceRemaining": "Dados Restantes", + "BOL.ui.horoscopeDiceMax": "Dado Máx", + "BOL.ui.astrologyNoPoints": "¡No dispones de suficientes Puntos Astrología!", + "BOL.ui.newEquipment": "Nuevo equipo", + "BOL.ui.newNaturalWeapon": "Arma natural", + "BOL.ui.newNaturalProtection": "Protección natural", + "BOL.ui.createNaturalWeapon": "Crear un arma natural", + "BOL.ui.createNaturalProtection": "Crear una protección natural", + + "BOL.featureCategory.origins": "Origen", + "BOL.featureCategory.races": "Raza", + "BOL.featureCategory.careers": "Oficios", + "BOL.featureCategory.boons": "Ventajas", + "BOL.featureCategory.flaws": "Desventajas", + "BOL.featureCategory.languages": "Idiomas", + "BOL.featureCategory.fightoptions": "Opciones Combate", + + "BOL.featureSubtypes.origin": "Origen", + "BOL.featureSubtypes.race": "Raza", + "BOL.featureSubtypes.career": "Oficio", + "BOL.featureSubtypes.boon": "Ventaja", + "BOL.featureSubtypes.flaw": "Desventaja", + "BOL.featureSubtypes.language": "Idioma", + "BOL.featureSubtypes.gods": "Dioses", + "BOL.featureSubtypes.fightOption": "Opción Combate", + "BOL.featureSubtypes.effect": "Efecto", + "BOL.featureSubtypes.effects": "Efectos", + "BOL.featureSubtypes.boleffect": "Efecto", + "BOL.featureSubtypes.horoscope": "Horóscopo", + "BOL.featureSubtypes.xplog": "Diario PX", + + "BOL.bougette.nomoney": "Nada", + "BOL.bougette.tolive": "Vivir justo", + "BOL.bougette.easylife": "Vida simple", + "BOL.bougette.luxury" : "Vida lujosa", + "BOL.bougette.rich": "¡Rico!", + + "BOL.fightOptionTypes.armor": "Ataque Armadura", + "BOL.fightOptionTypes.intrepid": "Ataque Total", + "BOL.fightOptionTypes.twoweaponsdef": "Dos Armas (Defensa)", + "BOL.fightOptionTypes.twoweaponsatt": "Dos Armas (Ataque)", + "BOL.fightOptionTypes.fulldefense": "Defensa Total", + "BOL.fightOptionTypes.defense": "Posición Defensiva", + "BOL.fightOptionTypes.attack": "Posición Ofensiva", + "BOL.fightOptionTypes.other": "Otro", + + "BOL.itemCategory.object": "Objeto", + "BOL.itemCategory.equipment": "Equipo", + "BOL.itemCategory.consumable": "Consumible", + "BOL.itemCategory.spell": "Conjuro", + "BOL.itemCategory.vehicle": "Montura/Vehículo", + "BOL.itemCategory.other": "Otro", + "BOL.itemCategory.capacity" : "Capacidad", + "BOL.itemCategory.alchemy": "Alquimia", + "BOL.itemCategory.vehicleweapon": "Arma Vehicular", + + "BOL.combatCategory.protections": "Protecciones", + "BOL.combatCategory.shields": "Escudos", + "BOL.combatCategory.melee": "Melé", + "BOL.combatCategory.ranged": "Distancia", + "BOL.combatCategory.fightOptions": "Opciones combate", + "BOL.combatCategory.natural": "Armas Naturales", + + "BOL.equipmentCategory.weapon": "Arma", + "BOL.equipmentCategory.armor": "Armadura", + "BOL.equipmentCategory.protection": "Protección", + "BOL.equipmentCategory.shield": "Escudo", + "BOL.equipmentCategory.helm": "Casco", + "BOL.equipmentCategory.jewel": "Joya", + "BOL.equipmentCategory.scroll": "Pergamino", + "BOL.equipmentCategory.ammunition": "Munición", + "BOL.equipmentCategory.container": "Contenedor", + "BOL.equipmentCategory.currency": "Moneda", + "BOL.equipmentCategory.other": "Otro", + + "BOL.protectionCategory.armor": "Armadura", + "BOL.protectionCategory.shield": "Escudo", + "BOL.protectionCategory.helm": "Casco", + "BOL.protectionCategory.other": "Otro", + + "BOL.spellItem.charm": "Truco", + "BOL.spellItem.circle1": "Primer Círculo", + "BOL.spellItem.circle2": "Segundo Círculo", + "BOL.spellItem.circle3": "Tercer Círculo", + + "BOL.alchemyItem.common": "Común", + "BOL.alchemyItem.scarce": "Escaso", + "BOL.alchemyItem.legend": "Legendario", + "BOL.alchemyItem.mythic": "Mítico", + + "BOL.weaponCategory.melee": "Melé", + "BOL.weaponCategory.ranged": "Distancia", + "BOL.weaponCategory.other": "Otro", + + "BOL.itemProperty.damageMultiplier": "Multiplicador Daño", + "BOL.itemProperty.attackBonusDice": "Dado Ventaja Ataque", + "BOL.itemProperty.equipable": "Equipable", + "BOL.itemProperty.protection": "Protección", + "BOL.itemProperty.blocking": "Bloqueo", + "BOL.itemProperty.magical": "Mágico", + "BOL.itemProperty.concealable": "Ocultable", + "BOL.itemProperty.2H": "Arma 2M", + "BOL.itemProperty.helm": "Casco", + "BOL.itemProperty.improvised": "Improvisada", + "BOL.itemProperty.shield": "Escudo", + "BOL.itemProperty.melee": "Melé", + "BOL.itemProperty.throwable": "Arrojadiza", + "BOL.itemProperty.ignoreshield": "Ignora Escudo", + "BOL.itemProperty.bashing": "Golpea", + "BOL.itemProperty.stackable": "Apilable", + "BOL.itemProperty.ranged": "Distancia", + "BOL.itemProperty.weapon": "Arma", + "BOL.itemProperty.reloadable": "Recargable", + "BOL.itemProperty.worn": "Equipada", + "BOL.itemProperty.spell" : "Conjuro", + "BOL.itemProperty.armor" : "Armadura", + "BOL.itemProperty.consumable" : "Consumible", + "BOL.itemProperty.bow" : "Arco", + "BOL.itemProperty.crossbow" : "Ballesta", + "BOL.itemProperty.throwing" : "Arrojadiza", + "BOL.itemProperty.activable" : "Activable", + "BOL.itemProperty.powder" : "Polvo", + "BOL.itemProperty.attackAttribute" : "Ataque (Atributo)", + "BOL.itemProperty.attackAptitude" : "Ataque (Habilidad)", + "BOL.itemProperty.attackModifiers" : "Ataque (Modificadores)", + "BOL.itemProperty.attackReroll1" : "Ataque (Relanzar 1s)", + "BOL.itemProperty.damage" : "Daño", + "BOL.itemProperty.damageModifiers" : "Daño (Modificador)", + "BOL.itemProperty.damageAttribute" : "Daño (Atributo)", + "BOL.itemProperty.damageSpecial" : "Damage (Especial)", + "BOL.itemProperty.damageReroll1" : "Relanzar 1s", + "BOL.itemProperty.range" : "Alcance (en m)", + "BOL.itemProperty.soakFormula": "Absorver (Fórmula)", + "BOL.itemProperty.soakModifiers": "Absorver (Modificador)", + "BOL.itemProperty.soakValue": "Absorver (Valor Defecto)", + "BOL.itemProperty.armorQuality": "Calidad Armadura", + "BOL.itemProperty.blockingMalus" : "Mod. Bloqueo", + "BOL.itemProperty.blockingAttacksBlocked" : "Ataques bloqueados", + "BOL.itemProperty.blocking1Attack" : "Bloquea 1 ataque", + "BOL.itemProperty.blockingAllAttacks" : "Bloquea todos ataques", + "BOL.itemProperty.slot" : "Hueco", + "BOL.itemProperty.reload": "Recarga (Acción)", + "BOL.itemProperty.weaponSize" : "Tamaño Arma", + "BOL.itemProperty.difficulty": "Dificultad", + "BOL.itemProperty.natural": "Arma natural", + "BOL.itemProperty.onlymodifier": "Sólo modificador (ej criatura)", + + "BOL.itemStat.quantity": "Cantidad", + "BOL.itemStat.weight": "Peso", + "BOL.itemStat.price": "Precio", + "BOL.itemStat.range": "Alcance", + "BOL.itemStat.damage": "Daño", + "BOL.itemStat.reload": "Recargar (Acción)", + "BOL.itemStat.soak": "Absorver", + "BOL.itemStat.blocking": "Bloqueo", + "BOL.itemStat.modifiers": "Modificadores", + + "BOL.weaponSize.unarmed" : "Desarmado", + "BOL.weaponSize.improvised" : "Improvisada", + "BOL.weaponSize.light" : "Ligera", + "BOL.weaponSize.medium" : "Mediana", + "BOL.weaponSize.heavy" : "Pesada", + + "BOL.itemModifiers.init": "Mod. (Iniciativa)", + "BOL.itemModifiers.social": "Mod. (Social)", + "BOL.itemModifiers.agility": "Mod. (Agilidad)", + "BOL.itemModifiers.powercost": "Mod. (Coste adicional en PP)", + + "BOL.itemBlocking.malus": "Modificador", + "BOL.itemBlocking.nbAttacksPerRound": "Agilidad", + + "BOL.soakFormula.none" : "-", + "BOL.soakFormula.light" : "Ligero (Cancela d6-3 daño)", + "BOL.soakFormula.medium" : "Mediano (Cancela d6-2 daño)", + "BOL.soakFormula.heavy" : "Pesado (Cancela d6-1 daño)", + + "BOL.armorQuality.none" : "-", + "BOL.armorQuality.light" : "Ligera", + "BOL.armorQuality.lightQ" : "Ligera Calidad", + "BOL.armorQuality.lightSup" : "Ligera Superior", + "BOL.armorQuality.lightLeg" : "Ligera Legendaria", + "BOL.armorQuality.medium" : "Mediana", + "BOL.armorQuality.mediumQ" : "Mediana Calidad", + "BOL.armorQuality.mediumSup" : "Mediana Superior", + "BOL.armorQuality.mediumLeg" : "Mediana Legendaria", + "BOL.armorQuality.heavy" : "Pesada", + "BOL.armorQuality.heavyQ" : "Pesada Calidad", + "BOL.armorQuality.heavySup" : "Pesada Superior", + "BOL.armorQuality.heavyLeg" : "Pesada Legendaria", + + "BOL.equipmentSlots.none" : "-", + "BOL.equipmentSlots.head" : "Cabeza", + "BOL.equipmentSlots.neck" : "Cuello", + "BOL.equipmentSlots.shoulders" : "Ombros", + "BOL.equipmentSlots.body" : "Cuerpo", + "BOL.equipmentSlots.rhand" : "Mano derecha", + "BOL.equipmentSlots.lhand" : "Mano izquierda", + "BOL.equipmentSlots.2hands" : "2 manos", + "BOL.equipmentSlots.rarm" : "Brazo derecho", + "BOL.equipmentSlots.larm" : "Brazo izquierdo", + "BOL.equipmentSlots.chest" : "Pecho", + "BOL.equipmentSlots.belt" : "Cintura", + "BOL.equipmentSlots.legs" : "Piernas", + "BOL.equipmentSlots.feet" : "Pies", + "BOL.equipmentSlots.finder" : "Dedo", + "BOL.equipmentSlots.ear" : "Oreja", + + "BOL.vehicleCategory.mount" : "Montura terrestre", + "BOL.vehicleCategory.flying" : "Montura voladora", + "BOL.vehicleCategory.boat" : "Bote", + "BOL.vehicleCategory.other" : "Otro", + + + "BOL.range.PointBlank": "Quemarropa", + "BOL.range.Short": "Corta", + "BOL.range.Medium": "Media", + "BOL.range.Long": "Larga", + "BOL.range.VeryLong": "Distante", + "BOL.range.Extreme": "Extrema", + "BOL.range.Maximum": "Límite", + + "BOL.notification.MacroMultipleTokensSelected": "¡Has seleccionado varios tokens!", + "BOL.notification.MacroNoActorAvailable": "¡No se pudo marcar el actor como objetivo!", + "BOL.notification.MacroNoTokenSelected": "¡Debes seleccionar un token!", + + "BOL.size.tiny": "Minúsculo", + "BOL.size.verysmall": "Muy pequeño", + "BOL.size.small" : "Pequeño", + "BOL.size.medium" : "Mediano", + "BOL.size.large" : "Grande", + "BOL.size.verylarge": "Muy Grande", + "BOL.size.huge" : "Monstruoso", + "BOL.size.massive" : "Monumental", + "BOL.size.enormous": "Enorme", + "BOL.size.gigantic": "Gigante", + "BOL.size.immense": "Inmenso", + "BOL.size.colossal": "Colosal", + + "BOL.chat.fightactive": "¡Activa la opción de combate {foName} este asalto!", + "BOL.chat.fightunactive": "¡Desactiva la opción de combate {foName} este asalto!", + "BOL.chat.isdead": "¡{name} esta muerto!", + "BOL.chat.epitaph": "¡Guardar el honor de su nombre y su memoria!", + "BOL.chat.vitalityzero": "Vitalidad de {name} es {hp}: ¡va a caer inconsciente!", + "BOL.chat.vitalityheroism": "Puedes gastar 1 Punto Héroe para levantarte en 1 asalto.", + "BOL.chat.vitalityheroismhint": "En este caso, tu vitalidad se incrementa a su máximo dividido por 2.", + "BOL.chat.vitalitydying": "Vitalidad de {name} es {hp}! Se esta muriendo...", + "BOL.chat.vitalitydyingheroism": "Puedes gastar 1 Punto Héroe para Desafiar la Muerte.", + "BOL.chat.alchemytitle": "Receta alquímica: {name}", + "BOL.chat.alchemypoints": "Coste Puntos Creación: {pcCostCurrent}", + "BOL.chat.alchemysuccess": "¡La receta alquímica es un éxito!
Crea el objeto/efecto relevante en el inventario.
El estadio se reinicia.", + "BOL.chat.alchemyfailure": "¡La receta alquímica ha fallado!
El estadio se reinicia.", + "BOL.chat.rolldamage": "Tirada de daño", + "BOL.chat.rolldamage6": "Tirada de daño +6", + "BOL.chat.rolldamage12": "Tirada de daño +12 (1 PH)", + "BOL.chat.damageresult": "Daño {name}: {total}", + "BOL.chat.damagetarget": "Objetivo: {target}", + "BOL.chat.applydamagetotarget": "Aplicar daño al objetivo", + "BOL.chat.fightoption": "Opciones de combate", + "BOL.chat.reroll": "Relanzar (1 PH)", + "BOL.chat.heroicreminder": "Adicionalmente a las acciones abajo puedes: Si gastas 1 Punto Heroe adicional, todos estos efectos pueden doblarse.", + "BOL.chat.toheroic": "Convertir en éxito Asombroso (1 PH)", + "BOL.chat.tolegend": "Convertir en éxito Legendario (1 PH)", + "BOL.chat.hurttitle": "¡{name} va a recibir {damageTotal} daño!", + "BOL.chat.armordefault": "Este ataque atraviesa armadura: la armadura no se utiliza para reducir daño.", + "BOL.chat.witharmor": "Impacto con armadura", + "BOL.chat.withoutarmor": "Impacto sin armadura", + "BOL.chat.shakeoff": "Sacudirse las Heridas (1 PH)", + "BOL.chat.splinteredshield": "Sacrificar Escudo/Arma {name} (1 PH)", + "BOL.chat.nodamage": "Sin daño", + "BOL.chat.damagesummary": "{name} recibe daño", + "BOL.chat.protectvalue": "Protección armadura", + "BOL.chat.noprotectvalue": "¡Sin armadura!", + "BOL.chat.heroreducedamage": "Un Punto de Héroe se ha gastado, para reducir el daño en {total}.", + "BOL.chat.herosplintered": "No recibes daño gracias a sacrificar el escudo/arma {weaponHero.name}. ¡El escudo/arma se ha destruido! y un PH se ha gastado.", + "BOL.chat.finaldamage": "Daño Final: ¡{finalDamage} de daño!", + "BOL.chat.spell": "Conjuro", + "BOL.chat.spellcost": "Coste Puntos Poder", + "BOL.chat.spellremaining": "Puntos Poder restantes", + "BOL.chat.nodamagesummary": "Sin daño ....", + "BOL.chat.damageresume": "{name} recibe heridas ...", + "BOL.chat.fumblemessage": "Si aceptas un fallo calamitoso (DJ escoje consecuencia), puedes ganar 1 Punto Héroe adicional.", + "BOL.chat.rangeinfo": "Disparo de {attackerName} a {defenderName}", + "BOL.chat.rangeweaponinfo": "Arma: {weaponName} - Alcance base {weaponRange}", + "BOL.chat.rangeout": "Mod: Fuera de alcance", + "BOL.chat.range0": "Mod: Quemarropa (+1)", + "BOL.chat.range1": "Mod: Alcance Corto (0)", + "BOL.chat.range2": "Mod: Alcance Medio (-1)", + "BOL.chat.range3": "Mod: Alcance Largo (-2)", + "BOL.chat.range4": "Mod: Alcance Distante (-4)", + "BOL.chat.range5": "Mod: Alcance Extremo (-6)", + "BOL.chat.range6": "Mod: Alcance Límite (-8)", + "BOL.chat.rangeprefix": "Distancia calculada: ", + "BOL.chat.rangevisible": "Linea de visión limpia entre tokens.", + "BOL.chat.rangenotvisible": "Linea de visión bloqueada entre tokens.", + "BOL.chat.rangetitle": "Información DJ", + "BOL.chat.weaponreroll1": "Recordatorio, este arma vuelve a tirar los 1s en daño.", + "BOL.chat.rollbougette": "Tirada moneda", + "BOL.chat.bougettesuccess": "¡Tus fondos monetarios no varían!", + "BOL.chat.bougettefailure": "Has gastado demasiado dinero, tu balance se decrementa un nivel...", + "BOL.chat.initiative": "Rango iniciativa (10 a 1)", + "BOL.chat.horoscope": "Horóscopo", + "BOL.chat.horoscopepoints": "Coste: {points} Puntos Astrología", + "BOL.chat.horoscopeminorsuccess": "Éxito horóscopo menor: cambia el nombre del horóscopo en la hoja. Te beneficias de 1 Dado Ventaja en la situación.", + "BOL.chat.horoscopeminorfailure": "Fallo horóscopo menor: cambia el nombre del horóscopo en la hoja. Sufres 1 Dado Desventaja en la situación.", + "BOL.chat.horoscopemajorsuccess": "Éxito horóscopo mayor: {horoscopeName} consigue 1 Punto Héroe en esta aventura. El punto ha sido añadido automáticamente.", + "BOL.chat.horoscopemajorfailure": "Fallo horóscopo mayor: {horoscopeName} pierde 1 Punto Héroe en esta aventura. El punto ha sido reducido automáticamente.", + "BOL.chat.horoscopemajorgroupsuccess": "Éxito en tu grupo de horóscopo mayor. Tu y tus compañeros ganáis {careerBonus} Dado Ventaja durante esta aventura.", + "BOL.chat.horoscopemajorgroupfailure": "Fallo en tu grupo de horóscopo mayor. Tu y tus compañeros sufrís {careerBonus} Dado Desventaja durante esta aventura.", + "BOL.chat.usedhoroscope": "Se ha utilizado Horóscopo", + "BOL.chat.horoscopedeleted": "Los horóscopos utilizados son borrados automáticamente.", + "BOL.chat.criticaloptions": "¡Éxito Asombroso! Selecciona 1 opción:", + "BOL.chat.criticalcarnage": "Carnicería: ganas 1 ataque adicional. Este segundo ataque no se puede beneficiar de Puntos Héroe/Villano.", + "BOL.chat.criticalplus6": "Golpe Devastador: añade +6 al daño causado (botón abajo).", + "BOL.chat.criticalprecise": "Golpe Preciso: impactas y dañas a tu oponente. Describe lo que haces (DJ de acuerdo), tu oponente sufre 1 Dado Desventaja en acciones relevantes.", + "BOL.chat.criticalunarm": "Desarme: si su oponente lleva algún arma, puede decidir desarmarlo en lugar de hacerle daño.", + "BOL.chat.criticalrabble": "Asesino de Chusma: si luchas contra Chusma, el daño resultante se convierte en el número de enemigos que derrotas.", + "BOL.chat.criticalpush": "Derribado: si el tamaño lo permite, empujas oponente al suelo. Sufre un 1 Dado Desventaja en todas sus acciones el siguiente asalto.", + "BOL.chat.criticalup": "Transforma en Legendario: si gastas 1 Punto Héroe/Villano transformas el éxito Asombroso en Legendario. Selecciona 2 opciones de la lista.", + "BOL.chat.criticalinfo": "¡Esto es un éxito Asombroso o Legendario! Escoge tus opciones y efectos", + "BOL.chat.criticalbuttonjournal": "Éxito Asombroso/Legendario", + + "BOL.dialog.soeasy": "Demasiado fácil (+4)", + "BOL.dialog.veryeasy": "Muy fácil (+2)", + "BOL.dialog.easy": "Fácil (+1)", + "BOL.dialog.moderate": "Moderado (0)", + "BOL.dialog.hard": "Difícil (-1)", + "BOL.dialog.tough": "Duro (-2)", + "BOL.dialog.demanding": "Exigente (-4)", + "BOL.dialog.formidable": "Formidable (-6)", + "BOL.dialog.heroic": "Heroica (-8)", + "BOL.dialog.mythic": "Mítica (-10)", + "BOL.dialog.divine": "Divina (-12)", + + "BOL.dialog.pointblank": "Quemarropa (+1)", + "BOL.dialog.close": "Corta (0)", + "BOL.dialog.medium": "Media (-1))", + "BOL.dialog.long": "Larga (-2)", + "BOL.dialog.distant": "Distante (-4)", + "BOL.dialog.extreme": "Extrema (-6)", + "BOL.dialog.utmost": "Límite (-8)", + + "BOL.ui.name": "Nombre", + "BOL.ui.xp": "Experiencia", + "BOL.ui.xpspent": "Consumida", + "BOL.ui.xptotal": "Total", + "BOL.ui.biosize": "Tamaño", + "BOL.ui.bioweight": "Peso", + "BOL.ui.bioage": "Edad", + "BOL.ui.biohair": "Pelo", + "BOL.ui.bioeyes": "Ojos", + "BOL.ui.biosigns": "Marcas", + "BOL.ui.biodescription": "Descripción", + "BOL.ui.bionotes": "Notas", + + "BOL.chat.welcome1": "Bienvenidos a Bárbaros de Lemuria (Ludospherik)", + "BOL.chat.welcome2": "Para jugar es necesario usar el manual, que lo podéis conseguir aquí: https://www.ludospherik-editions.com/en_gb/", + "BOL.chat.welcome3": "Los mapas incluidos tienen autorización de Guillaume Tavernier y Ludospherik. ¡Nuestro agradecimiento!", + "BOL.chat.welcome4": "Todo el soporte para el sistema es a través del servidor Discord: https://discord.gg/pPSDNJk", + "BOL.chat.welcome5": "¡Buena partida en Lemuria!", + "BOL.chat.welcome6": "", + + "BOL.settings.rollArmor": "Tiradas de armadura", + "BOL.settings.rollArmorTooltip": "Tiradas de armadura, si no esta activo usará el valor fijo", + "BOL.settings.useBougette": "Utilizar Bougette (regla casera francesa)", + "BOL.settings.useBougetteTooltip": "Utilizar valor Bougette (Monedero), descrito en Annales Lemurienne de LeRatierBretonnien (https://www.lahiette.com/leratierbretonnien/)", + "BOL.settings.removeDead": "Automáticamente eliminar PNJs muertos al final del asalto", + "BOL.settings.removeDeadTooltip": "Automáticamente eliminar PNJs, cuando la Vitalidad es menor de 0 al final de cada asalto", + "BOL.settings.diceFormula": "Fórmula de Dados", + "BOL.settings.diceFormulaTooltip": "Fórmula general de dados (2d6 por defecto)", + "BOL.settings.diceSuccessValue" : "Valor éxito", + "BOL.settings.diceSuccessValueTooltip": "Valor del umbral para el éxito (9 por defecto en 2d6)", + "BOL.settings.diceCriticalValue" : "Valor éxito crítico", + "BOL.settings.diceCriticalValueTooltip": "Valor del umbral mínimo para el éxito crítico (12 por defecto en 2d6)", + "BOL.settings.diceCriticalFailure" : "Valor fallo crítico", + "BOL.settings.diceCriticalFailureTooltip": "Valor del umbral máximo para el fallo crítico (2 por defecto en 2d6)", + "BOL.settings.defaultLogoActorSheetPath" : "Logo para la Hoja", + "BOL.settings.defaultLogoPathActorSheetTooltip": "Hubicación del logo para la hoja del Actor (346x200, por defecto: /systems/bol/ui/logo.webp)", + "BOL.settings.defaultLogoTopLeftPath" : "Logo esquina superior izquierda", + "BOL.settings.defaultLogoTopLeftPathTooltip": "Hubicación logo ventana principal superior izquierda (718x416, por defecto: /systems/bol/ui/logo2.webp)" +} \ No newline at end of file diff --git a/lang/fr.json b/lang/fr.json index 6b501d4..3173101 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -4,7 +4,8 @@ "character": "Personnage", "encounter": "PNJ", "npc": "PNJ", - "vehicle": "Véhicule" + "vehicle": "Véhicule", + "horde": "Horde" }, "Item": { "item": "Objet", @@ -240,6 +241,11 @@ "BOL.ui.newNaturalProtection": "Protection naturelle", "BOL.ui.createNaturalWeapon": "Créer une arme naturelle", "BOL.ui.createNaturalProtection": "Créer une protection naturelle", + "BOL.ui.hordeSize": "Taille de la horde", + "BOL.ui.hordeAttack": "Attaque de Horde", + "BOL.ui.hordeName": "Nom de la Horde", + "BOL.ui.hordeHP": "Vitalité (1 membre)", + "BOL.ui.hordehp": "Vitalité (total)", "BOL.featureCategory.origins": "Origines", "BOL.featureCategory.races": "Races", @@ -495,12 +501,14 @@ "BOL.chat.rolldamage": "Lancer les dommages", "BOL.chat.rolldamage6": "Lancer les dommages +6", "BOL.chat.rolldamage12": "Dommages +12 (1 Pt. d'Heroisme)", + "BOL.chat.rolldamage12Legend": "Dommages +12", "BOL.chat.damageresult": "Dommages de {name} : {total}", "BOL.chat.damagetarget": "Cible : {target}", "BOL.chat.applydamagetotarget": "Appliquer les dommages à la cible", "BOL.chat.fightoption": "Option de combat", "BOL.chat.reroll": "Relancer (1 P. Heroisme)", "BOL.chat.heroicreminder": "En plus des actions indiquées sur les boutons ci-dessous, vous pouvez : Si vous dépensez un Point d'Héroisme en plus, tout ces effets peuvent être doublés", + "BOL.chat.legendaryreminder": "En plus des actions indiquées sur les boutons ci-dessous, vous pouvez effectuer 2 actions parmis: ", "BOL.chat.toheroic": "Transformer en succés Héroïque (1 P. Héroisme/Vilainie)", "BOL.chat.tolegend": "Transformer en succes Légendaire (1 P. Heroisme/Vilainie)", "BOL.chat.hurttitle": "{name} va encaisser {damageTotal} dégats !", @@ -558,9 +566,10 @@ "BOL.chat.criticalrabble": "Massacrer la piétaille : Si vous combattez de la Piétaille, les résultats des dommages indiquent le nombre d'adversaires mis hors de combat.", "BOL.chat.criticalpush": "Renversement : Si la taille le permet, vous poussez votre adversaire au sol, il souffrira d'1 Dé de Malus pour toutes ses actions au round suivant.", "BOL.chat.criticalup": "Transformer en Légendaire : En dépensant 1 point d'Héroisme/Vilainie, vous pouvez transformer ce Succès Héroïque en Légendaire, qui vous permet de prendre 2 options dans la liste ci-dessus (cf. bouton pour un +12 aux dommages par exemple).", - "BOL.chat.criticalinfo": "C'est un succès Héroïque ou Légendaire ! Choisissez vos options et effets !", + "BOL.chat.criticalinfo": "C'est un succès Héroïque ! Choisissez vos options et effets !", + "BOL.chat.criticallegendaryinfo": "C'est un succès Légendaire ! Choisissez vos options et effets !", "BOL.chat.criticalbuttonjournal": "Succès Héroïque/Légendaire", - + "BOL.chat.losshp": "{name} a perdu {lossHP} points de Vitalité. Si il se repose quelques minutes, il peut récupérer {recupHP} points de Vitalité.", "BOL.chat.applyrecup": "Récupérer pendant quelques minutes (+{recupHP} Vitalité)", "BOL.chat.inforecup": "{name} vient de récupérer {recupHP} points de Vitalité après quelques minutes de repos.", diff --git a/module/actor/actor.js b/module/actor/actor.js index f726fe9..b042a83 100644 --- a/module/actor/actor.js +++ b/module/actor/actor.js @@ -7,6 +7,35 @@ import { BoLUtility } from "../system/bol-utility.js"; */ export class BoLActor extends Actor { + static async create(data, options) { + + // Case of compendium global import + if (data instanceof Array) { + return super.create(data, options); + } + // If the created actor has items (only applicable to duplicated actors) bypass the new actor creation logic + if (data.items) { + let actor = super.create(data, options); + return actor; + } + + if (data.type == 'horde') { + let weapon = { + name: game.i18n.localize("BOL.ui.hordeAttack"), type: "item", + img: "ui/icons/attaque_melee.webp", + system: foundry.utils.duplicate(game.bol.config.defaultNaturalWeapon) + } + weapon.system.properties.attackModifiers = 1 + weapon.system.properties.damage = "1d6M" + data.items = [ weapon ] + + data.img = "systems/bol/ui/icons/icon-horde-token.webp" + data.prototypeToken = { texture: "systems/bol/ui/icons/icon-horde-token.webp" } + } + + return super.create(data, options); + } + /** @override */ prepareData() { @@ -18,9 +47,31 @@ export class BoLActor extends Actor { this.chartype = 'tough' this.villainy = true } + if (this.type == "horde") { + let weapon = this.items.find(i => i.type === "item" && i.system.subtype === "weapon") + // Check if the horde attack is inline with the hordesize + if (weapon?.system?.properties?.attackModifiers != this.system.hordesize) { + this.updateEmbeddedDocuments('Item', [{ _id: weapon.id, 'system.properties.attackModifiers': this.system.hordesize }]) + } + } + super.prepareData() } - + + /* -------------------------------------------- */ + async _onCreateOperation(documents, operation, user) { + await super._onCreateOperation(documents, operation, user); + } + + /* -------------------------------------------- */ + getTokenSizeFromHordeSize(hordeSize) { + hordeSize = hordeSize || this.system.hordesize + // If size > 50 then max is 50 + let size = Math.min(hordeSize, 20) + // Compute the size of the token from 1 to 5 + let tokenSize = Math.max((size / 4), 1) // Never below 1 + return tokenSize + } /* -------------------------------------------- */ async _preCreate(data, options, user) { @@ -39,7 +90,7 @@ export class BoLActor extends Actor { if (this.type === 'character') { return true } - return (this.type === 'encounter' && this.chartype == "adversary") + return (this.type === 'encounter' && this.chartype == "adversary") } /* -------------------------------------------- */ @@ -205,7 +256,7 @@ export class BoLActor extends Actor { /* -------------------------------------------- */ addXPLog(type, name, cost, value) { let xplog = { - name: "XP : "+game.i18n.localize(type), type: "feature", + name: "XP : " + game.i18n.localize(type), type: "feature", img: "icons/magic/symbols/chevron-elipse-circle-blue.webp", system: { subtype: "xplog", properties: { @@ -264,7 +315,7 @@ export class BoLActor extends Actor { xp.spent += nextXP this.update({ [`system.xp`]: xp }) this.updateEmbeddedDocuments('Item', [{ _id: career._id, 'system.rank': career.system.rank + 1 }]) - this.addXPLog("career", career.name, nextXP, career.system.rank+1) + this.addXPLog("career", career.name, nextXP, career.system.rank + 1) } else { ui.notifications.warn("Pas assez de points d'expérience !") } @@ -419,7 +470,7 @@ export class BoLActor extends Actor { } isSorcerer() { - return (this.careers.find(item => item.system.properties.sorcerer )) + return (this.careers.find(item => item.system.properties.sorcerer)) } isAlchemist() { return (this.careers.find(item => item.system.properties.alchemist)) @@ -612,7 +663,7 @@ export class BoLActor extends Actor { } /*-------------------------------------------- */ getSorcererBonus() { - let sorcerer = this.careers.find(item => item.system.properties.sorcerer ) + let sorcerer = this.careers.find(item => item.system.properties.sorcerer) if (sorcerer) { return sorcerer.system.rank } @@ -799,7 +850,7 @@ export class BoLActor extends Actor { } if (this.system.resources.hp.value < -5 && !dead) { await this.createEmbeddedDocuments("ActiveEffect", [ - { name: game.i18n.localize('EFFECT.StatusDead'), icon: 'icons/svg/skull.svg', statuses: 'dead' } + { name: game.i18n.localize('EFFECT.StatusDead'), icon: 'icons/svg/skull.svg', statuses: 'dead' } ]) } ChatMessage.create({ @@ -896,6 +947,34 @@ export class BoLActor extends Actor { if (data.system?.resources) { this.checkNumeric(data.system.resources) } + // Apply changes in Horde size to Token width/height + if (this.type == "horde" ) { + if (data?.system?.hordesize) { // If horde size is changed} + let newHP = data.system.hordesize * this.system.hordebasehp + if (newHP != this.system.resources.hp.value) { + data.system.resources = { hp: { value: newHP, max: newHP } } // Update HP + } + let tokenSize = this.getTokenSizeFromHordeSize(data?.system?.hordesize) + if (this.isToken && (tokenSize !== this.token.width)) { + this.token.update({ width: tokenSize, height: tokenSize }) + } else { + if (tokenSize && (tokenSize !== this.prototypeToken.width)) { + if (!foundry.utils.hasProperty(data, "prototypeToken.width")) { + data.prototypeToken ||= {}; + data.prototypeToken.height = tokenSize; + data.prototypeToken.width = tokenSize; + } + } + } + } + if (data?.system?.hordebasehp) { + let newHP = this.system.hordesize * data.system.hordebasehp + if (newHP != this.system.resources.hp.value) { + data.system.resources = { hp: { value : newHP, max: newHP} } + } + } + } + super._preUpdate(data, options, userId) } @@ -966,8 +1045,15 @@ export class BoLActor extends Actor { } /*-------------------------------------------- */ async sufferDamage(damage) { + let updates = {} let newHP = this.system.resources.hp.value - damage - await this.update({ 'system.resources.hp.value': newHP }) + updates['system.resources.hp.value'] = newHP + if (this.type == "horde") { + let newSize = Math.ceil(newHP / this.system.hordebasehp) + updates['system.hordesize'] = newSize + } + await this.update(updates) + } /* -------------------------------------------- */ diff --git a/module/actor/horde-sheet.js b/module/actor/horde-sheet.js new file mode 100644 index 0000000..a0b9816 --- /dev/null +++ b/module/actor/horde-sheet.js @@ -0,0 +1,217 @@ +/** + * Extend the basic ActorSheet with some very simple modifications + * @extends {ActorSheet} + */ +import { BoLRoll } from "../controllers/bol-rolls.js"; +import { BoLUtility } from "../system/bol-utility.js"; + +export class BoLHordeSheet extends ActorSheet { + + /** @override */ + static get defaultOptions() { + return foundry.utils.mergeObject(super.defaultOptions, { + classes: ["bol", "sheet", "actor"], + template: "systems/bol/templates/actor/horde-sheet.hbs", + width: 860, + height: 600, + dragDrop: [{ dragSelector: ".items-list .item", dropSelector: null }], + tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "stats" }] + }); + } + + /* -------------------------------------------- */ + + /** @override */ + activateListeners(html) { + super.activateListeners(html); + + function onLoad() { + let logoSheet = BoLUtility.getLogoActorSheet() + $(".bol-actor-form").css("backgroundImage",`url(${logoSheet})`) + } + // Setup everything onload + $(function () { onLoad(); }); + + // Everything below here is only needed if the sheet is editable + if (!this.options.editable) return; + + // Add Inventory Item + html.find('.item-create').click(this._onItemCreate.bind(this)); + + // Update Inventory Item + html.find('.item-edit').click(ev => { + const li = $(ev.currentTarget).parents(".item"); + const item = this.actor.items.get(li.data("itemId")); + item.sheet.render(true); + }) + // Equip/Unequip item + html.find('.item-equip').click(this._onToggleEquip.bind(this)); + + html.find('.create_item').click(ev => { + this.actor.createEmbeddedDocuments('Item', [{ name: "Nouvel Equipement", type: "item" }], { renderSheet: true }); + }); + + // Incr./Decr. career ranks + html.find(".inc-dec-btns").click((ev) => { + const li = $(ev.currentTarget).parents(".item"); + if (li) { + const item = this.actor.items.get(li.data("itemId")); + if (item) { + const dataset = ev.currentTarget.dataset; + const operator = dataset.operator; + const target = dataset.target; + const incr = parseInt(dataset.incr) + const min = parseInt(dataset.min) + const max = parseInt(dataset.max) || 10000 + let value = eval("item." + target) + value = value || 0 + //console.log("IncDec", item, target, value, operator, min, max) + if (operator === "minus") { + if (value >= min + incr) value -= incr; + else value = min; + } + if (operator === "plus") { + if (value <= max - incr) value += incr; + else value = max; + } + let update = { [`${target}`]: value }; + item.update(update); + } + } + }); + + + // Delete Inventory Item + html.find('.item-delete').click(ev => { + Dialog.confirm({ + title: "Suppression", + content: `Vous êtes sûr de vouloir supprimer cet item ?`, + yes: () => { + const li = $(ev.currentTarget).parents(".item"); + this.actor.deleteEmbeddedDocuments("Item", [li.data("itemId")]) + li.slideUp(200, () => this.render(false)); + }, + no: () => { }, + defaultYes: false, + }); + }); + + // Rollable abilities. + html.find('.rollable').click(this._onRoll.bind(this)); + + } + + /* -------------------------------------------- */ + + /** @override */ + async getData(options) { + const data = super.getData(options) + let formData = foundry.utils.duplicate(data) + + formData.config = game.bol.config + formData.name = this.actor.name + formData.img = this.actor.img + formData.system = foundry.utils.duplicate(this.actor.system) + formData.isGM = game.user.isGM + formData.options = this.options + formData.owner = this.document.isOwner + formData.editScore = this.options.editScore + formData.description = await TextEditor.enrichHTML(this.actor.system.description, {async: true}) + + formData.isGM = game.user.isGM + + console.log("HORDE", formData) + return formData; + } + /* -------------------------------------------- */ + + /** + * Handle creating a new Owned Item for the actor using initial data defined in the HTML dataset + * @param {Event} event The originating click event + * @private + */ + _onItemCreate(event) { + event.preventDefault(); + const header = event.currentTarget; + // Get the type of item to create. + const type = header.dataset.type; + // Grab any data associated with this control. + const data = foundry.utils.duplicate(header.dataset); + // Initialize a default name. + const name = `New ${type.capitalize()}`; + // Prepare the item object. + const itemData = { + name: name, + type: type, + data: data + }; + // Remove the type from the dataset since it's in the itemData.type prop. + delete itemData.data["type"]; + + // Finally, create the item! + return this.actor.createEmbeddedDocuments("Item", [itemData]); + } + + _onToggleEquip(event) { + event.preventDefault(); + const li = $(event.currentTarget).closest(".item"); + const item = this.actor.items.get(li.data("itemId")); + return this.actor.toggleEquipItem(item); + } + + /** + * Handle clickable rolls. + * @param {Event} event The originating click event + * @private + */ + _onRoll(event) { + event.preventDefault(); + const element = event.currentTarget + const dataset = element.dataset + const rollType = dataset.rollType + const li = $(event.currentTarget).closest(".item") + switch (rollType) { + case "attribute": + BoLRoll.attributeCheck(this.actor, dataset.key, event) + break; + case "aptitude": + BoLRoll.aptitudeCheck(this.actor, dataset.key, event) + break; + case "weapon": + BoLRoll.weaponCheck(this.actor, event) + break; + case "spell": + BoLRoll.spellCheck(this.actor, event) + break; + case "alchemy": + BoLRoll.alchemyCheck(this.actor, event) + break; + case "protection": + this.actor.rollProtection(li.data("item-id")) + break; + case "damage": + this.actor.rollWeaponDamage(li.data("item-id")) + break; + case "aptitudexp": + this.actor.incAptitudeXP(dataset.key) + break; + case "attributexp": + this.actor.incAttributeXP(dataset.key) + break; + case "careerxp": + this.actor.incCareerXP( li.data("item-id")) + break; + + default: break; + } + } + + /** @override */ + setPosition(options = {}) { + const position = super.setPosition(options); + const sheetBody = this.element.find(".sheet-body"); + const bodyHeight = position.height - 192; + sheetBody.css("height", bodyHeight); + return position; + } +} diff --git a/module/bol.js b/module/bol.js index c0b3b0f..420e997 100644 --- a/module/bol.js +++ b/module/bol.js @@ -3,6 +3,7 @@ import { BoLActor } from "./actor/actor.js" import { BoLActorSheet } from "./actor/actor-sheet.js" import { BoLVehicleSheet } from "./actor/vehicle-sheet.js" +import { BoLHordeSheet } from "./actor/horde-sheet.js" import { BoLItem } from "./item/item.js" import { BoLItemSheet } from "./item/item-sheet.js" import { System, BOL } from "./system/config.js" @@ -54,6 +55,7 @@ Hooks.once('init', async function () { Actors.unregisterSheet("core", ActorSheet); Actors.registerSheet("bol", BoLActorSheet, { types: ["character", "encounter"], makeDefault: true }) Actors.registerSheet("bol", BoLVehicleSheet, { types: ["vehicle"], makeDefault: true }) + Actors.registerSheet("bol", BoLHordeSheet, { types: ["horde"], makeDefault: true }) Items.unregisterSheet("core", ItemSheet); Items.registerSheet("bol", BoLItemSheet, { makeDefault: true }); @@ -81,7 +83,7 @@ function welcomeMessage() { ChatMessage.create({ user: game.user.id, whisper: [game.user.id], - content: `
+ content: `
` + game.i18n.localize("BOL.chat.welcome1") + `

` + game.i18n.localize("BOL.chat.welcome2") + "

" + game.i18n.localize("BOL.chat.welcome3") + "

" + diff --git a/module/controllers/bol-rolls.js b/module/controllers/bol-rolls.js index e886261..d585cea 100644 --- a/module/controllers/bol-rolls.js +++ b/module/controllers/bol-rolls.js @@ -661,7 +661,7 @@ export class BoLDefaultRoll { this.rollData.initiativeRank = actor.getInitiativeRank(this.rollData) if (this.rollData.combatData) { // If combatData present let combat = game.combats.get(this.rollData.combatData.combatId) - console.log("SET INIT!!!!!", this.rollData.initiativeRank) + //console.log("SET INIT!!!!!", this.rollData.initiativeRank) combat.setInitiative(this.rollData.combatData.combatantId, this.rollData.initiativeRank) } } @@ -777,8 +777,12 @@ export class BoLDefaultRoll { if (this.rollData.damageMode == 'damage-plus-6') { bonusDmg = 6 } - if (this.rollData.damageMode == 'damage-plus-12') { + if (this.rollData.damageMode == 'damage-plus-12' || this.rollData.damageMode == 'damage-plus-12-legend') { bonusDmg = 12 + if (this.rollData.damageMode == 'damage-plus-12') { // In this case, the hero point is used (ie shortcut) + let actor = BoLUtility.getActorFromRollData(this.rollData) + actor.subHeroPoints(1) + } } let attrDamageValue = this.getDamageAttributeValue(this.rollData.weapon.system.properties.damageAttribute) let weaponFormula = BoLUtility.getDamageFormula(this.rollData.weapon.system, this.rollData.fightOption) diff --git a/module/system/bol-combat.js b/module/system/bol-combat.js index fe37e33..1c3064d 100644 --- a/module/system/bol-combat.js +++ b/module/system/bol-combat.js @@ -21,12 +21,12 @@ export class BoLCombatManager extends Combat { // Structure input data ids = typeof ids === "string" ? [ids] : ids; // Get initiative malus from tough/adversary - let malusInit = 0 + let malusInit = 0 for (let combatant of this.combatants) { malusInit = Math.max(malusInit, combatant.actor.getInitiativeMalus()) } // calculate initiative - for (let cId = 0; cId < ids.length; cId++) { + for (let cId = 0; cId < ids.length; cId++) { const combatant = this.combatants.get(ids[cId]) let fvttInit = combatant.actor.getInitiativeRank(false, true, { combatId: this.id, combatantId: combatant.id, malusInit }) fvttInit += (cId / 100) @@ -39,17 +39,25 @@ export class BoLCombatManager extends Combat { if (game.user.isGM) { let combatants = this.combatants.contents let autoRemoveDead = game.settings.get("bol", "auto-remove-dead") // Optionnal auto-removal of dead char. + let updates = [] for (let c of combatants) { - //let actor = game.actors.get(c.actorId) + if (c.actor.type == "horde") { + let actor = game.actors.get(c.actorId) + updates.push({ _id: c.id, name: actor.name + " (" + actor.system.hordesize + ")" }) + } c.actor.clearRoundModifiers() let toRemove = [] - if (autoRemoveDead && c.actor.type == "encounter" && (c.actor.system.chartype == "tough" || c.actor.system.chartype == "creature" || c.actor.system.chartype == "base") && c.actor.system.resources.hp.value <= 0) { + if (autoRemoveDead && c.actor.type == "encounter" && + (c.actor.system.chartype == "tough" || c.actor.system.chartype == "creature" || c.actor.system.chartype == "base") && c.actor.system.resources.hp.value <= 0) { toRemove.push(c.id || c._id) } //console.log("REM", autoRemoveDead, toRemove, c.actor) if (toRemove.length > 0) { this.deleteEmbeddedDocuments('Combatant', toRemove) } + if (updates.length > 0) { + this.updateEmbeddedDocuments('Combatant', updates) + } } } super.nextRound() @@ -58,11 +66,19 @@ export class BoLCombatManager extends Combat { /************************************************************************************/ startCombat() { if (game.user.isGM) { + let updates = [] let combatants = this.combatants.contents for (let c of combatants) { let actor = game.actors.get(c.actorId) actor.storeVitaliteCombat() + if (c.actor.type == "horde") { + let actor = game.actors.get(c.actorId) + updates.push({ _id: c.id, name: actor.name + " (" + actor.system.hordesize + ")" }) + } } + if (updates.length > 0) { + this.updateEmbeddedDocuments('Combatant', updates) + } } return super.startCombat() } diff --git a/module/system/bol-utility.js b/module/system/bol-utility.js index 2780216..143b197 100644 --- a/module/system/bol-utility.js +++ b/module/system/bol-utility.js @@ -238,7 +238,7 @@ export class BoLUtility { renderTemplate('systems/bol/templates/item/post-item.hbs', chatData).then(html => { let chatOptions = BoLUtility.chatDataSetup(html); - ChatMessage.create(chatOptions, "selfroll") + ChatMessage.create(chatOptions) }); } /* -------------------------------------------- */ diff --git a/module/system/config.js b/module/system/config.js index 6ac5f1c..8b57779 100644 --- a/module/system/config.js +++ b/module/system/config.js @@ -555,7 +555,50 @@ BOL.defaultNaturalWeapon = { "attackModifiers": 1, "weaponSize": "unarmed", "damage": "d6B", - "damageAttribute": "vigor", + "damageAttribute": "", + "damageModifiers": null, + "damageMultiplier": "1", + "damageReroll1": false + }, + "quantity": 1, + "weight": 0, + "price": 0, + "worn": false +} + +BOL.defaultHordeAttack = { + "category": "equipment", + "subtype": "weapon", + "description": "", + "properties": { + "ranged": false, + "melee": true, + "spell": false, + "protection": false, + "weapon": true, + "armor": false, + "helm": false, + "shield": false, + "equipable": false, + "consumable": false, + "magical": false, + "2H": false, + "reloadable": false, + "bow": false, + "crossbow": false, + "throwing": false, + "stackable": false, + "natural": true, + "concealable": false, + "ignoreshield": false, + "attackBonusDice": false, + "onlymodifier": true, + "attackAttribute": "vigor", + "attackAptitude": "melee", + "attackModifiers": 1, + "weaponSize": "unarmed", + "damage": "d6M", + "damageAttribute": "", "damageModifiers": null, "damageMultiplier": "1", "damageReroll1": false diff --git a/module/system/templates.js b/module/system/templates.js index 7303b98..d7a9f25 100644 --- a/module/system/templates.js +++ b/module/system/templates.js @@ -22,6 +22,7 @@ export const preloadHandlebarsTemplates = async function () { "systems/bol/templates/actor/parts/tabs/vehicle-stats.hbs", "systems/bol/templates/actor/parts/tabs/vehicle-description.hbs", "systems/bol/templates/actor/parts/tabs/vehicle-weapons.hbs", + "systems/bol/templates/actor/parts/tabs/horde-description.hbs", // ITEMS "systems/bol/templates/item/parts/item-header.hbs", "systems/bol/templates/item/parts/properties/feature-properties.hbs", diff --git a/packs/aides-de-jeu/000317.log b/packs/aides-de-jeu/000377.log similarity index 100% rename from packs/aides-de-jeu/000317.log rename to packs/aides-de-jeu/000377.log diff --git a/packs/aides-de-jeu/CURRENT b/packs/aides-de-jeu/CURRENT index 073c26f..741abc7 100644 --- a/packs/aides-de-jeu/CURRENT +++ b/packs/aides-de-jeu/CURRENT @@ -1 +1 @@ -MANIFEST-000315 +MANIFEST-000375 diff --git a/packs/aides-de-jeu/LOG b/packs/aides-de-jeu/LOG index 20675d5..e9e63bb 100644 --- a/packs/aides-de-jeu/LOG +++ b/packs/aides-de-jeu/LOG @@ -1,8 +1,8 @@ -2024/09/04-08:29:45.600289 7f80f3e006c0 Recovering log #313 -2024/09/04-08:29:45.624187 7f80f3e006c0 Delete type=3 #311 -2024/09/04-08:29:45.624335 7f80f3e006c0 Delete type=0 #313 -2024/09/04-08:55:35.075489 7f80f10006c0 Level-0 table #318: started -2024/09/04-08:55:35.075528 7f80f10006c0 Level-0 table #318: 0 bytes OK -2024/09/04-08:55:35.081858 7f80f10006c0 Delete type=0 #316 -2024/09/04-08:55:35.082117 7f80f10006c0 Manual compaction at level-0 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end) -2024/09/04-08:55:35.082171 7f80f10006c0 Manual compaction at level-1 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end) +2024/09/05-08:22:41.538151 7f80f20006c0 Recovering log #373 +2024/09/05-08:22:41.600422 7f80f20006c0 Delete type=3 #371 +2024/09/05-08:22:41.600521 7f80f20006c0 Delete type=0 #373 +2024/09/05-08:33:29.426232 7f80f10006c0 Level-0 table #378: started +2024/09/05-08:33:29.426300 7f80f10006c0 Level-0 table #378: 0 bytes OK +2024/09/05-08:33:29.452722 7f80f10006c0 Delete type=0 #376 +2024/09/05-08:33:29.488467 7f80f10006c0 Manual compaction at level-0 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end) +2024/09/05-08:33:29.488527 7f80f10006c0 Manual compaction at level-1 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end) diff --git a/packs/aides-de-jeu/LOG.old b/packs/aides-de-jeu/LOG.old index 1f95a3d..59affa2 100644 --- a/packs/aides-de-jeu/LOG.old +++ b/packs/aides-de-jeu/LOG.old @@ -1,8 +1,8 @@ -2024/09/03-23:57:02.404112 7f80f3e006c0 Recovering log #309 -2024/09/03-23:57:02.504332 7f80f3e006c0 Delete type=3 #307 -2024/09/03-23:57:02.504411 7f80f3e006c0 Delete type=0 #309 -2024/09/04-00:02:12.553825 7f80f10006c0 Level-0 table #314: started -2024/09/04-00:02:12.553904 7f80f10006c0 Level-0 table #314: 0 bytes OK -2024/09/04-00:02:12.560122 7f80f10006c0 Delete type=0 #312 -2024/09/04-00:02:12.566679 7f80f10006c0 Manual compaction at level-0 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end) -2024/09/04-00:02:12.566727 7f80f10006c0 Manual compaction at level-1 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end) +2024/09/05-08:21:46.861488 7f80f3e006c0 Recovering log #369 +2024/09/05-08:21:46.915029 7f80f3e006c0 Delete type=3 #367 +2024/09/05-08:21:46.915121 7f80f3e006c0 Delete type=0 #369 +2024/09/05-08:22:27.102597 7f80f10006c0 Level-0 table #374: started +2024/09/05-08:22:27.102637 7f80f10006c0 Level-0 table #374: 0 bytes OK +2024/09/05-08:22:27.139446 7f80f10006c0 Delete type=0 #372 +2024/09/05-08:22:27.173923 7f80f10006c0 Manual compaction at level-0 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end) +2024/09/05-08:22:27.173983 7f80f10006c0 Manual compaction at level-1 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end) diff --git a/packs/aides-de-jeu/MANIFEST-000315 b/packs/aides-de-jeu/MANIFEST-000375 similarity index 84% rename from packs/aides-de-jeu/MANIFEST-000315 rename to packs/aides-de-jeu/MANIFEST-000375 index a9b418cd4eb798c2e04034e7526854ff2765aaaa..7e34b597120458b8cbb24cccff2909b633d032b0 100644 GIT binary patch delta 43 tcmaFD_=Iu70hO1*XSQ%NFf#pM;$&d{$;7gQ@dB6WKaj{zkjQV42mn{b4Wj@6 delta 43 tcmaFD_=Iu70hO!I9^T<*U}W0E#L2+Cmx*NuxR!B3w^HI7*(fdsMy6RzoD9sfnOG#kdI}$b1ZIN-<^lx(;NuB0 delta 41 scmZ3>xR!B3w~`ur-BvCJMy7j=oD9tO8CfK{u5a7{61Wc%cnA~#0Q5ZyuK)l5 diff --git a/packs/boons/000317.log b/packs/boons/000377.log similarity index 100% rename from packs/boons/000317.log rename to packs/boons/000377.log diff --git a/packs/boons/CURRENT b/packs/boons/CURRENT index 073c26f..741abc7 100644 --- a/packs/boons/CURRENT +++ b/packs/boons/CURRENT @@ -1 +1 @@ -MANIFEST-000315 +MANIFEST-000375 diff --git a/packs/boons/LOG b/packs/boons/LOG index a06f456..4b991af 100644 --- a/packs/boons/LOG +++ b/packs/boons/LOG @@ -1,8 +1,8 @@ -2024/09/04-08:29:45.183554 7f80f2a006c0 Recovering log #313 -2024/09/04-08:29:45.233441 7f80f2a006c0 Delete type=3 #311 -2024/09/04-08:29:45.233583 7f80f2a006c0 Delete type=0 #313 -2024/09/04-08:55:34.993899 7f80f10006c0 Level-0 table #318: started -2024/09/04-08:55:34.993962 7f80f10006c0 Level-0 table #318: 0 bytes OK -2024/09/04-08:55:35.001825 7f80f10006c0 Delete type=0 #316 -2024/09/04-08:55:35.023994 7f80f10006c0 Manual compaction at level-0 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end) -2024/09/04-08:55:35.024130 7f80f10006c0 Manual compaction at level-1 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end) +2024/09/05-08:22:40.894494 7f80f34006c0 Recovering log #373 +2024/09/05-08:22:40.945071 7f80f34006c0 Delete type=3 #371 +2024/09/05-08:22:40.945157 7f80f34006c0 Delete type=0 #373 +2024/09/05-08:33:29.044603 7f80f10006c0 Level-0 table #378: started +2024/09/05-08:33:29.044665 7f80f10006c0 Level-0 table #378: 0 bytes OK +2024/09/05-08:33:29.077608 7f80f10006c0 Delete type=0 #376 +2024/09/05-08:33:29.188641 7f80f10006c0 Manual compaction at level-0 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end) +2024/09/05-08:33:29.188725 7f80f10006c0 Manual compaction at level-1 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end) diff --git a/packs/boons/LOG.old b/packs/boons/LOG.old index 07e0e04..6f48dcc 100644 --- a/packs/boons/LOG.old +++ b/packs/boons/LOG.old @@ -1,8 +1,8 @@ -2024/09/03-23:57:01.593096 7f80f2a006c0 Recovering log #309 -2024/09/03-23:57:01.647346 7f80f2a006c0 Delete type=3 #307 -2024/09/03-23:57:01.647452 7f80f2a006c0 Delete type=0 #309 -2024/09/04-00:02:12.502227 7f80f10006c0 Level-0 table #314: started -2024/09/04-00:02:12.502249 7f80f10006c0 Level-0 table #314: 0 bytes OK -2024/09/04-00:02:12.508162 7f80f10006c0 Delete type=0 #312 -2024/09/04-00:02:12.521455 7f80f10006c0 Manual compaction at level-0 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end) -2024/09/04-00:02:12.521494 7f80f10006c0 Manual compaction at level-1 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end) +2024/09/05-08:21:46.247658 7f80f20006c0 Recovering log #369 +2024/09/05-08:21:46.345273 7f80f20006c0 Delete type=3 #367 +2024/09/05-08:21:46.345365 7f80f20006c0 Delete type=0 #369 +2024/09/05-08:22:26.783613 7f80f10006c0 Level-0 table #374: started +2024/09/05-08:22:26.783652 7f80f10006c0 Level-0 table #374: 0 bytes OK +2024/09/05-08:22:26.820926 7f80f10006c0 Delete type=0 #372 +2024/09/05-08:22:26.890117 7f80f10006c0 Manual compaction at level-0 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end) +2024/09/05-08:22:26.890214 7f80f10006c0 Manual compaction at level-1 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end) diff --git a/packs/boons/MANIFEST-000315 b/packs/boons/MANIFEST-000375 similarity index 72% rename from packs/boons/MANIFEST-000315 rename to packs/boons/MANIFEST-000375 index 160ce4b947d347d85b9532fec4d5c9c70d93537d..d66b28e58115d1eb939781e85a48446b24c771fd 100644 GIT binary patch delta 43 tcmdnMxPfs(k4pd2E;()nMy4N3oD9rAnOGh%nQgDX0TTHM68Q}h0RSj44730M delta 43 tcmdnMxPfs(kBYJIhjDx020{?64?(D0RRyG3v>Vg diff --git a/packs/boonsflawscreatures/000317.log b/packs/boonsflawscreatures/000377.log similarity index 100% rename from packs/boonsflawscreatures/000317.log rename to packs/boonsflawscreatures/000377.log diff --git a/packs/boonsflawscreatures/CURRENT b/packs/boonsflawscreatures/CURRENT index 073c26f..741abc7 100644 --- a/packs/boonsflawscreatures/CURRENT +++ b/packs/boonsflawscreatures/CURRENT @@ -1 +1 @@ -MANIFEST-000315 +MANIFEST-000375 diff --git a/packs/boonsflawscreatures/LOG b/packs/boonsflawscreatures/LOG index c68a7e0..80afea3 100644 --- a/packs/boonsflawscreatures/LOG +++ b/packs/boonsflawscreatures/LOG @@ -1,8 +1,8 @@ -2024/09/04-08:29:45.236757 7f80f34006c0 Recovering log #313 -2024/09/04-08:29:45.285076 7f80f34006c0 Delete type=3 #311 -2024/09/04-08:29:45.285171 7f80f34006c0 Delete type=0 #313 -2024/09/04-08:55:35.008961 7f80f10006c0 Level-0 table #318: started -2024/09/04-08:55:35.009000 7f80f10006c0 Level-0 table #318: 0 bytes OK -2024/09/04-08:55:35.015744 7f80f10006c0 Delete type=0 #316 -2024/09/04-08:55:35.024074 7f80f10006c0 Manual compaction at level-0 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end) -2024/09/04-08:55:35.024182 7f80f10006c0 Manual compaction at level-1 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end) +2024/09/05-08:22:40.948817 7f80f3e006c0 Recovering log #373 +2024/09/05-08:22:41.011059 7f80f3e006c0 Delete type=3 #371 +2024/09/05-08:22:41.011181 7f80f3e006c0 Delete type=0 #373 +2024/09/05-08:33:29.077896 7f80f10006c0 Level-0 table #378: started +2024/09/05-08:33:29.078081 7f80f10006c0 Level-0 table #378: 0 bytes OK +2024/09/05-08:33:29.120426 7f80f10006c0 Delete type=0 #376 +2024/09/05-08:33:29.188668 7f80f10006c0 Manual compaction at level-0 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end) +2024/09/05-08:33:29.188741 7f80f10006c0 Manual compaction at level-1 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end) diff --git a/packs/boonsflawscreatures/LOG.old b/packs/boonsflawscreatures/LOG.old index 9504297..554b5f6 100644 --- a/packs/boonsflawscreatures/LOG.old +++ b/packs/boonsflawscreatures/LOG.old @@ -1,8 +1,8 @@ -2024/09/03-23:57:01.659093 7f80f20006c0 Recovering log #309 -2024/09/03-23:57:01.714808 7f80f20006c0 Delete type=3 #307 -2024/09/03-23:57:01.714865 7f80f20006c0 Delete type=0 #309 -2024/09/04-00:02:12.496079 7f80f10006c0 Level-0 table #314: started -2024/09/04-00:02:12.496122 7f80f10006c0 Level-0 table #314: 0 bytes OK -2024/09/04-00:02:12.502129 7f80f10006c0 Delete type=0 #312 -2024/09/04-00:02:12.521438 7f80f10006c0 Manual compaction at level-0 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end) -2024/09/04-00:02:12.521486 7f80f10006c0 Manual compaction at level-1 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end) +2024/09/05-08:21:46.349301 7f80f2a006c0 Recovering log #369 +2024/09/05-08:21:46.398345 7f80f2a006c0 Delete type=3 #367 +2024/09/05-08:21:46.398468 7f80f2a006c0 Delete type=0 #369 +2024/09/05-08:22:26.754053 7f80f10006c0 Level-0 table #374: started +2024/09/05-08:22:26.754147 7f80f10006c0 Level-0 table #374: 0 bytes OK +2024/09/05-08:22:26.783456 7f80f10006c0 Delete type=0 #372 +2024/09/05-08:22:26.890082 7f80f10006c0 Manual compaction at level-0 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end) +2024/09/05-08:22:26.890188 7f80f10006c0 Manual compaction at level-1 from '!items!CoqlfsDV1gL5swbK' @ 72057594037927935 : 1 .. '!items!yofwG0YrsL902G77' @ 0 : 0; will stop at (end) diff --git a/packs/boonsflawscreatures/MANIFEST-000315 b/packs/boonsflawscreatures/MANIFEST-000375 similarity index 73% rename from packs/boonsflawscreatures/MANIFEST-000315 rename to packs/boonsflawscreatures/MANIFEST-000375 index d6d0a70b9d1c9f2061d90f9b29597a0ff68bf21f..672e8673657c0d8095758b7c31840b5b82901c85 100644 GIT binary patch delta 41 scmZ3>xR!B3x6;iOUQf9g7@2-BaWXLfWMVPs629RL68H%c_ze^Q02odSkpKVy delta 41 rcmZ3>xR!B3x6-TEB0O9Sj7)o&I2oAtGO-v`HZ`k&1onai_5%d~^1lhl diff --git a/packs/careers/000317.log b/packs/careers/000377.log similarity index 100% rename from packs/careers/000317.log rename to packs/careers/000377.log diff --git a/packs/careers/CURRENT b/packs/careers/CURRENT index 073c26f..741abc7 100644 --- a/packs/careers/CURRENT +++ b/packs/careers/CURRENT @@ -1 +1 @@ -MANIFEST-000315 +MANIFEST-000375 diff --git a/packs/careers/LOG b/packs/careers/LOG index e402223..a5a0491 100644 --- a/packs/careers/LOG +++ b/packs/careers/LOG @@ -1,8 +1,8 @@ -2024/09/04-08:29:45.337427 7f80f20006c0 Recovering log #313 -2024/09/04-08:29:45.385247 7f80f20006c0 Delete type=3 #311 -2024/09/04-08:29:45.385347 7f80f20006c0 Delete type=0 #313 -2024/09/04-08:55:35.015910 7f80f10006c0 Level-0 table #318: started -2024/09/04-08:55:35.015983 7f80f10006c0 Level-0 table #318: 0 bytes OK -2024/09/04-08:55:35.023688 7f80f10006c0 Delete type=0 #316 -2024/09/04-08:55:35.024104 7f80f10006c0 Manual compaction at level-0 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end) -2024/09/04-08:55:35.024208 7f80f10006c0 Manual compaction at level-1 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end) +2024/09/05-08:22:41.066316 7f80f2a006c0 Recovering log #373 +2024/09/05-08:22:41.115337 7f80f2a006c0 Delete type=3 #371 +2024/09/05-08:22:41.115462 7f80f2a006c0 Delete type=0 #373 +2024/09/05-08:33:29.155126 7f80f10006c0 Level-0 table #378: started +2024/09/05-08:33:29.155181 7f80f10006c0 Level-0 table #378: 0 bytes OK +2024/09/05-08:33:29.188218 7f80f10006c0 Delete type=0 #376 +2024/09/05-08:33:29.188710 7f80f10006c0 Manual compaction at level-0 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end) +2024/09/05-08:33:29.188774 7f80f10006c0 Manual compaction at level-1 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end) diff --git a/packs/careers/LOG.old b/packs/careers/LOG.old index 9e0e117..43b5e7e 100644 --- a/packs/careers/LOG.old +++ b/packs/careers/LOG.old @@ -1,8 +1,8 @@ -2024/09/03-23:57:01.783330 7f80f3e006c0 Recovering log #309 -2024/09/03-23:57:01.838726 7f80f3e006c0 Delete type=3 #307 -2024/09/03-23:57:01.838785 7f80f3e006c0 Delete type=0 #309 -2024/09/04-00:02:12.508272 7f80f10006c0 Level-0 table #314: started -2024/09/04-00:02:12.508294 7f80f10006c0 Level-0 table #314: 0 bytes OK -2024/09/04-00:02:12.514198 7f80f10006c0 Delete type=0 #312 -2024/09/04-00:02:12.521467 7f80f10006c0 Manual compaction at level-0 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end) -2024/09/04-00:02:12.521503 7f80f10006c0 Manual compaction at level-1 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end) +2024/09/05-08:21:46.454932 7f80f34006c0 Recovering log #369 +2024/09/05-08:21:46.506144 7f80f34006c0 Delete type=3 #367 +2024/09/05-08:21:46.506300 7f80f34006c0 Delete type=0 #369 +2024/09/05-08:22:26.964849 7f80f10006c0 Level-0 table #374: started +2024/09/05-08:22:26.964921 7f80f10006c0 Level-0 table #374: 0 bytes OK +2024/09/05-08:22:27.001894 7f80f10006c0 Delete type=0 #372 +2024/09/05-08:22:27.041259 7f80f10006c0 Manual compaction at level-0 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end) +2024/09/05-08:22:27.041316 7f80f10006c0 Manual compaction at level-1 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end) diff --git a/packs/careers/MANIFEST-000315 b/packs/careers/MANIFEST-000375 similarity index 72% rename from packs/careers/MANIFEST-000315 rename to packs/careers/MANIFEST-000375 index d50dd1ac42dc5403ee2512d2a0b4c2c2a14cd3fc..303b164bc1fef713660fdb4e6fb8d8feae611555 100644 GIT binary patch delta 43 tcmdnMxPfs(kIK1kVK2EE7@2-BaWXLfWMWy!_&t5oMv%x)kjQV42mn&y4b%Vt delta 43 tcmdnMxPfs(kIJWJH$iR&My5SXoD9r+nOGJwp1!sFBuHd0NMt`q1OOpR3>5$X diff --git a/packs/effets-exemples/000315.log b/packs/effets-exemples/000375.log similarity index 100% rename from packs/effets-exemples/000315.log rename to packs/effets-exemples/000375.log diff --git a/packs/effets-exemples/CURRENT b/packs/effets-exemples/CURRENT index e6b0e26..1ca0e83 100644 --- a/packs/effets-exemples/CURRENT +++ b/packs/effets-exemples/CURRENT @@ -1 +1 @@ -MANIFEST-000313 +MANIFEST-000373 diff --git a/packs/effets-exemples/LOG b/packs/effets-exemples/LOG index d819a06..3851ae4 100644 --- a/packs/effets-exemples/LOG +++ b/packs/effets-exemples/LOG @@ -1,8 +1,8 @@ -2024/09/04-08:29:45.792446 7f80f34006c0 Recovering log #311 -2024/09/04-08:29:45.814564 7f80f34006c0 Delete type=3 #309 -2024/09/04-08:29:45.814808 7f80f34006c0 Delete type=0 #311 -2024/09/04-08:55:35.119784 7f80f10006c0 Level-0 table #316: started -2024/09/04-08:55:35.119834 7f80f10006c0 Level-0 table #316: 0 bytes OK -2024/09/04-08:55:35.127260 7f80f10006c0 Delete type=0 #314 -2024/09/04-08:55:35.146545 7f80f10006c0 Manual compaction at level-0 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end) -2024/09/04-08:55:35.146620 7f80f10006c0 Manual compaction at level-1 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end) +2024/09/05-08:22:41.990829 7f80f2a006c0 Recovering log #371 +2024/09/05-08:22:42.046685 7f80f2a006c0 Delete type=3 #369 +2024/09/05-08:22:42.046818 7f80f2a006c0 Delete type=0 #371 +2024/09/05-08:33:29.688780 7f80f10006c0 Level-0 table #376: started +2024/09/05-08:33:29.688842 7f80f10006c0 Level-0 table #376: 0 bytes OK +2024/09/05-08:33:29.727188 7f80f10006c0 Delete type=0 #374 +2024/09/05-08:33:29.800782 7f80f10006c0 Manual compaction at level-0 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end) +2024/09/05-08:33:29.800870 7f80f10006c0 Manual compaction at level-1 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end) diff --git a/packs/effets-exemples/LOG.old b/packs/effets-exemples/LOG.old index 10e4f0d..30009fe 100644 --- a/packs/effets-exemples/LOG.old +++ b/packs/effets-exemples/LOG.old @@ -1,8 +1,8 @@ -2024/09/03-23:57:02.921085 7f80f34006c0 Recovering log #307 -2024/09/03-23:57:02.974041 7f80f34006c0 Delete type=3 #305 -2024/09/03-23:57:02.974104 7f80f34006c0 Delete type=0 #307 -2024/09/04-00:02:12.594370 7f80f10006c0 Level-0 table #312: started -2024/09/04-00:02:12.594419 7f80f10006c0 Level-0 table #312: 0 bytes OK -2024/09/04-00:02:12.600538 7f80f10006c0 Delete type=0 #310 -2024/09/04-00:02:12.625472 7f80f10006c0 Manual compaction at level-0 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end) -2024/09/04-00:02:12.625539 7f80f10006c0 Manual compaction at level-1 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end) +2024/09/05-08:21:47.299690 7f80f2a006c0 Recovering log #367 +2024/09/05-08:21:47.368552 7f80f2a006c0 Delete type=3 #365 +2024/09/05-08:21:47.368685 7f80f2a006c0 Delete type=0 #367 +2024/09/05-08:22:27.315399 7f80f10006c0 Level-0 table #372: started +2024/09/05-08:22:27.315459 7f80f10006c0 Level-0 table #372: 0 bytes OK +2024/09/05-08:22:27.352140 7f80f10006c0 Delete type=0 #370 +2024/09/05-08:22:27.460577 7f80f10006c0 Manual compaction at level-0 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end) +2024/09/05-08:22:27.460663 7f80f10006c0 Manual compaction at level-1 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end) diff --git a/packs/effets-exemples/MANIFEST-000313 b/packs/effets-exemples/MANIFEST-000373 similarity index 73% rename from packs/effets-exemples/MANIFEST-000313 rename to packs/effets-exemples/MANIFEST-000373 index 5e02c974119379491bb36e1695860583438e405f..d2475b54de7e89d5e25e2de7343b56e884a38df4 100644 GIT binary patch delta 41 scmZ3>xR!B3x6<$OXdW&GMy78}oD9t0nOFo&-aI}568H`h_z4sM01DR&eExR!B3x03nHPfT14j7+xR!B3x6*-#b8TDxR!B3x6+rMEoZnG7@2l6aWXLPVPdIxZPPUwB(Mi0un#Bz03qxQ0RR91 diff --git a/packs/languages/000317.log b/packs/languages/000377.log similarity index 100% rename from packs/languages/000317.log rename to packs/languages/000377.log diff --git a/packs/languages/CURRENT b/packs/languages/CURRENT index 073c26f..741abc7 100644 --- a/packs/languages/CURRENT +++ b/packs/languages/CURRENT @@ -1 +1 @@ -MANIFEST-000315 +MANIFEST-000375 diff --git a/packs/languages/LOG b/packs/languages/LOG index 4c18313..f3c1a34 100644 --- a/packs/languages/LOG +++ b/packs/languages/LOG @@ -1,8 +1,8 @@ -2024/09/04-08:29:45.628430 7f80f20006c0 Recovering log #313 -2024/09/04-08:29:45.650295 7f80f20006c0 Delete type=3 #311 -2024/09/04-08:29:45.650414 7f80f20006c0 Delete type=0 #313 -2024/09/04-08:55:35.067585 7f80f10006c0 Level-0 table #318: started -2024/09/04-08:55:35.067673 7f80f10006c0 Level-0 table #318: 0 bytes OK -2024/09/04-08:55:35.075311 7f80f10006c0 Delete type=0 #316 -2024/09/04-08:55:35.082099 7f80f10006c0 Manual compaction at level-0 from '!items!46qF6OBN5gf0dqWc' @ 72057594037927935 : 1 .. '!items!vaAQiuAHdyQrQiUX' @ 0 : 0; will stop at (end) -2024/09/04-08:55:35.082155 7f80f10006c0 Manual compaction at level-1 from '!items!46qF6OBN5gf0dqWc' @ 72057594037927935 : 1 .. '!items!vaAQiuAHdyQrQiUX' @ 0 : 0; will stop at (end) +2024/09/05-08:22:41.604324 7f80f34006c0 Recovering log #373 +2024/09/05-08:22:41.651481 7f80f34006c0 Delete type=3 #371 +2024/09/05-08:22:41.651605 7f80f34006c0 Delete type=0 #373 +2024/09/05-08:33:29.452904 7f80f10006c0 Level-0 table #378: started +2024/09/05-08:33:29.452942 7f80f10006c0 Level-0 table #378: 0 bytes OK +2024/09/05-08:33:29.488195 7f80f10006c0 Delete type=0 #376 +2024/09/05-08:33:29.488483 7f80f10006c0 Manual compaction at level-0 from '!items!46qF6OBN5gf0dqWc' @ 72057594037927935 : 1 .. '!items!vaAQiuAHdyQrQiUX' @ 0 : 0; will stop at (end) +2024/09/05-08:33:29.488542 7f80f10006c0 Manual compaction at level-1 from '!items!46qF6OBN5gf0dqWc' @ 72057594037927935 : 1 .. '!items!vaAQiuAHdyQrQiUX' @ 0 : 0; will stop at (end) diff --git a/packs/languages/LOG.old b/packs/languages/LOG.old index 82f7cc1..b63f6e7 100644 --- a/packs/languages/LOG.old +++ b/packs/languages/LOG.old @@ -1,8 +1,8 @@ -2024/09/03-23:57:02.521039 7f80f20006c0 Recovering log #309 -2024/09/03-23:57:02.598636 7f80f20006c0 Delete type=3 #307 -2024/09/03-23:57:02.598696 7f80f20006c0 Delete type=0 #309 -2024/09/04-00:02:12.566783 7f80f10006c0 Level-0 table #314: started -2024/09/04-00:02:12.566808 7f80f10006c0 Level-0 table #314: 0 bytes OK -2024/09/04-00:02:12.573557 7f80f10006c0 Delete type=0 #312 -2024/09/04-00:02:12.594165 7f80f10006c0 Manual compaction at level-0 from '!items!46qF6OBN5gf0dqWc' @ 72057594037927935 : 1 .. '!items!vaAQiuAHdyQrQiUX' @ 0 : 0; will stop at (end) -2024/09/04-00:02:12.594235 7f80f10006c0 Manual compaction at level-1 from '!items!46qF6OBN5gf0dqWc' @ 72057594037927935 : 1 .. '!items!vaAQiuAHdyQrQiUX' @ 0 : 0; will stop at (end) +2024/09/05-08:21:46.918589 7f80f34006c0 Recovering log #369 +2024/09/05-08:21:46.976419 7f80f34006c0 Delete type=3 #367 +2024/09/05-08:21:46.976526 7f80f34006c0 Delete type=0 #369 +2024/09/05-08:22:27.139647 7f80f10006c0 Level-0 table #374: started +2024/09/05-08:22:27.139696 7f80f10006c0 Level-0 table #374: 0 bytes OK +2024/09/05-08:22:27.173621 7f80f10006c0 Delete type=0 #372 +2024/09/05-08:22:27.173943 7f80f10006c0 Manual compaction at level-0 from '!items!46qF6OBN5gf0dqWc' @ 72057594037927935 : 1 .. '!items!vaAQiuAHdyQrQiUX' @ 0 : 0; will stop at (end) +2024/09/05-08:22:27.174022 7f80f10006c0 Manual compaction at level-1 from '!items!46qF6OBN5gf0dqWc' @ 72057594037927935 : 1 .. '!items!vaAQiuAHdyQrQiUX' @ 0 : 0; will stop at (end) diff --git a/packs/languages/MANIFEST-000315 b/packs/languages/MANIFEST-000375 similarity index 73% rename from packs/languages/MANIFEST-000315 rename to packs/languages/MANIFEST-000375 index 760a5b397e52f6f872ca3c8dd868b9f63581d50b..7e387cb809f4c021cb6550f5a9fb8bae912d7ac2 100644 GIT binary patch delta 41 scmZ3>xR!B3x6+S8)=FFqj7&e6I2o9KGO-k9Tdp+&3H$^J{00gD00+VgK>z>% delta 41 rcmZ3>xR!B3w-R?y!FMhOMy5SXoD9r+nOF)V?l2{R1onai_5%d~?Q{wc diff --git a/packs/objets-alchimie/000317.log b/packs/objets-alchimie/000377.log similarity index 100% rename from packs/objets-alchimie/000317.log rename to packs/objets-alchimie/000377.log diff --git a/packs/objets-alchimie/CURRENT b/packs/objets-alchimie/CURRENT index 073c26f..741abc7 100644 --- a/packs/objets-alchimie/CURRENT +++ b/packs/objets-alchimie/CURRENT @@ -1 +1 @@ -MANIFEST-000315 +MANIFEST-000375 diff --git a/packs/objets-alchimie/LOG b/packs/objets-alchimie/LOG index f48a7fa..e923c16 100644 --- a/packs/objets-alchimie/LOG +++ b/packs/objets-alchimie/LOG @@ -1,8 +1,8 @@ -2024/09/04-08:29:45.765001 7f80f2a006c0 Recovering log #313 -2024/09/04-08:29:45.788819 7f80f2a006c0 Delete type=3 #311 -2024/09/04-08:29:45.788950 7f80f2a006c0 Delete type=0 #313 -2024/09/04-08:55:35.112898 7f80f10006c0 Level-0 table #318: started -2024/09/04-08:55:35.113011 7f80f10006c0 Level-0 table #318: 0 bytes OK -2024/09/04-08:55:35.119600 7f80f10006c0 Delete type=0 #316 -2024/09/04-08:55:35.146523 7f80f10006c0 Manual compaction at level-0 from '!items!0Yhn3r8AFsKXEKeS' @ 72057594037927935 : 1 .. '!items!xVWrSPiX0Nwccsn6' @ 0 : 0; will stop at (end) -2024/09/04-08:55:35.146600 7f80f10006c0 Manual compaction at level-1 from '!items!0Yhn3r8AFsKXEKeS' @ 72057594037927935 : 1 .. '!items!xVWrSPiX0Nwccsn6' @ 0 : 0; will stop at (end) +2024/09/05-08:22:41.934947 7f80f3e006c0 Recovering log #373 +2024/09/05-08:22:41.987105 7f80f3e006c0 Delete type=3 #371 +2024/09/05-08:22:41.987277 7f80f3e006c0 Delete type=0 #373 +2024/09/05-08:33:29.649902 7f80f10006c0 Level-0 table #378: started +2024/09/05-08:33:29.649954 7f80f10006c0 Level-0 table #378: 0 bytes OK +2024/09/05-08:33:29.688488 7f80f10006c0 Delete type=0 #376 +2024/09/05-08:33:29.800739 7f80f10006c0 Manual compaction at level-0 from '!items!0Yhn3r8AFsKXEKeS' @ 72057594037927935 : 1 .. '!items!xVWrSPiX0Nwccsn6' @ 0 : 0; will stop at (end) +2024/09/05-08:33:29.800849 7f80f10006c0 Manual compaction at level-1 from '!items!0Yhn3r8AFsKXEKeS' @ 72057594037927935 : 1 .. '!items!xVWrSPiX0Nwccsn6' @ 0 : 0; will stop at (end) diff --git a/packs/objets-alchimie/LOG.old b/packs/objets-alchimie/LOG.old index 9bdb1b8..f7619cd 100644 --- a/packs/objets-alchimie/LOG.old +++ b/packs/objets-alchimie/LOG.old @@ -1,8 +1,8 @@ -2024/09/03-23:57:02.858975 7f80f2a006c0 Recovering log #309 -2024/09/03-23:57:02.913613 7f80f2a006c0 Delete type=3 #307 -2024/09/03-23:57:02.913669 7f80f2a006c0 Delete type=0 #309 -2024/09/04-00:02:12.608054 7f80f10006c0 Level-0 table #314: started -2024/09/04-00:02:12.608097 7f80f10006c0 Level-0 table #314: 0 bytes OK -2024/09/04-00:02:12.614495 7f80f10006c0 Delete type=0 #312 -2024/09/04-00:02:12.625516 7f80f10006c0 Manual compaction at level-0 from '!items!0Yhn3r8AFsKXEKeS' @ 72057594037927935 : 1 .. '!items!xVWrSPiX0Nwccsn6' @ 0 : 0; will stop at (end) -2024/09/04-00:02:12.625559 7f80f10006c0 Manual compaction at level-1 from '!items!0Yhn3r8AFsKXEKeS' @ 72057594037927935 : 1 .. '!items!xVWrSPiX0Nwccsn6' @ 0 : 0; will stop at (end) +2024/09/05-08:21:47.226454 7f80f20006c0 Recovering log #369 +2024/09/05-08:21:47.295984 7f80f20006c0 Delete type=3 #367 +2024/09/05-08:21:47.296101 7f80f20006c0 Delete type=0 #369 +2024/09/05-08:22:27.352459 7f80f10006c0 Level-0 table #374: started +2024/09/05-08:22:27.352536 7f80f10006c0 Level-0 table #374: 0 bytes OK +2024/09/05-08:22:27.394328 7f80f10006c0 Delete type=0 #372 +2024/09/05-08:22:27.460607 7f80f10006c0 Manual compaction at level-0 from '!items!0Yhn3r8AFsKXEKeS' @ 72057594037927935 : 1 .. '!items!xVWrSPiX0Nwccsn6' @ 0 : 0; will stop at (end) +2024/09/05-08:22:27.460680 7f80f10006c0 Manual compaction at level-1 from '!items!0Yhn3r8AFsKXEKeS' @ 72057594037927935 : 1 .. '!items!xVWrSPiX0Nwccsn6' @ 0 : 0; will stop at (end) diff --git a/packs/objets-alchimie/MANIFEST-000315 b/packs/objets-alchimie/MANIFEST-000375 similarity index 73% rename from packs/objets-alchimie/MANIFEST-000315 rename to packs/objets-alchimie/MANIFEST-000375 index d4388995a04e20e2b62886ae3eabb74c1195d698..d7c7562da828dc03296201bad112be7084cc528d 100644 GIT binary patch delta 43 tcmZ3_xSnxBw+hqODh6%_My4N3oD9rAnOOcX&Q5RJ1`_!R68Q}h0RS5~3~~Sf delta 43 tcmZ3_xSnxBx5~WcA_;B=My5SXoD9r+nOOcXvfrG34C_j7)o&I2oAtGO@HU_D+4f1thW;B(fhQ0stO93$_3N diff --git a/packs/potions-alchimie/000317.log b/packs/potions-alchimie/000377.log similarity index 100% rename from packs/potions-alchimie/000317.log rename to packs/potions-alchimie/000377.log diff --git a/packs/potions-alchimie/CURRENT b/packs/potions-alchimie/CURRENT index 073c26f..741abc7 100644 --- a/packs/potions-alchimie/CURRENT +++ b/packs/potions-alchimie/CURRENT @@ -1 +1 @@ -MANIFEST-000315 +MANIFEST-000375 diff --git a/packs/potions-alchimie/LOG b/packs/potions-alchimie/LOG index 5121a0b..29faa2b 100644 --- a/packs/potions-alchimie/LOG +++ b/packs/potions-alchimie/LOG @@ -1,8 +1,8 @@ -2024/09/04-08:29:45.737290 7f80f20006c0 Recovering log #313 -2024/09/04-08:29:45.761609 7f80f20006c0 Delete type=3 #311 -2024/09/04-08:29:45.761710 7f80f20006c0 Delete type=0 #313 -2024/09/04-08:55:35.103875 7f80f10006c0 Level-0 table #318: started -2024/09/04-08:55:35.103934 7f80f10006c0 Level-0 table #318: 0 bytes OK -2024/09/04-08:55:35.112160 7f80f10006c0 Delete type=0 #316 -2024/09/04-08:55:35.112573 7f80f10006c0 Manual compaction at level-0 from '!items!0a8UFoCOd3D35WBb' @ 72057594037927935 : 1 .. '!items!y9NHZCxKXMZEqcRo' @ 0 : 0; will stop at (end) -2024/09/04-08:55:35.112706 7f80f10006c0 Manual compaction at level-1 from '!items!0a8UFoCOd3D35WBb' @ 72057594037927935 : 1 .. '!items!y9NHZCxKXMZEqcRo' @ 0 : 0; will stop at (end) +2024/09/05-08:22:41.863576 7f80f34006c0 Recovering log #373 +2024/09/05-08:22:41.931115 7f80f34006c0 Delete type=3 #371 +2024/09/05-08:22:41.931232 7f80f34006c0 Delete type=0 #373 +2024/09/05-08:33:29.611739 7f80f10006c0 Level-0 table #378: started +2024/09/05-08:33:29.611795 7f80f10006c0 Level-0 table #378: 0 bytes OK +2024/09/05-08:33:29.649367 7f80f10006c0 Delete type=0 #376 +2024/09/05-08:33:29.649663 7f80f10006c0 Manual compaction at level-0 from '!items!0a8UFoCOd3D35WBb' @ 72057594037927935 : 1 .. '!items!y9NHZCxKXMZEqcRo' @ 0 : 0; will stop at (end) +2024/09/05-08:33:29.649731 7f80f10006c0 Manual compaction at level-1 from '!items!0a8UFoCOd3D35WBb' @ 72057594037927935 : 1 .. '!items!y9NHZCxKXMZEqcRo' @ 0 : 0; will stop at (end) diff --git a/packs/potions-alchimie/LOG.old b/packs/potions-alchimie/LOG.old index 7ca73a6..7815452 100644 --- a/packs/potions-alchimie/LOG.old +++ b/packs/potions-alchimie/LOG.old @@ -1,8 +1,8 @@ -2024/09/03-23:57:02.798029 7f80f20006c0 Recovering log #309 -2024/09/03-23:57:02.852893 7f80f20006c0 Delete type=3 #307 -2024/09/03-23:57:02.852957 7f80f20006c0 Delete type=0 #309 -2024/09/04-00:02:12.600662 7f80f10006c0 Level-0 table #314: started -2024/09/04-00:02:12.600686 7f80f10006c0 Level-0 table #314: 0 bytes OK -2024/09/04-00:02:12.607867 7f80f10006c0 Delete type=0 #312 -2024/09/04-00:02:12.625502 7f80f10006c0 Manual compaction at level-0 from '!items!0a8UFoCOd3D35WBb' @ 72057594037927935 : 1 .. '!items!y9NHZCxKXMZEqcRo' @ 0 : 0; will stop at (end) -2024/09/04-00:02:12.625548 7f80f10006c0 Manual compaction at level-1 from '!items!0a8UFoCOd3D35WBb' @ 72057594037927935 : 1 .. '!items!y9NHZCxKXMZEqcRo' @ 0 : 0; will stop at (end) +2024/09/05-08:21:47.168422 7f80f34006c0 Recovering log #369 +2024/09/05-08:21:47.222264 7f80f34006c0 Delete type=3 #367 +2024/09/05-08:21:47.222378 7f80f34006c0 Delete type=0 #369 +2024/09/05-08:22:27.277250 7f80f10006c0 Level-0 table #374: started +2024/09/05-08:22:27.277287 7f80f10006c0 Level-0 table #374: 0 bytes OK +2024/09/05-08:22:27.314841 7f80f10006c0 Delete type=0 #372 +2024/09/05-08:22:27.315165 7f80f10006c0 Manual compaction at level-0 from '!items!0a8UFoCOd3D35WBb' @ 72057594037927935 : 1 .. '!items!y9NHZCxKXMZEqcRo' @ 0 : 0; will stop at (end) +2024/09/05-08:22:27.315224 7f80f10006c0 Manual compaction at level-1 from '!items!0a8UFoCOd3D35WBb' @ 72057594037927935 : 1 .. '!items!y9NHZCxKXMZEqcRo' @ 0 : 0; will stop at (end) diff --git a/packs/potions-alchimie/MANIFEST-000315 b/packs/potions-alchimie/MANIFEST-000375 similarity index 73% rename from packs/potions-alchimie/MANIFEST-000315 rename to packs/potions-alchimie/MANIFEST-000375 index e578f96aafac25b23191a926460950a471921a51..38bd4307dd1ad7f772edac429a22ce31c375692e 100644 GIT binary patch delta 43 tcmZ3_xSnxBw@UxA#dEkB7@2-BaWXLfWMa9;XtpCR3?%XsB=Q?10st{!44nV~ delta 43 scmZ3_xSnxBw~DdIt`cqrMy5SXoD9r+nON>Ic6s^RfkgI#MD~M30Q(yXZ2$lO diff --git a/packs/races/000317.log b/packs/races/000377.log similarity index 100% rename from packs/races/000317.log rename to packs/races/000377.log diff --git a/packs/races/CURRENT b/packs/races/CURRENT index 073c26f..741abc7 100644 --- a/packs/races/CURRENT +++ b/packs/races/CURRENT @@ -1 +1 @@ -MANIFEST-000315 +MANIFEST-000375 diff --git a/packs/races/LOG b/packs/races/LOG index 0df666a..547bc88 100644 --- a/packs/races/LOG +++ b/packs/races/LOG @@ -1,8 +1,8 @@ -2024/09/04-08:29:45.464980 7f80f34006c0 Recovering log #313 -2024/09/04-08:29:45.490148 7f80f34006c0 Delete type=3 #311 -2024/09/04-08:29:45.490265 7f80f34006c0 Delete type=0 #313 -2024/09/04-08:55:35.024395 7f80f10006c0 Level-0 table #318: started -2024/09/04-08:55:35.024475 7f80f10006c0 Level-0 table #318: 0 bytes OK -2024/09/04-08:55:35.031136 7f80f10006c0 Delete type=0 #316 -2024/09/04-08:55:35.053373 7f80f10006c0 Manual compaction at level-0 from '!items!3oOvUd7AIqrXzLDl' @ 72057594037927935 : 1 .. '!items!oWexVALVtDXmedMy' @ 0 : 0; will stop at (end) -2024/09/04-08:55:35.053467 7f80f10006c0 Manual compaction at level-1 from '!items!3oOvUd7AIqrXzLDl' @ 72057594037927935 : 1 .. '!items!oWexVALVtDXmedMy' @ 0 : 0; will stop at (end) +2024/09/05-08:22:41.177588 7f80f3e006c0 Recovering log #373 +2024/09/05-08:22:41.226706 7f80f3e006c0 Delete type=3 #371 +2024/09/05-08:22:41.226851 7f80f3e006c0 Delete type=0 #373 +2024/09/05-08:33:29.188977 7f80f10006c0 Level-0 table #378: started +2024/09/05-08:33:29.189024 7f80f10006c0 Level-0 table #378: 0 bytes OK +2024/09/05-08:33:29.231681 7f80f10006c0 Delete type=0 #376 +2024/09/05-08:33:29.343566 7f80f10006c0 Manual compaction at level-0 from '!items!3oOvUd7AIqrXzLDl' @ 72057594037927935 : 1 .. '!items!oWexVALVtDXmedMy' @ 0 : 0; will stop at (end) +2024/09/05-08:33:29.343638 7f80f10006c0 Manual compaction at level-1 from '!items!3oOvUd7AIqrXzLDl' @ 72057594037927935 : 1 .. '!items!oWexVALVtDXmedMy' @ 0 : 0; will stop at (end) diff --git a/packs/races/LOG.old b/packs/races/LOG.old index fc0dd47..326be5e 100644 --- a/packs/races/LOG.old +++ b/packs/races/LOG.old @@ -1,8 +1,8 @@ -2024/09/03-23:57:01.916540 7f80f20006c0 Recovering log #309 -2024/09/03-23:57:01.971084 7f80f20006c0 Delete type=3 #307 -2024/09/03-23:57:01.971164 7f80f20006c0 Delete type=0 #309 -2024/09/04-00:02:12.521599 7f80f10006c0 Level-0 table #314: started -2024/09/04-00:02:12.521659 7f80f10006c0 Level-0 table #314: 0 bytes OK -2024/09/04-00:02:12.527723 7f80f10006c0 Delete type=0 #312 -2024/09/04-00:02:12.547585 7f80f10006c0 Manual compaction at level-0 from '!items!3oOvUd7AIqrXzLDl' @ 72057594037927935 : 1 .. '!items!oWexVALVtDXmedMy' @ 0 : 0; will stop at (end) -2024/09/04-00:02:12.566660 7f80f10006c0 Manual compaction at level-1 from '!items!3oOvUd7AIqrXzLDl' @ 72057594037927935 : 1 .. '!items!oWexVALVtDXmedMy' @ 0 : 0; will stop at (end) +2024/09/05-08:21:46.570609 7f80f2a006c0 Recovering log #369 +2024/09/05-08:21:46.629042 7f80f2a006c0 Delete type=3 #367 +2024/09/05-08:21:46.629145 7f80f2a006c0 Delete type=0 #369 +2024/09/05-08:22:26.926686 7f80f10006c0 Level-0 table #374: started +2024/09/05-08:22:26.926780 7f80f10006c0 Level-0 table #374: 0 bytes OK +2024/09/05-08:22:26.964575 7f80f10006c0 Delete type=0 #372 +2024/09/05-08:22:27.041245 7f80f10006c0 Manual compaction at level-0 from '!items!3oOvUd7AIqrXzLDl' @ 72057594037927935 : 1 .. '!items!oWexVALVtDXmedMy' @ 0 : 0; will stop at (end) +2024/09/05-08:22:27.041301 7f80f10006c0 Manual compaction at level-1 from '!items!3oOvUd7AIqrXzLDl' @ 72057594037927935 : 1 .. '!items!oWexVALVtDXmedMy' @ 0 : 0; will stop at (end) diff --git a/packs/races/MANIFEST-000315 b/packs/races/MANIFEST-000375 similarity index 73% rename from packs/races/MANIFEST-000315 rename to packs/races/MANIFEST-000375 index 2e2af3a456dc5471cb9a361bafd457aa0a9e8a40..aeeb861b865c6a00bd9539fea33098233dfb8563 100644 GIT binary patch delta 41 scmZ3>xR!B3x6;iOUQf9g7@2-BaWXLfWMVPs629RL68H%c_ze^Q02odSkpKVy delta 41 rcmZ3>xR!B3x6-TEB0O9Sj7)o&I2oAtGO-v`HZ`k&1onai_5%d~^1lhl diff --git a/packs/spells/000317.log b/packs/spells/000377.log similarity index 100% rename from packs/spells/000317.log rename to packs/spells/000377.log diff --git a/packs/spells/CURRENT b/packs/spells/CURRENT index 073c26f..741abc7 100644 --- a/packs/spells/CURRENT +++ b/packs/spells/CURRENT @@ -1 +1 @@ -MANIFEST-000315 +MANIFEST-000375 diff --git a/packs/spells/LOG b/packs/spells/LOG index 3aabad9..756bde3 100644 --- a/packs/spells/LOG +++ b/packs/spells/LOG @@ -1,8 +1,8 @@ -2024/09/04-08:29:45.655079 7f80f2a006c0 Recovering log #313 -2024/09/04-08:29:45.680053 7f80f2a006c0 Delete type=3 #311 -2024/09/04-08:29:45.680170 7f80f2a006c0 Delete type=0 #313 -2024/09/04-08:55:35.082269 7f80f10006c0 Level-0 table #318: started -2024/09/04-08:55:35.082316 7f80f10006c0 Level-0 table #318: 0 bytes OK -2024/09/04-08:55:35.089165 7f80f10006c0 Delete type=0 #316 -2024/09/04-08:55:35.112477 7f80f10006c0 Manual compaction at level-0 from '!items!2svd3uio8Hp4e5Wy' @ 72057594037927935 : 1 .. '!items!zq5h9kCpo8gK4oIH' @ 0 : 0; will stop at (end) -2024/09/04-08:55:35.112600 7f80f10006c0 Manual compaction at level-1 from '!items!2svd3uio8Hp4e5Wy' @ 72057594037927935 : 1 .. '!items!zq5h9kCpo8gK4oIH' @ 0 : 0; will stop at (end) +2024/09/05-08:22:41.655532 7f80f3e006c0 Recovering log #373 +2024/09/05-08:22:41.713047 7f80f3e006c0 Delete type=3 #371 +2024/09/05-08:22:41.713223 7f80f3e006c0 Delete type=0 #373 +2024/09/05-08:33:29.488660 7f80f10006c0 Level-0 table #378: started +2024/09/05-08:33:29.488714 7f80f10006c0 Level-0 table #378: 0 bytes OK +2024/09/05-08:33:29.534233 7f80f10006c0 Delete type=0 #376 +2024/09/05-08:33:29.649599 7f80f10006c0 Manual compaction at level-0 from '!items!2svd3uio8Hp4e5Wy' @ 72057594037927935 : 1 .. '!items!zq5h9kCpo8gK4oIH' @ 0 : 0; will stop at (end) +2024/09/05-08:33:29.649680 7f80f10006c0 Manual compaction at level-1 from '!items!2svd3uio8Hp4e5Wy' @ 72057594037927935 : 1 .. '!items!zq5h9kCpo8gK4oIH' @ 0 : 0; will stop at (end) diff --git a/packs/spells/LOG.old b/packs/spells/LOG.old index 0b62fe2..661a89a 100644 --- a/packs/spells/LOG.old +++ b/packs/spells/LOG.old @@ -1,8 +1,8 @@ -2024/09/03-23:57:02.604977 7f80f2a006c0 Recovering log #309 -2024/09/03-23:57:02.659870 7f80f2a006c0 Delete type=3 #307 -2024/09/03-23:57:02.659925 7f80f2a006c0 Delete type=0 #309 -2024/09/04-00:02:12.573763 7f80f10006c0 Level-0 table #314: started -2024/09/04-00:02:12.573826 7f80f10006c0 Level-0 table #314: 0 bytes OK -2024/09/04-00:02:12.580109 7f80f10006c0 Delete type=0 #312 -2024/09/04-00:02:12.594186 7f80f10006c0 Manual compaction at level-0 from '!items!2svd3uio8Hp4e5Wy' @ 72057594037927935 : 1 .. '!items!zq5h9kCpo8gK4oIH' @ 0 : 0; will stop at (end) -2024/09/04-00:02:12.594250 7f80f10006c0 Manual compaction at level-1 from '!items!2svd3uio8Hp4e5Wy' @ 72057594037927935 : 1 .. '!items!zq5h9kCpo8gK4oIH' @ 0 : 0; will stop at (end) +2024/09/05-08:21:46.979653 7f80f20006c0 Recovering log #369 +2024/09/05-08:21:47.044892 7f80f20006c0 Delete type=3 #367 +2024/09/05-08:21:47.045005 7f80f20006c0 Delete type=0 #369 +2024/09/05-08:22:27.174181 7f80f10006c0 Level-0 table #374: started +2024/09/05-08:22:27.174287 7f80f10006c0 Level-0 table #374: 0 bytes OK +2024/09/05-08:22:27.209162 7f80f10006c0 Delete type=0 #372 +2024/09/05-08:22:27.315095 7f80f10006c0 Manual compaction at level-0 from '!items!2svd3uio8Hp4e5Wy' @ 72057594037927935 : 1 .. '!items!zq5h9kCpo8gK4oIH' @ 0 : 0; will stop at (end) +2024/09/05-08:22:27.315185 7f80f10006c0 Manual compaction at level-1 from '!items!2svd3uio8Hp4e5Wy' @ 72057594037927935 : 1 .. '!items!zq5h9kCpo8gK4oIH' @ 0 : 0; will stop at (end) diff --git a/packs/spells/MANIFEST-000315 b/packs/spells/MANIFEST-000375 similarity index 73% rename from packs/spells/MANIFEST-000315 rename to packs/spells/MANIFEST-000375 index 7ecf57d3e077794838b25ff3b1a50171e0d3beee..b8c17234a6c4f64311a7d2844749a6b6fc13fd7e 100644 GIT binary patch delta 41 scmZ3>xR!B3x6*>E=@Ypa7@2-BaWXLfWMYvBPXDxR!B3x6)<@lMF5fMy5SXoD9r+nOGzo)-AgL64(n8*bfu{0PQXb^Z)<= diff --git a/packs/vehicleweapons/000224.log b/packs/vehicleweapons/000284.log similarity index 100% rename from packs/vehicleweapons/000224.log rename to packs/vehicleweapons/000284.log diff --git a/packs/vehicleweapons/CURRENT b/packs/vehicleweapons/CURRENT index a8d01b2..ab9b276 100644 --- a/packs/vehicleweapons/CURRENT +++ b/packs/vehicleweapons/CURRENT @@ -1 +1 @@ -MANIFEST-000222 +MANIFEST-000282 diff --git a/packs/vehicleweapons/LOG b/packs/vehicleweapons/LOG index 254ea5f..c868e7a 100644 --- a/packs/vehicleweapons/LOG +++ b/packs/vehicleweapons/LOG @@ -1,8 +1,8 @@ -2024/09/04-08:29:45.572168 7f80f34006c0 Recovering log #220 -2024/09/04-08:29:45.596979 7f80f34006c0 Delete type=3 #218 -2024/09/04-08:29:45.597113 7f80f34006c0 Delete type=0 #220 -2024/09/04-08:55:35.060765 7f80f10006c0 Level-0 table #225: started -2024/09/04-08:55:35.060804 7f80f10006c0 Level-0 table #225: 0 bytes OK -2024/09/04-08:55:35.067304 7f80f10006c0 Delete type=0 #223 -2024/09/04-08:55:35.082083 7f80f10006c0 Manual compaction at level-0 from '!items!2cqkViQnOYZ4qwU1' @ 72057594037927935 : 1 .. '!items!qcCZxbaV9sucG1XK' @ 0 : 0; will stop at (end) -2024/09/04-08:55:35.082142 7f80f10006c0 Manual compaction at level-1 from '!items!2cqkViQnOYZ4qwU1' @ 72057594037927935 : 1 .. '!items!qcCZxbaV9sucG1XK' @ 0 : 0; will stop at (end) +2024/09/05-08:22:41.470374 7f80f2a006c0 Recovering log #280 +2024/09/05-08:22:41.533238 7f80f2a006c0 Delete type=3 #278 +2024/09/05-08:22:41.533373 7f80f2a006c0 Delete type=0 #280 +2024/09/05-08:33:29.385994 7f80f10006c0 Level-0 table #285: started +2024/09/05-08:33:29.386037 7f80f10006c0 Level-0 table #285: 0 bytes OK +2024/09/05-08:33:29.425956 7f80f10006c0 Delete type=0 #283 +2024/09/05-08:33:29.488445 7f80f10006c0 Manual compaction at level-0 from '!items!2cqkViQnOYZ4qwU1' @ 72057594037927935 : 1 .. '!items!qcCZxbaV9sucG1XK' @ 0 : 0; will stop at (end) +2024/09/05-08:33:29.488511 7f80f10006c0 Manual compaction at level-1 from '!items!2cqkViQnOYZ4qwU1' @ 72057594037927935 : 1 .. '!items!qcCZxbaV9sucG1XK' @ 0 : 0; will stop at (end) diff --git a/packs/vehicleweapons/LOG.old b/packs/vehicleweapons/LOG.old index fddbef0..27f647e 100644 --- a/packs/vehicleweapons/LOG.old +++ b/packs/vehicleweapons/LOG.old @@ -1,8 +1,8 @@ -2024/09/03-23:57:02.303953 7f80f34006c0 Recovering log #216 -2024/09/03-23:57:02.401062 7f80f34006c0 Delete type=3 #214 -2024/09/03-23:57:02.401144 7f80f34006c0 Delete type=0 #216 -2024/09/04-00:02:12.547706 7f80f10006c0 Level-0 table #221: started -2024/09/04-00:02:12.547740 7f80f10006c0 Level-0 table #221: 0 bytes OK -2024/09/04-00:02:12.553588 7f80f10006c0 Delete type=0 #219 -2024/09/04-00:02:12.566670 7f80f10006c0 Manual compaction at level-0 from '!items!2cqkViQnOYZ4qwU1' @ 72057594037927935 : 1 .. '!items!qcCZxbaV9sucG1XK' @ 0 : 0; will stop at (end) -2024/09/04-00:02:12.566689 7f80f10006c0 Manual compaction at level-1 from '!items!2cqkViQnOYZ4qwU1' @ 72057594037927935 : 1 .. '!items!qcCZxbaV9sucG1XK' @ 0 : 0; will stop at (end) +2024/09/05-08:21:46.811697 7f80f2a006c0 Recovering log #276 +2024/09/05-08:21:46.857881 7f80f2a006c0 Delete type=3 #274 +2024/09/05-08:21:46.857986 7f80f2a006c0 Delete type=0 #276 +2024/09/05-08:22:27.068340 7f80f10006c0 Level-0 table #281: started +2024/09/05-08:22:27.068376 7f80f10006c0 Level-0 table #281: 0 bytes OK +2024/09/05-08:22:27.102389 7f80f10006c0 Delete type=0 #279 +2024/09/05-08:22:27.173901 7f80f10006c0 Manual compaction at level-0 from '!items!2cqkViQnOYZ4qwU1' @ 72057594037927935 : 1 .. '!items!qcCZxbaV9sucG1XK' @ 0 : 0; will stop at (end) +2024/09/05-08:22:27.174003 7f80f10006c0 Manual compaction at level-1 from '!items!2cqkViQnOYZ4qwU1' @ 72057594037927935 : 1 .. '!items!qcCZxbaV9sucG1XK' @ 0 : 0; will stop at (end) diff --git a/packs/vehicleweapons/MANIFEST-000222 b/packs/vehicleweapons/MANIFEST-000282 similarity index 73% rename from packs/vehicleweapons/MANIFEST-000222 rename to packs/vehicleweapons/MANIFEST-000282 index 8760cd0df4458c546ee2cc3ea4dd0c2849524b46..0797f93c3123449a88038765dc9253ed897afd3b 100644 GIT binary patch delta 41 scmZ3>xR!B3w^ExR!B3w^9(BkUkd!Bh!6GP6p-&j4X1^6K>Ri1Rj6{9svaa*8&NZ diff --git a/packs/weapons/000228.log b/packs/weapons/000288.log similarity index 100% rename from packs/weapons/000228.log rename to packs/weapons/000288.log diff --git a/packs/weapons/CURRENT b/packs/weapons/CURRENT index 72f074e..7f70877 100644 --- a/packs/weapons/CURRENT +++ b/packs/weapons/CURRENT @@ -1 +1 @@ -MANIFEST-000226 +MANIFEST-000286 diff --git a/packs/weapons/LOG b/packs/weapons/LOG index 196d845..2f12a13 100644 --- a/packs/weapons/LOG +++ b/packs/weapons/LOG @@ -1,8 +1,8 @@ -2024/09/04-08:29:45.519219 7f80f20006c0 Recovering log #224 -2024/09/04-08:29:45.540052 7f80f20006c0 Delete type=3 #222 -2024/09/04-08:29:45.540150 7f80f20006c0 Delete type=0 #224 -2024/09/04-08:55:35.046034 7f80f10006c0 Level-0 table #229: started -2024/09/04-08:55:35.046147 7f80f10006c0 Level-0 table #229: 0 bytes OK -2024/09/04-08:55:35.053132 7f80f10006c0 Delete type=0 #227 -2024/09/04-08:55:35.053449 7f80f10006c0 Manual compaction at level-0 from '!items!4lJhbU88iUgmuCzv' @ 72057594037927935 : 1 .. '!items!zjOFhNocHjeJZcy4' @ 0 : 0; will stop at (end) -2024/09/04-08:55:35.053524 7f80f10006c0 Manual compaction at level-1 from '!items!4lJhbU88iUgmuCzv' @ 72057594037927935 : 1 .. '!items!zjOFhNocHjeJZcy4' @ 0 : 0; will stop at (end) +2024/09/05-08:22:41.289676 7f80f34006c0 Recovering log #284 +2024/09/05-08:22:41.394376 7f80f34006c0 Delete type=3 #282 +2024/09/05-08:22:41.394507 7f80f34006c0 Delete type=0 #284 +2024/09/05-08:33:29.263862 7f80f10006c0 Level-0 table #289: started +2024/09/05-08:33:29.263914 7f80f10006c0 Level-0 table #289: 0 bytes OK +2024/09/05-08:33:29.306120 7f80f10006c0 Delete type=0 #287 +2024/09/05-08:33:29.343610 7f80f10006c0 Manual compaction at level-0 from '!items!4lJhbU88iUgmuCzv' @ 72057594037927935 : 1 .. '!items!zjOFhNocHjeJZcy4' @ 0 : 0; will stop at (end) +2024/09/05-08:33:29.343666 7f80f10006c0 Manual compaction at level-1 from '!items!4lJhbU88iUgmuCzv' @ 72057594037927935 : 1 .. '!items!zjOFhNocHjeJZcy4' @ 0 : 0; will stop at (end) diff --git a/packs/weapons/LOG.old b/packs/weapons/LOG.old index 53954ee..2397dd2 100644 --- a/packs/weapons/LOG.old +++ b/packs/weapons/LOG.old @@ -1,8 +1,8 @@ -2024/09/03-23:57:02.078931 7f80f3e006c0 Recovering log #220 -2024/09/03-23:57:02.174757 7f80f3e006c0 Delete type=3 #218 -2024/09/03-23:57:02.174947 7f80f3e006c0 Delete type=0 #220 -2024/09/04-00:02:12.527840 7f80f10006c0 Level-0 table #225: started -2024/09/04-00:02:12.527868 7f80f10006c0 Level-0 table #225: 0 bytes OK -2024/09/04-00:02:12.533992 7f80f10006c0 Delete type=0 #223 -2024/09/04-00:02:12.547597 7f80f10006c0 Manual compaction at level-0 from '!items!4lJhbU88iUgmuCzv' @ 72057594037927935 : 1 .. '!items!zjOFhNocHjeJZcy4' @ 0 : 0; will stop at (end) -2024/09/04-00:02:12.547622 7f80f10006c0 Manual compaction at level-1 from '!items!4lJhbU88iUgmuCzv' @ 72057594037927935 : 1 .. '!items!zjOFhNocHjeJZcy4' @ 0 : 0; will stop at (end) +2024/09/05-08:21:46.688228 7f80f34006c0 Recovering log #280 +2024/09/05-08:21:46.751913 7f80f34006c0 Delete type=3 #278 +2024/09/05-08:21:46.752005 7f80f34006c0 Delete type=0 #280 +2024/09/05-08:22:27.002080 7f80f10006c0 Level-0 table #285: started +2024/09/05-08:22:27.002121 7f80f10006c0 Level-0 table #285: 0 bytes OK +2024/09/05-08:22:27.041003 7f80f10006c0 Delete type=0 #283 +2024/09/05-08:22:27.041288 7f80f10006c0 Manual compaction at level-0 from '!items!4lJhbU88iUgmuCzv' @ 72057594037927935 : 1 .. '!items!zjOFhNocHjeJZcy4' @ 0 : 0; will stop at (end) +2024/09/05-08:22:27.041328 7f80f10006c0 Manual compaction at level-1 from '!items!4lJhbU88iUgmuCzv' @ 72057594037927935 : 1 .. '!items!zjOFhNocHjeJZcy4' @ 0 : 0; will stop at (end) diff --git a/packs/weapons/MANIFEST-000226 b/packs/weapons/MANIFEST-000286 similarity index 72% rename from packs/weapons/MANIFEST-000226 rename to packs/weapons/MANIFEST-000286 index d790b1c8a31c8ccb73b00f2388211c744ba2f406..7c34e6455256aca3c704134cb3e5aec77c57df20 100644 GIT binary patch delta 43 tcmdnMxPfs(kIGd)F(YmUMyB~poD9qhm{?XZmYvjW0f{UCi7Wz%008*V3KakV delta 43 tcmdnMxPfs(kILp5(^$9}7?~b3axySKVPsjw=(tQI4J7geB=QU-0ss+m3lIPR diff --git a/system.json b/system.json index 77f6f6a..996d148 100644 --- a/system.json +++ b/system.json @@ -14,7 +14,7 @@ ], "url": "https://www.uberwald.me/gitea/public/bol", "license": "LICENSE.txt", - "version": "12.0.2", + "version": "12.1.0", "compatibility": { "minimum": "11", "verified": "12" @@ -43,6 +43,12 @@ "name": "Deutsch", "path": "lang/de.json", "flags": {} + }, + { + "lang": "es", + "name": "Español", + "path": "lang/es.json", + "flags": {} } ], "packFolders": [ @@ -318,7 +324,7 @@ ], "socket": true, "manifest": "https://www.uberwald.me/gitea/public/bol/raw/v10/system.json", - "download": "https://www.uberwald.me/gitea/public/bol/archive/bol-v12.0.2.zip", + "download": "https://www.uberwald.me/gitea/public/bol/archive/bol-v12.1.0.zip", "background": "systems/bol/ui/page_accueil.webp", "primaryTokenAttribute": "resources.hp", "secondaryTokenAttribute": "resources.hero", diff --git a/template.json b/template.json index a0b88a1..16d18f2 100644 --- a/template.json +++ b/template.json @@ -3,6 +3,7 @@ "types": [ "character", "encounter", + "horde", "vehicle" ], "templates": { @@ -150,6 +151,15 @@ } } }, + "horde": { + "templates": [ "base" ], + "chartype": "horde", + "villainy": false, + "hordesize": 1, + "hordebasehp": 1, + "hasdamagerule": false, + "damagerule": "none" + }, "character": { "templates": [ "base" ], "chartype": "player", diff --git a/templates/actor/horde-sheet.hbs b/templates/actor/horde-sheet.hbs new file mode 100644 index 0000000..56c2a80 --- /dev/null +++ b/templates/actor/horde-sheet.hbs @@ -0,0 +1,75 @@ +

+ + +
+ + {{!-- Sidebar --}} + + +
+ + {{!-- Sheet Header --}} +
+
+
+
+ +
+
+
+ + {{!-- Sheet Tab Navigation --}} + + + {{!-- Sheet Body --}} +
+
+ +
    +
  1. +
    {{localize "BOL.ui.details"}}
    +
    +
  2. +
+ +
+
+ +
+
+
+ +
+
+
+  /   + +
+ + {{> "systems/bol/templates/actor/parts/tabs/horde-description.hbs"}} + +
+ +
+
+
+ + +
\ No newline at end of file diff --git a/templates/actor/parts/tabs/actor-actions.hbs b/templates/actor/parts/tabs/actor-actions.hbs index 76c1195..90ff709 100644 --- a/templates/actor/parts/tabs/actor-actions.hbs +++ b/templates/actor/parts/tabs/actor-actions.hbs @@ -20,7 +20,7 @@ {{#if ../ranged}}
{{item.system.properties.range}}
{{else}}
{{/if}} {{#if ../options}}
{{#if item.system.properties.activated}} - {{localize "BOL.ui.toactivated"}} + {{localize "BOL.ui.toactivated"}} {{else}} {{localize "BOL.ui.todeactivated"}} {{/if}} diff --git a/templates/actor/parts/tabs/horde-description.hbs b/templates/actor/parts/tabs/horde-description.hbs new file mode 100644 index 0000000..37c6051 --- /dev/null +++ b/templates/actor/parts/tabs/horde-description.hbs @@ -0,0 +1,10 @@ +
    +
  1. +
    {{localize "BOL.ui.biodescription"}}
    +
    +
  2. +
+ +{{editor description target="system.description" button=true owner=owner +editable=editable}} + diff --git a/templates/chat/rolls/attack-damage-card.hbs b/templates/chat/rolls/attack-damage-card.hbs index aca0590..19131c4 100644 --- a/templates/chat/rolls/attack-damage-card.hbs +++ b/templates/chat/rolls/attack-damage-card.hbs @@ -2,8 +2,13 @@ {{#if isCritical}} - - {{#if isRealCritical}} - + {{#if isLegendary}} + + + {{else}} + + {{#if isRealCritical}} + + {{/if}} {{/if}} -{{/if}} +{{/if}} \ No newline at end of file diff --git a/templates/chat/rolls/default-roll-card.hbs b/templates/chat/rolls/default-roll-card.hbs index 392deb4..31d3025 100644 --- a/templates/chat/rolls/default-roll-card.hbs +++ b/templates/chat/rolls/default-roll-card.hbs @@ -54,15 +54,22 @@
{{#if isCritical}}
- {{localize "BOL.chat.criticalinfo"}} + {{#if isLegendary}} + {{localize "BOL.chat.criticallegendaryinfo"}} + {{else}} + {{localize "BOL.chat.criticalinfo"}} + {{/if}}
{{#if (and isCritical weapon)}}
- {{{localize "BOL.chat.heroicreminder"}}} + {{#if isLegendary}} + {{{localize "BOL.chat.legendaryreminder"}}} + {{else}} + {{{localize "BOL.chat.heroicreminder"}}} + {{/if}}
{{/if}} {{/if}} diff --git a/ui/icons/icon-horde-portrait.webp b/ui/icons/icon-horde-portrait.webp new file mode 100644 index 0000000000000000000000000000000000000000..092c1ef090b21f54664fc112b48f7346a69bf521 GIT binary patch literal 46014 zcmd42V|Zmv*DktZ+qUhbW2a-=wmY_MJL$M%+qRRAZQI%1&$F-nZhZUvI6uyHYObnz z&#JLzaTUfrmg09Yv8H+eKuuIgUR9n`9U1@tF#hpJAb&sKg@xrufc`uJfJXj?pnsBV zY@Hny#f1pfH8cq!wgEtYu78|?k(2$u=)VmANIfq7D?3m3UrPKxM?x8!I2rvBx&Grx z9sgwhr%b4SFsj+VnDQ?+{1@~5#jeiw&VOX&|6)gFMd3f#_z$Ku`=7Ak|AdX~9skNl z{gL6ZvHtNlufOhZ?O;u8Rh0hRA^&(>fD=FwAPx}vTmL`Lf1F(b0KoYG0D#2(C(bY( z0B8;d05Dho6Gxf{03ZYb08P{XiTh8R*c&(+{PQ}{KOwNGDFAR=0sz2i001a6006Ys zKWTr0|4Z2j|0Lo5DVN=!%M4%*FaZz(z5{FlMgaOhi1|;aG6C2HrR61D{|EwM5TZ*T zW`1Rhi39}(uq%>E8zR@++mXEH_WFL_<$k?y!7RGn{<$CVf4xlq8}T_d}KeV*PCUiH2RK=t|$wwAv}?}T5L&#vA*aK7$F^(K8g?s&ckzLtlZeH@*%=$(DLi*y_*a<4>U6HXDO znKTbC$E~B%wGxq$KZuvS(6x^TS)K1BVSx8V5dn>`W|E(b~;cbfhzmv|2JtlGK z7XI5}&>r}db9J1N)Qs=sKmL1jmv!B?bN1N{w|Na`TF-G4+K|IQ7 z7VBGE+n5{{2Wy&5BB-#XI2a6}mq3kyF`jbBW}$jIwqFCW8(WYpj*UK4&F(Gn!*iy&;8xU<|1L3 zTNIug7jo+y5^YfDHL#5!-r^l^1C@~7DRNhwp|WydeY)>}m9H53S0g?u?Kw-x9*&*7 zRvwwZ^v1uLv>Ge6`NI2tzOA?lDm}~p8Bd)cC?1I>U3xr4fNkpHkQ62q;KaPfv)2`H z`Q5YcTdIAfuehH>2u-8MBeJVc%oQ8svx0SBOB&*Pmz$t6+%P)k`cduL$|hK9lXT}V zjYTs4%uE+loN0;)o2_j2byPY*jHVK*5Z|}po+*=bk%Rt>h$9SR_)bJxi}<%s3HS$X zc{(nnr5Kz+kuas*Tf7d#U%D#;vGE@moME2URS7N0$7E=_-4_{BDBbOR!yQr{H(fkA z+Mw19tCJ!-zm4MJG`hSvy}4#aZ2k(a7Xn~Hlwe$=%*OVG9I*m$QSRReuYUWW7_oQ8im)yR)=tyjCX{fHscLp;VhaNx%n z(z;3@6N}2pJ~kmWHj_~xaouXB^X@do{gGlEV<*98W5iayy#ntco$3qTx&x+;d99L! zpW^CIF_g=R6SRYbCKMRu(w9xe_5dWCrZz0Mi`Ng0eWa;G>t-`|;`ES07xnM#;N*_x z?qwkyL9D=)qF_cQCr{>SiOK1g*nICQCJ$cwcthw)T5dht-ZEwHZORz21K6&2EVx3T z(O%$qXn7EAs&&qSF^#?-5qVzUY=yca6#%ToZmbTv-{q}YvhU|Fabc=y?~I7HBwerh z{?v0CE^^+ZO`3OzBH3KL%d1OQ`{IE_k4>56T93`tW3YAQgAOiLQjP!F#}uK75eWD^ z$J9WM*lVVOy}`R#*zAq(`1mvSIu^c=Bc1>x@|&MM2Y1wp`iwCCO>{ z^^ZRr;3!tSNLA&jQ}R|5M9__5p(fS3v}3Yp#8;Nf!ty#fgG&X{Qe6i%egWYfbbiVX z0nR(wp5UOFz2A$FWhcwPTsDZzdLGkiL|9zFoiXUe$*n)uh}ngR&xr|Ed1D0D+qX`y z6g$93myQ{0U?HxPofLCUV4sjT=*o4q;TK@c6JP8_ zPL*!5jW;1{-*A_}zSD`FF}e={I!6KrP!v4QOwL|oK_=;DsaM?2>G$2QMa?3SQ!iKjmEbZtE-D9G7^-o(Ti(|t=3{*cC(+K>E6fY($InVm! z_}#}te6fwWh}tPt#^`pDJPndRJWM#hRdr*AF(J|(AqkX1d_NhIu_Ic0A(14d#WGFc zeDfd ziYmZZ-KF#-hWW02+%|bj+5C8#<+|pFgoTZv;M}&widl?`S_L_Q>fLBg722PlI{HC8 zFEkBv3_2=4@(yaoxHPsMyJ_+md$5zI`j!iNtIgj0pxY|JS`pS*Cu63Pj_(lONvUdj zW!V~q3MxdpA^i+dd!v1|b4N|$eX}vP4jhx?8Mcsvrm?^2;CNh4=Nt5u0`T?uR?QI> z4)mVSHJJ1rb0h4if^`K*$9>U^(gkhrIac1ALy>$ScjX%vvV*Z+e_lh9^3E?FsWfBI z=~ku?irKQHto7gUZ{+j>KQDc)jhWl=CuRl~xqOz{^i*+2MY~&27`5;4U2q_L&2rZN zuGyH}%}f~-K?5;l+N4KO^Ek(4KHwV{(A>5f%k!F{Eh*_d9G@~6V(5C)+pbC+>&bv6 zAy8Ox{oh~vS3RVUA1;8}2H&XUM!v1SWQbd&}Pdb2TQ+-S(cM#uJ5FkLFJLX?L2 zooIQi$lH?>QLUo{P~mqaH8da3xr7P@`J{|c4&tyCr*BVR%9L-~$fGF6tvN)3W#c{cB&2Bg;F%i zgzVlWPj5d1sj4|brse{f;)XAsharR{Mn+K^Hu~>>w_&>&HQDcCJ?##|nD&bSTz)a{ zN#u~~W0={*!x4v3+t}JS?5>(;S#|uxanh|;A>;eg&5_O~PsCwegIqvnTCUAvbEDRl z{JYojR2@Jd^;xz*s}u)*&2LPQUjcm>mWj2b^!T_GDzq2j&&sza2u6a?3k;_*M80}Q zNpWRo;>2E-pCX|(Z|YS1LdUc;I0z?!PdRrv@VB-zEVqFG$BNONc!Zjt#OdhWevUox zi=v-5A^jO2vTFoO`t!sUD}lXQRxpm@lI>J`5|vQwz%Y<+4x{KBNBSD#9CA3xE%F~DGBbE5h*^V}2vN-Px z_?1Xo?Dgl_rYX$oZV*axG@_1;5;>SIHYgPQ=wFgf@U|pgb`u`$83y6k`^9FX0o-E} zOrKMpl>+MDoys4YRPzhQH-;jAlW=iC!b8y(PXF?iZjJd3L`rE(7W(Lh zJ9~52($kAokzsWg=Q&KB<#fQ##H3HQA72h}R&EjZtA19~Sp9Z{D4M5|z~{m6&`oS5 zKQmy2g(XR^^RkAtQ)WGqEwJ4_n0jVwNHXTn=H20FJ;>2XZkKo-o%+HVASApri7G4+ zdCH|D7I;-al6se*vbGFc9VT(Rn07}3s%o2bTj9owKi9NQ1qTB+syQ$aNVY>#(Rt;R zITF6nbF)r%HJs!5kg`a49Vpb9&i*-QyfQnb{-(N$8w4mZwy1Bd0xl81rG6-L@T-Tj zmj_4`iL>sr4J-+)+tAo#-o>m(0FNpSbF@vs^b+M_GNE<`vx=9**sB4WRl{wf!btdO^?_%(r0VXkAe+G>~lRo*Tr z05(po4K@}hBh&OnX8kwauX4dGkRWGyvoUv~J-@mL2m*`B%F$E|Fy)4$p}}skBesie z{R8UGPE-t+!!Mn8lnj!(5GX9VP^9!dSfuFZPi2U}t<-RZy5i6Y8ir8VAah!NrD;7N z2ZdlNqip{oAL$i;U!m^k)A(VP?P(_jG!cCa!|LVva?1(fqo}Y=zA#@0*}{XxB;tl~ zgtnnLknlQ?iz7>8(tj2|Nl`BGJMiaQvRBxZB-GIsq_pBQP?X;p?knlGLHQHP;a;&e zHqq3eoEbd^$WT5p3KJLbgn`1enWJ2O5nvffCX1S2cc-gr4yl9vK$)1q_%KBV%JwQM z?=oMv={g#q=4NF(RS{h5>>4>yasHY7!$TH{8B?GQ(nSRJ+a|E1?$l1!B9R}nz-0G@ zU|$I&4kHWe-Gv7CH=PjOHmf9UPHs~mie+ij`Mb%+X{HsAjDjc7mOJt6m|2nz0)@GP zhj2U^

E7=EZYfo^xpJ!B#5Cct20qoZC|o3A38AyFJq#-Krpim38NF?d3R||DIk; zfQXc3+Ff6&*Q~Ks1gCL2-N`*&K3Z~xTM!%Ln|*MU%~j8>1+7g0xEokdJ&xU@+VU<3 z>;608u*(tVUB7feD^Z|2b|$(y5BWJ;ZdeB2KISmsmCx)u4mg;ANe3hiBP%8BkH6nD z3r!e-$OM>b`=FUyoAIK9iy-)mS>T z7B@)m-LaF@;xQSr;;E&6XE1x~fjD?iQKA=w%g=e9^mgX&{CkR}#o)o}%AlQ^#gD;_ zd+(IZUBE<%;1POtO>ty`RTlI@(Sm@Tb?&@TE#*q1xdTM^Nb`c*2lPo8OPZSNwQZNKmyjH@TM|0~v&|78yM|+~60sBHNXk zeIx@DW0d$iFeHTXX?sQch6k4w(P^T%d*eDN3e!+}E4`fQ66z}cuHe*Z?jO8O>)4kN zlc*TA@^&=38cu=qa@G3Kc_A}b0NIul$qs`m&vaGzAmQ{RrNb7{&;^+31#l>mkt1-16~N6y>HxrE(O^1ug}8#>->0F z=O|V*|JDM2U~kF8UzFR$nPs(Sf3-KsWitp0jEds%nB+wHZSGMxoC1*S)ChEnW+6yj z(hHo(x~e#INgx}@SsSGh6*Bm-dvkp(724>jUwvbZy_Ev|n~!(C=YS>B{nXb@cYpW* zRampQ2h1Xd!)*F3Yr$w4TjL^_veU)HJUHp=!{8H4ke1A}7tjUlu9%^Knf8H|-xqs# zPMa#GBQmb-M`d8NbBhKO=fZN@$f{`t@L9BFl;qR~ISWbBn3jAV0cgj`qWOD;YU@y7 zG9(h1LDSx%P4>u{%hD=1BB_+WAEj0$+05P`{W}?;&){axfM5djvM(dK@NtZih>eHI zJ7X$B=mHP`b)7#};{U0BJkKO#fhf0qL5V3L4yY^C0fm87GeS`<2LTE$7S#Zf8xX2s zGIJ5`IBIe|6rS6mVDUy~T0Z<5TXS@vjw6&8TJGzmuBnrqzxh4fk9uX4PaP2CL|Ts$ zqsNl(32)UGe2DQn3+Sgom|7NUeeJpsYI?EnJOhjR%35xdF*4lcJdGwM%yCbd2WKE` zsNAP}#r51tM6BGz_xT!n-$o&E#@plTn#8!)OhWn@jY+gcjvYr9n1whGNvmeIQj)|9 zv64iM7FE#3%<2qb-98%MN;Vaui`U7YB4;AU3dUsaeCbf~_Z+KRXgdyS=Z7dM|5eZ} zhBr!%f)O-7C@CsSfFL}>^(|kBn=A`YOSF`++;*N-NHZLSk-^3<*^Jk~4%Z$*-^dG6;ilE5-3JvFJrs2J;VPPv9eQ(uQ<_h2@Kx z+D%5nu@dHe$T$FYs}WI+5PS4NC<3JfTUgd{fDUnsgnjSk$Yg0vO}GY&0dsGX)ew z3lt(q=7!uay3daHItlJr%wl?j(jaAn`U<2S9YPRn5Ql;Si3^0%s)P#^+g4%{- zz@^4JB|cANTwMk{GD=NVP@c>mjUA@S0-lGhOdy8b=FvNh9jkY zv&X*$MTM$LK(1=aKUdgWVevbNJxeN+Z;+w8DWG$HO-lQwdP1I*JA7sOIp;WFL$@AU zfae=y0Z24NqVC{Go?Fya3wHQl1uZ&<4Le>2(+%XhI5M4d@fr+{N%$amoDbFO?r)m>>dFq3;{K|ai@)MU>Qj#z zd8iPx4>RtQ&luK!O#uTw#CMOL(W_Pn+;xO>)2hEcVzyLYd*|IE=@+yKw9_w&B2%@pvz2CGM!`zA9^xZYe<{A?Dst=hhUmQdW5In02S(r6L;a4W*B;PUS7y?2V&XyD-3uc5xuVPwgI4Q5YjK?)h15swc8f0GSTvrh** z*{IJk=0gRj`M{^G)f}$A%qDwazVM=k) zb}ILR&ONr!xt!wiks<67Fr@~L>jPf5r{>4Df61T`{Z+nOd7_oZs%iS+v$%WXLb-gm

LhCVijL7DPoc2$KK7RR_=zZi`SV(|omhS9ym?!=bW6)SfVa z6GftHnjcvBEP56FuHBl{*=gQZWM6X@2`4M}{wd>V`OP*w=In(KNGB>_&aG4v{^yhv zr;p83@J|auP$`N!#AAq;BDI~2t|OB)k(M{T$`tR!DY|iD5AHKM|3ijDr1VQ;F~sbV zz@n6_)-&xVCh`2-b_Jm){dLo9lT)}GB!;4}UE0AsOEWkf>=k|+5kn&*$4?Cuk&B(# z!ExIyi}WkQp>3e~z@c_xkWdT0YNj~&fG`0|Fb870T zn2J>2-E*`r)LfwG+HbtTHjH}6i#ZkRjH}3OS~c%@eMR+pha)IWEp3FQJO(5BP5MLM zeVRo{m>PdrW_Fqw(viWHx#Ze$wPc|13MihtetUXyF z;vV9A5?^j}NIm|jQ5jvJiv~t`(BexMPv-2K!1bq%5Hg}A@*}v=Ag}p?vm+i|s-bB# z6~wk;eWzP<^=R#9k)6Ip*po3cXZYB-LL%k!7miO&fSjSuCGcJPGup;U{j%gnjvgG=C!4Dwxq6M$BP$M#5%$##kh0|HJSGtg(}* zg1QB5(2OfcMm+*W%Xd$$QeL_Df7lX%49RKd)XE3x2vbw|>eYOGKvX(5dz*CaacHzx zq~({b->LC&x`#X;C6u?~DvQif9ScLps#nYzd&E!Z{$H+9FVJy6VixK{Rp$$UcLKBx z<2j)Rj*up=NX!zZ!m%0a>2&5S7eY;d6v*kD5z#tXj>{>az7r)r1K+;Z76!<^eCSB& z<=ikEVahSfX*K@bG023-{st)?;Tqc~R)84@Q=*kBd=4~P8pPIcQ(e${_z|?Dv6@4p zrzb3(jT~bY1SI5Zl?&P-f{RKMkiv*n5-`BmsCS3$uA-dzWsCC-jyYWUA6hI_AGB(^ zUHtkH{zQG}XCg<8(R1z*66eht)GSy*d#}*(#2y-Gk`^hsu&LPBJ{*Uxai+E(7gw}Q zU5ZuY4|8|9?Vsn%jSvJoLiFnzXOvpcMV6*^H9HDt^Cc%^gbTErWhAR(A|1FlR?ih; z>~(kBUf@OO6CBEGKrWTxGKjfHoyN)=XAaNNdI>EeFHl6GEAuUA-%2{>)ny(3GJ_pJt^_;q(L|sfB>)#@Asz*JJ$$)){hy7LI9wsvn3gm(eUy8`2@(5Q#_U73bmkP`Tu;4_Q8MvW6x4R~Hw zf3uAAKB;Fh8eFgrbF%zAYtYrue=hX+jhDN;eOuI^<*!DYk#`x68J1&yCOFk81B}9= z^|ag<$(gm{+kU3HedC%|rn2=E0ccC4>iKb<>m6X6^6;0e4S1#5!zc?sBmJxf=S4Ih zD0mDZne#|anfP&yc)9A*7FwFX()Cnq>KW;=!k@4~ap+m!w!mdOF`AZ6^6OCqlivT; zbmQZ-)OQ}M{$X1Ebo1W17fB6o6_-(LsJPkm_wP=8{Rm-ny4@`4ePj}DmpjgM@xk|x zrE5JR841~b%%wg?z5TZVlO)+L_h``E0~Dow)#6Z*AI<55tn1DlY74ApwKVyqOKf}b zR~$_)va8aVSN1SlFnQNE_v)9locC$6}aH*$rs5dp60lm(>JXv!~D>S~Ce|f~ogH@mO+~uFWBU(>`+B8%V~f^k69gq}FSNt#0Y7UA=?;7R+pSY<`BB@H;MVfMCx0XIyvZ zbTW1|odEs@7&@rv%w-?3!2OA-0Q!5bTVKeeVT2ue>?-y4)E0|== z&V);TDUCfUqaA^sx68x0PfSN_3f--j&5Lg(9C;&pl#%zbs~c`#Plq8im|A5To^$=I z?d}=8R}C^dpd>)tcpN{bmhy=~7BV#f%ioZ`;wHlHtZ_R^Nhg@Y+SbS7fDnI`Ic2Ny zriqJzSE5Ej{ys(=I}uso+q98CbD9OXnQDKQJ)FEkjVGx z=$hMe4QpwhHYQODJK$XX2-h5R6t>!*HpfEy2|depS~9!j2%S2&?eH(z-Ipz4m&z^Z zvaqtQg8f>&wX;PI)W4C=(>2oC3(r_#wpZKbD`dbZ65-1KC>C86jdnq$B4}b%m`~C~ z0CC_i4$1CerQCsb9o(hw3g(_TuJ?km*Qu{FWs2dlbitqSQmT3uO{3xq38t_uB*Wf1 zzeTLq4X)W_z*Sqr%8aC!nutjG(q3^>1R%kms z0-E^Ss^EViR*B*>MR7;HIxy(+_Ft^PByBgQVw`XXR7JAAjhvgEcuxjOa#k8KhsvDA zy;PLplIVl!6ghCZUtJZza;mjoR;7)Ek`K!zQN^X|W2#c~ zP)A)W`y8LPS)f7se;K|~moK{1R&mN?((b2j5kwsti8M;FkHcN9eFbw(7r4lv&R_s} zQO)*SMz(=JM2MR6ViR#z!-(Bk2@)lD{hDWjmZxq2hN>Bf`A^6$FN{jz+>J>|Ga*L5GkYEM21UGujNmB* z?~dgI*XLd7V_EA!maVmU9g=Ao%bV}|?>VruoM(jYTqOLMQCd0tD@QwvRo35mtnFV7 zS=qqSWdXWC8oVhE6_$=D00Mp=wyt&&wmcrXwZcz})hFjUNk0d6LnB)$g}1ams}&cpCWtAr##LljFRoTbChR>5*g_*$ z?oSo!t|V1*OsMfSxTXDI{QY48w&N99*~{pvXF0qDbYBsMh%m@<)ca|qj)P@w`&z~S zGAI8|GCdXE=>0px%5fSM>2OSSHT82$La~rvtsu*7$=yh0x$8q-x3C&5m(#}GX8sAF zq5D>&Mqy_MgeX+B?F8G#4R=a+MXbKl)6|yd*8D-X-y)C(t|SeuFNLy)iEsin#?+6e zA6)dB)DElfp~n6fb0Rp28183F2h)N7N|WKWP*o+5Nk4 zT^8tR#II&t1kl}KUasHgg@hU|1CAtjmpLAOYkO67kTJ5)SAQ9hnTD4K~xme;Rh{zXCG!L4qAWkN!6s7&{t|3Rl^MXz@igE8>nwc z@iubmTKrD%3fl8R3B1q6Rbsj_u&hN`)eb8dJ>WG4j#;yQ?Z1HuS2!{Xzzl4o5O%dn~B`D zP{JC9PWoRXG87m0=;m*7!WgRH6sI&|qxba4L!#jSrIlO@9sFO4^8aVnbi@F_=ljSX zTgw0LF5mTjE&!*%lG-$YY~t}2D}J;4NlDR<`k?gy)ca}5hQbf_hoK=IQ?Bzxx)*&wJv%oTN-0_sZsV;HfXQi8JtB}Icj z*t!H}(d^JKSewV^`j0ek_l-85E(ol6jsaZFuOpX355WlSqhqv^KM>fo!x;Hs6k1IN z8H;nuUCCTCf=VG-DEV~!^u5j<7(gd_s~6M<>|D4@{4Pn={qV-IL)ujk?LUjXmJV9a zJH#G>mi+lYurXbU6N0{FzQ)5yq8mWaI~s5^^kG-EmO4vdD+-O$y`T}-zklG4)Ewmk zg+Ye@w(nh(54KhN!hw~*+rXIPed;Nm8JJ(xf*@qwpoWtm0mfUkFD(jz+v^kk{(V4v zweAH$Sg?y}KC+=4s-otp{nTU<d zRubjyG1O2U_~j_HQsmtJMQogSHRW21_yf0grZ5$*k^`!M_1vdP2ZKQYoY29cyxznE zJoEGf+*lib5=&vj&%0=C$H$D& z#(ak3zVXiiBVIa4=<9-hJ$TkNPt#5&LL(*GAe1XF``d|-9D#=h}-Cl>j>XwhKi&SStqdw)2P z{JI6*^3tBTOJ2!E>&C%AdBGQ-oJj{r->u-6zOYfis;MqNueG$z~Z z)VU73Z@#(WXnjS`+^+0!2&OW70NF2Ib02Z1b(Ll7XX8a;Pt}gZ1xfxSIxh z7)XLMK8pP-rnc>&;K4yDw5}c6N14-^?m;Yj)cQ%t@eXPb>#11}`J70W`E5BIanV`) z@=o}C4~bj}c*P8+#jKg;A-ciEtYv%|kd91#PFG>E#c?nZBw(4{z%uIB0PN`{-;jER zaQ4df8&c$`rQj!s@Kyjhf-`^E8g$dK$)%h!r@k&&n1a5up?zrSbm`=X{n%gur1KN80Uv$cLFv}9qD}_3&}37+j56h1p_bMB z>AUqOs!*x%j|60Zs?w``a&Hv?ca3`TTC+|z3r6=_UL{U;6Kgg-l~1^rp+D4BhMB~7 zZZT!qOl?9+Tsi7h9!@^wF4*@DIPnIO!4l6Qzc8S{w!+0_Kyh3Z^|?{GcJe*u>F4)( z>=n60uayd9+3aEbhTndz#e2rd}+YYQ1A+JEhfw;0abi34DL`q5~hvK;xFKLdQsT0 z_C|;#oRVIe&AYaPCC6yA@oulQOh{`pPfW20nXBMtrFFmgtWQd$BGDrH^~fC1bptC+ zz$`;3j-AahCI%(TtF$=Pl7*poV;-Tjv|wZoel(oaLY}YMo(hO)iJk;a4()S_f*2Wh ze^v3~Z(^}#?}k#j>m9-4)Yh=~*PKR^=d1$t3rRkc(bNBQqPNeYzu8eH#ohPY!f~`Fg0>U@$;O`q${-S zM+MpnI}PsDk+X1m%vBLvvH&jb=BI?JdKtWd|0z`Y_)%soVezg917upUng#+ zPFn{W(93mx_GszndEWVF^l)7b`M}VEHCdv-_-wLXm5=XNs>;7nQD6mMhPs z&79VBXcj_dM8wEMzx3A^4|7+6g6Ir_WW|07yuJZmYczX(-b0^C)k~8#`it- zw9Qkl3+F{XIiqcy5OduCb^=bZSZoF2&F}J^9~mEHFJ@+z0ltW1Q#*Fywxp%$oW-tj zPU~382P|OCRnDN|WnX02MNt)NnraqosCrIb5Ejhe9NgrsmGUHWo?goQn*5LBWvL!2 z4U0gOm)H+#eYtH}wQ}h`J)$d4L~NBfB@ayaQQ!5y3VEiKHD7eeEg5*t>x=bO^tOG(~&kCED zh4_1<#uRC4uXba5!T!PYm&9BibkA)-#*5sr6OGfb;Bp7(-O&}a!Y=B;6+t9PyXVe5 z8K)_IXyku%xXVi^D&&wJ|Nc{0H*3c%o$- zYl-m}GKpG9PHSe^ACic(lJ%pOjgVv$>M3o=T@?AK5dDfk zMpuXN%A4L800ZL1J$8wJnBvzva*vUtSt=8riY0RqiPKS&I7_4CKYG#Kn4@8jWhh{| ztUEE_L8VUC4jagEWKFGyB%j3wBgmrfUZjN{pETc%+frlIm6HZWc20+A9!g|N$RQDN zvX|_@S#ukoeyPVwM$lB;#BfyMpAKHY5JXmga!tj`KeaE~19;;ypQ1um?^BXI=1NV? z?y^IwtjUHYkIDRrreBif;#e(nOxx6DxCT#8(+L%H<@5_{O^)0JiMX;FglpHkAJYM? zPvN0hUav1}H7l)bk3EwqFd(c0KZ^|<>hhGKfWDVEXy^>!k?3romws7>ZwL$OItgr+9YCtihUVw=E*BDwDDy-kC{tF3y-c=% z0M!o>^{@mdq;653gDn${&>-|6+c9f1l^ZFC&qS0oiDnf0Dx>Kd`^I|6-35$zu&NV4 zdDzAt4lOr$O0SDzIzh5+cfYg**ebyR`jfNe36X~`dSr#FW?ptM=bB=N0GqRnoGfa( z!iFcvQr8FDx!g0ES$dB-*#oyPMD4ZZ7j_`f_vI4@C-TMCXzsHXSnY(bRtX7pgVuYy zdHA^(!+#9z6YGPX+4HEy7e*@iz|7a>;~^mGOfObc^-3GZ#@sF(M19!DIC-|~)2qpOnDG!7zn0;~mW7|`n4 zPf47$4%uuBkQWSisIfF7{`n6Pzo!*)H{|N26}u2F19CI?MSh-ETKx7tEcK)i`<;n6 zD+`A2tBM7Ph1EBT^;0mOUVnzLeb+#^YfysK3G2YxN!FTh-(Ns6D=|_EO|OD>bP?mQ zeMRTw^8_euTZ~@oMU^0pkM`4*p3>J2SWmBw*mF=F%B`(uvZkSwI~=&Y=(r_8bOtXg zz>2<19G9;jupw74#UQe6-X@O#~Kz$ zzBGDGEH%A`w8mW~M8m#Rfd{|R@y>O_#-!9UbjlJ_A#uH=To+%{Pqx@6-Gr%1Q{!H9 z)k)5a0}(Dp8X{p-BmQOPqkRr+t?96q^bz+B>BOUx0>OD!||#)q6+sfv-Lp7qV+r%_{+tgXy-A&F0S50J3x75E=r+F6>U zfLJtR&U}e1C<&vlyEz1go0z2zOx7k^l!8%B&19wfQQE^vk*VXpR}POi)CiNzHs%^L zrD?mP(`3Ictl~BUt&lBRi%4&#NX#OS^_063u~3(TYl7)1(~ZC+zHOj zrHT4G1$qmMO0CiZ+uGrH{NQ+XM}-Go7(xe`upwl9JzfF3?(4K`o%zet_4k{9u7QX@qI2jkG2rCS7Ty(MMPH`uOX85)y%G{II)7*O3a3bwY zOH|(?IP_UaTp|uDqI?FPQDJ)^zV+v)Lx0>z93FkefGgp2Y)h_nr9iEIB*q+PU6$Yh ztH;+0tLooXgK30G4G2)*+{& zDRJZ=Noi)%N|U`$AG|kkX%gyxpjk7^!oI9kWn6%R){R2on3n^A%J(uPG>iZScLk0( zEQxUKr~;D4l1F97zqSN?xIHxLC3S?xe?lpI`~ZJiq!KDDZ%5)Lq!m{ml>Y*8*LU_E zp&3SRU4Ds2`5i9HVMq*s5>7L5moT#C`_g2B1XRt9ncCjKVWY z4$QX@qlf$=K?yxMcf4D>B>~^NEK9}2XrecD{hWjE4l-5Jh6pIV>&+*ik-_vQO)N)s zjwjAebWq^i#+S`BDUf!aIQvy;KDNh?T2`}n{n#TM{>4*zXZqU-`||pSfeElhogFyV z%a;@kc-IH1N90%^FDpo|jZ`Hbs`pW=67Xg#ebxDi71cb&Pe?bjRST7loXZQQf&G-z zz|9XomhS!pjmu(E9AAep)MBDznS69-er#*icTB%7KQ2G>t7$N>WVU`A*em**ZDhzs zX%CuSfwN>UM5s;@gmq`zV@?J=of)GRey8bUK{}oYrtX61YIo@y9RXQiB^TBP1ES@_ zt8X+g$nMWEcYGq$$lq69D4@*DjjEvcs~2e0+5wdNLE1EiDM)h9Pw6S3kF+1_hQth|f zS1MbqHdzB=bwtQbr8M}D#2zNYWzc+dd%I3^ISOrT? z^JvT-l}O6qZV_ct-^52=7=4`}KEQz!ZPZ?K)c;{;$LH6U1PE$UZclbx@kaa^rn2GI zMPI*sA8#K;Epp@psF1oc42mm=wYOqMH*!H5>RQsZM=e#g-S%IsH3>PteTFJHXB`&yf!g`WiKjSWB z>LgFtYZHKs5aX0!cFMqq%+l?74K|mJR>*UN#sA!^d9g~rH0x|C_RocyKj=Wxpq<`K zSdzUzzL6oCe7gEU9BD-FqD=FHVk&(DD%S6jMRREVlRL%|4Vi3O=Fz3NSx_Dwot_kB zf)UY#ik+9hO|;3U({oK2Icc^S-a|OFRqt+rYf;)pl3YF*)ywOw51rFZIpVt`+PEeN zS_EY_VuR&^&H8O{(2J3Z!B!ZaG-*gwLQgO2FJKs!;W`x zPg;01pgWa{X5$f0als%V?`;YXH#*wTBD-mr=4kzDmmwZAJ)d_<&}9Vj*ph$0G%S z97v;zeV9vV{_pFpkZkLrCZU6-EOrQoDlHJ}Ogd&gR16HBK-)ds9mv3*ve1K9* zmliBCW!++hFL4LlT*_4{CnjSa9-0i!i=<{vl@=abP0OQ>39*QST+V5w(Dg`BwcO4Q z!E2(h{g4ZmqQG?xj5Xm@BpF3}O-3_vZyB4sQTX6mk-QkN=8wU^alRZsg}z|(;{@Qx z_>)oTwClW=994Zh3t#N)6`nb1njblTnR|NzsZXp9(vU|TXFfifd>cp$r$Jj5hR+A} z?${j`4>*N87RWI^1ke+CB2T6xr`i?A5mu%q;?liu5j8_+%Vd#ce51RwDNlU4Uhaf+ zFdFXSi%~38aQOxXd9IAJr$-|C)8&Ab9|$pFV)|Y)BYR+jZeFVlMPWm8CxfVJU>!xY zG1IeClr=TQg zGk)XOLJO6(-W~K6-)dF6XttR+xCHOGP?T*iL5i6s^TV%L?mhuid8pdX9B;eu2W22k z1uP0~iX7Drh^#UXDdyI=OT<$XJ zlIF#kAve|yvAl8@);SC4iJ#>(~}@mM`7R z*Qya_6zsihE)BWsY@e>4P`C(@h)!uj&h|}kNDzTDmqmK8uyb~|Z7o+dKGYU9B>JG$ z4JdQ&0%<)A0p~#}IwCX=*QW+6mRZ^~SH77KPtNm(e~~kC8f~waNl}H<_>6ku#nDr5 zGL7Z*GA1LO?9tltys?Dv_yC_piTa^s$uJjdol%PmsO8O{hQfLavT@FYJ@!?G z2p5??LDdN-1taVzrFUMT0Uibd@K4_6lc z4Y(R~d(8(R$GcA09sNelEh4^!9a@~%shi}r*)m^xwm#}^N4Ozp1Ae7q-*ZK$!I~~D zZ1b}=H3_YiU)#2W@6%>iX~a%km#%jRJ!l^-YxX;YUo)x_u#D`QvhE~g8!I0Q>wUT; zRwer?qJT6A7F6y3ri7CoL&UI{K2YCKfEt=Ss6M5Porx`i~QPnn9OfG3k8(Kj-7q?&R;%;tWU zQ$Cvg(BTWN~BV)R=KxX$i3YIsMIjf z(JlFB1nuXNH574>LprXu*ak?e;HmKpuA&2?ek=qbwc0$Rz4sohH}ZEp&otb9tDjND6UDz zZqJ;OErofnjNbgc7&&Xbg!{<{9pZ++pm0K3vhhVdWFaVYia*wz*AqDKUM3F!pZW z=*=l{N$nLV*ury|3Slmm)in@=+o2Ck6F)%48dXkDgg=LV<948n#gh(0PK{DXls?rQ0%4Goz3B zgOV(8FhYa?hn&AwB(j7DCkw8C(hX4;*J>9LFHsDgB$zvcQv`f?(!n4z z?kY(bkPZe99%w`~w!jY2$BmC0{>S<#tcY(I^|6WfPZi6;0bmDyqs<8@( zn&e(5hF#UH%--43+lQ>eAK~|cI)DN5Ch-XQZX=le7eElCo3APDYuc|IOgrFKL3>>( zR3a0GNP9wbXx$a(?KDEH4i*O8yD0&&c@Qrpk|XjZT_UTrwQ?eO^{L;xEpTp-%T$di zFrtV`c*~G?`D5kn@O^of(S9}hH2ywqm>f)QSKZ&mPQg)5sIMhy7<|{q`P&n@bWV!a z2-uNXM_WPPorDJ=I{a{iSoZ?!5#s{}zLh^V`|9U@G&~qFy&XFRSJsA`bQVVNKi**$ zjsoP!YO1EgpL8=Iy28y_1jNIhFSD|&;qbmu;iK_{vC=eH_VLR3w7!AseC~+1DoKjXFWX*( z+4mmvykVHOs({@#39Z_CY|rilKo7>XvYwIqETt~VF*TuvmtrFa-~~&C`;wXTSh&OY z5-9xaw1cU}V=C?|8|}xgria1(wTtp9rCD_ zS=xEO3`y${8>I@hO2_cR!wWN6pUe5iteCgP&{d0vH$(KkI-_-XAtNBIx3YzUt~uPM!aPr>FkCvj_`<+8<`5t{zj6N~`*tJ%=6H5e3fj@q%H z$?`b8Bd_g8^t`6l44()g=D&dy?tfJsJ^|3o;oV@iN;p8ZspS+_r|in|zJdt>6ThvP!>=AJ3UFx~G8#z&ne zvH!lxsWwvF@0m5lFJCk&jF^%mh??$`KKV)0@U+Eu9vlapkMa7AZ+@-Ia((o$0CKx8 zTrjmGnuafl0iIB-8bKlZ1POTu|7bc*zVqB+8Z=1H;F&pIrsA?4CiOV>Z=(PT`JEiO zQ5K{#c^$m0H_waQ8HPTQXU|lk>=UQ^9Js?pXA8`PLh$vM`LNTZt#meCwUhYgxEO&6 z@)k$myrSw~W<}LQLYe8+0`MCmFjh!=LliK!(Unb(&TtDeirc<-daHLj;E21nZSK_; z#g2XlZ>PC}PF2`IO^g&(P#dn1+kU&bfZLaYI~X5PYv;A|a(a_Bln`CjynTFohG)bV zV*BX`wRl5QaJg{RgOSDmT6q}p^Z#h@d>&Bl!cbRot(%7p-`7y#&CDt=zxxvYg3A)AGf_ig9>BTrkUY` z=KZ!ZtG6Q0ys@aWuU84SfXcciy%4xW@1-!OOk79*I&O59RGb~kQ>=<2nH8}s>}@x` ztYOoEdZ3IQTK<~8G(W+W=W=kGcN0w~?BV8XyKEX=@J*L~ua|@+W@`~-av>Lnn@V8?( zek`d`(<+qeHfYfmKS0|m80sa%NRmi?5HYehCxTIoa#+`DMkVj3>wu+djSgZjOA~{v z=s7Iu?y8eXjp9YuYZ4RV`g??nlS!USt>yjQIG1l4q(ZLo4|G|@ZjV>3!)ABm6DT28Rbxz`8_w% zLiO^!D=kfR9X`umB*9jH??HwQSAc)^nIS>M$%LM%1}Q>Lj~vu^*{XSzqC6Jfkgm~z zcNn@-#gh`O;Oo`y`1~5XHD4W9gK8FpaSYgT&{!4JUL!qCo4n#E@7q|jHVc;9zU~Ss zEs>YXxXkiZTMkh$QlS9`#Mk1?3$M|?`hs~&ia%Oyl00nqIepHKoXr$8Rzwx@LBYJR zx?~4>?@njahhp3{p83&>$Wl)RYO}bPm$aYkKG!`F=66-W9*qO0EVwDiz=E=E@vo|v z3irN;MbCu+Nns6z!V&J~GTem*R`W>FwTVbgPclsHz&?wLS6_r~Gz5EcV+ZiXt=aW{ zBudWx?mLJ|&(f5+e2Ed^SM!0-Gawfi)~9Ok4q-aRmKxW2OBuP%OJ&*y+P4?Z>2VNG zg6enY;N>eiIpg=b+;e0KDbMPPxu5-~!BY*XzJ45=hUF>~b7}*nvQa3?w}52;@e=m)JbBA(u)W^N@Q_kMqRu#RM#@WBQHQX)0r{ z3$6HHOWr8+W@eyJ{vTekOgH5uz#KGC?Qm3+_(v>e4~+?kIQB-59|*Ucn6GiBP>V!p z5H}jdBGL0S_V4vo(V!XieGPZ2yQkbC>P=a8ktt6XQ*<*+;mRrjahQ-Zx-QAAG#`zn z=-ZDAy77jhaRdzc44CorO4CA)4PnZ*AGppk8w)~9&>Iw^v8H>MExP)TlF8r&&VQ*I z%7P77YGQHav#1iedKOrVvZnn|)>G64kIFrJAWHAw^e+>W6Hc+Ou_k3)<6dtf5^g+?dofT99d{0S&voxpU-i1AqHS%_7m3JPKewtc`E)HUaCn>A9MD{(N zjrTLu7}j?X?pGw!D==sKkGQhn`ilL(>~fkI8GD6!x-FD@ee()%5^|HFNUO6XxT1Ib zZBD0uOy2#ou_k>*)^p~oVLi=}7K)FDYAc}FWy|_0`0{feMh)}fec1iAr1t2f6njoZ z;0^gZQg!RI%NZ5b})9)|wr#z>Y%58x4qR{U! zcTGiF@<5jyD*4<&Kiv_G{1E+^80z;mMAzGc)k@et)Q|$si#MC66E0on6$o?+??v6q zOh!EayTgPI>=Eas&|&O4y|qVZR+DDIxC4HRwdyPVRhS#!rPVoL$3iPRWDWd+M;OuX zy6Ay1@e)H7Rx4~2j9 zvP%WYF{Yx{58(QIaY}+lVB<{mD4i(V^(Ew7G(eFQQIKl$0b3sGZhSrr$!&iZXoCQn z#XW|;OJYAC_gegIR5sxt@KeRdK|D%*KhwaBYTV=aI z;*SHw^3`W&(`K;VEH)u(m{bH&vsIHq{9lDC>Lz z#SN@%+`Y!x-#+=6lhk50eRNYqrk`QdgRvo!izr&elFc$GQYnaN5C6n{yKjs^wmhha zkIO4+LPZRMkoflZYr*ZUAu5&)Cu}W9tk*2H++TqaW2QUmdDiweWc2{KzC*>I6*9wt zyNn7W910oTWtY$sm&m%D1i-33#xH|mrjyyNa%=RR2&2twub#~%av(0nH^Bt~-e)kf zQi}6tvq6Y6iSN;1G6fX{(Qs>A;Hvz`5?m)tNe(ft=aAYTMbsNLAV{&Q_BJW=(-PQX z6{O)DXr=yIUp*|&S<`b8WFWV&w9~Vk?N`#(BiwqeeD)R`)|(*Z-6li0{U@ENvwejr zUvV#B7#MbR?Z|Kz(sjfIHMlJFvD=+ePb+0i0+Ma^`RPb&q`jeoR^HzLBlvumbA6@U z>3Z8mBGtO#9Yvip5*wR7*_6kw&pC8>=hQHUm5i9uL_>qUTuA4^au&TpJ%o;oaq;CT z5ZyB@vp6*jp9-H!MVe-`W=)WS+bJU&oyVqWXJl-_s9O`?C& z!MtyAecRuGX<0Sf+unoaa3W2|_TqfwUZ;IYhi7C@-}#~Cx$gb2wJys=3gVZDRNceZ zKiR3C>@*m0YEf^H8vv3r^`n@`s~nzXtAuecM&)ttG+Y-!tyE(VLT<;Kd+`GP)Nql2 z89=&)K*FIo*-4CvBnRDTF&MEX;Q|Rn5{C+G-)gFR=m>}l80&UEzr}trqnfT#^s4GMV-N1j@nV7>QXy0L zghgn?TS7VAwK^s->9SU9){UU{`JhlH;dGV|WR{U2TaiSQAC6_Tf^lU;XchdFA~1=0 zfc!rd(RA}K5)N>R6-*GDCA!8|(u>Dpdk5CsE&AL*XH$XX9*^&E@5yGCQ!Uv$Iw(~t zC$)al_Z=W1U2g}M>l7dBeP;KyN`^OKEeqi6S!a?|u38T8%F4ejRE)~PDIEP>$L~$U ziXMuGv#Tjg`<}f6CBB6mdw$^5TY$pmXImcBN2O-xc*S3FxIflF)0g*ew>ltt?0Rf@ zgmTWE z4%cNs#+zb+aVbpZ(p0kk)jet04ONf^(B2~n5PplB^Ik4;j>&AgT&jDX^(NBGjl7Mx zg|F^J04W%H%W*S4&|@ALfqA4rOuY<>+`-oTwW3r2Z&JzHp3A(g3PKa~CmwxLosTvk zz@GSr0d=s~*&^@gvEw6z!48C|qD=i4h2qw$B>7~luoN@v3P4J2w$iq{^KQ_i@@B4H z(W`N#>rHD#?=*HZGz-;h>~QzJeh?*K@le znVM(W&R`=uNl4G>i5++RAs8NrEk8BP}LVjDOkbpd&t2+isBs6#Silz zRpj1X1YS^OVUS2-xw|#ZU7K!^wC?zaOS-*7JFjS4JQG_6b+2qzIX78Z8%sP0mraC? z5Y%?UV5Z3JI$h~B%}4l?wW6?Q2)KHFST`_H@rSFxXd8tjmd7P1iQUt>`hktf(AgsB z4x`=!T$im;ny!7G3YkMH6Qw`=lh?Op_k0`iJPV!VVm*9?bYhT1JXphLEP6px~dCwXLd7CgG zAS0&hioTpmg*|dTy?RK%#J7j$rC}l5WXxgmLeNDd*IS>?JH2wMm(JjnISbsWYv;T&wDo_un(XRZMsEAfsidai7?|XOQM*&-` zPNir*hHd^3w5mRMU$}I97;brFshI&Uti!sjfNlWfP8agaP%Tk(#z4*R&yXZZ(u!n7A07xp5j*EWZv;Nvl=c?8uscwd)yMNJfPm z@Abojyp9Uj_P-Dry)S~$y&tK_*rRlzoD{}tPt5UdfSxlzx$E4-o`_VMgmOwniohIp%eWcPrl ze$zy#bn^Fro2}>W)AwJf$I16u9hzxtAtAM=}Z9OYJ}zEJm7}d7F##F zNXFLfgej_4#P0(oQDX<9o7fcR=#Nv23L6g7Nv;Nt>(80>vHbC-Dj>mN6f7VkUT#uu zyQT&>jx2YjbbTyvNOmMH)cs!INrm|mA5po60rl%T z9KioUAwVA3To^Ykvo=3yj057Z2;K55_&3enS)SXXw3#cOTe6g3E3ERU-q+*!Dos;^ zhBD44;?GS<0gPEB%F$CGjkpQqSFF}lBTr%%WdDaDj>{tw@1XMIwtgXf5(MdPlh(>UW8IrYdDRcxov}_4ZfH#+3E-TG8 zhg_{?1S10$J*xSt38ULHNO^Hjk5Etlk1;UdQfzjLE3|@|fK{wyaF0Rm%aVy1oq5J` zFTWVYqLGM!$vu8XSLS1%%p}50<;~YK?4QJC$Jf7${i+(vqJk-v1Brkl;5yk%&R^px8VHV29gRoEdI!?VlZ-)3(YY4^hi4S3R%Fr)Cvim-tLsQl? z4la>kuXg7KGC&w^{KeI^%;sL7C9dcKtX1$Z?`L*At9`G`{wh0aOb2qFE{(LwSsMLB zoQs7boK>rhls;w)mABc(4c&Yje$)(k8rh}{IHD>Krv(qkAAFLM{_N;U6A0?v!3YVPzeP;hA`+tsz;vCx2B+&Gy>hZQ8co>3`^|O6z?ls zl@hn=mMJ`kP;mq#f1|?lArvAL(E~EpSF1y6*08GL%$t**_l*vd*1#bfMf2Gh2<(L_ zi|55WthjVAZ0Q3;lIm`C`f%i!O?jzHvWSh$R5S_+b)R$~8Tb~bQnM4q{?%P*&FJ-fBm$kN$=YL4U~O>@CoU1v=`iKqkXD2>8YuU!x{V7-0>S@%$Bph289B`QFAH zgmvRMQAj~BQpZIuNHgMs`^HxJi9R-?{xqKa#op4yIvkZz-d8XFxg5u|s;`96m}%_T zarE?tH|k1`ZEZU9tmi@3FQd8k_p)LrxHJom?o4U6HbcOFD{4{5|f?#IH!mxTQ4$P?zg-F}Q^KLRDE&14lU2E@8;8s?&V7wI}+9C%!Rk(v<^Cla+Sv z#$9qmb|89{uR{dHOyRh<7wVO+b0!;zb}4}ltoS5yaOv#AwZrZ;&%iJ9X`AWI5If*` zB7O9MlqUNyJFuagH48@7WCL$(YxNkA>y3_ub57J8wmQqGjTj{R>RbojIh`o_LukUB z=E^mV(#&=C(&!5UU8oz#<8$Z<5pjn3Y;V2-xf@Yfe{ zf}pJQo<0}iok7FaBf-x}Ih8h3xdvX1946JM*;as2;xdjyA-)F`%;JPmi)+f|e@P;u zy0B8s^Iz7gieR$7R~zFZ7Mp)qDIE}cA04cOfJXN)X?&ZqPng&bq0sW^*sTZSxa)IX z!VyNaEu59#sGMY&xs{qT2%JY+vMv0x4mlXIiKLSQFU<+T5(fTWdc&7W(IL5p6w^F^ z_siE{lBb6uBPEI`l}LfooZ&bw$pOH$FFs9bpy%0)9Y?H$iNJ#1I z9Tlm^cJGN;as3p#Mgw%8ho4h*q5yaMvBnFov04Wynr{Q?3Fy! z>I^N!?1M9OYSTb5Fy<{w*9!Jk@`hBF%R{+ClHDJ(vTrf4p;cUyJsUKEIW|`nOZ$+Z zG%zVDDuXv;pSQO(alK$$!7x`C!@pFykC%=?Vva<1M@fr88mP5_NzciGAX)mOH6Z@U zSt1L)>fG(OF%T}PbQ-W7NyuayL!iUSBzND1w#E*BCte@?sV=x36lhQ-XxMOOn@LhI zOFw3POSR?sC~T4zA6w8_<|@~@iz2hanjNk(Fw5erC+R*Ko#>uRrB3;d-9+M!L6}ia zF2pi3qkuOo8Ne7kuo^LtKENEDBrJYnwvfgSc8TeoLQ{zeMT+n>e(E^;)!|O+(36XZ ztoZ~KnY<0`*7jGl!jk(=rKJhrt(|Hp=*Rc*)Sd%oSmNe48v6$JKf&);0_`y3(PJIJ zb{JCE@$pj_?l}Ajkm;6N+W_IPm-yLxJ!w9P1~`ulLv&-55R$0wSId#VP!X6wCy&)M z;SzI3uK!zA@Q+T>%ws`3d~keYsh3v{Q_Xg!`PUN8y3GlYO8%+34?c(x*3i#uCuLt? zaT!;G5C&EvfN(UGTtY|*AJd638U?a^5f)=4IgbD9tqEqPf>0)_h~IB3>26b1Q7X!Z za}?h^@2v>+D&^O2Y2(rjy-!7s08lllb3cbBw@xlcl#8^_z&W%DAn zX3tj^_wvDa&AmU!%M99;{hgE7S2&NRW+k;S+W)SQ1sp%B>uOW~aZGp0_79|@E)PubpGERwnR3oD}A&2>^#&@)Uq4}|~( zp@WFFP%dESc~BE@Dc;Sea*1bdTZ!Dn3P6DvuYy%KL9V^)9{F9cFYZkBUw zOlorHB_#ivy}5mwZ@6{R0y0m!fLP9=gsCw)*?;autC)7$sCo^m`T>03MiGj2x;N%A?wQ6>YXmqP}C0al*6l6 z`LFcDjYkA{>2VCKsorOCFhaa!z?$SJF`Fc_1dJ;D|2gtN!GToP4af(v{Q7WMmg99( z)(S-}vd8R_;Ib%c1mS3?)493H(p-UOM4CDG+c9c}Tx5T*gsKYaVf`WJj)F|V4@Ed+ zm0}ZjN#QU&_78tv6<@8)i>ToEzVb2g4kN|3<&AU|Z&wJl$$wg}YXhpY+y>_M3*Afa4^EJ0eQ;l2#k#aDz6_8r8?q;#jb*@y!qF@}!Opiz{fs2s zJOMSrcx^4`R!s8eSC31-!<{4b6E&X3{`4->|18_pHK9YSO?Q+Fat z+YQTL1?}<=*Mt6d0N=#h(LG^~9u)*1=yT@T(jKw{Nk5r}oEn*UW%H%%Snj=yX}~m| z6~GimoeHA}iD2dR+GQpnQ5uBJEkRLhv6(8n_$p|T3@e1Ikjm~ZmJ^iNQP`Rs$4=0T z$=PHo5kfm$9Nb@%;u;QX-OpAy!M{biG8iB$9;f*VnC)qIZlPfYY|L{9h**QHg;4x3 z=)ljDeVHU^6m5t>?VnVt7|&pc+6B9LRu__gTvIv%SQzMkanh=)U4w$)c9R0kM;h7l zt4e(|JtqTz;RyyTd;Fc7VP`tdAw_Xpl$=nSg2izvF8{<4V~*Q7HJ@U>(lLcvpr_#N zm`F1JPNyz9k@85(U%YuKE3SC*mB0tl(Qpytb{8nx>WD=NYSfbNgp5OMokB?F}HlH=byzSlvhhZ)Big=VkO)(0A*5-kAoP#Fc zlRgEzE}XQYl>bKyx@%GyrG}w;p6cTWwMC$Vx+j-|HABZOIZDDA`Y-5;tfUOkkH2KX zir)JTlg6omZa0i*z5qkC;&j;p**)fet+2JtME^+*;#XTO1hVLfk9@IM56Awunse8N zR1y~C59-3hgykTfd~-W{s+rsF<7qgYVa6eaMj8%ZjGn`uf}llCtKA;okRiH$`?L5r z*GBi_-<7;O^Dh)#2uTbZ!NW%7B)nd0?o~ucu)c|ZW$FybO$v}W5ZCnc)^2;D*=vh# z*{95@u-v2{!?1VTU&^Pi4`s7&y-3fM*rmvSUkIeYz#0zkv z+nW0tVmBMp#tBMnct^-7o5ogMF<G-Ky(R=|fy z|DY7bb>I=t3ESMwb3E%!acpXJ^m*D~bmYIe(*Ryj3wW;?lZnB)4(WGL3`VdscBkI_ z=&DL<-}s!J`LpRsWFti$2eFF`K5OQ0yo1ac550p!b-Ew71$&r(V`B1Cpw;0Twj&ld z#$T(U!O-s8UaGwDI->QqJD}AZwy02&oTOJ0<3Al-IO6Z+cAfhHw^(|akuj8Vm$riQ zIE4Lhq`k%~x^aSX;YbmB77BS%sjzsDu=Wz<<3PTEs^fMbu?~LLLID@WNxL9GRT9yk z;+?vu86GkXUzrFt2H4DoeJ#WFYShn?+Dx@=9g{aG>m*L&t(LH=SZM6?ztvdGM9sH! z8Dmz&zS`C!2LEyORfYVO|M^O;tcD+i6C(`e9{P|`1*h_Sh*e{%w;Pq6^7mEmJ$h99 zpH+fM&QjK}r!CzeR?c0Anzl3Z>{>+qpxATeDJE3!`O*Q7f6m*pDgSJ4Ifv9i(p6h) z()~vWu{*D0kBJw!Uhxx@tAIWa)nPEbQ*SM)QoMi4#o8Tp!caETh`1A3Tv5>(i4^b! zXPgrxBpa%H+%XvusV%&H@=i4JqvGJSYVia(DlLex!o}kWXqVL)BjIah2)es;s!oYO z+f^FdYk0e$CQHUN*-)dYyO=MqPm8Q8qG(b^!| z%NCeqp_A6C-mr(J2~wW)`?R^I)iusSLn!)1eDukH$ND0Og@JST#X^X6S)1d&Ic+qj zBv+5{PIVMbX_WlSFx=s6ODJ(y?M_tkzK zz&3d>4e8#?--=j3{)MUi$JPuc?Fm>o_Cg!(A}12#!EowOH02WX{OeC1eeet8s$;i& zP#i=3DG|<0wQ=8p3!6_OjP~EO4M@d9Rc1!Ynn7PQT`GlrB?YrrMg6qpA02wjFSHPS zln%Wg*-Af$K|bV(g0KHdF!u6%B!P<7A@>OAggB1-dv@;@iSaPs4q8`LK@g6QZ`vg< zgHdQXT=P5wK7v>rUhPAz*y@otTZ~B38lU#GVt3-Sw`C z@r?9vB*co5DPJOYuOfU50~4$L$|%l>=Rk=iKLKxL;*FjAX=e6_Zdj&PZS&67U4w+X zgm{zZMd7|IY$HW1=dyb_8i+}dleewZ?%Nk|g3Iy%6*mc!;;_6KyoA#0&J7IHPE|8( zLV?+Y2I z*9q5gnu;a^royE#rma9E=YbZp$5l~)(WV(f7_qZ>k?)4_E*1gO+qDnYG3P?|mWj3e zCFe%^@k55@rY>dQKLm-|G>r23C~+|QUZ?k6g&EEN)(`NZ){Wk=DhFHeOJ`lX!Hz5( zh&i1K5qaNR$CN4AcM?Y{M4Qj3nAy#EwiHKvUK53(*d}bIzYh89E~jQydv|!Of_OuE zZ>|BZ7yzX*ESl6?V>qEfCW{{lmP+2CYBtF^0rBu-)4zRH1RnoFDY6Y#*3We-qP>L; zVwsW>#5tUl%kSBX?z_G^lC$`U-=(P^eHSRsY)cjyid&v_dzxH;@+rG~Dg~qwZPs#Q za|c_xPk-`=*T!3ksVCzH_)vXQ_aS6A<|>bcQQPy6pRGvef+BMAD{u^_lzQn%r>?d? z6j@h#)gj(&#FO(*622|=3pke`;Z*fHNeCkcww<)&g25y>nmwarTif2TGmO>Ag@A2wvFIg5GTO4p#KdwngXc@yVG7 zbDOxGD~Zoftesk|XI zcvHyd;TTO@iD_YeJ?3!#0ick`y{L5*G{2(&O?WMAY5~jR31lh@`24q(SZP;a+&5{_ z+Fu0xzUs9+SYm1bhKfi_hYi5$hV(-vn~V5eRkr4>$s)7$W>M1mHu4H)J$@uRfqh9!D*xGsauYRt%l8O)}8Ltre4m{Xrt2JcRe&!Pp4w@&XRWl6c-L_IG zPsG)F>76a=*YyjVnY$4!&7IFz>O7!WHo~rx5&!Tb&aY{9&>|H#nGxj0+k~yg%0S97 ziM7x*3$*6? z;d;CW+K#O5Gu~E4_To1oHZF17;}Z)ZzNfGiOA7Q{$XuI~!DL_uUXv$C+;&}eplU?j z4j@0&u6)PnJ$cpA8@EY*2nm^zV`Bl$OVi9)McTmjq6F~@?TzZP2mGWMwkc7P>HN7z zqa^Jf&(gh6Ry4h9may|}m72xvw$BYM*Y>2W8&rv7+}Mif7R-#oc?PT)P5m;ysDkr? zcHzbtd!M;={mR7BJr-Y$(C=`K`3}UI_R+BES&b@w4gNWH?+@M0bK-OW3AYpYMC6Z7 zVinJ?P}WG|)e^!7;ozu3+E1o9DRuf!J^lP|?css@Gw3FxY24HgJEevdsVCxk_R^*+ zjHkhDSrG!nIw?h(HbE!9PdFBV+j5b}TMK`KB0J%tIn(p}2OMJiCM7esj{4Cg z1E~4gj2*EQDe;f?q+@ey2c=qGtybT?7=$?A3u6uHF1J9Cw~}{^GS#1o>sI&Fu1q!z zZ#c!pSPDZ`qa{Mzsf4}MLU(_Oa__y;V@aod{64E&s-$llWudW{#cV@OD|RMza7Mn- z8OKh0A_5GCnk#3##RG5oFWb$cS+!`Lwe-O@b}wN~0Q>lu;kL8%?fO5+%!9bhCO(Qe zfiq-Xb*s_9o3%cSNBp{Et3_i{2O+P{@AAL6eNLpT8?Ux6<+7FT=|WDzQ@pMTDm@tH z%39!p>cgAM2l^X|0#Ys+sY@v^9R(GjU6=r_LHm7P+eEG{WQi0`Ew)>RreM8Q4AOGW zXIj_1iF@sW%JsRQrdn@wvuaOry-e-6C);#5dVo!0(NRUgc-6%IKy38iy_^SOFa@L6 zF$6D@Ia}0_x=tgIQ62p$2`3mb=^|2MCTwq)a&snlL(I9)88-DV+Z=8q<>5O^#vGft z*DW}y;c2(!)?WW%2$!zYXflx%ZMF?EBN)FoOARhSk0KJ7r**Lt%vlJ3>L&eg>A7Ku zfQ@ZVdjL8XLIhzMfxX9`cx`s^bhZ1@wAjG#1o= zIplY!(bz&CsFWg7dlih#D>N=?L5*Lz(NU)8iHrw(yUi{~nXvCwIfOe3&u8U>^z3FB zf1%I~OGnyYg_(p7{o<&$cSC??c!%9+rEzBbU3vFJG(oKrH+59<98Gd)zGBXQbZBrT z_f{xdX6xH9gKx?kHrs1QdE$EGcsCYE{7J9U@5FsEsn&aPlqHkZ0K;^)@SH(198?&A z;?)HeEkaca+S}tB(&IxoJ%KhEnbg1lcOCBy*D2sbC;4}e`DDIr$H{k6gYC%A_GE3A zf9FO$bh^md07y5On*fd|>Y#CywbRvxHvGw(KqO=SfhShR+Q->&rM5Vr6Gmp|D5a(I zEl8-sjH03>f3Om#o|uqN<5I~CJJVeif~%De=*z%71680wX^fUhXsXY<-`?56Qie)) zSGeVCp$a^O28-z<>U_F$iEZGFS-QJ+iV_duA~{T4uBt74)9hoopl|kxOsK}_!H_o5 ziqft%m7k+!rsi_ss)~~cZ`Z0rw6|uJ1zeEeE!y6rfmcegLG{k*CXM;{0UixTuO55CzCvsWy!!rOG;jP-)_3z#a|GAKv8YNrdl+4OIp|Y4# zMrv5DEV-`0BeYSl-eCaE$={z@10+W6@eS`=h89k!?pqvi6*<#x1bWym&dpDpj))wO zebj`!TR@RUKoBqh_qb)-10K({R!KFcZB*^5;O*JiwK9eqZugA9xg9xe*6u@~%(VLQ z+)r@7<2>D=5h<0qX<1TMKx;z0ZV}XmMsW34X*z+-s^kL>Hr^v#>A{rSyUr*h+@|w% zkWcFEBp5l9sB?-+E&qC|#_4T{6Jz$yOvba^X><#Q^2LtCY1L8S`V28G=*BSaYL%kt z%!t#C-hGLDE?n=p!Gi0z0a|9_y}{83Q13m&kH?xU^aGEeyN~n*A48XJ*Em9z&9Bzg zOp6M+z(?F|W6_)CdTu1F;g5q@L#dGI+X+ME7as(OFY3TOaSZ0`^1TLz21|L~gu*D4R-a*%_SrUC$)}==NB@1ZQYs{Jsa}H<+ zGrgEo^p51}o-2H^A9Kk}HYMuRwL^|=VpvzI!qu#d!6R|dyh34-;k-}**(*u~Ai>U2 z)?COGyr{KSG#*?=budhdO5|)X?y^(tKI7!9K3mI7*r>*3$?CFjgS51yLWJ51+*j9K z9%msJDe_tDC~69M zp~a}HZx_=e_{+|!_>??It+9OG;O4GmCII1F;9!cP029+-qKO!-V98n~8G{+liTmK} zn(1fPNwb1`a7EVwB{S{5aB-JdJIW1n6zpCUQ#sXEP=$n7(+hdS2kH4}IUAs%?}x==qlZr)1}a-ql+UbS+CWW4h04rGXcv`0^I;R_nw|Dpjot!6nVivT2 zhzoD4+#F&Ja!8UhOzK>SVX?bg;l|7-sCMRSI*bwA5r_2k1)^i>Kjkmq@cI&#i^t5R9XyWBM60 zZ0~WqH@_kyX)1Gn7=U97UskL-7}z&6N;-{9k{dCH-X7K*j8SU<}}!f+AAlVQt+QEUMvOy7G`MYRPXW43#Y=kvG?$^qsVe-Y@w+*R*hJi zO_IDAO~!`mCe*;XXtO^`43HL&h}f_r9fd$-)*WnTl_ELq(NsZ9BF+Sq#Apza^`U++ z-gc^4IH$d*7ZEK4DnD&U5hW8z**IOd*5S35L)FX4GPE7A5j8t%t7EEAdOT1v53;yl z5T3F)jM%vH+KDGS9B1V5kE?gzP{3MK;>OIKdW_N2AhYO1Uu6sdCi^mn#lsK875Nu; zUT1FIeZsoDu@an1+8#LIED7+qq?xSqd5p`2w(UMNZV4 zp6&MA`rllv7iE?`HZCU_{XAp-D#KZq%;i%?=s|Ovb#UhN&4Mw!_`Pin3`I2u0BQ2x zTbGq0z-Au7K#nQ_PgvL)sP04Rjp-czZXeG*izLiAn3ZNZk#7(qJ9g%@pl9mhq?x2Y zGXu9J-4&~uqF9)qxs6whAc1N?lj`u|7H3j2CgvA#@w90jUAcw8Uh6G|O_-%Dr`c31 zUI&7C_RQbWiyHswX~h;)j-TyMQJumC^DwvQc7@fNBc3)s@u4U;_WY6FCIiTD*(stX zu}3t)eAO*hu7>9WMdq63ScJx^|Cc4Wr)E1XSO~Zo1Y@`b(*l=;ePlU5#m8e?nw97b z1++@p{Y>-w;aQkk7qiD0naBzieLf}@XwA9SWwH;UG{~*ELu_Bk+XnY={1U|^NU%Xv zIc#J<3njyK**)8wKFaW>Mrq=v%0CYOg$CIj;+0PY`eL6(%j_|rn7aavy3@-gDYujr0>`oPTL8Rv4{|-Xr4^9Cm@sL>FjK}>7 z;=J0+K>;S^#+jQ;q8O}=b-;zCXpBHSA69SJUyQ4$J|TU1uj)+aK(A5#>2l6S^3l_(DnY&s%Q3+AC&B z272JZv8mwXtXlp+ikCgny|J`%KSJy#h@4Xqfvm9^gi1yKi-Y`2PbVdpnc^^7unMeX@NO}@J@(tFeiA|jDsS@Lo(1xYQLtQ#E|?;f9dwOkz?VRj%CW>J>6 zW!m(B(2Cz9hJ=|uuT+z7^Twyn4bd;*SteX4sW`8nPfypwdqY&n^jY9AkBjuZI(RQQ zZR42lueiz=teC~8)^^3sOjh(UUhsd$eUUd50(InD7Q2R%yf&z1{{ZyyTR&^>w(S{b zIO4q^OBoHt(SC2jeY^-t=B4{vS4|-}SZbLVHuutZl>9asMCR;^VvawPD&Zn*QP1yMlX)vY?-i&x}oWc0KjVyTk^AA9rXmt5 zWS39QXP#nsQGS~RvX}N%3HYt1ZvrgOWU1LkROFzpOAtVJfe?sZ%T^@H<7M8jeb zMI_LdTU5vIF~sq`bqI?E7g?{i#ubYuGD`6F(e{OMO4cSk-W4KFBd;gA1?l(zBh4(y z_$A_kg#VV(QhibAzWnWj?~_>8z;Qcn8qN2 z?}NU_fTQMuverrL?Nrd3j1iD=V$I=NOmn-M zYiJ02HSd1_!kG}ZX4!<6#ql;X-&5{uvDao|=ErgJow@NYiyD<3-0lUP=; zpK}CkVgz_}oQcbDy`uOSd!nOk;Tz-<3Ap@=mCwO>eCsDRv2x{FX5U8@VwE4ZmOnJ- znYV=jyfv;?z&S+AI!iACzt8O4(!i5RQ`1Z@hft;a4#V!!_MSJ53kFBrdsr1Sew|2W zJ&}zcN}@LFaE;DXaV}dj$^_0}9KF_o@ds%m{$@q>Nx0+_-SjMkJz4F$7$ z>7PdV446bQPLP-v(SeD-!xZU445kZ!`jon2?TncYn9++{3ZKb}Q(Kki!Qf^U^m+E|a=GYzS5|@s86%ZW%0g<~pdj1+9;1qY* zKG@TUd<_JZgqkAsu7%4OI68ibuO0JpkZ6#~-l~e_yQ&w;#P5soPcZ2fu{Wb{`^Z~8 zO_&TbCsoLr7~$>yAUXMc?i4O2ZGMU1Gih9v86i;`i~1#y}44SW&c!`W$75_;!gRPPk7GtXTr4Di@Dzgm~{{% zaV~<8MK7SX*7EB#lU~S5X?FdsCGt#n`#aQ+rL+~a(%-G=#0HZ989O5r&Od?+Ea2c5 zNynA?t5TtdI<*wB3O|SUZW4*Pv8c$8CZ8?yvBHk%V){7CHUHlRxxxMeeD8?PCBW}2E(52=AE^*B~^pn z2p^eVkgWAoy)1_X@EdWev(ugDsaP|?psbP5jb-Rc6|wFhI;OIKRfa{R$kG=Qxt#|2 zvu$$WFQxC_=JhWjUp&dHhD~UnMIFWDad2x|%-#x(yHjF$Pw@c_R1om1tPC$2RoFVX z0bpA}$6jYDCUH{A(~x_rO2KMtl~6^8V*EW}=QiLT)>gIrhK37cnoDv15o6XyoL~xu zh+7tLxv(;k*WHexdvV(WmkxPX`W3&>3?&<82qlVk>?ou>L?m}!O9dSTeKxl92+`r& z68Aibidj_pU`AxA1(9pxAFS=2VO9+RN{H#p)(6*BmXuV=MLmFr2-IyXy++)P}7y4-nER1g`t8?xrOLtN`VB1Kp|2SDs08TUcGg zW@KAJ^>CF0G18qST9&n$1yOzGR}ns8Q-?7usgIkPtLJl3v^^QJy2CtN+qqW7kQ%LH zITyfZ)EO}p$mF1~csV!536Zo3q`inCg;pbG0g{YNn2FstrWHcL*J*Z8idWh5=WG*x&0#Unbo(4ufCc5Z8FcB4c@|VryZYT-29MM{e%{T%?~tCQ*yZd`YiGl*(JeKB zm=A<*Y4p=qD&LGLD*V88x{4Y`G8EB<5+^^_8Q*jLDmBMa-n(Ktd40p`n$PI(3CM`b zsZH3hM+mv#ROMRWaD}s_L_w0YcEN7Xebd2!w_8lDaZ$U>>#h6Y)?k=*!)yn^aa0Gs zJ%X>@rW~UycS|+AmER7~$G1Vn&a`h04Bi_K#t#u85F@Q`U^o!3{hC{v8mA?2HFg#? zyhWk(NhTz|<|Xd_pCJ+!QnEt+0s(~C#_Z<%d&|79z!PjTLxtck5#iL6{$qzkfcdlG zttQQ$lh6+&GJdPc`CMcO_kuRj!Ba@r0u6L&EOGX~C)Q(EDTCpSzmDEI>9s#4id`_) zK|CRb74}_RHVzJ-2h{7fAQA1+G0NL9eCJ_&XyjdRx|3uePTEJ3UyMo3M^KhLpHQ2B z(bc^QR7>{d{1YKzyj-tgn@}ns;zsX^X~4GzaegG1EsH@sjna&%Iyiv5&vP>n{bFme zP+YWFwu;SC5d%J_fPLlFp$|}HnvkV$Me@rNI&lLth_GH8)(+^Vsm5=c}~a`7(jaWxYYTs5yFHLF8j;sTyuD5_@19`d$pq zi0Z4l+oif(*J~au=E73o_ehbZfGnolIQa{2Fo+NsIv3odmXKG>yncss8EoN4GU|99i8cPeyUNR8 z=t9BXaejsz0lR!gV+w)03h|U)y(=pjc4=F45HiYgQBHA#ON_jG7+%N1uOq9zjZc?j zKt3SZ<^JD_P6tV2KDkjoShB$s&i@|J_KW#hwlb4~%28j)(fpu4^ZikeYSpcROio6T zuCNH-f;#91yia{*)qUDYc%u@x%%|Jld1gCOCq`vf2e}A#m~GtQcYIBXmc8qt3+xlg zM+Z5dtp5J=BXgVaU_+|9r+@+DmS(5+u&_4v~)tvMS?{BF!g8nsK? zF%0_*M~F?cBXSzw?}r!~+u4ph-kPw&hdQ=@_AOHZC%b+H|0b?$#OoZt-_QW~D5h=U zsct;^mEhV1=v92wd|%%Da|PBR9ykrn&DrE<@lwaZN$7g*w_r2uanYJpGGLImCj7IzwEysEv5WB+6#*)kS3e*1deia3vhb4Eo#eI@o!Tv6X zCBxXo#1_~>`9Y)fZcf#1GUqK8K4*COxThElR$n>QhfLQsBIb47@Y{ut>_itQPl%Z7 z7ED8NhP23=hI-d8(LS3vJl~=0*YT$_aj0XbZMX*7Gy(^GFYvfd?ylxa`&w3ITW07A znm__|2Yrs<$mg_(C+xn(y^~WJieN?j^`1m>EKma7NCjtJy7~71$Xi%FqaWBg^F*$x zwKC6QIr^-^{oYO6im31-nFM=Fg4~EU^?>_h5y?DDY}x(<<{{n9iq8ur9OoQSoWz`! zU2!d(Tc(_>NTB-RkHocBLcIeTa-b9Y ziO&@P;VM;XA>tV??9uFqN4z8meT;$TZqJE}$F*x_Jw^SE*s*R=Tm#lsJglye&idTS z65-Thvfi6T>KLXfy2~etqrC&iJ9;1X`;m@-lPyOECeHmLWZSMmXx?DhZlG*_4(6i9 zCfik7As1~$N4#P2TxKDuLz7W;8=Bhv^N)wVSCxrEBMmf|;=AH~3SpJdQM9ZJB<*2# zt^olVYYil)KHw=ynTS>VjzeEadr&K;Jp0f`gDdG(cH;kTK+nE!X8#{n3Lz>cq92l% zOHT~1n||gtE|;#hIA;i@K=li?Pr=nK3HpcKF)Al9ubtbQ<#W)0+Pi#Zk-oq>gOZ3P zOBP_vwpxxUwq0)(m^f9kkHHL{AHOz>$K67V_FXBEUypl0IY=3Sq+-7gu<^&z=n<~a zY}OPYz5N;2#g5>;;mNdP1f;a~rM$EQENyB{Q^ZzD0v?trs2Z|EKfcCk_!{iW^hu!U zdv7yV87S_uedgJ4X413}yX0LWcJWwQvneIWPmj0hVAWQlJ%!!ZdYsQ7J|?kmo=s zSL}mv4~|1`0!1uis@^+MZWK%Of&6rePpp#QFw|>RaQ^y>vl5GiDRO*-s^@xquJMtj zFHhw*m{BDt@DPY3SjjqS?M$H&S&*yy#mxpj`<)rB%!5v>RtQ#=R7_lY)G;E$q5%O0W0#85sdQJ;Vq9KpDqd+JPn5Kf%43a@8FpIsQ7>F$~g z*Wit(jUi+2mHYgxW9!_d%QSUo1M(@a95}F_b}3YBkkK?7@mn}4S$wmpRl>D@$*SkM z@x6V&ahI%Y^P4#CxJTMe8r_xUi74NI12^=RZJ1&sB>cXSr&?x0@L3nf#yAb#Y=-oq z3Buve&88b=2lN~$xq zF#N`lUatrqHzICQ3L#GX8>qo8dWYGVXPAn+73~_A{@5==<%x*Ah=Sz70+_|cRg3Q9 zC)jx^nYTx+d2zOr_c%hMx*T^7I}+!U3Z|t%$DzFJU%mKD|DmY+AtT8fOxLe6^zcpY z=zmQ=wrCFr^?xA4j`G!&Qh%&VNh%T)wz|l)McIT~X0DTX%yb7HzeXRzRT_zim}Wr{ zZ6||UXZf8i8F#==VzL19n=XiG0$E}-XLg0v%%f2TKrX6B5Am-!TF>1%p$_Xf2>mymNE z*9a$TkBHYRGNpEILh2i-&cb?3nkSczMS_@!>>mvwP!zGCu|eYuM@%Y7 z%1+f(fZ9MQy$P&J?x$hB`m-REiOgxxYBQLB?LTYa96Wn|2@Rm~W4RN-tv5REzQTD` zEwrb=@RG4H77aSHn+LYTiTvo#?)|g&>AaoP!dxut_WB=gI9W7B3y1c*^)#*_Ve}rP zN&{t9^~f3laIJW4mT!>tw-=CbeO7>>6vy%djL92c=s!S{S7`K!=$fhiu2FuGK+I|O zPyR?zN)mR*W5#|I|NrSmlqHX{8rLh=+D-)*k~QFa%nAHS+cV(@Yw|cz^yPoryg&QZ zGSXl)s=e!nOstjX&e7)XZuQ~r<1*6jf!`hgqci(WZeg?4%t1uZ;wzSGM*+M+a#A8@FH-%BKaXLXFmtiBsbIB8?;Iep*O zz~}4!J15Zk-dLAlRf0tN2|7Ss$I7Y22$sKFQ&$cdi@N}C8j-C=$KpqfRgkqj7y-TF zm2lpN3)j?-&Eiiwx<{tqTiWvM2WP};aIGY$t6Z!j=Yf*g$ANV<;7J@mhV23vab|wT z9JDSw4^_h}9e+v9u~?!&n{c?zOgFg5N@C4`-zKjyhz4#Fj7X!zd6*=T^EZ}9pGo); zLC`vL=%_1r)*e6Dcec3tq%tEt`JgeJF1e90#Gt2gKDn*^<|*jQB)qGGs2zCH+P6Ch zc9Qy5(EFvp*qQ1wTM<;#USLwjQGH6Xmfq6M8c4nYQ90sCy_V`=ek>J!6P)?l+E?#V zwo;f9Y&Wmc`b;zVSX>r9vjV2;efVQZh!(-jq&+ei=jQx&mFk@3t(C?f_c8T)AOert zr6{&YYXXI5Z{vqEv?ZA-C$xt|}+YS>tB(#P;|mD^kj;=fY@68q?XW#+;$m>{iw1GfB#F zBcEK+)k>xMXd8RCH)@MCv;sKBj^`NCE>{&{3>-q5oNA-We>rPKs4bJByNR02#=Fre zq-npD~x_qpICHn#xH#UPT2^YI0T;>ddaMX=C!S|M7F{H`T zWo3E7FhZ6&9A9%B{U8+Nel8#!De9=#_*iSa=Rf)M$KbSnyRT;oej=6kwGastFY=f8 z5g<3vLxmgCHNmHCN}@Z2EGvEYZKrdex%_Ou9M5kE=lJfkqf{P{4OTnQpK*(|)Pll7 z_!n9}OC@v!#Z%zF_mEDAz#S}zY+&e}+oMO`(G2)YF+jEWxe@D8Q$uY!Lr{Ih8xr2n zuu~woWXK43u}d0X)iFlAu(>Af8QA&C7E1KmKuj@u zZeFyCoFm)e{Q=bpWjdgerTqRgOW*lOMbFH4D?)LWq4NIgqLUv9rmxU{EH?%ZZram& zIp-{EVwM1|<^ZaOm!KKyyKBD3@qb5RF(*^oKd{EGdx)kAx5nHTd3RE;=qA(+D=#O{ zS(&;By(vO_gYO)sobR-==Vn#Ns+~8ENc|UlACONG7rm|wpmEZ@31aEkqY7H*h6{6O ztx1VyaRhyq$~@T<`&~^iaLZ;{>LlVAuk=77u)}}*N;oVZ!iVLc#W5FkR2cm|ML@ed zv^=ZEdVzqJ^=B;orwI!fo(s3_rz`5j=H)pVKhE@*7pk1v~s(plbEb!JaiA(Jj48Te7@$t zv+8gCAx(-Llwp%%f0CyX`wE5(0Y_)lx z3LlXZF|8;yhxNJdD!(sQFAL8WTP-yj;3WLdL_$z44oI?#WUYs1nNNt}5;MWB@Cs*K z`23)6cI)VDs{VRvnFBzirnmD^6{#vPE8cqkCVuN>ZkLb}B;VuO7jNc*YHpE9z9ur zJ4BqTCGiG6ok0uYp?@)@CD=6FNhts|uzM_4{F5iEFvXTAVk?DXDGV`Sa5<~q{^a5= zmi$ryxZj-IfTV99#4q&LmO@yJU6guzsCjeS4h2{5jtGWq<$eT*JNj_D8~>065#XR0=y8@f2OrSu2TX5 z;UvQ+o3Rf-(?)%oQ-@0ShmfPr(O=iCWj};n4VWL65GE+V^j45*L}f^2l!t zYh-031U63G522$GsV`Elmem*Ovl;G*K+;mZa38TBFmLx8SaP}Q57V>GW!19T0UxpB zp>!D=l=d!(i$x!z5!dXiMohd4oz(-%ae>%&)LuT0ijg`a^^%pe7a_jKJ^M_wQ9aa=8=W&~Tg(J!&9 ze*J^ssX=R6AqUwJ5~bgB=0$a!sU6Af65MNo*N~>=-)vE~YS<3e4ZMbCPH53(PFYDi z+9E5Cnd1J)t6+zO0Xmd=edM7<$R-ki)gd&e`Ce9A4pxL`*|~`K8oL-vK5F2|7EpmA z$XmST7q3EYK08mH;IVw6p`hGA4g;*Y|FoOjJpUAba8~sNQ?T0<2uO&iWX@@;6Dt~$ z0VDAck7(!>fr=@RRhmt%-W@DAUwszsqsgoVZ19zdMt`(#UeK6ztGQ&NfKb_R-hc$Y zLosYzKMKO>E*k<)Cll-->S?4ZO*Vmu5TZB8mV>$`I}s1aa69Ms?~leiJN2=3SJZRSsA2as`6{tM2+ zjq*mgeQy*h)XNa@T_LqBc-g|E?0G!VVyJd}-&OVPDA_Ex`Ws4<{x4Abr0&-~tegnj zrwe37-9t}mu(o(5O)SYWURlr&&t?HiYZ}YE#7c8@*PVB_L}Cvm`8lD7G+lONOZ$Gs zUmLvFU@l4fdD)OK|1D5GfrSPTOAn&nr`xmG=-sD7pxJ zaT4*O1YNS5ht*si0Q(YBJcT3H1R}-`Q*8FwZzShplfM`$G}!4kdfiq>Z(Cp;s0y0y zv+n0e3#qXk^VPjDe0!>%EV~3mH?teCI_FM54iL)}F}I>Q^0;mXf@K_(`00jV*ptN6 z_#++w(m+~N%t6$-6*AqC;u7HLN?*z)rVI7OUexjymmP=5N3jX$g(|I*8 z{U$}gU!Ly?LZg=4!Ua>!f=n7tV zvr5>2lHwBNAl+}ivrHDe9#`VxKwq4|9<2QQb>IA4=7O5ygVes{`0)*e&XdjOSf(4? zzummwnsv!(#kg4ED>~e-NEiYx2;&b{v~2p=1dNJ8%8J_PeXeLDkTF{@13O*ZYFN?} z?*#_*JZF7RH1_PRNX$z2$|m25|KpNS%xLxaZ0-FB`P`E>6p{nPv=-ErQvTJVUIgYt1KKk_`}jd9=VK%DCCK|5E{xh-fSlbhq*mVdASL-V z-L$6wwS4?=A!zdzgSiL9!%}lnG2}%O!H{k_JiUlJV2SKPd02Sv@g$5trU=8(NH8F9 zk(bfM?j^U8_W&GlxF*!Lu_tH-7kX?pU%ui=E}QGH#YL8ugc@%djMTRh#$a#Ppq5|6 zmZN0ObBh>s4KlFtoJ%5=xAG(}50IC_cUkAL&iBC5^asd3V1aYopX>&}Lk&ZhNg;v? zsNh#vw`j_h>$U)o6X2Sb^e6Z(Q)~N7Kv-dV4tk~$<8aA2(aJpQ#6f;vmASIFLo|s` z;I7H}0q6j#)OocGJeD}d&76)y{>kkv%&6t_xI2KMf#k$S)?weUKFCn@T{_N}DOqNa zVkX*g7t4YY__9DfLYbW7Lg0PQ-J)ivTivWhuPZtAm5n~gMr6^72ORzgfe7zr?s;Qp zs;S4+{Q}!QoXiFxJMNrGK1%6Zs03IpGZAIZ5eRMDo*4hc`#zeA9F@QU^Vrjt=zFY9}!gz3^^xYvOq7?a1KJT8kJP#Z2IQ z1^e#ru2mJ~^lmm~Chc)QM6P^>kE3x6x;T8>DMC@D~??Q zzaPE*`P;`SWgD&iYWB50GAR`8$(3p#AyI_K|8X8GpfTcQ_v3m}un7^G1I-9PV957>i`QT*>{OF##sP0Z5$s4vAw-B`R9wDAtXDv@FTSJv7yOn8ebrVf1tUNzEkspzPG7i^Y4!`r9%|11IMAU`?e8_^0?6hoLS zuQctqRCA2X0AEx46L>^t%}6W*kQ?6YZqDPxG?q=DcY5fPkGM z&`RxjLwEjob)CO4;c0i1*&2eqs!rCh8B` z9of0O4rv4LHN`VU$(xuL7^D%WBC-HxFm8}AuRIQ$i|KSFt0dt~qxu)+ezwh?_*3{4 z&#s=5H&_XC(Vpsq?$&EMCi8qDFp9by4Lt?LgkomVWq z!BKe_B}J8c2sjOHCSbY2umN`Lgc)T?T5ZvSi%wK>Wmlyl_aNNccye@L+q2$s3&zh9 zoIcJ<%1u^D4T>h=t5OAc@s`$p9fs#u3bPxXbqOad$hJr^LKhr-;NpK<3vwLea8$7o<0k z;RCZgaTU%C1c5?HS z6fpxCc*U*F7Kc_nGS3?ZnsHLImZ>g48yB9vl0(Arz!u*!tSF?6J zPdrh_EUyfNpdhtgAI;O;`ux+C>47+2ZMk^LX z#J9&nRMo-}z8w=>fAz2Om^cRA2`0$T+Z6OBX4}Aw&1cz$z$LFlB6+&k&c~Pqr5trE r7oHKq+yHah{R_|LPZ#LvEFF0dR9VMx00000000000000000000q{-xb literal 0 HcmV?d00001 diff --git a/ui/icons/icon-horde-token.webp b/ui/icons/icon-horde-token.webp new file mode 100644 index 0000000000000000000000000000000000000000..aa3754a5c11b1145f840665a7248676bef5d4363 GIT binary patch literal 29610 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 u%tn2MG}(xVdB3d=CY)D;AFm>@!4