perfect_dark/src/include/constants.h

4445 lines
173 KiB
C

#ifndef _IN_CONSTANTS_H
#define _IN_CONSTANTS_H
#include "versions.h"
#include "math.h"
#include "animations.h"
#include "files.h"
#include "sequences.h"
#include "sfx.h"
#define FALSE 0
#define TRUE 1
#define false 0
#define true 1
#define osSyncPrintf
#define S32_MAX 2147483647
#define U32_MAX 4294967295
#define MAXFLOAT ((float)3.40282346638528860e+38)
#define ABS(val) ((val) > 0 ? (val) : -(val))
#define ALIGN2(val) (((val) | 1) ^ 0x1)
#define ALIGN8(val) (((val) + 0x7 | 0x7) ^ 0x7)
#define ALIGN16(val) (((val) + 0xf | 0xf) ^ 0xf)
#define ALIGN64(val) ((((u32)(val)) + 0x3f | 0x3f) ^ 0x3f)
#define ARRAYCOUNT(a) (s32)(sizeof(a) / sizeof(a[0]))
#define CHRRACE(chr) (chr ? chr->race : RACE_HUMAN)
#define CRASH() *(u8 *)0 = 69
#define IS4MB() (g_Is4Mb == true)
#define IS8MB() (g_Is4Mb != true)
#define LINEHEIGHT (VERSION == VERSION_JPN_FINAL ? 14 : 11)
#define MIXCOLOUR(dialog, property) dialog->transitionfrac < 0.0f ? g_MenuColourPalettes[dialog->type].property : colourBlend(g_MenuColourPalettes[dialog->type2].property, g_MenuColourPalettes[dialog->type].property, dialog->colourweight)
#define MPCHR(index) ((index) < 4 ? &g_PlayerConfigsArray[index].base : &g_BotConfigsArray[(index) - 4].base)
#define PLAYERCOUNT() ((g_Vars.players[0] ? 1 : 0) + (g_Vars.players[1] ? 1 : 0) + (g_Vars.players[2] ? 1 : 0) + (g_Vars.players[3] ? 1 : 0))
#define RANDOMFRAC() (random() * (1.0f / U32_MAX))
#define SECSTOTIME240(secs) (secs * 240)
#define SECSTOTIME60(secs) (secs * 60)
#define PFS(device) (device == SAVEDEVICE_GAMEPAK ? NULL : &g_Pfses[device])
#define USINGDEVICE(device) (!g_Vars.currentplayer->isdead \
&& !g_InCutscene \
&& EYESPYINACTIVE() \
&& (g_Vars.currentplayer->devicesactive & ~g_Vars.currentplayer->devicesinhibit & (device)))
#if VERSION >= VERSION_PAL_BETA
#define LVUPDATE240FREAL() g_Vars.lvupdate240freal
#else
#define LVUPDATE240FREAL() g_Vars.lvupdate240f
#endif
#if VERSION >= VERSION_NTSC_1_0
#define VOLUME(volume) (volume > 0x5000 ? 0x5000 : volume)
#else
#define VOLUME(volume) (volume)
#endif
#define EYESPYINACTIVE() (!g_Vars.currentplayer->eyespy || (g_Vars.currentplayer->eyespy && !g_Vars.currentplayer->eyespy->active))
#define ERASERSQDIST(p) ( \
(p[0] - g_Vars.currentplayer->eraserpos.f[0]) * (p[0] - g_Vars.currentplayer->eraserpos.f[0]) + \
(p[1] - g_Vars.currentplayer->eraserpos.f[1]) * (p[1] - g_Vars.currentplayer->eraserpos.f[1]) + \
(p[2] - g_Vars.currentplayer->eraserpos.f[2]) * (p[2] - g_Vars.currentplayer->eraserpos.f[2]))
#if PAL
#define TICKS(val) ((val) * 50 / 60)
#define PALUP(val) ((val) * 60 / 50)
#define PALUPF(val) ((val) * 1.2f)
#define FRAMEDURATION (1 / 50.0f)
#else
#define TICKS(val) (val)
#define PALUP(val) (val)
#define PALUPF(val) (val)
#define FRAMEDURATION (1 / 60.0f)
#endif
// Macro to convert an ASCII character to N64 font code.
// N64 font code uses 0x0f for space, 0x10-0x19 for 0-9 and 0x1a-0x33 for A-Z.
#define N64CHAR(c) (c == ' ' ? 0x0f : (c >= 'A' && c <= 'Z' ? c - 0x27 : c - 0x20))
#if VERSION >= VERSION_NTSC_1_0
#define ROM_COMPANYCODE 0x3459
#else
#define ROM_COMPANYCODE 0x3031
#endif
#if VERSION == VERSION_JPN_FINAL
#define ROM_GAMECODE 'NPDJ'
#elif PAL
#define ROM_GAMECODE 'NPDP'
#else
#define ROM_GAMECODE 'NPDE'
#endif
// These actions are assigned to chr->actiontype
#define ACT_INIT 0
#define ACT_STAND 1
#define ACT_KNEEL 2
#define ACT_ANIM 3
#define ACT_DIE 4
#define ACT_DEAD 5
#define ACT_ARGH 6
#define ACT_PREARGH 7
#define ACT_ATTACK 8
#define ACT_ATTACKWALK 9
#define ACT_ATTACKROLL 10
#define ACT_SIDESTEP 11
#define ACT_JUMPOUT 12
#define ACT_RUNPOS 13
#define ACT_PATROL 14
#define ACT_GOPOS 15
#define ACT_SURRENDER 16
#define ACT_LOOKATTARGET 17
#define ACT_SURPRISED 18
#define ACT_STARTALARM 19
#define ACT_THROWGRENADE 20
#define ACT_TURNDIR 21
#define ACT_TEST 22
#define ACT_BONDINTRO 23
#define ACT_BONDDIE 24
#define ACT_BONDMULTI 25
#define ACT_NULL 26
#define ACT_BOT_ATTACKSTAND 27
#define ACT_BOT_ATTACKKNEEL 28
#define ACT_BOT_ATTACKSTRAFE 29
#define ACT_DRUGGEDDROP 30
#define ACT_DRUGGEDKO 31
#define ACT_DRUGGEDCOMINGUP 32
#define ACT_ATTACKAMOUNT 33
#define ACT_ROBOTATTACK 34
#define ACT_SKJUMP 35
#define ACT_PUNCH 36
#define ACT_CUTFIRE 37
#define AIBOTCMD_FOLLOW 0
#define AIBOTCMD_ATTACK 1
#define AIBOTCMD_DEFEND 2
#define AIBOTCMD_HOLD 3
#define AIBOTCMD_NORMAL 4
#define AIBOTCMD_DOWNLOAD 5
#define AIBOTCMD_GETCASE 6
#define AIBOTCMD_TAGBOX 7
#define AIBOTCMD_SAVECASE 8
#define AIBOTCMD_DEFHILL 9
#define AIBOTCMD_HOLDHILL 10
#define AIBOTCMD_GETCASE2 11
#define AIBOTCMD_POPCAP 12
#define AIBOTCMD_PROTECT 13
#define AICMD_END 0x0004
#define AICMD_DROPITEM 0x001c
#define AICMD_SPAWNCHRATPAD 0x00c6
#define AICMD_SPAWNCHRATCHR 0x00c7
#define AICMD_EQUIPWEAPON 0x00c8
#define AICMD_EQUIPHAT 0x00c9
// AI environment commands
#define AIENVCMD_00 0x00
#define AIENVCMD_01 0x01
#define AIENVCMD_02 0x02
#define AIENVCMD_03 0x03
#define AIENVCMD_04 0x04
#define AIENVCMD_ROOM_SETAMBIENT 0x05
#define AIENVCMD_ROOM_SETOUTDOORS 0x06
#define AIENVCMD_07 0x07
#define AIENVCMD_08 0x08
#define AIENVCMD_SETAMBIENT 0x09
#define AIENVCMD_PLAYNOSEDIVE 0x0a
#define AIENVCMD_TICKMUSICQUEUE 0x0b
#define AIENVCMD_ROOM_SETFAULTYLIGHTS 0x0c
#define AIENVCMD_STOPNOSEDIVE 0x0d
#define AIENVCMD_PLAYUFOHUM 0x0e
#define AIENVCMD_STOPUFOHUM 0x0f
#define AIMCONTROL_HOLD 0
#define AIMCONTROL_TOGGLE 1
#define AMMOFLAG_NORESERVE 1 // Ammo cannot be held outside of weapon (cloak and combat boost)
#define AMMOFLAG_EQUIPPEDISRESERVE 2 // For throwables: equipped ammo and reserve is kind of the same thing
#define AMMOFLAG_INCREMENTALRELOAD 4 // Shotgun and crossbow
#define AMMOFLAG_QTYAFFECTSPARTVIS 8 // Quantity of ammo in the clip affects model part visibility on the weapon (Devastator)
#define AMMOTYPE_PISTOL 0x01
#define AMMOTYPE_SMG 0x02
#define AMMOTYPE_CROSSBOW 0x03
#define AMMOTYPE_RIFLE 0x04
#define AMMOTYPE_SHOTGUN 0x05
#define AMMOTYPE_FARSIGHT 0x06
#define AMMOTYPE_GRENADE 0x07
#define AMMOTYPE_ROCKET 0x08
#define AMMOTYPE_KNIFE 0x09
#define AMMOTYPE_MAGNUM 0x0a
#define AMMOTYPE_DEVASTATOR 0x0b
#define AMMOTYPE_REMOTE_MINE 0x0c
#define AMMOTYPE_PROXY_MINE 0x0d
#define AMMOTYPE_TIMED_MINE 0x0e
#define AMMOTYPE_REAPER 0x0f
#define AMMOTYPE_HOMINGROCKET 0x10
#define AMMOTYPE_DART 0x11
#define AMMOTYPE_NBOMB 0x12
#define AMMOTYPE_SEDATIVE 0x13
#define AMMOTYPE_CLOAK 0x14
#define AMMOTYPE_BOOST 0x15
#define AMMOTYPE_PSYCHOSIS 0x16
#define AMMOTYPE_17 0x17
#define AMMOTYPE_BUG 0x18
#define AMMOTYPE_MICROCAMERA 0x19
#define AMMOTYPE_PLASTIQUE 0x1a
#define AMMOTYPE_1B 0x1b
#define AMMOTYPE_1C 0x1c
#define AMMOTYPE_1D 0x1d
#define AMMOTYPE_TOKEN 0x1e
#define AMMOTYPE_1F 0x1f
#define AMMOTYPE_ECM_MINE 0x20
// Active menu slots
#define AMSLOTFLAG_CURRENT 0x02 // black, eg. current equipped weapon
#define AMSLOTFLAG_ACTIVE 0x08 // pulsates slightly, eg. cloak/xray when active
#define AMSLOTFLAG_NOAMMO 0x10 // black BG, no border, orange text
#define AMSLOTMODE_DEFAULT 0
#define AMSLOTMODE_FOCUSED 1
#define AMSLOTMODE_CURRENT 2
// Active menu (weapon wheel) modes
#define AMMODE_CLOSED 0
#define AMMODE_VIEW 1
#define AMMODE_EDIT 2 // unused
#define ANIMFLAG_LOOP 0x01
#define ANIMFLAG_02 0x02
#define ANIMFLAG_04 0x04
#define ANIMFLAG_08 0x08
#define ANIMHEADERFLAG_01 0x01 // len 9
#define ANIMHEADERFLAG_02 0x02 // len 9
#define ANIMHEADERFLAG_08 0x08 // len 12
#define ANIMHEADERFLAG_10 0x10 // len 0
#define ANIMHEADERFLAG_20 0x20 // len 15
#define ANIMHEADERFLAG_40 0x40 // len 5
#define ANIMHEADERFLAG_80 0x80 // len 0
#define ATTACKFLAG_AIMATBOND 0x0001 // aim/shoot at Jo
#define ATTACKFLAG_AIMFORWARD 0x0002 // aim/shoot in front of self
#define ATTACKFLAG_AIMATCHR 0x0004 // aim/shoot at chr (ID should be given in entityid)
#define ATTACKFLAG_AIMATPAD 0x0008 // aim/shoot at pad (ID should be given in entityid)
#define ATTACKFLAG_AIMATDIRECTION 0x0010 // aim/shoot in compass direction (0000, 4000, 8000, c000)
#define ATTACKFLAG_AIMONLY 0x0020 // aim only - do not shoot
#define ATTACKFLAG_DONTTURN 0x0040 // don't do a shooting animation that would change the chr's direction
#define ATTACKFLAG_SINGLESHOT 0x0080 // single shot only (doesn't work correctly with dual weapons)
#define ATTACKFLAG_AIMATTARGET 0x0200 // aim/shoot at whatever is in the chr's `target` field
#define AUDIOCHANNELFLAG_IDLE 0x0001
#define AUDIOCHANNELFLAG_0002 0x0002
#define AUDIOCHANNELFLAG_0008 0x0008
#define AUDIOCHANNELFLAG_0010 0x0010
#define AUDIOCHANNELFLAG_0020 0x0020
#define AUDIOCHANNELFLAG_0040 0x0040
#define AUDIOCHANNELFLAG_0080 0x0080
#define AUDIOCHANNELFLAG_0200 0x0200
#define AUDIOCHANNELFLAG_0400 0x0400
#define AUDIOCHANNELFLAG_0800 0x0800
#define AUDIOCHANNELFLAG_1000 0x1000
#define AUDIOCHANNELFLAG_2000 0x2000
#define AUDIOCHANNELFLAG_8000 0x8000
#define AUDIOCHANNELFLAG2_0001 0x0001
#define AUDIOCHANNELFLAG2_0010 0x0010
#define AUDIOCHANNELFLAG2_OFFENSIVE 0x0020
#define AUDIOCHANNELFLAG2_0040 0x0040
#define AUDIOCHANNELFLAG2_0080 0x0080
#define AUDIOCONFIGFLAG_01 0x01
#define AUDIOCONFIGFLAG_04 0x04
#define AUDIOCONFIGFLAG_08 0x08
#define AUDIOCONFIGFLAG_OFFENSIVE 0x10
#define AUDIOCONFIGFLAG_20 0x20
#define AUDIOCONFIGFLAG_40 0x40
#define AWARD_MOSTSUICIDAL 0x00000001
#define AWARD_WHONEEDSAMMO 0x00000002
#define AWARD_LEASTSHIELDED 0x00000004
#define AWARD_BESTPROTECTED 0x00000008
#define AWARD_MARKSMANSHIP 0x00000010
#define AWARD_MOSTPROFESSIONAL 0x00000020
#define AWARD_MOSTDEADLY 0x00000040
#define AWARD_MOSTHARMLESS 0x00000080
#define AWARD_MOSTCOWARDLY 0x00000100
#define AWARD_MOSTFRANTIC 0x00000200
#define AWARD_MOSTHONORABLE 0x00000400
#define AWARD_MOSTDISHONORABLE 0x00000800
#define AWARD_SHORTESTLIFE 0x00001000
#define AWARD_LONGESTLIFE 0x00002000
#define AWARD_DOUBLEKILL 0x00004000
#define AWARD_TRIPLEKILL 0x00008000
#define AWARD_QUADKILL 0x00010000
#define BANK_0 0
#define BANK_1 1
#define BOTDIFF_MEAT 0
#define BOTDIFF_EASY 1
#define BOTDIFF_NORMAL 2
#define BOTDIFF_HARD 3
#define BOTDIFF_PERFECT 4
#define BOTDIFF_DARK 5
#define BOTDIFF_DISABLED 6
#define BOTDISTCFG_CLOSE 0
#define BOTDISTCFG_PISTOL 1
#define BOTDISTCFG_DEFAULT 2
#define BOTDISTCFG_SHOOTEXPLOSIVE 3
#define BOTDISTCFG_KAZE 4
#define BOTDISTCFG_FARSIGHT 5
#define BOTDISTCFG_FOLLOW 6
#define BOTDISTCFG_THROWEXPLOSIVE 7
// Bot distance modes
#define BOTDISTMODE_BACKUP 1
#define BOTDISTMODE_OK 2
#define BOTDISTMODE_ADVANCE 3
#define BOTDISTMODE_GOTO 4
#define BOTTYPE_GENERAL 0
#define BOTTYPE_PEACE 1 // Collects weapons but doesn't engage in combat
#define BOTTYPE_SHIELD 2 // Prioritises full shield before combat
#define BOTTYPE_ROCKET 3 // Prefers explosive weapons
#define BOTTYPE_KAZE 4 // Does not keep distance
#define BOTTYPE_FIST 5 // Uses fists only
#define BOTTYPE_PREY 6 // Target players who are newly spawned, have inferior weapons or are low on health
#define BOTTYPE_COWARD 7 // Runs away, only attacks if opponent's weapon is inferior
#define BOTTYPE_JUDGE 8 // Targets the winning player
#define BOTTYPE_FEUD 9 // Targets a single player for the whole match
#define BOTTYPE_SPEED 10 // Runs faster
#define BOTTYPE_TURTLE 11 // Moves slower and has double shield
#define BOTTYPE_VENGE 12 // Targets the last player who killed it
#define BRIEFINGTYPE_LOCATION 0
#define BRIEFINGTYPE_TEXT_PA 1
#define BRIEFINGTYPE_TEXT_SA 2
#define BRIEFINGTYPE_TEXT_A 3
#define CAMERAMODE_DEFAULT 0
#define CAMERAMODE_THIRDPERSON 1
#define CAMERAMODE_EYESPY 2
#define CASING_NONE -1
#define CASING_STANDARD 0
#define CASING_REAPER 1
#define CASING_RIFLE 2
#define CASING_SHOTGUN 3
#define CHANNEL_0 0
#define CHANNEL_1 1
#define CHANNEL_2 2
#define CHANNEL_3 3
#define CHANNEL_4 4
#define CHANNEL_5 5
#define CHANNEL_6 6
#define CHANNEL_7 7
#define CHANNEL_8 8
#define CHANNEL_9 9
#define CHANNEL_10 10
#define CHEAT_HURRICANEFISTS 0
#define CHEAT_CLOAKINGDEVICE 1
#define CHEAT_INVINCIBLE 2
#define CHEAT_ALLGUNS 3
#define CHEAT_UNLIMITEDAMMO 4
#define CHEAT_UNLIMITEDAMMONORELOADS 5
#define CHEAT_SLOMO 6
#define CHEAT_DKMODE 7
#define CHEAT_TRENTSMAGNUM 8
#define CHEAT_FARSIGHT 9
#define CHEAT_SMALLJO 10
#define CHEAT_SMALLCHARACTERS 11
#define CHEAT_ENEMYSHIELDS 12
#define CHEAT_JOSHIELD 13
#define CHEAT_SUPERSHIELD 14
#define CHEAT_CLASSICSIGHT 15
#define CHEAT_TEAMHEADSONLY 16
#define CHEAT_PLAYASELVIS 17
#define CHEAT_ENEMYROCKETS 18
#define CHEAT_UNLIMITEDAMMOLAPTOP 19
#define CHEAT_MARQUIS 20
#define CHEAT_PERFECTDARKNESS 21
#define CHEAT_PUGILIST 22
#define CHEAT_HOTSHOT 23
#define CHEAT_HITANDRUN 24
#define CHEAT_ALIEN 25
#define CHEAT_RTRACKER 26
#define CHEAT_ROCKETLAUNCHER 27
#define CHEAT_SNIPERRIFLE 28
#define CHEAT_XRAYSCANNER 29
#define CHEAT_SUPERDRAGON 30
#define CHEAT_LAPTOPGUN 31
#define CHEAT_PHOENIX 32
#define CHEAT_PSYCHOSISGUN 33
#define CHEAT_PP9I 34
#define CHEAT_CC13 35
#define CHEAT_KL01313 36
#define CHEAT_KF7SPECIAL 37
#define CHEAT_ZZT 38
#define CHEAT_DMC 39
#define CHEAT_AR53 40
#define CHEAT_RCP45 41
#define CHEATFLAG_TIMED 0
#define CHEATFLAG_ALWAYSON 1
#define CHEATFLAG_TRANSFERPAK 2
#define CHEATFLAG_COMPLETION 4
#define CHEATFLAG_FIRINGRANGE 8
#define CHECKSUM_PLACEHOLDER 0x99aabbcc
#define CHOKETYPE_NONE 0
#define CHOKETYPE_GURGLE 1
#define CHOKETYPE_COUGH 2
#define CHR_P1P2_OPPOSITE 0xf1
#define CHR_P1P2 0xf2
#define CHR_ANY 0xf3 // Only supported by if_chr_activated_object command
#define CHR_ANTI 0xf4
#define CHR_COOP 0xf5
#define CHR_TARGET 0xf6
#define CHR_BOND 0xf8
#define CHR_CLONE 0xf9
#define CHR_SEESHOT 0xfa
#define CHR_SEEDIE 0xfb
#define CHR_PRESET 0xfc
#define CHR_SELF 0xfd
#define CHRANIMFLAG_FLIP 0x01
#define CHRANIMFLAG_MOVEWHENINVIS 0x02
#define CHRANIMFLAG_PAUSEATEND 0x04
#define CHRANIMFLAG_COMPLETED 0x08
#define CHRANIMFLAG_SLOWUPDATE 0x10
#define CHRANIMFLAG_LOCKPOS 0x40
#define CHRANIMFLAG_REVERSE 0x80
// chr->flags
#define CHRFLAG0_CANT_ALERT_GROUP 0x00000001 // Don't set group alertness when becoming aware
#define CHRFLAG0_UNUSED_00000002 0x00000002
#define CHRFLAG0_GP1 0x00000004 // General purpose
#define CHRFLAG0_CAN_EXAMINE_BODY 0x00000008
#define CHRFLAG0_UNDERCOVER 0x00000010 // Chr is hiding behind cover
#define CHRFLAG0_SAID_INJURY_QUIP 0x00000020
#define CHRFLAG0_COVER_TYPE1 0x00000040 // Use a certain type of cover - never set though
#define CHRFLAG0_CHUCKNORRIS 0x00000080 // Makes punch animation faster, and damage is multiplied by the chr's morale then doubled. Must also have CHRFLAG1_ADJUSTPUNCHSPEED
#define CHRFLAG0_CAN_BACKOFF 0x00000100
#define CHRFLAG0_CAN_RETREAT 0x00000200
#define CHRFLAG0_SURPRISABLE 0x00000400
#define CHRFLAG0_CAN_THROW_GRENADES 0x00000800
#define CHRFLAG0_CAN_FLANK 0x00001000
#define CHRFLAG0_SKIPSAFETYCHECKS 0x00002000
#define CHRFLAG0_FORCESAFETYCHECKS 0x00004000 // Overrides CHRFLAG0_SKIPSAFETYCHECKS
#define CHRFLAG0_00008000 0x00008000 // Something to do with breaking cover or grenades?
#define CHRFLAG0_AIVSAI 0x00010000 // Allow chr to fight with other AI
#define CHRFLAG0_CAN_TRAP 0x00020000
#define CHRFLAG0_CAN_TRAVEL 0x00040000
#define CHRFLAG0_SQUADALERTANYDIST 0x00080000
#define CHRFLAG0_ALERT_ON_HEARSPAWN 0x00100000 // Become alert when hearing player and never on screen
#define CHRFLAG0_CAN_FLEESURRENDER 0x00200000 // When unarmed, chr can run from player and surrender if caught up
#define CHRFLAG0_UNUSED_00400000 0x00400000
#define CHRFLAG0_CAN_HEAR_ALARMS 0x00800000
#define CHRFLAG0_NOACCURACYAFTERJAM 0x01000000
#define CHRFLAG0_SAID_AMBUSH_QUIP 0x02000000
#define CHRFLAG0_HOLD_POSITION 0x04000000 // Chr can't track (follow) player
#define CHRFLAG0_COVER_TYPE2 0x08000000
#define CHRFLAG0_CAN_USE_COVER 0x10000000 // Flag is turned off permanently if player gets too close
#define CHRFLAG0_CAN_HEARSPAWN 0x20000000
#define CHRFLAG0_NOHEAR 0x40000000
#define CHRFLAG0_CANLOSEGUN 0x80000000
// chr->flags2
#define CHRFLAG1_HANDCOMBATONLY 0x00000001
#define CHRFLAG1_LOSTGUN 0x00000002 // Chr has dropped their gun and can no longer recover it
#define CHRFLAG1_CAN_ATTACKAMOUNT 0x00000004 // Can use ACT_ATTACKAMOUNT as part of general attack anims
#define CHRFLAG1_WARFIRSTKING 0x00000008 // Specific to WAR only
#define CHRFLAG1_CAN_ATTACKAMOUNTRELOAD 0x00000010 // Same as CHRFLAG1_CAN_ATTACKAMOUNT, but reload afterwards
#define CHRFLAG1_CAN_RELOAD 0x00000020
#define CHRFLAG1_CAN_SNIPE 0x00000040
#define CHRFLAG1_ADJUSTPUNCHSPEED 0x00000080 // Makes chr punch slower, unless chr also has CHRFLAG0_CHUCKNORRIS
#define CHRFLAG1_DOINGIDLEANIMATION 0x00000100
#define CHRFLAG1_PREWARNED 0x00000200
#define CHRFLAG1_INDARKROOM 0x00000400 // Lights are out - chr has poor visibility
#define CHRFLAG1_PUNCHAIEXTRADAMAGE 0x00000800 // Punch does extra damage if target is AI - once only
#define CHRFLAG1_NOHANDCOMBAT 0x00001000 // Chr will not use hand combat
#define CHRFLAG1_THROWGRENADEFIRST 0x00002000 // Chr will throw grenade as first attack
#define CHRFLAG1_ALLOWSOFTCOVER 0x00004000
#define CHRFLAG1_LONG_CAMSPY_OBSERVATION 0x00008000
#define CHRFLAG1_HEARSPAWN_ALERT_IF_ALARM 0x00010000 // After hearing an alarm, if the chr spawns a clone due to hearing you the chr themself will become alert
#define CHRFLAG1_DODGED 0x00020000 // Has no effect
#define CHRFLAG1_FLANKED 0x00040000
#define CHRFLAG1_NOIDLEANIMS 0x00080000 // Don't yawn etc
#define CHRFLAG1_AIVSAI_ADVANTAGED 0x00100000 // Chr will attack other AI first
#define CHRFLAG1_NOOP_00200000 0x00200000
#define CHRFLAG1_PUNCH_THEN_GENERAL_COMBAT 0x00400000 // If unset, return after punching. If set, assign general combat
#define CHRFLAG1_DONE_SEARCH_ANIM 0x00800000
#define CHRFLAG1_LOOKINGFORTARGET 0x01000000 // Chr is tracking/searching for their target
#define CHRFLAG1_STOPTRACKINGIFLOOKEDAT 0x02000000
#define CHRFLAG1_CAN_LOOK_AROUND 0x04000000
#define CHRFLAG1_TALKINGTODISGUISE 0x08000000
#define CHRFLAG1_SEARCHSAMEROOM 0x10000000 // Search for player in chr's current room rather than player's current room
#define CHRFLAG1_CAN_DRAW_PISTOL 0x20000000
#define CHRFLAG1_IGNORECOVER 0x40000000
#define CHRFLAG1_PUNCHHARDER 0x80000000 // Punches deal 6x the usual damage. Must not have CHRFLAG0_CHUCKNORRIS
// chr->hidden
#define CHRHFLAG_00000001 0x00000001 // Set when chr drops weapon
#define CHRHFLAG_IS_HEARING_TARGET 0x00000002 // Not used in scripts
#define CHRHFLAG_FIRINGLEFT 0x00000004
#define CHRHFLAG_FIRINGRIGHT 0x00000008
#define CHRHFLAG_BLOCKINGDOOR 0x00000010
#define CHRHFLAG_REAPED 0x00000020
#define CHRHFLAG_TIMER_RUNNING 0x00000040
#define CHRHFLAG_00000080 0x00000080 // Not used in scripts
#define CHRHFLAG_PERIMDISABLED 0x00000100
#define CHRHFLAG_00000200 0x00000200 // Not used in scripts
#define CHRHFLAG_PASSIVE 0x00000400
#define CHRHFLAG_00000800 0x00000800
#define CHRHFLAG_UNTARGETABLE 0x00001000 // Player is disgused on Rescue, or just warped
#define CHRHFLAG_00002000 0x00002000 // Globals, Rescue guards once disguised
#define CHRHFLAG_TRIGGER_BUDDY_WARP 0x00004000
#define CHRHFLAG_PERFECTACCURACY 0x00008000
#define CHRHFLAG_DISGUISE_UNCOVERED 0x00010000
#define CHRHFLAG_00020000 0x00020000 // Used in every stage, on Jo and other chrs. Only ever set, never unset or read.
#define CHRHFLAG_00040000 0x00040000 // Not used in scripts
#define CHRHFLAG_DISGUISED 0x00080000
#define CHRHFLAG_00100000 0x00100000 // Set before warping to pad, never unset or read
#define CHRHFLAG_NEEDANIM 0x00200000
#define CHRHFLAG_00400000 0x00400000 // Set in Chicago, G5, AF1, Defense, Attack Ship, Skedar Ruins, Maian SOS, WAR
#define CHRHFLAG_00800000 0x00800000 // Not used in scripts
#define CHRHFLAG_ASKEDABOUTGUN 0x01000000
#define CHRHFLAG_ALMOSTUNCOVERED 0x02000000
#define CHRHFLAG_04000000 0x04000000 // Related to disguise and detection
#define CHRHFLAG_DONTSHOOTME 0x08000000 // Globals, Villa and G5
#define CHRHFLAG_INFINITESHIELD 0x10000000
#define CHRHFLAG_CLOAKED 0x20000000
#define CHRHFLAG_ANTINONINTERACTABLE 0x40000000
#define CHRHFLAG_DETECTED 0x80000000 // If set on player
#define CHRHFLAG_PSYCHOSISED 0x80000000 // If set on AI
// chr->hidden2
#define CHRH2FLAG_HIDDENFORCUTSCENE 0x0001
#define CHRH2FLAG_SHIELDHIT 0x0002 // Turns off when shield no longer visible
#define CHRH2FLAG_0004 0x0004
#define CHRH2FLAG_BLUESIGHT 0x0008
#define CHRH2FLAG_TICKDURINGAUTOCUT 0x0010
#define CHRH2FLAG_0020 0x0020
#define CHRH2FLAG_0040 0x0040
#define CHRH2FLAG_0080 0x0080
#define CHRH2FLAG_HEADSHOTTED 0x1000
// chr->chrflags
#define CHRCFLAG_00000001 0x00000001 // Villa takers, Attack Ship Cass and skedar - both set at end of intros
#define CHRCFLAG_CLONEABLE 0x00000002
#define CHRCFLAG_NEAR_MISS 0x00000004
#define CHRCFLAG_EVERONSCREEN 0x00000008
#define CHRCFLAG_INVINCIBLE 0x00000010
#define CHRCFLAG_LOSEXTRAHEIGHT 0x00000020 // Chicago, Infiltration, AF1, Ruins, WAR
#define CHRCFLAG_00000040 0x00000040 // Used quite a lot
#define CHRCFLAG_CANFACEWALL 0x00000080 // Defection programmer, Rescue lab techs, globals when doing idle animation
#define CHRCFLAG_JUST_INJURED 0x00000100
#define CHRCFLAG_00000200 0x00000200 // Set on clones
#define CHRCFLAG_HIDDEN 0x00000400
#define CHRCFLAG_NOAUTOAIM 0x00000800
#define CHRCFLAG_UNEXPLODABLE 0x00001000
#define CHRCFLAG_NOSHADOW 0x00002000
#define CHRCFLAG_HAS_SPECIAL_DEATH_ANIMATION 0x00004000
#define CHRCFLAG_DIEWITHFORCE 0x00008000 // When killed with a weak weapon, fling the chr as if it was a strong weapon
#define CHRCFLAG_PERIMDISABLEDTMP 0x00010000 // Collisions disabled temporarily
#define CHRCFLAG_FORCEAUTOAIM 0x00020000 // Allow auto aim even if chr is unarmed
#define CHRCFLAG_00040000 0x00040000 // Used a lot
#define CHRCFLAG_RUNFASTER 0x00080000
#define CHRCFLAG_KILLCOUNTABLE 0x00100000
#define CHRCFLAG_TRIGGERSHOTLIST 0x00200000
#define CHRCFLAG_00400000 0x00400000 // Not used in scripts
#define CHRCFLAG_UNPLAYABLE 0x00800000
#define CHRCFLAG_PUSHABLE 0x01000000 // Typically set on allies during init
#define CHRCFLAG_SHIELDDAMAGED 0x02000000
#define CHRCFLAG_KEEPCORPSEKO 0x04000000
#define CHRCFLAG_CONSIDER_DODGE 0x08000000
#define CHRCFLAG_10000000 0x10000000 // Not used in scripts
#define CHRCFLAG_20000000 0x20000000 // Not used in scripts
#define CHRCFLAG_40000000 0x40000000 // Not used in scripts
#define CHRCFLAG_INJUREDTARGET 0x80000000
#define CIQUIP_GREETING 0
#define CIQUIP_MAIN 1
#define CIQUIP_ANNOYED 2
#define CIQUIP_THANKS 3
#define CMD_LABEL 0x0002
#define CMD_END 0x0004
#define CMD_PRINT 0x00b5
// Collision detection
#define CDRESULT_ERROR -1
#define CDRESULT_COLLISION 0
#define CDRESULT_NOCOLLISION 1
#define CDTYPE_OBJS 0x0001
#define CDTYPE_DOORS 0x0002
#define CDTYPE_PLAYERS 0x0004
#define CDTYPE_CHRS 0x0008
#define CDTYPE_PATHBLOCKER 0x0010 // glass and scenery with OBJFLAG_PATHBLOCKER
#define CDTYPE_BG 0x0020
#define CDTYPE_OBJSWITHFLAG 0x0080
#define CDTYPE_AIOPAQUE 0x0100 // exclude objects with OBJFLAG_AISEETHROUGH
#define CDTYPE_OBJSWITHFLAG2 0x0200
#define CDTYPE_OBJSNOTSAFEORHELI 0x0400
#define CDTYPE_DOORSWITHOUTFLAG 0x0800
#define CDTYPE_CLOSEDDOORS 0x1000
#define CDTYPE_OPENDOORS 0x2000
#define CDTYPE_AJARDOORS 0x4000
#define CDTYPE_DOORSLOCKEDTOAI 0x8000
#define CDTYPE_ALL 0x003f
#define CHOPPERMODE_PATROL 0
#define CHOPPERMODE_COMBAT 1
#define CHOPPERMODE_FALL 2
#define CHOPPERMODE_DEAD 3
#define COLOR_00_GREEN 0x00
#define COLOR_02_WHITE 0x02
#define COLOR_03_RED 0x03
#define COLOR_04_ORANGE 0x04
#define COLOR_05_GREEN 0x05
#define COLOR_06_WHITE 0x06
#define COLOR_07_RED 0x07
#define COLOR_08_RED 0x08
#define COLOR_09_BLUE 0x09
#define COMPARE_ANY 0
#define COMPARE_FRIENDS 1
#define COMPARE_ENEMIES 2
// Control styles - 1.1, 1.2 etc
#define CONTROLMODE_11 0
#define CONTROLMODE_12 1
#define CONTROLMODE_13 2
#define CONTROLMODE_14 3
#define CONTROLMODE_21 4
#define CONTROLMODE_22 5
#define CONTROLMODE_23 6
#define CONTROLMODE_24 7
#define COUNTDOWNTIMERREASON_AI 0x01
#define COUNTDOWNTIMERREASON_NOCONTROL 0x10
#define COVERCRITERIA_0001 0x0001
#define COVERCRITERIA_FURTHEREST 0x0002
#define COVERCRITERIA_DISTTOME 0x0004
#define COVERCRITERIA_DISTTOTARGET 0x0008
#define COVERCRITERIA_FORCENEWCOVER 0x0010
#define COVERCRITERIA_0020 0x0020
#define COVERCRITERIA_0040 0x0040
#define COVERCRITERIA_ALLOWNEIGHBOURINGROOMS 0x0080
#define COVERCRITERIA_ONLYNEIGHBOURINGROOMS 0x0100
#define COVERCRITERIA_0200 0x0200
#define COVERCRITERIA_ROOMSFROMTARGET 0x0400
#define COVERCRITERIA_ROOMSFROMME 0x0800
#define COVERCRITERIA_1000 0x1000
#define COVERCRITERIA_2000 0x2000
#define COVERCRITERIA_DISTTOFETCHPROP 0x4000
#define COVERCRITERIA_ALLOWSOFT 0x8000
#define COVERFLAG_0001 0x0001
#define COVERFLAG_INUSE 0x0002
#define COVERFLAG_AIMSAMEROOM 0x0004 // look + 6 metres is in the same room
#define COVERFLAG_AIMDIFFROOM 0x0008 // look + 6 metres is not in the same room
#define COVERFLAG_OMNIDIRECTIONAL 0x0010
#define COVERFLAG_0020 0x0020
#define COVERFLAG_0040 0x0040
#define COVERFLAG_0080 0x0080
#define COVERFLAG_0100 0x0100
// L/C/R = left/centered/right
// big/med/sml is the font size
#define CREDITSTYLE_R_BIG_R_MED 1
#define CREDITSTYLE_C_BIG 2
#define CREDITSTYLE_C_MED 3
#define CREDITSTYLE_04 4
#define CREDITSTYLE_C_SML 5
#define CREDITSTYLE_L_BIG 7
#define CREDITSTYLE_R_MED 9
#define CREDITSTYLE_11 11
#define CREDITSTYLE_12 12
#define CREDITSTYLE_C_BIG_C_BIG 10
#define CREDITSTYLE_TERMINATOR 20
#define CROUCHPOS_SQUAT 0
#define CROUCHPOS_DUCK 1
#define CROUCHPOS_STAND 2
#define CULLMODE_NONE 1
#define CULLMODE_FRONT 2
#define CULLMODE_BACK 3
#define DAMAGETYPE_0 0
#define DAMAGETYPE_1 1
#define DAMAGETYPE_2 2
#define DAMAGETYPE_3 3
#define DAMAGETYPE_4 4
#define DAMAGETYPE_5 5
#define DAMAGETYPE_6 6
#define DAMAGETYPE_7 7
#define DESCRIPTION_BRIEFING 0x00
#define DESCRIPTION_MPCONFIG 0x01
#define DESCRIPTION_MPCHALLENGE 0x02
#define DESCRIPTION_CHRBIO 0x03
#define DESCRIPTION_MISCBIO 0x04
#define DESCRIPTION_DEVICETRAINING 0x05
#define DESCRIPTION_FRWEAPON 0x06
#define DESCRIPTION_HANGARBIO 0x07
#define DESCRIPTION_HOLOTRAINING 0x08
#define DESCRIPTION_HOLOTIP1 0x09
#define DESCRIPTION_HOLOTIP2 0x0a
#define DESCRIPTION_DEVICETIP1 0x0b
#define DESCRIPTION_DEVICETIP2 0x0c
#define DEVICE_NIGHTVISION 0x01
#define DEVICE_XRAYSCANNER 0x02
#define DEVICE_EYESPY 0x04
#define DEVICE_IRSCANNER 0x08
#define DEVICE_RTRACKER 0x10
#define DEVICE_SUICIDEPILL 0x20
#define DEVICE_CLOAKDEVICE 0x40
#define DEVICE_CLOAKRCP120 0x80
#define DEVICESTATE_UNEQUIPPED -1
#define DEVICESTATE_INACTIVE 0
#define DEVICESTATE_ACTIVE 1
#define DIFF_A 0x00
#define DIFF_SA 0x01
#define DIFF_PA 0x02
#define DIFF_PD 0x03
// These difficulties are for briefings, which can be bitwise ORed
#define DIFFBIT_A 0x01
#define DIFFBIT_SA 0x02
#define DIFFBIT_PA 0x04
#define DIFFBIT_PD 0x08
#define DOORFLAG_0001 0x0001
#define DOORFLAG_WINDOWED 0x0002
#define DOORFLAG_0004 0x0004
#define DOORFLAG_FLIP 0x0008
#define DOORFLAG_AUTOMATIC 0x0010
#define DOORFLAG_0020 0x0020
#define DOORFLAG_ROTATEDPAD 0x0040
#define DOORFLAG_0080 0x0080
#define DOORFLAG_0100 0x0100
#define DOORFLAG_LONGRANGE 0x0200
#define DOORFLAG_DAMAGEONCONTACT 0x0400 // Lasers
#define DOORFLAG_UNBLOCKABLEOPEN 0x0800 // Skip collision checks when opening
#define DOORFLAG_4000 0x4000 // Two Investigation vertical doors after lasers
#define DOORMODE_IDLE 0
#define DOORMODE_OPENING 1
#define DOORMODE_CLOSING 2
#define DOORMODE_WAITING 3 // Waiting for sibling door to close. Eg. Dam gates in GE
// For AI commands - bitwise ORable
#define DOORSTATE_CLOSED 1
#define DOORSTATE_OPEN 2
#define DOORSTATE_CLOSING 4
#define DOORSTATE_OPENING 8
#define DOORTYPE_SLIDING 0
#define DOORTYPE_FLEXI1 1 // GE only - Bunker flexi door
#define DOORTYPE_FLEXI2 2
#define DOORTYPE_FLEXI3 3
#define DOORTYPE_VERTICAL 4
#define DOORTYPE_SWINGING 5
#define DOORTYPE_EYE 6 // GE only - Caverns
#define DOORTYPE_IRIS 7 // GE only - Caverns
#define DOORTYPE_FALLAWAY 8 // GE only - Surface grate and Train floor panel
#define DOORTYPE_AZTECCHAIR 9 // GE only
#define DOORTYPE_HULL 10 // Attack Ship windows
#define DOORTYPE_LASER 11
#define DRCAROLLIMAGE_EYESDEFAULT 0
#define DRCAROLLIMAGE_HEARTRATE 1
#define DRCAROLLIMAGE_EYESFROWNING 2
#define DRCAROLLIMAGE_X 3
#define DRCAROLLIMAGE_STATIC 4
#define DRCAROLLIMAGE_BINARY 5
#define DRCAROLLIMAGE_EYESSLEEPY 6
#define DRCAROLLIMAGE_RANDOM25 7
#define DRCAROLLIMAGE_RANDOM 8
#define DROPTYPE_DEFAULT 1
#define DROPTYPE_SURRENDER 2
#define DROPTYPE_THROWGRENADE 3
#define DROPTYPE_HAT 4
#define DROPTYPE_5 5
#define DROPTYPE_OWNERREAP 6
#define EXPLOSIONTYPE_NONE 0
#define EXPLOSIONTYPE_BULLETHOLE 1
#define EXPLOSIONTYPE_EYESPY 2
#define EXPLOSIONTYPE_LAPTOP 3
#define EXPLOSIONTYPE_A51TABLE 4
#define EXPLOSIONTYPE_FRTARGET 5
#define EXPLOSIONTYPE_6 6
#define EXPLOSIONTYPE_7 7
#define EXPLOSIONTYPE_8 8
#define EXPLOSIONTYPE_9 9
#define EXPLOSIONTYPE_11 11
#define EXPLOSIONTYPE_12 12
#define EXPLOSIONTYPE_ROCKET 13
#define EXPLOSIONTYPE_GASBARREL 14
#define EXPLOSIONTYPE_16 16
#define EXPLOSIONTYPE_HUGE17 17
#define EXPLOSIONTYPE_BONDEXPLODE 18
#define EXPLOSIONTYPE_SDGRENADE 21
#define EXPLOSIONTYPE_PHOENIX 22
#define EXPLOSIONTYPE_DRAGONBOMBSPY 23 // Used by both Dragon and bombspy
#define EXPLOSIONTYPE_24 24
#define EXPLOSIONTYPE_HUGE25 25
#define EYESPYHIT_NONE 0
#define EYESPYHIT_BG 1
#define EYESPYHIT_CHR 2
#define EYESPYHIT_DOOR 3
#define EYESPYHIT_LASER 4
#define EYESPYHIT_OBJ 5
#define EYESPYMODE_CAMSPY 0
#define EYESPYMODE_DRUGSPY 1
#define EYESPYMODE_BOMBSPY 2
#define FILEERROR_NOPAK 0
#define FILEERROR_SAVEFAILED 1
#define FILEERROR_LOADFAILED 2
#define FILEERROR_DELETEFAILED 3
#define FILEERROR_OUTOFMEMORY 4
#define FILEERROR_ALREADYLOADED 5
#define FILEERROR_PAKREMOVED 6
#define FILEERROR_PAKDAMAGED 7
#define FILEERROR_DELETENOTEFAILED 8
#define FILELOADMETHOD_EXTRAMEM 0x11
#define FILELOADMETHOD_DEFAULT 0x22
#define FILEOP_IS_LOAD(op) (op >= 100)
#define FILEOP_IS_SAVE(op) (op < 100)
#define FILEOP_SAVE_GAME_000 0 // from endscreens
#define FILEOP_SAVE_GAME_001 1 // from closing options dialog
#define FILEOP_SAVE_GAME_002 2
#define FILEOP_SAVE_MPPLAYER 3
#define FILEOP_SAVE_MPSETUP 4
#define FILEOP_005 5 // Perfect head?
#define FILEOP_WRITE_GAME 6
#define FILEOP_WRITE_MPSETUP 7
#define FILEOP_WRITE_MPPLAYER 8
#define FILEOP_LOAD_GAME 100
#define FILEOP_LOAD_MPPLAYER 101
#define FILEOP_LOAD_MPSETUP 102
#define FILEOP_103 103 // Perfect head?
#define FILEOP_READ_GAME 104
#define FILEOP_READ_MPSETUP 105
#define FILEOP_READ_MPPLAYER 106
#define FILESTATE_UNSELECTED 0
#define FILESTATE_SELECTED 1
#define FILESTATE_CHANGINGAGENT 2
#define FILETYPE_GAME 0
#define FILETYPE_MPSETUP 1
#define FILETYPE_MPPLAYER 2
#define FILETYPE_CAMERA 3
#define FLOORTYPE_DEFAULT 0
#define FLOORTYPE_WOOD 1
#define FLOORTYPE_STONE 2
#define FLOORTYPE_CARPET 3
#define FLOORTYPE_METAL 4
#define FLOORTYPE_MUD 5
#define FLOORTYPE_WATER 6
#define FLOORTYPE_DIRT 7
#define FLOORTYPE_SNOW 8
#define FRCMD_ADDTARGET 0x00
#define FRCMD_SETMAXACTIVETARGETS 0x01
#define FRCMD_SETGOALSCORE 0x02
#define FRCMD_SETTIMELIMIT 0x03
#define FRCMD_SETAMMOLIMIT 0x04
#define FRCMD_SETEXTRASPEED 0x05
#define FRCMD_SETGOALACCURACY 0x06
#define FRCMD_SETGOALTARGETS 0x07
#define FRCMD_SETHELPSCRIPT 0x08
#define FRCMD_SETGRENADELIMIT 0x09
#define FRCMD_SETPADINDEXOFFSET 0x0a
#define FRCMD_SETSCOREMULTIPLIER 0x0b
#define FRCMD_GOTOPAD 0x0c
#define FRCMD_RESTART 0x0d
#define FRCMD_WAITSECONDS 0x0e
#define FRCMD_ROTATE 0x0f
#define FRCMD_HUDMSG 0x10
#define FRCMD_WAITUNTILSHOOT 0x11
#define FRCMD_HELPWAITSECONDS 0x12
#define FRCMD_END 0x13
#define FRCMD_IFBRONZE 0xfb
#define FRCMD_IFSILVER 0xfc
#define FRCMD_IFGOLD 0xfd
#define FRDIFFICULTY_BRONZE 0
#define FRDIFFICULTY_SILVER 1
#define FRDIFFICULTY_GOLD 2
#define FRFAILREASON_NOTFAILED 0
#define FRFAILREASON_OUTOFAMMO 1
#define FRFAILREASON_TIMEOVER 2
#define FRFAILREASON_SCOREUNATTAINABLE 3
#define FRFAILREASON_INACCURATE 4
#define FRMENUTYPE_WEAPONLIST 0
#define FRMENUTYPE_DETAILS 1
#define FRMENUTYPE_FAILED 2
#define FRMENUTYPE_COMPLETED 3
#define FRROTATE_90R 0
#define FRROTATE_180R 1
#define FRROTATE_90L 2
#define FRROTATE_180L 3
#define FRTARGETFLAG_BRONZE 0x01
#define FRTARGETFLAG_SILVER 0x02
#define FRTARGETFLAG_GOLD 0x04
#define FRTARGETFLAG_ROTATEONCLOAK 0x08
#define FRTARGETFLAG_SPAWNFACINGAWAY 0x10
#define FRTARGETFLAG_ONEHITEXPLODE 0x20
#define FRTARGETFLAG_FARSIGHTAUTOTARGETABLE 0x40
#define FRTARGETFLAG_TMPINVINCIBLE 0x80
#define FRZONE_RING3 1
#define FRZONE_RING2 2
#define FRZONE_RING1 5
#define FRZONE_BULLSEYE 10
#define FRZONE_EXPLODE 11
// Weapon functions
#define FUNC_PRIMARY 0
#define FUNC_SECONDARY 1
#define FUNC_2 2
#define FUNC_POISON 3 // Internal function for delivering knife poison periodically
#define FUNCFLAG_00000001 0x00000001
#define FUNCFLAG_BURST3 0x00000002
#define FUNCFLAG_BURST50 0x00000020 // automatics only
#define FUNCFLAG_NOAUTOAIM 0x00000040
#define FUNCFLAG_STICKTOWALL 0x00000100
#define FUNCFLAG_MAKEDIZZY 0x00000200
#define FUNCFLAG_DROPWEAPON 0x00000400
#define FUNCFLAG_FLYBYWIRE 0x00000800
#define FUNCFLAG_BURST2 0x00001000
#define FUNCFLAG_NOMUZZLEFLASH 0x00002000
#define FUNCFLAG_EXPLOSIVESHELLS 0x00004000
#define FUNCFLAG_BLUNTIMPACT 0x00008000
#define FUNCFLAG_NOSTUN 0x00010000
#define FUNCFLAG_BURST5 0x00020000
#define FUNCFLAG_DISCARDWEAPON 0x00040000 // Dragon and Laptop throw
#define FUNCFLAG_THREATDETECTOR 0x00080000
#define FUNCFLAG_AUTOSWITCHUNSELECTABLE 0x00100000
#define FUNCFLAG_PSYCHOSIS 0x00200000
#define FUNCFLAG_00400000 0x00400000 // punch, disarm and pistol whip
#define FUNCFLAG_CALCULATETRAJECTORY 0x00800000 // throwables will land on crosshair
#define FUNCFLAG_08000000 0x08000000 // rockets
#define FUNCFLAG_10000000 0x10000000 // grenade launchers
#define FUNCFLAG_20000000 0x20000000 // explosives related
#define FUNCFLAG_HOMINGROCKET 0x40000000
#define FUNCFLAG_80000000 0x80000000
#define GAILIST_IDLE 0x0000
#define GAILIST_UNALERTED_0001 0x0001
#define GAILIST_UNALERTED_0002 0x0002
#define GAILIST_STOP_UNALERTED 0x0003 // unused
#define GAILIST_UNALERTED_0004 0x0004
#define GAILIST_END_CINEMA 0x0005
#define GAILIST_UNALERTED 0x0006
#define GAILIST_ALERTED 0x0007
#define GAILIST_WAKEUP 0x0008
#define GAILIST_IDLE_0009 0x0009
#define GAILIST_BUSY 0x000a
#define GAILIST_CHOOSE_TARGET 0x000b
#define GAILIST_COMBAT_WITH_TARGET 0x000c
#define GAILIST_INIT_COMBAT 0x000d // unused
#define GAILIST_SEE_THEN_ATTACK 0x000e // unused
#define GAILIST_HAND_COMBAT 0x000f
#define GAILIST_CIVILIAN_SAY_COMMENT 0x0010
#define GAILIST_FLEE_FROM_GRENADE 0x0011
#define GAILIST_INIT_DEFAULT_BUDDY 0x0012
#define GAILIST_INIT_PUGILIST_BUDDY 0x0013
#define GAILIST_BUDDY_MAIN 0x0014
#define GAILIST_BUDDY_STEALTH 0x0015
#define GAILIST_SHOW_OBJ_FAILED_MSG (VERSION >= VERSION_NTSC_1_0 ? 0x0016 : 0x0015)
#define GAILIST_REBUILD_GROUPS (VERSION >= VERSION_NTSC_1_0 ? 0x0017 : 0x0016)
#define GAILIST_DO_BORED_ANIMATION (VERSION >= VERSION_NTSC_1_0 ? 0x0018 : 0x0017)
#define GAILIST_DO_SITTING_ANIMATION (VERSION >= VERSION_NTSC_1_0 ? 0x0019 : 0x0018)
#define GAILIST_PATROLLER_DIS_TALKING (VERSION >= VERSION_NTSC_1_0 ? 0x001a : 0x0019)
#define GAILIST_OBSERVE_CAMSPY (VERSION >= VERSION_NTSC_1_0 ? 0x001b : 0x001a)
#define GAILIST_SURPRISED (VERSION >= VERSION_NTSC_1_0 ? 0x001c : 0x001b)
#define GAILIST_SEARCH_FOR_PLAYER (VERSION >= VERSION_NTSC_1_0 ? 0x001d : 0x001c)
#define GAILIST_LOOK_AROUND (VERSION >= VERSION_NTSC_1_0 ? 0x001e : 0x001d)
#define GAILIST_RELATED_TO_SPAWNING (VERSION >= VERSION_NTSC_1_0 ? 0x001f : 0x001e)
#define GAILIST_BUDDY_WARP (VERSION >= VERSION_NTSC_1_0 ? 0x0020 : 0x001f)
#define GAILIST_STOP_AND_IDLE (VERSION >= VERSION_NTSC_1_0 ? 0x0021 : 0x0020)
#define GAILIST_COMMENT_ON_PLAYER_DEAD (VERSION >= VERSION_NTSC_1_0 ? 0x0022 : 0x0021) // unused
#define GAILIST_DODGE (VERSION >= VERSION_NTSC_1_0 ? 0x0023 : 0x0022)
#define GAILIST_FOLLOW_BOND (VERSION >= VERSION_NTSC_1_0 ? 0x0024 : 0x0023)
#define GAILIST_POINTLESS (VERSION >= VERSION_NTSC_1_0 ? 0x0025 : 0x0024) // unused
#define GAILIST_INIT_PSYCHOSIS (VERSION >= VERSION_NTSC_1_0 ? 0x0026 : 0x0025)
#define GAILIST_PSYCHOSISED (VERSION >= VERSION_NTSC_1_0 ? 0x0027 : 0x0026)
#define GAILIST_AIBOT_DEAD (VERSION >= VERSION_NTSC_1_0 ? 0x0028 : 0x0027) // unused
#define GAILIST_AIBOT_INIT (VERSION >= VERSION_NTSC_1_0 ? 0x0029 : 0x0028) // unused
#define GAILIST_AIBOT_MAIN (VERSION >= VERSION_NTSC_1_0 ? 0x002a : 0x0029) // unused
#define GAILIST_AVOID (VERSION >= VERSION_NTSC_1_0 ? 0x002b : 0x002a) // unused
#define GAILIST_INIT_SEARCH (VERSION >= VERSION_NTSC_1_0 ? 0x002c : 0x002b) // unused
#define GAILIST_INVINCIBLE_AND_IDLE (VERSION >= VERSION_NTSC_1_0 ? 0x002d : 0x002c)
#define GAMEFILEFLAG_P1_FORWARDPITCH 0x00
#define GAMEFILEFLAG_P1_AUTOAIM 0x01
#define GAMEFILEFLAG_P1_AIMCONTROL 0x02
#define GAMEFILEFLAG_P1_SIGHTONSCREEN 0x03
#define GAMEFILEFLAG_P1_LOOKAHEAD 0x04
#define GAMEFILEFLAG_P1_AMMOONSCREEN 0x05
#define GAMEFILEFLAG_SCREENSIZE_WIDE 0x06
#define GAMEFILEFLAG_SCREENRATIO 0x07
#define GAMEFILEFLAG_SCREENSIZE_CINEMA 0x08
#define GAMEFILEFLAG_P1_HEADROLL 0x09
#define GAMEFILEFLAG_P1_SHOWGUNFUNCTION 0x0a
#define GAMEFILEFLAG_INGAMESUBTITLES 0x0b
#define GAMEFILEFLAG_P2_FORWARDPITCH 0x0c
#define GAMEFILEFLAG_P2_AUTOAIM 0x0d
#define GAMEFILEFLAG_P2_AIMCONTROL 0x0e
#define GAMEFILEFLAG_P2_SIGHTONSCREEN 0x0f
#define GAMEFILEFLAG_P2_LOOKAHEAD 0x10
#define GAMEFILEFLAG_P2_AMMOONSCREEN 0x11
#define GAMEFILEFLAG_P2_HEADROLL 0x12
#define GAMEFILEFLAG_P2_SHOWGUNFUNCTION 0x13
#define GAMEFILEFLAG_CUTSCENESUBTITLES 0x14
#define GAMEFILEFLAG_P1_ALWAYSSHOWTARGET 0x15
#define GAMEFILEFLAG_P2_ALWAYSSHOWTARGET 0x16
#define GAMEFILEFLAG_P1_SHOWZOOMRANGE 0x17
#define GAMEFILEFLAG_P2_SHOWZOOMRANGE 0x18
#define GAMEFILEFLAG_SCREENSPLIT 0x19
#define GAMEFILEFLAG_P1_SHOWMISSIONTIME 0x1a
#define GAMEFILEFLAG_P2_SHOWMISSIONTIME 0x1b
#define GAMEFILEFLAG_COOPRADARON 0x1c
#define GAMEFILEFLAG_COOPFRIENDLYFIRE 0x1d
#define GAMEFILEFLAG_ANTIRADARON 0x1e
#define GAMEFILEFLAG_ANTIPLAYERNUM 0x1f
#define GAMEFILEFLAG_P1_PAINTBALL 0x20
#define GAMEFILEFLAG_P2_PAINTBALL 0x21
#define GAMEFILEFLAG_HIRES 0x22
#define GAMEFILEFLAG_USED_TRANSFERPAK 0x23
#define GAMEFILEFLAG_CI_TOUR_DONE 0x24
#define GAMEFILEFLAG_CI_HOLO7_DONE 0x29
#define GAMEFILEFLAG_CI_HOLO6_DONE 0x2a
#define GAMEFILEFLAG_CI_HOLO5_DONE 0x2b
#define GAMEFILEFLAG_CI_HOLO4_DONE 0x2c
#define GAMEFILEFLAG_CI_HOLO3_DONE 0x2d
#define GAMEFILEFLAG_CI_HOLO2_DONE 0x2e
#define GAMEFILEFLAG_CI_HOLO1_DONE 0x2f
#define GAMEFILEFLAG_CI_CLOAK_DONE 0x30
#define GAMEFILEFLAG_CI_DISGUISE_DONE 0x31
#define GAMEFILEFLAG_CI_XRAY_DONE 0x32
#define GAMEFILEFLAG_CI_IR_DONE 0x33
#define GAMEFILEFLAG_CI_RTRACKER_DONE 0x34
#define GAMEFILEFLAG_CI_DOORDECODER_DONE 0x35
#define GAMEFILEFLAG_CI_NIGHTVISION_DONE 0x36
#define GAMEFILEFLAG_CI_CAMSPY_DONE 0x37
#define GAMEFILEFLAG_CI_ECMMINE_DONE 0x38
#define GAMEFILEFLAG_CI_UPLINK_DONE 0x39
#define GAMEFILEFLAG_CI_TOUR_STARTED 0x3a
#define GAMEFILEFLAG_CRASHSITE_BIKE 0x3b
#define GAMEFILEFLAG_DEFENSE_JON 0x3c
#define GAMEFILEFLAG_AF1_ENTRY 0x3d
#define GAMEFILEFLAG_RESCUE_MECHANIC_DEAD 0x3e
#define GAMEFILEFLAG_G5_MINE 0x3f // true if thrown on top door
#define GAMEFILEFLAG_LANGFILTERON 0x40
#define GAMEFILEFLAG_FOUNDTIMEDMINE 0x41
#define GAMEFILEFLAG_FOUNDPROXYMINE 0x42
#define GAMEFILEFLAG_FOUNDREMOTEMINE 0x43
#define GAMEFILEFLAG_44 0x44
#define GAMEFILEFLAG_45 0x45
#define GAMEFILEFLAG_46 0x46
#define GAMEFILEFLAG_HOWTO_HOVERCRATE 0x47
#define GAMEFILEFLAG_HOWTO_HOVERBIKE 0x48
#define GAMEFILEFLAG_HOWTO_DOORS 0x49
#define GAMEFILEFLAG_HOWTO_ELEVATORS 0x4a
#define GAMEFILEFLAG_HOWTO_TERMINALS 0x4b
#define GAMEFILEFLAG_4C 0x4c
#define GAMEFILEFLAG_4D 0x4d
#define GAMEFILEFLAG_4E 0x4e
#define GBGAME_OTHER 0
#define GBGAME_PD 2
#define GOPOSFLAG_SPEED 0x03 // bits 0x01 and 0x02 combined
#define GOPOSFLAG_INIT 0x04
#define GOPOSFLAG_FORPATHSTART 0x08
#define GOPOSFLAG_20 0x20
#define GOPOSFLAG_DUCK 0x40
#define GOPOSFLAG_WALKDIRECT 0x80
#define GUNCMD_END 0
#define GUNCMD_SHOWPART 1
#define GUNCMD_HIDEPART 2
#define GUNCMD_WAITFORZRELEASED 3
#define GUNCMD_WAITTIME 4
#define GUNCMD_PLAYSOUND 5
#define GUNCMD_INCLUDE 6
#define GUNCMD_RANDOM 7
#define GUNCMD_REPEATUNTILFULL 8
#define GUNCMD_POPOUTSACKOFPILLS 9
#define GUNCMD_PLAYANIMATION 10
#define GUNCMD_SETSOUNDSPEED 11
#define GUNMEMOWNER_BONDGUN 0
#define GUNMEMOWNER_INVMENU 1
#define GUNMEMOWNER_CHRBODY 2
#define GUNMEMOWNER_3 3
#define GUNMEMOWNER_CHANGING 10
#define GUNMEMOWNER_FREE 11
#define GUNAMMOREASON_OPTION 0x01
#define GUNAMMOREASON_NOCONTROL 0x02
#define GUNSIGHTREASON_1 0x01
#define GUNSIGHTREASON_AIMING 0x02
#define GUNSIGHTREASON_NOCONTROL 0x04
#define GUNSIGHTREASON_DAMAGE 0x10
#define HAND_RIGHT 0
#define HAND_LEFT 1
#define HANDANIMMODE_IDLE 0
#define HANDANIMMODE_BUSY 2
#define HANDATTACKTYPE_SHOOT 1
#define HANDATTACKTYPE_SHOOTPROJECTILE 2
#define HANDATTACKTYPE_THROWPROJECTILE 3
#define HANDATTACKTYPE_CLOSERANGE 4
#define HANDATTACKTYPE_DETONATE 5
#define HANDATTACKTYPE_BOOST 6
#define HANDATTACKTYPE_REVERTBOOST 7
#define HANDATTACKTYPE_CROUCH 8
#define HANDATTACKTYPE_RCP120CLOAK 9
#define HANDATTACKTYPE_CLOSERANGENOUNCLOAK 10
#define HANDATTACKTYPE_UPLINK 12
#define HANDMODE_NONE 0
#define HANDMODE_1 1
#define HANDMODE_2 2
#define HANDMODE_6 6
#define HANDMODE_7 7
#define HANDMODE_8 8
#define HANDMODE_RELOAD 9
#define HANDMODE_11 11
#define HANDMODE_12 12
#define HANDMODE_13 13
#define HANDSTATE_IDLE 0
#define HANDSTATE_RELOAD 1
#define HANDSTATE_2 2
#define HANDSTATE_ATTACKEMPTY 3
#define HANDSTATE_ATTACK 4
#define HANDSTATE_CHANGEGUN 5
#define HANDSTATE_6 6
#define HANDSTATE_CHANGEFUNC 7
#define HANDSTATE_AUTOSWITCH 8
#define HANDSTATEFLAG_00000001 0x00000001
#define HANDSTATEFLAG_00000010 0x00000010
#define HANDSTATEFLAG_00000020 0x00000020
#define HANDSTATEFLAG_00000040 0x00000040
#define HANDSTATEFLAG_00000080 0x00000080
#define HANGARBIO_INSTITUTE 0
#define HANGARBIO_DDTOWER 1
#define HANGARBIO_LABBASEMENT 2
#define HANGARBIO_VILLA 3
#define HANGARBIO_CHICAGO 4
#define HANGARBIO_G5 5
#define HANGARBIO_AREA51 6
#define HANGARBIO_AIRBASE 7
#define HANGARBIO_AIRFORCEONE 8
#define HANGARBIO_CRASHSITE 9
#define HANGARBIO_PELAGIC 10
#define HANGARBIO_DEEPSEA 11
#define HANGARBIO_ATTACKSHIP 12
#define HANGARBIO_SKEDARRUINS 13
#define HANGARBIO_JUMPSHIP 14
#define HANGARBIO_HOVERCRATE 15
#define HANGARBIO_HOVERBIKE 16
#define HANGARBIO_HOVERBOT 17
#define HANGARBIO_HOVERCOPTER 18
#define HANGARBIO_G5ROBOT 19
#define HANGARBIO_A51INTERCEPTOR 20
#define HANGARBIO_MAIANVESSEL 21
#define HANGARBIO_SKEDARSHUTTLE 22
#define HATTYPE_2 2
#define HATTYPE_METAL 3
#define HATTYPE_CLOTH 5
#define HEADBODYTYPE_DEFAULT 0
#define HEADBODYTYPE_FEMALE 1
#define HEADBODYTYPE_FEMALEGUARD 2
#define HEADBODYTYPE_MAIAN 3
#define HEADBODYTYPE_CASS 4
#define HEADBODYTYPE_MRBLONDE 5
#define HEALTHSHOWMODE_HIDDEN 0 // health bar not visible
#define HEALTHSHOWMODE_OPENING 1 // height expanding
#define HEALTHSHOWMODE_PREVIOUS 2 // full height, showing previous health amount
#define HEALTHSHOWMODE_UPDATING 3 // full height, transitioning from previous amount to current amount
#define HEALTHSHOWMODE_CURRENT 4 // full height, showing current amount
#define HEALTHSHOWMODE_CLOSING 5 // height collapsing
#define HITPART_LFOOT 1
#define HITPART_LSHIN 2
#define HITPART_LTHIGH 3
#define HITPART_RFOOT 4
#define HITPART_RSHIN 5
#define HITPART_RTHIGH 6
#define HITPART_PELVIS 7
#define HITPART_HEAD 8
#define HITPART_LHAND 9
#define HITPART_LFOREARM 10
#define HITPART_LBICEP 11
#define HITPART_RHAND 12
#define HITPART_RFOREARM 13
#define HITPART_RBICEP 14
#define HITPART_TORSO 15
#define HITPART_TAIL 16
#define HITPART_GUN 100
#define HITPART_HAT 110
#define HITPART_GENERAL 200
#define HITPART_GENERALHALF 201
#define HUDHALIGN_RIGHT 0
#define HUDHALIGN_LEFT 1
#define HUDHALIGN_MIDDLE 2
#define HUDMSGALIGN_SCREENLEFT 0
#define HUDMSGALIGN_LEFT 1
#define HUDMSGALIGN_RIGHT 2
#define HUDMSGALIGN_XMIDDLE 3
#define HUDMSGALIGN_SCREENTOP 4
#define HUDMSGALIGN_TOP 5
#define HUDMSGALIGN_BOTTOM 6
#define HUDMSGALIGN_YMIDDLE 7
#define HUDMSGALIGN_BELOWVIEWPORT 8
#define HUDMSGFLAG_ONLYIFALIVE 0x01
#define HUDMSGFLAG_FORCEOFF 0x02 // for subtitles - turn off message immediately rather than when audio finishes
#define HUDMSGFLAG_NOCHANNEL 0x04 // not linked to audio
#define HUDMSGFLAG_ALLOWDUPES 0x08
#define HUDMSGFLAG_DELAY 0x10 // wait minimum 3 frames before showing
#define HUDMSGFLAG_NOWRAP 0x20
#define HUDMSGREASON_NOCONTROL 0x00000002
#define HUDMSGSTATE_FREE 0
#define HUDMSGSTATE_QUEUED 1
#define HUDMSGSTATE_CHOOSETRANSITION 2
#define HUDMSGSTATE_FADINGIN 3
#define HUDMSGSTATE_ONSCREEN 4
#define HUDMSGSTATE_FADINGOUT 5
#define HUDMSGTYPE_DEFAULT 0
#define HUDMSGTYPE_OBJECTIVECOMPLETE 1
#define HUDMSGTYPE_OBJECTIVEFAILED 2
#define HUDMSGTYPE_3 3
#define HUDMSGTYPE_4 4
#define HUDMSGTYPE_5 5
#define HUDMSGTYPE_INGAMESUBTITLE 6
#define HUDMSGTYPE_7 7
#define HUDMSGTYPE_8 8
#define HUDMSGTYPE_MPSCENARIO 9
#define HUDMSGTYPE_TRAINING 10
#define HUDMSGTYPE_CUTSCENESUBTITLE 11
#define HUDVALIGN_BOTTOM 0
#define HUDVALIGN_TOP 1
#define HUDVALIGN_MIDDLE 2
#define IDLEACTION_STANDING 0x01
#define IDLEACTION_SITTING_TYPING 0x02
#define IDLEACTION_SITTING_DORMANT 0x03
#define IDLEACTION_OPERATING 0x04
#define IDLEACTION_OPERATING_PAD 0x05
#define INTROCMD_SPAWN 0
#define INTROCMD_WEAPON 1
#define INTROCMD_AMMO 2
#define INTROCMD_3 3
#define INTROCMD_4 4
#define INTROCMD_OUTFIT 5
#define INTROCMD_6 6
#define INTROCMD_WATCHTIME 7
#define INTROCMD_CREDITOFFSET 8
#define INTROCMD_CASE 9
#define INTROCMD_CASERESPAWN 10
#define INTROCMD_HILL 11
#define INTROCMD_END 12
#define INVENTORYFUNCTYPE_NONE 0x0000
#define INVENTORYFUNCTYPE_SHOOT 0x0001
#define INVENTORYFUNCTYPE_SHOOT_SINGLE 0x0001
#define INVENTORYFUNCTYPE_SHOOT_AUTOMATIC 0x0101
#define INVENTORYFUNCTYPE_SHOOT_PROJECTILE 0x0201
#define INVENTORYFUNCTYPE_0200 0x0200
#define INVENTORYFUNCTYPE_THROW 0x0002
#define INVENTORYFUNCTYPE_CLOSE 0x0003
#define INVENTORYFUNCTYPE_SPECIAL 0x0004
#define INVENTORYFUNCTYPE_DEVICE 0x0005
#define INVITEMTYPE_WEAP 1
#define INVITEMTYPE_PROP 2
#define INVITEMTYPE_DUAL 3
#define LIFTACTION_NOTUSINGLIFT 0
#define LIFTACTION_WAITINGFORLIFT 1
#define LIFTACTION_ONLIFT 2
#define LIFTACTION_WAITINGONLIFT 3
#define LANGUAGE_NTSC_EN 0
#define LANGUAGE_NTSC_JP 1
#define LANGUAGE_PAL_EN 0
#define LANGUAGE_PAL_FR 1
#define LANGUAGE_PAL_DE 2
#define LANGUAGE_PAL_IT 3
#define LANGUAGE_PAL_ES 4
#define LIGHTOP_1 1
#define LIGHTOP_2 2
#define LIGHTOP_3 3
#define LIGHTOP_4 4
#define LIGHTOP_5 5
#define LIGHTOP_TURNON 6
#define LIGHTOP_TURNOFF 7
#define LOADTYPE_NONE 0
#define LOADTYPE_BG 1
#define LOADTYPE_TILES 2
#define LOADTYPE_LANG 3
#define LOADTYPE_SETUP 4
#define LOADTYPE_PADS 5
#define LOADTYPE_MODEL 6
// These actions are assigned to chr->myaction
#define MA_NONE 0
#define MA_NORMAL 1
#define MA_COVERWAIT 2
#define MA_GRENADEWAIT 3
#define MA_WAITING 4
#define MA_COVERGOTO 5
#define MA_COVERBREAK 6
#define MA_COVERSEEN 7
#define MA_FLANKLEFT 8
#define MA_FLANKRIGHT 9
#define MA_DODGE 10
#define MA_GRENADE 11
#define MA_WAITSEEN 12
#define MA_WITHDRAW 13
#define MA_SHOOTING 14
#define MA_SYNCSHOOT 15
#define MA_WAITTIMEOUT 16
#define MA_COVERTIMEOUT 17
#define MA_TRACKING 18
#define MA_RETREAT 19
#define MA_SURRENDER 20
#define MA_TALKING 21
#define MA_LISTENING 22
#define MA_GOTOALARM 23
#define MA_BOTFRIENDFOLLOW 24
#define MA_BOTHIDE 25
#define MA_BOTPATH 26
#define MA_BOTINJURED 27
#define MA_BOTNORMAL 28
#define MA_BOTSHOOTING 29
#define MA_DRUGGED 30
#define MA_PANIC 31
#define MA_RUNFROMGRENADE 32
#define MA_UNARMEDATTACK 33
#define MA_SKJUMP_START 34
#define MA_SKJUMP_AIR 35
#define MA_SKJUMP_LAND 36
#define MA_SKJUMP_LANDLOOP 37
#define MA_SKJUMP_SHOT 38
#define MA_AIBOTDEADLIST 39
#define MA_AIBOTINIT 40
#define MA_AIBOTMAINLOOP 41
#define MA_AIBOTGETITEM 42
#define MA_AIBOTGOTOPOS 43
#define MA_AIBOTGOTOPROP 44
#define MA_AIBOTRUNAWAY 45
#define MA_AIBOTDOWNLOAD 46
#define MA_AIBOTATTACK 47
#define MA_UNUSED1 48
#define MA_UNUSED2 49
#define MA_AIBOTFOLLOW 50
#define MA_AIBOTDEFEND 51
#define MA_FLANKBEST 52
#define MA_FACING 53
#define MA_PUNCHING 54
#define MA_END 55
#define MAX_CHRWAYPOINTS 6
#define MAX_DANGEROUSPROPS 12
#define MAX_LIFTS 10
#define MAX_MPCHRS (4 + MAX_BOTS)
#define MAX_OBJECTIVES 10
#define MAX_BOTS 8
#define MAX_SPAWNPOINTS 24
#define MAX_SQUADRONS 16
#define MAX_TEAMS 8
#define MEDAL_KILLMASTER 0x01
#define MEDAL_HEADSHOT 0x02
#define MEDAL_ACCURACY 0x04
#define MEDAL_SURVIVOR 0x08
#define MEMBANK_ONBOARD 0
#define MEMBANK_EXPANSION 1
#define MEMPOOL_0 0
#define MEMPOOL_STAGE 4 // Cleared on stage load
#define MEMPOOL_5 5
#define MEMPOOL_PERMANENT 6 // Never cleared
#define MEMPOOL_7 7
#define MEMPOOL_8 8
#define MENUBANNER_SEARCHINGFORCAMERA 0
#define MENUBANNER_CALIBRATINGCAMERA 1
#define MENUBANNER_DOWNLOADINGIMAGE 2
#define MENUBANNER_LOADINGIMAGE 3
#define MENUBANNER_SAVINGIMAGE 4
#define MENUBANNER_TRANSFERRINGIMAGE 5
#define MENUBANNER_UPLOADINGSEGMENT 6
#define MENUBANNER_CHECKINGPAK 7
#define MENUBANNER_GETTINGPERFECTHEAD 8
#define MENUBANNER_SAVINGPERFECTHEAD 9
#define MENUBANNER_AUTOADJUST 10
#define MENUBG_BLUR 1
#define MENUBG_BLACK 2 // solid black, unused?
#define MENUBG_FAILURE 3 // solo mission failure endscreen
#define MENUBG_CONEALPHA 4 // combat simulator
#define MENUBG_GRADIENT 5 // blue/red gradient (bootpakmgr)
#define MENUBG_6 6
#define MENUBG_SUCCESS 7 // solo mission success endscreen
#define MENUBG_8 8
#define MENUBG_CONEOPAQUE 9 // 4MB combat simulator
#define MENUDIALOGFLAG_CLOSEONSELECT 0x0001
#define MENUDIALOGFLAG_0002 0x0002
#define MENUDIALOGFLAG_STARTSELECTS 0x0004
#define MENUDIALOGFLAG_DISABLEITEMSCROLL 0x0008
#define MENUDIALOGFLAG_MPLOCKABLE 0x0010
#define MENUDIALOGFLAG_IGNOREBACK 0x0020
#define MENUDIALOGFLAG_SMOOTHSCROLLABLE 0x0040
#define MENUDIALOGFLAG_DISABLEBANNER 0x0080
#define MENUDIALOGFLAG_DISABLETITLEBAR 0x0100
#define MENUDIALOGFLAG_DISABLERESIZE 0x0200
#define MENUDIALOGFLAG_0400 0x0400
#define MENUDIALOGFLAG_DROPOUTONCLOSE 0x0800
#define MENUDIALOGFLAG_1000 0x1000
#define MENUDIALOGSTATE_PREOPEN 0
#define MENUDIALOGSTATE_OPENING 1
#define MENUDIALOGSTATE_POPULATING 2
#define MENUDIALOGSTATE_POPULATED 3
#define MENUDIALOGTYPE_DEFAULT 1
#define MENUDIALOGTYPE_DANGER 2
#define MENUDIALOGTYPE_SUCCESS 3
#define MENUDIALOGTYPE_4 4
#define MENUDIALOGTYPE_WHITE 5
#define MENUITEMFLAG_00000001 0x00000001
#define MENUITEMFLAG_00000004 0x00000004
#define MENUITEMFLAG_00000008 0x00000008
#define MENUITEMFLAG_00000010 0x00000010
#define MENUITEMFLAG_00000020 0x00000020
#define MENUITEMFLAG_00000040 0x00000040
#define MENUITEMFLAG_00000080 0x00000080
#define MENUITEMFLAG_00000100 0x00000100
#define MENUITEMFLAG_00000200 0x00000200
#define MENUITEMFLAG_00000400 0x00000400
#define MENUITEMFLAG_00000800 0x00000800
#define MENUITEMFLAG_00001000 0x00001000
#define MENUITEMFLAG_00002000 0x00002000
#define MENUITEMFLAG_00004000 0x00004000
#define MENUITEMFLAG_00008000 0x00008000
#define MENUITEMFLAG_00010000 0x00010000
#define MENUITEMFLAG_00020000 0x00020000
#define MENUITEMFLAG_00040000 0x00040000
#define MENUITEMFLAG_00080000 0x00080000
#define MENUITEMFLAG_00100000 0x00100000
#define MENUITEMFLAG_00200000 0x00200000
#define MENUITEMFLAG_00400000 0x00400000
#define MENUITEMFLAG_00800000 0x00800000
#define MENUITEMFLAG_01000000 0x01000000
#define MENUITEMFLAG_02000000 0x02000000
#define MENUITEMFLAG_04000000 0x04000000
#define MENUITEMTYPE_LABEL 0x01
#define MENUITEMTYPE_LIST 0x02
#define MENUITEMTYPE_03 0x03
#define MENUITEMTYPE_SELECTABLE 0x04
#define MENUITEMTYPE_SCROLLABLE 0x05
#define MENUITEMTYPE_OBJECTIVES 0x06
#define MENUITEMTYPE_07 0x07
#define MENUITEMTYPE_SLIDER 0x08
#define MENUITEMTYPE_CHECKBOX 0x09
#define MENUITEMTYPE_0A 0x0a
#define MENUITEMTYPE_SEPARATOR 0x0b
#define MENUITEMTYPE_DROPDOWN 0x0c
#define MENUITEMTYPE_KEYBOARD 0x0d
#define MENUITEMTYPE_RANKING 0x0e
#define MENUITEMTYPE_PLAYERSTATS 0x0f
#define MENUITEMTYPE_10 0x10
#define MENUITEMTYPE_CAROUSEL 0x11
#define MENUITEMTYPE_MODEL 0x12
#define MENUITEMTYPE_13 0x13
#define MENUITEMTYPE_14 0x14
#define MENUITEMTYPE_METER 0x15
#define MENUITEMTYPE_16 0x16
#define MENUITEMTYPE_MARQUEE 0x17
#define MENUITEMTYPE_18 0x18
#define MENUITEMTYPE_CONTROLLER 0x19
#define MENUITEMTYPE_END 0x1a
#define MENUOP_GETOPTIONCOUNT 1
#define MENUOP_GETOPTGROUPCOUNT 2
#define MENUOP_GETOPTIONTEXT 3
#define MENUOP_GETOPTGROUPTEXT 4
#define MENUOP_GETGROUPSTARTINDEX 5
#define MENUOP_SET 6
#define MENUOP_GETOPTIONVALUE 7
#define MENUOP_GET 8
#define MENUOP_GETSLIDER 9
#define MENUOP_GETSLIDERLABEL 10
#define MENUOP_11 11
#define MENUOP_CHECKDISABLED 12
#define MENUOP_FOCUS 13
#define MENUOP_GETLISTITEMCHECKBOX 14
#define MENUOP_CHECKPREFOCUSED 15
#define MENUOP_LISTITEMFOCUS 16
#define MENUOP_GETTEXT 17
#define MENUOP_SETTEXT 18
#define MENUOP_RENDER 19
#define MENUOP_GETOPTIONHEIGHT 20
#define MENUOP_21 21
#define MENUOP_GETCOLOUR 22
#define MENUOP_CHECKHIDDEN 24
#define MENUOP_25 25
#define MENUOP_OPEN 100
#define MENUOP_CLOSE 101
#define MENUOP_TICK 102
#define MENUREPEATMODE_RELEASED -1
#define MENUREPEATMODE_SLOW 0
#define MENUREPEATMODE_FAST 1
#define MENUROOT_ENDSCREEN 1
#define MENUROOT_MAINMENU 2
#define MENUROOT_MPSETUP 3
#define MENUROOT_MPPAUSE 4
#define MENUROOT_MPENDSCREEN 5
#define MENUROOT_FILEMGR 6
#define MENUROOT_BOOTPAKMGR 7
#define MENUROOT_PICKTARGET 8
#define MENUROOT_COOPCONTINUE 9
#define MENUROOT_4MBFILEMGR 10
#define MENUROOT_4MBMAINMENU 11
#define MENUROOT_12 12
#define MENUROOT_TRAINING 13
#define MENUSOUND_SWIPE 0x00 // Navigating to left/right dialog
#define MENUSOUND_OPENDIALOG 0x01
#define MENUSOUND_FOCUS 0x02 // Focusing a different item
#define MENUSOUND_SELECT 0x03
#define MENUSOUND_ERROR 0x04
#define MENUSOUND_EXPLOSION 0x05
#define MENUSOUND_TOGGLEON 0x08 // Checking a checkbox
#define MENUSOUND_TOGGLEOFF 0x09 // Unchecking a checkbox, opening a dropdown, cancelling a dropdown
#define MENUSOUND_SUBFOCUS 0x0a // Changing focus within a list or dropdown
#define MENUSOUND_0B 0x0b
#define MENUSOUND_KEYBOARDFOCUS 0x0c // Changing focus within a keyboard item
#define MENUSOUND_KEYBOARDCANCEL 0x0d // Pressing A on a keyboard's cancel button
#define MENUSOUND_SUCCESS 0x0e
#define MENUTICKFLAG_DIALOGISCURRENT 0x01
#define MENUTICKFLAG_ITEMISFOCUSED 0x02
#define MENUTICKFLAG_DIALOGISDIMMED 0x04
#define MISCBIO_MAIANS 0
#define MISCBIO_SKEDAR 1
#define MISCBIO_BACKGROUND 2
#define MISCBIO_STORY 3
#define MISCSFX_BOOSTHEARTBEAT 0
#define MISCSFX_SLAYERROCKETHUM 1
#define MISCSFX_SLAYERROCKETBEEP 2
// Models
#define MODEL_ROOFGUN 0x0000
#define MODEL_GROUNDGUN 0x0001
#define MODEL_TVSCREEN 0x0002
#define MODEL_BORG_CRATE 0x0003
#define MODEL_WINDOW 0x0004
#define MODEL_A51_CRATE1_0005 0x0005
#define MODEL_A51_CRATE1_0006 0x0006
#define MODEL_A51_CRATE1_0007 0x0007
#define MODEL_A51_CRATE1_0008 0x0008
#define MODEL_A51_CRATE1_0009 0x0009
#define MODEL_A51_CRATE1_000a 0x000a
#define MODEL_A51_CRATE1_000b 0x000b
#define MODEL_A51_CRATE1_000c 0x000c
#define MODEL_A51_CRATE1_000d 0x000d
#define MODEL_A51_CRATE1_000e 0x000e
#define MODEL_A51_CRATE1_000f 0x000f
#define MODEL_CRYPTDOOR1B 0x0010
#define MODEL_CHRBRIEFCASE 0x0011
#define MODEL_CHRBUG 0x0012
#define MODEL_CHRDATATHIEF 0x0013
#define MODEL_NINTENDOLOGO 0x0014
#define MODEL_DOOR_ROLLERTRAIN 0x0015
#define MODEL_FLAG 0x0016
#define MODEL_MODEMBOX 0x0017
#define MODEL_DOORCONSOLE 0x0018
#define MODEL_A51_HORIZ_DOOR_TOP 0x0019
#define MODEL_A51_HORIZ_DOOR_BOT 0x001a
#define MODEL_A51_VERT_DOOR_LEFT 0x001b
#define MODEL_A51_VERT_DOOR_RIGHT 0x001c
#define MODEL_A51_VERT_DOOR_ST 0x001d
#define MODEL_A51_HORIZ_DOOR_GL 0x001e
#define MODEL_A51_HORIZ_DOOR_SECRET 0x001f
#define MODEL_A51_CRATE1 0x0020
#define MODEL_A51_CRATE2 0x0021
#define MODEL_A51_CRATE3 0x0022
#define MODEL_A51_EXP1 0x0023
#define MODEL_A51_UNEXP1 0x0024
#define MODEL_A51_EXP2 0x0025
#define MODEL_A51_UNEXP2 0x0026
#define MODEL_A51_UNEXP3 0x0027
#define MODEL_AIVILLADOOR1 0x0028
#define MODEL_AIVILLADOOR2A 0x0029
#define MODEL_AIVILLADOOR4 0x002a
#define MODEL_A51_LIFT_HANGAR 0x002b
#define MODEL_A51_LIFT_CONTROL 0x002c
#define MODEL_A51_LIFT_STORE 0x002d
#define MODEL_A51_LIFT_THINWALL 0x002e
#define MODEL_AIVILLABOT1 0x002f
#define MODEL_AIVILLABOT2 0x0030
#define MODEL_AIVILLABOT3 0x0031
#define MODEL_AIVILLAWINDMILL 0x0032
#define MODEL_HOVERBED 0x0033
#define MODEL_MARKER 0x0034
#define MODEL_ALDOOR_R 0x0035
#define MODEL_ALDOOR_L 0x0036
#define MODEL_DD_LIFTR 0x0037
#define MODEL_DD_FANROOF 0x0038
#define MODEL_DD_FANWALL 0x0039
#define MODEL_HOVBIKE 0x003a
#define MODEL_DD_OFFICEDOOR 0x003b
#define MODEL_DD_PLANTRUBBER 0x003c
#define MODEL_DD_PLANTSPIKE 0x003d
#define MODEL_DD_PLANTSPIDER 0x003e
#define MODEL_DD_WINDOW 0x003f
#define MODEL_DD_REDSOFA 0x0040
#define MODEL_DD_REDARM 0x0041
#define MODEL_DD_SERVICEDOOR 0x0042
#define MODEL_DD_WINDDOOR 0x0043
#define MODEL_DD_LIFTDOOR 0x0044
#define MODEL_DD_VERTBLIND 0x0045
#define MODEL_DD_DESK 0x0046
#define MODEL_DD_CHAIR 0x0047
#define MODEL_NLOGO 0x0048
#define MODEL_NLOGO2 0x0049
#define MODEL_NLOGO3 0x004a
#define MODEL_PERFECTDARK 0x004b
#define MODEL_PDONE 0x004c
#define MODEL_PDTWO 0x004d
#define MODEL_PDTHREE 0x004e
#define MODEL_PDFOUR 0x004f
#define MODEL_DD_HOVCOP 0x0050
#define MODEL_DD_HOVMOTO 0x0051
#define MODEL_DD_HOVTRUCK 0x0052
#define MODEL_DD_HOVCAR 0x0053
#define MODEL_DD_HOVCAB 0x0054
#define MODEL_DD_AC_UNEXP 0x0055
#define MODEL_DD_AC_EXP 0x0056
#define MODEL_DD_ACBOT_UNEXP 0x0057
#define MODEL_DD_ACBOT_EXP 0x0058
#define MODEL_PC1 0x0059
#define MODEL_HOVERCRATE1 0x005a
#define MODEL_DROPSHIP 0x005b
#define MODEL_AL_AIRLOCK 0x005c
#define MODEL_AL_DOCKLIFT 0x005d
#define MODEL_CASE 0x005e
#define MODEL_DD_STONEDESK 0x005f
#define MODEL_MEDLABWIN1 0x0060
#define MODEL_MEDLABWIN2 0x0061
#define MODEL_A51TABLE 0x0062
#define MODEL_A51CHAIR 0x0063
#define MODEL_A51SCREEN 0x0064
#define MODEL_A51WASTEBIN 0x0065
#define MODEL_A51DESKENT 0x0066
#define MODEL_A51TROLLEY 0x0067
#define MODEL_A51DIVIDE 0x0068
#define MODEL_A51BOARD 0x0069
#define MODEL_SKCREV_EXP1 0x006a
#define MODEL_SKCREV_UNEXP1 0x006b
#define MODEL_SKTNL_EXP1 0x006c
#define MODEL_SKTNL_UNEXP1 0x006d
#define MODEL_SK_DOOR1 0x006e
#define MODEL_SK_SHIP_DOOR1 0x006f
#define MODEL_SK_SHIP_HOLO1 0x0070
#define MODEL_SK_SHIP_HOLO2 0x0071
#define MODEL_SK_SHIP_HULLDOOR1 0x0072
#define MODEL_SK_SHIP_HULLDOOR2 0x0073
#define MODEL_SK_SHIP_HULLDOOR3 0x0074
#define MODEL_SK_SHIP_HULLDOOR4 0x0075
#define MODEL_SK_FIGHTER1 0x0076
#define MODEL_SK_CRYOPOD1_TOP 0x0077
#define MODEL_SK_CRYOPOD1_BOT 0x0078
#define MODEL_SK_UNDER_GENERATOR 0x0079
#define MODEL_SK_UNDER_TRANS 0x007a
#define MODEL_SK_HANGARDOOR_TOP 0x007b
#define MODEL_SK_HANGARDOOR_BOT 0x007c
#define MODEL_DOOR2_G5 0x007d
#define MODEL_DOOR1A_G5 0x007e
#define MODEL_DOOR1B_G5 0x007f
#define MODEL_DOOR1ATRI_G5 0x0080
#define MODEL_DOOR2A_G5 0x0081
#define MODEL_DD_DECODOOR 0x0082
#define MODEL_DD_SECRETDOOR 0x0083
#define MODEL_DD_SECRETDOOR2 0x0084
#define MODEL_DDJUMPSHIP 0x0085
#define MODEL_TAXICAB 0x0086
#define MODEL_POLICECAR 0x0087
#define MODEL_RAVINELIFT 0x0088
#define MODEL_DD_LAB_DOOR_BS 0x0089
#define MODEL_DD_LAB_DOOR_SEC 0x008a
#define MODEL_DD_LAB_DOOR_WIND 0x008b
#define MODEL_HOOVERBOT 0x008c
#define MODEL_TESTERBOT 0x008d
#define MODEL_DD_LAB_SECTOR2BOT 0x008e
#define MODEL_DD_LAB_SECTOR2TOP 0x008f
#define MODEL_DD_LAB_CAUTIONTOP 0x0090
#define MODEL_DD_LAB_HAZARD 0x0091
#define MODEL_DD_LAB_CAUTION 0x0092
#define MODEL_DR_CAROLL_DOOR 0x0093
#define MODEL_DD_LAB_SECTOR3TOP 0x0094
#define MODEL_DD_LAB_SECTOR3 0x0095
#define MODEL_DD_LAB_SECTOR3WIND 0x0096
#define MODEL_DD_HOVERCOPTER 0x0097
#define MODEL_DD_LAB_SECTOR4TOP 0x0098
#define MODEL_DD_LAB_RESTRICTED 0x0099
#define MODEL_DOOR4A_G5 0x009a
#define MODEL_DOOR4B_G5 0x009b
#define MODEL_LASDOOR 0x009c
#define MODEL_G5SAFEDOOR 0x009d
#define MODEL_ROPE 0x009e
#define MODEL_G5_MAINFRAME 0x009f
#define MODEL_DR_CAROLL_DOOR_BASE 0x00a0
#define MODEL_DR_CAROLL_DOOR_MAIN 0x00a1
#define MODEL_DR_CAROLL_DOOR_LEFT 0x00a2
#define MODEL_DR_CAROLL_DOOR_RIGHT 0x00a3
#define MODEL_DR_CAROLL_DOOR_BMAIN 0x00a4
#define MODEL_DR_CAROLL_DOOR_BLEFT 0x00a5
#define MODEL_DR_CAROLL_DOOR_BRIGHT 0x00a6
#define MODEL_DD_BANNER 0x00a7
#define MODEL_G5_ESCDOORUP 0x00a8
#define MODEL_G5_ESCDOORUPBOOM 0x00a9
#define MODEL_G5_ESCDOORDOWN 0x00aa
#define MODEL_G5_ESCDOORDOWNBOOM 0x00ab
#define MODEL_DUMPSTER 0x00ac
#define MODEL_G5CARLIFTDOOR 0x00ad
#define MODEL_CH_SHUTTER1 0x00ae
#define MODEL_CCTV_PD 0x00af
#define MODEL_COMHUB 0x00b0
#define MODEL_QUADPOD 0x00b1
#define MODEL_PD_CONSOLE 0x00b2
#define MODEL_DD_GRATE 0x00b3
#define MODEL_LIFT_PLATFORM 0x00b4
#define MODEL_LIGHTSWITCH 0x00b5
#define MODEL_BLASTSHIELD 0x00b6
#define MODEL_LIGHTSWITCH2 0x00b7
#define MODEL_DD_ACCESSDOORUP 0x00b8
#define MODEL_DD_ACCESSDOORDN 0x00b9
#define MODEL_LAB_CONTAINER 0x00ba
#define MODEL_LAB_CHAIR 0x00bb
#define MODEL_LAB_TABLE 0x00bc
#define MODEL_LAB_MICROSCOPE 0x00bd
#define MODEL_LAB_MAINFRAME 0x00be
#define MODEL_DD_LABDOOR 0x00bf
#define MODEL_DD_LAB_DOORTOP 0x00c0
#define MODEL_MULTI_AMMO_CRATE 0x00c1
#define MODEL_CHRCHAIN 0x00c2
#define MODEL_TDOOR 0x00c3
#define MODEL_CI_SOFA 0x00c4
#define MODEL_CI_LIFT 0x00c5
#define MODEL_CI_LIFTDOOR 0x00c6
#define MODEL_LASERCUT 0x00c7
#define MODEL_SK_SHUTTLE 0x00c8
#define MODEL_NEWVILLADOOR 0x00c9
#define MODEL_SK_PILLARLEFT 0x00ca
#define MODEL_SK_PILLARRIGHT 0x00cb
#define MODEL_SK_PLINTH_T 0x00cc
#define MODEL_SK_PLINTH_ML 0x00cd
#define MODEL_SK_PLINTH_MR 0x00ce
#define MODEL_SK_PLINTH_BL 0x00cf
#define MODEL_SK_PLINTH_BR 0x00d0
#define MODEL_SK_FL_SHAD_T 0x00d1
#define MODEL_SK_FL_SHAD_ML 0x00d2
#define MODEL_SK_FL_SHAD_MR 0x00d3
#define MODEL_SK_FL_SHAD_BL 0x00d4
#define MODEL_SK_FL_SHAD_BR 0x00d5
#define MODEL_SK_FL_NOSHAD_T 0x00d6
#define MODEL_SK_FL_NOSHAD_ML 0x00d7
#define MODEL_SK_FL_NOSHAD_MR 0x00d8
#define MODEL_SK_FL_NOSHAD_BL 0x00d9
#define MODEL_SK_FL_NOSHAD_BR 0x00da
#define MODEL_SK_TEMPLECOLUMN1 0x00db
#define MODEL_SK_TEMPLECOLUMN2 0x00dc
#define MODEL_SK_TEMPLECOLUMN3 0x00dd
#define MODEL_SK_SUNSHAD1 0x00de
#define MODEL_SK_SUNSHAD2 0x00df
#define MODEL_SK_SUNNOSHAD1 0x00e0
#define MODEL_SK_SUNNOSHAD2 0x00e1
#define MODEL_BARREL 0x00e2
#define MODEL_GLASS_FLOOR 0x00e3
#define MODEL_ESCA_STEP 0x00e4
#define MODEL_MATRIX_LIFT 0x00e5
#define MODEL_RUBBLE1 0x00e6
#define MODEL_RUBBLE2 0x00e7
#define MODEL_RUBBLE3 0x00e8
#define MODEL_RUBBLE4 0x00e9
#define MODEL_CABLE_CAR 0x00ea
#define MODEL_ELVIS_SAUCER 0x00eb
#define MODEL_STEWARDESS_TROLLEY 0x00ec
#define MODEL_AIRBASE_LIFT_ENCLOSED 0x00ed
#define MODEL_AIRBASE_LIFT_ANGLE 0x00ee
#define MODEL_AIRBASE_SAFEDOOR 0x00ef
#define MODEL_AF1_PILOTCHAIR 0x00f0
#define MODEL_AF1_PASSCHAIR 0x00f1
#define MODEL_TESTOBJ 0x00f2
#define MODEL_CHRNIGHTSIGHT 0x00f3
#define MODEL_CHRSHIELD 0x00f4
#define MODEL_CHRFALCON2 0x00f5
#define MODEL_CHRLEEGUN1 0x00f6
#define MODEL_CHRMAULER 0x00f7
#define MODEL_CHRDY357 0x00f8
#define MODEL_CHRDY357TRENT 0x00f9
#define MODEL_CHRMAIANPISTOL 0x00fa
#define MODEL_CHRFALCON2SIL 0x00fb
#define MODEL_CHRFALCON2SCOPE 0x00fc
#define MODEL_CHRCMP150 0x00fd
#define MODEL_CHRAR34 0x00fe
#define MODEL_CHRDRAGON 0x00ff
#define MODEL_CHRSUPERDRAGON 0x0100
#define MODEL_CHRAVENGER 0x0101
#define MODEL_CHRCYCLONE 0x0102
#define MODEL_CHRMAIANSMG 0x0103
#define MODEL_CHRRCP120 0x0104
#define MODEL_CHRPCGUN 0x0105
#define MODEL_CHRSHOTGUN 0x0106
#define MODEL_CHRSKMINIGUN 0x0107
#define MODEL_CHRDYROCKET 0x0108
#define MODEL_CHRDEVASTATOR 0x0109
#define MODEL_CHRSKROCKET 0x010a
#define MODEL_CHRZ2020 0x010b
#define MODEL_CHRSNIPERRIFLE 0x010c
#define MODEL_CHRCROSSBOW 0x010d
#define MODEL_CHRDRUGGUN 0x010e
#define MODEL_CHRKNIFE 0x010f
#define MODEL_CHRNBOMB 0x0110
#define MODEL_CHRFLASHBANG 0x0111
#define MODEL_CHRGRENADE 0x0112
#define MODEL_CHRTIMEDMINE 0x0113
#define MODEL_CHRPROXIMITYMINE 0x0114
#define MODEL_CHRREMOTEMINE 0x0115
#define MODEL_CHRECMMINE 0x0116
#define MODEL_CHRWPPK 0x0117
#define MODEL_CHRTT33 0x0118
#define MODEL_CHRSKORPION 0x0119
#define MODEL_CHRKALASH 0x011a
#define MODEL_CHRUZI 0x011b
#define MODEL_CHRMP5K 0x011c
#define MODEL_CHRM16 0x011d
#define MODEL_CHRFNP90 0x011e
#define MODEL_CHRDYROCKETMIS 0x011f
#define MODEL_CHRSKROCKETMIS 0x0120
#define MODEL_CHRCROSSBOLT 0x0121
#define MODEL_CHRDEVGRENADE 0x0122
#define MODEL_CHRDRAGGRENADE 0x0123
#define MODEL_A51_TURRET 0x0124
#define MODEL_PELAGICDOOR 0x0125
#define MODEL_AUTOSURGEON 0x0126
#define MODEL_LIMO 0x0127
#define MODEL_A51INTERCEPTOR 0x0128
#define MODEL_A51DISH 0x0129
#define MODEL_A51RADARCONSOLE 0x012a
#define MODEL_A51LOCKERDOOR 0x012b
#define MODEL_G5GENERATOR 0x012c
#define MODEL_G5DUMPSTER 0x012d
#define MODEL_CHRCLOAKER 0x012e
#define MODEL_CHRSPEEDPILL 0x012f
#define MODEL_BIGPELAGICDOOR 0x0130
#define MODEL_SK_JONRUBBLE3 0x0131
#define MODEL_SK_JONRUBBLE4 0x0132
#define MODEL_SK_JONRUBBLE5 0x0133
#define MODEL_SK_JONRUBBLE6 0x0134
#define MODEL_BAGGAGECARRIER 0x0135
#define MODEL_MINESIGN 0x0136
#define MODEL_CHAMBER 0x0137
#define MODEL_ISOTOPEEXPERIMENT 0x0138
#define MODEL_ISOTOPE 0x0139
#define MODEL_REACTORDOOR 0x013a
#define MODEL_SAUCERINSIDE 0x013b
#define MODEL_VILLASTOOL 0x013c
#define MODEL_CETANWINDOW1 0x013d
#define MODEL_CETANWINDOW2 0x013e
#define MODEL_CETANWINDOW3 0x013f
#define MODEL_BINOCULARS 0x0140
#define MODEL_SUBMARINE 0x0141
#define MODEL_AIRFORCE1 0x0142
#define MODEL_ENGINEPART 0x0143
#define MODEL_CETROOFGUN 0x0144
#define MODEL_CETANSMALLDOOR 0x0145
#define MODEL_POWERNODE 0x0146
#define MODEL_CETANBLUEGREENL 0x0147
#define MODEL_CETANBLUEGREENR 0x0148
#define MODEL_SKEDARCONSOLE 0x0149
#define MODEL_SKEDARCONSOLEPANEL 0x014a
#define MODEL_WEAPONCDOOR 0x014b
#define MODEL_TARGET 0x014c
#define MODEL_DEVICESECRETDOOR 0x014d
#define MODEL_CARRINGTONSECRETDOOR 0x014e
#define MODEL_SINISTERPC 0x014f
#define MODEL_SINISTERSTATION 0x0150
#define MODEL_KEYPADLOCK 0x0151
#define MODEL_THUMBPRINTSCANNER 0x0152
#define MODEL_RETINALOCK 0x0153
#define MODEL_CARDLOCK 0x0154
#define MODEL_GOODSTATION 0x0155
#define MODEL_GOODPC 0x0156
#define MODEL_CHRAUTOGUN 0x0157
#define MODEL_G5BIGCHAIR 0x0158
#define MODEL_G5SMALLCHAIR 0x0159
#define MODEL_KINGSCEPTRE 0x015a
#define MODEL_LABCOAT 0x015b
#define MODEL_CIDOOR1 0x015c
#define MODEL_G5_CHAIR 0x015d
#define MODEL_G5_CHAIR2 0x015e
#define MODEL_DD_WINDOW_FOYER 0x015f
#define MODEL_CI_CABINET 0x0160
#define MODEL_CI_DESK 0x0161
#define MODEL_CI_CARR_DESK 0x0162
#define MODEL_CI_F_CHAIR 0x0163
#define MODEL_CI_LOUNGER 0x0164
#define MODEL_CI_F_SOFA 0x0165
#define MODEL_CI_TABLE 0x0166
#define MODEL_CV_COFFEE_TABLE 0x0167
#define MODEL_CV_CHAIR1 0x0168
#define MODEL_CV_CHAIR2 0x0169
#define MODEL_CV_SOFA 0x016a
#define MODEL_CV_CHAIR4 0x016b
#define MODEL_CV_LAMP 0x016c
#define MODEL_CV_CABINET 0x016d
#define MODEL_CV_F_BED 0x016e
#define MODEL_PEL_CHAIR1 0x016f
#define MODEL_SK_CONSOLE2 0x0170
#define MODEL_DD_EAR_TABLE 0x0171
#define MODEL_DD_EAR_CHAIR 0x0172
#define MODEL_AIRBASE_TABLE2 0x0173
#define MODEL_AIRBASE_CHAIR2 0x0174
#define MODEL_MISC_CRATE 0x0175
#define MODEL_A51_CRATE1_0175 0x0176
#define MODEL_MISC_IRSPECS 0x0177
#define MODEL_A51_ROOFGUN 0x0178
#define MODEL_SK_DRONE_GUN 0x0179
#define MODEL_CI_ROOFGUN 0x017a
#define MODEL_CV_TABLE 0x017b
#define MODEL_CIDOOR1_REF 0x017c
#define MODEL_ALASKADOOR_OUT 0x017d
#define MODEL_ALASKADOOR_IN 0x017e
#define MODEL_WIREFENCE 0x017f
#define MODEL_RARELOGO 0x0180
#define MODEL_KEYCARD 0x0181
#define MODEL_BODYARMOUR 0x0182
#define MODEL_A51GATE_R 0x0183
#define MODEL_A51GATE_L 0x0184
#define MODEL_AF1_LAMP 0x0185
#define MODEL_AF1_TOILET 0x0186
#define MODEL_AF1_DOORBIG2 0x0187
#define MODEL_AF1_PHONE 0x0188
#define MODEL_AF1_CARGODOOR 0x0189
#define MODEL_G5_ALARM 0x018a
#define MODEL_G5_LASER_SWITCH 0x018b
#define MODEL_SK_TEMPLECOLUMN4 0x018c
#define MODEL_COREHATCH 0x018d
#define MODEL_A51GRATE 0x018e
#define MODEL_AF1ESCAPEDOOR 0x018f
#define MODEL_PRESCAPSULE 0x0190
#define MODEL_SKEDARBRIDGE 0x0191
#define MODEL_PELAGICDOOR2 0x0192
#define MODEL_TTB_BOX 0x0193
#define MODEL_INSTFRONTDOOR 0x0194
#define MODEL_CHRLASER 0x0195
#define MODEL_BAFTA 0x0196
#define MODEL_CHRSONICSCREWER 0x0197
#define MODEL_CHRLUMPHAMMER 0x0198
#define MODEL_EXPLOSIVEBRICK 0x0199
#define MODEL_SKEDARBOMB 0x019a
#define MODEL_ZIGGYCARD 0x019b
#define MODEL_SAFEITEM 0x019c
#define MODEL_RUSSDAR 0x019d
#define MODEL_XRAYSPECS 0x019e
#define MODEL_CHRLUMPHAMMER2 0x019f
#define MODEL_CHREYESPY 0x01a0
#define MODEL_CHRDOORDECODER 0x01a1
#define MODEL_AF1_TABLE 0x01a2
#define MODEL_SHUTTLEDOOR 0x01a3
#define MODEL_RUINBRIDGE 0x01a4
#define MODEL_SECRETINDOOR 0x01a5
#define MODEL_SENSITIVEINFO 0x01a6
#define MODEL_SUITCASE 0x01a7
#define MODEL_SKPUZZLEOBJECT 0x01a8
#define MODEL_A51LIFTDOOR 0x01a9
#define MODEL_CIHUB 0x01aa
#define MODEL_SK_SHIP_DOOR2 0x01ab
#define MODEL_SK_WINDOW1 0x01ac
#define MODEL_SK_HANGARDOORB_TOP 0x01ad
#define MODEL_SK_HANGARDOORB_BOT 0x01ae
#define MODEL_AF1_INNERDOOR 0x01af
#define MODEL_LASER_POST 0x01b0
#define MODEL_TARGETAMP 0x01b1
#define MODEL_SK_LIFT 0x01b2
#define MODEL_KNOCKKNOCK 0x01b3
#define MODEL_CETANDOOR 0x01b4
#define MODEL_AF1RUBBLE 0x01b5
#define MODEL_DD_DR_NONREF 0x01b6
#define MODEL_CETANDOORSIDE 0x01b7
#define MODEL_BUDDYBRIDGE 0x01b8
#define MODEL_JPNLOGO 0x01b9
#define MODEL_JPNPD 0x01ba
#define NUM_MODELS (VERSION == VERSION_JPN_FINAL ? 0x1bb : 0x1b9)
#define MODELNODETYPE_CHRINFO 0x01
#define MODELNODETYPE_POSITION 0x02
#define MODELNODETYPE_GUNDL 0x04
#define MODELNODETYPE_05 0x05
#define MODELNODETYPE_DISTANCE 0x08
#define MODELNODETYPE_REORDER 0x09
#define MODELNODETYPE_BBOX 0x0a
#define MODELNODETYPE_0B 0x0b
#define MODELNODETYPE_GUNFIRE 0x0c
#define MODELNODETYPE_0D 0x0d
#define MODELNODETYPE_0E 0x0e
#define MODELNODETYPE_0F 0x0f
#define MODELNODETYPE_11 0x11
#define MODELNODETYPE_TOGGLE 0x12
#define MODELNODETYPE_POSITIONHELD 0x15
#define MODELNODETYPE_16 0x16
#define MODELNODETYPE_HEADSPOT 0x17
#define MODELNODETYPE_DL 0x18
/**
* Models can contain "parts", which are a list of certain node addresses in the
* model's header. It allows the game to quickly find a certain node in the
* model if it's registered in the parts list.
*
* Parts are identified by a part number, and the mapping is unique to each
* model type. For example, for "chrgun" model types, part number 0 is the
* gunfire starburst.
*
* The game assumes that the part numbers refer to particular node types.
* For example, it assumes that chrgun part 02 is a toggle node.
*
* The names below are in the format MODELPART_{modeltype}_{part}.
* The comment is the node type.
*/
#define MODELPART_AR34_0029 0x0029 // toggle
#define MODELPART_AR34_002A 0x002a // toggle
#define MODELPART_AR34_0032 0x0032 // position
#define MODELPART_AR34_0037 0x0037 // position
#define MODELPART_AR34_003C 0x003c // position
#define MODELPART_AR34_0042 0x0042 // toggle
#define MODELPART_AR34_0050 0x0050 // position
#define MODELPART_AR34_0051 0x0051 // position
#define MODELPART_AR34_005A 0x005a // toggle
#define MODELPART_AUTOGUN_0000 0x0000 // position
#define MODELPART_AUTOGUN_0001 0x0001 // position
#define MODELPART_AUTOGUN_0002 0x0002 // position
#define MODELPART_AUTOGUN_0003 0x0003 // position
#define MODELPART_AUTOGUN_0004 0x0004 // position
#define MODELPART_AUTOGUN_0005 0x0005 // gunfire
#define MODELPART_AUTOGUN_0006 0x0006 // position
#define MODELPART_AUTOGUN_0007 0x0007 // gunfire
#define MODELPART_BASIC_0064 0x0064 // type19
#define MODELPART_BASIC_0065 0x0065 // type19
#define MODELPART_BASIC_0066 0x0066 // type19
#define MODELPART_BASIC_0067 0x0067 // bbox
#define MODELPART_BASIC_00C8 0x00c8 // toggle
#define MODELPART_BASIC_00C9 0x00c9 // toggle
#define MODELPART_BASIC_00CA 0x00ca // toggle
#define MODELPART_BASIC_00CB 0x00cb // toggle
#define MODELPART_BASIC_00CC 0x00cc // toggle
#define MODELPART_BASIC_00CD 0x00cd // toggle
#define MODELPART_BASIC_00CE 0x00ce // toggle
#define MODELPART_BASIC_00CF 0x00cf // toggle
#define MODELPART_BASIC_00D0 0x00d0 // toggle
#define MODELPART_BASIC_00D1 0x00d1 // toggle
#define MODELPART_BASIC_00D2 0x00d2 // toggle
#define MODELPART_BASIC_00D3 0x00d3 // toggle
#define MODELPART_CALLISTO_0028 0x0028 // toggle
#define MODELPART_CALLISTO_0032 0x0032 // position
#define MODELPART_CALLISTO_0037 0x0037 // position
#define MODELPART_CCTV_LENS 0x0000 // position
#define MODELPART_CCTV_0001 0x0001 // dl
#define MODELPART_CCTV_0002 0x0002 // bbox
#define MODELPART_CCTV_0003 0x0003 // toggle
#define MODELPART_CHOPPER_0000 0x0000 // position
#define MODELPART_CHOPPER_0001 0x0001 // position
#define MODELPART_CHOPPER_0002 0x0002 // position
#define MODELPART_CHOPPER_GUNFLASH 0x0003 // gunfire
#define MODELPART_CHOPPER_0005 0x0005 // toggle
#define MODELPART_CHRGUN_GUNFIRE 0x0000 // gunfire
#define MODELPART_CHRGUN_0001 0x0001 // positionheld
#define MODELPART_CHRGUN_0002 0x0002 // toggle
#define MODELPART_CHR_0000 0x0000 // position
#define MODELPART_CHR_0001 0x0001 // position
#define MODELPART_CHR_0002 0x0002 // position
#define MODELPART_CHR_RIGHTHAND 0x0003 // position
#define MODELPART_CHR_HEADSPOT 0x0004 // headspot
#define MODELPART_CHR_LEFTHAND 0x0005 // position
#define MODELPART_CHR_0006 0x0006 // position
#define MODELPART_CHR_NECKLACE 0x0007 // toggle
#define MODELPART_CIHUB_0000 0x0000 // dl
#define MODELPART_CIHUB_0001 0x0001 // dl
#define MODELPART_CIHUB_0002 0x0002 // dl
#define MODELPART_CIHUB_0003 0x0003 // dl
#define MODELPART_CLASSICGUN_0032 0x0032 // position
#define MODELPART_CLASSICGUN_003C 0x003c // positionheld
#define MODELPART_CLASSICGUN_0050 0x0050 // position
#define MODELPART_CLASSICGUN_005A 0x005a // toggle
#define MODELPART_CMP150_002A 0x002a // toggle
#define MODELPART_CMP150_002B 0x002b // toggle
#define MODELPART_CMP150_0032 0x0032 // position
#define MODELPART_CMP150_0037 0x0037 // position
#define MODELPART_CMP150_003C 0x003c // position
#define MODELPART_CMP150_0042 0x0042 // toggle
#define MODELPART_CMP150_0046 0x0046 // toggle
#define MODELPART_CMP150_0047 0x0047 // toggle
#define MODELPART_CMP150_0050 0x0050 // position
#define MODELPART_CMP150_0051 0x0051 // position
#define MODELPART_CMP150_005A 0x005a // toggle
#define MODELPART_CROSSBOW_0028 0x0028 // toggle
#define MODELPART_CROSSBOW_0029 0x0029 // toggle
#define MODELPART_CROSSBOW_002A 0x002a // toggle
#define MODELPART_CROSSBOW_0037 0x0037 // position
#define MODELPART_CROSSBOW_0042 0x0042 // toggle
#define MODELPART_CYCLONE_0028 0x0028 // toggle
#define MODELPART_CYCLONE_0032 0x0032 // position
#define MODELPART_CYCLONE_0037 0x0037 // position
#define MODELPART_CYCLONE_0050 0x0050 // position
#define MODELPART_CYCLONE_0051 0x0051 // position
#define MODELPART_CYCLONE_005A 0x005a // toggle
#define MODELPART_DEVASTATOR_0028 0x0028 // position
#define MODELPART_DEVASTATOR_0029 0x0029 // toggle
#define MODELPART_DEVASTATOR_002A 0x002a // toggle
#define MODELPART_DEVASTATOR_0037 0x0037 // position
#define MODELPART_DEVASTATOR_0064 0x0064 // toggle
#define MODELPART_DEVASTATOR_0065 0x0065 // toggle
#define MODELPART_DEVASTATOR_0066 0x0066 // toggle
#define MODELPART_DEVASTATOR_0067 0x0067 // toggle
#define MODELPART_DEVASTATOR_0068 0x0068 // toggle
#define MODELPART_DEVASTATOR_0069 0x0069 // toggle
#define MODELPART_DEVASTATOR_006A 0x006a // toggle
#define MODELPART_DEVASTATOR_006B 0x006b // toggle
#define MODELPART_DRAGON_0028 0x0028 // toggle
#define MODELPART_DRAGON_002A 0x002a // toggle
#define MODELPART_DRAGON_0032 0x0032 // position
#define MODELPART_DRAGON_0037 0x0037 // position
#define MODELPART_DRAGON_003C 0x003c // position
#define MODELPART_DRAGON_0042 0x0042 // toggle
#define MODELPART_DRAGON_0050 0x0050 // position
#define MODELPART_DRAGON_0051 0x0051 // position
#define MODELPART_DRAGON_0052 0x0052 // position
#define MODELPART_DRAGON_005A 0x005a // toggle
#define MODELPART_DRCAROLL_0000 0x0000 // toggle
#define MODELPART_DRCAROLL_0001 0x0001 // toggle
#define MODELPART_DRCAROLL_0002 0x0002 // toggle
#define MODELPART_DRCAROLL_0003 0x0003 // toggle
#define MODELPART_DRCAROLL_0004 0x0004 // toggle
#define MODELPART_DRCAROLL_0005 0x0005 // toggle
#define MODELPART_DRCAROLL_0006 0x0006 // toggle
#define MODELPART_DRCAROLL_0007 0x0007 // toggle
#define MODELPART_DRCAROLL_0008 0x0008 // toggle
#define MODELPART_DRCAROLL_0009 0x0009 // toggle
#define MODELPART_DRCAROLL_000A 0x000a // toggle
#define MODELPART_DRCAROLL_000B 0x000b // toggle
#define MODELPART_DROPSHIP_0064 0x0064 // type19
#define MODELPART_DROPSHIP_INTERIOR 0x006e // toggle
#define MODELPART_ECMMINE_0037 0x0037 // position
#define MODELPART_FALCON2_002A 0x002a // toggle
#define MODELPART_FALCON2_002B 0x002b // toggle
#define MODELPART_FALCON2_SCOPE 0x002c // toggle
#define MODELPART_FALCON2_SILENCER 0x002d // toggle
#define MODELPART_FALCON2_002E 0x002e // toggle
#define MODELPART_FALCON2_002F 0x002f // toggle
#define MODELPART_FALCON2_0032 0x0032 // position
#define MODELPART_FALCON2_0033 0x0033 // position
#define MODELPART_FALCON2_0034 0x0034 // position
#define MODELPART_FALCON2_0037 0x0037 // position
#define MODELPART_FALCON2_003C 0x003c // position
#define MODELPART_FALCON2_0042 0x0042 // toggle
#define MODELPART_FALCON2_0050 0x0050 // position
#define MODELPART_FALCON2_0051 0x0051 // position
#define MODELPART_FALCON2_005A 0x005a // toggle
#define MODELPART_FARSIGHT_0028 0x0028 // toggle
#define MODELPART_FARSIGHT_0032 0x0032 // position
#define MODELPART_FARSIGHT_0037 0x0037 // position
#define MODELPART_GRENADE_002B 0x002b // position
#define MODELPART_GRENADE_0037 0x0037 // position
#define MODELPART_GRENADE_0064 0x0064 // toggle
#define MODELPART_HAND_0035 0x0035 // toggle
#define MODELPART_HAND_0036 0x0036 // toggle
#define MODELPART_HEAD_SUNGLASSES 0x0000 // toggle
#define MODELPART_HEAD_HAT 0x0001 // toggle
#define MODELPART_HEAD_EYESOPEN 0x0002 // toggle
#define MODELPART_HEAD_EYESCLOSED 0x0003 // toggle
#define MODELPART_HEAD_HUDPIECE 0x0004 // toggle
#define MODELPART_HEAD_0190 0x0190 // dl
#define MODELPART_HEAD_0191 0x0191 // dl
#define MODELPART_HEAD_0192 0x0192 // dl
#define MODELPART_HOVERBIKE_0064 0x0064 // type19
#define MODELPART_HUDPIECE_0000 0x0000 // gundl
#define MODELPART_HUDPIECE_0001 0x0001 // position
#define MODELPART_HUDPIECE_0002 0x0002 // position
#define MODELPART_JOYPAD_0000 0x0000 // position
#define MODELPART_JOYPAD_0001 0x0001 // position
#define MODELPART_JOYPAD_0002 0x0002 // position
#define MODELPART_JOYPAD_0003 0x0003 // position
#define MODELPART_JOYPAD_0004 0x0004 // position
#define MODELPART_JOYPAD_0005 0x0005 // position
#define MODELPART_JOYPAD_0006 0x0006 // position
#define MODELPART_JOYPAD_0007 0x0007 // position
#define MODELPART_JOYPAD_0008 0x0008 // position
#define MODELPART_JOYPAD_0009 0x0009 // position
#define MODELPART_JOYPAD_000A 0x000a // position
#define MODELPART_JOYPAD_000B 0x000b // position
#define MODELPART_JOYPAD_000C 0x000c // position
#define MODELPART_JOYPAD_000D 0x000d // toggle
#define MODELPART_K7AVENGER_0029 0x0029 // toggle
#define MODELPART_K7AVENGER_002A 0x002a // toggle
#define MODELPART_K7AVENGER_0032 0x0032 // position
#define MODELPART_K7AVENGER_0037 0x0037 // position
#define MODELPART_K7AVENGER_003C 0x003c // position
#define MODELPART_K7AVENGER_0042 0x0042 // toggle
#define MODELPART_K7AVENGER_0050 0x0050 // position
#define MODELPART_K7AVENGER_0051 0x0051 // position
#define MODELPART_K7AVENGER_005A 0x005a // toggle
#define MODELPART_KNIFE_0037 0x0037 // position
#define MODELPART_KNIFE_0064 0x0064 // toggle
#define MODELPART_LAPTOPGUN_0029 0x0029 // toggle
#define MODELPART_LAPTOPGUN_002A 0x002a // toggle
#define MODELPART_LAPTOPGUN_0032 0x0032 // position
#define MODELPART_LAPTOPGUN_0037 0x0037 // position
#define MODELPART_LAPTOPGUN_0050 0x0050 // position
#define MODELPART_LAPTOPGUN_0051 0x0051 // position
#define MODELPART_LAPTOPGUN_005A 0x005a // toggle
#define MODELPART_LASER_0032 0x0032 // position
#define MODELPART_LASER_0037 0x0037 // position
#define MODELPART_LASER_0041 0x0041 // gundl
#define MODELPART_LASER_0042 0x0042 // toggle
#define MODELPART_LIFT_FLOORRECT 0x0000 // bbox
#define MODELPART_LIFT_WALL1 0x0001 // type19
#define MODELPART_LIFT_WALL2 0x0002 // type19
#define MODELPART_LIFT_WALL3 0x0003 // type19
#define MODELPART_LIFT_DOORBLOCK 0x0004 // type19
#define MODELPART_LIFT_FLOORNONRECT1 0x0005 // type19
#define MODELPART_LIFT_FLOORNONRECT2 0x0006 // type19
#define MODELPART_LOGO_0000 0x0000 // toggle
#define MODELPART_LOGO_0001 0x0001 // toggle
#define MODELPART_LOGO_0002 0x0002 // dl
#define MODELPART_LOGO_0003 0x0003 // dl
#define MODELPART_LOGO_0004 0x0004 // dl
#define MODELPART_LOGO_0005 0x0005 // dl
#define MODELPART_LOGO_0006 0x0006 // dl
#define MODELPART_LOGO_0007 0x0007 // dl
#define MODELPART_LOGO_0008 0x0008 // dl
#define MODELPART_LOGO_0009 0x0009 // dl
#define MODELPART_LOGO_0110 0x0110 // toggle
#define MODELPART_LOGO_0500 0x0500 // toggle
#define MODELPART_LOGO_4040 0x4040 // dl
#define MODELPART_MAGNUM_000A 0x000a // position
#define MODELPART_MAGNUM_000B 0x000b // position
#define MODELPART_MAGNUM_000C 0x000c // position
#define MODELPART_MAGNUM_000D 0x000d // position
#define MODELPART_MAGNUM_000E 0x000e // position
#define MODELPART_MAGNUM_000F 0x000f // position
#define MODELPART_MAGNUM_0028 0x0028 // toggle
#define MODELPART_MAGNUM_0029 0x0029 // toggle
#define MODELPART_MAGNUM_002A 0x002a // toggle
#define MODELPART_MAGNUM_002B 0x002b // toggle
#define MODELPART_MAGNUM_002C 0x002c // toggle
#define MODELPART_MAGNUM_002D 0x002d // toggle
#define MODELPART_MAGNUM_0032 0x0032 // position
#define MODELPART_MAGNUM_0037 0x0037 // position
#define MODELPART_MAGNUM_0042 0x0042 // toggle
#define MODELPART_MAGNUM_0050 0x0050 // position
#define MODELPART_MAGNUM_0051 0x0051 // position
#define MODELPART_MAGNUM_005A 0x005a // toggle
#define MODELPART_MAIANUFO_0064 0x0064 // type19
#define MODELPART_MAULER_002A 0x002a // toggle
#define MODELPART_MAULER_002B 0x002b // toggle
#define MODELPART_MAULER_0032 0x0032 // position
#define MODELPART_MAULER_0033 0x0033 // position
#define MODELPART_MAULER_0037 0x0037 // position
#define MODELPART_MAULER_0050 0x0050 // position
#define MODELPART_MAULER_005A 0x005a // toggle
#define MODELPART_PHOENIX_0028 0x0028 // toggle
#define MODELPART_PHOENIX_0032 0x0032 // position
#define MODELPART_PHOENIX_0037 0x0037 // position
#define MODELPART_PHOENIX_0042 0x0042 // toggle
#define MODELPART_PISTOL_0029 0x0029 // toggle
#define MODELPART_PISTOL_002A 0x002a // toggle
#define MODELPART_PISTOL_0032 0x0032 // position
#define MODELPART_PISTOL_0033 0x0033 // position
#define MODELPART_PISTOL_0037 0x0037 // position
#define MODELPART_PISTOL_003C 0x003c // position
#define MODELPART_PISTOL_0042 0x0042 // toggle
#define MODELPART_PISTOL_0050 0x0050 // position
#define MODELPART_PISTOL_005A 0x005a // toggle
#define MODELPART_RARELOGO_000B 0x000b // toggle
#define MODELPART_RARELOGO_000C 0x000c // toggle
#define MODELPART_RARELOGO_000D 0x000d // toggle
#define MODELPART_RCP120_0028 0x0028 // toggle
#define MODELPART_RCP120_0029 0x0029 // toggle
#define MODELPART_RCP120_0032 0x0032 // position
#define MODELPART_RCP120_0037 0x0037 // position
#define MODELPART_RCP120_003C 0x003c // position
#define MODELPART_RCP120_0042 0x0042 // toggle
#define MODELPART_RCP120_0050 0x0050 // position
#define MODELPART_RCP120_0051 0x0051 // position
#define MODELPART_RCP120_005A 0x005a // toggle
#define MODELPART_REAPER_001E 0x001e // position
#define MODELPART_REAPER_001F 0x001f // position
#define MODELPART_REAPER_0020 0x0020 // position
#define MODELPART_REAPER_002A 0x002a // toggle
#define MODELPART_REAPER_002B 0x002b // toggle
#define MODELPART_REAPER_002C 0x002c // position
#define MODELPART_REAPER_002D 0x002d // position
#define MODELPART_REAPER_002E 0x002e // position
#define MODELPART_REAPER_002F 0x002f // position
#define MODELPART_REAPER_0030 0x0030 // position
#define MODELPART_REAPER_0031 0x0031 // position
#define MODELPART_REAPER_0037 0x0037 // position
#define MODELPART_REAPER_0042 0x0042 // toggle
#define MODELPART_REAPER_0050 0x0050 // position
#define MODELPART_REAPER_0051 0x0051 // position
#define MODELPART_REAPER_0052 0x0052 // position
#define MODELPART_REAPER_005A 0x005a // toggle
#define MODELPART_REAPER_005B 0x005b // toggle
#define MODELPART_REAPER_005C 0x005c // toggle
#define MODELPART_REMOTEMINE_0028 0x0028 // toggle
#define MODELPART_REMOTEMINE_0029 0x0029 // toggle
#define MODELPART_REMOTEMINE_002A 0x002a // position
#define MODELPART_REMOTEMINE_0037 0x0037 // position
#define MODELPART_ROBOT_0000 0x0000 // position
#define MODELPART_ROBOT_0001 0x0001 // position
#define MODELPART_ROBOT_RGUNFIRE 0x0002 // gunfire
#define MODELPART_ROBOT_LGUNFIRE 0x0003 // gunfire
#define MODELPART_ROBOT_0004 0x0004 // toggle
#define MODELPART_ROCKET_0028 0x0028 // toggle
#define MODELPART_ROCKET_0032 0x0032 // position
#define MODELPART_ROCKET_0037 0x0037 // position
#define MODELPART_ROCKET_0042 0x0042 // toggle
#define MODELPART_SHOTGUN_002B 0x002b // toggle
#define MODELPART_SHOTGUN_0032 0x0032 // position
#define MODELPART_SHOTGUN_0037 0x0037 // position
#define MODELPART_SHOTGUN_003C 0x003c // position
#define MODELPART_SHOTGUN_0042 0x0042 // toggle
#define MODELPART_SHOTGUN_0050 0x0050 // position
#define MODELPART_SHOTGUN_005A 0x005a // toggle
#define MODELPART_SKSHUTTLE_GANGWAY 0x00b7 // toggle
#define MODELPART_SKEDAR_0000 0x0000 // position
#define MODELPART_SKEDAR_0001 0x0001 // position
#define MODELPART_SKEDAR_RIGHTHAND 0x0002 // position
#define MODELPART_SKEDAR_LEFTHAND 0x0003 // position
#define MODELPART_SKEDAR_EYESOPEN 0x0004 // toggle
#define MODELPART_SKEDAR_EYESCLOSED 0x0005 // toggle
#define MODELPART_SLAYERROCKET_0032 0x0032 // position
#define MODELPART_SLAYERROCKET_0037 0x0037 // position
#define MODELPART_SLAYERROCKET_0042 0x0042 // toggle
#define MODELPART_SNIPERRIFLE_0028 0x0028 // toggle
#define MODELPART_SNIPERRIFLE_0029 0x0029 // toggle
#define MODELPART_SNIPERRIFLE_002A 0x002a // position
#define MODELPART_SNIPERRIFLE_002B 0x002b // position
#define MODELPART_SNIPERRIFLE_002C 0x002c // position
#define MODELPART_SNIPERRIFLE_002D 0x002d // position
#define MODELPART_SNIPERRIFLE_0032 0x0032 // position
#define MODELPART_SNIPERRIFLE_0037 0x0037 // position
#define MODELPART_SNIPERRIFLE_003C 0x003c // position
#define MODELPART_SNIPERRIFLE_0042 0x0042 // toggle
#define MODELPART_SUPERDRAGON_0028 0x0028 // toggle
#define MODELPART_SUPERDRAGON_0029 0x0029 // toggle
#define MODELPART_SUPERDRAGON_002A 0x002a // toggle
#define MODELPART_SUPERDRAGON_002B 0x002b // toggle
#define MODELPART_SUPERDRAGON_0032 0x0032 // position
#define MODELPART_SUPERDRAGON_0037 0x0037 // position
#define MODELPART_SUPERDRAGON_003C 0x003c // position
#define MODELPART_SUPERDRAGON_0042 0x0042 // toggle
#define MODELPART_SUPERDRAGON_0050 0x0050 // position
#define MODELPART_SUPERDRAGON_0051 0x0051 // position
#define MODELPART_SUPERDRAGON_0052 0x0052 // position
#define MODELPART_SUPERDRAGON_005A 0x005a // toggle
#define MODELPART_TERMINAL_0000 0x0000 // dl
#define MODELPART_TIMEDPROXYMINE_0037 0x0037 // position
#define MODELPART_TRANQUILIZER_0028 0x0028 // toggle
#define MODELPART_TRANQUILIZER_0029 0x0029 // toggle
#define MODELPART_TRANQUILIZER_002A 0x002a // toggle
#define MODELPART_TRANQUILIZER_002B 0x002b // position
#define MODELPART_TRANQUILIZER_0032 0x0032 // position
#define MODELPART_TRANQUILIZER_0037 0x0037 // position
#define MODELPART_TRANQUILIZER_0042 0x0042 // toggle
#define MODELPART_UPLINK_0037 0x0037 // position
#define MODELPART_UZI_0032 0x0032 // position
#define MODELPART_UZI_003C 0x003c // positionheld
#define MODELPART_UZI_0050 0x0050 // position
#define MODELPART_UZI_0051 0x0051 // position
#define MODELPART_UZI_005A 0x005a // toggle
#define MODELPART_WINDOWEDDOOR_0000 0x0000 // bbox
#define MODELPART_WINDOWEDDOOR_0001 0x0001 // toggle
#define MODELPART_WINDOWEDDOOR_0002 0x0002 // bbox
#define MODELPART_WINDOWEDDOOR_0003 0x0003 // dl
// Unsure which model types these are for
#define MODELPART_0000 0x0000
#define MODELPART_0001 0x0001
#define MODELPART_0002 0x0002
#define MODELPART_0003 0x0003
#define MODELPART_0010 0x0010
#define MODELPART_0011 0x0011
#define MODELPART_0035 0x0035
#define MODELPART_0036 0x0036
#define MODELPART_0042 0x0042
#define MODELPART_0065 0x0065
#define MODELPART_0066 0x0066
#define MODELPART_0067 0x0067
#define MODFILE_GAME 1
#define MODFILE_MPSETUP 2
#define MODFILE_BOSS 4
// Might be the same flags as PROJECTILEFLAG
#define MONITORMOUNTFLAG_FREE 0x00000001
#define MOVEMODE_WALK 0
#define MOVEMODE_BIKE 3
#define MOVEMODE_GRAB 4
#define MOVEMODE_CUTSCENE 5
#define MP3RESPONSETYPE_NONE 0
#define MP3RESPONSETYPE_ACKNOWLEDGE 1
#define MP3RESPONSETYPE_WHISPER 2
#define MP3RESPONSETYPE_GREETING 3
#define MPBODY_DARK_COMBAT 0x00
#define MPBODY_DARK_TRENCH 0x01
#define MPBODY_DARK_FROCK 0x02
#define MPBODY_DARK_RIPPED 0x03
#define MPBODY_DARK_AF1 0x04
#define MPBODY_DARK_LEATHER 0x05
#define MPBODY_DARK_NEGOTIATOR 0x06
#define MPBODY_DARKWET 0x07
#define MPBODY_DARKAQUALUNG 0x08
#define MPBODY_DARKSNOW 0x09
#define MPBODY_DARKLAB 0x0a
#define MPBODY_THEKING 0x0b
#define MPBODY_ELVIS1 0x0c
#define MPBODY_ELVISWAISTCOAT 0x0d
#define MPBODY_CARRINGTON 0x0e
#define MPBODY_CARREVENINGSUIT 0x0f
#define MPBODY_MRBLONDE 0x10
#define MPBODY_CASSANDRA 0x11
#define MPBODY_TRENT 0x12
#define MPBODY_JONATHAN 0x13
#define MPBODY_CILABTECH 0x14
#define MPBODY_CIFEMTECH 0x15
#define MPBODY_CISOLDIER 0x16
#define MPBODY_DDSHOCK 0x17
#define MPBODY_FEM_GUARD 0x18
#define MPBODY_DD_SECGUARD 0x19
#define MPBODY_DD_GUARD 0x1a
#define MPBODY_DD_SHOCK_INF 0x1b
#define MPBODY_SECRETARY 0x1c
#define MPBODY_OFFICEWORKER 0x1d
#define MPBODY_OFFICEWORKER2 0x1e
#define MPBODY_NEGOTIATOR 0x1f
#define MPBODY_DDSNIPER 0x20
#define MPBODY_G5_GUARD 0x21
#define MPBODY_G5_SWAT_GUARD 0x22
#define MPBODY_CIAGUY 0x23
#define MPBODY_FBIGUY 0x24
#define MPBODY_AREA51GUARD 0x25
#define MPBODY_A51TROOPER 0x26
#define MPBODY_A51AIRMAN 0x27
#define MPBODY_OVERALL 0x28
#define MPBODY_STRIPES 0x29
#define MPBODY_LABTECH 0x2a
#define MPBODY_FEMLABTECH 0x2b
#define MPBODY_DD_LABTECH 0x2c
#define MPBODY_BIOTECH 0x2d
#define MPBODY_ALASKAN_GUARD 0x2e
#define MPBODY_PILOTAF1 0x2f
#define MPBODY_STEWARD 0x30
#define MPBODY_STEWARDESS 0x31
#define MPBODY_STEWARDESS_COAT 0x32
#define MPBODY_PRESIDENT 0x33
#define MPBODY_NSA_LACKEY 0x34
#define MPBODY_PRES_SECURITY 0x35
#define MPBODY_PRESIDENT_CLONE2 0x36
#define MPBODY_PELAGIC_GUARD 0x37
#define MPBODY_MAIAN_SOLDIER 0x38
#define MPBODY_CONNERY 0x39
#define MPBODY_MOORE 0x3a
#define MPBODY_DALTON 0x3b
#define MPBODY_DJBOND 0x3c
#define MPBOTCOMMAND_FOLLOW 0
#define MPBOTCOMMAND_ATTACK 1
#define MPBOTCOMMAND_DEFEND 2
#define MPBOTCOMMAND_HOLD 3
#define MPBOTCOMMAND_NORMAL 4
#define MPBOTCOMMAND_DOWNLOAD 5
#define MPBOTCOMMAND_GETCASE 6
#define MPBOTCOMMAND_TAGBOX 7
#define MPBOTCOMMAND_SAVECASE 8
#define MPBOTCOMMAND_DEFHILL 9
#define MPBOTCOMMAND_HOLDHILL 10
#define MPBOTCOMMAND_GETCASE2 11
#define MPBOTCOMMAND_POPCAP 12
#define MPBOTCOMMAND_PROTECT 13
#define MPCONFIG_TEMPLE 0x00
#define MPCONFIG_PISTOLS 0x01
#define MPCONFIG_FARSIGHT 0x02
#define MPCONFIG_DRUGGUN 0x03
#define MPCONFIG_SLAYER 0x04
#define MPCONFIG_CLOAKING 0x05
#define MPCONFIG_SLOWMO 0x06
#define MPCONFIG_NOSHIELD 0x07
#define MPCONFIG_BRIEFCASE 0x08
#define MPCONFIG_SKEDARKING 0x09
#define MPCONFIG_FLAGS 0x0a
#define MPCONFIG_SIMULANTS 0x0b
#define MPCONFIG_AUTOMATICS 0x0c
#define MPCONFIG_ROCKETS 0x0d
#define MPCONFIG_CHALLENGE01 0x0e
#define MPCONFIG_CHALLENGE02 0x0f
#define MPCONFIG_CHALLENGE03 0x10
#define MPCONFIG_CHALLENGE04 0x11
#define MPCONFIG_CHALLENGE05 0x12
#define MPCONFIG_CHALLENGE06 0x13
#define MPCONFIG_CHALLENGE07 0x14
#define MPCONFIG_CHALLENGE08 0x15
#define MPCONFIG_CHALLENGE09 0x16
#define MPCONFIG_CHALLENGE10 0x17
#define MPCONFIG_CHALLENGE11 0x18
#define MPCONFIG_CHALLENGE12 0x19
#define MPCONFIG_CHALLENGE13 0x1a
#define MPCONFIG_CHALLENGE14 0x1b
#define MPCONFIG_CHALLENGE15 0x1c
#define MPCONFIG_CHALLENGE16 0x1d
#define MPCONFIG_CHALLENGE17 0x1e
#define MPCONFIG_CHALLENGE18 0x1f
#define MPCONFIG_CHALLENGE19 0x20
#define MPCONFIG_CHALLENGE20 0x21
#define MPCONFIG_CHALLENGE21 0x22
#define MPCONFIG_CHALLENGE22 0x23
#define MPCONFIG_CHALLENGE23 0x24
#define MPCONFIG_CHALLENGE24 0x25
#define MPCONFIG_CHALLENGE25 0x26
#define MPCONFIG_CHALLENGE26 0x27
#define MPCONFIG_CHALLENGE27 0x28
#define MPCONFIG_CHALLENGE28 0x29
#define MPCONFIG_CHALLENGE29 0x2a
#define MPCONFIG_CHALLENGE30 0x2b
#define MPDISPLAYOPTION_HIGHLIGHTPLAYERS 0x01
#define MPDISPLAYOPTION_HIGHLIGHTPICKUPS 0x02
#define MPDISPLAYOPTION_RADAR 0x04
#define MPDISPLAYOPTION_HIGHLIGHTTEAMS 0x08
// Features are things that can be unlocked
#define MPFEATURE_WEAPON_FARSIGHT 0x01
#define MPFEATURE_WEAPON_TRANQUILIZER 0x02
#define MPFEATURE_WEAPON_SUPERDRAGON 0x03
#define MPFEATURE_WEAPON_SLAYER 0x04
#define MPFEATURE_WEAPON_FALCON2SILENCED 0x05
#define MPFEATURE_WEAPON_FALCON2SCOPE 0x06
#define MPFEATURE_WEAPON_MAULER 0x07
#define MPFEATURE_WEAPON_PHOENIX 0x08
#define MPFEATURE_WEAPON_DY357LX 0x09
#define MPFEATURE_WEAPON_CALLISTO 0x0a
#define MPFEATURE_WEAPON_LAPTOPGUN 0x0b
#define MPFEATURE_WEAPON_K7AVENGER 0x0c
#define MPFEATURE_WEAPON_RCP120 0x0d
#define MPFEATURE_WEAPON_SHOTGUN 0x0e
#define MPFEATURE_WEAPON_REAPER 0x0f
#define MPFEATURE_WEAPON_DEVASTATOR 0x10
#define MPFEATURE_WEAPON_CROSSBOW 0x11
#define MPFEATURE_WEAPON_NBOMB 0x12
#define MPFEATURE_WEAPON_PROXIMITYMINE 0x13
#define MPFEATURE_WEAPON_REMOTEMINE 0x14
#define MPFEATURE_WEAPON_XRAYSCANNER 0x15
#define MPFEATURE_WEAPON_SHIELD 0x16
#define MPFEATURE_WEAPON_CLOAKINGDEVICE 0x17
#define MPFEATURE_WEAPON_COMBATBOOST 0x18
#define MPFEATURE_BOTDIFF_HARD 0x19
#define MPFEATURE_BOTDIFF_PERFECT 0x1a
#define MPFEATURE_1B 0x1b
#define MPFEATURE_BOTDIFF_DARK 0x1c
#define MPFEATURE_SLOWMOTION 0x1d
#define MPFEATURE_ONEHITKILLS 0x1e
#define MPFEATURE_SCENARIO_KOH 0x1f
#define MPFEATURE_SCENARIO_HTB 0x20
#define MPFEATURE_SCENARIO_CTC 0x21
#define MPFEATURE_22 0x22
#define MPFEATURE_STAGE_CARPARK 0x23
#define MPFEATURE_STAGE_COMPLEX 0x24
#define MPFEATURE_STAGE_WAREHOUSE 0x25
#define MPFEATURE_STAGE_RAVINE 0x26
#define MPFEATURE_STAGE_TEMPLE 0x27
#define MPFEATURE_STAGE_G5BUILDING 0x28
#define MPFEATURE_STAGE_GRID 0x29
#define MPFEATURE_STAGE_FELICITY 0x2a
#define MPFEATURE_STAGE_VILLA 0x2b
#define MPFEATURE_STAGE_SEWERS 0x2c
#define MPFEATURE_STAGE_RUINS 0x2d
#define MPFEATURE_STAGE_BASE 0x2e
#define MPFEATURE_2F 0x2f
#define MPFEATURE_STAGE_FORTRESS 0x30
#define MPFEATURE_31 0x31
#define MPFEATURE_CHR_FEMGUARD 0x32
#define MPFEATURE_CHR_OFFICEWORKER 0x33
#define MPFEATURE_CHR_VILLACHRS 0x34
#define MPFEATURE_CHR_TRENT 0x35
#define MPFEATURE_CHR_NSALACKEY 0x36
#define MPFEATURE_CHR_G5 0x37
#define MPFEATURE_CHR_MRBLONDE 0x38
#define MPFEATURE_CHR_CIAFBI 0x39
#define MPFEATURE_CHR_INFILTRATION 0x3a
#define MPFEATURE_CHR_LABTECH 0x3b
#define MPFEATURE_CHR_BIOTECH 0x3c
#define MPFEATURE_CHR_ELVIS 0x3d
#define MPFEATURE_CHR_ALASKANGUARD 0x3e
#define MPFEATURE_CHR_AF1 0x3f
#define MPFEATURE_8BOTS 0x40 // also unlocks the 4 Bonds
#define MPFEATURE_CHR_CI 0x41
#define MPFEATURE_CHR_PRESCLONE 0x42
#define MPFEATURE_CHR_PRESSECURITY 0x43
#define MPFEATURE_CHR_STRIPES 0x44
#define MPFEATURE_CHR_PELAGIC 0x45
#define MPFEATURE_CHR_JOTRENCH 0x46
#define MPFEATURE_CHR_JOSNOW 0x47
#define MPFEATURE_CHR_JONATHAN 0x48
#define MPFEATURE_49 0x49
#define MPFEATURE_4A 0x4a
#define MPFEATURE_4B 0x4b
#define MPFEATURE_4C 0x4c
#define MPFEATURE_SCENARIO_PAC 0x4d
#define MPFEATURE_SCENARIO_HTM 0x4e
#define MPFEATURE_WEAPON_LASER 0x4f
#define MPHEAD_DARK_COMBAT 0x00
#define MPHEAD_DARK_FROCK 0x01
#define MPHEAD_DARKAQUA 0x02
#define MPHEAD_DARK_SNOW 0x03
#define MPHEAD_ELVIS 0x04
#define MPHEAD_ELVIS_GOGS 0x05
#define MPHEAD_CARRINGTON 0x06
#define MPHEAD_MRBLONDE 0x07
#define MPHEAD_CASSANDRA 0x08
#define MPHEAD_TRENT 0x09
#define MPHEAD_JONATHAN 0x0a
#define MPHEAD_VD 0x0b
#define MPHEAD_PRESIDENT 0x0c
#define MPHEAD_DDSHOCK 0x0d
#define MPHEAD_BIOTECH 0x0e
#define MPHEAD_DDSNIPER 0x0f
#define MPHEAD_A51FACEPLATE 0x10
#define MPHEAD_SECRETARY 0x11
#define MPHEAD_FEM_GUARD 0x12
#define MPHEAD_FEM_GUARD2 0x13
#define MPHEAD_MAIAN_S 0x14
#define MPHEAD_JON 0x15
#define MPHEAD_BEAU1 0x16
#define MPHEAD_ROSS 0x17
#define MPHEAD_MARK2 0x18
#define MPHEAD_CHRIST 0x19
#define MPHEAD_RUSS 0x1a
#define MPHEAD_DARLING 0x1b
#define MPHEAD_BRIAN 0x1c
#define MPHEAD_JAMIE 0x1d
#define MPHEAD_DUNCAN2 0x1e
#define MPHEAD_KEITH 0x1f
#define MPHEAD_STEVEM 0x20
#define MPHEAD_GRANT 0x21
#define MPHEAD_PENNY 0x22
#define MPHEAD_DAVEC 0x23
#define MPHEAD_JONES 0x24
#define MPHEAD_GRAHAM 0x25
#define MPHEAD_ROBERT 0x26
#define MPHEAD_NEIL2 0x27
#define MPHEAD_SHAUN 0x28
#define MPHEAD_ROBIN 0x29
#define MPHEAD_COOK 0x2a
#define MPHEAD_PRYCE 0x2b
#define MPHEAD_SILKE 0x2c
#define MPHEAD_SMITH 0x2d
#define MPHEAD_GARETH 0x2e
#define MPHEAD_MURCHIE 0x2f
#define MPHEAD_WONG 0x30
#define MPHEAD_CARTER 0x31
#define MPHEAD_TINTIN 0x32
#define MPHEAD_MUNTON 0x33
#define MPHEAD_STAMPER 0x34
#define MPHEAD_PHELPS 0x35
#define MPHEAD_ALEX 0x36
#define MPHEAD_JULIANNE 0x37
#define MPHEAD_LAURA 0x38
#define MPHEAD_EDMCG 0x39
#define MPHEAD_ANKA 0x3a
#define MPHEAD_LESLIE_S 0x3b
#define MPHEAD_MATT_C 0x3c
#define MPHEAD_PEER_S 0x3d
#define MPHEAD_EILEEN_T 0x3e
#define MPHEAD_ANDY_R 0x3f
#define MPHEAD_BEN_R 0x40
#define MPHEAD_STEVE_K 0x41
#define MPHEAD_SANCHEZ 0x42
#define MPHEAD_TIM 0x43
#define MPHEAD_KEN 0x44
#define MPHEAD_EILEEN_H 0x45
#define MPHEAD_SCOTT_H 0x46
#define MPHEAD_JOEL 0x47
#define MPHEAD_GRIFFEY 0x48
#define MPHEAD_MOTO 0x49
#define MPHEAD_WINNER 0x4a
#define MPLOCKTYPE_NONE 0
#define MPLOCKTYPE_LASTWINNER 1
#define MPLOCKTYPE_LASTLOSER 2
#define MPLOCKTYPE_RANDOM 3
#define MPLOCKTYPE_PLAYER 4
#define MPLOCKTYPE_CHALLENGE 5
#define MPOPTION_ONEHITKILLS 0x00000001
#define MPOPTION_TEAMSENABLED 0x00000002
#define MPOPTION_NORADAR 0x00000004
#define MPOPTION_NOAUTOAIM 0x00000008
#define MPOPTION_NOPLAYERHIGHLIGHT 0x00000010
#define MPOPTION_NOPICKUPHIGHLIGHT 0x00000020
#define MPOPTION_SLOWMOTION_ON 0x00000040
#define MPOPTION_SLOWMOTION_SMART 0x00000080
#define MPOPTION_FASTMOVEMENT 0x00000100
#define MPOPTION_DISPLAYTEAM 0x00000200
#define MPOPTION_KILLSSCORE 0x00000400
#define MPOPTION_HTB_HIGHLIGHTBRIEFCASE 0x00000800
#define MPOPTION_HTB_SHOWONRADAR 0x00001000
#define MPOPTION_CTC_SHOWONRADAR 0x00002000
#define MPOPTION_KOH_HILLONRADAR 0x00004000
#define MPOPTION_KOH_MOBILEHILL 0x00008000
#define MPOPTION_00010000 0x00010000
#define MPOPTION_HTM_HIGHLIGHTTERMINAL 0x00020000
#define MPOPTION_HTM_SHOWONRADAR 0x00040000
#define MPOPTION_PAC_HIGHLIGHTTARGET 0x00080000
#define MPOPTION_PAC_SHOWONRADAR 0x00100000
#define MPPAUSEMODE_UNPAUSED 0
#define MPPAUSEMODE_PAUSED 1
#define MPPAUSEMODE_GAMEOVER 2
#define MPPLAYERTITLE_BEGINNER 0
#define MPPLAYERTITLE_TRAINEE 1
#define MPPLAYERTITLE_AMATEUR 2
#define MPPLAYERTITLE_ROOKIE 3
#define MPPLAYERTITLE_NOVICE 4
#define MPPLAYERTITLE_TROOPER 5
#define MPPLAYERTITLE_AGENT 6
#define MPPLAYERTITLE_STARAGENT 7
#define MPPLAYERTITLE_SPECIALAGENT 8
#define MPPLAYERTITLE_EXPERT 9
#define MPPLAYERTITLE_VETERAN 10
#define MPPLAYERTITLE_PROFESSIONAL 11
#define MPPLAYERTITLE_DANGEROUS 12
#define MPPLAYERTITLE_DEADLY 13
#define MPPLAYERTITLE_KILLER 14
#define MPPLAYERTITLE_ASSASSIN 15
#define MPPLAYERTITLE_LETHAL 16
#define MPPLAYERTITLE_ELITE 17
#define MPPLAYERTITLE_INVINCIBLE 18
#define MPPLAYERTITLE_NEARPERFECT 19
#define MPPLAYERTITLE_PERFECT 20
#define MPQUICKTEAM_PLAYERSONLY 0
#define MPQUICKTEAM_PLAYERSANDSIMS 1
#define MPQUICKTEAM_PLAYERSTEAMS 2
#define MPQUICKTEAM_PLAYERSVSSIMS 3
#define MPQUICKTEAM_PLAYERSIMTEAMS 4
#define MPQUICKTEAM_NONE 5
#define MPSCENARIO_COMBAT 0
#define MPSCENARIO_HOLDTHEBRIEFCASE 1
#define MPSCENARIO_HACKERCENTRAL 2
#define MPSCENARIO_POPACAP 3
#define MPSCENARIO_KINGOFTHEHILL 4
#define MPSCENARIO_CAPTURETHECASE 5
#define MPSETUPMENU_ADVSETUP 1
#define MPSETUPMENU_GENERAL 2
#define MPSETUPMENU_QUICKGO 3
#define MPTEAM_0 0
#define MPTEAM_1 1
#define MPTEAM_2 2
#define MPTEAM_3 3
#define MPTEAM_4 4
#define MPTEAM_5 5
#define MPTEAM_6 6
#define MPTEAM_7 7
#define MPWEAPON_NONE 0x00
#define MPWEAPON_FALCON2 0x01
#define MPWEAPON_FALCON2_SILENCER 0x02
#define MPWEAPON_FALCON2_SCOPE 0x03
#define MPWEAPON_MAGSEC4 0x04
#define MPWEAPON_MAULER 0x05
#define MPWEAPON_PHOENIX 0x06
#define MPWEAPON_DY357MAGNUM 0x07
#define MPWEAPON_DY357LX 0x08
#define MPWEAPON_CMP150 0x09
#define MPWEAPON_CYCLONE 0x0a
#define MPWEAPON_CALLISTO 0x0b
#define MPWEAPON_RCP120 0x0c
#define MPWEAPON_LAPTOPGUN 0x0d
#define MPWEAPON_DRAGON 0x0e
#define MPWEAPON_K7AVENGER 0x0f
#define MPWEAPON_AR34 0x10
#define MPWEAPON_SUPERDRAGON 0x11
#define MPWEAPON_SHOTGUN 0x12
#define MPWEAPON_REAPER 0x13
#define MPWEAPON_SNIPERRIFLE 0x14
#define MPWEAPON_FARSIGHT 0x15
#define MPWEAPON_DEVASTATOR 0x16
#define MPWEAPON_ROCKETLAUNCHER 0x17
#define MPWEAPON_SLAYER 0x18
#define MPWEAPON_COMBATKNIFE (VERSION == VERSION_JPN_FINAL ? 0 : 0x19)
#define MPWEAPON_CROSSBOW (VERSION == VERSION_JPN_FINAL ? 0x19 : 0x1a)
#define MPWEAPON_TRANQUILIZER (VERSION == VERSION_JPN_FINAL ? 0x1a : 0x1b)
#define MPWEAPON_GRENADE (VERSION == VERSION_JPN_FINAL ? 0x1b : 0x1c)
#define MPWEAPON_NBOMB (VERSION == VERSION_JPN_FINAL ? 0x1c : 0x1d)
#define MPWEAPON_TIMEDMINE (VERSION == VERSION_JPN_FINAL ? 0x1d : 0x1e)
#define MPWEAPON_PROXIMITYMINE (VERSION == VERSION_JPN_FINAL ? 0x1e : 0x1f)
#define MPWEAPON_REMOTEMINE (VERSION == VERSION_JPN_FINAL ? 0x1f : 0x20)
#define MPWEAPON_LASER (VERSION == VERSION_JPN_FINAL ? 0x20 : 0x21)
#define MPWEAPON_XRAYSCANNER (VERSION == VERSION_JPN_FINAL ? 0x21 : 0x22)
#define MPWEAPON_CLOAKINGDEVICE (VERSION == VERSION_JPN_FINAL ? 0x22 : 0x23)
#define MPWEAPON_COMBATBOOST (VERSION == VERSION_JPN_FINAL ? 0x23 : 0x24)
#define MPWEAPON_SHIELD (VERSION == VERSION_JPN_FINAL ? 0x24 : 0x25)
#define MPWEAPON_DISABLED (VERSION == VERSION_JPN_FINAL ? 0x25 : 0x26)
#define NUM_MPWEAPONS (VERSION == VERSION_JPN_FINAL ? 0x26 : 0x27)
#define MUSICEVENTTYPE_PLAY 1
#define MUSICEVENTTYPE_STOP 2
#define MUSICEVENTTYPE_FADE 3
#define MUSICEVENTTYPE_STOPALL 4
#define MUSICEVENTTYPE_5 5
#define NUM_BODIES 151
#define NUM_CHALLENGES 30
#define NUM_CHEATS 42
#define NUM_CYCLEABLE_WEAPONS 45
#define NUM_EXPLOSIONTYPES 26
#define NUM_FILES (VERSION == VERSION_JPN_FINAL ? 2016 : 2014)
#define NUM_FIRESLOTS 20
#define NUM_MPBEAUHEADS 5
#define NUM_MPBOTCOMMANDS 14
#define NUM_MPBODIES 61
#define NUM_MPHEADS (VERSION == VERSION_JPN_FINAL ? 74 : 75)
#define NUM_MPPRESETS 14
#define NUM_MPTRACKS 42
#define NUM_RACES 5
#define NUM_SMOKETYPES 23
#define NUM_SOLONORMALSTAGES 17
#define NUM_SOLOSTAGES 21
#define NUM_STAGES 90
#define NUM_TEXTURES (VERSION == VERSION_JPN_FINAL ? 3511 : 3503)
#define OBJECTIVE_INCOMPLETE 0
#define OBJECTIVE_COMPLETE 1
#define OBJECTIVE_FAILED 2
#define OBJECTIVEFLAG_AUTOCOMPLETE 0x01
// obj->flags
#define OBJFLAG_00000001 0x00000001 // Editor: "Fall to Ground"
#define OBJFLAG_00000002 0x00000002 // Editor: "In Air Rotated 90 Deg Upside-Down"
#define OBJFLAG_00000004 0x00000004 // Editor: "In Air Upside-Down"
#define OBJFLAG_00000008 0x00000008 // Editor: "In Air"
#define OBJFLAG_00000010 0x00000010 // Editor: "Scale to Pad Bounds"
#define OBJFLAG_00000020 0x00000020 // Editor: "X to Pad Bounds"
#define OBJFLAG_00000040 0x00000040 // Editor: "Y to Pad Bounds"
#define OBJFLAG_00000080 0x00000080 // Editor: "Z to Pad Bounds"
#define OBJFLAG_00000100 0x00000100 // G5 mines, Air Base brown door, AF1 grate and escape door, Defense shuttle, Ruins mines, MBR lift door. Editor suggests "Force Collisions" but this seems wrong
#define OBJFLAG_00000200 0x00000200 // Editor: "Special Environment Mapping"
#define OBJFLAG_ILLUMINATED 0x00000400
#define OBJFLAG_PATHBLOCKER 0x00000800 // Glass and explodable scenery which may be blocking a path segment
#define OBJFLAG_00001000 0x00001000 // Editor: "Absolute Position"
#define OBJFLAG_AIUNDROPPABLE 0x00002000 // AI cannot drop item
#define OBJFLAG_ASSIGNEDTOCHR 0x00004000
#define OBJFLAG_INSIDEANOTHEROBJ 0x00008000 // Eg. gun inside a crate or suitcase inside a dumpster
#define OBJFLAG_00010000 0x00010000 // Not used in scripts
#define OBJFLAG_INVINCIBLE 0x00020000
#define OBJFLAG_COLLECTABLE 0x00040000
#define OBJFLAG_THROWNLAPTOP 0x00080000
#define OBJFLAG_UNCOLLECTABLE 0x00100000
#define OBJFLAG_REACTIFSHOT 0x00200000 // Bounce or explode
#define OBJFLAG_00400000 0x00400000 // Not used in scripts
#define OBJFLAG_00800000 0x00800000 // Not used in scripts
#define OBJFLAG_01000000 0x01000000 // Editor: "Embedded Object"
#define OBJFLAG_CANNOT_ACTIVATE 0x02000000 // Makes it do nothing if player presses B on object. Used mostly for doors.
#define OBJFLAG_AISEETHROUGH 0x04000000 // Glass, glass doors, small objects such as plant pots
#define OBJFLAG_08000000 0x08000000 // Not used in scripts
#define OBJFLAG_DEACTIVATED 0x10000000
#define OBJFLAG_AMMOCRATE_EXPLODENOW 0x10000000
#define OBJFLAG_DOOR_HASPORTAL 0x10000000
#define OBJFLAG_GLASS_HASPORTAL 0x10000000
#define OBJFLAG_WEAPON_LEFTHANDED 0x10000000
#define OBJFLAG_ESCSTEP_ZALIGNED 0x10000000
#define OBJFLAG_20000000 0x20000000 // Editor: "Door Opens Backwards/Special Function/Conceal Weapon"
#define OBJFLAG_CAMERA_DISABLED 0x20000000
#define OBJFLAG_DOOR_OPENTOFRONT 0x20000000
#define OBJFLAG_HOVERCAR_20000000 0x20000000
#define OBJFLAG_WEAPON_AICANNOTUSE 0x20000000
#define OBJFLAG_AUTOGUN_ALERTED 0x40000000
#define OBJFLAG_CAMERA_BONDINVIEW 0x40000000
#define OBJFLAG_DOOR_KEEPOPEN 0x40000000 // Editor: "Door open by default/Empty weapon"
#define OBJFLAG_HOVERBIKE_MOVINGWHILEEMPTY 0x40000000
#define OBJFLAG_HOVERCAR_40000000 0x40000000
#define OBJFLAG_LIFT_TRIGGERDISABLE 0x40000000
#define OBJFLAG_MONITOR_RENDERPOSTBG 0x40000000
#define OBJFLAG_WEAPON_40000000 0x40000000
#define OBJFLAG_80000000 0x80000000
#define OBJFLAG_HOVERCAR_ISHOVERBOT 0x80000000
#define OBJFLAG_CHOPPER_INACTIVE 0x80000000 // Or lift disabled, or hovercar something
#define OBJFLAG_DOOR_TWOWAY 0x80000000 // Door swings in both directions
// obj->flags2
#define OBJFLAG2_00000001 0x00000001 // Used only in CI Training
#define OBJFLAG2_00000002 0x00000002 // Ruins spikes
#define OBJFLAG2_SKIPDOORLOCKEDMSG 0x00000004
#define OBJFLAG2_00000008 0x00000008 // Editor: "Don't load in Multiplayer"
#define OBJFLAG2_EXCLUDE_A 0x00000010
#define OBJFLAG2_EXCLUDE_SA 0x00000020
#define OBJFLAG2_EXCLUDE_PA 0x00000040
#define OBJFLAG2_EXCLUDE_PD 0x00000080
#define OBJFLAG2_00000100 0x00000100 // Editor: "Immobile"
#define OBJFLAG2_00000200 0x00000200 // Editor: "Mines"
#define OBJFLAG2_LINKEDTOSAFE 0x00000400 // Applied to safe door and item
#define OBJFLAG2_INTERACTCHECKLOS 0x00000800 // Check line of sight when attempting to interact with object
#define OBJFLAG2_PICKUPWITHOUTLOS 0x00001000 // Object can be picked up without having line of sight
#define OBJFLAG2_REMOVEWHENDESTROYED 0x00002000
#define OBJFLAG2_IMMUNETOGUNFIRE 0x00004000
#define OBJFLAG2_SHOOTTHROUGH 0x00008000
#define OBJFLAG2_DRAWONTOP 0x00010000
#define OBJFLAG2_00020000 0x00020000 // G5 mine, Air Base mine
#define OBJFLAG2_00040000 0x00040000 // Only used in CI training
#define OBJFLAG2_INVISIBLE 0x00080000
#define OBJFLAG2_BULLETPROOF 0x00100000 // Only magnum and FarSight can shoot through it
#define OBJFLAG2_00200000 0x00200000 // Editor: "Immune to Explosions" (Ruins spikes)
#define OBJFLAG2_EXCLUDE_2P 0x00400000
#define OBJFLAG2_EXCLUDE_3P 0x00800000
#define OBJFLAG2_EXCLUDE_4P 0x01000000
#define OBJFLAG2_THROWTHROUGH 0x02000000 // Rockets/mines/grenades etc pass through object
#define OBJFLAG2_04000000 0x04000000 // Used quite a lot - gravity?
#define OBJFLAG2_LOCKEDFRONT 0x08000000 // One-way door lock
#define OBJFLAG2_LOCKEDBACK 0x10000000 // One-way door lock
#define OBJFLAG2_AICANNOTUSE 0x20000000
#define OBJFLAG2_AIRLOCKDOOR 0x40000000 // Door waits for sibling to close before it can open
#define OBJFLAG2_80000000 0x80000000 // Attack Ship glass
#define OBJFLAG2_WEAPON_HUGEEXP 0x80000000
// obj->flags3
#define OBJFLAG3_PUSHABLE 0x00000001
#define OBJFLAG3_GRABBABLE 0x00000002
#define OBJFLAG3_DOOR_STICKY 0x00000004 // eg. Skedar Ruins
#define OBJFLAG3_00000008 0x00000008 // Not used in scripts
#define OBJFLAG3_00000010 0x00000010 // Used heaps
#define OBJFLAG3_AUTOCUTSCENESOUNDS 0x00000020 // For doors and objs - play default open/close noises
#define OBJFLAG3_RTRACKED_YELLOW 0x00000040
#define OBJFLAG3_CANHARDFREE 0x00000080 // Can free prop while on screen (MP weapons only)
#define OBJFLAG3_HARDFREEING 0x00000100
#define OBJFLAG3_00000200 0x00000200 // Not used in scripts
#define OBJFLAG3_WALKTHROUGH 0x00000400
#define OBJFLAG3_RTRACKED_BLUE 0x00000800
#define OBJFLAG3_SHOWSHIELD 0x00001000 // Show shield effect around object (always)
#define OBJFLAG3_HTMTERMINAL 0x00002000 // Terminal for Hacker Central scenario (HTM = Hack That Mac)
#define OBJFLAG3_ISFETCHTARGET 0x00004000 // AI bot is fetching this obj
#define OBJFLAG3_REACTTOSIGHT 0x00008000 // Turn sight blue or red when targeted with R
#define OBJFLAG3_INTERACTABLE 0x00010000
#define OBJFLAG3_SHIELDHIT 0x00020000 // Turns off when shield no longer visible
#define OBJFLAG3_RENDERPOSTBG 0x00040000
#define OBJFLAG3_DRAWONTOP 0x00080000
#define OBJFLAG3_HOVERBEDSHIELD 0x00100000
#define OBJFLAG3_INTERACTSHORTRANGE 0x00200000
#define OBJFLAG3_PLAYERUNDROPPABLE 0x00400000 // Player does not drop item when dead
#define OBJFLAG3_00800000 0x00800000 // Not used in scripts
#define OBJFLAG3_01000000 0x01000000 // Not used in scripts
#define OBJFLAG3_GEOTYPE3 0x02000000 // If set then obj uses tiletype3 else tiletype2
#define OBJFLAG3_04000000 0x04000000 // Not used in scripts
#define OBJFLAG3_08000000 0x08000000 // Not used in scripts
#define OBJFLAG3_10000000 0x10000000 // Editor: "Keep Collisions After Fully Destroyed"
#define OBJFLAG3_ONSHELF 0x20000000 // Obj is on a shelf - use bigger pickup range for Small Jo and Play as Elvis cheats and skip line of sight checks
#define OBJFLAG3_INFRARED 0x40000000 // Obj is highlighted on IR scanner
#define OBJFLAG3_80000000 0x80000000 // Not used in scripts
// obj->hidden
#define OBJHFLAG_LIFTDOOR 0x00000001
#define OBJHFLAG_00000002 0x00000002
#define OBJHFLAG_REAPABLE 0x00000004
#define OBJHFLAG_ISRETICK 0x00000008
#define OBJHFLAG_TAGGED 0x00000010
#define OBJHFLAG_00000020 0x00000020 // thrown knife
#define OBJHFLAG_HANGINGMONITOR 0x00000040
#define OBJHFLAG_AIRBORNE 0x00000080
#define OBJHFLAG_00000100 0x00000100
#define OBJHFLAG_00000200 0x00000200
#define OBJHFLAG_HASTEXTOVERRIDE 0x00000400
#define OBJHFLAG_00000800 0x00000800
#define OBJHFLAG_00001000 0x00001000
#define OBJHFLAG_PADLOCKEDDOOR 0x00002000
#define OBJHFLAG_ACTIVATED_BY_BOND 0x00004000
#define OBJHFLAG_00008000 0x00008000
#define OBJHFLAG_00010000 0x00010000
#define OBJHFLAG_00020000 0x00020000
#define OBJHFLAG_ACTIVATED_BY_COOP 0x00040000
#define OBJHFLAG_HASOWNER 0x00080000
#define OBJHFLAG_SUSPICIOUS 0x00100000
#define OBJHFLAG_OCCUPIEDCHAIR 0x00200000
#define OBJHFLAG_PERIMDISABLED 0x00400000
#define OBJHFLAG_DOORPERIMDISABLED 0x00800000
#define OBJHFLAG_CONDITIONALSCENERY 0x01000000 // Set on triggers, exp and unexp
#define OBJHFLAG_02000000 0x02000000
#define OBJHFLAG_MOUNTED 0x04000000 // for hoverbike
#define OBJHFLAG_GRABBED 0x08000000
#define OBJHFLAG_20000000 0x20000000 // upper nibble might be a single 4-bit value
// obj->hidden2
#define OBJH2FLAG_RENDEROPAQUE 0x01
#define OBJH2FLAG_RENDERALPHA 0x02 // must be immediately after OBJH2FLAG_RENDEROPAQUE
#define OBJH2FLAG_CANREGEN 0x04
#define OBJH2FLAG_08 0x08
#define OBJH2FLAG_10 0x10
#define OBJH2FLAG_DESTROYED 0x40
#define OBJH2FLAG_80 0x80
#define OBJTYPE_DOOR 0x01
#define OBJTYPE_DOORSCALE 0x02
#define OBJTYPE_BASIC 0x03
#define OBJTYPE_KEY 0x04
#define OBJTYPE_ALARM 0x05
#define OBJTYPE_CCTV 0x06
#define OBJTYPE_AMMOCRATE 0x07
#define OBJTYPE_WEAPON 0x08
#define OBJTYPE_CHR 0x09
#define OBJTYPE_SINGLEMONITOR 0x0a
#define OBJTYPE_MULTIMONITOR 0x0b
#define OBJTYPE_HANGINGMONITORS 0x0c
#define OBJTYPE_AUTOGUN 0x0d
#define OBJTYPE_LINKGUNS 0x0e
#define OBJTYPE_DEBRIS 0x0f
#define OBJTYPE_10 0x10
#define OBJTYPE_HAT 0x11
#define OBJTYPE_GRENADEPROB 0x12
#define OBJTYPE_LINKLIFTDOOR 0x13
#define OBJTYPE_MULTIAMMOCRATE 0x14
#define OBJTYPE_SHIELD 0x15
#define OBJTYPE_TAG 0x16
#define OBJTYPE_BEGINOBJECTIVE 0x17
#define OBJTYPE_ENDOBJECTIVE 0x18
#define OBJECTIVETYPE_DESTROYOBJ 0x19
#define OBJECTIVETYPE_COMPFLAGS 0x1a
#define OBJECTIVETYPE_FAILFLAGS 0x1b
#define OBJECTIVETYPE_COLLECTOBJ 0x1c
#define OBJECTIVETYPE_THROWOBJ 0x1d
#define OBJECTIVETYPE_HOLOGRAPH 0x1e
#define OBJECTIVETYPE_1F 0x1f
#define OBJECTIVETYPE_ENTERROOM 0x20
#define OBJECTIVETYPE_ATTACHOBJ 0x21
#define OBJTYPE_22 0x22
#define OBJTYPE_BRIEFING 0x23
#define OBJTYPE_GASBOTTLE 0x24
#define OBJTYPE_RENAMEOBJ 0x25
#define OBJTYPE_PADLOCKEDDOOR 0x26
#define OBJTYPE_TRUCK 0x27
#define OBJTYPE_HELI 0x28
#define OBJTYPE_29 0x29
#define OBJTYPE_GLASS 0x2a
#define OBJTYPE_SAFE 0x2b
#define OBJTYPE_SAFEITEM 0x2c
#define OBJTYPE_TANK 0x2d
#define OBJTYPE_CAMERAPOS 0x2e
#define OBJTYPE_TINTEDGLASS 0x2f
#define OBJTYPE_LIFT 0x30
#define OBJTYPE_CONDITIONALSCENERY 0x31
#define OBJTYPE_BLOCKEDPATH 0x32
#define OBJTYPE_HOVERBIKE 0x33
#define OBJTYPE_END 0x34
#define OBJTYPE_HOVERPROP 0x35 // Hovercrates and hoverbeds
#define OBJTYPE_FAN 0x36
#define OBJTYPE_HOVERCAR 0x37 // Datadyne cars, Chicago taxi and limo, and hoverbots
#define OBJTYPE_PADEFFECT 0x38
#define OBJTYPE_CHOPPER 0x39 // Extraction hovercopter and A51 interceptors
#define OBJTYPE_MINE 0x3a
#define OBJTYPE_ESCASTEP 0x3b
#define OPERATOR_LESS_THAN 0
#define OPERATOR_GREATER_THAN 1
#define OPTION_FORWARDPITCH 0x0001
#define OPTION_LOOKAHEAD 0x0002
#define OPTION_SIGHTONSCREEN 0x0004
#define OPTION_AUTOAIM 0x0008
#define OPTION_AIMCONTROL 0x0010
#define OPTION_AMMOONSCREEN 0x0020
#define OPTION_SHOWGUNFUNCTION 0x0040
#define OPTION_HEADROLL 0x0080
#define OPTION_0100 0x0100
#define OPTION_ALWAYSSHOWTARGET 0x0200
#define OPTION_SHOWZOOMRANGE 0x0400
#define OPTION_PAINTBALL 0x0800
#define OPTION_ASKEDSAVEPLAYER 0x4000
#define OPTION_SHOWMISSIONTIME 0x8000
#define OUTFIT_DEFAULT 0x00
#define OUTFIT_ELVIS 0x01
#define OUTFIT_TRENT 0x02 // unused
#define OUTFIT_TRENCH 0x03
#define OUTFIT_FROCK_RIPPED 0x04
#define OUTFIT_FROCK 0x05
#define OUTFIT_LEATHER 0x06
#define OUTFIT_DEEPSEA 0x07
#define OUTFIT_WETSUIT 0x08
#define OUTFIT_SNOW 0x09
#define OUTFIT_LAB 0x0a
#define OUTFIT_STEWARDESS 0x0b
#define OUTFIT_MRBLONDE 0x0c
#define OUTFIT_MAIAN 0x0d
#define OUTFIT_NEGOTIATOR 0x0e // unused by scripts
#define PAD_PRESET 9000
#define PADEFFECT_SPARKS 0
#define PADEFFECT_01 1 // Unimplemented
#define PADEFFECT_SPLASH 2
#define PADEFFECT_SPARKS2 3 // Same as PADEFFECT_SPARKS
#define PADEFFECT_SMOKE 4
#define PADEFFECT_OUTROSMOKE 5 // Like smoke, but only shows in cutscenes and only if all objectives are complete
#define PADFIELD_POS 0x0002
#define PADFIELD_LOOK 0x0004
#define PADFIELD_UP 0x0008
#define PADFIELD_NORMAL 0x0010
#define PADFIELD_BBOX 0x0020
#define PADFIELD_ROOM 0x0040
#define PADFIELD_FLAGS 0x0080
#define PADFIELD_LIFT 0x0100
#define PADFLAG_INTPOS 0x0001
#define PADFLAG_UPALIGNTOX 0x0002
#define PADFLAG_UPALIGNTOY 0x0004
#define PADFLAG_UPALIGNTOZ 0x0008
#define PADFLAG_UPALIGNINVERT 0x0010
#define PADFLAG_LOOKALIGNTOX 0x0020
#define PADFLAG_LOOKALIGNTOY 0x0040
#define PADFLAG_LOOKALIGNTOZ 0x0080
#define PADFLAG_LOOKALIGNINVERT 0x0100
#define PADFLAG_HASBBOXDATA 0x0200
#define PADFLAG_AIWAITLIFT 0x0400
#define PADFLAG_AIONLIFT 0x0800
#define PADFLAG_AIWALKDIRECT 0x1000
#define PADFLAG_AIDROP 0x2000
#define PADFLAG_AIDUCK 0x4000
#define PADFLAG_8000 0x8000
#define PADFLAG_10000 0x10000
#define PADFLAG_20000 0x20000
#define PAK010_00 0
#define PAK010_01 1
#define PAK010_02 2
#define PAK010_03 3
#define PAK010_04 4
#define PAK010_05 5
#define PAK010_06 6
#define PAK010_07 7
#define PAK010_08 8
#define PAK010_09 9
#define PAK010_10 10
#define PAK010_11 11
#define PAK010_12 12
#define PAK010_13 13
#define PAK010_14 14
#define PAK010_15 15
#define PAK010_16 16
#define PAK010_17 17
#define PAK010_18 18
#define PAK010_19 19
#define PAK010_20 20
#define PAK010_21 21
#define PAK010_22 22
#define PAK010_24 24
#define PAK010_25 25
#define PAK010_26 26
#define PAK010_27 27
#define PAK_ERR1_OK 0
#define PAK_ERR1_NOPAK PFS_ERR_NOPACK /* no memory card is plugged */
#define PAK_ERR1_NEWPAK PFS_ERR_NEW_PACK /* ram pack has been changed to a different one */
#define PAK_ERR1_INCONSISTENT PFS_ERR_INCONSISTENT /* need to run Pfschecker */
#define PAK_ERR1_CONTRFAIL PFS_ERR_CONTRFAIL
#define PAK_ERR1_INVALID PFS_ERR_INVALID /* invalid parameter or file not exist */
#define PAK_ERR1_BADDATA PFS_ERR_BAD_DATA /* the data read from pack are bad */
#define PAK_ERR1_DATAFULL PFS_DATA_FULL /* no free pages on ram pack */
#define PAK_ERR1_DIRFULL PFS_DIR_FULL /* no free directories on ram pack */
#define PAK_ERR1_EXIST PFS_ERR_EXIST /* file exists */
#define PAK_ERR1_IDFATAL PFS_ERR_ID_FATAL /* dead ram pack */
#define PAK_ERR1_DEVICE PFS_ERR_DEVICE /* wrong device type */
#define PAK_ERR1_NOGBCART PFS_ERR_NO_GBCART /* no gb cartridge (64GB-PAK) */
#define PAK_ERR1_NEWGBCART PFS_ERR_NEW_GBCART /* gb cartridge may be changed */
#define PAK_ERR1_EEPROMMISSING 0x80
#define PAK_ERR1_EEPROMREADFAILED 0x81
#define PAK_ERR1_EEPROMWRITEFAILED 0x82
#define PAK_ERR1_EEPROMINVALIDOP 0x83
#define PAK_ERR1_EEPROMINVALIDARG 0x84
#define PAK_ERR2_OK 0 /* no error */
#define PAK_ERR2_NOPAK 1 /* pak is not inserted */
#define PAK_ERR2_BADOFFSET 4 /* offset given is out of range */
#define PAK_ERR2_CHECKSUM 7 /* checksum mismatch */
#define PAK_ERR2_VERSION 9 /* file is for a different version (0 or 1) */
#define PAK_ERR2_CORRUPT 11 /* cache error or file is zero len */
#define PAK_ERR2_INCOMPLETE 15 /* previous write did not complete */
#define PAKFILETYPE_001 0x001 // Unused
#define PAKFILETYPE_BLANK 0x002 // Blank space (ie. deleted file)
#define PAKFILETYPE_TERMINATOR 0x004 // Marks the end of the device's filesystem
#define PAKFILETYPE_CAMERA 0x008 // PerfectHead File
#define PAKFILETYPE_BOSS 0x010 // EEPROM only, one per cart (stores language, MP team names, selected MP soundtracks)
#define PAKFILETYPE_MPPLAYER 0x020 // Combat Simulator Player File
#define PAKFILETYPE_MPSETUP 0x040 // Combat Simulator Settings File
#define PAKFILETYPE_GAME 0x080 // Single Player Agent File
#define PAKFILETYPE_ALL 0x100 // Not really a file type
#define PAKTYPE_NONE 0
#define PAKTYPE_RUMBLE 1
#define PAKTYPE_MEMORY 2
#define PAKTYPE_GAMEBOY 3
#define PATHFLAG_CIRCULAR 1
#define PATHFLAG_FLYING 2
#define PATHFLAG_INUSE 4
#define PAUSEMODE_UNPAUSED 0
#define PAUSEMODE_PAUSING 1
#define PAUSEMODE_PAUSED 3
#define PAUSEMODE_UNPAUSING 5
#define PDMODEPROP_REACTION 0
#define PDMODEPROP_HEALTH 1
#define PDMODEPROP_DAMAGE 2
#define PDMODEPROP_ACCURACY 3
#define PORTALCMD_END 0x00
#define PORTALCMD_PUSH 0x01
#define PORTALCMD_POP 0x02
#define PORTALCMD_AND 0x03
#define PORTALCMD_OR 0x04
#define PORTALCMD_NOT 0x05
#define PORTALCMD_XOR 0x06
#define PORTALCMD_14 0x14
#define PORTALCMD_SETMODEVIS 0x1e
#define PORTALCMD_1F 0x1f
#define PORTALCMD_20 0x20
#define PORTALCMD_SETMODEINVIS 0x21
#define PORTALCMD_22 0x22
#define PORTALCMD_23 0x23
#define PORTALCMD_DISABLEROOM 0x24
#define PORTALCMD_DISABLEROOMRANGE 0x25
#define PORTALCMD_LOADROOM 0x26
#define PORTALCMD_LOADROOMRANGE 0x27
#define PORTALCMD_28 0x28
#define PORTALCMD_29 0x29
#define PORTALCMD_2A 0x2a
#define PORTALCMD_50 0x50
#define PORTALCMD_51 0x51
#define PORTALCMD_ENABLEPARENTEXEC 0x52
#define PORTALCMD_IF 0x5a
#define PORTALCMD_TOGGLEEXEC 0x5b
#define PORTALCMD_ENDIF 0x5c
#define PORTALCMD_64 0x64
#define PORTALCMD_TRAILER 0x65
#define PORTALFLAG_ENABLED 0x01
#define PORTALFLAG_04 0x04
#define PORTALMODE_SHOW 0
#define PORTALMODE_HIDE 1
#define PRESETANIM_TALK0 0
#define PRESETANIM_TALK1 1
#define PRESETANIM_TALK2 2
#define PRESETANIM_TALK3 3
#define PRESETANIM_TALK4 4
#define PRESETANIM_TALK5 5
#define PRESETANIM_TALK6 6
#define PRESETANIM_TALK7 7
#define PRESETANIM_GUNJAM 254
#define PRESETANIM_TALKRANDOM 255
#define PROFILE_MAINTICK_END 0x10000
#define PROFILE_RSP_END 0x10001
#define PROFILE_RDP_END 0x10002
#define PROFILE_MAINTICK_START 0x20000
#define PROFILE_RDP_START2 0x20002
#define PROFILE_AUDIOFRAME_START 0x30000
#define PROFILE_RSP_START 0x30001
#define PROFILE_RDP_START1 0x40001
#define PROFILE_AUDIOFRAME_END 0x60000
#define PROJECTILEFLAG_00000001 0x00000001
#define PROJECTILEFLAG_00000002 0x00000002
#define PROJECTILEFLAG_00000004 0x00000004
#define PROJECTILEFLAG_00000010 0x00000010
#define PROJECTILEFLAG_00000080 0x00000080
#define PROJECTILEFLAG_00000400 0x00000400
#define PROJECTILEFLAG_00000800 0x00000800
#define PROJECTILEFLAG_00001000 0x00001000
#define PROJECTILEFLAG_00002000 0x00002000
#define PROJECTILEFLAG_00004000 0x00004000
#define PROJECTILEFLAG_40000000 0x40000000
#define PROJECTILEFLAG_FREE 0x80000000
#define PROPFLAG_RENDERPOSTBG 0x01
#define PROPFLAG_ONTHISSCREENTHISTICK 0x02
#define PROPFLAG_ENABLED 0x04
#define PROPFLAG_NOTYETTICKED 0x08
#define PROPFLAG_DONTPAUSE 0x10
#define PROPFLAG_DRAWONTOP 0x20
#define PROPFLAG_ONANYSCREENTHISTICK 0x40
#define PROPFLAG_ONANYSCREENPREVTICK 0x80
#define PROPTYPE_OBJ 1
#define PROPTYPE_DOOR 2
#define PROPTYPE_CHR 3
#define PROPTYPE_WEAPON 4
#define PROPTYPE_EYESPY 5
#define PROPTYPE_PLAYER 6
#define PROPTYPE_EXPLOSION 7
#define PROPTYPE_SMOKE 8
#define QUADRANT_BACK 0x01
#define QUADRANT_SIDE1 0x02
#define QUADRANT_SIDE2 0x04
#define QUADRANT_FRONT 0x08
#define QUADRANT_2NDWPTOTARGET 0x10 // second waypoint on route to target
#define QUADRANT_20 0x20
#define QUIP_ATTACK1 0
#define QUIP_ATTACK2 1
#define QUIP_GOTOCOVER1 2
#define QUIP_GRENADE1 3
#define QUIP_RETREAT1 4
#define QUIP_GRENADE2 5
#define QUIP_RETREAT2 6
#define QUIP_FLANK 7
#define QUIP_SURRENDER 8
#define QUIP_HEARNOISE 9
#define QUIP_10 10
#define QUIP_SEEPLAYER 11
#define QUIP_SHOTUNALERT 12
#define QUIP_INJURED1 13
#define QUIP_INJURED2 14
#define QUIP_KILLEDPLAYER1 15
#define QUIP_WARNFRIENDS 16
#define QUIP_17 17
#define QUIP_SURPRISED 18
#define QUIP_INSPECTBODY 19
#define QUIP_20 20
#define QUIP_HITPLAYER 21
#define QUIP_MISSEDPLAYER1 22
#define QUIP_MISSEDPLAYER2 23
#define QUIP_GOTOCOVER2 24
#define QUIP_DIE 25
#define QUIP_26 26
#define QUIP_SEARCHSUCCESS 27
#define QUIP_SEEEYESPY 28
#define QUIP_GREETING 29
#define QUIP_ASKWEAPON1 30
#define QUIP_ASKWEAPON2 31
#define QUIP_UNCOVERDISGUISE1 32
#define QUIP_LOSTGUN 33
#define QUIP_GOFORALARM 34
#define QUIP_SEARCHFAIL 35
#define QUIP_ATTACK3 36
#define QUIP_ATTACK4 37
#define QUIP_KILLEDPLAYER2 38
#define QUIP_GUNJAMMED 39
#define QUIP_UNCOVEREDDISGUISE2 40
#define RACE_HUMAN 0
#define RACE_SKEDAR 1
#define RACE_DRCAROLL 2
#define RACE_EYESPY 3
#define RACE_ROBOT 4
#define RENDERPASS_OPAQUE_PREBG 0
#define RENDERPASS_ALPHA 1
#define RENDERPASS_OPAQUE_POSTBG 2
#define ROOMFLAG_FORCEDISABLED 0x0001
#define ROOMFLAG_0002 0x0002
#define ROOMFLAG_VISIBLEBYPLAYER 0x0004
#define ROOMFLAG_VISIBLEBYAIBOT 0x0008
#define ROOMFLAG_0010 0x0010
#define ROOMFLAG_0020 0x0020
#define ROOMFLAG_0040 0x0040
#define ROOMFLAG_RENDERALWAYS 0x0080
#define ROOMFLAG_DIRTY 0x0100
#define ROOMFLAG_0200 0x0200
#define ROOMFLAG_0800 0x0800
#define ROOMFLAG_1000 0x1000
#define ROOMFLAG_LIGHTSOFF 0x2000
#define ROOMFLAG_PLAYAMBIENTTRACK 0x4000
#define ROOMFLAG_OUTDOORS 0x8000
#define RUMBLESTATE_1 1
#define RUMBLESTATE_ENABLED_STOPPED 2
#define RUMBLESTATE_ENABLED_STARTING 3
#define RUMBLESTATE_ENABLED_RUMBLING 4
#define RUMBLESTATE_ENABLED_STOPPING 5
#define RUMBLESTATE_DISABLED_STOPPING 6
#define RUMBLESTATE_DISABLED_STOPPED 7
#define RUMBLESTATE_ENABLING 8
#define SAVEDEVICE_CONTROLLERPAK1 0
#define SAVEDEVICE_CONTROLLERPAK2 1
#define SAVEDEVICE_CONTROLLERPAK3 2
#define SAVEDEVICE_CONTROLLERPAK4 3
#define SAVEDEVICE_GAMEPAK 4
#define SAVEDEVICE_INVALID 5
#define SCREENRATIO_NORMAL 0
#define SCREENRATIO_16_9 1
#define SCREENSIZE_FULL 0
#define SCREENSIZE_WIDE 1
#define SCREENSIZE_CINEMA 2
#define SCREENSPLIT_HORIZONTAL 0
#define SCREENSPLIT_VERTICAL 1
#define SHARDTYPE_GLASS 0
#define SHARDTYPE_BOTTLE 1
#define SHARDTYPE_WOOD 2
#define SHOTREGION_TOTAL 0
#define SHOTREGION_HEAD 1
#define SHOTREGION_BODY 2
#define SHOTREGION_LIMB 3
#define SHOTREGION_GUN 4
#define SHOTREGION_HAT 5
#define SHOTREGION_OBJECT 6
#define SIGHT_DEFAULT 0
#define SIGHT_CLASSIC 1
#define SIGHT_2 2
#define SIGHT_3 3
#define SIGHT_SKEDAR 4
#define SIGHT_ZOOM 5
#define SIGHT_MAIAN 6
#define SIGHT_NONE 7
#define SIGHTTARGET_0 0
#define SIGHTTARGET_1 1
#define SIGHTTARGET_2 2
#define SIGHTTARGET_3 3
#define SIGHTTARGET_4 4
#define SIGHTTARGET_5 5
#define SKEL_BASIC 0x02
#define SKEL_CHRGUN 0x03
#define SKEL_JOYPAD 0x04
#define SKEL_UZI 0x05
#define SKEL_06 0x06
#define SKEL_CLASSICGUN 0x07
#define SKEL_CASING 0x08
#define SKEL_CHR 0x09
#define SKEL_0A 0x0a
#define SKEL_0B 0x0b
#define SKEL_0C 0x0c
#define SKEL_HEAD 0x0d
#define SKEL_CCTV 0x0f
#define SKEL_WINDOWEDDOOR 0x10
#define SKEL_11 0x11
#define SKEL_12 0x12
#define SKEL_13 0x13
#define SKEL_TERMINAL 0x14
#define SKEL_CIHUB 0x15
#define SKEL_AUTOGUN 0x16
#define SKEL_17 0x17
#define SKEL_18 0x18
#define SKEL_19 0x19
#define SKEL_LIFT 0x1b
#define SKEL_SKEDAR 0x1c
#define SKEL_LOGO 0x1d
#define SKEL_PDLOGO 0x1e
#define SKEL_HOVERBIKE 0x1f
#define SKEL_20 0x20
#define SKEL_21 0x21
#define SKEL_22 0x22
#define SKEL_LAPTOPGUN 0x23
#define SKEL_K7AVENGER 0x24
#define SKEL_FALCON2 0x25
#define SKEL_KNIFE 0x26
#define SKEL_CHOPPER 0x27
#define SKEL_DRCAROLL 0x28
#define SKEL_ROPE 0x29
#define SKEL_HUDPIECE 0x2a
#define SKEL_RARELOGO 0x2c
#define SKEL_JUMPSHIP 0x32
#define SKEL_BANNER 0x33
#define SKEL_ROBOT 0x34
#define SKEL_CABLECAR 0x3c
#define SKEL_SUBMARINE 0x43
#define SKEL_MAIANUFO 0x44
#define SKEL_SKSHUTTLE 0x45
#define SKEL_CMP150 0x46
#define SKEL_DRAGON 0x47
#define SKEL_SUPERDRAGON 0x48
#define SKEL_ROCKET 0x49
#define SKEL_4A 0x4a
#define SKEL_SHOTGUN 0x4b
#define SKEL_FARSIGHT 0x4c
#define SKEL_4D 0x4d
#define SKEL_REAPER 0x4e
#define SKEL_DROPSHIP 0x4f
#define SKEL_MAULER 0x64
#define SKEL_DEVASTATOR 0x65
#define SKEL_PISTOL 0x66
#define SKEL_AR34 0x67
#define SKEL_MAGNUM 0x68
#define SKEL_SLAYERROCKET 0x69
#define SKEL_CYCLONE 0x6a
#define SKEL_SNIPERRIFLE 0x6b
#define SKEL_TRANQUILIZER 0x6c
#define SKEL_CROSSBOW 0x6d
#define SKEL_TIMEDPROXYMINE 0x6e
#define SKEL_PHOENIX 0x6f
#define SKEL_CALLISTO 0x70
#define SKEL_RCP120 0x71
#define SKEL_LASER 0x72
#define SKEL_GRENADE 0x73
#define SKEL_ECMMINE 0x74
#define SKEL_UPLINK 0x75
#define SKEL_REMOTEMINE 0x76
#define SKEL_TARGET 0x8c
#define SKEL_BB 0xbb
#define SKEL_WIREFENCE 0xc8
#define SKEL_HAND 0xfa
#define SKJUMPSTATE_TAKEOFF 0
#define SKJUMPSTATE_AIRBORNE 1
#define SLOWMOTION_OFF 0
#define SLOWMOTION_ON 1
#define SLOWMOTION_SMART 2
#define SMOKETYPE_NONE 0
#define SMOKETYPE_ELECTRICAL 1 // Dr Caroll, mainframes in Infiltration bunker
#define SMOKETYPE_MINI 2 // Phoenix, Laptop sentry
#define SMOKETYPE_3 3
#define SMOKETYPE_SMALL 4 // SuperDragon grenades, some barrels and autoguns
#define SMOKETYPE_MEDIUM 5 // Maian SOS hoverbed
#define SMOKETYPE_LARGE 6 // Rockets, mines etc
#define SMOKETYPE_BULLETIMPACT 7
#define SMOKETYPE_ROCKETTAIL 8
#define SMOKETYPE_GRENADETAIL 9
#define SMOKETYPE_HOMINGTAIL 11
#define SMOKETYPE_SKCORPSE 13
#define SMOKETYPE_MUZZLE_PISTOL 15
#define SMOKETYPE_MUZZLE_REAPER 16
#define SMOKETYPE_MUZZLE_AUTOMATIC 17
#define SMOKETYPE_MUZZLE_SHOTGUN 18
#define SMOKETYPE_PINBALL 19 // Grenade in proxy pinball mode
#define SMOKETYPE_WATER 20 // Splash effect in Chicago
#define SMOKETYPE_DEBRIS 21 // Crash site cockpit, Skedar Ruins outro
#define SMOKETYPE_UFO 22 // AF1 outro
#define SNDSTATEFLAG_01 0x01
#define SNDSTATEFLAG_02 0x02
#define SNDSTATEFLAG_04 0x04
#define SNDSTATEFLAG_10 0x10
#define SNDSTATEFLAG_20 0x20
#define SOLOSTAGEINDEX_DEFECTION 0x00
#define SOLOSTAGEINDEX_INVESTIGATION 0x01
#define SOLOSTAGEINDEX_EXTRACTION 0x02
#define SOLOSTAGEINDEX_VILLA 0x03
#define SOLOSTAGEINDEX_CHICAGO 0x04
#define SOLOSTAGEINDEX_G5BUILDING 0x05
#define SOLOSTAGEINDEX_INFILTRATION 0x06
#define SOLOSTAGEINDEX_RESCUE 0x07
#define SOLOSTAGEINDEX_ESCAPE 0x08
#define SOLOSTAGEINDEX_AIRBASE 0x09
#define SOLOSTAGEINDEX_AIRFORCEONE 0x0a
#define SOLOSTAGEINDEX_CRASHSITE 0x0b
#define SOLOSTAGEINDEX_PELAGIC 0x0c
#define SOLOSTAGEINDEX_DEEPSEA 0x0d
#define SOLOSTAGEINDEX_DEFENSE 0x0e
#define SOLOSTAGEINDEX_ATTACKSHIP 0x0f
#define SOLOSTAGEINDEX_SKEDARRUINS 0x10
#define SOLOSTAGEINDEX_MBR 0x11
#define SOLOSTAGEINDEX_MAIANSOS 0x12
#define SOLOSTAGEINDEX_WAR 0x13
#define SOLOSTAGEINDEX_DUEL 0x14
#define SOUNDMODE_MONO 0
#define SOUNDMODE_STEREO 1
#define SOUNDMODE_HEADPHONE 2
#define SOUNDMODE_SURROUND 3
#define SPARKTYPE_00 0x00
#define SPARKTYPE_01 0x01
#define SPARKTYPE_02 0x02
#define SPARKTYPE_03 0x03
#define SPARKTYPE_04 0x04
#define SPARKTYPE_09 0x09
#define SPARKTYPE_0A 0x0a
#define SPARKTYPE_0C 0x0c
#define SPARKTYPE_0B 0x0b
#define SPARKTYPE_0D 0x0d
#define SPARKTYPE_0F 0x0f
#define SPARKTYPE_16 0x16
#define SPARKTYPE_17 0x17
#define SPARKTYPE_18 0x18
#define SPARKTYPE_19 0x19
#define SPARKTYPE_1A 0x1a
#define SPAWNFLAG_FORCESUNGLASSES 0x00000001 // 100% chance of wearing sunglasses if head model supports it
#define SPAWNFLAG_MAYBESUNGLASSES 0x00000002 // 50% chance of wearing sunglasses if head model supports it
#define SPAWNFLAG_INVINCIBLE 0x00000008
#define SPAWNFLAG_00000010 0x00000010
#define SPAWNFLAG_ONLYONA 0x00000020
#define SPAWNFLAG_ONLYONSA 0x00000040
#define SPAWNFLAG_ONLYONPA 0x00000080
#define SPAWNFLAG_IGNORECOLLISION 0x00000100 // For initial chr placement only
#define SPAWNFLAG_00000200 0x00000200
#define SPAWNFLAG_ANTINONINTERACTABLE 0x00000400
#define SPAWNFLAG_DONTSHOOTME 0x00000800
#define SPAWNFLAG_HIDDEN 0x00001000
#define SPAWNFLAG_NOBLOOD 0x00002000
#define SPAWNFLAG_FIXEDHEIGHT 0x00004000 // By default, chr heights vary slightly. This disables it.
#define SPAWNFLAG_RTRACKED 0x00008000
#define SPAWNFLAG_BLUESIGHT 0x00010000
#define SPEAKERMODE_MONO 1
#define SPEAKERMODE_STEREO 2
#define SPEAKERMODE_HEADPHONE 3
#define SPEAKERMODE_SURROUND 4
#define SPECIALDIE_NONE 0
#define SPECIALDIE_FALLBACK 1
#define SPECIALDIE_ROLL1 2
#define SPECIALDIE_ROLL2 3
#define SPECIALDIE_ROLL3 4
#define SPECIALDIE_OVERRAILING 5
#define SPECIALDIE_ONCHAIR 6
#define SPEED_WALK 0
#define SPEED_JOG 1
#define SPEED_RUN 2
#define SQUADRON_00 0x00
#define SQUADRON_01 0x01
#define SQUADRON_02 0x02
#define SQUADRON_03 0x03
#define SQUADRON_04 0x04
#define SQUADRON_05 0x05
#define SQUADRON_06 0x06
#define SQUADRON_07 0x07
#define SQUADRON_08 0x08
#define SQUADRON_09 0x09
#define SQUADRON_0A 0x0a
#define SQUADRON_0B 0x0b
#define SQUADRON_0C 0x0c
#define SQUADRON_0D 0x0d
#define SQUADRON_0E 0x0e
#define SQUADRON_0F 0x0f
#define STACKSIZE_RMON 0x300
#define STACKSIZE_IDLE 0x40
#define STACKSIZE_SCHED 0x400
#define STACKSIZE_MAIN 0x9800
#define STACKSIZE_AUDIO 0x1000
#define STACKSIZE_FAULT 0x2000
#define STACKSIZE_RESET 0x100
#define STAGE_MP_RANDOM 0x01
#define STAGE_MAIANSOS 0x09
#define STAGE_TEST_SILO 0x14
#define STAGE_WAR 0x16
#define STAGE_MP_RAVINE 0x17
#define STAGE_TEST_ARCH 0x18
#define STAGE_ESCAPE 0x19
#define STAGE_TEST_DEST 0x1a
#define STAGE_RETAKING 0x1b
#define STAGE_CRASHSITE 0x1c
#define STAGE_CHICAGO 0x1d
#define STAGE_G5BUILDING 0x1e
#define STAGE_MP_COMPLEX 0x1f
#define STAGE_MP_G5BUILDING 0x20
#define STAGE_PELAGIC 0x21
#define STAGE_EXTRACTION 0x22
#define STAGE_TEST_RUN 0x23
#define STAGE_24 0x24
#define STAGE_MP_TEMPLE 0x25
#define STAGE_CITRAINING 0x26
#define STAGE_AIRBASE 0x27
#define STAGE_28 0x28
#define STAGE_MP_PIPES 0x29
#define STAGE_SKEDARRUINS 0x2a
#define STAGE_2B 0x2b
#define STAGE_VILLA 0x2c
#define STAGE_DEFENSE 0x2d
#define STAGE_TEST_ASH 0x2e
#define STAGE_INFILTRATION 0x2f
#define STAGE_DEFECTION 0x30
#define STAGE_AIRFORCEONE 0x31
#define STAGE_MP_SKEDAR 0x32
#define STAGE_INVESTIGATION 0x33
#define STAGE_ATTACKSHIP 0x34
#define STAGE_RESCUE 0x35
#define STAGE_TEST_LEN 0x36
#define STAGE_MBR 0x37
#define STAGE_DEEPSEA 0x38
#define STAGE_MP_BASE 0x39
#define STAGE_TEST_MP2 0x3a
#define STAGE_MP_AREA52 0x3b
#define STAGE_MP_WAREHOUSE 0x3c
#define STAGE_MP_CARPARK 0x3d
#define STAGE_TEST_MP6 0x3e
#define STAGE_TEST_MP7 0x3f
#define STAGE_TEST_MP8 0x40
#define STAGE_MP_RUINS 0x41
#define STAGE_MP_SEWERS 0x42
#define STAGE_MP_FELICITY 0x43
#define STAGE_MP_FORTRESS 0x44
#define STAGE_MP_VILLA 0x45
#define STAGE_TEST_MP14 0x46
#define STAGE_MP_GRID 0x47
#define STAGE_TEST_MP16 0x48
#define STAGE_TEST_MP17 0x49
#define STAGE_TEST_MP18 0x4a
#define STAGE_TEST_MP19 0x4b
#define STAGE_TEST_MP20 0x4c
#define STAGE_TEST_UFF 0x4d
#define STAGE_TEST_OLD 0x4e
#define STAGE_DUEL 0x4f
#define STAGE_TEST_LAM 0x50
#define STAGE_TITLE 0x5a
#define STAGE_BOOTPAKMENU 0x5b
#define STAGE_CREDITS 0x5c
#define STAGE_4MBMENU 0x5d
#define STAGEFLAG_CI_IN_TRAINING 0x00000001
#define STAGEFLAG_CI_HOLO_FAILED 0x00000002
#define STAGEFLAG_CI_DEVICE_ABORTING 0x00000004
#define STAGEFLAG_CI_TRIGGER_DEVICE_SUCCESS 0x00000008
#define STAGEFLAG_CI_TRIGGER_DEVICE_FAILURE 0x00000010
#define STAGEFLAG_CI_HOLO_ABORTING 0x00000020
#define STAGEFLAG_CI_TRIGGER_HOLO_SUCCESS 0x00000040
#define STAGEFLAG_CI_TRIGGER_HOLO_FAILURE 0x00000080
#define STAGEFLAG_CI_TRIGGER_UPLINK 0x00000100
#define STAGEFLAG_CI_TRIGGER_ECMMINE 0x00000200
#define STAGEFLAG_CI_TRIGGER_CAMSPY 0x00000400
#define STAGEFLAG_CI_TRIGGER_NIGHTVISION 0x00000800
#define STAGEFLAG_CI_TRIGGER_DOORDECODER 0x00001000
#define STAGEFLAG_CI_TRIGGER_RTRACKER 0x00002000
#define STAGEFLAG_CI_TRIGGER_IR 0x00004000
#define STAGEFLAG_CI_TRIGGER_XRAY 0x00008000
#define STAGEFLAG_CI_TRIGGER_DISGUISE 0x00010000
#define STAGEFLAG_CI_TRIGGER_CLOAK 0x00020000
#define STAGEFLAG_CI_IN_HOLO1 0x00040000
#define STAGEFLAG_CI_IN_HOLO2 0x00080000
#define STAGEFLAG_CI_IN_HOLO3 0x00100000
#define STAGEFLAG_CI_IN_HOLO4 0x00200000
#define STAGEFLAG_CI_IN_HOLO5 0x00400000
#define STAGEFLAG_CI_IN_HOLO6 0x00800000
#define STAGEFLAG_CI_IN_HOLO7 0x01000000
#define STAGEFLAG_CI_GENERAL_PURPOSE 0x02000000
#define STAGEFLAG_EYESPY_DESTROYED 0x00002000
#define STAGEINDEX_MAIANSOS 0x00
#define STAGEINDEX_TEST_SILO 0x01
#define STAGEINDEX_WAR 0x02
#define STAGEINDEX_MP_RAVINE 0x03
#define STAGEINDEX_TEST_ARCH 0x04
#define STAGEINDEX_ESCAPE 0x05
#define STAGEINDEX_TEST_DEST 0x06
#define STAGEINDEX_RETAKING 0x07
#define STAGEINDEX_CRASHSITE 0x08
#define STAGEINDEX_CHICAGO 0x09
#define STAGEINDEX_G5BUILDING 0x0a
#define STAGEINDEX_MP_COMPLEX 0x0b
#define STAGEINDEX_MP_G5BUILDING 0x0c
#define STAGEINDEX_PELAGIC 0x0d
#define STAGEINDEX_EXTRACTION 0x0e
#define STAGEINDEX_TEST_RUN 0x0f
#define STAGEINDEX_MP_TEMPLE 0x11
#define STAGEINDEX_CITRAINING 0x12
#define STAGEINDEX_AIRBASE 0x13
#define STAGEINDEX_MP_PIPES 0x15
#define STAGEINDEX_SKEDARRUINS 0x16
#define STAGEINDEX_VILLA 0x18
#define STAGEINDEX_DEFENSE 0x19
#define STAGEINDEX_TEST_ASH 0x1a
#define STAGEINDEX_INFILTRATION 0x1b
#define STAGEINDEX_DEFECTION 0x1c
#define STAGEINDEX_AIRFORCEONE 0x1d
#define STAGEINDEX_MP_SKEDAR 0x1e
#define STAGEINDEX_INVESTIGATION 0x1f
#define STAGEINDEX_ATTACKSHIP 0x20
#define STAGEINDEX_RESCUE 0x21
#define STAGEINDEX_TEST_LEN 0x22
#define STAGEINDEX_MBR 0x23
#define STAGEINDEX_DEEPSEA 0x24
#define STAGEINDEX_TEST_UFF 0x25
#define STAGEINDEX_TEST_OLD 0x26
#define STAGEINDEX_DUEL 0x27
#define STAGEINDEX_TEST_LAM 0x28
#define STAGEINDEX_MP_BASE 0x29
#define STAGEINDEX_TEST_MP2 0x2a
#define STAGEINDEX_MP_AREA52 0x2b
#define STAGEINDEX_MP_WAREHOUSE 0x2c
#define STAGEINDEX_MP_CARPARK 0x2d
#define STAGEINDEX_TEST_MP6 0x2e
#define STAGEINDEX_TEST_MP7 0x2f
#define STAGEINDEX_TEST_MP8 0x30
#define STAGEINDEX_MP_RUINS 0x31
#define STAGEINDEX_MP_SEWERS 0x32
#define STAGEINDEX_MP_FELICITY 0x33
#define STAGEINDEX_MP_FORTRESS 0x34
#define STAGEINDEX_MP_VILLA 0x35
#define STAGEINDEX_TEST_MP14 0x36
#define STAGEINDEX_MP_GRID 0x37
#define STAGEINDEX_TEST_MP16 0x38
#define STAGEINDEX_TEST_MP17 0x39
#define STAGEINDEX_TEST_MP18 0x3a
#define STAGEINDEX_TEST_MP19 0x3b
#define STAGEINDEX_TEST_MP20 0x3c
#define SURFACETYPE_DEFAULT 0
#define SURFACETYPE_STONE 1
#define SURFACETYPE_WOOD 2
#define SURFACETYPE_METAL 3
#define SURFACETYPE_GLASS 4
#define SURFACETYPE_SHALLOWWATER 5
#define SURFACETYPE_SNOW 6
#define SURFACETYPE_DIRT 7
#define SURFACETYPE_MUD 8
#define SURFACETYPE_TILE 9
#define SURFACETYPE_METALOBJ 10
#define SURFACETYPE_CHR 11
#define SURFACETYPE_GLASSXLU 12
#define SURFACETYPE_NONE 13
#define SURFACETYPE_DEEPWATER 14
#define TEAM_00 0x00
#define TEAM_01 0x01
#define TEAM_ENEMY 0x02
#define TEAM_04 0x04
#define TEAM_ALLY 0x10
#define TEAM_20 0x20
#define TEAM_22 0x22
#define TEAM_32 0x32
#define TEAM_NONCOMBAT 0x80
#define TELEPORTSTATE_INACTIVE 0
#define TELEPORTSTATE_PREENTER 1
#define TELEPORTSTATE_ENTERING 2
#define TELEPORTSTATE_WHITE 3
#define TELEPORTSTATE_EXITING 4
#define TEXCOMPMETHOD_UNCOMPRESSED0 0
#define TEXCOMPMETHOD_UNCOMPRESSED1 1
#define TEXCOMPMETHOD_HUFFMAN 2
#define TEXCOMPMETHOD_HUFFMANPERHCHANNEL 3
#define TEXCOMPMETHOD_RLE 4
#define TEXCOMPMETHOD_LOOKUP 5
#define TEXCOMPMETHOD_HUFFMANLOOKUP 6
#define TEXCOMPMETHOD_RLELOOKUP 7
#define TEXCOMPMETHOD_HUFFMANBLUR 8
#define TEXCOMPMETHOD_RLEBLUR 9
#define TEXFORMAT_RGBA32 0x00 // 32-bit RGBA (8/8/8/8)
#define TEXFORMAT_RGBA16 0x01 // 16-bit RGBA (5/5/5/1)
#define TEXFORMAT_RGB24 0x02 // 24-bit RGB (8/8/8)
#define TEXFORMAT_RGB15 0x03 // 15-bit RGB (5/5/5)
#define TEXFORMAT_IA16 0x04 // 16-bit grayscale+alpha
#define TEXFORMAT_IA8 0x05 // 8-bit grayscale+alpha (4/4)
#define TEXFORMAT_IA4 0x06 // 4-bit grayscale+alpha (3/1)
#define TEXFORMAT_I8 0x07 // 8-bit grayscale
#define TEXFORMAT_I4 0x08 // 4-bit grayscale
#define TEXFORMAT_RGBA16_CI8 0x09 // 16-bit 5551 paletted colour with 8-bit palette indexes
#define TEXFORMAT_RGBA16_CI4 0x0a // 16-bit 5551 paletted colour with 4-bit palette indexes
#define TEXFORMAT_IA16_CI8 0x0b // 16-bit 88 paletted greyscale+alpha with 8-bit palette indexes
#define TEXFORMAT_0C 0x0c
#define THREAD_RMON 0
#define THREAD_IDLE 1
#define THREAD_SCHED 2
#define THREAD_MAIN 3
#define THREAD_AUDIO 4
#define THREAD_FAULT 5
#define THREAD_RESET 6
#define THREADPRI_IDLE 0
#define THREADPRI_MAIN 10
#define THREADPRI_RESET 11
#define THREADPRI_AUDIO 20
#define THREADPRI_SCHED 30
#define THREADPRI_FAULT 40
#define THREADPRI_RMON 250
#define TICKMODE_GE_FADEIN 0
#define TICKMODE_NORMAL 1
#define TICKMODE_WARP 3
#define TICKMODE_MPSWIRL 4
#define TICKMODE_GE_FADEOUT 5
#define TICKMODE_CUTSCENE 6
#define TICKMODE_AUTOWALK 7
#define TICKOP_NONE 0
#define TICKOP_FREE 1
#define TICKOP_DISABLE 2
#define TICKOP_RETICK 3
#define TICKOP_GIVETOPLAYER 4
#define TICKOP_5 5
#define TILEFLAG_0001 0x0001 // Editor: Traversable
#define TILEFLAG_0002 0x0002
#define TILEFLAG_0004 0x0004 // Editor: Collisions
#define TILEFLAG_0008 0x0008
#define TILEFLAG_0010 0x0010 // Editor: Block AI fire/sight
#define TILEFLAG_0020 0x0020
#define TILEFLAG_LADDER 0x0040
#define TILEFLAG_0080 0x0080
#define TILEFLAG_0100 0x0100 // Editor: Low wall/edge
#define TILEFLAG_UNDERWATER 0x0200
#define TILEFLAG_0400 0x0400
#define TILEFLAG_AIBOTCROUCH 0x0800
#define TILEFLAG_AIBOTDUCK 0x1000
#define TILEFLAG_2000 0x2000 // Editor: Incline
#define TILEFLAG_DIE 0x4000
#define TILEFLAG_CLIMBABLELEDGE 0x8000 // used for most ledges in Chicago, but not near drain pickup
#define TILETYPE_00 0 // Standard BG tiles
#define TILETYPE_01 1
#define TILETYPE_02 2
#define TILETYPE_03 3 // Chr/obj geometry
#define TIMEPRECISION_DAYS 0
#define TIMEPRECISION_HOURS 1
#define TIMEPRECISION_MINUTES 2
#define TIMEPRECISION_SECONDS 3
#define TIMEPRECISION_HUNDREDTHS 4
#define TITLEMODE_LEGAL 0
#define TITLEMODE_CHECKCONTROLLERS 1
#define TITLEMODE_PDLOGO 2
#define TITLEMODE_NINTENDOLOGO 3
#define TITLEMODE_RARELOGO 4
#define TITLEMODE_SKIP 5
#define TITLEMODE_NOCONTROLLER 6
#define TITLEMODE_RAREPRESENTS1 7
#define TITLEMODE_RAREPRESENTS2 8
#define TITLEMODE_9 9
#define TITLEMODE_NOEXPANSION 10
#define TITLEAIMODE_RAREPRESENTS1 1
#define TITLEAIMODE_RARELOGO 2
#define TITLEAIMODE_NINTENDOLOGO 3
#define TITLEAIMODE_RAREPRESENTS2 4
#define TITLEAIMODE_PDLOGO 5
#define TRACKTYPE_NONE 0
#define TRACKTYPE_PRIMARY 1
#define TRACKTYPE_NRG 2 // NRG = "energy" (the high-energy X track)
#define TRACKTYPE_MENU 3
#define TRACKTYPE_DEATH 4
#define TRACKTYPE_AMBIENT 5
#define TRACKTYPE_6 6
#define TURNSTATE_TURNING 1 // chr is actively turning
#define TURNSTATE_OFF 2 // chr is not using the turning feature
#define TURNSTATE_ONTARGET 3 // chr is facing the target and will turn if target moves
#define TVCMD_STOPSCROLL 0x00
#define TVCMD_SCROLLRELX 0x01
#define TVCMD_SCROLLRELY 0x02
#define TVCMD_SCROLLABSX 0x03
#define TVCMD_SCROLLABSY 0x04
#define TVCMD_SCALEABSX 0x05
#define TVCMD_SCALEABSY 0x06
#define TVCMD_SETTEXTURE 0x07
#define TVCMD_PAUSE 0x08
#define TVCMD_SETCMDLIST 0x09
#define TVCMD_RANDSETCMDLIST 0x0a
#define TVCMD_RESTART 0x0b
#define TVCMD_YIELD 0x0c
#define TVCMD_SETCOLOUR 0x0d
#define TVCMD_ROTATEABS 0x0e
#define TVCMD_ROTATEREL 0x0f
#define TVCMDLIST_00 0x00
#define TVCMDLIST_01 0x01
#define TVCMDLIST_02 0x02
#define TVCMDLIST_03 0x03
#define TVCMDLIST_04 0x04
#define TVCMDLIST_05 0x05
#define TVCMDLIST_06 0x06
#define TVCMDLIST_07 0x07
#define TVCMDLIST_08 0x08
#define TVCMDLIST_09 0x09
#define TVCMDLIST_0A 0x0a
#define TVCMDLIST_0B 0x0b
#define TVCMDLIST_0C 0x0c
#define TVCMDLIST_0D 0x0d
#define TVCMDLIST_0E 0x0e
#define TVCMDLIST_0F 0x0f
#define TVCMDLIST_10 0x10
#define TVCMDLIST_11 0x11
#define TVCMDLIST_12 0x12
#define TVCMDLIST_13 0x13
#define TVCMDLIST_14 0x14
#define TVCMDLIST_15 0x15
#define TVCMDLIST_16 0x16
#define TVCMDLIST_17 0x17
#define TVCMDLIST_18 0x18
#define TVCMDLIST_19 0x19
#define TVCMDLIST_1A 0x1a
#define TVCMDLIST_1B 0x1b
#define TVCMDLIST_1C 0x1c
#define TVCMDLIST_1D 0x1d
#define TVCMDLIST_1E 0x1e
#define TVCMDLIST_1F 0x1f
#define TVCMDLIST_20 0x20
#define TVCMDLIST_21 0x21
#define TVCMDLIST_22 0x22
#define TVCMDLIST_23 0x23
#define TVCMDLIST_24 0x24
#define TVCMDLIST_25 0x25
#define TVCMDLIST_26 0x26
#define TVCMDLIST_27 0x27
#define TVCMDLIST_28 0x28
#define TVCMDLIST_29 0x29
#define TVCMDLIST_2A 0x2a
#define TVCMDLIST_2B 0x2b
#define TVCMDLIST_2C 0x2c
#define TVCMDLIST_2D 0x2d
#define TVCMDLIST_2E 0x2e
#define TVCMDLIST_2F 0x2f
#define TVCMDLIST_30 0x30
#define TVCMDLIST_31 0x31
#define TVCMDLIST_32 0x32
#define TVCMDLIST_33 0x33
#define TVCMDLIST_34 0x34
#define TVCMDLIST_35 0x35
#define TVCMDLIST_36 0x36
#define VEHICLEMODE_OFF 0
#define VEHICLEMODE_ENGINESTART 1
#define VEHICLEMODE_RUNNING 2
#define VIMODE_NONE 0
#define VIMODE_LO 1
#define VIMODE_HI 2
#define VIRES_LO 0
#define VIRES_HI 1
#define VISIONMODE_NORMAL 0
#define VISIONMODE_XRAY 1
#define VISIONMODE_SLAYERROCKET 2
#define VISIONMODE_SLAYERROCKETSTATIC 3
#define VOICEBOX_MALE0 0
#define VOICEBOX_MALE1 1
#define VOICEBOX_MALE2 2
#define VOICEBOX_FEMALE 3
#define VTXSTORETYPE_CHRVTX 0
#define VTXSTORETYPE_OBJVTX 1
#define VTXSTORETYPE_CHRCOL 2
#define VTXSTORETYPE_OBJCOL 3
#define WAYMODE_INIT 0
#define WAYMODE_LOST1 1
#define WAYMODE_RETRY 2
#define WAYMODE_LOST2 3
#define WAYMODE_HAVEAIMPOS 4
#define WAYMODE_NEWOBSACTLE 5
#define WAYMODE_MAGIC 6
enum weaponnum {
/*0x00*/ WEAPON_NONE,
/*0x01*/ WEAPON_UNARMED,
/*0x02*/ WEAPON_FALCON2,
/*0x03*/ WEAPON_FALCON2_SILENCER,
/*0x04*/ WEAPON_FALCON2_SCOPE,
/*0x05*/ WEAPON_MAGSEC4,
/*0x06*/ WEAPON_MAULER,
/*0x07*/ WEAPON_PHOENIX,
/*0x08*/ WEAPON_DY357MAGNUM,
/*0x09*/ WEAPON_DY357LX,
/*0x0a*/ WEAPON_CMP150,
/*0x0b*/ WEAPON_CYCLONE,
/*0x0c*/ WEAPON_CALLISTO,
/*0x0d*/ WEAPON_RCP120,
/*0x0e*/ WEAPON_LAPTOPGUN,
/*0x0f*/ WEAPON_DRAGON,
/*0x10*/ WEAPON_K7AVENGER,
/*0x11*/ WEAPON_AR34,
/*0x12*/ WEAPON_SUPERDRAGON,
/*0x13*/ WEAPON_SHOTGUN,
/*0x14*/ WEAPON_REAPER,
/*0x15*/ WEAPON_SNIPERRIFLE,
/*0x16*/ WEAPON_FARSIGHT,
/*0x17*/ WEAPON_DEVASTATOR,
/*0x18*/ WEAPON_ROCKETLAUNCHER,
/*0x19*/ WEAPON_SLAYER,
/*0x1a*/ WEAPON_COMBATKNIFE,
/*0x1b*/ WEAPON_CROSSBOW,
/*0x1c*/ WEAPON_TRANQUILIZER,
/*0x1d*/ WEAPON_LASER,
/*0x1e*/ WEAPON_GRENADE,
/*0x1f*/ WEAPON_NBOMB,
/*0x20*/ WEAPON_TIMEDMINE,
/*0x21*/ WEAPON_PROXIMITYMINE,
/*0x22*/ WEAPON_REMOTEMINE,
/*0x23*/ WEAPON_COMBATBOOST,
/*0x24*/ WEAPON_PP9I,
/*0x25*/ WEAPON_CC13,
/*0x26*/ WEAPON_KL01313,
/*0x27*/ WEAPON_KF7SPECIAL,
/*0x28*/ WEAPON_ZZT,
/*0x29*/ WEAPON_DMC,
/*0x2a*/ WEAPON_AR53,
/*0x2b*/ WEAPON_RCP45,
/*0x2c*/ WEAPON_PSYCHOSISGUN,
/*0x2d*/ WEAPON_NIGHTVISION,
/*0x2e*/ WEAPON_EYESPY,
/*0x2f*/ WEAPON_XRAYSCANNER,
/*0x30*/ WEAPON_IRSCANNER,
/*0x31*/ WEAPON_CLOAKINGDEVICE,
/*0x32*/ WEAPON_HORIZONSCANNER,
/*0x33*/ WEAPON_TESTER,
/*0x34*/ WEAPON_ROCKETLAUNCHER_34,
/*0x35*/ WEAPON_ECMMINE,
/*0x36*/ WEAPON_DATAUPLINK,
/*0x37*/ WEAPON_RTRACKER,
/*0x38*/ WEAPON_PRESIDENTSCANNER,
/*0x39*/ WEAPON_DOORDECODER,
/*0x3a*/ WEAPON_AUTOSURGEON,
/*0x3b*/ WEAPON_EXPLOSIVES,
/*0x3c*/ WEAPON_SKEDARBOMB,
/*0x3d*/ WEAPON_COMMSRIDER,
/*0x3e*/ WEAPON_TRACERBUG,
/*0x3f*/ WEAPON_TARGETAMPLIFIER,
/*0x40*/ WEAPON_DISGUISE40,
/*0x41*/ WEAPON_DISGUISE41,
/*0x42*/ WEAPON_FLIGHTPLANS,
/*0x43*/ WEAPON_RESEARCHTAPE,
/*0x44*/ WEAPON_BACKUPDISK,
/*0x45*/ WEAPON_KEYCARD45,
/*0x46*/ WEAPON_KEYCARD46,
/*0x47*/ WEAPON_KEYCARD47,
/*0x48*/ WEAPON_KEYCARD48,
/*0x49*/ WEAPON_KEYCARD49,
/*0x4a*/ WEAPON_KEYCARD4A,
/*0x4b*/ WEAPON_KEYCARD4B,
/*0x4c*/ WEAPON_KEYCARD4C,
/*0x4d*/ WEAPON_SUITCASE,
/*0x4e*/ WEAPON_BRIEFCASE,
#if VERSION >= VERSION_NTSC_1_0
/*0x4f*/ WEAPON_SHIELDTECHITEM,
#endif
/*0x50*/ WEAPON_NECKLACE,
/*0x51*/ WEAPON_HAMMER,
/*0x52*/ WEAPON_SCREWDRIVER,
/*0x53*/ WEAPON_ROCKET,
/*0x54*/ WEAPON_HOMINGROCKET,
/*0x55*/ WEAPON_GRENADEROUND,
/*0x56*/ WEAPON_BOLT,
/*0x57*/ WEAPON_BRIEFCASE2,
/*0x58*/ WEAPON_SKROCKET,
/*0x59*/ WEAPON_CHOPPERGUN,
/*0x5a*/ WEAPON_WATCHLASER,
/*0x5b*/ WEAPON_MPSHIELD,
/*0x5c*/ WEAPON_DISABLED,
/*0x5d*/ WEAPON_SUICIDEPILL
};
#define WEAPONCLASSFLAG_MANUALZOOM 0x00000001
#define WEAPONCLASSFLAG_AUTOAIM 0x00000002
#define WEAPONCLASSFLAG_00000004 0x00000004
#define WEAPONFLAG_00000001 0x00000001 // mines, grenades and knives
#define WEAPONFLAG_00000004 0x00000004
#define WEAPONFLAG_ONEHANDED 0x00000008 // Makes guards carry the gun with one hand
#define WEAPONFLAG_AICANUSE 0x00000010
#define WEAPONFLAG_DUALFLIP 0x00000020 // For dual wielding, flip the right model to make the left (else have two right hands)
#define WEAPONFLAG_00000040 0x00000040
#define WEAPONFLAG_00000080 0x00000080 // Night vision
#define WEAPONFLAG_TRACKTIMEUSED 0x00000200 // Allow tracking how long gun is used, for weapon of choice
#define WEAPONFLAG_00000400 0x00000400
#define WEAPONFLAG_00000800 0x00000800 // MP briefcase
#define WEAPONFLAG_DUALWIELD 0x00001000 // Allow dual wielding
#define WEAPONFLAG_00002000 0x00002000
#define WEAPONFLAG_00004000 0x00004000
#define WEAPONFLAG_00008000 0x00008000 // Editor: "Special environment mapping"
#define WEAPONFLAG_HASHANDS 0x00020000
#define WEAPONFLAG_HIDEMENUMODEL 0x00040000 // Don't display the rotating model in the inventory menu
#define WEAPONFLAG_GANGSTA 0x00080000 // Allow turning the gun sideways at close range
#define WEAPONFLAG_DONTCOUNTSHOTS 0x00100000 // Laser and MP briefcase
#define WEAPONFLAG_DETERMINER_S_AN 0x00200000 // "An ..." (short version - when vertically split)
#define WEAPONFLAG_DETERMINER_F_AN 0x00400000 // "Picked up an ..." (full version)
#define WEAPONFLAG_DETERMINER_S_THE 0x00800000 // "The ..." (short version - when vertically split)
#define WEAPONFLAG_DETERMINER_F_THE 0x01000000 // "Picked up the ..." (full version)
#define WEAPONFLAG_02000000 0x02000000 // Slayer
#define WEAPONFLAG_04000000 0x04000000
#define WEAPONFLAG_08000000 0x08000000
#define WEAPONFLAG_DETERMINER_S_SOME 0x10000000 // "Some ..." (short version - when vertically split)
#define WEAPONFLAG_DETERMINER_F_SOME 0x20000000 // "Picked up some ..." (full version)
#define WEAPONFLAG_AIMTRACK 0x40000000 // Allow drawing red box around targets in aim mode
#define WEAPONFLAG_FIRETOACTIVATE 0x80000000 // For devices/gadgets
#define WEAPONSET_RANDOMFIVE 0x0c
#define WEAPONSET_RANDOM 0x0d
#define WEAPONSET_CUSTOM 0x0e
#define WEATHERTYPE_RAIN 0
#define WEATHERTYPE_SNOW 1
// Reasons for playing X music
#define XREASON_0 0
#define XREASON_DEFAULT 1
#define XREASON_2 2
#define XREASON_3 3
// Heads and bodies
#define HEAD_RANDOM -1
#define BODY_DJBOND 0x00
#define BODY_CONNERY 0x01
#define BODY_DALTON 0x02
#define BODY_MOORE 0x03
#define HEAD_DARK_COMBAT 0x04
#define HEAD_ELVIS 0x05
#define HEAD_ROSS 0x06
#define HEAD_CARRINGTON 0x07
#define HEAD_MRBLONDE 0x08
#define HEAD_TRENT 0x09
#define HEAD_DDSHOCK 0x0a
#define HEAD_GRAHAM 0x0b
#define HEAD_DARK_FROCK 0x0c
#define HEAD_SECRETARY 0x0d
#define HEAD_CASSANDRA 0x0e
#define HEAD_THEKING 0x0f
#define HEAD_FEM_GUARD 0x10
#define HEAD_JON 0x11
#define HEAD_MARK2 0x12
#define HEAD_CHRIST 0x13
#define HEAD_RUSS 0x14
#define HEAD_GREY 0x15
#define HEAD_DARLING 0x16
#define HEAD_ROBERT 0x17
#define HEAD_BEAU1 0x18
#define HEAD_FEM_GUARD2 0x19
#define HEAD_BRIAN 0x1a
#define HEAD_JAMIE 0x1b
#define HEAD_DUNCAN2 0x1c
#define HEAD_BIOTECH 0x1d
#define HEAD_NEIL2 0x1e
#define HEAD_EDMCG 0x1f
#define HEAD_ANKA 0x20
#define HEAD_LESLIE_S 0x21
#define HEAD_MATT_C 0x22
#define HEAD_PEER_S 0x23
#define HEAD_EILEEN_T 0x24
#define HEAD_ANDY_R 0x25
#define HEAD_BEN_R 0x26
#define HEAD_STEVE_K 0x27
#define HEAD_JONATHAN 0x28
#define HEAD_MAIAN_S 0x29
#define HEAD_SHAUN 0x2a
#define HEAD_BEAU2 0x2b
#define HEAD_EILEEN_H 0x2c
#define HEAD_SCOTT_H 0x2d
#define HEAD_SANCHEZ 0x2e
#define HEAD_DARKAQUA 0x2f
#define HEAD_DDSNIPER 0x30
#define HEAD_BEAU3 0x31
#define HEAD_BEAU4 0x32
#define HEAD_BEAU5 0x33
#define HEAD_BEAU6 0x34
#define HEAD_GRIFFEY 0x35
#define HEAD_MOTO 0x36
#define HEAD_KEITH 0x37
#define HEAD_WINNER 0x38
#define HEAD_A51FACEPLATE 0x39
#define HEAD_ELVIS_GOGS 0x3a
#define HEAD_STEVEM 0x3b
#define HEAD_DARK_SNOW 0x3c
#define HEAD_PRESIDENT 0x3d
#define HEAD_VD 0x3e
#define HEAD_KEN 0x3f
#define HEAD_JOEL 0x40
#define HEAD_TIM 0x41
#define HEAD_GRANT 0x42
#define HEAD_PENNY 0x43
#define HEAD_ROBIN 0x44
#define HEAD_ALEX 0x45
#define HEAD_JULIANNE 0x46
#define HEAD_LAURA 0x47
#define HEAD_DAVEC 0x48
#define HEAD_COOK 0x49
#define HEAD_PRYCE 0x4a
#define HEAD_SILKE 0x4b
#define HEAD_SMITH 0x4c
#define HEAD_GARETH 0x4d
#define HEAD_MURCHIE 0x4e
#define HEAD_WONG 0x4f
#define HEAD_CARTER 0x50
#define HEAD_TINTIN 0x51
#define HEAD_MUNTON 0x52
#define HEAD_STAMPER 0x53
#define HEAD_JONES 0x54
#define HEAD_PHELPS 0x55
#define BODY_DARK_COMBAT 0x56
#define BODY_ELVIS1 0x57
#define BODY_AREA51GUARD 0x58
#define BODY_OVERALL 0x59
#define BODY_CARRINGTON 0x5a
#define BODY_MRBLONDE 0x5b
#define BODY_SKEDAR 0x5c
#define BODY_TRENT 0x5d
#define BODY_DDSHOCK 0x5e
#define BODY_LABTECH 0x5f
#define BODY_STRIPES 0x60
#define BODY_DARK_FROCK 0x61
#define BODY_DARK_TRENCH 0x62
#define BODY_OFFICEWORKER 0x63
#define BODY_OFFICEWORKER2 0x64
#define BODY_SECRETARY 0x65
#define BODY_CASSANDRA 0x66
#define BODY_THEKING 0x67
#define BODY_FEM_GUARD 0x68
#define BODY_DD_LABTECH 0x69
#define BODY_DD_SECGUARD 0x6a
#define BODY_DRCAROLL 0x6b
#define BODY_EYESPY 0x6c
#define BODY_DARK_RIPPED 0x6d
#define BODY_DD_GUARD 0x6e
#define BODY_DD_SHOCK_INF 0x6f
#define BODY_TESTCHR 0x70
#define BODY_BIOTECH 0x71
#define BODY_FBIGUY 0x72
#define BODY_CIAGUY 0x73
#define BODY_A51TROOPER 0x74
#define BODY_A51AIRMAN 0x75
#define BODY_CHICROB 0x76
#define BODY_STEWARD 0x77
#define BODY_STEWARDESS 0x78
#define BODY_PRESIDENT 0x79
#define BODY_STEWARDESS_COAT 0x7a
#define BODY_MINISKEDAR 0x7b
#define BODY_NSA_LACKEY 0x7c
#define BODY_PRES_SECURITY 0x7d
#define BODY_NEGOTIATOR 0x7e
#define BODY_G5_GUARD 0x7f
#define BODY_PELAGIC_GUARD 0x80
#define BODY_G5_SWAT_GUARD 0x81
#define BODY_ALASKAN_GUARD 0x82
#define BODY_MAIAN_SOLDIER 0x83
#define BODY_PRESIDENT_CLONE 0x84
#define BODY_PRESIDENT_CLONE2 0x85
#define BODY_DARK_AF1 0x86
#define BODY_DARKWET 0x87
#define BODY_DARKAQUALUNG 0x88
#define BODY_DARKSNOW 0x89
#define BODY_DARKLAB 0x8a
#define BODY_FEMLABTECH 0x8b
#define BODY_DDSNIPER 0x8c
#define BODY_PILOTAF1 0x8d
#define BODY_CILABTECH 0x8e
#define BODY_CIFEMTECH 0x8f
#define BODY_CARREVENINGSUIT 0x90
#define BODY_JONATHAN 0x91
#define BODY_CISOLDIER 0x92
#define BODY_SKEDARKING 0x93
#define BODY_ELVISWAISTCOAT 0x94
#define BODY_DARK_LEATHER 0x95
#define BODY_DARK_NEGOTIATOR 0x96
#endif