summaryrefslogtreecommitdiffstats
path: root/Client/Functions/Client_SupportRefuel.sqf
diff options
context:
space:
mode:
authorhybrid <hybrid@hybridlabs.pro>2026-06-11 19:53:22 +0300
committerhybrid <hybrid@hybridlabs.pro>2026-06-11 19:53:22 +0300
commitc055d44dcdb87e8db49fb23e632fc086aa44cce6 (patch)
tree7ac98d865915930bebc86b36b512a859c31538e5 /Client/Functions/Client_SupportRefuel.sqf
downloada2wf_zargabad-c055d44dcdb87e8db49fb23e632fc086aa44cce6.tar.gz
a2wf_zargabad-c055d44dcdb87e8db49fb23e632fc086aa44cce6.tar.bz2
a2wf_zargabad-c055d44dcdb87e8db49fb23e632fc086aa44cce6.zip
init
Diffstat (limited to '')
-rw-r--r--Client/Functions/Client_SupportRefuel.sqf78
1 files changed, 78 insertions, 0 deletions
diff --git a/Client/Functions/Client_SupportRefuel.sqf b/Client/Functions/Client_SupportRefuel.sqf
new file mode 100644
index 0000000..25cef76
--- /dev/null
+++ b/Client/Functions/Client_SupportRefuel.sqf
@@ -0,0 +1,78 @@
+Private ['_airCoef','_artCoef','_cts','_distanceMin','_heaCoef','_i','_ligCoef','_name','_nearIsDP','_nearIsRT','_nearIsSP','_repairRange','_refTime','_spType','_supportRange','_supports','_typeRepair','_veh'];
+_veh = _this select 0;
+_supports = _this select 1;
+_typeRepair = _this select 2;
+_spType = _this select 3;
+_supportRange = 'WFBE_SUPPORTRANGE' Call GetNamespace;
+_repairRange = 'WFBE_REPAIRTRUCKRANGE' Call GetNamespace;
+
+//--- Retrieve Informations.
+_name = [typeOf _veh, 'displayName'] Call GetConfigInfo;
+_refTime = 'WFBE_SUPPORTREFUELTIME' Call GetNamespace;
+
+//--- SP?
+_nearIsSP = false;
+_nearIsDP = false;
+_nearIsRT = false;
+{
+ if ((typeOf _x) == _spType) then {_nearIsSP = true};
+ if ((typeOf _x) in WFDEPOT) then {_nearIsDP = true};
+ if ((typeOf _x) in _typeRepair) then {_nearIsRT = true};
+} forEach _supports;
+
+//--- Coefficient Vary depending on the support type.
+_airCoef = 1;
+_artCoef = 1;
+_heaCoef = 1;
+_ligCoef = 1;
+if (_nearIsRT) then {
+ _airCoef = 2.8;
+ _artCoef = 2.4;
+ _heaCoef = 2.2;
+ _ligCoef = 2.0;
+};
+if (_nearIsDP) then {
+ _airCoef = 2.3;
+ _artCoef = 2.1;
+ _heaCoef = 1.9;
+ _ligCoef = 1.7;
+};
+if (_nearIsSP) then {
+ _airCoef = 1.8;
+ _artCoef = 1.6;
+ _heaCoef = 1.4;
+ _ligCoef = 1.2;
+};
+
+//--- Class Malus.
+if (_veh isKindOf 'Air') then {_refTime = round(_refTime * (_airCoef + (1 - fuel _veh)))};
+if (_veh isKindOf 'StaticWeapon') then {_refTime = round(_refTime * (_artCoef + (1 - fuel _veh)))};
+if (_veh isKindOf 'Tank') then {_refTime = round(_refTime * (_heaCoef + (1 - fuel _veh)))};
+if (_veh isKindOf 'Car' || _veh isKindOf 'Motorcycle') then {_refTime = round(_refTime * (_ligCoef + (1 - fuel _veh)))};
+
+//--- Inform the player.
+hint parseText(Format[localize "STR_WF_INFO_Refueling",_name,_refTime]);
+
+//--- Make sure that we still have something as a support.
+_cts = 0;
+_i = 0;
+while {true} do {
+ sleep 1;
+
+ //--- Check the distance & alive.
+ _cts = 0;
+ {
+ _distanceMin = if ((typeOf _x) in _typeRepair) then {_repairRange} else {_supportRange};
+ if ((alive _x) && ((_veh distance _x) < _distanceMin)) then {_cts = _cts + 1};
+ } forEach _supports;
+
+ _i = _i + 1;
+
+ if (_cts == 0 || !(alive _veh) || (getPos _veh) select 2 > 2) exitWith {hint parseText(Format[localize "STR_WF_INFO_Refueling_Failed",_name])};
+ if (_i >= _refTime) exitWith {hint parseText(Format[localize "STR_WF_INFO_Refueling_Success",_name])};
+};
+
+//--- Refuel the vehicle?
+if (_cts != 0) then {
+ _veh setFuel 1;
+}; \ No newline at end of file