perfect_dark/src/setup/setupstat.c

1417 lines
72 KiB
C

//
// WAR!
//
#include "../include/setup.h"
// Characters
#define CHR_MAIAN_LEADER 0x3d
#define CHR_MAIAN_TEMPLATE 0x3e
#define CHR_SKEDAR_TEMPLATE 0x3f
#define CHR_KING1 0x40
#define CHR_KING2 0x41
#define CHR_KING3 0x42
#define CHR_BLONDE 0x43
#define CHR_MAIAN1 0x44
#define CHR_MAIAN2 0x45
#define CHR_MAIAN3 0x46
#define CHR_MAIAN4 0x47
#define CHR_MAIAN5 0x48
// Objects
#define OBJ_BRIDGE 0x05
#define OBJ_MINE1 0x2f
#define OBJ_MINE2 0x30
#define OBJ_MINE3 0x31
#define OBJ_MINE4 0x32
#define OBJ_MINE5 0x33
#define OBJ_MINE6 0x40
// Stage flags
#define STAGEFLAG_LEADER_DEAD 0x00000100
#define STAGEFLAG_KING1_DEAD 0x00000200
#define STAGEFLAG_KING2_DEAD 0x00000400
#define STAGEFLAG_KING3_DEAD 0x00000800
// Functions
#define FUNC_DEFEND 0x0401
#define FUNC_INIT_KING 0x0402
#define FUNC_INIT_LEADER 0x0403
#define FUNC_MAIAN 0x0404
#define FUNC_INIT_MAIAN 0x0405
#define FUNC_SKEDAR 0x0406
#define FUNC_KING1_SKEDAR 0x0407
#define FUNC_KING2_SKEDAR 0x0408
#define FUNC_KING3_SKEDAR 0x0409
#define FUNC_INTRO 0x040a
#define FUNC_OUTRO 0x040b
#define FUNC_HIDE 0x040c
#define FUNC_BLOW_MINES 0x040d
// Other
#define GROUP_MAIANS 1
#define GROUP_KING1_SKEDAR 2
#define GROUP_KING2_SKEDAR 3
#define GROUP_KING3_SKEDAR 4
u8 intro[];
u8 props[];
struct aipaths paths[];
struct ailists functions[];
void *setup[] = {
NULL,
NULL,
NULL,
intro,
props,
paths,
functions,
NULL,
};
u8 props[] = {
briefing(0, 0x4601)
briefing(1, 0x4600)
briefing(2, 0x4602)
briefing(3, 0x4603)
beginobjective(0, 0x4604, (DIFFBIT_A | DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD)) // "Kill Skedar King."
complete_flags(STAGEFLAG_KING1_DEAD)
fail_flags(STAGEFLAG_LEADER_DEAD)
endobjective
beginobjective(1, 0x4605, (DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD)) // "Kill Skedar King 2."
complete_flags(STAGEFLAG_KING2_DEAD)
endobjective
beginobjective(2, 0x4606, (DIFFBIT_PA | DIFFBIT_PD)) // "Kill Skedar King 3."
complete_flags(STAGEFLAG_KING3_DEAD)
endobjective
chr(0x00000000, CHR_MAIAN_LEADER, 0x004f, BODY_ELVIS1, HEAD_MAIAN_S, FUNC_INIT_LEADER, 0x004e, -1, 1000, 200, 0x00002000, 0xc0304000, TEAM_ALLY, SQUADRON_01, -1, 0, 0x00000000)
weapon(0x0100, MODEL_CHRMAIANSMG, 0x003d, 0x10004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CALLISTONTG, 0x00ffffff, 0x00000000)
chr(0x00000000, CHR_MAIAN_TEMPLATE, 0x0045, BODY_CISOLDIER, HEAD_RANDOM, FUNC_HIDE, -1, -1, 200, 100, 0x00012000, 0xc0300000, TEAM_ALLY, SQUADRON_01, -1, 0, 0x00000000)
weapon(0x0100, MODEL_CHRAR34, 0x003e, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_AR34, 0x00ffffff, 0x00000000)
chr(0x00000000, CHR_KING1, 0x007c, BODY_SKEDARKING, HEAD_RANDOM, FUNC_INIT_KING, 0x007c, -1, 1000, 200, 0x00002000, 0xc0304008, TEAM_ENEMY, SQUADRON_02, -1, 0, 0x00000000)
weapon(0x0100, MODEL_CHRSKMINIGUN, 0x0040, 0x10004000, 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(0x000000c0, CHR_KING2, 0x0110, BODY_SKEDARKING, HEAD_RANDOM, FUNC_INIT_KING, 0x0091, -1, 1000, 200, 0x00002000, 0xc0304000, TEAM_ENEMY, SQUADRON_03, -1, 0, 0x00000000)
weapon(0x0100, MODEL_CHRSKROCKET, 0x0041, 0x10004000, 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(0x00000080, CHR_KING3, 0x0094, BODY_SKEDARKING, HEAD_RANDOM, FUNC_INIT_KING, 0x0094, -1, 1000, 200, 0x00002000, 0xc0304000, TEAM_ENEMY, SQUADRON_04, -1, 0, 0x00000000)
weapon(0x0100, MODEL_KINGSCEPTRE, 0x0042, 0x10006000, 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(0x00000300, CHR_BLONDE, 0x0077, BODY_SKEDAR, HEAD_MRBLONDE, FUNC_KING1_SKEDAR, 0x0022, -1, 1000, 200, 0x00002000, 0xc0304000, TEAM_ENEMY, SQUADRON_04, -1, 0, 0x00000000)
weapon(0x0100, MODEL_CHRMAULER, 0x0043, 0x10004000, 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, CHR_SKEDAR_TEMPLATE, 0x007d, BODY_CISOLDIER, HEAD_RANDOM, FUNC_HIDE, -1, -1, 200, 100, 0x00012000, 0xc0300000, TEAM_ENEMY, SQUADRON_02, -1, 0, 0x00000000)
weapon(0x0100, MODEL_CHRAR34, 0x003f, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_AR34, 0x00ffffff, 0x00000000)
chr(0x00000000, CHR_MAIAN1, 0x0009, BODY_ELVIS1, HEAD_MAIAN_S, GFUNC_IDLE, -1, -1, 200, 100, 0x00012000, 0xc0300000, TEAM_ALLY, SQUADRON_01, -1, 0, 0x00000000)
weapon(0x0100, MODEL_CHRMAIANSMG, 0x0044, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CALLISTONTG, 0x00ffffff, 0x00000000)
chr(0x00000000, CHR_MAIAN2, 0x00a4, BODY_ELVIS1, HEAD_MAIAN_S, GFUNC_IDLE, -1, -1, 200, 100, 0x00012000, 0xc0300000, TEAM_ALLY, SQUADRON_01, -1, 0, 0x00000000)
weapon(0x0100, MODEL_CHRMAIANSMG, 0x0045, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CALLISTONTG, 0x00ffffff, 0x00000000)
chr(0x00000000, CHR_MAIAN3, 0x0008, BODY_ELVIS1, HEAD_MAIAN_S, FUNC_HIDE, -1, -1, 200, 100, 0x00012000, 0xc0300000, TEAM_01, SQUADRON_01, -1, 0, 0x00000000)
weapon(0x0100, MODEL_CHRMAIANSMG, 0x0046, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CALLISTONTG, 0x00ffffff, 0x00000000)
chr(0x00000000, CHR_MAIAN4, 0x000c, BODY_ELVIS1, HEAD_MAIAN_S, FUNC_HIDE, -1, -1, 200, 100, 0x00012000, 0xc0300000, TEAM_01, SQUADRON_01, -1, 0, 0x00000000)
weapon(0x0100, MODEL_CHRMAIANSMG, 0x0047, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CALLISTONTG, 0x00ffffff, 0x00000000)
chr(0x00000000, CHR_MAIAN5, 0x000d, BODY_ELVIS1, HEAD_MAIAN_S, FUNC_HIDE, -1, -1, 200, 100, 0x00012000, 0xc0300000, TEAM_01, SQUADRON_01, -1, 0, 0x00000000)
weapon(0x0100, MODEL_CHRMAIANSMG, 0x0048, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, WEAPON_CALLISTONTG, 0x00ffffff, 0x00000000)
link_scenery(1, 0, 2)
debris(0x0100, MODEL_SKCREV_UNEXP1, 0x00e5, 0x035005e8, 0x00304300, 0x00000000, 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)
link_scenery(1, 0, 2)
door(0x0100, MODEL_SKTNL_UNEXP1, 0x00e7, 0x13500d00, 0x00304300, 0x00000000, 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)
debris(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(0x1e, 5)
tag(0x1f, 5)
tag(0x20, 5)
tag(0x21, 5)
tag(0x22, 5)
stdobject(0x0100, MODEL_SK_FL_NOSHAD_ML, 0x014b, 0x035004e8, 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_NOSHAD_MR, 0x014c, 0x035004e8, 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_NOSHAD_BL, 0x014d, 0x035004e8, 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_NOSHAD_BR, 0x014e, 0x035004e8, 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_NOSHAD_T, 0x014a, 0x035004e8, 0x00304300, 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, 0x80106300, 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, 0x80106300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000)
tag(0x03, 3)
tag(0x2c, 2)
link_scenery(1, 0, 0)
debris(0x0100, MODEL_SK_TEMPLECOLUMN3, 0x010b, 0x035005e8, 0x80106300, 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, 0x80106300, 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, 0x80106300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000)
tag(0x27, 1)
tag(0x28, 1)
tag(0x29, 1)
tag(0x2f, 5)
tag(0x30, 5)
tag(0x31, 5)
tag(0x32, 5)
tag(0x33, 5)
stdobject(0x0019, MODEL_CHRREMOTEMINE, 0x00d5, 0x012004e8, 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, 0x012004e8, 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, 0x012004e8, 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, 0x012004e8, 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, 0x012004e8, 0x00086000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000)
tag(0x3d, 1)
stdobject(0x0019, MODEL_CHRREMOTEMINE, 0x003b, 0x012004e8, 0x00086000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000)
stdobject(0x0100, MODEL_SK_SUNNOSHAD1, 0x014f, 0x035004e8, 0x00304300, 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, 0x035004e8, 0x00304300, 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)
tag(0x3e, 2)
tag(0x3f, 2)
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, 0x00000040, 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, 0x00000040, 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, 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, 0x00f2, 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(0x0d, 2)
tag(0x0e, 2)
door(0x0100, MODEL_SK_DOOR1, 0x00f3, 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, 0x00f4, 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, 0x00f5, 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, 0x00f6, 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(0x0f, 2)
tag(0x10, 2)
door(0x0100, MODEL_SK_DOOR1, 0x00f7, 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, 0x00f8, 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(0x11, 2)
tag(0x12, 2)
door(0x0100, MODEL_SK_DOOR1, 0x00f9, 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, 0x00fa, 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(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(0x04, 1)
stdobject(0x0080, MODEL_SKPUZZLEOBJECT, 0x00d4, 0x000201e1, 0x00004100, 0x00000000, 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, 0x0136, 0x035204e8, 0x00304300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000, 0x0136, 0x0136, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000071c, 0x0010aaaa, 0x00000000, 0x00000000, 0x00000000, 0x00000000)
tag(0x0b, 1)
multimonitor(0x0099, MODEL_COMHUB, 0x0137, 0x00000002, 0x00000000, 0x00000000, 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(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_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(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, 0x00000000, 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, 0x00010000, 0x00010000, 0x0001aaaa, 0x00002aaa, 0x00002aaa, 0x00000004, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00000000, 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, 0x00000000, 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, 0x00010000, 0x00010000, 0x0001aaaa, 0x00002aaa, 0x00002aaa, 0x00000004, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00000000, 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, 0x00000000, 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, 0x00010000, 0x00010000, 0x0001aaaa, 0x00002aaa, 0x00002aaa, 0x00000004, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00000000, 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, 0x00000000, 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, 0x00010000, 0x00010000, 0x0001aaaa, 0x00002aaa, 0x00002aaa, 0x00000004, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00000000, 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, 0x00000000, 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, 0x00010000, 0x00010000, 0x0001aaaa, 0x00002aaa, 0x00002aaa, 0x00000004, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00000000, 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, 0x00000000, 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, 0x00010000, 0x00010000, 0x0001aaaa, 0x00002aaa, 0x00002aaa, 0x00000004, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00000000, 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, 0x00000000, 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, 0x00010000, 0x00010000, 0x0001aaaa, 0x00002aaa, 0x00002aaa, 0x00000004, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0x00000000, 0x00000000, 0x00000000)
tag(0x40, 1)
stdobject(0x0019, MODEL_CHRREMOTEMINE, 0x003b, 0x012004e8, 0x00086000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000003e8, 0x00000000, 0x00000000, 0x0fff0000)
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)
endprops
};
u8 intro[] = {
outfit(OUTFIT_MAIAN)
intro_weapon(WEAPON_PHOENIX, -1)
ammo(AMMOTYPE_PISTOL, 300)
ammo(AMMOTYPE_ROCKET, 3)
ammo(AMMOTYPE_SMG, 100)
spawn(0x00d7)
endintro
};
struct aipaths paths[] = {
{ NULL, 0, 0 },
};
u8 func1001_objectives_failed_msg[] = {
yield
set_function(CHR_SELF, GFUNC_SHOW_OBJ_FAILED_MSG)
endfunction
};
u8 func1000_counterop[] = {
yield
set_chr_team(CHR_COUNTEROP, TEAM_ENEMY)
set_function(CHR_SELF, GFUNC_REBUILD_GROUPS)
endfunction
};
u8 func0403_init_maian_leader[] = {
stop_chr
yield
set_alertness(100)
set_accuracy(100)
set_reaction_speed(100)
set_chr_health(CHR_SELF, 40)
set_armor(300)
set_recovery_speed(100)
set_shield(0)
set_function(CHR_SELF, FUNC_DEFEND)
endfunction
};
u8 func0402_init_king[] = {
set_self_flag_bank3(CHRFLAG3_00000020)
set_alertness(100)
set_accuracy(100)
set_reaction_speed(100)
set_chr_health(CHR_SELF, 40)
set_armor(300)
set_recovery_speed(100)
set_shield(0)
set_self_flag_bank3(CHRFLAG3_UNEXPLODABLE)
set_function(CHR_SELF, FUNC_DEFEND)
endfunction
};
u8 func0401_defend[] = {
set_onshot_function(FUNC_DEFEND)
set_self_flag_bank3(CHRFLAG3_NOAUTOAIM)
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_onshot_function(GFUNC_IDLE)
set_function(CHR_SELF, GFUNC_IDLE)
// Not dying - go to pad
label(0x06)
if_enemy_distance_lt_and_los(2540, /*goto*/ 0x08)
if_chr_distance_to_pad_lt(CHR_SELF, 200, TARGET_PAD, /*goto*/ 0x06)
label(0x03)
restart_timer
if_chr_distance_to_pad_gt(CHR_SELF, 500, TARGET_PAD, /*goto*/ 0x06)
go_to_target_pad(SPEED_JOG)
label(0x06)
go_to_target_pad(SPEED_RUN)
// Wait until at pad or 1 second has passed
beginloop(0x04)
dprint 'G','O',' ','T','O',' ','P','A','D','\n',0,
if_enemy_distance_lt_and_los(2540, /*goto*/ 0x08)
if_chr_distance_to_pad_lt(CHR_SELF, 200, TARGET_PAD, /*goto*/ 0x06)
if_timer_gt(60, /*goto*/ 0x2d)
endloop(0x04)
// Timer expired - loop again
label(0x2d)
goto_first(0x03)
// At pad
label(0x06)
stop_chr
// Wait for enemy to come into sight, or to be pushed away from pad
beginloop(0x09)
if_enemy_distance_lt_and_los(2540, /*goto*/ 0x08)
if_chr_distance_to_pad_gt(CHR_SELF, 300, TARGET_PAD, /*goto*/ 0x06)
endloop(0x09)
// Pushed away from pad - return to it
label(0x06)
goto_first(0x03)
// Line of sight to enemy
label(0x08)
if_self_flag_bankx_eq(CHRFLAG1_00000008, TRUE, BANK_1, /*goto*/ 0x2d)
restart_timer
beginloop(0x8f)
if_timer_gt(120, /*goto*/ 0x2d)
endloop(0x8f)
label(0x2d)
if_chr_unloaded(TARGET_CHR, /*goto*/ 0x2d)
if_chr_death_animation_finished(TARGET_CHR, /*goto*/ 0x2d)
if_chr_dying(TARGET_CHR, /*goto*/ 0x2d)
dprint 'D','E','T','E','C','T','E','D','\n',0,
set_return_function(CHR_SELF, FUNC_DEFEND)
set_onshot_function(FUNC_DEFEND)
set_function(CHR_SELF, GFUNC_COMBAT_WITH_TARGET_CHR)
label(0x2d)
goto_first(0x03)
endfunction
};
u8 func1003_spawn_maians[] = {
yield
// Wait for intro to finish
beginloop(0x58)
if_camera_animating(/*goto*/ 0x2d)
goto_next(0x2e)
label(0x2d)
endloop(0x58)
label(0x2e)
yield
yield
yield
yield
yield
label(0x04)
yield
label(0x06)
set_morale(50)
// Loop until a Maian is able to be spawned or counter depleted
beginloop(0x8d)
if_morale_lt(1, /*goto*/ 0x06)
try_spawn_chr(BODY_ELVIS1, HEAD_MAIAN_S, 0x0053, FUNC_INIT_MAIAN, 0x00000000, /*goto*/ 0x8e)
try_spawn_chr(BODY_ELVIS1, HEAD_MAIAN_S, 0x0050, FUNC_INIT_MAIAN, 0x00000000, /*goto*/ 0x8e)
try_spawn_chr(BODY_ELVIS1, HEAD_MAIAN_S, 0x004d, FUNC_INIT_MAIAN, 0x00000000, /*goto*/ 0x8e)
try_spawn_chr(BODY_ELVIS1, HEAD_MAIAN_S, 0x004c, FUNC_INIT_MAIAN, 0x00000000, /*goto*/ 0x8e)
try_spawn_chr(BODY_ELVIS1, HEAD_MAIAN_S, 0x004e, FUNC_INIT_MAIAN, 0x00000000, /*goto*/ 0x8e)
try_spawn_chr(BODY_ELVIS1, HEAD_MAIAN_S, 0x004a, FUNC_INIT_MAIAN, 0x00000000, /*goto*/ 0x8e)
reloop(0x8d)
// Successful spawn
label(0x8e)
dprint 'C','R','E','A','T','E','D',' ','1','\n',0,
yield
subtract_morale(1)
yield
yield
yield
yield
yield
yield
yield
yield
yield
yield
rebuild_teams
rebuild_squadrons
if_num_chrs_in_squadron_gt(7, GROUP_MAIANS, /*goto*/ 0x2d)
reloop(0x8d)
// Wait 5 seconds
label(0x2d)
restart_timer
beginloop(0x08)
dprint 'S','Q','U','A','D',' ','F','U','L','L','\n',0,
if_timer_gt(300, /*goto*/ 0x2d)
endloop(0x08)
// If a spot has freed up, go back to the spawning part to spawn another
label(0x2d)
if_num_chrs_in_squadron_gt(7, GROUP_MAIANS, /*goto*/ 0x2d)
endloop(0x8d)
// Still no free spot, so go back to the 5 second wait
label(0x2d)
goto_first(0x08)
// Counter depleted
label(0x06)
yield
yield
yield
yield
yield
rebuild_teams
rebuild_squadrons
set_function(CHR_SELF, GFUNC_IDLE)
endfunction
};
u8 func0405_init_maian[] = {
set_self_flag_bank3(CHRFLAG3_00040000)
set_self_flag_bank3(CHRFLAG3_00080000)
set_chr_team(CHR_SELF, TEAM_ALLY)
set_squadron(GROUP_MAIANS)
rebuild_teams
rebuild_squadrons
try_draw_weapon(MODEL_CHRMAIANSMG, WEAPON_CALLISTONTG, 0x00000000, /*goto*/ 0x06)
label(0x06)
try_inherit_properties(CHR_MAIAN_TEMPLATE, /*goto*/ 0x2d)
label(0x2d)
set_accuracy(100)
set_reaction_speed(100)
set_chr_health(CHR_SELF, 200)
set_armor(0)
set_recovery_speed(100)
set_shield(0)
set_self_flag_bankx(CHRFLAG1_00080000, BANK_1)
rebuild_teams
rebuild_squadrons
set_function(CHR_SELF, FUNC_MAIAN)
endfunction
};
u8 func0404_maian[] = {
set_return_function(CHR_SELF, FUNC_MAIAN)
set_onshot_function(FUNC_MAIAN)
if_enemy_distance_lt_and_los(2540, /*goto*/ 0x08)
label(0x03)
set_target_chr(CHR_KING1)
if_chr_dying(CHR_KING1, /*goto*/ 0x8f)
if_chr_death_animation_finished(CHR_KING1, /*goto*/ 0x8f)
if_chr_unloaded(CHR_KING1, /*goto*/ 0x8f)
goto_next(0x2d)
// King 1 dead
label(0x8f)
set_target_chr(CHR_KING2)
if_chr_dying(CHR_KING2, /*goto*/ 0x90)
if_chr_death_animation_finished(CHR_KING2, /*goto*/ 0x90)
if_chr_unloaded(CHR_KING2, /*goto*/ 0x90)
goto_next(0x2d)
// King 2 dead
label(0x90)
set_target_chr(CHR_KING3)
run_to_pad(0x0094)
goto_next(0x04)
// Go to king
label(0x2d)
try_run_to_target_chr(/*goto*/ 0x04)
beginloop(0x04)
dprint 'G','O',' ','T','O',' ','P','A','D','\n',0,
if_enemy_distance_lt_and_los(2540, /*goto*/ 0x08)
if_chr_dying(TARGET_CHR, /*goto*/ 0x06)
if_chr_death_animation_finished(TARGET_CHR, /*goto*/ 0x06)
if_chr_unloaded(TARGET_CHR, /*goto*/ 0x06)
endloop(0x04)
// King died while running to him
label(0x06)
goto_first(0x03)
// Maian has line of sight to king
label(0x08)
dprint 'D','E','T','E','C','T','E','D','\n',0,
if_chr_dying(TARGET_CHR, /*goto*/ 0x06)
if_chr_death_animation_finished(TARGET_CHR, /*goto*/ 0x06)
if_chr_unloaded(TARGET_CHR, /*goto*/ 0x06)
set_return_function(CHR_SELF, FUNC_MAIAN)
set_onshot_function(FUNC_MAIAN)
set_function(CHR_SELF, GFUNC_COMBAT_WITH_TARGET_CHR)
// King died while fighting
label(0x06)
goto_first(0x03)
endfunction
};
u8 func1004_spawn_king1_skedar[] = {
// Wait for intro to finish
beginloop(0x58)
if_camera_animating(/*goto*/ 0x2d)
goto_next(0x2e)
label(0x2d)
endloop(0x58)
label(0x2e)
yield
yield
yield
yield
yield
label(0x04)
yield
label(0x06)
set_morale(65)
// Loop until a Skedar is able to be spawned or counter depleted
beginloop(0x8d)
if_stage_flag_eq(STAGEFLAG_KING1_DEAD, TRUE, /*goto*/ 0x0e)
if_morale_lt(1, /*goto*/ 0x06)
try_spawn_chr(BODY_SKEDAR, HEAD_RANDOM, 0x0079, FUNC_KING1_SKEDAR, 0x00000200, /*goto*/ 0x8e)
try_spawn_chr(BODY_SKEDAR, HEAD_RANDOM, 0x007d, FUNC_KING1_SKEDAR, 0x00000200, /*goto*/ 0x8e)
try_spawn_chr(BODY_SKEDAR, HEAD_RANDOM, 0x0083, FUNC_KING1_SKEDAR, 0x00000200, /*goto*/ 0x8e)
try_spawn_chr(BODY_SKEDAR, HEAD_RANDOM, 0x0085, FUNC_KING1_SKEDAR, 0x00000200, /*goto*/ 0x8e)
reloop(0x8d)
// Successful spawn
label(0x8e)
dprint 'C','R','E','A','T','E','D',' ','1','\n',0,
yield
subtract_morale(1)
yield
yield
yield
yield
yield
yield
yield
yield
yield
yield
rebuild_teams
rebuild_squadrons
if_num_chrs_in_squadron_gt(5, 0x02, /*goto*/ 0x2d)
reloop(0x8d)
// Wait for 10 seconds if Maian squad is somewhat full,
// or wait 1 second if Maian squad is somewhat empty.
label(0x2d)
restart_timer
beginloop(0x08)
if_stage_flag_eq(STAGEFLAG_KING1_DEAD, TRUE, /*goto*/ 0x0e)
dprint 'S','Q','U','A','D',' ','F','U','L','L','\n',0,
if_num_chrs_in_squadron_gt(3, GROUP_MAIANS, /*goto*/ 0x2e)
if_timer_gt(60, /*goto*/ 0x2d)
label(0x2e)
if_timer_gt(600, /*goto*/ 0x2d)
endloop(0x08)
// If squad is still full, wait another 1 or 10 seconds
label(0x2d)
if_num_chrs_in_squadron_gt(5, GROUP_KING1_SKEDAR, /*goto*/ 0x2d)
goto_first(0x8d)
// Spawn more
label(0x2d)
goto_first(0x08)
// Counter depleted
label(0x06)
// King 1 dead
label(0x0e)
yield
yield
yield
yield
yield
rebuild_teams
rebuild_squadrons
set_function(CHR_SELF, GFUNC_IDLE)
endfunction
};
u8 func1008_spawn_king2_skedar[] = {
// Wait for intro to finish
beginloop(0x58)
if_camera_animating(/*goto*/ 0x2d)
goto_next(0x2e)
label(0x2d)
endloop(0x58)
// Wait for king 1 to die
label(0x2e)
yield
beginloop(0x04)
if_stage_flag_eq(STAGEFLAG_KING1_DEAD, TRUE, /*goto*/ 0x06)
endloop(0x04)
// Loop until a Skedar is able to be spawned or counter depleted
label(0x06)
set_morale(50)
beginloop(0x8d)
if_stage_flag_eq(STAGEFLAG_KING2_DEAD, TRUE, /*goto*/ 0x0e)
if_morale_lt(1, /*goto*/ 0x06)
try_spawn_chr(BODY_SKEDAR, HEAD_RANDOM, 0x008e, FUNC_KING2_SKEDAR, 0x00000210, /*goto*/ 0x8e)
try_spawn_chr(BODY_SKEDAR, HEAD_RANDOM, 0x0090, FUNC_KING2_SKEDAR, 0x00000210, /*goto*/ 0x8e)
try_spawn_chr(BODY_SKEDAR, HEAD_RANDOM, 0x008f, FUNC_KING2_SKEDAR, 0x00000210, /*goto*/ 0x8e)
try_spawn_chr(BODY_SKEDAR, HEAD_RANDOM, 0x0091, FUNC_KING2_SKEDAR, 0x00000210, /*goto*/ 0x8e)
reloop(0x8d)
// Successful spawn
label(0x8e)
yield
yield
yield
yield
yield
yield
yield
yield
yield
yield
yield
yield
yield
yield
yield
yield
subtract_morale(1)
rebuild_teams
rebuild_squadrons
if_num_chrs_in_squadron_gt(3, GROUP_KING2_SKEDAR, /*goto*/ 0x2d)
reloop(0x8d)
// Wait 15 seconds or until king 2 dead
label(0x2d)
restart_timer
beginloop(0x08)
if_stage_flag_eq(STAGEFLAG_KING2_DEAD, TRUE, /*goto*/ 0x0e)
if_timer_gt(900, /*goto*/ 0x2d)
endloop(0x08)
// If squad still full, wait another 15 seconds, otherwise loop back to
// the spawning code.
label(0x2d)
if_num_chrs_in_squadron_gt(3, GROUP_KING2_SKEDAR, /*goto*/ 0x2d)
endloop(0x8d)
label(0x2d)
goto_first(0x08)
// Counter depleted
label(0x06)
yield
yield
yield
yield
yield
rebuild_teams
rebuild_squadrons
set_function(CHR_SELF, GFUNC_IDLE)
label(0x0e)
set_function(CHR_SELF, GFUNC_IDLE)
endfunction
};
u8 func100c_spawn_king3_skedar[] = {
// Wait for intro to finish
beginloop(0x58)
if_camera_animating(/*goto*/ 0x2d)
goto_next(0x2e)
label(0x2d)
endloop(0x58)
// Wait for king 2 to die
label(0x2e)
yield
beginloop(0x04)
if_stage_flag_eq(STAGEFLAG_KING2_DEAD, TRUE, /*goto*/ 0x06)
endloop(0x04)
// Loop until a Skedar is able to be spawned or counter depleted
label(0x06)
set_morale(50)
beginloop(0x8d)
if_stage_flag_eq(STAGEFLAG_KING3_DEAD, TRUE, /*goto*/ 0x0e)
if_morale_lt(1, /*goto*/ 0x06)
try_spawn_chr(BODY_SKEDAR, HEAD_RANDOM, 0x0095, FUNC_KING3_SKEDAR, 0x00000200, /*goto*/ 0x8e)
try_spawn_chr(BODY_SKEDAR, HEAD_RANDOM, 0x0096, FUNC_KING3_SKEDAR, 0x00000200, /*goto*/ 0x8e)
try_spawn_chr(BODY_SKEDAR, HEAD_RANDOM, 0x012e, FUNC_KING3_SKEDAR, 0x00000200, /*goto*/ 0x8e)
try_spawn_chr(BODY_SKEDAR, HEAD_RANDOM, 0x0132, FUNC_KING3_SKEDAR, 0x00000200, /*goto*/ 0x8e)
reloop(0x8d)
// Successful spawn
label(0x8e)
yield
subtract_morale(1)
rebuild_teams
rebuild_squadrons
if_num_chrs_in_squadron_gt(5, 0x04, /*goto*/ 0x2d)
reloop(0x8d)
// Squad full - wait 15 seconds or for king 3 to die
label(0x2d)
restart_timer
beginloop(0x08)
if_stage_flag_eq(STAGEFLAG_KING3_DEAD, TRUE, /*goto*/ 0x0e)
if_timer_gt(900, /*goto*/ 0x2d)
endloop(0x08)
// Spawn more or wait another 15 seconds
label(0x2d)
if_num_chrs_in_squadron_gt(5, GROUP_KING3_SKEDAR, /*goto*/ 0x2d)
endloop(0x8d)
label(0x2d)
goto_first(0x08)
// Countdown depleted
label(0x06)
yield
yield
yield
yield
yield
rebuild_teams
rebuild_squadrons
set_function(CHR_SELF, GFUNC_IDLE)
label(0x0e)
set_function(CHR_SELF, GFUNC_IDLE)
endfunction
};
u8 func0407_king1_skedar[] = {
try_draw_weapon(MODEL_CHRMAULER, WEAPON_MAULER, 0x00000000, /*goto*/ 0x06)
label(0x06)
try_inherit_properties(CHR_SKEDAR_TEMPLATE, /*goto*/ 0x2d)
label(0x2d)
set_squadron(GROUP_KING1_SKEDAR)
set_chr_team(CHR_SELF, TEAM_ENEMY)
set_chr_flag_bank2(CHR_SELF, CHRFLAG2_00400000)
set_accuracy(10)
set_reaction_speed(50)
set_chr_health(CHR_SELF, 150)
set_armor(80)
set_recovery_speed(100)
set_shield(0)
set_self_flag_bankx(CHRFLAG1_00080000, BANK_1)
rebuild_teams
rebuild_squadrons
set_function(CHR_SELF, FUNC_SKEDAR)
endfunction
};
u8 func0408_king2_skedar[] = {
try_draw_weapon(MODEL_CHRMAULER, WEAPON_MAULER, 0x00000000, /*goto*/ 0x06)
label(0x06)
try_inherit_properties(CHR_SKEDAR_TEMPLATE, /*goto*/ 0x2d)
label(0x2d)
set_squadron(GROUP_KING2_SKEDAR)
set_chr_team(CHR_SELF, TEAM_ENEMY)
set_chr_flag_bank2(CHR_SELF, CHRFLAG2_00400000)
set_accuracy(10)
set_reaction_speed(50)
set_chr_health(CHR_SELF, 150)
set_armor(80)
set_recovery_speed(100)
set_shield(0)
set_self_flag_bankx(CHRFLAG1_00080000, BANK_1)
rebuild_teams
rebuild_squadrons
set_function(CHR_SELF, FUNC_SKEDAR)
endfunction
};
u8 func0409_king3_skedar[] = {
try_draw_weapon(MODEL_CHRMAULER, WEAPON_MAULER, 0x00000000, /*goto*/ 0x06)
label(0x06)
try_inherit_properties(CHR_SKEDAR_TEMPLATE, /*goto*/ 0x2d)
label(0x2d)
set_squadron(GROUP_KING3_SKEDAR)
set_chr_team(CHR_SELF, TEAM_ENEMY)
set_chr_flag_bank2(CHR_SELF, CHRFLAG2_00400000)
set_accuracy(10)
set_reaction_speed(50)
set_chr_health(CHR_SELF, 150)
set_armor(80)
set_recovery_speed(100)
set_shield(0)
set_self_flag_bankx(CHRFLAG1_00080000, BANK_1)
rebuild_teams
rebuild_squadrons
set_function(CHR_SELF, FUNC_SKEDAR)
endfunction
};
u8 func0406_skedar[] = {
set_onshot_function(FUNC_SKEDAR)
if_enemy_distance_lt_and_los(2540, /*goto*/ 0x08)
label(0x03)
// Go to Maian leader
set_target_chr(CHR_MAIAN_LEADER)
try_run_to_target_chr(/*goto*/ 0x04)
beginloop(0x04)
dprint 'G','O',' ','T','O',' ','P','A','D','\n',0,
if_enemy_distance_lt_and_los(2540, /*goto*/ 0x08)
endloop(0x04)
label(0x08)
dprint 'D','E','T','E','C','T','E','D','\n',0,
set_return_function(CHR_SELF, FUNC_SKEDAR)
set_onshot_function(FUNC_SKEDAR)
set_function(CHR_SELF, GFUNC_COMBAT_WITH_TARGET_CHR)
endfunction
};
u8 func1005_check_leader_dead[] = {
beginloop(0x03)
if_chr_death_animation_finished(CHR_MAIAN_LEADER, /*goto*/ 0x2d)
if_chr_dying(CHR_MAIAN_LEADER, /*goto*/ 0x2d)
if_chr_unloaded(CHR_MAIAN_LEADER, /*goto*/ 0x2d)
endloop(0x03)
label(0x2d)
message(CHR_JOANNA, 0x4607) // "Maian leader has been killed."
set_stage_flag(STAGEFLAG_LEADER_DEAD)
set_function(CHR_SELF, GFUNC_IDLE)
endfunction
};
u8 func1009_check_king1_dead[] = {
set_object_flag_bank0(OBJ_BRIDGE, OBJECTFLAG0_DEACTIVATED)
beginloop(0x03)
if_chr_death_animation_finished(CHR_KING1, /*goto*/ 0x2d)
if_chr_dying(CHR_KING1, /*goto*/ 0x2d)
if_chr_unloaded(CHR_KING1, /*goto*/ 0x2d)
endloop(0x03)
label(0x2d)
message(CHR_JOANNA, 0x4608) // "Skedar King has been killed."
set_stage_flag(STAGEFLAG_KING1_DEAD)
unlock_door(0x3e, 0x40)
unlock_door(0x3f, 0x40)
set_function(CHR_SELF, GFUNC_IDLE)
endfunction
};
u8 func100a_check_king2_dead[] = {
set_object_flag_bank0(OBJ_BRIDGE, OBJECTFLAG0_DEACTIVATED)
if_difficulty_lt(DIFF_SA, /*goto*/ 0x0e)
beginloop(0x03)
if_chr_death_animation_finished(CHR_KING2, /*goto*/ 0x2d)
if_chr_dying(CHR_KING2, /*goto*/ 0x2d)
if_chr_unloaded(CHR_KING2, /*goto*/ 0x2d)
endloop(0x03)
label(0x2d)
message(CHR_JOANNA, 0x4608) // "Skedar King has been killed."
set_stage_flag(STAGEFLAG_KING2_DEAD)
label(0x0e)
set_function(CHR_SELF, GFUNC_IDLE)
endfunction
};
u8 func100b_check_king3_dead[] = {
set_object_flag_bank0(OBJ_BRIDGE, OBJECTFLAG0_DEACTIVATED)
if_difficulty_lt(DIFF_PA, /*goto*/ 0x0e)
beginloop(0x03)
if_chr_death_animation_finished(CHR_KING3, /*goto*/ 0x2d)
if_chr_dying(CHR_KING3, /*goto*/ 0x2d)
if_chr_unloaded(CHR_KING3, /*goto*/ 0x2d)
endloop(0x03)
label(0x2d)
message(CHR_JOANNA, 0x4608) // "Skedar King has been killed."
set_stage_flag(STAGEFLAG_KING3_DEAD)
label(0x0e)
set_function(CHR_SELF, GFUNC_IDLE)
endfunction
};
u8 func1007_check_end_level[] = {
// Wait for all objectives complete
beginloop(0x03)
if_all_objectives_complete(/*goto*/ 0x2d)
endloop(0x03)
// Wait 2 seconds
label(0x2d)
restart_timer
beginloop(0x08)
if_timer_gt(120, /*goto*/ 0x2d)
endloop(0x08)
// Check Jo not dead
label(0x2d)
if_chr_death_animation_finished(CHR_JOANNA, /*goto*/ 0x2d)
if_chr_dying(CHR_JOANNA, /*goto*/ 0x2d)
if_chr_unloaded(CHR_JOANNA, /*goto*/ 0x2d)
goto_next(0x06)
// Check Velvet not dead
label(0x2d)
if_chr_death_animation_finished(CHR_VELVET, /*goto*/ 0x2d)
if_chr_dying(CHR_VELVET, /*goto*/ 0x2d)
if_chr_unloaded(CHR_VELVET, /*goto*/ 0x2d)
goto_next(0x06)
// Mission failed
label(0x2d)
end_level
set_function(CHR_SELF, GFUNC_IDLE)
// Mission complete
label(0x06)
set_function(CHR_SELF, FUNC_OUTRO)
set_function(CHR_SELF, GFUNC_IDLE)
endfunction
};
u8 func040c_hide[] = {
label(0x03)
set_self_flag_bank3(CHRFLAG3_INVINCIBLE_TO_GUNFIRE)
set_self_flag_bank3(CHRFLAG3_HIDDEN)
set_function(CHR_SELF, GFUNC_IDLE)
endfunction
};
u8 func100d_king1_invincible[] = {
beginloop(0x03)
if_chr_in_room(CHR_JOANNA, 0x00, 0x0070, /*goto*/ 0x2d)
if_chr_in_room(CHR_JOANNA, 0x00, 0x0071, /*goto*/ 0x2d)
if_chr_in_room(CHR_JOANNA, 0x00, 0x0072, /*goto*/ 0x2d)
if_chr_in_room(CHR_JOANNA, 0x00, 0x0073, /*goto*/ 0x2d)
if_chr_in_room(CHR_JOANNA, 0x00, 0x0074, /*goto*/ 0x2d)
if_chr_in_room(CHR_JOANNA, 0x00, 0x0075, /*goto*/ 0x2d)
if_chr_in_room(CHR_JOANNA, 0x00, 0x0076, /*goto*/ 0x2d)
if_chr_in_room(CHR_JOANNA, 0x00, 0x0077, /*goto*/ 0x2d)
if_chr_in_room(CHR_JOANNA, 0x00, 0x0078, /*goto*/ 0x2d)
if_chr_in_room(CHR_JOANNA, 0x00, 0x0079, /*goto*/ 0x2d)
set_chr_flag_bank3(CHR_KING1, CHRFLAG3_INVINCIBLE_TO_GUNFIRE)
reloop(0x03)
label(0x2d)
unset_chr_flag_bank3(CHR_KING1, CHRFLAG3_INVINCIBLE_TO_GUNFIRE)
endloop(0x03)
endfunction
};
u8 unregistered_function[] = {
yield
// Wait for intro to finish
beginloop(0x58)
if_camera_animating(/*goto*/ 0x2d)
goto_next(0x2e)
label(0x2d)
endloop(0x58)
label(0x2e)
yield
yield
yield
yield
yield
// Remove Blonde if counterop doesn't exist
label(0x03)
if_chr_death_animation_finished(CHR_COUNTEROP, /*goto*/ 0x2d)
set_function(CHR_SELF, GFUNC_IDLE)
label(0x2d)
remove_chr(CHR_BLONDE)
set_function(CHR_SELF, GFUNC_IDLE)
endfunction
};
u8 func1002_intro[] = {
set_chr_flag_bank3(CHR_VELVET, CHRFLAG3_HIDDEN)
set_chr_flag_bank3(CHR_COUNTEROP, CHRFLAG3_HIDDEN)
set_music_track(MUSIC_G5_INTRO)
set_chr_flag_bank2(CHR_COUNTEROP, CHRFLAG2_00020000)
set_chr_flag_bank2(CHR_BLONDE, CHRFLAG2_00020000)
camera_movement(0x047c)
cmd0175(60)
set_chr_flag_bank3(CHR_JOANNA, CHRFLAG3_UNPLAYABLE)
set_chr_flag_bank2(CHR_JOANNA, CHRFLAG2_00020000)
animation(0x047d, -1, -1, 0x0600, CHR_JOANNA, 4)
unset_chr_flag_bank3(CHR_MAIAN1, CHRFLAG3_HIDDEN)
set_chr_flag_bank3(CHR_MAIAN1, CHRFLAG3_UNPLAYABLE)
set_chr_flag_bank2(CHR_MAIAN1, CHRFLAG2_00020000)
animation(0x047e, -1, -1, 0x0600, CHR_MAIAN1, 4)
unset_chr_flag_bank3(CHR_MAIAN2, CHRFLAG3_HIDDEN)
set_chr_flag_bank3(CHR_MAIAN2, CHRFLAG3_UNPLAYABLE)
set_chr_flag_bank2(CHR_MAIAN2, CHRFLAG2_00020000)
animation(0x047f, -1, -1, 0x0600, CHR_MAIAN2, 4)
restart_timer
fade_to_color(0x000000ff, 0)
fade_to_color(0x00000000, 110)
set_cutscene_weapon(CHR_JOANNA, WEAPON_NONE, WEAPON_NONE)
yield
set_cutscene_weapon(CHR_JOANNA, WEAPON_PHOENIX, WEAPON_NONE)
// Wait 200 frames (3.3 secs) or until button pressed
beginloop(0x96)
if_controller_button_pressed(/*goto*/ 0x82)
if_timer_gt(200, /*goto*/ 0x06)
endloop(0x96)
// Timer expired - play a sound (explosion?)
label(0x06)
play_sound(0x05e2, CHANNEL_10)
// Wait for camera to finish or button to be pressed
beginloop(0x08)
if_camera_animating(/*goto*/ 0x2d)
goto_next(0x82)
label(0x2d)
if_controller_button_pressed(/*goto*/ 0x82)
label(0x2d)
endloop(0x08)
// Outro done
label(0x82)
mute_channel(CHANNEL_10)
unset_chr_flag_bank3(CHR_VELVET, CHRFLAG3_HIDDEN)
unset_chr_flag_bank3(CHR_COUNTEROP, CHRFLAG3_HIDDEN)
set_chr_flag_bank2(CHR_COUNTEROP, CHRFLAG2_00020000)
unset_chr_flag_bank3(CHR_JOANNA, CHRFLAG3_UNPLAYABLE)
set_chr_flag_bank2(CHR_JOANNA, CHRFLAG2_00020000)
animation(0x047d, -2, -1, 0x0600, CHR_JOANNA, 2)
unset_chr_flag_bank3(CHR_MAIAN3, CHRFLAG3_UNPLAYABLE)
set_chr_flag_bank2(CHR_MAIAN3, CHRFLAG2_00020000)
animation(0x047e, -2, -1, 0x0600, CHR_MAIAN3, 2)
unset_chr_flag_bank3(CHR_MAIAN4, CHRFLAG3_UNPLAYABLE)
set_chr_flag_bank2(CHR_MAIAN4, CHRFLAG2_00020000)
animation(0x047f, -2, -1, 0x0600, CHR_MAIAN4, 2)
set_function(CHR_MAIAN1, FUNC_INIT_MAIAN)
set_function(CHR_MAIAN2, FUNC_INIT_MAIAN)
restart_default_music
reset_ambience
enter_firstperson
yield
label(0x2d)
set_function(CHR_SELF, FUNC_BLOW_MINES)
endfunction
};
u8 func040b_outro[] = {
set_invincible(CHR_JOANNA)
set_chr_flag_bank3(CHR_VELVET, CHRFLAG3_HIDDEN)
set_chr_flag_bank3(CHR_COUNTEROP, CHRFLAG3_HIDDEN)
set_music_track(MUSIC_G5_OUTRO)
camera_movement(0x0480)
set_chr_flag_bank3(CHR_JOANNA, CHRFLAG3_UNPLAYABLE)
set_chr_flag_bank2(CHR_JOANNA, CHRFLAG2_00020000)
set_chr_flag_bank3(CHR_JOANNA, CHRFLAG3_HIDDEN)
unset_chr_flag_bank3(CHR_MAIAN3, CHRFLAG3_HIDDEN)
set_chr_flag_bank3(CHR_MAIAN3, CHRFLAG3_UNPLAYABLE)
set_chr_flag_bank2(CHR_MAIAN3, CHRFLAG2_00020000)
animation(0x0481, -1, -1, 0x0600, CHR_MAIAN3, 4)
unset_chr_flag_bank3(CHR_MAIAN4, CHRFLAG3_HIDDEN)
set_chr_flag_bank3(CHR_MAIAN4, CHRFLAG3_UNPLAYABLE)
set_chr_flag_bank2(CHR_MAIAN4, CHRFLAG2_00020000)
animation(0x0482, -1, -1, 0x0600, CHR_MAIAN4, 4)
unset_chr_flag_bank3(CHR_MAIAN5, CHRFLAG3_HIDDEN)
set_chr_flag_bank3(CHR_MAIAN5, CHRFLAG3_UNPLAYABLE)
set_chr_flag_bank2(CHR_MAIAN5, CHRFLAG2_00020000)
animation(0x0483, -1, -1, 0x0600, CHR_MAIAN5, 4)
show_nonessential_chrs(FALSE)
// Wait 10 frames or for button press
restart_timer
beginloop(0x96)
if_controller_button_pressed(/*goto*/ 0x82)
if_timer_gt(10, /*goto*/ 0x06)
endloop(0x96)
// Play sound
label(0x06)
play_sound(0x05e3, CHANNEL_10)
// Wait 70 frames or for button press
beginloop(0x97)
if_controller_button_pressed(/*goto*/ 0x82)
if_timer_gt(70, /*goto*/ 0x06)
endloop(0x97)
// Play sound
label(0x06)
play_sound(0x05e5, CHANNEL_10)
// Wait 180 frames or for button press
beginloop(0x98)
if_controller_button_pressed(/*goto*/ 0x82)
if_timer_gt(180, /*goto*/ 0x06)
endloop(0x98)
// Play sound
label(0x06)
play_sound(0x05e7, CHANNEL_10)
// Wait for outro to finish
beginloop(0x08)
if_camera_animating(/*goto*/ 0x2d)
goto_next(0x82)
label(0x2d)
if_controller_button_pressed(/*goto*/ 0x82)
label(0x2d)
endloop(0x08)
label(0x82)
label(0x06)
mute_channel(CHANNEL_10)
end_level
set_function(CHR_SELF, GFUNC_IDLE)
endfunction
};
u8 func100f_blow_mines[] = {
yield
#define wait(loopid) \
restart_timer \
\
beginloop(loopid) \
if_timer_gt(120, /*goto*/ 0x2d) \
endloop(loopid) \
\
label(0x2d)
wait(0x94)
destroy_object(OBJ_MINE6)
wait(0x95)
destroy_object(OBJ_MINE1)
wait(0x8f)
destroy_object(OBJ_MINE2)
wait(0x90)
destroy_object(OBJ_MINE3)
wait(0x91)
destroy_object(OBJ_MINE4)
wait(0x92)
destroy_object(OBJ_MINE5)
wait(0x93)
set_function(CHR_SELF, GFUNC_IDLE)
endfunction
};
u8 func1010_init_lighting[] = {
yield
set_lighting(0x0004, 0x05, 0x01)
set_lighting(0x0004, 0x06, 0x01)
set_lighting(0x0005, 0x05, 0x01)
set_lighting(0x0005, 0x06, 0x01)
set_lighting(0x0006, 0x05, 0x01)
set_lighting(0x0006, 0x06, 0x01)
set_lighting(0x0007, 0x05, 0x01)
set_lighting(0x0007, 0x06, 0x01)
set_lighting(0x0008, 0x05, 0x01)
set_lighting(0x0008, 0x06, 0x01)
set_lighting(0x0009, 0x05, 0x01)
set_lighting(0x0009, 0x06, 0x01)
set_lighting(0x000a, 0x05, 0x01)
set_lighting(0x000a, 0x06, 0x01)
set_lighting(0x000b, 0x05, 0x01)
set_lighting(0x000b, 0x06, 0x01)
set_lighting(0x000c, 0x05, 0x01)
set_lighting(0x000c, 0x06, 0x01)
set_lighting(0x000d, 0x05, 0x01)
set_lighting(0x000d, 0x06, 0x01)
set_lighting(0x000e, 0x05, 0x01)
set_lighting(0x000e, 0x06, 0x01)
set_lighting(0x000f, 0x05, 0x01)
set_lighting(0x000f, 0x06, 0x01)
set_lighting(0x0010, 0x05, 0x01)
set_lighting(0x0010, 0x06, 0x01)
set_lighting(0x0011, 0x05, 0x01)
set_lighting(0x0011, 0x06, 0x01)
set_lighting(0x0012, 0x05, 0x01)
set_lighting(0x0012, 0x06, 0x01)
set_lighting(0x0013, 0x05, 0x01)
set_lighting(0x0013, 0x06, 0x01)
set_lighting(0x0014, 0x05, 0x01)
set_lighting(0x0014, 0x06, 0x01)
set_lighting(0x0015, 0x05, 0x01)
set_lighting(0x0015, 0x06, 0x01)
set_lighting(0x0016, 0x05, 0x01)
set_lighting(0x0016, 0x06, 0x01)
set_lighting(0x0017, 0x05, 0x01)
set_lighting(0x0017, 0x06, 0x01)
set_lighting(0x0018, 0x05, 0x01)
set_lighting(0x0018, 0x06, 0x01)
set_lighting(0x0019, 0x05, 0x01)
set_lighting(0x0019, 0x06, 0x01)
set_lighting(0x001a, 0x05, 0x01)
set_lighting(0x001b, 0x05, 0x01)
set_lighting(0x001b, 0x06, 0x01)
set_lighting(0x001d, 0x05, 0x01)
set_lighting(0x001d, 0x06, 0x01)
set_lighting(0x001e, 0x05, 0x01)
set_lighting(0x001e, 0x06, 0x01)
set_lighting(0x001f, 0x05, 0x01)
set_lighting(0x001f, 0x06, 0x01)
set_lighting(0x0020, 0x05, 0x01)
set_lighting(0x0020, 0x06, 0x01)
set_lighting(0x0021, 0x05, 0x01)
set_lighting(0x0021, 0x06, 0x01)
set_lighting(0x0022, 0x05, 0x01)
set_lighting(0x0022, 0x06, 0x01)
set_lighting(0x0023, 0x05, 0x01)
set_lighting(0x0023, 0x06, 0x01)
set_lighting(0x0024, 0x05, 0x01)
set_lighting(0x0024, 0x06, 0x01)
set_lighting(0x0025, 0x05, 0x01)
set_lighting(0x0025, 0x06, 0x01)
set_lighting(0x0026, 0x05, 0x01)
set_lighting(0x0026, 0x06, 0x01)
set_lighting(0x0027, 0x05, 0x01)
set_lighting(0x0027, 0x06, 0x01)
set_lighting(0x0028, 0x05, 0x01)
set_lighting(0x0028, 0x06, 0x01)
set_lighting(0x0029, 0x05, 0x01)
set_lighting(0x0029, 0x06, 0x01)
set_lighting(0x002a, 0x05, 0x01)
set_lighting(0x002a, 0x06, 0x01)
set_lighting(0x002b, 0x05, 0x01)
set_lighting(0x002b, 0x06, 0x01)
set_lighting(0x002c, 0x05, 0x01)
set_lighting(0x002c, 0x06, 0x01)
set_lighting(0x002d, 0x05, 0x01)
set_lighting(0x002d, 0x06, 0x01)
set_lighting(0x002e, 0x05, 0x01)
set_lighting(0x002e, 0x06, 0x01)
set_lighting(0x002f, 0x05, 0x01)
set_lighting(0x002f, 0x06, 0x01)
set_lighting(0x0030, 0x05, 0x01)
set_lighting(0x0030, 0x06, 0x01)
set_lighting(0x0031, 0x05, 0x01)
set_lighting(0x0031, 0x06, 0x01)
set_lighting(0x003b, 0x05, 0x01)
set_lighting(0x003b, 0x06, 0x01)
set_lighting(0x003c, 0x05, 0x01)
set_lighting(0x003c, 0x06, 0x01)
set_lighting(0x003d, 0x05, 0x01)
set_lighting(0x003d, 0x06, 0x01)
set_lighting(0x003e, 0x05, 0x01)
set_lighting(0x003e, 0x06, 0x01)
set_lighting(0x003f, 0x05, 0x01)
set_lighting(0x003f, 0x06, 0x01)
set_lighting(0x0040, 0x05, 0x01)
set_lighting(0x0040, 0x06, 0x01)
set_lighting(0x0041, 0x05, 0x01)
set_lighting(0x0041, 0x06, 0x01)
set_lighting(0x0042, 0x05, 0x01)
set_lighting(0x0042, 0x06, 0x01)
set_lighting(0x0043, 0x05, 0x01)
set_lighting(0x0043, 0x06, 0x01)
set_lighting(0x0044, 0x05, 0x01)
set_lighting(0x0044, 0x06, 0x01)
set_lighting(0x0045, 0x05, 0x01)
set_lighting(0x0046, 0x05, 0x01)
set_lighting(0x0047, 0x05, 0x01)
set_lighting(0x0047, 0x06, 0x01)
set_lighting(0x0049, 0x05, 0x01)
set_lighting(0x0049, 0x06, 0x01)
set_lighting(0x004a, 0x05, 0x01)
set_lighting(0x004a, 0x06, 0x01)
set_lighting(0x004b, 0x06, 0x01)
set_lighting(0x0048, 0x06, 0x01)
set_lighting(0x004f, 0x05, 0x01)
set_lighting(0x0058, 0x05, 0x01)
set_lighting(0x0059, 0x05, 0x01)
set_lighting(0x0059, 0x06, 0x01)
set_function(CHR_SELF, GFUNC_IDLE)
endfunction
};
struct ailists functions[] = {
{ func1000_counterop, 0x1000 },
{ func1001_objectives_failed_msg, 0x1001 },
{ func1002_intro, 0x1002 },
{ func1003_spawn_maians, 0x1003 },
{ func1004_spawn_king1_skedar, 0x1004 },
{ func1005_check_leader_dead, 0x1005 },
{ func1007_check_end_level, 0x1007 },
{ func1008_spawn_king2_skedar, 0x1008 },
{ func1009_check_king1_dead, 0x1009 },
{ func100a_check_king2_dead, 0x100a },
{ func100b_check_king3_dead, 0x100b },
{ func100c_spawn_king3_skedar, 0x100c },
{ func100d_king1_invincible, 0x100d },
{ func100f_blow_mines, 0x100f },
{ func1010_init_lighting, 0x1010 },
{ func100f_blow_mines, 0x040d },
{ func040c_hide, 0x040c },
{ func0401_defend, 0x0401 },
{ func0402_init_king, 0x0402 },
{ func0403_init_maian_leader, 0x0403 },
{ func0404_maian, 0x0404 },
{ func0405_init_maian, 0x0405 },
{ func0406_skedar, 0x0406 },
{ func0407_king1_skedar, 0x0407 },
{ func0408_king2_skedar, 0x0408 },
{ func0409_king3_skedar, 0x0409 },
{ func1002_intro, 0x040a },
{ func040b_outro, 0x040b },
{ func1002_intro, 0x0c00 },
{ func040b_outro, 0x0c01 },
{ NULL, 0 },
};