Jump to content

[Release] Wicked AI 2.2.0


f3cuk

Recommended Posts

Is there going to be the feature to set the mission time in the mission in the near future? I have a large custom mission that's quite hard and I don't want it to timeout as fast as the other missions. It's also on an island so people need time to prep and get to it to start the assault when it comes up. The rest of the missions 30 minutes timeout and the range cancelling timeout feature will do.

Link to comment
Share on other sites

wai_mission_spread = 750; // make missions spawn this far apart from one another and other markers

Does this include all markers? So like trader cities, static locations on the map where I've set markers?

 

Also is there a easy way to change the marker names? I'm renaming the missions into something more plausible for 2 years after the zombie apocalypse, since I doubt Ikea is still around.

 

Can I just change this?

 

_mission = [_position,"Hard","Lunch break Convoy","MainBandit",true] call mission_init;

 

 

Found a fault in the bandit medi_camp mission too. The on screen text is for the hero one.

 

"Survivors have taken control of the medical supply camp!", // mission success
"Survivors were unable to capture the medical supply camp"

 

 

May want to consider setting an option to turn off all mission static guns as well, the M2 machine guns can single shot a little birds engine at 1K, I've seen this a lot in the past, so unless the markers are larger or something it'd be really good to easily turn them off. I'm just commenting them out for now.

Link to comment
Share on other sites

I've been going through the missions and you've got easy missions with random skill level, meaning players could end up with an expert patrol, medium missions with a single easy patrol and a easy mission with three medium skill level patrols, wtf, how are players supposed to use the [Easy] name in the marker as any kind of guide when the actual difficulty of the missions is nowhere near relative to each other. I'm going to completely overhaul the missions over the next few days to 1. Fit in with the Epoch storyline of being 2 years after the zombie apocalypse and when humanity is starting to regain some control on the world and 2. So they make more sense in both skill level and loot. I know you guys have been working away hard on the core mechanics which is awesome, just think the missions need some love now.

Link to comment
Share on other sites

Oh my..
 
Easy -> No 50 cals
Medium -> 50 cals
Hard -> Lots of 50 cals + possible reinforcements
Extreme -> Mission impossible

I do agree the missions need work (which is also what we have been calling out for) and can be further enhanced. But i think you are a bit overdramatic about the skill levels used, they hardly make a difference (you have more chance of making an impact on difficulty by setting fixed weapon types). Removing the 50 cals seems like a bad idea since it will make missions way too easy for experienced players, you can compensate that with more AI but that will also make your server work that much harder. You'd be better leaving them in and setting a static skill level for them so their aim sucks and they won´t hit, also it´s not like there isnt a big fat marker on the map that players might want to avoid being airborn.
 
That being said, we welcome any suggestions and you can always do pull requests on github to get them in. (But Ikea is already too cult to change :P)
 

Does this include all markers? So like trader cities, static locations on the map where I've set markers?
 
Can I just change this?

 
No it will only include default trader markers for Chernarus and Napf. You can add custom made markers to wai_mission_markers and enabling "wai_avoid_missions", we'll probably rename that in the future to a more global name.
 
Yes you can.
 

Is there going to be the feature to set the mission time in the mission in the near future? I have a large custom mission that's quite hard and I don't want it to timeout as fast as the other missions. It's also on an island so people need time to prep and get to it to start the assault when it comes up. The rest of the missions 30 minutes timeout and the range cancelling timeout feature will do.


Missions wont timeout as long as there are players near. They should be able to make it to any place on the map within 30 minutes. If you wanna give them a little more time you might wanna add a sleep timer with a message on top saying something like "Rumor has it bandits are planning an ivasion of Skalisty", this should give players an X amount of minutes extra to prepare.

Edit: Better way. Simply add wai_mission_timeout = [MIN,MAX]; just below the private functions to overwrite the default mission time and then revert it back to normal at the end of the file like this.

 


if(isServer) then {

	private 		["_complete","_crate_type","_mission","_position","_crate","_baserunover","_baserunover1","_baserunover2"];

	wai_mission_timeout 	= [1800,3600]; //time each missions takes to despawn if inactive 30-60 minutes

	_position		= [30] call find_position;
	_mission		= [_position,"Easy","Medical Supply Camp","MainBandit",true] call mission_init;
	
	diag_log 		format["WAI: [Mission:[Bandit] Medical Supply Camp]: Starting... %1",_position];

	//Setup the crate
	_crate_type 	= crates_small call BIS_fnc_selectRandom;
	_crate 			= createVehicle [_crate_type,[(_position select 0) + 15,(_position select 1) + 5,0], [], 0, "CAN_COLLIDE"];

	//Medical Supply Camp
	_baserunover1 	= createVehicle ["Land_fortified_nest_big",[(_position select 0) +15, (_position select 1) -20,0],[], 0, "CAN_COLLIDE"];
	_baserunover2 	= createVehicle ["Land_Fort_Watchtower",[(_position select 0) +25, (_position select 1) +10,0],[], 0, "CAN_COLLIDE"];
	_baserunover 	= [_baserunover1,_baserunover2];

	{ _x setVectorUp surfaceNormal position  _x; } count _baserunover;

	//Troops
	[[_position select 0,_position select 1,0],4,"Easy","Random",4,"Random","Hero","Random","Hero",_mission] call spawn_group;
	[[_position select 0,_position select 1,0],4,"Easy","Random",4,"Random","Hero","Random","Hero",_mission] call spawn_group;
	[[_position select 0,_position select 1,0],4,"Random","Random",4,"Random","Hero","Random","Hero",_mission] call spawn_group;

	//Condition
	_complete = [
		[_mission,_crate],				// mission number and crate
		["kill"],						// ["crate"], or ["kill"], or ["assassinate", _unitGroup],
		[_baserunover], 				// cleanup objects
		"A soldier squad have set up a medical re-supply camp! Check your map for the location!",	// mission announcement
		"Survivors have taken control of the medical supply camp!",									// mission success
		"Survivors were unable to capture the medical supply camp"									// mission fail
	] call mission_winorfail;

	if(_complete) then {
		[_crate,0,0,[70,crate_items_medical],0] call dynamic_crate;
	};

	diag_log format["WAI: [Mission:[Bandit] Medical Supply Camp]: Ended at %1",_position];

	wai_mission_timeout = [900,1800]; //time each missions takes to despawn if inactive 15-30 minutes
	
	b_missionrunning = false;
};

Link to comment
Share on other sites

I think you underestimate how effective those skills are. That being said I've modified mine, my skill levels are as such:

 

 

ai_skill_extreme  = [["aimingAccuracy",0.80], ["aimingShake",0.80], ["aimingSpeed",0.80], ["endurance",0.80], ["spotDistance",0.80], ["spotTime",0.80], ["courage",0.80], ["reloadSpeed",0.80], ["commanding",0.80], ["general",0.80]];  // Epic
ai_skill_hard  = [["aimingAccuracy",0.60], ["aimingShake",0.60], ["aimingSpeed",0.60], ["endurance",0.60], ["spotDistance",0.60], ["spotTime",0.60], ["courage",0.60], ["reloadSpeed",0.60], ["commanding",0.60], ["general",0.60]];  // Hard
ai_skill_medium  = [["aimingAccuracy",0.40], ["aimingShake",0.40], ["aimingSpeed",0.40], ["endurance",0.40], ["spotDistance",0.40], ["spotTime",0.40], ["courage",0.40], ["reloadSpeed",0.40], ["commanding",0.40], ["general",0.40]]; // Medium
ai_skill_easy   = [["aimingAccuracy",0.20], ["aimingShake",0.20], ["aimingSpeed",0.20], ["endurance",0.20], ["spotDistance",0.20], ["spotTime",0.20], ["courage",0.20], ["reloadSpeed",0.20], ["commanding",0.20], ["general",0.20]]; // Easy

 

To give you an idea, Extreme missions I've had players whinging about the AI virtually aimbotting them, one shot killing them with sniper rifles, compared with easy missions where yeah, they walk all over them. But on my server the easy missions are meant to be for solo or maybe a team of two players who are relatively new and not well setup. Remember the AI are fast to flank and tend to overwhelm players pretty quickly.

 

I've removed all static guns from all missions on my server and instead added the MAAWS, RPG18 and Stinger to the normal weapons they can have, and players still get killed very often when attempting the hard or extreme missions. Occasionally they even get a random AI with a launcher on an easy mission, the good thing is it's usually just one and they can easily see it on his back and dispatch him quickly. The Ultra Mega Doom difficulty mission I created has things like patrolling tanks, triggered choppers (including two gunships, a littlebird with guns and rockets and then a Mi24D).

 

The problem you get with the static M2's is people will get shot down just flying near it like a K away and that tends to piss off players I prefer to increase the complexity of my missions with the difficulty, easy missions have no more than 2 patrols of 4 guys set to easy, pretty easy for a solo player to deal with. Medium missions have 3+ patrols set to medium, there's almost no way a player can dispatch all of them before the patrols move behind cover and start to flank, you need help and if they have AT weapons good luck using a vehicle. Hard missions I have at least 4 patrols, helicopter reinforcements and vehicle patrols as well as they can have AT and AA weapons (chance based as they're in with the normal weapons list), Extreme is exactly that, 5+ patrols set to Extreme with patrolling vehicles, helicopters including a gunship at the end and more troops dropped. But that's just my way of working it, I know it's more linear but player at least know what to expect going in.

 

Thanks for the mission timeout idea too, that's perfect!

Link to comment
Share on other sites

This is the idea of a ridiculous mission I made to spawn on an island away from everything.

 

 

// Super Villains Lair
 
private ["_position","_box","_missiontimeout","_cleanmission","_playerPresent","_starttime","_currenttime","_cleanunits","_rndnum"];
 
//_position = safepos call BIS_fnc_findSafePos;
_positionarray = [[16679.9, 17683.6,0]];
_position = _positionarray call BIS_fnc_selectRandom;
diag_log format["WAI: Super Villains Lair Started At %1",_position];
 
_vehclass = bandit_vehicles call BIS_fnc_selectRandom;
_vehclass2 = super_villain_vehicles call BIS_fnc_selectRandom;
_vehclass3 = super_villain_choppers call BIS_fnc_selectRandom;
 
_veh = createVehicle [_vehclass,[(_position select 0) + 110,(_position select 1) - 10,0], [], 0, "CAN_COLLIDE"];
_vehdir = round(random 360);
_veh setDir _vehdir;
clearWeaponCargoGlobal _veh;
clearMagazineCargoGlobal _veh;
_veh setVariable ["ObjectID","1",true];
PVDZE_serverObjectMonitor set [count PVDZE_serverObjectMonitor,_veh];
_objPosition = getPosATL _veh;
 
diag_log format["WAI: Mission Super Villains Lair spawned a %1",_vehclass];
 
_veh2 = createVehicle [_vehclass2,[(_position select 0) + 110,(_position select 1) - 20,0], [], 0, "CAN_COLLIDE"];
_veh2 setDir _vehdir;
clearWeaponCargoGlobal _veh2;
clearMagazineCargoGlobal _veh2;
_veh2 setVariable ["ObjectID","1",true];
PVDZE_serverObjectMonitor set [count PVDZE_serverObjectMonitor,_veh2];
_objPosition2 = getPosATL _veh2;
 
diag_log format["WAI: Mission Super Villains Lair spawned a %1",_vehclass2];
 
_veh3 = createVehicle [_vehclass3,[(_position select 0) + 110,(_position select 1) - 0,0], [], 0, "CAN_COLLIDE"];
_veh3 setDir _vehdir;
clearWeaponCargoGlobal _veh3;
clearMagazineCargoGlobal _veh3;
_veh3 setVariable ["ObjectID","1",true];
PVDZE_serverObjectMonitor set [count PVDZE_serverObjectMonitor,_veh3];
 
diag_log format["WAI: Mission Super Villains Lair spawned a %1",_vehclass3];
 
//Large Gun Box
_box = createVehicle ["BAF_VehicleBox",[(_position select 0),(_position select 1) + 10, 15.8], [], 0, "CAN_COLLIDE"];
[_box] call Gunbox_super_villain;
 
// Super Villains Lair
_baserunover = createVehicle ["land_aif_hotel_bio",[(_position select 0), (_position select 1),0],[], 0, "CAN_COLLIDE"];
_baserunover1 = createVehicle ["land_fortified_nest_big",[(_position select 0) + 45, (_position select 1),-0.2],[], 0, "CAN_COLLIDE"];
_baserunover2 = createVehicle ["land_fortified_nest_big",[(_position select 0), (_position select 1) - 45,-0.2],[], 0, "CAN_COLLIDE"];
_baserunover3 = createVehicle ["land_fortified_nest_big",[(_position select 0), (_position select 1) + 45,-0.2],[], 0, "CAN_COLLIDE"];
_baserunover4 = createVehicle ["land_fortified_nest_big",[(_position select 0) - 45, (_position select 1),-0.2],[], 0, "CAN_COLLIDE"];
_baserunover5 = createVehicle ["Land_Fort_Watchtower",[(_position select 0) - 45, (_position select 1) + 45,-0.2],[], 0, "CAN_COLLIDE"];
_baserunover6 = createVehicle ["Land_Fort_Watchtower",[(_position select 0) + 45, (_position select 1) + 45,-0.2],[], 0, "CAN_COLLIDE"];
_baserunover7 = createVehicle ["Land_Fort_Watchtower",[(_position select 0) - 45, (_position select 1) - 45,-0.2],[], 0, "CAN_COLLIDE"];
_baserunover8 = createVehicle ["Land_Fort_Watchtower",[(_position select 0) + 45, (_position select 1) - 45,-0.2],[], 0, "CAN_COLLIDE"];
_baserunover9 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) + 35, (_position select 1) - 10,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover10 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) + 35, (_position select 1) - 20,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover11 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) + 35, (_position select 1) - 30,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover12 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) + 35, (_position select 1) + 10,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover13 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) + 35, (_position select 1) + 20,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover14 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) + 35, (_position select 1) + 30,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover15 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) - 35, (_position select 1) - 10,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover16 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) - 35, (_position select 1) - 20,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover17 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) - 35, (_position select 1) - 30,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover18 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) - 35, (_position select 1) + 10,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover19 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) - 35, (_position select 1) + 20,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover20 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) - 35, (_position select 1) + 30,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover21 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) + 10, (_position select 1) - 35,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover22 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) + 20, (_position select 1) - 35,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover23 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) + 30, (_position select 1) - 35,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover24 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) - 10, (_position select 1) - 35,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover25 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) - 20, (_position select 1) - 35,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover26 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) - 30, (_position select 1) - 35,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover27 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) + 10, (_position select 1) + 35,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover28 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) + 20, (_position select 1) + 35,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover29 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) + 30, (_position select 1) + 35,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover30 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) - 10, (_position select 1) + 35,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover31 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) - 20, (_position select 1) + 35,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover32 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) - 30, (_position select 1) + 35,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover33 = createVehicle ["land_fortified_nest_big",[(_position select 0) + 100, (_position select 1) + 100,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover34 = createVehicle ["Land_HBarrier5",[(_position select 0) + 100, (_position select 1) + 90,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover35 = createVehicle ["Land_HBarrier5",[(_position select 0) + 90, (_position select 1) + 100,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover36 = createVehicle ["land_fortified_nest_big",[(_position select 0) + 100, (_position select 1) + 40,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover37 = createVehicle ["Land_HBarrier5",[(_position select 0) + 100, (_position select 1) + 30,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover38 = createVehicle ["Land_HBarrier5",[(_position select 0) + 100, (_position select 1) + 50,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover39 = createVehicle ["land_fortified_nest_big",[(_position select 0) + 100, (_position select 1) - 40,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover40 = createVehicle ["Land_HBarrier5",[(_position select 0) + 100, (_position select 1) - 30,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover41 = createVehicle ["Land_HBarrier5",[(_position select 0) + 100, (_position select 1) - 55,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover42 = createVehicle ["land_fortified_nest_big",[(_position select 0) + 100, (_position select 1) - 100,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover43 = createVehicle ["Land_HBarrier5",[(_position select 0) + 100, (_position select 1) - 90,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover44 = createVehicle ["Land_HBarrier5",[(_position select 0) + 90, (_position select 1) - 100,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover45 = createVehicle ["land_fortified_nest_big",[(_position select 0) + 40, (_position select 1) - 100,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover46 = createVehicle ["Land_HBarrier5",[(_position select 0) + 50, (_position select 1) - 100,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover47 = createVehicle ["Land_HBarrier5",[(_position select 0) + 30, (_position select 1) - 100,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover48 = createVehicle ["land_fortified_nest_big",[(_position select 0) - 40, (_position select 1) - 100,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover49 = createVehicle ["Land_HBarrier5",[(_position select 0) - 30, (_position select 1) - 100,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover50 = createVehicle ["Land_HBarrier5",[(_position select 0) - 50, (_position select 1) - 100,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover51 = createVehicle ["land_fortified_nest_big",[(_position select 0) - 100, (_position select 1) - 100,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover52 = createVehicle ["Land_HBarrier5",[(_position select 0) - 90, (_position select 1) - 100,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover53 = createVehicle ["Land_HBarrier5",[(_position select 0) - 100, (_position select 1) - 90,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover54 = createVehicle ["land_fortified_nest_big",[(_position select 0) - 100, (_position select 1) - 40,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover55 = createVehicle ["Land_HBarrier5",[(_position select 0) - 100, (_position select 1) - 50,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover56 = createVehicle ["Land_HBarrier5",[(_position select 0) - 100, (_position select 1) - 30,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover57 = createVehicle ["land_fortified_nest_big",[(_position select 0) - 100, (_position select 1) + 40,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover58 = createVehicle ["Land_HBarrier5",[(_position select 0) - 100, (_position select 1) + 50,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover59 = createVehicle ["Land_HBarrier5",[(_position select 0) - 100, (_position select 1) + 30,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover60 = createVehicle ["land_fortified_nest_big",[(_position select 0) - 100, (_position select 1) + 100,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover61 = createVehicle ["Land_HBarrier5",[(_position select 0) - 100, (_position select 1) + 90,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover62 = createVehicle ["Land_HBarrier5",[(_position select 0) - 90, (_position select 1) + 100,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover63 = createVehicle ["land_fortified_nest_big",[(_position select 0) - 40, (_position select 1) + 100,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover64 = createVehicle ["Land_HBarrier5",[(_position select 0) - 30, (_position select 1) + 100,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover65 = createVehicle ["Land_HBarrier5",[(_position select 0) - 50, (_position select 1) + 100,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover66 = createVehicle ["land_fortified_nest_big",[(_position select 0) + 40, (_position select 1) + 100,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover67 = createVehicle ["Land_HBarrier5",[(_position select 0) + 50, (_position select 1) + 100,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover68 = createVehicle ["Land_HBarrier5",[(_position select 0) - 30, (_position select 1) + 100,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover69 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) - 200, (_position select 1) + 200,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover70 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) - 150, (_position select 1) + 200,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover71 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) - 100, (_position select 1) + 200,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover72 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) - 50, (_position select 1) + 200,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover73 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 0, (_position select 1) + 200,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover74 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 50, (_position select 1) + 200,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover75 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 100, (_position select 1) + 200,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover76 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 150, (_position select 1) + 200,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover77 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 200, (_position select 1) + 200,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover78 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 200, (_position select 1) + 150,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover79 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 200, (_position select 1) + 100,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover80 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 200, (_position select 1) + 50,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover81 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 200, (_position select 1) + 0,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover82 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 200, (_position select 1) - 50,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover83 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 200, (_position select 1) - 100,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover84 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 200, (_position select 1) - 150,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover85 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 200, (_position select 1) - 200,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover86 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 150, (_position select 1) - 200,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover87 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 100, (_position select 1) - 200,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover88 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 50, (_position select 1) - 200,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover89 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 0, (_position select 1) - 200,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover90 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) - 50, (_position select 1) - 200,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover91 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) - 100, (_position select 1) - 200,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover92 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) - 150, (_position select 1) - 200,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover93 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) - 200, (_position select 1) - 200,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover94 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) - 200, (_position select 1) - 150,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover95 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) - 200, (_position select 1) - 100,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover96 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) - 200, (_position select 1) - 50,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover97 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) - 200, (_position select 1) - 0,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover98 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) - 200, (_position select 1) + 50,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover99 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) - 200, (_position select 1) + 100,-0.1],[], 0, "CAN_COLLIDE"];
_baserunover100 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) - 200, (_position select 1) + 150,-0.1],[], 0, "CAN_COLLIDE"];
 
_baserunover setDir 90;
_baserunover1 setDir 270;
_baserunover2 setDir 0;
_baserunover3 setDir 180;
_baserunover4 setDir 90;
_baserunover5 setDir 0;
_baserunover6 setDir 90;
_baserunover7 setDir 0;
_baserunover8 setDir 180;
_baserunover9 setDir 90;
_baserunover10 setDir 90;
_baserunover11 setDir 90;
_baserunover12 setDir 90;
_baserunover13 setDir 90;
_baserunover14 setDir 90;
_baserunover15 setDir 90;
_baserunover16 setDir 90;
_baserunover17 setDir 90;
_baserunover18 setDir 90;
_baserunover19 setDir 90;
_baserunover20 setDir 90;
_baserunover21 setDir 0;
_baserunover22 setDir 0;
_baserunover23 setDir 0;
_baserunover24 setDir 0;
_baserunover25 setDir 0;
_baserunover26 setDir 0;
_baserunover27 setDir 0;
_baserunover28 setDir 0;
_baserunover29 setDir 0;
_baserunover30 setDir 0;
_baserunover31 setDir 0;
_baserunover32 setDir 0;
_baserunover33 setDir 180;
_baserunover34 setDir 90;
_baserunover35 setDir 0;
_baserunover36 setDir 270;
_baserunover37 setDir 90;
_baserunover38 setDir 90;
_baserunover39 setDir 270;
_baserunover40 setDir 90;
_baserunover41 setDir 90;
_baserunover42 setDir 0;
_baserunover43 setDir 90;
_baserunover44 setDir 0;
_baserunover45 setDir 0;
_baserunover46 setDir 0;
_baserunover47 setDir 0;
_baserunover48 setDir 0;
_baserunover49 setDir 0;
_baserunover50 setDir 0;
_baserunover51 setDir 0;
_baserunover52 setDir 0;
_baserunover53 setDir 270;
_baserunover54 setDir 90;
_baserunover55 setDir 270;
_baserunover56 setDir 270;
_baserunover57 setDir 90;
_baserunover58 setDir 270;
_baserunover59 setDir 0;
_baserunover60 setDir 180;
_baserunover61 setDir 270;
_baserunover62 setDir 0;
_baserunover63 setDir 180;
_baserunover64 setDir 0;
_baserunover65 setDir 0;
_baserunover66 setDir 180;
_baserunover67 setDir 0;
_baserunover68 setDir 0;
_baserunover69 setDir 180;
_baserunover70 setDir 180;
_baserunover71 setDir 180;
_baserunover72 setDir 180;
_baserunover73 setDir 180;
_baserunover74 setDir 180;
_baserunover75 setDir 180;
_baserunover76 setDir 180;
_baserunover77 setDir 180;
_baserunover78 setDir 270;
_baserunover79 setDir 270;
_baserunover80 setDir 270;
_baserunover81 setDir 270;
_baserunover82 setDir 270;
_baserunover83 setDir 270;
_baserunover84 setDir 270;
_baserunover85 setDir 0;
_baserunover86 setDir 0;
_baserunover87 setDir 0;
_baserunover88 setDir 0;
_baserunover89 setDir 0;
_baserunover90 setDir 0;
_baserunover91 setDir 0;
_baserunover92 setDir 0;
_baserunover93 setDir 0;
_baserunover94 setDir 90;
_baserunover95 setDir 90;
_baserunover96 setDir 90;
_baserunover97 setDir 90;
_baserunover98 setDir 90;
_baserunover99 setDir 90;
_baserunover100 setDir 90;
 
//_baserunover setVectorUp surfaceNormal position _baserunover;
_baserunover1 setVectorUp surfaceNormal position _baserunover1;
_baserunover2 setVectorUp surfaceNormal position _baserunover2;
_baserunover3 setVectorUp surfaceNormal position _baserunover3;
_baserunover4 setVectorUp surfaceNormal position _baserunover4;
_baserunover5 setVectorUp surfaceNormal position _baserunover5;
_baserunover6 setVectorUp surfaceNormal position _baserunover6;
_baserunover7 setVectorUp surfaceNormal position _baserunover7;
_baserunover8 setVectorUp surfaceNormal position _baserunover8;
_baserunover9 setVectorUp surfaceNormal position _baserunover9;
_baserunover10 setVectorUp surfaceNormal position _baserunover10;
_baserunover11 setVectorUp surfaceNormal position _baserunover11;
_baserunover12 setVectorUp surfaceNormal position _baserunover12;
_baserunover13 setVectorUp surfaceNormal position _baserunover13;
_baserunover14 setVectorUp surfaceNormal position _baserunover14;
_baserunover15 setVectorUp surfaceNormal position _baserunover15;
_baserunover16 setVectorUp surfaceNormal position _baserunover16;
_baserunover17 setVectorUp surfaceNormal position _baserunover17;
_baserunover18 setVectorUp surfaceNormal position _baserunover18;
_baserunover19 setVectorUp surfaceNormal position _baserunover19;
_baserunover20 setVectorUp surfaceNormal position _baserunover20;
_baserunover21 setVectorUp surfaceNormal position _baserunover21;
_baserunover22 setVectorUp surfaceNormal position _baserunover22;
_baserunover23 setVectorUp surfaceNormal position _baserunover23;
_baserunover24 setVectorUp surfaceNormal position _baserunover24;
_baserunover25 setVectorUp surfaceNormal position _baserunover25;
_baserunover26 setVectorUp surfaceNormal position _baserunover26;
_baserunover27 setVectorUp surfaceNormal position _baserunover27;
_baserunover28 setVectorUp surfaceNormal position _baserunover28;
_baserunover29 setVectorUp surfaceNormal position _baserunover29;
_baserunover30 setVectorUp surfaceNormal position _baserunover30;
_baserunover31 setVectorUp surfaceNormal position _baserunover31;
_baserunover32 setVectorUp surfaceNormal position _baserunover32;
_baserunover33 setVectorUp surfaceNormal position _baserunover33;
_baserunover34 setVectorUp surfaceNormal position _baserunover34;
_baserunover35 setVectorUp surfaceNormal position _baserunover35;
_baserunover36 setVectorUp surfaceNormal position _baserunover36;
_baserunover37 setVectorUp surfaceNormal position _baserunover37;
_baserunover38 setVectorUp surfaceNormal position _baserunover38;
_baserunover39 setVectorUp surfaceNormal position _baserunover39;
_baserunover40 setVectorUp surfaceNormal position _baserunover40;
_baserunover41 setVectorUp surfaceNormal position _baserunover41;
_baserunover42 setVectorUp surfaceNormal position _baserunover42;
_baserunover43 setVectorUp surfaceNormal position _baserunover43;
_baserunover44 setVectorUp surfaceNormal position _baserunover44;
_baserunover45 setVectorUp surfaceNormal position _baserunover45;
_baserunover46 setVectorUp surfaceNormal position _baserunover46;
_baserunover47 setVectorUp surfaceNormal position _baserunover47;
_baserunover48 setVectorUp surfaceNormal position _baserunover48;
_baserunover49 setVectorUp surfaceNormal position _baserunover49;
_baserunover50 setVectorUp surfaceNormal position _baserunover50;
_baserunover51 setVectorUp surfaceNormal position _baserunover51;
_baserunover52 setVectorUp surfaceNormal position _baserunover52;
_baserunover53 setVectorUp surfaceNormal position _baserunover53;
_baserunover54 setVectorUp surfaceNormal position _baserunover54;
_baserunover55 setVectorUp surfaceNormal position _baserunover55;
_baserunover56 setVectorUp surfaceNormal position _baserunover56;
_baserunover57 setVectorUp surfaceNormal position _baserunover57;
_baserunover58 setVectorUp surfaceNormal position _baserunover58;
_baserunover59 setVectorUp surfaceNormal position _baserunover59;
_baserunover60 setVectorUp surfaceNormal position _baserunover60;
_baserunover61 setVectorUp surfaceNormal position _baserunover61;
_baserunover62 setVectorUp surfaceNormal position _baserunover62;
_baserunover63 setVectorUp surfaceNormal position _baserunover63;
_baserunover64 setVectorUp surfaceNormal position _baserunover64;
_baserunover65 setVectorUp surfaceNormal position _baserunover65;
_baserunover66 setVectorUp surfaceNormal position _baserunover66;
_baserunover67 setVectorUp surfaceNormal position _baserunover67;
_baserunover68 setVectorUp surfaceNormal position _baserunover68;
_baserunover69 setVectorUp surfaceNormal position _baserunover69;
_baserunover70 setVectorUp surfaceNormal position _baserunover70;
_baserunover71 setVectorUp surfaceNormal position _baserunover71;
_baserunover72 setVectorUp surfaceNormal position _baserunover72;
_baserunover73 setVectorUp surfaceNormal position _baserunover73;
_baserunover74 setVectorUp surfaceNormal position _baserunover74;
_baserunover75 setVectorUp surfaceNormal position _baserunover75;
_baserunover76 setVectorUp surfaceNormal position _baserunover76;
_baserunover77 setVectorUp surfaceNormal position _baserunover77;
_baserunover78 setVectorUp surfaceNormal position _baserunover78;
_baserunover79 setVectorUp surfaceNormal position _baserunover79;
_baserunover80 setVectorUp surfaceNormal position _baserunover80;
_baserunover81 setVectorUp surfaceNormal position _baserunover81;
_baserunover82 setVectorUp surfaceNormal position _baserunover82;
_baserunover83 setVectorUp surfaceNormal position _baserunover83;
_baserunover84 setVectorUp surfaceNormal position _baserunover84;
_baserunover85 setVectorUp surfaceNormal position _baserunover85;
_baserunover86 setVectorUp surfaceNormal position _baserunover86;
_baserunover87 setVectorUp surfaceNormal position _baserunover87;
_baserunover88 setVectorUp surfaceNormal position _baserunover88;
_baserunover89 setVectorUp surfaceNormal position _baserunover89;
_baserunover90 setVectorUp surfaceNormal position _baserunover90;
_baserunover91 setVectorUp surfaceNormal position _baserunover91;
_baserunover92 setVectorUp surfaceNormal position _baserunover92;
_baserunover93 setVectorUp surfaceNormal position _baserunover93;
_baserunover94 setVectorUp surfaceNormal position _baserunover94;
_baserunover95 setVectorUp surfaceNormal position _baserunover95;
_baserunover96 setVectorUp surfaceNormal position _baserunover96;
_baserunover97 setVectorUp surfaceNormal position _baserunover97;
_baserunover98 setVectorUp surfaceNormal position _baserunover98;
_baserunover99 setVectorUp surfaceNormal position _baserunover99;
_baserunover100 setVectorUp surfaceNormal position _baserunover100;
 
_rndnum = round (random 3) + 4;
[[(_position select 0) + 60, (_position select 1) + 60, 0],6,"extreme","Random",4,"Random","gsc_eco_stalker_mask_fred","Random",true] call spawn_group;
[[(_position select 0) - 60, (_position select 1) + 60, 0],6,"extreme","Random",4,"Random","gsc_eco_stalker_mask_camo","Random",true] call spawn_group;
[[(_position select 0) - 60, (_position select 1) - 60, 0],6,"extreme","Random",4,"Random","gsc_eco_stalker_mask_neutral","Random",true] call spawn_group;
[[(_position select 0) + 60, (_position select 1) - 60, 0],6,"extreme","Random",4,"Random","gsc_eco_stalker_head_fred","Random",true] call spawn_group;
[[(_position select 0) + 20, (_position select 1) + 0, 0],6,"extreme","Random",4,"Random","gsc_eco_stalker_head_neutral","Random",true] call spawn_group;
 
//The Super Villain Himself
[[(_position select 0) + 5,(_position select 1) + 10, 0],1,"extreme","BAF_AS50_scoped_DZ",4,"Random","gsc_eco_stalker_head_duty","Random",true] call spawn_group;
 
// Turrets 
[[[(_position select 0) + 55, (_position select 1) - 55, 0],[(_position select 0) - 55, (_position select 1) - 55, 0]],"M2StaticMG","hard","gsc_eco_stalker_mask_fred",1,2,"Random","Random",true] call spawn_static;
[[[(_position select 0) - 55, (_position select 1) + 55, 0],[(_position select 0) + 55, (_position select 1) + 55, 0]],"M2StaticMG","hard","gsc_eco_stalker_mask_camo",1,2,"Random","Random",true] call spawn_static;
[[[(_position select 0) + 55, (_position select 1), 0],[(_position select 0) - 55, (_position select 1), 0]],"TOW_Tripod","hard","gsc_eco_stalker_mask_neutral","Random",2,"Random","Random",true] call spawn_static;
[[[(_position select 0), (_position select 1) + 55, 0],[(_position select 0), (_position select 1) - 55, 0]],"TOW_Tripod","hard","gsc_eco_stalker_head_fred","Random",2,"Random","Random",true] call spawn_static;
[[[(_position select 0) - 13, (_position select 1) + 15, 15.77],[(_position select 0) + 21, (_position select 1) - 23, 15.77]],"Searchlight","hard","gsc_eco_stalker_mask_fred","Random",2,"Random","Random",true] call spawn_static;
[[[(_position select 0) - 13, (_position select 1) - 23, 15.77],[(_position select 0) + 21, (_position select 1) + 15, 15.77]],"Stinger_Pod","hard","gsc_eco_stalker_head_fred","Random",2,"Random","Random",true] call spawn_static;
 
[[(_position select 0) + 80, (_position select 1) + 70, 0],[(_position select 0) + 20, (_position select 1) - 70, 0],200,2,"Offroad_DSHKM_Gue_DZE","hard"] spawn vehicle_patrol;
[[(_position select 0) + 80, (_position select 1) + 70, 0],[(_position select 0) + 30, (_position select 1) - 70, 0],200,2,"UAZ_SPG9_INS","hard"] spawn vehicle_patrol;
[[(_position select 0) + 80, (_position select 1) + 70, 0],[(_position select 0) + 40, (_position select 1) - 70, 0],200,2,"BRDM2_INS","hard"] spawn vehicle_patrol;
[[(_position select 0) + 80, (_position select 1) + 70, 0],[(_position select 0) + 50, (_position select 1) - 70, 0],200,2,"T34","hard"] spawn vehicle_patrol;
 
[[(_position select 0), (_position select 1), 0],[(_position select 0) + 1100, (_position select 1) + 1100, 150],400,"UH1H_TK_EP1",5,"hard","Random",4,"Random","gsc_eco_stalker_mask_fred","Random",true] spawn heli_para;
[[(_position select 0), (_position select 1), 0],[(_position select 0) + 1050, (_position select 1) + 1050, 150],300,"UH1H_TK_EP1",5,"hard","Random",4,"Random","gsc_eco_stalker_mask_camo","Random",true] spawn heli_para;
[[(_position select 0), (_position select 1), 0],[(_position select 0) + 1000, (_position select 1) + 1000, 150],200,"AH6J_EP1",0,"hard","Random",4,"Random","Random","Random",true] spawn heli_para;
[[(_position select 0), (_position select 1), 0],[(_position select 0) + 1000, (_position select 1) + 1000, 150],100,"Mi24_V",4,"hard","Random",4,"Random","gsc_eco_stalker_mask_neutral","Random",true] spawn heli_para;
 
[_position,"[ultra Mega Doom] Super Villains Lair"] execVM "\z\addons\dayz_server\WAI\missions\compile\markers.sqf";
 
[nil,nil,rTitleText,"The Super Villain has setup a new lair from where he plans to take over Napf, go and stop him!", "PLAIN",10] call RE;
 
_missiontimeout = true;
_cleanmission = false;
_playerPresent = false;
_starttime = floor(time);
 
while {_missiontimeout} do {
 
sleep 5;
 
_currenttime = floor(time);
{
 
if((isPlayer _x) && (_x distance _position <= 150)) then {
_playerPresent = true
};
 
} forEach playableUnits;
 
if (_currenttime - _starttime >= wai_mission_timeout) then {
_cleanmission = true;
};
 
if ((_playerPresent) || (_cleanmission)) then {
_missiontimeout = false;
};
};
if (_playerPresent) then {
 
[_veh,[_vehdir,_objPosition],_vehclass,true,"0"] call custom_publish;
[_veh2,[_vehdir,_objPosition2],_vehclass2,true,"0"] call custom_publish;
[_veh3,[_vehdir,_objPosition3],_vehclass3,true,"0"] call custom_publish;
 
waitUntil
{
sleep 5;
_playerPresent = false;
{
if((isPlayer _x) && (_x distance _position <= 30)) then {
_playerPresent = true
};
} forEach playableUnits;
 
(_playerPresent)
};
 
[nil,nil,rTitleText,"The Super Villain has been taken out and his evil plans foiled!", "PLAIN",10] call RE;
Sleep 30;
[nil,nil,rTitleText,"Warning: 15 minutes left to loot the Super Villains Lair until it despawns", "PLAIN",10] call RE;
Sleep 600;
[nil,nil,rTitleText,"Warning: 5 minutes left to loot the Super Villains Lair until it despawns", "PLAIN",10] call RE;
Sleep 300;
deleteVehicle _box;
deleteVehicle _baserunover;
deleteVehicle _baserunover1;
deleteVehicle _baserunover2;
deleteVehicle _baserunover3;
deleteVehicle _baserunover4;
deleteVehicle _baserunover5;
deleteVehicle _baserunover6;
deleteVehicle _baserunover7;
deleteVehicle _baserunover8;
deleteVehicle _baserunover9;
deleteVehicle _baserunover10;
deleteVehicle _baserunover11;
deleteVehicle _baserunover12;
deleteVehicle _baserunover13;
deleteVehicle _baserunover14;
deleteVehicle _baserunover15;
deleteVehicle _baserunover16;
deleteVehicle _baserunover17;
deleteVehicle _baserunover18;
deleteVehicle _baserunover19;
deleteVehicle _baserunover20;
deleteVehicle _baserunover21;
deleteVehicle _baserunover22;
deleteVehicle _baserunover23;
deleteVehicle _baserunover24;
deleteVehicle _baserunover25;
deleteVehicle _baserunover26;
deleteVehicle _baserunover27;
deleteVehicle _baserunover28;
deleteVehicle _baserunover29;
deleteVehicle _baserunover30;
deleteVehicle _baserunover31;
deleteVehicle _baserunover32;
deleteVehicle _baserunover33;
deleteVehicle _baserunover34;
deleteVehicle _baserunover35;
deleteVehicle _baserunover36;
deleteVehicle _baserunover37;
deleteVehicle _baserunover38;
deleteVehicle _baserunover39;
deleteVehicle _baserunover40;
deleteVehicle _baserunover41;
deleteVehicle _baserunover42;
deleteVehicle _baserunover43;
deleteVehicle _baserunover44;
deleteVehicle _baserunover45;
deleteVehicle _baserunover46;
deleteVehicle _baserunover47;
deleteVehicle _baserunover48;
deleteVehicle _baserunover49;
deleteVehicle _baserunover50;
deleteVehicle _baserunover51;
deleteVehicle _baserunover52;
deleteVehicle _baserunover53;
deleteVehicle _baserunover54;
deleteVehicle _baserunover55;
deleteVehicle _baserunover56;
deleteVehicle _baserunover57;
deleteVehicle _baserunover58;
deleteVehicle _baserunover59;
deleteVehicle _baserunover60;
deleteVehicle _baserunover61;
deleteVehicle _baserunover62;
deleteVehicle _baserunover63;
deleteVehicle _baserunover64;
deleteVehicle _baserunover65;
deleteVehicle _baserunover66;
deleteVehicle _baserunover67;
deleteVehicle _baserunover68;
deleteVehicle _baserunover69;
deleteVehicle _baserunover70;
deleteVehicle _baserunover71;
deleteVehicle _baserunover72;
deleteVehicle _baserunover73;
deleteVehicle _baserunover74;
deleteVehicle _baserunover75;
deleteVehicle _baserunover76;
deleteVehicle _baserunover77;
deleteVehicle _baserunover78;
deleteVehicle _baserunover79;
deleteVehicle _baserunover80;
deleteVehicle _baserunover81;
deleteVehicle _baserunover82;
deleteVehicle _baserunover83;
deleteVehicle _baserunover84;
deleteVehicle _baserunover85;
deleteVehicle _baserunover86;
deleteVehicle _baserunover87;
deleteVehicle _baserunover88;
deleteVehicle _baserunover89;
deleteVehicle _baserunover90;
deleteVehicle _baserunover91;
deleteVehicle _baserunover92;
deleteVehicle _baserunover93;
deleteVehicle _baserunover94;
deleteVehicle _baserunover95;
deleteVehicle _baserunover96;
deleteVehicle _baserunover97;
deleteVehicle _baserunover98;
deleteVehicle _baserunover99;
deleteVehicle _baserunover100;
 
} else {
 
clean_running_mission = true;
deleteVehicle _veh;
deleteVehicle _veh2;
deleteVehicle _veh3;
deleteVehicle _box;
deleteVehicle _baserunover;
deleteVehicle _baserunover1;
deleteVehicle _baserunover2;
deleteVehicle _baserunover3;
deleteVehicle _baserunover4;
deleteVehicle _baserunover5;
deleteVehicle _baserunover6;
deleteVehicle _baserunover7;
deleteVehicle _baserunover8;
deleteVehicle _baserunover9;
deleteVehicle _baserunover10;
deleteVehicle _baserunover11;
deleteVehicle _baserunover12;
deleteVehicle _baserunover13;
deleteVehicle _baserunover14;
deleteVehicle _baserunover15;
deleteVehicle _baserunover16;
deleteVehicle _baserunover17;
deleteVehicle _baserunover18;
deleteVehicle _baserunover19;
deleteVehicle _baserunover20;
deleteVehicle _baserunover21;
deleteVehicle _baserunover22;
deleteVehicle _baserunover23;
deleteVehicle _baserunover24;
deleteVehicle _baserunover25;
deleteVehicle _baserunover26;
deleteVehicle _baserunover27;
deleteVehicle _baserunover28;
deleteVehicle _baserunover29;
deleteVehicle _baserunover30;
deleteVehicle _baserunover31;
deleteVehicle _baserunover32;
deleteVehicle _baserunover33;
deleteVehicle _baserunover34;
deleteVehicle _baserunover35;
deleteVehicle _baserunover36;
deleteVehicle _baserunover37;
deleteVehicle _baserunover38;
deleteVehicle _baserunover39;
deleteVehicle _baserunover40;
deleteVehicle _baserunover41;
deleteVehicle _baserunover42;
deleteVehicle _baserunover43;
deleteVehicle _baserunover44;
deleteVehicle _baserunover45;
deleteVehicle _baserunover46;
deleteVehicle _baserunover47;
deleteVehicle _baserunover48;
deleteVehicle _baserunover49;
deleteVehicle _baserunover50;
deleteVehicle _baserunover51;
deleteVehicle _baserunover52;
deleteVehicle _baserunover53;
deleteVehicle _baserunover54;
deleteVehicle _baserunover55;
deleteVehicle _baserunover56;
deleteVehicle _baserunover57;
deleteVehicle _baserunover58;
deleteVehicle _baserunover59;
deleteVehicle _baserunover60;
deleteVehicle _baserunover61;
deleteVehicle _baserunover62;
deleteVehicle _baserunover63;
deleteVehicle _baserunover64;
deleteVehicle _baserunover65;
deleteVehicle _baserunover66;
deleteVehicle _baserunover67;
deleteVehicle _baserunover68;
deleteVehicle _baserunover69;
deleteVehicle _baserunover70;
deleteVehicle _baserunover71;
deleteVehicle _baserunover72;
deleteVehicle _baserunover73;
deleteVehicle _baserunover74;
deleteVehicle _baserunover75;
deleteVehicle _baserunover76;
deleteVehicle _baserunover77;
deleteVehicle _baserunover78;
deleteVehicle _baserunover79;
deleteVehicle _baserunover80;
deleteVehicle _baserunover81;
deleteVehicle _baserunover82;
deleteVehicle _baserunover83;
deleteVehicle _baserunover84;
deleteVehicle _baserunover85;
deleteVehicle _baserunover86;
deleteVehicle _baserunover87;
deleteVehicle _baserunover88;
deleteVehicle _baserunover89;
deleteVehicle _baserunover90;
deleteVehicle _baserunover91;
deleteVehicle _baserunover92;
deleteVehicle _baserunover93;
deleteVehicle _baserunover94;
deleteVehicle _baserunover95;
deleteVehicle _baserunover96;
deleteVehicle _baserunover97;
deleteVehicle _baserunover98;
deleteVehicle _baserunover99;
deleteVehicle _baserunover100;
 
{
_cleanunits = _x getVariable "missionclean";
 
if (!isNil "_cleanunits") then {
switch (_cleanunits) do {
case "ground" :  {ai_ground_units = (ai_ground_units -1);};
case "air" :     {ai_air_units = (ai_air_units -1);};
case "vehicle" : {ai_vehicle_units = (ai_vehicle_units -1);};
case "static" :  {ai_emplacement_units = (ai_emplacement_units -1);};
};
 
deleteVehicle _x;
sleep 0.05;
};
 
} forEach allUnits;
 
[nil,nil,rTitleText,"The survivors were unable to stop the Super Villain, soon he will enslave you all!", "PLAIN",10] call RE;
 
};
 
diag_log format["WAI: Super Villains Lair ended at %1",_position];
missionrunning = false;

 

 

At the moment it's setup for the old mission system and I've been trying to work out how to easily make all the buildings and turrets etc despawn is it's completed or not but the turrets don't disappear. Yeah I know it's like horribly coded, I'm still learning how to code. Just kind of stumbling through trying to make new content. Feel free to use it / clean it up / make it better if you like, it's very good for militarised servers, even with the best military tech available in ARMA 2 it's a challenge to complete for anything less than 4 people. I made a custom box for it too with special loot, launchers, gold, all kinds of stuff. My server kind of has a theme, there's four humanity based traders, Hero and Bandit just have the pretty normal Epoch vehicles, Super Hero and Super Villain have the military stuff and they require much higher and lower humanity from players and the really good military tech needs gems to purchase. The theme I'm setting up though is that the Super Villain isn't just an arms dealer, he's also controlling all the bandits and trying to take over Napf, but that's just me, I figured if I'm going to have missions I'd like them to at least be plausible, since my server focuses on realism as much as is reasonable on a Overpoch server :P

 

BTW you need roughly a 200m x 200m area for that mission to spawn too.

Link to comment
Share on other sites

There you go

 

if(isServer) then {

    private         ["_complete","_crate_type","_mission","_position","_crate","_baserunover","_baserunover0","_baserunover1","_baserunover2","_baserunover3","_baserunover4","_baserunover5","_baserunover6","_baserunover7","_baserunover8","_baserunover9","_baserunover10","_baserunover11","_baserunover12","_baserunover13","_baserunover14","_baserunover15","_baserunover16","_baserunover17","_baserunover18","_baserunover19","_baserunover20","_baserunover21","_baserunover22","_baserunover23","_baserunover24","_baserunover25","_baserunover26","_baserunover27","_baserunover28","_baserunover29","_baserunover30","_baserunover31","_baserunover32","_baserunover33","_baserunover34","_baserunover35","_baserunover36","_baserunover37","_baserunover38","_baserunover39","_baserunover40","_baserunover41","_baserunover42","_baserunover43","_baserunover44","_baserunover45","_baserunover46","_baserunover47","_baserunover48","_baserunover49","_baserunover50","_baserunover51","_baserunover52","_baserunover53","_baserunover54","_baserunover55","_baserunover56","_baserunover57","_baserunover58","_baserunover59","_baserunover60","_baserunover61","_baserunover62","_baserunover63","_baserunover64","_baserunover65","_baserunover66","_baserunover67","_baserunover68","_baserunover69","_baserunover70","_baserunover71","_baserunover72","_baserunover73","_baserunover74","_baserunover75","_baserunover76","_baserunover77","_baserunover78","_baserunover79","_baserunover80","_baserunover81","_baserunover82","_baserunover83","_baserunover84","_baserunover85","_baserunover86","_baserunover87","_baserunover88","_baserunover89","_baserunover90","_baserunover91","_baserunover92","_baserunover93","_baserunover94","_baserunover95","_baserunover96","_baserunover97","_baserunover98","_baserunover99","_baserunover100"];

    wai_mission_timeout     = [3600,5400]; //time each missions takes to despawn if inactive 60-90 minutes

    _position        = [200] call find_position;
    _mission        = [_position,"Extreme","Super Villains Lair","MainBandit",true] call mission_init;
    
    diag_log         format["WAI: [Mission:[Bandit] Super Villains Lair]: Starting... %1",_position];

    //Setup the crate
    _crate_type     = crates_large call BIS_fnc_selectRandom;
    _crate             = createVehicle [_crate_type,[(_position select 0),(_position select 1) + 10,15.8], [], 0, "CAN_COLLIDE"];

    //Super Villains Lair
    _baserunover0 = createVehicle ["land_aif_hotel_bio",[(_position select 0), (_position select 1),0],[], 0, "CAN_COLLIDE"];
    _baserunover1 = createVehicle ["land_fortified_nest_big",[(_position select 0) + 45, (_position select 1),-0.2],[], 0, "CAN_COLLIDE"];
    _baserunover2 = createVehicle ["land_fortified_nest_big",[(_position select 0), (_position select 1) - 45,-0.2],[], 0, "CAN_COLLIDE"];
    _baserunover3 = createVehicle ["land_fortified_nest_big",[(_position select 0), (_position select 1) + 45,-0.2],[], 0, "CAN_COLLIDE"];
    _baserunover4 = createVehicle ["land_fortified_nest_big",[(_position select 0) - 45, (_position select 1),-0.2],[], 0, "CAN_COLLIDE"];
    _baserunover5 = createVehicle ["Land_Fort_Watchtower",[(_position select 0) - 45, (_position select 1) + 45,-0.2],[], 0, "CAN_COLLIDE"];
    _baserunover6 = createVehicle ["Land_Fort_Watchtower",[(_position select 0) + 45, (_position select 1) + 45,-0.2],[], 0, "CAN_COLLIDE"];
    _baserunover7 = createVehicle ["Land_Fort_Watchtower",[(_position select 0) - 45, (_position select 1) - 45,-0.2],[], 0, "CAN_COLLIDE"];
    _baserunover8 = createVehicle ["Land_Fort_Watchtower",[(_position select 0) + 45, (_position select 1) - 45,-0.2],[], 0, "CAN_COLLIDE"];
    _baserunover9 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) + 35, (_position select 1) - 10,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover10 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) + 35, (_position select 1) - 20,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover11 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) + 35, (_position select 1) - 30,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover12 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) + 35, (_position select 1) + 10,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover13 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) + 35, (_position select 1) + 20,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover14 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) + 35, (_position select 1) + 30,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover15 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) - 35, (_position select 1) - 10,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover16 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) - 35, (_position select 1) - 20,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover17 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) - 35, (_position select 1) - 30,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover18 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) - 35, (_position select 1) + 10,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover19 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) - 35, (_position select 1) + 20,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover20 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) - 35, (_position select 1) + 30,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover21 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) + 10, (_position select 1) - 35,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover22 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) + 20, (_position select 1) - 35,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover23 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) + 30, (_position select 1) - 35,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover24 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) - 10, (_position select 1) - 35,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover25 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) - 20, (_position select 1) - 35,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover26 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) - 30, (_position select 1) - 35,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover27 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) + 10, (_position select 1) + 35,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover28 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) + 20, (_position select 1) + 35,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover29 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) + 30, (_position select 1) + 35,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover30 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) - 10, (_position select 1) + 35,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover31 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) - 20, (_position select 1) + 35,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover32 = createVehicle ["Base_WarfareBBarrier10xTall",[(_position select 0) - 30, (_position select 1) + 35,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover33 = createVehicle ["land_fortified_nest_big",[(_position select 0) + 100, (_position select 1) + 100,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover34 = createVehicle ["Land_HBarrier5",[(_position select 0) + 100, (_position select 1) + 90,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover35 = createVehicle ["Land_HBarrier5",[(_position select 0) + 90, (_position select 1) + 100,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover36 = createVehicle ["land_fortified_nest_big",[(_position select 0) + 100, (_position select 1) + 40,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover37 = createVehicle ["Land_HBarrier5",[(_position select 0) + 100, (_position select 1) + 30,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover38 = createVehicle ["Land_HBarrier5",[(_position select 0) + 100, (_position select 1) + 50,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover39 = createVehicle ["land_fortified_nest_big",[(_position select 0) + 100, (_position select 1) - 40,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover40 = createVehicle ["Land_HBarrier5",[(_position select 0) + 100, (_position select 1) - 30,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover41 = createVehicle ["Land_HBarrier5",[(_position select 0) + 100, (_position select 1) - 55,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover42 = createVehicle ["land_fortified_nest_big",[(_position select 0) + 100, (_position select 1) - 100,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover43 = createVehicle ["Land_HBarrier5",[(_position select 0) + 100, (_position select 1) - 90,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover44 = createVehicle ["Land_HBarrier5",[(_position select 0) + 90, (_position select 1) - 100,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover45 = createVehicle ["land_fortified_nest_big",[(_position select 0) + 40, (_position select 1) - 100,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover46 = createVehicle ["Land_HBarrier5",[(_position select 0) + 50, (_position select 1) - 100,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover47 = createVehicle ["Land_HBarrier5",[(_position select 0) + 30, (_position select 1) - 100,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover48 = createVehicle ["land_fortified_nest_big",[(_position select 0) - 40, (_position select 1) - 100,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover49 = createVehicle ["Land_HBarrier5",[(_position select 0) - 30, (_position select 1) - 100,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover50 = createVehicle ["Land_HBarrier5",[(_position select 0) - 50, (_position select 1) - 100,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover51 = createVehicle ["land_fortified_nest_big",[(_position select 0) - 100, (_position select 1) - 100,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover52 = createVehicle ["Land_HBarrier5",[(_position select 0) - 90, (_position select 1) - 100,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover53 = createVehicle ["Land_HBarrier5",[(_position select 0) - 100, (_position select 1) - 90,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover54 = createVehicle ["land_fortified_nest_big",[(_position select 0) - 100, (_position select 1) - 40,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover55 = createVehicle ["Land_HBarrier5",[(_position select 0) - 100, (_position select 1) - 50,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover56 = createVehicle ["Land_HBarrier5",[(_position select 0) - 100, (_position select 1) - 30,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover57 = createVehicle ["land_fortified_nest_big",[(_position select 0) - 100, (_position select 1) + 40,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover58 = createVehicle ["Land_HBarrier5",[(_position select 0) - 100, (_position select 1) + 50,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover59 = createVehicle ["Land_HBarrier5",[(_position select 0) - 100, (_position select 1) + 30,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover60 = createVehicle ["land_fortified_nest_big",[(_position select 0) - 100, (_position select 1) + 100,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover61 = createVehicle ["Land_HBarrier5",[(_position select 0) - 100, (_position select 1) + 90,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover62 = createVehicle ["Land_HBarrier5",[(_position select 0) - 90, (_position select 1) + 100,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover63 = createVehicle ["land_fortified_nest_big",[(_position select 0) - 40, (_position select 1) + 100,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover64 = createVehicle ["Land_HBarrier5",[(_position select 0) - 30, (_position select 1) + 100,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover65 = createVehicle ["Land_HBarrier5",[(_position select 0) - 50, (_position select 1) + 100,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover66 = createVehicle ["land_fortified_nest_big",[(_position select 0) + 40, (_position select 1) + 100,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover67 = createVehicle ["Land_HBarrier5",[(_position select 0) + 50, (_position select 1) + 100,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover68 = createVehicle ["Land_HBarrier5",[(_position select 0) - 30, (_position select 1) + 100,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover69 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) - 200, (_position select 1) + 200,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover70 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) - 150, (_position select 1) + 200,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover71 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) - 100, (_position select 1) + 200,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover72 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) - 50, (_position select 1) + 200,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover73 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 0, (_position select 1) + 200,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover74 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 50, (_position select 1) + 200,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover75 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 100, (_position select 1) + 200,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover76 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 150, (_position select 1) + 200,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover77 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 200, (_position select 1) + 200,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover78 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 200, (_position select 1) + 150,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover79 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 200, (_position select 1) + 100,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover80 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 200, (_position select 1) + 50,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover81 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 200, (_position select 1) + 0,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover82 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 200, (_position select 1) - 50,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover83 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 200, (_position select 1) - 100,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover84 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 200, (_position select 1) - 150,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover85 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 200, (_position select 1) - 200,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover86 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 150, (_position select 1) - 200,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover87 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 100, (_position select 1) - 200,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover88 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 50, (_position select 1) - 200,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover89 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) + 0, (_position select 1) - 200,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover90 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) - 50, (_position select 1) - 200,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover91 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) - 100, (_position select 1) - 200,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover92 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) - 150, (_position select 1) - 200,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover93 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) - 200, (_position select 1) - 200,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover94 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) - 200, (_position select 1) - 150,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover95 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) - 200, (_position select 1) - 100,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover96 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) - 200, (_position select 1) - 50,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover97 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) - 200, (_position select 1) - 0,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover98 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) - 200, (_position select 1) + 50,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover99 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) - 200, (_position select 1) + 100,-0.1],[], 0, "CAN_COLLIDE"];
    _baserunover100 = createVehicle ["MAP_fortified_nest_small",[(_position select 0) - 200, (_position select 1) + 150,-0.1],[], 0, "CAN_COLLIDE"];
    
    _baserunover     = [_baserunover0,_baserunover1,_baserunover2,_baserunover3,_baserunover4,_baserunover5,_baserunover6,_baserunover7,_baserunover8,_baserunover9,_baserunover10,_baserunover11,_baserunover12,_baserunover13,_baserunover14,_baserunover15,_baserunover16,_baserunover17,_baserunover18,_baserunover19,_baserunover20,_baserunover21,_baserunover22,_baserunover23,_baserunover24,_baserunover25,_baserunover26,_baserunover27,_baserunover28,_baserunover29,_baserunover30,_baserunover31,_baserunover32,_baserunover33,_baserunover34,_baserunover35,_baserunover36,_baserunover37,_baserunover38,_baserunover39,_baserunover40,_baserunover41,_baserunover42,_baserunover43,_baserunover44,_baserunover45,_baserunover46,_baserunover47,_baserunover48,_baserunover49,_baserunover50,_baserunover51,_baserunover52,_baserunover53,_baserunover54,_baserunover55,_baserunover56,_baserunover57,_baserunover58,_baserunover59,_baserunover60,_baserunover61,_baserunover62,_baserunover63,_baserunover64,_baserunover65,_baserunover66,_baserunover67,_baserunover68,_baserunover69,_baserunover70,_baserunover71,_baserunover72,_baserunover73,_baserunover74,_baserunover75,_baserunover76,_baserunover77,_baserunover78,_baserunover79,_baserunover80,_baserunover81,_baserunover82,_baserunover83,_baserunover84,_baserunover85,_baserunover86,_baserunover87,_baserunover88,_baserunover89,_baserunover90,_baserunover91,_baserunover92,_baserunover93,_baserunover94,_baserunover95,_baserunover96,_baserunover97,_baserunover98,_baserunover99,_baserunover100];
    _directions        = [90,270,0,180,90,0,90,0,180,90,90,90,90,90,90,90,90,90,90,90,90,0,0,0,0,0,0,0,0,0,0,0,0,180,90,0,270,90,90,270,90,90,0,90,0,0,0,0,0,0,0,0,0,270,90,270,270,90,270,0,180,270,0,180,0,0,180,0,0,180,180,180,180,180,180,180,180,180,270,270,270,270,270,270,270,0,0,0,0,0,0,0,0,0,90,90,90,90,90,90,90];
    
    { _x setDir (_directions select _forEachIndex) } forEach _baserunover;

    { _x setVectorUp surfaceNormal position  _x; } count _baserunover;

    //Troops
    _rndnum = round (random 3) + 4;
    [[(_position select 0) + 60, (_position select 1) + 60, 0],6,"extreme","Random",4,"Random","gsc_eco_stalker_mask_fred","Random",true] call spawn_group;
    [[(_position select 0) - 60, (_position select 1) + 60, 0],6,"extreme","Random",4,"Random","gsc_eco_stalker_mask_camo","Random",true] call spawn_group;
    [[(_position select 0) - 60, (_position select 1) - 60, 0],6,"extreme","Random",4,"Random","gsc_eco_stalker_mask_neutral","Random",true] call spawn_group;
    [[(_position select 0) + 60, (_position select 1) - 60, 0],6,"extreme","Random",4,"Random","gsc_eco_stalker_head_fred","Random",true] call spawn_group;
    [[(_position select 0) + 20, (_position select 1) + 0, 0],6,"extreme","Random",4,"Random","gsc_eco_stalker_head_neutral","Random",true] call spawn_group;
    
    //The Super Villain Himself
    [[(_position select 0) + 5,(_position select 1) + 10, 0],1,"extreme","BAF_AS50_scoped_DZ",4,"Random","gsc_eco_stalker_head_duty","Random",true] call spawn_group;
    
    // Turrets
    [[[(_position select 0) + 55, (_position select 1) - 55, 0],[(_position select 0) - 55, (_position select 1) - 55, 0]],"M2StaticMG","hard","gsc_eco_stalker_mask_fred",1,2,"Random","Random",true] call spawn_static;
    [[[(_position select 0) - 55, (_position select 1) + 55, 0],[(_position select 0) + 55, (_position select 1) + 55, 0]],"M2StaticMG","hard","gsc_eco_stalker_mask_camo",1,2,"Random","Random",true] call spawn_static;
    [[[(_position select 0) + 55, (_position select 1), 0],[(_position select 0) - 55, (_position select 1), 0]],"TOW_Tripod","hard","gsc_eco_stalker_mask_neutral","Random",2,"Random","Random",true] call spawn_static;
    [[[(_position select 0), (_position select 1) + 55, 0],[(_position select 0), (_position select 1) - 55, 0]],"TOW_Tripod","hard","gsc_eco_stalker_head_fred","Random",2,"Random","Random",true] call spawn_static;
    [[[(_position select 0) - 13, (_position select 1) + 15, 15.77],[(_position select 0) + 21, (_position select 1) - 23, 15.77]],"Searchlight","hard","gsc_eco_stalker_mask_fred","Random",2,"Random","Random",true] call spawn_static;
    [[[(_position select 0) - 13, (_position select 1) - 23, 15.77],[(_position select 0) + 21, (_position select 1) + 15, 15.77]],"Stinger_Pod","hard","gsc_eco_stalker_head_fred","Random",2,"Random","Random",true] call spawn_static;
    
    [[(_position select 0) + 80, (_position select 1) + 70, 0],[(_position select 0) + 20, (_position select 1) - 70, 0],200,2,"Offroad_DSHKM_Gue_DZE","hard"] spawn vehicle_patrol;
    [[(_position select 0) + 80, (_position select 1) + 70, 0],[(_position select 0) + 30, (_position select 1) - 70, 0],200,2,"UAZ_SPG9_INS","hard"] spawn vehicle_patrol;
    [[(_position select 0) + 80, (_position select 1) + 70, 0],[(_position select 0) + 40, (_position select 1) - 70, 0],200,2,"BRDM2_INS","hard"] spawn vehicle_patrol;
    [[(_position select 0) + 80, (_position select 1) + 70, 0],[(_position select 0) + 50, (_position select 1) - 70, 0],200,2,"T34","hard"] spawn vehicle_patrol;
    
    [[(_position select 0), (_position select 1), 0],[(_position select 0) + 1100, (_position select 1) + 1100, 150],400,"UH1H_TK_EP1",5,"hard","Random",4,"Random","gsc_eco_stalker_mask_fred","Random",true] spawn heli_para;
    [[(_position select 0), (_position select 1), 0],[(_position select 0) + 1050, (_position select 1) + 1050, 150],300,"UH1H_TK_EP1",5,"hard","Random",4,"Random","gsc_eco_stalker_mask_camo","Random",true] spawn heli_para;
    [[(_position select 0), (_position select 1), 0],[(_position select 0) + 1000, (_position select 1) + 1000, 150],200,"AH6J_EP1",0,"hard","Random",4,"Random","Random","Random",true] spawn heli_para;
    [[(_position select 0), (_position select 1), 0],[(_position select 0) + 1000, (_position select 1) + 1000, 150],100,"Mi24_V",4,"hard","Random",4,"Random","gsc_eco_stalker_mask_neutral","Random",true] spawn heli_para;

    // Spawn Vehicles
    _dir             = floor(round(random 360));

    _vehclass         = bandit_vehicles             call BIS_fnc_selectRandom;
    _vehclass2         = super_villain_vehicles     call BIS_fnc_selectRandom;
    _vehclass3         = super_villain_choppers     call BIS_fnc_selectRandom;

    _vehicle        = [_vehclass,_position,false,_dir]     call custom_publish;
    _vehicle2        = [_vehclass2,_position,false,_dir] call custom_publish;
    _vehicle3        = [_vehclass3,_position,false,_dir] call custom_publish;
    
    if(debug_mode) then {
        diag_log format["WAI: [Bandit] super_villain spawned a %1",_vehclass];
        diag_log format["WAI: [Bandit] super_villain spawned a %1",_vehclass3];
        diag_log format["WAI: [Bandit] super_villain spawned a %1",_vehclass2];
    };

    //Condition
    _complete = [
        [_mission,_crate],                // mission number and crate
        ["kill"],                        // ["crate"], or ["kill"], or ["assassinate", _unitGroup],
        [_baserunover],                 // cleanup objects
        format["The Super Villain has setup a new lair from where he plans to take over %1, go and stop him!",worldName],    // mission announcement
        "The Super Villain has been taken out and his evil plans foiled!",                                    // mission success
        "Survivors were unable to stop the Super Villain, soon he will enslave you all!"                // mission fail
    ] call mission_winorfail;

    if(_complete) then {
        [_crate,80,20,[6,crate_items_high_value],10] call dynamic_crate;
    };

    diag_log format["WAI: [Mission:[Bandit] Super Villains Lair]: Ended at %1",_position];

    wai_mission_timeout = [900,1800]; //time each missions takes to despawn if inactive 15-30 minutes
    
    b_missionrunning = false;

};

Link to comment
Share on other sites

That is awesome man thanks so much! I've been screwing with it trying to get it working on my test server for most of the night. (yay for night shift!).

 

Maybe best to set the default distance to spawn missions from trader cities to 1K if they're going to have M2's, people will get shot down leaving the safe zones :P

Link to comment
Share on other sites

In the same way i added wai_mission_timeout you can also overwrite other vars like wai_avoid_traders and wai_mission_spread. Just make sure you turn them back to normal when the mission ends, or it might be a better idea to just reload the config inside mission_winorfail.sqf so it doesnt have to wait for the mission to end before it resets its global vars.

Link to comment
Share on other sites

Also here's another little mission I made, felt that we needed another Easy mission for the solo operators or noobies, it's in the old format but maybe someone might like to use it.

 

 

//Bandit Scouts
 
private ["_playerPresent","_cleanmission","_currenttime","_starttime","_missiontimeout","_vehname","_veh","_position","_vehclass","_vehdir","_objPosition"];
 
_position = safepos call BIS_fnc_findSafePos;
_position = _positionarray call BIS_fnc_selectRandom;
diag_log format["WAI: Mission Bandit Scouts Started At %1",_position];
 
_vehclass = "pook_H13_transport";
 
//Sniper Gun Box
_box = createVehicle ["USBasicWeaponsBox",[(_position select 0),(_position select 1) + 15,0], [], 0, "CAN_COLLIDE"];
[_box] call Sniper_Gun_Box_Small;
 
//Military Chopper
_veh = createVehicle [_vehclass,_position, [], 0, "CAN_COLLIDE"];
_vehdir = round(random 360);
_veh setDir _vehdir;
clearWeaponCargoGlobal _veh;
clearMagazineCargoGlobal _veh;
_veh setVariable ["ObjectID","1",true];
PVDZE_serverObjectMonitor set [count PVDZE_serverObjectMonitor,_veh];
_objPosition = getPosATL _veh;
 
diag_log format["WAI: Mission Bandit Scouts spawned a %1",_vehname];
 
//Troops
[[(_position select 0) + 10, _position select 1, 0],4,"easy","Random",4,"Random","Bandit1_DZ","Random",true] call spawn_group;
 
[_position,format["[Easy] Bandit Scout Patrol"]] execVM "\z\addons\dayz_server\WAI\missions\compile\markers.sqf";
 
[nil,nil,rTitleText,"A bandit scout patrol has landed to site a new base, stop them before they get back and report!", "PLAIN",10] call RE;
 
_missiontimeout = true;
_cleanmission = false;
_playerPresent = false;
_starttime = floor(time);
 
while {_missiontimeout} do {
sleep 5;
_currenttime = floor(time);
{if((isPlayer _x) && (_x distance _position <= 150)) then {_playerPresent = true};}forEach playableUnits;
if (_currenttime - _starttime >= wai_mission_timeout) then {_cleanmission = true;};
if ((_playerPresent) || (_cleanmission)) then {_missiontimeout = false;};
};
 
if (_playerPresent) then {
 
[_veh,[_vehdir,_objPosition],_vehclass,true,"0"] call custom_publish;
 
waitUntil
{
sleep 5;
 
_playerPresent = false;
 
{
if((isPlayer _x) && (_x distance _position <= 30)) then {
_playerPresent = true
};
} forEach playableUnits;
 
(_playerPresent)
};
 
[nil,nil,rTitleText,"Survivors have dealt with the scout patrol!", "PLAIN",10] call RE;
 
} else {
 
clean_running_mission = true;
deleteVehicle _veh;
deleteVehicle _box;
 
{
_cleanunits = _x getVariable "missionclean";
 
if (!isNil "_cleanunits") then {
switch (_cleanunits) do {
case "ground" :  {ai_ground_units = (ai_ground_units -1);};
case "air" :     {ai_air_units = (ai_air_units -1);};
case "vehicle" : {ai_vehicle_units = (ai_vehicle_units -1);};
case "static" :  {ai_emplacement_units = (ai_emplacement_units -1);};
};
deleteVehicle _x;
sleep 0.05;
};
 
} forEach allUnits;
 
[nil,nil,rTitleText,"Survivors did not deal with the scout patrol in time!", "PLAIN",10] call RE;
};
 
diag_log format["WAI: Mission Bandit Scouts ended at %1",_position];
missionrunning = false;

 

Link to comment
Share on other sites

Oh that's cool man, didn't expect you to do it, just thought I'd offer it up for anyone who wanted to use it.

 

How hard it is to get the mission messages to come up as radio messages (chat) rather than a message in the middle of the screen? I'd really love to make it so players don't get mission notifications unless they have a radio.

Link to comment
Share on other sites

wai_mission_spread = 750; // make missions spawn this far apart from one another and other markers

Does this include all markers? So like trader cities, static locations on the map where I've set markers?

 

Also is there a easy way to change the marker names? I'm renaming the missions into something more plausible for 2 years after the zombie apocalypse, since I doubt Ikea is still around.

 

Can I just change this?

 

_mission = [_position,"Hard","Lunch break Convoy","MainBandit",true] call mission_init;

 

 

Found a fault in the bandit medi_camp mission too. The on screen text is for the hero one.

 

 

 

May want to consider setting an option to turn off all mission static guns as well, the M2 machine guns can single shot a little birds engine at 1K, I've seen this a lot in the past, so unless the markers are larger or something it'd be really good to easily turn them off. I'm just commenting them out for now.

 

Agreed - I also remove the static guns, many of the players on my server are solo and the static guns are just too much.

 

They are liking the different classes of missions (hero and bandit).

Link to comment
Share on other sites

Nice F3cuk, one question, the missions initialize without a player is near?
If yes, AI costs performance, add a marker, and if someone reach the marker the AI spawn.

Dunno if you already did this^^

Ill try this script tomorrow, but looks very close to WAI (from source code)

Link to comment
Share on other sites

is it suppose to look like this?

 

ExecVM "\z\addons\dayz_server\WAI\init.sqf";

    allowConnection = true;

 

It is yes.

 

Nice F3cuk, one question, the missions initialize without a player is near?

If yes, AI costs performance, add a marker, and if someone reach the marker the AI spawn.

Dunno if you already did this^^

Ill try this script tomorrow, but looks very close to WAI (from source code)

 

Lol look at what i posted on our github just today.

 

Is there something special I have to do to get the special mission to trigger if it's the only one and set to 100%?

 

Uncomment the special mission stuff in init.sqf

Link to comment
Share on other sites

Oh that's cool man, didn't expect you to do it, just thought I'd offer it up for anyone who wanted to use it.

 

How hard it is to get the mission messages to come up as radio messages (chat) rather than a message in the middle of the screen? I'd really love to make it so players don't get mission notifications unless they have a radio.

this shouldn't be too difficult

Link to comment
Share on other sites

Go ahead and clog this one up. There is no other thread, I actually like that cause it keeps stuff in one place. We'll make sure the OP gets updated with all vital information like updates and what changes have been made.

Link to comment
Share on other sites

OK then

 

Stealth mission, you have to get in , raid the loot and get out without being detected.  The loot is guarded by 2 or 3 AI, if one detects you, either by firing at you or you've killed one of the AI and the others are alerted, the loot either despawns or becomes trash and reinforcements arrive so you're in a firefight just to get out alive.  It would be nice if killing AI with a melee weapon doesn't raise the alarm.

Link to comment
Share on other sites

The idea I would like to see if it possible to, As I have a Taviana server. Is I have 2 Static Ai islands 1 bandit AI and 1 Hero AI. I would love to have them so if you are a bandit player with humanity of say -10 000 to be able to goto the bandit AI island and co exist with your fellow bandits, And not get shot by the bandit AI their. Same with the hero island but have a humanity of say + 15 000. But in doing this have it so it doesn't affect the AI in the actual AI mission system itself.

 

I do like the idea of having a radio for finding the missions as well as I read in an earlier post.

 

My players and I on my server like the extreme AI so implementing reinforcements with most mission would be great. As I not know hot to do that yet. So in the missions .sqf if their was a choice  to turn on reinforcements that would be nice, so then we could pick and choose what missions we want parra drops or land based reinforcements.

 

Any was what ever you come up with for the next releases will be great anyways.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
  • Advertisement
×
×
  • Create New...