Code
function Trig_NewYearEnergyWall_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A00B'
endfunction
function Trig_NewYearEnergyWall_Actions takes nothing returns nothing
//
local unit f=GetTriggerUnit()
local integer i=0
local real fas=GetUnitFacing(f)
local unit array da
local integer di=0
local real x = GetSpellTargetX()
local real y = GetSpellTargetY()
local unit d=CreateUnit(GetOwningPlayer(f),'o004',x,y,GetUnitFacing(f))
local real x2 = GetWidgetX(d) + 220. * Cos(fas * .017)
local real y2 = GetWidgetY(d) + 220. * Sin(fas * .017)
local destructable array des
local integer dei=0
local integer in=GetHeroInt(f,true)/2
local real x1 = GetWidgetX(d) + (400+in) * Cos(fas * .017)
local real y1 = GetWidgetY(d) + (400+in) * Sin(fas * .017)
//
if GetHeroInt(f,true) <=250 then
set in=GetHeroInt(f,true)/2
endif
if GetHeroInt(f,false) >=251 then
set in=150
endif
set x1=GetWidgetX(d) + (400+in) * Cos(fas * .017)
set y1=GetWidgetY(d) + (400+in) * Sin(fas * .017)
//
loop
exitwhen i>10*GetUnitAbilityLevel(f,'A00B')+(3*GetUnitAbilityLevel(f,'A00D'))
set da[di]=CreateUnit(GetOwningPlayer(f),udg_type[GetRandomInt(4,6)],x1,y1,0)
call UnitApplyTimedLife(da[di],'BTLF',2*GetUnitAbilityLevel(f,'A00B')+2)
call SetUnitAbilityLevel(da[di],'A00A',GetUnitAbilityLevel(f,'A00B'))
set des[dei]=CreateDestructable('YTpc',x1,y1,fas,1,1)
set dei=dei+1
set di=di+1
set i=i+1
set fas=fas-20
set x1 = GetWidgetX(d) + (400+in) * Cos(fas * .017)
set y1 = GetWidgetY(d) + (400+in) * Sin(fas * .017)
call TriggerSleepAction(0.01)
endloop
//
loop
exitwhen i==0
call IssuePointOrder(da[di],"shockwave",x2,y2)
set di=di-1
set i=i-1
set fas=fas+20
set x2 = GetWidgetX(d) + 220. * Cos(fas * .017)
set y2 = GetWidgetY(d) + 220. * Sin(fas * .017)
endloop
//
set dei=0
call TriggerSleepAction(0.8)
//
loop
exitwhen i>10*GetUnitAbilityLevel(f,'A00B')+(3*GetUnitAbilityLevel(f,'A00D'))
call RemoveDestructable(des[dei])
set des[dei]=null
set dei=dei+1
set da[di]=null
set di=di+1
set i=i+1
endloop
//
call RemoveUnit(d)
set d=null
set f=null
endfunction
//===========================================================================
function InitTrig_NewYearEnergyWall takes nothing returns nothing
set gg_trg_NewYearEnergyWall = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_NewYearEnergyWall, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_NewYearEnergyWall, Condition( function Trig_NewYearEnergyWall_Conditions ) )
call TriggerAddAction( gg_trg_NewYearEnergyWall, function Trig_NewYearEnergyWall_Actions )
endfunction
Пример способности.
Создает даммиков вокруг точки по кругу блокирует вход выход и пускает волны силы в центр.
Кол-во волн идаммиков зависит от уровня
Так же радиус зависит от интелекта
И еще способность усиляется если есть у героя пассивка.Добавлено (17.01.2012, 14:14)
---------------------------------------------
Если что интересно спроси.