Core/Conditions: Allow battleground maps to use CONDITION_INSTANCE_INFO
Port From (https://github.com/TrinityCore/TrinityCore/commit/f4e4e62aea79ff478dbc0f2bb2c5ab7f412a8a66)
This commit is contained in:
@@ -119,7 +119,8 @@ namespace Framework.Constants
|
||||
public enum InstanceInfo
|
||||
{
|
||||
Data = 0,
|
||||
Data64,
|
||||
BossState
|
||||
GuidData,
|
||||
BossState,
|
||||
Data64
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user