69 _Create(ObjectGuid::Create<HighGuid::Corpse>(map->
GetId(), 0, guidlow));
81 TC_LOG_ERROR(
"entities.player",
"Corpse (guidlow {}, owner {}) not created. Suggested coordinates isn't valid (X: {} Y: {})",
86 _Create(ObjectGuid::Create<HighGuid::Corpse>(owner->
GetMapId(), 0, guidlow));
112 std::ostringstream items;
113 for (
size_t index = 0; index <
m_corpseData->Items.size(); ++index)
150 stmt->
setUInt32(index++, customization.ChrCustomizationOptionID);
151 stmt->
setUInt32(index++, customization.ChrCustomizationChoiceID);
194 _Create(ObjectGuid::Create<HighGuid::Corpse>(mapId, 0, guid));
198 std::vector<std::string_view> items =
Trinity::Tokenize(fields[6].GetStringView(),
' ',
false);
200 for (
size_t index = 0; index <
m_corpseData->Items.size(); ++index)
201 SetItem(index, Trinity::StringTo<uint32>(items[index]).value_or(0));
205 SetSex(fields[9].GetUInt8());
208 SetOwnerGUID(ObjectGuid::Create<HighGuid::Player>(fields[15].GetUInt64()));
211 m_time = time_t(fields[12].GetUInt32());
222 TC_LOG_ERROR(
"entities.player",
"Corpse ({}, owner: {}) is not created, given coordinates are not valid (X: {}, Y: {}, Z: {})",
265 if (requestedObjectMask.IsAnySet())
268 if (requestedCorpseMask.IsAnySet())
272 std::size_t sizePos = buffer.
wpos();
278 m_objectData->WriteUpdate(requestedObjectMask, buffer, target,
this, ignoreNestedChangesMask);
281 m_corpseData->WriteUpdate(requestedCorpseMask, buffer, target,
this, ignoreNestedChangesMask);
@ CHAR_DEL_CORPSE_CUSTOMIZATIONS
@ CHAR_INS_CORPSE_CUSTOMIZATIONS
DB2Storage< ChrRacesEntry > sChrRacesStore("ChrRaces.db2", &ChrRacesLoadInfo::Instance)
SQLTransaction< CharacterDatabaseConnection > CharacterDatabaseTransaction
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
#define TC_LOG_ERROR(filterType__, message__,...)
ObjectGuid const & GetGUID() const
WowCS::EntityFragmentsHolder m_entityFragments
UF::UpdateFieldHolder m_values
void _Create(ObjectGuid const &guid)
CreateObjectBits m_updateFlag
ByteBuffer & PrepareValuesUpdateBuffer(UpdateData *data) const
virtual UF::UpdateFieldFlag GetUpdateFieldFlagsFor(Player const *target) const
void put(std::size_t pos, T value)
void BuildValuesUpdate(UF::UpdateFieldFlag flags, ByteBuffer &data, Player const *target) const override
bool IsExpired(time_t t) const
void ReplaceAllFlags(uint32 flags)
void SetClass(uint8 playerClass)
Corpse(CorpseType type=CORPSE_BONES)
void SetDisplayId(uint32 displayId)
void ClearValuesChangesMask() override
void SetFactionTemplate(int32 factionTemplate)
void RemoveFromWorld() override
void SetOwnerGUID(ObjectGuid owner)
UF::UpdateField< UF::CorpseData, int32(WowCS::EntityFragment::CGObject), TYPEID_CORPSE > m_corpseData
void Update(uint32 diff) override
std::unique_ptr< Loot > m_loot
void BuildValuesCreate(UF::UpdateFieldFlag flags, ByteBuffer &data, Player const *target) const override
void AddToWorld() override
void ReplaceAllCorpseDynamicFlags(CorpseDynFlags dynamicFlags)
ObjectGuid GetOwnerGUID() const override
bool LoadCorpseFromDB(ObjectGuid::LowType guid, Field *fields)
void BuildValuesUpdateForPlayerWithMask(UpdateData *data, UF::ObjectData::Mask const &requestedObjectMask, UF::CorpseData::Mask const &requestedCorpseMask, Player const *target, bool ignoreNestedChangesMask) const
bool Create(ObjectGuid::LowType guidlow, Map *map)
CorpseType GetType() const
void DeleteFromDB(CharacterDatabaseTransaction trans)
void SetItem(uint32 slot, uint32 item)
Class used to access individual fields of database query result.
float GetFloat() const noexcept
uint32 GetUInt32() const noexcept
uint16 GetUInt16() const noexcept
MapStoredObjectTypesContainer & GetObjectsStore()
LowType GetCounter() const
void AddToWorld() override
void BuildEntityFragmentsForValuesUpdateForPlayerWithMask(ByteBuffer &data, EnumFlag< UF::UpdateFieldFlag > flags) const
virtual void ClearValuesChangesMask()
virtual void SetObjectScale(float scale)
UF::UpdateField< UF::ObjectData, int32(WowCS::EntityFragment::CGObject), TYPEID_OBJECT > m_objectData
PhaseContainer const & GetPhases() const
static void InheritPhaseShift(WorldObject *target, WorldObject const *source)
void SendDirectMessage(WorldPacket const *data) const
void setUInt16(uint8 index, uint16 value)
void setString(uint8 index, std::string &&value)
void setUInt32(uint8 index, uint32 value)
void setFloat(uint8 index, float value)
void setUInt64(uint8 index, uint64 value)
void setUInt8(uint8 index, uint8 value)
Mask const & GetChangesMask() const
void ClearChangesMask(UpdateField< T, BlockBit, Bit >(Derived::*field))
bool HasChanged(uint32 index) const
uint32 GetChangedObjectTypeMask() const
bool BuildPacket(WorldPacket *packet)
constexpr uint32 GetBlock(uint32 index) const
constexpr void Set(uint32 index)
constexpr uint32 GetMapId() const
void RemoveFromWorld() override
void SetLocationInstanceId(uint32 _instanceId)
PhaseShift & GetPhaseShift()
void SetLocationMapId(uint32 _mapId)
uint32 GetInstanceId() const
std::string const & GetName() const
virtual void Update(uint32 diff)
TC_COMMON_API std::vector< std::string_view > Tokenize(std::string_view str, char sep, bool keepEmpty)
CellCoord ComputeCellCoord(float x, float y)
UF::ObjectData::Base ObjectMask
void operator()(Player const *player) const
UF::CorpseData::Base CorpseMask
bool IgnoreNestedChangesMask
constexpr float GetPositionX() const
constexpr float GetPositionY() const
std::string ToString() const
bool IsPositionValid() const
constexpr void Relocate(float x, float y)
constexpr float GetOrientation() const
constexpr float GetPositionZ() const
bool Insert(ValueType< ObjectType > object)
bool Remove(ValueType< ObjectType > object)
void Add(EntityFragment fragment, bool update, void const *data=nullptr)