A Visual Studio Code extension providing linting and validation tools for Ancient Dungeon VR mods.
Features
Real-time linting of ADVR mod files
Validation of mod structure and required fields
Inline error and warning messages in the editor
Integration with VS Code Problems panel
Command palette action "Sort Translation CSVs" to alphabetize language/english.csv by the first semicolon-delimited column
Requirements
This extension requires Visual Studio Code version 1.60.0 or higher.
The sumneko.lua extension is installed automatically as a dependency by this extension for enhanced Lua language support and linting. No manual installation is required.
Make sure your ADVR mod files are accessible within your workspace for full functionality.
The Extension automatically downloads modding bindings (language server files) required by the extension.
Modding Help
Feel free to check out the Getting Started Guide, where we discuss all the different types of moddable content in the game and provide examples of how to create an ADVR mod.
Release Notes
The following version are avialable for the ADVR Modding Tools
Release 1.101.0 (ADVR Version ea0.1.10.1)
Run modifiers now need to have a "UniqueSaveFileId" assigned to them, which isn't assigned by default. This is needed because run modifiers are now encoded in the run seed. If not assigned a unique ID it will not load and give a warning in the log files, the same happens if a unique ID is already used by another modifier. The number 0 is reserved for an "invalid ID". The game uses the IDs 1 -> 8 for the existing modifiers but there could always be more added in the future. Admittedly this isn't ideal for mods but is needed to keep the seeds for runs from becoming giant, encoding file names would take up too much space.
game.isPlayerWhoStartedRun() has been removed in favor of game.isMasterClient(), these were essentially always the same but in a roundabout way. To simplify the logic for host migration this system was removed. game.isHost() and game.isProxy() were made obsolete/deprecated in favor of this function too. They still work but internally just call game.isMasterClient() and isProxy returns the opposite of the function. In singleplayer game.isMasterClient() will always return true.
Add two new events: onPreScryingGlassDonation and onPostScryingGlassDonation for easier interaction with the scrying glass donation system.
Expose gravity variable for PlayerController as a CurrentGravity property.
Expose GrassCut, AudioManager.DungeonMusicInfo, ButtonPOI, MonolithDoor, BossRoom and BossRoom.BossSpawnInfo classes/structs.
Fixed asset bundles not correctly loading. In addition it's no longer needed to prefix the asset bundle path with mods/ or ADVR_Mods/, for backwards compatibility the game will replace these with empty strings so mods keep working.
Orbs/PotionDiskRepresentation now have a activeVignetteDurationOverride variable to determine how long the vignette effect lasts. This variable is ignored if a negative number, which is the case by default. This can be used to make a short flash for orbs, see the demanding orb as an example. This number can't exceed the effectTime variable as the vignette effect is disabled once an orb runs out.
You can now access the world gen config of the world generator (read only)
Script class is no longer exposed due to security reasons
Fixed the mods_in_development folder not correctly loading mods