Am I correct in assuming that for OnPlayerLoadGame()
Event called when the player loads a save game. This event is only sent to the player actor. If this is the first save game load where the event is being listened to, and the event is on an alias, and the alias didn't exist at the time the save was made, then the player won't be in the alias by the time the event is sent, and the alias script will not receive the event. It should then receive later events.
... equates to a reliable method to differentiate between an end user who has newly installed your mod (for that save) versus one who already had your mod loaded when the save was made?
If I'm correct in assuming this I was going to use it to run some one-time setup for anyone who is updating my mod, but prevent users who have newly installed the mod from seeing this. Of course I'm going to combine it with a version check and some kind of "run once" token. To prevent new installers from seeing the update logic (they will never need it), I luckily have a polling state on the player, so I can use "OnBeginState" to single out the first-time installers, since previous users will already be in this state. So I will also set this token there, so that the next time a new user loads their save they don't go through the update logic.
It's the best way I can think to do it, but if anyone has any better solutions, feel free. Basically, my current mod version is 0.2.1, and as of 0.3 I will be installing proper VC/update logic... Since there is no previous version number to work with, both users updating and first-time users are indifferentiable without additional logic. I could technically force anybody upgrading to 0.3 to just enter some stuff manually into the console, but I wanted to avoid this. I definitely don't want first-time installers to go through the update logic, though.