From d57fcc1c1b65bc2261ef9ab1b1331930e34a85c8 Mon Sep 17 00:00:00 2001 From: joschiwald Date: Sun, 8 Jan 2017 00:59:06 +0100 Subject: Core/Spells: Fix wrong totem placement - Addition to 37b2f590b6d63f230c755f932c2dd356c265486f --- src/server/game/Spells/Spell.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 1a0e6881175..72d99154303 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -1288,27 +1288,32 @@ void Spell::SelectImplicitCasterDestTargets(SpellEffIndex effIndex, SpellImplici float angle = targetType.CalcDirectionAngle(); float objSize = m_caster->GetObjectSize(); - if (dist < objSize) - dist = objSize; - switch (targetType.GetTarget()) { case TARGET_DEST_CASTER_SUMMON: dist = PET_FOLLOW_DIST; break; case TARGET_DEST_CASTER_RANDOM: - dist = objSize + (dist - objSize) * float(rand_norm()); + if (dist > objSize) + dist = objSize + (dist - objSize) * float(rand_norm()); break; case TARGET_DEST_CASTER_FRONT_LEFT: case TARGET_DEST_CASTER_BACK_LEFT: case TARGET_DEST_CASTER_FRONT_RIGHT: case TARGET_DEST_CASTER_BACK_RIGHT: - dist = dist + objSize; + { + static float const DefaultTotemDistance = 3.0f; + if (!effect->HasRadius() && !effect->HasMaxRadius()) + dist = DefaultTotemDistance; break; + } default: break; } + if (dist < objSize) + dist = objSize; + Position pos = dest._position; m_caster->MovePositionToFirstCollision(pos, dist, angle); -- cgit v1.2.3