Code: Select all
function K1 takes nothing returns nothing
local integer L=KL(GetTriggeringTrigger())
local integer Id=jr(GetTriggerUnit())
local integer K0=GetPlayerId(GetOwningPlayer(GetTriggerUnit()))
local group G
if GetStoredBoolean(jS(),"IsPathing"+I2S(Id),"UnitAttached")then
return
endif
if DistanceBetweenPoints(GetUnitLoc(jt(bn[L])),GetUnitLoc(GetTriggerUnit()))<DistanceBetweenPoints(GetUnitLoc(jt(bM[L])),GetUnitLoc(GetTriggerUnit()))then
if GetTerrainCliffLevelBJ(GetUnitLoc(GetTriggerUnit()))>GetTerrainCliffLevelBJ(GetUnitLoc(jt(bn[L])))then
return
endif
else
if GetTerrainCliffLevelBJ(GetUnitLoc(jt(bM[L])))>GetTerrainCliffLevelBJ(GetUnitLoc(jt(bn[L])))then
return
endif
endif
set G=It(GetOwningPlayer(GetTriggerUnit()))
if not IsUnitInGroup(GetTriggerUnit(),G)then
call StoreBoolean(jS(),"BeenDeselected"+I2S(Id),"UnitAttached",true)
call DisplayTimedTextToPlayer(Player(0),0,0,5,"not selected")
else
call StoreBoolean(jS(),"BeenDeselected"+I2S(Id),"UnitAttached",false)
call StoreBoolean(jS(),"CurrentlyPathing"+I2S(K0),"PlayerAttached",true)
endif
call GroupAddUnit(jU(GetStoredInteger(jS(),"PathingUnits"+I2S(K0),"PlayerAttached")),GetTriggerUnit())
call StoreBoolean(jS(),"IsPathing"+I2S(Id),"UnitAttached",true)
call ShowUnitHide(GetTriggerUnit())
call PauseUnit(GetTriggerUnit(),true)
call TriggerSleepAction(DistanceBetweenPoints(GetUnitLoc(jt(bn[L])),GetUnitLoc(jt(bM[L])))/500)
call PauseUnit(GetTriggerUnit(),false)
call SetUnitPathing(GetTriggerUnit(),false)
call TriggerSleepAction(0.5)
call ShowUnitShow(GetTriggerUnit())
if not GetStoredBoolean(jS(),"BeenDeselected"+I2S(Id),"UnitAttached")then
if GetStoredBoolean(jS(),"CurrentlyPathing"+I2S(K0),"PlayerAttached")then
call StoreBoolean(jS(),"CurrentlyPathing"+I2S(K0),"PlayerAttached",false)
call SelectUnitAddForPlayer(GetTriggerUnit(),Player(K0))
call TriggerSleepAction(0)
call StoreBoolean(jS(),"CurrentlyPathing"+I2S(K0),"PlayerAttached",true)
else
call SelectUnitAddForPlayer(GetTriggerUnit(),GetOwningPlayer(GetTriggerUnit()))
endif
endif
call GroupRemoveUnit(jU(GetStoredInteger(jS(),"PathingUnits"+I2S(K0),"PlayerAttached")),GetTriggerUnit())
if CountUnitsInGroup(jU(GetStoredInteger(jS(),"PathingUnits"+I2S(K0),"PlayerAttached")))<=0 then
call StoreBoolean(jS(),"CurrentlyPathing"+I2S(K0),"PlayerAttached",false)
endif
call FlushStoredBoolean(jS(),"BeenDeselected"+I2S(Id),"UnitAttached")
call TriggerSleepAction(0.2)
call SetUnitPathing(GetTriggerUnit(),true)
call FlushStoredBoolean(jS(),"IsPathing"+I2S(Id),"UnitAttached")
call DestroyGroup(G)
set G=null
endfunction