aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjoschiwald <joschiwald.trinity@gmail.com>2017-01-08 00:59:06 +0100
committerjoschiwald <joschiwald.trinity@gmail.com>2017-01-08 00:59:06 +0100
commitd57fcc1c1b65bc2261ef9ab1b1331930e34a85c8 (patch)
tree21da247f389cb6011a3e10275f6fe63a9f28331c /src
parentf6dc66e55fd9b3bf47686caa632b58c170c9f665 (diff)
Core/Spells: Fix wrong totem placement
- Addition to 37b2f590b6d63f230c755f932c2dd356c265486f
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Spells/Spell.cpp15
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);