mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/Conditions: Allow conditions for seen object in CONDITION_SOURCE_TYPE_OBJECT_ID_VISIBILITY
This commit is contained in:
@@ -927,6 +927,7 @@ uint32 Condition::GetMaxAvailableConditionTargets() const
|
||||
case CONDITION_SOURCE_TYPE_SMART_EVENT:
|
||||
case CONDITION_SOURCE_TYPE_NPC_VENDOR:
|
||||
case CONDITION_SOURCE_TYPE_SPELL_PROC:
|
||||
case CONDITION_SOURCE_TYPE_OBJECT_ID_VISIBILITY:
|
||||
return 2;
|
||||
default:
|
||||
return 1;
|
||||
@@ -1256,13 +1257,13 @@ bool ConditionMgr::IsObjectMeetingTrainerSpellConditions(uint32 trainerId, uint3
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ConditionMgr::IsObjectMeetingVisibilityByObjectIdConditions(uint32 objectType, uint32 entry, WorldObject const* seer) const
|
||||
bool ConditionMgr::IsObjectMeetingVisibilityByObjectIdConditions(WorldObject const* obj, WorldObject const* seer) const
|
||||
{
|
||||
auto itr = ConditionStore[CONDITION_SOURCE_TYPE_OBJECT_ID_VISIBILITY].find({ objectType, int32(entry), 0 });
|
||||
auto itr = ConditionStore[CONDITION_SOURCE_TYPE_OBJECT_ID_VISIBILITY].find({ uint32(obj->GetTypeId()), int32(obj->GetEntry()), 0 });
|
||||
if (itr != ConditionStore[CONDITION_SOURCE_TYPE_OBJECT_ID_VISIBILITY].end())
|
||||
{
|
||||
TC_LOG_DEBUG("condition", "IsObjectMeetingVisibilityByObjectIdConditions: found conditions for objectType {} entry {}", objectType, entry);
|
||||
return IsObjectMeetToConditions(seer, *itr->second);
|
||||
TC_LOG_DEBUG("condition", "IsObjectMeetingVisibilityByObjectIdConditions: found conditions for objectType {} entry {} guid {}", obj->GetTypeId(), obj->GetEntry(), obj->GetGUID().ToString());
|
||||
return IsObjectMeetToConditions(seer, obj, *itr->second);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -326,7 +326,7 @@ class TC_GAME_API ConditionMgr
|
||||
|
||||
ConditionContainer const* GetConditionsForAreaTrigger(uint32 areaTriggerId, bool isServerSide) const;
|
||||
bool IsObjectMeetingTrainerSpellConditions(uint32 trainerId, uint32 spellId, Player* player) const;
|
||||
bool IsObjectMeetingVisibilityByObjectIdConditions(uint32 objectType, uint32 entry, WorldObject const* seer) const;
|
||||
bool IsObjectMeetingVisibilityByObjectIdConditions(WorldObject const* obj, WorldObject const* seer) const;
|
||||
|
||||
static uint32 GetPlayerConditionLfgValue(Player const* player, PlayerConditionLfgStatus status);
|
||||
static bool IsPlayerMeetingCondition(Player const* player, uint32 conditionId);
|
||||
|
||||
@@ -1578,7 +1578,7 @@ bool WorldObject::CanSeeOrDetect(WorldObject const* obj, bool implicitDetect, bo
|
||||
if (smoothPhasing->IsBeingReplacedForSeer(GetGUID()))
|
||||
return false;
|
||||
|
||||
if (!obj->IsPrivateObject() && !sConditionMgr->IsObjectMeetingVisibilityByObjectIdConditions(obj->GetTypeId(), obj->GetEntry(), this))
|
||||
if (!obj->IsPrivateObject() && !sConditionMgr->IsObjectMeetingVisibilityByObjectIdConditions(obj, this))
|
||||
return false;
|
||||
|
||||
// Spawn tracking
|
||||
|
||||
Reference in New Issue
Block a user