function Trig_Regroup_Actions takes nothing returns nothing
local real Xpos
local real Ypos
local integer order
local integer i = 1
local unit wanderer
local unit commander
local unit target
local location point1
local location point2
local group batalion = CreateGroup()
loop
set commander = GetCaptain(udg_Battallion[i])
set point1 = GetUnitLoc(commander)
exitwhen (commander == null)
call GroupAddGroup( udg_Battallion[i], batalion )
//call DisplayTextToForce( GetPlayersAll(), "trying to regroup" )
loop
set wanderer = FirstOfGroup(batalion)
exitwhen (wanderer == null)
set point2 = GetUnitLoc(wanderer)
if ( DistanceBetweenPoints( point1, point2 ) >= udg_BattallionRegroup and not (IsUnitInGroup(wanderer, udg_BattallionQueued ) ) ) then
//call DisplayTextToForce( GetPlayersAll(), "regroup" )
call IssuePointOrder( wanderer, "move", GetLocationX(point1), GetLocationY(point1) )
call GroupAddUnit( udg_BattallionQueued, wanderer )
call TriggerExecute( GetTriggeringTrigger() )
loop
set point1 = GetUnitLoc(commander)
set point2 = GetUnitLoc(wanderer)
exitwhen ( DistanceBetweenPoints( point1, point2 ) <= 150 )
call TriggerSleepAction( 0.5 )
call RemoveLocation( point1 )
call RemoveLocation( point2 )
endloop
set Xpos = LoadReal( udg_hashtable, GetHandleId(commander) , 3)
set Ypos = LoadReal( udg_hashtable, GetHandleId(commander) , 4)
set order = LoadInteger( udg_hashtable, GetHandleId(commander), 2 )
set target = LoadUnitHandle( udg_hashtable, GetHandleId(commander), 5 )
if ( order != 0 and GetUnitCurrentOrder(commander) != String2OrderIdBJ("") ) then
if ( target == null ) then
call IssuePointOrderById(wanderer, order, Xpos, Ypos )
else
call IssueTargetOrderById(wanderer, order, target )
endif
endif
set target = null
call GroupRemoveUnit( udg_BattallionQueued, wanderer )
//call TriggerExecute( GetTriggeringTrigger() )
endif
call GroupRemoveUnit(batalion, wanderer)
set wanderer = null
endloop
call DestroyGroup( batalion )
set i = i + 1
call RemoveLocation(point1)
call RemoveLocation(point2)
set commander = null
endloop
endfunction
//===========================================================================
function InitTrig_Regroup takes nothing returns nothing
set gg_trg_Regroup = CreateTrigger( )
call TriggerRegisterTimerEventPeriodic( gg_trg_Regroup, 2.00 )
call TriggerAddAction( gg_trg_Regroup, function Trig_Regroup_Actions )
endfunction