[1.1.2609] Error switching from a non-Royalty save to one with, during gameplay

Started by Bar0th, April 20, 2020, 12:10:15 PM

Previous topic - Next topic

Bar0th


Exception processing alert RimWorld.Alert_MonumentMarkerMissingBlueprints: System.InvalidOperationException: Invalid ThingRequest ThingRequest(group Undefined)
  at Verse.ListerThings.ThingsMatching (Verse.ThingRequest req) [0x00095] in <533b1be141b04631a74a6c357d09359e>:0
  at Verse.ListerThings.ThingsOfDef (Verse.ThingDef def) [0x00007] in <533b1be141b04631a74a6c357d09359e>:0
  at RimWorld.Alert_MonumentMarkerMissingBlueprints.get_Targets () [0x0001c] in <533b1be141b04631a74a6c357d09359e>:0
  at RimWorld.Alert_MonumentMarkerMissingBlueprints.GetReport () [0x0000e] in <533b1be141b04631a74a6c357d09359e>:0
  at RimWorld.Alert.Recalculate () [0x00000] in <533b1be141b04631a74a6c357d09359e>:0
  at RimWorld.AlertsReadout.CheckAddOrRemoveAlert (RimWorld.Alert alert, System.Boolean forceRemove) [0x00000] in <533b1be141b04631a74a6c357d09359e>:0
Verse.Log:Error(String, Boolean)
Verse.Log:ErrorOnce(String, Int32, Boolean)
RimWorld.AlertsReadout:CheckAddOrRemoveAlert(Alert, Boolean)
RimWorld.AlertsReadout:AlertsReadoutUpdate()
RimWorld.UIRoot_Play:UIRootUpdate()
Verse.Root:Update()
Verse.Root_Play:Update()


Steps to reproduce:

  • Enable Development Mode (otherwise the error will only be visible in the log)
  • Load a save without the Royalty DLC enabled
  • Once in-game, load a save with the Royalty DLC enabled
  • "Mods Mismatch" window appears, click "Load mod list from save"
  • The above error will be generated (can close the log window, click OK, and it continues properly)

Since it only shows up in dev mode, it's not something most players will even notice (would just be some extra lines added to their "Player-prev.log").

ison

So if you load a Royalty game a mod mismatch dialog appears? Please confirm, but this means that Royalty is not active in the mod menu? If this is the case, then the game shouldn't work. If Royalty is disabled, and you try to load a Royalty game, then the savefile will be broken after you save again.

Bar0th

Quote from: ison on April 20, 2020, 04:38:56 PM
So if you load a Royalty game a mod mismatch dialog appears? Please confirm, but this means that Royalty is not active in the mod menu? If this is the case, then the game shouldn't work. If Royalty is disabled, and you try to load a Royalty game, then the savefile will be broken after you save again.

Play a normal game, with only 'Core' active in the mod menu.  While that game is running, attempt to load a save which was  created with 'Core' and 'Royalty' active.  It will show the Mods Mismatch screen (like it should), so you click 'Load mod list from save'.  Normally, it would then restart RimWorld with the new mod list (so, 'Core' + 'Royalty' in this case).  However, if you have dev mode enabled, it will display an error first (dev mode or not, the error goes into the log file).

Screenshots attached.

'Verse.ScribeMetaHeaderUtility.TryCreateDialogsForVersionMismatchWarnings(Action)' calls 'ModsConfig.SetActiveToList(List<string>)' when you click the button to load the mod list from the save.  'RimWorld.Alert_DisallowedBuildingInsideMonument.GetReport()' checks for 'ModsConfig.RoyaltyActive' (which returns true, since the mod list just changed - although it's not actually loaded yet).  From there, 'RimWorld.Alert_DisallowedBuildingInsideMonument.get_DisallowedBuildings' contains 'ThingDefOf.MonumentMarker', which errors 'Verse.ListerThings.ThingsMatching(ThingRequest)', since the actual Def hasn't loaded yet.

ison

I understand now, thanks for the explanation. Looks like a bug. We'll have to look into this.

Nowhere