diff options
| author | Lopfest <lopfest@gmail.com> | 2019-08-30 19:36:10 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2019-08-30 19:36:10 +0200 |
| commit | 7d2cbd4e7cec5737c742437e126ddb745d65f6a9 (patch) | |
| tree | 9a7dee26c1e379d3edde648cdeceef106947325c /src/server/game/Spells | |
| parent | 3df2e379eff98eba2c86bc6823cde1def6213afa (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.cpp | 24 | ||||
| -rw-r--r-- | src/server/game/Spells/SpellInfo.h | 2 |
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); } |
