diff options
author | QAston <none@none> | 2010-08-09 02:31:42 +0200 |
---|---|---|
committer | QAston <none@none> | 2010-08-09 02:31:42 +0200 |
commit | fa8a82665602abbd172d0143877eeaf293ccf0cd (patch) | |
tree | 6d991bc10b74ed0e96e17ab5e7933d9eed269a7b | |
parent | abd261b1a1d95f0b11385d26fc8867b5b8e38ffc (diff) |
*(More) correct implementation of SPELL_EFFECT_PULL_TOWARDS_DEST(145)
--HG--
branch : trunk
-rw-r--r-- | src/server/game/Miscellaneous/SharedDefines.h | 4 | ||||
-rw-r--r-- | src/server/game/Spells/Spell.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Spells/Spell.h | 4 | ||||
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 21 |
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) |