initial files
This commit is contained in:
@@ -0,0 +1,140 @@
|
||||
params ["_convoy"];
|
||||
|
||||
if (KP_liberation_asymmetric_debug > 0) then {[format ["Logistic convoy %1: spawning ambush", (_convoy select 0)], "ASYMMETRIC"] call KPLIB_fnc_log;};
|
||||
|
||||
private _pos = [0,0,0];
|
||||
|
||||
switch ((_convoy select 7)) do {
|
||||
case 2: {_pos = (_convoy select 3) getPos [(_convoy select 8) * 400, (_convoy select 3) getDir (_convoy select 2)]};
|
||||
case 4: {_pos = (_convoy select 2) getPos [(_convoy select 8) * 400, (_convoy select 2) getDir (_convoy select 3)]};
|
||||
default {[format ["Logistic convoy %1 ambush: convoy is not travelling", (_convoy select 0)], "ERROR"] call KPLIB_fnc_log;};
|
||||
};
|
||||
|
||||
if (_pos isEqualTo [0,0,0]) exitWith {[format ["Logistic convoy %1 ambush: no position", (_convoy select 0)], "ERROR"] call KPLIB_fnc_log;};
|
||||
|
||||
private _roadObj = [_pos, 400, []] call BIS_fnc_nearestRoad;
|
||||
if (isNull _roadObj) exitWith {
|
||||
if (KP_liberation_asymmetric_debug > 0) then {[format ["Logistic convoy %1 ambush: no road near current convoy position", (_convoy select 0)], "ASYMMETRIC"] call KPLIB_fnc_log;};
|
||||
KP_liberation_convoy_ambush_check = 1;
|
||||
};
|
||||
|
||||
KP_liberation_convoy_ambush_check = 2;
|
||||
KP_liberation_convoy_ambush_inProgress = true;
|
||||
[0, getPos _roadObj] remoteExec ["asymm_notifications"];
|
||||
|
||||
private _vehicleArray = [];
|
||||
for "_i" from 1 to (_convoy select 1) do {
|
||||
private _veh = createVehicle [KP_liberation_truck_classname, getPos _roadObj, [], 50, "NONE"];
|
||||
_veh setDir (getDir _roadObj);
|
||||
{
|
||||
private _damage = random 0.6;
|
||||
if ((_x find "Wheel") != -1) then {
|
||||
_damage = _damage + 0.6;
|
||||
} else {
|
||||
_damage = _damage + 0.3;
|
||||
};
|
||||
if (_damage > 1) then {_damage = 1.0};
|
||||
_veh setHitPointDamage [_x, _damage];
|
||||
} forEach ((getAllHitPointsDamage _veh) select 0);
|
||||
_vehicleArray pushBack _veh;
|
||||
|
||||
private _driver = createVehicle [crewman_classname, getPos _veh, [], 12, "NONE"];
|
||||
_driver setDamage 1;
|
||||
};
|
||||
if (KP_liberation_asymmetric_debug > 0) then {[format ["Logistic convoy %1 ambush: truck spawning done", (_convoy select 0)], "ASYMMETRIC"] call KPLIB_fnc_log;};
|
||||
|
||||
private _supplies = (_convoy select 6) select 0;
|
||||
private _ammo = (_convoy select 6) select 1;
|
||||
private _fuel = (_convoy select 6) select 2;
|
||||
private _crateArray = [];
|
||||
|
||||
while {_supplies > 0} do {
|
||||
private _amount = 100;
|
||||
if ((_supplies / 100) < 1) then {
|
||||
_amount = _supplies;
|
||||
};
|
||||
_supplies = _supplies - _amount;
|
||||
private _crate = [KP_liberation_supply_crate, _amount, getPos _roadObj] call KPLIB_fnc_createCrate;
|
||||
_crate setPos (_crate getPos [random 60, random 360]);
|
||||
_crateArray pushBack [_crate];
|
||||
};
|
||||
|
||||
while {_ammo > 0} do {
|
||||
private _amount = 100;
|
||||
if ((_ammo / 100) < 1) then {
|
||||
_amount = _ammo;
|
||||
};
|
||||
_ammo = _ammo - _amount;
|
||||
private _crate = [KP_liberation_ammo_crate, _amount, getPos _roadObj] call KPLIB_fnc_createCrate;
|
||||
_crate setPos (_crate getPos [random 60, random 360]);
|
||||
_crateArray pushBack [_crate];
|
||||
};
|
||||
|
||||
while {_fuel > 0} do {
|
||||
private _amount = 100;
|
||||
if ((_fuel / 100) < 1) then {
|
||||
_amount = _fuel;
|
||||
};
|
||||
_fuel = _fuel - _amount;
|
||||
private _crate = [KP_liberation_fuel_crate, _amount, getPos _roadObj] call KPLIB_fnc_createCrate;
|
||||
_crate setPos (_crate getPos [random 60, random 360]);
|
||||
_crateArray pushBack [_crate];
|
||||
};
|
||||
if (KP_liberation_asymmetric_debug > 0) then {[format ["Logistic convoy %1 ambush: resource spawning done", (_convoy select 0)], "ASYMMETRIC"] call KPLIB_fnc_log;};
|
||||
|
||||
private _grp = [getPos _roadObj] call KPLIB_fnc_spawnGuerillaGroup;
|
||||
|
||||
private _waypoint = _grp addWaypoint [getPos _roadObj, 150];
|
||||
_waypoint setWaypointType "SAD";
|
||||
_waypoint setWaypointCompletionRadius 10;
|
||||
_waypoint = _grp addWaypoint [getPos _roadObj, 150];
|
||||
_waypoint setWaypointType "SAD";
|
||||
_waypoint setWaypointCompletionRadius 10;
|
||||
_waypoint = _grp addWaypoint [getPos _roadObj, 150];
|
||||
_waypoint setWaypointType "SAD";
|
||||
_waypoint setWaypointCompletionRadius 10;
|
||||
_waypoint = _grp addWaypoint [getPos _roadObj, 150];
|
||||
_waypoint setWaypointType "CYCLE";
|
||||
_waypoint setWaypointCompletionRadius 10;
|
||||
if (KP_liberation_asymmetric_debug > 0) then {[format ["Logistic convoy %1 ambush: guerillas spawning done", (_convoy select 0)], "ASYMMETRIC"] call KPLIB_fnc_log;};
|
||||
|
||||
private _waitingTime = KP_liberation_convoy_ambush_duration;
|
||||
|
||||
while {(({alive _x} count (units _grp)) > 0) && (_waitingTime > 0)} do {
|
||||
uiSleep 1;
|
||||
private _player_near = false;
|
||||
{
|
||||
if (((_x distance _roadObj) < 250) && (alive _x)) exitWith {_player_near = true};
|
||||
} foreach allPlayers;
|
||||
|
||||
if !(_player_near) then {
|
||||
_waitingTime = _waitingTime - 1;
|
||||
};
|
||||
};
|
||||
if (KP_liberation_asymmetric_debug > 0) then {[format ["Logistic convoy %1 ambush: ambush finished", (_convoy select 0)], "ASYMMETRIC"] call KPLIB_fnc_log;};
|
||||
|
||||
KP_liberation_convoy_ambush_inProgress = false;
|
||||
|
||||
if ((_waitingTime <= 0) && (({alive _x} count (units _grp)) > 0)) then {
|
||||
[2] remoteExec ["asymm_notifications"];
|
||||
private _gain = 0;
|
||||
{
|
||||
if (alive _x) then {
|
||||
deleteVehicle _x;
|
||||
_gain = _gain + 2;
|
||||
};
|
||||
} forEach (units _grp);
|
||||
{
|
||||
if ((typeOf (_x select 0)) == KP_liberation_ammo_crate) then {
|
||||
_gain = _gain + 3;
|
||||
} else {
|
||||
_gain = _gain + 2;
|
||||
};
|
||||
deleteVehicle (_x select 0);
|
||||
} forEach _crateArray;
|
||||
KP_liberation_guerilla_strength = KP_liberation_guerilla_strength + _gain;
|
||||
if (KP_liberation_asymmetric_debug > 0) then {[format ["Logistic convoy %1 ambush: guerillas escaped", (_convoy select 0)], "ASYMMETRIC"] call KPLIB_fnc_log;};
|
||||
} else {
|
||||
[1] remoteExec ["asymm_notifications"];
|
||||
if (KP_liberation_asymmetric_debug > 0) then {[format ["Logistic convoy %1 ambush: guerillas defeated", (_convoy select 0)], "ASYMMETRIC"] call KPLIB_fnc_log;};
|
||||
};
|
||||
Reference in New Issue
Block a user