Advertisement
Guest User

MultiVendor by EvilFairy{Edited by Rownan}

a guest
Jul 30th, 2013
829
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 43.60 KB | None | 0 0
  1. /*
  2.  * Copyright (C) 2008-2012 TrinityCore <http://www.trinitycore.org/>
  3.  *
  4.  * This program is free software; you can redistribute it and/or modify it
  5.  * under the terms of the GNU General Public License as published by the
  6.  * Free Software Foundation; either version 2 of the License, or (at your
  7.  * option) any later version.
  8.  *
  9.  * This program is distributed in the hope that it will be useful, but WITHOUT
  10.  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11.  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
  12.  * more details.
  13.  *
  14.  * You should have received a copy of the GNU General Public License along
  15.  * with this program. If not, see <http://www.gnu.org/licenses/>.
  16.  */
  17.  
  18. #include "ScriptMgr.h"
  19. #include "ScriptedCreature.h"
  20. #include "ScriptedGossip.h"
  21. #include "GameEventMgr.h"
  22. #include "Player.h"
  23. #include "WorldSession.h"
  24.  
  25. class Vendor
  26. {
  27. private:
  28.     int m_GUID;
  29.     GossipOptionIcon m_Icon;
  30.     std::string m_Message;
  31. public:
  32.     Vendor() {}
  33.     Vendor(int guid, GossipOptionIcon icon, std::string message)
  34.     {
  35.         m_GUID = guid;
  36.         m_Icon = icon;
  37.         m_Message = message;
  38.     }
  39.    
  40.     Vendor(int guid, GossipOptionIcon icon, std::string message, VendorItemData* item_list)
  41.     {
  42.         m_GUID = guid;
  43.         m_Icon = icon;
  44.         m_Message = message;
  45.         for(int i = 0; i < item_list->GetItemCount(); i++)
  46.             items.AddItem(item_list->m_items[i]->item, 0, 0, item_list->m_items[i]->ExtendedCost);
  47.     }
  48.  
  49.     VendorItemData items;
  50.  
  51.     int getGuid() { return m_GUID; }
  52.     void setGuid(int guid) { m_GUID = guid; }
  53.     GossipOptionIcon getIcon() { return m_Icon; }
  54.     void setIcon(GossipOptionIcon icon) { m_Icon = icon; }
  55.     std::string getMessage() { return m_Message; }
  56.     void setMessage(std::string message) { m_Message = message; }
  57. };
  58.  
  59. class ItemList
  60. {
  61. public:
  62.     ItemList() { /* Called while looping through vendors to find ours */ }
  63.  
  64.     ItemList(Vendor* myVendor)
  65.     {
  66.         m_vendor = Vendor(myVendor->getGuid(), myVendor->getIcon(), myVendor->getMessage());
  67.     }
  68.  
  69.     ItemList(Vendor* myVendor, VendorItemData* item_list)
  70.     {
  71.         m_vendor = Vendor(myVendor->getGuid(), myVendor->getIcon(), myVendor->getMessage());
  72.         for(int i = 0; i < item_list->GetItemCount(); i++)
  73.             m_vendor.items.AddItem(item_list->m_items[i]->item, 0, 0, item_list->m_items[i]->ExtendedCost);
  74.     }
  75.  
  76.     void AddItem(uint32 item_id, uint32 extended_cost = 0) { m_vendor.items.AddItem(item_id, 0, 0, extended_cost); }
  77.     void RemoveItem(uint32 item_id) { m_vendor.items.RemoveItem(item_id); }
  78.     uint8 GetItemCount() { return m_vendor.items.GetItemCount(); }
  79.     Vendor GetVendor() { return m_vendor; }
  80. private:
  81.     Vendor m_vendor;
  82. };
  83.  
  84. class SmsgListInventory
  85. {
  86. private:
  87.     uint32 m_opcode;
  88.     uint64 m_vendorGuid;
  89.     uint8  m_itemCount;
  90.     uint8  m_status;
  91.     WorldSession* m_session;
  92.     VendorItemData m_vendorItemData;
  93.     VendorItemData m_completeVendorItemData;
  94.     std::vector<ItemList> m_vendors;
  95.  
  96.     struct packetItem
  97.     {
  98.         uint32 m_slot;
  99.         uint32 m_item;
  100.         uint32 m_displayId;
  101.         int32  m_inStock;
  102.         uint32 m_price;
  103.         uint32 m_durability;
  104.         uint32 m_buyCount;
  105.         uint32 m_extendedCost;
  106.     };
  107.  
  108.     bool SkipItem(const ItemTemplate* item_template, Player* player, int slot)
  109.     {
  110.         /* Calculate relative slot position */
  111.         if(m_vendors[0].GetItemCount() > 0)
  112.         {
  113.             if( (slot + 1) > (m_vendors[0].GetItemCount()))
  114.             {
  115.                 int totalItemsChecked = 0;
  116.                 /* For each vendor */
  117.                 for(int i = 0; i < m_vendors.size(); i++)
  118.                 {
  119.                     if((totalItemsChecked + m_vendors[i].GetItemCount()) < (slot + 1))
  120.                     {
  121.                         totalItemsChecked += m_vendors[i].GetItemCount();
  122.                         continue;
  123.                     }
  124.  
  125.                     slot -= totalItemsChecked;
  126.                     break;
  127.                 }
  128.             }
  129.         }
  130.  
  131.         /* Account for duplicate items across vendors */
  132.         if(VendorItem* vendor_item = m_vendorItemData.GetItem(slot))
  133.         {
  134.             if(vendor_item->item != item_template->ItemId)
  135.                 return true;
  136.         }
  137.         else
  138.             return true; // the item doesn't even exist why would we send it
  139.  
  140.         /* GM's are exceptions */
  141.         if(player->isGameMaster())
  142.             return false;
  143.  
  144.         /* If the item is class specific and Bind on Pickup */
  145.         if (!(item_template->AllowableClass & player->getClassMask()) && item_template->Bonding == BIND_WHEN_PICKED_UP)
  146.             return true;
  147.        
  148.         /* If the item is faction specific and player is wrong faction */
  149.         if ((item_template->Flags2 & ITEM_FLAGS_EXTRA_HORDE_ONLY && player->GetTeam() == ALLIANCE) ||
  150.             (item_template->Flags2 == ITEM_FLAGS_EXTRA_ALLIANCE_ONLY && player->GetTeam() == HORDE))
  151.             return true;
  152.  
  153.         /* Anything else */
  154.         return false;
  155.     }
  156.  
  157. public: SmsgListInventory(uint64 vendor_guid, WorldSession* player_session, VendorItemData* vendor_item_data, std::vector<ItemList> vendors)
  158.         {
  159.             m_opcode = SMSG_LIST_INVENTORY;
  160.             m_vendorGuid = vendor_guid;
  161.             m_itemCount = 0;
  162.             for(int i = 0; i < vendors.size(); i++)
  163.                 m_itemCount += vendors[i].GetItemCount();
  164.  
  165.             m_status = 0;
  166.             m_session = player_session;
  167.             for(int i = 0; i < vendors.size(); i++)
  168.                 for(int i2 = 0; i2 < vendors[i].GetItemCount(); i2++)
  169.                     m_completeVendorItemData.AddItem(vendors[i].GetVendor().items.m_items[i2]->item, 0, 0, vendors[i].GetVendor().items.m_items[i2]->ExtendedCost);
  170.  
  171.             for(int i = 0; i < vendor_item_data->GetItemCount(); i++)
  172.                 m_vendorItemData.AddItem(vendor_item_data->m_items[i]->item, 0, 0, vendor_item_data->m_items[i]->ExtendedCost);
  173.  
  174.             for(int i = 0; i < vendors.size(); i++)
  175.                 m_vendors.push_back(vendors[i]);
  176.         }
  177.  
  178.         void Send(Creature* originalVendor, Player* player)
  179.         {
  180.             uint8 item_count = 0;
  181.             std::vector<packetItem> items_to_send;
  182.             ItemList item_list_to_send;
  183.             bool haveUpdatedVendor = false;
  184.             if(const VendorItemData* vendor_item_data = originalVendor->GetVendorItems())
  185.                 if(vendor_item_data->GetItemCount() > 0)
  186.                     haveUpdatedVendor = true;
  187.  
  188.             for(int slot = 0; slot < m_itemCount; slot++)
  189.                 if(VendorItem const* item = m_completeVendorItemData.GetItem(slot))
  190.                     if(ItemTemplate const* item_template = sObjectMgr->GetItemTemplate(item->item))
  191.                     {
  192.                         if(!haveUpdatedVendor)
  193.                             sObjectMgr->AddVendorItem(originalVendor->GetEntry(), item->item, 0, 0, item->ExtendedCost, false);
  194.  
  195.                         if(SkipItem(item_template, player, slot))
  196.                             continue;
  197.  
  198.                         item_list_to_send.AddItem(item->item, item->ExtendedCost);
  199.  
  200.                         item_count++;
  201.  
  202.                         int32 price = item->IsGoldRequired(item_template) ? uint32(item_template->BuyPrice) : 0;
  203.  
  204.                         packetItem packet;
  205.                         packet.m_slot = slot + 1;
  206.                         packet.m_item = item->item;
  207.                         packet.m_displayId = item_template->DisplayInfoID;
  208.                         packet.m_inStock = 0xFFFFFFFF;
  209.                         packet.m_price = price;
  210.                         packet.m_durability = item_template->MaxDurability;
  211.                         packet.m_buyCount = item_template->BuyCount;
  212.                         packet.m_extendedCost = item->ExtendedCost;
  213.                         items_to_send.push_back(packet);
  214.                     }
  215.  
  216.             WorldPacket packet(m_opcode, 8 + 1 + (m_itemCount > 0 ? m_itemCount * 8 * 4 : 1));
  217.             packet << m_vendorGuid;
  218.             packet << item_count;
  219.             for(int i = 0; i < items_to_send.size(); i++)
  220.             {
  221.                 packet << items_to_send[i].m_slot;
  222.                 packet << items_to_send[i].m_item;
  223.                 packet << items_to_send[i].m_displayId;
  224.                 packet << items_to_send[i].m_inStock;
  225.                 packet << items_to_send[i].m_price;
  226.                 packet << items_to_send[i].m_durability;
  227.                 packet << items_to_send[i].m_buyCount;
  228.                 packet << items_to_send[i].m_extendedCost;
  229.             }
  230.             m_session->SendPacket(&packet);
  231.         }
  232. };
  233.  
  234. class npc_multivendor : public CreatureScript
  235. {
  236. public:
  237.     npc_multivendor() : CreatureScript("npc_multivendor"){ }
  238.  
  239.     std::vector<ItemList> GetVendorList()
  240.     {
  241.         std::vector<ItemList> itemlists;
  242.        
  243.         /* ONLY EDIT THINGS BELOW THIS COMMENT BLOCK
  244.          * DO NOT EDIT ANYTHING ELSE
  245.          *
  246.          * Example vendor:
  247.  
  248.         Vendor vendor_1(700000, GOSSIP_ICON_VENDOR, "Look at all the weapons I have");
  249.         ItemList items_1(&vendor_1);
  250.         items_1.AddItem(18582); // Azzinoth
  251.         items_1.AddItem(13262); // Ashbringer
  252.         itemlists.push_back(items_1);
  253.        
  254.         * The first line creates a "Vendor" object named vendor_1 with:
  255.         *     GUID 700000 (this must be different to all your other vendors)
  256.         *     Displays the moneybag icon in the gossip list
  257.         *     Displays the text "Look at all the weapons I have" in the gossip list
  258.         *
  259.         * The second line creates an instance of the ItemList object named items1.
  260.         *     We pass it a reference to the vendor we created before. The class does the rest.
  261.         *
  262.         * The third and fourth lines are examples of adding items to our item list (named items_1).
  263.         *     You can give an item an extended_cost by passing a second parameter to the function.
  264.         *     This script does not support time-limited or respawning items
  265.         *
  266.         * The final line is the most important. This line adds your vendor to the internal list of vendors that will be processed by the script.
  267.         *
  268.         *
  269.         * END OF EXPLANATION
  270.         * I REPEAT ONCE MORE PLEASE DO NOT TOUCH ANYTHING ELSE IN THE FILE IT IS EXTREMELY DELICATE AND EXTREMELY COMPLEX
  271.         */
  272.  
  273.         Vendor vendor_1(700000, GOSSIP_ICON_VENDOR, "Cloth Armor");
  274.         ItemList items_1(&vendor_1);
  275.         items_1.AddItem(14150);
  276.         items_1.AddItem(48691);
  277.         items_1.AddItem(14371);
  278.         items_1.AddItem(1486);
  279.         items_1.AddItem(14369);
  280.         items_1.AddItem(5202);
  281.         items_1.AddItem(6226);
  282.         items_1.AddItem(6264);
  283.         items_1.AddItem(6465);
  284.         items_1.AddItem(4320);
  285.         items_1.AddItem(14374);
  286.         items_1.AddItem(3065);
  287.         items_1.AddItem(3076);
  288.         items_1.AddItem(9767);
  289.         items_1.AddItem(14159);
  290.         items_1.AddItem(1560);
  291.         items_1.AddItem(3066);
  292.         items_1.AddItem(3074);
  293.         items_1.AddItem(5970);
  294.         items_1.AddItem(5195);
  295.         items_1.AddItem(14162);
  296.         items_1.AddItem(1974);
  297.         items_1.AddItem(14148);
  298.         items_1.AddItem(3647);
  299.         items_1.AddItem(12987);
  300.         items_1.AddItem(4316);
  301.         items_1.AddItem(6568);
  302.         items_1.AddItem(14171);
  303.         items_1.AddItem(4708);
  304.         items_1.AddItem(4785);
  305.         items_1.AddItem(2911);
  306.         items_1.AddItem(3229);
  307.         items_1.AddItem(1299);
  308.         items_1.AddItem(6570);
  309.         items_1.AddItem(9766);
  310.         items_1.AddItem(4314);
  311.         items_1.AddItem(4315);
  312.         items_1.AddItem(19972);
  313.         itemlists.push_back(items_1);
  314.  
  315.         Vendor vendor_2(700001, GOSSIP_ICON_VENDOR, "Leather Armor");
  316.         ItemList items_2(&vendor_2);
  317.         items_2.AddItem(48687);
  318.         items_2.AddItem(48689);
  319.         items_2.AddItem(6473);
  320.         items_2.AddItem(10399);
  321.         items_2.AddItem(2314);
  322.         items_2.AddItem(14562);
  323.         items_2.AddItem(9782);
  324.         items_2.AddItem(1121);
  325.         items_2.AddItem(3057);
  326.         items_2.AddItem(10411);
  327.         items_2.AddItem(14568);
  328.         items_2.AddItem(6582);
  329.         items_2.AddItem(14572);
  330.         items_2.AddItem(7285);
  331.         items_2.AddItem(7284);
  332.         items_2.AddItem(10413);
  333.         items_2.AddItem(6586);
  334.         items_2.AddItem(3230);
  335.         items_2.AddItem(3202);
  336.         items_2.AddItem(3205);
  337.         items_2.AddItem(15331);
  338.         items_2.AddItem(10410);
  339.         items_2.AddItem(3022);
  340.         items_2.AddItem(5199);
  341.         items_2.AddItem(15117);
  342.         items_2.AddItem(6587);
  343.         items_2.AddItem(6319);
  344.         items_2.AddItem(3429);
  345.         items_2.AddItem(6468);
  346.         items_2.AddItem(14567);
  347.         items_2.AddItem(6382);
  348.         items_2.AddItem(5975);
  349.         items_2.AddItem(10403);
  350.         items_2.AddItem(5404);
  351.         items_2.AddItem(5254);
  352.         items_2.AddItem(23909);
  353.         items_2.AddItem(7997);
  354.         itemlists.push_back(items_2);
  355.        
  356.         Vendor vendor_3(700002, GOSSIP_ICON_VENDOR, "Mail Armor");
  357.         ItemList items_3(&vendor_3);
  358.         items_3.AddItem(48677);
  359.         items_3.AddItem(48683);
  360.         items_3.AddItem(48685);
  361.         items_3.AddItem(2866);
  362.         items_3.AddItem(14730);
  363.         items_3.AddItem(15500);
  364.         items_3.AddItem(6580);
  365.         items_3.AddItem(14742);
  366.         items_3.AddItem(6459);
  367.         items_3.AddItem(6573);
  368.         items_3.AddItem(12982);
  369.         items_3.AddItem(12994);
  370.         items_3.AddItem(14747);
  371.         items_3.AddItem(1448);
  372.         items_3.AddItem(15509);
  373.         items_3.AddItem(6577);
  374.         items_3.AddItem(5943);
  375.         items_3.AddItem(14147);
  376.         items_3.AddItem(2867);
  377.         items_3.AddItem(14743);
  378.         items_3.AddItem(6574);
  379.         items_3.AddItem(4816);
  380.         items_3.AddItem(4800);
  381.         items_3.AddItem(6087);
  382.         items_3.AddItem(15511);
  383.         items_3.AddItem(6578);
  384.         items_3.AddItem(6460);
  385.         items_3.AddItem(5750);
  386.         items_3.AddItem(14746);
  387.         items_3.AddItem(5425);
  388.         items_3.AddItem(12978);
  389.         items_3.AddItem(3480);
  390.         items_3.AddItem(19972);
  391.         itemlists.push_back(items_3);
  392.        
  393.         Vendor vendor_4(700003, GOSSIP_ICON_VENDOR, "One-Hand Weapons");
  394.         ItemList items_4(&vendor_4);
  395.         items_4.AddItem(885);
  396.         items_4.AddItem(1459);
  397.         items_4.AddItem(2807);
  398.         items_4.AddItem(12990);
  399.         items_4.AddItem(4445);
  400.         items_4.AddItem(5196);
  401.         items_4.AddItem(790);
  402.         items_4.AddItem(42948);
  403.         items_4.AddItem(44094);
  404.         items_4.AddItem(48716);
  405.         items_4.AddItem(2256);
  406.         items_4.AddItem(6472);
  407.         items_4.AddItem(5197);
  408.         items_4.AddItem(1483);
  409.         items_4.AddItem(2848);
  410.         items_4.AddItem(15223);
  411.         items_4.AddItem(44096);
  412.         items_4.AddItem(42945);
  413.         items_4.AddItem(5191);
  414.         items_4.AddItem(1482);
  415.         items_4.AddItem(6633);
  416.         items_4.AddItem(20430);
  417.         items_4.AddItem(20440);
  418.         items_4.AddItem(5192);
  419.         items_4.AddItem(2850);
  420.         items_4.AddItem(1935);
  421.         items_4.AddItem(2567);
  422.         items_4.AddItem(20441);
  423.         items_4.AddItem(20443);
  424.         items_4.AddItem(5540);
  425.         items_4.AddItem(6448);
  426.         items_4.AddItem(2169);
  427.         itemlists.push_back(items_4);
  428.        
  429.         Vendor vendor_5(700004, GOSSIP_ICON_VENDOR, "Two-Hand Weapons");
  430.         ItemList items_5(&vendor_5);
  431.         items_5.AddItem(3415);
  432.         items_5.AddItem(890);
  433.         items_5.AddItem(20425);
  434.         items_5.AddItem(5201);
  435.         items_5.AddItem(20434);
  436.         items_5.AddItem(2271);
  437.         items_5.AddItem(880);
  438.         items_5.AddItem(1484);
  439.         items_5.AddItem(1455);
  440.         items_5.AddItem(1318);
  441.         items_5.AddItem(5194);
  442.         items_5.AddItem(5749);
  443.         items_5.AddItem(2175);
  444.         items_5.AddItem(872);
  445.         items_5.AddItem(15269);
  446.         items_5.AddItem(3199);
  447.         items_5.AddItem(7230);
  448.         items_5.AddItem(1458);
  449.         items_5.AddItem(3194);
  450.         items_5.AddItem(12983);
  451.         items_5.AddItem(3198);
  452.         items_5.AddItem(12992);
  453.         items_5.AddItem(4818);
  454.         items_5.AddItem(4817);
  455.         itemlists.push_back(items_5);
  456.        
  457.         Vendor vendor_6(700005, GOSSIP_ICON_VENDOR, "Jewelry");
  458.         ItemList items_6(&vendor_6);
  459.         items_6.AddItem(20442);
  460.         items_6.AddItem(20444);
  461.         items_6.AddItem(21933);
  462.         items_6.AddItem(21934);
  463.         items_6.AddItem(25438);
  464.         items_6.AddItem(12996);
  465.         items_6.AddItem(20426);
  466.         items_6.AddItem(20429);
  467.         items_6.AddItem(20431);
  468.         items_6.AddItem(20439);
  469.         items_6.AddItem(30804);
  470.         items_6.AddItem(12985);
  471.         items_6.AddItem(6332);
  472.         items_6.AddItem(24120);
  473.         items_6.AddItem(24119);
  474.         items_6.AddItem(24118);
  475.         items_6.AddItem(12054);
  476.         items_6.AddItem(42991);
  477.         items_6.AddItem(42992);
  478.         items_6.AddItem(19024);
  479.         items_6.AddItem(1490);
  480.         items_6.AddItem(10727);
  481.         items_6.AddItem(19141);
  482.         items_6.AddItem(10779);
  483.         items_6.AddItem(10659);
  484.         items_6.AddItem(19120);
  485.         items_6.AddItem(40476);
  486.         items_6.AddItem(40477);
  487.         itemlists.push_back(items_6);
  488.        
  489.         Vendor vendor_7(700006, GOSSIP_ICON_VENDOR, "Cloaks and Off-Hands");
  490.         ItemList items_7(&vendor_7);
  491.         items_7.AddItem(2059);
  492.         items_7.AddItem(45626);
  493.         items_7.AddItem(6629);
  494.         items_7.AddItem(20427);
  495.         items_7.AddItem(20428);
  496.         items_7.AddItem(6449);
  497.         items_7.AddItem(4706);
  498.         items_7.AddItem(4793);
  499.         items_7.AddItem(4792);
  500.         items_7.AddItem(4710);
  501.         items_7.AddItem(9805);
  502.         items_7.AddItem(6383);
  503.         items_7.AddItem(4444);
  504.         items_7.AddItem(12997);
  505.         items_7.AddItem(6320);
  506.         items_7.AddItem(2879);
  507.         items_7.AddItem(6341);
  508.         items_7.AddItem(43515);
  509.         items_7.AddItem(5183);
  510.         items_7.AddItem(15912);
  511.         itemlists.push_back(items_7);
  512.        
  513.         Vendor vendor_8(700007, GOSSIP_ICON_VENDOR, "Enchants");
  514.         ItemList items_8(&vendor_8);
  515.         items_8.AddItem(38838);
  516.         items_8.AddItem(38873);
  517.         items_8.AddItem(38879);
  518.         items_8.AddItem(38884);
  519.         items_8.AddItem(38868);
  520.         items_8.AddItem(38877);
  521.         items_8.AddItem(38880);
  522.         items_8.AddItem(38896);
  523.         items_8.AddItem(38872);
  524.         items_8.AddItem(38835);
  525.         items_8.AddItem(38859);
  526.         items_8.AddItem(38891);
  527.         items_8.AddItem(38892);
  528.         items_8.AddItem(38893);
  529.         items_8.AddItem(38894);
  530.         items_8.AddItem(38865);
  531.         items_8.AddItem(38866);
  532.         items_8.AddItem(38867);
  533.         items_8.AddItem(38852);
  534.         items_8.AddItem(38853);
  535.         items_8.AddItem(38854);
  536.         items_8.AddItem(38855);
  537.         items_8.AddItem(38881);
  538.         items_8.AddItem(38882);
  539.         items_8.AddItem(38851);
  540.         items_8.AddItem(38885);
  541.         items_8.AddItem(38886);
  542.         items_8.AddItem(38887);
  543.         items_8.AddItem(38888);
  544.         items_8.AddItem(38890);
  545.         items_8.AddItem(38862);
  546.         items_8.AddItem(38863);
  547.         items_8.AddItem(38837);
  548.         items_8.AddItem(38861);
  549.         items_8.AddItem(38860);
  550.         items_8.AddItem(4406);
  551.         items_8.AddItem(11642);
  552.         items_8.AddItem(11645);
  553.         items_8.AddItem(11646);
  554.         items_8.AddItem(11647);
  555.         items_8.AddItem(11648);
  556.         items_8.AddItem(11649);
  557.         items_8.AddItem(18330);
  558.         items_8.AddItem(18329);
  559.         items_8.AddItem(18331);
  560.         items_8.AddItem(11643);
  561.         items_8.AddItem(11644);
  562.         itemlists.push_back(items_8);
  563.        
  564.         Vendor vendor_9(700008, GOSSIP_ICON_VENDOR, "Bags");
  565.         ItemList items_9(&vendor_9);
  566.         items_9.AddItem(804);
  567.         items_9.AddItem(805);
  568.         items_9.AddItem(828);
  569.         items_9.AddItem(856);
  570.         items_9.AddItem(857);
  571.         items_9.AddItem(918);
  572.         items_9.AddItem(932);
  573.         items_9.AddItem(933);
  574.         items_9.AddItem(1470);
  575.         items_9.AddItem(1537);
  576.         items_9.AddItem(1652);
  577.         items_9.AddItem(1685);
  578.         items_9.AddItem(1725);
  579.         items_9.AddItem(1729);
  580.         items_9.AddItem(2082);
  581.         items_9.AddItem(2657);
  582.         items_9.AddItem(3233);
  583.         items_9.AddItem(3343);
  584.         items_9.AddItem(3352);
  585.         items_9.AddItem(3914);
  586.         items_9.AddItem(4238);
  587.         items_9.AddItem(4240);
  588.         items_9.AddItem(4241);
  589.         items_9.AddItem(4245);
  590.         items_9.AddItem(4496);
  591.         items_9.AddItem(4497);
  592.         items_9.AddItem(4498);
  593.         items_9.AddItem(4499);
  594.         items_9.AddItem(4500);
  595.         items_9.AddItem(4957);
  596.         items_9.AddItem(5081);
  597.         items_9.AddItem(5571);
  598.         items_9.AddItem(5572);
  599.         items_9.AddItem(5573);
  600.         items_9.AddItem(5574);
  601.         items_9.AddItem(5575);
  602.         items_9.AddItem(5576);
  603.         items_9.AddItem(5762);
  604.         items_9.AddItem(5763);
  605.         items_9.AddItem(5764);
  606.         items_9.AddItem(5765);
  607.         items_9.AddItem(6446);
  608.         items_9.AddItem(6756);
  609.         items_9.AddItem(9587);
  610.         items_9.AddItem(10050);
  611.         items_9.AddItem(10051);
  612.         items_9.AddItem(10959);
  613.         items_9.AddItem(11324);
  614.         items_9.AddItem(11742);
  615.         items_9.AddItem(11845);
  616.         items_9.AddItem(14046);
  617.         items_9.AddItem(14155);
  618.         items_9.AddItem(14156);
  619.         items_9.AddItem(17966);
  620.         items_9.AddItem(19291);
  621.         items_9.AddItem(19914);
  622.         items_9.AddItem(20400);
  623.         items_9.AddItem(20474);
  624.         items_9.AddItem(21340);
  625.         items_9.AddItem(21341);
  626.         items_9.AddItem(21342);
  627.         items_9.AddItem(21841);
  628.         items_9.AddItem(21843);
  629.         items_9.AddItem(21858);
  630.         items_9.AddItem(21872);
  631.         items_9.AddItem(21876);
  632.         items_9.AddItem(22243);
  633.         items_9.AddItem(22244);
  634.         items_9.AddItem(22246);
  635.         items_9.AddItem(22248);
  636.         items_9.AddItem(22249);
  637.         items_9.AddItem(22250);
  638.         items_9.AddItem(22251);
  639.         items_9.AddItem(22252);
  640.         items_9.AddItem(22571);
  641.         items_9.AddItem(22679);
  642.         items_9.AddItem(22976);
  643.         items_9.AddItem(23162);
  644.         items_9.AddItem(23389);
  645.         items_9.AddItem(23774);
  646.         items_9.AddItem(23775);
  647.         items_9.AddItem(23852);
  648.         items_9.AddItem(24270);
  649.         items_9.AddItem(27680);
  650.         items_9.AddItem(29540);
  651.         items_9.AddItem(30744);
  652.         items_9.AddItem(30745);
  653.         items_9.AddItem(30746);
  654.         items_9.AddItem(30747);
  655.         items_9.AddItem(30748);
  656.         items_9.AddItem(33117);
  657.         items_9.AddItem(34067);
  658.         items_9.AddItem(34482);
  659.         items_9.AddItem(34490);
  660.         items_9.AddItem(34845);
  661.         items_9.AddItem(35516);
  662.         items_9.AddItem(37606);
  663.         items_9.AddItem(38082);
  664.         items_9.AddItem(38145);
  665.         items_9.AddItem(38225);
  666.         items_9.AddItem(38347);
  667.         items_9.AddItem(38399);
  668.         items_9.AddItem(39489);
  669.         items_9.AddItem(41597);
  670.         items_9.AddItem(41598);
  671.         items_9.AddItem(41599);
  672.         items_9.AddItem(41600);
  673.         items_9.AddItem(43345);
  674.         items_9.AddItem(44446);
  675.         items_9.AddItem(45773);
  676.         items_9.AddItem(49295);
  677.         items_9.AddItem(50316);
  678.         items_9.AddItem(50317);
  679.         items_9.AddItem(51809);
  680.         itemlists.push_back(items_9);
  681.        
  682.         Vendor vendor_10(700009, GOSSIP_ICON_VENDOR, "Pets");
  683.         ItemList items_10(&vendor_10);
  684.         items_10.AddItem(4401);
  685.         items_10.AddItem(8485);
  686.         items_10.AddItem(8486);
  687.         items_10.AddItem(8487);
  688.         items_10.AddItem(8488);
  689.         items_10.AddItem(8489);
  690.         items_10.AddItem(8490);
  691.         items_10.AddItem(8491);
  692.         items_10.AddItem(8492);
  693.         items_10.AddItem(8494);
  694.         items_10.AddItem(8495);
  695.         items_10.AddItem(8496);
  696.         items_10.AddItem(8497);
  697.         items_10.AddItem(8498);
  698.         items_10.AddItem(8499);
  699.         items_10.AddItem(8500);
  700.         items_10.AddItem(8501);
  701.         items_10.AddItem(10360);
  702.         items_10.AddItem(10361);
  703.         items_10.AddItem(10392);
  704.         items_10.AddItem(10393);
  705.         items_10.AddItem(10394);
  706.         items_10.AddItem(10398);
  707.         items_10.AddItem(10822);
  708.         items_10.AddItem(11023);
  709.         items_10.AddItem(11026);
  710.         items_10.AddItem(11027);
  711.         items_10.AddItem(11110);
  712.         items_10.AddItem(11474);
  713.         items_10.AddItem(11825);
  714.         items_10.AddItem(11826);
  715.         items_10.AddItem(12264);
  716.         items_10.AddItem(12529);
  717.         items_10.AddItem(15996);
  718.         items_10.AddItem(18964);
  719.         items_10.AddItem(19450);
  720.         items_10.AddItem(19462);
  721.         items_10.AddItem(20769);
  722.         items_10.AddItem(21168);
  723.         items_10.AddItem(21277);
  724.         items_10.AddItem(21301);
  725.         items_10.AddItem(21305);
  726.         items_10.AddItem(21308);
  727.         items_10.AddItem(21309);
  728.         items_10.AddItem(22200);
  729.         items_10.AddItem(22235);
  730.         items_10.AddItem(23002);
  731.         items_10.AddItem(23007);
  732.         items_10.AddItem(23015);
  733.         items_10.AddItem(23083);
  734.         items_10.AddItem(27445);
  735.         items_10.AddItem(29363);
  736.         items_10.AddItem(29364);
  737.         items_10.AddItem(29901);
  738.         items_10.AddItem(29902);
  739.         items_10.AddItem(29903);
  740.         items_10.AddItem(29904);
  741.         items_10.AddItem(29953);
  742.         items_10.AddItem(29956);
  743.         items_10.AddItem(29957);
  744.         items_10.AddItem(29958);
  745.         items_10.AddItem(29960);
  746.         items_10.AddItem(31760);
  747.         items_10.AddItem(32233);
  748.         items_10.AddItem(32616);
  749.         items_10.AddItem(32617);
  750.         items_10.AddItem(32622);
  751.         items_10.AddItem(33154);
  752.         items_10.AddItem(33816);
  753.         items_10.AddItem(33818);
  754.         items_10.AddItem(33993);
  755.         items_10.AddItem(34425);
  756.         items_10.AddItem(34478);
  757.         items_10.AddItem(34518);
  758.         items_10.AddItem(34519);
  759.         items_10.AddItem(34535);
  760.         items_10.AddItem(34955);
  761.         items_10.AddItem(35349);
  762.         items_10.AddItem(35350);
  763.         items_10.AddItem(35504);
  764.         items_10.AddItem(37297);
  765.         items_10.AddItem(37298);
  766.         items_10.AddItem(37460);
  767.         items_10.AddItem(38628);
  768.         items_10.AddItem(38658);
  769.         items_10.AddItem(39896);
  770.         items_10.AddItem(39898);
  771.         items_10.AddItem(39899);
  772.         items_10.AddItem(39973);
  773.         items_10.AddItem(40653);
  774.         items_10.AddItem(41133);
  775.         items_10.AddItem(43698);
  776.         items_10.AddItem(44721);
  777.         items_10.AddItem(44723);
  778.         items_10.AddItem(44738);
  779.         items_10.AddItem(44794);
  780.         items_10.AddItem(44810);
  781.         items_10.AddItem(44819);
  782.         items_10.AddItem(44820);
  783.         items_10.AddItem(44822);
  784.         items_10.AddItem(44841);
  785.         items_10.AddItem(44965);
  786.         items_10.AddItem(44970);
  787.         items_10.AddItem(44971);
  788.         items_10.AddItem(44973);
  789.         items_10.AddItem(44974);
  790.         items_10.AddItem(44980);
  791.         items_10.AddItem(44982);
  792.         items_10.AddItem(44983);
  793.         items_10.AddItem(44984);
  794.         items_10.AddItem(44998);
  795.         items_10.AddItem(45002);
  796.         items_10.AddItem(45022);
  797.         items_10.AddItem(45057);
  798.         items_10.AddItem(45180);
  799.         items_10.AddItem(45606);
  800.         items_10.AddItem(45942);
  801.         items_10.AddItem(46396);
  802.         items_10.AddItem(46397);
  803.         items_10.AddItem(46398);
  804.         items_10.AddItem(46544);
  805.         items_10.AddItem(46545);
  806.         items_10.AddItem(46707);
  807.         items_10.AddItem(46767);
  808.         items_10.AddItem(46820);
  809.         items_10.AddItem(46821);
  810.         items_10.AddItem(46831);
  811.         items_10.AddItem(48112);
  812.         items_10.AddItem(48114);
  813.         items_10.AddItem(48116);
  814.         items_10.AddItem(48118);
  815.         items_10.AddItem(48120);
  816.         items_10.AddItem(48122);
  817.         items_10.AddItem(48124);
  818.         items_10.AddItem(48126);
  819.         items_10.AddItem(49362);
  820.         items_10.AddItem(49646);
  821.         items_10.AddItem(49662);
  822.         items_10.AddItem(49663);
  823.         items_10.AddItem(49912);
  824.         items_10.AddItem(50446);
  825.         items_10.AddItem(54436);
  826.         itemlists.push_back(items_10);
  827.        
  828.         Vendor vendor_11(700010, GOSSIP_ICON_VENDOR, "General Goods");
  829.         ItemList items_11(&vendor_11);
  830.         items_11.AddItem(21215);
  831.         items_11.AddItem(6265);
  832.         items_11.AddItem(17056);
  833.         items_11.AddItem(5175);
  834.         items_11.AddItem(5177);
  835.         items_11.AddItem(5178);
  836.         items_11.AddItem(5176);
  837.         items_11.AddItem(2515);
  838.         items_11.AddItem(2519);
  839.         itemlists.push_back(items_11);
  840.        
  841.         Vendor vendor_12(700011, GOSSIP_ICON_VENDOR, "Potions and Scrolls");
  842.         ItemList items_12(&vendor_10);
  843.         items_12.AddItem(929);
  844.         items_12.AddItem(3385);
  845.         items_12.AddItem(6048);
  846.         items_12.AddItem(5632);
  847.         items_12.AddItem(3386);
  848.         items_12.AddItem(3384);
  849.         items_12.AddItem(6372);
  850.         items_12.AddItem(6051);
  851.         items_12.AddItem(2459);
  852.         items_12.AddItem(2456);
  853.         items_12.AddItem(5631);
  854.         items_12.AddItem(38351);
  855.         items_12.AddItem(2289);
  856.         items_12.AddItem(1711);
  857.         items_12.AddItem(1712);
  858.         items_12.AddItem(1478);
  859.         items_12.AddItem(2290);
  860.         items_12.AddItem(1477);
  861.         itemlists.push_back(items_12);
  862.        
  863.         Vendor vendor_13(700012, GOSSIP_ICON_VENDOR, "Enchanting Materials");
  864.         ItemList items_13(&vendor_13);
  865.         items_13.AddItem(6217);
  866.         items_13.AddItem(6338);
  867.         items_13.AddItem(11128);
  868.         items_13.AddItem(4470);
  869.         items_13.AddItem(10940);
  870.         items_13.AddItem(11083);
  871.         items_13.AddItem(10938);
  872.         items_13.AddItem(10939);
  873.         items_13.AddItem(10998);
  874.         items_13.AddItem(11082);
  875.         items_13.AddItem(10978);
  876.         items_13.AddItem(11084);
  877.         items_13.AddItem(17034);
  878.         items_13.AddItem(5500);
  879.         items_13.AddItem(2772);
  880.         items_13.AddItem(3356);
  881.         items_13.AddItem(6048);
  882.         items_13.AddItem(6370);
  883.         items_13.AddItem(6371);
  884.         items_13.AddItem(3371);
  885.         items_13.AddItem(3372);
  886.         itemlists.push_back(items_13);
  887.        
  888.         Vendor vendor_14(700013, GOSSIP_ICON_VENDOR, "Enchanting Recipes");
  889.         ItemList items_14(&vendor_14);
  890.         items_14.AddItem(20758);
  891.         items_14.AddItem(6342);
  892.         items_14.AddItem(11150);
  893.         items_14.AddItem(11101);
  894.         items_14.AddItem(11098);
  895.         items_14.AddItem(6377);
  896.         items_14.AddItem(6375);
  897.         items_14.AddItem(11081);
  898.         items_14.AddItem(11039);
  899.         items_14.AddItem(11038);
  900.         items_14.AddItem(6349);
  901.         items_14.AddItem(6348);
  902.         items_14.AddItem(6347);
  903.         items_14.AddItem(6346);
  904.         items_14.AddItem(6344);
  905.         items_14.AddItem(20752);
  906.         items_14.AddItem(11152);
  907.         items_14.AddItem(11151);
  908.         itemlists.push_back(items_14);
  909.        
  910.         Vendor vendor_15(700014, GOSSIP_ICON_VENDOR, "Alchemy Materials");
  911.         ItemList items_15(&vendor_15);
  912.         items_15.AddItem(3371);
  913.         items_15.AddItem(3372);
  914.         items_15.AddItem(2447);
  915.         items_15.AddItem(765);
  916.         items_15.AddItem(2449);
  917.         items_15.AddItem(785);
  918.         items_15.AddItem(2452);
  919.         items_15.AddItem(2450);
  920.         items_15.AddItem(3164);
  921.         items_15.AddItem(5635);
  922.         items_15.AddItem(6358);
  923.         items_15.AddItem(6522);
  924.         items_15.AddItem(3820);
  925.         items_15.AddItem(6370);
  926.         items_15.AddItem(2453);
  927.         items_15.AddItem(3355);
  928.         items_15.AddItem(1288);
  929.         items_15.AddItem(6359);
  930.         items_15.AddItem(3369);
  931.         items_15.AddItem(6371);
  932.         items_15.AddItem(3356);
  933.         itemlists.push_back(items_15);
  934.        
  935.         Vendor vendor_16(700015, GOSSIP_ICON_VENDOR, "Alchemy Recipes");
  936.         ItemList items_16(&vendor_16);
  937.         items_16.AddItem(44508);
  938.         items_16.AddItem(2553);
  939.         items_16.AddItem(4597);
  940.         items_16.AddItem(2555);
  941.         items_16.AddItem(5640);
  942.         items_16.AddItem(6663);
  943.         items_16.AddItem(6053);
  944.         items_16.AddItem(3393);
  945.         items_16.AddItem(3394);
  946.         items_16.AddItem(6054);
  947.         items_16.AddItem(3396);
  948.         items_16.AddItem(6211);
  949.         items_16.AddItem(5642);
  950.         itemlists.push_back(items_16);
  951.        
  952.         Vendor vendor_17(700016, GOSSIP_ICON_VENDOR, "Engineering Materials");
  953.         ItemList items_17(&vendor_17);
  954.         items_17.AddItem(2835);
  955.         items_17.AddItem(4382);
  956.         items_17.AddItem(4357);
  957.         items_17.AddItem(2589);
  958.         items_17.AddItem(2840);
  959.         items_17.AddItem(4359);
  960.         items_17.AddItem(4361);
  961.         items_17.AddItem(4399);
  962.         items_17.AddItem(2880);
  963.         items_17.AddItem(774);
  964.         items_17.AddItem(2836);
  965.         items_17.AddItem(4364);
  966.         items_17.AddItem(4363);
  967.         items_17.AddItem(2841);
  968.         items_17.AddItem(2592);
  969.         items_17.AddItem(2842);
  970.         items_17.AddItem(2318);
  971.         items_17.AddItem(818);
  972.         items_17.AddItem(159);
  973.         items_17.AddItem(4404);
  974.         items_17.AddItem(2319);
  975.         items_17.AddItem(4371);
  976.         items_17.AddItem(1206);
  977.         items_17.AddItem(1210);
  978.         items_17.AddItem(2838);
  979.         items_17.AddItem(4377);
  980.         items_17.AddItem(4375);
  981.         items_17.AddItem(4402);
  982.         items_17.AddItem(814);
  983.         items_17.AddItem(4234);
  984.         items_17.AddItem(1705);
  985.         items_17.AddItem(6530);
  986.         items_17.AddItem(3577);
  987.         items_17.AddItem(4368);
  988.         itemlists.push_back(items_17);
  989.        
  990.         Vendor vendor_18(700017, GOSSIP_ICON_VENDOR, "Engineering Recipes");
  991.         ItemList items_18(&vendor_18);
  992.         items_18.AddItem(4408);
  993.         items_18.AddItem(6716);
  994.         items_18.AddItem(4409);
  995.         items_18.AddItem(4410);
  996.         items_18.AddItem(13309);
  997.         items_18.AddItem(21726);
  998.         items_18.AddItem(21725);
  999.         items_18.AddItem(21724);
  1000.         items_18.AddItem(4411);
  1001.         items_18.AddItem(7560);
  1002.         items_18.AddItem(14639);
  1003.         items_18.AddItem(4412);
  1004.         items_18.AddItem(18647);
  1005.         items_18.AddItem(18648);
  1006.         items_18.AddItem(18649);
  1007.         itemlists.push_back(items_18);
  1008.        
  1009.         Vendor vendor_19(700018, GOSSIP_ICON_VENDOR, "Inscription Materials");
  1010.         ItemList items_19(&vendor_19);
  1011.         items_19.AddItem(39469);
  1012.         items_19.AddItem(43118);
  1013.         items_19.AddItem(43120);
  1014.         items_19.AddItem(43124);
  1015.         items_19.AddItem(43126);
  1016.         items_19.AddItem(43115);
  1017.         items_19.AddItem(43117);
  1018.         items_19.AddItem(39774);
  1019.         items_19.AddItem(43116);
  1020.         items_19.AddItem(39151);
  1021.         items_19.AddItem(37101);
  1022.         items_19.AddItem(39354);
  1023.         items_19.AddItem(39334);
  1024.         items_19.AddItem(10648);
  1025.         items_19.AddItem(39501);
  1026.         items_19.AddItem(39502);
  1027.         items_19.AddItem(43103);
  1028.         items_19.AddItem(39338);
  1029.         items_19.AddItem(43104);
  1030.         items_19.AddItem(39339);
  1031.         itemlists.push_back(items_19);
  1032.        
  1033.         Vendor vendor_20(700019, GOSSIP_ICON_VENDOR, "Jewelcrafting Materials");
  1034.         ItemList items_20(&vendor_20);
  1035.         items_20.AddItem(2840);
  1036.         items_20.AddItem(2835);
  1037.         items_20.AddItem(20816);
  1038.         items_20.AddItem(774);
  1039.         items_20.AddItem(818);
  1040.         items_20.AddItem(2841);
  1041.         items_20.AddItem(2836);
  1042.         items_20.AddItem(2842);
  1043.         items_20.AddItem(1210);
  1044.         items_20.AddItem(5498);
  1045.         items_20.AddItem(20817);
  1046.         items_20.AddItem(1206);
  1047.         items_20.AddItem(1705);
  1048.         items_20.AddItem(1529);
  1049.         items_20.AddItem(3575);
  1050.         items_20.AddItem(2838);
  1051.         items_20.AddItem(5637);
  1052.         items_20.AddItem(11083);
  1053.         items_20.AddItem(3827);
  1054.         items_20.AddItem(3391);
  1055.         items_20.AddItem(3577);
  1056.         items_20.AddItem(3864);
  1057.         items_20.AddItem(20963);
  1058.         itemlists.push_back(items_20);
  1059.        
  1060.         Vendor vendor_21(700020, GOSSIP_ICON_VENDOR, "Jewelcrafting Recipes");
  1061.         ItemList items_21(&vendor_21);
  1062.         items_21.AddItem(20854);
  1063.         items_21.AddItem(20970);
  1064.         items_21.AddItem(20971);
  1065.         items_21.AddItem(20855);
  1066.         items_21.AddItem(20973);
  1067.         items_21.AddItem(20856);
  1068.         itemlists.push_back(items_21);
  1069.        
  1070.         Vendor vendor_22(700021, GOSSIP_ICON_VENDOR, "Leatherworking Materials");
  1071.         ItemList items_22(&vendor_22);
  1072.         items_22.AddItem(2934);
  1073.         items_22.AddItem(2318);
  1074.         items_22.AddItem(2320);
  1075.         items_22.AddItem(783);
  1076.         items_22.AddItem(4289);
  1077.         items_22.AddItem(5082);
  1078.         items_22.AddItem(2324);
  1079.         items_22.AddItem(4231);
  1080.         items_22.AddItem(2321);
  1081.         items_22.AddItem(5498);
  1082.         items_22.AddItem(6470);
  1083.         items_22.AddItem(4232);
  1084.         items_22.AddItem(2319);
  1085.         items_22.AddItem(7286);
  1086.         items_22.AddItem(4340);
  1087.         items_22.AddItem(4243);
  1088.         items_22.AddItem(2997);
  1089.         items_22.AddItem(6471);
  1090.         items_22.AddItem(5784);
  1091.         items_22.AddItem(3383);
  1092.         items_22.AddItem(2457);
  1093.         items_22.AddItem(7287);
  1094.         items_22.AddItem(5373);
  1095.         items_22.AddItem(4233);
  1096.         items_22.AddItem(3389);
  1097.         items_22.AddItem(3182);
  1098.         items_22.AddItem(7067);
  1099.         items_22.AddItem(3356);
  1100.         items_22.AddItem(3390);
  1101.         items_22.AddItem(4234);
  1102.         items_22.AddItem(4235);
  1103.         items_22.AddItem(5637);
  1104.         itemlists.push_back(items_22);
  1105.        
  1106.         Vendor vendor_23(700022, GOSSIP_ICON_VENDOR, "Leatherworking Recipes");
  1107.         ItemList items_23(&vendor_23);
  1108.         items_23.AddItem(7288);
  1109.         items_23.AddItem(5083);
  1110.         items_23.AddItem(2407);
  1111.         items_23.AddItem(2408);
  1112.         items_23.AddItem(6710);
  1113.         items_23.AddItem(5786);
  1114.         items_23.AddItem(2406);
  1115.         items_23.AddItem(6474);
  1116.         items_23.AddItem(5787);
  1117.         items_23.AddItem(2409);
  1118.         items_23.AddItem(4293);
  1119.         items_23.AddItem(20576);
  1120.         items_23.AddItem(7289);
  1121.         items_23.AddItem(5972);
  1122.         items_23.AddItem(6475);
  1123.         items_23.AddItem(6476);
  1124.         items_23.AddItem(7360);
  1125.         items_23.AddItem(4294);
  1126.         items_23.AddItem(7290);
  1127.         items_23.AddItem(7362);
  1128.         items_23.AddItem(7361);
  1129.         items_23.AddItem(4296);
  1130.         items_23.AddItem(7363);
  1131.         items_23.AddItem(7364);
  1132.         items_23.AddItem(4297);
  1133.         items_23.AddItem(18731);
  1134.         itemlists.push_back(items_23);
  1135.  
  1136.         Vendor vendor_24(700023, GOSSIP_ICON_VENDOR, "Tailoring Materials");
  1137.         ItemList items_24(&vendor_24);
  1138.         items_24.AddItem(2589);
  1139.         items_24.AddItem(2996);
  1140.         items_24.AddItem(2320);
  1141.         items_24.AddItem(2324);
  1142.         items_24.AddItem(2318);
  1143.         items_24.AddItem(2604);
  1144.         items_24.AddItem(6260);
  1145.         items_24.AddItem(2605);
  1146.         items_24.AddItem(2321);
  1147.         items_24.AddItem(2592);
  1148.         items_24.AddItem(2997);
  1149.         items_24.AddItem(5498);
  1150.         items_24.AddItem(4340);
  1151.         items_24.AddItem(2319);
  1152.         items_24.AddItem(4306);
  1153.         items_24.AddItem(4305);
  1154.         items_24.AddItem(3182);
  1155.         items_24.AddItem(4234);
  1156.         items_24.AddItem(929);
  1157.         itemlists.push_back(items_24);
  1158.        
  1159.         Vendor vendor_25(700024, GOSSIP_ICON_VENDOR, "Tailoring Recipes");
  1160.         ItemList items_25(&vendor_25);
  1161.         items_25.AddItem(2598);
  1162.         items_25.AddItem(6271);
  1163.         items_25.AddItem(6270);
  1164.         items_25.AddItem(5771);
  1165.         items_25.AddItem(6272);
  1166.         items_25.AddItem(4345);
  1167.         items_25.AddItem(4292);
  1168.         items_25.AddItem(4346);
  1169.         items_25.AddItem(6274);
  1170.         items_25.AddItem(2601);
  1171.         items_25.AddItem(5772);
  1172.         items_25.AddItem(6275);
  1173.         items_25.AddItem(10316);
  1174.         items_25.AddItem(6391);
  1175.         items_25.AddItem(6390);
  1176.         items_25.AddItem(4347);
  1177.         items_25.AddItem(4349);
  1178.         items_25.AddItem(4348);
  1179.         items_25.AddItem(14627);
  1180.         items_25.AddItem(4350);
  1181.         items_25.AddItem(7092);
  1182.         items_25.AddItem(7114);
  1183.         items_25.AddItem(7091);
  1184.         items_25.AddItem(5773);
  1185.         itemlists.push_back(items_25);
  1186.        
  1187.         Vendor vendor_26(700025, GOSSIP_ICON_VENDOR, "Ranged Weapons");
  1188.         ItemList items_26(&vendor_26);
  1189.         items_26.AddItem(6469);
  1190.         items_26.AddItem(20438);
  1191.         items_26.AddItem(20437);
  1192.         items_26.AddItem(3039);
  1193.         items_26.AddItem(13136);
  1194.         items_26.AddItem(4372);
  1195.         items_26.AddItem(29201);
  1196.         items_26.AddItem(29584);
  1197.         items_26.AddItem(5198);
  1198.         items_26.AddItem(12984);
  1199.         items_26.AddItem(5243);
  1200.         items_26.AddItem(11288);
  1201.         itemlists.push_back(items_26);
  1202.        
  1203.         Vendor vendor_27(700026, GOSSIP_ICON_VENDOR, "Mounts");
  1204.         ItemList items_27(&vendor_27);
  1205.         items_27.AddItem(29465);
  1206.         items_27.AddItem(29471);
  1207.         items_27.AddItem(29468);
  1208.         items_27.AddItem(29467);
  1209.         items_27.AddItem(35906);
  1210.         items_27.AddItem(29466);
  1211.         items_27.AddItem(29469);
  1212.         items_27.AddItem(29470);
  1213.         items_27.AddItem(29472);
  1214.         items_27.AddItem(34129);
  1215.         itemlists.push_back(items_27);
  1216.  
  1217.         /* DO NOT EDIT ANYTHING BELOW HERE EITHER
  1218.          * THIS IS THE END OF THE EDITABLE SECTION
  1219.          * ONLY EDIT THINGS ABOVE THIS COMMENT BLOCK UNLESS YOU _REALLY_ KNOW WHAT YOU'RE DOING
  1220.          *
  1221.          * Peace out
  1222.          * Evilfairy~ */
  1223.  
  1224.         return itemlists;
  1225.     }
  1226.  
  1227.     bool OnGossipHello(Player* player, Creature* creature)
  1228.     {
  1229.         std::vector<ItemList> vendors = GetVendorList();
  1230.  
  1231.         /* DO NOT EDIT ANYTHING BELOW THIS LINE */
  1232.         for(int i = 0; i < vendors.size(); i++) // icon message sender guid
  1233.             player->ADD_GOSSIP_ITEM(vendors[i].GetVendor().getIcon(), vendors[i].GetVendor().getMessage(), GOSSIP_SENDER_MAIN, vendors[i].GetVendor().getGuid());
  1234.  
  1235.         player->TalkedToCreature(creature->GetEntry(), creature->GetGUID());
  1236.         player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
  1237.         return true;
  1238.     }
  1239.  
  1240.     bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
  1241.     {
  1242.         player->PlayerTalkClass->ClearMenus();
  1243.         player->CLOSE_GOSSIP_MENU();
  1244.        
  1245.         SendInventoryCustom(player, creature, action);
  1246.        
  1247.         return true;
  1248.     }
  1249.  
  1250.     void SendInventoryCustom(Player* player, Creature* vendor, int guid)
  1251.     {
  1252.         /* Remove Feign Death effects */
  1253.         if (player->HasUnitState(UNIT_STATE_DIED))
  1254.             player->RemoveAurasByType(SPELL_AURA_FEIGN_DEATH);
  1255.  
  1256.         /* Stop NPC moving */
  1257.         if (vendor->isMoving())
  1258.             vendor->StopMoving();
  1259.  
  1260.         std::vector<ItemList> vendors = GetVendorList();
  1261.         ItemList myVendor;
  1262.         for(int i = 0; i < vendors.size(); i++)
  1263.         {
  1264.             if(vendors[i].GetVendor().getGuid() == guid)
  1265.             {
  1266.                 myVendor = ItemList(&vendors[i].GetVendor(), &vendors[i].GetVendor().items);
  1267.                 break;
  1268.             }
  1269.         }
  1270.  
  1271.         SmsgListInventory inventory_packet(vendor->GetGUID(), player->GetSession(), &myVendor.GetVendor().items, vendors);
  1272.         inventory_packet.Send(vendor, player);
  1273.     }
  1274. };
  1275.  
  1276. void AddSC_npc_multivendor()
  1277. {
  1278.     new npc_multivendor;
  1279. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement