aboutsummaryrefslogtreecommitdiff
path: root/src/game/SpellAuras.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/SpellAuras.cpp')
-rw-r--r--src/game/SpellAuras.cpp76
1 files changed, 43 insertions, 33 deletions
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index 71b0acfbbdc..33a4a1e89ba 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -3347,30 +3347,7 @@ void AuraEffect::HandleAuraFeatherFall(bool apply, bool Real, bool /*changeAmoun
WorldPacket data;
if (apply)
- {
- Unit* caster = GetCaster();
- if (!caster)
- return;
-
- if (caster->GetGUID() == m_target->GetGUID())
- {
- m_target->RemoveAurasByType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED);
- m_target->RemoveAurasByType(SPELL_AURA_FLY);
- }
-
- if (GetId() == 61243) // No fly zone - Parachute
- {
- float x, y, z;
- caster->GetPosition(x, y, z);
- float ground_Z = caster->GetMap()->GetVmapHeight(x, y, z, true);
- if (fabs(ground_Z - z) < 0.1f)
- {
- m_target->RemoveAura(GetId());
- return;
- }
- }
data.Initialize(SMSG_MOVE_FEATHER_FALL, 8+4);
- }
else
data.Initialize(SMSG_MOVE_NORMAL_FALL, 8+4);
data.append(m_target->GetPackGUID());
@@ -4633,6 +4610,16 @@ void AuraEffect::HandlePeriodicTriggerSpell(bool apply, bool Real, bool /*change
void AuraEffect::HandlePeriodicTriggerSpellWithValue(bool apply, bool Real, bool /*changeAmount*/)
{
m_isPeriodic = apply;
+
+ SpellEntry const* spell = GetSpellProto();
+ switch (spell->Id)
+ {
+ case 58730: // No fly zone - Wintergrasp (3.1.3 only 3.2.2 Does not call this aura)
+ if (apply)
+ if (Player *plr = (Player*)m_target)
+ plr->GetSession()->SendNotification(LANG_ZONE_NOFLYZONE);
+ break;
+ }
}
void AuraEffect::HandlePeriodicEnergize(bool apply, bool Real, bool changeAmount)
@@ -4654,22 +4641,36 @@ void AuraEffect::HandleAuraPeriodicDummy(bool apply, bool Real, bool changeAmoun
Unit* caster = GetCaster();
SpellEntry const*spell = GetSpellProto();
- switch( spell->SpellFamilyName)
+ switch(spell->SpellFamilyName)
{
case SPELLFAMILY_GENERIC:
{
- if(spell->Id == 62399) // Overload Circuit
+ switch(spell->Id)
{
- if(m_target->GetMap()->IsDungeon())
- if(m_target->GetAuras().count(62399) >= (m_target->GetMap()->IsHeroic() ? 4 : 2))
- {
- m_target->CastSpell(m_target, 62475, true); // System Shutdown
- if(Unit *veh = m_target->GetVehicleBase())
- veh->CastSpell(m_target, 62475, true);
- }
+ case 62399: // Overload Circuit
+ if(m_target->GetMap()->IsDungeon() && m_target->GetAuras().count(62399) >= (m_target->GetMap()->IsHeroic() ? 4 : 2))
+ {
+ m_target->CastSpell(m_target, 62475, true); // System Shutdown
+ if(Unit *veh = m_target->GetVehicleBase())
+ veh->CastSpell(m_target, 62475, true);
+ }
+ break;
+ case 58600: // No fly zone - Dalaran
+ if (Player *plr = (Player*)m_target)
+ if (apply)
+ plr->GetSession()->SendNotification(LANG_ZONE_NOFLYZONE);
+ else
+ {
+ plr->RemoveAurasByType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED);
+ plr->RemoveAurasByType(SPELL_AURA_FLY);
+ }
+ break;
+ default:
+ break;
}
break;
}
+
case SPELLFAMILY_WARLOCK:
{
switch (spell->Id)
@@ -4682,11 +4683,12 @@ void AuraEffect::HandleAuraPeriodicDummy(bool apply, bool Real, bool changeAmoun
// to prevent remove GO added by new spell
// old one is already removed
if (GetParentAura()->GetRemoveMode()!=AURA_REMOVE_BY_STACK)
- m_target->RemoveGameObject(spell->Id,true);
+ m_target->RemoveGameObject(spell->Id, true);
m_target->RemoveAura(62388);
}
break;
}
+ break;
}
case SPELLFAMILY_DEATHKNIGHT:
{
@@ -6538,6 +6540,14 @@ void AuraEffect::PeriodicDummyTick()
// 7053 Forsaken Skill: Shadow
return;
}
+ case 45472: // Parachute
+ if (Player *plr = (Player*)m_target)
+ if (plr->IsFalling())
+ {
+ plr->RemoveAurasDueToSpell(45472);
+ plr->CastSpell(plr, 44795, true);
+ }
+ break;
case 58549: // Tenacity
case 59911: // Tenacity (vehicle)
GetParentAura()->RefreshAura();