aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/SkillHandler.cpp
diff options
context:
space:
mode:
authorJeremy <Golrag@users.noreply.github.com>2018-03-04 22:32:08 +0100
committerShauren <shauren.trinity@gmail.com>2018-03-04 22:32:08 +0100
commitf411b7a90e4900c9e2df7c1e0c7a301360408cec (patch)
tree9793744cf0749d37bb13d6d69355b8672e5f6c34 /src/server/game/Handlers/SkillHandler.cpp
parente0eafc1cac9d840f897f9269e8440aaebfab6a96 (diff)
Core/Player: Implement PvP Talents (#19962)
* SPELL_AURA_119 -> SPELL_AURA_PVP_TALENTS * Learn Honorable Medallion when pvp rules are enabled
Diffstat (limited to 'src/server/game/Handlers/SkillHandler.cpp')
-rw-r--r--src/server/game/Handlers/SkillHandler.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/server/game/Handlers/SkillHandler.cpp b/src/server/game/Handlers/SkillHandler.cpp
index f802c651f60..fc1741c6885 100644
--- a/src/server/game/Handlers/SkillHandler.cpp
+++ b/src/server/game/Handlers/SkillHandler.cpp
@@ -51,6 +51,30 @@ void WorldSession::HandleLearnTalentsOpcode(WorldPackets::Talent::LearnTalents&
_player->SendTalentsInfoData();
}
+void WorldSession::HandleLearnPvpTalentsOpcode(WorldPackets::Talent::LearnPvpTalents& packet)
+{
+ WorldPackets::Talent::LearnPvpTalentsFailed learnPvpTalentsFailed;
+ bool anythingLearned = false;
+ for (uint32 talentId : packet.Talents)
+ {
+ if (TalentLearnResult result = _player->LearnPvpTalent(talentId, &learnPvpTalentsFailed.SpellID))
+ {
+ if (!learnPvpTalentsFailed.Reason)
+ learnPvpTalentsFailed.Reason = result;
+
+ learnPvpTalentsFailed.Talents.push_back(talentId);
+ }
+ else
+ anythingLearned = true;
+ }
+
+ if (learnPvpTalentsFailed.Reason)
+ SendPacket(learnPvpTalentsFailed.Write());
+
+ if (anythingLearned)
+ _player->SendTalentsInfoData();
+}
+
void WorldSession::HandleConfirmRespecWipeOpcode(WorldPackets::Talent::ConfirmRespecWipe& confirmRespecWipe)
{
Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(confirmRespecWipe.RespecMaster, UNIT_NPC_FLAG_TRAINER);