aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDJScias <djscias@gmail.com>2015-04-23 20:18:48 +0200
committerDJScias <djscias@gmail.com>2015-04-23 21:34:55 +0200
commit291259ac0c2ea50b0faa72efd141a8b31405fdab (patch)
treecee85f3b0b7e65dac02695ebd96302726b32ca10
parent149ff8da879a8286a01081d4ffb1f200a67ddefd (diff)
Core/PacketIO: Updated and enabled CMSG_UNLEARN_SKILL, CMSG_SELF_RES
-rw-r--r--src/server/game/Handlers/SkillHandler.cpp10
-rw-r--r--src/server/game/Handlers/SpellHandler.cpp2
-rw-r--r--src/server/game/Server/Packets/SpellPackets.cpp5
-rw-r--r--src/server/game/Server/Packets/SpellPackets.h18
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp4
-rw-r--r--src/server/game/Server/WorldSession.h6
6 files changed, 34 insertions, 11 deletions
diff --git a/src/server/game/Handlers/SkillHandler.cpp b/src/server/game/Handlers/SkillHandler.cpp
index a83ce9f996d..870fdea69ac 100644
--- a/src/server/game/Handlers/SkillHandler.cpp
+++ b/src/server/game/Handlers/SkillHandler.cpp
@@ -27,6 +27,7 @@
#include "WorldPacket.h"
#include "WorldSession.h"
#include "TalentPackets.h"
+#include "SpellPackets.h"
void WorldSession::HandleLearnTalentsOpcode(WorldPackets::Talent::LearnTalents& packet)
{
@@ -69,16 +70,13 @@ void WorldSession::HandleConfirmRespecWipeOpcode(WorldPacket& recvData)
unit->CastSpell(_player, 14867, true); //spell: "Untalent Visual Effect"
}
-void WorldSession::HandleUnlearnSkillOpcode(WorldPacket& recvData)
+void WorldSession::HandleUnlearnSkillOpcode(WorldPackets::Spells::UnlearnSkill& packet)
{
- uint32 skillId;
- recvData >> skillId;
-
- SkillRaceClassInfoEntry const* rcEntry = GetSkillRaceClassInfo(skillId, GetPlayer()->getRace(), GetPlayer()->getClass());
+ SkillRaceClassInfoEntry const* rcEntry = GetSkillRaceClassInfo(packet.SkillLine, GetPlayer()->getRace(), GetPlayer()->getClass());
if (!rcEntry || !(rcEntry->Flags & SKILL_FLAG_UNLEARNABLE))
return;
- GetPlayer()->SetSkill(skillId, 0, 0, 0);
+ GetPlayer()->SetSkill(packet.SkillLine, 0, 0, 0);
}
void WorldSession::HandleSetSpecializationOpcode(WorldPackets::Talent::SetSpecialization& packet)
diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp
index 2af69efff66..52e50ba5fe9 100644
--- a/src/server/game/Handlers/SpellHandler.cpp
+++ b/src/server/game/Handlers/SpellHandler.cpp
@@ -468,7 +468,7 @@ void WorldSession::HandleTotemDestroyed(WorldPacket& recvPacket)
totem->ToTotem()->UnSummon();
}
-void WorldSession::HandleSelfResOpcode(WorldPacket& /*recvData*/)
+void WorldSession::HandleSelfResOpcode(WorldPackets::Spells::SelfRes& /*packet*/)
{
if (_player->HasAuraType(SPELL_AURA_PREVENT_RESURRECTION))
return; // silent return, client should display error by itself and not send this opcode
diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp
index 8560a54067d..f7e02d22a5f 100644
--- a/src/server/game/Server/Packets/SpellPackets.cpp
+++ b/src/server/game/Server/Packets/SpellPackets.cpp
@@ -696,3 +696,8 @@ WorldPacket const* WorldPackets::Spells::ResurrectRequest::Write()
return &_worldPacket;
}
+
+void WorldPackets::Spells::UnlearnSkill::Read()
+{
+ _worldPacket >> SkillLine;
+}
diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h
index 87120cf8d00..9408ac13398 100644
--- a/src/server/game/Server/Packets/SpellPackets.h
+++ b/src/server/game/Server/Packets/SpellPackets.h
@@ -676,6 +676,24 @@ namespace WorldPackets
bool Sickness = false;
std::string Name;
};
+
+ class UnlearnSkill final : public ClientPacket
+ {
+ public:
+ UnlearnSkill(WorldPacket&& packet) : ClientPacket(CMSG_UNLEARN_SKILL, std::move(packet)) { }
+
+ void Read() override;
+
+ uint32 SkillLine = 0;
+ };
+
+ class SelfRes final : public ClientPacket
+ {
+ public:
+ SelfRes(WorldPacket&& packet) : ClientPacket(CMSG_SELF_RES, std::move(packet)) { }
+
+ void Read() override { }
+ };
}
}
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 37358fd9759..59fccb4831a 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -699,7 +699,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_SCENE_PLAYBACK_CANCELED, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Scenes::ScenePlaybackCanceled, &WorldSession::HandleScenePlaybackCanceled);
DEFINE_HANDLER(CMSG_SCENE_PLAYBACK_COMPLETE, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Scenes::ScenePlaybackComplete, &WorldSession::HandleScenePlaybackComplete);
DEFINE_HANDLER(CMSG_SCENE_TRIGGER_EVENT, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Scenes::SceneTriggerEvent, &WorldSession::HandleSceneTriggerEvent);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_SELF_RES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSelfResOpcode );
+ DEFINE_HANDLER(CMSG_SELF_RES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Spells::SelfRes, &WorldSession::HandleSelfResOpcode);
DEFINE_HANDLER(CMSG_SELL_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Item::SellItem, &WorldSession::HandleSellItemOpcode);
DEFINE_HANDLER(CMSG_SELL_WOW_TOKEN_CONFIRM, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SELL_WOW_TOKEN_START, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
@@ -801,7 +801,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_UI_TIME_REQUEST, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Misc::UITimeRequest, &WorldSession::HandleUITimeRequest);
DEFINE_HANDLER(CMSG_UNACCEPT_TRADE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Trade::UnacceptTrade, &WorldSession::HandleUnacceptTradeOpcode);
DEFINE_HANDLER(CMSG_UNDELETE_CHARACTER, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::UndeleteCharacter, &WorldSession::HandleCharUndeleteOpcode);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_UNLEARN_SKILL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleUnlearnSkillOpcode );
+ DEFINE_HANDLER(CMSG_UNLEARN_SKILL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Spells::UnlearnSkill, &WorldSession::HandleUnlearnSkillOpcode);
DEFINE_HANDLER(CMSG_UNLEARN_SPECIALIZATION, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_UNLOCK_VOID_STORAGE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::VoidStorage::UnlockVoidStorage, &WorldSession::HandleVoidStorageUnlock);
DEFINE_HANDLER(CMSG_UPDATE_ACCOUNT_DATA, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::ClientConfig::UserClientUpdateAccountData, &WorldSession::HandleUpdateAccountData);
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index efa3a7cb90e..40525d54ca7 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -429,6 +429,8 @@ namespace WorldPackets
class UseItem;
class OpenItem;
class SetActionButton;
+ class UnlearnSkill;
+ class SelfRes;
}
namespace Talent
@@ -1210,7 +1212,7 @@ class WorldSession
void HandleLearnTalentsOpcode(WorldPackets::Talent::LearnTalents& packet);
void HandleConfirmRespecWipeOpcode(WorldPacket& recvPacket);
- void HandleUnlearnSkillOpcode(WorldPacket& recvPacket);
+ void HandleUnlearnSkillOpcode(WorldPackets::Spells::UnlearnSkill& packet);
void HandleSetSpecializationOpcode(WorldPackets::Talent::SetSpecialization& packet);
void HandleQuestgiverStatusQueryOpcode(WorldPackets::Quest::QuestGiverStatusQuery& packet);
@@ -1362,7 +1364,7 @@ class WorldSession
void SendLfgOfferContinue(uint32 dungeonEntry);
void SendLfgTeleportError(uint8 err);
- void HandleSelfResOpcode(WorldPacket& recvData);
+ void HandleSelfResOpcode(WorldPackets::Spells::SelfRes& packet);
void HandleComplainOpcode(WorldPacket& recvData);
void HandleRequestPetInfoOpcode(WorldPacket& recvData);