aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Conditions/ConditionMgr.h
diff options
context:
space:
mode:
authorModoX <moardox@gmail.com>2021-10-06 10:22:41 +0200
committerGitHub <noreply@github.com>2021-10-06 10:22:41 +0200
commit3548467c93a3859f7df72c456d600300539dc6b2 (patch)
tree32f098a4a6af3a767ac3c02265e111a5d0920b14 /src/server/game/Conditions/ConditionMgr.h
parentf602a83bb46d485b1c6adeac53384348b7a1102f (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.h6
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()