scenario

🚧 This article is a stub. You can help expand it by submitting content in pull requests or issues in this wiki's source repo.

Scenarios are the main "root" tag used to compile a playable map. Though tool will also will include globals, tag collections, and some UI tags automatically, the majority of a map's tags are dendencies or transitive dependencies of the scenario.

Scenarios can contain multiple scenario_structure_bsp and reference all tags needed for gameplay in the map.

Child scenarios #

It is known that Bungie did not originally author singleplayer scenarios as a single tag, but used child scenarios to break them up into multiple tags. During map compilation, tool merges child scenarios together. This is why stock scenarios extracted with tools like Refinery can exceed Sapien's limits or have duplicated objects.

Structure and fields #

Field Type Comments
skies Block?
Field Type Comments
type enum

Determines the type of map this scenario represents. This primarily affects how the game

Option Value Comments
singleplayer 0x0

The map is meant to be used for singleplayer and loaded with the map_name command. Cannot be played in multiplayer.

multiplayer 0x1

The map is meant for multiplayer and can be loaded with sv_map.

user interface 0x2

The map is meant to serve as ui.map for the game's main menu.

flags bitfield(16)
Flag Mask Comments
cortana hack 0x1
use demo ui 0x2
child scenarios Block?
Field Type Comments
pad(16)
local north f32
pad(20)
pad(136)
predicted resources Block?
  • Internal to the tag and may be hidden in tools.
PredictedResource
functions Block?
Field Type Comments
flags bitfield(32)
Flag Mask Comments
scripted 0x1
invert 0x2
additive 0x4
always active 0x8
name char[32]
period f32 (seconds)
scale period by enum
Option Value Comments
none 0x0
a in 0x1
b in 0x2
c in 0x3
d in 0x4
a out 0x5
b out 0x6
c out 0x7
d out 0x8
function enum
Option Value Comments
one 0x0
zero 0x1
cosine 0x2
cosine variable period 0x3
diagonal wave 0x4
diagonal wave variable period 0x5
slide 0x6
slide variable period 0x7
noise 0x8
jitter 0x9
wander 0xa
spark 0xb
scale function by enum
Option Value Comments
none 0x0
a in 0x1
b in 0x2
c in 0x3
d in 0x4
a out 0x5
b out 0x6
c out 0x7
d out 0x8
wobble function enum
Option Value Comments
one 0x0
zero 0x1
cosine 0x2
cosine variable period 0x3
diagonal wave 0x4
diagonal wave variable period 0x5
slide 0x6
slide variable period 0x7
noise 0x8
jitter 0x9
wander 0xa
spark 0xb
wobble period f32 (seconds)
wobble magnitude f32 (percent)
square wave threshold Fraction: f32
step count u16
map to enum
Option Value Comments
linear 0x0
early 0x1
very early 0x2
late 0x3
very late 0x4
cosine 0x5
sawtooth count u16
pad(2)
scale result by enum
Option Value Comments
none 0x0
a in 0x1
b in 0x2
c in 0x3
d in 0x4
a out 0x5
b out 0x6
c out 0x7
d out 0x8
bounds mode enum
Option Value Comments
clip 0x0
clip and normalize 0x1
scale to fit 0x2
bounds f32 (min & max)
pad(4)
pad(2)
turn off with enum
Option Value Comments
none 0x0
a in 0x1
b in 0x2
c in 0x3
d in 0x4
a out 0x5
b out 0x6
c out 0x7
d out 0x8
pad(16)
pad(16)
editor scenario data
TagDataOffset
  • size: u32
  • external: u32
  • file offset: u32
  • pointer: u64
comments Block?
Field Type Comments
position
Point3D
  • x: f32
  • y: f32
  • z: f32
pad(16)
comment
TagDataOffset
  • size: u32
  • external: u32
  • file offset: u32
  • pointer: u64
pad(224)
object names Block?
  • Maximum: 65534
  • Read-only data, not meant to be edited by hand.
Field Type Comments
name char[32]
object type enum (little endian?)
  • Only set when the tag is compiled into a map cache.
Option Value Comments
biped 0x0
vehicle 0x1
weapon 0x2
equipment 0x3
garbage 0x4
projectile 0x5
scenery 0x6
device machine 0x7
device control 0x8
device light fixture 0x9
placeholder 0xa
sound scenery 0xb
object index Index: u16 (little endian?)
  • Only set when the tag is compiled into a map cache.
scenery Block?
  • Maximum: 65535
Field Type Comments
type Index: u16
name Index (object names)
not placed bitfield(16)
Flag Mask Comments
automatically 0x1
on easy 0x2
on normal 0x4
on hard 0x8
desired permutation Index: u16
position
Point3D
  • x: f32
  • y: f32
  • z: f32
rotation
Euler3D
  • yaw: f32
  • pitch: f32
  • roll: f32
bsp indices u16
  • Only set when the tag is compiled into a map cache.
pad(6)
pad(16)
pad(8)
pad(8)
scenery palette Block?
  • Maximum: 65534
Field Type Comments
pad(32)
bipeds Block?

Special-purpose bipeds placed in the map, typically used for scripted characters and cutscenes. AI should instead be spawned using encounters, since the actors will be properly difficulty-scaled.

Although there is technically a very high limit to this block, unmodified Sapien only supports up to 128 bipeds being placed.

  • Maximum: 65535
Field Type Comments
type Index: u16
name Index (object names)
not placed bitfield(16)
Flag Mask Comments
automatically 0x1
on easy 0x2
on normal 0x4
on hard 0x8
desired permutation Index: u16
position
Point3D
  • x: f32
  • y: f32
  • z: f32
rotation
Euler3D
  • yaw: f32
  • pitch: f32
  • roll: f32
pad(8)
pad(16)
pad(8)
pad(8)
body vitality modifier f32
flags bitfield(32)
Flag Mask Comments
dead 0x1
pad(8)
pad(32)
biped palette Block?
  • Maximum: 65534
Field Type Comments
pad(32)
vehicles Block?
  • Maximum: 65535
Field Type Comments
type Index: u16
name Index (object names)
not placed bitfield(16)
Flag Mask Comments
automatically 0x1
on easy 0x2
on normal 0x4
on hard 0x8
desired permutation Index: u16
position
Point3D
  • x: f32
  • y: f32
  • z: f32
rotation
Euler3D
  • yaw: f32
  • pitch: f32
  • roll: f32
pad(8)
pad(16)
pad(8)
pad(8)
body vitality f32
  • Maximum: 1
flags bitfield(32)
Flag Mask Comments
dead 0x1
pad(8)
multiplayer team index i8

Determines which team the vehicle belongs to for gametype settings. Index 0 is for red team, and index 1 is blue.

pad(1)
multiplayer spawn flags bitfield(16)
Flag Mask Comments
slayer default 0x1

The vehicle will spawn in Slayer when the gametype specifies default vehicle settings.

ctf default 0x2

The vehicle will spawn in CTF when the gametype specifies default vehicle settings.

king default 0x4

The vehicle will spawn in King of the Hill when the gametype specifies default vehicle settings.

oddball default 0x8

The vehicle will spawn in Oddball when the gametype specifies default vehicle settings.

unused 0x10
unused 1 0x20
unused 2 0x40
unused 3 0x80
slayer allowed 0x100

The vehicle spawn is permitted in Slayer when the gametype is using custom vehicle settings.

ctf allowed 0x200

The vehicle spawn is permitted in CTF when the gametype is using custom vehicle settings.

king allowed 0x400

The vehicle spawn is permitted in King of the Hill when the gametype is using custom vehicle settings.

oddball allowed 0x800

The vehicle spawn is permitted in Oddball when the gametype is using custom vehicle settings.

unused 4 0x1000
unused 5 0x2000
unused 6 0x4000
unused 7 0x8000
pad(28)
vehicle palette Block?
  • Maximum: 65535
Field Type Comments
pad(32)
equipment Block?
  • Maximum: 65535
Field Type Comments
type Index: u16
name Index (object names)
not placed bitfield(16)
Flag Mask Comments
automatically 0x1
on easy 0x2
on normal 0x4
on hard 0x8
desired permutation Index: u16
position
Point3D
  • x: f32
  • y: f32
  • z: f32
rotation
Euler3D
  • yaw: f32
  • pitch: f32
  • roll: f32
pad(2)
flags bitfield(16)
Flag Mask Comments
initially at rest 0x1
obsolete 0x2
does accelerate 0x4
pad(4)
equipment palette Block?
  • Maximum: 65534
Field Type Comments
pad(32)
weapons Block?

Weapon placements for singeplayer. Multiplayer weapon spawns should be placed using netgame equipment instead.

  • Maximum: 65535
Field Type Comments
type Index: u16
name Index (object names)
not placed bitfield(16)
Flag Mask Comments
automatically 0x1
on easy 0x2
on normal 0x4
on hard 0x8
desired permutation Index: u16
position
Point3D
  • x: f32
  • y: f32
  • z: f32
rotation
Euler3D
  • yaw: f32
  • pitch: f32
  • roll: f32
pad(8)
pad(16)
pad(8)
pad(8)
rounds left u16
rounds loaded u16
flags bitfield(16)
Flag Mask Comments
initially at rest 0x1
obsolete 0x2
does accelerate 0x4
pad(2)
pad(12)
weapon palette Block?

The types of weapons that can be placed throughout a singeplayer scenario.

  • Maximum: 65534
Field Type Comments
pad(32)
device groups Block?
  • Maximum: 65534
Field Type Comments
name char[32]
initial value f32
  • Maximum: 1
flags bitfield(32)
Flag Mask Comments
can change only once 0x1
pad(12)
machines Block?
  • Maximum: 65535
Field Type Comments
type Index: u16
name Index (object names)
not placed bitfield(16)
Flag Mask Comments
automatically 0x1
on easy 0x2
on normal 0x4
on hard 0x8
desired permutation Index: u16
position
Point3D
  • x: f32
  • y: f32
  • z: f32
rotation
Euler3D
  • yaw: f32
  • pitch: f32
  • roll: f32
pad(8)
power group Index (device groups)
position group Index (device groups)
device flags bitfield(32)
Flag Mask Comments
initially open 0x1
initially off 0x2
can change only once 0x4
position reversed 0x8
not usable from any side 0x10
machine flags bitfield(32)
Flag Mask Comments
does not operate automatically 0x1
one sided 0x2
never appears locked 0x4
opened by melee attack 0x8
pad(12)
machine palette Block?
  • Maximum: 65534
Field Type Comments
pad(32)
controls Block?
  • Maximum: 65535
Field Type Comments
type Index: u16
name Index (object names)
not placed bitfield(16)
Flag Mask Comments
automatically 0x1
on easy 0x2
on normal 0x4
on hard 0x8
desired permutation Index: u16
position
Point3D
  • x: f32
  • y: f32
  • z: f32
rotation
Euler3D
  • yaw: f32
  • pitch: f32
  • roll: f32
pad(8)
power group Index (device groups)
position group Index (device groups)
device flags bitfield(32)
Flag Mask Comments
initially open 0x1
initially off 0x2
can change only once 0x4
position reversed 0x8
not usable from any side 0x10
control flags bitfield(32)
Flag Mask Comments
usable from both sides 0x1
no name i16
pad(2)
pad(8)
control palette Block?
  • Maximum: 65534
Field Type Comments
pad(32)
light fixtures Block?
  • Maximum: 65535
Field Type Comments
type Index: u16
name Index (object names)
not placed bitfield(16)
Flag Mask Comments
automatically 0x1
on easy 0x2
on normal 0x4
on hard 0x8
desired permutation Index: u16
position
Point3D
  • x: f32
  • y: f32
  • z: f32
rotation
Euler3D
  • yaw: f32
  • pitch: f32
  • roll: f32
bsp indices u16
  • Only set when the tag is compiled into a map cache.
pad(6)
power group Index (device groups)
position group Index (device groups)
device flags bitfield(32)
Flag Mask Comments
initially open 0x1
initially off 0x2
can change only once 0x4
position reversed 0x8
not usable from any side 0x10
color
ColorRGB
  • red: f32
  • green: f32
  • blue: f32
intensity f32
falloff angle Angle: f32
cutoff angle Angle: f32
pad(16)
light fixture palette Block?
  • Maximum: 65534
Field Type Comments
pad(32)
sound scenery Block?
  • Maximum: 65535
Field Type Comments
type Index: u16
name Index (object names)
not placed bitfield(16)
Flag Mask Comments
automatically 0x1
on easy 0x2
on normal 0x4
on hard 0x8
desired permutation Index: u16
position
Point3D
  • x: f32
  • y: f32
  • z: f32
rotation
Euler3D
  • yaw: f32
  • pitch: f32
  • roll: f32
pad(8)
sound scenery palette Block?
  • Maximum: 65534
Field Type Comments
pad(32)
pad(84)
player starting profile Block?
Field Type Comments
name char[32]
starting health modifier Fraction: f32
  • Maximum: 1
starting shield modifier Fraction: f32
  • Maximum: 3
primary rounds loaded u16
primary rounds total u16
secondary rounds loaded u16
secondary rounds total u16
starting fragmentation grenade count i8
starting plasma grenade count i8
starting unknown grenade count 1 i8
starting unknown grenade count 2 i8
pad(20)
player starting locations Block?
Field Type Comments
position
Point3D
  • x: f32
  • y: f32
  • z: f32
facing Angle: f32
team index Index: u16

Determines which team the spawn point belongs to for CTF (the game may use any spawn point for other gametypes). Index 0 is for red team, and index 1 is blue.

bsp index Index (structure bsps)
type 0 enum
Option Value Comments
none 0x0
ctf 0x1
slayer 0x2
oddball 0x3
king of the hill 0x4
race 0x5
terminator 0x6
stub 0x7
ignored1 0x8
ignored2 0x9
ignored3 0xa
ignored4 0xb
all games 0xc
all except ctf 0xd
all except race ctf 0xe
type 1 enum
Option Value Comments
none 0x0
ctf 0x1
slayer 0x2
oddball 0x3
king of the hill 0x4
race 0x5
terminator 0x6
stub 0x7
ignored1 0x8
ignored2 0x9
ignored3 0xa
ignored4 0xb
all games 0xc
all except ctf 0xd
all except race ctf 0xe
type 2 enum
Option Value Comments
none 0x0
ctf 0x1
slayer 0x2
oddball 0x3
king of the hill 0x4
race 0x5
terminator 0x6
stub 0x7
ignored1 0x8
ignored2 0x9
ignored3 0xa
ignored4 0xb
all games 0xc
all except ctf 0xd
all except race ctf 0xe
type 3 enum
Option Value Comments
none 0x0
ctf 0x1
slayer 0x2
oddball 0x3
king of the hill 0x4
race 0x5
terminator 0x6
stub 0x7
ignored1 0x8
ignored2 0x9
ignored3 0xa
ignored4 0xb
all games 0xc
all except ctf 0xd
all except race ctf 0xe
pad(24)
trigger volumes Block?

Axis-aligned volumes which can be used in scripts to test for the presence an object: (volume_test_object "volume_name" <object>).

  • Maximum: 65534
Field Type Comments
unknown u16 (little endian?)
pad(2)
name char[32]

The name of the volume which can be used in scripts.

unknown values f32 x9
  • Internal to the tag and may be hidden in tools.
starting corner
Point3D
  • x: f32
  • y: f32
  • z: f32

The 3D world-unit coordinates of one corner of the volume.

ending corner offset
Point3D
  • x: f32
  • y: f32
  • z: f32

The offset distances from the starting corner to the opposite corner.

recorded animations Block?
Field Type Comments
name char[32]
version i8
raw animation data i8
unit control data version i8
pad(1)
length of animation u16
pad(2)
pad(4)
recorded animation event stream
TagDataOffset
  • size: u32
  • external: u32
  • file offset: u32
  • pointer: u64
netgame flags Block?
Field Type Comments
position
Point3D
  • x: f32
  • y: f32
  • z: f32
facing Angle: f32
type enum
Option Value Comments
ctf flag 0x0
ctf vehicle 0x1
oddball ball spawn 0x2
race track 0x3
race vehicle 0x4
vegas bank 0x5
teleport from 0x6
teleport to 0x7
hill flag 0x8
team index Index: u16
pad(112)
netgame equipment Block?
Field Type Comments
flags bitfield(32)
Flag Mask Comments
levitate 0x1
type 0 enum
Option Value Comments
none 0x0
ctf 0x1
slayer 0x2
oddball 0x3
king of the hill 0x4
race 0x5
terminator 0x6
stub 0x7
ignored1 0x8
ignored2 0x9
ignored3 0xa
ignored4 0xb
all games 0xc
all except ctf 0xd
all except race ctf 0xe
type 1 enum
Option Value Comments
none 0x0
ctf 0x1
slayer 0x2
oddball 0x3
king of the hill 0x4
race 0x5
terminator 0x6
stub 0x7
ignored1 0x8
ignored2 0x9
ignored3 0xa
ignored4 0xb
all games 0xc
all except ctf 0xd
all except race ctf 0xe
type 2 enum
Option Value Comments
none 0x0
ctf 0x1
slayer 0x2
oddball 0x3
king of the hill 0x4
race 0x5
terminator 0x6
stub 0x7
ignored1 0x8
ignored2 0x9
ignored3 0xa
ignored4 0xb
all games 0xc
all except ctf 0xd
all except race ctf 0xe
type 3 enum
Option Value Comments
none 0x0
ctf 0x1
slayer 0x2
oddball 0x3
king of the hill 0x4
race 0x5
terminator 0x6
stub 0x7
ignored1 0x8
ignored2 0x9
ignored3 0xa
ignored4 0xb
all games 0xc
all except ctf 0xd
all except race ctf 0xe
team index Index: u16
spawn time u16 (seconds)
pad(48)
position
Point3D
  • x: f32
  • y: f32
  • z: f32
facing Angle: f32
pad(48)
starting equipment Block?
Field Type Comments
flags bitfield(32)
Flag Mask Comments
no grenades 0x1
plasma grenades 0x2
type 0 enum
Option Value Comments
none 0x0
ctf 0x1
slayer 0x2
oddball 0x3
king of the hill 0x4
race 0x5
terminator 0x6
stub 0x7
ignored1 0x8
ignored2 0x9
ignored3 0xa
ignored4 0xb
all games 0xc
all except ctf 0xd
all except race ctf 0xe
type 1 enum
Option Value Comments
none 0x0
ctf 0x1
slayer 0x2
oddball 0x3
king of the hill 0x4
race 0x5
terminator 0x6
stub 0x7
ignored1 0x8
ignored2 0x9
ignored3 0xa
ignored4 0xb
all games 0xc
all except ctf 0xd
all except race ctf 0xe
type 2 enum
Option Value Comments
none 0x0
ctf 0x1
slayer 0x2
oddball 0x3
king of the hill 0x4
race 0x5
terminator 0x6
stub 0x7
ignored1 0x8
ignored2 0x9
ignored3 0xa
ignored4 0xb
all games 0xc
all except ctf 0xd
all except race ctf 0xe
type 3 enum
Option Value Comments
none 0x0
ctf 0x1
slayer 0x2
oddball 0x3
king of the hill 0x4
race 0x5
terminator 0x6
stub 0x7
ignored1 0x8
ignored2 0x9
ignored3 0xa
ignored4 0xb
all games 0xc
all except ctf 0xd
all except race ctf 0xe
pad(48)
pad(48)
bsp switch trigger volumes Block?
  • Only set when the tag is compiled into a map cache.
Field Type Comments
trigger volume Index (trigger volumes)
source Index (structure bsps)
destination Index (structure bsps)
unknown u16 (little endian?)
decals Block?
Field Type Comments
decal type Index (decal palette)
yaw i8
pitch i8
position
Point3D
  • x: f32
  • y: f32
  • z: f32
decal palette Block?
Field Type Comments
detail object collection palette Block?
Field Type Comments
pad(32)
pad(84)
actor palette Block?
Field Type Comments
encounters Block?
Field Type Comments
name char[32]
flags bitfield(32)
Flag Mask Comments
not initially created 0x1
respawn enabled 0x2
initially blind 0x4
initially deaf 0x8
initially braindead 0x10
3d firing positions 0x20
manual bsp index specified 0x40
team index enum
Option Value Comments
0 default by unit 0x0
1 player 0x1
2 human 0x2
3 covenant 0x3
4 flood 0x4
5 sentinel 0x5
6 unused6 0x6
7 unused7 0x7
8 unused8 0x8
9 unused9 0x9
one i16 (little endian?)
  • Only set when the tag is compiled into a map cache.
search behavior enum
Option Value Comments
normal 0x0
never 0x1
tenacious 0x2
manual bsp index Index (structure bsps)
respawn delay f32 (seconds) (min & max)
pad(74)
precomputed bsp index Index: u16 (little endian?)
  • Only set when the tag is compiled into a map cache.
squads Block?
Field Type Comments
name char[32]
actor type Index (actor palette)
platoon Index (platoons)
Tinitial state enum
Option Value Comments
none 0x0
sleeping 0x1
alert 0x2
moving repeat same position 0x3
moving loop 0x4
moving loop back and forth 0x5
moving loop randomly 0x6
moving randomly 0x7
guarding 0x8
guarding at guard position 0x9
searching 0xa
fleeing 0xb
Treturn state enum
Option Value Comments
none 0x0
sleeping 0x1
alert 0x2
moving repeat same position 0x3
moving loop 0x4
moving loop back and forth 0x5
moving loop randomly 0x6
moving randomly 0x7
guarding 0x8
guarding at guard position 0x9
searching 0xa
fleeing 0xb
flags bitfield(32)
Flag Mask Comments
unused 0x1
never search 0x2
start timer immediately 0x4
no timer delay forever 0x8
magic sight after timer 0x10
automatic migration 0x20
unique leader type enum
Option Value Comments
normal 0x0
none 0x1
random 0x2
sgt johnson 0x3
sgt lehto 0x4
pad(2)
pad(28)
pad(2)
maneuver to squad Index: u16
squad delay time f32
attacking bitfield(32)
Flag Mask Comments
a 0x1
b 0x2
c 0x4
d 0x8
e 0x10
f 0x20
g 0x40
h 0x80
i 0x100
j 0x200
k 0x400
l 0x800
m 0x1000
n 0x2000
o 0x4000
p 0x8000
q 0x10000
r 0x20000
s 0x40000
t 0x80000
u 0x100000
v 0x200000
w 0x400000
x 0x800000
y 0x1000000
z 0x2000000
attacking search bitfield(32)
Flag Mask Comments
a 0x1
b 0x2
c 0x4
d 0x8
e 0x10
f 0x20
g 0x40
h 0x80
i 0x100
j 0x200
k 0x400
l 0x800
m 0x1000
n 0x2000
o 0x4000
p 0x8000
q 0x10000
r 0x20000
s 0x40000
t 0x80000
u 0x100000
v 0x200000
w 0x400000
x 0x800000
y 0x1000000
z 0x2000000
attacking guard bitfield(32)
Flag Mask Comments
a 0x1
b 0x2
c 0x4
d 0x8
e 0x10
f 0x20
g 0x40
h 0x80
i 0x100
j 0x200
k 0x400
l 0x800
m 0x1000
n 0x2000
o 0x4000
p 0x8000
q 0x10000
r 0x20000
s 0x40000
t 0x80000
u 0x100000
v 0x200000
w 0x400000
x 0x800000
y 0x1000000
z 0x2000000
defending bitfield(32)
Flag Mask Comments
a 0x1
b 0x2
c 0x4
d 0x8
e 0x10
f 0x20
g 0x40
h 0x80
i 0x100
j 0x200
k 0x400
l 0x800
m 0x1000
n 0x2000
o 0x4000
p 0x8000
q 0x10000
r 0x20000
s 0x40000
t 0x80000
u 0x100000
v 0x200000
w 0x400000
x 0x800000
y 0x1000000
z 0x2000000
defending search bitfield(32)
Flag Mask Comments
a 0x1
b 0x2
c 0x4
d 0x8
e 0x10
f 0x20
g 0x40
h 0x80
i 0x100
j 0x200
k 0x400
l 0x800
m 0x1000
n 0x2000
o 0x4000
p 0x8000
q 0x10000
r 0x20000
s 0x40000
t 0x80000
u 0x100000
v 0x200000
w 0x400000
x 0x800000
y 0x1000000
z 0x2000000
defending guard bitfield(32)
Flag Mask Comments
a 0x1
b 0x2
c 0x4
d 0x8
e 0x10
f 0x20
g 0x40
h 0x80
i 0x100
j 0x200
k 0x400
l 0x800
m 0x1000
n 0x2000
o 0x4000
p 0x8000
q 0x10000
r 0x20000
s 0x40000
t 0x80000
u 0x100000
v 0x200000
w 0x400000
x 0x800000
y 0x1000000
z 0x2000000
pursuing bitfield(32)
Flag Mask Comments
a 0x1
b 0x2
c 0x4
d 0x8
e 0x10
f 0x20
g 0x40
h 0x80
i 0x100
j 0x200
k 0x400
l 0x800
m 0x1000
n 0x2000
o 0x4000
p 0x8000
q 0x10000
r 0x20000
s 0x40000
t 0x80000
u 0x100000
v 0x200000
w 0x400000
x 0x800000
y 0x1000000
z 0x2000000
pad(4)
pad(8)
normal diff count u16
insane diff count u16
major upgrade enum
Option Value Comments
normal 0x0
few 0x1
many 0x2
none 0x3
all 0x4
pad(2)
respawn min actors u16
respawn max actors u16
respawn total u16
pad(2)
respawn delay f32 (seconds) (min & max)
pad(48)
move positions Block?
Field Type Comments
position
Point3D
  • x: f32
  • y: f32
  • z: f32
facing Angle: f32
weight f32
time f32 (seconds) (min & max)
animation Index (ai animation references)
sequence id i8
pad(1)
pad(44)
surface index u32
starting locations Block?
Field Type Comments
position
Point3D
  • x: f32
  • y: f32
  • z: f32
facing Angle: f32
cluster index Index: u16 (little endian?)
  • Only set when the tag is compiled into a map cache.
sequence id i8
flags bitfield(8)
Flag Mask Comments
required 0x1
return state enum
Option Value Comments
none 0x0
sleeping 0x1
alert 0x2
moving repeat same position 0x3
moving loop 0x4
moving loop back and forth 0x5
moving loop randomly 0x6
moving randomly 0x7
guarding 0x8
guarding at guard position 0x9
searching 0xa
fleeing 0xb
initial state enum
Option Value Comments
none 0x0
sleeping 0x1
alert 0x2
moving repeat same position 0x3
moving loop 0x4
moving loop back and forth 0x5
moving loop randomly 0x6
moving randomly 0x7
guarding 0x8
guarding at guard position 0x9
searching 0xa
fleeing 0xb
actor type Index (actor palette)
command list Index (command lists)
pad(12)
platoons Block?
Field Type Comments
name char[32]
flags bitfield(32)
Flag Mask Comments
flee when maneuvering 0x1
say advancing when maneuver 0x2
start in defending state 0x4
pad(12)
change attacking defending state when enum
Option Value Comments
never 0x0
75 strength 0x1
50 strength 0x2
25 strength 0x3
anybody dead 0x4
25 dead 0x5
50 dead 0x6
75 dead 0x7
all but one dead 0x8
all dead 0x9
happens to Index (platoons)
pad(4)
pad(4)
maneuver when enum
Option Value Comments
never 0x0
75 strength 0x1
50 strength 0x2
25 strength 0x3
anybody dead 0x4
25 dead 0x5
50 dead 0x6
75 dead 0x7
all but one dead 0x8
all dead 0x9
happens to 1 Index (platoons)
pad(4)
pad(4)
pad(64)
pad(36)
firing positions Block?
Field Type Comments
position
Point3D
  • x: f32
  • y: f32
  • z: f32
group index enum
Option Value Comments
a 0x0
b 0x1
c 0x2
d 0x3
e 0x4
f 0x5
g 0x6
h 0x7
i 0x8
j 0x9
k 0xa
l 0xb
m 0xc
n 0xd
o 0xe
p 0xf
q 0x10
r 0x11
s 0x12
t 0x13
u 0x14
v 0x15
w 0x16
x 0x17
y 0x18
z 0x19
cluster index u16 (little endian?)
  • Only set when the tag is compiled into a map cache.
pad(4)
surface index u32 (little endian?)
  • Only set when the tag is compiled into a map cache.
player starting locations Block?
Field Type Comments
position
Point3D
  • x: f32
  • y: f32
  • z: f32
facing Angle: f32
team index Index: u16
bsp index Index (structure bsps)
type 0 enum
Option Value Comments
none 0x0
ctf 0x1
slayer 0x2
oddball 0x3
king of the hill 0x4
race 0x5
terminator 0x6
stub 0x7
ignored1 0x8
ignored2 0x9
ignored3 0xa
ignored4 0xb
all games 0xc
all except ctf 0xd
all except race ctf 0xe
type 1 enum
Option Value Comments
none 0x0
ctf 0x1
slayer 0x2
oddball 0x3
king of the hill 0x4
race 0x5
terminator 0x6
stub 0x7
ignored1 0x8
ignored2 0x9
ignored3 0xa
ignored4 0xb
all games 0xc
all except ctf 0xd
all except race ctf 0xe
type 2 enum
Option Value Comments
none 0x0
ctf 0x1
slayer 0x2
oddball 0x3
king of the hill 0x4
race 0x5
terminator 0x6
stub 0x7
ignored1 0x8
ignored2 0x9
ignored3 0xa
ignored4 0xb
all games 0xc
all except ctf 0xd
all except race ctf 0xe
type 3 enum
Option Value Comments
none 0x0
ctf 0x1
slayer 0x2
oddball 0x3
king of the hill 0x4
race 0x5
terminator 0x6
stub 0x7
ignored1 0x8
ignored2 0x9
ignored3 0xa
ignored4 0xb
all games 0xc
all except ctf 0xd
all except race ctf 0xe
pad(24)
command lists Block?
Field Type Comments
name char[32]
flags bitfield(32)
Flag Mask Comments
allow initiative 0x1
allow targeting 0x2
disable looking 0x4
disable communication 0x8
disable falling damage 0x10
manual bsp index 0x20
pad(8)
manual bsp index Index (structure bsps)
precomputed bsp index Index: u16 (little endian?)
  • Only set when the tag is compiled into a map cache.
commands Block?
  • Maximum: 65534
Field Type Comments
atom type enum
Option Value Comments
pause 0x0
go to 0x1
go to and face 0x2
move in direction 0x3
look 0x4
animation mode 0x5
crouch 0x6
shoot 0x7
grenade 0x8
vehicle 0x9
running jump 0xa
targeted jump 0xb
script 0xc
animate 0xd
recording 0xe
action 0xf
vocalize 0x10
targeting 0x11
initiative 0x12
wait 0x13
loop 0x14
die 0x15
move immediate 0x16
look random 0x17
look player 0x18
look object 0x19
set radius 0x1a
teleport 0x1b
atom modifier i16
parameter1 f32
parameter2 f32
point 1 Index (points)
point 2 Index (points)
animation Index (ai animation references)
script Index (ai script references)
recording Index (ai recording references)
command Index (commands)
object name Index (object names)
pad(6)
points Block?
  • Maximum: 65534
Field Type Comments
position
Point3D
  • x: f32
  • y: f32
  • z: f32
surface index u32 (little endian?)
  • Only set when the tag is compiled into a map cache.
pad(4)
pad(24)
ai animation references Block?
Field Type Comments
animation name char[32]
pad(12)
ai script references Block?
Field Type Comments
script name char[32]
pad(8)
ai recording references Block?
Field Type Comments
recording name char[32]
pad(8)
ai conversations Block?
Field Type Comments
name char[32]
flags bitfield(16)
Flag Mask Comments
stop if death 0x1
stop if damaged 0x2
stop if visible enemy 0x4
stop if alerted to enemy 0x8
player must be visible 0x10
stop other actions 0x20
keep trying to play 0x40
player must be looking 0x80
pad(2)
trigger distance f32 (seconds)
run to player dist f32 (seconds)
pad(36)
participants Block?
Field Type Comments
pad(2)
flags bitfield(16)
Flag Mask Comments
optional 0x1
has alternate 0x2
is alternate 0x4
selection type enum
Option Value Comments
friendly actor 0x0
disembodied 0x1
in player s vehicle 0x2
not in a vehicle 0x3
prefer sergeant 0x4
any actor 0x5
radio unit 0x6
radio sergeant 0x7
actor type enum
Option Value Comments
elite 0x0
jackal 0x1
grunt 0x2
hunter 0x3
engineer 0x4
assassin 0x5
player 0x6
marine 0x7
crew 0x8
combat form 0x9
infection form 0xa
carrier form 0xb
monitor 0xc
sentinel 0xd
none 0xe
mounted weapon 0xf
use this object Index (object names)
set new name Index (object names)
pad(12)
unknown1 u16 (little endian?)
  • Only set when the tag is compiled into a map cache.
unknown2 u16 (little endian?)
  • Only set when the tag is compiled into a map cache.
unknown3 u32 (little endian?)
  • Only set when the tag is compiled into a map cache.
unknown4 u32 (little endian?)
  • Only set when the tag is compiled into a map cache.
encounter name char[32]
encounter index u32 (little endian?)
  • Only set when the tag is compiled into a map cache.
pad(12)
lines Block?
Field Type Comments
flags bitfield(16)
Flag Mask Comments
addressee look at speaker 0x1
everyone look at speaker 0x2
everyone look at addressee 0x4
wait after until told to advance 0x8
wait until speaker nearby 0x10
wait until everyone nearby 0x20
participant Index (participants)
addressee enum
Option Value Comments
none 0x0
player 0x1
participant 0x2
addressee participant Index (participants)
pad(4)
line delay time f32
pad(12)
pad(12)
script syntax data
TagDataOffset
  • size: u32
  • external: u32
  • file offset: u32
  • pointer: u64
script string data
TagDataOffset
  • size: u32
  • external: u32
  • file offset: u32
  • pointer: u64
scripts Block?
  • Read-only data, not meant to be edited by hand.
Field Type Comments
name char[32]
script type enum
Option Value Comments
startup 0x0
dormant 0x1
continuous 0x2
static 0x3
stub 0x4
return type enum
Option Value Comments
unparsed 0x0
special form 0x1
function name 0x2
passthrough 0x3
void 0x4
boolean 0x5
real 0x6
short 0x7
long 0x8
string 0x9
script 0xa
trigger volume 0xb
cutscene flag 0xc
cutscene camera point 0xd
cutscene title 0xe
cutscene recording 0xf
device group 0x10
ai 0x11
ai command list 0x12
starting profile 0x13
conversation 0x14
navpoint 0x15
hud message 0x16
object list 0x17
sound 0x18
effect 0x19
damage 0x1a
looping sound 0x1b
animation graph 0x1c
actor variant 0x1d
damage effect 0x1e
object definition 0x1f
game difficulty 0x20
team 0x21
ai default state 0x22
actor type 0x23
hud corner 0x24
object 0x25
unit 0x26
vehicle 0x27
weapon 0x28
device 0x29
scenery 0x2a
object name 0x2b
unit name 0x2c
vehicle name 0x2d
weapon name 0x2e
device name 0x2f
scenery name 0x30
root expression index i32
pad(52)
globals Block?
  • Read-only data, not meant to be edited by hand.
Field Type Comments
name char[32]
type enum
Option Value Comments
unparsed 0x0
special form 0x1
function name 0x2
passthrough 0x3
void 0x4
boolean 0x5
real 0x6
short 0x7
long 0x8
string 0x9
script 0xa
trigger volume 0xb
cutscene flag 0xc
cutscene camera point 0xd
cutscene title 0xe
cutscene recording 0xf
device group 0x10
ai 0x11
ai command list 0x12
starting profile 0x13
conversation 0x14
navpoint 0x15
hud message 0x16
object list 0x17
sound 0x18
effect 0x19
damage 0x1a
looping sound 0x1b
animation graph 0x1c
actor variant 0x1d
damage effect 0x1e
object definition 0x1f
game difficulty 0x20
team 0x21
ai default state 0x22
actor type 0x23
hud corner 0x24
object 0x25
unit 0x26
vehicle 0x27
weapon 0x28
device 0x29
scenery 0x2a
object name 0x2b
unit name 0x2c
vehicle name 0x2d
weapon name 0x2e
device name 0x2f
scenery name 0x30
pad(2)
pad(4)
initialization expression index i32
pad(48)
references Block?
  • Read-only data, not meant to be edited by hand.
Field Type Comments
pad(24)
source files Block?
  • Read-only data, not meant to be edited by hand.
  • Not included when the tag is compiled into a map cache.
  • This field's value may change at build time or have precision errors. It should not be used for exact comparisons between tag data.
Field Type Comments
name char[32]
source
TagDataOffset
  • size: u32
  • external: u32
  • file offset: u32
  • pointer: u64
pad(24)
cutscene flags Block?
Field Type Comments
unknown u32 (little endian?)
  • Only set when the tag is compiled into a map cache.
name char[32]
position
Point3D
  • x: f32
  • y: f32
  • z: f32
facing
Euler2D
  • yaw: f32
  • pitch: f32
pad(36)
cutscene camera points Block?
Field Type Comments
unknown u32 (little endian?)
  • Only set when the tag is compiled into a map cache.
name char[32]
pad(4)
position
Point3D
  • x: f32
  • y: f32
  • z: f32
orientation
Euler3D
  • yaw: f32
  • pitch: f32
  • roll: f32
field of view Angle: f32
pad(36)
cutscene titles Block?
Field Type Comments
unknown u32 (little endian?)
  • Only set when the tag is compiled into a map cache.
name char[32]
pad(4)
text bounds
Rectangle2D
  • top: i16
  • left: i16
  • bottom: i16
  • right: i16
string index Index: u16
text style enum
Option Value Comments
plain 0x0
bold 0x1
italic 0x2
condense 0x3
underline 0x4
justification enum
Option Value Comments
left 0x0
right 0x1
center 0x2
pad(2)
pad(4)
text color
ColorARGBInt
  • alpha: u8
  • red: u8
  • green: u8
  • blue: u8
shadow color
ColorARGBInt
  • alpha: u8
  • red: u8
  • green: u8
  • blue: u8
fade in time f32
up time f32
fade out time f32
pad(16)
pad(108)
structure bsps Block?
  • Maximum: 16
Field Type Comments
bsp start u32 (little endian?)
  • Only set when the tag is compiled into a map cache.
bsp size u32 (little endian?)
  • Only set when the tag is compiled into a map cache.
bsp address u32 (little endian?)
  • Only set when the tag is compiled into a map cache.
pad(4)

This information was partially generated using Invader tag definitions.

Acknowledgements

Thanks to the following individuals for their research or contributions to this topic:

  • Kavawuvi (Invader tag definitions)
  • Masterz1337 (Encounters vs bipeds)
  • MosesOfEgypt (Tag structure research)