Core/Packets: Update and enable SMSG_ATTACKSWING_ERROR and SMSG_CANCEL_COMBAT

Removed old SMSG_ATTACKSWING_NOTINRANGE, SMSG_ATTACKSWING_DEADTARGET, SMSG_ATTACKSWING_CANT_ATTACK and SMSG_ATTACKSWING_BADFACING
This commit is contained in:
Nayd
2015-01-28 22:26:47 +00:00
parent 802725817b
commit a93c40143f
7 changed files with 58 additions and 31 deletions

View File

@@ -33,6 +33,7 @@
#include "CharacterPackets.h"
#include "TalentPackets.h"
#include "Chat.h"
#include "CombatPackets.h"
#include "Common.h"
#include "ConditionMgr.h"
#include "CreatureAI.h"
@@ -19937,12 +19938,6 @@ bool Player::CanSpeak() const
/*** LOW LEVEL FUNCTIONS:Notifiers ***/
/*********************************************************/
void Player::SendAttackSwingNotInRange()
{
WorldPacket data(SMSG_ATTACKSWING_NOTINRANGE, 0);
GetSession()->SendPacket(&data);
}
void Player::SavePositionInDB(WorldLocation const& loc, uint16 zoneId, ObjectGuid guid, SQLTransaction& trans)
{
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHARACTER_POSITION);
@@ -19971,26 +19966,32 @@ void Player::SetUInt32ValueInArray(Tokenizer& Tokenizer, uint16 index, uint32 va
void Player::SendAttackSwingDeadTarget()
{
WorldPacket data(SMSG_ATTACKSWING_DEADTARGET, 0);
GetSession()->SendPacket(&data);
WorldPackets::Combat::AttackSwingError packet(ATTACKSWINGERR_DEADTARGET);
GetSession()->SendPacket(packet.Write());
}
void Player::SendAttackSwingCantAttack()
{
WorldPacket data(SMSG_ATTACKSWING_CANT_ATTACK, 0);
GetSession()->SendPacket(&data);
WorldPackets::Combat::AttackSwingError packet(ATTACKSWINGERR_CANT_ATTACK);
GetSession()->SendPacket(packet.Write());
}
void Player::SendAttackSwingCancelAttack()
void Player::SendAttackSwingNotInRange()
{
WorldPacket data(SMSG_CANCEL_COMBAT, 0);
GetSession()->SendPacket(&data);
WorldPackets::Combat::AttackSwingError packet(ATTACKSWINGERR_NOTINRANGE);
GetSession()->SendPacket(packet.Write());
}
void Player::SendAttackSwingBadFacingAttack()
{
WorldPacket data(SMSG_ATTACKSWING_BADFACING, 0);
GetSession()->SendPacket(&data);
WorldPackets::Combat::AttackSwingError packet(ATTACKSWINGERR_BADFACING);
GetSession()->SendPacket(packet.Write());
}
void Player::SendAttackSwingCancelAttack()
{
WorldPackets::Combat::CancelCombat packet;
GetSession()->SendPacket(packet.Write());
}
void Player::SendAutoRepeatCancel(Unit* target)

View File

@@ -670,6 +670,14 @@ struct SkillStatusData
typedef std::unordered_map<uint32, SkillStatusData> SkillStatusMap;
enum AttackSwingErr
{
ATTACKSWINGERR_CANT_ATTACK = 0,
ATTACKSWINGERR_NOTINRANGE = 1,
ATTACKSWINGERR_BADFACING = 2,
ATTACKSWINGERR_DEADTARGET = 3
};
class Quest;
class Spell;
class Item;

View File

@@ -140,3 +140,10 @@ WorldPacket const* WorldPackets::Combat::AttackerStateUpdate::Write()
return &_worldPacket;
}
WorldPacket const* WorldPackets::Combat::AttackSwingError::Write()
{
_worldPacket.WriteBits(Reason, 2);
_worldPacket.FlushBits();
return &_worldPacket;
}

View File

@@ -36,6 +36,17 @@ namespace WorldPackets
ObjectGuid Victim;
};
class AttackSwingError final : public ServerPacket
{
public:
AttackSwingError() : ServerPacket(SMSG_ATTACKSWING_ERROR, 4) { }
AttackSwingError(AttackSwingErr reason) : ServerPacket(SMSG_ATTACKSWING_ERROR, 4), Reason(reason) { }
WorldPacket const* Write() override;
AttackSwingErr Reason = ATTACKSWINGERR_CANT_ATTACK;
};
class AttackStop final : public ClientPacket
{
public:
@@ -165,6 +176,14 @@ namespace WorldPackets
UnkAttackerState UnkState;
float Unk = 0.0f;
};
class CancelCombat final : public ServerPacket
{
public:
CancelCombat() : ServerPacket(SMSG_CANCEL_COMBAT, 0) { }
WorldPacket const* Write() override { return &_worldPacket; }
};
}
}

View File

@@ -341,7 +341,7 @@ namespace WorldPackets
void Read() override { }
};
class RequestCemeteryListResponse : public ServerPacket
class RequestCemeteryListResponse final : public ServerPacket
{
public:
RequestCemeteryListResponse() : ServerPacket(SMSG_REQUEST_CEMETERY_LIST_RESPONSE, 1) { }
@@ -363,7 +363,7 @@ namespace WorldPackets
uint32 Response = 0;
};
class AreaTriggerNoCorpse : public ServerPacket
class AreaTriggerNoCorpse final : public ServerPacket
{
public:
AreaTriggerNoCorpse() : ServerPacket(SMSG_AREA_TRIGGER_NO_CORPSE, 0) { }
@@ -371,7 +371,7 @@ namespace WorldPackets
WorldPacket const* Write() override { return &_worldPacket; }
};
class Weather : public ServerPacket
class Weather final : public ServerPacket
{
public:
Weather();
@@ -384,7 +384,7 @@ namespace WorldPackets
WeatherState WeatherID = WEATHER_STATE_FINE;
};
class StandStateChange : public ClientPacket
class StandStateChange final : public ClientPacket
{
public:
StandStateChange(WorldPacket&& packet) : ClientPacket(CMSG_STAND_STATE_CHANGE, std::move(packet)) { }
@@ -394,7 +394,7 @@ namespace WorldPackets
UnitStandStateType StandState = UNIT_STAND_STATE_STAND;
};
class StandStateUpdate : public ServerPacket
class StandStateUpdate final : public ServerPacket
{
public:
StandStateUpdate() : ServerPacket(SMSG_STAND_STATE_UPDATE, 1) { }

View File

@@ -938,11 +938,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ATTACKERSTATEUPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ATTACKSTART, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ATTACKSTOP, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ATTACKSWING_BADFACING, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ATTACKSWING_CANT_ATTACK, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ATTACKSWING_DEADTARGET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ATTACKSWING_ERROR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ATTACKSWING_NOTINRANGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ATTACKSWING_ERROR, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_BIDDER_NOTIFICATION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_CLOSED_NOTIFICATION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUCTION_COMMAND_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1056,7 +1052,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_UPDATE_INVITE_LIST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAMERA_SHAKE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_AUTO_REPEAT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_COMBAT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_COMBAT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_ORPHAN_SPELL_VISUAL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_SCENE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_SPELL_VISUAL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);

View File

@@ -846,11 +846,7 @@ enum OpcodeServer : uint32
SMSG_ATTACKERSTATEUPDATE = 0x1204,
SMSG_ATTACKSTART = 0x1D3E,
SMSG_ATTACKSTOP = 0x1382,
SMSG_ATTACKSWING_BADFACING = 0xBADD,
SMSG_ATTACKSWING_CANT_ATTACK = 0xBADD,
SMSG_ATTACKSWING_DEADTARGET = 0xBADD,
SMSG_ATTACKSWING_ERROR = 0x0509,
SMSG_ATTACKSWING_NOTINRANGE = 0xBADD,
SMSG_AUCTION_BIDDER_NOTIFICATION = 0xBADD,
SMSG_AUCTION_CLOSED_NOTIFICATION = 0x058E,
SMSG_AUCTION_COMMAND_RESULT = 0x0B2D,
@@ -1712,7 +1708,7 @@ enum OpcodeServer : uint32
SMSG_SPELL_START = 0x0803,
SMSG_SPELL_UPDATE_CHAIN_TARGETS = 0x0374,
SMSG_SPIRIT_HEALER_CONFIRM = 0x1331,
SMSG_STAND_STATE_UPDATE = 0x1311,
SMSG_STAND_STATE_UPDATE = 0x1311,
SMSG_START_ELAPSED_TIMER = 0x0D2A,
SMSG_START_ELAPSED_TIMERS = 0x093F,
SMSG_START_LOOT_ROLL = 0x1B84,