diff --git a/README.md b/README.md index f269d36..b9dbd08 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# The Mill's Fabula - v0.4.0 +# The Mill's Fabula - v0.3.3 This little [FoundryVTT](https://foundryvtt.com/) module is a collection of compendiums and functionalities to power our Fabula Ultima campaigns. @@ -51,14 +51,6 @@ for NPCs this is only done for PC tokens. - The current implementation relies on monkey patching, which make it vulnerable to compatibility issues with other modules manipulating the same methods. -## Fortune display - -In our game, "Fortune" is a key currency in the world. -This adds an interactible display in the character sheets, allowing it to be tracked, and in the party sheet, -for a nice overview. - -The value is stored in flags, and will not be lost when disabling the module or option. - # Compendia - The only thing in the compendium pack is a macro automating the tinkerer's alchemy potions, diff --git a/assets/fortune.png b/assets/fortune.png deleted file mode 100644 index 4d360b3..0000000 Binary files a/assets/fortune.png and /dev/null differ diff --git a/lang/en.json b/lang/en.json index 377da2d..a6a782c 100644 --- a/lang/en.json +++ b/lang/en.json @@ -25,15 +25,6 @@ "Hint": "Moves both attribute bars below the token, the nameplate above and, for PCs, the status icons to the right." } } - }, - "Fortune": { - "Name": "Fortune", - "Settings": { - "DisplayEnabled": { - "Name": "Fortune display", - "Hint": "Display and track \"Fortune\" currency in the character and party sheets." - } - } } } } diff --git a/lang/fr.json b/lang/fr.json index b8280a5..3630ef7 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -25,15 +25,6 @@ "Hint": "Déplace les barres d'attributs sous le token, le nom au dessus et, pour les PJs, les indicateurs de statut à droite." } } - }, - "Fortune": { - "Name": "Fortune", - "Settings": { - "DisplayEnabled": { - "Name": "Affichage de la Fortune", - "Hint": "Affiche et gère une monnaie, la \"Fortune\", dans les fiches de personnage et de groupe." - } - } } } } diff --git a/module.json b/module.json index fbe6c83..9531077 100644 --- a/module.json +++ b/module.json @@ -2,7 +2,7 @@ "id": "the-mills-fabula", "title": "Fabula Moletrina", "description": "A module implementing our idiosyncratic ideas for the Mill's campaigns.", - "version": "0.4.0", + "version": "0.3.3", "compatibility": { "minimum": "12", "verified": "12", @@ -55,11 +55,7 @@ ], "esmodules": [ "scripts/token_combat_border.mjs", - "scripts/token_ui_adjust.mjs", - "scripts/fortune_integration.mjs" - ], - "styles": [ - "styles/mills_fabula.css" + "scripts/token_ui_adjust.mjs" ], "socket": true, @@ -90,5 +86,5 @@ "readme": "README.md", "url": "https://git.tfk-astrodome.net/trotFunky/TheMillsFabula/src/branch/release", "manifest": "https://git.tfk-astrodome.net/trotFunky/TheMillsFabula/raw/branch/release/module.json", - "download": "https://git.tfk-astrodome.net/trotFunky/TheMillsFabula/archive/v0.4.0.zip" + "download": "https://git.tfk-astrodome.net/trotFunky/TheMillsFabula/archive/v0.3.3.zip" } diff --git a/scripts/fortune_integration.mjs b/scripts/fortune_integration.mjs deleted file mode 100644 index dc92409..0000000 --- a/scripts/fortune_integration.mjs +++ /dev/null @@ -1,118 +0,0 @@ -import * as MillsFabula from "./mills_fabula.mjs"; - -const fortune_flag = "char_fortune" - -const FortuneSettings = Object.freeze({ - EnableFortuneDisplay: "enableFortuneDisplay", -}) - -/** - * Find all the characters in the group sheet and insert their Fortune amount - * within the resources, copying the system's style. - * @param {DocumentSheet|foundry.applications.api.DocumentSheetV2} app The source Application - * @param {HTMLElement} html The rendered HTML - * @returns {Promise} Does not return - */ -async function party_sheet_fortune(app, html) { - if (!(app instanceof foundry.applications.api.DocumentSheetV2)) - html = html[0] /* Retrieve the internal DOM element */ - else - console.warn("AppV2 is not properly tested yet") - - let character_divs = html.querySelectorAll(".section-container.plate.character") - for (let char_div of character_divs) { - /** @type{FUActor} */ - let actor = await fromUuid(char_div.getAttribute("data-uuid")) - let resources = char_div.getElementsByClassName("resources")[0] - let icon = document.createElement("i"); - icon.classList.add("fuk", "icon-aff", "mf-fortune") - icon.setAttribute("data-tooltip", game.i18n.localize('MF.Fortune.Name')) - - /* Insert the Fortune elements before Fabula points, so find it */ - let fp_icon = resources.getElementsByClassName("fu-fp")[0] - resources.insertBefore(icon, fp_icon) - /* The system also has whitespace for spacing */ - resources.insertBefore( - document.createTextNode(` ${actor.getFlag(MillsFabula.id, fortune_flag) ?? 0} `), - fp_icon) - } -} - -/** - * Insert a Fortune input at the top of the character sheet, - * following the same styling as the system for Fabula points. - * @param {DocumentSheet|foundry.applications.api.DocumentSheetV2} app The source Application - * @param {HTMLElement} html The rendered HTML - */ -function character_sheet_fortune(app, html) { - /* Only player characters have Fortune. */ - if (app.actor.type !== "character") - return - - if (!(app instanceof foundry.applications.api.DocumentSheetV2)) - html = html[0] /* Retrieve the internal DOM element */ - else - console.warn("AppV2 is not properly tested yet") - - let resources_div = html.getElementsByClassName("header-center")[0].lastElementChild - resources_div.classList.replace("grid-3col", "grid-4col") - - /* - * We want the Fortune to have the same importance/weight as Fabula points, - * so we'll copy the style and bundle them in a 2 column div. - */ - /* TODO: This all should probably be some form of template ? */ - let fortune_fabula_div = document.createElement("div") - fortune_fabula_div.classList.add("grid", "grid-2col") - - let fortune_div = document.createElement("div") - fortune_div.classList.add("flex-group-center", "resource-content") - let fortune_label = document.createElement("span") - fortune_label.classList.add("resource-label-l") - let fortune_icon = document.createElement("i") - fortune_icon.classList.add("fas", "fa-leaf", "icon") - fortune_label.appendChild(fortune_icon) - fortune_label.appendChild(document.createTextNode(game.i18n.localize('MF.Fortune.Name'))) - fortune_div.appendChild(fortune_label) - let fortune_data_div = document.createElement("div") - fortune_data_div.classList.add("buttons-inc") - let fortune_input = foundry.applications.fields.createNumberInput({ - /* - * By setting the name of the field using this format, the backing - * flag will automatically be picked up by Foundry's code and updated - * when the field is changed on the sheet. - * This works even if it wasn't set previously ! - */ - name: `flags.${MillsFabula.id}.${fortune_flag}`, - value: app.document.getFlag(MillsFabula.id, fortune_flag) ?? 0, - step: 1, - min: 0, - type: "number" - }) - fortune_input.classList.add("fp-resource-inputs") - fortune_data_div.appendChild(fortune_input) - fortune_div.appendChild(fortune_data_div) - - fortune_fabula_div.appendChild(fortune_div) - /* The last element should always be the Fabula Points div. */ - fortune_fabula_div.appendChild(resources_div.lastElementChild) - - resources_div.appendChild(fortune_fabula_div) -} - -Hooks.once("init", () => { - game.settings.register(MillsFabula.id, FortuneSettings.EnableFortuneDisplay, { - name: game.i18n.localize('MF.Fortune.Settings.DisplayEnabled.Name'), - hint: game.i18n.localize('MF.Fortune.Settings.DisplayEnabled.Hint'), - type: Boolean, - config: true, - scope: 'world', - requiresReload: true, - default: true - }); - - if (game.settings.get(MillsFabula.id, FortuneSettings.EnableFortuneDisplay)) { - Hooks.on("renderFUPartySheet", party_sheet_fortune) - Hooks.on("renderFUStandardActorSheet", character_sheet_fortune) - } -}) diff --git a/styles/mills_fabula.css b/styles/mills_fabula.css deleted file mode 100644 index 6ea8d11..0000000 --- a/styles/mills_fabula.css +++ /dev/null @@ -1,3 +0,0 @@ -.mf-fortune { - background-image: url("/modules/the-mills-fabula/assets/fortune.png"); -}