modwright 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +35 -0
- package/README.md +212 -0
- package/assets/claude/agents/mw-explore.md +46 -0
- package/assets/claude/agents/mw-fixture.md +33 -0
- package/assets/claude/agents/mw-rule-author.md +51 -0
- package/assets/claude/agents/mw-scaffold-author.md +48 -0
- package/assets/claude/skills/mw-author.md +59 -0
- package/assets/claude/skills/mw-new-item.md +51 -0
- package/assets/claude/skills/mw-new-spell.md +50 -0
- package/assets/claude/skills/mw-scaffold.md +59 -0
- package/assets/claude/skills/mw-ship.md +57 -0
- package/assets/claude/skills/mw-validate.md +51 -0
- package/assets/claude/skills/mw-verify.md +59 -0
- package/assets/nivalisnights/extract_resources.py +177 -0
- package/bridges/bg3-se/Mods/ModWrightBridge/ScriptExtender/Config.json +5 -0
- package/bridges/bg3-se/Mods/ModWrightBridge/ScriptExtender/Lua/BootstrapClient.lua +55 -0
- package/bridges/bg3-se/Mods/ModWrightBridge/ScriptExtender/Lua/BootstrapServer.lua +81 -0
- package/bridges/bg3-se/Mods/ModWrightBridge/ScriptExtender/Lua/ModWrightBridge/Log.lua +96 -0
- package/bridges/bg3-se/Mods/ModWrightBridge/ScriptExtender/Lua/ModWrightBridge/Probes.lua +1038 -0
- package/bridges/bg3-se/Mods/ModWrightBridge/ScriptExtender/Lua/ModWrightBridge/ProbesClient.lua +74 -0
- package/bridges/bg3-se/Mods/ModWrightBridge/ScriptExtender/Lua/ModWrightBridge/Protocol.lua +985 -0
- package/bridges/bg3-se/Mods/ModWrightBridge/ScriptExtender/Lua/ModWrightBridge/Watch.lua +175 -0
- package/bridges/bg3-se/Mods/ModWrightBridge/meta.lsx +45 -0
- package/bridges/bg3-se/README.md +99 -0
- package/bridges/bg3-se/bridge.json +68 -0
- package/bridges/cp2077-cet/ModWrightBridge/init.lua +375 -0
- package/bridges/cp2077-cet/ModWrightBridge/probes.lua +1104 -0
- package/bridges/cp2077-cet/ModWrightBridge/protocol.lua +1306 -0
- package/bridges/cp2077-cet/README.md +165 -0
- package/bridges/cp2077-cet/bridge.json +53 -0
- package/dist/core/bridge/arm.js +175 -0
- package/dist/core/bridge/cet-console.js +26 -0
- package/dist/core/bridge/cet-log.js +362 -0
- package/dist/core/bridge/index.js +11 -0
- package/dist/core/bridge/locate.js +35 -0
- package/dist/core/bridge/paths.js +34 -0
- package/dist/core/bridge/pending.js +89 -0
- package/dist/core/bridge/poll.js +155 -0
- package/dist/core/bridge/stage.js +100 -0
- package/dist/core/bridge/status.js +97 -0
- package/dist/core/bridge/types.js +145 -0
- package/dist/core/bridge/validate.js +107 -0
- package/dist/core/build/index.js +6 -0
- package/dist/core/build/manifest.js +47 -0
- package/dist/core/build/paths.js +32 -0
- package/dist/core/build/run.js +342 -0
- package/dist/core/build/stage.js +265 -0
- package/dist/core/build/steps/bg3.js +129 -0
- package/dist/core/build/steps/core.js +195 -0
- package/dist/core/build/steps/cyberpunk.js +95 -0
- package/dist/core/build/steps/listing.js +35 -0
- package/dist/core/build/types.js +13 -0
- package/dist/core/build/zip.js +148 -0
- package/dist/core/compat/check.js +113 -0
- package/dist/core/compat/pe.js +220 -0
- package/dist/core/compat/types.js +1 -0
- package/dist/core/compat/version.js +70 -0
- package/dist/core/deploy/guards.js +292 -0
- package/dist/core/deploy/index.js +5 -0
- package/dist/core/deploy/plan.js +696 -0
- package/dist/core/deploy/reload-apply.js +361 -0
- package/dist/core/deploy/reload.js +358 -0
- package/dist/core/deploy/sources.js +169 -0
- package/dist/core/deploy/types.js +1 -0
- package/dist/core/epic.js +54 -0
- package/dist/core/fsutil.js +191 -0
- package/dist/core/home.js +70 -0
- package/dist/core/knowledge/facts.js +229 -0
- package/dist/core/knowledge/index.js +4 -0
- package/dist/core/knowledge/search.js +112 -0
- package/dist/core/knowledge/store.js +123 -0
- package/dist/core/knowledge/types.js +1 -0
- package/dist/core/ledger/check.js +42 -0
- package/dist/core/ledger/hooks.js +80 -0
- package/dist/core/ledger/index.js +7 -0
- package/dist/core/ledger/query.js +17 -0
- package/dist/core/ledger/record.js +84 -0
- package/dist/core/ledger/status.js +53 -0
- package/dist/core/ledger/store.js +98 -0
- package/dist/core/ledger/types.js +108 -0
- package/dist/core/logs/index.js +4 -0
- package/dist/core/logs/registry.js +50 -0
- package/dist/core/logs/scan.js +195 -0
- package/dist/core/logs/triage.js +160 -0
- package/dist/core/logs/types.js +1 -0
- package/dist/core/lsx.js +10 -0
- package/dist/core/lz4.js +66 -0
- package/dist/core/mods.js +229 -0
- package/dist/core/process.js +49 -0
- package/dist/core/project/build-steps.js +83 -0
- package/dist/core/project/describe.js +74 -0
- package/dist/core/project/index.js +5 -0
- package/dist/core/project/load.js +146 -0
- package/dist/core/project/schema.js +264 -0
- package/dist/core/project/types.js +3 -0
- package/dist/core/prompts.js +72 -0
- package/dist/core/registry.js +35 -0
- package/dist/core/safety/backup.js +206 -0
- package/dist/core/safety/execute.js +188 -0
- package/dist/core/safety/index.js +5 -0
- package/dist/core/safety/plan.js +122 -0
- package/dist/core/safety/restore.js +172 -0
- package/dist/core/safety/types.js +1 -0
- package/dist/core/scaffold/bootstrap.js +7 -0
- package/dist/core/scaffold/catalog.js +28 -0
- package/dist/core/scaffold/claude-assets.js +271 -0
- package/dist/core/scaffold/collisions.js +64 -0
- package/dist/core/scaffold/emit.js +356 -0
- package/dist/core/scaffold/engine.js +680 -0
- package/dist/core/scaffold/ids.js +78 -0
- package/dist/core/scaffold/index.js +10 -0
- package/dist/core/scaffold/jsonpath.js +121 -0
- package/dist/core/scaffold/load.js +81 -0
- package/dist/core/scaffold/render.js +85 -0
- package/dist/core/scaffold/sequence.js +396 -0
- package/dist/core/scaffold/types.js +309 -0
- package/dist/core/steam.js +63 -0
- package/dist/core/surfaceutil.js +36 -0
- package/dist/core/testplan/check.js +67 -0
- package/dist/core/testplan/index.js +5 -0
- package/dist/core/testplan/load.js +100 -0
- package/dist/core/testplan/registry.js +317 -0
- package/dist/core/testplan/run.js +389 -0
- package/dist/core/testplan/types.js +82 -0
- package/dist/core/text/converters/bg3.js +50 -0
- package/dist/core/text/converters/cyberpunk.js +36 -0
- package/dist/core/text/converters/index.js +261 -0
- package/dist/core/text/diff/cr2w.js +180 -0
- package/dist/core/text/diff/index.js +16 -0
- package/dist/core/text/diff/loca.js +43 -0
- package/dist/core/text/diff/lsx.js +126 -0
- package/dist/core/text/handles.js +86 -0
- package/dist/core/text/index.js +6 -0
- package/dist/core/text/json.js +46 -0
- package/dist/core/text/templates/cache.js +71 -0
- package/dist/core/text/templates/index.js +3 -0
- package/dist/core/text/templates/library.js +245 -0
- package/dist/core/text/templates/types.js +51 -0
- package/dist/core/text/toolchain.js +16 -0
- package/dist/core/text/types.js +1 -0
- package/dist/core/text/validate.js +149 -0
- package/dist/core/text/xml.js +58 -0
- package/dist/core/toolchain/datafetch.js +151 -0
- package/dist/core/toolchain/env.js +63 -0
- package/dist/core/toolchain/features.js +170 -0
- package/dist/core/toolchain/index.js +8 -0
- package/dist/core/toolchain/install.js +191 -0
- package/dist/core/toolchain/locate.js +275 -0
- package/dist/core/toolchain/remember.js +84 -0
- package/dist/core/toolchain/run.js +318 -0
- package/dist/core/toolchain/specs.js +351 -0
- package/dist/core/toolchain/types.js +1 -0
- package/dist/core/types.js +1 -0
- package/dist/core/userconfig.js +66 -0
- package/dist/core/validate/context.js +139 -0
- package/dist/core/validate/index.js +5 -0
- package/dist/core/validate/registry.js +58 -0
- package/dist/core/validate/run.js +131 -0
- package/dist/core/validate/suppressions.js +91 -0
- package/dist/core/validate/types.js +2 -0
- package/dist/core/yamledit.js +51 -0
- package/dist/index.js +389 -0
- package/dist/server.js +1914 -0
- package/dist/surfaces/baldursgate3/compat.js +164 -0
- package/dist/surfaces/baldursgate3/identity.js +110 -0
- package/dist/surfaces/baldursgate3/index/build.js +331 -0
- package/dist/surfaces/baldursgate3/index/index.js +17 -0
- package/dist/surfaces/baldursgate3/index/info.js +40 -0
- package/dist/surfaces/baldursgate3/index/parsers/loca.js +41 -0
- package/dist/surfaces/baldursgate3/index/parsers/lsx.js +137 -0
- package/dist/surfaces/baldursgate3/index/parsers/stats.js +45 -0
- package/dist/surfaces/baldursgate3/index/parsers/treasuretable.js +57 -0
- package/dist/surfaces/baldursgate3/index/parsers/xmlutil.js +142 -0
- package/dist/surfaces/baldursgate3/index/queries.js +327 -0
- package/dist/surfaces/baldursgate3/index/schema.js +62 -0
- package/dist/surfaces/baldursgate3/index.js +3 -0
- package/dist/surfaces/baldursgate3/logs.js +278 -0
- package/dist/surfaces/baldursgate3/modsettings.js +115 -0
- package/dist/surfaces/baldursgate3/pak.js +153 -0
- package/dist/surfaces/baldursgate3/settings.js +49 -0
- package/dist/surfaces/baldursgate3/surface.js +232 -0
- package/dist/surfaces/baldursgate3/validators/bridge.js +7 -0
- package/dist/surfaces/baldursgate3/validators/files.js +476 -0
- package/dist/surfaces/baldursgate3/validators/items.js +1001 -0
- package/dist/surfaces/baldursgate3/validators/progression.js +734 -0
- package/dist/surfaces/baldursgate3/validators/stats.js +1076 -0
- package/dist/surfaces/baldursgate3/validators/story.js +790 -0
- package/dist/surfaces/baldursgate3/validators/templates.js +7 -0
- package/dist/surfaces/cyberpunk2077/compat.js +223 -0
- package/dist/surfaces/cyberpunk2077/index/build.js +231 -0
- package/dist/surfaces/cyberpunk2077/index/index.js +17 -0
- package/dist/surfaces/cyberpunk2077/index/info.js +51 -0
- package/dist/surfaces/cyberpunk2077/index/model.js +52 -0
- package/dist/surfaces/cyberpunk2077/index/parsers/tweak.js +483 -0
- package/dist/surfaces/cyberpunk2077/index/parsers/tweakxl-yaml.js +183 -0
- package/dist/surfaces/cyberpunk2077/index/queries.js +504 -0
- package/dist/surfaces/cyberpunk2077/index/resource.js +135 -0
- package/dist/surfaces/cyberpunk2077/index/schema.js +90 -0
- package/dist/surfaces/cyberpunk2077/index.js +3 -0
- package/dist/surfaces/cyberpunk2077/logs.js +742 -0
- package/dist/surfaces/cyberpunk2077/paths.js +12 -0
- package/dist/surfaces/cyberpunk2077/surface.js +218 -0
- package/dist/surfaces/cyberpunk2077/validators/bridge.js +7 -0
- package/dist/surfaces/cyberpunk2077/validators/cr2w.js +349 -0
- package/dist/surfaces/cyberpunk2077/validators/garments.js +1181 -0
- package/dist/surfaces/cyberpunk2077/validators/mesh.js +338 -0
- package/dist/surfaces/cyberpunk2077/validators/modsettings.js +120 -0
- package/dist/surfaces/cyberpunk2077/validators/packaging.js +463 -0
- package/dist/surfaces/cyberpunk2077/validators/red4ext.js +318 -0
- package/dist/surfaces/cyberpunk2077/validators/redscript.js +193 -0
- package/dist/surfaces/cyberpunk2077/validators/templates.js +7 -0
- package/dist/surfaces/cyberpunk2077/validators/tweaks.js +768 -0
- package/dist/surfaces/cyberpunk2077/validators/vehicles.js +531 -0
- package/dist/surfaces/cyberpunk2077/validators/xl.js +308 -0
- package/dist/surfaces/eldenring/binders.js +111 -0
- package/dist/surfaces/eldenring/compat.js +166 -0
- package/dist/surfaces/eldenring/dcx.js +49 -0
- package/dist/surfaces/eldenring/index.js +13 -0
- package/dist/surfaces/eldenring/loaders.js +132 -0
- package/dist/surfaces/eldenring/logs.js +67 -0
- package/dist/surfaces/eldenring/paramdef.js +256 -0
- package/dist/surfaces/eldenring/params.js +129 -0
- package/dist/surfaces/eldenring/surface.js +121 -0
- package/dist/surfaces/eldenring/tools.js +52 -0
- package/dist/surfaces/eldenring/validators/binders.js +193 -0
- package/dist/surfaces/eldenring/validators/packages.js +159 -0
- package/dist/surfaces/eldenring/validators/params.js +334 -0
- package/dist/surfaces/eldenring/validators/profiles.js +287 -0
- package/dist/surfaces/index.js +34 -0
- package/dist/surfaces/nivalisnights/compat.js +229 -0
- package/dist/surfaces/nivalisnights/index/build.js +310 -0
- package/dist/surfaces/nivalisnights/index/index.js +5 -0
- package/dist/surfaces/nivalisnights/index/queries.js +231 -0
- package/dist/surfaces/nivalisnights/index.js +4 -0
- package/dist/surfaces/nivalisnights/logs.js +473 -0
- package/dist/surfaces/nivalisnights/surface.js +195 -0
- package/dist/surfaces/skyrimse/archives.js +229 -0
- package/dist/surfaces/skyrimse/compat.js +163 -0
- package/dist/surfaces/skyrimse/index.js +12 -0
- package/dist/surfaces/skyrimse/loadorder.js +174 -0
- package/dist/surfaces/skyrimse/logs.js +241 -0
- package/dist/surfaces/skyrimse/plugins.js +149 -0
- package/dist/surfaces/skyrimse/records.js +94 -0
- package/dist/surfaces/skyrimse/surface.js +240 -0
- package/dist/surfaces/skyrimse/validators/archive-records.js +165 -0
- package/dist/surfaces/skyrimse/validators/archives.js +110 -0
- package/dist/surfaces/skyrimse/validators/plugins.js +374 -0
- package/dist/surfaces/skyrimse/validators/records.js +117 -0
- package/dist/surfaces/stardewvalley/compat.js +190 -0
- package/dist/surfaces/stardewvalley/config.js +42 -0
- package/dist/surfaces/stardewvalley/contentpatcher.js +203 -0
- package/dist/surfaces/stardewvalley/index/index.js +229 -0
- package/dist/surfaces/stardewvalley/index/wiki.js +190 -0
- package/dist/surfaces/stardewvalley/index.js +12 -0
- package/dist/surfaces/stardewvalley/logs.js +307 -0
- package/dist/surfaces/stardewvalley/mods.js +182 -0
- package/dist/surfaces/stardewvalley/surface.js +244 -0
- package/dist/surfaces/stardewvalley/validators/content.js +321 -0
- package/dist/surfaces/stardewvalley/validators/fields.js +147 -0
- package/dist/surfaces/stardewvalley/validators/loadorder.js +69 -0
- package/dist/surfaces/stardewvalley/validators/manifest.js +221 -0
- package/dist/surfaces/subnautica2/compat.js +138 -0
- package/dist/surfaces/subnautica2/index.js +5 -0
- package/dist/surfaces/subnautica2/logs.js +129 -0
- package/dist/surfaces/subnautica2/paks.js +173 -0
- package/dist/surfaces/subnautica2/surface.js +151 -0
- package/dist/surfaces/subnautica2/validators/packaging.js +298 -0
- package/dist/surfaces/valheim/compat.js +171 -0
- package/dist/surfaces/valheim/index/index.js +301 -0
- package/dist/surfaces/valheim/index/tables.js +103 -0
- package/dist/surfaces/valheim/index.js +11 -0
- package/dist/surfaces/valheim/logs.js +197 -0
- package/dist/surfaces/valheim/packaging.js +131 -0
- package/dist/surfaces/valheim/plugins.js +270 -0
- package/dist/surfaces/valheim/references.js +121 -0
- package/dist/surfaces/valheim/surface.js +223 -0
- package/dist/surfaces/valheim/validators/packaging.js +218 -0
- package/dist/surfaces/valheim/validators/plugins.js +287 -0
- package/dist/surfaces/valheim/validators/references.js +169 -0
- package/knowledge/baldursgate3/animations.gr2.yaml +166 -0
- package/knowledge/baldursgate3/audio.voice.yaml +182 -0
- package/knowledge/baldursgate3/audio.wwise.yaml +104 -0
- package/knowledge/baldursgate3/charactercreation.heads-hair.yaml +193 -0
- package/knowledge/baldursgate3/communitylibrary.shared-content.yaml +129 -0
- package/knowledge/baldursgate3/compatibilityframework.api.yaml +176 -0
- package/knowledge/baldursgate3/crash.causes.yaml +90 -0
- package/knowledge/baldursgate3/dialogue.dialogbank.yaml +120 -0
- package/knowledge/baldursgate3/dialogue.files.yaml +236 -0
- package/knowledge/baldursgate3/dialogue.osiris-goals.yaml +386 -0
- package/knowledge/baldursgate3/dialogue.yaml +122 -0
- package/knowledge/baldursgate3/feats.classes.yaml +164 -0
- package/knowledge/baldursgate3/items.cloth-physics.yaml +167 -0
- package/knowledge/baldursgate3/items.roottemplates.yaml +320 -0
- package/knowledge/baldursgate3/items.visualbank.yaml +628 -0
- package/knowledge/baldursgate3/journal.quests.yaml +214 -0
- package/knowledge/baldursgate3/loadorder.modsettings.yaml +128 -0
- package/knowledge/baldursgate3/localization.handles.yaml +92 -0
- package/knowledge/baldursgate3/misc.encoding-and-practice.yaml +111 -0
- package/knowledge/baldursgate3/origins.companions.yaml +144 -0
- package/knowledge/baldursgate3/osiris.signatures.yaml +211 -0
- package/knowledge/baldursgate3/packaging.meta.yaml +155 -0
- package/knowledge/baldursgate3/packaging.paks.yaml +79 -0
- package/knowledge/baldursgate3/process.launch.yaml +34 -0
- package/knowledge/baldursgate3/progressions.yaml +92 -0
- package/knowledge/baldursgate3/publishing.modio-nexus.yaml +170 -0
- package/knowledge/baldursgate3/publishing.toolkit-modio.yaml +135 -0
- package/knowledge/baldursgate3/races.progression.yaml +228 -0
- package/knowledge/baldursgate3/scriptextender.console.yaml +257 -0
- package/knowledge/baldursgate3/scriptextender.yaml +252 -0
- package/knowledge/baldursgate3/stats.boosts.yaml +293 -0
- package/knowledge/baldursgate3/stats.equipment-kits.yaml +69 -0
- package/knowledge/baldursgate3/stats.interrupts.yaml +45 -0
- package/knowledge/baldursgate3/stats.itemcombos.yaml +65 -0
- package/knowledge/baldursgate3/stats.spells.yaml +293 -0
- package/knowledge/baldursgate3/stats.weapons.yaml +210 -0
- package/knowledge/baldursgate3/toolchain.divine.yaml +179 -0
- package/knowledge/baldursgate3/toolchain.lslib-formats.yaml +242 -0
- package/knowledge/baldursgate3/toolkit.levels.yaml +177 -0
- package/knowledge/baldursgate3/ui.icons-atlas.yaml +78 -0
- package/knowledge/baldursgate3/ui.icons.yaml +412 -0
- package/knowledge/baldursgate3/ui.mcm.yaml +161 -0
- package/knowledge/baldursgate3/vfx.materials.yaml +174 -0
- package/knowledge/baldursgate3/visuals.characterfix.yaml +73 -0
- package/knowledge/cyberpunk2077/animations.anims.yaml +118 -0
- package/knowledge/cyberpunk2077/anims.archivexl.yaml +163 -0
- package/knowledge/cyberpunk2077/anims.authoring.yaml +579 -0
- package/knowledge/cyberpunk2077/anims.encoder.yaml +156 -0
- package/knowledge/cyberpunk2077/anims.graph.yaml +629 -0
- package/knowledge/cyberpunk2077/anims.method.yaml +360 -0
- package/knowledge/cyberpunk2077/anims.pipeline.yaml +352 -0
- package/knowledge/cyberpunk2077/anims.roundtrip.yaml +222 -0
- package/knowledge/cyberpunk2077/anims.sets.yaml +176 -0
- package/knowledge/cyberpunk2077/archivexl.bodytypes.yaml +149 -0
- package/knowledge/cyberpunk2077/archivexl.dynamic-appearances.yaml +218 -0
- package/knowledge/cyberpunk2077/archivexl.manifest.yaml +214 -0
- package/knowledge/cyberpunk2077/audio.events.yaml +168 -0
- package/knowledge/cyberpunk2077/audio.sounds.yaml +164 -0
- package/knowledge/cyberpunk2077/audio.voicesets.yaml +146 -0
- package/knowledge/cyberpunk2077/cet.sandbox.yaml +219 -0
- package/knowledge/cyberpunk2077/clothing.garments.yaml +283 -0
- package/knowledge/cyberpunk2077/clothing.refits.yaml +215 -0
- package/knowledge/cyberpunk2077/codeware.overview.yaml +111 -0
- package/knowledge/cyberpunk2077/codeware.systems.yaml +192 -0
- package/knowledge/cyberpunk2077/drones.combat.yaml +416 -0
- package/knowledge/cyberpunk2077/drones.control.yaml +552 -0
- package/knowledge/cyberpunk2077/entities.appearance.yaml +166 -0
- package/knowledge/cyberpunk2077/equipmentex.slots.yaml +151 -0
- package/knowledge/cyberpunk2077/fx.effects.yaml +246 -0
- package/knowledge/cyberpunk2077/fx.lights.yaml +171 -0
- package/knowledge/cyberpunk2077/hair.modding.yaml +145 -0
- package/knowledge/cyberpunk2077/items.wiring.yaml +246 -0
- package/knowledge/cyberpunk2077/loadorder.archives.yaml +71 -0
- package/knowledge/cyberpunk2077/mesh.blender.yaml +209 -0
- package/knowledge/cyberpunk2077/nativedb.dump.yaml +98 -0
- package/knowledge/cyberpunk2077/npc.appearance.yaml +275 -0
- package/knowledge/cyberpunk2077/npc.behaviour.yaml +128 -0
- package/knowledge/cyberpunk2077/npc.locomotion.yaml +490 -0
- package/knowledge/cyberpunk2077/packaging.deploy.yaml +175 -0
- package/knowledge/cyberpunk2077/packaging.variants.yaml +176 -0
- package/knowledge/cyberpunk2077/player.control.yaml +918 -0
- package/knowledge/cyberpunk2077/process.assetbuild.yaml +154 -0
- package/knowledge/cyberpunk2077/process.lessons.yaml +276 -0
- package/knowledge/cyberpunk2077/quests.minor.yaml +46 -0
- package/knowledge/cyberpunk2077/quests.scenes.yaml +282 -0
- package/knowledge/cyberpunk2077/quickhacks.tiers.yaml +41 -0
- package/knowledge/cyberpunk2077/red4ext.api.yaml +645 -0
- package/knowledge/cyberpunk2077/red4ext.plugins.yaml +124 -0
- package/knowledge/cyberpunk2077/redhottools.hotreload.yaml +245 -0
- package/knowledge/cyberpunk2077/redscript.compile-log.yaml +76 -0
- package/knowledge/cyberpunk2077/redscript.modules.yaml +118 -0
- package/knowledge/cyberpunk2077/toolchain.wolvenkit.yaml +163 -0
- package/knowledge/cyberpunk2077/tweakdb.loot-recipes.yaml +184 -0
- package/knowledge/cyberpunk2077/tweakdb.melee.yaml +352 -0
- package/knowledge/cyberpunk2077/tweakdb.weapons.yaml +325 -0
- package/knowledge/cyberpunk2077/tweakxl.hotreload.yaml +151 -0
- package/knowledge/cyberpunk2077/tweakxl.yaml-syntax.yaml +208 -0
- package/knowledge/cyberpunk2077/ui.icons.yaml +259 -0
- package/knowledge/cyberpunk2077/ui.inkatlas.yaml +81 -0
- package/knowledge/cyberpunk2077/ui.modsettings.yaml +204 -0
- package/knowledge/cyberpunk2077/vehicles.control.yaml +475 -0
- package/knowledge/cyberpunk2077/vehicles.dashboard-ui.yaml +203 -0
- package/knowledge/cyberpunk2077/vehicles.entities.yaml +195 -0
- package/knowledge/cyberpunk2077/vehicles.wiring.yaml +137 -0
- package/knowledge/cyberpunk2077/wolvenkit.cli.yaml +167 -0
- package/knowledge/cyberpunk2077/workspot.system.yaml +55 -0
- package/knowledge/cyberpunk2077/world.interactions.yaml +41 -0
- package/knowledge/cyberpunk2077/world.loot-container.yaml +167 -0
- package/knowledge/cyberpunk2077/world.sectors.yaml +233 -0
- package/knowledge/eldenring/formats.binders.yaml +237 -0
- package/knowledge/eldenring/launcher.me3.yaml +230 -0
- package/knowledge/eldenring/launcher.modengine2.yaml +119 -0
- package/knowledge/eldenring/params.paramdef.yaml +149 -0
- package/knowledge/eldenring/params.regulation.yaml +142 -0
- package/knowledge/eldenring/saves.online.yaml +118 -0
- package/knowledge/eldenring/toolchain.cli.yaml +256 -0
- package/knowledge/nivalisnights/modding.runtime.yaml +157 -0
- package/knowledge/skyrimse/archives.bsa.yaml +212 -0
- package/knowledge/skyrimse/install.detection.yaml +41 -0
- package/knowledge/skyrimse/loadorder.files.yaml +242 -0
- package/knowledge/skyrimse/plugins.esl.yaml +189 -0
- package/knowledge/skyrimse/plugins.format.yaml +224 -0
- package/knowledge/skyrimse/skse.runtime.yaml +283 -0
- package/knowledge/skyrimse/toolchain.xedit-spriggit.yaml +336 -0
- package/knowledge/stardewvalley/contentpatcher.format.yaml +338 -0
- package/knowledge/stardewvalley/distribution.channels.yaml +236 -0
- package/knowledge/stardewvalley/game.versions.yaml +202 -0
- package/knowledge/stardewvalley/install.layout.yaml +277 -0
- package/knowledge/stardewvalley/smapi.loader.yaml +284 -0
- package/knowledge/stardewvalley/smapi.logs.yaml +329 -0
- package/knowledge/stardewvalley/smapi.manifest.yaml +293 -0
- package/knowledge/stardewvalley/toolchain.build.yaml +261 -0
- package/knowledge/stardewvalley/wiki.dataformat.yaml +130 -0
- package/knowledge/subnautica2/game.build.yaml +331 -0
- package/knowledge/subnautica2/modding.state.yaml +210 -0
- package/knowledge/subnautica2/ue5.containers.yaml +72 -0
- package/knowledge/subnautica2/ue5.paks.yaml +203 -0
- package/knowledge/subnautica2/ue5.tooling.yaml +175 -0
- package/knowledge/subnautica2/ue5.ue4ss.yaml +203 -0
- package/knowledge/valheim/bepinex.loader.yaml +247 -0
- package/knowledge/valheim/bepinex.plugins.yaml +251 -0
- package/knowledge/valheim/game.versions.yaml +321 -0
- package/knowledge/valheim/install.layout.yaml +216 -0
- package/knowledge/valheim/jotunn.library.yaml +334 -0
- package/knowledge/valheim/thunderstore.packaging.yaml +217 -0
- package/knowledge/valheim/toolchain.build.yaml +111 -0
- package/package.json +29 -0
- package/scaffolds/baldursgate3/new-class-injection.yaml +148 -0
- package/scaffolds/baldursgate3/new-item.yaml +264 -0
- package/scaffolds/baldursgate3/new-mod.yaml +174 -0
- package/scaffolds/baldursgate3/new-passive.yaml +100 -0
- package/scaffolds/baldursgate3/new-project.yaml +118 -0
- package/scaffolds/baldursgate3/new-quest-stub.yaml +159 -0
- package/scaffolds/baldursgate3/new-spell.yaml +102 -0
- package/scaffolds/baldursgate3/new-status.yaml +119 -0
- package/scaffolds/baldursgate3/sequences/subclass-kit.yaml +50 -0
- package/scaffolds/cyberpunk2077/edit-tweak.yaml +70 -0
- package/scaffolds/cyberpunk2077/mesh-export-preset.yaml +170 -0
- package/scaffolds/cyberpunk2077/new-entity-patch.yaml +255 -0
- package/scaffolds/cyberpunk2077/new-garment-refit.yaml +279 -0
- package/scaffolds/cyberpunk2077/new-item-chain.yaml +548 -0
- package/scaffolds/cyberpunk2077/new-localization.yaml +130 -0
- package/scaffolds/cyberpunk2077/new-mod-settings.yaml +133 -0
- package/scaffolds/cyberpunk2077/new-player-replacer.yaml +1003 -0
- package/scaffolds/cyberpunk2077/new-project.yaml +157 -0
- package/scaffolds/cyberpunk2077/new-sector-node.yaml +156 -0
- package/scaffolds/cyberpunk2077/new-tweak.yaml +121 -0
- package/scaffolds/cyberpunk2077/new-vehicle-livery.yaml +148 -0
- package/scaffolds/cyberpunk2077/new-workspot-entity.yaml +177 -0
- package/scaffolds/cyberpunk2077/sequences/iconic-weapon.yaml +72 -0
- package/scaffolds/cyberpunk2077/sequences/quickhack-takeover.yaml +213 -0
- package/scaffolds/stardewvalley/new-cp-patch.yaml +106 -0
- package/scaffolds/stardewvalley/new-csharp-mod.yaml +195 -0
- package/scaffolds/stardewvalley/new-project.yaml +184 -0
- package/scaffolds/stardewvalley/sequences/content-pack.yaml +31 -0
- package/scripts/mw-tool.mjs +184 -0
|
@@ -0,0 +1,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
|