/// <summary> /// Check a parts of introduction event/quest when player warped. /// When player reach 10 floor of mines, then we got letter tomorrow /// When player got letter and go to Adventurer's guild, play Marlon event /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Events_CheckEvent(object sender, ICheckEventEventArgs e) { if (e.Location.Name.Equals("AdventureGuild") && e.Player.mailReceived.Contains(LETTER_KEY) && !this.GameMaster.Data.GetPlayerState(e.Player).isEligible) { if (this.contentLoader.LoadStrings("Data/Events").TryGetValue("adventureBegins", out string eventData) && !Game1.eventUp) { Event marlonEvent = new Event(eventData); marlonEvent.onEventFinished += new Action(() => { Quest nextQuest = this.StoryHelper.GetQuestById(2); nextQuest.showNew.Value = true; nextQuest.accept(); this.GameMaster.Data.GetPlayerState().isEligible = true; this.GameMaster.SyncData(); this.monitor.Log($"Player {e.Player.Name} is now eligible to recruit companions!", LogLevel.Info); Game1.player.questLog.Add(nextQuest); Game1.addHUDMessage(new HUDMessage(this.contentLoader.LoadString("Strings/Strings:objectiveUpdate"), 2)); }); e.Location.startEvent(marlonEvent); } } }
private void Events_CheckEvent(object sender, ICheckEventEventArgs e) { if (Game1.CurrentEvent != null || Game1.eventUp) { return; } var recruitedCsm = this.companionManager .PossibleCompanions .Values .FirstOrDefault(csm => csm.CurrentStateFlag == StateMachine.CompanionStateMachine.StateFlag.RECRUITED); if (recruitedCsm == null) { return; } var events = this.contentLoader.LoadStrings("Data/Events"); foreach (var key in events.Keys) { string[] tokens = key.Split('/'); if (tokens.Length >= 4 && tokens[0] == "companion" && recruitedCsm.Name == tokens[2] && e.Location.Name == tokens[3]) { int eventId = int.Parse(tokens[1]); if (!Game1.player.eventsSeen.Contains(eventId)) { e.Location.startEvent(new Event(events[key], eventId)); break; } } } }
private void Events_CheckEvent(object sender, ICheckEventEventArgs e) { if (Game1.CurrentEvent != null || Game1.eventUp) { return; } var recruitedCsm = this.companionManager .PossibleCompanions .Values .FirstOrDefault(csm => csm.CurrentStateFlag == StateMachine.CompanionStateMachine.StateFlag.RECRUITED); if (recruitedCsm == null) { return; } var events = this.contentLoader.LoadStrings("Data/Events"); foreach (var key in events.Keys) { string[] tokens = key.Split('/'); if (tokens.Length >= 4 && tokens[0] == "companion" && recruitedCsm.Name == tokens[2] && e.Location.Name == tokens[3]) { int eventId = int.Parse(tokens[1]); bool canPlay = tokens.Length == 4 || this.epu.CheckConditions(string.Join("/", tokens.Skip(4).ToArray())); if (!Game1.player.eventsSeen.Contains(eventId) && canPlay) { var companionEvent = new Event(events[key], eventId); companionEvent.onEventFinished += () => { var afterEventPosition = Game1.player.positionBeforeEvent; if (recruitedCsm.Companion.currentLocation is MineShaft mines) { afterEventPosition = recruitedCsm.Reflection.GetProperty <Vector2>(mines, "tileBeneathLadder").GetValue(); Game1.player.positionBeforeEvent = afterEventPosition; } recruitedCsm.Companion.setTileLocation(afterEventPosition); }; e.Location.startEvent(companionEvent); break; } } } }