Guest User

Untitled

a guest
Jul 17th, 2018
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.34 KB | None | 0 0
  1. #include "ScriptPCH.h"
  2.  
  3. uint32 ALL_PALADIN_SPELLS[6] = {20216, 31842, 20925, 64205, 35395, 20066};
  4. uint32 RET_PALADIN_SPELLS[2] = {35395, 20066};
  5. uint32 HOLY_PALADIN_SPELLS[2] = {20216, 31842};
  6. uint32 PROT_PALADIN_SPELLS[2] = {20925, 64205};
  7.  
  8. uint32 ALL_ROGUE_SPELLS[6] = {14177, 1329, 13877, 13750, 14278, 14183};
  9. uint32 ASSASSINATION_ROGUE_SPELLS[2] = {14177, 1329};
  10. uint32 SUBTLETY_ROGUE_SPELLS[2] = {14278, 14183};
  11. uint32 COMBAT_ROGUE_SPELLS[2] = {13877, 13750};
  12.  
  13. uint32 ALL_PRIEST_SPELLS[7] = {10060, 33206, 20711, 15237, 15430, 15473, 15407};
  14. uint32 HOLY_PRIEST_SPELLS[3] = {20711, 15237, 15430};
  15. uint32 SHADOW_PRIEST_SPELLS[2] = {15473, 15407};
  16. uint32 DISCIPLINE_PRIEST_SPELLS[2] = {10060, 33206};
  17.  
  18. uint32 ALL_SHAMAN_SPELLS[6] = {16166, 16041, 674, 17364, 974, 16190};
  19. uint32 ENHANCEMENT_SHAMAN_SPELLS[2] = {674, 17364};
  20. uint32 RESTORATION_SHAMAN_SPELLS[2] = {974, 16190};
  21. uint32 ELEMENTAL_SHAMAN_SPELLS[2] = {16166, 16041};
  22.  
  23. uint32 ALL_DRUID_SPELLS[7] = {24858, 5570, 18562, 65139, 49376, 16979, 61336};
  24. uint32 RESTORATION_DRUID_SPELLS[2] = {18562, 65139};
  25. uint32 FERAL_DRUID_SPELLS[3] = {49376, 16979, 61336};
  26. uint32 BALANCE_DRUID_SPELLS[2] = {24858, 5570};
  27.  
  28. uint32 ALL_MAGE_SPELLS[6] = {31589, 12042, 11366, 11129, 12472, 11426};
  29. uint32 FROST_MAGE_SPELLS[2] = {12472, 11426};
  30. uint32 FIRE_MAGE_SPELLS[2] = {11366, 11129};
  31. uint32 ARCANE_MAGE_SPELLS[2] = {31589, 12042};
  32.  
  33. uint32 ALL_WARLOCK_SPELLS[6] = {18223, 63108, 19028, 18771, 17877, 17962};
  34. uint32 AFFLICTION_WARLOCK_SPELLS[2] = {18223, 63108};
  35. uint32 DESTRUCTION_WARLOCK_SPELLS[2] = {17877, 17962};
  36. uint32 DEMONOLOGY_WARLOCK_SPELLS[2] = {19028, 18771};
  37.  
  38. uint32 ALL_WARRIOR_SPELLS[5] = {12294, 674, 12292, 12809, 12975};
  39. uint32 ARMS_WARRIOR_SPELLS[1] = {12294};
  40. uint32 FURY_WARRIOR_SPELLS[2] = {674, 12292};
  41. uint32 PROTECTION_WARRIOR_SPELLS[2] = {12809, 12975};
  42.  
  43. uint32 ALL_HUNTER_SPELLS[6] = {19577, 53265, 19506, 34490, 19503, 19306};
  44. uint32 MARK_HUNTER_SPELLS[2] = {19506, 34490};
  45. uint32 SURV_HUNTER_SPELLS[2] = {19503, 19306};
  46. uint32 BEAST_HUNTER_SPELLS[2] = {19577, 53265};
  47.  
  48. class Gossip_Spells : public CreatureScript
  49. {
  50.     public:
  51.         Gossip_Spells() : CreatureScript("Spell_Trader"){}
  52.  
  53.         void RemoveSpells(Player * pPlayer, uint32 spell_array[], int arraylength)
  54.         {
  55.             for(int i = 0; i < arraylength; i++)
  56.             {
  57.                 if(pPlayer->HasSpell(spell_array[i]))
  58.                 {
  59.                     pPlayer->removeSpell(spell_array[i], false, false);
  60.                 }
  61.             }
  62.  
  63.         }
  64.  
  65.         void ReplaceSpells(Player * pPlayer, uint32 spell_array[], int arraylength)
  66.         {
  67.             //unlearn spells according to class
  68.             switch(pPlayer->getClass())
  69.             {
  70.             case CLASS_WARRIOR:
  71.                 RemoveSpells(pPlayer, ALL_WARRIOR_SPELLS, 5);
  72.                 break;
  73.             case CLASS_PALADIN:
  74.                 RemoveSpells(pPlayer, ALL_PALADIN_SPELLS, 6);
  75.                 break;
  76.             case CLASS_ROGUE:
  77.                 RemoveSpells(pPlayer, ALL_ROGUE_SPELLS, 6);
  78.                 break;
  79.             case CLASS_PRIEST:
  80.                 RemoveSpells(pPlayer, ALL_PRIEST_SPELLS, 7);
  81.                 break;
  82.             case CLASS_SHAMAN:
  83.                 RemoveSpells(pPlayer, ALL_SHAMAN_SPELLS, 6);
  84.                 break;
  85.             case CLASS_MAGE:
  86.                 RemoveSpells(pPlayer, ALL_MAGE_SPELLS, 6);
  87.                 break;
  88.             case CLASS_WARLOCK:
  89.                 RemoveSpells(pPlayer, ALL_WARLOCK_SPELLS, 6);
  90.                 break;
  91.             case CLASS_DRUID:
  92.                 RemoveSpells(pPlayer, ALL_DRUID_SPELLS, 7);
  93.                 break;
  94.             case CLASS_HUNTER:
  95.                 RemoveSpells(pPlayer, ALL_HUNTER_SPELLS, 6);
  96.                 break;
  97.             }
  98.             //loop and learn spells
  99.             for(int i = 0; i < arraylength; i++)
  100.             {
  101.                 pPlayer->learnSpell(spell_array[i], false);
  102.             }
  103.  
  104.         }
  105.  
  106.         bool OnGossipHello(Player * pPlayer, Creature * pCreature)
  107.         {
  108.             pPlayer->ADD_GOSSIP_ITEM(4, "Choose an Option:", GOSSIP_SENDER_MAIN, 0);
  109.             pPlayer->ADD_GOSSIP_ITEM(4, "Show me my specs", GOSSIP_SENDER_MAIN, 45);
  110.             pPlayer->PlayerTalkClass->SendGossipMenu(873, pCreature->GetGUID());
  111.             return true;
  112.         }
  113.  
  114.         bool OnGossipSelect(Player * pPlayer, Creature * pCreature, uint32 /*uiSender*/, uint32 uiAction)
  115.         {
  116.             pPlayer->PlayerTalkClass->ClearMenus();
  117.             switch(uiAction)
  118.             {
  119.                 case 45:
  120.                     if(pPlayer->getClass() == CLASS_WARRIOR)
  121.                     {
  122.                         pPlayer->ADD_GOSSIP_ITEM(4, "Protection", GOSSIP_SENDER_MAIN, 12);
  123.                         pPlayer->ADD_GOSSIP_ITEM(4, "Arms", GOSSIP_SENDER_MAIN, 13);
  124.                         pPlayer->ADD_GOSSIP_ITEM(4, "Fury", GOSSIP_SENDER_MAIN, 14);
  125.                         pPlayer->PlayerTalkClass->SendGossipMenu(875, pCreature->GetGUID());
  126.                     }
  127.                     if(pPlayer->getClass() == CLASS_PALADIN)
  128.                     {
  129.                         pPlayer->ADD_GOSSIP_ITEM(4, "Protection", GOSSIP_SENDER_MAIN, 15);
  130.                         pPlayer->ADD_GOSSIP_ITEM(4, "Retribtion", GOSSIP_SENDER_MAIN, 16);
  131.                         pPlayer->ADD_GOSSIP_ITEM(4, "Holy", GOSSIP_SENDER_MAIN, 17);
  132.                         pPlayer->PlayerTalkClass->SendGossipMenu(875, pCreature->GetGUID());
  133.                     }
  134.                     if(pPlayer->getClass() == CLASS_ROGUE)
  135.                     {
  136.                         pPlayer->ADD_GOSSIP_ITEM(4, "Combat", GOSSIP_SENDER_MAIN, 18);
  137.                         pPlayer->ADD_GOSSIP_ITEM(4, "Subtlety", GOSSIP_SENDER_MAIN, 19);
  138.                         pPlayer->ADD_GOSSIP_ITEM(4, "Assassination", GOSSIP_SENDER_MAIN, 20);
  139.                         pPlayer->PlayerTalkClass->SendGossipMenu(875, pCreature->GetGUID());
  140.                     }
  141.                     if(pPlayer->getClass() == CLASS_PRIEST)
  142.                     {
  143.                         pPlayer->ADD_GOSSIP_ITEM(4, "Holy", GOSSIP_SENDER_MAIN, 21);
  144.                         pPlayer->ADD_GOSSIP_ITEM(4, "Shadow", GOSSIP_SENDER_MAIN, 22);
  145.                         pPlayer->ADD_GOSSIP_ITEM(4, "Discipline", GOSSIP_SENDER_MAIN, 23);
  146.                         pPlayer->PlayerTalkClass->SendGossipMenu(875, pCreature->GetGUID());
  147.                     }
  148.                     if(pPlayer->getClass() == CLASS_SHAMAN)
  149.                     {
  150.                         pPlayer->ADD_GOSSIP_ITEM(4, "Elemental", GOSSIP_SENDER_MAIN, 27);
  151.                         pPlayer->ADD_GOSSIP_ITEM(4, "Enhancement", GOSSIP_SENDER_MAIN, 28);
  152.                         pPlayer->ADD_GOSSIP_ITEM(4, "Restoration", GOSSIP_SENDER_MAIN, 29);
  153.                         pPlayer->PlayerTalkClass->SendGossipMenu(875, pCreature->GetGUID());
  154.                     }
  155.                     if(pPlayer->getClass() == CLASS_MAGE)
  156.                     {
  157.                         pPlayer->ADD_GOSSIP_ITEM(4, "Frost", GOSSIP_SENDER_MAIN, 30);
  158.                         pPlayer->ADD_GOSSIP_ITEM(4, "Arcane", GOSSIP_SENDER_MAIN, 31);
  159.                         pPlayer->ADD_GOSSIP_ITEM(4, "Fire", GOSSIP_SENDER_MAIN, 32);
  160.                         pPlayer->PlayerTalkClass->SendGossipMenu(875, pCreature->GetGUID());
  161.                     }
  162.                     if(pPlayer->getClass() == CLASS_WARLOCK)
  163.                     {
  164.                         pPlayer->ADD_GOSSIP_ITEM(4, "Destruction", GOSSIP_SENDER_MAIN, 33);
  165.                         pPlayer->ADD_GOSSIP_ITEM(4, "Affliction", GOSSIP_SENDER_MAIN, 34);
  166.                         pPlayer->ADD_GOSSIP_ITEM(4, "Demonology", GOSSIP_SENDER_MAIN, 35);
  167.                         pPlayer->PlayerTalkClass->SendGossipMenu(875, pCreature->GetGUID());
  168.                     }
  169.                     if(pPlayer->getClass() == CLASS_DRUID)
  170.                     {
  171.                         pPlayer->ADD_GOSSIP_ITEM(4, "Feral", GOSSIP_SENDER_MAIN, 36);
  172.                         pPlayer->ADD_GOSSIP_ITEM(4, "Restoration", GOSSIP_SENDER_MAIN, 37);
  173.                         pPlayer->ADD_GOSSIP_ITEM(4, "Balance", GOSSIP_SENDER_MAIN, 38);
  174.                         pPlayer->PlayerTalkClass->SendGossipMenu(875, pCreature->GetGUID());
  175.                     }
  176.                     if(pPlayer->getClass() == CLASS_HUNTER)
  177.                     {
  178.                         pPlayer->ADD_GOSSIP_ITEM(4, "Marksman", GOSSIP_SENDER_MAIN, 39);
  179.                         pPlayer->ADD_GOSSIP_ITEM(4, "Beast Mastery", GOSSIP_SENDER_MAIN, 40);
  180.                         pPlayer->ADD_GOSSIP_ITEM(4, "Survival", GOSSIP_SENDER_MAIN, 41);
  181.                         pPlayer->PlayerTalkClass->SendGossipMenu(875, pCreature->GetGUID());
  182.                     }
  183.                     break;
  184.                 case 12:
  185.                     ReplaceSpells(pPlayer, PROTECTION_WARRIOR_SPELLS, 2);
  186.                     break;
  187.                 case 13:
  188.                     ReplaceSpells(pPlayer, ARMS_WARRIOR_SPELLS, 1);
  189.                     break;
  190.                 case 14:
  191.                     ReplaceSpells(pPlayer, FURY_WARRIOR_SPELLS, 2);
  192.                     break;
  193.                 case 15:
  194.                     ReplaceSpells(pPlayer, PROT_PALADIN_SPELLS, 2);
  195.                     break;
  196.                 case 16:
  197.                     ReplaceSpells(pPlayer, RET_PALADIN_SPELLS, 2);
  198.                     break;
  199.                 case 17:
  200.                     ReplaceSpells(pPlayer, HOLY_PALADIN_SPELLS, 2);
  201.                     break;
  202.                 case 18:
  203.                     ReplaceSpells(pPlayer, COMBAT_ROGUE_SPELLS, 2);
  204.                     break;
  205.                 case 19:
  206.                     ReplaceSpells(pPlayer, SUBTLETY_ROGUE_SPELLS, 2);
  207.                     break;
  208.                 case 20:
  209.                     ReplaceSpells(pPlayer, ASSASSINATION_ROGUE_SPELLS, 2);
  210.                     break;
  211.                 case 21:
  212.                     ReplaceSpells(pPlayer, HOLY_PRIEST_SPELLS, 3);
  213.                     break;
  214.                 case 22:
  215.                     ReplaceSpells(pPlayer, SHADOW_PRIEST_SPELLS, 2);
  216.                     break;
  217.                 case 23:
  218.                     ReplaceSpells(pPlayer, DISCIPLINE_PRIEST_SPELLS, 2);
  219.                     break;
  220.                 case 27:
  221.                     ReplaceSpells(pPlayer, ELEMENTAL_SHAMAN_SPELLS, 2);
  222.                     break;
  223.                 case 28:
  224.                     ReplaceSpells(pPlayer, ENHANCEMENT_SHAMAN_SPELLS, 2);
  225.                     break;
  226.                 case 29:
  227.                     ReplaceSpells(pPlayer, RESTORATION_SHAMAN_SPELLS, 2);
  228.                     break;
  229.                 case 30:
  230.                     ReplaceSpells(pPlayer, FROST_MAGE_SPELLS, 2);
  231.                     break;
  232.                 case 31:
  233.                     ReplaceSpells(pPlayer, ARCANE_MAGE_SPELLS, 2);
  234.                     break;
  235.                 case 32:
  236.                     ReplaceSpells(pPlayer, FIRE_MAGE_SPELLS, 2);
  237.                     break;
  238.                 case 33:
  239.                     ReplaceSpells(pPlayer, DESTRUCTION_WARLOCK_SPELLS, 2);
  240.                     break;
  241.                 case 34:
  242.                     ReplaceSpells(pPlayer, AFFLICTION_WARLOCK_SPELLS, 2);
  243.                     break;
  244.                 case 35:
  245.                     ReplaceSpells(pPlayer, DEMONOLOGY_WARLOCK_SPELLS, 2);
  246.                     break;
  247.                 case 36:
  248.                     ReplaceSpells(pPlayer, FERAL_DRUID_SPELLS, 3);
  249.                     break;
  250.                 case 37:
  251.                     ReplaceSpells(pPlayer, RESTORATION_DRUID_SPELLS, 2);
  252.                     break;
  253.                 case 38:
  254.                     ReplaceSpells(pPlayer, BALANCE_DRUID_SPELLS, 2);
  255.                     break;
  256.                 case 39:
  257.                     ReplaceSpells(pPlayer, MARK_HUNTER_SPELLS, 2);
  258.                     break;
  259.                 case 40:
  260.                     ReplaceSpells(pPlayer, BEAST_HUNTER_SPELLS, 2);
  261.                     break;
  262.                 case 41:
  263.                     ReplaceSpells(pPlayer, SURV_HUNTER_SPELLS, 2);
  264.                     break;
  265.             }
  266.             return true;
  267.         }
  268. };
  269.  
  270. void AddSC_Spell_Trader()
  271. {
  272.     new Gossip_Spells();
  273. }
Add Comment
Please, Sign In to add comment