call SetUnitX(u,x+(d-10)*Cos(l*bj_DEGTORAD))
call SetUnitY(u,y+(d-10)*Sin(l*bj_DEGTORAD))
endif
elseif IsUnitType(u2,UNIT_TYPE_DEAD)==false then
if Distance(GetUnitX(u),GetUnitY(u),x,y)<Distance(GetUnitX(u),GetUnitY(u),GetUnitX(u2),GetUnitY(u2)) then
call SaveUnitHandle(HT,GetHandleId(u),65536,LoadUnitHandle(HT,pk,0))
set d=Distance(GetUnitX(u),GetUnitY(u),x,y)
set l=3+Angle(x,y,GetUnitX(u),GetUnitY(u))
if d<=20 then
call VortexA3(LoadUnitHandle(HT,pk,0),u)
else
if b then
call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Other\\ForkedLightning\\ForkedLightningTarget.mdl",GetUnitX(u),GetUnitY(u)))
endif
call SetUnitX(u,x+(d-10)*Cos(l*bj_DEGTORAD))
call SetUnitY(u,y+(d-10)*Sin(l*bj_DEGTORAD))
endif
endif
endif
endif
endif
endloop
loop
set r=r+1
call MoveLightningEx(LoadLightningHandle(HT,pk,R2I(r)),false,x+100*Cos((a+30*r)*bj_DEGTORAD),y+100*Sin((a+30*r)*bj_DEGTORAD),0,x+200*Cos((a+60+30*r)*bj_DEGTORAD),y+200*Sin((a+60+30*r)*bj_DEGTORAD),100)
call MoveLightningEx(LoadLightningHandle(HT,pk,12+R2I(r)),false,x+200*Cos((a+60+30*r)*bj_DEGTORAD),y+200*Sin((a+60+30*r)*bj_DEGTORAD),100,x+300*Cos((a+120+30*r)*bj_DEGTORAD),y+300*Sin((a+120+30*r)*bj_DEGTORAD),200)
call MoveLightningEx(LoadLightningHandle(HT,pk,24+R2I(r)),false,x+100*Cos((a+30*r)*bj_DEGTORAD),y+100*Sin((a+30*r)*bj_DEGTORAD),0,x,y,150)
exitwhen r>=12
endloop
endif
call DestroyGroup(g)
set u=null
set t=null
set g=null
set u2=null
endfunction
function VortexA takes nothing returns nothing
local timer t
local integer pk
local real x
local real y
local real r
local unit u
if GetUnitTypeId(GetSummonedUnit())=='u000' then
set t=CreateTimer()
set pk=GetHandleId(t)
set x=GetUnitX(GetSummonedUnit())
set y=GetUnitY(GetSummonedUnit())
call SaveUnitHandle(HT,pk,0,GetSummonedUnit())
set r=0
loop
set r=r+1
call SaveLightningHandle(HT,pk,R2I(r),AddLightningEx("CHIM",false,x+100*Cos(30*r*bj_DEGTORAD),y+100*Sin(30*r*bj_DEGTORAD),0,x+200*Cos((60+30*r)*bj_DEGTORAD),y+200*Sin((60+30*r)*bj_DEGTORAD),100))
call SaveLightningHandle(HT,pk,12+R2I(r),AddLightningEx("CLPB",false,x+200*Cos((60+30*r)*bj_DEGTORAD),y+200*Sin((60+30*r)*bj_DEGTORAD),100,x+300*Cos((120+30*r)*bj_DEGTORAD),y+300*Sin((120+30*r)*bj_DEGTORAD),200))
call SaveLightningHandle(HT,pk,24+R2I(r),AddLightningEx("FORK",false,x+100*Cos(30*r*bj_DEGTORAD),y+100*Sin(30*r*bj_DEGTORAD),0,x,y,150))
exitwhen r>=12
endloop
set r=0
loop
set r=r+1
call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Other\\ForkedLightning\\ForkedLightningTarget.mdl",x+Rose(300,4,3*r,90)*Cos(3*r*bj_DEGTORAD),y+Rose(300,4,3*r,90)*Sin(3*r*bj_DEGTORAD)))
exitwhen r>=120
endloop
set r=0
loop
set r=r+1
set u=CreateUnit(GetTriggerPlayer(),'u001',x+300*Cos(10*r*bj_DEGTORAD),y+300*Sin(10*r*bj_DEGTORAD),0)
call UnitApplyTimedLife(u,'BTLF',0.7)
call IssueImmediateOrder(u,"fanofknives")
exitwhen r>=36
endloop
call TimerStart(t,0.02,true,function VortexA2)
set u=null
set t=null
endif
endfunction
private function Init takes nothing returns nothing
local trigger t=CreateTrigger()
call TriggerRegisterPlayerUnitEvent(t,Player(0),EVENT_PLAYER_UNIT_SUMMON,null)
call TriggerAddCondition(t,Condition(function VortexA))
set t=null
call FlushParentHashtable(HT)
set HT=InitHashtable()
endfunction
endlibrary
2012年03月20日 04点03分
5