aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/SkillHandler.cpp
diff options
context:
space:
mode:
authorRat <gmstreetrat@gmail.com>2014-12-04 19:23:35 +0100
committerRat <gmstreetrat@gmail.com>2014-12-04 19:23:35 +0100
commit08f486bfcf77d007aeb324b5c941433545234b0e (patch)
treed5f4ae067e15e8800c097d0da40f31339e147e8d /src/server/game/Handlers/SkillHandler.cpp
parentdf2514f0444a1b39f07ed63208f5db3ea4eb5c6d (diff)
Core/Spells: some updates to player spell and talent learning
Diffstat (limited to 'src/server/game/Handlers/SkillHandler.cpp')
-rw-r--r--src/server/game/Handlers/SkillHandler.cpp57
1 files changed, 10 insertions, 47 deletions
diff --git a/src/server/game/Handlers/SkillHandler.cpp b/src/server/game/Handlers/SkillHandler.cpp
index f0c1b28117b..278169c2d63 100644
--- a/src/server/game/Handlers/SkillHandler.cpp
+++ b/src/server/game/Handlers/SkillHandler.cpp
@@ -28,59 +28,22 @@
#include "WorldSession.h"
#include "TalentPackets.h"
-void WorldSession::HandleLearnTalentOpcode(WorldPacket& recvData)
+void WorldSession::HandleLearnTalentOpcode(WorldPackets::Talent::LearnTalent& packet)
{
- /* TODO: 6.x update packet struct (note: LearnTalent no longer has rank argument)
- uint32 talentId, requestedRank;
- recvData >> talentId >> requestedRank;
-
- if (_player->LearnTalent(talentId, requestedRank))
- _player->SendTalentsInfoData(false);*/
+ bool anythingLearned = false;
+ for (uint32 talentId : packet.Talents)
+ {
+ if (_player->LearnTalent(talentId))
+ anythingLearned = true;
+ }
+
+ if (anythingLearned)
+ _player->SendTalentsInfoData();
}
void WorldSession::HandleLearnPreviewTalents(WorldPacket& recvPacket)
{
- /* TODO: 6.x update packet struct
TC_LOG_DEBUG("network", "CMSG_LEARN_PREVIEW_TALENTS");
-
- int32 tabPage;
- uint32 talentsCount;
- recvPacket >> tabPage; // talent tree
-
- // prevent cheating (selecting new tree with points already in another)
- if (tabPage >= 0) // -1 if player already has specialization
- {
- if (TalentTabEntry const* talentTabEntry = sTalentTabStore.LookupEntry(_player->GetPrimaryTalentTree(_player->GetActiveSpec())))
- {
- if (talentTabEntry->tabpage != uint32(tabPage))
- {
- recvPacket.rfinish();
- return;
- }
- }
- }
-
- recvPacket >> talentsCount;
-
- uint32 talentId, talentRank;
-
- // Client has max 21 talents for tree for 3 trees, rounded up : 70
- uint32 const MaxTalentsCount = 70;
-
- for (uint32 i = 0; i < talentsCount && i < MaxTalentsCount; ++i)
- {
- recvPacket >> talentId >> talentRank;
-
- if (!_player->LearnTalent(talentId, talentRank))
- {
- recvPacket.rfinish();
- break;
- }
- }
-
- _player->SendTalentsInfoData(false);
-
- recvPacket.rfinish();*/
}
void WorldSession::HandleTalentWipeConfirmOpcode(WorldPacket& recvData)