// // Skedar Ruins // #include "stagesetup.h" // Characters #define CHR_KING1 0x33 #define CHR_KING_SKEDAR_SPAWNER 0x34 #define CHR_KING_MINISKEDAR_SPAWNER 0x35 #define CHR_ELVIS 0x36 #define CHR_KING2 0x3b // Objects #define OBJ_PILLAR1 0x01 #define OBJ_PILLAR2 0x02 #define OBJ_PILLAR3 0x03 #define OBJ_BRIDGE 0x05 #define OBJ_TARGETAMP_BOND 0x08 #define OBJ_ALTAR 0x0b #define OBJ_SPIKE_ML 0x13 #define OBJ_SPIKE_MR 0x14 #define OBJ_SPIKE_BL 0x15 #define OBJ_SPIKE_BR 0x16 #define OBJ_SPIKE_T 0x17 #define OBJ_SPIKE_SHAD_ML 0x19 #define OBJ_SPIKE_SHAD_MR 0x1a #define OBJ_SPIKE_SHAD_BL 0x1b #define OBJ_SPIKE_SHAD_BR 0x1c #define OBJ_SPIKE_SHAD_T 0x1d #define OBJ_SPIKE_NOSHAD_ML 0x1e #define OBJ_SPIKE_NOSHAD_MR 0x1f #define OBJ_SPIKE_NOSHAD_BL 0x20 #define OBJ_SPIKE_NOSHAD_BR 0x21 #define OBJ_SPIKE_NOSHAD_T 0x22 #define OBJ_TARGETAMP_COOP 0x35 #define OBJ_PHOENIX1 0x42 #define OBJ_PHOENIX2 0x43 #define OBJ_REMOTEMINE 0x44 #define OBJ_ALTAR_FALCON 0x47 #define OBJ_ALTAR_DEVASTATOR 0x48 #define OBJ_ALTAR_CALLISTO 0x49 #define OBJ_ALTAR_MAULER 0x4a #define OBJ_ALTAR_SLAYER 0x4b #define OBJ_PUZZLEROCK 0x4c #define OBJ_BUDDYBRIDGE 0x50 #define OBJ_BUDDYBARRICADE 0x51 // Stage flags #define STAGEFLAG_COOP_THREW_FIRST_BUG 0x00000001 #define STAGEFLAG_COOP_THREW_SECOND_BUG 0x00000002 #define STAGEFLAG_COOP_THREW_THIRD_BUG 0x00000004 #define STAGEFLAG_COOP_BUGS_WASTED 0x00000008 #define STAGEFLAG_BOND_BUGS_WASTED 0x00000010 #define STAGEFLAG_IN_INTRO 0x00000020 #define STAGEFLAG_IN_OUTRO 0x00000040 #define STAGEFLAG_AI_BUDDY_EXISTS 0x00000080 #define STAGEFLAG_PILLAR1_MARKED 0x00000100 #define STAGEFLAG_PILLAR2_MARKED 0x00000200 #define STAGEFLAG_PILLAR3_MARKED 0x00000400 #define STAGEFLAG_BUG_WASTED 0x00000800 #define STAGEFLAG_BRIDGE_EXTENDED 0x00001000 #define STAGEFLAG_TRIGGER_SKEDAR_ARMY 0x00002000 #define STAGEFLAG_ARMY_DEFEATED 0x00004000 #define STAGEFLAG_CROSSED_RAVINE_WITHOUT_BRIDGE 0x00008000 #define STAGEFLAG_TRIGGER_BRIDGE 0x00010000 #define STAGEFLAG_BOND_THREW_FIRST_BUG 0x00020000 #define STAGEFLAG_BOND_THREW_SECOND_BUG 0x00040000 #define STAGEFLAG_BOND_THREW_THIRD_BUG 0x00080000 #define STAGEFLAG_GRENADES_WASTED 0x00100000 #define STAGEFLAG_ACCESSED_SANCTUM 0x00200000 #define STAGEFLAG_KING_SKEDAR_CLONE_EXISTS 0x00800000 #define STAGEFLAG_SPIKE1_DESTROYED 0x01000000 #define STAGEFLAG_SPIKE2_DESTROYED 0x02000000 #define STAGEFLAG_SPIKE3_DESTROYED 0x04000000 #define STAGEFLAG_SPIKE4_DESTROYED 0x08000000 #define STAGEFLAG_SPIKE5_DESTROYED 0x10000000 #define STAGEFLAG_SPIKES_VULNERABLE 0x20000000 #define STAGEFLAG_SPIKE_DESTROYED 0x40000000 #define STAGEFLAG_KING_MINISKEDAR_CLONE_EXISTS 0x80000000 // Functions #define FUNC_INIT_UNARMED_SKEDAR 0x0401 #define FUNC_UNARMED_SKEDAR 0x0402 #define FUNC_INIT_MINISKEDAR 0x0403 #define FUNC_MINISKEDAR 0x0404 #define FUNC_PUZZLEROOM_MINISKEDAR_WAITING 0x0405 #define FUNC_MINISKEDAR_SPAWNER 0x0406 #define FUNC_INIT_CLOAKED_SKEDAR 0x0407 #define FUNC_CLOAKED_SKEDAR 0x0408 #define FUNC_REAPER_SLAYER_SKEDAR 0x0409 #define FUNC_INIT_REAPER_SLAYER_SKEDAR 0x040a #define FUNC_MAULER_SKEDAR 0x040b #define FUNC_KING_WAITING 0x040c #define FUNC_KING_COMBAT 0x040d #define FUNC_KING_SKEDAR_SPAWNER 0x040e #define FUNC_UPDATE_SPIKE_STAGEFLAGS 0x040f #define FUNC_INIT_KING_SKEDAR_CLONE 0x0410 #define FUNC_KING_MINISKEDAR_SPAWNER 0x0411 #define FUNC_INIT_KING_MINISKEDAR_CLONE 0x0412 #define FUNC_HIDE 0x0413 #define FUNC_OUTRO 0x0414 u8 intro[]; u8 props[]; struct path paths[]; struct ailist ailists[]; struct stagesetup setup = { NULL, NULL, NULL, intro, props, paths, ailists, NULL, }; u8 props[] = { briefing(0, 0x4201) briefing(1, 0x4200) briefing(2, 0x4202) briefing(3, 0x4203) beginobjective(0, 0x4205, (DIFFBIT_A | DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD)) // "Identify temple targets" complete_flags(STAGEFLAG_PILLAR1_MARKED) complete_flags(STAGEFLAG_PILLAR2_MARKED) complete_flags(STAGEFLAG_PILLAR3_MARKED) fail_flags(STAGEFLAG_BUG_WASTED) endobjective beginobjective(1, 0x4206, (DIFFBIT_A | DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD)) // "Activate bridge" complete_flags(STAGEFLAG_BRIDGE_EXTENDED) endobjective beginobjective(2, 0x4207, (DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD)) // "Gain access to Inner Sanctum" complete_flags(STAGEFLAG_ACCESSED_SANCTUM) endobjective beginobjective(3, 0x4208, (DIFFBIT_PA | DIFFBIT_PD)) // "Destroy secret Skedar army" complete_flags(STAGEFLAG_ARMY_DEFEATED) endobjective beginobjective(4, 0x4209, (DIFFBIT_A | DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD)) // "Assassinate Skedar leader" complete_flags(STAGEFLAG_SPIKE1_DESTROYED) complete_flags(STAGEFLAG_SPIKE2_DESTROYED) complete_flags(STAGEFLAG_SPIKE3_DESTROYED) complete_flags(STAGEFLAG_SPIKE4_DESTROYED) complete_flags(STAGEFLAG_SPIKE5_DESTROYED) fail_flags(STAGEFLAG_GRENADES_WASTED) endobjective chr(0x00000200, 0x05, 0x00a0, BODY_SKEDAR, HEAD_RANDOM, FUNC_INIT_CLOAKED_SKEDAR, 0x00d8, -1, 1000, 9, 0x00002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) chr(0x00000200, 0x06, 0x00a1, BODY_SKEDAR, HEAD_RANDOM, FUNC_INIT_CLOAKED_SKEDAR, 0x00d8, -1, 1000, 9, 0x00002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) chr(0x00000200, 0x07, 0x00a2, BODY_SKEDAR, HEAD_RANDOM, FUNC_INIT_CLOAKED_SKEDAR, 0x00d9, -1, 1000, 9, 0x00002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) chr(0x00000200, 0x08, 0x00a3, BODY_SKEDAR, HEAD_RANDOM, FUNC_INIT_CLOAKED_SKEDAR, 0x00d9, -1, 1000, 9, 0x00002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) chr(0x00000200, 0x17, 0x00a4, BODY_SKEDAR, HEAD_RANDOM, FUNC_INIT_REAPER_SLAYER_SKEDAR, -1, -1, 1000, 15, 0x40002000, 0x00000010, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) weapon(0x0100, MODEL_CHRSKMINIGUN, 0x0017, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_REAPER, 0x00ffffff, 0x00000000) chr(0x00000200, 0x09, 0x00a5, BODY_SKEDAR, HEAD_RANDOM, FUNC_INIT_CLOAKED_SKEDAR, 0x00da, -1, 1000, 9, 0x00002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) chr(0x00000200, 0x0a, 0x00a6, BODY_SKEDAR, HEAD_RANDOM, FUNC_INIT_CLOAKED_SKEDAR, 0x00da, -1, 1000, 9, 0x00002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) chr(0x00000200, 0x0b, 0x00a7, BODY_SKEDAR, HEAD_RANDOM, FUNC_INIT_CLOAKED_SKEDAR, 0x00db, -1, 1000, 9, 0x00002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) chr(0x00000200, 0x0c, 0x00a8, BODY_SKEDAR, HEAD_RANDOM, FUNC_INIT_CLOAKED_SKEDAR, 0x00db, -1, 1000, 9, 0x00002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) chr(0x00000200, 0x0d, 0x00a9, BODY_SKEDAR, HEAD_RANDOM, FUNC_INIT_CLOAKED_SKEDAR, 0x00dc, -1, 1000, 9, 0x00002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) chr(0x00000200, 0x0e, 0x00aa, BODY_SKEDAR, HEAD_RANDOM, FUNC_INIT_CLOAKED_SKEDAR, 0x00dc, -1, 1000, 9, 0x00002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) chr(0x00000200, 0x0f, 0x00ab, BODY_SKEDAR, HEAD_RANDOM, FUNC_INIT_CLOAKED_SKEDAR, 0x00dd, -1, 1000, 9, 0x00002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) chr(0x00000200, 0x10, 0x00ac, BODY_SKEDAR, HEAD_RANDOM, FUNC_INIT_CLOAKED_SKEDAR, 0x00dd, -1, 1000, 9, 0x00002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) chr(0x00000200, 0x1c, 0x00a4, BODY_SKEDAR, HEAD_RANDOM, FUNC_INIT_REAPER_SLAYER_SKEDAR, -1, -1, 1000, 15, 0x40002000, 0x00000010, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) weapon(0x0100, MODEL_CHRSKMINIGUN, 0x001c, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_REAPER, 0x00ffffff, 0x00000000) chr(0x00000200, 0x18, 0x00ae, BODY_SKEDAR, HEAD_RANDOM, FUNC_INIT_REAPER_SLAYER_SKEDAR, -1, -1, 1000, 50, 0x40002000, 0x00000010, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) weapon(0x0100, MODEL_CHRSKMINIGUN, 0x0018, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_REAPER, 0x00ffffff, 0x00000000) chr(0x00000200, 0x19, 0x00af, BODY_SKEDAR, HEAD_RANDOM, FUNC_INIT_REAPER_SLAYER_SKEDAR, -1, -1, 1000, 50, 0x40002000, 0x00000010, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) weapon(0x0100, MODEL_CHRSKMINIGUN, 0x0019, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_REAPER, 0x00ffffff, 0x00000000) chr(0x00000200, 0x1a, 0x00b0, BODY_SKEDAR, HEAD_RANDOM, FUNC_INIT_REAPER_SLAYER_SKEDAR, -1, -1, 1000, 50, 0x40002000, 0x00000010, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) weapon(0x0100, MODEL_CHRSKMINIGUN, 0x001a, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_REAPER, 0x00ffffff, 0x00000000) chr(0x00000200, 0x11, 0x00b1, BODY_SKEDAR, HEAD_RANDOM, FUNC_INIT_CLOAKED_SKEDAR, 0x00de, -1, 1000, 9, 0x00002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) chr(0x00000200, 0x12, 0x00b2, BODY_SKEDAR, HEAD_RANDOM, FUNC_INIT_CLOAKED_SKEDAR, 0x00de, -1, 1000, 9, 0x00002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) chr(0x00000200, 0x13, 0x00b3, BODY_SKEDAR, HEAD_RANDOM, FUNC_INIT_CLOAKED_SKEDAR, 0x00de, -1, 1000, 9, 0x00002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) chr(0x00000200, 0x14, 0x00b4, BODY_SKEDAR, HEAD_RANDOM, FUNC_INIT_CLOAKED_SKEDAR, 0x00de, -1, 1000, 9, 0x00002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) chr(0x00000200, 0x1b, 0x00b5, BODY_SKEDAR, HEAD_RANDOM, FUNC_INIT_REAPER_SLAYER_SKEDAR, -1, -1, 1000, 9, 0x40002000, 0x00000010, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) weapon(0x0100, MODEL_CHRSKMINIGUN, 0x001b, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_REAPER, 0x00ffffff, 0x00000000) chr(0x00000200, 0x1d, 0x00b6, BODY_SKEDAR, HEAD_RANDOM, FUNC_INIT_REAPER_SLAYER_SKEDAR, -1, -1, 1000, 9, 0x40002000, 0x00000010, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) weapon(0x0100, MODEL_CHRSKMINIGUN, 0x001d, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_REAPER, 0x00ffffff, 0x00000000) chr(0x00000200, 0x15, 0x00b7, BODY_SKEDAR, HEAD_RANDOM, FUNC_INIT_CLOAKED_SKEDAR, 0x00df, -1, 1000, 9, 0x00002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) chr(0x00000200, 0x16, 0x00b8, BODY_SKEDAR, HEAD_RANDOM, FUNC_INIT_CLOAKED_SKEDAR, 0x00df, -1, 1000, 9, 0x00002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) chr(0x00000200, 0x1e, 0x00b9, BODY_SKEDAR, HEAD_RANDOM, FUNC_INIT_REAPER_SLAYER_SKEDAR, -1, -1, 1000, 9, 0x40002000, 0x00000010, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) weapon(0x0100, MODEL_CHRSKMINIGUN, 0x001e, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_REAPER, 0x00ffffff, 0x00000000) chr(0x00000200, 0x1f, 0x00ba, BODY_SKEDAR, HEAD_RANDOM, FUNC_INIT_REAPER_SLAYER_SKEDAR, -1, -1, 1000, 9, 0x40002000, 0x00000010, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) weapon(0x0100, MODEL_CHRSKMINIGUN, 0x001f, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_REAPER, 0x00ffffff, 0x00000000) chr(0x00000000, 0x23, 0x00bb, BODY_MINISKEDAR, HEAD_RANDOM, FUNC_MINISKEDAR_SPAWNER, 0x00e0, -1, 1000, 9, 0x00002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) chr(0x00000000, 0x24, 0x00bc, BODY_MINISKEDAR, HEAD_RANDOM, FUNC_MINISKEDAR_SPAWNER, 0x00e1, -1, 1000, 9, 0x00002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) chr(0x00000000, 0x25, 0x00bd, BODY_MINISKEDAR, HEAD_RANDOM, FUNC_MINISKEDAR_SPAWNER, 0x00e1, -1, 1000, 9, 0x00002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) chr(0x00000000, 0x26, 0x00be, BODY_MINISKEDAR, HEAD_RANDOM, FUNC_PUZZLEROOM_MINISKEDAR_WAITING, -1, -1, 1000, 9, 0x00002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) chr(0x00000000, 0x28, 0x00bf, BODY_MINISKEDAR, HEAD_RANDOM, FUNC_MINISKEDAR_SPAWNER, 0x00e2, -1, 1000, 9, 0x00002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) chr(0x00000000, 0x29, 0x00c0, BODY_MINISKEDAR, HEAD_RANDOM, FUNC_MINISKEDAR_SPAWNER, 0x00e3, -1, 1000, 9, 0x00002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) chr(0x00000000, 0x2a, 0x00c2, BODY_MINISKEDAR, HEAD_RANDOM, FUNC_MINISKEDAR_SPAWNER, 0x00e4, -1, 1000, 9, 0x00002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) chr(0x00000200, 0x20, 0x00c3, BODY_SKEDAR, HEAD_RANDOM, FUNC_INIT_REAPER_SLAYER_SKEDAR, -1, -1, 1000, 30, 0x40002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x02000500) weapon(0x0100, MODEL_CHRSKROCKET, 0x0020, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_SLAYER, 0x00ffffff, 0x00000000) chr(0x00000200, 0x21, 0x00c4, BODY_SKEDAR, HEAD_RANDOM, FUNC_INIT_REAPER_SLAYER_SKEDAR, -1, -1, 1000, 30, 0x40002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x02000500) weapon(0x0100, MODEL_CHRSKROCKET, 0x0021, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_SLAYER, 0x00ffffff, 0x00000000) chr(0x00000200, 0x22, 0x00c5, BODY_SKEDAR, HEAD_RANDOM, FUNC_INIT_REAPER_SLAYER_SKEDAR, -1, -1, 1000, 30, 0x40002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x02000a00) weapon(0x0100, MODEL_CHRSKMINIGUN, 0x0022, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_REAPER, 0x00ffffff, 0x00000000) chr(0x00000100, 0x2c, 0x00c6, BODY_SKEDAR, HEAD_RANDOM, FUNC_MAULER_SKEDAR, -1, -1, 1000, 9, 0x04000000, 0x40000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) weapon(0x0100, MODEL_CHRMAULER, 0x002c, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_MAULER, 0x00ffffff, 0x00000000) chr(0x00000100, 0x2d, 0x00c7, BODY_SKEDAR, HEAD_RANDOM, FUNC_MAULER_SKEDAR, -1, -1, 1000, 9, 0x04000000, 0x40000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) weapon(0x0100, MODEL_CHRMAULER, 0x002d, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_MAULER, 0x00ffffff, 0x00000000) chr(0x00000100, 0x2e, 0x00c8, BODY_SKEDAR, HEAD_RANDOM, FUNC_MAULER_SKEDAR, -1, -1, 1000, 9, 0x04000000, 0x40000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) weapon(0x0100, MODEL_CHRMAULER, 0x002e, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_MAULER, 0x00ffffff, 0x00000000) chr(0x00000100, 0x2f, 0x00c9, BODY_SKEDAR, HEAD_RANDOM, FUNC_MAULER_SKEDAR, -1, -1, 1000, 9, 0x04000000, 0x40000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) weapon(0x0100, MODEL_CHRMAULER, 0x002f, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_MAULER, 0x00ffffff, 0x00000000) chr(0x00000100, 0x30, 0x00ca, BODY_SKEDAR, HEAD_RANDOM, FUNC_MAULER_SKEDAR, -1, -1, 1000, 9, 0x04000000, 0x40000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) weapon(0x0100, MODEL_CHRMAULER, 0x0030, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_MAULER, 0x00ffffff, 0x00000000) chr(0x00000100, 0x31, 0x00cb, BODY_SKEDAR, HEAD_RANDOM, FUNC_MAULER_SKEDAR, -1, -1, 1000, 9, 0x04000000, 0x40000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) weapon(0x0100, MODEL_CHRMAULER, 0x0031, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_MAULER, 0x00ffffff, 0x00000000) chr(0x00000100, 0x32, 0x00cc, BODY_SKEDAR, HEAD_RANDOM, FUNC_MAULER_SKEDAR, -1, -1, 1000, 9, 0x04000000, 0x40000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) weapon(0x0100, MODEL_CHRMAULER, 0x0032, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_MAULER, 0x00ffffff, 0x00000000) chr(0x00000000, 0x33, 0x00cd, BODY_SKEDARKING, HEAD_RANDOM, FUNC_HIDE, -1, -1, 1000, 9, 0x04000000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) weapon(0x0100, MODEL_KINGSCEPTRE, 0x0033, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_ROCKETLAUNCHER_34, 0x00ffffff, 0x00000000) chr(0x00000000, 0x34, 0x00ce, BODY_SKEDAR, HEAD_RANDOM, FUNC_KING_SKEDAR_SPAWNER, -1, -1, 1000, 9, 0x00000004, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) ammocrate(0x0100, MODEL_CHRUZI, 0x0034, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, AMMOTYPE_FARSIGHT) chr(0x00000000, 0x35, 0x00cf, BODY_MINISKEDAR, HEAD_RANDOM, FUNC_KING_MINISKEDAR_SPAWNER, -1, -1, 1000, 9, 0x00000004, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) chr(0x00010000, 0x36, 0x00d9, BODY_ELVISWAISTCOAT, HEAD_ELVIS, FUNC_HIDE, -1, -1, 1000, 200, 0x00002000, 0x00300000, TEAM_ALLY, SQUADRON_01, -1, 0, 0x00000000) chr(0x00004000, 0x37, 0x000f, BODY_SKEDAR, HEAD_RANDOM, FUNC_HIDE, 0x00d8, -1, 1000, 9, 0x00002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) chr(0x00004000, 0x38, 0x0010, BODY_SKEDAR, HEAD_RANDOM, FUNC_HIDE, 0x00d8, -1, 1000, 9, 0x00002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) chr(0x00004000, 0x39, 0x0011, BODY_SKEDAR, HEAD_RANDOM, FUNC_HIDE, 0x00d8, -1, 1000, 9, 0x00002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) chr(0x00004000, 0x3a, 0x0012, BODY_SKEDAR, HEAD_RANDOM, FUNC_HIDE, 0x00d8, -1, 1000, 9, 0x00002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) chr(0x00004000, 0x3b, 0x0018, BODY_SKEDARKING, HEAD_RANDOM, GFUNC_IDLE, 0x00d8, -1, 1000, 9, 0x00002000, 0x00000000, TEAM_ENEMY, SQUADRON_01, -1, 0, 0x00000000) weapon(0x0100, MODEL_KINGSCEPTRE, 0x003b, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_NONE, 0x00ffffff, 0x00000000) link_scenery(1, 0, 2) debris(0x0100, MODEL_SKCREV_UNEXP1, 0x00e5, 0x035005e8, 0x00304300, 0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) debris(0x0100, MODEL_SKCREV_EXP1, 0x00e6, 0x035204e8, 0x00304300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) tag(0x44, 1) remote_mine(0x0100, MODEL_CHRPROXIMITYMINE, 0x00e6, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x21000000, 0x00000001, 0x00000000) link_scenery(1, 0, 2) door(0x0100, MODEL_SKTNL_UNEXP1, 0x00e7, 0x13500d00, 0x20304300, 0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00000000, 0x00010000, 0x03e80000, 0x03e80000, 0x00010000, 0x00000000, 0x00000080, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000) stdobject(0x0100, MODEL_SKTNL_EXP1, 0x00e8, 0x035204e8, 0x00304300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) tag(0x4d, -2) link_scenery(1, 0, 0) debris(0x0100, MODEL_SK_PILLARLEFT, 0x013d, 0x035004e8, 0x00104300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) link_scenery(1, 0, 0) debris(0x0100, MODEL_SK_PILLARLEFT, 0x013e, 0x035004e8, 0x00104300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) link_scenery(1, 0, 0) debris(0x0100, MODEL_SK_PILLARLEFT, 0x013f, 0x035004e8, 0x00104300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) link_scenery(1, 0, 0) debris(0x0100, MODEL_SK_PILLARLEFT, 0x0140, 0x035004e8, 0x00104300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) link_scenery(1, 0, 0) debris(0x0100, MODEL_SK_PILLARRIGHT, 0x0141, 0x035004e8, 0x00104300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) link_scenery(1, 0, 0) debris(0x0100, MODEL_SK_PILLARRIGHT, 0x0142, 0x075005e8, 0x00104300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) link_scenery(1, 0, 0) debris(0x0100, MODEL_SK_PILLARRIGHT, 0x0143, 0x035004e8, 0x00104300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) link_scenery(1, 0, 0) debris(0x0100, MODEL_SK_PILLARRIGHT, 0x0144, 0x035004e8, 0x00104300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) tag(0x19, 5) tag(0x1a, 5) tag(0x1b, 5) tag(0x1c, 5) tag(0x1d, 5) stdobject(0x0100, MODEL_SK_FL_SHAD_ML, 0x014b, 0x035204e8, 0x00304300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) stdobject(0x0100, MODEL_SK_FL_SHAD_MR, 0x014c, 0x035204e8, 0x00304300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) stdobject(0x0100, MODEL_SK_FL_SHAD_BL, 0x014d, 0x035204e8, 0x00304300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) stdobject(0x0100, MODEL_SK_FL_SHAD_BR, 0x014e, 0x035204e8, 0x00304300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) stdobject(0x0100, MODEL_SK_FL_SHAD_T, 0x014a, 0x035204e8, 0x00304300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) tag(0x1e, 5) tag(0x1f, 5) tag(0x20, 5) tag(0x21, 5) tag(0x22, 5) stdobject(0x0100, MODEL_SK_FL_NOSHAD_ML, 0x014b, 0x035204e8, 0x00384300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) stdobject(0x0100, MODEL_SK_FL_NOSHAD_MR, 0x014c, 0x035204e8, 0x00384300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) stdobject(0x0100, MODEL_SK_FL_NOSHAD_BL, 0x014d, 0x035204e8, 0x00384300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) stdobject(0x0100, MODEL_SK_FL_NOSHAD_BR, 0x014e, 0x035204e8, 0x00384300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) stdobject(0x0100, MODEL_SK_FL_NOSHAD_T, 0x014a, 0x035204e8, 0x00384300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) tag(0x01, 3) tag(0x2a, 2) link_scenery(1, 0, 0) debris(0x0100, MODEL_SK_TEMPLECOLUMN4, 0x0111, 0x035005e8, 0x80126300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) tag(0x02, 3) tag(0x2b, 2) link_scenery(1, 0, 0) debris(0x0100, MODEL_SK_TEMPLECOLUMN2, 0x010a, 0x035005e8, 0x80126300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) tag(0x41, -1) tag(0x03, 3) tag(0x2c, 2) link_scenery(1, 0, 0) debris(0x0100, MODEL_SK_TEMPLECOLUMN3, 0x010b, 0x035005e8, 0x80126300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) tag(0x2d, 2) link_scenery(1, 0, 0) debris(0x0100, MODEL_SK_TEMPLECOLUMN2, 0x010c, 0x035005e1, 0x80126300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) tag(0x2e, 2) link_scenery(1, 0, 0) debris(0x0100, MODEL_SK_TEMPLECOLUMN3, 0x010d, 0x035005e1, 0x80126300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) tag(0x2f, 5) tag(0x30, 5) tag(0x31, 5) tag(0x32, 5) tag(0x33, 5) stdobject(0x0019, MODEL_CHRREMOTEMINE, 0x00d5, 0x012204e8, 0x00086000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) stdobject(0x0019, MODEL_CHRREMOTEMINE, 0x010a, 0x012204e8, 0x00086000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) stdobject(0x0019, MODEL_CHRREMOTEMINE, 0x010b, 0x012204e8, 0x00086000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) stdobject(0x0019, MODEL_CHRREMOTEMINE, 0x010c, 0x012204e8, 0x00086000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) stdobject(0x0019, MODEL_CHRREMOTEMINE, 0x010d, 0x012204e8, 0x00086000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) tag(0x27, -3) tag(0x28, -3) tag(0x29, -3) tag(0x3e, 1) stdobject(0x0100, MODEL_SK_SUNSHAD1, 0x014f, 0x035204e8, 0x00304300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) tag(0x3d, 1) stdobject(0x0100, MODEL_SK_SUNSHAD2, 0x0150, 0x035204e8, 0x00304300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) tag(0x4e, 2) tag(0x4f, 2) stdobject(0x0100, MODEL_SK_SUNNOSHAD1, 0x014f, 0x035204e8, 0x00384300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) stdobject(0x0100, MODEL_SK_SUNNOSHAD2, 0x0150, 0x035204e8, 0x00384300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) door(0x0100, MODEL_SK_DOOR1, 0x00eb, 0x10000000, 0x00000000, 0x00000004, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x00001999, 0x00014000, 0x00000666, 0x00000000, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000400, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000) door(0x0100, MODEL_SK_DOOR1, 0x00ec, 0x10000000, 0x00000000, 0x00000004, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x00001999, 0x00014000, 0x00000666, 0x00000000, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00000400, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000) door(0x0100, MODEL_SK_DOOR1, 0x00ed, 0x10000000, 0x00000000, 0x00000004, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x00001999, 0x00014000, 0x00000666, 0x00000000, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000400, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000) door(0x0100, MODEL_SK_DOOR1, 0x00ee, 0x10000000, 0x00000000, 0x00000004, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x00001999, 0x00014000, 0x00000666, 0x00000000, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00000400, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000) door(0x0100, MODEL_SK_DOOR1, 0x00ef, 0x10000000, 0x00000000, 0x00000004, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x00001999, 0x00014000, 0x00000666, 0x00000000, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000400, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000) door(0x0100, MODEL_SK_DOOR1, 0x00f0, 0x10000000, 0x00000000, 0x00000004, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x00001999, 0x00014000, 0x00000666, 0x00000000, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00000400, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000) tag(0x09, 2) tag(0x0a, 2) door(0x0100, MODEL_SK_DOOR1, 0x00f1, 0x10000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x00001999, 0x00014000, 0x00000666, 0x00000000, 0x00000002, 0x0000012c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000400, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000) door(0x0100, MODEL_SK_DOOR1, 0x00f2, 0x10000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x00001999, 0x00014000, 0x00000666, 0x00000000, 0x00000002, 0x0000012c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00000400, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000) tag(0x0d, 2) tag(0x0e, 2) door(0x0100, MODEL_SK_DOOR1, 0x00f3, 0x10000000, 0x28000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x00001999, 0x00014000, 0x00000666, 0x00000000, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000400, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000) door(0x0100, MODEL_SK_DOOR1, 0x00f4, 0x10000000, 0x30000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x00001999, 0x00014000, 0x00000666, 0x00000000, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00000400, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000) tag(0x45, 2) tag(0x46, 2) door(0x0100, MODEL_SK_DOOR1, 0x00f5, 0x10000000, 0x30000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x00001999, 0x00014000, 0x00000666, 0x00000000, 0x00000080, 0x0000012c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000400, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000) door(0x0100, MODEL_SK_DOOR1, 0x00f6, 0x10000000, 0x28000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x00001999, 0x00014000, 0x00000666, 0x00000000, 0x00000080, 0x0000012c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00000400, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000) tag(0x0f, 2) tag(0x10, 2) door(0x0100, MODEL_SK_DOOR1, 0x00f7, 0x10000000, 0x30000000, 0x00000004, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x00001999, 0x00014000, 0x00000666, 0x00000000, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000400, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000) door(0x0100, MODEL_SK_DOOR1, 0x00f8, 0x10000000, 0x28000000, 0x00000004, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x00001999, 0x00014000, 0x00000666, 0x00000000, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00000400, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000) tag(0x11, 2) tag(0x12, 2) door(0x0100, MODEL_SK_DOOR1, 0x00f9, 0x10000000, 0x28000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x00001999, 0x00014000, 0x00000666, 0x00000000, 0x00000080, 0x0000012c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000400, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000) door(0x0100, MODEL_SK_DOOR1, 0x00fa, 0x10000000, 0x30000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000e666, 0x00010000, 0x00001999, 0x00014000, 0x00000666, 0x00000000, 0x00000080, 0x0000012c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00000400, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000) tag(0x0c, 1) vent_fan(0x0100, MODEL_SK_UNDER_GENERATOR, 0x0126, 0x000204e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00000000, 0x00000000, 0x00000444, 0x00000000, 0x00000002, 0x01000000) vent_fan(0x0100, MODEL_SK_UNDER_TRANS, 0x0127, 0x000204e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00000000, 0x00000000, 0x00000444, 0x00000000, 0x00000002, 0x01000000) vent_fan(0x0100, MODEL_SK_UNDER_TRANS, 0x0128, 0x000204e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00000000, 0x00000000, 0x00000444, 0x00000000, 0x00000002, 0x01000000) tag(0x4c, 1) stdobject(0x00e6, MODEL_SKPUZZLEOBJECT, 0x012c, 0x010201e1, 0x00004100, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) tag(0x05, 1) lift(0x0100, MODEL_SKEDARBRIDGE, 0x0135, 0x035204e8, 0x00304300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0135, 0x0134, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000471c, 0x00a6aaaa, 0x00000000, 0x00000000, 0x00000000, 0x00000000) tag(0x08, 1) stdobject(0x0100, MODEL_TARGETAMP, 0x0001, 0x012405e1, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) rename_object(-1, 0x3f, 0x4214, 0x4215, 0x4216, 0x4217, 0x4218, 0x0000, 0x0000) // "Obtain Target Amplifier." tag(0x35, 1) stdobject(0x0100, MODEL_TARGETAMP, 0x0001, 0x012405e1, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) rename_object(-1, 0x3f, 0x4214, 0x4215, 0x4216, 0x4217, 0x4218, 0x0000, 0x0000) // "Obtain Target Amplifier." tag(0x0b, 1) multimonitor(0x0019, MODEL_COMHUB, 0x0137, 0x00420002, 0x00000000, 0x00010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x03030300) tag(0x13, 1) stdobject(0x0100, MODEL_SK_PLINTH_ML, 0x0146, 0x010405e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000bb8, 0x00000000, 0x00000000, 0x0fff0000) tag(0x14, 1) stdobject(0x0100, MODEL_SK_PLINTH_MR, 0x0147, 0x010405e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000bb8, 0x00000000, 0x00000000, 0x0fff0000) tag(0x15, 1) stdobject(0x0100, MODEL_SK_PLINTH_BL, 0x0149, 0x010405e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000bb8, 0x00000000, 0x00000000, 0x0fff0000) tag(0x16, 1) stdobject(0x0100, MODEL_SK_PLINTH_BR, 0x0148, 0x010405e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000bb8, 0x00000000, 0x00000000, 0x0fff0000) tag(0x17, 1) stdobject(0x0100, MODEL_SK_PLINTH_T, 0x0145, 0x010405e8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000bb8, 0x00000000, 0x00000000, 0x0fff0000) stdobject(0x0100, MODEL_A51_CRATE1, 0x012d, 0x00000101, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) weapon(0x0100, MODEL_CHRMAULER, 0xffff, 0x00008000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_MAULER, 0x00ffffff, 0x00000000) stdobject(0x0100, MODEL_A51_CRATE2, 0x012e, 0x00000101, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) weapon(0x0100, MODEL_CHRMAULER, 0xffff, 0x00008000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_MAULER, 0x00ffffff, 0x00000000) stdobject(0x0100, MODEL_A51_CRATE3, 0x012f, 0x00000101, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) weapon(0x0100, MODEL_CHRMAULER, 0xffff, 0x00008000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_MAULER, 0x00ffffff, 0x00000000) stdobject(0x0100, MODEL_A51_CRATE1, 0x0130, 0x00000101, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) weapon(0x0100, MODEL_CHRMAULER, 0xffff, 0x00008000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_MAULER, 0x00ffffff, 0x00000000) tag(0x23, 1) stdobject(0x0019, MODEL_RUBBLE1, 0xffff, 0x000215e1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) tag(0x24, 1) stdobject(0x0019, MODEL_RUBBLE2, 0xffff, 0x000215e1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) tag(0x25, 1) stdobject(0x0019, MODEL_RUBBLE3, 0xffff, 0x000215e1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) tag(0x26, 1) stdobject(0x0019, MODEL_RUBBLE4, 0xffff, 0x000215e1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) tag(0x37, 1) stdobject(0x0019, MODEL_SK_JONRUBBLE3, 0xffff, 0x000215e1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) tag(0x38, 1) stdobject(0x0019, MODEL_SK_JONRUBBLE4, 0xffff, 0x000215e1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) tag(0x39, 1) stdobject(0x0019, MODEL_SK_JONRUBBLE5, 0xffff, 0x000215e1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) tag(0x3a, 1) stdobject(0x0019, MODEL_SK_JONRUBBLE6, 0xffff, 0x000215e1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) tag(0x3b, 1) stdobject(0x0019, MODEL_SK_JONRUBBLE3, 0xffff, 0x000215e1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) tag(0x3c, 1) stdobject(0x0019, MODEL_RUBBLE3, 0xffff, 0x000215e1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) link_scenery(1, 0, 0) debris(0x0100, MODEL_SK_TEMPLECOLUMN2, 0x010e, 0x035005e1, 0x80106300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) link_scenery(1, 0, 0) debris(0x0100, MODEL_SK_TEMPLECOLUMN2, 0x010f, 0x035005e1, 0x80106300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) link_scenery(1, 0, 0) debris(0x0100, MODEL_SK_TEMPLECOLUMN2, 0x0110, 0x035005e1, 0x80106300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) tag(0x36, 1) stdobject(0x0100, MODEL_SK_SHUTTLE, 0xffff, 0x00021401, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) door(0x0100, MODEL_SK_CRYOPOD1_BOT, 0x00fc, 0x10000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000eb68, 0x0000eb68, 0x0001aaaa, 0x00002aaa, 0x00002aaa, 0x00000004, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00001100, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000) door(0x0100, MODEL_SK_CRYOPOD1_TOP, 0x00fb, 0x10000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000eb68, 0x0000eb68, 0x0001aaaa, 0x00002aaa, 0x00002aaa, 0x00000004, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00001100, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000) door(0x0100, MODEL_SK_CRYOPOD1_BOT, 0x00fd, 0x10000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000eb68, 0x0000eb68, 0x0001aaaa, 0x00002aaa, 0x00002aaa, 0x00000004, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00001100, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000) door(0x0100, MODEL_SK_CRYOPOD1_TOP, 0x00fe, 0x10000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000eb68, 0x0000eb68, 0x0001aaaa, 0x00002aaa, 0x00002aaa, 0x00000004, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00001100, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000) door(0x0100, MODEL_SK_CRYOPOD1_BOT, 0x0100, 0x10000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000eb68, 0x0000eb68, 0x0001aaaa, 0x00002aaa, 0x00002aaa, 0x00000004, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00001100, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000) door(0x0100, MODEL_SK_CRYOPOD1_TOP, 0x00ff, 0x10000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000eb68, 0x0000eb68, 0x0001aaaa, 0x00002aaa, 0x00002aaa, 0x00000004, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00001100, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000) door(0x0100, MODEL_SK_CRYOPOD1_BOT, 0x0101, 0x10000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000eb68, 0x0000eb68, 0x0001aaaa, 0x00002aaa, 0x00002aaa, 0x00000004, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00001100, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000) door(0x0100, MODEL_SK_CRYOPOD1_TOP, 0x0102, 0x10000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000eb68, 0x0000eb68, 0x0001aaaa, 0x00002aaa, 0x00002aaa, 0x00000004, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00001100, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000) door(0x0100, MODEL_SK_CRYOPOD1_BOT, 0x0104, 0x10000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000eb68, 0x0000eb68, 0x0001aaaa, 0x00002aaa, 0x00002aaa, 0x00000004, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00001100, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000) door(0x0100, MODEL_SK_CRYOPOD1_TOP, 0x0103, 0x10000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000eb68, 0x0000eb68, 0x0001aaaa, 0x00002aaa, 0x00002aaa, 0x00000004, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00001100, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000) door(0x0100, MODEL_SK_CRYOPOD1_BOT, 0x0106, 0x10000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000eb68, 0x0000eb68, 0x0001aaaa, 0x00002aaa, 0x00002aaa, 0x00000004, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00001100, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000) door(0x0100, MODEL_SK_CRYOPOD1_TOP, 0x0105, 0x10000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000eb68, 0x0000eb68, 0x0001aaaa, 0x00002aaa, 0x00002aaa, 0x00000004, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00001100, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000) door(0x0100, MODEL_SK_CRYOPOD1_BOT, 0x0107, 0x10000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000eb68, 0x0000eb68, 0x0001aaaa, 0x00002aaa, 0x00002aaa, 0x00000004, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00001100, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000) door(0x0100, MODEL_SK_CRYOPOD1_TOP, 0x0108, 0x10000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0000eb68, 0x0000eb68, 0x0001aaaa, 0x00002aaa, 0x00002aaa, 0x00000004, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00001100, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000) tag(0x47, 1) weapon(0x0100, MODEL_CHRFALCON2SCOPE, 0x00d6, 0x00100000, 0x00080000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_FALCON2_SCOPE, 0x00ffffff, 0x00000000) tag(0x48, 1) weapon(0x0100, MODEL_CHRDEVASTATOR, 0x00d6, 0x00100000, 0x00080000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_DEVASTATOR, 0x00ffffff, 0x00000000) tag(0x49, 1) weapon(0x0100, MODEL_CHRMAIANSMG, 0x00d6, 0x00100000, 0x00080000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CALLISTONTG, 0x00ffffff, 0x00000000) tag(0x4a, 1) weapon(0x0100, MODEL_CHRMAULER, 0x00d6, 0x00100000, 0x00080000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_MAULER, 0x00ffffff, 0x00000000) tag(0x4b, 1) weapon(0x0100, MODEL_CHRSKROCKET, 0x00d6, 0x00100000, 0x00080000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_SLAYER, 0x00ffffff, 0x00000000) tag(0x50, 2) tag(0x51, 2) stdobject(0x0100, MODEL_BUDDYBRIDGE, 0x00ea, 0x035204e8, 0x00304300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) stdobject(0x0100, MODEL_SK_TEMPLECOLUMN4, 0x0131, 0x035205e8, 0x00304300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000) tag(0x3f, 1) shield(0x0100, MODEL_CHRSHIELD, 0x0151, 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(0x40, 1) shield(0x0100, MODEL_CHRSHIELD, 0x00ba, 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(0x42, 2) tag(0x43, 2) weapon(0x0100, MODEL_CHRMAIANPISTOL, 0x0032, 0x00100001, 0x00080000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_PHOENIX, 0x00ffffff, 0x00000000) weapon(0x0100, MODEL_CHRMAIANPISTOL, 0x0032, 0x00100001, 0x00080000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_PHOENIX, 0x00ffffff, 0x00000000) link_collectibles(-1, -2) pad_effect(PADEFFECT_SPARKS, 0x0112) pad_effect(PADEFFECT_SPARKS, 0x0117) pad_effect(PADEFFECT_SPARKS, 0x0113) pad_effect(PADEFFECT_SPARKS, 0x0114) pad_effect(PADEFFECT_SPARKS, 0x0115) pad_effect(PADEFFECT_SPARKS, 0x0116) pad_effect(PADEFFECT_SPARKS, 0x0118) pad_effect(PADEFFECT_SPARKS, 0x0119) pad_effect(PADEFFECT_SPARKS, 0x011a) pad_effect(PADEFFECT_SPARKS, 0x011b) pad_effect(PADEFFECT_SPARKS, 0x011c) pad_effect(PADEFFECT_SPARKS, 0x011d) pad_effect(PADEFFECT_SPARKS, 0x011e) pad_effect(PADEFFECT_SPARKS, 0x011f) pad_effect(PADEFFECT_SPARKS, 0x0120) pad_effect(PADEFFECT_SPARKS, 0x0121) pad_effect(PADEFFECT_SPARKS, 0x0122) pad_effect(PADEFFECT_SPARKS, 0x0123) pad_effect(PADEFFECT_SPARKS, 0x0124) pad_effect(PADEFFECT_SPARKS, 0x0125) pad_effect(PADEFFECT_SMOKE_TEMPORARY, 0x0025) pad_effect(PADEFFECT_SMOKE_TEMPORARY, 0x008c) pad_effect(PADEFFECT_SMOKE_TEMPORARY, 0x0028) pad_effect(PADEFFECT_SMOKE_TEMPORARY, 0x0029) pad_effect(PADEFFECT_SMOKE_TEMPORARY, 0x002a) pad_effect(PADEFFECT_SMOKE_TEMPORARY, 0x0023) pad_effect(PADEFFECT_SMOKE_TEMPORARY, 0x0027) pad_effect(PADEFFECT_SMOKE_TEMPORARY, 0x0026) pad_effect(PADEFFECT_SMOKE_TEMPORARY, 0x0006) pad_effect(PADEFFECT_SMOKE_TEMPORARY, 0x00d9) pad_effect(PADEFFECT_SMOKE_TEMPORARY, 0x00a3) pad_effect(PADEFFECT_SMOKE_TEMPORARY, 0x000c) endprops }; u8 intro[] = { outfit(OUTFIT_DEFAULT) intro_weapon(WEAPON_FALCON2_SCOPE, -1) ammo(AMMOTYPE_PISTOL, 200) intro_weapon(WEAPON_CALLISTONTG, -1) ammo(AMMOTYPE_SMG, 300) ammo(AMMOTYPE_BUG, 3) intro_weapon(WEAPON_DEVASTATOR, -1) ammo(AMMOTYPE_DEVASTATOR, 4) intro_weapon(WEAPON_IRSCANNER, -1) intro_weapon(WEAPON_RTRACKER, -1) spawn(0x0000) endintro }; u8 func0401_init_unarmed_skedar[] = { set_accuracy(0) set_reaction_speed(75) set_chr_maxdamage(CHR_SELF, 40) add_health_or_armor(160) set_recovery_speed(0) set_shield(0) set_self_chrflag(CHRCFLAG_00020000) set_ailist(CHR_SELF, FUNC_UNARMED_SKEDAR) endlist }; u8 func0402_unarmed_skedar[] = { set_shotlist(FUNC_UNARMED_SKEDAR) set_action(MA_NORMAL, TRUE) if_chr_dying(CHR_SELF, /*goto*/ 0x2d) if_chr_death_animation_finished(CHR_SELF, /*goto*/ 0x2d) if_chr_unloaded(CHR_SELF, /*goto*/ 0x2d) goto_next(0x06) // Dying label(0x2d) set_shotlist(GFUNC_IDLE) yield restart_timer beginloop(0x11) if_timer_gt(30, /*goto*/ 0x2d) endloop(0x11) label(0x2d) set_ailist(CHR_SELF, GFUNC_IDLE) #define LABEL_HANDLE_PHOENIX_AREA 0x5a #define LABEL_HANDLE_WALL_AREA 0x5b // Alive label(0x06) set_action(MA_NORMAL, TRUE) stop_chr if_self_flag_bankx_eq(CHRFLAG0_00000004, FALSE, BANK_0, /*goto*/ 0x03) set_action(MA_TRACKING, TRUE) try_run_to_target_chr(/*goto*/ 0x03) beginloop(0x03) if_chr_in_room(CHR_SELF, 0x00, 0x003b, /*goto*/ LABEL_HANDLE_PHOENIX_AREA) if_chr_in_room(CHR_SELF, 0x00, 0x0041, /*goto*/ LABEL_HANDLE_WALL_AREA) if_self_flag_bankx_eq(CHRFLAG0_AIVSAI, FALSE, BANK_0, /*goto*/ 0x2e) if_enemy_distance_lt_and_los(2540, /*goto*/ 0x2d) label(0x2e) set_target_chr(CHR_BOND) if_chr_sees_player(/*goto*/ 0x2d) set_target_chr(CHR_COOP) if_chr_sees_player(/*goto*/ 0x2d) if_self_flag_bankx_eq(CHRFLAG0_00000004, FALSE, BANK_0, /*goto*/ 0x2e) if_just_injured(CHR_SELF, /*goto*/ 0x2d) label(0x2e) call_rng if_rand_gt(1, /*goto*/ 0x06) say_quip(CHR_BOND, 0x03, 0xff, 0x05, 0xff, BANK_0, 0x00, 0x00) label(0x06) endloop(0x03) // Injured or detected enemy label(0x2d) label(0xd9) yield if_chr_in_room(CHR_SELF, 0x00, 0x003b, /*goto*/ LABEL_HANDLE_PHOENIX_AREA) if_chr_in_room(CHR_SELF, 0x00, 0x0041, /*goto*/ LABEL_HANDLE_WALL_AREA) if_self_flag_bankx_eq(CHRFLAG0_AIVSAI, FALSE, BANK_0, /*goto*/ 0x2e) if_enemy_distance_lt_and_los(2540, /*goto*/ 0x2e) label(0x2e) set_chr_cloaked(CHR_SELF, FALSE, TRUE) say_quip(CHR_BOND, 0x01, 0xff, 0x03, 0xff, BANK_0, 0x00, 0x00) if_chr_distance_lt(150, /*goto*/ 0x2f) label(0x54) if_num_times_shot_lt(1, /*goto*/ 0x2d) goto_next(0x06) label(0x2d) label(0x2d) restart_timer set_action(MA_WAITING, TRUE) say_quip(CHR_BOND, 0x03, 0xff, 0x03, 0xff, BANK_0, 0x00, 0x00) try_walk_to_target_chr(/*goto*/ 0x08) beginloop(0x08) if_chr_in_room(CHR_SELF, 0x00, 0x003b, /*goto*/ LABEL_HANDLE_PHOENIX_AREA) if_chr_in_room(CHR_SELF, 0x00, 0x0041, /*goto*/ LABEL_HANDLE_WALL_AREA) if_timer_gt(120, /*goto*/ 0x09) endloop(0x08) label(0x09) label(0x0a) if_chr_propsoundcount_zero(CHR_SELF, /*goto*/ 0x2d) goto_next(0x2d) label(0x06) say_quip(CHR_BOND, 0x01, 0x20, 0x00, 0xff, BANK_0, 0x00, 0x00) label(0x2d) restart_timer set_action(MA_TRACKING, TRUE) try_run_to_target_chr(/*goto*/ 0x0b) beginloop(0x0b) if_chr_has_hiddenflag(CHR_TARGET, CHRHFLAG_CLOAKED, /*goto*/ 0x10) if_chr_in_room(CHR_SELF, 0x00, 0x003b, /*goto*/ LABEL_HANDLE_PHOENIX_AREA) if_chr_in_room(CHR_SELF, 0x00, 0x0041, /*goto*/ LABEL_HANDLE_WALL_AREA) if_chr_death_animation_finished(CHR_TARGET, /*goto*/ 0x10) if_chr_dying(CHR_TARGET, /*goto*/ 0x10) if_chr_unloaded(CHR_TARGET, /*goto*/ 0x10) if_distance_to_home_gt_50_maybe(/*goto*/ 0x2d) if_chr_distance_lt(150, /*goto*/ 0x2f) label(0x2d) if_chr_distance_lt(50, /*goto*/ 0x2f) if_timer_gt(30, /*goto*/ 0x06) endloop(0x0b) label(0x06) goto_first(0x0a) label(0x2f) restart_timer dprint 'F','A','C','E',' ','T','A','R','G','E','T','\n',0, if_jo_ccw_direction_lt(10, /*goto*/ 0x06) if_jo_ccw_direction_gt(246, /*goto*/ 0x06) stop_chr set_action(MA_FACING, TRUE) try_face_entity(0x0200, 0x0001, /*goto*/ 0x0c) beginloop(0x0c) if_chr_has_hiddenflag(CHR_TARGET, CHRHFLAG_CLOAKED, /*goto*/ 0x10) if_chr_in_room(CHR_SELF, 0x00, 0x003b, /*goto*/ LABEL_HANDLE_PHOENIX_AREA) if_chr_in_room(CHR_SELF, 0x00, 0x0041, /*goto*/ LABEL_HANDLE_WALL_AREA) if_chr_death_animation_finished(CHR_TARGET, /*goto*/ 0x10) if_chr_dying(CHR_TARGET, /*goto*/ 0x10) if_chr_unloaded(CHR_TARGET, /*goto*/ 0x10) if_jo_ccw_direction_lt(10, /*goto*/ 0x06) if_jo_ccw_direction_gt(246, /*goto*/ 0x06) if_timer_gt(60, /*goto*/ 0x06) endloop(0x0c) label(0x06) set_action(MA_PUNCHING, TRUE) try_punch_or_kick(/*goto*/ 0x31) goto_first(0xd9) // Punching or kicking label(0x31) beginloop(0x30) if_chr_has_hiddenflag(CHR_TARGET, CHRHFLAG_CLOAKED, /*goto*/ 0x10) if_chr_in_room(CHR_SELF, 0x00, 0x003b, /*goto*/ LABEL_HANDLE_PHOENIX_AREA) if_chr_in_room(CHR_SELF, 0x00, 0x0041, /*goto*/ LABEL_HANDLE_WALL_AREA) if_chr_death_animation_finished(CHR_TARGET, /*goto*/ 0x10) if_chr_dying(CHR_TARGET, /*goto*/ 0x10) if_chr_unloaded(CHR_TARGET, /*goto*/ 0x10) if_chr_stopped(/*goto*/ 0x06) endloop(0x30) // Finished attack label(0x06) if_chr_death_animation_finished(CHR_TARGET, /*goto*/ 0x10) if_chr_dying(CHR_TARGET, /*goto*/ 0x10) if_chr_unloaded(CHR_TARGET, /*goto*/ 0x10) goto_first(0xd9) // Killed target label(0x10) stop_chr unset_self_flag_bankx(CHRFLAG0_00000004, BANK_0) goto_first(0x03) // At ledge near Phoenix label(LABEL_HANDLE_PHOENIX_AREA) stop_chr set_chr_cloaked(CHR_SELF, TRUE, TRUE) restart_timer run_to_pad(0x0018) beginloop(0x5c) if_chr_stopped(/*goto*/ 0x2d) if_chr_in_room(CHR_P1P2, 0x00, 0x0020, /*goto*/ 0x2d) // at T junction near Phoenix endloop(0x5c) label(0x2d) set_self_flag_bankx(CHRFLAG0_00000004, BANK_0) goto_first(0x03) // At ledge prior to grenadable wall label(LABEL_HANDLE_WALL_AREA) stop_chr set_chr_cloaked(CHR_SELF, TRUE, TRUE) restart_timer run_to_pad(0x003c) beginloop(0x5c) if_chr_stopped(/*goto*/ 0x2d) if_chr_in_room(CHR_P1P2, 0x00, 0x0045, /*goto*/ 0x2d) // at weak wall endloop(0x5c) label(0x2d) set_self_flag_bankx(CHRFLAG0_00000004, BANK_0) goto_first(0x03) set_ailist(CHR_SELF, GFUNC_IDLE) endlist }; u8 func0405_puzzleroom_miniskedar_waiting[] = { stop_chr beginloop(0x03) if_self_flag_bankx_eq(CHRFLAG0_AIVSAI, FALSE, BANK_0, /*goto*/ 0x2e) if_enemy_distance_lt_and_los(2540, /*goto*/ 0x2d) label(0x2e) set_target_chr(CHR_BOND) if_chr_sees_player(/*goto*/ 0x2d) set_target_chr(CHR_COOP) if_chr_sees_player(/*goto*/ 0x2d) if_just_injured(CHR_SELF, /*goto*/ 0x2d) endloop(0x03) // Detected player label(0x2d) set_ailist(CHR_SELF, FUNC_INIT_MINISKEDAR) endlist }; u8 func0403_init_miniskedar[] = { set_self_chrflag(CHRCFLAG_00020000) set_accuracy(0) set_reaction_speed(75) set_chr_maxdamage(CHR_SELF, 40) add_health_or_armor(0) set_recovery_speed(0) set_shield(0) set_self_chrflag(CHRCFLAG_00080000) set_ailist(CHR_SELF, FUNC_MINISKEDAR) endlist }; u8 func0404_miniskedar[] = { set_shotlist(FUNC_MINISKEDAR) if_chr_dying(CHR_SELF, /*goto*/ 0x2d) if_chr_death_animation_finished(CHR_SELF, /*goto*/ 0x2d) if_chr_unloaded(CHR_SELF, /*goto*/ 0x2d) goto_next(0x06) // Dying label(0x2d) yield restart_timer beginloop(0x11) if_timer_gt(30, /*goto*/ 0x2d) endloop(0x11) label(0x2d) set_ailist(CHR_SELF, GFUNC_IDLE) // Alive label(0x06) label(0x03) yield if_self_flag_bankx_eq(CHRFLAG0_AIVSAI, FALSE, BANK_0, /*goto*/ 0x2e) if_enemy_distance_lt_and_los(2540, /*goto*/ 0x2d) label(0x2e) if_chr_sees_player(/*goto*/ 0x2d) if_just_injured(CHR_SELF, /*goto*/ 0x2d) // Healthy call_rng say_quip(CHR_BOND, 0x06, 0xff, 0x05, 0xff, BANK_0, 0x00, 0x00) label(0x06) label(0x06) goto_next(0x54) // Injured or detected enemy label(0x2d) set_self_flag_bankx(CHRFLAG0_00000004, BANK_0) if_chr_distance_lt(400, /*goto*/ 0x2f) label(0x54) restart_timer label(0x09) restart_timer if_chr_propsoundcount_zero(CHR_SELF, /*goto*/ 0x2d) goto_next(0x06) label(0x2d) label(0x06) try_run_to_target_chr(/*goto*/ 0x0b) beginloop(0x0b) if_self_flag_bankx_eq(CHRFLAG0_AIVSAI, FALSE, BANK_0, /*goto*/ 0x2e) if_enemy_distance_lt_and_los(2540, /*goto*/ 0x2d) label(0x2e) if_chr_sees_player(/*goto*/ 0x2d) goto_next(0x06) label(0x2d) if_chr_distance_lt(400, /*goto*/ 0x2f) label(0x06) if_timer_gt(60, /*goto*/ 0x06) endloop(0x0b) label(0x06) goto_first(0x09) label(0x2f) restart_timer dprint 'F','A','C','E',' ','T','A','R','G','E','T','\n',0, stop_chr try_face_entity(0x0200, 0x0000, /*goto*/ 0x0c) beginloop(0x0c) if_timer_gt(30, /*goto*/ 0x06) endloop(0x0c) label(0x2d) if_jo_ccw_direction_lt(10, /*goto*/ 0x06) if_jo_ccw_direction_gt(246, /*goto*/ 0x06) goto_first(0x0c) label(0x06) if_chr_distance_lt(200, /*goto*/ 0x2e) miniskedar_try_pounce(0x04, 0x000e, /*goto*/ 0x30) goto_first(0x03) beginloop(0x30) if_chr_stopped(/*goto*/ 0x2d) endloop(0x30) label(0x2d) restart_timer if_chr_injured_target(CHR_SELF, /*goto*/ 0x2d) goto_next(0x06) label(0x2d) label(0x2e) retreat(0x02, 0x01) beginloop(0x0d) if_timer_gt(120, /*goto*/ 0x06) endloop(0x0d) label(0x06) goto_first(0x03) endlist }; /** * Spawn a clone and remove self. This function seems unnecessary. */ u8 func0407_init_cloaked_skedar[] = { set_self_chrflag(CHRCFLAG_00000002) set_self_chrflag(CHRCFLAG_HIDDEN) set_self_chrflag(CHRCFLAG_00040000) set_chr_hiddenflag(CHR_SELF, CHRHFLAG_CLOAKED) beginloop(0x04) // Wait until clone dead - which it would be immediately? chr_toggle_p1p2(CHR_SELF) label(0x4f) if_chr_death_animation_finished(CHR_CLONE, /*goto*/ 0x4f) reloop(0x04) // Spawn clone label(0x4f) try_spawn_clone2(CHR_SELF, FUNC_CLOAKED_SKEDAR, 0x00001010, /*goto*/ 0x2d) reloop(0x04) // Remove self label(0x2d) remove_chr(CHR_SELF) set_ailist(CHR_SELF, GFUNC_IDLE) yield endloop(0x04) endlist }; u8 func0408_cloaked_skedar[] = { set_chr_team(CHR_SELF, TEAM_ENEMY) rebuild_teams rebuild_squadrons set_self_chrflag(CHRCFLAG_00040000) set_self_chrflag(CHRCFLAG_HIDDEN) set_chr_hiddenflag(CHR_SELF, CHRHFLAG_CLOAKED) set_chr_hiddenflag(CHR_SELF, CHRHFLAG_00400000) restart_timer beginloop(0x08) if_objective_complete(4, /*goto*/ 0x0e) // King is alive chr_toggle_p1p2(CHR_SELF) if_chr_distance_to_pad_lt(CHR_P1P2, 300, TARGET_PAD, /*goto*/ 0x2d) // 1 in 256 chance of making skedar roar sound call_rng if_rand_gt(1, /*goto*/ 0x06) say_quip(CHR_BOND, 0x03, 0xff, 0x05, 0xff, BANK_0, 0x00, 0x00) label(0x06) endloop(0x08) // Player went close to cloaked skedar label(0x2d) unset_self_chrflag(CHRCFLAG_HIDDEN) set_ailist(CHR_SELF, FUNC_INIT_UNARMED_SKEDAR) // King is dead label(0x0e) remove_chr(CHR_SELF) set_ailist(CHR_SELF, GFUNC_IDLE) endlist }; /** * Spawns up to 3 miniskedar clones, one at a time. */ u8 func0404_miniskedar_spawner[] = { set_self_chrflag(CHRCFLAG_00000002) set_self_chrflag(CHRCFLAG_HIDDEN) set_self_chrflag(CHRCFLAG_00040000) set_morale(0) // Wait until player near trigger pad beginloop(0x04) chr_toggle_p1p2(CHR_SELF) if_chr_distance_to_pad_lt(CHR_P1P2, 300, TARGET_PAD, /*goto*/ 0x4f) endloop(0x04) label(0x4f) if_morale_lt(3, /*goto*/ 0x06) goto_next(0x2e) label(0x06) if_chr_death_animation_finished(CHR_CLONE, /*goto*/ 0x4f) reloop(0x04) label(0x4f) try_spawn_clone2(CHR_SELF, FUNC_INIT_MINISKEDAR, 0x00000010, /*goto*/ 0x2d) reloop(0x04) label(0x2d) add_morale(1) label(0x2e) yield endloop(0x04) endlist }; u8 unregistered_function3[] = { camera_movement(0x00c3) yield set_chr_hiddenflag(0x00, CHRHFLAG_00020000) chr_do_animation(0x00c4, -1, -1, 0x06, 0x00, 0x00, 4) beginloop(0x08) if_camera_animating(/*goto*/ 0x2d) goto_next(0x06) label(0x2d) endloop(0x08) label(0x06) set_ailist(CHR_SELF, GFUNC_IDLE) endlist }; u8 func1001_objectives_failed_msg[] = { yield give_object_to_chr(OBJ_TARGETAMP_BOND, CHR_BOND) give_object_to_chr(OBJ_TARGETAMP_COOP, CHR_COOP) if_chr_death_animation_finished(CHR_COOP, /*goto*/ 0x2d) set_ailist(CHR_SELF, GFUNC_SHOW_OBJ_FAILED_MSG) label(0x2d) hide_object(OBJ_TARGETAMP_COOP) set_ailist(CHR_SELF, GFUNC_SHOW_OBJ_FAILED_MSG) endlist }; u8 func1400_setup_counterop[] = { yield set_chr_team(CHR_ANTI, TEAM_ENEMY) set_ailist(CHR_SELF, GFUNC_REBUILD_GROUPS) endlist }; u8 func1003_remove_random_skedar[] = { #define remove_random(chr1, chr2) \ call_rng \ if_rand_gt(128, /*goto*/ 0x2d) \ remove_chr(chr1) \ goto_next(0x06) \ label(0x2d) \ remove_chr(chr2) \ label(0x06) remove_random(0x05, 0x06) remove_random(0x07, 0x08) remove_random(0x0b, 0x0c) remove_random(0x0f, 0x10) remove_random(0x11, 0x12) remove_random(0x13, 0x14) set_ailist(CHR_SELF, GFUNC_IDLE) endlist }; u8 func101a_pointless[] = { beginloop(0x04) if_chr_death_animation_finished(CHR_KING1, /*goto*/ 0x2d) endloop(0x04) label(0x2d) set_ailist(CHR_SELF, GFUNC_IDLE) endlist }; u8 func100c_check_army_defeated[] = { yield beginloop(0x04) if_chr_death_animation_finished(0x2c, /*goto*/ 0x2d) reloop(0x04) label(0x2d) if_chr_death_animation_finished(0x2d, /*goto*/ 0x2d) reloop(0x04) label(0x2d) if_chr_death_animation_finished(0x2e, /*goto*/ 0x2d) reloop(0x04) label(0x2d) if_chr_death_animation_finished(0x2f, /*goto*/ 0x2d) reloop(0x04) label(0x2d) if_chr_death_animation_finished(0x30, /*goto*/ 0x2d) reloop(0x04) label(0x2d) if_chr_death_animation_finished(0x31, /*goto*/ 0x2d) reloop(0x04) label(0x2d) if_chr_death_animation_finished(0x32, /*goto*/ 0x2d) endloop(0x04) label(0x2d) message(CHR_BOND, 0x421d) // "Skedar secret army has been defeated." set_stage_flag(STAGEFLAG_ARMY_DEFEATED) beginloop(0x91) if_objective_complete(0, /*goto*/ 0x2d) endloop(0x91) label(0x2d) unset_object_flag_bank1(0x45, OBJECTFLAG1_08000000) unset_object_flag_bank1(0x46, OBJECTFLAG1_10000000) set_ailist(CHR_SELF, GFUNC_IDLE) endlist }; u8 func1005_5e0c[] = { yield beginloop(0x04) chr_toggle_p1p2(CHR_SELF) if_object_distance_to_pad_lt(OBJ_PUZZLEROCK, 50, 0x00d4, /*goto*/ 0x2d) if_chr_distance_to_pad_lt(CHR_P1P2, 50, 0x00d4, /*goto*/ 0x2d) if_chr_in_room(CHR_P1P2, 0x00, 0x005f, /*goto*/ 0x2e) unset_stage_flag(STAGEFLAG_TRIGGER_BRIDGE) endloop(0x04) // Crossed bridge without using puzzle piece, // or one player crossed then another moved the piece off the pad label(0x2e) set_stage_flag(STAGEFLAG_CROSSED_RAVINE_WITHOUT_BRIDGE) set_stage_flag(STAGEFLAG_TRIGGER_BRIDGE) // Pad pressed, or follow through from above label(0x2d) if_stage_flag_eq(STAGEFLAG_TRIGGER_BRIDGE, TRUE, /*goto*/ 0x2d) mute_channel(CHANNEL_5) assign_sound(0x0436, CHANNEL_5) control_sound_from_object(CHANNEL_5, OBJ_PUZZLEROCK, TRUE) // Wait for a condition that would cause the bridge to retract label(0x2d) restart_timer beginloop(0x91) if_stage_flag_eq(STAGEFLAG_CROSSED_RAVINE_WITHOUT_BRIDGE, TRUE, /*goto*/ 0x2d) if_timer_gt(60, /*goto*/ 0x2e) label(0x2d) if_timer_lt(20, /*goto*/ 0x06) if_stage_flag_eq(STAGEFLAG_CROSSED_RAVINE_WITHOUT_BRIDGE, TRUE, /*goto*/ 0x93) if_object_distance_to_pad_lt(OBJ_PUZZLEROCK, 50, 0x00d4, /*goto*/ 0x06) if_chr_distance_to_pad_lt(CHR_P1P2, 50, 0x00d4, /*goto*/ 0x06) goto_next(0x2e) label(0x06) reloop(0x91) label(0x93) if_chr_in_room(CHR_P1P2, 0x00, 0x0057, /*goto*/ 0x06) // start side endloop(0x91) // Player crossed bridge without using switch, then crossed back label(0x06) unset_stage_flag(STAGEFLAG_CROSSED_RAVINE_WITHOUT_BRIDGE) unset_stage_flag(STAGEFLAG_TRIGGER_BRIDGE) goto_first(0x04) // Switch activated and bridge extended for 1 second label(0x2e) if_object_distance_to_pad_lt(OBJ_PUZZLEROCK, 50, 0x00d4, /*goto*/ 0x2d) if_chr_distance_to_pad_lt(CHR_P1P2, 50, 0x00d4, /*goto*/ 0x2d) // Switch no longer pressed mute_channel(CHANNEL_5) assign_sound(0x0437, CHANNEL_5) control_sound_from_object(CHANNEL_5, OBJ_PUZZLEROCK, TRUE) goto_first(0x04) // Switch still pressed label(0x2d) set_stage_flag(STAGEFLAG_TRIGGER_BRIDGE) goto_first(0x04) endlist }; u8 func1006_bridge[] = { beginloop(0x04) if_stage_flag_eq(STAGEFLAG_TRIGGER_BRIDGE, TRUE, /*goto*/ 0x2d) set_object_flag_bank0(OBJ_BRIDGE, OBJECTFLAG0_DEACTIVATED) endloop(0x04) label(0x2d) unset_object_flag_bank0(OBJ_BRIDGE, OBJECTFLAG0_DEACTIVATED) mute_channel(CHANNEL_4) assign_sound(0x8020, CHANNEL_4) play_sound_from_object(CHANNEL_4, OBJ_BRIDGE, 0x04b0, 0x0640) yield beginloop(0x08) if_lift_stationary(OBJ_BRIDGE, /*goto*/ 0x06) endloop(0x08) label(0x06) mute_channel(CHANNEL_4) assign_sound(0x8027, CHANNEL_4) control_sound_from_object(CHANNEL_4, OBJ_BRIDGE, TRUE) set_object_flag_bank0(OBJ_BRIDGE, OBJECTFLAG0_DEACTIVATED) set_stage_flag(STAGEFLAG_BRIDGE_EXTENDED) beginloop(0x09) if_stage_flag_eq(STAGEFLAG_TRIGGER_BRIDGE, FALSE, /*goto*/ 0x2d) endloop(0x09) label(0x2d) beginloop(0x91) if_sound_finished(CHANNEL_4, /*goto*/ 0x2d) endloop(0x91) label(0x2d) unset_object_flag_bank0(OBJ_BRIDGE, OBJECTFLAG0_DEACTIVATED) mute_channel(CHANNEL_4) assign_sound(0x8020, CHANNEL_4) play_sound_from_object(CHANNEL_4, OBJ_BRIDGE, 0x04b0, 0x0640) yield beginloop(0x0b) if_lift_stationary(OBJ_BRIDGE, /*goto*/ 0x06) endloop(0x0b) label(0x06) unset_stage_flag(STAGEFLAG_BRIDGE_EXTENDED) set_object_flag_bank0(OBJ_BRIDGE, OBJECTFLAG0_DEACTIVATED) mute_channel(CHANNEL_4) assign_sound(0x8027, CHANNEL_4) control_sound_from_object(CHANNEL_4, OBJ_BRIDGE, TRUE) goto_first(0x04) endlist }; u8 func1007_bug_throws_bond[] = { beginloop(0x03) if_stage_flag_eq(STAGEFLAG_BOND_THREW_FIRST_BUG, FALSE, /*goto*/ 0x55) if_stage_flag_eq(STAGEFLAG_BOND_THREW_SECOND_BUG, FALSE, /*goto*/ 0x56) if_stage_flag_eq(STAGEFLAG_BOND_THREW_THIRD_BUG, FALSE, /*goto*/ 0x57) label(0x55) dprint 'C','H','E','C','K',' ','1','\n',0, if_ammo_quantity_lt(CHR_BOND, AMMOTYPE_BUG, 3, /*goto*/ 0x2d) endloop(0x03) // Threw first label(0x2d) dprint 'F','I','R','E',' ','1','\n',0, set_stage_flag(STAGEFLAG_BOND_THREW_FIRST_BUG) goto_next(0x0e) // Check for second label(0x56) dprint 'C','H','E','C','K',' ','2','\n',0, label(0x2d) if_ammo_quantity_lt(CHR_BOND, AMMOTYPE_BUG, 2, /*goto*/ 0x2d) goto_first(0x03) label(0x2d) set_stage_flag(STAGEFLAG_BOND_THREW_SECOND_BUG) goto_next(0x0e) // Check for third label(0x57) dprint 'C','H','E','C','K',' ','3','\n',0, if_ammo_quantity_lt(CHR_BOND, AMMOTYPE_BUG, 1, /*goto*/ 0x2d) goto_first(0x03) label(0x2d) set_stage_flag(STAGEFLAG_BOND_THREW_THIRD_BUG) goto_next(0x0e) beginloop(0x0e) if_weapon_thrown(WEAPON_TARGETAMPLIFIER, /*goto*/ 0x06) endloop(0x0e) label(0x06) restart_timer beginloop(0x08) dprint 'A','T',' ','R','E','S','T','\n',0, if_stage_flag_eq(STAGEFLAG_PILLAR1_MARKED, TRUE, /*goto*/ 0x2d) if_weapon_thrown_on_object(WEAPON_TARGETAMPLIFIER, OBJ_PILLAR1, /*goto*/ 0x09) label(0x2d) if_stage_flag_eq(STAGEFLAG_PILLAR2_MARKED, TRUE, /*goto*/ 0x2d) if_weapon_thrown_on_object(WEAPON_TARGETAMPLIFIER, OBJ_PILLAR2, /*goto*/ 0x0b) label(0x2d) if_stage_flag_eq(STAGEFLAG_PILLAR3_MARKED, TRUE, /*goto*/ 0x2d) if_weapon_thrown_on_object(WEAPON_TARGETAMPLIFIER, OBJ_PILLAR3, /*goto*/ 0x0c) label(0x2d) if_timer_gt(120, /*goto*/ 0x0d) endloop(0x08) label(0x09) dprint '1',' ','P','L','A','C','E','D','\n',0, if_stage_flag_eq(STAGEFLAG_PILLAR1_MARKED, TRUE, /*goto*/ 0x0d) set_stage_flag(STAGEFLAG_PILLAR1_MARKED) message(CHR_BOND, 0x4219) // "Target Amplifier placed correctly." if_ammo_quantity_lt(CHR_BOND, AMMOTYPE_BUG, 1, /*goto*/ 0x0d) goto_first(0x03) label(0x0b) dprint '2',' ','P','L','A','C','E','D','\n',0, if_stage_flag_eq(STAGEFLAG_PILLAR2_MARKED, TRUE, /*goto*/ 0x0d) set_stage_flag(STAGEFLAG_PILLAR2_MARKED) message(CHR_BOND, 0x4219) // "Target Amplifier placed correctly." if_ammo_quantity_lt(CHR_BOND, AMMOTYPE_BUG, 1, /*goto*/ 0x0d) goto_first(0x03) label(0x0c) dprint '3',' ','P','L','A','C','E','D','\n',0, if_stage_flag_eq(STAGEFLAG_PILLAR3_MARKED, TRUE, /*goto*/ 0x0d) set_stage_flag(STAGEFLAG_PILLAR3_MARKED) message(CHR_BOND, 0x4219) // "Target Amplifier placed correctly." if_ammo_quantity_lt(CHR_BOND, AMMOTYPE_BUG, 1, /*goto*/ 0x0d) goto_first(0x03) label(0x0d) dprint 'P','L','L','A','C','E','D',' ','W','R','O','N','G','\n',0, if_chr_death_animation_finished(CHR_COOP, /*goto*/ 0x2e) if_stage_flag_eq(STAGEFLAG_COOP_BUGS_WASTED, TRUE, /*goto*/ 0x2d) goto_next(0x0f) label(0x2d) if_ammo_quantity_lt(CHR_BOND, AMMOTYPE_BUG, 1, /*goto*/ 0x2e) goto_next(0x0f) label(0x2e) if_stage_flag_eq(STAGEFLAG_PILLAR1_MARKED, FALSE, /*goto*/ 0x06) if_stage_flag_eq(STAGEFLAG_PILLAR2_MARKED, FALSE, /*goto*/ 0x06) if_stage_flag_eq(STAGEFLAG_PILLAR3_MARKED, FALSE, /*goto*/ 0x06) goto_next(0x2d) label(0x06) set_stage_flag(STAGEFLAG_BOND_BUGS_WASTED) if_stage_flag_eq(STAGEFLAG_COOP_BUGS_WASTED, FALSE, /*goto*/ 0x0f) set_stage_flag(STAGEFLAG_BUG_WASTED) message(CHR_BOND, 0x421a) // "Target Amplifier placed incorrectly." label(0x2d) set_ailist(CHR_SELF, GFUNC_IDLE) label(0x0f) goto_first(0x03) endlist }; u8 func101b_bug_throws_coop[] = { if_chr_death_animation_finished(CHR_COOP, /*goto*/ 0x2d) goto_next(0x03) label(0x2d) set_stage_flag(STAGEFLAG_COOP_BUGS_WASTED) set_ailist(CHR_SELF, GFUNC_IDLE) beginloop(0x03) if_stage_flag_eq(STAGEFLAG_COOP_THREW_FIRST_BUG, FALSE, /*goto*/ 0x55) if_stage_flag_eq(STAGEFLAG_COOP_THREW_SECOND_BUG, FALSE, /*goto*/ 0x56) if_stage_flag_eq(STAGEFLAG_COOP_THREW_THIRD_BUG, FALSE, /*goto*/ 0x57) label(0x55) dprint 'C','O','O','P',' ','C','H','E','C','K',' ','1','\n',0, if_ammo_quantity_lt(CHR_COOP, AMMOTYPE_BUG, 3, /*goto*/ 0x2d) endloop(0x03) label(0x2d) dprint 'C','O','O','P',' ','F','I','R','E',' ','1','\n',0, set_stage_flag(STAGEFLAG_COOP_THREW_FIRST_BUG) goto_next(0x0e) label(0x56) dprint 'C','O','O','P',' ','C','H','E','C','K',' ','2','\n',0, label(0x2d) if_ammo_quantity_lt(CHR_COOP, AMMOTYPE_BUG, 2, /*goto*/ 0x2d) goto_first(0x03) label(0x2d) set_stage_flag(STAGEFLAG_COOP_THREW_SECOND_BUG) goto_next(0x0e) label(0x57) dprint 'C','O','O','P',' ','C','H','E','C','K',' ','3','\n',0, if_ammo_quantity_lt(CHR_COOP, AMMOTYPE_BUG, 1, /*goto*/ 0x2d) goto_first(0x03) label(0x2d) set_stage_flag(STAGEFLAG_COOP_THREW_THIRD_BUG) goto_next(0x0e) beginloop(0x0e) if_weapon_thrown(WEAPON_TARGETAMPLIFIER, /*goto*/ 0x06) endloop(0x0e) label(0x06) restart_timer beginloop(0x08) dprint 'C','O','O','P',' ','A','T',' ','R','E','S','T','\n',0, if_stage_flag_eq(STAGEFLAG_PILLAR1_MARKED, TRUE, /*goto*/ 0x2d) if_weapon_thrown_on_object(WEAPON_TARGETAMPLIFIER, 0x01, /*goto*/ 0x09) label(0x2d) if_stage_flag_eq(STAGEFLAG_PILLAR2_MARKED, TRUE, /*goto*/ 0x2d) if_weapon_thrown_on_object(WEAPON_TARGETAMPLIFIER, 0x02, /*goto*/ 0x0b) label(0x2d) if_stage_flag_eq(STAGEFLAG_PILLAR3_MARKED, TRUE, /*goto*/ 0x2d) if_weapon_thrown_on_object(WEAPON_TARGETAMPLIFIER, 0x03, /*goto*/ 0x0c) label(0x2d) if_timer_gt(120, /*goto*/ 0x0d) endloop(0x08) label(0x09) dprint 'C','O','O','P',' ','1',' ','P','L','A','C','E','D','\n',0, unset_object_flag_bank2(OBJ_PILLAR1, OBJECTFLAG2_RTRACKED_YELLOW) if_stage_flag_eq(STAGEFLAG_PILLAR1_MARKED, TRUE, /*goto*/ 0x0d) set_stage_flag(STAGEFLAG_PILLAR1_MARKED) message(CHR_COOP, 0x4219) // "Target Amplifier placed correctly." if_ammo_quantity_lt(CHR_COOP, AMMOTYPE_BUG, 1, /*goto*/ 0x0d) goto_first(0x03) label(0x0b) dprint 'C','O','O','P',' ','2',' ','P','L','A','C','E','D','\n',0, unset_object_flag_bank2(OBJ_PILLAR2, OBJECTFLAG2_RTRACKED_YELLOW) if_stage_flag_eq(STAGEFLAG_PILLAR2_MARKED, TRUE, /*goto*/ 0x0d) set_stage_flag(STAGEFLAG_PILLAR2_MARKED) message(CHR_COOP, 0x4219) // "Target Amplifier placed correctly." if_ammo_quantity_lt(CHR_COOP, AMMOTYPE_BUG, 1, /*goto*/ 0x0d) goto_first(0x03) label(0x0c) dprint 'C','O','O','P',' ','3',' ','P','L','A','C','E','D','\n',0, unset_object_flag_bank2(OBJ_PILLAR3, OBJECTFLAG2_RTRACKED_YELLOW) if_stage_flag_eq(STAGEFLAG_PILLAR3_MARKED, TRUE, /*goto*/ 0x0d) set_stage_flag(STAGEFLAG_PILLAR3_MARKED) message(CHR_COOP, 0x4219) // "Target Amplifier placed correctly." if_ammo_quantity_lt(CHR_COOP, AMMOTYPE_BUG, 1, /*goto*/ 0x0d) goto_first(0x03) label(0x0d) dprint 'C','O','O','P',' ','P','L','L','A','C','E','D',' ','W','R','O','N','G','\n',0, if_ammo_quantity_lt(CHR_BOND, AMMOTYPE_BUG, 1, /*goto*/ 0x2d) goto_next(0x0f) label(0x2d) if_ammo_quantity_lt(CHR_COOP, AMMOTYPE_BUG, 1, /*goto*/ 0x2d) goto_next(0x0f) label(0x2d) if_stage_flag_eq(STAGEFLAG_PILLAR1_MARKED, FALSE, /*goto*/ 0x06) if_stage_flag_eq(STAGEFLAG_PILLAR2_MARKED, FALSE, /*goto*/ 0x06) if_stage_flag_eq(STAGEFLAG_PILLAR3_MARKED, FALSE, /*goto*/ 0x06) goto_next(0x2d) label(0x06) set_stage_flag(STAGEFLAG_COOP_BUGS_WASTED) if_self_flag_bankx_eq(CHRFLAG0_00000010, FALSE, BANK_0, /*goto*/ 0x0f) set_stage_flag(STAGEFLAG_BUG_WASTED) message(CHR_COOP, 0x421a) // "Target Amplifier placed incorrectly." label(0x2d) set_ailist(CHR_SELF, GFUNC_IDLE) label(0x0f) goto_first(0x03) endlist }; u8 func1008_lock_door[] = { if_difficulty_lt(DIFF_SA, /*goto*/ 0x2d) goto_next(0x04) // A label(0x2d) set_ailist(CHR_SELF, GFUNC_IDLE) // SA and PA label(0x04) yield lock_door(0x09, 0x02) lock_door(0x0a, 0x02) set_ailist(CHR_SELF, GFUNC_IDLE) endlist }; u8 func1009_altar[] = { if_difficulty_lt(DIFF_SA, /*goto*/ 0x0f) beginloop(0x08) chr_toggle_p1p2(CHR_SELF) if_object_flag_bank1(OBJ_ALTAR, OBJECTFLAG1_00002000, /*goto*/ 0x2d) if_chr_distance_to_pad_lt(CHR_P1P2, 300, 0x0137, /*goto*/ 0x2e) label(0x2d) if_chr_activated_object(CHR_P1P2, OBJ_ALTAR, /*goto*/ 0x06) endloop(0x08) // Activated label(0x06) // Altar has flag label(0x2d) if_chr_weapon_equipped(CHR_P1P2, WEAPON_DEVASTATOR, /*goto*/ 0x92) if_chr_weapon_equipped(CHR_P1P2, WEAPON_CALLISTONTG, /*goto*/ 0x93) if_chr_weapon_equipped(CHR_P1P2, WEAPON_FALCON2_SCOPE, /*goto*/ 0x94) if_chr_weapon_equipped(CHR_P1P2, WEAPON_SLAYER, /*goto*/ 0x95) if_chr_weapon_equipped(CHR_P1P2, WEAPON_MAULER, /*goto*/ 0x96) // At pad, or invalid weapon equipped label(0x2e) set_object_flag_bank1(OBJ_ALTAR, OBJECTFLAG1_00002000) message(CHR_P1P2, 0x4233) // "Make your sacrifice to the God of War." restart_timer beginloop(0x91) if_timer_gt(120, /*goto*/ 0x06) endloop(0x91) label(0x06) goto_first(0x08) label(0x92) unset_object_flag_bank1(OBJ_ALTAR_DEVASTATOR, OBJECTFLAG1_INVISIBLE) goto_next(0x2d) label(0x93) unset_object_flag_bank1(OBJ_ALTAR_CALLISTO, OBJECTFLAG1_INVISIBLE) goto_next(0x2d) label(0x94) unset_object_flag_bank1(OBJ_ALTAR_FALCON, OBJECTFLAG1_INVISIBLE) goto_next(0x2d) label(0x95) unset_object_flag_bank1(OBJ_ALTAR_SLAYER, OBJECTFLAG1_INVISIBLE) goto_next(0x2d) label(0x96) unset_object_flag_bank1(OBJ_ALTAR_MAULER, OBJECTFLAG1_INVISIBLE) goto_next(0x2d) label(0x2d) play_sound(0x80aa, -1) chr_drop_weapon(CHR_P1P2) label(0x04) yield label(0x2d) label(0x0f) unlock_door(0x09, 0x02) unlock_door(0x0a, 0x02) set_lights_state(0x0060, 0x03, 0x06, 0x80, 0x78) set_lights_state(0x0061, 0x03, 0x06, 0x80, 0x78) set_lights_state(0x0062, 0x03, 0x06, 0x80, 0x78) set_lights_state(0x0063, 0x03, 0x06, 0x80, 0x78) set_lights_state(0x0064, 0x03, 0x06, 0x80, 0x78) set_lights_state(0x0065, 0x03, 0x06, 0x80, 0x78) set_lights_state(0x0066, 0x03, 0x06, 0x80, 0x78) set_lights_state(0x0067, 0x03, 0x06, 0x80, 0x78) set_lights_state(0x0068, 0x03, 0x06, 0x80, 0x78) set_lights_state(0x0069, 0x03, 0x06, 0x80, 0x78) set_lights_state(0x006a, 0x03, 0x06, 0x80, 0x78) set_lights_state(0x006b, 0x03, 0x06, 0x80, 0x78) set_lights_state(0x006c, 0x03, 0x06, 0x80, 0x78) set_lights_state(0x006d, 0x03, 0x06, 0x80, 0x78) set_lights_state(0x006e, 0x03, 0x06, 0x80, 0x78) set_lights_state(0x006f, 0x03, 0x06, 0x80, 0x78) set_lights_state(0x0070, 0x03, 0x06, 0x80, 0x78) set_lights_state(0x0071, 0x03, 0x06, 0x80, 0x78) set_lights_state(0x0072, 0x03, 0x06, 0x80, 0x78) set_lights_state(0x0073, 0x03, 0x06, 0x80, 0x78) set_lights_state(0x0074, 0x03, 0x06, 0x80, 0x78) set_lights_state(0x0075, 0x03, 0x06, 0x80, 0x78) set_lights_state(0x0076, 0x03, 0x06, 0x80, 0x78) set_lights_state(0x0077, 0x03, 0x06, 0x80, 0x78) set_lights_state(0x0078, 0x03, 0x06, 0x80, 0x78) set_lights_state(0x0079, 0x03, 0x06, 0x80, 0x78) set_lights_state(0x007a, 0x03, 0x06, 0x80, 0x78) set_lights_state(0x007b, 0x03, 0x06, 0x80, 0x78) set_lights_state(0x007c, 0x03, 0x06, 0x80, 0x78) set_lights_state(0x007d, 0x03, 0x06, 0x80, 0x78) set_lights_state(0x007e, 0x03, 0x06, 0x80, 0x78) set_lights_state(0x007f, 0x03, 0x06, 0x80, 0x78) restart_timer beginloop(0x0e) if_timer_gt(120, /*goto*/ 0x2d) endloop(0x0e) label(0x2d) if_difficulty_lt(DIFF_SA, /*goto*/ 0x2d) message(CHR_P1P2, 0x421b) // "Generator has been reactivated." label(0x2d) set_ailist(CHR_SELF, GFUNC_IDLE) endlist }; /** * This function would have cycled the lights every 20 seconds, but the cycling * part has been disabled. */ u8 func101c_setup_corridor_lighting[] = { label(0x59) restart_timer label(0x04) yield label(0x2d) set_lights_state(0x0060, 0x01, 0x06, 0x00, 0x00) set_lights_state(0x0061, 0x01, 0x06, 0x00, 0x00) set_lights_state(0x0062, 0x01, 0x06, 0x00, 0x00) set_lights_state(0x0063, 0x01, 0x06, 0x00, 0x00) set_lights_state(0x0064, 0x01, 0x06, 0x00, 0x00) set_lights_state(0x0065, 0x01, 0x06, 0x00, 0x00) set_lights_state(0x0066, 0x01, 0x06, 0x00, 0x00) set_lights_state(0x0067, 0x01, 0x06, 0x00, 0x00) set_lights_state(0x0068, 0x01, 0x06, 0x00, 0x00) set_lights_state(0x0069, 0x01, 0x06, 0x00, 0x00) set_lights_state(0x006a, 0x01, 0x06, 0x00, 0x00) set_lights_state(0x006b, 0x01, 0x06, 0x00, 0x00) set_lights_state(0x006c, 0x01, 0x06, 0x00, 0x00) set_lights_state(0x006d, 0x01, 0x06, 0x00, 0x00) set_lights_state(0x006e, 0x01, 0x06, 0x00, 0x00) set_lights_state(0x006f, 0x01, 0x06, 0x00, 0x00) set_lights_state(0x0070, 0x01, 0x06, 0x00, 0x00) set_lights_state(0x0071, 0x01, 0x06, 0x00, 0x00) set_lights_state(0x0072, 0x01, 0x06, 0x00, 0x00) set_lights_state(0x0073, 0x01, 0x06, 0x00, 0x00) set_lights_state(0x0074, 0x01, 0x06, 0x00, 0x00) set_lights_state(0x0076, 0x01, 0x06, 0x00, 0x00) set_lights_state(0x0078, 0x01, 0x06, 0x00, 0x00) set_lights_state(0x0079, 0x01, 0x06, 0x00, 0x00) set_lights_state(0x007a, 0x01, 0x06, 0x00, 0x00) set_lights_state(0x007b, 0x01, 0x06, 0x00, 0x00) set_lights_state(0x007c, 0x01, 0x06, 0x00, 0x00) set_lights_state(0x007d, 0x01, 0x06, 0x00, 0x00) set_lights_state(0x007e, 0x01, 0x06, 0x00, 0x00) set_lights_state(0x007f, 0x01, 0x06, 0x00, 0x00) yield set_ailist(CHR_SELF, GFUNC_IDLE) // The rest of this function is unreachable restart_timer beginloop(0x08) if_timer_gt(1200, /*goto*/ 0x2d) endloop(0x08) label(0x2d) set_lights_state(0x0060, 0x03, 0x06, 0xff, 0x78) set_lights_state(0x0061, 0x03, 0x06, 0xff, 0x78) set_lights_state(0x0062, 0x03, 0x06, 0xff, 0x78) set_lights_state(0x0063, 0x03, 0x06, 0xff, 0x78) set_lights_state(0x0064, 0x03, 0x06, 0xff, 0x78) set_lights_state(0x0065, 0x03, 0x06, 0xff, 0x78) set_lights_state(0x0066, 0x03, 0x06, 0xff, 0x78) set_lights_state(0x0067, 0x03, 0x06, 0xff, 0x78) set_lights_state(0x0068, 0x03, 0x06, 0xff, 0x78) set_lights_state(0x0069, 0x03, 0x06, 0xff, 0x78) set_lights_state(0x006a, 0x03, 0x06, 0xff, 0x78) set_lights_state(0x006b, 0x03, 0x06, 0xff, 0x78) set_lights_state(0x006c, 0x03, 0x06, 0xff, 0x78) set_lights_state(0x006d, 0x03, 0x06, 0xff, 0x78) set_lights_state(0x006e, 0x03, 0x06, 0xff, 0x78) set_lights_state(0x006f, 0x03, 0x06, 0xff, 0x78) set_lights_state(0x0070, 0x03, 0x06, 0xff, 0x78) set_lights_state(0x0071, 0x03, 0x06, 0xff, 0x78) set_lights_state(0x0072, 0x03, 0x06, 0xff, 0x78) set_lights_state(0x0073, 0x03, 0x06, 0xff, 0x78) set_lights_state(0x0074, 0x03, 0x06, 0xff, 0x78) set_lights_state(0x0075, 0x03, 0x06, 0xff, 0x78) set_lights_state(0x0076, 0x03, 0x06, 0xff, 0x78) set_lights_state(0x0077, 0x03, 0x06, 0xff, 0x78) set_lights_state(0x0078, 0x03, 0x06, 0xff, 0x78) set_lights_state(0x0079, 0x03, 0x06, 0xff, 0x78) set_lights_state(0x007a, 0x03, 0x06, 0xff, 0x78) set_lights_state(0x007b, 0x03, 0x06, 0xff, 0x78) set_lights_state(0x007c, 0x03, 0x06, 0xff, 0x78) set_lights_state(0x007d, 0x03, 0x06, 0xff, 0x78) set_lights_state(0x007e, 0x03, 0x06, 0xff, 0x78) set_lights_state(0x007f, 0x03, 0x06, 0xff, 0x78) goto_first(0x59) set_ailist(CHR_SELF, GFUNC_IDLE) endlist }; u8 func040a_init_reaper_slayer_skedar[] = { set_accuracy(20) set_reaction_speed(75) set_chr_maxdamage(CHR_SELF, 40) add_health_or_armor(160) set_recovery_speed(0) set_shield(0) set_ailist(CHR_SELF, FUNC_REAPER_SLAYER_SKEDAR) endlist }; u8 func0409_reaper_slayer_skedar[] = { unset_self_chrflag(CHRCFLAG_HIDDEN) set_shotlist(FUNC_REAPER_SLAYER_SKEDAR) if_chr_dying(CHR_SELF, /*goto*/ 0x06) if_chr_death_animation_finished(CHR_SELF, /*goto*/ 0x06) if_chr_unloaded(CHR_SELF, /*goto*/ 0x06) goto_next(0x2d) // Dying label(0x06) set_shotlist(GFUNC_IDLE) restart_timer beginloop(0x5d) if_timer_gt(15, /*goto*/ 0x06) endloop(0x5d) label(0x06) say_quip(CHR_BOND, 0x19, 0xff, 0x03, 0xff, BANK_0, 0x00, 0x00) set_shotlist(GFUNC_IDLE) set_ailist(CHR_SELF, GFUNC_IDLE) // Alive label(0x2d) if_just_injured(CHR_SELF, /*goto*/ 0x06) goto_next(0x08) // Injured label(0x06) set_view_distance(100) // Healthy label(0x08) set_self_chrflag(CHRCFLAG_00000040) label(0x5e) if_self_flag_bankx_eq(CHRFLAG0_00002000, TRUE, BANK_0, /*goto*/ 0x06) set_target_chr(CHR_BOND) try_chr_kneel_and_shoot_thing(0x0220, 0x0000, /*goto*/ 0x5f) label(0x06) kneel beginloop(0x5f) chr_toggle_p1p2(CHR_SELF) label(0x2d) set_target_chr(CHR_P1P2) if_self_flag_bankx_eq(CHRFLAG0_AIVSAI, FALSE, BANK_0, /*goto*/ 0x2e) if_enemy_distance_lt_and_los(2540, /*goto*/ 0x60) label(0x2e) if_player_looking_at_something_maybe(0x00, 0x00, 0x01, /*goto*/ 0x06) if_target_chr_in_sight(/*goto*/ 0x60) label(0x06) if_just_injured(CHR_SELF, /*goto*/ 0x58) label(0x2d) if_saw_injury(0x00, /*goto*/ 0x60) if_near_miss(/*goto*/ 0x61) label(0x2d) set_target_chr(CHR_P1P2) endloop(0x5f) label(0x06) if_player_looking_at_something_maybe(0x00, 0x00, 0x01, /*goto*/ 0x2d) if_target_chr_in_sight(/*goto*/ 0x60) label(0x2d) set_target_chr(CHR_BOND) goto_first(0x5f) label(0x60) if_chr_sees_player(/*goto*/ 0x2d) goto_first(0x5e) label(0x58) label(0x2d) set_view_distance(100) if_self_flag_bankx_eq(CHRFLAG0_00000004, TRUE, BANK_0, /*goto*/ 0x2d) set_self_flag_bankx(CHRFLAG0_00000004, BANK_0) say_quip(CHR_BOND, 0x0b, 0xff, 0x02, 0xff, BANK_0, 0x00, 0x00) label(0x2d) goto_next(0x71) // Unreachable cmd0184(90, 100) beginloop(0x64) if_chr_stopped(/*goto*/ 0x63) endloop(0x64) label(0x63) restart_timer stop_chr beginloop(0x65) if_chr_weapon_equipped(CHR_SELF, WEAPON_SLAYER, /*goto*/ 0x2e) if_timer_gt(120, /*goto*/ 0x2d) label(0x2e) if_timer_gt(200, /*goto*/ 0x2d) endloop(0x65) label(0x2d) label(0x06) goto_first(0x5e) label(0x61) set_view_distance(100) restart_timer if_self_flag_bankx_eq(CHRFLAG0_00000004, TRUE, BANK_0, /*goto*/ 0x6a) set_self_flag_bankx(CHRFLAG0_00000004, BANK_0) label(0x6a) call_rng chr_toggle_p1p2(CHR_SELF) set_target_chr(CHR_P1P2) if_player_looking_at_something_maybe(0x00, 0x00, 0x01, /*goto*/ 0x06) if_target_chr_in_sight(/*goto*/ 0x6b) label(0x06) if_timer_gt(60, /*goto*/ 0x6c) if_rand_lt(4, /*goto*/ 0x6c) goto_first(0x6a) label(0x6c) if_chr_sees_player(/*goto*/ 0x6b) goto_first(0x5e) label(0x6b) goto_first(0x60) label(0x6d) restart_timer beginloop(0x6e) chr_toggle_p1p2(CHR_SELF) set_target_chr(CHR_P1P2) if_chr_sees_player(/*goto*/ 0x6b) if_timer_gt(300, /*goto*/ 0x06) endloop(0x6e) label(0x06) goto_first(0x5e) label(0x6b) goto_first(0x60) label(0x71) if_self_flag_bankx_eq(CHRFLAG0_00002000, FALSE, BANK_0, /*goto*/ 0x72) try_aim_and_shoot_thing1(0x0220, 0x0000, /*goto*/ 0x70) label(0x70) say_quip(CHR_BOND, 0x00, 0x19, 0x02, 0x01, BANK_0, 0x00, 0x00) try_aim_and_shoot_thing2(0x0200, 0x0000, /*goto*/ 0x06) goto_next(0x2d) label(0x72) cmd0184(40, 60) dprint 'F','I','R','E',' ','F','U','L','L','\n',0, label(0x06) goto_first(0x64) label(0x2d) goto_first(0x63) endlist }; u8 func100a_army_room[] = { yield set_lights_state(0x0082, 0x01, 0x06, 0x00, 0x00) set_lights_state(0x0087, 0x01, 0x06, 0x00, 0x00) beginloop(0x04) chr_toggle_p1p2(CHR_SELF) if_chr_in_room(CHR_P1P2, 0x00, 0x0082, /*goto*/ 0x2d) endloop(0x04) label(0x2d) close_door(0x0d) close_door(0x0e) close_door(0x0f) close_door(0x10) if_objective_complete(0, /*goto*/ 0x2d) goto_next(0x06) label(0x2d) lock_door(0x0d, 0x02) lock_door(0x0e, 0x02) lock_door(0x0f, 0x02) lock_door(0x10, 0x02) label(0x06) restart_timer beginloop(0x08) if_timer_gt(180, /*goto*/ 0x06) endloop(0x08) label(0x06) set_lights_state(0x0082, 0x03, 0x06, 0xff, 0x78) set_lights_state(0x0087, 0x03, 0x06, 0xff, 0x78) set_stage_flag(STAGEFLAG_TRIGGER_SKEDAR_ARMY) play_x_music(CHANNEL_10, 60) set_ailist(CHR_SELF, GFUNC_IDLE) goto_first(0x04) endlist }; u8 func100b_check_sanctum_accessed[] = { beginloop(0x04) chr_toggle_p1p2(CHR_SELF) if_chr_in_room(CHR_P1P2, 0x00, 0x007a, /*goto*/ 0x2d) endloop(0x04) label(0x2d) message(CHR_P1P2, 0x421c) // "Skedar Inner Sanctum has been reached." set_stage_flag(STAGEFLAG_ACCESSED_SANCTUM) set_ailist(CHR_SELF, GFUNC_IDLE) endlist }; u8 func040b_mauler_skedar[] = { set_self_chrflag(CHRCFLAG_00080000) set_accuracy(20) set_reaction_speed(50) set_chr_maxdamage(CHR_SELF, 40) add_health_or_armor(50) set_recovery_speed(0) set_shield(0) beginloop(0x04) if_self_flag_bankx_eq(CHRFLAG0_00002000, TRUE, BANK_0, /*goto*/ 0x2d) endloop(0x04) label(0x2d) set_alertness(100) set_target_chr(CHR_BOND) try_jog_to_target_chr(/*goto*/ 0x2d) label(0x2d) set_shotlist(GFUNC_COMBAT_WITH_TARGET) set_returnlist(CHR_SELF, GFUNC_COMBAT_WITH_TARGET) set_ailist(CHR_SELF, GFUNC_COMBAT_WITH_TARGET) set_ailist(CHR_SELF, GFUNC_IDLE) endlist }; u8 func100e_wake_skedar_army[] = { beginloop(0x04) if_stage_flag_eq(STAGEFLAG_TRIGGER_SKEDAR_ARMY, TRUE, /*goto*/ 0x2d) endloop(0x04) label(0x2d) #define enable_army_skedar(chr, loopid) \ restart_timer \ set_chr_flag_bankx(chr, CHRFLAG0_00002000, BANK_0) \ beginloop(loopid) \ if_timer_gt(500, /*goto*/ 0x2d) \ endloop(loopid) \ label(0x2d) enable_army_skedar(0x2e, 0x08) enable_army_skedar(0x31, 0x09) enable_army_skedar(0x2c, 0x0b) enable_army_skedar(0x2f, 0x0c) enable_army_skedar(0x2d, 0x0d) enable_army_skedar(0x32, 0x0e) enable_army_skedar(0x30, 0x0f) set_ailist(CHR_SELF, GFUNC_IDLE) endlist }; u8 func040c_king_waiting[] = { set_shield(500) set_accuracy(100) set_chr_chrflag(CHR_SELF, CHRCFLAG_00080000) set_chr_hiddenflag(CHR_SELF, CHRHFLAG_00100000) if_difficulty_gt(DIFF_A, /*goto*/ 0x2d) set_self_chrflag(CHRCFLAG_00000020) label(0x2d) set_self_chrflag(CHRCFLAG_INVINCIBLE_TO_GUNFIRE) set_chr_hiddenflag(CHR_SELF, CHRHFLAG_10000000) set_morale(0) beginloop(0x08) chr_toggle_p1p2(CHR_SELF) if_chr_in_room(CHR_P1P2, 0x00, 0x0088, /*goto*/ 0x2d) endloop(0x08) label(0x2d) stop_music_channel(-1) play_music_track(MUSIC_SKEDARRUINS_KING) restart_timer beginloop(0x09) if_timer_gt(300, /*goto*/ 0x2d) endloop(0x09) label(0x2d) unset_self_chrflag(CHRCFLAG_INVINCIBLE_TO_GUNFIRE) set_ailist(CHR_SELF, FUNC_KING_COMBAT) endlist }; /** * morale tracks how many rockets have been fired in a row. */ u8 func040d_king_combat[] = { #define LABEL_MAINLOOP 0x03 #define LABEL_PLAYER_DEAD 0x11 #define LABEL_FIRE_ROCKET 0x73 #define LABEL_SPAWN_SKEDAR 0x74 #define LABEL_SPAWN_MINISKEDAR 0x75 #define LABEL_CLOAK 0x76 #define LABEL_LOW_SHIELD 0x7c beginloop(0x59) chr_toggle_p1p2(CHR_SELF) set_target_chr(CHR_P1P2) if_in_disarm_range(/*goto*/ 0x03) if_chr_shield_lt(CHR_SELF, 20, /*goto*/ LABEL_LOW_SHIELD) endloop(0x59) // Main loop label(LABEL_MAINLOOP) chr_toggle_p1p2(CHR_SELF) set_target_chr(CHR_P1P2) try_face_entity(0x0200, 0x0000, /*goto*/ 0x04) beginloop(0x04) if_chr_death_animation_finished(CHR_P1P2, /*goto*/ LABEL_PLAYER_DEAD) if_chr_shield_lt(CHR_SELF, 20, /*goto*/ LABEL_LOW_SHIELD) if_stage_flag_eq(STAGEFLAG_KING_SKEDAR_CLONE_EXISTS, TRUE, /*goto*/ 0x2d) if_stage_flag_eq(STAGEFLAG_KING_MINISKEDAR_CLONE_EXISTS, TRUE, /*goto*/ 0x2d) // No clones exist call_rng if_rand_gt(200, /*goto*/ 0x79) if_morale_lt(2, /*goto*/ 0x06) goto_next(0x2d) label(0x06) goto_next(LABEL_FIRE_ROCKET) label(0x79) if_rand_gt(237, /*goto*/ 0x07) if_rand_gt(218, /*goto*/ 0x06) goto_next(LABEL_SPAWN_MINISKEDAR) label(0x06) goto_next(LABEL_SPAWN_SKEDAR) label(0x07) goto_next(LABEL_CLOAK) label(0x2d) endloop(0x04) // // Run to side and fire a rocket // label(LABEL_FIRE_ROCKET) restart_timer if_chr_distance_to_pad_lt(CHR_SELF, 300, 0x0098, /*goto*/ 0x06) jog_to_pad(0x0098) // left side (when facing king) goto_next(0x7f) label(0x06) restart_timer jog_to_pad(0x0097) // right side beginloop(0x7f) if_chr_death_animation_finished(CHR_P1P2, /*goto*/ LABEL_PLAYER_DEAD) if_chr_shield_lt(CHR_SELF, 20, /*goto*/ LABEL_LOW_SHIELD) if_chr_stopped(/*goto*/ 0x2d) endloop(0x7f) label(0x2d) set_self_chrflag(CHRCFLAG_00000040) beginloop(0x7a) if_chr_death_animation_finished(CHR_P1P2, /*goto*/ LABEL_PLAYER_DEAD) if_chr_shield_lt(CHR_SELF, 20, /*goto*/ LABEL_LOW_SHIELD) if_in_disarm_range(/*goto*/ 0x06) endloop(0x7a) label(0x06) say_quip(CHR_BOND, 0x01, 0xff, 0x03, 0xff, BANK_0, 0x00, 0x00) try_aim_and_shoot_thing1(0x0220, 0x0000, /*goto*/ 0x70) label(0x70) say_quip(CHR_BOND, 0x00, 0x19, 0x02, 0x01, BANK_0, 0x00, 0x00) try_aim_and_shoot_thing2(0x0200, 0x0000, /*goto*/ 0x7b) goto_next(0x2d) label(0x06) goto_first(LABEL_MAINLOOP) // Shoot successful beginloop(0x7b) if_chr_death_animation_finished(CHR_P1P2, /*goto*/ LABEL_PLAYER_DEAD) if_chr_shield_lt(CHR_SELF, 20, /*goto*/ LABEL_LOW_SHIELD) if_chr_stopped(/*goto*/ 0x2d) endloop(0x7b) label(0x2d) add_morale(1) goto_first(LABEL_MAINLOOP) // // Spawn skedar // label(LABEL_SPAWN_SKEDAR) say_quip(CHR_BOND, 0x01, 0xff, 0x03, 0xff, BANK_0, 0x00, 0x00) set_morale(0) restart_timer chr_do_animation(0x0350, 0, -1, 0x10, 0x10, CHR_SELF, 2) beginloop(0x66) if_chr_death_animation_finished(CHR_P1P2, /*goto*/ LABEL_PLAYER_DEAD) if_chr_shield_lt(CHR_SELF, 20, /*goto*/ LABEL_LOW_SHIELD) if_timer_gt(120, /*goto*/ 0x2d) endloop(0x66) label(0x2d) set_chr_flag_bankx(CHR_KING_SKEDAR_SPAWNER, CHRFLAG0_00002000, BANK_0) goto_first(LABEL_MAINLOOP) // // Spawn miniskedar // label(LABEL_SPAWN_MINISKEDAR) say_quip(CHR_BOND, 0x01, 0xff, 0x03, 0xff, BANK_0, 0x00, 0x00) set_morale(0) restart_timer chr_do_animation(0x0350, 0, -1, 0x10, 0x10, CHR_SELF, 2) beginloop(0x67) if_chr_death_animation_finished(CHR_P1P2, /*goto*/ LABEL_PLAYER_DEAD) if_chr_shield_lt(CHR_SELF, 20, /*goto*/ LABEL_LOW_SHIELD) if_timer_gt(120, /*goto*/ 0x2d) endloop(0x67) label(0x2d) set_chr_flag_bankx(CHR_KING_MINISKEDAR_SPAWNER, CHRFLAG0_00002000, BANK_0) goto_first(LABEL_MAINLOOP) // // Cloak and warp to player for hand combat // label(LABEL_CLOAK) say_quip(CHR_BOND, 0x01, 0xff, 0x03, 0xff, BANK_0, 0x00, 0x00) set_morale(0) restart_timer chr_do_animation(0x0350, 0, -1, 0x10, 0x10, CHR_SELF, 2) set_chr_cloaked(CHR_SELF, TRUE, TRUE) beginloop(0x68) if_chr_death_animation_finished(CHR_P1P2, /*goto*/ LABEL_PLAYER_DEAD) if_timer_gt(120, /*goto*/ 0x2d) endloop(0x68) label(0x2d) try_set_target_pad_to_something2(0x01, /*goto*/ 0x2d) try_set_target_pad_to_something2(0x02, /*goto*/ 0x2d) try_set_target_pad_to_something2(0x04, /*goto*/ 0x2d) goto_next(0x88) label(0x2d) chr_move_to_pad(CHR_SELF, TARGET_PAD, 0x00, /*goto*/ 0x2d) goto_next(0x88) label(0x2d) set_countdown_timer(7) start_countdown_timer label(0x8a) restart_timer try_run_to_target_chr(/*goto*/ 0x08) beginloop(0x08) if_chr_death_animation_finished(CHR_P1P2, /*goto*/ 0x0b) if_timer_gt(20, /*goto*/ 0x89) if_chr_distance_lt(150, /*goto*/ 0x06) endloop(0x08) // Unreachable label(0x2d) goto_next(0x88) // Every 20 frames - check countdown timer label(0x89) if_countdown_timer_lt(1, /*goto*/ 0x2d) goto_first(0x8a) // Been chasing player while cloaked for 7 seconds label(0x2d) goto_next(0x88) // Distance to player < 150 label(0x06) say_quip(CHR_BOND, 0x01, 0xff, 0x03, 0xff, BANK_0, 0x00, 0x00) set_chr_cloaked(CHR_SELF, FALSE, TRUE) restart_timer dprint 'F','A','C','E',' ','T','A','R','G','E','T','\n',0, if_jo_ccw_direction_lt(10, /*goto*/ 0x06) if_jo_ccw_direction_gt(246, /*goto*/ 0x06) stop_chr try_face_entity(0x0200, 0x0000, /*goto*/ 0x09) beginloop(0x09) if_chr_death_animation_finished(CHR_P1P2, /*goto*/ 0x0b) if_jo_ccw_direction_lt(10, /*goto*/ 0x06) if_jo_ccw_direction_gt(246, /*goto*/ 0x06) if_timer_gt(60, /*goto*/ 0x06) endloop(0x09) label(0x2d) goto_next(0x87) label(0x06) dprint 'P','U','N','C','H','\n',0, try_punch_or_kick(/*goto*/ 0x0b) goto_next(0x87) beginloop(0x0b) if_chr_stopped(/*goto*/ 0x2d) endloop(0x0b) label(0x2d) restart_timer set_chr_cloaked(CHR_SELF, TRUE, TRUE) beginloop(0x0d) if_timer_gt(120, /*goto*/ 0x2d) endloop(0x0d) label(0x2d) label(0x88) stop_chr chr_move_to_pad(CHR_SELF, 0x0097, 0x00, /*goto*/ 0x87) chr_move_to_pad(CHR_SELF, 0x0096, 0x00, /*goto*/ 0x87) chr_move_to_pad(CHR_SELF, 0x0098, 0x00, /*goto*/ 0x87) label(0x87) set_chr_cloaked(CHR_SELF, FALSE, TRUE) restart_timer beginloop(0x85) if_timer_gt(120, /*goto*/ 0x2d) endloop(0x85) label(0x2d) goto_first(LABEL_MAINLOOP) // Unreachable - nothing jumps here label(0x77) say_quip(CHR_BOND, 0x01, 0xff, 0x03, 0xff, BANK_0, 0x00, 0x00) set_morale(0) restart_timer chr_do_animation(0x0350, 0, -1, 0x10, 0x10, CHR_SELF, 2) beginloop(0x69) if_chr_shield_lt(CHR_SELF, 20, /*goto*/ LABEL_LOW_SHIELD) if_timer_gt(120, /*goto*/ 0x2d) endloop(0x69) label(0x2d) goto_first(LABEL_MAINLOOP) // Shield < 20 label(LABEL_LOW_SHIELD) say_quip(CHR_BOND, 0x02, 0xff, 0x00, 0xff, BANK_0, 0x00, 0x00) jog_to_pad(0x0096) beginloop(0x7d) if_chr_stopped(/*goto*/ 0x06) endloop(0x7d) label(0x06) restart_timer set_stage_flag(STAGEFLAG_SPIKES_VULNERABLE) chr_do_animation(0x0351, 0, -1, 0x10, 0x10, CHR_SELF, 2) beginloop(0x7e) if_stage_flag_eq(STAGEFLAG_SPIKE_DESTROYED, TRUE, /*goto*/ 0x06) if_timer_gt(500, /*goto*/ 0x06) endloop(0x7e) label(0x06) stop_chr unset_stage_flag(STAGEFLAG_SPIKE_DESTROYED) if_stage_flag_eq(STAGEFLAG_SPIKE4_DESTROYED, TRUE, /*goto*/ 0x83) if_stage_flag_eq(STAGEFLAG_SPIKE3_DESTROYED, TRUE, /*goto*/ 0x82) if_stage_flag_eq(STAGEFLAG_SPIKE2_DESTROYED, TRUE, /*goto*/ 0x81) if_stage_flag_eq(STAGEFLAG_SPIKE1_DESTROYED, TRUE, /*goto*/ 0x80) set_shield(500) goto_next(0x06) label(0x80) set_shield(400) goto_next(0x06) label(0x81) set_shield(300) goto_next(0x06) label(0x82) set_shield(200) goto_next(0x06) label(0x83) set_shield(100) label(0x06) unset_stage_flag(STAGEFLAG_SPIKES_VULNERABLE) goto_first(LABEL_MAINLOOP) // Player dead label(LABEL_PLAYER_DEAD) goto_first(0x59) endlist }; u8 func040e_king_skedar_spawner[] = { set_self_chrflag(CHRCFLAG_00000002) set_self_chrflag(CHRCFLAG_HIDDEN) set_self_chrflag(CHRCFLAG_INVINCIBLE_TO_GUNFIRE) set_self_chrflag(CHRCFLAG_00040000) set_chr_hiddenflag(CHR_SELF, CHRHFLAG_00100000) beginloop(0x04) if_chr_death_animation_finished(CHR_CLONE, /*goto*/ 0x2d) if_chr_dying(CHR_CLONE, /*goto*/ 0x2d) if_chr_unloaded(CHR_CLONE, /*goto*/ 0x2d) goto_next(0x06) // Clone dead label(0x2d) unset_stage_flag(STAGEFLAG_KING_SKEDAR_CLONE_EXISTS) label(0x06) if_self_flag_bankx_eq(CHRFLAG0_00002000, TRUE, BANK_0, /*goto*/ 0x4f) reloop(0x04) label(0x4f) if_chr_death_animation_finished(CHR_CLONE, /*goto*/ 0x4f) if_chr_dying(CHR_CLONE, /*goto*/ 0x4f) if_chr_unloaded(CHR_CLONE, /*goto*/ 0x4f) reloop(0x04) label(0x4f) try_spawn_clone2(CHR_SELF, FUNC_INIT_KING_SKEDAR_CLONE, 0x00000010, /*goto*/ 0x2d) reloop(0x04) label(0x2d) unset_self_flag_bankx(CHRFLAG0_00002000, BANK_0) set_stage_flag(STAGEFLAG_KING_SKEDAR_CLONE_EXISTS) yield endloop(0x04) endlist }; u8 func0410_init_king_skedar_clone[] = { set_self_chrflag(CHRCFLAG_00040000) set_self_chrflag(CHRCFLAG_HIDDEN) set_chr_hiddenflag(CHR_SELF, CHRHFLAG_CLOAKED) yield try_equip_weapon(MODEL_CHRMAULER, WEAPON_MAULER, 0x20000000, /*goto*/ 0x06) label(0x06) yield yield yield yield unset_self_chrflag(CHRCFLAG_HIDDEN) set_chr_cloaked(CHR_SELF, FALSE, TRUE) set_ailist(CHR_SELF, FUNC_INIT_UNARMED_SKEDAR) endlist }; u8 func0411_king_miniskedar_spawner[] = { set_self_chrflag(CHRCFLAG_00000002) set_self_chrflag(CHRCFLAG_HIDDEN) set_self_chrflag(CHRCFLAG_INVINCIBLE_TO_GUNFIRE) set_self_chrflag(CHRCFLAG_00040000) set_chr_hiddenflag(CHR_SELF, CHRHFLAG_00100000) beginloop(0x04) if_chr_death_animation_finished(CHR_CLONE, /*goto*/ 0x2d) if_chr_dying(CHR_CLONE, /*goto*/ 0x2d) if_chr_unloaded(CHR_CLONE, /*goto*/ 0x2d) goto_next(0x06) // Clone dead label(0x2d) unset_stage_flag(STAGEFLAG_KING_MINISKEDAR_CLONE_EXISTS) label(0x06) if_self_flag_bankx_eq(CHRFLAG0_00002000, TRUE, BANK_0, /*goto*/ 0x4f) reloop(0x04) // Clone dead and flag set // Redundant check label(0x4f) if_chr_death_animation_finished(CHR_CLONE, /*goto*/ 0x4f) if_chr_dying(CHR_CLONE, /*goto*/ 0x4f) if_chr_unloaded(CHR_CLONE, /*goto*/ 0x4f) reloop(0x04) // Spawn clone label(0x4f) try_spawn_clone2(CHR_SELF, FUNC_INIT_KING_MINISKEDAR_CLONE, 0x00000010, /*goto*/ 0x2d) reloop(0x04) label(0x2d) unset_self_flag_bankx(CHRFLAG0_00002000, BANK_0) set_stage_flag(STAGEFLAG_KING_MINISKEDAR_CLONE_EXISTS) yield endloop(0x04) endlist }; u8 func0412_init_king_miniskedar_clone[] = { set_self_chrflag(CHRCFLAG_00040000) set_self_chrflag(CHRCFLAG_HIDDEN) set_chr_hiddenflag(CHR_SELF, CHRHFLAG_CLOAKED) yield try_equip_weapon(MODEL_CHRMAULER, WEAPON_MAULER, 0x20000000, /*goto*/ 0x06) label(0x06) yield yield yield yield unset_self_chrflag(CHRCFLAG_HIDDEN) set_chr_cloaked(CHR_SELF, FALSE, TRUE) set_ailist(CHR_SELF, FUNC_INIT_MINISKEDAR) endlist }; u8 func100f_spikes_vulnerability[] = { set_object_flag_bank1(OBJ_SPIKE_ML, 0x00200002) set_object_flag_bank1(OBJ_SPIKE_MR, 0x00200002) set_object_flag_bank1(OBJ_SPIKE_BL, 0x00200002) set_object_flag_bank1(OBJ_SPIKE_BR, 0x00200002) set_object_flag_bank1(OBJ_SPIKE_T, 0x00200002) beginloop(0x91) if_stage_flag_eq(STAGEFLAG_IN_INTRO, FALSE, /*goto*/ 0x86) endloop(0x91) label(0x86) label(0x03) set_object_flag_bank0(OBJ_SPIKE_ML, OBJECTFLAG0_INVINCIBLE) set_object_flag_bank0(OBJ_SPIKE_MR, OBJECTFLAG0_INVINCIBLE) set_object_flag_bank0(OBJ_SPIKE_BL, OBJECTFLAG0_INVINCIBLE) set_object_flag_bank0(OBJ_SPIKE_BR, OBJECTFLAG0_INVINCIBLE) set_object_flag_bank0(OBJ_SPIKE_T, OBJECTFLAG0_INVINCIBLE) set_object_flag_bank2(OBJ_SPIKE_ML, 0x00101000) set_object_flag_bank2(OBJ_SPIKE_MR, 0x00101000) set_object_flag_bank2(OBJ_SPIKE_BL, 0x00101000) set_object_flag_bank2(OBJ_SPIKE_BR, 0x00101000) set_object_flag_bank2(OBJ_SPIKE_T, 0x00101000) beginloop(0x04) if_stage_flag_eq(STAGEFLAG_SPIKES_VULNERABLE, TRUE, /*goto*/ 0x2d) endloop(0x04) label(0x2d) unset_object_flag_bank0(OBJ_SPIKE_ML, OBJECTFLAG0_INVINCIBLE) unset_object_flag_bank0(OBJ_SPIKE_MR, OBJECTFLAG0_INVINCIBLE) unset_object_flag_bank0(OBJ_SPIKE_BL, OBJECTFLAG0_INVINCIBLE) unset_object_flag_bank0(OBJ_SPIKE_BR, OBJECTFLAG0_INVINCIBLE) unset_object_flag_bank2(OBJ_SPIKE_ML, 0x00101000) unset_object_flag_bank2(OBJ_SPIKE_MR, 0x00101000) unset_object_flag_bank2(OBJ_SPIKE_BL, 0x00101000) unset_object_flag_bank2(OBJ_SPIKE_BR, 0x00101000) if_stage_flag_eq(STAGEFLAG_SPIKE1_DESTROYED, FALSE, /*goto*/ 0x08) if_stage_flag_eq(STAGEFLAG_SPIKE2_DESTROYED, FALSE, /*goto*/ 0x08) if_stage_flag_eq(STAGEFLAG_SPIKE3_DESTROYED, FALSE, /*goto*/ 0x08) if_stage_flag_eq(STAGEFLAG_SPIKE4_DESTROYED, FALSE, /*goto*/ 0x08) unset_object_flag_bank0(OBJ_SPIKE_T, OBJECTFLAG0_INVINCIBLE) unset_object_flag_bank2(OBJ_SPIKE_T, 0x00101000) beginloop(0x08) if_stage_flag_eq(STAGEFLAG_SPIKES_VULNERABLE, FALSE, /*goto*/ 0x2d) endloop(0x08) label(0x2d) goto_first(0x03) endlist }; #define wait_for_spike_destroyed(spike, shadow, noshadow) \ beginloop(0x03) \ if_object_in_good_condition(spike, /*goto*/ 0x2d) \ goto_next(0x06) \ \ label(0x2d) \ endloop(0x03) \ \ label(0x06) \ set_object_flag_bank1(shadow, OBJECTFLAG1_INVISIBLE) \ unset_object_flag_bank1(noshadow, OBJECTFLAG1_INVISIBLE) u8 func1010_spike_ml[] = { wait_for_spike_destroyed(OBJ_SPIKE_ML, OBJ_SPIKE_SHAD_ML, OBJ_SPIKE_NOSHAD_ML) set_ailist(CHR_SELF, FUNC_UPDATE_SPIKE_STAGEFLAGS) endlist }; u8 func1011_spike_mr[] = { wait_for_spike_destroyed(OBJ_SPIKE_MR, OBJ_SPIKE_SHAD_MR, OBJ_SPIKE_NOSHAD_MR) set_ailist(CHR_SELF, FUNC_UPDATE_SPIKE_STAGEFLAGS) endlist }; u8 func1012_spike_bl[] = { wait_for_spike_destroyed(OBJ_SPIKE_BL, OBJ_SPIKE_SHAD_BL, OBJ_SPIKE_NOSHAD_BL) set_ailist(CHR_SELF, FUNC_UPDATE_SPIKE_STAGEFLAGS) endlist }; u8 func1013_spike_br[] = { wait_for_spike_destroyed(OBJ_SPIKE_BR, OBJ_SPIKE_SHAD_BR, OBJ_SPIKE_NOSHAD_BR) set_ailist(CHR_SELF, FUNC_UPDATE_SPIKE_STAGEFLAGS) endlist }; u8 func1014_spike_top[] = { wait_for_spike_destroyed(OBJ_SPIKE_T, OBJ_SPIKE_SHAD_T, OBJ_SPIKE_NOSHAD_T) set_stage_flag(STAGEFLAG_SPIKE5_DESTROYED) yield if_chr_death_animation_finished(CHR_BOND, /*goto*/ 0x2d) if_chr_dying(CHR_BOND, /*goto*/ 0x2d) if_chr_unloaded(CHR_BOND, /*goto*/ 0x2d) goto_next(0x06) label(0x2d) if_chr_death_animation_finished(CHR_COOP, /*goto*/ 0x2d) if_chr_dying(CHR_COOP, /*goto*/ 0x2d) if_chr_unloaded(CHR_COOP, /*goto*/ 0x2d) goto_next(0x06) label(0x2d) end_level set_ailist(CHR_SELF, GFUNC_IDLE) label(0x06) set_invincible(CHR_BOND) set_ailist(CHR_SELF, FUNC_OUTRO) set_ailist(CHR_SELF, GFUNC_IDLE) endlist }; u8 func040f_update_spike_stageflags[] = { if_stage_flag_eq(STAGEFLAG_SPIKE1_DESTROYED, TRUE, /*goto*/ 0x09) set_stage_flag(STAGEFLAG_SPIKE1_DESTROYED) set_stage_flag(STAGEFLAG_SPIKE_DESTROYED) set_ailist(CHR_SELF, GFUNC_IDLE) label(0x09) if_stage_flag_eq(STAGEFLAG_SPIKE2_DESTROYED, TRUE, /*goto*/ 0x0b) set_stage_flag(STAGEFLAG_SPIKE2_DESTROYED) set_stage_flag(STAGEFLAG_SPIKE_DESTROYED) set_ailist(CHR_SELF, GFUNC_IDLE) label(0x0b) if_stage_flag_eq(STAGEFLAG_SPIKE3_DESTROYED, TRUE, /*goto*/ 0x0c) set_stage_flag(STAGEFLAG_SPIKE3_DESTROYED) set_stage_flag(STAGEFLAG_SPIKE_DESTROYED) set_ailist(CHR_SELF, GFUNC_IDLE) label(0x0c) set_stage_flag(STAGEFLAG_SPIKE4_DESTROYED) set_stage_flag(STAGEFLAG_SPIKE_DESTROYED) set_ailist(CHR_SELF, GFUNC_IDLE) endlist }; u8 func0c00_intro[] = { set_chr_chrflag(CHR_COOP, CHRCFLAG_HIDDEN) set_chr_chrflag(CHR_ANTI, CHRCFLAG_HIDDEN) set_music_track(MUSIC_SKEDARRUINS_INTRO) set_stage_flag(STAGEFLAG_IN_INTRO) set_chr_chrflag(CHR_BOND, CHRCFLAG_00080000) set_chr_chrflag(CHR_KING2, CHRCFLAG_HIDDEN) camera_movement(0x02e9) beginloop(0x08) if_camera_animating(/*goto*/ 0x2d) goto_next(0x86) label(0x2d) if_controller_button_pressed(/*goto*/ 0x86) label(0x2d) endloop(0x08) label(0x86) if_controller_button_pressed(/*goto*/ 0x86) camera_movement(0x02ea) set_chr_chrflag(CHR_BOND, CHRCFLAG_UNPLAYABLE) set_chr_hiddenflag(CHR_BOND, CHRHFLAG_00020000) chr_do_animation(0x02eb, -1, -1, 0x06, 0x00, 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(0x02ec, -1, -1, 0x06, 0x00, CHR_ELVIS, 4) set_cutscene_weapon(CHR_BOND, WEAPON_NONE, WEAPON_NONE) yield set_cutscene_weapon(CHR_BOND, WEAPON_CALLISTONTG, WEAPON_NONE) beginloop(0x09) if_camera_animating(/*goto*/ 0x2d) goto_next(0x86) label(0x2d) if_controller_button_pressed(/*goto*/ 0x86) label(0x2d) endloop(0x09) label(0x86) unset_chr_chrflag(CHR_BOND, CHRCFLAG_UNPLAYABLE) unset_chr_chrflag(CHR_ELVIS, CHRCFLAG_UNPLAYABLE) if_controller_button_pressed(/*goto*/ 0x86) camera_movement(0x02ed) set_chr_chrflag(0x37, CHRCFLAG_UNPLAYABLE) unset_chr_chrflag(0x37, CHRCFLAG_HIDDEN) set_chr_hiddenflag(0x37, CHRHFLAG_00020000) chr_do_animation(0x02ee, -1, -1, 0x06, 0x00, 0x37, 4) set_chr_chrflag(0x38, CHRCFLAG_UNPLAYABLE) unset_chr_chrflag(0x38, CHRCFLAG_HIDDEN) set_chr_hiddenflag(0x38, CHRHFLAG_00020000) chr_do_animation(0x02ef, -1, -1, 0x06, 0x00, 0x38, 4) set_chr_chrflag(0x39, CHRCFLAG_UNPLAYABLE) unset_chr_chrflag(0x39, CHRCFLAG_HIDDEN) set_chr_hiddenflag(0x39, CHRHFLAG_00020000) chr_do_animation(0x02f0, -1, -1, 0x06, 0x00, 0x39, 4) beginloop(0x0b) if_camera_animating(/*goto*/ 0x2d) goto_next(0x86) label(0x2d) if_controller_button_pressed(/*goto*/ 0x86) label(0x2d) endloop(0x0b) label(0x86) unset_chr_chrflag(0x37, CHRCFLAG_UNPLAYABLE) unset_chr_chrflag(0x38, CHRCFLAG_UNPLAYABLE) unset_chr_chrflag(0x39, CHRCFLAG_UNPLAYABLE) if_controller_button_pressed(/*goto*/ 0x86) camera_movement(0x02f1) set_chr_chrflag(CHR_BOND, CHRCFLAG_UNPLAYABLE) set_chr_hiddenflag(CHR_BOND, CHRHFLAG_00020000) chr_do_animation(0x02f2, -1, -1, 0x06, 0x00, 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(0x02f3, -1, -1, 0x06, 0x00, CHR_ELVIS, 4) set_cutscene_weapon(CHR_BOND, WEAPON_NONE, WEAPON_NONE) yield set_cutscene_weapon(CHR_BOND, WEAPON_DEVASTATOR, WEAPON_NONE) beginloop(0x0c) if_camera_animating(/*goto*/ 0x2d) goto_next(0x86) label(0x2d) if_controller_button_pressed(/*goto*/ 0x86) label(0x2d) endloop(0x0c) label(0x86) unset_chr_chrflag(CHR_BOND, CHRCFLAG_UNPLAYABLE) unset_chr_chrflag(CHR_ELVIS, CHRCFLAG_UNPLAYABLE) if_controller_button_pressed(/*goto*/ 0x86) camera_movement(0x02f4) set_chr_chrflag(0x37, CHRCFLAG_UNPLAYABLE) unset_chr_chrflag(0x37, CHRCFLAG_HIDDEN) set_chr_hiddenflag(0x37, CHRHFLAG_00020000) chr_do_animation(0x02f5, -1, -1, 0x06, 0x00, 0x37, 4) set_chr_chrflag(0x38, CHRCFLAG_UNPLAYABLE) unset_chr_chrflag(0x38, CHRCFLAG_HIDDEN) set_chr_hiddenflag(0x38, CHRHFLAG_00020000) chr_do_animation(0x02f6, -1, -1, 0x06, 0x00, 0x38, 4) set_chr_chrflag(0x39, CHRCFLAG_UNPLAYABLE) unset_chr_chrflag(0x39, CHRCFLAG_HIDDEN) set_chr_hiddenflag(0x39, CHRHFLAG_00020000) chr_do_animation(0x02f7, -1, -1, 0x06, 0x00, 0x39, 4) set_chr_chrflag(0x3a, CHRCFLAG_UNPLAYABLE) unset_chr_chrflag(0x3a, CHRCFLAG_HIDDEN) set_chr_hiddenflag(0x3a, CHRHFLAG_00020000) chr_do_animation(0x02f8, -1, -1, 0x06, 0x00, 0x3a, 4) beginloop(0x0d) if_camera_animating(/*goto*/ 0x2d) goto_next(0x86) label(0x2d) if_controller_button_pressed(/*goto*/ 0x86) label(0x2d) endloop(0x0d) label(0x86) unset_chr_chrflag(0x37, CHRCFLAG_UNPLAYABLE) unset_chr_chrflag(0x38, CHRCFLAG_UNPLAYABLE) unset_chr_chrflag(0x39, CHRCFLAG_UNPLAYABLE) unset_chr_chrflag(0x3a, CHRCFLAG_UNPLAYABLE) if_controller_button_pressed(/*goto*/ 0x86) camera_movement(0x02f9) show_object(0x36) set_object_flag_bank1(0x36, OBJECTFLAG1_04000000) set_object_flag_bank2(0x36, OBJECTFLAG2_00000010) object_do_animation(0x02fa, 0x36, 0x01ff, 0xff) set_object_part_visible(0x36, FALSE) beginloop(0x0e) if_camera_animating(/*goto*/ 0x2d) goto_next(0x86) label(0x2d) if_controller_button_pressed(/*goto*/ 0x86) label(0x2d) endloop(0x0e) label(0x86) hide_object(0x36) if_controller_button_pressed(/*goto*/ 0x86) camera_movement(0x02fb) set_chr_chrflag(0x37, CHRCFLAG_UNPLAYABLE) unset_chr_chrflag(0x37, CHRCFLAG_HIDDEN) set_chr_hiddenflag(0x37, CHRHFLAG_00020000) chr_do_animation(0x02fc, -1, -1, 0x06, 0x00, 0x37, 4) set_chr_chrflag(0x38, CHRCFLAG_UNPLAYABLE) unset_chr_chrflag(0x38, CHRCFLAG_HIDDEN) set_chr_hiddenflag(0x38, CHRHFLAG_00020000) chr_do_animation(0x02fd, -1, -1, 0x06, 0x00, 0x38, 4) set_chr_chrflag(0x39, CHRCFLAG_UNPLAYABLE) unset_chr_chrflag(0x39, CHRCFLAG_HIDDEN) set_chr_hiddenflag(0x39, CHRHFLAG_00020000) chr_do_animation(0x02fe, -1, -1, 0x06, 0x00, 0x39, 4) set_chr_chrflag(0x3a, CHRCFLAG_UNPLAYABLE) unset_chr_chrflag(0x3a, CHRCFLAG_HIDDEN) set_chr_hiddenflag(0x3a, CHRHFLAG_00020000) chr_do_animation(0x02ff, -1, -1, 0x06, 0x00, 0x3a, 4) unset_chr_chrflag(CHR_KING2, CHRCFLAG_HIDDEN) set_chr_chrflag(CHR_KING2, CHRCFLAG_UNPLAYABLE) unset_chr_chrflag(CHR_KING2, CHRCFLAG_HIDDEN) set_chr_hiddenflag(CHR_KING2, CHRHFLAG_00020000) chr_do_animation(0x0300, -1, -1, 0x06, 0x00, CHR_KING2, 4) set_cutscene_weapon(CHR_BOND, WEAPON_NONE, WEAPON_NONE) yield set_cutscene_weapon(CHR_BOND, WEAPON_FALCON2_SCOPE, WEAPON_NONE) beginloop(0x0f) if_camera_animating(/*goto*/ 0x2d) goto_next(0x86) label(0x2d) if_controller_button_pressed(/*goto*/ 0x86) label(0x2d) endloop(0x0f) label(0x86) unset_chr_chrflag(0x37, CHRCFLAG_UNPLAYABLE) unset_chr_chrflag(0x38, CHRCFLAG_UNPLAYABLE) unset_chr_chrflag(0x39, CHRCFLAG_UNPLAYABLE) unset_chr_chrflag(0x3a, CHRCFLAG_UNPLAYABLE) unset_chr_chrflag(CHR_KING2, CHRCFLAG_UNPLAYABLE) camera_movement(0x0301) cmd0175(60) if_controller_button_pressed(/*goto*/ 0x86) show_object(0x36) set_object_flag_bank1(0x36, OBJECTFLAG1_04000000) set_object_flag_bank2(0x36, OBJECTFLAG2_00000010) object_do_animation(0x0302, 0x36, 0x04ff, 0xff) set_object_part_visible(0x36, FALSE) set_chr_chrflag(CHR_BOND, CHRCFLAG_UNPLAYABLE) set_chr_hiddenflag(CHR_BOND, CHRHFLAG_00020000) chr_do_animation(0x0303, -1, -1, 0x06, 0x00, CHR_BOND, 4) beginloop(0x10) if_camera_animating(/*goto*/ 0x2d) goto_next(0x86) label(0x2d) if_controller_button_pressed(/*goto*/ 0x86) label(0x2d) endloop(0x10) label(0x86) unset_stage_flag(STAGEFLAG_IN_INTRO) unset_chr_chrflag(CHR_BOND, CHRCFLAG_00080000) mute_channel(CHANNEL_7) label(0x06) unset_chr_chrflag(CHR_BOND, CHRCFLAG_UNPLAYABLE) set_chr_hiddenflag(CHR_BOND, CHRHFLAG_00020000) chr_do_animation(0x0303, -2, -1, 0x06, 0x00, CHR_BOND, 2) hide_object(0x36) remove_chr(0x37) remove_chr(0x38) remove_chr(0x39) remove_chr(0x3a) remove_chr(CHR_KING2) unset_chr_chrflag(CHR_KING1, CHRCFLAG_HIDDEN) set_ailist(CHR_KING1, FUNC_KING_WAITING) set_object_flag_bank1(0x2a, OBJECTFLAG1_04000000) set_object_flag_bank1(0x2b, OBJECTFLAG1_04000000) set_object_flag_bank1(0x2c, OBJECTFLAG1_04000000) set_object_flag_bank1(0x2d, OBJECTFLAG1_04000000) set_object_flag_bank1(0x2e, OBJECTFLAG1_04000000) unset_chr_chrflag(CHR_COOP, CHRCFLAG_HIDDEN) unset_chr_chrflag(CHR_ANTI, CHRCFLAG_HIDDEN) restart_default_music reset_ambience enter_firstperson set_ailist(CHR_SELF, GFUNC_IDLE) endlist }; u8 func0414_outro_from_menu[] = { set_ailist(CHR_ELVIS, GFUNC_IDLE) hide_object(OBJ_SPIKE_ML) hide_object(OBJ_SPIKE_MR) hide_object(OBJ_SPIKE_BL) hide_object(OBJ_SPIKE_BR) set_ailist(CHR_SELF, FUNC_OUTRO) endlist }; u8 func0414_outro[] = { if_chr_death_animation_finished(CHR_BOND, /*goto*/ 0x2d) set_target_chr(CHR_BOND) goto_next(0x06) label(0x2d) set_target_chr(CHR_COOP) label(0x06) set_chr_chrflag(CHR_TARGET, CHRCFLAG_KILLCOUNTABLE) camera_movement(0x044c) set_music_track(MUSIC_SKEDARRUINS_OUTRO) set_chr_chrflag(CHR_ANTI, CHRCFLAG_HIDDEN) set_chr_chrflag(0xf1, CHRCFLAG_HIDDEN) set_chr_chrflag(CHR_P1P2, CHRCFLAG_HIDDEN) unset_chr_chrflag(CHR_TARGET, CHRCFLAG_HIDDEN) set_ailist(CHR_TARGET, GFUNC_IDLE) remove_chr(0x05) remove_chr(0x06) remove_chr(0x07) remove_chr(0x08) remove_chr(0x09) remove_chr(0x0a) remove_chr(0x0b) remove_chr(0x0c) remove_chr(0x0d) remove_chr(0x0e) remove_chr(0x17) remove_chr(0x0f) remove_chr(0x10) remove_chr(0x0d) remove_chr(0x1c) remove_chr(0x18) remove_chr(0x19) remove_chr(0x1a) remove_chr(0x11) remove_chr(0x12) remove_chr(0x13) remove_chr(0x14) remove_chr(0x1b) remove_chr(0x15) remove_chr(0x16) remove_chr(0x1d) remove_chr(0x1e) remove_chr(0x1f) set_ailist(CHR_KING1, GFUNC_IDLE) set_chr_chrflag(CHR_KING1, CHRCFLAG_UNPLAYABLE) unset_chr_chrflag(CHR_KING1, CHRCFLAG_HIDDEN) set_chr_hiddenflag(CHR_KING1, CHRHFLAG_00020000) chr_do_animation(0x044d, -1, -1, 0x06, 0x00, CHR_KING1, 4) object_do_animation(0x044e, OBJ_SPIKE_T, 0x04ff, 0xff) set_stage_flag(STAGEFLAG_IN_OUTRO) show_nonessential_chrs(FALSE) beginloop(0x08) if_camera_animating(/*goto*/ 0x2d) goto_next(0x86) label(0x2d) if_controller_button_pressed(/*goto*/ 0x86) label(0x2d) endloop(0x08) label(0x86) camera_movement(0x044f) set_chr_chrflag(CHR_KING1, CHRCFLAG_UNPLAYABLE) unset_chr_chrflag(CHR_KING1, CHRCFLAG_HIDDEN) set_chr_hiddenflag(CHR_KING1, CHRHFLAG_00020000) chr_do_animation(0x0450, -1, -1, 0x06, 0x00, CHR_KING1, 4) set_chr_chrflag(CHR_TARGET, CHRCFLAG_UNPLAYABLE) unset_chr_chrflag(CHR_TARGET, CHRCFLAG_HIDDEN) set_chr_hiddenflag(CHR_TARGET, CHRHFLAG_00020000) chr_do_animation(0x0451, -1, -1, 0x06, 0x00, CHR_TARGET, 4) object_do_animation(0x0452, OBJ_SPIKE_T, 0x04ff, 0xff) show_object(0x37) set_object_flag_bank1(0x37, OBJECTFLAG1_04000000) set_object_flag_bank2(0x37, OBJECTFLAG2_00000010) object_do_animation(0x0453, 0x37, 0x04ff, 0xff) show_object(0x38) set_object_flag_bank1(0x38, OBJECTFLAG1_04000000) set_object_flag_bank2(0x38, OBJECTFLAG2_00000010) object_do_animation(0x0454, 0x38, 0x04ff, 0xff) show_object(0x39) set_object_flag_bank1(0x39, OBJECTFLAG1_04000000) set_object_flag_bank2(0x39, OBJECTFLAG2_00000010) object_do_animation(0x0455, 0x39, 0x04ff, 0xff) show_object(0x3a) set_object_flag_bank1(0x3a, OBJECTFLAG1_04000000) set_object_flag_bank2(0x3a, OBJECTFLAG2_00000010) object_do_animation(0x0456, 0x3a, 0x04ff, 0xff) show_object(0x3b) set_object_flag_bank1(0x3b, OBJECTFLAG1_04000000) set_object_flag_bank2(0x3b, OBJECTFLAG2_00000010) object_do_animation(0x0457, 0x3b, 0x04ff, 0xff) show_object(0x3c) set_object_flag_bank1(0x3c, OBJECTFLAG1_04000000) set_object_flag_bank2(0x3c, OBJECTFLAG2_00000010) object_do_animation(0x0458, 0x3c, 0x04ff, 0xff) beginloop(0x09) if_camera_animating(/*goto*/ 0x2d) goto_next(0x86) label(0x2d) if_controller_button_pressed(/*goto*/ 0x86) label(0x2d) endloop(0x09) label(0x86) hide_object(0x3c) camera_movement(0x02c7) set_chr_chrflag(CHR_TARGET, CHRCFLAG_UNPLAYABLE) unset_chr_chrflag(CHR_TARGET, CHRCFLAG_HIDDEN) set_chr_hiddenflag(CHR_TARGET, CHRHFLAG_00020000) chr_do_animation(0x02c8, -1, -1, 0x06, 0x00, CHR_TARGET, 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(0x02c9, -1, -1, 0x06, 0x00, CHR_ELVIS, 4) show_object(0x23) set_object_flag_bank1(0x23, OBJECTFLAG1_04000000) set_object_flag_bank2(0x23, OBJECTFLAG2_00000010) object_do_animation(0x02ca, 0x23, 0x04ff, 0xff) show_object(0x24) set_object_flag_bank1(0x24, OBJECTFLAG1_04000000) set_object_flag_bank2(0x24, OBJECTFLAG2_00000010) object_do_animation(0x02cb, 0x24, 0x04ff, 0xff) show_object(0x25) set_object_flag_bank1(0x25, OBJECTFLAG1_04000000) set_object_flag_bank2(0x25, OBJECTFLAG2_00000010) object_do_animation(0x02cc, 0x25, 0x04ff, 0xff) show_object(0x26) set_object_flag_bank1(0x26, OBJECTFLAG1_04000000) set_object_flag_bank2(0x26, OBJECTFLAG2_00000010) object_do_animation(0x02cd, 0x26, 0x04ff, 0xff) beginloop(0x0b) if_camera_animating(/*goto*/ 0x2d) goto_next(0x86) label(0x2d) if_controller_button_pressed(/*goto*/ 0x86) label(0x2d) endloop(0x0b) label(0x86) unset_chr_chrflag(CHR_BOND, CHRCFLAG_KILLCOUNTABLE) unset_chr_chrflag(CHR_COOP, CHRCFLAG_KILLCOUNTABLE) unset_stage_flag(STAGEFLAG_IN_OUTRO) hide_object(0x23) hide_object(0x24) hide_object(0x25) hide_object(0x26) label(0x06) restart_default_music reset_ambience end_level set_ailist(CHR_SELF, GFUNC_IDLE) endlist }; u8 func0413_hide[] = { set_self_chrflag(CHRCFLAG_INVINCIBLE_TO_GUNFIRE) set_self_chrflag(CHRCFLAG_HIDDEN) set_ailist(CHR_SELF, GFUNC_IDLE) endlist }; u8 func1015_msg_specialpillars[] = { beginloop(0x04) chr_toggle_p1p2(CHR_SELF) if_chr_in_room(CHR_P1P2, 0x00, 0x0026, /*goto*/ 0x91) if_chr_in_room(CHR_P1P2, 0x00, 0x0031, /*goto*/ 0x92) if_chr_in_room(CHR_P1P2, 0x00, 0x0035, /*goto*/ 0x93) if_chr_in_room(CHR_P1P2, 0x00, 0x002b, /*goto*/ 0x94) if_chr_in_room(CHR_P1P2, 0x00, 0x000e, /*goto*/ 0x95) endloop(0x04) label(0x91) if_object_in_room(0x01, 0x0026, /*goto*/ 0x2d) if_object_in_room(0x02, 0x0026, /*goto*/ 0x2d) if_object_in_room(0x03, 0x0026, /*goto*/ 0x2d) goto_first(0x04) label(0x92) if_object_in_room(0x01, 0x0031, /*goto*/ 0x2d) if_object_in_room(0x02, 0x0031, /*goto*/ 0x2d) if_object_in_room(0x03, 0x0031, /*goto*/ 0x2d) goto_first(0x04) label(0x93) if_object_in_room(0x01, 0x0037, /*goto*/ 0x2d) if_object_in_room(0x02, 0x0037, /*goto*/ 0x2d) if_object_in_room(0x03, 0x0037, /*goto*/ 0x2d) goto_first(0x04) label(0x94) if_object_in_room(0x01, 0x002b, /*goto*/ 0x2d) if_object_in_room(0x02, 0x002b, /*goto*/ 0x2d) if_object_in_room(0x03, 0x002b, /*goto*/ 0x2d) goto_first(0x04) label(0x95) if_object_in_room(0x01, 0x000d, /*goto*/ 0x2d) if_object_in_room(0x02, 0x000d, /*goto*/ 0x2d) if_object_in_room(0x03, 0x000d, /*goto*/ 0x2d) goto_first(0x04) label(0x2d) speak(CHR_P1P2, 0x421e, 0x73e0, CHANNEL_6, COLOR_09_BLUE) // "This seems to be one of the special pillars." set_ailist(CHR_SELF, GFUNC_IDLE) endlist }; u8 func1016_msg_powersmoreconstant[] = { restart_timer beginloop(0x04) chr_toggle_p1p2(CHR_SELF) if_chr_in_room(CHR_P1P2, 0x00, 0x0077, /*goto*/ 0x2d) endloop(0x04) label(0x2d) speak(CHR_P1P2, 0x421f, 0x73e1, CHANNEL_6, COLOR_09_BLUE) // "The power's more constant in this area. The Inner ..." set_ailist(CHR_SELF, GFUNC_IDLE) endlist }; u8 func1017_msg_skedararmy[] = { beginloop(0x04) chr_toggle_p1p2(CHR_SELF) if_chr_in_room(CHR_P1P2, 0x00, 0x0082, /*goto*/ 0x2d) endloop(0x04) label(0x2d) speak(CHR_P1P2, 0x4220, 0x73e2, CHANNEL_6, COLOR_09_BLUE) // "OH, NO!!! A Skedar army in suspended chr_do_animation!" set_ailist(CHR_SELF, GFUNC_IDLE) endlist }; u8 func1018_msg_cutoffthehead[] = { beginloop(0x04) chr_toggle_p1p2(CHR_SELF) if_chr_in_room(CHR_P1P2, 0x00, 0x0088, /*goto*/ 0x2d) endloop(0x04) label(0x2d) restart_timer beginloop(0x08) if_timer_gt(120, /*goto*/ 0x2d) endloop(0x08) label(0x2d) speak(CHR_P1P2, 0x4221, 0x73e3, CHANNEL_6, COLOR_09_BLUE) // "Okay, this is it... Cut off the head and the body ..." set_ailist(CHR_SELF, GFUNC_IDLE) endlist }; u8 func1019_blow_pillars[] = { // Wait until all pillars marked beginloop(0x04) if_stage_flag_eq(STAGEFLAG_PILLAR1_MARKED, TRUE, /*goto*/ 0x2d) reloop(0x04) label(0x2d) if_stage_flag_eq(STAGEFLAG_PILLAR2_MARKED, TRUE, /*goto*/ 0x2d) reloop(0x04) label(0x2d) if_stage_flag_eq(STAGEFLAG_PILLAR3_MARKED, TRUE, /*goto*/ 0x2d) endloop(0x04) // Wait 10 seconds label(0x2d) restart_timer beginloop(0x08) if_timer_gt(600, /*goto*/ 0x2d) endloop(0x08) // 1 label(0x2d) unset_object_flag_bank0(0x27, OBJECTFLAG0_00000100) unset_object_flag_bank0(0x28, OBJECTFLAG0_00000100) unset_object_flag_bank0(0x29, OBJECTFLAG0_00000100) unset_object_flag_bank0(OBJ_PILLAR1, OBJECTFLAG0_INVINCIBLE) unset_object_flag_bank0(0x27, OBJECTFLAG0_INVINCIBLE) destroy_object(0x27) yield yield yield yield yield restart_timer beginloop(0x09) if_timer_gt(180, /*goto*/ 0x2d) endloop(0x09) // 2 label(0x2d) unset_object_flag_bank0(OBJ_PILLAR2, OBJECTFLAG0_INVINCIBLE) unset_object_flag_bank0(0x28, OBJECTFLAG0_INVINCIBLE) destroy_object(0x28) yield yield yield yield yield restart_timer beginloop(0x0b) if_timer_gt(180, /*goto*/ 0x2d) endloop(0x0b) // 3 label(0x2d) unset_object_flag_bank0(OBJ_PILLAR3, OBJECTFLAG0_INVINCIBLE) unset_object_flag_bank0(0x29, OBJECTFLAG0_INVINCIBLE) destroy_object(0x29) yield yield yield yield yield set_ailist(CHR_SELF, GFUNC_IDLE) endlist }; u8 func1004_setup_pillars[] = { yield shuffle_ruins_pillars(OBJ_PILLAR1, OBJ_PILLAR2, OBJ_PILLAR3, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x27, 0x28, 0x29, 0x2f, 0x30, 0x31, 0x32, 0x33) yield set_object_flag_bank2(OBJ_PILLAR1, OBJECTFLAG2_RTRACKED_YELLOW) set_object_flag_bank2(OBJ_PILLAR2, OBJECTFLAG2_RTRACKED_YELLOW) set_object_flag_bank2(OBJ_PILLAR3, OBJECTFLAG2_RTRACKED_YELLOW) set_object_flag_bank0(OBJ_PILLAR1, OBJECTFLAG0_INVINCIBLE) set_object_flag_bank0(OBJ_PILLAR2, OBJECTFLAG0_INVINCIBLE) set_object_flag_bank0(OBJ_PILLAR3, OBJECTFLAG0_INVINCIBLE) set_ailist(CHR_SELF, GFUNC_IDLE) endlist }; u8 func101d_remove_pillar_shadow[] = { beginloop(0x04) // One of the pillars, but with a different tag if_object_in_good_condition(0x41, /*goto*/ 0x2d) // Destroyed - remove shadow label(0x06) hide_object(0x3d) hide_object(0x3e) unset_object_flag_bank1(0x4e, OBJECTFLAG1_INVISIBLE) unset_object_flag_bank1(0x4f, OBJECTFLAG1_INVISIBLE) set_ailist(CHR_SELF, GFUNC_IDLE) label(0x2d) endloop(0x04) // Unreachable set_ailist(CHR_SELF, GFUNC_IDLE) endlist }; u8 func0c00_intro_sounds[] = { label(0xda) if_chr_has_chrflag(CHR_BOND, CHRCFLAG_00080000, /*goto*/ 0xdb) yield goto_first(0xda) label(0xdb) unset_chr_chrflag(CHR_BOND, CHRCFLAG_00080000) #define wait_until_with_stageflag(time, loopid) \ beginloop(loopid) \ if_stage_flag_eq(STAGEFLAG_IN_INTRO, FALSE, /*goto*/ 0x86) \ if_controller_button_pressed(/*goto*/ 0x86) \ if_timer_gt(time, /*goto*/ 0x06) \ endloop(loopid) \ label(0x06) // @bug: Several loops in this function don't check the stageflag. // It happens so frequently that I'm using this macro to handle it. #define wait_until(time, loopid) \ beginloop(loopid) \ if_controller_button_pressed(/*goto*/ 0x86) \ if_timer_gt(time, /*goto*/ 0x06) \ endloop(loopid) \ label(0x06) label(0x2d) restart_timer wait_until_with_stageflag(100, 0x91) speak(CHR_BOND, 0x4222, 0x748d, CHANNEL_10, COLOR_04_ORANGE) // "This is the Skedar fanatics' most holy place. They..." wait_until_with_stageflag(770, 0xa4) play_sound(0x0433, CHANNEL_10) wait_until_with_stageflag(800, 0x92) speak(CHR_BOND, 0x4223, 0x748e, CHANNEL_10, COLOR_09_BLUE) // "So let me get this straight - it's holy. But there..." wait_until_with_stageflag(1018, 0xa5) play_sound(0x05a0, CHANNEL_10) wait_until_with_stageflag(1090, 0xa6) play_sound(0x05a1, CHANNEL_10) wait_until_with_stageflag(1148, 0xa7) play_sound(0x05a0, CHANNEL_10) wait_until_with_stageflag(1210, 0x93) speak(CHR_BOND, 0x4224, 0x748f, CHANNEL_10, COLOR_04_ORANGE) // "Yes. In all of the time that we Maians fought the ..." wait_until_with_stageflag(1230, 0xa8) play_sound(0x05a1, CHANNEL_10) wait_until(1270, 0xc5) play_sound(0x0531, CHANNEL_10) wait_until_with_stageflag(1274, 0xa9) play_sound(0x05a0, CHANNEL_10) wait_until_with_stageflag(1330, 0xaa) play_sound(0x05a1, CHANNEL_10) wait_until_with_stageflag(1375, 0xab) play_sound(0x05a0, CHANNEL_10) wait_until_with_stageflag(1435, 0xac) play_sound(0x05a1, CHANNEL_10) wait_until_with_stageflag(1490, 0xad) play_sound(0x05a0, CHANNEL_10) wait_until_with_stageflag(1600, 0xc7) play_sound(0x05c7, CHANNEL_10) wait_until_with_stageflag(1670, 0xc8) play_sound(0x05c6, CHANNEL_10) wait_until_with_stageflag(1710, 0xae) play_sound(0x05c5, CHANNEL_10) wait_until_with_stageflag(1840, 0xaf) play_sound(0x05cc, CHANNEL_10) wait_until_with_stageflag(2040, 0xb7) play_sound(0x05a0, CHANNEL_10) wait_until_with_stageflag(2065, 0xb0) play_sound(0x05a1, CHANNEL_10) wait_until_with_stageflag(2090, 0xb8) play_sound(0x05a0, CHANNEL_10) wait_until_with_stageflag(2115, 0xb1) play_sound(0x05a1, CHANNEL_10) wait_until(2050, 0xc6) // time is out of order play_sound(0x0530, CHANNEL_10) wait_until_with_stageflag(2140, 0xb9) play_sound(0x05a0, CHANNEL_10) wait_until_with_stageflag(2180, 0xb2) play_sound(0x05a1, CHANNEL_10) wait_until_with_stageflag(2220, 0xb3) play_sound(0x05a0, CHANNEL_10) wait_until_with_stageflag(2250, 0xb4) play_sound(0x05a0, CHANNEL_10) wait_until_with_stageflag(2290, 0xb5) play_sound(0x05a0, CHANNEL_10) wait_until_with_stageflag(2340, 0xb6) play_sound(0x05a0, CHANNEL_10) wait_until_with_stageflag(2650, 0x94) speak(CHR_BOND, 0x4225, 0x7490, CHANNEL_10, COLOR_09_BLUE) // "Then we have to be certain that no fanatics surviv..." wait_until_with_stageflag(3250, 0x95) speak(CHR_BOND, 0x4226, 0x7491, CHANNEL_10, COLOR_04_ORANGE) // "If you're caught on the ground when the fleet gets..." wait_until(3330, 0xc3) play_sound(0x0530, CHANNEL_10) wait_until(3535, 0xc4) play_sound(0x0531, CHANNEL_10) wait_until_with_stageflag(3600, 0x96) mute_channel(CHANNEL_7) speak(CHR_BOND, 0x4227, 0x7492, CHANNEL_10, COLOR_09_BLUE) // "That's a mistake I don't intend to make." wait_until(4040, 0xc0) play_sound(0x05a0, CHANNEL_10) wait_until(4158, 0xc1) play_sound(0x05a1, CHANNEL_10) wait_until(4236, 0xc2) play_sound(0x0529, CHANNEL_10) wait_until(4580, 0xbc) play_sound(0x01d8, CHANNEL_10) wait_until(4610, 0xbd) play_sound(0x01da, CHANNEL_10) wait_until(4630, 0xbe) play_sound(0x80f6, CHANNEL_10) wait_until(4678, 0xbf) play_sound(0x01db, CHANNEL_10) wait_until_with_stageflag(4675, 0x97) play_sound(0x0162, CHANNEL_10) wait_until_with_stageflag(4750, 0xbb) play_sound(0x0161, CHANNEL_10) mute_channel(CHANNEL_0) mute_channel(CHANNEL_1) mute_channel(CHANNEL_2) mute_channel(CHANNEL_3) mute_channel(CHANNEL_4) mute_channel(CHANNEL_5) mute_channel(CHANNEL_6) mute_channel(CHANNEL_7) label(0x86) mute_channel(CHANNEL_10) goto_first(0xda) endlist }; u8 func0414_outro_sounds[] = { // The kill countable flag is probably just used to track which player // destroyed the final spike so they can be shown in the outro. label(0xda) if_chr_has_chrflag(CHR_BOND, CHRCFLAG_KILLCOUNTABLE, /*goto*/ 0xdb) if_chr_has_chrflag(CHR_COOP, CHRCFLAG_KILLCOUNTABLE, /*goto*/ 0xdc) yield goto_first(0xda) label(0xdb) set_target_chr(CHR_BOND) goto_next(0x2d) label(0xdc) set_target_chr(CHR_COOP) goto_next(0x2d) #define outro_wait_until_with_stageflag(time, loopid) \ beginloop(loopid) \ if_stage_flag_eq(STAGEFLAG_IN_OUTRO, FALSE, /*goto*/ 0x86) \ if_controller_button_pressed(/*goto*/ 0x86) \ if_timer_gt(time, /*goto*/ 0x06) \ endloop(loopid) \ label(0x06) #define outro_wait_until(time, loopid) \ beginloop(loopid) \ if_controller_button_pressed(/*goto*/ 0x86) \ if_timer_gt(time, /*goto*/ 0x06) \ endloop(loopid) \ label(0x06) label(0x2d) unset_chr_chrflag(CHR_BOND, CHRCFLAG_KILLCOUNTABLE) unset_chr_chrflag(CHR_COOP, CHRCFLAG_KILLCOUNTABLE) restart_timer outro_wait_until_with_stageflag(40, 0xd5) play_sound(0x0067, CHANNEL_10) outro_wait_until_with_stageflag(80, 0x9e) play_sound(0x0067, CHANNEL_10) outro_wait_until_with_stageflag(120, 0x9f) play_sound(0x0067, CHANNEL_10) outro_wait_until_with_stageflag(160, 0xa0) play_sound(0x05c0, CHANNEL_10) outro_wait_until_with_stageflag(180, 0xa1) play_sound(0x052d, CHANNEL_10) outro_wait_until_with_stageflag(230, 0x9b) speak(CHR_BOND, 0x4228, 0x74de, CHANNEL_10, COLOR_09_BLUE) // "Yesss..." outro_wait_until_with_stageflag(470, 0xa9) play_sound(0x8099, CHANNEL_10) outro_wait_until_with_stageflag(494, 0xa2) play_sound(0x8098, CHANNEL_10) play_sound(0x00f6, CHANNEL_10) outro_wait_until_with_stageflag(520, 0xa8) play_sound(0x809b, CHANNEL_10) outro_wait_until_with_stageflag(540, 0xa3) play_sound(0x80a2, CHANNEL_10) play_sound(0x00f6, CHANNEL_10) outro_wait_until_with_stageflag(550, 0xd6) play_sound(0x77c8, CHANNEL_10) outro_wait_until_with_stageflag(600, 0xaa) play_sound(0x80a3, CHANNEL_10) outro_wait_until_with_stageflag(616, 0xa4) play_sound(0x809f, CHANNEL_10) play_sound(0x00f6, CHANNEL_10) outro_wait_until_with_stageflag(700, 0xa5) play_sound(0x80a1, CHANNEL_10) play_sound(0x00f6, CHANNEL_10) outro_wait_until_with_stageflag(760, 0xcd) play_sound(0x80a3, CHANNEL_10) outro_wait_until(780, 0xae) fade_to_color(0x000000ff, 80) outro_wait_until_with_stageflag(790, 0xa6) play_sound(0x809c, CHANNEL_10) play_sound(0x00f6, CHANNEL_10) outro_wait_until_with_stageflag(820, 0xcc) play_sound(0x80a2, CHANNEL_10) outro_wait_until_with_stageflag(860, 0xa7) play_sound(0x80a3, CHANNEL_10) outro_wait_until_with_stageflag(880, 0xce) play_sound(0x77da, CHANNEL_10) outro_wait_until(920, 0xaf) fade_to_color(0xffffffff, 0) fade_to_color(0x00000000, 120) set_cutscene_weapon(CHR_TARGET, WEAPON_NONE, WEAPON_NONE) yield set_cutscene_weapon(CHR_TARGET, WEAPON_NONE, WEAPON_NONE) set_cutscene_weapon(CHR_ELVIS, WEAPON_NONE, WEAPON_NONE) yield set_cutscene_weapon(CHR_ELVIS, WEAPON_NONE, WEAPON_NONE) outro_wait_until_with_stageflag(1680, 0x91) mute_channel(CHANNEL_10) speak(CHR_BOND, 0x4229, 0x7493, CHANNEL_10, COLOR_04_ORANGE) // "Joanna! Joanna!" outro_wait_until_with_stageflag(2020, 0x9c) speak(CHR_BOND, 0x4236, 0x7755, CHANNEL_10, COLOR_04_ORANGE) // "Where are you? Are you hurt?" outro_wait_until_with_stageflag(2206, 0x92) speak(CHR_BOND, 0x422a, 0x7494, CHANNEL_10, COLOR_09_BLUE) // "Elvis! Elvis! Over here." outro_wait_until_with_stageflag(2625, 0x93) speak(CHR_BOND, 0x422b, 0x7495, CHANNEL_10, COLOR_04_ORANGE) // "No problem. Grab my arms - we'll get you out in no..." outro_wait_until_with_stageflag(2810, 0xd4) play_sound(0x0531, CHANNEL_10) outro_wait_until_with_stageflag(2895, 0x94) speak(CHR_BOND, 0x422c, 0x7496, CHANNEL_10, COLOR_09_BLUE) // "No, quick! Give me your gun!" outro_wait_until_with_stageflag(3160, 0xca) set_cutscene_weapon(CHR_ELVIS, WEAPON_NONE, WEAPON_NONE) yield set_cutscene_weapon(CHR_ELVIS, WEAPON_PHOENIX, WEAPON_NONE) outro_wait_until_with_stageflag(3280, 0xcb) set_cutscene_weapon(CHR_TARGET, WEAPON_PHOENIX, WEAPON_NONE) set_cutscene_weapon(CHR_ELVIS, WEAPON_NONE, WEAPON_NONE) outro_wait_until_with_stageflag(3290, 0x95) speak(CHR_BOND, 0x422d, 0x7497, CHANNEL_10, COLOR_09_BLUE) // "Will! You! Just! Let! Go!" outro_wait_until_with_stageflag(3420, 0xcf) set_chr_shooting_in_cutscene(CHR_TARGET, TRUE) yield yield set_chr_shooting_in_cutscene(CHR_TARGET, FALSE) play_sound(0x052e, CHANNEL_10) outro_wait_until_with_stageflag(3445, 0xd0) set_chr_shooting_in_cutscene(CHR_TARGET, TRUE) yield yield set_chr_shooting_in_cutscene(CHR_TARGET, FALSE) outro_wait_until_with_stageflag(3470, 0xd1) set_chr_shooting_in_cutscene(CHR_TARGET, TRUE) yield yield set_chr_shooting_in_cutscene(CHR_TARGET, FALSE) outro_wait_until_with_stageflag(3495, 0xd2) set_chr_shooting_in_cutscene(CHR_TARGET, TRUE) yield yield set_chr_shooting_in_cutscene(CHR_TARGET, FALSE) outro_wait_until_with_stageflag(3520, 0xd3) set_chr_shooting_in_cutscene(CHR_TARGET, TRUE) yield yield set_chr_shooting_in_cutscene(CHR_TARGET, FALSE) play_sound_from_object2(CHANNEL_6, 0x25, 0x052d, 0x00, 0x00) outro_wait_until_with_stageflag(3600, 0xd7) play_sound(0x77c9, CHANNEL_10) outro_wait_until_with_stageflag(3880, 0xd8) play_sound(0x0427, CHANNEL_10) outro_wait_until_with_stageflag(3990, 0x96) speak(CHR_BOND, 0x422e, 0x7498, CHANNEL_10, COLOR_04_ORANGE) // "I managed to get the fleet to stop the bombardment..." outro_wait_until_with_stageflag(4425, 0x97) speak(CHR_BOND, 0x422f, 0x7499, CHANNEL_10, COLOR_09_BLUE) // "I'd have got out in time if that one hadn't grabbe..." outro_wait_until_with_stageflag(4650, 0x98) speak(CHR_BOND, 0x4230, 0x749a, CHANNEL_10, COLOR_04_ORANGE) // "Of course, Joanna, of course." outro_wait_until_with_stageflag(4825, 0x99) speak(CHR_BOND, 0x4231, 0x749b, CHANNEL_10, COLOR_09_BLUE) // "No, I would have." outro_wait_until_with_stageflag(4960, 0x9a) speak(CHR_BOND, 0x4232, 0x749c, CHANNEL_10, COLOR_04_ORANGE) // "I believe you." outro_wait_until_with_stageflag(5560, 0x9d) play_sound(0x0161, CHANNEL_7) label(0x86) mute_channel(CHANNEL_10) mute_channel(CHANNEL_7) mute_channel(CHANNEL_6) goto_first(0xda) endlist }; u8 func1020_show_phoenix[] = { // Show Phoenix once pillars destroyed beginloop(0x04) if_object_in_good_condition(0x2a, /*goto*/ 0x2d) if_object_in_good_condition(0x2b, /*goto*/ 0x2d) if_object_in_good_condition(0x2c, /*goto*/ 0x2d) if_object_in_good_condition(0x2d, /*goto*/ 0x2d) if_object_in_good_condition(0x2e, /*goto*/ 0x2d) unset_object_flag_bank0(OBJ_PHOENIX1, OBJECTFLAG0_00100000) unset_object_flag_bank1(OBJ_PHOENIX1, OBJECTFLAG1_INVISIBLE) unset_object_flag_bank0(OBJ_PHOENIX2, OBJECTFLAG0_00100000) unset_object_flag_bank1(OBJ_PHOENIX2, OBJECTFLAG1_INVISIBLE) set_ailist(CHR_SELF, GFUNC_IDLE) label(0x2d) endloop(0x04) endlist }; /** * Handle the mine hidden inside the first ravine debris. */ u8 func1021_handle_mine[] = { yield if_difficulty_lt(DIFF_SA, /*goto*/ 0x2d) // SA and PA hide_object(OBJ_REMOTEMINE) // A label(0x2d) destroy_object(OBJ_REMOTEMINE) set_ailist(CHR_SELF, GFUNC_IDLE) endlist }; u8 func1022_armyroom_exitdoors[] = { yield set_object_flag_bank1(0x45, OBJECTFLAG1_08000000) set_object_flag_bank1(0x46, OBJECTFLAG1_10000000) if_difficulty_gt(DIFF_SA, /*goto*/ 0x2d) // A and SA beginloop(0x91) if_objective_complete(0, /*goto*/ 0x06) endloop(0x91) label(0x06) unset_object_flag_bank1(0x45, OBJECTFLAG1_08000000) unset_object_flag_bank1(0x46, OBJECTFLAG1_10000000) // All difficulties label(0x2d) set_ailist(CHR_SELF, GFUNC_IDLE) endlist }; u8 unregistered_function1[] = { restart_timer beginloop(0x04) if_timer_gt(300, /*goto*/ 0x2d) endloop(0x04) label(0x2d) chr_drop_weapon(CHR_BOND) message(CHR_BOND, 0x421a) // "Target Amplifier placed incorrectly." set_ailist(CHR_SELF, GFUNC_IDLE) endlist }; /** * Used to print whether the puzzle rock is pushable or not. */ u8 unregistered_function2[] = { beginloop(0x04) if_object_flag_bank2(OBJ_PUZZLEROCK, OBJECTFLAG2_PUSHABLE, /*goto*/ 0x2d) dprint 'C','A','N','T',' ','P','U','S','H','\n',0, reloop(0x04) label(0x2d) dprint 'C','A','N',' ','P','U','S','H','\n',0, endloop(0x04) endlist }; u8 func1024_check_grenades_wasted[] = { beginloop(0x04) if_ammo_quantity_lt(CHR_BOND, AMMOTYPE_DEVASTATOR, 1, /*goto*/ 0x2d) reloop(0x04) label(0x2d) if_chr_death_animation_finished(CHR_COOP, /*goto*/ 0x2d) if_ammo_quantity_lt(CHR_COOP, AMMOTYPE_DEVASTATOR, 1, /*goto*/ 0x2d) endloop(0x04) label(0x2d) restart_timer beginloop(0x91) if_timer_gt(240, /*goto*/ 0x2d) endloop(0x91) label(0x2d) if_object_in_good_condition(0x4d, /*goto*/ 0x06) set_ailist(CHR_SELF, GFUNC_IDLE) label(0x06) label(0x2d) restart_timer beginloop(0x08) if_timer_gt(60, /*goto*/ 0x09) endloop(0x08) beginloop(0x09) if_object_in_good_condition(0x4d, /*goto*/ 0x2d) // Blown up using other means (eg. Phoenix or all guns cheat) unset_stage_flag(STAGEFLAG_GRENADES_WASTED) message(CHR_BOND, 0x4235) // "Alternative entrance to Shrine created." set_ailist(CHR_SELF, GFUNC_IDLE) label(0x2d) if_stage_flag_eq(STAGEFLAG_GRENADES_WASTED, TRUE, /*goto*/ 0x2d) message(CHR_BOND, 0x4234) // "Grenade ammo used up - can't enter Shrine." set_stage_flag(STAGEFLAG_GRENADES_WASTED) label(0x2d) endloop(0x09) endlist }; u8 func1023_setup_rtracker[] = { yield set_object_flag_bank2(OBJ_PHOENIX1, OBJECTFLAG2_RTRACKED_BLUE) set_object_flag_bank2(OBJ_PHOENIX2, OBJECTFLAG2_RTRACKED_BLUE) set_ailist(CHR_SELF, GFUNC_IDLE) endlist }; u8 func1427_setup_lighting[] = { yield misc_command(0x0004, 0x05, 0x01) misc_command(0x0004, 0x06, 0x01) misc_command(0x0005, 0x05, 0x01) misc_command(0x0005, 0x06, 0x01) misc_command(0x0006, 0x05, 0x01) misc_command(0x0006, 0x06, 0x01) misc_command(0x0007, 0x05, 0x01) misc_command(0x0007, 0x06, 0x01) misc_command(0x0008, 0x05, 0x01) misc_command(0x0008, 0x06, 0x01) misc_command(0x0009, 0x05, 0x01) misc_command(0x0009, 0x06, 0x01) misc_command(0x000a, 0x05, 0x01) misc_command(0x000a, 0x06, 0x01) misc_command(0x000b, 0x05, 0x01) misc_command(0x000b, 0x06, 0x01) misc_command(0x000c, 0x05, 0x01) misc_command(0x000c, 0x06, 0x01) misc_command(0x000d, 0x05, 0x01) misc_command(0x000d, 0x06, 0x01) misc_command(0x000e, 0x05, 0x01) misc_command(0x000e, 0x06, 0x01) misc_command(0x000f, 0x05, 0x01) misc_command(0x000f, 0x06, 0x01) misc_command(0x0010, 0x05, 0x01) misc_command(0x0010, 0x06, 0x01) misc_command(0x0011, 0x05, 0x01) misc_command(0x0011, 0x06, 0x01) misc_command(0x0012, 0x05, 0x01) misc_command(0x0012, 0x06, 0x01) misc_command(0x0013, 0x05, 0x01) misc_command(0x0013, 0x06, 0x01) misc_command(0x0014, 0x05, 0x01) misc_command(0x0014, 0x06, 0x01) misc_command(0x0015, 0x05, 0x01) misc_command(0x0015, 0x06, 0x01) misc_command(0x0016, 0x05, 0x01) misc_command(0x0016, 0x06, 0x01) misc_command(0x0017, 0x05, 0x01) misc_command(0x0017, 0x06, 0x01) misc_command(0x0018, 0x05, 0x01) misc_command(0x0018, 0x06, 0x01) misc_command(0x0019, 0x05, 0x01) misc_command(0x0019, 0x06, 0x01) misc_command(0x001a, 0x05, 0x01) misc_command(0x001b, 0x05, 0x01) misc_command(0x001b, 0x06, 0x01) misc_command(0x001d, 0x05, 0x01) misc_command(0x001d, 0x06, 0x01) misc_command(0x001e, 0x05, 0x01) misc_command(0x001e, 0x06, 0x01) misc_command(0x001f, 0x05, 0x01) misc_command(0x001f, 0x06, 0x01) misc_command(0x0020, 0x05, 0x01) misc_command(0x0020, 0x06, 0x01) misc_command(0x0021, 0x05, 0x01) misc_command(0x0021, 0x06, 0x01) misc_command(0x0022, 0x05, 0x01) misc_command(0x0022, 0x06, 0x01) misc_command(0x0023, 0x05, 0x01) misc_command(0x0023, 0x06, 0x01) misc_command(0x0024, 0x05, 0x01) misc_command(0x0024, 0x06, 0x01) misc_command(0x0025, 0x05, 0x01) misc_command(0x0025, 0x06, 0x01) misc_command(0x0026, 0x05, 0x01) misc_command(0x0026, 0x06, 0x01) misc_command(0x0027, 0x05, 0x01) misc_command(0x0027, 0x06, 0x01) misc_command(0x0028, 0x05, 0x01) misc_command(0x0028, 0x06, 0x01) misc_command(0x0029, 0x05, 0x01) misc_command(0x0029, 0x06, 0x01) misc_command(0x002a, 0x05, 0x01) misc_command(0x002a, 0x06, 0x01) misc_command(0x002b, 0x05, 0x01) misc_command(0x002b, 0x06, 0x01) misc_command(0x002c, 0x05, 0x01) misc_command(0x002c, 0x06, 0x01) misc_command(0x002d, 0x05, 0x01) misc_command(0x002d, 0x06, 0x01) misc_command(0x002e, 0x05, 0x01) misc_command(0x002e, 0x06, 0x01) misc_command(0x002f, 0x05, 0x01) misc_command(0x002f, 0x06, 0x01) misc_command(0x0030, 0x05, 0x01) misc_command(0x0030, 0x06, 0x01) misc_command(0x0031, 0x05, 0x01) misc_command(0x0031, 0x06, 0x01) misc_command(0x003b, 0x05, 0x01) misc_command(0x003b, 0x06, 0x01) misc_command(0x003c, 0x05, 0x01) misc_command(0x003c, 0x06, 0x01) misc_command(0x003d, 0x05, 0x01) misc_command(0x003d, 0x06, 0x01) misc_command(0x003e, 0x05, 0x01) misc_command(0x003e, 0x06, 0x01) misc_command(0x003f, 0x05, 0x01) misc_command(0x003f, 0x06, 0x01) misc_command(0x0040, 0x05, 0x01) misc_command(0x0040, 0x06, 0x01) misc_command(0x0041, 0x05, 0x01) misc_command(0x0041, 0x06, 0x01) misc_command(0x0042, 0x05, 0x01) misc_command(0x0042, 0x06, 0x01) misc_command(0x0043, 0x05, 0x01) misc_command(0x0043, 0x06, 0x01) misc_command(0x0044, 0x05, 0x01) misc_command(0x0044, 0x06, 0x01) misc_command(0x0045, 0x05, 0x01) misc_command(0x0046, 0x05, 0x01) misc_command(0x0047, 0x05, 0x01) misc_command(0x0047, 0x06, 0x01) misc_command(0x0049, 0x05, 0x01) misc_command(0x0049, 0x06, 0x01) misc_command(0x004a, 0x05, 0x01) misc_command(0x004a, 0x06, 0x01) misc_command(0x004b, 0x06, 0x01) misc_command(0x0048, 0x06, 0x01) misc_command(0x004f, 0x05, 0x01) misc_command(0x0058, 0x05, 0x01) misc_command(0x0059, 0x05, 0x01) misc_command(0x0059, 0x06, 0x01) misc_command(0x0032, 0x05, 0x01) misc_command(0x0034, 0x05, 0x01) misc_command(0x0035, 0x05, 0x01) misc_command(0x0036, 0x05, 0x01) misc_command(0x0037, 0x05, 0x01) misc_command(0x0038, 0x05, 0x01) misc_command(0x0032, 0x06, 0x01) misc_command(0x0034, 0x06, 0x01) misc_command(0x0035, 0x06, 0x01) misc_command(0x0036, 0x06, 0x01) misc_command(0x0037, 0x06, 0x01) misc_command(0x0038, 0x06, 0x01) set_ailist(CHR_SELF, GFUNC_IDLE) endlist }; u8 func1025_unlock_doors_for_buddy[] = { yield if_chr_death_animation_finished(CHR_COOP, /*goto*/ 0x2d) // Co-op mode // Wait for pillars objective beginloop(0x91) if_objective_complete(0, /*goto*/ 0x2d) reloop(0x91) // Unlock doors repeatedly label(0x2d) unlock_door(0x0d, 0x02) unlock_door(0x0e, 0x02) unlock_door(0x0f, 0x02) unlock_door(0x10, 0x02) unlock_door(0x45, 0x80) unlock_door(0x46, 0x80) endloop(0x91) // Buddy doesn't exist label(0x2d) set_ailist(CHR_SELF, GFUNC_IDLE) endlist }; u8 func1426_setup_portals[] = { yield set_portal_flag(0x0072, 0x04) set_ailist(CHR_SELF, GFUNC_IDLE) endlist }; u8 func1028_buddybridge[] = { yield // Wait for camera to finish beginloop(0x59) if_camera_animating(/*goto*/ 0x2d) goto_next(0x2e) label(0x2d) endloop(0x59) // Wait 5 seconds label(0x2e) restart_timer beginloop(0x04) if_timer_gt(300, /*goto*/ 0x2d) endloop(0x04) // This flag is set by global ailists label(0x2d) if_stage_flag_eq(STAGEFLAG_AI_BUDDY_EXISTS, FALSE, /*goto*/ 0x2d) set_ailist(CHR_SELF, GFUNC_IDLE) // Flag not set - so this is solo mode // Remove the bridge and barricade over the first ravine label(0x2d) hide_object(OBJ_BUDDYBRIDGE) hide_object(OBJ_BUDDYBARRICADE) set_ailist(CHR_SELF, GFUNC_IDLE) endlist }; struct ailist ailists[] = { { func0401_init_unarmed_skedar, 0x0401 }, { func0402_unarmed_skedar, 0x0402 }, { func0403_init_miniskedar, 0x0403 }, { func0404_miniskedar, 0x0404 }, { func0405_puzzleroom_miniskedar_waiting, 0x0405 }, { func0404_miniskedar_spawner, 0x0406 }, { func0407_init_cloaked_skedar, 0x0407 }, { func0408_cloaked_skedar, 0x0408 }, { func0409_reaper_slayer_skedar, 0x0409 }, { func040a_init_reaper_slayer_skedar, 0x040a }, { func040b_mauler_skedar, 0x040b }, { func040c_king_waiting, 0x040c }, { func040d_king_combat, 0x040d }, { func040e_king_skedar_spawner, 0x040e }, { func040f_update_spike_stageflags, 0x040f }, { func0410_init_king_skedar_clone, 0x0410 }, { func0411_king_miniskedar_spawner, 0x0411 }, { func0412_init_king_miniskedar_clone, 0x0412 }, { func0413_hide, 0x0413 }, { func0414_outro, 0x0414 }, { func0c00_intro, 0x0c00 }, { func0414_outro_from_menu, 0x0c01 }, { func1400_setup_counterop, 0x1400 }, { func1001_objectives_failed_msg, 0x1001 }, { func0c00_intro, 0x1002 }, { func1003_remove_random_skedar, 0x1003 }, { func1004_setup_pillars, 0x1004 }, { func1005_5e0c, 0x1005 }, { func1006_bridge, 0x1006 }, { func1007_bug_throws_bond, 0x1007 }, { func1008_lock_door, 0x1008 }, { func1009_altar, 0x1009 }, { func100a_army_room, 0x100a }, { func100b_check_sanctum_accessed, 0x100b }, { func100c_check_army_defeated, 0x100c }, { func100e_wake_skedar_army, 0x100e }, { func100f_spikes_vulnerability, 0x100f }, { func1010_spike_ml, 0x1010 }, { func1011_spike_mr, 0x1011 }, { func1012_spike_bl, 0x1012 }, { func1013_spike_br, 0x1013 }, { func1014_spike_top, 0x1014 }, { func1015_msg_specialpillars, 0x1015 }, { func1016_msg_powersmoreconstant, 0x1016 }, { func1017_msg_skedararmy, 0x1017 }, { func1018_msg_cutoffthehead, 0x1018 }, { func1019_blow_pillars, 0x1019 }, { func101a_pointless, 0x101a }, { func101b_bug_throws_coop, 0x101b }, { func101c_setup_corridor_lighting, 0x101c }, { func101d_remove_pillar_shadow, 0x101d }, { func0c00_intro_sounds, 0x141e }, { func0414_outro_sounds, 0x141f }, { func1020_show_phoenix, 0x1020 }, { func1021_handle_mine, 0x1021 }, { func1022_armyroom_exitdoors, 0x1022 }, { func1023_setup_rtracker, 0x1023 }, { func1024_check_grenades_wasted, 0x1024 }, { func1025_unlock_doors_for_buddy, 0x1025 }, { func1426_setup_portals, 0x1426 }, { func1427_setup_lighting, 0x1427 }, { func1028_buddybridge, 0x1028 }, { NULL, 0 }, }; struct path paths[] = { { NULL, 0, 0 }, };