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,203 @@
1
+ game: cyberpunk2077
2
+ topic: vehicles.dashboard-ui
3
+ title: Vehicle .inkwidget/.inkstyle dashboard UI and the .inkatlas coordinate system
4
+ facts:
5
+ - id: cp2077.vehicles.dashboard-ui.inkwidget-tree-path
6
+ claim: Dashboard parts are configured in the `.inkwidget` at `RDTDataViewModel > libraryItems > 0 >
7
+ packageData > 0 > rootWidget > children > children > [part]`. Each `inkCanvasWidget` is its
8
+ own part container and can hold further parts, reached at `[root inkCanvasWidget] > children >
9
+ children > [nested inkCanvasWidget]`.
10
+ status: community
11
+ source: "wiki.redmodding.org \"Boe6's vehicles: .inkwidget and .inkstyle - Animated UI\", section
12
+ \"Learning .inkwidget files\""
13
+ tags:
14
+ - vehicle
15
+ - inkwidget
16
+ - dashboard
17
+ - ui
18
+ - resource-tree
19
+ detail: The `.inkwidget` is linked from a WorldWidgetComponent through its `widgetResource` field,
20
+ and its output is previewable in WolvenKit's "Widget Preview" panel. Section name corrected
21
+ 2026-09-07 (there is no "File Structure Overview" heading; the page's three headings are
22
+ "Learning .inkwidget files", "The .inkatlas file" and "The .inkstyle file").
23
+ - id: cp2077.vehicles.dashboard-ui.anchor-margin-anchorpoint-distinct
24
+ claim: "Positioning an `.inkwidget` element uses three distinct values: `anchor`, \"the point on
25
+ your UV map that the inkwidget starts calculating the position\", chosen from presets such as
26
+ TopLeft or CenterRight; `margin`, the final location, where `left` is the X offset and `top`
27
+ the Y offset and `bottom`/`right` can be left at 0; and `anchorPoint`, \"the part offset from
28
+ it's origin\", where an X of 1 moves the part left by 100% of the part size as defined in the
29
+ `.inkatlas`."
30
+ status: community
31
+ source: "wiki.redmodding.org \"Boe6's vehicles: .inkwidget and .inkstyle - Animated UI\", section
32
+ \"Learning .inkwidget files\""
33
+ tags:
34
+ - vehicle
35
+ - inkwidget
36
+ - anchor
37
+ - margin
38
+ - anchorpoint
39
+ - ui
40
+ detail: '"A typical speedometer will have both X and Y set at 0.5, as this sets the center of the
41
+ image as the origin, allowing an arrow in the middle to rotate around the center." An
42
+ inkCanvasWidget can also be moved under "layout > margin". Section name corrected 2026-09-07.'
43
+ - id: cp2077.vehicles.dashboard-ui.needle-rotation-fields
44
+ claim: "\"Parts that move/animate on an angle rotation are centered around the inkCanvasWidget's
45
+ origin.\" The swept range is set on the widget's `logicController`:
46
+ `analogSpeedNeedleMinRotation` (starting angle), `analogSpeedNeedleMaxRotation` (end/max
47
+ angle) and `analogSpeedNeedleMaxValue` (\"Max driving speed of the gauge, used in speedometer
48
+ for MPH value\"). 0 degrees is left from center."
49
+ status: community
50
+ source: "wiki.redmodding.org \"Boe6's vehicles: .inkwidget and .inkstyle - Animated UI\", section
51
+ \"Learning .inkwidget files\""
52
+ tags:
53
+ - vehicle
54
+ - inkwidget
55
+ - needle
56
+ - rotation
57
+ - logiccontroller
58
+ detail: "\"Some children elements may override this with a default value as a starting position, so
59
+ this needs to be changed as well. It's located in the `renderTransform > rotation` value in
60
+ the child inkCanvasWidget.\" The page's worked example uses -25 degrees at 0 speed and 205
61
+ degrees at full speed. Section name corrected 2026-09-07."
62
+ - id: cp2077.vehicles.dashboard-ui.inkstyle-linked-via-widget-arrays
63
+ claim: "\"The .inkstyle file sets the color/overlay of parts. It is linked through an .inkwidget via
64
+ it's rootWidget 'style' value, and its 'externalDependenciesForInternalItems' array.\""
65
+ status: community
66
+ source: "wiki.redmodding.org \"Boe6's vehicles: .inkwidget and .inkstyle - Animated UI\", section
67
+ \"Learning .inkwidget files\" (closing paragraphs)"
68
+ tags:
69
+ - vehicle
70
+ - inkstyle
71
+ - inkwidget
72
+ - dependency
73
+ - styling
74
+ detail: 'Spelling caution for a validator: the body text writes
75
+ `externalDependenciesForInternalItems` while the figure caption for the same field writes
76
+ `externalDependanciesForInternalItems` (with an "a"). The style path is `RDTDataViewModel >
77
+ libraryItems > Root > packageData > 0 > rootWidget > style`. An `inkStyleProperty` is
78
+ referenced back from the widget at `children > children > inkImageWidget > propertyManager >
79
+ bindings > 0`, with `propertyName` "tintColor" and `stylePath` the `propertyPath` set by the
80
+ `.inkstyle`. Section name corrected 2026-09-07.'
81
+ - id: cp2077.vehicles.dashboard-ui.imagewidget-two-part-atlas-reference
82
+ claim: '"To link an inkImageWidget to a part from the .inkatlas, two values are used":
83
+ `textureAtlas` (links to the `.inkatlas` file) and `texturePart` (links to the partName in the
84
+ `.inkatlas`). "The new .inkatlas path must be updated for every inkImageWidget."'
85
+ status: community
86
+ source: "wiki.redmodding.org \"Boe6's vehicles: .inkwidget and .inkstyle - Animated UI\", section
87
+ \"The .inkatlas file\""
88
+ tags:
89
+ - vehicle
90
+ - inkwidget
91
+ - inkatlas
92
+ - textureatlas
93
+ - texturepart
94
+ detail: 'Corrected 2026-09-07: the "a valid atlas with the wrong part name resolves to nothing"
95
+ clause is not on this page — that failure mode is recorded separately from the icons page as
96
+ cp2077.vehicles.dashboard-ui.atlaspartname-mismatch-is-silent. Section name corrected (there
97
+ is no "Texture & Image Linking" heading).'
98
+ - id: cp2077.vehicles.dashboard-ui.xbm-needs-tga-not-png-for-alpha
99
+ claim: '".xbm files that are used for a .inkwidget can be edited, but need a preserved alpha
100
+ channel. This means .png will not work. .tga files can be easily edited by both photoshop and
101
+ paint.net, and work well."'
102
+ status: community
103
+ source: "wiki.redmodding.org \"Boe6's vehicles: .inkwidget and .inkstyle - Animated UI\", section
104
+ \"The .inkatlas file\""
105
+ tags:
106
+ - vehicle
107
+ - xbm
108
+ - texture
109
+ - alpha-channel
110
+ - tga
111
+ - png
112
+ - gotcha
113
+ detail: 'TENSION with other verified facts, which are not changed by this: cp2077.ui.xbm-file-format
114
+ and cp2077.ui.icon-import-gamma-lift record a weapon mod shipping icons through a png -> xbm
115
+ WolvenKit CLI import that worked (its documented quirk being a gamma lift, not a lost alpha).
116
+ The two are reconcilable — this page is about dashboard widget textures that need alpha, the
117
+ weapon icons may not have needed one — but a validator should not treat "png never works for
118
+ .xbm" as general. Section name corrected 2026-09-07.'
119
+ - id: cp2077.vehicles.dashboard-ui.inkatlas-uv-percentage-confirms-existing
120
+ claim: Community page confirms cp2077.ui.icon-atlas-texture-resolution. "Inkatlas files don't slice
121
+ by pixel coordinates but by percentage as a float value between 0 and 1. The starting point is
122
+ the TOPLEFT corner, the ending point is the BOTTOMRIGHT corner." Each slot
123
+ (`inkTextureAtlasMapper`) has four coordinates.
124
+ status: community
125
+ source: "wiki.redmodding.org \"Game icons: .inkatlas files\", section \"Summary\"; corroborated by
126
+ \"Boe6's vehicles: .inkwidget and .inkstyle - Animated UI\", section \"The .inkatlas file\""
127
+ tags:
128
+ - inkatlas
129
+ - uv
130
+ - percentage
131
+ - coordinate-system
132
+ - icon
133
+ detail: 'Names cp2077.ui.icon-atlas-texture-resolution (knowledge/cyberpunk2077/ui.icons.yaml) as
134
+ the fact this confirms — that fact states the "displayed size = uv fraction x declared
135
+ textureResolution" formula but not that the underlying fraction is a plain 0-1 percentage
136
+ measured from the top-left. The vehicle page names the field carrying it: `RDTDataViewModel >
137
+ slots > 0/1/2 > parts > [part name] > clippingRectInUVCoords`, whose "Bottom/Left/Right/Top
138
+ values are the limits for the part image... entered as a float from 0 to 1". Section name
139
+ corrected 2026-09-07 (there is no "Coordinate System" heading).'
140
+ - id: cp2077.vehicles.dashboard-ui.inkatlas-three-resolution-slots
141
+ claim: '"Each inkatlas has three different inkTextureSlots, which support different texture
142
+ resolutions. For the purpose of modding, it is enough if you work with inkTextureSlot 0 (the
143
+ first one in the list)."'
144
+ status: community
145
+ source: 'wiki.redmodding.org "Game icons: .inkatlas files", section "`inkTextureSlot`s"'
146
+ tags:
147
+ - inkatlas
148
+ - texture-slot
149
+ - resolution
150
+ detail: "The vehicle dashboard page names the other two: at `RDTDataViewModel > slots > 0/1/2 >
151
+ texture`, \"The 1 and 2 slots are 1080p and 720p. We'll ignore them for now, they'll be
152
+ updated to match later.\" That lines up with the three-enum `textureResolution` set
153
+ (HD_1280_720, FullHD_1920_1080, UltraHD_3840_2160) recorded in
154
+ cp2077.ui.icon-atlas-texture-resolution, though neither source states outright that the slots
155
+ and the enum are the same mechanism. Section name corrected 2026-09-07."
156
+ - id: cp2077.vehicles.dashboard-ui.atlaspartname-mismatch-is-silent
157
+ claim: "Community page confirms cp2077.ui.icon-atlas-part-declaration and adds its failure mode:
158
+ \"Any atlasPartName in the `yaml` must correspond with the name of a part in the
159
+ inkTextureAtlasMapper. If the corresponding entry can't be found, an empty icon will be
160
+ displayed.\""
161
+ status: community
162
+ source: 'wiki.redmodding.org "Game icons: .inkatlas files", section "Inkatlas: Slot names"'
163
+ tags:
164
+ - inkatlas
165
+ - atlaspartname
166
+ - silent-failure
167
+ - gotcha
168
+ detail: Names cp2077.ui.icon-atlas-part-declaration (knowledge/cyberpunk2077/ui.icons.yaml), an
169
+ inferred fact that pairs `atlasResourcePath` with `atlasPartName`; the page's example UIIcon
170
+ record has exactly that shape. "Wrong case" was removed from the claim on 2026-09-07 as
171
+ unsourced. Section name corrected (there is no "Key Components > Slot Naming" heading).
172
+ - id: cp2077.vehicles.dashboard-ui.part-mapping-tab-needs-reopen
173
+ claim: 'Known WolvenKit quirk: the `Part Mapping` tab, which shows which parts of an image
174
+ correspond to each slot name, only appears once an existing xbm is hooked up — and "As of
175
+ Wolvenkit 8.11.1, this requires reopening the file".'
176
+ status: community
177
+ source: 'wiki.redmodding.org "Game icons: .inkatlas files", section "`inkTextureSlot`s" (warning
178
+ hint) and section "Inkatlas: Slot names" (figure caption)'
179
+ tags:
180
+ - inkatlas
181
+ - wolvenkit
182
+ - part-mapping
183
+ - refresh
184
+ - gotcha
185
+ detail: "Corrected 2026-09-07: the page describes the tab not APPEARING until the file is reopened,
186
+ not showing stale regions after an edit, and says \"As of Wolvenkit 8.11.1\" rather than
187
+ \"8.11.1+\". The figure caption gives the same fix from the other end: \"If you don't have a
188
+ partsMapping tab, check your texture path and reopen the InkAtlas\"."
189
+ - id: cp2077.vehicles.dashboard-ui.docs-flagged-incomplete
190
+ claim: 'The vehicle dashboard guide opens by flagging its own limits: ".inkwidget and .inkstyle
191
+ files are not currently well documented. (3/11/25) This guide will only show how to edit an
192
+ existing vehicle speedometer / gauge cluster for a vehicle."'
193
+ status: community
194
+ source: "wiki.redmodding.org \"Boe6's vehicles: .inkwidget and .inkstyle - Animated UI\", info hint
195
+ at the top of the page"
196
+ tags:
197
+ - vehicle
198
+ - inkwidget
199
+ - inkstyle
200
+ - documentation-gap
201
+ detail: 'Kept as a scope flag on every other fact in this file: none of them should be read as
202
+ covering authoring a dashboard from scratch. Section name corrected 2026-09-07 (there is no
203
+ "Important Caveat" heading).'
@@ -0,0 +1,195 @@
1
+ game: cyberpunk2077
2
+ topic: vehicles.entities
3
+ title: Vehicle .ent/.app structure, naming and drive-model tuning
4
+ facts:
5
+ - id: cp2077.vehicles.entities.four-core-file-roles
6
+ claim: "Per the vehicle guide's file-type list: \".ent file is the base file of a vehicle. It
7
+ contains all settings and child files\"; \".app is the vehicle's appearances settings\";
8
+ \".rig has 3D information for how the .mesh files are linked and move\"; \".mesh is a 3d file,
9
+ used for vehicle body parts\"."
10
+ status: community
11
+ source: "wiki.redmodding.org \"Boe6's vehicles: What you need to know\", section \"You should know
12
+ (most of) your mod file types\""
13
+ tags:
14
+ - vehicle
15
+ - ent
16
+ - app
17
+ - rig
18
+ - mesh
19
+ - file-structure
20
+ detail: "The same list covers the rest of a vehicle's files: `.xbm` raw textures, `.mlsetup`
21
+ texture-set settings, `.mlmask` zipped mask/finish layers and normal maps, `.inkatlas`
22
+ reference texture information, `.inkwidget` texture layering/position/animation, `.yaml`
23
+ TweakDB items, `.json` string localization, `.phys` collision/interaction bounds. Section name
24
+ corrected 2026-09-07 (there is no \"File Structure Overview\" heading)."
25
+ - id: cp2077.vehicles.entities.tweak-name-from-ent-filename
26
+ claim: '"The tweak name is generated out of the ent file name without the appearance":
27
+ `v_sportbike2_arch_nemesis_basic_01.ent` yields the record
28
+ `Vehicle.v_sportbike2_arch_nemesis`.'
29
+ status: community
30
+ source: 'wiki.redmodding.org "Cheat Sheet: Vehicles", section "List of vehicles" (the worked example
31
+ above the table)'
32
+ tags:
33
+ - vehicle
34
+ - naming
35
+ - tweakdb
36
+ - ent-filename
37
+ detail: 'Page title and section name corrected 2026-09-07 (the page is "Cheat Sheet: Vehicles" and
38
+ has no "Naming Convention" heading).'
39
+ - id: cp2077.vehicles.entities.master-mapping-files
40
+ claim: "`base\\vehicles\\base_types_map.csv`, referenced from `base\\appearances_mappings.json`,
41
+ \"maps vehicle names to their respective .ent files. The names are defined in each vehicle's
42
+ .app file as `baseEntityType`.\""
43
+ status: community
44
+ source: 'wiki.redmodding.org "Cheat Sheet: Vehicles", section "List of vehicles" (opening sentence)'
45
+ tags:
46
+ - vehicle
47
+ - mapping-file
48
+ - base-types-map
49
+ - appearances-mappings
50
+ - baseentitytype
51
+ detail: "Corrected 2026-09-07: the `baseEntityType` link was added and the claim that the cheat
52
+ sheet is itself built by reading these two files was removed as unsourced."
53
+ - id: cp2077.vehicles.entities.filename-regex-archived
54
+ claim: "`base\\vehicles\\vehicle_filename_parsing.json` defines a regex for allowable vehicle .ent
55
+ filenames —
56
+ `(?:v_)?([a-zA-Z]+|av)\\d?_([a-zA-Z]+)_(?:[a-zA-Z]+(?:_[a-zA-Z]+)*)__(?:int|ext)\\d{2}_([a-zA\
57
+ -Z]+(?:_[a-zA-Z]+)*)_\\d{2}.*\\.ent` — whose group 1 is the base (`av` -> Aerial; `sport`,
58
+ `standard`, `utility` -> Car), group 2 the manufacturer category, group 3 the partType. The
59
+ wiki page carrying this is marked ARCHIVED/outdated and notes the regex does not match
60
+ vehicles such as the Type 66 or the 911, because numbers are not permitted in group 2."
61
+ status: community
62
+ source: 'wiki.redmodding.org "Archived: Vehicle Filename Parsing" (whole page)'
63
+ tags:
64
+ - vehicle
65
+ - naming
66
+ - filename-prefix
67
+ - regex
68
+ - archived
69
+ detail: Renamed from cp2077.vehicles.entities.filename-prefix-conventions and re-sourced on
70
+ 2026-09-07. The previous claim's pattern
71
+ `v_[type][number]_[manufacturer]_[model]_[variant]_[number].ent` appears on no wiki page, and
72
+ its statement that Phantom Liberty's special vehicles live under `ep1\vehicles\special\`
73
+ generalised from a single row of the vehicles cheat sheet (the fake Trauma Team Manticore,
74
+ `ep1\vehicles\special\av_militech_manticore_fake_trama.ent`); other EP1 vehicles in the same
75
+ table, such as `v_standard2_archer_hella_ep1__basic_01.ent`, are not under that path. The
76
+ `av_` prefix for aerial vehicles is real and is what group 1's `av` -> Aerial mapping encodes.
77
+ - id: cp2077.vehicles.entities.guide-prerequisites
78
+ claim: "The vehicle-from-scratch guide's stated prerequisites are: WolvenKit installed and set up,
79
+ the WolvenKit Blender IO Suite, and a text editor; TweakXL (required — \"without it you won't
80
+ be able to load Vehicle tweak at all\"), ArchiveXL, Virtual Car Dealer and Material and
81
+ Texture override installed in the game; the Cyberpunk 2077 glTF Importer plugin plus Blender
82
+ skills including knowing \"the difference between object origin, world origin, and the blender
83
+ cursor\"; and a photo editor with `.tga` and alpha-channel support."
84
+ status: community
85
+ source: "wiki.redmodding.org \"Boe6's vehicles: What you need to know\", sections
86
+ \"Prerequirements\", \"Mod requirements\", \"You know your way around blender\" and
87
+ \"Knowledge of a photo editor of your choice.\""
88
+ tags:
89
+ - vehicle
90
+ - prerequisite
91
+ - blender
92
+ - gltf-importer
93
+ - tweakxl
94
+ - difficulty
95
+ detail: 'Merged on 2026-09-07 from cp2077.vehicles.entities.rigging-prerequisite-tooling and the
96
+ narrative-only cp2077.vehicles.entities.declared-most-complex-mod-type, and re-sourced
97
+ (neither "Rigging Prerequisites" nor "File Organization Pattern" is a heading on this page).
98
+ The scoping framing those carried is real: "A new standalone car is about the most complex
99
+ Cyberpunk mod you can make", "Due to the high complexity, this is not a good first mod", and
100
+ the guide asks new modders to complete the linked tutorials in the green boxes first. The page
101
+ also gives a model budget: "Vanilla game cars range between 80k and 120k vertices."'
102
+ - id: cp2077.vehicles.entities.chassis-and-total-mass-must-match
103
+ claim: In `gamedataVehicleDriveModelData_Record`, `chassis_mass` and `total_mass` are both floats in
104
+ LBS with a sample value of 1750.0. The reference states it makes sense that `chassis_mass` is
105
+ always <= `total_mass`, that the role of the difference between them is unclear, and that
106
+ "experiments show a lower car stability at high speeds when these two values are not equal".
107
+ status: community
108
+ source: 'wiki.redmodding.org "Cheat Sheet: Vehicle Properties", section
109
+ "gamedataVehicleDriveModelData_Record" (the `chassis_mass` and `total_mass` rows)'
110
+ tags:
111
+ - vehicle
112
+ - drive-model
113
+ - mass
114
+ - stability
115
+ - gotcha
116
+ detail: 'Section name corrected 2026-09-07 (there is no "Critical Units & Gotchas" section; the
117
+ speed notes live under "Summary" and the field descriptions in per-record tables). Page title
118
+ is "Cheat Sheet: Vehicle Properties".'
119
+ - id: cp2077.vehicles.entities.internal-speed-unit-conversion
120
+ claim: The game engine's internal vehicle speed unit "is about 2.4017577 mph (3.86525568 km/h)" — so
121
+ a dynamic-downforce `maxSpeed` of 100 is about 240 mph, or 386 km/h.
122
+ status: community
123
+ source: 'wiki.redmodding.org "Cheat Sheet: Vehicle Properties", section "Summary > Vehicle speed
124
+ units"'
125
+ tags:
126
+ - vehicle
127
+ - drive-model
128
+ - speed
129
+ - units
130
+ detail: "The section is labelled \"N.B. Original research.\" `maxSpeed` in
131
+ `gamedataDynamicDownforceHelper_Record` has a sample value of 40.0 and is described as \"(?)
132
+ The speed up to which the dynamic downforce graph stretches. Unit: engine's internal.\" Split
133
+ from a compound fact on 2026-09-07; see
134
+ cp2077.vehicles.entities.displayed-mph-is-double-actual for the separate display-side
135
+ conversion."
136
+ - id: cp2077.vehicles.entities.displayed-mph-is-double-actual
137
+ claim: Separately from the internal unit, "the originally displayed mph value in Cyberpunk 2077
138
+ vehicles is about double the actual mph speed. For example, when the game shows '200' mph,
139
+ that is about 100 mph (160.934 km/h)." One unit of in-game space is one meter.
140
+ status: community
141
+ source: 'wiki.redmodding.org "Cheat Sheet: Vehicle Properties", section "Summary > Vehicle speed
142
+ units"'
143
+ tags:
144
+ - vehicle
145
+ - drive-model
146
+ - speed
147
+ - units
148
+ - gotcha
149
+ detail: Split out on 2026-09-07. The previous combined fact claimed a `maxSpeed` of 100 "reads as
150
+ roughly 240 mph on the dashboard"; the page gives 240 mph / 386 km/h as a real conversion of
151
+ the internal unit, and separately says the dashboard reads about double the actual speed, so
152
+ the two corrections must not be conflated.
153
+ - id: cp2077.vehicles.entities.speed-breaker-needs-1-63-to-adjust
154
+ claim: "\"The game has a speed breaker, which resets the vehicle's speed to 0 if it hits a certain
155
+ threshold. This threshold is around or somewhat lower than 100 of the game engine's internal
156
+ speed units. It is possible to remove (or rescale?) this speed breaker threshold in version
157
+ 1.63 of the game, e.g., with the LTBF mod.\""
158
+ status: community
159
+ source: 'wiki.redmodding.org "Cheat Sheet: Vehicle Properties", section "Summary > Speed
160
+ breaker/limiter"'
161
+ tags:
162
+ - vehicle
163
+ - drive-model
164
+ - speed-breaker
165
+ - version-floor
166
+ - gotcha
167
+ detail: "Corrected 2026-09-07: the page says \"in version 1.63 of the game\", not \"1.63 and later\"
168
+ as previously recorded, and hedges the rescale with a question mark. The section is labelled
169
+ \"N.B. Original research.\" 1.63 is the game's marketing version but is a claim about which
170
+ build the removal was done on, not an observation date, so it stays in the claim rather than
171
+ becoming `verified_on`."
172
+ - id: cp2077.vehicles.entities.drive-model-descriptions-are-trial-and-error
173
+ claim: Steering fields on `gamedataVehicleDriveModelData_Record` have sample values
174
+ `maxWheelTurnDeg` 45.0 ("Determines the maximum steering angle"), `wheelTurnMaxAddPerSecond`
175
+ 100.0 ("The maximum speed of steering") and `wheelTurnMaxSubPerSecond` 130.0 ("The maximum
176
+ speed of the steering wheel/handles returning to the neutral position"). Motorcycles use a
177
+ separate `gamedataBikeDriveModelData_Record` whose `bikeMaxTilt` 38.0, `bikeTiltSpeed` 103.0
178
+ and `bikeTiltReturnSpeed` 103.0 descriptions all begin with "(?)", which the page's legend
179
+ defines as "needs verifying".
180
+ status: community
181
+ source: 'wiki.redmodding.org "Cheat Sheet: Vehicle Properties", sections "Summary" (legend and N.B.)
182
+ and "gamedataVehicleDriveModelData_Record" (including the motorcycle sub-table)'
183
+ tags:
184
+ - vehicle
185
+ - drive-model
186
+ - tuning
187
+ - unverified
188
+ - steering
189
+ - motorcycle
190
+ detail: "Renamed from cp2077.vehicles.entities.tuning-fields-flagged-as-community-typical and
191
+ corrected on 2026-09-07: the numbers are the reference's \"Sample Value\" column, not
192
+ \"community-observed typical values\"; the three steering fields are NOT flagged \"(?)\" while
193
+ all three bike fields are; and the previous claim omitted the 103.0 values. The page-level
194
+ caveat covers everything anyway: \"Descriptions of the properties are conclusions of multiple
195
+ contributors' trial and error process... there is no guarantee of it being so.\""
@@ -0,0 +1,137 @@
1
+ game: cyberpunk2077
2
+ topic: vehicles.wiring
3
+ title: How a vehicle's TweakDB record, entity files and appearance-mapping resolve together
4
+ facts:
5
+ - id: cp2077.vehicles.wiring.tweak-name-from-ent-filename
6
+ claim: A vehicle's TweakDB record name is generated by taking its `.ent` filename and stripping the
7
+ trailing appearance/variant segment; the documented example is
8
+ `v_sportbike2_arch_nemesis_basic_01.ent` -> TweakDB record `Vehicle.v_sportbike2_arch_nemesis`
9
+ (the `_basic_01` suffix is dropped).
10
+ status: community
11
+ source: CDPR-Modding-Documentation/Cyberpunk-Modding-Docs
12
+ for-mod-creators-theory/references-lists-and-overviews/vehicles/vehicles.md, section "List of
13
+ vehicles"
14
+ tags:
15
+ - vehicles
16
+ - tweakdb
17
+ - naming-convention
18
+ - .ent
19
+ - id: cp2077.vehicles.wiring.entitytemplatepath-ties-record-to-resources
20
+ claim: The vehicle root TweakDB record's `entityTemplatePath` field (type `raRef:CResource`) is the
21
+ field that ties the TweakDB record to the actual resource files used for rendering the
22
+ vehicle; the vanilla template record `Vehicle.vehicle_template` points it at
23
+ `base\vehicles\common\gameplay\vehicle_template.ent`.
24
+ status: community
25
+ source: CDPR-Modding-Documentation/Cyberpunk-Modding-Docs
26
+ for-mod-creators-theory/references-lists-and-overviews/vehicles/vehicle-record.md, section
27
+ "Vehicle template" (hint above the yaml block, and the `entityTemplatePath` member)
28
+ tags:
29
+ - vehicles
30
+ - tweakdb
31
+ - entitytemplatepath
32
+ - entity-resource-link
33
+ - id: cp2077.vehicles.wiring.affiliation-and-driving-are-tweakdbid-refs
34
+ claim: In the vehicle root TweakDB record template, `affiliation` (default `Factions.Unaffiliated`)
35
+ and `driving` (default `Driving.Default_4w`) are `TweakDBID` references into other TweakDB
36
+ record groups (`Factions.*` and `Driving.*` respectively), not inline values — a new vehicle
37
+ record normally points these at existing vanilla sibling records rather than defining new
38
+ ones.
39
+ status: community
40
+ source: CDPR-Modding-Documentation/Cyberpunk-Modding-Docs
41
+ for-mod-creators-theory/references-lists-and-overviews/vehicles/vehicle-record.md, section
42
+ "Vehicle template" (yaml block, `affiliation` and `driving` members)
43
+ tags:
44
+ - vehicles
45
+ - tweakdb
46
+ - tweakdbid
47
+ - affiliation
48
+ - driving
49
+ - id: cp2077.vehicles.wiring.appearance-mappings-registers-vehicle-lookup-files
50
+ claim: "Historically (pre-ArchiveXL era), `base\\appearance_mappings.json` registered, for the
51
+ `Vehicle` entity type, the four supporting lookup files the game used to resolve a vehicle
52
+ .ent's category and parts: `base\\vehicles\\base_types_map.csv` (base type lookup),
53
+ `base\\vehicles\\categories.csv`, `base\\vehicles\\parts.csv` and
54
+ `base\\vehicles\\parts_categories.json`, plus a filename-parsing regex file
55
+ `base\\vehicles\\vehicle_filename_parsing.json`."
56
+ status: community
57
+ source: CDPR-Modding-Documentation/Cyberpunk-Modding-Docs
58
+ for-mod-creators-theory/references-lists-and-overviews/vehicles/archive/appearances-mappings.md
59
+ (key/value table)
60
+ tags:
61
+ - vehicles
62
+ - appearance-mappings
63
+ - legacy
64
+ - csv
65
+ - lookup
66
+ detail: This page is marked with the wiki's own "outdated info" banner image and titled "Archived:"
67
+ — treat as historical/legacy documentation of how vanilla resolves vehicle categories, not a
68
+ current authoring workflow; ArchiveXL's own manifest/factory mechanism
69
+ (cp2077.archivexl.manifest.resource-patch-key and siblings) is the current path for adding
70
+ vehicles as mods.
71
+ - id: cp2077.vehicles.wiring.filename-parsing-regex-has-known-gaps
72
+ claim: The (now-archived) vehicle filename-parsing regex
73
+ `(?:v_)?([a-zA-Z]+|av)\d?_([a-zA-Z]+)_(?:[a-zA-Z]+(?:_[a-zA-Z]+)*)__(?:int|ext)\d{2}_([a-zA-Z]+(?:_[a-zA-Z]+)*)_\d{2}.*\.ent`
74
+ does not match every vanilla vehicle filename — the page notes it fails for names containing
75
+ digits in the manufacturer group (e.g. "Type 66" or "911") because the regex's manufacturer
76
+ capture group disallows digits, and it is unknown whether this parsing is even still used by
77
+ the game.
78
+ status: community
79
+ source: CDPR-Modding-Documentation/Cyberpunk-Modding-Docs
80
+ for-mod-creators-theory/references-lists-and-overviews/vehicles/archive/vehicle-filename-parsing.md
81
+ tags:
82
+ - vehicles
83
+ - filename-parsing
84
+ - regex
85
+ - gap
86
+ - legacy
87
+ detail: Also archived/outdated-marked. Not useful as a validated naming rule for new vehicle files —
88
+ cited only for the documented gap, which is itself useful context for why naming ModWright's
89
+ own vehicle fixtures after this pattern is not guaranteed to round-trip through the legacy
90
+ resolver.
91
+ - id: cp2077.vehicles.wiring.parts-categories-three-groups
92
+ claim: "Vehicle part-name tokens used in `.mesh`/`.ent` filenames are grouped into three categories:
93
+ Interior (`base`, `steering_wheel`, `pedals`), Exterior (`base`, `bumper_f`, `bumper_b`,
94
+ `hood`, `trunk`, `door_fl`, `door_fr`, `door_bl`, `door_br`, `fuelcap`, `fuelport`) and Wheel
95
+ (`wheel`); `base` is shared between Interior and Exterior."
96
+ status: community
97
+ source: CDPR-Modding-Documentation/Cyberpunk-Modding-Docs
98
+ for-mod-creators-theory/references-lists-and-overviews/vehicles/archive/parts-and-parts-categories.md
99
+ tags:
100
+ - vehicles
101
+ - parts
102
+ - naming-convention
103
+ - legacy
104
+ detail: Also marked archived/outdated by the source wiki; kept as a cite-only naming reference for
105
+ part tokens, not a guarantee the list is exhaustive for the current game version.
106
+ - id: cp2077.vehicles.wiring.mounted-weapon-shot-raises-a-gunshot
107
+ claim: Each shot of a vehicle's mounted weapon is followed by a VehicleMountedWeaponShootEvent
108
+ (weapon and slot record ids) on the vehicle, and the vehicle component answers it with a
109
+ gunshot stimulus from the vehicle (50 m) and from the mounted player. The stimulus is raised
110
+ whether or not the shot's aim was ever set, so NPCs can turn on a vehicle whose shots are not
111
+ seen.
112
+ status: verified
113
+ verified_on: "2.31"
114
+ source: ModWright field verification
115
+ tags:
116
+ - vehicles
117
+ - weapons
118
+ - mounted
119
+ - gunshot
120
+ - stimulus
121
+ - id: cp2077.vehicles.wiring.mounted-weapon-player-aim-gates
122
+ claim: An armed vehicle's weapons fire toward a target the vehicle holds at +0xB14. For a player
123
+ driver it is written by the armed car's aim update (vtable +0x3A0, fn_14698E4), which returns
124
+ without writing unless every active weapon's state (the object at weapon +0x278, field +0x68)
125
+ reads 100 and an aim source (a camera, +0x528) is held. The source's ray, cast forward, gives
126
+ the target. Without the target the fire tick still shoots from each weapon object's position
127
+ and raises its shoot event.
128
+ status: verified
129
+ verified_on: "2.31"
130
+ source: ModWright field verification
131
+ tags:
132
+ - vehicles
133
+ - weapons
134
+ - mounted
135
+ - aim
136
+ - native
137
+ - ghidra