mirror of
https://gitlab.com/ryandwyer/perfect-dark
synced 2026-06-19 07:17:00 -04:00
3972 lines
179 KiB
C
3972 lines
179 KiB
C
//
|
|
// Escape
|
|
//
|
|
|
|
#include "stagesetup.h"
|
|
|
|
// Characters
|
|
#define CHR_JONATHAN 0x21
|
|
#define CHR_ELVIS 0x22
|
|
|
|
// Objects
|
|
#define OBJ_HOVERBED 0x00 // with Elvis on it
|
|
#define OBJ_MEDPACK_BOND 0x01
|
|
#define OBJ_TERMINAL1 0x03
|
|
#define OBJ_TERMINAL2 0x04
|
|
#define OBJ_WALLMINE 0x02
|
|
#define OBJ_HOVERBED_EMPTY 0x11
|
|
#define OBJ_MEDPACK_SWITCH 0x14
|
|
#define OBJ_UFO1 0x1f
|
|
#define OBJ_UFO2 0x22
|
|
#define OBJ_MEDPACK_COOP 0x20
|
|
#define OBJ_WALLOBJECT 0x21
|
|
#define OBJ_MEDPACK_GLASS 0x2a
|
|
#define OBJ_HOVERBIKE 0x35
|
|
#define OBJ_WALLDOOR 0x38
|
|
#define OBJ_FALCON2SCOPE1 0x39
|
|
#define OBJ_FALCON2SCOPE2 0x3a
|
|
#define OBJ_REMOTEMINES 0x3b
|
|
|
|
// Stage flags
|
|
#define STAGEFLAG_INTRO_DONE 0x00000001
|
|
#define STAGEFLAG_TRIGGER_MEDPACK_FINISH 0x00000002
|
|
#define STAGEFLAG_JON_SAID_MAINT_HATCH 0x00000004
|
|
#define STAGEFLAG_TRIGGER_JETBIKE_MESSAGE 0x00000008
|
|
#define STAGEFLAG_UFO_LEAVING 0x00000010
|
|
#define STAGEFLAG_GAS_ON 0x00000020
|
|
#define STAGEFLAG_JON_SHOT_WHILE_PLANTING 0x00000040
|
|
#define STAGEFLAG_MEDPACK_SWITCH_DESTROYED 0x00000080
|
|
#define STAGEFLAG_COLLECTED_MEDPACK 0x00000100
|
|
#define STAGEFLAG_00000200 0x00000200 // never set
|
|
#define STAGEFLAG_MET_JON 0x00000400
|
|
#define STAGEFLAG_ELVIS_REVIVED 0x00000800
|
|
#define STAGEFLAG_ELVIS_DEAD 0x00001000
|
|
#define STAGEFLAG_ENTERED_HANGAR 0x00002000
|
|
#define STAGEFLAG_ESCAPED 0x00004000
|
|
#define STAGEFLAG_ELVIS_STASHED 0x00008000
|
|
#define STAGEFLAG_JON_ENTERED_MINE_ROOM 0x00010000
|
|
#define STAGEFLAG_JON_PLANTING_EXPLOSIVES 0x00020000
|
|
#define STAGEFLAG_JON_FINISHED_EXPLOSIVES 0x00040000
|
|
#define STAGEFLAG_JON_DEAD 0x00080000
|
|
#define STAGEFLAG_WALL_EXPLODED 0x00100000
|
|
#define STAGEFLAG_HANGAR_TERMINAL_DESTROYED 0x00200000
|
|
#define STAGEFLAG_INNER_DOOR_OPENING 0x00400000
|
|
#define STAGEFLAG_OUTER_DOOR_OPENING 0x00800000
|
|
#define STAGEFLAG_STARTED_OUTRO 0x01000000
|
|
#define STAGEFLAG_JON_WAITING_AT_UFO 0x02000000
|
|
#define STAGEFLAG_HANGAR_CONVERSATION_FINISHED 0x04000000
|
|
#define STAGEFLAG_HANGAR_X_MUSIC_STARTED 0x08000000
|
|
#define STAGEFLAG_JO_DOING_TERMINALS 0x10000000
|
|
#define STAGEFLAG_JO_ESCAPE_STARTED 0x20000000
|
|
#define STAGEFLAG_MEDPACK_STARTED 0x40000000
|
|
#define STAGEFLAG_BOTH_HANGAR_DOORS_OPEN 0x80000000
|
|
|
|
// AI Lists
|
|
#define AILIST_GAS_DAMAGE 0x0401
|
|
#define AILIST_JONATHAN_WAITING_FOR_MEETUP 0x0402
|
|
#define AILIST_INIT_JONATHAN 0x0403
|
|
#define AILIST_JONATHAN_FOLLOWING_AND_MINE 0x0404
|
|
#define AILIST_JONATHAN_SHOT_WHILE_PLANTING 0x0405
|
|
#define AILIST_SPAWNGROUP1_GUARD 0x0407
|
|
#define AILIST_SPAWNGROUP2_GUARD 0x0408
|
|
#define AILIST_SPAWNGROUP3_GUARD 0x0409
|
|
#define AILIST_SPAWNGROUP4_GUARD 0x040a
|
|
#define AILIST_ELVIS_FOLLOW 0x040b
|
|
#define AILIST_HIDDEN_GUARDTYPE1 0x040c
|
|
#define AILIST_HIDDEN_GUARDTYPE2 0x040d
|
|
#define AILIST_HIDDEN_BIOTECH 0x040e
|
|
#define AILIST_INIT_ELVIS 0x0412
|
|
#define AILIST_JONATHAN_HANGAR 0x0413
|
|
#define AILIST_OUTRO 0x0414
|
|
#define AILIST_UFO_EXIT 0x0415
|
|
#define AILIST_SPAWN_DURING_FOLLOW 0x0416
|
|
#define AILIST_INIT_FOLLOWER_CLONE 0x0417
|
|
#define AILIST_FOLLOWER_CLONE 0x0418
|
|
#define AILIST_INIT_BIOTECH 0x0419
|
|
#define AILIST_INIT_SUPERDRAGON_GUARD 0x041a
|
|
#define AILIST_JONATHAN_AFTER_TERMINALS 0x041b
|
|
#define AILIST_ELVIS_GO_TO_UFO 0x041c
|
|
|
|
// Other
|
|
#define SPAWNGROUP1 0x09
|
|
#define SPAWNGROUP2 0x0a
|
|
#define SPAWNGROUP3 0x0b
|
|
#define SPAWNGROUP4 0x0d
|
|
|
|
extern s32 intro[];
|
|
extern u32 props[];
|
|
extern struct path paths[];
|
|
extern struct ailist ailists[];
|
|
|
|
struct stagesetup setup = {
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
intro,
|
|
props,
|
|
paths,
|
|
ailists,
|
|
NULL,
|
|
};
|
|
|
|
u32 props[] = {
|
|
briefing(BRIEFINGTYPE_LOCATION, L_TRA_001)
|
|
briefing(BRIEFINGTYPE_TEXT_PA, L_TRA_000)
|
|
briefing(BRIEFINGTYPE_TEXT_SA, L_TRA_002)
|
|
briefing(BRIEFINGTYPE_TEXT_A, L_TRA_003)
|
|
|
|
beginobjective(0, L_TRA_009, (DIFFBIT_PA | DIFFBIT_PD)) // "Locate alien tech medpack"
|
|
complete_flags(STAGEFLAG_COLLECTED_MEDPACK)
|
|
fail_flags(STAGEFLAG_00000200)
|
|
fail_flags(STAGEFLAG_MEDPACK_SWITCH_DESTROYED)
|
|
endobjective
|
|
|
|
beginobjective(1, L_TRA_010, (DIFFBIT_A | DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD)) // "Rendezvous with CI spy"
|
|
complete_flags(STAGEFLAG_MET_JON)
|
|
fail_flags(STAGEFLAG_JON_DEAD)
|
|
endobjective
|
|
|
|
beginobjective(2, L_TRA_012, (DIFFBIT_A | DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD)) // "Locate secret hangar"
|
|
complete_flags(STAGEFLAG_ENTERED_HANGAR)
|
|
endobjective
|
|
|
|
beginobjective(3, L_TRA_011, (DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD)) // "Revive Maian Bodyguard"
|
|
complete_flags(STAGEFLAG_ELVIS_REVIVED)
|
|
endobjective
|
|
|
|
beginobjective(4, L_TRA_013, (DIFFBIT_A | DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD)) // "Escape from Area 51"
|
|
complete_flags(STAGEFLAG_ESCAPED)
|
|
fail_flags(STAGEFLAG_HANGAR_TERMINAL_DESTROYED)
|
|
fail_flags(STAGEFLAG_ELVIS_DEAD)
|
|
endobjective
|
|
|
|
chr(SPAWNFLAG_ANTINONINTERACTABLE, 0x23, PAD_TRA_03BE, BODY_BIOTECH, HEAD_DUNCAN2, GAILIST_IDLE, -1, -1, 1000, 100, CHRFLAG0_CAN_RETREAT | CHRFLAG0_SURPRISABLE | CHRFLAG0_FORCESAFETYCHECKS | CHRFLAG0_HEAR_REQUIRE_LOS, 0, TEAM_ENEMY, SQUADRON_0E, -1, 0, 0, 0, 0, 0)
|
|
chr(SPAWNFLAG_ANTINONINTERACTABLE, 0x24, PAD_TRA_012E, BODY_BIOTECH, HEAD_JAMIE, GAILIST_IDLE, -1, -1, 1000, 100, CHRFLAG0_FORCESAFETYCHECKS | CHRFLAG0_00008000 | CHRFLAG0_HEAR_REQUIRE_LOS, 0, TEAM_ENEMY, SQUADRON_0E, -1, 0, 0, 0, 0, 0)
|
|
chr(SPAWNFLAG_BASICGUARD, 0x00, PAD_TRA_03E0, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_INIT_SUPERDRAGON_GUARD, -1, -1, 1000, 100, CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_01, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x0000, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_SUPERDRAGON)
|
|
chr(SPAWNFLAG_BASICGUARD, 0x01, PAD_TRA_03E1, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_INIT_SUPERDRAGON_GUARD, -1, -1, 1000, 100, CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_01, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x0001, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_SUPERDRAGON)
|
|
chr(SPAWNFLAG_BASICGUARD, 0x02, PAD_TRA_03E2, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_INIT_SUPERDRAGON_GUARD, -1, -1, 1000, 100, CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_01, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x0002, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_SUPERDRAGON)
|
|
chr(SPAWNFLAG_BASICGUARD, 0x03, PAD_TRA_03DF, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_INIT_SUPERDRAGON_GUARD, -1, -1, 1000, 100, CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_02, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x0003, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_SUPERDRAGON)
|
|
chr(SPAWNFLAG_BASICGUARD, 0x04, PAD_TRA_03E3, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_INIT_SUPERDRAGON_GUARD, -1, -1, 1000, 100, CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_02, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x0004, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_SUPERDRAGON)
|
|
chr(SPAWNFLAG_BASICGUARD, 0x05, PAD_TRA_03E4, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_INIT_SUPERDRAGON_GUARD, -1, -1, 1000, 100, CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_03, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x0005, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_SUPERDRAGON)
|
|
chr(SPAWNFLAG_BASICGUARD, 0x06, PAD_TRA_03E5, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_INIT_SUPERDRAGON_GUARD, -1, -1, 1000, 100, CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_03, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x0006, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_SUPERDRAGON)
|
|
chr(SPAWNFLAG_BASICGUARD, 0x07, PAD_TRA_03E6, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_INIT_SUPERDRAGON_GUARD, -1, -1, 1000, 100, CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_04, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x0007, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_SUPERDRAGON)
|
|
chr(SPAWNFLAG_BASICGUARD, 0x08, PAD_TRA_03E7, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_INIT_SUPERDRAGON_GUARD, -1, -1, 1000, 100, CHRFLAG0_AIVSAI | CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_04, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x0008, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_SUPERDRAGON)
|
|
chr(SPAWNFLAG_ONLYONSA | SPAWNFLAG_ONLYONPA | SPAWNFLAG_BASICGUARD, 0x09, PAD_TRA_03E9, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_SPAWN_DURING_FOLLOW, -1, -1, 1000, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_05, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x0009, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_SUPERDRAGON)
|
|
chr(SPAWNFLAG_ONLYONSA | SPAWNFLAG_ONLYONPA | SPAWNFLAG_BASICGUARD, 0x0a, PAD_TRA_03EA, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_SPAWN_DURING_FOLLOW, -1, -1, 1000, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_05, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x000a, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_SUPERDRAGON)
|
|
chr(SPAWNFLAG_ONLYONSA | SPAWNFLAG_ONLYONPA | SPAWNFLAG_BASICGUARD, 0x0b, PAD_TRA_03EB, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_SPAWN_DURING_FOLLOW, -1, -1, 1000, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_05, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x000b, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_SUPERDRAGON)
|
|
chr(SPAWNFLAG_ONLYONSA | SPAWNFLAG_ONLYONPA | SPAWNFLAG_BASICGUARD, 0x0c, PAD_TRA_03EC, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_SPAWN_DURING_FOLLOW, -1, -1, 1000, 100, CHRFLAG0_SKIPSAFETYCHECKS | CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_05, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x000c, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_SUPERDRAGON)
|
|
chr(SPAWNFLAG_BASICGUARD, 0x0d, PAD_TRA_03E6, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_HIDDEN_GUARDTYPE1, -1, -1, 1000, 100, CHRFLAG0_AIVSAI | CHRFLAG0_HOLD_POSITION | CHRFLAG0_CAN_HEARSPAWN | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_07, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x000d, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_SUPERDRAGON)
|
|
chr(SPAWNFLAG_BASICGUARD, 0x0e, PAD_TRA_03E5, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_HIDDEN_GUARDTYPE1, -1, -1, 1000, 100, CHRFLAG0_AIVSAI | CHRFLAG0_HOLD_POSITION | CHRFLAG0_CAN_HEARSPAWN | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_07, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x000e, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_SUPERDRAGON)
|
|
chr(SPAWNFLAG_ONLYONSA | SPAWNFLAG_ONLYONPA | SPAWNFLAG_BASICGUARD, 0x0f, PAD_TRA_03FA, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_HIDDEN_GUARDTYPE1, -1, -1, 1000, 100, CHRFLAG0_AIVSAI | CHRFLAG0_HOLD_POSITION | CHRFLAG0_CAN_HEARSPAWN | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_07, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x000f, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_SUPERDRAGON)
|
|
#if VERSION < VERSION_NTSC_1_0
|
|
// Same chr as above but only appears on Agent, and at a different pad
|
|
chr(SPAWNFLAG_ONLYONA | SPAWNFLAG_BASICGUARD, 0x0f, PAD_TRA_0153, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_HIDDEN_GUARDTYPE1, -1, -1, 1000, 100, CHRFLAG0_AIVSAI | CHRFLAG0_HOLD_POSITION | CHRFLAG0_CAN_HEARSPAWN | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_07, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x000f, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_SUPERDRAGON)
|
|
#endif
|
|
chr(SPAWNFLAG_BASICGUARD, 0x10, PAD_TRA_03F1, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_HIDDEN_GUARDTYPE1, -1, -1, 1, 8, CHRFLAG0_AIVSAI | CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, CHRFLAG1_PREWARNED, TEAM_ENEMY, SQUADRON_08, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x0010, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_SUPERDRAGON)
|
|
chr(SPAWNFLAG_BASICGUARD, 0x11, PAD_TRA_03F2, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_HIDDEN_GUARDTYPE1, -1, -1, 1, 8, CHRFLAG0_AIVSAI | CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, CHRFLAG1_PREWARNED, TEAM_ENEMY, SQUADRON_08, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x0011, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_SUPERDRAGON)
|
|
chr(SPAWNFLAG_BASICGUARD, 0x12, PAD_TRA_03F3, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_HIDDEN_GUARDTYPE1, -1, -1, 1, 8, CHRFLAG0_AIVSAI | CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, CHRFLAG1_PREWARNED, TEAM_ENEMY, SQUADRON_08, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x0012, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_SUPERDRAGON)
|
|
chr(SPAWNFLAG_BASICGUARD, 0x13, PAD_TRA_03F4, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_HIDDEN_GUARDTYPE1, -1, -1, 1, 8, CHRFLAG0_AIVSAI | CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, CHRFLAG1_PREWARNED, TEAM_ENEMY, SQUADRON_08, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x0013, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_SUPERDRAGON)
|
|
chr(SPAWNFLAG_BASICGUARD, 0x14, PAD_TRA_016A, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_HIDDEN_GUARDTYPE1, -1, -1, 1000, 100, CHRFLAG0_AIVSAI | CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0C, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x0014, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_SUPERDRAGON)
|
|
chr(SPAWNFLAG_BASICGUARD, 0x15, PAD_TRA_03F7, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_HIDDEN_GUARDTYPE1, -1, -1, 1000, 100, CHRFLAG0_AIVSAI | CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0C, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x0015, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_SUPERDRAGON)
|
|
chr(SPAWNFLAG_BASICGUARD, 0x16, PAD_TRA_03F8, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_HIDDEN_GUARDTYPE1, -1, -1, 1000, 100, CHRFLAG0_AIVSAI | CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0C, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x0016, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_SUPERDRAGON)
|
|
chr(SPAWNFLAG_ANTINONINTERACTABLE | SPAWNFLAG_BLUESIGHT, 0x21, PAD_TRA_03F9, BODY_A51AIRMAN, HEAD_JONATHAN, AILIST_INIT_JONATHAN, -1, -1, 1000, 100, CHRFLAG0_HOLD_POSITION | CHRFLAG0_COVER_TYPE2, CHRFLAG1_AIVSAI_ADVANTAGED | CHRFLAG1_PUNCHHARDER, TEAM_ENEMY, SQUADRON_03, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRDY357, 0x0021, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_DY357MAGNUM)
|
|
chr(SPAWNFLAG_ANTINONINTERACTABLE | SPAWNFLAG_BLUESIGHT, 0x22, PAD_TRA_010A, BODY_ELVIS1, HEAD_ELVIS, GAILIST_IDLE, -1, -1, 1000, 100, CHRFLAG0_HOLD_POSITION | CHRFLAG0_CANLOSEGUN, 0, TEAM_ALLY, SQUADRON_03, -1, 0, 0, 0, 0, 0)
|
|
chr(0, 0x17, PAD_TRA_0119, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_HIDDEN_GUARDTYPE2, -1, -1, 1000, 100, CHRFLAG0_AIVSAI | CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0D, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x0017, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_SUPERDRAGON)
|
|
chr(0, 0x18, PAD_TRA_0111, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_HIDDEN_GUARDTYPE2, -1, -1, 1000, 100, CHRFLAG0_AIVSAI | CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0D, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x0018, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_SUPERDRAGON)
|
|
chr(0, 0x19, PAD_TRA_010C, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_HIDDEN_GUARDTYPE2, -1, -1, 1000, 100, CHRFLAG0_AIVSAI | CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0D, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x0019, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_SUPERDRAGON)
|
|
chr(0, 0x1a, PAD_TRA_00ED, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_HIDDEN_GUARDTYPE2, -1, -1, 1000, 100, CHRFLAG0_AIVSAI | CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0D, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x001a, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_SUPERDRAGON)
|
|
chr(SPAWNFLAG_BASICGUARD, 0x1b, PAD_TRA_00E1, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_HIDDEN_GUARDTYPE2, -1, -1, 1000, 100, CHRFLAG0_AIVSAI | CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0E, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x001b, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_SUPERDRAGON)
|
|
chr(SPAWNFLAG_BASICGUARD, 0x1c, PAD_TRA_00DB, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_HIDDEN_GUARDTYPE2, -1, -1, 1000, 100, CHRFLAG0_AIVSAI | CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0E, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x001c, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_SUPERDRAGON)
|
|
chr(SPAWNFLAG_BASICGUARD, 0x1d, PAD_TRA_00B7, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_HIDDEN_GUARDTYPE2, -1, -1, 1000, 100, CHRFLAG0_AIVSAI | CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0E, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x001d, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_SUPERDRAGON)
|
|
chr(SPAWNFLAG_BASICGUARD, 0x1e, PAD_TRA_00A8, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_HIDDEN_GUARDTYPE2, -1, -1, 1000, 100, CHRFLAG0_AIVSAI | CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0E, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x001e, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_SUPERDRAGON)
|
|
chr(SPAWNFLAG_BASICGUARD, 0x1f, PAD_TRA_00A1, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_HIDDEN_GUARDTYPE2, -1, -1, 1000, 100, CHRFLAG0_AIVSAI | CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0F, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x001f, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_SUPERDRAGON)
|
|
chr(SPAWNFLAG_BASICGUARD, 0x20, PAD_TRA_00A0, BODY_AREA51GUARD, HEAD_RANDOM, AILIST_HIDDEN_GUARDTYPE2, -1, -1, 1000, 100, CHRFLAG0_AIVSAI | CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0F, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x0020, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_SUPERDRAGON)
|
|
chr(SPAWNFLAG_BASICGUARD, 0x25, PAD_TRA_013A, BODY_BIOTECH, HEAD_BIOTECH, AILIST_HIDDEN_BIOTECH, -1, -1, 1000, 100, CHRFLAG0_AIVSAI | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, CHRFLAG1_SEARCHSAMEROOM, TEAM_ENEMY, SQUADRON_00, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRDRUGGUN, 0x0025, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_TRANQUILIZER)
|
|
chr(SPAWNFLAG_BASICGUARD, 0x26, PAD_TRA_013C, BODY_BIOTECH, HEAD_BIOTECH, AILIST_HIDDEN_BIOTECH, -1, -1, 1000, 100, CHRFLAG0_AIVSAI | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, CHRFLAG1_SEARCHSAMEROOM, TEAM_ENEMY, SQUADRON_00, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRDRUGGUN, 0x0026, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_TRANQUILIZER)
|
|
chr(SPAWNFLAG_BASICGUARD, 0x27, PAD_TRA_013A, BODY_BIOTECH, HEAD_BIOTECH, AILIST_HIDDEN_BIOTECH, -1, -1, 1000, 100, CHRFLAG0_AIVSAI | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, CHRFLAG1_SEARCHSAMEROOM, TEAM_ENEMY, SQUADRON_00, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRDRUGGUN, 0x0027, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_TRANQUILIZER)
|
|
chr(SPAWNFLAG_BASICGUARD, 0x28, PAD_TRA_0134, BODY_BIOTECH, HEAD_BIOTECH, AILIST_HIDDEN_BIOTECH, -1, -1, 1000, 100, CHRFLAG0_AIVSAI | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, CHRFLAG1_SEARCHSAMEROOM, TEAM_ENEMY, SQUADRON_00, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRDRUGGUN, 0x0028, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_TRANQUILIZER)
|
|
chr(SPAWNFLAG_BASICGUARD, 0x29, PAD_TRA_0118, BODY_BIOTECH, HEAD_BIOTECH, AILIST_INIT_BIOTECH, -1, -1, 1000, 6, CHRFLAG0_AIVSAI | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, CHRFLAG1_SEARCHSAMEROOM, TEAM_ENEMY, SQUADRON_00, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRDRUGGUN, 0x0029, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_DEACTIVATED, 0, 0, WEAPON_TRANQUILIZER)
|
|
chr(SPAWNFLAG_BASICGUARD, 0x2a, PAD_TRA_0115, BODY_BIOTECH, HEAD_BIOTECH, AILIST_INIT_BIOTECH, -1, -1, 1000, 6, CHRFLAG0_AIVSAI | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, CHRFLAG1_SEARCHSAMEROOM, TEAM_ENEMY, SQUADRON_00, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRDRUGGUN, 0x002a, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_TRANQUILIZER)
|
|
chr(SPAWNFLAG_BASICGUARD, 0x2b, PAD_TRA_03BC, BODY_AREA51GUARD, HEAD_BEAU1, AILIST_HIDDEN_BIOTECH, -1, -1, 1000, 100, CHRFLAG0_AIVSAI | CHRFLAG0_HOLD_POSITION | CHRFLAG0_HEAR_REQUIRE_LOS | CHRFLAG0_CANLOSEGUN, 0, TEAM_ENEMY, SQUADRON_0E, -1, 0, 0, 0, 0, 0)
|
|
weapon(0x0100, MODEL_CHRSUPERDRAGON, 0x002b, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_SUPERDRAGON)
|
|
tag(0x00, 1)
|
|
hover_prop(0x0100, MODEL_HOVERBED, PAD_TRA_03BD, OBJFLAG_00000001 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_AISEETHROUGH, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, OBJFLAG3_PUSHABLE | OBJFLAG3_GRABBABLE | OBJFLAG3_INTERACTABLE | OBJFLAG3_HOVERBEDSHIELD, 1000, 0x00010000)
|
|
tag(0x11, 1)
|
|
hover_prop(0x0100, MODEL_A51TROLLEY, PAD_TRA_0120, OBJFLAG_00000001 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_AISEETHROUGH, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, OBJFLAG3_PUSHABLE | OBJFLAG3_GRABBABLE, 1000, 0x00010000)
|
|
hover_prop(0x0100, MODEL_HOVERBED, PAD_TRA_0122, OBJFLAG_00000001 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_AISEETHROUGH, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, OBJFLAG3_PUSHABLE | OBJFLAG3_GRABBABLE | OBJFLAG3_HOVERBEDSHIELD, 1000, 0x00010000)
|
|
tag(0x35, 1)
|
|
hoverbike(0x0100, MODEL_HOVBIKE, PAD_TRA_03FB, OBJFLAG_00000001 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_AISEETHROUGH, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, OBJFLAG3_PUSHABLE | OBJFLAG3_GRABBABLE | OBJFLAG3_GEOCYL, 1000)
|
|
hover_prop(0x0100, MODEL_HOVERCRATE1, PAD_TRA_011D, OBJFLAG_00000001 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_DEACTIVATED | OBJFLAG_20000000, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, OBJFLAG3_PUSHABLE | OBJFLAG3_GRABBABLE, 1000, 0x02010000)
|
|
tag(0x17, 2)
|
|
tag(0x18, 2)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_027F, OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000040, 0x0000003c, 0x00000000, 0x00000001, 0x00000100)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_TRA_027E, OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000040, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_027D, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000000, 0x0000003c, 0x00000000, 0x00000001, 0x00000100)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_TRA_027C, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
|
|
tag(0x15, 2)
|
|
tag(0x16, 2)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_027A, OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000040, 0x0000003c, 0x00000000, 0x00000001, 0x00000100)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_TRA_027B, OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000040, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_0278, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000000, 0x0000003c, 0x00000000, 0x00000001, 0x00000100)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_TRA_0279, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_0277, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000000, 0x0000003c, 0x00000000, 0x00000001, 0x00000100)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_TRA_0276, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
|
|
tag(0x19, 2)
|
|
tag(0x1a, 2)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_0274, OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000040, 0x0000003c, 0x00000000, 0x00000001, 0x00000100)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_TRA_0275, OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000040, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_0273, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000000, 0x0000003c, 0x00000000, 0x00000001, 0x00000100)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_TRA_0272, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_0270, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000000, 0x0000003c, 0x00000000, 0x00000001, 0x00000100)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_TRA_0271, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_026F, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000000, 0x0000003c, 0x00000000, 0x00000001, 0x00000100)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_TRA_026E, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_026C, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000000, 0x0000003c, 0x00000000, 0x00000001, 0x00000100)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_TRA_026D, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_026B, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000000, 0x0000003c, 0x00000000, 0x00000001, 0x00000100)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_TRA_026A, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
|
|
tag(0x3c, 2)
|
|
tag(0x3d, 2)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_0268, OBJFLAG_DEACTIVATED, OBJFLAG2_LOCKEDFRONT, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000040, 0x0000003c, 0x00000000, 0x00000001, 0x00000100)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_TRA_0269, OBJFLAG_DEACTIVATED, OBJFLAG2_LOCKEDBACK, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000040, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
|
|
tag(0x1b, 2)
|
|
tag(0x1c, 2)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_0266, OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000040, 0x0000003c, 0x00000000, 0x00000001, 0x00000100)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_TRA_0267, OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000040, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
|
|
tag(0x1d, 2)
|
|
tag(0x1e, 2)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_0280, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000040, 0x0000003c, 0x00000000, 0x00000001, 0x00000100)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_TRA_0281, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000040, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_02B7, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000003c, 0x00000000, 0x00000001, 0x00000100)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_TRA_02B8, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_02B9, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000003c, 0x00000000, 0x00000001, 0x00000100)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_TRA_02BA, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_02BB, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000003c, 0x00000000, 0x00000001, 0x00000100)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_TRA_02BC, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
|
|
tag(0x06, 2)
|
|
tag(0x07, 2)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_0283, OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000040, 0x0000003c, 0x00000000, 0x00000001, 0x00000100)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_TRA_0282, OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000040, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_0284, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000000, 0x0000003c, 0x00000000, 0x00000001, 0x00000100)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_TRA_0285, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_028B, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000000, 0x0000003c, 0x00000000, 0x00000001, 0x00000100)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_TRA_028A, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_GL, PAD_TRA_0286, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, DOORFLAG_WINDOWED, DOORTYPE_VERTICAL, 0x00000000, 0x00000078, 0x01f407d0, 0x00000001, 0x00000100)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_0287, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, 0, DOORTYPE_VERTICAL, 0x00000000, 0x00000078, 0x00000000, 0xffffffff, 0x00000000)
|
|
tag(0x33, 2)
|
|
tag(0x34, 2)
|
|
#if VERSION >= VERSION_NTSC_1_0
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_GL, PAD_TRA_0289, OBJFLAG_DEACTIVATED, OBJFLAG2_LOCKEDFRONT, 0, 1000, 0x0000f333, 0x0000f333, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, DOORFLAG_WINDOWED, DOORTYPE_VERTICAL, 0x00000000, 0x00000078, 0x01f407d0, 0x00000001, 0x00000100)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_0288, OBJFLAG_DEACTIVATED, OBJFLAG2_LOCKEDBACK, 0, 1000, 0x0000f333, 0x0000f333, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, 0, DOORTYPE_VERTICAL, 0x00000000, 0x00000078, 0x00000000, 0xffffffff, 0x00000000)
|
|
#else
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_GL, PAD_TRA_0289, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, DOORFLAG_WINDOWED, DOORTYPE_VERTICAL, 0x00000000, 0x00000078, 0x01f407d0, 0x00000001, 0x00000100)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_0288, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, 0, DOORTYPE_VERTICAL, 0x00000000, 0x00000078, 0x00000000, 0xffffffff, 0x00000000)
|
|
#endif
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_TRA_02A4, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x0001aaaa, 0x0001aaaa, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000003c, 0x00000000, 0x00000000, 0x00000100)
|
|
tag(0x32, 1)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_TRA_02A5, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x0001aaaa, 0x0001aaaa, 0x00001999, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000000, 0x0000003c, 0x00000000, 0x00000000, 0x00000300)
|
|
tag(0x0c, 1)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_TRA_02A6, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x0000f333, 0x0001aaaa, 0x0001aaaa, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000040, 0x0000003c, 0x00000000, 0x00000000, 0x00000100)
|
|
tag(0x0b, 1)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_SECRET, PAD_TRA_028E, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000000, 0x0000003c, 0x00000000, 0x00000000, 0x00000100)
|
|
tag(0x0a, 1)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_SECRET, PAD_TRA_02C5, OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000002, 0x0000003c, 0x00000000, 0x00000000, 0x00000100)
|
|
door(0x0100, MODEL_A51_VERT_DOOR_RIGHT, PAD_TRA_0292, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000cccc, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, 0, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000001, 0x00000300)
|
|
door(0x0100, MODEL_A51_VERT_DOOR_LEFT, PAD_TRA_0293, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000cccc, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, 0, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0xffffffff, 0x00000000)
|
|
door(0x0100, MODEL_A51_VERT_DOOR_RIGHT, PAD_TRA_0294, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000cccc, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, 0, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000001, 0x00000300)
|
|
door(0x0100, MODEL_A51_VERT_DOOR_LEFT, PAD_TRA_0295, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000cccc, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, 0, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0xffffffff, 0x00000000)
|
|
tag(0x0d, 1)
|
|
door(0x0100, MODEL_A51_VERT_DOOR_ST, PAD_TRA_02AE, OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000e666, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, DOORFLAG_FLIP, DOORTYPE_SLIDING, 0x00000020, 0x00000384, 0x00000000, 0x00000000, 0x00000300)
|
|
door(0x0100, MODEL_A51_VERT_DOOR_RIGHT, PAD_TRA_0299, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000c000, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, 0, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000001, 0x00000300)
|
|
door(0x0100, MODEL_A51_VERT_DOOR_LEFT, PAD_TRA_0298, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000c000, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, 0, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0xffffffff, 0x00000000)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_GL, PAD_TRA_02A8, OBJFLAG_DEACTIVATED, OBJFLAG2_LOCKEDFRONT, 0, 1000, 0x0000f333, 0x0000f333, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, DOORFLAG_WINDOWED, DOORTYPE_VERTICAL, 0x00000040, 0x00000258, 0x01f407d0, 0x00000001, 0x00000100)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_02A7, OBJFLAG_DEACTIVATED, OBJFLAG2_LOCKEDFRONT, 0, 1000, 0x0000f333, 0x0000f333, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, 0, DOORTYPE_VERTICAL, 0x00000040, 0x00000258, 0x00000000, 0xffffffff, 0x00000000)
|
|
door(0x0100, MODEL_A51_VERT_DOOR_RIGHT, PAD_TRA_029A, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000cccc, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, 0, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000001, 0x00000300)
|
|
door(0x0100, MODEL_A51_VERT_DOOR_LEFT, PAD_TRA_029B, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000cccc, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, 0, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0xffffffff, 0x00000000)
|
|
tag(0x31, 1)
|
|
door(0x0100, MODEL_A51_VERT_DOOR_RIGHT, PAD_TRA_029C, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000c000, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, DOORFLAG_AUTOMATIC, DOORTYPE_SLIDING, 0x00000000, 0x0000003c, 0x00000000, 0x00000001, 0x00000300)
|
|
door(0x0100, MODEL_A51_VERT_DOOR_LEFT, PAD_TRA_029D, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000c000, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_SLIDING, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
|
|
tag(0x30, 1)
|
|
door(0x0100, MODEL_A51_VERT_DOOR_RIGHT, PAD_TRA_029E, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000c000, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, DOORFLAG_AUTOMATIC, DOORTYPE_SLIDING, 0x00000000, 0x0000003c, 0x00000000, 0x00000001, 0x00000300)
|
|
door(0x0100, MODEL_A51_VERT_DOOR_LEFT, PAD_TRA_029F, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000c000, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_SLIDING, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
|
|
tag(0x0e, 2)
|
|
tag(0x0f, 2)
|
|
door(0x0100, MODEL_A51_VERT_DOOR_RIGHT, PAD_TRA_02A1, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, OBJFLAG3_AUTOCUTSCENESOUNDS, 1000, 0x0000cccc, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, 0, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000001, 0x00000300)
|
|
door(0x0100, MODEL_A51_VERT_DOOR_LEFT, PAD_TRA_02A0, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000cccc, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, 0, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0xffffffff, 0x00000000)
|
|
door(0x0100, MODEL_A51_VERT_DOOR_ST, PAD_TRA_028C, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000e666, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, DOORFLAG_FLIP, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000300)
|
|
door(0x0100, MODEL_A51_VERT_DOOR_ST, PAD_TRA_028D, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000e666, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, 0, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000300)
|
|
door(0x0100, MODEL_A51_VERT_DOOR_ST, PAD_TRA_028F, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, 0, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000300)
|
|
tag(0x10, 1)
|
|
door(0x0100, MODEL_A51_VERT_DOOR_ST, PAD_TRA_0290, OBJFLAG_DEACTIVATED, 0, OBJFLAG3_AUTOCUTSCENESOUNDS, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, 0, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000300)
|
|
tag(0x05, 1)
|
|
door(0x0100, MODEL_A51_VERT_DOOR_ST, PAD_TRA_0291, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, 0, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000300)
|
|
tag(0x08, 2)
|
|
tag(0x09, 2)
|
|
door(0x0100, MODEL_A51_VERT_DOOR_ST, PAD_TRA_02A2, OBJFLAG_DEACTIVATED, OBJFLAG2_LOCKEDBACK | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000a666, 0x0000a666, 0x00007fff, 0x00014000, 0x00000666, 0, DOORTYPE_SLIDING, 0x00000004, 0x00000384, 0x00000000, 0x00000001, 0x00000300)
|
|
door(0x0100, MODEL_A51_VERT_DOOR_ST, PAD_TRA_02A3, OBJFLAG_DEACTIVATED, OBJFLAG2_LOCKEDFRONT | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000a666, 0x0000a666, 0x00007fff, 0x00014000, 0x00000666, 0, DOORTYPE_SLIDING, 0x00000004, 0x00000384, 0x00000000, 0xffffffff, 0x00000000)
|
|
stdobject(0x0100, MODEL_A51_CRATE1, PAD_TRA_02E5, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51_CRATE2, PAD_TRA_02E6, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51_CRATE3, PAD_TRA_02E7, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51_CRATE1, PAD_TRA_02E8, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51_CRATE2, PAD_TRA_02E9, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51_CRATE3, PAD_TRA_02EA, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51_CRATE1, PAD_TRA_02EB, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51_CRATE2, PAD_TRA_02EC, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51_CRATE3, PAD_TRA_02ED, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51_CRATE1, PAD_TRA_02EE, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51_CRATE2, PAD_TRA_02EF, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51_CRATE3, PAD_TRA_02F0, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51_CRATE1, PAD_TRA_02F1, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51_CRATE2, PAD_TRA_02F2, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51_CRATE3, PAD_TRA_02F3, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51_CRATE1, PAD_TRA_02F4, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51_CRATE2, PAD_TRA_02F5, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51_CRATE3, PAD_TRA_02F6, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51_CRATE1, PAD_TRA_02F7, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
|
|
tag(0x38, 4)
|
|
tag(0x21, 4)
|
|
blocked_path(2, 0x0173, 0x013f)
|
|
conditional_scenery(1, 2, 3)
|
|
door(0x0100, MODEL_A51_UNEXP2, PAD_TRA_0424, OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_DEACTIVATED, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000 | OBJFLAG2_AICANNOTUSE, 0, 1000, 0x00000000, 0x00010000, 0x03e80000, 0x03e80000, 0x00010000, 0, DOORTYPE_SLIDING, 0x00000080, 0x00000001, 0x00010000, 0x00000000, 0x00000000)
|
|
stdobject(0x0100, MODEL_A51_UNEXP3, PAD_TRA_0425, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51_EXP2, PAD_TRA_0423, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000)
|
|
door(0x0100, MODEL_A51_VERT_DOOR_ST, PAD_TRA_02B3, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000e666, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, DOORFLAG_FLIP, DOORTYPE_SLIDING, 0x00000010, 0x00000384, 0x00000000, 0x00000000, 0x00000300)
|
|
door(0x0100, MODEL_A51_VERT_DOOR_ST, PAD_TRA_02B4, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000e666, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, 0, DOORTYPE_SLIDING, 0x00000010, 0x00000384, 0x00000000, 0x00000000, 0x00000300)
|
|
door(0x0100, MODEL_A51_VERT_DOOR_RIGHT, PAD_TRA_02AF, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000cccc, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, 0, DOORTYPE_SLIDING, 0x00000010, 0x00000384, 0x00000000, 0x00000001, 0x00000300)
|
|
door(0x0100, MODEL_A51_VERT_DOOR_LEFT, PAD_TRA_02B0, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000cccc, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, 0, DOORTYPE_SLIDING, 0x00000010, 0x00000384, 0x00000000, 0xffffffff, 0x00000000)
|
|
#if VERSION >= VERSION_NTSC_1_0
|
|
door(0x0100, MODEL_DOOR_ROLLERTRAIN, PAD_TRA_0321, OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x0000c000, 0x000031c7, 0x000031c7, 0x000002fc, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000002, 0x0000012c, 0x00000000, 0x00000000, 0x00000000)
|
|
door(0x0100, MODEL_DOOR_ROLLERTRAIN, PAD_TRA_0327, OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x0000c000, 0x000031c7, 0x000031c7, 0x000002fc, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000002, 0x0000012c, 0x00000000, 0x00000000, 0x00000000)
|
|
door(0x0100, MODEL_DOOR_ROLLERTRAIN, PAD_TRA_0322, OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x0000c000, 0x000031c7, 0x000031c7, 0x000002fc, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000002, 0x0000012c, 0x00000000, 0x00000000, 0x00000000)
|
|
door(0x0100, MODEL_DOOR_ROLLERTRAIN, PAD_TRA_0328, OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x0000c000, 0x000031c7, 0x000031c7, 0x000002fc, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000002, 0x0000012c, 0x00000000, 0x00000000, 0x00000000)
|
|
#else
|
|
door(0x0100, MODEL_DOOR_ROLLERTRAIN, PAD_TRA_0321, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000c000, 0x000031c7, 0x000031c7, 0x000002fc, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000002, 0x0000012c, 0x00000000, 0x00000000, 0x00000000)
|
|
door(0x0100, MODEL_DOOR_ROLLERTRAIN, PAD_TRA_0327, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000c000, 0x000031c7, 0x000031c7, 0x000002fc, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000002, 0x0000012c, 0x00000000, 0x00000000, 0x00000000)
|
|
#endif
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_02B2, OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000080, 0x0000003c, 0x00000000, 0x00000001, 0x00000100)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_TRA_02B1, OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000080, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_02BD, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000003c, 0x00000000, 0x00000001, 0x00000100)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_TRA_02BE, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_02BF, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000003c, 0x00000000, 0x00000001, 0x00000100)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_TRA_02C0, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_02C1, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000003c, 0x00000000, 0x00000001, 0x00000100)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_TRA_02C2, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_02C3, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000003c, 0x00000000, 0x00000001, 0x00000100)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_TRA_02C4, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
|
|
tag(0x02, 1)
|
|
stdobject(0x0100, MODEL_CHRREMOTEMINE, PAD_TRA_013F, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_BOUNCEIFSHOT | OBJFLAG_01000000, OBJFLAG2_REMOVEWHENDESTROYED | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_INVISIBLE, 0, 1000)
|
|
tag(0x03, 1)
|
|
singlemonitor(0x0100, MODEL_SINISTERSTATION, PAD_TRA_048E, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE, 1000, 3)
|
|
tag(0x04, 1)
|
|
singlemonitor(0x0033, MODEL_SINISTERSTATION, PAD_TRA_03FD, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE, 1000, 3)
|
|
glass(0x0100, MODEL_MEDLABWIN1, PAD_TRA_0436, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH, OBJFLAG2_BULLETPROOF, 0, 1000)
|
|
glass(0x0100, MODEL_MEDLABWIN2, PAD_TRA_0437, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH, OBJFLAG2_BULLETPROOF, 0, 1000)
|
|
glass(0x0100, MODEL_MEDLABWIN2, PAD_TRA_0438, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH, OBJFLAG2_BULLETPROOF, 0, 1000)
|
|
glass(0x0100, MODEL_MEDLABWIN1, PAD_TRA_0439, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH, OBJFLAG2_BULLETPROOF, 0, 1000)
|
|
glass(0x0100, MODEL_MEDLABWIN2, PAD_TRA_043A, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH, OBJFLAG2_BULLETPROOF, 0, 1000)
|
|
glass(0x0100, MODEL_MEDLABWIN2, PAD_TRA_043B, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH, OBJFLAG2_BULLETPROOF, 0, 1000)
|
|
tag(0x1f, 1)
|
|
stdobject(0x0100, MODEL_ELVIS_SAUCER, -1, OBJFLAG_00000001 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_IGNOREROOMCOLOUR | OBJFLAG_INVINCIBLE, 0, 0, 1000)
|
|
tag(0x22, 1)
|
|
stdobject(0x0100, MODEL_ELVIS_SAUCER, -1, OBJFLAG_00000001 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_IGNOREROOMCOLOUR | OBJFLAG_INVINCIBLE, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51TABLE, PAD_TRA_0461, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51TABLE, PAD_TRA_0462, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51TABLE, PAD_TRA_0463, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51TABLE, PAD_TRA_0464, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51TABLE, PAD_TRA_0465, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51TABLE, PAD_TRA_0466, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51TABLE, PAD_TRA_0467, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51TABLE, PAD_TRA_0468, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51TABLE, PAD_TRA_0469, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51TABLE, PAD_TRA_046A, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51TABLE, PAD_TRA_046B, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51TABLE, PAD_TRA_046C, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51TABLE, PAD_TRA_046D, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51TABLE, PAD_TRA_046E, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51TABLE, PAD_TRA_046F, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51TABLE, PAD_TRA_0470, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51TABLE, PAD_TRA_0471, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51TABLE, PAD_TRA_0472, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51TABLE, PAD_TRA_0473, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51TABLE, PAD_TRA_0474, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_DD_CHAIR, PAD_TRA_0476, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_DD_CHAIR, PAD_TRA_0477, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_DD_CHAIR, PAD_TRA_0479, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_DD_CHAIR, PAD_TRA_047A, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_DD_CHAIR, PAD_TRA_047B, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_DD_CHAIR, PAD_TRA_047C, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_DD_CHAIR, PAD_TRA_047D, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_DD_CHAIR, PAD_TRA_047E, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_DD_CHAIR, PAD_TRA_047F, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_DD_CHAIR, PAD_TRA_0480, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_DD_CHAIR, PAD_TRA_0481, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_DD_CHAIR, PAD_TRA_0482, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_DD_CHAIR, PAD_TRA_0483, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_DD_CHAIR, PAD_TRA_0484, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_DD_CHAIR, PAD_TRA_0485, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_DD_CHAIR, PAD_TRA_0486, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_DD_CHAIR, PAD_TRA_0487, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_DD_CHAIR, PAD_TRA_0488, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_DD_CHAIR, PAD_TRA_0489, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51WASTEBIN, PAD_TRA_0491, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51WASTEBIN, PAD_TRA_0492, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51WASTEBIN, PAD_TRA_0493, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51WASTEBIN, PAD_TRA_0494, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51WASTEBIN, PAD_TRA_0495, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51WASTEBIN, PAD_TRA_0496, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51WASTEBIN, PAD_TRA_0497, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51WASTEBIN, PAD_TRA_0498, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51WASTEBIN, PAD_TRA_0499, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51WASTEBIN, PAD_TRA_049A, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51WASTEBIN, PAD_TRA_049B, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51WASTEBIN, PAD_TRA_049C, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51WASTEBIN, PAD_TRA_049D, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51WASTEBIN, PAD_TRA_049E, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51WASTEBIN, PAD_TRA_049F, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51WASTEBIN, PAD_TRA_04A0, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51WASTEBIN, PAD_TRA_04A1, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51WASTEBIN, PAD_TRA_04A2, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51WASTEBIN, PAD_TRA_04A3, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51DIVIDE, PAD_TRA_04A4, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51DIVIDE, PAD_TRA_04A5, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51DIVIDE, PAD_TRA_04A6, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51DIVIDE, PAD_TRA_04A7, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51DIVIDE, PAD_TRA_04A8, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51DIVIDE, PAD_TRA_04A9, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51DIVIDE, PAD_TRA_04AA, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51DIVIDE, PAD_TRA_04AB, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51DIVIDE, PAD_TRA_04AC, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51_CRATE3, PAD_TRA_031A, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
tag(0x23, 7)
|
|
tag(0x24, 7)
|
|
tag(0x25, 7)
|
|
tag(0x26, 7)
|
|
tag(0x27, 7)
|
|
tag(0x28, 7)
|
|
tag(0x29, 7)
|
|
stdobject(0x0100, MODEL_LAB_CONTAINER, PAD_TRA_04B7, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, OBJFLAG3_PUSHABLE | OBJFLAG3_LONGPUSHRANGE, 1000)
|
|
stdobject(0x0100, MODEL_LAB_CONTAINER, PAD_TRA_04B8, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, OBJFLAG3_PUSHABLE | OBJFLAG3_LONGPUSHRANGE, 1000)
|
|
stdobject(0x0100, MODEL_LAB_CONTAINER, PAD_TRA_04B9, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, OBJFLAG3_PUSHABLE | OBJFLAG3_LONGPUSHRANGE, 1000)
|
|
stdobject(0x0100, MODEL_LAB_CONTAINER, PAD_TRA_04BA, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, OBJFLAG3_PUSHABLE | OBJFLAG3_LONGPUSHRANGE, 1000)
|
|
stdobject(0x0100, MODEL_LAB_CONTAINER, PAD_TRA_04BB, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, OBJFLAG3_PUSHABLE | OBJFLAG3_LONGPUSHRANGE, 1000)
|
|
stdobject(0x0100, MODEL_LAB_CONTAINER, PAD_TRA_04BC, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, OBJFLAG3_PUSHABLE | OBJFLAG3_LONGPUSHRANGE, 1000)
|
|
stdobject(0x0100, MODEL_LAB_CONTAINER, PAD_TRA_04BE, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, OBJFLAG3_PUSHABLE | OBJFLAG3_LONGPUSHRANGE, 1000)
|
|
tag(0x2a, 1)
|
|
glass(0x0100, MODEL_MEDLABWIN2, PAD_TRA_043C, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF, 0, 1000)
|
|
tag(0x12, 2)
|
|
tag(0x13, 2)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_GL, PAD_TRA_0264, OBJFLAG_DEACTIVATED, OBJFLAG2_LOCKEDFRONT, 0, 1000, 0x0000f333, 0x0000f333, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, DOORFLAG_WINDOWED, DOORTYPE_VERTICAL, 0x00000040, 0x00000258, 0x01f407d0, 0x00000001, 0x00000100)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_0265, OBJFLAG_DEACTIVATED, OBJFLAG2_LOCKEDBACK, 0, 1000, 0x0000f333, 0x0000f333, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, 0, DOORTYPE_VERTICAL, 0x00000040, 0x00000258, 0x00000000, 0xffffffff, 0x00000000)
|
|
tag(0x14, 1)
|
|
stdobject(0x0100, MODEL_A51DESKENT, PAD_TRA_048A, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOANTI, OBJFLAG3_INTERACTABLE, 1000)
|
|
stdobject(0x0100, MODEL_LAB_CONTAINER, PAD_TRA_048B, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_LAB_CONTAINER, PAD_TRA_048C, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_LAB_CONTAINER, PAD_TRA_048D, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, 0, 0, 1000)
|
|
tag(0x01, 1)
|
|
weapon(0x0100, MODEL_CHRBRIEFCASE, PAD_TRA_037F, OBJFLAG_00000001, 0, 0, WEAPON_AUTOSURGEON)
|
|
rename_object(-1, WEAPON_AUTOSURGEON, L_TRA_020, L_TRA_021, L_TRA_022, L_TRA_023, L_TRA_024) // "Obtain alien medpack."
|
|
tag(0x20, 1)
|
|
weapon(0x0100, MODEL_CHRBRIEFCASE, -1, OBJFLAG_00000001, 0, 0, WEAPON_AUTOSURGEON)
|
|
rename_object(-1, WEAPON_AUTOSURGEON, L_TRA_020, L_TRA_021, L_TRA_022, L_TRA_023, L_TRA_024) // "Obtain alien medpack."
|
|
stdobject(0x0100, MODEL_A51TABLE, PAD_TRA_04D0, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51TABLE, PAD_TRA_04D1, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51TABLE, PAD_TRA_04D2, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51TABLE, PAD_TRA_04D3, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_G5_MAINFRAME, PAD_TRA_04D8, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_G5_MAINFRAME, PAD_TRA_04D9, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_G5_MAINFRAME, PAD_TRA_04DA, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_G5_MAINFRAME, PAD_TRA_04DB, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_G5_MAINFRAME, PAD_TRA_04DC, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_G5_MAINFRAME, PAD_TRA_04DD, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_G5_MAINFRAME, PAD_TRA_04DE, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_G5_MAINFRAME, PAD_TRA_04DF, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_G5_MAINFRAME, PAD_TRA_04E0, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
stdobject(0x0100, MODEL_G5_MAINFRAME, PAD_TRA_04E1, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000)
|
|
tag(0x2b, 1)
|
|
stdobject(0x0100, MODEL_A51TABLE, PAD_TRA_0129, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_INVISIBLE, 0, 1000)
|
|
tag(0x2c, 2)
|
|
tag(0x2d, 2)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_02DC, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x0000028f, 0, DOORTYPE_VERTICAL, 0x00000000, 0x00000258, 0x00000000, 0x00000001, 0x00000400)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_TRA_02DD, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x0000028f, 0, DOORTYPE_VERTICAL, 0x00000000, 0x9ffffff6, 0x00000000, 0xffffffff, 0x00000000)
|
|
tag(0x2e, 2)
|
|
tag(0x2f, 2)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_02DE, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x0000028f, 0, DOORTYPE_VERTICAL, 0x00000000, 0x00000258, 0x00000000, 0x00000001, 0x00000400)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_TRA_02DF, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x0000028f, 0, DOORTYPE_VERTICAL, 0x00000000, 0x9ffffff6, 0x00000000, 0xffffffff, 0x00000000)
|
|
tag(0x46, 2)
|
|
tag(0x3e, 2)
|
|
lift(0x0100, MODEL_CHAMBER, PAD_TRA_033C, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x033c, 0x033d, -1, -1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000071c, 0x0010aaaa, 0x00000000)
|
|
singlemonitor(0x0100, MODEL_MODEMBOX, PAD_TRA_045C, OBJFLAG_00000002 | OBJFLAG_DEACTIVATED, 0, OBJFLAG3_INTERACTABLE, 1000, 18)
|
|
tag(0x48, 2)
|
|
tag(0x40, 2)
|
|
lift(0x0100, MODEL_CHAMBER, PAD_TRA_0340, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x0340, 0x0341, -1, -1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000071c, 0x0010aaaa, 0x00000000)
|
|
singlemonitor(0x0100, MODEL_MODEMBOX, PAD_TRA_0459, OBJFLAG_00000002 | OBJFLAG_DEACTIVATED, 0, OBJFLAG3_INTERACTABLE, 1000, 18)
|
|
tag(0x4a, 2)
|
|
tag(0x42, 2)
|
|
lift(0x0100, MODEL_CHAMBER, PAD_TRA_0344, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x0344, 0x0345, -1, -1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000071c, 0x0010aaaa, 0x00000000)
|
|
singlemonitor(0x0100, MODEL_MODEMBOX, PAD_TRA_045A, OBJFLAG_00000002 | OBJFLAG_DEACTIVATED, 0, OBJFLAG3_INTERACTABLE, 1000, 18)
|
|
tag(0x4c, 2)
|
|
tag(0x44, 2)
|
|
lift(0x0100, MODEL_CHAMBER, PAD_TRA_0348, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x0348, 0x0349, -1, -1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000071c, 0x0010aaaa, 0x00000000)
|
|
singlemonitor(0x0100, MODEL_MODEMBOX, PAD_TRA_045B, OBJFLAG_00000002 | OBJFLAG_DEACTIVATED, 0, OBJFLAG3_INTERACTABLE, 1000, 18)
|
|
tag(0x47, 2)
|
|
tag(0x3f, 2)
|
|
lift(0x0100, MODEL_CHAMBER, PAD_TRA_033F, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x033f, 0x033e, -1, -1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000071c, 0x0010aaaa, 0x00000000)
|
|
singlemonitor(0x0100, MODEL_MODEMBOX, PAD_TRA_045E, OBJFLAG_00000002 | OBJFLAG_DEACTIVATED, 0, OBJFLAG3_INTERACTABLE, 1000, 18)
|
|
tag(0x49, 2)
|
|
tag(0x41, 2)
|
|
lift(0x0100, MODEL_CHAMBER, PAD_TRA_0343, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x0343, 0x0342, -1, -1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000071c, 0x0010aaaa, 0x00000000)
|
|
singlemonitor(0x0100, MODEL_MODEMBOX, PAD_TRA_045F, OBJFLAG_00000002 | OBJFLAG_DEACTIVATED, 0, OBJFLAG3_INTERACTABLE, 1000, 18)
|
|
tag(0x4b, 2)
|
|
tag(0x43, 2)
|
|
lift(0x0100, MODEL_CHAMBER, PAD_TRA_0347, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x0347, 0x0346, -1, -1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000071c, 0x0010aaaa, 0x00000000)
|
|
singlemonitor(0x0100, MODEL_MODEMBOX, PAD_TRA_0460, OBJFLAG_00000002 | OBJFLAG_DEACTIVATED, 0, OBJFLAG3_INTERACTABLE, 1000, 18)
|
|
tag(0x4d, 2)
|
|
tag(0x45, 2)
|
|
lift(0x0100, MODEL_CHAMBER, PAD_TRA_034B, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_AISEETHROUGH, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x034b, 0x034a, -1, -1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000071c, 0x0010aaaa, 0x00000000)
|
|
singlemonitor(0x0100, MODEL_MODEMBOX, PAD_TRA_045D, OBJFLAG_00000002 | OBJFLAG_DEACTIVATED, 0, OBJFLAG3_INTERACTABLE, 1000, 18)
|
|
stdobject(0x0100, MODEL_A51_EXP1, PAD_TRA_0421, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51GRATE, PAD_TRA_0443, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_IGNOREROOMCOLOUR | OBJFLAG_INVINCIBLE, 0, 0, 1000)
|
|
stdobject(0x0100, MODEL_A51GRATE, PAD_TRA_0444, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_IGNOREROOMCOLOUR | OBJFLAG_INVINCIBLE, 0, 0, 1000)
|
|
tag(0x4e, 1)
|
|
lift(0x0100, MODEL_A51_LIFT_THINWALL, PAD_TRA_0336, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x0336, 0x0337, -1, -1, 0x00000001, 0x00000002, 0x00000000, 0x00000000, 0x0000071c, 0x0010aaaa, 0x20000000)
|
|
door(0x0100, MODEL_A51LIFTDOOR, PAD_TRA_02E4, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_AISEETHROUGH, 0, OBJFLAG3_80000000, 1000, 0x0000cccc, 0x00010000, 0x00000888, 0x00000888, 0x00000147, DOORFLAG_FLIP, DOORTYPE_SLIDING, 0x00000000, 0x0000003c, 0x00000000, 0x00000000, 0x00000300)
|
|
door(0x0100, MODEL_A51LIFTDOOR, PAD_TRA_02E3, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_AISEETHROUGH, 0, OBJFLAG3_80000000, 1000, 0x0000cccc, 0x00010000, 0x00000888, 0x00000888, 0x00000147, DOORFLAG_FLIP, DOORTYPE_SLIDING, 0x00000000, 0x0000003c, 0x00000000, 0x00000000, 0x00000300)
|
|
lift_door(-2, -3, 0)
|
|
lift_door(-2, -4, 1)
|
|
stdobject(0x0100, MODEL_A51GRATE, PAD_TRA_0449, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_IGNOREROOMCOLOUR | OBJFLAG_INVINCIBLE, 0, 0, 1000)
|
|
tag(0x4f, 4)
|
|
tag(0x50, 4)
|
|
tag(0x51, 4)
|
|
tag(0x52, 4)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_02AA, OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000080, 0x0000003c, 0x00000000, 0x00000001, 0x00000100)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_TRA_02AB, OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000080, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_TRA_02AC, OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000080, 0x0000003c, 0x00000000, 0x00000001, 0x00000100)
|
|
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_TRA_02AD, OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x0000f333, 0x00085555, 0x00085555, 0x00001999, 0, DOORTYPE_VERTICAL, 0x00000080, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
|
|
#if VERSION >= VERSION_NTSC_1_0
|
|
tag(0x53, 2)
|
|
tag(0x54, 2)
|
|
door(0x0100, MODEL_A51GATE_L, PAD_TRA_02B5, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000cccc, 0x00010000, 0x00000ccc, 0x00014000, 0x00000111, 0, DOORTYPE_SLIDING, 0x00000008, 0x00000384, 0x00000000, 0x00000001, 0x00001800)
|
|
door(0x0100, MODEL_A51GATE_R, PAD_TRA_02B6, OBJFLAG_00000010 | OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000cccc, 0x00010000, 0x00000ccc, 0x00014000, 0x00000111, 0, DOORTYPE_SLIDING, 0x00000008, 0x00000384, 0x00000000, 0xffffffff, 0x00001800)
|
|
#endif
|
|
tag(0x36, 1)
|
|
shield(0x0100, MODEL_CHRSHIELD, 0x0028, OBJFLAG_00000001 | OBJFLAG_ASSIGNEDTOCHR, OBJFLAG2_EXCLUDE_SA | OBJFLAG2_EXCLUDE_PA | OBJFLAG2_EXCLUDE_PD, 0, 1000)
|
|
tag(0x37, 1)
|
|
shield(0x0100, MODEL_CHRSHIELD, PAD_TRA_037F, OBJFLAG_00000001, OBJFLAG2_EXCLUDE_PA | OBJFLAG2_EXCLUDE_PD, 0, 1000)
|
|
tag(0x39, 2)
|
|
tag(0x3a, 2)
|
|
weapon(0x0100, MODEL_CHRFALCON2SCOPE, 0x0023, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_20000000, 0, 0, WEAPON_FALCON2_SCOPE)
|
|
weapon(0x0100, MODEL_CHRFALCON2SCOPE, 0x0024, OBJFLAG_ASSIGNEDTOCHR | OBJFLAG_20000000, 0, 0, WEAPON_FALCON2_SCOPE)
|
|
link_guns(-1, -2)
|
|
tag(0x3b, 1)
|
|
weapon(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_TRA_0567, OBJFLAG_00000001 | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE, OBJFLAG2_IMMUNETOANTI | OBJFLAG2_INVISIBLE, 0, WEAPON_REMOTEMINE)
|
|
pad_effect(0x00000001, 0x00000129)
|
|
endprops
|
|
};
|
|
|
|
s32 intro[] = {
|
|
spawn(PAD_TRA_012F)
|
|
intro_weapon(WEAPON_FALCON2_SCOPE, -1)
|
|
ammo(AMMOTYPE_PISTOL, 100)
|
|
ammo(AMMOTYPE_REMOTE_MINE, 2)
|
|
outfit(OUTFIT_LAB)
|
|
endintro
|
|
};
|
|
|
|
u8 func1400_setup_counterop[] = {
|
|
yield
|
|
set_chr_team(CHR_ANTI, TEAM_ENEMY)
|
|
set_ailist(CHR_SELF, GAILIST_REBUILD_GROUPS)
|
|
endlist
|
|
};
|
|
|
|
u8 func1001_objectives_failed_msg[] = {
|
|
yield
|
|
set_ailist(CHR_SELF, GAILIST_SHOW_OBJ_FAILED_MSG)
|
|
endlist
|
|
};
|
|
|
|
u8 func1022_gas_damage_bond[] = {
|
|
set_target_chr(CHR_BOND)
|
|
set_ailist(CHR_SELF, AILIST_GAS_DAMAGE)
|
|
endlist
|
|
};
|
|
|
|
u8 func1023_gas_damage_coop[] = {
|
|
set_target_chr(CHR_COOP)
|
|
if_chr_death_animation_finished(CHR_TARGET, /*goto*/ 0x32)
|
|
set_ailist(CHR_SELF, AILIST_GAS_DAMAGE)
|
|
|
|
label(0x32)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func0401_gas_damage[] = {
|
|
beginloop(0x12)
|
|
if_stage_flag_eq(STAGEFLAG_INTRO_DONE, TRUE, /*goto*/ 0x32)
|
|
endloop(0x12)
|
|
|
|
label(0x32)
|
|
restart_timer
|
|
|
|
beginloop(0x04)
|
|
if_chr_in_room(CHR_TARGET, 0x00, 0x009a, /*goto*/ 0x06)
|
|
if_chr_in_room(CHR_TARGET, 0x00, 0x0099, /*goto*/ 0x06)
|
|
if_chr_in_room(CHR_TARGET, 0x00, 0x008f, /*goto*/ 0x06)
|
|
if_chr_in_room(CHR_TARGET, 0x00, 0x0090, /*goto*/ 0x06)
|
|
if_chr_in_room(CHR_TARGET, 0x00, 0x0092, /*goto*/ 0x06)
|
|
if_chr_in_room(CHR_TARGET, 0x00, 0x0093, /*goto*/ 0x06)
|
|
if_chr_in_room(CHR_TARGET, 0x00, 0x0094, /*goto*/ 0x06)
|
|
if_chr_in_room(CHR_TARGET, 0x00, 0x0095, /*goto*/ 0x06)
|
|
if_chr_in_room(CHR_TARGET, 0x00, 0x0096, /*goto*/ 0x06)
|
|
if_chr_in_room(CHR_TARGET, 0x00, 0x0097, /*goto*/ 0x06)
|
|
if_chr_in_room(CHR_TARGET, 0x00, 0x0098, /*goto*/ 0x06)
|
|
if_chr_in_room(CHR_TARGET, 0x00, 0x0099, /*goto*/ 0x06)
|
|
if_chr_in_room(CHR_TARGET, 0x00, 0x009a, /*goto*/ 0x06)
|
|
reloop(0x04)
|
|
|
|
label(0x06)
|
|
restart_timer
|
|
|
|
// @bug: Only Jo gets motion blur?
|
|
label(0x08)
|
|
yield
|
|
call_rng
|
|
if_rand_gt(50, /*goto*/ 0x32)
|
|
add_motion_blur(CHR_BOND, 7, TRUE)
|
|
label(0x32)
|
|
if_timer_lt(460, /*goto*/ 0x32)
|
|
restart_timer
|
|
damage_chr_by_amount(CHR_TARGET, 2, 2)
|
|
label(0x32)
|
|
if_chr_in_room(CHR_TARGET, 0x00, 0x009a, /*goto*/ 0x06)
|
|
if_chr_in_room(CHR_TARGET, 0x00, 0x0099, /*goto*/ 0x06)
|
|
if_chr_in_room(CHR_TARGET, 0x00, 0x008f, /*goto*/ 0x06)
|
|
if_chr_in_room(CHR_TARGET, 0x00, 0x0090, /*goto*/ 0x06)
|
|
if_chr_in_room(CHR_TARGET, 0x00, 0x0092, /*goto*/ 0x06)
|
|
if_chr_in_room(CHR_TARGET, 0x00, 0x0093, /*goto*/ 0x06)
|
|
if_chr_in_room(CHR_TARGET, 0x00, 0x0094, /*goto*/ 0x06)
|
|
if_chr_in_room(CHR_TARGET, 0x00, 0x0095, /*goto*/ 0x06)
|
|
if_chr_in_room(CHR_TARGET, 0x00, 0x0096, /*goto*/ 0x06)
|
|
if_chr_in_room(CHR_TARGET, 0x00, 0x0097, /*goto*/ 0x06)
|
|
if_chr_in_room(CHR_TARGET, 0x00, 0x0098, /*goto*/ 0x06)
|
|
if_chr_in_room(CHR_TARGET, 0x00, 0x0099, /*goto*/ 0x06)
|
|
if_chr_in_room(CHR_TARGET, 0x00, 0x009a, /*goto*/ 0x06)
|
|
endloop(0x04)
|
|
|
|
label(0x06)
|
|
goto_first(0x08)
|
|
|
|
label(0x0d)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func1004_jon_msgs_gravedanger[] = {
|
|
beginloop(0x0d)
|
|
if_stage_flag_eq(STAGEFLAG_INTRO_DONE, TRUE, /*goto*/ 0x32)
|
|
endloop(0x0d)
|
|
|
|
label(0x32)
|
|
restart_timer
|
|
|
|
beginloop(0x04)
|
|
if_timer_gt(120, /*goto*/ 0x06)
|
|
endloop(0x04)
|
|
|
|
label(0x06)
|
|
restart_timer
|
|
#if VERSION >= VERSION_NTSC_1_0
|
|
speak(CHR_BOND, L_TRA_014, SFX_814F, CHANNEL_4, COLOR_03_RED) // "Joanna - this is Jonathan. You're in grave danger."
|
|
#else
|
|
speak(CHR_BOND, L_TRA_014, SFX_814C, CHANNEL_4, COLOR_03_RED) // "Joanna - this is Jonathan. You're in grave danger."
|
|
#endif
|
|
|
|
beginloop(0x08)
|
|
if_timer_gt(240, /*goto*/ 0x06)
|
|
endloop(0x08)
|
|
|
|
label(0x06)
|
|
restart_timer
|
|
speak(CHR_BOND, L_TRA_015, SFX_8150, CHANNEL_4, COLOR_03_RED) // "They've flooded the area with nerve gas."
|
|
|
|
beginloop(0x09)
|
|
if_timer_gt(240, /*goto*/ 0x06)
|
|
endloop(0x09)
|
|
|
|
label(0x06)
|
|
restart_timer
|
|
speak(CHR_BOND, L_TRA_016, SFX_8151, CHANNEL_4, COLOR_03_RED) // "Get our friend to the containment lab. There's a h..."
|
|
|
|
beginloop(0x0a)
|
|
if_timer_gt(270, /*goto*/ 0x06)
|
|
endloop(0x0a)
|
|
|
|
label(0x06)
|
|
restart_timer
|
|
speak(CHR_BOND, L_TRA_017, SFX_8152, CHANNEL_4, COLOR_03_RED) // "I'll contact you when you get there - good luck!"
|
|
|
|
beginloop(0x0c)
|
|
if_timer_gt(240, /*goto*/ 0x06)
|
|
endloop(0x0c)
|
|
|
|
label(0x06)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func1005_jon_msgs_meetup[] = {
|
|
beginloop(0x04)
|
|
if_object_in_room(OBJ_HOVERBED, 0x00df, /*goto*/ 0x06)
|
|
endloop(0x04)
|
|
|
|
label(0x06)
|
|
set_stage_flag(STAGEFLAG_ELVIS_STASHED)
|
|
mute_channel(CHANNEL_0)
|
|
#if VERSION >= VERSION_NTSC_1_0
|
|
unset_object_flag2(0x0d, OBJFLAG2_LOCKEDFRONT)
|
|
#endif
|
|
set_object_flag2(0x0d, OBJFLAG2_LOCKEDBACK)
|
|
unlock_door(0x0d, 0x20)
|
|
release_grabbed_object(CHR_BOND)
|
|
yield
|
|
unset_object_flag3(OBJ_HOVERBED, OBJFLAG3_GRABBABLE)
|
|
unset_object_flag3(OBJ_HOVERBED, OBJFLAG3_PUSHABLE)
|
|
restart_timer
|
|
speak(CHR_BOND, L_TRA_018, SFX_8153, CHANNEL_4, COLOR_03_RED) // "Good work, Jo. We need to meet up. They're getting..."
|
|
|
|
beginloop(0x08)
|
|
if_timer_gt(300, /*goto*/ 0x06)
|
|
endloop(0x08)
|
|
|
|
label(0x06)
|
|
restart_timer
|
|
speak(CHR_BOND, L_TRA_019, SFX_8154, CHANNEL_4, COLOR_03_RED) // "Use the maintenance hatch I've opened in one of th..."
|
|
|
|
beginloop(0x09)
|
|
if_timer_gt(300, /*goto*/ 0x06)
|
|
endloop(0x09)
|
|
|
|
label(0x06)
|
|
set_stage_flag(STAGEFLAG_JON_SAID_MAINT_HATCH)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func1007_check_medpack_collected[] = {
|
|
beginloop(0x04)
|
|
if_chr_has_object(CHR_BOND, OBJ_MEDPACK_BOND, /*goto*/ 0x06)
|
|
if_chr_has_object(CHR_COOP, OBJ_MEDPACK_BOND, /*goto*/ 0x06)
|
|
endloop(0x04)
|
|
|
|
label(0x06)
|
|
set_stage_flag(STAGEFLAG_COLLECTED_MEDPACK)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func0403_init_jonathan[] = {
|
|
set_self_chrflag(CHRCFLAG_PUSHABLE)
|
|
set_self_chrflag(CHRCFLAG_NOAUTOAIM)
|
|
if_difficulty_gt(DIFF_A, /*goto*/ 0x32)
|
|
|
|
// Agent only
|
|
beginloop(0x0d)
|
|
chr_move_to_pad(CHR_JONATHAN, PAD_TRA_0398, FALSE, /*goto*/ 0x32)
|
|
endloop(0x0d)
|
|
|
|
// All difficulties
|
|
label(0x32)
|
|
add_health_or_armor(1200)
|
|
set_alertness(150)
|
|
set_chr_maxdamage(CHR_SELF, 1)
|
|
set_ailist(CHR_SELF, AILIST_JONATHAN_WAITING_FOR_MEETUP)
|
|
endlist
|
|
};
|
|
|
|
u8 func0402_jonathan_waiting_for_meetup[] = {
|
|
set_shotlist(AILIST_JONATHAN_WAITING_FOR_MEETUP)
|
|
if_chr_death_animation_finished(CHR_SELF, /*goto*/ 0x32)
|
|
if_chr_dead(CHR_SELF, /*goto*/ 0x32)
|
|
if_chr_knockedout(CHR_SELF, /*goto*/ 0x32)
|
|
goto_next(0x67)
|
|
|
|
label(0x32)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
|
|
label(0x67)
|
|
set_self_flag_bankx(CHRFLAG0_CAMP, BANK_0)
|
|
set_self_chrflag(CHRCFLAG_RUNFASTER)
|
|
|
|
beginloop(0x04)
|
|
chr_toggle_p1p2(CHR_SELF)
|
|
set_target_chr(CHR_P1P2)
|
|
if_los_to_target(/*goto*/ 0x06)
|
|
endloop(0x04)
|
|
|
|
label(0x06)
|
|
lock_door(0x0d, 0x20)
|
|
lock_door(0x33, 0x20)
|
|
lock_door(0x34, 0x20)
|
|
speak(CHR_P1P2, L_TRA_025, MP3_02B3, CHANNEL_4, COLOR_03_RED) // "Joanna - over here."
|
|
label(0x08)
|
|
restart_timer
|
|
do_preset_animation(PRESETANIM_TALK3)
|
|
|
|
beginloop(0x09)
|
|
if_within_targets_fovx_by_angle(10, /*goto*/ 0x06)
|
|
if_timer_gt(60, /*goto*/ 0x06)
|
|
endloop(0x09)
|
|
|
|
label(0x06)
|
|
restart_timer
|
|
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x0a)
|
|
|
|
beginloop(0x0a)
|
|
if_sound_finished(CHANNEL_4, /*goto*/ 0x32)
|
|
reloop(0x0a)
|
|
|
|
label(0x32)
|
|
if_timer_lt(150, /*goto*/ 0x32)
|
|
if_distance_to_target_lt(300, /*goto*/ 0x06)
|
|
label(0x32)
|
|
endloop(0x0a)
|
|
|
|
label(0x06)
|
|
speak(CHR_P1P2, L_TRA_026, MP3_02B4, CHANNEL_4, COLOR_03_RED) // "We need to get back to our friend."
|
|
set_stage_flag(STAGEFLAG_MET_JON)
|
|
do_preset_animation(PRESETANIM_TALKRANDOM)
|
|
restart_timer
|
|
|
|
beginloop(0x0c)
|
|
if_timer_gt(120, /*goto*/ 0x06)
|
|
endloop(0x0c)
|
|
|
|
label(0x06)
|
|
stop_chr
|
|
set_ailist(CHR_SELF, AILIST_JONATHAN_FOLLOWING_AND_MINE)
|
|
endlist
|
|
};
|
|
|
|
u8 func0404_jonathan_following_and_mine[] = {
|
|
#define LABEL_FOLLOW 0x5a
|
|
|
|
set_chr_team(CHR_SELF, TEAM_ALLY)
|
|
yield
|
|
rebuild_teams
|
|
rebuild_squadrons
|
|
set_returnlist(CHR_SELF, AILIST_JONATHAN_FOLLOWING_AND_MINE)
|
|
set_shotlist(AILIST_JONATHAN_FOLLOWING_AND_MINE)
|
|
if_chr_death_animation_finished(CHR_SELF, /*goto*/ 0x32)
|
|
if_chr_dead(CHR_SELF, /*goto*/ 0x32)
|
|
if_chr_knockedout(CHR_SELF, /*goto*/ 0x32)
|
|
goto_next(0x06)
|
|
|
|
label(0x32)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
|
|
// Unreachable
|
|
if_stage_flag_eq(STAGEFLAG_JON_FINISHED_EXPLOSIVES, TRUE, /*goto*/ 0x32)
|
|
if_self_flag_bankx_eq(CHRFLAG0_SAID_INJURY_QUIP, TRUE, BANK_0, /*goto*/ 0x0d)
|
|
label(0x32)
|
|
goto_next(0x63)
|
|
|
|
// Alive
|
|
label(0x06)
|
|
restart_timer
|
|
|
|
beginloop(0x64)
|
|
if_chr_stopped(/*goto*/ 0x63)
|
|
endloop(0x64)
|
|
|
|
label(0x63)
|
|
if_stage_flag_eq(STAGEFLAG_JON_SHOT_WHILE_PLANTING, TRUE, /*goto*/ 0x0e)
|
|
set_target_chr(CHR_P1P2)
|
|
dprint 'J','O','N','A',' ','F','O','L','L','O','W','\n',0,
|
|
|
|
label(LABEL_FOLLOW)
|
|
if_distance_to_target_gt(200, /*goto*/ 0x5c)
|
|
|
|
// distance <= 200 (waiting)
|
|
stop_chr
|
|
restart_timer
|
|
|
|
beginloop(0x5b)
|
|
label(0x32)
|
|
if_los_to_target(/*goto*/ 0x06)
|
|
goto_next(0x5c)
|
|
|
|
label(0x06)
|
|
if_distance_to_target_gt(200, /*goto*/ 0x5c)
|
|
endloop(0x5b)
|
|
|
|
// distance > 200
|
|
label(0x5c)
|
|
restart_timer
|
|
if_distance_to_target_lt(300, /*goto*/ 0x32)
|
|
|
|
// distance >= 300
|
|
try_run_to_target(/*goto*/ 0x5d)
|
|
|
|
// distance > 200 and distance < 300
|
|
label(0x32)
|
|
try_walk_to_target(/*goto*/ 0x5d)
|
|
|
|
// Moving towards Jo
|
|
label(0x5d)
|
|
restart_timer
|
|
yield
|
|
|
|
label(0x06)
|
|
if_enemy_distance_lt_and_los(1500, /*goto*/ 0x09)
|
|
|
|
// distance >= 1500 and no line of sight
|
|
// Note the timer check is pointless here because it is restarted in
|
|
// each loop iteration.
|
|
label(0x32)
|
|
set_target_chr(CHR_P1P2)
|
|
if_distance_to_target_lt(200, /*goto*/ 0x5e)
|
|
if_timer_gt(120, /*goto*/ 0x5e)
|
|
if_chr_stopped(/*goto*/ 0x5e)
|
|
goto_first(0x5d)
|
|
|
|
label(0x5e)
|
|
if_stage_flag_eq(STAGEFLAG_WALL_EXPLODED, TRUE, /*goto*/ 0x32)
|
|
if_stage_flag_eq(STAGEFLAG_JON_ENTERED_MINE_ROOM, TRUE, /*goto*/ 0x32)
|
|
if_chr_in_room(CHR_JONATHAN, 0x00, 0x00dc, /*goto*/ 0x0a)
|
|
if_chr_in_room(CHR_JONATHAN, 0x00, 0x00dd, /*goto*/ 0x0a)
|
|
goto_first(LABEL_FOLLOW)
|
|
|
|
// Unreachable
|
|
if_chr_in_room(CHR_P1P2, 0x00, 0x00dc, /*goto*/ 0x0a)
|
|
if_chr_in_room(CHR_P1P2, 0x00, 0x00dd, /*goto*/ 0x0a)
|
|
|
|
label(0x32)
|
|
goto_first(LABEL_FOLLOW)
|
|
|
|
// Saw enemy
|
|
label(0x09)
|
|
set_ailist(CHR_SELF, GAILIST_COMBAT_WITH_TARGET)
|
|
|
|
// In mine room
|
|
label(0x0a)
|
|
unset_self_chrflag(CHRCFLAG_PUSHABLE)
|
|
set_stage_flag(STAGEFLAG_JON_ENTERED_MINE_ROOM)
|
|
speak(CHR_P1P2, L_TRA_027, MP3_02B5, CHANNEL_4, COLOR_03_RED) // "Right, we're near. Cover me, Jo..."
|
|
set_shotlist(AILIST_JONATHAN_SHOT_WHILE_PLANTING)
|
|
label(0x0b)
|
|
jog_to_pad(PAD_TRA_038B)
|
|
|
|
beginloop(0x0c)
|
|
if_chr_stopped(/*goto*/ 0x06)
|
|
endloop(0x0c)
|
|
|
|
label(0x06)
|
|
play_x_track(XREASON_DEFAULT, 10, 30)
|
|
restart_timer
|
|
try_face_entity(ATTACKFLAG_AIMATPAD, 0x0173, /*goto*/ 0xc4)
|
|
|
|
beginloop(0xc4)
|
|
if_timer_gt(60, /*goto*/ 0x06)
|
|
endloop(0xc4)
|
|
|
|
label(0x06)
|
|
restart_timer
|
|
set_stage_flag(STAGEFLAG_JON_PLANTING_EXPLOSIVES)
|
|
|
|
label(0xc2)
|
|
call_rng
|
|
if_rand_lt(86, /*goto*/ 0x6a)
|
|
if_rand_lt(172, /*goto*/ 0x6b)
|
|
chr_do_animation(ANIM_OPERATE_0204, -1, -1, CHRANIMFLAG_SLOWUPDATE, 10, CHR_SELF, 2)
|
|
goto_next(0x0e)
|
|
|
|
label(0x6a)
|
|
chr_do_animation(ANIM_OPERATE_0205, -1, -1, CHRANIMFLAG_SLOWUPDATE, 10, CHR_SELF, 2)
|
|
goto_next(0x0e)
|
|
|
|
label(0x6b)
|
|
chr_do_animation(ANIM_OPERATE_0206, -1, -1, CHRANIMFLAG_SLOWUPDATE, 10, CHR_SELF, 2)
|
|
|
|
label(0x0e)
|
|
set_shotlist(AILIST_JONATHAN_SHOT_WHILE_PLANTING)
|
|
resume_timer
|
|
unset_self_flag_bankx(CHRFLAG0_SAID_INJURY_QUIP, BANK_0)
|
|
|
|
// Mine planting loop (33.3 seconds)
|
|
beginloop(0x0d)
|
|
if_timer_gt(2000, /*goto*/ 0x06)
|
|
if_chr_idle(/*goto*/ 0x32)
|
|
goto_first(0xc2)
|
|
|
|
label(0x32)
|
|
endloop(0x0d)
|
|
|
|
label(0x06)
|
|
set_shotlist(AILIST_JONATHAN_FOLLOWING_AND_MINE)
|
|
set_stage_flag(STAGEFLAG_JON_FINISHED_EXPLOSIVES)
|
|
unset_stage_flag(STAGEFLAG_JON_SHOT_WHILE_PLANTING)
|
|
set_self_chrflag(CHRCFLAG_PUSHABLE)
|
|
speak(CHR_P1P2, L_TRA_028, MP3_02B6, CHANNEL_4, COLOR_03_RED) // "Okay - stand back."
|
|
run_to_pad(PAD_TRA_0140)
|
|
|
|
beginloop(0x0f)
|
|
if_chr_stopped(/*goto*/ 0x12)
|
|
endloop(0x0f)
|
|
|
|
label(0x12)
|
|
stop_chr
|
|
|
|
beginloop(0x10)
|
|
if_stage_flag_eq(STAGEFLAG_WALL_EXPLODED, TRUE, /*goto*/ 0x06)
|
|
endloop(0x10)
|
|
|
|
label(0x06)
|
|
unlock_door(0x0a, 0x02)
|
|
speak(CHR_P1P2, L_TRA_032, MP3_02B7, CHANNEL_4, COLOR_03_RED) // "Okay, Jo - let's go."
|
|
restart_timer
|
|
|
|
beginloop(0x11)
|
|
if_timer_gt(120, /*goto*/ 0x06)
|
|
endloop(0x11)
|
|
|
|
label(0x06)
|
|
goto_first(LABEL_FOLLOW)
|
|
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func0413_jonathan_hangar[] = {
|
|
set_returnlist(CHR_SELF, AILIST_JONATHAN_HANGAR)
|
|
set_shotlist(AILIST_JONATHAN_HANGAR)
|
|
if_chr_death_animation_finished(CHR_SELF, /*goto*/ 0x32)
|
|
if_chr_dead(CHR_SELF, /*goto*/ 0x32)
|
|
if_chr_knockedout(CHR_SELF, /*goto*/ 0x32)
|
|
goto_next(0x06)
|
|
|
|
label(0x32)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
|
|
label(0x32)
|
|
if_just_injured(CHR_SELF, /*goto*/ 0x06)
|
|
goto_next(0x63)
|
|
|
|
// Injured
|
|
label(0x06)
|
|
restart_timer
|
|
|
|
beginloop(0x64)
|
|
if_chr_stopped(/*goto*/ 0x63)
|
|
endloop(0x64)
|
|
|
|
// Attack enemy (jumped to from further below)
|
|
label(0x09)
|
|
set_ailist(CHR_SELF, GAILIST_COMBAT_WITH_TARGET)
|
|
|
|
// Alive and well
|
|
label(0x63)
|
|
set_target_chr(CHR_P1P2)
|
|
label(0x12)
|
|
jog_to_pad(PAD_TRA_015F)
|
|
|
|
beginloop(0x13)
|
|
if_enemy_distance_lt_and_los(2540, /*goto*/ 0x32)
|
|
#if VERSION >= VERSION_NTSC_1_0
|
|
if_chr_distance_to_pad_lt(CHR_SELF, 3510, PAD_TRA_001E, /*goto*/ 0x06)
|
|
#endif
|
|
if_chr_stopped(/*goto*/ 0x06)
|
|
endloop(0x13)
|
|
|
|
label(0x32)
|
|
goto_first(0x09)
|
|
|
|
// Waiting at pad
|
|
label(0x06)
|
|
set_stage_flag(STAGEFLAG_JON_WAITING_AT_UFO)
|
|
stop_chr
|
|
set_target_chr(CHR_P1P2)
|
|
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x14)
|
|
|
|
// Wait until both Joanna and Elvis within 400 units
|
|
beginloop(0x14)
|
|
set_target_chr(CHR_ELVIS)
|
|
if_distance_to_target_gt(400, /*goto*/ 0x32)
|
|
set_target_chr(CHR_P1P2)
|
|
if_distance_to_target_gt(400, /*goto*/ 0x32)
|
|
if_can_see_target(/*goto*/ 0x06)
|
|
label(0x32)
|
|
endloop(0x14)
|
|
|
|
// Start conversation
|
|
label(0x06)
|
|
if_chr_death_animation_finished(CHR_ELVIS, /*goto*/ 0xc3)
|
|
if_chr_dead(CHR_ELVIS, /*goto*/ 0xc3)
|
|
if_chr_knockedout(CHR_ELVIS, /*goto*/ 0xc3)
|
|
restart_timer
|
|
chr_do_animation(ANIM_TALKING_0232, -1, 200, CHRANIMFLAG_MOVEWHENINVIS, 0, CHR_ELVIS, 2)
|
|
speak(CHR_P1P2, L_TRA_059, MP3_029A, CHANNEL_5, COLOR_06_WHITE) // "Oh, no! We have a problem. It's a single seater!"
|
|
|
|
beginloop(0x7d)
|
|
if_chr_death_animation_finished(CHR_ELVIS, /*goto*/ 0xc3)
|
|
if_chr_dead(CHR_ELVIS, /*goto*/ 0xc3)
|
|
if_chr_knockedout(CHR_ELVIS, /*goto*/ 0xc3)
|
|
if_sound_finished(CHANNEL_5, /*goto*/ 0x32)
|
|
reloop(0x7d)
|
|
|
|
label(0x32)
|
|
if_timer_gt(300, /*goto*/ 0x06)
|
|
endloop(0x7d)
|
|
|
|
label(0x06)
|
|
restart_timer
|
|
chr_do_animation(ANIM_TALKING_0233, -1, 200, CHRANIMFLAG_MOVEWHENINVIS, 0, CHR_ELVIS, 2)
|
|
speak(CHR_P1P2, L_TRA_060, MP3_029B, CHANNEL_5, COLOR_06_WHITE) // "Two can get in but no more."
|
|
|
|
beginloop(0x7e)
|
|
if_chr_death_animation_finished(CHR_ELVIS, /*goto*/ 0xc3)
|
|
if_chr_dead(CHR_ELVIS, /*goto*/ 0xc3)
|
|
if_chr_knockedout(CHR_ELVIS, /*goto*/ 0xc3)
|
|
if_sound_finished(CHANNEL_5, /*goto*/ 0x32)
|
|
reloop(0x7e)
|
|
|
|
label(0x32)
|
|
if_timer_gt(200, /*goto*/ 0x06)
|
|
endloop(0x7e)
|
|
|
|
label(0x06)
|
|
restart_timer
|
|
speak(CHR_BOND, L_TRA_041, MP3_02A7, CHANNEL_5, COLOR_09_BLUE) // "It's the only way out of here."
|
|
|
|
beginloop(0x15)
|
|
if_chr_death_animation_finished(CHR_ELVIS, /*goto*/ 0xc3)
|
|
if_chr_dead(CHR_ELVIS, /*goto*/ 0xc3)
|
|
if_chr_knockedout(CHR_ELVIS, /*goto*/ 0xc3)
|
|
if_sound_finished(CHANNEL_5, /*goto*/ 0x32)
|
|
reloop(0x15)
|
|
|
|
label(0x32)
|
|
if_timer_gt(120, /*goto*/ 0x06)
|
|
endloop(0x15)
|
|
|
|
label(0x06)
|
|
restart_timer
|
|
chr_do_animation(ANIM_TALKING_0232, -1, 200, CHRANIMFLAG_MOVEWHENINVIS, 0, CHR_ELVIS, 2)
|
|
speak(CHR_P1P2, L_TRA_061, MP3_029C, CHANNEL_5, COLOR_06_WHITE) // "Plus, it's got no style, you know what I'm saying?"
|
|
|
|
beginloop(0x7f)
|
|
if_chr_death_animation_finished(CHR_ELVIS, /*goto*/ 0xc3)
|
|
if_chr_dead(CHR_ELVIS, /*goto*/ 0xc3)
|
|
if_chr_knockedout(CHR_ELVIS, /*goto*/ 0xc3)
|
|
if_sound_finished(CHANNEL_5, /*goto*/ 0x32)
|
|
reloop(0x7f)
|
|
|
|
label(0x32)
|
|
if_timer_gt(200, /*goto*/ 0x06)
|
|
endloop(0x7f)
|
|
|
|
label(0x06)
|
|
restart_timer
|
|
speak(CHR_BOND, L_TRA_042, MP3_02A8, CHANNEL_5, COLOR_09_BLUE) // "You're the only one who can fly it, Elvis, so get ..."
|
|
|
|
beginloop(0x17)
|
|
if_chr_death_animation_finished(CHR_ELVIS, /*goto*/ 0xc3)
|
|
if_chr_dead(CHR_ELVIS, /*goto*/ 0xc3)
|
|
if_chr_knockedout(CHR_ELVIS, /*goto*/ 0xc3)
|
|
if_sound_finished(CHANNEL_5, /*goto*/ 0x32)
|
|
endloop(0x17)
|
|
|
|
label(0x32)
|
|
if_timer_gt(240, /*goto*/ 0x06)
|
|
endloop(0x17)
|
|
|
|
label(0x06)
|
|
restart_timer
|
|
chr_do_animation(ANIM_TALKING_0231, -1, 200, CHRANIMFLAG_MOVEWHENINVIS, 0, CHR_JONATHAN, 2)
|
|
speak(CHR_P1P2, L_TRA_045, MP3_02B9, CHANNEL_5, COLOR_03_RED) // "One of us will have to stay behind and open the ha..."
|
|
|
|
beginloop(0x1a)
|
|
if_chr_death_animation_finished(CHR_ELVIS, /*goto*/ 0xc3)
|
|
if_chr_dead(CHR_ELVIS, /*goto*/ 0xc3)
|
|
if_chr_knockedout(CHR_ELVIS, /*goto*/ 0xc3)
|
|
if_sound_finished(CHANNEL_5, /*goto*/ 0x32)
|
|
reloop(0x1a)
|
|
|
|
label(0x32)
|
|
if_timer_gt(240, /*goto*/ 0x06)
|
|
endloop(0x1a)
|
|
|
|
label(0x06)
|
|
restart_timer
|
|
speak(CHR_BOND, L_TRA_043, MP3_02A9, CHANNEL_5, COLOR_09_BLUE) // "But we can't leave you behind."
|
|
|
|
beginloop(0x18)
|
|
if_chr_death_animation_finished(CHR_ELVIS, /*goto*/ 0xc3)
|
|
if_chr_dead(CHR_ELVIS, /*goto*/ 0xc3)
|
|
if_chr_knockedout(CHR_ELVIS, /*goto*/ 0xc3)
|
|
if_sound_finished(CHANNEL_5, /*goto*/ 0x32)
|
|
reloop(0x18)
|
|
|
|
label(0x32)
|
|
if_timer_gt(120, /*goto*/ 0x06)
|
|
endloop(0x18)
|
|
|
|
label(0x06)
|
|
restart_timer
|
|
speak(CHR_BOND, L_TRA_044, MP3_02AA, CHANNEL_5, COLOR_09_BLUE) // "There must be a way out of here."
|
|
|
|
beginloop(0x19)
|
|
if_chr_death_animation_finished(CHR_ELVIS, /*goto*/ 0xc3)
|
|
if_chr_dead(CHR_ELVIS, /*goto*/ 0xc3)
|
|
if_chr_knockedout(CHR_ELVIS, /*goto*/ 0xc3)
|
|
if_sound_finished(CHANNEL_5, /*goto*/ 0x32)
|
|
reloop(0x19)
|
|
|
|
label(0x32)
|
|
if_timer_gt(120, /*goto*/ 0x06)
|
|
endloop(0x19)
|
|
|
|
label(0x06)
|
|
restart_timer
|
|
chr_do_animation(ANIM_TALKING_0232, -1, 200, CHRANIMFLAG_MOVEWHENINVIS, 0, CHR_JONATHAN, 2)
|
|
speak(CHR_P1P2, L_TRA_046, MP3_02BA, CHANNEL_5, COLOR_03_RED) // "I'll get out on that hoverbike. Cover me while I o..."
|
|
|
|
beginloop(0x1b)
|
|
if_timer_gt(120, /*goto*/ 0x66)
|
|
reloop(0x1b)
|
|
|
|
label(0x66)
|
|
if_chr_death_animation_finished(CHR_ELVIS, /*goto*/ 0x06)
|
|
if_chr_dead(CHR_ELVIS, /*goto*/ 0x06)
|
|
if_chr_knockedout(CHR_ELVIS, /*goto*/ 0x06)
|
|
set_ailist(CHR_ELVIS, AILIST_ELVIS_GO_TO_UFO)
|
|
|
|
label(0x06)
|
|
set_stage_flag(STAGEFLAG_HANGAR_CONVERSATION_FINISHED)
|
|
set_self_flag_bankx(CHRFLAG0_SKIPSAFETYCHECKS, BANK_0)
|
|
restart_timer
|
|
jog_to_pad(PAD_TRA_016F)
|
|
|
|
// Once Jon starts jogging, 4 seconds will pass before he starts checking
|
|
// other things. One of these is a Y check, where the X music will start
|
|
// once he's a certain way up the ramp. The other is a distance to Jo check
|
|
// where she'll take over.
|
|
beginloop(0x1c)
|
|
if_timer_lt(240, /*goto*/ 0x32)
|
|
if_stage_flag_eq(STAGEFLAG_HANGAR_X_MUSIC_STARTED, TRUE, /*goto*/ 0x32)
|
|
if_chr_y(CHR_SELF, -600, OPERATOR_GREATER_THAN, /*goto*/ 0x33)
|
|
set_target_chr(CHR_P1P2)
|
|
if_distance_to_target_lt(300, /*goto*/ 0x59)
|
|
label(0x32)
|
|
if_chr_stopped(/*goto*/ 0x06)
|
|
reloop(0x1c)
|
|
|
|
// Jon is up the ramp
|
|
label(0x33)
|
|
set_stage_flag(STAGEFLAG_HANGAR_X_MUSIC_STARTED)
|
|
play_x_track(XREASON_DEFAULT, 10, 90)
|
|
run_to_pad(PAD_TRA_016F)
|
|
set_stage_flag(STAGEFLAG_HANGAR_X_MUSIC_STARTED)
|
|
if_chr_stopped(/*goto*/ 0x06)
|
|
endloop(0x1c)
|
|
|
|
// At first terminal
|
|
label(0x06)
|
|
chr_do_animation(ANIM_OPERATE_0204, 0, -1, CHRANIMFLAG_SLOWUPDATE, 16, CHR_SELF, 2)
|
|
|
|
beginloop(0x1d)
|
|
if_chr_stopped(/*goto*/ 0x06)
|
|
endloop(0x1d)
|
|
|
|
label(0x06)
|
|
if_stage_flag_eq(STAGEFLAG_HANGAR_TERMINAL_DESTROYED, TRUE, /*goto*/ 0x32)
|
|
set_stage_flag(STAGEFLAG_INNER_DOOR_OPENING)
|
|
open_door(0x2c)
|
|
open_door(0x2d)
|
|
set_object_flag(0x2c, OBJFLAG_DOOR_KEEPOPEN)
|
|
set_object_flag(0x2d, OBJFLAG_DOOR_KEEPOPEN)
|
|
show_hudmsg(CHR_P1P2, L_TRA_039) // "Inner hangar door is opening."
|
|
|
|
label(0x32)
|
|
set_self_flag_bankx(CHRFLAG0_FORCESAFETYCHECKS, BANK_0)
|
|
run_to_pad(PAD_TRA_0171)
|
|
|
|
beginloop(0x1e)
|
|
if_chr_distance_to_pad_lt(CHR_SELF, 3690, PAD_TRA_0014, /*goto*/ 0x06)
|
|
if_chr_stopped(/*goto*/ 0x06)
|
|
endloop(0x1e)
|
|
|
|
// At second terminal
|
|
label(0x06)
|
|
chr_do_animation(ANIM_OPERATE_0204, 0, -1, CHRANIMFLAG_SLOWUPDATE, 16, CHR_SELF, 2)
|
|
|
|
beginloop(0x1f)
|
|
if_chr_stopped(/*goto*/ 0x06)
|
|
endloop(0x1f)
|
|
|
|
label(0x06)
|
|
if_stage_flag_eq(STAGEFLAG_HANGAR_TERMINAL_DESTROYED, TRUE, /*goto*/ 0x20)
|
|
set_stage_flag(STAGEFLAG_OUTER_DOOR_OPENING)
|
|
open_door(0x2e)
|
|
open_door(0x2f)
|
|
set_object_flag(0x2e, OBJFLAG_DOOR_KEEPOPEN)
|
|
set_object_flag(0x2f, OBJFLAG_DOOR_KEEPOPEN)
|
|
show_hudmsg(CHR_P1P2, L_TRA_037) // "Outer hangar door is opening."
|
|
|
|
beginloop(0x20)
|
|
set_ailist(CHR_SELF, AILIST_JONATHAN_AFTER_TERMINALS)
|
|
endloop(0x20)
|
|
|
|
// Jo taking over
|
|
label(0x59)
|
|
speak(CHR_BOND, L_TRA_047, MP3_02AC, CHANNEL_5, COLOR_09_BLUE) // "Jonathan, go with Elvis. I'll see to the consoles."
|
|
restart_timer
|
|
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x46)
|
|
|
|
beginloop(0x46)
|
|
if_target_in_fov_left(10, /*goto*/ 0x06)
|
|
if_timer_gt(60, /*goto*/ 0x06)
|
|
endloop(0x46)
|
|
|
|
label(0x06)
|
|
restart_timer
|
|
|
|
beginloop(0x4a)
|
|
if_timer_gt(120, /*goto*/ 0x06)
|
|
endloop(0x4a)
|
|
|
|
label(0x06)
|
|
set_stage_flag(STAGEFLAG_JO_DOING_TERMINALS)
|
|
set_stage_flag(STAGEFLAG_HANGAR_X_MUSIC_STARTED)
|
|
play_x_track(XREASON_DEFAULT, 10, 90)
|
|
set_ailist(CHR_SELF, AILIST_JONATHAN_AFTER_TERMINALS)
|
|
|
|
// Elvis dead
|
|
label(0xc3)
|
|
set_returnlist(CHR_SELF, AILIST_JONATHAN_AFTER_TERMINALS)
|
|
set_ailist(CHR_SELF, AILIST_JONATHAN_AFTER_TERMINALS)
|
|
endlist
|
|
};
|
|
|
|
u8 func041c_elvis_go_to_ufo[] = {
|
|
set_returnlist(CHR_SELF, AILIST_ELVIS_GO_TO_UFO)
|
|
set_shotlist(AILIST_ELVIS_GO_TO_UFO)
|
|
if_chr_death_animation_finished(CHR_SELF, /*goto*/ 0x32)
|
|
if_chr_dead(CHR_SELF, /*goto*/ 0x32)
|
|
if_chr_knockedout(CHR_SELF, /*goto*/ 0x32)
|
|
goto_next(0x06)
|
|
|
|
label(0x32)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
|
|
label(0x06)
|
|
run_to_pad(PAD_TRA_03FE)
|
|
|
|
beginloop(0x08)
|
|
if_chr_stopped(/*goto*/ 0x06)
|
|
endloop(0x08)
|
|
|
|
label(0x06)
|
|
stop_chr
|
|
|
|
beginloop(0x6a)
|
|
endloop(0x6a)
|
|
|
|
endlist
|
|
};
|
|
|
|
u8 func041b_jonathan_after_terminals[] = {
|
|
set_returnlist(CHR_SELF, AILIST_JONATHAN_AFTER_TERMINALS)
|
|
set_shotlist(AILIST_JONATHAN_AFTER_TERMINALS)
|
|
if_chr_death_animation_finished(CHR_SELF, /*goto*/ 0x32)
|
|
if_chr_dead(CHR_SELF, /*goto*/ 0x32)
|
|
if_chr_knockedout(CHR_SELF, /*goto*/ 0x32)
|
|
goto_next(0x06)
|
|
|
|
label(0x32)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
|
|
label(0x06)
|
|
run_to_pad(PAD_TRA_015F) // conversation corner
|
|
|
|
beginloop(0x4b)
|
|
#if VERSION >= VERSION_NTSC_1_0
|
|
if_chr_distance_to_pad_lt(CHR_SELF, 3510, PAD_TRA_0014, /*goto*/ 0x06)
|
|
#endif
|
|
if_chr_stopped(/*goto*/ 0x06)
|
|
endloop(0x4b)
|
|
|
|
label(0x06)
|
|
jog_to_pad(PAD_TRA_0168) // corner near ramp
|
|
|
|
beginloop(0x4c)
|
|
if_enemy_distance_lt_and_los(2540, /*goto*/ 0x09)
|
|
if_chr_stopped(/*goto*/ 0x06)
|
|
endloop(0x4c)
|
|
|
|
label(0x06)
|
|
stop_chr
|
|
|
|
beginloop(0x4d)
|
|
if_enemy_distance_lt_and_los(2540, /*goto*/ 0x09)
|
|
endloop(0x4d)
|
|
|
|
label(0x09)
|
|
set_ailist(CHR_SELF, GAILIST_COMBAT_WITH_TARGET)
|
|
endlist
|
|
};
|
|
|
|
u8 func0405_jonathan_shot_while_planting[] = {
|
|
set_stage_flag(STAGEFLAG_JON_SHOT_WHILE_PLANTING)
|
|
label(0x04)
|
|
pause_timer
|
|
if_just_injured(CHR_SELF, /*goto*/ 0x06)
|
|
goto_next(0x63)
|
|
|
|
// Injured
|
|
label(0x06)
|
|
restart_timer
|
|
|
|
beginloop(0x64)
|
|
if_self_flag_bankx_eq(CHRFLAG0_SAID_INJURY_QUIP, TRUE, BANK_0, /*goto*/ 0x06)
|
|
if_num_times_shot_lt(1, /*goto*/ 0x06)
|
|
if_timer_lt(20, /*goto*/ 0x06)
|
|
speak(CHR_P1P2, L_TRA_051, SFX_8155, CHANNEL_5, COLOR_03_RED) // "Damn it, Joanna... cover me!"
|
|
set_self_flag_bankx(CHRFLAG0_SAID_INJURY_QUIP, BANK_0)
|
|
label(0x06)
|
|
if_chr_stopped(/*goto*/ 0x63)
|
|
endloop(0x64)
|
|
|
|
// Not injured, or recovered
|
|
label(0x63)
|
|
label(0x0b)
|
|
walk_to_pad(PAD_TRA_038B)
|
|
|
|
beginloop(0x0c)
|
|
if_chr_stopped(/*goto*/ 0x06)
|
|
endloop(0x0c)
|
|
|
|
label(0x06)
|
|
try_face_entity(ATTACKFLAG_AIMATPAD, 0x0173, /*goto*/ 0xc4)
|
|
|
|
beginloop(0xc4)
|
|
if_timer_gt(60, /*goto*/ 0x06)
|
|
endloop(0xc4)
|
|
|
|
label(0x06)
|
|
set_shotlist(AILIST_JONATHAN_FOLLOWING_AND_MINE)
|
|
set_ailist(CHR_SELF, AILIST_JONATHAN_FOLLOWING_AND_MINE)
|
|
endlist
|
|
};
|
|
|
|
/**
|
|
* @unused
|
|
*/
|
|
u8 func0406_unused_0406[] = {
|
|
beginloop(0x04)
|
|
if_stage_flag_eq(STAGEFLAG_MET_JON, TRUE, /*goto*/ 0x06)
|
|
endloop(0x04)
|
|
|
|
label(0x06)
|
|
set_alertness(100)
|
|
#if VERSION >= VERSION_NTSC_1_0
|
|
set_target_chr(CHR_BOND)
|
|
#endif
|
|
set_ailist(CHR_SELF, GAILIST_ALERTED)
|
|
endlist
|
|
};
|
|
|
|
/**
|
|
* Waits until the meetup with Jon is done and the player is in the hallway.
|
|
* Spawns 15 guards total, maximum 4 alive at any time. Every 60 seconds, checks
|
|
* to see whether it should spawn more. Stops once 15 have been spawned or Jon
|
|
* has finished planting the explosives.
|
|
*/
|
|
u8 func1008_spawngroup1[] = {
|
|
// Wait until meeting done and player in the T-junction corridor
|
|
beginloop(0x04)
|
|
chr_toggle_p1p2(CHR_SELF)
|
|
if_stage_flag_eq(STAGEFLAG_MET_JON, TRUE, /*goto*/ 0x06)
|
|
reloop(0x04)
|
|
|
|
label(0x06)
|
|
if_chr_in_room(CHR_P1P2, 0x00, 0x003f, /*goto*/ 0x06)
|
|
endloop(0x04)
|
|
|
|
label(0x06)
|
|
set_morale(15)
|
|
|
|
beginloop(0x5f)
|
|
// Keep doing this until explosives finished, or 15 guards spawned
|
|
if_stage_flag_eq(STAGEFLAG_JON_FINISHED_EXPLOSIVES, TRUE, /*goto*/ 0x06)
|
|
if_morale_lt(1, /*goto*/ 0x06)
|
|
try_spawn_chr_at_pad(BODY_AREA51GUARD, HEAD_RANDOM, PAD_TRA_00C7, AILIST_SPAWNGROUP1_GUARD, SPAWNFLAG_BASICGUARD, /*goto*/ 0x60)
|
|
reloop(0x5f)
|
|
|
|
// Spawned a guard
|
|
label(0x60)
|
|
yield
|
|
if_stage_flag_eq(STAGEFLAG_JON_FINISHED_EXPLOSIVES, TRUE, /*goto*/ 0x06)
|
|
subtract_morale(1)
|
|
if_num_chrs_in_squadron_gt(3, SPAWNGROUP1, /*goto*/ 0x32)
|
|
reloop(0x5f)
|
|
|
|
label(0x32)
|
|
restart_timer
|
|
|
|
beginloop(0x08)
|
|
if_timer_gt(3600, /*goto*/ 0x32)
|
|
endloop(0x08)
|
|
|
|
label(0x32)
|
|
endloop(0x5f)
|
|
|
|
label(0x06)
|
|
yield
|
|
yield
|
|
yield
|
|
yield
|
|
yield
|
|
rebuild_teams
|
|
rebuild_squadrons
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func1008_spawngroup1_guard[] = {
|
|
set_chr_dodge_rating(2, 10)
|
|
set_accuracy(10)
|
|
set_reaction_speed(40)
|
|
set_chr_maxdamage(CHR_SELF, 40)
|
|
add_health_or_armor(40)
|
|
set_recovery_speed(0)
|
|
set_shield(0)
|
|
try_equip_weapon(MODEL_CHRSUPERDRAGON, WEAPON_SUPERDRAGON, 0x00000000, /*goto*/ 0x06)
|
|
label(0x06)
|
|
set_chr_team(CHR_SELF, TEAM_ENEMY)
|
|
set_self_flag_bankx(CHRFLAG0_SKIPSAFETYCHECKS, BANK_0)
|
|
set_self_flag_bankx(CHRFLAG0_AIVSAI, BANK_0)
|
|
set_squadron(SPAWNGROUP1)
|
|
run_to_pad(PAD_TRA_013E)
|
|
rebuild_teams
|
|
rebuild_squadrons
|
|
set_ailist(CHR_SELF, GAILIST_CHOOSE_TARGET)
|
|
endlist
|
|
};
|
|
|
|
/**
|
|
* Spawns 12 guards while Jon is planing the explosives. Maximum 4 alive at any
|
|
* time. No delay between them; once one dies another is immediately spawned.
|
|
* Location is spawned guard is one of 2 places, 50% chance of each. Spawning
|
|
* stops when wall explodes.
|
|
*/
|
|
u8 func1013_spawngroup2[] = {
|
|
beginloop(0x04)
|
|
if_stage_flag_eq(STAGEFLAG_JON_PLANTING_EXPLOSIVES, TRUE, /*goto*/ 0x06)
|
|
endloop(0x04)
|
|
|
|
label(0x06)
|
|
set_morale(12)
|
|
|
|
beginloop(0x5f)
|
|
if_morale_lt(1, /*goto*/ 0x06)
|
|
call_rng
|
|
if_rand_gt(128, /*goto*/ 0x32)
|
|
try_spawn_chr_at_pad(BODY_AREA51GUARD, HEAD_RANDOM, PAD_TRA_0144, AILIST_SPAWNGROUP2_GUARD, SPAWNFLAG_BASICGUARD, /*goto*/ 0x60)
|
|
goto_next(0x06)
|
|
|
|
label(0x32)
|
|
try_spawn_chr_at_pad(BODY_AREA51GUARD, HEAD_RANDOM, PAD_TRA_0138, AILIST_SPAWNGROUP2_GUARD, SPAWNFLAG_BASICGUARD, /*goto*/ 0x60)
|
|
goto_next(0x06)
|
|
|
|
label(0x60)
|
|
yield
|
|
if_stage_flag_eq(STAGEFLAG_WALL_EXPLODED, TRUE, /*goto*/ 0x06)
|
|
subtract_morale(1)
|
|
rebuild_teams
|
|
rebuild_squadrons
|
|
label(0x08)
|
|
yield
|
|
if_stage_flag_eq(STAGEFLAG_WALL_EXPLODED, TRUE, /*goto*/ 0x06)
|
|
if_num_chrs_in_squadron_gt(4, SPAWNGROUP2, /*goto*/ 0x32)
|
|
call_rng
|
|
if_rand_gt(5, /*goto*/ 0x32)
|
|
endloop(0x5f)
|
|
|
|
label(0x32)
|
|
goto_first(0x08)
|
|
|
|
label(0x06)
|
|
yield
|
|
yield
|
|
yield
|
|
yield
|
|
yield
|
|
rebuild_teams
|
|
rebuild_squadrons
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func1013_spawngroup2_guard[] = {
|
|
set_chr_dodge_rating(2, 10)
|
|
set_accuracy(10)
|
|
set_reaction_speed(40)
|
|
set_chr_maxdamage(CHR_SELF, 40)
|
|
add_health_or_armor(40)
|
|
set_recovery_speed(0)
|
|
set_shield(0)
|
|
try_equip_weapon(MODEL_CHRSUPERDRAGON, WEAPON_SUPERDRAGON, 0x00000000, /*goto*/ 0x06)
|
|
label(0x06)
|
|
set_chr_team(CHR_SELF, TEAM_ENEMY)
|
|
set_self_flag_bankx(CHRFLAG0_SKIPSAFETYCHECKS, BANK_0)
|
|
set_self_flag_bankx(CHRFLAG0_AIVSAI, BANK_0)
|
|
set_squadron(SPAWNGROUP2)
|
|
rebuild_teams
|
|
rebuild_squadrons
|
|
#if VERSION >= VERSION_NTSC_1_0
|
|
set_target_chr(CHR_BOND)
|
|
#endif
|
|
set_ailist(CHR_SELF, GAILIST_ALERTED)
|
|
endlist
|
|
};
|
|
|
|
/**
|
|
* SA/PA only. Waits until medpack is started, then spawns up to 4 guards.
|
|
*
|
|
* The intended behavior is to spawn them all pretty much immediately with a
|
|
* random delay in between, then wait for them all to be dead, then complete the
|
|
* medpack. But two errors make make this not work as intended.
|
|
*
|
|
* The first error is that if any spawn fails (eg. due to the player looking at
|
|
* the pad) then the ailist jumps straight to the end where it waits for the
|
|
* group to be dead, and does not spawn any more guards.
|
|
*
|
|
* The second error is in the handler for if_all_chrs_in_squadron_are_dead. The
|
|
* implementation of this command has a bug which makes it only check if the
|
|
* most recently spawned guard is dead. If there are no chrs in the squadron
|
|
* (eg. if the first guard fails to spawn) then this check doesn't pass either.
|
|
*
|
|
* In other words:
|
|
* 1) killing the most recently spawned guard will cause the medpack to finish,
|
|
* 2) the spawning process stops if any spawn fails due to the player looking at
|
|
* the pad, and
|
|
* 3) at least one guard must spawn for an early medpack finish.
|
|
*/
|
|
u8 func1014_spawngroup3[] = {
|
|
if_difficulty_lt(DIFF_SA, /*goto*/ 0x32)
|
|
goto_next(0x04)
|
|
|
|
// Agent - do nothing
|
|
label(0x32)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
|
|
// SA and PA
|
|
beginloop(0x04)
|
|
if_stage_flag_eq(STAGEFLAG_MEDPACK_STARTED, TRUE, /*goto*/ 0x06)
|
|
endloop(0x04)
|
|
|
|
label(0x06)
|
|
set_morale(4)
|
|
|
|
beginloop(0x5f)
|
|
if_morale_lt(1, /*goto*/ 0x06)
|
|
call_rng
|
|
if_rand_gt(128, /*goto*/ 0x32)
|
|
|
|
// @bug: If either of these fail to spawn, the ailist jumps straight to
|
|
// the end rather than attempting to respawn them.
|
|
|
|
// Spawn at top of ramp
|
|
try_spawn_chr_at_pad(BODY_AREA51GUARD, HEAD_RANDOM, PAD_TRA_0117, AILIST_SPAWNGROUP3_GUARD, SPAWNFLAG_BASICGUARD, /*goto*/ 0x60)
|
|
goto_next(0x06)
|
|
|
|
// Spawn in mine room
|
|
label(0x32)
|
|
try_spawn_chr_at_pad(BODY_AREA51GUARD, HEAD_RANDOM, PAD_TRA_013E, AILIST_SPAWNGROUP3_GUARD, SPAWNFLAG_BASICGUARD, /*goto*/ 0x60)
|
|
goto_next(0x06)
|
|
|
|
// Spawned a guard
|
|
label(0x60)
|
|
yield
|
|
if_stage_flag_eq(STAGEFLAG_ELVIS_REVIVED, TRUE, /*goto*/ 0x06)
|
|
subtract_morale(1)
|
|
rebuild_teams
|
|
rebuild_squadrons
|
|
|
|
// Wait for Elvis to be revived, or 5 in 256 chance of spawning another
|
|
// guard anyway. Note that the if_num_chrs_in_squadron_gt check can't
|
|
// pass because this squadron never has more than 4 chrs in it.
|
|
label(0x08)
|
|
yield
|
|
if_stage_flag_eq(STAGEFLAG_ELVIS_REVIVED, TRUE, /*goto*/ 0x06)
|
|
if_num_chrs_in_squadron_gt(6, SPAWNGROUP3, /*goto*/ 0x32)
|
|
call_rng
|
|
if_rand_gt(5, /*goto*/ 0x32)
|
|
endloop(0x5f)
|
|
|
|
label(0x32)
|
|
goto_first(0x08)
|
|
|
|
label(0x06)
|
|
yield
|
|
yield
|
|
yield
|
|
yield
|
|
yield
|
|
rebuild_teams
|
|
rebuild_squadrons
|
|
|
|
beginloop(0x0d)
|
|
if_all_chrs_in_squadron_are_dead(SPAWNGROUP3, /*goto*/ 0x06)
|
|
endloop(0x0d)
|
|
|
|
label(0x06)
|
|
set_stage_flag(STAGEFLAG_TRIGGER_MEDPACK_FINISH)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func1014_spawngroup3_guard[] = {
|
|
set_chr_dodge_rating(2, 10)
|
|
set_accuracy(10)
|
|
set_reaction_speed(40)
|
|
set_chr_maxdamage(CHR_SELF, 40)
|
|
add_health_or_armor(40)
|
|
set_recovery_speed(0)
|
|
set_shield(0)
|
|
try_equip_weapon(MODEL_CHRSUPERDRAGON, WEAPON_SUPERDRAGON, 0x00000000, /*goto*/ 0x06)
|
|
label(0x06)
|
|
set_chr_team(CHR_SELF, TEAM_ENEMY)
|
|
set_self_flag_bankx(CHRFLAG0_SKIPSAFETYCHECKS, BANK_0)
|
|
set_self_flag_bankx(CHRFLAG0_AIVSAI, BANK_0)
|
|
set_squadron(SPAWNGROUP3)
|
|
rebuild_teams
|
|
rebuild_squadrons
|
|
#if VERSION >= VERSION_NTSC_1_0
|
|
set_target_chr(CHR_BOND)
|
|
#endif
|
|
set_ailist(CHR_SELF, GAILIST_ALERTED)
|
|
endlist
|
|
};
|
|
|
|
/**
|
|
* Start spawning guards when the hangar X music starts. Stop spawning when 12
|
|
* reached, or when both hangar doors are open.
|
|
*/
|
|
u8 func1015_spawngroup4[] = {
|
|
beginloop(0x04)
|
|
if_stage_flag_eq(STAGEFLAG_HANGAR_X_MUSIC_STARTED, TRUE, /*goto*/ 0x06)
|
|
endloop(0x04)
|
|
|
|
label(0x06)
|
|
label(0x06)
|
|
set_morale(12)
|
|
|
|
beginloop(0x5f)
|
|
call_rng
|
|
if_rand_gt(128, /*goto*/ 0x32)
|
|
|
|
// @bug: This is spawning guards using the same function as the previous
|
|
// spawn group. This causes the guards to set their group to spawngroup3
|
|
// which causes the if_num_chrs_in_squadron_gt check further below to
|
|
// never pass.
|
|
try_spawn_chr_at_pad(BODY_AREA51GUARD, HEAD_RANDOM, PAD_TRA_0140, AILIST_SPAWNGROUP3_GUARD, SPAWNFLAG_BASICGUARD, /*goto*/ 0x60)
|
|
goto_next(0x06)
|
|
|
|
label(0x32)
|
|
try_spawn_chr_at_pad(BODY_AREA51GUARD, HEAD_RANDOM, PAD_TRA_0117, AILIST_SPAWNGROUP3_GUARD, SPAWNFLAG_BASICGUARD, /*goto*/ 0x60)
|
|
goto_next(0x06)
|
|
|
|
label(0x60)
|
|
yield
|
|
if_stage_flag_eq(STAGEFLAG_BOTH_HANGAR_DOORS_OPEN, TRUE, /*goto*/ 0x06)
|
|
subtract_morale(1)
|
|
rebuild_teams
|
|
rebuild_squadrons
|
|
|
|
label(0x08)
|
|
yield
|
|
if_morale_lt(1, /*goto*/ 0x06)
|
|
if_num_chrs_in_squadron_gt(6, SPAWNGROUP4, /*goto*/ 0x32)
|
|
call_rng
|
|
if_rand_gt(2, /*goto*/ 0x32)
|
|
endloop(0x5f)
|
|
|
|
label(0x32)
|
|
goto_first(0x08)
|
|
|
|
label(0x06)
|
|
yield
|
|
yield
|
|
yield
|
|
yield
|
|
yield
|
|
rebuild_teams
|
|
rebuild_squadrons
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
/**
|
|
* @unused
|
|
*/
|
|
u8 func1015_spawngroup4_guard[] = {
|
|
set_chr_dodge_rating(2, 10)
|
|
set_accuracy(10)
|
|
set_reaction_speed(40)
|
|
set_chr_maxdamage(CHR_SELF, 40)
|
|
add_health_or_armor(40)
|
|
set_recovery_speed(0)
|
|
set_shield(0)
|
|
try_equip_weapon(MODEL_CHRSUPERDRAGON, WEAPON_SUPERDRAGON, 0x00000000, /*goto*/ 0x06)
|
|
label(0x06)
|
|
set_chr_team(CHR_SELF, TEAM_ENEMY)
|
|
set_self_flag_bankx(CHRFLAG0_SKIPSAFETYCHECKS, BANK_0)
|
|
set_self_flag_bankx(CHRFLAG0_AIVSAI, BANK_0)
|
|
set_squadron(SPAWNGROUP4)
|
|
rebuild_teams
|
|
rebuild_squadrons
|
|
run_to_pad(PAD_TRA_0168)
|
|
set_ailist(CHR_SELF, GAILIST_CHOOSE_TARGET)
|
|
endlist
|
|
};
|
|
|
|
u8 func1009_blow_up_wall[] = {
|
|
beginloop(0x04)
|
|
if_stage_flag_eq(STAGEFLAG_JON_FINISHED_EXPLOSIVES, TRUE, /*goto*/ 0x06)
|
|
endloop(0x04)
|
|
|
|
label(0x06)
|
|
restart_timer
|
|
|
|
beginloop(0x08)
|
|
if_timer_gt(300, /*goto*/ 0x06)
|
|
endloop(0x08)
|
|
|
|
label(0x06)
|
|
unset_object_flag(OBJ_WALLMINE, OBJFLAG_INVINCIBLE)
|
|
unset_object_flag(OBJ_WALLMINE, OBJFLAG_INVINCIBLE)
|
|
unset_object_flag(OBJ_WALLOBJECT, OBJFLAG_INVINCIBLE)
|
|
unset_object_flag(OBJ_WALLDOOR, OBJFLAG_INVINCIBLE)
|
|
yield
|
|
yield
|
|
destroy_object(OBJ_WALLMINE)
|
|
set_stage_flag(STAGEFLAG_WALL_EXPLODED)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func100a_check_hangar_accessed[] = {
|
|
beginloop(0x04)
|
|
chr_toggle_p1p2(CHR_SELF)
|
|
if_chr_in_room(CHR_P1P2, 0x00, 0x00e7, /*goto*/ 0x06)
|
|
endloop(0x04)
|
|
|
|
label(0x06)
|
|
set_stage_flag(STAGEFLAG_ENTERED_HANGAR)
|
|
show_hudmsg(CHR_P1P2, L_TRA_031) // "The secret hangar has been located."
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func100b_check_jonathan_dead[] = {
|
|
if_difficulty_lt(DIFF_PA, /*goto*/ 0x32)
|
|
goto_next(0x04)
|
|
|
|
// A and SA
|
|
label(0x32)
|
|
give_object_to_chr(OBJ_MEDPACK_BOND, CHR_BOND)
|
|
if_chr_death_animation_finished(CHR_COOP, /*goto*/ 0x32)
|
|
give_object_to_chr(OBJ_MEDPACK_COOP, CHR_COOP)
|
|
goto_next(0x04)
|
|
|
|
label(0x32)
|
|
disable_object(OBJ_MEDPACK_COOP)
|
|
|
|
// All difficulties
|
|
beginloop(0x04)
|
|
if_chr_dead(CHR_JONATHAN, /*goto*/ 0x06)
|
|
if_chr_death_animation_finished(CHR_JONATHAN, /*goto*/ 0x06)
|
|
if_chr_knockedout(CHR_JONATHAN, /*goto*/ 0x06)
|
|
endloop(0x04)
|
|
|
|
label(0x06)
|
|
if_stage_flag_eq(STAGEFLAG_STARTED_OUTRO, TRUE, /*goto*/ 0x32)
|
|
show_hudmsg(CHR_BOND, L_TRA_029) // "Jonathan has been killed."
|
|
set_stage_flag(STAGEFLAG_JON_DEAD)
|
|
|
|
label(0x32)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func100c_medpack_activation[] = {
|
|
beginloop(0x67)
|
|
if_stage_flag_eq(STAGEFLAG_ENTERED_HANGAR, TRUE, /*goto*/ 0x04)
|
|
endloop(0x67)
|
|
|
|
beginloop(0x04)
|
|
chr_toggle_p1p2(CHR_SELF)
|
|
if_difficulty_lt(DIFF_SA, /*goto*/ 0x0c)
|
|
if_chr_activated_object(CHR_P1P2, OBJ_HOVERBED, /*goto*/ 0x06)
|
|
reloop(0x04)
|
|
|
|
label(0x06)
|
|
if_chr_weapon_equipped(CHR_P1P2, WEAPON_AUTOSURGEON, /*goto*/ 0x32)
|
|
endloop(0x04)
|
|
|
|
label(0x32)
|
|
set_stage_flag(STAGEFLAG_MEDPACK_STARTED)
|
|
show_hudmsg(CHR_P1P2, L_TRA_033) // "Alien medpack activated."
|
|
#if VERSION >= VERSION_NTSC_1_0
|
|
assign_sound(SFX_814C, CHANNEL_7)
|
|
#else
|
|
assign_sound(SFX_043C, CHANNEL_7)
|
|
#endif
|
|
control_sound_from_object(CHANNEL_7, OBJ_HOVERBED, TRUE)
|
|
restart_timer
|
|
|
|
beginloop(0x12)
|
|
if_timer_gt(120, /*goto*/ 0x32)
|
|
endloop(0x12)
|
|
|
|
label(0x32)
|
|
#if VERSION >= VERSION_NTSC_1_0
|
|
assign_sound(SFX_814D, CHANNEL_7)
|
|
#else
|
|
assign_sound(SFX_047C, CHANNEL_7)
|
|
#endif
|
|
control_sound_from_object(CHANNEL_7, OBJ_HOVERBED, TRUE)
|
|
restart_timer
|
|
|
|
beginloop(0x08)
|
|
if_timer_gt(2000, /*goto*/ 0x09)
|
|
if_stage_flag_eq(STAGEFLAG_TRIGGER_MEDPACK_FINISH, TRUE, /*goto*/ 0x09)
|
|
endloop(0x08)
|
|
|
|
label(0x09)
|
|
mute_channel(CHANNEL_7)
|
|
#if VERSION >= VERSION_NTSC_1_0
|
|
assign_sound(SFX_814E, CHANNEL_7)
|
|
#else
|
|
assign_sound(SFX_043D, CHANNEL_7)
|
|
#endif
|
|
control_sound_from_object(CHANNEL_7, 0x00, TRUE)
|
|
show_hudmsg(CHR_P1P2, L_TRA_035) // "Alien medpack has been administered."
|
|
yield
|
|
|
|
beginloop(0x0c)
|
|
#if VERSION >= VERSION_NTSC_1_0
|
|
chr_toggle_p1p2(CHR_SELF)
|
|
#endif
|
|
if_chr_in_room(CHR_P1P2, 0x00, 0x00df, /*goto*/ 0x32)
|
|
endloop(0x0c)
|
|
|
|
label(0x32)
|
|
if_chr_death_animation_finished(CHR_JONATHAN, /*goto*/ 0x32)
|
|
if_chr_dead(CHR_JONATHAN, /*goto*/ 0x32)
|
|
if_chr_knockedout(CHR_JONATHAN, /*goto*/ 0x32)
|
|
if_chr_death_animation_finished(CHR_BOND, /*goto*/ 0x33)
|
|
if_chr_dead(CHR_BOND, /*goto*/ 0x33)
|
|
if_chr_knockedout(CHR_BOND, /*goto*/ 0x33)
|
|
goto_next(0x06)
|
|
|
|
// Joanna is dead
|
|
label(0x33)
|
|
if_chr_death_animation_finished(CHR_COOP, /*goto*/ 0x32)
|
|
if_chr_dead(CHR_COOP, /*goto*/ 0x32)
|
|
if_chr_knockedout(CHR_COOP, /*goto*/ 0x32)
|
|
goto_next(0x06)
|
|
|
|
// Everyone is alive
|
|
label(0x06)
|
|
set_ailist(CHR_JONATHAN, GAILIST_IDLE)
|
|
set_ailist(CHR_ELVIS, GAILIST_IDLE)
|
|
set_ailist(CHR_SELF, 0x0411)
|
|
|
|
// Jonathan is dead
|
|
label(0x32)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func0412_init_elvis[] = {
|
|
dprint 'E','L','V','I','S',' ','W','O','K','E','\n',0,
|
|
stop_chr
|
|
#if VERSION >= VERSION_NTSC_1_0
|
|
set_self_chrflag(CHRCFLAG_PUSHABLE)
|
|
#endif
|
|
set_stage_flag(STAGEFLAG_ELVIS_REVIVED)
|
|
label(0x0a)
|
|
label(0x06)
|
|
add_health_or_armor(200)
|
|
set_chr_maxdamage(CHR_SELF, 1)
|
|
set_ailist(CHR_SELF, AILIST_ELVIS_FOLLOW)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func040b_elvis_follow[] = {
|
|
dprint 'E','L','V','I','S',' ','F','O','L','L','O','W','\n',0,
|
|
set_target_chr(CHR_JONATHAN)
|
|
|
|
label(0x5a)
|
|
restart_timer
|
|
|
|
beginloop(0x5b)
|
|
// @bug: The pad and distance arguments are swapped here, so this is
|
|
// actually checking if Elvis is within 3510 units of pad 0x1e. This
|
|
// pad is up near the start of Infiltration so this will never pass.
|
|
#if VERSION >= VERSION_NTSC_1_0
|
|
if_chr_distance_to_pad_lt(CHR_SELF, 3510, 30, /*goto*/ 0x08)
|
|
#else
|
|
if_chr_distance_to_pad_lt(CHR_SELF, 3510, 20, /*goto*/ 0x08)
|
|
#endif
|
|
if_los_to_target(/*goto*/ 0x06)
|
|
goto_next(0x5c)
|
|
|
|
label(0x06)
|
|
if_distance_to_target_gt(200, /*goto*/ 0x5c)
|
|
endloop(0x5b)
|
|
|
|
label(0x5c)
|
|
restart_timer
|
|
try_run_to_target(/*goto*/ 0x5d)
|
|
|
|
label(0x5d)
|
|
restart_timer
|
|
yield
|
|
label(0x06)
|
|
#if VERSION >= VERSION_NTSC_1_0
|
|
if_chr_distance_to_pad_lt(CHR_SELF, 300, PAD_TRA_015F, /*goto*/ 0x08)
|
|
#else
|
|
if_chr_distance_to_pad_lt(CHR_SELF, 200, PAD_TRA_015F, /*goto*/ 0x08)
|
|
#endif
|
|
label(0x32)
|
|
set_target_chr(CHR_JONATHAN)
|
|
if_distance_to_target_lt(200, /*goto*/ 0x5e)
|
|
if_timer_gt(120, /*goto*/ 0x5e)
|
|
if_chr_stopped(/*goto*/ 0x5e)
|
|
goto_first(0x5d)
|
|
|
|
label(0x5e)
|
|
goto_first(0x5a)
|
|
|
|
label(0x08)
|
|
stop_chr
|
|
|
|
beginloop(0x09)
|
|
endloop(0x09)
|
|
|
|
endlist
|
|
};
|
|
|
|
u8 func100f_terminals[] = {
|
|
beginloop(0x04)
|
|
chr_toggle_p1p2(CHR_SELF)
|
|
if_chr_activated_object(CHR_P1P2, OBJ_TERMINAL1, /*goto*/ 0x08)
|
|
if_chr_activated_object(CHR_P1P2, OBJ_TERMINAL2, /*goto*/ 0x0a)
|
|
reloop(0x04)
|
|
|
|
// Terminal 1
|
|
label(0x08)
|
|
assign_sound(SFX_043A, CHANNEL_7)
|
|
control_sound_from_object(CHANNEL_7, OBJ_TERMINAL1, TRUE)
|
|
if_stage_flag_eq(STAGEFLAG_HANGAR_X_MUSIC_STARTED, TRUE, /*goto*/ 0x32)
|
|
show_hudmsg(CHR_P1P2, L_TRA_080) // "Console is not active."
|
|
goto_next(0x0f)
|
|
|
|
// Terminal 1 active
|
|
label(0x32)
|
|
if_stage_flag_eq(STAGEFLAG_INNER_DOOR_OPENING, TRUE, /*goto*/ 0x0f)
|
|
show_hudmsg(CHR_P1P2, L_TRA_039) // "Inner hangar door is opening."
|
|
if_stage_flag_eq(STAGEFLAG_HANGAR_X_MUSIC_STARTED, FALSE, /*goto*/ 0x32)
|
|
set_stage_flag(STAGEFLAG_INNER_DOOR_OPENING)
|
|
label(0x32)
|
|
open_door(0x2c)
|
|
open_door(0x2d)
|
|
set_object_flag(0x2c, OBJFLAG_DOOR_KEEPOPEN)
|
|
set_object_flag(0x2d, OBJFLAG_DOOR_KEEPOPEN)
|
|
reloop(0x04)
|
|
|
|
// Terminal 2
|
|
label(0x0a)
|
|
assign_sound(SFX_043A, CHANNEL_7)
|
|
control_sound_from_object(CHANNEL_7, OBJ_TERMINAL2, TRUE)
|
|
if_stage_flag_eq(STAGEFLAG_HANGAR_X_MUSIC_STARTED, TRUE, /*goto*/ 0x32)
|
|
show_hudmsg(CHR_P1P2, L_TRA_080) // "Console is not active."
|
|
goto_next(0x0f)
|
|
|
|
// Terminal 2 active
|
|
label(0x32)
|
|
if_stage_flag_eq(STAGEFLAG_OUTER_DOOR_OPENING, TRUE, /*goto*/ 0x0f)
|
|
show_hudmsg(CHR_P1P2, L_TRA_037) // "Outer hangar door is opening."
|
|
if_stage_flag_eq(STAGEFLAG_HANGAR_X_MUSIC_STARTED, FALSE, /*goto*/ 0x32)
|
|
set_stage_flag(STAGEFLAG_OUTER_DOOR_OPENING)
|
|
label(0x32)
|
|
open_door(0x2e)
|
|
open_door(0x2f)
|
|
set_object_flag(0x2e, OBJFLAG_DOOR_KEEPOPEN)
|
|
set_object_flag(0x2f, OBJFLAG_DOOR_KEEPOPEN)
|
|
reloop(0x04)
|
|
|
|
// Wait 2 seconds
|
|
label(0x0f)
|
|
restart_timer
|
|
|
|
beginloop(0x10)
|
|
if_timer_gt(120, /*goto*/ 0x32)
|
|
endloop(0x10)
|
|
|
|
label(0x32)
|
|
endloop(0x04)
|
|
|
|
endlist
|
|
};
|
|
|
|
u8 func100d_check_terminals_destroyed[] = {
|
|
beginloop(0x04)
|
|
if_stage_flag_eq(STAGEFLAG_INNER_DOOR_OPENING, TRUE, /*goto*/ 0x06)
|
|
if_object_in_good_condition(OBJ_TERMINAL1, /*goto*/ 0x06)
|
|
if_door_state(0x2c, (DOORSTATE_OPEN | DOORSTATE_OPENING), /*goto*/ 0x06)
|
|
goto_next(0x08)
|
|
|
|
label(0x06)
|
|
if_stage_flag_eq(STAGEFLAG_OUTER_DOOR_OPENING, TRUE, /*goto*/ 0x06)
|
|
if_object_in_good_condition(OBJ_TERMINAL2, /*goto*/ 0x06)
|
|
if_door_state(0x2e, (DOORSTATE_OPEN | DOORSTATE_OPENING), /*goto*/ 0x06)
|
|
goto_first(0x08)
|
|
|
|
label(0x06)
|
|
endloop(0x04)
|
|
|
|
label(0x08)
|
|
show_hudmsg(CHR_BOND, L_TRA_036) // "Mission critical object destroyed."
|
|
set_stage_flag(STAGEFLAG_HANGAR_TERMINAL_DESTROYED)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func100e_check_elvis_dead[] = {
|
|
beginloop(0x04)
|
|
if_chr_dead(CHR_ELVIS, /*goto*/ 0x06)
|
|
if_chr_death_animation_finished(CHR_ELVIS, /*goto*/ 0x06)
|
|
if_chr_knockedout(CHR_ELVIS, /*goto*/ 0x06)
|
|
endloop(0x04)
|
|
|
|
label(0x06)
|
|
if_stage_flag_eq(STAGEFLAG_STARTED_OUTRO, TRUE, /*goto*/ 0x32)
|
|
set_stage_flag(STAGEFLAG_ELVIS_DEAD)
|
|
show_hudmsg(CHR_BOND, L_TRA_030) // "Elvis has been killed."
|
|
label(0x32)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func1010_check_end_level[] = {
|
|
beginloop(0x04)
|
|
if_difficulty_lt(DIFF_PA, /*goto*/ 0x32)
|
|
if_objective_complete(0, /*goto*/ 0x32)
|
|
reloop(0x04)
|
|
|
|
label(0x32)
|
|
#if VERSION < VERSION_NTSC_1_0
|
|
dprint '1','\n',0,
|
|
#endif
|
|
if_objective_complete(1, /*goto*/ 0x32)
|
|
reloop(0x04)
|
|
|
|
label(0x32)
|
|
#if VERSION < VERSION_NTSC_1_0
|
|
dprint '2','\n',0,
|
|
#endif
|
|
if_difficulty_lt(DIFF_SA, /*goto*/ 0x32)
|
|
if_objective_complete(3, /*goto*/ 0x32)
|
|
reloop(0x04)
|
|
|
|
label(0x32)
|
|
#if VERSION < VERSION_NTSC_1_0
|
|
dprint '3','\n',0,
|
|
#endif
|
|
if_objective_complete(2, /*goto*/ 0x32)
|
|
reloop(0x04)
|
|
|
|
label(0x32)
|
|
if_stage_flag_eq(STAGEFLAG_HANGAR_TERMINAL_DESTROYED, FALSE, /*goto*/ 0x32)
|
|
reloop(0x04)
|
|
|
|
label(0x32)
|
|
#if VERSION < VERSION_NTSC_1_0
|
|
dprint '4','\n',0,
|
|
#endif
|
|
if_stage_flag_eq(STAGEFLAG_INNER_DOOR_OPENING, TRUE, /*goto*/ 0x32)
|
|
reloop(0x04)
|
|
|
|
label(0x32)
|
|
dprint '5','\n',0,
|
|
if_stage_flag_eq(STAGEFLAG_OUTER_DOOR_OPENING, TRUE, /*goto*/ 0x32)
|
|
reloop(0x04)
|
|
|
|
label(0x32)
|
|
dprint '6','\n',0,
|
|
if_chr_death_animation_finished(CHR_ELVIS, /*goto*/ 0x0f)
|
|
if_chr_dead(CHR_ELVIS, /*goto*/ 0x0f)
|
|
if_chr_knockedout(CHR_ELVIS, /*goto*/ 0x0f)
|
|
|
|
if_chr_death_animation_finished(CHR_JONATHAN, /*goto*/ 0x0f)
|
|
if_chr_dead(CHR_JONATHAN, /*goto*/ 0x0f)
|
|
if_chr_knockedout(CHR_JONATHAN, /*goto*/ 0x0f)
|
|
|
|
if_chr_death_animation_finished(CHR_BOND, /*goto*/ 0x32)
|
|
if_chr_dead(CHR_BOND, /*goto*/ 0x32)
|
|
if_chr_knockedout(CHR_BOND, /*goto*/ 0x32)
|
|
goto_next(0x06)
|
|
|
|
// Joanna is dead
|
|
label(0x32)
|
|
if_chr_death_animation_finished(CHR_COOP, /*goto*/ 0x33)
|
|
if_chr_dead(CHR_COOP, /*goto*/ 0x33)
|
|
if_chr_knockedout(CHR_COOP, /*goto*/ 0x33)
|
|
goto_next(0x06)
|
|
|
|
// Both Joanna and Velvet are dead
|
|
label(0x33)
|
|
end_level
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
|
|
// Mission complete
|
|
label(0x06)
|
|
if_stage_flag_eq(STAGEFLAG_JO_DOING_TERMINALS, FALSE, /*goto*/ 0x32)
|
|
set_ailist(CHR_SELF, AILIST_UFO_EXIT)
|
|
|
|
label(0x32)
|
|
set_invincible(CHR_BOND)
|
|
set_ailist(CHR_SELF, AILIST_OUTRO)
|
|
|
|
// Jonathan and/or Elvis are dead
|
|
label(0x0f)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func1011_unlock_doors_when_jo_escaping[] = {
|
|
beginloop(0x04)
|
|
if_stage_flag_eq(STAGEFLAG_JO_ESCAPE_STARTED, TRUE, /*goto*/ 0x06)
|
|
endloop(0x04)
|
|
|
|
label(0x06)
|
|
unlock_door(0x06, 0x40)
|
|
unlock_door(0x07, 0x40)
|
|
unlock_door(0x08, 0x04)
|
|
unlock_door(0x09, 0x04)
|
|
unlock_door(0x1d, 0x40)
|
|
unlock_door(0x1e, 0x40)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func1012_hoverbike_auto_doors[] = {
|
|
beginloop(0x04)
|
|
chr_toggle_p1p2(CHR_SELF)
|
|
if_stage_flag_eq(STAGEFLAG_JO_ESCAPE_STARTED, TRUE, /*goto*/ 0x06)
|
|
reloop(0x04)
|
|
|
|
label(0x06)
|
|
if_chr_distance_to_pad_lt(CHR_P1P2, 500, PAD_TRA_0176, /*goto*/ 0x08)
|
|
if_chr_distance_to_pad_lt(CHR_P1P2, 500, PAD_TRA_0158, /*goto*/ 0x09)
|
|
if_chr_distance_to_pad_lt(CHR_P1P2, 500, PAD_TRA_00DB, /*goto*/ 0x0a)
|
|
if_chr_distance_to_pad_lt(CHR_P1P2, 500, PAD_TRA_00A1, /*goto*/ 0x0c)
|
|
if_chr_distance_to_pad_lt(CHR_P1P2, 500, PAD_TRA_009E, /*goto*/ 0x0d)
|
|
reloop(0x04)
|
|
|
|
// Pad/door 1
|
|
label(0x08)
|
|
if_door_state(0x0a, (DOORSTATE_CLOSED | DOORSTATE_CLOSING), /*goto*/ 0x06)
|
|
reloop(0x04)
|
|
|
|
label(0x06)
|
|
set_object_flag(0x0a, OBJFLAG_DOOR_KEEPOPEN)
|
|
open_door(0x0a)
|
|
reloop(0x04)
|
|
|
|
// Pad/door 2
|
|
label(0x09)
|
|
if_door_state(0x0b, (DOORSTATE_CLOSED | DOORSTATE_CLOSING), /*goto*/ 0x06)
|
|
reloop(0x04)
|
|
|
|
label(0x06)
|
|
set_object_flag(0x0b, OBJFLAG_DOOR_KEEPOPEN)
|
|
open_door(0x0b)
|
|
reloop(0x04)
|
|
|
|
// Pad/door 3
|
|
label(0x0a)
|
|
if_door_state(0x08, (DOORSTATE_CLOSED | DOORSTATE_CLOSING), /*goto*/ 0x06)
|
|
reloop(0x04)
|
|
|
|
label(0x06)
|
|
set_object_flag(0x08, OBJFLAG_DOOR_KEEPOPEN)
|
|
set_object_flag(0x09, OBJFLAG_DOOR_KEEPOPEN)
|
|
open_door(0x08)
|
|
open_door(0x09)
|
|
reloop(0x04)
|
|
|
|
// Pad/door 4
|
|
label(0x0c)
|
|
if_door_state(0x0c, (DOORSTATE_CLOSED | DOORSTATE_CLOSING), /*goto*/ 0x06)
|
|
reloop(0x04)
|
|
|
|
label(0x06)
|
|
set_object_flag(0x0c, OBJFLAG_DOOR_KEEPOPEN)
|
|
open_door(0x0c)
|
|
reloop(0x04)
|
|
|
|
// Pad/door 5
|
|
label(0x0d)
|
|
if_door_state(0x05, (DOORSTATE_CLOSED | DOORSTATE_CLOSING), /*goto*/ 0x06)
|
|
reloop(0x04)
|
|
|
|
label(0x06)
|
|
set_object_flag(0x05, OBJFLAG_DOOR_KEEPOPEN)
|
|
open_door(0x05)
|
|
endloop(0x04)
|
|
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func040c_hidden_guardtype1[] = {
|
|
set_chr_chrflag(CHR_SELF, CHRCFLAG_HIDDEN)
|
|
set_chr_chrflag(CHR_SELF, CHRCFLAG_INVINCIBLE)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func1016_enable_guards_after_meetup[] = {
|
|
beginloop(0x04)
|
|
if_stage_flag_eq(STAGEFLAG_MET_JON, TRUE, /*goto*/ 0x06)
|
|
endloop(0x04)
|
|
|
|
label(0x06)
|
|
enable_chr(0x0d)
|
|
enable_chr(0x0e)
|
|
enable_chr(0x0f)
|
|
enable_chr(0x10)
|
|
enable_chr(0x11)
|
|
enable_chr(0x12)
|
|
enable_chr(0x13)
|
|
enable_chr(0x14)
|
|
enable_chr(0x15)
|
|
enable_chr(0x16)
|
|
unset_chr_chrflag(0x0d, CHRCFLAG_HIDDEN)
|
|
unset_chr_chrflag(0x0d, CHRCFLAG_INVINCIBLE)
|
|
set_ailist(0x0d, AILIST_INIT_SUPERDRAGON_GUARD)
|
|
unset_chr_chrflag(0x0e, CHRCFLAG_HIDDEN)
|
|
unset_chr_chrflag(0x0e, CHRCFLAG_INVINCIBLE)
|
|
set_ailist(0x0e, AILIST_INIT_SUPERDRAGON_GUARD)
|
|
unset_chr_chrflag(0x0f, CHRCFLAG_HIDDEN)
|
|
unset_chr_chrflag(0x0f, CHRCFLAG_INVINCIBLE)
|
|
set_ailist(0x0f, AILIST_INIT_SUPERDRAGON_GUARD)
|
|
unset_chr_chrflag(0x10, CHRCFLAG_HIDDEN)
|
|
unset_chr_chrflag(0x10, CHRCFLAG_INVINCIBLE)
|
|
set_ailist(0x10, AILIST_INIT_SUPERDRAGON_GUARD)
|
|
unset_chr_chrflag(0x11, CHRCFLAG_HIDDEN)
|
|
unset_chr_chrflag(0x11, CHRCFLAG_INVINCIBLE)
|
|
set_ailist(0x11, AILIST_INIT_SUPERDRAGON_GUARD)
|
|
unset_chr_chrflag(0x12, CHRCFLAG_HIDDEN)
|
|
unset_chr_chrflag(0x12, CHRCFLAG_INVINCIBLE)
|
|
set_ailist(0x12, AILIST_INIT_SUPERDRAGON_GUARD)
|
|
unset_chr_chrflag(0x13, CHRCFLAG_HIDDEN)
|
|
unset_chr_chrflag(0x13, CHRCFLAG_INVINCIBLE)
|
|
set_ailist(0x13, AILIST_INIT_SUPERDRAGON_GUARD)
|
|
unset_chr_chrflag(0x14, CHRCFLAG_HIDDEN)
|
|
unset_chr_chrflag(0x14, CHRCFLAG_INVINCIBLE)
|
|
set_ailist(0x14, AILIST_INIT_SUPERDRAGON_GUARD)
|
|
unset_chr_chrflag(0x15, CHRCFLAG_HIDDEN)
|
|
unset_chr_chrflag(0x15, CHRCFLAG_INVINCIBLE)
|
|
set_ailist(0x15, AILIST_INIT_SUPERDRAGON_GUARD)
|
|
unset_chr_chrflag(0x16, CHRCFLAG_HIDDEN)
|
|
unset_chr_chrflag(0x16, CHRCFLAG_INVINCIBLE)
|
|
set_ailist(0x16, AILIST_INIT_SUPERDRAGON_GUARD)
|
|
rebuild_teams
|
|
rebuild_squadrons
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func1017_check_both_hangar_doors_open[] = {
|
|
beginloop(0x04)
|
|
if_stage_flag_eq(STAGEFLAG_INNER_DOOR_OPENING, TRUE, /*goto*/ 0x32)
|
|
reloop(0x04)
|
|
|
|
label(0x32)
|
|
if_stage_flag_eq(STAGEFLAG_OUTER_DOOR_OPENING, TRUE, /*goto*/ 0x32)
|
|
endloop(0x04)
|
|
|
|
label(0x32)
|
|
show_hudmsg(CHR_BOND, L_TRA_053) // "The hangar doors are now open."
|
|
set_stage_flag(STAGEFLAG_BOTH_HANGAR_DOORS_OPEN)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func040d_hidden_guardtype2[] = {
|
|
set_chr_chrflag(CHR_SELF, CHRCFLAG_HIDDEN)
|
|
set_chr_chrflag(CHR_SELF, CHRCFLAG_INVINCIBLE)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func1018_unhide_guards_when_jo_escaping[] = {
|
|
beginloop(0x04)
|
|
if_stage_flag_eq(STAGEFLAG_JO_ESCAPE_STARTED, TRUE, /*goto*/ 0x06)
|
|
endloop(0x04)
|
|
|
|
label(0x06)
|
|
unset_chr_chrflag(0x16, CHRCFLAG_HIDDEN)
|
|
unset_chr_chrflag(0x16, CHRCFLAG_INVINCIBLE)
|
|
set_ailist(0x16, AILIST_INIT_SUPERDRAGON_GUARD)
|
|
unset_chr_chrflag(0x17, CHRCFLAG_HIDDEN)
|
|
unset_chr_chrflag(0x17, CHRCFLAG_INVINCIBLE)
|
|
set_ailist(0x17, AILIST_INIT_SUPERDRAGON_GUARD)
|
|
unset_chr_chrflag(0x18, CHRCFLAG_HIDDEN)
|
|
unset_chr_chrflag(0x18, CHRCFLAG_INVINCIBLE)
|
|
set_ailist(0x18, AILIST_INIT_SUPERDRAGON_GUARD)
|
|
unset_chr_chrflag(0x19, CHRCFLAG_HIDDEN)
|
|
unset_chr_chrflag(0x19, CHRCFLAG_INVINCIBLE)
|
|
set_ailist(0x19, AILIST_INIT_SUPERDRAGON_GUARD)
|
|
unset_chr_chrflag(0x1a, CHRCFLAG_HIDDEN)
|
|
unset_chr_chrflag(0x1a, CHRCFLAG_INVINCIBLE)
|
|
set_ailist(0x1a, AILIST_INIT_SUPERDRAGON_GUARD)
|
|
unset_chr_chrflag(0x1b, CHRCFLAG_HIDDEN)
|
|
unset_chr_chrflag(0x1b, CHRCFLAG_INVINCIBLE)
|
|
set_ailist(0x1b, AILIST_INIT_SUPERDRAGON_GUARD)
|
|
unset_chr_chrflag(0x1c, CHRCFLAG_HIDDEN)
|
|
unset_chr_chrflag(0x1c, CHRCFLAG_INVINCIBLE)
|
|
set_ailist(0x1c, AILIST_INIT_SUPERDRAGON_GUARD)
|
|
unset_chr_chrflag(0x1d, CHRCFLAG_HIDDEN)
|
|
unset_chr_chrflag(0x1d, CHRCFLAG_INVINCIBLE)
|
|
set_ailist(0x1d, AILIST_INIT_SUPERDRAGON_GUARD)
|
|
unset_chr_chrflag(0x1e, CHRCFLAG_HIDDEN)
|
|
unset_chr_chrflag(0x1e, CHRCFLAG_INVINCIBLE)
|
|
set_ailist(0x1e, AILIST_INIT_SUPERDRAGON_GUARD)
|
|
unset_chr_chrflag(0x1f, CHRCFLAG_HIDDEN)
|
|
unset_chr_chrflag(0x1f, CHRCFLAG_INVINCIBLE)
|
|
set_ailist(0x1f, AILIST_INIT_SUPERDRAGON_GUARD)
|
|
unlock_door(0x0c, 0x40)
|
|
unlock_door(0x15, 0x40)
|
|
unlock_door(0x16, 0x40)
|
|
unlock_door(0x17, 0x40)
|
|
unlock_door(0x18, 0x40)
|
|
unlock_door(0x19, 0x40)
|
|
unlock_door(0x1a, 0x40)
|
|
unlock_door(0x1b, 0x40)
|
|
unlock_door(0x1c, 0x40)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func040e_hidden_biotech[] = {
|
|
label(0x04)
|
|
set_self_chrflag(CHRCFLAG_HIDDEN)
|
|
set_self_chrflag(CHRCFLAG_INVINCIBLE)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func1019_enable_biotechs_after_stash[] = {
|
|
beginloop(0x04)
|
|
if_stage_flag_eq(STAGEFLAG_ELVIS_STASHED, TRUE, /*goto*/ 0x32)
|
|
endloop(0x04)
|
|
|
|
label(0x32)
|
|
unset_chr_chrflag(0x25, CHRCFLAG_HIDDEN)
|
|
unset_chr_chrflag(0x25, CHRCFLAG_INVINCIBLE)
|
|
set_ailist(0x25, AILIST_INIT_BIOTECH)
|
|
unset_chr_chrflag(0x26, CHRCFLAG_HIDDEN)
|
|
unset_chr_chrflag(0x26, CHRCFLAG_INVINCIBLE)
|
|
set_ailist(0x26, AILIST_INIT_BIOTECH)
|
|
unset_chr_chrflag(0x27, CHRCFLAG_HIDDEN)
|
|
unset_chr_chrflag(0x27, CHRCFLAG_INVINCIBLE)
|
|
set_ailist(0x27, AILIST_INIT_BIOTECH)
|
|
unset_chr_chrflag(0x28, CHRCFLAG_HIDDEN)
|
|
unset_chr_chrflag(0x28, CHRCFLAG_INVINCIBLE)
|
|
set_ailist(0x28, AILIST_INIT_BIOTECH)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func1002_intro[] = {
|
|
set_chr_chrflag(CHR_COOP, CHRCFLAG_HIDDEN)
|
|
set_chr_chrflag(CHR_ANTI, CHRCFLAG_HIDDEN)
|
|
play_cutscene_track(MUSIC_ESCAPE_INTRO)
|
|
camera_movement(ANIM_CUT_TRA_INTRO_CAM)
|
|
cmd0175(60)
|
|
|
|
set_chr_chrflag(CHR_BOND, CHRCFLAG_UNPLAYABLE)
|
|
set_chr_hiddenflag(CHR_BOND, CHRHFLAG_00020000)
|
|
chr_do_animation(ANIM_CUT_TRA_INTRO_JO, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_BOND, 4)
|
|
|
|
set_chr_chrflag(0x23, CHRCFLAG_INVINCIBLE)
|
|
set_chr_chrflag(0x23, CHRCFLAG_UNPLAYABLE)
|
|
unset_chr_chrflag(0x23, CHRCFLAG_HIDDEN)
|
|
set_chr_hiddenflag(0x23, CHRHFLAG_00020000)
|
|
chr_do_animation(ANIM_CUT_TRA_INTRO_BIO1, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, 0x23, 4)
|
|
|
|
set_chr_chrflag(0x24, CHRCFLAG_INVINCIBLE)
|
|
set_chr_chrflag(0x24, CHRCFLAG_UNPLAYABLE)
|
|
unset_chr_chrflag(0x24, CHRCFLAG_HIDDEN)
|
|
set_chr_hiddenflag(0x24, CHRHFLAG_00020000)
|
|
chr_do_animation(ANIM_CUT_TRA_INTRO_BIO2, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, 0x24, 4)
|
|
|
|
set_object_flag2(OBJ_HOVERBED, OBJFLAG2_04000000)
|
|
set_object_flag3(OBJ_HOVERBED, OBJFLAG3_00000010)
|
|
object_do_animation(ANIM_CUT_TRA_INTRO_BED, OBJ_HOVERBED, 0x04, 0xffff)
|
|
restart_timer
|
|
fade_to_color(0x000000ff, 0)
|
|
fade_to_color(0x00000000, 90)
|
|
set_cutscene_weapon(CHR_BOND, WEAPON_NONE, WEAPON_NONE)
|
|
yield
|
|
set_cutscene_weapon(CHR_BOND, WEAPON_FALCON2_SCOPE, WEAPON_NONE)
|
|
|
|
#define wait_until(time, loopid) \
|
|
beginloop(loopid) \
|
|
if_controller_button_pressed(/*goto*/ 0x68) \
|
|
if_timer_gt(time, /*goto*/ 0x06) \
|
|
endloop(loopid) \
|
|
label(0x06)
|
|
|
|
wait_until(2, 0xc5)
|
|
speak(CHR_BOND, L_TRA_081, SFX_81BA, CHANNEL_7, COLOR_02_WHITE) // "What the hell do you think you're doing? This is s..."
|
|
|
|
wait_until(60, 0x6a)
|
|
play_sound(SFX_0161, CHANNEL_6)
|
|
|
|
wait_until(115, 0x6b)
|
|
play_sound(SFX_0162, CHANNEL_6)
|
|
|
|
wait_until(156, 0x6c)
|
|
play_sound(SFX_0163, CHANNEL_5)
|
|
|
|
wait_until(205, 0x6d)
|
|
play_sound(SFX_0164, CHANNEL_6)
|
|
|
|
wait_until(260, 0x6e)
|
|
play_sound(SFX_0161, CHANNEL_5)
|
|
|
|
wait_until(341, 0x6f)
|
|
play_sound(SFX_0162, CHANNEL_6)
|
|
open_door(0x0e)
|
|
open_door(0x0f)
|
|
|
|
wait_until(444, 0x70)
|
|
play_sound(SFX_0163, CHANNEL_5)
|
|
|
|
wait_until(468, 0x71)
|
|
play_sound(SFX_0161, CHANNEL_6)
|
|
|
|
wait_until(490, 0x72)
|
|
play_sound(SFX_0164, CHANNEL_5)
|
|
|
|
wait_until(528, 0x73)
|
|
play_sound(SFX_0161, CHANNEL_6)
|
|
|
|
wait_until(545, 0x8a)
|
|
speak(CHR_BOND, L_TRA_084, MP3_0758, CHANNEL_7, COLOR_09_BLUE) // "I don't care much for procedures!"
|
|
|
|
wait_until(588, 0x74)
|
|
play_sound(SFX_0162, CHANNEL_5)
|
|
|
|
wait_until(632, 0x75)
|
|
play_sound(SFX_0163, CHANNEL_6)
|
|
|
|
wait_until(698, 0x76)
|
|
play_sound(SFX_0164, CHANNEL_6)
|
|
|
|
wait_until(706, 0x77)
|
|
|
|
wait_until(770, 0xc6)
|
|
speak(CHR_BOND, L_TRA_082, MP3_0436, CHANNEL_7, COLOR_02_WHITE) // "Director Easton will hear about this, young lady."
|
|
|
|
wait_until(810, 0xbe)
|
|
close_door(0x0e)
|
|
close_door(0x0f)
|
|
|
|
wait_until(830, 0x78)
|
|
play_sound(SFX_0161, CHANNEL_6)
|
|
|
|
wait_until(872, 0x79)
|
|
play_sound(SFX_0162, CHANNEL_4)
|
|
|
|
wait_until(998, 0xc7)
|
|
speak(CHR_BOND, L_TRA_083, MP3_0437, CHANNEL_7, COLOR_02_WHITE) // "You can't take that! It's government property! Thi..."
|
|
|
|
wait_until(1032, 0x7b)
|
|
play_sound(SFX_0161, CHANNEL_5)
|
|
|
|
wait_until(1224, 0x7c)
|
|
play_sound(SFX_0164, CHANNEL_6)
|
|
|
|
wait_until(1260, 0x7d)
|
|
play_sound(SFX_0163, CHANNEL_4)
|
|
|
|
wait_until(1286, 0x7e)
|
|
play_sound(SFX_0161, CHANNEL_6)
|
|
|
|
wait_until(1325, 0x7f)
|
|
play_sound(SFX_01B9, CHANNEL_6)
|
|
|
|
wait_until(1334, 0x80)
|
|
play_sound(SFX_00FB, CHANNEL_10)
|
|
|
|
wait_until(1342, 0x81)
|
|
play_sound(SFX_00FB, CHANNEL_10)
|
|
|
|
wait_until(1353, 0x82)
|
|
play_sound(SFX_00F9, CHANNEL_10)
|
|
|
|
wait_until(1362, 0x83)
|
|
|
|
wait_until(1372, 0x84)
|
|
play_sound(SFX_00FA, CHANNEL_10)
|
|
|
|
wait_until(1388, 0x85)
|
|
play_sound(SFX_01BA, CHANNEL_5)
|
|
|
|
wait_until(1396, 0x86)
|
|
play_sound(SFX_00FC, CHANNEL_10)
|
|
|
|
wait_until(1432, 0xbf)
|
|
open_door(0x10)
|
|
|
|
wait_until(1510, 0x8f)
|
|
play_sound(SFX_0162, CHANNEL_4)
|
|
|
|
wait_until(1544, 0x90)
|
|
play_sound(SFX_0163, CHANNEL_6)
|
|
|
|
wait_until(1590, 0x91)
|
|
play_sound(SFX_0164, CHANNEL_4)
|
|
|
|
wait_until(1624, 0x92)
|
|
play_sound(SFX_0161, CHANNEL_6)
|
|
|
|
wait_until(1662, 0x93)
|
|
play_sound(SFX_0162, CHANNEL_4)
|
|
|
|
wait_until(1716, 0x94)
|
|
play_sound(SFX_01B9, CHANNEL_6)
|
|
|
|
wait_until(1730, 0x95)
|
|
play_sound(SFX_00FE, CHANNEL_10)
|
|
play_sound(SFX_00FA, CHANNEL_10)
|
|
|
|
wait_until(1736, 0x96)
|
|
speak(CHR_BOND, L_TRA_063, MP3_0438, CHANNEL_7, COLOR_02_WHITE) // "Let's see how that overconfident thief deals with ..."
|
|
set_stage_flag(STAGEFLAG_GAS_ON)
|
|
|
|
wait_until(1773, 0x9a)
|
|
play_sound(SFX_01BB, CHANNEL_5)
|
|
|
|
wait_until(1822, 0xc0)
|
|
close_door(0x10)
|
|
|
|
wait_until(1826, 0x9f)
|
|
play_sound(SFX_00FD, CHANNEL_10)
|
|
|
|
wait_until(1834, 0xa0)
|
|
play_sound(SFX_00FD, CHANNEL_10)
|
|
|
|
wait_until(1850, 0xa1)
|
|
play_sound(SFX_00FA, CHANNEL_10)
|
|
|
|
wait_until(1926, 0xa4)
|
|
play_sound(SFX_0163, CHANNEL_5)
|
|
|
|
wait_until(2146, 0xa5)
|
|
play_sound(SFX_0164, CHANNEL_6)
|
|
|
|
wait_until(2180, 0xa6)
|
|
play_sound(SFX_0507, CHANNEL_5)
|
|
|
|
wait_until(2202, 0xa7)
|
|
play_sound(SFX_0161, CHANNEL_6)
|
|
|
|
wait_until(2218, 0xa8)
|
|
speak(CHR_BOND, L_TRA_064, MP3_0439, CHANNEL_7, COLOR_09_BLUE) // "What's that noise? Can't be... Gas!"
|
|
|
|
wait_until(2271, 0xa9)
|
|
play_sound(SFX_0162, CHANNEL_6)
|
|
|
|
wait_until(2300, 0xaa)
|
|
play_sound(SFX_0163, CHANNEL_5)
|
|
|
|
wait_until(2362, 0xab)
|
|
play_sound(SFX_0164, CHANNEL_6)
|
|
|
|
wait_until(2384, 0xac)
|
|
play_sound(SFX_0162, CHANNEL_6)
|
|
|
|
wait_until(2428, 0xad)
|
|
play_sound(SFX_0164, CHANNEL_6)
|
|
|
|
wait_until(2458, 0xae)
|
|
play_sound(SFX_0161, CHANNEL_6)
|
|
|
|
wait_until(2582, 0xaf)
|
|
speak(CHR_BOND, L_TRA_065, MP3_043A, CHANNEL_7, COLOR_02_WHITE) // "Noooo, that wasn't meant to happen!"
|
|
|
|
wait_until(2725, 0xb1)
|
|
play_sound(SFX_0429, CHANNEL_10)
|
|
|
|
wait_until(2748, 0xb2)
|
|
play_sound(SFX_0429, CHANNEL_10)
|
|
|
|
wait_until(2768, 0x97)
|
|
play_sound(SFX_0429, CHANNEL_10)
|
|
|
|
wait_until(2810, 0x98)
|
|
play_sound(SFX_0429, CHANNEL_10)
|
|
play_sound(SFX_0429, CHANNEL_10)
|
|
|
|
wait_until(2877, 0x99)
|
|
play_sound(SFX_0429, CHANNEL_10)
|
|
play_sound(SFX_0429, CHANNEL_10)
|
|
|
|
wait_until(2904, 0xb3)
|
|
play_sound(SFX_0429, CHANNEL_10)
|
|
play_sound(SFX_0429, CHANNEL_10)
|
|
|
|
wait_until(2924, 0xb5)
|
|
play_sound(SFX_0429, CHANNEL_10)
|
|
play_sound(SFX_0429, CHANNEL_10)
|
|
|
|
wait_until(2930, 0xb4)
|
|
play_sound(SFX_COUGH_04AF, CHANNEL_10)
|
|
|
|
wait_until(3024, 0x89)
|
|
play_sound(SFX_00FA, CHANNEL_10)
|
|
play_sound(SFX_00F9, CHANNEL_10)
|
|
|
|
wait_until(3060, 0xb0)
|
|
play_sound(SFX_COUGH_04B0, CHANNEL_10)
|
|
|
|
wait_until(3178, 0xb6)
|
|
play_sound(SFX_007D, CHANNEL_6)
|
|
|
|
wait_until(3242, 0xb7)
|
|
play_sound(SFX_01DC, CHANNEL_6)
|
|
play_sound(SFX_00FC, CHANNEL_10)
|
|
|
|
wait_until(3290, 0xb8)
|
|
play_sound(SFX_01DC, CHANNEL_6)
|
|
play_sound(SFX_00FD, CHANNEL_10)
|
|
|
|
wait_until(3334, 0xb9)
|
|
play_sound(SFX_00FA, CHANNEL_10)
|
|
|
|
wait_until(3894, 0xba)
|
|
speak(CHR_BOND, L_TRA_067, MP3_043B, CHANNEL_7, COLOR_09_BLUE) // "You idiot! We'd better get out of here."
|
|
|
|
wait_until(4146, 0xbb)
|
|
play_sound(SFX_0162, CHANNEL_6)
|
|
|
|
wait_until(4316, 0xbc)
|
|
play_sound(SFX_0164, CHANNEL_6)
|
|
|
|
wait_until(4336, 0xbd)
|
|
play_sound(SFX_0163, CHANNEL_5)
|
|
|
|
beginloop(0x08)
|
|
if_camera_animating(/*goto*/ 0x32)
|
|
goto_next(0x68)
|
|
|
|
label(0x32)
|
|
if_controller_button_pressed(/*goto*/ 0x68)
|
|
label(0x32)
|
|
endloop(0x08)
|
|
|
|
label(0x68)
|
|
set_stage_flag(STAGEFLAG_INTRO_DONE)
|
|
set_stage_flag(STAGEFLAG_GAS_ON)
|
|
mute_channel(CHANNEL_7)
|
|
mute_channel(CHANNEL_6)
|
|
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_CUT_TRA_INTRO_JO, -2, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_BOND, 2)
|
|
|
|
unset_chr_chrflag(0x23, CHRCFLAG_UNPLAYABLE)
|
|
set_chr_hiddenflag(0x23, CHRHFLAG_00020000)
|
|
chr_do_animation(ANIM_CUT_TRA_INTRO_BIO1, -2, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, 0x23, 2)
|
|
|
|
unset_chr_chrflag(0x24, CHRCFLAG_UNPLAYABLE)
|
|
set_chr_hiddenflag(0x24, CHRHFLAG_00020000)
|
|
chr_do_animation(ANIM_CUT_TRA_INTRO_BIO2, -2, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, 0x24, 2)
|
|
|
|
unset_object_flag2(OBJ_HOVERBED, OBJFLAG2_04000000)
|
|
set_object_flag3(OBJ_HOVERBED, OBJFLAG3_00000010)
|
|
object_do_animation(ANIM_CUT_TRA_INTRO_BED, OBJ_HOVERBED, 0x04, 0xfffe)
|
|
|
|
drop_concealed_items(0x23)
|
|
drop_concealed_items(0x24)
|
|
stop_cutscene_track
|
|
stop_ambient_track
|
|
enter_firstperson
|
|
revoke_control(CHR_BOND, 0)
|
|
yield
|
|
grab_object(CHR_BOND, OBJ_HOVERBED)
|
|
grant_control(CHR_BOND)
|
|
yield
|
|
kill(0x23)
|
|
kill(0x24)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func0c01_midcutscene[] = {
|
|
set_chr_chrflag(CHR_COOP, CHRCFLAG_HIDDEN)
|
|
set_chr_chrflag(CHR_ANTI, CHRCFLAG_HIDDEN)
|
|
play_cutscene_track(MUSIC_ESCAPE_MIDCUTSCENE)
|
|
camera_movement(ANIM_CUT_TRA_MID_CAM)
|
|
cmd0175(60)
|
|
disable_object(OBJ_HOVERBED)
|
|
#if VERSION >= VERSION_NTSC_1_0
|
|
set_target_chr(CHR_BOND)
|
|
if_chr_death_animation_finished(CHR_BOND, /*goto*/ 0x33)
|
|
if_chr_dead(CHR_BOND, /*goto*/ 0x33)
|
|
if_chr_knockedout(CHR_BOND, /*goto*/ 0x33)
|
|
goto_next(0x06)
|
|
|
|
label(0x33)
|
|
if_chr_death_animation_finished(CHR_COOP, /*goto*/ 0x06)
|
|
if_chr_dead(CHR_COOP, /*goto*/ 0x06)
|
|
if_chr_knockedout(CHR_COOP, /*goto*/ 0x06)
|
|
set_target_chr(CHR_COOP)
|
|
|
|
label(0x06)
|
|
unset_chr_chrflag(CHR_TARGET, CHRCFLAG_HIDDEN)
|
|
#endif
|
|
set_chr_chrflag(CHR_ELVIS, CHRCFLAG_INVINCIBLE)
|
|
set_chr_chrflag(CHR_JONATHAN, CHRCFLAG_INVINCIBLE)
|
|
set_ailist(CHR_JONATHAN, GAILIST_IDLE)
|
|
|
|
#if VERSION >= VERSION_NTSC_1_0
|
|
set_chr_chrflag(CHR_TARGET, CHRCFLAG_UNPLAYABLE)
|
|
unset_chr_chrflag(CHR_TARGET, CHRCFLAG_HIDDEN)
|
|
set_chr_hiddenflag(CHR_TARGET, CHRHFLAG_00020000)
|
|
#else
|
|
set_chr_chrflag(CHR_BOND, CHRCFLAG_UNPLAYABLE)
|
|
set_chr_hiddenflag(CHR_BOND, CHRHFLAG_00020000)
|
|
#endif
|
|
chr_do_animation(ANIM_CUT_TRA_MID_JO, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, VERSION >= VERSION_NTSC_1_0 ? CHR_TARGET : CHR_BOND, 4)
|
|
|
|
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_CUT_TRA_MID_ELVIS, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_ELVIS, 4)
|
|
|
|
set_chr_chrflag(CHR_JONATHAN, CHRCFLAG_UNPLAYABLE)
|
|
unset_chr_chrflag(CHR_JONATHAN, CHRCFLAG_HIDDEN)
|
|
set_chr_hiddenflag(CHR_JONATHAN, CHRHFLAG_00020000)
|
|
chr_do_animation(ANIM_CUT_TRA_MID_JON, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_JONATHAN, 4)
|
|
|
|
set_object_flag2(OBJ_HOVERBED_EMPTY, OBJFLAG2_04000000)
|
|
set_object_flag3(OBJ_HOVERBED_EMPTY, OBJFLAG3_00000010)
|
|
object_do_animation(ANIM_CUT_TRA_MID_BED, OBJ_HOVERBED_EMPTY, 0x04, 0xffff)
|
|
|
|
show_nonessential_chrs(FALSE)
|
|
if_object_in_room(OBJ_HOVERBIKE, 0x00df, /*goto*/ 0x06)
|
|
goto_next(0x32)
|
|
|
|
label(0x06)
|
|
move_object_to_pad(OBJ_HOVERBIKE, PAD_TRA_038A)
|
|
label(0x32)
|
|
restart_timer
|
|
set_cutscene_weapon(VERSION >= VERSION_NTSC_1_0 ? CHR_TARGET : CHR_BOND, WEAPON_NONE, WEAPON_NONE)
|
|
yield
|
|
set_cutscene_weapon(VERSION >= VERSION_NTSC_1_0 ? CHR_TARGET : CHR_BOND, WEAPON_NONE, WEAPON_NONE)
|
|
|
|
wait_until(83, 0x6a)
|
|
speak(VERSION >= VERSION_NTSC_1_0 ? CHR_TARGET : CHR_BOND, L_TRA_069, MP3_043C, CHANNEL_7, COLOR_06_WHITE) // "***aahh...! aahaa...! aaaaahhh! aha. ahh.***"
|
|
|
|
wait_until(116, 0x6b)
|
|
play_sound(SFX_FOOTSTEP_80C4, CHANNEL_6)
|
|
|
|
wait_until(124, 0x6c)
|
|
play_sound(SFX_FOOTSTEP_80C5, CHANNEL_4)
|
|
|
|
wait_until(142, 0x6d)
|
|
play_sound(SFX_FOOTSTEP_80C6, CHANNEL_6)
|
|
|
|
wait_until(148, 0x6e)
|
|
play_sound(SFX_FOOTSTEP_80C7, CHANNEL_4)
|
|
|
|
wait_until(172, 0x6f)
|
|
play_sound(SFX_FOOTSTEP_80C4, CHANNEL_6)
|
|
|
|
wait_until(176, 0x70)
|
|
play_sound(SFX_FOOTSTEP_80C7, CHANNEL_4)
|
|
|
|
wait_until(214, 0x71)
|
|
play_sound(SFX_FOOTSTEP_80C5, CHANNEL_6)
|
|
|
|
wait_until(690, 0x72)
|
|
speak(VERSION >= VERSION_NTSC_1_0 ? CHR_TARGET : CHR_BOND, L_TRA_070, MP3_043D, CHANNEL_7, COLOR_06_WHITE) // "I'm alive. I thought I'd be chopped up like the ot..."
|
|
|
|
wait_until(1392, 0x73)
|
|
speak(VERSION >= VERSION_NTSC_1_0 ? CHR_TARGET : CHR_BOND, L_TRA_071, MP3_043E, CHANNEL_7, COLOR_09_BLUE) // "You... You speak our language?"
|
|
|
|
wait_until(1400, 0x74)
|
|
play_sound(SFX_FOOTSTEP_80C4, CHANNEL_6)
|
|
|
|
wait_until(1554, 0x75)
|
|
speak(VERSION >= VERSION_NTSC_1_0 ? CHR_TARGET : CHR_BOND, L_TRA_072, MP3_043F, CHANNEL_7, COLOR_03_RED) // "Watch her... she's sharp."
|
|
|
|
wait_until(1688, 0x76)
|
|
speak(VERSION >= VERSION_NTSC_1_0 ? CHR_TARGET : CHR_BOND, L_TRA_073, MP3_0440, CHANNEL_7, COLOR_06_WHITE) // "Earrggghh...eerggh..."
|
|
|
|
wait_until(1962, 0x77)
|
|
speak(VERSION >= VERSION_NTSC_1_0 ? CHR_TARGET : CHR_BOND, L_TRA_074, MP3_0441, CHANNEL_7, COLOR_09_BLUE) // "What's wrong?"
|
|
|
|
wait_until(1988, 0x78)
|
|
play_sound(SFX_FOOTSTEP_80C5, CHANNEL_6)
|
|
|
|
wait_until(2014, 0x79)
|
|
play_sound(SFX_FOOTSTEP_80C4, CHANNEL_4)
|
|
|
|
wait_until(2113, 0x7a)
|
|
speak(VERSION >= VERSION_NTSC_1_0 ? CHR_TARGET : CHR_BOND, L_TRA_075, MP3_0442, CHANNEL_7, COLOR_06_WHITE) // "I have a headache. And with a head this big, that'..."
|
|
|
|
wait_until(2470, 0x7b)
|
|
speak(VERSION >= VERSION_NTSC_1_0 ? CHR_TARGET : CHR_BOND, L_TRA_076, MP3_0443, CHANNEL_7, COLOR_09_BLUE) // "Can you walk? We must leave before they get organi..."
|
|
|
|
wait_until(2480, 0x7c)
|
|
play_sound(SFX_FOOTSTEP_80C5, CHANNEL_6)
|
|
|
|
wait_until(2526, 0x7d)
|
|
play_sound(SFX_FOOTSTEP_80C6, CHANNEL_6)
|
|
|
|
wait_until(2624, 0x7e)
|
|
play_sound(SFX_FOOTSTEP_80C4, CHANNEL_6)
|
|
|
|
wait_until(2642, 0x7f)
|
|
play_sound(SFX_FOOTSTEP_80C6, CHANNEL_4)
|
|
|
|
wait_until(2678, 0x80)
|
|
play_sound(SFX_FOOTSTEP_80C7, CHANNEL_6)
|
|
|
|
wait_until(2712, 0x81)
|
|
play_sound(SFX_FOOTSTEP_80C4, CHANNEL_4)
|
|
|
|
wait_until(2726, 0x82)
|
|
play_sound(SFX_FOOTSTEP_80C5, CHANNEL_6)
|
|
|
|
wait_until(2728, 0x83)
|
|
play_sound(SFX_FOOTSTEP_80C7, CHANNEL_7)
|
|
|
|
wait_until(2806, 0x84)
|
|
play_sound(SFX_FOOTSTEP_80C4, CHANNEL_6)
|
|
|
|
wait_until(2824, 0x85)
|
|
play_sound(SFX_FOOTSTEP_80C5, CHANNEL_4)
|
|
|
|
wait_until(2842, 0x86)
|
|
speak(VERSION >= VERSION_NTSC_1_0 ? CHR_TARGET : CHR_BOND, L_TRA_077, MP3_0444, CHANNEL_7, COLOR_06_WHITE) // "I think so. What's your name?"
|
|
|
|
wait_until(3024, 0x87)
|
|
speak(VERSION >= VERSION_NTSC_1_0 ? CHR_TARGET : CHR_BOND, L_TRA_078, MP3_0445, CHANNEL_7, COLOR_09_BLUE) // "I'm Agent Dark. Or Joanna, if you prefer."
|
|
|
|
wait_until(3270, 0x88)
|
|
speak(VERSION >= VERSION_NTSC_1_0 ? CHR_TARGET : CHR_BOND, L_TRA_079, MP3_0446, CHANNEL_7, COLOR_06_WHITE) // "Well, Joanna, I'm Protector One. But you can call ..."
|
|
|
|
wait_until(3308, 0x89)
|
|
play_sound(SFX_FOOTSTEP_80C6, CHANNEL_6)
|
|
|
|
beginloop(0x08)
|
|
if_camera_animating(/*goto*/ 0x32)
|
|
goto_next(0x68)
|
|
|
|
label(0x32)
|
|
if_controller_button_pressed(/*goto*/ 0x68)
|
|
label(0x32)
|
|
endloop(0x08)
|
|
|
|
label(0x68)
|
|
set_stage_flag(STAGEFLAG_INTRO_DONE)
|
|
mute_channel(CHANNEL_7)
|
|
stop_cutscene_track
|
|
stop_ambient_track
|
|
unset_chr_chrflag(CHR_COOP, CHRCFLAG_HIDDEN)
|
|
unset_chr_chrflag(CHR_ANTI, CHRCFLAG_HIDDEN)
|
|
unset_chr_chrflag(VERSION >= VERSION_NTSC_1_0 ? CHR_TARGET : CHR_BOND, CHRCFLAG_UNPLAYABLE)
|
|
set_chr_hiddenflag(VERSION >= VERSION_NTSC_1_0 ? CHR_TARGET : CHR_BOND, CHRHFLAG_00020000)
|
|
chr_do_animation(ANIM_CUT_TRA_MID_JO, -2, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, VERSION >= VERSION_NTSC_1_0 ? CHR_TARGET : CHR_BOND, 2)
|
|
|
|
unset_chr_chrflag(CHR_ELVIS, CHRCFLAG_UNPLAYABLE)
|
|
set_chr_hiddenflag(CHR_ELVIS, CHRHFLAG_00020000)
|
|
chr_do_animation(ANIM_CUT_TRA_MID_ELVIS, -2, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_ELVIS, 2)
|
|
|
|
unset_chr_chrflag(CHR_JONATHAN, CHRCFLAG_UNPLAYABLE)
|
|
set_chr_hiddenflag(CHR_JONATHAN, CHRHFLAG_00020000)
|
|
chr_do_animation(ANIM_CUT_TRA_MID_JON, -2, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_JONATHAN, 2)
|
|
|
|
unset_object_flag2(OBJ_HOVERBED_EMPTY, OBJFLAG2_04000000)
|
|
set_object_flag3(OBJ_HOVERBED_EMPTY, OBJFLAG3_00000010)
|
|
object_do_animation(ANIM_CUT_TRA_MID_BED, OBJ_HOVERBED_EMPTY, 0x04, 0xfffe)
|
|
|
|
unset_object_flag2(0x0a, OBJFLAG2_AICANNOTUSE)
|
|
unset_chr_chrflag(CHR_ELVIS, CHRCFLAG_INVINCIBLE)
|
|
unset_chr_chrflag(CHR_JONATHAN, CHRCFLAG_INVINCIBLE)
|
|
set_ailist(CHR_JONATHAN, AILIST_JONATHAN_HANGAR)
|
|
set_ailist(CHR_ELVIS, AILIST_INIT_ELVIS)
|
|
if_chr_death_animation_finished(CHR_COOP, /*goto*/ 0x32)
|
|
chr_move_to_pad(CHR_COOP, PAD_TRA_0156, TRUE, /*goto*/ 0x32)
|
|
label(0x32)
|
|
show_nonessential_chrs(TRUE)
|
|
set_ailist(CHR_SELF, GAILIST_END_CINEMA)
|
|
endlist
|
|
};
|
|
|
|
u8 func101b_gas_sound[] = {
|
|
beginloop(0x67)
|
|
if_stage_flag_eq(STAGEFLAG_GAS_ON, TRUE, /*goto*/ 0x04)
|
|
endloop(0x67)
|
|
|
|
label(0x04)
|
|
yield
|
|
assign_sound(SFX_816A, CHANNEL_0)
|
|
play_sound_from_object(CHANNEL_0, 0x2b, 1, 8000, 3000)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func0c02_outro[] = {
|
|
open_door(0x2c)
|
|
open_door(0x2e)
|
|
set_object_flag(0x2c, OBJFLAG_DOOR_KEEPOPEN)
|
|
set_object_flag(0x2d, OBJFLAG_DOOR_KEEPOPEN)
|
|
label(0x32)
|
|
set_chr_chrflag(CHR_BOND, CHRCFLAG_HIDDEN)
|
|
set_chr_chrflag(CHR_COOP, CHRCFLAG_HIDDEN)
|
|
set_chr_chrflag(CHR_ANTI, CHRCFLAG_HIDDEN)
|
|
play_cutscene_track(MUSIC_ESCAPE_OUTRO_LONG)
|
|
camera_movement(ANIM_CUT_TRA_OUTRO_CAM_01)
|
|
label(0x32)
|
|
disable_object(OBJ_UFO2)
|
|
|
|
enable_object(OBJ_UFO1)
|
|
set_object_flag2(OBJ_UFO1, OBJFLAG2_04000000)
|
|
set_object_flag3(OBJ_UFO1, OBJFLAG3_00000010)
|
|
object_do_animation(ANIM_CUT_TRA_OUTRO_UFO_01, OBJ_UFO1, 0x04, 0xffff)
|
|
|
|
set_stage_flag(STAGEFLAG_STARTED_OUTRO)
|
|
remove_chr(CHR_ELVIS)
|
|
remove_chr(CHR_JONATHAN)
|
|
set_chr_chrflag(CHR_ELVIS, CHRCFLAG_HIDDEN)
|
|
set_chr_chrflag(CHR_JONATHAN, CHRCFLAG_HIDDEN)
|
|
show_nonessential_chrs(FALSE)
|
|
|
|
beginloop(0x08)
|
|
if_camera_animating(/*goto*/ 0x32)
|
|
goto_next(0x68)
|
|
|
|
label(0x32)
|
|
if_controller_button_pressed(/*goto*/ 0x68)
|
|
label(0x32)
|
|
endloop(0x08)
|
|
|
|
label(0x68)
|
|
label(0x32)
|
|
camera_movement(ANIM_CUT_TRA_OUTRO_CAM_02)
|
|
|
|
enable_object(OBJ_UFO1)
|
|
set_object_flag2(OBJ_UFO1, OBJFLAG2_04000000)
|
|
set_object_flag3(OBJ_UFO1, OBJFLAG3_00000010)
|
|
object_do_animation(ANIM_CUT_TRA_OUTRO_UFO_02, OBJ_UFO1, 0x04, 0xffff)
|
|
|
|
set_chr_chrflag(0x2b, CHRCFLAG_UNPLAYABLE)
|
|
unset_chr_chrflag(0x2b, CHRCFLAG_HIDDEN)
|
|
set_chr_hiddenflag(0x2b, CHRHFLAG_00020000)
|
|
chr_do_animation(ANIM_CUT_TRA_OUTRO_GUARD, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, 0x2b, 4)
|
|
|
|
open_door(0x2c)
|
|
open_door(0x2e)
|
|
|
|
beginloop(0x09)
|
|
if_camera_animating(/*goto*/ 0x32)
|
|
goto_next(0x69)
|
|
|
|
label(0x32)
|
|
if_controller_button_pressed(/*goto*/ 0x69)
|
|
label(0x32)
|
|
endloop(0x09)
|
|
|
|
label(0x69)
|
|
label(0x06)
|
|
disable_object(OBJ_UFO2)
|
|
if_stage_flag_eq(STAGEFLAG_JO_DOING_TERMINALS, FALSE, /*goto*/ 0x32)
|
|
stop_cutscene_track
|
|
stop_ambient_track
|
|
|
|
label(0x32)
|
|
goto_next(0x06)
|
|
|
|
// Unreachable
|
|
label(0x09)
|
|
set_stage_flag(STAGEFLAG_UFO_LEAVING)
|
|
set_ailist(CHR_SELF, GAILIST_END_CINEMA)
|
|
|
|
label(0x06)
|
|
set_stage_flag(STAGEFLAG_ESCAPED)
|
|
yield
|
|
yield
|
|
set_invincible(CHR_BOND)
|
|
revoke_control(CHR_BOND, 4)
|
|
hide_countdown_timer
|
|
stop_countdown_timer
|
|
unset_savefile_flag(GAMEFILEFLAG_DEFENSE_JON)
|
|
end_level
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
/**
|
|
* Makes the UFO exit, when Jo is doing terminals and has to escape via
|
|
* hoverbike.
|
|
*/
|
|
u8 func0415_ufo_exit[] = {
|
|
configure_environment(0x0000, AIENVCMD_PLAYUFOHUM, 5)
|
|
disable_object(OBJ_UFO2)
|
|
enable_object(OBJ_UFO1)
|
|
set_object_flag2(OBJ_UFO1, OBJFLAG2_04000000)
|
|
set_object_flag3(OBJ_UFO1, OBJFLAG3_00000010)
|
|
object_do_animation(ANIM_CUT_TRA_OUTRO_UFO_01, OBJ_UFO1, 0x04, 0xffff)
|
|
set_chr_chrflag(CHR_ELVIS, CHRCFLAG_HIDDEN)
|
|
set_chr_chrflag(CHR_JONATHAN, CHRCFLAG_HIDDEN)
|
|
set_chr_chrflag(CHR_ELVIS, CHRCFLAG_INVINCIBLE)
|
|
set_chr_chrflag(CHR_JONATHAN, CHRCFLAG_INVINCIBLE)
|
|
set_chr_chrflag(CHR_ELVIS, CHRCFLAG_UNEXPLODABLE)
|
|
set_chr_chrflag(CHR_JONATHAN, CHRCFLAG_UNEXPLODABLE)
|
|
set_stage_flag(STAGEFLAG_UFO_LEAVING)
|
|
restart_timer
|
|
|
|
beginloop(0x08)
|
|
if_timer_gt(600, /*goto*/ 0x06)
|
|
endloop(0x08)
|
|
|
|
label(0x06)
|
|
configure_environment(0x0000, AIENVCMD_STOPUFOHUM, 0)
|
|
stop_ambient_track
|
|
disable_object(OBJ_UFO1)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func1021_jo_escaping[] = {
|
|
beginloop(0x08)
|
|
if_stage_flag_eq(STAGEFLAG_UFO_LEAVING, TRUE, /*goto*/ 0x32)
|
|
endloop(0x08)
|
|
|
|
label(0x32)
|
|
set_stage_flag(STAGEFLAG_JO_ESCAPE_STARTED)
|
|
restart_timer
|
|
|
|
beginloop(0x0f)
|
|
if_timer_gt(180, /*goto*/ 0x32)
|
|
endloop(0x0f)
|
|
|
|
label(0x32)
|
|
set_stage_flag(STAGEFLAG_TRIGGER_JETBIKE_MESSAGE)
|
|
|
|
beginloop(0x0a)
|
|
chr_toggle_p1p2(CHR_SELF)
|
|
if_chr_in_room(CHR_P1P2, 0x00, 0x0014, /*goto*/ 0x06)
|
|
endloop(0x0a)
|
|
|
|
label(0x06)
|
|
set_stage_flag(STAGEFLAG_ESCAPED)
|
|
yield
|
|
yield
|
|
set_invincible(CHR_BOND)
|
|
revoke_control(CHR_BOND, 4)
|
|
hide_countdown_timer
|
|
stop_countdown_timer
|
|
label(0x62)
|
|
set_savefile_flag(GAMEFILEFLAG_DEFENSE_JON)
|
|
play_cutscene_track(MUSIC_ESCAPE_OUTRO_LONG)
|
|
camera_movement(ANIM_CUT_TRA_OUTRO_CAM_02)
|
|
set_chr_chrflag(CHR_ANTI, CHRCFLAG_HIDDEN)
|
|
set_chr_chrflag(CHR_P1P2_OPPOSITE, CHRCFLAG_HIDDEN)
|
|
set_ailist(CHR_P1P2, GAILIST_IDLE)
|
|
|
|
enable_object(OBJ_UFO1)
|
|
set_object_flag2(OBJ_UFO1, OBJFLAG2_04000000)
|
|
set_object_flag3(OBJ_UFO1, OBJFLAG3_00000010)
|
|
object_do_animation(ANIM_CUT_TRA_OUTRO_UFO_02, OBJ_UFO1, 0x04, 0xffff)
|
|
|
|
set_chr_chrflag(CHR_P1P2, CHRCFLAG_UNPLAYABLE)
|
|
unset_chr_chrflag(CHR_P1P2, CHRCFLAG_HIDDEN)
|
|
set_chr_hiddenflag(CHR_P1P2, CHRHFLAG_00020000)
|
|
chr_do_animation(ANIM_CUT_TRA_OUTRO_GUARD, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_P1P2, 4)
|
|
|
|
beginloop(0x09)
|
|
if_camera_animating(/*goto*/ 0x32)
|
|
goto_next(0x69)
|
|
|
|
label(0x32)
|
|
if_controller_button_pressed(/*goto*/ 0x69)
|
|
label(0x32)
|
|
endloop(0x09)
|
|
|
|
label(0x69)
|
|
end_level
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
|
|
// Unreachable
|
|
end_level
|
|
end_level
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
/**
|
|
* This is most likely a hidden guard. Spawns clones after meeting Jon until he
|
|
* enters the mine room.
|
|
*
|
|
* There are 4 of these guards, and each one will have one clone alive at a
|
|
* time.
|
|
*/
|
|
u8 func0416_spawn_during_follow[] = {
|
|
set_chr_dodge_rating(2, 10)
|
|
set_accuracy(10)
|
|
set_reaction_speed(40)
|
|
set_chr_maxdamage(CHR_SELF, 40)
|
|
add_health_or_armor(40)
|
|
set_recovery_speed(0)
|
|
set_shield(0)
|
|
set_self_chrflag(CHRCFLAG_NEVERSLEEP)
|
|
set_self_chrflag(CHRCFLAG_CLONEABLE)
|
|
set_self_chrflag(CHRCFLAG_HIDDEN)
|
|
set_self_chrflag(CHRCFLAG_INVINCIBLE)
|
|
|
|
beginloop(0x04)
|
|
if_los_to_target(/*goto*/ 0x32)
|
|
if_stage_flag_eq(STAGEFLAG_MET_JON, TRUE, /*goto*/ 0x06)
|
|
label(0x32)
|
|
reloop(0x04)
|
|
|
|
// Met Jon
|
|
label(0x06)
|
|
label(0x54)
|
|
if_chr_death_animation_finished(CHR_CLONE, /*goto*/ 0x54)
|
|
reloop(0x04)
|
|
|
|
label(0x54)
|
|
try_spawn_clone2(CHR_SELF, AILIST_INIT_FOLLOWER_CLONE, 0, /*goto*/ 0x32)
|
|
reloop(0x04)
|
|
|
|
// Spawned
|
|
label(0x32)
|
|
restart_timer
|
|
|
|
beginloop(0x08)
|
|
if_stage_flag_eq(STAGEFLAG_JON_ENTERED_MINE_ROOM, TRUE, /*goto*/ 0x32)
|
|
if_timer_gt(1800, /*goto*/ 0x06)
|
|
endloop(0x08)
|
|
|
|
label(0x06)
|
|
endloop(0x04)
|
|
|
|
label(0x32)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func0417_init_follower_clone[] = {
|
|
set_self_flag_bankx(CHRFLAG1_NOIDLEANIMS, BANK_1)
|
|
label(0x04)
|
|
rebuild_teams
|
|
rebuild_squadrons
|
|
try_inherit_properties(0x09, /*goto*/ 0x06)
|
|
label(0x06)
|
|
set_ailist(CHR_SELF, AILIST_FOLLOWER_CLONE)
|
|
endlist
|
|
};
|
|
|
|
u8 func0418_follower_clone[] = {
|
|
call_rng
|
|
if_rand_lt(128, /*goto*/ 0x32)
|
|
set_target_chr(CHR_COOP)
|
|
if_chr_death_animation_finished(CHR_COOP, /*goto*/ 0x32)
|
|
goto_next(0x06)
|
|
|
|
label(0x32)
|
|
set_target_chr(CHR_BOND)
|
|
label(0x06)
|
|
set_ailist(CHR_SELF, GAILIST_ALERTED)
|
|
endlist
|
|
};
|
|
|
|
u8 func0419_init_biotech[] = {
|
|
set_chr_dodge_rating(2, 10)
|
|
set_accuracy(20)
|
|
set_reaction_speed(40)
|
|
set_chr_maxdamage(CHR_SELF, 40)
|
|
add_health_or_armor(0)
|
|
set_recovery_speed(0)
|
|
set_shield(0)
|
|
set_returnlist(CHR_SELF, GAILIST_SEARCH_FOR_PLAYER)
|
|
set_ailist(CHR_SELF, GAILIST_SEARCH_FOR_PLAYER)
|
|
endlist
|
|
};
|
|
|
|
u8 func041a_init_superdragon_guard[] = {
|
|
set_chr_dodge_rating(2, 10)
|
|
set_accuracy(10)
|
|
set_reaction_speed(40)
|
|
set_chr_maxdamage(CHR_SELF, 40)
|
|
add_health_or_armor(40)
|
|
set_recovery_speed(0)
|
|
set_shield(0)
|
|
set_ailist(CHR_SELF, GAILIST_UNALERTED)
|
|
endlist
|
|
};
|
|
|
|
u8 func101a_medpack_switch[] = {
|
|
beginloop(0x04)
|
|
chr_toggle_p1p2(CHR_SELF)
|
|
if_object_in_good_condition(OBJ_MEDPACK_SWITCH, /*goto*/ 0x32)
|
|
if_difficulty_lt(DIFF_PA, /*goto*/ 0x06)
|
|
set_stage_flag(STAGEFLAG_MEDPACK_SWITCH_DESTROYED)
|
|
show_hudmsg(CHR_BOND, L_TRA_036) // "Mission critical object destroyed."
|
|
label(0x06)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
|
|
label(0x32)
|
|
if_chr_activated_object(CHR_P1P2, OBJ_MEDPACK_SWITCH, /*goto*/ 0x32)
|
|
endloop(0x04)
|
|
|
|
label(0x32)
|
|
assign_sound(SFX_043A, CHANNEL_7)
|
|
control_sound_from_object(CHANNEL_7, OBJ_MEDPACK_SWITCH, TRUE)
|
|
show_hudmsg(CHR_P1P2, L_TRA_054) // "Medical containment doors unlocked."
|
|
unlock_door(0x12, 0x40)
|
|
unlock_door(0x13, 0x40)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
/**
|
|
* Warps Jon to the catwalk outside the mine room.
|
|
*/
|
|
u8 unregistered_function1[] = {
|
|
// Wait until met Jon
|
|
beginloop(0x04)
|
|
if_stage_flag_eq(STAGEFLAG_MET_JON, TRUE, /*goto*/ 0x08)
|
|
endloop(0x04)
|
|
|
|
// Wait until player in mine room
|
|
beginloop(0x08)
|
|
chr_toggle_p1p2(CHR_SELF)
|
|
if_chr_in_room(CHR_P1P2, 0x00, 0x00dc, /*goto*/ 0x32)
|
|
if_chr_in_room(CHR_P1P2, 0x00, 0x00dd, /*goto*/ 0x32)
|
|
endloop(0x08)
|
|
|
|
label(0x32)
|
|
set_ailist(CHR_JONATHAN, 0x040f)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
/**
|
|
* @unused
|
|
*/
|
|
u8 func040f_warp_jon_to_catwalk[] = {
|
|
set_target_chr(CHR_BOND)
|
|
if_los_to_target(/*goto*/ 0x06)
|
|
set_target_chr(CHR_COOP)
|
|
if_los_to_target(/*goto*/ 0x06)
|
|
stop_chr
|
|
yield
|
|
chr_move_to_pad(CHR_JONATHAN, PAD_TRA_0152, FALSE, /*goto*/ 0x32)
|
|
label(0x32)
|
|
yield
|
|
set_ailist(CHR_JONATHAN, AILIST_JONATHAN_FOLLOWING_AND_MINE)
|
|
label(0x06)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func101d_msg_medpackaroundhere[] = {
|
|
beginloop(0x04)
|
|
if_difficulty_lt(DIFF_PA, /*goto*/ 0x06)
|
|
chr_toggle_p1p2(CHR_SELF)
|
|
if_chr_in_room(CHR_P1P2, 0x00, 0x00d2, /*goto*/ 0x32)
|
|
endloop(0x04)
|
|
|
|
label(0x32)
|
|
|
|
beginloop(0x6a)
|
|
if_sound_finished(CHANNEL_6, /*goto*/ 0x32)
|
|
endloop(0x6a)
|
|
|
|
label(0x32)
|
|
speak(CHR_P1P2, L_TRA_055, MP3_03C0, CHANNEL_6, COLOR_09_BLUE) // "The medpack's got to be somewhere around here."
|
|
label(0x06)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func101e_msg_hookup[] = {
|
|
restart_timer
|
|
beginloop(0x04)
|
|
if_stage_flag_eq(STAGEFLAG_JON_SAID_MAINT_HATCH, TRUE, /*goto*/ 0x32)
|
|
endloop(0x04)
|
|
|
|
label(0x32)
|
|
|
|
beginloop(0x6a)
|
|
if_sound_finished(CHANNEL_6, /*goto*/ 0x32)
|
|
endloop(0x6a)
|
|
|
|
label(0x32)
|
|
speak(CHR_BOND, L_TRA_056, MP3_03C1, CHANNEL_6, COLOR_09_BLUE) // "Time to hook up with Jonathan, before he gets into..."
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func101f_msg_oil[] = {
|
|
beginloop(0x04)
|
|
chr_toggle_p1p2(CHR_SELF)
|
|
if_stage_flag_eq(STAGEFLAG_JON_SAID_MAINT_HATCH, TRUE, /*goto*/ 0x32)
|
|
reloop(0x04)
|
|
|
|
label(0x32)
|
|
if_chr_in_room(CHR_P1P2, 0x00, 0x00dc, /*goto*/ 0x32)
|
|
endloop(0x04)
|
|
|
|
label(0x32)
|
|
yield
|
|
yield
|
|
yield
|
|
|
|
beginloop(0x6a)
|
|
if_sound_finished(CHANNEL_6, /*goto*/ 0x32)
|
|
endloop(0x6a)
|
|
|
|
label(0x32)
|
|
speak(CHR_P1P2, L_TRA_057, MP3_03C2, CHANNEL_6, COLOR_09_BLUE) // "That smell... oil... I smelt that in the other han..."
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func1020_msg_jetbike[] = {
|
|
beginloop(0x04)
|
|
if_stage_flag_eq(STAGEFLAG_TRIGGER_JETBIKE_MESSAGE, TRUE, /*goto*/ 0x32)
|
|
endloop(0x04)
|
|
|
|
label(0x32)
|
|
|
|
beginloop(0x6a)
|
|
if_sound_finished(CHANNEL_6, /*goto*/ 0x32)
|
|
endloop(0x6a)
|
|
|
|
label(0x32)
|
|
speak(CHR_BOND, L_TRA_058, MP3_03C3, CHANNEL_6, COLOR_09_BLUE) // "The jetbike should get me out before they lock the..."
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func1024_wall_immune_to_explosives[] = {
|
|
set_object_flag(OBJ_WALLOBJECT, OBJFLAG_INVINCIBLE)
|
|
set_object_flag(OBJ_WALLDOOR, OBJFLAG_INVINCIBLE)
|
|
|
|
beginloop(0x04)
|
|
if_stage_flag_eq(STAGEFLAG_JON_FINISHED_EXPLOSIVES, TRUE, /*goto*/ 0x32)
|
|
endloop(0x04)
|
|
|
|
label(0x32)
|
|
unset_object_flag(OBJ_WALLOBJECT, OBJFLAG_INVINCIBLE)
|
|
unset_object_flag(OBJ_WALLDOOR, OBJFLAG_INVINCIBLE)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
/**
|
|
* Wait until barrel destroyed then unset immune to explosives on the medpack
|
|
* glass. This wouldn't have worked as intended, as destroying any one barrel
|
|
* would cause the glass to become suscepitble to explosives.
|
|
*/
|
|
#define glass_explosives_thing(barrel) \
|
|
beginloop(0x04) \
|
|
if_object_in_good_condition(barrel, /*goto*/ 0x32) \
|
|
unset_object_flag(OBJ_MEDPACK_GLASS, OBJFLAG_INVINCIBLE) \
|
|
restart_timer \
|
|
\
|
|
beginloop(0x08) \
|
|
if_timer_gt(60, /*goto*/ 0x06) \
|
|
endloop(0x08) \
|
|
\
|
|
label(0x06) \
|
|
set_object_flag(OBJ_MEDPACK_GLASS, OBJFLAG_INVINCIBLE) \
|
|
set_ailist(CHR_SELF, GAILIST_IDLE) \
|
|
label(0x32) \
|
|
endloop(0x04) \
|
|
\
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
|
|
u8 unregistered_function2[] = {
|
|
set_object_flag(OBJ_MEDPACK_GLASS, OBJFLAG_INVINCIBLE)
|
|
glass_explosives_thing(0x23)
|
|
endlist
|
|
};
|
|
|
|
u8 unregistered_function3[] = {
|
|
glass_explosives_thing(0x24)
|
|
endlist
|
|
};
|
|
|
|
u8 unregistered_function4[] = {
|
|
glass_explosives_thing(0x25)
|
|
endlist
|
|
};
|
|
|
|
u8 unregistered_function5[] = {
|
|
glass_explosives_thing(0x26)
|
|
endlist
|
|
};
|
|
|
|
u8 unregistered_function6[] = {
|
|
glass_explosives_thing(0x27)
|
|
endlist
|
|
};
|
|
|
|
u8 unregistered_function7[] = {
|
|
glass_explosives_thing(0x28)
|
|
endlist
|
|
};
|
|
|
|
u8 unregistered_function8[] = {
|
|
glass_explosives_thing(0x29)
|
|
endlist
|
|
};
|
|
|
|
u8 func1026_ufo_spinning[] = {
|
|
enable_object(OBJ_UFO2)
|
|
set_object_flag2(OBJ_UFO2, OBJFLAG2_04000000)
|
|
set_object_flag3(OBJ_UFO2, OBJFLAG3_00000010)
|
|
|
|
label(0x03)
|
|
object_do_animation(ANIM_0459, OBJ_UFO2, 0x04, 0xffff)
|
|
restart_timer
|
|
|
|
beginloop(0x08)
|
|
if_timer_gt(184, /*goto*/ 0x32)
|
|
endloop(0x08)
|
|
|
|
label(0x32)
|
|
goto_first(0x03)
|
|
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func102e_keep_hangar_doors_open[] = {
|
|
beginloop(0x67)
|
|
if_stage_flag_eq(STAGEFLAG_HANGAR_TERMINAL_DESTROYED, TRUE, /*goto*/ 0x0f)
|
|
if_stage_flag_eq(STAGEFLAG_HANGAR_X_MUSIC_STARTED, TRUE, /*goto*/ 0x04)
|
|
endloop(0x67)
|
|
|
|
beginloop(0x04)
|
|
if_stage_flag_eq(STAGEFLAG_HANGAR_TERMINAL_DESTROYED, TRUE, /*goto*/ 0x0f)
|
|
if_door_state(0x2c, DOORSTATE_CLOSING, /*goto*/ 0x08)
|
|
if_door_state(0x2e, DOORSTATE_CLOSING, /*goto*/ 0x09)
|
|
reloop(0x04)
|
|
|
|
// Door 1 closing
|
|
label(0x08)
|
|
if_stage_flag_eq(STAGEFLAG_INNER_DOOR_OPENING, TRUE, /*goto*/ 0x32)
|
|
if_door_state(0x2c, (DOORSTATE_CLOSED | DOORSTATE_CLOSING), /*goto*/ 0x09)
|
|
reloop(0x04)
|
|
|
|
label(0x32)
|
|
open_door(0x2c)
|
|
open_door(0x2d)
|
|
set_object_flag(0x2c, OBJFLAG_DOOR_KEEPOPEN)
|
|
set_object_flag(0x2d, OBJFLAG_DOOR_KEEPOPEN)
|
|
reloop(0x04)
|
|
|
|
// Door 2 closing
|
|
label(0x09)
|
|
if_stage_flag_eq(STAGEFLAG_OUTER_DOOR_OPENING, TRUE, /*goto*/ 0x32)
|
|
reloop(0x04)
|
|
|
|
label(0x32)
|
|
open_door(0x2e)
|
|
open_door(0x2f)
|
|
set_object_flag(0x2e, OBJFLAG_DOOR_KEEPOPEN)
|
|
set_object_flag(0x2f, OBJFLAG_DOOR_KEEPOPEN)
|
|
endloop(0x04)
|
|
|
|
// Terminal destroyed
|
|
label(0x0f)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func102f_toggle_remotemines[] = {
|
|
restart_timer
|
|
beginloop(0x08)
|
|
if_timer_gt(2400, /*goto*/ 0x32)
|
|
if_stage_flag_eq(STAGEFLAG_ELVIS_STASHED, TRUE, /*goto*/ 0x06)
|
|
endloop(0x08)
|
|
|
|
label(0x32)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
|
|
label(0x06)
|
|
unset_object_flag(OBJ_REMOTEMINES, OBJFLAG_UNCOLLECTABLE)
|
|
unset_object_flag2(OBJ_REMOTEMINES, OBJFLAG2_INVISIBLE)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func1030_setup_medpack_glass[] = {
|
|
if_difficulty_gt(DIFF_A, /*goto*/ 0x32)
|
|
unset_object_flag(OBJ_MEDPACK_GLASS, OBJFLAG_INVINCIBLE)
|
|
destroy_object(OBJ_MEDPACK_GLASS)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
|
|
// SA and PA
|
|
label(0x32)
|
|
unlock_door(0x3c, 0x40)
|
|
unlock_door(0x3d, 0x40)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func1031_disable_chambers[] = {
|
|
set_object_flag(0x46, OBJFLAG_DEACTIVATED)
|
|
set_object_flag(0x47, OBJFLAG_DEACTIVATED)
|
|
set_object_flag(0x48, OBJFLAG_DEACTIVATED)
|
|
set_object_flag(0x49, OBJFLAG_DEACTIVATED)
|
|
set_object_flag(0x4a, OBJFLAG_DEACTIVATED)
|
|
set_object_flag(0x4b, OBJFLAG_DEACTIVATED)
|
|
set_object_flag(0x4c, OBJFLAG_DEACTIVATED)
|
|
set_object_flag(0x4d, OBJFLAG_DEACTIVATED)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func1032_unlock_door_after_hangar[] = {
|
|
// Wait for locate hangar objective complete
|
|
beginloop(0x04)
|
|
if_objective_complete(2, /*goto*/ 0x06)
|
|
endloop(0x04)
|
|
|
|
label(0x06)
|
|
unlock_door(0x0a, 0x02)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
/**
|
|
* This is the lift near the wall you blow up in Rescue.
|
|
*/
|
|
u8 func1433_start_lift[] = {
|
|
activate_lift(1, 0x4e)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func101c_setup_rtracker[] = {
|
|
yield
|
|
set_object_flag3(OBJ_FALCON2SCOPE1, OBJFLAG3_RTRACKED_BLUE)
|
|
set_object_flag3(OBJ_FALCON2SCOPE2, OBJFLAG3_RTRACKED_BLUE)
|
|
set_object_flag3(OBJ_REMOTEMINES, OBJFLAG3_RTRACKED_BLUE)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
u8 func1434_setup_environment[] = {
|
|
yield
|
|
configure_environment(0x0000, AIENVCMD_00, FALSE)
|
|
configure_environment(0x0000, AIENVCMD_01, FALSE)
|
|
configure_environment(0x0000, AIENVCMD_02, FALSE)
|
|
configure_environment(0x0000, AIENVCMD_03, FALSE)
|
|
configure_environment(0x0000, AIENVCMD_04, FALSE)
|
|
configure_environment(0x00d3, AIENVCMD_ROOM_SETOUTDOORS, TRUE)
|
|
configure_environment(0x00d4, AIENVCMD_ROOM_SETOUTDOORS, TRUE)
|
|
configure_environment(0x00d5, AIENVCMD_ROOM_SETOUTDOORS, TRUE)
|
|
configure_environment(0x00d6, AIENVCMD_ROOM_SETOUTDOORS, TRUE)
|
|
configure_environment(0x00d7, AIENVCMD_ROOM_SETOUTDOORS, TRUE)
|
|
configure_environment(0x00d8, AIENVCMD_ROOM_SETOUTDOORS, TRUE)
|
|
configure_environment(0x00d9, AIENVCMD_ROOM_SETOUTDOORS, TRUE)
|
|
configure_environment(0x00da, AIENVCMD_ROOM_SETOUTDOORS, TRUE)
|
|
configure_environment(0x00db, AIENVCMD_ROOM_SETOUTDOORS, TRUE)
|
|
configure_environment(0x0024, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0025, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0026, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0027, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0028, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0029, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x002a, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x002b, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x002c, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x002d, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x002e, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x002f, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0030, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0032, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0033, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0034, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0035, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0036, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0037, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0038, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0039, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x003a, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x003b, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x003c, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x003d, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x003e, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x003f, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x005b, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x005d, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0079, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x007a, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x007b, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x007c, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x007d, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x007e, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x007f, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0080, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0081, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0082, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x008b, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x008c, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x008d, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x008e, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x008f, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0090, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0091, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0092, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0093, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0094, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0095, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0096, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0097, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0098, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0099, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x009a, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x009b, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00a5, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00a6, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00a7, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00a8, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00a9, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00aa, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00ab, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00ac, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00ad, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00ae, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00af, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00b0, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00b1, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00b2, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00b3, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00b4, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00b5, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00b6, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00b7, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00b8, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00b9, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00ba, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00bb, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00bc, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00be, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00bf, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00c0, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00c1, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00c2, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00c3, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00c4, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00c5, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00c6, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00c7, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00c8, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00c9, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00ca, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00cc, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00cd, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00ce, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00cf, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00d0, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00d1, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00d2, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00dc, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00dd, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00de, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00df, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00e0, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00e1, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00e2, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00e3, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00e4, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00e5, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00e6, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00f2, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00fa, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00fb, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00fc, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00fd, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00fe, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00ff, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0100, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0101, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0102, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0103, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0104, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0105, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0106, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0107, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0108, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x0109, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x010a, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x010b, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x010c, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x010d, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x010e, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
configure_environment(0x00cb, AIENVCMD_ROOM_SETAMBIENT, TRUE)
|
|
set_ailist(CHR_SELF, GAILIST_IDLE)
|
|
endlist
|
|
};
|
|
|
|
struct ailist ailists[] = {
|
|
{ func1400_setup_counterop, 0x1400 },
|
|
{ func1001_objectives_failed_msg, 0x1001 },
|
|
{ func1002_intro, 0x1002 },
|
|
{ func1004_jon_msgs_gravedanger, 0x1004 },
|
|
{ func1005_jon_msgs_meetup, 0x1005 },
|
|
{ func1007_check_medpack_collected, 0x1007 },
|
|
{ func1008_spawngroup1, 0x1008 },
|
|
{ func1009_blow_up_wall, 0x1009 },
|
|
{ func100a_check_hangar_accessed, 0x100a },
|
|
{ func100b_check_jonathan_dead, 0x100b },
|
|
{ func100c_medpack_activation, 0x100c },
|
|
{ func100d_check_terminals_destroyed, 0x100d },
|
|
{ func100e_check_elvis_dead, 0x100e },
|
|
{ func100f_terminals, 0x100f },
|
|
{ func1010_check_end_level, 0x1010 },
|
|
{ func1011_unlock_doors_when_jo_escaping, 0x1011 },
|
|
{ func1012_hoverbike_auto_doors, 0x1012 },
|
|
{ func1013_spawngroup2, 0x1013 },
|
|
{ func1014_spawngroup3, 0x1014 },
|
|
{ func1015_spawngroup4, 0x1015 },
|
|
{ func1016_enable_guards_after_meetup, 0x1016 },
|
|
{ func1017_check_both_hangar_doors_open, 0x1017 },
|
|
{ func1018_unhide_guards_when_jo_escaping, 0x1018 },
|
|
{ func1019_enable_biotechs_after_stash, 0x1019 },
|
|
{ func101a_medpack_switch, 0x101a },
|
|
{ func101b_gas_sound, 0x101b },
|
|
{ func101c_setup_rtracker, 0x101c },
|
|
{ func101d_msg_medpackaroundhere, 0x101d },
|
|
{ func101e_msg_hookup, 0x101e },
|
|
{ func101f_msg_oil, 0x101f },
|
|
{ func1020_msg_jetbike, 0x1020 },
|
|
{ func1021_jo_escaping, 0x1021 },
|
|
{ func1022_gas_damage_bond, 0x1022 },
|
|
{ func1023_gas_damage_coop, 0x1023 },
|
|
{ func1024_wall_immune_to_explosives, 0x1024 },
|
|
{ func1026_ufo_spinning, 0x1026 },
|
|
{ func102e_keep_hangar_doors_open, 0x102e },
|
|
{ func102f_toggle_remotemines, 0x102f },
|
|
{ func1030_setup_medpack_glass, 0x1030 },
|
|
{ func1031_disable_chambers, 0x1031 },
|
|
{ func1032_unlock_door_after_hangar, 0x1032 },
|
|
{ func1433_start_lift, 0x1433 },
|
|
{ func1434_setup_environment, 0x1434 },
|
|
{ func1002_intro, 0x0c00 },
|
|
{ func0c01_midcutscene, 0x0c01 },
|
|
{ func0c02_outro, 0x0c02 },
|
|
{ func0401_gas_damage, 0x0401 },
|
|
{ func0402_jonathan_waiting_for_meetup, 0x0402 },
|
|
{ func0403_init_jonathan, 0x0403 },
|
|
{ func0404_jonathan_following_and_mine, 0x0404 },
|
|
{ func0405_jonathan_shot_while_planting, 0x0405 },
|
|
{ func0406_unused_0406, 0x0406 },
|
|
{ func1008_spawngroup1_guard, 0x0407 },
|
|
{ func1013_spawngroup2_guard, 0x0408 },
|
|
{ func1014_spawngroup3_guard, 0x0409 },
|
|
{ func1015_spawngroup4_guard, 0x040a },
|
|
{ func040b_elvis_follow, 0x040b },
|
|
{ func040c_hidden_guardtype1, 0x040c },
|
|
{ func0413_jonathan_hangar, 0x0413 },
|
|
{ func040d_hidden_guardtype2, 0x040d },
|
|
{ func040e_hidden_biotech, 0x040e },
|
|
{ func040f_warp_jon_to_catwalk, 0x040f },
|
|
{ func1002_intro, 0x0410 },
|
|
{ func0c01_midcutscene, 0x0411 },
|
|
{ func0412_init_elvis, 0x0412 },
|
|
{ func0c02_outro, 0x0414 },
|
|
{ func0415_ufo_exit, 0x0415 },
|
|
{ func0416_spawn_during_follow, 0x0416 },
|
|
{ func0417_init_follower_clone, 0x0417 },
|
|
{ func0418_follower_clone, 0x0418 },
|
|
{ func0419_init_biotech, 0x0419 },
|
|
{ func041a_init_superdragon_guard, 0x041a },
|
|
{ func041b_jonathan_after_terminals, 0x041b },
|
|
{ func041c_elvis_go_to_ufo, 0x041c },
|
|
{ NULL, 0 },
|
|
};
|
|
|
|
struct path paths[] = {
|
|
{ NULL, 0, 0 },
|
|
};
|