About this mod
VersionManager is a simple Papyrus system for handling quest script updates in Starfield. It detects version changes and restarts quests automatically, ensuring new logic is applied without requiring a new save. Designed for A.C.T., MORPH, and MORPH Effects, it provides seamless script updates with minimal setup.
- Requirements
- Permissions and credits
Version Manager is a lightweight Papyrus-based system designed to help modders manage script updates in Starfield without requiring users to start a new save. It allows quest scripts to detect version changes and automatically restart, ensuring that new script logic is applied seamlessly.
This system was originally created for my own A.C.T., MORPH, and MORPH Effects mods to ensure they could update cleanly without forcing users to restart their game or manually stop and restart quests. However, it can be used for any mod that needs an easy way to manage script updates.
How It Works
- Your quest script registers itself with Version Manager using
RequestVersionManagement
duringOnQuestInit
andOnPlayerLoadGame
. - Version Manager checks if the version has changed:
- If unchanged, nothing happens.
- If changed, the quest stops and restarts to apply the latest script logic.
- This means your quest must be designed to handle being restarted properly in
OnQuestInit
.
1. Add a Property for Version Manager
In your quest script, add a property that references
VersionManager
Like so and ensure that the VersionManager quest instance is being passed to it in the CK:
VersionManagerQuestScript Property VersionManager Auto
2. Register for Version Management in
OnQuestInit and OnPlayerLoadGame
Your quest script should register itself with Version Manager when it initializes and when the player loads a save:
Event OnQuestInit()
RegisterForRemoteEvent(Game.GetPlayer(), "OnPlayerLoadGame")
ManageVersion()
EndEvent
Event Actor.OnPlayerLoadGame(Actor akSender)
ManageVersion()
EndEvent
3. Implement
ManageVersion()
to Directly Pass the Version
Always call RequestVersionManagement with the version string directly inside the function ensuring it is a stack variable otherwise you can end up passing in the stale version number even though the new script is installed:
Function ManageVersion()
VersionManager.RequestVersionManagement(self, "0.9.0")
EndFunction
What Happens When a Version Change is Detected?
If the version string provided to RequestVersionManagement does not match the last registered version, Version Manager will:
- Stop the quest (
Stop()
) - Restart the quest (
Start()
)
Important Considerations
- Quest state resets – Since the quest is stopped and restarted, any progress stored inside the quest script will be lost unless properly reloaded in
OnQuestInit
. - Your quest must be designed to reload necessary data when restarted.
- Not recommended for complex progression quests – If your quest has multiple stages that must persist across updates, Version Manager is not a good fit. Instead, consider:
- Storing progress in global variables
- Using an external save system
✔ Ensures users always get the latest script logic when updating mods
✔ Prevents users from needing a new save when updating
✔ Simple to implement with just a few lines of Papyrus
✔ No SFSE or external dependencies – pure Papyrus solution
✔ Works for gameplay mods that need periodic updates without save issues
Compatibility
✅ Works with all Starfield quest scripts
✅ No SFSE dependency – fully Papyrus-based
✅ Compatible with other mods (as long as they don’t interfere with stopping or restarting the quest)
Installation & Usage
- Add Version Manager to your mod as a dependency.
- Centralize the version management call by implementing
ManageVersion()
in your quest script. - Register for version tracking during
OnQuestInit
andOnPlayerLoadGame
.
Final Notes
- If your mod requires persistent quest progression, do not use Version Manager. Instead, handle version updates manually.
- However, if your mod’s scripts can safely restart, Version Manager ensures users always get the latest logic without requiring a new save.
- I originally created Version Manager to support A.C.T., MORPH, and MORPH Effects, but it can be used for any mod that needs automatic script updates.
If you like this mod, check out my other mods: