From 668baa10e30627300ad024b726e90fe89e96a44d Mon Sep 17 00:00:00 2001 From: Prototype Date: Wed, 10 Dec 2025 10:34:17 -0700 Subject: [PATCH 1/2] Adds Shadowdark RPG support --- src/module/providers/_module.js | 1 + src/module/providers/shadowdark.js | 96 ++++++++++++++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 src/module/providers/shadowdark.js diff --git a/src/module/providers/_module.js b/src/module/providers/_module.js index 9a1fe3b..ce1185d 100644 --- a/src/module/providers/_module.js +++ b/src/module/providers/_module.js @@ -22,6 +22,7 @@ export { default as oseLanguageProvider } from "./ose.js"; export { default as pf1LanguageProvider } from "./pf1.js"; export { default as pf2eLanguageProvider } from "./pf2e.js"; export { default as sfrpgLanguageProvider } from "./sfrpg.js"; +export { default as shadowdarkLanguageProvider } from "./shadowdark.js"; export { default as shadowrun5eLanguageProvider } from "./shadowrun5e.js"; export { default as splittermondLanguageProvider } from "./splittermond.js"; export { default as sw5eLanguageProvider } from "./sw5e.js"; diff --git a/src/module/providers/shadowdark.js b/src/module/providers/shadowdark.js new file mode 100644 index 0000000..1c86fc0 --- /dev/null +++ b/src/module/providers/shadowdark.js @@ -0,0 +1,96 @@ +import LanguageProvider from "./templates/Base.js"; + +export default class shadowdarkLanguageProvider extends LanguageProvider { + languages = { + celestial: { + label: "Celestial", + font: "Celestial", + }, + common: { + label: "Common", + font: "Thorass", + }, + diabolic: { + label: "Diabolic", + font: "Barazhad", + }, + draconic: { + label: "Draconic", + font: "Dragon Alphabet", + }, + dwarvish: { + label: "Dwarvish", + font: "Floki", + }, + elvish: { + label: "Elvish", + font: "Espruar", + }, + giant: { + label: "Giant", + font: "Davek", + }, + goblin: { + label: "Goblin", + font: "Iokharic", + }, + merran: { + label: "Merran", + font: "High Drowic", + }, + orcish: { + label: "Orcish", + font: "Dethek", + }, + primordial: { + label: "Primordial", + font: "Infernal", + }, + reptilian: { + label: "Reptilian", + font: "Thassilonian", + }, + sylvan: { + label: "Sylvan", + font: "Rellanic", + }, + thanian: { + label: "Thanian", + font: "Olde Thorass", + }, + }; + + async getLanguages() { + if (this.replaceLanguages) { + this.languages = {}; + return; + } + const languagesSetting = game.settings.get("polyglot", "Languages"); + const languages = await shadowdark.compendiums.languages(); + languages.map((i) => i.name).forEach((lang) => { + const langIndex = lang.slugify(); + this.languages[langIndex] = { + label: lang, + font: languagesSetting[langIndex]?.font || this.languages[langIndex]?.font || this.defaultFont, + rng: languagesSetting[langIndex]?.rng ?? "default", + }; + }); + } + + getUserLanguages(actor) { + let knownLanguages = new Set(); + let literateLanguages = new Set(); + const actorLanguages = actor.system?.languages; + if (actorLanguages) { + for (let lang of actorLanguages) { + let langObj = fromUuidSync(lang); + knownLanguages.add(langObj.name.slugify()); + } + } + return [knownLanguages, literateLanguages]; + } + + getSystemDefaultLanguage() { + return "common"; + } +} From a7b4be891dfaf3bf64db35e800a412c008a71dbc Mon Sep 17 00:00:00 2001 From: Prototype Date: Wed, 10 Dec 2025 14:15:43 -0700 Subject: [PATCH 2/2] Fixed compendium loading issue --- src/module/providers/shadowdark.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/module/providers/shadowdark.js b/src/module/providers/shadowdark.js index 1c86fc0..82a1134 100644 --- a/src/module/providers/shadowdark.js +++ b/src/module/providers/shadowdark.js @@ -60,12 +60,16 @@ export default class shadowdarkLanguageProvider extends LanguageProvider { }, }; + // required to load compendium languages + requiresReady = true; + async getLanguages() { if (this.replaceLanguages) { this.languages = {}; return; } const languagesSetting = game.settings.get("polyglot", "Languages"); + // eslint-disable-next-line no-undef const languages = await shadowdark.compendiums.languages(); languages.map((i) => i.name).forEach((lang) => { const langIndex = lang.slugify(); @@ -83,6 +87,7 @@ export default class shadowdarkLanguageProvider extends LanguageProvider { const actorLanguages = actor.system?.languages; if (actorLanguages) { for (let lang of actorLanguages) { + // eslint-disable-next-line no-undef let langObj = fromUuidSync(lang); knownLanguages.add(langObj.name.slugify()); }