aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/Spell.h
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-01-30 21:29:55 +0100
committerShauren <shauren.trinity@gmail.com>2024-01-30 21:29:55 +0100
commitf70a5817e1c07891185d716611d45f50b1c73b78 (patch)
tree6d08eeee3021a72e0742fd82d836696556a57f96 /src/server/game/Spells/Spell.h
parent9e13fee4a6374680e99ab4407fed73940954ea91 (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.h22
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;
};