aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Entities/Vehicle/Vehicle.cpp1
-rw-r--r--src/server/game/Miscellaneous/SharedDefines.h4
-rw-r--r--src/server/game/Spells/Auras/SpellEffects.cpp25
-rw-r--r--src/server/game/Spells/Spell.h1
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);