summaryrefslogtreecommitdiffstats
path: root/Client/Functions/Client_GetRespawnAvailable.sqf
diff options
context:
space:
mode:
authorhybrid <hybrid@hybridlabs.pro>2026-06-11 19:57:23 +0300
committerhybrid <hybrid@hybridlabs.pro>2026-06-11 19:57:23 +0300
commit3533c3aa9393fc6350178b196c813dc636ec9cf6 (patch)
tree2f96a879c3935dea18e73410926b03c7eef1a751 /Client/Functions/Client_GetRespawnAvailable.sqf
downloada2wf_isladuala-3533c3aa9393fc6350178b196c813dc636ec9cf6.tar.gz
a2wf_isladuala-3533c3aa9393fc6350178b196c813dc636ec9cf6.tar.bz2
a2wf_isladuala-3533c3aa9393fc6350178b196c813dc636ec9cf6.zip
init
Diffstat (limited to 'Client/Functions/Client_GetRespawnAvailable.sqf')
-rw-r--r--Client/Functions/Client_GetRespawnAvailable.sqf58
1 files changed, 58 insertions, 0 deletions
diff --git a/Client/Functions/Client_GetRespawnAvailable.sqf b/Client/Functions/Client_GetRespawnAvailable.sqf
new file mode 100644
index 0000000..4155ee8
--- /dev/null
+++ b/Client/Functions/Client_GetRespawnAvailable.sqf
@@ -0,0 +1,58 @@
+Private ["_availableSpawn","_buildings","_checks","_deathLoc","_farps","_hq","_mobileRespawns","_range","_side","_sideText","_upgrades"];
+
+_side = _this select 0;
+_deathLoc = _this select 1;
+_sideText = str _side;
+
+//--- Base.
+_hq = (_sideText) Call GetSideHQ;
+_availableSpawn = [_hq];
+_buildings = (_sideText) Call GetSideStructures;
+_checks = [_side,Format ["WFBE_%1BARRACKSTYPE",_sideText] Call GetNamespace,_buildings] Call GetFactories;
+if (count _checks > 0) then {_availableSpawn = _availableSpawn + _checks};
+_checks = [_side,Format ["WFBE_%1LIGHTTYPE",_sideText] Call GetNamespace,_buildings] Call GetFactories;
+if (count _checks > 0) then {_availableSpawn = _availableSpawn + _checks};
+_checks = [_side,Format ["WFBE_%1COMMANDCENTERTYPE",_sideText] Call GetNamespace,_buildings] Call GetFactories;
+if (count _checks > 0) then {_availableSpawn = _availableSpawn + _checks};
+_checks = [_side,Format ["WFBE_%1HEAVYTYPE",_sideText] Call GetNamespace,_buildings] Call GetFactories;
+if (count _checks > 0) then {_availableSpawn = _availableSpawn + _checks};
+_checks = [_side,Format ["WFBE_%1AIRCRAFTTYPE",_sideText] Call GetNamespace,_buildings] Call GetFactories;
+if (count _checks > 0) then {_availableSpawn = _availableSpawn + _checks};
+_checks = [_side,Format ["WFBE_%1SERVICEPOINTTYPE",_sideText] Call GetNamespace,_buildings] Call GetFactories;
+if (count _checks > 0) then {_availableSpawn = _availableSpawn + _checks};
+
+//--- HQ is dead, but we can spawn at other buildings.
+if (!alive _hq && count _availableSpawn > 1) then {_availableSpawn = _availableSpawn - [_hq]};
+
+//--- Mobile respawn.
+if (paramMobileRespawn) then {
+ _mobileRespawns = Format ["WFBE_%1AMBULANCES",_sideText] Call GetNamespace;
+ _upgrades = (_sideText) Call GetSideUpgrades;
+ _range = (Format["WFBE_RESPAWNMOBILERANGE%1",(_upgrades select 7)] Call GetNamespace);
+ _checks = _deathLoc nearEntities[_mobileRespawns,_range];
+ if (count _checks > 0) then {
+ {
+ if (_x emptyPositions "cargo" > 0) then {
+ _availableSpawn = _availableSpawn + [_x];
+ };
+ } forEach _checks;
+ };
+};
+
+//--- MASH.
+if (paramRespawnMASH) then {
+ _farps = Format ["WFBE_%1FARP",_sideText] Call GetNamespace;
+ _upgrades = (_sideText) Call GetSideUpgrades;
+ _range = (Format["WFBE_RESPAWNMOBILERANGE%1",(_upgrades select 7)] Call GetNamespace);
+ _checks = nearestObjects [_deathLoc, [_farps], _range];
+ if (count _checks > 0) then {
+ {if (alive _x) then {_availableSpawn = _availableSpawn + [_x]}} forEach _checks;
+ };
+};
+
+//--- Camps.
+if (('WFBE_RESPAWNCAMPSMODE' Call GetNamespace) > 0) then {
+ _availableSpawn = _availableSpawn + ([_deathLoc, _side] Call GetRespawnCamps);
+};
+
+_availableSpawn \ No newline at end of file