modwright 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +35 -0
- package/README.md +212 -0
- package/assets/claude/agents/mw-explore.md +46 -0
- package/assets/claude/agents/mw-fixture.md +33 -0
- package/assets/claude/agents/mw-rule-author.md +51 -0
- package/assets/claude/agents/mw-scaffold-author.md +48 -0
- package/assets/claude/skills/mw-author.md +59 -0
- package/assets/claude/skills/mw-new-item.md +51 -0
- package/assets/claude/skills/mw-new-spell.md +50 -0
- package/assets/claude/skills/mw-scaffold.md +59 -0
- package/assets/claude/skills/mw-ship.md +57 -0
- package/assets/claude/skills/mw-validate.md +51 -0
- package/assets/claude/skills/mw-verify.md +59 -0
- package/assets/nivalisnights/extract_resources.py +177 -0
- package/bridges/bg3-se/Mods/ModWrightBridge/ScriptExtender/Config.json +5 -0
- package/bridges/bg3-se/Mods/ModWrightBridge/ScriptExtender/Lua/BootstrapClient.lua +55 -0
- package/bridges/bg3-se/Mods/ModWrightBridge/ScriptExtender/Lua/BootstrapServer.lua +81 -0
- package/bridges/bg3-se/Mods/ModWrightBridge/ScriptExtender/Lua/ModWrightBridge/Log.lua +96 -0
- package/bridges/bg3-se/Mods/ModWrightBridge/ScriptExtender/Lua/ModWrightBridge/Probes.lua +1038 -0
- package/bridges/bg3-se/Mods/ModWrightBridge/ScriptExtender/Lua/ModWrightBridge/ProbesClient.lua +74 -0
- package/bridges/bg3-se/Mods/ModWrightBridge/ScriptExtender/Lua/ModWrightBridge/Protocol.lua +985 -0
- package/bridges/bg3-se/Mods/ModWrightBridge/ScriptExtender/Lua/ModWrightBridge/Watch.lua +175 -0
- package/bridges/bg3-se/Mods/ModWrightBridge/meta.lsx +45 -0
- package/bridges/bg3-se/README.md +99 -0
- package/bridges/bg3-se/bridge.json +68 -0
- package/bridges/cp2077-cet/ModWrightBridge/init.lua +375 -0
- package/bridges/cp2077-cet/ModWrightBridge/probes.lua +1104 -0
- package/bridges/cp2077-cet/ModWrightBridge/protocol.lua +1306 -0
- package/bridges/cp2077-cet/README.md +165 -0
- package/bridges/cp2077-cet/bridge.json +53 -0
- package/dist/core/bridge/arm.js +175 -0
- package/dist/core/bridge/cet-console.js +26 -0
- package/dist/core/bridge/cet-log.js +362 -0
- package/dist/core/bridge/index.js +11 -0
- package/dist/core/bridge/locate.js +35 -0
- package/dist/core/bridge/paths.js +34 -0
- package/dist/core/bridge/pending.js +89 -0
- package/dist/core/bridge/poll.js +155 -0
- package/dist/core/bridge/stage.js +100 -0
- package/dist/core/bridge/status.js +97 -0
- package/dist/core/bridge/types.js +145 -0
- package/dist/core/bridge/validate.js +107 -0
- package/dist/core/build/index.js +6 -0
- package/dist/core/build/manifest.js +47 -0
- package/dist/core/build/paths.js +32 -0
- package/dist/core/build/run.js +342 -0
- package/dist/core/build/stage.js +265 -0
- package/dist/core/build/steps/bg3.js +129 -0
- package/dist/core/build/steps/core.js +195 -0
- package/dist/core/build/steps/cyberpunk.js +95 -0
- package/dist/core/build/steps/listing.js +35 -0
- package/dist/core/build/types.js +13 -0
- package/dist/core/build/zip.js +148 -0
- package/dist/core/compat/check.js +113 -0
- package/dist/core/compat/pe.js +220 -0
- package/dist/core/compat/types.js +1 -0
- package/dist/core/compat/version.js +70 -0
- package/dist/core/deploy/guards.js +292 -0
- package/dist/core/deploy/index.js +5 -0
- package/dist/core/deploy/plan.js +696 -0
- package/dist/core/deploy/reload-apply.js +361 -0
- package/dist/core/deploy/reload.js +358 -0
- package/dist/core/deploy/sources.js +169 -0
- package/dist/core/deploy/types.js +1 -0
- package/dist/core/epic.js +54 -0
- package/dist/core/fsutil.js +191 -0
- package/dist/core/home.js +70 -0
- package/dist/core/knowledge/facts.js +229 -0
- package/dist/core/knowledge/index.js +4 -0
- package/dist/core/knowledge/search.js +112 -0
- package/dist/core/knowledge/store.js +123 -0
- package/dist/core/knowledge/types.js +1 -0
- package/dist/core/ledger/check.js +42 -0
- package/dist/core/ledger/hooks.js +80 -0
- package/dist/core/ledger/index.js +7 -0
- package/dist/core/ledger/query.js +17 -0
- package/dist/core/ledger/record.js +84 -0
- package/dist/core/ledger/status.js +53 -0
- package/dist/core/ledger/store.js +98 -0
- package/dist/core/ledger/types.js +108 -0
- package/dist/core/logs/index.js +4 -0
- package/dist/core/logs/registry.js +50 -0
- package/dist/core/logs/scan.js +195 -0
- package/dist/core/logs/triage.js +160 -0
- package/dist/core/logs/types.js +1 -0
- package/dist/core/lsx.js +10 -0
- package/dist/core/lz4.js +66 -0
- package/dist/core/mods.js +229 -0
- package/dist/core/process.js +49 -0
- package/dist/core/project/build-steps.js +83 -0
- package/dist/core/project/describe.js +74 -0
- package/dist/core/project/index.js +5 -0
- package/dist/core/project/load.js +146 -0
- package/dist/core/project/schema.js +264 -0
- package/dist/core/project/types.js +3 -0
- package/dist/core/prompts.js +72 -0
- package/dist/core/registry.js +35 -0
- package/dist/core/safety/backup.js +206 -0
- package/dist/core/safety/execute.js +188 -0
- package/dist/core/safety/index.js +5 -0
- package/dist/core/safety/plan.js +122 -0
- package/dist/core/safety/restore.js +172 -0
- package/dist/core/safety/types.js +1 -0
- package/dist/core/scaffold/bootstrap.js +7 -0
- package/dist/core/scaffold/catalog.js +28 -0
- package/dist/core/scaffold/claude-assets.js +271 -0
- package/dist/core/scaffold/collisions.js +64 -0
- package/dist/core/scaffold/emit.js +356 -0
- package/dist/core/scaffold/engine.js +680 -0
- package/dist/core/scaffold/ids.js +78 -0
- package/dist/core/scaffold/index.js +10 -0
- package/dist/core/scaffold/jsonpath.js +121 -0
- package/dist/core/scaffold/load.js +81 -0
- package/dist/core/scaffold/render.js +85 -0
- package/dist/core/scaffold/sequence.js +396 -0
- package/dist/core/scaffold/types.js +309 -0
- package/dist/core/steam.js +63 -0
- package/dist/core/surfaceutil.js +36 -0
- package/dist/core/testplan/check.js +67 -0
- package/dist/core/testplan/index.js +5 -0
- package/dist/core/testplan/load.js +100 -0
- package/dist/core/testplan/registry.js +317 -0
- package/dist/core/testplan/run.js +389 -0
- package/dist/core/testplan/types.js +82 -0
- package/dist/core/text/converters/bg3.js +50 -0
- package/dist/core/text/converters/cyberpunk.js +36 -0
- package/dist/core/text/converters/index.js +261 -0
- package/dist/core/text/diff/cr2w.js +180 -0
- package/dist/core/text/diff/index.js +16 -0
- package/dist/core/text/diff/loca.js +43 -0
- package/dist/core/text/diff/lsx.js +126 -0
- package/dist/core/text/handles.js +86 -0
- package/dist/core/text/index.js +6 -0
- package/dist/core/text/json.js +46 -0
- package/dist/core/text/templates/cache.js +71 -0
- package/dist/core/text/templates/index.js +3 -0
- package/dist/core/text/templates/library.js +245 -0
- package/dist/core/text/templates/types.js +51 -0
- package/dist/core/text/toolchain.js +16 -0
- package/dist/core/text/types.js +1 -0
- package/dist/core/text/validate.js +149 -0
- package/dist/core/text/xml.js +58 -0
- package/dist/core/toolchain/datafetch.js +151 -0
- package/dist/core/toolchain/env.js +63 -0
- package/dist/core/toolchain/features.js +170 -0
- package/dist/core/toolchain/index.js +8 -0
- package/dist/core/toolchain/install.js +191 -0
- package/dist/core/toolchain/locate.js +275 -0
- package/dist/core/toolchain/remember.js +84 -0
- package/dist/core/toolchain/run.js +318 -0
- package/dist/core/toolchain/specs.js +351 -0
- package/dist/core/toolchain/types.js +1 -0
- package/dist/core/types.js +1 -0
- package/dist/core/userconfig.js +66 -0
- package/dist/core/validate/context.js +139 -0
- package/dist/core/validate/index.js +5 -0
- package/dist/core/validate/registry.js +58 -0
- package/dist/core/validate/run.js +131 -0
- package/dist/core/validate/suppressions.js +91 -0
- package/dist/core/validate/types.js +2 -0
- package/dist/core/yamledit.js +51 -0
- package/dist/index.js +389 -0
- package/dist/server.js +1914 -0
- package/dist/surfaces/baldursgate3/compat.js +164 -0
- package/dist/surfaces/baldursgate3/identity.js +110 -0
- package/dist/surfaces/baldursgate3/index/build.js +331 -0
- package/dist/surfaces/baldursgate3/index/index.js +17 -0
- package/dist/surfaces/baldursgate3/index/info.js +40 -0
- package/dist/surfaces/baldursgate3/index/parsers/loca.js +41 -0
- package/dist/surfaces/baldursgate3/index/parsers/lsx.js +137 -0
- package/dist/surfaces/baldursgate3/index/parsers/stats.js +45 -0
- package/dist/surfaces/baldursgate3/index/parsers/treasuretable.js +57 -0
- package/dist/surfaces/baldursgate3/index/parsers/xmlutil.js +142 -0
- package/dist/surfaces/baldursgate3/index/queries.js +327 -0
- package/dist/surfaces/baldursgate3/index/schema.js +62 -0
- package/dist/surfaces/baldursgate3/index.js +3 -0
- package/dist/surfaces/baldursgate3/logs.js +278 -0
- package/dist/surfaces/baldursgate3/modsettings.js +115 -0
- package/dist/surfaces/baldursgate3/pak.js +153 -0
- package/dist/surfaces/baldursgate3/settings.js +49 -0
- package/dist/surfaces/baldursgate3/surface.js +232 -0
- package/dist/surfaces/baldursgate3/validators/bridge.js +7 -0
- package/dist/surfaces/baldursgate3/validators/files.js +476 -0
- package/dist/surfaces/baldursgate3/validators/items.js +1001 -0
- package/dist/surfaces/baldursgate3/validators/progression.js +734 -0
- package/dist/surfaces/baldursgate3/validators/stats.js +1076 -0
- package/dist/surfaces/baldursgate3/validators/story.js +790 -0
- package/dist/surfaces/baldursgate3/validators/templates.js +7 -0
- package/dist/surfaces/cyberpunk2077/compat.js +223 -0
- package/dist/surfaces/cyberpunk2077/index/build.js +231 -0
- package/dist/surfaces/cyberpunk2077/index/index.js +17 -0
- package/dist/surfaces/cyberpunk2077/index/info.js +51 -0
- package/dist/surfaces/cyberpunk2077/index/model.js +52 -0
- package/dist/surfaces/cyberpunk2077/index/parsers/tweak.js +483 -0
- package/dist/surfaces/cyberpunk2077/index/parsers/tweakxl-yaml.js +183 -0
- package/dist/surfaces/cyberpunk2077/index/queries.js +504 -0
- package/dist/surfaces/cyberpunk2077/index/resource.js +135 -0
- package/dist/surfaces/cyberpunk2077/index/schema.js +90 -0
- package/dist/surfaces/cyberpunk2077/index.js +3 -0
- package/dist/surfaces/cyberpunk2077/logs.js +742 -0
- package/dist/surfaces/cyberpunk2077/paths.js +12 -0
- package/dist/surfaces/cyberpunk2077/surface.js +218 -0
- package/dist/surfaces/cyberpunk2077/validators/bridge.js +7 -0
- package/dist/surfaces/cyberpunk2077/validators/cr2w.js +349 -0
- package/dist/surfaces/cyberpunk2077/validators/garments.js +1181 -0
- package/dist/surfaces/cyberpunk2077/validators/mesh.js +338 -0
- package/dist/surfaces/cyberpunk2077/validators/modsettings.js +120 -0
- package/dist/surfaces/cyberpunk2077/validators/packaging.js +463 -0
- package/dist/surfaces/cyberpunk2077/validators/red4ext.js +318 -0
- package/dist/surfaces/cyberpunk2077/validators/redscript.js +193 -0
- package/dist/surfaces/cyberpunk2077/validators/templates.js +7 -0
- package/dist/surfaces/cyberpunk2077/validators/tweaks.js +768 -0
- package/dist/surfaces/cyberpunk2077/validators/vehicles.js +531 -0
- package/dist/surfaces/cyberpunk2077/validators/xl.js +308 -0
- package/dist/surfaces/eldenring/binders.js +111 -0
- package/dist/surfaces/eldenring/compat.js +166 -0
- package/dist/surfaces/eldenring/dcx.js +49 -0
- package/dist/surfaces/eldenring/index.js +13 -0
- package/dist/surfaces/eldenring/loaders.js +132 -0
- package/dist/surfaces/eldenring/logs.js +67 -0
- package/dist/surfaces/eldenring/paramdef.js +256 -0
- package/dist/surfaces/eldenring/params.js +129 -0
- package/dist/surfaces/eldenring/surface.js +121 -0
- package/dist/surfaces/eldenring/tools.js +52 -0
- package/dist/surfaces/eldenring/validators/binders.js +193 -0
- package/dist/surfaces/eldenring/validators/packages.js +159 -0
- package/dist/surfaces/eldenring/validators/params.js +334 -0
- package/dist/surfaces/eldenring/validators/profiles.js +287 -0
- package/dist/surfaces/index.js +34 -0
- package/dist/surfaces/nivalisnights/compat.js +229 -0
- package/dist/surfaces/nivalisnights/index/build.js +310 -0
- package/dist/surfaces/nivalisnights/index/index.js +5 -0
- package/dist/surfaces/nivalisnights/index/queries.js +231 -0
- package/dist/surfaces/nivalisnights/index.js +4 -0
- package/dist/surfaces/nivalisnights/logs.js +473 -0
- package/dist/surfaces/nivalisnights/surface.js +195 -0
- package/dist/surfaces/skyrimse/archives.js +229 -0
- package/dist/surfaces/skyrimse/compat.js +163 -0
- package/dist/surfaces/skyrimse/index.js +12 -0
- package/dist/surfaces/skyrimse/loadorder.js +174 -0
- package/dist/surfaces/skyrimse/logs.js +241 -0
- package/dist/surfaces/skyrimse/plugins.js +149 -0
- package/dist/surfaces/skyrimse/records.js +94 -0
- package/dist/surfaces/skyrimse/surface.js +240 -0
- package/dist/surfaces/skyrimse/validators/archive-records.js +165 -0
- package/dist/surfaces/skyrimse/validators/archives.js +110 -0
- package/dist/surfaces/skyrimse/validators/plugins.js +374 -0
- package/dist/surfaces/skyrimse/validators/records.js +117 -0
- package/dist/surfaces/stardewvalley/compat.js +190 -0
- package/dist/surfaces/stardewvalley/config.js +42 -0
- package/dist/surfaces/stardewvalley/contentpatcher.js +203 -0
- package/dist/surfaces/stardewvalley/index/index.js +229 -0
- package/dist/surfaces/stardewvalley/index/wiki.js +190 -0
- package/dist/surfaces/stardewvalley/index.js +12 -0
- package/dist/surfaces/stardewvalley/logs.js +307 -0
- package/dist/surfaces/stardewvalley/mods.js +182 -0
- package/dist/surfaces/stardewvalley/surface.js +244 -0
- package/dist/surfaces/stardewvalley/validators/content.js +321 -0
- package/dist/surfaces/stardewvalley/validators/fields.js +147 -0
- package/dist/surfaces/stardewvalley/validators/loadorder.js +69 -0
- package/dist/surfaces/stardewvalley/validators/manifest.js +221 -0
- package/dist/surfaces/subnautica2/compat.js +138 -0
- package/dist/surfaces/subnautica2/index.js +5 -0
- package/dist/surfaces/subnautica2/logs.js +129 -0
- package/dist/surfaces/subnautica2/paks.js +173 -0
- package/dist/surfaces/subnautica2/surface.js +151 -0
- package/dist/surfaces/subnautica2/validators/packaging.js +298 -0
- package/dist/surfaces/valheim/compat.js +171 -0
- package/dist/surfaces/valheim/index/index.js +301 -0
- package/dist/surfaces/valheim/index/tables.js +103 -0
- package/dist/surfaces/valheim/index.js +11 -0
- package/dist/surfaces/valheim/logs.js +197 -0
- package/dist/surfaces/valheim/packaging.js +131 -0
- package/dist/surfaces/valheim/plugins.js +270 -0
- package/dist/surfaces/valheim/references.js +121 -0
- package/dist/surfaces/valheim/surface.js +223 -0
- package/dist/surfaces/valheim/validators/packaging.js +218 -0
- package/dist/surfaces/valheim/validators/plugins.js +287 -0
- package/dist/surfaces/valheim/validators/references.js +169 -0
- package/knowledge/baldursgate3/animations.gr2.yaml +166 -0
- package/knowledge/baldursgate3/audio.voice.yaml +182 -0
- package/knowledge/baldursgate3/audio.wwise.yaml +104 -0
- package/knowledge/baldursgate3/charactercreation.heads-hair.yaml +193 -0
- package/knowledge/baldursgate3/communitylibrary.shared-content.yaml +129 -0
- package/knowledge/baldursgate3/compatibilityframework.api.yaml +176 -0
- package/knowledge/baldursgate3/crash.causes.yaml +90 -0
- package/knowledge/baldursgate3/dialogue.dialogbank.yaml +120 -0
- package/knowledge/baldursgate3/dialogue.files.yaml +236 -0
- package/knowledge/baldursgate3/dialogue.osiris-goals.yaml +386 -0
- package/knowledge/baldursgate3/dialogue.yaml +122 -0
- package/knowledge/baldursgate3/feats.classes.yaml +164 -0
- package/knowledge/baldursgate3/items.cloth-physics.yaml +167 -0
- package/knowledge/baldursgate3/items.roottemplates.yaml +320 -0
- package/knowledge/baldursgate3/items.visualbank.yaml +628 -0
- package/knowledge/baldursgate3/journal.quests.yaml +214 -0
- package/knowledge/baldursgate3/loadorder.modsettings.yaml +128 -0
- package/knowledge/baldursgate3/localization.handles.yaml +92 -0
- package/knowledge/baldursgate3/misc.encoding-and-practice.yaml +111 -0
- package/knowledge/baldursgate3/origins.companions.yaml +144 -0
- package/knowledge/baldursgate3/osiris.signatures.yaml +211 -0
- package/knowledge/baldursgate3/packaging.meta.yaml +155 -0
- package/knowledge/baldursgate3/packaging.paks.yaml +79 -0
- package/knowledge/baldursgate3/process.launch.yaml +34 -0
- package/knowledge/baldursgate3/progressions.yaml +92 -0
- package/knowledge/baldursgate3/publishing.modio-nexus.yaml +170 -0
- package/knowledge/baldursgate3/publishing.toolkit-modio.yaml +135 -0
- package/knowledge/baldursgate3/races.progression.yaml +228 -0
- package/knowledge/baldursgate3/scriptextender.console.yaml +257 -0
- package/knowledge/baldursgate3/scriptextender.yaml +252 -0
- package/knowledge/baldursgate3/stats.boosts.yaml +293 -0
- package/knowledge/baldursgate3/stats.equipment-kits.yaml +69 -0
- package/knowledge/baldursgate3/stats.interrupts.yaml +45 -0
- package/knowledge/baldursgate3/stats.itemcombos.yaml +65 -0
- package/knowledge/baldursgate3/stats.spells.yaml +293 -0
- package/knowledge/baldursgate3/stats.weapons.yaml +210 -0
- package/knowledge/baldursgate3/toolchain.divine.yaml +179 -0
- package/knowledge/baldursgate3/toolchain.lslib-formats.yaml +242 -0
- package/knowledge/baldursgate3/toolkit.levels.yaml +177 -0
- package/knowledge/baldursgate3/ui.icons-atlas.yaml +78 -0
- package/knowledge/baldursgate3/ui.icons.yaml +412 -0
- package/knowledge/baldursgate3/ui.mcm.yaml +161 -0
- package/knowledge/baldursgate3/vfx.materials.yaml +174 -0
- package/knowledge/baldursgate3/visuals.characterfix.yaml +73 -0
- package/knowledge/cyberpunk2077/animations.anims.yaml +118 -0
- package/knowledge/cyberpunk2077/anims.archivexl.yaml +163 -0
- package/knowledge/cyberpunk2077/anims.authoring.yaml +579 -0
- package/knowledge/cyberpunk2077/anims.encoder.yaml +156 -0
- package/knowledge/cyberpunk2077/anims.graph.yaml +629 -0
- package/knowledge/cyberpunk2077/anims.method.yaml +360 -0
- package/knowledge/cyberpunk2077/anims.pipeline.yaml +352 -0
- package/knowledge/cyberpunk2077/anims.roundtrip.yaml +222 -0
- package/knowledge/cyberpunk2077/anims.sets.yaml +176 -0
- package/knowledge/cyberpunk2077/archivexl.bodytypes.yaml +149 -0
- package/knowledge/cyberpunk2077/archivexl.dynamic-appearances.yaml +218 -0
- package/knowledge/cyberpunk2077/archivexl.manifest.yaml +214 -0
- package/knowledge/cyberpunk2077/audio.events.yaml +168 -0
- package/knowledge/cyberpunk2077/audio.sounds.yaml +164 -0
- package/knowledge/cyberpunk2077/audio.voicesets.yaml +146 -0
- package/knowledge/cyberpunk2077/cet.sandbox.yaml +219 -0
- package/knowledge/cyberpunk2077/clothing.garments.yaml +283 -0
- package/knowledge/cyberpunk2077/clothing.refits.yaml +215 -0
- package/knowledge/cyberpunk2077/codeware.overview.yaml +111 -0
- package/knowledge/cyberpunk2077/codeware.systems.yaml +192 -0
- package/knowledge/cyberpunk2077/drones.combat.yaml +416 -0
- package/knowledge/cyberpunk2077/drones.control.yaml +552 -0
- package/knowledge/cyberpunk2077/entities.appearance.yaml +166 -0
- package/knowledge/cyberpunk2077/equipmentex.slots.yaml +151 -0
- package/knowledge/cyberpunk2077/fx.effects.yaml +246 -0
- package/knowledge/cyberpunk2077/fx.lights.yaml +171 -0
- package/knowledge/cyberpunk2077/hair.modding.yaml +145 -0
- package/knowledge/cyberpunk2077/items.wiring.yaml +246 -0
- package/knowledge/cyberpunk2077/loadorder.archives.yaml +71 -0
- package/knowledge/cyberpunk2077/mesh.blender.yaml +209 -0
- package/knowledge/cyberpunk2077/nativedb.dump.yaml +98 -0
- package/knowledge/cyberpunk2077/npc.appearance.yaml +275 -0
- package/knowledge/cyberpunk2077/npc.behaviour.yaml +128 -0
- package/knowledge/cyberpunk2077/npc.locomotion.yaml +490 -0
- package/knowledge/cyberpunk2077/packaging.deploy.yaml +175 -0
- package/knowledge/cyberpunk2077/packaging.variants.yaml +176 -0
- package/knowledge/cyberpunk2077/player.control.yaml +918 -0
- package/knowledge/cyberpunk2077/process.assetbuild.yaml +154 -0
- package/knowledge/cyberpunk2077/process.lessons.yaml +276 -0
- package/knowledge/cyberpunk2077/quests.minor.yaml +46 -0
- package/knowledge/cyberpunk2077/quests.scenes.yaml +282 -0
- package/knowledge/cyberpunk2077/quickhacks.tiers.yaml +41 -0
- package/knowledge/cyberpunk2077/red4ext.api.yaml +645 -0
- package/knowledge/cyberpunk2077/red4ext.plugins.yaml +124 -0
- package/knowledge/cyberpunk2077/redhottools.hotreload.yaml +245 -0
- package/knowledge/cyberpunk2077/redscript.compile-log.yaml +76 -0
- package/knowledge/cyberpunk2077/redscript.modules.yaml +118 -0
- package/knowledge/cyberpunk2077/toolchain.wolvenkit.yaml +163 -0
- package/knowledge/cyberpunk2077/tweakdb.loot-recipes.yaml +184 -0
- package/knowledge/cyberpunk2077/tweakdb.melee.yaml +352 -0
- package/knowledge/cyberpunk2077/tweakdb.weapons.yaml +325 -0
- package/knowledge/cyberpunk2077/tweakxl.hotreload.yaml +151 -0
- package/knowledge/cyberpunk2077/tweakxl.yaml-syntax.yaml +208 -0
- package/knowledge/cyberpunk2077/ui.icons.yaml +259 -0
- package/knowledge/cyberpunk2077/ui.inkatlas.yaml +81 -0
- package/knowledge/cyberpunk2077/ui.modsettings.yaml +204 -0
- package/knowledge/cyberpunk2077/vehicles.control.yaml +475 -0
- package/knowledge/cyberpunk2077/vehicles.dashboard-ui.yaml +203 -0
- package/knowledge/cyberpunk2077/vehicles.entities.yaml +195 -0
- package/knowledge/cyberpunk2077/vehicles.wiring.yaml +137 -0
- package/knowledge/cyberpunk2077/wolvenkit.cli.yaml +167 -0
- package/knowledge/cyberpunk2077/workspot.system.yaml +55 -0
- package/knowledge/cyberpunk2077/world.interactions.yaml +41 -0
- package/knowledge/cyberpunk2077/world.loot-container.yaml +167 -0
- package/knowledge/cyberpunk2077/world.sectors.yaml +233 -0
- package/knowledge/eldenring/formats.binders.yaml +237 -0
- package/knowledge/eldenring/launcher.me3.yaml +230 -0
- package/knowledge/eldenring/launcher.modengine2.yaml +119 -0
- package/knowledge/eldenring/params.paramdef.yaml +149 -0
- package/knowledge/eldenring/params.regulation.yaml +142 -0
- package/knowledge/eldenring/saves.online.yaml +118 -0
- package/knowledge/eldenring/toolchain.cli.yaml +256 -0
- package/knowledge/nivalisnights/modding.runtime.yaml +157 -0
- package/knowledge/skyrimse/archives.bsa.yaml +212 -0
- package/knowledge/skyrimse/install.detection.yaml +41 -0
- package/knowledge/skyrimse/loadorder.files.yaml +242 -0
- package/knowledge/skyrimse/plugins.esl.yaml +189 -0
- package/knowledge/skyrimse/plugins.format.yaml +224 -0
- package/knowledge/skyrimse/skse.runtime.yaml +283 -0
- package/knowledge/skyrimse/toolchain.xedit-spriggit.yaml +336 -0
- package/knowledge/stardewvalley/contentpatcher.format.yaml +338 -0
- package/knowledge/stardewvalley/distribution.channels.yaml +236 -0
- package/knowledge/stardewvalley/game.versions.yaml +202 -0
- package/knowledge/stardewvalley/install.layout.yaml +277 -0
- package/knowledge/stardewvalley/smapi.loader.yaml +284 -0
- package/knowledge/stardewvalley/smapi.logs.yaml +329 -0
- package/knowledge/stardewvalley/smapi.manifest.yaml +293 -0
- package/knowledge/stardewvalley/toolchain.build.yaml +261 -0
- package/knowledge/stardewvalley/wiki.dataformat.yaml +130 -0
- package/knowledge/subnautica2/game.build.yaml +331 -0
- package/knowledge/subnautica2/modding.state.yaml +210 -0
- package/knowledge/subnautica2/ue5.containers.yaml +72 -0
- package/knowledge/subnautica2/ue5.paks.yaml +203 -0
- package/knowledge/subnautica2/ue5.tooling.yaml +175 -0
- package/knowledge/subnautica2/ue5.ue4ss.yaml +203 -0
- package/knowledge/valheim/bepinex.loader.yaml +247 -0
- package/knowledge/valheim/bepinex.plugins.yaml +251 -0
- package/knowledge/valheim/game.versions.yaml +321 -0
- package/knowledge/valheim/install.layout.yaml +216 -0
- package/knowledge/valheim/jotunn.library.yaml +334 -0
- package/knowledge/valheim/thunderstore.packaging.yaml +217 -0
- package/knowledge/valheim/toolchain.build.yaml +111 -0
- package/package.json +29 -0
- package/scaffolds/baldursgate3/new-class-injection.yaml +148 -0
- package/scaffolds/baldursgate3/new-item.yaml +264 -0
- package/scaffolds/baldursgate3/new-mod.yaml +174 -0
- package/scaffolds/baldursgate3/new-passive.yaml +100 -0
- package/scaffolds/baldursgate3/new-project.yaml +118 -0
- package/scaffolds/baldursgate3/new-quest-stub.yaml +159 -0
- package/scaffolds/baldursgate3/new-spell.yaml +102 -0
- package/scaffolds/baldursgate3/new-status.yaml +119 -0
- package/scaffolds/baldursgate3/sequences/subclass-kit.yaml +50 -0
- package/scaffolds/cyberpunk2077/edit-tweak.yaml +70 -0
- package/scaffolds/cyberpunk2077/mesh-export-preset.yaml +170 -0
- package/scaffolds/cyberpunk2077/new-entity-patch.yaml +255 -0
- package/scaffolds/cyberpunk2077/new-garment-refit.yaml +279 -0
- package/scaffolds/cyberpunk2077/new-item-chain.yaml +548 -0
- package/scaffolds/cyberpunk2077/new-localization.yaml +130 -0
- package/scaffolds/cyberpunk2077/new-mod-settings.yaml +133 -0
- package/scaffolds/cyberpunk2077/new-player-replacer.yaml +1003 -0
- package/scaffolds/cyberpunk2077/new-project.yaml +157 -0
- package/scaffolds/cyberpunk2077/new-sector-node.yaml +156 -0
- package/scaffolds/cyberpunk2077/new-tweak.yaml +121 -0
- package/scaffolds/cyberpunk2077/new-vehicle-livery.yaml +148 -0
- package/scaffolds/cyberpunk2077/new-workspot-entity.yaml +177 -0
- package/scaffolds/cyberpunk2077/sequences/iconic-weapon.yaml +72 -0
- package/scaffolds/cyberpunk2077/sequences/quickhack-takeover.yaml +213 -0
- package/scaffolds/stardewvalley/new-cp-patch.yaml +106 -0
- package/scaffolds/stardewvalley/new-csharp-mod.yaml +195 -0
- package/scaffolds/stardewvalley/new-project.yaml +184 -0
- package/scaffolds/stardewvalley/sequences/content-pack.yaml +31 -0
- package/scripts/mw-tool.mjs +184 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
game: baldursgate3
|
|
2
|
+
topic: ui.icons-atlas
|
|
3
|
+
title: Icon atlas normalized-coordinate rule (BG3's inkatlas equivalent)
|
|
4
|
+
facts:
|
|
5
|
+
- id: bg3.ui.icons-atlas.uv-coordinates-are-normalized-fractions-not-pixels
|
|
6
|
+
claim: "The community icon tutorial confirms bg3.icons.iconuv-region-nesting-gotcha's \"U1/U2/V1/V2
|
|
7
|
+
normalized cell bounds\" and supplies the arithmetic: the values are fractions of the whole
|
|
8
|
+
atlas, not pixels, so a 64x64 icon on a 2048x2048 atlas spans 64/2048 = 0.03125 per axis — the
|
|
9
|
+
first cell is U1/V1 0.0 with U2/V2 0.03125."
|
|
10
|
+
status: community
|
|
11
|
+
source: wiki.bg3.community/en/Tutorials/Icons/Icon-Creation ("These values are determined by the
|
|
12
|
+
size of your icon and your atlas size as a whole"; worked value 64/2048 = 0.03125)
|
|
13
|
+
tags:
|
|
14
|
+
- icons
|
|
15
|
+
- atlas
|
|
16
|
+
- uv-coordinates
|
|
17
|
+
- normalized
|
|
18
|
+
- inkatlas-equivalent
|
|
19
|
+
detail: Same normalized-coordinate convention as Cyberpunk 2077's .inkatlas, applied to BG3's
|
|
20
|
+
TextureAtlasInfo/IconUVList pair. Kept over the existing verified fact only for the
|
|
21
|
+
arithmetic; the region-nesting rule (IconUV in its own IconUVList region, NOT inside
|
|
22
|
+
TextureAtlasInfo) stays with bg3.icons.iconuv-region-nesting-gotcha.
|
|
23
|
+
- id: bg3.ui.icons-atlas.icon-size-scales-atlas-math
|
|
24
|
+
claim: TextureAtlasIconSize (icon width/height) and TextureAtlasTextureSize (the whole atlas's
|
|
25
|
+
width/height) together determine every IconUV cell's U1/V1/U2/V2 math; the tutorial's worked
|
|
26
|
+
example fixes both at 64 and 2048 respectively specifically so its example U/V values can be
|
|
27
|
+
copied without recalculating — changing either size requires recomputing every icon's UV
|
|
28
|
+
bounds.
|
|
29
|
+
status: community
|
|
30
|
+
source: wiki.bg3.community/en/Tutorials/Icons/Icon-Creation ("If you followed 64x64 and 2048x2048
|
|
31
|
+
you shouldn't have a problem copying the U1,U2,V1, and V2 that I use here")
|
|
32
|
+
tags:
|
|
33
|
+
- icons
|
|
34
|
+
- atlas
|
|
35
|
+
- texturesize
|
|
36
|
+
- iconsize
|
|
37
|
+
- id: bg3.ui.icons-atlas.atlas-path-must-match-textureatlaspath
|
|
38
|
+
claim: The icon atlas file is named Icons_<ModName>.dds with a LOWERCASE .dds extension and lives at
|
|
39
|
+
Assets/Textures/Icons/Icons_<ModName>.dds, which must be exactly the TextureAtlasPath value in
|
|
40
|
+
the atlas map .lsx that describes it. This confirms bg3.icons.spell-atlas-three-file-system's
|
|
41
|
+
atlas path.
|
|
42
|
+
status: community
|
|
43
|
+
source: 'wiki.bg3.community/en/Tutorials/Icons/Icon-Creation ("The proper name should be
|
|
44
|
+
Icons_{ModName}.dds"; atlas map "Path": "Assets/Textures/Icons/Icons_MODNAME.dds")'
|
|
45
|
+
tags:
|
|
46
|
+
- icons
|
|
47
|
+
- atlas
|
|
48
|
+
- path
|
|
49
|
+
- dds
|
|
50
|
+
- case-sensitivity
|
|
51
|
+
detail: 'Corrected from "must not be lowercase .dds", which reversed the source. Casing in BG3 is
|
|
52
|
+
per file class, not global: the ATLAS is lowercase .dds, while item/character textures and the
|
|
53
|
+
standalone tooltip and controller icons are uppercase .DDS
|
|
54
|
+
(bg3.items.visualbank.dds-extension-case-sensitive, bg3.icons.tooltip-asset-system).'
|
|
55
|
+
- id: bg3.ui.icons-atlas.extra-empty-iconuv-entries-are-harmless
|
|
56
|
+
claim: An icon atlas map can carry more IconUV entries than icons actually placed on the atlas
|
|
57
|
+
without causing errors — the tutorial leaves a second, unused IconUV entry in place "for
|
|
58
|
+
future use" alongside the one real icon with no ill effect.
|
|
59
|
+
status: community
|
|
60
|
+
source: wiki.bg3.community/en/Tutorials/Icons/Icon-Creation ("I can leave that alone for now without
|
|
61
|
+
any issues. I'd rather it be there for future use then now.")
|
|
62
|
+
tags:
|
|
63
|
+
- icons
|
|
64
|
+
- atlas
|
|
65
|
+
- iconuv
|
|
66
|
+
- id: bg3.ui.icons-atlas.hotbar-icon-size-scales-with-atlas-size
|
|
67
|
+
claim: An icon's rendered hotbar size scales with the atlas size it's placed on, not just with the
|
|
68
|
+
icon's own pixel dimensions inside that atlas — the tutorial notes this explicitly when
|
|
69
|
+
recommending sticking to a 64px icon on a 2048px atlas rather than deviating from the
|
|
70
|
+
reference proportions.
|
|
71
|
+
status: community
|
|
72
|
+
source: wiki.bg3.community/en/Tutorials/Icons/Icon-Creation ("Your hotbar icon size scales with your
|
|
73
|
+
atlas size")
|
|
74
|
+
tags:
|
|
75
|
+
- icons
|
|
76
|
+
- atlas
|
|
77
|
+
- hotbar
|
|
78
|
+
- scaling
|
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
game: baldursgate3
|
|
2
|
+
topic: ui.icons
|
|
3
|
+
title: Icon systems — class icons, spell atlas, tooltip images, and metadata
|
|
4
|
+
facts:
|
|
5
|
+
- id: bg3.icons.class-icon-pair
|
|
6
|
+
claim: 'Class/subclass icons are a 300×300 "main" DDS (top-right/summary icon) plus a 140×140
|
|
7
|
+
"hotbar" DDS (the class-SELECTION list icon and the round badge). Filename = the
|
|
8
|
+
ClassDescription Name (the engine auto-links subclasses by name). Copied to FOUR paths:
|
|
9
|
+
GUI/Assets/ClassIcons/<Name>.DDS, GUI/AssetsLowRes/ClassIcons/<Name>.DDS, and both again under
|
|
10
|
+
a hotbar/ subfolder (the hotbar dir holds the 140).'
|
|
11
|
+
status: verified
|
|
12
|
+
verified_on: 4.73.98.727 (Patch 8)
|
|
13
|
+
source: ModWright field verification
|
|
14
|
+
tags:
|
|
15
|
+
- icons
|
|
16
|
+
- class
|
|
17
|
+
- dds
|
|
18
|
+
- resolution
|
|
19
|
+
detail: "A class mod's first attempts got this wrong twice: a _Hotbar filename suffix, and a
|
|
20
|
+
ClassIcons/LowRes/ subfolder instead of the sibling AssetsLowRes/ tree — both produced blank
|
|
21
|
+
icons in-game."
|
|
22
|
+
- id: bg3.icons.class-icon-metadata
|
|
23
|
+
claim: Hand-authored GUI textures need a GUI/metadata.lsf (per-file width/height/mipcount); the
|
|
24
|
+
Toolkit normally auto-writes it via its "Convert UI Assets" step, which an SE-compatible
|
|
25
|
+
hand-authored pipeline cannot use. Without it the game shows "Missing MetaData" and the icons
|
|
26
|
+
are blank.
|
|
27
|
+
status: verified
|
|
28
|
+
verified_on: 4.73.98.727 (Patch 8)
|
|
29
|
+
source: ModWright field verification
|
|
30
|
+
tags:
|
|
31
|
+
- icons
|
|
32
|
+
- metadata
|
|
33
|
+
- lsf
|
|
34
|
+
- class
|
|
35
|
+
detail: Hand-build it by extracting vanilla's Public/Game/GUI/metadata.lsf from Game.pak, converting
|
|
36
|
+
to lsx, copying a Bard class-icon entry, editing, and converting lsx→lsf.
|
|
37
|
+
- id: bg3.icons.spell-atlas-three-file-system
|
|
38
|
+
claim: 'Spell/action icons are a texture ATLAS needing THREE files: (1) the DDS atlas
|
|
39
|
+
(Assets/Textures/Icons/<Atlas>.dds, DXT5, no mipmaps, sRGB, a grid of NxN cells); (2) the
|
|
40
|
+
descriptor GUI/<Atlas>.lsx (stays lsx) with TWO SEPARATE sibling regions — TextureAtlasInfo
|
|
41
|
+
(icon size / path+UUID / texture size) and IconUVList; (3) texture registration in
|
|
42
|
+
Content/UI/[PAK]_UI/_merged.lsf — a TextureBank Resource with the SAME UUID as the atlas path,
|
|
43
|
+
Template "Icons_Items", SRGB True. Reference it from a stat as data "Icon" "<MapKey>".'
|
|
44
|
+
status: verified
|
|
45
|
+
verified_on: 4.73.98.727 (Patch 8)
|
|
46
|
+
source: ModWright field verification
|
|
47
|
+
tags:
|
|
48
|
+
- icons
|
|
49
|
+
- atlas
|
|
50
|
+
- spell
|
|
51
|
+
- action
|
|
52
|
+
detail: "[PAK]_UI is a LITERAL bracketed folder name. Status/buff icons resolve from this same item
|
|
53
|
+
atlas — no separate status-template registration is needed; that was flagged as an UNVERIFIED
|
|
54
|
+
caveat when the first status icon was added and then confirmed in the v1.1.22.0 batch (a
|
|
55
|
+
custom status renders as a portrait buff)."
|
|
56
|
+
- id: bg3.icons.iconuv-region-nesting-gotcha
|
|
57
|
+
claim: IconUV goes in its OWN IconUVList region, NOT nested inside TextureAtlasInfo. Nesting it
|
|
58
|
+
yields the generic blue missing-icon fallback. A docs summary got this wrong; vanilla
|
|
59
|
+
Icons_Skills.lsx confirms two regions.
|
|
60
|
+
status: verified
|
|
61
|
+
verified_on: 4.73.98.727 (Patch 8)
|
|
62
|
+
source: ModWright field verification
|
|
63
|
+
tags:
|
|
64
|
+
- icons
|
|
65
|
+
- atlas
|
|
66
|
+
- iconuv
|
|
67
|
+
- region
|
|
68
|
+
- nesting
|
|
69
|
+
detail: Each IconUV carries MapKey + U1/U2/V1/V2 normalized cell bounds. IconUVList is a sibling
|
|
70
|
+
region of TextureAtlasInfo, not a child.
|
|
71
|
+
- id: bg3.icons.atlas-expansion-pattern
|
|
72
|
+
claim: "To add an icon to an existing atlas: grow the DDS grid, add an IconUV, and point the stat's
|
|
73
|
+
Icon at the MapKey. Compose onto the existing atlas by decoding the DDS in PIL,
|
|
74
|
+
paste(cell,(x,y),cell), re-encode DXT5 with no mipmaps."
|
|
75
|
+
status: verified
|
|
76
|
+
verified_on: 4.73.98.727 (Patch 8)
|
|
77
|
+
source: ModWright field verification
|
|
78
|
+
tags:
|
|
79
|
+
- icons
|
|
80
|
+
- atlas
|
|
81
|
+
- dds
|
|
82
|
+
- pil
|
|
83
|
+
- composition
|
|
84
|
+
detail: "Re-encode flags used: -define dds:compression=dxt5 -define dds:mipmaps=0. Adding a cell
|
|
85
|
+
needs no change to the atlas UUID or the _merged.lsf TextureBank registration."
|
|
86
|
+
- id: bg3.icons.item-tooltip-not-atlas
|
|
87
|
+
claim: The big item image in a tooltip does NOT come from the icon atlas. The atlas serves
|
|
88
|
+
inventory/hotbar cells only; an atlas-only mod icon shows in the grid but the tooltip image
|
|
89
|
+
area is BLANK. Vanilla keys look fine because vanilla ships separate tooltip textures for
|
|
90
|
+
them.
|
|
91
|
+
status: verified
|
|
92
|
+
verified_on: 4.73.98.727 (Patch 8)
|
|
93
|
+
source: ModWright field verification
|
|
94
|
+
tags:
|
|
95
|
+
- icons
|
|
96
|
+
- tooltip
|
|
97
|
+
- atlas
|
|
98
|
+
- image
|
|
99
|
+
detail: "Symptom to search for: icon correct in the inventory grid, empty box in the tooltip."
|
|
100
|
+
- id: bg3.icons.tooltip-asset-system
|
|
101
|
+
claim: "Per icon KEY, ship standalone DDS files under Mods/<Mod>/GUI/:
|
|
102
|
+
Assets/Tooltips/ItemIcons/<IconKey>.DDS (380×380, the tooltip image),
|
|
103
|
+
Assets/ControllerUIIcons/items_png/<IconKey>.DDS (144×144), plus AssetsLowRes/ copies of both
|
|
104
|
+
(192 / 72), all DXT5 no-mips. Register the two Assets/ files in GUI/metadata.lsf — and the
|
|
105
|
+
MapKey uses a .png extension even though the shipped file is .DDS. AssetsLowRes files need no
|
|
106
|
+
metadata entries."
|
|
107
|
+
status: community
|
|
108
|
+
source: ModWright research
|
|
109
|
+
tags:
|
|
110
|
+
- icons
|
|
111
|
+
- tooltip
|
|
112
|
+
- dds
|
|
113
|
+
- metadata
|
|
114
|
+
- assets
|
|
115
|
+
detail: The tooltip/controller files resolve purely by GUI-path + filename = icon key; the
|
|
116
|
+
Public/<ns>/Content/UI/[PAK]_UI/_merged.lsf TextureBank registration (Template Icons_Items) is
|
|
117
|
+
only needed for the ATLAS. The same metadata.lsf carries the ClassIcons entries.
|
|
118
|
+
- id: bg3.icons.atlas-lsf-twin-blanks-passive-icons
|
|
119
|
+
claim: "Believed and later disproved: that a stray binary .lsf twin of the icon atlas .lsx in the
|
|
120
|
+
project blanked the equipment-passive icons, so deleting it was the fix."
|
|
121
|
+
status: contradicted
|
|
122
|
+
source: ModWright research
|
|
123
|
+
tags:
|
|
124
|
+
- icons
|
|
125
|
+
- passives
|
|
126
|
+
- atlas
|
|
127
|
+
- confounded
|
|
128
|
+
detail: Kept so the mistake is not remade. The real pattern was NEW GAME = the starting-kit passive
|
|
129
|
+
icons blank, save+reload = icons show, in every build — the .lsf twin was irrelevant to it.
|
|
130
|
+
Removing the twin (and the passive-only atlas keys) is still kept as project hygiene, because
|
|
131
|
+
vanilla ships atlases as .lsx only, but it was not the fix. Superseded by
|
|
132
|
+
bg3.icons.starting-kit-passive-icons.
|
|
133
|
+
- id: bg3.icons.starting-kit-passive-icons
|
|
134
|
+
claim: Starting-kit passives (granted via PassivesOnEquip on Equipment.txt CC-kit items) have icons
|
|
135
|
+
the Notable Features list only resolves on an equipment-change EVENT. On a fresh game no such
|
|
136
|
+
event fires, so the rows are blank until any gear change or a save+reload (which re-equips
|
|
137
|
+
through the normal path).
|
|
138
|
+
status: verified
|
|
139
|
+
verified_on: 4.73.98.727 (Patch 8)
|
|
140
|
+
supersedes: bg3.icons.atlas-lsf-twin-blanks-passive-icons
|
|
141
|
+
source: ModWright field verification
|
|
142
|
+
tags:
|
|
143
|
+
- icons
|
|
144
|
+
- passives
|
|
145
|
+
- equipment
|
|
146
|
+
- cc-kit
|
|
147
|
+
- script-extender
|
|
148
|
+
detail: "Vanilla never ships a Highlighted passive on a kit item, so there is no precedent. Fix
|
|
149
|
+
used: a Script Extender Lua refresh script — 2.5 s after LevelGameplayStarted, once per
|
|
150
|
+
character (PersistentVars ledger), Osi.Unequip + Osi.Equip one equipped wearable
|
|
151
|
+
(GetEquippedItem query first, entity inventory walk as fallback)."
|
|
152
|
+
- id: bg3.icons.dds-format-and-alpha
|
|
153
|
+
claim: DXT5 DDS works fine via ImageMagick or PIL (img.save(p, pixel_format="DXT5")). Main icon =
|
|
154
|
+
opaque on black; hotbar icon = transparency via HSB-brightness-as-alpha (( +clone -colorspace
|
|
155
|
+
HSB -channel B -separate +channel ) -compose CopyOpacity -composite), which beats grayscale
|
|
156
|
+
luminance for saturated colours. For transparency from a solid-black background, floodfill
|
|
157
|
+
from the four corners (-fuzz 16% -fill none -draw "alpha 0,0 floodfill" ×4) — it knocks out
|
|
158
|
+
only the border-connected background and KEEPS interior dark areas, unlike -transparent black.
|
|
159
|
+
Then -trim +repage, pad square via -extent, resize.
|
|
160
|
+
status: verified
|
|
161
|
+
verified_on: 4.73.98.727 (Patch 8)
|
|
162
|
+
source: ModWright field verification
|
|
163
|
+
tags:
|
|
164
|
+
- icons
|
|
165
|
+
- dds
|
|
166
|
+
- dxt5
|
|
167
|
+
- alpha
|
|
168
|
+
- transparency
|
|
169
|
+
detail: 'HSB-brightness-as-alpha comes out DIM for bright-on-black art — floodfill is better there
|
|
170
|
+
(a class mod used -fuzz 18% for a bright-on-black source). Small-icon design: a buff badge
|
|
171
|
+
renders ~32-40px; a centered round object ringed by a symmetric radial burst reads as an EYE
|
|
172
|
+
(iris+lashes) at that size, so use a bold, diagonal/asymmetric subject and put "eye, iris,
|
|
173
|
+
radial, symmetrical" in a negative prompt. PIL needs Windows paths (C:/...), not msys /c/...;
|
|
174
|
+
ImageMagick 7 is fine either way.'
|
|
175
|
+
- id: bg3.icons.imagemagick-diagnostics
|
|
176
|
+
claim: "ImageMagick diagnostic for icon work: -alpha extract -format \"%[fx:mean*100]%%\" measures a
|
|
177
|
+
region's opacity."
|
|
178
|
+
status: verified
|
|
179
|
+
verified_on: 4.73.98.727 (Patch 8)
|
|
180
|
+
source: ModWright field verification
|
|
181
|
+
tags:
|
|
182
|
+
- icons
|
|
183
|
+
- diagnostics
|
|
184
|
+
- imagemagick
|
|
185
|
+
- tools
|
|
186
|
+
detail: Useful for checking that a floodfill or alpha-from-brightness pass actually produced
|
|
187
|
+
transparency where you expect it, before spending a relaunch cycle on a blank-icon report.
|
|
188
|
+
- id: bg3.icons.public-game-gui-path-for-tooltip-and-controller-icons
|
|
189
|
+
claim: A separate community tutorial (a different mod, a class/passive icon rather than an item)
|
|
190
|
+
places tooltip and controller icon DDS files under Public\Game\GUI\Assets\Tooltips\Icons and
|
|
191
|
+
Public\Game\GUI\Assets\ControllerUIIcons\skills_png — under the mod's Public\Game\GUI tree,
|
|
192
|
+
not Mods\<Mod>\GUI — with the controller-icon subfolder named for the icon's category
|
|
193
|
+
("skills_png" for a passive/skill icon) rather than always "items_png".
|
|
194
|
+
status: community
|
|
195
|
+
source: 'bg3-community/Tutorials/Icons/Icon-Creation.md §Mod folder setup (folder tree listing
|
|
196
|
+
"Game: GUI: Assets: Tooltips: Icons / ItemIcons", "ControllerUIIcons: skills_png /
|
|
197
|
+
items_png"), §Tooltip Icons, §Controller Icons'
|
|
198
|
+
tags:
|
|
199
|
+
- icons
|
|
200
|
+
- tooltip
|
|
201
|
+
- controller
|
|
202
|
+
- public-game-gui
|
|
203
|
+
- path
|
|
204
|
+
related:
|
|
205
|
+
- id: bg3.icons.tooltip-asset-system
|
|
206
|
+
detail: Records a second, differently-rooted path convention (Public\Game\GUI rather than
|
|
207
|
+
Mods\<Mod>\GUI) from an independent mod's tutorial; the existing fact's Mods\<Mod>\GUI
|
|
208
|
+
convention was itself only "verified against two installed item mods" — this is not a
|
|
209
|
+
contradiction so much as a second attested pattern, and both should be checked when
|
|
210
|
+
tooltip icons are blank.
|
|
211
|
+
- id: bg3.icons.blank-icon-shows-at-both-tooltip-and-cc-selection-until-fixed
|
|
212
|
+
claim: A passive/spell icon missing from tooltip/controller/hotbar locations (while still correct in
|
|
213
|
+
the inventory grid or wherever the atlas alone renders it) shows the SAME generic
|
|
214
|
+
error-fallback icon both in the tooltip and in the Character Creation selection list for that
|
|
215
|
+
passive — seeing the fallback icon in one location is a reliable signal to check the other.
|
|
216
|
+
status: community
|
|
217
|
+
source: bg3-community/Tutorials/Icons/Icon-Creation.md:189-212, §Tooltip Icons ("That is a default
|
|
218
|
+
icon the game puts if you have an error with your current one and it can't be read.")
|
|
219
|
+
tags:
|
|
220
|
+
- icons
|
|
221
|
+
- tooltip
|
|
222
|
+
- fallback-icon
|
|
223
|
+
- cc
|
|
224
|
+
- silent-failure
|
|
225
|
+
related:
|
|
226
|
+
- id: bg3.icons.item-tooltip-not-atlas
|
|
227
|
+
detail: Confirms from an independent source that the atlas and the tooltip/CC image are separately
|
|
228
|
+
resolved — a correct atlas entry does not guarantee a correct tooltip or CC-selection
|
|
229
|
+
image, and a blank/ fallback tooltip icon is the visible symptom of the missing standalone
|
|
230
|
+
file.
|
|
231
|
+
- id: bg3.icons.texturebank-resource-fields-in-merged-lsx
|
|
232
|
+
claim: "The worked Content/UI/[PAK]_UI/_merged.lsx TextureBank Resource node registering an icon
|
|
233
|
+
atlas carries: ID (FixedString, the same UUID used as the atlas map's Path attribute UUID),
|
|
234
|
+
Localized (bool, False), Name (LSString, set to the mod's name), SRGB (True), SourceFile
|
|
235
|
+
(LSString, the atlas .dds path rooted at \"Public/...\"), Streaming (True), Template
|
|
236
|
+
(FixedString \"Icons_Items\"), Type (int32 0) and _OriginalFileVersion_. The page's
|
|
237
|
+
walkthrough says only ID, Name and SourceFile need changing."
|
|
238
|
+
status: community
|
|
239
|
+
source: bg3-community/Tutorials/Icons/Icon-Creation.md:344-380, §_merged.lsx (worked TextureBank
|
|
240
|
+
Resource node and its field-by-field walkthrough)
|
|
241
|
+
tags:
|
|
242
|
+
- icons
|
|
243
|
+
- atlas
|
|
244
|
+
- texturebank
|
|
245
|
+
- merged-lsx
|
|
246
|
+
- required-fields
|
|
247
|
+
related:
|
|
248
|
+
- id: bg3.icons.spell-atlas-three-file-system
|
|
249
|
+
detail: Confirms and itemizes the exact TextureBank Resource attributes the existing fact's third
|
|
250
|
+
file (texture registration in Content/UI/[PAK]_UI/_merged.lsf) requires, including that
|
|
251
|
+
SourceFile is rooted at "Public/" while the atlas map's own Path attribute is rooted at
|
|
252
|
+
"Assets/" — a distinction worth checking directly if an atlas fails to resolve.
|
|
253
|
+
- id: bg3.icons.class-icon-vanilla-format-and-four-sizes
|
|
254
|
+
claim: "The vanilla class/subclass icon files are BC7 (DX10 header, DXGI format 98), one mip, at
|
|
255
|
+
four sizes that match the four paths of bg3.icons.class-icon-pair: Assets/ClassIcons 300x300,
|
|
256
|
+
Assets/ClassIcons/hotbar 140x140, AssetsLowRes/ClassIcons 152x152,
|
|
257
|
+
AssetsLowRes/ClassIcons/hotbar 72x72. The glyph occupies about 64% of the main canvas
|
|
258
|
+
(OpenHand: alpha bbox 53..245 of 300) over a transparent background with a soft drop shadow;
|
|
259
|
+
the art is full colour, not a tintable white glyph. The file's byte size is the same whether
|
|
260
|
+
it is BC7 or DXT5 (1 byte per pixel), so a DXT5 no-mip file written by ImageMagick is a
|
|
261
|
+
like-for-like replacement in size; whether the engine accepts DXT5 in this slot is recorded
|
|
262
|
+
separately below."
|
|
263
|
+
status: verified
|
|
264
|
+
verified_on: 4.73.98.727 (Patch 8)
|
|
265
|
+
source: Game.pak Public/Game/GUI/Assets/ClassIcons/OpenHand.DDS + hotbar + AssetsLowRes copies
|
|
266
|
+
(2026-09-19)
|
|
267
|
+
tags:
|
|
268
|
+
- icons
|
|
269
|
+
- class
|
|
270
|
+
- dds
|
|
271
|
+
- bc7
|
|
272
|
+
- dxt5
|
|
273
|
+
- sizes
|
|
274
|
+
detail: "Vanilla names: Monk.DDS, OpenHand.DDS, Shadow.DDS, FourElements.DDS — the subclass
|
|
275
|
+
Progression/ClassDescription Name, not the display name. A subclass mod ships its icon four
|
|
276
|
+
times under its own ClassDescription Name."
|
|
277
|
+
- id: bg3.icons.class-icon-needs-public-game-source-in-the-pak
|
|
278
|
+
claim: "Class icons live under Public/Game/GUI/..., outside the mod's own Public/<Mod>/ tree, so a
|
|
279
|
+
ModWright project whose \"public\" source is Public/<Mod> silently leaves them out of the pak:
|
|
280
|
+
the build succeeds and verify-listing passes while divine list-package shows no ClassIcons
|
|
281
|
+
entry. A second source ({\"id\": \"game-ui\", \"path\": \"Public/Game\", \"kind\":
|
|
282
|
+
\"public\"}) added to the stage step's sources puts them in at the same relative path."
|
|
283
|
+
status: verified
|
|
284
|
+
verified_on: 4.73.98.727 (Patch 8)
|
|
285
|
+
source: ModWright field verification
|
|
286
|
+
tags:
|
|
287
|
+
- icons
|
|
288
|
+
- class
|
|
289
|
+
- modwright
|
|
290
|
+
- sources
|
|
291
|
+
- packaging
|
|
292
|
+
- id: bg3.icons.single-row-atlas-widening-recomputes-every-uv
|
|
293
|
+
claim: "A mod icon atlas can stay a single row of 144-px cells and simply grow wider: the DDS
|
|
294
|
+
becomes COLS*144 x 144, TextureAtlasTextureSize Width is updated to match, and EVERY IconUV's
|
|
295
|
+
U1/U2 is recomputed as idx/COLS and (idx+1)/COLS (V1 0, V2 1). The atlas UUID, the TextureBank
|
|
296
|
+
registration and the per-key tooltip/controller files do not change. A second ROW is not an
|
|
297
|
+
option: the character sheet read a two-row atlas's row 1 cells back as row 0."
|
|
298
|
+
status: verified
|
|
299
|
+
verified_on: 4.73.98.727 (Patch 8)
|
|
300
|
+
source: ModWright field verification
|
|
301
|
+
tags:
|
|
302
|
+
- icons
|
|
303
|
+
- atlas
|
|
304
|
+
- uv
|
|
305
|
+
- widening
|
|
306
|
+
- single-row
|
|
307
|
+
related:
|
|
308
|
+
- id: bg3.icons.atlas-expansion-pattern
|
|
309
|
+
detail: The same operation, stated for the single-row layout and with the "every UV" recompute
|
|
310
|
+
spelled out.
|
|
311
|
+
- id: bg3.icons.status-without-icon-field-shows-a-blank-condition
|
|
312
|
+
claim: A StatusData entry with no Icon line shows a blank badge in the conditions strip and the
|
|
313
|
+
status tooltip while it is active. Statuses take the same Icon values as passives and spells
|
|
314
|
+
(an atlas MapKey of the mod's own atlas, or a vanilla icon name such as Status_Burning or
|
|
315
|
+
PassiveFeature_PatientDefence).
|
|
316
|
+
status: verified
|
|
317
|
+
verified_on: 4.73.98.727 (Patch 8)
|
|
318
|
+
source: ModWright field verification
|
|
319
|
+
tags:
|
|
320
|
+
- icons
|
|
321
|
+
- status
|
|
322
|
+
- conditions
|
|
323
|
+
- blank
|
|
324
|
+
- id: bg3.icons.icon-names-cross-stat-types
|
|
325
|
+
claim: "The Icon field is one global namespace: a passive can name a vanilla spell or action icon
|
|
326
|
+
(PassiveFeature_MartialArts_BonusUnarmedStrike, Action_Whirlwind), a spell can name a passive
|
|
327
|
+
icon, and a status can name either, so a feature can borrow any vanilla icon by name without
|
|
328
|
+
shipping a file. Whether an ITEM icon key (Item_QUEST_GLO_SoulCoin, from the vanilla item
|
|
329
|
+
atlas) also resolves on a passive is built for Soulfire but not yet seen in-game."
|
|
330
|
+
status: verified
|
|
331
|
+
verified_on: 4.73.98.727 (Patch 8)
|
|
332
|
+
source: ModWright field verification
|
|
333
|
+
tags:
|
|
334
|
+
- icons
|
|
335
|
+
- namespace
|
|
336
|
+
- vanilla-names
|
|
337
|
+
- passives
|
|
338
|
+
- spells
|
|
339
|
+
- statuses
|
|
340
|
+
- id: bg3.icons.notable-features-row-uses-the-granting-items-icon
|
|
341
|
+
claim: In the character sheet's Notable Features list, a passive granted by equipment
|
|
342
|
+
(PassivesOnEquip) is listed with the GRANTING ITEM's icon, not the passive's own Icon; the
|
|
343
|
+
passive's icon appears only in its tooltip card. This is vanilla behaviour, so making the item
|
|
344
|
+
icon legible at list size is the only fix.
|
|
345
|
+
status: verified
|
|
346
|
+
verified_on: 4.73.98.727 (Patch 8)
|
|
347
|
+
source: ModWright field verification
|
|
348
|
+
tags:
|
|
349
|
+
- icons
|
|
350
|
+
- character-sheet
|
|
351
|
+
- notable-features
|
|
352
|
+
- equipment-passives
|
|
353
|
+
related:
|
|
354
|
+
- id: bg3.icons.starting-kit-passive-icons
|
|
355
|
+
detail: That fact is about WHEN the row resolves; this one is about WHICH icon it resolves to.
|
|
356
|
+
- id: bg3.icons.passive-tooltip-files-under-mods-gui-skills-folders
|
|
357
|
+
claim: For a passive or action icon (as opposed to an item icon) the per-key files go to
|
|
358
|
+
Mods/<Mod>/GUI/Assets/Tooltips/Icons/<Key>.DDS (380) and
|
|
359
|
+
Mods/<Mod>/GUI/Assets/ControllerUIIcons/skills_png/<Key>.DDS (144), with AssetsLowRes copies
|
|
360
|
+
(192 / 72) and two metadata.lsx Object entries whose MapKeys end in .png � the Mods/<Mod>/GUI
|
|
361
|
+
root works for skills, the same as bg3.icons.tooltip-asset-system records for items, so the
|
|
362
|
+
Public/Game/GUI root of the community tutorial is not required.
|
|
363
|
+
status: verified
|
|
364
|
+
verified_on: 4.73.98.727 (Patch 8)
|
|
365
|
+
source: ModWright field verification
|
|
366
|
+
tags:
|
|
367
|
+
- icons
|
|
368
|
+
- passives
|
|
369
|
+
- tooltip
|
|
370
|
+
- controller
|
|
371
|
+
- skills_png
|
|
372
|
+
- metadata
|
|
373
|
+
related:
|
|
374
|
+
- id: bg3.icons.public-game-gui-path-for-tooltip-and-controller-icons
|
|
375
|
+
detail: Both roots are attested; this is the Mods/<Mod>/GUI one seen working for a skill icon.
|
|
376
|
+
- id: bg3.icons.keyed-neon-art-needs-the-same-brightness-ramp-as-recoloured-vanilla-icons
|
|
377
|
+
claim: Mixing two icon sources in one set � AI-made neon line art on black that is only alpha-keyed,
|
|
378
|
+
and vanilla icons recoloured through a luminance-to-red ramp � makes the keyed art read
|
|
379
|
+
markedly darker in the Actions panel, because keying keeps the art's own dim glow while the
|
|
380
|
+
ramp maps mid-tones to a bright core. Pushing every source through the same ramp (dark
|
|
381
|
+
110/0/0, mid 240/40/30, core 255/150/140 over luminance^0.6..0.75, plus a blurred copy
|
|
382
|
+
underneath as glow) gives a matched set.
|
|
383
|
+
status: verified
|
|
384
|
+
verified_on: 4.73.98.727 (Patch 8)
|
|
385
|
+
source: ModWright field verification
|
|
386
|
+
tags:
|
|
387
|
+
- icons
|
|
388
|
+
- art
|
|
389
|
+
- recolour
|
|
390
|
+
- ramp
|
|
391
|
+
- consistency
|
|
392
|
+
detail: "Keying recipe used for black-background art: alpha = clip((max(R,G,B) - 10) * 255 / 50).
|
|
393
|
+
For emblem art with dark enclosed areas a flood fill from the border keeps the interior; a
|
|
394
|
+
global key opens it."
|
|
395
|
+
- id: bg3.icons.vanilla-tooltip-icons-extract-per-file-with-divine
|
|
396
|
+
claim: A single vanilla icon's full-size art is a 380x380 BC7 DDS at
|
|
397
|
+
Public/Game/GUI/Assets/Tooltips/Icons/<name>.DDS inside Game.pak and can be pulled alone with
|
|
398
|
+
divine extract-package -x "*/GUI/Assets/Tooltips/Icons/<name>.DDS" (one call per file); PIL
|
|
399
|
+
decodes it, which is enough to recolour a vanilla icon into a mod's palette without touching
|
|
400
|
+
the game's atlases. Not every stat's Icon name has such a file � two of twelve tried
|
|
401
|
+
(Spell_Abjuration_WardingBond, PassiveFeature_DualWielder_BonusAC) had none.
|
|
402
|
+
status: verified
|
|
403
|
+
verified_on: 4.73.98.727 (Patch 8)
|
|
404
|
+
source: divine list-package Game.pak (Tooltips/Icons entries, 144548 bytes each) and the extractions
|
|
405
|
+
of 2026-09-19
|
|
406
|
+
tags:
|
|
407
|
+
- icons
|
|
408
|
+
- vanilla
|
|
409
|
+
- extract
|
|
410
|
+
- divine
|
|
411
|
+
- tooltips
|
|
412
|
+
- reference
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
game: baldursgate3
|
|
2
|
+
topic: ui.mcm
|
|
3
|
+
title: Mod Configuration Menu (MCM) blueprint schema and version floors
|
|
4
|
+
facts:
|
|
5
|
+
- id: bg3.ui.mcm.blueprint-file-placement
|
|
6
|
+
claim: MCM integration requires an MCM_blueprint.json file placed in the same folder as the mod's
|
|
7
|
+
meta.lsx; this JSON file defines the mod's settings structure (IDs, names, types, defaults)
|
|
8
|
+
that MCM uses to generate the UI and validate values.
|
|
9
|
+
status: community
|
|
10
|
+
source: wiki.bg3.community/en/Tutorials/Mod-Frameworks/mod-configuration-menu §Quick-start guide
|
|
11
|
+
tags:
|
|
12
|
+
- mcm
|
|
13
|
+
- blueprint
|
|
14
|
+
- meta-lsx
|
|
15
|
+
- required-fields
|
|
16
|
+
- id: bg3.ui.mcm.dependency-recommended-in-meta-lsx
|
|
17
|
+
claim: "It is \"extremely recommended\" to declare MCM as a dependency in the mod's meta.lsx (rather
|
|
18
|
+
than only shipping MCM_blueprint.json with \"Optional\": true), so the game/mod managers
|
|
19
|
+
guarantee MCM loads before the dependent mod and don't require instructing users to order mods
|
|
20
|
+
manually."
|
|
21
|
+
status: community
|
|
22
|
+
source: wiki.bg3.community/en/Tutorials/Mod-Frameworks/mod-configuration-menu §Quick-start guide,
|
|
23
|
+
§Integrating MCM into your mod
|
|
24
|
+
tags:
|
|
25
|
+
- mcm
|
|
26
|
+
- dependency
|
|
27
|
+
- meta-lsx
|
|
28
|
+
- load-order
|
|
29
|
+
- id: bg3.ui.mcm.dependency-version64-should-pin-dev-version
|
|
30
|
+
claim: When declaring MCM as a meta.lsx dependency, it is recommended to always set the required
|
|
31
|
+
version (Version64) to the MCM version actually used during development; MCM 1.14+ verifies
|
|
32
|
+
dependency versions at load and warns users who have an outdated version of a dependency
|
|
33
|
+
installed.
|
|
34
|
+
status: community
|
|
35
|
+
source: wiki.bg3.community/en/Tutorials/Mod-Frameworks/mod-configuration-menu §Integrating MCM into
|
|
36
|
+
your mod ("It is also recommended to always set the required version (Version64) of MCM to the
|
|
37
|
+
version you're using"; "MCM 1.14+ also verifies dependencies' versions and warn users if they
|
|
38
|
+
have outdated versions")
|
|
39
|
+
tags:
|
|
40
|
+
- mcm
|
|
41
|
+
- dependency
|
|
42
|
+
- version-floor
|
|
43
|
+
- version64
|
|
44
|
+
- id: bg3.ui.mcm.schema-organizational-hierarchy
|
|
45
|
+
claim: 'The MCM blueprint schema is hierarchical: Tabs are the top-level units, Sections are
|
|
46
|
+
sub-divisions within tabs, and "Each tab can exclusively contain either Sections or standalone
|
|
47
|
+
Settings" — never both at the same tab level. Each Setting requires an Id ("A unique string
|
|
48
|
+
identifier"), a Name ("The readable name") and a Type ("Defines the data type"), which also
|
|
49
|
+
picks the widget rendered.'
|
|
50
|
+
status: community
|
|
51
|
+
source: wiki.bg3.community/en/Tutorials/Mod-Frameworks/mod-configuration-menu §Schema main components
|
|
52
|
+
tags:
|
|
53
|
+
- mcm
|
|
54
|
+
- blueprint
|
|
55
|
+
- schema
|
|
56
|
+
- tabs
|
|
57
|
+
- sections
|
|
58
|
+
- settings
|
|
59
|
+
- id: bg3.ui.mcm.get-settings-value-by-id
|
|
60
|
+
claim: A mod author replaces its own settings-reading logic with MCM.Get("settingId") calls, using
|
|
61
|
+
the same Id string defined for that setting in MCM_blueprint.json, to read the current value
|
|
62
|
+
MCM manages.
|
|
63
|
+
status: community
|
|
64
|
+
source: wiki.bg3.community/en/Tutorials/Mod-Frameworks/mod-configuration-menu §Quick-start guide
|
|
65
|
+
tags:
|
|
66
|
+
- mcm
|
|
67
|
+
- api
|
|
68
|
+
- mcm-get
|
|
69
|
+
- id: bg3.ui.mcm.use-mcm-api-not-internal-table
|
|
70
|
+
claim: Mod code should call the global MCM table's documented functions (e.g. MCM.Get) rather than
|
|
71
|
+
reaching into Mods.BG3MCM's internal implementation table directly, since internals are not a
|
|
72
|
+
stable API surface.
|
|
73
|
+
status: community
|
|
74
|
+
source: wiki.bg3.community/en/Tutorials/Mod-Frameworks/mod-configuration-menu §Use the MCM API, not
|
|
75
|
+
Mods.BG3MCM internals
|
|
76
|
+
tags:
|
|
77
|
+
- mcm
|
|
78
|
+
- api
|
|
79
|
+
- stability
|
|
80
|
+
- id: bg3.ui.mcm.keybinding-support-since-1-19
|
|
81
|
+
claim: MCM's keybinding management feature (define/update/persist keybindings, register callbacks,
|
|
82
|
+
built-in conflict resolution) was added in MCM 1.19 — a mod targeting keybinding_v2 settings
|
|
83
|
+
needs a Version64 dependency floor of at least that version.
|
|
84
|
+
status: community
|
|
85
|
+
source: wiki.bg3.community/en/Tutorials/Mod-Frameworks/mod-configuration-menu §Features for mod
|
|
86
|
+
authors ("NEW IN 1.19 - Keybinding management")
|
|
87
|
+
tags:
|
|
88
|
+
- mcm
|
|
89
|
+
- keybinding
|
|
90
|
+
- version-floor
|
|
91
|
+
- id: bg3.ui.mcm.store-api-dual-storage-backend-since-1-40
|
|
92
|
+
claim: "MCM's Store API for persisting arbitrary key-value data independent of the blueprint gained
|
|
93
|
+
multiple storage backends starting with MCM 1.40+: Script Extender ModVars (save-scoped) and
|
|
94
|
+
JSON files (global). JSON storage is the default; a value is only save-scoped instead of
|
|
95
|
+
global if storage = \"modvar\" is explicitly set, and the \"modvar\" backend is still noted as
|
|
96
|
+
work-in-progress."
|
|
97
|
+
status: community
|
|
98
|
+
source: wiki.bg3.community/en/Tutorials/Mod-Frameworks/mod-configuration-menu §Store API ("Starting
|
|
99
|
+
with MCM version 1.40+, it supports multiple storage backends"; "JSON storage is the default";
|
|
100
|
+
"modvar is still a WIP")
|
|
101
|
+
tags:
|
|
102
|
+
- mcm
|
|
103
|
+
- store-api
|
|
104
|
+
- version-floor
|
|
105
|
+
- modvar
|
|
106
|
+
- json
|
|
107
|
+
- id: bg3.ui.mcm.store-storageconfig-mirrors-native-modvar-params
|
|
108
|
+
claim: Both MCM Store backends accept a storageConfig table using the exact same parameter names as
|
|
109
|
+
BG3SE's native ModVars (Client, Server, SyncToClient, SyncToServer, Persistent,
|
|
110
|
+
WriteableOnClient, WriteableOnServer) regardless of which backend (JSON or modvar) is actually
|
|
111
|
+
selected.
|
|
112
|
+
status: community
|
|
113
|
+
source: wiki.bg3.community/en/Tutorials/Mod-Frameworks/mod-configuration-menu §Store API
|
|
114
|
+
tags:
|
|
115
|
+
- mcm
|
|
116
|
+
- store-api
|
|
117
|
+
- storageconfig
|
|
118
|
+
- modvar
|
|
119
|
+
- id: bg3.ui.mcm.ui-agnostic-works-without-imgui
|
|
120
|
+
claim: MCM is designed to function as a standalone configuration manager independent of its
|
|
121
|
+
IMGUI-based interface; a player who cannot see the IMGUI window (or if IMGUI support were
|
|
122
|
+
removed) still has a working MCM config manager underneath.
|
|
123
|
+
status: community
|
|
124
|
+
source: wiki.bg3.community/en/Tutorials/Mod-Frameworks/mod-configuration-menu §Features for mod authors
|
|
125
|
+
tags:
|
|
126
|
+
- mcm
|
|
127
|
+
- ui-agnostic
|
|
128
|
+
- imgui
|
|
129
|
+
- id: bg3.ui.mcm.blueprint-schema-source-for-validation
|
|
130
|
+
claim: MCM_blueprint.json files can be written and validated against the published JSON schema at
|
|
131
|
+
raw.githubusercontent.com/AtilioA/BG3-MCM/main/.vscode/schema.json, which is kept up to date
|
|
132
|
+
with each MCM release; setting the schema up in an editor (via a "json.schemas" entry matching
|
|
133
|
+
"MCM_blueprint*.json") catches structural mistakes before runtime.
|
|
134
|
+
status: community
|
|
135
|
+
source: wiki.bg3.community/en/Tutorials/Mod-Frameworks/mod-configuration-menu §The MCM Schema > IDE
|
|
136
|
+
support
|
|
137
|
+
tags:
|
|
138
|
+
- mcm
|
|
139
|
+
- blueprint
|
|
140
|
+
- schema
|
|
141
|
+
- validation
|
|
142
|
+
- id: bg3.ui.mcm.settings-update-instantly-without-save-reload
|
|
143
|
+
claim: MCM-integrated settings update in real time as the player changes them in the UI, without
|
|
144
|
+
requiring a save reload — unlike a traditional settings file a mod might read only once at
|
|
145
|
+
load.
|
|
146
|
+
status: community
|
|
147
|
+
source: wiki.bg3.community/en/Tutorials/Mod-Frameworks/mod-configuration-menu §Features for mod authors
|
|
148
|
+
tags:
|
|
149
|
+
- mcm
|
|
150
|
+
- settings
|
|
151
|
+
- real-time
|
|
152
|
+
- id: bg3.ui.mcm.semantic-versioning-major-means-breaking-blueprint-change
|
|
153
|
+
claim: MCM follows semantic versioning, and "MAJOR updates would probably mean introducing breaking
|
|
154
|
+
changes to blueprints" — so a MAJOR bump is the release to re-check a blueprint against, while
|
|
155
|
+
MINOR/PATCH releases are not expected to require blueprint changes.
|
|
156
|
+
status: community
|
|
157
|
+
source: wiki.bg3.community/en/Tutorials/Mod-Frameworks/mod-configuration-menu §Concepts
|
|
158
|
+
tags:
|
|
159
|
+
- mcm
|
|
160
|
+
- versioning
|
|
161
|
+
- blueprint
|