diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 822965adc..39f636cc5 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -1834,6 +1834,27 @@ void Spell::SetTargetMap(SpellEffectIndex effIndex, uint32 targetMode, UnitList& case TARGET_TOTEM_WATER: case TARGET_TOTEM_AIR: case TARGET_TOTEM_FIRE: + { + float angle = m_caster->GetOrientation(); + switch (targetMode) + { + case TARGET_TOTEM_EARTH: break; + case TARGET_TOTEM_WATER: angle += M_PI_F; break; + case TARGET_TOTEM_AIR: angle += M_PI_F * 0.5f; break; + case TARGET_TOTEM_FIRE: angle += M_PI_F * 1.5f; break; + } + + float x, y; + float z = m_caster->GetPositionZ(); + // Ignore the BOUNDING_RADIUS for spells with radius (add a small value to prevent < 0 rounding errors) + m_caster->GetNearPoint2D(x, y, radius > 0.001f ? radius - m_caster->GetObjectBoundingRadius() + 0.01f : 2.0f, angle); + m_caster->UpdateAllowedPositionZ(x, y, z); + m_targets.setDestination(x, y, z); + + // Add Summoner + targetUnitMap.push_back(m_caster); + break; + } case TARGET_SELF: case TARGET_SELF2: targetUnitMap.push_back(m_caster); diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index f289d1bdf..94af4e247 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "11985" + #define REVISION_NR "11986" #endif // __REVISION_NR_H__