Если честно, я в замешательстве. Кто-нибудь может объяснить почему при неотрицательных углах заклинание направлено не в точку каста, а куда-то в сторону.
Как вообще считаются углы в варкрафе?
	local unit c  = gg_unit_Uanb_0010 //кастер
    local integer i = 1
    local real facing = bj_RADTODEG*Atan2(GetLocationY(GetSpellTargetLoc()) - GetUnitY(c), GetLocationX(GetSpellTargetLoc()) - GetUnitX(c))
	//угол между кастером и точкой каста часто отрицательный (почему так ???)
    if facing < 0 then
        set facing = facing + 360 //исправляем на положительный
    endif
    call BJDebugMsg("facing="+R2S(facing))
    call SaveReal(udg_ht, GetHandleId(t), 0, facing)
    set facing = facing + 45
    if facing > 360 then
        set facing = facing - 360
    endif
    loop
        exitwhen i > 5 //волна шипов кастуется 5 раз
        set facing = facing - 15
        if facing < 0 then
            set facing = facing + 360
        endif
        call BJDebugMsg("facing["+I2S(i)+"]="+R2S(facing))
        call CastPoint(GetOwningPlayer(c), c, 1, 'AUim', GetUnitAbilityLevel(c,'A0K5'), "impale", GetUnitX(c)+64*Cos(facing*bj_DEGTORAD), 		GetUnitY(c)+64*Sin(facing*bj_DEGTORAD) ) //кастуем волну шипов в точку со смещением
        set i = i + 1
    endloop
...
Как должно быть:
Необъяснимо, но факт:

Принятый ответ

Поставил расстояние 256 там, где вычисляются полярные координаты - всё заработало. То есть слишком маленькие значения нельзя, как 64, всё ясно. Тема закрыта.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.