diff options
-rw-r--r-- | src/server/game/Entities/Vehicle/Vehicle.cpp | 1 | ||||
-rw-r--r-- | src/server/game/Miscellaneous/SharedDefines.h | 4 | ||||
-rw-r--r-- | src/server/game/Spells/Auras/SpellEffects.cpp | 25 | ||||
-rw-r--r-- | src/server/game/Spells/Spell.h | 1 |
4 files changed, 24 insertions, 7 deletions
diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp index 850296aaafe..ea863245d42 100644 --- a/src/server/game/Entities/Vehicle/Vehicle.cpp +++ b/src/server/game/Entities/Vehicle/Vehicle.cpp @@ -47,6 +47,7 @@ Vehicle::Vehicle(Unit *unit, VehicleEntry const *vehInfo) : me(unit), m_vehicleI case 160: me->SetControlled(true, UNIT_STAT_ROOT); me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK, true); + me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK_DEST, true); case 158: me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_HEAL, true); me->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_FEAR, true); diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index 0d5025a5d5f..c31e144fbda 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -745,7 +745,7 @@ enum SpellEffects SPELL_EFFECT_141 = 141, SPELL_EFFECT_TRIGGER_SPELL_WITH_VALUE = 142, SPELL_EFFECT_APPLY_AREA_AURA_OWNER = 143, - SPELL_EFFECT_KNOCK_BACK_2 = 144, + SPELL_EFFECT_KNOCK_BACK_DEST = 144, SPELL_EFFECT_145 = 145, SPELL_EFFECT_ACTIVATE_RUNE = 146, SPELL_EFFECT_QUEST_FAIL = 147, @@ -765,7 +765,7 @@ enum SpellEffects SPELL_EFFECT_TALENT_SPEC_COUNT = 161, SPELL_EFFECT_TALENT_SPEC_SELECT = 162, SPELL_EFFECT_163 = 163, - SPELL_EFFECT_164 = 164, + SPELL_EFFECT_REMOVE_AURA = 164, TOTAL_SPELL_EFFECTS = 165 }; diff --git a/src/server/game/Spells/Auras/SpellEffects.cpp b/src/server/game/Spells/Auras/SpellEffects.cpp index 0b2191d5e48..6a9f8ed7e10 100644 --- a/src/server/game/Spells/Auras/SpellEffects.cpp +++ b/src/server/game/Spells/Auras/SpellEffects.cpp @@ -209,7 +209,7 @@ pEffect SpellEffects[TOTAL_SPELL_EFFECTS]= &Spell::EffectForceCastWithValue, //141 SPELL_EFFECT_FORCE_CAST_WITH_VALUE &Spell::EffectTriggerSpellWithValue, //142 SPELL_EFFECT_TRIGGER_SPELL_WITH_VALUE &Spell::EffectApplyAreaAura, //143 SPELL_EFFECT_APPLY_AREA_AURA_OWNER - &Spell::EffectKnockBack, //144 SPELL_EFFECT_KNOCK_BACK_2 Spectral Blast + &Spell::EffectKnockBack, //144 SPELL_EFFECT_KNOCK_BACK_DEST &Spell::EffectPlayerPull, //145 SPELL_EFFECT_145 Black Hole Effect &Spell::EffectActivateRune, //146 SPELL_EFFECT_ACTIVATE_RUNE &Spell::EffectQuestFail, //147 SPELL_EFFECT_QUEST_FAIL quest fail @@ -229,7 +229,7 @@ pEffect SpellEffects[TOTAL_SPELL_EFFECTS]= &Spell::EffectSpecCount, //161 SPELL_EFFECT_TALENT_SPEC_COUNT second talent spec (learn/revert) &Spell::EffectActivateSpec, //162 SPELL_EFFECT_TALENT_SPEC_SELECT activate primary/secondary spec &Spell::EffectNULL, //163 - &Spell::EffectNULL, //164 cancel's some aura... + &Spell::EffectRemoveAura, //164 SPELL_EFFECT_REMOVE_AURA }; void Spell::EffectNULL(uint32 /*i*/) @@ -7211,10 +7211,17 @@ void Spell::EffectKnockBack(uint32 i) return; float x, y; - if (m_targets.HasDst() && !m_targets.HasTraj()) - m_targets.m_dstPos.GetPosition(x, y); - else + if (m_spellInfo->Effect[i] == SPELL_EFFECT_KNOCK_BACK_DEST) + { + if (m_targets.HasDst()) + m_targets.m_dstPos.GetPosition(x, y); + else + return; + } + else //if (m_spellInfo->Effect[i] == SPELL_EFFECT_KNOCK_BACK) + { m_caster->GetPosition(x, y); + } unitTarget->KnockbackFrom(x, y, speedxy, speedz); } @@ -8035,6 +8042,14 @@ void Spell::EffectPlayerNotification(uint32 /*eff_idx*/) } } +void Spell::EffectRemoveAura(uint32 i) +{ + if (!unitTarget) + return; + // there may be need of specifying casterguid of removed auras + unitTarget->RemoveAurasDueToSpell(m_spellInfo->EffectTriggerSpell[i]); +} + void Spell::EffectCastButtons(uint32 i) { if (!unitTarget || m_caster->GetTypeId() != TYPEID_PLAYER) diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index ffbcfdb056d..47ad2035094 100644 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -388,6 +388,7 @@ class Spell void EffectSpecCount(uint32 i); void EffectActivateSpec(uint32 i); void EffectPlayerNotification(uint32 i); + void EffectRemoveAura(uint32 i); void EffectCastButtons(uint32 i); void EffectRechargeManaGem(uint32 i); |