*(More) correct implementation of SPELL_EFFECT_PULL_TOWARDS_DEST(145)
--HG-- branch : trunk
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -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))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user