From 3548467c93a3859f7df72c456d600300539dc6b2 Mon Sep 17 00:00:00 2001 From: ModoX Date: Wed, 6 Oct 2021 10:22:41 +0200 Subject: Core/Conditions: Implemented conditions for areatriggers (#27021) * also added example fix for Death's Power Grows quest --- src/server/game/Conditions/ConditionMgr.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/server/game/Conditions/ConditionMgr.h') 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 ConditionEnt typedef std::unordered_map ConditionEntriesByCreatureIdMap; typedef std::unordered_map, ConditionsByEntryMap> SmartEventConditionContainer; typedef std::unordered_map ConditionReferenceContainer;//only used for references +typedef std::unordered_map, 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() -- cgit v1.2.3