initial files

This commit is contained in:
Samuele Lorefice
2025-05-24 16:17:33 +02:00
commit 9e023649ac
477 changed files with 118566 additions and 0 deletions

View File

@@ -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;};
};