diff options
-rw-r--r-- | src/server/game/Achievements/CriteriaHandler.cpp | 24 | ||||
-rw-r--r-- | src/server/game/Conditions/ConditionMgr.cpp | 4 |
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; |