protected IEnumerator OnMissionUpdated() { double waitUntil = Frontiers.WorldClock.AdjustedRealTime + 1f; while (Frontiers.WorldClock.AdjustedRealTime < waitUntil) { yield return(null); } if (!Player.Local.Surroundings.IsVisitingStructure(structure)) { if (LastTopCondition != null) { //if we've been through this before //check the last top condition again MissionInteriorCondition newTopCondition = GetTopCondition(); if (newTopCondition != LastTopCondition) { LastTopCondition = newTopCondition; structure.State.AdditionalInteriorVariants.Clear(); structure.State.AdditionalInteriorVariants.AddRange(LastTopCondition.StateVariable.InteriorVariants); structure.State.InteriorCharacters.Clear(); structure.State.OwnerSpawn = LastTopCondition.StateVariable.OwnerSpawn; structure.State.InteriorCharacters.AddRange(LastTopCondition.StateVariable.AdditionalInteriorCharacters); //if we have a DIFFERENT condition than the last time //we want to wipe the slate clean //so add the interior to unload immediately Structures.AddInteriorToUnload(structure); } } } mUpdatingOverTime = false; yield break; }