public async Task Handle(WorldClient client, GuildDismantlePacket packet) { if (!_guildManager.HasGuild || _guildManager.GuildRank != 1) { return; } var ok = await _guildManager.TryDeleteGuild(); if (!ok) { return; } foreach (var player in _gameWorld.Players.Values.ToList()) { _packetFactory.SendGuildListRemove(player.GameSession.Client, _guildManager.GuildId); } foreach (var member in _guildManager.GuildMembers.ToList()) { if (!_gameWorld.Players.ContainsKey(member.Id)) { continue; } var guildPlayer = _gameWorld.Players[member.Id]; await guildPlayer.GuildManager.Clear(); _packetFactory.SendGuildDismantle(guildPlayer.GameSession.Client); } }