Files
KPLibSumava/kp_liberation.brf_sumava/scripts/client/misc/resupply_manager.sqf
Samuele Lorefice 9e023649ac initial files
2025-05-24 16:17:33 +02:00

81 lines
2.9 KiB
Plaintext

private [ "_resupply_dist", "_repair_increment", "_repair_speed", "_repair_altitude", "_veh", "_repaired", "_rearmed", "_refueled", "_average_damage", "_average_fuel", "_screenmsg", "_rearm_time", "_refuel_amount", "_rearm_ticker" ];
_repair_amount = 0.01;
_repair_speed = 2;
_repair_altitude = 2;
_resupply_dist = 30;
_rearm_time = 60;
_refuel_amount = 0.02;
_rearm_ticker = 0;
while { true } do {
_repaired = false;
_rearmed = false;
_refueled = false;
_average_damage = 0;
_average_fuel = 0;
_screenmsg = "";
_veh = vehicle player;
if ( _veh != player ) then {
if ( effectiveCommander _veh == player ) then {
if ( (speed _veh < _repair_speed) && (((getPosATL _veh) select 2) < _repair_altitude) ) then {
if ( count ( (getpos _veh) nearEntities [ vehicle_repair_sources , _resupply_dist] ) > 0 ) then {
if ( damage _veh > 0 ) then {
_repaired = true;
_average_damage = (damage _veh) - _repair_amount;
if ( _average_damage < 0 ) then { _average_damage = 0 };
_veh setDamage _average_damage;
};
};
if ( ( count ( (getpos _veh) nearEntities [ vehicle_rearm_sources , _resupply_dist] ) > 0 ) && ( _rearm_ticker < _rearm_time ) ) then {
_rearmed = true;
_rearm_ticker = _rearm_ticker + 1;
if ( _rearm_ticker >= _rearm_time ) then {
[_veh, 1] remoteExecCall ["setVehicleAmmo", _veh];
};
};
if ( count ( (getpos _veh) nearEntities [ vehicle_refuel_sources , _resupply_dist] ) > 0 ) then {
if ( fuel _veh < ( 1 - _refuel_amount ) ) then {
_refueled = true;
[_veh, (fuel _veh + _refuel_amount)] remoteExecCall ["setFuel", _veh];
};
};
} else {
_rearm_ticker = 0;
};
} else {
_rearm_ticker = 0;
};
} else {
_rearm_ticker = 0;
};
if ( _repaired ) then {
_screenmsg = format [ "%1 : %2%3", localize "STR_REPAIRING", round ( 100 - (_average_damage * 100) ), "%" ];
};
if ( _rearmed ) then {
if ( _repaired ) then {
_screenmsg = format [ "%1 - ", _screenmsg ];
};
_screenmsg = format [ "%1%2", _screenmsg, format [ localize "STR_REARMING", _rearm_time - _rearm_ticker ] ];
};
if ( _refueled ) then {
if ( _repaired || _rearmed ) then {
_screenmsg = format [ "%1 - ", _screenmsg ];
};
_screenmsg = format [ "%1%2", _screenmsg, format [ "%1 : %2%3", localize "STR_REFUELING", round ( (fuel _veh) * 100 ), "%" ] ];
};
titleText [ _screenmsg, "PLAIN DOWN" ];
sleep 1;
};