private static void HandleTransferLeader(GameSession session, PacketReader packet) { string target = packet.ReadUnicodeString(); Player newLeader = GameServer.Storage.GetPlayerByName(target); if (newLeader == null) { return; } Player oldLeader = session.Player; Guild guild = GameServer.GuildManager.GetGuildByLeader(oldLeader); if (guild == null || guild.LeaderCharacterId != oldLeader.CharacterId) { return; } GuildMember newLeaderMember = guild.Members.FirstOrDefault(x => x.Player.CharacterId == newLeader.CharacterId); GuildMember oldLeaderMember = guild.Members.FirstOrDefault(x => x.Player.CharacterId == oldLeader.CharacterId); newLeaderMember.Rank = 0; oldLeaderMember.Rank = 1; guild.LeaderCharacterId = newLeader.CharacterId; guild.LeaderAccountId = newLeader.AccountId; guild.LeaderName = newLeader.Name; session.Send(GuildPacket.TransferLeaderConfirm(newLeader)); guild.BroadcastPacketGuild(GuildPacket.AssignNewLeader(newLeader, oldLeader)); guild.AssignNewLeader(oldLeader, newLeader); }