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,92 @@
|
|
|
1
|
+
game: baldursgate3
|
|
2
|
+
topic: progressions
|
|
3
|
+
title: Class progressions, retroactive grants, and progression descriptions
|
|
4
|
+
facts:
|
|
5
|
+
- id: bg3.progressions.structure
|
|
6
|
+
claim: Class/subclass tables are <node id="Progression"> rows keyed by Level + TableUUID, granting
|
|
7
|
+
via Selectors (AddSpells/SelectSpells/SelectSkills/SelectAbilityBonus) and
|
|
8
|
+
PassivesAdded/PassivesRemoved/Boosts. They live in Public/<Mod>/Progressions/Progressions.lsx.
|
|
9
|
+
status: verified
|
|
10
|
+
verified_on: 4.73.98.727 (Patch 8)
|
|
11
|
+
source: ModWright field verification
|
|
12
|
+
tags:
|
|
13
|
+
- progressions
|
|
14
|
+
- class
|
|
15
|
+
- structure
|
|
16
|
+
- lsx
|
|
17
|
+
detail: Progressions/ClassDescriptions .lsx are read at session load only — reload to the main menu
|
|
18
|
+
or a fresh save, never mid-session.
|
|
19
|
+
- id: bg3.progressions.not-retroactive
|
|
20
|
+
claim: Progression grants are NOT retroactive. Adding a feature/spell at level N does not appear on
|
|
21
|
+
a character already past N without a respec (Withers). Test level-gated additions on a fresh
|
|
22
|
+
character leveled up, or respec.
|
|
23
|
+
status: verified
|
|
24
|
+
verified_on: 4.73.98.727 (Patch 8)
|
|
25
|
+
source: ModWright field verification
|
|
26
|
+
tags:
|
|
27
|
+
- progressions
|
|
28
|
+
- retroactive
|
|
29
|
+
- respec
|
|
30
|
+
- testing
|
|
31
|
+
detail: A common source of "my feature isn't showing" on existing saves. Every testing checklist in
|
|
32
|
+
a class mod repeats it.
|
|
33
|
+
- id: bg3.progressions.class-anchor-description
|
|
34
|
+
claim: A mod class needs a class-name anchor ProgressionDescription (ExactMatch="<Class>",
|
|
35
|
+
Hidden=false, scoped to the class table) or the CC/level-up viewmodel never creates the class
|
|
36
|
+
feature GROUP and NOTHING boost-derived renders (not even proficiencies). Vanilla classes get
|
|
37
|
+
this implicitly; mod classes must ship it (Cantripster's pattern).
|
|
38
|
+
status: verified
|
|
39
|
+
verified_on: 4.73.98.727 (Patch 8)
|
|
40
|
+
source: ModWright field verification
|
|
41
|
+
tags:
|
|
42
|
+
- progressions
|
|
43
|
+
- class
|
|
44
|
+
- description
|
|
45
|
+
- features
|
|
46
|
+
detail: "Related, and separately confirmed in-game: the Class Features panel is passive-driven — it
|
|
47
|
+
renders passives flagged Highlighted;ForceShowInCC. Making the class's spellcasting passive
|
|
48
|
+
such a passive made the panel appear (confirmed by screenshot). The spell-SLOT card
|
|
49
|
+
specifically still did not render and remained an open question."
|
|
50
|
+
- id: bg3.progressions.subclass-anchor-description
|
|
51
|
+
claim: Subclass progression tables get their own class-name-anchor ProgressionDescription too
|
|
52
|
+
(ExactMatch = subclass Name, scoped to the subclass ProgressionTableId, Hidden=false) —
|
|
53
|
+
vanilla ships these (Champion, Assassin, Monk, …). Add one per mod subclass so the subclass
|
|
54
|
+
feature GROUP renders under its name at level-up.
|
|
55
|
+
status: verified
|
|
56
|
+
verified_on: 4.73.98.727 (Patch 8)
|
|
57
|
+
source: ModWright field verification
|
|
58
|
+
tags:
|
|
59
|
+
- progressions
|
|
60
|
+
- subclass
|
|
61
|
+
- description
|
|
62
|
+
detail: A class mod added one for each of its two subclasses (Hidden=false), mirroring the
|
|
63
|
+
base-class anchor fix. The mechanism is by analogy with the base-class anchor plus vanilla
|
|
64
|
+
precedent; the subclass render itself was gated with the rest of that phase.
|
|
65
|
+
- id: bg3.progressions.no-spell-replacement-idiom
|
|
66
|
+
claim: There is NO in-progression spell-REPLACEMENT / spell-removal idiom in stats. RemoveSpells has
|
|
67
|
+
zero occurrences across the entire vanilla stats + progressions extract, and no vanilla
|
|
68
|
+
subclass upgrades a granted spell to a stronger one in-progression. Ship the upgrade
|
|
69
|
+
additively (grant it, leave the original) or do the removal in Script Extender.
|
|
70
|
+
status: inferred
|
|
71
|
+
source: ModWright research
|
|
72
|
+
tags:
|
|
73
|
+
- progressions
|
|
74
|
+
- spells
|
|
75
|
+
- removal
|
|
76
|
+
- additive
|
|
77
|
+
detail: "A class mod shipped the additive form: its level-8 grant of Greater Invisibility does not
|
|
78
|
+
remove its level-2 spell; both remain 1/long-rest castable."
|
|
79
|
+
- id: bg3.progressions.addspells-no-levelup-card
|
|
80
|
+
claim: A direct AddSpells grant renders no level-up card. To make a granted spell show as a Class
|
|
81
|
+
Features card, pair it with a display-only Highlighted;ForceShowInCC passive (reuse the
|
|
82
|
+
spell's name/desc handles).
|
|
83
|
+
status: verified
|
|
84
|
+
verified_on: 4.73.98.727 (Patch 8)
|
|
85
|
+
source: ModWright field verification
|
|
86
|
+
tags:
|
|
87
|
+
- progressions
|
|
88
|
+
- spells
|
|
89
|
+
- addspells
|
|
90
|
+
- levelup-card
|
|
91
|
+
detail: "The passive grants nothing; it exists only to render the card. Related open item, tracked
|
|
92
|
+
as its own fact: bg3.spells.untilrest-levelup-card."
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
game: baldursgate3
|
|
2
|
+
topic: publishing.modio-nexus
|
|
3
|
+
title: Publishing to mod.io and Nexus — media specs and the SE-on-mod.io myth
|
|
4
|
+
facts:
|
|
5
|
+
- id: bg3.publishing.se-mod-io-myth
|
|
6
|
+
claim: "Near-universal community claim: \"the Toolkit doesn't support Script Extender, therefore SE
|
|
7
|
+
mods can't go on mod.io.\" It is wrong — it conflates authoring SE content in the Toolkit
|
|
8
|
+
(genuinely unsupported) with packing it."
|
|
9
|
+
status: contradicted
|
|
10
|
+
source: ModWright research
|
|
11
|
+
tags:
|
|
12
|
+
- publishing
|
|
13
|
+
- se
|
|
14
|
+
- toolkit
|
|
15
|
+
- mod.io
|
|
16
|
+
- community-myth
|
|
17
|
+
detail: "Kept so the myth is not repeated. Superseded by bg3.publishing.se-mods-can-ship-on-modio.
|
|
18
|
+
What IS real: no console curation (SE is PC-only) — don't tick PS5/Xbox in File Manager."
|
|
19
|
+
- id: bg3.publishing.se-mods-can-ship-on-modio
|
|
20
|
+
claim: SE mods CAN be published to mod.io. Toolkit Publish packs whatever sits in the project
|
|
21
|
+
folder, Mods/<Mod>/ScriptExtender/Lua/ included, and SE itself is a separately installed DLL,
|
|
22
|
+
so nothing prohibited ships in the pak.
|
|
23
|
+
status: verified
|
|
24
|
+
verified_on: 4.73.98.727 (Patch 8)
|
|
25
|
+
supersedes: bg3.publishing.se-mod-io-myth
|
|
26
|
+
source: ModWright field verification
|
|
27
|
+
tags:
|
|
28
|
+
- publishing
|
|
29
|
+
- se
|
|
30
|
+
- toolkit
|
|
31
|
+
- mod.io
|
|
32
|
+
detail: "Counter-example: Bliss (https://mod.io/g/baldursgate3/m/bliss), live since Sep 2024, 35k+
|
|
33
|
+
downloads, states on its own page that it requires SE. The MECHANISM was flagged as inferred
|
|
34
|
+
(\"verify with a throwaway Toolkit project published and left not-live before betting on
|
|
35
|
+
it\"); the practical proof here is a class mod's own Toolkit publish, whose pak was extracted
|
|
36
|
+
and diffed after upload."
|
|
37
|
+
- id: bg3.publishing.mod-io-name-limit
|
|
38
|
+
claim: mod.io mod name ≤ 50 chars — a HARD limit; publish fails over it.
|
|
39
|
+
status: community
|
|
40
|
+
source: https://docs.mod.io/restapiref/
|
|
41
|
+
tags:
|
|
42
|
+
- publishing
|
|
43
|
+
- mod.io
|
|
44
|
+
- name
|
|
45
|
+
detail: The API reference is "the only place these are actually written down"; not re-verified
|
|
46
|
+
against a failed publish here.
|
|
47
|
+
- id: bg3.publishing.mod-io-summary
|
|
48
|
+
claim: mod.io summary ≤ 250 chars, plain text.
|
|
49
|
+
status: community
|
|
50
|
+
source: https://docs.mod.io/restapiref/
|
|
51
|
+
tags:
|
|
52
|
+
- publishing
|
|
53
|
+
- mod.io
|
|
54
|
+
- summary
|
|
55
|
+
detail: One-liner pitch, no markup. Description, by contrast, supports and is encouraged to use HTML.
|
|
56
|
+
- id: bg3.publishing.mod-io-logo
|
|
57
|
+
claim: "mod.io logo (mandatory): jpg/jpeg/png, ≤ 8 MB, min 512x288, 16:9; author at 1920x1080.
|
|
58
|
+
mod.io derives 320x180 / 640x360 / 1280x720 thumbnails — a square source crops badly in every
|
|
59
|
+
tile."
|
|
60
|
+
status: community
|
|
61
|
+
source: https://docs.mod.io/restapiref/
|
|
62
|
+
tags:
|
|
63
|
+
- publishing
|
|
64
|
+
- mod.io
|
|
65
|
+
- logo
|
|
66
|
+
- image
|
|
67
|
+
detail: The 16:9 aspect is the load-bearing part; make a landscape image, not a square icon.
|
|
68
|
+
- id: bg3.publishing.mod-io-gallery
|
|
69
|
+
claim: "mod.io gallery: PNG recommended by Larian, 16:9 1920x1080, ≤ 8 MB each; bulk-uploadable as
|
|
70
|
+
images.zip."
|
|
71
|
+
status: community
|
|
72
|
+
source: https://docs.mod.io/restapiref/
|
|
73
|
+
tags:
|
|
74
|
+
- publishing
|
|
75
|
+
- mod.io
|
|
76
|
+
- gallery
|
|
77
|
+
- images
|
|
78
|
+
detail: "Open caveat: the API documents the gallery as accepting jpg/jpeg/png only, so an animated
|
|
79
|
+
gif may be rejected there even though Nexus takes it — check at upload."
|
|
80
|
+
- id: bg3.publishing.mod-io-video
|
|
81
|
+
claim: "mod.io video: YouTube links only, and web-only — they don't show in the in-game Mod Manager."
|
|
82
|
+
status: community
|
|
83
|
+
source: https://docs.mod.io/restapiref/
|
|
84
|
+
tags:
|
|
85
|
+
- publishing
|
|
86
|
+
- mod.io
|
|
87
|
+
- video
|
|
88
|
+
detail: Neither mod.io nor Nexus hosts a raw video file; both embed YouTube links.
|
|
89
|
+
- id: bg3.publishing.modmanager-tile-source
|
|
90
|
+
claim: The in-game mod-manager tile is fetched from mod.io, not read from the pak — a locally
|
|
91
|
+
sideloaded pak always shows the X placeholder no matter what art is inside it.
|
|
92
|
+
status: verified
|
|
93
|
+
verified_on: 4.73.98.727 (Patch 8)
|
|
94
|
+
source: ModWright field verification
|
|
95
|
+
tags:
|
|
96
|
+
- publishing
|
|
97
|
+
- mod-manager
|
|
98
|
+
- tile
|
|
99
|
+
- modio
|
|
100
|
+
detail: "Observed directly: sideloaded paks show the X placeholder; the tile comes from the mod.io
|
|
101
|
+
logo image."
|
|
102
|
+
- id: bg3.publishing.nexus-image-specs
|
|
103
|
+
claim: "Nexus/Vortex: the images area is built for 16:9 at 1920x1080, and the first image becomes
|
|
104
|
+
the tile that both Vortex and the site show (no separate Vortex asset exists). Per-image cap
|
|
105
|
+
is 8 MB, and gif — not webp — is the animated format Nexus accepts. Optional custom page
|
|
106
|
+
header is 1400x396. Videos get their own tab from YouTube URLs."
|
|
107
|
+
status: community
|
|
108
|
+
source: ModWright research
|
|
109
|
+
tags:
|
|
110
|
+
- publishing
|
|
111
|
+
- nexus
|
|
112
|
+
- vortex
|
|
113
|
+
- images
|
|
114
|
+
detail: "Factual correction: an earlier estimate put the per-image byte cap at \"~1.5–2 MB — confirm
|
|
115
|
+
at upload, it's the one number that moves\". 8 MB was then confirmed against the site, and the
|
|
116
|
+
capture script's -MaxMB default was changed to 8 to match. The 8 MB figure supersedes the
|
|
117
|
+
estimate."
|
|
118
|
+
- id: bg3.publishing.toolkit-publish-checklist
|
|
119
|
+
claim: "Before a Toolkit publish: (1) purge non-standard extras from the project (a binary .lsf twin
|
|
120
|
+
of the icon atlas .lsx, *.tmp.lsx next to _merged.lsf banks, duplicate loca XML, *.bak, and
|
|
121
|
+
Mods/<proj>/Globals|Levels vanilla-identical level overrides the Toolkit writes whenever you
|
|
122
|
+
select an object in the level editor); (2) sync hand edits into BOTH places the Toolkit reads
|
|
123
|
+
— Data\\Editor\\Mods\\<proj>\\Stats\\**\\*.stats and
|
|
124
|
+
Data\\Public\\<proj>\\Stats\\Generated\\...\\*.txt, plus the atlas .lsx; (3) remove the
|
|
125
|
+
Data\\Mods\\<proj> / Data\\Public\\<proj> junctions; (4) verify the output pak by Divine
|
|
126
|
+
list/extract."
|
|
127
|
+
status: verified
|
|
128
|
+
verified_on: 4.73.98.727 (Patch 8)
|
|
129
|
+
source: ModWright field verification
|
|
130
|
+
tags:
|
|
131
|
+
- publishing
|
|
132
|
+
- toolkit
|
|
133
|
+
- checklist
|
|
134
|
+
detail: "Example verification for one mod: expect 22 Story/DialogsBinary + the bank, 10 stats .txt,
|
|
135
|
+
12 Lua, no Levels/Globals, no .tmp.lsx / .lsf atlas / .bak. Then download the file row from
|
|
136
|
+
the mod.io Files tab (each row has its own link — the main Download button may serve an OLD
|
|
137
|
+
file) and confirm the inner pak is byte-identical to the local one."
|
|
138
|
+
- id: bg3.publishing.toolkit-dialogbank-fix
|
|
139
|
+
claim: If the Toolkit drops the DialogBank, rerun the Toolkit variant with --with-lsj (which adds
|
|
140
|
+
Story/Dialogs/<rel>.lsj so the DialogResource has a real source file) and publish again.
|
|
141
|
+
status: unverified
|
|
142
|
+
source: ModWright research
|
|
143
|
+
tags:
|
|
144
|
+
- publishing
|
|
145
|
+
- toolkit
|
|
146
|
+
- dialogbank
|
|
147
|
+
detail: "A pre-written contingency, not an executed one: the 2026-09-04 publishes kept the bank
|
|
148
|
+
(extract+diff confirmed 22 resources), so the --with-lsj path was never exercised."
|
|
149
|
+
- id: bg3.publishing.modio-subscription-redownloads-a-retired-pak-after-a-launch
|
|
150
|
+
claim: "While a mod's author stays subscribed to their own mod on mod.io, renaming the mod.io copy
|
|
151
|
+
(<name>_<uuid-prefix>-<hash>.pak in the profile Mods folder) out of the way is undone by the
|
|
152
|
+
next game launch: the launcher downloads it again as a fresh file, and the module UUID is
|
|
153
|
+
duplicated once more. Until the subscription is dropped, retiring the copy is a per-session
|
|
154
|
+
chore before every deploy."
|
|
155
|
+
status: verified
|
|
156
|
+
verified_on: 4.73.98.727 (Patch 8)
|
|
157
|
+
source: ModWright field verification
|
|
158
|
+
tags:
|
|
159
|
+
- mod-io
|
|
160
|
+
- subscription
|
|
161
|
+
- duplicate-uuid
|
|
162
|
+
- deploy
|
|
163
|
+
- profile-mods
|
|
164
|
+
detail: "Unsubscribing is the obvious durable fix but was not tried, so it is a suggestion, not an
|
|
165
|
+
observed one. What the launch shows is only that the re-download happens while the
|
|
166
|
+
subscription stands, and that ModWright's duplicate-module-uuid guard catches it. Not every
|
|
167
|
+
launch, either: after the 2026-09-11 evening launches and a 2026-09-12 launch no new copy
|
|
168
|
+
appeared and the deploy was not refused, so whatever brings it back is narrower than the game
|
|
169
|
+
starting. The launcher's own sync is the obvious candidate but was not observed, and which
|
|
170
|
+
route the game was started by on each occasion was not recorded."
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
game: baldursgate3
|
|
2
|
+
topic: publishing.toolkit-modio
|
|
3
|
+
title: Publishing a mod from the Toolkit — dependencies, conflicts, and mod.io flow
|
|
4
|
+
facts:
|
|
5
|
+
- id: bg3.publishing.toolkit-modio.larian-and-modio-account-linkage-required
|
|
6
|
+
claim: Publishing to mod.io from the Toolkit requires both a Larian account and a mod.io account,
|
|
7
|
+
connected to each other, set up before starting the publish process; only loading the mod
|
|
8
|
+
project (not a level) is needed before publishing.
|
|
9
|
+
status: community
|
|
10
|
+
source: docs.baldursgate3.game/Getting_Started:_Publishing_a_Mod §Introduction
|
|
11
|
+
tags:
|
|
12
|
+
- publishing
|
|
13
|
+
- toolkit
|
|
14
|
+
- larian-account
|
|
15
|
+
- modio-account
|
|
16
|
+
- id: bg3.publishing.toolkit-modio.name-description-thumbnail-mandatory
|
|
17
|
+
claim: In the Toolkit's Project Settings, the Name, Description, and Thumbnail fields are mandatory
|
|
18
|
+
before a mod can be published; all of these can still be edited afterward on mod.io itself.
|
|
19
|
+
status: community
|
|
20
|
+
source: docs.baldursgate3.game/Getting_Started:_Publishing_a_Mod §Project Settings
|
|
21
|
+
tags:
|
|
22
|
+
- publishing
|
|
23
|
+
- toolkit
|
|
24
|
+
- project-settings
|
|
25
|
+
- required-fields
|
|
26
|
+
- id: bg3.publishing.toolkit-modio.dependencies-set-in-two-separate-places
|
|
27
|
+
claim: Setting a dependency in the Toolkit's Project Settings is a different, separate action from
|
|
28
|
+
setting a dependency on mod.io — both must be done to fully wire up a dependency relationship
|
|
29
|
+
for players; the Toolkit's dependency list governs load order, while mod.io's dependency list
|
|
30
|
+
governs automatic download of required mods for players.
|
|
31
|
+
status: community
|
|
32
|
+
source: docs.baldursgate3.game/Getting_Started:_Publishing_a_Mod §Dependencies, §Editing Your Mod on
|
|
33
|
+
Mod.io § Dependencies
|
|
34
|
+
tags:
|
|
35
|
+
- publishing
|
|
36
|
+
- dependencies
|
|
37
|
+
- toolkit
|
|
38
|
+
- modio
|
|
39
|
+
- load-order
|
|
40
|
+
- id: bg3.publishing.toolkit-modio.dependency-changes-require-toolkit-restart
|
|
41
|
+
claim: Changing a project's dependencies in the Toolkit requires closing and reopening the Toolkit
|
|
42
|
+
before those changes appear reflected in the Resource Manager — the dependency change does not
|
|
43
|
+
take effect live.
|
|
44
|
+
status: community
|
|
45
|
+
source: docs.baldursgate3.game/Getting_Started:_Publishing_a_Mod §Dependencies
|
|
46
|
+
tags:
|
|
47
|
+
- publishing
|
|
48
|
+
- dependencies
|
|
49
|
+
- toolkit
|
|
50
|
+
- gui-only
|
|
51
|
+
- gotcha
|
|
52
|
+
- id: bg3.publishing.toolkit-modio.conflict-disables-mod-and-cascades-to-its-own-dependencies
|
|
53
|
+
claim: Declaring mod A as a conflict of mod B causes the game to automatically disable mod B when
|
|
54
|
+
mod A is also active; disabling mod B in turn disables B's own dependencies too, unless
|
|
55
|
+
another active mod also depends on them (in which case those shared dependencies stay
|
|
56
|
+
enabled).
|
|
57
|
+
status: community
|
|
58
|
+
source: docs.baldursgate3.game/Getting_Started:_Publishing_a_Mod §Conflicts
|
|
59
|
+
tags:
|
|
60
|
+
- publishing
|
|
61
|
+
- conflicts
|
|
62
|
+
- cascading-disable
|
|
63
|
+
- id: bg3.publishing.toolkit-modio.save-before-closing-project-settings
|
|
64
|
+
claim: Changes made on the Dependencies and Conflicts tabs of Project Settings must be explicitly
|
|
65
|
+
saved before closing the window, or they are lost.
|
|
66
|
+
status: community
|
|
67
|
+
source: docs.baldursgate3.game/Getting_Started:_Publishing_a_Mod §Conflicts
|
|
68
|
+
tags:
|
|
69
|
+
- publishing
|
|
70
|
+
- project-settings
|
|
71
|
+
- save
|
|
72
|
+
- id: bg3.publishing.toolkit-modio.publish-local-vs-publish-to-modio
|
|
73
|
+
claim: "\"Publish Local\" packages a .pak file to a location you choose without any authentication
|
|
74
|
+
and without uploading anywhere; publishing \"to mod.io\" is a separate authenticated flow (via
|
|
75
|
+
Steam or a Larian account) that both packages and uploads the mod, showing a progress bar and,
|
|
76
|
+
on success, a specific success line in the Toolkit's Message Log panel."
|
|
77
|
+
status: community
|
|
78
|
+
source: docs.baldursgate3.game/Getting_Started:_Publishing_a_Mod §Publishing Locally, §Publishing to
|
|
79
|
+
Mod.io
|
|
80
|
+
tags:
|
|
81
|
+
- publishing
|
|
82
|
+
- publish-local
|
|
83
|
+
- modio
|
|
84
|
+
- authentication
|
|
85
|
+
- id: bg3.publishing.toolkit-modio.scan-gate-blocks-going-live
|
|
86
|
+
claim: Immediately after publishing to mod.io, a mod's File Manager page shows a "Needs
|
|
87
|
+
File"/scan-pending state (a clock icon under "Scan") and the mod cannot be set live until
|
|
88
|
+
Larian's automated scan of the uploaded file completes — mod profile fields (name, summary,
|
|
89
|
+
description, tags, media) can still be edited during this waiting period.
|
|
90
|
+
status: community
|
|
91
|
+
source: docs.baldursgate3.game/Getting_Started:_Publishing_a_Mod §Editing Your Mod on Mod.io
|
|
92
|
+
tags:
|
|
93
|
+
- publishing
|
|
94
|
+
- modio
|
|
95
|
+
- scan
|
|
96
|
+
- go-live
|
|
97
|
+
- id: bg3.publishing.toolkit-modio.media-recommends-png-youtube-web-only
|
|
98
|
+
claim: "Larian's own publishing doc confirms both existing media facts: it recommends \"sticking to
|
|
99
|
+
.png files\" for gallery images (bg3.publishing.mod-io-gallery, \"PNG recommended by Larian\")
|
|
100
|
+
and states that YouTube videos \"will only be displayed on the web, not in-game\"
|
|
101
|
+
(bg3.publishing.mod-io-video)."
|
|
102
|
+
status: community
|
|
103
|
+
source: docs.baldursgate3.game/Getting_Started:_Publishing_a_Mod §General Settings > Media
|
|
104
|
+
tags:
|
|
105
|
+
- publishing
|
|
106
|
+
- modio
|
|
107
|
+
- media
|
|
108
|
+
- screenshots
|
|
109
|
+
detail: "Kept as the confirming citation only: the byte caps and pixel dimensions in
|
|
110
|
+
bg3.publishing.mod-io-logo / -gallery come from the mod.io REST API reference and are not
|
|
111
|
+
restated here."
|
|
112
|
+
- id: bg3.publishing.toolkit-modio.go-live-is-a-separate-manual-step
|
|
113
|
+
claim: Publishing and uploading a mod to mod.io does not itself make it visible/downloadable — a
|
|
114
|
+
separate "Go live" button on the mod's mod.io page must be clicked after verifying details; a
|
|
115
|
+
mod can be left un-live indefinitely while its details are edited, as long as Save is pressed
|
|
116
|
+
before leaving the page.
|
|
117
|
+
status: community
|
|
118
|
+
source: docs.baldursgate3.game/Getting_Started:_Publishing_a_Mod §Setting the Mod Live
|
|
119
|
+
tags:
|
|
120
|
+
- publishing
|
|
121
|
+
- modio
|
|
122
|
+
- go-live
|
|
123
|
+
- workflow
|
|
124
|
+
- id: bg3.publishing.toolkit-modio.mod-folder-must-be-under-localappdata
|
|
125
|
+
claim: For a mod to appear in the Toolkit's Dependencies/Conflicts selection lists, it must be
|
|
126
|
+
present (as a downloaded mod folder) under %localappdata%\Larian Studios\Baldur's Gate 3\Mods\
|
|
127
|
+
— a mod not visible there needs to be downloaded first before it can be picked as a dependency
|
|
128
|
+
or conflict.
|
|
129
|
+
status: community
|
|
130
|
+
source: docs.baldursgate3.game/Getting_Started:_Publishing_a_Mod §Dependencies, §Conflicts
|
|
131
|
+
tags:
|
|
132
|
+
- publishing
|
|
133
|
+
- toolkit
|
|
134
|
+
- mod-folder
|
|
135
|
+
- dependencies
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
game: baldursgate3
|
|
2
|
+
topic: races.progression
|
|
3
|
+
title: Race Progression tables, UUID linkage, and race setup
|
|
4
|
+
facts:
|
|
5
|
+
- id: bg3.races.progression.uuid-vs-tableuuid
|
|
6
|
+
claim: "Every Progression node has two distinct UUIDs: its own UUID identifies that single
|
|
7
|
+
Progression node only, while TableUUID is shared by every Progression node belonging to the
|
|
8
|
+
same race/subrace or class/subclass and is what the owning entity's ProgressionTableUUID field
|
|
9
|
+
points to. Referencing the node UUID targets only that one level; referencing the TableUUID
|
|
10
|
+
targets the whole progression table."
|
|
11
|
+
status: community
|
|
12
|
+
source: wiki.bg3.community/en/Information/Progression/Progressions
|
|
13
|
+
tags:
|
|
14
|
+
- progressions
|
|
15
|
+
- uuid
|
|
16
|
+
- tableuuid
|
|
17
|
+
- races
|
|
18
|
+
detail: 'Worked example from the page: TableUUID "ba2afe85-acba-4ea1-a238-2b4543f47821" is shared by
|
|
19
|
+
every base Paladin Progression node (Level 1, Level 4, Level 12, ...), while UUID
|
|
20
|
+
"b60618d1-c262-42b5-9fdd-2c0f7aa5e5af" refers only to the non-multiclass Level 1 Paladin
|
|
21
|
+
node.'
|
|
22
|
+
- id: bg3.races.progression.race-links-via-progressiontableuuid
|
|
23
|
+
claim: "A Race node's ProgressionTableUUID field must be set to the TableUUID shared across the
|
|
24
|
+
Progression nodes meant for that race — the final wiring step: \"In Races.lsx, where we
|
|
25
|
+
defined the race, we need to go take a look at our race's ProgressionTableUUID. Here, we'll
|
|
26
|
+
want to copy/paste our TableUUID from our Progressions nodes.\""
|
|
27
|
+
status: community
|
|
28
|
+
source: github.com/BG3-Community-Library-Team/BG3-Community-Library/wiki/Building-a-Race-Mod §Racial
|
|
29
|
+
Progressions > Applying the Progression
|
|
30
|
+
tags:
|
|
31
|
+
- progressions
|
|
32
|
+
- tableuuid
|
|
33
|
+
- races
|
|
34
|
+
- uuid-linkage
|
|
35
|
+
detail: The page presents it as the step that makes the race "fully-featured"; it does not state a
|
|
36
|
+
symptom for getting it wrong, so treat "no abilities at level-up" as the expected consequence,
|
|
37
|
+
not a documented one.
|
|
38
|
+
- id: bg3.races.progression.race-root-required-fields
|
|
39
|
+
claim: A Races.lsx Race node requires (at minimum) Description and DisplayName (TranslatedString
|
|
40
|
+
handles), a DisplayTypeUUID (typically mirroring ParentGuid), Name (FixedString,
|
|
41
|
+
conventionally prefixed to avoid collisions), ParentGuid (guid of the parent race, e.g.
|
|
42
|
+
Humanoid), ProgressionTableUUID (guid), RaceSoundSwitch (FixedString), and its own UUID
|
|
43
|
+
(guid).
|
|
44
|
+
status: community
|
|
45
|
+
source: github.com/BG3-Community-Library-Team/BG3-Community-Library/wiki/Building-a-Race-Mod §Race
|
|
46
|
+
Entry (annotated Shadar-Kai Race node)
|
|
47
|
+
tags:
|
|
48
|
+
- races
|
|
49
|
+
- races-lsx
|
|
50
|
+
- required-fields
|
|
51
|
+
- id: bg3.races.progression.internal-name-prefix-convention
|
|
52
|
+
claim: Race internal Name (and Tag Name) fields are conventionally prefixed (e.g. "CL_") to avoid
|
|
53
|
+
collisions with other mods' race and tag names, since Name is a FixedString the game and other
|
|
54
|
+
mods can reference by exact string.
|
|
55
|
+
status: community
|
|
56
|
+
source: github.com/BG3-Community-Library-Team/BG3-Community-Library/wiki/Building-a-Race-Mod §Race
|
|
57
|
+
Entry ("Write an internal name, prefixed with CL_ to help ensure there aren't any collisions
|
|
58
|
+
with other mods"), §Anatomy of a Tag (tag Name "CL_ShadarKai")
|
|
59
|
+
tags:
|
|
60
|
+
- races
|
|
61
|
+
- naming-convention
|
|
62
|
+
- tags
|
|
63
|
+
- id: bg3.races.progression.tag-filename-differs-from-internal-uuid
|
|
64
|
+
claim: A race Tag's filename is a UUID generated separately from — and distinct from — the Tag
|
|
65
|
+
node's own internal UUID attribute; a RootTemplate or Race referencing that tag must reference
|
|
66
|
+
it by the filename UUID, not by the tag's internal UUID field.
|
|
67
|
+
status: community
|
|
68
|
+
source: github.com/BG3-Community-Library-Team/BG3-Community-Library/wiki/Building-a-Race-Mod §Tags >
|
|
69
|
+
Anatomy of a Tag, §Using the Tag
|
|
70
|
+
tags:
|
|
71
|
+
- races
|
|
72
|
+
- tags
|
|
73
|
+
- uuid
|
|
74
|
+
- gotcha
|
|
75
|
+
detail: "Verbatim: \"UUID: This is an ID for your tag. However, this is not how you'll reference the
|
|
76
|
+
tag in other files - you'll instead want to use its Filename, which is a different UUID.\" The
|
|
77
|
+
same distinction applies to a class's Tags reference — see
|
|
78
|
+
bg3.feats.classes.tags-live-in-children-node."
|
|
79
|
+
- id: bg3.races.progression.charactervisuals-lsf-must-convert-to-lsx
|
|
80
|
+
claim: Character Visuals for a race are stored as _merged.lsf files that must be converted to .lsx
|
|
81
|
+
to be hand-edited, then converted back to .lsf before packing the mod.
|
|
82
|
+
status: community
|
|
83
|
+
source: github.com/BG3-Community-Library-Team/BG3-Community-Library/wiki/Building-a-Race-Mod
|
|
84
|
+
§Character Visuals, §Wrapping Up
|
|
85
|
+
tags:
|
|
86
|
+
- races
|
|
87
|
+
- character-visuals
|
|
88
|
+
- lsf
|
|
89
|
+
- lsx
|
|
90
|
+
detail: They arrive bundled as Public/ModName/Content/[PAK]_CharacterVisuals/_merged.lsf; convert
|
|
91
|
+
the whole file, edit, then "convert our _merged.lsx files back into _merged.lsf" before
|
|
92
|
+
packing.
|
|
93
|
+
- id: bg3.races.progression.four-body-variants-required
|
|
94
|
+
claim: A complete playable race needs 6 Root Templates (Base Female, Base Male, Female Player,
|
|
95
|
+
Female Player Strong, Male Player, Male Player Strong) and 6 Character Visual Resource nodes —
|
|
96
|
+
2 base plus 4 player variants — and 4 CharacterCreationPresets nodes, "one each for Feminine,
|
|
97
|
+
Masculine, Feminine Strong, and Masculine Strong".
|
|
98
|
+
status: community
|
|
99
|
+
source: "github.com/BG3-Community-Library-Team/BG3-Community-Library/wiki/Building-a-Race-Mod §Root
|
|
100
|
+
Templates (\"you'll typically have 6 per race\"), §Character Visuals (\"There will be 6 total
|
|
101
|
+
Resource nodes you'll want: 2 Within Community Library, and 4 within your Implementation
|
|
102
|
+
Mod\"), §Character Creation > Creating Presets"
|
|
103
|
+
tags:
|
|
104
|
+
- races
|
|
105
|
+
- character-creation
|
|
106
|
+
- body-type
|
|
107
|
+
detail: "The split is deliberate in the Community Library workflow: the 2 base templates/visuals
|
|
108
|
+
live in the Community Library so other mods can build NPCs on them, the 4 player ones in your
|
|
109
|
+
implementation mod. A Strong player template additionally carries EquipmentRace (\"Without it,
|
|
110
|
+
there'll be a ton of clipping\") and GeneratePortrait."
|
|
111
|
+
- id: bg3.races.progression.ccpreset-vo-lines-table-default
|
|
112
|
+
claim: CharacterCreationPresets.lsx's VOLinesTableUUID field controls which voice-preview lines play
|
|
113
|
+
in character creation; the community template recommends leaving it at the default table UUID
|
|
114
|
+
(14df8f45-90af-4bd0-8024-42624da9976e) for a standard playable race.
|
|
115
|
+
status: community
|
|
116
|
+
source: wiki.bg3.community/en/Tutorials/Races/Creating-A-Basic-Race-Mod
|
|
117
|
+
tags:
|
|
118
|
+
- races
|
|
119
|
+
- character-creation-presets
|
|
120
|
+
- voice
|
|
121
|
+
- uuid
|
|
122
|
+
- id: bg3.races.progression.camera-closeups-need-adjustment-for-nonstandard-height
|
|
123
|
+
claim: "CharacterCreationPresets' CloseUpA/CloseUpB/Overview camera values need adjusting for a
|
|
124
|
+
non-standard stature: \"The default camera values given are fine for standard body humans,
|
|
125
|
+
elves, half-elves, drow, and tieflings. However, if you are making a shorter or taller race,
|
|
126
|
+
you will need to adjust those camera values so that the camera will zoom in the correct
|
|
127
|
+
place.\""
|
|
128
|
+
status: community
|
|
129
|
+
source: wiki.bg3.community/en/Tutorials/Races/Creating-A-Basic-Race-Mod
|
|
130
|
+
tags:
|
|
131
|
+
- races
|
|
132
|
+
- character-creation-presets
|
|
133
|
+
- camera
|
|
134
|
+
- id: bg3.races.progression.progressiontype-numeric-values
|
|
135
|
+
claim: "A Progression node's ProgressionType attribute distinguishes what kind of entity it belongs
|
|
136
|
+
to: 0 = Class Progression, 1 = Subclass Progression, 2 = Race Progression."
|
|
137
|
+
status: community
|
|
138
|
+
source: wiki.bg3.community/en/Tutorials/Classes/Basic-Class-Creation §Subclasses ("0 is for classes,
|
|
139
|
+
1 is for subclasses, 2 is for races"); confirmed by the Community Library wiki,
|
|
140
|
+
Building-a-Race-Mod §Racial Progressions (race Progression nodes carry ProgressionType uint8
|
|
141
|
+
value="2")
|
|
142
|
+
tags:
|
|
143
|
+
- progressions
|
|
144
|
+
- progressiontype
|
|
145
|
+
- races
|
|
146
|
+
- classes
|
|
147
|
+
- id: bg3.races.progression.character-visuals-slots-set-default-mesh
|
|
148
|
+
claim: "A race's per-body-type Character Visuals Resource node carries child Slots nodes, each
|
|
149
|
+
pairing a Slot name (Head, Hair, ModestyLeaf, Private Parts, ...) with a VisualResource UUID;
|
|
150
|
+
that UUID is what ties the slot to the CharacterCreationAppearanceVisuals file, which the page
|
|
151
|
+
states as: \"Matched to the CharacterCreationAppearanceVisuals file using the VisualResource
|
|
152
|
+
UUID.\""
|
|
153
|
+
status: community
|
|
154
|
+
source: wiki.bg3.community/en/Tutorials/Races/Creating-A-Basic-Race-Mod
|
|
155
|
+
tags:
|
|
156
|
+
- races
|
|
157
|
+
- character-visuals
|
|
158
|
+
- slots
|
|
159
|
+
- default-appearance
|
|
160
|
+
- id: bg3.races.progression.roottemplate-race-attribute-must-match
|
|
161
|
+
claim: "The Race attribute on a race's BASE Root Templates must be the UUID of that race's Races.lsx
|
|
162
|
+
entry (\"Race: This will be the UUID field of your Race entry in Races.lsx\"); the
|
|
163
|
+
player/implementation Root Templates in the worked example carry no Race attribute at all and
|
|
164
|
+
inherit through ParentTemplateId. The tag wiring step is scoped the same way: \"Whichever Root
|
|
165
|
+
Templates you've added that have a Race field, you'll want to open and perform these actions
|
|
166
|
+
on.\""
|
|
167
|
+
status: community
|
|
168
|
+
source: github.com/BG3-Community-Library-Team/BG3-Community-Library/wiki/Building-a-Race-Mod §Base
|
|
169
|
+
Root Templates, §Implementation Root Templates, §Ensuring the Tags reach the Root Template
|
|
170
|
+
correctly
|
|
171
|
+
tags:
|
|
172
|
+
- races
|
|
173
|
+
- roottemplate
|
|
174
|
+
- uuid-linkage
|
|
175
|
+
detail: "Corrected from \"every RootTemplate ... base and player variants alike\": the page's
|
|
176
|
+
implementation templates (Elves_Female_ShadarKai_Player, ..._Player_Strong) set
|
|
177
|
+
ParentTemplateId to the base template and omit Race. A validator should require Race on
|
|
178
|
+
templates that declare one, not on all of them."
|
|
179
|
+
- id: bg3.races.progression.charactercreationpreset-required-fields
|
|
180
|
+
claim: "A CharacterCreationPresets.lsx CharacterCreationPreset node's fields, per the community race
|
|
181
|
+
template: BodyShape (uint8), BodyType (uint8), CloseUpA/CloseUpB/Overview (LSString camera
|
|
182
|
+
resource names), RaceUUID (the owning race's Races.lsx UUID), RootTemplate (a guid pointing
|
|
183
|
+
into the race's own RootTemplates file, not the race's Races.lsx UUID), SubRaceUUID (all-zero
|
|
184
|
+
00000000-0000-0000-0000-000000000000 when the preset has no subrace), UUID (this preset's own
|
|
185
|
+
unique id), and VOLinesTableUUID."
|
|
186
|
+
status: community
|
|
187
|
+
source: bg3-community/Tutorials/Races/Creating-A-Basic-Race-Mod.html §Understanding The Files,
|
|
188
|
+
CharacterCreationPresets.lsx (annotated Female/Male Standard preset nodes)
|
|
189
|
+
tags:
|
|
190
|
+
- races
|
|
191
|
+
- character-creation-presets
|
|
192
|
+
- required-fields
|
|
193
|
+
related:
|
|
194
|
+
- id: bg3.races.progression.ccpreset-vo-lines-table-default
|
|
195
|
+
detail: Same file/node this existing fact's VOLinesTableUUID field belongs to; adds the complete
|
|
196
|
+
field list around it, including that RootTemplate here is a distinct UUID from RaceUUID
|
|
197
|
+
(one points at Races.lsx, the other at the race's RootTemplates file).
|
|
198
|
+
- id: bg3.races.progression.bodyshape-bodytype-numeric-values
|
|
199
|
+
claim: CharacterCreationPreset's BodyShape attribute uses 0 for "Standard" (the community template's
|
|
200
|
+
only documented value); BodyType uses 0 for Male and 1 for Female, per the template's own
|
|
201
|
+
inline comments on its Male/Female Standard preset pair.
|
|
202
|
+
status: community
|
|
203
|
+
source: bg3-community/Tutorials/Races/Creating-A-Basic-Race-Mod.html §Understanding The Files,
|
|
204
|
+
CharacterCreationPresets.lsx (comments "0 = Standard" on BodyShape; "1 = Female" / "0 = Male"
|
|
205
|
+
on BodyType)
|
|
206
|
+
tags:
|
|
207
|
+
- races
|
|
208
|
+
- character-creation-presets
|
|
209
|
+
- bodyshape
|
|
210
|
+
- bodytype
|
|
211
|
+
- enum
|
|
212
|
+
detail: Only Standard (0) is demonstrated in the template; whether other BodyShape values exist
|
|
213
|
+
(e.g. for a Strong variant) is not stated on this page — see
|
|
214
|
+
bg3.races.progression.four-body-variants-required for the separate Strong-variant pattern,
|
|
215
|
+
which uses distinct Root Templates rather than a BodyShape value.
|
|
216
|
+
- id: bg3.races.progression.tan-square-icon-is-expected-patch7-placeholder
|
|
217
|
+
claim: As of Patch 7, a freshly created custom race's selection icon in Character Creation renders
|
|
218
|
+
as a tan square placeholder — the tutorial states this explicitly is "normal" and not a sign
|
|
219
|
+
of a broken race setup, before any custom race icon has been authored.
|
|
220
|
+
status: community
|
|
221
|
+
source: bg3-community/Tutorials/Races/Creating-A-Basic-Race-Mod.html §Seeing What We've Got ("as of
|
|
222
|
+
Patch 7, the custom race icon may appear as a tan square. That is normal.")
|
|
223
|
+
tags:
|
|
224
|
+
- races
|
|
225
|
+
- icon
|
|
226
|
+
- placeholder
|
|
227
|
+
- patch7
|
|
228
|
+
- gotcha
|