private void ShowDialogOfOpenedNpc(Player player) { var npcStats = player.OpenedNpc !.Definition; switch (npcStats.NpcWindow) { case NpcWindow.Undefined: var eventArgs = new NpcTalkEventArgs(); player.GameContext.PlugInManager.GetPlugInPoint <IPlayerTalkToNpcPlugIn>()?.PlayerTalksToNpc(player, player.OpenedNpc, eventArgs); if (!eventArgs.HasBeenHandled) { player.ViewPlugIns.GetPlugIn <IShowMessagePlugIn>()?.ShowMessage($"Talking to this NPC ({npcStats.Number}, {npcStats.Designation}) is not implemented yet.", MessageType.BlueNormal); player.PlayerState.TryAdvanceTo(PlayerState.EnteredWorld); } else if (!eventArgs.LeavesDialogOpen) { player.OpenedNpc = null; player.PlayerState.TryAdvanceTo(PlayerState.EnteredWorld); } else { // Leaves dialog opened, so leave the state as it is. } break; case NpcWindow.VaultStorage: player.Account !.Vault ??= player.PersistenceContext.CreateNew <ItemStorage>(); player.Vault = new Storage(InventoryConstants.WarehouseSize, player.Account.Vault); player.ViewPlugIns.GetPlugIn <IShowVaultPlugIn>()?.ShowVault(); break; case NpcWindow.GuildMaster: if (this.IsPlayedAllowedToCreateGuild(player)) { player.ViewPlugIns.GetPlugIn <IShowGuildMasterDialogPlugIn>()?.ShowGuildMasterDialog(); } else { player.OpenedNpc = null; player.PlayerState.TryAdvanceTo(PlayerState.EnteredWorld); } break; case NpcWindow.LegacyQuest: this.ShowLegacyQuestDialog(player); break; default: player.ViewPlugIns.GetPlugIn <IOpenNpcWindowPlugIn>()?.OpenNpcWindow(npcStats.NpcWindow); break; } }
/// <inheritdoc /> public void PlayerTalksToNpc(Player player, NonPlayerCharacter npc, NpcTalkEventArgs eventArgs) { if (npc.Definition.Number != ResetNpcNumber) { return; } eventArgs.HasBeenHandled = true; var resetAction = new ResetCharacterAction(player, npc); resetAction.ResetCharacter(); }