18#ifndef ViewerDependentValues_h__
19#define ViewerDependentValues_h__
53 if (summon->GetSummonerGUID() == receiver->
GetGUID() && summon->GetCreatureIdVisibleToSummoner())
54 entryId = *summon->GetCreatureIdVisibleToSummoner();
74 dynamicFlags &= ~UNIT_DYNFLAG_TAPPED;
77 dynamicFlags &= ~UNIT_DYNFLAG_LOOTABLE;
80 dynamicFlags &= ~UNIT_DYNFLAG_CAN_SKIN;
86 dynamicFlags &= ~UNIT_DYNFLAG_TRACK_UNIT;
91 switch (gameObject->GetGoType())
95 if (gameObject->HasConditionalInteraction() && gameObject->CanActivateForPlayer(receiver))
100 if (gameObject->CanActivateForPlayer(receiver))
104 if (gameObject->HasConditionalInteraction() && gameObject->CanActivateForPlayer(receiver))
111 if (gameObject->HasConditionalInteraction() && gameObject->CanActivateForPlayer(receiver))
116 dynFlags |= dynamicFlags;
119 if (!gameObject->CanInteractWithCapturePoint(receiver))
122 dynFlags &= ~GO_DYNFLAG_LO_NO_INTERACT;
125 if (gameObject->HasConditionalInteraction() && gameObject->CanActivateForPlayer(receiver))
144 if (!gameObject->MeetsInteractCondition(receiver))
148 if (data->spawnTrackingData && !data->spawnTrackingQuestObjectives.empty())
150 dynFlags &= ~GO_DYNFLAG_LO_ACTIVATE;
153 dynamicFlags = dynFlags;
175 if (summon->GetSummonerGUID() == receiver->
GetGUID())
177 if (summon->GetCreatureIdVisibleToSummoner())
178 cinfo =
sObjectMgr->GetCreatureTemplate(*summon->GetCreatureIdVisibleToSummoner());
180 if (summon->GetDisplayIdVisibleToSummoner())
181 displayId = *summon->GetDisplayIdVisibleToSummoner();
194 cinfo = transformInfo;
220 return &spawnTrackingStateData->StateWorldEffects;
238 stateSpellVisual = spawnTrackingStateData->StateSpellVisualId.value_or(0);
240 return stateSpellVisual;
256 stateAnimId = spawnTrackingStateData->StateAnimId.value_or(stateAnimId);
274 stateAnimKitId = spawnTrackingStateData->StateAnimKitId.value_or(0);
276 return stateAnimKitId;
290 if (!stateWorldEffectsQuestObjectiveId && unit->
IsCreature())
294 auto itr = data->spawnTrackingQuestObjectives.begin();
295 auto end = data->spawnTrackingQuestObjectives.end();
299 stateWorldEffectsQuestObjectiveId = *itr;
305 stateWorldEffectsQuestObjectiveId = *itr;
312 return stateWorldEffectsQuestObjectiveId;
334 return factionTemplate;
349 flags &= ~UNIT_FLAG_UNINTERACTIBLE;
366 flags &= ~UNIT_FLAG2_UNTARGETABLE_BY_CLIENT;
382 flags &= ~UNIT_FLAG3_ALREADY_SKINNED;
448 for (
auto const& [creatureId, spellClickInfo] : clickBounds)
450 if (!spellClickInfo.IsFitToRequirements(receiver, unit))
453 if (!
sConditionMgr->IsObjectMeetingSpellClickConditions(unit->
GetEntry(), spellClickInfo.spellId, receiver, unit))
456 interactSpellId = spellClickInfo.spellId;
461 return interactSpellId;
520 return &spawnTrackingStateData->StateWorldEffects;
537 stateSpellVisual = spawnTrackingStateData->StateSpellVisualId.value_or(0);
539 return stateSpellVisual;
554 stateAnimId = spawnTrackingStateData->StateAnimId.value_or(stateAnimId);
571 stateAnimKitId = spawnTrackingStateData->StateAnimKitId.value_or(0);
573 return stateAnimKitId;
587 if (!stateWorldEffectsQuestObjectiveId)
591 auto itr = data->spawnTrackingQuestObjectives.begin();
592 auto end = data->spawnTrackingQuestObjectives.end();
596 stateWorldEffectsQuestObjectiveId = *itr;
602 stateWorldEffectsQuestObjectiveId = *itr;
609 return stateWorldEffectsQuestObjectiveId;
667 startTime = localizedStartTime->count();
@ CREATURE_FLAG_EXTRA_TRIGGER
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
@ GAMEOBJECT_TYPE_CAPTURE_POINT
@ GAMEOBJECT_TYPE_SPELL_FOCUS
@ GAMEOBJECT_TYPE_TRANSPORT
@ GAMEOBJECT_TYPE_GENERIC
@ GAMEOBJECT_TYPE_QUESTGIVER
@ GAMEOBJECT_TYPE_SPELLCASTER
@ GAMEOBJECT_TYPE_FLAGSTAND
@ GAMEOBJECT_TYPE_MAP_OBJ_TRANSPORT
@ GAMEOBJECT_TYPE_GATHERING_NODE
@ UNIT_DYNFLAG_TRACK_UNIT
@ GO_DYNFLAG_LO_STATE_TRANSITION_ANIM_DONE
@ GO_DYNFLAG_LO_HIGHLIGHT
@ GO_DYNFLAG_LO_NO_INTERACT
@ GO_DYNFLAG_LO_INTERACT_COND
@ UNIT_NPC_FLAG_QUESTGIVER
@ UNIT_NPC_FLAG_SPELLCLICK
@ UNIT_FLAG3_ALREADY_SKINNED
@ UNIT_BYTE2_FLAG_SANCTUARY
ObjectGuid const & GetGUID() const
Milliseconds const * GetLineStartTime(LocaleConstant locale, int32 lineId) const
Milliseconds GetLastLineEndTime(LocaleConstant locale) const
bool IsSkinnedBy(Player const *player) const
CreatureData const * GetCreatureData() const
CreatureTemplate const * GetCreatureTemplate() const
SpawnTrackingStateData const * GetSpawnTrackingStateDataForPlayer(Player const *player) const override
GOState GetGoStateFor(ObjectGuid const &viewer) const
GameObjectTemplate const * GetGOInfo() const
GameobjectTypes GetGoType() const
GameObjectData const * GetGameObjectData() const
bool IsLootAllowedFor(Player const *player) const
Difficulty GetDifficultyID() const
GameObject * ToGameObject()
virtual SpawnTrackingStateData const * GetSpawnTrackingStateDataForPlayer(Player const *player) const
bool isAllowedToLoot(Creature const *creature) const
WorldSession * GetSession() const
SpawnTrackingState GetSpawnTrackingStateByObjective(uint32 spawnTrackingId, uint32 questObjectiveId) const
bool IsGameMaster() const
bool CanSeeGossipOn(Creature const *creature) const
SpawnTrackingState GetSpawnTrackingStateByObjectives(uint32 spawnTrackingId, std::vector< uint32 > const &questObjectives) const
bool CanSeeSpellClickOn(Creature const *creature) const
static value_type GetValue(UF::GameObjectData const *gameObjectData, Player const *receiver, GameObject const *gameObject)
UF::GameObjectData::FlagsTag::value_type value_type
UF::GameObjectData::SpawnTrackingStateAnimIDTag::value_type value_type
static value_type GetValue(UF::GameObjectData const *, Player const *receiver, GameObject const *gameObject)
UF::GameObjectData::SpawnTrackingStateAnimKitIDTag::value_type value_type
static value_type GetValue(UF::GameObjectData const *gameObjectData, Player const *receiver, GameObject const *gameObject)
UF::GameObjectData::StateSpellVisualIDTag::value_type value_type
static value_type GetValue(UF::GameObjectData const *gameObjectData, Player const *receiver, GameObject const *gameObject)
UF::GameObjectData::StateTag::value_type value_type
static value_type GetValue(UF::GameObjectData const *, Player const *receiver, GameObject const *gameObject)
static value_type GetValue(UF::GameObjectData const *gameObjectData, Player const *receiver, GameObject const *gameObject)
UF::GameObjectData::StateWorldEffectIDsTag::value_type const * value_type
static value_type GetValue(UF::GameObjectData const *gameObjectData, Player const *receiver, GameObject const *gameObject)
UF::GameObjectData::StateWorldEffectsQuestObjectiveIDTag::value_type value_type
UF::ObjectData::DynamicFlagsTag::value_type value_type
static value_type GetValue(UF::ObjectData const *objectData, Player const *receiver, Object const *object)
UF::ObjectData::EntryIDTag::value_type value_type
static value_type GetValue(UF::ObjectData const *objectData, Player const *receiver, Object const *object)
static value_type GetValue(UF::UnitData const *, Player const *receiver, Unit const *unit)
UF::UnitData::AuraStateTag::value_type value_type
UF::UnitData::DisplayIDTag::value_type value_type
static value_type GetValue(UF::UnitData const *unitData, Player const *receiver, Unit const *unit)
static value_type GetValue(UF::UnitData const *unitData, Player const *receiver, Unit const *unit)
UF::UnitData::FactionTemplateTag::value_type value_type
static value_type GetValue(UF::UnitData const *unitData, Player const *receiver, Unit const *)
UF::UnitData::Flags2Tag::value_type value_type
static value_type GetValue(UF::UnitData const *unitData, Player const *receiver, Unit const *unit)
UF::UnitData::Flags3Tag::value_type value_type
UF::UnitData::Flags4Tag::value_type value_type
static value_type GetValue(UF::UnitData const *unitData, Player const *, Unit const *)
static value_type GetValue(UF::UnitData const *unitData, Player const *receiver, Unit const *)
UF::UnitData::FlagsTag::value_type value_type
UF::UnitData::InteractSpellIDTag::value_type value_type
static value_type GetValue(UF::UnitData const *unitData, Player const *receiver, Unit const *unit)
static value_type GetValue(UF::UnitData const *unitData, Player const *receiver, Unit const *unit)
UF::UnitData::NpcFlags2Tag::value_type value_type
static value_type GetValue(UF::UnitData const *unitData, Player const *receiver, Unit const *unit)
UF::UnitData::NpcFlagsTag::value_type value_type
UF::UnitData::PvpFlagsTag::value_type value_type
static value_type GetValue(UF::UnitData const *unitData, Player const *receiver, Unit const *unit)
UF::UnitData::StateAnimIDTag::value_type value_type
static value_type GetValue(UF::UnitData const *, Player const *receiver, Unit const *unit)
UF::UnitData::StateAnimKitIDTag::value_type value_type
static value_type GetValue(UF::UnitData const *unitData, Player const *receiver, Unit const *unit)
UF::UnitData::StateSpellVisualIDTag::value_type value_type
static value_type GetValue(UF::UnitData const *unitData, Player const *receiver, Unit const *unit)
UF::UnitData::StateWorldEffectIDsTag::value_type const * value_type
static value_type GetValue(UF::UnitData const *unitData, Player const *receiver, Unit const *unit)
UF::UnitData::StateWorldEffectsQuestObjectiveIDTag::value_type value_type
static value_type GetValue(UF::UnitData const *unitData, Player const *receiver, Unit const *unit)
bool IsInteractionAllowedInCombat() const
uint32 GetTransformSpell() const
uint32 BuildAuraStateUpdateForTarget(Unit const *target) const
TempSummon * ToTempSummon()
uint32 GetFaction() const override
bool IsInRaidWith(Unit const *unit) const
bool IsInteractionAllowedWhileHostile() const
bool IsControlledByPlayer() const
bool IsHostileTo(WorldObject const *target) const
FactionTemplateEntry const * GetFactionTemplateEntry() const
LocaleConstant GetSessionDbLocaleIndex() const
@ CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP
static constexpr ObjectData objectData[]
static constexpr ObjectData gameObjectData[]
CreatureModel const * GetFirstVisibleModel() const
bool IsFriendlyTo(FactionTemplateEntry const *entry) const
bool IsUsingGroupLootRules() const
UpdateField< int32, 32, 45 > FactionTemplate
UpdateField< std::vector< uint32 >, 0, 2 > StateWorldEffectIDs
UpdateField< uint32, 0, 12 > StateWorldEffectsQuestObjectiveID
UpdateField< uint32, 32, 47 > Flags2
UpdateField< uint8, 64, 86 > PvpFlags
UpdateField< int32, 96, 117 > InteractSpellID
UpdateField< uint32, 0, 8 > NpcFlags2
UpdateField< uint32, 32, 49 > Flags4
UpdateField< int32, 0, 6 > DisplayID
UpdateField< uint32, 0, 9 > StateSpellVisualID
UpdateField< uint32, 0, 11 > StateAnimKitID
UpdateField< uint32, 32, 48 > Flags3
UpdateField< uint32, 32, 46 > Flags
UpdateField< uint32, 0, 7 > NpcFlags