diff options
author | Shauren <shauren.trinity@gmail.com> | 2016-06-08 21:46:08 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2016-06-08 21:46:08 +0200 |
commit | de2efe01055fba7cb254ca5eac211c4c9f390a9b (patch) | |
tree | 8a63cda5c248de39c05e023f8897c8d8de64652d /src | |
parent | 7eceba09d79823f015d16cdacc6d9477f7f4cea0 (diff) |
Core/Taxi: Implemented PlayerCondition requirements on taxi paths
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Conditions/ConditionMgr.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Conditions/ConditionMgr.h | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Taxi/TaxiPathGraph.cpp | 5 |
3 files changed, 6 insertions, 5 deletions
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index 2f9093a31a5..76e065f8ddc 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -2368,7 +2368,7 @@ inline bool PlayerConditionLogic(uint32 logic, std::array<bool, N>& results) return result; } -bool ConditionMgr::IsPlayerMeetingCondition(Player* player, PlayerConditionEntry const* condition) +bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditionEntry const* condition) { if (condition->MinLevel && player->getLevel() < condition->MinLevel) return false; @@ -2489,7 +2489,7 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player* player, PlayerConditionEntry if (condition->PartyStatus) { - Group* group = player->GetGroup(); + Group const* group = player->GetGroup(); switch (condition->PartyStatus) { case 1: diff --git a/src/server/game/Conditions/ConditionMgr.h b/src/server/game/Conditions/ConditionMgr.h index 7c61b4d2955..fb754ab5349 100644 --- a/src/server/game/Conditions/ConditionMgr.h +++ b/src/server/game/Conditions/ConditionMgr.h @@ -271,7 +271,7 @@ class TC_GAME_API ConditionMgr bool IsObjectMeetingSmartEventConditions(int64 entryOrGuid, uint32 eventId, uint32 sourceType, Unit* unit, WorldObject* baseObject) const; bool IsObjectMeetingVendorItemConditions(uint32 creatureId, uint32 itemId, Player* player, Creature* vendor) const; - static bool IsPlayerMeetingCondition(Player* player, PlayerConditionEntry const* condition); + static bool IsPlayerMeetingCondition(Player const* player, PlayerConditionEntry const* condition); struct ConditionTypeInfo { diff --git a/src/server/game/Entities/Taxi/TaxiPathGraph.cpp b/src/server/game/Entities/Taxi/TaxiPathGraph.cpp index 6617267be6a..6670c8ea2cb 100644 --- a/src/server/game/Entities/Taxi/TaxiPathGraph.cpp +++ b/src/server/game/Entities/Taxi/TaxiPathGraph.cpp @@ -185,8 +185,9 @@ uint32 TaxiPathGraph::EdgeCost::EvaluateDistance(Player const* player) const if (!(To->Flags & requireFlag)) return std::numeric_limits<uint16>::max(); - //if (To->ConditionID && !player->MeetsCondition(To->ConditionID)) - // return std::numeric_limits<uint16>::max(); + if (PlayerConditionEntry const* condition = sPlayerConditionStore.LookupEntry(To->ConditionID)) + if (!sConditionMgr->IsPlayerMeetingCondition(player, condition)) + return std::numeric_limits<uint16>::max(); return Distance; } |