Advertisement
Guest User

Talent_Chooser

a guest
Feb 26th, 2012
663
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.89 KB | None | 0 0
  1. #include "ScriptPCH.h"
  2.  
  3. class Talent_Chooser : public CreatureScript
  4. {
  5. public:
  6. Talent_Chooser() : CreatureScript("Talent_Chooser") { }
  7.  
  8. bool OnGossipHello(Player * pPlayer, Creature * pCreature)
  9. {
  10. switch(pPlayer->getClass())
  11. {
  12. case CLASS_PALADIN:
  13. pPlayer->ADD_GOSSIP_ITEM(4, "Retribution", GOSSIP_SENDER_MAIN, 0);
  14. pPlayer->ADD_GOSSIP_ITEM(4, "Holy", GOSSIP_SENDER_MAIN, 1);
  15. pPlayer->ADD_GOSSIP_ITEM(4, "Protection", GOSSIP_SENDER_MAIN, 2);
  16. pPlayer->PlayerTalkClass->SendGossipMenu(907, pCreature->GetGUID());
  17. break;
  18. case CLASS_MAGE:
  19. pPlayer->ADD_GOSSIP_ITEM(4, "Arcane", GOSSIP_SENDER_MAIN, 3);
  20. pPlayer->ADD_GOSSIP_ITEM(4, "Fire", GOSSIP_SENDER_MAIN, 4);
  21. pPlayer->ADD_GOSSIP_ITEM(4, "Frost", GOSSIP_SENDER_MAIN, 5);
  22. pPlayer->PlayerTalkClass->SendGossipMenu(907, pCreature->GetGUID());
  23. break;
  24. case CLASS_WARRIOR:
  25. pPlayer->ADD_GOSSIP_ITEM(4, "Arms", GOSSIP_SENDER_MAIN, 6);
  26. pPlayer->ADD_GOSSIP_ITEM(4, "Fury", GOSSIP_SENDER_MAIN, 7);
  27. pPlayer->ADD_GOSSIP_ITEM(4, "Protection", GOSSIP_SENDER_MAIN, 8);
  28. pPlayer->PlayerTalkClass->SendGossipMenu(907, pCreature->GetGUID());
  29. break;
  30. case CLASS_PRIEST:
  31. pPlayer->ADD_GOSSIP_ITEM(4, "Holy", GOSSIP_SENDER_MAIN, 9);
  32. pPlayer->ADD_GOSSIP_ITEM(4, "Discipline", GOSSIP_SENDER_MAIN, 10);
  33. pPlayer->ADD_GOSSIP_ITEM(4, "Shadow", GOSSIP_SENDER_MAIN, 11);
  34. pPlayer->PlayerTalkClass->SendGossipMenu(907, pCreature->GetGUID());
  35. break;
  36. case CLASS_HUNTER:
  37. pPlayer->ADD_GOSSIP_ITEM(4, "Marksman", GOSSIP_SENDER_MAIN, 12);
  38. pPlayer->ADD_GOSSIP_ITEM(4, "Survival", GOSSIP_SENDER_MAIN, 13);
  39. pPlayer->ADD_GOSSIP_ITEM(4, "Beastmaster", GOSSIP_SENDER_MAIN, 14);
  40. pPlayer->PlayerTalkClass->SendGossipMenu(907, pCreature->GetGUID());
  41. break;
  42. case CLASS_ROGUE:
  43. pPlayer->ADD_GOSSIP_ITEM(4, "Sub", GOSSIP_SENDER_MAIN, 15);
  44. pPlayer->ADD_GOSSIP_ITEM(4, "Assassination", GOSSIP_SENDER_MAIN, 16);
  45. pPlayer->ADD_GOSSIP_ITEM(4, "Combat", GOSSIP_SENDER_MAIN, 17);
  46. pPlayer->PlayerTalkClass->SendGossipMenu(907, pCreature->GetGUID());
  47. break;
  48. case CLASS_SHAMAN:
  49. pPlayer->ADD_GOSSIP_ITEM(4, "Restoration", GOSSIP_SENDER_MAIN, 18);
  50. pPlayer->ADD_GOSSIP_ITEM(4, "Enhancement", GOSSIP_SENDER_MAIN, 19);
  51. pPlayer->ADD_GOSSIP_ITEM(4, "Elemental", GOSSIP_SENDER_MAIN, 20);
  52. pPlayer->PlayerTalkClass->SendGossipMenu(907, pCreature->GetGUID());
  53. break;
  54. case CLASS_WARLOCK:
  55. pPlayer->ADD_GOSSIP_ITEM(4, "Affliciton", GOSSIP_SENDER_MAIN, 21);
  56. pPlayer->ADD_GOSSIP_ITEM(4, "Demonology", GOSSIP_SENDER_MAIN, 22);
  57. pPlayer->ADD_GOSSIP_ITEM(4, "Destruction", GOSSIP_SENDER_MAIN, 23);
  58. pPlayer->PlayerTalkClass->SendGossipMenu(907, pCreature->GetGUID());
  59. break;
  60. case CLASS_DRUID:
  61. pPlayer->ADD_GOSSIP_ITEM(4, "Feral", GOSSIP_SENDER_MAIN, 24);
  62. pPlayer->ADD_GOSSIP_ITEM(4, "Balance", GOSSIP_SENDER_MAIN, 25);
  63. pPlayer->ADD_GOSSIP_ITEM(4, "Restoration", GOSSIP_SENDER_MAIN, 26);
  64. pPlayer->PlayerTalkClass->SendGossipMenu(907, pCreature->GetGUID());
  65. break;
  66. }
  67. return true;
  68. }
  69.  
  70. bool OnGossipSelect(Player * player, Creature * creature, uint32 sender, uint32 uiAction)
  71. {
  72. if (sender == GOSSIP_SENDER_MAIN)
  73. {
  74. player->PlayerTalkClass->ClearMenus();
  75. switch(uiAction)
  76. {
  77. // Paladin
  78. case 0: //Retrubition
  79. player->removeSpell(54428, false);
  80. player->removeSpell(19746, false);
  81. player->removeSpell(62124, false);
  82. player->removeSpell(498, false);
  83. player->learnSpell(7294, false);
  84. player->learnSpell(35395, false);
  85. break;
  86. case 1: //Holy
  87. player->removeSpell(62124, false);
  88. player->removeSpell(498, false);
  89. player->removeSpell(7294, false);
  90. player->removeSpell(35395, false);
  91. player->learnSpell(54428, false);
  92. player->learnSpell(19746, false);
  93. break;
  94. case 2: //Protection
  95. player->removeSpell(54428, false);
  96. player->removeSpell(19746, false);
  97. player->removeSpell(7294, false);
  98. player->removeSpell(35395, false);
  99. player->removeSpell(62124, false);
  100. player->learnSpell(498, false);
  101. break;
  102.  
  103. // Mage
  104. case 3: // Arcane
  105. player->removeSpell(44614, false);
  106. player->removeSpell(44457, false);
  107. player->removeSpell(120, false);
  108. player->removeSpell(45438, false);
  109. player->learnSpell(12051, false);
  110. player->learnSpell(5143, false);
  111. break;
  112. case 4: // Fire
  113. player->removeSpell(12051, false);
  114. player->removeSpell(5143, false);
  115. player->removeSpell(120, false);
  116. player->removeSpell(45438, false);
  117. player->learnSpell(44614, false);
  118. player->learnSpell(44457, false);
  119. break;
  120. case 5: // Frost
  121. player->removeSpell(12051, false);
  122. player->removeSpell(5143, false);
  123. player->removeSpell(44614, false);
  124. player->removeSpell(44457, false);
  125. player->learnSpell(120, false);
  126. player->learnSpell(45438, false);
  127. break;
  128.  
  129. // Warrior
  130. case 6: // Arms
  131. player->removeSpell(6572, false);
  132. player->removeSpell(2565, false);
  133. player->removeSpell(23881, false);
  134. player->removeSpell(674, false);
  135. player->learnSpell(1715, false);
  136. player->learnSpell(20230, false);
  137. break;
  138. case 7: // Fury
  139. player->removeSpell(1715, false);
  140. player->removeSpell(20230, false);
  141. player->removeSpell(6572, false);
  142. player->removeSpell(2565, false);
  143. player->learnSpell(23881, false);
  144. player->learnSpell(674, false);
  145. break;
  146. case 8: // Protection
  147. player->removeSpell(1715, false);
  148. player->removeSpell(20230, false);
  149. player->removeSpell(23881, false);
  150. player->removeSpell(674, false);
  151. player->learnSpell(6572, false);
  152. player->learnSpell(2565, false);
  153. break;
  154.  
  155. // Priest
  156. case 9: // Holy
  157. player->removeSpell(17, false);
  158. player->removeSpell(588, false);
  159. player->removeSpell(15407, false);
  160. player->removeSpell(8122, false);
  161. player->learnSpell(2061, false);
  162. player->learnSpell(14914, false);
  163. break;
  164. case 10: // Discipline
  165. player->removeSpell(2061, false);
  166. player->removeSpell(14914, false);
  167. player->removeSpell(15407, false);
  168. player->removeSpell(8122, false);
  169. player->learnSpell(588, false);
  170. player->learnSpell(17, false);
  171. break;
  172. case 11: // Shadow
  173. player->removeSpell(17, false);
  174. player->removeSpell(588, false);
  175. player->removeSpell(2061, false);
  176. player->removeSpell(14914, false);
  177. player->learnSpell(15407, false);
  178. player->learnSpell(8122, false);
  179. break;
  180.  
  181. // Hunter
  182. case 12: // Marksman
  183. player->removeSpell(13165, false);
  184. player->removeSpell(1495, false);
  185. player->removeSpell(1499, false);
  186. player->removeSpell(2974, false);
  187. player->learnSpell(2643, false);
  188. player->learnSpell(3044, false);
  189. break;
  190. case 13: // Survival
  191. player->removeSpell(13165, false);
  192. player->removeSpell(2643, false);
  193. player->removeSpell(3044, false);
  194. player->removeSpell(1499, false);
  195. player->learnSpell(1495, false);
  196. player->learnSpell(2974, false);
  197. break;
  198. case 14: // Beastmaster
  199. player->removeSpell(2974, false);
  200. player->removeSpell(1495, false);
  201. player->removeSpell(2643, false);
  202. player->removeSpell(3044, false);
  203. player->learnSpell(13165, false);
  204. player->learnSpell(1499, false);
  205. break;
  206.  
  207. // Rogue
  208. case 15: //Sub
  209. player->removeSpell(703, false);
  210. player->removeSpell(5171, false);
  211. player->removeSpell(5277, false);
  212. player->removeSpell(1776, false);
  213. player->learnSpell(8676, false);
  214. player->learnSpell(2983, false);
  215. break;
  216. case 16: // Assassination
  217. player->removeSpell(8676, false);
  218. player->removeSpell(2983, false);
  219. player->removeSpell(5277, false);
  220. player->removeSpell(1776, false);
  221. player->learnSpell(703, false);
  222. player->learnSpell(5171, false);
  223. break;
  224. case 17: // Combat
  225. player->removeSpell(8676, false);
  226. player->removeSpell(2983, false);
  227. player->removeSpell(703, false);
  228. player->removeSpell(84668, false);
  229. player->learnSpell(5277, false);
  230. player->learnSpell(5171, false);
  231. break;
  232.  
  233. // Shaman
  234. case 18: //Restoration
  235. player->removeSpell(8056, false);
  236. player->removeSpell(674, false);
  237. player->removeSpell(51490, false);
  238. player->removeSpell(51505, false);
  239. player->learnSpell(51730, false);
  240. player->learnSpell(16176, false);
  241. break;
  242. case 19: // Enhancement
  243. player->removeSpell(51730, false);
  244. player->removeSpell(16176, false);
  245. player->removeSpell(51490, false);
  246. player->removeSpell(51505, false);
  247. player->learnSpell(8056, false);
  248. player->learnSpell(674, false);
  249. break;
  250. case 20: // Elemental
  251. player->removeSpell(51730, false);
  252. player->removeSpell(16176, false);
  253. player->removeSpell(8056, false);
  254. player->removeSpell(674, false);
  255. player->learnSpell(51490, false);
  256. player->learnSpell(51505, false);
  257. break;
  258.  
  259. // Warlock
  260. case 21: //Affliction
  261. player->removeSpell(12746, false);
  262. player->removeSpell(47897, false);
  263. player->removeSpell(707, false);
  264. player->removeSpell(17962, false);
  265. player->learnSpell(5484, false);
  266. player->learnSpell(980, false);
  267. break;
  268. case 22: // Demonology
  269. player->removeSpell(5484, false);
  270. player->removeSpell(980, false);
  271. player->removeSpell(707, false);
  272. player->removeSpell(17962, false);
  273. player->learnSpell(12746, false);
  274. player->learnSpell(47897, false);
  275. break;
  276. case 23: //Destruction
  277. player->removeSpell(5484, false);
  278. player->removeSpell(980, false);
  279. player->removeSpell(12746, false);
  280. player->removeSpell(47897, false);
  281. player->learnSpell(707, false);
  282. player->learnSpell(17962, false);
  283. break;
  284.  
  285. // Druid
  286. case 24: //Feral
  287. player->removeSpell(5570, false);
  288. player->removeSpell(50516, false);
  289. player->removeSpell(50464, false);
  290. player->removeSpell(8936, false);
  291. player->learnSpell(770, false);
  292. player->learnSpell(22812, false);
  293. break;
  294. case 25: // Balance
  295. player->removeSpell(770, false);
  296. player->removeSpell(22812, false);
  297. player->removeSpell(50464, false);
  298. player->removeSpell(8936, false);
  299. player->learnSpell(5570, false);
  300. player->learnSpell(50516, false);
  301. break;
  302. case 26: //Restoration
  303. player->removeSpell(770, false);
  304. player->removeSpell(22812, false);
  305. player->removeSpell(5570, false);
  306. player->removeSpell(50516, false);
  307. player->learnSpell(50464, false);
  308. player->learnSpell(8936, false);
  309. break;
  310. }
  311. player->CLOSE_GOSSIP_MENU();
  312. }
  313. return true;
  314. }
  315. };
  316.  
  317. void AddSC_Talent_Chooser() {
  318. new Talent_Chooser();
  319. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement