public static void HandleListStabledPets(IRealmClient client, RealmPacketIn packet) { EntityId id = packet.ReadEntityId(); Character activeCharacter = client.ActiveCharacter; NPC stableMaster = activeCharacter.Map.GetObject(id) as NPC; PetMgr.ListStabledPets(activeCharacter, stableMaster); }
public static void HandleListStabledPets(IRealmClient client, RealmPacketIn packet) { var guid = packet.ReadEntityId(); var chr = client.ActiveCharacter; var stableMaster = chr.Map.GetObject(guid) as NPC; PetMgr.ListStabledPets(chr, stableMaster); }
/// <summary> /// Add default Gossip options for Vendors etc /// </summary> private static void AddDefaultGossipOptions() { foreach (var _entry in NPCMgr.Entries) { var entry = _entry; // copy object to prevent access to modified closure in callbacks if (entry != null) { if (entry.NPCFlags.HasAnyFlag(NPCFlags.Gossip)) { var menu = entry.DefaultGossip; if (menu == null) { entry.DefaultGossip = menu = new GossipMenu(); } //else if (menu.GossipItems.Count > 0) //{ // // Talk option -> Should it be in a sub menu? // entry.DefaultGossip = menu = new GossipMenu(menu.GossipEntry, new GossipMenuItem("Talk") // { // SubMenu = menu // }); //} // NPC professions if (entry.NPCFlags.HasAnyFlag(NPCFlags.Banker)) { menu.AddItem(new LocalizedGossipMenuItem(GossipMenuIcon.Bank, convo => { convo.Character.OpenBank(convo.Speaker); }, RealmLangKey.GossipOptionBanker)); } if (entry.NPCFlags.HasAnyFlag(NPCFlags.BattleMaster)) { menu.AddItem(new GossipMenuItem(GossipMenuIcon.Battlefield, "Battlefield...", convo => { if (entry.BattlegroundTemplate != null) { ((NPC)convo.Speaker).TalkToBattlemaster(convo.Character); } })); } if (entry.NPCFlags.HasAnyFlag(NPCFlags.InnKeeper)) { menu.AddItem(new LocalizedGossipMenuItem(GossipMenuIcon.Bind, convo => { convo.Character.BindTo((NPC)convo.Speaker); }, RealmLangKey.GossipOptionInnKeeper)); } if (entry.NPCFlags.HasAnyFlag(NPCFlags.GuildBanker)) { menu.AddItem(new GossipMenuItem(GossipMenuIcon.Guild, "Guild Bank...", convo => { convo.Character.SendSystemMessage(RealmLangKey.FeatureNotYetImplemented); })); } if (entry.NPCFlags.HasAnyFlag(NPCFlags.SpiritHealer)) { menu.AddItem(new LocalizedGossipMenuItem(GossipMenuIcon.Resurrect, convo => { convo.Character.ResurrectWithConsequences(); }, RealmLangKey.GossipOptionSpiritHealer)); } if (entry.NPCFlags.HasAnyFlag(NPCFlags.Petitioner)) { menu.AddItem(new GossipMenuItem(GossipMenuIcon.Bank, "Petitions...", convo => { ((NPC)convo.Speaker).SendPetitionList(convo.Character); })); } if (entry.NPCFlags.HasAnyFlag(NPCFlags.TabardDesigner)) { menu.AddItem(new LocalizedGossipMenuItem(GossipMenuIcon.Tabard, convo => { convo.Character.SendSystemMessage(RealmLangKey.FeatureNotYetImplemented); }, RealmLangKey.GossipOptionTabardDesigner)); } if (entry.NPCFlags.HasAnyFlag(NPCFlags.FlightMaster)) { menu.AddItem(new LocalizedGossipMenuItem(GossipMenuIcon.Taxi, convo => { ((NPC)convo.Speaker).TalkToFM(convo.Character); }, RealmLangKey.GossipOptionFlightMaster)); } if (entry.NPCFlags.HasAnyFlag(NPCFlags.StableMaster)) { menu.AddItem(new LocalizedGossipMenuItem(convo => { PetMgr.ListStabledPets(convo.Character, ((NPC)convo.Speaker)); }, RealmLangKey.GossipOptionStableMaster)); } if (entry.NPCFlags.HasAnyFlag(NPCFlags.AnyTrainer)) { menu.AddItem(new LocalizedGossipMenuItem(GossipMenuIcon.Train, convo => { ((NPC)convo.Speaker).TalkToTrainer(convo.Character); }, RealmLangKey.GossipOptionTrainer)); } if (entry.NPCFlags.HasAnyFlag(NPCFlags.AnyVendor)) { menu.AddItem(new LocalizedGossipMenuItem(GossipMenuIcon.Trade, convo => { if (((NPC)convo.Speaker).VendorEntry != null) { ((NPC)convo.Speaker).VendorEntry.UseVendor(convo.Character); } }, RealmLangKey.GossipOptionVendor)); } } } } }
/// <summary>Add default Gossip options for Vendors etc</summary> private static void AddDefaultGossipOptions() { foreach (NPCEntry entry1 in NPCMgr.Entries) { NPCEntry entry = entry1; if (entry != null && entry.NPCFlags.HasAnyFlag(NPCFlags.Gossip)) { GossipMenu gossipMenu = entry.DefaultGossip; if (gossipMenu == null) { entry.DefaultGossip = gossipMenu = new GossipMenu(); } if (entry.NPCFlags.HasAnyFlag(NPCFlags.Banker)) { gossipMenu.AddItem((GossipMenuItemBase) new LocalizedGossipMenuItem(GossipMenuIcon.Bank, (GossipActionHandler)(convo => convo.Character.OpenBank(convo.Speaker)), RealmLangKey.GossipOptionBanker, new object[0])); } if (entry.NPCFlags.HasAnyFlag(NPCFlags.BattleMaster)) { gossipMenu.AddItem((GossipMenuItemBase) new GossipMenuItem(GossipMenuIcon.Battlefield, "Battlefield...", (GossipActionHandler)(convo => { if (entry.BattlegroundTemplate == null) { return; } ((NPC)convo.Speaker).TalkToBattlemaster(convo.Character); }))); } if (entry.NPCFlags.HasAnyFlag(NPCFlags.InnKeeper)) { gossipMenu.AddItem((GossipMenuItemBase) new LocalizedGossipMenuItem(GossipMenuIcon.Bind, (GossipActionHandler)(convo => convo.Character.BindTo((NPC)convo.Speaker)), RealmLangKey.GossipOptionInnKeeper, new object[0])); } if (entry.NPCFlags.HasAnyFlag(NPCFlags.GuildBanker)) { gossipMenu.AddItem((GossipMenuItemBase) new GossipMenuItem(GossipMenuIcon.Guild, "Guild Bank...", (GossipActionHandler)(convo => convo.Character.SendSystemMessage(RealmLangKey.FeatureNotYetImplemented, new object[0])))); } if (entry.NPCFlags.HasAnyFlag(NPCFlags.SpiritHealer)) { gossipMenu.AddItem((GossipMenuItemBase) new LocalizedGossipMenuItem(GossipMenuIcon.Resurrect, (GossipActionHandler)(convo => convo.Character.ResurrectWithConsequences()), RealmLangKey.GossipOptionSpiritHealer, new object[0])); } if (entry.NPCFlags.HasAnyFlag(NPCFlags.Petitioner)) { gossipMenu.AddItem((GossipMenuItemBase) new GossipMenuItem(GossipMenuIcon.Bank, "Petitions...", (GossipActionHandler)(convo => ((NPC)convo.Speaker).SendPetitionList(convo.Character)))); } if (entry.NPCFlags.HasAnyFlag(NPCFlags.TabardDesigner)) { gossipMenu.AddItem((GossipMenuItemBase) new LocalizedGossipMenuItem(GossipMenuIcon.Tabard, (GossipActionHandler)(convo => convo.Character.SendSystemMessage(RealmLangKey.FeatureNotYetImplemented, new object[0])), RealmLangKey.GossipOptionTabardDesigner, new object[0])); } if (entry.NPCFlags.HasAnyFlag(NPCFlags.FlightMaster)) { gossipMenu.AddItem((GossipMenuItemBase) new LocalizedGossipMenuItem(GossipMenuIcon.Taxi, (GossipActionHandler)(convo => ((NPC)convo.Speaker).TalkToFM(convo.Character)), RealmLangKey.GossipOptionFlightMaster, new object[0])); } if (entry.NPCFlags.HasAnyFlag(NPCFlags.StableMaster)) { gossipMenu.AddItem((GossipMenuItemBase) new LocalizedGossipMenuItem( (GossipActionHandler)(convo => PetMgr.ListStabledPets(convo.Character, (NPC)convo.Speaker)), RealmLangKey.GossipOptionStableMaster, new object[0])); } if (entry.NPCFlags.HasAnyFlag(NPCFlags.AnyTrainer)) { gossipMenu.AddItem((GossipMenuItemBase) new LocalizedGossipMenuItem(GossipMenuIcon.Taxi, (GossipActionHandler)(convo => ((NPC)convo.Speaker).TalkToTrainer(convo.Character)), RealmLangKey.GossipOptionTrainer, new object[0])); } if (entry.NPCFlags.HasAnyFlag(NPCFlags.AnyVendor)) { gossipMenu.AddItem((GossipMenuItemBase) new LocalizedGossipMenuItem(GossipMenuIcon.Trade, (GossipActionHandler)(convo => { if (((NPC)convo.Speaker).VendorEntry == null) { return; } ((NPC)convo.Speaker).VendorEntry.UseVendor(convo.Character); }), RealmLangKey.GossipOptionVendor, new object[0])); } } } }