mirror of
https://gitlab.com/kholdfuzion/goldeneye_src
synced 2026-09-03 01:43:55 -04:00
4855 lines
191 KiB
C
4855 lines
191 KiB
C
/*************************************************************************
|
|
*
|
|
* File: bondconstants.h
|
|
*
|
|
* Declares the bondconstants.
|
|
*
|
|
* $Revision: $
|
|
* $Date: 2021/12/28 {HOUR}:{MINUTE}:{SECOND} $
|
|
* $Source: /bondconstants.h,v $
|
|
*
|
|
**************************************************************************/
|
|
|
|
|
|
#ifndef _BONDCONSTANTS_H_
|
|
# define _BONDCONSTANTS_H_
|
|
#include <ultra64.h>
|
|
#include <CPPLib.h>
|
|
|
|
#pragma region Tools
|
|
#ifdef __INTELLISENSE__
|
|
/* This is only a helper for VS as the IF macro is a little complex for it to work out */
|
|
|
|
# define IF(a) IF1
|
|
# define IF1(a) TRY_EXPAND(a)
|
|
# define IF_ELSE(a) _IF_E1
|
|
# define _IF_E1(a) TRY_EXPAND(a) EAT
|
|
# define COMMA_IF_I(a) COMMA()
|
|
#endif
|
|
|
|
/**
|
|
* A single list can be made into an enum and string array for debug.
|
|
* Also Known as X-Macros
|
|
*
|
|
* Usage: `CREATE_TYPES(ENUM, ACT, ACT_TYPES)`
|
|
*
|
|
* @param type: ENUM or STRINGS
|
|
* @param prefix: Prefix to be applied to Enum, eg ACT for ACT_INIT
|
|
* @param name: Name of list to use for Enum or String Array
|
|
* @return The list from name in form of type
|
|
*/
|
|
#define CREATE_TYPES(type, prefix, name) \
|
|
EVAL2(DEFER(EMPTY)(name(DEFER(RPAREN)() \
|
|
CREATE_##type DEFER(LPAREN)() \
|
|
prefix DEFER(COMMA)())) \
|
|
)
|
|
#define CREATE_STRINGS(prefix, name) IF_ELSE(prefix) \
|
|
(#prefix "_" #name)(#name),
|
|
#define CREATE_ENUM(prefix, name) IF_ELSE(prefix) \
|
|
(prefix##_##name)(name),
|
|
#define CREATE_SIZES(prefix, name, size) IF_ELSE(prefix) \
|
|
(prefix##_##name##_size = size)(name = size),
|
|
|
|
|
|
/**
|
|
* A single list can be made into an enum and string array for debug.
|
|
* Also Known as X-Macros
|
|
*
|
|
* Usage: `CREATE_TYPES1(ACT, ACT_TYPES)`
|
|
*
|
|
* @param prefix: Prefix to be applied to Enum, eg ACT for ACT_INIT
|
|
* @param name: Name of list to use for Enum or String Array
|
|
* @return an enum and (if debug) a toString list.
|
|
*/
|
|
#define CREATE_TYPES1(prefix, name) \
|
|
typedef enum prefix \
|
|
{ \
|
|
EVAL2(DEFER(EMPTY)(name(DEFER(RPAREN)() \
|
|
CREATE_ENUM DEFER(LPAREN)() \
|
|
prefix DEFER(COMMA)())) \
|
|
) \
|
|
prefix ##_TYPE_MAX}; \
|
|
IF(DEFINED(DEBUG))( \
|
|
char *prefix ## _TYPE_ToString[] = {) EVAL2(DEFER(EMPTY)(name(DEFER(RPAREN)() \
|
|
CREATE_STRINGS1 DEFER(LPAREN)() \
|
|
prefix DEFER(COMMA)())) \
|
|
)IF(DEFINED(DEBUG))(};)
|
|
#define CREATE_STRINGS1(prefix, name) IF_VA(DEFINED(DEBUG))(IF_ELSE(prefix) \
|
|
(#prefix "_" #name)(#name)COMMA())
|
|
|
|
#ifdef __sgi
|
|
/**
|
|
* Auto Generate Bitflag enums. (up to 32bit) - Unfortunatly we loose intellisense comments
|
|
* @param NAME: Name of bitflag
|
|
* @param a-af: bitfield names (will be appended to bitflag name for every field)
|
|
* @return Enum of bitflags
|
|
*/
|
|
#define BITFLAG(NAME,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,aa,ab,ac,ad,ae,af)\
|
|
typedef enum NAME \
|
|
{ /*\
|
|
*/NAME ## _NONE,/*\
|
|
*/IF(NOT(IS_EMPTY(a)))(NAME ## _ ## a = 1 << 0) EVAL1(COMMA_IF_I(NOT(IS_EMPTY(b))))/*\
|
|
*/IF(NOT(IS_EMPTY(b)))(NAME ## _ ## b = 1 << 1) EVAL1(COMMA_IF_I(NOT(IS_EMPTY(c))))/*\
|
|
*/IF(NOT(IS_EMPTY(c)))(NAME ## _ ## c = 1 << 2) EVAL1(COMMA_IF_I(NOT(IS_EMPTY(d))))/*\
|
|
*/IF(NOT(IS_EMPTY(d)))(NAME ## _ ## d = 1 << 3) EVAL1(COMMA_IF_I(NOT(IS_EMPTY(e))))/*\
|
|
*/IF(NOT(IS_EMPTY(e)))(NAME ## _ ## e = 1 << 4) EVAL1(COMMA_IF_I(NOT(IS_EMPTY(f))))/*\
|
|
*/IF(NOT(IS_EMPTY(f)))(NAME ## _ ## f = 1 << 5) EVAL1(COMMA_IF_I(NOT(IS_EMPTY(g))))/*\
|
|
*/IF(NOT(IS_EMPTY(g)))(NAME ## _ ## g = 1 << 6) EVAL1(COMMA_IF_I(NOT(IS_EMPTY(h))))/*\
|
|
*/IF(NOT(IS_EMPTY(h)))(NAME ## _ ## h = 1 << 7) EVAL1(COMMA_IF_I(NOT(IS_EMPTY(i))))/*\
|
|
*/IF(NOT(IS_EMPTY(i)))(NAME ## _ ## i = 1 << 8) EVAL1(COMMA_IF_I(NOT(IS_EMPTY(j))))/*\
|
|
*/IF(NOT(IS_EMPTY(j)))(NAME ## _ ## j = 1 << 9) EVAL1(COMMA_IF_I(NOT(IS_EMPTY(k))))/*\
|
|
*/IF(NOT(IS_EMPTY(k)))(NAME ## _ ## k = 1 << 10) EVAL1(COMMA_IF_I(NOT(IS_EMPTY(l))))/*\
|
|
*/IF(NOT(IS_EMPTY(l)))(NAME ## _ ## l = 1 << 11) EVAL1(COMMA_IF_I(NOT(IS_EMPTY(m))))/*\
|
|
*/IF(NOT(IS_EMPTY(m)))(NAME ## _ ## m = 1 << 12) EVAL1(COMMA_IF_I(NOT(IS_EMPTY(n))))/*\
|
|
*/IF(NOT(IS_EMPTY(n)))(NAME ## _ ## n = 1 << 13) EVAL1(COMMA_IF_I(NOT(IS_EMPTY(o))))/*\
|
|
*/IF(NOT(IS_EMPTY(o)))(NAME ## _ ## o = 1 << 14) EVAL1(COMMA_IF_I(NOT(IS_EMPTY(p))))/*\
|
|
*/IF(NOT(IS_EMPTY(p)))(NAME ## _ ## p = 1 << 15) EVAL1(COMMA_IF_I(NOT(IS_EMPTY(q))))/*\
|
|
*/IF(NOT(IS_EMPTY(q)))(NAME ## _ ## q = 1 << 16) EVAL1(COMMA_IF_I(NOT(IS_EMPTY(r))))/*\
|
|
*/IF(NOT(IS_EMPTY(r)))(NAME ## _ ## r = 1 << 17) EVAL1(COMMA_IF_I(NOT(IS_EMPTY(s))))/*\
|
|
*/IF(NOT(IS_EMPTY(s)))(NAME ## _ ## s = 1 << 18) EVAL1(COMMA_IF_I(NOT(IS_EMPTY(t))))/*\
|
|
*/IF(NOT(IS_EMPTY(t)))(NAME ## _ ## t = 1 << 19) EVAL1(COMMA_IF_I(NOT(IS_EMPTY(u))))/*\
|
|
*/IF(NOT(IS_EMPTY(u)))(NAME ## _ ## u = 1 << 20) EVAL1(COMMA_IF_I(NOT(IS_EMPTY(v))))/*\
|
|
*/IF(NOT(IS_EMPTY(v)))(NAME ## _ ## v = 1 << 21) EVAL1(COMMA_IF_I(NOT(IS_EMPTY(w))))/*\
|
|
*/IF(NOT(IS_EMPTY(w)))(NAME ## _ ## w = 1 << 22) EVAL1(COMMA_IF_I(NOT(IS_EMPTY(x))))/*\
|
|
*/IF(NOT(IS_EMPTY(x)))(NAME ## _ ## x = 1 << 23) EVAL1(COMMA_IF_I(NOT(IS_EMPTY(y))))/*\
|
|
*/IF(NOT(IS_EMPTY(y)))(NAME ## _ ## y = 1 << 24) EVAL1(COMMA_IF_I(NOT(IS_EMPTY(z))))/*\
|
|
*/IF(NOT(IS_EMPTY(z)))(NAME ## _ ## z = 1 << 25) EVAL1(COMMA_IF_I(NOT(IS_EMPTY(aa))))/*\
|
|
*/IF(NOT(IS_EMPTY(aa)))(NAME ## _ ## aa = 1 << 26) EVAL1(COMMA_IF_I(NOT(IS_EMPTY(ab))))/*\
|
|
*/IF(NOT(IS_EMPTY(ab)))(NAME ## _ ## ab = 1 << 27) EVAL1(COMMA_IF_I(NOT(IS_EMPTY(ac))))/*\
|
|
*/IF(NOT(IS_EMPTY(ac)))(NAME ## _ ## ac = 1 << 28) EVAL1(COMMA_IF_I(NOT(IS_EMPTY(ad))))/*\
|
|
*/IF(NOT(IS_EMPTY(ad)))(NAME ## _ ## ad = 1 << 29) EVAL1(COMMA_IF_I(NOT(IS_EMPTY(ae))))/*\
|
|
*/IF(NOT(IS_EMPTY(ae)))(NAME ## _ ## ae = 1 << 30) EVAL1(COMMA_IF_I(NOT(IS_EMPTY(af))))/*\
|
|
*/IF(NOT(IS_EMPTY(af)))(NAME ## _ ## af = 1 << 31) /*\
|
|
*/} NAME;
|
|
#else
|
|
# define BITFLAG(...)
|
|
#endif
|
|
|
|
#pragma endregion
|
|
|
|
#pragma region Bitflags
|
|
|
|
/**
|
|
* Reverted to manual Enums for intellisense descriptions (comments)
|
|
* Advantage of BITFLAG macro is auto-numbering but with loss of comments
|
|
* if the Auto numbering sounds better or I find a way to keep comments then I can revert.
|
|
*/
|
|
|
|
typedef enum ATTACKTYPE
|
|
{
|
|
ATTACKTYPE_NONE,
|
|
ATTACKTYPE_BOND = 1 << 0, // aim/shoot at Bond
|
|
ATTACKTYPE_FORWARD = 1 << 1, // aim/shoot in front of self
|
|
ATTACKTYPE_CHR = 1 << 2, // aim/shoot at chr (ID should be given in entity_id)
|
|
ATTACKTYPE_PAD = 1 << 3, // aim/shoot at pad (ID should be given in entity_id)
|
|
ATTACKTYPE_DIRECTION = 1 << 4, // aim/shoot in compass direction (0000, 4000, 8000, c000)
|
|
ATTACKTYPE_AIMONLY = 1 << 5, // aim only - do not shoot
|
|
ATTACKTYPE_DONTTURN = 1 << 6, // dont do a shooting animation that would change the chrs direction
|
|
ATTACKTYPE_TARGET = 1 << 7 // aim/shoot at whatever is in the chrs `target` field
|
|
}ATTACKTYPE;
|
|
#if 0
|
|
BITFLAG(ATTACKTYPE,
|
|
BOND, /* aim/shoot at Bond */
|
|
FORWARD, /* aim/shoot in front of self */
|
|
CHR, /* aim/shoot at chr (ID should be given in entity_id) */
|
|
PAD, /* aim/shoot at pad (ID should be given in entity_id) */
|
|
DIRECTION, /* aim/shoot in compass direction (0000, 4000, 8000, c000) */
|
|
AIMONLY, /* aim only - do not shoot */
|
|
DONTTURN, /* dont do a shooting animation that would change the chrs direction*/
|
|
TARGET /* aim/shoot at whatever is in the chrs `target` field */
|
|
)
|
|
#endif
|
|
|
|
// character flags
|
|
typedef enum CHRHIDDEN
|
|
{
|
|
CHRHIDDEN_NONE,
|
|
CHRHIDDEN_DROP_HELD_ITEMS = 0x0001, // drop held items/weapons
|
|
CHRHIDDEN_ALERT_GUARD_RELATED = 0x0002, // Alert Guard
|
|
CHRHIDDEN_FIRE_WEAPON_LEFT = 0x0004, // firing left weapon
|
|
CHRHIDDEN_FIRE_WEAPON_RIGHT = 0x0008, // firing right weapon
|
|
/*
|
|
The only time 0x10 flag is kept is when the enemy is standing.
|
|
Moving, patrolling or going to pad always clears 0x10.
|
|
A guard can keep the 0x10 flag when moving, but only if it's been
|
|
off screen and using the cheap movement logic where it doesn't
|
|
calculate collision. It'll keep the 0x10 flag until the guard
|
|
appears on screen.
|
|
*/
|
|
CHRHIDDEN_OFFSCREEN_PATROL = 0x0010,
|
|
CHRHIDDEN_REMOVE = 0x0020, // remove character
|
|
CHRHIDDEN_TIMER_ACTIVE = 0x0040, // chr timer is active
|
|
CHRHIDDEN_FIRE_TRACER = 0x0080, // spawn a tracer
|
|
CHRHIDDEN_MOVING = 0x0100, // moving
|
|
CHRHIDDEN_BACKGROUND_AI = 0x0200, // chr has an AI script currently running
|
|
CHRHIDDEN_0400 = 0x0400, // unknown
|
|
CHRHIDDEN_FREEZE = 0x0800, // freeze current animation state
|
|
CHRHIDDEN_RAND_FLINCH_1 = 0x1000, // unknown
|
|
CHRHIDDEN_RAND_FLINCH_2 = 0x2000, // unknown
|
|
CHRHIDDEN_RAND_FLINCH_4 = 0x4000, // unknown
|
|
CHRHIDDEN_RAND_FLINCH_8 = 0x8000 // unknown
|
|
}CHRHIDDEN;
|
|
|
|
#define CHRHIDDEN_RAND_FLINCH_MASK (CHRHIDDEN_RAND_FLINCH_1 | CHRHIDDEN_RAND_FLINCH_2 | CHRHIDDEN_RAND_FLINCH_4 | CHRHIDDEN_RAND_FLINCH_8)
|
|
|
|
typedef enum CHRFLAG
|
|
{
|
|
CHRFLAG_NONE,
|
|
CHRFLAG_INIT = 0x00000001 , // initialize chr
|
|
CHRFLAG_CLONE = 0x00000002 , // clone on heard gunfire (used by GAILIST_STANDARD_GUARD)
|
|
CHRFLAG_NEAR_MISS = 0x00000004 , // chr was just nearly shot (sometimes set on direct hit) - resets every tick
|
|
CHRFLAG_HAS_BEEN_ON_SCREEN = 0x00000008 , // chr has been on screen before
|
|
CHRFLAG_INVINCIBLE = 0x00000010 , // invincible
|
|
CHRSTART_FORCENOBLOOD = 0x00000020, // canonical name
|
|
CHRFLAG_CAN_SHOOT_CHRS = 0x00000040 , // can shoot other guards
|
|
CHRFLAG_00000080 = 0x00000080 , // unknown
|
|
CHRFLAG_WAS_DAMAGED = 0x00000100 , // chr has taken damage (not invincible)
|
|
CHRFLAG_00000200 = 0x00000200 , // Possibly isBGAI
|
|
CHRFLAG_HIDDEN = 0x00000400 , // hidden
|
|
CHRFLAG_NO_AUTOAIM = 0x00000800 , // no autoaim
|
|
CHRFLAG_LOCK_Y_POS = 0x00001000 , // lock y position (no gravity, used for dam/cradle jump)
|
|
CHRFLAG_NO_SHADOW = 0x00002000 , // no shadow
|
|
CHRFLAG_IGNORE_ANIM_TRANSLATION = 0x00004000 , // ignore animation translation
|
|
CHRFLAG_IMPACT_ALWAYS = 0x00008000 , // Trev on cradle sets this flag so he can be shot off the platform
|
|
CHRFLAG_00010000 = 0x00010000 , // unknown
|
|
CHRFLAG_00020000 = 0x00020000 , // unknown
|
|
CHRFLAG_00040000 = 0x00040000 , // maybe: update guard ACTION ?
|
|
CHRFLAG_INCREASE_RUNNING_SPEED = 0x00080000 , // increase sprinting speed (used by trevelyan)
|
|
CHRFLAG_COUNT_DEATH_AS_CIVILIAN = 0x00100000 , // count death as civilian killed
|
|
CHRFLAG_WAS_HIT = 0x00200000 , // chr has been hit (even if invincible)
|
|
CHRFLAG_00400000 = 0x00400000 , // unknown
|
|
CHRFLAG_CULL_USING_HITBOX = 0x00800000 , // cull chr using hitbox instead of tile/clipping (useful with lock y pos flag)
|
|
CHRFLAG_01000000 = 0x01000000 , // unknown
|
|
CHRFLAG_02000000 = 0x02000000 , // unknown
|
|
CHRFLAG_04000000 = 0x04000000 , // unknown NoFade
|
|
CHRFLAG_08000000 = 0x08000000 , // unknown
|
|
CHRFLAG_10000000 = 0x10000000 , // unknown
|
|
CHRFLAG_20000000 = 0x20000000 , // unknown
|
|
CHRFLAG_40000000 = 0x40000000 , // unknown
|
|
CHRFLAG_80000000 = 0x80000000 // unknown
|
|
}CHRFLAG;
|
|
|
|
enum CHR_RENDER_PART {
|
|
CHR_RENDERPART_HEAD,
|
|
CHR_RENDERPART_TORSO,
|
|
CHR_RENDERPART_LEFT_ARM,
|
|
CHR_RENDERPART_RIGHT_ARM
|
|
};
|
|
|
|
// collision detection types
|
|
typedef enum CDTYPE
|
|
{
|
|
CDTYPE_OBJS = 0x0001,
|
|
CDTYPE_DOORS = 0x0002,
|
|
CDTYPE_PLAYERS = 0x0004,
|
|
CDTYPE_CHRS = 0x0008,
|
|
CDTYPE_PATHBLOCKER = 0x0010, // glass and scenery with OBJFLAG_PATHBLOCKER
|
|
CDTYPE_BG = 0x0020,
|
|
CDTYPE_OBJSIMMUNETOGUNFIRE = 0x0080,
|
|
CDTYPE_AIOPAQUE = 0x0100, // exclude objects with OBJFLAG_AISEETHROUGH
|
|
CDTYPE_OBJSIMMUNETOEXPLOSIONS = 0x0200,
|
|
CDTYPE_OBJSNOTSAFEORHELI = 0x0400,
|
|
CDTYPE_DOORSWITHOUTFLAG = 0x0800,
|
|
CDTYPE_CLOSEDDOORS = 0x1000,
|
|
CDTYPE_OPENDOORS = 0x2000,
|
|
CDTYPE_AJARDOORS = 0x4000,
|
|
CDTYPE_DOORSLOCKEDTOAI = 0x8000,
|
|
CDTYPE_ALL = 0x003f
|
|
} CDTYPE;
|
|
|
|
typedef enum GUARD_SETUP_FLAG // u16
|
|
{
|
|
GUARD_SETUP_FLAG_NONE = 0,
|
|
GUARD_SETUP_FLAG_SUNGLASSES = 0x0001,
|
|
GUARD_SETUP_FLAG_SUNGLASSES_50 = 0x0002, // 50% chance of sunglasses
|
|
GUARD_SETUP_FLAG_CHR_CLONE = 0x0004, // set CHRFLAG_CLONE
|
|
GUARD_SETUP_FLAG_CHR_INVINCIBLE = 0x0008, // set CHRFLAG_INVINCIBLE
|
|
GUARD_SETUP_FLAG_0010 = 0x0010, // unused
|
|
GUARD_SETUP_FLAG_0020 = 0x0020, // unused
|
|
GUARD_SETUP_FLAG_0040 = 0x0040, // unknown, used in train
|
|
GUARD_SETUP_FLAG_0080 = 0x0080, // unused
|
|
GUARD_SETUP_FLAG_0100 = 0x0100, // unused
|
|
GUARD_SETUP_FLAG_0200 = 0x0200, // unused
|
|
GUARD_SETUP_FLAG_0400 = 0x0400, // unused
|
|
GUARD_SETUP_FLAG_0800 = 0x0800, // unused
|
|
GUARD_SETUP_FLAG_1000 = 0x1000, // unused
|
|
GUARD_SETUP_FLAG_2000 = 0x2000, // unused
|
|
GUARD_SETUP_FLAG_4000 = 0x4000, // unused
|
|
GUARD_SETUP_FLAG_8000 = 0x8000 // unused
|
|
} GUARD_SETUP_FLAG;
|
|
|
|
//chr flags2
|
|
BITFLAG(FLAGS2,
|
|
DONT_POINT_AT_BOND,
|
|
02,
|
|
04
|
|
)
|
|
|
|
//PROP SOUND (Unknown values, only name known)
|
|
BITFLAG(PS_FLAGS2,
|
|
NO_DISTANCEQ
|
|
)
|
|
|
|
// prop definition flags
|
|
typedef enum PROPFLAG
|
|
{
|
|
PROPFLAG_RENDERPOSTBG = 0x00000001, // Fall to Ground
|
|
PROPFLAG_ONSCREEN = 0x00000002, // In Air Rotated 90 Deg Upside-Down
|
|
PROPFLAG_ENABLED = 0x00000004, // In Air Upside-Down
|
|
PROPFLAG_00000008 = 0x00000008, // In Air
|
|
PROPFLAG_00000010 = 0x00000010, // Scale to Pad Bounds
|
|
PROPFLAG_00000020 = 0x00000020, // Scale X to Pad Bounds
|
|
PROPFLAG_00000040 = 0x00000040, // Scale Y to Pad Bounds
|
|
PROPFLAG_00000080 = 0x00000080, // Scale Z to Pad Bounds
|
|
PROPFLAG_00000100 = 0x00000100, // Force Collisions
|
|
PROPFLAG_00000200 = 0x00000200, // Glass Env Mapping Style
|
|
PROPFLAG_ILLUMINATED = 0x00000400, // ignore Stan Colour?
|
|
PROPFLAG_00000800 = 0x00000800, // Free Standing Glass
|
|
PROPFLAG_00001000 = 0x00001000, // Absolute Position
|
|
PROPFLAG_AIUNDROPPABLE = 0x00002000, // Item Not Droppedz
|
|
PROPFLAG_ASSIGNEDTOCHR = 0x00004000, // Assigned to Actor
|
|
PROPFLAG_INSIDEANOTHEROBJ = 0x00008000, // Embedded Object
|
|
PROPFLAG_FORCEMORTAL = 0x00010000, // unknown
|
|
PROPFLAG_INVINCIBLE = 0x00020000, // Invincible
|
|
PROPFLAG_00040000 = 0x00040000, // Allow Pickup (chr_type)
|
|
PROPFLAG_00080000 = 0x00080000, // Collect Object by Interaction Button Only
|
|
PROPFLAG_UNCOLLECTABLE = 0x00100000, // Item Not Collectable
|
|
PROPFLAG_00200000 = 0x00200000, // Bounce and Destroy If Shot
|
|
PROPFLAG_00400000 = 0x00400000, // unknown
|
|
PROPFLAG_00800000 = 0x00800000, // unknown
|
|
PROPFLAG_01000000 = 0x01000000, // Embedded Object
|
|
PROPFLAG_CANNOT_ACTIVATE = 0x02000000, // Cannot Activate Door/Object
|
|
PROPFLAG_04000000 = 0x04000000, // AI Sees Through Door/Object
|
|
PROPFLAG_DOOR_TWOWAY = 0x08000000, // Open Away From Player
|
|
PROPFLAG_WEAPON_LEFTHANDED = 0x10000000, // Left-Handed weapon
|
|
PROPFLAG_GLASS_HASPORTAL = 0x10000000, // Glass Has Portal
|
|
PROPFLAG_CULL_BEHIND_DOOR = 0x10000000, // Area Behind Door Invisible
|
|
PROPFLAG_FIXED_MONITOR = 0x10000000, // Monitor Fixed
|
|
PROPFLAG_CCTV_DISABLED = 0x10000000, // Disable security camera
|
|
PROPFLAG_IS_DRONE_GUN = 0x10000000, // drone gun
|
|
PROPFLAG_DOOR_OPENTOFRONT = 0x20000000, // Open Backwards
|
|
PROPFLAG_SPECIAL_FUNC = 0x20000000, // Special Function
|
|
PROPFLAG_INMOTION = 0x20000000, // projectile/prop is in motion
|
|
PROPFLAG_CONCEAL_GUN = 0x20000000, // Conceal Weapon
|
|
PROPFLAG_MONITOR_RENDERPOSTBG = 0x40000000,
|
|
PROPFLAG_NO_PORTAL_CLOSE = 0x40000000, // Area Behind Door Visible
|
|
PROPFLAG_NO_AMMO = 0x40000000, // No Ammo on pickup
|
|
PROPFLAG_80000000 = 0x80000000, // Open By Default/Weapon Paired for Player
|
|
PROPFLAG_IS_DOUBLE = 0x80000000,
|
|
PROPFLAG_DOOR_KEEPOPEN = 0x80000000
|
|
}PROPFLAG;
|
|
|
|
// prop definition flags
|
|
typedef enum PROPFLAG2
|
|
{
|
|
PROPFLAG2_00000001 = 0x00000001, // Activate Drone Gun
|
|
PROPFLAG2_00000002 = 0x00000002, // lightweight (move when shot)
|
|
PROPFLAG2_00000004 = 0x00000004, // Interaction Text Not Shown for Doors
|
|
PROPFLAG2_00000008 = 0x00000008, // Don't Load in Multiplayer
|
|
PROPFLAG2_00000010 = 0x00000010, // Don't Load on Agent Mode
|
|
PROPFLAG2_00000020 = 0x00000020, // Don't Load on Secret Agent Mode
|
|
PROPFLAG2_00000040 = 0x00000040, // Don't Load on 00 Agent Mode
|
|
PROPFLAG2_00000080 = 0x00000080, // Don't Load on 007 Mode
|
|
PROPFLAG2_NOFALL = 0x00000100, // immobile
|
|
PROPFLAG2_FALLWITHOUTROTATION = 0x00000200, // used with mines
|
|
PROPFLAG2_LINKEDTOSAFE = 0x00000400, // unknown
|
|
PROPFLAG2_INTERACTCHECKLOS = 0x00000800, // Don't activate if stan gap Bond/Object
|
|
PROPFLAG2_00001000 = 0x00001000, // Watch Magnet Attract through Walls/Objects
|
|
PROPFLAG2_00002000 = 0x00002000, // Remove When Destroyed
|
|
PROPFLAG2_00004000 = 0x00004000, // Immune to Gunfire
|
|
PROPFLAG2_SHOOTTHROUGH = 0x00008000, // Can Shoot Through Object
|
|
PROPFLAG2_00010000 = 0x00010000, // Always Visible (in front)
|
|
PROPFLAG2_00020000 = 0x00020000, // unknown
|
|
PROPFLAG2_00040000 = 0x00040000, // Hide inventory item (for tagged armor/ammo/magazine)
|
|
PROPFLAG2_00080000 = 0x00080000, // Invincible Except to Explosions
|
|
PROPFLAG2_00100000 = 0x00100000, // Bulletproof Glass
|
|
PROPFLAG2_00200000 = 0x00200000, // Immune to Explosions
|
|
PROPFLAG2_00400000 = 0x00400000, // Don't load on 2P
|
|
PROPFLAG2_00800000 = 0x00800000, // Don't load on 3P
|
|
PROPFLAG2_01000000 = 0x01000000, // Don't load on 4P
|
|
PROPFLAG2_THROWTHROUGH = 0x02000000, // Rockets/Mines/Grenades Pass Through
|
|
PROPFLAG2_04000000 = 0x04000000, // unknown
|
|
PROPFLAG2_08000000 = 0x08000000, // One-Way Lock (Front)
|
|
PROPFLAG2_10000000 = 0x10000000, // One-Way Lock (Back)
|
|
PROPFLAG2_20000000 = 0x20000000, // Character AI Cannot Operate
|
|
PROPFLAG2_40000000 = 0x40000000, // Deactivate Special Feature
|
|
PROPFLAG2_DOOR_ALTCOORDSYSTEM = 0x80000000 // Massive Explosion (08 Type)/Rotating Disabled Drone Gun (0D Type)
|
|
} PROPFLAG2;
|
|
|
|
// Flags on DoorRecord.doorFlags (u16, offset 0x98)
|
|
typedef enum DOORFLAG
|
|
{
|
|
DOORFLAG_EXTENDEDY = 0x00000001,
|
|
DOORFLAG_WINDOWED = 0x00000002,
|
|
DOORFLAG_CLIP_TO_BBOX = 0x00000004, // Clip the mesh to the shrinking/expanding bbox while sliding
|
|
DOORFLAG_FLIP = 0x00000008
|
|
} DOORFLAG;
|
|
|
|
typedef enum DOORSTATE
|
|
{
|
|
DOORSTATE_STATIONARY,
|
|
DOORSTATE_OPENING, // also OPEN but NOT AIlist compatible (02)
|
|
DOORSTATE_CLOSING, // also CLOSE but NOT AIlist compatible (01)
|
|
DOORSTATE_WAITING // Waiting for sibling door to close. Eg. Dam gates
|
|
} DOORSTATE;
|
|
|
|
typedef enum DOORTYPE
|
|
{
|
|
DOORTYPE_SLIDING,
|
|
DOORTYPE_FLEXI1, // Bunker flexi door
|
|
DOORTYPE_FLEXI2,
|
|
DOORTYPE_FLEXI3,
|
|
DOORTYPE_VERTICAL,
|
|
DOORTYPE_SWINGING,
|
|
DOORTYPE_EYE, // Caverns
|
|
DOORTYPE_IRIS, // Caverns
|
|
DOORTYPE_FALLAWAY, // Surface grate and Train floor panel
|
|
DOORTYPE_AZTECCHAIR
|
|
} DOORTYPE;
|
|
|
|
typedef enum DOOR_OPEN_SOUND
|
|
{
|
|
DOOR_OPEN_SOUND_NONE,
|
|
DOOR_OPEN_SOUND_01,
|
|
DOOR_OPEN_SOUND_02,
|
|
DOOR_OPEN_SOUND_METAL,
|
|
DOOR_OPEN_SOUND_04,
|
|
DOOR_OPEN_SOUND_WOOD,
|
|
DOOR_OPEN_SOUND_06,
|
|
DOOR_OPEN_SOUND_WOOD_2,
|
|
DOOR_OPEN_SOUND_WOOD_3,
|
|
DOOR_OPEN_SOUND_09,
|
|
DOOR_OPEN_SOUND_METAL_2,
|
|
DOOR_OPEN_SOUND_11,
|
|
DOOR_OPEN_SOUND_METAL_3,
|
|
DOOR_OPEN_SOUND_13,
|
|
DOOR_OPEN_SOUND_HYDROLIC,
|
|
DOOR_OPEN_SOUND_STONE,
|
|
DOOR_OPEN_SOUND_16,
|
|
DOOR_OPEN_SOUND_METAL_4,
|
|
DOOR_OPEN_SOUND_18
|
|
} DOOR_OPEN_SOUND;
|
|
|
|
typedef enum DROPTYPE
|
|
{
|
|
DROPTYPE_DEFAULT = 1,
|
|
DROPTYPE_SURRENDER = 2,
|
|
DROPTYPE_THROWGRENADE = 3,
|
|
DROPTYPE_HAT = 4
|
|
} DROPTYPE;
|
|
|
|
typedef enum PROJECTILEFLAG
|
|
{
|
|
PROJECTILEFLAG_AIRBORNE = 0x00000001,
|
|
PROJECTILEFLAG_00000002 = 0x00000002,
|
|
PROJECTILEFLAG_STICKY = 0x00000004,
|
|
PROJECTILEFLAG_00000008 = 0x00000008,
|
|
PROJECTILEFLAG_POWERED = 0x00000010,
|
|
PROJECTILEFLAG_00000020 = 0x00000020,
|
|
PROJECTILEFLAG_00000040 = 0x00000040,
|
|
PROJECTILEFLAG_LAUNCHING = 0x00000080,
|
|
PROJECTILEFLAG_00000100 = 0x00000100,
|
|
PROJECTILEFLAG_00000200 = 0x00000200,
|
|
PROJECTILEFLAG_FALLING = 0x00000400,
|
|
PROJECTILEFLAG_SLIDING = 0x00000800,
|
|
PROJECTILEFLAG_00001000 = 0x00001000,
|
|
PROJECTILEFLAG_00002000 = 0x00002000,
|
|
PROJECTILEFLAG_NOTIMELIMIT = 0x00004000,
|
|
PROJECTILEFLAG_INROOM = 0x00008000,
|
|
PROJECTILEFLAG_00010000 = 0x00010000,
|
|
PROJECTILEFLAG_LIGHTWEIGHT = 0x40000000,
|
|
PROJECTILEFLAG_FREE = 0x80000000
|
|
} PROJECTILE_FLAG;
|
|
|
|
// Might be the same flags as PROJECTILEFLAG
|
|
#define EMBEDMENTFLAG_FREE 0x00000001
|
|
|
|
/* door lock flags*/
|
|
BITFLAG(DOOR_LOCK,
|
|
0,
|
|
1,
|
|
2,
|
|
3,
|
|
4,
|
|
5,
|
|
6,
|
|
7
|
|
)
|
|
|
|
/** PropDefHeaderRecord->state only u8 */
|
|
typedef enum PROPSTATE {
|
|
PROPSTATE_NONE = 0x00,
|
|
PROPSTATE_DAMAGED = 0x01,
|
|
PROPSTATE_2 = 0x02, // maybe "double damaged"
|
|
PROPSTATE_RESPAWN = 0x04,
|
|
PROPSTATE_EXT_COLISION_BLOCK = 0x08,
|
|
PROPSTATE_10 = 0x10,
|
|
PROPSTATE_20 = 0x20,
|
|
PROPSTATE_ACTIVATED = 0x40,
|
|
PROPSTATE_DESTROYED = 0x80
|
|
} PROPSTATE;
|
|
|
|
#define PROPSTATE_NORMAL PROPSTATE_NONE
|
|
|
|
typedef enum STANTILEFLAG
|
|
{
|
|
STANTILEFLAG_NORMAL = 0x01,
|
|
STANTILEFLAG_FORCECROUCH = 0x02,
|
|
STANTILEFLAG_04 = 0x04,
|
|
STANTILEFLAG_08 = 0x08,
|
|
STANTILEFLAG_10 = 0x10,
|
|
STANTILEFLAG_20 = 0x20,
|
|
STANTILEFLAG_LADDER = 0x40
|
|
} STANTILE_FLAG;
|
|
|
|
BITFLAG(PLAYERFLAG,
|
|
LOCKCONTROLS,
|
|
NOCONTROL,
|
|
NOTIMER
|
|
)
|
|
//PropDef bitflag canonically PROPHID_
|
|
BITFLAG(RUNTIMEBITFLAG,
|
|
00000001,
|
|
00000002,
|
|
REMOVE, /* removes object when set */
|
|
ISRETICK,
|
|
TAGGED,
|
|
THROWING_KNIFE_RELATED,
|
|
EMBEDDED,
|
|
HASPROJECTILE, /* this object owns a live Projectile record in obj->projectile */
|
|
00000100,
|
|
BEENOPENED,
|
|
DESTROYED, /* only set with disabled or destroyed doors */
|
|
00000800,
|
|
00001000,
|
|
PADLOCKEDDOOR,
|
|
ACTIVATED, /* activated */
|
|
00008000,
|
|
00010000,
|
|
00020000, /* owner 2bit (0-3) used to */
|
|
00040000, /* attribute kills to players */
|
|
HASOWNER,
|
|
00100000,
|
|
00200000,
|
|
00400000,
|
|
00800000,
|
|
01000000,
|
|
02000000,
|
|
04000000,
|
|
08000000,
|
|
10000000,
|
|
20000000,
|
|
40000000,
|
|
80000000
|
|
)
|
|
|
|
#define RUNTIMEBITFLAG_OWNER 0x60000
|
|
#define RUNTIMEBITSHIFT_OWNER 0x11
|
|
#define RUNTIMEBITFLAG_00000001 0x1
|
|
#define RUNTIMEBITFLAG_00000080 0x00000080
|
|
#define RUNTIMEBITFLAG_00000100 0x00000100
|
|
#define RUNTIMEBITFLAG_00001000 0x00001000
|
|
#define RUNTIMEBITFLAG_00000800 0X00000800
|
|
#define RUNTIMEBITFLAG_PADLOCKEDDOOR 0X00002000
|
|
#define RUNTIMEBITFLAG_HASOWNER 0X00080000
|
|
|
|
#define WEAPONSTATBITFLAG_00000001 0x1
|
|
/* skip from fire to reload animation; item "disappears" after use, redrawn from off-screen like knives" */
|
|
#define WEAPONSTATBITFLAG_SINGLE_USE_RELOAD 0x2
|
|
|
|
/* fire three round burst*/
|
|
#define WEAPONSTATBITFLAG_BURST_FIRE 0x4
|
|
|
|
/* auto aim capable*/
|
|
#define WEAPONSTATBITFLAG_HAS_AUTO_AIM 0x8
|
|
|
|
/* if holding trigger, click if empty */
|
|
#define WEAPONSTATBITFLAG_CLICKY 0x10
|
|
#define WEAPONSTATBITFLAG_00000020 0x20
|
|
#define WEAPONSTATBITFLAG_00000040 0x40
|
|
|
|
/* dual wield prefers to fire one hand then the other (e.g. pistols) instead of both together (e.g. automatics) */
|
|
#define WEAPONSTATBITFLAG_DUAL_WIELD_ALTERNATING_FIRE 0x80
|
|
|
|
/* requires HOLD_AS_GUN as well */
|
|
#define WEAPONSTATBITFLAG_ONLY_1_HANDED 0x100
|
|
|
|
/* default 2 handed*/
|
|
#define WEAPONSTATBITFLAG_HOLD_AS_GUN 0x200
|
|
|
|
/* mirror double weapon, not copy */
|
|
#define WEAPONSTATBITFLAG_MIRROR_DUAL 0x400
|
|
|
|
/* display 1st person model */
|
|
#define WEAPONSTATBITFLAG_SHOW_FIRST_PERSON 0x800
|
|
|
|
/* for a single first shot, inaccuracy multiplied by 0.25 */
|
|
#define WEAPONSTATBITFLAG_FIRST_SHOT_ACCURACY 0x1000
|
|
|
|
/* hide first person model in hand */
|
|
#define WEAPONSTATBITFLAG_HIDE_FIRST_PERSON_HAND 0x2000
|
|
|
|
/* hide first person model in menu */
|
|
#define WEAPONSTATBITFLAG_HIDE_FIRST_PERSON_MENU 0x4000
|
|
|
|
/* can not crouch */
|
|
#define WEAPONSTATBITFLAG_DISABLE_CROUCH 0x8000
|
|
|
|
/* count hits in player statistics */
|
|
#define WEAPONSTATBITFLAG_PLAYER_STAT_HIT 0x10000
|
|
|
|
/* increment hold time when used, to consider as weapon of choice */
|
|
#define WEAPONSTATBITFLAG_USE_HOLD_TIME 0x20000
|
|
#define WEAPONSTATBITFLAG_HAS_AMMO 0x40000
|
|
|
|
/* do not display ammo on screen */
|
|
#define WEAPONSTATBITFLAG_HIDE_AMMO_DISPLAY 0x80000
|
|
|
|
/* capable of doubles */
|
|
#define WEAPONSTATBITFLAG_CAN_DUAL_WIELD 0x100000
|
|
|
|
/* limit ammo to assigned value on clip */
|
|
#define WEAPONSTATBITFLAG_AMMO_CLIP_LIMIT 0x200000
|
|
|
|
/* no ammo clip/reloads - draw straight from ammo supply (right of icon) */
|
|
#define WEAPONSTATBITFLAG_NO_CLIP_RELOADS 0x400000
|
|
#define WEAPONSTATBITFLAG_00800000
|
|
#define WEAPONSTATBITFLAG_01000000
|
|
#define WEAPONSTATBITFLAG_02000000
|
|
#define WEAPONSTATBITFLAG_04000000
|
|
#define WEAPONSTATBITFLAG_08000000
|
|
#define WEAPONSTATBITFLAG_10000000
|
|
#define WEAPONSTATBITFLAG_20000000
|
|
#define WEAPONSTATBITFLAG_40000000
|
|
#define WEAPONSTATBITFLAG_80000000
|
|
|
|
|
|
#define OBJECTTYPE_00 0x00
|
|
#define OBJECTTYPE_01 0x01
|
|
#define OBJECTTYPE_02 0x02
|
|
#define OBJECTTYPE_03 0x03
|
|
#define OBJECTTYPE_04 0x04
|
|
#define OBJECTTYPE_05 0x05
|
|
#define OBJECTTYPE_06 0x06
|
|
#define OBJECTTYPE_07 0x07
|
|
#define OBJECTTYPE_WEAPON 0x08
|
|
#define OBJECTTYPE_09 0x09
|
|
#define OBJECTTYPE_10 0x10
|
|
#define OBJECTTYPE_11 0x11
|
|
#define OBJECTTYPE_12 0x12
|
|
#define OBJECTTYPE_13 0x13
|
|
#define OBJECTTYPE_14 0x14
|
|
#define OBJECTTYPE_15 0x15
|
|
#define OBJECTTYPE_16 0x16
|
|
#define OBJECTTYPE_17 0x17
|
|
#define OBJECTTYPE_18 0x18
|
|
#define OBJECTTYPE_19 0x19
|
|
#define OBJECTTYPE_20 0x20
|
|
#define OBJECTTYPE_21 0x21
|
|
#define OBJECTTYPE_22 0x22
|
|
#define OBJECTTYPE_23 0x23
|
|
#define OBJECTTYPE_24 0x24
|
|
#define OBJECTTYPE_25 0x25
|
|
#define OBJECTTYPE_26 0x26
|
|
#define OBJECTTYPE_27 0x27
|
|
#define OBJECTTYPE_28 0x28
|
|
#define OBJECTTYPE_29 0x29
|
|
#define OBJECTTYPE_30 0x30
|
|
#define OBJECTTYPE_31 0x31
|
|
#define OBJECTTYPE_32 0x32
|
|
#define OBJECTTYPE_33 0x33
|
|
#define OBJECTTYPE_34 0x34
|
|
#define OBJECTTYPE_35 0x35
|
|
#define OBJECTTYPE_36 0x36
|
|
|
|
#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 // second waypoint on route to target
|
|
|
|
#define CULLMODE_BOTH 0
|
|
#define CULLMODE_NONE 1
|
|
#define CULLMODE_FRONT 2
|
|
#define CULLMODE_BACK 3
|
|
|
|
#pragma endregion
|
|
|
|
#pragma region Constants
|
|
|
|
#define SP_BOOT_SZ 0x10
|
|
#define SP_RMON_SZ 0x300
|
|
#define SP_IDLE_SZ 0x40
|
|
#define SP_SHED_SZ 0x200
|
|
#define SP_MAIN_SZ 0x8000
|
|
#define SP_AUDI_SZ 0x1000
|
|
#define SP_DEBUG_SZ 0x6B0
|
|
|
|
/*
|
|
Enums Index by adding 1 to the list from the first value, unless this value
|
|
is not 0, it should not be set for every item
|
|
Enums with -1 in them should be declaired first allowing subsequent values to
|
|
once again be 0 based indices.
|
|
I have replaced below except where non-linear values are used.
|
|
RegEx for hex matching \b = 0x(?:[0-9A-Fa-f]{1}|[0-9A-Fa-f]{2})\b
|
|
RegEx for enum cleanup (enums define a sequential list without having to specify
|
|
each and every value) \b *= (?:[0-9])*\b
|
|
Regex Tabulisation (,[^,]*?){n}\}.$ where n is a number (from end)
|
|
Typed enums only apply to C++ as E_RGBA var = BRIEF_M is valid in C,
|
|
however its good practice to type them.
|
|
For C though, manual Typing info must be embedded in the enum
|
|
eg BRIEF_M is C equivelant to C++ MISSION_BRIEFING var = M
|
|
or C#/VB var = BRIEF.M
|
|
COUNT does not cause allocation of storage or change resulting
|
|
asm, just a nice helper if one wanted to loop through an
|
|
enum
|
|
Note: Count also serves as a nice debug tool verifying auto-enums
|
|
*/
|
|
|
|
//typedef u16 PAD;
|
|
//typedef u16 PAD3D;
|
|
|
|
typedef enum AI_CMD
|
|
{
|
|
#ifndef _SYNHILITE
|
|
|
|
// makes enum list
|
|
# ifdef __sgi
|
|
# define _AI_CMD(C) CAT(AI_, CMDNAME),
|
|
# define _AI_DEBUG(C) CAT(AI_, CMDNAME),
|
|
# define _AI_CMD_POLYMORPH(CMD, A, P, Q, D)
|
|
# define DEFINE(x)
|
|
# else
|
|
# define _AI_CMD(...) CAT(AI_, CMDNAME),
|
|
# define _AI_DEBUG(...) CAT(AI_, CMDNAME),
|
|
# define _AI_CMD_POLYMORPH(...)
|
|
# define DEFINE(...)
|
|
# endif
|
|
|
|
|
|
# include "aicommands.def"
|
|
#endif /* !_SYNHILITE */
|
|
|
|
AI_CMD_COUNT
|
|
} AI_CMD;
|
|
|
|
// Number of bytes for AI cmds, GE 1, PD 2
|
|
#define AICMDSIZE ((u8)(AI_CMD_COUNT / 255) + 1)
|
|
|
|
|
|
/* Motion capture actor: Duncan Botwood
|
|
* Motion capture assistance: B Jones
|
|
* Recorded using 'flock of birds' system by Ascension Technology Corporation,
|
|
* in a freezing metal barn in the depths of winter
|
|
* Note: Animations are double handed weapon (KF7) unless specified (unarmed,
|
|
* one_handed_weapon, dual_wield)
|
|
*/
|
|
typedef enum ANIMATIONS
|
|
{
|
|
ANIM_idle,
|
|
ANIM_fire_standing,
|
|
ANIM_fire_standing_fast,
|
|
ANIM_fire_hip,
|
|
ANIM_fire_shoulder_left,
|
|
ANIM_fire_turn_right1,
|
|
ANIM_fire_turn_right2,
|
|
ANIM_fire_kneel_right_leg,
|
|
ANIM_fire_kneel_left_leg,
|
|
ANIM_fire_kneel_left,
|
|
ANIM_fire_kneel_right,
|
|
ANIM_fire_roll_left,
|
|
ANIM_fire_roll_right1,
|
|
ANIM_fire_roll_left_fast,
|
|
ANIM_hit_left_shoulder,
|
|
ANIM_hit_right_shoulder,
|
|
ANIM_hit_left_arm,
|
|
ANIM_hit_right_arm,
|
|
ANIM_hit_left_hand,
|
|
ANIM_hit_right_hand,
|
|
ANIM_hit_left_leg,
|
|
ANIM_hit_right_leg,
|
|
ANIM_death_genitalia, /* Thank you Mr. Botwood, here is your award */
|
|
ANIM_hit_neck,
|
|
ANIM_death_neck,
|
|
ANIM_death_stagger_back_to_wall,
|
|
ANIM_death_forward_face_down,
|
|
ANIM_death_forward_spin_face_up,
|
|
ANIM_death_backward_fall_face_up1,
|
|
ANIM_death_backward_spin_face_down_right,
|
|
ANIM_death_backward_spin_face_up_right,
|
|
ANIM_death_backward_spin_face_down_left,
|
|
ANIM_death_backward_spin_face_up_left,
|
|
ANIM_death_forward_face_down_hard,
|
|
ANIM_death_forward_face_down_soft,
|
|
ANIM_death_fetal_position_right,
|
|
ANIM_death_fetal_position_left,
|
|
ANIM_death_backward_fall_face_up2,
|
|
ANIM_side_step_left,
|
|
ANIM_fire_roll_right2,
|
|
ANIM_walking,
|
|
ANIM_sprinting,
|
|
ANIM_running,
|
|
ANIM_bond_eye_walk,
|
|
ANIM_bond_eye_fire,
|
|
ANIM_bond_watch,
|
|
ANIM_surrendering_armed,
|
|
ANIM_surrendering_armed_drop_weapon,
|
|
ANIM_fire_walking,
|
|
ANIM_fire_running,
|
|
ANIM_null50, /* invalid slot */
|
|
ANIM_null51, /* invalid slot */
|
|
ANIM_fire_jump_to_side_left,
|
|
ANIM_fire_jump_to_side_right,
|
|
ANIM_hit_butt_long,
|
|
ANIM_hit_butt_short,
|
|
ANIM_death_head,
|
|
ANIM_death_left_leg,
|
|
ANIM_slide_right,
|
|
ANIM_slide_left,
|
|
ANIM_jump_backwards,
|
|
ANIM_extending_left_hand,
|
|
ANIM_fire_throw_grenade,
|
|
ANIM_spotting_bond, /* used by chr ai command guard_points_at_bond */
|
|
ANIM_look_around, /* used by chr ai command GUARD_ANIM_LOOKS_AROUND_SELF */
|
|
ANIM_fire_standing_one_handed_weapon,
|
|
ANIM_fire_standing_draw_one_handed_weapon_fast,
|
|
ANIM_fire_standing_draw_one_handed_weapon_slow,
|
|
ANIM_fire_hip_one_handed_weapon_fast,
|
|
ANIM_fire_hip_one_handed_weapon_slow,
|
|
ANIM_fire_hip_forward_one_handed_weapon,
|
|
ANIM_fire_standing_right_one_handed_weapon,
|
|
ANIM_fire_step_right_one_handed_weapon,
|
|
ANIM_fire_standing_left_one_handed_weapon_slow,
|
|
ANIM_fire_standing_left_one_handed_weapon_fast,
|
|
ANIM_fire_kneel_forward_one_handed_weapon_slow,
|
|
ANIM_fire_kneel_forward_one_handed_weapon_fast,
|
|
ANIM_fire_kneel_right_one_handed_weapon_slow,
|
|
ANIM_fire_kneel_right_one_handed_weapon_fast,
|
|
ANIM_fire_kneel_left_one_handed_weapon_slow,
|
|
ANIM_fire_kneel_left_one_handed_weapon_fast,
|
|
ANIM_fire_kneel_left_one_handed_weapon,
|
|
ANIM_aim_walking_one_handed_weapon,
|
|
ANIM_aim_walking_left_one_handed_weapon,
|
|
ANIM_aim_walking_right_one_handed_weapon,
|
|
ANIM_aim_running_one_handed_weapon,
|
|
ANIM_aim_running_right_one_handed_weapon,
|
|
ANIM_aim_running_left_one_handed_weapon,
|
|
ANIM_aim_sprinting_one_handed_weapon,
|
|
ANIM_running_one_handed_weapon,
|
|
ANIM_sprinting_one_handed_weapon,
|
|
ANIM_null91, /* invalid slot */
|
|
ANIM_null92, /* invalid slot */
|
|
ANIM_null93, /* invalid slot */
|
|
ANIM_null94, /* invalid slot */
|
|
ANIM_null95, /* invalid slot */
|
|
ANIM_null96, /* invalid slot */
|
|
ANIM_draw_one_handed_weapon_and_look_around,
|
|
ANIM_draw_one_handed_weapon_and_stand_up,
|
|
ANIM_aim_one_handed_weapon_left_right,
|
|
ANIM_cock_one_handed_weapon_and_turn_around,
|
|
ANIM_holster_one_handed_weapon_and_cross_arms,
|
|
ANIM_cock_one_handed_weapon_turn_around_and_stand_up,
|
|
ANIM_draw_one_handed_weapon_and_turn_around,
|
|
ANIM_step_foward_and_hold_one_handed_weapon,
|
|
ANIM_holster_one_handed_weapon_and_adjust_suit,
|
|
ANIM_idle_unarmed,
|
|
ANIM_walking_unarmed,
|
|
ANIM_fire_walking_dual_wield,
|
|
ANIM_fire_walking_dual_wield_hands_crossed,
|
|
ANIM_fire_running_dual_wield,
|
|
ANIM_fire_running_dual_wield_hands_crossed,
|
|
ANIM_fire_sprinting_dual_wield,
|
|
ANIM_fire_sprinting_dual_wield_hands_crossed,
|
|
ANIM_walking_female,
|
|
ANIM_running_female,
|
|
ANIM_fire_kneel_dual_wield,
|
|
ANIM_fire_kneel_dual_wield_left,
|
|
ANIM_fire_kneel_dual_wield_right,
|
|
ANIM_fire_kneel_dual_wield_hands_crossed,
|
|
ANIM_fire_kneel_dual_wield_hands_crossed_left,
|
|
ANIM_fire_kneel_dual_wield_hands_crossed_right,
|
|
ANIM_fire_standing_dual_wield,
|
|
ANIM_fire_standing_dual_wield_left,
|
|
ANIM_fire_standing_dual_wield_right,
|
|
ANIM_fire_standing_dual_wield_hands_crossed_left,
|
|
ANIM_fire_standing_dual_wield_hands_crossed_right,
|
|
ANIM_fire_standing_aiming_down_sights,
|
|
ANIM_fire_kneel_aiming_down_sights,
|
|
ANIM_hit_taser, /* unused tazer boy hit reaction */
|
|
ANIM_death_explosion_forward,
|
|
ANIM_death_explosion_left1,
|
|
ANIM_death_explosion_back_left,
|
|
ANIM_death_explosion_back1,
|
|
ANIM_death_explosion_right,
|
|
ANIM_death_explosion_forward_right1,
|
|
ANIM_death_explosion_back2,
|
|
ANIM_death_explosion_forward_roll,
|
|
ANIM_death_explosion_forward_face_down,
|
|
ANIM_death_explosion_left2,
|
|
ANIM_death_explosion_forward_right2,
|
|
ANIM_death_explosion_forward_right2_alt, /* copy of right2 with different fall */
|
|
ANIM_death_explosion_forward_right3,
|
|
ANIM_null143, /* invalid slot */
|
|
ANIM_null144, /* invalid slot */
|
|
ANIM_null145, /* invalid slot */
|
|
ANIM_null146, /* invalid slot */
|
|
ANIM_running_hands_up,
|
|
ANIM_sprinting_hands_up,
|
|
ANIM_aim_and_blow_one_handed_weapon,
|
|
ANIM_aim_one_handed_weapon_left,
|
|
ANIM_aim_one_handed_weapon_right,
|
|
ANIM_conversation,
|
|
ANIM_drop_weapon_and_show_fight_stance, /* orthodox stance woo */
|
|
ANIM_yawning,
|
|
ANIM_swatting_flies,
|
|
ANIM_scratching_leg,
|
|
ANIM_scratching_butt,
|
|
ANIM_adjusting_crotch,
|
|
ANIM_sneeze,
|
|
ANIM_conversation_cleaned, /* cleaned up copy of ANIM_conversation (compare left wrist) */
|
|
ANIM_conversation_listener,
|
|
ANIM_startled_and_looking_around,
|
|
ANIM_laughing_in_disbelief,
|
|
ANIM_surrendering_unarmed,
|
|
ANIM_coughing_standing,
|
|
ANIM_coughing_kneel1,
|
|
ANIM_coughing_kneel2,
|
|
ANIM_standing_up,
|
|
ANIM_null169, /* invalid slot */
|
|
ANIM_dancing,
|
|
ANIM_dancing_one_handed_weapon,
|
|
ANIM_keyboard_right_hand1,
|
|
ANIM_keyboard_right_hand2,
|
|
ANIM_keyboard_left_hand,
|
|
ANIM_keyboard_right_hand_tapping,
|
|
ANIM_bond_eye_fire_alt, /* unused */
|
|
ANIM_dam_jump,
|
|
ANIM_surface_vent_jump,
|
|
ANIM_cradle_jump,
|
|
ANIM_cradle_fall,
|
|
ANIM_credits_bond_kissing,
|
|
ANIM_credits_natalya_kissing,
|
|
ANIM_MAX
|
|
} ANIMATIONS;
|
|
#ifdef AIPARSE
|
|
char *ANIMATIONS_ToString[] = {
|
|
"ANIM_idle",
|
|
"ANIM_fire_standing",
|
|
"ANIM_fire_standing_fast",
|
|
"ANIM_fire_hip",
|
|
"ANIM_fire_shoulder_left",
|
|
"ANIM_fire_turn_right1",
|
|
"ANIM_fire_turn_right2",
|
|
"ANIM_fire_kneel_right_leg",
|
|
"ANIM_fire_kneel_left_leg",
|
|
"ANIM_fire_kneel_left",
|
|
"ANIM_fire_kneel_right",
|
|
"ANIM_fire_roll_left",
|
|
"ANIM_fire_roll_right1",
|
|
"ANIM_fire_roll_left_fast",
|
|
"ANIM_hit_left_shoulder",
|
|
"ANIM_hit_right_shoulder",
|
|
"ANIM_hit_left_arm",
|
|
"ANIM_hit_right_arm",
|
|
"ANIM_hit_left_hand",
|
|
"ANIM_hit_right_hand",
|
|
"ANIM_hit_left_leg",
|
|
"ANIM_hit_right_leg",
|
|
"ANIM_death_genitalia", /* Thank you Mr. Botwood", here is your award */
|
|
"ANIM_hit_neck",
|
|
"ANIM_death_neck",
|
|
"ANIM_death_stagger_back_to_wall",
|
|
"ANIM_death_forward_face_down",
|
|
"ANIM_death_forward_spin_face_up",
|
|
"ANIM_death_backward_fall_face_up1",
|
|
"ANIM_death_backward_spin_face_down_right",
|
|
"ANIM_death_backward_spin_face_up_right",
|
|
"ANIM_death_backward_spin_face_down_left",
|
|
"ANIM_death_backward_spin_face_up_left",
|
|
"ANIM_death_forward_face_down_hard",
|
|
"ANIM_death_forward_face_down_soft",
|
|
"ANIM_death_fetal_position_right",
|
|
"ANIM_death_fetal_position_left",
|
|
"ANIM_death_backward_fall_face_up2",
|
|
"ANIM_side_step_left",
|
|
"ANIM_fire_roll_right2",
|
|
"ANIM_walking",
|
|
"ANIM_sprinting",
|
|
"ANIM_running",
|
|
"ANIM_bond_eye_walk",
|
|
"ANIM_bond_eye_fire",
|
|
"ANIM_bond_watch",
|
|
"ANIM_surrendering_armed",
|
|
"ANIM_surrendering_armed_drop_weapon",
|
|
"ANIM_fire_walking",
|
|
"ANIM_fire_running",
|
|
"ANIM_null50", /* invalid slot */
|
|
"ANIM_null51", /* invalid slot */
|
|
"ANIM_fire_jump_to_side_left",
|
|
"ANIM_fire_jump_to_side_right",
|
|
"ANIM_hit_butt_long",
|
|
"ANIM_hit_butt_short",
|
|
"ANIM_death_head",
|
|
"ANIM_death_left_leg",
|
|
"ANIM_slide_right",
|
|
"ANIM_slide_left",
|
|
"ANIM_jump_backwards",
|
|
"ANIM_extending_left_hand",
|
|
"ANIM_fire_throw_grenade",
|
|
"ANIM_spotting_bond", /* used by chr ai command guard_points_at_bond */
|
|
"ANIM_look_around", /* used by chr ai command GUARD_ANIM_LOOKS_AROUND_SELF */
|
|
"ANIM_fire_standing_one_handed_weapon",
|
|
"ANIM_fire_standing_draw_one_handed_weapon_fast",
|
|
"ANIM_fire_standing_draw_one_handed_weapon_slow",
|
|
"ANIM_fire_hip_one_handed_weapon_fast",
|
|
"ANIM_fire_hip_one_handed_weapon_slow",
|
|
"ANIM_fire_hip_forward_one_handed_weapon",
|
|
"ANIM_fire_standing_right_one_handed_weapon",
|
|
"ANIM_fire_step_right_one_handed_weapon",
|
|
"ANIM_fire_standing_left_one_handed_weapon_slow",
|
|
"ANIM_fire_standing_left_one_handed_weapon_fast",
|
|
"ANIM_fire_kneel_forward_one_handed_weapon_slow",
|
|
"ANIM_fire_kneel_forward_one_handed_weapon_fast",
|
|
"ANIM_fire_kneel_right_one_handed_weapon_slow",
|
|
"ANIM_fire_kneel_right_one_handed_weapon_fast",
|
|
"ANIM_fire_kneel_left_one_handed_weapon_slow",
|
|
"ANIM_fire_kneel_left_one_handed_weapon_fast",
|
|
"ANIM_fire_kneel_left_one_handed_weapon",
|
|
"ANIM_aim_walking_one_handed_weapon",
|
|
"ANIM_aim_walking_left_one_handed_weapon",
|
|
"ANIM_aim_walking_right_one_handed_weapon",
|
|
"ANIM_aim_running_one_handed_weapon",
|
|
"ANIM_aim_running_right_one_handed_weapon",
|
|
"ANIM_aim_running_left_one_handed_weapon",
|
|
"ANIM_aim_sprinting_one_handed_weapon",
|
|
"ANIM_running_one_handed_weapon",
|
|
"ANIM_sprinting_one_handed_weapon",
|
|
"ANIM_null91", /* invalid slot */
|
|
"ANIM_null92", /* invalid slot */
|
|
"ANIM_null93", /* invalid slot */
|
|
"ANIM_null94", /* invalid slot */
|
|
"ANIM_null95", /* invalid slot */
|
|
"ANIM_null96", /* invalid slot */
|
|
"ANIM_draw_one_handed_weapon_and_look_around",
|
|
"ANIM_draw_one_handed_weapon_and_stand_up",
|
|
"ANIM_aim_one_handed_weapon_left_right",
|
|
"ANIM_cock_one_handed_weapon_and_turn_around",
|
|
"ANIM_holster_one_handed_weapon_and_cross_arms",
|
|
"ANIM_cock_one_handed_weapon_turn_around_and_stand_up",
|
|
"ANIM_draw_one_handed_weapon_and_turn_around",
|
|
"ANIM_step_foward_and_hold_one_handed_weapon",
|
|
"ANIM_holster_one_handed_weapon_and_adjust_suit",
|
|
"ANIM_idle_unarmed",
|
|
"ANIM_walking_unarmed",
|
|
"ANIM_fire_walking_dual_wield",
|
|
"ANIM_fire_walking_dual_wield_hands_crossed",
|
|
"ANIM_fire_running_dual_wield",
|
|
"ANIM_fire_running_dual_wield_hands_crossed",
|
|
"ANIM_fire_sprinting_dual_wield",
|
|
"ANIM_fire_sprinting_dual_wield_hands_crossed",
|
|
"ANIM_walking_female",
|
|
"ANIM_running_female",
|
|
"ANIM_fire_kneel_dual_wield",
|
|
"ANIM_fire_kneel_dual_wield_left",
|
|
"ANIM_fire_kneel_dual_wield_right",
|
|
"ANIM_fire_kneel_dual_wield_hands_crossed",
|
|
"ANIM_fire_kneel_dual_wield_hands_crossed_left",
|
|
"ANIM_fire_kneel_dual_wield_hands_crossed_right",
|
|
"ANIM_fire_standing_dual_wield",
|
|
"ANIM_fire_standing_dual_wield_left",
|
|
"ANIM_fire_standing_dual_wield_right",
|
|
"ANIM_fire_standing_dual_wield_hands_crossed_left",
|
|
"ANIM_fire_standing_dual_wield_hands_crossed_right",
|
|
"ANIM_fire_standing_aiming_down_sights",
|
|
"ANIM_fire_kneel_aiming_down_sights",
|
|
"ANIM_hit_taser", /* unused tazer boy hit reaction */
|
|
"ANIM_death_explosion_forward",
|
|
"ANIM_death_explosion_left1",
|
|
"ANIM_death_explosion_back_left",
|
|
"ANIM_death_explosion_back1",
|
|
"ANIM_death_explosion_right",
|
|
"ANIM_death_explosion_forward_right1",
|
|
"ANIM_death_explosion_back2",
|
|
"ANIM_death_explosion_forward_roll",
|
|
"ANIM_death_explosion_forward_face_down",
|
|
"ANIM_death_explosion_left2",
|
|
"ANIM_death_explosion_forward_right2",
|
|
"ANIM_death_explosion_forward_right2_alt", /* copy of right2 with different fall */
|
|
"ANIM_death_explosion_forward_right3",
|
|
"ANIM_null143", /* invalid slot */
|
|
"ANIM_null144", /* invalid slot */
|
|
"ANIM_null145", /* invalid slot */
|
|
"ANIM_null146", /* invalid slot */
|
|
"ANIM_running_hands_up",
|
|
"ANIM_sprinting_hands_up",
|
|
"ANIM_aim_and_blow_one_handed_weapon",
|
|
"ANIM_aim_one_handed_weapon_left",
|
|
"ANIM_aim_one_handed_weapon_right",
|
|
"ANIM_conversation",
|
|
"ANIM_drop_weapon_and_show_fight_stance", /* orthodox stance woo */
|
|
"ANIM_yawning",
|
|
"ANIM_swatting_flies",
|
|
"ANIM_scratching_leg",
|
|
"ANIM_scratching_butt",
|
|
"ANIM_adjusting_crotch",
|
|
"ANIM_sneeze",
|
|
"ANIM_conversation_cleaned", /* cleaned up copy of "ANIM_conversation (compare left wrist) */
|
|
"ANIM_conversation_listener",
|
|
"ANIM_startled_and_looking_around",
|
|
"ANIM_laughing_in_disbelief",
|
|
"ANIM_surrendering_unarmed",
|
|
"ANIM_coughing_standing",
|
|
"ANIM_coughing_kneel1",
|
|
"ANIM_coughing_kneel2",
|
|
"ANIM_standing_up",
|
|
"ANIM_null169", /* invalid slot */
|
|
"ANIM_dancing",
|
|
"ANIM_dancing_one_handed_weapon",
|
|
"ANIM_keyboard_right_hand1",
|
|
"ANIM_keyboard_right_hand2",
|
|
"ANIM_keyboard_left_hand",
|
|
"ANIM_keyboard_right_hand_tapping",
|
|
"ANIM_bond_eye_fire_alt", /* unused */
|
|
"ANIM_dam_jump",
|
|
"ANIM_surface_vent_jump",
|
|
"ANIM_cradle_jump",
|
|
"ANIM_cradle_fall",
|
|
"ANIM_credits_bond_kissing",
|
|
"ANIM_credits_natalya_kissing"};
|
|
|
|
#endif
|
|
typedef enum AIRCRAFT_ANIMATION
|
|
{
|
|
AIRCRAFT_ANIMATION_helicopter_cradle,
|
|
AIRCRAFT_ANIMATION_plane_runway,
|
|
AIRCRAFT_ANIMATION_helicopter_takeoff,
|
|
AIRCRAFT_ANIMATION_MAX
|
|
} AIRCRAFT_ANIMATION;
|
|
|
|
#ifdef AIPARSE
|
|
char *AIRCRAFT_ANIMATION_ToString[] = {
|
|
"AIRCRAFT_ANIMATION_helicopter_cradle",
|
|
"AIRCRAFT_ANIMATION_plane_runway",
|
|
"AIRCRAFT_ANIMATION_helicopter_takeoff"};
|
|
#endif
|
|
|
|
/*
|
|
values need to be verified against cheat.c : void cheatButtonHandleCheatsTurnedOn(CHEAT_ID cheat)
|
|
*/
|
|
typedef enum CHEAT_IDS
|
|
{
|
|
|
|
CHEAT_UNUSED,
|
|
CHEAT_EXTRA_MP_CHARS,
|
|
CHEAT_INVINCIBILITY,
|
|
CHEAT_ALLGUNS,
|
|
CHEAT_MAXAMMO,
|
|
CHEAT_DEBUG_UNK5, /* unverified */
|
|
CHEAT_DEACTIVATE_INVINCIBILITY,
|
|
CHEAT_LINEMODE,
|
|
CHEAT_2X_HEALTH,
|
|
CHEAT_2X_ARMOR,
|
|
CHEAT_INVISIBILITY,
|
|
CHEAT_INFINITE_AMMO,
|
|
CHEAT_DK_MODE,
|
|
CHEAT_EXTRA_WEAPONS,
|
|
CHEAT_TINY_BOND,
|
|
CHEAT_PAINTBALL,
|
|
CHEAT_10X_HEALTH,
|
|
CHEAT_MAGNUM,
|
|
CHEAT_LASER,
|
|
CHEAT_GOLDEN_GUN,
|
|
CHEAT_SILVER_PP7,
|
|
CHEAT_GOLD_PP7,
|
|
CHEAT_BONDPHASE,
|
|
CHEAT_NO_RADAR_MP,
|
|
CHEAT_TURBO_MODE,
|
|
CHEAT_DEBUG_POS,
|
|
CHEAT_FAST_ANIMATION,
|
|
CHEAT_SLOW_ANIMATION,
|
|
CHEAT_ENEMY_ROCKETS,
|
|
CHEAT_2X_ROCKET_LAUNCHER,
|
|
CHEAT_2X_GRENADE_LAUNCHER,
|
|
CHEAT_2X_RCP90,
|
|
CHEAT_2X_THROWING_KNIFE,
|
|
CHEAT_2X_HUNTING_KNIFE,
|
|
CHEAT_2X_LASER,
|
|
|
|
CHEAT_UNLOCK_PAINTBALL,
|
|
CHEAT_UNLOCK_INVINCIBLE,
|
|
CHEAT_UNLOCK_DKMODE,
|
|
CHEAT_UNLOCK_2XGL,
|
|
CHEAT_UNLOCK_2XRL,
|
|
CHEAT_UNLOCK_TURBO,
|
|
CHEAT_UNLOCK_NORADAR,
|
|
CHEAT_UNLOCK_TINY,
|
|
CHEAT_UNLOCK_2XTKNIFE,
|
|
CHEAT_UNLOCK_FAST,
|
|
CHEAT_UNLOCK_INVIS,
|
|
CHEAT_UNLOCK_ENEMYRL,
|
|
CHEAT_UNLOCK_SLOW,
|
|
CHEAT_UNLOCK_SILVERPPK,
|
|
CHEAT_UNLOCK_2XHKNIFE,
|
|
CHEAT_UNLOCK_INFAMMO,
|
|
CHEAT_UNLOCK_2XFNP0,
|
|
CHEAT_UNLOCK_GOLDPPK,
|
|
CHEAT_UNLOCK_2XLASER,
|
|
CHEAT_UNLOCK_ALLGUNS,
|
|
|
|
CHEAT_UNLOCK_DAM,
|
|
CHEAT_UNLOCK_FACILITY,
|
|
CHEAT_UNLOCK_RUNWAY,
|
|
CHEAT_UNLOCK_SURFACE,
|
|
CHEAT_UNLOCK_BUNKER,
|
|
CHEAT_UNLOCK_SILO,
|
|
CHEAT_UNLOCK_FRIGATE,
|
|
CHEAT_UNLOCK_SURFACE2,
|
|
CHEAT_UNLOCK_BUNKER2,
|
|
CHEAT_UNLOCK_STATUE,
|
|
CHEAT_UNLOCK_ARCHIVES,
|
|
CHEAT_UNLOCK_STREETS,
|
|
CHEAT_UNLOCK_DEPOT,
|
|
CHEAT_UNLOCK_TRAIN,
|
|
CHEAT_UNLOCK_JUNGLE,
|
|
CHEAT_UNLOCK_CONTROL,
|
|
CHEAT_UNLOCK_CAVERNS,
|
|
CHEAT_UNLOCK_CRADLE,
|
|
CHEAT_UNLOCK_AZTEK,
|
|
CHEAT_UNLOCK_EGYPT,
|
|
|
|
CHEAT_INVALID,
|
|
|
|
CHEAT_MAX = CHEAT_INVALID+5
|
|
} CHEAT_ID;
|
|
|
|
//Controller stuff including Rumble Pak are in joy.c
|
|
|
|
typedef enum CONTROLLER_CONFIG
|
|
{
|
|
/* 1.1 */
|
|
CONTROLLER_CONFIG_HONEY,
|
|
|
|
/* 1.2 */
|
|
CONTROLLER_CONFIG_SOLITARE,
|
|
|
|
/* 1.3 */
|
|
CONTROLLER_CONFIG_KISSY,
|
|
|
|
/* 1.4 */
|
|
CONTROLLER_CONFIG_GOODNIGHT,
|
|
|
|
/* 2.1 */
|
|
CONTROLLER_CONFIG_PLENTY,
|
|
|
|
/* 2.2 */
|
|
CONTROLLER_CONFIG_GALORE,
|
|
|
|
/* 2.3 */
|
|
CONTROLLER_CONFIG_DOMINO,
|
|
|
|
/* 2.4 */
|
|
CONTROLLER_CONFIG_GOODHEAD,
|
|
|
|
CONTROLLER_CONFIG_CINEMA
|
|
} CONTROLLER_CONFIG;
|
|
|
|
enum WALLETBOND_SWITCHNAMES
|
|
{
|
|
SW_TABS,
|
|
SW_PAPER,
|
|
SW_EYESONLY,
|
|
SW_OHMSS,
|
|
SW_CONFIDENTIAL,
|
|
SW_CONFIDENTIAL2,
|
|
SW_CLASSIFIED,
|
|
SW_PHOTOBOND,
|
|
SW_BROSNAN,
|
|
SW_CONNERY,
|
|
SW_DALTON,
|
|
SW_MOORE,
|
|
SW_PHOTOBRIEF,
|
|
SW_COVER,
|
|
SW_PHOTOCOVER,
|
|
SW_BROSNANCOVER,
|
|
SW_CONNERYCOVER,
|
|
SW_DALTONCOVER,
|
|
SW_MOORECOVER,
|
|
SW_SLIDES,
|
|
SW_PICS,
|
|
GFXHIT0_PICS,
|
|
SW_BRIEF1,
|
|
SW_BRIEF2,
|
|
SW_BRIEF3,
|
|
SW_BRIEF4,
|
|
SW_BRIEF5,
|
|
SW_BRIEF6,
|
|
SW_BRIEF7,
|
|
SW_BRIEF8,
|
|
SW_BRIEF9,
|
|
SW_BRIEF10,
|
|
SW_BRIEF11,
|
|
SW_BRIEF12,
|
|
SW_BRIEF13,
|
|
SW_BRIEF14,
|
|
SW_BRIEF15,
|
|
SW_BRIEF16,
|
|
SW_BRIEF17,
|
|
SW_BRIEF18,
|
|
SW_BRIEF19,
|
|
SW_BRIEF20,
|
|
SW_BLANK
|
|
} ;
|
|
|
|
typedef enum GAMELENGTH
|
|
{
|
|
LEN_UNLIMITED,
|
|
LEN_5MIN,
|
|
LEN_10MIN,
|
|
LEN_20MIN,
|
|
LEN_5PT,
|
|
LEN_10PT,
|
|
LEN_20PT,
|
|
LEN_LAST
|
|
} GAMELENGTH;
|
|
|
|
typedef enum CUFF_TYPES
|
|
{
|
|
CUFF_BLUE,
|
|
CUFF_BROSNAN,
|
|
CUFF_JUNGLE,
|
|
CUFF_BOILER,
|
|
CUFF_SNOW,
|
|
CUFF_CONNERY,
|
|
CUFF_DALTON,
|
|
CUFF_MOORE,
|
|
CUFF_FOLDER
|
|
} CUFF_TYPES;
|
|
#ifdef AIPARSE
|
|
char *CUFF_TYPES_ToString[] = {
|
|
"CUFF_BLUE",
|
|
"CUFF_BROSNAN",
|
|
"CUFF_JUNGLE",
|
|
"CUFF_BOILER",
|
|
"CUFF_SNOW",
|
|
"CUFF_CONNERY",
|
|
"CUFF_DALTON",
|
|
"CUFF_MOORE",
|
|
"CUFF_FOLDER"};
|
|
#endif
|
|
|
|
typedef enum CREDITS_ALIGNMENT
|
|
{
|
|
CREDITS_ALIGN_PREVIOUS = -1,
|
|
CREDITS_ALIGN_RIGHT,
|
|
CREDITS_ALIGN_LEFT,
|
|
CREDITS_ALIGN_CENTER
|
|
} CREDITS_ALIGNMENT;
|
|
|
|
typedef enum CROUCH
|
|
{
|
|
CROUCH_SQUAT,
|
|
CROUCH_HALF,
|
|
CROUCH_STAND
|
|
}CROUCH;
|
|
|
|
typedef enum DEBUG_OPTIONS
|
|
{
|
|
DEB_MOVE_VIEW,
|
|
DEB_STAN_VIEW,
|
|
DEB_BOND_VIEW,
|
|
DEB_LEVEL,
|
|
DEB_REGION,
|
|
DEB_SCALE,
|
|
DEB_PLAYTITLE,
|
|
DEB_BONDDIE,
|
|
DEB_SELANIM,
|
|
DEB_GUNPOS,
|
|
DEB_FLASHCOLOR,
|
|
DEB_HITCOLOR,
|
|
DEB_MUSIC,
|
|
DEB_SFX,
|
|
DEB_INVINCIBLE,
|
|
DEB_VISIBILE,
|
|
DEB_COLLISIONS,
|
|
DEB_ALLGUNS,
|
|
DEB_MAXAMMO,
|
|
DEB_DISPSPEED,
|
|
DEB_BG,
|
|
DEB_PROPS,
|
|
DEB_STANHIT,
|
|
DEB_STANREGION,
|
|
DEB_STANPROBLEMS,
|
|
DEB_PRTMANPOS,
|
|
DEB_PORTCLOSE,
|
|
DEB_PORT_INF,
|
|
DEB_PORT_APPROX,
|
|
DEB_PRROOMLOADS,
|
|
DEB_SHOWMEMUSE,
|
|
DEB_SHOWMEMBARS,
|
|
DEB_GRABRGB,
|
|
DEB_GRABJPG,
|
|
DEB_TASKGRAB,
|
|
DEB_RNDWALK,
|
|
DEB_RECRAMROM,
|
|
DEB_RECORD1,
|
|
DEB_RECORD2,
|
|
DEB_RECORD3,
|
|
DEB_REPLAYRAMROM,
|
|
DEB_SAVERAMROM,
|
|
DEB_LOADRAMROM,
|
|
DEB_AUTOAIMY,
|
|
DEB_AUTOAIMX,
|
|
DEB_007,
|
|
DEB_AGENT,
|
|
DEB_ALL,
|
|
DEB_FAST,
|
|
DEB_OBJECTIVES,
|
|
DEB_MARGTOP,
|
|
DEB_MARGBOT,
|
|
DEB_MARGLEFT,
|
|
DEB_MARGRIGHT,
|
|
DEB_MARGRESET,
|
|
DEB_SCREENSIZE,
|
|
DEB_SCREENPOS,
|
|
DEB_SHOWPATROLS,
|
|
DEB_INTRO,
|
|
DEB_INTRO_EDIT,
|
|
DEB_INTRO_POS,
|
|
DEB_WORLD_POS,
|
|
DEB_GUNKEYPOS,
|
|
DEB_VISCVG,
|
|
DEB_CHRNUM,
|
|
DEB_ROOMBLOCKS,
|
|
DEB_PROFILE,
|
|
DEB_OBJLOAD,
|
|
DEB_WEAPONLOAD,
|
|
DEB_JOY2SKYEDIT,
|
|
DEB_JOY2HITSEDIT,
|
|
DEB_JOY2DETAILEDIT,
|
|
DEB_EXPLOSIONINFO,
|
|
DEB_MAGICFOG,
|
|
DEB_GUNWATCHPOS,
|
|
DEB_TESTINGMANPOS,
|
|
DEB_FOG
|
|
} DEBUG_MODES;
|
|
|
|
|
|
typedef enum DIFFICULTY
|
|
{
|
|
DIFFICULTY_MULTI = -1,
|
|
DIFFICULTY_AGENT,
|
|
DIFFICULTY_SECRET,
|
|
DIFFICULTY_00,
|
|
DIFFICULTY_007,
|
|
DIFFICULTY_MAX
|
|
} DIFFICULTY;
|
|
#ifdef AIPARSE
|
|
// Add 1 to ID for correct string
|
|
char *DIFFICULTY_ToString[] = {
|
|
"DIFFICULTY_MULTI", //-1
|
|
"DIFFICULTY_AGENT",
|
|
"DIFFICULTY_SECRET",
|
|
"DIFFICULTY_00",
|
|
"DIFFICULTY_007",
|
|
};
|
|
#endif
|
|
|
|
typedef enum ENVIRONMENTDATA_IDS
|
|
{
|
|
ENVIRONMENTDATA_PLAYERS_1,
|
|
ENVIRONMENTDATA_ALT = 100,
|
|
ENVIRONMENTDATA_PLAYERS_2 = 200,
|
|
ENVIRONMENTDATA_PLAYERS_3 = 300,
|
|
ENVIRONMENTDATA_PLAYERS_4 = 400,
|
|
ENVIRONMENTDATA_CINEMA = 900
|
|
|
|
} ENVIRONMENTDATA_IDS;
|
|
|
|
#define ENVIRONMENTDATA_END 0
|
|
|
|
typedef enum E_EXPLOSIONTYPE
|
|
{
|
|
EXPLOSION_BREAK_OBJECT,
|
|
EXPLOSION_BREAK_OBJECT2,
|
|
EXPLOSION_MEDIUM,
|
|
EXPLOSION_MEDIUM2,
|
|
EXPLOSION_LARGE,
|
|
EXPLOSION_LARGE2,
|
|
EXPLOSION_SMALL,
|
|
EXPLOSION_SMALL2,
|
|
EXPLOSION_MEDUIM_SMALLFIRE,
|
|
EXPLOSION_MULTIFIRE,
|
|
EXPLOSION_MEDIUM3,
|
|
EXPLOSION_MEDIUM4,
|
|
EXPLOSION_EXTINGUISHER,
|
|
EXPLOSION_LARGE4,
|
|
EXPLOSION_MUSHROOM,
|
|
EXPLOSION_BITS,
|
|
E_EXPLOSIONTYPE_COUNT
|
|
} E_EXPLOSIONTYPE;
|
|
|
|
/* index into g_ExplosionTypes.
|
|
* Is this the same as E_EXPLOSIONTYPE ?
|
|
* Some names are based on logic in chrobjWeaponTick method.
|
|
*/
|
|
typedef enum EXPLOSION_DEF
|
|
{
|
|
EXPLOSION_DEF_00,
|
|
EXPLOSION_DEF_01,
|
|
EXPLOSION_DEF_02,
|
|
EXPLOSION_DEF_03,
|
|
EXPLOSION_DEF_04,
|
|
EXPLOSION_DEF_05,
|
|
EXPLOSION_DEF_06,
|
|
EXPLOSION_DEF_07,
|
|
EXPLOSION_DEF_08,
|
|
EXPLOSION_DEF_09,
|
|
EXPLOSION_DEF_10,
|
|
EXPLOSION_DEF_11,
|
|
EXPLOSION_DEF_DRONE,
|
|
// used with grenades and mines
|
|
EXPLOSION_DEF_STANDARD,
|
|
EXPLOSION_DEF_14,
|
|
EXPLOSION_DEF_15,
|
|
EXPLOSION_DEF_16,
|
|
EXPLOSION_DEF_MASSIVE,
|
|
EXPLOSION_DEF_PLAYER,
|
|
EXPLOSION_DEF_FACILITY_REMOTE,
|
|
EXPLOSION_DEF_20,
|
|
EXPLOSION_DEF_21
|
|
} EXPLOSION_DEF;
|
|
|
|
typedef enum GAMEMODE
|
|
{
|
|
GAMEMODE_INTRO = -1,
|
|
GAMEMODE_SOLO,
|
|
GAMEMODE_MULTI,
|
|
GAMEMODE_CHEATS
|
|
} GAMEMODE;
|
|
|
|
typedef enum GUN_ANIMATION_STATE_IDS
|
|
{
|
|
GUN_ANIM_STATE_IDLE,
|
|
GUN_ANIM_STATE_TRIGGER_PRESS,
|
|
GUN_ANIM_STATE_FIRE,
|
|
GUN_ANIM_STATE_RECOIL1,
|
|
GUN_ANIM_STATE_RECOIL2,
|
|
GUN_ANIM_STATE_SWITCH_LOWER,
|
|
GUN_ANIM_STATE_SWITCH_SWAP,
|
|
GUN_ANIM_STATE_SWITCH_HOLD,
|
|
GUN_ANIM_STATE_SWITCH_RAISE,
|
|
GUN_ANIM_STATE_RELOAD_START,
|
|
GUN_ANIM_STATE_RELOAD_LOWER,
|
|
GUN_ANIM_STATE_RELOAD_SWAP,
|
|
GUN_ANIM_STATE_RELOAD_RAISE,
|
|
GUN_ANIM_STATE_DRY_FIRE,
|
|
GUN_ANIM_STATE_WATCH_LOWER,
|
|
GUN_ANIM_STATE_WATCH_SWAP,
|
|
GUN_ANIM_STATE_WATCH_RAISE,
|
|
GUN_ANIM_STATE_KNIFE_SLASH1_BEGIN, // Slash right to left
|
|
GUN_ANIM_STATE_KNIFE_SLASH1_STRIKE,
|
|
GUN_ANIM_STATE_KNIFE_SLASH1_RECOVER,
|
|
GUN_ANIM_STATE_KNIFE_SLASH2_BEGIN, // Slash left to right
|
|
GUN_ANIM_STATE_KNIFE_SLASH2_STRIKE,
|
|
GUN_ANIM_STATE_KNIFE_SLASH2_RECOVER,
|
|
GUN_ANIM_STATE_THROWKNIFE_DRAW,
|
|
GUN_ANIM_STATE_THROWKNIFE_THROW,
|
|
GUN_ANIM_STATE_THROWKNIFE_RECOVER,
|
|
GUN_ANIM_STATE_GRENADE_THROW,
|
|
GUN_ANIM_STATE_GRENADE_RECOVER,
|
|
GUN_ANIM_STATE_MINE_PLACE,
|
|
GUN_ANIM_STATE_MINE_RECOVER,
|
|
GUN_ANIM_STATE_PUNCH1_STRIKE,
|
|
GUN_ANIM_STATE_PUNCH1_RECOVER,
|
|
GUN_ANIM_STATE_PUNCH2_STRIKE,
|
|
GUN_ANIM_STATE_PUNCH2_RECOVER,
|
|
GUN_ANIM_STATE_UNUSED_34,
|
|
GUN_ANIM_STATE_UNUSED_35,
|
|
GUN_ANIM_STATE_USE_ITEM
|
|
} GUN_ANIMATION_STATE_IDS;
|
|
|
|
typedef enum GUNHAND //Canonical name
|
|
{
|
|
GUNRIGHT,
|
|
GUNLEFT,
|
|
GUNHANDS
|
|
} GUNHAND;
|
|
|
|
|
|
/*Hit Type for triangle (Canonical name)*/
|
|
typedef enum HIT_TYPE
|
|
{
|
|
HIT_DEFAULT,
|
|
HIT_STONE,
|
|
HIT_WOOD,
|
|
HIT_METAL,
|
|
HIT_GLASS,
|
|
HIT_WATER,
|
|
HIT_SNOW,
|
|
HIT_DIRT,
|
|
HIT_MUD,
|
|
HIT_TILE,
|
|
HIT_METALOBJ,
|
|
HIT_CHR,
|
|
HIT_GLASS_XLU,
|
|
HIT_TYPE_COUNT
|
|
}HIT_TYPE;
|
|
#ifdef DEBUG
|
|
char *HIT_TYPE_ToString[] = {
|
|
"HIT_DEFAULT",
|
|
"HIT_STONE",
|
|
"HIT_WOOD",
|
|
"HIT_METAL",
|
|
"HIT_GLASS",
|
|
"HIT_WATER",
|
|
"HIT_SNOW",
|
|
"HIT_DIRT",
|
|
"HIT_MUD",
|
|
"HIT_TILE",
|
|
"HIT_METALOBJ",
|
|
"HIT_CHR",
|
|
"HIT_GLASS_XLU"};
|
|
#endif
|
|
|
|
#ifndef AIPARSE
|
|
#define IMAGE(NAME, SZ, HS, HT, F3, F4, F5, F6) IMAGE_##NAME,
|
|
typedef enum IMAGEIDS
|
|
{
|
|
#include <assets/images.def>
|
|
IMAGEIDS_COUNT
|
|
} IMAGEIDS;
|
|
#undef IMAGE
|
|
|
|
#define IMAGE(NAME, SZ, HS, HT, F3, F4, F5, F6) IMAGE_ ## NAME ## _SIZE = SZ,
|
|
typedef enum IMGAGESIZES
|
|
{
|
|
#include <assets/images.def>
|
|
IMGAGESIZES_COUNT
|
|
} IMGAGESIZES;
|
|
#undef IMAGE
|
|
#endif
|
|
|
|
typedef enum LEVELID
|
|
{ // skyID since only used by Sky and does not reflect levelID, rather in past
|
|
// SkyID has been confused with Sky[Index].
|
|
LEVELID_NONE = -1,
|
|
LEVELID_DEFAULT,
|
|
|
|
LEVELID_BUNKER1 = 9,
|
|
|
|
LEVELID_SILO = 20,
|
|
|
|
LEVELID_STATUE = 22,
|
|
LEVELID_CONTROL,
|
|
LEVELID_ARCHIVES,
|
|
LEVELID_TRAIN,
|
|
LEVELID_FRIGATE,
|
|
LEVELID_BUNKER2,
|
|
LEVELID_AZTEC,
|
|
LEVELID_STREETS,
|
|
LEVELID_DEPOT,
|
|
LEVELID_COMPLEX,
|
|
LEVELID_EGYPT,
|
|
LEVELID_DAM,
|
|
LEVELID_FACILITY,
|
|
LEVELID_RUNWAY,
|
|
LEVELID_SURFACE,
|
|
LEVELID_JUNGLE,
|
|
LEVELID_TEMPLE,
|
|
LEVELID_CAVERNS,
|
|
LEVELID_CITADEL,
|
|
LEVELID_CRADLE,
|
|
LEVELID_SHO,
|
|
LEVELID_SURFACE2,
|
|
LEVELID_ELD,
|
|
LEVELID_BASEMENT,
|
|
LEVELID_STACK,
|
|
LEVELID_LUE,
|
|
LEVELID_LIBRARY,
|
|
LEVELID_RIT,
|
|
LEVELID_CAVES,
|
|
LEVELID_EAR,
|
|
LEVELID_LEE,
|
|
LEVELID_LIP,
|
|
LEVELID_CUBA,
|
|
LEVELID_WAX,
|
|
LEVELID_PAM,
|
|
LEVELID_MAX,
|
|
LEVELID_TITLE = 90,
|
|
LEVELID_BUNKER2_MP = LEVELID_BUNKER2 + ENVIRONMENTDATA_PLAYERS_4,
|
|
LEVELID_ARCHIVES_MP = LEVELID_ARCHIVES + ENVIRONMENTDATA_PLAYERS_4,
|
|
LEVELID_CAVERNS_MP = LEVELID_CAVERNS + ENVIRONMENTDATA_PLAYERS_4,
|
|
LEVELID_FACILITY_MP = LEVELID_FACILITY + ENVIRONMENTDATA_PLAYERS_4,
|
|
LEVELID_EGYPT_MP = LEVELID_EGYPT + ENVIRONMENTDATA_PLAYERS_4
|
|
} LEVELID;
|
|
#ifdef AIPARSE
|
|
char *LEVELID_ToString[] = {
|
|
"LEVELID_NONE",
|
|
"LEVELID_DEFAULT",
|
|
"1",
|
|
"2",
|
|
"3",
|
|
"4",
|
|
"5",
|
|
"6",
|
|
"7",
|
|
"8",
|
|
"LEVELID_BUNKER1",
|
|
"10",
|
|
"11",
|
|
"12",
|
|
"13",
|
|
"14",
|
|
"15",
|
|
"16",
|
|
"17",
|
|
"18",
|
|
"19",
|
|
"LEVELID_SILO",
|
|
"21",
|
|
"LEVELID_STATUE",
|
|
"LEVELID_CONTROL",
|
|
"LEVELID_ARCHIVES",
|
|
"LEVELID_TRAIN",
|
|
"LEVELID_FRIGATE",
|
|
"LEVELID_BUNKER2",
|
|
"LEVELID_AZTEC",
|
|
"LEVELID_STREETS",
|
|
"LEVELID_DEPOT",
|
|
"LEVELID_COMPLEX",
|
|
"LEVELID_EGYPT",
|
|
"LEVELID_DAM",
|
|
"LEVELID_FACILITY",
|
|
"LEVELID_RUNWAY",
|
|
"LEVELID_SURFACE",
|
|
"LEVELID_JUNGLE",
|
|
"LEVELID_TEMPLE",
|
|
"LEVELID_CAVERNS",
|
|
"LEVELID_CITADEL",
|
|
"LEVELID_CRADLE",
|
|
"LEVELID_SHO",
|
|
"LEVELID_SURFACE2",
|
|
"LEVELID_ELD",
|
|
"LEVELID_BASEMENT",
|
|
"LEVELID_STACK",
|
|
"LEVELID_LUE",
|
|
"LEVELID_LIBRARY",
|
|
"LEVELID_RIT",
|
|
"LEVELID_CAVES",
|
|
"LEVELID_EAR",
|
|
"LEVELID_LEE",
|
|
"LEVELID_LIP",
|
|
"LEVELID_CUBA",
|
|
"LEVELID_WAX",
|
|
"LEVELID_PAM",
|
|
"LEVELID_MAX"};
|
|
|
|
#endif
|
|
|
|
typedef enum LEVEL_SOLO_SEQUENCE
|
|
{
|
|
SP_LEVEL_DAM,
|
|
SP_LEVEL_FACILITY,
|
|
SP_LEVEL_RUNWAY,
|
|
SP_LEVEL_SURFACE1,
|
|
SP_LEVEL_BUNKER1,
|
|
SP_LEVEL_SILO, // 5
|
|
SP_LEVEL_FRIGATE,
|
|
SP_LEVEL_SURFACE2,
|
|
SP_LEVEL_BUNKER2,
|
|
SP_LEVEL_STATUE,
|
|
SP_LEVEL_ARCHIVES, // 10
|
|
SP_LEVEL_STREETS,
|
|
SP_LEVEL_DEPOT,
|
|
SP_LEVEL_TRAIN,
|
|
SP_LEVEL_JUNGLE,
|
|
SP_LEVEL_CONTROL, // 15
|
|
SP_LEVEL_CAVERNS,
|
|
SP_LEVEL_CRADLE,
|
|
SP_LEVEL_AZTEC,
|
|
SP_LEVEL_EGYPT, // 19
|
|
SP_LEVEL_MAX // 20
|
|
} LEVEL_SOLO_SEQUENCE;
|
|
|
|
typedef enum LEVEL_INDEX
|
|
{
|
|
LEVEL_INDEX_SEVBUNKER,
|
|
LEVEL_INDEX_SILO,
|
|
LEVEL_INDEX_STATUE,
|
|
LEVEL_INDEX_CONTROL,
|
|
LEVEL_INDEX_ARCH,
|
|
LEVEL_INDEX_TRA,
|
|
LEVEL_INDEX_DEST,
|
|
LEVEL_INDEX_SEVB,
|
|
LEVEL_INDEX_AZT,
|
|
LEVEL_INDEX_PETE,
|
|
LEVEL_INDEX_DEPO,
|
|
LEVEL_INDEX_REF,
|
|
LEVEL_INDEX_CRYP,
|
|
LEVEL_INDEX_DAM,
|
|
LEVEL_INDEX_ARK,
|
|
LEVEL_INDEX_RUN,
|
|
LEVEL_INDEX_SEVX,
|
|
LEVEL_INDEX_JUN,
|
|
LEVEL_INDEX_DISH,
|
|
LEVEL_INDEX_CAVE,
|
|
LEVEL_INDEX_CAT,
|
|
LEVEL_INDEX_CRAD,
|
|
LEVEL_INDEX_SHO,
|
|
LEVEL_INDEX_SEVXB,
|
|
LEVEL_INDEX_ELD,
|
|
LEVEL_INDEX_IMP,
|
|
LEVEL_INDEX_ASH,
|
|
LEVEL_INDEX_LUE,
|
|
LEVEL_INDEX_AME,
|
|
LEVEL_INDEX_RIT,
|
|
LEVEL_INDEX_OAT,
|
|
LEVEL_INDEX_EAR,
|
|
LEVEL_INDEX_LEE,
|
|
LEVEL_INDEX_LIP,
|
|
LEVEL_INDEX_LEN,
|
|
LEVEL_INDEX_WAX,
|
|
LEVEL_INDEX_PAM,
|
|
LEVEL_INDEX_X,
|
|
LEVEL_INDEX_MAX = LEVEL_INDEX_X
|
|
} LEVEL_INDEX;
|
|
|
|
typedef enum TEXT_ALIGNMENT
|
|
{
|
|
LEFT_ALIGN,
|
|
CENTER_ALIGN,
|
|
RIGHT_ALIGN,
|
|
TOP_ALIGN = LEFT_ALIGN,
|
|
BOTTOM_ALIGN = RIGHT_ALIGN
|
|
} TEXT_ALIGNMENT;
|
|
|
|
|
|
|
|
typedef enum MENU
|
|
{
|
|
MENU_INVALID = -1,
|
|
MENU_LEGAL_SCREEN,
|
|
MENU_NINTENDO_LOGO,
|
|
MENU_RAREWARE_LOGO,
|
|
MENU_EYE_INTRO,
|
|
MENU_GOLDENEYE_LOGO,
|
|
MENU_FILE_SELECT,
|
|
MENU_MODE_SELECT,
|
|
MENU_MISSION_SELECT,
|
|
MENU_DIFFICULTY,
|
|
MENU_007_OPTIONS,
|
|
MENU_BRIEFING,
|
|
MENU_RUN_STAGE,
|
|
MENU_MISSION_FAILED,
|
|
MENU_MISSION_COMPLETE,
|
|
MENU_MP_OPTIONS,
|
|
MENU_MP_CHAR_SELECT,
|
|
MENU_MP_HANDICAP,
|
|
MENU_MP_CONTROL_STYLE,
|
|
MENU_MP_STAGE_SELECT,
|
|
MENU_MP_SCENARIO_SELECT,
|
|
MENU_MP_TEAMS,
|
|
MENU_CHEAT,
|
|
MENU_NO_CONTROLLERS,
|
|
MENU_SWITCH_SCREENS,
|
|
MENU_DISPLAY_CAST,
|
|
MENU_SPECTRUM_EMU,
|
|
MENU_MAX
|
|
} MENU;
|
|
|
|
typedef enum mission_setup_type
|
|
{
|
|
MISSION_PART,
|
|
MISSION_HEADER
|
|
} mission_setup_type;
|
|
|
|
typedef enum MISSION_BRIEFING
|
|
{
|
|
BRIEF_OVERVIEW,
|
|
BRIEF_M,
|
|
BRIEF_Q,
|
|
BRIEF_MONEYPENNY
|
|
} MISSION_BRIEFING;
|
|
|
|
typedef enum MODELNODE_OPCODE
|
|
{
|
|
MODELNODE_OPCODE_NULL,
|
|
MODELNODE_OPCODE_HEADER,
|
|
MODELNODE_OPCODE_GROUP,
|
|
MODELNODE_OPCODE_OP03,
|
|
MODELNODE_OPCODE_DL,
|
|
MODELNODE_OPCODE_OP05,
|
|
MODELNODE_OPCODE_OP06,
|
|
MODELNODE_OPCODE_OP07,
|
|
MODELNODE_OPCODE_LOD,
|
|
MODELNODE_OPCODE_BSP,
|
|
MODELNODE_OPCODE_BBOX,
|
|
MODELNODE_OPCODE_OP11,
|
|
MODELNODE_OPCODE_GUNFIRE,
|
|
MODELNODE_OPCODE_SHADOW,
|
|
MODELNODE_OPCODE_OP14,
|
|
MODELNODE_OPCODE_INTERLINK,
|
|
MODELNODE_OPCODE_OP16,
|
|
MODELNODE_OPCODE_OP17,
|
|
MODELNODE_OPCODE_SWITCH,
|
|
MODELNODE_OPCODE_OP19,
|
|
MODELNODE_OPCODE_OP20,
|
|
MODELNODE_OPCODE_GROUPSIMPLE,
|
|
MODELNODE_OPCODE_DLPRIMARY,
|
|
MODELNODE_OPCODE_HEAD,
|
|
MODELNODE_OPCODE_DLCOLLISION,
|
|
MODELNODE_OPCODE_MAX
|
|
} MODELNODE_OPCODE;
|
|
|
|
typedef enum MODELNODE_CHILD
|
|
{
|
|
MODELNODE_CHILD_NULL,
|
|
MODELNODE_CHILD_VTX,
|
|
MODELNODE_CHILD_IMAGE,
|
|
MODELNODE_CHILD_TRI,
|
|
MODELNODE_CHILD_MAX
|
|
} MODELNODE_CHILD;
|
|
|
|
typedef enum MODEL_GROUP_MTX_BUILD_FLAGS
|
|
{
|
|
MODELGROUP_MTX_HAS_MATRIX1 = 0x0100,
|
|
MODELGROUP_MTX_HAS_MATRIX2 = 0x0200
|
|
} MODEL_GROUP_MTX_BUILD_FLAGS;
|
|
|
|
typedef enum BOND
|
|
{
|
|
BOND_BROSNAN,
|
|
BOND_CONNERY,
|
|
BOND_DALTON,
|
|
BOND_MOORE
|
|
} BOND;
|
|
|
|
typedef enum MP_STAGE_SELECTED
|
|
{
|
|
MP_STAGE_RANDOM,
|
|
MP_STAGE_TEMPLE,
|
|
MP_STAGE_COMPLEX,
|
|
MP_STAGE_CAVES,
|
|
MP_STAGE_LIBRARY,
|
|
MP_STAGE_BASEMENT,
|
|
MP_STAGE_STACK,
|
|
MP_STAGE_FACILITY,
|
|
MP_STAGE_BUNKER,
|
|
MP_STAGE_ARCHIVES,
|
|
MP_STAGE_CAVERNS,
|
|
MP_STAGE_EGYPT,
|
|
MP_STAGE_SELECTED_MAX
|
|
} MP_STAGE_SELECTED;
|
|
|
|
typedef enum MPMENU
|
|
{
|
|
MENU_GOWOC,
|
|
MENU_LOSSES,
|
|
MENU_KILLS,
|
|
MENU_SCORES,
|
|
MENU_PAUSE,
|
|
MENU_EXIT,
|
|
MENU_EXIT_CONFIRM,
|
|
MENU_FINISHED
|
|
} MPMENU;
|
|
|
|
typedef enum MPSCENARIOS
|
|
{
|
|
SCENARIO_NORMAL,
|
|
SCENARIO_YOLT, // you only live twice
|
|
SCENARIO_TLD, // The Living Daylights [Flag Tag]
|
|
SCENARIO_MWTGG, // The Man With the Golden Gun
|
|
SCENARIO_LTK, // License to Kill
|
|
SCENARIO_2v2,
|
|
SCENARIO_3v1,
|
|
SCENARIO_2v1,
|
|
MPSCENARIOS_MAX
|
|
} MPSCENARIOS;
|
|
|
|
typedef enum MUSIC_TRACKS
|
|
{
|
|
M_NONE,
|
|
M_SHORT_SOLO_DEATH,
|
|
M_INTRO,
|
|
M_TRAIN,
|
|
M_DEPOT,
|
|
M_MPTHEME,
|
|
M_CITADEL,
|
|
M_FACILITY,
|
|
M_CONTROL,
|
|
M_DAM,
|
|
M_FRIGATE,
|
|
M_ARCHIVES,
|
|
M_SILO,
|
|
M_MPTHEME2,
|
|
M_STREETS,
|
|
M_BUNKER1,
|
|
M_BUNKER2,
|
|
M_STATUE,
|
|
M_ELEVATOR_CONTROL,
|
|
M_CRADLE,
|
|
M_UNK,
|
|
M_ELEVATOR_WC,
|
|
M_EGYPTIAN,
|
|
M_FOLDERS,
|
|
M_WATCH,
|
|
M_AZTEC,
|
|
M_WATERCAVERNS,
|
|
M_DEATHSOLO,
|
|
M_SURFACE2,
|
|
M_TRAINX,
|
|
M_UNK2,
|
|
M_FACILITYX,
|
|
M_DEPOTX,
|
|
M_CONTROLX,
|
|
M_WATERCAVERNSX,
|
|
M_DAMX,
|
|
M_FRIGATEX,
|
|
M_ARCHIVESX,
|
|
M_SILOX,
|
|
M_EGYPTIANX,
|
|
M_STREETSX,
|
|
M_BUNKER1X,
|
|
M_BUNKER2X,
|
|
M_JUNGLEX,
|
|
M_INTROSWOOSH,
|
|
M_STATUEX,
|
|
M_AZTECX,
|
|
M_EGYPTX,
|
|
M_CRADLEX,
|
|
M_CUBA,
|
|
M_RUNWAY,
|
|
M_RUNWAYPLANE,
|
|
M_MPTHEME3,
|
|
M_WIND,
|
|
M_GUITARGLISS,
|
|
M_JUNGLE,
|
|
M_RUNWAYX,
|
|
M_SURFACE1,
|
|
M_MPDEATH,
|
|
M_SURFACE2X,
|
|
M_SURFACE2END,
|
|
M_STATUEPART,
|
|
M_END_SOMETHING
|
|
} MUSIC_TRACKS;
|
|
|
|
#if 0
|
|
//these dont match the listing at all, however they imply a listing was used
|
|
char *MUSIC_TRACK_ToString[] = {
|
|
"01Goldeneye 64 - James Bond Theme",
|
|
"02Goldeneye 64 - Train",
|
|
"03Goldeneye 64 - Depot",
|
|
"04Goldeneye 64 - Citadel",
|
|
"05Goldeneye 64 - _Unsquare Water Dance_",
|
|
"06Goldeneye 64 - Facility",
|
|
"07Goldeneye 64 - Control",
|
|
"08Goldeneye 64 - Dam",
|
|
"09Goldeneye 64 - Frigate",
|
|
"10Goldeneye 64 - Archives",
|
|
"11Goldeneye 64 - Silo",
|
|
"12Goldeneye 64 - Surface 2 X",
|
|
"13Goldeneye 64 - Streets",
|
|
"14Goldeneye 64 - Bunker 1",
|
|
"15Goldeneye 64 - Bunker 2",
|
|
"16Goldeneye 64 - Statue",
|
|
"17Goldeneye 64 - Elevator (control)",
|
|
"18Goldeneye 64 - Cradle",
|
|
"19Goldeneye 64 - Elevator (caverns)",
|
|
"20Goldeneye 64 - Egypt",
|
|
"56Goldeneye 64 - Mission Select",
|
|
"21Goldeneye 64 - 007 Watch Theme",
|
|
"22Goldeneye 64 - Aztec",
|
|
"23Goldeneye 64 - Caverns",
|
|
"24Goldeneye 64 - Mission Death",
|
|
"25Goldeneye 64 - Surface 2",
|
|
"26Goldeneye 64 - Train X",
|
|
"27Goldeneye 64 - Facility X",
|
|
"28Goldeneye 64 - Depot X",
|
|
"29Goldeneye 64 - Control X",
|
|
"30Goldeneye 64 - Caverns X",
|
|
"31Goldeneye 64 - Dam X",
|
|
"32Goldeneye 64 - Frigate X",
|
|
"33Goldeneye 64 - Archives X",
|
|
"34Goldeneye 64 - Silo X",
|
|
"35Goldeneye 64 - Streets X",
|
|
"36Goldeneye 64 - Bunker 1 X",
|
|
"37Goldeneye 64 - Bunker 2 X",
|
|
"38Goldeneye 64 - Jungle X",
|
|
"39Goldeneye 64 - Nintendo and Rareware",
|
|
"40Goldeneye 64 - Statue X",
|
|
"41Goldeneye 64 - Aztec X",
|
|
"42Goldeneye 64 - Egypt X",
|
|
"43Goldeneye 64 - Cradle X",
|
|
"44Goldeneye 64 - Ending Theme",
|
|
"45Goldeneye 64 - Runway",
|
|
"46Goldeneye 64 - Runway Plane",
|
|
"47Goldeneye 64 - The Basement",
|
|
"48Goldeneye 64 - Bungeee!",
|
|
"49Goldeneye 64 - Jungle",
|
|
"50Goldeneye 64 - Runway X",
|
|
"51Goldeneye 64 - Surface 1",
|
|
"52Goldeneye 64 - Multiplayer Death",
|
|
"53Goldeneye 64 - Captured! (surface)",
|
|
"54Goldeneye 64 - Captured! (statue)",
|
|
"55Goldeneye 64 - Frigate (beta)" };
|
|
#endif
|
|
|
|
typedef enum OPTIONS
|
|
{
|
|
PLAYER_OPTION_LOOK,
|
|
PLAYER_OPTION_AUTOAIM,
|
|
PLAYER_OPTION_AIM,
|
|
PLAYER_OPTION_SIGHT,
|
|
PLAYER_OPTION_LOOKAHEAD,
|
|
PLAYER_OPTION_AMMODISPLAY,
|
|
PLAYER_OPTION_SCREEN,
|
|
PLAYER_OPTION_RATIO
|
|
} OPTIONS;
|
|
|
|
typedef enum PLAYER_ID
|
|
{
|
|
PLAYER_1,
|
|
PLAYER_2,
|
|
PLAYER_3,
|
|
PLAYER_4
|
|
} PLAYER_ID;
|
|
|
|
typedef enum PORTALFLAGS
|
|
{
|
|
PORTALFLAG_DISABLED = 0x01,
|
|
PORTALFLAG_SPECIAL = 0x02
|
|
} PORTALFLAGS;
|
|
|
|
#define SAVESLOT1 0x0
|
|
#define SAVESLOT2 0x1
|
|
#define SAVESLOT3 0x2
|
|
#define SAVESLOT4 0x3
|
|
#define SAVESLOTRAMROM 0x5
|
|
#define SAVESLOTMAX 0x6
|
|
|
|
#define SAVEFLAG_FOLDER 0x7
|
|
#define SAVEFLAG_SLOT 0x18
|
|
#define SAVEFLAG_BOND 0x60
|
|
#define SAVEFLAG_DORESET 0x80
|
|
|
|
#define SAVEFLAGS_SET(folder, slot, bond, reset) (((folder << 5) & 0xE0) | ((slot * 8) & 0x18) | ((bond << 1) & 0x6) | (reset & 1 ? SAVEFLAG_DORESET : 0))
|
|
|
|
#define BLANKSAVEDATA {0, 0, SAVEFLAGS_SET(0,0,BOND_BROSNAN,1), 0x00, 0xFF, 0xFF, DEFAULT_OPTIONS, 0x00, 0x00, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
|
|
|
|
#define MAX_PLAYER_COUNT 4
|
|
|
|
#define FOLDER_INVALID -1
|
|
#define FOLDER1 0x0
|
|
#define FOLDER2 0x1
|
|
#define FOLDER3 0x2
|
|
#define FOLDER4 0x3
|
|
#define MAX_FOLDER_COUNT 4
|
|
#define RAMROM_FOLDERNUM 0x64
|
|
|
|
typedef enum RGBA_ENUM
|
|
{
|
|
RED,
|
|
GREEN,
|
|
BLUE,
|
|
ALPHA
|
|
} RGBA_ENUM;
|
|
|
|
|
|
typedef enum SFX_ID
|
|
{
|
|
NOTHING_SFX,
|
|
ROCKET_LAUNCH_SFX,
|
|
GLASS_SHATTERING_SFX,
|
|
KNIFE_HIT_WALL_SFX,
|
|
GRENADE_THROW_SFX, //Grenade/Mine or in fact Any object thrown.
|
|
GRENADE_THROW_QUIET_SFX,
|
|
GRENADE_THROW_FAINT_SFX,
|
|
TRAIN_SLIDE_DOOR_SLIDE_SFX, //Ding used on elevator
|
|
TRAIN_RAILS_SFX,
|
|
TRAIN_RAILS2_SFX,
|
|
WATCH_INTERFERENCE_SFX,
|
|
GUN_TANK2BIG_1_SFX, //Used for Tank rounds
|
|
GUN_TANK2BIGBIG_1_SFX, //used for Grenade Launcher
|
|
GET_HIT_GIRL1_SFX,
|
|
GET_HIT_GIRL2_SFX,
|
|
GET_HIT_GIRL3_SFX,
|
|
BEEP_SFX,
|
|
BEEP_QUIET_SFX,
|
|
OPTION_CLICK2_SFX,
|
|
RICO_12_GBU_A_SFX,
|
|
RICO_12_GBU_B_SFX,
|
|
RICO_12_GBU_C_SFX,
|
|
RICO_12_GBU_D_SFX,
|
|
RICO_6_TAJ_A_SFX,
|
|
RICO_6_TAJ_B_SFX,
|
|
RICO_6_TAJ_C_SFX,
|
|
RICO_6_TAJ_D_SFX,
|
|
RICO_8_AFDM_A_SFX,
|
|
RICO_8_AFDM_B_SFX,
|
|
RICO_8_AFDM_C_SFX,
|
|
RICO_8_AFDM_D_SFX,
|
|
RICO_4_A_SFX,
|
|
RICO_4_B_SFX,
|
|
RICO_4_C_SFX,
|
|
RICO_4_D_SFX,
|
|
RICO_5_A_SFX,
|
|
RICO_5_B_SFX,
|
|
RICO_5_C_SFX,
|
|
RICO_5_D_SFX,
|
|
RICO_6_HBBA_A_SFX,
|
|
RICO_6_HBBA_B_SFX,
|
|
RICO_6_HBBA_C_SFX,
|
|
RICO_6_HBBA_D_SFX,
|
|
OPTION_CHOOSE_SFX,
|
|
UNKNOWN1_SFX,
|
|
DROP_GUN_SFX,
|
|
GUN_SILPPK_A_SFX,
|
|
PUNCH1_SFX,
|
|
PUNCH2_SFX,
|
|
PUNCH3_SFX,
|
|
GUN_RIFLECOCK_SFX,
|
|
TRAIN_CLUTTER3_SFX,
|
|
TRAIN_CLUTTER3B_SFX,
|
|
TRAIN_CLUTTER3C_SFX,
|
|
EVIL_LAUGH_SFX,
|
|
EVIL_LAUGH_QUIET_SFX,
|
|
EVIL_LAUGH_FAINT_SFX,
|
|
EVIL_LAUGH_HUSH_SFX,
|
|
HELI_RUN_SFX,
|
|
HELI_FLY_SFX,
|
|
ENGINE_ROOM_SFX,
|
|
TRAIN_STOP_STILL_SFX,
|
|
TANK_SFX,
|
|
TRAIN_STOP_SFX,
|
|
TRAIN_GO_SFX,
|
|
TRUCK_RUN_SFX,
|
|
TRUCK_START_SFX,
|
|
TRUCK_ENGINE_SFX,
|
|
BOND_GET_HIT1_SFX,
|
|
HIT_BULLET_FLESH_SFX,
|
|
HIT_BULLET_GLASS_SFX,
|
|
HIT_GLASS_SMASH_SFX,
|
|
HIT_BULLET_METAL_A_SFX,
|
|
HIT_BULLET_METAL_B_SFX,
|
|
HIT_BULLET_SNOW_SFX, //Also used for knife hit
|
|
HIT_BULLET_WOOD_SFX,
|
|
HIT_BULLET_WATER_SFX,
|
|
PAPER_TURN_SFX,
|
|
PAPER_TURN_2_SFX,
|
|
COPY_FILE_SFX,
|
|
RADIO_MESSAGE_SFX,
|
|
ARMOUR_COLLECT_SFX,
|
|
OBJ_REGEN_SFX,
|
|
DOOR_DECODER_SFX,
|
|
GIRL_GET_HIT1_SFX,
|
|
CONSOLE_OFF_SFX,
|
|
CONSOLE_OFF2_SFX,
|
|
CONSOLE_ON2_SFX,
|
|
CONSOLE_ON3_SFX,
|
|
EMPTY_GUN_FIRE_SFX,
|
|
SHELL_CASE_SFX,
|
|
RICO_LASER1_SFX,
|
|
RICO_LASER2_SFX,
|
|
RICO_LASER3_SFX,
|
|
RADIO_SFX,
|
|
KNIFE_THROW1_SFX,
|
|
KNIFE_THROW2_SFX,
|
|
KNIFE_THROW3_SFX,
|
|
COUGH_SFX,
|
|
COUGH2_SFX,
|
|
GUN_TASER_SFX,
|
|
GUN_TASER_LOOP_SFX,
|
|
GAS_HISS_SFX,
|
|
UNKNOWN2_SFX,
|
|
UNKNOWN3_SFX,
|
|
PUNCHING_AIR_SFX,
|
|
GUN_B1_MGUN3_3_SFX, //Used for Skorpion (Klobb)
|
|
GUN_B2_HEAVY_SFX, //Used for PPK
|
|
GUN_UNKNOWN_SFX,
|
|
GUN_B4_BOLTACTION_SFX, //used for AK47
|
|
GUN_B5_WINC44_SFX,
|
|
GUN_RIFLE7BIG_1_SFX, //used for Rugar
|
|
GUN_B8_ANOTHER_SFX, //used for TT33
|
|
GUN_B9_CANNON_SFX, //used for M16
|
|
GUN_GRENADE_LAUNCHER_SFX,
|
|
GUN_UNKNOWN2_SFX,
|
|
GUN_B12_FULLAMRIFLE_SFX, //used for Auto Shotgun
|
|
GUN_B13_M60AMMGUN_SFX, //used for Golden Gun
|
|
GUN_M60AMMGUN_3_SFX,
|
|
GUN_UNKNOWN3_SFX,
|
|
HIT_METAL_OBJECT1_SFX,
|
|
GUN_B17_RIFLE_SFX, //used for Shotgun
|
|
CART_SPENT_SFX,
|
|
BODY_FALL_C1_SFX,
|
|
BODY_FALL_C2_SFX,
|
|
BODY_FALL_C3_SFX,
|
|
BODY_FALL_D1_SFX,
|
|
BODY_FALL_D2_SFX,
|
|
BODY_FALL_D3_SFX,
|
|
BODY_FALL_D4_SFX,
|
|
BODY_FALL_E1_SFX,
|
|
BODY_FALL_E2_SFX,
|
|
BODY_FALL_E3_SFX,
|
|
BODY_ROLLOVER_SFX,
|
|
GET_HIT_MALE0_SFX,
|
|
GET_HIT_MALE1_SFX,
|
|
GET_HIT_MALE2_SFX,
|
|
GET_HIT_MALE3_SFX,
|
|
GET_HIT_MALE4_SFX,
|
|
GET_HIT_MALE5_SFX,
|
|
GET_HIT_MALE6_SFX,
|
|
GET_HIT_MALE7_SFX,
|
|
GET_HIT_MALE8_SFX,
|
|
GET_HIT_MALE9_SFX,
|
|
GET_HIT_MALE10_SFX,
|
|
GET_HIT_MALE11_SFX,
|
|
GET_HIT_MALE12_SFX,
|
|
GET_HIT_MALE13_SFX,
|
|
GET_HIT_MALE14_SFX,
|
|
GET_HIT_MALE15_SFX,
|
|
GET_HIT_MALE16_SFX,
|
|
GET_HIT_MALE17_SFX,
|
|
GET_HIT_MALE18_SFX,
|
|
GET_HIT_MALE19_SFX,
|
|
GET_HIT_MALE20_SFX,
|
|
GET_HIT_MALE21_SFX,
|
|
GET_HIT_MALE22_SFX,
|
|
GET_HIT_MALE23_SFX,
|
|
GET_HIT_MALE24_SFX,
|
|
CAMERA_BEEP1_SFX, //Used for Watch Beeping
|
|
BING_SFX,
|
|
ALARM1_SFX,
|
|
ALARM2_SFX,
|
|
ALARM3_SFX,
|
|
RICO_EAR_WHISTLE1_SFX,
|
|
RICO_EAR_WHISTLE2_SFX,
|
|
RICO_EAR_WHISTLE3_SFX,
|
|
RICO_EAR_WHISTLE4_SFX,
|
|
RICO_EAR_WHISTLE5_SFX,
|
|
EXPLOSION_2A_SFX,
|
|
EXPLOSION_2B_SFX,
|
|
EXPLOSION_3_SFX,
|
|
EXPLOSION_4A_SFX,
|
|
EXPLOSION_4B_SFX,
|
|
EXPLOSION_5A_SFX,
|
|
EXPLOSION_5B_SFX,
|
|
EXPLOSION_5C_SFX,
|
|
EXPLOSION_6_SFX,
|
|
EXPLOSION_7_SFX,
|
|
EXPLOSION_8_SFX,
|
|
EXPLOSION_9_SFX,
|
|
EXPLOSION_1B_SFX,
|
|
EXPLOSION_1C_SFX,
|
|
CRUSHED_YELL_SFX,
|
|
KEY_SEQUENCE_SFX,
|
|
HIT_BULLET_DIRT2_SFX,
|
|
ALARM_SWITCH_SFX,
|
|
DOOR_WOOD_CLOSE_SFX,
|
|
DOOR_WOOD_OPEN_SFX,
|
|
ATOMIC_BOMB_SFX,
|
|
KEY_ANALYSER2_SFX,
|
|
DOOR_WOOD_SLIDE_SFX,
|
|
TRAIN_SLIDE_DOOR_CATCH_SFX,
|
|
GAS_LEAK_SFX,
|
|
DOOR_SHUTTER_OPEN_SFX,
|
|
DOOR_SHUTTER_CLOSE_SFX,
|
|
DOOR_METAL_OPEN_SFX,
|
|
DOOR_METAL_CLOSE_SFX,
|
|
CONSOLE_ON_SFX,
|
|
DOOR_METAL_CLOSE2_SFX,
|
|
DOOR_METAL_OPEN3_SFX,
|
|
DOOR_METAL_CLOSE3_SFX,
|
|
METAL_SLIDE_OPEN_SFX,
|
|
METAL_SLIDE_CLOSE_SFX,
|
|
METAL_SLIDE_LOOP_SFX,
|
|
UNKNOWN4_SFX,
|
|
UNKNOWN5_SFX,
|
|
UNKNOWN6_SFX,
|
|
HIT_BULLET_STONE1_SFX,
|
|
HIT_BULLET_STONE2_SFX,
|
|
DOOR_SMART_CATCH1_SFX,
|
|
DOOR_SMART_SLIDE1_SFX,
|
|
HIT_BULLET_TILE_SFX,
|
|
TANK_CRUSH_MAN_SFX,
|
|
HEAVY_SLIDE_OPEN_SFX,
|
|
HEAVY_SLIDE_CLOSE_SFX,
|
|
HEAVY_SINGLE_LOOP_SFX,
|
|
HIT_BULLET_WOOD2_SFX,
|
|
DOOR_HYDRAL_CLOSE_SFX, // Main Hydrolic Door loop
|
|
DOOR_HYDRAL_OPEN_SFX, // Hudrolic Door Stop sound
|
|
HIT_BULLET_DIRT1_SFX,
|
|
HIT_METAL_OBJECT2_SFX,
|
|
DOOR_LOCK_SFX, //Also used for button Presses
|
|
TRAIN_CLUTTER2_SFX,
|
|
HIT_BULLET_MUD3_SFX,
|
|
DOOR_SLIDE_STONE_OPEN_SFX, //Main Stone Door Loop
|
|
DOOR_SLIDE_STONE_CLOSE_SFX, //Stone Door Stop
|
|
DATA_DOWNLOAD_SFX,
|
|
LASER_GUN_SFX,
|
|
KEYCARD_SFX,
|
|
HIT_BULLET_MUD2_SFX,
|
|
HIT_BULLET_MUD1_SFX,
|
|
PICKUP_GUN_SFX,
|
|
PICKUP_KNIFE_SFX,
|
|
PICKUP_AMMO_SFX,
|
|
PICKUP_MINE_SFX,
|
|
WATCH_STATIC_SFX,
|
|
WATCH_ON_SFX,
|
|
WATCH_OFF_SFX,
|
|
HIT_BULLET_METAL_A3_SFX,
|
|
HIT_BULLET_METAL_A4_SFX,
|
|
ATTACH_MINE_SFX,
|
|
PICKUP_LASER_SFX,
|
|
WATCH_DETONATE_MINE_SFX, //Watch Trigger
|
|
CAMERA_CLICK_SFX, //Camera Shutter
|
|
KEY_ANALYSER_SFX,
|
|
MAGNETIC_HUM_SFX,
|
|
BOMB_DEFUSE_SFX,
|
|
BI_PLANE_SFX,
|
|
TRAIN_CLUTTER_SFX,
|
|
TRAIN_CLUTTERB_SFX,
|
|
TRAIN_CLUTTERC_SFX,
|
|
TRAIN_CLUTTERD_SFX,
|
|
GUN_B9_CANNON_SHORT_SFX,
|
|
UNKNOWN_QUIET_SFX,
|
|
CAMERA_ZOOM_LOOP_SFX,
|
|
CAMERA_ZOOM_STOP_SFX,
|
|
SNEEZE_SFX,
|
|
RARELOGO_SFX,
|
|
RARELOGO_QUIET_SFX,
|
|
RARELOGO_FAINT_SFX,
|
|
BIG_CLANK_SFX
|
|
} SFX_ID;
|
|
|
|
#ifdef DEBUG
|
|
char *SFX_ID_ToString[] = {
|
|
"0_NOTHING_SFX",
|
|
"1_ROCKET_LAUNCH_SFX",
|
|
"2_GLASS_SHATTERING_SFX",
|
|
"3_KNIFE_HIT_WALL_SFX",
|
|
"4_GRENADE_THROW_SFX", //Grenade/Mine or in fact Any object thrown.
|
|
"5_GRENADE_THROW_QUIET_SFX",
|
|
"6_GRENADE_THROW_FAINT_SFX",
|
|
"7_TRAIN_SLIDE_DOOR_SLIDE_SFX", //Ding used on elevator
|
|
"8_TRAIN_RAILS_SFX",
|
|
"9_TRAIN_RAILS2_SFX",
|
|
"10_WATCH_INTERFERENCE_SFX",
|
|
"11_GUN_TANK2BIG_1_SFX", //Used for Tank rounds
|
|
"12_GUN_TANK2BIGBIG_1_SFX", //used for Grenade Launcher
|
|
"13_GET_HIT_GIRL1_SFX",
|
|
"14_GET_HIT_GIRL2_SFX",
|
|
"15_GET_HIT_GIRL3_SFX",
|
|
"16_BEEP_SFX",
|
|
"17_BEEP_QUIET_SFX",
|
|
"18_OPTION_CLICK2_SFX",
|
|
"19_RICO_12_GBU_A_SFX",
|
|
"20_RICO_12_GBU_B_SFX",
|
|
"21_RICO_12_GBU_C_SFX",
|
|
"22_RICO_12_GBU_D_SFX",
|
|
"23_RICO_6_TAJ_A_SFX",
|
|
"24_RICO_6_TAJ_B_SFX",
|
|
"25_RICO_6_TAJ_C_SFX",
|
|
"26_RICO_6_TAJ_D_SFX",
|
|
"27_RICO_8_AFDM_A_SFX",
|
|
"28_RICO_8_AFDM_B_SFX",
|
|
"29_RICO_8_AFDM_C_SFX",
|
|
"30_RICO_8_AFDM_D_SFX",
|
|
"31_RICO_4_A_SFX",
|
|
"32_RICO_4_B_SFX",
|
|
"33_RICO_4_C_SFX",
|
|
"34_RICO_4_D_SFX",
|
|
"35_RICO_5_A_SFX",
|
|
"36_RICO_5_B_SFX",
|
|
"37_RICO_5_C_SFX",
|
|
"38_RICO_5_D_SFX",
|
|
"39_RICO_6_HBBA_A_SFX",
|
|
"40_RICO_6_HBBA_B_SFX",
|
|
"41_RICO_6_HBBA_C_SFX",
|
|
"42_RICO_6_HBBA_D_SFX",
|
|
"43_OPTION_CHOOSE_SFX",
|
|
"44_UNKNOWN1_SFX",
|
|
"45_DROP_GUN_SFX",
|
|
"46_GUN_SILPPK_A_SFX",
|
|
"47_PUNCH1_SFX",
|
|
"48_PUNCH2_SFX",
|
|
"49_PUNCH3_SFX",
|
|
"50_GUN_RIFLECOCK_SFX",
|
|
"51_TRAIN_CLUTTER3_SFX",
|
|
"52_TRAIN_CLUTTER3B_SFX",
|
|
"53_TRAIN_CLUTTER3C_SFX",
|
|
"54_EVIL_LAUGH_SFX",
|
|
"55_EVIL_LAUGH_QUIET_SFX",
|
|
"56_EVIL_LAUGH_FAINT_SFX",
|
|
"57_EVIL_LAUGH_HUSH_SFX",
|
|
"58_HELI_RUN_SFX",
|
|
"59_HELI_FLY_SFX",
|
|
"60_ENGINE_ROOM_SFX",
|
|
"61_TRAIN_STOP_STILL_SFX",
|
|
"62_TANK_SFX",
|
|
"63_TRAIN_STOP_SFX",
|
|
"64_TRAIN_GO_SFX",
|
|
"65_TRUCK_RUN_SFX",
|
|
"66_TRUCK_START_SFX",
|
|
"67_TRUCK_ENGINE_SFX",
|
|
"68_BOND_GET_HIT1_SFX",
|
|
"69_HIT_BULLET_FLESH_SFX",
|
|
"70_HIT_BULLET_GLASS_SFX",
|
|
"71_HIT_GLASS_SMASH_SFX",
|
|
"72_HIT_BULLET_METAL_A_SFX",
|
|
"73_HIT_BULLET_METAL_B_SFX",
|
|
"74_HIT_BULLET_SNOW_SFX", //Also used for knife hit
|
|
"75_HIT_BULLET_WOOD_SFX",
|
|
"76_HIT_BULLET_WATER_SFX",
|
|
"77_PAPER_TURN_SFX",
|
|
"78_PAPER_TURN_2_SFX",
|
|
"79_COPY_FILE_SFX",
|
|
"80_RADIO_MESSAGE_SFX",
|
|
"81_ARMOUR_COLLECT_SFX",
|
|
"82_OBJ_REGEN_SFX",
|
|
"83_DOOR_DECODER_SFX",
|
|
"84_GIRL_GET_HIT1_SFX",
|
|
"85_CONSOLE_OFF_SFX",
|
|
"86_CONSOLE_OFF2_SFX",
|
|
"87_CONSOLE_ON2_SFX",
|
|
"88_CONSOLE_ON3_SFX",
|
|
"89_EMPTY_GUN_FIRE_SFX",
|
|
"90_SHELL_CASE_SFX",
|
|
"91_RICO_LASER1_SFX",
|
|
"92_RICO_LASER2_SFX",
|
|
"93_RICO_LASER3_SFX",
|
|
"94_RADIO_SFX",
|
|
"95_KNIFE_THROW1_SFX",
|
|
"96_KNIFE_THROW2_SFX",
|
|
"97_KNIFE_THROW3_SFX",
|
|
"98_COUGH_SFX",
|
|
"99_COUGH2_SFX",
|
|
"100_GUN_TASER_SFX",
|
|
"101_GUN_TASER_LOOP_SFX",
|
|
"102_GAS_HISS_SFX",
|
|
"103_UNKNOWN2_SFX",
|
|
"104_UNKNOWN3_SFX",
|
|
"105_PUNCHING_AIR_SFX",
|
|
"106_GUN_B1_MGUN3_3_SFX", //Used for Spyder (Klobb)
|
|
"107_GUN_B2_HEAVY_SFX", //Used for PPK
|
|
"108_GUN_UNKNOWN_SFX",
|
|
"109_GUN_B4_BOLTACTION_SFX", //used for AK47
|
|
"110_GUN_B5_WINC44_SFX",
|
|
"111_GUN_RIFLE7BIG_1_SFX", //used for Rugar
|
|
"112_GUN_B8_ANOTHER_SFX", //used for TT33
|
|
"113_GUN_B9_CANNON_SFX", //used for M16
|
|
"114_GUN_GRENADE_LAUNCHER_SFX",
|
|
"115_GUN_UNKNOWN2_SFX",
|
|
"116_GUN_B12_FULLAMRIFLE_SFX", //used for Auto Shotgun
|
|
"117_GUN_B13_M60AMMGUN_SFX", //used for Golden Gun
|
|
"118_GUN_M60AMMGUN_3_SFX",
|
|
"119_GUN_UNKNOWN3_SFX",
|
|
"120_HIT_METAL_OBJECT1_SFX",
|
|
"121_GUN_B17_RIFLE_SFX", //used for Shotgun
|
|
"122_CART_SPENT_SFX",
|
|
"123_BODY_FALL_C1_SFX",
|
|
"124_BODY_FALL_C2_SFX",
|
|
"125_BODY_FALL_C3_SFX",
|
|
"126_BODY_FALL_D1_SFX",
|
|
"127_BODY_FALL_D2_SFX",
|
|
"128_BODY_FALL_D3_SFX",
|
|
"129_BODY_FALL_D4_SFX",
|
|
"130_BODY_FALL_E1_SFX",
|
|
"131_BODY_FALL_E2_SFX",
|
|
"132_BODY_FALL_E3_SFX",
|
|
"133_BODY_ROLLOVER_SFX",
|
|
"134_GET_HIT_MALE0_SFX",
|
|
"135_GET_HIT_MALE1_SFX",
|
|
"136_GET_HIT_MALE2_SFX",
|
|
"137_GET_HIT_MALE3_SFX",
|
|
"138_GET_HIT_MALE4_SFX",
|
|
"139_GET_HIT_MALE5_SFX",
|
|
"140_GET_HIT_MALE6_SFX",
|
|
"141_GET_HIT_MALE7_SFX",
|
|
"142_GET_HIT_MALE8_SFX",
|
|
"143_GET_HIT_MALE9_SFX",
|
|
"144_GET_HIT_MALE10_SFX",
|
|
"145_GET_HIT_MALE11_SFX",
|
|
"146_GET_HIT_MALE12_SFX",
|
|
"147_GET_HIT_MALE13_SFX",
|
|
"148_GET_HIT_MALE14_SFX",
|
|
"149_GET_HIT_MALE15_SFX",
|
|
"150_GET_HIT_MALE16_SFX",
|
|
"151_GET_HIT_MALE17_SFX",
|
|
"152_GET_HIT_MALE18_SFX",
|
|
"153_GET_HIT_MALE19_SFX",
|
|
"154_GET_HIT_MALE20_SFX",
|
|
"155_GET_HIT_MALE21_SFX",
|
|
"156_GET_HIT_MALE22_SFX",
|
|
"157_GET_HIT_MALE23_SFX",
|
|
"158_GET_HIT_MALE24_SFX",
|
|
"159_CAMERA_BEEP1_SFX", //Used for Watch Beeping
|
|
"160_BING_SFX",
|
|
"161_ALARM1_SFX",
|
|
"162_ALARM2_SFX",
|
|
"163_ALARM3_SFX",
|
|
"164_RICO_EAR_WHISTLE1_SFX",
|
|
"165_RICO_EAR_WHISTLE2_SFX",
|
|
"166_RICO_EAR_WHISTLE3_SFX",
|
|
"167_RICO_EAR_WHISTLE4_SFX",
|
|
"168_RICO_EAR_WHISTLE5_SFX",
|
|
"169_EXPLOSION_2A_SFX",
|
|
"170_EXPLOSION_2B_SFX",
|
|
"171_EXPLOSION_3_SFX",
|
|
"172_EXPLOSION_4A_SFX",
|
|
"173_EXPLOSION_4B_SFX",
|
|
"174_EXPLOSION_5A_SFX",
|
|
"175_EXPLOSION_5B_SFX",
|
|
"176_EXPLOSION_5C_SFX",
|
|
"177_EXPLOSION_6_SFX",
|
|
"178_EXPLOSION_7_SFX",
|
|
"178_EXPLOSION_8_SFX",
|
|
"178_EXPLOSION_9_SFX",
|
|
"181_EXPLOSION_1B_SFX",
|
|
"182_EXPLOSION_1C_SFX",
|
|
"183_CRUSHED_YELL_SFX",
|
|
"184_KEY_SEQUENCE_SFX",
|
|
"185_HIT_BULLET_DIRT2_SFX",
|
|
"186_ALARM_SWITCH_SFX",
|
|
"187_DOOR_WOOD_CLOSE_SFX",
|
|
"188_DOOR_WOOD_OPEN_SFX",
|
|
"189_ATOMIC_BOMB_SFX",
|
|
"190_KEY_ANALYSER2_SFX",
|
|
"191_DOOR_WOOD_SLIDE_SFX",
|
|
"192_TRAIN_SLIDE_DOOR_CATCH_SFX",
|
|
"193_GAS_LEAK_SFX",
|
|
"194_DOOR_SHUTTER_OPEN_SFX",
|
|
"195_DOOR_SHUTTER_CLOSE_SFX",
|
|
"196_DOOR_METAL_OPEN_SFX",
|
|
"197_DOOR_METAL_CLOSE_SFX",
|
|
"198_CONSOLE_ON_SFX",
|
|
"199_DOOR_METAL_CLOSE2_SFX",
|
|
"200_DOOR_METAL_OPEN3_SFX",
|
|
"201_DOOR_METAL_CLOSE3_SFX",
|
|
"202_METAL_SLIDE_OPEN_SFX",
|
|
"203_METAL_SLIDE_CLOSE_SFX",
|
|
"204_METAL_SLIDE_LOOP_SFX",
|
|
"205_UNKNOWN4_SFX",
|
|
"206_UNKNOWN5_SFX",
|
|
"207_UNKNOWN6_SFX",
|
|
"208_HIT_BULLET_STONE1_SFX",
|
|
"209_HIT_BULLET_STONE2_SFX",
|
|
"210_DOOR_SMART_CATCH1_SFX",
|
|
"211_DOOR_SMART_SLIDE1_SFX",
|
|
"212_HIT_BULLET_TILE_SFX",
|
|
"213_TANK_CRUSH_MAN_SFX",
|
|
"214_HEAVY_SLIDE_OPEN_SFX",
|
|
"215_HEAVY_SLIDE_CLOSE_SFX",
|
|
"216_HEAVY_SINGLE_LOOP_SFX",
|
|
"217_HIT_BULLET_WOOD2_SFX",
|
|
"218_DOOR_HYDRAL_CLOSE_SFX", // Main Hydrolic Door loop
|
|
"219_DOOR_HYDRAL_OPEN_SFX", // Hudrolic Door Stop sound
|
|
"220_HIT_BULLET_DIRT1_SFX",
|
|
"221_HIT_METAL_OBJECT2_SFX",
|
|
"222_DOOR_LOCK_SFX", //Also used for button Presses
|
|
"223_TRAIN_CLUTTER2_SFX",
|
|
"224_HIT_BULLET_MUD3_SFX",
|
|
"225_DOOR_SLIDE_STONE_OPEN_SFX", //Main Stone Door Loop
|
|
"226_DOOR_SLIDE_STONE_CLOSE_SFX", //Stone Door Stop
|
|
"227_DATA_DOWNLOAD_SFX",
|
|
"228_LASER_GUN_SFX",
|
|
"229_KEYCARD_SFX",
|
|
"230_HIT_BULLET_MUD2_SFX",
|
|
"231_HIT_BULLET_MUD1_SFX",
|
|
"232_PICKUP_GUN_SFX",
|
|
"233_PICKUP_KNIFE_SFX",
|
|
"234_PICKUP_AMMO_SFX",
|
|
"235_PICKUP_MINE_SFX",
|
|
"236_WATCH_STATIC_SFX",
|
|
"237_WATCH_ON_SFX",
|
|
"238_WATCH_OFF_SFX",
|
|
"239_HIT_BULLET_METAL_A3_SFX",
|
|
"240_HIT_BULLET_METAL_A4_SFX",
|
|
"241_ATTACH_MINE_SFX",
|
|
"242_PICKUP_LASER_SFX",
|
|
"243_WATCH_DETONATE_MINE_SFX", //Watch Trigger
|
|
"244_CAMERA_CLICK_SFX", //Camera Shutter
|
|
"245_KEY_ANALYSER_SFX",
|
|
"246_MAGNETIC_HUM_SFX",
|
|
"247_BOMB_DEFUSE_SFX",
|
|
"248_BI_PLANE_SFX",
|
|
"249_TRAIN_CLUTTER_SFX",
|
|
"250_TRAIN_CLUTTERB_SFX",
|
|
"251_TRAIN_CLUTTERC_SFX",
|
|
"252_TRAIN_CLUTTERD_SFX",
|
|
"253_GUN_B9_CANNON_SHORT_SFX",
|
|
"254_UNKNOWN_QUIET_SFX",
|
|
"255_CAMERA_ZOOM_LOOP_SFX",
|
|
"256_CAMERA_ZOOM_STOP_SFX",
|
|
"257_SNEEZE_SFX",
|
|
"258_RARELOGO_SFX",
|
|
"259_RARELOGO_QUIET_SFX",
|
|
"260_RARELOGO_FAINT_SFX",
|
|
"261_BIG_CLANK_SFX"
|
|
};
|
|
#endif
|
|
|
|
typedef enum SHOT_REGISTER
|
|
{
|
|
SHOT_REGISTER_TOTAL,
|
|
SHOT_REGISTER_HEAD,
|
|
SHOT_REGISTER_BODY,
|
|
SHOT_REGISTER_LIMB,
|
|
SHOT_REGISTER_GUN,
|
|
SHOT_REGISTER_HAT,
|
|
SHOT_REGISTER_OBJECT
|
|
} SHOT_REGISTER;
|
|
|
|
typedef enum SPEED
|
|
{
|
|
SPEED_WALK,
|
|
SPEED_RUN,
|
|
SPEED_SPRINT
|
|
} SPEED;
|
|
|
|
typedef enum STAGESTATUS
|
|
{
|
|
STAGESTATUS_LOCKED,
|
|
STAGESTATUS_UNLOCKED,
|
|
STAGESTATUS_NOTCOMPLETED,
|
|
STAGESTATUS_COMPLETED
|
|
} STAGESTATUS;
|
|
|
|
typedef enum TEXTBANK_LEVEL_INDEX
|
|
{
|
|
LNULL, /* Null (unused) */
|
|
LAME, /* Library (multi) */
|
|
LARCH, /* Archives */
|
|
LARK, /* Facility */
|
|
LASH, /* Stack (multi) */
|
|
LAZT, /* Aztec */
|
|
LCAT, /* Citadel (multi) */
|
|
LCAVE, /* Caverns */
|
|
LAREC, /* Control */
|
|
LCRAD, /* Cradle */
|
|
LCRYP, /* Egypt */
|
|
LDAM, /* Dam */
|
|
LDEPO, /* Depot */
|
|
LDEST, /* Frigate */
|
|
LDISH, /* Temple (multi) */
|
|
LEAR, /* Ear (unused) */
|
|
LELD, /* Eld (unused) */
|
|
LIMP, /* Basement (multi) */
|
|
LJUN, /* Jungle */
|
|
LLEE, /* Lee (unused) */
|
|
LLEN, /* Cuba */
|
|
LLIP, /* Lip (unused) */
|
|
LLUE, /* Lue (unused) */
|
|
LOAT, /* Cave (multi) */
|
|
LPAM, /* Pam (unused) */
|
|
LPETE, /* Streets */
|
|
LREF, /* Complex (multi) */
|
|
LRIT, /* Rit (unused) */
|
|
LRUN, /* Runway */
|
|
LSEVB, /* Bunker 2 */
|
|
LSEV, /* Bunker 1 */
|
|
LSEVX, /* Surface 1 */
|
|
LSEVXB, /* Surface 2 */
|
|
LSHO, /* Sho (unused) */
|
|
LSILO, /* Silo */
|
|
LSTAT, /* Statue */
|
|
LTRA, /* Train */
|
|
LWAX, /* Wax (unused) */
|
|
LGUN, /* Guns */
|
|
LTITLE, /* Stage and menu titles */
|
|
LMPMENU, /* Multi menus */
|
|
LPROPOBJ, /* In-game pickups */
|
|
LMPWEAPONS, /* Multi weapon select */
|
|
LOPTIONS, /* Solo in-game menus */
|
|
LMISC /* Cheat options */
|
|
} TEXTBANK_LEVEL_INDEX;
|
|
#ifdef AIPARSE
|
|
char *TEXTBANK_LEVEL_INDEX_ToString[] =
|
|
{
|
|
"LNULL", /* Null (unused) */
|
|
"LAME", /* Library (multi) */
|
|
"LARCH", /* Archives */
|
|
"LARK", /* Facility */
|
|
"LASH", /* Stack (multi) */
|
|
"LAZT", /* Aztec */
|
|
"LCAT", /* Citadel (multi) */
|
|
"LCAVE", /* Caverns */
|
|
"LAREC", /* Control */
|
|
"LCRAD", /* Cradle */
|
|
"LCRYP", /* Egypt */
|
|
"LDAM", /* Dam */
|
|
"LDEPO", /* Depot */
|
|
"LDEST", /* Frigate */
|
|
"LDISH", /* Temple (multi) */
|
|
"LEAR", /* Ear (unused) */
|
|
"LELD", /* Eld (unused) */
|
|
"LIMP", /* Basement (multi) */
|
|
"LJUN", /* Jungle */
|
|
"LLEE", /* Lee (unused) */
|
|
"LLEN", /* Cuba */
|
|
"LLIP", /* Lip (unused) */
|
|
"LLUE", /* Lue (unused) */
|
|
"LOAT", /* Cave (multi) */
|
|
"LPAM", /* Pam (unused) */
|
|
"LPETE", /* Streets */
|
|
"LREF", /* Complex (multi) */
|
|
"LRIT", /* Rit (unused) */
|
|
"LRUN", /* Runway */
|
|
"LSEVB", /* Bunker 2 */
|
|
"LSEV", /* Bunker 1 */
|
|
"LSEVX", /* Surface 1 */
|
|
"LSEVXB", /* Surface 2 */
|
|
"LSHO", /* Sho (unused) */
|
|
"LSILO", /* Silo */
|
|
"LSTAT", /* Statue */
|
|
"LTRA", /* Train */
|
|
"LWAX", /* Wax (unused) */
|
|
"LGUN", /* Guns */
|
|
"LTITLE", /* Stage and menu titles */
|
|
"LMPMENU", /* Multi menus */
|
|
"LPROPOBJ", /* In-game pickups */
|
|
"LMPWEAPONS", /* Multi weapon select */
|
|
"LOPTIONS", /* Solo in-game menus */
|
|
"LMISC" /* Cheat options */
|
|
};
|
|
|
|
#endif
|
|
|
|
|
|
#define GUNSIGHTREASON_1 0x01
|
|
#define GUNSIGHTREASON_NOTAIMING 0x02
|
|
#define GUNSIGHTREASON_NOCONTROL 0x04
|
|
#define GUNSIGHTREASON_DAMAGE 0x10
|
|
|
|
#define GUNAMMOREASON_OPTION 0x01
|
|
#define GUNAMMOREASON_NOCONTROL 0x02
|
|
#define GUNAMMOREASON_DAMAGE 0x08
|
|
|
|
typedef enum WATCH_ANIMATION_STATE_IDS {
|
|
WATCH_ANIMATION_0x0, /* Watch closed, normal play. */
|
|
WATCH_ANIMATION_0x1, /* Pause initiated, lower any weapon in left hand. */
|
|
WATCH_ANIMATION_0x2, /* Tilt player camera to watch angle. */
|
|
WATCH_ANIMATION_0x3, /* Raise left arm. */
|
|
WATCH_ANIMATION_0x4, /* Zoom into watch face. */
|
|
WATCH_ANIMATION_0x5, /* Watch open, game paused. */
|
|
WATCH_ANIMATION_0x6, /* Zoom out from watch face. */
|
|
WATCH_ANIMATION_0x7, /* Lower left arm. */
|
|
WATCH_ANIMATION_0x8, /* Tilt player camera to where it was before pause initiated, finish pause. */
|
|
WATCH_ANIMATION_0x9,
|
|
WATCH_ANIMATION_0xa,
|
|
WATCH_ANIMATION_0xb,
|
|
WATCH_ANIMATION_0xc,
|
|
WATCH_ANIMATION_0xd
|
|
} WATCH_ANIMATION_STATE;
|
|
|
|
typedef enum WATCH_BRIEFING_PAGE
|
|
{
|
|
BRIEFING_INVALID = -1,
|
|
BRIEFING_TITLE,
|
|
BRIEFING_OVERVIEW,
|
|
BRIEFING_M,
|
|
BRIEFING_Q,
|
|
BRIEFING_MONEYPENNY
|
|
} WATCH_BRIEFING_PAGE;
|
|
|
|
typedef enum AWARD {
|
|
|
|
AWARD_MOSTSUICIDAL = 0x00001,
|
|
AWARD_WHONEEDSAMMO = 0x00002,
|
|
AWARD_WHERESTHEARMOUR = 0x00004,
|
|
AWARD_ACNEGATIVE10 = 0x00008,
|
|
AWARD_MARKSMANSHIP = 0x00010,
|
|
AWARD_MOSTPROFESSIONAL = 0x00020,
|
|
AWARD_MOSTDEADLY = 0x00040,
|
|
AWARD_MOSTHARMLESS = 0x00080,
|
|
AWARD_MOSTCOWARDLY = 0x00100,
|
|
AWARD_MOSTFRANTIC = 0x00200,
|
|
AWARD_MOSTHONORABLE = 0x00400,
|
|
AWARD_MOSTDISHONORABLE = 0x00800,
|
|
AWARD_SHORTESTINNINGS = 0x01000,
|
|
AWARD_LONGESTINNINGS = 0x02000,
|
|
AWARD_DOUBLEKILL = 0x04000,
|
|
AWARD_TRIPLEKILL = 0x08000,
|
|
AWARD_QUADKILL = 0x10000
|
|
} AWARD;
|
|
|
|
typedef enum WAYMODE
|
|
{
|
|
WAYMODE_0,
|
|
WAYMODE_1,
|
|
WAYMODE_2,
|
|
WAYMODE_3,
|
|
WAYMODE_4,
|
|
WAYMODE_5,
|
|
WAYMODE_MAGIC
|
|
} WAYMODE;
|
|
|
|
typedef enum SPSEGMENT
|
|
{
|
|
SPSEGMENT_PHYSICAL = 0,
|
|
SPSEGMENT_UNKNOWN = 1,
|
|
SPSEGMENT_GETITLE = 2,
|
|
SPSEGMENT_MODEL_MTX = 3,
|
|
SPSEGMENT_MODEL_VTX = 4,
|
|
SPSEGMENT_MODEL_COL1 = 5,
|
|
SPSEGMENT_MODEL_COL2 = 6,
|
|
SPSEGMENT_BG_COL = 13,
|
|
SPSEGMENT_BG_VTX = 14,
|
|
SPSEGMENT_BG_DL = 15
|
|
} SPSEGMENT;
|
|
|
|
typedef enum TVCMD
|
|
{
|
|
TVCMD_STOPSCROLL,
|
|
TVCMD_SCROLLRELX,
|
|
TVCMD_SCROLLRELY,
|
|
TVCMD_SCROLLABSX,
|
|
TVCMD_SCROLLABSY,
|
|
TVCMD_SCALEABSX,
|
|
TVCMD_SCALEABSY,
|
|
TVCMD_SETTEXTURE,
|
|
TVCMD_PAUSE,
|
|
TVCMD_SETCMDLIST,
|
|
TVCMD_RANDSETCMDLIST,
|
|
TVCMD_RESTART,
|
|
TVCMD_YIELD,
|
|
TVCMD_SETCOLOUR,
|
|
TVCMD_ROTATEABS,
|
|
TVCMD_ROTATEREL
|
|
} TVCMD;
|
|
|
|
enum CCRMLUT
|
|
{
|
|
CCRMLUT_UNKNOWN,
|
|
CCRMLUT_PRIMARY_ADDFOG,
|
|
CCRMLUT_BILLBOARD,
|
|
CCRMLUT_WATER,
|
|
CCRMLUT_CLOUD,
|
|
CCRMLUT_SECONDARY_ADDFOG,
|
|
CCRMLUT_PRIMARY,
|
|
CCRMLUT_SECONDARY,
|
|
CCRMLUT_WALLETBOND,
|
|
CCRMLUT_FIXFOGALPHA3
|
|
};
|
|
|
|
#pragma region Object Instance Stuff
|
|
typedef enum BODIES
|
|
{
|
|
BODY_Jungle_Commando,
|
|
BODY_St_Petersburg_Guard,
|
|
BODY_Russian_Soldier,
|
|
BODY_Russian_Infantry,
|
|
BODY_Janus_Special_Forces,
|
|
BODY_Brosnan_Tuxedo,
|
|
#ifdef ALL_BONDS
|
|
BODY_Connery_Tuxedo,
|
|
BODY_Dalton_Tuxedo,
|
|
BODY_Moore_Tuxedo,
|
|
#endif
|
|
BODY_Boris,
|
|
BODY_Ourumov,
|
|
BODY_Trevelyan_Janus,
|
|
BODY_Trevelyan_006,
|
|
BODY_Valentin_,
|
|
BODY_Xenia,
|
|
BODY_Baron_Samedi,
|
|
BODY_Jaws,
|
|
BODY_Mayday,
|
|
BODY_Oddjob,
|
|
BODY_Natalya_Skirt,
|
|
BODY_Janus_Marine,
|
|
BODY_Russian_Commandant,
|
|
BODY_Siberian_Guard_1_Mishkin,
|
|
BODY_Naval_Officer,
|
|
BODY_Siberian_Special_Forces,
|
|
BODY_Special_Operations_Uniform,
|
|
BODY_Formal_Wear,
|
|
BODY_Jungle_Fatigues,
|
|
BODY_Parka,
|
|
BODY_Unused_Female,
|
|
BODY_Rosika,
|
|
BODY_Scientist_2_Female,
|
|
BODY_Civilian_1_Female,
|
|
BODY_Unused_Male_1,
|
|
BODY_Unused_Male_2,
|
|
BODY_Civilian_4,
|
|
BODY_Civilian_2,
|
|
BODY_Civilian_3,
|
|
BODY_Scientist_1_Male,
|
|
BODY_Helicopter_Pilot,
|
|
BODY_Siberian_Guard_2,
|
|
BODY_Arctic_Commando,
|
|
BODY_Moonraker_Elite_1_Male,
|
|
BODY_Moonraker_Elite_2_Female,
|
|
BODY_Left_Suit_Hand_Floating_Arm,
|
|
HEAD_START,
|
|
BODY_Male_Karl = HEAD_START,
|
|
BODY_Male_Alan,
|
|
BODY_Male_Pete,
|
|
BODY_Male_Martin,
|
|
BODY_Male_Mark,
|
|
BODY_Male_Duncan,
|
|
BODY_Male_Shaun,
|
|
BODY_Male_Dwayne,
|
|
BODY_Male_B,
|
|
BODY_Male_Dave_Dr_Doak,
|
|
BODY_Male_Grant,
|
|
BODY_Male_Des,
|
|
BODY_Male_Chris,
|
|
BODY_Male_Lee,
|
|
BODY_Male_Neil,
|
|
BODY_Male_Jim,
|
|
BODY_Male_Robin,
|
|
BODY_Male_Steve_H,
|
|
BODY_Male_Terrorist,
|
|
BODY_Male_Biker,
|
|
BODY_Male_Graeme,
|
|
BODY_Male_Steve_Ellis,
|
|
BODY_Male_Joel,
|
|
BODY_Male_Scott,
|
|
BODY_Male_Joe_Altered,
|
|
BODY_Male_Ken,
|
|
BODY_Male_Joe,
|
|
BODY_Male_Mishkin,
|
|
BODY_Female_Sally,
|
|
BODY_Female_Marion_Rosika,
|
|
BODY_Female_Mandy,
|
|
BODY_Female_Vivien,
|
|
BODY_Male_Pierce_Bond_1,
|
|
BODY_Male_Pierce_Bond_2,
|
|
BODY_Male_Pierce_Bond_3,
|
|
BODY_Male_Pierce_Bond_Parka,
|
|
BODY_Male_Pierce_Bond_Tuxedo,
|
|
BODY_Natalya_Jungle_Fatigues,
|
|
BODIES_MAX
|
|
} BODIES;
|
|
|
|
typedef enum GENDER
|
|
{
|
|
FEMALE,
|
|
MALE
|
|
} GENDER;
|
|
|
|
typedef enum HEADS
|
|
{
|
|
HEAD_Male_Karl = HEAD_START,
|
|
HEAD_Male_Alan,
|
|
HEAD_Male_Pete,
|
|
HEAD_Male_Martin,
|
|
HEAD_Male_Mark,
|
|
HEAD_Male_Duncan,
|
|
HEAD_Male_Shaun,
|
|
HEAD_Male_Dwayne,
|
|
HEAD_Male_B,
|
|
HEAD_Male_Dave_Dr_Doak,
|
|
HEAD_Male_Grant,
|
|
HEAD_Male_Des,
|
|
HEAD_Male_Chris,
|
|
HEAD_Male_Lee,
|
|
HEAD_Male_Neil,
|
|
HEAD_Male_Jim,
|
|
HEAD_Male_Robin,
|
|
HEAD_Male_Steve_H,
|
|
HEAD_Male_Terrorist,
|
|
HEAD_Male_Biker,
|
|
HEAD_Male_Graeme,
|
|
HEAD_Male_Steve_Ellis,
|
|
HEAD_Male_Joel,
|
|
HEAD_Male_Scott,
|
|
HEAD_Male_Joe_Altered,
|
|
HEAD_Male_Ken,
|
|
HEAD_Male_Joe,
|
|
HEAD_Male_Mishkin,
|
|
HEAD_F_START,
|
|
HEAD_Female_Sally = HEAD_F_START,
|
|
HEAD_Female_Marion_Rosika,
|
|
HEAD_Female_Mandy,
|
|
HEAD_Female_Vivien,
|
|
HEAD_BOND_START,
|
|
HEAD_Male_Brosnan_Boiler = HEAD_BOND_START,
|
|
HEAD_Male_Brosnan_Default,
|
|
HEAD_Male_Brosnan_Jungle,
|
|
HEAD_Male_Brosnan_Parka,
|
|
HEAD_Male_Brosnan_Tuxedo,
|
|
#ifdef ALL_BONDS
|
|
HEAD_Male_Connery_Tuxedo,
|
|
HEAD_Male_Dalton_Tuxedo,
|
|
HEAD_Male_Moore_Tuxedo,
|
|
#endif
|
|
HEAD_Natalya_Jungle_Fatigues,
|
|
HEAD_END,
|
|
/*The following are some maybe helpfull counts (maybe GE doesnt need them, but thought Id ad while here)*/
|
|
HEAD_COUNT = HEAD_END - HEAD_START, // Total number of heads
|
|
HEAD_MALE_COUNT = HEAD_F_START - HEAD_START, // Total number of usable randon male heads
|
|
HEAD_FEMALE_COUNT = HEAD_BOND_START - HEAD_F_START, // Total number of usable randon female heads
|
|
HEAD_FIXED = 0xFFFFFFFF,
|
|
HEAD_RANDOM = 0xFFFFFF9F
|
|
} HEADS;
|
|
|
|
//Canonical name and style "ai_destroyobj 2 : (def->obj == PROP_ELVIS_SAUCER)\n"
|
|
typedef enum PROP
|
|
{
|
|
PROP_ALARM1, /* Beta Alarm / Default Multi Weapon */
|
|
PROP_ALARM2, /* Alarm */
|
|
PROP_EXPLOSIONBIT, /* White Pyramid (Explosion Bit) */
|
|
PROP_AMMO_CRATE1, /* Ammo Crate (Brown w/ Edge Brace, 6x240 Black) */
|
|
PROP_AMMO_CRATE2, /* Ammo Crate (Brown w/ Center Brace, 12x8 Black) */
|
|
PROP_AMMO_CRATE3, /* Ammo Crate (Green w/ Center Brace, 12x8 Brown) */
|
|
PROP_AMMO_CRATE4, /* Ammo Crate (Green w/ Edge Brace, 6x8 White) */
|
|
PROP_AMMO_CRATE5, /* Ammo Crate (Green w/ Double Brace, 24x60 Black) */
|
|
PROP_BIN1, /* Rusted Trash Bin */
|
|
PROP_BLOTTER1, /* Desk Blotter */
|
|
PROP_BOOK1, /* Red Book */
|
|
PROP_BOOKSHELF1, /* Bookshelf */
|
|
PROP_BRIDGE_CONSOLE1A, /* Bridge Console w/ Monitor, Navigation + Keyboard 1A */
|
|
PROP_BRIDGE_CONSOLE1B, /* Bridge Console w/ Navigation 1B */
|
|
PROP_BRIDGE_CONSOLE2A, /* Bridge Console w/ Navigation, Monitor + Keyboard 2A */
|
|
PROP_BRIDGE_CONSOLE2B, /* Bridge Console w/ Various Controls 2B */
|
|
PROP_BRIDGE_CONSOLE3A, /* Bridge Console w/ Monitor, Navigation + Keyboard 3A */
|
|
PROP_BRIDGE_CONSOLE3B, /* Bridge Console w/ Monitor, Keyboard + Navigation 3B */
|
|
PROP_CARD_BOX1, /* Cardboard Box, Kapto|Enb */
|
|
PROP_CARD_BOX2, /* Cardboard Box, Red Arrow, Bahko */
|
|
PROP_CARD_BOX3, /* Cardboard Box, Scrawled Text, Bahah */
|
|
PROP_CARD_BOX4_LG, /* Cardboard Box, Three Seams */
|
|
PROP_CARD_BOX5_LG, /* Cardboard Box, Two Seams, Bahah */
|
|
PROP_CARD_BOX6_LG, /* Cardboard Box, Bahko */
|
|
PROP_CCTV, /* Surveillance Camera */
|
|
PROP_CONSOLE1, /* Double Screen Consoles w/ Keyboards */
|
|
PROP_CONSOLE2, /* Double Screen Consoles w/ Left Keyboard */
|
|
PROP_CONSOLE3, /* Double Screen Consoles w/ Right Keyboard */
|
|
PROP_CONSOLE_SEVA, /* Console w/ Keyboard */
|
|
PROP_CONSOLE_SEVB, /* Console w/ Monitor + Keyboard */
|
|
PROP_CONSOLE_SEVC, /* Console w/ Switches */
|
|
PROP_CONSOLE_SEVD, /* Console w/ Five Gauges */
|
|
PROP_CONSOLE_SEV2A, /* Console w/ Four Faders */
|
|
PROP_CONSOLE_SEV2B, /* Console w/ Monitor, Keyboard + Switches */
|
|
PROP_CONSOLE_SEV2C, /* Console w/ Three Gauges */
|
|
PROP_CONSOLE_SEV2D, /* Console w/ Pressure Gauge */
|
|
PROP_CONSOLE_SEV_GEA, /* Console w/ GoldenEye Key Slot */
|
|
PROP_CONSOLE_SEV_GEB, /* Console w/ Faders + Pressure Gauge */
|
|
PROP_DESK1, /* Desk w/ Kickplate */
|
|
PROP_DESK2, /* Desk */
|
|
PROP_DESK_LAMP2, /* Desk Lamp */
|
|
PROP_DISC_READER, /* External Hard Drive */
|
|
PROP_DISK_DRIVE1, /* Floppy Disc Drive */
|
|
PROP_FILING_CABINET1, /* Filing Cabinet */
|
|
PROP_JERRY_CAN1, /* Jerrycan (Fuel Container) */
|
|
PROP_KEYBOARD1, /* Computer Keyboard */
|
|
PROP_KIT_UNITS1, /* Kitchen Cabinets */
|
|
PROP_LETTER_TRAY1, /* Letter Tray */
|
|
PROP_MAINFRAME1, /* Mainframe, Basic */
|
|
PROP_MAINFRAME2, /* Mainframe, Advanced */
|
|
PROP_METAL_CHAIR1, /* Chair (Metal) */
|
|
PROP_METAL_CRATE1, /* Metal Crate, 6 Top Corner */
|
|
PROP_METAL_CRATE2, /* Metal Crate, 6 Bottom Corner */
|
|
PROP_METAL_CRATE3, /* Metal Crate, Toxic Materials */
|
|
PROP_METAL_CRATE4, /* Metal Crate, Double Stripe - Class D1 Hazard */
|
|
PROP_MISSILE_RACK, /* Naval Harpoon Missile in Containment Rack */
|
|
PROP_MISSILE_RACK2, /* Naval Harpoon Missiles in Containment Racks x4 */
|
|
PROP_OIL_DRUM1, /* Oil Drum, Single Stripe, Ribbed */
|
|
PROP_OIL_DRUM2, /* Oil Drum, Single Stripe, Ribbed - Class D1 Hazard */
|
|
PROP_OIL_DRUM3, /* Oil Drum, Single Stripe, Ribbed - Toxic Materials */
|
|
PROP_OIL_DRUM5, /* Oil Drum, Double Stripe - Toxic Materials */
|
|
PROP_OIL_DRUM6, /* Oil Drum - Toxic Materials */
|
|
PROP_OIL_DRUM7, /* Oil Drum, Double Dashes - Class D1 Hazard */
|
|
PROP_PADLOCK, /* Padlock */
|
|
PROP_PHONE1, /* Telephone */
|
|
PROP_RADIO_UNIT1, /* Radio Tuner w/ 1 Knob + 2 Gauges */
|
|
PROP_RADIO_UNIT2, /* Radio Tuner w/ 1 Knob + 5 Gauges */
|
|
PROP_RADIO_UNIT3, /* Radio Tuner w/ 3 Knobs + 5 Gauges */
|
|
PROP_RADIO_UNIT4, /* Radio Tuner w/ 3 Knobs + 2 Gauges */
|
|
PROP_SAT1_REFLECT, /* GoldenEye Satellite */
|
|
PROP_SATDISH, /* Satellite Dish (Arkangelsk) */
|
|
PROP_SATBOX, /* Uplink Box */
|
|
PROP_STOOL1, /* Wooden Stool */
|
|
PROP_SWIVEL_CHAIR1, /* Swivel Chair */
|
|
PROP_TORPEDO_RACK, /* Naval Torpedo Rack x3 */
|
|
PROP_TV1, /* Television Monitor */
|
|
PROP_TV_HOLDER, /* Hanging Monitor Rack */
|
|
PROP_TVSCREEN, /* Wall Monitor Screen */
|
|
PROP_TV4SCREEN, /* Wall Monitor Screens, 4-in-1 */
|
|
PROP_WOOD_LG_CRATE1, /* Wooden Crate w/ #4 Label, Bahah */
|
|
PROP_WOOD_LG_CRATE2, /* Wooden Crate, Darker Shading, Kapto|Enb */
|
|
PROP_WOOD_MD_CRATE3, /* Wooden Crates x8, Bahko */
|
|
PROP_WOOD_SM_CRATE4, /* Wooden Crate w/ #2 Label, Bahko */
|
|
PROP_WOOD_SM_CRATE5, /* Wooden Crate w/ #4 Label, Darker Shading, Bahah */
|
|
PROP_WOOD_SM_CRATE6, /* Wooden Crate w/ UP Arrow, Kapto|Enb */
|
|
PROP_WOODEN_TABLE1, /* Wooden Table */
|
|
PROP_SWIPE_CARD2, /* Keycard */
|
|
PROP_BORG_CRATE, /* Blue and Gold Printed Circuit Cube (Borg Crate) */
|
|
PROP_BOXES4X4, /* Metal Crate Stack, 4x4 */
|
|
PROP_BOXES3X4, /* Metal Crate Stack, 3x4 */
|
|
PROP_BOXES2X4, /* Metal Crate Stack, 2x4 */
|
|
PROP_SEC_PANEL, /* Security Card Panel */
|
|
PROP_ICBM_NOSE, /* Silo Missile (ICBM), Nose Cone Only */
|
|
PROP_ICBM, /* Silo Missile (ICBM) */
|
|
PROP_TUNING_CONSOLE1, /* Dual Consoles on Castors */
|
|
PROP_DESK_ARECIBO1, /* Computer Work Desk */
|
|
PROP_LOCKER3, /* Lockers, Single Venting */
|
|
PROP_LOCKER4, /* Lockers, Double Venting */
|
|
PROP_ROOFGUN, /* Ceiling Mounted Drone Gun */
|
|
PROP_DEST_ENGINE, /* Frigate Engine */
|
|
PROP_DEST_EXOCET, /* Naval MK 29 Missile Launcher (Exocet) */
|
|
PROP_DEST_GUN, /* Naval 100 mm Gun Turret (TR 100) */
|
|
PROP_DEST_HARPOON, /* Naval MK 141 Launch Canisters (Harpoon) */
|
|
PROP_DEST_SEAWOLF, /* Naval MK 26 Dual Missile Launcher (Seawolf) */
|
|
PROP_WINDOW, /* Window Glass */
|
|
PROP_WINDOW_LIB_LG1, /* Window Glass, Lattice Frame, 4x10 (single-sided) */
|
|
PROP_WINDOW_LIB_SM1, /* Window Glass, Lattice Frame, 4x3 (double-sided) */
|
|
PROP_WINDOW_COR11, /* Window Glass, Lattice Frame, 4x4 (single-sided) */
|
|
PROP_JUNGLE3_TREE, /* Jungle Large Tree */
|
|
PROP_PALM, /* Jungle Palm Tree */
|
|
PROP_PALMTREE, /* Jungle Palm Tree, Resprouting After Loss of Fronds */
|
|
PROP_PLANT2B, /* Jungle Plant, Low Shrub */
|
|
PROP_LABBENCH, /* Laboratory Table w/ Sink Drains */
|
|
PROP_GASBARREL, /* White Bin */
|
|
PROP_GASBARRELS, /* White Bins x4 */
|
|
PROP_BODYARMOUR, /* Body Armor */
|
|
PROP_BODYARMOURVEST, /* Body Armor (Vest) */
|
|
PROP_GASTANK, /* Bottling Tank */
|
|
PROP_GLASSWARE1, /* Glass Cup */
|
|
PROP_HATCHBOLT, /* Metallic Securing Strip (Hatch Bolt) */
|
|
PROP_BRAKEUNIT, /* Train Brake Controller */
|
|
PROP_AK47MAG, /* Gun Magazine (KF7 Soviet) */
|
|
PROP_M16MAG, /* Gun Magazine (AR33 Assault Rifle) */
|
|
PROP_MP5KMAG, /* Gun Magazine (D5K Deutsche) */
|
|
PROP_SKORPIONMAG, /* Gun Magazine (Klobb) */
|
|
PROP_SPECTREMAG, /* Gun Magazine (Phantom) */
|
|
PROP_UZIMAG, /* Gun Magazine (ZMG (9mm)) */
|
|
PROP_SILENCER, /* Silencer */
|
|
PROP_CHREXTINGUISHER, /* Fire Extinguisher */
|
|
PROP_BOXCARTRIDGES, /* Box of Shells (Shotgun Cartridges) */
|
|
PROP_FNP90MAG, /* Gun Magazine (RC-P90) */
|
|
PROP_GOLDENSHELLS, /* Box of Shells (Golden Gun Bullets) */
|
|
PROP_MAGNUMSHELLS, /* Box of Shells (Magnum Rounds) */
|
|
PROP_WPPKMAG, /* Gun Magazine (PP7) */
|
|
PROP_TT33MAG, /* Gun Magazine (DD44 Dostovei) */
|
|
PROP_SEV_DOOR, /* Grey Containment Door w/ Caution Stripes and Window */
|
|
PROP_SEV_DOOR3, /* Grey Electronic Door w/ LEFT Arrow */
|
|
PROP_SEV_DOOR3_WIND, /* BETA Electronic Door w/ LEFT Arrow and Fake Window */
|
|
PROP_SEV_DOOR4_WIND, /* Grey Electronic Door w/ LEFT Arrow and Window */
|
|
PROP_SEV_TRISLIDE, /* Glass Door w/ Stone Frame */
|
|
PROP_SEV_DOOR_V1, /* Grey Electronic Door w/ UP Arrow */
|
|
PROP_STEEL_DOOR1, /* Silver Corrugated Door w/ Caution Stripes */
|
|
PROP_STEEL_DOOR2, /* Rusty Door w/ Handle */
|
|
PROP_STEEL_DOOR3, /* Double Cross Brace Door */
|
|
PROP_SILO_LIFT_DOOR, /* Elevator Door */
|
|
PROP_STEEL_DOOR2B, /* Rusty Door w/o Handle */
|
|
PROP_DOOR_ROLLER1, /* Blue Bay Door w/ Caution Stripes */
|
|
PROP_DOOR_ROLLER2, /* Blue Bay Door w/ Venting and Caution Stripes */
|
|
PROP_DOOR_ROLLER3, /* Blue Bay Door w/ Venting and Caution Stripes */
|
|
PROP_DOOR_ROLLER4, /* Cargo Bay Door w/ UP Arrow and Transportation Stripes */
|
|
PROP_DOOR_ST_AREC1, /* Blue Corrugated Door w/ Transportation Stripes */
|
|
PROP_DOOR_ST_AREC2, /* Blue Reversed Corrugated Door w/ Transportation Stripes */
|
|
PROP_DOOR_DEST1, /* Grey Frigate Door w/ Indents and Caution Stripes */
|
|
PROP_DOOR_DEST2, /* Grey Frigate Door w/ Indents, Caution Stripes and KEEP CLEAR Label */
|
|
PROP_GAS_PLANT_SW_DO1, /* Grey Swinging Door w/ Blue Stripe */
|
|
PROP_GAS_PLANT_SW2_DO1, /* Grey Swinging Door, Darker */
|
|
PROP_GAS_PLANT_SW3_DO1, /* Grey Swinging Door, Lighter */
|
|
PROP_GAS_PLANT_SW4_DO1, /* Light Wooden Door (Looks Like Sand) */
|
|
PROP_GAS_PLANT_MET1_DO1, /* Brown Electronic Door */
|
|
PROP_GAS_PLANT_WC_CUB1, /* Bathroom Stall Door */
|
|
PROP_GASPLANT_CLEAR_DOOR, /* Laboratory Glass Door */
|
|
PROP_TRAIN_DOOR, /* Dark Wooden Door */
|
|
PROP_TRAIN_DOOR2, /* Dark Wooden Door w/ Window */
|
|
PROP_TRAIN_DOOR3, /* Dark Wooden Door w/ Window + Shutter */
|
|
PROP_DOOR_EYELID, /* Eyelid Door */
|
|
PROP_DOOR_IRIS, /* Iris Door */
|
|
PROP_SEVDOORWOOD, /* Cabin Door */
|
|
PROP_SEVDOORWIND, /* Weathered Swinging Door w/ Window */
|
|
PROP_SEVDOORNOWIND, /* Weathered Swinging Door */
|
|
PROP_SEVDOORMETSLIDE, /* Brown Corrugated Electronic Door */
|
|
PROP_CRYPTDOOR1A, /* Stone Door w/ Prints (Set A) */
|
|
PROP_CRYPTDOOR1B, /* Sand Door w/ Damage (Set A) */
|
|
PROP_CRYPTDOOR2A, /* Stone Door w/ Prints, Darker (Set B) */
|
|
PROP_CRYPTDOOR2B, /* Sand Door w/ Damage, Darker (Set B) */
|
|
PROP_CRYPTDOOR3, /* Egyptian Moving Wall */
|
|
PROP_CRYPTDOOR4, /* Brown Sand Door (Temple) */
|
|
PROP_VERTDOOR, /* Blast Door (Control) */
|
|
PROP_HATCHDOOR, /* Train Floor Hatch */
|
|
PROP_DAMGATEDOOR, /* Security Gate (Dam) */
|
|
PROP_DAMTUNDOOR, /* Tunnel Flood Door (Dam) */
|
|
PROP_DAMCHAINDOOR, /* Mesh Gate */
|
|
PROP_SILOTOPDOOR, /* Launch Tube Ceiling Shutter (Silo) */
|
|
PROP_DOORPRISON1, /* Cell Door */
|
|
PROP_DOORSTATGATE, /* Park Gate */
|
|
PROP_CHRKALASH, /* KF7 Soviet */
|
|
PROP_CHRGRENADELAUNCH, /* Grenade Launcher */
|
|
PROP_CHRKNIFE, /* Hunting Knife */
|
|
PROP_CHRLASER, /* Moonraker Laser */
|
|
PROP_CHRM16, /* AR33 Assault Rifle */
|
|
PROP_CHRMP5K, /* D5K Deutsche */
|
|
PROP_CHRRUGER, /* Cougar Magnum */
|
|
PROP_CHRWPPK, /* PP7 Special Issue */
|
|
PROP_CHRSHOTGUN, /* Shotgun */
|
|
PROP_CHRSKORPION, /* Klobb */
|
|
PROP_CHRSPECTRE, /* Phantom */
|
|
PROP_CHRUZI, /* ZMG (9mm) */
|
|
PROP_CHRGRENADE, /* Hand Grenade */
|
|
PROP_CHRFNP90, /* RC-P90 */
|
|
PROP_CHRBRIEFCASE, /* Briefcase */
|
|
PROP_CHRREMOTEMINE, /* Remote Mine */
|
|
PROP_CHRPROXIMITYMINE, /* Proximity Mine */
|
|
PROP_CHRTIMEDMINE, /* Timed Mine */
|
|
PROP_CHRROCKET, /* Rocket */
|
|
PROP_CHRGRENADEROUND, /* Grenade Round */
|
|
PROP_CHRWPPKSIL, /* PP7 (Silenced) */
|
|
PROP_CHRTT33, /* DD44 Dostovei */
|
|
PROP_CHRMP5KSIL, /* D5K (Silenced) */
|
|
PROP_CHRAUTOSHOT, /* Automatic Shotgun */
|
|
PROP_CHRGOLDEN, /* Golden Gun */
|
|
PROP_CHRTHROWKNIFE, /* Throwing Knife */
|
|
PROP_CHRSNIPERRIFLE, /* Sniper Rifle */
|
|
PROP_CHRROCKETLAUNCH, /* Rocket Launcher */
|
|
PROP_HATFURRY, /* Fur Hat, Blue */
|
|
PROP_HATFURRYBROWN, /* Fur Hat, Brown */
|
|
PROP_HATFURRYBLACK, /* Fur Hat, Black */
|
|
PROP_HATTBIRD, /* Side Cap, Light Green */
|
|
PROP_HATTBIRDBROWN, /* Side Cap, Dark Green */
|
|
PROP_HATHELMET, /* Combat Helmet, Green */
|
|
PROP_HATHELMETGREY, /* Combat Helmet, Grey */
|
|
PROP_HATMOON, /* Elite Headgear */
|
|
PROP_HATBERET, /* Special Forces Beret, Black */
|
|
PROP_HATBERETBLUE, /* Special Forces Beret, Navy */
|
|
PROP_HATBERETRED, /* Special Forces Beret, Burgundy */
|
|
PROP_HATPEAKED, /* Officer's Peaked Visor Cap */
|
|
PROP_CHRWRISTDART, /* Pchrwristdart (BETA) */
|
|
PROP_CHREXPLOSIVEPEN, /* Pchrexplosivepen (BETA) */
|
|
PROP_CHRBOMBCASE, /* Bomb Case (Briefcase Laying Down) */
|
|
PROP_CHRFLAREPISTOL, /* Pchrflarepistol (BETA Pickup) */
|
|
PROP_CHRPITONGUN, /* Pchrpitongun (BETA Pickup) */
|
|
PROP_CHRFINGERGUN, /* Pchrfingergun (BETA Pickup) */
|
|
PROP_CHRSILVERWPPK, /* Pchrsilverwppk (BETA Pickup) */
|
|
PROP_CHRGOLDWPPK, /* Pchrgoldwppk (BETA Pickup) */
|
|
PROP_CHRDYNAMITE, /* Pchrdynamite (BETA Pickup) */
|
|
PROP_CHRBUNGEE, /* Pchrbungee (BETA Pickup) */
|
|
PROP_CHRDOORDECODER, /* Door Decoder */
|
|
PROP_CHRBOMBDEFUSER, /* Bomb Defuser */
|
|
PROP_CHRBUGDETECTOR, /* Pchrbugdetector (BETA Pickup) */
|
|
PROP_CHRSAFECRACKERCASE, /* Safe Cracker Case (Briefcase Laying Down) */
|
|
PROP_CHRCAMERA, /* Photo Camera (007) */
|
|
PROP_CHRLOCKEXPLODER, /* Pchrlockexploder (BETA Pickup) */
|
|
PROP_CHRDOOREXPLODER, /* Pchrdoorexploder (BETA Pickup) */
|
|
PROP_CHRKEYANALYSERCASE, /* Key Analyzer Case (Briefcase Laying Down) */
|
|
PROP_CHRWEAPONCASE, /* Weapon Case (Briefcase Standing Up) */
|
|
PROP_CHRKEYYALE, /* Yale Key */
|
|
PROP_CHRKEYBOLT, /* Bolt Key */
|
|
PROP_CHRBUG, /* Covert Modem / Tracker Bug */
|
|
PROP_CHRMICROCAMERA, /* Micro Camera */
|
|
PROP_FLOPPY, /* Floppy Disc */
|
|
PROP_CHRGOLDENEYEKEY, /* GoldenEye Key */
|
|
PROP_CHRPOLARIZEDGLASSES, /* Polarized Glasses */
|
|
PROP_CHRCREDITCARD, /* Pchrcreditcard (BETA Pickup) */
|
|
PROP_CHRDARKGLASSES, /* Pchrdarkglasses (BETA Pickup) */
|
|
PROP_CHRGASKEYRING, /* Gas Keyring */
|
|
PROP_CHRDATATHIEF, /* Datathief */
|
|
PROP_SAFE, /* Safe Body */
|
|
PROP_BOMB, /* Pbomb (BETA Pickup) */
|
|
PROP_CHRPLANS, /* Plans (Briefing Folder) */
|
|
PROP_CHRSPYFILE, /* Pchrspyfile (BETA Pickup) */
|
|
PROP_CHRBLUEPRINTS, /* Pirate Blueprints */
|
|
PROP_CHRCIRCUITBOARD, /* Circuitboard */
|
|
PROP_CHRMAP, /* Bunker Expansion Plans */
|
|
PROP_CHRSPOOLTAPE, /* Pchrspooltape (BETA Pickup) */
|
|
PROP_CHRAUDIOTAPE, /* Audiotape */
|
|
PROP_CHRMICROFILM, /* Pchrmicrofilm (BETA Pickup) */
|
|
PROP_CHRMICROCODE, /* Pchrmicrocode (BETA Pickup) */
|
|
PROP_CHRLECTRE, /* Pchrlectre (BETA Pickup) */
|
|
PROP_CHRMONEY, /* Pchrmoney (BETA Pickup) */
|
|
PROP_CHRGOLDBAR, /* Pchrgoldbar (BETA Pickup) */
|
|
PROP_CHRHEROIN, /* Pchrheroin (BETA Pickup) */
|
|
PROP_CHRCLIPBOARD, /* Clipboard */
|
|
PROP_CHRDOSSIERRED, /* Red Dossier */
|
|
PROP_CHRSTAFFLIST, /* Staff List */
|
|
PROP_CHRDATTAPE, /* DAT */
|
|
PROP_CHRPLASTIQUE, /* Plastique */
|
|
PROP_CHRBLACKBOX, /* Black Box (Orange Flight Recorder) */
|
|
PROP_CHRVIDEOTAPE, /* CCTV Tape (GoldenEye VHS) */
|
|
PROP_NINTENDOLOGO, /* Nintendo Logo */
|
|
PROP_GOLDENEYELOGO, /* GoldenEye Logo */
|
|
PROP_WALLETBOND, /* Classified Folder w/ Royal Crest (Folder Menus) */
|
|
PROP_MILTRUCK, /* Supply Truck */
|
|
PROP_JEEP, /* Military Jeep */
|
|
PROP_ARTIC, /* Red Prime Mover */
|
|
PROP_HELICOPTER, /* Transport Helicopter w/ Natalya */
|
|
PROP_TIGER, /* Pirate Euro Chopper */
|
|
PROP_MILCOPTER, /* Hound Helicopter */
|
|
PROP_HIND, /* Soviet Camouflage Chopper */
|
|
PROP_ARTICTRAILER, /* Black Trailer */
|
|
PROP_MOTORBIKE, /* Motorbike */
|
|
PROP_TANK, /* Tank */
|
|
PROP_APC, /* Armored Personnel Carrier */
|
|
PROP_SPEEDBOAT, /* Speedboat */
|
|
PROP_PLANE, /* Aeroplane */
|
|
PROP_GUN_RUNWAY1, /* Heavy Gun Emplacement */
|
|
PROP_SAFEDOOR, /* Safe Door */
|
|
PROP_KEY_HOLDER, /* Key Rack */
|
|
PROP_HATCHSEVX, /* Grating (Ventshaft Hatch) */
|
|
PROP_SEVDISH, /* Satellite Dish (Severnaya) */
|
|
PROP_ARCHSECDOOR1, /* Archives Moving Wall (Dark) */
|
|
PROP_ARCHSECDOOR2, /* Archives Moving Wall (Light) */
|
|
PROP_GROUNDGUN, /* Free Standing Drone Gun */
|
|
PROP_TRAINEXTDOOR, /* Train Exterior Door */
|
|
PROP_CARBMW, /* White Car #1 (BMW) */
|
|
PROP_CARESCORT, /* White Car #2 (Escort) */
|
|
PROP_CARGOLF, /* White Car #3 (Golf) */
|
|
PROP_CARWEIRD, /* Red Car (Cadillac) */
|
|
PROP_CARZIL, /* Ourumov's Car (ZIL) */
|
|
PROP_SHUTTLE_DOOR_L, /* Exhaust Bay Doors, Left Side */
|
|
PROP_SHUTTLE_DOOR_R, /* Exhaust Bay Doors, Right Side */
|
|
PROP_DEPOT_GATE_ENTRY, /* Metallic Gate w/ Red Star */
|
|
PROP_DEPOT_DOOR_STEEL, /* Rusty Door w/ Handle (Lo-Res) */
|
|
PROP_GLASSWARE2, /* Beaker w/ Blue Topper */
|
|
PROP_GLASSWARE3, /* Erlenmeyer Flask */
|
|
PROP_GLASSWARE4, /* Set of Five Beakers */
|
|
PROP_LANDMINE, /* Land Mine */
|
|
PROP_PLANT1, /* Jungle Plant, Withered and Dying */
|
|
PROP_PLANT11, /* Jungle Plant, Turning Colour */
|
|
PROP_PLANT2, /* Jungle Plant, Healthy and Thick */
|
|
PROP_PLANT3, /* Jungle Plant, Tall Leaves */
|
|
PROP_JUNGLE5_TREE, /* Jungle Tree, Moss Covered */
|
|
PROP_LEGALPAGE, /* GoldenEye Certification Screen */
|
|
PROP_ST_PETE_ROOM_1I, /* Roads and Buildings #1 (stretch of road) */
|
|
PROP_ST_PETE_ROOM_2I, /* Roads and Buildings #2 (stretch of road) */
|
|
PROP_ST_PETE_ROOM_3T, /* Roads and Buildings #3 (intersection) */
|
|
PROP_ST_PETE_ROOM_5C, /* Roads and Buildings #4 (street corner) */
|
|
PROP_ST_PETE_ROOM_6C, /* Roads and Buildings #5 (street corner) */
|
|
PROP_DOOR_ROLLERTRAIN, /* Roller Door */
|
|
PROP_DOOR_WIN, /* Glass Sliding Door (Aztec) */
|
|
PROP_DOOR_AZTEC, /* Stone Sliding Door (Aztec) */
|
|
PROP_SHUTTLE, /* Moonraker Shuttle */
|
|
PROP_DOOR_AZT_DESK, /* Boardroom Table (Aztec Exhaust Bay) */
|
|
PROP_DOOR_AZT_DESK_TOP, /* Boardroom Table Extension (Aztec Exhaust Bay) */
|
|
PROP_DOOR_AZT_CHAIR, /* Boardroom Chair (Aztec Exhaust Bay) */
|
|
PROP_DOOR_MF, /* Mainframe Door */
|
|
PROP_FLAG, /* Flag Tag Token */
|
|
PROP_BARRICADE, /* Road Barricade */
|
|
PROP_MODEMBOX, /* Covert Modem Connection Screen */
|
|
PROP_DOORPANEL, /* Sliding Door Activation Switch */
|
|
PROP_DOORCONSOLE, /* Console w/ Activation Light */
|
|
PROP_CHRTESTTUBE, /* Glass Test Tube */
|
|
PROP_BOLLARD, /* Bollard */
|
|
PROP_MAX
|
|
} PROP;
|
|
#ifdef AIPARSE
|
|
char *PROP_ToString[] = {
|
|
"PROP_ALARM1", /* Beta Alarm / Default Multi Weapon */
|
|
"PROP_ALARM2", /* Alarm */
|
|
"PROP_EXPLOSIONBIT", /* White Pyramid (Explosion Bit) */
|
|
"PROP_AMMO_CRATE1", /* Ammo Crate (Brown w/ Edge Brace", 6x240 Black) */
|
|
"PROP_AMMO_CRATE2", /* Ammo Crate (Brown w/ Center Brace", 12x8 Black) */
|
|
"PROP_AMMO_CRATE3", /* Ammo Crate (Green w/ Center Brace", 12x8 Brown) */
|
|
"PROP_AMMO_CRATE4", /* Ammo Crate (Green w/ Edge Brace", 6x8 White) */
|
|
"PROP_AMMO_CRATE5", /* Ammo Crate (Green w/ Double Brace", 24x60 Black) */
|
|
"PROP_BIN1", /* Rusted Trash Bin */
|
|
"PROP_BLOTTER1", /* Desk Blotter */
|
|
"PROP_BOOK1", /* Red Book */
|
|
"PROP_BOOKSHELF1", /* Bookshelf */
|
|
"PROP_BRIDGE_CONSOLE1A", /* Bridge Console w/ Monitor", Navigation + Keyboard 1A */
|
|
"PROP_BRIDGE_CONSOLE1B", /* Bridge Console w/ Navigation 1B */
|
|
"PROP_BRIDGE_CONSOLE2A", /* Bridge Console w/ Navigation", Monitor + Keyboard 2A */
|
|
"PROP_BRIDGE_CONSOLE2B", /* Bridge Console w/ Various Controls 2B */
|
|
"PROP_BRIDGE_CONSOLE3A", /* Bridge Console w/ Monitor", Navigation + Keyboard 3A */
|
|
"PROP_BRIDGE_CONSOLE3B", /* Bridge Console w/ Monitor", Keyboard + Navigation 3B */
|
|
"PROP_CARD_BOX1", /* Cardboard Box", Kapto|Enb */
|
|
"PROP_CARD_BOX2", /* Cardboard Box", Red Arrow", Bahko */
|
|
"PROP_CARD_BOX3", /* Cardboard Box", Scrawled Text", Bahah */
|
|
"PROP_CARD_BOX4_LG", /* Cardboard Box", Three Seams */
|
|
"PROP_CARD_BOX5_LG", /* Cardboard Box", Two Seams", Bahah */
|
|
"PROP_CARD_BOX6_LG", /* Cardboard Box", Bahko */
|
|
"PROP_CCTV", /* Surveillance Camera */
|
|
"PROP_CONSOLE1", /* Double Screen Consoles w/ Keyboards */
|
|
"PROP_CONSOLE2", /* Double Screen Consoles w/ Left Keyboard */
|
|
"PROP_CONSOLE3", /* Double Screen Consoles w/ Right Keyboard */
|
|
"PROP_CONSOLE_SEVA", /* Console w/ Keyboard */
|
|
"PROP_CONSOLE_SEVB", /* Console w/ Monitor + Keyboard */
|
|
"PROP_CONSOLE_SEVC", /* Console w/ Switches */
|
|
"PROP_CONSOLE_SEVD", /* Console w/ Five Gauges */
|
|
"PROP_CONSOLE_SEV2A", /* Console w/ Four Faders */
|
|
"PROP_CONSOLE_SEV2B", /* Console w/ Monitor", Keyboard + Switches */
|
|
"PROP_CONSOLE_SEV2C", /* Console w/ Three Gauges */
|
|
"PROP_CONSOLE_SEV2D", /* Console w/ Pressure Gauge */
|
|
"PROP_CONSOLE_SEV_GEA", /* Console w/ GoldenEye Key Slot */
|
|
"PROP_CONSOLE_SEV_GEB", /* Console w/ Faders + Pressure Gauge */
|
|
"PROP_DESK1", /* Desk w/ Kickplate */
|
|
"PROP_DESK2", /* Desk */
|
|
"PROP_DESK_LAMP2", /* Desk Lamp */
|
|
"PROP_DISC_READER", /* External Hard Drive */
|
|
"PROP_DISK_DRIVE1", /* Floppy Disc Drive */
|
|
"PROP_FILING_CABINET1", /* Filing Cabinet */
|
|
"PROP_JERRY_CAN1", /* Jerrycan (Fuel Container) */
|
|
"PROP_KEYBOARD1", /* Computer Keyboard */
|
|
"PROP_KIT_UNITS1", /* Kitchen Cabinets */
|
|
"PROP_LETTER_TRAY1", /* Letter Tray */
|
|
"PROP_MAINFRAME1", /* Mainframe", Basic */
|
|
"PROP_MAINFRAME2", /* Mainframe", Advanced */
|
|
"PROP_METAL_CHAIR1", /* Chair (Metal) */
|
|
"PROP_METAL_CRATE1", /* Metal Crate", 6 Top Corner */
|
|
"PROP_METAL_CRATE2", /* Metal Crate", 6 Bottom Corner */
|
|
"PROP_METAL_CRATE3", /* Metal Crate", Toxic Materials */
|
|
"PROP_METAL_CRATE4", /* Metal Crate", Double Stripe - Class D1 Hazard */
|
|
"PROP_MISSILE_RACK", /* Naval Harpoon Missile in Containment Rack */
|
|
"PROP_MISSILE_RACK2", /* Naval Harpoon Missiles in Containment Racks x4 */
|
|
"PROP_OIL_DRUM1", /* Oil Drum", Single Stripe", Ribbed */
|
|
"PROP_OIL_DRUM2", /* Oil Drum", Single Stripe", Ribbed - Class D1 Hazard */
|
|
"PROP_OIL_DRUM3", /* Oil Drum", Single Stripe", Ribbed - Toxic Materials */
|
|
"PROP_OIL_DRUM5", /* Oil Drum", Double Stripe - Toxic Materials */
|
|
"PROP_OIL_DRUM6", /* Oil Drum - Toxic Materials */
|
|
"PROP_OIL_DRUM7", /* Oil Drum", Double Dashes - Class D1 Hazard */
|
|
"PROP_PADLOCK", /* Padlock */
|
|
"PROP_PHONE1", /* Telephone */
|
|
"PROP_RADIO_UNIT1", /* Radio Tuner w/ 1 Knob + 2 Gauges */
|
|
"PROP_RADIO_UNIT2", /* Radio Tuner w/ 1 Knob + 5 Gauges */
|
|
"PROP_RADIO_UNIT3", /* Radio Tuner w/ 3 Knobs + 5 Gauges */
|
|
"PROP_RADIO_UNIT4", /* Radio Tuner w/ 3 Knobs + 2 Gauges */
|
|
"PROP_SAT1_REFLECT", /* GoldenEye Satellite */
|
|
"PROP_SATDISH", /* Satellite Dish (Arkangelsk) */
|
|
"PROP_SATBOX", /* Uplink Box */
|
|
"PROP_STOOL1", /* Wooden Stool */
|
|
"PROP_SWIVEL_CHAIR1", /* Swivel Chair */
|
|
"PROP_TORPEDO_RACK", /* Naval Torpedo Rack x3 */
|
|
"PROP_TV1", /* Television Monitor */
|
|
"PROP_TV_HOLDER", /* Hanging Monitor Rack */
|
|
"PROP_TVSCREEN", /* Wall Monitor Screen */
|
|
"PROP_TV4SCREEN", /* Wall Monitor Screens", 4-in-1 */
|
|
"PROP_WOOD_LG_CRATE1", /* Wooden Crate w/ #4 Label", Bahah */
|
|
"PROP_WOOD_LG_CRATE2", /* Wooden Crate", Darker Shading", Kapto|Enb */
|
|
"PROP_WOOD_MD_CRATE3", /* Wooden Crates x8", Bahko */
|
|
"PROP_WOOD_SM_CRATE4", /* Wooden Crate w/ #2 Label", Bahko */
|
|
"PROP_WOOD_SM_CRATE5", /* Wooden Crate w/ #4 Label", Darker Shading", Bahah */
|
|
"PROP_WOOD_SM_CRATE6", /* Wooden Crate w/ UP Arrow", Kapto|Enb */
|
|
"PROP_WOODEN_TABLE1", /* Wooden Table */
|
|
"PROP_SWIPE_CARD2", /* Keycard */
|
|
"PROP_BORG_CRATE", /* Blue and Gold Printed Circuit Cube (Borg Crate) */
|
|
"PROP_BOXES4X4", /* Metal Crate Stack", 4x4 */
|
|
"PROP_BOXES3X4", /* Metal Crate Stack", 3x4 */
|
|
"PROP_BOXES2X4", /* Metal Crate Stack", 2x4 */
|
|
"PROP_SEC_PANEL", /* Security Card Panel */
|
|
"PROP_ICBM_NOSE", /* Silo Missile (ICBM)", Nose Cone Only */
|
|
"PROP_ICBM", /* Silo Missile (ICBM) */
|
|
"PROP_TUNING_CONSOLE1", /* Dual Consoles on Castors */
|
|
"PROP_DESK_ARECIBO1", /* Computer Work Desk */
|
|
"PROP_LOCKER3", /* Lockers", Single Venting */
|
|
"PROP_LOCKER4", /* Lockers", Double Venting */
|
|
"PROP_ROOFGUN", /* Ceiling Mounted Drone Gun */
|
|
"PROP_DEST_ENGINE", /* Frigate Engine */
|
|
"PROP_DEST_EXOCET", /* Naval MK 29 Missile Launcher (Exocet) */
|
|
"PROP_DEST_GUN", /* Naval 100 mm Gun Turret (TR 100) */
|
|
"PROP_DEST_HARPOON", /* Naval MK 141 Launch Canisters (Harpoon) */
|
|
"PROP_DEST_SEAWOLF", /* Naval MK 26 Dual Missile Launcher (Seawolf) */
|
|
"PROP_WINDOW", /* Window Glass */
|
|
"PROP_WINDOW_LIB_LG1", /* Window Glass", Lattice Frame", 4x10 (single-sided) */
|
|
"PROP_WINDOW_LIB_SM1", /* Window Glass", Lattice Frame", 4x3 (double-sided) */
|
|
"PROP_WINDOW_COR11", /* Window Glass", Lattice Frame", 4x4 (single-sided) */
|
|
"PROP_JUNGLE3_TREE", /* Jungle Large Tree */
|
|
"PROP_PALM", /* Jungle Palm Tree */
|
|
"PROP_PALMTREE", /* Jungle Palm Tree", Resprouting After Loss of Fronds */
|
|
"PROP_PLANT2B", /* Jungle Plant", Low Shrub */
|
|
"PROP_LABBENCH", /* Laboratory Table w/ Sink Drains */
|
|
"PROP_GASBARREL", /* White Bin */
|
|
"PROP_GASBARRELS", /* White Bins x4 */
|
|
"PROP_BODYARMOUR", /* Body Armor */
|
|
"PROP_BODYARMOURVEST", /* Body Armor (Vest) */
|
|
"PROP_GASTANK", /* Bottling Tank */
|
|
"PROP_GLASSWARE1", /* Glass Cup */
|
|
"PROP_HATCHBOLT", /* Metallic Securing Strip (Hatch Bolt) */
|
|
"PROP_BRAKEUNIT", /* Train Brake Controller */
|
|
"PROP_AK47MAG", /* Gun Magazine (KF7 Soviet) */
|
|
"PROP_M16MAG", /* Gun Magazine (AR33 Assault Rifle) */
|
|
"PROP_MP5KMAG", /* Gun Magazine (D5K Deutsche) */
|
|
"PROP_SKORPIONMAG", /* Gun Magazine (Klobb) */
|
|
"PROP_SPECTREMAG", /* Gun Magazine (Phantom) */
|
|
"PROP_UZIMAG", /* Gun Magazine (ZMG (9mm)) */
|
|
"PROP_SILENCER", /* Silencer */
|
|
"PROP_CHREXTINGUISHER", /* Fire Extinguisher */
|
|
"PROP_BOXCARTRIDGES", /* Box of Shells (Shotgun Cartridges) */
|
|
"PROP_FNP90MAG", /* Gun Magazine (RC-P90) */
|
|
"PROP_GOLDENSHELLS", /* Box of Shells (Golden Gun Bullets) */
|
|
"PROP_MAGNUMSHELLS", /* Box of Shells (Magnum Rounds) */
|
|
"PROP_WPPKMAG", /* Gun Magazine (PP7) */
|
|
"PROP_TT33MAG", /* Gun Magazine (DD44 Dostovei) */
|
|
"PROP_SEV_DOOR", /* Grey Containment Door w/ Caution Stripes and Window */
|
|
"PROP_SEV_DOOR3", /* Grey Electronic Door w/ LEFT Arrow */
|
|
"PROP_SEV_DOOR3_WIND", /* BETA Electronic Door w/ LEFT Arrow and Fake Window */
|
|
"PROP_SEV_DOOR4_WIND", /* Grey Electronic Door w/ LEFT Arrow and Window */
|
|
"PROP_SEV_TRISLIDE", /* Glass Door w/ Stone Frame */
|
|
"PROP_SEV_DOOR_V1", /* Grey Electronic Door w/ UP Arrow */
|
|
"PROP_STEEL_DOOR1", /* Silver Corrugated Door w/ Caution Stripes */
|
|
"PROP_STEEL_DOOR2", /* Rusty Door w/ Handle */
|
|
"PROP_STEEL_DOOR3", /* Double Cross Brace Door */
|
|
"PROP_SILO_LIFT_DOOR", /* Elevator Door */
|
|
"PROP_STEEL_DOOR2B", /* Rusty Door w/o Handle */
|
|
"PROP_DOOR_ROLLER1", /* Blue Bay Door w/ Caution Stripes */
|
|
"PROP_DOOR_ROLLER2", /* Blue Bay Door w/ Venting and Caution Stripes */
|
|
"PROP_DOOR_ROLLER3", /* Blue Bay Door w/ Venting and Caution Stripes */
|
|
"PROP_DOOR_ROLLER4", /* Cargo Bay Door w/ UP Arrow and Transportation Stripes */
|
|
"PROP_DOOR_ST_AREC1", /* Blue Corrugated Door w/ Transportation Stripes */
|
|
"PROP_DOOR_ST_AREC2", /* Blue Reversed Corrugated Door w/ Transportation Stripes */
|
|
"PROP_DOOR_DEST1", /* Grey Frigate Door w/ Indents and Caution Stripes */
|
|
"PROP_DOOR_DEST2", /* Grey Frigate Door w/ Indents", Caution Stripes and KEEP CLEAR Label */
|
|
"PROP_GAS_PLANT_SW_DO1", /* Grey Swinging Door w/ Blue Stripe */
|
|
"PROP_GAS_PLANT_SW2_DO1", /* Grey Swinging Door", Darker */
|
|
"PROP_GAS_PLANT_SW3_DO1", /* Grey Swinging Door", Lighter */
|
|
"PROP_GAS_PLANT_SW4_DO1", /* Light Wooden Door (Looks Like Sand) */
|
|
"PROP_GAS_PLANT_MET1_DO1", /* Brown Electronic Door */
|
|
"PROP_GAS_PLANT_WC_CUB1", /* Bathroom Stall Door */
|
|
"PROP_GASPLANT_CLEAR_DOOR", /* Laboratory Glass Door */
|
|
"PROP_TRAIN_DOOR", /* Dark Wooden Door */
|
|
"PROP_TRAIN_DOOR2", /* Dark Wooden Door w/ Window */
|
|
"PROP_TRAIN_DOOR3", /* Dark Wooden Door w/ Window + Shutter */
|
|
"PROP_DOOR_EYELID", /* Eyelid Door */
|
|
"PROP_DOOR_IRIS", /* Iris Door */
|
|
"PROP_SEVDOORWOOD", /* Cabin Door */
|
|
"PROP_SEVDOORWIND", /* Weathered Swinging Door w/ Window */
|
|
"PROP_SEVDOORNOWIND", /* Weathered Swinging Door */
|
|
"PROP_SEVDOORMETSLIDE", /* Brown Corrugated Electronic Door */
|
|
"PROP_CRYPTDOOR1A", /* Stone Door w/ Prints (Set A) */
|
|
"PROP_CRYPTDOOR1B", /* Sand Door w/ Damage (Set A) */
|
|
"PROP_CRYPTDOOR2A", /* Stone Door w/ Prints", Darker (Set B) */
|
|
"PROP_CRYPTDOOR2B", /* Sand Door w/ Damage", Darker (Set B) */
|
|
"PROP_CRYPTDOOR3", /* Egyptian Moving Wall */
|
|
"PROP_CRYPTDOOR4", /* Brown Sand Door (Temple) */
|
|
"PROP_VERTDOOR", /* Blast Door (Control) */
|
|
"PROP_HATCHDOOR", /* Train Floor Hatch */
|
|
"PROP_DAMGATEDOOR", /* Security Gate (Dam) */
|
|
"PROP_DAMTUNDOOR", /* Tunnel Flood Door (Dam) */
|
|
"PROP_DAMCHAINDOOR", /* Mesh Gate */
|
|
"PROP_SILOTOPDOOR", /* Launch Tube Ceiling Shutter (Silo) */
|
|
"PROP_DOORPRISON1", /* Cell Door */
|
|
"PROP_DOORSTATGATE", /* Park Gate */
|
|
"PROP_CHRKALASH", /* KF7 Soviet */
|
|
"PROP_CHRGRENADELAUNCH", /* Grenade Launcher */
|
|
"PROP_CHRKNIFE", /* Hunting Knife */
|
|
"PROP_CHRLASER", /* Moonraker Laser */
|
|
"PROP_CHRM16", /* AR33 Assault Rifle */
|
|
"PROP_CHRMP5K", /* D5K Deutsche */
|
|
"PROP_CHRRUGER", /* Cougar Magnum */
|
|
"PROP_CHRWPPK", /* PP7 Special Issue */
|
|
"PROP_CHRSHOTGUN", /* Shotgun */
|
|
"PROP_CHRSKORPION", /* Klobb */
|
|
"PROP_CHRSPECTRE", /* Phantom */
|
|
"PROP_CHRUZI", /* ZMG (9mm) */
|
|
"PROP_CHRGRENADE", /* Hand Grenade */
|
|
"PROP_CHRFNP90", /* RC-P90 */
|
|
"PROP_CHRBRIEFCASE", /* Briefcase */
|
|
"PROP_CHRREMOTEMINE", /* Remote Mine */
|
|
"PROP_CHRPROXIMITYMINE", /* Proximity Mine */
|
|
"PROP_CHRTIMEDMINE", /* Timed Mine */
|
|
"PROP_CHRROCKET", /* Rocket */
|
|
"PROP_CHRGRENADEROUND", /* Grenade Round */
|
|
"PROP_CHRWPPKSIL", /* PP7 (Silenced) */
|
|
"PROP_CHRTT33", /* DD44 Dostovei */
|
|
"PROP_CHRMP5KSIL", /* D5K (Silenced) */
|
|
"PROP_CHRAUTOSHOT", /* Automatic Shotgun */
|
|
"PROP_CHRGOLDEN", /* Golden Gun */
|
|
"PROP_CHRTHROWKNIFE", /* Throwing Knife */
|
|
"PROP_CHRSNIPERRIFLE", /* Sniper Rifle */
|
|
"PROP_CHRROCKETLAUNCH", /* Rocket Launcher */
|
|
"PROP_HATFURRY", /* Fur Hat", Blue */
|
|
"PROP_HATFURRYBROWN", /* Fur Hat", Brown */
|
|
"PROP_HATFURRYBLACK", /* Fur Hat", Black */
|
|
"PROP_HATTBIRD", /* Side Cap", Light Green */
|
|
"PROP_HATTBIRDBROWN", /* Side Cap", Dark Green */
|
|
"PROP_HATHELMET", /* Combat Helmet", Green */
|
|
"PROP_HATHELMETGREY", /* Combat Helmet", Grey */
|
|
"PROP_HATMOON", /* Elite Headgear */
|
|
"PROP_HATBERET", /* Special Forces Beret", Black */
|
|
"PROP_HATBERETBLUE", /* Special Forces Beret", Navy */
|
|
"PROP_HATBERETRED", /* Special Forces Beret", Burgundy */
|
|
"PROP_HATPEAKED", /* Officer's Peaked Visor Cap */
|
|
"PROP_CHRWRISTDART", /* Pchrwristdart (BETA) */
|
|
"PROP_CHREXPLOSIVEPEN", /* Pchrexplosivepen (BETA) */
|
|
"PROP_CHRBOMBCASE", /* Bomb Case (Briefcase Laying Down) */
|
|
"PROP_CHRFLAREPISTOL", /* Pchrflarepistol (BETA Pickup) */
|
|
"PROP_CHRPITONGUN", /* Pchrpitongun (BETA Pickup) */
|
|
"PROP_CHRFINGERGUN", /* Pchrfingergun (BETA Pickup) */
|
|
"PROP_CHRSILVERWPPK", /* Pchrsilverwppk (BETA Pickup) */
|
|
"PROP_CHRGOLDWPPK", /* Pchrgoldwppk (BETA Pickup) */
|
|
"PROP_CHRDYNAMITE", /* Pchrdynamite (BETA Pickup) */
|
|
"PROP_CHRBUNGEE", /* Pchrbungee (BETA Pickup) */
|
|
"PROP_CHRDOORDECODER", /* Door Decoder */
|
|
"PROP_CHRBOMBDEFUSER", /* Bomb Defuser */
|
|
"PROP_CHRBUGDETECTOR", /* Pchrbugdetector (BETA Pickup) */
|
|
"PROP_CHRSAFECRACKERCASE", /* Safe Cracker Case (Briefcase Laying Down) */
|
|
"PROP_CHRCAMERA", /* Photo Camera (007) */
|
|
"PROP_CHRLOCKEXPLODER", /* Pchrlockexploder (BETA Pickup) */
|
|
"PROP_CHRDOOREXPLODER", /* Pchrdoorexploder (BETA Pickup) */
|
|
"PROP_CHRKEYANALYSERCASE", /* Key Analyzer Case (Briefcase Laying Down) */
|
|
"PROP_CHRWEAPONCASE", /* Weapon Case (Briefcase Standing Up) */
|
|
"PROP_CHRKEYYALE", /* Yale Key */
|
|
"PROP_CHRKEYBOLT", /* Bolt Key */
|
|
"PROP_CHRBUG", /* Covert Modem / Tracker Bug */
|
|
"PROP_CHRMICROCAMERA", /* Micro Camera */
|
|
"PROP_FLOPPY", /* Floppy Disc */
|
|
"PROP_CHRGOLDENEYEKEY", /* GoldenEye Key */
|
|
"PROP_CHRPOLARIZEDGLASSES", /* Polarized Glasses */
|
|
"PROP_CHRCREDITCARD", /* Pchrcreditcard (BETA Pickup) */
|
|
"PROP_CHRDARKGLASSES", /* Pchrdarkglasses (BETA Pickup) */
|
|
"PROP_CHRGASKEYRING", /* Gas Keyring */
|
|
"PROP_CHRDATATHIEF", /* Datathief */
|
|
"PROP_SAFE", /* Safe Body */
|
|
"PROP_BOMB", /* Pbomb (BETA Pickup) */
|
|
"PROP_CHRPLANS", /* Plans (Briefing Folder) */
|
|
"PROP_CHRSPYFILE", /* Pchrspyfile (BETA Pickup) */
|
|
"PROP_CHRBLUEPRINTS", /* Pirate Blueprints */
|
|
"PROP_CHRCIRCUITBOARD", /* Circuitboard */
|
|
"PROP_CHRMAP", /* Bunker Expansion Plans */
|
|
"PROP_CHRSPOOLTAPE", /* Pchrspooltape (BETA Pickup) */
|
|
"PROP_CHRAUDIOTAPE", /* Audiotape */
|
|
"PROP_CHRMICROFILM", /* Pchrmicrofilm (BETA Pickup) */
|
|
"PROP_CHRMICROCODE", /* Pchrmicrocode (BETA Pickup) */
|
|
"PROP_CHRLECTRE", /* Pchrlectre (BETA Pickup) */
|
|
"PROP_CHRMONEY", /* Pchrmoney (BETA Pickup) */
|
|
"PROP_CHRGOLDBAR", /* Pchrgoldbar (BETA Pickup) */
|
|
"PROP_CHRHEROIN", /* Pchrheroin (BETA Pickup) */
|
|
"PROP_CHRCLIPBOARD", /* Clipboard */
|
|
"PROP_CHRDOSSIERRED", /* Red Dossier */
|
|
"PROP_CHRSTAFFLIST", /* Staff List */
|
|
"PROP_CHRDATTAPE", /* DAT */
|
|
"PROP_CHRPLASTIQUE", /* Plastique */
|
|
"PROP_CHRBLACKBOX", /* Black Box (Orange Flight Recorder) */
|
|
"PROP_CHRVIDEOTAPE", /* CCTV Tape (GoldenEye VHS) */
|
|
"PROP_NINTENDOLOGO", /* Nintendo Logo */
|
|
"PROP_GOLDENEYELOGO", /* GoldenEye Logo */
|
|
"PROP_WALLETBOND", /* Classified Folder w/ Royal Crest (Folder Menus) */
|
|
"PROP_MILTRUCK", /* Supply Truck */
|
|
"PROP_JEEP", /* Military Jeep */
|
|
"PROP_ARTIC", /* Red Prime Mover */
|
|
"PROP_HELICOPTER", /* Transport Helicopter w/ Natalya */
|
|
"PROP_TIGER", /* Pirate Euro Chopper */
|
|
"PROP_MILCOPTER", /* Hound Helicopter */
|
|
"PROP_HIND", /* Soviet Camouflage Chopper */
|
|
"PROP_ARTICTRAILER", /* Black Trailer */
|
|
"PROP_MOTORBIKE", /* Motorbike */
|
|
"PROP_TANK", /* Tank */
|
|
"PROP_APC", /* Armored Personnel Carrier */
|
|
"PROP_SPEEDBOAT", /* Speedboat */
|
|
"PROP_PLANE", /* Aeroplane */
|
|
"PROP_GUN_RUNWAY1", /* Heavy Gun Emplacement */
|
|
"PROP_SAFEDOOR", /* Safe Door */
|
|
"PROP_KEY_HOLDER", /* Key Rack */
|
|
"PROP_HATCHSEVX", /* Grating (Ventshaft Hatch) */
|
|
"PROP_SEVDISH", /* Satellite Dish (Severnaya) */
|
|
"PROP_ARCHSECDOOR1", /* Archives Moving Wall (Dark) */
|
|
"PROP_ARCHSECDOOR2", /* Archives Moving Wall (Light) */
|
|
"PROP_GROUNDGUN", /* Free Standing Drone Gun */
|
|
"PROP_TRAINEXTDOOR", /* Train Exterior Door */
|
|
"PROP_CARBMW", /* White Car #1 (BMW) */
|
|
"PROP_CARESCORT", /* White Car #2 (Escort) */
|
|
"PROP_CARGOLF", /* White Car #3 (Golf) */
|
|
"PROP_CARWEIRD", /* Red Car (Cadillac) */
|
|
"PROP_CARZIL", /* Ourumov's Car (ZIL) */
|
|
"PROP_SHUTTLE_DOOR_L", /* Exhaust Bay Doors", Left Side */
|
|
"PROP_SHUTTLE_DOOR_R", /* Exhaust Bay Doors", Right Side */
|
|
"PROP_DEPOT_GATE_ENTRY", /* Metallic Gate w/ Red Star */
|
|
"PROP_DEPOT_DOOR_STEEL", /* Rusty Door w/ Handle (Lo-Res) */
|
|
"PROP_GLASSWARE2", /* Beaker w/ Blue Topper */
|
|
"PROP_GLASSWARE3", /* Erlenmeyer Flask */
|
|
"PROP_GLASSWARE4", /* Set of Five Beakers */
|
|
"PROP_LANDMINE", /* Land Mine */
|
|
"PROP_PLANT1", /* Jungle Plant", Withered and Dying */
|
|
"PROP_PLANT11", /* Jungle Plant", Turning Colour */
|
|
"PROP_PLANT2", /* Jungle Plant", Healthy and Thick */
|
|
"PROP_PLANT3", /* Jungle Plant", Tall Leaves */
|
|
"PROP_JUNGLE5_TREE", /* Jungle Tree", Moss Covered */
|
|
"PROP_LEGALPAGE", /* GoldenEye Certification Screen */
|
|
"PROP_ST_PETE_ROOM_1I", /* Roads and Buildings #1 (stretch of road) */
|
|
"PROP_ST_PETE_ROOM_2I", /* Roads and Buildings #2 (stretch of road) */
|
|
"PROP_ST_PETE_ROOM_3T", /* Roads and Buildings #3 (intersection) */
|
|
"PROP_ST_PETE_ROOM_5C", /* Roads and Buildings #4 (street corner) */
|
|
"PROP_ST_PETE_ROOM_6C", /* Roads and Buildings #5 (street corner) */
|
|
"PROP_DOOR_ROLLERTRAIN", /* Roller Door */
|
|
"PROP_DOOR_WIN", /* Glass Sliding Door (Aztec) */
|
|
"PROP_DOOR_AZTEC", /* Stone Sliding Door (Aztec) */
|
|
"PROP_SHUTTLE", /* Moonraker Shuttle */
|
|
"PROP_DOOR_AZT_DESK", /* Boardroom Table (Aztec Exhaust Bay) */
|
|
"PROP_DOOR_AZT_DESK_TOP", /* Boardroom Table Extension (Aztec Exhaust Bay) */
|
|
"PROP_DOOR_AZT_CHAIR", /* Boardroom Chair (Aztec Exhaust Bay) */
|
|
"PROP_DOOR_MF", /* Mainframe Door */
|
|
"PROP_FLAG", /* Flag Tag Token */
|
|
"PROP_BARRICADE", /* Road Barricade */
|
|
"PROP_MODEMBOX", /* Covert Modem Connection Screen */
|
|
"PROP_DOORPANEL", /* Sliding Door Activation Switch */
|
|
"PROP_DOORCONSOLE", /* Console w/ Activation Light */
|
|
"PROP_CHRTESTTUBE", /* Glass Test Tube */
|
|
"PROP_BOLLARD", /* Bollard */
|
|
};
|
|
#endif
|
|
#define MAX_MULTI_PROP_IDS 600
|
|
#define MAX_DROPPED_PROP_IDS 1000
|
|
#define DROPPED_PROP_ID_NUMBIT 0x1fff
|
|
#define GUNTYPE_NUMBITS 127
|
|
|
|
typedef enum PROJECTILES
|
|
{
|
|
PROJECTILES_MAX = 0x2E,
|
|
PROJECTILES_TYPE_KNIFE = PROP_CHRKNIFE,
|
|
PROJECTILES_TYPE_GRENADE = PROP_CHRGRENADE,
|
|
PROJECTILES_TYPE_REMOTE_MINE = PROP_CHRREMOTEMINE,
|
|
PROJECTILES_TYPE_PROX_MINE = PROP_CHRPROXIMITYMINE,
|
|
PROJECTILES_TYPE_TIMED_MINE = PROP_CHRTIMEDMINE,
|
|
PROJECTILES_TYPE_ROCKET_ROUND = PROP_CHRROCKET,
|
|
PROJECTILES_TYPE_ROCKET_ROUND2 = PROP_CHRROCKET,
|
|
PROJECTILES_TYPE_GLAUNCH_ROUND = PROP_CHRGRENADEROUND,
|
|
PROJECTILES_TYPE_BOMBCASE = PROP_CHRBOMBCASE,
|
|
PROJECTILES_TYPE_BUG = PROP_CHRBUG,
|
|
PROJECTILES_TYPE_MICROCAMERA = PROP_CHRMICROCAMERA,
|
|
PROJECTILES_TYPE_GE_KEY = PROP_CHRGOLDENEYEKEY,
|
|
PROJECTILES_TYPE_PLASTIQUE = PROP_CHRPLASTIQUE
|
|
} PROJECTILES;
|
|
|
|
/** For use in Prop Records (Not to be confused with Object (canonical - Prop Definition) Records which use PROPDEF (canonical Name)) */
|
|
typedef enum PROP_TYPE
|
|
{
|
|
PROP_TYPE_NUL,
|
|
PROP_TYPE_OBJ,
|
|
PROP_TYPE_DOOR,
|
|
PROP_TYPE_CHR,
|
|
PROP_TYPE_WEAPON,
|
|
PROP_TYPE_PLAYER,
|
|
PROP_TYPE_VIEWER,
|
|
PROP_TYPE_EXPLOSION,
|
|
PROP_TYPE_SMOKE,
|
|
PROP_TYPE_MAX
|
|
} PROP_TYPE;
|
|
|
|
#ifdef DEBUG
|
|
char *PROP_TYPE_ToString[] = {
|
|
"PROP_TYPE_NUL",
|
|
"PROP_TYPE_OBJ",
|
|
"PROP_TYPE_DOOR",
|
|
"PROP_TYPE_CHR",
|
|
"PROP_TYPE_WEAPON",
|
|
"PROP_TYPE_PLAYER",
|
|
"PROP_TYPE_VIEWER",
|
|
"PROP_TYPE_EXPLOSION",
|
|
"PROP_TYPE_SMOKE" };
|
|
#endif
|
|
|
|
#pragma endregion
|
|
|
|
#pragma region PropDef stuff
|
|
// used by characters
|
|
|
|
/*Action Type to be performed by chr (canonical names)*/
|
|
typedef enum ACT_STATUS
|
|
{
|
|
ACT_STATUS_NONE,
|
|
ACT_STATUS_NORMAL,
|
|
ACT_STATUS_COVERWAIT,
|
|
ACT_STATUS_GRENADEWAIT,
|
|
ACT_STATUS_WAITING,
|
|
ACT_STATUS_COVERGOTO,
|
|
ACT_STATUS_COVERBREAK,
|
|
ACT_STATUS_COVERSEEN,
|
|
ACT_STATUS_FLANKLEFT,
|
|
ACT_STATUS_FLANKRIGHT,
|
|
ACT_STATUS_DODGE,
|
|
ACT_STATUS_GRENADE,
|
|
ACT_STATUS_WAITSEEN,
|
|
ACT_STATUS_WITHDRAW,
|
|
ACT_STATUS_SHOOTING,
|
|
ACT_STATUS_SYNCSHOOT,
|
|
ACT_STATUS_WAITTIMEOUT,
|
|
ACT_STATUS_COVERTIMEOUT,
|
|
ACT_STATUS_TRACKING,
|
|
ACT_STATUS_RETREAT,
|
|
ACT_STATUS_SURRENDER,
|
|
ACT_STATUS_TALKING,
|
|
ACT_STATUS_LISTENING,
|
|
ACT_STATUS_GOTOALARM,
|
|
ACT_STATUS_BOTFRIENDFOLLOW,
|
|
ACT_STATUS_BOTHIDE,
|
|
ACT_STATUS_BOTPATH,
|
|
ACT_STATUS_BOTINJURED,
|
|
ACT_STATUS_BOTNORMAL,
|
|
ACT_STATUS_BOTSHOOTING,
|
|
ACT_STATUS_DRUGGED,
|
|
ACT_STATUS_PANIC,
|
|
ACT_STATUS_RUNFROMGRENADE,
|
|
ACT_STATUS_UNARMEDATTACK,
|
|
ACT_STATUS_MAX
|
|
} ACT_STATUS;
|
|
#ifdef DEBUG
|
|
char *ACT_STATUS_ToString[] = {
|
|
"NONE",
|
|
"NORMAL",
|
|
"COVERWAIT",
|
|
"GRENADEWAIT",
|
|
"WAITING",
|
|
"COVERGOTO",
|
|
"COVERBREAK",
|
|
"COVERSEEN",
|
|
"FLANKLEFT",
|
|
"FLANKRIGHT",
|
|
"DODGE",
|
|
"GRENADE",
|
|
"WAITSEEN",
|
|
"WITHDRAW",
|
|
"SHOOTING",
|
|
"SYNCSHOOT",
|
|
"WAITTIMEOUT",
|
|
"COVERTIMEOUT",
|
|
"TRACKING",
|
|
"RETREAT",
|
|
"SURRENDER",
|
|
"TALKING",
|
|
"LISTENING",
|
|
"GOTOALARM",
|
|
"BOTFRIENDFOLLOW",
|
|
"BOTHIDE",
|
|
"BOTPATH",
|
|
"BOTINJURED",
|
|
"BOTNORMAL",
|
|
"BOTSHOOTING",
|
|
"DRUGGED",
|
|
"PANIC",
|
|
"RUNFROMGRENADE",
|
|
"UNARMEDATTACK"};
|
|
#endif
|
|
/*Action Type to be performed by chr (canonical names)*/
|
|
typedef enum ACT_TYPE
|
|
{
|
|
ACT_INIT,
|
|
ACT_STAND,
|
|
ACT_KNEEL,
|
|
ACT_ANIM,
|
|
ACT_DIE,
|
|
ACT_DEAD,
|
|
ACT_ARGH,
|
|
ACT_PREARGH,
|
|
ACT_ATTACK,
|
|
ACT_ATTACKWALK,
|
|
ACT_ATTACKROLL, // 10
|
|
ACT_SIDESTEP,
|
|
ACT_JUMPOUT,
|
|
ACT_RUNPOS,
|
|
ACT_PATROL,
|
|
ACT_GOPOS,
|
|
ACT_SURRENDER,
|
|
ACT_LOOKATTARGET,
|
|
ACT_SURPRISED,
|
|
ACT_STARTALARM,
|
|
ACT_THROWGRENADE, // 20
|
|
ACT_TURNDIR,
|
|
ACT_TEST,
|
|
ACT_BONDINTRO,
|
|
ACT_BONDDIE,
|
|
ACT_BONDMULTI,
|
|
/* PD ONLY
|
|
ACT_BOT_ATTACKSTAND
|
|
ACT_BOT_ATTACKKNEEL
|
|
ACT_BOT_ATTACKSTRAFE
|
|
ACT_DRUGGEDDROP
|
|
ACT_DRUGGEDKO
|
|
ACT_DRUGGEDCOMINGUP
|
|
ACT_ATTACKAMOUNT
|
|
ACT_ROBOTATTACK
|
|
ACT_SKJUMP*
|
|
*/
|
|
ACT_NULL,
|
|
ACT_TYPE_MAX
|
|
} ACT_TYPE;
|
|
|
|
#ifdef DEBUG
|
|
char *ACT_TYPE_ToString[] = {
|
|
"ACT_INIT",
|
|
"ACT_STAND",
|
|
"ACT_KNEEL",
|
|
"ACT_ANIM",
|
|
"ACT_DIE",
|
|
"ACT_DEAD",
|
|
"ACT_ARGH",
|
|
"ACT_PREARGH",
|
|
"ACT_ATTACK",
|
|
"ACT_ATTACKWALK",
|
|
"ACT_ATTACKROLL", // 10
|
|
"ACT_SIDESTEP",
|
|
"ACT_JUMPOUT",
|
|
"ACT_RUNPOS",
|
|
"ACT_PATROL",
|
|
"ACT_GOPOS",
|
|
"ACT_SURRENDER",
|
|
"ACT_LOOKATTARGET",
|
|
"ACT_SURPRISED",
|
|
"ACT_STARTALARM",
|
|
"ACT_THROWGRENADE", // 20
|
|
"ACT_TURNDIR",
|
|
"ACT_TEST",
|
|
"ACT_BONDINTRO",
|
|
"ACT_BONDDIE",
|
|
"ACT_BONDMULTI",
|
|
"ACT_NULL"};
|
|
#endif
|
|
|
|
|
|
typedef enum AMMOTYPE
|
|
{
|
|
AMMO_NONE,
|
|
AMMO_9MM,
|
|
AMMO_9MM_2,
|
|
AMMO_RIFLE,
|
|
AMMO_SHOTGUN,
|
|
AMMO_GRENADE,
|
|
AMMO_ROCKETS,
|
|
AMMO_REMOTEMINE,
|
|
AMMO_PROXMINE,
|
|
AMMO_TIMEDMINE,
|
|
AMMO_KNIFE,
|
|
AMMO_GRENADEROUND,
|
|
AMMO_MAGNUM,
|
|
AMMO_GGUN,
|
|
AMMOTYPE_GLOBAL_MAX = AMMO_GGUN,
|
|
// Ammo available in both SP and MP must be listed above this line.
|
|
AMMO_DARTS,
|
|
AMMO_EXPLOSIVEPEN,
|
|
AMMO_BOMBCASE,
|
|
AMMO_FLARE,
|
|
AMMO_PITON,
|
|
AMMO_DYNAMITE,
|
|
AMMO_BUG,
|
|
AMMO_MICRO_CAMERA,
|
|
AMMO_GEKEY,
|
|
AMMO_PLASTIQUE,
|
|
AMMO_WATCH_LASER,
|
|
AMMO_WATCH_MAGNET,
|
|
AMMO_UNK,
|
|
AMMO_CAMERA,
|
|
AMMO_TANK,
|
|
AMMO_TOKEN,
|
|
AMMOTYPE_MAX
|
|
} AMMOTYPE;
|
|
#ifdef AIPARSE
|
|
char *AMMOTYPE_ToString[] = {
|
|
"AMMO_NONE",
|
|
"AMMO_9MM",
|
|
"AMMO_9MM_2",
|
|
"AMMO_RIFLE",
|
|
"AMMO_SHOTGUN",
|
|
"AMMO_GRENADE",
|
|
"AMMO_ROCKETS",
|
|
"AMMO_REMOTEMINE",
|
|
"AMMO_PROXMINE",
|
|
"AMMO_TIMEDMINE",
|
|
"AMMO_KNIFE",
|
|
"AMMO_GRENADEROUND",
|
|
"AMMO_MAGNUM",
|
|
"AMMO_GGUN",
|
|
"AMMO_DARTS",
|
|
"AMMO_EXPLOSIVEPEN",
|
|
"AMMO_BOMBCASE",
|
|
"AMMO_FLARE",
|
|
"AMMO_PITON",
|
|
"AMMO_DYNAMITE",
|
|
"AMMO_BUG",
|
|
"AMMO_MICRO_CAMERA",
|
|
"AMMO_GEKEY",
|
|
"AMMO_PLASTIQUE",
|
|
"AMMO_WATCH_LASER",
|
|
"AMMO_WATCH_MAGNET",
|
|
"AMMO_UNK",
|
|
"AMMO_CAMERA",
|
|
"AMMO_TANK",
|
|
"AMMO_TOKEN"};
|
|
|
|
#endif
|
|
typedef enum HATTYPE
|
|
{
|
|
HATTYPE_OTHER = -1,
|
|
HATTYPE_BERRET,
|
|
HATTYPE_BIRD, //pilotka/Side cap
|
|
HATTYPE_PEAKED,
|
|
HATTYPE_HELMATE,
|
|
HATTYPE_FURRY,
|
|
HATTYPE_MOON
|
|
} HATTYPE;
|
|
|
|
typedef enum INV_ITEM_TYPE
|
|
{
|
|
INV_ITEM_NONE,
|
|
INV_ITEM_WEAPON,
|
|
INV_ITEM_PROP,
|
|
INV_ITEM_DUAL,
|
|
INV_ITEM_PICKUP
|
|
} INV_ITEM_TYPE;
|
|
|
|
/**
|
|
* Tick operations
|
|
* The per-prop tick functions like chrTick, objTick, playerTick, explosionTick, explosionSmokeTick
|
|
* and the collect/interact chain returns a tickop telling the game what to do with the prop it just processed.
|
|
*
|
|
* TICKOP_DISABLE and TICKOP_RETICK are handled but never actually used.
|
|
*/
|
|
typedef enum TICKOP
|
|
{
|
|
TICKOP_NONE, // Default, do nothing.
|
|
TICKOP_FREE, // Deregister, delist, disable and free the prop except for weapons flagged PROPSTATE_RESPAWN which begin their respawn timer instead.
|
|
TICKOP_DISABLE, // Deregister, delist and disable the prop, but keep the record.
|
|
TICKOP_RETICK, // Delist the prop and reactivate it so it is ticked again this frame.
|
|
TICKOP_GIVETOPLAYER, // Detach the prop and reparent it to the player prop e.g. collected pickups.
|
|
TICKOP_CHANGEDLIST // The tick restructured the prop list (such as being embedded), so prop->prev is stale. The loop resumes from the prev captured before the tick.
|
|
} TICKOP;
|
|
|
|
typedef enum ITEM_IDS
|
|
{
|
|
ITEM_NOTHING = -1,
|
|
|
|
ITEM_UNARMED,
|
|
ITEM_FIST,
|
|
ITEM_KNIFE,
|
|
ITEM_THROWKNIFE,
|
|
ITEM_WPPK,
|
|
ITEM_WPPKSIL,
|
|
ITEM_TT33,
|
|
ITEM_SKORPION,
|
|
ITEM_AK47,
|
|
ITEM_UZI,
|
|
ITEM_MP5K,
|
|
ITEM_MP5KSIL,
|
|
ITEM_SPECTRE,
|
|
ITEM_M16,
|
|
ITEM_FNP90,
|
|
ITEM_SHOTGUN,
|
|
ITEM_AUTOSHOT,
|
|
ITEM_SNIPERRIFLE,
|
|
ITEM_RUGER,
|
|
ITEM_GOLDENGUN,
|
|
ITEM_SILVERWPPK,
|
|
ITEM_GOLDWPPK,
|
|
ITEM_LASER,
|
|
ITEM_WATCHLASER,
|
|
ITEM_GRENADELAUNCH,
|
|
ITEM_ROCKETLAUNCH,
|
|
ITEM_GRENADE,
|
|
ITEM_TIMEDMINE,
|
|
ITEM_PROXIMITYMINE,
|
|
ITEM_REMOTEMINE,
|
|
ITEM_TRIGGER,
|
|
ITEM_TASER,
|
|
ITEM_TANKSHELLS,
|
|
ITEM_BOMBCASE,
|
|
ITEM_PLASTIQUE,
|
|
ITEM_FLAREPISTOL,
|
|
ITEM_PITONGUN,
|
|
ITEM_BUNGEE,
|
|
ITEM_DOORDECODER,
|
|
ITEM_BOMBDEFUSER,
|
|
ITEM_CAMERA,
|
|
ITEM_LOCKEXPLODER,
|
|
ITEM_DOOREXPLODER,
|
|
ITEM_BRIEFCASE,
|
|
ITEM_WEAPONCASE,
|
|
ITEM_SAFECRACKERCASE,
|
|
ITEM_KEYANALYSERCASE,
|
|
ITEM_BUG,
|
|
ITEM_MICROCAMERA,
|
|
ITEM_BUGDETECTOR,
|
|
ITEM_EXPLOSIVEFLOPPY,
|
|
ITEM_POLARIZEDGLASSES,
|
|
ITEM_DARKGLASSES,
|
|
ITEM_CREDITCARD,
|
|
ITEM_GASKEYRING,
|
|
ITEM_DATATHIEF,
|
|
ITEM_WATCHIDENTIFIER,
|
|
ITEM_WATCHCOMMUNICATOR,
|
|
ITEM_WATCHGEIGERCOUNTER,
|
|
ITEM_WATCHMAGNETREPEL,
|
|
ITEM_WATCHMAGNETATTRACT,
|
|
ITEM_GOLDENEYEKEY,
|
|
ITEM_BLACKBOX,
|
|
ITEM_CIRCUITBOARD,
|
|
ITEM_CLIPBOARD,
|
|
ITEM_STAFFLIST,
|
|
ITEM_DOSSIERRED,
|
|
ITEM_PLANS,
|
|
ITEM_SPYFILE,
|
|
ITEM_BLUEPRINTS,
|
|
ITEM_MAP,
|
|
ITEM_AUDIOTAPE,
|
|
ITEM_VIDEOTAPE,
|
|
ITEM_DATTAPE,
|
|
ITEM_SPOOLTAPE,
|
|
ITEM_MICROFILM,
|
|
ITEM_MICROCODE,
|
|
ITEM_LECTRE,
|
|
ITEM_MONEY,
|
|
ITEM_GOLDBAR,
|
|
ITEM_HEROIN,
|
|
ITEM_KEYCARD,
|
|
ITEM_KEYYALE,
|
|
ITEM_KEYBOLT,
|
|
ITEM_SUIT_LF_HAND,
|
|
ITEM_JOYPAD,
|
|
ITEM_ROCKETROUND,
|
|
ITEM_GRENADEROUND ,
|
|
ITEM_TOKEN,
|
|
ITEM_IDS_MAX
|
|
} ITEM_IDS;
|
|
#ifdef AIPARSE
|
|
char *ITEM_IDS_ToString[] = {
|
|
"ITEM_UNARMED",
|
|
"ITEM_FIST",
|
|
"ITEM_KNIFE",
|
|
"ITEM_THROWKNIFE",
|
|
"ITEM_WPPK",
|
|
"ITEM_WPPKSIL",
|
|
"ITEM_TT33",
|
|
"ITEM_SKORPION",
|
|
"ITEM_AK47",
|
|
"ITEM_UZI",
|
|
"ITEM_MP5K",
|
|
"ITEM_MP5KSIL",
|
|
"ITEM_SPECTRE",
|
|
"ITEM_M16",
|
|
"ITEM_FNP90",
|
|
"ITEM_SHOTGUN",
|
|
"ITEM_AUTOSHOT",
|
|
"ITEM_SNIPERRIFLE",
|
|
"ITEM_RUGER",
|
|
"ITEM_GOLDENGUN",
|
|
"ITEM_SILVERWPPK",
|
|
"ITEM_GOLDWPPK",
|
|
"ITEM_LASER",
|
|
"ITEM_WATCHLASER",
|
|
"ITEM_GRENADELAUNCH",
|
|
"ITEM_ROCKETLAUNCH",
|
|
"ITEM_GRENADE",
|
|
"ITEM_TIMEDMINE",
|
|
"ITEM_PROXIMITYMINE",
|
|
"ITEM_REMOTEMINE",
|
|
"ITEM_TRIGGER",
|
|
"ITEM_TASER",
|
|
"ITEM_TANKSHELLS",
|
|
"ITEM_BOMBCASE",
|
|
"ITEM_PLASTIQUE",
|
|
"ITEM_FLAREPISTOL",
|
|
"ITEM_PITONGUN",
|
|
"ITEM_BUNGEE",
|
|
"ITEM_DOORDECODER",
|
|
"ITEM_BOMBDEFUSER",
|
|
"ITEM_CAMERA",
|
|
"ITEM_LOCKEXPLODER",
|
|
"ITEM_DOOREXPLODER",
|
|
"ITEM_BRIEFCASE",
|
|
"ITEM_WEAPONCASE",
|
|
"ITEM_SAFECRACKERCASE",
|
|
"ITEM_KEYANALYSERCASE",
|
|
"ITEM_BUG",
|
|
"ITEM_MICROCAMERA",
|
|
"ITEM_BUGDETECTOR",
|
|
"ITEM_EXPLOSIVEFLOPPY",
|
|
"ITEM_POLARIZEDGLASSES",
|
|
"ITEM_DARKGLASSES",
|
|
"ITEM_CREDITCARD",
|
|
"ITEM_GASKEYRING",
|
|
"ITEM_DATATHIEF",
|
|
"ITEM_WATCHIDENTIFIER",
|
|
"ITEM_WATCHCOMMUNICATOR",
|
|
"ITEM_WATCHGEIGERCOUNTER",
|
|
"ITEM_WATCHMAGNETREPEL",
|
|
"ITEM_WATCHMAGNETATTRACT",
|
|
"ITEM_GOLDENEYEKEY",
|
|
"ITEM_BLACKBOX",
|
|
"ITEM_CIRCUITBOARD",
|
|
"ITEM_CLIPBOARD",
|
|
"ITEM_STAFFLIST",
|
|
"ITEM_DOSSIERRED",
|
|
"ITEM_PLANS",
|
|
"ITEM_SPYFILE",
|
|
"ITEM_BLUEPRINTS",
|
|
"ITEM_MAP",
|
|
"ITEM_AUDIOTAPE",
|
|
"ITEM_VIDEOTAPE",
|
|
"ITEM_DATTAPE",
|
|
"ITEM_SPOOLTAPE",
|
|
"ITEM_MICROFILM",
|
|
"ITEM_MICROCODE",
|
|
"ITEM_LECTRE",
|
|
"ITEM_MONEY",
|
|
"ITEM_GOLDBAR",
|
|
"ITEM_HEROIN",
|
|
"ITEM_KEYCARD",
|
|
"ITEM_KEYYALE",
|
|
"ITEM_KEYBOLT",
|
|
"ITEM_SUIT_LF_HAND",
|
|
"ITEM_JOYPAD",
|
|
"ITEM_NULL86",
|
|
"ITEM_NULL87",
|
|
"ITEM_TOKEN",
|
|
"ITEM_IDS_MAX"};
|
|
|
|
#endif
|
|
|
|
typedef enum PROPDEF_TYPE
|
|
{
|
|
PROPDEF_NOTHING,
|
|
PROPDEF_DOOR,
|
|
PROPDEF_DOOR_SCALE,
|
|
PROPDEF_PROP,
|
|
PROPDEF_KEY,
|
|
PROPDEF_ALARM,
|
|
PROPDEF_CCTV,
|
|
PROPDEF_MAGAZINE,
|
|
PROPDEF_COLLECTABLE,
|
|
PROPDEF_GUARD,
|
|
PROPDEF_MONITOR,
|
|
PROPDEF_MULTI_MONITOR,
|
|
PROPDEF_RACK,
|
|
PROPDEF_AUTOGUN,
|
|
PROPDEF_LINK,
|
|
PROPDEF_DEBRIS,
|
|
PROPDEF_UNK16,
|
|
PROPDEF_HAT,
|
|
PROPDEF_GUARD_ATTRIBUTE,
|
|
PROPDEF_SWITCH,
|
|
PROPDEF_AMMO,
|
|
PROPDEF_ARMOUR,
|
|
PROPDEF_TAG,
|
|
PROPDEF_OBJECTIVE_START,
|
|
PROPDEF_OBJECTIVE_END,
|
|
PROPDEF_OBJECTIVE_DESTROY_OBJECT,
|
|
PROPDEF_OBJECTIVE_COMPLETE_CONDITION,
|
|
PROPDEF_OBJECTIVE_FAIL_CONDITION,
|
|
PROPDEF_OBJECTIVE_COLLECT_OBJECT,
|
|
PROPDEF_OBJECTIVE_DEPOSIT_OBJECT,
|
|
PROPDEF_OBJECTIVE_PHOTOGRAPH,
|
|
PROPDEF_OBJECTIVE_NULL,
|
|
PROPDEF_OBJECTIVE_ENTER_ROOM,
|
|
PROPDEF_OBJECTIVE_DEPOSIT_OBJECT_IN_ROOM,
|
|
PROPDEF_OBJECTIVE_COPY_ITEM,
|
|
PROPDEF_WATCH_MENU_OBJECTIVE_TEXT,
|
|
PROPDEF_GAS_RELEASING,
|
|
PROPDEF_RENAME,
|
|
PROPDEF_LOCK_DOOR,
|
|
PROPDEF_VEHICHLE,
|
|
PROPDEF_AIRCRAFT,
|
|
PROPDEF_UNK41,
|
|
PROPDEF_GLASS,
|
|
PROPDEF_SAFE,
|
|
PROPDEF_SAFE_ITEM,
|
|
PROPDEF_TANK,
|
|
PROPDEF_CAMERAPOS, //canonical name
|
|
PROPDEF_TINTED_GLASS,
|
|
PROPDEF_END,
|
|
PROPDEF_MAX
|
|
} PROPDEF_TYPE;
|
|
#ifdef AIPARSE
|
|
char *PROPDEF_TYPE_ToString[] = {
|
|
"PROPDEF_NOTHING",
|
|
"PROPDEF_DOOR",
|
|
"PROPDEF_DOOR_SCALE",
|
|
"PROPDEF_PROP",
|
|
"PROPDEF_KEY",
|
|
"PROPDEF_ALARM",
|
|
"PROPDEF_CCTV",
|
|
"PROPDEF_MAGAZINE",
|
|
"PROPDEF_COLLECTABLE",
|
|
"PROPDEF_GUARD",
|
|
"PROPDEF_MONITOR",
|
|
"PROPDEF_MULTI_MONITOR",
|
|
"PROPDEF_RACK",
|
|
"PROPDEF_AUTOGUN",
|
|
"PROPDEF_LINK",
|
|
"PROPDEF_DEBRIS",
|
|
"PROPDEF_UNK16",
|
|
"PROPDEF_HAT",
|
|
"PROPDEF_GUARD_ATTRIBUTE",
|
|
"PROPDEF_SWITCH",
|
|
"PROPDEF_AMMO",
|
|
"PROPDEF_ARMOUR",
|
|
"PROPDEF_TAG",
|
|
"PROPDEF_OBJECTIVE_START",
|
|
"PROPDEF_OBJECTIVE_END",
|
|
"PROPDEF_OBJECTIVE_DESTROY_OBJECT",
|
|
"PROPDEF_OBJECTIVE_COMPLETE_CONDITION",
|
|
"PROPDEF_OBJECTIVE_FAIL_CONDITION",
|
|
"PROPDEF_OBJECTIVE_COLLECT_OBJECT",
|
|
"PROPDEF_OBJECTIVE_DEPOSIT_OBJECT",
|
|
"PROPDEF_OBJECTIVE_PHOTOGRAPH",
|
|
"PROPDEF_OBJECTIVE_NULL",
|
|
"PROPDEF_OBJECTIVE_ENTER_ROOM",
|
|
"PROPDEF_OBJECTIVE_DEPOSIT_OBJECT_IN_ROOM",
|
|
"PROPDEF_OBJECTIVE_COPY_ITEM",
|
|
"PROPDEF_WATCH_MENU_OBJECTIVE_TEXT",
|
|
"PROPDEF_GAS_RELEASING",
|
|
"PROPDEF_RENAME",
|
|
"PROPDEF_LOCK_DOOR",
|
|
"PROPDEF_VEHICHLE",
|
|
"PROPDEF_AIRCRAFT",
|
|
"PROPDEF_UNK41",
|
|
"PROPDEF_GLASS",
|
|
"PROPDEF_SAFE",
|
|
"PROPDEF_SAFE_ITEM",
|
|
"PROPDEF_TANK",
|
|
"PROPDEF_CAMERAPOS", // canonical name
|
|
"PROPDEF_TINTED_GLASS",
|
|
"PROPDEF_END",
|
|
};
|
|
|
|
#endif
|
|
|
|
#pragma endregion
|
|
|
|
#pragma region Setup
|
|
|
|
/**
|
|
* enums were listed in a particular order, it appears the first few are associated with the start/intro
|
|
* of a level:
|
|
* if (g_CurrentPlayer->redbloodfinished && g_CurrentPlayer->deathanimfinished && (camera_mode >= CAMERAMODE_SWIRL))
|
|
*/
|
|
typedef enum CAMERAMODE
|
|
{
|
|
CAMERAMODE_NONE,
|
|
CAMERAMODE_INTRO,
|
|
CAMERAMODE_FADESWIRL,
|
|
CAMERAMODE_SWIRL,
|
|
CAMERAMODE_FP,
|
|
CAMERAMODE_DEATH_CAM_SP,
|
|
CAMERAMODE_DEATH_CAM_MP,
|
|
CAMERAMODE_POSEND,
|
|
CAMERAMODE_FP_NOINPUT,
|
|
CAMERAMODE_MP,
|
|
CAMERAMODE_FADE_TO_TITLE,
|
|
CAMERAMODE_COUNT
|
|
} CAMERAMODE;
|
|
#ifdef AIPARSE
|
|
char *CAMERAMODE_ToString[] = {
|
|
"CAMERAMODE_NONE",
|
|
"CAMERAMODE_INTRO",
|
|
"CAMERAMODE_FADESWIRL",
|
|
"CAMERAMODE_SWIRL",
|
|
"CAMERAMODE_FP",
|
|
"CAMERAMODE_DEATH_CAM_SP",
|
|
"CAMERAMODE_DEATH_CAM_MP",
|
|
"CAMERAMODE_POSEND",
|
|
"CAMERAMODE_FP_NOINPUT",
|
|
"CAMERAMODE_MP",
|
|
"CAMERAMODE_FADE_TO_TITLE",
|
|
};
|
|
|
|
#endif
|
|
|
|
typedef enum INTRO_TYPE
|
|
{
|
|
INTROTYPE_SPAWN,
|
|
INTROTYPE_ITEM,
|
|
INTROTYPE_AMMO,
|
|
INTROTYPE_SWIRL,
|
|
INTROTYPE_ANIM,
|
|
INTROTYPE_CUFF,
|
|
INTROTYPE_CAMERA,
|
|
INTROTYPE_WATCH,
|
|
INTROTYPE_CREDITS,
|
|
INTROTYPE_END,
|
|
INTROTYPE_MAX
|
|
} INTRO_TYPE;
|
|
#ifdef AIPARSE
|
|
char *INTRO_TYPE_ToString[] = {
|
|
"INTROTYPE_SPAWN",
|
|
"INTROTYPE_ITEM",
|
|
"INTROTYPE_AMMO",
|
|
"INTROTYPE_SWIRL",
|
|
"INTROTYPE_ANIM",
|
|
"INTROTYPE_CUFF",
|
|
"INTROTYPE_CAMERA",
|
|
"INTROTYPE_WATCH",
|
|
"INTROTYPE_CREDITS",
|
|
"INTROTYPE_END",
|
|
};
|
|
#endif
|
|
|
|
typedef enum INTRO_WEAPON_TYPE
|
|
{
|
|
INTRO_WEAPON_TYPE_NONE,
|
|
INTRO_WEAPON_TYPE_PISTOL,
|
|
INTRO_WEAPON_TYPE_RIFLE
|
|
} INTRO_WEAPON_TYPE;
|
|
|
|
typedef enum MISSION_STATE_IDS
|
|
{
|
|
MISSION_STATE_0,
|
|
MISSION_STATE_1,
|
|
MISSION_STATE_2,
|
|
MISSION_STATE_3,
|
|
MISSION_STATE_4,
|
|
MISSION_STATE_5,
|
|
MISSION_STATE_6
|
|
} MISSION_STATE_ID;
|
|
#ifdef AIPARSE
|
|
char *MISSION_STATE_IDS_ToString[] = {
|
|
"MISSION_STATE_0",
|
|
"MISSION_STATE_1",
|
|
"MISSION_STATE_2",
|
|
"MISSION_STATE_3",
|
|
"MISSION_STATE_4",
|
|
"MISSION_STATE_5",
|
|
"MISSION_STATE_6"};
|
|
|
|
#endif
|
|
|
|
|
|
typedef enum OBJECTIVESTATUS
|
|
{
|
|
OBJECTIVESTATUS_INCOMPLETE,
|
|
OBJECTIVESTATUS_COMPLETE,
|
|
OBJECTIVESTATUS_FAILED
|
|
} OBJECTIVESTATUS;
|
|
#ifdef AIPARSE
|
|
char *OBJECTIVESTATUS_ToString[] = {
|
|
"OBJECTIVESTATUS_INCOMPLETE",
|
|
"OBJECTIVESTATUS_COMPLETE",
|
|
"OBJECTIVESTATUS_FAILED"};
|
|
#endif
|
|
|
|
|
|
typedef enum TANK_RUN_STATE
|
|
{
|
|
TANK_RUN_STATE_NOT_RUNNING,
|
|
TANK_RUN_STATE_STARTING,
|
|
TANK_RUN_STATE_RUNNING
|
|
} TANK_RUN_STATE;
|
|
|
|
#pragma endregion
|
|
|
|
#pragma region VI
|
|
typedef enum COLORMODE
|
|
{
|
|
COLORMODE_32BIT,
|
|
COLORMODE_16BIT
|
|
} COLORMODE;
|
|
|
|
typedef enum SCREEN_SIZE
|
|
{
|
|
SCREEN_SIZE_320x240,
|
|
SCREEN_SIZE_440x330
|
|
} SCREEN_SIZE;
|
|
|
|
typedef enum SCREEN_SIZE_OPTION
|
|
{
|
|
SCREEN_SIZE_FULLSCREEN,
|
|
SCREEN_SIZE_WIDESCREEN,
|
|
SCREEN_SIZE_CINEMA
|
|
} SCREEN_SIZE_OPTION;
|
|
|
|
typedef enum SCREEN_RATIO_OPTION
|
|
{
|
|
SCREEN_RATIO_NORMAL,
|
|
SCREEN_RATIO_16_9
|
|
} SCREEN_RATIO_OPTION;
|
|
|
|
//canonically MD
|
|
typedef enum VIDEOMODE
|
|
{
|
|
MD_BLACK,
|
|
MD_NORMAL,
|
|
MD_MAXIMUM,
|
|
|
|
//just in case someone commits with old name
|
|
VIDEOMODE_DISABLE_320x240 = MD_BLACK,
|
|
VIDEOMODE_320x240 = MD_NORMAL,
|
|
VIDEOMODE_640x480 = MD_MAXIMUM
|
|
} VIDEOMODE;
|
|
|
|
typedef enum ZBUFMODE
|
|
{
|
|
ZBUF_OFF, /* G_RM_AA_*_SURF (no z-buffer) */
|
|
ZBUF_SURFACE, /* G_RM_AA_ZB_*_SURF */
|
|
ZBUF_DECAL /* G_RM_AA_ZB_*_DECAL */
|
|
} ZBUFMODE;
|
|
|
|
#pragma endregion
|
|
|
|
#if !defined(VERSION_EU)
|
|
#define MAXROOMCOUNT 150
|
|
#else
|
|
#define MAXROOMCOUNT 139
|
|
#endif
|
|
|
|
|
|
/* special chr num IDs */
|
|
#define CHR_BOND_CINEMA -8 /* only works when bond has a third person model (intro/exit cutscene) */
|
|
#define CHR_CLONE -7
|
|
#define CHR_SEE_SHOT -6 /* stored as chr->chrseeshot */
|
|
#define CHR_SEE_DIE -5 /* stored as chr->chrseedie */
|
|
#define CHR_PRESET -4 /* stored as chr->chrpreset1 */
|
|
#define CHR_SELF -3
|
|
|
|
/* private chr ID, cannot be accessed with ai commands */
|
|
#define CHR_OBJECTIVE -2 /* objective ai list chr ID */
|
|
#define CHR_FREE -1 /* chr IDs when free'd (killed or removed from level) */
|
|
#ifdef AIPARSE
|
|
/* CHR to String needs a sign flipped number */
|
|
char *CHR_ToString[] = {
|
|
"",
|
|
"CHR_FREE",
|
|
"CHR_OBJECTIVE",
|
|
"CHR_SELF",
|
|
"CHR_PRESET",
|
|
"CHR_SEE_DIE",
|
|
"CHR_SEE_SHOT",
|
|
"CHR_CLONE",
|
|
"CHR_BOND_CINEMA"};
|
|
#endif
|
|
#define CHR_SPAWN_NUM_START 5000 /* default chr num for spawned guards with ai command BD/BE */
|
|
#define CHR_CLONED_NUM_START 10000 /* default chr num for cloed guards with ai command C1 */
|
|
/* Special ID for selecting PadPreset in AI list */
|
|
#define PAD_PRESET1 9000 /* stored as chr->padpreset1 */
|
|
|
|
#define GAME_TICKRATE 60
|
|
#define OBJECTIVES_MAX 10
|
|
#define MAX_CHRWAYPOINTS 6
|
|
#define MAX_WAYMODE ((s32)WAYMODE_MAGIC)
|
|
#define MAX_TEXTURES 3001
|
|
#define PROPRECORD_STAN_ROOM_LEN 4
|
|
#define NUMBER_SHOTGUN_BULLETS 5
|
|
|
|
#ifdef VERSION_EU
|
|
#define NTSC 0
|
|
#define PAL 1
|
|
#define TICKS_PER_SECOND 50
|
|
#define FRAMES_PER_SECOND 25
|
|
#else
|
|
#define NTSC 1
|
|
#define PAL 0
|
|
#define TICKS_PER_SECOND 60
|
|
#define FRAMES_PER_SECOND 30
|
|
#endif
|
|
|
|
#pragma endregion
|
|
|
|
#define S32_MAX 2147483647
|
|
#define U32_MAX 4294967295
|
|
#define M_SQRT2_F 1.41412f
|
|
#pragma region Inline Macro Functions
|
|
#ifndef _MATH_EXT_H_
|
|
#define M_TAU_F 6.2831855f
|
|
#define SECS_TO_TIMER60(SECS) (SECS * GAME_TICKRATE)
|
|
#define MINS_TO_TIMER60(MINS) (SECS_TO_TIMER60(MINS * GAME_TICKRATE))
|
|
/* Gets the byte representation of an angle (degrees) */
|
|
#define DEG2BYTE(DEG) (char)(256.0f / 360.0f * (DEG))
|
|
/* Gets the byte representation of an angle (radians) */
|
|
#define RAD2BYTE(RAD) (char)(256.0f / M_TAU_F * (RAD))
|
|
/* Converts an angle from Degrees to Radians */
|
|
#define DegToRad(DEG) (float)((DEG)*M_TAU_F / 360.0)
|
|
/* Converts and halves an angle from Degrees to Radians */
|
|
#define mDegToHalfRad(x) ((x * M_PI_F) / 360.0f)
|
|
/* Converts an angle from Radians to Degrees */
|
|
#define RadToDeg(RAD) (float)((RAD) / M_TAU_F * 360.0f)
|
|
/* Gets the angle in radians represented by a byte */
|
|
#define ByteToRadian(Byte) ((Byte * M_TAU_F) * (1.0f / 256.0f))
|
|
/*
|
|
Inline Abs function - Not Needed, Compiler does this automatically
|
|
*/
|
|
#define ABS_F(val) (val) < 0 ? (float)(val) + 4294967296.0f /* -1.0f */: (float)(val)
|
|
#define ABS(x) ((x) < 0 ? -(x) : (x))
|
|
#endif
|
|
#define getVector(vec, a, b) \
|
|
vec.x = b.x - a.x; \
|
|
vec.y = b.y - a.y; \
|
|
vec.z = b.z - a.z
|
|
#define getDistanceSquared(vec) (vec.x * vec.x) + (vec.y * vec.y) + (vec.z * vec.z)
|
|
#define isVectorDistanceLessThan(dist, vec) (dist * dist) <= vec
|
|
|
|
#define _mkshort(a, b) ((a << 8) | (b & 0xff))
|
|
#define _mkword(a, b) ((a << 16) | (b & 0xffff))
|
|
#define CharArrayTo16(val, index) ( val[index+1] | val[index] << 8)
|
|
#define CharArrayTo24(val, index) ( val[index+1] << 8 | val[index+2] | val[index] << 16)
|
|
#define CharArrayTo32(val, index) (val[index+1] << 16 | val[index+2] << 8 | val[index+3] | val[index] << 24)
|
|
// rewrite these to use char array as system provided funcs do not.
|
|
// converts the unsigned integer netlong from network byte order to host byte order
|
|
|
|
#define btol(var) *(int *)&(var) = CharArrayTo32(((unsigned char *)(&(var))), 0)
|
|
#define ntohl(var) CharArrayTo32(((unsigned char *)(&(var))), 0)
|
|
#define ntohs(var) CharArrayTo16(((unsigned char *)(&(var))), 0)
|
|
|
|
/* Pad Catagory */
|
|
#define isNotBoundPad(pad) pad < 10000
|
|
#define getBoundPadNum(pad) pad - 10000
|
|
#define setBoundPadNum(pad) pad + 10000
|
|
/* AI Catagory */
|
|
#define isGlobalAIListID(ID) ((ID) <= 1024)
|
|
#define isBGAIListID(ID) ((ID) >= 4096)
|
|
#define isChrAIListID(ID) (!isGlobalAIListID(ID) && !isBGAIListID(ID))
|
|
#define setGlobalAIListID(ID) ((ID) + 0)
|
|
#define setChrAIListID(ID) ((ID) + 1025)
|
|
#define setBGAIListID(ID) ((ID) + 4096)
|
|
#define getGlobalAIListID(ID) ((ID) - 0)
|
|
#define getChrAIListID(ID) ((ID) - 1025)
|
|
#define getBGAIListID(ID) ((ID) - 4096)
|
|
|
|
/* language file to slot allocation */
|
|
#define getStringID(TEXTBANK, TEXTSLOT) ((TEXTBANK * 0x0400U) + TEXTSLOT)
|
|
|
|
/* Image ID to RAM allocation */
|
|
#define IMAGESEG(id) 0xABCD0000 | id
|
|
|
|
/*Doesnt work! might be handy for something else
|
|
#define setMask(t)\
|
|
(t) <= 2 ? 1\
|
|
: (t) <= 4 ? 2\
|
|
: (t) <= 8 ? 3\
|
|
: (t) <= 16 ? 4\
|
|
: (t) <= 32 ? 5\
|
|
: (t) <= 64 ? 6\
|
|
: (t) <= 128 ? 7\
|
|
: (t) <= 256 ? 8\
|
|
: (t) <= 512 ? 9\
|
|
: (t) <=1024 ? 10\
|
|
: "TEXTURE TOO BIG (>1024)"*/
|
|
|
|
//macros for FILERECORDS
|
|
#define SKELETON(NAME) skeleton_ ## NAME
|
|
#define JOINTLIST(NAME) jointlist_ ## NAME
|
|
#define JOINTNAMES(NAME) jointnames_ ## NAME
|
|
#define SWITCHNAMES(NAME) switchnames_ ## NAME
|
|
|
|
/**
|
|
* Define a New Model Skeleton
|
|
* @param NAME: Name of Skeleton
|
|
* @param SKELSIZE: -TBC- its not always the skel size
|
|
* @param HASNAMES: (Optional TRUE/FALSE) Has debug names
|
|
* @param NUMJOINTS: (Optional Integer) Number of Joints
|
|
*/
|
|
#define New_ModelSkeleton(NAME, SKELSIZE, HASNAMES, NUMJOINTS) \
|
|
ModelSkeleton SKELETON(##NAME##) = { \
|
|
IF_ELSE(IS_EMPTY(NUMJOINTS)) \
|
|
( \
|
|
sizeof(JOINTLIST(NAME))/sizeof(ModelJoint) \
|
|
) \
|
|
( \
|
|
NUMJOINTS \
|
|
), \
|
|
0, \
|
|
JOINTLIST(##NAME##), \
|
|
SKELSIZE, \
|
|
0 \
|
|
IF(AND(DEFINED(DEBUG), BOOL(HASNAMES))) \
|
|
( \
|
|
DEFER(COMMA)() jointnames_##NAME \
|
|
) \
|
|
};
|
|
|
|
#define MODELSKELETON(NAME, NUMJOINTS, SKELSIZE) ModelSkeleton SKELETON( ## NAME ## ) = {NUMJOINTS, 0, JOINTLIST( ## NAME ## ), SKELSIZE, 0};
|
|
|
|
|
|
/**
|
|
* Define a New Model Header
|
|
* @param NAME: Name of Model
|
|
* @param SKELETONNAME: Name of base Skeleton eg standard_object
|
|
* @param BOUNDINGRADIUS: Float Bounding Volume Radius
|
|
* @param NUMSWITCHES: (Optional Integer) Number of Switches
|
|
* @param HASNAMES: (Optional TRUE/FALSE) Has debug names
|
|
* @param NUMMATRICES: (Optional Integer) Number of Matices used *AUTO
|
|
* @param NUMTEXTURES: (Optional Integer) Number of Textures defined *AUTO
|
|
* @param NUMRECORDS: (Optional Integer)Number of Records in Model
|
|
* @param SWITCHES: (Optional Pointer) Pointer to Switch Array (Never Used)
|
|
* @param ROOTNODE: (Optional Pointer) Pointer to Root Node (Never Used)
|
|
*/
|
|
#define New_ModelFileHeader(NAME, SKELETONNAME, BOUNDINGRADIUS, NUMSWITCHES, HASNAMES, NUMMATRICES, NUMTEXTURES, NUMRECORDS, SWITCHES, ROOTNODE) \
|
|
ModelFileHeader NAME ## _header = { \
|
|
IF_ELSE(IS_EMPTY(ROOTNODE)) \
|
|
( \
|
|
0 \
|
|
) \
|
|
( \
|
|
ROOTNODE /* Never Used */ \
|
|
), \
|
|
& ## SKELETON(SKELETONNAME), \
|
|
IF_ELSE(IS_EMPTY(SWITCHES)) \
|
|
( \
|
|
0 \
|
|
) \
|
|
( \
|
|
SWITCHES /* Never Used */ \
|
|
), \
|
|
IF_ELSE(IS_EMPTY(NUMSWITCHES)) \
|
|
( \
|
|
0 \
|
|
) \
|
|
( \
|
|
NUMSWITCHES \
|
|
), \
|
|
IF_ELSE(IS_EMPTY(NUMMATRICES)) \
|
|
( \
|
|
sizeof(JOINTLIST(SKELETONNAME))/sizeof(ModelJoint) \
|
|
) \
|
|
( \
|
|
NUMMATRICES \
|
|
), \
|
|
BOUNDINGRADIUS, \
|
|
IF_ELSE(IS_EMPTY(NUMRECORDS)) \
|
|
( \
|
|
0 \
|
|
) \
|
|
( \
|
|
NUMRECORDS \
|
|
), \
|
|
IF_ELSE(IS_EMPTY(NUMTEXTURES)) \
|
|
( \
|
|
sizeof(NAME ## _textures)/sizeof(ModelFileTextures) \
|
|
) \
|
|
( \
|
|
NUMTEXTURES \
|
|
), \
|
|
0 /* Texture Pointer Always null */ \
|
|
IF(AND(DEFINED(DEBUG), BOOL(HASNAMES))) \
|
|
( \
|
|
DEFER(COMMA)() switchnames_##NAME \
|
|
) \
|
|
IF(NOT(DEFINED(VERSION_EU))) \
|
|
( \
|
|
DEFER(COMMA)() FALSE /* isLoaded Always FALSE */ \
|
|
) \
|
|
};
|
|
|
|
#if defined(VERSION_EU)
|
|
#define MODELFILEHEADER(NAME, ROOTNODE, SKELETON, SWITCHES, NUMSWITCHES, NUMMATRICES, BOUNDINGRADIUS, NUMRECORDS, NUMTEXTURES) struct ModelFileHeader NAME ## _header = {ROOTNODE, SKELETON, SWITCHES, NUMSWITCHES, NUMMATRICES, BOUNDINGRADIUS, NUMRECORDS, NUMTEXTURES, 0};
|
|
#else
|
|
#define MODELFILEHEADER(NAME, ROOTNODE, SKELETON, SWITCHES, NUMSWITCHES, NUMMATRICES, BOUNDINGRADIUS, NUMRECORDS, NUMTEXTURES) struct ModelFileHeader NAME ## _header = {ROOTNODE, SKELETON, SWITCHES, NUMSWITCHES, NUMMATRICES, BOUNDINGRADIUS, NUMRECORDS, NUMTEXTURES, 0, 0};
|
|
#endif
|
|
|
|
#define CHRFILERECORD(NAME, SCALE, OFFSET, HASHEAD, ISMALE) \
|
|
{&##NAME##_header, STR(C##NAME##Z), SCALE, OFFSET, HASHEAD, ISMALE},
|
|
|
|
#define GUNSTATS(NAME) & ## NAME ## _stats
|
|
#define GUNFILERECORD(NAME, NOMODEL, STATS, UPPERTEXTID, LOWERTEXTID, POSX, POSY, POSZ, XROT, YROT, WOCTEXT, EQUIPTEXT, EQUIPX, EQUIPY, EQUIPZ) \
|
|
{ & ## NAME ## _header,STR(G## NAME ##Z), NOMODEL, STATS, UPPERTEXTID, LOWERTEXTID, POSX, POSY, POSZ, XROT, YROT, WOCTEXT, EQUIPTEXT, EQUIPX, EQUIPY, EQUIPZ},
|
|
#define SUIT_LFRECORD(NAME, NOMODEL, STATS, UPPERTEXTID, LOWERTEXTID, POSX, POSY, POSZ, XROT, YROT, WOCTEXT, EQUIPTEXT, EQUIPX, EQUIPY, EQUIPZ) \
|
|
{ & ## NAME ## _header,STR(C## NAME ##Z), NOMODEL, STATS, UPPERTEXTID, LOWERTEXTID, POSX, POSY, POSZ, XROT, YROT, WOCTEXT, EQUIPTEXT, EQUIPX, EQUIPY, EQUIPZ},
|
|
/**
|
|
* Define a New Item Record
|
|
* @param NAME: Name of Model
|
|
* @param SCALE: (Optional float) Scale of Model
|
|
*/
|
|
#define PROPFILERECORD(NAME, SCALE) \
|
|
{&NAME ## _header, STR(P ## NAME ##Z), \
|
|
IF_ELSE(IS_EMPTY(SCALE)) \
|
|
( \
|
|
0.1 \
|
|
) \
|
|
( \
|
|
SCALE \
|
|
) \
|
|
},
|
|
|
|
#define forever for (;;)
|
|
|
|
#define ARRAYCOUNT(a) (s32)(sizeof(a) / sizeof(a[0]))
|
|
#define ALIGN8(val) (((val) + 0x7 | 0x7) ^ 0x7)
|
|
#define RANDOMFRAC() ((f32) randomGetNext() * 2.3283064e-10f)
|
|
#define MAXFLOAT ((float)3.40282346638528860e+38)
|
|
#define SQ(x) ((x) * (x))
|
|
|
|
#define HUDHALIGN_RIGHT 0
|
|
#define HUDHALIGN_LEFT 1
|
|
#define HUDHALIGN_MIDDLE 2
|
|
|
|
#define HUDVALIGN_BOTTOM 0
|
|
#define HUDVALIGN_TOP 1
|
|
#define HUDVALIGN_MIDDLE 2
|
|
|
|
#pragma endregion
|
|
|
|
#endif
|
|
|