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.
Files changed (455) hide show
  1. package/LICENSE +35 -0
  2. package/README.md +212 -0
  3. package/assets/claude/agents/mw-explore.md +46 -0
  4. package/assets/claude/agents/mw-fixture.md +33 -0
  5. package/assets/claude/agents/mw-rule-author.md +51 -0
  6. package/assets/claude/agents/mw-scaffold-author.md +48 -0
  7. package/assets/claude/skills/mw-author.md +59 -0
  8. package/assets/claude/skills/mw-new-item.md +51 -0
  9. package/assets/claude/skills/mw-new-spell.md +50 -0
  10. package/assets/claude/skills/mw-scaffold.md +59 -0
  11. package/assets/claude/skills/mw-ship.md +57 -0
  12. package/assets/claude/skills/mw-validate.md +51 -0
  13. package/assets/claude/skills/mw-verify.md +59 -0
  14. package/assets/nivalisnights/extract_resources.py +177 -0
  15. package/bridges/bg3-se/Mods/ModWrightBridge/ScriptExtender/Config.json +5 -0
  16. package/bridges/bg3-se/Mods/ModWrightBridge/ScriptExtender/Lua/BootstrapClient.lua +55 -0
  17. package/bridges/bg3-se/Mods/ModWrightBridge/ScriptExtender/Lua/BootstrapServer.lua +81 -0
  18. package/bridges/bg3-se/Mods/ModWrightBridge/ScriptExtender/Lua/ModWrightBridge/Log.lua +96 -0
  19. package/bridges/bg3-se/Mods/ModWrightBridge/ScriptExtender/Lua/ModWrightBridge/Probes.lua +1038 -0
  20. package/bridges/bg3-se/Mods/ModWrightBridge/ScriptExtender/Lua/ModWrightBridge/ProbesClient.lua +74 -0
  21. package/bridges/bg3-se/Mods/ModWrightBridge/ScriptExtender/Lua/ModWrightBridge/Protocol.lua +985 -0
  22. package/bridges/bg3-se/Mods/ModWrightBridge/ScriptExtender/Lua/ModWrightBridge/Watch.lua +175 -0
  23. package/bridges/bg3-se/Mods/ModWrightBridge/meta.lsx +45 -0
  24. package/bridges/bg3-se/README.md +99 -0
  25. package/bridges/bg3-se/bridge.json +68 -0
  26. package/bridges/cp2077-cet/ModWrightBridge/init.lua +375 -0
  27. package/bridges/cp2077-cet/ModWrightBridge/probes.lua +1104 -0
  28. package/bridges/cp2077-cet/ModWrightBridge/protocol.lua +1306 -0
  29. package/bridges/cp2077-cet/README.md +165 -0
  30. package/bridges/cp2077-cet/bridge.json +53 -0
  31. package/dist/core/bridge/arm.js +175 -0
  32. package/dist/core/bridge/cet-console.js +26 -0
  33. package/dist/core/bridge/cet-log.js +362 -0
  34. package/dist/core/bridge/index.js +11 -0
  35. package/dist/core/bridge/locate.js +35 -0
  36. package/dist/core/bridge/paths.js +34 -0
  37. package/dist/core/bridge/pending.js +89 -0
  38. package/dist/core/bridge/poll.js +155 -0
  39. package/dist/core/bridge/stage.js +100 -0
  40. package/dist/core/bridge/status.js +97 -0
  41. package/dist/core/bridge/types.js +145 -0
  42. package/dist/core/bridge/validate.js +107 -0
  43. package/dist/core/build/index.js +6 -0
  44. package/dist/core/build/manifest.js +47 -0
  45. package/dist/core/build/paths.js +32 -0
  46. package/dist/core/build/run.js +342 -0
  47. package/dist/core/build/stage.js +265 -0
  48. package/dist/core/build/steps/bg3.js +129 -0
  49. package/dist/core/build/steps/core.js +195 -0
  50. package/dist/core/build/steps/cyberpunk.js +95 -0
  51. package/dist/core/build/steps/listing.js +35 -0
  52. package/dist/core/build/types.js +13 -0
  53. package/dist/core/build/zip.js +148 -0
  54. package/dist/core/compat/check.js +113 -0
  55. package/dist/core/compat/pe.js +220 -0
  56. package/dist/core/compat/types.js +1 -0
  57. package/dist/core/compat/version.js +70 -0
  58. package/dist/core/deploy/guards.js +292 -0
  59. package/dist/core/deploy/index.js +5 -0
  60. package/dist/core/deploy/plan.js +696 -0
  61. package/dist/core/deploy/reload-apply.js +361 -0
  62. package/dist/core/deploy/reload.js +358 -0
  63. package/dist/core/deploy/sources.js +169 -0
  64. package/dist/core/deploy/types.js +1 -0
  65. package/dist/core/epic.js +54 -0
  66. package/dist/core/fsutil.js +191 -0
  67. package/dist/core/home.js +70 -0
  68. package/dist/core/knowledge/facts.js +229 -0
  69. package/dist/core/knowledge/index.js +4 -0
  70. package/dist/core/knowledge/search.js +112 -0
  71. package/dist/core/knowledge/store.js +123 -0
  72. package/dist/core/knowledge/types.js +1 -0
  73. package/dist/core/ledger/check.js +42 -0
  74. package/dist/core/ledger/hooks.js +80 -0
  75. package/dist/core/ledger/index.js +7 -0
  76. package/dist/core/ledger/query.js +17 -0
  77. package/dist/core/ledger/record.js +84 -0
  78. package/dist/core/ledger/status.js +53 -0
  79. package/dist/core/ledger/store.js +98 -0
  80. package/dist/core/ledger/types.js +108 -0
  81. package/dist/core/logs/index.js +4 -0
  82. package/dist/core/logs/registry.js +50 -0
  83. package/dist/core/logs/scan.js +195 -0
  84. package/dist/core/logs/triage.js +160 -0
  85. package/dist/core/logs/types.js +1 -0
  86. package/dist/core/lsx.js +10 -0
  87. package/dist/core/lz4.js +66 -0
  88. package/dist/core/mods.js +229 -0
  89. package/dist/core/process.js +49 -0
  90. package/dist/core/project/build-steps.js +83 -0
  91. package/dist/core/project/describe.js +74 -0
  92. package/dist/core/project/index.js +5 -0
  93. package/dist/core/project/load.js +146 -0
  94. package/dist/core/project/schema.js +264 -0
  95. package/dist/core/project/types.js +3 -0
  96. package/dist/core/prompts.js +72 -0
  97. package/dist/core/registry.js +35 -0
  98. package/dist/core/safety/backup.js +206 -0
  99. package/dist/core/safety/execute.js +188 -0
  100. package/dist/core/safety/index.js +5 -0
  101. package/dist/core/safety/plan.js +122 -0
  102. package/dist/core/safety/restore.js +172 -0
  103. package/dist/core/safety/types.js +1 -0
  104. package/dist/core/scaffold/bootstrap.js +7 -0
  105. package/dist/core/scaffold/catalog.js +28 -0
  106. package/dist/core/scaffold/claude-assets.js +271 -0
  107. package/dist/core/scaffold/collisions.js +64 -0
  108. package/dist/core/scaffold/emit.js +356 -0
  109. package/dist/core/scaffold/engine.js +680 -0
  110. package/dist/core/scaffold/ids.js +78 -0
  111. package/dist/core/scaffold/index.js +10 -0
  112. package/dist/core/scaffold/jsonpath.js +121 -0
  113. package/dist/core/scaffold/load.js +81 -0
  114. package/dist/core/scaffold/render.js +85 -0
  115. package/dist/core/scaffold/sequence.js +396 -0
  116. package/dist/core/scaffold/types.js +309 -0
  117. package/dist/core/steam.js +63 -0
  118. package/dist/core/surfaceutil.js +36 -0
  119. package/dist/core/testplan/check.js +67 -0
  120. package/dist/core/testplan/index.js +5 -0
  121. package/dist/core/testplan/load.js +100 -0
  122. package/dist/core/testplan/registry.js +317 -0
  123. package/dist/core/testplan/run.js +389 -0
  124. package/dist/core/testplan/types.js +82 -0
  125. package/dist/core/text/converters/bg3.js +50 -0
  126. package/dist/core/text/converters/cyberpunk.js +36 -0
  127. package/dist/core/text/converters/index.js +261 -0
  128. package/dist/core/text/diff/cr2w.js +180 -0
  129. package/dist/core/text/diff/index.js +16 -0
  130. package/dist/core/text/diff/loca.js +43 -0
  131. package/dist/core/text/diff/lsx.js +126 -0
  132. package/dist/core/text/handles.js +86 -0
  133. package/dist/core/text/index.js +6 -0
  134. package/dist/core/text/json.js +46 -0
  135. package/dist/core/text/templates/cache.js +71 -0
  136. package/dist/core/text/templates/index.js +3 -0
  137. package/dist/core/text/templates/library.js +245 -0
  138. package/dist/core/text/templates/types.js +51 -0
  139. package/dist/core/text/toolchain.js +16 -0
  140. package/dist/core/text/types.js +1 -0
  141. package/dist/core/text/validate.js +149 -0
  142. package/dist/core/text/xml.js +58 -0
  143. package/dist/core/toolchain/datafetch.js +151 -0
  144. package/dist/core/toolchain/env.js +63 -0
  145. package/dist/core/toolchain/features.js +170 -0
  146. package/dist/core/toolchain/index.js +8 -0
  147. package/dist/core/toolchain/install.js +191 -0
  148. package/dist/core/toolchain/locate.js +275 -0
  149. package/dist/core/toolchain/remember.js +84 -0
  150. package/dist/core/toolchain/run.js +318 -0
  151. package/dist/core/toolchain/specs.js +351 -0
  152. package/dist/core/toolchain/types.js +1 -0
  153. package/dist/core/types.js +1 -0
  154. package/dist/core/userconfig.js +66 -0
  155. package/dist/core/validate/context.js +139 -0
  156. package/dist/core/validate/index.js +5 -0
  157. package/dist/core/validate/registry.js +58 -0
  158. package/dist/core/validate/run.js +131 -0
  159. package/dist/core/validate/suppressions.js +91 -0
  160. package/dist/core/validate/types.js +2 -0
  161. package/dist/core/yamledit.js +51 -0
  162. package/dist/index.js +389 -0
  163. package/dist/server.js +1914 -0
  164. package/dist/surfaces/baldursgate3/compat.js +164 -0
  165. package/dist/surfaces/baldursgate3/identity.js +110 -0
  166. package/dist/surfaces/baldursgate3/index/build.js +331 -0
  167. package/dist/surfaces/baldursgate3/index/index.js +17 -0
  168. package/dist/surfaces/baldursgate3/index/info.js +40 -0
  169. package/dist/surfaces/baldursgate3/index/parsers/loca.js +41 -0
  170. package/dist/surfaces/baldursgate3/index/parsers/lsx.js +137 -0
  171. package/dist/surfaces/baldursgate3/index/parsers/stats.js +45 -0
  172. package/dist/surfaces/baldursgate3/index/parsers/treasuretable.js +57 -0
  173. package/dist/surfaces/baldursgate3/index/parsers/xmlutil.js +142 -0
  174. package/dist/surfaces/baldursgate3/index/queries.js +327 -0
  175. package/dist/surfaces/baldursgate3/index/schema.js +62 -0
  176. package/dist/surfaces/baldursgate3/index.js +3 -0
  177. package/dist/surfaces/baldursgate3/logs.js +278 -0
  178. package/dist/surfaces/baldursgate3/modsettings.js +115 -0
  179. package/dist/surfaces/baldursgate3/pak.js +153 -0
  180. package/dist/surfaces/baldursgate3/settings.js +49 -0
  181. package/dist/surfaces/baldursgate3/surface.js +232 -0
  182. package/dist/surfaces/baldursgate3/validators/bridge.js +7 -0
  183. package/dist/surfaces/baldursgate3/validators/files.js +476 -0
  184. package/dist/surfaces/baldursgate3/validators/items.js +1001 -0
  185. package/dist/surfaces/baldursgate3/validators/progression.js +734 -0
  186. package/dist/surfaces/baldursgate3/validators/stats.js +1076 -0
  187. package/dist/surfaces/baldursgate3/validators/story.js +790 -0
  188. package/dist/surfaces/baldursgate3/validators/templates.js +7 -0
  189. package/dist/surfaces/cyberpunk2077/compat.js +223 -0
  190. package/dist/surfaces/cyberpunk2077/index/build.js +231 -0
  191. package/dist/surfaces/cyberpunk2077/index/index.js +17 -0
  192. package/dist/surfaces/cyberpunk2077/index/info.js +51 -0
  193. package/dist/surfaces/cyberpunk2077/index/model.js +52 -0
  194. package/dist/surfaces/cyberpunk2077/index/parsers/tweak.js +483 -0
  195. package/dist/surfaces/cyberpunk2077/index/parsers/tweakxl-yaml.js +183 -0
  196. package/dist/surfaces/cyberpunk2077/index/queries.js +504 -0
  197. package/dist/surfaces/cyberpunk2077/index/resource.js +135 -0
  198. package/dist/surfaces/cyberpunk2077/index/schema.js +90 -0
  199. package/dist/surfaces/cyberpunk2077/index.js +3 -0
  200. package/dist/surfaces/cyberpunk2077/logs.js +742 -0
  201. package/dist/surfaces/cyberpunk2077/paths.js +12 -0
  202. package/dist/surfaces/cyberpunk2077/surface.js +218 -0
  203. package/dist/surfaces/cyberpunk2077/validators/bridge.js +7 -0
  204. package/dist/surfaces/cyberpunk2077/validators/cr2w.js +349 -0
  205. package/dist/surfaces/cyberpunk2077/validators/garments.js +1181 -0
  206. package/dist/surfaces/cyberpunk2077/validators/mesh.js +338 -0
  207. package/dist/surfaces/cyberpunk2077/validators/modsettings.js +120 -0
  208. package/dist/surfaces/cyberpunk2077/validators/packaging.js +463 -0
  209. package/dist/surfaces/cyberpunk2077/validators/red4ext.js +318 -0
  210. package/dist/surfaces/cyberpunk2077/validators/redscript.js +193 -0
  211. package/dist/surfaces/cyberpunk2077/validators/templates.js +7 -0
  212. package/dist/surfaces/cyberpunk2077/validators/tweaks.js +768 -0
  213. package/dist/surfaces/cyberpunk2077/validators/vehicles.js +531 -0
  214. package/dist/surfaces/cyberpunk2077/validators/xl.js +308 -0
  215. package/dist/surfaces/eldenring/binders.js +111 -0
  216. package/dist/surfaces/eldenring/compat.js +166 -0
  217. package/dist/surfaces/eldenring/dcx.js +49 -0
  218. package/dist/surfaces/eldenring/index.js +13 -0
  219. package/dist/surfaces/eldenring/loaders.js +132 -0
  220. package/dist/surfaces/eldenring/logs.js +67 -0
  221. package/dist/surfaces/eldenring/paramdef.js +256 -0
  222. package/dist/surfaces/eldenring/params.js +129 -0
  223. package/dist/surfaces/eldenring/surface.js +121 -0
  224. package/dist/surfaces/eldenring/tools.js +52 -0
  225. package/dist/surfaces/eldenring/validators/binders.js +193 -0
  226. package/dist/surfaces/eldenring/validators/packages.js +159 -0
  227. package/dist/surfaces/eldenring/validators/params.js +334 -0
  228. package/dist/surfaces/eldenring/validators/profiles.js +287 -0
  229. package/dist/surfaces/index.js +34 -0
  230. package/dist/surfaces/nivalisnights/compat.js +229 -0
  231. package/dist/surfaces/nivalisnights/index/build.js +310 -0
  232. package/dist/surfaces/nivalisnights/index/index.js +5 -0
  233. package/dist/surfaces/nivalisnights/index/queries.js +231 -0
  234. package/dist/surfaces/nivalisnights/index.js +4 -0
  235. package/dist/surfaces/nivalisnights/logs.js +473 -0
  236. package/dist/surfaces/nivalisnights/surface.js +195 -0
  237. package/dist/surfaces/skyrimse/archives.js +229 -0
  238. package/dist/surfaces/skyrimse/compat.js +163 -0
  239. package/dist/surfaces/skyrimse/index.js +12 -0
  240. package/dist/surfaces/skyrimse/loadorder.js +174 -0
  241. package/dist/surfaces/skyrimse/logs.js +241 -0
  242. package/dist/surfaces/skyrimse/plugins.js +149 -0
  243. package/dist/surfaces/skyrimse/records.js +94 -0
  244. package/dist/surfaces/skyrimse/surface.js +240 -0
  245. package/dist/surfaces/skyrimse/validators/archive-records.js +165 -0
  246. package/dist/surfaces/skyrimse/validators/archives.js +110 -0
  247. package/dist/surfaces/skyrimse/validators/plugins.js +374 -0
  248. package/dist/surfaces/skyrimse/validators/records.js +117 -0
  249. package/dist/surfaces/stardewvalley/compat.js +190 -0
  250. package/dist/surfaces/stardewvalley/config.js +42 -0
  251. package/dist/surfaces/stardewvalley/contentpatcher.js +203 -0
  252. package/dist/surfaces/stardewvalley/index/index.js +229 -0
  253. package/dist/surfaces/stardewvalley/index/wiki.js +190 -0
  254. package/dist/surfaces/stardewvalley/index.js +12 -0
  255. package/dist/surfaces/stardewvalley/logs.js +307 -0
  256. package/dist/surfaces/stardewvalley/mods.js +182 -0
  257. package/dist/surfaces/stardewvalley/surface.js +244 -0
  258. package/dist/surfaces/stardewvalley/validators/content.js +321 -0
  259. package/dist/surfaces/stardewvalley/validators/fields.js +147 -0
  260. package/dist/surfaces/stardewvalley/validators/loadorder.js +69 -0
  261. package/dist/surfaces/stardewvalley/validators/manifest.js +221 -0
  262. package/dist/surfaces/subnautica2/compat.js +138 -0
  263. package/dist/surfaces/subnautica2/index.js +5 -0
  264. package/dist/surfaces/subnautica2/logs.js +129 -0
  265. package/dist/surfaces/subnautica2/paks.js +173 -0
  266. package/dist/surfaces/subnautica2/surface.js +151 -0
  267. package/dist/surfaces/subnautica2/validators/packaging.js +298 -0
  268. package/dist/surfaces/valheim/compat.js +171 -0
  269. package/dist/surfaces/valheim/index/index.js +301 -0
  270. package/dist/surfaces/valheim/index/tables.js +103 -0
  271. package/dist/surfaces/valheim/index.js +11 -0
  272. package/dist/surfaces/valheim/logs.js +197 -0
  273. package/dist/surfaces/valheim/packaging.js +131 -0
  274. package/dist/surfaces/valheim/plugins.js +270 -0
  275. package/dist/surfaces/valheim/references.js +121 -0
  276. package/dist/surfaces/valheim/surface.js +223 -0
  277. package/dist/surfaces/valheim/validators/packaging.js +218 -0
  278. package/dist/surfaces/valheim/validators/plugins.js +287 -0
  279. package/dist/surfaces/valheim/validators/references.js +169 -0
  280. package/knowledge/baldursgate3/animations.gr2.yaml +166 -0
  281. package/knowledge/baldursgate3/audio.voice.yaml +182 -0
  282. package/knowledge/baldursgate3/audio.wwise.yaml +104 -0
  283. package/knowledge/baldursgate3/charactercreation.heads-hair.yaml +193 -0
  284. package/knowledge/baldursgate3/communitylibrary.shared-content.yaml +129 -0
  285. package/knowledge/baldursgate3/compatibilityframework.api.yaml +176 -0
  286. package/knowledge/baldursgate3/crash.causes.yaml +90 -0
  287. package/knowledge/baldursgate3/dialogue.dialogbank.yaml +120 -0
  288. package/knowledge/baldursgate3/dialogue.files.yaml +236 -0
  289. package/knowledge/baldursgate3/dialogue.osiris-goals.yaml +386 -0
  290. package/knowledge/baldursgate3/dialogue.yaml +122 -0
  291. package/knowledge/baldursgate3/feats.classes.yaml +164 -0
  292. package/knowledge/baldursgate3/items.cloth-physics.yaml +167 -0
  293. package/knowledge/baldursgate3/items.roottemplates.yaml +320 -0
  294. package/knowledge/baldursgate3/items.visualbank.yaml +628 -0
  295. package/knowledge/baldursgate3/journal.quests.yaml +214 -0
  296. package/knowledge/baldursgate3/loadorder.modsettings.yaml +128 -0
  297. package/knowledge/baldursgate3/localization.handles.yaml +92 -0
  298. package/knowledge/baldursgate3/misc.encoding-and-practice.yaml +111 -0
  299. package/knowledge/baldursgate3/origins.companions.yaml +144 -0
  300. package/knowledge/baldursgate3/osiris.signatures.yaml +211 -0
  301. package/knowledge/baldursgate3/packaging.meta.yaml +155 -0
  302. package/knowledge/baldursgate3/packaging.paks.yaml +79 -0
  303. package/knowledge/baldursgate3/process.launch.yaml +34 -0
  304. package/knowledge/baldursgate3/progressions.yaml +92 -0
  305. package/knowledge/baldursgate3/publishing.modio-nexus.yaml +170 -0
  306. package/knowledge/baldursgate3/publishing.toolkit-modio.yaml +135 -0
  307. package/knowledge/baldursgate3/races.progression.yaml +228 -0
  308. package/knowledge/baldursgate3/scriptextender.console.yaml +257 -0
  309. package/knowledge/baldursgate3/scriptextender.yaml +252 -0
  310. package/knowledge/baldursgate3/stats.boosts.yaml +293 -0
  311. package/knowledge/baldursgate3/stats.equipment-kits.yaml +69 -0
  312. package/knowledge/baldursgate3/stats.interrupts.yaml +45 -0
  313. package/knowledge/baldursgate3/stats.itemcombos.yaml +65 -0
  314. package/knowledge/baldursgate3/stats.spells.yaml +293 -0
  315. package/knowledge/baldursgate3/stats.weapons.yaml +210 -0
  316. package/knowledge/baldursgate3/toolchain.divine.yaml +179 -0
  317. package/knowledge/baldursgate3/toolchain.lslib-formats.yaml +242 -0
  318. package/knowledge/baldursgate3/toolkit.levels.yaml +177 -0
  319. package/knowledge/baldursgate3/ui.icons-atlas.yaml +78 -0
  320. package/knowledge/baldursgate3/ui.icons.yaml +412 -0
  321. package/knowledge/baldursgate3/ui.mcm.yaml +161 -0
  322. package/knowledge/baldursgate3/vfx.materials.yaml +174 -0
  323. package/knowledge/baldursgate3/visuals.characterfix.yaml +73 -0
  324. package/knowledge/cyberpunk2077/animations.anims.yaml +118 -0
  325. package/knowledge/cyberpunk2077/anims.archivexl.yaml +163 -0
  326. package/knowledge/cyberpunk2077/anims.authoring.yaml +579 -0
  327. package/knowledge/cyberpunk2077/anims.encoder.yaml +156 -0
  328. package/knowledge/cyberpunk2077/anims.graph.yaml +629 -0
  329. package/knowledge/cyberpunk2077/anims.method.yaml +360 -0
  330. package/knowledge/cyberpunk2077/anims.pipeline.yaml +352 -0
  331. package/knowledge/cyberpunk2077/anims.roundtrip.yaml +222 -0
  332. package/knowledge/cyberpunk2077/anims.sets.yaml +176 -0
  333. package/knowledge/cyberpunk2077/archivexl.bodytypes.yaml +149 -0
  334. package/knowledge/cyberpunk2077/archivexl.dynamic-appearances.yaml +218 -0
  335. package/knowledge/cyberpunk2077/archivexl.manifest.yaml +214 -0
  336. package/knowledge/cyberpunk2077/audio.events.yaml +168 -0
  337. package/knowledge/cyberpunk2077/audio.sounds.yaml +164 -0
  338. package/knowledge/cyberpunk2077/audio.voicesets.yaml +146 -0
  339. package/knowledge/cyberpunk2077/cet.sandbox.yaml +219 -0
  340. package/knowledge/cyberpunk2077/clothing.garments.yaml +283 -0
  341. package/knowledge/cyberpunk2077/clothing.refits.yaml +215 -0
  342. package/knowledge/cyberpunk2077/codeware.overview.yaml +111 -0
  343. package/knowledge/cyberpunk2077/codeware.systems.yaml +192 -0
  344. package/knowledge/cyberpunk2077/drones.combat.yaml +416 -0
  345. package/knowledge/cyberpunk2077/drones.control.yaml +552 -0
  346. package/knowledge/cyberpunk2077/entities.appearance.yaml +166 -0
  347. package/knowledge/cyberpunk2077/equipmentex.slots.yaml +151 -0
  348. package/knowledge/cyberpunk2077/fx.effects.yaml +246 -0
  349. package/knowledge/cyberpunk2077/fx.lights.yaml +171 -0
  350. package/knowledge/cyberpunk2077/hair.modding.yaml +145 -0
  351. package/knowledge/cyberpunk2077/items.wiring.yaml +246 -0
  352. package/knowledge/cyberpunk2077/loadorder.archives.yaml +71 -0
  353. package/knowledge/cyberpunk2077/mesh.blender.yaml +209 -0
  354. package/knowledge/cyberpunk2077/nativedb.dump.yaml +98 -0
  355. package/knowledge/cyberpunk2077/npc.appearance.yaml +275 -0
  356. package/knowledge/cyberpunk2077/npc.behaviour.yaml +128 -0
  357. package/knowledge/cyberpunk2077/npc.locomotion.yaml +490 -0
  358. package/knowledge/cyberpunk2077/packaging.deploy.yaml +175 -0
  359. package/knowledge/cyberpunk2077/packaging.variants.yaml +176 -0
  360. package/knowledge/cyberpunk2077/player.control.yaml +918 -0
  361. package/knowledge/cyberpunk2077/process.assetbuild.yaml +154 -0
  362. package/knowledge/cyberpunk2077/process.lessons.yaml +276 -0
  363. package/knowledge/cyberpunk2077/quests.minor.yaml +46 -0
  364. package/knowledge/cyberpunk2077/quests.scenes.yaml +282 -0
  365. package/knowledge/cyberpunk2077/quickhacks.tiers.yaml +41 -0
  366. package/knowledge/cyberpunk2077/red4ext.api.yaml +645 -0
  367. package/knowledge/cyberpunk2077/red4ext.plugins.yaml +124 -0
  368. package/knowledge/cyberpunk2077/redhottools.hotreload.yaml +245 -0
  369. package/knowledge/cyberpunk2077/redscript.compile-log.yaml +76 -0
  370. package/knowledge/cyberpunk2077/redscript.modules.yaml +118 -0
  371. package/knowledge/cyberpunk2077/toolchain.wolvenkit.yaml +163 -0
  372. package/knowledge/cyberpunk2077/tweakdb.loot-recipes.yaml +184 -0
  373. package/knowledge/cyberpunk2077/tweakdb.melee.yaml +352 -0
  374. package/knowledge/cyberpunk2077/tweakdb.weapons.yaml +325 -0
  375. package/knowledge/cyberpunk2077/tweakxl.hotreload.yaml +151 -0
  376. package/knowledge/cyberpunk2077/tweakxl.yaml-syntax.yaml +208 -0
  377. package/knowledge/cyberpunk2077/ui.icons.yaml +259 -0
  378. package/knowledge/cyberpunk2077/ui.inkatlas.yaml +81 -0
  379. package/knowledge/cyberpunk2077/ui.modsettings.yaml +204 -0
  380. package/knowledge/cyberpunk2077/vehicles.control.yaml +475 -0
  381. package/knowledge/cyberpunk2077/vehicles.dashboard-ui.yaml +203 -0
  382. package/knowledge/cyberpunk2077/vehicles.entities.yaml +195 -0
  383. package/knowledge/cyberpunk2077/vehicles.wiring.yaml +137 -0
  384. package/knowledge/cyberpunk2077/wolvenkit.cli.yaml +167 -0
  385. package/knowledge/cyberpunk2077/workspot.system.yaml +55 -0
  386. package/knowledge/cyberpunk2077/world.interactions.yaml +41 -0
  387. package/knowledge/cyberpunk2077/world.loot-container.yaml +167 -0
  388. package/knowledge/cyberpunk2077/world.sectors.yaml +233 -0
  389. package/knowledge/eldenring/formats.binders.yaml +237 -0
  390. package/knowledge/eldenring/launcher.me3.yaml +230 -0
  391. package/knowledge/eldenring/launcher.modengine2.yaml +119 -0
  392. package/knowledge/eldenring/params.paramdef.yaml +149 -0
  393. package/knowledge/eldenring/params.regulation.yaml +142 -0
  394. package/knowledge/eldenring/saves.online.yaml +118 -0
  395. package/knowledge/eldenring/toolchain.cli.yaml +256 -0
  396. package/knowledge/nivalisnights/modding.runtime.yaml +157 -0
  397. package/knowledge/skyrimse/archives.bsa.yaml +212 -0
  398. package/knowledge/skyrimse/install.detection.yaml +41 -0
  399. package/knowledge/skyrimse/loadorder.files.yaml +242 -0
  400. package/knowledge/skyrimse/plugins.esl.yaml +189 -0
  401. package/knowledge/skyrimse/plugins.format.yaml +224 -0
  402. package/knowledge/skyrimse/skse.runtime.yaml +283 -0
  403. package/knowledge/skyrimse/toolchain.xedit-spriggit.yaml +336 -0
  404. package/knowledge/stardewvalley/contentpatcher.format.yaml +338 -0
  405. package/knowledge/stardewvalley/distribution.channels.yaml +236 -0
  406. package/knowledge/stardewvalley/game.versions.yaml +202 -0
  407. package/knowledge/stardewvalley/install.layout.yaml +277 -0
  408. package/knowledge/stardewvalley/smapi.loader.yaml +284 -0
  409. package/knowledge/stardewvalley/smapi.logs.yaml +329 -0
  410. package/knowledge/stardewvalley/smapi.manifest.yaml +293 -0
  411. package/knowledge/stardewvalley/toolchain.build.yaml +261 -0
  412. package/knowledge/stardewvalley/wiki.dataformat.yaml +130 -0
  413. package/knowledge/subnautica2/game.build.yaml +331 -0
  414. package/knowledge/subnautica2/modding.state.yaml +210 -0
  415. package/knowledge/subnautica2/ue5.containers.yaml +72 -0
  416. package/knowledge/subnautica2/ue5.paks.yaml +203 -0
  417. package/knowledge/subnautica2/ue5.tooling.yaml +175 -0
  418. package/knowledge/subnautica2/ue5.ue4ss.yaml +203 -0
  419. package/knowledge/valheim/bepinex.loader.yaml +247 -0
  420. package/knowledge/valheim/bepinex.plugins.yaml +251 -0
  421. package/knowledge/valheim/game.versions.yaml +321 -0
  422. package/knowledge/valheim/install.layout.yaml +216 -0
  423. package/knowledge/valheim/jotunn.library.yaml +334 -0
  424. package/knowledge/valheim/thunderstore.packaging.yaml +217 -0
  425. package/knowledge/valheim/toolchain.build.yaml +111 -0
  426. package/package.json +29 -0
  427. package/scaffolds/baldursgate3/new-class-injection.yaml +148 -0
  428. package/scaffolds/baldursgate3/new-item.yaml +264 -0
  429. package/scaffolds/baldursgate3/new-mod.yaml +174 -0
  430. package/scaffolds/baldursgate3/new-passive.yaml +100 -0
  431. package/scaffolds/baldursgate3/new-project.yaml +118 -0
  432. package/scaffolds/baldursgate3/new-quest-stub.yaml +159 -0
  433. package/scaffolds/baldursgate3/new-spell.yaml +102 -0
  434. package/scaffolds/baldursgate3/new-status.yaml +119 -0
  435. package/scaffolds/baldursgate3/sequences/subclass-kit.yaml +50 -0
  436. package/scaffolds/cyberpunk2077/edit-tweak.yaml +70 -0
  437. package/scaffolds/cyberpunk2077/mesh-export-preset.yaml +170 -0
  438. package/scaffolds/cyberpunk2077/new-entity-patch.yaml +255 -0
  439. package/scaffolds/cyberpunk2077/new-garment-refit.yaml +279 -0
  440. package/scaffolds/cyberpunk2077/new-item-chain.yaml +548 -0
  441. package/scaffolds/cyberpunk2077/new-localization.yaml +130 -0
  442. package/scaffolds/cyberpunk2077/new-mod-settings.yaml +133 -0
  443. package/scaffolds/cyberpunk2077/new-player-replacer.yaml +1003 -0
  444. package/scaffolds/cyberpunk2077/new-project.yaml +157 -0
  445. package/scaffolds/cyberpunk2077/new-sector-node.yaml +156 -0
  446. package/scaffolds/cyberpunk2077/new-tweak.yaml +121 -0
  447. package/scaffolds/cyberpunk2077/new-vehicle-livery.yaml +148 -0
  448. package/scaffolds/cyberpunk2077/new-workspot-entity.yaml +177 -0
  449. package/scaffolds/cyberpunk2077/sequences/iconic-weapon.yaml +72 -0
  450. package/scaffolds/cyberpunk2077/sequences/quickhack-takeover.yaml +213 -0
  451. package/scaffolds/stardewvalley/new-cp-patch.yaml +106 -0
  452. package/scaffolds/stardewvalley/new-csharp-mod.yaml +195 -0
  453. package/scaffolds/stardewvalley/new-project.yaml +184 -0
  454. package/scaffolds/stardewvalley/sequences/content-pack.yaml +31 -0
  455. 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.