Advertisement
Guest User

Untitled

a guest
Jul 21st, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.39 KB | None | 0 0
  1. #include "ScriptPCH.h"
  2. #include "Config.h"
  3. #include <stdio.h>
  4. #include <sstream>
  5.  
  6. #define GOSSIP_SENDER_MAIN 1000
  7. #define GOSSIP_SMALLBUFF 2000
  8. #define GOSSIP_LARGEBUFF 3000
  9. #define GOSSIP_GMBUFF 4000
  10. #define GOSSIP_PLAYERTOOLS 5000
  11.  
  12. #define SPELL_RESURRECTION_SICKNESS_15007 15007
  13.  
  14. #define NB_BUFF_PAGE 10
  15. #define MSG_TYPE 100002
  16. #define MSG_BUFF 100003
  17.  
  18. #define NEXT_PAGE "-> [Next Page]"
  19. #define PREV_PAGE "<- [Previous Page]"
  20. #define MAIN_MENU "<= [Main Menu]"
  21.  
  22. class npc_buff : public CreatureScript
  23. {
  24. public:
  25. npc_buff() : CreatureScript("npc_buff") {}
  26.  
  27. bool OnGossipHello(Player* pPlayer, Creature* pCreature)
  28. {
  29. if(sConfig->GetBoolDefault("Npc_Buff.OnlyGMs", false)) // If Npc_Buff.OnlyGMs is enabled in worldserver.conf
  30. if (pPlayer->GetSession()->GetSecurity() == SEC_PLAYER)
  31. {
  32. pCreature->MonsterWhisper("Sorry, I can only Buff Platinum Members.", pPlayer->GetGUID());
  33. return true;
  34. }
  35.  
  36. bool EnableSmallBuff = sConfig->GetBoolDefault("Npc_Buff.EnableSmallBuff", true);
  37. bool EnableGreatBuff = sConfig->GetBoolDefault("Npc_Buff.EnableGreatBuff", true);
  38. bool EnableGMBuff = sConfig->GetBoolDefault("Npc_Buff.EnableGMBuff", true);
  39. bool EnablePlayerTools = sConfig->GetBoolDefault("Npc_Buff.EnablePlayerTools", true);
  40. bool EnableResSickness = sConfig->GetBoolDefault("Npc_Buff.EnableRemoveResSickness", true);
  41. bool EnableGivemeGold = sConfig->GetBoolDefault("Npc_Buff.EnableGivemeGold", false);
  42.  
  43. // Main Menu
  44.  
  45. // Check config if "Small Buff " is enabled or not
  46. if(EnableSmallBuff)
  47. pPlayer->ADD_GOSSIP_ITEM( 7, "Small Buff ->" , GOSSIP_SENDER_MAIN, 1000);
  48. // Check config if "Great Buff" is enabled or not
  49. if(EnableGreatBuff)
  50. pPlayer->ADD_GOSSIP_ITEM( 7, "Great Buff ->" , GOSSIP_SENDER_MAIN, 2000);
  51. // Check config if "GM Buff" is enabled or not
  52. if(EnableGMBuff)
  53. pPlayer->ADD_GOSSIP_ITEM( 7, "GM Buff ->" , GOSSIP_SENDER_MAIN, 3000);
  54. // Check config if "Player Tools" is enabled or not
  55. if(EnablePlayerTools)
  56. pPlayer->ADD_GOSSIP_ITEM( 7, "Player Tools ->" , GOSSIP_SENDER_MAIN, 4000);
  57.  
  58. // Check config file if "Remove res sickness" option is enabled or not
  59. if(EnableResSickness)
  60. pPlayer->ADD_GOSSIP_ITEM( 10, "Remove Resurrect Sickness" , GOSSIP_SENDER_MAIN, 5000);
  61.  
  62. pPlayer->SEND_GOSSIP_MENU(MSG_TYPE, pCreature->GetGUID());
  63.  
  64. return true;
  65. }
  66.  
  67. bool showSmallBuff(Player *pPlayer, Creature *pCreature, uint32 showFromId = 0)
  68. {
  69. //show not occupied guildhouses
  70.  
  71. QueryResult result;
  72. result = WorldDatabase.PQuery("SELECT `name`, `cat_number` FROM `npc_buff_spells` WHERE `cat_number` < 2000 ORDER BY `cat_number` ASC LIMIT %u",
  73. NB_BUFF_PAGE);
  74.  
  75. if (result)
  76. {
  77. std::string name = "";
  78. uint32 catNumber = 0;
  79. do
  80. {
  81. Field *fields = result->Fetch();
  82. name = fields[0].GetString();
  83. catNumber = fields[1].GetInt32();
  84.  
  85. pPlayer->ADD_GOSSIP_ITEM(9, name, GOSSIP_SENDER_MAIN, catNumber);
  86. }
  87. while (result->NextRow());
  88.  
  89. pPlayer->SEND_GOSSIP_MENU(MSG_BUFF, pCreature->GetGUID());
  90. return true;
  91. }
  92. else
  93. {
  94. if (showFromId = 0)
  95. {
  96. //all guildhouses are occupied
  97. pCreature->MonsterWhisper("You don't have enough money.", pPlayer->GetGUID());
  98. pPlayer->CLOSE_GOSSIP_MENU();
  99. }
  100. else
  101. {
  102. //this condition occurs when COUNT(guildhouses) % GOSSIP_COUNT_MAX == 0
  103. //just show GHs from beginning
  104. showSmallBuff(pPlayer, pCreature, 0);
  105. }
  106. }
  107.  
  108. return false;
  109. }
  110.  
  111. bool showGreatBuff(Player *pPlayer, Creature *pCreature, uint32 showFromId = 0)
  112. {
  113. //show not occupied guildhouses
  114.  
  115. QueryResult result;
  116. result = WorldDatabase.PQuery("SELECT `name`, `cat_number` FROM `npc_buff_spells` WHERE `cat_number` < 3000 AND `cat_number` > 2000 ORDER BY `cat_number` ASC LIMIT %u",
  117. NB_BUFF_PAGE);
  118.  
  119. if (result)
  120. {
  121. std::string name = "";
  122. uint32 catNumber = 0;
  123. do
  124. {
  125. Field *fields = result->Fetch();
  126. name = fields[0].GetString();
  127. catNumber = fields[1].GetInt32();
  128.  
  129. pPlayer->ADD_GOSSIP_ITEM(9, name, GOSSIP_SENDER_MAIN, catNumber);
  130. }
  131. while (result->NextRow());
  132.  
  133. pPlayer->SEND_GOSSIP_MENU(MSG_BUFF, pCreature->GetGUID());
  134. return true;
  135. }
  136. else
  137. {
  138. if (showFromId = 0)
  139. {
  140. //all guildhouses are occupied
  141. pCreature->MonsterWhisper("You don't have enough money.", pPlayer->GetGUID());
  142. pPlayer->CLOSE_GOSSIP_MENU();
  143. }
  144. else
  145. {
  146. //this condition occurs when COUNT(guildhouses) % GOSSIP_COUNT_MAX == 0
  147. //just show GHs from beginning
  148. showGreatBuff(pPlayer, pCreature, 0);
  149. }
  150. }
  151.  
  152. return false;
  153. }
  154.  
  155. bool showGmBuff(Player *pPlayer, Creature *pCreature, uint32 showFromId = 0)
  156. {
  157. //show not occupied guildhouses
  158.  
  159. QueryResult result;
  160. result = WorldDatabase.PQuery("SELECT `name`, `cat_number` FROM `npc_buff_spells` WHERE `cat_number` < 4000 AND `cat_number` > 3000 ORDER BY `cat_number` ASC LIMIT %u",
  161. NB_BUFF_PAGE);
  162.  
  163. if (result)
  164. {
  165. std::string name = "";
  166. uint32 catNumber = 0;
  167. do
  168. {
  169. Field *fields = result->Fetch();
  170. name = fields[0].GetString();
  171. catNumber = fields[1].GetInt32();
  172.  
  173. pPlayer->ADD_GOSSIP_ITEM(9, name, GOSSIP_SENDER_MAIN, catNumber);
  174. }
  175. while (result->NextRow());
  176.  
  177. pPlayer->SEND_GOSSIP_MENU(MSG_BUFF, pCreature->GetGUID());
  178. return true;
  179. }
  180. else
  181. {
  182. if (showFromId = 0)
  183. {
  184. //all guildhouses are occupied
  185. pCreature->MonsterWhisper("You don't have enough money.", pPlayer->GetGUID());
  186. pPlayer->CLOSE_GOSSIP_MENU();
  187. }
  188. else
  189. {
  190. //this condition occurs when COUNT(guildhouses) % GOSSIP_COUNT_MAX == 0
  191. //just show GHs from beginning
  192. showGmBuff(pPlayer, pCreature, 0);
  193. }
  194. }
  195.  
  196. return false;
  197. }
  198.  
  199. bool showPlayerTools(Player *pPlayer, Creature *pCreature, uint32 showFromId = 0)
  200. {
  201. //show not occupied guildhouses
  202.  
  203. QueryResult result;
  204. result = WorldDatabase.PQuery("SELECT `name`, `cat_number` FROM `npc_buff_spells` WHERE `cat_number` < 5000 AND `cat_number` > 4000 ORDER BY `cat_number` ASC LIMIT %u",
  205. NB_BUFF_PAGE);
  206.  
  207. if (result)
  208. {
  209. std::string name = "";
  210. uint32 catNumber = 0;
  211. do
  212. {
  213. Field *fields = result->Fetch();
  214. name = fields[0].GetString();
  215. catNumber = fields[1].GetInt32();
  216.  
  217. pPlayer->ADD_GOSSIP_ITEM(9, name, GOSSIP_SENDER_MAIN, catNumber);
  218. }
  219. while (result->NextRow());
  220.  
  221. pPlayer->SEND_GOSSIP_MENU(MSG_BUFF, pCreature->GetGUID());
  222. return true;
  223. }
  224. else
  225. {
  226. if (showFromId = 0)
  227. {
  228. //all guildhouses are occupied
  229. pCreature->MonsterWhisper("You don't have enough money.", pPlayer->GetGUID());
  230. pPlayer->CLOSE_GOSSIP_MENU();
  231. }
  232. else
  233. {
  234. //this condition occurs when COUNT(guildhouses) % GOSSIP_COUNT_MAX == 0
  235. //just show GHs from beginning
  236. showPlayerTools(pPlayer, pCreature, 0);
  237. }
  238. }
  239.  
  240. return false;
  241. }
  242.  
  243. void SendDefaultMenu(Player* pPlayer, Creature* pCreature, uint32 uiAction)
  244. {
  245.  
  246. // Not allow in combat
  247. if (pPlayer->isInCombat())
  248. {
  249. pPlayer->CLOSE_GOSSIP_MENU();
  250. pCreature->MonsterSay("You are in combat!", LANG_UNIVERSAL, NULL);
  251. return;
  252. }
  253.  
  254. bool EnableSmallBuff = sConfig->GetBoolDefault("Npc_Buff.EnableSmallBuff", true);
  255. bool EnableGreatBuff = sConfig->GetBoolDefault("Npc_Buff.EnableGreatBuff", true);
  256. bool EnableGMBuff = sConfig->GetBoolDefault("Npc_Buff.EnableGMBuff", true);
  257. bool EnablePlayerTools = sConfig->GetBoolDefault("Npc_Buff.EnablePlayerTools", true);
  258. bool EnableResSickness = sConfig->GetBoolDefault("Npc_Buff.EnableRemoveResSickness", true);
  259. bool EnableGivemeGold = sConfig->GetBoolDefault("Npc_Buff.EnableGivemeGold", false);
  260.  
  261. //Money Check
  262. if (pPlayer->GetMoney() < (sConfig->GetFloatDefault("BuffGoldCost",0)))
  263. {
  264. pPlayer->CLOSE_GOSSIP_MENU();
  265. pCreature->MonsterWhisper("You don't have enough money.", pPlayer->GetGUID());
  266. return;
  267. }
  268.  
  269.  
  270. // send name as gossip item
  271.  
  272. switch(uiAction)
  273. {
  274.  
  275. case 1000: //Small Buff
  276. showSmallBuff(pPlayer, pCreature, 0);
  277. pPlayer->ADD_GOSSIP_ITEM( 7, "<- Main Menu" , GOSSIP_SENDER_MAIN, 5005);
  278.  
  279. pPlayer->SEND_GOSSIP_MENU(MSG_BUFF, pCreature->GetGUID());
  280. break;
  281.  
  282. case 2000: //Great Buff
  283.  
  284.  
  285. showGreatBuff(pPlayer, pCreature, 0);
  286. pPlayer->ADD_GOSSIP_ITEM( 7, "<- Main Menu" , GOSSIP_SENDER_MAIN, 5005);
  287.  
  288. pPlayer->SEND_GOSSIP_MENU(MSG_BUFF, pCreature->GetGUID());
  289. break;
  290.  
  291. case 3000: //GM Buff
  292.  
  293.  
  294. showGmBuff(pPlayer, pCreature, 0);
  295. pPlayer->ADD_GOSSIP_ITEM( 7, "<- Main Menu" , GOSSIP_SENDER_MAIN, 5005);
  296.  
  297. pPlayer->SEND_GOSSIP_MENU(MSG_BUFF,pCreature->GetGUID());
  298. break;
  299.  
  300. case 4000: //Player Tools
  301. // Check config if "Give me Gold" is enabled or not
  302. if(EnableGivemeGold)
  303. pPlayer->ADD_GOSSIP_ITEM( 5, "Give me Gold" , GOSSIP_SENDER_MAIN, 4001);
  304. showPlayerTools(pPlayer, pCreature, 0);
  305. pPlayer->ADD_GOSSIP_ITEM( 7, "<- Main Menu" , GOSSIP_SENDER_MAIN, 5005);
  306.  
  307. pPlayer->SEND_GOSSIP_MENU(MSG_BUFF,pCreature->GetGUID());
  308. break;
  309.  
  310. case 5005: //Back To Main Menu
  311. // Main Menu
  312. // Check config if "Small Buff " is enabled or not
  313. if(EnableSmallBuff)
  314. pPlayer->ADD_GOSSIP_ITEM( 7, "Small Buff ->" , GOSSIP_SMALLBUFF, 0);
  315. // Check config if "Great Buff" is enabled or not
  316. if(EnableGreatBuff)
  317. pPlayer->ADD_GOSSIP_ITEM( 7, "Great Buff ->" , GOSSIP_LARGEBUFF, 0);
  318. // Check config if "GM Buff" is enabled or not
  319. if(EnableGMBuff)
  320. pPlayer->ADD_GOSSIP_ITEM( 7, "GM Buff ->" , GOSSIP_GMBUFF, 0);
  321. // Check config if "Player Tools" is enabled or not
  322. if(EnablePlayerTools)
  323. pPlayer->ADD_GOSSIP_ITEM( 7, "Player Tools ->" , GOSSIP_PLAYERTOOLS, 0);
  324. // Check if Ress Sickness option is enabled
  325. if(EnableResSickness)
  326. pPlayer->ADD_GOSSIP_ITEM( 10, "Remove Resurrect Sickness" , GOSSIP_SENDER_MAIN, 5000);
  327.  
  328. pPlayer->SEND_GOSSIP_MENU(MSG_TYPE, pCreature->GetGUID());
  329. break;
  330.  
  331. //////////////////////////////////////////////////Small Buff///////////////////////////////////////////////////////////////
  332.  
  333. case 1001: // Buff me Mark of the Wild
  334. pPlayer->CLOSE_GOSSIP_MENU();
  335. pCreature->CastSpell(pPlayer,48469,false);
  336. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  337. break;
  338.  
  339. case 1002: // Buff me Thorns
  340. pPlayer->CLOSE_GOSSIP_MENU();
  341. pCreature->CastSpell(pPlayer,53307,false);
  342. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  343. break;
  344.  
  345. case 1003: // Buff me Amplify Magic
  346. pPlayer->CLOSE_GOSSIP_MENU();
  347. pCreature->CastSpell(pPlayer,43017,false);
  348. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  349. break;
  350.  
  351. case 1004: // Buff me Arcane Intellect
  352. pPlayer->CLOSE_GOSSIP_MENU();
  353. pCreature->CastSpell(pPlayer,42995,false);
  354. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  355. break;
  356.  
  357. case 1005: // Buff me Dalaran Intellect
  358. pPlayer->CLOSE_GOSSIP_MENU();
  359. pCreature->CastSpell(pPlayer,61024,false);
  360. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  361. break;
  362.  
  363. case 1006: // Buff me Dampen Magic
  364. pPlayer->CLOSE_GOSSIP_MENU();
  365. pCreature->CastSpell(pPlayer,43015,false);
  366. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  367. break;
  368.  
  369. case 1007: // Buff me Blessing of Kings
  370. pPlayer->CLOSE_GOSSIP_MENU();
  371. pCreature->CastSpell(pPlayer,20217,false);
  372. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  373. break;
  374.  
  375. case 1008: // Buff me Blessing of Might
  376. pPlayer->CLOSE_GOSSIP_MENU();
  377. pCreature->CastSpell(pPlayer,48932,false);
  378. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  379. break;
  380.  
  381. case 1009: // Buff me Blessing of Wisdom
  382. pPlayer->CLOSE_GOSSIP_MENU();
  383. pCreature->CastSpell(pPlayer,48936,false);
  384. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  385. break;
  386.  
  387. case 1010: // Buff me Divine Spirit
  388. pPlayer->CLOSE_GOSSIP_MENU();
  389. pCreature->CastSpell(pPlayer,48073,false);
  390. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  391. break;
  392.  
  393. case 1011: // Buff me Power Word: Fortitude
  394. pPlayer->CLOSE_GOSSIP_MENU();
  395. pCreature->CastSpell(pPlayer,48161,false);
  396. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  397. break;
  398.  
  399. case 1012: // Buff me Shadow Protection
  400. pPlayer->CLOSE_GOSSIP_MENU();
  401. pCreature->CastSpell(pPlayer,48169,false);
  402. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  403. break;
  404.  
  405. //////////////////////////////////////////////////Great Buff///////////////////////////////////////////////////////////////
  406.  
  407. case 2001: // Buff me Gift of the Wild
  408. pPlayer->CLOSE_GOSSIP_MENU();
  409. pPlayer->CastSpell(pPlayer,48470,true);
  410. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  411. break;
  412.  
  413. case 2002: // Buff me Arcane Brilliance
  414. pPlayer->CLOSE_GOSSIP_MENU();
  415. pPlayer->CastSpell(pPlayer,43002,true);
  416. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  417. break;
  418.  
  419. case 2003: // Buff me Dalaran Brilliance
  420. pPlayer->CLOSE_GOSSIP_MENU();
  421. pPlayer->CastSpell(pPlayer,61316,true);
  422. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  423. break;
  424.  
  425. case 2004: // Buff me Greater Blessing of Kings
  426. pPlayer->CLOSE_GOSSIP_MENU();
  427. pCreature->CastSpell(pPlayer,25898,false);
  428. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  429. break;
  430.  
  431. case 2005: // Buff me Greater Blessing of Might
  432. pPlayer->CLOSE_GOSSIP_MENU();
  433. pCreature->CastSpell(pPlayer,48934,false);
  434. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  435. break;
  436.  
  437. case 2006: // Buff me Greater Blessing of Sanctuary
  438. pPlayer->CLOSE_GOSSIP_MENU();
  439. pCreature->CastSpell(pPlayer,25899,false);
  440. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  441. break;
  442.  
  443. case 2007: // Buff me Greater Blessing of Wisdom
  444. pPlayer->CLOSE_GOSSIP_MENU();
  445. pCreature->CastSpell(pPlayer,48938,false);
  446. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  447. break;
  448.  
  449. case 2008: // Buff me Prayer of Fortitude
  450. pPlayer->CLOSE_GOSSIP_MENU();
  451. pPlayer->CastSpell(pPlayer,48162,true);
  452. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  453. break;
  454.  
  455. case 2009: // Buff me Prayer of Shadow Protection
  456. pPlayer->CLOSE_GOSSIP_MENU();
  457. pPlayer->CastSpell(pPlayer,48170,true);
  458. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  459. break;
  460.  
  461. case 2010: // Buff me Prayer of Spirit
  462. pPlayer->CLOSE_GOSSIP_MENU();
  463. pPlayer->CastSpell(pPlayer,48074,true);
  464. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  465. break;
  466.  
  467. //////////////////////////////////////////////////GM Buff///////////////////////////////////////////////////////////////
  468.  
  469. case 3001: // Buff me Agamaggan's Agility
  470. pPlayer->CLOSE_GOSSIP_MENU();
  471. pCreature->CastSpell(pPlayer,17013,false);
  472. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  473. break;
  474.  
  475. case 3002: // Buff me Agamaggan's Strength
  476. pPlayer->CLOSE_GOSSIP_MENU();
  477. pCreature->CastSpell(pPlayer,16612,false);
  478. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  479. break;
  480.  
  481. case 3003: // Buff me Armor Magic
  482. pPlayer->CLOSE_GOSSIP_MENU();
  483. pCreature->CastSpell(pPlayer,58453,false);
  484. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  485. break;
  486.  
  487. case 3004: // Buff me Armor Penetration
  488. pPlayer->CLOSE_GOSSIP_MENU();
  489. pPlayer->CastSpell(pPlayer,34106,false);
  490. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  491. break;
  492.  
  493. case 3005: // Buff me Increased Stamina
  494. pPlayer->CLOSE_GOSSIP_MENU();
  495. pPlayer->CastSpell(pPlayer,25661,false);
  496. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  497. break;
  498.  
  499. case 3006: // Buff me Razorhide
  500. pPlayer->CLOSE_GOSSIP_MENU();
  501. pCreature->CastSpell(pPlayer,16610,false);
  502. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  503. break;
  504.  
  505. case 3007: // Buff me Rising Spirit
  506. pPlayer->CLOSE_GOSSIP_MENU();
  507. pCreature->CastSpell(pPlayer,10767,false);
  508. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  509. break;
  510.  
  511. case 3008: // Buff me Spirit of the Wind
  512. pPlayer->CLOSE_GOSSIP_MENU();
  513. pCreature->CastSpell(pPlayer,16618,false);
  514. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  515. break;
  516.  
  517. case 3009: // Buff me Wisdom of Agamaggan
  518. pPlayer->CLOSE_GOSSIP_MENU();
  519. pCreature->CastSpell(pPlayer,7764,false);
  520. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  521. break;
  522.  
  523. //////////////////////////////////////////////////Player Tools///////////////////////////////////////////////////////////////
  524.  
  525. case 4001://Give me Gold
  526. pPlayer->CLOSE_GOSSIP_MENU();
  527. pCreature->CastSpell(pPlayer,46642,false); // 5000 gold
  528. break;
  529.  
  530. case 4002://Give me Soul Shards
  531. pPlayer->CLOSE_GOSSIP_MENU();
  532. pPlayer->CastSpell(pPlayer,24827,false);
  533. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  534. break;
  535.  
  536. case 4003: // Heal me please
  537. pPlayer->CLOSE_GOSSIP_MENU();
  538. pCreature->CastSpell(pPlayer,38588,false);
  539. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  540. break;
  541.  
  542. case 4004: // Heal me and party members Please
  543. pPlayer->CLOSE_GOSSIP_MENU();
  544. pPlayer->CastSpell(pPlayer,53251,false);
  545. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  546. break;
  547.  
  548. case 4005: // Conjure Refreshment
  549. pPlayer->CLOSE_GOSSIP_MENU();
  550. pPlayer->CastSpell(pPlayer,42956,false);
  551. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  552. break;
  553.  
  554. case 4006: // Conjure Mana Gem
  555. pPlayer->CLOSE_GOSSIP_MENU();
  556. pPlayer->CastSpell(pPlayer,42985,false);
  557. pPlayer->ModifyMoney(-(sConfig->GetFloatDefault("BuffGoldCost",0)));
  558. break;
  559.  
  560. case 5000://Remove Res Sickness
  561. if(!pPlayer->HasAura(SPELL_RESURRECTION_SICKNESS_15007,0))
  562. {
  563. pCreature->MonsterWhisper("You don't have resurrection sickness.", pPlayer->GetGUID());
  564. OnGossipHello(pPlayer, pCreature);
  565. return;
  566. }
  567.  
  568. pCreature->CastSpell(pPlayer,38588,false); // Healing effect
  569. pPlayer->RemoveAurasDueToSpell(SPELL_RESURRECTION_SICKNESS_15007,0);
  570. pPlayer->CLOSE_GOSSIP_MENU();
  571. break;
  572.  
  573. pPlayer->CLOSE_GOSSIP_MENU();
  574.  
  575. } // end of switch
  576. } //end of function
  577.  
  578. bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction)
  579. {
  580. // Main menu
  581. pPlayer->PlayerTalkClass->ClearMenus();
  582. if (uiSender == GOSSIP_SENDER_MAIN)
  583. SendDefaultMenu(pPlayer, pCreature, uiAction);
  584.  
  585. return true;
  586. }
  587. };
  588. void AddSC_Npc_Buff()
  589. {
  590. new npc_buff();
  591. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement