Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "ScriptPCH.h"
- struct Choice
- {
- uint32 action;
- uint8 classId;
- const char* talentName;
- };
- Choice TalentChoice[] =
- {
- /* Paladin */
- { 1, CLASS_PALADIN, "Retribution" },
- { 2, CLASS_PALADIN, "Holy" },
- { 3, CLASS_PALADIN, "Protection" },
- /* Mage */
- { 4, CLASS_MAGE, "Arcane" },
- { 5, CLASS_MAGE, "Fire" },
- { 6, CLASS_MAGE, "Frost" },
- /* Warrior */
- { 7, CLASS_WARRIOR, "Arms" },
- { 8, CLASS_WARRIOR, "Fury" },
- { 9, CLASS_WARRIOR, "Protection" },
- /* Priest */
- { 10, CLASS_PRIEST, "Holy" },
- { 11, CLASS_PRIEST, "Discipline" },
- { 12, CLASS_PRIEST, "Shadow" },
- /* Hunter */
- { 13, CLASS_HUNTER, "Marksman" },
- { 14, CLASS_HUNTER, "Survival" },
- { 15, CLASS_HUNTER, "Beastmaster" },
- /* Rogue */
- { 16, CLASS_ROGUE, "Sub" },
- { 17, CLASS_ROGUE, "Assassination" },
- { 18, CLASS_ROGUE, "Combat" },
- /* Shaman */
- { 19, CLASS_SHAMAN, "Restoration" },
- { 20, CLASS_SHAMAN, "Enchancement" },
- { 21, CLASS_SHAMAN, "Elemental" },
- /* Warlock */
- { 22, CLASS_WARLOCK, "Affliciton" },
- { 23, CLASS_WARLOCK, "Demonology" },
- { 24, CLASS_WARLOCK, "Destruction" },
- /* Druid */
- { 25, CLASS_DRUID, "Feral" },
- { 26, CLASS_DRUID, "Balance" },
- { 27, CLASS_DRUID, "Restoration" },
- };
- class talent_spec_npc : public CreatureScript
- {
- public:
- talent_spec_npc() : CreatureScript("talent_spec_npc") { }
- bool OnGossipHello(Player* player, Creature* creature)
- {
- for (int i = 0; i < sizeof(TalentChoice) / sizeof(uint32); i++)
- if (player->getClass() == TalentChoice[i].classId)
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, TalentChoice[i].talentName, GOSSIP_SENDER_MAIN, TalentChoice[i].action);
- player->PlayerTalkClass->SendGossipMenu(1, creature->GetGUID());
- return true;
- }
- bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
- {
- player->PlayerTalkClass->ClearMenus();
- switch (action)
- {
- /* Paladin */
- case 1: // Retrubition
- player->RemoveSpell(54428, false);
- player->RemoveSpell(19746, false);
- player->RemoveSpell(62124, false);
- player->RemoveSpell(498, false);
- player->LearnSpell(7294, false);
- player->LearnSpell(35395, false);
- break;
- case 2: // Holy
- player->RemoveSpell(62124, false);
- player->RemoveSpell(498, false);
- player->RemoveSpell(7294, false);
- player->RemoveSpell(35395, false);
- player->LearnSpell(54428, false);
- player->LearnSpell(19746, false);
- break;
- case 3: // Protection
- player->RemoveSpell(54428, false);
- player->RemoveSpell(19746, false);
- player->RemoveSpell(7294, false);
- player->RemoveSpell(35395, false);
- player->RemoveSpell(62124, false);
- player->LearnSpell(498, false);
- break;
- /* Mage */
- case 4: // Arcane
- player->RemoveSpell(44614, false);
- player->RemoveSpell(44457, false);
- player->RemoveSpell(120, false);
- player->RemoveSpell(45438, false);
- player->LearnSpell(12051, false);
- player->LearnSpell(5143, false);
- break;
- case 5: // Fire
- player->RemoveSpell(12051, false);
- player->RemoveSpell(5143, false);
- player->RemoveSpell(120, false);
- player->RemoveSpell(45438, false);
- player->LearnSpell(44614, false);
- player->LearnSpell(44457, false);
- break;
- case 6: // Frost
- player->RemoveSpell(12051, false);
- player->RemoveSpell(5143, false);
- player->RemoveSpell(44614, false);
- player->RemoveSpell(44457, false);
- player->LearnSpell(120, false);
- player->LearnSpell(45438, false);
- break;
- /* Warrior */
- case 7: // Arms
- player->RemoveSpell(6572, false);
- player->RemoveSpell(2565, false);
- player->RemoveSpell(23881, false);
- player->RemoveSpell(674, false);
- player->LearnSpell(1715, false);
- player->LearnSpell(20230, false);
- break;
- case 8: // Fury
- player->RemoveSpell(1715, false);
- player->RemoveSpell(20230, false);
- player->RemoveSpell(6572, false);
- player->RemoveSpell(2565, false);
- player->LearnSpell(23881, false);
- player->LearnSpell(674, false);
- break;
- case 9: // Protection
- player->RemoveSpell(1715, false);
- player->RemoveSpell(20230, false);
- player->RemoveSpell(23881, false);
- player->RemoveSpell(674, false);
- player->LearnSpell(6572, false);
- player->LearnSpell(2565, false);
- break;
- /* Priest */
- case 10: // Holy
- player->RemoveSpell(17, false);
- player->RemoveSpell(588, false);
- player->RemoveSpell(15407, false);
- player->RemoveSpell(8122, false);
- player->LearnSpell(2061, false);
- player->LearnSpell(14914, false);
- break;
- case 11: // Discipline
- player->RemoveSpell(2061, false);
- player->RemoveSpell(14914, false);
- player->RemoveSpell(15407, false);
- player->RemoveSpell(8122, false);
- player->LearnSpell(588, false);
- player->LearnSpell(17, false);
- break;
- case 12: // Shadow
- player->RemoveSpell(17, false);
- player->RemoveSpell(588, false);
- player->RemoveSpell(2061, false);
- player->RemoveSpell(14914, false);
- player->LearnSpell(15407, false);
- player->LearnSpell(8122, false);
- break;
- /* Hunter */
- case 13: // Marksman
- player->RemoveSpell(13165, false);
- player->RemoveSpell(1495, false);
- player->RemoveSpell(1499, false);
- player->RemoveSpell(2974, false);
- player->LearnSpell(2643, false);
- player->LearnSpell(3044, false);
- break;
- case 14: // Survival
- player->RemoveSpell(13165, false);
- player->RemoveSpell(2643, false);
- player->RemoveSpell(3044, false);
- player->RemoveSpell(1499, false);
- player->LearnSpell(1495, false);
- player->LearnSpell(2974, false);
- break;
- case 15: // Beastmaster
- player->RemoveSpell(2974, false);
- player->RemoveSpell(1495, false);
- player->RemoveSpell(2643, false);
- player->RemoveSpell(3044, false);
- player->LearnSpell(13165, false);
- player->LearnSpell(1499, false);
- break;
- /* Rogue */
- case 16: // Sub
- player->RemoveSpell(703, false);
- player->RemoveSpell(5171, false);
- player->RemoveSpell(5277, false);
- player->RemoveSpell(1776, false);
- player->LearnSpell(8676, false);
- player->LearnSpell(2983, false);
- break;
- case 17: // Assassination
- player->RemoveSpell(8676, false);
- player->RemoveSpell(2983, false);
- player->RemoveSpell(5277, false);
- player->RemoveSpell(1776, false);
- player->LearnSpell(703, false);
- player->LearnSpell(5171, false);
- break;
- case 18: // Combat
- player->RemoveSpell(8676, false);
- player->RemoveSpell(2983, false);
- player->RemoveSpell(703, false);
- player->RemoveSpell(84668, false);
- player->LearnSpell(5277, false);
- player->LearnSpell(5171, false);
- break;
- /* Shaman */
- case 19: // Restoration
- player->RemoveSpell(8056, false);
- player->RemoveSpell(674, false);
- player->RemoveSpell(51490, false);
- player->RemoveSpell(51505, false);
- player->LearnSpell(51730, false);
- player->LearnSpell(16176, false);
- break;
- case 20: // Enchancement
- player->RemoveSpell(51730, false);
- player->RemoveSpell(16176, false);
- player->RemoveSpell(51490, false);
- player->RemoveSpell(51505, false);
- player->LearnSpell(8056, false);
- player->LearnSpell(674, false);
- break;
- case 21: // Elemental
- player->RemoveSpell(51730, false);
- player->RemoveSpell(16176, false);
- player->RemoveSpell(8056, false);
- player->RemoveSpell(674, false);
- player->LearnSpell(51490, false);
- player->LearnSpell(51505, false);
- break;
- /* Warlock */
- case 22: // Affliction
- player->RemoveSpell(12746, false);
- player->RemoveSpell(47897, false);
- player->RemoveSpell(707, false);
- player->RemoveSpell(17962, false);
- player->LearnSpell(5484, false);
- player->LearnSpell(980, false);
- break;
- case 23: // Demonology
- player->RemoveSpell(5484, false);
- player->RemoveSpell(980, false);
- player->RemoveSpell(707, false);
- player->RemoveSpell(17962, false);
- player->LearnSpell(12746, false);
- player->LearnSpell(47897, false);
- break;
- case 24: // Destruction
- player->RemoveSpell(5484, false);
- player->RemoveSpell(980, false);
- player->RemoveSpell(12746, false);
- player->RemoveSpell(47897, false);
- player->LearnSpell(707, false);
- player->LearnSpell(17962, false);
- break;
- /* Druid */
- case 25: // Feral
- player->RemoveSpell(5570, false);
- player->RemoveSpell(50516, false);
- player->RemoveSpell(50464, false);
- player->RemoveSpell(8936, false);
- player->LearnSpell(770, false);
- player->LearnSpell(22812, false);
- break;
- case 26: // Balance
- player->RemoveSpell(770, false);
- player->RemoveSpell(22812, false);
- player->RemoveSpell(50464, false);
- player->RemoveSpell(8936, false);
- player->LearnSpell(5570, false);
- player->LearnSpell(50516, false);
- break;
- case 27: // Restoration
- player->RemoveSpell(770, false);
- player->RemoveSpell(22812, false);
- player->RemoveSpell(5570, false);
- player->RemoveSpell(50516, false);
- player->LearnSpell(50464, false);
- player->LearnSpell(8936, false);
- break;
- }
- player->CLOSE_GOSSIP_MENU();
- return true;
- }
- };
- void AddSC_talent_spec_npc()
- {
- new talent_spec_npc();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement