Advertisement
Parranoia

Paradox Enchant NPC

Jan 9th, 2013
235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 26.85 KB | None | 0 0
  1. #include "ScriptPCH.h"
  2.  
  3. enum Enchants
  4. {
  5.     ENCHANT_WEAPON_MONGOOSE     = 2673,
  6.     ENCHANT_WEAPON_MAJOR_INT    = 2666,
  7.     ENCHANT_WEAPON_MAJOR_SP     = 2669,
  8.     ENCHANT_WEAPON_AGILITY      = 2564,
  9.     ENCHANT_WEAPON_CRUSADER     = 1900,
  10.     ENCHANT_WEAPON_FIERY        = 803,
  11.     ENCHANT_WEAPON_ICY          = 1894,
  12.     ENCHANT_WEAPON_SPELL_POWER  = 2504,
  13.     ENCHANT_WEAPON_INTELLECT    = 2568,
  14.     ENCHANT_WEAPON_STRENGTH     = 2563,
  15.     ENCHANT_WEAPON_MAJOR_AGILITY= 2646,
  16.     ENCHANT_WEAPON_SPIRIT       = 2567,
  17.     ENCHANT_WEAPON_LIFESTEALING = 1898,
  18.  
  19.     ENCHANT_CHEST_STATS         = 1891,
  20.     ENCHANT_CHEST_MANA          = 1893,
  21.     ENCHANT_CHEST_HEALTH        = 1892,
  22.  
  23.     ENCHANT_GLOVES_HEALING      = 2617,
  24.     ENCHANT_GLOVES_SHADOW       = 2614,
  25.     ENCHANT_GLOVES_FROST        = 2615,
  26.     ENCHANT_GLOVES_FIRE         = 2616,
  27.     ENCHANT_GLOVES_AGILITY      = 2564,
  28.     ENCHANT_GLOVES_THREAT       = 2613,
  29.     ENCHANT_GLOVES_HASTE        = 931,
  30.     ENCHANT_GLOVES_STRENGTH     = 927,
  31.  
  32.     ENCHANT_WRIST_STAMINA       = 1886,
  33.     ENCHANT_WRIST_SPELL_POWER   = 2650,
  34.     ENCHANT_WRIST_SPIRIT        = 1884,
  35.     ENCHANT_WRIST_STRENGTH      = 1885,
  36.  
  37.     ENCHANT_BOOTS_AGILITY       = 1887,
  38.     ENCHANT_BOOTS_SPEED         = 911,
  39.     ENCHANT_BOOTS_STAMINA       = 929,
  40.     ENCHANT_BOOTS_SPIRIT        = 851,
  41.     ENCHANT_BOOTS_HIT           = 3858,
  42.  
  43.     ENCHANT_SHIELD_STAMINA      = 929,
  44.     ENCHANT_SHIELD_VITALITY     = 1890,
  45.     ENCHANT_SHIELD_SPIRIT       = 907,
  46.  
  47.     ENCHANT_CLOAK_AGILITY       = 849,
  48.     ENCHANT_CLOAK_SUBTLEY       = 2621,
  49.     ENCHANT_CLOAK_STEALTH       = 910,
  50.     ENCHANT_CLOAK_ARMOR         = 1889,
  51.     ENCHANT_CLOAK_SHADOW_RES    = 804,
  52.     ENCHANT_CLOAK_FIRE_RES      = 2619,
  53.     ENCHANT_CLOAK_NATURE_RES    = 2620,
  54.     ENCHANT_CLOAK_RESIST        = 1888,
  55. };
  56.  
  57. #define ONE_HAND_WEAPON_COST    0  //20g
  58. #define TWO_HAND_WEAPON_COST    0  //30g
  59. #define MAIN_PIECES_COST        0  //15g
  60. #define OFF_PIECES_COST         0   //10g
  61. #define SHIELD_COST             0   //10g
  62.  
  63. void Enchant(Player* player, Item* item, uint32 enchantid)
  64. {
  65.     if (!item)
  66.     {
  67.         player->GetSession()->SendNotification("You must first equip the item you are trying to enchant in order to enchant it!");
  68.         return;
  69.     }
  70.  
  71.     if (!enchantid)
  72.         return;
  73.    
  74.     player->ApplyEnchantment(item, PERM_ENCHANTMENT_SLOT, false);
  75.    item->SetEnchantment(PERM_ENCHANTMENT_SLOT, enchantid, 0, 0);
  76.     player->ApplyEnchantment(item, PERM_ENCHANTMENT_SLOT, true);
  77.  
  78.     std::string color = "|cff";
  79.     switch (item->GetTemplate()->Quality)
  80.     {
  81.         case 0:
  82.             color += "9d9d9d";
  83.             break;
  84.         case 1:
  85.             color += "ffffff";
  86.             break;
  87.         case 2:
  88.             color += "1eff00";
  89.             break;
  90.         case 3:
  91.             color += "0070dd";
  92.             break;
  93.         case 4:
  94.             color += "a335ee";
  95.             break;
  96.         case 5:
  97.             color += "ff8000";
  98.             break;
  99.     }
  100.     ChatHandler(player).PSendSysMessage("|cffFFFFFF[%s%s|cffFFFFFF] |cffFF0000succesfully enchanted!", color.c_str(), item->GetTemplate()->Name1.c_str());
  101. }
  102.  
  103. class npc_enchantment : public CreatureScript
  104. {
  105. public:
  106.     npc_enchantment() : CreatureScript("npc_enchantment") { }
  107.  
  108.         bool OnGossipHello(Player* player, Creature* creature)
  109.         {
  110.             player->PlayerTalkClass->ClearMenus();
  111.             player->ADD_GOSSIP_ITEM(1, "[Enchant Weapon]", GOSSIP_SENDER_MAIN, 1);
  112.             player->ADD_GOSSIP_ITEM(1, "[Enchant Off-Hand]", GOSSIP_SENDER_MAIN, 2);
  113.             player->ADD_GOSSIP_ITEM(1, "[Enchant Shield]", GOSSIP_SENDER_MAIN, 3);
  114.             player->ADD_GOSSIP_ITEM(1, "[Enchant Cloak]", GOSSIP_SENDER_MAIN, 6);
  115.             player->ADD_GOSSIP_ITEM(1, "[Enchant Chest]", GOSSIP_SENDER_MAIN, 7);
  116.             player->ADD_GOSSIP_ITEM(1, "[Enchant Bracers]", GOSSIP_SENDER_MAIN, 8);
  117.             player->ADD_GOSSIP_ITEM(1, "[Enchant Gloves]", GOSSIP_SENDER_MAIN, 9);
  118.             player->ADD_GOSSIP_ITEM(1, "[Enchant Feet]", GOSSIP_SENDER_MAIN, 11);
  119.  
  120.             player->SEND_GOSSIP_MENU(100001, creature->GetGUID());
  121.             return true;
  122.         }
  123.  
  124.         bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
  125.         {
  126.             player->PlayerTalkClass->ClearMenus();
  127.             Item* item;
  128.             switch (action)
  129.             {
  130.  
  131.                 case 1: // Enchant Weapon
  132.                     player->ADD_GOSSIP_ITEM(5, "Agility [+15 Agi]", GOSSIP_SENDER_MAIN, 100);
  133.                     player->ADD_GOSSIP_ITEM(5, "Crusader [+100 Str Proc]", GOSSIP_SENDER_MAIN, 101);
  134.                     player->ADD_GOSSIP_ITEM(5, "Fiery [Fire Dmg Proc]", GOSSIP_SENDER_MAIN, 102);
  135.                     player->ADD_GOSSIP_ITEM(5, "Icy [Frost Dmg Proc]", GOSSIP_SENDER_MAIN, 103);
  136.                     player->ADD_GOSSIP_ITEM(5, "Intellect [+22 Int]", GOSSIP_SENDER_MAIN, 104);
  137.                     player->ADD_GOSSIP_ITEM(5, "Lifestealing [+Lifesteal]", GOSSIP_SENDER_MAIN, 1011);
  138.                     player->ADD_GOSSIP_ITEM(5, "Mongoose [+120 Agi Proc]", GOSSIP_SENDER_MAIN, 105);
  139.                     player->ADD_GOSSIP_ITEM(5, "Major Intellect [+30 Int]", GOSSIP_SENDER_MAIN, 106);
  140.                     player->ADD_GOSSIP_ITEM(5, "Major Spell Power [+40 SP]", GOSSIP_SENDER_MAIN, 107);
  141.                     player->ADD_GOSSIP_ITEM(5, "Strength [+15 Str]", GOSSIP_SENDER_MAIN, 108);
  142.                     player->ADD_GOSSIP_ITEM(5, "Spell Power [+30 SP]", GOSSIP_SENDER_MAIN, 109);
  143.                     player->ADD_GOSSIP_ITEM(5, "2H Weapon - Agility [+25 Agi]", GOSSIP_SENDER_MAIN, 135);
  144.                     player->ADD_GOSSIP_ITEM(5, "Spirit [+20 Spirit]", GOSSIP_SENDER_MAIN, 140);
  145.                     player->ADD_GOSSIP_ITEM(1, "<-Back", GOSSIP_SENDER_MAIN, 300);
  146.                     player->PlayerTalkClass->SendGossipMenu(100002, creature->GetGUID());
  147.                     break;
  148.                 case 2: // Enchant Off-Hand
  149.                     if (item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND))
  150.                     {
  151.                         if (ItemTemplate const* iInfo = item->GetTemplate())
  152.                         {
  153.                             if ((iInfo->SubClass == ITEM_SUBCLASS_WEAPON_AXE || iInfo->SubClass == ITEM_SUBCLASS_WEAPON_DAGGER || iInfo->SubClass == ITEM_SUBCLASS_WEAPON_FIST ||
  154.                                 iInfo->SubClass == ITEM_SUBCLASS_WEAPON_MACE || iInfo->SubClass == ITEM_SUBCLASS_WEAPON_SWORD) && iInfo->Class == ITEM_CLASS_WEAPON)
  155.                             {
  156.                                 player->ADD_GOSSIP_ITEM(5, "Agility [+15 Agi]", GOSSIP_SENDER_MAIN, 1000);
  157.                                 player->ADD_GOSSIP_ITEM(5, "Crusader [+100 Str Proc]", GOSSIP_SENDER_MAIN, 1001);
  158.                                 player->ADD_GOSSIP_ITEM(5, "Fiery [Fire Dmg Proc]", GOSSIP_SENDER_MAIN, 1002);
  159.                                 player->ADD_GOSSIP_ITEM(5, "Icy [Frost Dmg Proc]", GOSSIP_SENDER_MAIN, 1003);
  160.                                 player->ADD_GOSSIP_ITEM(5, "Intellect [+22 Int]", GOSSIP_SENDER_MAIN, 1004);
  161.                                 player->ADD_GOSSIP_ITEM(5, "Lifestealing [+Lifesteal]", GOSSIP_SENDER_MAIN, 1010);
  162.                                 player->ADD_GOSSIP_ITEM(5, "Mongoose [+120 Agi Proc]", GOSSIP_SENDER_MAIN, 1005);
  163.                                 player->ADD_GOSSIP_ITEM(5, "Major Intellect [+30 Int]", GOSSIP_SENDER_MAIN, 1006);
  164.                                 player->ADD_GOSSIP_ITEM(5, "Major Spell Power [+40 SP]", GOSSIP_SENDER_MAIN, 1007);
  165.                                 player->ADD_GOSSIP_ITEM(5, "Strength [+15 Str]", GOSSIP_SENDER_MAIN, 1008);
  166.                                 player->ADD_GOSSIP_ITEM(5, "Spell Power [+30 SP]", GOSSIP_SENDER_MAIN, 1009);
  167.                                 player->SEND_GOSSIP_MENU(100002, creature->GetGUID());
  168.                             }
  169.                             else
  170.                             {
  171.                                 ChatHandler(player).PSendSysMessage("Your off-hand cannot be enchanted");
  172.                                 OnGossipHello(player, creature);
  173.                             }
  174.                         }
  175.                     }
  176.                     else
  177.                     {
  178.                         ChatHandler(player).PSendSysMessage("You don't have an offhand!");
  179.                         OnGossipHello(player, creature);
  180.                     }
  181.                     break;
  182.  
  183.                 case 3: // Enchant Shield
  184.                     player->ADD_GOSSIP_ITEM(5, "Stamina [+7 Stamina]", GOSSIP_SENDER_MAIN, 110);
  185.                     player->ADD_GOSSIP_ITEM(5, "Spirit  [+7 Spirit]", GOSSIP_SENDER_MAIN, 111);
  186.                     player->ADD_GOSSIP_ITEM(5, "Vitality [+5 MP5]", GOSSIP_SENDER_MAIN, 112);
  187.                     player->ADD_GOSSIP_ITEM(1, "<-Back", GOSSIP_SENDER_MAIN, 300);
  188.                     player->PlayerTalkClass->SendGossipMenu(100004, creature->GetGUID());
  189.                     break;
  190.  
  191.                 case 6: // Enchant Cloak
  192.                     player->ADD_GOSSIP_ITEM(5, "Agility [+3 Agi]", GOSSIP_SENDER_MAIN, 142);
  193.                     player->ADD_GOSSIP_ITEM(5, "Protection [+70 Armor]", GOSSIP_SENDER_MAIN, 113);
  194.                     player->ADD_GOSSIP_ITEM(5, "Stealth [Increase Stealth]", GOSSIP_SENDER_MAIN, 114);
  195.                     player->ADD_GOSSIP_ITEM(5, "Subtley [-2% Threat]", GOSSIP_SENDER_MAIN, 115);
  196.                     player->ADD_GOSSIP_ITEM(5, "Resistance [+5 All Resist]", GOSSIP_SENDER_MAIN, 136);
  197.                     player->ADD_GOSSIP_ITEM(5, "Fire Resist [+10 Fire Resist]", GOSSIP_SENDER_MAIN, 137);
  198.                     player->ADD_GOSSIP_ITEM(5, "Nature Resist [+10 Nature Resist]", GOSSIP_SENDER_MAIN, 138);
  199.                     player->ADD_GOSSIP_ITEM(5, "Shadow Resist [+5 Shadow Resist]", GOSSIP_SENDER_MAIN, 139);
  200.                     player->ADD_GOSSIP_ITEM(1, "<-Back", GOSSIP_SENDER_MAIN, 300);
  201.                     player->PlayerTalkClass->SendGossipMenu(100007, creature->GetGUID());
  202.                     break;
  203.  
  204.                 case 7: //Enchant chest
  205.                     player->ADD_GOSSIP_ITEM(5, "Health [+100 Health]", GOSSIP_SENDER_MAIN, 116);
  206.                     player->ADD_GOSSIP_ITEM(5, "Mana [+100 Mana]", GOSSIP_SENDER_MAIN, 117);
  207.                     player->ADD_GOSSIP_ITEM(5, "Stats [+4 All Stats]", GOSSIP_SENDER_MAIN, 118);
  208.                     player->ADD_GOSSIP_ITEM(1, "<-Back", GOSSIP_SENDER_MAIN, 300);
  209.                     player->PlayerTalkClass->SendGossipMenu(100008, creature->GetGUID());
  210.                     break;
  211.  
  212.                 case 8: //Enchant Bracers
  213.                     player->ADD_GOSSIP_ITEM(5, "Spell Power [+15 SP]", GOSSIP_SENDER_MAIN, 119);
  214.                     player->ADD_GOSSIP_ITEM(5, "Spirit [+9 Stam]", GOSSIP_SENDER_MAIN, 120);
  215.                     player->ADD_GOSSIP_ITEM(5, "Stamina [+9 Stam]", GOSSIP_SENDER_MAIN, 121);
  216.                     player->ADD_GOSSIP_ITEM(5, "Strength [+7 Str]", GOSSIP_SENDER_MAIN, 122);
  217.                     player->ADD_GOSSIP_ITEM(1, "<-Back", GOSSIP_SENDER_MAIN, 300);
  218.                     player->PlayerTalkClass->SendGossipMenu(100009, creature->GetGUID());
  219.                     break;
  220.  
  221.                 case 9: //Enchant Gloves
  222.                     player->ADD_GOSSIP_ITEM(5, "Agility [+15 Agi]", GOSSIP_SENDER_MAIN, 123);
  223.                     player->ADD_GOSSIP_ITEM(5, "Fire Power [+20 Fire Dmg]", GOSSIP_SENDER_MAIN, 124);
  224.                     player->ADD_GOSSIP_ITEM(5, "Frost Power [+20 Frost Dmg]", GOSSIP_SENDER_MAIN, 125);
  225.                     player->ADD_GOSSIP_ITEM(5, "Haste [+10 Haste]", GOSSIP_SENDER_MAIN, 126);
  226.                     player->ADD_GOSSIP_ITEM(5, "Healing [+15 SP]", GOSSIP_SENDER_MAIN, 127);
  227.                     player->ADD_GOSSIP_ITEM(5, "Shadow Power [+20 Shadow Dmg]", GOSSIP_SENDER_MAIN, 128);
  228.                     player->ADD_GOSSIP_ITEM(5, "Threat [+2% Threat]", GOSSIP_SENDER_MAIN, 129);
  229.                     player->ADD_GOSSIP_ITEM(5, "Strength [+7 Str]", GOSSIP_SENDER_MAIN, 141);
  230.                     player->ADD_GOSSIP_ITEM(1, "<-Back", GOSSIP_SENDER_MAIN, 300);
  231.                     player->PlayerTalkClass->SendGossipMenu(100010, creature->GetGUID());
  232.                     break;
  233.  
  234.                 case 11: //Enchant feet
  235.                     player->ADD_GOSSIP_ITEM(5, "Agility [+7 Agi]", GOSSIP_SENDER_MAIN, 130);
  236.                     player->ADD_GOSSIP_ITEM(5, "Hit [+5 Hit]", GOSSIP_SENDER_MAIN, 131);
  237.                     player->ADD_GOSSIP_ITEM(5, "Speed [Increase Run Speed]", GOSSIP_SENDER_MAIN, 132);
  238.                     player->ADD_GOSSIP_ITEM(5, "Spirit [+7 Spirit]", GOSSIP_SENDER_MAIN, 133);
  239.                     player->ADD_GOSSIP_ITEM(5, "Stamina [+7 Stam]", GOSSIP_SENDER_MAIN, 134);
  240.                     player->ADD_GOSSIP_ITEM(1, "<-Back", GOSSIP_SENDER_MAIN, 300);
  241.                     player->PlayerTalkClass->SendGossipMenu(100012, creature->GetGUID());
  242.                     break;
  243.  
  244.                 case 100:
  245.                     if (player->GetMoney() < ONE_HAND_WEAPON_COST) {
  246.                         ChatHandler(player).PSendSysMessage("You don't have enough money to purchase this! It costs %d gold", ONE_HAND_WEAPON_COST/10000);
  247.                         player->CLOSE_GOSSIP_MENU();
  248.                         break;
  249.                     }
  250.  
  251.                     player->ModifyMoney(-ONE_HAND_WEAPON_COST);
  252.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND), ENCHANT_WEAPON_AGILITY);
  253.                     player->PlayerTalkClass->SendCloseGossip();
  254.                     break;
  255.  
  256.                 case 101:
  257.                     if (player->GetMoney() < ONE_HAND_WEAPON_COST) {
  258.                         ChatHandler(player).PSendSysMessage("You don't have enough money to purchase this! It costs %d gold", ONE_HAND_WEAPON_COST/10000);
  259.                         player->CLOSE_GOSSIP_MENU();
  260.                         break;
  261.                     }
  262.  
  263.                     player->ModifyMoney(-ONE_HAND_WEAPON_COST);
  264.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND), ENCHANT_WEAPON_CRUSADER);
  265.                     player->PlayerTalkClass->SendCloseGossip();
  266.                     break;
  267.  
  268.                 case 102:
  269.                     if (player->GetMoney() < ONE_HAND_WEAPON_COST) {
  270.                         ChatHandler(player).PSendSysMessage("You don't have enough money to purchase this! It costs %d gold", ONE_HAND_WEAPON_COST/10000);
  271.                         player->CLOSE_GOSSIP_MENU();
  272.                         break;
  273.                     }
  274.  
  275.                     player->ModifyMoney(-ONE_HAND_WEAPON_COST);
  276.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND), ENCHANT_WEAPON_FIERY);
  277.                     player->PlayerTalkClass->SendCloseGossip();
  278.                     break;
  279.  
  280.                 case 103:
  281.                     if (player->GetMoney() < ONE_HAND_WEAPON_COST) {
  282.                         ChatHandler(player).PSendSysMessage("You don't have enough money to purchase this! It costs %d gold", ONE_HAND_WEAPON_COST/10000);
  283.                         player->CLOSE_GOSSIP_MENU();
  284.                         break;
  285.                     }
  286.  
  287.                     player->ModifyMoney(-ONE_HAND_WEAPON_COST);
  288.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND), ENCHANT_WEAPON_ICY);
  289.                     player->PlayerTalkClass->SendCloseGossip();
  290.                     break;
  291.  
  292.                 case 104:
  293.                     if (player->GetMoney() < ONE_HAND_WEAPON_COST) {
  294.                         ChatHandler(player).PSendSysMessage("You don't have enough money to purchase this! It costs %d gold", ONE_HAND_WEAPON_COST/10000);
  295.                         player->CLOSE_GOSSIP_MENU();
  296.                         break;
  297.                     }
  298.  
  299.                     player->ModifyMoney(-ONE_HAND_WEAPON_COST);
  300.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND), ENCHANT_WEAPON_INTELLECT);
  301.                     player->PlayerTalkClass->SendCloseGossip();
  302.                     break;
  303.  
  304.                 case 105:
  305.                     item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND);
  306.                     if (!item)
  307.                         break;
  308.  
  309.                     if (player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND)->GetTemplate()->ItemLevel >= 35)
  310.                     {
  311.                         Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND), ENCHANT_WEAPON_MONGOOSE);
  312.                         player->PlayerTalkClass->SendCloseGossip();
  313.                         break;
  314.                     }
  315.                     ChatHandler(player).PSendSysMessage("This enchant requires item level 35 or higher!");
  316.                     player->CLOSE_GOSSIP_MENU();
  317.                     break;
  318.                    
  319.                 case 106:
  320.                     item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND);
  321.                     if (!item)
  322.                         break;
  323.  
  324.                     if (item->GetTemplate()->ItemLevel >= 35)
  325.                     {
  326.                         Enchant(player, item, ENCHANT_WEAPON_MAJOR_INT);
  327.                         player->PlayerTalkClass->SendCloseGossip();
  328.                         break;
  329.                     }
  330.                     ChatHandler(player).PSendSysMessage("This enchant requires item level 35 or higher!");
  331.                     player->CLOSE_GOSSIP_MENU();
  332.                     break;
  333.                    
  334.                 case 107:
  335.                     item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND);
  336.                     if (!item)
  337.                         break;
  338.  
  339.                     if (item->GetTemplate()->ItemLevel >= 35)
  340.                     {
  341.                         Enchant(player, item, ENCHANT_WEAPON_MAJOR_SP);
  342.                         player->PlayerTalkClass->SendCloseGossip();
  343.                         break;
  344.                     }
  345.                     ChatHandler(player).PSendSysMessage("This enchant requires item level 35 or higher!");
  346.                     player->CLOSE_GOSSIP_MENU();
  347.                     break;
  348.  
  349.                 case 108:
  350.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND), ENCHANT_WEAPON_STRENGTH);
  351.                     player->PlayerTalkClass->SendCloseGossip();
  352.                     break;
  353.  
  354.                 case 109:
  355.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND), ENCHANT_WEAPON_SPELL_POWER);
  356.                     player->PlayerTalkClass->SendCloseGossip();
  357.                     break;
  358.  
  359.                 case 110:
  360.                     item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND);
  361.                     if (!item)
  362.                         break;
  363.  
  364.                     if (item->GetTemplate()->InventoryType == INVTYPE_SHIELD)
  365.                     {
  366.                         player->ModifyMoney(-SHIELD_COST);
  367.                         Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND), ENCHANT_SHIELD_STAMINA);
  368.                         player->PlayerTalkClass->SendCloseGossip();
  369.                         break;
  370.                     }
  371.                     else
  372.                     {
  373.                         ChatHandler(player).PSendSysMessage("You need a shield equipped!");
  374.                         player->CLOSE_GOSSIP_MENU();
  375.                         break;
  376.                     }
  377.  
  378.                 case 111:
  379.                     item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND);
  380.                     if (!item)
  381.                         break;
  382.  
  383.                     if (item->GetTemplate()->InventoryType == INVTYPE_SHIELD)
  384.                     {
  385.                         player->ModifyMoney(-SHIELD_COST);
  386.                         Enchant(player, item, ENCHANT_SHIELD_SPIRIT);
  387.                         player->PlayerTalkClass->SendCloseGossip();
  388.                         break;
  389.                     }
  390.                     else
  391.                     {
  392.                         ChatHandler(player).PSendSysMessage("You need a shield equipped!");
  393.                         player->CLOSE_GOSSIP_MENU();
  394.                         break;
  395.                     }
  396.  
  397.                 case 112:
  398.                     item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND);
  399.                     if (!item)
  400.                         break;
  401.  
  402.                     if (item->GetTemplate()->InventoryType == INVTYPE_SHIELD)
  403.                     {
  404.                         player->ModifyMoney(-SHIELD_COST);
  405.                         Enchant(player, item, ENCHANT_SHIELD_VITALITY);
  406.                         player->PlayerTalkClass->SendCloseGossip();
  407.                         break;
  408.                     }
  409.                     else
  410.                     {
  411.                         ChatHandler(player).PSendSysMessage("You need a shield equipped!");
  412.                         player->CLOSE_GOSSIP_MENU();
  413.                         break;
  414.                     }
  415.  
  416.                 case 113:
  417.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_BACK), ENCHANT_CLOAK_ARMOR);
  418.                     player->PlayerTalkClass->SendCloseGossip();
  419.                     break;
  420.  
  421.                 case 114:
  422.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_BACK), ENCHANT_CLOAK_STEALTH);
  423.                     player->PlayerTalkClass->SendCloseGossip();
  424.                     break;
  425.  
  426.                 case 115:
  427.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_BACK), ENCHANT_CLOAK_SUBTLEY);
  428.                     player->PlayerTalkClass->SendCloseGossip();
  429.                     break;
  430.  
  431.                 case 116:
  432.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_CHEST), ENCHANT_CHEST_HEALTH);
  433.                     player->PlayerTalkClass->SendCloseGossip();
  434.                     break;
  435.  
  436.                 case 117:
  437.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_CHEST), ENCHANT_CHEST_MANA);
  438.                     player->PlayerTalkClass->SendCloseGossip();
  439.                     break;
  440.  
  441.                 case 118:
  442.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_CHEST), ENCHANT_CHEST_STATS);
  443.                     player->PlayerTalkClass->SendCloseGossip();
  444.                     break;
  445.  
  446.                 case 119:
  447.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_WRISTS), ENCHANT_WRIST_SPELL_POWER);
  448.                     player->PlayerTalkClass->SendCloseGossip();
  449.                     break;
  450.  
  451.                 case 120:
  452.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_WRISTS), ENCHANT_WRIST_SPIRIT);
  453.                     player->PlayerTalkClass->SendCloseGossip();
  454.                     break;
  455.  
  456.                 case 121:
  457.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_WRISTS), ENCHANT_WRIST_STAMINA);
  458.                     player->PlayerTalkClass->SendCloseGossip();
  459.                     break;
  460.  
  461.                 case 122:
  462.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_WRISTS), ENCHANT_WRIST_STRENGTH);
  463.                     player->PlayerTalkClass->SendCloseGossip();
  464.                     break;
  465.  
  466.                 case 123:
  467.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_HANDS), ENCHANT_GLOVES_AGILITY);
  468.                     player->PlayerTalkClass->SendCloseGossip();
  469.                     break;
  470.  
  471.                 case 124:
  472.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_HANDS), ENCHANT_GLOVES_FIRE);
  473.                     player->PlayerTalkClass->SendCloseGossip();
  474.                     break;
  475.  
  476.                 case 125:
  477.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_HANDS), ENCHANT_GLOVES_FROST);
  478.                     player->PlayerTalkClass->SendCloseGossip();
  479.                     break;
  480.  
  481.                 case 126:
  482.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_HANDS), ENCHANT_GLOVES_HASTE);
  483.                     player->PlayerTalkClass->SendCloseGossip();
  484.                     break;
  485.  
  486.                 case 127:
  487.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_HANDS), ENCHANT_GLOVES_HEALING);
  488.                     player->PlayerTalkClass->SendCloseGossip();
  489.                     break;
  490.  
  491.                 case 128:
  492.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_HANDS), ENCHANT_GLOVES_SHADOW);
  493.                     player->PlayerTalkClass->SendCloseGossip();
  494.                     break;
  495.  
  496.                 case 129:
  497.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_HANDS), ENCHANT_GLOVES_THREAT);
  498.                     player->PlayerTalkClass->SendCloseGossip();
  499.                     break;
  500.  
  501.                 case 130:
  502.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_FEET), ENCHANT_BOOTS_AGILITY);
  503.                     player->PlayerTalkClass->SendCloseGossip();
  504.                     break;
  505.  
  506.                 case 131:
  507.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_FEET), ENCHANT_BOOTS_HIT);
  508.                     player->PlayerTalkClass->SendCloseGossip();
  509.                     break;
  510.  
  511.                 case 132:
  512.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_FEET), ENCHANT_BOOTS_SPEED);
  513.                     player->PlayerTalkClass->SendCloseGossip();
  514.                     break;
  515.  
  516.                 case 133:
  517.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_FEET), ENCHANT_BOOTS_SPIRIT);
  518.                     player->PlayerTalkClass->SendCloseGossip();
  519.                     break;
  520.  
  521.                 case 134:
  522.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_FEET), ENCHANT_BOOTS_STAMINA);
  523.                     player->PlayerTalkClass->SendCloseGossip();
  524.                     break;
  525.  
  526.                 case 135:
  527.                     item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND);
  528.                     if (!item)
  529.                         break;
  530.  
  531.                     if (item->GetTemplate()->InventoryType == INVTYPE_2HWEAPON)
  532.                     {
  533.                         Enchant(player, item, ENCHANT_WEAPON_MAJOR_AGILITY);
  534.                         player->PlayerTalkClass->SendCloseGossip();
  535.                         break;
  536.                     }
  537.                     ChatHandler(player).PSendSysMessage("You do not have a 2H weapon equipped!");
  538.                     break;
  539.  
  540.                 case 136:
  541.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_BACK), ENCHANT_CLOAK_RESIST);
  542.                     player->PlayerTalkClass->SendCloseGossip();
  543.                     break;
  544.  
  545.                 case 137:
  546.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_BACK), ENCHANT_CLOAK_FIRE_RES);
  547.                     player->PlayerTalkClass->SendCloseGossip();
  548.                     break;
  549.  
  550.                 case 138:
  551.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_BACK), ENCHANT_CLOAK_NATURE_RES);
  552.                     player->PlayerTalkClass->SendCloseGossip();
  553.                     break;
  554.  
  555.                 case 139:
  556.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_BACK), ENCHANT_CLOAK_SHADOW_RES);
  557.                     player->PlayerTalkClass->SendCloseGossip();
  558.                     break;
  559.                    
  560.                 case 140:
  561.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND), ENCHANT_WEAPON_SPIRIT);
  562.                     player->CLOSE_GOSSIP_MENU();
  563.                     break;
  564.  
  565.                 case 141:
  566.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_HANDS), ENCHANT_GLOVES_STRENGTH);
  567.                     player->CLOSE_GOSSIP_MENU();
  568.                     break;
  569.  
  570.                 case 142:
  571.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_BACK), ENCHANT_CLOAK_AGILITY);
  572.                     player->CLOSE_GOSSIP_MENU();
  573.                     break;
  574.  
  575.                 case 1000:
  576.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND), ENCHANT_WEAPON_AGILITY);
  577.                     player->PlayerTalkClass->SendCloseGossip();
  578.                     break;
  579.  
  580.                 case 1001:
  581.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND), ENCHANT_WEAPON_CRUSADER);
  582.                     player->PlayerTalkClass->SendCloseGossip();
  583.                     break;
  584.  
  585.                 case 1002:
  586.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND), ENCHANT_WEAPON_FIERY);
  587.                     player->PlayerTalkClass->SendCloseGossip();
  588.                     break;
  589.  
  590.                 case 1003:
  591.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND), ENCHANT_WEAPON_ICY);
  592.                     player->PlayerTalkClass->SendCloseGossip();
  593.                     break;
  594.  
  595.                 case 1004:
  596.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND), ENCHANT_WEAPON_INTELLECT);
  597.                     player->PlayerTalkClass->SendCloseGossip();
  598.                     break;
  599.  
  600.                 case 1005:
  601.                     item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND);
  602.                     if (!item)
  603.                         break;
  604.  
  605.                     if (item->GetTemplate()->ItemLevel >= 35)
  606.                     {
  607.                         Enchant(player, item, ENCHANT_WEAPON_MONGOOSE);
  608.                         player->PlayerTalkClass->SendCloseGossip();
  609.                         break;
  610.                     }
  611.                     ChatHandler(player).PSendSysMessage("This enchant requires item level 35 or higher!");
  612.                     player->CLOSE_GOSSIP_MENU();
  613.                     break;
  614.                    
  615.                 case 1006:
  616.                     item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND);
  617.                     if (!item)
  618.                         break;
  619.  
  620.                     if (item->GetTemplate()->ItemLevel >= 35)
  621.                     {
  622.                         Enchant(player, item, ENCHANT_WEAPON_MAJOR_INT);
  623.                         player->PlayerTalkClass->SendCloseGossip();
  624.                         break;
  625.                     }
  626.                     ChatHandler(player).PSendSysMessage("This enchant requires item level 35 or higher!");
  627.                     player->CLOSE_GOSSIP_MENU();
  628.                     break;
  629.                    
  630.                 case 1007:
  631.                     item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND);
  632.                     if (!item)
  633.                         break;
  634.  
  635.                     if (item->GetTemplate()->ItemLevel >= 35)
  636.                     {
  637.                         Enchant(player, item, ENCHANT_WEAPON_MAJOR_SP);
  638.                         player->PlayerTalkClass->SendCloseGossip();
  639.                         break;
  640.                     }
  641.                     ChatHandler(player).PSendSysMessage("This enchant requires item level 35 or higher!");
  642.                     player->CLOSE_GOSSIP_MENU();
  643.                     break;
  644.                 case 1008:
  645.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND), ENCHANT_WEAPON_STRENGTH);
  646.                     player->PlayerTalkClass->SendCloseGossip();
  647.                     break;
  648.                 case 1009:
  649.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND), ENCHANT_WEAPON_SPELL_POWER);
  650.                     player->PlayerTalkClass->SendCloseGossip();
  651.                     break;
  652.                 case 1010:
  653.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND), ENCHANT_WEAPON_LIFESTEALING);
  654.                     player->CLOSE_GOSSIP_MENU();
  655.                 case 1011:
  656.                     Enchant(player, player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND), ENCHANT_WEAPON_LIFESTEALING);
  657.                     player->CLOSE_GOSSIP_MENU();
  658.  
  659.                 case 300:
  660.                     OnGossipHello(player, creature);
  661.                     break;
  662.             }
  663.  
  664.             return true;
  665.         }
  666.  
  667.  
  668. };
  669.  
  670. void AddSC_npc_enchantment()
  671. {
  672.   new npc_enchantment();
  673. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement