diff options
author | ModoX <moardox@gmail.com> | 2021-10-06 10:22:41 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-06 10:22:41 +0200 |
commit | 3548467c93a3859f7df72c456d600300539dc6b2 (patch) | |
tree | 32f098a4a6af3a767ac3c02265e111a5d0920b14 /src/server/game/Conditions/ConditionMgr.h | |
parent | f602a83bb46d485b1c6adeac53384348b7a1102f (diff) |
Core/Conditions: Implemented conditions for areatriggers (#27021)
* also added example fix for Death's Power Grows quest
Diffstat (limited to 'src/server/game/Conditions/ConditionMgr.h')
-rw-r--r-- | src/server/game/Conditions/ConditionMgr.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/server/game/Conditions/ConditionMgr.h b/src/server/game/Conditions/ConditionMgr.h index 207c311731e..5cfb0cfb3e9 100644 --- a/src/server/game/Conditions/ConditionMgr.h +++ b/src/server/game/Conditions/ConditionMgr.h @@ -168,7 +168,8 @@ enum ConditionSourceType CONDITION_SOURCE_TYPE_TERRAIN_SWAP = 25, CONDITION_SOURCE_TYPE_PHASE = 26, CONDITION_SOURCE_TYPE_GRAVEYARD = 27, - CONDITION_SOURCE_TYPE_MAX = 28 // MAX + CONDITION_SOURCE_TYPE_AREATRIGGER = 28, + CONDITION_SOURCE_TYPE_MAX = 29 // MAX }; enum RelationType @@ -259,6 +260,7 @@ typedef std::array<ConditionsByEntryMap, CONDITION_SOURCE_TYPE_MAX> ConditionEnt typedef std::unordered_map<uint32, ConditionsByEntryMap> ConditionEntriesByCreatureIdMap; typedef std::unordered_map<std::pair<int32, uint32 /*SAI source_type*/>, ConditionsByEntryMap> SmartEventConditionContainer; typedef std::unordered_map<uint32, ConditionContainer> ConditionReferenceContainer;//only used for references +typedef std::unordered_map<std::pair<int32, bool>, ConditionContainer> ConditionEntriesByAreaTriggerIdMap; class TC_GAME_API ConditionMgr { @@ -286,6 +288,7 @@ class TC_GAME_API ConditionMgr bool IsObjectMeetingVehicleSpellConditions(uint32 creatureId, uint32 spellId, Player* player, Unit* vehicle) const; bool IsObjectMeetingSmartEventConditions(int64 entryOrGuid, uint32 eventId, uint32 sourceType, Unit* unit, WorldObject* baseObject) const; bool IsObjectMeetingVendorItemConditions(uint32 creatureId, uint32 itemId, Player* player, Creature* vendor) const; + ConditionContainer const* GetConditionsForAreaTrigger(uint32 areaTriggerId, bool isServerSide) const; static uint32 GetPlayerConditionLfgValue(Player const* player, PlayerConditionLfgStatus status); static bool IsPlayerMeetingCondition(Player const* player, PlayerConditionEntry const* condition); @@ -321,6 +324,7 @@ class TC_GAME_API ConditionMgr ConditionEntriesByCreatureIdMap SpellClickEventConditionStore; ConditionEntriesByCreatureIdMap NpcVendorConditionContainerStore; SmartEventConditionContainer SmartEventConditionStore; + ConditionEntriesByAreaTriggerIdMap AreaTriggerConditionContainerStore; }; #define sConditionMgr ConditionMgr::instance() |