# # Crash Site # .set HEADERLEN, 0x20 .include "asm/include/setup.inc" // Characters .set CHR_ELVIS, 0x00 .set CHR_TRENT, 0x02 .set CHR_MRBLONDE, 0x03 .set CHR_SKEDAR, 0x04 .set CHR_PRESIDENT, 0x05 .set CHR_PRESIDENT_OUTRO, 0x06 .set CHR_PRES_CLONE, 0x08 .set CHR_ROBOT1, 0x26 .set CHR_ROBOT2, 0x27 .set CHR_ROBOT3, 0x28 .set CHR_ROBOT4, 0x29 .set CHR_ELVIS_OUTRO, 0x38 // Objects .set OBJ_CRATE, 0x00 .set OBJ_ESCAPEPOD, 0x01 .set OBJ_MEDICALSCANNER, 0x02 .set OBJ_SKEDAR_SHUTTLE, 0x03 .set OBJ_PROXYMINE, 0x08 .set OBJ_HOVERBIKE, 0x09 // Stage flags .set STAGEFLAG_BEACON_ACTIVATED, 0x00000100 .set STAGEFLAG_ESCAPEPOD_DESTROYED, 0x00000200 .set STAGEFLAG_SKEDAR_SHUTTLE_DESTROYED, 0x00000400 .set STAGEFLAG_PRESIDENT_DEAD, 0x00000800 .set STAGEFLAG_PRESIDENT_RESCUED, 0x00001000 .set STAGEFLAG_CLONE_DEAD, 0x00002000 .set STAGEFLAG_TRIGGER_PRESIDENT_RUNNING, 0x00004000 .set STAGEFLAG_TRENT_RUNNING, 0x00008000 .set STAGEFLAG_ELVIS_GAVE_PROXYMINE, 0x00010000 .set STAGEFLAG_OUTRO_STARTED, 0x00020000 // Functions .set FUNC_OUTRO, 0x0402 .set FUNC_INIT_ELVIS, 0x0403 .set FUNC_ELVIS, 0x0404 .set FUNC_INIT_STRIPES, 0x0406 .set FUNC_INIT_BLONDE, 0x0407 .set FUNC_SPAWNER, 0x0414 .set FUNC_SPAWNED_GUARD, 0x0416 .set FUNC_INIT_ROBOT, 0x0417 .set FUNC_ROBOT, 0x0418 .set FUNC_INIT_PRESIDENT, 0x041b .set FUNC_PRESIDENT_WAITING, 0x041c .set FUNC_PRESIDENT_RUNNING, 0x041d .set FUNC_TRENT_WAITING, 0x041e .set FUNC_TRENT_SHOOTING, 0x041f .set FUNC_TRENT_RUNNING, 0x0420 .set FUNC_STARTING_AREA_GUARD, 0x0421 .set FUNC_HIDE, 0x0422 props: briefing 0, 0x0a01 briefing 1, 0x0a00 briefing 2, 0x0a02 briefing 3, 0x0a03 beginobjective 0, 0x0a05, DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD // "Retrieve Presidential medical scanner" require_object_collected OBJ_MEDICALSCANNER endobjective beginobjective 1, 0x0a06, DIFFBIT_A | DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD // "Activate distress beacon" complete_flags STAGEFLAG_BEACON_ACTIVATED fail_flags STAGEFLAG_ESCAPEPOD_DESTROYED endobjective beginobjective 2, 0x0a07, DIFFBIT_PA | DIFFBIT_PD // "Shut down enemy jamming device" complete_flags STAGEFLAG_SKEDAR_SHUTTLE_DESTROYED endobjective beginobjective 3, 0x0a08, DIFFBIT_A | DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD // "Retire Presidential clone" complete_flags STAGEFLAG_CLONE_DEAD endobjective beginobjective 4, 0x0a09, DIFFBIT_A | DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD // "Locate and rescue President" complete_flags STAGEFLAG_PRESIDENT_RESCUED fail_flags STAGEFLAG_PRESIDENT_DEAD endobjective tag 0x09, 1 hoverbike 0x0100, MODEL_HOVBIKE, 0x0000, 0x05120101, 0x00304300, 0x02000003, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x01010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 chr 0x00010400, 0x00, 0x0106, BODY_THEKING, HEAD_ELVIS, FUNC_INIT_ELVIS, -1, -1, 1000, 200, 0x00002000, 0x00300000, 0x10, 0x01, -1, 0, 0x00000000 weapon 0x0100, MODEL_CHRMAIANPISTOL, 0x0000, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_PHOENIX, 0x00ffffff, 0x00000000 chr 0x00010400, 0x38, 0x011f, BODY_THEKING, HEAD_ELVIS, FUNC_HIDE, -1, -1, 1000, 200, 0x00002000, 0x00300000, 0x80, 0x01, -1, 0, 0x00000000 weapon 0x0100, MODEL_CHRMAIANPISTOL, 0x0038, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_PHOENIX, 0x00ffffff, 0x00000000 chr 0x00010400, 0x06, 0x0110, BODY_PRESIDENT, HEAD_PRESIDENT, FUNC_HIDE, -1, -1, 1000, 200, 0x00002000, 0x00300000, 0x80, 0x01, -1, 0, 0x00000000 chr 0x00000400, 0x02, 0x010e, BODY_TRENT, HEAD_TRENT, FUNC_HIDE, -1, -1, 1000, 200, 0x80002000, 0x00300000, 0x80, 0x08, -1, 0, 0x00000000 weapon 0x0100, MODEL_CHRDY357TRENT, 0x0002, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_DY357LX, 0x00ffffff, 0x00000000 chr 0x00000200, 0x09, 0x005a, BODY_STRIPES, HEAD_RANDOM, 0x0408, -1, -1, 100, 13, 0xc0082000, 0x00000000, 0x02, 0x01, -1, 0, 0x00000000 weapon 0x0100, MODEL_CHRAVENGER, 0x0009, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_K7AVENGER, 0x00ffffff, 0x00000000 chr 0x00000200, 0x0a, 0x0059, BODY_STRIPES, HEAD_RANDOM, 0x0408, -1, -1, 100, 13, 0xc0082000, 0x00000000, 0x02, 0x01, -1, 0, 0x00000000 weapon 0x0100, MODEL_CHRAVENGER, 0x000a, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_K7AVENGER, 0x00ffffff, 0x00000000 chr 0x00000200, 0x0b, 0x0058, BODY_MRBLONDE, HEAD_MRBLONDE, 0x0408, -1, -1, 100, 13, 0xc0082000, 0x00000040, 0x02, 0x01, -1, 0, 0x00000000 weapon 0x0100, MODEL_CHRSNIPERRIFLE, 0x000b, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_SNIPERRIFLE, 0x00ffffff, 0x00000000 chr 0x00000200, 0x0c, 0x00d1, BODY_STRIPES, HEAD_RANDOM, 0x0409, -1, -1, 100, 13, 0xc0082000, 0x00000000, 0x02, 0x02, -1, 0, 0x00000000 weapon 0x0100, MODEL_CHRAVENGER, 0x000c, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_K7AVENGER, 0x00ffffff, 0x00000000 chr 0x00000200, 0x0d, 0x00d4, BODY_STRIPES, HEAD_RANDOM, 0x0409, -1, -1, 100, 13, 0xc0082000, 0x00000000, 0x02, 0x02, -1, 0, 0x00000000 weapon 0x0100, MODEL_CHRAVENGER, 0x000d, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_K7AVENGER, 0x00ffffff, 0x00000000 chr 0x00000200, 0x0e, 0x00d5, BODY_MRBLONDE, HEAD_MRBLONDE, 0x0409, -1, -1, 100, 13, 0xc0082000, 0x00000040, 0x02, 0x02, -1, 0, 0x00000000 weapon 0x0100, MODEL_CHRSNIPERRIFLE, 0x000e, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_SNIPERRIFLE, 0x00ffffff, 0x00000000 chr 0x00000200, 0x13, 0x004c, BODY_STRIPES, HEAD_RANDOM, 0x040a, -1, -1, 100, 13, 0xe0082000, 0x00000000, 0x02, 0x03, -1, 0, 0x00000000 weapon 0x0100, MODEL_CHRAVENGER, 0x0013, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_K7AVENGER, 0x00ffffff, 0x00000000 chr 0x00000200, 0x14, 0x005f, BODY_STRIPES, HEAD_RANDOM, 0x040b, -1, -1, 100, 13, 0xc0082000, 0x00000000, 0x02, 0x03, -1, 0, 0x00000000 weapon 0x0100, MODEL_CHRAVENGER, 0x0014, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_K7AVENGER, 0x00ffffff, 0x00000000 chr 0x00000200, 0x15, 0x004d, BODY_STRIPES, HEAD_RANDOM, 0x040c, -1, -1, 100, 13, 0xe0082000, 0x00000000, 0x02, 0x03, -1, 0, 0x00000000 weapon 0x0100, MODEL_CHRAVENGER, 0x0015, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_K7AVENGER, 0x00ffffff, 0x00000000 chr 0x00000200, 0x16, 0x0055, BODY_STRIPES, HEAD_RANDOM, 0x040d, -1, -1, 100, 13, 0xc0082000, 0x00000000, 0x02, 0x03, -1, 0, 0x00000000 weapon 0x0100, MODEL_CHRAVENGER, 0x0016, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_K7AVENGER, 0x00ffffff, 0x00000000 chr 0x00000200, 0x17, 0x0081, BODY_STRIPES, HEAD_RANDOM, FUNC_INIT_STRIPES, -1, -1, 100, 13, 0xe0082000, 0x00000000, 0x02, 0x04, -1, 0, 0x00000000 weapon 0x0100, MODEL_CHRAVENGER, 0x0017, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_K7AVENGER, 0x00ffffff, 0x00000000 chr 0x00000200, 0x18, 0x0079, BODY_STRIPES, HEAD_RANDOM, FUNC_INIT_STRIPES, -1, -1, 100, 13, 0xc0082000, 0x00000000, 0x02, 0x04, -1, 0, 0x00000000 weapon 0x0100, MODEL_CHRAVENGER, 0x0018, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_K7AVENGER, 0x00ffffff, 0x00000000 chr 0x00000200, 0x19, 0x007b, BODY_STRIPES, HEAD_RANDOM, FUNC_INIT_STRIPES, -1, -1, 100, 13, 0xe0082000, 0x00000000, 0x02, 0x04, -1, 0, 0x00000000 weapon 0x0100, MODEL_CHRAVENGER, 0x0019, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_K7AVENGER, 0x00ffffff, 0x00000000 chr 0x00000200, 0x1a, 0x007c, BODY_STRIPES, HEAD_RANDOM, FUNC_INIT_STRIPES, -1, -1, 100, 13, 0xc0082000, 0x00000000, 0x02, 0x04, -1, 0, 0x00000000 weapon 0x0100, MODEL_CHRAVENGER, 0x001a, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_K7AVENGER, 0x00ffffff, 0x00000000 chr 0x00000200, 0x1b, 0x016b, BODY_STRIPES, HEAD_RANDOM, 0x040e, -1, -1, 100, 13, 0xe0082000, 0x00000000, 0x02, 0x05, -1, 0, 0x00000000 weapon 0x0100, MODEL_CHRAVENGER, 0x001b, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_K7AVENGER, 0x00ffffff, 0x00000000 chr 0x00000200, 0x1c, 0x016c, BODY_STRIPES, HEAD_RANDOM, 0x040f, -1, -1, 100, 13, 0xc0082000, 0x00000000, 0x02, 0x05, -1, 0, 0x00000000 weapon 0x0100, MODEL_CHRAVENGER, 0x001c, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_K7AVENGER, 0x00ffffff, 0x00000000 chr 0x00000200, 0x1d, 0x0048, BODY_STRIPES, HEAD_RANDOM, 0x0410, -1, -1, 100, 13, 0xe0082000, 0x00000000, 0x02, 0x06, -1, 0, 0x00000000 weapon 0x0100, MODEL_CHRAVENGER, 0x001d, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_K7AVENGER, 0x00ffffff, 0x00000000 chr 0x00000200, 0x1e, 0x017e, BODY_STRIPES, HEAD_RANDOM, 0x0411, -1, -1, 100, 13, 0xc0082000, 0x00000000, 0x02, 0x06, -1, 0, 0x00000000 weapon 0x0100, MODEL_CHRAVENGER, 0x001e, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_K7AVENGER, 0x00ffffff, 0x00000000 chr 0x00000200, 0x1f, 0x0177, BODY_STRIPES, HEAD_RANDOM, 0x0412, -1, -1, 100, 13, 0xe0082000, 0x00000000, 0x02, 0x07, -1, 0, 0x00000000 weapon 0x0100, MODEL_CHRAVENGER, 0x001f, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_K7AVENGER, 0x00ffffff, 0x00000000 chr 0x00000200, 0x20, 0x0189, BODY_STRIPES, HEAD_RANDOM, 0x0413, -1, -1, 100, 13, 0xc0082000, 0x00000000, 0x02, 0x07, -1, 0, 0x00000000 weapon 0x0100, MODEL_CHRAVENGER, 0x0020, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_K7AVENGER, 0x00ffffff, 0x00000000 chr 0x00000000, 0x26, 0x01bb, BODY_CHICROB, 0x00, FUNC_INIT_ROBOT, -1, -1, 1000, 50, 0x00080000, 0x00000000, 0x02, 0x08, -1, 0, 0x00000000 chr 0x00000000, 0x27, 0x01bc, BODY_CHICROB, 0x00, FUNC_INIT_ROBOT, -1, -1, 1000, 50, 0x00080000, 0x00000000, 0x02, 0x08, -1, 0, 0x00000000 chr 0x00000000, 0x28, 0x01bd, BODY_CHICROB, 0x00, FUNC_INIT_ROBOT, -1, -1, 1000, 50, 0x00080000, 0x00000000, 0x02, 0x08, -1, 0, 0x00000000 chr 0x00000000, 0x29, 0x01be, BODY_CHICROB, 0x00, FUNC_INIT_ROBOT, -1, -1, 1000, 50, 0x00080000, 0x00000000, 0x02, 0x08, -1, 0, 0x00000000 chr 0x00000400, 0x01, 0x01b5, BODY_TRENT, HEAD_TRENT, FUNC_TRENT_WAITING, -1, -1, 1000, 200, 0x80002000, 0x00300000, 0x02, 0x08, -1, 0, 0x00000000 weapon 0x0100, MODEL_CHRDY357TRENT, 0x0001, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_DY357LX, 0x00ffffff, 0x00000000 chr 0x00018400, 0x05, 0x01b6, BODY_PRESIDENT, HEAD_PRESIDENT, FUNC_INIT_PRESIDENT, -1, -1, 1000, 200, 0x00002000, 0x00300000, 0x10, 0x01, -1, 0, 0x00000000 chr 0x00008400, 0x08, 0x0086, BODY_PRESIDENT_CLONE, HEAD_PRESIDENT, 0x041a, -1, -1, 1000, 20, 0x00002000, 0x00300000, 0x02, 0x09, -1, 0, 0x02001400 chr 0x00000200, 0x2a, 0x0088, BODY_MRBLONDE, HEAD_MRBLONDE, FUNC_INIT_BLONDE, -1, -1, 1000, 100, 0x80004608, 0x00008080, 0x02, 0x09, -1, 0, 0x02001400 weapon 0x0100, MODEL_CHRAVENGER, 0x002a, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_K7AVENGER, 0x00ffffff, 0x00000000 chr 0x00000200, 0x2b, 0x0087, BODY_MRBLONDE, HEAD_MRBLONDE, FUNC_INIT_BLONDE, -1, -1, 1000, 100, 0x80004608, 0x00008080, 0x02, 0x09, -1, 0, 0x02001400 weapon 0x0100, MODEL_CHRAVENGER, 0x002b, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_K7AVENGER, 0x00ffffff, 0x00000000 chr 0x00000200, 0x2c, 0x0085, BODY_MRBLONDE, HEAD_MRBLONDE, FUNC_INIT_BLONDE, -1, -1, 1000, 100, 0x80004608, 0x00008080, 0x02, 0x09, -1, 0, 0x02001400 weapon 0x0100, MODEL_CHRAVENGER, 0x002c, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_K7AVENGER, 0x00ffffff, 0x00000000 chr 0x00000200, 0x2d, 0x019e, BODY_MRBLONDE, HEAD_MRBLONDE, FUNC_INIT_BLONDE, -1, -1, 1000, 100, 0x80004608, 0x00008080, 0x02, 0x0a, -1, 0, 0x02001400 weapon 0x0100, MODEL_CHRAVENGER, 0x002d, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_K7AVENGER, 0x00ffffff, 0x00000000 chr 0x00000200, 0x2e, 0x018e, BODY_MRBLONDE, HEAD_MRBLONDE, FUNC_INIT_BLONDE, -1, -1, 1000, 100, 0x80004608, 0x00008080, 0x02, 0x0a, -1, 0, 0x02001400 weapon 0x0100, MODEL_CHRAVENGER, 0x002e, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_K7AVENGER, 0x00ffffff, 0x00000000 chr 0x00000200, 0x2f, 0x01a7, BODY_MRBLONDE, HEAD_MRBLONDE, FUNC_INIT_BLONDE, -1, -1, 1000, 100, 0x80004608, 0x00008080, 0x02, 0x0a, -1, 0, 0x02001400 weapon 0x0100, MODEL_CHRAVENGER, 0x002f, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_K7AVENGER, 0x00ffffff, 0x00000000 chr 0x00000000, 0x30, 0x002d, BODY_STRIPES, HEAD_RANDOM, FUNC_SPAWNER, -1, -1, 100, 13, 0xe0082000, 0x00000000, 0x02, 0x0b, -1, 0, 0x00000000 weapon 0x0100, MODEL_CHRAVENGER, 0x0030, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_K7AVENGER, 0x00ffffff, 0x00000000 chr 0x00000000, 0x31, 0x0029, BODY_STRIPES, HEAD_RANDOM, FUNC_SPAWNER, -1, -1, 100, 13, 0xe0082000, 0x00000000, 0x02, 0x0b, -1, 0, 0x00000000 weapon 0x0100, MODEL_CHRAVENGER, 0x0031, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_K7AVENGER, 0x00ffffff, 0x00000000 chr 0x00000200, 0x32, 0x009a, BODY_STRIPES, HEAD_RANDOM, FUNC_STARTING_AREA_GUARD, -1, -1, 100, 13, 0xc0082000, 0x10000000, 0x02, 0x0c, -1, 0, 0x00000000 weapon 0x0100, MODEL_CHRAVENGER, 0x0032, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_K7AVENGER, 0x00ffffff, 0x00000000 chr 0x00000200, 0x33, 0x009b, BODY_STRIPES, HEAD_RANDOM, FUNC_STARTING_AREA_GUARD, -1, -1, 100, 13, 0xc0082000, 0x10000000, 0x02, 0x0c, -1, 0, 0x00000000 weapon 0x0100, MODEL_CHRAVENGER, 0x0033, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_K7AVENGER, 0x00ffffff, 0x00000000 chr 0x00000200, 0x34, 0x01b7, BODY_MRBLONDE, HEAD_MRBLONDE, FUNC_STARTING_AREA_GUARD, -1, -1, 100, 13, 0xc0082000, 0x10000000, 0x02, 0x0c, -1, 0, 0x00000000 weapon 0x0100, MODEL_CHRSNIPERRIFLE, 0x0034, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_SNIPERRIFLE, 0x00ffffff, 0x00000000 chr 0x00000200, 0x35, 0x0004, BODY_STRIPES, HEAD_RANDOM, FUNC_STARTING_AREA_GUARD, -1, -1, 100, 13, 0x80082000, 0x10000000, 0x02, 0x0d, -1, 0, 0x00000000 weapon 0x0100, MODEL_CHRAVENGER, 0x0035, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_K7AVENGER, 0x00ffffff, 0x00000000 chr 0x00000200, 0x36, 0x01b9, BODY_STRIPES, HEAD_RANDOM, FUNC_STARTING_AREA_GUARD, -1, -1, 100, 13, 0x80082101, 0x10000000, 0x02, 0x0d, -1, 0, 0x00000000 weapon 0x0100, MODEL_CHRAVENGER, 0x0036, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_K7AVENGER, 0x00ffffff, 0x00000000 chr 0x00000200, 0x37, 0x0012, BODY_MRBLONDE, HEAD_MRBLONDE, FUNC_STARTING_AREA_GUARD, -1, -1, 100, 13, 0x80082000, 0x10000000, 0x02, 0x0d, -1, 0, 0x00000000 weapon 0x0100, MODEL_CHRSNIPERRIFLE, 0x0037, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_SNIPERRIFLE, 0x00ffffff, 0x00000000 chr 0x00000000, 0x03, 0x0121, BODY_MRBLONDE, HEAD_MRBLONDE, FUNC_HIDE, -1, -1, 1000, 200, 0x00002000, 0x00300000, 0x02, 0x01, -1, 0, 0x00000000 chr 0x00004000, 0x04, 0x012f, BODY_SKEDAR, 0x00, FUNC_HIDE, -1, -1, 1000, 200, 0x00002000, 0x00300000, 0x02, 0x01, -1, 0, 0x00000000 tag 0x00, 1 object 0x0100, MODEL_A51_CRATE1, 0xffff, 0x00021501, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000 tag 0x01, 1 object 0x0100, MODEL_PRESCAPSULE, 0x01d8, 0x000001e1, 0x00000101, 0x00010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00002ee0, 0x00000000, 0x00000000, 0x0fff0000 tag 0x03, 1 object 0x0100, MODEL_SK_SHUTTLE, 0xffff, 0x000001e1, 0x00002100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000030d4, 0x00000000, 0x00000000, 0x0fff0000 tag 0x02, 1 weapon 0x0180, MODEL_CHRBRIEFCASE, 0x000c, 0x00000001, 0x00000001, 0x00400000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_PRESIDENTSCANNER, 0x00ffffff, 0x00000000 autogun 0x0100, MODEL_GROUNDGUN, 0x0043, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000fa0, 0x00000000, 0x00000000, 0x0fff0000, 0x003d0000, 0x00000000, 0x00020000, 0xfffe0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000016c, 0x001e0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 autogun 0x0100, MODEL_GROUNDGUN, 0x003b, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000fa0, 0x00000000, 0x00000000, 0x0fff0000, 0x00380000, 0x00000000, 0x00020000, 0xfffe0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000016c, 0x001e0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 tag 0x06, 1 shield 0x0100, MODEL_CHRSHIELD, 0x0106, 0x00000001, 0x000000e0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00010000, 0x00000000, 0x00000000 tag 0x07, 1 shield 0x0100, MODEL_CHRSHIELD, 0x0090, 0x00000001, 0x000000c0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00010000, 0x00000000, 0x00000000 tag 0x08, 1 weapon 0x0100, MODEL_MULTI_AMMO_CRATE, 0x0106, 0x00120001, 0x00080001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_PROXIMITYMINE, 0x00ffffff, 0x00000000 pad_effect PADEFFECT_SPARKS, 0x000001db pad_effect PADEFFECT_SMOKE, 0x000001dc pad_effect PADEFFECT_SPARKS, 0x000001dd pad_effect PADEFFECT_SPARKS, 0x000001de endprops intro: outfit OUTFIT_SNOW intro_weapon WEAPON_FALCON2_SCOPE, -1 ammo AMMOTYPE_PISTOL, 50 ammo AMMOTYPE_RIFLE, 100 intro_weapon WEAPON_REMOTEMINE, -1 ammo AMMOTYPE_REMOTE_MINE, 3 intro_weapon WEAPON_NIGHTVISION, -1 intro_weapon WEAPON_HORIZONSCANNER, -1 spawn 0x00b8 endintro path00: pad 0x0059 pad 0x0096 pad 0x0095 pad 0x0094 pad 0x00be pad 0x00bd pad 0x009e endpath path01: pad 0x00d1 pad 0x00d2 pad 0x00d3 pad 0x00b1 pad 0x00cd pad 0x00a6 pad 0x00b3 pad 0x00c3 endpath path02: pad 0x004c pad 0x0057 pad 0x005e pad 0x005d pad 0x005b pad 0x005f endpath path03: pad 0x005f pad 0x005b pad 0x005c pad 0x005d pad 0x0066 pad 0x005d pad 0x005c pad 0x005b endpath path04: pad 0x004d pad 0x0051 pad 0x0050 pad 0x0053 pad 0x0054 pad 0x0056 pad 0x006e endpath path05: pad 0x0055 pad 0x0052 pad 0x0054 pad 0x0056 pad 0x006e endpath path06: pad 0x0030 pad 0x002f pad 0x0167 pad 0x0166 pad 0x0165 pad 0x0164 pad 0x016a pad 0x0169 pad 0x016b endpath path07: pad 0x016c pad 0x016d pad 0x016e pad 0x016f pad 0x0170 pad 0x0171 pad 0x0172 pad 0x0173 endpath path08: pad 0x0048 pad 0x0049 pad 0x004a pad 0x0182 pad 0x0183 pad 0x0180 pad 0x0181 endpath path09: pad 0x017e pad 0x017f pad 0x017b pad 0x017c pad 0x017d pad 0x0034 endpath path10: pad 0x0177 pad 0x0175 pad 0x0176 pad 0x0189 endpath path11: pad 0x0189 pad 0x0188 pad 0x0187 pad 0x0186 pad 0x0185 pad 0x0184 endpath path12: pad 0x0106 pad 0x0107 pad 0x00f6 pad 0x0104 endpath paths: register_path path00, 0, 0 register_path path01, 1, 0 register_path path02, 2, 0 register_path path03, 3, 0 register_path path04, 4, 0 register_path path05, 5, 0 register_path path06, 6, 0 register_path path07, 7, 0 register_path path08, 8, 0 register_path path09, 9, 0 register_path path10, 10, 0 register_path path11, 11, 0 register_path path12, 12, 0 endpaths func1001_objectives_failed_msg: yield set_chr_flag_bank3 CHR_PRES_CLONE, CHRFLAG3_04000000 set_chr_flag_bank3 CHR_ELVIS, CHRFLAG3_04000000 set_chr_flag_bank3 CHR_PRESIDENT, CHRFLAG3_04000000 set_function CHR_SELF, GFUNC_SHOW_OBJ_FAILED_MSG endfunction func1400_setup_counterop: yield set_chr_alliance CHR_COUNTEROP, ALLIANCE_ENEMY set_function CHR_SELF, GFUNC_REBUILD_GROUPS endfunction func1011_setup_snow: enable_snow TRUE set_function CHR_SELF, GFUNC_IDLE endfunction func1002_intro: set_chr_flag_bank3 CHR_VELVET, CHRFLAG3_HIDDEN set_chr_flag_bank3 CHR_COUNTEROP, CHRFLAG3_HIDDEN set_music_track MUSIC_CRASHSITE_INTRO camera_movement 0x01b5 cmd0175 60 set_chr_flag_bank3 CHR_JOANNA, CHRFLAG3_UNPLAYABLE set_chr_flag_bank2 CHR_JOANNA, CHRFLAG2_00020000 animation 0x01b6, -1, -1, 0x0600, CHR_JOANNA, 4 set_chr_hud_visible CHR_JOANNA, TRUE restart_timer fade_to_color 0x000000ff, 0 fade_to_color 0x00000000, 300 set_cutscene_weapon CHR_JOANNA, WEAPON_NONE, WEAPON_NONE yield set_cutscene_weapon CHR_JOANNA, WEAPON_NONE, WEAPON_NONE .macro wait_until time loopid beginloop \loopid if_controller_button_pressed /*goto*/ 0x65 if_timer_gt \time, /*goto*/ 0x08 endloop \loopid label 0x08 .endm wait_until 724, 0x69 speak CHR_JOANNA, 0x0a20, 0x7759, CHANNEL_10, COLOR_09_BLUE // "Ahhh... uuhhhh..." wait_until 830, 0x6a speak CHR_JOANNA, 0x0a22, 0x7457, CHANNEL_10, COLOR_06_WHITE // "Agent Dark! Please report!" wait_until 980, 0x6b speak CHR_JOANNA, 0x0a21, 0x775a, CHANNEL_10, COLOR_09_BLUE // "Ahhh... uhh... owww..." wait_until 1030, 0x6c speak CHR_JOANNA, 0x0a23, 0x7458, CHANNEL_10, COLOR_06_WHITE // "Perfect Dark, come in!" wait_until 1152, 0x6e speak CHR_JOANNA, 0x0a24, 0x7459, CHANNEL_10, COLOR_09_BLUE // "A-agent Dark reporting in..." wait_until 1372, 0x6f speak CHR_JOANNA, 0x0a25, 0x745a, CHANNEL_10, COLOR_06_WHITE // "Agent Dark! Please reply!" wait_until 1610, 0x6d speak CHR_JOANNA, 0x0a26, 0x745b, CHANNEL_10, COLOR_09_BLUE // "Something's jamming my transmissions... It's comin..." wait_until 1875, 0x70 speak CHR_JOANNA, -1, 0x8189, CHANNEL_10, COLOR_00_GREEN wait_until 1900, 0x71 speak CHR_JOANNA, -1, 0x818a, CHANNEL_10, COLOR_00_GREEN wait_until 1926, 0x72 speak CHR_JOANNA, -1, 0x8188, CHANNEL_7, COLOR_00_GREEN wait_until 1958, 0x73 speak CHR_JOANNA, -1, 0x8189, CHANNEL_10, COLOR_00_GREEN wait_until 2000, 0x74 speak CHR_JOANNA, 0x0a27, 0x745c, CHANNEL_10, COLOR_09_BLUE // "I'd better find the jamming device and check that ..." wait_until 2116, 0x75 speak CHR_JOANNA, -1, 0x8188, CHANNEL_7, COLOR_00_GREEN wait_until 2168, 0x76 speak CHR_JOANNA, -1, 0x8187, CHANNEL_6, COLOR_00_GREEN wait_until 2224, 0x78 set_cutscene_weapon CHR_JOANNA, WEAPON_NONE, WEAPON_NONE yield set_cutscene_weapon CHR_JOANNA, WEAPON_FALCON2_SCOPE, WEAPON_NONE wait_until 2305, 0x79 speak CHR_JOANNA, -1, 0x01db, CHANNEL_5, COLOR_00_GREEN wait_until 2392, 0x7a speak CHR_JOANNA, -1, 0x8189, CHANNEL_7, COLOR_00_GREEN wait_until 2412, 0x7b speak CHR_JOANNA, -1, 0x8187, CHANNEL_6, COLOR_00_GREEN wait_until 2460, 0x7c speak CHR_JOANNA, -1, 0x8188, CHANNEL_7, COLOR_00_GREEN wait_until 2513, 0x7d speak CHR_JOANNA, -1, 0x8189, CHANNEL_6, COLOR_00_GREEN wait_until 2685, 0x7e speak CHR_JOANNA, -1, 0x818a, CHANNEL_7, COLOR_00_GREEN beginloop 0x0a if_camera_animating /*goto*/ 0x31 goto_next 0x65 label 0x31 if_controller_button_pressed /*goto*/ 0x65 label 0x31 endloop 0x0a label 0x65 set_cutscene_weapon CHR_JOANNA, WEAPON_NONE, WEAPON_NONE yield set_cutscene_weapon CHR_JOANNA, WEAPON_FALCON2_SCOPE, WEAPON_NONE mute_channel CHANNEL_7 mute_channel CHANNEL_6 mute_channel CHANNEL_5 mute_channel CHANNEL_10 unset_chr_flag_bank3 CHR_VELVET, CHRFLAG3_HIDDEN unset_chr_flag_bank3 CHR_COUNTEROP, CHRFLAG3_HIDDEN unset_chr_flag_bank3 CHR_JOANNA, CHRFLAG3_UNPLAYABLE set_chr_flag_bank2 CHR_JOANNA, CHRFLAG2_00020000 animation 0x01b6, -2, -1, 0x0600, CHR_JOANNA, 2 restart_default_music reset_ambience set_chr_hud_visible CHR_JOANNA, FALSE enter_firstperson set_function CHR_SELF, GFUNC_IDLE endfunction func0402_outro_from_menu: set_function 0x06, GFUNC_IDLE set_function 0x03, GFUNC_IDLE set_function CHR_SKEDAR, GFUNC_IDLE set_function CHR_ELVIS_OUTRO, GFUNC_IDLE set_function CHR_TRENT, GFUNC_IDLE hide_chr CHR_ROBOT1 hide_chr CHR_ROBOT2 hide_chr CHR_ROBOT3 hide_chr CHR_ROBOT4 set_function CHR_SELF, FUNC_OUTRO endfunction func0402_outro: set_stage_flag STAGEFLAG_OUTRO_STARTED hide_object OBJ_HOVERBIKE set_function CHR_PRESIDENT, GFUNC_IDLE if_chr_death_animation_finished CHR_JOANNA, /*goto*/ 0x31 set_target_chr CHR_JOANNA goto_next 0x08 label 0x31 set_target_chr CHR_VELVET label 0x08 camera_movement 0x01d9 set_music_track MUSIC_CRASHSITE_OUTRO set_chr_flag_bank3 CHR_COUNTEROP, CHRFLAG3_HIDDEN set_chr_flag_bank3 0xf1, CHRFLAG3_HIDDEN set_chr_flag_bank3 CHR_P1P2, CHRFLAG3_HIDDEN unset_chr_flag_bank3 TARGET_CHR, CHRFLAG3_HIDDEN set_function TARGET_CHR, GFUNC_IDLE remove_chr CHR_ELVIS set_function CHR_ELVIS, GFUNC_IDLE set_chr_flag_bank3 CHR_PRESIDENT, CHRFLAG3_HIDDEN set_chr_flag_bank3 CHR_PRESIDENT, CHRFLAG3_INVINCIBLE_TO_GUNFIRE set_function CHR_PRESIDENT, GFUNC_IDLE set_chr_flag_bank3 TARGET_CHR, CHRFLAG3_UNPLAYABLE unset_chr_flag_bank3 TARGET_CHR, CHRFLAG3_HIDDEN set_chr_flag_bank2 TARGET_CHR, CHRFLAG2_00020000 animation 0x01df, -1, -1, 0x0600, TARGET_CHR, 4 set_chr_flag_bank3 CHR_SKEDAR, CHRFLAG3_UNPLAYABLE unset_chr_flag_bank3 CHR_SKEDAR, CHRFLAG3_HIDDEN set_chr_flag_bank2 CHR_SKEDAR, CHRFLAG2_00020000 animation 0x01da, -1, -1, 0x0600, CHR_SKEDAR, 4 set_chr_flag_bank3 CHR_ELVIS_OUTRO, CHRFLAG3_INVINCIBLE_TO_GUNFIRE set_chr_flag_bank3 CHR_ELVIS_OUTRO, CHRFLAG3_UNPLAYABLE unset_chr_flag_bank3 CHR_ELVIS_OUTRO, CHRFLAG3_HIDDEN set_chr_flag_bank2 CHR_ELVIS_OUTRO, CHRFLAG2_00020000 animation 0x01db, -1, -1, 0x0600, CHR_ELVIS_OUTRO, 4 set_chr_flag_bank3 CHR_TRENT, CHRFLAG3_INVINCIBLE_TO_GUNFIRE set_chr_flag_bank3 CHR_TRENT, CHRFLAG3_UNPLAYABLE unset_chr_flag_bank3 CHR_TRENT, CHRFLAG3_HIDDEN set_chr_flag_bank2 CHR_TRENT, CHRFLAG2_00020000 animation 0x01dc, -1, -1, 0x0600, CHR_TRENT, 4 set_chr_flag_bank3 CHR_MRBLONDE, CHRFLAG3_INVINCIBLE_TO_GUNFIRE set_chr_flag_bank3 CHR_MRBLONDE, CHRFLAG3_UNPLAYABLE unset_chr_flag_bank3 CHR_MRBLONDE, CHRFLAG3_HIDDEN set_chr_flag_bank2 CHR_MRBLONDE, CHRFLAG2_00020000 animation 0x01dd, -1, -1, 0x0600, CHR_MRBLONDE, 4 set_chr_flag_bank3 CHR_PRESIDENT_OUTRO, CHRFLAG3_INVINCIBLE_TO_GUNFIRE set_chr_flag_bank3 CHR_PRESIDENT_OUTRO, CHRFLAG3_UNPLAYABLE unset_chr_flag_bank3 CHR_PRESIDENT_OUTRO, CHRFLAG3_HIDDEN set_chr_flag_bank2 CHR_PRESIDENT_OUTRO, CHRFLAG2_00020000 animation 0x01de, -1, -1, 0x0600, CHR_PRESIDENT_OUTRO, 4 show_object 0x00 set_object_flag_bank1 OBJ_CRATE, OBJECTFLAG1_04000000 set_object_flag_bank2 OBJ_CRATE, OBJECTFLAG2_00000010 object_do_animation 0x01e0, OBJ_CRATE, 0x04ff, 0xff restart_timer set_cutscene_weapon TARGET_CHR, WEAPON_NONE, WEAPON_NONE yield set_cutscene_weapon TARGET_CHR, WEAPON_NONE, WEAPON_NONE set_cutscene_weapon CHR_ELVIS_OUTRO, WEAPON_NONE, WEAPON_NONE yield set_cutscene_weapon CHR_ELVIS_OUTRO, WEAPON_HAMMER, WEAPON_NONE show_nonessential_chrs FALSE wait_until 146, 0x69 play_sound 0x0594, CHANNEL_7 wait_until 200, 0x6a play_sound 0x0595, CHANNEL_6 wait_until 248, 0x6b speak CHR_JOANNA, 0x0a28, 0x745d, CHANNEL_10, COLOR_09_BLUE // "How are you feeling, Mr. President?" wait_until 414, 0x6c speak CHR_JOANNA, 0x0a29, 0x745e, CHANNEL_10, COLOR_08_RED // "Better now, young lady. Today, I think, will take ..." wait_until 490, 0x6e play_sound 0x0596, CHANNEL_5 wait_until 526, 0x6f play_sound 0x0597, CHANNEL_7 wait_until 578, 0x6d play_sound 0x0427, CHANNEL_6 wait_until 1078, 0x71 play_sound 0x0596, CHANNEL_5 wait_until 1116, 0x72 play_sound 0x0597, CHANNEL_7 wait_until 1200, 0x70 speak CHR_JOANNA, 0x0a2a, 0x745f, CHANNEL_10, COLOR_09_BLUE // "Just one thing, sir? What is the Pelagic II that T..." wait_until 1474, 0x74 play_sound 0x0525, CHANNEL_5 play_sound 0x00f8, CHANNEL_10 wait_until 1490, 0x75 play_sound 0x0596, CHANNEL_7 wait_until 1492, 0x76 play_sound 0x0594, CHANNEL_6 wait_until 1556, 0x77 play_sound 0x00f8, CHANNEL_10 wait_until 1626, 0x73 speak CHR_JOANNA, 0x0a2b, 0x7460, CHANNEL_10, COLOR_08_RED // "It's a U.S. government deep sea research vessel, o..." wait_until 1807, 0x79 play_sound 0x0595, CHANNEL_7 wait_until 1850, 0x7a play_sound 0x0597, CHANNEL_6 wait_until 1872, 0x7c play_sound 0x0595, CHANNEL_7 wait_until 2074, 0x7d play_sound 0x0594, CHANNEL_6 wait_until 2270, 0x7e play_sound 0x0596, CHANNEL_5 wait_until 2286, 0x7f play_sound 0x818a, CHANNEL_7 wait_until 2296, 0x80 play_sound 0x8189, CHANNEL_6 wait_until 2316, 0x81 play_sound 0x8187, CHANNEL_5 wait_until 2335, 0x82 play_sound 0x8188, CHANNEL_7 wait_until 2450, 0x7b speak CHR_JOANNA, 0x0a2c, 0x7461, CHANNEL_10, COLOR_09_BLUE // "Trent has a lot to answer for, but I don't think w..." wait_until 3150, 0x83 speak CHR_JOANNA, 0x0a2d, 0x7462, CHANNEL_10, COLOR_03_RED // "You have failed, Easton. You are a flawed device, ..." wait_until 3380, 0x88 play_sound 0x818a, CHANNEL_7 wait_until 3580, 0x87 speak CHR_JOANNA, 0x0a2e, 0x7463, CHANNEL_10, COLOR_05_GREEN // "Just try it, you Scandinavian freak!" wait_until 3747, 0x84 play_sound 0x8189, CHANNEL_5 wait_until 3875, 0x85 play_sound 0x8188, CHANNEL_7 wait_until 4054, 0x86 play_sound 0x05a0, CHANNEL_5 play_sound 0x005c, CHANNEL_10 set_chr_flag_bank2 CHR_MRBLONDE, CHRFLAG2_CLOAKED set_chr_flag_bank2 CHR_SKEDAR, CHRFLAG2_CLOAKED wait_until 4100, 0x95 unset_chr_flag_bank2 CHR_SKEDAR, CHRFLAG2_CLOAKED play_sound 0x052a, CHANNEL_10 wait_until 4200, 0x78 speak CHR_JOANNA, 0x0a2f, 0x7464, CHANNEL_10, COLOR_05_GREEN // "Noooooooo!!!" wait_until 4240, 0x93 play_sound 0x05c0, CHANNEL_10 wait_until 4296, 0x89 play_sound 0x007d, CHANNEL_6 wait_until 4444, 0x8a play_sound 0x05a0, CHANNEL_5 play_sound 0x0530, CHANNEL_10 wait_until 4506, 0x8b play_sound 0x05a1, CHANNEL_7 wait_until 4544, 0x96 set_chr_flag_bank2 CHR_SKEDAR, CHRFLAG2_CLOAKED wait_until 4566, 0x8c play_sound 0x005b, CHANNEL_10 unset_chr_flag_bank2 CHR_MRBLONDE, CHRFLAG2_CLOAKED wait_until 4576, 0x8d wait_until 4622, 0x8e play_sound 0x8187, CHANNEL_7 wait_until 4678, 0x8f play_sound 0x8188, CHANNEL_7 wait_until 4752, 0x90 play_sound 0x8189, CHANNEL_7 beginloop 0x0a if_camera_animating /*goto*/ 0x31 goto_next 0x65 label 0x31 if_controller_button_pressed /*goto*/ 0x65 label 0x31 endloop 0x0a label 0x65 end_level set_function CHR_SELF, GFUNC_IDLE endfunction func0407_init_blonde: set_accuracy 20 set_reaction_speed 55 set_chr_health CHR_SELF, 40 set_armor 60 set_recovery_speed 0 set_shield 0 set_function CHR_SELF, GFUNC_UNALERTED endfunction func0406_init_stripes: set_chr_field_0x35e_0x35f 2, 0x0a set_accuracy 16 set_reaction_speed 55 set_chr_health CHR_SELF, 60 set_armor 0 set_recovery_speed 30 set_shield 0 set_function CHR_SELF, GFUNC_UNALERTED endfunction func1003_msg_therestheescapepod: beginloop 0x06 consider_coop_for_p1p2_chr CHR_SELF if_chr_distance_to_pad_lt CHR_P1P2, 1000, 0x01d8, /*goto*/ 0x31 endloop 0x06 label 0x31 speak CHR_P1P2, 0x0a0a, 0x73cc, CHANNEL_6, COLOR_09_BLUE // "There's the escape pod." set_function CHR_SELF, GFUNC_IDLE endfunction func1004_msg_maybetheresabeacon: restart_timer beginloop 0x06 endloop 0x06 // Unreachable label 0x31 speak CHR_JOANNA, 0x0a0b, 0x73cd, CHANNEL_6, COLOR_09_BLUE // "Maybe there's a beacon in there." set_function CHR_SELF, GFUNC_IDLE endfunction func1005_msg_thejamming: if_difficulty_lt DIFF_PA, /*goto*/ 0x0f beginloop 0x06 consider_coop_for_p1p2_chr CHR_SELF if_objective_complete 2, /*goto*/ 0x0f if_chr_in_room CHR_P1P2, 0x00, 0x0029, /*goto*/ 0x31 endloop 0x06 label 0x31 speak CHR_P1P2, 0x0a0c, 0x73ce, CHANNEL_6, COLOR_09_BLUE // "The jamming... It's coming from that ship." label 0x0f set_function CHR_SELF, GFUNC_IDLE endfunction func1006_msg_elvisbeable: beginloop 0x06 consider_coop_for_p1p2_chr CHR_SELF if_chr_distance_to_pad_lt CHR_P1P2, 1000, 0x0105, /*goto*/ 0x31 endloop 0x06 label 0x31 speak CHR_P1P2, 0x0a0d, 0x73cf, CHANNEL_6, COLOR_09_BLUE // "Elvis... He'll be able to protect the President." set_function CHR_SELF, GFUNC_IDLE endfunction .macro init_path pathid function set_chr_field_0x35e_0x35f 2, 0x0a set_accuracy 16 set_reaction_speed 55 set_chr_health CHR_SELF, 60 set_armor 0 set_recovery_speed 30 set_shield 0 set_return_function CHR_SELF, \function assign_path \pathid start_path set_function CHR_SELF, GFUNC_UNALERTED_0004 .endm func0408_start_path00: init_path 0, 0x0408 endfunction func0409_start_path01: init_path 1, 0x0409 endfunction func040a_start_path02: init_path 2, 0x040a endfunction func040b_start_path03: init_path 3, 0x040b endfunction func040c_start_path04: init_path 4, 0x040c endfunction func040d_start_path05: init_path 5, 0x040d endfunction func040e_start_path06: init_path 6, 0x040e endfunction func040f_start_path07: init_path 7, 0x040f endfunction func0410_start_path08: init_path 8, 0x0410 endfunction func0411_start_path09: init_path 9, 0x0411 endfunction func0412_start_path10: init_path 10, 0x0412 endfunction func0413_start_path11: init_path 11, 0x0413 endfunction /** * This function is unfinished. Target labels don't exist. * * Looks like it was intended to be a spawning function. */ unregistered_function1: label 0x66 restart_timer beginloop 0x67 dprint "TIME\n" if_timer_lt 1800, /*goto*/ 0x98 label 0x31 dprint "SQUAD\n" if_num_chrs_in_group_gt 1, 0x0f, /*goto*/ 0x98 call_rng if_rand_gt 64, /*goto*/ 0x69 if_rand_gt 128, /*goto*/ 0x6a if_rand_gt 196, /*goto*/ 0x6b label 0x98 endloop 0x67 label 0x68 yield cmd0145_rebuild_groups cmd0146_rebuild_groups goto_first 0x66 endfunction func0415_unused: set_chr_field_0x35e_0x35f 2, 0x0a set_accuracy 16 set_reaction_speed 55 set_chr_health CHR_SELF, 60 set_armor 0 set_recovery_speed 30 set_shield 0 try_draw_weapon MODEL_CHRAVENGER, WEAPON_K7AVENGER, 0x00000000, /*goto*/ 0x08 label 0x08 set_chr_alliance CHR_SELF, ALLIANCE_ENEMY set_self_flag_bankx CHRFLAG0_00002000, BANK_0 set_group 0x0f cmd0145_rebuild_groups cmd0146_rebuild_groups set_function CHR_SELF, GFUNC_SEARCH_FOR_PLAYER endfunction func100c_spawn_dd_guards: label 0x66 restart_timer beginloop 0x67 if_stage_flag_eq STAGEFLAG_OUTRO_STARTED, TRUE, /*goto*/ 0x0f if_stage_flag_eq STAGEFLAG_ELVIS_GAVE_PROXYMINE, TRUE, /*goto*/ 0x31 if_objective_complete 0, /*goto*/ 0x31 if_objective_complete 1, /*goto*/ 0x31 if_objective_complete 2, /*goto*/ 0x31 if_objective_complete 3, /*goto*/ 0x31 if_objective_complete 4, /*goto*/ 0x31 endloop 0x67 label 0x31 dprint "TIME\n" if_timer_lt 3600, /*goto*/ 0x98 label 0x31 dprint "SQUAD\n" if_num_chrs_in_group_gt 1, 0x0e, /*goto*/ 0x98 call_rng if_rand_gt 64, /*goto*/ 0x69 if_rand_gt 128, /*goto*/ 0x6a if_rand_gt 196, /*goto*/ 0x6b // 1 if_stage_flag_eq STAGEFLAG_OUTRO_STARTED, TRUE, /*goto*/ 0x0f try_spawn_chr BODY_DD_GUARD, HEAD_RANDOM, 0x0126, FUNC_SPAWNED_GUARD, 0x00000200, /*goto*/ 0x68 goto_next 0x98 // 2 label 0x69 if_stage_flag_eq STAGEFLAG_OUTRO_STARTED, TRUE, /*goto*/ 0x0f try_spawn_chr BODY_DD_GUARD, HEAD_RANDOM, 0x00e5, FUNC_SPAWNED_GUARD, 0x00000200, /*goto*/ 0x68 goto_next 0x98 // 3 label 0x6a if_stage_flag_eq STAGEFLAG_OUTRO_STARTED, TRUE, /*goto*/ 0x0f try_spawn_chr BODY_DD_GUARD, HEAD_RANDOM, 0x0130, FUNC_SPAWNED_GUARD, 0x00000200, /*goto*/ 0x68 goto_next 0x98 // 4 label 0x6b if_stage_flag_eq STAGEFLAG_OUTRO_STARTED, TRUE, /*goto*/ 0x0f try_spawn_chr BODY_DD_GUARD, HEAD_RANDOM, 0x00fd, FUNC_SPAWNED_GUARD, 0x00000200, /*goto*/ 0x68 goto_next 0x98 // Spawn failed label 0x98 goto_first 0x67 // Spawn worked label 0x68 if_stage_flag_eq STAGEFLAG_OUTRO_STARTED, TRUE, /*goto*/ 0x0f yield cmd0145_rebuild_groups cmd0146_rebuild_groups goto_first 0x66 label 0x0f set_function CHR_SELF, GFUNC_IDLE endfunction func0416_spawned_guard: set_chr_field_0x35e_0x35f 2, 0x0a set_accuracy 16 set_reaction_speed 55 set_chr_health CHR_SELF, 60 set_armor 0 set_recovery_speed 30 set_shield 0 try_draw_weapon MODEL_CHRAVENGER, WEAPON_K7AVENGER, 0x00000000, /*goto*/ 0x08 label 0x08 set_chr_alliance CHR_SELF, ALLIANCE_ENEMY set_self_flag_bankx CHRFLAG0_00002000, BANK_0 set_self_flag_bankx CHRFLAG0_AIVSAI, BANK_0 set_group 0x0e cmd0145_rebuild_groups cmd0146_rebuild_groups // Pad is next to UFO run_to_pad 0x0105 set_return_function CHR_SELF, GFUNC_UNALERTED set_function CHR_SELF, GFUNC_UNALERTED endfunction func1008_escapepod: beginloop 0x06 consider_coop_for_p1p2_chr CHR_SELF if_object_in_good_condition OBJ_ESCAPEPOD, /*goto*/ 0x31 // Pod destroyed mute_channel CHANNEL_0 message CHR_JOANNA, 0x0a0f // "Critical mission object has been destroyed." set_stage_flag STAGEFLAG_ESCAPEPOD_DESTROYED set_function CHR_SELF, GFUNC_IDLE // Pod healthy label 0x31 if_stage_flag_eq STAGEFLAG_BEACON_ACTIVATED, TRUE, /*goto*/ 0x08 if_chr_activated_object CHR_P1P2, OBJ_ESCAPEPOD, /*goto*/ 0x31 label 0x08 reloop 0x06 label 0x31 assign_sound 0x8115, CHANNEL_0 play_sound_from_object CHANNEL_0, OBJ_ESCAPEPOD, 0x0320, 0x0640 message CHR_P1P2, 0x0a0e // "Distress beacon has been activated." set_stage_flag STAGEFLAG_BEACON_ACTIVATED endloop 0x06 set_function CHR_SELF, GFUNC_IDLE endfunction func1009_check_shuttle_destroyed: yield yield yield yield yield beginloop 0x06 if_object_in_good_condition OBJ_SKEDAR_SHUTTLE, /*goto*/ 0x31 message CHR_JOANNA, 0x0a15 // "Jamming device has been shut down." set_stage_flag STAGEFLAG_SKEDAR_SHUTTLE_DESTROYED set_function CHR_SELF, GFUNC_IDLE label 0x31 endloop 0x06 endfunction func100a_check_president_dead: beginloop 0x06 if_chr_death_animation_finished CHR_PRESIDENT, /*goto*/ 0x31 if_chr_dying CHR_PRESIDENT, /*goto*/ 0x31 if_chr_unloaded CHR_PRESIDENT, /*goto*/ 0x31 endloop 0x06 label 0x31 message CHR_JOANNA, 0x0a16 // "President has been killed." set_stage_flag STAGEFLAG_PRESIDENT_DEAD set_function CHR_SELF, GFUNC_IDLE endfunction func100b_check_clone_dead: beginloop 0x06 if_chr_death_animation_finished CHR_PRES_CLONE, /*goto*/ 0x31 if_chr_dying CHR_PRES_CLONE, /*goto*/ 0x31 if_chr_unloaded CHR_PRES_CLONE, /*goto*/ 0x31 endloop 0x06 label 0x31 message CHR_JOANNA, 0x0a17 // "Presidential clone has been eliminated." set_stage_flag STAGEFLAG_CLONE_DEAD set_function CHR_SELF, GFUNC_IDLE endfunction func0403_init_elvis: set_shield 100 set_chr_flag_bank2 CHR_SELF, CHRFLAG2_10000000 set_self_flag_bank3 CHRFLAG3_INVINCIBLE_TO_GUNFIRE set_accuracy 100 set_reaction_speed 100 set_armor 1000 set_chr_health CHR_SELF, 1000 set_self_flag_bank3 CHRFLAG3_00080000 assign_path 12 start_path set_function CHR_SELF, FUNC_ELVIS endfunction func0404_elvis: set_onshot_function FUNC_ELVIS label 0x04 restart_timer beginloop 0x06 if_chr_idle /*goto*/ 0x31 if_path_started /*goto*/ 0x31 restart_timer start_path label 0x31 dprint "GO TO PAD\n" set_target_chr CHR_JOANNA set_follow_chr CHR_JOANNA if_stage_flag_eq STAGEFLAG_ELVIS_GAVE_PROXYMINE, TRUE, /*goto*/ 0x31 if_objective_complete 0, /*goto*/ 0x31 if_objective_complete 1, /*goto*/ 0x31 if_objective_complete 2, /*goto*/ 0x31 if_objective_complete 3, /*goto*/ 0x31 if_objective_complete 4, /*goto*/ 0x31 if_chr_sees_player /*goto*/ 0xa5 set_target_chr CHR_VELVET set_follow_chr CHR_VELVET if_chr_sees_player /*goto*/ 0xa5 label 0x31 if_enemy_distance_lt_and_los 2540, /*goto*/ 0x0a if_timer_gt 600, /*goto*/ 0x0b endloop 0x06 // 10 seconds passed label 0x0b call_rng if_rand_gt 128, /*goto*/ 0x31 // 50% chance of doing look around animation call_rng if_rand_lt 64, /*goto*/ 0x99 if_rand_lt 128, /*goto*/ 0x9a if_rand_lt 196, /*goto*/ 0x9b set_self_flag_bankx CHRFLAG1_DONE_SEARCH_ANIM, BANK_1 animation ANIM_LOOK_AROUND_025B, 0, -1, 0x100a, CHR_SELF, 2 goto_next 0x31 label 0x99 animation ANIM_LOOK_AROUND_025C, 0, -1, 0x100a, CHR_SELF, 2 goto_next 0x31 label 0x9a animation ANIM_LOOK_AROUND_025D, 0, -1, 0x100a, CHR_SELF, 2 goto_next 0x31 label 0x9b animation ANIM_LOOK_AROUND_025E, 0, -1, 0x100a, CHR_SELF, 2 label 0x31 goto_first 0x04 // Detected enemy label 0x0a dprint "DETECTED\n" set_return_function CHR_SELF, FUNC_INIT_ELVIS set_onshot_function FUNC_INIT_ELVIS set_function CHR_SELF, GFUNC_COMBAT_WITH_TARGET_CHR // Sees player label 0xa5 set_target_chr FOLLOW_CHR try_run_to_target_chr /*goto*/ 0x12 beginloop 0x12 dprint "GO TOWARDS\n" if_chr_distance_lt 300, /*goto*/ 0x13 if_timer_gt 180, /*goto*/ 0x08 endloop 0x12 // Running towards player for 3 seconds - check if can still see player label 0x08 if_chr_sees_player /*goto*/ 0x31 goto_first 0x04 label 0x31 goto_first 0xa5 // Close to player label 0x13 do_special_animation -1 speak TARGET_CHR, 0x0a1f, 0x12e2, CHANNEL_6, COLOR_04_ORANGE // "Take this; you should find it useful!" give_object_to_chr OBJ_PROXYMINE, TARGET_CHR beginloop 0x14 if_sound_finished CHANNEL_6, /*goto*/ 0x31 endloop 0x14 label 0x31 stop_chr set_stage_flag STAGEFLAG_ELVIS_GAVE_PROXYMINE goto_first 0x04 endfunction func0405_unused: jog_to_pad 0x0107 beginloop 0x06 endloop 0x06 endfunction func0417_init_robot: set_accuracy 40 set_self_flag_bank3 CHRFLAG3_00020000 set_chr_health CHR_SELF, 250 set_function CHR_SELF, FUNC_ROBOT endfunction func0418_robot: set_onshot_function FUNC_ROBOT label 0x66 set_self_flag_bank3 CHRFLAG3_00040000 if_chr_dying CHR_SELF, /*goto*/ 0x11 if_chr_death_animation_finished CHR_SELF, /*goto*/ 0x11 if_chr_unloaded CHR_SELF, /*goto*/ 0x08 goto_next 0x04 label 0x08 yield damage_chr CHR_SELF, 18 goto_first 0x66 beginloop 0x04 dprint "PART 1\n" consider_coop_for_p1p2_chr CHR_SELF set_target_chr CHR_P1P2 if_alertness 99, OPERATOR_GREATER_THAN, /*goto*/ 0x0d if_target_chr_in_sight /*goto*/ 0x0d call_rng if_rand_gt 5, /*goto*/ 0x31 if_sound_finished CHANNEL_5, /*goto*/ 0x08 goto_next 0x31 // Make random noise label 0x08 call_rng if_rand_lt 86, /*goto*/ 0x0b if_rand_lt 172, /*goto*/ 0x0c assign_sound 0x046a, CHANNEL_5 play_sound_from_entity CHANNEL_5, CHR_SELF, 0x0bb8, 0x1770, 0x01 goto_next 0x31 label 0x0b assign_sound 0x046b, CHANNEL_5 play_sound_from_entity CHANNEL_5, CHR_SELF, 0x0bb8, 0x1770, 0x01 goto_next 0x31 label 0x0c assign_sound 0x046c, CHANNEL_5 play_sound_from_entity CHANNEL_5, CHR_SELF, 0x0bb8, 0x1770, 0x01 label 0x31 endloop 0x04 // Alerted label 0x0d set_group_alertness 100 restart_timer if_chr_distance_lt 300, /*goto*/ 0x31 if_chr_distance_gt 1000, /*goto*/ 0x15 if_target_chr_in_sight /*goto*/ 0x13 // Distance > 1000 or not in sight label 0x15 try_run_to_target_chr_with_hand_up /*goto*/ 0x08 // Distance < 300 label 0x31 stop_chr label 0x08 if_self_flag_bankx_eq CHRFLAG0_00002000, TRUE, BANK_0, /*goto*/ 0x0a say_quip CHR_JOANNA, 0x1f, 0xff, 0x02, 0xff, BANK_1, 0x00, 0x00 set_self_flag_bankx CHRFLAG0_00002000, BANK_0 beginloop 0x0a dprint "PART 2\n" if_timer_gt 180, /*goto*/ 0x08 if_chr_distance_gt 1000, /*goto*/ 0x15 dprint "PART 2\n" if_target_chr_in_sight /*goto*/ 0x13 consider_coop_for_p1p2_chr CHR_SELF set_target_chr CHR_P1P2 if_target_chr_in_sight /*goto*/ 0x13 consider_coop_for_p1p2_chr CHR_SELF set_target_chr CHR_P1P2 label 0x15 endloop 0x0a // Player in sight label 0x13 set_target_chr CHR_P1P2 restart_timer dprint "PART 3a\n" try_aim_and_shoot_thing1 0x0200, 0x0000, /*goto*/ 0x0e goto_first 0x04 beginloop 0x0e if_chr_stopped /*goto*/ 0x08 endloop 0x0e label 0x08 goto_first 0x0d label 0x11 assign_sound 0x1aec, CHANNEL_6 play_sound_from_entity CHANNEL_6, CHR_SELF, 0x0bb8, 0x1770, 0x01 set_function CHR_SELF, GFUNC_IDLE endfunction /** * Assigned to two stripes guards. */ func0414_spawner: set_self_flag_bank3 CHRFLAG3_00000002 beginloop 0x06 consider_coop_for_p1p2_chr CHR_SELF set_target_chr CHR_P1P2 if_chr_sees_player /*goto*/ 0x0a // Room 0x0029 is the skedar shuttle area if_chr_in_room CHR_P1P2, 0x00, 0x0029, /*goto*/ 0x0a reloop 0x06 label 0x0a dprint "HEARSPAWN\n" label 0x31 if_never_been_onscreen /*goto*/ 0x52 dprint "NEVER VISFAIL\n" if_chr_sees_player /*goto*/ 0x0a endloop 0x06 label 0x0a set_function CHR_SELF, GFUNC_ALERTED label 0x52 dprint "CHECK DUPE\n" if_chr_death_animation_finished CHR_CLONE, /*goto*/ 0x52 set_function CHR_SELF, FUNC_SPAWNER label 0x52 dprint "CREATE SPAWN\n" try_spawn_clone2 CHR_SELF, GFUNC_ALERTED, 0x00000000, /*goto*/ 0x31 dprint "CREATE FAIL\n" set_function CHR_SELF, FUNC_SPAWNER label 0x31 yield set_function CHR_SELF, FUNC_SPAWNER set_function CHR_SELF, GFUNC_IDLE endfunction func0419_unused: set_self_flag_bank3 CHRFLAG3_HIDDEN set_function CHR_SELF, GFUNC_IDLE endfunction func0422_hide: set_self_flag_bank3 CHRFLAG3_INVINCIBLE_TO_GUNFIRE set_self_flag_bank3 CHRFLAG3_UNEXPLODABLE set_self_flag_bank3 CHRFLAG3_HIDDEN set_function CHR_SELF, GFUNC_IDLE endfunction func041a_pres_clone: set_self_flag_bank3 CHRFLAG3_00020000 set_self_flag_bank3 CHRFLAG3_00080000 beginloop 0x06 consider_coop_for_p1p2_chr CHR_SELF set_target_chr CHR_P1P2 if_alertness 99, OPERATOR_GREATER_THAN, /*goto*/ 0x31 if_player_looking_at_something_maybe 0x00, 0x00, 0x01, /*goto*/ 0x08 if_target_chr_in_sight /*goto*/ 0x31 label 0x08 endloop 0x06 // Alert, or player in sight and looking at clone label 0x31 run_to_pad 0x002c beginloop 0x0a if_chr_stopped /*goto*/ 0x31 endloop 0x0a label 0x31 stop_chr label 0xa5 animation ANIM_COWER_0229, -1, -1, 0x100a, CHR_SELF, 2 beginloop 0x10 if_chr_stopped /*goto*/ 0x31 endloop 0x10 label 0x31 goto_first 0xa5 set_function CHR_SELF, GFUNC_IDLE endfunction func041b_init_president: set_self_flag_bank3 CHRFLAG3_00080000 set_chr_health CHR_SELF, 300 set_shield 0 set_function CHR_SELF, FUNC_PRESIDENT_WAITING endfunction func041c_president_waiting: set_onshot_function FUNC_PRESIDENT_WAITING if_chr_dying CHR_SELF, /*goto*/ 0x08 if_chr_death_animation_finished CHR_SELF, /*goto*/ 0x08 if_chr_unloaded CHR_SELF, /*goto*/ 0x08 goto_next 0x31 // Dying label 0x08 set_onshot_function GFUNC_IDLE set_function CHR_SELF, GFUNC_IDLE label 0x31 stop_chr yield // Wait until trigger and can see player beginloop 0x06 consider_coop_for_p1p2_chr CHR_SELF set_target_chr CHR_P1P2 if_stage_flag_eq STAGEFLAG_TRIGGER_PRESIDENT_RUNNING, TRUE, /*goto*/ 0x31 goto_first 0x06 label 0x31 if_chr_sees_player /*goto*/ 0x31 endloop 0x06 label 0x31 set_onshot_function FUNC_PRESIDENT_RUNNING set_function CHR_SELF, FUNC_PRESIDENT_RUNNING endfunction func041d_president_running: set_self_flag_bank3 CHRFLAG3_01000000 set_alertness 100 set_onshot_function FUNC_PRESIDENT_RUNNING dprint "RESTART\n" yield if_chr_dying CHR_SELF, /*goto*/ 0x08 if_chr_death_animation_finished CHR_SELF, /*goto*/ 0x08 if_chr_unloaded CHR_SELF, /*goto*/ 0x08 goto_next 0x31 // Dying label 0x08 set_onshot_function GFUNC_IDLE restart_timer beginloop 0x9c dprint "KILLED\n" if_timer_gt 15, /*goto*/ 0x08 endloop 0x9c label 0x08 assign_sound 0x1abf, CHANNEL_6 play_sound_from_entity CHANNEL_6, CHR_SELF, 0x0bb8, 0x1770, 0x01 set_onshot_function GFUNC_IDLE set_function CHR_SELF, GFUNC_IDLE // Alive label 0x31 dprint "b4 shield check\n" if_just_injured CHR_SELF, /*goto*/ 0x08 goto_next 0x9d // Injured label 0x08 restart_timer assign_sound 0x1ac2, CHANNEL_6 play_sound_from_entity CHANNEL_6, CHR_SELF, 0x0bb8, 0x1770, 0x01 beginloop 0x9e dprint "INJURED\n" if_num_times_shot_lt 1, /*goto*/ 0x08 if_timer_lt 20, /*goto*/ 0x08 label 0x08 if_chr_stopped /*goto*/ 0x9d endloop 0x9e // Main logic label 0x9d stop_chr restart_timer beginloop 0x9f dprint "WAIT\n" // Room 0x0014 = UFO area // Yes, checking this 5 times is unnecessary if_chr_in_room CHR_SELF, 0x00, 0x0014, /*goto*/ 0xa5 if_chr_in_room CHR_SELF, 0x00, 0x0014, /*goto*/ 0xa5 if_chr_in_room CHR_SELF, 0x00, 0x0014, /*goto*/ 0xa5 if_chr_in_room CHR_SELF, 0x00, 0x0014, /*goto*/ 0xa5 if_chr_in_room CHR_SELF, 0x00, 0x0014, /*goto*/ 0xa5 dprint "target\n" if_chr_sees_player /*goto*/ 0x08 goto_next 0xa0 label 0x08 if_timer_gt 1250, /*goto*/ 0x31 if_chr_distance_gt 200, /*goto*/ 0xa0 endloop 0x9f // 20.8 seconds passed // Pointless RNG check label 0x31 call_rng if_rand_lt 64, /*goto*/ 0x31 goto_first 0x9d label 0x31 goto_first 0x9d // Sees player label 0x08 goto_first 0x9d // Can't see player, or distance > 200 label 0xa0 restart_timer label 0x31 if_chr_distance_gt 300, /*goto*/ 0x31 try_run_to_target_chr_with_hand_up /*goto*/ 0xa1 label 0x31 try_run_to_target_chr /*goto*/ 0xa1 beginloop 0xa1 dprint "FOLLOW\n" if_chr_in_room CHR_SELF, 0x00, 0x0014, /*goto*/ 0xa5 if_chr_in_room CHR_SELF, 0x00, 0x0014, /*goto*/ 0xa5 if_chr_in_room CHR_SELF, 0x00, 0x0014, /*goto*/ 0xa5 if_chr_in_room CHR_SELF, 0x00, 0x0014, /*goto*/ 0xa5 if_chr_in_room CHR_SELF, 0x00, 0x0014, /*goto*/ 0xa5 if_chr_distance_lt 100, /*goto*/ 0xa2 if_chr_stopped /*goto*/ 0xa2 if_timer_gt 360, /*goto*/ 0x31 endloop 0xa1 // 6 seconds passed while running label 0x31 goto_first 0xa0 // Unreachable label 0x08 goto_first 0xa0 // Next to player label 0xa2 goto_first 0x9d // Unreachable label 0xa3 try_run_to_target_chr /*goto*/ 0xa4 // Unreachable beginloop 0xa4 dprint "RUNNFO\n" if_chr_in_room CHR_SELF, 0x00, 0x0014, /*goto*/ 0xa5 if_chr_in_room CHR_SELF, 0x00, 0x0014, /*goto*/ 0xa5 if_chr_in_room CHR_SELF, 0x00, 0x0014, /*goto*/ 0xa5 if_chr_in_room CHR_SELF, 0x00, 0x0014, /*goto*/ 0xa5 if_chr_in_room CHR_SELF, 0x00, 0x0014, /*goto*/ 0xa5 endloop 0xa4 // Unreachable label 0xa6 goto_first 0x9d // Jo is near UFO label 0xa5 run_to_pad 0x0105 beginloop 0x0b if_chr_stopped /*goto*/ 0x08 endloop 0x0b label 0x08 stop_chr set_chr_alliance CHR_SELF, 0x80 cmd0145_rebuild_groups cmd0146_rebuild_groups if_stage_flag_eq STAGEFLAG_PRESIDENT_RESCUED, TRUE, /*goto*/ 0x31 message TARGET_CHR, 0x0a19 // "President has been rescued." set_stage_flag STAGEFLAG_PRESIDENT_RESCUED label 0x31 set_function CHR_SELF, GFUNC_IDLE endfunction func100e_check_robots_left: beginloop 0x06 if_chr_death_animation_finished CHR_ROBOT1, /*goto*/ 0x31 if_chr_dying CHR_ROBOT1, /*goto*/ 0x31 if_chr_unloaded CHR_ROBOT1, /*goto*/ 0x31 if_chr_in_room CHR_ROBOT1, 0x00, 0x004a, /*goto*/ 0x08 if_chr_in_room CHR_ROBOT1, 0x00, 0x004b, /*goto*/ 0x08 if_chr_in_room CHR_ROBOT1, 0x00, 0x004c, /*goto*/ 0x08 if_chr_in_room CHR_ROBOT1, 0x00, 0x004d, /*goto*/ 0x08 goto_next 0x31 label 0x08 reloop 0x06 label 0x31 if_chr_death_animation_finished CHR_ROBOT2, /*goto*/ 0x31 if_chr_dying CHR_ROBOT2, /*goto*/ 0x31 if_chr_unloaded CHR_ROBOT2, /*goto*/ 0x31 if_chr_in_room CHR_ROBOT2, 0x00, 0x004a, /*goto*/ 0x08 if_chr_in_room CHR_ROBOT2, 0x00, 0x004b, /*goto*/ 0x08 if_chr_in_room CHR_ROBOT2, 0x00, 0x004c, /*goto*/ 0x08 if_chr_in_room CHR_ROBOT2, 0x00, 0x004d, /*goto*/ 0x08 goto_next 0x31 label 0x08 reloop 0x06 label 0x31 if_chr_death_animation_finished CHR_ROBOT3, /*goto*/ 0x31 if_chr_dying CHR_ROBOT3, /*goto*/ 0x31 if_chr_unloaded CHR_ROBOT3, /*goto*/ 0x31 if_chr_in_room CHR_ROBOT3, 0x00, 0x004a, /*goto*/ 0x08 if_chr_in_room CHR_ROBOT3, 0x00, 0x004b, /*goto*/ 0x08 if_chr_in_room CHR_ROBOT3, 0x00, 0x004c, /*goto*/ 0x08 if_chr_in_room CHR_ROBOT3, 0x00, 0x004d, /*goto*/ 0x08 goto_next 0x31 label 0x08 reloop 0x06 label 0x31 if_chr_death_animation_finished CHR_ROBOT4, /*goto*/ 0x31 if_chr_dying CHR_ROBOT4, /*goto*/ 0x31 if_chr_unloaded CHR_ROBOT4, /*goto*/ 0x31 if_chr_in_room CHR_ROBOT4, 0x00, 0x004a, /*goto*/ 0x08 if_chr_in_room CHR_ROBOT4, 0x00, 0x004b, /*goto*/ 0x08 if_chr_in_room CHR_ROBOT4, 0x00, 0x004c, /*goto*/ 0x08 if_chr_in_room CHR_ROBOT4, 0x00, 0x004d, /*goto*/ 0x08 goto_next 0x31 label 0x08 reloop 0x06 label 0x31 if_stage_flag_eq STAGEFLAG_TRENT_RUNNING, TRUE, /*goto*/ 0x31 goto_first 0x06 label 0x31 set_stage_flag STAGEFLAG_TRIGGER_PRESIDENT_RUNNING set_function CHR_SELF, GFUNC_IDLE endfunction func041e_trent_waiting: set_accuracy 0 set_self_flag_bank3 CHRFLAG3_00000040 set_shield 100 set_chr_flag_bank2 CHR_SELF, CHRFLAG2_10000000 beginloop 0x06 consider_coop_for_p1p2_chr CHR_SELF set_target_chr CHR_P1P2 if_chr_sees_player /*goto*/ 0x08 endloop 0x06 label 0x08 restart_timer speak CHR_P1P2, 0x0a18, 0x12ca, CHANNEL_6, COLOR_05_GREEN // "You'll never save him now!" animation ANIM_TALKING_0231, 0, -1, 0x1010, CHR_SELF, 2 beginloop 0x0a if_timer_gt 120, /*goto*/ 0x08 endloop 0x0a label 0x08 set_function CHR_SELF, FUNC_TRENT_SHOOTING endfunction func041f_trent_shooting: label 0x04 stop_chr beginloop 0x06 consider_coop_for_p1p2_chr CHR_SELF set_target_chr CHR_P1P2 try_unset_chr_flag_bank3_02000000 CHR_SELF, /*goto*/ 0x31 if_target_chr_in_sight /*goto*/ 0x08 endloop 0x06 label 0x31 set_function CHR_SELF, FUNC_TRENT_RUNNING label 0x08 label 0xa8 try_aim_and_shoot_thing1 0x0220, 0x0000, /*goto*/ 0xa7 label 0xa7 say_quip CHR_JOANNA, 0x00, 0x19, 0x02, 0x01, BANK_0, 0x00, 0x00 try_aim_and_shoot_thing2 0x0200, 0x0000, /*goto*/ 0x0a goto_next 0x31 // Shoot worked beginloop 0x0a if_chr_stopped /*goto*/ 0x08 endloop 0x0a label 0x08 goto_next 0x0b // Unreachable if_chr_dying TARGET_CHR, /*goto*/ 0x0b goto_first 0x04 // Shoot failed label 0x31 goto_first 0x04 label 0x0b restart_timer animation ANIM_TALKING_0231, 0, -1, 0x1010, CHR_SELF, 2 beginloop 0x0c if_timer_gt 120, /*goto*/ 0x08 endloop 0x0c label 0x08 set_function CHR_SELF, FUNC_TRENT_RUNNING endfunction func0420_trent_running: set_self_flag_bank3 CHRFLAG3_00080000 set_self_flag_bank3 CHRFLAG3_INVINCIBLE_TO_GUNFIRE set_stage_flag STAGEFLAG_TRENT_RUNNING restart_timer run_to_pad 0x0027 beginloop 0x0a if_timer_gt 300, /*goto*/ 0x31 endloop 0x0a label 0x31 consider_coop_for_p1p2_chr CHR_SELF set_target_chr CHR_P1P2 if_chr_sees_player /*goto*/ 0x31 goto_next 0x08 label 0x31 if_chr_stopped /*goto*/ 0x08 goto_first 0x0a // Player not in sight label 0x08 if_within_units_of_sight 30, /*goto*/ 0x31 goto_next 0x08 label 0x31 goto_first 0x0a // Player definitely not in sight label 0x08 set_self_flag_bank3 CHRFLAG3_HIDDEN set_function CHR_SELF, GFUNC_IDLE endfunction func100f_check_end_level: beginloop 0x0a if_all_objectives_complete /*goto*/ 0x08 endloop 0x0a label 0x08 restart_timer beginloop 0x0b if_timer_gt 120, /*goto*/ 0x31 endloop 0x0b label 0x31 if_chr_death_animation_finished CHR_JOANNA, /*goto*/ 0x31 if_chr_dying CHR_JOANNA, /*goto*/ 0x31 if_chr_unloaded CHR_JOANNA, /*goto*/ 0x31 goto_next 0x08 label 0x31 if_chr_death_animation_finished CHR_VELVET, /*goto*/ 0x31 if_chr_dying CHR_VELVET, /*goto*/ 0x31 if_chr_unloaded CHR_VELVET, /*goto*/ 0x31 // Jo or Velvet alive label 0x08 if_chr_death_animation_finished CHR_PRESIDENT, /*goto*/ 0x32 if_chr_dying CHR_PRESIDENT, /*goto*/ 0x32 if_chr_unloaded CHR_PRESIDENT, /*goto*/ 0x32 set_function CHR_PRESIDENT, GFUNC_STOP_AND_IDLE if_chr_death_animation_finished CHR_JOANNA, /*goto*/ 0x31 if_chr_dying CHR_JOANNA, /*goto*/ 0x31 if_chr_unloaded CHR_JOANNA, /*goto*/ 0x31 goto_next 0x08 // Both players dead label 0x31 if_chr_death_animation_finished CHR_VELVET, /*goto*/ 0x31 if_chr_dying CHR_VELVET, /*goto*/ 0x31 if_chr_unloaded CHR_VELVET, /*goto*/ 0x31 goto_next 0x08 label 0x31 end_level set_function CHR_SELF, GFUNC_IDLE // Mission complete label 0x08 set_invincible CHR_JOANNA set_function CHR_SELF, FUNC_OUTRO // President dead label 0x32 set_function CHR_SELF, GFUNC_IDLE endfunction /** * Assigned to 4 stripes and 2 blondes near the starting area. */ func0421_starting_area_guard: label 0x0a set_return_function CHR_SELF, GFUNC_UNALERTED set_function CHR_SELF, GFUNC_SEARCH_FOR_PLAYER endfunction func1010_set_cave_lights: yield set_lights_state 0x0064, 0x01, 0x06, 0x00, 0x00 set_lights_state 0x0063, 0x01, 0x06, 0x00, 0x00 set_lights_state 0x0062, 0x01, 0x06, 0x00, 0x00 set_lights_state 0x0061, 0x01, 0x06, 0x00, 0x00 set_lights_state 0x0060, 0x01, 0x06, 0x00, 0x00 set_lights_state 0x005f, 0x01, 0x06, 0x00, 0x00 set_lights_state 0x005e, 0x01, 0x06, 0x00, 0x00 set_lights_state 0x005d, 0x01, 0x06, 0x00, 0x00 set_lights_state 0x005c, 0x01, 0x06, 0x00, 0x00 set_lights_state 0x005b, 0x01, 0x06, 0x00, 0x00 set_lights_state 0x005a, 0x01, 0x06, 0x00, 0x00 set_lights_state 0x0059, 0x01, 0x06, 0x00, 0x00 set_lights_state 0x0053, 0x01, 0x06, 0x00, 0x00 set_lights_state 0x0058, 0x01, 0x06, 0x00, 0x00 set_lights_state 0x0056, 0x01, 0x06, 0x00, 0x00 set_function CHR_SELF, GFUNC_IDLE endfunction func1012_give_medicalscanner: yield if_difficulty_gt DIFF_A, /*goto*/ 0x31 give_object_to_chr OBJ_MEDICALSCANNER, CHR_JOANNA label 0x31 set_function CHR_SELF, GFUNC_IDLE endfunction func1013_setup_rtracker: yield set_object_flag_bank2 OBJ_PROXYMINE, OBJECTFLAG2_RTRACKED_BLUE set_function CHR_SELF, GFUNC_IDLE endfunction func1016_hide_hoverbike: yield if_eeprom_flag_is_set EEPROMFLAG_CRASHSITE_BIKE, /*goto*/ 0x08 hide_object OBJ_HOVERBIKE label 0x08 set_function CHR_SELF, GFUNC_IDLE endfunction func1014_setup_skedar_shuttle: yield show_object OBJ_SKEDAR_SHUTTLE set_object_flag_bank2 OBJ_SKEDAR_SHUTTLE, OBJECTFLAG2_00000010 set_object_part_visible OBJ_SKEDAR_SHUTTLE, FALSE object_do_animation 0x0486, OBJ_SKEDAR_SHUTTLE, 0x01ff, 0xff set_function CHR_SELF, GFUNC_IDLE endfunction func1415_setup_lighting: yield set_lighting 0x0001, 0x05, 0x01 set_lighting 0x0001, 0x06, 0x01 set_lighting 0x0002, 0x05, 0x01 set_lighting 0x0002, 0x06, 0x01 set_lighting 0x0003, 0x06, 0x01 set_lighting 0x0004, 0x06, 0x01 set_lighting 0x0005, 0x06, 0x01 set_lighting 0x0006, 0x05, 0x01 set_lighting 0x0006, 0x06, 0x01 set_lighting 0x0008, 0x06, 0x01 set_lighting 0x0009, 0x05, 0x01 set_lighting 0x0009, 0x06, 0x01 set_lighting 0x000a, 0x05, 0x01 set_lighting 0x000a, 0x06, 0x01 set_lighting 0x000b, 0x05, 0x01 set_lighting 0x000b, 0x06, 0x01 set_lighting 0x000c, 0x05, 0x01 set_lighting 0x000c, 0x06, 0x01 set_lighting 0x000d, 0x05, 0x01 set_lighting 0x000d, 0x06, 0x01 set_lighting 0x000e, 0x05, 0x01 set_lighting 0x000e, 0x06, 0x01 set_lighting 0x000f, 0x05, 0x01 set_lighting 0x000f, 0x06, 0x01 set_lighting 0x0010, 0x05, 0x01 set_lighting 0x0010, 0x06, 0x01 set_lighting 0x0011, 0x05, 0x01 set_lighting 0x0011, 0x06, 0x01 set_lighting 0x0012, 0x05, 0x01 set_lighting 0x0012, 0x06, 0x01 set_lighting 0x0013, 0x05, 0x01 set_lighting 0x0013, 0x06, 0x01 set_lighting 0x0014, 0x05, 0x01 set_lighting 0x0014, 0x06, 0x01 set_lighting 0x0015, 0x05, 0x01 set_lighting 0x0015, 0x06, 0x01 set_lighting 0x0016, 0x05, 0x01 set_lighting 0x0016, 0x06, 0x01 set_lighting 0x0018, 0x05, 0x01 set_lighting 0x0018, 0x06, 0x01 set_lighting 0x0019, 0x05, 0x01 set_lighting 0x0019, 0x06, 0x01 set_lighting 0x001a, 0x06, 0x01 set_lighting 0x001b, 0x05, 0x01 set_lighting 0x001b, 0x06, 0x01 set_lighting 0x001c, 0x05, 0x01 set_lighting 0x001c, 0x06, 0x01 set_lighting 0x001d, 0x06, 0x01 set_lighting 0x001e, 0x05, 0x01 set_lighting 0x001e, 0x06, 0x01 set_lighting 0x0025, 0x05, 0x01 set_lighting 0x0025, 0x06, 0x01 set_lighting 0x0026, 0x05, 0x01 set_lighting 0x0026, 0x06, 0x01 set_lighting 0x0027, 0x05, 0x01 set_lighting 0x0027, 0x06, 0x01 set_lighting 0x0028, 0x05, 0x01 set_lighting 0x0028, 0x06, 0x01 set_lighting 0x0029, 0x05, 0x01 set_lighting 0x0029, 0x06, 0x01 set_lighting 0x002a, 0x05, 0x01 set_lighting 0x002a, 0x06, 0x01 set_lighting 0x002b, 0x05, 0x01 set_lighting 0x002b, 0x06, 0x01 set_lighting 0x002c, 0x05, 0x01 set_lighting 0x002c, 0x06, 0x01 set_lighting 0x002e, 0x05, 0x01 set_lighting 0x002e, 0x06, 0x01 set_lighting 0x002f, 0x05, 0x01 set_lighting 0x002f, 0x06, 0x01 set_lighting 0x0030, 0x05, 0x01 set_lighting 0x0030, 0x06, 0x01 set_lighting 0x0031, 0x05, 0x01 set_lighting 0x0031, 0x06, 0x01 set_lighting 0x0032, 0x05, 0x01 set_lighting 0x0032, 0x06, 0x01 set_lighting 0x0033, 0x05, 0x01 set_lighting 0x0033, 0x06, 0x01 set_lighting 0x0035, 0x05, 0x01 set_lighting 0x0035, 0x06, 0x01 set_lighting 0x0036, 0x05, 0x01 set_lighting 0x0036, 0x06, 0x01 set_lighting 0x0038, 0x05, 0x01 set_lighting 0x0038, 0x06, 0x01 set_lighting 0x003a, 0x05, 0x01 set_lighting 0x003a, 0x06, 0x01 set_lighting 0x003b, 0x05, 0x01 set_lighting 0x003b, 0x06, 0x01 set_lighting 0x003c, 0x05, 0x01 set_lighting 0x003c, 0x06, 0x01 set_lighting 0x003d, 0x05, 0x01 set_lighting 0x003d, 0x06, 0x01 set_lighting 0x003e, 0x06, 0x01 set_lighting 0x003f, 0x05, 0x01 set_lighting 0x0045, 0x05, 0x01 set_lighting 0x0065, 0x05, 0x01 set_lighting 0x0065, 0x06, 0x01 set_function CHR_SELF, GFUNC_IDLE endfunction functions: register_function func1400_setup_counterop 0x1400 register_function func1001_objectives_failed_msg 0x1001 register_function func1002_intro 0x1002 register_function func1003_msg_therestheescapepod 0x1003 register_function func1004_msg_maybetheresabeacon 0x1004 register_function func1005_msg_thejamming 0x1005 register_function func1006_msg_elvisbeable 0x1006 register_function func1008_escapepod 0x1008 register_function func1009_check_shuttle_destroyed 0x1009 register_function func100a_check_president_dead 0x100a register_function func100b_check_clone_dead 0x100b register_function func100c_spawn_dd_guards 0x100c register_function func100e_check_robots_left 0x100e register_function func100f_check_end_level 0x100f register_function func1010_set_cave_lights 0x1010 register_function func1011_setup_snow 0x1011 register_function func1012_give_medicalscanner 0x1012 register_function func1013_setup_rtracker 0x1013 register_function func1014_setup_skedar_shuttle 0x1014 register_function func1415_setup_lighting 0x1415 register_function func1016_hide_hoverbike 0x1016 register_function func1002_intro 0x0401 register_function func0402_outro 0x0402 register_function func0403_init_elvis 0x0403 register_function func0404_elvis 0x0404 register_function func0405_unused 0x0405 register_function func1002_intro 0x0c00 register_function func0402_outro_from_menu 0x0c01 register_function func0406_init_stripes 0x0406 register_function func0407_init_blonde 0x0407 register_function func0408_start_path00 0x0408 register_function func0409_start_path01 0x0409 register_function func040a_start_path02 0x040a register_function func040b_start_path03 0x040b register_function func040c_start_path04 0x040c register_function func040d_start_path05 0x040d register_function func040e_start_path06 0x040e register_function func040f_start_path07 0x040f register_function func0410_start_path08 0x0410 register_function func0411_start_path09 0x0411 register_function func0412_start_path10 0x0412 register_function func0413_start_path11 0x0413 register_function func0414_spawner 0x0414 register_function func0415_unused 0x0415 register_function func0416_spawned_guard 0x0416 register_function func0417_init_robot 0x0417 register_function func0418_robot 0x0418 register_function func0419_unused 0x0419 register_function func041a_pres_clone 0x041a register_function func041c_president_waiting 0x041c register_function func041b_init_president 0x041b register_function func041d_president_running 0x041d register_function func041e_trent_waiting 0x041e register_function func041f_trent_shooting 0x041f register_function func0420_trent_running 0x0420 register_function func0421_starting_area_guard 0x0421 register_function func0422_hide 0x0422 endfunctions .align 4