Core/Conditions: Allow battleground maps to use CONDITION_INSTANCE_INFO

Port From (https://github.com/TrinityCore/TrinityCore/commit/f4e4e62aea79ff478dbc0f2bb2c5ab7f412a8a66)
This commit is contained in:
hondacrx
2024-02-02 14:53:57 -05:00
parent d68246c93a
commit 150b978ead
3 changed files with 35 additions and 10 deletions
+24 -6
View File
@@ -38,9 +38,10 @@ namespace Game.Conditions
break;
case ConditionTypes.InstanceInfo:
{
if (map.IsDungeon())
InstanceMap instanceMap = map.ToInstanceMap();
if (instanceMap != null)
{
InstanceScript instance = ((InstanceMap)map).GetInstanceScript();
InstanceScript instance = instanceMap.GetInstanceScript();
if (instance != null)
{
switch ((InstanceInfo)ConditionValue3)
@@ -48,9 +49,6 @@ namespace Game.Conditions
case InstanceInfo.Data:
condMeets = instance.GetData(ConditionValue1) == ConditionValue2;
break;
//case INSTANCE_INFO_GUID_DATA:
// condMeets = instance->GetGuidData(ConditionValue1) == ObjectGuid(uint64(ConditionValue2));
// break;
case InstanceInfo.BossState:
condMeets = instance.GetBossState(ConditionValue1) == (EncounterState)ConditionValue2;
break;
@@ -63,6 +61,26 @@ namespace Game.Conditions
}
}
}
else
{
BattlegroundMap bgMap = map.ToBattlegroundMap();
if (bgMap != null)
{
ZoneScript zoneScript = bgMap.GetBG();
switch ((InstanceInfo)ConditionValue3)
{
case InstanceInfo.Data:
condMeets = zoneScript.GetData(ConditionValue1) == ConditionValue2;
break;
case InstanceInfo.Data64:
condMeets = zoneScript.GetData64(ConditionValue1) == ConditionValue2;
break;
default:
condMeets = false;
break;
}
}
}
break;
}
case ConditionTypes.Mapid:
@@ -657,7 +675,7 @@ namespace Game.Conditions
mConditionMap = map;
mLastFailedCondition = null;
}
public WorldObject[] mConditionTargets = new WorldObject[SharedConst.MaxConditionTargets]; // an array of targets available for conditions
public Map mConditionMap;
public Condition mLastFailedCondition;
+8 -2
View File
@@ -1784,13 +1784,19 @@ namespace Game
case ConditionTypes.PetType:
if (cond.ConditionValue1 >= (1 << (int)PetType.Max))
{
Log.outError(LogFilter.Sql, "{0} has non-existing pet type {1}, skipped.", cond.ToString(true), cond.ConditionValue1);
Log.outError(LogFilter.Sql, $"{cond.ToString(true)} has non-existing pet type {cond.ConditionValue1}, skipped.");
return false;
}
break;
case ConditionTypes.InstanceInfo:
if (cond.ConditionValue3 == (uint)InstanceInfo.GuidData)
{
Log.outError(LogFilter.Sql, $"{cond.ToString(true)} has unsupported ConditionValue3 {cond.ConditionValue3} (INSTANCE_INFO_GUID_DATA), skipped.");
return false;
}
break;
case ConditionTypes.Alive:
case ConditionTypes.Areaid:
case ConditionTypes.InstanceInfo:
case ConditionTypes.TerrainSwap:
case ConditionTypes.InWater:
case ConditionTypes.Charmed: