diff options
| author | joschiwald <joschiwald.trinity@gmail.com> | 2017-01-08 00:59:06 +0100 |
|---|---|---|
| committer | joschiwald <joschiwald.trinity@gmail.com> | 2017-01-08 00:59:06 +0100 |
| commit | d57fcc1c1b65bc2261ef9ab1b1331930e34a85c8 (patch) | |
| tree | 21da247f389cb6011a3e10275f6fe63a9f28331c /src | |
| parent | f6dc66e55fd9b3bf47686caa632b58c170c9f665 (diff) | |
Core/Spells: Fix wrong totem placement
- Addition to 37b2f590b6d63f230c755f932c2dd356c265486f
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Spells/Spell.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
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); |
