From 364278527dadfce904a9d1058acf27c6b64e46b5 Mon Sep 17 00:00:00 2001 From: LeRatierBretonnien Date: Tue, 13 Jan 2026 08:09:11 +0100 Subject: [PATCH] Datamodel + Appv2 migration, WIP --- APPV2_ITEMS_MIGRATION.md | 286 ++++++++++ css/bol.css | 510 +++++------------- module/applications/sheets/_module.mjs | 3 + .../applications/sheets/base-item-sheet.mjs | 243 +++++++++ module/applications/sheets/feature-sheet.mjs | 40 ++ module/applications/sheets/item-sheet.mjs | 39 ++ module/bol.js | 23 +- module/{item => item.backup}/item-sheet.js | 0 module/item.backup/item-sheet.js.appv1 | 119 ++++ module/item.backup/item.js | 36 ++ module/models/feature.mjs | 2 +- module/models/item.mjs | 2 +- packs/aides-de-jeu/{000955.log => 000970.log} | 0 packs/aides-de-jeu/CURRENT | 2 +- packs/aides-de-jeu/LOG | 11 +- packs/aides-de-jeu/LOG.old | 16 +- .../{MANIFEST-000953 => MANIFEST-000969} | Bin 228 -> 210 bytes packs/armors/{000860.log => 000875.log} | 0 packs/armors/CURRENT | 2 +- packs/armors/LOG | 11 +- packs/armors/LOG.old | 16 +- .../{MANIFEST-000858 => MANIFEST-000874} | Bin 173 -> 156 bytes packs/boons/{000954.log => 000969.log} | 0 packs/boons/CURRENT | 2 +- packs/boons/LOG | 11 +- packs/boons/LOG.old | 16 +- .../{MANIFEST-000952 => MANIFEST-000968} | Bin 176 -> 158 bytes .../{000953.log => 000968.log} | 0 packs/boonsflawscreatures/CURRENT | 2 +- packs/boonsflawscreatures/LOG | 11 +- packs/boonsflawscreatures/LOG.old | 16 +- .../{MANIFEST-000951 => MANIFEST-000967} | Bin 173 -> 156 bytes packs/careers/{000953.log => 000968.log} | 0 packs/careers/CURRENT | 2 +- packs/careers/LOG | 11 +- packs/careers/LOG.old | 16 +- .../{MANIFEST-000951 => MANIFEST-000967} | Bin 176 -> 158 bytes .../{000951.log => 000966.log} | 0 packs/effets-exemples/CURRENT | 2 +- packs/effets-exemples/LOG | 11 +- packs/effets-exemples/LOG.old | 16 +- .../{MANIFEST-000949 => MANIFEST-000965} | Bin 173 -> 156 bytes packs/equipment/{000954.log => 000969.log} | 0 packs/equipment/CURRENT | 2 +- packs/equipment/LOG | 11 +- packs/equipment/LOG.old | 16 +- .../{MANIFEST-000952 => MANIFEST-000968} | Bin 175 -> 157 bytes packs/fightoptions/{000953.log => 000968.log} | 0 packs/fightoptions/CURRENT | 2 +- packs/fightoptions/LOG | 11 +- packs/fightoptions/LOG.old | 16 +- .../{MANIFEST-000951 => MANIFEST-000967} | Bin 175 -> 157 bytes .../{000436.log => 000451.log} | 0 packs/fightoptionsfanmade/CURRENT | 2 +- packs/fightoptionsfanmade/LOG | 11 +- packs/fightoptionsfanmade/LOG.old | 16 +- .../{MANIFEST-000434 => MANIFEST-000450} | Bin 175 -> 157 bytes packs/flaws/{000954.log => 000969.log} | 0 packs/flaws/CURRENT | 2 +- packs/flaws/LOG | 11 +- packs/flaws/LOG.old | 16 +- .../{MANIFEST-000952 => MANIFEST-000968} | Bin 176 -> 158 bytes packs/languages/{000953.log => 000968.log} | 0 packs/languages/CURRENT | 2 +- packs/languages/LOG | 11 +- packs/languages/LOG.old | 16 +- .../{MANIFEST-000951 => MANIFEST-000967} | Bin 175 -> 157 bytes .../{000953.log => 000968.log} | 0 packs/objets-alchimie/CURRENT | 2 +- packs/objets-alchimie/LOG | 11 +- packs/objets-alchimie/LOG.old | 16 +- .../{MANIFEST-000951 => MANIFEST-000967} | Bin 175 -> 157 bytes packs/origins/{000953.log => 000968.log} | 0 packs/origins/CURRENT | 2 +- packs/origins/LOG | 11 +- packs/origins/LOG.old | 16 +- .../{MANIFEST-000951 => MANIFEST-000967} | Bin 176 -> 158 bytes .../{000953.log => 000968.log} | 0 packs/potions-alchimie/CURRENT | 2 +- packs/potions-alchimie/LOG | 11 +- packs/potions-alchimie/LOG.old | 16 +- .../{MANIFEST-000951 => MANIFEST-000967} | Bin 175 -> 157 bytes packs/races/{000953.log => 000968.log} | 0 packs/races/CURRENT | 2 +- packs/races/LOG | 11 +- packs/races/LOG.old | 16 +- .../{MANIFEST-000951 => MANIFEST-000967} | Bin 173 -> 156 bytes packs/spells/{000953.log => 000968.log} | 0 packs/spells/CURRENT | 2 +- packs/spells/LOG | 11 +- packs/spells/LOG.old | 16 +- .../{MANIFEST-000951 => MANIFEST-000967} | Bin 173 -> 156 bytes .../vehicleweapons/{000860.log => 000875.log} | 0 packs/vehicleweapons/CURRENT | 2 +- packs/vehicleweapons/LOG | 11 +- packs/vehicleweapons/LOG.old | 16 +- .../{MANIFEST-000858 => MANIFEST-000874} | Bin 173 -> 156 bytes packs/weapons/{000866.log => 000881.log} | 0 packs/weapons/CURRENT | 2 +- packs/weapons/LOG | 11 +- packs/weapons/LOG.old | 16 +- .../{MANIFEST-000864 => MANIFEST-000880} | Bin 176 -> 158 bytes styles/README.md | 118 ++++ styles/bol.less | 17 + styles/components/actor.less | 328 +++++++++++ styles/components/common.less | 127 +++++ styles/components/item.less | 56 ++ styles/global/chat.less | 99 ++++ styles/global/colors.less | 110 ++++ styles/global/flex.less | 98 ++++ styles/global/forms.less | 233 ++++++++ styles/global/foundry-overrides.less | 71 +++ styles/global/item-list.less | 105 ++++ styles/global/typography.less | 61 +++ system.json | 41 +- templates/item.backup/item-sheet.hbs | 38 ++ templates/item.backup/parts/item-header.hbs | 11 + .../parts/properties/feature-properties.hbs | 31 ++ .../properties/feature/boon-properties.hbs | 5 + .../properties/feature/career-properties.hbs | 21 + .../properties/feature/effect-properties.hbs | 15 + .../feature/fightoption-properties.hbs | 21 + .../properties/feature/flaw-properties.hbs | 5 + .../feature/horoscope-properties.hbs | 13 + .../properties/feature/origin-properties.hbs | 1 + .../properties/feature/race-properties.hbs | 1 + .../properties/feature/xplog-properties.hbs | 51 ++ .../parts/properties/item-properties.hbs | 27 + .../properties/item/alchemy-properties.hbs | 26 + .../properties/item/capacity-properties.hbs | 25 + .../properties/item/equipment-properties.hbs | 91 ++++ .../properties/item/magical-properties.hbs | 1 + .../properties/item/protection-properties.hbs | 98 ++++ .../properties/item/spell-properties.hbs | 77 +++ .../properties/item/vehicle-properties.hbs | 24 + .../properties/item/weapon-properties.hbs | 322 +++++++++++ .../item/weapon-vehicle-properties.hbs | 77 +++ templates/item.backup/post-item.hbs | 8 + templates/item/feature-sheet.hbs | 40 ++ templates/item/item-sheet.hbs | 26 +- templates/item/item-sheet.hbs.backup | 38 ++ templates/item/parts/item-header.hbs | 27 +- templates/item/parts/item-header.hbs.backup | 11 + 143 files changed, 3712 insertions(+), 708 deletions(-) create mode 100644 APPV2_ITEMS_MIGRATION.md create mode 100644 module/applications/sheets/_module.mjs create mode 100644 module/applications/sheets/base-item-sheet.mjs create mode 100644 module/applications/sheets/feature-sheet.mjs create mode 100644 module/applications/sheets/item-sheet.mjs rename module/{item => item.backup}/item-sheet.js (100%) create mode 100644 module/item.backup/item-sheet.js.appv1 create mode 100644 module/item.backup/item.js rename packs/aides-de-jeu/{000955.log => 000970.log} (100%) rename packs/aides-de-jeu/{MANIFEST-000953 => MANIFEST-000969} (84%) rename packs/armors/{000860.log => 000875.log} (100%) rename packs/armors/{MANIFEST-000858 => MANIFEST-000874} (73%) rename packs/boons/{000954.log => 000969.log} (100%) rename packs/boons/{MANIFEST-000952 => MANIFEST-000968} (72%) rename packs/boonsflawscreatures/{000953.log => 000968.log} (100%) rename packs/boonsflawscreatures/{MANIFEST-000951 => MANIFEST-000967} (73%) rename packs/careers/{000953.log => 000968.log} (100%) rename packs/careers/{MANIFEST-000951 => MANIFEST-000967} (72%) rename packs/effets-exemples/{000951.log => 000966.log} (100%) rename packs/effets-exemples/{MANIFEST-000949 => MANIFEST-000965} (73%) rename packs/equipment/{000954.log => 000969.log} (100%) rename packs/equipment/{MANIFEST-000952 => MANIFEST-000968} (73%) rename packs/fightoptions/{000953.log => 000968.log} (100%) rename packs/fightoptions/{MANIFEST-000951 => MANIFEST-000967} (73%) rename packs/fightoptionsfanmade/{000436.log => 000451.log} (100%) rename packs/fightoptionsfanmade/{MANIFEST-000434 => MANIFEST-000450} (73%) rename packs/flaws/{000954.log => 000969.log} (100%) rename packs/flaws/{MANIFEST-000952 => MANIFEST-000968} (72%) rename packs/languages/{000953.log => 000968.log} (100%) rename packs/languages/{MANIFEST-000951 => MANIFEST-000967} (73%) rename packs/objets-alchimie/{000953.log => 000968.log} (100%) rename packs/objets-alchimie/{MANIFEST-000951 => MANIFEST-000967} (73%) rename packs/origins/{000953.log => 000968.log} (100%) rename packs/origins/{MANIFEST-000951 => MANIFEST-000967} (72%) rename packs/potions-alchimie/{000953.log => 000968.log} (100%) rename packs/potions-alchimie/{MANIFEST-000951 => MANIFEST-000967} (73%) rename packs/races/{000953.log => 000968.log} (100%) rename packs/races/{MANIFEST-000951 => MANIFEST-000967} (73%) rename packs/spells/{000953.log => 000968.log} (100%) rename packs/spells/{MANIFEST-000951 => MANIFEST-000967} (73%) rename packs/vehicleweapons/{000860.log => 000875.log} (100%) rename packs/vehicleweapons/{MANIFEST-000858 => MANIFEST-000874} (73%) rename packs/weapons/{000866.log => 000881.log} (100%) rename packs/weapons/{MANIFEST-000864 => MANIFEST-000880} (72%) create mode 100644 styles/README.md create mode 100644 styles/bol.less create mode 100644 styles/components/actor.less create mode 100644 styles/components/common.less create mode 100644 styles/components/item.less create mode 100644 styles/global/chat.less create mode 100644 styles/global/colors.less create mode 100644 styles/global/flex.less create mode 100644 styles/global/forms.less create mode 100644 styles/global/foundry-overrides.less create mode 100644 styles/global/item-list.less create mode 100644 styles/global/typography.less create mode 100644 templates/item.backup/item-sheet.hbs create mode 100644 templates/item.backup/parts/item-header.hbs create mode 100644 templates/item.backup/parts/properties/feature-properties.hbs create mode 100644 templates/item.backup/parts/properties/feature/boon-properties.hbs create mode 100644 templates/item.backup/parts/properties/feature/career-properties.hbs create mode 100644 templates/item.backup/parts/properties/feature/effect-properties.hbs create mode 100644 templates/item.backup/parts/properties/feature/fightoption-properties.hbs create mode 100644 templates/item.backup/parts/properties/feature/flaw-properties.hbs create mode 100644 templates/item.backup/parts/properties/feature/horoscope-properties.hbs create mode 100644 templates/item.backup/parts/properties/feature/origin-properties.hbs create mode 100644 templates/item.backup/parts/properties/feature/race-properties.hbs create mode 100644 templates/item.backup/parts/properties/feature/xplog-properties.hbs create mode 100644 templates/item.backup/parts/properties/item-properties.hbs create mode 100644 templates/item.backup/parts/properties/item/alchemy-properties.hbs create mode 100644 templates/item.backup/parts/properties/item/capacity-properties.hbs create mode 100644 templates/item.backup/parts/properties/item/equipment-properties.hbs create mode 100644 templates/item.backup/parts/properties/item/magical-properties.hbs create mode 100644 templates/item.backup/parts/properties/item/protection-properties.hbs create mode 100644 templates/item.backup/parts/properties/item/spell-properties.hbs create mode 100644 templates/item.backup/parts/properties/item/vehicle-properties.hbs create mode 100644 templates/item.backup/parts/properties/item/weapon-properties.hbs create mode 100644 templates/item.backup/parts/properties/item/weapon-vehicle-properties.hbs create mode 100644 templates/item.backup/post-item.hbs create mode 100644 templates/item/feature-sheet.hbs create mode 100644 templates/item/item-sheet.hbs.backup create mode 100644 templates/item/parts/item-header.hbs.backup diff --git a/APPV2_ITEMS_MIGRATION.md b/APPV2_ITEMS_MIGRATION.md new file mode 100644 index 0000000..c3ffd08 --- /dev/null +++ b/APPV2_ITEMS_MIGRATION.md @@ -0,0 +1,286 @@ +# Migration AppV2 - Item Sheets + +## Vue d'ensemble + +Migration des feuilles d'items de BoL vers l'architecture **ApplicationV2** de Foundry VTT v12+. + +## Fichiers créés + +### Classes AppV2 (module/applications/sheets/) + +1. **base-item-sheet.mjs** - Classe de base pour tous les item sheets + - Hérite de `foundry.applications.sheets.ItemSheetV2` + - Utilise `HandlebarsApplicationMixin` + - Gère les tabs, drag & drop, actions communes + - 272 lignes de code + +2. **item-sheet.mjs** - Sheet pour le type "item" + - Équipements, armes, protections, sorts, etc. + - Hérite de `BoLBaseItemSheet` + - Contexte spécifique aux items + +3. **feature-sheet.mjs** - Sheet pour le type "feature" + - Boons, flaws, careers, origins, races, etc. + - Hérite de `BoLBaseItemSheet` + - Contexte spécifique aux features + +4. **_module.mjs** - Export des sheets + +### Templates (templates/item/) + +1. **item-sheet.hbs** - Template pour les items +2. **feature-sheet.hbs** - Template pour les features +3. **parts/item-header.hbs** - Header mis à jour pour AppV2 + +### Backups + +- `templates/item.backup/` - Backup des templates originaux +- `module/item.backup/` - Backup de l'ancienne classe ItemSheet +- `templates/item/parts/item-header.hbs.backup` - Backup du header + +## Architecture AppV2 + +### Différences avec AppV1 + +| Aspect | AppV1 (avant) | AppV2 (après) | +|--------|---------------|---------------| +| Classe de base | `ItemSheet` | `ItemSheetV2` | +| Options | `static get defaultOptions()` | `static DEFAULT_OPTIONS` | +| getData | `async getData()` | `async _prepareContext()` | +| Template | Unique | Peut utiliser PARTS | +| Tabs | Automatiques | Gestion manuelle | +| Actions | Event listeners | `actions:` dans OPTIONS | +| Render | `activateListeners()` | `_onRender()` | + +### Structure de BoLBaseItemSheet + +```javascript +class BoLBaseItemSheet extends ItemSheetV2 { + // Options statiques + static DEFAULT_OPTIONS = { + classes, position, form, window, + actions, dragDrop, tabs + } + + // State + tabGroups = { primary: "description" } + + // Méthodes principales + async _prepareContext() // Prépare les données + _onRender() // Après le render + _activateTabs() // Active les tabs + _activateListeners() // Event listeners + + // Actions + static #onEditImage() // data-action="editImage" + static #onPostItem() // data-action="postItem" + + // Drag & Drop + #createDragDropHandlers() + _canDragStart() + _onDragStart() +} +``` + +## Fonctionnalités migrées + +### ✅ Depuis l'ancien BoLItemSheet + +1. **getData** → **_prepareContext** + - Enrichissement de la description + - Configuration des données dynamiques + - Gestion des catégories + - Propriétés des items + - Careers depuis l'actor + +2. **Tabs** + - Navigation entre Description et Properties + - State persistant avec `tabGroups` + - Activation manuelle des tabs + +3. **Actions** + - Edit Image (FilePicker) + - Post Item (chat) + +4. **Listeners spécifiques** + - Armor quality → soak formula + +5. **Dynamic defaults** + - Category par défaut + - Spell conditions (mandatory/optional) + - Equipment slots + +## Utilisation dans les templates + +### Actions (data-action) + +```handlebars +{{!-- Éditer l'image --}} + + +{{!-- Poster au chat --}} + +``` + +### Tabs + +```handlebars +{{!-- Navigation --}} + + +{{!-- Contenu --}} +
+ ... +
+``` + +### Editor + +```handlebars +{{!-- AppV2 avec ProseMirror --}} +{{editor enrichedDescription + target="system.description" + button=true + editable=isEditable + engine="prosemirror"}} +``` + +## Context disponible dans les templates + +```javascript +{ + // Document & system + fields: schema.fields, + systemFields: system.schema.fields, + item: document, + system: document.system, + source: document.toObject(), + + // Content + enrichedDescription: "HTML enrichi", + category: "equipment|weapon|spell|...", + itemProperties: ["prop1", "prop2"], + + // Config + config: game.bol.config, + isGM: boolean, + isEditable: boolean, + + // Tabs + tabs: [{id, label, icon}], + activeTab: "description|properties", + + // Type-specific (item-sheet.mjs) + isItem: true, + isEquipment: boolean, + isWeapon: boolean, + isProtection: boolean, + isSpell: boolean, + + // Type-specific (feature-sheet.mjs) + isFeature: true, + isBoon: boolean, + isFlaw: boolean, + isCareer: boolean, + isOrigin: boolean, + isRace: boolean, + + // Optional + careers: actor.careers // Si item sur actor +} +``` + +## Configuration dans bol.js + +```javascript +// Import +import * as sheets from "./applications/sheets/_module.mjs" + +// Enregistrement +foundry.documents.collections.Items.unregisterSheet("core", ...) +foundry.documents.collections.Items.registerSheet("bol", + sheets.BoLItemSheet, + { types: ["item"], makeDefault: true } +) +foundry.documents.collections.Items.registerSheet("bol", + sheets.BoLFeatureSheet, + { types: ["feature"], makeDefault: true } +) +``` + +## Avantages de AppV2 + +1. **Performance** : Meilleur rendu et gestion des updates +2. **Structure** : Code plus organisé et maintenable +3. **Actions** : Système d'actions déclaratif +4. **Context** : Préparation des données séparée du template +5. **Standard** : Aligné sur Foundry VTT v12+ +6. **Future-proof** : Architecture pérenne + +## Points d'attention + +### Compatibilité + +- Les données restent 100% compatibles +- Seule l'interface de sheet change +- Pas de migration de données nécessaire + +### Tabs + +Les tabs ne sont plus automatiques dans AppV2 : +- Navigation manuelle avec `_activateTabs()` +- State persistant avec `tabGroups` +- CSS `.active` géré manuellement + +### Editor + +ProseMirror est maintenant le moteur par défaut : +```handlebars +{{editor content engine="prosemirror"}} +``` + +### Actions + +Système déclaratif : +```javascript +actions: { + myAction: ClassName.#onMyAction +} +``` + +Dans le template : +```handlebars + +``` + +## Prochaines étapes + +### Court terme +1. Tester les sheets dans Foundry +2. Vérifier toutes les fonctionnalités +3. Ajuster les CSS si nécessaire + +### Moyen terme +4. Migrer les actor sheets vers AppV2 +5. Ajouter des features AppV2 (parts, etc.) +6. Optimiser les templates + +### Long terme +7. Utiliser PARTS pour modularité +8. Ajouter des actions avancées +9. Améliorer la UX + +## Références + +- [Foundry AppV2 Documentation](https://foundryvtt.com/api/classes/foundry.applications.api.ApplicationV2.html) +- [ItemSheetV2 API](https://foundryvtt.com/api/classes/foundry.applications.sheets.ItemSheetV2.html) +- Exemples : fvtt-cthulhu-eternal, fvtt-mournblade diff --git a/css/bol.css b/css/bol.css index e79b61a..6ab3dc9 100644 --- a/css/bol.css +++ b/css/bol.css @@ -1,3 +1,7 @@ +/* ========================================= */ +/* BoL System LESS Main File */ +/* ========================================= */ +/* Global Styles */ /* ----------------------------------------- */ /* LOCAL FONTS */ /* ----------------------------------------- */ @@ -8,40 +12,29 @@ font-display: swap; src: url(https://fonts.gstatic.com/s/contrailone/v10/eLGbP-j_JA-kG0_Zo51noafdZQ.ttf) format('truetype'); } - @font-face { font-family: "CCMeanwhile"; src: url('../fonts/ccmeanwhile-regular.ttf'); } - @font-face { font-family: "Wolfsbane2"; src: url('../fonts/wolfsbane2.ttf'); } - @font-face { font-family: "Wolfsbane2Condensed"; src: url('../fonts/wolfsbane2cond.ttf'); } - @font-face { font-family: "Wolfsbane2Expanded"; src: url('../fonts/wolfsbane2expand.ttf'); } - @font-face { font-family: "IMFellDWPicaSC-Regular"; src: url('../fonts/IMFellDWPicaSC-Regular.ttf'); } - /* ----------------------------------------- */ /* TEXT STYLES */ /* ----------------------------------------- */ -/* -------------- */ -/* Font Awesome */ -/* Overrides */ -/* -------------- */ -/* ------------- */ a.entity-link, a.inline-roll { border: none; @@ -49,33 +42,35 @@ a.inline-roll { border-bottom: 1px dotted grey; padding: 0; } - a.inline-roll { border: none; } - a:hover { text-shadow: 0 0 5px #a00; } - +.ellipsis { + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; +} +/* ----------------------------------------- */ +/* Foundry VTT Overrides */ +/* ----------------------------------------- */ #pause { background: none; } - -#pause>img { +#pause > img { width: 200px; height: 200px; top: -50px; left: calc(50% - 100px); opacity: 0.7; } - #pause h3 { font-family: "IMFellDWPicaSC-Regular", serif; font-size: 32px; text-shadow: 0px 3px 5px #000000; } - ::-webkit-scrollbar-thumb { outline: none; border-radius: 3px; @@ -83,17 +78,14 @@ a:hover { border: 1px solid #333 !important; border-color: #333 !important; } - ::-webkit-scrollbar-track { box-shadow: 0 0 3px #005d67 inset !important; border-radius: 3px; } - * { scrollbar-width: thin !important; scrollbar-color: #005d67 #ccc !important; } - .element-invisible { position: absolute; width: 1px; @@ -104,135 +96,92 @@ a:hover { clip: rect(0 0 0 0); overflow: hidden; } - .roll-box { border-width: 1px; border-color: #000000; margin-bottom: 2px; } - .hide { display: none; } - ul.no-bullets { list-style-type: none; - /* Remove bullets */ padding: 0; - /* Remove padding */ margin: 0; - /* Remove margins */ } - -.ellipsis { - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} - .nomargin { margin: 0; padding: 0; } - +/* ----------------------------------------- */ +/* Flexbox Utilities */ +/* ----------------------------------------- */ .flxrow { display: flex; flex-direction: row; flex-wrap: wrap; justify-content: flex-start; } - -.flxrow>* { +.flxrow > * { flex: 1; } - .flxrow .flex1 { flex: 1; } - .flxrow .flex2 { flex: 2; } - .flxrow .flex3 { flex: 3; } - .flxrow .flex4 { flex: 4; } - -/* ----------------------------------------- */ -/* Flexbox */ -/* ----------------------------------------- */ .flexrow { display: flex; flex-flow: row wrap; justify-content: flex-start; + /* Wrong in v13: > * { flex: 1; } */ } - -/* Wrong in v13.flexrow > * { - flex: 1; -} */ .flexrow .flex1 { flex: 1; } - .flexrow .flex2 { flex: 2; } - .flexrow .flex3 { flex: 3; } - .flexrow .flex4 { flex: 4; } - .flexrow .flex5 { flex: 5; } - .flexrow .flex6 { flex: 6; } - .flexrow .flex7 { flex: 7; } - .flexrow .flex8 { flex: 8; } - .flexrow .flex9 { flex: 9; } - -/*.flexcol { - display: flex; - flex-flow: column nowrap; -} -.flexcol > * { - flex: 1; -}*/ .flexcol .flex1 { flex: 1; } - .flexcol .flex2 { flex: 2; } - .flexcol .flex3 { flex: 3; } - .flexcol .flex4 { flex: 4; } - .flex-group-center, .flex-group-left, .flex-group-right { @@ -241,62 +190,46 @@ ul.no-bullets { text-align: center; padding: 5px; } - .flex-group-left { justify-content: flex-start; text-align: left; } - .flex-group-right { justify-content: flex-end; text-align: right; } - .center { text-align: center; display: flex; justify-content: center; align-items: center; } - .left { text-align: left; display: flex; align-items: center; justify-content: flex-start; } - .right { justify-content: flex-end; text-align: right; display: flex; align-items: center; } - .flex-center { align-items: center; justify-content: center; text-align: center; } - .flex-between { justify-content: space-between; } - .no-wrap { flex-wrap: nowrap !important; } - -.bol { - /* - Copied from dnd5e - */ - /* Form Groups */ - /* - Placeholders - */ -} - +/* ----------------------------------------- */ +/* Form Styles */ +/* ----------------------------------------- */ .bol input[readonly="true"] { border: none; color: dimgray; @@ -305,7 +238,6 @@ ul.no-bullets { vertical-align: middle; background: transparent; } - .bol input[type="text"], .bol input[type="number"], .bol input[type="text"]:hover, @@ -316,7 +248,6 @@ ul.no-bullets { border: none; box-shadow: none; } - .bol input:disabled:hover, .bol select:disabled:hover, .bol textarea:disabled:hover, @@ -327,15 +258,9 @@ ul.no-bullets { border: 1px solid transparent !important; outline: none !important; } - .bol button { background: rgba(0, 0, 0, 0.1); } - -.chat-button { - font-size: 0.8rem; -} - .bol select { box-shadow: none; font-size: 14px; @@ -346,25 +271,21 @@ ul.no-bullets { border: none; border-radius: 0; } - .bol select[multiple] { box-shadow: none; border: none; font-size: 14px; } - .bol select[multiple]:focus option:checked { background: darkred linear-gradient(0deg, darkred 0%, darkred 100%); color: white; } - .bol option { font-size: 14px; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } - .bol option:hover, .bol option:focus, .bol option:active, @@ -374,7 +295,6 @@ ul.no-bullets { background: darkred linear-gradient(0deg, darkred 0%, darkred 100%); color: white; } - .bol label.checkbox { flex: auto; padding: 0; @@ -383,80 +303,64 @@ ul.no-bullets { line-height: 22px; font-size: 11px; } - -.bol label.checkbox>input[type="checkbox"] { +.bol label.checkbox > input[type="checkbox"] { width: 16px; height: 16px; margin: 0 2px 0 0; position: relative; top: 4px; } - -.bol label.checkbox.right>input[type="checkbox"] { +.bol label.checkbox.right > input[type="checkbox"] { margin: 0 0 0 2px; } - .bol .form-group label { flex: 2; font-weight: bold; } - .bol .form-group .form-fields { display: flex; flex-direction: row; flex-wrap: wrap; justify-content: flex-start; } - -.bol .form-group .form-fields>* { +.bol .form-group .form-fields > * { flex: 1; margin: 0 3px 0 0; } - -.bol .form-group .form-fields>*:last-child { +.bol .form-group .form-fields > *:last-child { margin-right: 0; } - -.bol .form-group .form-fields>* .flex1 { +.bol .form-group .form-fields > * .flex1 { flex: 1; } - -.bol .form-group .form-fields>* .flex2 { +.bol .form-group .form-fields > * .flex2 { flex: 2; } - -.bol .form-group .form-fields>* .flex3 { +.bol .form-group .form-fields > * .flex3 { flex: 3; } - -.bol .form-group .form-fields>* .flex4 { +.bol .form-group .form-fields > * .flex4 { flex: 4; } - .bol .form-group .form-fields label { flex: 0 0 100%; margin: 0; } - .bol .form-group .form-fields label.checkbox { flex: auto; text-align: left; } - .bol .form-group .form-fields .field-value { text-align: center; } - .bol .form-group.stacked label { flex: 0 0 100%; margin: 0; } - .bol .form-group.stacked label.checkbox { flex: auto; text-align: left; } - .bol .form-header { margin: 0.25em 0 0.25em 0; padding: 2px 5px; @@ -464,24 +368,20 @@ ul.no-bullets { color: #4b4a44; background-color: lightgray; } - .bol h1.form-header { font-size: 2.2em; font-weight: 700; } - .bol h2.form-header { font-size: 1.8em; font-weight: 500; border-bottom: 1px groove #eeede0; } - .bol h3.form-header { font-size: 1.2em; font-weight: 500; border-bottom: 1px groove #eeede0; } - .bol h4.form-header { font-size: 1em; font-weight: 500; @@ -491,7 +391,6 @@ ul.no-bullets { border-top: none; border-bottom: 1px groove #eeede0; } - .bol .tag { display: inline-block; margin: 0 2px 0 0; @@ -502,61 +401,50 @@ ul.no-bullets { border-radius: 3px; background: rgba(0, 0, 0, 0.05); } - .bol ::placeholder { - /* Chrome, Firefox, Opera, Safari 10.1+ */ color: lightgray; opacity: 1; - /* Firefox */ } - .bol :-ms-input-placeholder { - /* Internet Explorer 10-11 */ color: lightgray; } - .bol ::-ms-input-placeholder { - /* Microsoft Edge */ color: lightgray; } - .bol input::placeholder { color: lightgray; } - .bol .property { margin-top: 2px; } - .bol .inc-dec-btns { color: #4b4a44; } - +.chat-button { + font-size: 0.8rem; +} .summmary-number { padding-left: 4rem; } - -/* Items List */ +/* ----------------------------------------- */ +/* Items List */ +/* ----------------------------------------- */ .items-list { list-style: none; margin: 7px 0; padding: 0; overflow-y: hidden; - /*overflow-y: auto;*/ } - .items-list .item-header { font-family: 'Signika', sans-serif; font-size: 1em; color: #4b4a44; background-color: lightgray; } - .items-list .item-header .item-name { font-family: "Wolfsbane2Expanded", cursive; font-size: 1.5em; } - .items-list .item { min-height: 30px; line-height: 24px; @@ -564,7 +452,6 @@ ul.no-bullets { border-bottom: 1px solid #BBB; align-items: stretch; } - .items-list .item .item-image { flex: 0 0 30px; padding: 0; @@ -574,7 +461,6 @@ ul.no-bullets { min-height: 30px; min-width: 30px; } - .items-list .item .item-image img { padding: 0; margin: 0; @@ -584,7 +470,6 @@ ul.no-bullets { min-height: 30px; min-width: 30px; } - .items-list .item .item-image.roll-weapon, .items-list .item .item-image.roll-career { background-color: transparent; @@ -594,204 +479,164 @@ ul.no-bullets { background-position: center; cursor: pointer; } - .items-list .item .item-image.roll-weapon:hover, .items-list .item .item-image.roll-career:hover { background-color: gray; } - .items-list .item .item-image.roll-weapon:hover img, .items-list .item .item-image.roll-career:hover img { visibility: hidden; } - .items-list .item .item-name, .items-list .item .item-field { margin: 0; } - .items-list .item .item-controls-1 { flex: 0 0 18px; } - .items-list .item .item-controls, .items-list .item .item-controls-2 { flex: 0 0 36px; } - .items-list .item .item-controls-3 { flex: 0 0 54px; } - .items-list .item .item-control { color: #4b4a44; } - .items-list .item-name-fixed-medium { min-width: 8rem; width: 8rem; } - .items-list .item-field-fixed-short { max-width: 3rem; min-width: 3rem; width: 3rem; } - .bougette-dice-img { - color: rgba(150, 44, 44, 0.70); + color: rgba(150, 44, 44, 0.7); } - /* ----------------------------------------- */ -/* Premade colors */ +/* Premade Colors */ /* ----------------------------------------- */ .light { color: lightgray; } - .bg-light { background: lightgray; } - .darkgray { color: #23221d; } - .bg-darkgray { background: #23221d; color: #fff; } - .darkbrown { color: #464331c4; } - .bg-darkbrown { background: #464331c4; color: #fff; } - .darkslate { color: darkslategray; } - .bg-darkslate { background: darkslategray; color: #fff; } - .darkgreen { color: #003c1e; } - .bg-darkgreen { background: #003c1e; color: #fff; } - .darkblue { color: midnightblue; } - .bg-darkblue { background: midnightblue; color: #fff; } - .blue { color: #009ee0; } - .bg-blue { background: #009ee0; color: #fff; } - .green { color: #44a12b; } - .bg-green { background: #44a12b; color: #fff; } - .black { color: #000; } - .bg-black { background: #000; color: #fff; } - .red { color: #cd071e; } - .bg-red { background: #cd071e; color: #fff; } - .darkred { color: darkred; } - .bg-darkred { background: darkred; color: #fff; } - .purple { color: purple; } - .bg-purple { background: purple; color: #fff; } - +/* ----------------------------------------- */ +/* Chat Messages */ +/* ----------------------------------------- */ .message-header h2.damage { color: orangered; font-weight: bold; } - .message-header h2.critical { color: green; font-weight: bold; } - .message-header h2.fumble { color: red; font-weight: bold; } - .message-header h2.success { color: darkgreen; font-weight: bold; } - .message-header h2.failure { color: darkred; font-weight: bold; } - -h2.good { - color: darkgreen; - font-weight: bold; -} - -h2.bad { - color: darkred; - font-weight: bold; -} - .message-header h2.roll { color: darkslategrey; font-weight: bold; } - +h2.good { + color: darkgreen; + font-weight: bold; +} +h2.bad { + color: darkred; + font-weight: bold; +} .chat-message { margin: 3px; padding: 10px; @@ -802,53 +647,51 @@ h2.bad { background-repeat: no-repeat; background-size: 100% 100%; } - .chat-message .message-header .flavor-text { font-family: "IMFellDWPicaSC-Regular", serif; font-size: 14px; } - .chat-message .message-header .flavor-text h2 { font-family: "Modesto Condensed", "Palatino Linotype", serif; font-size: 20px; } - .chat-message .message-content .dice-roll .dice-result .dice-formula { border-radius: 0px; border: 1px inset lightgray; background-color: #282828; color: white; } - .chat-message .message-content .dice-roll .dice-result .dice-tooltip .tooltip-part .part-total { border-radius: 0px; border: 1px inset lightgray; background-color: #2a2a2a; color: white; } - .chat-message .message-content .dice-roll .dice-result .dice-total { border-radius: 0px; border: 1px inset lightgray; background-color: #2a2a2a; color: white; } - +/* Component Styles */ +/* ----------------------------------------- */ +/* Common Sheet Styles */ +/* ----------------------------------------- */ body.system-bol img#logo { content: url("/systems/bol/ui/logo2.webp"); } - +.journal-page-content { + /* Reserved for future use */ +} .bol.sheet .window-header { border: none; } - .bol.sheet .window-content { height: 100%; padding: 10px; overflow-y: hidden; background: transparent; } - .bol.sheet .window-content form { border: 10px solid transparent; border-image: url("/systems/bol/ui/box-border-large.webp") 36 repeat; @@ -858,7 +701,6 @@ body.system-bol img#logo { padding: 0; height: 100%; } - .bol.sheet .window-content form .sheet-header { background-image: url("/systems/bol/ui/banner.webp"); background-repeat: no-repeat; @@ -876,7 +718,6 @@ body.system-bol img#logo { align-items: flex-end; padding-bottom: 10px; } - .bol.sheet .window-content form .sheet-header .header-field .header-field-group { overflow: hidden; display: flex; @@ -885,11 +726,9 @@ body.system-bol img#logo { justify-content: flex-start; align-items: baseline; } - .bol.sheet .window-content form .sheet-header .header-field .header-field-group .header-field-label { margin-right: 5px; } - .bol.sheet .window-content form .sheet-header .header-field .header-field-group .charname, .bol.sheet .window-content form .sheet-header .header-field .header-field-group .itemname, .bol.sheet .window-content form .sheet-header .header-field .header-field-group .header-field-value { @@ -898,16 +737,10 @@ body.system-bol img#logo { font-size: 1.5rem; background-color: #EEE; } - -.bol.sheet .window-content form .main { - /* Sheet Tabs */ -} - .bol.sheet .window-content form .main .tabs { flex: 0 0 30px; background-color: black; } - .bol.sheet .window-content form .main .tabs .item { line-height: 30px; font-weight: bold; @@ -916,62 +749,22 @@ body.system-bol img#logo { padding-top: 4px; font-size: 0.8em; } - .bol.sheet .window-content form .main .tabs .item.active { text-decoration: underline; text-shadow: none; } - .bol.sheet .window-content form .main .sheet-body { overflow: hidden; } - .bol.sheet .window-content form .main .sheet-body .tab { height: 95%; border: none; overflow-y: auto; - /* Items List */ } - .bol.sheet .window-content form .main .sheet-body .tab.description .editor, .bol.sheet .window-content form .main .sheet-body .tab.description .editor-content { height: 100%; } - -.bol.sheet.actor { - min-width: 820px; - min-height: 700px; - height: 700px; -} - -.bol.sheet.actor .window-content .bol-actor-form { - background-image: url("/systems/bol/ui/logo.webp"); - background-repeat: no-repeat; - background-size: 190px 115px; -} - -.bol.sheet.actor .window-content form .sidebar { - padding-top: 115px; - min-width: 250px; - width: 250px; - max-width: 250px; -} - -.journal-page-content { - /*color: rgba(0, 0, 0, 0.95);*/ -} - -.bol.sheet.actor .window-content form .sidebar .profile-img { - cursor: pointer; - border: none; - background-color: #EEE; - height: auto; - width: calc(250px - 10px); - min-width: calc(250px - 10px); - max-width: calc(250px - 10px); - margin-right: 10px; -} - .sheet-profile-img { cursor: pointer; border: none; @@ -984,49 +777,70 @@ body.system-bol img#logo { max-width: 96px; margin-right: 10px; } - +/* ----------------------------------------- */ +/* Actor Sheet Styles */ +/* ----------------------------------------- */ +.bol.sheet.actor { + min-width: 820px; + min-height: 700px; + height: 700px; +} +.bol.sheet.actor .window-content .bol-actor-form { + background-image: url("/systems/bol/ui/logo.webp"); + background-repeat: no-repeat; + background-size: 190px 115px; +} +.bol.sheet.actor .window-content form .sidebar { + padding-top: 115px; + min-width: 250px; + width: 250px; + max-width: 250px; +} +.bol.sheet.actor .window-content form .sidebar .profile-img { + cursor: pointer; + border: none; + background-color: #EEE; + height: auto; + width: calc(250px - 10px); + min-width: calc(250px - 10px); + max-width: calc(250px - 10px); + margin-right: 10px; +} .bol.sheet.actor .window-content form .main .sheet-body { overflow: hidden; } - .bol.sheet.actor .window-content form .main .sheet-body .tab .attribute.vigor { background-image: url("/systems/bol/ui/attributes/vigor.webp"); background-repeat: no-repeat; background-position: center center; background-size: 64px 64px; } - .bol.sheet.actor .window-content form .main .sheet-body .tab .attribute.agility { background-image: url("/systems/bol/ui/attributes/agility.webp"); background-repeat: no-repeat; background-position: center center; background-size: 64px 64px; } - .bol.sheet.actor .window-content form .main .sheet-body .tab .attribute.mind { background-image: url("/systems/bol/ui/attributes/mind.webp"); background-repeat: no-repeat; background-position: center center; background-size: 64px 64px; } - .bol.sheet.actor .window-content form .main .sheet-body .tab .attribute.appeal { background-image: url("/systems/bol/ui/attributes/appeal.webp"); background-repeat: no-repeat; background-position: center center; background-size: 64px 64px; } - .bol.sheet.actor .window-content form .main .sheet-body .tab .attribute .stat-value { margin-top: -10px; } - .bol.sheet.actor .bol-footer { height: 62px; max-height: 62px; min-height: 62px; } - .bol.sheet.actor .bol-footer .footer-left img { border: none; height: 62px; @@ -1034,7 +848,6 @@ body.system-bol img#logo { min-height: 62px; transform: scaleX(-1); } - .bol.sheet.actor .bol-footer .footer-center { margin-top: 20px; margin-left: calc(-330px * 2); @@ -1044,66 +857,54 @@ body.system-bol img#logo { min-height: 30px; background-color: black; } - .bol.sheet.actor .bol-footer .footer-right { text-align: right; } - .bol.sheet.actor .bol-footer .footer-right img { border: none; height: 62px; max-height: 62px; min-height: 62px; } - .bol.sheet.actor .stat-max { font-size: 1rem; font-weight: bold; color: #4b4a44; } - .bol.sheet.actor .bonus-text { margin-top: 7px; } - .bol.sheet.actor .stat-value { font-size: 1.5rem; font-weight: bold; color: darkred; } - .bol.sheet.actor .resource-bonus { font-weight: bold; color: darkred; } - .bol.sheet.actor .resources-value { background-color: #2a2a2a30; border-color: #003c1e; margin-top: 4px; border-radius: 0.5rem; } - .bol.sheet.actor .resources-novalue { background-color: #2a2a2a00; border-color: #003c1e; margin-top: 4px; border-radius: 0.5rem; } - .bol.sheet.actor .stat-roll { font-size: 1.5rem; color: #4b4a44; } - .bol.sheet.actor .stat-roll.malus { color: darkred; } - .bol.sheet.actor .stat-roll.bonus { color: darkgreen; } - .bol.sheet.actor .header-field-label, .bol.sheet.actor .stat-label { font-weight: bold; @@ -1111,13 +912,11 @@ body.system-bol img#logo { font-size: 2rem; font-variant: small-caps; } - .bol.sheet.actor .rounded { border-radius: 100px; width: 4rem; height: 4rem; } - .bol.sheet.actor .rounded-border { border: 3px solid #4b4a44; box-shadow: 5px 5px 5px gray; @@ -1125,77 +924,23 @@ body.system-bol img#logo { width: 4rem; height: 4rem; } - .bol.sheet.actor .half-rounded { border-radius: 100px 100px 0px 0px; width: 4rem; height: 4rem; } - .bol.sheet.actor .half-rounded-border { border-radius: 100px 100px 0px 0px; border: 3px solid #4b4a44; width: 4rem; height: 4rem; } - -.bol.sheet.item { - min-width: 460px; - min-height: 400px; -} - -.bol.sheet.item h1 input.itemname { - margin-top: 32px; - min-width: 24rem; - font-family: "Wolfsbane2Expanded", cursive; -} - -.bol.sheet.item .item-properties { - flex: 0 0 150px; - margin: 5px 5px 5px 0; - padding-right: 5px; - border-right: 1px groove #eeede0; -} - -.bol.sheet.item .item-properties .form-group { - margin: 0; -} - -.bol.sheet.item .item-properties .form-group label { - line-height: 20px; -} - -.bol.sheet.item .item-properties .properties-list { - list-style: none; - margin: 0; - padding: 0; -} - -.bol.sheet.item .item-properties .properties-list li { - margin: 3px 0; - padding: 0 2px; - background: rgba(0, 0, 0, 0.05); - border: 1px groove #eeede0; - text-align: center; - font-size: 12px; - line-height: 18px; -} - -.bol.dialog .sheet-header h3 { - font-family: "Wolfsbane2Expanded", cursive; - font-size: 24px; - color: black; -} - -.editor, -.editor-content { - height: 100%; -} - +/* ----------------------------------------- */ +/* HUD and Chat Extensions */ +/* ----------------------------------------- */ .rollable { cursor: pointer; } - .chat-message .chat-icon { float: right; border: 1px outset lightgray; @@ -1204,33 +949,26 @@ body.system-bol img#logo { width: 64px; height: 64px; } - .dialog-button { max-height: 2rem; } - .xp-next { color: darkgrey; - font-size: 1.0rem; + font-size: 1rem; border: 1px solid #4b4a44; box-shadow: 1px 1px 1px gray; border-radius: 100px; width: 1.25rem; height: 1.25rem; } - -/** Tooltip section */ .tooltip-container { position: relative; display: inline-block; } - .tooltip-container .tooltiptext { text-align: center; - /* Position the tooltip text */ position: absolute; z-index: 1; - /* Fade in tooltip */ visibility: hidden; opacity: 0; transition: opacity 0.3s; @@ -1241,21 +979,16 @@ body.system-bol img#logo { border-width: 1px; transform: translate(-40%, -60%); } - -/* Show the tooltip text when you mouse over the tooltip container */ .tooltip-container:hover .tooltiptext { visibility: visible; opacity: 1; } - -/** HUD SECTION */ .tokenhudext { display: flex; flex: 0 !important; font-family: CaslonPro; font-weight: 600; } - .tokenhudext.left { justify-content: flex-start; flex-direction: column; @@ -1263,66 +996,99 @@ body.system-bol img#logo { top: 2.75rem; right: 16rem; } - .tokenhudext.right { justify-content: flex-start; flex-direction: column; position: absolute; - /*transform: translate(0, -30%);*/ top: -4rem; max-width: 250px; left: 4rem; } - .tokenhudext.right2 { justify-content: flex-start; flex-direction: column; - /*transform: translate(0, -30%);*/ position: absolute; top: -4rem; left: 11rem; } - .control-icon.tokenhudicon { width: fit-content; height: fit-content; min-width: 6rem; flex-basis: auto; - padding: 0.20rem; + padding: 0.2rem; line-height: 1.1rem; - margin: 0.20rem; + margin: 0.2rem; } - .control-icon.tokenhudicon.right { margin-left: 8px; } - #token-hud .status-effects.active { z-index: 2; } - .bol-hud-menu label { font-size: 0.6rem; } - .bol-margin-tb-2 { margin-top: 2px; margin-bottom: 2px; } - .character-summary-container { opacity: 0.95; } - .character-summary-rollable { text-decoration: underline; } - .activated-green { color: darkgreen; } - -/* Hide compendium background image */ .compendium-sidebar .directory-item.compendium.locked .compendium-banner { opacity: 0.5; -} \ No newline at end of file +} +/* ----------------------------------------- */ +/* Item Sheet Styles */ +/* ----------------------------------------- */ +.bol.sheet.item { + min-width: 460px; + min-height: 400px; +} +.bol.sheet.item h1 input.itemname { + margin-top: 32px; + min-width: 24rem; + font-family: "Wolfsbane2Expanded", cursive; +} +.bol.sheet.item .item-properties { + flex: 0 0 150px; + margin: 5px 5px 5px 0; + padding-right: 5px; + border-right: 1px groove #eeede0; +} +.bol.sheet.item .item-properties .form-group { + margin: 0; +} +.bol.sheet.item .item-properties .form-group label { + line-height: 20px; +} +.bol.sheet.item .item-properties .properties-list { + list-style: none; + margin: 0; + padding: 0; +} +.bol.sheet.item .item-properties .properties-list li { + margin: 3px 0; + padding: 0 2px; + background: rgba(0, 0, 0, 0.05); + border: 1px groove #eeede0; + text-align: center; + font-size: 12px; + line-height: 18px; +} +.bol.dialog .sheet-header h3 { + font-family: "Wolfsbane2Expanded", cursive; + font-size: 24px; + color: black; +} +.editor, +.editor-content { + height: 100%; +} diff --git a/module/applications/sheets/_module.mjs b/module/applications/sheets/_module.mjs new file mode 100644 index 0000000..08faa02 --- /dev/null +++ b/module/applications/sheets/_module.mjs @@ -0,0 +1,3 @@ +export { default as BoLBaseItemSheet } from "./base-item-sheet.mjs" +export { default as BoLItemSheet } from "./item-sheet.mjs" +export { default as BoLFeatureSheet } from "./feature-sheet.mjs" diff --git a/module/applications/sheets/base-item-sheet.mjs b/module/applications/sheets/base-item-sheet.mjs new file mode 100644 index 0000000..9f9ae2f --- /dev/null +++ b/module/applications/sheets/base-item-sheet.mjs @@ -0,0 +1,243 @@ +const { HandlebarsApplicationMixin } = foundry.applications.api + +/** + * Base Item Sheet for BoL system using AppV2 + * @extends {ItemSheetV2} + */ +export default class BoLBaseItemSheet extends HandlebarsApplicationMixin(foundry.applications.sheets.ItemSheetV2) { + constructor(options = {}) { + super(options) + this.#dragDrop = this.#createDragDropHandlers() + } + + #dragDrop + + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["bol", "sheet", "item"], + position: { + width: 650, + height: 780, + }, + form: { + submitOnChange: true, + }, + window: { + resizable: true, + }, + actions: { + editImage: BoLBaseItemSheet.#onEditImage, + postItem: BoLBaseItemSheet.#onPostItem, + }, + } + + /** + * Tab groups state + * @type {object} + */ + tabGroups = { primary: "description" } + + /** @override */ + async _prepareContext() { + const context = { + // Document & system + fields: this.document.schema.fields, + systemFields: this.document.system.schema.fields, + item: this.document, + system: this.document.system, + source: this.document.toObject(), + + // Enriched content + enrichedDescription: await foundry.applications.ux.TextEditor.implementation.enrichHTML( + this.document.system.description, + { async: true } + ), + + // Properties + category: this.document.system.category, + itemProperties: this.document.itemProperties, + + // Config & permissions + config: game.bol.config, + isGM: game.user.isGM, + isEditable: this.isEditable, + + // CSS classes for template + cssClass: this.options.classes.join(" "), + + // Tab state + tabs: this._getTabs(), + activeTab: this.tabGroups.primary || "description" + } + + // Add careers if item is on an actor + if (this.document.actor) { + context.careers = this.document.actor.careers + } + + // Apply dynamic defaults based on item type + this._applyDynamicDefaults(context) + + return context + } + + /** + * Get tabs configuration + * @returns {object[]} + * @private + */ + _getTabs() { + return [ + { id: "description", label: "BOL.ui.tab.description", icon: "fa-solid fa-book" }, + { id: "properties", label: "BOL.ui.tab.details", icon: "fa-solid fa-cog" } + ] + } + + /** + * Apply dynamic defaults to context based on item type and category + * @param {object} context + * @private + */ + _applyDynamicDefaults(context) { + const itemData = context.item + + if (itemData.type === "item") { + // Set default category + if (!itemData.system.category) { + itemData.system.category = "equipment" + } + + // Handle equipment slot + if (itemData.system.category === "equipment" && itemData.system.properties.equipable) { + if (!itemData.system.properties.slot) { + itemData.system.properties.slot = "-" + } + } + + // Handle spell conditions + if (itemData.system.category === 'spell') { + if (!itemData.system.properties.mandatoryconditions) { + itemData.system.properties.mandatoryconditions = [] + } + if (!itemData.system.properties.optionnalconditions) { + itemData.system.properties.optionnalconditions = [] + } + for (let i = 0; i < 4; i++) { + itemData.system.properties.mandatoryconditions[i] = itemData.system.properties.mandatoryconditions[i] ?? "" + } + for (let i = 0; i < 8; i++) { + itemData.system.properties.optionnalconditions[i] = itemData.system.properties.optionnalconditions[i] ?? "" + } + } + } else if (itemData.type === "feature") { + // Set default subtype/category + if (!itemData.system.subtype) { + itemData.system.category = "origin" + } + } + } + + /** @override */ + _onRender(context, options) { + super._onRender(context, options) + this.#dragDrop.forEach((d) => d.bind(this.element)) + this._activateTabs() + this._activateListeners() + } + + /** + * Activate tab navigation + * @private + */ + _activateTabs() { + const nav = this.element.querySelector('nav.tabs[data-group="primary"]') + if (!nav) return + + const activeTab = this.tabGroups.primary || "description" + + // Activate tab links + nav.querySelectorAll('[data-tab]').forEach(link => { + const tab = link.dataset.tab + link.classList.toggle('active', tab === activeTab) + link.addEventListener('click', (event) => { + event.preventDefault() + this.tabGroups.primary = tab + this.render() + }) + }) + + // Show/hide tab content + this.element.querySelectorAll('.tab[data-tab]').forEach(content => { + content.classList.toggle('active', content.dataset.tab === activeTab) + }) + } + + /** + * Activate custom listeners + * @private + */ + _activateListeners() { + if (!this.isEditable) return + + // Armor quality change handler + const armorQuality = this.element.querySelector('.armorQuality') + if (armorQuality) { + armorQuality.addEventListener('change', (ev) => { + const value = ev.currentTarget.value + const soakFormula = this.element.querySelector('.soakFormula') + if (soakFormula && game.bol.config.soakFormulas[value]) { + soakFormula.value = game.bol.config.soakFormulas[value] + } + }) + } + } + + // #region Drag-and-Drop Workflow + + /** + * Create drag-and-drop workflow handlers for this Application + * @returns {DragDrop[]} + * @private + */ + #createDragDropHandlers() { + return [] + } + + // #endregion + + // #region Actions + + /** + * Handle editing the item image + * @param {PointerEvent} event + * @param {HTMLElement} target + * @private + */ + static async #onEditImage(event, target) { + const fp = new FilePicker({ + current: this.document.img, + type: "image", + callback: (path) => { + this.document.update({ img: path }) + }, + }) + return fp.browse() + } + + /** + * Handle posting the item to chat + * @param {PointerEvent} event + * @param {HTMLElement} target + * @private + */ + static async #onPostItem(event, target) { + const BoLUtility = (await import("../../system/bol-utility.js")).BoLUtility + let chatData = foundry.utils.duplicate(this.document) + if (this.document.actor) { + chatData.actor = { id: this.document.actor.id } + } + BoLUtility.postItem(chatData) + } + + // #endregion +} diff --git a/module/applications/sheets/feature-sheet.mjs b/module/applications/sheets/feature-sheet.mjs new file mode 100644 index 0000000..34b8d97 --- /dev/null +++ b/module/applications/sheets/feature-sheet.mjs @@ -0,0 +1,40 @@ +import BoLBaseItemSheet from "./base-item-sheet.mjs" + +/** + * Item Sheet for "feature" type items (boons, careers, origins, etc.) + * @extends {BoLBaseItemSheet} + */ +export default class BoLFeatureSheet extends BoLBaseItemSheet { + + /** @override */ + static DEFAULT_OPTIONS = { + ...super.DEFAULT_OPTIONS, + classes: [...super.DEFAULT_OPTIONS.classes, "item-type-feature"], + } + + /** @override */ + static PARTS = { + main: { + template: "systems/bol/templates/item/feature-sheet.hbs", + }, + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + + // Add feature-specific context + context.isFeature = true + context.isBoon = context.system.subtype === "boon" + context.isFlaw = context.system.subtype === "flaw" + context.isCareer = context.system.subtype === "career" + context.isOrigin = context.system.subtype === "origin" + context.isRace = context.system.subtype === "race" + context.isFightOption = context.system.subtype === "fightoption" + context.isEffect = context.system.subtype === "effect" + context.isHoroscope = context.system.subtype === "horoscope" + context.isXpLog = context.system.subtype === "xplog" + + return context + } +} diff --git a/module/applications/sheets/item-sheet.mjs b/module/applications/sheets/item-sheet.mjs new file mode 100644 index 0000000..d6d4259 --- /dev/null +++ b/module/applications/sheets/item-sheet.mjs @@ -0,0 +1,39 @@ +import BoLBaseItemSheet from "./base-item-sheet.mjs" + +/** + * Item Sheet for "item" type items (equipment, weapons, etc.) + * @extends {BoLBaseItemSheet} + */ +export default class BoLItemSheet extends BoLBaseItemSheet { + + /** @override */ + static DEFAULT_OPTIONS = { + ...super.DEFAULT_OPTIONS, + classes: [...super.DEFAULT_OPTIONS.classes, "item-type-item"], + } + + /** @override */ + static PARTS = { + main: { + template: "systems/bol/templates/item/item-sheet.hbs", + }, + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + + // Add item-specific context + context.isItem = true + context.isEquipment = context.category === "equipment" + context.isWeapon = context.category === "weapon" + context.isProtection = context.category === "protection" + context.isSpell = context.category === "spell" + context.isAlchemy = context.category === "alchemy" + context.isCapacity = context.category === "capacity" + context.isMagical = context.category === "magical" + context.isVehicle = context.category === "vehicle" + + return context + } +} diff --git a/module/bol.js b/module/bol.js index 0981bb1..79adc69 100644 --- a/module/bol.js +++ b/module/bol.js @@ -5,7 +5,7 @@ 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" +// Note: Old BoLItemSheet (AppV1) is now replaced by AppV2 sheets import { System, BOL } from "./system/config.js" import { preloadHandlebarsTemplates } from "./system/templates.js" import { registerHandlebarsHelpers } from "./system/helpers.js" @@ -21,6 +21,9 @@ import { BoLRoll } from "./controllers/bol-rolls.js" // Import DataModels import * as models from "./models/_module.mjs" +// Import AppV2 Sheets +import * as sheets from "./applications/sheets/_module.mjs" + /* -------------------------------------------- */ Hooks.once('init', async function () { @@ -32,7 +35,8 @@ Hooks.once('init', async function () { BoLUtility, macros: Macros, config: BOL, - models + models, + sheets }; // Game socket @@ -57,13 +61,13 @@ Hooks.once('init', async function () { horde: models.BoLHorde, vehicle: models.BoLVehicle } - + CONFIG.Item.documentClass = BoLItem; CONFIG.Item.dataModels = { item: models.BoLItem, feature: models.BoLFeature } - + CONFIG.Combat.documentClass = BoLCombatManager; // Register sheet application classes @@ -72,8 +76,17 @@ Hooks.once('init', async function () { foundry.documents.collections.Actors.registerSheet("bol", BoLVehicleSheet, { types: ["vehicle"], makeDefault: true }) foundry.documents.collections.Actors.registerSheet("bol", BoLHordeSheet, { types: ["horde"], makeDefault: true }) + // Register AppV2 Item Sheets foundry.documents.collections.Items.unregisterSheet("core", foundry.appv1.sheets.ItemSheet); - foundry.documents.collections.Items.registerSheet("bol", BoLItemSheet, { makeDefault: true }); + foundry.documents.collections.Items.registerSheet("bol", sheets.BoLItemSheet, { types: ["item"], makeDefault: true }); + foundry.documents.collections.Items.registerSheet("bol", sheets.BoLFeatureSheet, { types: ["feature"], makeDefault: true }); + + // Debug: Verify AppV2 sheets are loaded + console.log("BoL Item Sheets registered:", { + BoLItemSheet: sheets.BoLItemSheet.name, + BoLFeatureSheet: sheets.BoLFeatureSheet.name, + extendsApplicationV2: sheets.BoLItemSheet.prototype instanceof foundry.applications.api.ApplicationV2 + }); // Inot useful stuff BoLUtility.init() diff --git a/module/item/item-sheet.js b/module/item.backup/item-sheet.js similarity index 100% rename from module/item/item-sheet.js rename to module/item.backup/item-sheet.js diff --git a/module/item.backup/item-sheet.js.appv1 b/module/item.backup/item-sheet.js.appv1 new file mode 100644 index 0000000..f41c603 --- /dev/null +++ b/module/item.backup/item-sheet.js.appv1 @@ -0,0 +1,119 @@ +import { BoLUtility } from "../system/bol-utility.js"; + +/** + * Extend the basic ItemSheet with some very simple modifications + * @extends {ItemSheet} + */ +export class BoLItemSheet extends foundry.appv1.sheets.ItemSheet { + + /** @override */ + static get defaultOptions() { + return foundry.utils.mergeObject(super.defaultOptions, { + classes: ["bol", "sheet", "item"], + template: "systems/bol/templates/item/item-sheet.hbs", + width: 650, + height: 780, + dragDrop: [{ dragSelector: null, dropSelector: null }], + tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "description" }] + }); + } + + /* -------------------------------------------- */ + /** @override */ + async getData(options) { + const data = super.getData(options) + let itemData = foundry.utils.duplicate(data.document) + data.config = game.bol.config + data.item = itemData + data.category = itemData.system.category + data.isGM = game.user.isGM; + data.itemProperties = this.item.itemProperties; + data.description = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.description, { async: true }) + if (data.document.actor) { + data.careers = data.document.actor.careers + } + // Dynamic default data fix/adapt + if (itemData.type == "item") { + if (!itemData.system.category) { + itemData.system.category = "equipment" + } + if (itemData.system.category == "equipment" && itemData.system.properties.equipable) { + if (!itemData.system.properties.slot) { + itemData.system.properties.slot = "-" + } + } + if (itemData.system.category == 'spell') { + if (!itemData.system.properties.mandatoryconditions) { + itemData.system.properties.mandatoryconditions = [] + } + if (!itemData.system.properties.optionnalconditions) { + itemData.system.properties.optionnalconditions = [] + } + for (let i = 0; i < 4; i++) { + itemData.system.properties.mandatoryconditions[i] = itemData.system.properties.mandatoryconditions[i] ?? "" + } + for (let i = 0; i < 8; i++) { + itemData.system.properties.optionnalconditions[i] = itemData.system.properties.optionnalconditions[i] ?? "" + } + } + } else { + if (!itemData.system.subtype) { + itemData.system.category = "origin" + } + } + + console.log("ITEMDATA", data); + return data; + } + + /* -------------------------------------------- */ + _getHeaderButtons() { + let buttons = super._getHeaderButtons(); + buttons.unshift({ + class: "post", + icon: "fas fa-comment", + onclick: ev => this.postItem() + }); + return buttons + } + + /* -------------------------------------------- */ + postItem() { + let chatData = foundry.utils.duplicate(this.item) + if (this.actor) { + chatData.actor = { id: this.actor.id }; + } + BoLUtility.postItem(chatData); + } + + + /* -------------------------------------------- */ + /** @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; + } + + /* -------------------------------------------- */ + + /** @override */ + activateListeners(html) { + + super.activateListeners(html); + + // Everything below here is only needed if the sheet is editable + if (!this.options.editable) return; + // Roll handlers, click handlers, etc. would go here. + + html.find('.armorQuality').change(ev => { + const li = $(ev.currentTarget); + console.log(game.bol.config.soakFormulas[li.val()]); + $('.soakFormula').val(game.bol.config.soakFormulas[li.val()]); + }); + + } + +} diff --git a/module/item.backup/item.js b/module/item.backup/item.js new file mode 100644 index 0000000..d149d17 --- /dev/null +++ b/module/item.backup/item.js @@ -0,0 +1,36 @@ +/** + * Extend the basic Item with some very simple modifications. + * @extends {Item} + */ +export class BoLItem extends Item { + /** + * Augment the basic Item data model with additional dynamic data. + */ + prepareData() { + super.prepareData() + + const actorData = this.actor ? this.actor.system : {} + } + + /* -------------------------------------------- */ + get properties() { + return this.system.properties + } + + /* -------------------------------------------- */ + /** + * Get the Array of item properties which are used in the small sidebar of the description tab + * @return {Array} + * @private + */ + get itemProperties() { + const props = []; + if ( this.type === "item" ) { + const entries = Object.entries(this.system.properties) + props.push(...entries.filter(e => e[1] === true).map(e => { return game.bol.config.itemProperties2[e[0]] })) + } + return props.filter(p => !!p) + } + + +} diff --git a/module/models/feature.mjs b/module/models/feature.mjs index f6cab2c..199ef30 100644 --- a/module/models/feature.mjs +++ b/module/models/feature.mjs @@ -8,7 +8,7 @@ export default class BoLFeatureDataModel extends foundry.abstract.TypeDataModel return { // Base fields - category: new fields.StringField({ initial: null }), + category: new fields.StringField({ initial: "" }), subtype: new fields.StringField({ initial: "default" }), description: new fields.HTMLField({ initial: "" }), properties: new fields.SchemaField({}), diff --git a/module/models/item.mjs b/module/models/item.mjs index 19ebe72..fe3a9ef 100644 --- a/module/models/item.mjs +++ b/module/models/item.mjs @@ -8,7 +8,7 @@ export default class BoLItemDataModel extends foundry.abstract.TypeDataModel { return { // Base fields - category: new fields.StringField({ initial: null }), + category: new fields.StringField({ initial: "" }), subtype: new fields.StringField({ initial: "default" }), description: new fields.HTMLField({ initial: "" }), properties: new fields.SchemaField({ diff --git a/packs/aides-de-jeu/000955.log b/packs/aides-de-jeu/000970.log similarity index 100% rename from packs/aides-de-jeu/000955.log rename to packs/aides-de-jeu/000970.log diff --git a/packs/aides-de-jeu/CURRENT b/packs/aides-de-jeu/CURRENT index 0962e78..1526d0a 100644 --- a/packs/aides-de-jeu/CURRENT +++ b/packs/aides-de-jeu/CURRENT @@ -1 +1 @@ -MANIFEST-000953 +MANIFEST-000969 diff --git a/packs/aides-de-jeu/LOG b/packs/aides-de-jeu/LOG index 83b87f4..dd3d03b 100644 --- a/packs/aides-de-jeu/LOG +++ b/packs/aides-de-jeu/LOG @@ -1,8 +1,3 @@ -2026/01/05-17:48:52.795130 7f93ea7fc6c0 Recovering log #951 -2026/01/05-17:48:52.804687 7f93ea7fc6c0 Delete type=3 #949 -2026/01/05-17:48:52.804760 7f93ea7fc6c0 Delete type=0 #951 -2026/01/05-18:46:08.165267 7f93e9ffb6c0 Level-0 table #956: started -2026/01/05-18:46:08.165288 7f93e9ffb6c0 Level-0 table #956: 0 bytes OK -2026/01/05-18:46:08.171239 7f93e9ffb6c0 Delete type=0 #954 -2026/01/05-18:46:08.190776 7f93e9ffb6c0 Manual compaction at level-0 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end) -2026/01/05-18:46:08.190816 7f93e9ffb6c0 Manual compaction at level-1 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end) +2026/01/13-08:07:30.199598 7fad373ff6c0 Recovering log #967 +2026/01/13-08:07:30.210270 7fad373ff6c0 Delete type=3 #965 +2026/01/13-08:07:30.210357 7fad373ff6c0 Delete type=0 #967 diff --git a/packs/aides-de-jeu/LOG.old b/packs/aides-de-jeu/LOG.old index aa497f2..9e3c512 100644 --- a/packs/aides-de-jeu/LOG.old +++ b/packs/aides-de-jeu/LOG.old @@ -1,8 +1,8 @@ -2026/01/04-21:27:06.154359 7f93ebfff6c0 Recovering log #947 -2026/01/04-21:27:06.163916 7f93ebfff6c0 Delete type=3 #945 -2026/01/04-21:27:06.163965 7f93ebfff6c0 Delete type=0 #947 -2026/01/04-21:27:09.349413 7f93e9ffb6c0 Level-0 table #952: started -2026/01/04-21:27:09.349437 7f93e9ffb6c0 Level-0 table #952: 0 bytes OK -2026/01/04-21:27:09.356668 7f93e9ffb6c0 Delete type=0 #950 -2026/01/04-21:27:09.356816 7f93e9ffb6c0 Manual compaction at level-0 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end) -2026/01/04-21:27:09.356844 7f93e9ffb6c0 Manual compaction at level-1 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end) +2026/01/13-00:31:14.360616 7fad35bfc6c0 Recovering log #963 +2026/01/13-00:31:14.370734 7fad35bfc6c0 Delete type=3 #961 +2026/01/13-00:31:14.370788 7fad35bfc6c0 Delete type=0 #963 +2026/01/13-00:33:18.090132 7fad353fb6c0 Level-0 table #968: started +2026/01/13-00:33:18.090168 7fad353fb6c0 Level-0 table #968: 0 bytes OK +2026/01/13-00:33:18.096686 7fad353fb6c0 Delete type=0 #966 +2026/01/13-00:33:18.110856 7fad353fb6c0 Manual compaction at level-0 from '!journal!3xJg1rCxnWvEmoxS' @ 72057594037927935 : 1 .. '!journal.pages!veAAxCtCKcFIsnln.0kUgZspxXO7VS8bd' @ 0 : 0; will stop at (end) +2026/01/13-00:33:18.110909 7fad353fb6c0 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-000953 b/packs/aides-de-jeu/MANIFEST-000969 similarity index 84% rename from packs/aides-de-jeu/MANIFEST-000953 rename to packs/aides-de-jeu/MANIFEST-000969 index ee4494603924571f3c7bdac23c79d98311095090..e59a0c8e080897223b1ff6a159638f99e17af72f 100644 GIT binary patch delta 25 hcmaFDc!_bs0U_oWb6U9>7@1D7b22cWW@nkh1ORnP2ZjIu delta 43 tcmcb__=Iu70hRq1-6n7|Ff#38=VV~s&CW81Dc1TIEQgUw_s-sXB-y;Bhza(P6p;TY%E#;R)GcX delta 41 scmbQkxR!B3x6)(THC9{}S-a>dNZ<}g;2ux_01AH#mH+?% diff --git a/packs/boons/000954.log b/packs/boons/000969.log similarity index 100% rename from packs/boons/000954.log rename to packs/boons/000969.log diff --git a/packs/boons/CURRENT b/packs/boons/CURRENT index 9c629f1..0a8f1fe 100644 --- a/packs/boons/CURRENT +++ b/packs/boons/CURRENT @@ -1 +1 @@ -MANIFEST-000952 +MANIFEST-000968 diff --git a/packs/boons/LOG b/packs/boons/LOG index 96b9f6f..47ce8dc 100644 --- a/packs/boons/LOG +++ b/packs/boons/LOG @@ -1,8 +1,3 @@ -2026/01/05-17:48:52.664159 7f93eaffd6c0 Recovering log #950 -2026/01/05-17:48:52.674361 7f93eaffd6c0 Delete type=3 #948 -2026/01/05-17:48:52.674426 7f93eaffd6c0 Delete type=0 #950 -2026/01/05-18:46:08.131395 7f93e9ffb6c0 Level-0 table #955: started -2026/01/05-18:46:08.131423 7f93e9ffb6c0 Level-0 table #955: 0 bytes OK -2026/01/05-18:46:08.138592 7f93e9ffb6c0 Delete type=0 #953 -2026/01/05-18:46:08.138762 7f93e9ffb6c0 Manual compaction at level-0 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end) -2026/01/05-18:46:08.138775 7f93e9ffb6c0 Manual compaction at level-1 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end) +2026/01/13-08:07:30.052912 7fad35bfc6c0 Recovering log #966 +2026/01/13-08:07:30.063608 7fad35bfc6c0 Delete type=3 #964 +2026/01/13-08:07:30.063709 7fad35bfc6c0 Delete type=0 #966 diff --git a/packs/boons/LOG.old b/packs/boons/LOG.old index 1ed12b1..b57abf8 100644 --- a/packs/boons/LOG.old +++ b/packs/boons/LOG.old @@ -1,8 +1,8 @@ -2026/01/04-21:27:06.028125 7f93ea7fc6c0 Recovering log #946 -2026/01/04-21:27:06.038087 7f93ea7fc6c0 Delete type=3 #944 -2026/01/04-21:27:06.038175 7f93ea7fc6c0 Delete type=0 #946 -2026/01/04-21:27:09.288246 7f93e9ffb6c0 Level-0 table #951: started -2026/01/04-21:27:09.288266 7f93e9ffb6c0 Level-0 table #951: 0 bytes OK -2026/01/04-21:27:09.295632 7f93e9ffb6c0 Delete type=0 #949 -2026/01/04-21:27:09.302193 7f93e9ffb6c0 Manual compaction at level-0 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end) -2026/01/04-21:27:09.302223 7f93e9ffb6c0 Manual compaction at level-1 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end) +2026/01/13-00:31:14.236837 7fad373ff6c0 Recovering log #962 +2026/01/13-00:31:14.246601 7fad373ff6c0 Delete type=3 #960 +2026/01/13-00:31:14.246657 7fad373ff6c0 Delete type=0 #962 +2026/01/13-00:33:18.044085 7fad353fb6c0 Level-0 table #967: started +2026/01/13-00:33:18.044110 7fad353fb6c0 Level-0 table #967: 0 bytes OK +2026/01/13-00:33:18.050908 7fad353fb6c0 Delete type=0 #965 +2026/01/13-00:33:18.057401 7fad353fb6c0 Manual compaction at level-0 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end) +2026/01/13-00:33:18.057428 7fad353fb6c0 Manual compaction at level-1 from '!items!039ZF3E3MtAGwbiX' @ 72057594037927935 : 1 .. '!items!zgspy1QKaxdEetEw' @ 0 : 0; will stop at (end) diff --git a/packs/boons/MANIFEST-000952 b/packs/boons/MANIFEST-000968 similarity index 72% rename from packs/boons/MANIFEST-000952 rename to packs/boons/MANIFEST-000968 index 183440cce495818f77d295f31410545abe676427..6e9808ca596d020535ddf873228f7bc1ee35c014 100644 GIT binary patch delta 25 hcmdnMIFE5ckIIEQgUx8S+O8~<`KFfyHB=VV|$$c0B~vtlK=n! delta 41 rcmbQkxR!B3w^Gc{>tS3Bj7&S&IT@IDva>kwH+wOG1a^W1b^`?f^?3=T diff --git a/packs/careers/000953.log b/packs/careers/000968.log similarity index 100% rename from packs/careers/000953.log rename to packs/careers/000968.log diff --git a/packs/careers/CURRENT b/packs/careers/CURRENT index a502202..0165034 100644 --- a/packs/careers/CURRENT +++ b/packs/careers/CURRENT @@ -1 +1 @@ -MANIFEST-000951 +MANIFEST-000967 diff --git a/packs/careers/LOG b/packs/careers/LOG index 85abc10..13eb4df 100644 --- a/packs/careers/LOG +++ b/packs/careers/LOG @@ -1,8 +1,3 @@ -2026/01/05-17:48:52.703286 7f93ea7fc6c0 Recovering log #949 -2026/01/05-17:48:52.712737 7f93ea7fc6c0 Delete type=3 #947 -2026/01/05-17:48:52.712782 7f93ea7fc6c0 Delete type=0 #949 -2026/01/05-18:46:08.157666 7f93e9ffb6c0 Level-0 table #954: started -2026/01/05-18:46:08.157700 7f93e9ffb6c0 Level-0 table #954: 0 bytes OK -2026/01/05-18:46:08.165027 7f93e9ffb6c0 Delete type=0 #952 -2026/01/05-18:46:08.165139 7f93e9ffb6c0 Manual compaction at level-0 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end) -2026/01/05-18:46:08.165158 7f93e9ffb6c0 Manual compaction at level-1 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end) +2026/01/13-08:07:30.097111 7fad35bfc6c0 Recovering log #965 +2026/01/13-08:07:30.108030 7fad35bfc6c0 Delete type=3 #963 +2026/01/13-08:07:30.108147 7fad35bfc6c0 Delete type=0 #965 diff --git a/packs/careers/LOG.old b/packs/careers/LOG.old index ecf9100..47380b6 100644 --- a/packs/careers/LOG.old +++ b/packs/careers/LOG.old @@ -1,8 +1,8 @@ -2026/01/04-21:27:06.066954 7f93ea7fc6c0 Recovering log #945 -2026/01/04-21:27:06.077513 7f93ea7fc6c0 Delete type=3 #943 -2026/01/04-21:27:06.077584 7f93ea7fc6c0 Delete type=0 #945 -2026/01/04-21:27:09.302290 7f93e9ffb6c0 Level-0 table #950: started -2026/01/04-21:27:09.302308 7f93e9ffb6c0 Level-0 table #950: 0 bytes OK -2026/01/04-21:27:09.309131 7f93e9ffb6c0 Delete type=0 #948 -2026/01/04-21:27:09.329337 7f93e9ffb6c0 Manual compaction at level-0 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end) -2026/01/04-21:27:09.329393 7f93e9ffb6c0 Manual compaction at level-1 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end) +2026/01/13-00:31:14.273174 7fad373ff6c0 Recovering log #961 +2026/01/13-00:31:14.283828 7fad373ff6c0 Delete type=3 #959 +2026/01/13-00:31:14.283908 7fad373ff6c0 Delete type=0 #961 +2026/01/13-00:33:18.051012 7fad353fb6c0 Level-0 table #966: started +2026/01/13-00:33:18.051036 7fad353fb6c0 Level-0 table #966: 0 bytes OK +2026/01/13-00:33:18.057270 7fad353fb6c0 Delete type=0 #964 +2026/01/13-00:33:18.057409 7fad353fb6c0 Manual compaction at level-0 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end) +2026/01/13-00:33:18.057437 7fad353fb6c0 Manual compaction at level-1 from '!items!4S4xAfMXGnuU0O1a' @ 72057594037927935 : 1 .. '!items!zxY3sW0iCJBvwjOS' @ 0 : 0; will stop at (end) diff --git a/packs/careers/MANIFEST-000951 b/packs/careers/MANIFEST-000967 similarity index 72% rename from packs/careers/MANIFEST-000951 rename to packs/careers/MANIFEST-000967 index 046de896553639e6b8bb3a34764456add52a4c8a..0f461ffbfc21e453dbee0509e65e162840646319 100644 GIT binary patch delta 25 hcmdnMIFE5ck5K&V|E=5%j7%rkIT@Hwva?)g1ORVb2a*5) delta 43 tcmbQoxPfs(kBag%%?aELj7&S&IT@IDva?)gtUB?)4J5J?B(fVM0ssiu3s?XE diff --git a/packs/effets-exemples/000951.log b/packs/effets-exemples/000966.log similarity index 100% rename from packs/effets-exemples/000951.log rename to packs/effets-exemples/000966.log diff --git a/packs/effets-exemples/CURRENT b/packs/effets-exemples/CURRENT index 0e7b448..8bac917 100644 --- a/packs/effets-exemples/CURRENT +++ b/packs/effets-exemples/CURRENT @@ -1 +1 @@ -MANIFEST-000949 +MANIFEST-000965 diff --git a/packs/effets-exemples/LOG b/packs/effets-exemples/LOG index 521dcc0..fcc53ce 100644 --- a/packs/effets-exemples/LOG +++ b/packs/effets-exemples/LOG @@ -1,8 +1,3 @@ -2026/01/05-17:48:52.884139 7f93eaffd6c0 Recovering log #947 -2026/01/05-17:48:52.893984 7f93eaffd6c0 Delete type=3 #945 -2026/01/05-17:48:52.894046 7f93eaffd6c0 Delete type=0 #947 -2026/01/05-18:46:08.224243 7f93e9ffb6c0 Level-0 table #952: started -2026/01/05-18:46:08.224281 7f93e9ffb6c0 Level-0 table #952: 0 bytes OK -2026/01/05-18:46:08.230395 7f93e9ffb6c0 Delete type=0 #950 -2026/01/05-18:46:08.244434 7f93e9ffb6c0 Manual compaction at level-0 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end) -2026/01/05-18:46:08.244477 7f93e9ffb6c0 Manual compaction at level-1 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end) +2026/01/13-08:07:30.299106 7fad35bfc6c0 Recovering log #963 +2026/01/13-08:07:30.310415 7fad35bfc6c0 Delete type=3 #961 +2026/01/13-08:07:30.310500 7fad35bfc6c0 Delete type=0 #963 diff --git a/packs/effets-exemples/LOG.old b/packs/effets-exemples/LOG.old index b19b1e0..ad6a2d6 100644 --- a/packs/effets-exemples/LOG.old +++ b/packs/effets-exemples/LOG.old @@ -1,8 +1,8 @@ -2026/01/04-21:27:06.242012 7f93ea7fc6c0 Recovering log #943 -2026/01/04-21:27:06.252013 7f93ea7fc6c0 Delete type=3 #941 -2026/01/04-21:27:06.252066 7f93ea7fc6c0 Delete type=0 #943 -2026/01/04-21:27:09.390639 7f93e9ffb6c0 Level-0 table #948: started -2026/01/04-21:27:09.390658 7f93e9ffb6c0 Level-0 table #948: 0 bytes OK -2026/01/04-21:27:09.396811 7f93e9ffb6c0 Delete type=0 #946 -2026/01/04-21:27:09.410812 7f93e9ffb6c0 Manual compaction at level-0 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end) -2026/01/04-21:27:09.410834 7f93e9ffb6c0 Manual compaction at level-1 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end) +2026/01/13-00:31:14.446842 7fad363fd6c0 Recovering log #959 +2026/01/13-00:31:14.457714 7fad363fd6c0 Delete type=3 #957 +2026/01/13-00:31:14.457795 7fad363fd6c0 Delete type=0 #959 +2026/01/13-00:33:18.151324 7fad353fb6c0 Level-0 table #964: started +2026/01/13-00:33:18.151382 7fad353fb6c0 Level-0 table #964: 0 bytes OK +2026/01/13-00:33:18.157882 7fad353fb6c0 Delete type=0 #962 +2026/01/13-00:33:18.164702 7fad353fb6c0 Manual compaction at level-0 from '!items!6fTZ6hOKR4pWbWOe' @ 72057594037927935 : 1 .. '!items!zwSNMO9HpiqUCMt8' @ 0 : 0; will stop at (end) +2026/01/13-00:33:18.175125 7fad353fb6c0 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-000949 b/packs/effets-exemples/MANIFEST-000965 similarity index 73% rename from packs/effets-exemples/MANIFEST-000949 rename to packs/effets-exemples/MANIFEST-000965 index 380ea353329e840460f18194e2c40a9b87df8091..efa040ca09b4779faba5c887280f8d2b74e8957c 100644 GIT binary patch delta 24 fcmZ3>IEQgUx1e5zIS&^DBhxW?{%hO@sv@ delta 41 scmbQkxR!B3x6+@jL7H3)j7;0uIT@I@v$IGT8~w}%32X-m>;wt`0QJQQ;Q#;t diff --git a/packs/equipment/000954.log b/packs/equipment/000969.log similarity index 100% rename from packs/equipment/000954.log rename to packs/equipment/000969.log diff --git a/packs/equipment/CURRENT b/packs/equipment/CURRENT index 9c629f1..0a8f1fe 100644 --- a/packs/equipment/CURRENT +++ b/packs/equipment/CURRENT @@ -1 +1 @@ -MANIFEST-000952 +MANIFEST-000968 diff --git a/packs/equipment/LOG b/packs/equipment/LOG index 747717f..08bd1d6 100644 --- a/packs/equipment/LOG +++ b/packs/equipment/LOG @@ -1,8 +1,3 @@ -2026/01/05-17:48:52.742838 7f93eaffd6c0 Recovering log #950 -2026/01/05-17:48:52.753021 7f93eaffd6c0 Delete type=3 #948 -2026/01/05-17:48:52.753070 7f93eaffd6c0 Delete type=0 #950 -2026/01/05-18:46:08.151562 7f93e9ffb6c0 Level-0 table #955: started -2026/01/05-18:46:08.151582 7f93e9ffb6c0 Level-0 table #955: 0 bytes OK -2026/01/05-18:46:08.157521 7f93e9ffb6c0 Delete type=0 #953 -2026/01/05-18:46:08.165132 7f93e9ffb6c0 Manual compaction at level-0 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end) -2026/01/05-18:46:08.165154 7f93e9ffb6c0 Manual compaction at level-1 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end) +2026/01/13-08:07:30.141144 7fad36bfe6c0 Recovering log #966 +2026/01/13-08:07:30.151959 7fad36bfe6c0 Delete type=3 #964 +2026/01/13-08:07:30.152081 7fad36bfe6c0 Delete type=0 #966 diff --git a/packs/equipment/LOG.old b/packs/equipment/LOG.old index 48b8523..8500baa 100644 --- a/packs/equipment/LOG.old +++ b/packs/equipment/LOG.old @@ -1,8 +1,8 @@ -2026/01/04-21:27:06.103266 7f93eb7fe6c0 Recovering log #946 -2026/01/04-21:27:06.114180 7f93eb7fe6c0 Delete type=3 #944 -2026/01/04-21:27:06.114255 7f93eb7fe6c0 Delete type=0 #946 -2026/01/04-21:27:09.322146 7f93e9ffb6c0 Level-0 table #951: started -2026/01/04-21:27:09.322167 7f93e9ffb6c0 Level-0 table #951: 0 bytes OK -2026/01/04-21:27:09.329148 7f93e9ffb6c0 Delete type=0 #949 -2026/01/04-21:27:09.329383 7f93e9ffb6c0 Manual compaction at level-0 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end) -2026/01/04-21:27:09.329422 7f93e9ffb6c0 Manual compaction at level-1 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end) +2026/01/13-00:31:14.310520 7fad373ff6c0 Recovering log #962 +2026/01/13-00:31:14.320991 7fad373ff6c0 Delete type=3 #960 +2026/01/13-00:31:14.321051 7fad373ff6c0 Delete type=0 #962 +2026/01/13-00:33:18.069718 7fad353fb6c0 Level-0 table #967: started +2026/01/13-00:33:18.069745 7fad353fb6c0 Level-0 table #967: 0 bytes OK +2026/01/13-00:33:18.076816 7fad353fb6c0 Delete type=0 #965 +2026/01/13-00:33:18.083350 7fad353fb6c0 Manual compaction at level-0 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end) +2026/01/13-00:33:18.083400 7fad353fb6c0 Manual compaction at level-1 from '!items!0ErhyqifZLDCmMfT' @ 72057594037927935 : 1 .. '!items!yE8UH6YAgNGjKDEu' @ 0 : 0; will stop at (end) diff --git a/packs/equipment/MANIFEST-000952 b/packs/equipment/MANIFEST-000968 similarity index 73% rename from packs/equipment/MANIFEST-000952 rename to packs/equipment/MANIFEST-000968 index f99abfcf44a54d45afce1b1a3cca252dc3c1208c..c3e66d5f8df99e43f4b7ab9acc614d5e05f4568f 100644 GIT binary patch delta 25 gcmZ3_IG1rkw~!zszX>-3BhyKCP6p;v>@1&|0ZZ%!h5!Hn delta 43 tcmbQsxSnxBx60WcHypVc7@2mmb22dRVrTix{I1>38ziy|B(eu20suFU43_`^ diff --git a/packs/fightoptions/000953.log b/packs/fightoptions/000968.log similarity index 100% rename from packs/fightoptions/000953.log rename to packs/fightoptions/000968.log diff --git a/packs/fightoptions/CURRENT b/packs/fightoptions/CURRENT index a502202..0165034 100644 --- a/packs/fightoptions/CURRENT +++ b/packs/fightoptions/CURRENT @@ -1 +1 @@ -MANIFEST-000951 +MANIFEST-000967 diff --git a/packs/fightoptions/LOG b/packs/fightoptions/LOG index a6e121d..3f7467a 100644 --- a/packs/fightoptions/LOG +++ b/packs/fightoptions/LOG @@ -1,8 +1,3 @@ -2026/01/05-17:48:52.833468 7f93eb7fe6c0 Recovering log #949 -2026/01/05-17:48:52.842854 7f93eb7fe6c0 Delete type=3 #947 -2026/01/05-17:48:52.842916 7f93eb7fe6c0 Delete type=0 #949 -2026/01/05-18:46:08.210715 7f93e9ffb6c0 Level-0 table #954: started -2026/01/05-18:46:08.210743 7f93e9ffb6c0 Level-0 table #954: 0 bytes OK -2026/01/05-18:46:08.216985 7f93e9ffb6c0 Delete type=0 #952 -2026/01/05-18:46:08.217118 7f93e9ffb6c0 Manual compaction at level-0 from '!items!AoT2c0af4lY6aBsx' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end) -2026/01/05-18:46:08.217151 7f93e9ffb6c0 Manual compaction at level-1 from '!items!AoT2c0af4lY6aBsx' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end) +2026/01/13-08:07:30.243235 7fad36bfe6c0 Recovering log #965 +2026/01/13-08:07:30.253392 7fad36bfe6c0 Delete type=3 #963 +2026/01/13-08:07:30.253472 7fad36bfe6c0 Delete type=0 #965 diff --git a/packs/fightoptions/LOG.old b/packs/fightoptions/LOG.old index c3271d4..57bce28 100644 --- a/packs/fightoptions/LOG.old +++ b/packs/fightoptions/LOG.old @@ -1,8 +1,8 @@ -2026/01/04-21:27:06.191520 7f93eb7fe6c0 Recovering log #945 -2026/01/04-21:27:06.201833 7f93eb7fe6c0 Delete type=3 #943 -2026/01/04-21:27:06.201898 7f93eb7fe6c0 Delete type=0 #945 -2026/01/04-21:27:09.363375 7f93e9ffb6c0 Level-0 table #950: started -2026/01/04-21:27:09.363409 7f93e9ffb6c0 Level-0 table #950: 0 bytes OK -2026/01/04-21:27:09.370710 7f93e9ffb6c0 Delete type=0 #948 -2026/01/04-21:27:09.384119 7f93e9ffb6c0 Manual compaction at level-0 from '!items!AoT2c0af4lY6aBsx' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end) -2026/01/04-21:27:09.384146 7f93e9ffb6c0 Manual compaction at level-1 from '!items!AoT2c0af4lY6aBsx' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end) +2026/01/13-00:31:14.398650 7fad36bfe6c0 Recovering log #961 +2026/01/13-00:31:14.408258 7fad36bfe6c0 Delete type=3 #959 +2026/01/13-00:31:14.408316 7fad36bfe6c0 Delete type=0 #961 +2026/01/13-00:33:18.117431 7fad353fb6c0 Level-0 table #966: started +2026/01/13-00:33:18.117458 7fad353fb6c0 Level-0 table #966: 0 bytes OK +2026/01/13-00:33:18.123956 7fad353fb6c0 Delete type=0 #964 +2026/01/13-00:33:18.137577 7fad353fb6c0 Manual compaction at level-0 from '!items!AoT2c0af4lY6aBsx' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end) +2026/01/13-00:33:18.137619 7fad353fb6c0 Manual compaction at level-1 from '!items!AoT2c0af4lY6aBsx' @ 72057594037927935 : 1 .. '!items!vGydqADwTsHZ9B3j' @ 0 : 0; will stop at (end) diff --git a/packs/fightoptions/MANIFEST-000951 b/packs/fightoptions/MANIFEST-000967 similarity index 73% rename from packs/fightoptions/MANIFEST-000951 rename to packs/fightoptions/MANIFEST-000967 index 0324c78624d21784ac8327b0a5562970bbd46831..e46078e015fd1870e3681676dca177977b10e411 100644 GIT binary patch delta 25 hcmZ3_IG1rkx6qgM@t?RE7@1D6b22cWWM|pS2mp5#2kQU; delta 43 tcmbQsxSnxBx5|o>osYR07@2mkb22dRWM|pSC^)%cHArM9NMtui1OO~X3-bT~ diff --git a/packs/fightoptionsfanmade/000436.log b/packs/fightoptionsfanmade/000451.log similarity index 100% rename from packs/fightoptionsfanmade/000436.log rename to packs/fightoptionsfanmade/000451.log diff --git a/packs/fightoptionsfanmade/CURRENT b/packs/fightoptionsfanmade/CURRENT index f9a97cb..cf972fb 100644 --- a/packs/fightoptionsfanmade/CURRENT +++ b/packs/fightoptionsfanmade/CURRENT @@ -1 +1 @@ -MANIFEST-000434 +MANIFEST-000450 diff --git a/packs/fightoptionsfanmade/LOG b/packs/fightoptionsfanmade/LOG index 8e1abb4..d9e8fe8 100644 --- a/packs/fightoptionsfanmade/LOG +++ b/packs/fightoptionsfanmade/LOG @@ -1,8 +1,3 @@ -2026/01/05-17:48:52.845257 7f93eaffd6c0 Recovering log #432 -2026/01/05-17:48:52.856086 7f93eaffd6c0 Delete type=3 #430 -2026/01/05-17:48:52.856148 7f93eaffd6c0 Delete type=0 #432 -2026/01/05-18:46:08.197169 7f93e9ffb6c0 Level-0 table #437: started -2026/01/05-18:46:08.197189 7f93e9ffb6c0 Level-0 table #437: 0 bytes OK -2026/01/05-18:46:08.204388 7f93e9ffb6c0 Delete type=0 #435 -2026/01/05-18:46:08.217099 7f93e9ffb6c0 Manual compaction at level-0 from '!items!CLRp0k5qV8mD03pW' @ 72057594037927935 : 1 .. '!items!wYEpnhbyYaMkaNdL' @ 0 : 0; will stop at (end) -2026/01/05-18:46:08.217134 7f93e9ffb6c0 Manual compaction at level-1 from '!items!CLRp0k5qV8mD03pW' @ 72057594037927935 : 1 .. '!items!wYEpnhbyYaMkaNdL' @ 0 : 0; will stop at (end) +2026/01/13-08:07:30.256588 7fad35bfc6c0 Recovering log #448 +2026/01/13-08:07:30.267581 7fad35bfc6c0 Delete type=3 #446 +2026/01/13-08:07:30.267689 7fad35bfc6c0 Delete type=0 #448 diff --git a/packs/fightoptionsfanmade/LOG.old b/packs/fightoptionsfanmade/LOG.old index 50f22ef..7cbcaa1 100644 --- a/packs/fightoptionsfanmade/LOG.old +++ b/packs/fightoptionsfanmade/LOG.old @@ -1,8 +1,8 @@ -2026/01/04-21:27:06.203697 7f93eaffd6c0 Recovering log #428 -2026/01/04-21:27:06.214195 7f93eaffd6c0 Delete type=3 #426 -2026/01/04-21:27:06.214286 7f93eaffd6c0 Delete type=0 #428 -2026/01/04-21:27:09.377290 7f93e9ffb6c0 Level-0 table #433: started -2026/01/04-21:27:09.377314 7f93e9ffb6c0 Level-0 table #433: 0 bytes OK -2026/01/04-21:27:09.383925 7f93e9ffb6c0 Delete type=0 #431 -2026/01/04-21:27:09.384140 7f93e9ffb6c0 Manual compaction at level-0 from '!items!CLRp0k5qV8mD03pW' @ 72057594037927935 : 1 .. '!items!wYEpnhbyYaMkaNdL' @ 0 : 0; will stop at (end) -2026/01/04-21:27:09.384156 7f93e9ffb6c0 Manual compaction at level-1 from '!items!CLRp0k5qV8mD03pW' @ 72057594037927935 : 1 .. '!items!wYEpnhbyYaMkaNdL' @ 0 : 0; will stop at (end) +2026/01/13-00:31:14.410555 7fad363fd6c0 Recovering log #444 +2026/01/13-00:31:14.420238 7fad363fd6c0 Delete type=3 #442 +2026/01/13-00:31:14.420295 7fad363fd6c0 Delete type=0 #444 +2026/01/13-00:33:18.124112 7fad353fb6c0 Level-0 table #449: started +2026/01/13-00:33:18.124145 7fad353fb6c0 Level-0 table #449: 0 bytes OK +2026/01/13-00:33:18.131131 7fad353fb6c0 Delete type=0 #447 +2026/01/13-00:33:18.137587 7fad353fb6c0 Manual compaction at level-0 from '!items!CLRp0k5qV8mD03pW' @ 72057594037927935 : 1 .. '!items!wYEpnhbyYaMkaNdL' @ 0 : 0; will stop at (end) +2026/01/13-00:33:18.137626 7fad353fb6c0 Manual compaction at level-1 from '!items!CLRp0k5qV8mD03pW' @ 72057594037927935 : 1 .. '!items!wYEpnhbyYaMkaNdL' @ 0 : 0; will stop at (end) diff --git a/packs/fightoptionsfanmade/MANIFEST-000434 b/packs/fightoptionsfanmade/MANIFEST-000450 similarity index 73% rename from packs/fightoptionsfanmade/MANIFEST-000434 rename to packs/fightoptionsfanmade/MANIFEST-000450 index a7972ca5131907979d85db2dff0f92ef1cfc78c6..5e5a186451586886833630e2c5d7b18fa865c5dd 100644 GIT binary patch delta 25 hcmZ3_IG1rkx6nd?#TU657?}<;b22a=VP=`e2moj_2IBw# delta 43 tcmbQsxSnxBx5{0O+9TWyj7*!EIT@I@Ftbc!>=*v61QOW-64?e40RR$-3fcew diff --git a/packs/flaws/000954.log b/packs/flaws/000969.log similarity index 100% rename from packs/flaws/000954.log rename to packs/flaws/000969.log diff --git a/packs/flaws/CURRENT b/packs/flaws/CURRENT index 9c629f1..0a8f1fe 100644 --- a/packs/flaws/CURRENT +++ b/packs/flaws/CURRENT @@ -1 +1 @@ -MANIFEST-000952 +MANIFEST-000968 diff --git a/packs/flaws/LOG b/packs/flaws/LOG index b3f66d1..c2ce08a 100644 --- a/packs/flaws/LOG +++ b/packs/flaws/LOG @@ -1,8 +1,3 @@ -2026/01/05-17:48:52.690354 7f93eb7fe6c0 Recovering log #950 -2026/01/05-17:48:52.699681 7f93eb7fe6c0 Delete type=3 #948 -2026/01/05-17:48:52.699755 7f93eb7fe6c0 Delete type=0 #950 -2026/01/05-18:46:08.119311 7f93e9ffb6c0 Level-0 table #955: started -2026/01/05-18:46:08.119337 7f93e9ffb6c0 Level-0 table #955: 0 bytes OK -2026/01/05-18:46:08.125254 7f93e9ffb6c0 Delete type=0 #953 -2026/01/05-18:46:08.138743 7f93e9ffb6c0 Manual compaction at level-0 from '!items!0wCqg1UpGd50uJrS' @ 72057594037927935 : 1 .. '!items!znd0K3b7HzYpdehs' @ 0 : 0; will stop at (end) -2026/01/05-18:46:08.138788 7f93e9ffb6c0 Manual compaction at level-1 from '!items!0wCqg1UpGd50uJrS' @ 72057594037927935 : 1 .. '!items!znd0K3b7HzYpdehs' @ 0 : 0; will stop at (end) +2026/01/13-08:07:30.082049 7fad363fd6c0 Recovering log #966 +2026/01/13-08:07:30.092988 7fad363fd6c0 Delete type=3 #964 +2026/01/13-08:07:30.093097 7fad363fd6c0 Delete type=0 #966 diff --git a/packs/flaws/LOG.old b/packs/flaws/LOG.old index 341a677..22024c6 100644 --- a/packs/flaws/LOG.old +++ b/packs/flaws/LOG.old @@ -1,8 +1,8 @@ -2026/01/04-21:27:06.053584 7f93eb7fe6c0 Recovering log #946 -2026/01/04-21:27:06.063134 7f93eb7fe6c0 Delete type=3 #944 -2026/01/04-21:27:06.063198 7f93eb7fe6c0 Delete type=0 #946 -2026/01/04-21:27:09.281778 7f93e9ffb6c0 Level-0 table #951: started -2026/01/04-21:27:09.281804 7f93e9ffb6c0 Level-0 table #951: 0 bytes OK -2026/01/04-21:27:09.288063 7f93e9ffb6c0 Delete type=0 #949 -2026/01/04-21:27:09.302185 7f93e9ffb6c0 Manual compaction at level-0 from '!items!0wCqg1UpGd50uJrS' @ 72057594037927935 : 1 .. '!items!znd0K3b7HzYpdehs' @ 0 : 0; will stop at (end) -2026/01/04-21:27:09.302218 7f93e9ffb6c0 Manual compaction at level-1 from '!items!0wCqg1UpGd50uJrS' @ 72057594037927935 : 1 .. '!items!znd0K3b7HzYpdehs' @ 0 : 0; will stop at (end) +2026/01/13-00:31:14.260770 7fad363fd6c0 Recovering log #962 +2026/01/13-00:31:14.270998 7fad363fd6c0 Delete type=3 #960 +2026/01/13-00:31:14.271071 7fad363fd6c0 Delete type=0 #962 +2026/01/13-00:33:18.030429 7fad353fb6c0 Level-0 table #967: started +2026/01/13-00:33:18.030470 7fad353fb6c0 Level-0 table #967: 0 bytes OK +2026/01/13-00:33:18.037118 7fad353fb6c0 Delete type=0 #965 +2026/01/13-00:33:18.057382 7fad353fb6c0 Manual compaction at level-0 from '!items!0wCqg1UpGd50uJrS' @ 72057594037927935 : 1 .. '!items!znd0K3b7HzYpdehs' @ 0 : 0; will stop at (end) +2026/01/13-00:33:18.057416 7fad353fb6c0 Manual compaction at level-1 from '!items!0wCqg1UpGd50uJrS' @ 72057594037927935 : 1 .. '!items!znd0K3b7HzYpdehs' @ 0 : 0; will stop at (end) diff --git a/packs/flaws/MANIFEST-000952 b/packs/flaws/MANIFEST-000968 similarity index 72% rename from packs/flaws/MANIFEST-000952 rename to packs/flaws/MANIFEST-000968 index 0b8c33f46fb8dbb1feef87b8308cb5396b704338..87fa11e82c1daecb45dd49217c69965bf1056762 100644 GIT binary patch delta 25 hcmdnMIFE5ckI3y1&! diff --git a/packs/objets-alchimie/000953.log b/packs/objets-alchimie/000968.log similarity index 100% rename from packs/objets-alchimie/000953.log rename to packs/objets-alchimie/000968.log diff --git a/packs/objets-alchimie/CURRENT b/packs/objets-alchimie/CURRENT index a502202..0165034 100644 --- a/packs/objets-alchimie/CURRENT +++ b/packs/objets-alchimie/CURRENT @@ -1 +1 @@ -MANIFEST-000951 +MANIFEST-000967 diff --git a/packs/objets-alchimie/LOG b/packs/objets-alchimie/LOG index 8be9c79..4de586a 100644 --- a/packs/objets-alchimie/LOG +++ b/packs/objets-alchimie/LOG @@ -1,8 +1,3 @@ -2026/01/05-17:48:52.871507 7f93ebfff6c0 Recovering log #949 -2026/01/05-17:48:52.880964 7f93ebfff6c0 Delete type=3 #947 -2026/01/05-17:48:52.881025 7f93ebfff6c0 Delete type=0 #949 -2026/01/05-18:46:08.217216 7f93e9ffb6c0 Level-0 table #954: started -2026/01/05-18:46:08.217255 7f93e9ffb6c0 Level-0 table #954: 0 bytes OK -2026/01/05-18:46:08.224112 7f93e9ffb6c0 Delete type=0 #952 -2026/01/05-18:46:08.244422 7f93e9ffb6c0 Manual compaction at level-0 from '!items!0Yhn3r8AFsKXEKeS' @ 72057594037927935 : 1 .. '!items!xVWrSPiX0Nwccsn6' @ 0 : 0; will stop at (end) -2026/01/05-18:46:08.244461 7f93e9ffb6c0 Manual compaction at level-1 from '!items!0Yhn3r8AFsKXEKeS' @ 72057594037927935 : 1 .. '!items!xVWrSPiX0Nwccsn6' @ 0 : 0; will stop at (end) +2026/01/13-08:07:30.285456 7fad373ff6c0 Recovering log #965 +2026/01/13-08:07:30.295903 7fad373ff6c0 Delete type=3 #963 +2026/01/13-08:07:30.295998 7fad373ff6c0 Delete type=0 #965 diff --git a/packs/objets-alchimie/LOG.old b/packs/objets-alchimie/LOG.old index f214ffd..b6bf755 100644 --- a/packs/objets-alchimie/LOG.old +++ b/packs/objets-alchimie/LOG.old @@ -1,8 +1,8 @@ -2026/01/04-21:27:06.229799 7f93eb7fe6c0 Recovering log #945 -2026/01/04-21:27:06.240212 7f93eb7fe6c0 Delete type=3 #943 -2026/01/04-21:27:06.240271 7f93eb7fe6c0 Delete type=0 #945 -2026/01/04-21:27:09.384243 7f93e9ffb6c0 Level-0 table #950: started -2026/01/04-21:27:09.384266 7f93e9ffb6c0 Level-0 table #950: 0 bytes OK -2026/01/04-21:27:09.390516 7f93e9ffb6c0 Delete type=0 #948 -2026/01/04-21:27:09.410801 7f93e9ffb6c0 Manual compaction at level-0 from '!items!0Yhn3r8AFsKXEKeS' @ 72057594037927935 : 1 .. '!items!xVWrSPiX0Nwccsn6' @ 0 : 0; will stop at (end) -2026/01/04-21:27:09.410839 7f93e9ffb6c0 Manual compaction at level-1 from '!items!0Yhn3r8AFsKXEKeS' @ 72057594037927935 : 1 .. '!items!xVWrSPiX0Nwccsn6' @ 0 : 0; will stop at (end) +2026/01/13-00:31:14.434032 7fad36bfe6c0 Recovering log #961 +2026/01/13-00:31:14.444388 7fad36bfe6c0 Delete type=3 #959 +2026/01/13-00:31:14.444475 7fad36bfe6c0 Delete type=0 #961 +2026/01/13-00:33:18.158035 7fad353fb6c0 Level-0 table #966: started +2026/01/13-00:33:18.158068 7fad353fb6c0 Level-0 table #966: 0 bytes OK +2026/01/13-00:33:18.164518 7fad353fb6c0 Delete type=0 #964 +2026/01/13-00:33:18.164715 7fad353fb6c0 Manual compaction at level-0 from '!items!0Yhn3r8AFsKXEKeS' @ 72057594037927935 : 1 .. '!items!xVWrSPiX0Nwccsn6' @ 0 : 0; will stop at (end) +2026/01/13-00:33:18.164827 7fad353fb6c0 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-000951 b/packs/objets-alchimie/MANIFEST-000967 similarity index 73% rename from packs/objets-alchimie/MANIFEST-000951 rename to packs/objets-alchimie/MANIFEST-000967 index 768b596687485e7be6122e38935ab51629f8f9c2..3fd940a338171f4fd4dc9e3de97af7d5a5086fae 100644 GIT binary patch delta 25 hcmZ3_IG1rkx6oDJg%;clj7%rkIT@Hwva?)Z0sv>m2L=ED delta 43 tcmbQsxSnxBw+d&9yEQihBhwCcP6p?{|UHvBqR3=-K164?zB0Ra9Z3p@Y- diff --git a/packs/origins/000953.log b/packs/origins/000968.log similarity index 100% rename from packs/origins/000953.log rename to packs/origins/000968.log diff --git a/packs/origins/CURRENT b/packs/origins/CURRENT index a502202..0165034 100644 --- a/packs/origins/CURRENT +++ b/packs/origins/CURRENT @@ -1 +1 @@ -MANIFEST-000951 +MANIFEST-000967 diff --git a/packs/origins/LOG b/packs/origins/LOG index ed763d3..94994da 100644 --- a/packs/origins/LOG +++ b/packs/origins/LOG @@ -1,8 +1,3 @@ -2026/01/05-17:48:52.716239 7f93ebfff6c0 Recovering log #949 -2026/01/05-17:48:52.726724 7f93ebfff6c0 Delete type=3 #947 -2026/01/05-17:48:52.726801 7f93ebfff6c0 Delete type=0 #949 -2026/01/05-18:46:08.125364 7f93e9ffb6c0 Level-0 table #954: started -2026/01/05-18:46:08.125394 7f93e9ffb6c0 Level-0 table #954: 0 bytes OK -2026/01/05-18:46:08.131273 7f93e9ffb6c0 Delete type=0 #952 -2026/01/05-18:46:08.138754 7f93e9ffb6c0 Manual compaction at level-0 from '!items!2Wtl8xrKf46LMwBF' @ 72057594037927935 : 1 .. '!items!zIlZmEd9WAA473UX' @ 0 : 0; will stop at (end) -2026/01/05-18:46:08.138782 7f93e9ffb6c0 Manual compaction at level-1 from '!items!2Wtl8xrKf46LMwBF' @ 72057594037927935 : 1 .. '!items!zIlZmEd9WAA473UX' @ 0 : 0; will stop at (end) +2026/01/13-08:07:30.112173 7fad373ff6c0 Recovering log #965 +2026/01/13-08:07:30.123346 7fad373ff6c0 Delete type=3 #963 +2026/01/13-08:07:30.123478 7fad373ff6c0 Delete type=0 #965 diff --git a/packs/origins/LOG.old b/packs/origins/LOG.old index 8a81749..905528d 100644 --- a/packs/origins/LOG.old +++ b/packs/origins/LOG.old @@ -1,8 +1,8 @@ -2026/01/04-21:27:06.079934 7f93ebfff6c0 Recovering log #945 -2026/01/04-21:27:06.089772 7f93ebfff6c0 Delete type=3 #943 -2026/01/04-21:27:06.089841 7f93ebfff6c0 Delete type=0 #945 -2026/01/04-21:27:09.315621 7f93e9ffb6c0 Level-0 table #950: started -2026/01/04-21:27:09.315639 7f93e9ffb6c0 Level-0 table #950: 0 bytes OK -2026/01/04-21:27:09.322011 7f93e9ffb6c0 Delete type=0 #948 -2026/01/04-21:27:09.329370 7f93e9ffb6c0 Manual compaction at level-0 from '!items!2Wtl8xrKf46LMwBF' @ 72057594037927935 : 1 .. '!items!zIlZmEd9WAA473UX' @ 0 : 0; will stop at (end) -2026/01/04-21:27:09.329412 7f93e9ffb6c0 Manual compaction at level-1 from '!items!2Wtl8xrKf46LMwBF' @ 72057594037927935 : 1 .. '!items!zIlZmEd9WAA473UX' @ 0 : 0; will stop at (end) +2026/01/13-00:31:14.286076 7fad35bfc6c0 Recovering log #961 +2026/01/13-00:31:14.295737 7fad35bfc6c0 Delete type=3 #959 +2026/01/13-00:31:14.295823 7fad35bfc6c0 Delete type=0 #961 +2026/01/13-00:33:18.063638 7fad353fb6c0 Level-0 table #966: started +2026/01/13-00:33:18.063660 7fad353fb6c0 Level-0 table #966: 0 bytes OK +2026/01/13-00:33:18.069632 7fad353fb6c0 Delete type=0 #964 +2026/01/13-00:33:18.083342 7fad353fb6c0 Manual compaction at level-0 from '!items!2Wtl8xrKf46LMwBF' @ 72057594037927935 : 1 .. '!items!zIlZmEd9WAA473UX' @ 0 : 0; will stop at (end) +2026/01/13-00:33:18.083376 7fad353fb6c0 Manual compaction at level-1 from '!items!2Wtl8xrKf46LMwBF' @ 72057594037927935 : 1 .. '!items!zIlZmEd9WAA473UX' @ 0 : 0; will stop at (end) diff --git a/packs/origins/MANIFEST-000951 b/packs/origins/MANIFEST-000967 similarity index 72% rename from packs/origins/MANIFEST-000951 rename to packs/origins/MANIFEST-000967 index 4a4d814ec5b86a2c270d76abb9dc888c2e996b71..2f1d810437ab58dfb3fa5df751aa4688655a14be 100644 GIT binary patch delta 25 hcmdnMIFE5ckC2T)-92swMy3<&oD9q-*;zI)0svy92DJbH delta 43 tcmbQoxPfs(k4l5*lIz?Ij7&S&IT@IDva@VploXDY2Z`(iiR=c6000Cy3LF3c diff --git a/packs/potions-alchimie/000953.log b/packs/potions-alchimie/000968.log similarity index 100% rename from packs/potions-alchimie/000953.log rename to packs/potions-alchimie/000968.log diff --git a/packs/potions-alchimie/CURRENT b/packs/potions-alchimie/CURRENT index a502202..0165034 100644 --- a/packs/potions-alchimie/CURRENT +++ b/packs/potions-alchimie/CURRENT @@ -1 +1 @@ -MANIFEST-000951 +MANIFEST-000967 diff --git a/packs/potions-alchimie/LOG b/packs/potions-alchimie/LOG index eb1a8da..9aaab5b 100644 --- a/packs/potions-alchimie/LOG +++ b/packs/potions-alchimie/LOG @@ -1,8 +1,3 @@ -2026/01/05-17:48:52.858535 7f93ea7fc6c0 Recovering log #949 -2026/01/05-17:48:52.868966 7f93ea7fc6c0 Delete type=3 #947 -2026/01/05-17:48:52.869018 7f93ea7fc6c0 Delete type=0 #949 -2026/01/05-18:46:08.204517 7f93e9ffb6c0 Level-0 table #954: started -2026/01/05-18:46:08.204543 7f93e9ffb6c0 Level-0 table #954: 0 bytes OK -2026/01/05-18:46:08.210602 7f93e9ffb6c0 Delete type=0 #952 -2026/01/05-18:46:08.217110 7f93e9ffb6c0 Manual compaction at level-0 from '!items!0a8UFoCOd3D35WBb' @ 72057594037927935 : 1 .. '!items!y9NHZCxKXMZEqcRo' @ 0 : 0; will stop at (end) -2026/01/05-18:46:08.217142 7f93e9ffb6c0 Manual compaction at level-1 from '!items!0a8UFoCOd3D35WBb' @ 72057594037927935 : 1 .. '!items!y9NHZCxKXMZEqcRo' @ 0 : 0; will stop at (end) +2026/01/13-08:07:30.270517 7fad363fd6c0 Recovering log #965 +2026/01/13-08:07:30.282336 7fad363fd6c0 Delete type=3 #963 +2026/01/13-08:07:30.282475 7fad363fd6c0 Delete type=0 #965 diff --git a/packs/potions-alchimie/LOG.old b/packs/potions-alchimie/LOG.old index c27ea04..6208e1c 100644 --- a/packs/potions-alchimie/LOG.old +++ b/packs/potions-alchimie/LOG.old @@ -1,8 +1,8 @@ -2026/01/04-21:27:06.217814 7f93ebfff6c0 Recovering log #945 -2026/01/04-21:27:06.227433 7f93ebfff6c0 Delete type=3 #943 -2026/01/04-21:27:06.227502 7f93ebfff6c0 Delete type=0 #945 -2026/01/04-21:27:09.396966 7f93e9ffb6c0 Level-0 table #950: started -2026/01/04-21:27:09.396989 7f93e9ffb6c0 Level-0 table #950: 0 bytes OK -2026/01/04-21:27:09.404237 7f93e9ffb6c0 Delete type=0 #948 -2026/01/04-21:27:09.410820 7f93e9ffb6c0 Manual compaction at level-0 from '!items!0a8UFoCOd3D35WBb' @ 72057594037927935 : 1 .. '!items!y9NHZCxKXMZEqcRo' @ 0 : 0; will stop at (end) -2026/01/04-21:27:09.410844 7f93e9ffb6c0 Manual compaction at level-1 from '!items!0a8UFoCOd3D35WBb' @ 72057594037927935 : 1 .. '!items!y9NHZCxKXMZEqcRo' @ 0 : 0; will stop at (end) +2026/01/13-00:31:14.421946 7fad35bfc6c0 Recovering log #961 +2026/01/13-00:31:14.431615 7fad35bfc6c0 Delete type=3 #959 +2026/01/13-00:31:14.431688 7fad35bfc6c0 Delete type=0 #961 +2026/01/13-00:33:18.131253 7fad353fb6c0 Level-0 table #966: started +2026/01/13-00:33:18.131283 7fad353fb6c0 Level-0 table #966: 0 bytes OK +2026/01/13-00:33:18.137434 7fad353fb6c0 Delete type=0 #964 +2026/01/13-00:33:18.137604 7fad353fb6c0 Manual compaction at level-0 from '!items!0a8UFoCOd3D35WBb' @ 72057594037927935 : 1 .. '!items!y9NHZCxKXMZEqcRo' @ 0 : 0; will stop at (end) +2026/01/13-00:33:18.137633 7fad353fb6c0 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-000951 b/packs/potions-alchimie/MANIFEST-000967 similarity index 73% rename from packs/potions-alchimie/MANIFEST-000951 rename to packs/potions-alchimie/MANIFEST-000967 index cec5d7904b8aecfbc5ddd113f104d4d7a49ad028..d1528ab69e7e18c85a8a15e879b0dadfcb37db2b 100644 GIT binary patch delta 25 hcmZ3_IG1rkw~)Qy<0x(hMy3<&oD9q-*;!UF0RUeN25?|voq|A;i1c~efiR=c6008lW3KakV diff --git a/packs/races/000953.log b/packs/races/000968.log similarity index 100% rename from packs/races/000953.log rename to packs/races/000968.log diff --git a/packs/races/CURRENT b/packs/races/CURRENT index a502202..0165034 100644 --- a/packs/races/CURRENT +++ b/packs/races/CURRENT @@ -1 +1 @@ -MANIFEST-000951 +MANIFEST-000967 diff --git a/packs/races/LOG b/packs/races/LOG index 7a3ac24..4ff7b7c 100644 --- a/packs/races/LOG +++ b/packs/races/LOG @@ -1,8 +1,3 @@ -2026/01/05-17:48:52.729935 7f93eb7fe6c0 Recovering log #949 -2026/01/05-17:48:52.739671 7f93eb7fe6c0 Delete type=3 #947 -2026/01/05-17:48:52.739719 7f93eb7fe6c0 Delete type=0 #949 -2026/01/05-18:46:08.138907 7f93e9ffb6c0 Level-0 table #954: started -2026/01/05-18:46:08.138943 7f93e9ffb6c0 Level-0 table #954: 0 bytes OK -2026/01/05-18:46:08.145513 7f93e9ffb6c0 Delete type=0 #952 -2026/01/05-18:46:08.165115 7f93e9ffb6c0 Manual compaction at level-0 from '!items!3oOvUd7AIqrXzLDl' @ 72057594037927935 : 1 .. '!items!oWexVALVtDXmedMy' @ 0 : 0; will stop at (end) -2026/01/05-18:46:08.165144 7f93e9ffb6c0 Manual compaction at level-1 from '!items!3oOvUd7AIqrXzLDl' @ 72057594037927935 : 1 .. '!items!oWexVALVtDXmedMy' @ 0 : 0; will stop at (end) +2026/01/13-08:07:30.127058 7fad363fd6c0 Recovering log #965 +2026/01/13-08:07:30.137403 7fad363fd6c0 Delete type=3 #963 +2026/01/13-08:07:30.137554 7fad363fd6c0 Delete type=0 #965 diff --git a/packs/races/LOG.old b/packs/races/LOG.old index 9e07feb..415364e 100644 --- a/packs/races/LOG.old +++ b/packs/races/LOG.old @@ -1,8 +1,8 @@ -2026/01/04-21:27:06.091659 7f93eaffd6c0 Recovering log #945 -2026/01/04-21:27:06.101173 7f93eaffd6c0 Delete type=3 #943 -2026/01/04-21:27:06.101239 7f93eaffd6c0 Delete type=0 #945 -2026/01/04-21:27:09.309260 7f93e9ffb6c0 Level-0 table #950: started -2026/01/04-21:27:09.309282 7f93e9ffb6c0 Level-0 table #950: 0 bytes OK -2026/01/04-21:27:09.315491 7f93e9ffb6c0 Delete type=0 #948 -2026/01/04-21:27:09.329355 7f93e9ffb6c0 Manual compaction at level-0 from '!items!3oOvUd7AIqrXzLDl' @ 72057594037927935 : 1 .. '!items!oWexVALVtDXmedMy' @ 0 : 0; will stop at (end) -2026/01/04-21:27:09.329403 7f93e9ffb6c0 Manual compaction at level-1 from '!items!3oOvUd7AIqrXzLDl' @ 72057594037927935 : 1 .. '!items!oWexVALVtDXmedMy' @ 0 : 0; will stop at (end) +2026/01/13-00:31:14.298047 7fad363fd6c0 Recovering log #961 +2026/01/13-00:31:14.308541 7fad363fd6c0 Delete type=3 #959 +2026/01/13-00:31:14.308602 7fad363fd6c0 Delete type=0 #961 +2026/01/13-00:33:18.057541 7fad353fb6c0 Level-0 table #966: started +2026/01/13-00:33:18.057568 7fad353fb6c0 Level-0 table #966: 0 bytes OK +2026/01/13-00:33:18.063555 7fad353fb6c0 Delete type=0 #964 +2026/01/13-00:33:18.083331 7fad353fb6c0 Manual compaction at level-0 from '!items!3oOvUd7AIqrXzLDl' @ 72057594037927935 : 1 .. '!items!oWexVALVtDXmedMy' @ 0 : 0; will stop at (end) +2026/01/13-00:33:18.083392 7fad353fb6c0 Manual compaction at level-1 from '!items!3oOvUd7AIqrXzLDl' @ 72057594037927935 : 1 .. '!items!oWexVALVtDXmedMy' @ 0 : 0; will stop at (end) diff --git a/packs/races/MANIFEST-000951 b/packs/races/MANIFEST-000967 similarity index 73% rename from packs/races/MANIFEST-000951 rename to packs/races/MANIFEST-000967 index 80220d58ae10c1c0d0d0ef383e8381fcab4edfb9..d63336a42ca01ac16e98d59745d4eaf530a9b2fb 100644 GIT binary patch delta 24 gcmZ3>IEQgUx8S+O8~<`KFfyHB=VV|$$c0B~vtlK=n! delta 41 rcmbQkxR!B3w^Gc{>tS3Bj7&S&IT@IDva>kwH+wOG1a^W1b^`?f^?3=T diff --git a/packs/spells/000953.log b/packs/spells/000968.log similarity index 100% rename from packs/spells/000953.log rename to packs/spells/000968.log diff --git a/packs/spells/CURRENT b/packs/spells/CURRENT index a502202..0165034 100644 --- a/packs/spells/CURRENT +++ b/packs/spells/CURRENT @@ -1 +1 @@ -MANIFEST-000951 +MANIFEST-000967 diff --git a/packs/spells/LOG b/packs/spells/LOG index 905cf0d..f95d1bd 100644 --- a/packs/spells/LOG +++ b/packs/spells/LOG @@ -1,8 +1,3 @@ -2026/01/05-17:48:52.820379 7f93ea7fc6c0 Recovering log #949 -2026/01/05-17:48:52.830336 7f93ea7fc6c0 Delete type=3 #947 -2026/01/05-17:48:52.830397 7f93ea7fc6c0 Delete type=0 #949 -2026/01/05-18:46:08.190986 7f93e9ffb6c0 Level-0 table #954: started -2026/01/05-18:46:08.191021 7f93e9ffb6c0 Level-0 table #954: 0 bytes OK -2026/01/05-18:46:08.197075 7f93e9ffb6c0 Delete type=0 #952 -2026/01/05-18:46:08.217087 7f93e9ffb6c0 Manual compaction at level-0 from '!items!2svd3uio8Hp4e5Wy' @ 72057594037927935 : 1 .. '!items!zq5h9kCpo8gK4oIH' @ 0 : 0; will stop at (end) -2026/01/05-18:46:08.217126 7f93e9ffb6c0 Manual compaction at level-1 from '!items!2svd3uio8Hp4e5Wy' @ 72057594037927935 : 1 .. '!items!zq5h9kCpo8gK4oIH' @ 0 : 0; will stop at (end) +2026/01/13-08:07:30.228081 7fad373ff6c0 Recovering log #965 +2026/01/13-08:07:30.240063 7fad373ff6c0 Delete type=3 #963 +2026/01/13-08:07:30.240242 7fad373ff6c0 Delete type=0 #965 diff --git a/packs/spells/LOG.old b/packs/spells/LOG.old index b826238..fa19829 100644 --- a/packs/spells/LOG.old +++ b/packs/spells/LOG.old @@ -1,8 +1,8 @@ -2026/01/04-21:27:06.179542 7f93ebfff6c0 Recovering log #945 -2026/01/04-21:27:06.189030 7f93ebfff6c0 Delete type=3 #943 -2026/01/04-21:27:06.189086 7f93ebfff6c0 Delete type=0 #945 -2026/01/04-21:27:09.370839 7f93e9ffb6c0 Level-0 table #950: started -2026/01/04-21:27:09.370858 7f93e9ffb6c0 Level-0 table #950: 0 bytes OK -2026/01/04-21:27:09.377184 7f93e9ffb6c0 Delete type=0 #948 -2026/01/04-21:27:09.384128 7f93e9ffb6c0 Manual compaction at level-0 from '!items!2svd3uio8Hp4e5Wy' @ 72057594037927935 : 1 .. '!items!zq5h9kCpo8gK4oIH' @ 0 : 0; will stop at (end) -2026/01/04-21:27:09.384151 7f93e9ffb6c0 Manual compaction at level-1 from '!items!2svd3uio8Hp4e5Wy' @ 72057594037927935 : 1 .. '!items!zq5h9kCpo8gK4oIH' @ 0 : 0; will stop at (end) +2026/01/13-00:31:14.386295 7fad35bfc6c0 Recovering log #961 +2026/01/13-00:31:14.396283 7fad35bfc6c0 Delete type=3 #959 +2026/01/13-00:31:14.396332 7fad35bfc6c0 Delete type=0 #961 +2026/01/13-00:33:18.111010 7fad353fb6c0 Level-0 table #966: started +2026/01/13-00:33:18.111042 7fad353fb6c0 Level-0 table #966: 0 bytes OK +2026/01/13-00:33:18.117293 7fad353fb6c0 Delete type=0 #964 +2026/01/13-00:33:18.137565 7fad353fb6c0 Manual compaction at level-0 from '!items!2svd3uio8Hp4e5Wy' @ 72057594037927935 : 1 .. '!items!zq5h9kCpo8gK4oIH' @ 0 : 0; will stop at (end) +2026/01/13-00:33:18.137612 7fad353fb6c0 Manual compaction at level-1 from '!items!2svd3uio8Hp4e5Wy' @ 72057594037927935 : 1 .. '!items!zq5h9kCpo8gK4oIH' @ 0 : 0; will stop at (end) diff --git a/packs/spells/MANIFEST-000951 b/packs/spells/MANIFEST-000967 similarity index 73% rename from packs/spells/MANIFEST-000951 rename to packs/spells/MANIFEST-000967 index 686d1de17349e8bd1ac93b4801ef1b0b4ad735af..d0a3be125c6242ae2f43e0934188e855906819ab 100644 GIT binary patch delta 24 fcmZ3>IEQgUw_tEut^yYWBhv|XP6p?{fZR6PZn delta 41 scmbQkxR!B3x6;GyBBopnj7&S&IT@IDva={ma%+;?(|0O_X*UH||9 diff --git a/packs/vehicleweapons/000860.log b/packs/vehicleweapons/000875.log similarity index 100% rename from packs/vehicleweapons/000860.log rename to packs/vehicleweapons/000875.log diff --git a/packs/vehicleweapons/CURRENT b/packs/vehicleweapons/CURRENT index b7b5921..7299140 100644 --- a/packs/vehicleweapons/CURRENT +++ b/packs/vehicleweapons/CURRENT @@ -1 +1 @@ -MANIFEST-000858 +MANIFEST-000874 diff --git a/packs/vehicleweapons/LOG b/packs/vehicleweapons/LOG index f932a3c..fe9da81 100644 --- a/packs/vehicleweapons/LOG +++ b/packs/vehicleweapons/LOG @@ -1,8 +1,3 @@ -2026/01/05-17:48:52.782653 7f93eaffd6c0 Recovering log #856 -2026/01/05-17:48:52.792738 7f93eaffd6c0 Delete type=3 #854 -2026/01/05-17:48:52.792791 7f93eaffd6c0 Delete type=0 #856 -2026/01/05-18:46:08.171365 7f93e9ffb6c0 Level-0 table #861: started -2026/01/05-18:46:08.171394 7f93e9ffb6c0 Level-0 table #861: 0 bytes OK -2026/01/05-18:46:08.177369 7f93e9ffb6c0 Delete type=0 #859 -2026/01/05-18:46:08.190788 7f93e9ffb6c0 Manual compaction at level-0 from '!items!2cqkViQnOYZ4qwU1' @ 72057594037927935 : 1 .. '!items!qcCZxbaV9sucG1XK' @ 0 : 0; will stop at (end) -2026/01/05-18:46:08.190823 7f93e9ffb6c0 Manual compaction at level-1 from '!items!2cqkViQnOYZ4qwU1' @ 72057594037927935 : 1 .. '!items!qcCZxbaV9sucG1XK' @ 0 : 0; will stop at (end) +2026/01/13-08:07:30.185715 7fad35bfc6c0 Recovering log #872 +2026/01/13-08:07:30.196559 7fad35bfc6c0 Delete type=3 #870 +2026/01/13-08:07:30.196735 7fad35bfc6c0 Delete type=0 #872 diff --git a/packs/vehicleweapons/LOG.old b/packs/vehicleweapons/LOG.old index 30652be..9ac75ab 100644 --- a/packs/vehicleweapons/LOG.old +++ b/packs/vehicleweapons/LOG.old @@ -1,8 +1,8 @@ -2026/01/04-21:27:06.141648 7f93eb7fe6c0 Recovering log #852 -2026/01/04-21:27:06.151472 7f93eb7fe6c0 Delete type=3 #850 -2026/01/04-21:27:06.151534 7f93eb7fe6c0 Delete type=0 #852 -2026/01/04-21:27:09.342982 7f93e9ffb6c0 Level-0 table #857: started -2026/01/04-21:27:09.343006 7f93e9ffb6c0 Level-0 table #857: 0 bytes OK -2026/01/04-21:27:09.349253 7f93e9ffb6c0 Delete type=0 #855 -2026/01/04-21:27:09.356802 7f93e9ffb6c0 Manual compaction at level-0 from '!items!2cqkViQnOYZ4qwU1' @ 72057594037927935 : 1 .. '!items!qcCZxbaV9sucG1XK' @ 0 : 0; will stop at (end) -2026/01/04-21:27:09.356839 7f93e9ffb6c0 Manual compaction at level-1 from '!items!2cqkViQnOYZ4qwU1' @ 72057594037927935 : 1 .. '!items!qcCZxbaV9sucG1XK' @ 0 : 0; will stop at (end) +2026/01/13-00:31:14.348450 7fad373ff6c0 Recovering log #868 +2026/01/13-00:31:14.358522 7fad373ff6c0 Delete type=3 #866 +2026/01/13-00:31:14.358579 7fad373ff6c0 Delete type=0 #868 +2026/01/13-00:33:18.083482 7fad353fb6c0 Level-0 table #873: started +2026/01/13-00:33:18.083514 7fad353fb6c0 Level-0 table #873: 0 bytes OK +2026/01/13-00:33:18.089996 7fad353fb6c0 Delete type=0 #871 +2026/01/13-00:33:18.110837 7fad353fb6c0 Manual compaction at level-0 from '!items!2cqkViQnOYZ4qwU1' @ 72057594037927935 : 1 .. '!items!qcCZxbaV9sucG1XK' @ 0 : 0; will stop at (end) +2026/01/13-00:33:18.110897 7fad353fb6c0 Manual compaction at level-1 from '!items!2cqkViQnOYZ4qwU1' @ 72057594037927935 : 1 .. '!items!qcCZxbaV9sucG1XK' @ 0 : 0; will stop at (end) diff --git a/packs/vehicleweapons/MANIFEST-000858 b/packs/vehicleweapons/MANIFEST-000874 similarity index 73% rename from packs/vehicleweapons/MANIFEST-000858 rename to packs/vehicleweapons/MANIFEST-000874 index e188967413d1ddf4a51cabddfa98564b9628495e..fce7286c8143d7598da64c1a7d878640ab7dc401 100644 GIT binary patch delta 24 fcmZ3>IEQgUw_s-sXB-y;Bhza(P6p;TY%E#;R)GcX delta 41 scmbQkxR!B3x6)(THC9{}S-a>dNZ<}g;2ux_01AH#mH+?% diff --git a/packs/weapons/000866.log b/packs/weapons/000881.log similarity index 100% rename from packs/weapons/000866.log rename to packs/weapons/000881.log diff --git a/packs/weapons/CURRENT b/packs/weapons/CURRENT index 14763f3..5bac171 100644 --- a/packs/weapons/CURRENT +++ b/packs/weapons/CURRENT @@ -1 +1 @@ -MANIFEST-000864 +MANIFEST-000880 diff --git a/packs/weapons/LOG b/packs/weapons/LOG index 98fa39d..66e649e 100644 --- a/packs/weapons/LOG +++ b/packs/weapons/LOG @@ -1,8 +1,3 @@ -2026/01/05-17:48:52.756200 7f93ea7fc6c0 Recovering log #862 -2026/01/05-17:48:52.766273 7f93ea7fc6c0 Delete type=3 #860 -2026/01/05-17:48:52.766325 7f93ea7fc6c0 Delete type=0 #862 -2026/01/05-18:46:08.145630 7f93e9ffb6c0 Level-0 table #867: started -2026/01/05-18:46:08.145652 7f93e9ffb6c0 Level-0 table #867: 0 bytes OK -2026/01/05-18:46:08.151471 7f93e9ffb6c0 Delete type=0 #865 -2026/01/05-18:46:08.165125 7f93e9ffb6c0 Manual compaction at level-0 from '!items!2xxMC458KXaAgm3T' @ 72057594037927935 : 1 .. '!items!zjOFhNocHjeJZcy4' @ 0 : 0; will stop at (end) -2026/01/05-18:46:08.165149 7f93e9ffb6c0 Manual compaction at level-1 from '!items!2xxMC458KXaAgm3T' @ 72057594037927935 : 1 .. '!items!zjOFhNocHjeJZcy4' @ 0 : 0; will stop at (end) +2026/01/13-08:07:30.156659 7fad373ff6c0 Recovering log #878 +2026/01/13-08:07:30.167240 7fad373ff6c0 Delete type=3 #876 +2026/01/13-08:07:30.167330 7fad373ff6c0 Delete type=0 #878 diff --git a/packs/weapons/LOG.old b/packs/weapons/LOG.old index e1c3f0f..d87e8e7 100644 --- a/packs/weapons/LOG.old +++ b/packs/weapons/LOG.old @@ -1,8 +1,8 @@ -2026/01/04-21:27:06.116899 7f93ebfff6c0 Recovering log #858 -2026/01/04-21:27:06.126548 7f93ebfff6c0 Delete type=3 #856 -2026/01/04-21:27:06.126622 7f93ebfff6c0 Delete type=0 #858 -2026/01/04-21:27:09.329504 7f93e9ffb6c0 Level-0 table #863: started -2026/01/04-21:27:09.329533 7f93e9ffb6c0 Level-0 table #863: 0 bytes OK -2026/01/04-21:27:09.335948 7f93e9ffb6c0 Delete type=0 #861 -2026/01/04-21:27:09.356784 7f93e9ffb6c0 Manual compaction at level-0 from '!items!2xxMC458KXaAgm3T' @ 72057594037927935 : 1 .. '!items!zjOFhNocHjeJZcy4' @ 0 : 0; will stop at (end) -2026/01/04-21:27:09.356810 7f93e9ffb6c0 Manual compaction at level-1 from '!items!2xxMC458KXaAgm3T' @ 72057594037927935 : 1 .. '!items!zjOFhNocHjeJZcy4' @ 0 : 0; will stop at (end) +2026/01/13-00:31:14.323267 7fad35bfc6c0 Recovering log #874 +2026/01/13-00:31:14.332961 7fad35bfc6c0 Delete type=3 #872 +2026/01/13-00:31:14.333041 7fad35bfc6c0 Delete type=0 #874 +2026/01/13-00:33:18.076941 7fad353fb6c0 Level-0 table #879: started +2026/01/13-00:33:18.076974 7fad353fb6c0 Level-0 table #879: 0 bytes OK +2026/01/13-00:33:18.083219 7fad353fb6c0 Delete type=0 #877 +2026/01/13-00:33:18.083369 7fad353fb6c0 Manual compaction at level-0 from '!items!2xxMC458KXaAgm3T' @ 72057594037927935 : 1 .. '!items!zjOFhNocHjeJZcy4' @ 0 : 0; will stop at (end) +2026/01/13-00:33:18.083406 7fad353fb6c0 Manual compaction at level-1 from '!items!2xxMC458KXaAgm3T' @ 72057594037927935 : 1 .. '!items!zjOFhNocHjeJZcy4' @ 0 : 0; will stop at (end) diff --git a/packs/weapons/MANIFEST-000864 b/packs/weapons/MANIFEST-000880 similarity index 72% rename from packs/weapons/MANIFEST-000864 rename to packs/weapons/MANIFEST-000880 index 81a0f4b9f050122d4aebc706370bff2ddc41b739..7e1562755cbac40797bc5c6d15f9c8794ddee4e2 100644 GIT binary patch delta 25 hcmdnMIFE5ck5JY86QSG;j7%TdI2o8fv9T;?0sw762WtQT delta 43 tcmbQoxPfs(k4oyCxO#2|My7{soD9s5*jSb`x$*4m1&KTYi97*`000lD3pM}% diff --git a/styles/README.md b/styles/README.md new file mode 100644 index 0000000..af6ceb3 --- /dev/null +++ b/styles/README.md @@ -0,0 +1,118 @@ +# Structure LESS pour BoL + +Ce dossier contient tous les fichiers LESS qui sont compilés en CSS pour le système BoL. + +## Structure des fichiers + +``` +styles/ +├── bol.less # Fichier principal (importe tous les autres) +├── global/ # Styles globaux +│ ├── typography.less # Fonts et styles de texte +│ ├── foundry-overrides.less # Overrides Foundry VTT +│ ├── flex.less # Utilitaires Flexbox +│ ├── forms.less # Styles de formulaires +│ ├── item-list.less # Listes d'items +│ ├── colors.less # Couleurs pré-définies +│ └── chat.less # Messages de chat +└── components/ # Composants spécifiques + ├── common.less # Styles communs aux sheets + ├── actor.less # Feuilles d'acteurs + └── item.less # Feuilles d'items +``` + +## Compilation + +### Commande unique +```bash +npm run css +``` + +### Mode watch (recompile automatiquement) +```bash +gulp +``` +ou +```bash +npm start +``` + +## Modification des styles + +1. **NE PAS modifier** directement `css/bol.css` +2. Modifier les fichiers `.less` appropriés dans `styles/` +3. Compiler avec `npm run css` +4. Le fichier `css/bol.css` sera régénéré automatiquement + +## Organisation + +### Global (`styles/global/`) + +- **typography.less** : Définition des @font-face et styles de texte de base +- **foundry-overrides.less** : Overrides des styles Foundry (pause, scrollbar, etc.) +- **flex.less** : Classes utilitaires flexbox (.flexrow, .flexcol, etc.) +- **forms.less** : Tous les styles de formulaires (inputs, selects, labels, etc.) +- **item-list.less** : Styles des listes d'items (.items-list) +- **colors.less** : Classes de couleurs pré-définies (.red, .bg-red, etc.) +- **chat.less** : Styles des messages de chat et résultats de dés + +### Components (`styles/components/`) + +- **common.less** : Styles communs à toutes les sheets (.bol.sheet) + - Window header/content + - Sheet header avec banner + - Tabs + - Sheet body + +- **actor.less** : Styles spécifiques aux feuilles d'acteurs + - Dimensions et layout + - Images d'attributs (vigor, agility, etc.) + - Footer + - Stats, resources + - HUD et tooltips + +- **item.less** : Styles spécifiques aux feuilles d'items + - Dimensions + - Properties list + - Dialog + +## Avantages de LESS + +1. **Variables** : Réutilisables dans tout le code +2. **Nesting** : Code plus lisible et maintenable +3. **Mixins** : Réutilisation de blocs de styles +4. **Imports** : Organisation modulaire +5. **Opérations** : Calculs CSS (calc() amélioré) + +## Exemple d'utilisation + +### Avant (CSS) +```css +.bol.sheet.actor .window-content form .sidebar .profile-img { + cursor: pointer; + border: none; +} +``` + +### Après (LESS) +```less +.bol.sheet.actor { + .window-content { + form { + .sidebar { + .profile-img { + cursor: pointer; + border: none; + } + } + } + } +} +``` + +## Notes importantes + +- La compilation LESS → CSS se fait automatiquement avec gulp +- Le fichier `css/bol.css` est généré et ne doit pas être modifié manuellement +- Tous les imports sont dans `styles/bol.less` +- Les chemins des images/fonts sont relatifs au fichier CSS final dans `css/` diff --git a/styles/bol.less b/styles/bol.less new file mode 100644 index 0000000..c9bd953 --- /dev/null +++ b/styles/bol.less @@ -0,0 +1,17 @@ +/* ========================================= */ +/* BoL System LESS Main File */ +/* ========================================= */ + +/* Global Styles */ +@import "global/typography.less"; +@import "global/foundry-overrides.less"; +@import "global/flex.less"; +@import "global/forms.less"; +@import "global/item-list.less"; +@import "global/colors.less"; +@import "global/chat.less"; + +/* Component Styles */ +@import "components/common.less"; +@import "components/actor.less"; +@import "components/item.less"; diff --git a/styles/components/actor.less b/styles/components/actor.less new file mode 100644 index 0000000..af72f5e --- /dev/null +++ b/styles/components/actor.less @@ -0,0 +1,328 @@ +/* ----------------------------------------- */ +/* Actor Sheet Styles */ +/* ----------------------------------------- */ + +.bol.sheet.actor { + min-width: 820px; + min-height: 700px; + height: 700px; + + .window-content { + .bol-actor-form { + background-image: url("/systems/bol/ui/logo.webp"); + background-repeat: no-repeat; + background-size: 190px 115px; + } + + form { + .sidebar { + padding-top: 115px; + min-width: 250px; + width: 250px; + max-width: 250px; + + .profile-img { + cursor: pointer; + border: none; + background-color: #EEE; + height: auto; + width: calc(250px - 10px); + min-width: calc(250px - 10px); + max-width: calc(250px - 10px); + margin-right: 10px; + } + } + + .main { + .sheet-body { + overflow: hidden; + + .tab { + .attribute { + &.vigor { + background-image: url("/systems/bol/ui/attributes/vigor.webp"); + background-repeat: no-repeat; + background-position: center center; + background-size: 64px 64px; + } + + &.agility { + background-image: url("/systems/bol/ui/attributes/agility.webp"); + background-repeat: no-repeat; + background-position: center center; + background-size: 64px 64px; + } + + &.mind { + background-image: url("/systems/bol/ui/attributes/mind.webp"); + background-repeat: no-repeat; + background-position: center center; + background-size: 64px 64px; + } + + &.appeal { + background-image: url("/systems/bol/ui/attributes/appeal.webp"); + background-repeat: no-repeat; + background-position: center center; + background-size: 64px 64px; + } + + .stat-value { + margin-top: -10px; + } + } + } + } + } + } + } + + .bol-footer { + height: 62px; + max-height: 62px; + min-height: 62px; + + .footer-left img { + border: none; + height: 62px; + max-height: 62px; + min-height: 62px; + transform: scaleX(-1); + } + + .footer-center { + margin-top: 20px; + margin-left: calc(-330px * 2); + margin-right: calc(-330px * 2); + height: 30px; + max-height: 30px; + min-height: 30px; + background-color: black; + } + + .footer-right { + text-align: right; + + img { + border: none; + height: 62px; + max-height: 62px; + min-height: 62px; + } + } + } + + .stat-max { + font-size: 1rem; + font-weight: bold; + color: #4b4a44; + } + + .bonus-text { + margin-top: 7px; + } + + .stat-value { + font-size: 1.5rem; + font-weight: bold; + color: darkred; + } + + .resource-bonus { + font-weight: bold; + color: darkred; + } + + .resources-value { + background-color: #2a2a2a30; + border-color: #003c1e; + margin-top: 4px; + border-radius: 0.5rem; + } + + .resources-novalue { + background-color: #2a2a2a00; + border-color: #003c1e; + margin-top: 4px; + border-radius: 0.5rem; + } + + .stat-roll { + font-size: 1.5rem; + color: #4b4a44; + + &.malus { + color: darkred; + } + + &.bonus { + color: darkgreen; + } + } + + .header-field-label, + .stat-label { + font-weight: bold; + font-family: "Wolfsbane2Expanded", cursive; + font-size: 2rem; + font-variant: small-caps; + } + + .rounded { + border-radius: 100px; + width: 4rem; + height: 4rem; + } + + .rounded-border { + border: 3px solid #4b4a44; + box-shadow: 5px 5px 5px gray; + border-radius: 100px; + width: 4rem; + height: 4rem; + } + + .half-rounded { + border-radius: 100px 100px 0px 0px; + width: 4rem; + height: 4rem; + } + + .half-rounded-border { + border-radius: 100px 100px 0px 0px; + border: 3px solid #4b4a44; + width: 4rem; + height: 4rem; + } +} + +/* ----------------------------------------- */ +/* HUD and Chat Extensions */ +/* ----------------------------------------- */ + +.rollable { + cursor: pointer; +} + +.chat-message .chat-icon { + float: right; + border: 1px outset lightgray; + box-shadow: 3px 3px 3px black; + margin: 3px; + width: 64px; + height: 64px; +} + +.dialog-button { + max-height: 2rem; +} + +.xp-next { + color: darkgrey; + font-size: 1.0rem; + border: 1px solid #4b4a44; + box-shadow: 1px 1px 1px gray; + border-radius: 100px; + width: 1.25rem; + height: 1.25rem; +} + +.tooltip-container { + position: relative; + display: inline-block; + + .tooltiptext { + text-align: center; + position: absolute; + z-index: 1; + visibility: hidden; + opacity: 0; + transition: opacity 0.3s; + background-color: #f2f3a2a0; + padding: 4px; + width: 4rem; + border-radius: 25%; + border-width: 1px; + transform: translate(-40%, -60%); + } + + &:hover .tooltiptext { + visibility: visible; + opacity: 1; + } +} + +.tokenhudext { + display: flex; + flex: 0 !important; + font-family: CaslonPro; + font-weight: 600; + + &.left { + justify-content: flex-start; + flex-direction: column; + position: absolute; + top: 2.75rem; + right: 16rem; + } + + &.right { + justify-content: flex-start; + flex-direction: column; + position: absolute; + top: -4rem; + max-width: 250px; + left: 4rem; + } + + &.right2 { + justify-content: flex-start; + flex-direction: column; + position: absolute; + top: -4rem; + left: 11rem; + } +} + +.control-icon.tokenhudicon { + width: fit-content; + height: fit-content; + min-width: 6rem; + flex-basis: auto; + padding: 0.20rem; + line-height: 1.1rem; + margin: 0.20rem; + + &.right { + margin-left: 8px; + } +} + +#token-hud .status-effects.active { + z-index: 2; +} + +.bol-hud-menu label { + font-size: 0.6rem; +} + +.bol-margin-tb-2 { + margin-top: 2px; + margin-bottom: 2px; +} + +.character-summary-container { + opacity: 0.95; +} + +.character-summary-rollable { + text-decoration: underline; +} + +.activated-green { + color: darkgreen; +} + +.compendium-sidebar .directory-item.compendium.locked .compendium-banner { + opacity: 0.5; +} diff --git a/styles/components/common.less b/styles/components/common.less new file mode 100644 index 0000000..f1ba9e5 --- /dev/null +++ b/styles/components/common.less @@ -0,0 +1,127 @@ +/* ----------------------------------------- */ +/* Common Sheet Styles */ +/* ----------------------------------------- */ + +body.system-bol img#logo { + content: url("/systems/bol/ui/logo2.webp"); +} + +.journal-page-content { + /* Reserved for future use */ +} + +.bol.sheet { + .window-header { + border: none; + } + + .window-content { + height: 100%; + padding: 10px; + overflow-y: hidden; + background: transparent; + + form { + border: 10px solid transparent; + border-image: url("/systems/bol/ui/box-border-large.webp") 36 repeat; + border-image-outset: 1; + background: white; + margin: 0; + padding: 0; + height: 100%; + + .sheet-header { + background-image: url("/systems/bol/ui/banner.webp"); + background-repeat: no-repeat; + background-size: 330px 62px; + background-position-y: -15px; + background-position-x: right; + height: 115px; + min-height: 115px; + max-height: 115px; + overflow: hidden; + display: flex; + flex-direction: row; + flex-wrap: nowrap; + justify-content: flex-start; + align-items: flex-end; + padding-bottom: 10px; + + .header-field { + .header-field-group { + overflow: hidden; + display: flex; + flex-direction: row; + flex-wrap: nowrap; + justify-content: flex-start; + align-items: baseline; + + .header-field-label { + margin-right: 5px; + } + + .charname, + .itemname, + .header-field-value { + color: #4b4a44; + font-family: 'Contrail One', cursive; + font-size: 1.5rem; + background-color: #EEE; + } + } + } + } + + .main { + .tabs { + flex: 0 0 30px; + background-color: black; + + .item { + line-height: 30px; + font-weight: bold; + font-family: "CCMeanwhile", cursive; + color: white; + padding-top: 4px; + font-size: 0.8em; + + &.active { + text-decoration: underline; + text-shadow: none; + } + } + } + + .sheet-body { + overflow: hidden; + + .tab { + height: 95%; + border: none; + overflow-y: auto; + + &.description { + .editor, + .editor-content { + height: 100%; + } + } + } + } + } + } + } +} + +.sheet-profile-img { + cursor: pointer; + border: none; + background-color: #EEE; + height: auto; + width: 96px; + height: 96px; + min-width: 96px; + min-height: 96px; + max-width: 96px; + margin-right: 10px; +} diff --git a/styles/components/item.less b/styles/components/item.less new file mode 100644 index 0000000..c08343c --- /dev/null +++ b/styles/components/item.less @@ -0,0 +1,56 @@ +/* ----------------------------------------- */ +/* Item Sheet Styles */ +/* ----------------------------------------- */ + +.bol.sheet.item { + min-width: 460px; + min-height: 400px; + + h1 input.itemname { + margin-top: 32px; + min-width: 24rem; + font-family: "Wolfsbane2Expanded", cursive; + } + + .item-properties { + flex: 0 0 150px; + margin: 5px 5px 5px 0; + padding-right: 5px; + border-right: 1px groove #eeede0; + + .form-group { + margin: 0; + + label { + line-height: 20px; + } + } + + .properties-list { + list-style: none; + margin: 0; + padding: 0; + + li { + margin: 3px 0; + padding: 0 2px; + background: rgba(0, 0, 0, 0.05); + border: 1px groove #eeede0; + text-align: center; + font-size: 12px; + line-height: 18px; + } + } + } +} + +.bol.dialog .sheet-header h3 { + font-family: "Wolfsbane2Expanded", cursive; + font-size: 24px; + color: black; +} + +.editor, +.editor-content { + height: 100%; +} diff --git a/styles/global/chat.less b/styles/global/chat.less new file mode 100644 index 0000000..5c19a4f --- /dev/null +++ b/styles/global/chat.less @@ -0,0 +1,99 @@ +/* ----------------------------------------- */ +/* Chat Messages */ +/* ----------------------------------------- */ + +.message-header { + h2.damage { + color: orangered; + font-weight: bold; + } + + h2.critical { + color: green; + font-weight: bold; + } + + h2.fumble { + color: red; + font-weight: bold; + } + + h2.success { + color: darkgreen; + font-weight: bold; + } + + h2.failure { + color: darkred; + font-weight: bold; + } + + h2.roll { + color: darkslategrey; + font-weight: bold; + } +} + +h2.good { + color: darkgreen; + font-weight: bold; +} + +h2.bad { + color: darkred; + font-weight: bold; +} + +.chat-message { + margin: 3px; + padding: 10px; + font-size: 14px; + border-radius: 0; + background-color: white; + background-image: url("/systems/bol/ui/box-border-large.webp"); + background-repeat: no-repeat; + background-size: 100% 100%; + + .message-header { + .flavor-text { + font-family: "IMFellDWPicaSC-Regular", serif; + font-size: 14px; + + h2 { + font-family: "Modesto Condensed", "Palatino Linotype", serif; + font-size: 20px; + } + } + } + + .message-content { + .dice-roll { + .dice-result { + .dice-formula { + border-radius: 0px; + border: 1px inset lightgray; + background-color: #282828; + color: white; + } + + .dice-tooltip { + .tooltip-part { + .part-total { + border-radius: 0px; + border: 1px inset lightgray; + background-color: #2a2a2a; + color: white; + } + } + } + + .dice-total { + border-radius: 0px; + border: 1px inset lightgray; + background-color: #2a2a2a; + color: white; + } + } + } + } +} diff --git a/styles/global/colors.less b/styles/global/colors.less new file mode 100644 index 0000000..f1d35ec --- /dev/null +++ b/styles/global/colors.less @@ -0,0 +1,110 @@ +/* ----------------------------------------- */ +/* Premade Colors */ +/* ----------------------------------------- */ + +.light { + color: lightgray; +} + +.bg-light { + background: lightgray; +} + +.darkgray { + color: #23221d; +} + +.bg-darkgray { + background: #23221d; + color: #fff; +} + +.darkbrown { + color: #464331c4; +} + +.bg-darkbrown { + background: #464331c4; + color: #fff; +} + +.darkslate { + color: darkslategray; +} + +.bg-darkslate { + background: darkslategray; + color: #fff; +} + +.darkgreen { + color: #003c1e; +} + +.bg-darkgreen { + background: #003c1e; + color: #fff; +} + +.darkblue { + color: midnightblue; +} + +.bg-darkblue { + background: midnightblue; + color: #fff; +} + +.blue { + color: #009ee0; +} + +.bg-blue { + background: #009ee0; + color: #fff; +} + +.green { + color: #44a12b; +} + +.bg-green { + background: #44a12b; + color: #fff; +} + +.black { + color: #000; +} + +.bg-black { + background: #000; + color: #fff; +} + +.red { + color: #cd071e; +} + +.bg-red { + background: #cd071e; + color: #fff; +} + +.darkred { + color: darkred; +} + +.bg-darkred { + background: darkred; + color: #fff; +} + +.purple { + color: purple; +} + +.bg-purple { + background: purple; + color: #fff; +} diff --git a/styles/global/flex.less b/styles/global/flex.less new file mode 100644 index 0000000..818139f --- /dev/null +++ b/styles/global/flex.less @@ -0,0 +1,98 @@ +/* ----------------------------------------- */ +/* Flexbox Utilities */ +/* ----------------------------------------- */ + +.flxrow { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: flex-start; + + > * { + flex: 1; + } + + .flex1 { flex: 1; } + .flex2 { flex: 2; } + .flex3 { flex: 3; } + .flex4 { flex: 4; } +} + +.flexrow { + display: flex; + flex-flow: row wrap; + justify-content: flex-start; + + /* Wrong in v13: > * { flex: 1; } */ + + .flex1 { flex: 1; } + .flex2 { flex: 2; } + .flex3 { flex: 3; } + .flex4 { flex: 4; } + .flex5 { flex: 5; } + .flex6 { flex: 6; } + .flex7 { flex: 7; } + .flex8 { flex: 8; } + .flex9 { flex: 9; } +} + +.flexcol { + .flex1 { flex: 1; } + .flex2 { flex: 2; } + .flex3 { flex: 3; } + .flex4 { flex: 4; } +} + +.flex-group-center, +.flex-group-left, +.flex-group-right { + justify-content: center; + align-items: center; + text-align: center; + padding: 5px; +} + +.flex-group-left { + justify-content: flex-start; + text-align: left; +} + +.flex-group-right { + justify-content: flex-end; + text-align: right; +} + +.center { + text-align: center; + display: flex; + justify-content: center; + align-items: center; +} + +.left { + text-align: left; + display: flex; + align-items: center; + justify-content: flex-start; +} + +.right { + justify-content: flex-end; + text-align: right; + display: flex; + align-items: center; +} + +.flex-center { + align-items: center; + justify-content: center; + text-align: center; +} + +.flex-between { + justify-content: space-between; +} + +.no-wrap { + flex-wrap: nowrap !important; +} diff --git a/styles/global/forms.less b/styles/global/forms.less new file mode 100644 index 0000000..60257d9 --- /dev/null +++ b/styles/global/forms.less @@ -0,0 +1,233 @@ +/* ----------------------------------------- */ +/* Form Styles */ +/* ----------------------------------------- */ + +.bol { + input[readonly="true"] { + border: none; + color: dimgray; + cursor: not-allowed; + width: 100%; + vertical-align: middle; + background: transparent; + } + + input[type="text"], + input[type="number"], + input[type="text"]:hover, + input[type="number"]:hover, + input[type="text"]:focus, + input[type="number"]:focus { + border-radius: 0; + border: none; + box-shadow: none; + } + + input:disabled:hover, + select:disabled:hover, + textarea:disabled:hover, + input:disabled:focus, + select:disabled:focus, + textarea:disabled:focus { + box-shadow: none !important; + border: 1px solid transparent !important; + outline: none !important; + } + + button { + background: rgba(0, 0, 0, 0.1); + } + + select { + box-shadow: none; + font-size: 14px; + text-align: center; + text-align-last: center; + -moz-text-align-last: center; + width: 100%; + border: none; + border-radius: 0; + + &[multiple] { + box-shadow: none; + border: none; + font-size: 14px; + + &:focus option:checked { + background: darkred linear-gradient(0deg, darkred 0%, darkred 100%); + color: white; + } + } + } + + option { + font-size: 14px; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + + &:hover, + &:focus, + &:active, + &:checked, + &[selected] { + cursor: pointer; + background: darkred linear-gradient(0deg, darkred 0%, darkred 100%); + color: white; + } + } + + label.checkbox { + flex: auto; + padding: 0; + margin: 0; + height: 22px; + line-height: 22px; + font-size: 11px; + + > input[type="checkbox"] { + width: 16px; + height: 16px; + margin: 0 2px 0 0; + position: relative; + top: 4px; + } + + &.right > input[type="checkbox"] { + margin: 0 0 0 2px; + } + } + + .form-group { + label { + flex: 2; + font-weight: bold; + } + + .form-fields { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: flex-start; + + > * { + flex: 1; + margin: 0 3px 0 0; + + &:last-child { + margin-right: 0; + } + + .flex1 { flex: 1; } + .flex2 { flex: 2; } + .flex3 { flex: 3; } + .flex4 { flex: 4; } + } + + label { + flex: 0 0 100%; + margin: 0; + + &.checkbox { + flex: auto; + text-align: left; + } + } + + .field-value { + text-align: center; + } + } + + &.stacked { + label { + flex: 0 0 100%; + margin: 0; + + &.checkbox { + flex: auto; + text-align: left; + } + } + } + } + + .form-header { + margin: 0.25em 0 0.25em 0; + padding: 2px 5px; + font-family: "Wolfsbane2Expanded", cursive; + color: #4b4a44; + background-color: lightgray; + } + + h1.form-header { + font-size: 2.2em; + font-weight: 700; + } + + h2.form-header { + font-size: 1.8em; + font-weight: 500; + border-bottom: 1px groove #eeede0; + } + + h3.form-header { + font-size: 1.2em; + font-weight: 500; + border-bottom: 1px groove #eeede0; + } + + h4.form-header { + font-size: 1em; + font-weight: 500; + font-family: 'Signika', sans-serif; + color: black; + background-color: transparent; + border-top: none; + border-bottom: 1px groove #eeede0; + } + + .tag { + display: inline-block; + margin: 0 2px 0 0; + padding: 0 3px; + font-size: 10px; + line-height: 16px; + border: 1px solid #999; + border-radius: 3px; + background: rgba(0, 0, 0, 0.05); + } + + ::placeholder { + color: lightgray; + opacity: 1; + } + + :-ms-input-placeholder { + color: lightgray; + } + + ::-ms-input-placeholder { + color: lightgray; + } + + input::placeholder { + color: lightgray; + } + + .property { + margin-top: 2px; + } + + .inc-dec-btns { + color: #4b4a44; + } +} + +.chat-button { + font-size: 0.8rem; +} + +.summmary-number { + padding-left: 4rem; +} diff --git a/styles/global/foundry-overrides.less b/styles/global/foundry-overrides.less new file mode 100644 index 0000000..955fb30 --- /dev/null +++ b/styles/global/foundry-overrides.less @@ -0,0 +1,71 @@ +/* ----------------------------------------- */ +/* Foundry VTT Overrides */ +/* ----------------------------------------- */ + +#pause { + background: none; + + > img { + width: 200px; + height: 200px; + top: -50px; + left: calc(50% - 100px); + opacity: 0.7; + } + + h3 { + font-family: "IMFellDWPicaSC-Regular", serif; + font-size: 32px; + text-shadow: 0px 3px 5px #000000; + } +} + +::-webkit-scrollbar-thumb { + outline: none; + border-radius: 3px; + background: #999 !important; + border: 1px solid #333 !important; + border-color: #333 !important; +} + +::-webkit-scrollbar-track { + box-shadow: 0 0 3px #005d67 inset !important; + border-radius: 3px; +} + +* { + scrollbar-width: thin !important; + scrollbar-color: #005d67 #ccc !important; +} + +.element-invisible { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + border: 0; + padding: 0; + clip: rect(0 0 0 0); + overflow: hidden; +} + +.roll-box { + border-width: 1px; + border-color: #000000; + margin-bottom: 2px; +} + +.hide { + display: none; +} + +ul.no-bullets { + list-style-type: none; + padding: 0; + margin: 0; +} + +.nomargin { + margin: 0; + padding: 0; +} diff --git a/styles/global/item-list.less b/styles/global/item-list.less new file mode 100644 index 0000000..6d08e2f --- /dev/null +++ b/styles/global/item-list.less @@ -0,0 +1,105 @@ +/* ----------------------------------------- */ +/* Items List */ +/* ----------------------------------------- */ + +.items-list { + list-style: none; + margin: 7px 0; + padding: 0; + overflow-y: hidden; + + .item-header { + font-family: 'Signika', sans-serif; + font-size: 1em; + color: #4b4a44; + background-color: lightgray; + + .item-name { + font-family: "Wolfsbane2Expanded", cursive; + font-size: 1.5em; + } + } + + .item { + min-height: 30px; + line-height: 24px; + padding: 3px 0 3px 3px; + border-bottom: 1px solid #BBB; + align-items: stretch; + + .item-image { + flex: 0 0 30px; + padding: 0; + margin: 0 5px 0 0; + height: 30px; + width: 30px; + min-height: 30px; + min-width: 30px; + + img { + padding: 0; + margin: 0; + border: none; + height: 30px; + width: 30px; + min-height: 30px; + min-width: 30px; + } + + &.roll-weapon, + &.roll-career { + background-color: transparent; + background-image: url("../../../icons/svg/dice-target.svg") !important; + background-size: 30px 30px; + background-repeat: no-repeat; + background-position: center; + cursor: pointer; + + &:hover { + background-color: gray; + + img { + visibility: hidden; + } + } + } + } + + .item-name, + .item-field { + margin: 0; + } + + .item-controls-1 { + flex: 0 0 18px; + } + + .item-controls, + .item-controls-2 { + flex: 0 0 36px; + } + + .item-controls-3 { + flex: 0 0 54px; + } + + .item-control { + color: #4b4a44; + } + } + + .item-name-fixed-medium { + min-width: 8rem; + width: 8rem; + } + + .item-field-fixed-short { + max-width: 3rem; + min-width: 3rem; + width: 3rem; + } +} + +.bougette-dice-img { + color: rgba(150, 44, 44, 0.70); +} diff --git a/styles/global/typography.less b/styles/global/typography.less new file mode 100644 index 0000000..05dd44c --- /dev/null +++ b/styles/global/typography.less @@ -0,0 +1,61 @@ +/* ----------------------------------------- */ +/* LOCAL FONTS */ +/* ----------------------------------------- */ +@font-face { + font-family: 'Contrail One'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(https://fonts.gstatic.com/s/contrailone/v10/eLGbP-j_JA-kG0_Zo51noafdZQ.ttf) format('truetype'); +} + +@font-face { + font-family: "CCMeanwhile"; + src: url('../fonts/ccmeanwhile-regular.ttf'); +} + +@font-face { + font-family: "Wolfsbane2"; + src: url('../fonts/wolfsbane2.ttf'); +} + +@font-face { + font-family: "Wolfsbane2Condensed"; + src: url('../fonts/wolfsbane2cond.ttf'); +} + +@font-face { + font-family: "Wolfsbane2Expanded"; + src: url('../fonts/wolfsbane2expand.ttf'); +} + +@font-face { + font-family: "IMFellDWPicaSC-Regular"; + src: url('../fonts/IMFellDWPicaSC-Regular.ttf'); +} + +/* ----------------------------------------- */ +/* TEXT STYLES */ +/* ----------------------------------------- */ + +a.entity-link, +a.inline-roll { + border: none; + background: transparent; + border-bottom: 1px dotted grey; + padding: 0; +} + +a.inline-roll { + border: none; +} + +a:hover { + text-shadow: 0 0 5px #a00; +} + +.ellipsis { + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; +} diff --git a/system.json b/system.json index 97a836d..894bef8 100644 --- a/system.json +++ b/system.json @@ -333,7 +333,46 @@ "distance": 1.5, "units": "m" }, - "flags": { + "documentTypes": { + "Actor": { + "character": { + "htmlFields": [ + "details.biography", + "details.notes" + ] + }, + "encounter": { + "htmlFields": [ + "details.biography", + "details.notes" + ] + }, + "horde": { + "htmlFields": [ + "details.biography", + "details.notes" + ] + }, + "vehicle": { + "htmlFields": [ + "description" + ] + } + }, + "Item": { + "item": { + "htmlFields": [ + "description" + ] + }, + "feature": { + "htmlFields": [ + "description" + ] + } + } + }, + "flags": { "hotReload": { "extensions": [ "css", diff --git a/templates/item.backup/item-sheet.hbs b/templates/item.backup/item-sheet.hbs new file mode 100644 index 0000000..96bf268 --- /dev/null +++ b/templates/item.backup/item-sheet.hbs @@ -0,0 +1,38 @@ +
+
+
+ {{> "systems/bol/templates/item/parts/item-header.hbs"}} + {{!-- Sheet Tab Navigation --}} + + {{!-- Sheet Body --}} +
+ +
+ {{#if itemProperties}} +
+
    + {{#each itemProperties}} +
  1. {{localize this}}
  2. + {{/each}} +
+
+ {{/if}} + + {{editor description target="system.description" button=true owner=owner editable=editable}} +
+ +
+ {{#if (eq item.type "item")}} + {{> "systems/bol/templates/item/parts/properties/item-properties.hbs"}} + {{/if}} + {{#if (eq item.type "feature")}} + {{> "systems/bol/templates/item/parts/properties/feature-properties.hbs"}} + {{/if}} +
+
+
+
+
\ No newline at end of file diff --git a/templates/item.backup/parts/item-header.hbs b/templates/item.backup/parts/item-header.hbs new file mode 100644 index 0000000..6cee126 --- /dev/null +++ b/templates/item.backup/parts/item-header.hbs @@ -0,0 +1,11 @@ +{{!-- Sheet Header --}} +
+
+ +

+
+ + + + +
\ No newline at end of file diff --git a/templates/item.backup/parts/properties/feature-properties.hbs b/templates/item.backup/parts/properties/feature-properties.hbs new file mode 100644 index 0000000..9b8aa38 --- /dev/null +++ b/templates/item.backup/parts/properties/feature-properties.hbs @@ -0,0 +1,31 @@ +
+ + +
+ +{{#if (eq item.system.subtype "career")}} + {{> "systems/bol/templates/item/parts/properties/feature/career-properties.hbs"}} +{{/if}} +{{#if (eq item.system.subtype "fightoption")}} + {{> "systems/bol/templates/item/parts/properties/feature/fightoption-properties.hbs"}} +{{/if}} +{{!#if (equals data.subtype "race")}} + {{!> "systems/bol/templates/item/parts/properties/feature/race-properties.hbs"}} +{{!/if}} +{{#if (eq item.system.subtype "boon")}} + {{> "systems/bol/templates/item/parts/properties/feature/boon-properties.hbs"}} +{{/if}} +{{#if (eq item.system.subtype "flaw")}} + {{> "systems/bol/templates/item/parts/properties/feature/flaw-properties.hbs"}} +{{/if}} +{{#if (eq item.system.subtype "boleffect")}} + {{> "systems/bol/templates/item/parts/properties/feature/effect-properties.hbs"}} +{{/if}} +{{#if (eq item.system.subtype "horoscope")}} + {{> "systems/bol/templates/item/parts/properties/feature/horoscope-properties.hbs"}} +{{/if}} +{{#if (eq item.system.subtype "xplog")}} + {{> "systems/bol/templates/item/parts/properties/feature/xplog-properties.hbs"}} +{{/if}} diff --git a/templates/item.backup/parts/properties/feature/boon-properties.hbs b/templates/item.backup/parts/properties/feature/boon-properties.hbs new file mode 100644 index 0000000..707909f --- /dev/null +++ b/templates/item.backup/parts/properties/feature/boon-properties.hbs @@ -0,0 +1,5 @@ +

{{localize 'BOL.featureSubtypes.boon'}}

+
+ + +
diff --git a/templates/item.backup/parts/properties/feature/career-properties.hbs b/templates/item.backup/parts/properties/feature/career-properties.hbs new file mode 100644 index 0000000..2944f55 --- /dev/null +++ b/templates/item.backup/parts/properties/feature/career-properties.hbs @@ -0,0 +1,21 @@ +

{{localize 'BOL.featureSubtypes.career'}}

+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
diff --git a/templates/item.backup/parts/properties/feature/effect-properties.hbs b/templates/item.backup/parts/properties/feature/effect-properties.hbs new file mode 100644 index 0000000..c4482b8 --- /dev/null +++ b/templates/item.backup/parts/properties/feature/effect-properties.hbs @@ -0,0 +1,15 @@ +

{{localize 'BOL.featureSubtypes.effect'}}

+ +
+ + +
+ +
+ + +
diff --git a/templates/item.backup/parts/properties/feature/fightoption-properties.hbs b/templates/item.backup/parts/properties/feature/fightoption-properties.hbs new file mode 100644 index 0000000..6855bbb --- /dev/null +++ b/templates/item.backup/parts/properties/feature/fightoption-properties.hbs @@ -0,0 +1,21 @@ +

{{localize "BOL.ui.fightOption"}}

+ +
+ +
+ +
+
+
+ + +
+ +
+ + +
\ No newline at end of file diff --git a/templates/item.backup/parts/properties/feature/flaw-properties.hbs b/templates/item.backup/parts/properties/feature/flaw-properties.hbs new file mode 100644 index 0000000..00fa1a5 --- /dev/null +++ b/templates/item.backup/parts/properties/feature/flaw-properties.hbs @@ -0,0 +1,5 @@ +

{{localize 'BOL.featureSubtypes.flaw'}}

+
+ + +
diff --git a/templates/item.backup/parts/properties/feature/horoscope-properties.hbs b/templates/item.backup/parts/properties/feature/horoscope-properties.hbs new file mode 100644 index 0000000..4686c94 --- /dev/null +++ b/templates/item.backup/parts/properties/feature/horoscope-properties.hbs @@ -0,0 +1,13 @@ +

{{localize 'BOL.featureSubtypes.horoscope'}}

+ +
+ + +
+ +
+ + +
diff --git a/templates/item.backup/parts/properties/feature/origin-properties.hbs b/templates/item.backup/parts/properties/feature/origin-properties.hbs new file mode 100644 index 0000000..da07462 --- /dev/null +++ b/templates/item.backup/parts/properties/feature/origin-properties.hbs @@ -0,0 +1 @@ +

{{localize "BOL.featureSubtypes.origin"}}

\ No newline at end of file diff --git a/templates/item.backup/parts/properties/feature/race-properties.hbs b/templates/item.backup/parts/properties/feature/race-properties.hbs new file mode 100644 index 0000000..169ff7a --- /dev/null +++ b/templates/item.backup/parts/properties/feature/race-properties.hbs @@ -0,0 +1 @@ +

{{localize "BOL.featureSubtypes.race"}}

\ No newline at end of file diff --git a/templates/item.backup/parts/properties/feature/xplog-properties.hbs b/templates/item.backup/parts/properties/feature/xplog-properties.hbs new file mode 100644 index 0000000..c48a322 --- /dev/null +++ b/templates/item.backup/parts/properties/feature/xplog-properties.hbs @@ -0,0 +1,51 @@ +

{{localize 'BOL.featureSubtypes.xplog'}}

+ +
+ + +
+ +
+ + +
+ +
+ + + {{#if (eq item.system.properties.xptype "attribute")}} + + {{else}} + {{#if (eq item.system.properties.xptype "aptitude")}} + + {{else}} + {{#if (eq item.system.properties.xptype "career")}} + + {{else}} + + {{/if}} + {{/if}} + {{/if}} + +
+
+ + +
+ +
+ + +
diff --git a/templates/item.backup/parts/properties/item-properties.hbs b/templates/item.backup/parts/properties/item-properties.hbs new file mode 100644 index 0000000..54bea30 --- /dev/null +++ b/templates/item.backup/parts/properties/item-properties.hbs @@ -0,0 +1,27 @@ +
+ +
+ +
+
+ +{{#if (eq item.system.category "equipment")}} + {{> "systems/bol/templates/item/parts/properties/item/equipment-properties.hbs"}} +{{/if}} +{{#if (eq item.system.category "capacity")}} + {{> "systems/bol/templates/item/parts/properties/item/capacity-properties.hbs"}} +{{/if}} +{{#if (eq item.system.category "vehicle")}} + {{> "systems/bol/templates/item/parts/properties/item/vehicle-properties.hbs"}} +{{/if}} +{{#if (eq item.system.category "spell")}} + {{> "systems/bol/templates/item/parts/properties/item/spell-properties.hbs"}} +{{/if}} +{{#if (eq item.system.category "alchemy")}} + {{> "systems/bol/templates/item/parts/properties/item/alchemy-properties.hbs"}} +{{/if}} +{{#if (eq item.system.category "vehicleweapon")}} + {{> "systems/bol/templates/item/parts/properties/item/weapon-vehicle-properties.hbs"}} +{{/if}} diff --git a/templates/item.backup/parts/properties/item/alchemy-properties.hbs b/templates/item.backup/parts/properties/item/alchemy-properties.hbs new file mode 100644 index 0000000..cf5a975 --- /dev/null +++ b/templates/item.backup/parts/properties/item/alchemy-properties.hbs @@ -0,0 +1,26 @@ +

{{localize "BOL.ui.alchemyProperties"}}

+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ diff --git a/templates/item.backup/parts/properties/item/capacity-properties.hbs b/templates/item.backup/parts/properties/item/capacity-properties.hbs new file mode 100644 index 0000000..bd343b2 --- /dev/null +++ b/templates/item.backup/parts/properties/item/capacity-properties.hbs @@ -0,0 +1,25 @@ +

{{localize "BOL.ui.capacityProperties"}}

+
+ +
+ + + +
+
+ +{{#if item.system.properties.weapon}} + {{> "systems/bol/templates/item/parts/properties/item/weapon-properties.hbs"}} +{{/if}} +{{#if item.system.properties.protection}} + {{> "systems/bol/templates/item/parts/properties/item/protection-properties.hbs"}} +{{/if}} +{{#if item.system.properties.magical}} + {{> "systems/bol/templates/item/parts/properties/item/magical-properties.hbs"}} +{{/if}} diff --git a/templates/item.backup/parts/properties/item/equipment-properties.hbs b/templates/item.backup/parts/properties/item/equipment-properties.hbs new file mode 100644 index 0000000..41645e7 --- /dev/null +++ b/templates/item.backup/parts/properties/item/equipment-properties.hbs @@ -0,0 +1,91 @@ +

{{localize "BOL.ui.equipmentProperties"}}

+ +
+ +
+ +
+
+
+
+ +
+ + + +
+
+
+
+ +
+ + + +
+
+
+{{#if item.system.properties.equipable}} +
+ +
+ +
+
+
+ +
+ +
+
+{{/if}} + +{{#if item.system.properties.stackable}} +
+ +
+ +
+
+
+ +
+ +
+
+{{/if}} + +
+ +
+ +
+
+ +{{#if item.system.properties.weapon}} + {{> "systems/bol/templates/item/parts/properties/item/weapon-properties.hbs"}} +{{/if}} +{{#if item.system.properties.protection}} + {{> "systems/bol/templates/item/parts/properties/item/protection-properties.hbs"}} +{{/if}} +{{#if item.system.properties.magical}} + {{> "systems/bol/templates/item/parts/properties/item/magical-properties.hbs"}} +{{/if}} diff --git a/templates/item.backup/parts/properties/item/magical-properties.hbs b/templates/item.backup/parts/properties/item/magical-properties.hbs new file mode 100644 index 0000000..be49ae3 --- /dev/null +++ b/templates/item.backup/parts/properties/item/magical-properties.hbs @@ -0,0 +1 @@ +

{{localize "BOL.itemProperty.magicalProperties"}}

diff --git a/templates/item.backup/parts/properties/item/protection-properties.hbs b/templates/item.backup/parts/properties/item/protection-properties.hbs new file mode 100644 index 0000000..07d4771 --- /dev/null +++ b/templates/item.backup/parts/properties/item/protection-properties.hbs @@ -0,0 +1,98 @@ +

{{localize "BOL.ui.protectionProperties"}}

+
+ +
+ + + +
+
+
+ +{{#if item.system.properties.armor}} +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+{{/if}} + +{{#if item.system.properties.helm}} +
+ +
+ +
+
+{{/if}} + +{{#if item.system.properties.shield}} +
+ +
+ +
+
+
+ +
+ + +
+
+{{/if}} + +
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ diff --git a/templates/item.backup/parts/properties/item/spell-properties.hbs b/templates/item.backup/parts/properties/item/spell-properties.hbs new file mode 100644 index 0000000..e7f82b8 --- /dev/null +++ b/templates/item.backup/parts/properties/item/spell-properties.hbs @@ -0,0 +1,77 @@ +

{{localize "BOL.ui.spellProperties"}}

+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + {{#each item.system.properties.mandatoryconditions as |cond idx|}} + {{#if (lt idx @root.item.system.properties.nbmandatoryconditions)}} +
+ + +
+ {{/if}} + {{/each}} + +
+ + +
+ + {{#each item.system.properties.optionnalconditions as |cond idx|}} + {{#if (lt idx @root.item.system.properties.nboptionnalconditions)}} +
+ + +
+ {{/if}} + {{/each}} + +

+ +
+
+ +
+
+ +
+
+ +
+
diff --git a/templates/item.backup/parts/properties/item/vehicle-properties.hbs b/templates/item.backup/parts/properties/item/vehicle-properties.hbs new file mode 100644 index 0000000..f8d1bf4 --- /dev/null +++ b/templates/item.backup/parts/properties/item/vehicle-properties.hbs @@ -0,0 +1,24 @@ +

{{localize "BOL.ui.vehicleProperties"}}

+ +
+ +
+ +
+
+
+
+ +
+ +
+
+ +
+ +
+ +
+
diff --git a/templates/item.backup/parts/properties/item/weapon-properties.hbs b/templates/item.backup/parts/properties/item/weapon-properties.hbs new file mode 100644 index 0000000..c2256aa --- /dev/null +++ b/templates/item.backup/parts/properties/item/weapon-properties.hbs @@ -0,0 +1,322 @@ +

{{localize "BOL.ui.weaponProperties"}}

+
+ +
+ + + + +
+
+
+
+ +
+ + + + + + + + {{#if item.system.properties.ranged}} + + {{/if}} + {{#if item.system.properties.melee}} + + + {{/if}} +
+
+
+{{#if (not item.system.properties.onlymodifier)}} +
+ +
+ +
+
+
+ +
+ +
+
+{{/if}} +
+ +
+ +
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +{{#if + (or + item.system.properties.throwing + (or item.system.properties.ranged item.system.properties.throwable) + ) +}} +
+
+ +
+ +
+
+{{/if}} + +{{#if item.system.properties.reloadable}} +
+ +
+ +
+
+{{/if}} \ No newline at end of file diff --git a/templates/item.backup/parts/properties/item/weapon-vehicle-properties.hbs b/templates/item.backup/parts/properties/item/weapon-vehicle-properties.hbs new file mode 100644 index 0000000..a81f5f0 --- /dev/null +++ b/templates/item.backup/parts/properties/item/weapon-vehicle-properties.hbs @@ -0,0 +1,77 @@ +

{{localize "BOL.ui.weaponProperties"}}

+ +
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +{{#if item.system.properties.ishulldamage}} +
+

{{localize "BOL.itemProperty.hulldamage"}}

+
+ +
+ +
+
+
+ +
+ +
+
+{{/if}} +{{#if item.system.properties.iscrewdamage}} +
+

{{localize "BOL.itemProperty.crewdamage"}}

+
+ +
+ +
+
+
+ +
+ +
+
+{{/if}} \ No newline at end of file diff --git a/templates/item.backup/post-item.hbs b/templates/item.backup/post-item.hbs new file mode 100644 index 0000000..4429261 --- /dev/null +++ b/templates/item.backup/post-item.hbs @@ -0,0 +1,8 @@ +
+

{{name}}

+ {{#if img}} + + {{/if}} +

Description :

+

{{{system.description}}}

+
diff --git a/templates/item/feature-sheet.hbs b/templates/item/feature-sheet.hbs new file mode 100644 index 0000000..dfcf9a3 --- /dev/null +++ b/templates/item/feature-sheet.hbs @@ -0,0 +1,40 @@ +
+
+
+ {{> "systems/bol/templates/item/parts/item-header.hbs"}} + + {{!-- Sheet Tab Navigation --}} + + + {{!-- Sheet Body --}} +
+ {{!-- Description Tab --}} +
+ {{#if itemProperties}} +
+
    + {{#each itemProperties}} +
  1. {{localize this}}
  2. + {{/each}} +
+
+ {{/if}} + + {{editor enrichedDescription target="system.description" button=true editable=isEditable engine="prosemirror"}} +
+ + {{!-- Properties Tab --}} +
+ {{> "systems/bol/templates/item/parts/properties/feature-properties.hbs"}} +
+
+
+
+
diff --git a/templates/item/item-sheet.hbs b/templates/item/item-sheet.hbs index 96bf268..a371a43 100644 --- a/templates/item/item-sheet.hbs +++ b/templates/item/item-sheet.hbs @@ -2,15 +2,21 @@
{{> "systems/bol/templates/item/parts/item-header.hbs"}} + {{!-- Sheet Tab Navigation --}} + {{!-- Sheet Body --}}
- -
+ {{!-- Description Tab --}} +
{{#if itemProperties}}
    @@ -21,18 +27,14 @@
{{/if}} - {{editor description target="system.description" button=true owner=owner editable=editable}} + {{editor enrichedDescription target="system.description" button=true editable=isEditable engine="prosemirror"}}
-
- {{#if (eq item.type "item")}} + {{!-- Properties Tab --}} +
{{> "systems/bol/templates/item/parts/properties/item-properties.hbs"}} - {{/if}} - {{#if (eq item.type "feature")}} - {{> "systems/bol/templates/item/parts/properties/feature-properties.hbs"}} - {{/if}}
- \ No newline at end of file + diff --git a/templates/item/item-sheet.hbs.backup b/templates/item/item-sheet.hbs.backup new file mode 100644 index 0000000..96bf268 --- /dev/null +++ b/templates/item/item-sheet.hbs.backup @@ -0,0 +1,38 @@ +
+
+
+ {{> "systems/bol/templates/item/parts/item-header.hbs"}} + {{!-- Sheet Tab Navigation --}} + + {{!-- Sheet Body --}} +
+ +
+ {{#if itemProperties}} +
+
    + {{#each itemProperties}} +
  1. {{localize this}}
  2. + {{/each}} +
+
+ {{/if}} + + {{editor description target="system.description" button=true owner=owner editable=editable}} +
+ +
+ {{#if (eq item.type "item")}} + {{> "systems/bol/templates/item/parts/properties/item-properties.hbs"}} + {{/if}} + {{#if (eq item.type "feature")}} + {{> "systems/bol/templates/item/parts/properties/feature-properties.hbs"}} + {{/if}} +
+
+
+
+
\ No newline at end of file diff --git a/templates/item/parts/item-header.hbs b/templates/item/parts/item-header.hbs index 6cee126..b7e6547 100644 --- a/templates/item/parts/item-header.hbs +++ b/templates/item/parts/item-header.hbs @@ -1,11 +1,18 @@ -{{!-- Sheet Header --}} -
-
- -

+{{!-- Item Header --}} +
+ +
+
+

+ +

+
- - - - -
\ No newline at end of file +
+ {{#if isEditable}} + + {{/if}} +
+
diff --git a/templates/item/parts/item-header.hbs.backup b/templates/item/parts/item-header.hbs.backup new file mode 100644 index 0000000..6cee126 --- /dev/null +++ b/templates/item/parts/item-header.hbs.backup @@ -0,0 +1,11 @@ +{{!-- Sheet Header --}} +
+
+ +

+
+ + + + +
\ No newline at end of file