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,163 @@
|
|
|
1
|
+
game: cyberpunk2077
|
|
2
|
+
topic: toolchain.wolvenkit
|
|
3
|
+
title: wolvenkit cli and mesh import workflow
|
|
4
|
+
facts:
|
|
5
|
+
- id: cp2077.toolchain.glb-import-ignores-transforms
|
|
6
|
+
claim: wolvenkit glb import ignores node transforms from the source file;
|
|
7
|
+
transform_apply(location=True) in blender before export is mandatory to embed transforms in
|
|
8
|
+
vertex positions.
|
|
9
|
+
status: verified
|
|
10
|
+
source: ModWright field verification
|
|
11
|
+
tags:
|
|
12
|
+
- mesh
|
|
13
|
+
- import
|
|
14
|
+
- glb
|
|
15
|
+
- blender
|
|
16
|
+
- transform
|
|
17
|
+
detail: The export scripts call bpy.ops.object.transform_apply(location=True, rotation=True,
|
|
18
|
+
scale=True) on every object before joining, and clear armature parents with
|
|
19
|
+
CLEAR_KEEP_TRANSFORM first so the world transform survives. Without this the imported
|
|
20
|
+
submeshes land in the wrong place relative to the donor mesh. This is importer behaviour, not
|
|
21
|
+
an in-game observation.
|
|
22
|
+
- id: cp2077.toolchain.glb-contains-junk-icosphere
|
|
23
|
+
claim: Every glb that wolvenkit exports contains a junk 2-meter icosphere that must be deleted in
|
|
24
|
+
blender before the geometry is exported back and imported by the cli.
|
|
25
|
+
status: verified
|
|
26
|
+
source: ModWright field verification
|
|
27
|
+
tags:
|
|
28
|
+
- mesh
|
|
29
|
+
- glb
|
|
30
|
+
- blender
|
|
31
|
+
- cleanup
|
|
32
|
+
detail: "Corrected from the earlier wording, which blamed Blender's exporter: the icosphere arrives
|
|
33
|
+
in the GLBs WolvenKit exports of the vanilla donor meshes, and both the kitbash and export
|
|
34
|
+
scripts delete every object whose name contains \"Icosphere\" before doing anything else."
|
|
35
|
+
- id: cp2077.toolchain.cli-import-flag
|
|
36
|
+
claim: wolvenkit cli import command uses the `-k` flag to preserve local material edits when
|
|
37
|
+
importing a glb over an existing donor mesh.
|
|
38
|
+
status: inferred
|
|
39
|
+
source: ModWright research
|
|
40
|
+
tags:
|
|
41
|
+
- cli
|
|
42
|
+
- import
|
|
43
|
+
- materials
|
|
44
|
+
- flag
|
|
45
|
+
detail: "Only the flag itself is sourced: -k is the short form of --keep, and both spellings appear
|
|
46
|
+
in a mod's build scripts. What --keep actually preserves is nowhere stated; the \"preserves
|
|
47
|
+
the donor's material bindings\" reading is an inference from the copy-donor-then-import
|
|
48
|
+
pipeline."
|
|
49
|
+
- id: cp2077.toolchain.cli-convert-serialize
|
|
50
|
+
claim: wolvenkit cli convert serialize command transforms a cr2w binary mesh file to json format,
|
|
51
|
+
allowing programmatic field edits before deserializing back to binary.
|
|
52
|
+
status: verified
|
|
53
|
+
source: ModWright field verification
|
|
54
|
+
tags:
|
|
55
|
+
- cli
|
|
56
|
+
- convert
|
|
57
|
+
- serialize
|
|
58
|
+
- cr2w
|
|
59
|
+
- json
|
|
60
|
+
detail: Every scripted asset in a mod's pipeline is authored this way. The json carries a Header
|
|
61
|
+
(WolvenKitVersion 8.20.0, GameVersion 2310, DataType CR2W) plus Data.RootChunk. This is CLI
|
|
62
|
+
behaviour, not an in-game observation.
|
|
63
|
+
- id: cp2077.toolchain.cli-convert-deserialize
|
|
64
|
+
claim: wolvenkit cli convert deserialize command transforms json back to cr2w binary format after
|
|
65
|
+
programmatic edits, validating structure before writing.
|
|
66
|
+
status: verified
|
|
67
|
+
source: ModWright field verification
|
|
68
|
+
tags:
|
|
69
|
+
- cli
|
|
70
|
+
- convert
|
|
71
|
+
- deserialize
|
|
72
|
+
- cr2w
|
|
73
|
+
- json
|
|
74
|
+
detail: "Deserialize is the validation gate for hand-edited json — it rejected the ent-derived loot
|
|
75
|
+
chunk and it is where duplicate BufferIds surface. Its errors can be useless, though: see
|
|
76
|
+
cp2077.toolchain.redpackage-reader-rejects-unidentified-field."
|
|
77
|
+
- id: cp2077.toolchain.redpackage-reader-rejects-unidentified-field
|
|
78
|
+
claim: The RedPackage json reader can reject an instanceData chunk over a field it does not accept,
|
|
79
|
+
and bisecting the chunk does not necessarily identify which field; the working answer was to
|
|
80
|
+
adapt a chunk from a known-good sector instead.
|
|
81
|
+
status: unverified
|
|
82
|
+
source: ModWright research
|
|
83
|
+
tags:
|
|
84
|
+
- cr2w
|
|
85
|
+
- redpackage
|
|
86
|
+
- json
|
|
87
|
+
- deserialize
|
|
88
|
+
- silent-failure
|
|
89
|
+
- open-question
|
|
90
|
+
detail: Open question, deliberately recorded as unresolved. The reference chunk came from a working
|
|
91
|
+
modded ShardCaseContainer node in AldecaldosHighStakes, saved as a reference container sector
|
|
92
|
+
json; the mod's build scripts both build the chunk by deep-copying that node's instanceData
|
|
93
|
+
and overwriting $type, lootTables, lootQuality and containerType, then popping itemTDBID and
|
|
94
|
+
shardMesh.
|
|
95
|
+
- id: cp2077.toolchain.cli-extract-vs-uncook
|
|
96
|
+
claim: wolvenkit cli extract command is used for .app and .ent files (resources); uncook is used for
|
|
97
|
+
other binary formats. Never uncook .app or .ent files.
|
|
98
|
+
status: verified
|
|
99
|
+
source: ModWright field verification
|
|
100
|
+
tags:
|
|
101
|
+
- cli
|
|
102
|
+
- extract
|
|
103
|
+
- uncook
|
|
104
|
+
- app
|
|
105
|
+
- ent
|
|
106
|
+
- resource
|
|
107
|
+
detail: The lesson states the rule only; the explanation offered in the earlier version of this fact
|
|
108
|
+
("extract preserves cr2w structure, uncook is for general binaries") is not in any source.
|
|
109
|
+
- id: cp2077.toolchain.mlsetupbuilder-hexkeys
|
|
110
|
+
claim: WolvenKit's GUI shows only hex lookup keys for mlsetup files, so mlsetup editing is done in
|
|
111
|
+
MLSetupBuilder or by exporting json with cli serialize, editing, and deserializing back.
|
|
112
|
+
status: verified
|
|
113
|
+
source: ModWright field verification
|
|
114
|
+
tags:
|
|
115
|
+
- mlsetup
|
|
116
|
+
- wolvenkit
|
|
117
|
+
- editor
|
|
118
|
+
- hex
|
|
119
|
+
- json
|
|
120
|
+
detail: Corrected from the earlier wording, which attributed the hex-key limitation to
|
|
121
|
+
MLSetupBuilder. MLSetupBuilder is a separate tool; it is WolvenKit's GUI that is unusable for
|
|
122
|
+
this. A tuned mlsetup can be kept as an exported json (an edited .mlsetup.json) and
|
|
123
|
+
deserialized back when needed.
|
|
124
|
+
- id: cp2077.toolchain.cr2w-enums-are-strings
|
|
125
|
+
claim: cr2w json enums are represented as quoted STRING values (e.g. "Always"), not numbers; bare
|
|
126
|
+
enum names in json are invalid.
|
|
127
|
+
status: verified
|
|
128
|
+
source: ModWright field verification
|
|
129
|
+
tags:
|
|
130
|
+
- cr2w
|
|
131
|
+
- json
|
|
132
|
+
- enum
|
|
133
|
+
- format
|
|
134
|
+
detail: "Examples from a mod's own CR2W json: category \"Exterior\", lootQuality \"Legendary\",
|
|
135
|
+
containerType \"ClothingContainer\", Flags \"Soft\", cookingPlatform \"PLATFORM_PC\". The
|
|
136
|
+
earlier version of this fact illustrated it with TweakXL yaml (TriggerMode.Burst), which is a
|
|
137
|
+
different format entirely and not evidence for this claim."
|
|
138
|
+
- id: cp2077.toolchain.resource-path-shape
|
|
139
|
+
claim: cr2w resourcepath fields require the exact path shape (e.g., backslashes, no leading slash)
|
|
140
|
+
and case; wrong paths produce a silent failure at resource resolution time, not at import.
|
|
141
|
+
status: unverified
|
|
142
|
+
source: ModWright research
|
|
143
|
+
tags:
|
|
144
|
+
- cr2w
|
|
145
|
+
- resourcepath
|
|
146
|
+
- path
|
|
147
|
+
- format
|
|
148
|
+
detail: "Shipping examples: mod\\<modname>\\meshes\\cache_case_top.mesh,
|
|
149
|
+
mod\\<modname>\\cache_case.ent,
|
|
150
|
+
base\\gameplay\\loot\\containers\\common_suitcases\\common_suitcase_small.ent. The failure
|
|
151
|
+
mode in the claim is untested reasoning."
|
|
152
|
+
- id: cp2077.toolchain.gameversion-header
|
|
153
|
+
claim: cr2w json files must include a GameVersion header identifying the engine version the file was
|
|
154
|
+
created for; missing or incorrect version produces an import error.
|
|
155
|
+
status: unverified
|
|
156
|
+
source: ModWright research
|
|
157
|
+
tags:
|
|
158
|
+
- cr2w
|
|
159
|
+
- gameversion
|
|
160
|
+
- header
|
|
161
|
+
- format
|
|
162
|
+
detail: Every CR2W json in the reference mod carries GameVersion 2310, i.e. game 2.31; the CLI
|
|
163
|
+
writes it on serialize/extract. The "produces an import error" half of the claim is untested.
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
game: cyberpunk2077
|
|
2
|
+
topic: tweakdb.loot-recipes
|
|
3
|
+
title: Loot tables, iconic recipes, and tier-based crafting
|
|
4
|
+
facts:
|
|
5
|
+
- id: cp2077.loot.iconic-recipe-structure
|
|
6
|
+
claim: "Iconic weapon recipes follow a canonical structure: a base iconic recipe
|
|
7
|
+
(Items.Recipe_PresetName) that defines the item, plus five tier-specific variants
|
|
8
|
+
(Items.Recipe_Common/Uncommon/Rare/Epic/Legendary_Name) each with hideOnItemsAdded set to the
|
|
9
|
+
tier-specific item to gate visibility."
|
|
10
|
+
status: verified
|
|
11
|
+
verified_on: "2.31"
|
|
12
|
+
source: ModWright field verification
|
|
13
|
+
tags:
|
|
14
|
+
- recipe
|
|
15
|
+
- iconic
|
|
16
|
+
- tier
|
|
17
|
+
- gating
|
|
18
|
+
- visibility
|
|
19
|
+
detail: "Items.Recipe_Preset_<ModWeapon> ($base Items.IconicRecipe) is the base recipe; the five
|
|
20
|
+
variants are generated with $instances as Items.Recipe_$(tier)_<ModWeapon>, each with
|
|
21
|
+
craftingResult.item Items.$(tier)_<ModWeapon> and hideOnItemsAdded:
|
|
22
|
+
[Items.$(tier)_<ModWeapon>]. The cache grants exactly one spec."
|
|
23
|
+
- id: cp2077.loot.loot-table-drop-chance-structure
|
|
24
|
+
claim: "A loot table that must drop exactly one recipe (no randomness between tiers) uses
|
|
25
|
+
lootGenerationType: dropChance, minItemsToLoot: 1, maxItemsToLoot: 1, with each tier entry
|
|
26
|
+
carrying dropChance: 1 and gated by playerPrereqID."
|
|
27
|
+
status: verified
|
|
28
|
+
verified_on: "2.31"
|
|
29
|
+
source: ModWright field verification
|
|
30
|
+
tags:
|
|
31
|
+
- loot-table
|
|
32
|
+
- drop-chance
|
|
33
|
+
- prerequisite
|
|
34
|
+
- tier
|
|
35
|
+
detail: LootTables.<ModCacheLoot> is a gamedataLootTable_Record with five gamedataLootItem_Record
|
|
36
|
+
entries, each dropChance 1, dropCountMin/Max 1, an itemID and a playerPrereqID. Field names
|
|
37
|
+
corrected — the yaml spells them itemID and playerPrereqID.
|
|
38
|
+
- id: cp2077.loot.player-prereq-tier-gating
|
|
39
|
+
claim: Vanilla iconic weapon recipe loot uses playerPrereqID conditions (e.g.,
|
|
40
|
+
LootPrereqs.CraftedIconicWeaponRecipePrereq_Common through _Legendary) that gate each tier to
|
|
41
|
+
a specific player level band; a weapon mod can reuse these exact record names for
|
|
42
|
+
compatibility.
|
|
43
|
+
status: verified
|
|
44
|
+
verified_on: "2.31"
|
|
45
|
+
source: ModWright field verification
|
|
46
|
+
tags:
|
|
47
|
+
- loot
|
|
48
|
+
- prerequisite
|
|
49
|
+
- player-level
|
|
50
|
+
- gating
|
|
51
|
+
detail: The yaml comment names the vanilla pattern it copies,
|
|
52
|
+
ma_wbr_jpn_20_Igla_Sovereign_recipe_loot_table, and records the bands as <9 / 9-16 / 17-24 /
|
|
53
|
+
25-32 / 33+. Those band numbers are the comment's, not something read out of the vanilla
|
|
54
|
+
record here; what was confirmed in game is that the case drops the one recipe matching player
|
|
55
|
+
level.
|
|
56
|
+
- id: cp2077.loot.loot-quality-vs-loot-table
|
|
57
|
+
claim: A lootable entity's lootQuality field (e.g., Legendary) controls the visual tier badge shown
|
|
58
|
+
to the player; the lootTables field determines what items actually drop. Both must be present
|
|
59
|
+
and in sync for visual correctness.
|
|
60
|
+
status: inferred
|
|
61
|
+
source: ModWright research
|
|
62
|
+
tags:
|
|
63
|
+
- loot
|
|
64
|
+
- loot-quality
|
|
65
|
+
- loot-tables
|
|
66
|
+
- visual
|
|
67
|
+
detail: Field names corrected to lootQuality / lootTables. What the sources show is that the
|
|
68
|
+
shipping case sets both (lootTables [LootTables.<ModCacheLoot>], lootQuality Legendary). That
|
|
69
|
+
lootQuality drives the tier badge, and that a mismatch yields "a gold container with no
|
|
70
|
+
items", is reasoning — no source records either.
|
|
71
|
+
- id: cp2077.loot.debug-recipe-list-registration
|
|
72
|
+
claim: Iconic recipe variants must be appended to Debug.RecipeIconicFirearms.items list to appear in
|
|
73
|
+
developer menus and testing tools; absence makes them invisible to debug-time spawning.
|
|
74
|
+
status: inferred
|
|
75
|
+
source: ModWright research
|
|
76
|
+
tags:
|
|
77
|
+
- debug
|
|
78
|
+
- recipe
|
|
79
|
+
- list
|
|
80
|
+
- visibility
|
|
81
|
+
detail: The append ships, but nothing in the sources records testing what happens without it, or
|
|
82
|
+
which tools read that list. "Must" is the author's inference.
|
|
83
|
+
- id: cp2077.loot.loot-container-animated-by-transform-chunk
|
|
84
|
+
claim: A lootable world container entity requires a LootContainerObjectAnimatedByTransform chunk
|
|
85
|
+
with fields lootTables, lootQuality, and displayName to be interactable; this chunk structure
|
|
86
|
+
is mandatory and entity-level, not appearance-level.
|
|
87
|
+
status: verified
|
|
88
|
+
verified_on: "2.31"
|
|
89
|
+
source: ModWright field verification
|
|
90
|
+
tags:
|
|
91
|
+
- chunk
|
|
92
|
+
- loot
|
|
93
|
+
- container
|
|
94
|
+
- entity
|
|
95
|
+
- interactive
|
|
96
|
+
detail: "The case .ent is a clone of common_suitcase_small.ent, which is a
|
|
97
|
+
LootContainerObjectAnimatedByTransform; the same chunk type is set on the sector node's
|
|
98
|
+
instanceData. Fields written by the build scripts: lootTables, contentAssignment, lootQuality,
|
|
99
|
+
displayName on the .ent, and $type, lootTables, lootQuality, containerType on the sector chunk
|
|
100
|
+
(with itemTDBID and shardMesh popped from the donor). A hand-edited chunk was rejected by the
|
|
101
|
+
RedPackage json reader over a field that \"was never identified\", so it was adapted from the
|
|
102
|
+
AldecaldosHighStakes reference instead — see
|
|
103
|
+
cp2077.toolchain.redpackage-reader-rejects-unidentified-field."
|
|
104
|
+
- id: cp2077.loot.loot-displays-via-loc-key
|
|
105
|
+
claim: Lootable entity displayName field takes a LocKey# reference (e.g., LocKey#<Mod>-Cache-Name)
|
|
106
|
+
which must be defined in the archivexl onscreens localization file; undefined keys produce no
|
|
107
|
+
label in-game.
|
|
108
|
+
status: verified
|
|
109
|
+
verified_on: "2.31"
|
|
110
|
+
source: ModWright field verification
|
|
111
|
+
tags:
|
|
112
|
+
- loot
|
|
113
|
+
- localization
|
|
114
|
+
- display-name
|
|
115
|
+
- lockey
|
|
116
|
+
detail: "Spelling corrected to LocKey#. The value is written as {\"unk1\": \"0\", \"value\":
|
|
117
|
+
\"LocKey#<Mod>-Cache-Name\"} on the entity. Note the sector node's own chunk does not have to
|
|
118
|
+
repeat it: the build script sets lootTables, lootQuality and containerType only, leaving the
|
|
119
|
+
transplanted chunk's displayName empty, and the case still shows its name in game."
|
|
120
|
+
- id: cp2077.loot.dynamic-containers-dont-interact
|
|
121
|
+
claim: Dynamically spawned loot containers (via cet or redscript spawn) do not produce interact
|
|
122
|
+
prompts or accept looting; only sector-placed entities created at load time are interactable
|
|
123
|
+
with loot.
|
|
124
|
+
status: verified
|
|
125
|
+
verified_on: "2.31"
|
|
126
|
+
source: ModWright field verification
|
|
127
|
+
tags:
|
|
128
|
+
- loot
|
|
129
|
+
- dynamic
|
|
130
|
+
- spawn
|
|
131
|
+
- interactable
|
|
132
|
+
- sector
|
|
133
|
+
detail: Dynamic spawns in early builds left two overlapping cases, neither lootable, which a CET
|
|
134
|
+
cleanup mod then had to erase. The redscript half of the claim is an extrapolation — only CET
|
|
135
|
+
spawns were tried.
|
|
136
|
+
- id: cp2077.loot.cet-proximity-auto-grant
|
|
137
|
+
claim: Where a real lootable container cannot be made to work, a CET mod that spawns a visible case
|
|
138
|
+
and grants the item on player proximity is an acceptable substitute.
|
|
139
|
+
status: contradicted
|
|
140
|
+
source: ModWright research
|
|
141
|
+
tags:
|
|
142
|
+
- loot
|
|
143
|
+
- cet
|
|
144
|
+
- auto-grant
|
|
145
|
+
- fallback
|
|
146
|
+
- rejected
|
|
147
|
+
- retracted
|
|
148
|
+
detail: "The mechanism was built and is described as previously proven working, so this is a product
|
|
149
|
+
decision rather than a technical failure — but it was reverted, and the shipped CET mod is
|
|
150
|
+
cleanup-only. Record it so the fallback is not quietly re-built: the author wanted real loot.
|
|
151
|
+
Superseded by cp2077.loot.streaming-sector-required-for-loot."
|
|
152
|
+
- id: cp2077.loot.streaming-sector-required-for-loot
|
|
153
|
+
claim: Lootable world objects must be placed via archivexl streaming sectors (registered in .xl
|
|
154
|
+
manifest), not dynamic spawns; streaming ensures the entity loads with proper loot wiring.
|
|
155
|
+
status: verified
|
|
156
|
+
verified_on: "2.31"
|
|
157
|
+
source: ModWright field verification
|
|
158
|
+
tags:
|
|
159
|
+
- loot
|
|
160
|
+
- streaming
|
|
161
|
+
- sector
|
|
162
|
+
- archivexl
|
|
163
|
+
- interactable
|
|
164
|
+
supersedes: cp2077.loot.cet-proximity-auto-grant
|
|
165
|
+
detail: "Shipped paths, from the mod's .archive.xl: streaming block malorian\\all.streamingblock ->
|
|
166
|
+
malorian\\sectors\\malorian.streamingsector -> mod\\<modname>\\cache_case.ent. An earlier
|
|
167
|
+
hand-authored build used a streamingsector and streamingblock under mod\\<modname>\\ instead;
|
|
168
|
+
that build was abandoned."
|
|
169
|
+
- id: cp2077.loot.loot-requires-mesh-collision
|
|
170
|
+
claim: Loot interact prompts require mesh collision data; a custom mesh used in a lootable entity
|
|
171
|
+
must include a meshMeshParamPhysics chunk with box colliders set to both Simple and Complex
|
|
172
|
+
filter types.
|
|
173
|
+
status: verified
|
|
174
|
+
verified_on: "2.31"
|
|
175
|
+
source: ModWright field verification
|
|
176
|
+
tags:
|
|
177
|
+
- loot
|
|
178
|
+
- collision
|
|
179
|
+
- physics
|
|
180
|
+
- mesh
|
|
181
|
+
- interact-prompt
|
|
182
|
+
detail: Applies to custom case meshes (a top and a bottom half), which arrive with no physics. Same
|
|
183
|
+
lesson as cp2077.mesh.phys-chunk-colliders, kept here because it is what a reader chasing a
|
|
184
|
+
missing loot prompt will search for.
|