diff options
author | Shauren <shauren.trinity@gmail.com> | 2024-01-30 21:29:55 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2024-01-30 21:29:55 +0100 |
commit | f70a5817e1c07891185d716611d45f50b1c73b78 (patch) | |
tree | 6d08eeee3021a72e0742fd82d836696556a57f96 /src/server/game/Spells/Spell.h | |
parent | 9e13fee4a6374680e99ab4407fed73940954ea91 (diff) |
Core/Creatures: Move immunities to separate table and implemented setting immunties to dispel, spell effects, aura types, aoe and chain targeting
Diffstat (limited to 'src/server/game/Spells/Spell.h')
-rw-r--r-- | src/server/game/Spells/Spell.h | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index d5037f91356..ff0b2efef11 100644 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -67,6 +67,11 @@ enum SpellValueMod : uint8; enum TriggerCastFlags : uint32; enum WeaponAttackType : uint8; +namespace Trinity +{ +enum class WorldObjectSpellAreaTargetSearchReason; +} + #define SPELL_CHANNEL_UPDATE_INTERVAL (1 * IN_MILLISECONDS) #define MAX_SPELL_RANGE_TOLERANCE 3.0f #define TRAJECTORY_MISSILE_SIZE 3.0f @@ -455,8 +460,11 @@ class TC_GAME_API Spell template<class SEARCHER> static void SearchTargets(SEARCHER& searcher, uint32 containerMask, WorldObject* referer, Position const* pos, float radius); WorldObject* SearchNearbyTarget(SpellEffectInfo const& spellEffectInfo, float range, SpellTargetObjectTypes objectType, SpellTargetCheckTypes selectionType, ConditionContainer const* condList = nullptr); - void SearchAreaTargets(std::list<WorldObject*>& targets, SpellEffectInfo const& spellEffectInfo, float range, Position const* position, WorldObject* referer, SpellTargetObjectTypes objectType, SpellTargetCheckTypes selectionType, ConditionContainer const* condList); - void SearchChainTargets(std::list<WorldObject*>& targets, uint32 chainTargets, WorldObject* target, SpellTargetObjectTypes objectType, SpellTargetCheckTypes selectType, SpellEffectInfo const& spellEffectInfo, bool isChainHeal); + void SearchAreaTargets(std::list<WorldObject*>& targets, SpellEffectInfo const& spellEffectInfo, float range, Position const* position, WorldObject* referer, + SpellTargetObjectTypes objectType, SpellTargetCheckTypes selectionType, ConditionContainer const* condList, + Trinity::WorldObjectSpellAreaTargetSearchReason searchReason); + void SearchChainTargets(std::list<WorldObject*>& targets, uint32 chainTargets, WorldObject* target, SpellTargetObjectTypes objectType, + SpellTargetCheckTypes selectType, SpellEffectInfo const& spellEffectInfo, bool isChainHeal); GameObject* SearchSpellFocus(); @@ -950,12 +958,20 @@ namespace Trinity bool operator()(WorldObject* target); }; + enum class WorldObjectSpellAreaTargetSearchReason + { + Area, + Chain + }; + struct TC_GAME_API WorldObjectSpellAreaTargetCheck : public WorldObjectSpellTargetCheck { float _range; Position const* _position; + WorldObjectSpellAreaTargetSearchReason _searchReason; WorldObjectSpellAreaTargetCheck(float range, Position const* position, WorldObject* caster, - WorldObject* referer, SpellInfo const* spellInfo, SpellTargetCheckTypes selectionType, ConditionContainer const* condList, SpellTargetObjectTypes objectType); + WorldObject* referer, SpellInfo const* spellInfo, SpellTargetCheckTypes selectionType, ConditionContainer const* condList, SpellTargetObjectTypes objectType, + WorldObjectSpellAreaTargetSearchReason searchReason = WorldObjectSpellAreaTargetSearchReason::Area); bool operator()(WorldObject* target) const; }; |