/* "slums" static mission for Altis. Created by eraser1 Credits to "William" for creating the base. */ // For logging purposes _num = DMS_MissionCount; // Set mission side (only "bandit" is supported for now) _side = "bandit"; _pos = [15981.6,16253.2,0]; if ([_pos,DMS_StaticMinPlayerDistance] call DMS_fnc_IsPlayerNearby) exitWith {"delay"}; // Set general mission difficulty _difficulty = "hardcore"; // Define spawn locations for AI Soldiers. These will be used for the initial spawning of AI as well as reinforcements. // The center spawn location is added 3 times so at least 3 AI will spawn initially at the center location, and so that future reinforcements are more likely to spawn at the center. _AISoldierSpawnLocations = [ [16082.4,16192,0.79], [16072.2,16191.5,0], [16076.5,16189.9,0], [15941,16289.9,0.33], [16021.3,16241.4,0.31], [16040.2,16254.3,0.17], [16046,16253.5,0.09], [16065.6,16250.7,0], [16080.2,16248.5,0], [16098.5,16242.6,0], [16069.4,16206.7,3.6], [16058,16207.3,4] ]; // Create AI _AICount = 20 + (round (random 5)); _group = [ _AISoldierSpawnLocations+[_pos,_pos,_pos], // Pass the regular spawn locations as well as the center pos 3x _AICount, _difficulty, "random", _side ] call DMS_fnc_SpawnAIGroup_MultiPos; _staticGuns = [ [ [15914.6,16284.2,0], [15919.9,16271.2,0], [16087.8,16229.4,1.4], [16088.7,16192.4,0.15], [16100.4,16225.1,0], [16019.2,16216.5,2.93] ], _group, "assault", _difficulty, "bandit", "random" ] call DMS_fnc_SpawnAIStaticMG; // Define the classnames and locations where the crates can spawn (at least 2, since we're spawning 2 crates) _crateClasses_and_Positions = [ [[16018,16210,0.61],"I_CargoNet_01_ammo_F"], [[15916,16262,0],"I_CargoNet_01_ammo_F"], [[15975,16223.5,0.2],"I_CargoNet_01_ammo_F"], [[16014,16242.5,4.5],"I_CargoNet_01_ammo_F"], [[16026,16226.5,0.72],"I_CargoNet_01_ammo_F"] ]; { deleteVehicle (nearestObject _x); // Make sure to remove any previous crates. } forEach _crateClasses_and_Positions; // Shuffle the list _crateClasses_and_Positions = _crateClasses_and_Positions call ExileClient_util_array_shuffle; // Create Crates _crate0 = [_crateClasses_and_Positions select 0 select 1, _crateClasses_and_Positions select 0 select 0] call DMS_fnc_SpawnCrate; _crate1 = [_crateClasses_and_Positions select 1 select 1, _crateClasses_and_Positions select 1 select 0] call DMS_fnc_SpawnCrate; // Disable smoke on the crates so that the players have to search for them >:D { _x setVariable ["DMS_AllowSmoke", false]; } forEach [_crate0,_crate1]; /* // Don't think an armed AI vehicle fit the idea behind the mission. You're welcome to uncomment this if you want. _veh = [ [ [_pos,100,random 360] call DMS_fnc_SelectOffsetPos, _pos ], _group, "assault", _difficulty, _side ] call DMS_fnc_SpawnAIVehicle; */ // Define mission-spawned AI Units _missionAIUnits = [ _group // We only spawned the single group for this mission ]; // Define the group reinforcements _groupReinforcementsInfo = [ [ _group, // pass the group [ [ -1, // Let's limit number of units instead... 0 ], [ 100, // Maximum 100 units can be given as reinforcements. 0 ] ], [ 240, // About a 4 minute delay between reinforcements. diag_tickTime ], _AISoldierSpawnLocations, "random", _difficulty, _side, "reinforce", [ 10, // Reinforcements will only trigger if there's fewer than 10 members left in the group 7 // 7 reinforcement units per wave. ] ] ]; // Define mission-spawned objects and loot values _missionObjs = [ _staticGuns, // static gun(s). Note, we don't add the base itself because it already spawns on server start. [], [[_crate0,[50,100,2]],[_crate1,[3,150,15]]] ]; // Define Mission Start message _msgStart = ['#FFFF00', "A large group of mercenaries are trying to hide in some slums! They were seen stockpiling multiple crates..."]; // Define Mission Win message _msgWIN = ['#0080ff',"Convicts have successfully rooted out the mercenaries and claimed the caches for themselves!"]; // Define Mission Lose message _msgLOSE = ['#FF0000',"The mercenaries got spooked and left..."]; // Define mission name (for map marker and logging) _missionName = "Slums Base"; // Create Markers _markers = [ _pos, _missionName, _difficulty ] call DMS_fnc_CreateMarker; _circle = _markers select 1; _circle setMarkerDir 20; _circle setMarkerSize [150,50]; _time = diag_tickTime; // Parse and add mission info to missions monitor _added = [ _pos, [ [ "kill", _group ], [ "playerNear", [_pos,100] ] ], _groupReinforcementsInfo, [ _time, DMS_StaticMissionTimeOut call DMS_fnc_SelectRandomVal ], _missionAIUnits, _missionObjs, [_missionName,_msgWIN,_msgLOSE], _markers, _side, _difficulty, [] ] call DMS_fnc_AddMissionToMonitor_Static; // Check to see if it was added correctly, otherwise delete the stuff if !(_added) exitWith { diag_log format ["DMS ERROR :: Attempt to set up mission %1 with invalid parameters for DMS_fnc_AddMissionToMonitor_Static! Deleting mission objects and resetting DMS_MissionCount.",_missionName]; _cleanup = []; { _cleanup pushBack _x; } forEach _missionAIUnits; _cleanup pushBack ((_missionObjs select 0)+(_missionObjs select 1)); { _cleanup pushBack (_x select 0); } foreach (_missionObjs select 2); _cleanup call DMS_fnc_CleanUp; // Delete the markers directly {deleteMarker _x;} forEach _markers; // Reset the mission count DMS_MissionCount = DMS_MissionCount - 1; }; // Notify players [_missionName,_msgStart] call DMS_fnc_BroadcastMissionStatus; if (DMS_DEBUG) then { (format ["MISSION: (%1) :: Mission #%2 started at %3 with %4 AI units and %5 difficulty at time %6",_missionName,_num,_pos,_AICount,_difficulty,_time]) call DMS_fnc_DebugLog; };