internal void OnOneSecondUpdateTicked(object sender, OneSecondUpdateTickedEventArgs e) { if (!Context.IsWorldReady || !Game1.player.IsMainPlayer) { return; } else if (StartedOpeningEvent) { return; } try { GameLocation location = Game1.getLocationFromName("Custom_Ridgeside_RidgeFalls"); bool all_done = true; foreach (var pedestal in PedestalTemplates) { ItemPedestal itemPedestal = (ItemPedestal)location.Objects[pedestal.tilePosition]; if (!itemPedestal.match.Value) { all_done = false; break; } } if (all_done) { //check if we can start the event if (Game1.eventUp || Game1.currentLocation.currentEvent != null || Game1.farmEvent != null || !StardewModdingAPI.Context.CanPlayerMove || Game1.IsFading()) { return; } foreach (var pedestal in PedestalTemplates) { ItemPedestal itemPedestal = (ItemPedestal)location.Objects[pedestal.tilePosition]; itemPedestal.locked.Value = true; } StartedOpeningEvent = true; Helper.Events.GameLoop.OneSecondUpdateTicked -= OnOneSecondUpdateTicked; var Events = location.GetLocationEvents(); var PortalEvent = new Event(Events["75160256/n InexistentMailFlag"], eventID: 75160256); // Moved add special order command to UntimedSO UtilFunctions.StartEvent(PortalEvent, "Custom_Ridgeside_RidgeFalls", 15, 43); } } catch (Exception exception) { Log.Warn("Issue with pedestals detected in OneSecondUpdate. Check Trace for Details"); Log.Trace(exception.Message); Log.Trace(exception.StackTrace); Helper.Events.GameLoop.OneSecondUpdateTicked -= OnOneSecondUpdateTicked; } }