This is a complex and performance friendly undercover simulation for players and their AI subordinates. Work as a guerrilla cell, go undercover, recruit comrades, and cause mayhem. SP / Coop and Dedi compatible. (For those of you who've used my previous undercover scripts, this release is a significant upgrade and represents a few hundred hours' work and testing over the last version, so hopefully you'll see the improvement!)
Virtually every factor that can affect your cover (within engine limitations and the caveats mentioned below) has been accounted for.
Optimised to the max; should not noticably affect performance at all - no noticeable performance impact even during a stress test of 45+ undercover units simultaneously undercoverising several enemy patrols.
Operates primarily on each client - server / client interaction is therefore kept to a minimum even when multiple players are undercover at the same time
Compatible with RHS, ACE, ALiVE, Zeus, ASR, bCombat, TPWCAS, VCOM... pretty much everything its been tested on (some factions' helmets and bandannas may not be recognised but the overall effect of this will be minimal - if you desperately want all features, use vanilla or RHS versions of these assets)
Comprehensive undercover / incognito simulation -
Works on players and their AI group members
Quick, easy setup: most aspects of the script are automatically implemented based on the settings you choose
Can run in the background even when the mission isn't focused around undercover operations - automatically reduces checking overhead when unit isn't undercover so it should be practically unnoticeable
No need to turn the script on or off - it just works
No checkboxes, compromised notifications or any other "gamey" stuff; just an optional hint when you're obviously hostile and when you aren't - the rest is up to you
Responds to whether the units are in vehicles or on foot, dressed as enemies or civilians, whether the unit's face fits or doesn't fit in with the faction they are pretending to be, or whether it is day or night, with each situation requiring players to behave appropriately
Suspicious enemies may challenge or watch and follow undercover units if they act weirdly; the more weird stuff you do, the more likely they are to see through your disguise (you can even use this to your advantage to draw enemies attention away from another unit while they do something suspicious - just don't get too cocky or they will open fire on you)
Players must "act" their role; doing weird stuff will raise suspicion and could blow your cover - if you point your weapon at an enemy and they see you doing it, they will get suspicious very quickly. Equally, if an enemy sees you crawling around or planting explosives, you're not going to stay undercover for long.
Enemies will detect if undercover units are the nationality of the group they are impersonating; covering your face with a scarf or bandanna will reduce this but not as much as choosing undercover units whose faces fit in with the people they are trying to impersonate
All actions have consequences, good or bad. If the MRAP you're driving gets a bit close to a patrol, moving into the back of it and out of sight of the enemy might just save your skin. Equally, putting a balaclava on when you're a civilian will attract a lot of attention - which is especially not good if you're already carrying a military rucksack.
Once undercover units become compromised, enemies will remember the vehicles they are spotted in and clothes they are wearing - change your clothing (both uniform and either headgear or goggles) and if no enemies see you doing it, your new disguise may stick
Easily switch disguises: take enemy uniforms from nearby crates, vehicles, dead bodies and the ground (and order AI subordinates to do the same)
Quickly conceal and un-conceal your (and your subordinates') weapons if you have the inventory space - without faffing with inventories
Different configurable detection systems for regular and asymetric enemy forces
Stealth kills work -
If nobody sees you firing a shot, your cover will remain intact
BUT, enemies do remember suspicious units - if you kill someone and other enemies of that side already know who you are and that you are nearby, there is a chance your cover will be blown regardless
However, your cover will return if you kill everyone who knows about you before they can spread the word
Different behaviour for regular and asymmetric forces
Define a side as asymmetric and they will not be able to share your identity outside of the local area, but they will be better at spotting imposters
Define a side as regular and your cover will stay blown for much longer and for a much wider area once compromised... but they may not have such a good nose for imposters
(Optional) Civilian Recruitment
Undercover units can recruit civilians to join their group
The more enemies you kill, and the more chaos you are associated with, the better your reputation will become
The better your reputation, the more likely civilians are to join you
Kill enemies without getting spotted and there is a chance they will lash out against civilians, with a potential to cause a civilian uprising (optional)
Automatically arm ambient civilians with weapons and items which they may use if recruited or during an uprising
Try to steal civilians' clothes from them (but be prepared that your reputation will take a hit or you may become compromised)
(Requires ALiVE) Turn recruited units into a profiled group to be used by AI commander of the same faction as the undercover unit (add to object init: this addaction ["Profile group","[player,'profileGroup'] remoteExecCall ['INCON_ucr_fnc_ucrMain',2]",,1,false,true]);
Installation / Usage:
For usage instructions and information of how to use the Incon Undercover please refer to the included documentation and/or example mission.
Add all files from Incon-Undercover folder into your mission folder. If you already have a description.ext or initPlayerLocal.sqf then add the code to your existing files. (Make sure to delete any previous version of my undercover scripts). In description.ext, if the class is already defined (for instance, cfgFunctions), just add the #include line to the given class.
Configure your settings in the UCR_setup.sqf file in the INC_undercover folder (pay close attention to these, one wrong setting can lead to some weird behaviour).
For each out of bounds area, place a marker over the area with "INC_tre" somewhere in the marker name (e.g. "MyMarkerINC_tre" or "INC_tre_sillyMarkerName_15"). The script will handle the rest. But if you want, you can also include other markers by listing them in the relevant array in UCR_setup.sqf.
Add in Incon Persistence if you want your band of merry men to persist between ALiVE sessions (this is now a separate script but automatically persists reputation).
For each playable undercover unit, put this in their unit init in the editor:
this setVariable ["isSneaky",true,true];
Non-player units in the undercover unit's group do not need anything; the script will run on them automatically on mission start.
Only one side can have undercover units at a time (so no east undercover and west undercover units undercoverising each other at the same time)
Only one side can be defined as asymmetric at a time and only one side can be defined as regular - and both must be hostile to the undercover unit's side. So if having a three-way war, one side must be asym and the other regular.
If having a three-way (...war), it is recommended to not have any incognito factions as an engine limitation means that incognito units (i.e. those disguised as the enemy) will be seen as friendly to all - could break the immersion if you're dressed as OPFOR and GreenFOR don't shoot at you when they should.
For mission makers - just be aware that the following could affect your mission: enemy units may wander from their original positions to follow undercover units if they become suspicious. Also, when compromised by regular forces, an undercover unit's description will be shared across other enemies in the local area after some time if they don't kill everyone who knows about them
Works on all tested mods. If you find an incompatibility, tell me!
Credits & Thanks:
Massive thanks to Spyderblack723 for his help creating some of the functions and correcting my mistakes / oversights on the original release. Also for generally being super helpful over the past year as I've got into modding. Grumpy Old Man, Tajin and sarogahtyp are responsible for creating a performant detection script, which I then adapted and used as a basis for the undercover script, so thank you to those guys too. Also thanks to das attorney, davidoss, Bad Benson, Tankbuster, dedmen, fn_Quiksilver, marceldev89, baermitumlaut and Duda123 for some top optimisation tips. And huge thanks to accuracythruvolume for testing and feedback.
Small update but with one pretty big bugfix (may introduce other issues if undercover units being in specific groups are important for your mission, but only if this bug appears):
Finally fixed the issue with unresponsive enemies on longer / multi-session missions!
Also, any editor placed unit with "this setVariable ['isSneaky',true]" in its init will automatically be switched to the undercover unit's side and will function as an undercover unit. So you can place an opfor down, set the undercover unit side to west in the setup, and it will all work as it should. This will be helpful for getting the perfect disguise from the start of a mission.
Not that anybody will care, but:
There was a rare, almost mythical bug that I really struggled to reproduce... until yesterday, when no matter what I did, nobody would shoot me (first world problem number 1). Turns out the engine, in all its wisdom, had decided that setCaptive was not good enough, and completely switched my side to civilian. So as far as my enemies / victims were concerned, I was just any other civvie joking around by shooting at them (as a cheeky civilian might). I've now put a check in to make sure the undercover unit's side is exactly as specified in the setup file whenever a change of state occurs. If it isn't, it switches the unit to the correct side. The downside of this is that we have to create a new group and delete the old one, so group-specific coding will get lost if this engine bug appears. I can't see a way around this though until the original engine bug is fixed, which is unlikely as I have no idea how to reproduce it. So it's a workaround / hack, but should do the job. And the script should be pretty much bombproof now.
This version adds high security areas and several refinements to the compromised and cooldown routines. It also adds a global suspicion level scalar which makes it easy to adjust the base suspicion levels of enemies.
Fixed some bugs relating to profiling insurgent cells with vehicles.
Also fixed weapons losing items when unconcealing a rifle and pistol at the same time. Only took 4 hours.
Made hints a bit more reflective of the actual checks going on behind the scenes.
Replaced most hints (except debug ones) with a "disguise check" after inventory has been closed, which will indicate how suspicious a unit is.
Put an easy mode in for people who would like to know what their status is (compromised, in disguise etc).
Minor overhaul to the compromised loop; disguises should be much more functional now. This means any disguises worn during the cooldown and before your identity has been shared will only be remembered if they have actually been seen for some time by the enemy. No longer will the enemy magically know what you're wearing when they get the word out. Also killed a few bugs relating to changing disguises when in view / out of view of enemy.
Further revisions to the way disguises are handled. Proximity in both temporal and positional senses now counts; if you remain in the compromised area wearing a new disguise, enemies will be on the lookout and are more likely to blow your cover. If you move far away or wait for a long time, this will drop off substantially. On the other hand, disguises are more likely to stick and not be blown on a whim.
Units who aren't dressed as civilians or enemies will no longer have a disguise penalty applied when they get compromised and their details are shared. So if you engage enemies dressed in your normal uniform, they will not be any more suspicious of you if you later change to a civilian uniform. However, if you engage while dressed as a civilian and your cover is blown, enemies will be more cautious of undercover units even after their disguise has changed. This incentives bringing your own uniforms if you know you're in for a scrap (then stash some civvies nearby to change into afterwards).
Version 1 release of Incon Undercover standalone. See readme.MD for full details. Release highlights include:
Fixed some items accidentally removed from crates when swapping uniforms
Compromised units' information is shared after cooldown only when enemy still have reasonably fresh target knowledge of them
Added shemagh to face-blocking headgear (will mitigate racial differences if worn while dressed as enemy)
Fixed multiple ACE self-interaction menu actions added after respawn
Added custom incognito items (automatic detection does not work for factions with randomisation scripts so classnames of incognito items can be added manually now)
Version 0.9 Beta
First standalone beta version of Incon Undercover including a complete overhaul of the script. The script is now far more complete and takes almost every factor that the Arma engine allows to create a plausible simulation of operating undercover.
Appropriate behaviour detection - in a civilian vehicle? Put your headlights on at night then!
Facial detection - you'll have a harder time passing off as the enemy if you're face doesn't fit in and you make no attempt to cover it.
Vehicles and disguises fully implemented
Steal enemy uniforms, conceal your weapons (using ACE self-interact if present) and order your group to go loud with quick, context appropriate actions.
Numerous performance improvements that allow the full simulation to run both players and AI (stress tested with 45+ undercover group members with no noticeable performance hit over vanilla)
In short, this is a mah-hoosive update that represents hundreds of hours of coding, testing, tweaking and refining. See the readme.MD file for details.
- Community Base addons A3
- BI forums