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));
110 std::ostringstream items;
112 items <<
GetItem(itemSlot) <<
' ';
123 stmt->
setString(index++, std::move(items).str());
148 stmt->
setUInt32(index++, customization.ChrCustomizationOptionID);
149 stmt->
setUInt32(index++, customization.ChrCustomizationChoiceID);
192 _Create(ObjectGuid::Create<HighGuid::Corpse>(mapId, 0, guid));
196 std::vector<std::string_view> items =
Trinity::Tokenize(fields[6].GetStringView(),
' ',
false);
198 for (
size_t index = 0; index <
m_corpseData->Items.size(); ++index)
199 SetItem(index, Trinity::StringTo<uint32>(items[index]).value_or(0));
203 SetSex(fields[9].GetUInt8());
206 SetOwnerGUID(ObjectGuid::Create<HighGuid::Player>(fields[15].GetUInt64()));
209 m_time = time_t(fields[12].GetUInt32());
220 TC_LOG_ERROR(
"entities.player",
"Corpse ({}, owner: {}) is not created, given coordinates are not valid (X: {}, Y: {}, Z: {})",
262 if (requestedObjectMask.IsAnySet())
265 if (requestedCorpseMask.IsAnySet())
269 std::size_t sizePos = buffer.
wpos();
275 m_objectData->WriteUpdate(requestedObjectMask, buffer, target,
this, ignoreNestedChangesMask);
278 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
uint32 GetDisplayId() const
void SetClass(uint8 playerClass)
Corpse(CorpseType type=CORPSE_BONES)
void SetDisplayId(uint32 displayId)
CorpseDynFlags GetCorpseDynamicFlags() const
void ClearValuesChangesMask() override
void ReplaceAllCorpseFlags(CorpseFlags flags)
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)
uint32 GetItem(uint32 slot) const
CorpseFlags GetCorpseFlags() const
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)
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)