Advertisement
Guest User

script

a guest
Feb 6th, 2014
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 51.96 KB | None | 0 0
  1. /*
  2. --------------------------------------------------------------------
  3. _____________
  4. | |
  5. |___ ____|
  6. | | |_|
  7. | | _ _
  8. | | | |_| |_ ___ ___ _ _ _ ___ _ _ _
  9. | | | |_ _|/ _ \ / _ \ | | | | | || _ || | | | | |
  10. | | | | | | | |_| || | | || | | | | ||| ||| | | | | |
  11. | | | | | | | _ || | | || |_| |_| |||_||| |_| |_| |
  12. |___| |_| |_| |_| |_||_| |_||_________||___||_________|
  13. --------------------------------------------------------------------
  14. */
  15. #include "ScriptPCH.h"
  16.  
  17. enum Enchants
  18. {
  19. ENCHANT_WEP_BLADE_WARD = 3869,
  20. ENCHANT_WEP_BLOOD_DRAINING = 3870,
  21. ENCHANT_WEP_BERSERKING = 3789,
  22.  
  23. ENCHANT_WEP_ACCURACY = 3788,
  24. ENCHANT_WEP_AGILITY_1H = 1103,
  25. ENCHANT_WEP_AGILITY_2H = 2670,
  26. ENCHANT_WEP_SPIRIT = 3844,
  27. ENCHANT_WEP_BATTLEMASTER = 2675,
  28. ENCHANT_WEP_BLACK_MAGIC = 3790,
  29. ENCHANT_WEP_ICEBREAKER = 3239,
  30. ENCHANT_WEP_LIFEWARD = 3241,
  31. ENCHANT_WEP_MIGHTY_SPELL_POWER = 3834, // One-hand
  32. ENCHANT_WEP_GREATER_SPELL_POWER = 3854, // Two-hand (staff)
  33. ENCHANT_WEP_MONGOOSE = 2673,
  34. ENCHANT_WEP_EXECUTIONER = 3225,
  35. ENCHANT_WEP_POTENCY = 3833,
  36. ENCHANT_WEP_TITANGUARD = 3851,
  37. ENCHANT_WEP_MASSACRE = 3827,
  38.  
  39. ENCHANT_WEP_CINDERGLACIER = 3369,
  40. ENCHANT_WEP_LICHBANE = 3366,
  41. ENCHANT_WEP_RAZORICE = 3370,
  42. ENCHANT_WEP_SPELLBREAKING = 3595,
  43. ENCHANT_WEP_SPELLSHATTERING = 3367,
  44. ENCHANT_WEP_SWORDBREAKING = 3594,
  45. ENCHANT_WEP_SWORDSHATTERING = 3365,
  46. ENCHANT_WEP_FALLEN_CRUSADER = 3368,
  47. ENCHANT_WEP_NERUBIAN_CARAPACE = 3883,
  48. ENCHANT_WEP_STONESKIN_GARGOYLE = 3847,
  49.  
  50. ENCHANT_WEP_TITANIUM_CHAIN = 3731,
  51.  
  52. ENCHANT_SHIELD_DEFENSE = 1952,
  53. ENCHANT_SHIELD_INTELLECT = 1128,
  54. ENCHANT_SHIELD_MAJOR_STAMINA = 1071,
  55. ENCHANT_SHIELD_RESILIENCE = 3229,
  56.  
  57. ENCHANT_SHIELD_TITANIUM_PLATING = 3849,
  58. ENCHANT_SHIELD_TITANIUM_SPIKE = 3748,
  59.  
  60. ENCHANT_HEAD_BLISSFUL_MENDING = 3819,
  61. ENCHANT_HEAD_BURNING_MYSTERIES = 3820,
  62. ENCHANT_HEAD_DOMINANCE = 3796,
  63. ENCHANT_HEAD_SAVAGE_GLADIATOR = 3842,
  64. ENCHANT_HEAD_STALWART_PROTECTOR = 3818,
  65. ENCHANT_HEAD_TORMENT = 3817,
  66. ENCHANT_HEAD_TRIUMPH = 3795,
  67.  
  68. ENCHANT_SHOULDER_MASTERS_AXE = 3835,
  69. ENCHANT_SHOULDER_MASTERS_CRAG = 3836,
  70. ENCHANT_SHOULDER_MASTERS_PINNACLE = 3837,
  71. ENCHANT_SHOULDER_MASTERS_STORM = 3838,
  72. ENCHANT_SHOULDER_GREATER_AXE = 3808,
  73. ENCHANT_SHOULDER_GREATER_CRAG = 3809,
  74. ENCHANT_SHOULDER_GREATER_GLADIATOR = 3852,
  75. ENCHANT_SHOULDER_GREATER_PINNACLE = 3811,
  76. ENCHANT_SHOULDER_GREATER_STORM = 3810,
  77. ENCHANT_SHOULDER_DOMINANCE = 3794,
  78. ENCHANT_SHOULDER_TRIUMPH = 3793,
  79.  
  80. ENCHANT_CLOAK_DARKGLOW_EMBROIDERY = 3728,
  81. ENCHANT_CLOAK_SWORDGUARD_EMBROIDERY = 3730,
  82. ENCHANT_CLOAK_LIGHTWEAVE_EMBROIDERY = 3722,
  83. ENCHANT_CLOAK_FLEXWEAVE_UNDERLAY = 3605,
  84. ENCHANT_CLOAK_SPRINGY_ARACHNOWEAVE = 3859,
  85. ENCHANT_CLOAK_WISDOM = 3296,
  86. ENCHANT_CLOAK_TITANWEAVE = 1951,
  87. ENCHANT_CLOAK_SPELL_PIERCING = 3243,
  88. ENCHANT_CLOAK_SHADOW_ARMOR = 3256,
  89. ENCHANT_CLOAK_MIGHTY_ARMOR = 3294,
  90. ENCHANT_CLOAK_MAJOR_AGILITY = 1099,
  91. ENCHANT_CLOAK_GREATER_SPEED = 3831,
  92.  
  93. ENCHANT_CHEST_EXCEPTIONAL_MANA = 3233,
  94. ENCHANT_CHEST_GREATER_MANA_RESTO = 3533,
  95. ENCHANT_CHEST_EXCEPTIONAL_RESILIENCE= 3245,
  96. ENCHANT_CHEST_SUPER_HEALTH = 3297,
  97. ENCHANT_CHEST_ALL_STATS = 3832,
  98.  
  99. ENCHANT_BRACER_GREATER_ASSAULT = 3845,
  100. ENCHANT_BRACER_EXCEPTIONAL_INTELLECT= 3458,
  101. ENCHANT_BRACER_MAJOR_SPIRIT = 1147,
  102. ENCHANT_BRACER_EXPERTISE = 3231,
  103. ENCHANT_BRACER_GREATER_STATS = 2661,
  104. ENCHANT_BRACER_SUPERIOR_SPELLPOWER = 2332,
  105. ENCHANT_BRACER_MAJOR_STAMINA = 3850,
  106.  
  107. ENCHANT_BRACER_FUR_LINING_AP = 3756,
  108. ENCHANT_BRACER_FUR_LINING_STAMINA = 3757,
  109. ENCHANT_BRACER_FUR_LINING_SP = 3758,
  110. ENCHANT_BRACER_ARCANE_RESIST = 3763,
  111. ENCHANT_BRACER_NATURE_RESIST = 3762,
  112. ENCHANT_BRACER_SHADOW_RESIST = 3761,
  113. ENCHANT_BRACER_FROST_RESIST = 3760,
  114. ENCHANT_BRACER_FIRE_RESIST = 3759,
  115.  
  116. ENCHANT_BRACER_SOCKET_BRACER = 3717,
  117.  
  118. ENCHANT_GLOVES_CRUSHER = 1603,
  119. // EXTREMELY ugly hack for duplicate enchants
  120. ENCHANT_GLOVES_EXPERTISE = -3231,
  121. ENCHANT_GLOVES_PRECISION = 3234,
  122. ENCHANT_GLOVES_GREATER_ASSAULT = 1603,
  123. ENCHANT_GLOVES_MAJOR_AGILITY = 1097,
  124. ENCHANT_GLOVES_EXCEPTIONAL_SPELLPOWER = 2330,
  125. ENCHANT_GLOVES_ARMSMAN = 3253,
  126.  
  127. ENCHANT_GLOVES_SOCKET_GLOVES = 3723,
  128.  
  129. ENCHANT_GLOVES_PYROROCKET = 3603,
  130. ENCHANT_GLOVES_HYPERSPEED_ACCELERATORS = 3604,
  131.  
  132. ENCHANT_BELT_ETERNAL_BELT_BUCKLE = 3729,
  133. ENCHANT_BELT_FRAG_BELT = 3601,
  134.  
  135. ENCHANT_LEGS_FROSTHIDE_ARMOR = 3822,
  136. ENCHANT_LEGS_ICESCALE_ARMOR = 3823,
  137. ENCHANT_LEGS_EARTHEN_ARMOR = 3853,
  138. ENCHANT_LEGS_SAPPHIRE_SPELLTHREAD = 3873,
  139. ENCHANT_LEGS_BRILLIANT_SPELLTHREAD = 3872,
  140.  
  141. ENCHANT_BOOTS_TUSKARRS_VITALITY = 3232,
  142. ENCHANT_BOOTS_ICEWALKER = 2599,
  143. ENCHANT_BOOTS_GREATER_ASSAULT = 1597,
  144. ENCHANT_BOOTS_GREATER_SPIRIT = 528,
  145. ENCHANT_BOOTS_GREATER_FORTITUDE = 3259,
  146. ENCHANT_BOOTS_SUPERIOR_AGILITY = 983,
  147. ENCHANT_BOOTS_NITRO_BOOSTS = 3606,
  148.  
  149. ENCHANT_RING_STAMINA = 3791,
  150. ENCHANT_RING_GREATER_SPELLPOWER = 3840,
  151. ENCHANT_RING_ASSAULT = 3839,
  152.  
  153. ENCHANT_RANGED_HEARTSEEKER_SCOPE = 3608,
  154. ENCHANT_RANGED_SUN_SCOPE = 3607
  155. };
  156.  
  157. Item* PlayerAddItem(Player* player, uint32 item_id)
  158. {
  159. uint8 count = 1;
  160. uint32 noSpaceForCount = 0;
  161. ItemPosCountVec dest;
  162.  
  163. InventoryResult msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT,
  164. dest, item_id, count, &noSpaceForCount);
  165. if (msg != EQUIP_ERR_OK)
  166. count -= noSpaceForCount;
  167.  
  168. Item* item = player->StoreNewItem(dest, item_id, true,
  169. Item::GenerateItemRandomPropertyId(item_id));
  170.  
  171. if (noSpaceForCount > 0)
  172. {
  173. player->GetSession()->SendNotification("Please make room in your "
  174. "inventory first.");
  175. return NULL;
  176. }
  177. return item;
  178. }
  179.  
  180. void EnchantWithItem(Player* player, uint32 item_id, Item* target)
  181. {
  182. Item* item = PlayerAddItem(player, item_id);
  183. SpellCastTargets* targets = new SpellCastTargets();
  184. targets->SetItemTarget(target);
  185. player->CastItemUseSpell(item, *targets, 1, 0);
  186. }
  187.  
  188. void EnchantWithSpell(Player* player, uint32 spell_id, Item* item)
  189. {
  190. SpellCastTargets* targets = new SpellCastTargets();
  191. targets->SetItemTarget(item);
  192. player->CastSpell(*targets, sSpellMgr->GetSpellInfo(spell_id),
  193. NULL, TRIGGERED_IGNORE_POWER_AND_REAGENT_COST);
  194. }
  195.  
  196. void Enchant(Player* player, Creature* creature, Item* item, uint32 enchantid)
  197. {
  198. if (!item)
  199. {
  200. player->GetSession()->SendNotification("Please equip an item first.");
  201. return;
  202. }
  203.  
  204. uint32 item_id = 0;
  205. switch (enchantid)
  206. {
  207. case ENCHANT_WEP_GREATER_SPELL_POWER:
  208. case ENCHANT_WEP_AGILITY_2H:
  209. case ENCHANT_WEP_MASSACRE:
  210. if (item->GetTemplate()->InventoryType != INVTYPE_2HWEAPON)
  211. {
  212. creature->MonsterWhisper("That isn't a two-handed weapon", player->GetGUID());
  213. return;
  214. }
  215. break;
  216. case ENCHANT_SHIELD_DEFENSE:
  217. case ENCHANT_SHIELD_INTELLECT:
  218. case ENCHANT_SHIELD_MAJOR_STAMINA:
  219. case ENCHANT_SHIELD_RESILIENCE:
  220. case ENCHANT_SHIELD_TITANIUM_PLATING:
  221. case ENCHANT_SHIELD_TITANIUM_SPIKE:
  222. if (item->GetTemplate()->InventoryType != INVTYPE_SHIELD)
  223. {
  224. creature->MonsterWhisper("That isn't a shield", player->GetGUID());
  225. return;
  226. }
  227. break;
  228. case ENCHANT_RANGED_HEARTSEEKER_SCOPE:
  229. case ENCHANT_RANGED_SUN_SCOPE:
  230. if (item->GetTemplate()->InventoryType != INVTYPE_RANGED &&
  231. item->GetTemplate()->InventoryType != INVTYPE_RANGEDRIGHT)
  232. {
  233. creature->MonsterWhisper("That isn't a ranged weapon", player->GetGUID());
  234. return;
  235. }
  236. break;
  237. default:
  238. break;
  239. }
  240.  
  241. player->ApplyEnchantment(item, PERM_ENCHANTMENT_SLOT, false);
  242. item->ClearEnchantment(PERM_ENCHANTMENT_SLOT);
  243. item->SetEnchantment(PERM_ENCHANTMENT_SLOT, enchantid, 0, 0);
  244. player->ApplyEnchantment(item, PERM_ENCHANTMENT_SLOT, true);
  245.  
  246. switch (enchantid)
  247. {
  248. case ENCHANT_BELT_ETERNAL_BELT_BUCKLE:
  249. EnchantWithItem(player, 41611, item);
  250. break;
  251. case ENCHANT_BRACER_SOCKET_BRACER:
  252. PlayerAddItem(player, 5956); // Blacksmith hammer
  253. EnchantWithSpell(player, 55628, item);
  254. player->DestroyItemCount(5956, -1, true, false);
  255. break;
  256. case ENCHANT_GLOVES_SOCKET_GLOVES:
  257. PlayerAddItem(player, 5956); // Blacksmith hammer
  258. EnchantWithSpell(player, 55641, item);
  259. player->DestroyItemCount(5956, -1, true, false);
  260. break;
  261. }
  262.  
  263. const char* item_name = item->GetTemplate()->Name1.c_str();
  264. char* message;
  265. player->GetSession()->SendNotification("|cff0000FF%s |cffFF0000succesfully enchanted!", item->GetTemplate()->Name1.c_str());
  266. }
  267.  
  268. class npc_enchantment : public CreatureScript
  269. {
  270. public:
  271. npc_enchantment() : CreatureScript("npc_enchantment") { }
  272. int selected_enchant;
  273.  
  274. bool OnGossipHello(Player* player, Creature* creature)
  275. {
  276. ShowMainMenu(player, creature);
  277. return true;
  278. }
  279.  
  280. void ShowMainMenu(Player* player, Creature* creature)
  281. {
  282. player->PlayerTalkClass->ClearMenus();
  283. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "|cff00ff00|TInterface\\icons\\INV_Weapon_ShortBlade_02:24|t|r[Enchant Weapon]", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
  284. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "|cff00ff00|TInterface\\icons\\INV_Weapon_Staff_109:24|t|r[Enchant 2H Weapon]", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
  285. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "|cff00ff00|TInterface\\icons\\INV_Weapon_ShortBlade_02:24|t|r[Enchant Ranged Weapon]", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 13);
  286. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "|cff00ff00|TInterface\\icons\\Ability_Warrior_ShieldWall:24|t|r[Enchant Shield]", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
  287. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "|cff00ff00|TInterface\\icons\\INV_Misc_Head_Gnome_01:24|t|r[Enchant Head]", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
  288. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "|cff00ff00|TInterface\\icons\\INV_SHOULDER_97:24|t|r[Enchant Shoulders]", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
  289. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "|cff00ff00|TInterface\\icons\\Item_icecrowncloak:24|t|r[Enchant Cloak]", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6);
  290. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "|cff00ff00|TInterface\\icons\\INV_Misc_Desecrated_ClothChest:24|t|r[Enchant Chest]", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 7);
  291. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "|cff00ff00|TInterface\\icons\\INV_Misc_Desecrated_MailBracer:24|t|r[Enchant Bracers]", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 8);
  292. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "|cff00ff00|TInterface\\icons\\INV_Misc_Desecrated_PlateGloves:24|t|r[Enchant Gloves]", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 9);
  293. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "|cff00ff00|TInterface\\icons\\INV_Belt_28:24|t|r[Eternal Belt Buckle]", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 10);
  294. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "|cff00ff00|TInterface\\icons\\INV_Misc_Desecrated_ClothPants:24|t|r[Enchant Legs]", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 11);
  295. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "|cff00ff00|TInterface\\icons\\INV_Misc_Desecrated_LeatherBoots:24|t|r[Enchant Feet]", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 12);
  296. if (player->HasSkill(SKILL_ENCHANTING) && player->GetSkillValue(SKILL_ENCHANTING) >= 450)
  297. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Enchant Rings", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 14);
  298. player->SEND_GOSSIP_MENU(1, creature->GetGUID());
  299. }
  300.  
  301. void Show1HWeaponMenu(Player* player, Creature* creature)
  302. {
  303. player->PlayerTalkClass->ClearMenus();
  304. if (player->getClass() == CLASS_DEATH_KNIGHT)
  305. {
  306. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Rune of Cinderglacier", GOSSIP_SENDER_MAIN,
  307. ENCHANT_WEP_CINDERGLACIER);
  308. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Rune of Lichbane", GOSSIP_SENDER_MAIN,
  309. ENCHANT_WEP_LICHBANE);
  310. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Rune of Razorice", GOSSIP_SENDER_MAIN,
  311. ENCHANT_WEP_RAZORICE);
  312. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Rune of Spellbreaking", GOSSIP_SENDER_MAIN,
  313. ENCHANT_WEP_SPELLBREAKING);
  314. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Rune of Swordbreaking", GOSSIP_SENDER_MAIN,
  315. ENCHANT_WEP_SWORDBREAKING);
  316. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Rune of the Fallen Crusader", GOSSIP_SENDER_MAIN,
  317. ENCHANT_WEP_FALLEN_CRUSADER);
  318. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Rune of the Nerubian Carapace", GOSSIP_SENDER_MAIN,
  319. ENCHANT_WEP_NERUBIAN_CARAPACE);
  320. }
  321. if (player->HasSkill(SKILL_ENCHANTING) && player->GetSkillValue(SKILL_ENCHANTING) >= 450)
  322. {
  323. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Blade Ward", GOSSIP_SENDER_MAIN,
  324. ENCHANT_WEP_BLADE_WARD);
  325. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Blood Draining", GOSSIP_SENDER_MAIN,
  326. ENCHANT_WEP_BLOOD_DRAINING);
  327. }
  328.  
  329. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Accuracy -- 25 Hit + 25 Crit", GOSSIP_SENDER_MAIN,
  330. ENCHANT_WEP_ACCURACY);
  331. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Black Magic -- 250 Spell Haste Proc", GOSSIP_SENDER_MAIN,
  332. ENCHANT_WEP_BLACK_MAGIC);
  333. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Battlemaster -- Chance of heal on hit", GOSSIP_SENDER_MAIN,
  334. ENCHANT_WEP_BATTLEMASTER);
  335. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Berserking -- 400 Attack Power Proc", GOSSIP_SENDER_MAIN,
  336. ENCHANT_WEP_BERSERKING);
  337. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Exceptional Agility -- 26 Agility", GOSSIP_SENDER_MAIN,
  338. ENCHANT_WEP_AGILITY_1H);
  339. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Exceptional Spirit -- 45 Spirit", GOSSIP_SENDER_MAIN,
  340. ENCHANT_WEP_SPIRIT);
  341. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Executioner -- 120 Arm Pen Proc", GOSSIP_SENDER_MAIN,
  342. ENCHANT_WEP_EXECUTIONER);
  343. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Icebreaker -- Fire damage on hit", GOSSIP_SENDER_MAIN,
  344. ENCHANT_WEP_ICEBREAKER);
  345. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Lifeward -- Chance of heal on hit", GOSSIP_SENDER_MAIN,
  346. ENCHANT_WEP_LIFEWARD);
  347. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Mighty Spellpower -- 63 Spell Power", GOSSIP_SENDER_MAIN,
  348. ENCHANT_WEP_MIGHTY_SPELL_POWER);
  349. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Mongoose -- 120 Agility Proc", GOSSIP_SENDER_MAIN,
  350. ENCHANT_WEP_MONGOOSE);
  351. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Superior Potency -- 65 Attack Power", GOSSIP_SENDER_MAIN,
  352. ENCHANT_WEP_POTENCY);
  353. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Titanguard -- 50 Stamina", GOSSIP_SENDER_MAIN,
  354. ENCHANT_WEP_TITANGUARD);
  355. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Titanium Weapon Chain -- Less Disarm Time", GOSSIP_SENDER_MAIN,
  356. ENCHANT_WEP_TITANIUM_CHAIN);
  357. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Back", GOSSIP_SENDER_MAIN, -1);
  358. player->SEND_GOSSIP_MENU(1, creature->GetGUID());
  359. }
  360.  
  361. void Show2HWeaponMenu(Player* player, Creature* creature)
  362. {
  363. player->PlayerTalkClass->ClearMenus();
  364. if (player->getClass() == CLASS_DEATH_KNIGHT)
  365. {
  366. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Rune of Cinderglacier", GOSSIP_SENDER_MAIN,
  367. ENCHANT_WEP_CINDERGLACIER);
  368. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Rune of Lichbane", GOSSIP_SENDER_MAIN,
  369. ENCHANT_WEP_LICHBANE);
  370. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Rune of Razorice", GOSSIP_SENDER_MAIN,
  371. ENCHANT_WEP_RAZORICE);
  372. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Rune of Spellshattering", GOSSIP_SENDER_MAIN,
  373. ENCHANT_WEP_SPELLSHATTERING);
  374. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Rune of Swordshattering", GOSSIP_SENDER_MAIN,
  375. ENCHANT_WEP_SWORDSHATTERING);
  376. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Rune of the Fallen Crusader", GOSSIP_SENDER_MAIN,
  377. ENCHANT_WEP_FALLEN_CRUSADER);
  378. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Rune of the Stoneskin Gargoyle", GOSSIP_SENDER_MAIN,
  379. ENCHANT_WEP_STONESKIN_GARGOYLE);
  380. }
  381. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Berserking -- 400 Attack Power Proc", GOSSIP_SENDER_MAIN,
  382. ENCHANT_WEP_BERSERKING);
  383. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Executioner -- 120 Arm Pen Proc", GOSSIP_SENDER_MAIN,
  384. ENCHANT_WEP_EXECUTIONER);
  385. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Greater Spellpower -- 81 Spell Power", GOSSIP_SENDER_MAIN,
  386. ENCHANT_WEP_GREATER_SPELL_POWER);
  387. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Major Agility -- 35 Agility", GOSSIP_SENDER_MAIN,
  388. ENCHANT_WEP_AGILITY_2H);
  389. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Massacre -- 110 Attack Power", GOSSIP_SENDER_MAIN,
  390. ENCHANT_WEP_MASSACRE);
  391. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Mongoose --120 Agility Proc", GOSSIP_SENDER_MAIN,
  392. ENCHANT_WEP_MONGOOSE);
  393. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Back", GOSSIP_SENDER_MAIN, -1);
  394. player->SEND_GOSSIP_MENU(1, creature->GetGUID());
  395. }
  396.  
  397. void ShowShieldMenu(Player* player, Creature* creature)
  398. {
  399. player->PlayerTalkClass->ClearMenus();
  400. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Defense -- 20 Defense", GOSSIP_SENDER_MAIN,
  401. ENCHANT_SHIELD_DEFENSE);
  402. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Greater Intellect -- 25 Intellect", GOSSIP_SENDER_MAIN,
  403. ENCHANT_SHIELD_INTELLECT);
  404. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Major Stamina -- 18 Stamina", GOSSIP_SENDER_MAIN,
  405. ENCHANT_SHIELD_MAJOR_STAMINA);
  406. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Resilience -- 12 Resilience", GOSSIP_SENDER_MAIN,
  407. ENCHANT_SHIELD_RESILIENCE);
  408. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Titanium Plating -- 36 Block", GOSSIP_SENDER_MAIN,
  409. ENCHANT_SHIELD_TITANIUM_PLATING);
  410. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Titanium Shield Spike -- 81 Block + 50% less Disarm", GOSSIP_SENDER_MAIN,
  411. ENCHANT_SHIELD_TITANIUM_SPIKE);
  412. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Back", GOSSIP_SENDER_MAIN, -1);
  413. player->SEND_GOSSIP_MENU(1, creature->GetGUID());
  414. }
  415.  
  416. void ShowHeadMenu(Player* player, Creature* creature)
  417. {
  418. player->PlayerTalkClass->ClearMenus();
  419. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Arcanum of Blissful Mending -- 30 Spell Power + 10 Mp5", GOSSIP_SENDER_MAIN,
  420. ENCHANT_HEAD_BLISSFUL_MENDING);
  421. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Arcanum of Burning Mysteries -- 25 Fire Resist + 30 Stam", GOSSIP_SENDER_MAIN,
  422. ENCHANT_HEAD_BURNING_MYSTERIES);
  423. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Arcanum of Dominance -- 30 Spell Power + 20 Crit", GOSSIP_SENDER_MAIN,
  424. ENCHANT_HEAD_DOMINANCE);
  425. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Arcanum of The Savage Gladiator -- 30 Stamina + 25 Resil", GOSSIP_SENDER_MAIN,
  426. ENCHANT_HEAD_SAVAGE_GLADIATOR);
  427. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Arcanum of The Stalwart Protector -- 37 Stamina + Defense", GOSSIP_SENDER_MAIN,
  428. ENCHANT_HEAD_STALWART_PROTECTOR);
  429. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Arcanum of Torment -- 29 Spell Power + 20 Resil", GOSSIP_SENDER_MAIN,
  430. ENCHANT_HEAD_TORMENT);
  431. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Arcanum of Triumph -- 50 Attack Power + 20 Resil", GOSSIP_SENDER_MAIN,
  432. ENCHANT_HEAD_TRIUMPH);
  433. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Back", GOSSIP_SENDER_MAIN, -1);
  434. player->SEND_GOSSIP_MENU(1, creature->GetGUID());
  435. }
  436.  
  437. void ShowShouldersMenu(Player* player, Creature* creature)
  438. {
  439. player->PlayerTalkClass->ClearMenus();
  440. if (player->HasSkill(SKILL_INSCRIPTION) && player->GetSkillValue(SKILL_INSCRIPTION) >= 450)
  441. {
  442. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Master's Inscription of the Axe", GOSSIP_SENDER_MAIN,
  443. ENCHANT_SHOULDER_MASTERS_AXE);
  444. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Master's Inscription of the Crag", GOSSIP_SENDER_MAIN,
  445. ENCHANT_SHOULDER_MASTERS_CRAG);
  446. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Master's Inscription of the Pinnacle", GOSSIP_SENDER_MAIN,
  447. ENCHANT_SHOULDER_MASTERS_PINNACLE);
  448. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Master's Inscription of the Storm", GOSSIP_SENDER_MAIN,
  449. ENCHANT_SHOULDER_MASTERS_STORM);
  450. }
  451. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Greater Inscription of the Axe -- 40 Attack Power + 15 Crit", GOSSIP_SENDER_MAIN,
  452. ENCHANT_SHOULDER_GREATER_AXE);
  453. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Greater Inscription of the Crag -- 24 Spell Power + 8 Mp5", GOSSIP_SENDER_MAIN,
  454. ENCHANT_SHOULDER_GREATER_CRAG);
  455. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Greater Inscription of the Pinnacle -- 30 Stamina + 15 Resil", GOSSIP_SENDER_MAIN,
  456. ENCHANT_SHOULDER_GREATER_PINNACLE);
  457. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Greater Inscription of the Gladiator -- 20 Dodge + 15 Defense", GOSSIP_SENDER_MAIN,
  458. ENCHANT_SHOULDER_GREATER_GLADIATOR);
  459. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Greater Inscription of the Storm -- 24 Spell Power + 15 Crit", GOSSIP_SENDER_MAIN,
  460. ENCHANT_SHOULDER_GREATER_STORM);
  461. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Inscription of Dominance -- 23 Spell Power + 15 Resil", GOSSIP_SENDER_MAIN,
  462. ENCHANT_SHOULDER_DOMINANCE);
  463. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Inscription of Triumph -- 40 Attack Power + 15 Resil", GOSSIP_SENDER_MAIN,
  464. ENCHANT_SHOULDER_TRIUMPH);
  465. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Back", GOSSIP_SENDER_MAIN, -1);
  466. player->SEND_GOSSIP_MENU(1, creature->GetGUID());
  467. }
  468.  
  469. void ShowCloakMenu(Player* player, Creature* creature)
  470. {
  471. player->PlayerTalkClass->ClearMenus();
  472. if (player->HasSkill(SKILL_ENGINEERING) && player->GetSkillValue(SKILL_ENGINEERING) >= 450)
  473. {
  474. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Springy Arachnoweave", GOSSIP_SENDER_MAIN,
  475. ENCHANT_CLOAK_SPRINGY_ARACHNOWEAVE);
  476. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Flexweave Underlay", GOSSIP_SENDER_MAIN,
  477. ENCHANT_CLOAK_FLEXWEAVE_UNDERLAY);
  478. }
  479. if (player->getClass() == CLASS_ROGUE)
  480. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Shadow Armor", GOSSIP_SENDER_MAIN,
  481. ENCHANT_CLOAK_SHADOW_ARMOR);
  482. if (player->HasSkill(SKILL_TAILORING) && player->GetSkillValue(SKILL_TAILORING) >= 450)
  483. {
  484. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Darkglow Embroidery", GOSSIP_SENDER_MAIN,
  485. ENCHANT_CLOAK_DARKGLOW_EMBROIDERY);
  486. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Lightweave Embroidery", GOSSIP_SENDER_MAIN,
  487. ENCHANT_CLOAK_LIGHTWEAVE_EMBROIDERY);
  488. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Swordguard Embroidery", GOSSIP_SENDER_MAIN,
  489. ENCHANT_CLOAK_SWORDGUARD_EMBROIDERY);
  490. }
  491. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Wisdom -- 10 Spirit +2% reduce threat", GOSSIP_SENDER_MAIN,
  492. ENCHANT_CLOAK_WISDOM);
  493. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Titanweave -- 16 Defense", GOSSIP_SENDER_MAIN,
  494. ENCHANT_CLOAK_TITANWEAVE);
  495. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Spell Piercing -- 35 Spell Pen", GOSSIP_SENDER_MAIN,
  496. ENCHANT_CLOAK_SPELL_PIERCING);
  497. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Mighty Armor -- 225 Armor", GOSSIP_SENDER_MAIN,
  498. ENCHANT_CLOAK_MIGHTY_ARMOR);
  499. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Major Agility -- 22 Agility", GOSSIP_SENDER_MAIN,
  500. ENCHANT_CLOAK_MAJOR_AGILITY);
  501. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Greater Speed -- 23 Haste", GOSSIP_SENDER_MAIN,
  502. ENCHANT_CLOAK_GREATER_SPEED);
  503. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Back", GOSSIP_SENDER_MAIN, -1);
  504. player->SEND_GOSSIP_MENU(1, creature->GetGUID());
  505. }
  506.  
  507. void ShowChestMenu(Player* player, Creature* creature)
  508. {
  509. player->PlayerTalkClass->ClearMenus();
  510. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Exceptional Mana -- 150 Mana", GOSSIP_SENDER_MAIN,
  511. ENCHANT_CHEST_EXCEPTIONAL_MANA);
  512. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Greater Mana Restoration -- 10 Mp5", GOSSIP_SENDER_MAIN,
  513. ENCHANT_CHEST_GREATER_MANA_RESTO);
  514. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Exceptional Resilience -- 20 Resilience", GOSSIP_SENDER_MAIN,
  515. ENCHANT_CHEST_EXCEPTIONAL_RESILIENCE);
  516. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Super Health -- 225 Health", GOSSIP_SENDER_MAIN,
  517. ENCHANT_CHEST_SUPER_HEALTH);
  518. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "10 of all stats", GOSSIP_SENDER_MAIN,
  519. ENCHANT_CHEST_ALL_STATS);
  520. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Back", GOSSIP_SENDER_MAIN, -1);
  521. player->SEND_GOSSIP_MENU(1, creature->GetGUID());
  522. }
  523.  
  524. void ShowBracerMenu(Player* player, Creature* creature)
  525. {
  526. player->PlayerTalkClass->ClearMenus();
  527. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Greater Assault -- 50 Attack Power", GOSSIP_SENDER_MAIN,
  528. ENCHANT_BRACER_GREATER_ASSAULT);
  529. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Exceptional Intellect -- 16 Intellect", GOSSIP_SENDER_MAIN,
  530. ENCHANT_BRACER_EXCEPTIONAL_INTELLECT);
  531. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Major Spirit -- 18 Spirit", GOSSIP_SENDER_MAIN,
  532. ENCHANT_BRACER_MAJOR_SPIRIT);
  533. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Expertise -- 15 Expertise", GOSSIP_SENDER_MAIN,
  534. ENCHANT_BRACER_EXPERTISE);
  535. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Greater Stats -- 6 all stats", GOSSIP_SENDER_MAIN,
  536. ENCHANT_BRACER_GREATER_STATS);
  537. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Superior Spellpower -- 30 Spell Power", GOSSIP_SENDER_MAIN,
  538. ENCHANT_BRACER_SUPERIOR_SPELLPOWER);
  539. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Major Stamina -- 40 Stamina", GOSSIP_SENDER_MAIN,
  540. ENCHANT_BRACER_MAJOR_STAMINA);
  541. if (player->HasSkill(SKILL_LEATHERWORKING) && player->GetSkillValue(SKILL_LEATHERWORKING) >= 450)
  542. {
  543. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Fur Lining: Attack Power", GOSSIP_SENDER_MAIN,
  544. ENCHANT_BRACER_FUR_LINING_AP);
  545. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Fur Lining: Stamina", GOSSIP_SENDER_MAIN,
  546. ENCHANT_BRACER_FUR_LINING_STAMINA);
  547. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Fur Lining: Spell Power", GOSSIP_SENDER_MAIN,
  548. ENCHANT_BRACER_FUR_LINING_SP);
  549. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Fur Lining: Arcane Resist", GOSSIP_SENDER_MAIN,
  550. ENCHANT_BRACER_ARCANE_RESIST);
  551. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Fur Lining: Nature Resist", GOSSIP_SENDER_MAIN,
  552. ENCHANT_BRACER_NATURE_RESIST);
  553. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Fur Lining: Shadow Resist", GOSSIP_SENDER_MAIN,
  554. ENCHANT_BRACER_SHADOW_RESIST);
  555. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Fur Lining: Frost Resist", GOSSIP_SENDER_MAIN,
  556. ENCHANT_BRACER_FROST_RESIST);
  557. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Fur Lining: Fire Resist", GOSSIP_SENDER_MAIN,
  558. ENCHANT_BRACER_FIRE_RESIST);
  559. }
  560. if (player->HasSkill(SKILL_BLACKSMITHING) && player->GetSkillValue(SKILL_BLACKSMITHING) >= 450)
  561. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Socket Bracer", GOSSIP_SENDER_MAIN,
  562. ENCHANT_BRACER_SOCKET_BRACER);
  563. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Back", GOSSIP_SENDER_MAIN, -1);
  564. player->SEND_GOSSIP_MENU(1, creature->GetGUID());
  565. }
  566.  
  567. void ShowGlovesMenu(Player* player, Creature* creature)
  568. {
  569. player->PlayerTalkClass->ClearMenus();
  570. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Armsman -- 2% Threat 10 Parry", GOSSIP_SENDER_MAIN,
  571. ENCHANT_GLOVES_ARMSMAN);
  572. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Exceptional Spellpower -- 23 Spell Power", GOSSIP_SENDER_MAIN,
  573. ENCHANT_GLOVES_EXCEPTIONAL_SPELLPOWER);
  574. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Expertise -- 15 Expertise", GOSSIP_SENDER_MAIN,
  575. ENCHANT_GLOVES_EXPERTISE);
  576. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Greater Assault -- 44 Attack Power", GOSSIP_SENDER_MAIN,
  577. ENCHANT_GLOVES_CRUSHER);
  578. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Major Agility -- 20 Agility", GOSSIP_SENDER_MAIN,
  579. ENCHANT_GLOVES_MAJOR_AGILITY);
  580. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Precision -- 20 Hit Rating", GOSSIP_SENDER_MAIN,
  581. ENCHANT_GLOVES_PRECISION);
  582. if (player->HasSkill(SKILL_BLACKSMITHING) && player->GetSkillValue(SKILL_BLACKSMITHING) >= 450)
  583. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Socket Gloves", GOSSIP_SENDER_MAIN,
  584. ENCHANT_GLOVES_SOCKET_GLOVES);
  585. if (player->HasSkill(SKILL_ENGINEERING) && player->GetSkillValue(SKILL_ENGINEERING) >= 450)
  586. {
  587. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Hand-Mounted Pyro Rocket", GOSSIP_SENDER_MAIN,
  588. ENCHANT_GLOVES_PYROROCKET);
  589. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Hyperspeed Accelerators", GOSSIP_SENDER_MAIN,
  590. ENCHANT_GLOVES_HYPERSPEED_ACCELERATORS);
  591. }
  592. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Back", GOSSIP_SENDER_MAIN, -1);
  593. player->SEND_GOSSIP_MENU(1, creature->GetGUID());
  594. }
  595.  
  596. void ShowBeltMenu(Player* player, Creature* creature)
  597. {
  598. player->PlayerTalkClass->ClearMenus();
  599. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Eternal Belt Buckle", GOSSIP_SENDER_MAIN,
  600. ENCHANT_BELT_ETERNAL_BELT_BUCKLE);
  601. if (player->HasSkill(SKILL_ENGINEERING) && player->GetSkillValue(SKILL_ENGINEERING) >= 450)
  602. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Frag Belt", GOSSIP_SENDER_MAIN,
  603. ENCHANT_BELT_FRAG_BELT);
  604. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Back", GOSSIP_SENDER_MAIN, -1);
  605. player->SEND_GOSSIP_MENU(1, creature->GetGUID());
  606. }
  607.  
  608. void ShowLegsMenu(Player* player, Creature* creature)
  609. {
  610. player->PlayerTalkClass->ClearMenus();
  611. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Frosthide Leg Armor -- 55 Stam 22 Agil", GOSSIP_SENDER_MAIN,
  612. ENCHANT_LEGS_FROSTHIDE_ARMOR);
  613. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Icescale Leg Armor -- 75 AP 22 Crit", GOSSIP_SENDER_MAIN,
  614. ENCHANT_LEGS_ICESCALE_ARMOR);
  615. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Earthen Leg Armor -- 40 Resil 28 Stam", GOSSIP_SENDER_MAIN,
  616. ENCHANT_LEGS_EARTHEN_ARMOR);
  617. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Sapphire Spellthread -- 50 SP 30 Stam", GOSSIP_SENDER_MAIN,
  618. ENCHANT_LEGS_SAPPHIRE_SPELLTHREAD);
  619. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Brilliant Spellthread -- 50 SP 22 Spirit", GOSSIP_SENDER_MAIN,
  620. ENCHANT_LEGS_BRILLIANT_SPELLTHREAD);
  621. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Back", GOSSIP_SENDER_MAIN, -1);
  622. player->SEND_GOSSIP_MENU(1, creature->GetGUID());
  623. }
  624.  
  625. void ShowBootsMenu(Player* player, Creature* creature)
  626. {
  627. player->PlayerTalkClass->ClearMenus();
  628. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Icewalker -- 12 Hit + 12 Crit", GOSSIP_SENDER_MAIN,
  629. ENCHANT_BOOTS_ICEWALKER);
  630. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Greater Assault -- 32 Assult", GOSSIP_SENDER_MAIN,
  631. ENCHANT_BOOTS_GREATER_ASSAULT);
  632. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Greater Fortitude -- 22 Stamins", GOSSIP_SENDER_MAIN,
  633. ENCHANT_BOOTS_GREATER_FORTITUDE);
  634. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Greater Spirit -- 18 Spirit", GOSSIP_SENDER_MAIN,
  635. ENCHANT_BOOTS_GREATER_SPIRIT);
  636. if (player->HasSkill(SKILL_ENGINEERING) && player->GetSkillValue(SKILL_ENGINEERING) >= 450)
  637. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Nitro Boosts", GOSSIP_SENDER_MAIN,
  638. ENCHANT_BOOTS_NITRO_BOOSTS);
  639. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Superior Agility -- 16 Agility", GOSSIP_SENDER_MAIN,
  640. ENCHANT_BOOTS_SUPERIOR_AGILITY);
  641. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Tuskarr's Vitality -- 15 Stam + Speed Increase", GOSSIP_SENDER_MAIN,
  642. ENCHANT_BOOTS_TUSKARRS_VITALITY);
  643. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Back", GOSSIP_SENDER_MAIN, -1);
  644. player->SEND_GOSSIP_MENU(1, creature->GetGUID());
  645. }
  646.  
  647. void ShowRingsMenu(Player* player, Creature* creature)
  648. {
  649. player->PlayerTalkClass->ClearMenus();
  650. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Assault", GOSSIP_SENDER_MAIN,
  651. ENCHANT_RING_ASSAULT);
  652. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Greater Spellpower", GOSSIP_SENDER_MAIN,
  653. ENCHANT_RING_GREATER_SPELLPOWER);
  654. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Stamina", GOSSIP_SENDER_MAIN,
  655. ENCHANT_RING_STAMINA);
  656. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Back", GOSSIP_SENDER_MAIN, -1);
  657. player->SEND_GOSSIP_MENU(1, creature->GetGUID());
  658. }
  659.  
  660. void ShowRangedMenu(Player* player, Creature* creature)
  661. {
  662. player->PlayerTalkClass->ClearMenus();
  663. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Heartseeker Scope", GOSSIP_SENDER_MAIN,
  664. ENCHANT_RANGED_HEARTSEEKER_SCOPE);
  665. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Sun Scope", GOSSIP_SENDER_MAIN,
  666. ENCHANT_RANGED_SUN_SCOPE);
  667. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Back", GOSSIP_SENDER_MAIN, -1);
  668. player->SEND_GOSSIP_MENU(1, creature->GetGUID());
  669. }
  670.  
  671. bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
  672. {
  673. int slot = -1;
  674. bool check_adjacent_slot = true;
  675. switch (action)
  676. {
  677. case -1: // Back
  678. ShowMainMenu(player, creature);
  679. break;
  680. case GOSSIP_ACTION_INFO_DEF + 1:
  681. Show1HWeaponMenu(player, creature);
  682. break;
  683. case GOSSIP_ACTION_INFO_DEF + 2:
  684. Show2HWeaponMenu(player, creature);
  685. break;
  686. case GOSSIP_ACTION_INFO_DEF + 3:
  687. ShowShieldMenu(player, creature);
  688. break;
  689. case GOSSIP_ACTION_INFO_DEF + 4:
  690. ShowHeadMenu(player, creature);
  691. break;
  692. case GOSSIP_ACTION_INFO_DEF + 5:
  693. ShowShouldersMenu(player, creature);
  694. break;
  695. case GOSSIP_ACTION_INFO_DEF + 6:
  696. ShowCloakMenu(player, creature);
  697. break;
  698. case GOSSIP_ACTION_INFO_DEF + 7:
  699. ShowChestMenu(player, creature);
  700. break;
  701. case GOSSIP_ACTION_INFO_DEF + 8:
  702. ShowBracerMenu(player, creature);
  703. break;
  704. case GOSSIP_ACTION_INFO_DEF + 9:
  705. ShowGlovesMenu(player, creature);
  706. break;
  707. case GOSSIP_ACTION_INFO_DEF + 10:
  708. ShowBeltMenu(player, creature);
  709. break;
  710. case GOSSIP_ACTION_INFO_DEF + 11:
  711. ShowLegsMenu(player, creature);
  712. break;
  713. case GOSSIP_ACTION_INFO_DEF + 12:
  714. ShowBootsMenu(player, creature);
  715. break;
  716. case GOSSIP_ACTION_INFO_DEF + 13:
  717. ShowRangedMenu(player, creature);
  718. break;
  719. case GOSSIP_ACTION_INFO_DEF + 14:
  720. ShowRingsMenu(player, creature);
  721. break;
  722.  
  723. // 1H weapons
  724. case ENCHANT_WEP_BLADE_WARD:
  725. case ENCHANT_WEP_BLOOD_DRAINING:
  726. case ENCHANT_WEP_AGILITY_1H:
  727. case ENCHANT_WEP_SPIRIT:
  728. case ENCHANT_WEP_BERSERKING:
  729. case ENCHANT_WEP_ACCURACY:
  730. case ENCHANT_WEP_BLACK_MAGIC:
  731. case ENCHANT_WEP_BATTLEMASTER:
  732. case ENCHANT_WEP_ICEBREAKER:
  733. case ENCHANT_WEP_LIFEWARD:
  734. case ENCHANT_WEP_TITANGUARD:
  735. case ENCHANT_WEP_POTENCY:
  736. case ENCHANT_WEP_MONGOOSE:
  737. case ENCHANT_WEP_MIGHTY_SPELL_POWER:
  738. case ENCHANT_WEP_EXECUTIONER:
  739. case ENCHANT_WEP_TITANIUM_CHAIN:
  740.  
  741. // 2H weapons
  742. // case ENCHANT_WEP_BERSERKING:
  743. // case ENCHANT_WEP_MONGOOSE:
  744. // case ENCHANT_WEP_EXECUTIONER:
  745. // case ENCHANT_WEP_TITANIUM_CHAIN:
  746. case ENCHANT_WEP_GREATER_SPELL_POWER:
  747. case ENCHANT_WEP_AGILITY_2H:
  748. case ENCHANT_WEP_MASSACRE:
  749.  
  750. // Runeforging
  751. case ENCHANT_WEP_CINDERGLACIER:
  752. case ENCHANT_WEP_LICHBANE:
  753. case ENCHANT_WEP_RAZORICE:
  754. case ENCHANT_WEP_SPELLBREAKING:
  755. case ENCHANT_WEP_SPELLSHATTERING:
  756. case ENCHANT_WEP_SWORDBREAKING:
  757. case ENCHANT_WEP_SWORDSHATTERING:
  758. case ENCHANT_WEP_FALLEN_CRUSADER:
  759. case ENCHANT_WEP_NERUBIAN_CARAPACE:
  760. case ENCHANT_WEP_STONESKIN_GARGOYLE:
  761. slot = EQUIPMENT_SLOT_MAINHAND;
  762. break;
  763.  
  764. // Shields
  765. case ENCHANT_SHIELD_DEFENSE:
  766. case ENCHANT_SHIELD_INTELLECT:
  767. case ENCHANT_SHIELD_RESILIENCE:
  768. case ENCHANT_SHIELD_TITANIUM_PLATING:
  769. case ENCHANT_SHIELD_MAJOR_STAMINA:
  770. case ENCHANT_SHIELD_TITANIUM_SPIKE:
  771. slot = EQUIPMENT_SLOT_OFFHAND;
  772. break;
  773.  
  774. // Head
  775. case ENCHANT_HEAD_BLISSFUL_MENDING:
  776. case ENCHANT_HEAD_BURNING_MYSTERIES:
  777. case ENCHANT_HEAD_DOMINANCE:
  778. case ENCHANT_HEAD_SAVAGE_GLADIATOR:
  779. case ENCHANT_HEAD_STALWART_PROTECTOR:
  780. case ENCHANT_HEAD_TORMENT:
  781. case ENCHANT_HEAD_TRIUMPH:
  782. slot = EQUIPMENT_SLOT_HEAD;
  783. break;
  784.  
  785. // Shoulders
  786. case ENCHANT_SHOULDER_MASTERS_AXE:
  787. case ENCHANT_SHOULDER_MASTERS_CRAG:
  788. case ENCHANT_SHOULDER_MASTERS_PINNACLE:
  789. case ENCHANT_SHOULDER_MASTERS_STORM:
  790. case ENCHANT_SHOULDER_GREATER_AXE:
  791. case ENCHANT_SHOULDER_GREATER_CRAG:
  792. case ENCHANT_SHOULDER_GREATER_GLADIATOR:
  793. case ENCHANT_SHOULDER_GREATER_PINNACLE:
  794. case ENCHANT_SHOULDER_GREATER_STORM:
  795. case ENCHANT_SHOULDER_DOMINANCE:
  796. case ENCHANT_SHOULDER_TRIUMPH:
  797. slot = EQUIPMENT_SLOT_SHOULDERS;
  798. break;
  799.  
  800. // Cloak
  801. case ENCHANT_CLOAK_DARKGLOW_EMBROIDERY:
  802. case ENCHANT_CLOAK_SWORDGUARD_EMBROIDERY:
  803. case ENCHANT_CLOAK_FLEXWEAVE_UNDERLAY:
  804. case ENCHANT_CLOAK_LIGHTWEAVE_EMBROIDERY:
  805. case ENCHANT_CLOAK_SPRINGY_ARACHNOWEAVE:
  806. case ENCHANT_CLOAK_WISDOM:
  807. case ENCHANT_CLOAK_TITANWEAVE:
  808. case ENCHANT_CLOAK_SPELL_PIERCING:
  809. case ENCHANT_CLOAK_SHADOW_ARMOR:
  810. case ENCHANT_CLOAK_MIGHTY_ARMOR:
  811. case ENCHANT_CLOAK_MAJOR_AGILITY:
  812. case ENCHANT_CLOAK_GREATER_SPEED:
  813. slot = EQUIPMENT_SLOT_BACK;
  814. break;
  815.  
  816. // Chest
  817. case ENCHANT_CHEST_EXCEPTIONAL_MANA:
  818. case ENCHANT_CHEST_GREATER_MANA_RESTO:
  819. case ENCHANT_CHEST_EXCEPTIONAL_RESILIENCE:
  820. case ENCHANT_CHEST_SUPER_HEALTH:
  821. case ENCHANT_CHEST_ALL_STATS:
  822. slot = EQUIPMENT_SLOT_CHEST;
  823. break;
  824.  
  825. // Bracers
  826. case ENCHANT_BRACER_GREATER_ASSAULT:
  827. case ENCHANT_BRACER_EXCEPTIONAL_INTELLECT:
  828. case ENCHANT_BRACER_MAJOR_SPIRIT:
  829. case ENCHANT_BRACER_EXPERTISE:
  830. case ENCHANT_BRACER_GREATER_STATS:
  831. case ENCHANT_BRACER_SUPERIOR_SPELLPOWER:
  832. case ENCHANT_BRACER_MAJOR_STAMINA:
  833. case ENCHANT_BRACER_FUR_LINING_AP:
  834. case ENCHANT_BRACER_FUR_LINING_STAMINA:
  835. case ENCHANT_BRACER_FUR_LINING_SP:
  836. case ENCHANT_BRACER_ARCANE_RESIST:
  837. case ENCHANT_BRACER_NATURE_RESIST:
  838. case ENCHANT_BRACER_SHADOW_RESIST:
  839. case ENCHANT_BRACER_FROST_RESIST:
  840. case ENCHANT_BRACER_FIRE_RESIST:
  841. case ENCHANT_BRACER_SOCKET_BRACER:
  842. slot = EQUIPMENT_SLOT_WRISTS;
  843. break;
  844.  
  845. // Gloves
  846. case ENCHANT_GLOVES_EXPERTISE:
  847. case ENCHANT_GLOVES_PRECISION:
  848. case ENCHANT_GLOVES_GREATER_ASSAULT:
  849. case ENCHANT_GLOVES_MAJOR_AGILITY:
  850. case ENCHANT_GLOVES_EXCEPTIONAL_SPELLPOWER:
  851. case ENCHANT_GLOVES_ARMSMAN:
  852. case ENCHANT_GLOVES_SOCKET_GLOVES:
  853. case ENCHANT_GLOVES_PYROROCKET:
  854. case ENCHANT_GLOVES_HYPERSPEED_ACCELERATORS:
  855. slot = EQUIPMENT_SLOT_HANDS;
  856. break;
  857.  
  858. // Belt
  859. case ENCHANT_BELT_ETERNAL_BELT_BUCKLE:
  860. case ENCHANT_BELT_FRAG_BELT:
  861. slot = EQUIPMENT_SLOT_WAIST;
  862. break;
  863.  
  864. // Legs
  865. case ENCHANT_LEGS_FROSTHIDE_ARMOR:
  866. case ENCHANT_LEGS_ICESCALE_ARMOR:
  867. case ENCHANT_LEGS_EARTHEN_ARMOR:
  868. case ENCHANT_LEGS_SAPPHIRE_SPELLTHREAD :
  869. case ENCHANT_LEGS_BRILLIANT_SPELLTHREAD:
  870. slot = EQUIPMENT_SLOT_LEGS;
  871. break;
  872.  
  873. // Boots
  874. case ENCHANT_BOOTS_TUSKARRS_VITALITY:
  875. case ENCHANT_BOOTS_ICEWALKER:
  876. case ENCHANT_BOOTS_GREATER_ASSAULT:
  877. case ENCHANT_BOOTS_GREATER_SPIRIT:
  878. case ENCHANT_BOOTS_GREATER_FORTITUDE:
  879. case ENCHANT_BOOTS_SUPERIOR_AGILITY:
  880. case ENCHANT_BOOTS_NITRO_BOOSTS:
  881. slot = EQUIPMENT_SLOT_FEET;
  882. break;
  883.  
  884. // Rings
  885. case ENCHANT_RING_STAMINA:
  886. case ENCHANT_RING_GREATER_SPELLPOWER:
  887. case ENCHANT_RING_ASSAULT:
  888. slot = EQUIPMENT_SLOT_FINGER1;
  889. break;
  890.  
  891. // Ranged weapon
  892. case ENCHANT_RANGED_HEARTSEEKER_SCOPE:
  893. case ENCHANT_RANGED_SUN_SCOPE:
  894. slot = EQUIPMENT_SLOT_RANGED;
  895. break;
  896.  
  897. // Main hand
  898. case GOSSIP_ACTION_INFO_DEF + 20:
  899. slot = EQUIPMENT_SLOT_MAINHAND;
  900. action = selected_enchant;
  901. check_adjacent_slot = false;
  902. break;
  903.  
  904. // Off hand
  905. case GOSSIP_ACTION_INFO_DEF + 21:
  906. slot = EQUIPMENT_SLOT_OFFHAND;
  907. action = selected_enchant;
  908. check_adjacent_slot = false;
  909. break;
  910.  
  911. default:
  912. player->CLOSE_GOSSIP_MENU();
  913. break;
  914. }
  915. if (slot > -1)
  916. {
  917. // allows for a maximum of 2 duplicates, and the
  918. // convenience of using enchant ids as gossip
  919. // userdata
  920. if (action < 0)
  921. action = -action;
  922. Item* item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, slot);
  923. if (!item && slot == INVTYPE_RANGEDRIGHT)
  924. item = player->GetItemByPos(INVENTORY_SLOT_BAG_0,
  925. INVTYPE_RANGEDRIGHT);
  926. if (item && check_adjacent_slot &&
  927. item->GetEnchantmentId(PERM_ENCHANTMENT_SLOT) != 0)
  928. {
  929. switch (slot)
  930. {
  931. case EQUIPMENT_SLOT_MAINHAND:
  932. {
  933. Item* offhand = player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND);
  934. if (offhand)
  935. {
  936. player->PlayerTalkClass->ClearMenus();
  937. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT,
  938. item->GetTemplate()->Name1.c_str(),
  939. GOSSIP_SENDER_MAIN,
  940. GOSSIP_ACTION_INFO_DEF + 20);
  941. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT,
  942. offhand->GetTemplate()->Name1.c_str(),
  943. GOSSIP_SENDER_MAIN,
  944. GOSSIP_ACTION_INFO_DEF + 21);
  945. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT,
  946. "Back",
  947. GOSSIP_SENDER_MAIN, -1);
  948. player->SEND_GOSSIP_MENU(1, creature->GetGUID());
  949. selected_enchant = action;
  950. return true;
  951. }
  952. break;
  953. }
  954. case EQUIPMENT_SLOT_FINGER1:
  955. {
  956. Item* ring2 = player->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_FINGER2);
  957. if (ring2)
  958. {
  959. player->PlayerTalkClass->ClearMenus();
  960. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT,
  961. item->GetTemplate()->Name1.c_str(),
  962. GOSSIP_SENDER_MAIN,
  963. GOSSIP_ACTION_INFO_DEF + 20);
  964. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT,
  965. ring2->GetTemplate()->Name1.c_str(),
  966. GOSSIP_SENDER_MAIN,
  967. GOSSIP_ACTION_INFO_DEF + 21);
  968. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT,
  969. "Back",
  970. GOSSIP_SENDER_MAIN, -1);
  971. player->SEND_GOSSIP_MENU(1, creature->GetGUID());
  972. selected_enchant = action;
  973. return true;
  974. }
  975. break;
  976. }
  977. default:
  978. break;
  979. }
  980. }
  981. Enchant(player, creature, item, action);
  982. ShowMainMenu(player, creature);
  983. }
  984. return true;
  985. }
  986. };
  987.  
  988. void AddSC_npc_enchantment()
  989. {
  990. new npc_enchantment();
  991. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement