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:
hondacrx
2024-02-01 10:22:15 -05:00
parent ae360d67a1
commit febab9baed
3 changed files with 11 additions and 19 deletions
+9 -17
View File
@@ -1149,7 +1149,7 @@ namespace Game.Achievements
break;
case CriteriaType.PVPKillInArea:
case CriteriaType.EnterTopLevelArea:
if (miscValue1 == 0 || miscValue1 != criteria.Entry.Asset)
if (miscValue1 == 0 || !Global.DB2Mgr.IsInArea((uint)miscValue1, criteria.Entry.Asset))
return false;
break;
case CriteriaType.CurrencyGained:
@@ -1313,9 +1313,7 @@ namespace Game.Achievements
break;
case ModifierTreeType.PlayerIsInArea: // 17
{
uint zoneId, areaId;
referencePlayer.GetZoneAndAreaId(out zoneId, out areaId);
if (zoneId != reqValue && areaId != reqValue)
if (!Global.DB2Mgr.IsInArea(referencePlayer.GetAreaId(), reqValue))
return false;
break;
}
@@ -1323,9 +1321,7 @@ namespace Game.Achievements
{
if (refe == null)
return false;
uint zoneId, areaId;
refe.GetZoneAndAreaId(out zoneId, out areaId);
if (zoneId != reqValue && areaId != reqValue)
if (!Global.DB2Mgr.IsInArea(refe.GetAreaId(), reqValue))
return false;
break;
}
@@ -3301,11 +3297,9 @@ namespace Game.Achievements
case ModifierTreeType.PlayerIsInAreaGroup: // 298
{
var areas = Global.DB2Mgr.GetAreasForGroup(reqValue);
AreaTableRecord area = CliDB.AreaTableStorage.LookupByKey(referencePlayer.GetAreaId());
if (area != null)
foreach (uint areaInGroup in areas)
if (areaInGroup == area.Id || areaInGroup == area.ParentAreaID)
return true;
foreach (uint areaInGroup in areas)
if (Global.DB2Mgr.IsInArea(referencePlayer.GetAreaId(), areaInGroup))
return true;
return false;
}
case ModifierTreeType.TargetIsInAreaGroup: // 299
@@ -3314,11 +3308,9 @@ namespace Game.Achievements
return false;
var areas = Global.DB2Mgr.GetAreasForGroup(reqValue);
var area = CliDB.AreaTableStorage.LookupByKey(refe.GetAreaId());
if (area != null)
foreach (uint areaInGroup in areas)
if (areaInGroup == area.Id || areaInGroup == area.ParentAreaID)
return true;
foreach (uint areaInGroup in areas)
if (Global.DB2Mgr.IsInArea(refe.GetAreaId(), areaInGroup))
return true;
return false;
}
case ModifierTreeType.PlayerIsInChromieTime: // 300
+1 -1
View File
@@ -196,7 +196,7 @@ namespace Game.Conditions
}
break;
case ConditionTypes.Areaid:
condMeets = obj.GetAreaId() == ConditionValue1;
condMeets = Global.DB2Mgr.IsInArea(obj.GetAreaId(), ConditionValue1);
break;
case ConditionTypes.Spell:
if (player != null)
+1 -1
View File
@@ -2394,7 +2394,7 @@ namespace Game
for (var i = 0; i < condition.AreaID.Length; ++i)
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))
return false;