initial files
This commit is contained in:
@@ -0,0 +1,164 @@
|
||||
private _convoy_destinations_markers = [];
|
||||
private _load_box_fnc = compileFinal preprocessFileLineNumbers "scripts\client\ammoboxes\do_load_box.sqf";
|
||||
|
||||
while { count _convoy_destinations_markers < 3 } do { _convoy_destinations_markers pushback ([2000,999999,false] call KPLIB_fnc_getOpforSpawnPoint); };
|
||||
|
||||
private _couldnt_spawn = false;
|
||||
{ if ( _x == "" ) exitWith { _couldnt_spawn = true; }; } foreach _convoy_destinations_markers;
|
||||
if ( _couldnt_spawn ) exitWith {["Could not find enough map positions for convoy hijack mission", "ERROR"] call KPLIB_fnc_log;};
|
||||
|
||||
private _convoy_destinations = [];
|
||||
{ _convoy_destinations pushback (markerPos _x); } foreach _convoy_destinations_markers;
|
||||
|
||||
private _spawnpos = _convoy_destinations select 0;
|
||||
[4, _spawnpos] remoteExec ["remote_call_intel"];
|
||||
|
||||
private _scout_vehicle = [_spawnpos getPos [30, 0], opfor_mrap, true, false] call KPLIB_fnc_spawnVehicle;
|
||||
private _escort_vehicle = [_spawnpos getPos [10, 0], selectRandom opfor_vehicles_low_intensity, true, false] call KPLIB_fnc_spawnVehicle;
|
||||
private _transport_vehicle = [_spawnpos getPos [10, 180], opfor_ammobox_transport, true, false] call KPLIB_fnc_spawnVehicle;
|
||||
|
||||
private _boxes_amount = 0;
|
||||
{
|
||||
if ( _x select 0 == opfor_ammobox_transport ) exitWith { _boxes_amount = (count _x) - 2 };
|
||||
} foreach KPLIB_transportConfigs;
|
||||
|
||||
if ( _boxes_amount == 0 ) exitWith {["Opfor ammobox truck classname doesn't allow for ammobox transport, correct your preset and/or transport config", "ERROR"] call KPLIB_fnc_log;};
|
||||
|
||||
GRLIB_secondary_in_progress = 1; publicVariable "GRLIB_secondary_in_progress";
|
||||
|
||||
private _boxes_loaded = 0;
|
||||
|
||||
while { _boxes_loaded < _boxes_amount } do {
|
||||
_boxes_loaded = _boxes_loaded + 1;
|
||||
sleep 0.5;
|
||||
private _next_box = [KP_liberation_ammo_crate, 100, _spawnpos getPos [15, 135]] call KPLIB_fnc_createCrate;
|
||||
sleep 0.5;
|
||||
[_next_box, 50] call _load_box_fnc;
|
||||
};
|
||||
|
||||
sleep 0.5;
|
||||
|
||||
private _troop_vehicle = [_spawnpos getPos [30, 180], opfor_transport_truck, true, true, false ] call KPLIB_fnc_spawnVehicle;
|
||||
|
||||
sleep 0.5;
|
||||
|
||||
private _convoy_group = group driver _scout_vehicle;
|
||||
( crew _escort_vehicle + crew _transport_vehicle + crew _troop_vehicle ) joinSilent _convoy_group;
|
||||
|
||||
sleep 0.5;
|
||||
|
||||
{
|
||||
_x addEventHandler ["HandleDamage", { private [ "_damage" ]; if ( side (_this select 3) != GRLIB_side_friendly ) then { _damage = 0 } else { _damage = _this select 2 }; _damage } ];
|
||||
} foreach [ _scout_vehicle, _escort_vehicle, _transport_vehicle, _troop_vehicle ];
|
||||
|
||||
_convoy_group setFormation "FILE";
|
||||
_convoy_group setBehaviour "SAFE";
|
||||
_convoy_group setCombatMode "GREEN";
|
||||
_convoy_group setSpeedMode "LIMITED";
|
||||
|
||||
while {(count (waypoints _convoy_group)) != 0} do {deleteWaypoint ((waypoints _convoy_group) select 0);};
|
||||
{_x doFollow leader _convoy_group} foreach units _convoy_group;
|
||||
|
||||
_waypoint = _convoy_group addWaypoint [_convoy_destinations select 1, 0];
|
||||
_waypoint setWaypointType "MOVE";
|
||||
_waypoint setWaypointCompletionRadius 50;
|
||||
|
||||
_waypoint = _convoy_group addWaypoint [_convoy_destinations select 2, 0];
|
||||
_waypoint setWaypointType "MOVE";
|
||||
_waypoint setWaypointCompletionRadius 50;
|
||||
|
||||
_waypoint = _convoy_group addWaypoint [_convoy_destinations select 0, 0];
|
||||
_waypoint setWaypointType "MOVE";
|
||||
_waypoint setWaypointCompletionRadius 50;
|
||||
|
||||
_waypoint = _convoy_group addWaypoint [_convoy_destinations select 0, 0];
|
||||
_waypoint setWaypointType "CYCLE";
|
||||
_waypoint setWaypointCompletionRadius 50;
|
||||
|
||||
private _troops_group = createGroup [GRLIB_side_enemy, true];
|
||||
{
|
||||
[_x, _spawnpos, _troops_group, "PRIVATE", 0.5] call KPLIB_fnc_createManagedUnit;
|
||||
} foreach ([] call KPLIB_fnc_getSquadComp);
|
||||
{_x moveInCargo _troop_vehicle} foreach (units _troops_group);
|
||||
|
||||
private _convoy_marker = createMarkerLocal [ format [ "convoymarker%1", round time], getpos _transport_vehicle ];
|
||||
_convoy_marker setMarkerText (localize "STR_SECONDARY_CSAT_CONVOY");
|
||||
_convoy_marker setMarkerType "o_armor";
|
||||
_convoy_marker setMarkerColor GRLIB_color_enemy_bright;
|
||||
|
||||
private _convoy_marker_wp1 = createMarkerLocal [ format [ "convoymarkerwp1%1", round time], _convoy_destinations select 0];
|
||||
private _convoy_marker_wp2 = createMarkerLocal [ format [ "convoymarkerwp2%1", round time], _convoy_destinations select 1];
|
||||
private _convoy_marker_wp3 = createMarkerLocal [ format [ "convoymarkerwp3%1", round time], _convoy_destinations select 2];
|
||||
|
||||
{
|
||||
_x setMarkerText (localize "STR_SECONDARY_CSAT_CONVOY_WP");
|
||||
_x setMarkerType "o_armor";
|
||||
_x setMarkerColor GRLIB_color_enemy_bright;
|
||||
_x setMarkerSize [0.6, 0.6];
|
||||
} foreach [_convoy_marker_wp1, _convoy_marker_wp2, _convoy_marker_wp3];
|
||||
|
||||
private _mission_in_progress = true;
|
||||
private _convoy_attacked = false;
|
||||
private _convoy_flee = false;
|
||||
private _disembark_troops = false;
|
||||
|
||||
while { _mission_in_progress } do {
|
||||
|
||||
if ( !(alive _transport_vehicle) || !(alive driver _transport_vehicle) ) then {
|
||||
_mission_in_progress = false;
|
||||
};
|
||||
|
||||
_convoy_marker setMarkerPos (getpos _transport_vehicle);
|
||||
|
||||
if ( !_convoy_attacked ) then {
|
||||
{
|
||||
if ( !(alive _x) || (damage _x > 0.3) || !(alive driver _x)) exitWith { _convoy_attacked = true; };
|
||||
} foreach [_scout_vehicle, _escort_vehicle, _transport_vehicle, _troop_vehicle];
|
||||
};
|
||||
|
||||
if ( _convoy_attacked && !_disembark_troops) then {
|
||||
|
||||
_disembark_troops = true;
|
||||
|
||||
if (alive (driver _troop_vehicle)) then {
|
||||
private _troop_driver_group = createGroup [GRLIB_side_enemy, true];
|
||||
[ driver _troop_vehicle ] joinSilent _troop_driver_group;
|
||||
sleep 1;
|
||||
while {(count (waypoints _troop_driver_group)) != 0} do {deleteWaypoint ((waypoints _troop_driver_group) select 0);};
|
||||
_waypoint = _troop_driver_group addWaypoint [getpos _troop_vehicle, 0];
|
||||
_waypoint setWaypointType "MOVE";
|
||||
sleep 3;
|
||||
};
|
||||
|
||||
{
|
||||
unAssignVehicle _x;
|
||||
_x action ["eject", vehicle _x];
|
||||
_x action ["getout", vehicle _x];
|
||||
unAssignVehicle _x;
|
||||
sleep 0.7;
|
||||
} foreach (units _troops_group);
|
||||
|
||||
_troops_group setBehaviour "COMBAT";
|
||||
_troops_group setCombatMode "RED";
|
||||
};
|
||||
|
||||
if ( _convoy_attacked && !_convoy_flee) then {
|
||||
_convoy_flee = true;
|
||||
_convoy_group setBehaviour "COMBAT";
|
||||
_convoy_group setSpeedMode "FULL";
|
||||
};
|
||||
|
||||
sleep 5;
|
||||
};
|
||||
|
||||
sleep 20;
|
||||
|
||||
deleteMarker _convoy_marker;
|
||||
{ deleteMarker _x } foreach [_convoy_marker_wp1, _convoy_marker_wp2, _convoy_marker_wp3 ];
|
||||
|
||||
combat_readiness = round (combat_readiness * 0.85);
|
||||
stats_secondary_objectives = stats_secondary_objectives + 1;
|
||||
[5] remoteExec ["remote_call_intel"];
|
||||
GRLIB_secondary_in_progress = -1; publicVariable "GRLIB_secondary_in_progress";
|
||||
sleep 1;
|
||||
[] spawn KPLIB_fnc_doSave;
|
||||
@@ -0,0 +1,138 @@
|
||||
|
||||
_defenders_amount = (15 * (sqrt (GRLIB_unitcap))) min 15;
|
||||
|
||||
_spawn_marker = [2000,999999,false] call KPLIB_fnc_getOpforSpawnPoint;
|
||||
if (_spawn_marker == "") exitWith {["Could not find position for fob hunting mission", "ERROR"] call KPLIB_fnc_log;};
|
||||
|
||||
used_positions pushBack _spawn_marker;
|
||||
_base_position = markerpos _spawn_marker;
|
||||
_base_objects = [];
|
||||
_base_objectives = [];
|
||||
_base_defenders = [];
|
||||
|
||||
([] call (compile preprocessFileLineNumbers (selectRandom KPLIB_fob_templates))) params [
|
||||
"_objects_to_build",
|
||||
"_objectives_to_build",
|
||||
"_defenders_to_build",
|
||||
"_base_corners"
|
||||
];
|
||||
|
||||
[_base_position, 50] call KPLIB_fnc_createClearance;
|
||||
|
||||
private _nextobject = objNull;
|
||||
|
||||
{
|
||||
_x params [
|
||||
"_nextclass",
|
||||
"_nextpos",
|
||||
"_nextdir"
|
||||
];
|
||||
|
||||
_nextpos = [((_base_position select 0) + (_nextpos select 0)), ((_base_position select 1) + (_nextpos select 1)), 0];
|
||||
|
||||
_nextobject = _nextclass createVehicle _nextpos;
|
||||
_nextobject allowDamage false;
|
||||
_nextobject setVectorUp [0, 0, 1];
|
||||
_nextobject setdir _nextdir;
|
||||
_nextobject setpos _nextpos;
|
||||
_nextobject setVectorUp [0, 0, 1];
|
||||
_nextobject setdir _nextdir;
|
||||
_nextobject setpos _nextpos;
|
||||
|
||||
_base_objects pushBack _nextobject;
|
||||
} forEach _objects_to_build;
|
||||
|
||||
sleep 1;
|
||||
|
||||
{
|
||||
_x params [
|
||||
"_nextclass",
|
||||
"_nextpos",
|
||||
"_nextdir"
|
||||
];
|
||||
|
||||
_nextpos = [((_base_position select 0) + (_nextpos select 0)), ((_base_position select 1) + (_nextpos select 1)), 0];
|
||||
|
||||
_nextobject = _nextclass createVehicle _nextpos;
|
||||
_nextobject allowDamage false;
|
||||
_nextobject setVectorUp [0, 0, 1];
|
||||
_nextobject setpos _nextpos;
|
||||
_nextobject setdir _nextdir;
|
||||
_nextobject setVectorUp [0, 0, 1];
|
||||
_nextobject setpos _nextpos;
|
||||
_nextobject setdir _nextdir;
|
||||
_nextobject lock 2;
|
||||
|
||||
_base_objectives pushBack _nextobject;
|
||||
} forEach _objectives_to_build;
|
||||
|
||||
sleep 1;
|
||||
|
||||
{_x setDamage 0; _x allowDamage true;} foreach (_base_objectives + _base_objects);
|
||||
|
||||
_grpdefenders = createGroup [GRLIB_side_enemy, true];
|
||||
_idxselected = [];
|
||||
|
||||
while {(count _idxselected) < _defenders_amount && (count _idxselected) < (count _defenders_to_build)} do {
|
||||
_idxselected pushBackUnique (floor (random (count _defenders_to_build)));
|
||||
};
|
||||
|
||||
{
|
||||
(_defenders_to_build select _x) params [
|
||||
"_nextclass",
|
||||
"_nextpos",
|
||||
"_nextdir"
|
||||
];
|
||||
|
||||
_nextpos = [((_base_position select 0) + (_nextpos select 0)), ((_base_position select 1) + (_nextpos select 1)), (_nextpos select 2)];
|
||||
private _nextDefender = [_nextclass, _nextpos, _grpdefenders, "PRIVATE", 0.5] call KPLIB_fnc_createManagedUnit;
|
||||
_nextDefender setdir _nextdir;
|
||||
_nextDefender setpos _nextpos;
|
||||
[_nextDefender] spawn building_defence_ai;
|
||||
} forEach _idxselected;
|
||||
|
||||
private _sentryMax = ceil ((3 + (floor (random 4))) * (sqrt (GRLIB_unitcap)));
|
||||
|
||||
_grpsentry = createGroup [GRLIB_side_enemy, true];
|
||||
_base_sentry_pos = [(_base_position select 0) + ((_base_corners select 0) select 0), (_base_position select 1) + ((_base_corners select 0) select 1), 0];
|
||||
for [{_idx=0}, {_idx < _sentryMax}, {_idx=_idx+1}] do {
|
||||
[opfor_sentry, _base_sentry_pos, _grpsentry, "PRIVATE", 0.5] call KPLIB_fnc_createManagedUnit;
|
||||
};
|
||||
|
||||
while {(count (waypoints _grpsentry)) != 0} do {deleteWaypoint ((waypoints _grpsentry) select 0);};
|
||||
private _waypoint = [];
|
||||
{
|
||||
_waypoint = _grpsentry addWaypoint [[((_base_position select 0) + (_x select 0)), ((_base_position select 1) + (_x select 1)), 0], -1];
|
||||
_waypoint setWaypointType "MOVE";
|
||||
_waypoint setWaypointSpeed "LIMITED";
|
||||
_waypoint setWaypointBehaviour "SAFE";
|
||||
_waypoint setWaypointCompletionRadius 5;
|
||||
} forEach _base_corners;
|
||||
|
||||
_waypoint = _grpsentry addWaypoint [[(_base_position select 0) + ((_base_corners select 0) select 0), (_base_position select 1) + ((_base_corners select 0) select 1), 0], -1];
|
||||
_waypoint setWaypointType "CYCLE";
|
||||
|
||||
_objectives_alive = true;
|
||||
|
||||
secondary_objective_position = _base_position;
|
||||
secondary_objective_position_marker = [(((secondary_objective_position select 0) + 800) - random 1600), (((secondary_objective_position select 1) + 800) - random 1600), 0];
|
||||
publicVariable "secondary_objective_position_marker";
|
||||
sleep 1;
|
||||
|
||||
GRLIB_secondary_in_progress = 0; publicVariable "GRLIB_secondary_in_progress";
|
||||
[2] remoteExec ["remote_call_intel"];
|
||||
|
||||
waitUntil {
|
||||
sleep 5;
|
||||
(_base_objectives select {alive _x}) isEqualTo []
|
||||
};
|
||||
|
||||
combat_readiness = round (combat_readiness * GRLIB_secondary_objective_impact);
|
||||
stats_secondary_objectives = stats_secondary_objectives + 1;
|
||||
sleep 1;
|
||||
[] spawn KPLIB_fnc_doSave;
|
||||
sleep 3;
|
||||
|
||||
[3] remoteExec ["remote_call_intel"];
|
||||
|
||||
GRLIB_secondary_in_progress = -1; publicVariable "GRLIB_secondary_in_progress";
|
||||
@@ -0,0 +1,112 @@
|
||||
|
||||
private _spawn_marker = [ 2000, 999999, false ] call KPLIB_fnc_getOpforSpawnPoint;
|
||||
if ( _spawn_marker == "" ) exitWith {["Could not find position for search and rescue mission", "ERROR"] call KPLIB_fnc_log;};
|
||||
used_positions pushbackUnique _spawn_marker;
|
||||
|
||||
private _helopos = (markerPos _spawn_marker) getPos [random 200, random 360];
|
||||
private _helowreck = KPLIB_sarWreck createVehicle _helopos;
|
||||
_helowreck allowDamage false;
|
||||
_helowreck setPos _helopos;
|
||||
_helowreck setPos _helopos;
|
||||
private _helowreckDir = (random 360);
|
||||
_helowreck setDir _helowreckDir;
|
||||
|
||||
private _helofire = KPLIB_sarFire createVehicle (getpos _helowreck);
|
||||
_helofire setpos (getpos _helowreck);
|
||||
_helofire setpos (getpos _helowreck);
|
||||
|
||||
private _pilotsGrp = createGroup [GRLIB_side_enemy, true];
|
||||
private _pilotsPos = (getpos _helowreck) getPos [25, random 360];
|
||||
|
||||
[pilot_classname, _pilotsPos, _pilotsGrp, "PRIVATE", 0.5] call KPLIB_fnc_createManagedUnit;
|
||||
sleep 0.2;
|
||||
|
||||
[pilot_classname, _pilotsPos getPos [1, random 360], _pilotsGrp, "PRIVATE", 0.5] call KPLIB_fnc_createManagedUnit;
|
||||
sleep 2;
|
||||
|
||||
private _pilotUnits = units _pilotsGrp;
|
||||
{
|
||||
[ _x, true ] spawn prisonner_ai;
|
||||
_x setDir (random 360);
|
||||
sleep 0.5
|
||||
} foreach (_pilotUnits);
|
||||
|
||||
private _grppatrol = createGroup [GRLIB_side_enemy, true];
|
||||
private _patrolcorners = [
|
||||
[ (getpos _helowreck select 0) - 40, (getpos _helowreck select 1) - 40, 0 ],
|
||||
[ (getpos _helowreck select 0) + 40, (getpos _helowreck select 1) - 40, 0 ],
|
||||
[ (getpos _helowreck select 0) + 40, (getpos _helowreck select 1) + 40, 0 ],
|
||||
[ (getpos _helowreck select 0) - 40, (getpos _helowreck select 1) + 40, 0 ]
|
||||
];
|
||||
|
||||
{
|
||||
[_x, _patrolcorners select 0, _grppatrol, "PRIVATE", 0.5] call KPLIB_fnc_createManagedUnit;
|
||||
} foreach ([] call KPLIB_fnc_getSquadComp);
|
||||
|
||||
while {(count (waypoints _grppatrol)) != 0} do {deleteWaypoint ((waypoints _grppatrol) select 0);};
|
||||
{
|
||||
private _nextcorner = _x;
|
||||
_waypoint = _grppatrol addWaypoint [_nextcorner,0];
|
||||
_waypoint setWaypointType "MOVE";
|
||||
_waypoint setWaypointSpeed "LIMITED";
|
||||
_waypoint setWaypointBehaviour "SAFE";
|
||||
_waypoint setWaypointCompletionRadius 5;
|
||||
} foreach _patrolcorners;
|
||||
|
||||
_waypoint = _grppatrol addWaypoint [(_patrolcorners select 0), 0];
|
||||
_waypoint setWaypointType "CYCLE";
|
||||
{_x doFollow (leader _grppatrol)} foreach units _grppatrol;
|
||||
|
||||
private _grpsentry = createGroup [GRLIB_side_enemy, true];
|
||||
private _nbsentry = 2 + (floor (random 3));
|
||||
|
||||
for [ {_idx=0},{_idx < _nbsentry},{_idx=_idx+1} ] do {
|
||||
[opfor_sentry, _pilotsPos getPos [1, random 360], _grpsentry, "PRIVATE", 0.5] call KPLIB_fnc_createManagedUnit;
|
||||
};
|
||||
|
||||
(leader _grpsentry) setDir (random 360);
|
||||
|
||||
(opfor_transport_truck createVehicle ((getpos _helowreck) getPos [25, random 360])) setDir random 360;
|
||||
|
||||
private _vehicle_pool = opfor_vehicles;
|
||||
if ( combat_readiness < 50 ) then {
|
||||
_vehicle_pool = opfor_vehicles_low_intensity;
|
||||
};
|
||||
|
||||
private _vehtospawn = [];
|
||||
private _spawnchances = [75,50,15];
|
||||
{if (random 100 < _x) then {_vehtospawn pushBack (selectRandom _vehicle_pool);};} foreach _spawnchances;
|
||||
{([(getpos _helowreck) getPos [30 + (random 30), random 360], _x, true] call KPLIB_fnc_spawnVehicle) addMPEventHandler ['MPKilled', {_this spawn kill_manager}]; } foreach _vehtospawn;
|
||||
|
||||
secondary_objective_position = getpos _helowreck;
|
||||
secondary_objective_position_marker = secondary_objective_position getPos [800, random 360];
|
||||
publicVariable "secondary_objective_position_marker";
|
||||
sleep 1;
|
||||
GRLIB_secondary_in_progress = 2; publicVariable "GRLIB_secondary_in_progress";
|
||||
[6] remoteExec ["remote_call_intel"];
|
||||
|
||||
waitUntil {
|
||||
sleep 5;
|
||||
{ ( alive _x ) && ( _x distance ( [ getpos _x ] call KPLIB_fnc_getNearestFob ) > 50 ) } count _pilotUnits == 0
|
||||
};
|
||||
|
||||
sleep 5;
|
||||
|
||||
private _alive_crew_count = { alive _x } count _pilotUnits;
|
||||
if ( _alive_crew_count == 0 ) then {
|
||||
[7] remoteExec ["remote_call_intel"];
|
||||
} else {
|
||||
[8] remoteExec ["remote_call_intel"];
|
||||
private _grp = createGroup [GRLIB_side_friendly, true];
|
||||
{ [_x ] joinSilent _grp; } foreach _pilotUnits;
|
||||
while {(count (waypoints _grp)) != 0} do {deleteWaypoint ((waypoints _grp) select 0);};
|
||||
{_x doFollow (leader _grp)} foreach units _grp;
|
||||
{ [ _x ] spawn { sleep 600; deleteVehicle (_this select 0) } } foreach _pilotUnits;
|
||||
};
|
||||
|
||||
resources_intel = resources_intel + (10 * _alive_crew_count);
|
||||
stats_secondary_objectives = stats_secondary_objectives + 1;
|
||||
|
||||
GRLIB_secondary_in_progress = -1; publicVariable "GRLIB_secondary_in_progress";
|
||||
sleep 1;
|
||||
doSaveTrigger = true;
|
||||
Reference in New Issue
Block a user