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,81 @@
|
|
|
1
|
+
game: cyberpunk2077
|
|
2
|
+
topic: ui.inkatlas
|
|
3
|
+
title: .inkatlas icon-sheet format — slot coordinates, resolution slots and yaml wiring
|
|
4
|
+
facts:
|
|
5
|
+
- id: cp2077.ui.inkatlas.slices-by-percentage-not-pixels
|
|
6
|
+
claim: An `.inkatlas` file slices its backing texture into sprite slots using fractional coordinates
|
|
7
|
+
(a float between 0 and 1) rather than pixel coordinates; the origin (0,0) is the sheet's
|
|
8
|
+
top-left corner and (1,1) is its bottom-right corner, so a slot's bounds are
|
|
9
|
+
resolution-independent of the actual texture's pixel dimensions.
|
|
10
|
+
status: community
|
|
11
|
+
source: CDPR-Modding-Documentation/Cyberpunk-Modding-Docs
|
|
12
|
+
for-mod-creators-theory/files-and-what-they-do/file-formats/game-icons-the-inkatlas-file.md,
|
|
13
|
+
section "Summary"
|
|
14
|
+
tags:
|
|
15
|
+
- inkatlas
|
|
16
|
+
- coordinates
|
|
17
|
+
- texture
|
|
18
|
+
- icon
|
|
19
|
+
- id: cp2077.ui.inkatlas.slot-is-inktextureatlasmapper
|
|
20
|
+
claim: Each sprite slot in an `.inkatlas` is represented by an `inkTextureAtlasMapper` entry
|
|
21
|
+
carrying four coordinates (the fractional top-left and bottom-right bounds described in
|
|
22
|
+
cp2077.ui.inkatlas.slices-by-percentage-not-pixels); a two-sprite column example gives
|
|
23
|
+
(x0,y0)-(x1,y0.5) for the upper sprite and (x0,y0.5)-(x1,y1) for the lower one.
|
|
24
|
+
status: community
|
|
25
|
+
source: CDPR-Modding-Documentation/Cyberpunk-Modding-Docs
|
|
26
|
+
for-mod-creators-theory/files-and-what-they-do/file-formats/game-icons-the-inkatlas-file.md,
|
|
27
|
+
section "Summary"
|
|
28
|
+
tags:
|
|
29
|
+
- inkatlas
|
|
30
|
+
- inktextureatlasmapper
|
|
31
|
+
- slot
|
|
32
|
+
- schema
|
|
33
|
+
- id: cp2077.ui.inkatlas.three-texture-slots-only-slot-0-needed-for-modding
|
|
34
|
+
claim: Every `.inkatlas` has three `inkTextureSlot` entries supporting different backing-texture
|
|
35
|
+
resolutions; for modding purposes it is sufficient to populate `inkTextureSlot` 0 (the first
|
|
36
|
+
slot in the list) — the other two are additional-resolution variants a modder does not need to
|
|
37
|
+
fill in.
|
|
38
|
+
status: community
|
|
39
|
+
source: CDPR-Modding-Documentation/Cyberpunk-Modding-Docs
|
|
40
|
+
for-mod-creators-theory/files-and-what-they-do/file-formats/game-icons-the-inkatlas-file.md,
|
|
41
|
+
section "inkTextureSlots"
|
|
42
|
+
tags:
|
|
43
|
+
- inkatlas
|
|
44
|
+
- inktextureslot
|
|
45
|
+
- resolution
|
|
46
|
+
- modding
|
|
47
|
+
detail: As of WolvenKit 8.11.1, WolvenKit's "Part Mapping" tab (which shows which image region maps
|
|
48
|
+
to which slot name) only appears/refreshes after reopening the file once an `.xbm` texture is
|
|
49
|
+
hooked up to the atlas.
|
|
50
|
+
- id: cp2077.ui.inkatlas.atlaspartname-must-match-mapper-entry
|
|
51
|
+
claim: "A `UIIcon` yaml record targets a specific sprite inside an `.inkatlas` via two fields:
|
|
52
|
+
`atlasResourcePath` (the `.inkatlas` file's depot path) and `atlasPartName` (the name of an
|
|
53
|
+
entry in that atlas's `inkTextureAtlasMapper`); if `atlasPartName` does not match any part
|
|
54
|
+
name in the atlas, the game displays an empty icon rather than erroring."
|
|
55
|
+
status: community
|
|
56
|
+
source: 'CDPR-Modding-Documentation/Cyberpunk-Modding-Docs
|
|
57
|
+
for-mod-creators-theory/files-and-what-they-do/file-formats/game-icons-the-inkatlas-file.md,
|
|
58
|
+
section "Inkatlas: Slot names"'
|
|
59
|
+
tags:
|
|
60
|
+
- inkatlas
|
|
61
|
+
- uiicon
|
|
62
|
+
- atlaspartname
|
|
63
|
+
- atlasresourcepath
|
|
64
|
+
- silent-failure
|
|
65
|
+
detail: A validator can catch this class of mistake by cross-checking every `UIIcon` record's
|
|
66
|
+
`atlasPartName` against the named `.inkatlas` resource's actual part-mapping entries, since
|
|
67
|
+
the failure mode (blank icon, no log error) is otherwise invisible until observed in-game.
|
|
68
|
+
- id: cp2077.ui.inkatlas.slot-names-are-freely-renameable
|
|
69
|
+
claim: The part names inside an `.inkatlas`'s `inkTextureAtlasMapper` (referenced by
|
|
70
|
+
`atlasPartName`) can be freely renamed by a modder in WolvenKit; they are arbitrary labels the
|
|
71
|
+
mod author controls, not fixed engine-reserved names — some project templates ship with
|
|
72
|
+
several slot names already wired up by convention, but nothing enforces those specific names.
|
|
73
|
+
status: community
|
|
74
|
+
source: 'CDPR-Modding-Documentation/Cyberpunk-Modding-Docs
|
|
75
|
+
for-mod-creators-theory/files-and-what-they-do/file-formats/game-icons-the-inkatlas-file.md,
|
|
76
|
+
caption under "Inkatlas: Slot names" ("You can change field names at your leisure.")'
|
|
77
|
+
tags:
|
|
78
|
+
- inkatlas
|
|
79
|
+
- atlaspartname
|
|
80
|
+
- naming
|
|
81
|
+
- convention
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
game: cyberpunk2077
|
|
2
|
+
topic: ui.modsettings
|
|
3
|
+
title: Mod Settings annotation schema and the Native Interactions Framework
|
|
4
|
+
facts:
|
|
5
|
+
- id: cp2077.ui.modsettings.class-must-extend-system-or-service
|
|
6
|
+
claim: A Mod Settings class holds the mod's settings as properties. Registering it as a singleton is
|
|
7
|
+
recommended, and the way to do that is to extend `ScriptableSystem`; with Codeware installed
|
|
8
|
+
you can extend `ScriptableService` instead. "`ScriptableSystem`s are bounded to game sessions,
|
|
9
|
+
they're only available when in a game session. `ScriptableService`s are independent of game
|
|
10
|
+
sessions as they are created when the game starts, so they're always available." The page
|
|
11
|
+
recommends `ScriptableService` for settings.
|
|
12
|
+
status: community
|
|
13
|
+
source: wiki.redmodding.org "Mod Settings", section "Define a class" (including the "Different Types
|
|
14
|
+
of Singletons" box)
|
|
15
|
+
tags:
|
|
16
|
+
- modsettings
|
|
17
|
+
- scriptablesystem
|
|
18
|
+
- scriptableservice
|
|
19
|
+
- class-structure
|
|
20
|
+
detail: 'Corrected 2026-09-07 on three counts: the singleton is recommended, not required;
|
|
21
|
+
`ScriptableService` requires Codeware; and the difference is session-scope/availability, not
|
|
22
|
+
"settings persisted between sessions" as previously recorded (Mod Settings persists values in
|
|
23
|
+
its own configuration file either way — see
|
|
24
|
+
cp2077.ui.modsettings.programmatic-change-needs-acceptchanges). The source URL was also
|
|
25
|
+
changed: the cited /scripting-cyberpunk/mod-settings/introduction 404s, and the live page is
|
|
26
|
+
/scripting-cyberpunk/scripting/settings/mod-settings. The page title is "Mod Settings"; there
|
|
27
|
+
is no page called "Mod Settings Framework Extraction".'
|
|
28
|
+
- id: cp2077.ui.modsettings.unannotated-property-is-invisible
|
|
29
|
+
claim: "Mod Settings binds a property to the UI through `@runtimeProperty(key: String, value:
|
|
30
|
+
String)` annotations, of which `ModSettings.mod` is the mod's unique name and \"You must reuse
|
|
31
|
+
the same value on other properties.\" A property with no annotations is simply not exposed —
|
|
32
|
+
the reference class's `secret: String` field is left unannotated with the comment \"We don't
|
|
33
|
+
want to expose this.\""
|
|
34
|
+
status: community
|
|
35
|
+
source: wiki.redmodding.org "Mod Settings", sections "Define a class" (example class) and "Binding
|
|
36
|
+
properties > Base Annotations"
|
|
37
|
+
tags:
|
|
38
|
+
- modsettings
|
|
39
|
+
- runtimeproperty
|
|
40
|
+
- required-field
|
|
41
|
+
detail: 'Whatever value the property is assigned is treated as its default, and any annotation
|
|
42
|
+
taking a string value can instead take a localization key. Corrected 2026-09-07: "with no
|
|
43
|
+
error raised" was trimmed as unsourced, and the section names fixed (the page has no
|
|
44
|
+
"Annotation System" or "Notable Gotchas" headings).'
|
|
45
|
+
- id: cp2077.ui.modsettings.universal-annotation-keys
|
|
46
|
+
claim: "Annotations supported on all property types: `ModSettings.mod` (unique mod name),
|
|
47
|
+
`ModSettings.displayName` (label), `ModSettings.description` (hover hint),
|
|
48
|
+
`ModSettings.category` (groups properties under a named separator),
|
|
49
|
+
`ModSettings.category.order` (a Number giving the category's placement) and
|
|
50
|
+
`ModSettings.dependency`."
|
|
51
|
+
status: community
|
|
52
|
+
source: wiki.redmodding.org "Mod Settings", section "Binding properties > Base Annotations"
|
|
53
|
+
tags:
|
|
54
|
+
- modsettings
|
|
55
|
+
- runtimeproperty
|
|
56
|
+
- annotation
|
|
57
|
+
- syntax
|
|
58
|
+
- id: cp2077.ui.modsettings.type-specific-annotation-keys
|
|
59
|
+
claim: "Type-specific annotations: `ModSettings.min`, `ModSettings.max` and `ModSettings.step`
|
|
60
|
+
(minimum, maximum and increment for the slider) are supported on `Int32` and `Float`
|
|
61
|
+
properties, typed to match the property; `ModSettings.displayValues.EnumValue` sets the UI
|
|
62
|
+
label for one value of an `Enum` property, which otherwise displays the enum's own value
|
|
63
|
+
names."
|
|
64
|
+
status: community
|
|
65
|
+
source: wiki.redmodding.org "Mod Settings", section "Binding properties > Specific Annotations"
|
|
66
|
+
tags:
|
|
67
|
+
- modsettings
|
|
68
|
+
- runtimeproperty
|
|
69
|
+
- annotation
|
|
70
|
+
- enum
|
|
71
|
+
- numeric
|
|
72
|
+
- id: cp2077.ui.modsettings.type-to-widget-mapping
|
|
73
|
+
claim: "Supported property types and how each is shown: `Bool` -> \"A toggle-able on/off switch\";
|
|
74
|
+
`Int32` -> \"A slider with `Int32` values for the user to choose from\"; `Float` -> \"A slider
|
|
75
|
+
with `Float` values\"; `Enum` -> \"A selector to choose from the specified enum's values\";
|
|
76
|
+
`EInputKey` -> \"A button where the user can input any key (supports both keyboard and
|
|
77
|
+
controller)\"."
|
|
78
|
+
status: community
|
|
79
|
+
source: wiki.redmodding.org "Mod Settings", section "Binding properties > Supported Types"
|
|
80
|
+
tags:
|
|
81
|
+
- modsettings
|
|
82
|
+
- widget
|
|
83
|
+
- property-type
|
|
84
|
+
detail: 'Corrected 2026-09-07: "There is no annotation to pick a different widget for a given type"
|
|
85
|
+
was trimmed — the page lists the mapping but does not state that it cannot be overridden.'
|
|
86
|
+
- id: cp2077.ui.modsettings.dependency-annotation-hides-property
|
|
87
|
+
claim: '`@runtimeProperty("ModSettings.dependency", "String")` shows the annotated property "only if
|
|
88
|
+
another Boolean setting is enabled"; the String "must be the name of the Boolean setting
|
|
89
|
+
property".'
|
|
90
|
+
status: community
|
|
91
|
+
source: wiki.redmodding.org "Mod Settings", section "Binding properties > Base Annotations"
|
|
92
|
+
tags:
|
|
93
|
+
- modsettings
|
|
94
|
+
- dependency
|
|
95
|
+
- conditional-display
|
|
96
|
+
detail: 'Corrected 2026-09-07: "in the same group" was trimmed as unsourced, and the section name
|
|
97
|
+
fixed (this is a base annotation, not a gotcha).'
|
|
98
|
+
- id: cp2077.ui.modsettings.listener-callbacks-require-cb-keyword
|
|
99
|
+
claim: 'Listeners are registered with `ModSettings.RegisterListenerToClass(target:
|
|
100
|
+
ref<IScriptable>)` and/or `ModSettings.RegisterListenerToModifications(target)` (with matching
|
|
101
|
+
`Unregister...` calls). The target must define `OnModVariableChangeRequested(groupPath: CName,
|
|
102
|
+
varName: CName)`, `OnModVariableChangeAccepted(groupPath: CName, varName: CName)` and/or
|
|
103
|
+
`OnModSettingsChange()`: "You must exactly name the callback methods as you see it, you must
|
|
104
|
+
also not forget to use the keyword `cb` either. Both conditions are required for the method to
|
|
105
|
+
be called by Mod Settings."'
|
|
106
|
+
status: community
|
|
107
|
+
source: wiki.redmodding.org "Mod Settings", sections "Listeners > Listening to Changes" and
|
|
108
|
+
"Listeners > Listening to Modifications" (including the info hints)
|
|
109
|
+
tags:
|
|
110
|
+
- modsettings
|
|
111
|
+
- listener
|
|
112
|
+
- callback
|
|
113
|
+
- cb-keyword
|
|
114
|
+
- silent-failure
|
|
115
|
+
detail: "`groupPath` is `/mods/[ModName]/[ModClass]` and `varName` is the variable name. Registering
|
|
116
|
+
a listener is not optional: \"Binding annotations to your class' properties isn't enough\".
|
|
117
|
+
Changes reach the class when the player presses `Accept`."
|
|
118
|
+
- id: cp2077.ui.modsettings.lifecycle-differs-by-base-class
|
|
119
|
+
claim: Where `Listen`/`Unlisten` go depends on the base class. A `ScriptableSystem` calls
|
|
120
|
+
`this.Listen()` from `OnAttach()` and `this.Unlisten()` from `OnDetach()`. A
|
|
121
|
+
`ScriptableService` calls `this.Listen()` from BOTH `OnLoad()` and `OnReload()` and
|
|
122
|
+
`this.Unlisten()` only from `OnUninitialize()` — and the page's warning is explicit that
|
|
123
|
+
RedHotTools users "must call `Listen` in the `Reload` method of your `ScriptableService`. You
|
|
124
|
+
don't need to `Unlisten` in such case."
|
|
125
|
+
status: community
|
|
126
|
+
source: wiki.redmodding.org "Mod Settings", section "Listeners > Registering Listeners" (including
|
|
127
|
+
the "If you are using `ScriptableService`" box and the RedHotTools warning hint)
|
|
128
|
+
tags:
|
|
129
|
+
- modsettings
|
|
130
|
+
- scriptableservice
|
|
131
|
+
- scriptablesystem
|
|
132
|
+
- redhottools
|
|
133
|
+
- lifecycle
|
|
134
|
+
- id: cp2077.ui.modsettings.programmatic-change-needs-acceptchanges
|
|
135
|
+
claim: "Changing a setting from code rather than the Mod Settings menu takes three steps: `let
|
|
136
|
+
configs = ModSettings.GetVars(n\"MyMod\", n\"\");` (`n\"\"` meaning no explicit category),
|
|
137
|
+
locate the `ConfigVar` by `config.GetName()` and cast it (e.g. to `ModConfigVarBool`) to call
|
|
138
|
+
`SetValue`, then call `ModSettings.AcceptChanges()` to \"save new value in configuration
|
|
139
|
+
file\". Without that last call, \"changes made to a setting won't be saved by Mod Settings in
|
|
140
|
+
its configuration file\"."
|
|
141
|
+
status: community
|
|
142
|
+
source: wiki.redmodding.org "Mod Settings", section "Save changes dynamically"
|
|
143
|
+
tags:
|
|
144
|
+
- modsettings
|
|
145
|
+
- acceptchanges
|
|
146
|
+
- configvar
|
|
147
|
+
- persistence
|
|
148
|
+
detail: Section name corrected 2026-09-07 (the heading is "Save changes dynamically", not "Dynamic
|
|
149
|
+
Saving").
|
|
150
|
+
- id: cp2077.ui.modsettings.values-persist-in-the-plugin-user-ini-keyed-by-mod-and-class
|
|
151
|
+
claim: 'Mod Settings persists a changed value in red4ext/plugins/mod_settings/user.ini, under a
|
|
152
|
+
section named "[<ModSettings.mod>.<class name>]" with one "<property> = <value>" line per
|
|
153
|
+
changed property, and reads it back at the next launch. The section outlives the mod: removing
|
|
154
|
+
the .reds leaves the section in place.'
|
|
155
|
+
status: verified
|
|
156
|
+
verified_on: "2.31"
|
|
157
|
+
source: ModWright field verification
|
|
158
|
+
tags:
|
|
159
|
+
- modsettings
|
|
160
|
+
- persistence
|
|
161
|
+
- user-ini
|
|
162
|
+
- red4ext
|
|
163
|
+
- scaffold
|
|
164
|
+
related:
|
|
165
|
+
- cp2077.ui.modsettings.unannotated-property-is-invisible
|
|
166
|
+
detail: Whether an unchanged default is written is not known (only the changed value was seen). A
|
|
167
|
+
stale section is harmless as far as observed; cleaning it is a hand edit of the plugin's file,
|
|
168
|
+
which ModWright does not touch.
|
|
169
|
+
- id: cp2077.ui.modsettings.scriptablesystem-listener-updates-properties-on-accept
|
|
170
|
+
claim: A ScriptableSystem settings class that calls ModSettings.RegisterListenerToClass(this) from
|
|
171
|
+
OnAttach has its annotated properties updated in the live instance when the player presses
|
|
172
|
+
Accept in MOD SETTINGS, with none of the listener callbacks (OnModVariableChangeRequested,
|
|
173
|
+
OnModVariableChangeAccepted, OnModSettingsChange) defined and no reload.
|
|
174
|
+
status: verified
|
|
175
|
+
verified_on: "2.31"
|
|
176
|
+
source: ModWright field verification
|
|
177
|
+
tags:
|
|
178
|
+
- modsettings
|
|
179
|
+
- listener
|
|
180
|
+
- scriptablesystem
|
|
181
|
+
- scaffold
|
|
182
|
+
- live-update
|
|
183
|
+
related:
|
|
184
|
+
- cp2077.ui.modsettings.listener-callbacks-require-cb-keyword
|
|
185
|
+
- cp2077.ui.modsettings.lifecycle-differs-by-base-class
|
|
186
|
+
detail: "The callbacks are for reacting to a change; the property update itself needed only the
|
|
187
|
+
registration. Not tested here: the same class without the registration (the wiki says the
|
|
188
|
+
properties then keep their defaults)."
|
|
189
|
+
- id: cp2077.ui.modsettings.module-guard-compiles-with-and-without-mod-settings
|
|
190
|
+
claim: Mod Settings' redscript module is ModSettingsModule (the first line of
|
|
191
|
+
red4ext/plugins/mod_settings/module.reds), so a settings class that puts its
|
|
192
|
+
ModSettings.RegisterListenerToClass / UnregisterListenerToClass calls behind
|
|
193
|
+
@if(ModuleExists("ModSettingsModule")), with empty @if(!ModuleExists("ModSettingsModule"))
|
|
194
|
+
twins, compiles whether Mod Settings is installed or not.
|
|
195
|
+
status: verified
|
|
196
|
+
verified_on: "2.31"
|
|
197
|
+
source: ModWright field verification
|
|
198
|
+
tags:
|
|
199
|
+
- modsettings
|
|
200
|
+
- redscript
|
|
201
|
+
- conditional-compilation
|
|
202
|
+
- optional-dependency
|
|
203
|
+
detail: "Compile evidence only: the game was not launched with Mod Settings removed, since other
|
|
204
|
+
installed mods may need it."
|