///////////////////////////////////////////////////////////////////////////
//////////////////////PORTAL SYSTEM////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
constant function PortalS_Lightning takes nothing returns integer
return 0
endfunction
constant function PortalS_Player takes nothing returns integer
return 1
endfunction
constant function PortalS_Previewer takes nothing returns integer
return 2
endfunction
constant function PortalS_Rate takes nothing returns integer
return 3
endfunction
constant function PortalS_SFXChannel takes nothing returns integer
return 4
endfunction
constant function PortalS_SFXPortal takes nothing returns integer
return 5
endfunction
constant function PortalS_SFXSummon takes nothing returns integer
return 6
endfunction
constant function PortalS_Summoned takes nothing returns integer
return 7
endfunction
constant function PortalS_Tick takes nothing returns integer
return 8
endfunction
constant function PortalS_X takes nothing returns integer
return 9
endfunction
constant function PortalS_Y takes nothing returns integer
return 10
endfunction
function Portal_Reset takes nothing returns nothing
set udg_PortalS_BeamLink = "CLPB"
set udg_PortalS_Player = Player(0)
set udg_PortalS_Preview = false
set udg_PortalS_Rate = 1
set udg_PortalS_SFXChannel = ""
set udg_PortalS_SFXPortal = ""
set udg_PortalS_SFXSummon = ""
set udg_PortalS_Summoned = -1
set udg_PortalS_Summoner = -1
set udg_PortalS_X = 0.00
set udg_PortalS_Y = 0.00
set udg_PortalS_Keep=false
endfunction
function newportal takes nothing returns nothing
local unit u=CreateUnit(udg_PortalS_Player,udg_PortalS_Summoner,udg_PortalS_X,udg_PortalS_Y,0)
local integer id=GetHandleId(u)
call GroupAddUnit(udg_PortalSG_ActivePortals,u)
call SaveLightningHandle(udg_PortalSG_Hash,id,PortalS_Lightning(),AddLightningEx(udg_PortalS_BeamLink,true,udg_PortalS_X,udg_PortalS_Y,350,GetUnitX(u),GetUnitY(u),25))
call SaveInteger(udg_PortalSG_Hash,id,PortalS_Rate(),udg_PortalS_Rate)
call SaveInteger(udg_PortalSG_Hash,id,PortalS_Tick(),udg_PortalS_Rate)
call SaveInteger(udg_PortalSG_Hash,id,PortalS_Summoned(),udg_PortalS_Summoned)
call SaveEffectHandle(udg_PortalSG_Hash,id,PortalS_SFXPortal(),AddSpecialEffect(udg_PortalS_SFXPortal,udg_PortalS_X,udg_PortalS_Y))
call SaveEffectHandle(udg_PortalSG_Hash,id,PortalS_SFXChannel(),AddSpecialEffectTarget(udg_PortalS_SFXChannel,u,"chest"))
call SaveStr(udg_PortalSG_Hash,id,PortalS_SFXSummon(),udg_PortalS_SFXSummon)
call SaveReal(udg_PortalSG_Hash,id,PortalS_X(),udg_PortalS_X)
call SaveReal(udg_PortalSG_Hash,id,PortalS_Y(),udg_PortalS_Y)
set u=null
if udg_PortalS_Preview then
set u=CreateUnit(udg_PortalS_Player,udg_PortalS_Summoned,udg_PortalS_X,udg_PortalS_Y,GetRandomReal(0,360))
call SetUnitPathing(u,false)
call SetUnitPosition(u,udg_PortalS_X,udg_PortalS_Y)
call SaveUnitHandle(udg_PortalSG_Hash,id,PortalS_Previewer(),u)
call UnitAddAbility(u,'Amrf')
call UnitRemoveAbility(u,'Amrf')
call SetUnitFlyHeight(u,325,2500)
call PauseUnit(u,true)
call UnitAddAbility(u,'Avul')
call UnitAddAbility(u,'Aloc')
call SetUnitVertexColor(u,255,255,255,128)
set u=null
endif
if udg_PortalS_Keep==false then
call Portal_Reset()
else
set udg_PortalS_Keep=false
endif
call EnableTrigger(gg_trg_Portal_System)
endfunction