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,475 @@
|
|
|
1
|
+
game: cyberpunk2077
|
|
2
|
+
topic: vehicles.control
|
|
3
|
+
title: How the player controls a vehicle - remote control, the mount, vehicle classes, cameras,
|
|
4
|
+
weapons, destruction, and how Let There Be Flight adds lift
|
|
5
|
+
facts:
|
|
6
|
+
- id: cp2077.vehicles.control.remote-control-native
|
|
7
|
+
claim: VehicleObject has a native SetVehicleRemoteControlled(enable, shouldUnseatPassengers,
|
|
8
|
+
shouldModifyInteractionState), with ToggleVehicleRemoteControlCamera(),
|
|
9
|
+
IsVehicleRemoteControlled() and SetIsHackable(enable) beside it. In script the perk, range and
|
|
10
|
+
not-mounted conditions belong to the quickhack that offers it, not to the call; whether the
|
|
11
|
+
native checks anything itself is unread (ModWright research calls it with no perk).
|
|
12
|
+
status: inferred
|
|
13
|
+
source: codeberg adamsmasher/cyberpunk@a2e6bb3 core/gameplay/vehicles.swift:68, :144, :146, :148;
|
|
14
|
+
core/components/scriptComponents/vehicleComponentPS.swift:1004-1018
|
|
15
|
+
tags:
|
|
16
|
+
- vehicle
|
|
17
|
+
- remote-control
|
|
18
|
+
- quickhack
|
|
19
|
+
- native
|
|
20
|
+
- id: cp2077.vehicles.control.remote-control-quickhack-flow
|
|
21
|
+
claim: The vanilla vehicle takeover quickhack (DeviceAction.TakeControlVehicleClassHack) builds a
|
|
22
|
+
TriggerVehicleRemoteControlEvent with all three flags true, releases any vehicle already
|
|
23
|
+
remote-controlled, and passes the event to TakeOverControlSystem.ReleaseControl, which ends
|
|
24
|
+
any camera or device control first; VehicleComponent.OnTriggerVehicleRemoteControlEvent then
|
|
25
|
+
calls SetVehicleRemoteControlled. It is offered only with the perk
|
|
26
|
+
Intelligence_Right_Milestone_1, V not mounted, the vehicle within
|
|
27
|
+
player.vehicleQuickHacks.maxRange, not already remote-controlled, and IsHackable().
|
|
28
|
+
status: inferred
|
|
29
|
+
source: codeberg adamsmasher/cyberpunk@a2e6bb3
|
|
30
|
+
core/components/scriptComponents/vehicleComponentPS.swift:1004-1018, :1060-1068;
|
|
31
|
+
core/systems/takeOverControlSystem.swift:183-225;
|
|
32
|
+
core/components/scriptComponents/vehicleComponent.swift:1608-1613
|
|
33
|
+
tags:
|
|
34
|
+
- vehicle
|
|
35
|
+
- remote-control
|
|
36
|
+
- quickhack
|
|
37
|
+
- takeovercontrolsystem
|
|
38
|
+
- id: cp2077.vehicles.control.remote-control-v-stays-standing
|
|
39
|
+
claim: "Under vehicle remote control V is not mounted: she stays where she hacked from, her weapon
|
|
40
|
+
is unequipped by the upper-body state while PlayerStateMachine.EntityIDVehicleRemoteControlled
|
|
41
|
+
is set, the HUD's signal meter is 1 - distance(V, vehicle) / maxRange, and a hit on an
|
|
42
|
+
unmounted V ends the remote control."
|
|
43
|
+
status: inferred
|
|
44
|
+
source: codeberg adamsmasher/cyberpunk@a2e6bb3
|
|
45
|
+
cyberpunk/player/psm/upperBodyTransitions.swift:1789-1792;
|
|
46
|
+
cyberpunk/UI/vehicles/remote_control_driving_hud.swift:30-104;
|
|
47
|
+
cyberpunk/player/player.swift:3265-3272
|
|
48
|
+
tags:
|
|
49
|
+
- vehicle
|
|
50
|
+
- remote-control
|
|
51
|
+
- player-state-machine
|
|
52
|
+
- release
|
|
53
|
+
- id: cp2077.vehicles.control.remote-control-input-context
|
|
54
|
+
claim: A remote-controlled vehicle switches V's input context to VehicleRemoteControlDriverContext.
|
|
55
|
+
In it ToggleVehCamera (on release) toggles the native remote camera and Exit (on press) calls
|
|
56
|
+
SetVehicleRemoteControlled(false, false, true); entering it adds the "RemoteControl" save
|
|
57
|
+
lock. Enabling through the context requires the vehicle's IsHackable(); disabling does not.
|
|
58
|
+
Steering and throttle routing are native.
|
|
59
|
+
status: inferred
|
|
60
|
+
source: codeberg adamsmasher/cyberpunk@a2e6bb3
|
|
61
|
+
cyberpunk/player/psm/inputContextTransitions.swift:1-39, :723-729, :1394-1423
|
|
62
|
+
tags:
|
|
63
|
+
- vehicle
|
|
64
|
+
- remote-control
|
|
65
|
+
- input-context
|
|
66
|
+
- save-lock
|
|
67
|
+
- id: cp2077.vehicles.control.remote-control-ends
|
|
68
|
+
claim: "Every script path that ends vehicle remote control calls SetVehicleRemoteControlled(false,
|
|
69
|
+
false, true): the Exit key, a hit on an unmounted V, and another take-control request. The
|
|
70
|
+
native also ends it on distance and reports that through
|
|
71
|
+
VehicleRemoteControlEvent.isDistanceDisconnect."
|
|
72
|
+
status: inferred
|
|
73
|
+
source: codeberg adamsmasher/cyberpunk@a2e6bb3
|
|
74
|
+
cyberpunk/player/psm/inputContextTransitions.swift:1394-1423;
|
|
75
|
+
cyberpunk/player/player.swift:3265-3272; orphans.swift:37280-37289
|
|
76
|
+
tags:
|
|
77
|
+
- vehicle
|
|
78
|
+
- remote-control
|
|
79
|
+
- release
|
|
80
|
+
- distance-disconnect
|
|
81
|
+
- id: cp2077.vehicles.control.vehicle-types-and-classes
|
|
82
|
+
claim: gamedataVehicleType is Bike 0, Car 1, Panzer 2. The script classes are CarObject and
|
|
83
|
+
BikeObject under WheeledObject, TankObject (empty script body) and AVObject (thruster effects
|
|
84
|
+
only); all extend VehicleObject. gamedataVehicleModel includes Basilisk 2 and Octant 17.
|
|
85
|
+
status: inferred
|
|
86
|
+
source: codeberg adamsmasher/cyberpunk@a2e6bb3 orphans.swift:5296-5302, :5313, :5328, :25080,
|
|
87
|
+
:26860, :36822; core/gameplay/vehicles.swift:2, :1356-1365
|
|
88
|
+
tags:
|
|
89
|
+
- vehicle
|
|
90
|
+
- vehicle-type
|
|
91
|
+
- tank
|
|
92
|
+
- av
|
|
93
|
+
- octant
|
|
94
|
+
- id: cp2077.vehicles.control.av-never-driven-by-player
|
|
95
|
+
claim: "No script path lets the player drive an AV: VehicleComponent.IsDriver returns false for any
|
|
96
|
+
AVObject, and AVs move by AI spline commands (AIVehicleOnSplineCommand) and scenes. A vehicle
|
|
97
|
+
meant to be driven should not be an AV-class record."
|
|
98
|
+
status: inferred
|
|
99
|
+
source: codeberg adamsmasher/cyberpunk@a2e6bb3
|
|
100
|
+
core/components/scriptComponents/vehicleComponent.swift:295-314; orphans.swift:47211-47250
|
|
101
|
+
tags:
|
|
102
|
+
- vehicle
|
|
103
|
+
- av
|
|
104
|
+
- driver
|
|
105
|
+
- id: cp2077.vehicles.control.tank-drive-model-hover
|
|
106
|
+
claim: "TankDriveModelData_Record (Vehicle_Record.TankDriveModelData()) carries
|
|
107
|
+
TankSpringsLocalPositions, TankSpringVerticalOffset, TankSpringStiffness, TankSpringDamping,
|
|
108
|
+
TankSpringDistance, TankSpringRadius, TankGravityMul, TankMaxSpeed, TankAcceleration,
|
|
109
|
+
TankDeceleration and TankTurningSpeed: a spring-supported drive model with a gravity
|
|
110
|
+
multiplier, the Basilisk's hover. It holds a ride height; nothing in it climbs."
|
|
111
|
+
status: inferred
|
|
112
|
+
source: codeberg adamsmasher/cyberpunk@a2e6bb3 orphans.swift:20924, :63836-63884
|
|
113
|
+
tags:
|
|
114
|
+
- vehicle
|
|
115
|
+
- tank
|
|
116
|
+
- basilisk
|
|
117
|
+
- drive-model
|
|
118
|
+
- hover
|
|
119
|
+
- id: cp2077.vehicles.control.tank-player-driven
|
|
120
|
+
claim: "The player drives a TankObject: VehicleTankDriverContext is entered in the Driving state for
|
|
121
|
+
a TankObject, PanzerHUDGameController runs, and mounting a tank's driver seat takes V's hit
|
|
122
|
+
shapes off and puts the tank on the targeting system's ignore list, so turrets and AI aim at
|
|
123
|
+
the tank."
|
|
124
|
+
status: inferred
|
|
125
|
+
source: codeberg adamsmasher/cyberpunk@a2e6bb3
|
|
126
|
+
cyberpunk/player/psm/inputContextTransitions.swift:1497-1528;
|
|
127
|
+
cyberpunk/UI/hud/custom/hud_panzer.swift:182-243;
|
|
128
|
+
core/components/scriptComponents/vehicleComponent.swift:1450-1453, :2930-2968;
|
|
129
|
+
cyberpunk/devices/securityTurret/securityTurret.swift:397-399
|
|
130
|
+
tags:
|
|
131
|
+
- vehicle
|
|
132
|
+
- tank
|
|
133
|
+
- basilisk
|
|
134
|
+
- targeting
|
|
135
|
+
- id: cp2077.vehicles.control.destruction-kills-mounted-v
|
|
136
|
+
claim: A destroyed vehicle's KillPassengers applies BaseStatusEffect.ForceKill to every mounted
|
|
137
|
+
child, the player included unless she has the Invulnerable god mode. A vehicle with the
|
|
138
|
+
Immortal god mode has its damage level capped at 2, so it does not reach the destroyed state
|
|
139
|
+
on its own. A remote-controlled vehicle's destruction cannot reach V this way, because V is
|
|
140
|
+
not mounted.
|
|
141
|
+
status: inferred
|
|
142
|
+
source: codeberg adamsmasher/cyberpunk@a2e6bb3
|
|
143
|
+
core/components/scriptComponents/vehicleComponent.swift:2667-2695, :2698-2711, :3957-3959
|
|
144
|
+
tags:
|
|
145
|
+
- vehicle
|
|
146
|
+
- death
|
|
147
|
+
- killpassengers
|
|
148
|
+
- immortal
|
|
149
|
+
- death-guard
|
|
150
|
+
- id: cp2077.vehicles.control.vehicle-weapons-need-driver-combat
|
|
151
|
+
claim: "Vehicle_Record.Weapons() lists VehicleWeapon_Records (slot, item, yaw and pitch limits,
|
|
152
|
+
cycle time, range, projectiles). The player fires them from the PSM state
|
|
153
|
+
DriverCombatMountedWeapons, entered from Drive when the record's DriverCombat type is
|
|
154
|
+
MountedWeapons and player.vehicle.canEnterDriverCombat is set - a mounted-driver state.
|
|
155
|
+
TankTurretComponent is a scripted alternative: it listens for ShootTertiary and fires an
|
|
156
|
+
Attack_GameEffect from a slot."
|
|
157
|
+
status: inferred
|
|
158
|
+
source: codeberg adamsmasher/cyberpunk@a2e6bb3 orphans.swift:21062, :65155-65192;
|
|
159
|
+
cyberpunk/player/psm/vehicleTransition.swift:12-14, :1335-1368, :2578-2662;
|
|
160
|
+
cyberpunk/vehicles/tankTurret.swift:2-63
|
|
161
|
+
tags:
|
|
162
|
+
- vehicle
|
|
163
|
+
- weapons
|
|
164
|
+
- driver-combat
|
|
165
|
+
- turret
|
|
166
|
+
- id: cp2077.vehicles.control.ltbf-lift-is-added-force
|
|
167
|
+
claim: "Let There Be Flight lifts a vehicle by adding force and torque, not by writing its
|
|
168
|
+
transform: a native system registers an update in the Vehicle bucket at
|
|
169
|
+
PhysicsExecuteAsyncQueries (the source's comments call UpdateTransformPrePhysics too early and
|
|
170
|
+
UpdateTransformPostPhysics too late), and per flying vehicle calls ForceEnablePhysics(), runs
|
|
171
|
+
the script update, then adds the result to vehicle->physicsData->force and ->torque for the
|
|
172
|
+
engine to integrate."
|
|
173
|
+
status: inferred
|
|
174
|
+
source: github jackhumbert/let_there_be_flight@6d7c1b7 src/red4ext/FlightSystem.cpp:88-131;
|
|
175
|
+
src/red4ext/Flight/Component.cpp:57-83
|
|
176
|
+
tags:
|
|
177
|
+
- vehicle
|
|
178
|
+
- flight
|
|
179
|
+
- lift
|
|
180
|
+
- red4ext
|
|
181
|
+
- ltbf
|
|
182
|
+
- id: cp2077.vehicles.control.ltbf-anti-gravity-drone-mode
|
|
183
|
+
claim: Let There Be Flight's Drone mode applies body-frame lift, surge and sway as force and pitch,
|
|
184
|
+
roll and yaw as torque, with a brake damping term and no gravity term; its Anti-Gravity Drone
|
|
185
|
+
mode adds world up (in the vehicle frame) times 9.81 times gravityFactor, cancelling gravity
|
|
186
|
+
so the vehicle holds where it is with no input.
|
|
187
|
+
status: inferred
|
|
188
|
+
source: github jackhumbert/let_there_be_flight@6d7c1b7
|
|
189
|
+
src/redscript/Flight/FlightModeDrone.reds:94-117;
|
|
190
|
+
src/redscript/Flight/FlightModeDroneAntiGravity.reds:16-19
|
|
191
|
+
tags:
|
|
192
|
+
- vehicle
|
|
193
|
+
- flight
|
|
194
|
+
- drone-mode
|
|
195
|
+
- ltbf
|
|
196
|
+
- id: cp2077.vehicles.control.ltbf-unmounted-input-path
|
|
197
|
+
claim: With no player mounted, Let There Be Flight takes a flying vehicle's surge from the vehicle's
|
|
198
|
+
own acceleration and deceleration and its yaw from turnX (the path its FlightEnable quickhack
|
|
199
|
+
flies an NPC car on); lift, pitch, roll and sway have no source on that path.
|
|
200
|
+
status: inferred
|
|
201
|
+
source: github jackhumbert/let_there_be_flight@6d7c1b7
|
|
202
|
+
src/redscript/Flight/FlightComponent.reds:640-672; src/redscript/Quickhacks/Actions.reds:8-27
|
|
203
|
+
tags:
|
|
204
|
+
- vehicle
|
|
205
|
+
- flight
|
|
206
|
+
- input
|
|
207
|
+
- ltbf
|
|
208
|
+
- id: cp2077.vehicles.control.physicsdata-layout-not-upstream
|
|
209
|
+
claim: vehicle::BaseObject's physicsData pointer (0x2D0) and the vehicle::PhysicsData layout (force
|
|
210
|
+
0x00, torque 0x0C, velocity 0x18, size 0x1E0) are declared only in Let There Be Flight's
|
|
211
|
+
RED4ext.SDK fork; upstream's vehicleBaseObject.hpp declares neither, and the two disagree by
|
|
212
|
+
four bytes on the drive inputs (upstream acceleration 0x264 and deceleration 0x268; the fork's
|
|
213
|
+
script offsets 0x268 and 0x26C behind an input block at 0x264). A plugin that writes vehicle
|
|
214
|
+
forces must re-derive both at the running game version.
|
|
215
|
+
status: inferred
|
|
216
|
+
source: github jackhumbert/RED4ext.SDK@b5ea591
|
|
217
|
+
include/RED4ext/Scripting/Natives/vehiclePhysicsData.hpp:69-105,
|
|
218
|
+
vehicleBaseObject.hpp:469-511; github wopss/RED4ext.SDK@ad72777
|
|
219
|
+
include/RED4ext/Scripting/Natives/vehicleBaseObject.hpp:38-42; github
|
|
220
|
+
jackhumbert/let_there_be_flight@6d7c1b7 src/redscript/Extensions/VehicleObject.reds:92-127
|
|
221
|
+
tags:
|
|
222
|
+
- vehicle
|
|
223
|
+
- red4ext
|
|
224
|
+
- layout
|
|
225
|
+
- version-fragile
|
|
226
|
+
- id: cp2077.vehicles.control.remote-control-from-script-on-a-spawned-car
|
|
227
|
+
claim: "A script can put a vanilla car under remote control with no perk and no quickhack: on a
|
|
228
|
+
Car-type vehicle spawned through DynamicEntitySystem, SetVehicleRemoteControlled(true, true,
|
|
229
|
+
true) makes IsVehicleRemoteControlled true, sets the player blackboard's remote-controlled
|
|
230
|
+
vehicle to it and V's upper-body state to 4 while she stays unmounted, and shows vanilla's own
|
|
231
|
+
remote-control HUD (the signal-strength bar and the neural-link icon). The car drives on V's
|
|
232
|
+
keys. The camera stays at V until ToggleVehicleRemoteControlCamera(), which gives a chase
|
|
233
|
+
camera that tracks the car; Exit hands control back to V."
|
|
234
|
+
status: verified
|
|
235
|
+
verified_on: "2.31"
|
|
236
|
+
source: ModWright field verification
|
|
237
|
+
tags:
|
|
238
|
+
- vehicle
|
|
239
|
+
- remote-control
|
|
240
|
+
- camera
|
|
241
|
+
- hud
|
|
242
|
+
- drone
|
|
243
|
+
related:
|
|
244
|
+
- cp2077.vehicles.control.remote-control-native
|
|
245
|
+
- cp2077.vehicles.control.remote-control-v-stays-standing
|
|
246
|
+
- cp2077.vehicles.control.remote-control-input-context
|
|
247
|
+
detail: "Driven far from V, the view went to a loading icon and a black screen for a couple of
|
|
248
|
+
seconds: the world streams around V, not the camera. The test spawn fell back to
|
|
249
|
+
Vehicle.v_standard2_thorton_galena_nomad_player."
|
|
250
|
+
- id: cp2077.vehicles.control.remote-control-on-an-av-crashes
|
|
251
|
+
claim: "Vehicle.av_zetatech_octant, the base game's vehicle record with the Octant model, is type
|
|
252
|
+
Car in TweakDB but spawns as a vehicleAVBaseObject, reads hackable false, and holds its height
|
|
253
|
+
(no drop after the spawn). Calling SetIsHackable(true) and SetVehicleRemoteControlled(true,
|
|
254
|
+
true, true) on it from the CET thread crashed the game: an access violation reading 0x468 in
|
|
255
|
+
fn_4E98F8 (exe+0x4E9902, a method called on a null object, this+0x468)."
|
|
256
|
+
status: verified
|
|
257
|
+
verified_on: "2.31"
|
|
258
|
+
source: ModWright field verification
|
|
259
|
+
tags:
|
|
260
|
+
- vehicle
|
|
261
|
+
- av
|
|
262
|
+
- remote-control
|
|
263
|
+
- crash
|
|
264
|
+
- drone
|
|
265
|
+
related:
|
|
266
|
+
- cp2077.vehicles.control.av-never-driven-by-player
|
|
267
|
+
- cp2077.vehicles.control.remote-control-native
|
|
268
|
+
detail: "Which object is null is unread: fn_4E98F8 reads this+0x468 and then a flag at +0x1FC of
|
|
269
|
+
what it finds, and its caller fn_25F95B4 is on the native's path. So a vanilla AV is not a
|
|
270
|
+
shortcut to a remote-controlled drone; such a drone stays a copied car- or tank-class
|
|
271
|
+
template. The tank drive model is Vehicle.v_militech_basilisk_inline5 at runtime (the source
|
|
272
|
+
tweak's inline numbering gives inline3)."
|
|
273
|
+
- id: cp2077.vehicles.control.remote-control-takes-a-tank-and-its-hover-height-is-the-spring-distance
|
|
274
|
+
claim: "Remote control takes a tank. On a spawned Vehicle.v_militech_basilisk
|
|
275
|
+
(vehicleTankBaseObject, hackable false), SetVehicleRemoteControlled(true, true, true) works as
|
|
276
|
+
on a car: vanilla's remote-control HUD with the maker's logo, the chase camera from the
|
|
277
|
+
toggle, and V's keys drive it on its spring hover. The hover height follows the drive model's
|
|
278
|
+
tankSpringDistance, read when the tank spawns. Changing the flat on a live tank does nothing,
|
|
279
|
+
and a respawn picks it up. Measured against the spawn point (vanilla 2.1 m springs): 1.06 m,
|
|
280
|
+
then 3.16 m at 4.2, and 7.48 m at 8.4, level (pitch 1.0, roll 0.0) and stable at speed."
|
|
281
|
+
status: verified
|
|
282
|
+
verified_on: "2.31"
|
|
283
|
+
source: ModWright field verification
|
|
284
|
+
tags:
|
|
285
|
+
- vehicle
|
|
286
|
+
- tank
|
|
287
|
+
- remote-control
|
|
288
|
+
- hover
|
|
289
|
+
- drone
|
|
290
|
+
related:
|
|
291
|
+
- cp2077.vehicles.control.tank-drive-model-hover
|
|
292
|
+
- cp2077.vehicles.control.remote-control-from-script-on-a-spawned-car
|
|
293
|
+
- cp2077.vehicles.control.remote-control-on-an-av-crashes
|
|
294
|
+
detail: "Spawned under an overhang at 4x, the tank came up pitched 26 and rolled -43 until it was
|
|
295
|
+
driven into the open. That spawn also landed on V and hurt her as remote control switched on:
|
|
296
|
+
the first rc-on returned true and read remote=false a moment later, which is vanilla ending
|
|
297
|
+
remote control on a hit to an unmounted V
|
|
298
|
+
(cp2077.vehicles.control.remote-control-v-stays-standing; observed in game: \"The tank spawned
|
|
299
|
+
on Vs head, doing damage at the moment of taking control\"). A second rc-on held. The spawn
|
|
300
|
+
was then moved to put the tank 12 m ahead. The drive model's runtime name is
|
|
301
|
+
Vehicle.v_militech_basilisk_inline5, shared by every Basilisk, so an edit reaches them all;
|
|
302
|
+
the tests reset it between runs. No ledge or slope was tried (a city street)."
|
|
303
|
+
- id: cp2077.vehicles.control.a-light-small-tank-hull-runs-away-under-remote-control
|
|
304
|
+
claim: A tank of the mod's own on a small, light hull ran away under remote control. It was the
|
|
305
|
+
Basilisk's template with the Octant's hull boxes scaled 0.55 (mass 2363,
|
|
306
|
+
maxDepenetrationVelocity -1) and a drive model scaled down in mass, stiffness and damping but
|
|
307
|
+
not in its attitude gains. It landed on its end partly inside the ground; switching remote
|
|
308
|
+
control on flung it tens of metres at runaway speed through the surroundings, and the game
|
|
309
|
+
then crashed in an engine buffer overflow.
|
|
310
|
+
status: verified
|
|
311
|
+
verified_on: "2.31"
|
|
312
|
+
source: ModWright field verification
|
|
313
|
+
tags:
|
|
314
|
+
- vehicle
|
|
315
|
+
- tank
|
|
316
|
+
- physics
|
|
317
|
+
- remote-control
|
|
318
|
+
- drone
|
|
319
|
+
- crash
|
|
320
|
+
related:
|
|
321
|
+
- cp2077.vehicles.control.remote-control-takes-a-tank-and-its-hover-height-is-the-spring-distance
|
|
322
|
+
detail: "The first run blamed the unlimited depenetration velocity and the light mass. A second run
|
|
323
|
+
showed the landing on its end was neither: at the Basilisk's mass with the depenetration
|
|
324
|
+
capped the hull still read pitch 89.4 at rest, and the cause was the hull's body frame
|
|
325
|
+
(cp2077.vehicles.control.chassis-body-frame-is-the-vehicle-frame). That the runaway itself
|
|
326
|
+
came from the springs pushing along the nose is inferred."
|
|
327
|
+
- id: cp2077.vehicles.control.chassis-body-frame-is-the-vehicle-frame
|
|
328
|
+
claim: A vehicle takes its frame from its chassis hull's physics body. The Octant AV's hull
|
|
329
|
+
(av_zetatech_octant__ext01_body_01.phys) has a body localToModel of a half turn about (0, 1,
|
|
330
|
+
1) (Y and Z swapped, mapped to the bone `base`), where the Basilisk's hull body is the model
|
|
331
|
+
frame (identity, no bone). On the Basilisk's template the Octant's boxes left the vehicle
|
|
332
|
+
resting at pitch 89.4 at either mass, looking level in the Basilisk's own meshes and on its
|
|
333
|
+
end in the Wyvern's. Baking the body frame into the boxes and the centre of mass, with
|
|
334
|
+
localToModel set to identity, made it spawn at pitch 0.0 and hover.
|
|
335
|
+
status: verified
|
|
336
|
+
verified_on: "2.31"
|
|
337
|
+
source: ModWright field verification
|
|
338
|
+
tags:
|
|
339
|
+
- vehicle
|
|
340
|
+
- physics
|
|
341
|
+
- phys
|
|
342
|
+
- chassis
|
|
343
|
+
- drone
|
|
344
|
+
related:
|
|
345
|
+
- cp2077.vehicles.control.a-light-small-tank-hull-runs-away-under-remote-control
|
|
346
|
+
detail: Whether the engine honours localToModel for the rendered rig and ignores it for the
|
|
347
|
+
vehicle's transform, or the reverse, is not read; the rule that works is a chassis hull whose
|
|
348
|
+
body frame is the model frame. A ModWright new-custom-vehicle scaffold should check it.
|
|
349
|
+
- id: cp2077.vehicles.control.a-drone-sized-tank-drives-under-remote-control
|
|
350
|
+
claim: A tank of the mod's own on a drone-sized hull (1.5 x 1.45 x 0.75 m, the Basilisk's mass,
|
|
351
|
+
drive model and gains, nine springs inside the hull at 4.2) drives under native remote
|
|
352
|
+
control. Switched on, it rose to about 3.2 m over its spawn point and held level (pitch within
|
|
353
|
+
0.5) when still. It was flown smoothly for 107 m until the signal dropped at vanilla's range
|
|
354
|
+
(player.vehicleQuickHacks.maxRange 100), and it was left parked, level and undamaged.
|
|
355
|
+
status: verified
|
|
356
|
+
verified_on: "2.31"
|
|
357
|
+
source: ModWright field verification
|
|
358
|
+
tags:
|
|
359
|
+
- vehicle
|
|
360
|
+
- tank
|
|
361
|
+
- remote-control
|
|
362
|
+
- hover
|
|
363
|
+
- drone
|
|
364
|
+
related:
|
|
365
|
+
- cp2077.vehicles.control.remote-control-takes-a-tank-and-its-hover-height-is-the-spring-distance
|
|
366
|
+
- cp2077.vehicles.control.remote-control-ends
|
|
367
|
+
detail: It "moves like a much larger object than it is" (as observed in game), it once sank into the
|
|
368
|
+
ground and was pushed back up by a car, and the Basilisk's hover glow was left standing at the
|
|
369
|
+
spawn point. The Basilisk's chase camera (boom 13.5 / 16 / 19.5 m aimed 5.75 m up,
|
|
370
|
+
airFlowDistortion true) framed it from far away and shook; the shake stopped once a session
|
|
371
|
+
edit set a 5 / 6 / 7.5 m boom and the airflow distortion off, both at once, so which one cured
|
|
372
|
+
it is not separated.
|
|
373
|
+
- id: cp2077.vehicles.control.remote-control-range-flat-not-live
|
|
374
|
+
claim: "Setting player.vehicleQuickHacks.maxRange in a session (TweakDB SetFlat to 300, read back as
|
|
375
|
+
300) did not let remote control take a vehicle 112 m away: SetVehicleRemoteControlled(true,
|
|
376
|
+
true, true) returned with IsVehicleRemoteControlled true, and the next reads had it false."
|
|
377
|
+
status: verified
|
|
378
|
+
verified_on: "2.31"
|
|
379
|
+
source: ModWright field verification
|
|
380
|
+
tags:
|
|
381
|
+
- vehicle
|
|
382
|
+
- remote-control
|
|
383
|
+
- range
|
|
384
|
+
- tweakdb
|
|
385
|
+
related:
|
|
386
|
+
- cp2077.vehicles.control.remote-control-ends
|
|
387
|
+
- cp2077.vehicles.control.remote-control-quickhack-flow
|
|
388
|
+
detail: Whether the native reads the range once, reads another value, or whether a deployed tweak of
|
|
389
|
+
the flat works, is not established.
|
|
390
|
+
- id: cp2077.vehicles.control.remote-camera-toggle-without-remote-control-freezes-the-look
|
|
391
|
+
claim: ToggleVehicleRemoteControlCamera() on a vehicle that is not remote-controlled sets
|
|
392
|
+
PlayerStateMachine.IsVehicleRemoteControlCameraTPP true and leaves V able to walk but not turn
|
|
393
|
+
with the mouse; a second toggle frees her.
|
|
394
|
+
status: verified
|
|
395
|
+
verified_on: "2.31"
|
|
396
|
+
source: ModWright field verification
|
|
397
|
+
tags:
|
|
398
|
+
- vehicle
|
|
399
|
+
- remote-control
|
|
400
|
+
- camera
|
|
401
|
+
- player-state-machine
|
|
402
|
+
related:
|
|
403
|
+
- cp2077.vehicles.control.remote-control-input-context
|
|
404
|
+
- id: cp2077.vehicles.control.remote-camera-choice-outlives-the-vehicle
|
|
405
|
+
claim: "The remote-control camera choice (PlayerStateMachine.IsVehicleRemoteControlCameraTPP)
|
|
406
|
+
outlives the remote control and the vehicle: it stayed true after the Exit key, a despawn and
|
|
407
|
+
a respawn, and the next SetVehicleRemoteControlled(true, ...) came up in the chase camera with
|
|
408
|
+
no toggle. A toggle then turns it off."
|
|
409
|
+
status: verified
|
|
410
|
+
verified_on: "2.31"
|
|
411
|
+
source: ModWright field verification
|
|
412
|
+
tags:
|
|
413
|
+
- vehicle
|
|
414
|
+
- remote-control
|
|
415
|
+
- camera
|
|
416
|
+
- player-state-machine
|
|
417
|
+
related:
|
|
418
|
+
- cp2077.vehicles.control.remote-camera-toggle-without-remote-control-freezes-the-look
|
|
419
|
+
- id: cp2077.vehicles.control.a-released-tank-drops
|
|
420
|
+
claim: A tank hovers on its springs only while it is driven. Released from remote control by the
|
|
421
|
+
Exit key, the drone-sized tank fell from its hover to the ground at once.
|
|
422
|
+
status: verified
|
|
423
|
+
verified_on: "2.31"
|
|
424
|
+
source: ModWright field verification
|
|
425
|
+
tags:
|
|
426
|
+
- vehicle
|
|
427
|
+
- tank
|
|
428
|
+
- hover
|
|
429
|
+
- remote-control
|
|
430
|
+
- release
|
|
431
|
+
related:
|
|
432
|
+
- cp2077.vehicles.control.remote-control-ends
|
|
433
|
+
- cp2077.vehicles.control.tank-drive-model-hover
|
|
434
|
+
- id: cp2077.vehicles.control.a-drone-sized-tank-tunes-no-further
|
|
435
|
+
claim: >-
|
|
436
|
+
A drone-sized tank is stable only at the Basilisk's tuning ratios. The light drone (2363 kg,
|
|
437
|
+
every mass-proportional term scaled by 2363 / 54431.1) hovered and drove with a slight wobble
|
|
438
|
+
on turns. Every session change away from that made it worse: - the attitude damping tankCTOD
|
|
439
|
+
x1.5 jerked less; - x3 spun; - all three tankCTO* gains x4 spun; - the "agile" set
|
|
440
|
+
(tankAcceleration x2, tankDeceleration x2.5,
|
|
441
|
+
tankTurningSpeed x1.5) spun it on its own.
|
|
442
|
+
The same agile set made the dense drone (54431 kg), steady at its defaults, jerk at idle.
|
|
443
|
+
status: verified
|
|
444
|
+
verified_on: "2.31"
|
|
445
|
+
source: ModWright field verification
|
|
446
|
+
tags:
|
|
447
|
+
- vehicle
|
|
448
|
+
- tank
|
|
449
|
+
- physics
|
|
450
|
+
- tuning
|
|
451
|
+
- drone
|
|
452
|
+
related:
|
|
453
|
+
- cp2077.vehicles.control.a-drone-sized-tank-drives-under-remote-control
|
|
454
|
+
detail: "Which agile flat destabilises is not separated. Neither is why the gains do not scale
|
|
455
|
+
freely: a controller stepped at a fixed rate would explain it, and that is inferred. The
|
|
456
|
+
tankCTO* gains are evidently not normalized by mass inside the engine, since x4 on the light
|
|
457
|
+
drone spins while the dense drone carries 23 times the gain."
|
|
458
|
+
- id: cp2077.vehicles.control.chase-camera-boom-has-a-floor
|
|
459
|
+
claim: The remote-control chase camera follows the tppCameraPresets' boomLength from the Basilisk's
|
|
460
|
+
13.5-19.5 m down to about 2-3 m, then no closer. Booms of 2 / 3 / 4.5 m were "still too far",
|
|
461
|
+
1.2 / 1.8 / 2.7 m "a little closer", and 0.72 / 1.08 / 1.62 m "unchanged". Session edits of
|
|
462
|
+
the preset flats reached the camera.
|
|
463
|
+
status: verified
|
|
464
|
+
verified_on: "2.31"
|
|
465
|
+
source: ModWright field verification
|
|
466
|
+
tags:
|
|
467
|
+
- vehicle
|
|
468
|
+
- camera
|
|
469
|
+
- remote-control
|
|
470
|
+
- tweakdb
|
|
471
|
+
related:
|
|
472
|
+
- cp2077.vehicles.control.a-drone-sized-tank-drives-under-remote-control
|
|
473
|
+
detail: "What sets the floor is not read. The candidate is the vehicle's bounds: the Basilisk's
|
|
474
|
+
bodycar mesh is chunk-masked but still in the entity. Also unread are the camera's collision
|
|
475
|
+
and a minimum distance in the camera code."
|