Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "ScriptPCH.h"
- class Talent_Specialization : public CreatureScript
- {
- public:
- Talent_Specialization() : CreatureScript("Talent_Specialization") { }
- bool HasSpec(Player* pPlayer, uint32 talentID)
- {
- TalentEntry const* talentInfo = sTalentStore.LookupEntry(talentID);
- if (!talentInfo) // You gave me the wrong ID
- return false;
- uint32 points = 0;
- uint32 tTab = talentInfo->TalentTab;
- if (talentInfo->Row > 0)
- {
- uint32 numRows = sTalentStore.GetNumRows();
- for (uint32 i = 0; i < numRows; i++) // Loop through all talents.
- {
- // Someday, someone needs to revamp
- const TalentEntry* tmpTalent = sTalentStore.LookupEntry(i);
- if (tmpTalent) // the way talents are tracked
- {
- if (tmpTalent->TalentTab == tTab)
- {
- for (uint8 rank = 0; rank < MAX_TALENT_RANK; rank++)
- {
- if (tmpTalent->RankID[rank] != 0)
- {
- if (pPlayer->HasSpell(tmpTalent->RankID[rank]))
- {
- points += (rank + 1);
- }
- }
- }
- }
- }
- }
- }
- if (points > 11)
- return true;
- return false;
- }
- bool OnGossipHello(Player * pPlayer, Creature * pCreature)
- {
- switch(pPlayer->getClass())
- {
- case CLASS_PALADIN:
- pPlayer->ADD_GOSSIP_ITEM(7, "Greetings. You are a paladin. Paladins can perform all three possible roles of damage dealing, healing, or tanking.", GOSSIP_SENDER_MAIN, 100);
- pPlayer->ADD_GOSSIP_ITEM(3, "Click here to be a |cffE066FFRetribution|r Paladin. This specialization focuses on damage dealing by applying additional holy damage to each attack.", GOSSIP_SENDER_MAIN, 0);
- pPlayer->ADD_GOSSIP_ITEM(0, "This specialization features:\nPassives: Judgements of the Wise\nActives: Crusader Strike and Repentance", GOSSIP_SENDER_MAIN, 100);
- pPlayer->ADD_GOSSIP_ITEM(3, "Click here to be a |cffFFFFFFHoly|r Paladin.", GOSSIP_SENDER_MAIN, 1);
- pPlayer->ADD_GOSSIP_ITEM(0, "This specialization features:\nPassives: Sheath of Light and Judgements of the Pure.\nActives: Cleanse and Divine Favor.", GOSSIP_SENDER_MAIN, 100);
- pPlayer->ADD_GOSSIP_ITEM(3, "Click here to be a |cff2E37FEProtection|r Paladin.", GOSSIP_SENDER_MAIN, 2);
- pPlayer->ADD_GOSSIP_ITEM(0, "This specialization features: \nPassives: Rebout. \nActives: Hammer of the Righteous.", GOSSIP_SENDER_MAIN, 100);
- pPlayer->PlayerTalkClass->SendGossipMenu(907, pCreature->GetGUID());
- break;
- case CLASS_MAGE:
- pPlayer->ADD_GOSSIP_ITEM(7, "Greetings. You are a mage. Mages may only fulfill the role of damage dealing, but they are notoriously good at doing so.", GOSSIP_SENDER_MAIN, 100);
- pPlayer->ADD_GOSSIP_ITEM(3, "Click here to be an |cff1D7CF2Arcane|r Mage", GOSSIP_SENDER_MAIN, 3);
- pPlayer->ADD_GOSSIP_ITEM(0, "This specialization features:\nPassive: Arcane Mind, Arcane Empowerment and Missile Barrage.\nPresence of Mind.", GOSSIP_SENDER_MAIN, 100);
- pPlayer->ADD_GOSSIP_ITEM(3, "Click here to be a |cffB22222Fire|r Mage.", GOSSIP_SENDER_MAIN, 4);
- pPlayer->ADD_GOSSIP_ITEM(0, "This specialization features:\nPassives: Blazing Speed, Hotstreak and Critical Mass\nActives: Combustion and Blast Wave", GOSSIP_SENDER_MAIN, 100);
- pPlayer->ADD_GOSSIP_ITEM(3, "Click here to be a |cff0EBFE9Frost|r Mage.", GOSSIP_SENDER_MAIN, 5);
- pPlayer->ADD_GOSSIP_ITEM(0, "This specialization features: \nPassives: Fingers of Frost and Brainfreeze\nActives: Ice Block, Deep Freeze.", GOSSIP_SENDER_MAIN, 100);
- pPlayer->PlayerTalkClass->SendGossipMenu(907, pCreature->GetGUID());
- break;
- case CLASS_WARRIOR:
- pPlayer->ADD_GOSSIP_ITEM(7, "Greetings. You are a warrior. Warriors can perform well in both the role of a tank and a damage dealer.", GOSSIP_SENDER_MAIN, 100);
- pPlayer->ADD_GOSSIP_ITEM(3, "Click here to be an |cff7B68EEArms|r Warrior.", GOSSIP_SENDER_MAIN, 600);
- pPlayer->ADD_GOSSIP_ITEM(0, "This specialization features:\nPassives: Unrelenting Assault and Juggernaut (And a weapon specialization).\nActives: (NONE)", GOSSIP_SENDER_MAIN, 100);
- pPlayer->ADD_GOSSIP_ITEM(3, "Click here to be a |cff8B2500Fury|r Warrior.", GOSSIP_SENDER_MAIN, 7);
- pPlayer->ADD_GOSSIP_ITEM(0, "This specialization features:\nPassives: Flurry and Titans Grip.\nActives: Bloodthirst", GOSSIP_SENDER_MAIN, 100);
- pPlayer->ADD_GOSSIP_ITEM(3, "Click here to be a |cff8B5742Protection|r Warrior.", GOSSIP_SENDER_MAIN, 8);
- pPlayer->ADD_GOSSIP_ITEM(0, "This specialization features:\nPassives: Damage Shield and Vitality.\nActives: Vigilance and Shockwave.", GOSSIP_SENDER_MAIN, 100);
- pPlayer->PlayerTalkClass->SendGossipMenu(907, pCreature->GetGUID());
- break;
- case CLASS_PRIEST:
- pPlayer->ADD_GOSSIP_ITEM(7, "Greetings. You are a priest. Priests may act as damage dealers by harming the soul and healers by soothing the spirit.", GOSSIP_SENDER_MAIN, 100);
- pPlayer->ADD_GOSSIP_ITEM(3, "Click here to be a |cffFFFFFFHoly|r Priest.", GOSSIP_SENDER_MAIN, 9);
- pPlayer->ADD_GOSSIP_ITEM(0, "This specialization features:\nPassives: Body and Soul, Spiritual Guidance.\nActives: Guardian Spirit.", GOSSIP_SENDER_MAIN, 100);
- pPlayer->ADD_GOSSIP_ITEM(3, "Click here to be a |cff78AB46Discipline|r Priest.", GOSSIP_SENDER_MAIN, 10);
- pPlayer->ADD_GOSSIP_ITEM(0, "This specialization features:\nPassives: Divine Aegis, Focused Will, and Borrowed Time\nActives: Power Infusion.", GOSSIP_SENDER_MAIN, 100);
- pPlayer->ADD_GOSSIP_ITEM(3, "Click here to be a |cff757575Shadow|r Priest.", GOSSIP_SENDER_MAIN, 11);
- pPlayer->ADD_GOSSIP_ITEM(0, "This specialization features:\nPassives: Shadow Weaving and Shadow Power\nActives: Shadowform and Vampiric Embrace.", GOSSIP_SENDER_MAIN, 100);
- pPlayer->PlayerTalkClass->SendGossipMenu(907, pCreature->GetGUID());
- break;
- case CLASS_HUNTER:
- pPlayer->ADD_GOSSIP_ITEM(7, "Greetings. You are a hunter. Hunters have a vast array of utilities and excel in dealing damage by teaming up with a pet.", GOSSIP_SENDER_MAIN, 100);
- pPlayer->ADD_GOSSIP_ITEM(3, "Click here to be a |cff800000Marksman|r Hunter. ", GOSSIP_SENDER_MAIN, 12);
- pPlayer->ADD_GOSSIP_ITEM(0, "This specialization features passives:\nPiercing Shots, and Trueshot Aura.\nActives: Silencing Shot", GOSSIP_SENDER_MAIN, 100);
- pPlayer->ADD_GOSSIP_ITEM(3, "Click here to be a |cff7BCC70Survival|r Hunter.", GOSSIP_SENDER_MAIN, 13);
- pPlayer->ADD_GOSSIP_ITEM(0, "This specialization features:\nPassives: Expose Weakness\nActives: Frost Trap and Wyvern Sting.", GOSSIP_SENDER_MAIN, 100);
- pPlayer->ADD_GOSSIP_ITEM(3, "Click here to be a |cff8A2BE2Beastmastery|r Hunter.", GOSSIP_SENDER_MAIN, 14);
- pPlayer->ADD_GOSSIP_ITEM(0, "This specialization features:\nPassives: Kindred Spirits and Serpents Swiftness\nActives: Intimidation", GOSSIP_SENDER_MAIN, 100);
- pPlayer->PlayerTalkClass->SendGossipMenu(907, pCreature->GetGUID());
- break;
- case CLASS_ROGUE:
- pPlayer->ADD_GOSSIP_ITEM(7, "Greetings. You are a rogue. Rogues specialize in being stealthy, dealing damage should they choose to reveal themselves.", GOSSIP_SENDER_MAIN, 100);
- pPlayer->ADD_GOSSIP_ITEM(3, "Click here to be a |cff838EDESubtlety|r Rogue.", GOSSIP_SENDER_MAIN, 15);
- pPlayer->ADD_GOSSIP_ITEM(0, "This specialization features:\nPassives: Honor Among Thieves, Cheat Death, Slaughter from the Shadows\nActives: Shadowstep", GOSSIP_SENDER_MAIN, 100);
- pPlayer->ADD_GOSSIP_ITEM(3, "Click here to be an |cff8B3626Assassination|r Rogue.", GOSSIP_SENDER_MAIN, 16);
- pPlayer->ADD_GOSSIP_ITEM(0, "This specialization features:\nPassives: Overkill, Focused Attacks, Fleet Footed, Seal Fate, Deadly Brew\nActives: Mutilate.", GOSSIP_SENDER_MAIN, 100);
- pPlayer->ADD_GOSSIP_ITEM(3, "Click here to be a |cff87CEEBCombat|r Rogue.", GOSSIP_SENDER_MAIN, 1700);
- pPlayer->ADD_GOSSIP_ITEM(0, "This specialization features:\nPassives: Lightning Reflexes, Combat Potency, Unfair Advantage (And either Dagger, Swords/Axes, or Mace spec).\nActives: Adrenaline Rush, Blade Flurry", GOSSIP_SENDER_MAIN, 100);
- pPlayer->PlayerTalkClass->SendGossipMenu(907, pCreature->GetGUID());
- break;
- case CLASS_SHAMAN:
- pPlayer->ADD_GOSSIP_ITEM(7, "Greetings. You are a shaman. Shamans are able to fulfill the roles of spell caster, melee damage dealer and healer, relying greatly on their totems.", GOSSIP_SENDER_MAIN, 100);
- pPlayer->ADD_GOSSIP_ITEM(3, "Click here to be a |cff7BBF6ARestoration|r Shaman.", GOSSIP_SENDER_MAIN, 18);
- pPlayer->ADD_GOSSIP_ITEM(0, "This specialization features Passives:\nNature's Blessing\nActives: Nature's swiftness and EarthLiving Weapon.", GOSSIP_SENDER_MAIN, 100);
- pPlayer->ADD_GOSSIP_ITEM(3, "Click here to be an |cffD9D919Enhancement|r Shaman.", GOSSIP_SENDER_MAIN, 19);
- pPlayer->ADD_GOSSIP_ITEM(0, "This specialization features:\nPassives: Maelstrom weapon and Dual Wield\nActives: Stormstrike and Lavalash.", GOSSIP_SENDER_MAIN, 100);
- pPlayer->ADD_GOSSIP_ITEM(3, "Click here to be an |cff912CEEElemental|r Shaman.", GOSSIP_SENDER_MAIN, 20);
- pPlayer->ADD_GOSSIP_ITEM(0, "This specialization features:\nPassives: Lightning Mastery, Lightning Overload, and Storm Earth and Fire\nActives: Elemental Mastery", GOSSIP_SENDER_MAIN, 100);
- pPlayer->PlayerTalkClass->SendGossipMenu(907, pCreature->GetGUID());
- break;
- case CLASS_WARLOCK:
- pPlayer->ADD_GOSSIP_ITEM(7, "Greetings. You are a warlock. Warlocks use dark magic to corrupt their enemies and minions to do their dirty work.", GOSSIP_SENDER_MAIN, 100);
- pPlayer->ADD_GOSSIP_ITEM(3, "Click here to be an |cff9CCB19Affliciton|r Warlock.", GOSSIP_SENDER_MAIN, 21);
- pPlayer->ADD_GOSSIP_ITEM(0, "This specialization features \nPassives: Pandemic and Siphon Life.\nActives: (NONE).", GOSSIP_SENDER_MAIN, 100);
- pPlayer->ADD_GOSSIP_ITEM(3, "Click here to be a |cffA020F0Demonology|r Warlock.", GOSSIP_SENDER_MAIN, 22);
- pPlayer->ADD_GOSSIP_ITEM(0, "This specialization features:\nPassives:Demonic Pact, Demonic Knowledge.\nActives:Summon Felguard", GOSSIP_SENDER_MAIN, 100);
- pPlayer->ADD_GOSSIP_ITEM(3, "Click here to be a |cff9E0508Destruction|r Warlock.", GOSSIP_SENDER_MAIN, 23);
- pPlayer->ADD_GOSSIP_ITEM(0, "This specialization features:\nPassives:Backlash and Backdraft.\nActives: Conflagrate.", GOSSIP_SENDER_MAIN, 100);
- pPlayer->PlayerTalkClass->SendGossipMenu(907, pCreature->GetGUID());
- break;
- case CLASS_DRUID:
- pPlayer->ADD_GOSSIP_ITEM(7, "Greetings. You are a druid. A druid may fulfill all roles as spell caster, melee damage dealer, healer, and tank. Druids rely on their forms for survival.", GOSSIP_SENDER_MAIN, 100);
- pPlayer->ADD_GOSSIP_ITEM(3, "Click here to be a |cffE6E6FABalance|r Druid.", GOSSIP_SENDER_MAIN, 25);
- pPlayer->ADD_GOSSIP_ITEM(0, "This specialization features:\nPassives: Dreamstate, Earth and Moon, Eclipse, Improved Faerie Fire\nActives: Moonkin Form.", GOSSIP_SENDER_MAIN, 100);
- pPlayer->ADD_GOSSIP_ITEM(3, "Click here to be a |cff7BBF6ARestoration|r Druid.", GOSSIP_SENDER_MAIN, 26);
- pPlayer->ADD_GOSSIP_ITEM(0, "This specialization features:\nPassives: Nature's Bounty, Living Seed, Improved Barkskin\nActives: Tree form, Swiftmend.", GOSSIP_SENDER_MAIN, 100);
- pPlayer->ADD_GOSSIP_ITEM(3, "Click here to be a |cff7B3F00Feral|r Druid.", GOSSIP_SENDER_MAIN, 27);
- pPlayer->ADD_GOSSIP_ITEM(0, "This specialization features:\nPassives: Leader of the Pack, Rend and Tear, Primal Gore\nActives: Feral Charge.", GOSSIP_SENDER_MAIN, 100);
- pPlayer->PlayerTalkClass->SendGossipMenu(907, pCreature->GetGUID());
- break;
- case CLASS_DEATH_KNIGHT:
- pPlayer->ADD_GOSSIP_ITEM(7, "Greetings. You are a deathknight. A deathknight resilient class of soldier that may wear one down with plagues, burst you down with the potency of their very blood or be the last one standing, frozen of course.", GOSSIP_SENDER_MAIN, 100);
- pPlayer->ADD_GOSSIP_ITEM(3, "Click here to be a |cffE6E6FABlood|r Deathknight.", GOSSIP_SENDER_MAIN, 28);
- pPlayer->ADD_GOSSIP_ITEM(0, "This specialization features:\nPassives: Dreamstate, Earth and Moon, Eclipse, Improved Faerie Fire\nActives: Moonkin Form.", GOSSIP_SENDER_MAIN, 100);
- pPlayer->ADD_GOSSIP_ITEM(3, "Click here to be a |cff7BBF6AFrost|r Deathknight.", GOSSIP_SENDER_MAIN, 29);
- pPlayer->ADD_GOSSIP_ITEM(0, "This specialization features:\nPassives: Nature's Bounty, Living Seed, Improved Barkskin\nActives: Tree form, Swiftmend.", GOSSIP_SENDER_MAIN, 100);
- pPlayer->ADD_GOSSIP_ITEM(3, "Click here to be a |cff7B3F00Unholy|r Ddeathknight.", GOSSIP_SENDER_MAIN, 30);
- pPlayer->ADD_GOSSIP_ITEM(0, "This specialization features:\nPassives: Leader of the Pack, Rend and Tear, Primal Gore\nActives: Feral Charge.", GOSSIP_SENDER_MAIN, 100);
- pPlayer->PlayerTalkClass->SendGossipMenu(907, pCreature->GetGUID());
- break;
- }
- return true;
- }
- bool OnGossipSelect(Player * pPlayer, Creature * creature, uint32 sender, uint32 uiAction)
- {
- uint32 ret[3] = {31877, 35395, 20066}; //these are spellids for each class
- uint32 pprot[2] = {20135, 53595};// assuming you aren't a fuckass or cant read, this is pretty
- uint32 pholy[4] = {4987, 54155, 20216, 53503}; // obvious shit.
- uint32 arcane[4] = {31583, 12043, 12503, 54490};
- uint32 fire[5] = {11368, 31642, 44448, 11129, 11113};
- uint32 frost[4] = {44549, 44545, 44572, 27619};
- uint32 arms[2] = {64976, 46860};
- uint32 fury[3] = {23881, 16284, 46917};
- uint32 protection[4] = {29144, 58874, 50720, 46968}; //in case you havent noticed, some trees have the same name so I switch em up a bit
- uint32 holy[3] = {64129, 15031, 47788};
- uint32 discipline[4] = {47515, 52800, 45244, 10060};
- uint32 shadow[5] = {15473, 15286, 15332, 33224};
- uint32 bm[3] = {56318, 34470, 19577};
- uint32 marksman[3] = {19506, 34490, 53238};
- uint32 survival[3] = {13809, 19386, 34503};
- uint32 elemental[4] = {16582, 30679, 51486, 16166};
- uint32 enhancement[4] = {17364, 51532, 60103, 42459};
- uint32 srestoration[3] = {16188, 30869, 51730};
- uint32 affliction[2] = {58435, 63108};
- uint32 demonology[3] = {47240, 35693, 30146};
- uint32 destruction[3] = {34939, 47260, 17962};
- uint32 balance[5] = {60433, 33956, 48525, 33602, 24858};
- uint32 restoration[5] = {63411, 65139, 18562, 17078, 48500};
- uint32 feral[4] = {17007, 51269, 63503, 49377};
- uint32 assassin[6] = {31209, 58426, 51636, 14195, 1329, 51626};
- uint32 combat[6] = {13875, 51674, 13789, 35553, 13750, 13877};
- uint32 subtlety[4] = {31230, 51701, 36554, 51712};
- uint32 dkfrost[6] = {31209, 58426, 51636, 14195, 1329, 51626};
- uint32 dkblood[6] = {13875, 51674, 13789, 35553, 13750, 13877};
- uint32 dkunholy[4] = {31230, 51701, 36554, 51712};
- uint32 rweaponspec[3] = {13807, 13964, 13803}; //daggers, swords, maces in that order
- uint32 wweaponspec[3] = {12785, 12815, 12704}; //axe, sword, mace in that order
- if (sender == GOSSIP_SENDER_MAIN, 100)
- {
- pPlayer->PlayerTalkClass->ClearMenus();
- switch(uiAction)
- {
- case 100:
- OnGossipHello(pPlayer, creature);
- break;
- // Paladin
- case 0: //Retrubition
- if (HasSpec(pPlayer, 1403))
- {
- for (uint32 i = 0; i < 3; i++)
- {
- pPlayer->learnSpell(ret[i], false);
- }
- for (uint32 j = 0; j < 2; j++)
- {
- pPlayer->removeSpell(pprot[j], false, false);
- }
- for (uint32 k = 0; k < 4; k++)
- {
- pPlayer->removeSpell(pholy[k], false, false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Retribution Tree!");
- break;
- case 1: //Holy
- if (HasSpec(pPlayer, 1432))
- {
- for (uint32 i = 0; i < 3; i++)
- {
- pPlayer->removeSpell(ret[i], false, false);
- }
- for (uint32 j = 0; j < 2; j++)
- {
- pPlayer->removeSpell(pprot[j], false, false);
- }
- for (uint32 k = 0; k < 4; k++)
- {
- pPlayer->learnSpell(pholy[k], false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Holy Tree!");
- break;
- case 2: //Protection
- if (HasSpec(pPlayer, 1442))
- {
- for (uint32 i = 0; i < 3; i++)
- {
- pPlayer->removeSpell(ret[i], false, false);
- }
- for (uint32 j = 0; j < 2; j++)
- {
- pPlayer->learnSpell(pprot[j], false);
- }
- for (uint32 k = 0; k < 4; k++)
- {
- pPlayer->removeSpell(pholy[k], false, false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Protection Tree!");
- break;
- // Mage
- case 3: // Arcane
- if (HasSpec(pPlayer, 74))
- {
- for (uint32 i = 0; i < 4; i++)
- {
- pPlayer->learnSpell(arcane[i], false);
- pPlayer->removeSpell(frost[i], false, false);
- }
- for (uint32 k = 0; k < 5; k++)
- {
- pPlayer->removeSpell(fire[k], false, false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Arcane Tree!");
- break;
- case 4: // Fire
- if (HasSpec(pPlayer, 27))
- {
- for (uint32 i = 0; i < 4; i++)
- {
- pPlayer->removeSpell(arcane[i], false, false);
- pPlayer->removeSpell(frost[i], false, false);
- }
- for (uint32 k = 0; k < 5; k++)
- {
- pPlayer->learnSpell(fire[k], false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Fire Tree!");
- break;
- case 5: // Frost
- if (HasSpec(pPlayer, 38))
- {
- for (uint32 i = 0; i < 4; i++)
- {
- pPlayer->removeSpell(arcane[i], false, false);
- pPlayer->learnSpell(frost[i], false);
- }
- for (uint32 k = 0; k < 5; k++)
- {
- pPlayer->removeSpell(fire[k], false, false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Frost Tree!");
- break;
- // Warrior
- case 7: // Fury
- if (HasSpec(pPlayer, 2250))
- {
- for (uint32 i = 0; i < 2; i++)
- {
- pPlayer->removeSpell(arms[i], false, false);
- }
- for (uint32 j = 0; j < 3; j++)
- {
- pPlayer->learnSpell(fury[j], false);
- }
- for (uint32 k = 0; k < 4; k++)
- {
- pPlayer->removeSpell(protection[k], false, false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Fury Tree!");
- break;
- case 8: // Protection
- if (HasSpec(pPlayer, 142))
- {
- for (uint32 i = 0; i < 2; i++)
- {
- pPlayer->removeSpell(arms[i], false, false);
- }
- for (uint32 j = 0; j < 3; j++)
- {
- pPlayer->removeSpell(fury[j], false, false);
- }
- for (uint32 k = 0; k < 4; k++)
- {
- pPlayer->learnSpell(protection[k], false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Protection Tree!");
- break;
- // Priest
- case 9: // Holy
- if (HasSpec(pPlayer, 410))
- {
- for (uint32 i = 0; i < 3; i++)
- {
- pPlayer->learnSpell(holy[i], false);
- }
- for (uint32 j = 0; j < 4; j++)
- {
- pPlayer->removeSpell(discipline[j], false, false);
- }
- for (uint32 k = 0; k < 5; k++)
- {
- pPlayer->removeSpell(shadow[k], false, false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Holy Tree!");
- break;
- case 10: // Discipline
- if (HasSpec(pPlayer, 342))
- {
- for (uint32 i = 0; i < 3; i++)
- {
- pPlayer->removeSpell(holy[i], false, false);
- }
- for (uint32 j = 0; j < 4; j++)
- {
- pPlayer->learnSpell(discipline[j], false);
- }
- for (uint32 k = 0; k < 5; k++)
- {
- pPlayer->removeSpell(shadow[k], false, false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Discipline Tree!");
- break;
- case 11: // Shadow
- if (HasSpec(pPlayer, 465))
- {
- for (uint32 i = 0; i < 3; i++)
- {
- pPlayer->removeSpell(holy[i], false, false);
- }
- for (uint32 j = 0; j < 4; j++)
- {
- pPlayer->removeSpell(discipline[j], false, false);
- }
- for (uint32 k = 0; k < 5; k++)
- {
- pPlayer->learnSpell(shadow[k], false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Shadow Tree!");
- break;
- // Hunter
- case 12: // Marksman
- if (HasSpec(pPlayer, 1341))
- {
- for (uint32 i = 0; i < 3; i++)
- {
- pPlayer->learnSpell(marksman[i], false);
- pPlayer->removeSpell(survival[i], false, false);
- pPlayer->removeSpell(bm[i], false, false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Marksman Tree!");
- break;
- case 13: // Survival
- if (HasSpec(pPlayer, 1623))
- {
- for (uint32 i = 0; i < 3; i++)
- {
- pPlayer->learnSpell(survival[i], false);
- pPlayer->removeSpell(bm[i], false, false);
- pPlayer->removeSpell(marksman[i], false, false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Survival Tree!");
- break;
- case 14: // Beastmaster
- if (HasSpec(pPlayer, 1382))
- {
- for (uint32 i = 0; i < 3; i++)
- {
- pPlayer->learnSpell(bm[i], false);
- pPlayer->removeSpell(marksman[i], false, false);
- pPlayer->removeSpell(survival[i], false, false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Beastmastery Tree!");
- break;
- // Rogue
- case 15: //Sub
- if (HasSpec(pPlayer, 2244))
- {
- for (uint32 i = 0; i < 4; i++)
- {
- pPlayer->learnSpell(subtlety[i], false);
- }
- for (uint32 j = 0; j < 6; j++)
- {
- pPlayer->removeSpell(combat[j], false, false);
- pPlayer->removeSpell(assassin[j], false, false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Subtlety Tree!");
- break;
- case 16: // Assassination
- if (HasSpec(pPlayer, 276))
- {
- for (uint32 i = 0; i < 4; i++)
- {
- pPlayer->removeSpell(subtlety[i], false);
- }
- for (uint32 j = 0; j < 6; j++)
- {
- pPlayer->removeSpell(combat[j], false, false);
- pPlayer->learnSpell(assassin[j], false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Assassination Tree!");
- break;
- // Shaman
- case 18: //Restoration
- if (HasSpec(pPlayer, 586))
- {
- for (uint32 i = 0; i < 3; i++)
- {
- pPlayer->learnSpell(srestoration[i], false);
- }
- for (uint32 j = 0; j < 4; j++)
- {
- pPlayer->removeSpell(enhancement[j], false, false);
- pPlayer->removeSpell(elemental[j], false, false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Restoration Tree!");
- break;
- case 19: // Enhancement
- if (HasSpec(pPlayer, 610))
- {
- for (uint32 i = 0; i < 3; i++)
- {
- pPlayer->removeSpell(srestoration[i], false, false);
- }
- for (uint32 j = 0; j < 4; j++)
- {
- pPlayer->learnSpell(enhancement[j], false);
- pPlayer->removeSpell(elemental[j], false, false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Enhancement Tree!");
- break;
- case 20: // Elemental
- if (HasSpec(pPlayer, 564))
- {
- for (uint32 i = 0; i < 3; i++)
- {
- pPlayer->removeSpell(srestoration[i], false, false);
- }
- for (uint32 j = 0; j < 4; j++)
- {
- pPlayer->removeSpell(enhancement[j], false, false);
- pPlayer->learnSpell(elemental[j], false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Elemental Tree!");
- break;
- // Warlock
- case 21: //Affliction
- if (HasSpec(pPlayer, 1284))
- {
- for (uint32 i = 0; i < 2; i++)
- {
- pPlayer->learnSpell(affliction[i], false);
- }
- for (uint32 j = 0; j < 3; j++)
- {
- pPlayer->removeSpell(demonology[j], false, false);
- pPlayer->removeSpell(destruction[j], false, false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Affliction Tree!");
- break;
- case 22: // Demonology
- if (HasSpec(pPlayer, 1221))
- {
- for (uint32 i = 0; i < 2; i++)
- {
- pPlayer->removeSpell(affliction[i], false, false);
- }
- for (uint32 j = 0; j < 3; j++)
- {
- pPlayer->learnSpell(demonology[j], false);
- pPlayer->removeSpell(destruction[j], false, false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Demonology Tree!");
- break;
- case 23: //Destruction
- if (HasSpec(pPlayer, 944))
- {
- for (uint32 i = 0; i < 2; i++)
- {
- pPlayer->removeSpell(affliction[i], false, false);
- }
- for (uint32 j = 0; j < 3; j++)
- {
- pPlayer->removeSpell(demonology[j], false, false);
- pPlayer->learnSpell(destruction[j], false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Destruction Tree!");
- break;
- // Druid
- case 25: // Balance
- if (HasSpec(pPlayer, 783))
- {
- for (uint32 i = 0; i < 5; i++)
- {
- pPlayer->learnSpell(balance[i], false);
- pPlayer->removeSpell(restoration[i], false, false);
- }
- for (uint32 j = 0; j < 4; j++)
- {
- pPlayer->removeSpell(feral[j], false, false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Balance Tree!");
- break;
- case 26: //Restoration
- if (HasSpec(pPlayer, 824))
- {
- for (uint32 i = 0; i < 5; i++)
- {
- pPlayer->removeSpell(balance[i], false, false);
- pPlayer->learnSpell(restoration[i], false);
- }
- for (uint32 j = 0; j < 4; j++)
- {
- pPlayer->removeSpell(feral[j], false, false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Restoration Tree!");
- break;
- case 27: //Feral
- if (HasSpec(pPlayer, 801))
- {
- for (uint32 i = 0; i < 5; i++)
- {
- pPlayer->removeSpell(balance[i], false, false);
- pPlayer->removeSpell(restoration[i], false, false);
- }
- for (uint32 j = 0; j < 4; j++)
- {
- pPlayer->learnSpell(feral[j], false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Feral Tree!");
- break;
- case 28: //Blood
- if (HasSpec(pPlayer, 1945))
- {
- for (uint32 i = 0; i < 6; i++)
- {
- pPlayer->removeSpell(dkfrost[i], false, false);
- pPlayer->learnSpell(dkblood[i], false);
- }
- for (uint32 j = 0; j < 4; j++)
- {
- pPlayer->removeSpell(dkunholy[j], false, false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Feral Tree!");
- break;
- case 29: //Frost
- if (HasSpec(pPlayer, 2020))
- {
- for (uint32 i = 0; i < 6; i++)
- {
- pPlayer->learnSpell(dkfrost[i], false);
- pPlayer->removeSpell(dkblood[i], false, false);
- }
- for (uint32 j = 0; j < 4; j++)
- {
- pPlayer->removeSpell(dkunholy[j], false, false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Feral Tree!");
- break;
- case 30: //Unholy
- if (HasSpec(pPlayer, 2082))
- {
- for (uint32 i = 0; i < 6; i++)
- {
- pPlayer->removeSpell(dkfrost[i], false, false);
- pPlayer->removeSpell(dkblood[i], false, false);
- }
- for (uint32 j = 0; j < 4; j++)
- {
- pPlayer->learnSpell(dkunholy[j], false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Feral Tree!");
- break;
- case 600:
- pPlayer->ADD_GOSSIP_ITEM(0, "You may choose a weapon specialization talent.", GOSSIP_SENDER_MAIN, 100);
- pPlayer->ADD_GOSSIP_ITEM(5, "Poleaxe Specialization: While wielding an Axe or Poleaxe you recieve +5% critical strike chance.", GOSSIP_SENDER_MAIN, 999);
- pPlayer->ADD_GOSSIP_ITEM(5, "Mace Specialization: While wielding a Mace you recieve +15% Armor Penetration.", GOSSIP_SENDER_MAIN, 998);
- pPlayer->ADD_GOSSIP_ITEM(5, "Sword Specialization: While wielding a sword you have a 10% chance to strike again.", GOSSIP_SENDER_MAIN, 997);
- pPlayer->PlayerTalkClass->SendGossipMenu(907, creature->GetGUID());
- break;
- case 999:
- if (HasSpec(pPlayer, 124))
- {
- pPlayer->learnSpell(wweaponspec[0], false);
- for (uint32 i = 0; i < 2; i++)
- {
- pPlayer->learnSpell(arms[i], false);
- }
- for (uint32 i = 0; i < 3; i++)
- {
- pPlayer->removeSpell(fury[i], false, false);
- }
- for (uint32 i = 0; i < 4; i++)
- {
- pPlayer->removeSpell(protection[i], false, false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Arms Tree!");
- break;
- case 998:
- if (HasSpec(pPlayer, 124))
- {
- pPlayer->learnSpell(wweaponspec[2], false);
- for (uint32 i = 0; i < 2; i++)
- {
- pPlayer->learnSpell(arms[i], false);
- }
- for (uint32 i = 0; i < 3; i++)
- {
- pPlayer->removeSpell(fury[i], false, false);
- }
- for (uint32 i = 0; i < 4; i++)
- {
- pPlayer->removeSpell(protection[i], false, false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Arms Tree!");
- break;
- case 997:
- if (HasSpec(pPlayer, 124))
- {
- pPlayer->learnSpell(wweaponspec[1], false);
- for (uint32 i = 0; i < 2; i++)
- {
- pPlayer->learnSpell(arms[i], false);
- }
- for (uint32 i = 0; i < 3; i++)
- {
- pPlayer->removeSpell(fury[i], false, false);
- }
- for (uint32 i = 0; i < 4; i++)
- {
- pPlayer->removeSpell(protection[i], false, false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Arms Tree!");
- break;
- case 1700:
- pPlayer->ADD_GOSSIP_ITEM(0, "You may choose a weapon specialization talent.", GOSSIP_SENDER_MAIN, 100);
- pPlayer->ADD_GOSSIP_ITEM(5, "Close Quarters Combat: While wielding a Dagger or Fist Weapon you recieve +5% critical strike chance.", GOSSIP_SENDER_MAIN, 996);
- pPlayer->ADD_GOSSIP_ITEM(5, "Mace Specialization: While wielding a Mace you recieve +15% Armor Penetration.", GOSSIP_SENDER_MAIN, 995);
- pPlayer->ADD_GOSSIP_ITEM(5, "Hack and Slash: While wielding a Sword or Axe you have a 5% chance to strike again.", GOSSIP_SENDER_MAIN, 994);
- pPlayer->PlayerTalkClass->SendGossipMenu(907, creature->GetGUID());
- break;
- case 996:
- if (HasSpec(pPlayer, 203))
- {
- pPlayer->learnSpell(rweaponspec[0], false);
- for (uint32 i = 0; i < 4; i++)
- {
- pPlayer->removeSpell(subtlety[i], false);
- }
- for (uint32 j = 0; j < 6; j++)
- {
- pPlayer->learnSpell(combat[j], false);
- pPlayer->removeSpell(assassin[j], false, false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Combat Tree!");
- break;
- case 995:
- if (HasSpec(pPlayer, 203))
- {
- pPlayer->learnSpell(rweaponspec[2], false);
- for (uint32 i = 0; i < 4; i++)
- {
- pPlayer->removeSpell(subtlety[i], false);
- }
- for (uint32 j = 0; j < 6; j++)
- {
- pPlayer->learnSpell(combat[j], false);
- pPlayer->removeSpell(assassin[j], false, false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Combat Tree!");
- break;
- case 994:
- if (HasSpec(pPlayer, 203))
- {
- pPlayer->learnSpell(rweaponspec[1], false);
- for (uint32 i = 0; i < 4; i++)
- {
- pPlayer->removeSpell(subtlety[i], false);
- }
- for (uint32 j = 0; j < 6; j++)
- {
- pPlayer->learnSpell(combat[j], false);
- pPlayer->removeSpell(assassin[j], false, false);
- }
- pPlayer->PlayDirectSound(3337);
- pPlayer->CastSpell(pPlayer, 47292);
- }
- pPlayer->GetSession()->SendNotification("You do not have eleven (11) points in the Combat Tree!");
- break;
- }
- pPlayer->CLOSE_GOSSIP_MENU();
- }
- return true;
- }
- };
- void AddSC_Talent_Specialization()
- {
- new Talent_Specialization();
- }
Advertisement
Add Comment
Please, Sign In to add comment