57 lines
1.9 KiB
Plaintext
57 lines
1.9 KiB
Plaintext
/*
|
|
File: fn_spawnBuildingSquad.sqf
|
|
Author: KP Liberation Dev Team - https://github.com/KillahPotatoes
|
|
Date: 2019-12-03
|
|
Last Update: 2020-04-05
|
|
License: MIT License - http://www.opensource.org/licenses/MIT
|
|
|
|
Description:
|
|
Spawns given amount of infantry in buildings of given sector at given building positions.
|
|
|
|
Parameter(s):
|
|
_type - Type of infantry. Either "militia" or "army" [STRING, defaults to "army"]
|
|
_amount - Amount of infantry units to spawn [NUMBER, defaults to 0]
|
|
_positions - Array of building positions [ARRAY, defaults to []]
|
|
_sector - Sector where to spawn the units [STRING, defaults to ""]
|
|
|
|
Returns:
|
|
Spawned units [ARRAY]
|
|
*/
|
|
|
|
params [
|
|
["_type", "army", [""]],
|
|
["_amount", 0, [0]],
|
|
["_positions", [], [[]]],
|
|
["_sector", "", [""]]
|
|
];
|
|
|
|
if (_sector isEqualTo "") exitWith {["Empty string given"] call BIS_fnc_error; []};
|
|
|
|
// Get classnames array
|
|
private _classnames = [[] call KPLIB_fnc_getSquadComp, militia_squad] select (_type == "militia");
|
|
|
|
// Adjust amount, if needed
|
|
if (_amount > floor ((count _positions) * GRLIB_defended_buildingpos_part)) then {
|
|
_amount = floor ((count _positions) * GRLIB_defended_buildingpos_part)
|
|
};
|
|
|
|
// Spawn units
|
|
private _grp = createGroup [GRLIB_side_enemy, true];
|
|
private _pos = markerPos _sector;
|
|
private _unit = objNull;
|
|
private _units = [];
|
|
for "_i" from 1 to _amount do {
|
|
// Create new group, if current group has 10 units
|
|
if (count (units _grp) >= 10) then {
|
|
_grp = createGroup [GRLIB_side_enemy, true];
|
|
};
|
|
|
|
_unit = [selectRandom _classnames, _pos, _grp] call KPLIB_fnc_createManagedUnit;
|
|
_unit setDir (random 360);
|
|
_unit setPos (_positions deleteAt (random (floor (count _positions) - 1)));
|
|
[_unit, _sector] spawn building_defence_ai;
|
|
_units pushBack _unit;
|
|
};
|
|
|
|
_units
|