aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2020-06-22 11:04:57 +0200
committerShauren <shauren.trinity@gmail.com>2020-06-22 11:04:57 +0200
commitc3dcbe04dcea04ce3f453f99d44ebebb542bcda7 (patch)
tree6e2e1a35baeb7d88b0b22f493e2718e063c993d1
parent01d098830a64622262226f7915f872e1cfb301f6 (diff)
Core/Spells: Assign spell effect handles for new apply aura effects
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp9
-rw-r--r--src/server/game/Spells/Auras/SpellAuras.cpp9
-rw-r--r--src/server/game/Spells/SpellEffects.cpp6
-rw-r--r--src/server/game/Spells/SpellInfo.cpp5
-rw-r--r--src/server/game/Spells/SpellMgr.cpp3
5 files changed, 18 insertions, 14 deletions
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index 2db4d4f8b3c..18b4539e6e6 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -5702,14 +5702,7 @@ void AuraEffect::HandlePeriodicDamageAurasTick(Unit* target, Unit* caster) const
bool AuraEffect::IsAreaAuraEffect() const
{
- if (_effectInfo->Effect == SPELL_EFFECT_APPLY_AREA_AURA_PARTY ||
- _effectInfo->Effect == SPELL_EFFECT_APPLY_AREA_AURA_RAID ||
- _effectInfo->Effect == SPELL_EFFECT_APPLY_AREA_AURA_FRIEND ||
- _effectInfo->Effect == SPELL_EFFECT_APPLY_AREA_AURA_ENEMY ||
- _effectInfo->Effect == SPELL_EFFECT_APPLY_AREA_AURA_PET ||
- _effectInfo->Effect == SPELL_EFFECT_APPLY_AREA_AURA_OWNER)
- return true;
- return false;
+ return _effectInfo->IsAreaAuraEffect();
}
void AuraEffect::HandlePeriodicHealthLeechAuraTick(Unit* target, Unit* caster) const
diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp
index bc43ee19e9b..5e4791b805d 100644
--- a/src/server/game/Spells/Auras/SpellAuras.cpp
+++ b/src/server/game/Spells/Auras/SpellAuras.cpp
@@ -2285,7 +2285,7 @@ void UnitAura::FillTargetMap(std::unordered_map<Unit*, uint32>& targets, Unit* c
std::deque<Unit*> units;
// non-area aura
- if (effect->Effect == SPELL_EFFECT_APPLY_AURA)
+ if (effect->Effect == SPELL_EFFECT_APPLY_AURA || effect->Effect == SPELL_EFFECT_202)
{
units.push_back(GetUnitOwner());
}
@@ -2299,6 +2299,7 @@ void UnitAura::FillTargetMap(std::unordered_map<Unit*, uint32>& targets, Unit* c
{
case SPELL_EFFECT_APPLY_AREA_AURA_PARTY:
case SPELL_EFFECT_APPLY_AREA_AURA_RAID:
+ case SPELL_EFFECT_APPLY_AREA_AURA_PARTY_NONRANDOM:
{
units.push_back(GetUnitOwner());
Trinity::AnyGroupedUnitInObjectRangeCheck u_check(GetUnitOwner(), GetUnitOwner(), radius, effect->Effect == SPELL_EFFECT_APPLY_AREA_AURA_RAID, m_spellInfo->HasAttribute(SPELL_ATTR3_ONLY_TARGET_PLAYERS), false, true);
@@ -2331,6 +2332,12 @@ void UnitAura::FillTargetMap(std::unordered_map<Unit*, uint32>& targets, Unit* c
units.push_back(owner);
break;
}
+ case SPELL_EFFECT_APPLY_AURA_ON_PET:
+ {
+ if (Unit* pet = ObjectAccessor::GetUnit(*GetUnitOwner(), GetUnitOwner()->GetPetGUID()))
+ units.push_back(pet);
+ break;
+ }
}
}
}
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index b02c080fe9b..e0fa7462a7c 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -252,7 +252,7 @@ NonDefaultConstructible<pEffect> SpellEffects[TOTAL_SPELL_EFFECTS] =
&Spell::EffectNULL, //171 SPELL_EFFECT_171
&Spell::EffectResurrectWithAura, //172 SPELL_EFFECT_RESURRECT_WITH_AURA
&Spell::EffectUnlockGuildVaultTab, //173 SPELL_EFFECT_UNLOCK_GUILD_VAULT_TAB
- &Spell::EffectNULL, //174 SPELL_EFFECT_APPLY_AURA_ON_PET
+ &Spell::EffectApplyAura, //174 SPELL_EFFECT_APPLY_AURA_ON_PET
&Spell::EffectUnused, //175 SPELL_EFFECT_175 unused
&Spell::EffectSanctuary, //176 SPELL_EFFECT_SANCTUARY_2
&Spell::EffectNULL, //177 SPELL_EFFECT_177
@@ -280,7 +280,7 @@ NonDefaultConstructible<pEffect> SpellEffects[TOTAL_SPELL_EFFECTS] =
&Spell::EffectNULL, //199 SPELL_EFFECT_199
&Spell::EffectHealBattlePetPct, //200 SPELL_EFFECT_HEAL_BATTLEPET_PCT
&Spell::EffectEnableBattlePets, //201 SPELL_EFFECT_ENABLE_BATTLE_PETS
- &Spell::EffectNULL, //202 SPELL_EFFECT_202
+ &Spell::EffectApplyAura, //202 SPELL_EFFECT_202
&Spell::EffectNULL, //203 SPELL_EFFECT_203
&Spell::EffectNULL, //204 SPELL_EFFECT_CHANGE_BATTLEPET_QUALITY
&Spell::EffectLaunchQuestChoice, //205 SPELL_EFFECT_LAUNCH_QUEST_CHOICE
@@ -349,7 +349,7 @@ NonDefaultConstructible<pEffect> SpellEffects[TOTAL_SPELL_EFFECTS] =
&Spell::EffectNULL, //268 SPELL_EFFECT_APPLY_MOUNT_EQUIPMENT
&Spell::EffectNULL, //269 SPELL_EFFECT_UPGRADE_ITEM
&Spell::EffectNULL, //270 SPELL_EFFECT_270
- &Spell::EffectNULL, //271 SPELL_EFFECT_APPLY_AREA_AURA_PARTY_NONRANDOM
+ &Spell::EffectApplyAreaAura, //271 SPELL_EFFECT_APPLY_AREA_AURA_PARTY_NONRANDOM
};
void Spell::EffectNULL(SpellEffIndex /*effIndex*/)
diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp
index f399fe610a0..cadfeef49c3 100644
--- a/src/server/game/Spells/SpellInfo.cpp
+++ b/src/server/game/Spells/SpellInfo.cpp
@@ -438,7 +438,8 @@ bool SpellEffectInfo::IsAreaAuraEffect() const
Effect == SPELL_EFFECT_APPLY_AREA_AURA_FRIEND ||
Effect == SPELL_EFFECT_APPLY_AREA_AURA_ENEMY ||
Effect == SPELL_EFFECT_APPLY_AREA_AURA_PET ||
- Effect == SPELL_EFFECT_APPLY_AREA_AURA_OWNER)
+ Effect == SPELL_EFFECT_APPLY_AREA_AURA_OWNER ||
+ Effect == SPELL_EFFECT_APPLY_AREA_AURA_PARTY_NONRANDOM)
return true;
return false;
}
@@ -457,7 +458,7 @@ bool SpellEffectInfo::IsFarDestTargetEffect() const
bool SpellEffectInfo::IsUnitOwnedAuraEffect() const
{
- return IsAreaAuraEffect() || Effect == SPELL_EFFECT_APPLY_AURA;
+ return IsAreaAuraEffect() || Effect == SPELL_EFFECT_APPLY_AURA || Effect == SPELL_EFFECT_APPLY_AURA_ON_PET || Effect == SPELL_EFFECT_202;
}
int32 SpellEffectInfo::CalcValue(Unit const* caster /*= nullptr*/, int32 const* bp /*= nullptr*/, Unit const* target /*= nullptr*/, float* variance /*= nullptr*/, uint32 castItemId /*= 0*/, int32 itemLevel /*= -1*/) const
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index c0997426960..d0f0096d4f8 100644
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -2766,6 +2766,9 @@ void SpellMgr::LoadSpellInfoCustomAttributes()
case SPELL_EFFECT_APPLY_AREA_AURA_ENEMY:
case SPELL_EFFECT_APPLY_AREA_AURA_PET:
case SPELL_EFFECT_APPLY_AREA_AURA_OWNER:
+ case SPELL_EFFECT_APPLY_AURA_ON_PET:
+ case SPELL_EFFECT_202:
+ case SPELL_EFFECT_APPLY_AREA_AURA_PARTY_NONRANDOM:
if (effect->ApplyAuraName == SPELL_AURA_PERIODIC_DAMAGE ||
effect->ApplyAuraName == SPELL_AURA_PERIODIC_DAMAGE_PERCENT ||
effect->ApplyAuraName == SPELL_AURA_DUMMY ||