Deus Ex Security
 
Download Tutorial File (19k Zip)

OK, here are the specific in setting up Deus-Ex security. I'm going to start with the individual components and then show you how they can all be added together.

First I want to talk a little bit about AI Events.

AI Events

The way that this works is through a number of native functions (i.e. we can't see inside them).

Any object that wants to 'hear' an event sends the AISetEventCallback function, with the event type as the first parameter and the function to be called as the second parameter. AIClearEventCallback stops the function being called.

Any object can also make events. Some events are sent using AISendEvent such as loud noises, whereas some events have a start and end period such as alarm and use AIStartEvent and AIEndEvent.

Most of the security features use the AI event 'Alarm'.

When a NPC hears an 'Alarm' event they first work out who the alarm is about; For a failed computer hack or a security camera it is always you, for a laser trigger it is whoever tirggered the laser and for an alarm unit it is the current enemy of the NPC who triggered the alarm unit. They then work out their alliance to this player and attack/do nothing based on how they feel.

 
Alliances

NPC alliances come into play a lot in alarm situations.

  • Each NPC has their own Alliance.
  • The can have 3 attitudes to other alliances, -1 - Hostile, 0 - Neutral or 1 - Friendly
  • Alliances can either be permanent or not, i.e. do they hate you if you shoot them.
  • You are alliance 'Player'
  • An NPC can only use an alarm if it is not Hostile to the Alliance of the alarm.
Security Robots work in exactly the same way as all other NPCs.
 
SecurityCamera

The security camera is a hackable device, so all the following properties; bHackable and hackStrength apply.

Security camera send the AI event 'Alarm' when they spot a player. There are 2 stages to the spotting process, the first is the flashing low level noise they create, and the second is the constant louder noise. The Alarm event is actually started on the second stage of this and ends when the security camera can no longer see the player. The delay between stage 1 and stage 2 is 4 seconds.

bActive
Is the camera 'Live' when the level starts. If it is not live then nothing will happen, no movement, no alarming.
bSwing
Should the SecurityCamera swing backwards and forwards
swingAngle
The complete angle that the camera will move, its initiall position is in the middle of this angle. 8192 is 90 degrees.
swingPeriod
Number of seconds to take per swing
bNoAlarm
If this is true then no alarm event is created when seeing the player. Note - Security cameras are only triggered when seeing YOU - they cannot be set up to alarm when seeing a NPC.
cameraFOV
The field of view (FOV) of the camera, defaults to 4096 which equates to 45 degrees.
cameraRange
The range the camera can see the player in. If you switch to Actor->Radii View in UnrealEd then this shows up as a blue circle.
 
AutoTurret

First of all, please remember to place the AutoTurret and not the AutoTurretGun.

The AutoTurret sends AI LoudNoise events when it fires, but mainly it listens for AI Alarm events. If bActive is set to false and a nearby camera spots a player then it will become active. However if it is altered through a security panel (more on this later) then it will either be permenantly active or permenantly disabled.

When looking at the AutoTurret its 'front' is the part with the angled front. (if that makes any sense)

The gun head is hackable and is disabled if hacking is successful. This can obviously be reset using a security panel..

bActive

Does the turret start of by shooting, or does it need to be triggered - either by a normal trigger or by an Alarm AI event.

An Alarm AI Start Event sets bActive to true and a Alarm AI End Event set bActive to false.

Changing a turrets status to anything other than disbaled in a security panel sets bActive to true.

bTrackPawnsOnly | bTrackPlayerOnly

bTrackPlayerOnly = true - Attack the player and allies.

bTrackPlayerOnly = false, bTrackPawnsOnly = true - Attack enemies

bTrackPlayerOnly = false, bTrackPawnOnly = false - Attack everything (this includes furniture and other decorations, depends on Advanced->bDetectable being true and Decoration->bInvincible being false)

 

Unfortunately, if allies or neutrals are hit by an autoturret and they do not have permenant alliances then they will become hostile to YOU.

AmmoAmount
The amount of ammo...
fireRate

The delay in seconds between firing.

gunAccurancy
The accuracy of the turrets shots. 0 is perfect, default is 0.5, go as high as 20 and the thing will never hit you in month of sundays.
gunDamage
damage per hit.
maxRange
The all seeing eye is how big?
 
AlarmUnit

The alarm units just sit there and are triggered, either by a NPC running up to it or by another trigger. When it is triggered it emits an Alarm AI Start event and eventually an Alarm AI End event.

If triggered it will trigger its own Event->Event property.

When a NPC sees an enemy they can rush to an AlarmUnit based on their AI->RaiseAlarm property. The Alarm is raised against that Enemy.

Note: the AlarmTag field in Orders is no longer used.

alarmTimeout
Amount of time before the alarm switches itself off.
Alliance
They say this means that only NPCs of this alliance will react to this alarm, but it doesn't. It means that only NPCs who are not hostile to this Alliance can trigger the alarm.
 
AcousticSensor

Simply listens for 'WeaponFire' AI Events and triggers its Event. To set off a loud alarm get it to trigger an AlarmUnit.

It has no properties of its own beyond those for all hackable devices.

 
RetinalScanner
The only way to get through this little so and so is to hack it. Once hacked it triggers its Event property and displays the msgUsed string. If the hackStrength is 0 then it can be used just as a switch. It still has to be used to trigger the event though.
 
ControlPanel
Pretty much the same as the retinal scanner, except no message upon successful hacking.
 
KeyPad
Similar to above, except it has a few more properties. One main difference is that they can unlock doors instead of triggering them.
validCode
The valid code which when entered triggers the KeyPad
successSound
sound to play on successful hack or key entry
failureSound
sound to play upon entering the wrong code
FailEvent
event to trigger upon incorrect code entered
bToggleLock
If this is true then the bLocked status of the DeusExMover with the Event property will be toggle. If it is false then the event will be Triggered.
 
BeamTrigger

Triggers its Event when the beam is tripped. Can be Triggered On and UnTriggered Off.

The bIsOn property is ignored at startup. It is always On.

 
LaserTrigger
Similar to above, but triggers an AI Alarm Start Event when it is tripped, and a End Event after 30 seconds.
bNoAlarm
If true then no alarm will be sounded. Just use the trigger to make pretty pictures then!
 
ComputerSecurity

I'm only going to look at those properties and such like that effect security, but like the other computers this computer can have special actions attached. See a later tutorial on computers in general for that maybe.

You can Computer Hack (not a hackable device, uses computer skill and not multitools) at Trained and above, but you do not have access to Turret control until you are Advanced or above.

Views

Each security computer has 3 views, with 4 properties

  • titleString - Description on the screen
  • camTag - Event->Tag property of the camera for this view
  • turretTag - turret tag for this view
  • doorTag - mover tag for this view
The SDK Docs say that if you are setting the turret you must have a camera as well, but i've tested it and you don't seem to have to.
Computers->ComputerNode
The computer node, you can only use in-game options unless you define your own scripts
Computers->LockoutDelay
The amount of time the user is locked out if their hacking is detected.
Computers->nodeName, titleSTring, titleText
All these are ignored, the information is got from the choice of ComputerNode above.
Computers->userList
A list of users who can log into this terminal. Each user has three properties, userName, password and accessLevel. The first 2 are obvious and the third one has no affect whatsoever.