Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        /// <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));
                        }
                    }
                }
            }
        }
Exemplo n.º 4
0
 /// <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]));
             }
         }
     }
 }