perfect_dark/src/files/setup/setupdepo.c

3171 lines
144 KiB
C

//
// G5 Building
//
#include "stagesetup.h"
// Characters
#define CHR_CLOAK_1A 0x00 // first room
#define CHR_CLOAK_1B 0x01 // first room
#define CHR_LIGHTSWITCH_GUARD 0x02
#define CHR_CLOAK_2A 0x03 // second room
#define CHR_CLOAK_2B 0x04 // second room
#define CHR_CLOAK_2C 0x05 // second room
#define CHR_CLOAK_2D 0x06 // second room
#define CHR_CASS 0x18
#define CHR_TRENT 0x19
#define CHR_STRIPES 0x1a
#define CHR_BLONDE 0x1b
#define CHR_INTRO_VICTIM 0x1d
// Objects
#define OBJ_GENERATOR 0x01
#define OBJ_LASERSWITCH1 0x03
#define OBJ_LASERSWITCH2 0x04
#define OBJ_LASERSWITCH3 0x05
#define OBJ_LASERSWITCH4 0x06
#define OBJ_SAFEDOOR 0x0b
#define OBJ_BACKUPDISK 0x0c
#define OBJ_KEYCARD1 0x0e
#define OBJ_KEYCARD2 0x0f
#define OBJ_DECODER 0x10
#define OBJ_SAFEKEYPAD 0x11
#define OBJ_ALARM1 0x12
#define OBJ_ALARM2 0x13
#define OBJ_ESCAPEDOOR1 0x18
#define OBJ_ESCAPEDOOR2 0x1b
#define OBJ_LASER_1A 0x22
#define OBJ_LASER_1B 0x23
#define OBJ_LASER_1C 0x24
#define OBJ_LASER_1D 0x25
#define OBJ_LASER_2A 0x26
#define OBJ_LASER_2B 0x27
#define OBJ_LASER_2C 0x28
#define OBJ_LASER_2D 0x29
#define OBJ_LASER_3A 0x2a
#define OBJ_LASER_3B 0x2b
#define OBJ_LASER_3C 0x2c
#define OBJ_LASER_3D 0x2d
#define OBJ_LASER_4A 0x2e
#define OBJ_LASER_4B 0x2f
#define OBJ_LASER_4C 0x30
#define OBJ_LASER_4D 0x31
#define OBJ_MINE1 0x38
#define OBJ_MINE2 0x39
#define OBJ_NBOMB_CRATE 0x3c
#define OBJ_LIGHTSWITCH 0x3d
#define OBJ_CROSSBOW 0x3e
#define OBJ_CMP150_BOND 0x47
#define OBJ_CMP150_COOP 0x48
// Stage flags
#define STAGEFLAG_CLOAK1_ONE_REMAINING 0x00000002
#define STAGEFLAG_CLOAK2_ONE_REMAINING 0x00000004
#define STAGEFLAG_MEETING_FINISHED 0x00000008
#define STAGEFLAG_CONSPIRATORS_ALERTED 0x00000010
#define STAGEFLAG_VISITED_TOP_DOOR 0x00000020
#define STAGEFLAG_SAFEKEYPAD_DESTROYED 0x00000040
#define STAGEFLAG_LIGHTS_OFF 0x00000080
#define STAGEFLAG_GENERATOR_SHUT_DOWN 0x00000100
#define STAGEFLAG_GENERATOR_SHUT_DOWN2 0x00000200 // redundant
#define STAGEFLAG_GENERATOR_DESTROYED 0x00000400
#define STAGEFLAG_LASERSET1_DISABLED 0x00000800
#define STAGEFLAG_LASERSET2_DISABLED 0x00001000
#define STAGEFLAG_00002000 0x00002000
#define STAGEFLAG_LASERSET4_DISABLED 0x00004000
#define STAGEFLAG_LASERSWITCH1_DESTROYED 0x00008000
#define STAGEFLAG_LASERSWITCH2_DESTROYED 0x00010000
#define STAGEFLAG_LASERSWITCH3_DESTROYED 0x00020000
#define STAGEFLAG_LASERSWITCH4_DESTROYED 0x00040000
#define STAGEFLAG_ALL_LASERS_DISABLED 0x00080000
#define STAGEFLAG_DECODER_ATTACHED 0x00200000
#define STAGEFLAG_LASERSET3_DISABLED 0x00800000
#define STAGEFLAG_MEETING_STARTED 0x01000000
#define STAGEFLAG_BACKUP_COLLECTED 0x08000000
#define STAGEFLAG_MEETING_HOLOGRAPHED 0x10000000
#define STAGEFLAG_20000000 0x20000000
#define STAGEFLAG_ALARM_SOUNDING 0x40000000
#define STAGEFLAG_EXITED_BUILDING 0x80000000
// AI Lists
#define AILIST_WALK_FROM_MEETING 0x0403
#define AILIST_RUN_FROM_MEETING 0x0404
#define AILIST_CLOAK2_HIDE 0x0405
#define AILIST_INIT_TYPE1_GUARD 0x0406
#define AILIST_INIT_CLOAK1_GUARD 0x0408
#define AILIST_INTRO 0x040d
#define AILIST_MEETING_CUTSCENE 0x040e
#define AILIST_OUTRO 0x040f
#define AILIST_CLOAK_GUARD 0x0412
#define AILIST_CLOAK2_GUARD 0x0414
s32 intro[];
u8 props[];
struct path paths[];
struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u8 props[] = {
briefing(0, 0x1801)
briefing(1, 0x1800)
briefing(2, 0x1802)
briefing(3, 0x1803)
beginobjective(0, 0x1809, (DIFFBIT_PA | DIFFBIT_PD)) // "Disable damping field generator"
complete_flags(STAGEFLAG_GENERATOR_SHUT_DOWN)
fail_flags(STAGEFLAG_GENERATOR_DESTROYED)
endobjective
beginobjective(1, 0x180a, (DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD)) // "Deactivate laser grid systems"
complete_flags(STAGEFLAG_ALL_LASERS_DISABLED)
complete_flags(STAGEFLAG_LASERSET1_DISABLED)
complete_flags(STAGEFLAG_LASERSET2_DISABLED)
complete_flags(STAGEFLAG_LASERSET3_DISABLED)
complete_flags(STAGEFLAG_LASERSET4_DISABLED)
fail_flags(STAGEFLAG_LASERSWITCH1_DESTROYED)
fail_flags(STAGEFLAG_LASERSWITCH2_DESTROYED)
fail_flags(STAGEFLAG_LASERSWITCH3_DESTROYED)
fail_flags(STAGEFLAG_LASERSWITCH4_DESTROYED)
endobjective
beginobjective(2, 0x180b, (DIFFBIT_A | DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD)) // "Holograph meeting conspirators"
complete_flags(STAGEFLAG_MEETING_HOLOGRAPHED)
fail_flags(STAGEFLAG_20000000)
fail_flags(STAGEFLAG_CONSPIRATORS_ALERTED)
fail_flags(STAGEFLAG_00002000)
endobjective
beginobjective(3, 0x180c, (DIFFBIT_A | DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD)) // "Retrieve Dr. Caroll backup from safe"
complete_flags(STAGEFLAG_BACKUP_COLLECTED)
fail_flags(STAGEFLAG_SAFEKEYPAD_DESTROYED)
endobjective
beginobjective(4, 0x180d, (DIFFBIT_A | DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD)) // "Exit building"
complete_flags(STAGEFLAG_EXITED_BUILDING)
endobjective
// First cloak room
chr(0x00000100, CHR_CLOAK_1A, 0x007e, BODY_G5_SWAT_GUARD, HEAD_RANDOM, GAILIST_IDLE, 0x007e, -1, 200, 100, 0x00000600, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000)
weapon(0x0100, MODEL_CHRCMP150, CHR_CLOAK_1A, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000)
weapon(0x0100, MODEL_CHRCROSSBOW, CHR_CLOAK_1A, 0x20004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CROSSBOW, 0x00ffffff, 0x00000000)
tag(OBJ_CROSSBOW, -1)
chr(0x00000100, CHR_CLOAK_1B, 0x007f, BODY_G5_SWAT_GUARD, HEAD_RANDOM, GAILIST_IDLE, 0x007f, -1, 200, 100, 0x00000600, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000)
weapon(0x0100, MODEL_CHRCMP150, CHR_CLOAK_1B, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000)
tag(OBJ_KEYCARD1, 1)
key(0x0080, MODEL_KEYCARD, CHR_CLOAK_1A, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00000004)
rename_object(-1, 0x0045, 0x180e, 0x180f, 0x1810, 0x1811, 0x1812, 0x0000, 0x0000) // "Obtain alpha key card."
// Between cloak rooms
chr(0x00004a00, 0x02, 0x005f, BODY_G5_GUARD, HEAD_RANDOM, GAILIST_UNALERTED, 0x0080, -1, 2000, 100, 0x80028204, 0x00000100, TEAM_NONCOMBAT, SQUADRON_04, -1, 0, 0x00010000)
weapon(0x0100, MODEL_CHRCMP150, 0x0002, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000)
// Second cloak room
chr(0x00000000, 0x03, 0x005e, BODY_G5_SWAT_GUARD, HEAD_RANDOM, AILIST_CLOAK2_HIDE, 0x006e, -1, 1, 15, 0x000a8204, 0x00000000, TEAM_ENEMY, SQUADRON_02, -1, 0, 0x00000000)
weapon(0x0100, MODEL_CHRCMP150, 0x0003, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000)
chr(0x00000000, 0x04, 0x005d, BODY_G5_SWAT_GUARD, HEAD_RANDOM, AILIST_CLOAK2_HIDE, 0x006f, -1, 1, 15, 0x000a8204, 0x00000000, TEAM_ENEMY, SQUADRON_02, -1, 0, 0x00000000)
weapon(0x0100, MODEL_CHRCMP150, 0x0004, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000)
chr(0x00000000, 0x05, 0x0072, BODY_G5_SWAT_GUARD, HEAD_RANDOM, AILIST_CLOAK2_HIDE, 0x0070, -1, 1, 10, 0x000a8204, 0x00000000, TEAM_ENEMY, SQUADRON_02, -1, 0, 0x00000000)
weapon(0x0100, MODEL_CHRCMP150, 0x0005, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000)
chr(0x00000000, 0x06, 0x0013, BODY_G5_SWAT_GUARD, HEAD_RANDOM, AILIST_CLOAK2_HIDE, 0x0071, -1, 1, 10, 0x000a8204, 0x00000000, TEAM_ENEMY, SQUADRON_02, -1, 0, 0x00000000)
weapon(0x0100, MODEL_CHRCMP150, 0x0006, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000)
tag(OBJ_KEYCARD2, 1)
key(0x0080, MODEL_KEYCARD, 0x0003, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00000010)
rename_object(-1, 0x0046, 0x1813, 0x1814, 0x1815, 0x1816, 0x1817, 0x0000, 0x0000) // "Obtain alpha key card."
// Rest of stage
chr(0x00000200, 0x08, 0x002f, BODY_G5_GUARD, HEAD_RANDOM, AILIST_INIT_TYPE1_GUARD, 0x007b, -1, 200, 100, 0x800a8204, 0x00000000, TEAM_NONCOMBAT, SQUADRON_04, -1, 0, 0x00000000)
weapon(0x0100, MODEL_CHRCMP150, 0x0008, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000)
chr(0x00000300, 0x09, 0x0079, BODY_G5_GUARD, HEAD_RANDOM, AILIST_INIT_TYPE1_GUARD, 0x007c, -1, 200, 100, 0x800a8204, 0x00000000, TEAM_NONCOMBAT, SQUADRON_04, -1, 0, 0x00000000)
weapon(0x0100, MODEL_CHRCMP150, 0x0009, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000)
chr(0x00000300, 0x0a, 0x007a, BODY_G5_GUARD, HEAD_RANDOM, AILIST_INIT_TYPE1_GUARD, 0x007d, -1, 200, 100, 0x800a8204, 0x00000000, TEAM_NONCOMBAT, SQUADRON_04, -1, 0, 0x00000000)
weapon(0x0100, MODEL_CHRCMP150, 0x000a, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000)
chr(0x00000200, 0x0b, 0x0026, BODY_G5_GUARD, HEAD_RANDOM, 0x040c, 0x0029, -1, 100, 100, 0x800a8204, 0x00000000, TEAM_NONCOMBAT, SQUADRON_04, -1, 0, 0x00000000)
weapon(0x0100, MODEL_CHRCMP150, 0x000b, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000)
chr(0x00000600, 0x07, 0x005c, BODY_G5_GUARD, HEAD_BEAU1, 0x0409, -1, -1, 200, 100, 0xc0008601, 0x00000000, TEAM_NONCOMBAT, SQUADRON_05, -1, 0, 0x00000000)
weapon(0x0100, MODEL_CHRCMP150, 0x0007, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000)
chr(0x00000600, 0x0c, 0x005b, BODY_G5_GUARD, HEAD_RANDOM, AILIST_INIT_TYPE1_GUARD, 0x0073, -1, 200, 100, 0xc000c680, 0x00008000, TEAM_NONCOMBAT, SQUADRON_05, -1, 0, 0x00000000)
weapon(0x0100, MODEL_CHRCMP150, 0x000c, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000)
chr(0x00000600, 0x0d, 0x001f, BODY_G5_GUARD, HEAD_RANDOM, AILIST_INIT_TYPE1_GUARD, 0x0073, -1, 200, 100, 0xc000c680, 0x00008000, TEAM_NONCOMBAT, SQUADRON_05, -1, 0, 0x00000000)
weapon(0x0100, MODEL_CHRCMP150, 0x000d, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000)
chr(0x00000600, 0x0e, 0x0067, BODY_G5_GUARD, HEAD_RANDOM, 0x040a, 0x0073, -1, 200, 100, 0xc000c680, 0x00008000, TEAM_NONCOMBAT, SQUADRON_05, -1, 0, 0x00000000)
weapon(0x0100, MODEL_CHRCMP150, 0x000e, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000)
chr(0x00000600, 0x0f, 0x0039, BODY_G5_GUARD, HEAD_RANDOM, AILIST_INIT_TYPE1_GUARD, 0x0074, -1, 200, 100, 0x8004c080, 0x00000000, TEAM_NONCOMBAT, SQUADRON_06, -1, 0, 0x02000700)
weapon(0x0100, MODEL_CHRCMP150, 0x000f, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000)
chr(0x00000600, 0x10, 0x0068, BODY_G5_GUARD, HEAD_RANDOM, AILIST_INIT_TYPE1_GUARD, 0x0074, -1, 200, 100, 0x8004c080, 0x00000000, TEAM_NONCOMBAT, SQUADRON_06, -1, 0, 0x02000700)
weapon(0x0100, MODEL_CHRCMP150, 0x0010, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000)
chr(0x00000600, 0x11, 0x0069, BODY_G5_GUARD, HEAD_RANDOM, AILIST_INIT_TYPE1_GUARD, 0x0074, -1, 200, 100, 0x8004c080, 0x00000000, TEAM_NONCOMBAT, SQUADRON_06, -1, 0, 0x02000700)
weapon(0x0100, MODEL_CHRCMP150, 0x0011, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000)
chr(0x00000200, 0x12, 0x003f, BODY_G5_GUARD, HEAD_RANDOM, 0x040b, -1, -1, 200, 100, 0xa080c080, 0x00000000, TEAM_NONCOMBAT, SQUADRON_06, -1, 0, 0x02000700)
weapon(0x0100, MODEL_CHRCMP150, 0x0012, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000)
chr(0x00000200, 0x13, 0x006a, BODY_G5_GUARD, HEAD_RANDOM, AILIST_INIT_TYPE1_GUARD, -1, -1, 200, 100, 0xa080c080, 0x00000000, TEAM_NONCOMBAT, SQUADRON_07, -1, 0, 0x00000000)
weapon(0x0100, MODEL_CHRCMP150, 0x0013, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000)
chr(0x00000200, 0x14, 0x006b, BODY_G5_GUARD, HEAD_RANDOM, AILIST_INIT_TYPE1_GUARD, -1, -1, 200, 100, 0xc000c080, 0x00000000, TEAM_NONCOMBAT, SQUADRON_07, -1, 0, 0x00000000)
weapon(0x0100, MODEL_CHRCMP150, 0x0014, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000)
chr(0x00000200, 0x15, 0x006c, BODY_G5_GUARD, HEAD_RANDOM, AILIST_INIT_TYPE1_GUARD, -1, -1, 200, 100, 0xc000c080, 0x00000000, TEAM_NONCOMBAT, SQUADRON_07, -1, 0, 0x00000000)
weapon(0x0100, MODEL_CHRCMP150, 0x0015, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000)
chr(0x00000200, 0x16, 0x006d, BODY_G5_GUARD, HEAD_RANDOM, AILIST_INIT_TYPE1_GUARD, -1, -1, 200, 100, 0xc000c080, 0x00000000, TEAM_NONCOMBAT, SQUADRON_07, -1, 0, 0x00000000)
weapon(0x0100, MODEL_CHRCMP150, 0x0016, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000)
chr(0x00000200, 0x17, 0x0082, BODY_G5_GUARD, HEAD_RANDOM, AILIST_INIT_TYPE1_GUARD, -1, -1, 200, 100, 0xa0802000, 0x00000000, TEAM_NONCOMBAT, SQUADRON_08, -1, 0, 0x00000000)
weapon(0x0100, MODEL_CHRCMP150, 0x0017, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000)
tag(0x0d, 1)
chr(0x00000400, CHR_CASS, 0x0088, BODY_CASSANDRA, HEAD_CASSANDRA, 0x0410, -1, -1, 200, 100, 0x0000c080, 0x00000000, TEAM_ENEMY, SQUADRON_02, 0x4a, 0, 0x00010000)
chr(0x00000400, CHR_BLONDE, 0x0087, BODY_MRBLONDE, HEAD_MRBLONDE, 0x0410, -1, -1, 200, 100, 0x0000c080, 0x00000000, TEAM_ENEMY, SQUADRON_02, 0x4b, 0, 0x00010000)
chr(0x00000400, CHR_INTRO_VICTIM, 0x0009, BODY_G5_GUARD, HEAD_RANDOM, 0x0410, -1, -1, 1000, 100, 0x0000c200, 0x00000000, TEAM_ENEMY, SQUADRON_08, -1, 0, 0x00000000)
weapon(0x0100, MODEL_CHRCMP150, CHR_INTRO_VICTIM, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CMP150, 0x00ffffff, 0x00000000)
chr(0x00000500, CHR_TRENT, 0x003b, BODY_TRENT, HEAD_TRENT, 0x0411, -1, -1, 200, 100, 0x0000c080, 0x00000000, TEAM_ENEMY, SQUADRON_02, -1, 0, 0x00000000)
chr(0x00000500, CHR_STRIPES, 0x003c, BODY_STRIPES, HEAD_JON, 0x0411, -1, -1, 200, 100, 0x0000c080, 0x00000000, TEAM_ENEMY, SQUADRON_02, -1, 0, 0x00000000)
tag(OBJ_GENERATOR, 1)
multimonitor(0x0100, MODEL_PD_CONSOLE, 0x00d0, 0x000001e1, 0x00000001, 0x00010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x03030000)
tag(0x3f, 1)
door(0x0100, MODEL_DOOR2_G5, 0x009c, 0x10000000, 0x08000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, 0x00060000, 0x00000010, 0x00000258, 0x00000000, 0x00000000, 0x00000000, 0x012c0320, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000300, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_DOOR2_G5, 0x009d, 0x10000000, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, 0x00060000, 0x00000010, 0x00000258, 0x00000000, 0x00000000, 0x00000000, 0x012c0320, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
tag(0x40, -1)
door(0x0100, MODEL_DOOR2_G5, 0x00a2, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, 0x00060000, 0x00000000, 0x00000258, 0x00000000, 0x00000000, 0x00000000, 0x012c0320, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000300, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_DOOR2_G5, 0x00a3, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, 0x00060000, 0x00000000, 0x00000258, 0x00000000, 0x00000000, 0x00000000, 0x012c0320, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_DOOR2_G5, 0x00a4, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, 0x00060000, 0x00000000, 0x00000258, 0x00000000, 0x00000000, 0x00000000, 0x012c0320, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000300, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_DOOR2_G5, 0x00a5, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, 0x00060000, 0x00000000, 0x00000258, 0x00000000, 0x00000000, 0x00000000, 0x012c0320, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_DOOR2_G5, 0x00a6, 0x10000000, 0x08000800, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, 0x00060000, 0x00000020, 0x00000258, 0x00000000, 0x00000000, 0x00000000, 0x012c0320, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000300, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_DOOR2_G5, 0x00a7, 0x10000000, 0x10000800, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, 0x00060000, 0x00000020, 0x00000258, 0x00000000, 0x00000000, 0x00000000, 0x012c0320, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_DOOR2_G5, 0x00a8, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, 0x00060000, 0x00000000, 0x00000258, 0x00000000, 0x00000000, 0x00000000, 0x012c0320, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000300, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_DOOR2_G5, 0x00a9, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, 0x00060000, 0x00000000, 0x00000258, 0x00000000, 0x00000000, 0x00000000, 0x012c0320, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_DOOR2_G5, 0x00b3, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, 0x00060000, 0x00000000, 0x00000258, 0x00000000, 0x00000000, 0x00000000, 0x012c0320, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000300, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_DOOR2_G5, 0x00b4, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, 0x00060000, 0x00000000, 0x00000258, 0x00000000, 0x00000000, 0x00000000, 0x012c0320, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_DOOR2_G5, 0x00aa, 0x10000000, 0x28000800, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, 0x00060000, 0x00000020, 0x00000258, 0x00000000, 0x00000000, 0x00000000, 0x012c0320, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000300, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_DOOR2_G5, 0x00ab, 0x10000000, 0x30000800, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, 0x00060000, 0x00000020, 0x00000258, 0x00000000, 0x00000000, 0x00000000, 0x012c0320, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_DOOR2_G5, 0x00ac, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, 0x00060000, 0x00000000, 0x00000258, 0x00000000, 0x00000000, 0x00000000, 0x012c0320, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000300, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_DOOR2_G5, 0x00ad, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, 0x00060000, 0x00000000, 0x00000258, 0x00000000, 0x00000000, 0x00000000, 0x012c0320, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
tag(0x34, 4)
tag(0x35, 4)
tag(0x36, 4)
tag(0x37, 4)
door(0x0100, MODEL_DOOR1A_G5, 0x0099, 0x10000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000c000, 0x00010000, 0x00001999, 0x00014000, 0x00000666, 0x00000000, 0x00000004, 0x0000012c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00001800, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_DOOR1ATRI_G5, 0x0098, 0x10000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0001f8ac, 0x0002a0e5, 0x0000434a, 0x0003491f, 0x000010d2, 0x00000000, 0x00000004, 0x0000012c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_DOOR1B_G5, 0x009a, 0x10000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000c000, 0x00010000, 0x00001999, 0x00014000, 0x00000666, 0x00000000, 0x00000004, 0x0000012c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_DOOR1ATRI_G5, 0x009b, 0x10000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0001f8ac, 0x0002a0e5, 0x0000434a, 0x0003491f, 0x000010d2, 0x00000000, 0x00000004, 0x0000012c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xfffffffd, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
tag(0x33, 1)
door(0x0100, MODEL_DOOR1A_G5, 0x00a0, 0x10000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000c000, 0x00010000, 0x00001999, 0x00014000, 0x00000666, 0x00000000, 0x00000004, 0x0000012c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00001800, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_DOOR1ATRI_G5, 0x00a1, 0x10000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0001f8ac, 0x0002a0e5, 0x0000434a, 0x0003491f, 0x000010d2, 0x00000000, 0x00000004, 0x0000012c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_DOOR1B_G5, 0x009f, 0x10000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000c000, 0x00010000, 0x00001999, 0x00014000, 0x00000666, 0x00000000, 0x00000004, 0x0000012c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_DOOR1ATRI_G5, 0x009e, 0x10000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0001f8ac, 0x0002a0e5, 0x0000434a, 0x0003491f, 0x000010d2, 0x00000000, 0x00000004, 0x0000012c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xfffffffd, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
tag(0x43, -4)
tag(0x44, -4)
tag(0x45, -4)
tag(0x46, -4)
tag(0x3a, 1)
door(0x0100, MODEL_DOOR4A_G5, 0x00b5, 0x00000400, 0x00000000, 0x00000020, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x0000ffff, 0x00014000, 0x00001999, 0x00000000, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000300, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_DOOR4B_G5, 0x00b6, 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x0000ffff, 0x00014000, 0x00001999, 0x00000000, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
tag(0x41, 1)
door(0x0100, MODEL_G5CARLIFTDOOR, 0x00b7, 0x00000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x00001999, 0x00014000, 0x00000666, 0x00000000, 0x00000020, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000800, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_G5CARLIFTDOOR, 0x00b8, 0x00000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x00001999, 0x00014000, 0x00000666, 0x00080000, 0x00000020, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
tag(0x42, -1)
tag(OBJ_BACKUPDISK, 1)
stdobject(0x0100, MODEL_ZIGGYCARD, 0x004c, 0x012404e8, 0x00004000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000)
rename_object(-1, 0x0044, 0x181e, 0x181f, 0x1820, 0x1821, 0x1822, 0x0000, 0x0000) // "Obtain DAT tape."
tag(OBJ_DECODER, 1)
stdobject(0x0200, MODEL_CHRDOORDECODER, 0x0050, 0x00420408, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000)
tag(OBJ_LIGHTSWITCH, 1)
singlemonitor(0x0019, MODEL_G5_LASER_SWITCH, 0x00ed, 0x00000002, 0x00000000, 0x00010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffff06)
tag(0x03, 1)
singlemonitor(0x0019, MODEL_G5_LASER_SWITCH, 0x00e6, 0x00000002, 0x00000001, 0x00010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffff13)
tag(0x04, 1)
singlemonitor(0x0019, MODEL_G5_LASER_SWITCH, 0x00e8, 0x00000002, 0x00000001, 0x00010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffff13)
tag(0x05, 1)
singlemonitor(0x0019, MODEL_G5_LASER_SWITCH, 0x00e9, 0x00000002, 0x00000001, 0x00010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffff13)
tag(0x06, 1)
singlemonitor(0x0019, MODEL_G5_LASER_SWITCH, 0x00ea, 0x00000002, 0x00000001, 0x00010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffff13)
tag(0x12, 1)
singlemonitor(0x0019, MODEL_G5_ALARM, 0x00e7, 0x00000002, 0x00204000, 0x00010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffff04)
tag(0x13, 1)
singlemonitor(0x0019, MODEL_G5_ALARM, 0x00eb, 0x00000002, 0x00204000, 0x00010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffff04)
tag(OBJ_SAFEKEYPAD, 1)
singlemonitor(0x0019, MODEL_G5_LASER_SWITCH, 0x00ec, 0x00000002, 0x00000001, 0x00010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffff01)
tag(OBJ_SAFEDOOR, 1)
door(0x0100, MODEL_G5SAFEDOOR, 0x00c2, 0x10000010, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x005a0000, 0x03e80000, 0x00500000, 0x00500000, 0x00001999, 0x00000005, 0x00000040, 0x00000e10, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000300, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
tag(OBJ_CMP150_BOND, 1)
weapon(0x0100, MODEL_CHRCMP150, 0xffff, 0x40000000, 0x00000000, 0x00400000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_REMOTEMINE, 0x00ffffff, 0x00000000)
rename_object(-1, 0x0022, 0x1842, 0x1843, 0x1844, 0x1845, 0x1846, 0x0000, 0x0000) // ""
tag(OBJ_CMP150_COOP, 1)
weapon(0x0100, MODEL_CHRCMP150, 0xffff, 0x40000000, 0x00000000, 0x00400000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_REMOTEMINE, 0x00ffffff, 0x00000000)
rename_object(-1, 0x0022, 0x1842, 0x1843, 0x1844, 0x1845, 0x1846, 0x0000, 0x0000) // ""
glass(0x0100, MODEL_WINDOW, 0x00c0, 0x00000f62, 0x00100000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00000000)
glass(0x0100, MODEL_WINDOW, 0x00c1, 0x00000f62, 0x00100000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00000000)
glass(0x0100, MODEL_WINDOW, 0x00be, 0x00000f62, 0x00104000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00000000)
tag(0x22, 4)
tag(0x23, 4)
tag(0x24, 4)
tag(0x25, 4)
door(0x0100, MODEL_LASDOOR, 0x00d1, 0x46000400, 0x02020000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x0c00000b, 0x00000000, 0x0000003c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_LASDOOR, 0x00d2, 0x46000400, 0x02020000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x0c00000b, 0x00000000, 0x0000003c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_LASDOOR, 0x00d3, 0x46000400, 0x02020000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x0c00000b, 0x00000000, 0x0000003c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_LASDOOR, 0x00d4, 0x46000400, 0x02020000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x0c00000b, 0x00000000, 0x0000003c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
tag(0x26, 4)
tag(0x27, 4)
tag(0x28, 4)
tag(0x29, 4)
door(0x0100, MODEL_LASDOOR, 0x00d5, 0x46000400, 0x02020000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x0c00000b, 0x00000000, 0x0000003c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_LASDOOR, 0x00d6, 0x46000400, 0x02020000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x0c00000b, 0x00000000, 0x0000003c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_LASDOOR, 0x00d7, 0x46000400, 0x02020000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x0c00000b, 0x00000000, 0x0000003c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_LASDOOR, 0x00d8, 0x46000400, 0x02020000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x0c00000b, 0x00000000, 0x0000003c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
tag(0x2a, 4)
tag(0x2b, 4)
tag(0x2c, 4)
tag(0x2d, 4)
door(0x0100, MODEL_LASDOOR, 0x00d9, 0x46000400, 0x02020000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x0c00000b, 0x00000000, 0x0000003c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_LASDOOR, 0x00da, 0x46000400, 0x02020000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x0c00000b, 0x00000000, 0x0000003c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_LASDOOR, 0x00db, 0x46000400, 0x02020000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x0c00000b, 0x00000000, 0x0000003c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_LASDOOR, 0x00dc, 0x46000400, 0x02020000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x0c00000b, 0x00000000, 0x0000003c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
tag(0x2e, 4)
tag(0x2f, 4)
tag(0x30, 4)
tag(0x31, 4)
door(0x0100, MODEL_LASDOOR, 0x00dd, 0x46000400, 0x02020000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x0c00000b, 0x00000000, 0x0000003c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_LASDOOR, 0x00de, 0x46000400, 0x02020000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x0c00000b, 0x00000000, 0x0000003c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_LASDOOR, 0x00df, 0x46000400, 0x02020000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x0c00000b, 0x00000000, 0x0000003c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
door(0x0100, MODEL_LASDOOR, 0x00e0, 0x46000400, 0x02020000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x0c00000b, 0x00000000, 0x0000003c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xfffffffd, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
tag(OBJ_ESCAPEDOOR1, 2)
link_scenery(1, 0, 2)
door(0x0100, MODEL_G5_ESCDOORUP, 0x00f0, 0x13500d00, 0x20304300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00000000, 0x00010000, 0x03e80000, 0x03e80000, 0x00010000, 0x00000000, 0x00000080, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
stdobject(0x0100, MODEL_G5_ESCDOORUPBOOM, 0x00f1, 0x035204e8, 0x00304300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000)
tag(OBJ_ESCAPEDOOR2, 2)
link_scenery(1, 0, 2)
door(0x0100, MODEL_G5_ESCDOORDOWN, 0x00ee, 0x13500d00, 0x20304300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00000000, 0x00010000, 0x03e80000, 0x03e80000, 0x00010000, 0x00000000, 0x00000080, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
stdobject(0x0100, MODEL_G5_ESCDOORDOWNBOOM, 0x00ef, 0x035204e8, 0x00304300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000)
tag(OBJ_MINE1, 1)
remote_mine(0x0100, MODEL_CHRREMOTEMINE, 0x0077, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x22000000, 0x00000001, 0x00000000)
tag(OBJ_MINE2, 1)
remote_mine(0x0100, MODEL_CHRREMOTEMINE, 0x0078, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x22000000, 0x00000001, 0x00000000)
stdobject(0x0100, MODEL_DUMPSTER, 0x00f9, 0x000201e1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000)
stdobject(0x0100, MODEL_DUMPSTER, 0x00fa, 0x000201e1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000)
stdobject(0x0100, MODEL_DUMPSTER, 0x00fb, 0x000201e1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000)
stdobject(0x0100, MODEL_DUMPSTER, 0x00fc, 0x000201e1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000)
stdobject(0x0028, MODEL_BAFTA, 0x004d, 0x002000e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000)
stdobject(0x0133, MODEL_G5SMALLCHAIR, 0x00f3, 0x000005e1, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000)
stdobject(0x0133, MODEL_G5SMALLCHAIR, 0x00f4, 0x000005e1, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000)
stdobject(0x0133, MODEL_G5SMALLCHAIR, 0x00f5, 0x000005e1, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000)
stdobject(0x0133, MODEL_G5SMALLCHAIR, 0x00f6, 0x000005e1, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000)
stdobject(0x0133, MODEL_G5SMALLCHAIR, 0x00f7, 0x000005e1, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000)
tag(0x4a, 1)
stdobject(0x0185, MODEL_G5BIGCHAIR, 0x00f8, 0x000004e1, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000)
tag(0x4b, 1)
stdobject(0x0133, MODEL_G5SMALLCHAIR, 0x00f2, 0x000004e1, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000)
stdobject(0x0100, MODEL_G5_MAINFRAME, 0x00c8, 0x000005e1, 0x00000001, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000001f4, 0x00000000, 0x00000000, 0x0fff0000)
stdobject(0x0100, MODEL_G5_MAINFRAME, 0x00c9, 0x000005e1, 0x00000001, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000001f4, 0x00000000, 0x00000000, 0x0fff0000)
stdobject(0x0100, MODEL_G5_MAINFRAME, 0x00ca, 0x000005e1, 0x00000001, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000001f4, 0x00000000, 0x00000000, 0x0fff0000)
stdobject(0x0100, MODEL_G5_MAINFRAME, 0x00cb, 0x000005e1, 0x00000001, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000001f4, 0x00000000, 0x00000000, 0x0fff0000)
stdobject(0x0100, MODEL_G5_MAINFRAME, 0x00cc, 0x000005e1, 0x00000001, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000001f4, 0x00000000, 0x00000000, 0x0fff0000)
stdobject(0x0100, MODEL_G5_MAINFRAME, 0x00cd, 0x000005e1, 0x00000001, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000001f4, 0x00000000, 0x00000000, 0x0fff0000)
stdobject(0x0100, MODEL_G5_MAINFRAME, 0x00ce, 0x000005e1, 0x00000001, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000001f4, 0x00000000, 0x00000000, 0x0fff0000)
stdobject(0x0100, MODEL_G5_MAINFRAME, 0x00cf, 0x000005e1, 0x00000001, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000001f4, 0x00000000, 0x00000000, 0x0fff0000)
tag(0x3c, 1)
weapon(0x0080, MODEL_MULTI_AMMO_CRATE, 0x0095, 0x00000101, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_NBOMB, 0x00ffffff, 0x00000000)
tag(0x3b, 1)
shield(0x0100, MODEL_CHRSHIELD, 0x0096, 0x00000001, 0x000000e0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00010000, 0x00000000, 0x00000000)
tag(0x49, 1)
shield(0x0100, MODEL_CHRSHIELD, 0x0056, 0x00000001, 0x000000c0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00010000, 0x00000000, 0x00000000)
endprops
};
s32 intro[] = {
intro_weapon(WEAPON_FALCON2_SILENCER, -1)
ammo(AMMOTYPE_PISTOL, 100)
ammo(AMMOTYPE_NBOMB, 6)
outfit(OUTFIT_LEATHER)
intro_weapon(WEAPON_DOORDECODER, -1)
intro_weapon(WEAPON_CAMSPY, -1)
spawn(0x0083)
endintro
};
s32 path00[] = {
0x0015,
0x0014,
0x0019,
0x0018,
0x0019,
0x0014,
-1,
};
s32 path01[] = {
0x0023,
0x0025,
0x0020,
0x001a,
0x001c,
0x001a,
0x0020,
0x0025,
-1,
};
s32 path02[] = {
0x0037,
0x003f,
0x0043,
0x0041,
0x0040,
0x0042,
0x0045,
0x0046,
0x0045,
0x0042,
0x0040,
0x0041,
0x0043,
0x003f,
-1,
};
s32 path03[] = {
0x0027,
0x0028,
0x0029,
0x002a,
0x002d,
0x002e,
0x002d,
0x002a,
0x0029,
0x0028,
0x0027,
0x0026,
-1,
};
u8 func0409_start_path00[] = {
set_chr_dodge_rating(2, 0x0a)
set_accuracy(5)
set_reaction_speed(30)
set_chr_maxdamage(CHR_SELF, 40)
add_health_or_armor(0)
set_recovery_speed(0)
set_shield(0)
assign_path(0)
start_path
set_ailist(CHR_SELF, GAILIST_UNALERTED_0004)
endlist
};
u8 func040a_start_path01[] = {
set_chr_dodge_rating(2, 0x0a)
set_accuracy(5)
set_reaction_speed(30)
set_chr_maxdamage(CHR_SELF, 40)
add_health_or_armor(0)
set_recovery_speed(0)
set_shield(0)
assign_path(1)
start_path
set_ailist(CHR_SELF, GAILIST_UNALERTED_0004)
endlist
};
u8 func040b_start_path02[] = {
set_chr_dodge_rating(2, 0x0a)
set_accuracy(5)
set_reaction_speed(30)
set_chr_maxdamage(CHR_SELF, 40)
add_health_or_armor(0)
set_recovery_speed(0)
set_shield(0)
assign_path(2)
start_path
set_ailist(CHR_SELF, GAILIST_UNALERTED_0004)
endlist
};
u8 func040c_start_path03[] = {
set_chr_dodge_rating(2, 0x0a)
set_accuracy(5)
set_reaction_speed(30)
set_chr_maxdamage(CHR_SELF, 40)
add_health_or_armor(0)
set_recovery_speed(0)
set_shield(0)
assign_path(3)
start_path
set_ailist(CHR_SELF, GAILIST_UNALERTED_0004)
endlist
};
u8 func1008_check_generator[] = {
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_GENERATOR, /*goto*/ 0x08)
if_object_in_good_condition(OBJ_GENERATOR, /*goto*/ 0x2c)
if_stage_flag_eq(STAGEFLAG_GENERATOR_SHUT_DOWN, TRUE, /*goto*/ 0x2c)
// Destroyed
mute_channel(CHANNEL_4)
if_difficulty_lt(DIFF_PA, /*goto*/ 0x06)
message(CHR_BOND, 0x1818) // "Mission critical object destroyed."
set_stage_flag(STAGEFLAG_GENERATOR_DESTROYED)
label(0x06)
set_ailist(CHR_SELF, GAILIST_IDLE)
label(0x2c)
reloop(0x04)
// Generator activated
label(0x08)
if_stage_flag_eq(STAGEFLAG_GENERATOR_SHUT_DOWN2, TRUE, /*goto*/ 0x09)
set_object_image(OBJ_GENERATOR, 0x00, 0x14)
set_object_image(OBJ_GENERATOR, 0x01, 0x14)
mute_channel(CHANNEL_4)
mute_channel(CHANNEL_0)
assign_sound(0x8147, CHANNEL_0)
control_sound_from_object(CHANNEL_0, OBJ_GENERATOR, TRUE)
message(CHR_P1P2, 0x1819) // "Damping field generator shut down."
set_stage_flag(STAGEFLAG_GENERATOR_SHUT_DOWN2)
set_stage_flag(STAGEFLAG_GENERATOR_SHUT_DOWN)
reloop(0x04)
label(0x09)
message(CHR_P1P2, 0x181a) // "Generator cannot be restarted."
endloop(0x04)
endlist
};
u8 func1003_laser_switch_1[] = {
assign_sound(0x8119, CHANNEL_0)
play_sound_from_object(CHANNEL_0, OBJ_LASER_1A, 0x012c, 0x0190)
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_LASERSWITCH1, /*goto*/ 0x08)
if_object_in_good_condition(OBJ_LASERSWITCH1, /*goto*/ 0x2c)
if_stage_flag_eq(STAGEFLAG_LASERSET1_DISABLED, TRUE, /*goto*/ 0x2c)
message(CHR_BOND, 0x1818) // "Mission critical object destroyed."
set_stage_flag(STAGEFLAG_LASERSWITCH1_DESTROYED)
set_ailist(CHR_SELF, GAILIST_IDLE)
label(0x2c)
reloop(0x04)
// Activated/deactivated
label(0x08)
if_stage_flag_eq(STAGEFLAG_LASERSET1_DISABLED, TRUE, /*goto*/ 0x09)
// Deactivated
set_object_image(OBJ_LASERSWITCH1, 0x00, 0x14)
message(CHR_P1P2, 0x181b) // "Laser grid unit shut down."
set_stage_flag(STAGEFLAG_LASERSET1_DISABLED)
open_door(OBJ_LASER_1A)
open_door(OBJ_LASER_1B)
open_door(OBJ_LASER_1C)
open_door(OBJ_LASER_1D)
yield
set_object_flag(OBJ_LASER_1A, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_1B, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_1C, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_1D, OBJFLAG_40000000)
assign_sound(0x043f, CHANNEL_7)
play_sound_from_entity(CHANNEL_7, OBJ_LASERSWITCH1, 0x012c, 0x0190, 0x00)
mute_channel(CHANNEL_0)
assign_sound(0x01cd, CHANNEL_0)
play_sound_from_entity(CHANNEL_0, OBJ_LASER_1A, 0x012c, 0x0190, 0x00)
goto_next(0x0a)
// Activated
label(0x09)
message(CHR_P1P2, 0x181c) // "Laser grid unit activated."
unset_stage_flag(STAGEFLAG_LASERSET1_DISABLED)
set_object_image(OBJ_LASERSWITCH1, 0x00, 0x13)
close_door(OBJ_LASER_1A)
close_door(OBJ_LASER_1B)
close_door(OBJ_LASER_1C)
close_door(OBJ_LASER_1D)
assign_sound(0x043f, CHANNEL_7)
play_sound_from_entity(CHANNEL_7, OBJ_LASERSWITCH1, 0x012c, 0x0190, 0x00)
assign_sound(0x8119, CHANNEL_0)
play_sound_from_object(CHANNEL_0, OBJ_LASER_1A, 0x012c, 0x0190)
goto_next(0x0a)
label(0x0a)
restart_timer
beginloop(0x0b)
if_timer_gt(120, /*goto*/ 0x06)
endloop(0x0b)
label(0x06)
endloop(0x04)
endlist
};
u8 func1004_laser_switch_2[] = {
assign_sound(0x8119, CHANNEL_1)
play_sound_from_object(CHANNEL_1, OBJ_LASER_2A, 0x012c, 0x0190)
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_LASERSWITCH2, /*goto*/ 0x08)
if_object_in_good_condition(OBJ_LASERSWITCH2, /*goto*/ 0x2c)
if_stage_flag_eq(STAGEFLAG_LASERSET2_DISABLED, TRUE, /*goto*/ 0x2c)
message(CHR_BOND, 0x1818) // "Mission critical object destroyed."
set_stage_flag(STAGEFLAG_LASERSWITCH2_DESTROYED)
set_ailist(CHR_SELF, GAILIST_IDLE)
label(0x2c)
reloop(0x04)
// Activated/deactivated
label(0x08)
dprint 'S','W','I','T','C','H',' ','2',0,
if_stage_flag_eq(STAGEFLAG_LASERSET2_DISABLED, TRUE, /*goto*/ 0x09)
// Deactivated
set_object_image(OBJ_LASERSWITCH2, 0x00, 0x14)
message(CHR_P1P2, 0x181b) // "Laser grid unit shut down."
set_stage_flag(STAGEFLAG_LASERSET2_DISABLED)
open_door(OBJ_LASER_2A)
open_door(OBJ_LASER_2B)
open_door(OBJ_LASER_2C)
open_door(OBJ_LASER_2D)
yield
set_object_flag(OBJ_LASER_2A, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_2B, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_2C, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_2D, OBJFLAG_40000000)
assign_sound(0x043f, CHANNEL_7)
play_sound_from_entity(CHANNEL_7, OBJ_LASERSWITCH2, 0x012c, 0x0190, 0x00)
mute_channel(CHANNEL_1)
assign_sound(0x01cd, CHANNEL_1)
play_sound_from_entity(CHANNEL_1, OBJ_LASER_2A, 0x012c, 0x0190, 0x00)
goto_next(0x0a)
// Activated
label(0x09)
set_object_image(OBJ_LASERSWITCH2, 0x00, 0x13)
message(CHR_P1P2, 0x181c) // "Laser grid unit activated."
unset_stage_flag(STAGEFLAG_LASERSET2_DISABLED)
close_door(OBJ_LASER_2A)
close_door(OBJ_LASER_2B)
close_door(OBJ_LASER_2C)
close_door(OBJ_LASER_2D)
assign_sound(0x043f, CHANNEL_7)
play_sound_from_entity(CHANNEL_7, OBJ_LASERSWITCH2, 0x012c, 0x0190, 0x00)
assign_sound(0x8119, CHANNEL_1)
play_sound_from_object(CHANNEL_1, OBJ_LASER_2A, 0x012c, 0x0190)
goto_next(0x0a)
label(0x0a)
restart_timer
beginloop(0x0b)
if_timer_gt(120, /*goto*/ 0x06)
endloop(0x0b)
label(0x06)
endloop(0x04)
endlist
};
u8 func1005_laser_switch_3[] = {
assign_sound(0x8119, CHANNEL_2)
play_sound_from_object(CHANNEL_2, OBJ_LASER_3A, 0x012c, 0x0190)
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_LASERSWITCH3, /*goto*/ 0x08)
if_object_in_good_condition(OBJ_LASERSWITCH3, /*goto*/ 0x2c)
if_stage_flag_eq(STAGEFLAG_LASERSET3_DISABLED, TRUE, /*goto*/ 0x2c)
message(CHR_BOND, 0x1818) // "Mission critical object destroyed."
set_stage_flag(STAGEFLAG_LASERSWITCH3_DESTROYED)
set_ailist(CHR_SELF, GAILIST_IDLE)
label(0x2c)
reloop(0x04)
// Activated/deactivated
label(0x08)
if_stage_flag_eq(STAGEFLAG_LASERSET3_DISABLED, TRUE, /*goto*/ 0x09)
// Deactivated
set_object_image(OBJ_LASERSWITCH3, 0x00, 0x14)
message(CHR_P1P2, 0x181b) // "Laser grid unit shut down."
set_stage_flag(STAGEFLAG_LASERSET3_DISABLED)
open_door(OBJ_LASER_3A)
open_door(OBJ_LASER_3B)
open_door(OBJ_LASER_3C)
open_door(OBJ_LASER_3D)
yield
set_object_flag(OBJ_LASER_3A, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_3B, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_3C, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_3D, OBJFLAG_40000000)
assign_sound(0x043f, CHANNEL_7)
play_sound_from_entity(CHANNEL_7, OBJ_LASERSWITCH3, 0x012c, 0x0190, 0x00)
mute_channel(CHANNEL_2)
assign_sound(0x01cd, CHANNEL_2)
play_sound_from_entity(CHANNEL_2, OBJ_LASER_3A, 0x012c, 0x0190, 0x00)
goto_next(0x0a)
// Activated
label(0x09)
set_object_image(OBJ_LASERSWITCH3, 0x00, 0x13)
message(CHR_P1P2, 0x181c) // "Laser grid unit activated."
unset_stage_flag(STAGEFLAG_LASERSET3_DISABLED)
close_door(OBJ_LASER_3A)
close_door(OBJ_LASER_3B)
close_door(OBJ_LASER_3C)
close_door(OBJ_LASER_3D)
assign_sound(0x043f, CHANNEL_7)
play_sound_from_entity(CHANNEL_7, OBJ_LASERSWITCH3, 0x012c, 0x0190, 0x00)
assign_sound(0x8119, CHANNEL_2)
play_sound_from_object(CHANNEL_2, OBJ_LASER_3A, 0x012c, 0x0190)
goto_next(0x0a)
label(0x0a)
restart_timer
beginloop(0x0b)
if_timer_gt(120, /*goto*/ 0x06)
endloop(0x0b)
label(0x06)
endloop(0x04)
endlist
};
u8 func1006_laser_switch_4[] = {
assign_sound(0x811a, CHANNEL_3)
play_sound_from_object(CHANNEL_3, OBJ_LASER_4A, 0x012c, 0x0190)
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_LASERSWITCH4, /*goto*/ 0x08)
if_object_in_good_condition(OBJ_LASERSWITCH4, /*goto*/ 0x2c)
if_stage_flag_eq(STAGEFLAG_LASERSET4_DISABLED, TRUE, /*goto*/ 0x2c)
message(CHR_BOND, 0x1818) // "Mission critical object destroyed."
set_stage_flag(STAGEFLAG_LASERSWITCH4_DESTROYED)
set_ailist(CHR_SELF, GAILIST_IDLE)
label(0x2c)
reloop(0x04)
// Activated/deactivated
label(0x08)
if_stage_flag_eq(STAGEFLAG_LASERSET4_DISABLED, TRUE, /*goto*/ 0x09)
// Deactivated
set_object_image(OBJ_LASERSWITCH4, 0x00, 0x14)
message(CHR_P1P2, 0x181b) // "Laser grid unit shut down."
set_stage_flag(STAGEFLAG_LASERSET4_DISABLED)
open_door(OBJ_LASER_4A)
open_door(OBJ_LASER_4B)
open_door(OBJ_LASER_4C)
open_door(OBJ_LASER_4D)
yield
set_object_flag(OBJ_LASER_4A, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_4B, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_4C, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_4D, OBJFLAG_40000000)
assign_sound(0x043f, CHANNEL_7)
play_sound_from_entity(CHANNEL_7, OBJ_LASERSWITCH4, 0x012c, 0x0190, 0x00)
mute_channel(CHANNEL_3)
assign_sound(0x01cd, CHANNEL_3)
play_sound_from_entity(CHANNEL_3, OBJ_LASER_4A, 0x012c, 0x0190, 0x00)
goto_next(0x0a)
// Activated
label(0x09)
set_object_image(OBJ_LASERSWITCH4, 0x00, 0x13)
message(CHR_P1P2, 0x181c) // "Laser grid unit activated."
unset_stage_flag(STAGEFLAG_LASERSET4_DISABLED)
close_door(OBJ_LASER_4A)
close_door(OBJ_LASER_4B)
close_door(OBJ_LASER_4C)
close_door(OBJ_LASER_4D)
assign_sound(0x043f, CHANNEL_7)
play_sound_from_entity(CHANNEL_7, OBJ_LASERSWITCH4, 0x012c, 0x0190, 0x00)
assign_sound(0x811a, CHANNEL_3)
play_sound_from_object(CHANNEL_3, OBJ_LASER_4A, 0x012c, 0x0190)
goto_next(0x0a)
label(0x0a)
restart_timer
beginloop(0x0b)
if_timer_gt(120, /*goto*/ 0x06)
endloop(0x0b)
label(0x06)
endloop(0x04)
endlist
};
u8 func1007_init_lasers[] = {
yield
// Wait for cutscene to finish
beginloop(0x8f)
if_camera_animating(/*goto*/ 0x2c)
goto_next(0x06)
label(0x2c)
endloop(0x8f)
label(0x06)
if_difficulty_lt(DIFF_SA, /*goto*/ 0x0d)
// SA/PA - bring up lasers
close_door(OBJ_LASER_1A)
close_door(OBJ_LASER_2A)
close_door(OBJ_LASER_3A)
close_door(OBJ_LASER_4A)
close_door(OBJ_LASER_1B)
close_door(OBJ_LASER_2B)
close_door(OBJ_LASER_3B)
close_door(OBJ_LASER_4B)
close_door(OBJ_LASER_1C)
close_door(OBJ_LASER_2C)
close_door(OBJ_LASER_3C)
close_door(OBJ_LASER_4C)
close_door(OBJ_LASER_1D)
close_door(OBJ_LASER_2D)
close_door(OBJ_LASER_3D)
close_door(OBJ_LASER_4D)
// Wait until all lasers disabled, show message and set flag
beginloop(0x04)
if_stage_flag_eq(STAGEFLAG_LASERSET1_DISABLED, FALSE, /*goto*/ 0x2c)
if_stage_flag_eq(STAGEFLAG_LASERSET2_DISABLED, FALSE, /*goto*/ 0x2c)
if_stage_flag_eq(STAGEFLAG_LASERSET3_DISABLED, FALSE, /*goto*/ 0x2c)
if_stage_flag_eq(STAGEFLAG_LASERSET4_DISABLED, FALSE, /*goto*/ 0x2c)
if_stage_flag_eq(STAGEFLAG_ALL_LASERS_DISABLED, TRUE, /*goto*/ 0x2c)
message(CHR_BOND, 0x181d) // "All laser grid systems shut down."
set_stage_flag(STAGEFLAG_ALL_LASERS_DISABLED)
label(0x2c)
endloop(0x04)
// Agent - take down lasers
label(0x0d)
set_object_image(OBJ_LASERSWITCH1, 0x00, 0x14)
set_object_image(OBJ_LASERSWITCH2, 0x00, 0x14)
set_object_image(OBJ_LASERSWITCH3, 0x00, 0x14)
set_object_image(OBJ_LASERSWITCH4, 0x00, 0x14)
open_door(OBJ_LASER_1A)
open_door(OBJ_LASER_2A)
open_door(OBJ_LASER_3A)
open_door(OBJ_LASER_4A)
open_door(OBJ_LASER_1B)
open_door(OBJ_LASER_2B)
open_door(OBJ_LASER_3B)
open_door(OBJ_LASER_4B)
open_door(OBJ_LASER_1C)
open_door(OBJ_LASER_2C)
open_door(OBJ_LASER_3C)
open_door(OBJ_LASER_4C)
open_door(OBJ_LASER_1D)
open_door(OBJ_LASER_2D)
open_door(OBJ_LASER_3D)
open_door(OBJ_LASER_4D)
yield
set_object_flag(OBJ_LASER_1A, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_2A, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_3A, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_4A, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_1B, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_2B, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_3B, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_4B, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_1C, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_2C, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_3C, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_4C, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_1D, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_2D, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_3D, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_4D, OBJFLAG_40000000)
set_stage_flag(STAGEFLAG_LASERSET1_DISABLED)
set_stage_flag(STAGEFLAG_LASERSET2_DISABLED)
set_stage_flag(STAGEFLAG_LASERSET3_DISABLED)
set_stage_flag(STAGEFLAG_LASERSET4_DISABLED)
set_stage_flag(STAGEFLAG_ALL_LASERS_DISABLED)
label(0x0e)
yield
open_door(OBJ_LASER_1A)
open_door(OBJ_LASER_2A)
open_door(OBJ_LASER_3A)
open_door(OBJ_LASER_4A)
open_door(OBJ_LASER_1B)
open_door(OBJ_LASER_2B)
open_door(OBJ_LASER_3B)
open_door(OBJ_LASER_4B)
open_door(OBJ_LASER_1C)
open_door(OBJ_LASER_2C)
open_door(OBJ_LASER_3C)
open_door(OBJ_LASER_4C)
open_door(OBJ_LASER_1D)
open_door(OBJ_LASER_2D)
open_door(OBJ_LASER_3D)
open_door(OBJ_LASER_4D)
yield
mute_channel(CHANNEL_0)
mute_channel(CHANNEL_1)
mute_channel(CHANNEL_2)
mute_channel(CHANNEL_3)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1009_spawner_during_decode[] = {
// Wait for alarm or decoder attached
beginloop(0x04)
if_stage_flag_eq(STAGEFLAG_DECODER_ATTACHED, TRUE, /*goto*/ 0x06)
if_alarm_active(/*goto*/ 0x61)
endloop(0x04)
// Decoder is attached
label(0x06)
yield
yield
// Wait 8.3 seconds
restart_timer
beginloop(0x08)
if_timer_gt(500, /*goto*/ 0x06)
endloop(0x08)
label(0x06)
activate_alarm
// Spawn two swat guards
label(0x61)
try_spawn_chr_at_pad(BODY_G5_SWAT_GUARD, HEAD_RANDOM, 0x0058, 0x0401, 0x00000200, /*goto*/ 0x06)
label(0x06)
try_spawn_chr_at_pad(BODY_G5_SWAT_GUARD, HEAD_RANDOM, 0x003f, 0x0402, 0x00000200, /*goto*/ 0x06)
label(0x06)
// Every half second, use RNG to decide whether to consider spawning more.
// 55/255 chance of passing.
label(0x09)
restart_timer
call_rng
beginloop(0x0a)
if_rand_gt(200, /*goto*/ 0x06)
if_timer_gt(30, /*goto*/ 0x2c)
endloop(0x0a)
label(0x2c)
reloop(0x09)
label(0x06)
if_difficulty_lt(DIFF_SA, /*goto*/ 0x55)
if_difficulty_lt(DIFF_PA, /*goto*/ 0x56)
if_num_chrs_in_squadron_gt(5, 0x09, /*goto*/ 0x2c)
if_kill_count_gt(50, /*goto*/ 0x2c)
goto_next(0x57)
// Agent
label(0x55)
if_num_chrs_in_squadron_gt(3, 0x09, /*goto*/ 0x2c)
if_kill_count_gt(50, /*goto*/ 0x2c)
goto_next(0x57)
// Special Agent
label(0x56)
if_num_chrs_in_squadron_gt(4, 0x09, /*goto*/ 0x2c)
if_kill_count_gt(50, /*goto*/ 0x2c)
goto_next(0x57)
// All difficulties
label(0x57)
call_rng
if_rand_gt(128, /*goto*/ 0x0b)
if_stage_flag_eq(STAGEFLAG_VISITED_TOP_DOOR, TRUE, /*goto*/ 0x2c)
try_spawn_chr_at_pad(BODY_G5_SWAT_GUARD, HEAD_RANDOM, 0x0058, 0x0401, 0x00000200, /*goto*/ 0x06)
label(0x06)
goto_next(0x0d)
label(0x2c)
dprint 'S','Q','U','A','D',' ','F','U','L','L',0,
reloop(0x09)
label(0x0b)
try_spawn_chr_at_pad(BODY_G5_SWAT_GUARD, HEAD_RANDOM, 0x003f, 0x0402, 0x00000200, /*goto*/ 0x06)
label(0x06)
label(0x0d)
restart_timer
beginloop(0x0e)
if_timer_gt(30, /*goto*/ 0x06)
endloop(0x0e)
label(0x06)
endloop(0x09)
endlist
};
#define init_swat \
set_chr_hiddenflag(CHR_SELF, CHRHFLAG_00400000) \
set_self_flag_bankx(CHRFLAG1_00080000, BANK_1) \
set_chr_dodge_rating(2, 0x0a) \
set_accuracy(15) \
set_reaction_speed(25) \
set_chr_maxdamage(CHR_SELF, 40) \
add_health_or_armor(0) \
set_recovery_speed(0) \
set_shield(0) \
try_equip_weapon(MODEL_CHRDY357, WEAPON_DY357MAGNUM, 0x10000000, /*goto*/ 0x06) \
label(0x06) \
set_chr_team(CHR_SELF, TEAM_ENEMY) \
set_squadron(SQUADRON_09) \
set_chr_chrflag(CHR_SELF, CHRCFLAG_KILLCOUNTABLE) \
set_self_flag_bankx(CHRFLAG0_00002000, BANK_0) \
set_self_flag_bankx(CHRFLAG0_00008000, BANK_0) \
set_alertness(90) \
set_self_chrflag(CHRCFLAG_00000200) \
rebuild_teams \
rebuild_squadrons \
run_to_pad(0x004e)
u8 func0401_init_swat1[] = {
init_swat
beginloop(0x08)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_sees_player(/*goto*/ 0x2c)
if_enemy_distance_lt_and_los(2540, /*goto*/ 0x2c)
if_chr_in_room(CHR_SELF, 0x00, 0x0050, /*goto*/ 0x06)
endloop(0x08)
label(0x2c)
set_ailist(CHR_SELF, GAILIST_UNALERTED)
label(0x06)
set_returnlist(CHR_SELF, GAILIST_UNALERTED)
set_ailist(CHR_SELF, GAILIST_ALERTED)
endlist
};
/**
* Same as above, but guards with this function will become unalerted if they
* lose sight of Jo regardless of what room they're in.
*/
u8 func0402_init_swat2[] = {
init_swat
beginloop(0x08)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_sees_player(/*goto*/ 0x2c)
if_enemy_distance_lt_and_los(2540, /*goto*/ 0x2c)
if_chr_in_room(CHR_SELF, 0x00, 0x0050, /*goto*/ 0x06)
if_chr_stopped(/*goto*/ 0x06)
endloop(0x08)
label(0x2c)
set_ailist(CHR_SELF, GAILIST_UNALERTED)
label(0x06)
set_returnlist(CHR_SELF, GAILIST_UNALERTED)
set_ailist(CHR_SELF, GAILIST_ALERTED)
endlist
};
u8 func100a_give_keycards[] = {
set_object_flag(OBJ_KEYCARD1, OBJFLAG_UNCOLLECTABLE)
set_object_flag2(OBJ_KEYCARD1, OBJFLAG2_INVISIBLE)
set_object_flag(OBJ_KEYCARD2, OBJFLAG_UNCOLLECTABLE)
set_object_flag2(OBJ_KEYCARD2, OBJFLAG2_INVISIBLE)
set_object_flag2(OBJ_CROSSBOW, OBJFLAG2_INVISIBLE)
set_object_flag(OBJ_CROSSBOW, OBJFLAG_UNCOLLECTABLE)
set_chr_chrflag(CHR_CLOAK_1A, CHRCFLAG_KILLCOUNTABLE)
set_chr_chrflag(CHR_CLOAK_1B, CHRCFLAG_KILLCOUNTABLE)
set_chr_chrflag(CHR_CLOAK_2A, CHRCFLAG_KILLCOUNTABLE)
set_chr_chrflag(CHR_CLOAK_2B, CHRCFLAG_KILLCOUNTABLE)
set_chr_chrflag(CHR_CLOAK_2C, CHRCFLAG_KILLCOUNTABLE)
set_chr_chrflag(CHR_CLOAK_2D, CHRCFLAG_KILLCOUNTABLE)
// Wait for trigger
beginloop(0x04)
if_stage_flag_eq(STAGEFLAG_CLOAK1_ONE_REMAINING, TRUE, /*goto*/ 0x2c)
endloop(0x04)
label(0x2c)
if_chr_dying(CHR_CLOAK_1A, /*goto*/ 0x06)
if_chr_death_animation_finished(CHR_CLOAK_1A, /*goto*/ 0x06)
if_chr_unloaded(CHR_CLOAK_1A, /*goto*/ 0x06)
// First cloacked guard is alive
give_object_to_chr(OBJ_KEYCARD1, CHR_CLOAK_1A)
give_object_to_chr(OBJ_CROSSBOW, CHR_CLOAK_1A)
set_target_chr(CHR_CLOAK_1A)
goto_next(0x2c)
// First cloaked guard is dead
label(0x06)
give_object_to_chr(OBJ_KEYCARD1, CHR_CLOAK_1B)
give_object_to_chr(OBJ_CROSSBOW, CHR_CLOAK_1B)
set_target_chr(CHR_CLOAK_1B)
label(0x2c)
unset_object_flag(OBJ_KEYCARD1, OBJFLAG_UNCOLLECTABLE)
unset_object_flag2(OBJ_KEYCARD1, OBJFLAG2_INVISIBLE)
unset_object_flag2(OBJ_CROSSBOW, OBJFLAG2_INVISIBLE)
unset_object_flag(OBJ_CROSSBOW, OBJFLAG_UNCOLLECTABLE)
// Wait for the chr who holds the keycard to die
beginloop(0x55)
if_chr_unloaded(CHR_TARGET, /*goto*/ 0x08)
if_chr_dying(CHR_TARGET, /*goto*/ 0x2c)
if_chr_death_animation_finished(CHR_TARGET, /*goto*/ 0x2c)
endloop(0x55)
label(0x2c)
set_object_flag2(OBJ_CROSSBOW, OBJFLAG2_INVISIBLE)
set_object_flag(OBJ_CROSSBOW, OBJFLAG_UNCOLLECTABLE)
hide_object(OBJ_CROSSBOW)
beginloop(0x08)
dprint 'C','H','E','C','K',' ','D','E','A','D',0,
if_stage_flag_eq(STAGEFLAG_CLOAK2_ONE_REMAINING, TRUE, /*goto*/ 0x2c)
endloop(0x08)
// Second room
label(0x2c)
if_chr_dying(CHR_CLOAK_2A, /*goto*/ 0x06)
if_chr_death_animation_finished(CHR_CLOAK_2A, /*goto*/ 0x06)
if_chr_unloaded(CHR_CLOAK_2A, /*goto*/ 0x06)
// 2A alive
give_object_to_chr(OBJ_KEYCARD2, CHR_CLOAK_2A)
dprint 'G','I','V','E',' ','T','O','4',0,
goto_next(0x2c)
// 2A dead
label(0x06)
if_chr_dying(CHR_CLOAK_2B, /*goto*/ 0x06)
if_chr_death_animation_finished(CHR_CLOAK_2B, /*goto*/ 0x06)
if_chr_unloaded(CHR_CLOAK_2B, /*goto*/ 0x06)
give_object_to_chr(OBJ_KEYCARD2, CHR_CLOAK_2B)
dprint 'G','I','V','E',' ','T','O','5',0,
goto_next(0x2c)
// 2B dead
label(0x06)
if_chr_dying(CHR_CLOAK_2C, /*goto*/ 0x06)
if_chr_death_animation_finished(CHR_CLOAK_2C, /*goto*/ 0x06)
if_chr_unloaded(CHR_CLOAK_2C, /*goto*/ 0x06)
give_object_to_chr(OBJ_KEYCARD2, CHR_CLOAK_2C)
dprint 'G','I','V','E',' ','T','O','6',0,
goto_next(0x2c)
// 2C dead
label(0x06)
give_object_to_chr(OBJ_KEYCARD2, CHR_CLOAK_2D)
dprint 'G','I','V','E',' ','T','O','7',0,
label(0x2c)
unset_object_flag(OBJ_KEYCARD2, OBJFLAG_UNCOLLECTABLE)
unset_object_flag2(OBJ_KEYCARD2, OBJFLAG2_INVISIBLE)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func100b_check_backup_collected[] = {
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
if_chr_has_object(CHR_P1P2, OBJ_BACKUPDISK, /*goto*/ 0x2c)
endloop(0x04)
label(0x2c)
set_stage_flag(STAGEFLAG_BACKUP_COLLECTED)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1002_set_ai[] = {
set_ailist(CHR_SELF, GAILIST_REBUILD_GROUPS)
endlist
};
u8 func1400_setup_counterop[] = {
yield
set_chr_team(CHR_ANTI, TEAM_ENEMY)
// On counterop SA and PA, give Joanna a CMP150
if_difficulty_lt(DIFF_SA, /*goto*/ 0x06)
give_object_to_chr(OBJ_CMP150_BOND, CHR_BOND)
give_object_to_chr(OBJ_CMP150_COOP, CHR_COOP)
label(0x06)
set_ailist(CHR_SELF, GAILIST_REBUILD_GROUPS)
endlist
};
u8 func100e_check_conspirators_alerted[] = {
// Wait for alarm
beginloop(0x04)
if_alarm_active(/*goto*/ 0x06)
reloop(0x04)
// These objects are doors
label(0x06)
unset_object_flag2(0x3f, OBJFLAG2_AICANNOTUSE)
unset_object_flag2(0x40, OBJFLAG2_AICANNOTUSE)
unset_object_flag2(0x41, OBJFLAG2_AICANNOTUSE)
unset_object_flag2(0x42, OBJFLAG2_AICANNOTUSE)
unset_object_flag2(0x43, OBJFLAG2_AICANNOTUSE)
unset_object_flag2(0x44, OBJFLAG2_AICANNOTUSE)
unset_object_flag2(0x45, OBJFLAG2_AICANNOTUSE)
unset_object_flag2(0x46, OBJFLAG2_AICANNOTUSE)
unset_object_flag2(0x34, OBJFLAG2_AICANNOTUSE)
unset_object_flag2(0x35, OBJFLAG2_AICANNOTUSE)
unset_object_flag2(0x36, OBJFLAG2_AICANNOTUSE)
unset_object_flag2(0x37, OBJFLAG2_AICANNOTUSE)
set_stage_flag(STAGEFLAG_ALARM_SOUNDING)
if_stage_flag_eq(STAGEFLAG_MEETING_STARTED, TRUE, /*goto*/ 0x06)
set_stage_flag(STAGEFLAG_CONSPIRATORS_ALERTED)
set_ailist(CHR_CASS, AILIST_RUN_FROM_MEETING)
set_ailist(0x1c, AILIST_RUN_FROM_MEETING) // chr doesn't exist
set_ailist(CHR_BLONDE, AILIST_RUN_FROM_MEETING)
message(CHR_BOND, 0x1829) // "Conspirators have been alerted."
// Wait until alarm not active
label(0x06)
beginloop(0x55)
if_alarm_active(/*goto*/ 0x2c)
goto_next(0x06)
label(0x2c)
endloop(0x55)
label(0x06)
unset_stage_flag(STAGEFLAG_ALARM_SOUNDING)
endloop(0x04)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func100f_alarm_switches[] = {
// Wait until player activated alarm switch
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_ALARM1, /*goto*/ 0x2c)
if_chr_activated_object(CHR_P1P2, OBJ_ALARM2, /*goto*/ 0x2c)
reloop(0x04)
label(0x2c)
if_stage_flag_eq(STAGEFLAG_ALARM_SOUNDING, TRUE, /*goto*/ 0x06)
message(CHR_P1P2, 0x182a) // "Alarm activated."
set_stage_flag(STAGEFLAG_ALARM_SOUNDING)
activate_alarm
reloop(0x04)
label(0x06)
message(CHR_P1P2, 0x182b) // "Alarm deactivated."
unset_stage_flag(STAGEFLAG_ALARM_SOUNDING)
deactivate_alarm
endloop(0x04)
endlist
};
u8 func1010_safe_cracking[] = {
// Wait for player to activate keypad or for it to be destroyed
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
if_object_in_good_condition(OBJ_SAFEKEYPAD, /*goto*/ 0x2c)
message(CHR_BOND, 0x1840) // "Mission critical object destroyed."
set_stage_flag(STAGEFLAG_SAFEKEYPAD_DESTROYED)
set_ailist(CHR_SELF, GAILIST_IDLE)
label(0x2c)
if_chr_activated_object(CHR_P1P2, OBJ_SAFEKEYPAD, /*goto*/ 0x2c)
reloop(0x04)
label(0x2c)
if_chr_weapon_equipped(CHR_P1P2, WEAPON_DOORDECODER, /*goto*/ 0x2c)
message(CHR_P1P2, 0x182c) // "Safe door is locked."
endloop(0x04)
label(0x2c)
message(CHR_P1P2, 0x182d) // "Door Decoder attached."
remove_weapon_from_inventory(WEAPON_DOORDECODER)
move_object_to_pad(OBJ_DECODER, 0x0075)
set_stage_flag(STAGEFLAG_DECODER_ATTACHED)
assign_sound(0x8144, CHANNEL_1)
play_sound_from_object(CHANNEL_1, OBJ_SAFEKEYPAD, 0x012c, 0x0190)
restart_timer
beginloop(0x09)
if_timer_gt(180, /*goto*/ 0x06)
endloop(0x09)
label(0x06)
speak(CHR_BOND, 0x1826, 0x7754, CHANNEL_5, COLOR_00_GREEN) // "INTRUDER ALERT - all security to the vault."
play_x_music(CHANNEL_10, 180)
yield
set_countdown_timer(60)
message(CHR_P1P2, 0x1824) // "Initiating cracking routines."
yield
show_countdown_timer
start_countdown_timer
restart_timer
beginloop(0x5e)
if_timer_gt(180, /*goto*/ 0x2c)
endloop(0x5e)
label(0x2c)
activate_alarm
beginloop(0x08)
if_object_in_good_condition(OBJ_SAFEKEYPAD, /*goto*/ 0x2c)
message(CHR_BOND, 0x1840) // "Mission critical object destroyed."
set_stage_flag(STAGEFLAG_SAFEKEYPAD_DESTROYED)
hide_countdown_timer
set_ailist(CHR_SELF, GAILIST_IDLE)
label(0x2c)
if_countdown_timer_lt(1, /*goto*/ 0x06)
endloop(0x08)
// Unlock
label(0x06)
mute_channel(CHANNEL_1)
assign_sound(0x8145, CHANNEL_1)
control_sound_from_object(CHANNEL_1, OBJ_SAFEKEYPAD, TRUE)
message(CHR_P1P2, 0x1825) // "Door Decoder finished - door unlocked."
unlock_door(OBJ_SAFEDOOR, 0x40)
unset_object_flag2(OBJ_SAFEDOOR, OBJFLAG2_AICANNOTUSE)
open_door(OBJ_SAFEDOOR)
hide_countdown_timer
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1012_check_for_end[] = {
// Wait until player on ending catwalk
beginloop(0x08)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0060, /*goto*/ 0x06)
if_chr_in_room(CHR_P1P2, 0x00, 0x0061, /*goto*/ 0x06)
reloop(0x08)
label(0x06)
if_chr_death_animation_finished(CHR_P1P2, /*goto*/ 0x2c)
if_chr_dying(CHR_P1P2, /*goto*/ 0x2c)
if_chr_unloaded(CHR_P1P2, /*goto*/ 0x2c)
goto_next(0x06)
label(0x2c)
endloop(0x08)
label(0x06)
set_stage_flag(STAGEFLAG_EXITED_BUILDING)
dprint 'I','N',' ','T','H','E',' ','E','L','E','V','A','T','O','R','\n',0,
set_invincible(CHR_BOND)
yield
yield
revoke_control(CHR_BOND, 4)
hide_countdown_timer
stop_countdown_timer
if_all_objectives_complete(/*goto*/ 0x53)
message(CHR_BOND, 0x1833) // "Objectives incomplete - MISSION FAILED."
label(0x2c)
restart_timer
beginloop(0x52)
if_timer_gt(280, /*goto*/ 0x2c)
endloop(0x52)
label(0x2c)
end_level
set_ailist(CHR_SELF, GAILIST_IDLE)
// Objectives complete
label(0x53)
if_chr_death_animation_finished(CHR_BOND, /*goto*/ 0x2c)
if_chr_dying(CHR_BOND, /*goto*/ 0x2c)
if_chr_unloaded(CHR_BOND, /*goto*/ 0x2c)
goto_next(0x06)
label(0x2c)
if_chr_death_animation_finished(CHR_COOP, /*goto*/ 0x2c)
if_chr_dying(CHR_COOP, /*goto*/ 0x2c)
if_chr_unloaded(CHR_COOP, /*goto*/ 0x2c)
goto_next(0x06)
label(0x2c)
end_level
set_ailist(CHR_SELF, GAILIST_IDLE)
// Mission complete
label(0x06)
set_ailist(CHR_SELF, AILIST_OUTRO)
endlist
};
u8 func1013_check_escape_doors[] = {
beginloop(0x04)
if_object_in_good_condition(OBJ_ESCAPEDOOR1, /*goto*/ 0x06)
goto_next(0x2c)
label(0x06)
if_object_in_good_condition(OBJ_ESCAPEDOOR2, /*goto*/ 0x06)
label(0x2c)
dprint 'S','T','A','R','T',' ','A','L','A','R','M','\n',0,
activate_alarm
set_ailist(CHR_SELF, GAILIST_IDLE)
reloop(0x04)
label(0x06)
endloop(0x04)
endlist
};
u8 func1014_check_camspy_location[] = {
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(0x00, /*camspy*/ 0x02, 0x0094, /*goto*/ 0x06)
endloop(0x04)
label(0x06)
if_stage_flag_eq(STAGEFLAG_CONSPIRATORS_ALERTED, TRUE, /*goto*/ 0x2c)
set_stage_flag(STAGEFLAG_MEETING_HOLOGRAPHED)
label(0x2c)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func100c_check_for_meeting_trigger[] = {
// Wait until meeting started then start cutscene
beginloop(0x00)
if_stage_flag_eq(STAGEFLAG_MEETING_HOLOGRAPHED, TRUE, /*goto*/ 0x06)
endloop(0x00)
label(0x06)
dprint 's','h','o','t',' ','1',0,
set_ailist(CHR_SELF, AILIST_MEETING_CUTSCENE)
endlist
};
u8 func0403_walk_from_meeting[] = {
walk_to_pad(0x0085)
beginloop(0x04)
if_chr_stopped(/*goto*/ 0x06)
endloop(0x04)
label(0x06)
remove_chr(CHR_SELF)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func0404_run_from_meeting[] = {
run_to_pad(0x0085)
beginloop(0x04)
if_chr_stopped(/*goto*/ 0x06)
endloop(0x04)
label(0x06)
remove_chr(CHR_SELF)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1001_objectives_failed_msg[] = {
yield
set_ailist(CHR_SELF, GAILIST_SHOW_OBJ_FAILED_MSG)
endlist
};
/**
* Monitor the laser states and unset the stage flags when they become enabled
* (ie. door is closed). This seems redundant because the flags are unset when
* the switches are used. Maybe they close after a long timeout or something.
*/
u8 func1017_check_lasers_closed[] = {
beginloop(0x04)
if_stage_flag_eq(STAGEFLAG_ALL_LASERS_DISABLED, TRUE, /*goto*/ 0x08)
if_stage_flag_eq(STAGEFLAG_MEETING_HOLOGRAPHED, TRUE, /*goto*/ 0x08)
if_door_state(OBJ_LASER_1A, (DOORSTATE_OPEN | DOORSTATE_CLOSING | DOORSTATE_OPENING), /*goto*/ 0x2c)
unset_stage_flag(STAGEFLAG_LASERSET1_DISABLED)
label(0x2c)
if_door_state(OBJ_LASER_2A, (DOORSTATE_OPEN | DOORSTATE_CLOSING | DOORSTATE_OPENING), /*goto*/ 0x2c)
unset_stage_flag(STAGEFLAG_LASERSET2_DISABLED)
label(0x2c)
if_door_state(OBJ_LASER_3A, (DOORSTATE_OPEN | DOORSTATE_CLOSING | DOORSTATE_OPENING), /*goto*/ 0x2c)
unset_stage_flag(STAGEFLAG_LASERSET3_DISABLED)
label(0x2c)
if_door_state(OBJ_LASER_4A, (DOORSTATE_OPEN | DOORSTATE_CLOSING | DOORSTATE_OPENING), /*goto*/ 0x2c)
unset_stage_flag(STAGEFLAG_LASERSET4_DISABLED)
label(0x2c)
endloop(0x04)
label(0x08)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func040d_intro[] = {
set_chr_chrflag(CHR_COOP, CHRCFLAG_HIDDEN)
set_chr_chrflag(CHR_ANTI, CHRCFLAG_HIDDEN)
set_music_track(MUSIC_G5_INTRO)
camera_movement(0x0165)
cmd0175(60)
set_chr_chrflag(CHR_BOND, CHRCFLAG_UNPLAYABLE)
set_chr_hiddenflag(CHR_BOND, CHRHFLAG_00020000)
chr_do_animation(0x0166, -1, -1, 0x06, 0x00, CHR_BOND, 4)
set_chr_chrflag(CHR_INTRO_VICTIM, CHRCFLAG_UNPLAYABLE)
unset_chr_chrflag(CHR_INTRO_VICTIM, CHRCFLAG_HIDDEN)
set_chr_hiddenflag(CHR_INTRO_VICTIM, CHRHFLAG_00020000)
chr_do_animation(0x0167, -1, -1, 0x06, 0x00, CHR_INTRO_VICTIM, 4)
restart_timer
set_cutscene_weapon(CHR_BOND, WEAPON_FALCON2_SILENCER, WEAPON_NONE)
fade_to_color(0x000000ff, 0)
fade_to_color(0x00000000, 110)
beginloop(0x55)
if_controller_button_pressed(/*goto*/ 0x54)
if_timer_gt(74, /*goto*/ 0x06)
endloop(0x55)
label(0x06)
play_sound(0x0161, CHANNEL_7)
beginloop(0x56)
if_controller_button_pressed(/*goto*/ 0x54)
if_timer_gt(100, /*goto*/ 0x06)
endloop(0x56)
label(0x06)
play_sound(0x0085, CHANNEL_7)
beginloop(0x57)
if_controller_button_pressed(/*goto*/ 0x54)
if_timer_gt(172, /*goto*/ 0x06)
endloop(0x57)
label(0x06)
play_sound(0x0163, CHANNEL_7)
beginloop(0x58)
if_controller_button_pressed(/*goto*/ 0x54)
if_timer_gt(173, /*goto*/ 0x06)
endloop(0x58)
label(0x06)
play_sound(0x0164, CHANNEL_6)
beginloop(0x59)
if_controller_button_pressed(/*goto*/ 0x54)
if_timer_gt(278, /*goto*/ 0x06)
endloop(0x59)
label(0x06)
play_sound(0x0161, CHANNEL_7)
beginloop(0x5a)
if_controller_button_pressed(/*goto*/ 0x54)
if_timer_gt(312, /*goto*/ 0x06)
endloop(0x5a)
label(0x06)
play_sound(0x0162, CHANNEL_7)
beginloop(0x5b)
if_controller_button_pressed(/*goto*/ 0x54)
if_timer_gt(356, /*goto*/ 0x06)
endloop(0x5b)
label(0x06)
play_sound(0x0163, CHANNEL_7)
beginloop(0x5c)
if_controller_button_pressed(/*goto*/ 0x54)
if_timer_gt(396, /*goto*/ 0x06)
endloop(0x5c)
label(0x06)
play_sound(0x0164, CHANNEL_7)
beginloop(0x5d)
if_controller_button_pressed(/*goto*/ 0x54)
if_timer_gt(434, /*goto*/ 0x06)
endloop(0x5d)
label(0x06)
play_sound(0x0161, CHANNEL_7)
beginloop(0x5e)
if_controller_button_pressed(/*goto*/ 0x54)
if_timer_gt(478, /*goto*/ 0x06)
endloop(0x5e)
label(0x06)
play_sound(0x0162, CHANNEL_7)
beginloop(0x60)
if_controller_button_pressed(/*goto*/ 0x54)
if_timer_gt(515, /*goto*/ 0x06)
endloop(0x60)
label(0x06)
play_sound(0x0163, CHANNEL_7)
beginloop(0x61)
if_controller_button_pressed(/*goto*/ 0x54)
if_timer_gt(560, /*goto*/ 0x06)
endloop(0x61)
label(0x06)
play_sound(0x0164, CHANNEL_7)
beginloop(0x65)
if_controller_button_pressed(/*goto*/ 0x54)
if_timer_gt(568, /*goto*/ 0x06)
endloop(0x65)
label(0x06)
play_sound(0x0162, CHANNEL_6)
beginloop(0x62)
if_controller_button_pressed(/*goto*/ 0x54)
if_timer_gt(595, /*goto*/ 0x06)
endloop(0x62)
label(0x06)
play_sound(0x0161, CHANNEL_7)
beginloop(0x63)
if_controller_button_pressed(/*goto*/ 0x54)
if_timer_gt(630, /*goto*/ 0x06)
endloop(0x63)
label(0x06)
play_sound(0x0162, CHANNEL_7)
beginloop(0x66)
if_controller_button_pressed(/*goto*/ 0x54)
if_timer_gt(638, /*goto*/ 0x06)
endloop(0x66)
label(0x06)
play_sound(0x0163, CHANNEL_6)
beginloop(0x68)
if_controller_button_pressed(/*goto*/ 0x54)
if_timer_gt(670, /*goto*/ 0x06)
endloop(0x68)
label(0x06)
play_sound(0x002e, CHANNEL_7)
beginloop(0x67)
if_controller_button_pressed(/*goto*/ 0x54)
if_timer_gt(670, /*goto*/ 0x06)
endloop(0x67)
label(0x06)
play_sound(0x0045, CHANNEL_6)
chr_drop_weapon(CHR_INTRO_VICTIM)
beginloop(0x69)
if_controller_button_pressed(/*goto*/ 0x54)
if_timer_gt(672, /*goto*/ 0x06)
endloop(0x69)
label(0x06)
play_sound(0x0087, CHANNEL_5)
beginloop(0x64)
if_controller_button_pressed(/*goto*/ 0x54)
if_timer_gt(702, /*goto*/ 0x06)
endloop(0x64)
label(0x06)
play_sound(0x0164, CHANNEL_6)
beginloop(0x6a)
if_controller_button_pressed(/*goto*/ 0x54)
if_timer_gt(718, /*goto*/ 0x06)
endloop(0x6a)
label(0x06)
play_sound(0x007a, CHANNEL_7)
beginloop(0x6b)
if_controller_button_pressed(/*goto*/ 0x54)
if_timer_gt(722, /*goto*/ 0x06)
endloop(0x6b)
label(0x06)
play_sound(0x007c, CHANNEL_6)
beginloop(0x6c)
if_controller_button_pressed(/*goto*/ 0x54)
if_timer_gt(764, /*goto*/ 0x06)
endloop(0x6c)
label(0x06)
play_sound(0x0082, CHANNEL_5)
beginloop(0x08)
if_camera_animating(/*goto*/ 0x2c)
goto_next(0x54)
label(0x2c)
if_controller_button_pressed(/*goto*/ 0x54)
label(0x2c)
endloop(0x08)
label(0x54)
unset_chr_chrflag(CHR_COOP, CHRCFLAG_HIDDEN)
unset_chr_chrflag(CHR_ANTI, CHRCFLAG_HIDDEN)
unset_chr_chrflag(CHR_BOND, CHRCFLAG_UNPLAYABLE)
set_chr_hiddenflag(CHR_BOND, CHRHFLAG_00020000)
chr_do_animation(0x0166, -2, -1, 0x06, 0x00, CHR_BOND, 2)
unset_chr_chrflag(CHR_INTRO_VICTIM, CHRCFLAG_UNPLAYABLE)
set_chr_hiddenflag(CHR_INTRO_VICTIM, CHRHFLAG_00020000)
set_chr_chrflag(CHR_INTRO_VICTIM, CHRCFLAG_INVINCIBLE_TO_GUNFIRE)
set_chr_chrflag(CHR_INTRO_VICTIM, CHRCFLAG_00010000)
chr_do_animation(0x0167, -2, -1, 0x06, 0x00, CHR_INTRO_VICTIM, 2)
restart_default_music
reset_ambience
enter_firstperson
chr_do_animation(0x022a, -1, -1, 0x06, 0x00, CHR_INTRO_VICTIM, 2)
chr_drop_weapon(CHR_INTRO_VICTIM)
yield
set_ailist(CHR_CLOAK_1A, AILIST_INIT_CLOAK1_GUARD)
set_ailist(CHR_CLOAK_1B, AILIST_INIT_CLOAK1_GUARD)
yield
kill(CHR_INTRO_VICTIM)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
// Used in both mid and outro cutscenes
#define wait_until(time, loopid) \
beginloop(loopid) \
if_controller_button_pressed(/*goto*/ 0x54) \
if_timer_gt(time, /*goto*/ 0x06) \
endloop(loopid) \
\
label(0x06)
u8 func040e_meeting_cutscene[] = {
deactivate_alarm
set_chr_chrflag(CHR_COOP, CHRCFLAG_HIDDEN)
set_chr_chrflag(CHR_ANTI, CHRCFLAG_HIDDEN)
set_music_track(MUSIC_G5_MIDCUTSCENE)
camera_movement(0x0191)
set_stage_flag(STAGEFLAG_MEETING_STARTED)
set_ailist(CHR_BLONDE, GAILIST_IDLE)
set_ailist(CHR_CASS, GAILIST_IDLE)
set_ailist(CHR_TRENT, GAILIST_IDLE)
set_ailist(CHR_STRIPES, GAILIST_IDLE)
set_chr_chrflag(CHR_BLONDE, CHRCFLAG_UNPLAYABLE)
unset_chr_chrflag(CHR_BLONDE, CHRCFLAG_HIDDEN)
set_chr_hiddenflag(CHR_BLONDE, CHRHFLAG_00020000)
chr_do_animation(0x0192, -1, -1, 0x06, 0x00, CHR_BLONDE, 4)
set_chr_chrflag(CHR_CASS, CHRCFLAG_UNPLAYABLE)
unset_chr_chrflag(CHR_CASS, CHRCFLAG_HIDDEN)
set_chr_hiddenflag(CHR_CASS, CHRHFLAG_00020000)
chr_do_animation(0x0193, -1, -1, 0x06, 0x00, CHR_CASS, 4)
set_chr_chrflag(CHR_TRENT, CHRCFLAG_UNPLAYABLE)
unset_chr_chrflag(CHR_TRENT, CHRCFLAG_HIDDEN)
set_chr_hiddenflag(CHR_TRENT, CHRHFLAG_00020000)
chr_do_animation(0x0194, -1, -1, 0x06, 0x00, CHR_TRENT, 4)
set_chr_chrflag(CHR_STRIPES, CHRCFLAG_UNPLAYABLE)
unset_chr_chrflag(CHR_STRIPES, CHRCFLAG_HIDDEN)
set_chr_hiddenflag(CHR_STRIPES, CHRHFLAG_00020000)
chr_do_animation(0x0195, -1, -1, 0x06, 0x00, CHR_STRIPES, 4)
restart_timer
beginloop(0x55)
if_timer_gt(240, /*goto*/ 0x06)
endloop(0x55)
label(0x06)
speak(CHR_BOND, 0x1848, 0x740c, CHANNEL_5, COLOR_04_ORANGE) // "We've recovered the sapient from Carrington and al..."
wait_until(752, 0x56)
play_sound(0x0161, CHANNEL_6)
wait_until(760, 0x57)
speak(CHR_BOND, 0x1849, 0x740d, CHANNEL_7, COLOR_03_RED) // "This will reduce its efficiency. My team will have..."
wait_until(813, 0x58)
play_sound(0x0162, CHANNEL_6)
wait_until(864, 0x59)
play_sound(0x0163, CHANNEL_5)
wait_until(1183, 0x5a)
play_sound(0x0164, CHANNEL_6)
wait_until(1466, 0x5b)
play_sound(0x0161, CHANNEL_6)
// Someone screwed up the labelling here...
// 5c was probably supposed to go here.
yield
if_controller_button_pressed(/*goto*/ 0x54)
if_timer_gt(1594, /*goto*/ 0x06)
goto_first(0x5c)
label(0x06)
play_sound(0x0162, CHANNEL_6)
wait_until(1638, 0x5c)
play_sound(0x0593, CHANNEL_6)
wait_until(1684, 0x5d)
speak(CHR_BOND, 0x184a, 0x740e, CHANNEL_5, COLOR_04_ORANGE) // "No one could have predicted that! And I resent bei..."
wait_until(1780, 0x5e)
play_sound_from_object2(CHANNEL_6, 0x3a, 0x01d5, 0x00, 0x00)
wait_until(2050, 0x60)
play_sound_from_object2(CHANNEL_7, 0x3a, 0x00ec, 0x00, 0x00)
wait_until(2070, 0x5f)
open_door(0x3a)
play_sound_from_object2(0x0a, 0x3a, 0x81b0, 0x00, 0x00)
wait_until(2195, 0x61)
play_sound(0x0171, CHANNEL_6)
wait_until(2227, 0x62)
play_sound(0x0172, CHANNEL_5)
wait_until(2272, 0x63)
play_sound(0x0173, CHANNEL_7)
wait_until(2291, 0x64)
play_sound(0x0161, CHANNEL_7)
wait_until(2316, 0x65)
speak(CHR_BOND, 0x184b, 0x740f, CHANNEL_7, COLOR_03_RED) // "The President turned down your request for the loa..."
wait_until(2342, 0x67)
play_sound(0x0162, CHANNEL_6)
close_door(0x3a)
wait_until(2387, 0x68)
play_sound(0x0163, CHANNEL_5)
wait_until(2406, 0x69)
play_sound(0x0163, CHANNEL_6)
wait_until(2521, 0x6a)
play_sound(0x0161, CHANNEL_5)
wait_until(2547, 0x6b)
play_sound(0x0162, CHANNEL_6)
wait_until(2584, 0x6c)
play_sound(0x0163, CHANNEL_7)
wait_until(2586, 0x6d)
play_sound(0x0164, CHANNEL_5)
wait_until(2617, 0x6e)
play_sound(0x0164, CHANNEL_5)
wait_until(2662, 0x70)
play_sound(0x0162, CHANNEL_6)
wait_until(2668, 0x71)
play_sound(0x0161, CHANNEL_5)
wait_until(2692, 0x6f)
speak(CHR_BOND, 0x184c, 0x7410, CHANNEL_7, COLOR_03_RED) // "Could it be you overestimated your influence over ..."
wait_until(2705, 0x72)
play_sound(0x0161, CHANNEL_6)
wait_until(2713, 0x73)
play_sound(0x0162, CHANNEL_5)
wait_until(2796, 0x74)
play_sound(0x0161, CHANNEL_6)
wait_until(2937, 0x75)
play_sound(0x0164, CHANNEL_6)
wait_until(2971, 0x76)
play_sound(0x0162, CHANNEL_6)
wait_until(3000, 0x77)
play_sound(0x0162, CHANNEL_6)
wait_until(3046, 0x78)
play_sound(0x0163, CHANNEL_5)
wait_until(3048, 0x79)
speak(CHR_BOND, 0x184d, 0x7411, CHANNEL_7, COLOR_05_GREEN) // "No! Perhaps I underestimated his resolve. We have ..."
wait_until(3186, 0x7a)
play_sound(0x0164, CHANNEL_6)
wait_until(3378, 0x7b)
play_sound(0x0162, CHANNEL_6)
wait_until(3429, 0x7c)
play_sound(0x0161, CHANNEL_6)
wait_until(3481, 0x7d)
play_sound(0x0162, CHANNEL_6)
wait_until(3557, 0x7e)
play_sound(0x0164, CHANNEL_6)
wait_until(3628, 0x7f)
play_sound(0x0163, CHANNEL_6)
wait_until(3813, 0x80)
play_sound(0x0161, CHANNEL_6)
wait_until(3916, 0x81)
play_sound(0x0162, CHANNEL_6)
wait_until(4070, 0x82)
speak(CHR_BOND, 0x184e, 0x7412, CHANNEL_7, COLOR_04_ORANGE) // "Ha! Assuming you don't get any interference. If Ca..."
wait_until(4312, 0x84)
play_sound(0x0163, CHANNEL_6)
wait_until(4370, 0x85)
play_sound(0x0164, CHANNEL_5)
wait_until(4440, 0x86)
play_sound(0x0161, CHANNEL_6)
wait_until(4510, 0x87)
play_sound(0x0162, CHANNEL_6)
wait_until(4555, 0x88)
play_sound(0x0161, CHANNEL_7)
wait_until(4560, 0x83)
speak(CHR_BOND, 0x184f, 0x7413, CHANNEL_5, COLOR_05_GREEN) // "There will be no outside help for Mr. Carrington. ..."
wait_until(4636, 0x89)
play_sound(0x0163, CHANNEL_7)
wait_until(5017, 0x8a)
play_sound(0x0164, CHANNEL_7)
wait_until(5272, 0x8b)
speak(CHR_BOND, 0x1850, 0x7414, CHANNEL_5, COLOR_03_RED) // "Then the devices we gave you are working correctly..."
wait_until(5360, 0x8c)
play_sound(0x0163, CHANNEL_6)
wait_until(5509, 0x8d)
play_sound(0x0164, CHANNEL_6)
wait_until(5897, 0x8e)
play_sound(0x0161, CHANNEL_6)
beginloop(0x08)
if_camera_animating(/*goto*/ 0x2c)
goto_next(0x54)
label(0x2c)
label(0x2c)
endloop(0x08)
label(0x54)
label(0x06)
restart_default_music
reset_ambience
enter_firstperson
set_stage_flag(STAGEFLAG_MEETING_FINISHED)
mute_channel(CHANNEL_10)
mute_channel(CHANNEL_7)
mute_channel(CHANNEL_6)
mute_channel(CHANNEL_5)
unset_chr_chrflag(CHR_COOP, CHRCFLAG_HIDDEN)
unset_chr_chrflag(CHR_ANTI, CHRCFLAG_HIDDEN)
restart_timer
label(0x06)
set_ailist(CHR_CASS, AILIST_WALK_FROM_MEETING)
beginloop(0x0e)
if_timer_gt(140, /*goto*/ 0x06)
endloop(0x0e)
label(0x06)
set_ailist(CHR_TRENT, AILIST_WALK_FROM_MEETING)
beginloop(0x0f)
if_timer_gt(300, /*goto*/ 0x06)
endloop(0x0f)
label(0x06)
chr_move_to_pad(0x1e, 0x003c, 0x01, /*goto*/ 0x2c) // invalid chr?
label(0x2c)
set_ailist(CHR_BLONDE, AILIST_WALK_FROM_MEETING)
set_ailist(CHR_STRIPES, AILIST_WALK_FROM_MEETING)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func040f_outro_from_menu[] = {
hide_object(OBJ_MINE1)
hide_object(OBJ_MINE2)
set_ailist(CHR_SELF, AILIST_OUTRO)
endlist
};
u8 func040f_outro[] = {
camera_movement(0x0196)
set_music_track(MUSIC_G5_OUTRO)
set_chr_chrflag(CHR_ANTI, CHRCFLAG_HIDDEN)
set_chr_chrflag(0xf1, CHRCFLAG_HIDDEN)
set_ailist(CHR_P1P2, GAILIST_IDLE)
set_chr_chrflag(CHR_P1P2, CHRCFLAG_UNPLAYABLE)
unset_chr_chrflag(CHR_P1P2, CHRCFLAG_HIDDEN)
set_chr_hiddenflag(CHR_P1P2, CHRHFLAG_00020000)
chr_do_animation(0x0197, -1, -1, 0x06, 0x00, CHR_P1P2, 4)
set_chr_hudpiece_visible(CHR_P1P2, TRUE)
restart_timer
deactivate_alarm
show_nonessential_chrs(FALSE)
set_cutscene_weapon(CHR_P1P2, -1, -1)
yield
set_cutscene_weapon(CHR_P1P2, -1, 0x03)
wait_until(20, 0x55)
play_sound(0x0171, CHANNEL_6)
wait_until(38, 0x57)
play_sound(0x0173, CHANNEL_7)
wait_until(69, 0x58)
play_sound(0x0174, CHANNEL_6)
wait_until(88, 0x5a)
play_sound(0x0172, CHANNEL_6)
wait_until(103, 0x5b)
play_sound(0x0173, CHANNEL_7)
wait_until(134, 0x5c)
play_sound(0x0174, CHANNEL_6)
wait_until(142, 0x5e)
wait_until(162, 0x60)
play_sound(0x0173, CHANNEL_7)
wait_until(185, 0x61)
play_sound(0x0174, CHANNEL_6)
wait_until(204, 0x62)
play_sound(0x0171, CHANNEL_7)
wait_until(220, 0x63)
play_sound(0x0172, CHANNEL_6)
wait_until(256, 0x64)
play_sound(0x0173, CHANNEL_7)
wait_until(262, 0x65)
play_sound(0x0174, CHANNEL_6)
enable_rain(2)
wait_until(273, 0x68)
play_sound(0x0172, CHANNEL_7)
wait_until(318, 0x6a)
play_sound(0x0174, CHANNEL_6)
wait_until(344, 0x6b)
play_sound(0x0171, CHANNEL_7)
wait_until(362, 0x6c)
play_sound(0x0172, CHANNEL_6)
wait_until(390, 0x6d)
play_sound(0x0163, CHANNEL_7)
wait_until(404, 0x6e)
play_sound(0x0161, CHANNEL_6)
wait_until(420, 0x70)
play_sound(0x0162, CHANNEL_6)
wait_until(468, 0x71)
play_sound(0x0163, CHANNEL_7)
wait_until(488, 0x72)
play_sound(0x0164, CHANNEL_6)
wait_until(679, 0x74)
play_sound(0x0161, CHANNEL_6)
wait_until(728, 0x56)
wait_until(768, 0x73)
speak(CHR_P1P2, 0x1851, 0x7415, CHANNEL_7, COLOR_09_BLUE) // "Agent Dark reporting in! Prepare to receive a down..."
wait_until(1280, 0x59)
wait_until(1310, 0x75)
speak(CHR_P1P2, 0x1852, 0x7416, CHANNEL_7, COLOR_06_WHITE) // "No time for that now, Agent Dark. There's been a d..."
wait_until(1780, 0x76)
play_sound(0x0162, CHANNEL_6)
wait_until(1841, 0x77)
play_sound(0x0163, CHANNEL_6)
wait_until(1883, 0x78)
play_sound(0x0164, CHANNEL_6)
wait_until(2600, 0x5d)
wait_until(2630, 0x79)
speak(CHR_P1P2, 0x1853, 0x7417, CHANNEL_7, COLOR_09_BLUE) // "Area 51? But what about the President?"
beginloop(0x08)
if_camera_animating(/*goto*/ 0x2c)
goto_next(0x54)
label(0x2c)
if_controller_button_pressed(/*goto*/ 0x54)
label(0x2c)
endloop(0x08)
label(0x54)
label(0x06)
set_chr_hudpiece_visible(CHR_P1P2, FALSE)
end_level
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1018_intro_from_menu[] = {
set_returnlist(CHR_SELF, GAILIST_END_CINEMA)
set_ailist(CHR_SELF, AILIST_INTRO)
endlist
};
u8 func1019_generator_hum[] = {
yield
assign_sound(0x8146, CHANNEL_4)
play_sound_from_object(CHANNEL_4, OBJ_GENERATOR, 0x0640, 0x0898)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
/**
* Not entirely sure what this does. It's probably the guards in the laser
* switch area, and it probably controls which ones will run for the alarm.
*/
u8 func101a_init_laser_switch_guards[] = {
if_difficulty_lt(DIFF_SA, /*goto*/ 0x08)
if_difficulty_lt(DIFF_PA, /*goto*/ 0x09)
// Perfect Agent
set_chr_flag_bankx(0x0c, CHRFLAG0_CAN_RUN_FOR_ALARM, BANK_0)
set_chr_flag_bankx(0x0d, CHRFLAG0_CAN_RUN_FOR_ALARM, BANK_0)
set_chr_flag_bankx(0x0e, CHRFLAG0_CAN_RUN_FOR_ALARM, BANK_0)
goto_next(0x06)
// Agent
label(0x08)
set_chr_flag_bankx(0x0e, CHRFLAG0_CAN_RUN_FOR_ALARM, BANK_0)
set_chr_flag_bankx(0x0e, CHRFLAG0_UNSURPRISABLE, BANK_0)
goto_next(0x06)
// Special Agent
label(0x09)
set_chr_flag_bankx(0x0e, CHRFLAG0_CAN_RUN_FOR_ALARM, BANK_0)
set_chr_flag_bankx(0x0d, CHRFLAG0_CAN_RUN_FOR_ALARM, BANK_0)
label(0x06)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func0412_cloak_guard[] = {
set_morale(0)
set_shotlist(AILIST_CLOAK_GUARD)
set_chr_cloaked(CHR_SELF, TRUE, FALSE)
if_chr_dying(CHR_SELF, /*goto*/ 0x06)
if_chr_death_animation_finished(CHR_SELF, /*goto*/ 0x06)
if_chr_unloaded(CHR_SELF, /*goto*/ 0x06)
goto_next(0x03)
// Dead
label(0x06)
goto_next(0x10)
// Choose target
label(0x03)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
label(0x06)
restart_timer
cmd0139(70, 0x02, TRUE)
// Wait 3 seconds or until stopped
beginloop(0x55)
if_timer_gt(180, /*goto*/ 0x06)
if_chr_stopped(/*goto*/ 0x06)
endloop(0x55)
// 50% chance of attacking immediately, 50% at 2 seconds
label(0x06)
stop_chr
call_rng
if_rand_gt(128, /*goto*/ 0x06)
restart_timer
beginloop(0x0e)
if_timer_gt(120, /*goto*/ 0x06)
endloop(0x0e)
// Attacking
label(0x06)
if_morale_lt(3, /*goto*/ 0x2c)
goto_next(0x06)
label(0x2c)
if_player_looking_at_something_maybe(0x0f, 0x01, 0x00, /*goto*/ 0x0e)
label(0x06)
if_in_disarm_range(/*goto*/ 0x2c)
goto_next(0x0d)
label(0x0e)
add_morale(1)
label(0x2c)
restart_timer
set_chr_cloaked(CHR_SELF, FALSE, TRUE)
label(0x0a)
label(0x2c)
try_aim_and_shoot_thing1(0x0220, 0x0000, /*goto*/ 0x2c)
label(0x2c)
try_aim_and_shoot_thing2(0x0200, 0x0000, /*goto*/ 0x0b)
beginloop(0x0b)
if_chr_stopped(/*goto*/ 0x0c)
endloop(0x0b)
label(0x0c)
set_morale(0)
set_chr_cloaked(CHR_SELF, TRUE, TRUE)
label(0x0d)
goto_first(0x03)
label(0x10)
if_chr_has_hiddenflag(CHR_SELF, CHRHFLAG_CLOAKED, /*goto*/ 0x2c)
set_ailist(CHR_SELF, GAILIST_IDLE)
label(0x2c)
set_chr_cloaked(CHR_SELF, FALSE, TRUE)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func0413_cloak1_guard[] = {
yield
set_shotlist(AILIST_CLOAK_GUARD)
set_self_chrflag(CHRCFLAG_INVINCIBLE_TO_GUNFIRE)
label(0x06)
set_reaction_speed(100)
set_shotlist(AILIST_CLOAK_GUARD)
restart_timer
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_distance_to_target_lt(400, /*goto*/ 0x06)
if_jo_front_direction_lt(30, /*goto*/ 0x06)
if_chr_in_view(/*goto*/ 0x06)
if_difficulty_lt(DIFF_SA, /*goto*/ 0x2c)
if_timer_gt(180, /*goto*/ 0x06)
label(0x2c)
endloop(0x04)
label(0x06)
unset_self_chrflag(CHRCFLAG_INVINCIBLE_TO_GUNFIRE)
set_self_chrflag(CHRCFLAG_00040000)
set_chr_cloaked(CHR_SELF, TRUE, TRUE)
set_ailist(CHR_SELF, AILIST_CLOAK_GUARD)
endlist
};
u8 func0414_init_cloak2_guard[] = {
stop_chr
set_shotlist(AILIST_CLOAK_GUARD)
set_self_chrflag(CHRCFLAG_INVINCIBLE_TO_GUNFIRE)
set_chr_dodge_rating(2, 0x0a)
set_accuracy(5)
set_reaction_speed(25)
set_chr_maxdamage(CHR_SELF, 40)
add_health_or_armor(0)
set_recovery_speed(0)
set_shield(0)
unset_self_chrflag(CHRCFLAG_INVINCIBLE_TO_GUNFIRE)
set_self_chrflag(CHRCFLAG_00040000)
set_chr_cloaked(CHR_SELF, TRUE, TRUE)
set_ailist(CHR_SELF, AILIST_CLOAK_GUARD)
endlist
};
u8 func101b_cloak2_entry[] = {
// Wait until in glass area of second cloak room
beginloop(0x08)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x001a, /*goto*/ 0x06)
endloop(0x08)
label(0x06)
lock_door(0x34, 0x10)
lock_door(0x35, 0x10)
lock_door(0x36, 0x10)
lock_door(0x37, 0x10)
set_object_flag2(0x34, OBJFLAG2_LOCKEDBACK)
set_object_flag2(0x35, OBJFLAG2_LOCKEDBACK)
set_object_flag2(0x36, OBJFLAG2_LOCKEDFRONT)
set_object_flag2(0x37, OBJFLAG2_LOCKEDBACK)
close_door(0x34)
close_door(0x35)
close_door(0x36)
close_door(0x37)
if_stage_flag_eq(STAGEFLAG_LIGHTS_OFF, TRUE, /*goto*/ 0x2c)
play_sound(0x8147, -1)
restart_timer
set_lights_state(0x000b, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x000c, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x000d, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x000e, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x0010, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x000f, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x0011, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x0012, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x0013, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x0014, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x0015, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x0017, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x0018, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x0001, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x0003, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x0004, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x0005, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x0006, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x0007, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x0008, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x0009, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x000a, 0x03, 0xff, 0x06, 0x78)
// Wait 2 seconds
beginloop(0x09)
if_timer_gt(120, /*goto*/ 0x06)
endloop(0x09)
label(0x06)
set_lights_state(0x000b, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x000c, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x000d, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x000e, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x0010, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x000f, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x0011, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x0012, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x0013, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x0014, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x0015, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x0017, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x0018, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x0001, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x0003, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x0004, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x0005, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x0006, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x0007, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x0008, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x0009, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x000a, 0x01, 0x0a, 0x00, 0x00)
goto_next(0x07)
label(0x2c)
play_sound(0x8148, -1)
set_lights_state(0x000b, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x000c, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x000d, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x000e, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x0010, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x000f, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x0011, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x0012, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x0013, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x0014, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x0015, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x0017, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x0018, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x0001, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x0003, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x0004, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x0005, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x0006, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x0007, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x0008, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x0009, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x000a, 0x03, 0x06, 0xff, 0x78)
// Wait 2 seconds
restart_timer
beginloop(0x0a)
if_timer_gt(120, /*goto*/ 0x06)
endloop(0x0a)
label(0x06)
set_lights_state(0x000b, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x000c, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x000d, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x000e, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x0010, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x000f, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x0011, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x0012, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x0013, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x0014, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x0015, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x0017, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x0018, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x0001, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x0003, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x0004, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x0005, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x0006, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x0007, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x0008, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x0009, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x000a, 0x01, 0xff, 0x00, 0x00)
label(0x07)
unset_chr_chrflag(CHR_CLOAK_2A, CHRCFLAG_HIDDEN)
unset_chr_chrflag(CHR_CLOAK_2B, CHRCFLAG_HIDDEN)
unset_chr_chrflag(CHR_CLOAK_2C, CHRCFLAG_HIDDEN)
unset_chr_chrflag(CHR_CLOAK_2D, CHRCFLAG_HIDDEN)
set_ailist(CHR_CLOAK_2A, AILIST_CLOAK2_GUARD)
set_ailist(CHR_CLOAK_2B, AILIST_CLOAK2_GUARD)
set_ailist(CHR_CLOAK_2C, AILIST_CLOAK2_GUARD)
set_ailist(CHR_CLOAK_2D, AILIST_CLOAK2_GUARD)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func0405_cloak2_hide[] = {
set_self_chrflag(CHRCFLAG_HIDDEN)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func101c_check_visited_top_door[] = {
// Wait until decoder attached
beginloop(0x04)
if_stage_flag_eq(STAGEFLAG_DECODER_ATTACHED, TRUE, /*goto*/ 0x08)
endloop(0x04)
// Wait until player gone near top fire escape door
beginloop(0x08)
chr_toggle_p1p2(CHR_SELF)
if_chr_distance_to_pad_lt(CHR_P1P2, 400, 0x0058, /*goto*/ 0x06)
endloop(0x08)
label(0x06)
set_stage_flag(STAGEFLAG_VISITED_TOP_DOOR)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func101d_init_mines[] = {
yield
set_object_flag2(OBJ_MINE1, OBJFLAG2_00020000)
set_object_flag2(OBJ_MINE2, OBJFLAG2_00020000)
set_object_flag2(OBJ_MINE1, OBJFLAG2_INVISIBLE)
set_object_flag2(OBJ_MINE2, OBJFLAG2_INVISIBLE)
unset_object_flag(OBJ_MINE1, OBJFLAG_00000100)
unset_object_flag(OBJ_MINE2, OBJFLAG_00000100)
set_chr_team(CHR_ANTI, TEAM_ENEMY)
label(0x06)
if_savefile_flag_is_unset(SAVEFILEFLAG_G5_MINE, /*goto*/ 0x06)
hide_object(OBJ_MINE1)
dprint 'E','P','R','O','M','F','L','A','G',' ','N','O','T','S','E','T',0,
set_ailist(CHR_SELF, GAILIST_IDLE)
label(0x06)
dprint 'E','P','R','O','M','F','L','A','G',' ','S','E','T',0,
hide_object(OBJ_MINE2)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
#define init_guard(accuracy, reaction, function) \
set_chr_dodge_rating(2, 0x0a) \
set_accuracy(accuracy) \
set_reaction_speed(reaction) \
set_chr_maxdamage(CHR_SELF, 40) \
add_health_or_armor(0) \
set_recovery_speed(0) \
set_shield(0) \
set_ailist(CHR_SELF, function)
u8 func0406_init_type1_guard[] = {
init_guard(5, 30, GAILIST_UNALERTED)
endlist
};
// Never assigned
u8 func0407_init_type2_guard[] = {
init_guard(15, 25, GAILIST_UNALERTED)
endlist
};
u8 func0408_init_cloak1_guard[] = {
init_guard(5, 25, 0x0413)
endlist
};
u8 func101e_msg_nowaythrough[] = {
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
if_stage_flag_eq(STAGEFLAG_LASERSET1_DISABLED, FALSE, /*goto*/ 0x2c)
if_stage_flag_eq(STAGEFLAG_LASERSET2_DISABLED, FALSE, /*goto*/ 0x2c)
if_stage_flag_eq(STAGEFLAG_LASERSET3_DISABLED, FALSE, /*goto*/ 0x2c)
if_stage_flag_eq(STAGEFLAG_LASERSET4_DISABLED, FALSE, /*goto*/ 0x2c)
reloop(0x04)
label(0x2c)
if_chr_in_room(CHR_P1P2, 0x00, 0x002f, /*goto*/ 0x2c)
endloop(0x04)
label(0x2c)
speak(CHR_P1P2, 0x183c, 0x73b4, CHANNEL_6, COLOR_09_BLUE) // "There's no way through while those lasers are acti..."
label(0x0d)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func101f_msg_meetingroomahead[] = {
restart_timer
beginloop(0x04)
if_stage_flag_eq(STAGEFLAG_MEETING_HOLOGRAPHED, TRUE, /*goto*/ 0x0d)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x004c, /*goto*/ 0x2c)
reloop(0x04)
label(0x2c)
if_chr_y(CHR_P1P2, 300, OPERATOR_LESS_THAN, /*goto*/ 0x06)
goto_next(0x2c)
label(0x06)
endloop(0x04)
label(0x2c)
speak(CHR_P1P2, 0x183d, 0x73b5, CHANNEL_6, COLOR_09_BLUE) // "That must be the meeting room up ahead. Time to us..."
label(0x0d)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1020_msg_heavilyencrypted[] = {
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0050, /*goto*/ 0x2c)
endloop(0x04)
label(0x2c)
speak(CHR_P1P2, 0x183e, 0x817c, CHANNEL_6, COLOR_09_BLUE) // "The safe's heavily encrypted. The decoder's gonna ..."
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1021_blow_mines[] = {
// Wait for backup collected
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
if_stage_flag_eq(STAGEFLAG_BACKUP_COLLECTED, TRUE, /*goto*/ 0x2c)
endloop(0x04)
// Wait 2 seconds
label(0x2c)
restart_timer
beginloop(0x08)
if_timer_gt(120, /*goto*/ 0x2c)
endloop(0x08)
label(0x2c)
if_difficulty_lt(DIFF_SA, /*goto*/ 0x2c)
speak(CHR_P1P2, 0x183f, 0x73b7, CHANNEL_6, COLOR_09_BLUE) // "Time to leave! Let's get to the door I set up earl..."
set_ailist(CHR_SELF, GAILIST_IDLE)
// Agent
label(0x2c)
if_object_in_good_condition(OBJ_ESCAPEDOOR1, /*goto*/ 0x2c)
goto_next(0x0d)
label(0x2c)
if_object_in_good_condition(OBJ_ESCAPEDOOR2, /*goto*/ 0x2c)
goto_next(0x0d)
label(0x2c)
speak(CHR_P1P2, 0x1841, 0x81a2, CHANNEL_6, COLOR_09_BLUE) // "Stand back, Joanna. We'll create your escape route..."
restart_timer
beginloop(0x09)
if_timer_gt(120, /*goto*/ 0x2c)
endloop(0x09)
label(0x2c)
destroy_object(OBJ_MINE1)
destroy_object(OBJ_MINE2)
restart_timer
beginloop(0x0a)
if_timer_gt(240, /*goto*/ 0x2c)
endloop(0x0a)
label(0x2c)
label(0x0d)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1022_light_switch[] = {
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_LIGHTSWITCH, /*goto*/ 0x2c)
reloop(0x04)
label(0x2c)
if_stage_flag_eq(STAGEFLAG_LIGHTS_OFF, TRUE, /*goto*/ 0x2c)
// Turning lights off
set_stage_flag(STAGEFLAG_LIGHTS_OFF)
assign_sound(0x043f, CHANNEL_7)
play_sound_from_entity(CHANNEL_7, OBJ_LIGHTSWITCH, 0x012c, 0x0190, 0x00)
yield
set_object_image(OBJ_LIGHTSWITCH, 0x00, 0x14)
play_sound(0x8147, -1)
set_lights_state(0x000b, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x000c, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x000d, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x000e, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x0010, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x000f, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x0011, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x0012, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x0013, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x0014, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x0015, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x0017, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x0018, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x0001, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x0003, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x0004, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x0005, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x0006, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x0007, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x0008, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x0009, 0x03, 0xff, 0x06, 0x78)
set_lights_state(0x000a, 0x03, 0xff, 0x06, 0x78)
restart_timer
beginloop(0x09)
if_timer_gt(120, /*goto*/ 0x06)
endloop(0x09)
label(0x06)
set_lights_state(0x000b, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x000c, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x000d, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x000e, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x0010, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x000f, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x0011, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x0012, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x0013, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x0014, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x0015, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x0017, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x0018, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x0001, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x0003, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x0004, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x0005, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x0006, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x0007, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x0008, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x0009, 0x01, 0x0a, 0x00, 0x00)
set_lights_state(0x000a, 0x01, 0x0a, 0x00, 0x00)
goto_first(0x04)
// Turning lights on
label(0x2c)
unset_stage_flag(STAGEFLAG_LIGHTS_OFF)
assign_sound(0x043f, CHANNEL_7)
play_sound_from_entity(CHANNEL_7, OBJ_LIGHTSWITCH, 0x012c, 0x0190, 0x00)
yield
play_sound(0x8148, -1)
set_object_image(0x3d, 0x00, 0x06)
set_lights_state(0x000b, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x000c, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x000d, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x000e, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x0010, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x000f, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x0011, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x0012, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x0013, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x0014, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x0015, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x0017, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x0018, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x0001, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x0003, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x0004, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x0005, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x0006, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x0007, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x0008, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x0009, 0x03, 0x06, 0xff, 0x78)
set_lights_state(0x000a, 0x03, 0x06, 0xff, 0x78)
restart_timer
beginloop(0x0a)
if_timer_gt(120, /*goto*/ 0x06)
endloop(0x0a)
label(0x06)
set_lights_state(0x000b, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x000c, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x000d, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x000e, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x0010, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x000f, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x0011, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x0012, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x0013, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x0014, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x0015, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x0017, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x0018, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x0001, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x0003, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x0004, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x0005, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x0006, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x0007, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x0008, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x0009, 0x01, 0xff, 0x00, 0x00)
set_lights_state(0x000a, 0x01, 0xff, 0x00, 0x00)
endloop(0x04)
endlist
};
u8 func1023_hide_nbomb_crate[] = {
if_savefile_flag_is_unset(SAVEFILEFLAG_G5_MINE, /*goto*/ 0x06)
set_ailist(CHR_SELF, GAILIST_IDLE)
label(0x06)
hide_object(OBJ_NBOMB_CRATE)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
/**
* Opens the laser doors in response to the stageflags changing.
*/
u8 unregistered_function[] = {
beginloop(0x04)
if_stage_flag_eq(STAGEFLAG_LASERSET1_DISABLED, FALSE, /*goto*/ 0x2c)
if_door_state(OBJ_LASER_1A, (DOORSTATE_OPEN | DOORSTATE_OPENING), /*goto*/ 0x2c)
open_door(OBJ_LASER_1A)
open_door(OBJ_LASER_1B)
open_door(OBJ_LASER_1C)
open_door(OBJ_LASER_1D)
label(0x2c)
if_stage_flag_eq(STAGEFLAG_LASERSET2_DISABLED, FALSE, /*goto*/ 0x2c)
if_door_state(OBJ_LASER_2A, (DOORSTATE_OPEN | DOORSTATE_OPENING), /*goto*/ 0x2c)
open_door(OBJ_LASER_2A)
open_door(OBJ_LASER_2B)
open_door(OBJ_LASER_2C)
open_door(OBJ_LASER_2D)
label(0x2c)
if_stage_flag_eq(STAGEFLAG_LASERSET3_DISABLED, FALSE, /*goto*/ 0x2c)
if_door_state(OBJ_LASER_3A, (DOORSTATE_OPEN | DOORSTATE_OPENING), /*goto*/ 0x2c)
open_door(OBJ_LASER_3A)
open_door(OBJ_LASER_3B)
open_door(OBJ_LASER_3C)
open_door(OBJ_LASER_3D)
label(0x2c)
if_stage_flag_eq(STAGEFLAG_LASERSET4_DISABLED, FALSE, /*goto*/ 0x2c)
if_door_state(OBJ_LASER_4A, (DOORSTATE_OPEN | DOORSTATE_OPENING), /*goto*/ 0x2c)
open_door(OBJ_LASER_4A)
open_door(OBJ_LASER_4B)
open_door(OBJ_LASER_4C)
open_door(OBJ_LASER_4D)
label(0x2c)
endloop(0x04)
endlist
};
/**
* I'm guessing co op buddies etc would get stuck in locked rooms after the
* player has passed through them. So this just unlocks the doors once they've
* been opened for the first time.
*/
u8 func1026_unlock_doors[] = {
// If Velvet and counter op don't exist, return
yield
if_chr_death_animation_finished(CHR_COOP, /*goto*/ 0x2c)
goto_next(0x04)
label(0x2c)
if_chr_death_animation_finished(CHR_ANTI, /*goto*/ 0x0a)
// Wait until some door is not closed (so... opening, I guess?)
beginloop(0x04)
if_door_state(0x43, (DOORSTATE_OPEN | DOORSTATE_CLOSING | DOORSTATE_OPENING), /*goto*/ 0x2c)
if_door_state(0x44, (DOORSTATE_OPEN | DOORSTATE_CLOSING | DOORSTATE_OPENING), /*goto*/ 0x2c)
if_door_state(0x45, (DOORSTATE_OPEN | DOORSTATE_CLOSING | DOORSTATE_OPENING), /*goto*/ 0x2c)
if_door_state(0x46, (DOORSTATE_OPEN | DOORSTATE_CLOSING | DOORSTATE_OPENING), /*goto*/ 0x2c)
endloop(0x04)
// Unlock those doors
label(0x2c)
unlock_door(0x43, 0x04)
unlock_door(0x44, 0x04)
unlock_door(0x45, 0x04)
unlock_door(0x46, 0x04)
// New set of doors - wait until not closed
beginloop(0x08)
if_door_state(0x34, (DOORSTATE_OPEN | DOORSTATE_CLOSING | DOORSTATE_OPENING), /*goto*/ 0x2c)
if_door_state(0x35, (DOORSTATE_OPEN | DOORSTATE_CLOSING | DOORSTATE_OPENING), /*goto*/ 0x2c)
if_door_state(0x36, (DOORSTATE_OPEN | DOORSTATE_CLOSING | DOORSTATE_OPENING), /*goto*/ 0x2c)
if_door_state(0x37, (DOORSTATE_OPEN | DOORSTATE_CLOSING | DOORSTATE_OPENING), /*goto*/ 0x2c)
endloop(0x08)
// Unlock them
label(0x2c)
unlock_door(0x34, 0x04)
unlock_door(0x35, 0x04)
unlock_door(0x36, 0x04)
unlock_door(0x37, 0x04)
// Third set of doors
beginloop(0x09)
if_door_state(0x3f, (DOORSTATE_OPEN | DOORSTATE_CLOSING | DOORSTATE_OPENING), /*goto*/ 0x2c)
if_door_state(0x40, (DOORSTATE_OPEN | DOORSTATE_CLOSING | DOORSTATE_OPENING), /*goto*/ 0x2c)
endloop(0x09)
label(0x2c)
unlock_door(0x3f, 0x10)
unlock_door(0x40, 0x10)
label(0x0a)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func0410_invincible[] = {
label(0x04)
yield
set_self_chrflag(CHRCFLAG_INVINCIBLE_TO_GUNFIRE)
set_self_chrflag(CHRCFLAG_UNEXPLODABLE)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func0411_hide[] = {
label(0x04)
yield
set_self_chrflag(CHRCFLAG_HIDDEN)
set_self_chrflag(CHRCFLAG_INVINCIBLE_TO_GUNFIRE)
set_self_chrflag(CHRCFLAG_UNEXPLODABLE)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1027_cloak1_check_one_remaining[] = {
// Wait until either cloak guard dying (in first room)
beginloop(0x04)
if_chr_dying(CHR_CLOAK_1A, /*goto*/ 0x2c)
if_chr_death_animation_finished(CHR_CLOAK_1A, /*goto*/ 0x2c)
if_chr_unloaded(CHR_CLOAK_1A, /*goto*/ 0x2c)
if_chr_dying(CHR_CLOAK_1B, /*goto*/ 0x2c)
if_chr_death_animation_finished(CHR_CLOAK_1B, /*goto*/ 0x2c)
if_chr_unloaded(CHR_CLOAK_1B, /*goto*/ 0x2c)
endloop(0x04)
label(0x2c)
set_stage_flag(STAGEFLAG_CLOAK1_ONE_REMAINING)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1028_cloak2_check_one_remaining[] = {
// Count number of dead cloak guards in second room
beginloop(0x04)
set_morale(0)
if_chr_dying(CHR_CLOAK_2A, /*goto*/ 0x2c)
if_chr_death_animation_finished(CHR_CLOAK_2A, /*goto*/ 0x2c)
if_chr_unloaded(CHR_CLOAK_2A, /*goto*/ 0x2c)
goto_next(0x06)
label(0x2c)
add_morale(1)
label(0x06)
if_chr_dying(CHR_CLOAK_2B, /*goto*/ 0x2c)
if_chr_death_animation_finished(CHR_CLOAK_2B, /*goto*/ 0x2c)
if_chr_unloaded(CHR_CLOAK_2B, /*goto*/ 0x2c)
goto_next(0x06)
label(0x2c)
add_morale(1)
label(0x06)
if_chr_dying(CHR_CLOAK_2C, /*goto*/ 0x2c)
if_chr_death_animation_finished(CHR_CLOAK_2C, /*goto*/ 0x2c)
if_chr_unloaded(CHR_CLOAK_2C, /*goto*/ 0x2c)
goto_next(0x06)
label(0x2c)
add_morale(1)
label(0x06)
if_chr_dying(CHR_CLOAK_2D, /*goto*/ 0x2c)
if_chr_death_animation_finished(CHR_CLOAK_2D, /*goto*/ 0x2c)
if_chr_unloaded(CHR_CLOAK_2D, /*goto*/ 0x2c)
goto_next(0x06)
label(0x2c)
add_morale(1)
label(0x06)
if_morale_lt(3, /*goto*/ 0x2c)
set_stage_flag(STAGEFLAG_CLOAK2_ONE_REMAINING)
set_ailist(CHR_SELF, GAILIST_IDLE)
label(0x2c)
endloop(0x04)
endlist
};
u8 func1029_set_secret_weapon_props[] = {
yield
set_object_flag3(OBJ_NBOMB_CRATE, OBJFLAG3_RTRACKED_BLUE)
set_object_flag3(OBJ_CROSSBOW, OBJFLAG3_RTRACKED_BLUE)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func102a_8174[] = {
// Wait until some door opening
beginloop(0x08)
if_door_state(0x3f, (DOORSTATE_OPEN | DOORSTATE_OPENING), /*goto*/ 0x2c)
endloop(0x08)
label(0x2c)
set_chr_hiddenflag(0x07, CHRHFLAG_08000000)
set_chr_hiddenflag(0x0c, CHRHFLAG_08000000)
set_chr_hiddenflag(0x0d, CHRHFLAG_08000000)
set_chr_hiddenflag(0x0e, CHRHFLAG_08000000)
set_chr_hiddenflag(0x0f, CHRHFLAG_08000000)
set_chr_hiddenflag(0x10, CHRHFLAG_08000000)
set_chr_hiddenflag(0x11, CHRHFLAG_08000000)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func102b_81bc[] = {
// Wait until some door opening
beginloop(0x08)
if_door_state(0x3f, (DOORSTATE_OPEN | DOORSTATE_OPENING), /*goto*/ 0x2c)
endloop(0x08)
label(0x2c)
set_chr_team(0x08, TEAM_ENEMY)
set_chr_team(0x09, TEAM_ENEMY)
set_chr_team(0x0a, TEAM_ENEMY)
set_chr_team(0x0b, TEAM_ENEMY)
set_chr_team(0x07, TEAM_ENEMY)
set_chr_team(0x0c, TEAM_ENEMY)
set_chr_team(0x0d, TEAM_ENEMY)
set_chr_team(0x0e, TEAM_ENEMY)
set_chr_team(0x0f, TEAM_ENEMY)
set_chr_team(0x10, TEAM_ENEMY)
set_chr_team(0x11, TEAM_ENEMY)
set_chr_team(0x12, TEAM_ENEMY)
set_chr_team(0x13, TEAM_ENEMY)
set_chr_team(0x14, TEAM_ENEMY)
set_chr_team(0x15, TEAM_ENEMY)
set_chr_team(0x16, TEAM_ENEMY)
set_chr_team(0x17, TEAM_ENEMY)
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
/**
* I suspect Rare screwed up here. I think the lightswitch guard starts off as
* an ally so that he won't respond to Jo making noise in the first cloak room.
* Then when he becomes alerted to you (such as you shooting near him) he'd
* become an enemy.
*
* However, it's checking if the alertness is less than, so this condition
* passes immediately and he becomes an enemy. This could be why he's sometimes
* left his pad by the time you leave the first room.
*/
u8 func102c_set_lightswitch_guard_team[] = {
beginloop(0x08)
if_chr_alertness_lt(99, CHR_LIGHTSWITCH_GUARD, /*goto*/ 0x06)
endloop(0x08)
label(0x06)
set_chr_team(CHR_LIGHTSWITCH_GUARD, TEAM_ENEMY)
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
struct ailist ailists[] = {
{ func0401_init_swat1, 0x0401 },
{ func0402_init_swat2, 0x0402 },
{ func0403_walk_from_meeting, 0x0403 },
{ func0404_run_from_meeting, 0x0404 },
{ func0405_cloak2_hide, 0x0405 },
{ func0406_init_type1_guard, 0x0406 },
{ func0407_init_type2_guard, 0x0407 },
{ func0408_init_cloak1_guard, 0x0408 },
{ func0409_start_path00, 0x0409 },
{ func040a_start_path01, 0x040a },
{ func040b_start_path02, 0x040b },
{ func040c_start_path03, 0x040c },
{ func1400_setup_counterop, 0x1400 },
{ func1001_objectives_failed_msg, 0x1001 },
{ func1002_set_ai, 0x1002 },
{ func1003_laser_switch_1, 0x1003 },
{ func1004_laser_switch_2, 0x1004 },
{ func1005_laser_switch_3, 0x1005 },
{ func1006_laser_switch_4, 0x1006 },
{ func1007_init_lasers, 0x1007 },
{ func1008_check_generator, 0x1008 },
{ func1009_spawner_during_decode, 0x1009 },
{ func100a_give_keycards, 0x100a },
{ func100b_check_backup_collected, 0x100b },
{ func100c_check_for_meeting_trigger, 0x100c },
{ func100e_check_conspirators_alerted, 0x100e },
{ func100f_alarm_switches, 0x100f },
{ func1010_safe_cracking, 0x1010 },
{ func1012_check_for_end, 0x1012 },
{ func1013_check_escape_doors, 0x1013 },
{ func1014_check_camspy_location, 0x1014 },
{ func1017_check_lasers_closed, 0x1017 },
{ func1018_intro_from_menu, 0x1018 },
{ func1019_generator_hum, 0x1019 },
{ func101a_init_laser_switch_guards, 0x101a },
{ func101b_cloak2_entry, 0x101b },
{ func101c_check_visited_top_door, 0x101c },
{ func101d_init_mines, 0x101d },
{ func101e_msg_nowaythrough, 0x101e },
{ func101f_msg_meetingroomahead, 0x101f },
{ func1020_msg_heavilyencrypted, 0x1020 },
{ func1021_blow_mines, 0x1021 },
{ func1022_light_switch, 0x1022 },
{ func1023_hide_nbomb_crate, 0x1023 },
{ func1026_unlock_doors, 0x1026 },
{ func1027_cloak1_check_one_remaining, 0x1027 },
{ func1028_cloak2_check_one_remaining, 0x1028 },
{ func1029_set_secret_weapon_props, 0x1029 },
{ func102a_8174, 0x102a },
{ func102b_81bc, 0x102b },
{ func102c_set_lightswitch_guard_team, 0x102c },
{ func040d_intro, 0x040d },
{ func040e_meeting_cutscene, 0x040e },
{ func040f_outro, 0x040f },
{ func0410_invincible, 0x0410 },
{ func0411_hide, 0x0411 },
{ func0412_cloak_guard, 0x0412 },
{ func0413_cloak1_guard, 0x0413 },
{ func0414_init_cloak2_guard, 0x0414 },
{ func1018_intro_from_menu, 0x0c00 },
{ func040e_meeting_cutscene, 0x0c01 },
{ func040f_outro_from_menu, 0x0c02 },
{ NULL, 0 },
};
struct path paths[] = {
{ path00, 0, PATHTYPE_CIRCULAR },
{ path01, 1, PATHTYPE_CIRCULAR },
{ path02, 2, PATHTYPE_CIRCULAR },
{ path03, 3, PATHTYPE_CIRCULAR },
{ NULL, 0, 0 },
};