From a3a91d4f45b22fd487ecbc954ad979be5d03efdd Mon Sep 17 00:00:00 2001 From: hybrid Date: Thu, 11 Jun 2026 19:38:09 +0300 Subject: init --- Client/Functions/Client_GetRespawnAvailable.sqf | 58 +++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 Client/Functions/Client_GetRespawnAvailable.sqf (limited to 'Client/Functions/Client_GetRespawnAvailable.sqf') 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 -- cgit v1.3.1