Advertisement
Guest User

Untitled

a guest
Jul 20th, 2019
235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 25.22 KB | None | 0 0
  1. #include "ScriptMgr.h"
  2. #include "Cell.h"
  3. #include "CellImpl.h"
  4. #include "GameEventMgr.h"
  5. #include "GridNotifiers.h"
  6. #include "GridNotifiersImpl.h"
  7. #include "Unit.h"
  8. #include "GameObject.h"
  9. #include "ScriptedCreature.h"
  10. #include "ScriptedGossip.h"
  11. #include "InstanceScript.h"
  12. #include "CombatAI.h"
  13. #include "PassiveAI.h"
  14. #include "Chat.h"
  15. #include "DBCStructure.h"
  16. #include "DBCStores.h"
  17. #include "ObjectMgr.h"
  18. #include "SpellScript.h"
  19. #include "SpellAuraEffects.h"
  20.  
  21.  
  22. class donate_shop : public CreatureScript
  23. {
  24. public:
  25. donate_shop() : CreatureScript("donate_shop") {}
  26.  
  27. void ClearGossipMenuFor(Player* player)
  28. {
  29. player->PlayerTalkClass->ClearMenus();
  30. }
  31. void AddGossipItemFor(Player* player, uint32 menuid, std::string const& message, uint32 sender, uint32 action)
  32. {
  33. player->ADD_GOSSIP_ITEM(menuid, message, sender, action);
  34. }
  35. void AddGossipItemFor(Player* player, uint32 menuid, std::string const& message, uint32 sender, uint32 action, std::string const & boxMessage, uint32 boxmoney, bool coded)
  36. {
  37. player->ADD_GOSSIP_ITEM_EXTENDED(menuid, message, sender, action, boxMessage, boxmoney, coded);
  38. }
  39. void SendGossipMenuFor(Player* player, uint32 titletextid, ObjectGuid objectguid)
  40. {
  41. player->PlayerTalkClass->SendGossipMenu(titletextid, objectguid);
  42. }
  43. void RewardItem(Player* player, Creature* pCreature, int item, int count, int cost)
  44. {
  45.  
  46. {
  47. if (player->AddItem(item, count))
  48. {
  49. std::string DateTime = "%Y-%m-%d %H:%M:%S";
  50. ItemTemplate const* itemTemplate = sObjectMgr->GetItemTemplate(item);
  51. LoginDatabase.PQuery("UPDATE newsites.account_data set dp = dp - %u WHERE id = %u", cost, player->GetSession()->GetAccountId());
  52. std::ostringstream ss;
  53. ss << "Your points are taken and your item is given!!!";
  54. ChatHandler(player->GetSession()).PSendSysMessage(ss.str().c_str());
  55. player->SaveToDB();
  56. }
  57. else
  58. {
  59. std::ostringstream ss;
  60. ss << "Item can't be given maybe your bag is full or you already got the item!";
  61. ChatHandler(player->GetSession()).PSendSysMessage(ss.str().c_str());
  62. }
  63.  
  64.  
  65.  
  66. }
  67.  
  68. ClearGossipMenuFor(player);
  69. OnGossipHello(player, pCreature);
  70. }
  71.  
  72. bool HasCheatCooldown(Player* player)
  73. {
  74. if (player->GetSession()->GetPlayer()->GetCommandStatus(CHEAT_COOLDOWN))
  75. return true;
  76. return false;
  77. }
  78. bool HasCheatCasttime(Player* player)
  79. {
  80.  
  81. if (player->GetSession()->GetPlayer()->GetCommandStatus(CHEAT_CASTTIME))
  82. return true;
  83. return false;
  84. }
  85. bool HasCheatPower(Player* player)
  86. {
  87.  
  88. if (player->GetSession()->GetPlayer()->GetCommandStatus(CHEAT_POWER))
  89. return true;
  90. return false;
  91. }
  92.  
  93. bool OnGossipHello(Player* player, Creature* pCreature)
  94. {
  95.  
  96. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Get a preview of the donor items", GOSSIP_SENDER_MAIN, 9998);
  97. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Donor Weapons", GOSSIP_SENDER_MAIN, 2000);
  98. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Donor Set - 150 DP", GOSSIP_SENDER_MAIN, 12000);
  99. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Donor Offset - 60 DP", GOSSIP_SENDER_MAIN, 305);
  100. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Armors", GOSSIP_SENDER_MAIN, 300);
  101. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Rings/Trinkets/Amulets", GOSSIP_SENDER_MAIN, 3000);
  102. AddGossipItemFor(player, GOSSIP_ICON_DOT, "FROSTMOURNE - 100 DP", GOSSIP_SENDER_MAIN, 9997);
  103. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Special Items", GOSSIP_SENDER_MAIN, 5000);
  104. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Special Tokens", GOSSIP_SENDER_MAIN, 4000);
  105. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Upgrade Vote Mark 10x - 1 DP", GOSSIP_SENDER_MAIN, 4005);
  106. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Cataclysm Transmog Token 500x - 50 DP", GOSSIP_SENDER_MAIN, 5200);
  107.  
  108. SendGossipMenuFor(player, 85002, pCreature->GetGUID());
  109.  
  110. return true;
  111. }
  112.  
  113. bool OnGossipSelect(Player* player, Creature* pCreature, uint32 /*uiSender*/, uint32 uiAction)
  114. {
  115. ClearGossipMenuFor(player);
  116.  
  117. switch (uiAction)
  118. {
  119. case 5400:
  120. ClearGossipMenuFor(player);
  121. if (!HasCheatCooldown(player))
  122. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Cooldown Cheat - 15 DP", GOSSIP_SENDER_MAIN, 5401);
  123. if (!HasCheatCasttime(player))
  124. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Casttime Cheat - 15 DP", GOSSIP_SENDER_MAIN, 5402);
  125. if (!HasCheatPower(player))
  126. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Power Cheat - 10 DP", GOSSIP_SENDER_MAIN, 5403);
  127. AddGossipItemFor(player, GOSSIP_ICON_DOT, "[Main Menu]", GOSSIP_SENDER_MAIN, 9999);
  128. SendGossipMenuFor(player, 85002, pCreature->GetGUID());
  129. return true;
  130. break;
  131. case 5401:
  132. RewardItem(player, pCreature, 24, 1, 15);
  133. break;
  134. case 5402:
  135. RewardItem(player, pCreature, 25, 1, 15);
  136. break;
  137. case 5403:
  138. RewardItem(player, pCreature, 26, 1, 10);
  139. break;
  140. case 5200:
  141. RewardItem(player, pCreature, 26045, 5000, 50);
  142. break;
  143. case 5300:
  144. RewardItem(player, pCreature, 37298, 1, 10);
  145. break;
  146. case 5100:
  147. RewardItem(player, pCreature, 29765, 3, 5);
  148. break;
  149. case 300:
  150. ClearGossipMenuFor(player);
  151. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Donors Cloak - 15 DP", GOSSIP_SENDER_MAIN, 301);
  152. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Donors Tabard - 20 DP", GOSSIP_SENDER_MAIN, 302);
  153. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Donors Bag - 5 DP", GOSSIP_SENDER_MAIN, 303);
  154. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Donors Quiver - 5 DP", GOSSIP_SENDER_MAIN, 1303);
  155. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Donors Shield - 15 DP", GOSSIP_SENDER_MAIN, 304);
  156. AddGossipItemFor(player, GOSSIP_ICON_DOT, "[Main Menu]", GOSSIP_SENDER_MAIN, 9999);
  157. SendGossipMenuFor(player, 85002, pCreature->GetGUID());
  158. return true;
  159. break;
  160. case 1303:
  161. if (player->getClass() != CLASS_HUNTER) {
  162.  
  163. std::ostringstream ss;
  164. ss << "Your not a Hunter, so you cant buy this item!";
  165. ChatHandler(player->GetSession()).PSendSysMessage(ss.str().c_str());
  166. player->PlayerTalkClass->SendCloseGossip();
  167. }
  168. else {
  169. RewardItem(player, pCreature, 7278, 1, 10);
  170. player->PlayerTalkClass->SendCloseGossip();
  171. }
  172. break;
  173. case 12:
  174. RewardItem(player, pCreature, 24368, 1, 20);
  175. break;
  176. case 301:
  177. RewardItem(player, pCreature, 21394, 1, 15);
  178. break;
  179. case 302:
  180. RewardItem(player, pCreature, 20131, 1, 20);
  181. break;
  182. case 303:
  183. RewardItem(player, pCreature, 20400, 1, 5);
  184. break;
  185. case 304:
  186. RewardItem(player, pCreature, 34185, 1, 15);
  187. break;
  188. case 305: // invincible off set
  189. switch (player->getClass())
  190. {
  191. case CLASS_WARRIOR:
  192. RewardItem(player, pCreature, 66073, 1, 60);
  193. break;
  194. case CLASS_PALADIN:
  195. RewardItem(player, pCreature, 66077, 1, 60);
  196. break;
  197. case CLASS_HUNTER:
  198. RewardItem(player, pCreature, 66071, 1, 60);
  199. break;
  200. case CLASS_ROGUE:
  201. RewardItem(player, pCreature, 66072, 1, 60);
  202. break;
  203. case CLASS_PRIEST:
  204. RewardItem(player, pCreature, 66074, 1, 60);
  205. break;
  206. case CLASS_DEATH_KNIGHT:
  207. RewardItem(player, pCreature, 66070, 1, 60);
  208. break;
  209. case CLASS_SHAMAN:
  210. RewardItem(player, pCreature, 66078, 1, 60);
  211. break;
  212. case CLASS_MAGE:
  213. RewardItem(player, pCreature, 66079, 1, 60);
  214. break;
  215. case CLASS_WARLOCK:
  216. RewardItem(player, pCreature, 66076, 1, 60);
  217. break;
  218. case CLASS_DRUID:
  219. RewardItem(player, pCreature, 66075, 1, 60);
  220. break;
  221.  
  222. default: break;
  223. }
  224. break;
  225. case 1000:
  226. RewardItem(player, pCreature, 0, 0, 0);
  227. break;
  228. case 2000:
  229. ClearGossipMenuFor(player);
  230. AddGossipItemFor(player, GOSSIP_ICON_DOT, "One-Handed Weapons", GOSSIP_SENDER_MAIN, 2001);
  231. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Two-Handed Weapons", GOSSIP_SENDER_MAIN, 2002);
  232. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Staves", GOSSIP_SENDER_MAIN, 2003);
  233. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Ranged", GOSSIP_SENDER_MAIN, 2004);
  234. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Off-Hand Weapons", GOSSIP_SENDER_MAIN, 2005);
  235. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Main-Hand Weapons", GOSSIP_SENDER_MAIN, 2006);
  236. AddGossipItemFor(player, GOSSIP_ICON_DOT, "[Main Menu]", GOSSIP_SENDER_MAIN, 9999);
  237. SendGossipMenuFor(player, 85002, pCreature->GetGUID());
  238. return true;
  239. break;
  240. case 2001:
  241. ClearGossipMenuFor(player);
  242. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Donors Sword - 15 DP", GOSSIP_SENDER_MAIN, 2101);
  243. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Donors Dagger - 15 DP", GOSSIP_SENDER_MAIN, 2102);
  244. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Donors Axe - 15 DP", GOSSIP_SENDER_MAIN, 2103);
  245. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Donors Mace - 15 DP", GOSSIP_SENDER_MAIN, 2104);
  246. AddGossipItemFor(player, GOSSIP_ICON_DOT, "[Main Menu]", GOSSIP_SENDER_MAIN, 9999);
  247. SendGossipMenuFor(player, 85002, pCreature->GetGUID());
  248. return true;
  249. break;
  250. case 2101:
  251. RewardItem(player, pCreature, 50672, 1, 25);
  252. break;
  253. case 2102:
  254. if (player->getClass() != CLASS_ROGUE) {
  255. std::ostringstream ss;
  256. ss << "Your not a Rogue, so you cant buy this item!";
  257. ChatHandler(player->GetSession()).PSendSysMessage(ss.str().c_str());
  258. player->PlayerTalkClass->SendCloseGossip();
  259. }
  260. else {
  261. RewardItem(player, pCreature, 32044, 1, 25);
  262. }
  263. break;
  264. case 2103:
  265. RewardItem(player, pCreature, 50759, 1, 25);
  266. break;
  267. case 2104:
  268. RewardItem(player, pCreature, 46017, 1, 25);
  269. break;
  270. case 2002:
  271. ClearGossipMenuFor(player);
  272. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Donors Two-Hand Sword - 30 DP", GOSSIP_SENDER_MAIN, 2201);
  273. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Donors Two-Hand Axe - 30 DP", GOSSIP_SENDER_MAIN, 2202);
  274. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Donors Two-Hand Mace - 30 DP", GOSSIP_SENDER_MAIN, 2203);
  275. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Hunters Two-Hand Polearm - 30 DP", GOSSIP_SENDER_MAIN, 2204);
  276. AddGossipItemFor(player, GOSSIP_ICON_DOT, "[Main Menu]", GOSSIP_SENDER_MAIN, 9999);
  277. SendGossipMenuFor(player, 85002, pCreature->GetGUID());
  278. return true;
  279. break;
  280. case 2201:
  281. RewardItem(player, pCreature, 50761, 1, 30);
  282. break;
  283. case 2202:
  284. RewardItem(player, pCreature, 49623, 1, 30);
  285. break;
  286. case 2203:
  287. RewardItem(player, pCreature, 33663, 1, 30);
  288. break;
  289. case 2204:
  290. if (player->getClass() != CLASS_HUNTER) {
  291. std::ostringstream ss;
  292. ss << "Your not a Hunter, so you cant buy this item!";
  293. ChatHandler(player->GetSession()).PSendSysMessage(ss.str().c_str());
  294. player->PlayerTalkClass->SendCloseGossip();
  295. }
  296. else {
  297. RewardItem(player, pCreature, 50425, 1, 30);
  298. player->PlayerTalkClass->SendCloseGossip();
  299. }
  300. break;
  301. case 2003:
  302. ClearGossipMenuFor(player);
  303. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Donors Staff - 20 DP", GOSSIP_SENDER_MAIN, 2301);
  304. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Donors Feral Staff - 20 DP", GOSSIP_SENDER_MAIN, 2302);
  305. AddGossipItemFor(player, GOSSIP_ICON_DOT, "[Main Menu]", GOSSIP_SENDER_MAIN, 9999);
  306. SendGossipMenuFor(player, 85002, pCreature->GetGUID());
  307. return true;
  308. break;
  309. case 2301:
  310. if (player->getClass() == CLASS_PALADIN || player->getClass() == CLASS_ROGUE || player->getClass() == CLASS_WARRIOR || player->getClass() == CLASS_DEATH_KNIGHT || player->getClass() == CLASS_HUNTER) {
  311. std::ostringstream ss;
  312. ss << "Your not a Caster, so you cant buy this item!";
  313. ChatHandler(player->GetSession()).PSendSysMessage(ss.str().c_str());
  314. player->PlayerTalkClass->SendCloseGossip();
  315. }
  316. else {
  317. RewardItem(player, pCreature, 54806, 1, 20);
  318. player->PlayerTalkClass->SendCloseGossip();
  319. }
  320. break;
  321. case 2302:
  322. if (player->getClass() != CLASS_DRUID) {
  323. std::ostringstream ss;
  324. ss << "Your not a Druid, so you cant buy this item!";
  325. ChatHandler(player->GetSession()).PSendSysMessage(ss.str().c_str());
  326. player->PlayerTalkClass->SendCloseGossip();
  327. }
  328. else {
  329. RewardItem(player, pCreature, 40348, 1, 20);
  330. player->PlayerTalkClass->SendCloseGossip();
  331. }
  332. break;
  333. case 2004:
  334. ClearGossipMenuFor(player);
  335. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Donors Bow - 15 DP", GOSSIP_SENDER_MAIN, 2401);
  336. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Donors Gun - 15 DP", GOSSIP_SENDER_MAIN, 2402);
  337. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Donors Wand - 15 DP", GOSSIP_SENDER_MAIN, 2403);
  338. AddGossipItemFor(player, GOSSIP_ICON_DOT, "[Main Menu]", GOSSIP_SENDER_MAIN, 9999);
  339. SendGossipMenuFor(player, 85002, pCreature->GetGUID());
  340. return true;
  341. break;
  342. case 2401:
  343. RewardItem(player, pCreature, 34334, 1, 15);
  344. break;
  345. case 2402:
  346. RewardItem(player, pCreature, 51450, 1, 15);
  347. break;
  348. case 2403:
  349. if (player->getClass() == CLASS_PALADIN || player->getClass() == CLASS_ROGUE || player->getClass() == CLASS_WARRIOR || player->getClass() == CLASS_DEATH_KNIGHT || player->getClass() == CLASS_HUNTER) {
  350. std::ostringstream ss;
  351. ss << "Your not a Caster, so you cant buy this item!";
  352. ChatHandler(player->GetSession()).PSendSysMessage(ss.str().c_str());
  353. player->PlayerTalkClass->SendCloseGossip();
  354. }
  355. else {
  356. RewardItem(player, pCreature, 37177, 1, 15);
  357. player->PlayerTalkClass->SendCloseGossip();
  358. }
  359. break;
  360. case 2005:
  361. ClearGossipMenuFor(player);
  362. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Donors Warglaive (Off Hand) - 20 DP", GOSSIP_SENDER_MAIN, 2501);
  363. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Donors Fist (Off Hand) - 15 DP", GOSSIP_SENDER_MAIN, 2502);
  364. AddGossipItemFor(player, GOSSIP_ICON_DOT, "[Main Menu]", GOSSIP_SENDER_MAIN, 9999);
  365. SendGossipMenuFor(player, 85002, pCreature->GetGUID());
  366. return true;
  367. break;
  368. case 2501:
  369. RewardItem(player, pCreature, 1951, 1, 20);
  370. break;
  371. case 2502:
  372. RewardItem(player, pCreature, 34203, 1, 15);
  373. break;
  374. case 2006:
  375. ClearGossipMenuFor(player);
  376. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Donors Warglaive (Main Hand) - 20 DP", GOSSIP_SENDER_MAIN, 2601);
  377. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Donors Fist (Main Hand) - 15 DP", GOSSIP_SENDER_MAIN, 2602);
  378. AddGossipItemFor(player, GOSSIP_ICON_DOT, "[Main Menu]", GOSSIP_SENDER_MAIN, 9999);
  379. SendGossipMenuFor(player, 85002, pCreature->GetGUID());
  380. return true;
  381. break;
  382. case 2601:
  383. RewardItem(player, pCreature, 1469, 1, 20);
  384. break;
  385. case 2602:
  386. RewardItem(player, pCreature, 34331, 1, 15);
  387. break;
  388. case 3000:
  389. ClearGossipMenuFor(player);
  390. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Ancient Box - 30 DP", GOSSIP_SENDER_MAIN, 3001);
  391. if (player->GetTeam() == HORDE)
  392. {
  393. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Medallion of the Horde - 20 DP", GOSSIP_SENDER_MAIN, 3002);
  394. }
  395. else {
  396. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Medallion of the Alliance - 20 DP", GOSSIP_SENDER_MAIN, 3012);
  397. }
  398. if (player->getClass() == CLASS_ROGUE)
  399. {
  400. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Necklace of the Assassin - 20 DP", GOSSIP_SENDER_MAIN, 3004);
  401. }
  402. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Card Destruction (melee) - 20 DP", GOSSIP_SENDER_MAIN, 3003);
  403. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Card Judgement (spell) - 20 DP", GOSSIP_SENDER_MAIN, 3015);
  404. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Trinket of the Comet - 15 DP", GOSSIP_SENDER_MAIN, 3005);
  405. AddGossipItemFor(player, GOSSIP_ICON_DOT, "[Main Menu]", GOSSIP_SENDER_MAIN, 9999);
  406. SendGossipMenuFor(player, 85002, pCreature->GetGUID());
  407. return true;
  408. break;
  409. case 3001:
  410. RewardItem(player, pCreature, 4632, 1, 30);
  411. break;
  412. case 3002:
  413. RewardItem(player, pCreature, 42126, 1, 20);
  414. break;
  415. case 3003:
  416. RewardItem(player, pCreature, 42989, 1, 20);
  417. break;
  418. case 3004:
  419. RewardItem(player, pCreature, 39246, 1, 20);
  420. break;
  421. case 3005:
  422. RewardItem(player, pCreature, 19336, 1, 20);
  423. break;
  424. case 3012:
  425. RewardItem(player, pCreature, 38589, 1, 20);
  426. break;
  427. case 3013:
  428. RewardItem(player, pCreature, 45609, 1, 15);
  429. break;
  430. case 3015:
  431. RewardItem(player, pCreature, 19288, 1, 20);
  432. break;
  433. case 4000:
  434. ClearGossipMenuFor(player);
  435. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Faction Change Token - 5 DP", GOSSIP_SENDER_MAIN, 4001);
  436. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Race Change Token - 5 DP", GOSSIP_SENDER_MAIN, 14002);
  437. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Name Change Token - 5 DP", GOSSIP_SENDER_MAIN, 4002);
  438. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Re-Customize Token - 5 DP", GOSSIP_SENDER_MAIN, 4003);
  439. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Max Level - 5 DP", GOSSIP_SENDER_MAIN, 4009);
  440. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Event Token x200 - 5 DP", GOSSIP_SENDER_MAIN, 4004);
  441. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Berserk Token x25 - 5 DP", GOSSIP_SENDER_MAIN, 4006);
  442. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Honor Booster x5 - 5 DP", GOSSIP_SENDER_MAIN, 4007);
  443. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Shadowmourne Visual - 10 DP", GOSSIP_SENDER_MAIN, 14010);
  444. AddGossipItemFor(player, GOSSIP_ICON_DOT, "V.I.P Rank - 80 DP", GOSSIP_SENDER_MAIN, 4008);
  445. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Group Summoning Token - 10 DP", GOSSIP_SENDER_MAIN, 4029);
  446. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Custom Enchant Token - 7 DP", GOSSIP_SENDER_MAIN, 4031);
  447. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Friendlystep - 8 DP", GOSSIP_SENDER_MAIN, 4032);
  448. AddGossipItemFor(player, GOSSIP_ICON_DOT, "[Main Menu]", GOSSIP_SENDER_MAIN, 9999);
  449. SendGossipMenuFor(player, 85002, pCreature->GetGUID());
  450. return true;
  451. break;
  452. case 4032:
  453. RewardItem(player, pCreature, 985410, 1, 8);
  454. break;
  455. case 4031:
  456. RewardItem(player, pCreature, 41596, 1, 7);
  457. break;
  458. case 5040:
  459. RewardItem(player, pCreature, 44728, 255, 5);
  460. break;
  461. case 4030:
  462. RewardItem(player, pCreature, 9850100, 2, 1);
  463. break;
  464. case 4038:
  465. RewardItem(player, pCreature, 29435, 1, 12);
  466. break;
  467. case 4029:
  468. RewardItem(player, pCreature, 190, 1, 10);
  469. break;
  470. case 4028:
  471. RewardItem(player, pCreature, 29436, 1, 10);
  472. break;
  473. case 14002:
  474. RewardItem(player, pCreature, 81, 1, 5);
  475. break;
  476. case 14010:
  477. RewardItem(player, pCreature, 133337, 1, 10);
  478. break;
  479. case 4001:
  480. RewardItem(player, pCreature, 5, 1, 5);
  481. break;
  482. case 4002:
  483. RewardItem(player, pCreature, 6, 1, 5);
  484. break;
  485. case 4003:
  486. RewardItem(player, pCreature, 1, 1, 5);
  487. break;
  488. case 4004:
  489. RewardItem(player, pCreature, 16, 1, 5);
  490. break;
  491. case 4005:
  492. RewardItem(player, pCreature, 40753, 10, 1);
  493. break;
  494. case 4006:
  495. RewardItem(player, pCreature, 31, 25, 5);
  496. break;
  497. case 4007:
  498. RewardItem(player, pCreature, 44115, 5, 10);
  499. break;
  500. case 4008:
  501. RewardItem(player, pCreature, 22, 1, 80);
  502. break;
  503. case 4009:
  504. RewardItem(player, pCreature, 7, 1, 5);
  505. break;
  506. case 4010:
  507. RewardItem(player, pCreature, 11, 1, 10);
  508. break;
  509. case 5000:
  510. ClearGossipMenuFor(player);
  511. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Donors Idol - 15 DP", GOSSIP_SENDER_MAIN, 5001);
  512. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Donors Thrown - 15 DP", GOSSIP_SENDER_MAIN, 5002);
  513. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Donors Totem - 15 DP", GOSSIP_SENDER_MAIN, 5003);
  514. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Donors Sigil - 15 DP", GOSSIP_SENDER_MAIN, 5004);
  515. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Donors Libram - 15 DP", GOSSIP_SENDER_MAIN, 5005);
  516. AddGossipItemFor(player, GOSSIP_ICON_DOT, "[Main Menu]", GOSSIP_SENDER_MAIN, 9999);
  517. SendGossipMenuFor(player, 85002, pCreature->GetGUID());
  518. return true;
  519. break;
  520. case 5001:
  521. if (player->getClass() != CLASS_DRUID) {
  522.  
  523. std::ostringstream ss;
  524. ss << "Your not a Druid, so you cant buy this item!";
  525. ChatHandler(player->GetSession()).PSendSysMessage(ss.str().c_str());
  526. player->PlayerTalkClass->SendCloseGossip();
  527. }
  528. else {
  529. RewardItem(player, pCreature, 50456, 1, 15);
  530. }
  531. break;
  532. case 5002:
  533. if (player->getClass() != CLASS_ROGUE) {
  534. std::ostringstream ss;
  535. ss << "Your not a Rogue, so you cant buy this item!";
  536. ChatHandler(player->GetSession()).PSendSysMessage(ss.str().c_str());
  537. player->PlayerTalkClass->SendCloseGossip();
  538. }
  539. else {
  540. RewardItem(player, pCreature, 30025, 1, 15);
  541. }
  542. break;
  543. case 5003:
  544. if (player->getClass() != CLASS_SHAMAN) {
  545. std::ostringstream ss;
  546. ss << "Your not a Shaman, so you cant buy this item!";
  547. ChatHandler(player->GetSession()).PSendSysMessage(ss.str().c_str());
  548. player->PlayerTalkClass->SendCloseGossip();
  549. }
  550. else {
  551. RewardItem(player, pCreature, 45169, 1, 15);
  552. }
  553. break;
  554. case 5004:
  555. if (player->getClass() != 6) {
  556. std::ostringstream ss;
  557. ss << "Your not a Death Knight, so you cant buy this item!";
  558. ChatHandler(player->GetSession()).PSendSysMessage(ss.str().c_str());
  559. player->PlayerTalkClass->SendCloseGossip();
  560. }
  561. else {
  562. RewardItem(player, pCreature, 45144, 1, 15);
  563. }
  564. break;
  565. case 5005:
  566. if (player->getClass() != CLASS_PALADIN) {
  567. std::ostringstream ss;
  568. ss << "Your not a Paladin, so you cant buy this item!";
  569. ChatHandler(player->GetSession()).PSendSysMessage(ss.str().c_str());
  570. player->PlayerTalkClass->SendCloseGossip();
  571. }
  572. else {
  573. RewardItem(player, pCreature, 50461, 1, 15);
  574. }
  575. break;
  576. case 5006:
  577. RewardItem(player, pCreature, 4633, 1, 2);
  578. break;
  579. case 10000:
  580. switch (player->getClass())
  581. {
  582. case CLASS_WARRIOR:
  583. RewardItem(player, pCreature, 61009, 1, 15);
  584. break;
  585. case CLASS_PALADIN:
  586. RewardItem(player, pCreature, 61007, 1, 15);
  587. break;
  588. case CLASS_HUNTER:
  589. RewardItem(player, pCreature, 63005, 1, 15);
  590. break;
  591. case CLASS_ROGUE:
  592. RewardItem(player, pCreature, 61004, 1, 15);
  593. break;
  594. case CLASS_PRIEST:
  595. RewardItem(player, pCreature, 61010, 1, 15);
  596. break;
  597. case CLASS_DEATH_KNIGHT:
  598. RewardItem(player, pCreature, 61006, 1, 15);
  599. break;
  600. case CLASS_SHAMAN:
  601. RewardItem(player, pCreature, 61001, 1, 15);
  602. break;
  603. case CLASS_MAGE:
  604. RewardItem(player, pCreature, 61008, 1, 15);
  605. break;
  606. case CLASS_WARLOCK:
  607. RewardItem(player, pCreature, 61003, 1, 15);
  608. break;
  609. case CLASS_DRUID:
  610. RewardItem(player, pCreature, 61000, 1, 15);
  611. break;
  612.  
  613. default: break;
  614. }
  615. break;
  616. case 11000: // donors talisman
  617. switch (player->getClass())
  618. {
  619. case CLASS_WARRIOR:
  620. RewardItem(player, pCreature, 32485, 1, 30);
  621. break;
  622. case CLASS_PALADIN:
  623. RewardItem(player, pCreature, 32489, 1, 30);
  624. break;
  625. case CLASS_HUNTER:
  626. RewardItem(player, pCreature, 32487, 1, 30);
  627. break;
  628. case CLASS_ROGUE:
  629. RewardItem(player, pCreature, 32492, 1, 30);
  630. break;
  631. case CLASS_PRIEST:
  632. RewardItem(player, pCreature, 32490, 1, 30);
  633. break;
  634. case CLASS_DEATH_KNIGHT:
  635. RewardItem(player, pCreature, 21670, 1, 30);
  636. break;
  637. case CLASS_SHAMAN:
  638. RewardItem(player, pCreature, 32491, 1, 30);
  639. break;
  640. case CLASS_MAGE:
  641. RewardItem(player, pCreature, 32488, 1, 30);
  642. break;
  643. case CLASS_WARLOCK:
  644. RewardItem(player, pCreature, 32493, 1, 30);
  645. break;
  646. case CLASS_DRUID:
  647. RewardItem(player, pCreature, 32486, 1, 30);
  648. break;
  649.  
  650. default: break;
  651. }
  652. break;
  653. case 12000: // donors set
  654. switch (player->getClass())
  655. {
  656. case CLASS_WARRIOR:
  657. RewardItem(player, pCreature, 124633, 1, 150);
  658. break;
  659. case CLASS_PALADIN:
  660. RewardItem(player, pCreature, 124636, 1, 150);
  661. break;
  662. case CLASS_HUNTER:
  663. RewardItem(player, pCreature, 124632, 1, 150);
  664. break;
  665. case CLASS_ROGUE:
  666. RewardItem(player, pCreature, 124634, 1, 150);
  667. break;
  668. case CLASS_PRIEST:
  669. RewardItem(player, pCreature, 124635, 1, 150);
  670. break;
  671. case CLASS_DEATH_KNIGHT:
  672. RewardItem(player, pCreature, 124640, 1, 150);
  673. break;
  674. case CLASS_SHAMAN:
  675. RewardItem(player, pCreature, 124637, 1, 150);
  676. break;
  677. case CLASS_MAGE:
  678. RewardItem(player, pCreature, 124639, 1, 150);
  679. break;
  680. case CLASS_WARLOCK:
  681. RewardItem(player, pCreature, 124638, 1, 150);
  682. break;
  683. case CLASS_DRUID:
  684. RewardItem(player, pCreature, 124641, 1, 150);
  685. break;
  686.  
  687. default: break;
  688. }
  689. break;
  690. case 9997:
  691. ClearGossipMenuFor(player);
  692. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Are you sure you wish to buy frostmourne?", GOSSIP_SENDER_MAIN, 9997);
  693. AddGossipItemFor(player, GOSSIP_ICON_DOT, "Yes.", GOSSIP_SENDER_MAIN, 9996);
  694. AddGossipItemFor(player, GOSSIP_ICON_DOT, "No.", GOSSIP_SENDER_MAIN, 9999);
  695. SendGossipMenuFor(player, 85002, pCreature->GetGUID());
  696. return true;
  697. break;
  698. case 9996:
  699. if (player->HasItemCount(27769, 1))
  700. {
  701.  
  702. std::ostringstream ss;
  703. ss << "You already have a Frostmourne, so you cant buy it!";
  704. ChatHandler(player->GetSession()).PSendSysMessage(ss.str().c_str());
  705. player->PlayerTalkClass->SendCloseGossip();
  706. }
  707. else {
  708. RewardItem(player, pCreature, 27769, 1, 100);
  709. player->PlayerTalkClass->SendCloseGossip();
  710. }
  711. break;
  712. case 9998:
  713. player->GetSession()->SendListInventory(pCreature->GetGUID());
  714. break;
  715. case 9999:
  716. ClearGossipMenuFor(player);
  717. OnGossipHello(player, pCreature);
  718. break;
  719. }
  720.  
  721.  
  722. return true;
  723. }
  724.  
  725. };
  726.  
  727. void AddSC_donate_shop()
  728. {
  729. new donate_shop();
  730. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement