aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Achievements/CriteriaHandler.cpp24
-rw-r--r--src/server/game/Conditions/ConditionMgr.cpp4
2 files changed, 11 insertions, 17 deletions
diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp
index b8dfdf6468b..8375e9943bf 100644
--- a/src/server/game/Achievements/CriteriaHandler.cpp
+++ b/src/server/game/Achievements/CriteriaHandler.cpp
@@ -1594,7 +1594,7 @@ bool CriteriaHandler::RequirementsSatisfied(Criteria const* criteria, uint64 mis
break;
case CriteriaType::PVPKillInArea:
case CriteriaType::EnterTopLevelArea:
- if (!miscValue1 || miscValue1 != uint32(criteria->Entry->Asset.AreaID))
+ if (!miscValue1 || !DB2Manager::IsInArea(uint32(miscValue1), uint32(criteria->Entry->Asset.AreaID)))
return false;
break;
case CriteriaType::CurrencyGained:
@@ -1758,9 +1758,7 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6
break;
case ModifierTreeType::PlayerIsInArea: // 17
{
- uint32 zoneId, areaId;
- referencePlayer->GetZoneAndAreaId(zoneId, areaId);
- if (zoneId != reqValue && areaId != reqValue)
+ if (!DB2Manager::IsInArea(referencePlayer->GetAreaId(), reqValue))
return false;
break;
}
@@ -1768,9 +1766,7 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6
{
if (!ref)
return false;
- uint32 zoneId, areaId;
- ref->GetZoneAndAreaId(zoneId, areaId);
- if (zoneId != reqValue && areaId != reqValue)
+ if (!DB2Manager::IsInArea(ref->GetAreaId(), reqValue))
return false;
break;
}
@@ -3583,10 +3579,9 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6
case ModifierTreeType::PlayerIsInAreaGroup: // 298
{
std::vector<uint32> areas = sDB2Manager.GetAreasForGroup(reqValue);
- if (AreaTableEntry const* area = sAreaTableStore.LookupEntry(referencePlayer->GetAreaId()))
- for (uint32 areaInGroup : areas)
- if (areaInGroup == area->ID || areaInGroup == area->ParentAreaID)
- return true;
+ for (uint32 areaInGroup : areas)
+ if (DB2Manager::IsInArea(referencePlayer->GetAreaId(), areaInGroup))
+ return true;
return false;
}
case ModifierTreeType::TargetIsInAreaGroup: // 299
@@ -3594,10 +3589,9 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6
if (!ref)
return false;
std::vector<uint32> areas = sDB2Manager.GetAreasForGroup(reqValue);
- if (AreaTableEntry const* area = sAreaTableStore.LookupEntry(ref->GetAreaId()))
- for (uint32 areaInGroup : areas)
- if (areaInGroup == area->ID || areaInGroup == area->ParentAreaID)
- return true;
+ for (uint32 areaInGroup : areas)
+ if (DB2Manager::IsInArea(ref->GetAreaId(), areaInGroup))
+ return true;
return false;
}
case ModifierTreeType::PlayerIsInChromieTime: // 300
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp
index 3d049d00b1b..e7d439ac7d6 100644
--- a/src/server/game/Conditions/ConditionMgr.cpp
+++ b/src/server/game/Conditions/ConditionMgr.cpp
@@ -362,7 +362,7 @@ bool Condition::Meets(ConditionSourceInfo& sourceInfo) const
break;
}
case CONDITION_AREAID:
- condMeets = object->GetAreaId() == ConditionValue1;
+ condMeets = DB2Manager::IsInArea(object->GetAreaId(), ConditionValue1);
break;
case CONDITION_SPELL:
{
@@ -3308,7 +3308,7 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditio
results.fill(true);
for (std::size_t i = 0; i < condition->AreaID.size(); ++i)
if (condition->AreaID[i])
- results[i] = player->GetAreaId() == condition->AreaID[i] || player->GetZoneId() == condition->AreaID[i];
+ results[i] = DB2Manager::IsInArea(player->GetAreaId(), condition->AreaID[i]);
if (!PlayerConditionLogic(condition->AreaLogic, results))
return false;