perfect_dark/src/files/setup/setuplee.c

4045 lines
143 KiB
C

//
// Attack Ship
//
#include "stagesetup.h"
// Characters
#define CHR_ELVIS 0x00
#define CHR_KNIFEABLE_SKEDAR 0x01
#define CHR_SUSPENDEDANIM1 0x0d
#define CHR_SUSPENDEDANIM2 0x0e
#define CHR_SUSPENDEDANIM3 0x0f
#define CHR_SUSPENDEDANIM4 0x10
#define CHR_BRIDGE1 0x25
#define CHR_BRIDGE2 0x26
#define CHR_BRIDGE3 0x2d
#define CHR_MAIAN1 0x2e
#define CHR_MAIAN2 0x2f
#define CHR_MAIAN3 0x30
#define CHR_BRIDGESPAWNER1 0x31
#define CHR_BRIDGESPAWNER2 0x32
#define CHR_CASS 0x33
#define CHR_INTRO_SKEDAR 0x34
#define CHR_SHY_SKEDAR 0x35 // hides behind the lift at the start
// Objects
#define OBJ_HANGARDOOR1 0x00
#define OBJ_HANGARDOOR2 0x01
#define OBJ_HANGARDOOR3 0x02
#define OBJ_HANGARDOOR4 0x03
#define OBJ_SHIELDCONSOLE1 0x04
#define OBJ_SHIELDCONSOLE2 0x05
#define OBJ_SHIELDCONSOLE3 0x06
#define OBJ_HANGARDOORCONSOLE 0x09
#define OBJ_HANGARLIFT_ELVIS 0x0c
#define OBJ_HANGARLIFT_JO 0x0e
#define OBJ_AR34 0x18
#define OBJ_ENGINE1 0x19
#define OBJ_ENGINE2 0x1a
#define OBJ_PREBRIDGELIFT 0x22
#define OBJ_BRIDGELIFT 0x23
#define OBJ_HANGAR_SHUTTLE 0x2c
#define OBJ_MAULER1 0x43
#define OBJ_MAULER2 0x44
#define OBJ_OUTRO_SHUTTLE 0x45
#define OBJ_NECKLACE 0x4a
// Stage flags
#define STAGEFLAG_ENTERED_BRIDGELIFT 0x00000001
#define STAGEFLAG_SAID_LOOKOUT 0x00000002
#define STAGEFLAG_SHIELDS_DISABLED 0x00000100
#define STAGEFLAG_HANGAR_DOORS_OPEN 0x00000200
#define STAGEFLAG_NAVIGATION_ROOM_DONE 0x00000400
#define STAGEFLAG_ELVIS_DEAD 0x00000800
#define STAGEFLAG_ENTERED_SLAYER_AREA 0x00001000
#define STAGEFLAG_TRIGGER_HANGAR_MAIANS 0x00002000
#define STAGEFLAG_HANGAR_ALARM_ACTIVATED 0x00004000
#define STAGEFLAG_HANGAR_KILLS_DONE 0x00008000
#define STAGEFLAG_ENGINES_DESTROYED 0x00010000
#define STAGEFLAG_ENTERED_BRIDGE 0x00020000
#define STAGEFLAG_ELVIS_COMING_TO_BRIDGE 0x00040000
#define STAGEFLAG_TRIGGER_BRIDGE_SPAWNING 0x00080000
#define STAGEFLAG_BRIDGE_CAPTURED 0x00100000
#define STAGEFLAG_SAID_GETSHIELDSDOWN 0x00200000
#define STAGEFLAG_INTRO_FINISHED 0x00400000
#define STAGEFLAG_CASS_AT_PAD 0x00800000
#define STAGEFLAG_SHY_SKEDAR_READY 0x01000000
#define STAGEFLAG_02000000 0x02000000
#define STAGEFLAG_SAID_GO_ON_AHEAD 0x04000000
#define STAGEFLAG_HANGAR_DOOR_CONSOLE_DESTROYED 0x08000000
#define STAGEFLAG_MET_ELVIS 0x10000000
#define STAGEFLAG_AMMO_WASTED 0x20000000
#define STAGEFLAG_CASS_SCREAMING 0x40000000
#define STAGEFLAG_BRIDGE_DOORS_UNLOCKED 0x80000000
// AI Lists
#define AILIST_INIT_KNIFEABLE_SKEDAR 0x0407
#define AILIST_KNIFEABLE_SKEDAR 0x0408
#define AILIST_ELVIS_FOLLOW 0x0409
#define AILIST_ELVIS_GO_TO_HANGAR_LIFT 0x040a
#define AILIST_INIT_CASS 0x040b
#define AILIST_ELVIS_RUN_FROM_ENGINEROOM 0x040c
#define AILIST_ELVIS_WAIT_FOR_HANGAR_ENTRY 0x040d
#define AILIST_ELVIS_GIVE_AR34 0x040e
#define AILIST_INIT_SKEDAR 0x040f
#define AILIST_WAKE_SUSPENDEDANIM_SKEDAR 0x0410
#define AILIST_HANGARSPAWNER 0x0412
#define AILIST_INIT_HANGARCLONE 0x0413
#define AILIST_HANGARCLONE 0x0414
#define AILIST_INIT_BRIDGECLONE 0x0416
#define AILIST_INIT_BRIDGESPAWNER_REVEAL 0x0417
#define AILIST_INIT_HANGAR_MAIAN 0x0418
#define AILIST_HANGAR_MAIAN 0x0419
#define AILIST_BRIDGECLONE 0x041a
#define AILIST_ELVIS_AT_BRIDGE 0x041b
#define AILIST_ELVIS_OUTSIDE_PREBRIDGELIFT 0x041c
#define AILIST_INIT_ELVIS_OUTSIDE_PREBRIDGELIFT 0x041d
#define AILIST_INIT_BRIDGE1AND2 0x041e
#define AILIST_CLOAK_AND_REMOVE 0x041f
#define AILIST_INIT_BRIDGE3 0x0420
#define AILIST_BRIDGE_SKEDAR 0x0421
#define AILIST_CASS 0x0422
#define AILIST_SHY_SKEDAR 0x0423
#define AILIST_SHY_SKEDAR_WAIT 0x0424
#define AILIST_INIT_SHY_SKEDAR 0x0425
#define AILIST_OUTRO 0x0426
#define AILIST_SET_CLOAKED 0x0427
#define AILIST_SET_UNCLOAKED 0x0428
enum labelnum {
LABEL_60 = (VERSION >= VERSION_NTSC_1_0 ? 0x60 : 0x5f),
LABEL_61,
LABEL_62,
LABEL_63,
LABEL_64,
LABEL_65,
LABEL_66,
LABEL_67,
LABEL_68,
LABEL_69,
LABEL_6A,
LABEL_6B,
#if VERSION >= VERSION_NTSC_1_0
LABEL_6C,
#endif
LABEL_6D,
LABEL_6E,
LABEL_6F,
LABEL_70,
LABEL_71,
LABEL_72,
LABEL_73,
LABEL_74,
LABEL_75,
LABEL_76,
LABEL_77,
LABEL_78,
LABEL_79,
LABEL_7A,
LABEL_7B,
LABEL_7C,
LABEL_7D,
LABEL_7E,
LABEL_7F,
LABEL_80,
LABEL_81,
LABEL_82,
LABEL_83,
LABEL_84,
LABEL_85,
LABEL_86,
LABEL_87,
LABEL_88,
LABEL_89,
LABEL_8A,
LABEL_8B,
LABEL_8C,
LABEL_8D,
LABEL_8E,
LABEL_8F,
LABEL_90,
LABEL_91,
LABEL_92,
LABEL_93,
LABEL_94,
LABEL_95,
LABEL_96,
LABEL_97,
LABEL_98,
LABEL_99,
LABEL_9A,
LABEL_9B,
LABEL_9C,
LABEL_9D,
LABEL_9E,
LABEL_9F,
LABEL_A0,
LABEL_A1,
LABEL_A2,
LABEL_A3,
LABEL_A4,
LABEL_A5,
LABEL_A6,
LABEL_A7,
LABEL_A8,
LABEL_A9,
LABEL_AA,
LABEL_AB,
LABEL_AC,
LABEL_AD,
LABEL_AE,
LABEL_AF,
LABEL_B0,
LABEL_B1,
LABEL_B2,
LABEL_B3,
LABEL_B4,
LABEL_B5,
LABEL_B6,
LABEL_B7,
LABEL_B8,
LABEL_B9,
LABEL_BA,
LABEL_BB,
LABEL_BC,
LABEL_BD,
LABEL_BE,
LABEL_BF,
LABEL_C0,
LABEL_C1,
LABEL_C2,
LABEL_C3,
LABEL_C4,
LABEL_C5,
LABEL_C6,
LABEL_C7,
LABEL_C8,
LABEL_C9,
LABEL_CA,
LABEL_CB,
LABEL_CC,
LABEL_CD,
LABEL_CE,
LABEL_CF,
LABEL_D0,
LABEL_D1
};
#if VERSION < VERSION_NTSC_1_0
#define LABEL_6C LABEL_6D
#endif
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_LEE_001)
briefing(BRIEFINGTYPE_TEXT_PA, L_LEE_000)
briefing(BRIEFINGTYPE_TEXT_SA, L_LEE_002)
briefing(BRIEFINGTYPE_TEXT_A, L_LEE_003)
beginobjective(0, L_LEE_005, (DIFFBIT_A | DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD)) // "Disable shield system"
complete_flags(STAGEFLAG_SHIELDS_DISABLED)
fail_flags(STAGEFLAG_AMMO_WASTED)
endobjective
beginobjective(1, L_LEE_006, (DIFFBIT_PA | DIFFBIT_PD)) // "Open hangar doors"
complete_flags(STAGEFLAG_HANGAR_DOORS_OPEN)
fail_flags(STAGEFLAG_HANGAR_DOOR_CONSOLE_DESTROYED)
endobjective
beginobjective(2, L_LEE_007, (DIFFBIT_A | DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD)) // "Access navigational systems"
complete_flags(STAGEFLAG_NAVIGATION_ROOM_DONE)
fail_flags(STAGEFLAG_ELVIS_DEAD)
endobjective
beginobjective(3, L_LEE_008, (DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD)) // "Sabotage engine systems"
complete_flags(STAGEFLAG_ENGINES_DESTROYED)
endobjective
beginobjective(4, L_LEE_009, (DIFFBIT_A | DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD)) // "Gain control of bridge"
complete_flags(STAGEFLAG_BRIDGE_CAPTURED)
endobjective
tag(0x2f, 5)
tag(0x30, 5)
tag(0x25, 2)
tag(0x23, 1)
lift(0x0100, MODEL_SK_LIFT, PAD_LEE_018C, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x018c, 0x018d, -1, -1, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00008000, 0x000a0000, 0x1f000000)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_0180, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_0181, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0xffffffff, 0x00000000)
lift_door(-2, -3, 0)
lift_door(-2, -4, 0)
chr(SPAWNFLAG_00000200, 0x01, PAD_LEE_01CF, BODY_SKEDAR, HEAD_RANDOM, AILIST_INIT_KNIFEABLE_SKEDAR, -1, -1, 1000, 8, 0, CHRFLAG1_ADJUSTPUNCHSPEED, TEAM_ENEMY, SQUADRON_00, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x0001, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(0, 0x35, PAD_LEE_00E8, BODY_SKEDAR, HEAD_RANDOM, AILIST_INIT_SHY_SKEDAR, -1, -1, 1000, 6, CHRFLAG0_SKIPSAFETYCHECKS, CHRFLAG1_ADJUSTPUNCHSPEED, TEAM_ENEMY, SQUADRON_00, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x0035, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_00000200, 0x05, PAD_LEE_01CD, BODY_SKEDAR, HEAD_RANDOM, 0x0401, -1, -1, 100, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_01, -1, 0, 2, 0, 4, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x0005, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_00000200, 0x06, PAD_LEE_01CE, BODY_SKEDAR, HEAD_RANDOM, 0x0402, -1, -1, 100, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_01, -1, 0, 2, 0, 4, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x0006, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(0, 0x07, PAD_LEE_00B1, BODY_SKEDAR, HEAD_RANDOM, AILIST_HANGARSPAWNER, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, CHRFLAG1_ALLOWSOFTCOVER, TEAM_ENEMY, SQUADRON_02, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x0007, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(0, 0x08, PAD_LEE_00AE, BODY_SKEDAR, HEAD_RANDOM, AILIST_HANGARSPAWNER, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS, 0, TEAM_ENEMY, SQUADRON_02, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x0008, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(0, 0x09, PAD_LEE_01D0, BODY_SKEDAR, HEAD_RANDOM, AILIST_HANGARSPAWNER, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_02, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x0009, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(0, 0x0a, PAD_LEE_010D, BODY_SKEDAR, HEAD_RANDOM, AILIST_HANGARSPAWNER, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS, 0, TEAM_ENEMY, SQUADRON_02, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x000a, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_BLUESIGHT, 0x2e, PAD_LEE_01D8, BODY_ELVIS1, HEAD_MAIAN_S, AILIST_INIT_HANGAR_MAIAN, 0x00b4, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS, CHRFLAG1_ALLOWSOFTCOVER | CHRFLAG1_AIVSAI_ADVANTAGED | CHRFLAG1_NOOP_00200000 | CHRFLAG1_IGNORECOVER, TEAM_ALLY, SQUADRON_01, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAIANSMG, 0x002e, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_CALLISTO)
chr(SPAWNFLAG_BLUESIGHT, 0x2f, PAD_LEE_01D9, BODY_ELVIS1, HEAD_MAIAN_S, AILIST_INIT_HANGAR_MAIAN, 0x00b4, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS, CHRFLAG1_ALLOWSOFTCOVER | CHRFLAG1_AIVSAI_ADVANTAGED | CHRFLAG1_NOOP_00200000 | CHRFLAG1_IGNORECOVER, TEAM_ALLY, SQUADRON_01, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAIANSMG, 0x002f, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_CALLISTO)
chr(SPAWNFLAG_IGNORECOLLISION | SPAWNFLAG_BLUESIGHT, 0x30, PAD_LEE_01F5, BODY_ELVIS1, HEAD_MAIAN_S, GAILIST_IDLE, 0x00b4, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS, CHRFLAG1_ALLOWSOFTCOVER | CHRFLAG1_AIVSAI_ADVANTAGED | CHRFLAG1_NOOP_00200000 | CHRFLAG1_IGNORECOVER, TEAM_ENEMY, SQUADRON_01, -1, 0, 0, 0, 0, 0)
chr(SPAWNFLAG_ANTINONINTERACTABLE | SPAWNFLAG_BLUESIGHT, 0x00, PAD_LEE_00FE, BODY_ELVISWAISTCOAT, HEAD_ELVIS, AILIST_ELVIS_WAIT_FOR_HANGAR_ENTRY, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS, CHRFLAG1_ALLOWSOFTCOVER | CHRFLAG1_AIVSAI_ADVANTAGED | CHRFLAG1_NOOP_00200000 | CHRFLAG1_PUNCHHARDER, TEAM_NONCOMBAT, SQUADRON_01, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAIANPISTOL, 0x0000, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_PHOENIX)
weapon(0x0100, MODEL_CHRMAIANPISTOL, 0x0000, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_PHOENIX)
link_guns(-1, -2)
weapon(0x0100, MODEL_CHRPCGUN, PAD_LEE_001D, 0, 0, 0, WEAPON_AR34)
tag(0x18, -1)
chr(SPAWNFLAG_ONLYONPA, 0x02, PAD_LEE_00D6, BODY_SKEDAR, HEAD_RANDOM, GAILIST_IDLE_0009, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS, 0, TEAM_ENEMY, SQUADRON_03, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x0002, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_ONLYONPA, 0x37, PAD_LEE_00D0, BODY_SKEDAR, HEAD_RANDOM, AILIST_INIT_SKEDAR, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_03, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x0037, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_00000200, 0x0b, PAD_LEE_0020, BODY_SKEDAR, HEAD_RANDOM, AILIST_INIT_SKEDAR, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_04, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x000b, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_00000200, 0x0c, PAD_LEE_001F, BODY_SKEDAR, HEAD_RANDOM, AILIST_INIT_SKEDAR, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_04, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x000c, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(0, 0x0d, PAD_LEE_004B, BODY_SKEDAR, HEAD_RANDOM, GAILIST_IDLE, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, 0, TEAM_NONCOMBAT, SQUADRON_05, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x000d, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(0, 0x0e, PAD_LEE_004C, BODY_SKEDAR, HEAD_RANDOM, GAILIST_IDLE, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, 0, TEAM_NONCOMBAT, SQUADRON_05, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x000e, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(0, 0x0f, PAD_LEE_004D, BODY_SKEDAR, HEAD_RANDOM, GAILIST_IDLE, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, 0, TEAM_NONCOMBAT, SQUADRON_05, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x000f, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(0, 0x10, PAD_LEE_004E, BODY_SKEDAR, HEAD_RANDOM, GAILIST_IDLE, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, 0, TEAM_NONCOMBAT, SQUADRON_05, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x0010, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_00000200, 0x11, PAD_LEE_0028, BODY_SKEDAR, HEAD_RANDOM, AILIST_INIT_SKEDAR, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_06, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x0011, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_00000200, 0x12, PAD_LEE_0044, BODY_SKEDAR, HEAD_RANDOM, AILIST_INIT_SKEDAR, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_06, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x0012, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_00000200, 0x13, PAD_LEE_0039, BODY_SKEDAR, HEAD_RANDOM, AILIST_INIT_SKEDAR, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_06, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x0013, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_00000200, 0x14, PAD_LEE_0035, BODY_SKEDAR, HEAD_RANDOM, AILIST_INIT_SKEDAR, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_07, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x0014, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_00000200, 0x15, PAD_LEE_0036, BODY_SKEDAR, HEAD_RANDOM, AILIST_INIT_SKEDAR, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_07, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x0015, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_00000200, 0x16, PAD_LEE_0052, BODY_SKEDAR, HEAD_RANDOM, AILIST_INIT_SKEDAR, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_08, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x0016, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_00000200, 0x17, PAD_LEE_0051, BODY_SKEDAR, HEAD_RANDOM, AILIST_INIT_SKEDAR, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_08, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x0017, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_00000200, 0x18, PAD_LEE_0053, BODY_SKEDAR, HEAD_RANDOM, AILIST_INIT_SKEDAR, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_08, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x0018, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_00000200, 0x19, PAD_LEE_0054, BODY_SKEDAR, HEAD_RANDOM, AILIST_INIT_SKEDAR, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_08, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x0019, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_00000200, 0x1a, PAD_LEE_01DB, BODY_SKEDAR, HEAD_RANDOM, AILIST_INIT_SKEDAR, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_09, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x001a, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_00000200, 0x1b, PAD_LEE_005E, BODY_SKEDAR, HEAD_RANDOM, AILIST_INIT_SKEDAR, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_09, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x001b, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_00000200, 0x1c, PAD_LEE_0059, BODY_SKEDAR, HEAD_RANDOM, AILIST_INIT_SKEDAR, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_0A, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x001c, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_00000200, 0x1d, PAD_LEE_0056, BODY_SKEDAR, HEAD_RANDOM, AILIST_INIT_SKEDAR, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_0A, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x001d, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_00000200, 0x1e, PAD_LEE_005F, BODY_SKEDAR, HEAD_RANDOM, AILIST_INIT_SKEDAR, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_0B, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x001e, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_00000200, 0x1f, PAD_LEE_0055, BODY_SKEDAR, HEAD_RANDOM, AILIST_INIT_SKEDAR, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_0B, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x001f, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_00000200, 0x20, PAD_LEE_0060, BODY_SKEDAR, HEAD_RANDOM, AILIST_INIT_SKEDAR, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_0B, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x0020, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_00000200, 0x21, PAD_LEE_0068, BODY_SKEDAR, HEAD_RANDOM, AILIST_INIT_SKEDAR, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_0C, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x0021, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_00000200, 0x22, PAD_LEE_0069, BODY_SKEDAR, HEAD_RANDOM, AILIST_INIT_SKEDAR, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_0C, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x0022, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_00000200, 0x25, PAD_LEE_0089, BODY_SKEDAR, HEAD_RANDOM, AILIST_INIT_BRIDGE1AND2, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_CAN_USE_COVER | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_0D, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x0025, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_00000200, 0x26, PAD_LEE_0088, BODY_SKEDAR, HEAD_RANDOM, AILIST_INIT_BRIDGE1AND2, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_CAN_USE_COVER | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_0D, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x0026, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_00000200 | SPAWNFLAG_FIXEDHEIGHT, 0x2d, PAD_LEE_00A4, BODY_SKEDAR, HEAD_RANDOM, AILIST_INIT_BRIDGE3, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_CAN_USE_COVER | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_0D, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x002d, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_MAULER)
weapon(0x0100, MODEL_CHRMAULER, 0x002d, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
link_guns(-1, -2)
tag(0x43, -3)
tag(0x44, -3)
chr(0, 0x31, PAD_LEE_0095, BODY_SKEDAR, HEAD_RANDOM, 0x0415, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS, 0, TEAM_ENEMY, SQUADRON_01, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x0031, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(0, 0x32, PAD_LEE_0096, BODY_SKEDAR, HEAD_RANDOM, 0x0415, -1, -1, 1000, 200, CHRFLAG0_GP1 | CHRFLAG0_SKIPSAFETYCHECKS, 0, TEAM_ENEMY, SQUADRON_01, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x0032, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(0, 0x33, PAD_LEE_00DB, BODY_CASSANDRA, HEAD_CASSANDRA, AILIST_INIT_CASS, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_CAN_USE_COVER | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_01, -1, 0, 0, 0, 0, 0)
chr(SPAWNFLAG_FIXEDHEIGHT, 0x34, PAD_LEE_00E3, BODY_SKEDAR, 0x00, GAILIST_IDLE, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_CAN_USE_COVER | CHRFLAG0_NOHEAR, CHRFLAG1_ADJUSTPUNCHSPEED, TEAM_ENEMY, SQUADRON_01, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x0034, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_00000200, 0x27, PAD_LEE_0002, BODY_SKEDAR, HEAD_RANDOM, AILIST_INIT_SKEDAR, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_0E, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x0027, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_00000200, 0x28, PAD_LEE_0006, BODY_SKEDAR, HEAD_RANDOM, 0x0403, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_0E, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x0028, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_00000200, 0x29, PAD_LEE_0008, BODY_SKEDAR, HEAD_RANDOM, 0x0406, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_0E, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x0029, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_00000200, 0x2a, PAD_LEE_0005, BODY_SKEDAR, HEAD_RANDOM, 0x0404, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_0E, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x002a, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_00000200, 0x2b, PAD_LEE_000D, BODY_SKEDAR, HEAD_RANDOM, 0x0405, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_0E, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x002b, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
chr(SPAWNFLAG_00000200, 0x2c, PAD_LEE_006B, BODY_SKEDAR, HEAD_RANDOM, AILIST_INIT_SKEDAR, -1, -1, 1000, 200, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_AIVSAI | CHRFLAG0_NOHEAR, 0, TEAM_ENEMY, SQUADRON_0F, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRMAULER, 0x002c, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_MAULER)
tag(0x4a, 1)
key(0x0100, MODEL_CHRCHAIN, 0x0033, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_COLLECTABLE | OBJFLAG_REACTIFSHOT | OBJFLAG_01000000, 0, 0, 8)
rename_object(-1, WEAPON_NECKLACE, L_LEE_050, L_LEE_051, L_LEE_052, L_LEE_053, L_LEE_054) // "Obtain De Vries' necklace."
tag(0x3f, 2)
tag(0x40, 2)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_016A, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, OBJFLAG2_LOCKEDFRONT | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00010000, 0x00010000, 0x00320000, 0x0001aaaa, 0x00008000, 0, DOORTYPE_SLIDING, 0x00000080, 0x0000012c, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_016B, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, OBJFLAG2_LOCKEDBACK | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00010000, 0x00010000, 0x00320000, 0x0001aaaa, 0x00008000, 0, DOORTYPE_SLIDING, 0x00000080, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_016C, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_016D, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_016E, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_016F, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_0174, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_0175, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_0176, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_0177, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0xffffffff, 0x00000000)
tag(0x41, 2)
tag(0x42, 2)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_0178, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_0179, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_017A, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_017B, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_017C, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_017D, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_0189, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000040, 0x000000f0, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_0188, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000040, 0x000000f0, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_0186, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000040, 0x000000f0, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_0187, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000040, 0x000000f0, 0x00000000, 0xffffffff, 0x00000000)
tag(0x48, 2)
tag(0x49, 2)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_0185, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, OBJFLAG2_LOCKEDBACK, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000040, 0x000000f0, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_0184, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, OBJFLAG2_LOCKEDFRONT, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000040, 0x000000f0, 0x00000000, 0xffffffff, 0x00000000)
tag(0x46, 2)
tag(0x47, 2)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_018A, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, OBJFLAG2_LOCKEDBACK, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000040, 0x000000f0, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_018B, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, OBJFLAG2_LOCKEDFRONT, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000040, 0x000000f0, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_SK_SHIP_DOOR1, PAD_LEE_0114, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR1, PAD_LEE_0115, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_SK_SHIP_DOOR1, PAD_LEE_0116, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR1, PAD_LEE_0117, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_SK_SHIP_DOOR1, PAD_LEE_0118, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR1, PAD_LEE_0119, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_SK_SHIP_DOOR1, PAD_LEE_011A, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR1, PAD_LEE_011B, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_SK_SHIP_DOOR1, PAD_LEE_011C, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR1, PAD_LEE_011D, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_SK_SHIP_DOOR1, PAD_LEE_011E, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR1, PAD_LEE_011F, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_SK_SHIP_DOOR1, PAD_LEE_0120, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR1, PAD_LEE_0121, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_SK_SHIP_DOOR1, PAD_LEE_0122, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR1, PAD_LEE_0123, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_SK_SHIP_DOOR1, PAD_LEE_0124, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR1, PAD_LEE_0125, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_SK_SHIP_DOOR1, PAD_LEE_0126, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR1, PAD_LEE_0127, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_SK_SHIP_DOOR1, PAD_LEE_0128, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR1, PAD_LEE_0129, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_SK_SHIP_DOOR1, PAD_LEE_012A, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR1, PAD_LEE_012B, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_SK_SHIP_DOOR1, PAD_LEE_012C, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR1, PAD_LEE_012D, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_SK_SHIP_DOOR1, PAD_LEE_012E, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR1, PAD_LEE_012F, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_SK_SHIP_HULLDOOR1, PAD_LEE_0134, OBJFLAG_00000010 | OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00780000, 0x03e80000, 0x00640000, 0x00640000, 0x00010000, 0, DOORTYPE_HULL, 0x00000000, 0x0000ea60, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_SK_SHIP_HULLDOOR2, PAD_LEE_0135, OBJFLAG_00000010 | OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00780000, 0x03e80000, 0x00640000, 0x00640000, 0x00010000, 0, DOORTYPE_HULL, 0x00000000, 0x0000ea60, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_SK_SHIP_HULLDOOR3, PAD_LEE_0136, OBJFLAG_00000010 | OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000bd1f, 0x0000bd1f, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_SK_SHIP_HULLDOOR4, PAD_LEE_0137, OBJFLAG_00000010 | OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000bd1f, 0x0000bd1f, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0xfffffffd, 0x00000000)
door(0x0100, MODEL_SK_SHIP_HULLDOOR1, PAD_LEE_0138, OBJFLAG_00000010 | OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00780000, 0x03e80000, 0x00640000, 0x00640000, 0x00010000, 0, DOORTYPE_HULL, 0x00000000, 0x0000ea60, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_SK_SHIP_HULLDOOR2, PAD_LEE_0139, OBJFLAG_00000010 | OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00780000, 0x03e80000, 0x00640000, 0x00640000, 0x00010000, 0, DOORTYPE_HULL, 0x00000000, 0x0000ea60, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_SK_SHIP_HULLDOOR3, PAD_LEE_013A, OBJFLAG_00000010 | OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000bd1f, 0x0000bd1f, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_SK_SHIP_HULLDOOR4, PAD_LEE_013B, OBJFLAG_00000010 | OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000bd1f, 0x0000bd1f, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0xfffffffd, 0x00000000)
door(0x0100, MODEL_SK_SHIP_HULLDOOR1, PAD_LEE_013C, OBJFLAG_00000010 | OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00780000, 0x03e80000, 0x00640000, 0x00640000, 0x00010000, 0, DOORTYPE_HULL, 0x00000000, 0x0000ea60, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_SK_SHIP_HULLDOOR2, PAD_LEE_013D, OBJFLAG_00000010 | OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00780000, 0x03e80000, 0x00640000, 0x00640000, 0x00010000, 0, DOORTYPE_HULL, 0x00000000, 0x0000ea60, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_SK_SHIP_HULLDOOR3, PAD_LEE_013E, OBJFLAG_00000010 | OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000bd1f, 0x0000bd1f, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_SK_SHIP_HULLDOOR4, PAD_LEE_013F, OBJFLAG_00000010 | OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000bd1f, 0x0000bd1f, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0xfffffffd, 0x00000000)
tag(0x0f, 2)
tag(0x10, 2)
door(0x0100, MODEL_SK_CRYOPOD1_BOT, PAD_LEE_0144, OBJFLAG_ILLUMINATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000eb68, 0x0000eb68, 0x0001aaaa, 0x00002aaa, 0x00002aaa, 0, DOORTYPE_VERTICAL, 0x00000002, 0x00000384, 0x00000000, 0x00000001, 0x00001100)
door(0x0100, MODEL_SK_CRYOPOD1_TOP, PAD_LEE_0145, OBJFLAG_ILLUMINATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00010000, 0x00010000, 0x0001aaaa, 0x00002aaa, 0x00002aaa, 0, DOORTYPE_VERTICAL, 0x00000002, 0x00000384, 0x00000000, 0xffffffff, 0x00000000)
tag(0x11, 2)
tag(0x12, 2)
door(0x0100, MODEL_SK_CRYOPOD1_TOP, PAD_LEE_0146, OBJFLAG_ILLUMINATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00010000, 0x00010000, 0x0001aaaa, 0x00002aaa, 0x00002aaa, 0, DOORTYPE_VERTICAL, 0x00000002, 0x00000384, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_SK_CRYOPOD1_BOT, PAD_LEE_0147, OBJFLAG_ILLUMINATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000eb68, 0x0000eb68, 0x0001aaaa, 0x00002aaa, 0x00002aaa, 0, DOORTYPE_VERTICAL, 0x00000002, 0x00000384, 0x00000000, 0xffffffff, 0x00001100)
tag(0x13, 2)
tag(0x14, 2)
door(0x0100, MODEL_SK_CRYOPOD1_BOT, PAD_LEE_0148, OBJFLAG_ILLUMINATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000eb68, 0x0000eb68, 0x0001aaaa, 0x00002aaa, 0x00002aaa, 0, DOORTYPE_VERTICAL, 0x00000002, 0x00000384, 0x00000000, 0x00000001, 0x00001100)
door(0x0100, MODEL_SK_CRYOPOD1_TOP, PAD_LEE_0149, OBJFLAG_ILLUMINATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00010000, 0x00010000, 0x0001aaaa, 0x00002aaa, 0x00002aaa, 0, DOORTYPE_VERTICAL, 0x00000002, 0x00000384, 0x00000000, 0xffffffff, 0x00000000)
tag(0x15, 2)
tag(0x16, 2)
door(0x0100, MODEL_SK_CRYOPOD1_TOP, PAD_LEE_014A, OBJFLAG_ILLUMINATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00010000, 0x00010000, 0x0001aaaa, 0x00002aaa, 0x00002aaa, 0, DOORTYPE_VERTICAL, 0x00000002, 0x00000384, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_SK_CRYOPOD1_BOT, PAD_LEE_014B, OBJFLAG_ILLUMINATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000eb68, 0x0000eb68, 0x0001aaaa, 0x00002aaa, 0x00002aaa, 0, DOORTYPE_VERTICAL, 0x00000002, 0x00000384, 0x00000000, 0xffffffff, 0x00001100)
door(0x0100, MODEL_SK_HANGARDOOR_BOT, PAD_LEE_014D, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000e666, 0x00005555, 0x00005555, 0x00000444, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00001e00)
door(0x0100, MODEL_SK_HANGARDOOR_TOP, PAD_LEE_014C, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000e666, 0x0000e666, 0x00005555, 0x00005555, 0x00000444, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_SK_HANGARDOOR_BOT, PAD_LEE_014E, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000e666, 0x00005555, 0x00005555, 0x00000444, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00001e00)
door(0x0100, MODEL_SK_HANGARDOOR_TOP, PAD_LEE_014F, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000e666, 0x0000e666, 0x00005555, 0x00005555, 0x00000444, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_SK_HANGARDOOR_BOT, PAD_LEE_0150, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000e666, 0x00005555, 0x00005555, 0x00000444, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00001e00)
door(0x0100, MODEL_SK_HANGARDOOR_TOP, PAD_LEE_0151, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000e666, 0x0000e666, 0x00005555, 0x00005555, 0x00000444, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_SK_HANGARDOOR_BOT, PAD_LEE_0152, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000e666, 0x00005555, 0x00005555, 0x00000444, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00001e00)
door(0x0100, MODEL_SK_HANGARDOOR_TOP, PAD_LEE_0153, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000e666, 0x0000e666, 0x00005555, 0x00005555, 0x00000444, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
tag(0x24, 1)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_0154, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_0155, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0xffffffff, 0x00000000)
tag(0x17, 1)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_0156, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000003c0, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_0157, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000003c0, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_0158, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000004, 0x000000f0, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_0159, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000004, 0x000000f0, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_015A, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, OBJFLAG2_LOCKEDFRONT, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000004, 0x000000f0, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_015B, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, OBJFLAG2_LOCKEDBACK, 0, 1000, 0x00010000, 0x00010000, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000004, 0x000000f0, 0x00000000, 0xffffffff, 0x00000000)
tag(0x31, 6)
tag(0x32, 6)
tag(0x33, 8)
tag(0x34, 8)
tag(0x2a, 1)
lift(0x0100, MODEL_SK_LIFT, PAD_LEE_0194, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x0194, 0x0195, -1, -1, 0x00000001, 0x00000005, 0x00000000, 0x00000000, 0x00030000, 0x00050000, 0x1f000000)
door(0x0100, MODEL_SK_SHIP_DOOR1, PAD_LEE_015C, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00320000, 0x0001aaaa, 0x00008000, 0, DOORTYPE_SLIDING, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR1, PAD_LEE_015D, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x00010000, 0x00320000, 0x0001aaaa, 0x00008000, 0, DOORTYPE_SLIDING, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
lift_door(-2, -3, 0)
lift_door(-2, -4, 0)
door(0x0100, MODEL_SK_HANGARDOOR_BOT, PAD_LEE_015E, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000e666, 0x000a0000, 0x000a0000, 0x00008000, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000500)
door(0x0100, MODEL_SK_HANGARDOOR_TOP, PAD_LEE_015F, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000e666, 0x0000e666, 0x000a0000, 0x000a0000, 0x00008000, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
lift_door(-2, -7, 1)
lift_door(-2, -8, 1)
tag(0x35, 6)
tag(0x36, 6)
tag(0x37, 8)
tag(0x38, 8)
tag(0x2b, 1)
lift(0x0100, MODEL_SK_LIFT, PAD_LEE_0196, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x0196, 0x0197, -1, -1, 0x00000001, 0x00000005, 0x00000000, 0x00000000, 0x00030000, 0x00050000, 0x1f000000)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_0160, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, OBJFLAG2_LOCKEDFRONT | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00010000, 0x00010000, 0x000a0000, 0x00005555, 0x00001999, 0, DOORTYPE_SLIDING, 0x00000080, 0x0000012c, 0x00000000, 0x00000001, 0x00000500)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_0161, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, OBJFLAG2_LOCKEDFRONT | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00010000, 0x00010000, 0x000a0000, 0x00005555, 0x00001999, 0, DOORTYPE_SLIDING, 0x00000080, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
lift_door(-2, -3, 0)
lift_door(-2, -4, 0)
door(0x0100, MODEL_SK_HANGARDOOR_BOT, PAD_LEE_0162, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000e666, 0x000a0000, 0x000a0000, 0x00008000, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000500)
door(0x0100, MODEL_SK_HANGARDOOR_TOP, PAD_LEE_0163, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000e666, 0x0000e666, 0x000a0000, 0x000a0000, 0x00008000, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
lift_door(-2, -7, 1)
lift_door(-2, -8, 1)
tag(0x39, 5)
tag(0x3a, 5)
tag(0x29, 2)
tag(0x0e, 1)
lift(0x0100, MODEL_SK_LIFT, PAD_LEE_0193, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x0193, 0x0192, -1, -1, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00008000, 0x00050000, 0x1f000000)
door(0x0100, MODEL_SK_HANGARDOORB_BOT, PAD_LEE_0166, OBJFLAG_ILLUMINATED | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x0000e666, 0x000a0000, 0x000a0000, 0x00008000, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000500)
door(0x0100, MODEL_SK_HANGARDOORB_TOP, PAD_LEE_0167, OBJFLAG_ILLUMINATED | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000e666, 0x0000e666, 0x000a0000, 0x000a0000, 0x00008000, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
lift_door(-2, -3, 1)
lift_door(-2, -4, 1)
tag(0x3b, 5)
tag(0x3c, 5)
tag(0x28, 2)
tag(0x0c, 1)
lift(0x0100, MODEL_SK_LIFT, PAD_LEE_0190, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x0190, 0x0191, -1, -1, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00008000, 0x00050000, 0x1f000000)
door(0x0100, MODEL_SK_HANGARDOORB_BOT, PAD_LEE_0164, OBJFLAG_ILLUMINATED | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000e666, 0x000a0000, 0x000a0000, 0x00008000, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000500)
door(0x0100, MODEL_SK_HANGARDOORB_TOP, PAD_LEE_0165, OBJFLAG_ILLUMINATED | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000e666, 0x0000e666, 0x000a0000, 0x000a0000, 0x00008000, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
lift_door(-2, -3, 0)
lift_door(-2, -4, 0)
tag(0x3d, 5)
tag(0x3e, 5)
tag(0x26, 2)
tag(0x22, 1)
lift(0x0100, MODEL_SK_LIFT, PAD_LEE_018E, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x018e, 0x018f, -1, -1, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00004000, 0x00028000, 0x1f000000)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_0182, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000e666, 0x00005555, 0x00005555, 0x00000444, 0, DOORTYPE_SLIDING, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_DOOR2, PAD_LEE_0183, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000e666, 0x0000e666, 0x00005555, 0x00005555, 0x00000444, 0, DOORTYPE_SLIDING, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
lift_door(-2, -3, 0)
lift_door(-2, -4, 0)
fan(0x0100, MODEL_SK_SHIP_HOLO1, PAD_LEE_0110, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED | OBJFLAG_INVINCIBLE, 0, 0, 1000, 0x00000222, 0x00000002, 0x01000000)
fan(0x0100, MODEL_SK_SHIP_HOLO2, PAD_LEE_0112, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED | OBJFLAG_INVINCIBLE, 0, 0, 1000, 0x00000222, 0x00000002, 0x01000000)
fan(0x0100, MODEL_SK_SHIP_HOLO2, PAD_LEE_0113, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED | OBJFLAG_INVINCIBLE, 0, 0, 1000, 0x00000222, 0x00000002, 0x01000000)
tag(0x00, 4)
tag(0x01, 4)
tag(0x02, 4)
tag(0x03, 4)
door(0x0100, MODEL_SK_SHIP_HULLDOOR1, PAD_LEE_0140, OBJFLAG_00000010 | OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00780000, 0x03e80000, 0x00640000, 0x00640000, 0x00010000, 0, DOORTYPE_HULL, 0x00000000, 0x0000ea60, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_SK_SHIP_HULLDOOR2, PAD_LEE_0141, OBJFLAG_00000010 | OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00780000, 0x03e80000, 0x00640000, 0x00640000, 0x00010000, 0, DOORTYPE_HULL, 0x00000000, 0x0000ea60, 0x00000000, 0x00000001, 0x00000000)
door(0x0100, MODEL_SK_SHIP_HULLDOOR3, PAD_LEE_0142, OBJFLAG_00000010 | OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x0000bd1f, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0x00000001, 0x00001d00)
door(0x0100, MODEL_SK_SHIP_HULLDOOR4, PAD_LEE_0143, OBJFLAG_00000010 | OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x00010000, 0x0000bd1f, 0x00050000, 0x00002aaa, 0x00000ccc, 0, DOORTYPE_SLIDING, 0x00000000, 0x000000f0, 0x00000000, 0xfffffffd, 0x00001d00)
tag(0x09, 1)
multimonitor(0x00cc, MODEL_SK_CONSOLE2, PAD_LEE_01F1, OBJFLAG_00000001 | OBJFLAG_00000100, OBJFLAG2_00000001, OBJFLAG3_INTERACTABLE, 1000, 21, 20, 20, 0)
multimonitor(0x00cc, MODEL_SK_CONSOLE2, PAD_LEE_01F2, OBJFLAG_00000001 | OBJFLAG_00000100, OBJFLAG2_00000001, 0, 1000, 21, 20, 20, 0)
weapon(0x0100, MODEL_CHRSKROCKET, PAD_LEE_01D2, 0, 0, 0, WEAPON_SLAYER)
tag(0x04, 3)
tag(0x05, 3)
tag(0x06, 3)
multimonitor(0x00cc, MODEL_SK_CONSOLE2, PAD_LEE_01F0, OBJFLAG_00000001 | OBJFLAG_00000100, OBJFLAG2_00000001, 0, 1000, 21, 20, 20, 0)
multimonitor(0x00cc, MODEL_SK_CONSOLE2, PAD_LEE_01EF, OBJFLAG_00000001 | OBJFLAG_00000100, OBJFLAG2_00000001, 0, 1000, 21, 20, 20, 0)
multimonitor(0x00cc, MODEL_SK_CONSOLE2, PAD_LEE_01EE, OBJFLAG_00000001 | OBJFLAG_00000100, OBJFLAG2_00000001, 0, 1000, 21, 20, 20, 0)
tinted_glass(0x0100, MODEL_SK_WINDOW1, PAD_LEE_01CA, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_ILLUMINATED | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH | OBJFLAG_DEACTIVATED, OBJFLAG2_00000100 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x00c801f4)
tinted_glass(0x0100, MODEL_SK_WINDOW1, PAD_LEE_01CB, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_ILLUMINATED | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH | OBJFLAG_DEACTIVATED, OBJFLAG2_00000100 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x00c801f4)
tag(0x19, 2)
tag(0x1a, 2)
stdobject(0x0100, MODEL_ENGINEPART, PAD_LEE_01EA, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100, OBJFLAG2_00002000 | OBJFLAG2_00200000, 0, 1000)
stdobject(0x0100, MODEL_ENGINEPART, PAD_LEE_01E9, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100, OBJFLAG2_00002000 | OBJFLAG2_00200000, 0, 1000)
tag(0x1b, 6)
tag(0x1c, 6)
tag(0x1d, 6)
tag(0x1e, 6)
tag(0x1f, 6)
tag(0x20, 6)
glass(0x0100, MODEL_DD_WINDOW, PAD_LEE_019D, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_ILLUMINATED | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH | OBJFLAG_DEACTIVATED, 0, 0, 3000)
glass(0x0100, MODEL_DD_WINDOW, PAD_LEE_019E, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_ILLUMINATED | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH | OBJFLAG_DEACTIVATED, 0, 0, 3000)
glass(0x0100, MODEL_DD_WINDOW, PAD_LEE_019F, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_ILLUMINATED | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH | OBJFLAG_DEACTIVATED, 0, 0, 3000)
glass(0x0100, MODEL_DD_WINDOW, PAD_LEE_01A0, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_ILLUMINATED | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH | OBJFLAG_DEACTIVATED, 0, 0, 3000)
glass(0x0100, MODEL_DD_WINDOW, PAD_LEE_01A1, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_ILLUMINATED | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH | OBJFLAG_DEACTIVATED, 0, 0, 3000)
glass(0x0100, MODEL_DD_WINDOW, PAD_LEE_01A2, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_ILLUMINATED | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH | OBJFLAG_DEACTIVATED, 0, 0, 3000)
tag(0x21, 1)
stdobject(0x0002, MODEL_SK_SHUTTLE, PAD_LEE_01DC, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_ILLUMINATED | OBJFLAG_INVINCIBLE | OBJFLAG_COLLECTABLE | OBJFLAG_REACTIFSHOT | OBJFLAG_01000000, OBJFLAG2_00002000 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_INVISIBLE | OBJFLAG2_80000000, 0, 1000)
tag(0x2c, 1)
stdobject(0x0100, MODEL_SK_SHUTTLE, -1, OBJFLAG_00000001 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED | OBJFLAG_00001000 | OBJFLAG_INVINCIBLE, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
tag(0x45, 1)
stdobject(0x0100, MODEL_SK_SHUTTLE, -1, OBJFLAG_00000001 | OBJFLAG_00000100 | OBJFLAG_ILLUMINATED | OBJFLAG_00001000 | OBJFLAG_INVINCIBLE, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
tag(0x2d, 1)
shield(0x0100, MODEL_CHRSHIELD, PAD_LEE_01F3, OBJFLAG_00000001, OBJFLAG2_EXCLUDE_PA | OBJFLAG2_EXCLUDE_PD, 0, 1000)
tag(0x2e, 1)
shield(0x0100, MODEL_CHRSHIELD, 0x0030, OBJFLAG_00000001 | OBJFLAG_ASSIGNEDTOCHR, OBJFLAG2_EXCLUDE_SA | OBJFLAG2_EXCLUDE_PA | OBJFLAG2_EXCLUDE_PD, 0, 1)
endprops
};
s32 intro[] = {
#if VERSION >= VERSION_JPN_FINAL
ammo(AMMOTYPE_PISTOL, 10)
intro_weapon(WEAPON_FALCON2, -1)
ammo(AMMOTYPE_PISTOL, 20)
ammo(AMMOTYPE_KNIFE, 1)
ammo(AMMOTYPE_ROCKET, 2)
ammo(AMMOTYPE_RIFLE, 400)
#else
intro_weapon(WEAPON_COMBATKNIFE, -1)
ammo(AMMOTYPE_KNIFE, 1)
ammo(AMMOTYPE_ROCKET, 2)
ammo(AMMOTYPE_RIFLE, 400)
ammo(AMMOTYPE_PISTOL, 10)
#endif
outfit(OUTFIT_FROCK_RIPPED)
spawn(PAD_LEE_00D9)
endintro
};
s32 path00[] = {
PAD_LEE_01D5,
PAD_LEE_01D4,
-1,
};
s32 path01[] = {
PAD_LEE_01D7,
PAD_LEE_01D6,
-1,
};
s32 path02[] = {
PAD_LEE_0006,
PAD_LEE_0000,
-1,
};
s32 path03[] = {
PAD_LEE_0005,
PAD_LEE_000D,
-1,
};
s32 path04[] = {
PAD_LEE_01DE,
PAD_LEE_000C,
-1,
};
s32 path05[] = {
PAD_LEE_0008,
PAD_LEE_005C,
-1,
};
u8 func1001_objectives_failed_msg[] = {
yield
set_ailist(CHR_SELF, GAILIST_SHOW_OBJ_FAILED_MSG)
endlist
};
u8 func1400_setup_counterop[] = {
#if VERSION >= VERSION_NTSC_1_0
set_object_flag(OBJ_HANGARLIFT_ELVIS, OBJFLAG_DEACTIVATED)
set_object_flag(OBJ_HANGARLIFT_JO, OBJFLAG_DEACTIVATED)
#endif
yield
set_chr_team(CHR_ANTI, TEAM_ENEMY)
set_ailist(CHR_SELF, GAILIST_REBUILD_GROUPS)
endlist
};
u8 func1019_check_shields_lowered[] = {
beginloop(0x04)
if_object_in_good_condition(OBJ_SHIELDCONSOLE1, /*goto*/ 0x06)
if_object_in_good_condition(OBJ_SHIELDCONSOLE2, /*goto*/ 0x06)
if_object_in_good_condition(OBJ_SHIELDCONSOLE3, /*goto*/ 0x06)
show_hudmsg(CHR_BOND, L_LEE_010) // "Ship's shields have been lowered."
set_stage_flag(STAGEFLAG_SHIELDS_DISABLED)
if_difficulty_lt(DIFF_PA, /*goto*/ 0x09)
restart_timer
beginloop(0x08)
if_chr_in_room(CHR_BOND, 0x00, 0x0002, /*goto*/ 0x2c)
endloop(0x08)
label(0x2c)
speak(CHR_BOND, L_LEE_017, SFX_81A1, CHANNEL_6, COLOR_04_ORANGE) // "You've got to open the hangar doors so we can dock..."
set_ailist(CHR_SELF, GAILIST_IDLE)
label(0x06)
endloop(0x04)
label(0x09)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1004_check_hangar_doors_opened[] = {
yield
set_object_flag(OBJ_HANGARDOOR1, OBJFLAG_CANNOT_ACTIVATE)
set_object_flag(OBJ_HANGARDOOR2, OBJFLAG_CANNOT_ACTIVATE)
set_object_flag(OBJ_HANGARDOOR3, OBJFLAG_CANNOT_ACTIVATE)
set_object_flag(OBJ_HANGARDOOR4, OBJFLAG_CANNOT_ACTIVATE)
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
if_difficulty_lt(DIFF_PA, /*goto*/ 0x2c)
if_chr_activated_object(CHR_P1P2, OBJ_HANGARDOORCONSOLE, /*goto*/ 0x06)
if_object_in_good_condition(OBJ_HANGARDOORCONSOLE, /*goto*/ 0x2d)
// Console destroyed
show_hudmsg(CHR_BOND, L_LEE_048) // "Critical mission object destroyed."
set_stage_flag(STAGEFLAG_HANGAR_DOOR_CONSOLE_DESTROYED)
set_ailist(CHR_SELF, GAILIST_IDLE)
// Console healthy
label(0x2d)
reloop(0x04)
// A and SA
label(0x2c)
if_stage_flag_eq(STAGEFLAG_SHIELDS_DISABLED, TRUE, /*goto*/ 0x03)
reloop(0x04)
// Console activated
label(0x06)
if_stage_flag_eq(STAGEFLAG_SHIELDS_DISABLED, TRUE, /*goto*/ 0x2c)
show_hudmsg(CHR_BOND, L_LEE_047) // "Hangar doors locked - shields still active."
restart_timer
beginloop(LABEL_65)
if_timer_gt(120, /*goto*/ 0x06)
endloop(LABEL_65)
label(0x06)
endloop(0x04)
// PA - console activated after shields disabled
label(0x2c)
show_hudmsg(CHR_P1P2, L_LEE_011) // "Hangar doors have been opened."
set_stage_flag(STAGEFLAG_HANGAR_DOORS_OPEN)
// A and SA once shields disabled, or follow through from above
label(0x03)
open_door(OBJ_HANGARDOOR1)
open_door(OBJ_HANGARDOOR2)
open_door(OBJ_HANGARDOOR3)
open_door(OBJ_HANGARDOOR4)
set_object_flag(OBJ_HANGARDOOR1, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_HANGARDOOR2, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_HANGARDOOR3, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_HANGARDOOR4, OBJFLAG_DOOR_KEEPOPEN)
restart_timer
beginloop(0x09)
if_timer_gt(600, /*goto*/ 0x06)
endloop(0x09)
label(0x06)
restart_timer
beginloop(0x0a)
if_timer_gt(120, /*goto*/ 0x06)
endloop(0x0a)
label(0x06)
set_stage_flag(STAGEFLAG_TRIGGER_HANGAR_MAIANS)
label(0x08)
yield
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func040d_elvis_wait_for_hangar_entry[] = {
set_self_chrflag(CHRCFLAG_00040000)
set_accuracy(100)
set_reaction_speed(100)
add_health_or_armor(200)
set_alertness(100)
set_self_chrflag(CHRCFLAG_HIDDEN)
set_self_chrflag(CHRCFLAG_INVINCIBLE)
set_self_chrflag(CHRCFLAG_RUNFASTER)
set_self_chrflag(CHRCFLAG_NOAUTOAIM)
beginloop(0x04)
if_difficulty_lt(DIFF_PA, /*goto*/ 0x2c)
if_stage_flag_eq(STAGEFLAG_HANGAR_DOORS_OPEN, TRUE, /*goto*/ 0x06)
reloop(0x04)
label(0x2c)
if_stage_flag_eq(STAGEFLAG_SHIELDS_DISABLED, TRUE, /*goto*/ 0x06)
endloop(0x04)
label(0x06)
beginloop(LABEL_65)
set_target_chr(CHR_BOND)
if_can_see_target(/*goto*/ 0x2c)
set_target_chr(CHR_COOP)
if_can_see_target(/*goto*/ 0x2c)
set_target_chr(CHR_ANTI)
if_can_see_target(/*goto*/ 0x2c)
goto_next(0x06)
label(0x2c)
endloop(LABEL_65)
label(0x06)
unset_self_chrflag(CHRCFLAG_HIDDEN)
unset_self_chrflag(CHRCFLAG_INVINCIBLE)
yield
yield
yield
yield
set_ailist(CHR_SELF, AILIST_ELVIS_GIVE_AR34)
endlist
};
u8 func040e_elvis_give_ar34[] = {
set_shotlist(AILIST_ELVIS_GIVE_AR34)
if_chr_death_animation_finished(CHR_SELF, /*goto*/ 0x2c)
if_chr_dead(CHR_SELF, /*goto*/ 0x2c)
if_chr_knockedout(CHR_SELF, /*goto*/ 0x2c)
goto_next(0x06)
label(0x2c)
set_shotlist(GAILIST_IDLE)
set_ailist(CHR_SELF, GAILIST_IDLE)
label(0x06)
stop_chr
// Wait until player in sight
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
set_chrpreset(CHR_P1P2)
if_can_see_target(/*goto*/ 0x2c)
endloop(0x04)
label(0x2c)
beginloop(0x08)
if_can_see_target(/*goto*/ 0x2c)
endloop(0x08)
// Run towards player
label(0x0a)
restart_timer
try_run_to_target(/*goto*/ 0x09)
beginloop(0x09)
set_target_chr(CHR_PRESET)
if_timer_gt(60, /*goto*/ 0x2c)
if_distance_to_target_lt(200, /*goto*/ 0x06)
reloop(0x09)
label(0x06)
if_can_see_target(/*goto*/ 0x06)
endloop(0x09)
label(0x2c)
goto_first(0x0a)
// Talk
label(0x06)
set_chr_team(CHR_SELF, TEAM_ALLY)
rebuild_teams
rebuild_squadrons
set_stage_flag(STAGEFLAG_MET_ELVIS)
speak(CHR_P1P2, L_LEE_019, MP3_02E1, CHANNEL_6, COLOR_04_ORANGE) // "Good to see you, Joanna."
chr_do_animation(ANIM_TALKING_0231, 0, -1, CHRANIMFLAG_SLOWUPDATE, 16, CHR_SELF, 2)
beginloop(0x0c)
if_timer_gt(180, /*goto*/ 0x06)
endloop(0x0c)
label(0x06)
speak(CHR_P1P2, L_LEE_020, MP3_02E2, CHANNEL_6, COLOR_04_ORANGE) // "Take this - you should find it useful..."
give_object_to_chr(OBJ_AR34, CHR_PRESET)
show_hudmsg(CHR_PRESET, L_LEE_021) // "Received AR34 assault rifle."
restart_timer
beginloop(0x0d)
if_timer_gt(180, /*goto*/ 0x06)
endloop(0x0d)
label(0x06)
set_stage_flag(STAGEFLAG_HANGAR_ALARM_ACTIVATED)
activate_alarm
restart_timer
beginloop(0x0e)
if_timer_gt(120, /*goto*/ 0x06)
endloop(0x0e)
label(0x06)
label(0x0f)
yield
set_ailist(CHR_SELF, AILIST_ELVIS_FOLLOW)
endlist
};
/**
* Follow player.
* If entered nav room, do that objective.
* If arrived at prebridge lift, assign another function.
*/
u8 func0409_elvis_follow[] = {
#if VERSION >= VERSION_NTSC_1_0
set_self_chrflag(CHRCFLAG_00000040)
#endif
set_shotlist(AILIST_ELVIS_FOLLOW)
set_returnlist(CHR_SELF, AILIST_ELVIS_FOLLOW)
if_chr_dead(CHR_SELF, /*goto*/ 0x2c)
if_chr_death_animation_finished(CHR_SELF, /*goto*/ 0x2c)
if_chr_knockedout(CHR_SELF, /*goto*/ 0x2c)
goto_next(0x06)
// Dying
label(0x2c)
set_ailist(CHR_SELF, GAILIST_IDLE)
// Alive
label(0x06)
if_just_injured(CHR_SELF, /*goto*/ 0x2c)
goto_next(0x06)
// Injured
label(0x2c)
#if VERSION >= VERSION_NTSC_1_0
restart_timer
say_quip(CHR_BOND, 0x29, 0xff, 0x03, 0xff, BANK_1, 0x00, 0x00)
dprint 'I','N','J','U','R','E','D','\n',0,
beginloop(LABEL_C1)
if_timer_gt(180, /*goto*/ 0x06)
if_chr_stopped(/*goto*/ 0x06)
endloop(LABEL_C1)
// Healthy
label(0x06)
dprint 'I','N','J','U','R','E','D','F','I','N','\n',0,
#else
say_quip(CHR_BOND, 0x29, 0xff, 0x03, 0xff, BANK_1, 0x00, 0x00)
beginloop(LABEL_C1)
if_chr_stopped(/*goto*/ 0x06)
endloop(LABEL_C1)
label(0x06)
#endif
if_enemy_distance_lt_and_los(2540, /*goto*/ 0x08)
set_target_chr(CHR_PRESET)
if_distance_to_target_lt(200, /*goto*/ 0x06)
label(0x03)
set_target_chr(CHR_PRESET)
restart_timer
if_distance_to_target_gt(500, /*goto*/ 0x06)
try_jog_to_target(/*goto*/ 0x04)
// Distance < 200 or distance > 500
label(0x06)
try_run_to_target(/*goto*/ 0x04)
beginloop(0x04)
if_stage_flag_eq(STAGEFLAG_NAVIGATION_ROOM_DONE, TRUE, /*goto*/ 0x2c)
if_chr_in_room(CHR_ELVIS, 0x00, 0x003e, /*goto*/ LABEL_B5)
label(0x2c)
if_stage_flag_eq(STAGEFLAG_SAID_GO_ON_AHEAD, TRUE, /*goto*/ 0x2c)
if_chr_in_room(CHR_ELVIS, 0x00, 0x006c, /*goto*/ LABEL_C4)
label(0x2c)
dprint 'G','O',' ','T','O',' ','P','A','D','\n',0,
if_enemy_distance_lt_and_los(2540, /*goto*/ 0x08)
set_target_chr(CHR_PRESET)
if_distance_to_target_lt(200, /*goto*/ 0x06)
if_timer_gt(60, /*goto*/ 0x2c)
endloop(0x04)
// Running for 1 second - do distance checks again
label(0x2c)
goto_first(0x03)
// At player
label(0x06)
stop_chr
beginloop(0x09)
if_stage_flag_eq(STAGEFLAG_NAVIGATION_ROOM_DONE, TRUE, /*goto*/ 0x2c)
if_chr_in_room(CHR_ELVIS, 0x00, 0x003e, /*goto*/ LABEL_B5)
label(0x2c)
if_stage_flag_eq(STAGEFLAG_SAID_GO_ON_AHEAD, TRUE, /*goto*/ 0x2c)
if_chr_in_room(CHR_ELVIS, 0x00, 0x006c, /*goto*/ LABEL_C4)
label(0x2c)
dprint 'A','T',' ','P','A','D','\n',0,
if_enemy_distance_lt_and_los(2540, /*goto*/ 0x08)
set_target_chr(CHR_PRESET)
if_distance_to_target_gt(300, /*goto*/ 0x06)
endloop(0x09)
// Player moved away - do distance checks and start following
label(0x06)
goto_first(0x03)
// Enemy detected
label(0x08)
if_chr_death_animation_finished(CHR_TARGET, /*goto*/ 0x2c)
if_chr_dead(CHR_TARGET, /*goto*/ 0x2c)
if_chr_knockedout(CHR_TARGET, /*goto*/ 0x2c)
if_chrpresets_target_is_different(/*goto*/ 0x06)
label(0x2c)
goto_first(0x03)
label(0x06)
dprint 'D','E','T','E','C','T','E','D','\n',0,
call_rng
if_rand_lt(85, /*goto*/ LABEL_65)
if_rand_lt(170, /*goto*/ LABEL_66)
say_quip(CHR_BOND, 0x26, 0xff, 0x03, 0xff, BANK_1, 0x00, 0x00)
goto_next(0x2c)
label(LABEL_65)
say_quip(CHR_BOND, 0x27, 0xff, 0x03, 0xff, BANK_1, 0x00, 0x00)
goto_next(0x2c)
label(LABEL_66)
say_quip(CHR_BOND, 0x28, 0xff, 0x03, 0xff, BANK_1, 0x00, 0x00)
label(0x2c)
set_returnlist(CHR_SELF, AILIST_ELVIS_FOLLOW)
set_shotlist(AILIST_ELVIS_FOLLOW)
set_ailist(CHR_SELF, GAILIST_COMBAT_WITH_TARGET)
// Elvis in nav room
label(LABEL_B5)
jog_to_pad(PAD_LEE_0034)
beginloop(0x0f)
if_chr_stopped(/*goto*/ 0x2c)
endloop(0x0f)
label(0x2c)
restart_timer
chr_do_animation(ANIM_OPERATE_0221, 0, -1, 0, 16, CHR_SELF, 2)
beginloop(0x10)
if_timer_gt(180, /*goto*/ 0x06)
endloop(0x10)
label(0x06)
do_preset_animation(PRESETANIM_TALKRANDOM)
show_hudmsg(CHR_BOND, L_LEE_013) // "Navigational information has been retrieved."
speak(CHR_PRESET, L_LEE_031, MP3_02E4, CHANNEL_6, COLOR_04_ORANGE) // "Time to head upwards..."
restart_timer
set_stage_flag(STAGEFLAG_NAVIGATION_ROOM_DONE)
beginloop(LABEL_79)
if_timer_gt(90, /*goto*/ 0x06)
endloop(LABEL_79)
label(0x06)
mute_channel(CHANNEL_6)
goto_first(0x03)
// Elvis outside prebridgelift
label(LABEL_C4)
set_ailist(CHR_SELF, AILIST_INIT_ELVIS_OUTSIDE_PREBRIDGELIFT)
endlist
};
u8 func041d_init_elvis_outside_prebridgelift[] = {
set_shotlist(AILIST_ELVIS_OUTSIDE_PREBRIDGELIFT)
add_health_or_armor(600)
set_ailist(CHR_SELF, AILIST_ELVIS_OUTSIDE_PREBRIDGELIFT)
endlist
};
u8 func041c_elvis_outside_prebridgelift[] = {
set_shotlist(AILIST_ELVIS_OUTSIDE_PREBRIDGELIFT)
if_chr_dead(CHR_SELF, /*goto*/ 0x2c)
if_chr_death_animation_finished(CHR_SELF, /*goto*/ 0x2c)
if_chr_knockedout(CHR_SELF, /*goto*/ 0x2c)
goto_next(0x06)
// Dying
label(0x2c)
set_ailist(CHR_SELF, GAILIST_IDLE)
// Alive
label(0x06)
stop_chr
set_target_chr(CHR_PRESET)
set_stage_flag(STAGEFLAG_SAID_GO_ON_AHEAD)
if_stage_flag_eq(STAGEFLAG_ENTERED_BRIDGELIFT, TRUE, /*goto*/ 0x2c)
speak(CHR_PRESET, L_LEE_026, MP3_04DC, CHANNEL_6, COLOR_04_ORANGE) // "You go on ahead, Jo. I'll secure the perimeter. We..."
label(0x2c)
run_to_pad(PAD_LEE_0063)
beginloop(0x09)
if_chr_stopped(/*goto*/ 0x0b)
endloop(0x09)
label(0x0b)
stop_chr
beginloop(0x0c)
if_enemy_distance_lt_and_los(2540, /*goto*/ 0x08)
endloop(0x0c)
label(0x08)
dprint 'D','E','T','E','C','T','E','D','\n',0,
set_shotlist(AILIST_ELVIS_OUTSIDE_PREBRIDGELIFT)
set_returnlist(CHR_SELF, AILIST_ELVIS_OUTSIDE_PREBRIDGELIFT)
set_ailist(CHR_SELF, GAILIST_COMBAT_WITH_TARGET)
endlist
};
u8 func040a_elvis_go_to_hangar_lift[] = {
set_shotlist(AILIST_ELVIS_GO_TO_HANGAR_LIFT)
if_chr_dead(CHR_SELF, /*goto*/ 0x2c)
if_chr_death_animation_finished(CHR_SELF, /*goto*/ 0x2c)
if_chr_knockedout(CHR_SELF, /*goto*/ 0x2c)
goto_next(0x06)
// Dying
label(0x2c)
set_ailist(CHR_SELF, GAILIST_IDLE)
// Alive
label(0x06)
label(0x03)
set_target_chr(CHR_BOND)
restart_timer
if_morale_lt(50, /*goto*/ 0x06)
goto_next(LABEL_C3)
label(0x06)
try_run_to_target(/*goto*/ 0x04)
beginloop(0x04)
if_timer_gt(60, /*goto*/ 0x2c)
if_distance_to_target_lt(200, /*goto*/ 0x06)
endloop(0x04)
label(0x2c)
goto_first(0x03)
// At player
label(0x06)
speak(CHR_BOND, L_LEE_022, MP3_02E4, CHANNEL_6, COLOR_04_ORANGE) // "Time to head upwards. I'll take this lift; you tak..."
chr_do_animation(ANIM_TALKING_0231, 0, -1, CHRANIMFLAG_SLOWUPDATE, 16, CHR_SELF, 2)
set_morale(50)
beginloop(0x0c)
if_timer_gt(180, /*goto*/ LABEL_C3)
endloop(0x0c)
// Done talk
label(LABEL_C3)
restart_timer
run_to_pad(PAD_LEE_00B2)
beginloop(0x0d)
if_chr_stopped(/*goto*/ 0x06)
endloop(0x0d)
label(0x06)
stop_chr
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func041b_elvis_at_bridge[] = {
stop_chr
set_shotlist(AILIST_ELVIS_AT_BRIDGE)
if_chr_dead(CHR_SELF, /*goto*/ 0x2c)
if_chr_death_animation_finished(CHR_SELF, /*goto*/ 0x2c)
if_chr_knockedout(CHR_SELF, /*goto*/ 0x2c)
goto_next(0x06)
// Dying
label(0x2c)
set_ailist(CHR_SELF, GAILIST_IDLE)
// Alive
label(0x06)
label(0x06)
if_morale_lt(100, /*goto*/ 0x06)
goto_next(0x2c)
label(0x06)
set_morale(100)
label(0x2c)
beginloop(LABEL_65)
if_sound_finished(CHANNEL_6, /*goto*/ 0x2c)
endloop(LABEL_65)
label(0x2c)
run_to_pad(PAD_LEE_008A)
restart_timer
beginloop(0x09)
if_enemy_distance_lt_and_los(2540, /*goto*/ 0x08)
if_chr_stopped(/*goto*/ 0x0b)
if_stage_flag_eq(STAGEFLAG_SAID_LOOKOUT, TRUE, /*goto*/ 0x06)
if_timer_gt(180, /*goto*/ 0x2c)
label(0x06)
reloop(0x09)
label(0x2c)
speak(CHR_TARGET, L_LEE_024, MP3_02E3, CHANNEL_6, COLOR_04_ORANGE) // "Look out, Joanna! I think we've made them angry..."
set_stage_flag(STAGEFLAG_SAID_LOOKOUT)
endloop(0x09)
// Reached pad
label(0x0b)
stop_chr
beginloop(0x0c)
if_enemy_distance_lt_and_los(2540, /*goto*/ 0x08)
endloop(0x0c)
label(0x08)
dprint 'D','E','T','E','C','T','E','D','\n',0,
set_shotlist(AILIST_ELVIS_AT_BRIDGE)
set_returnlist(CHR_SELF, AILIST_ELVIS_AT_BRIDGE)
set_ailist(CHR_SELF, GAILIST_COMBAT_WITH_TARGET)
endlist
};
u8 func1005_check_elvis_dead[] = {
beginloop(0x04)
if_chr_dead(CHR_ELVIS, /*goto*/ 0x2c)
if_chr_death_animation_finished(CHR_ELVIS, /*goto*/ 0x2c)
if_chr_knockedout(CHR_ELVIS, /*goto*/ 0x2c)
endloop(0x04)
label(0x2c)
show_hudmsg(CHR_BOND, L_LEE_012) // "Elvis has been killed."
set_stage_flag(STAGEFLAG_ELVIS_DEAD)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func040f_init_skedar[] = {
if_chr_death_animation_finished(CHR_SELF, /*goto*/ 0x0d)
if_chr_dead(CHR_SELF, /*goto*/ 0x0d)
if_chr_knockedout(CHR_SELF, /*goto*/ 0x0d)
// Alive
set_accuracy(VERSION >= VERSION_NTSC_1_0 ? 20 : 40)
set_reaction_speed(75)
set_chr_maxdamage(CHR_SELF, 10)
add_health_or_armor(190)
set_recovery_speed(0)
set_shield(0)
set_ailist(CHR_SELF, GAILIST_RELATED_TO_SPAWNING)
// Dying or dead
label(0x0d)
set_shotlist(GAILIST_IDLE)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func0410_wake_suspendedanim_skedar[] = {
if_chr_death_animation_finished(CHR_SELF, /*goto*/ 0x2c)
if_chr_dead(CHR_SELF, /*goto*/ 0x2c)
if_chr_knockedout(CHR_SELF, /*goto*/ 0x2c)
goto_next(0x06)
label(0x2c)
set_ailist(CHR_SELF, GAILIST_IDLE)
label(0x06)
set_accuracy(VERSION >= VERSION_NTSC_1_0 ? 20 : 40)
set_reaction_speed(75)
set_chr_maxdamage(CHR_SELF, 10)
add_health_or_armor(190)
set_recovery_speed(0)
set_shield(0)
set_target_chr(CHR_BOND)
try_walk_to_target(/*goto*/ 0x2c)
label(0x2c)
set_shotlist(GAILIST_RELATED_TO_SPAWNING)
set_ailist(CHR_SELF, GAILIST_RELATED_TO_SPAWNING)
endlist
};
u8 func1006_wake_slayer_skedar[] = {
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0033, /*goto*/ 0x2c)
endloop(0x04)
label(0x2c)
restart_timer
beginloop(0x08)
if_timer_gt(120, /*goto*/ 0x06)
endloop(0x08)
// 1
label(0x06)
unlock_door(0x0f, 0x02)
unlock_door(0x10, 0x02)
open_door(0x0f)
set_chr_team(CHR_SUSPENDEDANIM1, TEAM_ENEMY)
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SUSPENDEDANIM1, AILIST_WAKE_SUSPENDEDANIM_SKEDAR)
restart_timer
beginloop(0x09)
if_timer_gt(120, /*goto*/ 0x06)
endloop(0x09)
// 2
label(0x06)
unlock_door(0x13, 0x02)
unlock_door(0x14, 0x02)
open_door(0x13)
if_chr_death_animation_finished(CHR_SUSPENDEDANIM3, /*goto*/ 0x2c)
if_chr_dead(CHR_SUSPENDEDANIM3, /*goto*/ 0x2c)
if_chr_knockedout(CHR_SUSPENDEDANIM3, /*goto*/ 0x2c)
set_ailist(CHR_SUSPENDEDANIM3, AILIST_WAKE_SUSPENDEDANIM_SKEDAR)
set_chr_team(CHR_SUSPENDEDANIM3, TEAM_ENEMY)
rebuild_teams
rebuild_squadrons
// Wait until player coming back from Slayer area
label(0x2c)
beginloop(0x0a)
chr_toggle_p1p2(CHR_SELF)
if_stage_flag_eq(STAGEFLAG_ENTERED_SLAYER_AREA, TRUE, /*goto*/ 0x2c)
reloop(0x0a)
label(0x2c)
if_chr_in_room(CHR_P1P2, 0x00, 0x0033, /*goto*/ 0x2c)
endloop(0x0a)
// 3
label(0x2c)
unlock_door(0x11, 0x02)
unlock_door(0x12, 0x02)
unlock_door(0x15, 0x02)
unlock_door(0x16, 0x02)
open_door(0x11)
open_door(0x15)
set_ailist(CHR_SUSPENDEDANIM2, AILIST_WAKE_SUSPENDEDANIM_SKEDAR)
set_chr_team(CHR_SUSPENDEDANIM2, TEAM_ENEMY)
rebuild_teams
rebuild_squadrons
// 4
set_ailist(CHR_SUSPENDEDANIM4, AILIST_WAKE_SUSPENDEDANIM_SKEDAR)
set_chr_team(CHR_SUSPENDEDANIM4, TEAM_ENEMY)
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1007_check_entered_slayer_area[] = {
beginloop(0x08)
if_chr_death_animation_finished(CHR_BOND, /*goto*/ 0x2c)
if_chr_in_room(CHR_BOND, 0x00, 0x003a, /*goto*/ 0x2c)
if_chr_in_room(CHR_BOND, 0x00, 0x003b, /*goto*/ 0x2c)
reloop(0x08)
label(0x2c)
if_chr_death_animation_finished(CHR_COOP, /*goto*/ 0x2d)
if_chr_in_room(CHR_COOP, 0x00, 0x003a, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x003b, /*goto*/ 0x06)
endloop(0x08)
label(0x2d)
if_chr_death_animation_finished(CHR_BOND, /*goto*/ 0x0d)
label(0x06)
set_stage_flag(STAGEFLAG_ENTERED_SLAYER_AREA)
label(0x0d)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1008_hangar_lifts[] = {
set_object_flag(OBJ_HANGARLIFT_ELVIS, OBJFLAG_DEACTIVATED)
set_object_flag(OBJ_HANGARLIFT_JO, OBJFLAG_DEACTIVATED)
// Wait until kills done
beginloop(0x08)
if_stage_flag_eq(STAGEFLAG_HANGAR_KILLS_DONE, TRUE, /*goto*/ 0x2c)
endloop(0x08)
// Activate Jo's lift so it starts going to bottom
label(0x2c)
dprint 'U','N','\n',0,
unset_object_flag(OBJ_HANGARLIFT_JO, OBJFLAG_DEACTIVATED)
yield
yield
yield
yield
yield
yield
yield
yield
yield
yield
yield
// Wait until lift stopped at bottom
beginloop(LABEL_65)
dprint 'D','A','\n',0,
if_lift_stationary(OBJ_HANGARLIFT_JO, /*goto*/ LABEL_66)
endloop(LABEL_65)
// Deactivate lift and open door
label(LABEL_66)
set_object_flag(0x39, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(0x3a, OBJFLAG_DOOR_KEEPOPEN)
unset_object_flag(OBJ_HANGARLIFT_JO, OBJFLAG_DEACTIVATED)
open_door(0x39)
open_door(0x3a)
yield
set_object_flag(OBJ_HANGARLIFT_JO, OBJFLAG_DEACTIVATED)
beginloop(LABEL_67)
dprint 'T','R','\n',0,
chr_toggle_p1p2(CHR_SELF)
if_chr_death_animation_finished(CHR_BOND, /*goto*/ 0x2c)
if_chr_in_room(CHR_BOND, 0x00, 0x0018, /*goto*/ 0x2c)
if_door_state(0x39, (DOORSTATE_CLOSED | DOORSTATE_CLOSING), /*goto*/ 0x2d)
if_door_state(0x3a, (DOORSTATE_CLOSED | DOORSTATE_CLOSING), /*goto*/ 0x2d)
endloop(LABEL_67)
// Door closing automatically - reopen it
label(0x2d)
dprint 'P','E','\n',0,
goto_first(LABEL_66)
// Jo has entered the lift, or Jo dead in co-op
label(0x2c)
if_chr_death_animation_finished(CHR_COOP, /*goto*/ 0x2c)
if_chr_in_room(CHR_COOP, 0x00, 0x0018, /*goto*/ 0x2c)
goto_first(LABEL_67)
// Jo or Velvet is in the lift - activate it
// Note the lift naturally waits 5 seconds at each stop,
// hence the 5 second wait if entered as soon as the door opens.
label(0x2c)
set_chr_hiddenflag(CHR_BOND, CHRHFLAG_TRIGGER_BUDDY_WARP)
unset_object_flag(0x39, OBJFLAG_DOOR_KEEPOPEN)
unset_object_flag(0x3a, OBJFLAG_DOOR_KEEPOPEN)
unset_object_flag(OBJ_HANGARLIFT_JO, OBJFLAG_DEACTIVATED)
// Wait until Y coordinate >= 400
beginloop(0x09)
dprint 'P','U','\n',0,
chr_toggle_p1p2(CHR_SELF)
if_chr_death_animation_finished(CHR_P1P2, /*goto*/ 0x2c)
if_chr_y(CHR_P1P2, 400, OPERATOR_LESS_THAN, /*goto*/ 0x2c)
goto_next(0x0a)
label(0x2c)
endloop(0x09)
// Wait until lift stopped at top
beginloop(0x0a)
if_lift_stationary(OBJ_HANGARLIFT_JO, /*goto*/ 0x2c)
endloop(0x0a)
label(0x2c)
set_object_flag(OBJ_HANGARLIFT_JO, OBJFLAG_DEACTIVATED)
unset_object_flag(OBJ_HANGARLIFT_ELVIS, OBJFLAG_DEACTIVATED)
if_chr_death_animation_finished(CHR_ELVIS, /*goto*/ 0x2c)
if_chr_knockedout(CHR_ELVIS, /*goto*/ 0x2c)
if_chr_dead(CHR_ELVIS, /*goto*/ 0x2c)
set_ailist(CHR_ELVIS, GAILIST_STOP_AND_IDLE)
yield
#if VERSION >= VERSION_NTSC_1_0
if_chr_y(CHR_ELVIS, 400, OPERATOR_LESS_THAN, /*goto*/ 0x06)
goto_next(0x2c)
// Warp Elvis to his lift
label(0x06)
beginloop(0x5c)
chr_move_to_pad(CHR_ELVIS, PAD_LEE_00AD, 0x00, /*goto*/ 0x2c)
chr_move_to_pad(CHR_ELVIS, PAD_LEE_01E6, 0x00, /*goto*/ 0x2c)
chr_move_to_pad(CHR_ELVIS, PAD_LEE_01E7, 0x00, /*goto*/ 0x2c)
endloop(0x5c)
// Activate his lift and wait 2 seconds
label(0x2c)
unset_object_flag(OBJ_HANGARLIFT_ELVIS, OBJFLAG_DEACTIVATED)
#else
chr_move_to_pad(CHR_ELVIS, PAD_LEE_00AD, 0x00, /*goto*/ 0x2c)
label(0x2c)
#endif
restart_timer
beginloop(0x0b)
if_timer_gt(VERSION >= VERSION_NTSC_1_0 ? 120 : 60, /*goto*/ 0x0c)
endloop(0x0b)
// Wait for lift to stop at top
beginloop(0x0c)
if_lift_stationary(OBJ_HANGARLIFT_ELVIS, /*goto*/ 0x2c)
endloop(0x0c)
label(0x2c)
if_chr_death_animation_finished(CHR_ELVIS, /*goto*/ 0x2c)
if_chr_knockedout(CHR_ELVIS, /*goto*/ 0x2c)
if_chr_dead(CHR_ELVIS, /*goto*/ 0x2c)
set_ailist(CHR_ELVIS, AILIST_ELVIS_FOLLOW)
label(0x2c)
// Check Elvis actually rode the lift up, and if not then go into a loop
// attempting to warp him.
#if VERSION >= VERSION_NTSC_1_0
beginloop(LABEL_64)
set_object_flag(OBJ_HANGARLIFT_ELVIS, OBJFLAG_DEACTIVATED)
unset_object_flag(0x3b, OBJFLAG_CANNOT_ACTIVATE)
unset_object_flag(0x3c, OBJFLAG_CANNOT_ACTIVATE)
unset_chr_hiddenflag(CHR_BOND, CHRHFLAG_TRIGGER_BUDDY_WARP)
if_chr_y(CHR_ELVIS, 400, OPERATOR_LESS_THAN, /*goto*/ 0x06)
goto_next(LABEL_68)
// Handle case where Elvis is still in the hangar for some reason
label(0x06)
set_ailist(CHR_ELVIS, AILIST_SET_CLOAKED)
beginloop(LABEL_6D)
chr_move_to_pad(CHR_ELVIS, PAD_LEE_0012, 0x01, /*goto*/ 0x2c)
endloop(LABEL_6D)
label(0x2c)
set_ailist(CHR_ELVIS, AILIST_SET_UNCLOAKED)
endloop(LABEL_64)
#else
label(LABEL_64)
set_object_flag(OBJ_HANGARLIFT_ELVIS, OBJFLAG_DEACTIVATED)
unset_object_flag(0x3b, OBJFLAG_CANNOT_ACTIVATE)
unset_object_flag(0x3c, OBJFLAG_CANNOT_ACTIVATE)
unset_chr_hiddenflag(CHR_BOND, CHRHFLAG_TRIGGER_BUDDY_WARP)
#endif
// Elvis is at top now
// For buddy or counterop who might still be in the hangar,
// wait for lift to be called from hangar
beginloop(LABEL_68)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, 0x3b, /*goto*/ 0x2c)
if_chr_activated_object(CHR_P1P2, 0x3c, /*goto*/ 0x2c)
if_chr_activated_object(CHR_ANTI, 0x3b, /*goto*/ 0x2c)
if_chr_activated_object(CHR_ANTI, 0x3c, /*goto*/ 0x2c)
endloop(LABEL_68)
// Bring Elvis's lift down
label(0x2c)
play_sound(SFX_81A6, -1)
unset_object_flag(OBJ_HANGARLIFT_ELVIS, OBJFLAG_DEACTIVATED)
yield
yield
yield
yield
yield
yield
yield
yield
yield
yield
yield
// Wait for it to arrive at bottom
beginloop(LABEL_69)
if_lift_stationary(OBJ_HANGARLIFT_ELVIS, /*goto*/ 0x2c)
endloop(LABEL_69)
// Wait for lift to be moving again (upwards)
label(0x2c)
beginloop(LABEL_6A)
if_lift_stationary(OBJ_HANGARLIFT_ELVIS, /*goto*/ 0x06)
goto_next(0x2c)
label(0x06)
endloop(LABEL_6A)
label(0x2c)
yield
yield
yield
yield
// Wait for lift stopped at top
beginloop(LABEL_6B)
if_lift_stationary(OBJ_HANGARLIFT_ELVIS, /*goto*/ 0x2c)
endloop(LABEL_6B)
// Go back to waiting for lift to be called from hangar
label(0x2c)
goto_first(LABEL_64)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func0407_init_knifeable_skedar[] = {
add_health_or_armor(160)
set_self_flag_bankx(CHRFLAG1_NOIDLEANIMS, BANK_1)
set_self_chrflag(CHRCFLAG_00040000)
set_ailist(CHR_SELF, AILIST_KNIFEABLE_SKEDAR)
endlist
};
u8 func0408_knifeable_skedar[] = {
set_shotlist(AILIST_KNIFEABLE_SKEDAR)
if_just_injured(CHR_SELF, /*goto*/ 0x0c)
label(0x08)
yield
label(0x2c)
restart_timer
set_target_chr(CHR_CASS)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x04)
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
if_stage_flag_eq(STAGEFLAG_CASS_AT_PAD, TRUE, /*goto*/ 0x06)
set_target_chr(CHR_P1P2)
if_target_in_sight(/*goto*/ 0x0c)
set_target_chr(CHR_CASS)
if_just_injured(CHR_SELF, /*goto*/ 0x0c)
endloop(0x04)
// Cass at pad - wait 2 seconds
label(0x06)
restart_timer
beginloop(0x09)
if_timer_gt(120, /*goto*/ 0x2c)
endloop(0x09)
// Move to spot where Cass dies
label(0x2c)
set_target_chr(CHR_P1P2)
jog_to_pad(PAD_LEE_00DD)
beginloop(0x0a)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_stopped(/*goto*/ 0x06)
if_target_in_sight(/*goto*/ 0x0c)
if_just_injured(CHR_SELF, /*goto*/ 0x0c)
endloop(0x0a)
// Face away from player and wait 10 seconds
label(0x06)
restart_timer
set_target_chr(CHR_CASS)
try_face_entity(ATTACKFLAG_AIMATPAD, 0x00ef, /*goto*/ 0x0b)
beginloop(0x0b)
chr_toggle_p1p2(CHR_SELF)
if_timer_gt(600, /*goto*/ 0x06)
set_target_chr(CHR_P1P2)
if_target_in_sight(/*goto*/ 0x0c)
if_just_injured(CHR_SELF, /*goto*/ 0x0c)
set_target_chr(CHR_CASS)
endloop(0x0b)
// Go to holding cell
label(0x06)
set_view_distance(100)
jog_to_pad(PAD_LEE_00D9)
beginloop(0x0a)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_just_injured(CHR_SELF, /*goto*/ 0x0c)
dprint 'W','A','I','T','I','N','G',' ','T','W','O','\n',0,
if_chr_stopped(/*goto*/ 0x0d)
label(0x06)
if_target_in_sight(/*goto*/ 0x0c)
label(0x2c)
endloop(0x0a)
// Saw player or got injured
label(0x0c)
set_returnlist(CHR_SELF, GAILIST_UNALERTED)
set_ailist(CHR_SELF, GAILIST_UNALERTED)
// Arrived at cell - wait 20 seconds
label(0x0d)
restart_timer
beginloop(0x0e)
if_timer_gt(1200, /*goto*/ 0x2c)
endloop(0x0e)
// Go back to Cass spot
label(0x2c)
jog_to_pad(PAD_LEE_00DD)
beginloop(0x0f)
if_chr_stopped(/*goto*/ 0x2c)
endloop(0x0f)
// Become idle
label(0x2c)
stop_chr
set_returnlist(CHR_SELF, GAILIST_UNALERTED)
set_ailist(CHR_SELF, GAILIST_UNALERTED)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
/**
* Door is the second door. The one to the main room.
*/
u8 func1009_keep_door_open_in_intro[] = {
beginloop(LABEL_C2)
if_stage_flag_eq(STAGEFLAG_INTRO_FINISHED, TRUE, /*goto*/ 0x06)
if_door_state(0x17, (DOORSTATE_CLOSED | DOORSTATE_CLOSING), /*goto*/ 0x2c)
reloop(LABEL_C2)
// Door closed
label(0x2c)
open_door(0x17)
endloop(LABEL_C2)
// Intro finished
label(0x06)
yield
yield
beginloop(0x04)
if_door_state(0x17, DOORSTATE_CLOSING, /*goto*/ 0x06)
endloop(0x04)
label(0x06)
set_chr_flag_bankx(CHR_KNIFEABLE_SKEDAR, CHRFLAG0_SKIPSAFETYCHECKS, BANK_0)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
#define init_path(pathid) \
set_accuracy(VERSION >= VERSION_NTSC_1_0 ? 20 : 40) \
set_reaction_speed(75) \
set_chr_maxdamage(CHR_SELF, 10) \
add_health_or_armor(190) \
set_recovery_speed(0) \
set_shield(0) \
assign_path(pathid) \
start_patrol \
set_ailist(CHR_SELF, GAILIST_RELATED_TO_SPAWNING)
u8 func0401_start_path00[] = {
init_path(0)
endlist
};
u8 func0402_start_path01[] = {
init_path(1)
endlist
};
u8 func0403_start_path02[] = {
init_path(2)
endlist
};
u8 func0404_start_path03[] = {
init_path(3)
endlist
};
u8 func0405_start_path04[] = {
init_path(4)
endlist
};
u8 func0406_start_path05[] = {
init_path(5)
endlist
};
u8 func0412_hangarspawner[] = {
set_chr_chrflag(CHR_SELF, CHRCFLAG_KILLCOUNTABLE)
set_self_chrflag(CHRCFLAG_CLONEABLE)
set_self_chrflag(CHRCFLAG_HIDDEN)
set_self_chrflag(CHRCFLAG_00040000)
set_morale(0)
beginloop(LABEL_C2)
if_stage_flag_eq(STAGEFLAG_HANGAR_ALARM_ACTIVATED, TRUE, /*goto*/ 0x04)
endloop(LABEL_C2)
beginloop(0x04)
if_stage_flag_eq(STAGEFLAG_HANGAR_KILLS_DONE, FALSE, /*goto*/ 0x2c)
yield
yield
yield
yield
yield
goto_next(0x08)
// Still killing
label(0x2c)
if_never_been_onscreen(/*goto*/ 0x4d)
if_can_see_target(/*goto*/ 0x08)
reloop(0x04)
// Seen player, or kills done
label(0x08)
unset_self_chrflag(CHRCFLAG_HIDDEN)
set_ailist(CHR_SELF, AILIST_HANGARCLONE)
// chrflag3_00000008 was unset
label(0x4d)
if_chr_death_animation_finished(CHR_CLONE, /*goto*/ 0x4d)
reloop(0x04)
// Clone dead
label(0x4d)
try_spawn_clone2(CHR_SELF, AILIST_INIT_HANGARCLONE, 0, /*goto*/ 0x2c)
set_ailist(CHR_SELF, AILIST_HANGARCLONE)
label(0x2c)
add_morale(1)
yield
endloop(0x04)
endlist
};
u8 func0413_init_hangarclone[] = {
set_chr_chrflag(CHR_SELF, CHRCFLAG_KILLCOUNTABLE)
set_chr_hiddenflag(CHR_SELF, CHRHFLAG_00400000)
set_self_flag_bankx(CHRFLAG1_NOIDLEANIMS, BANK_1)
label(0x04)
rebuild_teams
rebuild_squadrons
try_inherit_properties(0x07, /*goto*/ 0x06)
label(0x06)
set_ailist(CHR_SELF, AILIST_HANGARCLONE)
endlist
};
u8 func0414_hangarclone[] = {
set_chr_chrflag(CHR_SELF, CHRCFLAG_KILLCOUNTABLE)
run_to_pad(PAD_LEE_00B4)
set_returnlist(CHR_SELF, AILIST_HANGARCLONE)
beginloop(0x03)
if_enemy_distance_lt_and_los(2540, /*goto*/ 0x2c)
endloop(0x03)
label(0x2c)
set_shotlist(AILIST_HANGARCLONE)
set_returnlist(CHR_SELF, AILIST_HANGARCLONE)
set_ailist(CHR_SELF, GAILIST_COMBAT_WITH_TARGET)
endlist
};
u8 func0419_hangar_maian[] = {
set_shotlist(AILIST_HANGAR_MAIAN)
set_self_chrflag(CHRCFLAG_NOAUTOAIM)
if_chr_dead(CHR_SELF, /*goto*/ 0x2c)
if_chr_death_animation_finished(CHR_SELF, /*goto*/ 0x2c)
if_chr_knockedout(CHR_SELF, /*goto*/ 0x2c)
goto_next(0x06)
label(0x2c)
set_ailist(CHR_SELF, GAILIST_IDLE)
label(0x06)
if_enemy_distance_lt_and_los(2540, /*goto*/ 0x08)
// @bug: Shoddy programming here. The jump to label 0x06 is likely supposed
// to go to the label 0x06 just prior to "AT PAD", but that is not the next
// label from here. Also, SPEED_RUN will always be used because SPEED_JOG
// lacks a goto_next 0x04.
if_chr_distance_to_pad_lt(CHR_SELF, 200, PAD_PRESET, /*goto*/ 0x06)
// Distance to pad >= 200
label(0x03)
restart_timer
if_chr_distance_to_pad_gt(CHR_SELF, 500, PAD_PRESET, /*goto*/ 0x06)
go_to_target_pad(SPEED_JOG)
// Intended: Distance to pad > 500
// Actual: Always executes
label(0x06)
go_to_target_pad(SPEED_RUN)
beginloop(0x04)
dprint 'G','O',' ','T','O',' ','P','A','D','\n',0,
if_enemy_distance_lt_and_los(2540, /*goto*/ 0x08)
if_chr_distance_to_pad_lt(CHR_SELF, 200, PAD_PRESET, /*goto*/ 0x06)
if_timer_gt(60, /*goto*/ 0x2c)
endloop(0x04)
label(0x2c)
goto_first(0x03)
// Distance to pad < 200
label(0x06)
stop_chr
// Wait at pad for enemy
beginloop(0x09)
dprint 'A','T',' ','P','A','D','\n',0,
if_enemy_distance_lt_and_los(2540, /*goto*/ 0x08)
if_chr_distance_to_pad_gt(CHR_SELF, 300, PAD_PRESET, /*goto*/ 0x06)
endloop(0x09)
label(0x06)
goto_first(0x03)
// Enemy detected
label(0x08)
dprint 'D','E','T','E','C','T','E','D','\n',0,
set_returnlist(CHR_SELF, AILIST_HANGAR_MAIAN)
set_shotlist(AILIST_HANGAR_MAIAN)
set_ailist(CHR_SELF, GAILIST_COMBAT_WITH_TARGET)
// Everything below here is unreachable
label(LABEL_B5)
jog_to_pad(PAD_LEE_0034)
beginloop(0x0f)
if_chr_stopped(/*goto*/ 0x2c)
endloop(0x0f)
label(0x2c)
restart_timer
chr_do_animation(ANIM_SNEEZE, 0, 193, 0, 16, CHR_SELF, 2)
beginloop(0x10)
if_timer_gt(180, /*goto*/ 0x06)
endloop(0x10)
label(0x06)
show_hudmsg(CHR_BOND, L_LEE_013) // "Navigational information has been retrieved."
set_stage_flag(STAGEFLAG_NAVIGATION_ROOM_DONE)
goto_first(0x03)
endlist
};
u8 func0418_init_hangar_maian[] = {
set_self_chrflag(CHRCFLAG_HIDDEN)
set_self_chrflag(CHRCFLAG_00040000)
beginloop(0x04)
if_stage_flag_eq(STAGEFLAG_TRIGGER_HANGAR_MAIANS, TRUE, /*goto*/ 0x06)
endloop(0x04)
label(0x06)
unset_self_chrflag(CHRCFLAG_HIDDEN)
add_health_or_armor(200)
set_reaction_speed(100)
set_ailist(CHR_SELF, AILIST_HANGAR_MAIAN)
endlist
};
u8 func100a_check_hangar_kills_done[] = {
yield
beginloop(LABEL_C2)
if_stage_flag_eq(STAGEFLAG_MET_ELVIS, TRUE, /*goto*/ 0x2c)
endloop(LABEL_C2)
label(0x2c)
restart_timer
// Wait 2 minutes, or:
// A = 6 kills
// SA = 8 kills
// PA = 10 kills
beginloop(0x04)
if_timer_gt(7200, /*goto*/ 0x2c)
if_difficulty_lt(DIFF_SA, /*goto*/ LABEL_65)
if_difficulty_lt(DIFF_PA, /*goto*/ LABEL_66)
// PA
if_kill_count_gt(9, /*goto*/ 0x2c)
reloop(0x04)
// A
label(LABEL_65)
if_kill_count_gt(5, /*goto*/ 0x2c)
reloop(0x04)
// SA
label(LABEL_66)
if_kill_count_gt(7, /*goto*/ 0x2c)
endloop(0x04)
label(0x2c)
set_stage_flag(STAGEFLAG_HANGAR_KILLS_DONE)
set_ailist(CHR_ELVIS, AILIST_ELVIS_GO_TO_HANGAR_LIFT)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func100b_msg_getshieldsdown[] = {
restart_timer
beginloop(0x08)
if_stage_flag_eq(STAGEFLAG_INTRO_FINISHED, TRUE, /*goto*/ 0x2c)
endloop(0x08)
label(0x2c)
restart_timer
beginloop(0x04)
if_stage_flag_eq(STAGEFLAG_CASS_SCREAMING, TRUE, /*goto*/ 0x2c)
endloop(0x04)
label(0x2c)
restart_timer
beginloop(LABEL_C2)
if_timer_gt(120, /*goto*/ 0x06)
endloop(LABEL_C2)
label(0x06)
speak(CHR_BOND, L_LEE_016, SFX_81A0, CHANNEL_6, COLOR_04_ORANGE) // "Outside, Joanna. Get the shields down and we can h..."
set_stage_flag(STAGEFLAG_SAID_GETSHIELDSDOWN)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func100c_engineroom[] = {
set_lights_state(0x0067, LIGHTOP_4, 0x46, 0xff, 0xfa)
// Wait until both engines destroyed
beginloop(0x04)
if_object_in_good_condition(OBJ_ENGINE1, /*goto*/ 0x2c)
if_object_in_good_condition(OBJ_ENGINE2, /*goto*/ 0x2c)
goto_next(0x06)
label(0x2c)
endloop(0x04)
label(0x06)
if_chr_death_animation_finished(CHR_ELVIS, /*goto*/ 0x2c)
if_chr_dead(CHR_ELVIS, /*goto*/ 0x2c)
if_chr_knockedout(CHR_ELVIS, /*goto*/ 0x2c)
set_ailist(CHR_ELVIS, AILIST_ELVIS_RUN_FROM_ENGINEROOM)
play_x_track(XREASON_DEFAULT, 10, 10)
speak(CHR_BOND, L_LEE_046, MP3_03D7, CHANNEL_6, COLOR_04_ORANGE) // "We have to get out of here!"
label(0x2c)
set_countdown_timer(10)
show_countdown_timer
start_countdown_timer
beginloop(LABEL_65)
if_countdown_timer_lt(1, /*goto*/ 0x2c)
endloop(LABEL_65)
// Timer expired
label(0x2c)
unset_object_flag(0x1b, OBJFLAG_INVINCIBLE)
unset_object_flag(0x1c, OBJFLAG_INVINCIBLE)
unset_object_flag(0x1d, OBJFLAG_INVINCIBLE)
unset_object_flag(0x1e, OBJFLAG_INVINCIBLE)
unset_object_flag(0x1f, OBJFLAG_INVINCIBLE)
unset_object_flag(0x20, OBJFLAG_INVINCIBLE)
set_object_flag2(0x1b, OBJFLAG2_80000000)
set_object_flag2(0x1c, OBJFLAG2_80000000)
set_object_flag2(0x1d, OBJFLAG2_80000000)
set_object_flag2(0x1e, OBJFLAG2_80000000)
set_object_flag2(0x1f, OBJFLAG2_80000000)
set_object_flag2(0x20, OBJFLAG2_80000000)
label(0x06)
hide_countdown_timer
unset_object_flag(0x21, OBJFLAG_INVINCIBLE)
destroy_object(0x21)
destroy_object(0x1b)
destroy_object(0x1c)
destroy_object(0x1d)
destroy_object(0x1e)
destroy_object(0x1f)
destroy_object(0x20)
show_hudmsg(CHR_BOND, L_LEE_023) // "Engines have been disabled."
set_stage_flag(STAGEFLAG_ENGINES_DESTROYED)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
/**
* This is the lift BEFORE the bridge lift.
*
* The lift moves automatically until you ride it up, then it stays at the top
* unless called from below.
*/
u8 func100d_prebridgelift[] = {
// Wait until Y >= 2600
beginloop(0x09)
chr_toggle_p1p2(CHR_SELF)
if_chr_y(CHR_P1P2, 2600, OPERATOR_LESS_THAN, /*goto*/ 0x2c)
goto_next(0x0a)
label(0x2c)
endloop(0x09)
// Wait until lift stopped at top
beginloop(0x0a)
if_lift_stationary(OBJ_PREBRIDGELIFT, /*goto*/ 0x2c)
endloop(0x0a)
// Deactivate lift
label(0x2c)
label(LABEL_64)
set_object_flag(OBJ_PREBRIDGELIFT, OBJFLAG_DEACTIVATED)
unset_object_flag(0x3d, OBJFLAG_CANNOT_ACTIVATE)
unset_object_flag(0x3e, OBJFLAG_CANNOT_ACTIVATE)
// Wait until lift called at bottom by buddy or counterop
beginloop(LABEL_68)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, 0x3d, /*goto*/ 0x2c)
if_chr_activated_object(CHR_P1P2, 0x3e, /*goto*/ 0x2c)
if_chr_activated_object(CHR_ANTI, 0x3d, /*goto*/ 0x2c)
if_chr_activated_object(CHR_ANTI, 0x3e, /*goto*/ 0x2c)
endloop(LABEL_68)
// Activate lift
label(0x2c)
play_sound(SFX_81A6, -1)
unset_object_flag(OBJ_PREBRIDGELIFT, OBJFLAG_DEACTIVATED)
yield
yield
yield
yield
yield
yield
yield
yield
yield
yield
yield
// Wait until stopped at bottom
beginloop(LABEL_69)
if_lift_stationary(OBJ_PREBRIDGELIFT, /*goto*/ 0x2c)
endloop(LABEL_69)
label(0x2c)
// Wait until moving (upwards)
beginloop(LABEL_6A)
if_lift_stationary(OBJ_PREBRIDGELIFT, /*goto*/ 0x06)
goto_next(0x2c)
label(0x06)
endloop(LABEL_6A)
label(0x2c)
yield
yield
yield
yield
// Wait until stopped at top
beginloop(LABEL_6B)
if_lift_stationary(OBJ_PREBRIDGELIFT, /*goto*/ 0x2c)
endloop(LABEL_6B)
label(0x2c)
goto_first(LABEL_64)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func100e_bridgelift[] = {
// Wait until Y >= 3600
beginloop(0x09)
chr_toggle_p1p2(CHR_SELF)
if_chr_y(CHR_P1P2, 3600, OPERATOR_LESS_THAN, /*goto*/ 0x2c)
goto_next(0x0a)
label(0x2c)
endloop(0x09)
// Wait until lift stopped at top
beginloop(0x0a)
if_lift_stationary(OBJ_BRIDGELIFT, /*goto*/ 0x2c)
endloop(0x0a)
label(0x2c)
set_stage_flag(STAGEFLAG_ENTERED_BRIDGE)
// Deactive lift
label(LABEL_64)
set_object_flag(OBJ_BRIDGELIFT, OBJFLAG_DEACTIVATED)
unset_object_flag(0x2f, OBJFLAG_CANNOT_ACTIVATE)
unset_object_flag(0x30, OBJFLAG_CANNOT_ACTIVATE)
// Wait until lift called from below by buddy or counterop
beginloop(LABEL_68)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, 0x2f, /*goto*/ 0x2c)
if_chr_activated_object(CHR_P1P2, 0x30, /*goto*/ 0x2c)
if_chr_activated_object(CHR_ANTI, 0x2f, /*goto*/ 0x2c)
if_chr_activated_object(CHR_ANTI, 0x30, /*goto*/ 0x2c)
endloop(LABEL_68)
// Activate lift
label(0x2c)
play_sound(SFX_81A6, -1)
unset_object_flag(OBJ_BRIDGELIFT, OBJFLAG_DEACTIVATED)
yield
yield
yield
yield
yield
yield
yield
yield
yield
yield
yield
// Wait until lift stopped
beginloop(LABEL_69)
if_lift_stationary(OBJ_BRIDGELIFT, /*goto*/ 0x2c)
endloop(LABEL_69)
label(0x2c)
// Wait until lift moving again (upwards)
beginloop(LABEL_6A)
if_lift_stationary(OBJ_BRIDGELIFT, /*goto*/ 0x06)
goto_next(0x2c)
label(0x06)
endloop(LABEL_6A)
label(0x2c)
yield
yield
yield
yield
// Wait until lift stopped at top
beginloop(LABEL_6B)
if_lift_stationary(OBJ_BRIDGELIFT, /*goto*/ 0x2c)
endloop(LABEL_6B)
label(0x2c)
goto_first(LABEL_64)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
/**
* Assigned to the two Skedar behind the bridge doors who must be killed to end
* the level.
*/
u8 func0415_bridgespawner[] = {
set_accuracy(VERSION >= VERSION_NTSC_1_0 ? 20 : 40)
set_reaction_speed(75)
set_chr_maxdamage(CHR_SELF, 10)
add_health_or_armor(190)
set_recovery_speed(0)
set_shield(0)
set_chr_chrflag(CHR_SELF, CHRCFLAG_KILLCOUNTABLE)
set_self_chrflag(CHRCFLAG_CLONEABLE)
set_self_chrflag(CHRCFLAG_HIDDEN)
set_chr_cloaked(CHR_SELF, TRUE, FALSE)
set_self_chrflag(CHRCFLAG_00040000)
set_morale(0)
beginloop(LABEL_C2)
if_stage_flag_eq(STAGEFLAG_TRIGGER_BRIDGE_SPAWNING, TRUE, /*goto*/ 0x04)
endloop(LABEL_C2)
beginloop(0x04)
if_stage_flag_eq(STAGEFLAG_BRIDGE_DOORS_UNLOCKED, TRUE, /*goto*/ 0x06)
if_morale_lt(2, /*goto*/ 0x2c)
// Doors are unlocked (have been spawning for over a minute)
label(0x06)
restart_timer
beginloop(LABEL_65)
if_timer_gt(60, /*goto*/ 0x06)
endloop(LABEL_65)
label(0x06)
goto_next(0x08)
// morale is 0 or 1
label(0x2c)
if_never_been_onscreen(/*goto*/ 0x4d)
if_chr_death_animation_finished(CHR_CLONE, /*goto*/ 0x2c)
if_chr_dead(CHR_CLONE, /*goto*/ 0x2c)
if_chr_knockedout(CHR_CLONE, /*goto*/ 0x2c)
label(0x2c)
if_can_see_target(/*goto*/ 0x08)
endloop(0x04)
// Been spawning for 61 seconds, or Skedar can see player
// Unhide and uncloak
label(0x08)
unset_self_chrflag(CHRCFLAG_HIDDEN)
yield
set_chr_cloaked(CHR_SELF, FALSE, TRUE)
set_ailist(CHR_SELF, AILIST_INIT_BRIDGESPAWNER_REVEAL)
// chrflag3_00000008 was unset
// 1 in 256 chance of spawning on any given frame (or script invocation?)
// or after 5 seconds just spawn one anyway.
label(0x4d)
restart_timer
beginloop(0x10)
call_rng
if_timer_gt(300, /*goto*/ 0x2c)
if_rand_lt(1, /*goto*/ 0x2c)
endloop(0x10)
// Check clone is dead
label(0x2c)
if_chr_death_animation_finished(CHR_CLONE, /*goto*/ 0x4d)
if_chr_dead(CHR_CLONE, /*goto*/ 0x4d)
if_chr_knockedout(CHR_CLONE, /*goto*/ 0x4d)
goto_first(0x04)
// Spawn
label(0x4d)
try_spawn_clone2(CHR_SELF, AILIST_INIT_BRIDGECLONE, 0, /*goto*/ 0x2c)
unset_self_chrflag(CHRCFLAG_HIDDEN)
yield
set_chr_cloaked(CHR_SELF, FALSE, TRUE)
set_ailist(CHR_SELF, AILIST_INIT_BRIDGESPAWNER_REVEAL)
label(0x2c)
add_morale(1)
yield
goto_first(0x04)
endlist
};
u8 func0416_init_bridgeclone[] = {
set_chr_cloaked(CHR_SELF, FALSE, TRUE)
set_chr_hiddenflag(CHR_SELF, CHRHFLAG_00400000)
set_accuracy(VERSION >= VERSION_NTSC_1_0 ? 20 : 40)
set_reaction_speed(75)
set_chr_maxdamage(CHR_SELF, 10)
add_health_or_armor(190)
set_recovery_speed(0)
set_shield(0)
set_chr_chrflag(CHR_SELF, CHRCFLAG_KILLCOUNTABLE)
set_self_flag_bankx(CHRFLAG1_NOIDLEANIMS, BANK_1)
label(0x04)
rebuild_teams
rebuild_squadrons
if_self_flag_bankx_eq(CHRFLAG0_GP1, TRUE, BANK_0, /*goto*/ 0x2c)
try_inherit_properties(CHR_BRIDGESPAWNER1, /*goto*/ 0x06)
label(0x06)
goto_next(0x06)
label(0x2c)
try_inherit_properties(CHR_BRIDGESPAWNER2, /*goto*/ 0x06)
label(0x06)
add_health_or_armor(40)
set_ailist(CHR_SELF, AILIST_BRIDGECLONE)
endlist
};
/**
* Assigned to the two bridge spawners when they stop sending clones and reveal
* themselves. Kill count isn't actually used to check if they're dead, so this
* function isn't necessary.
*/
u8 func0417_init_spawner_reveal[] = {
set_chr_chrflag(CHR_SELF, CHRCFLAG_KILLCOUNTABLE)
set_ailist(CHR_SELF, AILIST_BRIDGECLONE)
endlist
};
u8 func041a_bridgeclone[] = {
set_shotlist(AILIST_BRIDGECLONE)
if_chr_death_animation_finished(CHR_SELF, /*goto*/ 0x2c)
if_chr_dead(CHR_SELF, /*goto*/ 0x2c)
if_chr_knockedout(CHR_SELF, /*goto*/ 0x2c)
goto_next(0x06)
// Dying
label(0x2c)
set_shotlist(GAILIST_IDLE)
set_ailist(CHR_SELF, GAILIST_IDLE)
// Alive
label(0x06)
set_chr_hiddenflag(CHR_SELF, CHRHFLAG_00020000)
if_self_flag_bankx_eq(CHRFLAG0_GP1, TRUE, BANK_0, /*goto*/ 0x2c)
set_target_chr(CHR_ELVIS)
goto_next(LABEL_C2)
label(0x2c)
call_rng
if_rand_gt(128, /*goto*/ 0x2c)
set_target_chr(CHR_COOP)
if_chr_dead(CHR_COOP, /*goto*/ 0x2c)
goto_next(LABEL_C2)
label(0x2c)
set_target_chr(CHR_BOND)
label(0x03)
beginloop(LABEL_C2)
if_chr_death_animation_finished(CHR_TARGET, /*goto*/ 0x2c)
if_chr_dead(CHR_TARGET, /*goto*/ 0x2c)
if_chr_knockedout(CHR_TARGET, /*goto*/ 0x2c)
goto_next(0x06)
label(0x2c)
if_enemy_distance_lt_and_los(1000, /*goto*/ 0x06)
endloop(LABEL_C2)
// Has target - walk towards for 2 seconds
label(0x06)
if_distance_to_target_lt(150, /*goto*/ 0x2e)
label(LABEL_C5)
restart_timer
try_walk_to_target(/*goto*/ 0x08)
beginloop(0x08)
if_chr_dead(CHR_SELF, /*goto*/ LABEL_B8)
if_chr_death_animation_finished(CHR_TARGET, /*goto*/ 0x10)
if_chr_dead(CHR_TARGET, /*goto*/ 0x10)
if_chr_knockedout(CHR_TARGET, /*goto*/ 0x10)
if_timer_gt(120, /*goto*/ 0x09)
endloop(0x08)
label(0x09)
restart_timer
try_run_to_target(/*goto*/ 0x0a)
// Start running
beginloop(0x0a)
if_chr_dead(CHR_SELF, /*goto*/ LABEL_B8)
if_chr_death_animation_finished(CHR_TARGET, /*goto*/ 0x10)
if_chr_dead(CHR_TARGET, /*goto*/ 0x10)
if_chr_knockedout(CHR_TARGET, /*goto*/ 0x10)
if_target_moving_away(/*goto*/ 0x2c)
if_distance_to_target_lt(150, /*goto*/ 0x2e)
label(0x2c)
if_distance_to_target_lt(50, /*goto*/ 0x2e)
if_timer_gt(14, /*goto*/ 0x06)
endloop(0x0a)
label(0x06)
goto_first(0x09)
// Close to target - face them
label(0x2e)
restart_timer
dprint 'F','A','C','E',' ','T','A','R','G','E','T','\n',0,
if_target_in_fov_left(10, /*goto*/ 0x06)
if_target_out_of_fov_left(246, /*goto*/ 0x06)
stop_chr
try_face_entity(ATTACKFLAG_AIMATTARGET, 1, /*goto*/ 0x0b)
beginloop(0x0b)
if_chr_dead(CHR_SELF, /*goto*/ LABEL_B8)
if_chr_death_animation_finished(CHR_TARGET, /*goto*/ 0x10)
if_chr_dead(CHR_TARGET, /*goto*/ 0x10)
if_chr_knockedout(CHR_TARGET, /*goto*/ 0x10)
if_target_in_fov_left(10, /*goto*/ 0x06)
if_target_out_of_fov_left(246, /*goto*/ 0x06)
if_timer_gt(15, /*goto*/ 0x06)
endloop(0x0b)
// Attempt punch or kick
label(0x06)
try_punch_or_kick(/*goto*/ 0x2f)
goto_first(0x03)
beginloop(0x2f)
if_chr_dead(CHR_SELF, /*goto*/ LABEL_B8)
if_chr_death_animation_finished(CHR_TARGET, /*goto*/ 0x10)
if_chr_dead(CHR_TARGET, /*goto*/ 0x10)
if_chr_knockedout(CHR_TARGET, /*goto*/ 0x10)
if_chr_stopped(/*goto*/ 0x06)
endloop(0x2f)
// Attack finished
label(0x06)
goto_first(0x03)
// Target chr dying
label(0x10)
stop_chr
beginloop(0x0f)
if_chr_dead(CHR_SELF, /*goto*/ LABEL_B8)
if_enemy_distance_lt_and_los(2540, /*goto*/ 0x06)
endloop(0x0f)
label(0x06)
goto_first(LABEL_C2)
label(LABEL_B8)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func100f_bridge_entry[] = {
// Wait until 3 bridge Skedar dead
beginloop(0x09)
if_chr_dead(CHR_BRIDGE1, /*goto*/ 0x2c)
if_chr_death_animation_finished(CHR_BRIDGE1, /*goto*/ 0x2c)
if_chr_knockedout(CHR_BRIDGE1, /*goto*/ 0x2c)
reloop(0x09)
label(0x2c)
if_chr_dead(CHR_BRIDGE2, /*goto*/ 0x2c)
if_chr_death_animation_finished(CHR_BRIDGE2, /*goto*/ 0x2c)
if_chr_knockedout(CHR_BRIDGE2, /*goto*/ 0x2c)
reloop(0x09)
label(0x2c)
if_chr_dead(CHR_BRIDGE3, /*goto*/ 0x2c)
if_chr_death_animation_finished(CHR_BRIDGE3, /*goto*/ 0x2c)
if_chr_knockedout(CHR_BRIDGE3, /*goto*/ 0x2c)
endloop(0x09)
label(0x2c)
label(0x2c)
label(0x06)
restart_timer
// Wait 11.66 seconds
beginloop(0x0a)
if_timer_gt(700, /*goto*/ 0x06)
endloop(0x0a)
label(0x06)
set_stage_flag(STAGEFLAG_ELVIS_COMING_TO_BRIDGE)
set_ailist(CHR_ELVIS, GAILIST_STOP_AND_IDLE)
yield
if_chr_y(CHR_ELVIS, 3500, OPERATOR_LESS_THAN, /*goto*/ LABEL_65)
goto_next(0x2c)
// Elvis is somewhere below - warp him up
beginloop(LABEL_65)
chr_move_to_pad(CHR_ELVIS, PAD_LEE_00A7, 0x01, /*goto*/ 0x2c)
endloop(LABEL_65)
label(0x2c)
set_ailist(CHR_ELVIS, AILIST_ELVIS_AT_BRIDGE)
restart_timer
// Wait another 11.66 seconds
beginloop(0x08)
if_timer_gt(700, /*goto*/ 0x06)
endloop(0x08)
label(0x06)
set_stage_flag(STAGEFLAG_TRIGGER_BRIDGE_SPAWNING)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1010_check_bridge_captured[] = {
beginloop(LABEL_C2)
if_stage_flag_eq(STAGEFLAG_TRIGGER_BRIDGE_SPAWNING, TRUE, /*goto*/ 0x2c)
endloop(LABEL_C2)
// Wait for 2 spawner skedar to be killed. If 60 seconds have passed,
// unlock the bridge doors in case they've gotten stuck or became unalert
// or something.
label(0x2c)
restart_timer
beginloop(0x09)
if_stage_flag_eq(STAGEFLAG_BRIDGE_DOORS_UNLOCKED, TRUE, /*goto*/ 0x2c)
if_timer_gt(3600, /*goto*/ 0x0d)
label(0x2c)
if_chr_death_animation_finished(CHR_BRIDGESPAWNER1, /*goto*/ 0x2c)
if_chr_dead(CHR_BRIDGESPAWNER1, /*goto*/ 0x2c)
if_chr_knockedout(CHR_BRIDGESPAWNER1, /*goto*/ 0x2c)
reloop(0x09)
label(0x2c)
if_chr_death_animation_finished(CHR_BRIDGESPAWNER2, /*goto*/ 0x2c)
if_chr_dead(CHR_BRIDGESPAWNER2, /*goto*/ 0x2c)
if_chr_knockedout(CHR_BRIDGESPAWNER2, /*goto*/ 0x2c)
endloop(0x09)
// 60 seconds elapsed
label(0x0d)
set_stage_flag(STAGEFLAG_BRIDGE_DOORS_UNLOCKED)
unlock_door(0x46, 0x40)
unlock_door(0x47, 0x40)
unlock_door(0x48, 0x40)
unlock_door(0x49, 0x40)
goto_first(0x09)
label(0x2c)
show_hudmsg(CHR_BOND, L_LEE_025) // "Bridge has been captured."
set_stage_flag(STAGEFLAG_BRIDGE_CAPTURED)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1011_check_end_level[] = {
beginloop(0x09)
if_all_objectives_complete(/*goto*/ 0x06)
endloop(0x09)
label(0x06)
restart_timer
beginloop(0x08)
if_timer_gt(120, /*goto*/ 0x06)
endloop(0x08)
label(0x06)
if_chr_death_animation_finished(CHR_BOND, /*goto*/ 0x2c)
if_chr_dead(CHR_BOND, /*goto*/ 0x2c)
if_chr_knockedout(CHR_BOND, /*goto*/ 0x2c)
goto_next(0x06)
label(0x2c)
if_chr_death_animation_finished(CHR_COOP, /*goto*/ 0x2c)
if_chr_dead(CHR_COOP, /*goto*/ 0x2c)
if_chr_knockedout(CHR_COOP, /*goto*/ 0x2c)
goto_next(0x06)
// Both players dead
label(0x2c)
end_level
set_ailist(CHR_SELF, GAILIST_IDLE)
// Either buddy is alive
label(0x06)
if_chr_death_animation_finished(CHR_ELVIS, /*goto*/ 0x2c)
if_chr_dead(CHR_ELVIS, /*goto*/ 0x2c)
if_chr_knockedout(CHR_ELVIS, /*goto*/ 0x2c)
// Mission complete
set_invincible(CHR_BOND)
set_ailist(CHR_SELF, AILIST_OUTRO)
// Elvis dead
label(0x2c)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1003_intro[] = {
set_chr_chrflag(CHR_COOP, CHRCFLAG_HIDDEN)
set_chr_chrflag(CHR_ANTI, CHRCFLAG_HIDDEN)
play_cutscene_track(MUSIC_ATTACKSHIP_INTRO)
camera_movement(ANIM_01C2)
cmd0175(60)
set_chr_chrflag(CHR_BOND, CHRCFLAG_UNPLAYABLE)
set_chr_hiddenflag(CHR_BOND, CHRHFLAG_00020000)
chr_do_animation(ANIM_01C3, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_BOND, 4)
set_chr_chrflag(CHR_CASS, CHRCFLAG_UNPLAYABLE)
unset_chr_chrflag(CHR_CASS, CHRCFLAG_HIDDEN)
set_chr_hiddenflag(CHR_CASS, CHRHFLAG_00020000)
chr_do_animation(ANIM_01C4, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_CASS, 4)
set_chr_chrflag(CHR_INTRO_SKEDAR, CHRCFLAG_UNPLAYABLE)
unset_chr_chrflag(CHR_INTRO_SKEDAR, CHRCFLAG_HIDDEN)
set_chr_hiddenflag(CHR_INTRO_SKEDAR, CHRHFLAG_00020000)
chr_do_animation(ANIM_01C5, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_INTRO_SKEDAR, 4)
restart_timer
set_cutscene_weapon(CHR_BOND, WEAPON_NONE, WEAPON_NONE)
yield
set_cutscene_weapon(CHR_BOND, WEAPON_NONE, WEAPON_NONE)
#define wait_until(time, loopid) \
beginloop(loopid) \
if_controller_button_pressed(/*goto*/ LABEL_B0) \
if_timer_gt(time, /*goto*/ 0x06) \
endloop(loopid) \
label(0x06)
wait_until(60, LABEL_9A)
play_sound(SFX_0171, CHANNEL_10)
wait_until(120, LABEL_AC)
play_sound(MP3_075A, CHANNEL_10)
wait_until(136, LABEL_9B)
play_sound(SFX_0172, CHANNEL_10)
wait_until(186, LABEL_9C)
play_sound(SFX_0173, CHANNEL_10)
wait_until(226, LABEL_9D)
play_sound(SFX_0174, CHANNEL_10)
wait_until(320, LABEL_9E)
speak(CHR_BOND, L_LEE_032, MP3_047F, CHANNEL_10, COLOR_09_BLUE) // "Oohhh... I'd better not be where I think I am."
wait_until(505, LABEL_9F)
play_sound(SFX_0427, CHANNEL_10)
wait_until(600, LABEL_A0)
speak(CHR_BOND, L_LEE_033, MP3_0480, CHANNEL_10, COLOR_04_ORANGE) // "And it's worse than that, my dear. Just look who y..."
wait_until(1000, LABEL_A1)
speak(CHR_BOND, L_LEE_034, MP3_0481, CHANNEL_10, COLOR_09_BLUE) // "You! I thought you'd managed to escape. We found n..."
wait_until(1018, LABEL_A2)
play_sound(SFX_0175, CHANNEL_10)
wait_until(1142, LABEL_A3)
play_sound(SFX_0176, CHANNEL_10)
wait_until(1168, LABEL_A4)
play_sound(SFX_0177, CHANNEL_10)
wait_until(1210, LABEL_A5)
play_sound(SFX_0178, CHANNEL_10)
wait_until(1260, LABEL_A6)
play_sound(SFX_0171, CHANNEL_10)
wait_until(1298, LABEL_A7)
play_sound(SFX_0172, CHANNEL_10)
wait_until(1358, LABEL_65)
play_sound(SFX_0173, CHANNEL_10)
wait_until(1396, LABEL_66)
play_sound(SFX_0172, CHANNEL_10)
wait_until(1400, LABEL_A8)
speak(CHR_BOND, L_LEE_035, MP3_0482, CHANNEL_10, COLOR_04_ORANGE) // "You couldn't find me. But there was no hiding from..."
wait_until(1520, LABEL_67)
play_sound(SFX_0176, CHANNEL_10)
wait_until(1592, LABEL_68)
play_sound(SFX_0177, CHANNEL_10)
wait_until(1600, LABEL_69)
play_sound(SFX_0174, CHANNEL_10)
wait_until(1656, LABEL_6A)
play_sound(SFX_0175, CHANNEL_10)
wait_until(1728, LABEL_6B)
play_sound(SFX_0178, CHANNEL_10)
wait_until(1734, LABEL_6C)
play_sound(SFX_0172, CHANNEL_10)
wait_until(1770, LABEL_6E)
play_sound(SFX_0173, CHANNEL_10)
wait_until(1810, LABEL_61)
open_door(0x17)
play_sound(SFX_DOOR_801E, CHANNEL_10)
play_sound(SFX_SKEDAR_ROAR_0530, CHANNEL_10)
wait_until(1870, LABEL_6F)
speak(CHR_BOND, L_LEE_036, MP3_0483, CHANNEL_10, COLOR_04_ORANGE) // "This is it. Wait there! I'll make a distraction; i..."
wait_until(1874, LABEL_70)
play_sound(SFX_0174, CHANNEL_10)
wait_until(1930, LABEL_71)
play_sound(SFX_0175, CHANNEL_10)
wait_until(1986, LABEL_72)
play_sound(SFX_05A2, CHANNEL_10)
wait_until(2040, LABEL_73)
play_sound(SFX_05A3, CHANNEL_10)
wait_until(2108, LABEL_74)
play_sound(SFX_05A2, CHANNEL_10)
wait_until(2168, LABEL_75)
play_sound(SFX_05A3, CHANNEL_10)
wait_until(2226, LABEL_76)
play_sound(SFX_SKEDAR_ROAR_0531, CHANNEL_10)
wait_until(2232, LABEL_77)
play_sound(SFX_05A2, CHANNEL_10)
wait_until(2300, LABEL_62)
close_door(0x17)
wait_until(2346, LABEL_78)
wait_until(2424, LABEL_79)
play_sound(SFX_05A3, CHANNEL_10)
wait_until(2468, LABEL_7A)
play_sound(SFX_SKEDAR_ROAR_0530, CHANNEL_10)
wait_until(2474, LABEL_7B)
play_sound(SFX_05A2, CHANNEL_10)
wait_until(2560, LABEL_7C)
play_sound(SFX_0176, CHANNEL_10)
wait_until(2580, LABEL_7D)
play_sound(SFX_0177, CHANNEL_10)
wait_until(2581, LABEL_7E)
speak(CHR_BOND, L_LEE_037, MP3_0484, CHANNEL_10, COLOR_09_BLUE) // "Why are you doing this, Cassandra?"
wait_until(2614, LABEL_7F)
play_sound(SFX_0171, CHANNEL_10)
wait_until(2648, LABEL_80)
play_sound(SFX_0178, CHANNEL_10)
wait_until(2670, LABEL_81)
play_sound(SFX_0172, CHANNEL_10)
wait_until(2708, LABEL_82)
play_sound(SFX_0173, CHANNEL_10)
wait_until(2736, LABEL_83)
play_sound(SFX_0174, CHANNEL_10)
wait_until(2780, LABEL_84)
play_sound(SFX_0175, CHANNEL_10)
wait_until(2790, LABEL_85)
speak(CHR_BOND, L_LEE_038, MP3_0485, CHANNEL_10, COLOR_04_ORANGE) // "The Skedar used me, Joanna. You are my best chance..."
wait_until(2792, LABEL_86)
play_sound(SFX_0172, CHANNEL_10)
wait_until(2834, LABEL_87)
play_sound(SFX_0176, CHANNEL_10)
wait_until(3016, LABEL_88)
play_sound(SFX_01DC, CHANNEL_10)
wait_until(3068, LABEL_89)
play_sound(SFX_043A, CHANNEL_10)
play_sound(SFX_043D, CHANNEL_10)
wait_until(3186, LABEL_63)
open_door(0x24)
wait_until(3238, LABEL_8A)
play_sound(SFX_0177, CHANNEL_10)
wait_until(3258, LABEL_8B)
play_sound(SFX_0172, CHANNEL_10)
wait_until(3280, LABEL_8C)
play_sound(SFX_0173, CHANNEL_10)
close_door(0x24)
wait_until(3313, LABEL_8D)
play_sound(SFX_SKEDAR_ROAR_052A, CHANNEL_10)
speak(CHR_BOND, L_LEE_039, MP3_0486, CHANNEL_10, COLOR_04_ORANGE) // "Eeeeaaarrrrggghhh!!!"
beginloop(0x08)
if_camera_animating(/*goto*/ 0x2c)
goto_next(LABEL_B0)
label(0x2c)
if_controller_button_pressed(/*goto*/ LABEL_B0)
label(0x2c)
endloop(0x08)
label(LABEL_B0)
label(0x06)
set_stage_flag(STAGEFLAG_INTRO_FINISHED)
open_door(0x17)
mute_channel(CHANNEL_10)
unset_chr_chrflag(CHR_COOP, CHRCFLAG_HIDDEN)
unset_chr_chrflag(CHR_ANTI, CHRCFLAG_HIDDEN)
unset_chr_chrflag(CHR_BOND, CHRCFLAG_UNPLAYABLE)
set_chr_hiddenflag(CHR_BOND, CHRHFLAG_00020000)
chr_do_animation(ANIM_01C3, -2, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_BOND, 2)
unset_chr_chrflag(CHR_CASS, CHRCFLAG_UNPLAYABLE)
set_chr_hiddenflag(CHR_CASS, CHRHFLAG_00020000)
set_chr_chrflag(CHR_CASS, CHRCFLAG_00000001)
chr_do_animation(ANIM_01C4, -2, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_CASS, 2)
unset_chr_chrflag(CHR_INTRO_SKEDAR, CHRCFLAG_UNPLAYABLE)
set_chr_hiddenflag(CHR_INTRO_SKEDAR, CHRHFLAG_00020000)
set_chr_chrflag(CHR_INTRO_SKEDAR, CHRCFLAG_00000001)
chr_do_animation(ANIM_01C5, -2, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_INTRO_SKEDAR, 2)
remove_chr(CHR_INTRO_SKEDAR)
set_ailist(CHR_SHY_SKEDAR, AILIST_SHY_SKEDAR_WAIT)
enter_firstperson
yield
chr_move_to_pad(CHR_CASS, PAD_LEE_00DF, 0x01, /*goto*/ 0x2c)
label(0x2c)
set_ailist(CHR_CASS, AILIST_CASS)
stop_cutscene_track
stop_ambient_track
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func0c01_outro[] = {
if_chr_death_animation_finished(CHR_BOND, /*goto*/ 0x2c)
set_target_chr(CHR_BOND)
goto_next(0x06)
label(0x2c)
set_target_chr(CHR_COOP)
label(0x06)
disable_object(0x2c)
camera_movement(ANIM_01E1)
play_cutscene_track(MUSIC_ATTACKSHIP_OUTRO)
set_chr_chrflag(CHR_ANTI, CHRCFLAG_HIDDEN)
set_chr_chrflag(0xf1, CHRCFLAG_HIDDEN)
set_chr_chrflag(CHR_P1P2, CHRCFLAG_HIDDEN)
set_chr_chrflag(CHR_TARGET, CHRCFLAG_UNPLAYABLE)
unset_chr_chrflag(CHR_TARGET, CHRCFLAG_HIDDEN)
set_chr_hiddenflag(CHR_TARGET, CHRHFLAG_00020000)
chr_do_animation(ANIM_01E2, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_TARGET, 4)
set_chr_chrflag(CHR_ELVIS, CHRCFLAG_INVINCIBLE)
set_ailist(CHR_ELVIS, GAILIST_IDLE)
set_chr_chrflag(CHR_ELVIS, CHRCFLAG_UNPLAYABLE)
unset_chr_chrflag(CHR_ELVIS, CHRCFLAG_HIDDEN)
set_chr_hiddenflag(CHR_ELVIS, CHRHFLAG_00020000)
chr_do_animation(ANIM_01E3, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_ELVIS, 4)
enable_object(OBJ_OUTRO_SHUTTLE)
set_object_flag2(OBJ_OUTRO_SHUTTLE, OBJFLAG2_04000000)
set_object_flag3(OBJ_OUTRO_SHUTTLE, OBJFLAG3_00000010)
object_do_animation(ANIM_01E4, OBJ_OUTRO_SHUTTLE, 0x04, 0xffff)
object_set_modelpart_visible(OBJ_OUTRO_SHUTTLE, MODELPART_SKSHUTTLE_GANGWAY, FALSE)
show_nonessential_chrs(FALSE)
restart_timer
set_cutscene_weapon(CHR_TARGET, WEAPON_NONE, WEAPON_NONE)
yield
set_cutscene_weapon(CHR_TARGET, WEAPON_NONE, WEAPON_NONE)
set_cutscene_weapon(CHR_ELVIS, WEAPON_NONE, WEAPON_NONE)
yield
set_cutscene_weapon(CHR_ELVIS, WEAPON_NONE, WEAPON_NONE)
wait_until(38, LABEL_65)
play_sound(SFX_00F9, CHANNEL_10)
wait_until(140, LABEL_66)
play_sound(SFX_00FD, CHANNEL_10)
wait_until(150, LABEL_A9)
speak(CHR_BOND, L_LEE_040, MP3_0487, CHANNEL_10, COLOR_09_BLUE) // "Wow. That's the first time I've seen another plane..."
wait_until(368, LABEL_67)
play_sound(SFX_00FA, CHANNEL_10)
play_sound(SFX_00FB, CHANNEL_10)
wait_until(540, LABEL_69)
play_sound(SFX_00FE, CHANNEL_10)
wait_until(550, LABEL_6B)
play_sound(SFX_00FC, CHANNEL_10)
wait_until(580, LABEL_6C)
play_sound(SFX_00F9, CHANNEL_10)
play_sound(SFX_00FB, CHANNEL_10)
wait_until(690, LABEL_6E)
speak(CHR_BOND, L_LEE_041, MP3_0488, CHANNEL_10, COLOR_04_ORANGE) // "Hmmmm?"
wait_until(850, LABEL_6F)
speak(CHR_BOND, L_LEE_042, MP3_0489, CHANNEL_10, COLOR_04_ORANGE) // "I don't... I don't believe it!"
wait_until(963, LABEL_70)
play_sound(SFX_FOOTSTEP_80D4, CHANNEL_10)
wait_until(972, LABEL_71)
play_sound(SFX_FOOTSTEP_80D8, CHANNEL_10)
wait_until(988, LABEL_61)
play_sound(SFX_FOOTSTEP_80DB, CHANNEL_10)
wait_until(1000, LABEL_72)
speak(CHR_BOND, L_LEE_043, MP3_048A, CHANNEL_10, COLOR_09_BLUE) // "Elvis? What is it?"
wait_until(1030, LABEL_73)
play_sound(SFX_FOOTSTEP_80DA, CHANNEL_10)
wait_until(1045, LABEL_74)
play_sound(SFX_FOOTSTEP_80D8, CHANNEL_10)
wait_until(1065, LABEL_75)
play_sound(SFX_FOOTSTEP_80D9, CHANNEL_10)
wait_until(1085, LABEL_76)
play_sound(SFX_FOOTSTEP_80DA, CHANNEL_10)
wait_until(1200, LABEL_77)
speak(CHR_BOND, L_LEE_044, MP3_048B, CHANNEL_10, COLOR_09_BLUE) // "Where are you going?"
wait_until(1237, LABEL_78)
play_sound(SFX_FOOTSTEP_80DB, CHANNEL_10)
wait_until(1260, LABEL_79)
play_sound(SFX_FOOTSTEP_80D8, CHANNEL_10)
wait_until(1280, LABEL_7A)
play_sound(SFX_FOOTSTEP_80D9, CHANNEL_10)
wait_until(1300, LABEL_7B)
play_sound(SFX_FOOTSTEP_80DA, CHANNEL_10)
wait_until(1301, LABEL_62)
speak(CHR_BOND, L_LEE_045, MP3_048C, CHANNEL_10, COLOR_04_ORANGE) // "We have to get down to the surface! Follow me!"
open_door(OBJ_HANGARDOOR1)
open_door(OBJ_HANGARDOOR2)
open_door(OBJ_HANGARDOOR3)
open_door(OBJ_HANGARDOOR4)
set_object_flag(OBJ_HANGARDOOR1, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_HANGARDOOR2, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_HANGARDOOR3, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_HANGARDOOR4, OBJFLAG_DOOR_KEEPOPEN)
beginloop(0x08)
if_camera_animating(/*goto*/ 0x2c)
goto_next(LABEL_B0)
label(0x2c)
if_controller_button_pressed(/*goto*/ LABEL_B0)
label(0x2c)
endloop(0x08)
label(LABEL_B0)
mute_channel(CHANNEL_10)
end_level
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
#define init_skedar(function) \
set_accuracy(VERSION >= VERSION_NTSC_1_0 ? 20 : 40) \
set_reaction_speed(75) \
set_chr_maxdamage(CHR_SELF, 10) \
add_health_or_armor(190) \
set_recovery_speed(0) \
set_shield(0) \
set_ailist(CHR_SELF, function)
u8 func041e_init_bridge1and2[] = {
init_skedar(AILIST_BRIDGE_SKEDAR)
endlist
};
u8 func0425_init_shy_skedar[] = {
init_skedar(GAILIST_IDLE)
endlist
};
u8 func0420_init_bridge3[] = {
init_skedar(AILIST_BRIDGE_SKEDAR)
endlist
};
/**
* Assigned to the 3 Skedar on the bridge.
*/
u8 func0421_bridge_skedar[] = {
set_shotlist(AILIST_BRIDGE_SKEDAR)
if_chr_dead(CHR_SELF, /*goto*/ 0x06)
if_chr_death_animation_finished(CHR_SELF, /*goto*/ 0x06)
if_chr_knockedout(CHR_SELF, /*goto*/ 0x06)
goto_next(0x2c)
// Dying
label(0x06)
set_shotlist(GAILIST_IDLE)
restart_timer
beginloop(0x53)
if_timer_gt(15, /*goto*/ 0x06)
endloop(0x53)
label(0x06)
say_quip(CHR_BOND, QUIP_DIE, 0xff, 0x03, 0xff, BANK_0, 0x00, 0x00)
set_shotlist(GAILIST_IDLE)
set_ailist(CHR_SELF, GAILIST_IDLE)
// Alive
label(0x2c)
if_just_injured(CHR_SELF, /*goto*/ 0x06)
goto_next(0x08)
// Injured
label(0x06)
set_view_distance(100)
// Not injured
label(0x08)
set_self_chrflag(CHRCFLAG_00000040)
label(LABEL_C6)
if_self_flag_bankx_eq(CHRFLAG0_SKIPSAFETYCHECKS, TRUE, BANK_0, /*goto*/ 0x06)
set_target_chr(CHR_BOND)
try_attack_kneel(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ LABEL_C7)
label(0x06)
kneel
beginloop(LABEL_C7)
chr_toggle_p1p2(CHR_SELF)
label(0x2c)
set_target_chr(CHR_P1P2)
if_target_outside_my_yvisang(/*goto*/ 0x06)
if_target_in_sight(/*goto*/ LABEL_C8)
label(0x06)
if_saw_injury(0x00, /*goto*/ LABEL_C8)
if_near_miss(/*goto*/ LABEL_C9)
label(0x2c)
set_target_chr(CHR_P1P2)
reloop(LABEL_C7)
label(0x06)
if_target_outside_my_yvisang(/*goto*/ 0x2c)
if_target_in_sight(/*goto*/ LABEL_C8)
label(0x2c)
set_target_chr(CHR_BOND)
endloop(LABEL_C7)
label(LABEL_C8)
set_view_distance(100)
if_self_flag_bankx_eq(CHRFLAG0_GP1, TRUE, BANK_0, /*goto*/ 0x2c)
set_self_flag_bankx(CHRFLAG0_GP1, BANK_0)
say_quip(CHR_BOND, QUIP_SEEPLAYER, 0xff, 0x02, 0xff, BANK_0, 0x00, 0x00)
label(0x2c)
goto_next(LABEL_CA)
// Unreachable
try_attack_amount(90, 100)
// Reachable from below
beginloop(LABEL_CB)
if_chr_stopped(/*goto*/ LABEL_CC)
endloop(LABEL_CB)
label(LABEL_CC)
restart_timer
stop_chr
beginloop(LABEL_B4)
if_timer_gt(120, /*goto*/ 0x2c)
endloop(LABEL_B4)
label(0x2c)
label(0x06)
goto_first(LABEL_C6)
// Near miss
label(LABEL_C9)
set_view_distance(100)
restart_timer
if_self_flag_bankx_eq(CHRFLAG0_GP1, TRUE, BANK_0, /*goto*/ LABEL_CD)
set_self_flag_bankx(CHRFLAG0_GP1, BANK_0)
label(LABEL_CD)
call_rng
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_outside_my_yvisang(/*goto*/ 0x06)
if_target_in_sight(/*goto*/ LABEL_CE)
label(0x06)
if_timer_gt(60, /*goto*/ LABEL_CF)
if_rand_lt(4, /*goto*/ LABEL_CF)
goto_first(LABEL_CD)
label(LABEL_CF)
if_can_see_target(/*goto*/ LABEL_CE)
goto_first(LABEL_C6)
label(LABEL_CE)
goto_first(LABEL_C8)
label(LABEL_D0)
restart_timer
beginloop(LABEL_D1)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_can_see_target(/*goto*/ LABEL_CE)
if_timer_gt(300, /*goto*/ 0x06)
endloop(LABEL_D1)
label(0x06)
goto_first(LABEL_C6)
label(LABEL_CE)
goto_first(LABEL_C8)
label(LABEL_CA)
if_self_flag_bankx_eq(CHRFLAG0_SKIPSAFETYCHECKS, FALSE, BANK_0, /*goto*/ LABEL_60)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ LABEL_B1)
label(LABEL_B1)
say_quip(CHR_BOND, QUIP_ATTACK1, 0x19, 0x02, 0x01, BANK_0, 0x00, 0x00)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x06)
goto_next(0x2c)
label(LABEL_60)
try_attack_amount(40, 60)
dprint 'F','I','R','E',' ','F','U','L','L','\n',0,
label(0x06)
goto_first(LABEL_CB)
label(0x2c)
goto_first(LABEL_CC)
endlist
};
u8 func1013_msg_gottogetshieldsdown[] = {
beginloop(0x04)
if_stage_flag_eq(STAGEFLAG_SAID_GETSHIELDSDOWN, TRUE, /*goto*/ 0x2c)
endloop(0x04)
label(0x2c)
restart_timer
beginloop(0x08)
if_timer_gt(300, /*goto*/ 0x2c)
endloop(0x08)
label(0x2c)
speak(CHR_BOND, L_LEE_027, MP3_03DC, CHANNEL_6, COLOR_09_BLUE) // "I've got to get those shields down to let Elvis in..."
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1014_msg_hangarbaydoors[] = {
if_difficulty_lt(DIFF_PA, /*goto*/ 0x09)
restart_timer
beginloop(0x04)
if_objective_complete(0, /*goto*/ 0x2c)
endloop(0x04)
label(0x2c)
restart_timer
beginloop(0x08)
if_timer_gt(240, /*goto*/ 0x2c)
endloop(0x08)
label(0x2c)
speak(CHR_BOND, L_LEE_028, MP3_03DD, CHANNEL_6, COLOR_09_BLUE) // "Now only the hangar bay doors are in the way."
label(0x09)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1015_msg_starmaps[] = {
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x003e, /*goto*/ 0x2c)
endloop(0x04)
label(0x2c)
speak(CHR_P1P2, L_LEE_029, MP3_03DE, CHANNEL_6, COLOR_09_BLUE) // "This machine contains the Skedar star maps."
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1016_msg_ifwecontrolthebridge[] = {
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x006f, /*goto*/ 0x2c)
endloop(0x04)
label(0x2c)
set_stage_flag(STAGEFLAG_ENTERED_BRIDGELIFT)
unset_chr_chrflag(CHR_BRIDGE1, CHRCFLAG_INVINCIBLE)
unset_chr_chrflag(CHR_BRIDGE2, CHRCFLAG_INVINCIBLE)
unset_chr_chrflag(CHR_BRIDGE3, CHRCFLAG_INVINCIBLE)
speak(CHR_P1P2, L_LEE_030, MP3_03DF, CHANNEL_6, COLOR_09_BLUE) // "If we control the bridge, then the ship is ours."
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func0422_cass[] = {
set_shotlist(GAILIST_IDLE)
set_self_chrflag(CHRCFLAG_00040000)
run_to_pad(PAD_LEE_01DD)
beginloop(0x08)
if_chr_distance_to_pad_lt(CHR_SELF, 300, PAD_LEE_01DD, /*goto*/ 0x06)
if_chr_stopped(/*goto*/ 0x06)
endloop(0x08)
label(0x06)
stop_chr
set_stage_flag(STAGEFLAG_CASS_AT_PAD)
// @bug: Looks like there's a missing goto_first 0x09 here.
// With that statement, it would loop waiting for the Skedar to be ready.
// As it stands, the check is pointless and Cass will do the screams and die
// even if the Skedar is not ready.
label(0x09)
yield
if_stage_flag_eq(STAGEFLAG_SHY_SKEDAR_READY, TRUE, /*goto*/ 0x2c)
label(0x2c)
play_sound(MP3_0486, CHANNEL_10)
set_stage_flag(STAGEFLAG_CASS_SCREAMING)
beginloop(LABEL_C2)
damage_chr(CHR_SELF, WEAPON_SUPERDRAGON)
if_chr_death_animation_finished(CHR_SELF, /*goto*/ 0x2c)
if_chr_dead(CHR_SELF, /*goto*/ 0x2c)
if_chr_knockedout(CHR_SELF, /*goto*/ 0x2c)
endloop(LABEL_C2)
label(0x2c)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func0423_shy_skedar[] = {
set_shotlist(AILIST_INIT_SKEDAR)
set_self_chrflag(CHRCFLAG_00000040)
set_self_chrflag(CHRCFLAG_00040000)
set_target_chr(CHR_CASS)
goto_next(0x2c)
if_self_flag_bankx_eq(CHRFLAG0_00008000, TRUE, BANK_0, /*goto*/ 0x03)
label(LABEL_C2)
chr_move_to_pad(CHR_SELF, PAD_LEE_00E0, 0x01, /*goto*/ 0x2c)
// Warp failed or not available - so run
label(0x03)
set_target_chr(CHR_CASS)
restart_timer
try_run_to_target(/*goto*/ 0x08)
beginloop(0x08)
if_chr_stopped(/*goto*/ 0x06)
if_chr_distance_to_pad_lt(CHR_SELF, 100, PAD_LEE_00DA, /*goto*/ 0x2d)
if_timer_gt(60, /*goto*/ 0x06)
endloop(0x08)
// Stopped, or running for 1 second
label(0x06)
set_target_chr(CHR_CASS)
goto_first(0x03)
// Warped to pad 0x00e0 successfully - run rest of the way
label(0x2c)
run_to_pad(PAD_LEE_00DA)
beginloop(0x09)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_in_sight(/*goto*/ 0x2d)
if_chr_distance_to_pad_lt(CHR_SELF, 200, PAD_LEE_00DA, /*goto*/ 0x2d)
if_chr_stopped(/*goto*/ 0x2d)
endloop(0x09)
// At pad
// The first time through this function, STAGEFLAG_SHY_SKEDAR_READY will
// be set. The second time through this function, stageflag 02000000 will
// be set.
label(0x2d)
if_stage_flag_eq(STAGEFLAG_SHY_SKEDAR_READY, TRUE, /*goto*/ 0x2c)
set_stage_flag(STAGEFLAG_SHY_SKEDAR_READY)
goto_next(0x2d)
label(0x2c)
set_stage_flag(STAGEFLAG_02000000)
// Set target chr based on who it can see
label(0x2d)
stop_chr
set_target_chr(CHR_BOND)
if_can_see_target(/*goto*/ 0x2c)
set_target_chr(CHR_COOP)
if_can_see_target(/*goto*/ 0x2c)
set_target_chr(CHR_ANTI)
if_can_see_target(/*goto*/ 0x2c)
label(0x2c)
stop_chr
set_shotlist(AILIST_INIT_SKEDAR)
set_returnlist(CHR_SELF, AILIST_INIT_SKEDAR)
set_ailist(CHR_SELF, AILIST_INIT_SKEDAR)
endlist
};
u8 func0423_shy_skedar_wait[] = {
set_shotlist(AILIST_SHY_SKEDAR)
set_target_chr(CHR_CASS)
set_self_flag_bankx(CHRFLAG0_00008000, BANK_0)
restart_timer
beginloop(0x08)
if_timer_gt(180, /*goto*/ 0x2c)
endloop(0x08)
label(0x2c)
set_ailist(CHR_SELF, AILIST_SHY_SKEDAR)
endlist
};
u8 func141b_setup_lifts[] = {
activate_lift(1, 0x25)
activate_lift(2, 0x26)
activate_lift(4, 0x28)
activate_lift(5, 0x29)
activate_lift(6, 0x2a)
activate_lift(7, 0x2b)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
/**
* In PA room where the hangar door console is. Once console is activated, or
* when hangar alarm is activated, the Skedar behind the door is alerted.
*/
u8 func1017_pa_skedar_alertness[] = {
beginloop(0x04)
if_stage_flag_eq(STAGEFLAG_HANGAR_DOORS_OPEN, TRUE, /*goto*/ 0x2c)
if_stage_flag_eq(STAGEFLAG_HANGAR_ALARM_ACTIVATED, TRUE, /*goto*/ 0x2c)
endloop(0x04)
label(0x2c)
restart_timer
beginloop(0x08)
if_timer_gt(300, /*goto*/ 0x2c)
endloop(0x08)
label(0x2c)
set_ailist(0x02, GAILIST_ALERTED)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1012_update_elvis_target_chr[] = {
beginloop(0x04)
if_chr_death_animation_finished(CHR_COOP, /*goto*/ 0x09)
if_chr_death_animation_finished(CHR_BOND, /*goto*/ 0x08)
goto_next(0x09)
// Unreachable
reloop(0x04)
// Jo dead
label(0x08)
set_chr_target_chr(CHR_ELVIS, CHR_COOP)
reloop(0x04)
// Velvet dead or both alive
label(0x09)
set_chr_target_chr(CHR_ELVIS, CHR_BOND)
endloop(0x04)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
/**
* Note Elvis is still hidden, hence why he doesn't appear until shields are
* down.
*/
u8 func1018_place_elvis_in_hangar[] = {
label(0x04)
if_difficulty_lt(DIFF_PA, /*goto*/ 0x03)
set_ailist(CHR_SELF, GAILIST_IDLE)
// A and SA
beginloop(0x03)
chr_move_to_pad(CHR_ELVIS, PAD_LEE_0103, 0x01, /*goto*/ 0x2c)
endloop(0x03)
label(0x2c)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1002_hangar_shuttle[] = {
yield
enable_object(OBJ_HANGAR_SHUTTLE)
set_object_flag3(OBJ_HANGAR_SHUTTLE, OBJFLAG3_00000010)
object_set_modelpart_visible(OBJ_HANGAR_SHUTTLE, MODELPART_SKSHUTTLE_GANGWAY, FALSE)
label(0x09)
restart_timer
beginloop(0x08)
if_stage_flag_eq(STAGEFLAG_BRIDGE_CAPTURED, TRUE, /*goto*/ 0x06)
if_objective_complete(4, /*goto*/ 0x06)
#if VERSION >= VERSION_NTSC_1_0
object_do_animation(ANIM_045C, OBJ_HANGAR_SHUTTLE, 0x08, 0xffff)
#else
object_do_animation(ANIM_045C, OBJ_HANGAR_SHUTTLE, 0x01, 0xffff)
#endif
endloop(0x08)
label(0x2c)
goto_first(0x09)
label(0x06)
disable_object(OBJ_HANGAR_SHUTTLE)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func101a_kill_maian[] = {
yield
damage_chr(CHR_MAIAN3, WEAPON_SUPERDRAGON)
yield
damage_chr(CHR_MAIAN3, WEAPON_SUPERDRAGON)
yield
damage_chr(CHR_MAIAN3, WEAPON_SUPERDRAGON)
yield
damage_chr(CHR_MAIAN3, WEAPON_SUPERDRAGON)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func101c_lift_door_sounds[] = {
beginloop(LABEL_C2)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, 0x2f, /*goto*/ 0x2c)
if_chr_activated_object(CHR_P1P2, 0x30, /*goto*/ 0x2c)
if_chr_activated_object(CHR_P1P2, 0x31, /*goto*/ 0x2c)
if_chr_activated_object(CHR_P1P2, 0x32, /*goto*/ 0x2c)
if_chr_activated_object(CHR_P1P2, 0x33, /*goto*/ 0x2c)
if_chr_activated_object(CHR_P1P2, 0x34, /*goto*/ 0x2c)
if_chr_activated_object(CHR_P1P2, 0x35, /*goto*/ 0x2c)
if_chr_activated_object(CHR_P1P2, 0x36, /*goto*/ 0x2c)
if_chr_activated_object(CHR_P1P2, 0x37, /*goto*/ 0x2c)
if_chr_activated_object(CHR_P1P2, 0x38, /*goto*/ 0x2c)
if_chr_activated_object(CHR_P1P2, 0x39, /*goto*/ 0x2c)
if_chr_activated_object(CHR_P1P2, 0x3a, /*goto*/ 0x2c)
if_chr_activated_object(CHR_P1P2, 0x3d, /*goto*/ 0x2c)
if_chr_activated_object(CHR_P1P2, 0x3e, /*goto*/ 0x2c)
endloop(LABEL_C2)
label(0x2c)
dprint 'S','O','U','N','D','\n',0,
play_sound(SFX_81A6, -1)
restart_timer
beginloop(0x08)
if_timer_gt(120, /*goto*/ 0x06)
endloop(0x08)
label(0x06)
goto_first(LABEL_C2)
endlist
};
u8 func101d_unlock_doors[] = {
if_difficulty_lt(DIFF_SA, /*goto*/ 0x2c)
if_difficulty_lt(DIFF_PA, /*goto*/ 0x06)
// PA - unlock door to console on other side of hangar
unlock_door(0x35, 0x80)
unlock_door(0x36, 0x80)
// SA and PA - unlock door to engine room
label(0x06)
unlock_door(0x3f, 0x80)
unlock_door(0x40, 0x80)
// All difficulties
label(0x2c)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func101e_bridge_music[] = {
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_BOND, 0x00, 0x006e, /*goto*/ 0x2c)
endloop(0x04)
label(0x2c)
play_x_track(XREASON_DEFAULT, 10, 60)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func040c_elvis_run_from_engineroom[] = {
set_shotlist(AILIST_ELVIS_RUN_FROM_ENGINEROOM)
run_to_pad(PAD_LEE_005C)
beginloop(0x08)
if_chr_stopped(/*goto*/ 0x2c)
if_stage_flag_eq(STAGEFLAG_ENGINES_DESTROYED, TRUE, /*goto*/ 0x2c)
endloop(0x08)
label(0x2c)
set_ailist(CHR_SELF, AILIST_ELVIS_FOLLOW)
endlist
};
u8 func101f_enable_bridge_skedar[] = {
lock_door(0x41, 0x80)
lock_door(0x42, 0x80)
set_object_flag2(0x41, OBJFLAG2_LOCKEDBACK)
set_object_flag2(0x42, OBJFLAG2_LOCKEDFRONT)
set_object_flag2(0x41, OBJFLAG2_AICANNOTUSE)
set_object_flag2(0x42, OBJFLAG2_AICANNOTUSE)
// Wait until first 4 objectives complete
beginloop(0x04)
if_objective_complete(0, /*goto*/ 0x2c)
reloop(0x04)
label(0x2c)
if_difficulty_lt(DIFF_PA, /*goto*/ 0x2c)
if_objective_complete(1, /*goto*/ 0x2c)
reloop(0x04)
label(0x2c)
if_objective_complete(2, /*goto*/ 0x2c)
reloop(0x04)
label(0x2c)
if_difficulty_lt(DIFF_SA, /*goto*/ 0x2c)
if_objective_complete(3, /*goto*/ 0x2c)
reloop(0x04)
label(0x2c)
unlock_door(0x41, 0x80)
unlock_door(0x42, 0x80)
unset_object_flag2(0x41, OBJFLAG2_LOCKEDBACK)
unset_object_flag2(0x42, OBJFLAG2_LOCKEDFRONT)
unset_object_flag2(0x41, OBJFLAG2_AICANNOTUSE)
unset_object_flag2(0x42, OBJFLAG2_AICANNOTUSE)
enable_chr(0x21)
enable_chr(0x22)
enable_chr(CHR_BRIDGE1)
enable_chr(CHR_BRIDGE2)
enable_chr(CHR_BRIDGE3)
enable_chr(CHR_BRIDGESPAWNER1)
enable_chr(CHR_BRIDGESPAWNER2)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1020_engine_hum_noise[] = {
yield
assign_sound(SFX_81A5, CHANNEL_0)
play_sound_from_object(CHANNEL_0, 0x1b, 1, 2000, 4000)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1021_check_ammo_wasted[] = {
beginloop(0x04)
if_stage_flag_eq(STAGEFLAG_SHIELDS_DISABLED, TRUE, /*goto*/ 0x0d)
chr_toggle_p1p2(CHR_SELF)
if_chr_weapon_equipped(CHR_P1P2, WEAPON_MAULER, /*goto*/ LABEL_65)
endloop(0x04)
// Mauler equipped
beginloop(LABEL_65)
if_stage_flag_eq(STAGEFLAG_SHIELDS_DISABLED, TRUE, /*goto*/ 0x0d)
if_ammo_quantity_lt(CHR_P1P2, AMMOTYPE_PISTOL, 1, /*goto*/ 0x2c)
endloop(LABEL_65)
// Ammo wasted
label(0x2c)
set_stage_flag(STAGEFLAG_AMMO_WASTED)
show_hudmsg(CHR_BOND, L_LEE_049) // "Ammo depleted - consoles can't be destroyed."
beginloop(LABEL_66)
if_stage_flag_eq(STAGEFLAG_SHIELDS_DISABLED, TRUE, /*goto*/ 0x2c)
endloop(LABEL_66)
label(0x2c)
unset_stage_flag(STAGEFLAG_AMMO_WASTED)
// Shields disabled
label(0x0d)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1022_setup_rtracker[] = {
// @bug: The Slayer is not R-tracked
yield
set_object_flag3(OBJ_MAULER1, OBJFLAG3_RTRACKED_BLUE)
set_object_flag3(OBJ_MAULER2, OBJFLAG3_RTRACKED_BLUE)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func040b_init_cass[] = {
set_chr_maxdamage(CHR_SELF, 1)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1024_set_bridge_skedar_invincible[] = {
set_chr_chrflag(CHR_BRIDGE1, CHRCFLAG_INVINCIBLE)
set_chr_chrflag(CHR_BRIDGE2, CHRCFLAG_INVINCIBLE)
set_chr_chrflag(CHR_BRIDGE3, CHRCFLAG_INVINCIBLE)
set_chr_chrflag(CHR_BRIDGE1, CHRCFLAG_UNEXPLODABLE)
set_chr_chrflag(CHR_BRIDGE2, CHRCFLAG_UNEXPLODABLE)
set_chr_chrflag(CHR_BRIDGE3, CHRCFLAG_UNEXPLODABLE)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
/**
* Wait 10 seconds then set a flag on Joanna which enables buddy to warp to her.
*/
u8 unregistered_function1[] = {
restart_timer
beginloop(0x04)
if_timer_gt(600, /*goto*/ 0x2c)
endloop(0x04)
label(0x2c)
set_chr_hiddenflag(CHR_BOND, CHRHFLAG_TRIGGER_BUDDY_WARP)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1423_setup_environment[] = {
yield
configure_environment(0x0000, AIENVCMD_SETAMBIENT, TRUE)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1025_toggle_chrs[] = {
yield
disable_chr(0x0b)
disable_chr(0x0c)
disable_chr(CHR_SUSPENDEDANIM1)
disable_chr(CHR_SUSPENDEDANIM2)
disable_chr(CHR_SUSPENDEDANIM3)
disable_chr(CHR_SUSPENDEDANIM4)
disable_chr(0x11)
disable_chr(0x12)
disable_chr(0x13)
disable_chr(0x14)
disable_chr(0x15)
disable_chr(0x16)
disable_chr(0x17)
disable_chr(0x18)
disable_chr(0x19)
disable_chr(0x1a)
disable_chr(0x1b)
disable_chr(0x1c)
disable_chr(0x1d)
disable_chr(0x1e)
disable_chr(0x1f)
disable_chr(0x20)
disable_chr(0x27)
disable_chr(0x28)
disable_chr(0x29)
disable_chr(0x2a)
disable_chr(0x2b)
disable_chr(0x2c)
disable_chr(0x21)
disable_chr(0x22)
disable_chr(CHR_BRIDGE1)
disable_chr(CHR_BRIDGE2)
disable_chr(CHR_BRIDGE3)
disable_chr(CHR_BRIDGESPAWNER1)
disable_chr(CHR_BRIDGESPAWNER2)
beginloop(0x08)
chr_toggle_p1p2(CHR_SELF)
if_chr_y(CHR_P1P2, 450, OPERATOR_LESS_THAN, /*goto*/ 0x2c)
goto_next(0x06)
label(0x2c)
endloop(0x08)
label(0x06)
enable_chr(0x0b)
yield
enable_chr(0x0c)
yield
enable_chr(CHR_SUSPENDEDANIM1)
yield
enable_chr(CHR_SUSPENDEDANIM2)
yield
enable_chr(CHR_SUSPENDEDANIM3)
yield
enable_chr(CHR_SUSPENDEDANIM4)
yield
enable_chr(0x11)
yield
enable_chr(0x12)
yield
enable_chr(0x13)
yield
enable_chr(0x14)
yield
enable_chr(0x15)
yield
enable_chr(0x16)
yield
enable_chr(0x17)
yield
enable_chr(0x18)
yield
enable_chr(0x19)
yield
enable_chr(0x1a)
yield
enable_chr(0x1b)
yield
enable_chr(0x1c)
yield
enable_chr(0x1d)
yield
enable_chr(0x1e)
yield
enable_chr(0x1f)
yield
enable_chr(0x20)
yield
enable_chr(0x27)
yield
enable_chr(0x28)
yield
enable_chr(0x29)
yield
enable_chr(0x2a)
yield
enable_chr(0x2b)
yield
enable_chr(0x2c)
yield
set_ailist(CHR_MAIAN1, AILIST_CLOAK_AND_REMOVE)
set_ailist(CHR_MAIAN2, AILIST_CLOAK_AND_REMOVE)
set_ailist(0x07, AILIST_CLOAK_AND_REMOVE)
set_ailist(0x08, AILIST_CLOAK_AND_REMOVE)
set_ailist(0x09, AILIST_CLOAK_AND_REMOVE)
set_ailist(0x0a, AILIST_CLOAK_AND_REMOVE)
rebuild_teams
rebuild_squadrons
beginloop(0x09)
chr_toggle_p1p2(CHR_SELF)
if_chr_y(CHR_P1P2, 550, OPERATOR_LESS_THAN, /*goto*/ 0x2c)
goto_next(0x06)
label(0x2c)
endloop(0x09)
label(0x06)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func041f_cloak_and_remove[] = {
set_shotlist(AILIST_CLOAK_AND_REMOVE)
set_chr_cloaked(CHR_SELF, TRUE, FALSE)
restart_timer
beginloop(0x04)
if_timer_gt(120, /*goto*/ 0x2c)
endloop(0x04)
label(0x2c)
remove_chr(CHR_SELF)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1026_hide_necklace[] = {
yield
if_difficulty_lt(DIFF_PA, /*goto*/ 0x2c)
set_ailist(CHR_SELF, GAILIST_IDLE)
// A and SA
label(0x2c)
disable_object(OBJ_NECKLACE)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
#if VERSION >= VERSION_NTSC_1_0
u8 func0427_set_cloaked[] = {
stop_chr
set_chr_cloaked(CHR_SELF, TRUE, TRUE)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func0428_set_uncloaked[] = {
stop_chr
set_chr_cloaked(CHR_SELF, FALSE, TRUE)
set_ailist(CHR_SELF, AILIST_ELVIS_FOLLOW)
endlist
};
#endif
struct ailist ailists[] = {
{ func1400_setup_counterop, 0x1400 },
{ func1001_objectives_failed_msg, 0x1001 },
{ func1002_hangar_shuttle, 0x1002 },
{ func1003_intro, 0x1003 },
{ func1004_check_hangar_doors_opened, 0x1004 },
{ func1005_check_elvis_dead, 0x1005 },
{ func1006_wake_slayer_skedar, 0x1006 },
{ func1007_check_entered_slayer_area, 0x1007 },
{ func1008_hangar_lifts, 0x1008 },
{ func1009_keep_door_open_in_intro, 0x1009 },
{ func100a_check_hangar_kills_done, 0x100a },
{ func100b_msg_getshieldsdown, 0x100b },
{ func100c_engineroom, 0x100c },
{ func100d_prebridgelift, 0x100d },
{ func100e_bridgelift, 0x100e },
{ func100f_bridge_entry, 0x100f },
{ func1010_check_bridge_captured, 0x1010 },
{ func1011_check_end_level, 0x1011 },
{ func1012_update_elvis_target_chr, 0x1012 },
{ func1013_msg_gottogetshieldsdown, 0x1013 },
{ func1014_msg_hangarbaydoors, 0x1014 },
{ func1015_msg_starmaps, 0x1015 },
{ func1016_msg_ifwecontrolthebridge, 0x1016 },
{ func1017_pa_skedar_alertness, 0x1017 },
{ func1018_place_elvis_in_hangar, 0x1018 },
{ func1002_hangar_shuttle, 0x1019 },
{ func1019_check_shields_lowered, 0x1019 },
{ func101a_kill_maian, 0x101a },
{ func141b_setup_lifts, 0x141b },
{ func101c_lift_door_sounds, 0x101c },
{ func101d_unlock_doors, 0x101d },
{ func101e_bridge_music, 0x101e },
{ func101f_enable_bridge_skedar, 0x101f },
{ func1020_engine_hum_noise, 0x1020 },
{ func1021_check_ammo_wasted, 0x1021 },
{ func1022_setup_rtracker, 0x1022 },
{ func1423_setup_environment, 0x1423 },
{ func1024_set_bridge_skedar_invincible, 0x1024 },
{ func1025_toggle_chrs, 0x1025 },
{ func1026_hide_necklace, 0x1026 },
{ func1003_intro, 0x0c00 },
{ func0c01_outro, 0x0c01 },
{ func0c01_outro, 0x0426 },
{ func040f_init_skedar, 0x040f },
{ func0410_wake_suspendedanim_skedar, 0x0410 },
{ func040d_elvis_wait_for_hangar_entry, 0x040d },
{ func040e_elvis_give_ar34, 0x040e },
{ func0409_elvis_follow, 0x0409 },
{ func040a_elvis_go_to_hangar_lift, 0x040a },
{ func040b_init_cass, 0x040b },
{ func040c_elvis_run_from_engineroom, 0x040c },
{ func0401_start_path00, 0x0401 },
{ func0402_start_path01, 0x0402 },
{ func0403_start_path02, 0x0403 },
{ func0404_start_path03, 0x0404 },
{ func0405_start_path04, 0x0405 },
{ func0406_start_path05, 0x0406 },
{ func0407_init_knifeable_skedar, 0x0407 },
{ func0408_knifeable_skedar, 0x0408 },
{ func0412_hangarspawner, 0x0412 },
{ func0413_init_hangarclone, 0x0413 },
{ func0414_hangarclone, 0x0414 },
{ func0415_bridgespawner, 0x0415 },
{ func0416_init_bridgeclone, 0x0416 },
{ func0417_init_spawner_reveal, 0x0417 },
{ func0418_init_hangar_maian, 0x0418 },
{ func0419_hangar_maian, 0x0419 },
{ func0415_bridgespawner, 0x0415 },
{ func0416_init_bridgeclone, 0x0416 },
{ func0417_init_spawner_reveal, 0x0417 },
{ func041a_bridgeclone, 0x041a },
{ func041b_elvis_at_bridge, 0x041b },
{ func041c_elvis_outside_prebridgelift, 0x041c },
{ func041d_init_elvis_outside_prebridgelift, 0x041d },
{ func041f_cloak_and_remove, 0x041f },
{ func041e_init_bridge1and2, 0x041e },
{ func0420_init_bridge3, 0x0420 },
{ func0421_bridge_skedar, 0x0421 },
{ func0422_cass, 0x0422 },
{ func0423_shy_skedar, 0x0423 },
{ func0423_shy_skedar_wait, 0x0424 },
{ func0425_init_shy_skedar, 0x0425 },
#if VERSION >= VERSION_NTSC_1_0
{ func0427_set_cloaked, 0x0427 },
{ func0428_set_uncloaked, 0x0428 },
#endif
{ NULL, 0 },
};
struct path paths[] = {
{ path00, 0, 0 },
{ path01, 1, 0 },
{ path02, 2, 0 },
{ path03, 3, 0 },
{ path04, 4, 0 },
{ path05, 5, 0 },
{ NULL, 0, 0 },
};