Files
perfect-dark/src/files/setup/setupear.c
T
2022-07-15 17:57:31 +10:00

3428 lines
159 KiB
C

//
// Investigation
//
#include "stagesetup.h"
// Characters
#define CHR_DRCAROLL 0x39
#define CHR_INTRO_GUARD 0x3a
#define CHR_K7_GUARD 0x3b
// Objects
#define OBJ_CACHETERMINAL 0x01
#define OBJ_BOT_ACTIVATION_TERMINAL 0x02
#define OBJ_BOT_PROGRAMMING_TERMINAL 0x03
#define OBJ_K7AVENGER 0x04
#define OBJ_NIGHTVISION 0x05
#define OBJ_SHIELD 0x06
#define OBJ_GOODTERM1 0x07
#define OBJ_GOODTERM2 0x08
#define OBJ_GOODTERM3 0x09
#define OBJ_UPLINKPC 0x0a
#define OBJ_ALARMTERM1 0x0f
#define OBJ_ALARMTERM2 0x14
#define OBJ_ALARMTERM3 0x19
#define OBJ_UPLINKDOOR 0x22
#define OBJ_DATAUPLINK_BOND 0x25
#define OBJ_YELLOWBOT 0x37 // opens the secret door
#define OBJ_PURPLEBOT 0x38 // lasers
#define OBJ_HATCHPC 0x3a
#define OBJ_DATAUPLINK_COOP 0x48
#define OBJ_CACHEDOOR1 0x55
#define OBJ_CACHEDOOR2 0x56
#define OBJ_CMP150_1 0x57
#define OBJ_CMP150_2 0x58
#define OBJ_PROXYMINES 0x59
// Stage flags
#define STAGEFLAG_DRCAROLL_LOCATED 0x00000001
#define STAGEFLAG_UPLINK_SEARCHING 0x00000002
#define STAGEFLAG_00000004 0x00000004
#define STAGEFLAG_00000008 0x00000008
#define STAGEFLAG_TRIGGER_OUTRO_AUDIO 0x00000010
#define STAGEFLAG_HAS_K7AVENGER 0x00000020
#define STAGEFLAG_HAS_NIGHTVISION 0x00000040
#define STAGEFLAG_HAS_SHIELD 0x00000080
#define STAGEFLAG_ITEMS_UNCOLLECTABLE 0x00000100
#define STAGEFLAG_BOT_ACTIVE 0x00000200
#define STAGEFLAG_BOT_REPROGRAMMED 0x00000400
#define STAGEFLAG_ALL_ITEMS_COLLECTED 0x00000800
#define STAGEFLAG_UNACCEPTABLE_CASUALTIES 0x00001000
#define STAGEFLAG_CAMSPY_DESTROYED 0x00002000
#define STAGEFLAG_SHUT_DOWN_EXPERIMENT1 0x00004000
#define STAGEFLAG_SHUT_DOWN_EXPERIMENT2 0x00008000
#define STAGEFLAG_SHUT_DOWN_EXPERIMENT3 0x00010000
#define STAGEFLAG_UPLINK_FINISHED 0x00020000
#define STAGEFLAG_BOT_ACTIVE_MAINTENANCE 0x00040000
#define STAGEFLAG_BOT_ACTIVATION_TERMINAL_DESTROYED 0x00080000
#define STAGEFLAG_BOT_PROGRAMMING_TERMINAL_DESTROYED 0x00100000
#define STAGEFLAG_ONE_SCIENTIST_DONE 0x00200000
#define STAGEFLAG_TWO_SCIENTISTS_DONE 0x00400000
#define STAGEFLAG_THREE_SCIENTISTS_DONE 0x00800000
#define STAGEFLAG_ALARM1_ACTIVE 0x01000000
#define STAGEFLAG_ALARM2_ACTIVE 0x02000000
#define STAGEFLAG_ALARM3_ACTIVE 0x04000000
#define STAGEFLAG_ALARM_RESPONDERS_SPAWNED 0x08000000
#define STAGEFLAG_UPLINKPC_DESTROYED 0x10000000
#define STAGEFLAG_BOT_ACTIVE_CLEANING 0x20000000
#define STAGEFLAG_BOT_ACTIVE_NOPROGRAM 0x40000000
#define STAGEFLAG_GOODTERM_DESTROYED 0x80000000
// AI Lists
#define AILIST_K7_GUARD 0x0402
#define AILIST_K7_SCIENTIST 0x0403
#define AILIST_SCIENTIST 0x0404
#define AILIST_INIT_SCIENTIST 0x0405
#define AILIST_NASTY_SCIENTIST 0x0406
#define AILIST_INIT_NASTY_SCIENTIST 0x0407
#define AILIST_ALARM_RESPONDER 0x0408
#define AILIST_UPLINK_RESPONDER 0x0409
#define AILIST_INIT_BASIC_GUARD 0x040a
#define AILIST_INIT_SHOCK_GUARD 0x040b
#define AILIST_PATH00 0x040c
#define AILIST_PATH01 0x040d // unused
#define AILIST_PATH02 0x040e
#define AILIST_PATH03 0x040f
#define AILIST_PATH04 0x0410 // unused
#define AILIST_PURPLEBOT_AT_LASERS 0x0413
#define AILIST_RADIOACTIVITY 0x0415
#define AILIST_OUTRO 0x0417
s32 intro[];
u32 props[];
struct path paths[];
struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
briefing(BRIEFINGTYPE_LOCATION, L_EAR_001)
briefing(BRIEFINGTYPE_TEXT_PA, L_EAR_000)
briefing(BRIEFINGTYPE_TEXT_SA, L_EAR_002)
briefing(BRIEFINGTYPE_TEXT_A, L_EAR_003)
beginobjective(0, L_EAR_013, (DIFFBIT_A | DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD)) // "Holograph radioactive isotope"
require_object_holographed(0x39)
fail_flags(STAGEFLAG_CAMSPY_DESTROYED)
endobjective
beginobjective(1, L_EAR_011, (DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD)) // "Start security maintenance cycle"
complete_flags(STAGEFLAG_BOT_ACTIVE_MAINTENANCE)
fail_flags(STAGEFLAG_BOT_ACTIVATION_TERMINAL_DESTROYED)
fail_flags(STAGEFLAG_BOT_PROGRAMMING_TERMINAL_DESTROYED)
endobjective
beginobjective(2, L_EAR_010, (DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD)) // "Shut down experiments"
complete_flags(STAGEFLAG_SHUT_DOWN_EXPERIMENT1)
complete_flags(STAGEFLAG_SHUT_DOWN_EXPERIMENT2)
complete_flags(STAGEFLAG_SHUT_DOWN_EXPERIMENT3)
fail_flags(STAGEFLAG_GOODTERM_DESTROYED)
fail_flags(STAGEFLAG_UNACCEPTABLE_CASUALTIES)
fail_flags(STAGEFLAG_00000008)
endobjective
beginobjective(3, L_EAR_012, (DIFFBIT_PA | DIFFBIT_PD)) // "Obtain experimental technologies"
complete_flags(STAGEFLAG_ALL_ITEMS_COLLECTED)
require_object_collected(OBJ_K7AVENGER)
require_object_collected(OBJ_NIGHTVISION)
require_object_collected(OBJ_SHIELD)
endobjective
beginobjective(4, L_EAR_009, (DIFFBIT_A | DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD)) // "Locate Dr. Caroll"
complete_flags(STAGEFLAG_DRCAROLL_LOCATED)
fail_flags(STAGEFLAG_UPLINKPC_DESTROYED)
endobjective
tag(0x60, 1)
lift(0x0100, MODEL_LIFT_PLATFORM, PAD_EAR_025B, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_80000000, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x025b, 0x025c, -1, -1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000000b6, 0x0010aaaa, 0x15000000)
door(0x0100, MODEL_DD_ACCESSDOORUP, PAD_EAR_019B, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000100)
door(0x0100, MODEL_DD_ACCESSDOORDN, PAD_EAR_019C, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_DD_ACCESSDOORUP, PAD_EAR_019D, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000100)
door(0x0100, MODEL_DD_ACCESSDOORDN, PAD_EAR_019E, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_DD_ACCESSDOORUP, PAD_EAR_019F, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000100)
door(0x0100, MODEL_DD_ACCESSDOORDN, PAD_EAR_01A0, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_DD_LABDOOR, PAD_EAR_015A, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000100)
door(0x0100, MODEL_DD_LABDOOR, PAD_EAR_015B, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000100)
door(0x0100, MODEL_DD_LABDOOR, PAD_EAR_015C, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000100)
tag(0x27, 1)
door(0x0100, MODEL_DD_LAB_DOOR_SEC, PAD_EAR_015D, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000004, 0x0000012c, 0x00000000, 0x00000000, 0x00000100)
tag(0x24, 2)
tag(0x40, 2)
door(0x0100, MODEL_DOOR4A_G5, PAD_EAR_0169, OBJFLAG_ILLUMINATED, 0, OBJFLAG3_AUTOCUTSCENESOUNDS, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, 0, DOORTYPE_SLIDING, 0x00000000, 0x00000708, 0x00000000, 0x00000001, 0x00001200)
door(0x0100, MODEL_DOOR4B_G5, PAD_EAR_0168, OBJFLAG_ILLUMINATED, 0, OBJFLAG3_AUTOCUTSCENESOUNDS, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, 0, DOORTYPE_SLIDING, 0x00000000, 0x00000708, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_DD_LAB_DOOR_WIND, PAD_EAR_015E, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, DOORFLAG_WINDOWED, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00c80384, 0x00000000, 0x00000100)
tag(0x5b, 1)
door(0x0100, MODEL_DD_LABDOOR, PAD_EAR_015F, OBJFLAG_DEACTIVATED, OBJFLAG2_LOCKEDBACK, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000100)
door(0x0100, MODEL_DD_LABDOOR, PAD_EAR_016D, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000100)
tag(0x5d, 1)
door(0x0100, MODEL_DD_LABDOOR, PAD_EAR_016E, OBJFLAG_DEACTIVATED, OBJFLAG2_LOCKEDFRONT, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000100)
door(0x0100, MODEL_DD_LABDOOR, PAD_EAR_016F, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000100)
tag(0x5c, 1)
door(0x0100, MODEL_DD_LABDOOR, PAD_EAR_0170, OBJFLAG_DEACTIVATED, OBJFLAG2_LOCKEDFRONT, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000100)
tag(0x5e, 2)
tag(0x5f, 2)
door(0x0100, MODEL_DD_LAB_SECTOR2BOT, PAD_EAR_0175, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, OBJFLAG2_LOCKEDFRONT, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000500)
door(0x0100, MODEL_DD_LAB_DOORTOP, PAD_EAR_0176, OBJFLAG_DEACTIVATED, OBJFLAG2_LOCKEDFRONT, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_DD_LAB_SECTOR2BOT, PAD_EAR_0178, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_DD_LAB_DOORTOP, PAD_EAR_0177, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0xfffffffd, 0x00000000)
door(0x0100, MODEL_DD_LAB_SECTOR2BOT, PAD_EAR_0179, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000500)
door(0x0100, MODEL_DD_LAB_DOORTOP, PAD_EAR_017A, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_DD_LAB_SECTOR2BOT, PAD_EAR_017C, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_DD_LAB_DOORTOP, PAD_EAR_017B, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0xfffffffd, 0x00000000)
door(0x0100, MODEL_DD_LAB_SECTOR2BOT, PAD_EAR_0171, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000500)
door(0x0100, MODEL_DD_LAB_SECTOR2TOP, PAD_EAR_0172, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_DD_LAB_SECTOR2BOT, PAD_EAR_0162, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000500)
door(0x0100, MODEL_DD_LAB_CAUTIONTOP, PAD_EAR_0163, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_DD_LAB_SECTOR2BOT, PAD_EAR_0164, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000500)
door(0x0100, MODEL_DD_LAB_CAUTIONTOP, PAD_EAR_0165, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
tag(0x47, 1)
door(0x0100, MODEL_DD_LAB_SECTOR2BOT, PAD_EAR_0166, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x000005dc, 0x00000000, 0x00000001, 0x00000500)
door(0x0100, MODEL_DD_LAB_CAUTIONTOP, PAD_EAR_0167, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x000005dc, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_DD_LAB_SECTOR2BOT, PAD_EAR_0173, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000500)
door(0x0100, MODEL_DD_LAB_SECTOR2TOP, PAD_EAR_0174, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_DD_LAB_SECTOR2BOT, PAD_EAR_017F, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000500)
door(0x0100, MODEL_DD_LAB_DOORTOP, PAD_EAR_0180, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_DD_LAB_SECTOR2BOT, PAD_EAR_0181, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000500)
door(0x0100, MODEL_DD_LAB_SECTOR3TOP, PAD_EAR_0182, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
tag(0x45, 1)
door(0x0100, MODEL_DD_LAB_SECTOR2BOT, PAD_EAR_0183, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x00000258, 0x00000000, 0x00000001, 0x00000500)
door(0x0100, MODEL_DD_LAB_DOORTOP, PAD_EAR_0184, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x00000258, 0x00000000, 0xffffffff, 0x00000000)
tag(0x44, 1)
door(0x0100, MODEL_DD_LAB_SECTOR3, PAD_EAR_017D, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, DOORFLAG_4000, DOORTYPE_VERTICAL, 0x00000000, 0x00000258, 0x00000000, 0x00000000, 0x00000100)
door(0x0100, MODEL_DD_LAB_SECTOR3, PAD_EAR_017E, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, DOORFLAG_4000, DOORTYPE_VERTICAL, 0x00000000, 0x00000258, 0x00000000, 0x00000000, 0x00000100)
door(0x0100, MODEL_DD_LABDOOR, PAD_EAR_0185, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000100)
door(0x0100, MODEL_DD_LABDOOR, PAD_EAR_0186, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000100)
tag(0x22, 1)
door(0x0100, MODEL_DD_LAB_SECTOR3WIND, PAD_EAR_0187, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, DOORFLAG_WINDOWED, DOORTYPE_VERTICAL, 0x00000002, 0x0000012c, 0x00c80384, 0x00000000, 0x00000100)
door(0x0100, MODEL_DD_LAB_SECTOR3WIND, PAD_EAR_0188, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, DOORFLAG_WINDOWED, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00c80384, 0x00000000, 0x00000100)
door(0x0100, MODEL_DD_LAB_SECTOR2BOT, PAD_EAR_0189, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000500)
door(0x0100, MODEL_DD_LAB_RESTRICTED, PAD_EAR_018A, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
tag(0x5a, 1)
door(0x0100, MODEL_DD_LAB_SECTOR2BOT, PAD_EAR_018B, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, OBJFLAG3_AUTOCUTSCENESOUNDS, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000040, 0x0000012c, 0x00000000, 0x00000001, 0x00000500)
door(0x0100, MODEL_DD_LAB_RESTRICTED, PAD_EAR_018C, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, OBJFLAG3_AUTOCUTSCENESOUNDS, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000040, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
tag(0x26, -1)
door(0x0100, MODEL_DD_LAB_SECTOR2BOT, PAD_EAR_018D, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000500)
door(0x0100, MODEL_DD_LAB_RESTRICTED, PAD_EAR_018E, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_DD_LAB_SECTOR2BOT, PAD_EAR_018F, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000500)
door(0x0100, MODEL_DD_LAB_SECTOR4TOP, PAD_EAR_0190, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
tag(0x23, 1)
door(0x0100, MODEL_DR_CAROLL_DOOR, PAD_EAR_0199, OBJFLAG_00000010, 0, OBJFLAG3_AUTOCUTSCENESOUNDS, 1000, 0x0000f851, 0x0000e666, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000040, 0x0000012c, 0x00000000, 0x00000000, 0x00000100)
door(0x0100, MODEL_DR_CAROLL_DOOR_MAIN, PAD_EAR_0198, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000100)
door(0x0100, MODEL_DR_CAROLL_DOOR_LEFT, PAD_EAR_0196, OBJFLAG_00000010, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_DR_CAROLL_DOOR_RIGHT, PAD_EAR_0197, OBJFLAG_00000010, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_DR_CAROLL_DOOR_BMAIN, PAD_EAR_0195, OBJFLAG_00000010, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_DR_CAROLL_DOOR_BLEFT, PAD_EAR_0193, OBJFLAG_00000010, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_DR_CAROLL_DOOR_BRIGHT, PAD_EAR_0194, OBJFLAG_00000010, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0xfffffffb, 0x00000000)
tag(0x28, 5)
tag(0x29, 5)
tag(0x2a, 5)
tag(0x2b, 5)
tag(0x2c, 5)
#if VERSION >= VERSION_NTSC_1_0
door(0x0100, MODEL_LASDOOR, PAD_EAR_01F0, OBJFLAG_ILLUMINATED | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000002, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_LASDOOR, PAD_EAR_01F1, OBJFLAG_ILLUMINATED | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000002, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_LASDOOR, PAD_EAR_01F2, OBJFLAG_ILLUMINATED | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000002, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_LASDOOR, PAD_EAR_01F3, OBJFLAG_ILLUMINATED | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000002, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_LASDOOR, PAD_EAR_01F4, OBJFLAG_ILLUMINATED | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000002, 0x000000f0, 0x00000000, 0xfffffffc, 0x00000000)
#else
door(0x0100, MODEL_LASDOOR, PAD_EAR_01F0, OBJFLAG_ILLUMINATED | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_LASDOOR, PAD_EAR_01F1, OBJFLAG_ILLUMINATED | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_LASDOOR, PAD_EAR_01F2, OBJFLAG_ILLUMINATED | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_LASDOOR, PAD_EAR_01F3, OBJFLAG_ILLUMINATED | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_LASDOOR, PAD_EAR_01F4, OBJFLAG_ILLUMINATED | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000000, 0x000000f0, 0x00000000, 0xfffffffc, 0x00000000)
#endif
tag(0x2d, 5)
tag(0x2e, 5)
tag(0x2f, 5)
tag(0x30, 5)
tag(0x31, 5)
door(0x0100, MODEL_LASDOOR, PAD_EAR_01F5, OBJFLAG_ILLUMINATED | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_LASDOOR, PAD_EAR_01F6, OBJFLAG_ILLUMINATED | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_LASDOOR, PAD_EAR_01F7, OBJFLAG_ILLUMINATED | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_LASDOOR, PAD_EAR_01F8, OBJFLAG_ILLUMINATED | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_LASDOOR, PAD_EAR_01F9, OBJFLAG_ILLUMINATED | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000000, 0x000000f0, 0x00000000, 0xfffffffc, 0x00000000)
tag(0x32, 5)
tag(0x33, 5)
tag(0x34, 5)
tag(0x35, 5)
tag(0x36, 5)
door(0x0100, MODEL_LASDOOR, PAD_EAR_01FA, OBJFLAG_ILLUMINATED | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_LASDOOR, PAD_EAR_01FB, OBJFLAG_ILLUMINATED | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_LASDOOR, PAD_EAR_01FC, OBJFLAG_ILLUMINATED | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_LASDOOR, PAD_EAR_01FD, OBJFLAG_ILLUMINATED | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_LASDOOR, PAD_EAR_01FE, OBJFLAG_ILLUMINATED | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_THROWTHROUGH | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00011999, 0x00011999, 0x7fffffff, 0x7fffffff, 0x7fffffff, DOORFLAG_DAMAGEONCONTACT | DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_LASER, 0x00000000, 0x000000f0, 0x00000000, 0xfffffffc, 0x00000000)
tag(0x3f, 1)
door(0x0100, MODEL_DD_GRATE, PAD_EAR_016A, OBJFLAG_ILLUMINATED, OBJFLAG2_AICANNOTUSE | OBJFLAG2_80000000, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, DOORFLAG_UNBLOCKABLEOPEN, DOORTYPE_SLIDING, 0x00000008, 0x00000384, 0x00000000, 0x00000000, 0x00000300)
tag(0x01, 1)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0213, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_DEACTIVATED | OBJFLAG_MONITOR_RENDERPOSTBG, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE, 1000, 3)
tag(0x02, 1)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0214, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_DEACTIVATED | OBJFLAG_MONITOR_RENDERPOSTBG, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE, 1000, 3)
tag(0x03, 1)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0215, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_DEACTIVATED | OBJFLAG_MONITOR_RENDERPOSTBG, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE, 1000, 3)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0216, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_DEACTIVATED | OBJFLAG_MONITOR_RENDERPOSTBG, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0217, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_DEACTIVATED | OBJFLAG_MONITOR_RENDERPOSTBG, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0218, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_DEACTIVATED | OBJFLAG_MONITOR_RENDERPOSTBG, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0219, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_021A, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_021B, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
tag(0x3a, 1)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_021C, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE, 1000, 4)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_021D, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_021E, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_021F, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0220, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0221, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0222, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0223, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0224, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0225, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0226, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0227, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0228, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0229, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_022A, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_022B, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_022C, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_022D, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_022E, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_022F, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0230, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0231, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0232, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0233, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0234, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0235, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
singlemonitor(0x0100, MODEL_TVSCREEN, PAD_EAR_0236, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_0245, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED, 0, 0, 1000, 35)
chr(SPAWNFLAG_00000200, 0x2f, PAD_EAR_0146, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 200, 100, CHRFLAG0_SURPRISABLE | CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_CAN_USE_COVER | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_03, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x002f, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200, 0x30, PAD_EAR_0147, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 200, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_CAN_USE_COVER | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_03, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x0030, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200, 0x31, PAD_EAR_0148, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 200, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_CAN_USE_COVER | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_03, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x0031, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200, 0x32, PAD_EAR_0149, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 200, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_CAN_USE_COVER | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_03, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x0032, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200, 0x33, PAD_EAR_014A, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 200, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_FORCESAFETYCHECKS | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_CAN_USE_COVER | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_03, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x0033, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200, 0x00, PAD_EAR_001F, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_PATH00, -1, -1, 1000, 100, CHRFLAG0_CAN_BACKOFF | CHRFLAG0_CAN_RETREAT | CHRFLAG0_SURPRISABLE | CHRFLAG0_FORCESAFETYCHECKS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_01, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x0000, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200 | SPAWNFLAG_FIXEDHEIGHT, 0x01, PAD_EAR_0135, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, 0x0019, -1, 1000, 100, CHRFLAG0_CAN_EXAMINE_BODY | CHRFLAG0_SURPRISABLE | CHRFLAG0_FORCESAFETYCHECKS | CHRFLAG0_00008000 | CHRFLAG0_CANLOSEGUN, CHRFLAG1_DOINGIDLEANIMATION, TEAM_ENEMY, SQUADRON_01, 0x3c, 0, 0, 3, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x0001, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200 | SPAWNFLAG_FIXEDHEIGHT, 0x02, PAD_EAR_0136, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, 0x001a, -1, 1000, 100, CHRFLAG0_CAN_EXAMINE_BODY | CHRFLAG0_SURPRISABLE | CHRFLAG0_FORCESAFETYCHECKS | CHRFLAG0_00008000 | CHRFLAG0_CANLOSEGUN, CHRFLAG1_DOINGIDLEANIMATION, TEAM_ENEMY, SQUADRON_01, 0x3d, 0, 0, 3, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x0002, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200 | SPAWNFLAG_FIXEDHEIGHT, 0x3c, PAD_EAR_0134, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 1000, 100, CHRFLAG0_CAN_RETREAT | CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_CANLOSEGUN, CHRFLAG1_DOINGIDLEANIMATION, TEAM_ENEMY, SQUADRON_01, -1, 0, 0, 1, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x003c, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200 | SPAWNFLAG_FIXEDHEIGHT, 0x03, PAD_EAR_0137, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 1000, 100, CHRFLAG0_CAN_BACKOFF | CHRFLAG0_FORCESAFETYCHECKS | CHRFLAG0_CANLOSEGUN, CHRFLAG1_DOINGIDLEANIMATION, TEAM_ENEMY, SQUADRON_02, 0x3e, 0, 0, 2, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x0003, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200, 0x04, PAD_EAR_0111, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 1000, 100, CHRFLAG0_CAN_BACKOFF | CHRFLAG0_FORCESAFETYCHECKS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_02, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x0004, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200, 0x05, PAD_EAR_0112, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 1000, 100, CHRFLAG0_CAN_BACKOFF | CHRFLAG0_FORCESAFETYCHECKS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_02, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x0005, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200, 0x06, PAD_EAR_0113, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 1000, 100, CHRFLAG0_CAN_BACKOFF | CHRFLAG0_FORCESAFETYCHECKS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_02, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x0006, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200, 0x0a, PAD_EAR_0031, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_PATH02, -1, -1, 200, 100, CHRFLAG0_CAN_BACKOFF | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_04, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x000a, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200, 0x0b, PAD_EAR_0038, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_PATH02, -1, -1, 200, 100, CHRFLAG0_CAN_BACKOFF | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_04, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x000b, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200, 0x0c, PAD_EAR_0062, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_PATH03, -1, -1, 1000, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_05, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x000c, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200, 0x0d, PAD_EAR_006E, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_PATH03, -1, -1, 1000, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_05, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x000d, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200, 0x0e, PAD_EAR_0114, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 1, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_06, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x000e, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200, 0x0f, PAD_EAR_0115, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, 0x0060, -1, 100, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_NOACCURACYAFTERJAM | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_06, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x000f, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200 | SPAWNFLAG_FIXEDHEIGHT, 0x10, PAD_EAR_0116, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, 0x0060, -1, 100, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_NOACCURACYAFTERJAM | CHRFLAG0_CANLOSEGUN, CHRFLAG1_DOINGIDLEANIMATION, TEAM_ENEMY, SQUADRON_06, -1, 0, 0, 1, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x0010, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200 | SPAWNFLAG_FIXEDHEIGHT, 0x11, PAD_EAR_0117, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, 0x0065, -1, 100, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_NOACCURACYAFTERJAM | CHRFLAG0_CANLOSEGUN, CHRFLAG1_DOINGIDLEANIMATION, TEAM_ENEMY, SQUADRON_06, -1, 0, 0, 1, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x0011, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200, 0x12, PAD_EAR_0118, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, 0x0065, -1, 100, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_NOACCURACYAFTERJAM | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_06, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x0012, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200 | SPAWNFLAG_FIXEDHEIGHT, 0x13, PAD_EAR_0119, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, 0x0069, -1, 100, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_NOACCURACYAFTERJAM | CHRFLAG0_CANLOSEGUN, CHRFLAG1_DOINGIDLEANIMATION, TEAM_ENEMY, SQUADRON_06, -1, 0, 0, 1, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x0013, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200, 0x14, PAD_EAR_011A, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, 0x0069, -1, 100, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_NOACCURACYAFTERJAM | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_06, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x0014, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200, 0x15, PAD_EAR_011B, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 200, 100, CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_07, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x0015, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200, 0x16, PAD_EAR_011C, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 200, 100, CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_07, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x0016, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200, 0x17, PAD_EAR_011D, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 200, 100, CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_07, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x0017, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200, 0x18, PAD_EAR_011E, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 200, 100, CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_07, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x0018, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200, 0x19, PAD_EAR_011F, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 200, 100, CHRFLAG0_CAN_BACKOFF | CHRFLAG0_HOLD_POSITION | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_08, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x0019, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200, 0x1a, PAD_EAR_0120, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 200, 100, CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_08, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x001a, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200, 0x1b, PAD_EAR_0121, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 200, 100, CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_08, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x001b, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200, 0x1c, PAD_EAR_0122, BODY_DD_SHOCK_INF, HEAD_DDSHOCK, AILIST_INIT_BASIC_GUARD, -1, -1, 200, 100, CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_09, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRDRAGON, 0x001c, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_DRAGON)
chr(SPAWNFLAG_00000200, 0x1d, PAD_EAR_0123, BODY_DD_SHOCK_INF, HEAD_DDSHOCK, AILIST_INIT_BASIC_GUARD, -1, -1, 200, 100, CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_09, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRDRAGON, 0x001d, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_DRAGON)
chr(SPAWNFLAG_00000200 | SPAWNFLAG_FIXEDHEIGHT, 0x1e, PAD_EAR_0124, BODY_DD_SHOCK_INF, HEAD_DDSHOCK, AILIST_INIT_BASIC_GUARD, -1, -1, 1000, 20, CHRFLAG0_CAN_BACKOFF | CHRFLAG0_FORCESAFETYCHECKS | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_CANLOSEGUN, CHRFLAG1_DOINGIDLEANIMATION, TEAM_ENEMY, SQUADRON_0A, -1, 0, 0, 1, 0, 0)
weapon(0x0100, MODEL_CHRDRAGON, 0x001e, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_DRAGON)
chr(SPAWNFLAG_00000200, 0x1f, PAD_EAR_0125, BODY_DD_SHOCK_INF, HEAD_DDSHOCK, AILIST_INIT_BASIC_GUARD, -1, -1, 200, 20, CHRFLAG0_CAN_BACKOFF | CHRFLAG0_FORCESAFETYCHECKS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0A, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRDRAGON, 0x001f, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_DRAGON)
chr(SPAWNFLAG_00000200, 0x20, PAD_EAR_0126, BODY_DD_SHOCK_INF, HEAD_DDSHOCK, AILIST_INIT_BASIC_GUARD, -1, -1, 200, 20, CHRFLAG0_CAN_BACKOFF | CHRFLAG0_FORCESAFETYCHECKS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0A, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRDRAGON, 0x0020, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_DRAGON)
chr(SPAWNFLAG_00000200, 0x21, PAD_EAR_0127, BODY_DDSHOCK, HEAD_DDSHOCK, AILIST_INIT_SHOCK_GUARD, -1, -1, 200, 20, CHRFLAG0_CAN_BACKOFF | CHRFLAG0_FORCESAFETYCHECKS | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0B, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRDRAGON, 0x0021, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_DRAGON)
chr(SPAWNFLAG_00000200, 0x22, PAD_EAR_0128, BODY_DDSHOCK, HEAD_DDSHOCK, AILIST_INIT_SHOCK_GUARD, -1, -1, 200, 20, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0B, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRDRAGON, 0x0022, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_DRAGON)
chr(SPAWNFLAG_00000200, 0x23, PAD_EAR_0129, BODY_DDSHOCK, HEAD_DDSHOCK, AILIST_INIT_SHOCK_GUARD, -1, -1, 200, 20, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0B, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRDRAGON, 0x0023, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_DRAGON)
chr(SPAWNFLAG_00000200, 0x24, PAD_EAR_012A, BODY_DDSHOCK, HEAD_DDSHOCK, AILIST_INIT_SHOCK_GUARD, -1, -1, 200, 20, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0B, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRDRAGON, 0x0024, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_DRAGON)
chr(SPAWNFLAG_ANTINONINTERACTABLE, 0x3b, PAD_EAR_013B, BODY_DD_SHOCK_INF, HEAD_DDSHOCK, AILIST_K7_GUARD, -1, -1, 1, 20, CHRFLAG0_CAN_RETREAT | CHRFLAG0_FORCESAFETYCHECKS | CHRFLAG0_00008000, 0, TEAM_ENEMY, SQUADRON_0D, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRAVENGER, 0x003b, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_INVINCIBLE | OBJFLAG_00400000, 0, 0, WEAPON_K7AVENGER)
tag(0x04, -1)
chr(SPAWNFLAG_ANTINONINTERACTABLE | SPAWNFLAG_BLUESIGHT, 0x38, PAD_EAR_013C, BODY_DD_LABTECH, HEAD_RANDOM, AILIST_K7_SCIENTIST, 0x0076, -1, 1, 20, CHRFLAG0_SKIPSAFETYCHECKS, 0, TEAM_ENEMY, SQUADRON_0D, -1, 0, 0, 0, 0, 0)
chr(SPAWNFLAG_00000200, 0x29, PAD_EAR_0155, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 1000, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_NOHEAR | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0E, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x0029, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200, 0x2a, PAD_EAR_0156, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, 0x0060, -1, 1000, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_NOHEAR | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0E, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x002a, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200, 0x2b, PAD_EAR_014B, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 1000, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_NOHEAR | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0F, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x002b, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200, 0x2c, PAD_EAR_014C, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, 0x0060, -1, 1000, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_NOHEAR | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0F, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x002c, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200, 0x2d, PAD_EAR_0151, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, -1, -1, 1000, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_NOHEAR | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_00, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x002d, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_00000200, 0x2e, PAD_EAR_0152, BODY_DD_SHOCK_INF, HEAD_RANDOM, AILIST_INIT_BASIC_GUARD, 0x0060, -1, 1000, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_NOHEAR | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_00, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRCMP150, 0x002e, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_CMP150)
chr(SPAWNFLAG_ANTINONINTERACTABLE | SPAWNFLAG_BLUESIGHT, 0x35, PAD_EAR_0138, BODY_DD_LABTECH, HEAD_JAMIE, AILIST_INIT_SCIENTIST, 0x0076, -1, 1000, 10, CHRFLAG0_SKIPSAFETYCHECKS, 0, TEAM_ENEMY, SQUADRON_08, -1, 0, 0, 0, 0, 0)
chr(SPAWNFLAG_ANTINONINTERACTABLE | SPAWNFLAG_BLUESIGHT, 0x36, PAD_EAR_0139, BODY_DD_LABTECH, HEAD_JON, AILIST_INIT_SCIENTIST, -1, -1, 1000, 10, CHRFLAG0_FORCESAFETYCHECKS, 0, TEAM_ENEMY, SQUADRON_08, -1, 0, 1, 0, 0, 0)
chr(SPAWNFLAG_ANTINONINTERACTABLE | SPAWNFLAG_BLUESIGHT, 0x37, PAD_EAR_013A, BODY_DD_LABTECH, HEAD_DUNCAN2, AILIST_INIT_SCIENTIST, -1, -1, 1000, 10, 0, 0, TEAM_ENEMY, SQUADRON_08, -1, 0, 2, 0, 0, 0)
chr(SPAWNFLAG_ANTINONINTERACTABLE, 0x3a, PAD_EAR_0106, BODY_DDSHOCK, HEAD_DARLING, GAILIST_IDLE, -1, -1, 1000, 100, CHRFLAG0_CAN_RETREAT | CHRFLAG0_FORCESAFETYCHECKS | CHRFLAG0_00008000, 0, TEAM_ENEMY, SQUADRON_08, -1, 0, 0, 0, 0, 0)
chr(SPAWNFLAG_ANTINONINTERACTABLE | SPAWNFLAG_BLUESIGHT, 0x39, PAD_EAR_010C, BODY_DRCAROLL, 0x00, GAILIST_IDLE, -1, -1, 1000, 100, CHRFLAG0_CAN_RETREAT | CHRFLAG0_FORCESAFETYCHECKS | CHRFLAG0_00008000, 0, TEAM_ENEMY, SQUADRON_08, -1, 0, 0, 0, 0, 0)
tag(0x0b, 1)
singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_0246, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
tag(0x0c, 1)
singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_0247, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
tag(0x0d, 1)
singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_0248, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
tag(0x0e, 1)
singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_0249, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
tag(0x10, 1)
singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_024A, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
tag(0x11, 1)
singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_024B, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
tag(0x12, 1)
singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_024C, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
tag(0x13, 1)
singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_024D, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
tag(0x08, 3)
tag(0x14, 2)
tag(0x15, 1)
singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_024E, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
tag(0x16, 1)
singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_024F, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
tag(0x17, 1)
singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_0250, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
tag(0x18, 1)
singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_0251, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
tag(0x09, 3)
tag(0x19, 2)
tag(0x1a, 1)
singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_0252, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
tag(0x1b, 1)
singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_0253, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
tag(0x1c, 1)
singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_0254, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
tag(0x1d, 1)
singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_0255, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
tag(0x07, 3)
tag(0x0f, 2)
tag(0x1e, 1)
singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_0256, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
tag(0x1f, 1)
singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_0257, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
tag(0x20, 1)
singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_0258, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
tag(0x21, 1)
singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_0259, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE | OBJFLAG3_INTERACTSHORTRANGE, 1000, 3)
stdobject(0x0100, MODEL_LAB_TABLE, PAD_EAR_023C, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
tag(0x0a, 1)
singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_025A, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED | OBJFLAG_01000000, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE, 1000, 3)
tag(0x37, 1)
hovercar(0x00c0, MODEL_HOOVERBOT, PAD_EAR_0001, OBJFLAG_00000008 | OBJFLAG_20000000 | OBJFLAG_HOVERCAR_40000000 | OBJFLAG_HOVERCAR_ISHOVERBOT, OBJFLAG2_IMMUNETOANTI, 0, 100, 0x00000411)
tag(0x38, 1)
hovercar(0x00c0, MODEL_TESTERBOT, PAD_EAR_003B, OBJFLAG_00000008 | OBJFLAG_INVINCIBLE | OBJFLAG_HOVERCAR_40000000 | OBJFLAG_HOVERCAR_ISHOVERBOT, OBJFLAG2_IMMUNETOANTI, 0, 100, 0x00000412)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01B3, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01B4, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01B8, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01B9, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01BA, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01BB, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01BC, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
tinted_glass(0x0100, MODEL_WINDOW, PAD_EAR_01B5, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF, 0, 1000, 0x00c80384)
tinted_glass(0x0100, MODEL_WINDOW, PAD_EAR_01B6, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF, 0, 1000, 0x00c80384)
tinted_glass(0x0100, MODEL_WINDOW, PAD_EAR_01B7, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF, 0, 1000, 0x00c80384)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01BD, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01BE, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01BF, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, OBJFLAG2_BULLETPROOF, 0, 1000)
tag(0x3e, 1)
stdobject(0x0100, MODEL_DD_CHAIR, PAD_EAR_020C, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_DD_DESK, PAD_EAR_020B, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_020A, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
stdobject(0x0100, MODEL_LAB_CHAIR, PAD_EAR_020D, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED, 0, 0, 1000)
stdobject(0x0100, MODEL_LAB_TABLE, PAD_EAR_020E, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_020F, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
stdobject(0x0100, MODEL_LAB_CHAIR, PAD_EAR_0211, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED, 0, 0, 1000)
stdobject(0x0100, MODEL_LAB_TABLE, PAD_EAR_0210, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
singlemonitor(0x0100, MODEL_SINISTERPC, PAD_EAR_0212, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED, OBJFLAG2_IMMUNETOANTI, 0, 1000, 3)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01D4, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01D3, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01D2, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01D1, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01D0, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01CF, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01CE, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01CD, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01C7, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01C6, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01C5, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01C4, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01C3, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01C2, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01C1, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01C0, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01CB, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01CA, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01C9, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01C8, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01CC, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01DD, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01E4, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01E3, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01E2, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01E1, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01E0, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01DF, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01DE, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01E5, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01E6, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01E7, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01E8, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01E9, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01EA, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01EB, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01EC, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01D5, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01D6, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01D7, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01D8, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01D9, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01DA, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01DB, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01DC, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01ED, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01EE, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_EAR_01EF, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF, 0, 1000)
tag(0x3d, 1)
stdobject(0x0100, MODEL_DD_REDSOFA, PAD_EAR_01A9, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED | OBJFLAG_INVINCIBLE, OBJFLAG2_00000100 | OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
stdobject(0x0100, MODEL_DD_REDARM, PAD_EAR_01AA, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED, OBJFLAG2_00000100 | OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
tag(0x3c, 1)
stdobject(0x0100, MODEL_DD_REDARM, PAD_EAR_01AB, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED | OBJFLAG_INVINCIBLE, OBJFLAG2_00000100 | OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
stdobject(0x0100, MODEL_DD_REDARM, PAD_EAR_01AC, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED, OBJFLAG2_00000100 | OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
stdobject(0x0100, MODEL_DD_REDSOFA, PAD_EAR_01AD, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED, OBJFLAG2_00000100 | OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
stdobject(0x0100, MODEL_DD_REDSOFA, PAD_EAR_01AE, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED, OBJFLAG2_00000100 | OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
stdobject(0x0100, MODEL_DD_REDSOFA, PAD_EAR_01AF, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED, OBJFLAG2_00000100 | OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
stdobject(0x0100, MODEL_DD_REDARM, PAD_EAR_01B0, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED, OBJFLAG2_00000100 | OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
stdobject(0x0100, MODEL_DD_REDARM, PAD_EAR_01B1, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED, OBJFLAG2_00000100 | OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
stdobject(0x0100, MODEL_DD_REDARM, PAD_EAR_01B2, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED, OBJFLAG2_00000100 | OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
stdobject(0x0200, MODEL_DD_PLANTSPIKE, PAD_EAR_01A1, OBJFLAG_00000001 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED | OBJFLAG_AISEETHROUGH, OBJFLAG2_00000100 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_SHOOTTHROUGH, 0, 1000)
stdobject(0x0166, MODEL_DD_PLANTRUBBER, PAD_EAR_01A2, OBJFLAG_00000001 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED | OBJFLAG_AISEETHROUGH, OBJFLAG2_00000100 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_SHOOTTHROUGH, 0, 1000)
stdobject(0x0200, MODEL_DD_PLANTSPIKE, PAD_EAR_01A3, OBJFLAG_00000001 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED | OBJFLAG_AISEETHROUGH, OBJFLAG2_00000100 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_SHOOTTHROUGH, 0, 1000)
stdobject(0x0180, MODEL_DD_PLANTSPIKE, PAD_EAR_01A4, OBJFLAG_00000001 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED | OBJFLAG_AISEETHROUGH, OBJFLAG2_00000100 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_SHOOTTHROUGH, 0, 1000)
stdobject(0x0180, MODEL_DD_PLANTRUBBER, PAD_EAR_01A5, OBJFLAG_00000001 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED | OBJFLAG_AISEETHROUGH, OBJFLAG2_00000100 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_SHOOTTHROUGH, 0, 1000)
stdobject(0x0200, MODEL_DD_PLANTSPIKE, PAD_EAR_01A6, OBJFLAG_00000001 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED | OBJFLAG_AISEETHROUGH, OBJFLAG2_00000100 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_SHOOTTHROUGH, 0, 1000)
stdobject(0x0180, MODEL_DD_PLANTRUBBER, PAD_EAR_01A7, OBJFLAG_00000001 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED | OBJFLAG_AISEETHROUGH, OBJFLAG2_00000100 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_SHOOTTHROUGH, 0, 1000)
stdobject(0x0133, MODEL_DD_PLANTSPIKE, PAD_EAR_01A8, OBJFLAG_00000001 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED | OBJFLAG_AISEETHROUGH, OBJFLAG2_00000100 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_SHOOTTHROUGH, 0, 1000)
stdobject(0x00e6, MODEL_A51_CRATE2, PAD_EAR_025D, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x00e6, MODEL_A51_CRATE2, PAD_EAR_025E, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x00e6, MODEL_A51_CRATE2, PAD_EAR_025F, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x00e6, MODEL_A51_CRATE2, PAD_EAR_0260, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x00e6, MODEL_A51_CRATE2, PAD_EAR_0261, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_EAR_0262, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_EAR_0263, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_EAR_0264, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_EAR_0265, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x00e6, MODEL_A51_CRATE2, PAD_EAR_0266, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x00e6, MODEL_A51_CRATE2, PAD_EAR_0267, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_EAR_0268, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0033, MODEL_QUADPOD, PAD_EAR_013D, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED, OBJFLAG2_IMMUNETOANTI, 0, 1000)
/**
* @bug: This should be using MODEL_CHRNIGHTSIGHT.
*
* When picking up night vision the game checks if the perfect darkness
* cheat is enabled and skips adding the night vision to your inventory as
* it would already be there. But because this uses IR specs instead, the
* check doesn't match and a duplicate night vision is added to the
* inventory.
*/
tag(0x05, 1)
stdobject(0x0100, MODEL_MISC_IRSPECS, PAD_EAR_013D, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED | OBJFLAG_INVINCIBLE | OBJFLAG_COLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000, OBJFLAG2_IMMUNETOANTI | OBJFLAG2_IMMUNETOGUNFIRE, OBJFLAG3_PLAYERUNDROPPABLE, 1000)
rename_object(-1, WEAPON_NIGHTVISION, L_EAR_045, L_EAR_046, L_EAR_047, L_EAR_048, L_EAR_049) // "Obtain Night Vision."
tag(0x06, 1)
#if VERSION >= VERSION_NTSC_1_0
stdobject(0x0100, MODEL_CHRSHIELD, PAD_EAR_0243, OBJFLAG_00000001 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED | OBJFLAG_INVINCIBLE | OBJFLAG_COLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000, OBJFLAG2_IMMUNETOANTI | OBJFLAG2_IMMUNETOGUNFIRE, OBJFLAG3_PLAYERUNDROPPABLE, 1000)
rename_object(-1, WEAPON_SHIELDTECHITEM, L_EAR_050, L_EAR_051, L_EAR_052, L_EAR_053, L_EAR_054) // "Obtain shield tech item."
#else
stdobject(0x0100, MODEL_CHRSHIELD, PAD_EAR_0243, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED | OBJFLAG_INVINCIBLE | OBJFLAG_COLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000, OBJFLAG2_IMMUNETOANTI | OBJFLAG2_IMMUNETOGUNFIRE, OBJFLAG3_PLAYERUNDROPPABLE, 1000)
rename_object(-1, WEAPON_BRIEFCASE, L_EAR_050, L_EAR_051, L_EAR_052, L_EAR_053, L_EAR_054) // "Obtain shield tech item."
#endif
tag(0x25, 1)
weapon(0x0180, MODEL_CHRDATATHIEF, -1, OBJFLAG_00000001, 0, 0, WEAPON_DATAUPLINK)
rename_object(-1, WEAPON_DATAUPLINK, L_EAR_055, L_EAR_056, L_EAR_057, L_EAR_058, L_EAR_059) // "Obtain Data Uplink."
tag(0x48, 1)
weapon(0x0180, MODEL_CHRDATATHIEF, -1, OBJFLAG_00000001, 0, 0, WEAPON_DATAUPLINK)
rename_object(-1, WEAPON_DATAUPLINK, L_EAR_055, L_EAR_056, L_EAR_057, L_EAR_058, L_EAR_059) // "Obtain Data Uplink."
tag(0x41, 1)
autogun(0x0099, MODEL_ROOFGUN, PAD_EAR_026B, OBJFLAG_00000004, OBJFLAG2_EXCLUDE_SA | OBJFLAG2_EXCLUDE_PA | OBJFLAG2_EXCLUDE_PD, 0, 1000, 0x026e, 0x00004000, 0xffffc000, 0x000000da, 0x000a0000)
tag(0x42, 1)
autogun(0x0099, MODEL_ROOFGUN, PAD_EAR_026C, OBJFLAG_00000004, OBJFLAG2_EXCLUDE_SA | OBJFLAG2_EXCLUDE_PA | OBJFLAG2_EXCLUDE_PD, 0, 1000, 0x026f, 0x00004000, 0xffffc000, 0x000000da, 0x000a0000)
tag(0x43, 1)
autogun(0x0099, MODEL_ROOFGUN, PAD_EAR_026D, OBJFLAG_00000004, OBJFLAG2_EXCLUDE_A | OBJFLAG2_EXCLUDE_SA, 0, 1000, 0x0270, 0x00004000, 0xffffc000, 0x000005b0, 0x000a0000)
autogun(0x0099, MODEL_ROOFGUN, PAD_EAR_026B, OBJFLAG_00000004, OBJFLAG2_EXCLUDE_A, 0, 1000, 0x026e, 0x00004000, 0xffffc000, 0x00000e38, 0x00140000)
autogun(0x0099, MODEL_ROOFGUN, PAD_EAR_026C, OBJFLAG_00000004, OBJFLAG2_EXCLUDE_A, 0, 1000, 0x026f, 0x00004000, 0xffffc000, 0x00000e38, 0x00140000)
stdobject(0x0133, MODEL_A51_CRATE2, PAD_EAR_0269, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0133, MODEL_A51_CRATE2, PAD_EAR_026A, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
tag(0x39, 1)
stdobject(0x0400, MODEL_ISOTOPE, PAD_EAR_0158, OBJFLAG_00000008 | OBJFLAG_ILLUMINATED | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOANTI | OBJFLAG2_00000100 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_SHOOTTHROUGH, 0, 1000)
stdobject(0x0400, MODEL_ISOTOPEEXPERIMENT, PAD_EAR_0157, OBJFLAG_00000001 | OBJFLAG_00000100 | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOANTI | OBJFLAG2_00000100 | OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
tag(0x49, 1)
shield(0x0100, MODEL_CHRSHIELD, PAD_EAR_027E, OBJFLAG_00000001, OBJFLAG2_EXCLUDE_SA | OBJFLAG2_EXCLUDE_PA | OBJFLAG2_EXCLUDE_PD, 0, 1000)
tag(0x4a, 1)
shield(0x0100, MODEL_CHRSHIELD, PAD_EAR_027F, OBJFLAG_00000001, OBJFLAG2_EXCLUDE_PA | OBJFLAG2_EXCLUDE_PD, 0, 1000)
tag(0x4b, 1)
ammocrate(0x0080, MODEL_MULTI_AMMO_CRATE, PAD_EAR_0271, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080, OBJFLAG2_IMMUNETOANTI, 0, 1000, AMMOTYPE_RIFLE)
tag(0x4c, 1)
ammocrate(0x0080, MODEL_MULTI_AMMO_CRATE, PAD_EAR_0272, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080, OBJFLAG2_IMMUNETOANTI, 0, 1000, AMMOTYPE_RIFLE)
tag(0x4d, 1)
ammocrate(0x0080, MODEL_MULTI_AMMO_CRATE, PAD_EAR_0273, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080, OBJFLAG2_IMMUNETOANTI, 0, 1000, AMMOTYPE_RIFLE)
tag(0x4e, 1)
ammocrate(0x0080, MODEL_MULTI_AMMO_CRATE, PAD_EAR_0274, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080, OBJFLAG2_IMMUNETOANTI, 0, 1000, AMMOTYPE_RIFLE)
tag(0x4f, 1)
ammocrate(0x0080, MODEL_MULTI_AMMO_CRATE, PAD_EAR_0275, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080, OBJFLAG2_IMMUNETOANTI, 0, 1000, AMMOTYPE_RIFLE)
tag(0x50, 1)
ammocrate(0x0080, MODEL_MULTI_AMMO_CRATE, PAD_EAR_0276, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080, OBJFLAG2_IMMUNETOANTI, 0, 1000, AMMOTYPE_RIFLE)
tag(0x51, 1)
ammocrate(0x0080, MODEL_MULTI_AMMO_CRATE, PAD_EAR_0277, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080, OBJFLAG2_IMMUNETOANTI, 0, 1000, AMMOTYPE_RIFLE)
tag(0x52, 1)
ammocrate(0x0080, MODEL_MULTI_AMMO_CRATE, PAD_EAR_0278, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080, OBJFLAG2_IMMUNETOANTI, 0, 1000, AMMOTYPE_RIFLE)
tag(0x53, 1)
weapon(0x0100, MODEL_CHRCMP150, PAD_EAR_0279, OBJFLAG_00000008, OBJFLAG2_IMMUNETOANTI, 0, WEAPON_CMP150)
tag(0x54, 1)
weapon(0x0100, MODEL_CHRCMP150, PAD_EAR_027A, OBJFLAG_00000008, OBJFLAG2_IMMUNETOANTI, 0, WEAPON_CMP150)
tag(0x55, 2)
tag(0x56, 2)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_EAR_016B, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_EAR_016C, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
tag(0x57, 2)
tag(0x58, 2)
weapon(0x0100, MODEL_CHRCMP150, PAD_EAR_027B, OBJFLAG_00000008 | OBJFLAG_UNCOLLECTABLE, OBJFLAG2_IMMUNETOANTI | OBJFLAG2_INVISIBLE, 0, WEAPON_CMP150)
weapon(0x0100, MODEL_CHRCMP150, PAD_EAR_027C, OBJFLAG_00000008 | OBJFLAG_UNCOLLECTABLE, OBJFLAG2_IMMUNETOANTI | OBJFLAG2_INVISIBLE, 0, WEAPON_CMP150)
link_guns(-1, -2)
tag(0x59, 1)
weapon(0x0080, MODEL_MULTI_AMMO_CRATE, PAD_EAR_027D, OBJFLAG_00000001, OBJFLAG2_IMMUNETOANTI, 0, WEAPON_PROXIMITYMINE)
endprops
};
s32 intro[] = {
intro_weapon(WEAPON_FALCON2, -1)
ammo(AMMOTYPE_PISTOL, 100)
ammo(AMMOTYPE_RIFLE, 50)
intro_weapon(WEAPON_EYESPY, -1)
outfit(OUTFIT_DEFAULT)
spawn(PAD_EAR_001B)
endintro
};
s32 path00[] = {
PAD_EAR_001F,
PAD_EAR_001E,
PAD_EAR_001D,
PAD_EAR_001C,
PAD_EAR_000C,
PAD_EAR_000F,
PAD_EAR_0010,
PAD_EAR_000E,
PAD_EAR_0004,
PAD_EAR_0003,
PAD_EAR_0001,
PAD_EAR_0012,
PAD_EAR_0011,
PAD_EAR_0013,
PAD_EAR_0014,
PAD_EAR_0015,
-1,
};
s32 path01[] = {
PAD_EAR_004F,
PAD_EAR_004E,
PAD_EAR_004D,
PAD_EAR_004C,
PAD_EAR_004B,
PAD_EAR_004A,
PAD_EAR_0049,
PAD_EAR_002A,
PAD_EAR_002B,
PAD_EAR_002C,
PAD_EAR_002D,
PAD_EAR_002E,
PAD_EAR_0029,
PAD_EAR_002A,
PAD_EAR_0049,
PAD_EAR_004A,
PAD_EAR_004B,
PAD_EAR_004C,
PAD_EAR_004D,
PAD_EAR_004E,
-1,
};
s32 path02[] = {
PAD_EAR_0031,
PAD_EAR_0034,
PAD_EAR_0033,
PAD_EAR_0032,
PAD_EAR_0035,
PAD_EAR_0036,
PAD_EAR_0038,
PAD_EAR_0039,
PAD_EAR_003A,
-1,
};
s32 path03[] = {
PAD_EAR_0062,
PAD_EAR_0061,
PAD_EAR_0063,
PAD_EAR_0065,
PAD_EAR_0066,
PAD_EAR_0067,
PAD_EAR_0069,
PAD_EAR_006A,
PAD_EAR_006D,
PAD_EAR_006E,
-1,
};
s32 path04[] = {
PAD_EAR_0107,
PAD_EAR_0108,
PAD_EAR_0109,
-1,
};
s32 path05[] = {
PAD_EAR_0001,
PAD_EAR_0002,
PAD_EAR_000C,
PAD_EAR_001D,
PAD_EAR_001E,
PAD_EAR_001F,
PAD_EAR_0028,
PAD_EAR_0029,
PAD_EAR_002D,
PAD_EAR_002A,
PAD_EAR_002E,
PAD_EAR_002E,
PAD_EAR_002E,
-1,
};
s32 path06[] = {
PAD_EAR_002E,
PAD_EAR_0029,
PAD_EAR_0028,
PAD_EAR_001F,
PAD_EAR_001E,
PAD_EAR_001D,
PAD_EAR_000C,
PAD_EAR_0002,
PAD_EAR_0002,
PAD_EAR_0002,
-1,
};
s32 path07[] = {
PAD_EAR_003B,
PAD_EAR_0039,
PAD_EAR_003B,
PAD_EAR_0039,
-1,
};
s32 path08[] = {
PAD_EAR_003B,
PAD_EAR_003C,
PAD_EAR_003B,
-1,
};
s32 path09[] = {
PAD_EAR_0038,
PAD_EAR_0035,
PAD_EAR_0033,
PAD_EAR_0034,
PAD_EAR_0031,
PAD_EAR_0030,
PAD_EAR_002B,
PAD_EAR_002A,
PAD_EAR_0049,
PAD_EAR_004A,
PAD_EAR_004B,
PAD_EAR_004C,
PAD_EAR_004D,
PAD_EAR_0050,
PAD_EAR_004E,
PAD_EAR_0042,
PAD_EAR_0043,
PAD_EAR_005E,
PAD_EAR_0061,
PAD_EAR_0065,
PAD_EAR_0069,
PAD_EAR_006D,
PAD_EAR_006B,
PAD_EAR_006C,
PAD_EAR_00BD,
PAD_EAR_00BE,
-1,
};
s32 path10[] = {
PAD_EAR_00BE,
PAD_EAR_012E,
PAD_EAR_012F,
PAD_EAR_0130,
PAD_EAR_00C7,
PAD_EAR_00CD,
PAD_EAR_00C8,
PAD_EAR_00C4,
PAD_EAR_0130,
PAD_EAR_012F,
PAD_EAR_012E,
PAD_EAR_00BE,
PAD_EAR_00BD,
PAD_EAR_011C,
PAD_EAR_00BE,
-1,
};
s32 path11[] = {
PAD_EAR_003B,
PAD_EAR_003B,
PAD_EAR_003B,
-1,
};
s32 path12[] = {
PAD_EAR_007F,
PAD_EAR_007F,
PAD_EAR_007F,
-1,
};
s32 path13[] = {
PAD_EAR_0080,
PAD_EAR_0080,
PAD_EAR_0080,
-1,
};
#define init_path(pathid) \
set_chr_dodge_rating(2, 10) \
set_accuracy(1) \
set_reaction_speed(20) \
set_chr_maxdamage(CHR_SELF, 40) \
add_health_or_armor(0) \
set_recovery_speed(0) \
set_shield(0) \
assign_path(pathid) \
start_patrol \
set_ailist(CHR_SELF, GAILIST_UNALERTED_0004)
u8 func040c_start_path00[] = {
init_path(0)
endlist
};
u8 func040d_start_path01[] = {
init_path(1)
endlist
};
u8 func040e_start_path02[] = {
init_path(2)
endlist
};
u8 func040f_start_path03[] = {
init_path(3)
endlist
};
u8 func0410_start_path04[] = {
init_path(4)
endlist
};
/**
* @unused
*
* The function doesn't do any checks for detecting Jo, so the guard would
* ignore you if it were assigned.
*/
u8 func0414_walk_3_pads[] = {
label(0x03)
walk_to_pad(PAD_EAR_0002)
beginloop(0x06)
if_chr_stopped(/*goto*/ 0x2f)
endloop(0x06)
label(0x2f)
walk_to_pad(PAD_EAR_0003)
beginloop(0x04)
if_chr_stopped(/*goto*/ 0x08)
endloop(0x04)
label(0x08)
walk_to_pad(PAD_EAR_0001)
beginloop(0x09)
if_chr_stopped(/*goto*/ 0x0a)
endloop(0x09)
label(0x0a)
goto_first(0x03)
endlist
};
/**
* Unused.
*/
u8 func0401_init_chr_with_flag[] = {
set_self_chrflag(CHRCFLAG_00000200)
set_ailist(CHR_SELF, GAILIST_UNALERTED_0001)
endlist
};
u8 func0405_init_scientist[] = {
set_chr_maxdamage(CHR_SELF, 20)
set_ailist(CHR_SELF, AILIST_SCIENTIST)
endlist
};
u8 func0404_scientist[] = {
set_shotlist(AILIST_SCIENTIST)
if_chr_dead(CHR_SELF, /*goto*/ 0x2f)
if_chr_death_animation_finished(CHR_SELF, /*goto*/ 0x2f)
if_chr_knockedout(CHR_SELF, /*goto*/ 0x2f)
goto_next(0x06)
label(0x2f)
dprint 'N','I','S','D','E','A','D','\n',0,
set_shotlist(GAILIST_IDLE)
set_ailist(CHR_SELF, GAILIST_IDLE)
label(0x06)
dprint 'N','I','S','2','\n',0,
if_just_injured(CHR_SELF, /*goto*/ 0x2f)
goto_next(0x06)
label(0x2f)
beginloop(0x10)
if_chr_stopped(/*goto*/ 0x2f)
endloop(0x10)
label(0x2f)
set_ailist(CHR_SELF, AILIST_INIT_NASTY_SCIENTIST)
label(0x06)
stop_chr
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_in_sight(/*goto*/ 0x2f)
if_distance_to_target_lt(500, /*goto*/ 0x2f)
endloop(0x04)
label(0x2f)
if_stage_flag_eq(STAGEFLAG_ONE_SCIENTIST_DONE, TRUE, /*goto*/ 0x06)
set_stage_flag(STAGEFLAG_ONE_SCIENTIST_DONE)
goto_next(0x03)
label(0x06)
if_stage_flag_eq(STAGEFLAG_TWO_SCIENTISTS_DONE, TRUE, /*goto*/ 0x06)
set_stage_flag(STAGEFLAG_TWO_SCIENTISTS_DONE)
goto_next(0x03)
label(0x06)
set_stage_flag(STAGEFLAG_THREE_SCIENTISTS_DONE)
if_stage_flag_eq(STAGEFLAG_THREE_SCIENTISTS_DONE, FALSE, /*goto*/ 0x03)
set_ailist(CHR_SELF, AILIST_INIT_NASTY_SCIENTIST)
label(0x03)
if_chr_in_room(CHR_P1P2, 0x00, 0x0031, /*goto*/ 0x6a)
if_chr_in_room(CHR_P1P2, 0x00, 0x0032, /*goto*/ 0x6a)
if_chr_in_room(CHR_P1P2, 0x00, 0x0042, /*goto*/ 0x6d)
if_chr_in_room(CHR_P1P2, 0x00, 0x0043, /*goto*/ 0x6d)
goto_next(0x06)
label(0x6a)
chr_do_animation(ANIM_COWER_0229, -1, -1, CHRANIMFLAG_SLOWUPDATE, 10, CHR_SELF, 2)
beginloop(0x6b)
if_chr_dead(0x2b, /*goto*/ 0x2f)
if_chr_death_animation_finished(0x2b, /*goto*/ 0x2f)
if_chr_knockedout(0x2b, /*goto*/ 0x2f)
if_chr_stopped(/*goto*/ 0x6c)
reloop(0x6b)
label(0x2f)
if_chr_dead(0x2c, /*goto*/ 0x06)
if_chr_death_animation_finished(0x2c, /*goto*/ 0x06)
if_chr_knockedout(0x2c, /*goto*/ 0x06)
if_chr_stopped(/*goto*/ 0x6c)
endloop(0x6b)
label(0x6c)
goto_first(0x6a)
label(0x6d)
chr_do_animation(ANIM_COWER_0229, -1, -1, CHRANIMFLAG_SLOWUPDATE, 10, CHR_SELF, 2)
beginloop(0x6e)
if_chr_dead(0x2d, /*goto*/ 0x2f)
if_chr_death_animation_finished(0x2d, /*goto*/ 0x2f)
if_chr_knockedout(0x2d, /*goto*/ 0x2f)
if_chr_stopped(/*goto*/ 0x6f)
reloop(0x6e)
label(0x2f)
if_chr_dead(0x2e, /*goto*/ 0x06)
if_chr_death_animation_finished(0x2e, /*goto*/ 0x06)
if_chr_knockedout(0x2e, /*goto*/ 0x06)
if_chr_stopped(/*goto*/ 0x6f)
endloop(0x6e)
label(0x6f)
goto_first(0x6d)
label(0x06)
restart_timer
label(0x08)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x09)
beginloop(0x09)
if_sound_finished(CHANNEL_6, /*goto*/ 0x2f)
endloop(0x09)
label(0x2f)
if_target_in_fov_left(10, /*goto*/ 0x06)
if_timer_gt(60, /*goto*/ 0x06)
goto_first(0x09)
label(0x06)
dprint 'T','A','L','K',' ','1','\n',0,
say_quip(CHR_TARGET, 0x0a, 0xff, 0x00, 0xff, 0x81, 0x03, 0x08)
restart_timer
stop_chr
beginloop(0x56)
if_timer_lt(120, /*goto*/ 0x2f)
if_chr_in_view(/*goto*/ 0x06)
label(0x2f)
endloop(0x56)
label(0x06)
dprint 'T','A','L','K',' ','1','\n',0,
say_quip(CHR_TARGET, 0x0b, 0xff, 0x00, 0xff, 0x81, 0x04, 0x09)
restart_timer
beginloop(0x57)
if_timer_gt(120, /*goto*/ 0x06)
endloop(0x57)
label(0x06)
label(0x0a)
say_quip(CHR_TARGET, 0x0c, 0xff, 0x00, 0xff, 0x81, 0x05, 0x08)
restart_timer
chr_do_animation(ANIM_SURRENDER_002E, 0, -1, CHRANIMFLAG_SLOWUPDATE, 16, CHR_SELF, 2)
beginloop(0x0b)
if_target_in_fov_left(10, /*goto*/ 0x06)
if_timer_gt(90, /*goto*/ 0x06)
endloop(0x0b)
label(0x06)
if_self_flag_bankx_eq(CHRFLAG0_SKIPSAFETYCHECKS, TRUE, BANK_0, /*goto*/ 0x06)
if_self_flag_bankx_eq(CHRFLAG0_FORCESAFETYCHECKS, TRUE, BANK_0, /*goto*/ 0x2f)
set_pad_preset_to_investigation_terminal(OBJ_GOODTERM3)
goto_next(0x12)
label(0x06)
set_pad_preset_to_investigation_terminal(OBJ_GOODTERM1)
goto_next(0x12)
label(0x2f)
set_pad_preset_to_investigation_terminal(OBJ_GOODTERM2)
label(0x12)
go_to_target_pad(SPEED_JOG)
beginloop(0x0c)
if_chr_stopped(/*goto*/ 0x06)
endloop(0x0c)
label(0x06)
if_self_flag_bankx_eq(CHRFLAG0_SKIPSAFETYCHECKS, TRUE, BANK_0, /*goto*/ 0x06)
if_self_flag_bankx_eq(CHRFLAG0_FORCESAFETYCHECKS, TRUE, BANK_0, /*goto*/ 0x2f)
if_object_in_good_condition(OBJ_GOODTERM3, /*goto*/ 0x19)
say_quip(CHR_TARGET, 0x10, 0xff, 0x00, 0xff, 0x81, 0x09, 0x08)
show_hudmsg_top_middle(CHR_TARGET, L_EAR_044, COLOR_00_GREEN) // "It appears someone has broken my PC."
goto_next(0x0e)
label(0x19)
if_stage_flag_eq(STAGEFLAG_SHUT_DOWN_EXPERIMENT3, FALSE, /*goto*/ 0x15)
say_quip(CHR_TARGET, 0x0f, 0xff, 0x00, 0xff, 0x81, 0x08, 0x08)
goto_next(0x0e)
label(0x15)
set_stage_flag(STAGEFLAG_SHUT_DOWN_EXPERIMENT3)
say_quip(CHR_TARGET, 0x0d, 0xff, 0x00, 0xff, 0x81, 0x06, 0x08)
assign_sound(SFX_01C3, CHANNEL_5)
control_sound_from_object(CHANNEL_5, OBJ_GOODTERM3, TRUE)
goto_next(0x0f)
label(0x06)
if_object_in_good_condition(OBJ_GOODTERM1, /*goto*/ 0x19)
say_quip(CHR_TARGET, 0x10, 0xff, 0x00, 0xff, 0x81, 0x09, 0x08)
goto_next(0x0e)
label(0x19)
if_stage_flag_eq(STAGEFLAG_SHUT_DOWN_EXPERIMENT1, FALSE, /*goto*/ 0x16)
say_quip(CHR_TARGET, 0x0f, 0xff, 0x00, 0xff, 0x81, 0x08, 0x08)
goto_next(0x0e)
label(0x16)
set_stage_flag(STAGEFLAG_SHUT_DOWN_EXPERIMENT1)
say_quip(CHR_TARGET, 0x0d, 0xff, 0x00, 0xff, 0x81, 0x06, 0x08)
assign_sound(SFX_01C3, CHANNEL_5)
control_sound_from_object(CHANNEL_5, OBJ_GOODTERM1, TRUE)
goto_next(0x0f)
label(0x2f)
if_object_in_good_condition(OBJ_GOODTERM1, /*goto*/ 0x19)
say_quip(CHR_TARGET, 0x10, 0xff, 0x00, 0xff, 0x81, 0x09, 0x08)
goto_next(0x0e)
label(0x19)
if_stage_flag_eq(STAGEFLAG_SHUT_DOWN_EXPERIMENT2, FALSE, /*goto*/ 0x17)
say_quip(CHR_TARGET, 0x0f, 0xff, 0x00, 0xff, 0x81, 0x08, 0x08)
goto_next(0x0e)
label(0x17)
set_stage_flag(STAGEFLAG_SHUT_DOWN_EXPERIMENT2)
say_quip(CHR_TARGET, 0x0d, 0xff, 0x00, 0xff, 0x81, 0x06, 0x08)
assign_sound(SFX_01C3, CHANNEL_5)
control_sound_from_object(CHANNEL_5, OBJ_GOODTERM2, TRUE)
goto_next(0x0f)
label(0x0f)
show_hudmsg(CHR_TARGET, L_EAR_028) // "Powering down active systems."
speak(CHR_TARGET, 0xffff, SFX_TYPING_8118, CHANNEL_9, COLOR_00_GREEN) // unknown text
chr_do_animation(ANIM_STANDING_TYPE_ONE_HAND, 0, 193, CHRANIMFLAG_SLOWUPDATE, 16, CHR_SELF, 2)
beginloop(0x0d)
if_chr_stopped(/*goto*/ 0x06)
endloop(0x0d)
label(0x06)
show_hudmsg(CHR_TARGET, L_EAR_029) // "Experiment has been shut down."
stop_chr
beginloop(0x0e)
endloop(0x0e)
endlist
};
u8 func0407_init_nasty_scientist[] = {
set_ailist(CHR_SELF, AILIST_NASTY_SCIENTIST)
endlist
};
u8 func0406_nasty_scientist[] = {
set_shotlist(AILIST_NASTY_SCIENTIST)
dprint 'N','A','S','T','Y','1','\n',0,
if_chr_dead(CHR_SELF, /*goto*/ 0x2f)
if_chr_death_animation_finished(CHR_SELF, /*goto*/ 0x2f)
if_chr_knockedout(CHR_SELF, /*goto*/ 0x2f)
goto_next(0x06)
label(0x2f)
dprint 'N','A','S','T','Y',' ','D','E','A','D','\n',0,
set_shotlist(GAILIST_IDLE)
set_ailist(CHR_SELF, GAILIST_IDLE)
label(0x06)
dprint 'N','A','S','T','Y','2','\n',0,
if_just_injured(CHR_SELF, /*goto*/ 0x2f)
if_num_times_shot_lt(1, /*goto*/ 0x06)
label(0x2f)
play_sound(MP3_028C, CHANNEL_7)
beginloop(0x10)
if_chr_stopped(/*goto*/ 0x06)
endloop(0x10)
label(0x06)
if_self_flag_bankx_eq(CHRFLAG0_SKIPSAFETYCHECKS, TRUE, BANK_0, /*goto*/ 0x06)
if_self_flag_bankx_eq(CHRFLAG0_FORCESAFETYCHECKS, TRUE, BANK_0, /*goto*/ 0x2f)
set_pad_preset_to_investigation_terminal(OBJ_ALARMTERM3)
goto_next(0x12)
label(0x06)
set_pad_preset_to_investigation_terminal(OBJ_ALARMTERM1)
goto_next(0x12)
label(0x2f)
set_pad_preset_to_investigation_terminal(OBJ_ALARMTERM2)
label(0x12)
if_num_times_shot_lt(1, /*goto*/ 0x13)
go_to_target_pad(SPEED_JOG)
goto_next(0x55)
label(0x13)
label(0x08)
restart_timer
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x09)
beginloop(0x09)
if_sound_finished(CHANNEL_6, /*goto*/ 0x2f)
reloop(0x09)
label(0x2f)
if_target_in_fov_left(10, /*goto*/ 0x06)
if_timer_gt(60, /*goto*/ 0x06)
endloop(0x09)
label(0x06)
say_quip(CHR_TARGET, 0x0a, 0xff, 0x00, 0xff, 0x81, 0x03, 0x08)
restart_timer
beginloop(0x56)
if_timer_gt(120, /*goto*/ 0x06)
endloop(0x56)
label(0x06)
dprint 'T','A','L','K',' ','1','\n',0,
say_quip(CHR_TARGET, 0x0b, 0xff, 0x00, 0xff, 0x81, 0x04, 0x09)
restart_timer
beginloop(0x57)
if_timer_gt(120, /*goto*/ 0x0a)
endloop(0x57)
label(0x0a)
restart_timer
stop_chr
say_quip(CHR_TARGET, 0x0c, 0xff, 0x00, 0xff, 0x81, 0x05, 0x08)
beginloop(0x0b)
if_timer_gt(90, /*goto*/ 0x55)
endloop(0x0b)
label(0x55)
go_to_target_pad(SPEED_JOG)
beginloop(0x0c)
if_chr_stopped(/*goto*/ 0x06)
endloop(0x0c)
label(0x06)
if_self_flag_bankx_eq(CHRFLAG0_SKIPSAFETYCHECKS, TRUE, BANK_0, /*goto*/ 0x06)
if_self_flag_bankx_eq(CHRFLAG0_FORCESAFETYCHECKS, TRUE, BANK_0, /*goto*/ 0x2f)
if_object_in_good_condition(OBJ_ALARMTERM3, /*goto*/ 0x30)
goto_next(0x11)
label(0x30)
set_stage_flag(STAGEFLAG_ALARM3_ACTIVE)
assign_sound(SFX_TYPING_8118, CHANNEL_6)
control_sound_from_object(CHANNEL_6, OBJ_GOODTERM3, TRUE)
goto_next(0x0f)
label(0x06)
if_object_in_good_condition(OBJ_ALARMTERM1, /*goto*/ 0x30)
goto_next(0x11)
label(0x30)
set_stage_flag(STAGEFLAG_ALARM1_ACTIVE)
assign_sound(SFX_TYPING_8118, CHANNEL_6)
control_sound_from_object(CHANNEL_6, OBJ_GOODTERM1, TRUE)
goto_next(0x0f)
label(0x2f)
if_object_in_good_condition(OBJ_ALARMTERM2, /*goto*/ 0x30)
goto_next(0x11)
label(0x30)
set_stage_flag(STAGEFLAG_ALARM2_ACTIVE)
assign_sound(SFX_TYPING_8118, CHANNEL_6)
control_sound_from_object(CHANNEL_6, OBJ_GOODTERM2, TRUE)
goto_next(0x0f)
label(0x11)
say_quip(CHR_TARGET, 0x10, 0xff, 0x00, 0xff, 0x81, 0x09, 0x08)
goto_next(0x78)
label(0x0f)
speak(CHR_TARGET, 0xffff, SFX_TYPING_8118, CHANNEL_9, COLOR_00_GREEN) // unknown text
say_quip(CHR_TARGET, 0x0e, 0xff, 0x00, 0xff, 0x81, 0x07, 0x08)
chr_do_animation(ANIM_STANDING_TYPE_ONE_HAND, 0, 193, CHRANIMFLAG_SLOWUPDATE, 16, CHR_SELF, 2)
beginloop(0x0d)
if_chr_stopped(/*goto*/ 0x30)
endloop(0x0d)
label(0x30)
activate_alarm
label(0x78)
label(0x06)
stop_chr
beginloop(0x0e)
endloop(0x0e)
endlist
};
u8 func1009_weaponscache[] = {
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_activated_object(CHR_TARGET, OBJ_CACHETERMINAL, /*goto*/ 0x2f)
endloop(0x04)
label(0x2f)
if_chr_has_hiddenflag(CHR_BOND, CHRHFLAG_DETECTED, /*goto*/ 0x2f)
show_hudmsg(CHR_TARGET, L_EAR_098) // "Secret weapons compartment opened."
play_sound(SFX_00F7, -1)
assign_sound(SFX_043B, CHANNEL_5)
control_sound_from_object(CHANNEL_5, OBJ_CMP150_1, TRUE)
disable_object(OBJ_CACHEDOOR1)
disable_object(OBJ_CACHEDOOR2)
unset_object_flag(OBJ_CMP150_1, OBJFLAG_UNCOLLECTABLE)
unset_object_flag2(OBJ_CMP150_1, OBJFLAG2_INVISIBLE)
unset_object_flag(OBJ_CMP150_2, OBJFLAG_UNCOLLECTABLE)
unset_object_flag2(OBJ_CMP150_2, OBJFLAG2_INVISIBLE)
set_object_flag2(OBJ_CMP150_1, OBJFLAG2_PICKUPWITHOUTLOS)
set_object_flag2(OBJ_CMP150_2, OBJFLAG2_PICKUPWITHOUTLOS)
set_ailist(CHR_SELF, GAILIST_IDLE)
label(0x2f)
show_hudmsg(CHR_TARGET, L_EAR_099) // "Enemy detected - weapon cache locked."
play_sound(SFX_00F7, -1)
unset_stage_flag(STAGEFLAG_BOT_ACTIVE)
unset_stage_flag(STAGEFLAG_BOT_REPROGRAMMED)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
/**
* The second terminal you're supposed to activate.
*
* If turning the bot on without reprogramming it first, the bot will run
* without a program where it moves in a small circle at slow speed.
*
* If turning the bot on after reprogramming it will start the maintenance
* cycle (lasers).
*/
u8 func1002_bot_activation_terminal[] = {
if_difficulty_lt(DIFF_SA, /*goto*/ 0x2f)
goto_next(0x04)
label(0x2f)
set_ailist(CHR_SELF, GAILIST_IDLE)
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_activated_object(CHR_TARGET, OBJ_BOT_ACTIVATION_TERMINAL, /*goto*/ 0x2f)
reloop(0x04)
label(0x2f)
if_objective_failed(1, /*goto*/ 0x0b)
if_stage_flag_eq(STAGEFLAG_BOT_ACTIVE_MAINTENANCE, TRUE, /*goto*/ 0x08)
if_stage_flag_eq(STAGEFLAG_BOT_ACTIVE, TRUE, /*goto*/ 0x0a)
if_stage_flag_eq(STAGEFLAG_BOT_REPROGRAMMED, TRUE, /*goto*/ 0x2f)
// Activating prior to reprogramming
play_sound(SFX_01CA, -1)
assign_sound(SFX_01C5, CHANNEL_3)
play_sound_from_object(CHANNEL_3, OBJ_PURPLEBOT, 1, 600, 800)
show_hudmsg(CHR_TARGET, L_EAR_015) // "Maintenance robots activated."
set_stage_flag(STAGEFLAG_BOT_ACTIVE)
set_stage_flag(STAGEFLAG_BOT_ACTIVE_NOPROGRAM)
reloop(0x04)
// Activating after reprogramming
label(0x2f)
show_hudmsg(CHR_TARGET, L_EAR_015) // "Maintenance robots activated."
set_stage_flag(STAGEFLAG_BOT_ACTIVE)
yield
play_sound(SFX_00F7, -1)
show_hudmsg(CHR_TARGET, L_EAR_018) // "Maintenance cycle activated."
set_stage_flag(STAGEFLAG_BOT_ACTIVE_MAINTENANCE)
reloop(0x04)
// Attempting to deactivate while bot reprogrammed and running
label(0x08)
play_sound(SFX_00F7, -1)
show_hudmsg(CHR_TARGET, L_EAR_020) // "Operation not allowed - robots busy."
restart_timer
beginloop(0x09)
if_timer_gt(120, /*goto*/ 0x06)
endloop(0x09)
label(0x06)
reloop(0x04)
// Deactivating
label(0x0a)
show_hudmsg(CHR_TARGET, L_EAR_021) // "Maintenance robots deactivated."
unset_stage_flag(STAGEFLAG_BOT_ACTIVE)
unset_stage_flag(STAGEFLAG_BOT_ACTIVE_CLEANING)
unset_stage_flag(STAGEFLAG_BOT_ACTIVE_NOPROGRAM)
play_sound(SFX_01C9, -1)
mute_channel(CHANNEL_3)
reloop(0x04)
label(0x0b)
play_sound(SFX_00F7, -1)
show_hudmsg(CHR_TARGET, L_EAR_023) // "Maintenance robot system offline."
endloop(0x04)
endlist
};
/**
* The first terminal you're supposed to activate.
*
* If activated while the bot is offline, the bot is reprogrammed with the
* maintenance cycle (ie. lasers) but still needs to be started.
*
* If activated while the bot is running with no program, the bot is
* reprogrammed with the cleaning cycle (up and down the room at medium speed).
*/
u8 func1003_bot_programming_terminal[] = {
if_difficulty_lt(DIFF_SA, /*goto*/ 0x2f)
goto_next(0x04)
label(0x2f)
set_ailist(CHR_SELF, GAILIST_IDLE)
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_activated_object(CHR_TARGET, OBJ_BOT_PROGRAMMING_TERMINAL, /*goto*/ 0x2f)
reloop(0x04)
label(0x2f)
if_objective_failed(1, /*goto*/ 0x0b)
if_stage_flag_eq(STAGEFLAG_BOT_ACTIVE_MAINTENANCE, TRUE, /*goto*/ 0x09)
if_stage_flag_eq(STAGEFLAG_BOT_ACTIVE_CLEANING, TRUE, /*goto*/ 0x09)
// Reprogramming
play_sound(SFX_00F7, -1)
show_hudmsg(CHR_TARGET, L_EAR_016) // "Maintenance robots reprogrammed."
set_stage_flag(STAGEFLAG_BOT_REPROGRAMMED)
if_stage_flag_eq(STAGEFLAG_BOT_ACTIVE, TRUE, /*goto*/ 0x2f)
reloop(0x04)
label(0x2f)
yield
play_sound(SFX_00F7, -1)
show_hudmsg(CHR_TARGET, L_EAR_019) // "Routine cleaning cycle activated."
set_stage_flag(STAGEFLAG_BOT_ACTIVE_CLEANING)
restart_timer
beginloop(0x08)
if_timer_gt(300, /*goto*/ 0x06)
endloop(0x08)
label(0x06)
reloop(0x04)
// Attempting to reprogram while bot already reprogrammed and running
label(0x09)
play_sound(SFX_00F7, -1)
show_hudmsg(CHR_TARGET, L_EAR_020) // "Operation not allowed - robots busy."
restart_timer
beginloop(0x0a)
if_timer_gt(120, /*goto*/ 0x06)
endloop(0x0a)
label(0x06)
reloop(0x04)
label(0x0b)
show_hudmsg(CHR_TARGET, L_EAR_023) // "Maintenance robot system offline."
endloop(0x04)
endlist
};
u8 func1004_check_items_collected[] = {
yield
set_object_flag3(OBJ_K7AVENGER, OBJFLAG3_PLAYERUNDROPPABLE)
set_object_flag3(OBJ_NIGHTVISION, OBJFLAG3_PLAYERUNDROPPABLE)
set_object_flag3(OBJ_SHIELD, OBJFLAG3_PLAYERUNDROPPABLE)
beginloop(0x04)
if_chr_has_object(CHR_BOND, OBJ_K7AVENGER, /*goto*/ 0x2f)
if_chr_has_object(CHR_COOP, OBJ_K7AVENGER, /*goto*/ 0x2f)
reloop(0x04)
label(0x2f)
if_chr_has_object(CHR_BOND, OBJ_NIGHTVISION, /*goto*/ 0x2f)
if_chr_has_object(CHR_COOP, OBJ_NIGHTVISION, /*goto*/ 0x2f)
reloop(0x04)
label(0x2f)
if_chr_has_object(CHR_BOND, OBJ_SHIELD, /*goto*/ 0x2f)
if_chr_has_object(CHR_COOP, OBJ_SHIELD, /*goto*/ 0x2f)
endloop(0x04)
label(0x2f)
yield
set_stage_flag(STAGEFLAG_ALL_ITEMS_COLLECTED)
unset_stage_flag(STAGEFLAG_ITEMS_UNCOLLECTABLE)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1018_item_pickup_messages[] = {
if_difficulty_lt(DIFF_PA, /*goto*/ 0x0d)
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
if_stage_flag_eq(STAGEFLAG_HAS_K7AVENGER, TRUE, /*goto*/ 0x2f)
if_chr_has_object(CHR_P1P2, OBJ_K7AVENGER, /*goto*/ 0x06)
goto_next(0x2f)
label(0x06)
show_hudmsg(CHR_P1P2, L_EAR_086) // "Experimental item 1 acquired."
set_stage_flag(STAGEFLAG_HAS_K7AVENGER)
label(0x2f)
if_stage_flag_eq(STAGEFLAG_HAS_NIGHTVISION, TRUE, /*goto*/ 0x2f)
if_chr_has_object(CHR_P1P2, OBJ_NIGHTVISION, /*goto*/ 0x06)
goto_next(0x2f)
label(0x06)
show_hudmsg(CHR_P1P2, L_EAR_087) // "Experimental item 2 acquired."
set_stage_flag(STAGEFLAG_HAS_NIGHTVISION)
label(0x2f)
if_stage_flag_eq(STAGEFLAG_HAS_SHIELD, TRUE, /*goto*/ 0x2f)
if_chr_has_object(CHR_P1P2, OBJ_SHIELD, /*goto*/ 0x06)
goto_next(0x2f)
label(0x06)
show_hudmsg(CHR_P1P2, L_EAR_088) // "Experimental item 3 acquired."
set_stage_flag(STAGEFLAG_HAS_SHIELD)
label(0x2f)
endloop(0x04)
label(0x0d)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1005_check_unacceptable_casualties[] = {
beginloop(0x04)
if_chr_dead(0x35, /*goto*/ 0x08)
if_chr_death_animation_finished(0x35, /*goto*/ 0x08)
if_chr_dead(0x36, /*goto*/ 0x09)
if_chr_death_animation_finished(0x36, /*goto*/ 0x09)
if_chr_dead(0x37, /*goto*/ 0x0a)
if_chr_death_animation_finished(0x37, /*goto*/ 0x0a)
if_chr_dead(0x38, /*goto*/ 0x0a)
if_chr_death_animation_finished(0x38, /*goto*/ 0x0a)
reloop(0x04)
label(0x08)
if_difficulty_lt(DIFF_PA, /*goto*/ 0x2f)
goto_next(0x0f)
if_chr_dead(0x36, /*goto*/ 0x0b)
if_chr_death_animation_finished(0x36, /*goto*/ 0x0b)
if_chr_dead(0x37, /*goto*/ 0x0c)
if_chr_death_animation_finished(0x37, /*goto*/ 0x0c)
label(0x0b)
if_difficulty_lt(DIFF_SA, /*goto*/ 0x2f)
goto_next(0x0f)
label(0x2f)
if_chr_dead(0x37, /*goto*/ 0x0f)
if_chr_death_animation_finished(0x37, /*goto*/ 0x0f)
reloop(0x04)
label(0x0c)
if_difficulty_lt(DIFF_SA, /*goto*/ 0x2f)
goto_next(0x0f)
label(0x2f)
reloop(0x04)
label(0x09)
if_difficulty_lt(DIFF_PA, /*goto*/ 0x2f)
goto_next(0x0f)
label(0x2f)
if_difficulty_lt(DIFF_SA, /*goto*/ 0x2f)
if_chr_dead(0x37, /*goto*/ 0x0f)
if_chr_death_animation_finished(0x37, /*goto*/ 0x0f)
label(0x2f)
endloop(0x04)
label(0x0a)
if_difficulty_lt(DIFF_PA, /*goto*/ 0x2f)
goto_next(0x0f)
label(0x2f)
label(0x0f)
set_stage_flag(STAGEFLAG_UNACCEPTABLE_CASUALTIES)
show_hudmsg(CHR_BOND, L_EAR_026) // "Unacceptable scientist casualties."
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1006_terminal_activation[] = {
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_activated_object(CHR_TARGET, OBJ_GOODTERM1, /*goto*/ 0x08)
if_chr_activated_object(CHR_TARGET, OBJ_ALARMTERM1, /*goto*/ 0x09)
if_chr_activated_object(CHR_TARGET, OBJ_GOODTERM2, /*goto*/ 0x0d)
if_chr_activated_object(CHR_TARGET, OBJ_ALARMTERM2, /*goto*/ 0x0b)
if_chr_activated_object(CHR_TARGET, OBJ_GOODTERM3, /*goto*/ 0x0f)
if_chr_activated_object(CHR_TARGET, OBJ_ALARMTERM3, /*goto*/ 0x0c)
if_chr_activated_object(CHR_TARGET, 0x0b, /*goto*/ 0x2f)
if_chr_activated_object(CHR_TARGET, 0x0c, /*goto*/ 0x2f)
if_chr_activated_object(CHR_TARGET, 0x0d, /*goto*/ 0x2f)
if_chr_activated_object(CHR_TARGET, 0x0e, /*goto*/ 0x2f)
if_chr_activated_object(CHR_TARGET, 0x10, /*goto*/ 0x2f)
if_chr_activated_object(CHR_TARGET, 0x11, /*goto*/ 0x2f)
if_chr_activated_object(CHR_TARGET, 0x12, /*goto*/ 0x2f)
if_chr_activated_object(CHR_TARGET, 0x13, /*goto*/ 0x2f)
if_chr_activated_object(CHR_TARGET, 0x15, /*goto*/ 0x2f)
if_chr_activated_object(CHR_TARGET, 0x16, /*goto*/ 0x2f)
if_chr_activated_object(CHR_TARGET, 0x17, /*goto*/ 0x2f)
if_chr_activated_object(CHR_TARGET, 0x18, /*goto*/ 0x2f)
if_chr_activated_object(CHR_TARGET, 0x1a, /*goto*/ 0x2f)
if_chr_activated_object(CHR_TARGET, 0x1b, /*goto*/ 0x2f)
if_chr_activated_object(CHR_TARGET, 0x1c, /*goto*/ 0x2f)
if_chr_activated_object(CHR_TARGET, 0x1d, /*goto*/ 0x2f)
if_chr_activated_object(CHR_TARGET, 0x1e, /*goto*/ 0x2f)
if_chr_activated_object(CHR_TARGET, 0x1f, /*goto*/ 0x2f)
if_chr_activated_object(CHR_TARGET, 0x20, /*goto*/ 0x2f)
if_chr_activated_object(CHR_TARGET, 0x21, /*goto*/ 0x2f)
endloop(0x04)
// Inactive terminal
label(0x2f)
speak(CHR_TARGET, 0xffff, SFX_TYPING_8118, CHANNEL_9, COLOR_00_GREEN) // unknown text
show_hudmsg(CHR_TARGET, L_EAR_027) // "Terminal is not active."
restart_timer
beginloop(0x56)
if_timer_gt(120, /*goto*/ 0x2f)
endloop(0x56)
label(0x2f)
reloop(0x04)
// Good terminal 0x07
label(0x08)
speak(CHR_TARGET, 0xffff, SFX_TYPING_8118, CHANNEL_9, COLOR_00_GREEN) // unknown text
if_stage_flag_eq(STAGEFLAG_SHUT_DOWN_EXPERIMENT1, FALSE, /*goto*/ 0x2f)
restart_timer
beginloop(0x56)
if_timer_gt(60, /*goto*/ 0x06)
endloop(0x56)
label(0x06)
show_hudmsg(CHR_TARGET, L_EAR_042) // "Experiment already powered down."
reloop(0x04)
label(0x2f)
show_hudmsg(CHR_TARGET, L_EAR_028) // "Powering down active systems."
assign_sound(SFX_01C3, CHANNEL_5)
control_sound_from_object(CHANNEL_5, OBJ_GOODTERM1, TRUE)
restart_timer
beginloop(0x0a)
if_timer_gt(180, /*goto*/ 0x06)
endloop(0x0a)
label(0x06)
show_hudmsg(CHR_TARGET, L_EAR_029) // "Experiment has been shut down."
set_stage_flag(STAGEFLAG_SHUT_DOWN_EXPERIMENT1)
reloop(0x04)
// Good terminal 0x08
label(0x0d)
speak(CHR_TARGET, 0xffff, SFX_TYPING_8118, CHANNEL_9, COLOR_00_GREEN) // unknown text
if_stage_flag_eq(STAGEFLAG_SHUT_DOWN_EXPERIMENT2, FALSE, /*goto*/ 0x2f)
restart_timer
beginloop(0x57)
if_timer_gt(60, /*goto*/ 0x06)
endloop(0x57)
label(0x06)
show_hudmsg(CHR_TARGET, L_EAR_042) // "Experiment already powered down."
goto_first(0x04)
label(0x2f)
show_hudmsg(CHR_TARGET, L_EAR_028) // "Powering down active systems."
assign_sound(SFX_01C3, CHANNEL_5)
control_sound_from_object(CHANNEL_5, OBJ_GOODTERM2, TRUE)
restart_timer
beginloop(0x0e)
if_timer_gt(180, /*goto*/ 0x06)
endloop(0x0e)
label(0x06)
show_hudmsg(CHR_TARGET, L_EAR_029) // "Experiment has been shut down."
set_stage_flag(STAGEFLAG_SHUT_DOWN_EXPERIMENT2)
reloop(0x04)
// Good terminal 0x09
label(0x0f)
speak(CHR_TARGET, 0xffff, SFX_TYPING_8118, CHANNEL_9, COLOR_00_GREEN) // unknown text
if_stage_flag_eq(STAGEFLAG_SHUT_DOWN_EXPERIMENT3, FALSE, /*goto*/ 0x2f)
restart_timer
beginloop(0x58)
if_timer_gt(60, /*goto*/ 0x06)
endloop(0x58)
label(0x06)
show_hudmsg(CHR_TARGET, L_EAR_042) // "Experiment already powered down."
reloop(0x04)
label(0x2f)
show_hudmsg(CHR_TARGET, L_EAR_028) // "Powering down active systems."
assign_sound(SFX_01C3, CHANNEL_5)
control_sound_from_object(CHANNEL_5, OBJ_GOODTERM3, TRUE)
restart_timer
beginloop(0x10)
if_timer_gt(180, /*goto*/ 0x06)
endloop(0x10)
label(0x06)
show_hudmsg(CHR_TARGET, L_EAR_029) // "Experiment has been shut down."
set_stage_flag(STAGEFLAG_SHUT_DOWN_EXPERIMENT3)
reloop(0x04)
// Alarm terminal 0x0f
label(0x09)
if_alarm_active(/*goto*/ 0x06)
speak(CHR_TARGET, 0xffff, SFX_TYPING_8118, CHANNEL_9, COLOR_00_GREEN) // unknown text
show_hudmsg(CHR_TARGET, L_EAR_030) // "Alarm activated."
set_stage_flag(STAGEFLAG_ALARM1_ACTIVE)
activate_alarm
reloop(0x04)
label(0x06)
show_hudmsg(CHR_TARGET, L_EAR_031) // "Alarm deactivated."
unset_stage_flag(STAGEFLAG_ALARM1_ACTIVE)
deactivate_alarm
reloop(0x04)
// Alarm terminal 0x14
label(0x0b)
if_alarm_active(/*goto*/ 0x06)
speak(CHR_TARGET, 0xffff, SFX_TYPING_8118, CHANNEL_9, COLOR_00_GREEN) // unknown text
show_hudmsg(CHR_TARGET, L_EAR_030) // "Alarm activated."
set_stage_flag(STAGEFLAG_ALARM2_ACTIVE)
activate_alarm
reloop(0x04)
label(0x06)
show_hudmsg(CHR_TARGET, L_EAR_031) // "Alarm deactivated."
unset_stage_flag(STAGEFLAG_ALARM2_ACTIVE)
deactivate_alarm
reloop(0x04)
// Alarm terminal 0x19
label(0x0c)
if_alarm_active(/*goto*/ 0x06)
speak(CHR_TARGET, 0xffff, SFX_TYPING_8118, CHANNEL_9, COLOR_00_GREEN) // unknown text
show_hudmsg(CHR_TARGET, L_EAR_030) // "Alarm activated."
set_stage_flag(STAGEFLAG_ALARM3_ACTIVE)
activate_alarm
reloop(0x04)
label(0x06)
show_hudmsg(CHR_TARGET, L_EAR_031) // "Alarm deactivated."
unset_stage_flag(STAGEFLAG_ALARM3_ACTIVE)
deactivate_alarm
reloop(0x04)
label(0x2f)
endloop(0x04)
endlist
};
u8 func1007_uplink[] = {
beginloop(0x04)
if_object_in_good_condition(OBJ_UPLINKPC, /*goto*/ 0x30)
goto_next(0x0d)
label(0x30)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_activated_object(CHR_TARGET, OBJ_UPLINKPC, /*goto*/ 0x2f)
reloop(0x04)
label(0x2f)
if_stage_flag_eq(STAGEFLAG_UPLINK_FINISHED, FALSE, /*goto*/ 0x06)
// Activating a second time
speak(CHR_TARGET, 0xffff, SFX_8116, CHANNEL_9, COLOR_00_GREEN) // unknown text
show_hudmsg(CHR_TARGET, L_EAR_041) // "Security door already unlocked."
reloop(0x04)
label(0x06)
if_chr_weapon_equipped(CHR_TARGET, WEAPON_DATAUPLINK, /*goto*/ 0x2f)
// Activated computer without uplink
speak(CHR_TARGET, 0xffff, SFX_8116, CHANNEL_9, COLOR_00_GREEN) // unknown text
show_hudmsg(CHR_TARGET, L_EAR_036) // "ACCESS DENIED - security code required."
reloop(0x04)
// Uplinking
label(0x2f)
show_hudmsg(CHR_TARGET, L_EAR_060) // "Connection established."
restart_timer
// First second of uplinking
beginloop(0x08)
if_object_in_good_condition(OBJ_UPLINKPC, /*goto*/ 0x30)
goto_next(0x0d)
label(0x30)
if_timer_gt(60, /*goto*/ 0x06)
if_chr_distance_to_pad_gt(CHR_TARGET, 200, PAD_EAR_025A, /*goto*/ 0x09)
if_difficulty_lt(DIFF_SA, /*goto*/ 0x2f)
if_stage_flag_eq(STAGEFLAG_SHUT_DOWN_EXPERIMENT1, FALSE, /*goto*/ 0x0b)
if_stage_flag_eq(STAGEFLAG_SHUT_DOWN_EXPERIMENT2, FALSE, /*goto*/ 0x0b)
if_stage_flag_eq(STAGEFLAG_SHUT_DOWN_EXPERIMENT3, FALSE, /*goto*/ 0x0b)
label(0x2f)
if_chr_weapon_equipped(CHR_TARGET, WEAPON_DATAUPLINK, /*goto*/ 0x2f)
goto_next(0x09)
label(0x2f)
endloop(0x08)
label(0x06)
show_hudmsg(CHR_TARGET, L_EAR_037) // "Searching for password."
restart_timer
set_stage_flag(STAGEFLAG_UPLINK_SEARCHING)
assign_sound(SFX_01BF, CHANNEL_5)
control_sound_from_object(CHANNEL_5, OBJ_UPLINKPC, TRUE)
beginloop(0x14)
if_object_in_good_condition(OBJ_UPLINKPC, /*goto*/ 0x30)
goto_next(0x0d)
label(0x30)
if_timer_gt(400, /*goto*/ 0x06)
if_chr_distance_to_pad_gt(CHR_TARGET, 200, PAD_EAR_025A, /*goto*/ 0x09)
if_chr_weapon_equipped(CHR_TARGET, WEAPON_DATAUPLINK, /*goto*/ 0x2f)
goto_next(0x09)
label(0x2f)
endloop(0x14)
label(0x06)
mute_channel(CHANNEL_5)
assign_sound(SFX_01C1, CHANNEL_6)
control_sound_from_object(CHANNEL_6, OBJ_UPLINKPC, TRUE)
show_hudmsg(CHR_TARGET, L_EAR_039) // "Password located - bypassing lock."
yield
show_hudmsg(CHR_TARGET, L_EAR_017) // "Security doors unlocked."
set_stage_flag(STAGEFLAG_UPLINK_FINISHED)
unlock_door(OBJ_UPLINKDOOR, 0x02)
beginloop(0x15)
if_timer_gt(90, /*goto*/ 0x06)
endloop(0x15)
label(0x06)
assign_sound(SFX_043B, CHANNEL_6)
control_sound_from_object(CHANNEL_6, 0x22, TRUE)
reloop(0x04)
// Moved away from PC or switched weapon
label(0x09)
show_hudmsg(CHR_TARGET, L_EAR_040) // "Contact broken - reestablish link."
mute_channel(CHANNEL_5)
mute_channel(CHANNEL_6)
assign_sound(SFX_01C0, CHANNEL_6)
control_sound_from_object(CHANNEL_6, OBJ_UPLINKPC, TRUE)
restart_timer
beginloop(0x16)
if_timer_gt(120, /*goto*/ 0x06)
endloop(0x16)
label(0x06)
mute_channel(CHANNEL_6)
reloop(0x04)
label(0x0b)
restart_timer
beginloop(0x0c)
if_timer_gt(60, /*goto*/ 0x06)
endloop(0x0c)
label(0x06)
show_hudmsg(CHR_TARGET, L_EAR_085) // "Connection broken - experiments still active."
mute_channel(CHANNEL_5)
mute_channel(CHANNEL_6)
assign_sound(SFX_01C0, CHANNEL_6)
control_sound_from_object(CHANNEL_6, OBJ_UPLINKPC, TRUE)
restart_timer
beginloop(0x17)
if_timer_gt(120, /*goto*/ 0x06)
endloop(0x17)
label(0x06)
mute_channel(CHANNEL_6)
endloop(0x04)
label(0x0d)
mute_channel(CHANNEL_5)
mute_channel(CHANNEL_6)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1008_check_bot_terminals_destroyed[] = {
beginloop(0x04)
if_stage_flag_eq(STAGEFLAG_BOT_ACTIVE_MAINTENANCE, TRUE, /*goto*/ 0x08)
if_stage_flag_eq(STAGEFLAG_BOT_ACTIVATION_TERMINAL_DESTROYED, TRUE, /*goto*/ 0x2f)
if_object_in_good_condition(OBJ_BOT_ACTIVATION_TERMINAL, /*goto*/ 0x2f)
set_stage_flag(STAGEFLAG_BOT_ACTIVATION_TERMINAL_DESTROYED)
if_difficulty_lt(DIFF_SA, /*goto*/ 0x2f)
show_hudmsg(CHR_BOND, L_EAR_022) // "Critical mission object destroyed."
label(0x2f)
if_stage_flag_eq(STAGEFLAG_BOT_PROGRAMMING_TERMINAL_DESTROYED, TRUE, /*goto*/ 0x2f)
if_object_in_good_condition(OBJ_BOT_PROGRAMMING_TERMINAL, /*goto*/ 0x2f)
set_stage_flag(STAGEFLAG_BOT_PROGRAMMING_TERMINAL_DESTROYED)
if_difficulty_lt(DIFF_SA, /*goto*/ 0x2f)
show_hudmsg(CHR_BOND, L_EAR_022) // "Critical mission object destroyed."
label(0x2f)
endloop(0x04)
label(0x08)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1001_objectives_failed_msg[] = {
yield
// These are scientist chrs
set_chr_chrflag(0x35, CHRCFLAG_KEEPCORPSEKO)
set_chr_chrflag(0x36, CHRCFLAG_KEEPCORPSEKO)
set_chr_chrflag(0x37, CHRCFLAG_KEEPCORPSEKO)
set_chr_chrflag(0x38, CHRCFLAG_KEEPCORPSEKO)
set_ailist(CHR_SELF, GAILIST_SHOW_OBJ_FAILED_MSG)
endlist
};
u8 func100a_spawn_alarm_responders[] = {
beginloop(0x04)
if_alarm_active(/*goto*/ 0x06)
reloop(0x04)
label(0x06)
if_stage_flag_eq(STAGEFLAG_ALARM_RESPONDERS_SPAWNED, TRUE, /*goto*/ 0x0c)
set_stage_flag(STAGEFLAG_ALARM_RESPONDERS_SPAWNED)
restart_timer
beginloop(0x56)
try_spawn_chr_at_pad(BODY_DDSHOCK, HEAD_RANDOM, PAD_EAR_005D, AILIST_ALARM_RESPONDER, SPAWNFLAG_00000200, /*goto*/ 0x08)
endloop(0x56)
beginloop(0x08)
if_timer_gt(30, /*goto*/ 0x06)
endloop(0x08)
label(0x06)
beginloop(0x57)
try_spawn_chr_at_pad(BODY_DDSHOCK, HEAD_RANDOM, PAD_EAR_005D, AILIST_ALARM_RESPONDER, SPAWNFLAG_00000200, /*goto*/ 0x09)
endloop(0x57)
beginloop(0x09)
if_timer_gt(30, /*goto*/ 0x06)
endloop(0x09)
label(0x06)
beginloop(0x58)
try_spawn_chr_at_pad(BODY_DDSHOCK, HEAD_RANDOM, PAD_EAR_005D, AILIST_ALARM_RESPONDER, SPAWNFLAG_00000200, /*goto*/ 0x0a)
endloop(0x58)
beginloop(0x0a)
if_timer_gt(30, /*goto*/ 0x06)
endloop(0x0a)
label(0x06)
beginloop(0x59)
try_spawn_chr_at_pad(BODY_DDSHOCK, HEAD_RANDOM, PAD_EAR_005D, AILIST_ALARM_RESPONDER, SPAWNFLAG_00000200, /*goto*/ 0x0b)
endloop(0x59)
beginloop(0x0b)
if_timer_gt(30, /*goto*/ 0x0c)
endloop(0x0b)
set_stage_flag(STAGEFLAG_ALARM_RESPONDERS_SPAWNED)
label(0x0c)
endloop(0x04)
endlist
};
u8 func0408_alarm_responder[] = {
set_self_flag_bankx(CHRFLAG1_NOIDLEANIMS, BANK_1)
if_difficulty_lt(DIFF_SA, /*goto*/ 0x2f)
set_accuracy(20)
goto_next(0x06)
label(0x2f)
set_accuracy(10)
label(0x06)
try_inherit_properties(0x19, /*goto*/ 0x06)
label(0x06)
try_equip_weapon(MODEL_CHRCMP150, WEAPON_CMP150, 0x00000000, /*goto*/ 0x06)
label(0x06)
set_chr_team(CHR_SELF, TEAM_ENEMY)
set_squadron(SQUADRON_09)
set_self_flag_bankx(CHRFLAG0_SKIPSAFETYCHECKS, BANK_0)
set_self_flag_bankx(CHRFLAG0_00008000, BANK_0)
set_alertness(90)
set_self_chrflag(CHRCFLAG_00000200)
// Run to scientist based on which alarm was triggered
if_stage_flag_eq(STAGEFLAG_ALARM1_ACTIVE, TRUE, /*goto*/ 0x08)
if_stage_flag_eq(STAGEFLAG_ALARM2_ACTIVE, TRUE, /*goto*/ 0x09)
try_run_to_chr(0x37, /*goto*/ 0x06)
goto_next(0x06)
label(0x08)
try_run_to_chr(0x35, /*goto*/ 0x06)
goto_next(0x06)
label(0x09)
try_run_to_chr(0x36, /*goto*/ 0x06)
goto_next(0x06)
label(0x06)
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SELF, GAILIST_UNALERTED_0001)
endlist
};
u8 func100b_check_uplink_pc_destroyed[] = {
beginloop(0x04)
if_stage_flag_eq(STAGEFLAG_UPLINK_FINISHED, TRUE, /*goto*/ 0x08)
if_object_in_good_condition(OBJ_UPLINKPC, /*goto*/ 0x2f)
set_stage_flag(STAGEFLAG_UPLINKPC_DESTROYED)
show_hudmsg(CHR_BOND, L_EAR_022) // "Critical mission object destroyed."
goto_next(0x08)
label(0x2f)
endloop(0x04)
label(0x08)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func0411_yellowbot[] = {
dprint 'h','o','v','\n',0,
label(0x03)
begin_hovercar_path(0x05)
set_vehicle_speed(512, 120)
beginloop(0x04)
if_hoverbot_next_step(OPERATOR_GREATER_THAN, 10, /*goto*/ 0x06)
endloop(0x04)
label(0x06)
begin_hovercar_path(0x06)
set_vehicle_speed(512, 120)
beginloop(0x08)
if_hoverbot_next_step(OPERATOR_GREATER_THAN, 8, /*goto*/ 0x06)
endloop(0x08)
label(0x06)
goto_first(0x03)
endlist
};
u8 func0412_purplebot_programs[] = {
dprint 'h','o','v','\n',0,
if_difficulty_gt(DIFF_A, /*goto*/ 0x04)
// Agent
dprint 'm','o','v','\n',0,
move_object_to_pad(OBJ_PURPLEBOT, PAD_EAR_00BE)
goto_next(0x14)
// SA or PA
beginloop(0x04)
if_stage_flag_eq(STAGEFLAG_BOT_ACTIVE_NOPROGRAM, TRUE, /*goto*/ 0x0a)
if_stage_flag_eq(STAGEFLAG_BOT_ACTIVE_MAINTENANCE, TRUE, /*goto*/ 0x0c)
if_stage_flag_eq(STAGEFLAG_BOT_ACTIVE_CLEANING, TRUE, /*goto*/ 0x08)
endloop(0x04)
// Cleaning cycle (up and down the terminal room at medium speed)
label(0x08)
begin_hovercar_path(0x07)
set_vehicle_speed(512, 120)
beginloop(0x09)
if_stage_flag_eq(STAGEFLAG_BOT_ACTIVE_NOPROGRAM, FALSE, /*goto*/ 0x0e)
if_hoverbot_next_step(OPERATOR_GREATER_THAN, 1, /*goto*/ 0x06)
endloop(0x09)
label(0x06)
goto_first(0x08)
// No program (small circles at low speed)
label(0x0a)
begin_hovercar_path(0x08)
set_vehicle_speed(128, 120)
beginloop(0x0b)
if_stage_flag_eq(STAGEFLAG_BOT_ACTIVE_NOPROGRAM, FALSE, /*goto*/ 0x0e)
if_stage_flag_eq(STAGEFLAG_BOT_ACTIVE_CLEANING, TRUE, /*goto*/ 0x10)
if_hoverbot_next_step(OPERATOR_GREATER_THAN, 1, /*goto*/ 0x06)
endloop(0x0b)
label(0x06)
goto_first(0x0a)
// Maintenance cycle - on route to lasers (high speed)
label(0x0c)
begin_hovercar_path(0x09)
set_vehicle_speed(768, 120)
beginloop(0x0d)
if_hoverbot_next_step(OPERATOR_GREATER_THAN, 24, /*goto*/ 0x06)
endloop(0x0d)
label(0x14)
label(0x06)
set_ailist(CHR_SELF, AILIST_PURPLEBOT_AT_LASERS)
// Returning to offline
label(0x0e)
begin_hovercar_path(0x0b)
set_vehicle_speed(512, 120)
unset_stage_flag(STAGEFLAG_BOT_ACTIVE_CLEANING)
unset_stage_flag(STAGEFLAG_BOT_REPROGRAMMED)
unset_stage_flag(STAGEFLAG_BOT_ACTIVE)
beginloop(0x0f)
if_stage_flag_eq(STAGEFLAG_BOT_ACTIVE_NOPROGRAM, TRUE, /*goto*/ 0x11)
if_stage_flag_eq(STAGEFLAG_BOT_ACTIVE_MAINTENANCE, TRUE, /*goto*/ 0x12)
if_stage_flag_eq(STAGEFLAG_BOT_ACTIVE_CLEANING, TRUE, /*goto*/ 0x10)
if_hoverbot_next_step(OPERATOR_GREATER_THAN, 1, /*goto*/ 0x06)
endloop(0x0f)
label(0x06)
set_vehicle_speed(0, 1)
goto_first(0x04)
label(0x11)
goto_first(0x0a)
label(0x12)
goto_first(0x0a)
label(0x10)
goto_first(0x08)
endlist
};
u8 func0413_purplebot_at_lasers[] = {
#if VERSION < VERSION_NTSC_1_0
open_door(0x45)
#endif
label(0x03)
begin_hovercar_path(0x0a)
set_vehicle_speed(512, 120)
beginloop(0x13)
endloop(0x13)
endlist
};
u8 func100c_shuffle_terminals[] = {
shuffle_investigation_terminals(OBJ_GOODTERM1, OBJ_ALARMTERM1, 0x1e, 0x1f, 0x20, 0x21)
shuffle_investigation_terminals(OBJ_GOODTERM2, OBJ_ALARMTERM2, 0x1a, 0x1b, 0x1c, 0x1d)
shuffle_investigation_terminals(OBJ_GOODTERM3, OBJ_ALARMTERM3, 0x15, 0x16, 0x17, 0x18)
yield
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func100e_experiment_terminals_destroyed[] = {
beginloop(0x04)
if_object_in_good_condition(OBJ_GOODTERM1, /*goto*/ 0x2f)
if_stage_flag_eq(STAGEFLAG_GOODTERM_DESTROYED, TRUE, /*goto*/ 0x2f)
if_stage_flag_eq(STAGEFLAG_SHUT_DOWN_EXPERIMENT1, TRUE, /*goto*/ 0x2f)
set_stage_flag(STAGEFLAG_GOODTERM_DESTROYED)
show_hudmsg(CHR_BOND, L_EAR_022) // "Critical mission object destroyed."
label(0x2f)
if_object_in_good_condition(OBJ_GOODTERM2, /*goto*/ 0x2f)
if_stage_flag_eq(STAGEFLAG_GOODTERM_DESTROYED, TRUE, /*goto*/ 0x2f)
if_stage_flag_eq(STAGEFLAG_SHUT_DOWN_EXPERIMENT2, TRUE, /*goto*/ 0x2f)
set_stage_flag(STAGEFLAG_GOODTERM_DESTROYED)
show_hudmsg(CHR_BOND, L_EAR_022) // "Critical mission object destroyed."
label(0x2f)
if_object_in_good_condition(0x09, /*goto*/ 0x2f)
if_stage_flag_eq(STAGEFLAG_GOODTERM_DESTROYED, TRUE, /*goto*/ 0x2f)
if_stage_flag_eq(STAGEFLAG_SHUT_DOWN_EXPERIMENT3, TRUE, /*goto*/ 0x2f)
set_stage_flag(STAGEFLAG_GOODTERM_DESTROYED)
show_hudmsg(CHR_BOND, L_EAR_022) // "Critical mission object destroyed."
label(0x2f)
endloop(0x04)
endlist
};
u8 func0416_intro[] = {
play_cutscene_track(MUSIC_INVESTIGATION_INTRO)
camera_movement(ANIM_00F5)
cmd0175(60)
set_chr_chrflag(CHR_COOP, CHRCFLAG_HIDDEN)
set_chr_chrflag(CHR_ANTI, CHRCFLAG_HIDDEN)
set_chr_chrflag(CHR_BOND, CHRCFLAG_UNPLAYABLE)
set_chr_chrflag(CHR_BOND, CHRCFLAG_PERIMDISABLEDTMP)
set_chr_hiddenflag(CHR_BOND, CHRHFLAG_00020000)
chr_do_animation(ANIM_00F6, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_BOND, 4)
set_chr_chrflag(CHR_INTRO_GUARD, CHRCFLAG_UNPLAYABLE)
set_chr_chrflag(CHR_INTRO_GUARD, CHRCFLAG_PERIMDISABLEDTMP)
unset_chr_chrflag(CHR_INTRO_GUARD, CHRCFLAG_HIDDEN)
set_chr_hiddenflag(CHR_INTRO_GUARD, CHRHFLAG_00020000)
chr_do_animation(ANIM_00F7, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_INTRO_GUARD, 4)
restart_timer
fade_to_color(0x000000ff, 0)
fade_to_color(0x00000000, 90)
set_cutscene_weapon(CHR_BOND, WEAPON_NONE, WEAPON_NONE)
yield
set_cutscene_weapon(CHR_BOND, WEAPON_FALCON2, WEAPON_NONE)
#define wait_until(time, loopid) \
beginloop(loopid) \
if_controller_button_pressed(/*goto*/ 0x77) \
if_timer_gt(time, /*goto*/ 0x06) \
endloop(loopid) \
label(0x06)
wait_until(0, 0x56)
play_sound(SFX_01D5, CHANNEL_7)
wait_until(250, 0x57)
play_sound(SFX_00EC, CHANNEL_10)
wait_until(270, 0x58)
play_sound(SFX_0171, CHANNEL_10)
wait_until(290, 0x59)
play_sound(SFX_0172, CHANNEL_10)
wait_until(320, 0x5a)
play_sound(SFX_0174, CHANNEL_10)
wait_until(380, 0x5b)
open_door(0x24)
play_sound(SFX_0165, CHANNEL_7)
wait_until(580, 0x5c)
play_sound(SFX_01D2, CHANNEL_7)
wait_until(950, 0x5d)
play_sound(SFX_0172, CHANNEL_7)
wait_until(990, 0x5e)
play_sound(SFX_0171, CHANNEL_7)
wait_until(1060, 0x5f)
play_sound(SFX_0172, CHANNEL_7)
wait_until(1090, 0x60)
play_sound(SFX_0173, CHANNEL_7)
wait_until(1140, 0x61)
play_sound(SFX_01D3, CHANNEL_7)
wait_until(1190, 0x62)
play_sound(SFX_0031, CHANNEL_7)
wait_until(1196, 0x68)
play_sound(SFX_ARGH_MALE_008F, CHANNEL_6)
wait_until(1310, 0x63)
play_sound(SFX_0085, CHANNEL_7)
wait_until(1370, 0x64)
play_sound(SFX_007B, CHANNEL_7)
wait_until(1410, 0x65)
play_sound(SFX_0175, CHANNEL_7)
wait_until(1430, 0x66)
play_sound(SFX_0176, CHANNEL_7)
wait_until(1600, 0x67)
play_sound(SFX_0171, CHANNEL_7)
beginloop(0x08)
if_camera_animating(/*goto*/ 0x2f)
goto_next(0x77)
label(0x2f)
if_controller_button_pressed(/*goto*/ 0x77)
label(0x2f)
endloop(0x08)
label(0x77)
set_door_open(0x24)
set_door_open(0x40)
unset_chr_chrflag(CHR_BOND, CHRCFLAG_UNPLAYABLE)
unset_chr_chrflag(CHR_BOND, CHRCFLAG_PERIMDISABLEDTMP)
set_chr_hiddenflag(CHR_BOND, CHRHFLAG_00020000)
chr_do_animation(ANIM_00F6, -2, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_BOND, 2)
unset_chr_chrflag(CHR_INTRO_GUARD, CHRCFLAG_UNPLAYABLE)
set_chr_chrflag(CHR_INTRO_GUARD, CHRCFLAG_INVINCIBLE)
set_chr_hiddenflag(CHR_INTRO_GUARD, CHRHFLAG_00020000)
chr_do_animation(ANIM_00F7, -2, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_INTRO_GUARD, 2)
unset_chr_chrflag(CHR_COOP, CHRCFLAG_HIDDEN)
unset_chr_chrflag(CHR_ANTI, CHRCFLAG_HIDDEN)
stop_cutscene_track
stop_ambient_track
enter_firstperson
yield
chr_do_animation(ANIM_020B, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_INTRO_GUARD, 2)
yield
kill(CHR_INTRO_GUARD)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func0417_outro[] = {
play_cutscene_track(MUSIC_INVESTIGATION_OUTRO)
set_chr_chrflag(CHR_ANTI, CHRCFLAG_HIDDEN)
set_chr_chrflag(0xf1, CHRCFLAG_HIDDEN)
set_stage_flag(STAGEFLAG_TRIGGER_OUTRO_AUDIO)
unset_chr_chrflag(CHR_P1P2, CHRCFLAG_HIDDEN)
set_chr_chrflag(CHR_P1P2, CHRCFLAG_UNPLAYABLE)
set_chr_hiddenflag(CHR_P1P2, CHRHFLAG_00020000)
set_ailist(CHR_DRCAROLL, GAILIST_IDLE)
set_ailist(CHR_K7_GUARD, GAILIST_IDLE)
restart_timer
dprint 's','h','o','t',' ','1',0,
camera_movement(ANIM_00F9)
chr_do_animation(ANIM_00FA, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_P1P2, 2)
set_cutscene_weapon(CHR_P1P2, -1, -1)
yield
set_cutscene_weapon(CHR_P1P2, -1, WEAPON_FALCON2)
show_nonessential_chrs(FALSE)
#define wait_for_camera(loopid) \
beginloop(loopid) \
if_camera_animating(/*goto*/ 0x2f) \
goto_next(0x06) \
label(0x2f) \
if_controller_button_pressed(/*goto*/ 0x06) \
endloop(loopid) \
label(0x06)
wait_for_camera(0x08)
dprint 's','h','o','t',' ','2',0,
if_controller_button_pressed(/*goto*/ 0x06)
camera_movement(ANIM_0140)
chr_do_animation(ANIM_0141, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_P1P2, 2)
wait_for_camera(0x09)
dprint 's','h','o','t',' ','3',0,
if_controller_button_pressed(/*goto*/ 0x06)
camera_movement(ANIM_0143)
chr_do_animation(ANIM_0144, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_P1P2, 2)
wait_for_camera(0x0a)
dprint 's','h','o','t',' ','4',0,
if_controller_button_pressed(/*goto*/ 0x06)
camera_movement(ANIM_0146)
chr_do_animation(ANIM_0147, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_P1P2, 2)
restart_timer
beginloop(0x0b)
if_camera_animating(/*goto*/ 0x2f)
goto_next(0x06)
label(0x2f)
if_controller_button_pressed(/*goto*/ 0x06)
if_timer_gt(282, /*goto*/ 0x2f)
endloop(0x0b)
label(0x2f)
open_door(0x23)
beginloop(0x5f)
if_camera_animating(/*goto*/ 0x2f)
goto_next(0x06)
label(0x2f)
if_controller_button_pressed(/*goto*/ 0x06)
endloop(0x5f)
label(0x2f)
label(0x06)
dprint 's','h','o','t',' ','5',0,
if_controller_button_pressed(/*goto*/ 0x06)
unset_chr_chrflag(CHR_DRCAROLL, CHRCFLAG_HIDDEN)
set_chr_chrflag(CHR_DRCAROLL, CHRCFLAG_UNPLAYABLE)
set_chr_hiddenflag(CHR_DRCAROLL, CHRHFLAG_00020000)
camera_movement(ANIM_0149)
chr_do_animation(ANIM_014A, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_P1P2, 2)
chr_do_animation(ANIM_014B, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_DRCAROLL, 2)
wait_for_camera(0x0c)
dprint 's','h','o','t',' ','6',0,
if_controller_button_pressed(/*goto*/ 0x06)
camera_movement(ANIM_014C)
chr_do_animation(ANIM_014D, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_P1P2, 2)
chr_do_animation(ANIM_014E, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_DRCAROLL, 2)
wait_for_camera(0x0d)
dprint 's','h','o','t',' ','7',0,
if_controller_button_pressed(/*goto*/ 0x06)
camera_movement(ANIM_014F)
chr_do_animation(ANIM_0150, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_P1P2, 2)
chr_do_animation(ANIM_0151, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_DRCAROLL, 2)
wait_for_camera(0x0e)
dprint 's','h','o','t',' ','8',0,
camera_movement(ANIM_0152)
chr_do_animation(ANIM_0153, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_P1P2, 2)
chr_do_animation(ANIM_0154, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_DRCAROLL, 2)
wait_for_camera(0x0f)
end_level
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1010_intro_from_menu[] = {
set_returnlist(CHR_SELF, GAILIST_END_CINEMA)
set_ailist(CHR_SELF, 0x0416)
endlist
};
u8 func0417_outro_from_menu[] = {
set_returnlist(CHR_SELF, GAILIST_END_CINEMA)
set_ailist(CHR_SELF, AILIST_OUTRO)
endlist
};
u8 unregistered_function1[] = {
set_returnlist(CHR_SELF, 0x0419)
set_ailist(CHR_SELF, 0x0416)
endlist
};
u8 unregistered_function2[] = {
set_returnlist(CHR_SELF, 0x041a)
set_ailist(CHR_SELF, AILIST_OUTRO)
endlist
};
u8 func1415_outro_audio[] = {
label(0x79)
if_stage_flag_eq(STAGEFLAG_TRIGGER_OUTRO_AUDIO, TRUE, /*goto*/ 0x7a)
yield
goto_first(0x79)
label(0x7a)
unset_stage_flag(STAGEFLAG_TRIGGER_OUTRO_AUDIO)
label(0x2f)
restart_timer
disable_object(0x37)
disable_object(0x38)
mute_channel(CHANNEL_0)
mute_channel(CHANNEL_1)
mute_channel(CHANNEL_2)
mute_channel(CHANNEL_3)
mute_channel(CHANNEL_4)
mute_channel(CHANNEL_5)
mute_channel(CHANNEL_6)
mute_channel(CHANNEL_7)
#define outro_wait_until(time, loopid) \
beginloop(loopid) \
if_controller_button_pressed(/*goto*/ 0x77) \
if_timer_gt(time, /*goto*/ 0x06) \
endloop(loopid) \
label(0x06)
outro_wait_until(78, 0x56)
play_sound(SFX_0161, CHANNEL_6)
outro_wait_until(116, 0x57)
play_sound(SFX_0165, CHANNEL_7)
outro_wait_until(131, 0x58)
play_sound(SFX_0166, CHANNEL_5)
outro_wait_until(162, 0x59)
play_sound(SFX_0167, CHANNEL_6)
outro_wait_until(197, 0x5a)
play_sound(SFX_0168, CHANNEL_7)
outro_wait_until(236, 0x5b)
play_sound(SFX_0167, CHANNEL_5)
outro_wait_until(266, 0x5c)
play_sound(SFX_0168, CHANNEL_6)
outro_wait_until(281, 0x5d)
play_sound(SFX_0165, CHANNEL_7)
outro_wait_until(335, 0x5e)
play_sound(SFX_0162, CHANNEL_5)
outro_wait_until(384, 0x5f)
play_sound(SFX_0163, CHANNEL_6)
outro_wait_until(415, 0x60)
play_sound(SFX_0164, CHANNEL_7)
outro_wait_until(434, 0x61)
play_sound(SFX_0163, CHANNEL_5)
outro_wait_until(474, 0x62)
play_sound(SFX_0164, CHANNEL_6)
outro_wait_until(511, 0x63)
play_sound(SFX_0163, CHANNEL_7)
outro_wait_until(356, 0x65)
play_sound(SFX_0164, CHANNEL_5)
outro_wait_until(581, 0x66)
play_sound(SFX_0161, CHANNEL_6)
outro_wait_until(620, 0x68)
speak(CHR_P1P2, L_EAR_100, MP3_03EC, CHANNEL_7, COLOR_09_BLUE) // "Dr. Caroll?"
outro_wait_until(676, 0x67)
play_sound(SFX_0162, CHANNEL_6)
outro_wait_until(747, 0x69)
play_sound(SFX_0163, CHANNEL_5)
outro_wait_until(750, 0x6a)
speak(CHR_P1P2, L_EAR_101, MP3_03ED, CHANNEL_7, COLOR_09_BLUE) // "Dr. Caroll, are you here?"
outro_wait_until(864, 0x6b)
speak(CHR_P1P2, L_EAR_102, MP3_03EE, CHANNEL_7, COLOR_04_ORANGE) // "Well, is it safe to come out?"
outro_wait_until(1027, 0x6c)
speak(CHR_P1P2, L_EAR_103, MP3_03EF, CHANNEL_7, COLOR_09_BLUE) // "Yes, all clear."
outro_wait_until(1200, 0x6f)
mute_channel(CHANNEL_6)
play_sound(SFX_DOOR_042C, CHANNEL_4)
outro_wait_until(1219, 0x70)
outro_wait_until(1254, 0x71)
speak(CHR_P1P2, L_EAR_104, MP3_03F0, CHANNEL_7, COLOR_09_BLUE) // "Wh..what... you're..."
outro_wait_until(1460, 0x73)
speak(CHR_P1P2, L_EAR_105, MP3_03F1, CHANNEL_7, COLOR_04_ORANGE) // "Very professionally done, my dear, but there's no ..."
outro_wait_until(1556, 0x74)
mute_channel(CHANNEL_5)
play_sound(SFX_DOOR_042C, CHANNEL_6)
outro_wait_until(1900, 0x75)
speak(CHR_P1P2, L_EAR_106, MP3_03F2, CHANNEL_7, COLOR_04_ORANGE) // "Come on. I have vital information, and you must pr..."
outro_wait_until(2200, 0x76)
play_sound(SFX_0161, CHANNEL_6)
label(0x77)
goto_first(0x79)
endlist
};
u8 func100f_check_for_end_level[] = {
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0063, /*goto*/ 0x2f)
if_chr_in_room(CHR_P1P2, 0x00, 0x0065, /*goto*/ 0x2f)
reloop(0x04)
label(0x2f)
if_door_state(0x26, (DOORSTATE_OPEN | DOORSTATE_CLOSING | DOORSTATE_OPENING), /*goto*/ 0x06)
reloop(0x04)
label(0x06)
set_stage_flag(STAGEFLAG_DRCAROLL_LOCATED)
dprint 's','h','o','t',' ','6',0,
yield
#if VERSION < VERSION_NTSC_1_0
yield
#endif
if_all_objectives_complete(/*goto*/ 0x2f)
endloop(0x04)
label(0x2f)
if_chr_death_animation_finished(CHR_BOND, /*goto*/ 0x2f)
if_chr_dead(CHR_BOND, /*goto*/ 0x2f)
if_chr_knockedout(CHR_BOND, /*goto*/ 0x2f)
goto_next(0x06)
label(0x2f)
if_chr_death_animation_finished(CHR_COOP, /*goto*/ 0x2f)
if_chr_dead(CHR_COOP, /*goto*/ 0x2f)
if_chr_knockedout(CHR_COOP, /*goto*/ 0x2f)
goto_next(0x06)
label(0x2f)
end_level
set_ailist(CHR_SELF, GAILIST_IDLE)
label(0x06)
set_invincible(CHR_BOND)
set_ailist(CHR_SELF, AILIST_OUTRO)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1400_setup_counterop[] = {
yield
set_chr_team(CHR_ANTI, TEAM_ENEMY)
give_object_to_chr(OBJ_DATAUPLINK_BOND, CHR_BOND)
give_object_to_chr(OBJ_DATAUPLINK_COOP, CHR_COOP)
set_ailist(CHR_SELF, GAILIST_REBUILD_GROUPS)
endlist
};
u8 func1011_spawn_guards_during_uplink[] = {
if_difficulty_lt(DIFF_SA, /*goto*/ 0x0d)
beginloop(0x04)
if_stage_flag_eq(STAGEFLAG_UPLINK_SEARCHING, TRUE, /*goto*/ 0x2f)
endloop(0x04)
label(0x2f)
restart_timer
try_spawn_chr_at_pad(BODY_DDSHOCK, HEAD_RANDOM, PAD_EAR_0131, AILIST_UPLINK_RESPONDER, SPAWNFLAG_00000010 | SPAWNFLAG_00000200, /*goto*/ 0x09)
beginloop(0x09)
if_timer_gt(30, /*goto*/ 0x06)
endloop(0x09)
label(0x06)
try_spawn_chr_at_pad(BODY_DDSHOCK, HEAD_RANDOM, PAD_EAR_0132, AILIST_UPLINK_RESPONDER, SPAWNFLAG_00000010 | SPAWNFLAG_00000200, /*goto*/ 0x0a)
beginloop(0x0a)
if_timer_gt(60, /*goto*/ 0x06)
endloop(0x0a)
label(0x06)
label(0x0d)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func0409_uplink_responder[] = {
if_difficulty_lt(DIFF_SA, /*goto*/ 0x2f)
set_accuracy(20)
goto_next(0x06)
label(0x2f)
set_accuracy(10)
label(0x06)
try_equip_weapon(MODEL_CHRCMP150, WEAPON_CMP150, 0x00000000, /*goto*/ 0x06)
label(0x06)
set_chr_team(CHR_SELF, TEAM_ENEMY)
set_squadron(SQUADRON_09)
set_self_flag_bankx(CHRFLAG0_SKIPSAFETYCHECKS, BANK_0)
set_self_flag_bankx(CHRFLAG0_00008000, BANK_0)
set_alertness(110)
set_self_chrflag(CHRCFLAG_00000200)
label(0x06)
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SELF, GAILIST_UNALERTED)
endlist
};
u8 func1012_start_laser_sound[] = {
label(0x04)
yield
assign_sound(SFX_8119, CHANNEL_0)
play_sound_from_object(CHANNEL_0, 0x28, 1, 300, 400)
label(0x2f)
assign_sound(SFX_811A, CHANNEL_1)
play_sound_from_object(CHANNEL_1, 0x2d, 1, 300, 400)
label(0x2f)
assign_sound(SFX_8119, CHANNEL_2)
play_sound_from_object(CHANNEL_2, 0x32, 1, 300, 400)
assign_sound(SFX_01C5, CHANNEL_3)
play_sound_from_object(CHANNEL_3, 0x38, 1, 600, 800)
assign_sound(SFX_01C5, CHANNEL_4)
play_sound_from_object(CHANNEL_4, 0x37, 1, 600, 800)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1013_hatch_pc[] = {
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_activated_object(CHR_TARGET, OBJ_HATCHPC, /*goto*/ 0x06)
reloop(0x04)
label(0x06)
if_door_locked(0x3f, 0x08, /*goto*/ 0x56)
goto_next(0x2f)
label(0x56)
play_sound(SFX_00F7, -1)
show_hudmsg(CHR_TARGET, L_EAR_061) // "Maintenance hatch is now open."
unlock_door(0x3f, 0x08)
reloop(0x04)
label(0x2f)
show_hudmsg(CHR_TARGET, L_EAR_062) // "Maintenance hatch is already open."
restart_timer
beginloop(0x57)
if_timer_gt(120, /*goto*/ 0x2f)
endloop(0x57)
label(0x2f)
endloop(0x04)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func0415_radioactivity[] = {
restart_timer
beginloop(0x04)
if_chr_in_room(CHR_TARGET, 0x00, 0x0014, /*goto*/ 0x06)
if_chr_in_room(CHR_TARGET, 0x00, 0x0015, /*goto*/ 0x06)
if_chr_in_room(CHR_TARGET, 0x00, 0x0016, /*goto*/ 0x06)
if_chr_in_room(CHR_TARGET, 0x00, 0x0017, /*goto*/ 0x06)
if_chr_in_room(CHR_TARGET, 0x00, 0x0018, /*goto*/ 0x06)
if_chr_in_room(CHR_TARGET, 0x00, 0x0019, /*goto*/ 0x06)
if_chr_in_room(CHR_TARGET, 0x00, 0x001a, /*goto*/ 0x06)
reloop(0x04)
label(0x06)
show_hudmsg(CHR_TARGET, L_EAR_063) // "WARNING - radioactive matter detected."
restart_timer
label(0x08)
yield
add_motion_blur(CHR_TARGET, 10, TRUE)
if_timer_lt(300, /*goto*/ 0x2f)
restart_timer
damage_chr_by_amount(CHR_TARGET, 4, 0)
label(0x2f)
if_chr_in_room(CHR_TARGET, 0x00, 0x0014, /*goto*/ 0x06)
if_chr_in_room(CHR_TARGET, 0x00, 0x0015, /*goto*/ 0x06)
if_chr_in_room(CHR_TARGET, 0x00, 0x0016, /*goto*/ 0x06)
if_chr_in_room(CHR_TARGET, 0x00, 0x0017, /*goto*/ 0x06)
if_chr_in_room(CHR_TARGET, 0x00, 0x0018, /*goto*/ 0x06)
if_chr_in_room(CHR_TARGET, 0x00, 0x0019, /*goto*/ 0x06)
if_chr_in_room(CHR_TARGET, 0x00, 0x001a, /*goto*/ 0x06)
endloop(0x04)
label(0x06)
goto_first(0x08)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1014_jo_radioactivity[] = {
set_target_chr(CHR_BOND)
set_ailist(CHR_SELF, AILIST_RADIOACTIVITY)
endlist
};
u8 func101d_coop_radioactivty[] = {
yield
set_target_chr(CHR_COOP)
if_chr_death_animation_finished(CHR_TARGET, /*goto*/ 0x2f)
set_ailist(CHR_SELF, AILIST_RADIOACTIVITY)
label(0x2f)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1021_counterop_radioactivity[] = {
yield
set_target_chr(CHR_ANTI)
if_chr_death_animation_finished(CHR_TARGET, /*goto*/ 0x2f)
set_ailist(CHR_SELF, AILIST_RADIOACTIVITY)
label(0x2f)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func0402_k7_guard[] = {
set_accuracy(20)
set_reaction_speed(100)
set_shotlist(GAILIST_ALERTED)
beginloop(0x0f)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
set_chrpreset(CHR_P1P2)
if_chr_in_room(CHR_TARGET, 0x00, 0x0036, /*goto*/ 0x03)
if_chr_in_room(CHR_TARGET, 0x00, 0x0037, /*goto*/ 0x03)
if_chr_in_room(CHR_TARGET, 0x00, 0x003a, /*goto*/ 0x03)
endloop(0x0f)
label(0x03)
restart_timer
call_rng
if_rand_gt(128, /*goto*/ 0x06)
label(0x2f)
say_quip(CHR_PRESET, 0x09, 0xff, 0x02, 0xff, BANK_1, 0x00, 0x00)
label(0x06)
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_in_sight(/*goto*/ 0x0c)
if_near_miss(/*goto*/ 0x0c)
if_num_times_shot_gt(0, /*goto*/ 0x0c)
if_saw_injury(0x00, /*goto*/ 0x0c)
if_alertness(99, OPERATOR_GREATER_THAN, /*goto*/ 0x0c)
if_timer_gt(120, /*goto*/ 0x06)
endloop(0x04)
label(0x06)
try_attack_stand(ATTACKFLAG_AIMATPAD | ATTACKFLAG_AIMONLY, 0x0159, /*goto*/ 0x2f)
label(0x2f)
try_modify_attack(ATTACKFLAG_AIMATPAD, 0x0159, /*goto*/ 0x2f)
label(0x2f)
say_quip(CHR_BOND, QUIP_ATTACK1, 0x32, 0x02, 0xff, BANK_0, 0x00, 0x00)
beginloop(0x08)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_in_sight(/*goto*/ 0x0c)
if_near_miss(/*goto*/ 0x0c)
if_num_times_shot_gt(0, /*goto*/ 0x0c)
if_saw_injury(0x00, /*goto*/ 0x0c)
if_alertness(99, OPERATOR_GREATER_THAN, /*goto*/ 0x0c)
if_chr_stopped(/*goto*/ 0x2f)
goto_first(0x08)
label(0x2f)
call_rng
if_rand_gt(200, /*goto*/ 0x2f)
goto_first(0x03)
label(0x2f)
stop_chr
restart_timer
call_rng
if_rand_gt(128, /*goto*/ 0x06)
assign_sound(MP3_0299, CHANNEL_6)
play_sound_from_entity(CHANNEL_6, CHR_SELF, 0x0bb8, 0x1770, 0x01)
beginloop(0x0c)
if_timer_gt(120, /*goto*/ 0x2f)
endloop(0x0c)
label(0x2f)
say_quip(CHR_PRESET, 0x08, 0xff, 0x02, 0xff, BANK_1, 0x00, 0x00)
label(0x06)
if_chr_distance_to_pad_lt(CHR_SELF, 100, PAD_EAR_013B, /*goto*/ 0x2f)
walk_to_pad(PAD_EAR_013B)
label(0x2f)
restart_timer
beginloop(0x09)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_in_sight(/*goto*/ 0x0c)
if_near_miss(/*goto*/ 0x0c)
if_num_times_shot_gt(0, /*goto*/ 0x0c)
if_saw_injury(0x00, /*goto*/ 0x0c)
if_alertness(99, OPERATOR_GREATER_THAN, /*goto*/ 0x0c)
if_timer_gt(180, /*goto*/ 0x06)
endloop(0x09)
label(0x06)
restart_timer
beginloop(0x0a)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_in_sight(/*goto*/ 0x0c)
if_near_miss(/*goto*/ 0x0c)
if_num_times_shot_gt(0, /*goto*/ 0x0c)
if_saw_injury(0x00, /*goto*/ 0x0c)
if_alertness(99, OPERATOR_GREATER_THAN, /*goto*/ 0x0c)
if_timer_gt(300, /*goto*/ 0x06)
endloop(0x0a)
label(0x06)
goto_first(0x03)
label(0x0c)
set_ailist(CHR_SELF, GAILIST_UNALERTED)
endlist
};
u8 func0403_k7_scientist[] = {
beginloop(0x14)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_in_room(CHR_TARGET, 0x00, 0x0035, /*goto*/ 0x03)
if_chr_in_room(CHR_TARGET, 0x00, 0x0036, /*goto*/ 0x03)
if_chr_in_room(CHR_TARGET, 0x00, 0x0037, /*goto*/ 0x03)
if_chr_in_room(CHR_TARGET, 0x00, 0x003a, /*goto*/ 0x03)
endloop(0x14)
label(0x03)
stop_chr
restart_timer
beginloop(0x08)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_in_sight(/*goto*/ 0x0c)
if_near_miss(/*goto*/ 0x0c)
if_num_times_shot_gt(0, /*goto*/ 0x0c)
if_saw_injury(0x00, /*goto*/ 0x0c)
if_saw_death(0x00, /*goto*/ 0x0c)
if_alertness(99, OPERATOR_GREATER_THAN, /*goto*/ 0x0c)
call_rng
if_rand_lt(1, /*goto*/ 0x06)
endloop(0x08)
label(0x06)
call_rng
if_rand_lt(64, /*goto*/ 0x09)
if_rand_lt(128, /*goto*/ 0x0a)
if_rand_lt(196, /*goto*/ 0x0b)
chr_do_animation(ANIM_GRAB_CROTCH, 0, -1, CHRANIMFLAG_SLOWUPDATE, 16, CHR_SELF, 2)
goto_next(0x0f)
label(0x09)
chr_do_animation(ANIM_YAWN, 0, -1, CHRANIMFLAG_SLOWUPDATE, 16, CHR_SELF, 2)
goto_next(0x0f)
label(0x0a)
chr_do_animation(ANIM_ROLL_HEAD, 0, -1, CHRANIMFLAG_SLOWUPDATE, 16, CHR_SELF, 2)
goto_next(0x0f)
label(0x0b)
chr_do_animation(ANIM_GRAB_BUTT, 0, -1, CHRANIMFLAG_SLOWUPDATE, 16, CHR_SELF, 2)
goto_next(0x0f)
beginloop(0x0f)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_in_sight(/*goto*/ 0x0c)
if_near_miss(/*goto*/ 0x0c)
if_num_times_shot_gt(0, /*goto*/ 0x0c)
if_saw_injury(0x00, /*goto*/ 0x0c)
if_alertness(99, OPERATOR_GREATER_THAN, /*goto*/ 0x0c)
if_chr_stopped(/*goto*/ 0x2f)
endloop(0x0f)
label(0x2f)
goto_first(0x03)
label(0x0c)
assign_sound(MP3_028F, CHANNEL_6)
#if VERSION >= VERSION_NTSC_1_0
play_sound_from_entity(CHANNEL_6, CHR_SELF, 0x0bb8, 0x1770, 0x01)
#endif
increase_squadron_alertness(100)
jog_to_pad(PAD_EAR_0133)
beginloop(0x0d)
if_chr_stopped(/*goto*/ 0x10)
endloop(0x0d)
label(0x10)
chr_do_animation(ANIM_COWER_0229, -1, -1, CHRANIMFLAG_SLOWUPDATE, 10, CHR_SELF, 2)
beginloop(0x0e)
if_chr_stopped(/*goto*/ 0x2f)
endloop(0x0e)
label(0x2f)
goto_first(0x10)
endlist
};
u8 func1016_setup_drcaroll[] = {
set_chr_chrflag(CHR_DRCAROLL, CHRCFLAG_HIDDEN)
set_ailist(CHR_DRCAROLL, GAILIST_INVINCIBLE_AND_IDLE)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func040a_init_basic_guard[] = {
set_chr_dodge_rating(2, 10)
set_accuracy(1)
set_reaction_speed(20)
set_chr_maxdamage(CHR_SELF, 40)
add_health_or_armor(0)
set_recovery_speed(0)
set_shield(0)
set_ailist(CHR_SELF, GAILIST_UNALERTED)
endlist
};
u8 func040b_init_shock_guard[] = {
set_chr_dodge_rating(2, 10)
set_accuracy(11)
set_reaction_speed(20)
set_chr_maxdamage(CHR_SELF, 40)
add_health_or_armor(0)
set_recovery_speed(10)
set_shield(0)
set_ailist(CHR_SELF, GAILIST_UNALERTED)
endlist
};
u8 func1019_msg_securitysector[] = {
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0052, /*goto*/ 0x2f)
endloop(0x04)
label(0x2f)
speak(CHR_P1P2, L_EAR_094, SFX_8173, CHANNEL_6, COLOR_09_BLUE) // "That's the highest security sector - Dr. Caroll ha..."
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func101a_msg_lotofpower[] = {
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0031, /*goto*/ 0x2f)
if_chr_in_room(CHR_P1P2, 0x00, 0x0042, /*goto*/ 0x2f)
endloop(0x04)
label(0x2f)
speak(CHR_P1P2, L_EAR_095, MP3_03A5, CHANNEL_6, COLOR_09_BLUE) // "Something around here's using a lot of power."
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func101b_msg_reprogram[] = {
if_difficulty_lt(DIFF_SA, /*goto*/ 0x08)
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0026, /*goto*/ 0x2f)
if_chr_in_room(CHR_P1P2, 0x00, 0x0024, /*goto*/ 0x2f)
endloop(0x04)
label(0x2f)
speak(CHR_P1P2, L_EAR_096, SFX_8174, CHANNEL_6, COLOR_09_BLUE) // "Reprogram that cleaning bot - it'll give you a way..."
label(0x08)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func101c_msg_radioactive[] = {
beginloop(0x04)
if_objective_complete(0, /*goto*/ 0x06)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0014, /*goto*/ 0x2f)
endloop(0x04)
label(0x2f)
speak(CHR_P1P2, L_EAR_097, SFX_8175, CHANNEL_6, COLOR_09_BLUE) // "Get out, Jo! The levels are too high. Use the CamS..."
label(0x06)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func101e_unlock_drcaroll_door[] = {
beginloop(0x04)
if_objective_complete(0, /*goto*/ 0x2f)
reloop(0x04)
label(0x2f)
if_difficulty_lt(DIFF_SA, /*goto*/ 0x06)
if_objective_complete(1, /*goto*/ 0x2f)
reloop(0x04)
label(0x2f)
if_objective_complete(2, /*goto*/ 0x2f)
reloop(0x04)
label(0x2f)
if_difficulty_lt(DIFF_PA, /*goto*/ 0x06)
if_objective_complete(3, /*goto*/ 0x06)
endloop(0x04)
label(0x06)
unlock_door(0x26, 0x40)
unlock_door(0x5a, 0x40)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func101f_check_bot_destroyed[] = {
beginloop(0x04)
if_object_in_good_condition(OBJ_PURPLEBOT, /*goto*/ 0x2f)
goto_next(0x08)
label(0x2f)
endloop(0x04)
// 0x32 is a laser
beginloop(0x08)
if_door_state(0x32, DOORSTATE_CLOSED, /*goto*/ 0x2f)
endloop(0x08)
label(0x2f)
if_chr_in_room(CHR_BOND, 0x00, 0x004d, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x004e, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x004f, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x0050, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x0051, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x0052, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x0053, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x0054, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x0055, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x0056, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x0057, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x0058, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x0059, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x005a, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x005b, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x005c, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x005d, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x005e, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x005f, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x0061, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x0062, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x0063, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x006c, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x006b, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x0069, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x0068, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x006d, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x006e, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x0064, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x0065, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x0066, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x0060, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x0067, /*goto*/ 0x06)
if_chr_in_room(CHR_BOND, 0x00, 0x006a, /*goto*/ 0x06)
if_chr_death_animation_finished(CHR_COOP, /*goto*/ 0x0b)
if_chr_in_room(CHR_COOP, 0x00, 0x004d, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x004e, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x004f, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x0050, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x0051, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x0052, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x0053, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x0054, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x0055, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x0056, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x0057, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x0058, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x0059, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x005a, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x005b, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x005c, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x005d, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x005e, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x005f, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x0061, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x0062, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x0063, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x006c, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x006b, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x0069, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x0068, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x006d, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x006e, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x0064, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x0065, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x0066, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x0060, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x0067, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x006a, /*goto*/ 0x06)
label(0x0b)
show_hudmsg(CHR_BOND, L_EAR_022) // "Critical mission object destroyed."
set_stage_flag(STAGEFLAG_00000008)
set_stage_flag(STAGEFLAG_00000004)
if_stage_flag_eq(STAGEFLAG_HAS_K7AVENGER, TRUE, /*goto*/ 0x2f)
set_stage_flag(STAGEFLAG_ITEMS_UNCOLLECTABLE)
label(0x2f)
if_stage_flag_eq(STAGEFLAG_HAS_NIGHTVISION, TRUE, /*goto*/ 0x2f)
set_stage_flag(STAGEFLAG_ITEMS_UNCOLLECTABLE)
label(0x2f)
set_ailist(CHR_SELF, GAILIST_IDLE)
label(0x06)
if_objective_complete(0, /*goto*/ 0x2f)
goto_first(0x0b)
label(0x2f)
if_difficulty_lt(DIFF_SA, /*goto*/ 0x2f)
if_objective_complete(2, /*goto*/ 0x2f)
goto_first(0x0b)
label(0x2f)
if_difficulty_lt(DIFF_PA, /*goto*/ 0x0d)
if_chr_has_object(CHR_BOND, OBJ_K7AVENGER, /*goto*/ 0x2f)
if_chr_has_object(CHR_COOP, OBJ_K7AVENGER, /*goto*/ 0x2f)
goto_first(0x0b)
label(0x2f)
if_chr_has_object(CHR_BOND, OBJ_NIGHTVISION, /*goto*/ 0x2f)
if_chr_has_object(CHR_COOP, OBJ_NIGHTVISION, /*goto*/ 0x2f)
label(0x0d)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1020_lock_agent_doors[] = {
label(0x04)
yield
if_difficulty_gt(DIFF_A, /*goto*/ 0x2f)
lock_door(0x5b, 0x08)
lock_door(0x5c, 0x08)
lock_door(0x5d, 0x08)
lock_door(0x5e, 0x08)
lock_door(0x5f, 0x08)
label(0x2f)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1022_setup_rtracker[] = {
yield
set_object_flag3(OBJ_CMP150_1, OBJFLAG3_RTRACKED_BLUE)
set_object_flag3(OBJ_CMP150_2, OBJFLAG3_RTRACKED_BLUE)
set_object_flag3(OBJ_PROXYMINES, OBJFLAG3_RTRACKED_BLUE)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1423_setup_environment[] = {
yield
configure_environment(0x0000, AIENVCMD_00, FALSE)
configure_environment(0x0000, AIENVCMD_01, FALSE)
configure_environment(0x0000, AIENVCMD_02, FALSE)
configure_environment(0x0000, AIENVCMD_03, FALSE)
configure_environment(0x0000, AIENVCMD_04, FALSE)
configure_environment(0x0001, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x0006, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x0007, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x0014, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x0015, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x0016, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x0017, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x0018, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x0019, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x001a, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x0023, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x0024, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x0025, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x0026, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x0027, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x0028, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x0029, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x0031, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x0032, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x0034, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x0035, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x0036, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x003e, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x003f, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x0042, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x0043, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x0044, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x0045, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x0046, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x005e, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x005f, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x0060, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x0064, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x0065, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x0066, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x0067, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x0069, AIENVCMD_ROOM_SETAMBIENT, TRUE)
configure_environment(0x006a, AIENVCMD_ROOM_SETAMBIENT, TRUE)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1424_start_lift[] = {
activate_lift(1, 0x60)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
struct ailist ailists[] = {
{ func0401_init_chr_with_flag, 0x0401 },
{ func0402_k7_guard, 0x0402 },
{ func0403_k7_scientist, 0x0403 },
{ func0404_scientist, 0x0404 },
{ func0405_init_scientist, 0x0405 },
{ func0406_nasty_scientist, 0x0406 },
{ func0407_init_nasty_scientist, 0x0407 },
{ func0408_alarm_responder, 0x0408 },
{ func0409_uplink_responder, 0x0409 },
{ func040a_init_basic_guard, 0x040a },
{ func040b_init_shock_guard, 0x040b },
{ func040c_start_path00, 0x040c },
{ func040d_start_path01, 0x040d },
{ func040e_start_path02, 0x040e },
{ func040f_start_path03, 0x040f },
{ func0410_start_path04, 0x0410 },
{ func0411_yellowbot, 0x0411 },
{ func0412_purplebot_programs, 0x0412 },
{ func0413_purplebot_at_lasers, 0x0413 },
{ func0415_radioactivity, 0x0415 },
{ func1400_setup_counterop, 0x1400 },
{ func1001_objectives_failed_msg, 0x1001 },
{ func1002_bot_activation_terminal, 0x1002 },
{ func1003_bot_programming_terminal, 0x1003 },
{ func1004_check_items_collected, 0x1004 },
{ func1005_check_unacceptable_casualties, 0x1005 },
{ func1006_terminal_activation, 0x1006 },
{ func1007_uplink, 0x1007 },
{ func1008_check_bot_terminals_destroyed, 0x1008 },
{ func1009_weaponscache, 0x1009 },
{ func100a_spawn_alarm_responders, 0x100a },
{ func100b_check_uplink_pc_destroyed, 0x100b },
{ func100c_shuffle_terminals, 0x100c },
{ func100e_experiment_terminals_destroyed, 0x100e },
{ func100f_check_for_end_level, 0x100f },
{ func1010_intro_from_menu, 0x1010 },
{ func1011_spawn_guards_during_uplink, 0x1011 },
{ func1012_start_laser_sound, 0x1012 },
{ func1013_hatch_pc, 0x1013 },
{ func1014_jo_radioactivity, 0x1014 },
{ func1415_outro_audio, 0x1415 },
{ func1016_setup_drcaroll, 0x1016 },
{ func1018_item_pickup_messages, 0x1018 },
{ func1019_msg_securitysector, 0x1019 },
{ func101a_msg_lotofpower, 0x101a },
{ func101b_msg_reprogram, 0x101b },
{ func101c_msg_radioactive, 0x101c },
{ func101d_coop_radioactivty, 0x101d },
{ func101e_unlock_drcaroll_door, 0x101e },
{ func101f_check_bot_destroyed, 0x101f },
{ func1020_lock_agent_doors, 0x1020 },
{ func1021_counterop_radioactivity, 0x1021 },
{ func1022_setup_rtracker, 0x1022 },
{ func1423_setup_environment, 0x1423 },
{ func1424_start_lift, 0x1424 },
{ func0414_walk_3_pads, 0x0414 },
{ func0416_intro, 0x0416 },
{ func0417_outro, 0x0417 },
{ func1010_intro_from_menu, 0x0c00 },
{ func0417_outro_from_menu, 0x0c01 },
{ NULL, 0 },
};
struct path paths[] = {
{ path00, 0, 0 },
{ path01, 1, 0 },
{ path02, 2, 0 },
{ path03, 3, 0 },
{ path04, 4, 0 },
{ path05, 5, 0 },
{ path06, 6, 0 },
{ path07, 7, 0 },
{ path08, 8, 0 },
{ path09, 9, 0 },
#if VERSION >= VERSION_NTSC_1_0
{ path10, 10, PATHFLAG_CIRCULAR },
#else
{ path10, 10, 0 },
#endif
{ path11, 11, 0 },
{ path12, 12, 0 },
{ path13, 13, 0 },
{ NULL, 0, 0 },
};