Advertisement
Emulation

Untitled

May 20th, 2015
286
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.05 KB | None | 0 0
  1. #include "ScriptPCH.h"
  2.  
  3. struct Choice
  4. {
  5.     uint32 action;
  6.     uint8 classId;
  7.     const char* talentName;
  8. };
  9.  
  10. Choice TalentChoice[] =
  11. {
  12.     /* Paladin */
  13.     { 1, CLASS_PALADIN, "Retribution" },
  14.     { 2, CLASS_PALADIN, "Holy" },
  15.     { 3, CLASS_PALADIN, "Protection" },
  16.     /* Mage */
  17.     { 4, CLASS_MAGE, "Arcane" },
  18.     { 5, CLASS_MAGE, "Fire" },
  19.     { 6, CLASS_MAGE, "Frost" },
  20.     /* Warrior */
  21.     { 7, CLASS_WARRIOR, "Arms" },
  22.     { 8, CLASS_WARRIOR, "Fury" },
  23.     { 9, CLASS_WARRIOR, "Protection" },
  24.     /* Priest */
  25.     { 10, CLASS_PRIEST, "Holy" },
  26.     { 11, CLASS_PRIEST, "Discipline" },
  27.     { 12, CLASS_PRIEST, "Shadow" },
  28.     /* Hunter */
  29.     { 13, CLASS_HUNTER, "Marksman" },
  30.     { 14, CLASS_HUNTER, "Survival" },
  31.     { 15, CLASS_HUNTER, "Beastmaster" },
  32.     /* Rogue */
  33.     { 16, CLASS_ROGUE, "Sub" },
  34.     { 17, CLASS_ROGUE, "Assassination" },
  35.     { 18, CLASS_ROGUE, "Combat" },
  36.     /* Shaman */
  37.     { 19, CLASS_SHAMAN, "Restoration" },
  38.     { 20, CLASS_SHAMAN, "Enchancement" },
  39.     { 21, CLASS_SHAMAN, "Elemental" },
  40.     /* Warlock */
  41.     { 22, CLASS_WARLOCK, "Affliciton" },
  42.     { 23, CLASS_WARLOCK, "Demonology" },
  43.     { 24, CLASS_WARLOCK, "Destruction" },
  44.     /* Druid */
  45.     { 25, CLASS_DRUID, "Feral" },
  46.     { 26, CLASS_DRUID, "Balance" },
  47.     { 27, CLASS_DRUID, "Restoration" },
  48. };
  49.  
  50.  
  51. class talent_spec_npc : public CreatureScript
  52. {
  53. public:
  54.     talent_spec_npc() : CreatureScript("talent_spec_npc") { }
  55.  
  56.     bool OnGossipHello(Player* player, Creature* creature)
  57.     {
  58.         for (int i = 0; i < sizeof(TalentChoice) / sizeof(uint32); i++)
  59.             if (player->getClass() == TalentChoice[i].classId)
  60.                 player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, TalentChoice[i].talentName, GOSSIP_SENDER_MAIN, TalentChoice[i].action);
  61.         player->PlayerTalkClass->SendGossipMenu(1, creature->GetGUID());
  62.         return true;
  63.     }
  64.  
  65.     bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
  66.     {
  67.         player->PlayerTalkClass->ClearMenus();
  68.  
  69.         switch (action)
  70.         {
  71.             /* Paladin */
  72.         case 1: // Retrubition
  73.             player->RemoveSpell(54428, false);
  74.             player->RemoveSpell(19746, false);
  75.             player->RemoveSpell(62124, false);
  76.             player->RemoveSpell(498, false);
  77.             player->LearnSpell(7294, false);
  78.             player->LearnSpell(35395, false);
  79.             break;
  80.         case 2: // Holy
  81.             player->RemoveSpell(62124, false);
  82.             player->RemoveSpell(498, false);
  83.             player->RemoveSpell(7294, false);
  84.             player->RemoveSpell(35395, false);
  85.             player->LearnSpell(54428, false);
  86.             player->LearnSpell(19746, false);
  87.             break;
  88.         case 3: // Protection
  89.             player->RemoveSpell(54428, false);
  90.             player->RemoveSpell(19746, false);
  91.             player->RemoveSpell(7294, false);
  92.             player->RemoveSpell(35395, false);
  93.             player->RemoveSpell(62124, false);
  94.             player->LearnSpell(498, false);
  95.             break;
  96.             /* Mage */
  97.         case 4: // Arcane
  98.             player->RemoveSpell(44614, false);
  99.             player->RemoveSpell(44457, false);
  100.             player->RemoveSpell(120, false);
  101.             player->RemoveSpell(45438, false);
  102.             player->LearnSpell(12051, false);
  103.             player->LearnSpell(5143, false);
  104.             break;
  105.         case 5: // Fire
  106.             player->RemoveSpell(12051, false);
  107.             player->RemoveSpell(5143, false);
  108.             player->RemoveSpell(120, false);
  109.             player->RemoveSpell(45438, false);
  110.             player->LearnSpell(44614, false);
  111.             player->LearnSpell(44457, false);
  112.             break;
  113.         case 6: // Frost
  114.             player->RemoveSpell(12051, false);
  115.             player->RemoveSpell(5143, false);
  116.             player->RemoveSpell(44614, false);
  117.             player->RemoveSpell(44457, false);
  118.             player->LearnSpell(120, false);
  119.             player->LearnSpell(45438, false);
  120.             break;
  121.             /* Warrior */
  122.         case 7: // Arms
  123.             player->RemoveSpell(6572, false);
  124.             player->RemoveSpell(2565, false);
  125.             player->RemoveSpell(23881, false);
  126.             player->RemoveSpell(674, false);
  127.             player->LearnSpell(1715, false);
  128.             player->LearnSpell(20230, false);
  129.             break;
  130.         case 8: // Fury
  131.             player->RemoveSpell(1715, false);
  132.             player->RemoveSpell(20230, false);
  133.             player->RemoveSpell(6572, false);
  134.             player->RemoveSpell(2565, false);
  135.             player->LearnSpell(23881, false);
  136.             player->LearnSpell(674, false);
  137.             break;
  138.         case 9: // Protection
  139.             player->RemoveSpell(1715, false);
  140.             player->RemoveSpell(20230, false);
  141.             player->RemoveSpell(23881, false);
  142.             player->RemoveSpell(674, false);
  143.             player->LearnSpell(6572, false);
  144.             player->LearnSpell(2565, false);
  145.             break;
  146.             /* Priest */
  147.         case 10: // Holy
  148.             player->RemoveSpell(17, false);
  149.             player->RemoveSpell(588, false);
  150.             player->RemoveSpell(15407, false);
  151.             player->RemoveSpell(8122, false);
  152.             player->LearnSpell(2061, false);
  153.             player->LearnSpell(14914, false);
  154.             break;
  155.         case 11: // Discipline
  156.             player->RemoveSpell(2061, false);
  157.             player->RemoveSpell(14914, false);
  158.             player->RemoveSpell(15407, false);
  159.             player->RemoveSpell(8122, false);
  160.             player->LearnSpell(588, false);
  161.             player->LearnSpell(17, false);
  162.             break;
  163.         case 12: // Shadow
  164.             player->RemoveSpell(17, false);
  165.             player->RemoveSpell(588, false);
  166.             player->RemoveSpell(2061, false);
  167.             player->RemoveSpell(14914, false);
  168.             player->LearnSpell(15407, false);
  169.             player->LearnSpell(8122, false);
  170.             break;
  171.             /* Hunter */
  172.         case 13: // Marksman
  173.             player->RemoveSpell(13165, false);
  174.             player->RemoveSpell(1495, false);
  175.             player->RemoveSpell(1499, false);
  176.             player->RemoveSpell(2974, false);
  177.             player->LearnSpell(2643, false);
  178.             player->LearnSpell(3044, false);
  179.             break;
  180.         case 14: // Survival
  181.             player->RemoveSpell(13165, false);
  182.             player->RemoveSpell(2643, false);
  183.             player->RemoveSpell(3044, false);
  184.             player->RemoveSpell(1499, false);
  185.             player->LearnSpell(1495, false);
  186.             player->LearnSpell(2974, false);
  187.             break;
  188.         case 15: // Beastmaster
  189.             player->RemoveSpell(2974, false);
  190.             player->RemoveSpell(1495, false);
  191.             player->RemoveSpell(2643, false);
  192.             player->RemoveSpell(3044, false);
  193.             player->LearnSpell(13165, false);
  194.             player->LearnSpell(1499, false);
  195.             break;
  196.             /* Rogue */
  197.         case 16: // Sub
  198.             player->RemoveSpell(703, false);
  199.             player->RemoveSpell(5171, false);
  200.             player->RemoveSpell(5277, false);
  201.             player->RemoveSpell(1776, false);
  202.             player->LearnSpell(8676, false);
  203.             player->LearnSpell(2983, false);
  204.             break;
  205.         case 17: // Assassination
  206.             player->RemoveSpell(8676, false);
  207.             player->RemoveSpell(2983, false);
  208.             player->RemoveSpell(5277, false);
  209.             player->RemoveSpell(1776, false);
  210.             player->LearnSpell(703, false);
  211.             player->LearnSpell(5171, false);
  212.             break;
  213.         case 18: // Combat
  214.             player->RemoveSpell(8676, false);
  215.             player->RemoveSpell(2983, false);
  216.             player->RemoveSpell(703, false);
  217.             player->RemoveSpell(84668, false);
  218.             player->LearnSpell(5277, false);
  219.             player->LearnSpell(5171, false);
  220.             break;
  221.             /* Shaman */
  222.         case 19: // Restoration
  223.             player->RemoveSpell(8056, false);
  224.             player->RemoveSpell(674, false);
  225.             player->RemoveSpell(51490, false);
  226.             player->RemoveSpell(51505, false);
  227.             player->LearnSpell(51730, false);
  228.             player->LearnSpell(16176, false);
  229.             break;
  230.         case 20: // Enchancement
  231.             player->RemoveSpell(51730, false);
  232.             player->RemoveSpell(16176, false);
  233.             player->RemoveSpell(51490, false);
  234.             player->RemoveSpell(51505, false);
  235.             player->LearnSpell(8056, false);
  236.             player->LearnSpell(674, false);
  237.             break;
  238.         case 21: // Elemental
  239.             player->RemoveSpell(51730, false);
  240.             player->RemoveSpell(16176, false);
  241.             player->RemoveSpell(8056, false);
  242.             player->RemoveSpell(674, false);
  243.             player->LearnSpell(51490, false);
  244.             player->LearnSpell(51505, false);
  245.             break;
  246.             /* Warlock */
  247.         case 22: // Affliction
  248.             player->RemoveSpell(12746, false);
  249.             player->RemoveSpell(47897, false);
  250.             player->RemoveSpell(707, false);
  251.             player->RemoveSpell(17962, false);
  252.             player->LearnSpell(5484, false);
  253.             player->LearnSpell(980, false);
  254.             break;
  255.         case 23: // Demonology
  256.             player->RemoveSpell(5484, false);
  257.             player->RemoveSpell(980, false);
  258.             player->RemoveSpell(707, false);
  259.             player->RemoveSpell(17962, false);
  260.             player->LearnSpell(12746, false);
  261.             player->LearnSpell(47897, false);
  262.             break;
  263.         case 24: // Destruction
  264.             player->RemoveSpell(5484, false);
  265.             player->RemoveSpell(980, false);
  266.             player->RemoveSpell(12746, false);
  267.             player->RemoveSpell(47897, false);
  268.             player->LearnSpell(707, false);
  269.             player->LearnSpell(17962, false);
  270.             break;
  271.             /* Druid */
  272.         case 25: // Feral
  273.             player->RemoveSpell(5570, false);
  274.             player->RemoveSpell(50516, false);
  275.             player->RemoveSpell(50464, false);
  276.             player->RemoveSpell(8936, false);
  277.             player->LearnSpell(770, false);
  278.             player->LearnSpell(22812, false);
  279.             break;
  280.         case 26: // Balance
  281.             player->RemoveSpell(770, false);
  282.             player->RemoveSpell(22812, false);
  283.             player->RemoveSpell(50464, false);
  284.             player->RemoveSpell(8936, false);
  285.             player->LearnSpell(5570, false);
  286.             player->LearnSpell(50516, false);
  287.             break;
  288.         case 27: // Restoration
  289.             player->RemoveSpell(770, false);
  290.             player->RemoveSpell(22812, false);
  291.             player->RemoveSpell(5570, false);
  292.             player->RemoveSpell(50516, false);
  293.             player->LearnSpell(50464, false);
  294.             player->LearnSpell(8936, false);
  295.             break;
  296.         }
  297.         player->CLOSE_GOSSIP_MENU();
  298.         return true;
  299.     }
  300. };
  301.  
  302.  
  303. void AddSC_talent_spec_npc()
  304. {
  305.     new talent_spec_npc();
  306. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement