file: the name of he soundfile to use; can include a path
This kind of element is for specifying various fader features,
the faders being what causes the whole screen to change color
when one is underneath a liquid or getting hit by something.
It has two kinds of child elements, <fader> and <liquid>.
The first kind, <fader>, specifies features of each individual fader;
it has attributes
- index: which fader
- type: which type of fade effect to apply
- initial_opacity (floating point: 0 = none, 1 = complete)
- final_opacity (floating point: 0 = none, 1 = complete)
- period: time for fader effect to complete, in engine ticks (1/30 second)
- flags: various features; get this value by adding the numerical values
corresponding to the desired features:
- 1 (hex 0001) Full screen
- 2 (hex 0002) Random transparency; makes flickering effect
- priority: higher is higher priority
and a child element <color>, which is not indexed.
For more on specifying colors, go here.
The fader types are these:
- Tint: fade to the fader's color value:
[new color] = [old color] + ([fader color] - [old color])*[opacity]
- Randomize: do random shifts of the colors:
[new color] = [old color] + [opacity]*[random numbers]
- Negate: darkens light colors and lightens dark colors. For each channel:
[opacity complement] = 1 - [opacity]
if [old color] > 0.5 then
[new color] = max([old color], xor([fader color], [old color]) + [opacity complement])
else
[new color] = min([old color], xor([fader color], [old color]) - [opacity complement])
Intermediate results may be out of (0,1) range.
- Dodge: some weird processing. For each channel:
[new color] = max([old color], 1 - (1 - [fader color])*[old color] - [opacity])
Intermediate results may be out of (0,1) range.
- Burn: some weird processing. For each channel:
[opacity complement] = 1 - [opacity]
[new color] = max([old color],[fader color]*[old color] + [opacity complement])
Intermediate results may be out of (0,1) range.
- Soft tint: fade to the fader's color value multiplied by the intensity
(maximum of color-channel values):
[intensity] = max(color channels of [old color])
[new color] = [old color] + ([fader color]*[intensity] - [old color])*[opacity]
In all these equations, color values are from 0 (black) to 1 (white),
and out-of-range result values are reduced to that range by subtracting whichever integer
will put the result into that range.
The second kind, <liquid>, specifies faders for liquids;
it has attributes
- index: which liquid to apply the fader to
- fader: this specifies which fader to use for this liquid.
- opacity: how strong is the fader effect (floating point: 0 = none, 1 = complete)
The index is which one of these liquid types:
- Water
- Lava
- Sewage
- Jjaro
- Pfhor
This kind of element specifies various player-character features,
such as starting energy, starting oxygen, rebellion-map stripped energy
(specified with attributes), and starting items, damage types,
powerup durations and item assignments (specified with child elements),
and shapes (player collection and sequences for various states).
The attributes are:
- energy: how much to start with (default: 150)
- oxygen: how much to start with (default: 10800)
- stripped: how much energy one has if one starts in a rebellion level
- light: self-luminosity (the miner's-light effect) (floating point: default: 0.5)
- oxygen_deplete: how much oxygen one loses per engine tick under a liquid or in vacuum (default: 1)
- oxygen_replenish: how much oxygen one gains per engine tick in air (default: 0)
- vulnerability: what kind of damage (true damage type) one is vulnerable to when the
invincibility powerup is active (can be -1 (NONE)) (default: 9, fusion-bolt damage)
- guided: whether the players' projectiles seek their targets (default: false)
- half_visual_arc: the sideways angle from forward that the guided-projectile targeting will use
to look for in a target; it is in Marathon's angle units, where 90 degrees = 128 (default: 128/3 = 42).
- half_vertical_visual_arc: the vertical angle from horizontal that the guided-projectile targeting will use0
to look for in a target; it is in Marathon's angle units, where 90 degrees = 128 (default: 28/3 = 42).
- visual_range: In World Units (default: 31)
- dark_visual_range: In World Units (default: 31)
Note: the oxygen depletion and replenishment rates can be negative
if one so desires, making changes in the opposite direction.
The starting items can be set with an element of <item>,
which has attributes:
- index (which one in list)
- type (which item type)
Both of them are mandatory.
The first weapon in the list is the one that will get used.
The default list is:
- 0: Pistol
- 1: Knife
- 2: Knife
- 3: Pistol Ammo
- 4: Pistol Ammo
- 5: Pistol Ammo
- 6 to 15: Knife
The responses to various kinds of damage can be set with an element of <damage>,
which has attributes:
- index (which one in player-damage list; mandatory, but the others are optional)
- threshold: if the amount of damage is greater than this,
then fader (fade)+1 is used instead of fader (fade).
- fade: what of the faders to use.
- sound: Sound to make.
- death_sound: Death sound to make.
- death_action: Behavior of sprites when killed.
Here are the appropriate behavior types:
- 6: Hard death (blown to bits by explosion)
- 7: Soft death (stays in shape)
- 8: Flaming death
If there is none of something, then it gets a value of -1.
Soft death for sprites can also be specified with a -1.
The durations of the powerups can be set with an element of <powerup>.
It has these attributes
- invisibility (default: 2100 or 70 seconds)
- invincibility (default: 1500 or 50 seconds)
- extravision (default: 5400 or 3 minutes)
- infravision (default: 5400 or 3 minutes)
These have a value of the number of engine ticks the powerup lasts;
an engine tick is 1/30 second.
The item assignments of the powerups can be set with an element of <powerup_assign>.
It has these attributes
- invincibility: item ID (default: 11)
- invisibility: item ID (default: 10)
- infravision: item ID (default: 12)
- extravision: item ID (default: 17)
- triple_energy: item ID (default: 21)
- double_energy: item ID (default: 20)
- energy: item ID (default: 19)
- oxygen: item ID (default: 18)
If one turns some ammo or other non-powerup item into a powerup, be sure to set its item type to be "powerup"
with the items element.
Player shapes can be set with an element of <shape>, which differs from the usual element with that name;
the player shapes have an overall collection and various sequences,
and each element will set either that collection or one of the sequences.
It has these attributes, all of which are mandatory:
- type: overall type of shape value
- subtype: more specific type: depends on which overall type
- value: the shape value to use
The types and subtypes have these values:
- Collection and Death Sequences
- Collection (default: 6)
- Hard dying (default: 9)
- Soft dying (default: 8)
- Hard dead (default: 11)
- Soft dead (default: 10)
- Leg Sequences (player actions)
- Stationary (default: 7)
- Walking (default: 0)
- Running (default: 0)
- Sliding (default: 24)
- Airborne (default: 23)
- Idle-Weapon Torso Sequences
- Charging-Weapon Torso Sequences
- Firing-Weapon Torso Sequences
- Fists (defaults: 1, 1, 2)
- Pistol (defaults: 3, 3, 4)
- Fusion Pistol (defaults: 20, 21, 22)
- Assault Rifle (defaults: 26, 26, 27)
- Rocket Launcher (defaults: 14, 14, 15)
- Flamethrower (defaults: 12, 12, 13)
- Alien Weapon (defaults: 31, 31, 32)
- Shotgun (defaults: 16, 16, 17)
- Ball (defaults: 28, 28, 28)
- SMG (defaults: 33, 33, 34)
- Two Pistols (defaults: 5, 5, 6)
- Two Shotguns (defaults: 18, 18, 19)
This kind of element specifies various view features.
It has these attributes:
- map: indicates whether or not to show the overhead map (boolean; default: true)
- fold_effect: indicates whether or not to make the field of view stretch horizontally
and squeeze vertically as one teleports (boolean; default: true)
- static_effect: indicates whether or not to make teleporting objects have the sparkling
"static" effect and whether they get squeezed horizontally as they teleport (boolean; default: true)
This element has the child elements <font>, for setting on-screen-display fonts
and <fov>, which is for setting field-of-view features.
The default on-screen font is "Monaco", size 12, normal style;
for more on setting fonts, go here.
Field-of-view features are set with child element <fov>,
which has these attributes:
- normal: the normal field of view (default: 80)
- extra: the extravision-powerup field of view (default: 130)
- tunnel: the tunnel-vision field of view, good for long-distance sharpshooting
(default: 30)
- rate: how much to change the FOV in degrees/(engine tick) (default: 1.667 or 50 degrees/s)
- fix_h_not_v: fix the view's horizontal FOV angle instead of its vertical FOV angle (boolean; default: false).
Here is what happens when one shifts from a HUDded to a HUDless view:
- fix_h_not_v false: the horizontal FOV shrinks
- fix_h_not_v true: the vertical FOV expands
All of them are in degrees, all of them are floating-point values
(can be non-integer) between 0 and 180, and all of them are optional.
This kind of element specifies various features of the weapons,
such as shell casings and weapon order (child elements <shell_casings>
and <order>).
Shell-casing features one can specify
with the child element <shell_casings>,
which has these attributes:
- index (mandatory)
- coll: which shapes collection
- seq: which sequence
- x0: initial position (horizontal)
- y0: initial position (vertical)
- vx0: initial velocity (horizontal)
- vy0: initial velocity (vertical)
- dvx: acceleration (horizontal)
- dvy: acceleration (vertical)
The time unit here is the engine tick;
x0, y0, vx0, vy0, dvx, and dvy are all floating-point values
that are relative to the screen (0 = left, 1 = right; 0 = bottom, 1 = top).
The various types of shell casings are:
- Assault rifle
- Centered pistol
- Left-side pistol
- Right-side pistol
- SMG
The weapon order can be specified with the child element
<order>, which has these attributes, both mandatory:
- index: which in the ordering list
- weapon: what weapon index
The default weapon order is
- Fist
- Pistol
- Fusion Pistol
- Shotgun
- Assault Rifle
- SMG
- Flamethrower
- Rocket Launcher
- Alien Weapon
- Ball
This kind of element specifies various features of items that can be picked up.
These are specified with the child element <item>,
which has these attributes:
- index (mandatory)
- type: what kind of item:
- weapon
- ammunition
- powerup
- generic item
- weapon powerup
- ball
- singular: index of singular name string (only one of them)
- plural: index of plural name string (more than one of them)
- maximum: maximum number that a player may possess
- invalid: what environments the item cannot be used in;
this value is determined by the sum of values for individual
environment types:
- 0 (hex 0000) Normal
- 1 (hex 0001) Vacuum
- 2 (hex 0002) Magnetic
- 4 (hex 0004) Rebellion
- 8 (hex 0008) Low Gravity
- 8192 (hex 2000) Network
- 16384 (hex 4000) Single Player
The item shape can be specified with a shape
child element, which can be blank (<shape/>).
This kind of element specifies various features of scenery objects,
including size and solidity.
Each individual type of scenery object is specified with a <object> child element,
which has these attributes:
- index: which one of the scenery-object types (mandatory)
- flags: various features; get this value by adding the numerical values
corresponding to the desired features:
- 1 (hex 0001) Solid (can't pass through it)
- 2 (hex 0002) Animated
- 4 (hex 0004) Destroyable
- radius: horizontal dimension in internal units, for doing collision detection.
- height: vertical dimension like above; if negative,
then object's extent downward from reference point (good for ceiling objects).
- destruction: effect to make when destroyed (-1 is none).
This element's shapes can be specified with child elements
<normal> and <destroyed>, for before-and-after shapes;
each of them has the actual shape value specified with a
shape child element.
The index is which one of these scenery-object types:
- Lava: light dirt
- Lava: dark dirt
- Lava: bones
- Lava: bone
- Lava: ribs
- Lava: skull
- Lava: hanging light 1
- Lava: hanging light 2
- Lava: small cylinder
- Lava: large cylinder
- Lava: block 1
- Lava: block 2
- Lava: block 3
- Water: pistol clip
- Water: short light
- Water: long light
- Water: siren
- Water: rocks
- Water: blood drops
- Water: water thing
- Water: gun
- Water: Bob remains
- Water: puddles
- Water: big puddles
- Water: security monitor
- Water: alien supply can
- Water: machine
- Water: fighter's staff
- Sewage: stubby green light
- Sewage: long green light
- Sewage: junk
- Sewage: big antenna 1
- Sewage: big antenna 2
- Sewage: alien supply can
- Sewage: bones
- Sewage: big bones
- Sewage: Pfhor pieces
- Sewage: Bob pieces
- Sewage: Bob blood
- Pfhor: green light
- Pfhor: small alien light
- Pfhor: alien ceiling rod light
- Pfhor: bulbous yellow alien object
- Pfhor: square gray organic object
- Pfhor: Pfhor skeleton
- Pfhor: Pfhor mask
- Pfhor: green stuff
- Pfhor: Hunter shield
- Pfhor: bones
- Pfhor: alien sludge
- Jjaro: short ceiling light
- Jjaro: long light
- Jjaro: weird rod
- Jjaro: Pfhor ship
- Jjaro: Sun
- Jjaro: large glass container
- Jjaro: nub 1
- Jjaro: nub 2
- Jjaro: Lh'owon
- Jjaro: floor whip antenna
- Jjaro: ceiling whip antenna
This kind of element is for modifying landscape rendering.
This element has two kinds of child elements, <clear> and <landscape>.
The first one, <clear>, clears the landscape options,
setting them back to their defaults; if it has an attribute of "coll",
it will clear the sequences for the collection specified in that attribute's value;
if not, it will clear all the sequences.
However, this command can be followed by commands to set up landscape options,
which will then be executed as if no "clear" command had been issued.
The second one, <landscape>, specifies the landscape options themselves.
It takes these attributes:
- coll: which collection (mandatory)
- frame: which frame to apply the options to (default: -1, all frames)
- horiz_exp: exponent for power of 2 that is the number of wraparound repeats in the horizontal direction.
(default: 1 - two repeats)
- vert_exp: exponent for power of 2 that makes a vertical scaling equal to the scaling
produced by the same value of horiz_exp in the horizontal direction. (default: 1 - equal to two horizontal repeats)
- ogl_asprat_exp: exponent for power of 2 that is the ratio of width to height
of the part of the texture that OpenGL will use (width is fixed; height can be variable).
This part will always be centered in height, and will either include some untextured area
or will not include the top and bottom parts. (default: 1 -- height is 1/2 width)
- vert_repeat: whether texture repeats in the vertical direction
(default: false -- clamped in the vertical direction; last pixels stretched out)
- azimuth: angle in degrees to rotate the texture leftward relative to the map.
This could be useful for aligning landscape features with map ones. (default: 0)
This kind of element is for setting what textures are to be loaded.
It has one attribute, "landscapes", which is boolean;
it indicates whether or not to load M2/Moo-style landscapes (collections 26 to 30).
It also has a child element, <texture_env>, for indicating what wall-texture and
scenery collections are to be loaded.
It takes these attributes, all mandatory:
- index: which one of the texture environments (water, lava, sewage, etc.)
- which: which position in the texture-environment definition (0 = first, etc;).
There are currently 7 such positions available.
- coll: which collection in that position; -1 is no collection.
The defaults for Marathon 2/oo are, in order (walls, scenery):
- 17, 22 -- Lh'owon Water
- 18, 23 -- Lh'owon Lava
- 19, 24 -- Lh'owon Sewage
- 20, 25 -- Jjaro
- 21, 26 -- Pfhor
Those for Marathon 1 are, in order (walls, control panels, scenery):
- 17, 8, 23 -- Marathon Set 1
- 18, 8, 23 -- Marathon Set 2
- 19, 8, 23 -- Marathon Set 3
- 2, 24, 25 -- Pfhor
Note also that Marathon 1 has its landscapes in the wall-texture collections;
the attribute "landscapes" is to be false for it.
This kind of element is for modifying the OpenGL rendering.
Currently, both texture-rendering modification and fog are supported;
texture-rendering modification modifies the rendering of each bitmap.
This element has these kinds of child elements, <txtr_clear>, <texture>,
<model_clear>, <model>, and <fog>.
The first one, <txtr_clear>, clears the texture options,
setting them back to their defaults. If it has an attribute of "coll",
it will clear the sequences for the collection specified in that attribute's value;
if not, it will clear all the sequences.
However, this command can be followed by commands to set up texture options,
which will then be executed as if no "txtr_clear" command had been issued.
The next one, <texture>, specifies the texture options themselves.
It takes these attributes:
- coll: which collection (mandatory).
- clut: which color table. Values 0 to 7 are the familiar color-table values,
and there are these special values:
- All color tables: -1 (default)
- Infravision: 8
- Silhouette: 9 [used for invisibility and static effect]
- bitmap: which one to apply the options to (mandatory).
- opac_type: what type of opacity to use (default: 0 -- crisp edges).
- opac_scale: scaling value for the opacity;
how much to multiply it by (default: 1 -- no change).
- opac_shift: shift value for the opacity;
how much to add after multiplying (default: 0 -- no change).
- void_visible: can see into the void (what's not in any map polygon) through this texture;
can cause smearing and weird show-through (default: false; cannot see into void).
- normal_image: the name of the file whose image content to substitute
in "normal" rendering (sensitive to light levels).
- normal_mask: the name of the file whose image content becomes the opacity mask
for "normal" rendering (sensitive to light levels).
It must be used with a normal_image file.
- glow_image: the name of the file whose image content to substitute
in "glowing" rendering (independent of light levels).
- glow_mask: the name of the file whose image content becomes the opacity mask
for "glowing" rendering (independent of light levels).
It must be used with a glow_image file.
- image_scale: The amount to scale a substituted sprite, from pixel units to internal distance units.
If it is zero or less, then it and the offsets are ignored.
- x_offset: The amount to shift the top left corner rightward, in internal units.
- y_offset: The amount to shift the top left corner downward, in internal units.
Note: all resulting values will be pegged to the range 0 to 1.
Here are the various opacity types:
- Crisp edges. The opacity threshold is 0.5.
- Fuzzy edges.
- Fuzzy edges with opacity = average of color channels.
- Fuzzy edges with opacity = maximum of color channels.
The opacities of all but the first will be scaled and shifted
with opac_scale and opac_shift.
The first one of these is good for objects with well-defined edges;
the others are good for clouds, flames, energy-weapon bolts, and so forth,
which will not have sharp boundaries.
The average and maximum modes were included as a way of producing variable opacity
without adding any new files; this hack was inspired by the semitransparency handling
in the Tomb Raider series.
The idea here is that the brighter regions are likely to be the more opaque ones
in these cases.
I've put both of them in because they behave somewhat differently;
max has the same strength for saturated colors as for grays,
while mean has less strength for saturated colors than for grays.
The next one, <model_clear>, clears all the model definitions;
it works much like <txtr_clear>.
The next one, <model> specifies a static 3D model to be used in place
of some sequence.
It takes these attributes and a child element <skin>:
- coll: which collection (mandatory).
- seq: which sequence (mandatory).
- file: the name of the file containing the model data.
- type: a string identifying the model-data format.
Alias|Wavefront models have a type of "wave" or "wavefront".
If it is absent, the type will then be guessed from the file contents,
an operation that may work on some file formats but not others.
- scale: how much to scale the model before rendering,
from model coordinates to internal coordinates.
A negative scale will cause the model to be reflected around all three axes
(default: 1).
- x_rot: rotation in degrees around the x-axis (default: 0).
- y_rot: rotation in degrees around the y-axis (default: 0).
- z_rot: rotation in degrees around the z-axis (default: 0).
- x_shift: shift in internal units in the x direction (default: 0).
- y_shift: shift in internal units in the y direction (default: 0).
- z_shift: shift in internal units in the z direction (default: 0).
- side: which side is visible:
- +: clockwise side
- 0: both sides
- -: counterclockwise side
The scaling and rotations will be applied before the shifts;
the rotations will be applied in order x, y, and z.
Its child element of <skin> has these attributes,
which closely parallel those of <texture>:
- clut: which color table (default: -1 -- all of them).
- opac_type: what type of opacity to use (default: 0 -- crisp edges).
- opac_scale: scaling value for the opacity;
how much to multiply it by (default: 1 -- no change).
- opac_shift: shift value for the opacity;
how much to add after multiplying (default: 0 -- no change).
- normal_image: the name of the file whose image content to substitute
in "normal" rendering (sensitive to light levels).
- normal_mask: the name of the file whose image content becomes the opacity mask
for "normal" rendering (sensitive to light levels).
It must be used with a normal_image file.
- glow_image: the name of the file whose image content to substitute
in "glowing" rendering (independent of light levels).
- glow_mask: the name of the file whose image content becomes the opacity mask
for "glowing" rendering (independent of light levels).
It must be used with a glow_image file.
The final one, <fog>, has these attributes:
- type: which type of fog:
- Above liquid
- Below liquid
The default is 0 (above liquid).
- on: (boolean; default: false)
- depth: the fog depth in World Units (default: 8)
and a color subelement, which indicates the fog color
(default: gray [red = green = blue = 0.5]).
This kind of element specifies various dynamic limits,
more specifically, the maximum numbers of various entities whose quantity
varies during the game.
These are specified with various child elements, each one of which
has a mandatory attribute of "value", which is set to the appropriate number.
Here they are:
- <objects> (default: 1024) Every sort of inhabitant object (players, monsters, items, projectiles, scenery)
- <monsters> (default: 512) Monsters / Non-Player Characters (NPC's).
- <paths> (default: 128) Paths for NPC's to follow; if not enough, they will not move.
- <projectiles> (default: 128) Bullets, missiles, flame, fist punches, etc.
- <effects> (default: 128) Explosions, splashes, etc.
- <rendered> (default: 1024) How many inhabitants to render at any one time.
- <local_collision> (default: 64) Target visibility, NPC-NPC collisions, etc.
- <global_collision> (default: 256) Projectiles with other objects
This is the default player name in netgames, which takes the form:
<player_name>Marathon Player</player_name>
This element is for setting the default keyboard settings.
It has an attribute "set" which indicates which of the three sets to set keys for
(Standard, Arrows, PowerBook), and a child element <key> with attributes
- index: which key action
- mac: the MacOS key code (*not* ASCII)
- sdl: the SDL key code
Here are the various actions:
- Moving Forward
- Moving Backward
- Turning Left
- Turning Right
- Sidestepping Left
- Sidestepping Right
- Looking Left
- Looking Right
- Looking Up
- Looking Down
- Looking Center
- Cycle Weapons Backward
- Cycle Weapons Forward
- Left Trigger State
- Right Trigger State
- Sidestep Don't Turn
- Run Don't Walk
- Look Don't Turn
- Action Trigger State
- Toggle Map
- Microphone Button
Here are the MacOS key definitions; note that these are Apple's virtual key values,
which differ from the ASCII values.
This documentation was cribbed from Figures 2-9 and 2-10 in the MacOS Classic low-level keyboard-input documentation.
Those illustrations show hexadecimal values; they have been converted to decimal here:
- <escape> - 53
- F1 - 122
- F2 - 120
- F3 - 99
- F4 - 118
- F5 - 96
- F6 - 97
- F7 - 98
- F8 - 100
- F9 - 101
- F10 - 109
- F11 - 103
- F12 - 111
- F13 - 105
- F14 - 107
- F15 - 113
- ` - 50
- 1 - 18
- 2 - 19
- 3 - 20
- 4 - 21
- 5 - 23
- 6 - 22
- 7 - 26
- 8 - 28
- 9 - 25
- 0 - 29
- - - 27
- = - 24
- <delete> - 51
- <tab> - 48
- q - 12
- w - 13
- e - 14
- r - 15
- t - 17
- y - 16
- u - 32
- i - 34
- o - 31
- p - 35
- [ - 33
- ] - 30
- \ - 42
- <caps lock> - 57
- a - 0
- s - 1
- d - 2
- f - 3
- g - 5
- h - 4
- j - 38
- k - 40
- l - 37
- ; - 41
- ' - 39
- <return> - 36
- <shift> - 56
- z - 6
- x - 7
- c - 8
- v - 9
- b - 11
- n - 45
- m - 46
- , - 43
- . - 47
- / - 44
- <control> - 59
- <option> - 58
- <command> - 55
- <space> - 49
- <help> - 114
- <home> - 115
- <page up> - 116
- <del> - 117
- <end> - 119
- <page down> - 121
- <up arrow> - 126
- <left arrow> - 123
- <down arrow> - 125
- <right arrow> - 124
- Keypad Clear - 71
- Keypad = - 81
- Keypad / - 75
- Keypad * - 67
- Keypad 7 - 89
- Keypad 8 - 91
- Keypad 9 - 92
- Keypad - - 78
- Keypad 4 - 86
- Keypad 5 - 87
- Keypad 6 - 88
- Keypad + - 69
- Keypad 1 - 83
- Keypad 2 - 84
- Keypad 3 - 85
- Keypad Enter - 76
- Keypad 0 - 82
- Keypad . - 65
Here are the SDL key definitions, which have been cribbed from the SDL include file
"SDL_keysym.h":
/* The keyboard syms have been cleverly chosen to map to ASCII */
SDLK_UNKNOWN = 0,
SDLK_FIRST = 0,
SDLK_BACKSPACE = 8,
SDLK_TAB = 9,
SDLK_CLEAR = 12,
SDLK_RETURN = 13,
SDLK_PAUSE = 19,
SDLK_ESCAPE = 27,
SDLK_SPACE = 32,
SDLK_EXCLAIM = 33,
SDLK_QUOTEDBL = 34,
SDLK_HASH = 35,
SDLK_DOLLAR = 36,
SDLK_AMPERSAND = 38,
SDLK_QUOTE = 39,
SDLK_LEFTPAREN = 40,
SDLK_RIGHTPAREN = 41,
SDLK_ASTERISK = 42,
SDLK_PLUS = 43,
SDLK_COMMA = 44,
SDLK_MINUS = 45,
SDLK_PERIOD = 46,
SDLK_SLASH = 47,
SDLK_0 = 48,
SDLK_1 = 49,
SDLK_2 = 50,
SDLK_3 = 51,
SDLK_4 = 52,
SDLK_5 = 53,
SDLK_6 = 54,
SDLK_7 = 55,
SDLK_8 = 56,
SDLK_9 = 57,
SDLK_COLON = 58,
SDLK_SEMICOLON = 59,
SDLK_LESS = 60,
SDLK_EQUALS = 61,
SDLK_GREATER = 62,
SDLK_QUESTION = 63,
SDLK_AT = 64,
/*
Skip uppercase letters
*/
SDLK_LEFTBRACKET = 91,
SDLK_BACKSLASH = 92,
SDLK_RIGHTBRACKET = 93,
SDLK_CARET = 94,
SDLK_UNDERSCORE = 95,
SDLK_BACKQUOTE = 96,
SDLK_a = 97,
SDLK_b = 98,
SDLK_c = 99,
SDLK_d = 100,
SDLK_e = 101,
SDLK_f = 102,
SDLK_g = 103,
SDLK_h = 104,
SDLK_i = 105,
SDLK_j = 106,
SDLK_k = 107,
SDLK_l = 108,
SDLK_m = 109,
SDLK_n = 110,
SDLK_o = 111,
SDLK_p = 112,
SDLK_q = 113,
SDLK_r = 114,
SDLK_s = 115,
SDLK_t = 116,
SDLK_u = 117,
SDLK_v = 118,
SDLK_w = 119,
SDLK_x = 120,
SDLK_y = 121,
SDLK_z = 122,
SDLK_DELETE = 127,
/* End of ASCII mapped keysyms */
/* International keyboard syms */
SDLK_WORLD_0 = 160, /* 0xA0 */
SDLK_WORLD_1 = 161,
SDLK_WORLD_2 = 162,
SDLK_WORLD_3 = 163,
SDLK_WORLD_4 = 164,
SDLK_WORLD_5 = 165,
SDLK_WORLD_6 = 166,
SDLK_WORLD_7 = 167,
SDLK_WORLD_8 = 168,
SDLK_WORLD_9 = 169,
SDLK_WORLD_10 = 170,
SDLK_WORLD_11 = 171,
SDLK_WORLD_12 = 172,
SDLK_WORLD_13 = 173,
SDLK_WORLD_14 = 174,
SDLK_WORLD_15 = 175,
SDLK_WORLD_16 = 176,
SDLK_WORLD_17 = 177,
SDLK_WORLD_18 = 178,
SDLK_WORLD_19 = 179,
SDLK_WORLD_20 = 180,
SDLK_WORLD_21 = 181,
SDLK_WORLD_22 = 182,
SDLK_WORLD_23 = 183,
SDLK_WORLD_24 = 184,
SDLK_WORLD_25 = 185,
SDLK_WORLD_26 = 186,
SDLK_WORLD_27 = 187,
SDLK_WORLD_28 = 188,
SDLK_WORLD_29 = 189,
SDLK_WORLD_30 = 190,
SDLK_WORLD_31 = 191,
SDLK_WORLD_32 = 192,
SDLK_WORLD_33 = 193,
SDLK_WORLD_34 = 194,
SDLK_WORLD_35 = 195,
SDLK_WORLD_36 = 196,
SDLK_WORLD_37 = 197,
SDLK_WORLD_38 = 198,
SDLK_WORLD_39 = 199,
SDLK_WORLD_40 = 200,
SDLK_WORLD_41 = 201,
SDLK_WORLD_42 = 202,
SDLK_WORLD_43 = 203,
SDLK_WORLD_44 = 204,
SDLK_WORLD_45 = 205,
SDLK_WORLD_46 = 206,
SDLK_WORLD_47 = 207,
SDLK_WORLD_48 = 208,
SDLK_WORLD_49 = 209,
SDLK_WORLD_50 = 210,
SDLK_WORLD_51 = 211,
SDLK_WORLD_52 = 212,
SDLK_WORLD_53 = 213,
SDLK_WORLD_54 = 214,
SDLK_WORLD_55 = 215,
SDLK_WORLD_56 = 216,
SDLK_WORLD_57 = 217,
SDLK_WORLD_58 = 218,
SDLK_WORLD_59 = 219,
SDLK_WORLD_60 = 220,
SDLK_WORLD_61 = 221,
SDLK_WORLD_62 = 222,
SDLK_WORLD_63 = 223,
SDLK_WORLD_64 = 224,
SDLK_WORLD_65 = 225,
SDLK_WORLD_66 = 226,
SDLK_WORLD_67 = 227,
SDLK_WORLD_68 = 228,
SDLK_WORLD_69 = 229,
SDLK_WORLD_70 = 230,
SDLK_WORLD_71 = 231,
SDLK_WORLD_72 = 232,
SDLK_WORLD_73 = 233,
SDLK_WORLD_74 = 234,
SDLK_WORLD_75 = 235,
SDLK_WORLD_76 = 236,
SDLK_WORLD_77 = 237,
SDLK_WORLD_78 = 238,
SDLK_WORLD_79 = 239,
SDLK_WORLD_80 = 240,
SDLK_WORLD_81 = 241,
SDLK_WORLD_82 = 242,
SDLK_WORLD_83 = 243,
SDLK_WORLD_84 = 244,
SDLK_WORLD_85 = 245,
SDLK_WORLD_86 = 246,
SDLK_WORLD_87 = 247,
SDLK_WORLD_88 = 248,
SDLK_WORLD_89 = 249,
SDLK_WORLD_90 = 250,
SDLK_WORLD_91 = 251,
SDLK_WORLD_92 = 252,
SDLK_WORLD_93 = 253,
SDLK_WORLD_94 = 254,
SDLK_WORLD_95 = 255, /* 0xFF */
/* Numeric keypad */
SDLK_KP0 = 256,
SDLK_KP1 = 257,
SDLK_KP2 = 258,
SDLK_KP3 = 259,
SDLK_KP4 = 260,
SDLK_KP5 = 261,
SDLK_KP6 = 262,
SDLK_KP7 = 263,
SDLK_KP8 = 264,
SDLK_KP9 = 265,
SDLK_KP_PERIOD = 266,
SDLK_KP_DIVIDE = 267,
SDLK_KP_MULTIPLY = 268,
SDLK_KP_MINUS = 269,
SDLK_KP_PLUS = 270,
SDLK_KP_ENTER = 271,
SDLK_KP_EQUALS = 272,
/* Arrows + Home/End pad */
SDLK_UP = 273,
SDLK_DOWN = 274,
SDLK_RIGHT = 275,
SDLK_LEFT = 276,
SDLK_INSERT = 277,
SDLK_HOME = 278,
SDLK_END = 279,
SDLK_PAGEUP = 280,
SDLK_PAGEDOWN = 281,
/* Function keys */
SDLK_F1 = 282,
SDLK_F2 = 283,
SDLK_F3 = 284,
SDLK_F4 = 285,
SDLK_F5 = 286,
SDLK_F6 = 287,
SDLK_F7 = 288,
SDLK_F8 = 289,
SDLK_F9 = 290,
SDLK_F10 = 291,
SDLK_F11 = 292,
SDLK_F12 = 293,
SDLK_F13 = 294,
SDLK_F14 = 295,
SDLK_F15 = 296,
/* Key state modifier keys */
SDLK_NUMLOCK = 300,
SDLK_CAPSLOCK = 301,
SDLK_SCROLLOCK = 302,
SDLK_RSHIFT = 303,
SDLK_LSHIFT = 304,
SDLK_RCTRL = 305,
SDLK_LCTRL = 306,
SDLK_RALT = 307,
SDLK_LALT = 308,
SDLK_RMETA = 309,
SDLK_LMETA = 310,
SDLK_LSUPER = 311, /* Left "Windows" key */
SDLK_RSUPER = 312, /* Right "Windows" key */
SDLK_MODE = 313, /* "Alt Gr" key */
SDLK_COMPOSE = 314, /* Multi-key compose key */
/* Miscellaneous function keys */
SDLK_HELP = 315,
SDLK_PRINT = 316,
SDLK_SYSREQ = 317,
SDLK_BREAK = 318,
SDLK_MENU = 319,
SDLK_POWER = 320, /* Power Macintosh power key */
SDLK_EURO = 321, /* Some european keyboards */
/* Add any other keys here */
SDLK_LAST
This element controls whether or not the engine will respond to the cheat codes;
it has these attributes:
- on: it is boolean (default: false [cheating off])
- mac_keymod: Value that indicates the key modifiers to use in the MacOS version;
these keys must be pressed while typing the cheat code.
and this child element: <keyword>, which is for specifying the cheat keywords.
It has a mandatory attribute, "index", and some contained text, as with the text-string elements.
The MacOS key-modifier code is the sum of these values:
- Command: 256
- Shift: 512
- Caps Lock: 1024
- Option: 2048
- Control: 4096
and defaults to the control key only (4096).
Thus, if one wants the key modifiers to be control+shift,
the "mac_keymod" attribute would get a value of 4096+512 = 4608.
The cheat-code keywords and their defaults are
- Energy (1x): NRG
- Oxygen: OTWO
- Map Everything: MAP
- Invisible: BYE
- Invincible: NUKE
- Infravision: SEE
- Extravision: WOW
- Pistol: MAG
- Assault Rifle: RIF
- Rocket Launcher: POW
- Flamethrower: TOAST
- Fusion Gun: MELT
- Shotgun: PUFF
- SMG: ZIP
- Alien weapon: PZBXAY
- All weapons' ammo: AMMO
- Jump: QWE
- Everything (almost): SHIT
- Save at this spot: YOURMOM
For example, making the energy cheat into "JUICE" means setting up
<keyword index="0">JUICE</keyword>
Unlike most MML elements, a level-script element can only live in a map file,
and it must be TEXT resource 128 or some equivalent, in order for its parser
to know where to find it.
Its root element is <marathon_levels> and not
<marathon>, to distinguish it from the usual sort of MML.
It has child elements <level>, <end>, <default>, <restore>,
and <end_screens>,
all but the last one specify what individual level scripts to execute. The element <level>
has a mandatory attribute, "index", which specifies which level the script is for;
the first one is index 0.
The element <end> specifies a script that is for the end of a game;
The element <default> specifies a script that is for the entire map file;
it is executed before a level's script is executed, for rather obvious reasons.
The element <restore> is intended to restore parameters to their A1 defaults
when switching to another map file; this is done because the parameters that the MML parser sets
are set in a "sticky" fashion,
and because saving and restoring default values inside the code
would require a whole lot of extra coding.
These elements have child elements that specify the script entries;
the entries are executed in the order that they are specified in the file.
This means that music files played in sequential order will be played in the order
that they are specified in, the first in the list played first, etc.
- <mml> executes the MML script in the resource specified in the value of the attribute "resource"
- <pfhortran> executes the Pfhortran script in the resource specified in the value of the attribute "resource"
- <music> plays the music file specified in the value of the attribute "file"
- <random_order> has the boolean attribute "on", which indicates whether
the music files are to be played in random order;
if not (the default), they are played in looping sequence.
- <movie> plays at the beginning of a level the movie file
specified in the value of the attribute "file".
It has an optional attribute, "size" (default: 2),
which indicates how much the movie is to be scaled when playing back.
Directoris and files are specified in Unix fashion, <dirname>/<dirname>/<filename>,
with a ':' being translated into a '/' in the MacOS.
The root directory for such specifications is the map file's parent directory,
so something like "Music/bang_my_head.mp3" means looking for file "bang_my_head.mp3"
in the directory "Music", which is in the same directory that the map file lives in.
The MacOS version uses Quicktime for music and movie playing,
meaning that any of these formats can be used:
- AIFF
- Sun's AU
- Microsoft's WAVE
- MP3
- MIDI
Finally, the <end_screens> element is for specifying which PICT resources
are to be used as the end-of-game screen displays.
This specification is done with these attributes:
- index: which fake level-index value to use for the end of the game (default: 99);
all chapter screens have the resource ID (1500 + (level index)).
If there is more than one ending chapter screen, then this is for finding the first one.
- count: how many in sequence (default: 1), with resource ID's incremented by one for each one.
Colors are specified with the element <color>
colors may be either indexed (being list members), or non-indexed (being in isolation).
The color channels are red, green, and blue, with values that range from 0 to 1.
- index (mandatory if indexed; must be absent if not indexed)
- red
- green
- blue
All the color-channel attributes (red, green, blue) are mandatory.
This example makes color 7 be yellow:
<color index="7" red="1" green="1" blue="0"/>
Shapes can be specified with the element <shape>.
A shape specification includes which collection, which color table,
and which sequence or frame; a shape may also be allowed to be blank.
A shape's attributes are
- coll: which collection (0 to 31)
- clut: which color table; default is 0 (0 to 7)
- seq: which sequence (0 to 255)
- frame: like the above, included if the meaning of "frame" is clearer
in some context.
A blank shape is specified as one having no attributes: <shape/>.
A non-blank shape requires the collection and sequence attributes,
and optionally the color-table attribute (default: 0).
Damage is specified with the element <damage>.
Damage features are set with these attributes, which are all optional.
- type ("true" damage index; none is -1)
- flags (0 or 1 [is alien: weaker in easier difficulty levels])
- base
- random
- scale (1 = identity scaling)
Fonts are specified with the element <font>
like colors, fonts may be either indexed (being list members), or non-indexed (being in isolation).
- index (mandatory if indexed; must be absent if not indexed)
- name: the font name; it can be a series of names separated by commas or semicolons,
much like HTML font specifications.
If a series of the names, the engine will look for a font with the first name,
and then the second, and so forth, until it finds such a font.
- size: the font size in points (standard unit)
- style: the font style, which follows MacOS conventions; it is the sum of whichever of these
attributes are used:
- 1: Bold
- 2: Italic
- 4: Underline
- 8: Outline
- 16: Shadow
- 32: Condense
- 64: Extend
Normal is none of these attributes, or 0.
- file: this is for SDL support, and indicate which font file to use.
None of the font attributes proper are mandatory.
This example sets font 4 to the default font for the computer terminals.
<font index="4" name="Courier" size="12" style="0"/>
This is not a separate element, but a kind of value of an attribute.
These values for a boolean attribute,
indicate that a flag is to be on or an action is to be taken.
These values,
indicate that a flag is to be off or an action is not to be taken.
The collections:
- Interface
- Weapons in Hand
- Juggernaut
- Tick
- Explosion Effects
- Hunter
- Player
- Items
- Trooper
- Pfhor Fighter
- S'pht'Kr
- F'lickta
- Bob
- VacBob
- Enforcer
- Drone
- S'pht
- Walls - Water
- Walls - Lava
- Walls - Sewage
- Walls - Jjaro
- Walls - Pfhor
- Scenery - Water
- Scenery - Lava
- Scenery - Sewage
- Scenery - Jjaro
- Scenery - Pfhor
- Landscape - Day
- Landscape - Night
- Landscape - Moon
- Landscape - Outer Space
- Cyborg
The monsters:
- Player
- Tick - Energy
- Tick - Oxygen
- Tick - Kamikaze
- S'pht - Minor
- S'pht - Major
- S'pht - Minor Invisible
- S'pht - Major Invisible
- Pfhor Fighter - Minor
- Pfhor Fighter - Major
- Pfhor Fighter - Minor Projectile
- Pfhor Fighter - Major Projectile
- Bob - Crew
- Bob - Science
- Bob - Security
- Bob - Bad
- Drone - Minor
- Drone - Major
- Drone - Big Minor
- Drone - Big Major
- Drone - Subverted
- Cyborg - Minor
- Cyborg - Major
- Cyborg - Minor Flame
- Cyborg - Major Flame
- Enforcer - Minor
- Enforcer - Major
- Hunter - Minor
- Hunter - Major
- Trooper - Minor
- Trooper - Major
- Mother of All Cyborgs
- Mother of All Hunters
- F'lickta - Sewage
- F'lickta - Water
- F'lickta - Lava
- S'pht'Kr - Minor
- S'pht'Kr - Major
- Juggernaut - Minor
- Juggernaut - Major
- Tiny Fighter
- Tiny Bob
- Tiny F'lickta
- VacBob - Crew
- VacBob - Science
- VacBob - Security
- VacBob - Bad
The items to be picked up:
- Knife (apparently some placeholder item for "nothing")
- Pistol
- Pistol Ammo
- Fusion Pistol
- Fusion Pistol Ammo
- Assault Rifle
- Assault Rifle Bullets
- Assault Rifle Grenades
- Rocket Launcher
- Rockets
- Invisibility Powerup
- Invincibility Powerup
- Infravision Powerup
- Alien Weapon
- Alien Weapon Ammo
- Flamethrower
- Flamethrower Ammo
- Extravision Powerup
- Oxygen Powerup
- Energy Powerup x1
- Energy Powerup x2
- Energy Powerup x3
- Shotgun
- Shotgun Ammo
- S'pht Door Key
- Uplink Chip
- Light Blue Ball
- Red Ball
- Violet Ball
- Yellow Ball
- Brown Ball
- Orange Ball
- Blue Ball
- Green Ball
- SMG
- SMG Ammo
The weapons:
- Fist
- Pistol
- Fusion Pistol
- Assault Rifle
- Rocket Launcher
- Flamethrower
- Alien Weapon
- Shotgun
- Ball
- SMG
The projectiles:
- Rocket
- Grenade
- Pistol Bullet
- Rifle Bullet
- Shotgun Bullet
- Staff Hit
- Staff Bolt
- Flamethrower Flames
- S'pht Bolt - Minor
- S'pht Bolt - Major (Seeking)
- Alien-Weapon Bolt
- Fusion Bolt - Minor
- Fusion Bolt - Major
- Hunter Bolt
- Fist Punch
- Armageddon Sphere
- Armageddon Electricity
- Juggernaut Rocket
- Trooper Bullet
- Trooper Grenade
- S'pht'Kr Bolt - Minor
- S'pht'Kr Bolt - Major
- Juggernaut Missile
- Energy Drain - Minor
- Energy Drain - Major
- Oxygen Drain
- Drone Bolt - Minor
- Drone Bolt - Major
- Drone Bolt - Subverted
- Grenade - Minor Cyborg (Bouncing)
- Grenade - Major Cyborg (Seeking)
- Ball
- Dispersal - Minor Fusion
- Dispersal - Major Fusion
- Dispersal - Overloaded Fusion
- F'lickta Claw
- F'lickta Glob
- F'lickta Lava Glob
- SMG Bullet
The effects:
- Rocket Explosion
- Rocket Contrail
- Grenade Explosion
- Grenade Contrail
- Bullet Impact
- Alien Weapon Impact
- Flamethrower Flame
- Pfhor Hit
- Player Hit
- Bob Hit
- Bad Bob Hit
- Enforcer Hit
- S'pht Bolt Minor Impact
- S'pht Bolt Major Impact
- S'pht Bolt Major Contrail
- Pfhor Projectile Impact
- Pfhor Melee Hit
- Hunter Projectile Detonation
- Hunter Hit
- Minor Fusion Impact
- Major Fusion Impact
- Major Fusion Contrail
- Fist Hit
- Minor S'pht'Kr Impact
- Minor S'pht'Kr Impact
- S'pht'Kr Hit
- Trooper Hit
- Water Lamp Breaking
- Lava Lamp Breaking
- Sewage Lamp Breaking
- Pfhor Lamp Breaking
- Clank (melee hit)
- Teleport In
- Teleport Out
- Small Water Splash
- Medium Water Splash
- Large Water Splash
- Large Water Emergence
- Small Lava Splash
- Medium Lava Splash
- Large Lava Splash
- Large Lava Emergence
- Small Sewage Splash
- Medium Sewage Splash
- Large Sewage Splash
- Large Sewage Emergence
- Small Goo Splash
- Medium Goo Splash
- Large Goo Splash
- Large Goo Emergence
- Minor Drone Projectile Impact
- Major Drone Projectile Impact
- Subverted Drone Projectile Impact
- Drone Hit
- Cyborg Projectile Explosion
- Cyborg Hit
- Minor Fusion Dispersal
- Major Fusion Dispersal
- Overloaded Fusion Dispersal
- Sewage F'lickta Hit
- Sewage F'lickta Projectile Hit
- Water F'lickta Hit
- Lava F'lickta Hit
- Lava F'lickta Projectile Hit
- F'lickta Claw
- Juggernaut Hit
- Juggernaut Missile Contrail
- Small Jjaro Splash
- Medium Jjaro Splash
- Large Jjaro Splash
- Large Jjaro Emergence
- VacBob Hit
- Bad VacBob Hit
Player-damage types (out of order from "true" damage types):
- Explosion
- Crushing
- Bullet
- Shotgun Bullet
- Electrical Staff
- Hulk Slap
- Absorbed
- Teleporter
- Flame
- Hound Claws
- S'pht Bolt
- Alien-Weapon Bolt
- Hunter Bolt
- Fusion Bolt
- Fist
- F'lickta Claws
- F'lickta Glob
- S'pht'Kr Bolt
- Lava
- Goo
- Suffocation
- Energy Drain
- Oxygen Drain
- Drone Bolt
"True" damage types:
- Explosion
- Electrical Staff
- Bullet
- Absorbed
- Flame
- Hound Claws
- Alien-Weapon Bolt
- Hulk Slap
- S'pht Bolt
- Fusion Bolt
- Hunter Bolt
- Fist
- Teleporter
- S'pht'Kr Bolt
- F'lickta Claws
- F'lickta Glob
- Crushing
- Lava
- Suffocation
- Goo
- Energy Drain
- Oxygen Drain
- Drone Bolt
- Shotgun Bullet
The faders:
- Start Cinematic Fade In
- Cinematic Fade In
- Long Cinematic Fade In
- Cinematic Fade Out
- End Cinematic Fade Out
- Red (bullets, fists)
- Big Red (bigger bullets, fists)
- Picked Something Up
- Bright (teleporting)
- Long Bright (nuclear explosions)
- Yellow (explosions)
- Big Yellow (big explosions)
- Purple
- Cyan (Pfhor-staff/projectile hits)
- White (absorbed)
- Big White
- Orange (flamethrower)
- Long Orange (M1 lava)
- Green (Hunter projectile)
- Long Green (M1 goo)
- Static (S'pht projectile)
- Negative (minor fusion bolt)
- Big Negative (major fusion bolt)
- Flicker Negative (Drone bolt)
- Dodge Purple (alien weapon)
- Burn Cyan (Armageddon Beast electricity)
- Dodge Yellow (Armageddon Beast projectile)
- Burn Green (Hunter projectile)
- Tint Green (under goo)
- Tint Blue (under water)
- Tint Orange (under lava)
- Tint Gross (under sewage)
- Tint Jjaro (under JjaroGoo)
The texture-mapping transfer modes:
- Normal
- Fade Out to Black
- Invisibility
- Subtle Invisibility
- Pulsate
- Wobble
- Fast Wobble
- Static
- 50% Static
- Landscape
- Smear
- Fade Out Static
- Pulsating Static
- Fold In
- Fold Out
- Horizontal Slide
- Fast Horizontal Slide
- Vertical Slide
- Fast Vertical Slide
- Wander
- Fast Wander
- Big Landscape
The sounds:
- Startup
- Teleport In
- Teleport Out
- Body Being Crunched
- Creak
- Absorbed
- Breathing
- Oxygen Warning
- Suffocation
- Energy Refuel
- Oxygen Refuel
- Can't Toggle Switch
- Switch On
- Switch Off
- Puzzle Switch
- Chip Insertion
- Pattern Buffer
- Destroy Control Panel
- Adjust Volume
- Got Powerup
- Got Item
- Bullet Ricochet
- Metallic Ricochet
- Empty Gun
- S'pht Door Opening
- S'pht Door Closing
- S'pht Door Obstructed
- S'pht Platform Starting
- S'pht Platform Stopping
- Loon
- SMG Firing
- SMG Reloading
- Heavy S'pht Platform Starting
- Heavy S'pht Platform Stopping
- Fist Hitting
- Pistol Firing
- Pistol Reloading
- Assault Rifle Firing
- Grenade Launcher Firing
- Grenade Exploding
- Grenade Flyby
- Fusion Firing
- Fusion Exploding
- Fusion Flyby
- Fusion Charging
- Rocket Exploding
- Rocket Flyby
- Rocket Firing
- Flamethrower
- Body Falling
- Body Exploding
- Bullet Hitting Flesh
- Fighter Activate
- Fighter Wail
- Fighter Scream
- Fighter Chatter
- Fighter Attack
- Fighter Projectile Hit
- Fighter Projectile Flyby
- S'pht Attack
- S'pht Death
- S'pht Hit
- S'pht Projectile Flyby
- S'pht Projectile Hit
- Cyborg Moving
- Cyborg Attack
- Cyborg Hit
- Cyborg Death
- Cyborg Projectile Bounce
- Cyborg Projectile Hit
- Cyborg Projectile Flyby
- Drone Activate
- Drone Start Attack
- Drone Attack
- Drone Dying
- Drone Death
- Drone Projectile Hit
- Drone Projectile Flyby
- Bob Wail
- Bob Scream
- Bob Hit
- Bob Chatter
- Bad Bob Chatter
- Bob Trash Talk
- Bob Apology
- Bob Activation
- Bob Clear
- Bob Stop Shooting Me, You Bastard
- Bob Area Secure
- Bob Kill the Player
- Water
- Sewage
- Lava
- Goo
- Under Liquids
- Wind
- Waterfall
- Siren
- Fan
- S'pht Door
- S'pht Platform
- Alien Harmonics
- Heavy S'pht Platform
- Light Machinery
- Heavy Machinery
- Transformer
- Sparking Transformer
- Water Drip
- Walking in Water
- Exit Water
- Enter Water
- Small Water Splash
- Medium Water Splash
- Large Water Splash
- Walking in Lava
- Enter Lava
- Exit Lava
- Small Lava Splash
- Medium Lava Splash
- Large Lava Splash
- Walking in Sewage
- Exit Sewage
- Enter Sewage
- Small Sewage Splash
- Medium Sewage Splash
- Large Sewage Splash
- Walking in Goo
- Exit Goo
- Enter Goo
- Small Goo Splash
- Medium Goo Splash
- Large Goo Splash
- Major Fusion Firing
- Major Fusion Charged
- Assault Rifle Reloading
- Assault Rifle Shell Casings
- Shotgun Firing
- Shotgun Reloading
- Ball Bounce
- You Are It
- Got Ball
- Computer interface Logon
- Computer interface Logout
- Computer interface Page
- Heavy S'pht Door
- Heavy S'pht Door Opening
- Heavy S'pht Door Closing
- Heavy S'pht Door Open
- Heavy S'pht Door Closed
- Heavy S'pht Door Obstructed
- Hunter Activate
- Hunter Attack
- Hunter Dying
- Hunter Landing
- Hunter Exploding
- Hunter Projectile Hit
- Hunter Projectile Flyby
- Enforcer Activate
- Enforcer Attack
- Enforcer Projectile Hit
- Enforcer Projectile Flyby
- F'lickta Melee Attack
- F'lickta Melee Attack Hit
- F'lickta Projectile Attack
- F'lickta Projectile Sewage Attack Hit
- F'lickta Projectile Sewage Flyby
- F'lickta Projectile Lava Attack Hit
- F'lickta Projectile Lava Flyby
- F'lickta Dying
- Machine Binder
- Machine Bookpress
- Machine Puncher
- Electric
- Alarm
- Night Wind
- Surface Explosion
- Underground Explosion
- S'pht'Kr Attack
- S'pht'Kr Hit
- S'pht'Kr Flyby
- S'pht'Kr Being Hit
- S'pht'Kr Exploding
- Tick Chatter
- Tick Falling
- Tick Flapping
- Tick Exploding
- Ceiling Lamp Exploding
- Pfhor Platform Starting
- Pfhor Platform Stopping
- Pfhor Platform
- Pfhor Door Opening
- Pfhor Door Closing
- Pfhor Door Obstructed
- Pfhor Door
- Pfhor Switch Off
- Pfhor Switch On
- Juggernaut Firing
- Juggernaut Warning
- Juggernaut Exploding
- Juggernaut Preparing to Fire
- Enforcer Exploding
- Alien Noise 1
- Alien Noise 2
- VacBob Wail
- VacBob Scream
- VacBob Hit
- VacBob Chatter
- Bad VacBob Chatter
- VacBob Trash Talk
- VacBob Apology
- VacBob Activation
- VacBob Clear
- VacBob Stop Shooting Me, You Bastard
- VacBob Area Secure
- VacBob Kill the Player