aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells
diff options
context:
space:
mode:
authorLopfest <lopfest@gmail.com>2019-08-30 19:36:10 +0200
committerShauren <shauren.trinity@gmail.com>2019-08-30 19:36:10 +0200
commit7d2cbd4e7cec5737c742437e126ddb745d65f6a9 (patch)
tree9a7dee26c1e379d3edde648cdeceef106947325c /src/server/game/Spells
parent3df2e379eff98eba2c86bc6823cde1def6213afa (diff)
Core/Quests: Implement new logic for selecting spell casters for accept/reward spells based on quest flags (#21316)
Diffstat (limited to 'src/server/game/Spells')
-rw-r--r--src/server/game/Spells/SpellInfo.cpp24
-rw-r--r--src/server/game/Spells/SpellInfo.h2
2 files changed, 26 insertions, 0 deletions
diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp
index ab364042f68..c93ceb775d1 100644
--- a/src/server/game/Spells/SpellInfo.cpp
+++ b/src/server/game/Spells/SpellInfo.cpp
@@ -1319,6 +1319,30 @@ bool SpellInfo::HasOnlyDamageEffects() const
return true;
}
+bool SpellInfo::HasTargetType(::Targets target) const
+{
+ for (auto itr = _effects.begin(); itr != _effects.end(); ++itr)
+ {
+ for (SpellEffectInfo const* effect : itr->second)
+ {
+ if (effect && (effect->TargetA.GetTarget() == target || effect->TargetB.GetTarget() == target))
+ return true;
+ }
+ }
+ return false;
+}
+
+bool SpellInfo::HasTargetType(uint32 difficulty, ::Targets target) const
+{
+ SpellEffectInfoVector effects = GetEffectsForDifficulty(difficulty);
+ for (SpellEffectInfo const* effect : effects)
+ {
+ if (effect && (effect->TargetA.GetTarget() == target || effect->TargetB.GetTarget() == target))
+ return true;
+ }
+ return false;
+}
+
bool SpellInfo::HasAnyAuraInterruptFlag() const
{
return std::find_if(AuraInterruptFlags.begin(), AuraInterruptFlags.end(), [](uint32 flag) { return flag != 0; }) != AuraInterruptFlags.end();
diff --git a/src/server/game/Spells/SpellInfo.h b/src/server/game/Spells/SpellInfo.h
index 004189fc028..f253f4ed065 100644
--- a/src/server/game/Spells/SpellInfo.h
+++ b/src/server/game/Spells/SpellInfo.h
@@ -534,6 +534,8 @@ class TC_GAME_API SpellInfo
bool HasAreaAuraEffect(uint32 difficulty) const;
bool HasAreaAuraEffect() const;
bool HasOnlyDamageEffects() const;
+ bool HasTargetType(::Targets target) const;
+ bool HasTargetType(uint32 difficulty, ::Targets target) const;
bool HasAttribute(SpellAttr0 attribute) const { return !!(Attributes & attribute); }
bool HasAttribute(SpellAttr1 attribute) const { return !!(AttributesEx & attribute); }