public static void HandlePetitionTurnIn(IRealmClient client, RealmPacketIn packet) { var petitionGuid = packet.ReadEntityId(); var petition = client.ActiveCharacter.Inventory.GetItem(petitionGuid) as PetitionCharter; if (petition == null) { return; } var name = petition.Petition.Name; var type = petition.Petition.Type; if (petition.Petition.SignedIds.Count < ((uint)type - 1)) { SendPetitionTurnInResults(client, PetitionTurns.NEED_MORE_SIGNATURES); return; } if (type == PetitionType.Guild && client.ActiveCharacter.IsInGuild) { SendPetitionTurnInResults(client, PetitionTurns.ALREADY_IN_GUILD); return; } else if (client.ActiveCharacter.ArenaTeamMember[(uint)ArenaMgr.GetSlotByType((uint)type)] != null) { ArenaTeamHandler.SendResult(client, ArenaTeamCommandId.CREATE, name, string.Empty, ArenaTeamResult.ALREADY_IN_ARENA_TEAM); return; } else if (type == PetitionType.Guild && GuildMgr.DoesGuildExist(name)) { GuildHandler.SendResult(client, GuildCommandId.CREATE, name, GuildResult.NAME_EXISTS); return; } else if (ArenaMgr.DoesArenaTeamExist(name)) { ArenaTeamHandler.SendResult(client, ArenaTeamCommandId.CREATE, name, string.Empty, ArenaTeamResult.NAME_EXISTS); return; } else { petition.Destroy(); if (type == PetitionType.Guild) { var guild = new Guild(client.ActiveCharacter.Record, name); foreach (var chr in petition.Petition.SignedIds) { if (chr == 0) { continue; } else { var character = World.GetCharacter(chr); guild.AddMember(character); } } } else { var team = new ArenaTeam(client.ActiveCharacter.Record, name, (uint)type); foreach (var chr in petition.Petition.SignedIds) { if (chr == 0) { continue; } else { var character = World.GetCharacter(chr); team.AddMember(character); } } } SendPetitionTurnInResults(client, PetitionTurns.OK); } }
public static void HandlePetitionTurnIn(IRealmClient client, RealmPacketIn packet) { var petitionGuid = packet.ReadEntityId(); var petition = client.ActiveCharacter.Inventory.GetItem(petitionGuid) as PetitionCharter; if (petition == null) return; var name = petition.Petition.Name; var type = petition.Petition.Type; if (petition.Petition.SignedIds.Count < ((uint)type - 1)) { SendPetitionTurnInResults(client, PetitionTurns.NEED_MORE_SIGNATURES); return; } if (type == PetitionType.Guild && client.ActiveCharacter.IsInGuild) { SendPetitionTurnInResults(client, PetitionTurns.ALREADY_IN_GUILD); return; } else if (client.ActiveCharacter.ArenaTeamMember[(uint)ArenaMgr.GetSlotByType((uint)type)] != null) { ArenaTeamHandler.SendResult(client, ArenaTeamCommandId.CREATE, name, string.Empty, ArenaTeamResult.ALREADY_IN_ARENA_TEAM); return; } else if (type == PetitionType.Guild && GuildMgr.DoesGuildExist(name)) { GuildHandler.SendResult(client, GuildCommandId.CREATE, name, GuildResult.NAME_EXISTS); return; } else if (ArenaMgr.DoesArenaTeamExist(name)) { ArenaTeamHandler.SendResult(client, ArenaTeamCommandId.CREATE, name, string.Empty, ArenaTeamResult.NAME_EXISTS); return; } else { petition.Destroy(); if (type == PetitionType.Guild) { var guild = new Guild(client.ActiveCharacter.Record, name); foreach (var chr in petition.Petition.SignedIds) { if(chr == 0) continue; else { var character = World.GetCharacter(chr); guild.AddMember(character); } } } else { var team = new ArenaTeam(client.ActiveCharacter.Record, name, (uint)type); foreach (var chr in petition.Petition.SignedIds) { if(chr == 0) continue; else { var character = World.GetCharacter(chr); team.AddMember(character); } } } SendPetitionTurnInResults(client, PetitionTurns.OK); } }