Code
function Trig_Wave_of_Darkness_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A03I'
endfunction
function Trig_Wave_of_Darkness_Actions takes nothing returns nothing
local unit u = GetTriggerUnit()
local player p = GetOwningPlayer(u)
local integer level = GetUnitAbilityLevel(u, 'A03I')
local real x = GetWidgetX(u)
local real y = GetWidgetY(u)
local real f = (GetUnitFacing(u) + 30.) * .0174532925166
loop
exitwhen f >= .0
set f = f + 6.283185307
endloop
loop
exitwhen f < 6.283185307
set f = f - 6.283185307
endloop
call BJDebugMsg("Wave of Darkness: u == " + GetUnitName(u) + " " + I2S(GetHandleId(u)) + ", level == " + I2S(level) + ", x == " + R2S(x) + ", y == " + R2S(y))
set u = CreateUnit(p, 'h00L', x, y, f * 57.2957848)
if level > 2 then
call SetUnitAbilityLevel(u, 'A03H', 2)
endif
call BJDebugMsg("f == " + R2S(f) + ", dummy == " + GetUnitName(u) + " " + I2S(GetHandleId(u)) + ", level == " + I2S(GetUnitAbilityLevel(u, 'A03H')))
call UnitApplyTimedLife(u, 'BTLF', 2.)
call SetUnitExploded(u, true)
call IssuePointOrder(u, "carrionswarm", x + Cos(f) * 100., y + Sin(f) * 100.)
if level > 1 then
set f = f - 1.0471975506//60 * .0174532925166
loop
exitwhen f >= .0
set f = f + 6.283185307
endloop
loop
exitwhen f < 6.283185307
set f = f - 6.283185307
endloop
set u = CreateUnit(p, 'h00L', x, y, f * 57.2957848)
call SetUnitAbilityLevel(u, 'A03H', level / 2)
call BJDebugMsg("f == " + R2S(f) + ", dummy == " + GetUnitName(u) + " " + I2S(GetHandleId(u)) + ", level == " + I2S(GetUnitAbilityLevel(u, 'A03H')))
call UnitApplyTimedLife(u, 'BTLF', 2.)
call SetUnitExploded(u, true)
call IssuePointOrder(u, "carrionswarm", x + Cos(f) * 100., y + Sin(f) * 100.)
endif
set u = null
set p = null
endfunction
//===========================================================================
function InitTrig_Wave_of_Darkness takes nothing returns nothing
local trigger trig = CreateTrigger()
local integer i = 0
loop
call TriggerRegisterPlayerUnitEvent(trig, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
exitwhen i == 11
set i = i + 1
endloop
call TriggerAddCondition(trig, Condition(function Trig_Wave_of_Darkness_Conditions))
call TriggerAddAction(trig, function Trig_Wave_of_Darkness_Actions)
set trig = null
endfunction
При использовании заклинания должно произойти следующее:
На 1 уровне создается дамми и пускает "Темную стаю" 1 уровня на 30 градусов влево от героя;
На 2 уровне создаются дамми и пускают "Темную стаю" 1 уровня на 30 градусов влево и на 30 градусов вправо от героя;
На 3 уровне создаются дамми и пускают "Темную стаю" на 30 градусов влево и на 30 градусов вправо от героя, при этом тот, который слева, пускает "стаю" 2 уровня;
На 4 уровне создаются дамми и пускают "Темную стаю" 2 уровня на 30 градусов влево и на 30 градусов вправо от героя; Все дамми на всех уровнях способности прекрасно создаются, и уровень заклинания у них устанавливается тоже правильно, однако "Темную стаю" они не кастуют! В чем может быть проблема?
P. S. Пробовал заставлять колдовать спелл по ID - не помогает.