diff --git a/assets/help/employe-sheet.png b/assets/help/employe-sheet.png new file mode 100644 index 0000000..7d28f0a Binary files /dev/null and b/assets/help/employe-sheet.png differ diff --git a/assets/help/magie-capacites.png b/assets/help/magie-capacites.png new file mode 100644 index 0000000..7973c15 Binary files /dev/null and b/assets/help/magie-capacites.png differ diff --git a/assets/help/mission-pack-dialog.png b/assets/help/mission-pack-dialog.png new file mode 100644 index 0000000..6314fe7 Binary files /dev/null and b/assets/help/mission-pack-dialog.png differ diff --git a/assets/help/pnj-sheet.png b/assets/help/pnj-sheet.png new file mode 100644 index 0000000..9462831 Binary files /dev/null and b/assets/help/pnj-sheet.png differ diff --git a/lang/fr.json b/lang/fr.json index 7308805..7933834 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -24,11 +24,12 @@ "DNC.Chat.SelectTarget": "Choisissez une cible presente sur la scene.", "DNC.Chat.TargetUnavailable": "La cible selectionnee n'est plus disponible.", "DNC.Chat.InvalidDamageTarget": "Impossible d'appliquer les degats a cette cible.", - "DNC.Chat.Kicker.Resolution": "Resolution", - "DNC.Chat.Kicker.Magic": "Magie", - "DNC.Chat.Kicker.Wear": "Usure", - "DNC.Chat.Kicker.Network": "Reseau", - "DNC.Chat.Kicker.Initiative": "Ordre de marche", + "DNC.Chat.Kicker.Resolution": "Resolution", + "DNC.Chat.Kicker.Magic": "Magie", + "DNC.Chat.Kicker.Wear": "Usure", + "DNC.Chat.Kicker.Network": "Reseau", + "DNC.Chat.Kicker.Logistics": "Logistique", + "DNC.Chat.Kicker.Initiative": "Ordre de marche", "DNC.Chat.Success": "Reussite", "DNC.Chat.Failure": "Echec", "DNC.Chat.Favor": "Faveur", @@ -101,9 +102,53 @@ "DNC.Warn.NoFavorAvailable": "Aucune faveur disponible pour {label}.", "DNC.Warn.SpellInsufficientResources": "Le lanceur ne dispose pas d'assez de PV et de focus pour payer ce sort.", "DNC.Warn.ChaosUnavailable": "Le Chaos n'est pas disponible pour ce sort.", - "DNC.Warn.TrainingExhausted": "Cet entrainement est epuise pour aujourd'hui. Reinitialisez son delta quotidien pour le lendemain.", - "DNC.Sheet.Create": "Creer", - "DNC.Sheet.Delete": "Supprimer", - "DNC.Sheet.Edit": "Editer", - "DNC.Sheet.Post": "Poster dans le chat" -} + "DNC.Warn.TrainingExhausted": "Cet entrainement est epuise pour aujourd'hui. Reinitialisez son delta quotidien pour le lendemain.", + "DNC.Macro.MissionPack.Title": "Paquetage de debut de mission", + "DNC.Macro.MissionPack.ItemsAdded": "Objets ajoutes", + "DNC.Macro.MissionPack.ItemsMissing": "Objets manquants", + "DNC.Macro.MissionPack.Missing": "Introuvables", + "DNC.Macro.MissionPack.CompleteChatSummary": "L'integralite du paquetage a ete ajoutee a la fiche.", + "DNC.Macro.MissionPack.PartialChatSummary": "Les elements trouves du paquetage ont ete ajoutes a la fiche.", + "DNC.Macro.MissionPack.NoResult": "Aucun resultat exploitable", + "DNC.Macro.MissionPack.TableMissing": "Table introuvable : {table}", + "DNC.Macro.MissionPack.WarnNoActor": "Impossible de determiner l'employe cible. Selectionnez un token ou attribuez un personnage a l'utilisateur.", + "DNC.Macro.MissionPack.WarnMultipleTokens": "Selectionnez un seul token pour attribuer le paquetage.", + "DNC.Macro.MissionPack.WarnInvalidActor": "Le paquetage de mission ne peut etre attribue qu'a un employe.", + "DNC.Macro.MissionPack.WarnNoEmployees": "Aucun employe n'est disponible pour recevoir un paquetage.", + "DNC.Macro.MissionPack.WarnGMOnly": "Cette interface de paquetage est reservee au MJ.", + "DNC.Macro.MissionPack.WarnNothingAdded": "Aucun objet du paquetage n'a pu etre ajoute a la fiche.", + "DNC.Macro.MissionPack.Success": "{actor} recoit {count} objet(s) de paquetage.", + "DNC.Macro.MissionPack.Partial": "{actor} recoit {count} objet(s), mais {missing} entree(s) du paquetage sont introuvables.", + "DNC.Macro.MissionPack.DialogTitle": "Paquetage de mission", + "DNC.Macro.MissionPack.DialogIntro": "Selectionnez l'employe qui recevra le paquetage de debut de mission, puis lancez le tirage.", + "DNC.Macro.MissionPack.DialogActor": "Employe", + "DNC.Macro.MissionPack.DialogAction": "Generer le paquetage", + "DNC.Macro.MissionPack.SidebarButton": "Paquetage", + "DNC.Macro.MissionPack.melee": "Arme de corps a corps", + "DNC.Macro.MissionPack.ranged": "Arme a distance", + "DNC.Macro.MissionPack.armor": "Armure", + "DNC.Macro.MissionPack.misc": "Encas et equipement divers", + "DNC.Welcome.Kicker": "Accueil", + "DNC.Welcome.Title": "Bienvenue dans Donjon & Cie", + "DNC.Welcome.Subtitle": "Systeme FoundryVTT · version {version}", + "DNC.Welcome.Seal": "GUIDE", + "DNC.Welcome.PillSheets": "Fiches Application V2", + "DNC.Welcome.PillChat": "Jets et cartes de chat", + "DNC.Welcome.PillHelp": "Aide integree", + "DNC.Welcome.Intro": "Le systeme est pret : vous pouvez creer des employes, gerer les PNJ, lancer les jets et utiliser les outils MJ directement depuis l'interface.", + "DNC.Welcome.BulletActors": "Les fiches Employe et PNJ couvrent les caracteristiques, ressources, objets et actions de jeu courantes.", + "DNC.Welcome.BulletItems": "Les objets peuvent etre lances, postes dans le chat et utilises avec leur de d'usure quand c'est pertinent.", + "DNC.Welcome.BulletMissionPack": "Le bouton Paquetage du repertoire des acteurs permet au MJ de generer rapidement l'equipement de debut de mission.", + "DNC.Welcome.HelpLabel": "Aide du systeme :", + "DNC.Welcome.HelpLinkLabel": "ouvrir le journal d'aide", + "DNC.Welcome.HelpFallback": "le compendium d'aide systeme est disponible dans les Compendiums.", + "DNC.Welcome.CreditsLabel": "Credits :", + "DNC.Welcome.CreditsText": "systeme FoundryVTT par LeRatierBretonnien. Donjon & Cie est un jeu de role edite par John Doe.", + "DNC.Welcome.OfficialLabel": "Page officielle :", + "DNC.Welcome.OfficialLinkText": "johndoe-rpg.com/catalogue/donjon-cie/", + "DNC.Welcome.Footer": "Commencez par ouvrir le journal d'aide si vous voulez un tour rapide des ecrans et des workflows du systeme.", + "DNC.Sheet.Create": "Creer", + "DNC.Sheet.Delete": "Supprimer", + "DNC.Sheet.Edit": "Editer", + "DNC.Sheet.Post": "Poster dans le chat" + } diff --git a/less/chat.less b/less/chat.less index 677814d..162a23f 100644 --- a/less/chat.less +++ b/less/chat.less @@ -378,6 +378,30 @@ linear-gradient(135deg, #f7fbff 0%, #9fb8d7 100%); } +.dnc-chat-card-welcome { + border-color: fade(@color-accent, 34%); + background: + linear-gradient(180deg, rgba(255, 250, 240, 0.84) 0%, rgba(239, 219, 179, 0.94) 100%), + linear-gradient(135deg, #fffaf0 0%, #dcb772 100%); +} + +.chat-welcome-intro { + font-size: 0.82rem; + line-height: 1.45; +} + +.chat-welcome-link { + margin-top: @spacing-md; + padding: 0.6rem 0.8rem; + border: 1px solid fade(@color-accent, 24%); + border-radius: 12px; + background: fade(@color-accent, 8%); +} + +.chat-welcome-link a.content-link { + font-weight: 700; +} + .dnc-chat-card-spell .chat-actions + .chat-actions { margin-top: @spacing-sm; } diff --git a/modules/donjon-et-cie-macros.mjs b/modules/donjon-et-cie-macros.mjs new file mode 100644 index 0000000..ee644c4 --- /dev/null +++ b/modules/donjon-et-cie-macros.mjs @@ -0,0 +1,340 @@ +/** + * Donjon & Cie - Systeme FoundryVTT + * + * Donjon & Cie est un jeu de role edite par John Doe. + * Ce systeme FoundryVTT est une implementation independante et n'est pas + * affilie a John Doe. + * + * @author LeRatierBretonnien + * @copyright 2025–2026 LeRatierBretonnien + * @license CC BY-NC-SA 4.0 – https://creativecommons.org/licenses/by-nc-sa/4.0/ + */ + +import { DonjonEtCieUtility } from "./donjon-et-cie-utility.mjs"; + +export class DonjonEtCieMacros { + static MISSION_PACK_TABLES = [ + { key: "melee", name: "Armes de corps a corps", multiple: false }, + { key: "ranged", name: "Armes a distance", multiple: false }, + { key: "armor", name: "Armures", multiple: false }, + { key: "misc", name: "Encas et equipement divers", multiple: true } + ]; + + static #normalizeName(value) { + return String(value ?? "") + .normalize("NFD") + .replace(/\p{Diacritic}/gu, "") + .replace(/['’]/g, " ") + .replace(/\s+/g, " ") + .trim() + .toLowerCase(); + } + + static #getMissionPackLabel(key) { + return game.i18n.localize(`DNC.Macro.MissionPack.${key}`); + } + + static #getDefaultMissionPackActorId(actors) { + const controlledActor = canvas?.tokens?.controlled?.[0]?.actor ?? null; + if (controlledActor?.type === "employe") return controlledActor.id; + return actors[0]?.id ?? ""; + } + + static #getMissionPackActorOptions() { + return game.actors + .filter((actor) => actor.type === "employe") + .sort((a, b) => a.name.localeCompare(b.name, "fr", { sensitivity: "base" })) + .map((actor) => ({ + value: actor.id, + label: actor.name + })); + } + + static async #resolveMissionPackActor(target = null) { + if (target?.documentName === "Actor") return target; + if (target?.actor?.documentName === "Actor") return target.actor; + if (typeof target === "string" && target) { + const document = await fromUuid(target); + if (document?.documentName === "Actor") return document; + if (document?.actor?.documentName === "Actor") return document.actor; + } + + const controlledTokens = canvas?.tokens?.controlled ?? []; + if (controlledTokens.length === 1 && controlledTokens[0]?.actor) return controlledTokens[0].actor; + if (controlledTokens.length > 1) { + ui.notifications.warn(game.i18n.localize("DNC.Macro.MissionPack.WarnMultipleTokens")); + return null; + } + + return game.user.character ?? null; + } + + static async #getRandomTableDocuments() { + const worldTables = game.tables?.contents ?? []; + if (worldTables.length) return worldTables; + + const pack = game.packs.get("fvtt-donjon-et-cie.random-tables"); + return pack ? pack.getDocuments() : []; + } + + static async #findRollTableByName(name) { + const normalizedName = this.#normalizeName(name); + const worldTable = game.tables.find((table) => this.#normalizeName(table.name) === normalizedName); + if (worldTable) return worldTable; + + const packTables = await this.#getRandomTableDocuments(); + return packTables.find((table) => this.#normalizeName(table.name) === normalizedName) ?? null; + } + + static async #getEquipmentDocuments() { + const pack = game.packs.get("fvtt-donjon-et-cie.equipment"); + const packDocuments = pack ? await pack.getDocuments() : []; + return [...(game.items?.contents ?? []), ...packDocuments]; + } + + static async #findItemByName(name) { + const normalizedName = this.#normalizeName(name); + const documents = await this.#getEquipmentDocuments(); + return documents.find((item) => this.#normalizeName(item.name) === normalizedName) ?? null; + } + + static #extractUuidTargets(text) { + const matches = [...String(text ?? "").matchAll(/@UUID\[([^\]]+)\](?:\{([^}]+)\})?/g)]; + return matches.map((match) => ({ + uuid: match[1], + label: match[2] ?? "" + })); + } + + static #extractPlainTextEntries(text) { + const rawText = String(text ?? "") + .replace(/<[^>]+>/g, " ") + .replace(/\s+/g, " ") + .trim(); + + if (!rawText) return []; + + return rawText + .split(",") + .map((entry) => entry.trim()) + .filter(Boolean) + .filter((entry) => !/^dotation\s+\d+$/i.test(entry)); + } + + static async #resolveTableResultEntries(result, { multiple = false } = {}) { + if (!result) { + return { + display: game.i18n.localize("DNC.Macro.MissionPack.NoResult"), + entries: [] + }; + } + + if (result.type === "document" && result.documentCollection && result.documentId) { + const uuid = result.documentCollection.includes(".") + ? `Compendium.${result.documentCollection}.Item.${result.documentId}` + : `Item.${result.documentId}`; + const document = await fromUuid(uuid); + const label = document?.name ?? result.text ?? ""; + return { + display: label, + entries: label ? [{ name: label, document }] : [] + }; + } + + const uuidTargets = this.#extractUuidTargets(result.text); + if (uuidTargets.length) { + const entries = []; + for (const target of uuidTargets) { + const document = await fromUuid(target.uuid); + const name = document?.name ?? target.label; + if (!name) continue; + entries.push({ name, document }); + } + + return { + display: entries.map((entry) => entry.name).join(", "), + entries + }; + } + + const names = multiple + ? this.#extractPlainTextEntries(result.text) + : [result.text].map((entry) => String(entry ?? "").trim()).filter(Boolean); + + return { + display: names.join(", "), + entries: names.map((name) => ({ name, document: null })) + }; + } + + static #toEmbeddedItemData(item) { + const data = foundry.utils.deepClone(item.toObject()); + delete data._id; + delete data.folder; + delete data.sort; + return data; + } + + /** + * Open the GM-only mission pack dialog. + * @returns {Promise} + */ + static async openMissionPackDialog() { + if (!game.user.isGM) { + ui.notifications.warn(game.i18n.localize("DNC.Macro.MissionPack.WarnGMOnly")); + return null; + } + + const actorOptions = this.#getMissionPackActorOptions(); + if (!actorOptions.length) { + ui.notifications.warn(game.i18n.localize("DNC.Macro.MissionPack.WarnNoEmployees")); + return null; + } + + const selectedActorId = this.#getDefaultMissionPackActorId(actorOptions.map((option) => game.actors.get(option.value)).filter(Boolean)); + const content = await foundry.applications.handlebars.renderTemplate( + "systems/fvtt-donjon-et-cie/templates/dialogs/mission-pack-dialog.hbs", + { + actorOptions, + selectedActorId + } + ); + + return foundry.applications.api.DialogV2.wait({ + window: { + title: game.i18n.localize("DNC.Macro.MissionPack.DialogTitle"), + icon: "fa-solid fa-box-open" + }, + classes: ["dnc-roll-dialog"], + content, + modal: false, + buttons: [ + { + action: "grant", + label: game.i18n.localize("DNC.Macro.MissionPack.DialogAction"), + icon: "fa-solid fa-box-open", + default: true, + callback: async (event, button) => { + const actorId = button.form.elements.actorId?.value ?? ""; + const actor = actorId ? game.actors.get(actorId) : null; + if (!actor) { + ui.notifications.warn(game.i18n.localize("DNC.Macro.MissionPack.WarnNoActor")); + return null; + } + return this.grantMissionPack(actor); + } + } + ], + rejectClose: false + }); + } + + /** + * Draw the initial mission pack for the resolved actor and add the resulting items. + * @param {Actor|string|null} target Resolved actor, token, or UUID. Defaults to selected token or user character. + * @returns {Promise} + */ + static async grantMissionPack(target = null) { + const actor = await this.#resolveMissionPackActor(target); + if (!actor) { + ui.notifications.warn(game.i18n.localize("DNC.Macro.MissionPack.WarnNoActor")); + return null; + } + + if (actor.type !== "employe") { + ui.notifications.warn(game.i18n.localize("DNC.Macro.MissionPack.WarnInvalidActor")); + return null; + } + + const draws = []; + const embeddedItems = []; + let missingCount = 0; + + for (const spec of this.MISSION_PACK_TABLES) { + const table = await this.#findRollTableByName(spec.name); + if (!table) { + draws.push({ + label: this.#getMissionPackLabel(spec.key), + display: game.i18n.format("DNC.Macro.MissionPack.TableMissing", { table: spec.name }), + addedNames: [], + addedSummary: "", + missingNames: [], + missingSummary: "", + failed: true + }); + continue; + } + + const draw = await table.draw({ displayChat: false }); + const result = draw.results?.[0] ?? null; + const resolved = await this.#resolveTableResultEntries(result, { multiple: spec.multiple }); + const addedNames = []; + const missingNames = []; + + for (const entry of resolved.entries) { + const item = entry.document ?? await this.#findItemByName(entry.name); + if (!item) { + missingNames.push(entry.name); + missingCount += 1; + continue; + } + + embeddedItems.push(this.#toEmbeddedItemData(item)); + addedNames.push(item.name); + } + + draws.push({ + label: this.#getMissionPackLabel(spec.key), + display: resolved.display || game.i18n.localize("DNC.Macro.MissionPack.NoResult"), + addedNames, + addedSummary: addedNames.join(", "), + missingNames, + missingSummary: missingNames.join(", "), + failed: false + }); + } + + const createdItems = embeddedItems.length + ? await actor.createEmbeddedDocuments("Item", embeddedItems, { renderSheet: false }) + : []; + + const content = await foundry.applications.handlebars.renderTemplate( + "systems/fvtt-donjon-et-cie/templates/chat/mission-pack-card.hbs", + { + title: game.i18n.localize("DNC.Macro.MissionPack.Title"), + actorName: actor.name, + createdCount: createdItems.length, + missingCount, + draws + } + ); + + await ChatMessage.create({ + speaker: ChatMessage.getSpeaker({ actor }), + user: game.user.id, + content + }); + + if (createdItems.length && !missingCount) { + ui.notifications.info(game.i18n.format("DNC.Macro.MissionPack.Success", { + actor: actor.name, + count: createdItems.length + })); + } else if (createdItems.length) { + ui.notifications.warn(game.i18n.format("DNC.Macro.MissionPack.Partial", { + actor: actor.name, + count: createdItems.length, + missing: missingCount + })); + } else { + ui.notifications.warn(game.i18n.localize("DNC.Macro.MissionPack.WarnNothingAdded")); + } + + return { + actor, + createdItems, + missingCount, + draws + }; + } +} diff --git a/modules/donjon-et-cie-main.mjs b/modules/donjon-et-cie-main.mjs index ef0ff0b..ec65bce 100644 --- a/modules/donjon-et-cie-main.mjs +++ b/modules/donjon-et-cie-main.mjs @@ -19,6 +19,31 @@ import * as models from "./models/index.mjs"; import * as sheets from "./applications/sheets/_module.mjs"; import { DonjonEtCieRollDialog } from "./applications/donjon-et-cie-roll-dialog.mjs"; import { DonjonEtCieRolls } from "./donjon-et-cie-rolls.mjs"; +import { DonjonEtCieMacros } from "./donjon-et-cie-macros.mjs"; + +const WELCOME_MESSAGE_SETTING = "welcomeMessageVersion"; + +function injectActorDirectoryMissionPackButton(app, element) { + if (!game.user.isGM) return; + + const root = app?.element ?? element?.[0] ?? element; + if (!(root instanceof HTMLElement)) return; + + const headerActions = root.querySelector(".directory-header .header-actions"); + if (!(headerActions instanceof HTMLElement)) return; + if (headerActions.querySelector(".dnc-mission-pack-button")) return; + + const button = document.createElement("button"); + button.type = "button"; + button.className = "dnc-mission-pack-button"; + button.title = game.i18n.localize("DNC.Macro.MissionPack.SidebarButton"); + button.setAttribute("aria-label", game.i18n.localize("DNC.Macro.MissionPack.SidebarButton")); + button.innerHTML = `${game.i18n.localize("DNC.Macro.MissionPack.SidebarButton")}`; + button.addEventListener("click", () => { + void game.system.donjonEtCie.macros.openMissionPackDialog(); + }); + headerActions.append(button); +} function onChatActionClick(event) { const button = event.target.closest("[data-action='rollChatDamage'], [data-action='rollSpellChaos'], [data-action='applyDamage']"); @@ -64,6 +89,73 @@ function onChatActionClick(event) { })(); } +function registerSystemSettings() { + game.settings.register("fvtt-donjon-et-cie", WELCOME_MESSAGE_SETTING, { + name: "Version du message de bienvenue", + hint: "Usage interne pour eviter de republier le message de bienvenue a chaque chargement.", + scope: "world", + config: false, + type: String, + default: "" + }); +} + +async function getHelpJournalLink() { + const pack = [...game.packs.values()].find((candidate) => candidate.metadata.name === "system-help"); + if (!pack) return null; + + const index = await pack.getIndex(); + const entry = index.find((document) => document.name === "Aide du systeme"); + if (!entry?._id) return null; + + const journal = await pack.getDocument(entry._id); + if (!journal?.uuid) return null; + + return `@UUID[${journal.uuid}]{${game.i18n.localize("DNC.Welcome.HelpLinkLabel")}}`; +} + +async function maybeCreateWelcomeMessage() { + if (!game.user.isGM) return; + + const currentVersion = String(game.system.version ?? ""); + const shownVersion = String(game.settings.get("fvtt-donjon-et-cie", WELCOME_MESSAGE_SETTING) ?? ""); + if (shownVersion === currentVersion) return; + + const helpJournalLink = await getHelpJournalLink(); + const content = await foundry.applications.handlebars.renderTemplate( + "systems/fvtt-donjon-et-cie/templates/chat/welcome-card.hbs", + { + title: game.i18n.localize("DNC.Welcome.Title"), + subtitle: game.i18n.format("DNC.Welcome.Subtitle", { version: currentVersion }), + intro: game.i18n.localize("DNC.Welcome.Intro"), + bullets: [ + game.i18n.localize("DNC.Welcome.BulletActors"), + game.i18n.localize("DNC.Welcome.BulletItems"), + game.i18n.localize("DNC.Welcome.BulletMissionPack") + ], + helpLabel: game.i18n.localize("DNC.Welcome.HelpLabel"), + helpLink: helpJournalLink, + helpFallback: game.i18n.localize("DNC.Welcome.HelpFallback"), + footer: game.i18n.localize("DNC.Welcome.Footer"), + creditsLabel: game.i18n.localize("DNC.Welcome.CreditsLabel"), + creditsText: game.i18n.localize("DNC.Welcome.CreditsText"), + officialLabel: game.i18n.localize("DNC.Welcome.OfficialLabel"), + officialUrl: "https://johndoe-rpg.com/catalogue/donjon-cie/", + officialLinkText: game.i18n.localize("DNC.Welcome.OfficialLinkText") + } + ); + + await ChatMessage.create({ + speaker: { + alias: game.system.title + }, + user: game.user.id, + content: await TextEditor.enrichHTML(content, { async: true }) + }); + + await game.settings.set("fvtt-donjon-et-cie", WELCOME_MESSAGE_SETTING, currentVersion); +} + Hooks.once("init", async () => { const startupBanner = `▗▄▄▄ ▗▄▖ ▗▖ ▗▖ ▗▖ ▗▄▖ ▗▖ ▗▖ ▗▄▄▄▖▗▄▄▄▖ ▗▄▄▖▗▄▄▄▖▗▞▀▚▖ @@ -75,6 +167,7 @@ Hooks.once("init", async () => { console.log(`%c${startupBanner}`, "font-family: monospace; white-space: pre; line-height: 1.1;"); console.log("Initialisation du systeme Donjon & Cie"); + registerSystemSettings(); await DonjonEtCieUtility.preloadHandlebarsTemplates(); CONFIG.Combat.initiative = { @@ -107,7 +200,8 @@ Hooks.once("init", async () => { sheets, rolls: DonjonEtCieRolls, dialogs: DonjonEtCieRollDialog, - utility: DonjonEtCieUtility + utility: DonjonEtCieUtility, + macros: DonjonEtCieMacros }; foundry.documents.collections.Actors.unregisterSheet("core", foundry.appv1.sheets.ActorSheet); @@ -122,4 +216,9 @@ Hooks.once("init", async () => { Hooks.once("ready", () => { document.addEventListener("click", onChatActionClick); + void maybeCreateWelcomeMessage(); +}); + +Hooks.on("renderActorDirectory", (app, element) => { + injectActorDirectoryMissionPackButton(app, element); }); diff --git a/modules/donjon-et-cie-utility.mjs b/modules/donjon-et-cie-utility.mjs index 1737b41..13ce90a 100644 --- a/modules/donjon-et-cie-utility.mjs +++ b/modules/donjon-et-cie-utility.mjs @@ -34,6 +34,7 @@ export class DonjonEtCieUtility { "systems/fvtt-donjon-et-cie/templates/dialogs/damage-roll.hbs", "systems/fvtt-donjon-et-cie/templates/dialogs/spell-roll.hbs", "systems/fvtt-donjon-et-cie/templates/dialogs/usage-roll.hbs", + "systems/fvtt-donjon-et-cie/templates/dialogs/mission-pack-dialog.hbs", "systems/fvtt-donjon-et-cie/templates/chat/roll-card.hbs", "systems/fvtt-donjon-et-cie/templates/chat/spell-card.hbs", "systems/fvtt-donjon-et-cie/templates/chat/chaos-card.hbs", @@ -43,7 +44,9 @@ export class DonjonEtCieUtility { "systems/fvtt-donjon-et-cie/templates/chat/favor-card.hbs", "systems/fvtt-donjon-et-cie/templates/chat/initiative-card.hbs", "systems/fvtt-donjon-et-cie/templates/chat/usage-card.hbs", - "systems/fvtt-donjon-et-cie/templates/chat/item-card.hbs" + "systems/fvtt-donjon-et-cie/templates/chat/item-card.hbs", + "systems/fvtt-donjon-et-cie/templates/chat/mission-pack-card.hbs", + "systems/fvtt-donjon-et-cie/templates/chat/welcome-card.hbs" ]); } diff --git a/package-lock.json b/package-lock.json index d3f9afa..7003ecd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,12 +9,165 @@ "version": "0.1.0", "license": "UNLICENSED", "devDependencies": { + "@foundryvtt/foundryvtt-cli": "^1.1.0", "gulp": "^4.0.2", "gulp-less": "^5.0.0", "gulp-rename": "^2.0.0", "gulp-sourcemaps": "^3.0.0" } }, + "node_modules/@foundryvtt/foundryvtt-cli": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@foundryvtt/foundryvtt-cli/-/foundryvtt-cli-1.1.0.tgz", + "integrity": "sha512-ergKZDUSgQ79168r38ORyN4v/UTliA40rxElaUh5iS27Qw9H8Ep/ll8j3/HfiikO3XUDwYxZLfDJfbcyj2i9TQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.4.1", + "classic-level": "^1.4.1", + "esm": "^3.2.25", + "js-yaml": "^4.1.0", + "mkdirp": "^3.0.1", + "nedb-promises": "^6.2.3", + "yargs": "^17.7.2" + }, + "bin": { + "fvtt": "fvtt.mjs" + }, + "engines": { + "node": ">17.0.0" + } + }, + "node_modules/@foundryvtt/foundryvtt-cli/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@foundryvtt/foundryvtt-cli/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@foundryvtt/foundryvtt-cli/node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/@foundryvtt/foundryvtt-cli/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@foundryvtt/foundryvtt-cli/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@foundryvtt/foundryvtt-cli/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@foundryvtt/foundryvtt-cli/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@foundryvtt/foundryvtt-cli/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/@foundryvtt/foundryvtt-cli/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@foundryvtt/foundryvtt-cli/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/@gulp-sourcemaps/identity-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-2.0.1.tgz", @@ -81,6 +234,67 @@ "xtend": "~4.0.1" } }, + "node_modules/@seald-io/binary-search-tree": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@seald-io/binary-search-tree/-/binary-search-tree-1.0.3.tgz", + "integrity": "sha512-qv3jnwoakeax2razYaMsGI/luWdliBLHTdC6jU55hQt1hcFqzauH/HsBollQ7IR4ySTtYhT+xyHoijpA16C+tA==", + "dev": true + }, + "node_modules/@seald-io/nedb": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@seald-io/nedb/-/nedb-4.1.2.tgz", + "integrity": "sha512-bDr6TqjBVS2rDyYM9CPxAnotj5FuNL9NF8o7h7YyFXM7yruqT4ddr+PkSb2mJvvw991bqdftazkEo38gykvaww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@seald-io/binary-search-tree": "^1.0.3", + "localforage": "^1.10.0", + "util": "^0.12.5" + } + }, + "node_modules/abstract-level": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.4.tgz", + "integrity": "sha512-eUP/6pbXBkMbXFdx4IH2fVgvB7M0JvR7/lIL33zcs0IBcwjdzSSl31TOJsaCzmKSSDF9h8QYSOJux4Nd4YJqFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^6.0.3", + "catering": "^2.1.0", + "is-buffer": "^2.0.5", + "level-supports": "^4.0.0", + "level-transcoder": "^1.0.1", + "module-error": "^1.0.1", + "queue-microtask": "^1.2.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/abstract-level/node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/acorn": { "version": "6.4.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", @@ -130,6 +344,22 @@ "node": ">=0.10.0" } }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/ansi-wrap": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", @@ -184,6 +414,13 @@ "dev": true, "license": "MIT" }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, "node_modules/arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", @@ -397,6 +634,22 @@ "node": ">= 4.5.0" } }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/bach": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", @@ -457,6 +710,27 @@ "node": ">=0.10.0" } }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/binary-extensions": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", @@ -511,6 +785,31 @@ "node": ">=0.10.0" } }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "node_modules/buffer-equal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", @@ -612,6 +911,29 @@ "node": ">=0.10.0" } }, + "node_modules/catering": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz", + "integrity": "sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/chokidar": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", @@ -678,6 +1000,24 @@ "node": ">= 0.4" } }, + "node_modules/classic-level": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/classic-level/-/classic-level-1.4.1.tgz", + "integrity": "sha512-qGx/KJl3bvtOHrGau2WklEZuXhS3zme+jf+fsu6Ej7W7IP/C49v7KNlWIsT1jZu0YnfzSIYDGcEWpCa1wKGWXQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "abstract-level": "^1.0.2", + "catering": "^2.1.0", + "module-error": "^1.0.1", + "napi-macros": "^2.2.2", + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", @@ -768,6 +1108,26 @@ "node": ">=0.10.0" } }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, "node_modules/color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", @@ -1075,6 +1435,13 @@ "node": ">=0.10.0" } }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, "node_modules/end-of-stream": { "version": "1.4.5", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", @@ -1198,6 +1565,26 @@ "es6-symbol": "^3.1.1" } }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/esniff": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", @@ -1492,6 +1879,22 @@ "readable-stream": "^2.3.6" } }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -1590,6 +1993,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", @@ -1951,6 +2364,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -2040,6 +2469,27 @@ "node": ">=0.10.0" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, "node_modules/image-size": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", @@ -2054,6 +2504,13 @@ "node": ">=0.10.0" } }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "dev": true, + "license": "MIT" + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -2127,6 +2584,23 @@ "node": ">= 0.10" } }, + "node_modules/is-arguments": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -2154,6 +2628,19 @@ "dev": true, "license": "MIT" }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-core-module": { "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", @@ -2230,6 +2717,26 @@ "node": ">=0.10.0" } }, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -2296,6 +2803,25 @@ "dev": true, "license": "MIT" }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-relative": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", @@ -2309,6 +2835,22 @@ "node": ">=0.10.0" } }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-unc-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", @@ -2386,6 +2928,19 @@ "node": ">=0.10.0" } }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", @@ -2489,6 +3044,40 @@ "source-map": "~0.6.0" } }, + "node_modules/level-supports": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz", + "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/level-transcoder": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz", + "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^6.0.3", + "module-error": "^1.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, "node_modules/liftoff": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", @@ -2549,6 +3138,16 @@ "node": ">=0.10.0" } }, + "node_modules/localforage": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", + "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "lie": "3.1.1" + } + }, "node_modules/lru-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", @@ -2837,6 +3436,32 @@ "node": ">=0.10.0" } }, + "node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/module-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz", + "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -2935,6 +3560,23 @@ "node": ">=0.10.0" } }, + "node_modules/napi-macros": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz", + "integrity": "sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/nedb-promises": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/nedb-promises/-/nedb-promises-6.2.3.tgz", + "integrity": "sha512-enq0IjNyBz9Qy9W/QPCcLGh/QORGBjXbIeZeWvIjO3OMLyAvlKT3hiJubP2BKEiFniUlR3L01o18ktqgn5jxqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@seald-io/nedb": "^4.0.2" + } + }, "node_modules/needle": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/needle/-/needle-3.5.0.tgz", @@ -2960,6 +3602,18 @@ "dev": true, "license": "ISC" }, + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "dev": true, + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, "node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -3455,6 +4109,16 @@ "node": ">=0.10.0" } }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/postcss": { "version": "7.0.39", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", @@ -3521,6 +4185,27 @@ "pump": "^2.0.0" } }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -3840,6 +4525,24 @@ "ret": "~0.1.10" } }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -4727,6 +5430,20 @@ "node": ">=0.10.0" } }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -4908,6 +5625,28 @@ "dev": true, "license": "ISC" }, + "node_modules/which-typed-array": { + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", diff --git a/package.json b/package.json index 8e99469..7db76d6 100644 --- a/package.json +++ b/package.json @@ -4,11 +4,14 @@ "description": "Systeme FoundryVTT pour Donjon & Cie", "type": "module", "scripts": { - "build": "gulp build", - "watch": "gulp watch" + "build": "gulp build && npm run pack:compendiums", + "watch": "gulp watch", + "pack:compendiums": "node ./tools/packCompendiums.mjs", + "unpack:compendiums": "node ./tools/unpackCompendiums.mjs" }, "license": "UNLICENSED", "devDependencies": { + "@foundryvtt/foundryvtt-cli": "^1.1.0", "gulp": "^4.0.2", "gulp-less": "^5.0.0", "gulp-rename": "^2.0.0", diff --git a/packs/equipment/000039.ldb b/packs/equipment/000052.ldb similarity index 100% rename from packs/equipment/000039.ldb rename to packs/equipment/000052.ldb diff --git a/packs/equipment/000042.log b/packs/equipment/000055.log similarity index 100% rename from packs/equipment/000042.log rename to packs/equipment/000055.log diff --git a/packs/equipment/CURRENT b/packs/equipment/CURRENT index e2c0c4b..774dcea 100644 --- a/packs/equipment/CURRENT +++ b/packs/equipment/CURRENT @@ -1 +1 @@ -MANIFEST-000040 +MANIFEST-000053 diff --git a/packs/equipment/LOG b/packs/equipment/LOG index 29bd0fd..0c20d81 100644 --- a/packs/equipment/LOG +++ b/packs/equipment/LOG @@ -1,7 +1,7 @@ -2026/04/26-15:24:50.959107 7f57a5fef6c0 Recovering log #37 -2026/04/26-15:24:50.969309 7f57a5fef6c0 Delete type=3 #35 -2026/04/26-15:24:50.969397 7f57a5fef6c0 Delete type=0 #37 -2026/04/26-15:45:09.958844 7f57977fe6c0 Level-0 table #43: started -2026/04/26-15:45:09.959077 7f57977fe6c0 Level-0 table #43: 0 bytes OK -2026/04/26-15:45:09.966304 7f57977fe6c0 Delete type=0 #41 -2026/04/26-15:45:09.985022 7f57977fe6c0 Manual compaction at level-0 from '!folders!K9aiFu0dE6UYiXBd' @ 72057594037927935 : 1 .. '!items!zyqLzmpbHxK3jt5q' @ 0 : 0; will stop at (end) +2026/05/01-00:26:25.801692 7f3f34bfd6c0 Recovering log #50 +2026/05/01-00:26:25.812434 7f3f34bfd6c0 Delete type=3 #48 +2026/05/01-00:26:25.812516 7f3f34bfd6c0 Delete type=0 #50 +2026/05/01-00:36:27.689762 7f3ee77fe6c0 Level-0 table #56: started +2026/05/01-00:36:27.689836 7f3ee77fe6c0 Level-0 table #56: 0 bytes OK +2026/05/01-00:36:27.700959 7f3ee77fe6c0 Delete type=0 #54 +2026/05/01-00:36:27.721510 7f3ee77fe6c0 Manual compaction at level-0 from '!folders!K9aiFu0dE6UYiXBd' @ 72057594037927935 : 1 .. '!items!zyqLzmpbHxK3jt5q' @ 0 : 0; will stop at (end) diff --git a/packs/equipment/LOG.old b/packs/equipment/LOG.old index 2e2bea3..b078724 100644 --- a/packs/equipment/LOG.old +++ b/packs/equipment/LOG.old @@ -1,11 +1,11 @@ -2026/04/19-18:55:51.456726 7ff1abfff6c0 Delete type=3 #1 -2026/04/19-19:06:36.056435 7ff1a9ffb6c0 Level-0 table #38: started -2026/04/19-19:06:36.056473 7ff1a9ffb6c0 Level-0 table #38: 0 bytes OK -2026/04/19-19:06:36.063121 7ff1a9ffb6c0 Delete type=0 #36 -2026/04/19-19:06:36.069412 7ff1a9ffb6c0 Manual compaction at level-0 from '!folders!K9aiFu0dE6UYiXBd' @ 72057594037927935 : 1 .. '!items!zyqLzmpbHxK3jt5q' @ 0 : 0; will stop at '!items!zyqLzmpbHxK3jt5q' @ 188 : 1 -2026/04/19-19:06:36.069420 7ff1a9ffb6c0 Compacting 1@0 + 0@1 files -2026/04/19-19:06:36.073487 7ff1a9ffb6c0 Generated table #39@0: 189 keys, 41244 bytes -2026/04/19-19:06:36.073509 7ff1a9ffb6c0 Compacted 1@0 + 0@1 files => 41244 bytes -2026/04/19-19:06:36.079534 7ff1a9ffb6c0 compacted to: files[ 0 1 0 0 0 0 0 ] -2026/04/19-19:06:36.079617 7ff1a9ffb6c0 Delete type=2 #14 -2026/04/19-19:06:36.106853 7ff1a9ffb6c0 Manual compaction at level-0 from '!items!zyqLzmpbHxK3jt5q' @ 188 : 1 .. '!items!zyqLzmpbHxK3jt5q' @ 0 : 0; will stop at (end) +2026/05/01-00:23:37.118222 7f3ee7fff6c0 Delete type=3 #1 +2026/05/01-00:24:45.280116 7f3ee77fe6c0 Level-0 table #51: started +2026/05/01-00:24:45.280188 7f3ee77fe6c0 Level-0 table #51: 0 bytes OK +2026/05/01-00:24:45.287008 7f3ee77fe6c0 Delete type=0 #49 +2026/05/01-00:24:45.305825 7f3ee77fe6c0 Manual compaction at level-0 from '!folders!K9aiFu0dE6UYiXBd' @ 72057594037927935 : 1 .. '!items!zyqLzmpbHxK3jt5q' @ 0 : 0; will stop at '!items!zyqLzmpbHxK3jt5q' @ 188 : 1 +2026/05/01-00:24:45.305838 7f3ee77fe6c0 Compacting 1@0 + 0@1 files +2026/05/01-00:24:45.310327 7f3ee77fe6c0 Generated table #52@0: 189 keys, 41244 bytes +2026/05/01-00:24:45.310351 7f3ee77fe6c0 Compacted 1@0 + 0@1 files => 41244 bytes +2026/05/01-00:24:45.316310 7f3ee77fe6c0 compacted to: files[ 0 1 0 0 0 0 0 ] +2026/05/01-00:24:45.316584 7f3ee77fe6c0 Delete type=2 #39 +2026/05/01-00:24:45.327635 7f3ee77fe6c0 Manual compaction at level-0 from '!items!zyqLzmpbHxK3jt5q' @ 188 : 1 .. '!items!zyqLzmpbHxK3jt5q' @ 0 : 0; will stop at (end) diff --git a/packs/equipment/MANIFEST-000040 b/packs/equipment/MANIFEST-000040 deleted file mode 100644 index 2df8bb4..0000000 Binary files a/packs/equipment/MANIFEST-000040 and /dev/null differ diff --git a/packs/equipment/MANIFEST-000053 b/packs/equipment/MANIFEST-000053 new file mode 100644 index 0000000..d94e024 Binary files /dev/null and b/packs/equipment/MANIFEST-000053 differ diff --git a/packs/random-tables/000029.log b/packs/equipment/lost/000046.log similarity index 100% rename from packs/random-tables/000029.log rename to packs/equipment/lost/000046.log diff --git a/packs/random-tables/000026.ldb b/packs/random-tables/000039.ldb similarity index 100% rename from packs/random-tables/000026.ldb rename to packs/random-tables/000039.ldb diff --git a/packs/random-tables/000042.log b/packs/random-tables/000042.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/random-tables/CURRENT b/packs/random-tables/CURRENT index 3bf5164..e2c0c4b 100644 --- a/packs/random-tables/CURRENT +++ b/packs/random-tables/CURRENT @@ -1 +1 @@ -MANIFEST-000027 +MANIFEST-000040 diff --git a/packs/random-tables/LOG b/packs/random-tables/LOG index bf2ce2c..75e05e3 100644 --- a/packs/random-tables/LOG +++ b/packs/random-tables/LOG @@ -1,7 +1,7 @@ -2026/04/26-15:24:50.974308 7f57a57ee6c0 Recovering log #24 -2026/04/26-15:24:50.984638 7f57a57ee6c0 Delete type=3 #22 -2026/04/26-15:24:50.984738 7f57a57ee6c0 Delete type=0 #24 -2026/04/26-15:45:09.972734 7f57977fe6c0 Level-0 table #30: started -2026/04/26-15:45:09.972793 7f57977fe6c0 Level-0 table #30: 0 bytes OK -2026/04/26-15:45:09.978845 7f57977fe6c0 Delete type=0 #28 -2026/04/26-15:45:09.985047 7f57977fe6c0 Manual compaction at level-0 from '!tables!PPsxQgHwLCQ2gjSW' @ 72057594037927935 : 1 .. '!tables.results!wJZXUo4q5b5vE3Dy.zFTPLMc9zOl5hISV' @ 0 : 0; will stop at (end) +2026/05/01-00:26:25.815892 7f3f353fe6c0 Recovering log #37 +2026/05/01-00:26:25.826814 7f3f353fe6c0 Delete type=3 #35 +2026/05/01-00:26:25.826879 7f3f353fe6c0 Delete type=0 #37 +2026/05/01-00:36:27.711630 7f3ee77fe6c0 Level-0 table #43: started +2026/05/01-00:36:27.711673 7f3ee77fe6c0 Level-0 table #43: 0 bytes OK +2026/05/01-00:36:27.721272 7f3ee77fe6c0 Delete type=0 #41 +2026/05/01-00:36:27.721541 7f3ee77fe6c0 Manual compaction at level-0 from '!tables!PPsxQgHwLCQ2gjSW' @ 72057594037927935 : 1 .. '!tables.results!wJZXUo4q5b5vE3Dy.zFTPLMc9zOl5hISV' @ 0 : 0; will stop at (end) diff --git a/packs/random-tables/LOG.old b/packs/random-tables/LOG.old index 27d7878..9db0dd3 100644 --- a/packs/random-tables/LOG.old +++ b/packs/random-tables/LOG.old @@ -1,11 +1,11 @@ -2026/04/19-18:55:51.477710 7ff1abfff6c0 Delete type=3 #1 -2026/04/19-19:06:36.063191 7ff1a9ffb6c0 Level-0 table #25: started -2026/04/19-19:06:36.063213 7ff1a9ffb6c0 Level-0 table #25: 0 bytes OK -2026/04/19-19:06:36.069246 7ff1a9ffb6c0 Delete type=0 #23 -2026/04/19-19:06:36.079744 7ff1a9ffb6c0 Manual compaction at level-0 from '!tables!PPsxQgHwLCQ2gjSW' @ 72057594037927935 : 1 .. '!tables.results!wJZXUo4q5b5vE3Dy.zFTPLMc9zOl5hISV' @ 0 : 0; will stop at '!tables.results!wJZXUo4q5b5vE3Dy.zFTPLMc9zOl5hISV' @ 208 : 1 -2026/04/19-19:06:36.079754 7ff1a9ffb6c0 Compacting 1@0 + 0@1 files -2026/04/19-19:06:36.084239 7ff1a9ffb6c0 Generated table #26@0: 120 keys, 28120 bytes -2026/04/19-19:06:36.084267 7ff1a9ffb6c0 Compacted 1@0 + 0@1 files => 28120 bytes -2026/04/19-19:06:36.090555 7ff1a9ffb6c0 compacted to: files[ 0 1 0 0 0 0 0 ] -2026/04/19-19:06:36.090673 7ff1a9ffb6c0 Delete type=2 #5 -2026/04/19-19:06:36.106868 7ff1a9ffb6c0 Manual compaction at level-0 from '!tables.results!wJZXUo4q5b5vE3Dy.zFTPLMc9zOl5hISV' @ 208 : 1 .. '!tables.results!wJZXUo4q5b5vE3Dy.zFTPLMc9zOl5hISV' @ 0 : 0; will stop at (end) +2026/05/01-00:23:37.197888 7f3f353fe6c0 Delete type=3 #1 +2026/05/01-00:24:45.299410 7f3ee77fe6c0 Level-0 table #38: started +2026/05/01-00:24:45.299452 7f3ee77fe6c0 Level-0 table #38: 0 bytes OK +2026/05/01-00:24:45.305679 7f3ee77fe6c0 Delete type=0 #36 +2026/05/01-00:24:45.317087 7f3ee77fe6c0 Manual compaction at level-0 from '!tables!PPsxQgHwLCQ2gjSW' @ 72057594037927935 : 1 .. '!tables.results!wJZXUo4q5b5vE3Dy.zFTPLMc9zOl5hISV' @ 0 : 0; will stop at '!tables.results!wJZXUo4q5b5vE3Dy.zFTPLMc9zOl5hISV' @ 208 : 1 +2026/05/01-00:24:45.317098 7f3ee77fe6c0 Compacting 1@0 + 0@1 files +2026/05/01-00:24:45.321477 7f3ee77fe6c0 Generated table #39@0: 120 keys, 28120 bytes +2026/05/01-00:24:45.321513 7f3ee77fe6c0 Compacted 1@0 + 0@1 files => 28120 bytes +2026/05/01-00:24:45.327369 7f3ee77fe6c0 compacted to: files[ 0 1 0 0 0 0 0 ] +2026/05/01-00:24:45.327452 7f3ee77fe6c0 Delete type=2 #26 +2026/05/01-00:24:45.338220 7f3ee77fe6c0 Manual compaction at level-0 from '!tables.results!wJZXUo4q5b5vE3Dy.zFTPLMc9zOl5hISV' @ 208 : 1 .. '!tables.results!wJZXUo4q5b5vE3Dy.zFTPLMc9zOl5hISV' @ 0 : 0; will stop at (end) diff --git a/packs/random-tables/MANIFEST-000027 b/packs/random-tables/MANIFEST-000027 deleted file mode 100644 index 8e7e5aa..0000000 Binary files a/packs/random-tables/MANIFEST-000027 and /dev/null differ diff --git a/packs/random-tables/MANIFEST-000040 b/packs/random-tables/MANIFEST-000040 new file mode 100644 index 0000000..5db1532 Binary files /dev/null and b/packs/random-tables/MANIFEST-000040 differ diff --git a/packs/random-tables/lost/000033.log b/packs/random-tables/lost/000033.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/system-help/000024.log b/packs/system-help/000024.log new file mode 100644 index 0000000..e69de29 diff --git a/packs/system-help/CURRENT b/packs/system-help/CURRENT new file mode 100644 index 0000000..1a84852 --- /dev/null +++ b/packs/system-help/CURRENT @@ -0,0 +1 @@ +MANIFEST-000002 diff --git a/packs/system-help/LOCK b/packs/system-help/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/packs/system-help/LOG b/packs/system-help/LOG new file mode 100644 index 0000000..9dd04d9 --- /dev/null +++ b/packs/system-help/LOG @@ -0,0 +1,5 @@ +2026/05/01-00:35:09.714392 7fb5bbfff6c0 Delete type=3 #1 +2026/05/01-00:35:09.717944 7fb5baffd6c0 Level-0 table #5: started +2026/05/01-00:35:09.721749 7fb5baffd6c0 Level-0 table #5: 3056 bytes OK +2026/05/01-00:35:09.728545 7fb5baffd6c0 Delete type=0 #3 +2026/05/01-00:35:09.728707 7fb5baffd6c0 Manual compaction at level-0 from '!journal!69Da9YvF9BfOV7oK' @ 72057594037927935 : 1 .. '!journal.pages!69Da9YvF9BfOV7oK.XM0eLkgKXPyskV65' @ 0 : 0; will stop at (end) diff --git a/packs_src/system-help/JournalEntry_Aide_du_systeme_69Da9YvF9BfOV7oK.json b/packs_src/system-help/JournalEntry_Aide_du_systeme_69Da9YvF9BfOV7oK.json new file mode 100644 index 0000000..1a562d1 --- /dev/null +++ b/packs_src/system-help/JournalEntry_Aide_du_systeme_69Da9YvF9BfOV7oK.json @@ -0,0 +1,41 @@ +{ + "_id": "69Da9YvF9BfOV7oK", + "name": "Aide du systeme", + "folder": null, + "categories": [], + "sort": 0, + "_key": "!journal!69Da9YvF9BfOV7oK", + "ownership": { + "default": 0 + }, + "flags": {}, + "pages": [ + { + "_id": "XM0eLkgKXPyskV65", + "name": "Guide", + "type": "text", + "title": { + "show": true, + "level": 1 + }, + "text": { + "format": 1, + "content": "
\n

Donjon & Cie — Aide du systeme

\n

Ce journal presente les principaux ecrans et usages du systeme FoundryVTT pour Donjon & Cie. Il suit l'organisation du jeu : employes, PNJ, objets, ressources magiques, jets et outils MJ.

\n
\n
\n

1. Fiche Employe

\n

La fiche Employe regroupe les informations essentielles du personnage : concept, anciennete, DV, PV, attaques, caracteristiques et inventaire. Les trois onglets organisent le jeu en Combat & materiel, Magie & capacites et Profil & langues.

\n
    \n
  • DV et PV sont accessibles en haut de fiche.
  • \n
  • Les sections d'objets acceptent le glisser-deposer depuis le repertoire des items ou les compendiums.
  • \n
  • Les boutons d'action permettent de lancer un jet, les degats, ou publier un objet dans le chat.
  • \n
\n
\n \"Fiche\n
La fiche Employe centralise combat, equipement et ressources.
\n
\n
\n
\n

2. Magie, focus, chaos et capacites

\n

L'onglet Magie & capacites rassemble les ressources du lanceur de sorts :

\n
    \n
  • le Rang, le Focus et le Chaos ;
  • \n
  • la Table du Chaos pour resoudre rapidement les incidents magiques ;
  • \n
  • la liste des Sortileges, avec les Capacites affichees juste en dessous.
  • \n
\n

Les boutons de ligne permettent de lancer le sort, ses degats, ou de poster sa fiche dans le chat.

\n
\n \"Onglet\n
Les Capacites sont placees sous les Sortileges pour rester coherentes avec les regles et la lecture de fiche.
\n
\n
\n
\n

3. Fiche PNJ

\n

La fiche PNJ est optimisee pour le jeu rapide :

\n
    \n
  • valeurs de DV, PV, ARM et COU en acces direct ;
  • \n
  • liste d'attaques multiples editable ligne par ligne ;
  • \n
  • bouton de jet de degats sur chaque attaque.
  • \n
\n

Le layout favorise le nom de l'attaque, avec des tooltips sur les champs pour garder une interface compacte.

\n
\n \"Fiche\n
Un PNJ peut maintenant posseder plusieurs attaques distinctes.
\n
\n
\n
\n

4. Paquetage de mission

\n

Le MJ dispose d'un outil de Paquetage accessible depuis le haut du repertoire des acteurs. Il ouvre un dialogue permettant de choisir l'employe cible puis de lancer la dotation de debut de mission.

\n
    \n
  • Le systeme tire silencieusement sur les tables d'armes, armures et equipement divers.
  • \n
  • Les objets trouves sont ajoutes automatiquement a la fiche du personnage.
  • \n
  • Un message de synthese est publie dans le chat.
  • \n
\n
\n \"Dialogue\n
Le bouton Paquetage ouvre un dialogue MJ pour attribuer rapidement la dotation d'entree en mission.
\n
\n
\n
\n

5. Jets et messages de chat

\n

Les cartes de chat servent d'interface de resolution. On y retrouve selon les cas :

\n
    \n
  • les resultats de jets de caracteristique, d'attaque, de degats et de magie ;
  • \n
  • les usages de ressources a de d'usure ;
  • \n
  • les syntheses de paquetage et d'autres actions systeme.
  • \n
\n

Quand un objet ou une action propose un bouton Poster dans le chat, cela permet de partager proprement l'information avec la table sans ouvrir la fiche du document.

\n
\n
\n

6. Conseils d'utilisation

\n
    \n
  • Utilisez le glisser-deposer pour equiper rapidement un employe.
  • \n
  • Gardez les PNJ ouverts pendant les scenes pour acceder vite a leurs attaques et defenses.
  • \n
  • Le sidebar Acteurs concentre les outils MJ utiles, notamment le paquetage de mission.
  • \n
  • Les compendiums du systeme contiennent l'equipement et les tables aleatoires servant de base au jeu.
  • \n
\n
" + }, + "system": {}, + "image": {}, + "video": { + "controls": true, + "volume": 0.5 + }, + "src": null, + "category": null, + "sort": 0, + "ownership": { + "default": -1 + }, + "flags": {}, + "_key": "!journal.pages!69Da9YvF9BfOV7oK.XM0eLkgKXPyskV65" + } + ] +} diff --git a/styles/donjon-et-cie.css b/styles/donjon-et-cie.css index ecac8c1..d5e8b6d 100644 --- a/styles/donjon-et-cie.css +++ b/styles/donjon-et-cie.css @@ -863,6 +863,24 @@ .dnc-chat-card-favor { background: linear-gradient(180deg, rgba(248, 251, 255, 0.8) 0%, rgba(205, 220, 238, 0.94) 100%), linear-gradient(135deg, #f7fbff 0%, #9fb8d7 100%); } +.dnc-chat-card-welcome { + border-color: rgba(139, 46, 23, 0.34); + background: linear-gradient(180deg, rgba(255, 250, 240, 0.84) 0%, rgba(239, 219, 179, 0.94) 100%), linear-gradient(135deg, #fffaf0 0%, #dcb772 100%); +} +.chat-welcome-intro { + font-size: 0.82rem; + line-height: 1.45; +} +.chat-welcome-link { + margin-top: 0.75rem; + padding: 0.6rem 0.8rem; + border: 1px solid rgba(139, 46, 23, 0.24); + border-radius: 12px; + background: rgba(139, 46, 23, 0.08); +} +.chat-welcome-link a.content-link { + font-weight: 700; +} .dnc-chat-card-spell .chat-actions + .chat-actions { margin-top: 0.4rem; } diff --git a/styles/donjon-et-cie.css.map b/styles/donjon-et-cie.css.map index 127aa45..f9c2fe6 100644 --- a/styles/donjon-et-cie.css.map +++ b/styles/donjon-et-cie.css.map @@ -1 +1 @@ -{"version":3,"sources":["../variables.less","../base.less","../components.less","../actor-sheet.less","../item-sheet.less","../dialogs.less","../chat.less"],"names":[],"mappings":"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","file":"donjon-et-cie.css","sourcesContent":[]} \ No newline at end of file +{"version":3,"sources":["../variables.less","../base.less","../components.less","../actor-sheet.less","../item-sheet.less","../dialogs.less","../chat.less"],"names":[],"mappings":"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","file":"donjon-et-cie.css","sourcesContent":[]} \ No newline at end of file diff --git a/system.json b/system.json index 39560b5..375f571 100644 --- a/system.json +++ b/system.json @@ -52,6 +52,18 @@ "PLAYER": "OBSERVER", "ASSISTANT": "OWNER" } + }, + { + "type": "JournalEntry", + "label": "Aide du système", + "name": "system-help", + "path": "packs/system-help", + "system": "fvtt-donjon-et-cie", + "flags": {}, + "ownership": { + "PLAYER": "OBSERVER", + "ASSISTANT": "OWNER" + } } ], "documentTypes": { diff --git a/templates/chat/mission-pack-card.hbs b/templates/chat/mission-pack-card.hbs new file mode 100644 index 0000000..2ef6544 --- /dev/null +++ b/templates/chat/mission-pack-card.hbs @@ -0,0 +1,34 @@ +
+
+
+

{{localize "DNC.Chat.Kicker.Logistics"}}

+

{{title}}

+

{{actorName}}

+
+
+ {{createdCount}} +
+
+ +
+ {{localize "DNC.Macro.MissionPack.ItemsAdded"}} {{createdCount}} + {{#if missingCount}}{{localize "DNC.Macro.MissionPack.ItemsMissing"}} {{missingCount}}{{/if}} +
+ +

+ {{#if missingCount}} + {{localize "DNC.Macro.MissionPack.PartialChatSummary"}} + {{else}} + {{localize "DNC.Macro.MissionPack.CompleteChatSummary"}} + {{/if}} +

+ +
    + {{#each draws}} +
  • + {{this.label}} : {{this.display}} + {{#if this.missingSummary}}
    {{localize "DNC.Macro.MissionPack.Missing"}} : {{this.missingSummary}}{{/if}} +
  • + {{/each}} +
+
diff --git a/templates/chat/welcome-card.hbs b/templates/chat/welcome-card.hbs new file mode 100644 index 0000000..809e865 --- /dev/null +++ b/templates/chat/welcome-card.hbs @@ -0,0 +1,40 @@ +
+
+
+

{{localize "DNC.Welcome.Kicker"}}

+

{{title}}

+

{{subtitle}}

+
+
+ {{localize "DNC.Welcome.Seal"}} +
+
+ +

{{intro}}

+ +
    + {{#each bullets}} +
  • {{this}}
  • + {{/each}} +
+ + + +

+ {{creditsLabel}} {{creditsText}} +

+ +

+ {{officialLabel}} + {{officialLinkText}} +

+ +

{{footer}}

+
diff --git a/templates/dialogs/mission-pack-dialog.hbs b/templates/dialogs/mission-pack-dialog.hbs new file mode 100644 index 0000000..d4e7d21 --- /dev/null +++ b/templates/dialogs/mission-pack-dialog.hbs @@ -0,0 +1,9 @@ +
+

{{localize "DNC.Macro.MissionPack.DialogIntro"}}

+ +
diff --git a/tools/CompendiumsManager.mjs b/tools/CompendiumsManager.mjs new file mode 100644 index 0000000..72cf753 --- /dev/null +++ b/tools/CompendiumsManager.mjs @@ -0,0 +1,51 @@ +import { compilePack, extractPack } from "@foundryvtt/foundryvtt-cli"; +import { promises as fs } from "node:fs"; +import path from "node:path"; + +const ROOT_DIR = process.cwd(); + +export class CompendiumsManager { + static async packToDistDir(srcDir = "packs_src", distDir = "packs", mode = "json") { + const yaml = mode === "yaml"; + const packs = await fs.readdir(path.join(ROOT_DIR, srcDir)); + for (const pack of packs) { + if (pack.startsWith(".")) continue; + + const sourcePath = path.join(ROOT_DIR, srcDir, pack); + const targetPath = path.join(ROOT_DIR, distDir, pack); + await fs.rm(targetPath, { recursive: true, force: true }); + console.log(`Packing ${pack}`); + await compilePack(sourcePath, targetPath, { yaml }); + } + } + + static async unpackToSrcDir(srcDir = "packs_src", distDir = "packs", mode = "json") { + const yaml = mode === "yaml"; + const packs = await fs.readdir(path.join(ROOT_DIR, distDir)); + for (const pack of packs) { + if (pack.startsWith(".")) continue; + + const sourcePath = path.join(ROOT_DIR, distDir, pack); + const targetPath = path.join(ROOT_DIR, srcDir, pack); + await fs.mkdir(targetPath, { recursive: true }); + + const existingFiles = await fs.readdir(targetPath); + for (const file of existingFiles) { + await fs.unlink(path.join(targetPath, file)); + } + + console.log(`Unpacking ${pack}`); + await extractPack(sourcePath, targetPath, { + yaml, + transformName: (doc) => CompendiumsManager.transformName(doc, yaml) + }); + } + } + + static transformName(doc, yaml) { + const safeName = (doc.name ?? doc._id ?? "document").replace(/[^a-zA-Z0-9_-]+/g, "_"); + const type = doc._key?.split("!")[1] ?? doc.type ?? "document"; + const extension = yaml ? "yml" : "json"; + return `${type}_${safeName}_${doc._id}.${extension}`; + } +} diff --git a/tools/packCompendiums.mjs b/tools/packCompendiums.mjs new file mode 100644 index 0000000..ba9e417 --- /dev/null +++ b/tools/packCompendiums.mjs @@ -0,0 +1,3 @@ +import { CompendiumsManager } from "./CompendiumsManager.mjs"; + +await CompendiumsManager.packToDistDir(); diff --git a/tools/unpackCompendiums.mjs b/tools/unpackCompendiums.mjs new file mode 100644 index 0000000..8cb3660 --- /dev/null +++ b/tools/unpackCompendiums.mjs @@ -0,0 +1,3 @@ +import { CompendiumsManager } from "./CompendiumsManager.mjs"; + +await CompendiumsManager.unpackToSrcDir();