aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQAston <none@none>2010-08-09 02:31:42 +0200
committerQAston <none@none>2010-08-09 02:31:42 +0200
commitfa8a82665602abbd172d0143877eeaf293ccf0cd (patch)
tree6d991bc10b74ed0e96e17ab5e7933d9eed269a7b
parentabd261b1a1d95f0b11385d26fc8867b5b8e38ffc (diff)
*(More) correct implementation of SPELL_EFFECT_PULL_TOWARDS_DEST(145)
--HG-- branch : trunk
-rw-r--r--src/server/game/Miscellaneous/SharedDefines.h4
-rw-r--r--src/server/game/Spells/Spell.cpp4
-rw-r--r--src/server/game/Spells/Spell.h4
-rw-r--r--src/server/game/Spells/SpellEffects.cpp21
4 files changed, 23 insertions, 10 deletions
diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h
index 94f71f55016..82389b2d892 100644
--- a/src/server/game/Miscellaneous/SharedDefines.h
+++ b/src/server/game/Miscellaneous/SharedDefines.h
@@ -738,7 +738,7 @@ enum SpellEffects
SPELL_EFFECT_NORMALIZED_WEAPON_DMG = 121,
SPELL_EFFECT_122 = 122,
SPELL_EFFECT_SEND_TAXI = 123,
- SPELL_EFFECT_PLAYER_PULL = 124,
+ SPELL_EFFECT_PULL_TOWARDS = 124,
SPELL_EFFECT_MODIFY_THREAT_PERCENT = 125,
SPELL_EFFECT_STEAL_BENEFICIAL_BUFF = 126,
SPELL_EFFECT_PROSPECTING = 127,
@@ -759,7 +759,7 @@ enum SpellEffects
SPELL_EFFECT_TRIGGER_SPELL_WITH_VALUE = 142,
SPELL_EFFECT_APPLY_AREA_AURA_OWNER = 143,
SPELL_EFFECT_KNOCK_BACK_DEST = 144,
- SPELL_EFFECT_145 = 145,
+ SPELL_EFFECT_PULL_TOWARDS_DEST = 145,
SPELL_EFFECT_ACTIVATE_RUNE = 146,
SPELL_EFFECT_QUEST_FAIL = 147,
SPELL_EFFECT_148 = 148,
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 06abed00445..3db4c77f00f 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -231,7 +231,7 @@ void SpellCastTargets::Update(Unit* caster)
m_itemTargetEntry = m_itemTarget->GetEntry();
}
// update positions by transport move
- if (m_srcTransGUID)
+ if (HasSrc() && m_srcTransGUID)
{
if (WorldObject * transport = ObjectAccessor::GetWorldObject(*caster, m_srcTransGUID))
{
@@ -239,7 +239,7 @@ void SpellCastTargets::Update(Unit* caster)
m_srcPos.RelocateOffset(m_srcTransOffset);
}
}
- if (m_dstTransGUID)
+ if (HasDst() && m_dstTransGUID)
{
if (WorldObject * transport = ObjectAccessor::GetWorldObject(*caster, m_dstTransGUID))
{
diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h
index 5c77782f654..948a6d7987f 100644
--- a/src/server/game/Spells/Spell.h
+++ b/src/server/game/Spells/Spell.h
@@ -152,7 +152,7 @@ class SpellCastTargets
m_dstTransGUID = target.m_dstTransGUID;
m_dstTransOffset = target.m_dstTransOffset;
- m_dstPos.Relocate(target.m_dstPos);
+ m_dstPos = target.m_dstPos;
m_elevation = target.m_elevation;
m_speed = target.m_speed;
@@ -373,7 +373,7 @@ class Spell
void EffectSendTaxi(uint32 i);
void EffectSummonCritter(uint32 i);
void EffectKnockBack(uint32 i);
- void EffectPlayerPull(uint32 i);
+ void EffectPullTowards(uint32 i);
void EffectDispelMechanic(uint32 i);
void EffectSummonDeadPet(uint32 i);
void EffectDestroyAllTotems(uint32 i);
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 645f050a21e..a72e9e83401 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -189,7 +189,7 @@ pEffect SpellEffects[TOTAL_SPELL_EFFECTS]=
&Spell::EffectWeaponDmg, //121 SPELL_EFFECT_NORMALIZED_WEAPON_DMG
&Spell::EffectUnused, //122 SPELL_EFFECT_122 unused
&Spell::EffectSendTaxi, //123 SPELL_EFFECT_SEND_TAXI taxi/flight related (misc value is taxi path id)
- &Spell::EffectPlayerPull, //124 SPELL_EFFECT_PLAYER_PULL opposite of knockback effect (pulls player twoard caster)
+ &Spell::EffectPullTowards, //124 SPELL_EFFECT_PULL_TOWARDS
&Spell::EffectModifyThreatPercent, //125 SPELL_EFFECT_MODIFY_THREAT_PERCENT
&Spell::EffectStealBeneficialBuff, //126 SPELL_EFFECT_STEAL_BENEFICIAL_BUFF spell steal effect?
&Spell::EffectProspecting, //127 SPELL_EFFECT_PROSPECTING Prospecting spell
@@ -210,7 +210,7 @@ pEffect SpellEffects[TOTAL_SPELL_EFFECTS]=
&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_DEST
- &Spell::EffectPlayerPull, //145 SPELL_EFFECT_145 Black Hole Effect
+ &Spell::EffectPullTowards, //145 SPELL_EFFECT_PULL_TOWARDS_DEST Black Hole Effect
&Spell::EffectActivateRune, //146 SPELL_EFFECT_ACTIVATE_RUNE
&Spell::EffectQuestFail, //147 SPELL_EFFECT_QUEST_FAIL quest fail
&Spell::EffectUnused, //148 SPELL_EFFECT_148 1 spell - 43509
@@ -6787,14 +6787,27 @@ void Spell::EffectSendTaxi(uint32 i)
unitTarget->ToPlayer()->ActivateTaxiPathTo(m_spellInfo->EffectMiscValue[i],m_spellInfo->Id);
}
-void Spell::EffectPlayerPull(uint32 i)
+void Spell::EffectPullTowards(uint32 i)
{
if (!unitTarget)
return;
float speedZ = m_spellInfo->EffectBasePoints[i]/10;
float speedXY = m_spellInfo->EffectMiscValue[i]/10;
- unitTarget->GetMotionMaster()->MoveJump(m_caster->GetPositionX(), m_caster->GetPositionY(), m_caster->GetPositionZ(), speedXY, speedZ);
+ Position pos;
+ if (m_spellInfo->Effect[i] == SPELL_EFFECT_PULL_TOWARDS_DEST)
+ {
+ if (m_targets.HasDst())
+ pos.Relocate(m_targets.m_dstPos);
+ else
+ return;
+ }
+ else //if (m_spellInfo->Effect[i] == SPELL_EFFECT_PULL_TOWARDS)
+ {
+ pos.Relocate(m_caster);
+ }
+
+ unitTarget->GetMotionMaster()->MoveJump(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), speedXY, speedZ);
}
void Spell::EffectDispelMechanic(uint32 i)