Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "ScriptPCH.h"
- uint32 ALL_PALADIN_SPELLS[6] = {20216, 31842, 20925, 64205, 35395, 20066};
- uint32 RET_PALADIN_SPELLS[2] = {35395, 20066};
- uint32 HOLY_PALADIN_SPELLS[2] = {20216, 31842};
- uint32 PROT_PALADIN_SPELLS[2] = {20925, 64205};
- uint32 ALL_ROGUE_SPELLS[6] = {14177, 1329, 13877, 13750, 14278, 14183};
- uint32 ASSASSINATION_ROGUE_SPELLS[2] = {14177, 1329};
- uint32 SUBTLETY_ROGUE_SPELLS[2] = {14278, 14183};
- uint32 COMBAT_ROGUE_SPELLS[2] = {13877, 13750};
- uint32 ALL_PRIEST_SPELLS[7] = {10060, 33206, 20711, 15237, 15430, 15473, 15407};
- uint32 HOLY_PRIEST_SPELLS[3] = {20711, 15237, 15430};
- uint32 SHADOW_PRIEST_SPELLS[2] = {15473, 15407};
- uint32 DISCIPLINE_PRIEST_SPELLS[2] = {10060, 33206};
- uint32 ALL_SHAMAN_SPELLS[6] = {16166, 16041, 674, 17364, 974, 16190};
- uint32 ENHANCEMENT_SHAMAN_SPELLS[2] = {674, 17364};
- uint32 RESTORATION_SHAMAN_SPELLS[2] = {974, 16190};
- uint32 ELEMENTAL_SHAMAN_SPELLS[2] = {16166, 16041};
- uint32 ALL_DRUID_SPELLS[7] = {24858, 5570, 18562, 65139, 49376, 16979, 61336};
- uint32 RESTORATION_DRUID_SPELLS[2] = {18562, 65139};
- uint32 FERAL_DRUID_SPELLS[3] = {49376, 16979, 61336};
- uint32 BALANCE_DRUID_SPELLS[2] = {24858, 5570};
- uint32 ALL_MAGE_SPELLS[6] = {31589, 12042, 11366, 11129, 12472, 11426};
- uint32 FROST_MAGE_SPELLS[2] = {12472, 11426};
- uint32 FIRE_MAGE_SPELLS[2] = {11366, 11129};
- uint32 ARCANE_MAGE_SPELLS[2] = {31589, 12042};
- uint32 ALL_WARLOCK_SPELLS[6] = {18223, 63108, 19028, 18771, 17877, 17962};
- uint32 AFFLICTION_WARLOCK_SPELLS[2] = {18223, 63108};
- uint32 DESTRUCTION_WARLOCK_SPELLS[2] = {17877, 17962};
- uint32 DEMONOLOGY_WARLOCK_SPELLS[2] = {19028, 18771};
- uint32 ALL_WARRIOR_SPELLS[5] = {12294, 674, 12292, 12809, 12975};
- uint32 ARMS_WARRIOR_SPELLS[1] = {12294};
- uint32 FURY_WARRIOR_SPELLS[2] = {674, 12292};
- uint32 PROTECTION_WARRIOR_SPELLS[2] = {12809, 12975};
- uint32 ALL_HUNTER_SPELLS[6] = {19577, 53265, 19506, 34490, 19503, 19306};
- uint32 MARK_HUNTER_SPELLS[2] = {19506, 34490};
- uint32 SURV_HUNTER_SPELLS[2] = {19503, 19306};
- uint32 BEAST_HUNTER_SPELLS[2] = {19577, 53265};
- class Gossip_Spells : public CreatureScript
- {
- public:
- Gossip_Spells() : CreatureScript("Spell_Trader"){}
- void RemoveSpells(Player * pPlayer, uint32 spell_array[], int arraylength)
- {
- for(int i = 0; i < arraylength; i++)
- {
- if(pPlayer->HasSpell(spell_array[i]))
- {
- pPlayer->removeSpell(spell_array[i], false, false);
- }
- }
- }
- void ReplaceSpells(Player * pPlayer, uint32 spell_array[], int arraylength)
- {
- //unlearn spells according to class
- switch(pPlayer->getClass())
- {
- case CLASS_WARRIOR:
- RemoveSpells(pPlayer, ALL_WARRIOR_SPELLS, 5);
- break;
- case CLASS_PALADIN:
- RemoveSpells(pPlayer, ALL_PALADIN_SPELLS, 6);
- break;
- case CLASS_ROGUE:
- RemoveSpells(pPlayer, ALL_ROGUE_SPELLS, 6);
- break;
- case CLASS_PRIEST:
- RemoveSpells(pPlayer, ALL_PRIEST_SPELLS, 7);
- break;
- case CLASS_SHAMAN:
- RemoveSpells(pPlayer, ALL_SHAMAN_SPELLS, 6);
- break;
- case CLASS_MAGE:
- RemoveSpells(pPlayer, ALL_MAGE_SPELLS, 6);
- break;
- case CLASS_WARLOCK:
- RemoveSpells(pPlayer, ALL_WARLOCK_SPELLS, 6);
- break;
- case CLASS_DRUID:
- RemoveSpells(pPlayer, ALL_DRUID_SPELLS, 7);
- break;
- case CLASS_HUNTER:
- RemoveSpells(pPlayer, ALL_HUNTER_SPELLS, 6);
- break;
- }
- //loop and learn spells
- for(int i = 0; i < arraylength; i++)
- {
- pPlayer->learnSpell(spell_array[i], false);
- }
- }
- bool OnGossipHello(Player * pPlayer, Creature * pCreature)
- {
- pPlayer->ADD_GOSSIP_ITEM(4, "Choose an Option:", GOSSIP_SENDER_MAIN, 0);
- pPlayer->ADD_GOSSIP_ITEM(4, "Show me my specs", GOSSIP_SENDER_MAIN, 45);
- pPlayer->PlayerTalkClass->SendGossipMenu(873, pCreature->GetGUID());
- return true;
- }
- bool OnGossipSelect(Player * pPlayer, Creature * pCreature, uint32 /*uiSender*/, uint32 uiAction)
- {
- pPlayer->PlayerTalkClass->ClearMenus();
- switch(uiAction)
- {
- case 45:
- if(pPlayer->getClass() == CLASS_WARRIOR)
- {
- pPlayer->ADD_GOSSIP_ITEM(4, "Protection", GOSSIP_SENDER_MAIN, 12);
- pPlayer->ADD_GOSSIP_ITEM(4, "Arms", GOSSIP_SENDER_MAIN, 13);
- pPlayer->ADD_GOSSIP_ITEM(4, "Fury", GOSSIP_SENDER_MAIN, 14);
- pPlayer->PlayerTalkClass->SendGossipMenu(875, pCreature->GetGUID());
- }
- if(pPlayer->getClass() == CLASS_PALADIN)
- {
- pPlayer->ADD_GOSSIP_ITEM(4, "Protection", GOSSIP_SENDER_MAIN, 15);
- pPlayer->ADD_GOSSIP_ITEM(4, "Retribtion", GOSSIP_SENDER_MAIN, 16);
- pPlayer->ADD_GOSSIP_ITEM(4, "Holy", GOSSIP_SENDER_MAIN, 17);
- pPlayer->PlayerTalkClass->SendGossipMenu(875, pCreature->GetGUID());
- }
- if(pPlayer->getClass() == CLASS_ROGUE)
- {
- pPlayer->ADD_GOSSIP_ITEM(4, "Combat", GOSSIP_SENDER_MAIN, 18);
- pPlayer->ADD_GOSSIP_ITEM(4, "Subtlety", GOSSIP_SENDER_MAIN, 19);
- pPlayer->ADD_GOSSIP_ITEM(4, "Assassination", GOSSIP_SENDER_MAIN, 20);
- pPlayer->PlayerTalkClass->SendGossipMenu(875, pCreature->GetGUID());
- }
- if(pPlayer->getClass() == CLASS_PRIEST)
- {
- pPlayer->ADD_GOSSIP_ITEM(4, "Holy", GOSSIP_SENDER_MAIN, 21);
- pPlayer->ADD_GOSSIP_ITEM(4, "Shadow", GOSSIP_SENDER_MAIN, 22);
- pPlayer->ADD_GOSSIP_ITEM(4, "Discipline", GOSSIP_SENDER_MAIN, 23);
- pPlayer->PlayerTalkClass->SendGossipMenu(875, pCreature->GetGUID());
- }
- if(pPlayer->getClass() == CLASS_SHAMAN)
- {
- pPlayer->ADD_GOSSIP_ITEM(4, "Elemental", GOSSIP_SENDER_MAIN, 27);
- pPlayer->ADD_GOSSIP_ITEM(4, "Enhancement", GOSSIP_SENDER_MAIN, 28);
- pPlayer->ADD_GOSSIP_ITEM(4, "Restoration", GOSSIP_SENDER_MAIN, 29);
- pPlayer->PlayerTalkClass->SendGossipMenu(875, pCreature->GetGUID());
- }
- if(pPlayer->getClass() == CLASS_MAGE)
- {
- pPlayer->ADD_GOSSIP_ITEM(4, "Frost", GOSSIP_SENDER_MAIN, 30);
- pPlayer->ADD_GOSSIP_ITEM(4, "Arcane", GOSSIP_SENDER_MAIN, 31);
- pPlayer->ADD_GOSSIP_ITEM(4, "Fire", GOSSIP_SENDER_MAIN, 32);
- pPlayer->PlayerTalkClass->SendGossipMenu(875, pCreature->GetGUID());
- }
- if(pPlayer->getClass() == CLASS_WARLOCK)
- {
- pPlayer->ADD_GOSSIP_ITEM(4, "Destruction", GOSSIP_SENDER_MAIN, 33);
- pPlayer->ADD_GOSSIP_ITEM(4, "Affliction", GOSSIP_SENDER_MAIN, 34);
- pPlayer->ADD_GOSSIP_ITEM(4, "Demonology", GOSSIP_SENDER_MAIN, 35);
- pPlayer->PlayerTalkClass->SendGossipMenu(875, pCreature->GetGUID());
- }
- if(pPlayer->getClass() == CLASS_DRUID)
- {
- pPlayer->ADD_GOSSIP_ITEM(4, "Feral", GOSSIP_SENDER_MAIN, 36);
- pPlayer->ADD_GOSSIP_ITEM(4, "Restoration", GOSSIP_SENDER_MAIN, 37);
- pPlayer->ADD_GOSSIP_ITEM(4, "Balance", GOSSIP_SENDER_MAIN, 38);
- pPlayer->PlayerTalkClass->SendGossipMenu(875, pCreature->GetGUID());
- }
- if(pPlayer->getClass() == CLASS_HUNTER)
- {
- pPlayer->ADD_GOSSIP_ITEM(4, "Marksman", GOSSIP_SENDER_MAIN, 39);
- pPlayer->ADD_GOSSIP_ITEM(4, "Beast Mastery", GOSSIP_SENDER_MAIN, 40);
- pPlayer->ADD_GOSSIP_ITEM(4, "Survival", GOSSIP_SENDER_MAIN, 41);
- pPlayer->PlayerTalkClass->SendGossipMenu(875, pCreature->GetGUID());
- }
- break;
- case 12:
- ReplaceSpells(pPlayer, PROTECTION_WARRIOR_SPELLS, 2);
- break;
- case 13:
- ReplaceSpells(pPlayer, ARMS_WARRIOR_SPELLS, 1);
- break;
- case 14:
- ReplaceSpells(pPlayer, FURY_WARRIOR_SPELLS, 2);
- break;
- case 15:
- ReplaceSpells(pPlayer, PROT_PALADIN_SPELLS, 2);
- break;
- case 16:
- ReplaceSpells(pPlayer, RET_PALADIN_SPELLS, 2);
- break;
- case 17:
- ReplaceSpells(pPlayer, HOLY_PALADIN_SPELLS, 2);
- break;
- case 18:
- ReplaceSpells(pPlayer, COMBAT_ROGUE_SPELLS, 2);
- break;
- case 19:
- ReplaceSpells(pPlayer, SUBTLETY_ROGUE_SPELLS, 2);
- break;
- case 20:
- ReplaceSpells(pPlayer, ASSASSINATION_ROGUE_SPELLS, 2);
- break;
- case 21:
- ReplaceSpells(pPlayer, HOLY_PRIEST_SPELLS, 3);
- break;
- case 22:
- ReplaceSpells(pPlayer, SHADOW_PRIEST_SPELLS, 2);
- break;
- case 23:
- ReplaceSpells(pPlayer, DISCIPLINE_PRIEST_SPELLS, 2);
- break;
- case 27:
- ReplaceSpells(pPlayer, ELEMENTAL_SHAMAN_SPELLS, 2);
- break;
- case 28:
- ReplaceSpells(pPlayer, ENHANCEMENT_SHAMAN_SPELLS, 2);
- break;
- case 29:
- ReplaceSpells(pPlayer, RESTORATION_SHAMAN_SPELLS, 2);
- break;
- case 30:
- ReplaceSpells(pPlayer, FROST_MAGE_SPELLS, 2);
- break;
- case 31:
- ReplaceSpells(pPlayer, ARCANE_MAGE_SPELLS, 2);
- break;
- case 32:
- ReplaceSpells(pPlayer, FIRE_MAGE_SPELLS, 2);
- break;
- case 33:
- ReplaceSpells(pPlayer, DESTRUCTION_WARLOCK_SPELLS, 2);
- break;
- case 34:
- ReplaceSpells(pPlayer, AFFLICTION_WARLOCK_SPELLS, 2);
- break;
- case 35:
- ReplaceSpells(pPlayer, DEMONOLOGY_WARLOCK_SPELLS, 2);
- break;
- case 36:
- ReplaceSpells(pPlayer, FERAL_DRUID_SPELLS, 3);
- break;
- case 37:
- ReplaceSpells(pPlayer, RESTORATION_DRUID_SPELLS, 2);
- break;
- case 38:
- ReplaceSpells(pPlayer, BALANCE_DRUID_SPELLS, 2);
- break;
- case 39:
- ReplaceSpells(pPlayer, MARK_HUNTER_SPELLS, 2);
- break;
- case 40:
- ReplaceSpells(pPlayer, BEAST_HUNTER_SPELLS, 2);
- break;
- case 41:
- ReplaceSpells(pPlayer, SURV_HUNTER_SPELLS, 2);
- break;
- }
- return true;
- }
- };
- void AddSC_Spell_Trader()
- {
- new Gossip_Spells();
- }
Add Comment
Please, Sign In to add comment