KP-Liberation/Missionframework/scripts/server/sector/attack_in_progress_sector.sqf

82 lines
2.3 KiB
Plaintext

params [ "_sector" ];
private [ "_attacktime", "_ownership", "_grp", "_squad_type" ];
sleep 5;
_ownership = [ markerpos _sector ] call F_sectorOwnership;
if ( _ownership != GRLIB_side_enemy ) exitWith {};
_squad_type = blufor_squad_inf_light;
if ( _sector in sectors_military ) then {
_squad_type = blufor_squad_inf;
};
if ( GRLIB_blufor_defenders ) then {
_grp = creategroup [GRLIB_side_friendly, true];
{
[_x, markerPos _sector, _grp] call F_createManagedUnit;
} foreach _squad_type;
sleep 3;
_grp setBehaviour "COMBAT";
};
sleep 60;
_ownership = [ markerpos _sector ] call F_sectorOwnership;
if ( _ownership == GRLIB_side_friendly ) exitWith {
if ( GRLIB_blufor_defenders ) then {
{
if ( alive _x ) then { deleteVehicle _x };
} foreach units _grp;
};
};
[_sector, 1] remoteExec ["remote_call_sector"];
_attacktime = GRLIB_vulnerability_timer;
while { _attacktime > 0 && ( _ownership == GRLIB_side_enemy || _ownership == GRLIB_side_resistance ) } do {
_ownership = [markerpos _sector] call F_sectorOwnership;
_attacktime = _attacktime - 1;
sleep 1;
};
waitUntil {
sleep 1;
[markerpos _sector] call F_sectorOwnership != GRLIB_side_resistance;
};
if ( GRLIB_endgame == 0 ) then {
if ( _attacktime <= 1 && ( [markerpos _sector] call F_sectorOwnership == GRLIB_side_enemy ) ) then {
blufor_sectors = blufor_sectors - [ _sector ];
publicVariable "blufor_sectors";
[_sector, 2] remoteExec ["remote_call_sector"];
reset_battlegroups_ai = true;
doSaveTrigger = true;
stats_sectors_lost = stats_sectors_lost + 1;
{
if (_sector in _x) exitWith {
if ((count (_x select 3)) == 3) then {
{
detach _x;
deleteVehicle _x;
} forEach (attachedObjects ((nearestObjects [((_x select 3) select 0), [KP_liberation_small_storage_building], 10]) select 0));
deleteVehicle ((nearestObjects [((_x select 3) select 0), [KP_liberation_small_storage_building], 10]) select 0);
};
KP_liberation_production = KP_liberation_production - [_x];
};
} forEach KP_liberation_production;
} else {
[_sector, 3] remoteExec ["remote_call_sector"];
{[_x] spawn prisonner_ai;} foreach (((markerpos _sector) nearEntities ["Man", GRLIB_capture_size * 0.8]) select {side group _x == GRLIB_side_enemy});
};
};
sleep 60;
if ( GRLIB_blufor_defenders ) then {
{
if ( alive _x ) then { deleteVehicle _x };
} foreach units _grp;
};