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
|
public enum InstanceInfo
|
||||||
{
|
{
|
||||||
Data = 0,
|
Data = 0,
|
||||||
Data64,
|
GuidData,
|
||||||
BossState
|
BossState,
|
||||||
|
Data64
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,9 +38,10 @@ namespace Game.Conditions
|
|||||||
break;
|
break;
|
||||||
case ConditionTypes.InstanceInfo:
|
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)
|
if (instance != null)
|
||||||
{
|
{
|
||||||
switch ((InstanceInfo)ConditionValue3)
|
switch ((InstanceInfo)ConditionValue3)
|
||||||
@@ -48,9 +49,6 @@ namespace Game.Conditions
|
|||||||
case InstanceInfo.Data:
|
case InstanceInfo.Data:
|
||||||
condMeets = instance.GetData(ConditionValue1) == ConditionValue2;
|
condMeets = instance.GetData(ConditionValue1) == ConditionValue2;
|
||||||
break;
|
break;
|
||||||
//case INSTANCE_INFO_GUID_DATA:
|
|
||||||
// condMeets = instance->GetGuidData(ConditionValue1) == ObjectGuid(uint64(ConditionValue2));
|
|
||||||
// break;
|
|
||||||
case InstanceInfo.BossState:
|
case InstanceInfo.BossState:
|
||||||
condMeets = instance.GetBossState(ConditionValue1) == (EncounterState)ConditionValue2;
|
condMeets = instance.GetBossState(ConditionValue1) == (EncounterState)ConditionValue2;
|
||||||
break;
|
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;
|
break;
|
||||||
}
|
}
|
||||||
case ConditionTypes.Mapid:
|
case ConditionTypes.Mapid:
|
||||||
@@ -657,7 +675,7 @@ namespace Game.Conditions
|
|||||||
mConditionMap = map;
|
mConditionMap = map;
|
||||||
mLastFailedCondition = null;
|
mLastFailedCondition = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public WorldObject[] mConditionTargets = new WorldObject[SharedConst.MaxConditionTargets]; // an array of targets available for conditions
|
public WorldObject[] mConditionTargets = new WorldObject[SharedConst.MaxConditionTargets]; // an array of targets available for conditions
|
||||||
public Map mConditionMap;
|
public Map mConditionMap;
|
||||||
public Condition mLastFailedCondition;
|
public Condition mLastFailedCondition;
|
||||||
|
|||||||
@@ -1784,13 +1784,19 @@ namespace Game
|
|||||||
case ConditionTypes.PetType:
|
case ConditionTypes.PetType:
|
||||||
if (cond.ConditionValue1 >= (1 << (int)PetType.Max))
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ConditionTypes.Alive:
|
case ConditionTypes.Alive:
|
||||||
case ConditionTypes.Areaid:
|
case ConditionTypes.Areaid:
|
||||||
case ConditionTypes.InstanceInfo:
|
|
||||||
case ConditionTypes.TerrainSwap:
|
case ConditionTypes.TerrainSwap:
|
||||||
case ConditionTypes.InWater:
|
case ConditionTypes.InWater:
|
||||||
case ConditionTypes.Charmed:
|
case ConditionTypes.Charmed:
|
||||||
|
|||||||
Reference in New Issue
Block a user