mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-15 23:20:36 +01:00
Core/Conditions: Allow battleground maps to use CONDITION_INSTANCE_INFO
This commit is contained in:
@@ -19,6 +19,7 @@
|
||||
#include "AchievementMgr.h"
|
||||
#include "AreaTrigger.h"
|
||||
#include "AreaTriggerDataStore.h"
|
||||
#include "Battleground.h"
|
||||
#include "BattlePetMgr.h"
|
||||
#include "Containers.h"
|
||||
#include "ConversationDataStore.h"
|
||||
@@ -38,16 +39,16 @@
|
||||
#include "Map.h"
|
||||
#include "ObjectAccessor.h"
|
||||
#include "ObjectMgr.h"
|
||||
#include "PhasingHandler.h"
|
||||
#include "Pet.h"
|
||||
#include "PhasingHandler.h"
|
||||
#include "Player.h"
|
||||
#include "RaceMask.h"
|
||||
#include "Realm.h"
|
||||
#include "ReputationMgr.h"
|
||||
#include "ScriptMgr.h"
|
||||
#include "Spell.h"
|
||||
#include "SpellAuras.h"
|
||||
#include "SpellAuraEffects.h"
|
||||
#include "SpellAuras.h"
|
||||
#include "SpellMgr.h"
|
||||
#include "World.h"
|
||||
#include "WorldSession.h"
|
||||
@@ -189,18 +190,15 @@ bool Condition::Meets(ConditionSourceInfo& sourceInfo) const
|
||||
break;
|
||||
case CONDITION_INSTANCE_INFO:
|
||||
{
|
||||
if (map->IsDungeon())
|
||||
if (InstanceMap const* instanceMap = map->ToInstanceMap())
|
||||
{
|
||||
if (InstanceScript const* instance = ((InstanceMap*)map)->GetInstanceScript())
|
||||
if (InstanceScript const* instance = instanceMap->GetInstanceScript())
|
||||
{
|
||||
switch (ConditionValue3)
|
||||
{
|
||||
case INSTANCE_INFO_DATA:
|
||||
condMeets = instance->GetData(ConditionValue1) == ConditionValue2;
|
||||
break;
|
||||
//case INSTANCE_INFO_GUID_DATA:
|
||||
// condMeets = instance->GetGuidData(ConditionValue1) == ObjectGuid(uint64(ConditionValue2));
|
||||
// break;
|
||||
case INSTANCE_INFO_BOSS_STATE:
|
||||
condMeets = instance->GetBossState(ConditionValue1) == EncounterState(ConditionValue2);
|
||||
break;
|
||||
@@ -213,6 +211,22 @@ bool Condition::Meets(ConditionSourceInfo& sourceInfo) const
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (BattlegroundMap const* bgMap = map->ToBattlegroundMap())
|
||||
{
|
||||
ZoneScript const* zoneScript = bgMap->GetBG();
|
||||
switch (ConditionValue3)
|
||||
{
|
||||
case INSTANCE_INFO_DATA:
|
||||
condMeets = zoneScript->GetData(ConditionValue1) == ConditionValue2;
|
||||
break;
|
||||
case INSTANCE_INFO_DATA64:
|
||||
condMeets = zoneScript->GetData64(ConditionValue1) == ConditionValue2;
|
||||
break;
|
||||
default:
|
||||
condMeets = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case CONDITION_MAPID:
|
||||
@@ -2698,6 +2712,12 @@ bool ConditionMgr::isConditionTypeValid(Condition* cond) const
|
||||
}
|
||||
break;
|
||||
case CONDITION_INSTANCE_INFO:
|
||||
if (cond->ConditionValue3 == INSTANCE_INFO_GUID_DATA)
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "{} has unsupported ConditionValue3 {} (INSTANCE_INFO_GUID_DATA), skipped.", cond->ToString(true), cond->ConditionValue3);
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case CONDITION_AREAID:
|
||||
case CONDITION_ALIVE:
|
||||
case CONDITION_IN_WATER:
|
||||
|
||||
Reference in New Issue
Block a user