Core/Misc: Use DB2Manager::IsInArea for area-related criterias and conditions
Port From (https://github.com/TrinityCore/TrinityCore/commit/9f68215bb61e46265c6667b6c71f0d2376835686)
This commit is contained in:
@@ -1149,7 +1149,7 @@ namespace Game.Achievements
|
|||||||
break;
|
break;
|
||||||
case CriteriaType.PVPKillInArea:
|
case CriteriaType.PVPKillInArea:
|
||||||
case CriteriaType.EnterTopLevelArea:
|
case CriteriaType.EnterTopLevelArea:
|
||||||
if (miscValue1 == 0 || miscValue1 != criteria.Entry.Asset)
|
if (miscValue1 == 0 || !Global.DB2Mgr.IsInArea((uint)miscValue1, criteria.Entry.Asset))
|
||||||
return false;
|
return false;
|
||||||
break;
|
break;
|
||||||
case CriteriaType.CurrencyGained:
|
case CriteriaType.CurrencyGained:
|
||||||
@@ -1313,9 +1313,7 @@ namespace Game.Achievements
|
|||||||
break;
|
break;
|
||||||
case ModifierTreeType.PlayerIsInArea: // 17
|
case ModifierTreeType.PlayerIsInArea: // 17
|
||||||
{
|
{
|
||||||
uint zoneId, areaId;
|
if (!Global.DB2Mgr.IsInArea(referencePlayer.GetAreaId(), reqValue))
|
||||||
referencePlayer.GetZoneAndAreaId(out zoneId, out areaId);
|
|
||||||
if (zoneId != reqValue && areaId != reqValue)
|
|
||||||
return false;
|
return false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1323,9 +1321,7 @@ namespace Game.Achievements
|
|||||||
{
|
{
|
||||||
if (refe == null)
|
if (refe == null)
|
||||||
return false;
|
return false;
|
||||||
uint zoneId, areaId;
|
if (!Global.DB2Mgr.IsInArea(refe.GetAreaId(), reqValue))
|
||||||
refe.GetZoneAndAreaId(out zoneId, out areaId);
|
|
||||||
if (zoneId != reqValue && areaId != reqValue)
|
|
||||||
return false;
|
return false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -3301,11 +3297,9 @@ namespace Game.Achievements
|
|||||||
case ModifierTreeType.PlayerIsInAreaGroup: // 298
|
case ModifierTreeType.PlayerIsInAreaGroup: // 298
|
||||||
{
|
{
|
||||||
var areas = Global.DB2Mgr.GetAreasForGroup(reqValue);
|
var areas = Global.DB2Mgr.GetAreasForGroup(reqValue);
|
||||||
AreaTableRecord area = CliDB.AreaTableStorage.LookupByKey(referencePlayer.GetAreaId());
|
foreach (uint areaInGroup in areas)
|
||||||
if (area != null)
|
if (Global.DB2Mgr.IsInArea(referencePlayer.GetAreaId(), areaInGroup))
|
||||||
foreach (uint areaInGroup in areas)
|
return true;
|
||||||
if (areaInGroup == area.Id || areaInGroup == area.ParentAreaID)
|
|
||||||
return true;
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
case ModifierTreeType.TargetIsInAreaGroup: // 299
|
case ModifierTreeType.TargetIsInAreaGroup: // 299
|
||||||
@@ -3314,11 +3308,9 @@ namespace Game.Achievements
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
var areas = Global.DB2Mgr.GetAreasForGroup(reqValue);
|
var areas = Global.DB2Mgr.GetAreasForGroup(reqValue);
|
||||||
var area = CliDB.AreaTableStorage.LookupByKey(refe.GetAreaId());
|
foreach (uint areaInGroup in areas)
|
||||||
if (area != null)
|
if (Global.DB2Mgr.IsInArea(refe.GetAreaId(), areaInGroup))
|
||||||
foreach (uint areaInGroup in areas)
|
return true;
|
||||||
if (areaInGroup == area.Id || areaInGroup == area.ParentAreaID)
|
|
||||||
return true;
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
case ModifierTreeType.PlayerIsInChromieTime: // 300
|
case ModifierTreeType.PlayerIsInChromieTime: // 300
|
||||||
|
|||||||
@@ -196,7 +196,7 @@ namespace Game.Conditions
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ConditionTypes.Areaid:
|
case ConditionTypes.Areaid:
|
||||||
condMeets = obj.GetAreaId() == ConditionValue1;
|
condMeets = Global.DB2Mgr.IsInArea(obj.GetAreaId(), ConditionValue1);
|
||||||
break;
|
break;
|
||||||
case ConditionTypes.Spell:
|
case ConditionTypes.Spell:
|
||||||
if (player != null)
|
if (player != null)
|
||||||
|
|||||||
@@ -2394,7 +2394,7 @@ namespace Game
|
|||||||
|
|
||||||
for (var i = 0; i < condition.AreaID.Length; ++i)
|
for (var i = 0; i < condition.AreaID.Length; ++i)
|
||||||
if (condition.AreaID[i] != 0)
|
if (condition.AreaID[i] != 0)
|
||||||
results[i] = player.GetAreaId() == condition.AreaID[i] || player.GetZoneId() == condition.AreaID[i];
|
results[i] = Global.DB2Mgr.IsInArea(player.GetAreaId(), condition.AreaID[i]);
|
||||||
|
|
||||||
if (!PlayerConditionLogic(condition.AreaLogic, results))
|
if (!PlayerConditionLogic(condition.AreaLogic, results))
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user