// Base_Spawn.sqf: Used to randomally generate Attacking sides FOBs & Carriers on Init // DAC Notes: [// Side 0,// Side 0,// Side 0,// Camp Type from DAC_Config_Camps 0,// Side ] // Define Globals detailsFOBs = []; detailsCarriers = []; // Geo Center of Map _coordsMapCenter = [worldSize / 2, worldsize / 2, 0]; _searchRadius = (worldSize / 2); // Minimum distance2D between team base spawns _distanceBetweenBeachFOBMax = 1000; _distanceBetweenBeachFOBMin = 500; // Define distances between opposing side base coords _distanceBetweenBasesMin = 5000; // Less than _distanceBetweenBasesMin _distanceBetweenFOBCarrierMax = 3000; // Less than _distanceBetweenFOBCarrierMax _distanceBetweenCarriersMin = 1500; _distanceBetweenFOBCarrierMin = (_distanceBetweenFOBCarrierMax / 2); // Generate a random DACZone config to be shared between both attacking side FOBs private _InfantryGroupAmount = [2,6] call BIS_fnc_randomInt; private _InfantryGroupSize = [4,8] call BIS_fnc_randomInt; private _randomZoneConfigInfantry = [_InfantryGroupAmount,_InfantryGroupSize,_InfantryGroupSize * _InfantryGroupAmount,_InfantryGroupSize]; private _WheeledGroupAmount = [2,4] call BIS_fnc_randomInt; private _WheeledGroupSize = [2,4] call BIS_fnc_randomInt; private _randomZoneConfigWheeled = [_WheeledGroupAmount,_WheeledGroupSize,_WheeledGroupSize * _WheeledGroupAmount,_WheeledGroupSize]; private _TrackedGroupAmount = [1,2] call BIS_fnc_randomInt; private _TrackedGroupSize = [1,2] call BIS_fnc_randomInt; private _randomZoneConfigTracked = [_TrackedGroupAmount,_TrackedGroupSize,_TrackedGroupSize * _TrackedGroupAmount,_TrackedGroupSize]; //private _HelicopterGroupAmount = [1,2] call BIS_fnc_randomInt; //private _HelicopterGroupSize = [1,2] call BIS_fnc_randomInt; //private _randomZoneConfigHelicopter = [_HelicopterGroupAmount,_HelicopterGroupSize,_HelicopterGroupSize * 2]; // ---- OPFOR FOB ---- // Random Coordinates private _posOPFORFOBBeach = [_coordsMapCenter, 201, _searchRadius, 0, 0, 0.5, 1] call BIS_fnc_findSafePos; private _posOPFORFOB = [_posOPFORFOBBeach, 25, _distanceBetweenBeachFOBMax, 0, 0, 0.5, 0] call BIS_fnc_findSafePos; while {((_posOPFORFOB distance2D _posOPFORFOBBeach) < _distanceBetweenBeachFOBMin)} do {_posOPFORFOB = [_posOPFORFOBBeach, 25, _distanceBetweenBeachFOBMax, 0, 0, 0.5, 0] call BIS_fnc_findSafePos;}; // FOB Marker private _markerOPFORFOB = createMarker ["markerOPFORFOB", _posOPFORFOB]; "markerOPFORFOB" setMarkerType "o_hq"; "markerOPFORFOB" setMarkerText "OPFOR FOB"; "markerOPFORFOB" setMarkerColor "colorOPFOR"; "markerOPFORFOB" setMarkerSize [0.9, 0.9]; // Respawn [east, [_posOPFORFOB select 0, _posOPFORFOB select 1, 0]] call BIS_fnc_addRespawnPosition; // Restricted Area Trigger, Alert, Action private _triggerOPFORFOBRestricted = createTrigger ["EmptyDetector", [_posOPFORFOB select 0, _posOPFORFOB select 1, 0]]; _triggerOPFORFOBRestricted setTriggerArea [200, 200, 200, false]; _triggerOPFORFOBRestricted setTriggerActivation ["ANYPLAYER", "PRESENT", true]; _triggerOPFORFOBRestricted setTriggerStatements ["thisList findIf {side _x == WEST} > -1", "[thisList] execVM 'scripts\AEGIS\Restricted\Restricted_Area_Enter.sqf'", "[] execVM 'scripts\AEGIS\Restricted\Restricted_Area_Exit.sqf'"]; // Protected Area Trigger, Alert, Action private _triggerOPFORFOBProtected = createTrigger ["EmptyDetector", [_posOPFORFOB select 0, _posOPFORFOB select 1, 0]]; _triggerOPFORFOBProtected setTriggerArea [200, 200, 200, false]; _triggerOPFORFOBProtected setTriggerType "NONE"; _triggerOPFORFOBProtected setTriggerActivation ["ANYPLAYER", "PRESENT", true]; _triggerOPFORFOBProtected setTriggerStatements ["thisList findIf {side _x == EAST} > -1", "[thisTrigger call BIS_fnc_getArea, (getPos thisTrigger), ((thisTrigger call BIS_fnc_getArea) select 1)] execVM 'scripts\AEGIS\Protected\Protected_Area_Enter.sqf'", "[(getPos thisTrigger), ((thisTrigger call BIS_fnc_getArea) select 1)] execVM 'scripts\AEGIS\Protected\Protected_Area_Exit.sqf'"]; // ---- BLUFOR FOB ---- // Random Coordinates private _posBLUFORFOBBeach = [_coordsMapCenter, 201, _searchRadius, 0, 0, 0.5, 1] call BIS_fnc_findSafePos; while {((_posBLUFORFOBBeach distance2D _posOPFORFOBBeach) < _distanceBetweenBasesMin)} do {_posBLUFORFOBBeach = [_coordsMapCenter, 201, _searchRadius, 0, 0, 0.5, 1] call BIS_fnc_findSafePos;}; private _posBLUFORFOB = [_posBLUFORFOBBeach, 25, _distanceBetweenBeachFOBMax, 0, 0, 0.5, 0] call BIS_fnc_findSafePos; while {((_posBLUFORFOB distance2D _posBLUFORFOBBeach) < _distanceBetweenBeachFOBMin) || ((_posBLUFORFOB distance2D _posOPFORFOB) < _distanceBetweenBasesMin)} do {_posBLUFORFOB = [_posBLUFORFOBBeach, 25, _distanceBetweenBeachFOBMax, 0, 0, 0.5, 0] call BIS_fnc_findSafePos;}; // FOB Marker private _markerBLUFORFOB = createMarker ["markerBLUFORFOB", _posBLUFORFOB]; "markerBLUFORFOB" setMarkerType "o_hq"; "markerBLUFORFOB" setMarkerText "BLUFOR FOB"; "markerBLUFORFOB" setMarkerColor "colorBLUFOR"; "markerBLUFORFOB" setMarkerSize [0.9, 0.9]; // Respawn [west, [_posBLUFORFOB select 0, _posBLUFORFOB select 1, 0]] call BIS_fnc_addRespawnPosition; // Restricted Area Trigger, Alert, Action private _triggerBLUFORFOBRestricted = createTrigger ["EmptyDetector", [_posBLUFORFOB select 0, _posBLUFORFOB select 1, 0]]; _triggerBLUFORFOBRestricted setTriggerArea [200, 200, 200, false]; _triggerBLUFORFOBRestricted setTriggerActivation ["ANYPLAYER", "PRESENT", true]; _triggerBLUFORFOBRestricted setTriggerStatements ["thisList findIf {side _x == EAST} > -1", "[thisList] execVM 'scripts\AEGIS\Restricted\Restricted_Area_Enter.sqf'", "[] execVM 'scripts\AEGIS\Restricted\Restricted_Area_Exit.sqf'"]; // Protected Area Trigger, Alert, Action private _triggerBLUFORFOBProtected = createTrigger ["EmptyDetector", [_posBLUFORFOB select 0, _posBLUFORFOB select 1, 0]]; _triggerBLUFORFOBProtected setTriggerArea [200, 200, 200, false]; _triggerBLUFORFOBProtected setTriggerType "NONE"; _triggerBLUFORFOBProtected setTriggerActivation ["ANYPLAYER", "PRESENT", true]; _triggerBLUFORFOBProtected setTriggerStatements ["thisList findIf {side _x == WEST} > -1", "[thisTrigger call BIS_fnc_getArea, (getPos thisTrigger), ((thisTrigger call BIS_fnc_getArea) select 1)] execVM 'scripts\AEGIS\Protected\Protected_Area_Enter.sqf'", "[(getPos thisTrigger), ((thisTrigger call BIS_fnc_getArea) select 1)] execVM 'scripts\AEGIS\Protected\Protected_Area_Exit.sqf'"]; // ---- OPFOR Carrier ---- // Random Coordinates private _posOPFORCarrier = [_posOPFORFOBBeach, 25, _distanceBetweenFOBCarrierMax, 0, 2, 1, 0] call BIS_fnc_findSafePos; while {((_posOPFORCarrier distance2D _posOPFORFOB) < _distanceBetweenFOBCarrierMin)} do {_posOPFORCarrier = [_posOPFORFOBBeach, 25, _distanceBetweenFOBCarrierMax, 0, 2, 1, 0] call BIS_fnc_findSafePos;}; // Carrier Marker private _markerOPFORCarrier = createMarker ["markerOPFORCarrier", _posOPFORCarrier]; "markerOPFORCarrier" setMarkerType "o_naval"; "markerOPFORCarrier" setMarkerText "OPFOR Carrier"; "markerOPFORCarrier" setMarkerColor "colorOPFOR"; "markerOPFORCarrier" setMarkerSize [1.05, 1.05]; // Spawn Carrier private _carrierOPFOR = createVehicle ["Land_Carrier_01_base_F",getMarkerPos "markerOPFORCarrier",[],0,"None"]; // Place, Rotate, & Surface Carrier _posOPFORCarrier = _posOPFORCarrier getPos [0,random [360,0,360]]; _carrierOPFOR setPosWorld ASLToATL _posOPFORCarrier; _carrierOPFOR setDir (random [360,0,360]); [_carrierOPFOR] call BIS_fnc_Carrier01PosUpdate; // Respawn [east, [_posOPFORCarrier select 0, _posOPFORCarrier select 1, 25]] call BIS_fnc_addRespawnPosition; // Restricted Area Trigger, Alert, Action private _triggerOPFORCarrierRestricted = createTrigger ["EmptyDetector", [_posOPFORCarrier select 0, _posOPFORCarrier select 1, 25]]; _triggerOPFORCarrierRestricted setTriggerArea [200, 200, 200, false]; _triggerOPFORCarrierRestricted setTriggerActivation ["ANYPLAYER", "PRESENT", true]; _triggerOPFORCarrierRestricted setTriggerStatements ["thisList findIf {side _x == WEST} > -1", "[thisList] execVM 'scripts\AEGIS\Restricted\Restricted_Area_Enter.sqf'", "[] execVM 'scripts\AEGIS\Restricted\Restricted_Area_Exit.sqf'"]; // Protected Area Trigger, Alert, Action private _triggerOPFORCarrierProtected = createTrigger ["EmptyDetector", [_posOPFORCarrier select 0, _posOPFORCarrier select 1, 25]]; _triggerOPFORCarrierProtected setTriggerArea [200, 200, 200, false]; _triggerOPFORCarrierProtected setTriggerActivation ["ANYPLAYER", "PRESENT", true]; _triggerOPFORCarrierProtected setTriggerStatements ["thisList findIf {side _x == EAST} > -1", "[thisTrigger call BIS_fnc_getArea, (getPos thisTrigger), ((thisTrigger call BIS_fnc_getArea) select 1)] execVM 'scripts\AEGIS\Protected\Protected_Area_Enter.sqf'", "[(getPos thisTrigger), ((thisTrigger call BIS_fnc_getArea) select 1)] execVM 'scripts\AEGIS\Protected\Protected_Area_Exit.sqf'"]; // ---- BLUFOR Carrier ---- // Random Coordinates private _posBLUFORCarrier = [_posBLUFORFOBBeach, 25, _distanceBetweenFOBCarrierMax, 0, 2, 1, 0] call BIS_fnc_findSafePos; while {((_posBLUFORCarrier distance2D _posBLUFORFOB) < _distanceBetweenFOBCarrierMin) || ((_posBLUFORCarrier distance2D _posOPFORCarrier) < _distanceBetweenCarriersMin)} do {_posBLUFORCarrier = [_posBLUFORFOBBeach, 25, _distanceBetweenFOBCarrierMax, 0, 2, 1, 0] call BIS_fnc_findSafePos;}; // Carrier Marker private _markerBLUFORCarrier = createMarker ["markerBLUFORCarrier", _posBLUFORCarrier]; "markerBLUFORCarrier" setMarkerType "o_naval"; "markerBLUFORCarrier" setMarkerText "BLUFOR Carrier"; "markerBLUFORCarrier" setMarkerColor "colorBLUFOR"; "markerBLUFORCarrier" setMarkerSize [1.05, 1.05]; // Spawn Carrier private _carrierBLUFOR = createVehicle ["Land_Carrier_01_base_F",getMarkerPos "markerBLUFORCarrier",[],0,"None"]; // Place, Rotate, & Surface Carrier _posBLUFORCarrier = _posBLUFORCarrier getPos [0,random [360,0,360]]; _carrierBLUFOR setPosWorld ASLToATL _posBLUFORCarrier; _carrierBLUFOR setDir (random [360,0,360]); [_carrierBLUFOR] call BIS_fnc_Carrier01PosUpdate; // Respawn [west, [_posBLUFORCarrier select 0, _posBLUFORCarrier select 1, 25]] call BIS_fnc_addRespawnPosition; // Restricted Area Trigger, Alert, Action private _triggerBLUFORCarrierRestricted = createTrigger ["EmptyDetector", [_posBLUFORCarrier select 0, _posBLUFORCarrier select 1, 25]]; _triggerBLUFORCarrierRestricted setTriggerArea [200, 200, 200, false]; _triggerBLUFORCarrierRestricted setTriggerActivation ["ANYPLAYER", "PRESENT", true]; _triggerBLUFORCarrierRestricted setTriggerStatements ["thisList findIf {side _x == EAST} > -1", "[thisList] execVM 'scripts\AEGIS\Restricted\Restricted_Area_Enter.sqf'", "[] execVM 'scripts\AEGIS\Restricted\Restricted_Area_Exit.sqf'"]; // Protected Area Trigger, Alert, Action private _triggerBLUFORCarrierProtected = createTrigger ["EmptyDetector", [_posBLUFORCarrier select 0, _posBLUFORCarrier select 1, 25]]; _triggerBLUFORCarrierProtected setTriggerArea [200, 200, 200, false]; _triggerBLUFORCarrierProtected setTriggerActivation ["ANYPLAYER", "PRESENT", true]; _triggerBLUFORCarrierProtected setTriggerStatements ["thisList findIf {side _x == WEST} > -1", "[thisTrigger call BIS_fnc_getArea, (getPos thisTrigger), ((thisTrigger call BIS_fnc_getArea) select 1)] execVM 'scripts\AEGIS\Protected\Protected_Area_Enter.sqf'", "[(getPos thisTrigger), ((thisTrigger call BIS_fnc_getArea) select 1)] execVM 'scripts\AEGIS\Protected\Protected_Area_Exit.sqf'"]; // Append generated markers, coords, and areas detailsFOBs append [["markerOPFORFOB", [_posOPFORFOB select 0, _posOPFORFOB select 1, 0], 200], ["markerBLUFORFOB", [_posBLUFORFOB select 0, _posBLUFORFOB select 1, 0], 200]]; detailsCarriers append [["markerOPFORCarrier", [_posOPFORCarrier select 0, _posOPFORCarrier select 1, 0], 200], ["markerBLUFORCarrier", [_posBLUFORCarrier select 0, _posBLUFORCarrier select 1, 0], 200]];