1. /*********************
  2. * Made by: Darthye *
  3. *********************/
  4. #include "ScriptPCH.h"
  5. class npc_promo : public CreatureScript
  6. {
  7. public:
  8. npc_promo() : CreatureScript("npc_promo") { }
  9. bool OnGossipHello(Player* player, Creature* creature) OVERRIDE
  10. {
  11. player->ADD_GOSSIP_ITEM(7, "Select your promotion: ", GOSSIP_SENDER_MAIN, 99);
  12. switch (player->getClass())
  13. {
  14. case CLASS_DRUID: player->ADD_GOSSIP_ITEM(10, "Promotion - Druid", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+30); break;
  15. case CLASS_SHAMAN: player->ADD_GOSSIP_ITEM(10, "Promotion - Shaman", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+31); break;
  16. case CLASS_PALADIN: player->ADD_GOSSIP_ITEM(10, "Promotion - Paladin", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+32); break;
  17. case CLASS_WARRIOR: player->ADD_GOSSIP_ITEM(10, "Promotion - Warrior", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+33); break;
  18. case CLASS_PRIEST: player->ADD_GOSSIP_ITEM(10, "Promotion - Priest", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+34); break;
  19. case CLASS_DEATH_KNIGHT: player->ADD_GOSSIP_ITEM(10, "Promotion - DK", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+35); break;
  20. case CLASS_ROGUE: player->ADD_GOSSIP_ITEM(10, "Promotion - Rogue", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+36); break;
  21. case CLASS_HUNTER: player->ADD_GOSSIP_ITEM(10, "Promotion - Hunter", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+37); break;
  22. case CLASS_MAGE: player->ADD_GOSSIP_ITEM(10, "Promotion - Mage", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+38); break;
  23. case CLASS_WARLOCK: player->ADD_GOSSIP_ITEM(10, "Promotion - Warlock", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+39); break;
  24. }
  25. player->SEND_GOSSIP_MENU(1, creature->GetGUID());
  26. return true;
  27. }
  28. bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 actions) OVERRIDE
  29. {
  30. if (player->getLevel() == 1)
  31. {
  32. uint32 accountID = player->GetSession()->GetAccountId();
  33. QueryResult result = CharacterDatabase.PQuery("SELECT COUNT(`guid`) FROM `characters` WHERE `account`=%u", accountID);
  34. Field *fields = result->Fetch();
  35. uint32 personajes = fields[0].GetUInt32();
  36. if (personajes == 1)
  37. {
  38. if (actions == 99)
  39. {
  40. player->CLOSE_GOSSIP_MENU();
  41. return false;
  42. }
  43. player->GetSession()->SendAreaTriggerMessage("Congratulations, you received your promotion successfully.");
  44. player->GiveLevel(80);
  45. player->SetMoney(100000);
  46. switch(actions)
  47. {
  48. case GOSSIP_ACTION_INFO_DEF+30: // Druid
  49. player->AddItem(200000, 1);
  50. player->AddItem(200000, 1);
  51. player->AddItem(200000, 1);
  52. player->AddItem(200000, 1);
  53. player->AddItem(200000, 1);
  54. break;
  55. case GOSSIP_ACTION_INFO_DEF+31: // Shaman
  56. player->AddItem(200000, 1);
  57. player->AddItem(200000, 1);
  58. player->AddItem(200000, 1);
  59. player->AddItem(200000, 1);
  60. player->AddItem(200000, 1);
  61. break;
  62. case GOSSIP_ACTION_INFO_DEF+32: // Paladin
  63. player->AddItem(200000, 1);
  64. player->AddItem(200000, 1);
  65. player->AddItem(200000, 1);
  66. player->AddItem(200000, 1);
  67. player->AddItem(200000, 1);
  68. break;
  69. case GOSSIP_ACTION_INFO_DEF+33: // Warrior
  70. player->AddItem(200000, 1);
  71. player->AddItem(200000, 1);
  72. player->AddItem(200000, 1);
  73. player->AddItem(200000, 1);
  74. player->AddItem(200000, 1);
  75. break;
  76. case GOSSIP_ACTION_INFO_DEF+34: // Priest
  77. player->AddItem(200000, 1);
  78. player->AddItem(200000, 1);
  79. player->AddItem(200000, 1);
  80. player->AddItem(200000, 1);
  81. player->AddItem(200000, 1);
  82. break;
  83. case GOSSIP_ACTION_INFO_DEF+35: // DK
  84. player->AddItem(200000, 1);
  85. player->AddItem(200000, 1);
  86. player->AddItem(200000, 1);
  87. player->AddItem(200000, 1);
  88. player->AddItem(200000, 1);
  89. break;
  90. case GOSSIP_ACTION_INFO_DEF+36: // Rogue
  91. player->AddItem(200000, 1);
  92. player->AddItem(200000, 1);
  93. player->AddItem(200000, 1);
  94. player->AddItem(200000, 1);
  95. player->AddItem(200000, 1);
  96. break;
  97. case GOSSIP_ACTION_INFO_DEF+37: // Hunter
  98. player->AddItem(200000, 1);
  99. player->AddItem(200000, 1);
  100. player->AddItem(200000, 1);
  101. player->AddItem(200000, 1);
  102. player->AddItem(200000, 1);
  103. break;
  104. case GOSSIP_ACTION_INFO_DEF+38: // Mage
  105. player->AddItem(200000, 1);
  106. player->AddItem(200000, 1);
  107. player->AddItem(200000, 1);
  108. player->AddItem(200000, 1);
  109. player->AddItem(200000, 1);
  110. break;
  111. case GOSSIP_ACTION_INFO_DEF+39: // Warlock
  112. player->AddItem(200000, 1);
  113. player->AddItem(200000, 1);
  114. player->AddItem(200000, 1);
  115. player->AddItem(200000, 1);
  116. player->AddItem(200000, 1);
  117. break;
  118. }
  119. }
  120. if (personajes > 1)
  121. {
  122. player->GetSession()->SendAreaTriggerMessage("You can only receive the promotion in one character.");
  123. return true;
  124. }
  125. player->CLOSE_GOSSIP_MENU();
  126. }
  127. return true;
  128. }
  129. };
  130. void AddSC_npc_promo()
  131. {
  132. new npc_promo();
  133. }

Promotion NPC