Core/PacketIO: Updated and enabled barber shop opcodes
This commit is contained in:
@@ -0,0 +1 @@
|
||||
UPDATE `gameobject_template` SET `Data2`=7810, `VerifiedBuild`=20216 WHERE `entry` IN (207146 /*Barbershop Chair*/, 207147 /*Barbershop Chair*/, 207148 /*Barbershop Chair*/, 207149 /*Barbershop Chair*/, 207150 /*Barbershop Chair*/); -- Update other Barbershop Chair with sniff data
|
||||
@@ -1786,13 +1786,13 @@ void GameObject::Use(Unit* user)
|
||||
|
||||
Player* player = user->ToPlayer();
|
||||
|
||||
// fallback, will always work
|
||||
player->TeleportTo(GetMapId(), GetPositionX(), GetPositionY(), GetPositionZ(), GetOrientation(), TELE_TO_NOT_LEAVE_TRANSPORT | TELE_TO_NOT_LEAVE_COMBAT | TELE_TO_NOT_UNSUMMON_PET);
|
||||
|
||||
WorldPackets::Misc::EnableBarberShop packet;
|
||||
player->SendDirectMessage(packet.Write());
|
||||
|
||||
player->SetStandState(UnitStandStateType(UNIT_STAND_STATE_SIT_LOW_CHAIR + info->barberChair.chairheight));
|
||||
// fallback, will always work
|
||||
player->TeleportTo(GetMapId(), GetPositionX(), GetPositionY(), GetPositionZ(), GetOrientation(), TELE_TO_NOT_LEAVE_TRANSPORT | TELE_TO_NOT_LEAVE_COMBAT | TELE_TO_NOT_UNSUMMON_PET);
|
||||
|
||||
player->SetStandState(UnitStandStateType(UNIT_STAND_STATE_SIT_LOW_CHAIR + info->barberChair.chairheight), info->barberChair.SitAnimKit);
|
||||
return;
|
||||
}
|
||||
default:
|
||||
|
||||
@@ -12707,7 +12707,7 @@ bool Unit::IsStandState() const
|
||||
return !IsSitState() && s != UNIT_STAND_STATE_SLEEP && s != UNIT_STAND_STATE_KNEEL;
|
||||
}
|
||||
|
||||
void Unit::SetStandState(UnitStandStateType state)
|
||||
void Unit::SetStandState(UnitStandStateType state, uint32 animKitID /* = 0*/)
|
||||
{
|
||||
SetByteValue(UNIT_FIELD_BYTES_1, 0, uint8(state));
|
||||
|
||||
@@ -12716,7 +12716,7 @@ void Unit::SetStandState(UnitStandStateType state)
|
||||
|
||||
if (GetTypeId() == TYPEID_PLAYER)
|
||||
{
|
||||
WorldPackets::Misc::StandStateUpdate packet(state);
|
||||
WorldPackets::Misc::StandStateUpdate packet(state, animKitID);
|
||||
ToPlayer()->GetSession()->SendPacket(packet.Write());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1467,7 +1467,7 @@ class Unit : public WorldObject
|
||||
UnitStandStateType GetStandState() const { return UnitStandStateType(GetByteValue(UNIT_FIELD_BYTES_1, 0)); }
|
||||
bool IsSitState() const;
|
||||
bool IsStandState() const;
|
||||
void SetStandState(UnitStandStateType state);
|
||||
void SetStandState(UnitStandStateType state, uint32 animKitID = 0);
|
||||
|
||||
void SetStandFlags(uint8 flags) { SetByteFlag(UNIT_FIELD_BYTES_1, 2, flags); }
|
||||
void RemoveStandFlags(uint8 flags) { RemoveByteFlag(UNIT_FIELD_BYTES_1, 2, flags); }
|
||||
|
||||
@@ -6669,6 +6669,13 @@ void ObjectMgr::LoadGameObjectTemplate()
|
||||
}
|
||||
case GAMEOBJECT_TYPE_BARBER_CHAIR: //32
|
||||
CheckAndFixGOChairHeightId(&got, got.barberChair.chairheight, 0);
|
||||
|
||||
if (got.barberChair.SitAnimKit && !sAnimKitStore.LookupEntry(got.barberChair.SitAnimKit))
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "GameObject (Entry: %u GoType: %u) have data2 = %u but AnimKit.dbc (Id: %u) not exist, set to 0.",
|
||||
entry, got.type, got.barberChair.SitAnimKit, got.barberChair.SitAnimKit);
|
||||
got.barberChair.SitAnimKit = 0;
|
||||
}
|
||||
break;
|
||||
case GAMEOBJECT_TYPE_GARRISON_BUILDING:
|
||||
if (uint32 transportMap = got.garrisonBuilding.mapID)
|
||||
|
||||
@@ -283,7 +283,7 @@ void WorldPackets::Misc::StandStateChange::Read()
|
||||
|
||||
WorldPacket const* WorldPackets::Misc::StandStateUpdate::Write()
|
||||
{
|
||||
_worldPacket << uint32(UnkWoD1);
|
||||
_worldPacket << uint32(AnimKitID);
|
||||
_worldPacket << uint8(State);
|
||||
|
||||
return &_worldPacket;
|
||||
|
||||
@@ -423,11 +423,11 @@ namespace WorldPackets
|
||||
{
|
||||
public:
|
||||
StandStateUpdate() : ServerPacket(SMSG_STAND_STATE_UPDATE, 4 + 1) { }
|
||||
StandStateUpdate(UnitStandStateType state) : ServerPacket(SMSG_STAND_STATE_UPDATE, 4 + 1), State(state) { }
|
||||
StandStateUpdate(UnitStandStateType state, uint32 animKitID) : ServerPacket(SMSG_STAND_STATE_UPDATE, 4 + 1), State(state), AnimKitID(animKitID) { }
|
||||
|
||||
WorldPacket const* Write() override;
|
||||
|
||||
uint32 UnkWoD1 = 0; /// @todo 6.1.0 resarch new value
|
||||
uint32 AnimKitID = 0; /// @todo 6.1.0 resarch new value
|
||||
UnitStandStateType State = UNIT_STAND_STATE_STAND;
|
||||
};
|
||||
|
||||
|
||||
@@ -162,7 +162,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_HANDLER(CMSG_ADD_FRIEND, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Social::AddFriend, &WorldSession::HandleAddFriendOpcode);
|
||||
DEFINE_HANDLER(CMSG_ADD_IGNORE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Social::AddIgnore, &WorldSession::HandleAddIgnoreOpcode);
|
||||
DEFINE_HANDLER(CMSG_ADD_TOY, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_ALTER_APPEARANCE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Character::AlterApperance, &WorldSession::HandleAlterAppearance);
|
||||
DEFINE_HANDLER(CMSG_ALTER_APPEARANCE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Character::AlterApperance, &WorldSession::HandleAlterAppearance);
|
||||
DEFINE_HANDLER(CMSG_AREA_SPIRIT_HEALER_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Battleground::AreaSpiritHealerQuery, &WorldSession::HandleAreaSpiritHealerQueryOpcode);
|
||||
DEFINE_HANDLER(CMSG_AREA_SPIRIT_HEALER_QUEUE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Battleground::AreaSpiritHealerQueue, &WorldSession::HandleAreaSpiritHealerQueueOpcode);
|
||||
DEFINE_HANDLER(CMSG_AREA_TRIGGER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::AreaTrigger, &WorldSession::HandleAreaTriggerOpcode);
|
||||
@@ -883,7 +883,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUTH_CHALLENGE, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUTH_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AVAILABLE_VOICE_CHANNEL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BARBER_SHOP_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BARBER_SHOP_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_LIST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_PORT_DENIED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_STATUS_ACTIVE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
@@ -1074,7 +1074,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DUEL_WINNER, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DURABILITY_DAMAGE_DEATH, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_EMOTE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENABLE_BARBER_SHOP, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENABLE_BARBER_SHOP, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENCHANTMENT_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENCOUNTER_END, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENCOUNTER_START, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
|
||||
Reference in New Issue
Block a user