PlanetDeusEx | Deus Ex | Help | Editing | Editor
Deus Ex Software Development Kit Editor System

07/04/00

By: Robert White, Sheldon Pacotti, Chris Norden, Al Yarusso, Scott Martin



Legal Information

Installation and use of this software constitutes agreement to the terms of this license so please carefully read its terms. If you don't agree with anything in it please delete this software from your hard drive.

This software accompanying this license remains the copyrighted property of Ion Storm and Eidos Interactive. You are entitled to use this product for your own use, but may not modify, recompile, reverse engineer, sell, rent, or lease this software to anyone else without the prior written consent of Ion Storm and Eidos Interactive.

Your license to use this software will automatically terminate immediately without receiving notice from

Ion Storm and Eidos Interactive, if you fail to comply with anything in this license, you agree to destroy this software and documentation upon termination of this license.

You may use this software to create or modify levels for use with the game Deus Ex (henceforth referred to as "levels") subject to these restrictions:

Any levels you create can only work with the full, legal version of Deus Ex.

Your levels cannot contain any modifications or changes to any executable file included in this distribution or those distributed with Deus Ex.

Your levels cannot contain any illegal, trademarked, or copyrighted materials unless you obtain written consent of the trademark or copyright holders.

Any levels you create and distribute must contain your name and email address and must be distributed with a readme file that contain this sentence, "This level was not made and is not supported by Ion Storm and Eidos Interactive."

Your levels must be distributed free of charge. Neither you nor anyone else may sell, rent, lease or commercially exploit these levels in any way. You may only exchange them at no charge to licensed users of Deus Ex.

When you publicly distribute your level you automatically grant Ion Storm and/or Eidos Interactive the perpetual, royalty free right to use, modify, license and distribute your level in any way we choose.

You expressly acknowledge and agree that use of the level editor is at your sole risk. This software and documentation are provided "AS IS" and without warranty of any. Further this software is "UNSUPPORTED" by either Ion Storm or Eidos Interactive. At no time will agents or employees be required to provide the end-user assistance with the installation, configuration or operation of this software.

Under no circumstances including negligence shall Ion Storm, Eidos Interactive or their Directors, officers employees or agents can be held liable for any incidental, special, consequential or any other damages that may result from the use or inability to use this software. Some states do not allow the limitation or exclusion of liability for incidental or consequential damages so these limitations or exclusions may not apply to you. In no event shall our total liability to you for any damages, losses, and causes of action exceed the amount paid by you for this software. If any portion of this license is unenforceable, the remaining portion shall remain in effect.



Introduction

The Deus Ex game uses the UnreadEd. The Editor classes have been modified and added to in order to support an RPG/Action game. Additional versatility in triggers, items and pawn AI are the most pronounced changes. What follows is a description of the changes we have made to the editor and how to utilize them to create a Deus Ex style mod.

Note that this is not a tutorial nor a description of the basic elements of the UnrealEd. We will not show you how to make maps or basic environments. For a tutorial, we refer you to the Unreal Website or any of the hundreds of other websites or news groups devoted to UnrealEd.



Starting up the DE UnrealEd

Once the editor has started up you will need to load the Deus Ex textures, sounds and music packages. Note that the directories textures, music and sounds need to be located within your main Deus Ex directory and preferably with their own sub-directories.

Loading the textures:

1. Click on the browse pull down window (top right side of main window) and select Textures

2. Click on load at the bottom of the same window. A dialogue box will pop up.

3. Select all of the texture packages (.utx) in the dialogue box then click open.

Loading the sounds:

1. Click on the browse pull down window (top right side of main window) and select SoundFX

2. Click on load at the bottom of the same window. A dialogue box will pop up.

3. Select all of the sound packages (.uax) in the dialogue box then click open.

Loading the music:

1. Click on the browse pull down window (top right side of main window) and select Music

2. Click on load at the bottom of the same window. A dialogue box will pop up.

3. Select all of the music packages (.umx) in the dialogue box then click open.



DeusEx Classes

New classes and alterations to existing classes were added to the Unreal system by the DE programmers. Those changes and additions are listed below. Each section contains a list of the properties and their values. Bool fields are defined as either 0 or 1 corresponding to False or True.



DeusEx Mover

The DeusExMover class is the one used most often in the game development. All the doors, glass (actually a subclass) , hatches and a few other interesting (The generator blown up in Mission 2, the tri-weld hull points on the Superfreighter, etc.) ones fall into this class. Just as in all UnrealEd movers, it will need to be created and textured first, then copy the polys or intersect the polys to the brush and select DeusEx Mover class. Then click on the mover button (left side of UnrealEd screen) and left click on the location you wish to place the mover on.

Property Name Type Description
bOneWay bool True - The door can only be opened from the direction of the arrow
blocked bool True - the door is currently locked
bPickable bool True - the door can be lockpicked
lockStrength float How tough the lock is to pick (0.0 = min, 1.0 = max)
bBreakable bool True - the door can be destroyed
doorStrength float How tough the door is to destroy (0.0 = min, 1.0 = max)
KeyIDNeeded name Key ID code which is needed to unlock door
bHighlight bool True - this door can be highlighted
bFrobbable bool True - this door can be used directly
minDamageThreshhold int Minimum amount of damage that must be inflicted by a weapon in one shot to seriously damage the door. 
NumFragments int Number of fragments to spawn when destroyed
FragmentScale float Drawing scale of said fragments
FragmentSpread float Radius that the fragments are spread from the center of the door
FragmentClass class<Fragment> Object class of the fragment to use
FragmentTexture texture Texture to use on the fragments
bFragmentTranslucent bool True - the fragments will be translucent
bFragmentUnlit bool True - the fragments will be unlit
ExplodeSound1 sound Small breaking sound
ExplodeSound2 sound Large breaking sound
bDrawExplosion bool True - draw an explosion effect
bIsDoor bool True - this is an actual door that can be opened (instead of an elevator for example)
 

Deus Ex Door Defaults are as follows:

bBreakable = False

bDrawExplosion = False

bFragmentTranslucency = False

bFreagmentUnlit = False

bFrobbable = True

bHighlight = True

bIsDoor = False

bLocked = False

bOneWay = False

bPickable = True

doorStrength = 0.25

ExplodeSound1 = Sound ‘DeusExSounds.Generic.WoodBreakSmall

ExplodeSound2 = Sound ‘DeusExSounds.Generic.WoodBreakLarge

FragmentClass = Class’DeusEx.WoodFragment’

FragmentScale = 2.0

FragmentSpread = 32

FragmentTexture = none

KeyIDNeeded = none

lockStrength = 0.2

minDamageThreshold = 10

NumFragments = 16



BreakableGlass and BreakableWall

Both are subclasses of the Deus Ex mover. All the fields are the same but other default values are in them.

Glass

bBreakable = True

bDrawExplosion = False

bFragmentTranslucency = True

bFreagmentUnlit = False

bFrobbable = False

bHighlight = False

bIsDoor =False

bLocked = False

bOneWay = False

bPickable = False

doorStrength = 0.1

ExplodeSound1 = Sound ‘DeusExSounds.Generic.GlassBreakSmall

ExplodeSound2 = Sound ‘DeusExSounds.Generic.GlassBreakLarge

FragmentClass = Class’DeusEx.GlassFragment’

FragmentScale = 2.0

FragmentSpread = 32

FragmentTexture = none

KeyIDNeeded = none

lockStrength = 0.2

minDamageThreshold = 3

NumFragments = 10

Breakable Wall

bBreakable = True

bDrawExplosion = False

bFragmentTranslucency = False

bFreagmentUnlit = False

bFrobbable = False

bHighlight = False

bIsDoor =False

bLocked = False

bOneWay = False

bPickable = False

doorStrength = 0.4

ExplodeSound1 = Sound ‘DeusExSounds.Generic.SmallExplosion1

ExplodeSound2 = Sound ‘DeusExSounds.Generic.LargeExplosion1

FragmentClass = Class’DeusEx.Rockchip’

FragmentScale = 3.0

FragmentSpread = 32

FragmentTexture = none

KeyIDNeeded = none

lockStrength = 0.2

minDamageThreshold = 20

NumFragments = 16



Elevator Mover

This mover class will allow for a mover to transition between a series of key frames in a certain order. This allows for stopping at key frames and moving to the next in sequence. Note: This must be triggered by a SequenceTrigger (see below).

Field Name Type Description
bFollowKeyFrames Bool True – follow key frame sequence to destination. False – go directly to destination point by shortest route.


Multi Mover

The multi mover is used when you want the mover to go to a particular key frame for a certain time and then change to another. Up to four different times and key frames can be driven for each mover. This is useful for such things as a coplanar window with a texture denoting a light is on in the room and on the backside of the polygon is the same texture but with the lights off. The poly can be made to flip along the z axis to either side based on a situation. the light looks like it turns on and off. Note that this will requires sequence trigger to initiate this mover.

Field Name Type Description
bReverseKeyFrames Bool True – after reaching last key frame the sequence is played in reverse order. False – After reaching the last key frame the sequence starts back over with frame 1.
SeqKey1 int[4] (0-7) Which key frame to move to for sequence 1
SeqKey2 int[4] (0-7) Which key frame to move to for sequence 2
SeqKey3 int[4] (0-7) Which key frame to move to for sequence 3
SeqKey4 int[4] (0-7) Which key frame to move to for sequence 4
SeqTime1 float [4] Move time for each key frame for sequence 1
SeqTime2 float [4] Move time for each key frame for sequence 2
SeqTime3 float [4] Move time for each key frame for sequence 3
SeqTime4 float [4] Move time for each key frame for sequence 4


Decorations

Each of the following items are physical objects placed in to the world. Some have characteristics unique to them that will effect game play while some are static. This section will only deal with those whose parameters can be adjusted for game play. Once an item is placed into the world you can access its properties by right clicking on it. This brings up a menu and the properties file is the top one in the list. Select this an a large dialogue box will appear displaying all of the adjustable fields for the item. We advise you that changing some of the fields other than those listed below, could cause game or editor crashes. Be sure of the effect of the field change before you implement it. The best advice is that if you do not know what it does, don’t change it.

AutoTurret and AutoTurretSmall

These are the automatic security weapon systems. They come in two sizes, but either of them can only be placed on either the ceiling or floor. The art will not support having them mounted horizontally. This is the placeable item, not the AutoTurretGun found under HackableDevices.

Field Name Type Description
AmmoAmount int Amount of ammo held in magazine of gun
bActive bool True - The gun initially active (default = true)
bTrackPawnsOnly bool True - The gun track all pawns (default =false)
bTrackPlayerOnly bool True - The gun only track the player (default =true)
fireRate float Number of seconds between each shot (default =0.25)
gunAccuracy float Accuracy of gun (0=very accurate, 1=poor accuracy) (default =0.5)
gunDamage int Damage delivered to target with each successful hit
maxRange int Distance in editor units (divide number by 16 = feet) (default = 512 = 32 feet)
 

Ceiling Fan

This is a two part object. One part comprises only the blades and axel. The second piece is the CeilingFanMotor which is static.

There are a couple of different skins for this accessed through the CeilingFan property SkinColor field. More important though is the field under Movement Property

Field Name Type Description
RotationRate rotator Rotation rate of fan blades. (modify only the Yaw rate)
 

Containers

There are several different types of these and except for the barrels they follow a common layout.

PropertyName Field Name Type Description
Containers numthings int Number of items of type spawned when broken
Decoration Contents class <Inventory> Object spawned when container broken. NOTE: This must be an item of class Inventory.
Decoration Content2 class <Inventory> 33% chance this object spawned when container broken. NOTE: This must be an item of class Inventory.
Decoration Content3 class <Inventory> 33% chance this object spawned when container broken. NOTE: This must be an item of class Inventory.


Barrels have an additional important field

PropertyName Field Name Type Description
Barrel1 bPreDamage bool True – Barrel is in a easily destroyed state and may be producing smoke or other particle effects and possible damaging nearby characters
Barrel1 SkinColor pull down slection SC_Biohazard – will damage player or NPC’s if destroyed

SC_Blue

SC_Brown

SC_Rusty (default)

SC_Explosive – causes the most damage of all barrels when destroyed.

SC_FlammableLiquid - will damage player or NPC’s if destroyed

SC_FlammableSolid - will damage player or NPC’s if destroyed

SC_Poison - will damage player or NPC’s if destroyed

SC_Radioactive - will damage player or NPC’s if destroyed

SC_Wood

SC_Yellow


Electronic Devices

This is comprised many different types of items.

ATM

These are the cash machines of the game. They can be hacked via computer skill automatically based on script code. Note that two or more ATM’s on the same map will automatically share accounts. So if funds from one for a particular account is depleted, then that same account number will be depleted on all the ATM’s

Field Name Type Description
LockoutDelay float Number of real world seconds machine is locked out if hack is unsuccessful.
User List varies There are three fields in each of the user fields (0-7)

Account Number (int) – number of account

balance (int) – amount of money in the account

PIN (int) – access number for account
 

Computers

There are three types of computers in Deus Ex and each has a specific function and capability. All of the computer types have a common field (Computers) in their properties.

Field Name Type Description
ComputerNode menu A menu list of the available nodes used in DE. This field is used by the 2D display system inside the text display code.
lockoutDelay float Time is seconds for computer lockout once hacking time limit is exceeded. During this interval the computer cannot be accessed and the alarm is sounding.
nodeName string A node ID string. This can be anything you wish
special options varies See table below
titleString string Title displayed in 2D computer access window.
titleTexture texture Selected texture file to be used in 2D window.
userList varies See Table Below
 

 

Field Name Sub Field Field Type Description
special options 0 bTriggerOnce bool True = event will be triggered only once.
special options 0 Text string Text displayed on Special options screen of computer once accessed
special options 0 TriggerEvent string Event name of trigger to be fired when special option is activated. NOTE: Any of the trigger types can be executed from this field. (see section on Triggers)
special options 0 TriggerText string Text displayed once special option is activated.
special options 0 UnTriggerEvent string Untriggered event name. This would apply to such items like laser triggers, particle generators, electricity generators and the like. Anything that must be turned off and does not work as a toggled event.
special options 0 userName String ID name of the user in the user list that can access this special option. NOTE: If no name is entered, than anyone accessing the computer can activate the special option. Also note that this must be left blank if you wish the user to be able to access this option using the computer hacking skill.


NOTE: Up to 4 possible special events can be defined for each computer. Each special event has a different sub-property number (0-3).

 

Field Name Sub Field Field Type Description
userList 0 accessLevel menu Access a pull down list of access levels. At the lowest levels the user can only access e-mail at higher levels this user could control higher level functions
userList 0 Password string Users password
userList 0 userName string Users login name


NOTE: up to 8 possible users can be listed per computer. Each has a different sub-property number (0-7).

E-mails can be read from any computer and from any level of access including hacking the system. The e-mails are read from a menu file associated with the user login name. It can be any computer on the mission that uses that login name. The syntax for the file names that we used is :

MissionNumber_EmailMenu_LoginName.txt (02_EmailMenu_jallred.txt)

Email Menu file syntax

The string corresponds to: <EMAIL=File to read, Subject line, From, To, CC >

The actual e-mail text files look like this.

Email file syntax

The syntax can be described as being HTML like. The first line defines the color of the printed text in RGB format. The next line contains a <P> for a hard return. A <B> to indicate start of Bold and </B> to end the bold text. Similarly <I>,</I> can be used for italics and <U>,</U> can be used for underline. Note that the block of text does not use any hard returns until a line break is needed. The text interface for DE will automatically word wrap at the appropriate point.

ComputerPublic

These are news servers for the general public. Text documents are read by this computer and displayed as e-mail style entries. Two types of files are necessary to support this computer. The first is the menu file which must be named according to the convention: ID Number_BulletinMenu.txt. For example the text for the public terminals in Mission 2 are 02_BulletinMenu.txt. By numbering according to mission it keeps it easy to identify each file. The menu file contains the names of the associated text files and how the header is to be displayed on the terminal screen.

Text file for Mission 02 Bulletin Menu.

The text needs to follow the syntax as listed in the box above. The first line is a comment to simply ID the contents of the box in case of later problems. The next lines follow the syntax

<FILE = MissionNumber_Filename, Title to be displayed >

Each text file to be read uses text files named using the convention indicated in the bulletin menu file. The syntax of the message is as follows.

Example of text syntax for public bulletins.

The public computer also has a field within its parameters that you must access to add the associated menu file connection.

Property Name Field Name Type Description
ComputerPublic bulletinTag string Name of bulletin file


ComputerPersonal

this is the desktop system of the DE world. Usually used only as a means of e-mail reception it has similar properties of all of the computers and can activate special options triggering outside events (i.e. Shutting off the coolant to the generator in the NYC warehouse and blowing it up, Signaling the NSF from the old NSF headquarters building, etc.)

ComputerSecurity

The security computer or security panel has all the features of the other computers plus the ability to access the camera systems, locked doors, and auto turrets. These features are accessible through the Computer Security field , View property.

Field Name Type Description
cameraTag text Camera tag name
doorTag text Door tag name
titleString text Text for camera view seen in 2D window
turretTag text Auto turret tag name


NOTE: Up to three views can be used per security computer (0-2). Also any door or auto turret designed to be used by the security computer must have an associated camera tied with it (preferably with a view of the turret or door).

Hackable Devices

Any device that requires using the multitool and associated technical skill is considered a hackable device (computer hacking falls under the computer skill and does not require the multitool). All of these devices share a common field (HackableDevices) described below.

Field Name Type Description
bHackable bool True – this device can be hacked, False – hack strength set to infinite.
hackStrength float Strength value of device defined as a percentage (0.1 = 10%, 1.0 = 100%)
UntriggerEvent string There are four of these sub-properties. Up to four unTrigger events per device. The field will contain the unTrigger tag name for the item you wish to unTrigger.


AcousticSensor

This is set off by any explosion or gun shot within range. Range is determined according to parameters within the Event Manager code of the AI and is based on both volume and range from sensor.

AlarmUnit

This is used as an alarm trigger by NPC’s. An NPC who is set to activate alarm before or prior to fleeing a battle will seek out the nearest alarm panel or one that has been tagged and they are set to go to the tagged alarm (see NPC Orders property) and activate it. This sounds an alarm and will trigger other NPC’s to an alert state if they are set to react to the alarm and are within hearing range of it.

Field Name Type Description
alarmTimeout int The number of seconds the alarm will sound before shutting off automatically (default = 30)
Alliance string This is the named tag of NPC alliance that will be alerted by the alarm. If set to default (none), then all NPCs in audio range set to react will react. If an alliance is set, then only those NPC of that alliance will react. Useful if in areas where a lot of neutral NPCs wouldn’t react to the alarm but guards would.


ControlPanel

Used as a hacked off switch for a lot of things in the game, especially laser triggers and electric fields.

Keypads

There are three different versions of the keypad, but all function identically, only the art is different. Using any keypad activates a 2D interface screen.

Field Name Type Description
bToggleLock bool True – the door will only unlock. False – the door will activate and open.
FailEvent string The tag of a failure event. Often used with a triggered Ambient sound to set off an alarm.
failureSound sound Defaults to Generic.Buzz1
successSound sound Defaults to Generic.Beep2
validCode string This is a string, but limited to those as seen on a telephone pad (numbers 0-9, #, *)


RetinalScanner

A device that works like a keypad. Unfortunately it is set to accept anyone using the device. The only field is a text string indicating that clearance is granted.

SecurityCamera

Used in conjunction with the security camera to provide views of game areas located on the same map with the security computer. Note that these devices do not work across different maps. The camera is considered a hardened target and takes a lot of damage delivered at once to take it out (rifle at high mastery, an explosive, etc.)

Field Name Type Description
bActive bool True – camera is running when first encountered.
bNoAlarm bool True – If the camera is activated by player presence in FOV, then an alarm will sound.
bSwing bool True – Camera will pan within swing angle parameters
cameraFOV int The field of view angle of the camera. This is a binary angle measurement (65536 = 360 degrees)
cameraRange int Distance measure in game units (divide by 16 for feet)
swingAngle int The angle the camera rotates through for the swing. The camera will swing this angle both + and – of the point it positioned at in the editor. . This is a binary angle measurement (65536 = 360 degrees)
swingPeriod float The number of seconds that the camera takes to complete a full swing cycle.


Phone

The device is purely a decorative item in Deus Ex but it has some variable parameters.

Field Name Type Description
AnsweringSound menu A selection of different audio files are played if item is used
ringFreq float A randomizing variable giving basic chance that the player will here the phone ring when passing within range of the phone. (default = 0.01 = 1%)
RingSound menu A selection of two different ring audio files.


TAD

This is an answering machine. It has a couple of parameters to make it beep, drawing attention to itself. To make it work though a conversation file will need to be created for it. The file name (BindName) must then be placed in the Conversation property, BindName field. Then whenever the TAD is used the conversation file is played.

Field Name Type Description
beepInterval float Number of seconds between playing the beep sound
beepSound sound Defaults to Generic.Beep5
 

VendingMachine

Script code generates either a drink or a soy food snack based on which skin is selected from the VendingMachine field in the item properties.

Field Name Type Description
SkinColor menu Choice of either Drink or Snack. Changes both image and functionality.


 

Faucet

Standard sink style faucet seen all through the game.

Field Name Type Description
bOpen bool True – Is the faucet in an open position and running
FlagPole

Field Name Type Description
SkinColor menu A selection of possible skins for the flag pole. The include China, France, US Presidential, UNATCO, USA


HangingDecorations

There are several items in this category. All will react to being struck by swaying back and forth around the pivot (which is at the top of their connecting cord). Some, like the shop light, are connected by two points so they only sway in one direction.

Field Name Sub Field Type Description
bFixedSwaying - bool True – Item will be swaying based on FixedSwayDirection Field parameters when first encountered
bNoPitch - bool True – Restricts motion of hanging item around this direction if item is bumped or damaged.
bNoRoll - bool True – Restricts motion of hanging item around this direction if item is bumped or damaged.
bRandomize - bool True – randomizes rotation axis, period and sway amplitude.
FixedSwayDirection Pitch int Amplitude of pitch direction. This is a binary angle measurement (65536 = 360 degrees)
FixedSwayDirection Yaw int Amplitude of yaw direction. This is a binary angle measurement (65536 = 360 degrees)
FixedSwayDirection Roll int Amplitude of roll direction. This is a binary angle measurement (65536 = 360 degrees)
FixedSwayPeriod - float Time in seconds for one full cycle of sway to occur.


InformationDevices

There are several in this class, but the properties for each are the same. The information devices are: BookClosed, BookOpen, DataCube,Newspaper, and NewspaperOpen.

Field Name Type Description
imagleClass class<Inventory.DataVaultImage> A specially prepared image for 2D display (i.e. Satellite image of the warehouse area)
textTag string Name of the information text file.


The text files for the information devices follow the same syntax as that of the e-mails described earlier (see Computers). The naming convention for the files in Deus Ex is as follows:

Book (open or closed): MissionNumber_BookIDNumber.txt (02_Book01.txt)

DataCube: MissionNumber_DatacubeIDNumber (02_Datacube01.txt)

Newspapers (open or closed): MissionNumber_NewspaperIDNumber (02_Newspaper01.txt)

OutdoorThings

There are several items in this category. A few of them have a property associated with their name that allows for changing the skin on the object. Those with this property are: Bushes3, CarBurned, CarStripped, FirePlug, Tree1, and Tree2

In addition, Tree1, Tree2, Tree3 and Tree4 have another property called Tree

Field Name Type Description
soundFreq float a random chance of the tree to produce a wind noise when encountered (default = 0.2 = 20%


Poolball

There is a single property called Poolball that allows for changing the pool ball skin. The skins are SC-1 through SC_15 and SC_Cue.

ShowerFaucet

This object must be paired with an associated ShowerHead. The tag name of the ShowerFaucet and the ShowerHead must be the same in order for them to work.

Field Name Type Description
bOpen bool True – Shower is running when the player firsts encounters it.


Effects

ElectricityEmitter

This is a sub class of LaserEmitter (By the way, if you try and place a laser emitter, nothing will happen). The electricity emitter produces electrical bolts that will collide with the character and can cause damage. This is a directional device. Once placed an arrow is visible in the overhead and side views of the editor (but not the software render view). The arrow will need to be rotated to point in the direction that you wish the electrical bolts to go. This item can be triggered on, but must be unTriggered to turn it off (with something like the ControlPanel).

Field Name Type Description
beamTexture texture Texture. Defaults to Effects.Electricity.Nano_SFX
bEmitLight bool True – Emitter will flash with blue light every time electricity flickers on.
bFlicker bool True - Emitter flickers on and off . Flickering is randomized with max limit as defined by flickerTime
bInitiallyOn bool True - Emitter is running when player encounters it
DamageAmount int Damage applied to character
damageTime float Time in seconds that damage will occur to character remaining in contact with electric field. Default = 0.2
flickerTime float Maximum time in seconds between on and off cycle. Default = 0.02
randomAngle float Deflection angle from center point (defined by the Arrow). This is a binary angle measurement (65536 = 360 degrees)


ParticleGenerator

This is very similar to the one already being used in the standard Unreal engine, but there are few additional capabilities. One of the main things is that it can be turned on and off via triggers and unTriggers.

Field Name Type Description
attachTag string Tag name of the mover to attach the generator to
bAmbientSound bool True – generator will create a sound when particles are spawned
bFade bool True – particles will fade as the move farther away from the generator
bGravity bool True – particles will fall downward after being spawned
bIntiallyOn bool True – generator is running when player first encounters it.
bModulated bool  
bParticlesUnlit bool True – particles will appear bright as if self illuminated.
bRandomEject bool True – particles will be ejected at random angles (<180) from generator
bScale bool True – particles will scale larger as they move away from generator
bTranslucent bool True – particle texture will be rendered as translucent
bTriggered bool True – generator can be turned on and off from a trigger
checkTime float Time in seconds that the system checks for the possibility of generating a new particle. Default = 0.1
ejectSpeed float The speed at which particles are emitted. Default = 10.0
Frequency float The base chance that a particle will be generated during the checkTime. Default = 1.0
numPerSpawn int The number of particles spawned during a successful generation at checkTime. Default = 1
particleDrawScale float The size of the particles in relative terms (2=2x norm, etc.) Default = 0.10
particleLifeSpan float The duration that a particle will remain on screen. Default = 4.0
particleTexture texture The texture primitive used for the particle. Default = none (actually uses smoke texture)
RiseRate float The speed at which the particles will rise from the generator. Note: If gravity is turned on (bGravity=true) then this will not work. Default = 10.0
SpawnSound sound The sound made by the particle ejection. bAmbientSound must be true for this to work. Default = none
spewTime float Once a successful checkTime is achieved and the Frequency randomization indicates that a particle will generate, this is the time in seconds that a particle will be emitted. Default = 0 (instantaneous)


WaterDrips

All the parameters are the same, but the defaults are different. Speed of drips can be adjusted by increasing or decreasing frequency and checkTime, but other parameters should be left alone. When positioning this generator. Adjust the arrow to point in the downward direction and place the generator directly on a ceiling or the underside of any other surface.

PawnGenerator

These generators will create NPC creatures. There is only basic default behavior AI possible. The creatures or people are generated only when the player does not have line of sight on the generator. The unit will maintain a constant balance of a certain number of these NPC’s. If a generator is set to create 5 pigeons and the player kills 2 and runs away, then the generator will create 2 more to maintain the balance in the area.

All of these generators have the same properties, but with different defaults. The types of generators are Fish2Generator. FishGenerator, FlyGenerator, PigeonGenerator, RatGenerator, and SeagullGenerator. Note that there is a PedestrianGenerator listed in the class files, but it is non-functional.

Field Name Type Description
ActiveArea float The area in which the player must be within for the unit to actually spawn creatures
Alliance string The alliance linking all of the creatures together (see the section on AI)
bGeneratorIsHome bool True - The physical generator is used as the home base point for determining the range at which the creatures can wander to.
bTriggered bool True – The generator can be turned on and off from a trigger.
MaxCount int The maximum count of creatures the generator will maintain
Orders string The AI command inherent to all creatures spawned by this generator. Default = Wandering. See AI for other possible choices.
OrderTag string An item tag name used by the creature in conjunction with some of the AI orders. See section on AI. Default = none.
PawnHomeExtent float Distance home point is located from generator if bGeneratorIsHome = false.
Radius float Distance that creatures can move away from home point.


 

ProjectileGenerator

This is a special version of the particleGenerator that creates a damaging object. There are three additional fields found in the projectile generator not found in the particleGenerator

Field Name Type Description
bSpewUnseen bool True – The projectile generator will be spewing even though the unit may be hidden from view.
ProjectileClass class <Projectile> Particle primitive spawned for the effect.
ProjectileLifeSpan float Time in seconds that projectile exists once spawned
SpawnSoundRadius float Distance from generator that spawn sound can be heard
WaitTime float Time between spawning of projectiles


The damage from the projectile is set by parameters in the class definition for the projectile type, not by the generator itself.

TrashGenerator

This is another of the unique particle generators. This one produces items of trash that appear to blow along in the wind. These tend to be a bit ‘hoggish’ on the frame rate so use them sparingly. When placing the generator use the directional arrow as described above. The trash will move in this direction. If you place it at an angle other than horizontal with the ground it may look funny when the item of trash blows up into the air.

Field Name Type Description
Frequency float Chance each 10th of a second that a trash item will be generated.
TrashType menu Two possible items selectable. Paper or tumbleweeds
WindSpeed float The speed at which the trash is carried away from the generator.


Info

This section of classes deals with game information tools. One of the larger sections is the mission Script section which has categorized sub-classes for each of the Deus Ex missions. All of these script files are done with Unreal Script.

DeusExLevelInfo

These items must be included with every map generated. It contains the necessary information for the mission scripting to tie into the map. It will also contains the true north compass indicator and start up message string fields.

Field Name Type Description
bMultiPlayerMap Bool True – This map is set for multiplayer and will access future support scripts for multiplayer
MapAuthor String map authors name
MapName String file name of the map
Mission Location String geographic location of the map
MissionNumber Int This is the number of the mission
Script class <Info.MissionScript> This links the associated mission scripting with the map
startupMessage string [3] There are four sub-fields here. This is the information that is typed onto screen as the map loads. Note, however that it will run every time this map is accessed, not just the first time.
TrueNorth Int This value will determine the direction of true north for the in game compass. The map designer needs to determine this based on the overhead view of the map.



If north is the top of the overhead map, then north = 49152

If north is the right of the overhead map, then north = 0

If north is the bottom of the overhead map, then north = 16384

If north is the left of the overhead map, then north = 32768

If it's not a simple 90 degree offset, you can calculate it by taking the number of degrees clockwise from 0 (which points to the right) and multiplying it by 182.


ZoneInfo

This unti is used for defining differences in zone areas. A few tweaks were added form the original Unreal zones. Important properties for DE are listed below.

Property Name

Field Name Type Description
ZoneInfo bFogZone bool True – this zone will render volumetric lights and fog.
ZoneInfo bGravityZone bool True – This zone uses the ZoneGravity parameters. False – there is no gravity in this zone.
ZoneInfo bKillZone bool Tue – Zone will kill any players entering it.
ZoneInfo bNeutralZone bool True – Player cannot take damage while in this zone
ZoneInfo bPainZone bool True – This zone damages the player. NOTE: IF the DamagePerSec field is non-zero then the zone info can be triggered on and off to cause or stop pain.
ZoneInfo bWaterZone bool True – This zone is under water
ZoneInfo DamagePerSec int Damage accrued by player every second
ZoneInfo DamageString string Text displayed when damage occurs
ZoneInfo DamageType string Type of damage. Will access icon to be displayed on HUD indicating damage. Valid types are: Shot, Exploded, TearGas, PoisonGas, HalonGas, Radiation, Flamed (catches player on fire), Burned, Shocked, NanoVirus, EMP, Drowned, Stunned.
ZoneInfo ZoneFluidFriction float Fluid friction coefficient (normal = water =1.2)
ZoneInfo ZoneGravity vector Gravity within zone
ZoneInfo ZoneGroundFriction float Ground friction coefficient (normal = 4.0)
ZoneInfo ZonePlayerEvent string Event triggered each time player enters zone
ZoneInfo ZoneTerminalVelocity float Maximum speed any actor in zone can achieve
ZoneInfo ZoneVelocity vector Velocity vector of zone. Useful for strong water or air currents.
Zone Light AmbientBrightness byte Zone brightness
Zone Light AmbientHue byte Zone hue
Zone Light AmbientSaturation byte Zone saturation
Zone Light EnvironmentMap Class<Texture> Default texture for zone
Zone Light TextUPanSpeed float Horizontal panning speed of textures
Zone Light TexVPanSpeed float Vertical panning speed of textures
Zone Light ViewFog vector Color vector for fog. Only works if bFogZone=true.
Reverb bRayTraceReverb bool True – raytrace the reverb effects within this zone
Reverb bReverbZone bool True – Within this zone reverb is applied to all sounds
Reverb CutoffHz int Reverb effects are cut off of at this frequency
Reverb Delay int [6] Time in milliseconds that each reverb stage is delayed
Reverb Gain int [6] Volume for each of the reverb stages
Reverb Master Gain int Gain for all reverb effect
Reverb SpeedOfSound float Speed of sound within zone.


Inventory

All items of this calls are capable to be picked up by the player and placed into inventory. No other class allows this. Any items mod developers wish to have within the game for players to pick up should be placed into this class. All items have the Pickup property in common.

Field Name Type Description
bAutoActivate bool Obsolete
bCanActivate bool Obsolete
bCanHaveMultipleCopies bool True - item can be stacked in inventory
ExpireMessage String Text displayed once item is used up if it is charged.


DataVaultImage

These consist of all of the images available that can be inserted into the players DataVault. Some of these include the LibertyIslandMap, AmbrosiaFlyer, etc.

Ammo

Each ammo type has a set of common fields. Some of these were intended for future use but were never implemented.

Field Name Type Description
AmmoAmount int Total number of rounds in this item.
MaxAmmo int Number of rounds of this type that the player can possibly carry
ParentAmmo - Not used
UsedInWeaponSlot - Not used


DeusExPickup

These are all items not associated with weapons or ammo.

AugmentationCannister

Field Name Type Description
AugmentationCannister class <Augmentation> The name of the augmentation class type is typed in here. There is no menu set so user must locate correct aug type syntax from class. NOTE: There is a slot for two aug types to be listed. The augmentation class supports the decision process and requires the med bot to activate.


ChargedPickup

These items have a limited life span based on time. The time factors are decided in the Unreal script for the item. Time factors and effectiveness are varied based on if there is a skill associated with the particular item as defined by one of the charged pick up fields.

Field Name Type Description
ActivateSound sound file Sound when item is first used
bOneUseOnly bool True – the item can be used more than once.
DeActivateSound sound file Sound when item is used up
LoopSound sound file Sound while item is running
skillNeeded class <Skill> Skill that will modify the effectiveness of the item.


Liquor40Oz

Field Name Type Description
SkinColor menu Selection of skins for the bottle model


NanoKey

Field Name Type Description
KeyID string Name of the key. This must match the string for KeyID for any door this is to open. See DeusEx mover.
SkinColor menu Selection of skins for the nano key model.
WeaponMod

There are no fields that actually need to be changed for these. All variables for these items are coded within UnrealScript.



Weapon / DeusExWeapon

All Weapons in DeusEx have this property. Within are many fields to adjust weapons to fit just about any criteria needed for development of weapons in the DE universe.

Field Name

Type Description
AccurateRange int Range at which the accuracy of the weapon suffers no penalties
AmmoNames class <Ammo> [3] 3 sub fields containing classes of ammo allowable with this specific weapon.
AreaOfEffect menu Area of effect type. Current selections are point, sphere and cone.
baseAccuracy float Base accuracy of this weapon type
bAutomatic bool True – weapon continues to fire as long as weapon fire button is held down.
bCanTrack bool True – weapon has target tracking capability
bHandToHand bool True – weapon is defined to be a melee’ weapon
bHasLaser bool True – weapon has laser accuracy mod
bHasMuzzleFlash bool True – weapon displays a muzzle flash animation
bHasScope bool True – weapon has scope
bHasSilencer bool True – normal weapon firing noise is eliminated.
bPenetrating bool True – weapon has body penetrating damage type.
Concealability menu Can weapon be noticed by AI or other means. Selection of concealment is: None, Visual, Metal, All
EnemyEffective menu Weapon effectiveness versus different enemy types. Selection is: All, Organic, Robot
EnviroEffective menu Environments weapon is effective within. Selection is: All, Air, Water, Vacuum, AirWater, AirVacuum, WaterVacuum
GoverningSkill class <Skill> Skill class used to determine effective ness of player using this weapon
HitDamage int Damage done directly by weapon (note ammo carries the damage parameters)
LockedSound sound Sound weapon emits once locked on target.
LockTime float Time in seconds for target to be tracked before lock occurs.
LowAmmoWaterMark int Point at which ammo indication on HUD indicates that weapon resource is low.
maxRange int Maximum range of weapon. Beyond this point it cannot hit. Between this range and the AccurateRange field, damage is reduced in effectiveness.
NoiseLevel float How loud the weapon is. This is used by the AI to determine if opponents can hear the weapon firing.
ProjectileName class <Projectile> [3]  
recoilStrength float Recoil value (none = 0, max = 1)
reloadTime float Time in seconds to completely reload the weapon
ScopeFOV int Angular field of view from scope (Default =10)
ShotTime float Time in seconds between successive shots
StunDuration float Time target is stunned by weapon
TrackingSound sound Sound used by weapon when target is tracked.


Keypoint

AmbientSoundTriggered

These are used so that sound effects can be started and stopped from triggers. Tag name of AmbientSoundTriggered must be the Event name of the trigger.

Field Name

Type Description
bActive bool True – Sound is running when first encountered by player
bTriggerOnlyOnce bool True – Sound is triggered only once.


PickUpDistributor

This is used to distribute nanokeys to NPC inventories. It initiates when the map first starts up. It will only distribute to NPCs on the same map as the distributor.

Field Name

Sub-Field

Type Description
NanoKeyData Description String Description of the keys purpose (i.e. Maggie’s back door)
  KeyID String Name of Key. Used by mover in DeusExMover property. See DeusExMover section.
NanoKeyData ScriptedPawnTag String Tag name of NPC to be distributed to
NanoKeyData SkinColor Menu Selection of key appearances
RandomEvents

Once triggered this will initiate a series of random events based on chance defined by the frequency field.

Field Name

Type Description
bLOSRequired bool True – Events are only triggered if player can see this location
Events string [8] Tag names for 8 possible event triggers
Frequency float [8] Chance for each event to occur. Percentage define by 1.00 = 100% (Default = 0.125=12.5%). Chance for success is checked every second. Each frequency corresponds to the same numbered event above.


RandomSounds

This allows for a group of sounds to be played at random intervals in order to bring life to an area. Up to eight different sound effects can be run by the RandomSound generator.

Field Name

Type Description
bAmbient bool [8] True – This sound has been created as a continuously looped sound effect.
bFade bool [8] True – This sound will be faded in and then faded out. Only works for sounds where bAmbient = true.
bFakeDoppler bool [8] True – A Doppler effect will be added to the start and end of the sound effect. . Only works for sounds where bAmbient = true.
Frequency float [8] Percentage chance that the sound will be played. Check is made every second. (Default = 0.125 =12.5%)
maxDuration float [8] Maximum time, in seconds, that the sound will be played. Only works for sounds where bAmbient = true.
minDuration float [8] Minimum time, in seconds, the sound will be played. Only works for sounds where bAmbient = true.
Pitch int [8] Adjustment to the pitch of the sound. (Default = 64)
Sounds string <Sound File> [8] Name of the sound file to be played
Volume int [8] Volume of the sound to be played.


Two other factors will be useful for this sound generator. Under the sound property, insert any sound into the AmbientSound field. This will allow the radius of effect to be visible in the editor. It doesn’t matter what is placed here since it will not be played. Also the SoundRadius field under Sound property can be changed. This is the radius within which the random sounds will be heard.

SequenceEvents

This is a controller that will fire a series of events off. Each will be fired with a specified delay between each subsequent event and the events can be repeated if desired.

Field Name

Type Description
bLoop bool True – Sequence will repeat
bLOSRequired bool True – Player must be able to see this location for the sequence to run.
Delays float [8] Time in seconds between each event.
Events String [8] Tag name of each event to trigger.
RestartTime float Time delay before restarting sequence. bLoop must be true for this to work.


Navigation Point

These classes are used by the NPC’s and the player to negotiate the geometry of the world.

HidePoint

There are no parameters to set for this class. It is a very important navigation point for the AI of Deus Ex. Under certain conditions the NPCs will flee, seeking hide points to gather at. If these are not available the NPC will attempt to conceal themselves from the players LOS by the first available piece of geometry. Most of the time this does not look good or is not logical behavior. The best thing is to have several of these around a map in viable locations for NPCs to want to go to in case of an emergency. When a frightened NPC reaches a HidePoint, he will face the same direction that the HidePoint is facing.

MapExit

This is used as a link to each mission. Teleports were used between maps within a mission. We used the map exit as a one way directional teleport that follows the plot thread of the story. We usually triggered these off of the Black Helicopter in Deus Ex. That Helicopter would then trigger the map exit.

Field Name

Type Description
bPlayTransition bool True – play cinematic transition
cameraPathTag string Tag name of camera path used in cinematic transition
DestMap string Name of map to go to.


Pathnodes and PatrolPoints

Rules For Placing Pathnodes in UnrealEd

When adding pathnodes, always click on the floor in the 3D view while pressing "A" -- this puts the pathnodes at the right height above the floor for a normal-sized NPC. (Pathnodes for short NPCs, like cleaner bots, will have to be moved lower to the ground.)

Place your pathnodes less than 700 units apart. Pathnodes on stairs should be placed less than 350 units apart.

Always place your pathnodes on a direct line of sight with other pathnodes. Unreal can't connect pathnodes unless there's a direct line of sight between them.

Be sparing in your use of pathnodes. Place the minimum number of pathnodes needed to get around.

Pathnodes should be placed in corners or at decision points. Avoid putting a pathnode directly between two other pathnodes unless the distance between the two other pathnodes is greater than 700 units.

After you've place pathnodes, hit F8, select the "Lighting" tab, and click on the "Paths Define" button. This will generate the connections between pathnodes.

You can see the connections by selecting the View->Show Paths menu option in any of the view windows in UnrealEd. Paths shown in blue are clear paths -- any NPC of normal size will be able to navigate along these paths. Paths shown in red are narrow paths. Some NPCs will be too big to move down these paths. Avoid creating red paths if possible. (Sometimes it can't be avoided.)

You can sometimes eliminate red paths by moving a pathnode to a more accessible location with a clearer line of sight, and then rebuild the paths.

PatrolPoints are points that an NPC can patrol along. NPCs will always move in a predetermined order along these PatrolPoints. Once an NPC has reached a PatrolPoint, he goes to the next PatrolPoint in the list, which you can set via the NextPatrol property (under PatrolPoint). NextPatrol represents the tag of the next patrol point.



HomeBases are points which the NPC tries to keep in sight at all times while wandering. HomeBases are ignored when the NPC is fleeing or attacking. NPCs will try not to move out of sight of the HomeBase, and they will try to stay within a certain radius of the HomeBase (which you can set via the Extent property). An NPC's HomeBase can be set via that actor's OrderTag property.



Pawn

Pawns are the NPCs in Deus Ex. The class of most use is ScriptedPawn. Beneath this are subclasses of Animal, HumanCivilian, HumanMilitary, HumanThug, and Robot.

Useful Properties for all Pawns.

Property Name Field Name Type Description
AI bAlwaysPatrol bool True – Even if NPC is not in player LOS, the NPC will continue moving on its patrol route
AI bCanSit bool True – NPC can be made to sit down if ordered. Animations must be made if this is to work.
AI bCower bool True – NPC will cower if fear reactions occur
AI bEmitDistress bool True – Once the NPC is in a fleeing or cowering state they will emit distress that other AI can react to.
AI bHokeyPokey bool True – If NPC is set to dance (animations must exist for the NPC) then NPC will on occasion spin.
AI bKeepWeaponDrawn bool True – NPC will keep weapon in hand
AI bLeaveAfterFleeing bool True – Once NPC is fleeing and gets beyond player LOS, the NPC will be deleted from map.
AI bLikesNeutral bool True – NPC will respond to neutral NPCs as if they were allied together.
AI bPlayIdle bool True – When NPC is standing for a period of time they will play idle animations
AI bShowPain bool True – NPC shows pain flinch animation when damaged
AI bTickVisibleOnly bool Obsolete
AI bUseFirstSeatOnly bool True – If NPC is set for orders sitting, then it will move toward a designated or closest chair. If that chair somehow becomes unavailable, then it will not seek out another chair to sit in, but will instead revert to standing orders.
AI EnemyTimeout float time in seconds that NPC will remain in a seeking state before giving up
AI HearingThreshold float Acuteness of hearing. The closer the threshold is to zero, the better the hearing.
AI MaxProvocations int Number of times this NPC can be damaged by friendly units before they turn hostile to that attacker.
AI PeripherealVision float Acuteness of side vision
AI RaiseAlarm menu Choice of raising alarm before attacking, when fleeing, or never
AI SightRadius float Obsolete
AI Skill float Obsolete
AI visibilityThreshold float Acuteness of vision or how easily they can notice a player. The closer this number is to zero, the better the NPC’s sight is.


Alliance Property

Field Name Sub-Field Name Type Description
Alliance   string Alliance name this NPC belongs to
InitialAllinaces [8] AllianceLevel float Only viable choice are :

-1 = Hostile toward

0 = Neutral toward

1 = Friendly toward
  AllianceName string Name of alliance to apply the AllianceLevel to
  bPermanent bool True – other game conditions will not cause this alliance to be altered (i.e. they are friendly and you shoot them many times in the back)


Property Name Field Name Type Description
Combat bAimForHead bool True – the AI will try for head shots. Note that these are fast kills on the player
  baseAccuracy float Rating on how good the NPC is at hitting a target 0 = exceptional, 1 = Poor
  bAvoidAim bool True – NPC will dodge to avoid getting shot.
  bCanStrafe bool True – NPC can slide left and right while firing
  bDefendHome bool True – NPC will stay near home base and defend that point.
  bMustFaceTarget bool True – NPC must turn towards target before firing


Property Name Field Name Type Description
Conversation BarkBindName string Tag name for barks. If the character already has barks specifically generated for them in ConEdit, then this can be left blank and the bark system will use the BindName. There are some generic barks for the DE system which use Male, Female, and Child for the BarkBindName
Conversation BindName string This is the name of the conversation file attached to this character.
Conversation ConStartInterval float Time in seconds between separate conversations being played. (Default = 5.0)
Conversation FamiliarName string Name displayed on user interface when character has been met once
Conversation UnFamiliarName string Name displayed on user interface if character has never been met.


The next three properties drive the AI reaction state of the NPCs. The first one, Fear, creates a distress reaction in the NPC based on the fear type. The NPC will flee or cower when a fear reaction occurs. Most hostile or combat NPCs do not have any fear parameters set as True. The seconds is their Reaction. Reaction defines the type of situation they will react to or if they will ignore it. the final one is their Stimuli. These are situations that will cause a hostile reaction in the NPC. Unless the NPC has an alliance set with bPermanent = true, this can cause a reversal of their alliance level, making them hostile to the NPC or player that activated the Stimuli.

Property Name Field Name Type Description
Fear bFearAlarm bool True – Alarm creates distress reaction in NPC
Fear bFearCarcass bool True – NPC visually seeing a carcass creates distress reaction in NPC
Fear bFearDistress bool True – Other NPCs’ distress creates distress reaction in this NPC
Fear bFearHacking bool True – Hacking in view creates distress reaction in NPC
Fear bFearIndirectInjury bool True – Damage from indirect means (gas, explosives, etc.) creates distress reaction in NPC
Fear bFearInjury bool True – Damage from blows or other means directed at the NPC creates distress reaction in NPC
Fear bFearProjectiles bool True – Grenades or other projectile weapons in view of NPC, creates distress reaction in NPC
Fear bFearShot bool True – Being shot creates distress reaction in NPC
Fear bFearWeapon bool True – Seeing a weapon in the NPC or player hand creates distress reaction in NPC


Property Name Field Name Type Description
Reactions bReactAlarm bool True – NPC will react to an alarm going off within its auditory range
Reactions bReactCarcass bool True – NPC will react to a carcass within its visual range
Reactions bReactDistress bool True – NPC will react to distress from other NPCs
Reactions bReactFutz bool True – NPC will react if player picks up or uses an item within their visual range. NOTE: The item must have its Advanced Property bOwned = true. If the item is not flagged as such the NPC will not react to it.
Reactions bReactLoudNoise bool True – NPC will investigate a loud noise within its auditory range (i.e breaking a bottle, window, blowing up a LAM)
Reactions bReactPresence bool True – NPC reacts to the players presence
Reactions bReactProjectiles bool True – NPC reacts to projectiles thrown near it
Reactions bReactShot bool True – NPC reacts to being shot.


Note for Stimuli: If an NPC goes into hate or hostile mode due to a stimuli happening they will attack unless they are weaponless or out of ammo. In that case they will flee the area.

Property Name Field Name Type Description
Stimuli bHateCarcass bool True – NPC will turn hostile when they see a corpse
Stimuli bHateDistress bool True – NPC will turn hostile when they sense distress from another NPC.
Stimuli bHateHacking bool True – NPC will turn hostile if they see the player hacking a computer or ATM.
Stimuli bHateIndirectInjury bool True – NPC will turn hostile if they are damaged indirectly (gas, explosives, etc.)
Stimuli bHateInjury bool True – NPC will turn hostile if damaged by any means.
Stimuli bHateShot bool True – NPC will turn hostile if they are shot.
Stimuli bHateWeapon bool True – NPC will turn hostile if a weapon is pulled out or displayed in their presence.


Inventory

This property sets up the items the NPC is carrying. This must include weapons and ammo if they are to fire on others. The ammo and weapon also have to match up. NOTE: The secondary ammo types currently are not useable by NPCs (i.e. Sabot rounds, 20mm, etc.)

NPCs will utilize distance weapons if they have range, but within a certain radius they will use melee’ weapons or they will try to move away for distance.

Field Name Sub-Field Name Type Description
InitialInventory[8] Count int Amount of the item NPC has
  Inventory class<Inventory> Inventory class


Orders

Property Name Field Name Type Description
Orders AlarmTag string Alarm name tag of a specific alarm this NPC will seek out if set to raise alarm.
Orders bFixedStart bool Obsolete
Orders HomeExtent float The range the character will roam away from the HomeTag point (or Start). Used if orders are wandering, but this will be superceded if NPC goes into seeking or attacking mode.
Orders HomeTag string Name of a radius point for NPC to reference around. If set to "start", then this is the initial location the NPC begins at.
Orders Orders Selection Order type . See AI state information below.
Orders OrderTag string reference point for order. Could be a patrol point tag name, that of an NPC, chair, etc.
Orders SharedAlarmTag string Obsolete


 

AI State Information

NPCs that are sub-classed from ScriptedPawn may be given orders that they will attempt to carry out during the course of the game, in the absence of overriding behaviors (attacking, fleeing, etc.). These orders are specified by the Order variable. If an action is to be carried out on a specific actor, the OrderTag variable is used to specify which actor. The NPC will find the nearest actor whose Tag variable is set to the same name as OrderTag. If OrderTag is not set, the player is used as the actor.

The following behaviors may be set using the Order variable:

Idle: Causes the NPC to stand in one place and not react to anything.

Standing: Causes the NPC to stand in one place and react to events normally. Using the OrderTag variable, it is possible to specify a HomeBase actor that the NPC must stand at. The NPC will also face the direction the HomeBase is facing. If the NPC moves for any reason, and eventually reverts to his Standing orders, he will automatically return to the HomeBase; if no HomeBase is specified, he will stand in place.

Dancing: Causes the NPC to stand in one place and dance. This is almost identical to the Standing state, except that the NPC will play a dancing animation and periodically turn (if bHokeyPokey is enabled).

Wandering: Causes the NPC to wander randomly. Using the OrderTag variable, it is possible to specify a HomeBase actor that the NPC must remain close to. The NPC will attempt to stay within visual range of the HomeBase, and he will attempt to remain within the radius specified in the HomeBase’s Extent variable.

Sitting: Causes the NPC to sit down in a chair (any subclass of Seat). If OrderTag is set, the NPC will look for a seat with the specified tag; otherwise, he will simply sit in the nearest seat. If no seats exist (or are otherwise occupied), the NPC will go into a Standing state.

Patrolling: Causes the NPC to follow a chain of patrol points. OrderTag specifies the starting patrol point, and the next patrol point in the chain is determined by the patrol point’s NextPatrol variable. If an NPC arrives at a patrol point, and no further patrol points are in the chain, the NPC will enter a Standing state.

Following: Causes the NPC to follow a specific pawn. The pawn to be followed is specified by the OrderTag variable. The NPC will try to remain close to the pawn at all times, and will run if necessary to catch up. If the pawn being followed gets too close to the NPC, the NPC will eventually back up (to prevent hallway blockage and other problems).

Shadowing: Causes the NPC to follow a specific pawn in circumspect fashion. The pawn to be followed is specified by the OrderTag variable. The NPC will try to keep the pawn in sight at all times, running if necessary. If the pawn is watching the NPC, the NPC will appear to be in a Wandering state. This is the paranoid "is-he-following-me-or-isn’t-he" state.

WaitingFor: Causes the NPC to wait until he sees a specific pawn. Once the pawn is spotted, the NPC moves toward the pawn and tries to touch him (usually to initiate conversation). The pawn is specified via the OrderTag variable.



The following states are for scripting purposes only. They should not be specified using the Orders variable.

GoingTo: Causes the NPC to walk towards a specific actor, specified by the ubiquitous OrderTag variable.

RunningTo: Same as GoingTo, but causes the NPC to run to the actor designated by OrderTag.

Property Name Field Name Type Description
ScriptedPawn BHighlight bool True – NPC can be highlighted to select
ScriptedPawn BImportant bool True – The death of this NPC will be flagged so that the NPC will be deleted from any subsequent maps they are to appear on.
ScriptedPawn BInvincible bool True – The NPC cannot be killed.
ScriptedPawn BInWorld bool True – The NPC is created in the world. NPC can be made to appear later via scripting if this is set to False to start with.
ScriptedPawn ClotPeriod float  
ScriptedPawn WalkSound sound Sound file for the walking noise of the NPC.


Sounds

The fields within this property will be different depending on the class of the NPC or Pawn. All of the fields are for sound files and correspond to everything form Death sounds to Target Lost sounds.



Triggers

Several new trigger types were added to increase the functionality available to the designers. By default all of the triggers have collisions set to be on. There are several other properties and fields that can be adjusted to increase the functionality of all triggers. Most triggers can be chained together into a mess of convoluted logic. The ones used by the DE group are listed below.

Property Name Field Name Type Description
Collision BCollideActors bool True – Actors entering collision radius of trigger will set it off.
Collision CollisionHeight float Collision height of trigger in game units
Collision CollisionRadius float Collision radius of trigger in game units
Trigger BInitiallyActive bool True – Trigger is active when first encountered
Trigger BTriggerOnceOnly bool True – Trigger can be set off once only, then it becomes inert
Trigger ClassProximityType class<*> Any class type of actor can be placed here. None is the Default. This will only be checked if TriggerType = TT_ClassProximity. If TriggerType is set, then this will be the type of class that can only fire the trigger.
Trigger ReTriggerDelay float Time delay between triggering. Useful to keep from firing the trigger too many times and causing mover difficulties
Trigger TriggerType menu Selection of types: TT_PlayerProximity (Player sets off trigger – Default). TT_PawnProximity (any pawn sets it off. If you want a specific pawn use class proximity and that Pawns class type). TT_ClassProximity (specific class type ClassProximityType will set off trigger). TT_AnyProximity (any actor class or pawn will set off trigger). TT_Shoot (Weapon fire sets off trigger).
Events Event string Tag name of Actor, Pawn or other class item (movers, other triggers, etc.) to activate by this trigger.
Events Tag string ID name of trigger. Used as the activation name if called by other triggers or actors.


AllianceTriggers

These allow the designer to have the alliance of NPCs to be altered under certain conditions. These can be linked to other triggers allowing for conditional checks to be made prior to shifting the alliances

Property Name Field Name Type Description
Alliance Trigger Alliance string Name of alliance to change effected NPC(s) to
Alliance Trigger Alliances varies [8] Alliance Level (float) – hostility level of NPC to this alliance (-1.0.1)

AllianceName (string) – Alliance name

bPermenant (bool) – Can alliance level for this alliance be altered through other parameters.
Events Event string Tag name of NPC(s) to be effected by trigger
Events Tag string Name of trigger


BeamTrigger

This is an object producing a blue laser like beam in the direction indicated by the arrow in the overhead or side views of the editor. By standardization, DE used this beam exclusively for activating movers.

Property Name Field Name Type Description
BeamTrigger bison bool True – Beam is on when first encountered
Events Event string Tag name of mover(s) to be effected by trigger
Events Tag string Name of trigger


ConversationTrigger

Used to initiate a conversation when nearing an NPC or event area and the normal conversation radius on the NPC will not be the best solution.

Property Name Field Name Type Description
ConversationTrigger bCheckFalse bool True – Trigger if CheckFlag = false
ConversationTrigger BindName string Name of NPC that is to do the talking (This is their bind name too)
ConversationTrigger CheckFlag string Name of flag to check before running conversation. If left as Default (none), no flag check will occur
ConversationTrigger conversationTag string Conversation name that is to be played


DamageTrigger

Used in areas that you want to damage the player. Deus Ex used these in environmental areas (radiation, poisonous water, etc).

Property Name Field Name Type Description
DamageTrigger bConstantDamage bool True – Damage will occur as long as player (or whatever) is within the radius of the trigger.
DamageTrigger DamageAmount float Damage delivered to target on each time interval
DamageTrigger damageInterval float Time in seconds between damage
DamageTrigger DamageType string One of the viable damage types needs to be used here. Valid types are: Shot, Exploded, TearGas, PoisonGas, HalonGas, Radiation, Flamed (catches player on fire), Burned, Shocked, NanoVirus, EMP, Drowned, Stunned.


DataLinkTrigger

This trigger is used to activate the Data Link conversations.

Property Name Field Name Type Description
DataLinkTrigger bCheckFalse bool True – Trigger if CheckFlag = false
DataLinkTrigger CheckFlag string Name of flag to check before running conversation. If left as Default (none), no flag check will occur
DataLinkTrigger datalinkTag string Name of the data link conversation to be played.


FlagTrigger

This was most often used in conjunction with other triggers to provide conditional checks on game state or to set flags indicating a task was accomplished or area reached. Very useful and was used quite a bit in DE. These triggers can be daisy-chained effectively.

Property Name Field Name Type Description
Events Event string Tag name of trigger(s) to be effected by this flag trigger
Events Tag string Name of flag trigger
FlagTrigger bSetFlag bool True - Will set flag of FlagName to flagValue
FlagTrigger bTrigger bool True - Will trigger Event name in the Events property
FlagTrigger bWhileStandingOn bool True – Untrigger flag when player or actor leaves collision of radius
FlagTrigger flagExpiration int Mission number that flag will expire (be deleted) on. Defaults to –1, meaning after current mission.
FlagTrigger FlagName string Name of the flag
FlagTrigger flagValue bool Value to set flag or check flag for


GoalCompleteTrigger

Goals are initiated through conversations but at several times the goal needs to be indicated as complete once the task is accomplished. The goal complete trigger will erase the goal form the data vault.

Property Name Field Name Type Description
GoalCompleteTrigger goalName string Name of the goal to clear. A check of the conversation file will be necessary to get the name assigned to the goal.


LaserTrigger

This is an object that produces a blue laser like beam in the direction indicated by the arrow in the overhead or side views of the editor. By standardization, DE used this beam for initiating alarms or auto turrets.

Property Name Field Name Type Description
LaserTrigger bIsOn bool True – laser trigger is on when first encountered
LaserTrigger bNoAlarm bool True – laser does not sound an alarm.
Events Event string Tag name of event(s) to be effected by trigger
Events Tag string Name of trigger


LogicTrigger

One of the more complex triggers. This one will check for an event from two other triggers and will do a logical (Boolean) operation on their input and then will put out the appropriate trigger based on the outcome. Great for such things as seeing if two switches have been turned on before releasing the robots.

Property Name Field Name Type Description
LogicTrigger inGroup1 string Input one. Group field name under Object property of first trigger feeding logic Trigger
LogicTrigger inGroup2 string Input two. Group field name under Object property of second trigger feeding logic Trigger
LogicTrigger Not bool True - Invert output of logic trigger (True becomes False, False becomes True)
LogicTrigger OneShot bool True – Logic trigger will fire only once
LogicTrigger Op menu Selection of viable Boolean operations: GATE_AND, GATE_OR, GATE_XOR


Note that the Events property, Event name of both triggers that feed the LogicTrigger must match the Events property, Tag name of the LogicTrigger.

OrdersTrigger

These triggers allow the designer to issue new orders to an NPC while the game is in operation based on other events or conditions.

Property Name Field Name Type Description
OrdersTrigger Orders name Order type to give to the NPC. See section above on AI orders.
OrdersTrigger ordersTag name Tag name to reference order to. Could be a patrol point name or another NPC.
Events Event string Tag name of NPC(s) to be effected by trigger
Events Tag string Name of trigger


SenseTrigger

Verifies that an item is in the player or pawn’s inventory and if it is, then the trigger is activated.

Property Name Field Name Type Description
SenseTrigger KeyNeeded class<Inventory> Item required to be in inventory.
Events Event string Tag name of NPC(s) to be effected by trigger
Events Tag string Name of trigger


SequenceTrigger

Used to trigger elevator movers or multiMovers (see above)

Property Name Field Name Type Description
SequenceTrigger SeqNum int Used with ElevatorMover to go to a certain key frame. Used with the MultiMover to go to a certain set of key frames
Events Event string Tag name of mover(s) to be effected by trigger
Events Tag string Name of trigger


Shake Trigger

This creates a visual effect of shaking the users screen, but it also effects the play environment too. With a bit of extra scripting it can be made to move objects on the screen and rain debris down on the player (As during the conclusion of the Ship mission in Deus Ex).

Property Name Field Name Type Description
ShakeTrigger shakeRollMagnitude float Amplitude of roll displacement (Default = 1024.0)
ShakeTrigger shakeTime float Duration of shake in seconds. (Default =1)
ShakeTrigger shakeVertMagnitude float Amplitude of vertical displacement (Default = 16.0)


SkillAwardTrigger

Once certain events occurred, tasks were accomplished or areas reached the game can award skill points to the player . This can also be done through conversations.

Property Name Field Name Type Description
SkillAwardTrigger awardMessage string Message displayed on screen when award is given
SkillAwardTrigger skillPointsAdded int value of skill award.


Untrigger

Some things like Laser triggers and Beam triggers must be untriggered to turn them off. The Untrigger provides fast functionality to do this. The only fields that need to be affected are the event fields.

Property Name Field Name Type Description
Events Event string Tag name of item(s) to be effected by trigger
Events Tag string Name of trigger




IGN.com | GameSpy | Comrade | Arena | FilePlanet | GameSpy Technology
TeamXbox | Planets | Vaults | VE3D | CheatsCodesGuides | GameStats | GamerMetrics
AskMen.com | Rotten Tomatoes | Direct2Drive | Green Pixels
By continuing past this page, and by your continued use of this site, you agree to be bound by and abide by the User Agreement.
Copyright 1996-2009, IGN Entertainment, Inc.   About Us | Support | Advertise | Privacy Policy | User Agreement Subscribe to RSS Feeds RSS Feeds
IGN's enterprise databases running Oracle, SQL and MySQL are professionally monitored and managed by Pythian Remote DBA.