18#ifndef TRINITYCORE_GAMEOBJECT_H
19#define TRINITYCORE_GAMEOBJECT_H
83#define FISHING_BOBBER_READY_TIME 5
100 bool Create(
ObjectGuid::LowType guidlow,
uint32 name_id,
Map* map,
uint32 phaseMask,
Position const& pos,
QuaternionData const& rotation,
uint32 animprogress,
GOState go_state,
uint32 artKit = 0,
bool dynamic =
false,
ObjectGuid::LowType spawnid = 0);
108 bool IsTransport()
const;
109 bool IsDynTransport()
const;
110 bool IsDestructibleBuilding()
const;
115 void SetLocalRotationAngles(
float z_rot,
float y_rot,
float x_rot);
116 void SetLocalRotation(
float qx,
float qy,
float qz,
float qw);
138 m_spawnedByDefault =
false;
145 m_spawnedByDefault =
false;
151 time_t GetRespawnTimeEx()
const;
153 void SetRespawnTime(
int32 respawn);
157 return m_respawnDelayTime == 0 ||
158 (m_respawnTime > 0 && !m_spawnedByDefault) ||
159 (m_respawnTime == 0 && m_spawnedByDefault);
167 void getFishLoot(
Loot* loot,
Player* loot_owner);
168 void getFishLootJunk(
Loot* loot,
Player* loot_owner);
179 void SetGoState(
GOState state);
180 virtual uint32 GetTransportPeriod()
const;
182 void SetGoArtKit(
uint8 artkit);
189 void EnableCollision(
bool enable);
191 void Use(
Unit* user);
203 void SetLootGenerationTime();
209 return m_SkillupList.count(playerGuid) > 0;
213 void AddUniqueUse(
Player* player);
219 void SaveRespawnTime(
uint32 forceDelay = 0);
223 Player* GetLootRecipient()
const;
224 Group* GetLootRecipientGroup()
const;
225 void SetLootRecipient(
Unit* unit,
Group* group =
nullptr);
226 bool IsLootAllowedFor(
Player const* player)
const;
227 bool HasLootRecipient()
const {
return !m_lootRecipient.IsEmpty() || !m_lootRecipientGroup.IsEmpty(); }
236 bool ActivateToQuest(
Player const* target)
const;
237 void UseDoorOrButton(
uint32 time_to_restore = 0,
bool alternative =
false,
Unit* user =
nullptr);
239 void ResetDoorOrButton();
242 void TriggeringLinkedGameObject(
uint32 trapEntry,
Unit* target);
250 GameObject* LookupFishingHoleAround(
float range);
252 void SendCustomAnim(
uint32 anim);
253 bool IsInRange(
float x,
float y,
float z,
float radius)
const;
273 std::string
const& GetAIName()
const;
274 uint32 GetScriptId()
const;
277 void InheritStringIds(
GameObject const* parent);
278 bool HasStringId(std::string_view
id)
const;
279 void SetScriptStringId(std::string
id);
280 std::string_view
GetStringId(
StringIdType type)
const {
return m_stringIds[size_t(type)] ? std::string_view(*m_stringIds[
size_t(type)]) : std::string_view(); }
282 void SetDisplayId(
uint32 displayid);
289 void GetRespawnPosition(
float &x,
float &y,
float &z,
float* ori =
nullptr)
const;
300 float GetInteractionDistance()
const;
302 void UpdateModelPosition();
304 bool IsAtInteractDistance(
Position const& pos,
float radius)
const;
305 bool IsAtInteractDistance(
Player const* player,
SpellInfo const* spell =
nullptr)
const;
313 bool AIM_Initialize();
362 void RemoveFromOwner();
363 void SwitchDoorOrButton(
bool activate,
bool alternative =
false);
364 void UpdatePackedRotation();
std::chrono::seconds Seconds
Seconds shorthand typedef.
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
std::set< ObjectGuid > GuidSet
std::optional< T > Optional
Optional helper class to wrap optional values within.
static void SaveToDB(QuestPool const &pool, CharacterDatabaseTransaction trans)
@ GAMEOBJECT_TYPE_MAP_OBJ_TRANSPORT
GameObjectDestructibleState
@ GO_DESTRUCTIBLE_DESTROYED
@ GO_DESTRUCTIBLE_DAMAGED
@ OBJECT_FIELD_CREATED_BY
uint32 GetRespawnDelay() const
ObjectGuid GetOwnerGUID() const override
bool _IsWithinDist(WorldObject const *obj, float dist2compare, bool, bool, bool) const override
Object distance/size - overridden from Object::_IsWithinDist. Needs to take in account proper GO size...
GameObjectValue m_goValue
void AddLootMode(uint16 lootMode)
GameObjectTemplate const * GetGOInfo() const
GOState GetGoState() const
void RemoveFlag(GameObjectFlags flags)
bool HasFlag(GameObjectFlags flags) const
float GetStationaryZ() const override
GameObjectData const * m_goData
LootState getLootState() const
uint32 GetSpellId() const
uint8 GetGoAnimProgress() const
Position m_stationaryPosition
ObjectGuid m_lootRecipientGroup
QuaternionData const & GetLocalRotation() const
uint32 GetUniqueUseCount() const
void ReplaceAllFlags(GameObjectFlags flags)
uint32 GetFaction() const override
uint32 GetDynamicFlags() const override
uint8 GetGoArtKit() const
void SetGoAnimProgress(uint8 animprogress)
ObjectGuid m_lootStateUnitGUID
float GetStationaryY() const override
void SetOwnerGUID(ObjectGuid owner)
bool isSpawnedByDefault() const
ChairSlotAndUser ChairListSlots
bool HasLootMode(uint16 lootMode) const
GameObjectValue const * GetGOValue() const
void SetFlag(GameObjectFlags flags)
std::array< std::string const *, 3 > m_stringIds
time_t GetRespawnTime() const
uint32 GetLootGenerationTime() const
bool HasLootRecipient() const
void AddToSkillupList(ObjectGuid const &PlayerGuidLow)
float GetStationaryX() const override
uint32 m_respawnDelayTime
GameObjectAI * AI() const
void RemoveLootMode(uint16 lootMode)
void SetSpawnedByDefault(bool b)
bool IsInSkillupList(ObjectGuid const &playerGuid) const
void SetRespawnCompatibilityMode(bool mode=true)
GameobjectTypes GetGoType() const
Transport const * ToTransport() const
void SetGoType(GameobjectTypes type)
Seconds m_despawnRespawnTime
QuaternionData m_localRotation
void SetLinkedTrap(GameObject *linkedTrap)
GameObjectData const * GetGameObjectData() const
bool m_respawnCompatibilityMode
GameObjectTemplateAddon const * m_goTemplateAddon
ObjectGuid::LowType GetSpawnId() const
bool GetRespawnCompatibilityMode()
uint32 GetDisplayId() const
int64 GetPackedLocalRotation() const
GameObjectModel * m_model
void SetLevel(uint32 level)
Optional< std::string > m_scriptStringId
GameObjectTemplateAddon const * GetTemplateAddon() const
void SetLootMode(uint16 lootMode)
uint32 GetUseCount() const
void RelocateStationaryPosition(float x, float y, float z, float o)
GameObjectTemplate const * m_goInfo
ObjectGuid::LowType m_spawnId
For new or temporary gameobjects is 0 for saved it is lowguid.
std::map< uint32, ObjectGuid > ChairSlotAndUser
std::string_view GetStringId(StringIdType type) const
uint16 GetLootMode() const
Transport * ToTransport()
GameObjectDestructibleState GetDestructibleState() const
float GetStationaryO() const override
ObjectGuid lootingGroupLowGUID
ObjectGuid m_ritualOwnerGUID
void ReplaceAllDynamicFlags(uint32 flag) override
void SetSpellId(uint32 id)
ObjectGuid m_lootRecipient
void SetFaction(uint32 faction) override
uint32 m_lootGenerationTime
uint8 GetByteValue(uint16 index, uint8 offset) const
void SetByteValue(uint16 index, uint8 offset, uint8 value)
uint32 GetUInt32Value(uint16 index) const
virtual void BuildValuesUpdate(uint8 updatetype, ByteBuffer *data, Player const *target) const
virtual bool hasQuest(uint32) const
void SetFlag(uint16 index, uint32 newFlag)
void RemoveFlag(uint16 index, uint32 oldFlag)
void SetGuidValue(uint16 index, ObjectGuid value)
bool HasFlag(uint16 index, uint32 flag) const
static ObjectGuid GetGUID(Object const *o)
virtual bool hasInvolvedQuest(uint32) const
void SetUInt32Value(uint16 index, uint32 value)
ObjectGuid GetGuidValue(uint16 index) const
virtual void SetPhaseMask(uint32 newPhaseMask, bool update)
void AddToWorld() override
void RemoveFromWorld() override
virtual uint8 GetLevelForTarget(WorldObject const *) const
virtual bool IsInvisibleDueToDespawn() const
std::string GetDebugInfo() const override
virtual bool IsAlwaysVisibleFor(WorldObject const *) const
virtual std::string const & GetNameForLocaleIdx(LocaleConstant) const
virtual bool IsNeverVisible(bool allowServersideObjects) const
bool IsWithinDistInMap(WorldObject const *obj, float dist2compare, bool is3D=true, bool incOwnRadius=true, bool incTargetRadius=true) const
bool IsInRange(WorldObject const *obj, float minRange, float maxRange, bool is3D=true) const
virtual ObjectGuid GetOwnerGUID() const =0
virtual void Update(uint32 diff)
virtual void CleanupsBeforeDelete(bool finalCleanup=true)
float GetPositionZ() const
float GetOrientation() const
float GetPositionX() const
float GetPositionY() const
struct GameObjectValue::@189 CapturePoint
struct GameObjectValue::@190 Building
struct GameObjectValue::@187 Transport
OPvPCapturePoint * OPvPObj
struct GameObjectValue::@188 FishingHole
SpellTargetCheckTypes TargetSearcherCheckType
TransportAnimation const * AnimationInfo
struct GameObjectValue::@186 Trap