*(More) correct implementation of SPELL_EFFECT_PULL_TOWARDS_DEST(145)

--HG--
branch : trunk
This commit is contained in:
QAston
2010-08-09 02:31:42 +02:00
parent abd261b1a1
commit fa8a826656
4 changed files with 23 additions and 10 deletions
@@ -738,7 +738,7 @@ enum SpellEffects
SPELL_EFFECT_NORMALIZED_WEAPON_DMG = 121, SPELL_EFFECT_NORMALIZED_WEAPON_DMG = 121,
SPELL_EFFECT_122 = 122, SPELL_EFFECT_122 = 122,
SPELL_EFFECT_SEND_TAXI = 123, SPELL_EFFECT_SEND_TAXI = 123,
SPELL_EFFECT_PLAYER_PULL = 124, SPELL_EFFECT_PULL_TOWARDS = 124,
SPELL_EFFECT_MODIFY_THREAT_PERCENT = 125, SPELL_EFFECT_MODIFY_THREAT_PERCENT = 125,
SPELL_EFFECT_STEAL_BENEFICIAL_BUFF = 126, SPELL_EFFECT_STEAL_BENEFICIAL_BUFF = 126,
SPELL_EFFECT_PROSPECTING = 127, SPELL_EFFECT_PROSPECTING = 127,
@@ -759,7 +759,7 @@ enum SpellEffects
SPELL_EFFECT_TRIGGER_SPELL_WITH_VALUE = 142, SPELL_EFFECT_TRIGGER_SPELL_WITH_VALUE = 142,
SPELL_EFFECT_APPLY_AREA_AURA_OWNER = 143, SPELL_EFFECT_APPLY_AREA_AURA_OWNER = 143,
SPELL_EFFECT_KNOCK_BACK_DEST = 144, SPELL_EFFECT_KNOCK_BACK_DEST = 144,
SPELL_EFFECT_145 = 145, SPELL_EFFECT_PULL_TOWARDS_DEST = 145,
SPELL_EFFECT_ACTIVATE_RUNE = 146, SPELL_EFFECT_ACTIVATE_RUNE = 146,
SPELL_EFFECT_QUEST_FAIL = 147, SPELL_EFFECT_QUEST_FAIL = 147,
SPELL_EFFECT_148 = 148, SPELL_EFFECT_148 = 148,
+2 -2
View File
@@ -231,7 +231,7 @@ void SpellCastTargets::Update(Unit* caster)
m_itemTargetEntry = m_itemTarget->GetEntry(); m_itemTargetEntry = m_itemTarget->GetEntry();
} }
// update positions by transport move // update positions by transport move
if (m_srcTransGUID) if (HasSrc() && m_srcTransGUID)
{ {
if (WorldObject * transport = ObjectAccessor::GetWorldObject(*caster, m_srcTransGUID)) if (WorldObject * transport = ObjectAccessor::GetWorldObject(*caster, m_srcTransGUID))
{ {
@@ -239,7 +239,7 @@ void SpellCastTargets::Update(Unit* caster)
m_srcPos.RelocateOffset(m_srcTransOffset); m_srcPos.RelocateOffset(m_srcTransOffset);
} }
} }
if (m_dstTransGUID) if (HasDst() && m_dstTransGUID)
{ {
if (WorldObject * transport = ObjectAccessor::GetWorldObject(*caster, m_dstTransGUID)) if (WorldObject * transport = ObjectAccessor::GetWorldObject(*caster, m_dstTransGUID))
{ {
+2 -2
View File
@@ -152,7 +152,7 @@ class SpellCastTargets
m_dstTransGUID = target.m_dstTransGUID; m_dstTransGUID = target.m_dstTransGUID;
m_dstTransOffset = target.m_dstTransOffset; m_dstTransOffset = target.m_dstTransOffset;
m_dstPos.Relocate(target.m_dstPos); m_dstPos = target.m_dstPos;
m_elevation = target.m_elevation; m_elevation = target.m_elevation;
m_speed = target.m_speed; m_speed = target.m_speed;
@@ -373,7 +373,7 @@ class Spell
void EffectSendTaxi(uint32 i); void EffectSendTaxi(uint32 i);
void EffectSummonCritter(uint32 i); void EffectSummonCritter(uint32 i);
void EffectKnockBack(uint32 i); void EffectKnockBack(uint32 i);
void EffectPlayerPull(uint32 i); void EffectPullTowards(uint32 i);
void EffectDispelMechanic(uint32 i); void EffectDispelMechanic(uint32 i);
void EffectSummonDeadPet(uint32 i); void EffectSummonDeadPet(uint32 i);
void EffectDestroyAllTotems(uint32 i); void EffectDestroyAllTotems(uint32 i);
+17 -4
View File
@@ -189,7 +189,7 @@ pEffect SpellEffects[TOTAL_SPELL_EFFECTS]=
&Spell::EffectWeaponDmg, //121 SPELL_EFFECT_NORMALIZED_WEAPON_DMG &Spell::EffectWeaponDmg, //121 SPELL_EFFECT_NORMALIZED_WEAPON_DMG
&Spell::EffectUnused, //122 SPELL_EFFECT_122 unused &Spell::EffectUnused, //122 SPELL_EFFECT_122 unused
&Spell::EffectSendTaxi, //123 SPELL_EFFECT_SEND_TAXI taxi/flight related (misc value is taxi path id) &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::EffectModifyThreatPercent, //125 SPELL_EFFECT_MODIFY_THREAT_PERCENT
&Spell::EffectStealBeneficialBuff, //126 SPELL_EFFECT_STEAL_BENEFICIAL_BUFF spell steal effect? &Spell::EffectStealBeneficialBuff, //126 SPELL_EFFECT_STEAL_BENEFICIAL_BUFF spell steal effect?
&Spell::EffectProspecting, //127 SPELL_EFFECT_PROSPECTING Prospecting spell &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::EffectTriggerSpellWithValue, //142 SPELL_EFFECT_TRIGGER_SPELL_WITH_VALUE
&Spell::EffectApplyAreaAura, //143 SPELL_EFFECT_APPLY_AREA_AURA_OWNER &Spell::EffectApplyAreaAura, //143 SPELL_EFFECT_APPLY_AREA_AURA_OWNER
&Spell::EffectKnockBack, //144 SPELL_EFFECT_KNOCK_BACK_DEST &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::EffectActivateRune, //146 SPELL_EFFECT_ACTIVATE_RUNE
&Spell::EffectQuestFail, //147 SPELL_EFFECT_QUEST_FAIL quest fail &Spell::EffectQuestFail, //147 SPELL_EFFECT_QUEST_FAIL quest fail
&Spell::EffectUnused, //148 SPELL_EFFECT_148 1 spell - 43509 &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); unitTarget->ToPlayer()->ActivateTaxiPathTo(m_spellInfo->EffectMiscValue[i],m_spellInfo->Id);
} }
void Spell::EffectPlayerPull(uint32 i) void Spell::EffectPullTowards(uint32 i)
{ {
if (!unitTarget) if (!unitTarget)
return; return;
float speedZ = m_spellInfo->EffectBasePoints[i]/10; float speedZ = m_spellInfo->EffectBasePoints[i]/10;
float speedXY = m_spellInfo->EffectMiscValue[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) void Spell::EffectDispelMechanic(uint32 i)