diff options
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
-rw-r--r-- | src/server/game/Spells/Spell.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index bbf7a39afbb..000bc453f6c 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -904,13 +904,13 @@ uint64 Spell::CalculateDelayMomentForDst() const { float speed = m_targets.GetSpeedXY(); if (speed > 0.0f) - return (uint64)floor(m_targets.GetDist2d() / speed * 1000.0f); + return uint64(std::floor(m_targets.GetDist2d() / speed * 1000.0f)); } else if (m_spellInfo->Speed > 0.0f) { // We should not subtract caster size from dist calculation (fixes execution time desync with animation on client, eg. Malleable Goo cast by PP) float dist = m_caster->GetExactDist(*m_targets.GetDstPos()); - return (uint64)std::floor(dist / m_spellInfo->Speed * 1000.0f); + return uint64(std::floor(dist / m_spellInfo->Speed * 1000.0f)); } } @@ -2185,6 +2185,7 @@ void Spell::AddUnitTarget(Unit* target, uint32 effectMask, bool checkIfValid /*= if (dist < 5.0f) dist = 5.0f; + targetInfo.TimeDelay = uint64(std::floor(dist / m_spellInfo->Speed * 1000.0f)); // Calculate minimum incoming time @@ -2269,7 +2270,9 @@ void Spell::AddGOTarget(GameObject* go, uint32 effectMask) float dist = m_caster->GetDistance(go->GetPositionX(), go->GetPositionY(), go->GetPositionZ()); if (dist < 5.0f) dist = 5.0f; + target.TimeDelay = uint64(std::floor(dist / m_spellInfo->Speed * 1000.0f)); + if (!m_delayMoment || m_delayMoment > target.TimeDelay) m_delayMoment = target.TimeDelay; } |