public virtual void LeaveGuild(BasePlayerCharacterEntity playerCharacterEntity) { int guildId; GuildData guild; if (!CanLeaveGuild(playerCharacterEntity, out guildId, out guild)) { return; } if (guild.IsLeader(playerCharacterEntity)) { foreach (var memberId in guild.GetMemberIds()) { BasePlayerCharacterEntity memberCharacterEntity; if (playerCharactersById.TryGetValue(memberId, out memberCharacterEntity)) { memberCharacterEntity.ClearGuild(); SendGuildTerminateToClient(memberCharacterEntity.ConnectionId, guildId); } } guilds.Remove(guildId); } else { playerCharacterEntity.ClearGuild(); SendGuildTerminateToClient(playerCharacterEntity.ConnectionId, guildId); guild.RemoveMember(playerCharacterEntity.Id); guilds[guildId] = guild; SendRemoveGuildMemberToClients(guild, playerCharacterEntity.Id); } }