Introduce ai2asm

This commit is contained in:
Ryan Dwyer
2022-11-02 17:35:19 +10:00
parent a5b4d0017b
commit 7841b59eef
263 changed files with 89079 additions and 71659 deletions
+57 -3
View File
@@ -55,9 +55,9 @@ PAL = 0
# If any value is not big enough, the build system will tell you which one needs
# to be changed and what to change it to.
ROMALLOCATION_DATA = 0x015000
ROMALLOCATION_LIB = 0x038800
ROMALLOCATION_GAME = 0x100000
ROMALLOCATION_DATA = 0x00e000
ROMALLOCATION_LIB = 0x024000
ROMALLOCATION_GAME = 0x0d0000
# ROM_SIZE - The desired ROM size in megabytes.
#
@@ -227,6 +227,45 @@ O_FILES := \
$(LANG_O_FILES) \
$(PADS_O_FILES) \
$(TILES_O_FILES) \
$(B_DIR)/ailists/gailistsasm.o \
$(B_DIR)/ailists/setupdishasm.o \
$(B_DIR)/ailists/setupameasm.o \
$(B_DIR)/ailists/setupearasm.o \
$(B_DIR)/ailists/setuparkasm.o \
$(B_DIR)/ailists/setupeldasm.o \
$(B_DIR)/ailists/setuppeteasm.o \
$(B_DIR)/ailists/setupdepoasm.o \
$(B_DIR)/ailists/setuplueasm.o \
$(B_DIR)/ailists/setuplipasm.o \
$(B_DIR)/ailists/setuptraasm.o \
$(B_DIR)/ailists/setupcaveasm.o \
$(B_DIR)/ailists/setupritasm.o \
$(B_DIR)/ailists/setupaztasm.o \
$(B_DIR)/ailists/setupdamasm.o \
$(B_DIR)/ailists/setuppamasm.o \
$(B_DIR)/ailists/setupimpasm.o \
$(B_DIR)/ailists/setupleeasm.o \
$(B_DIR)/ailists/setupshoasm.o \
$(B_DIR)/ailists/setupwaxasm.o \
$(B_DIR)/ailists/setupsevasm.o \
$(B_DIR)/ailists/setupstatasm.o \
$(B_DIR)/ailists/setupateasm.o \
$(B_DIR)/ailists/mp_setuparecasm.o \
$(B_DIR)/ailists/mp_setupcradasm.o \
$(B_DIR)/ailists/mp_setupcrypasm.o \
$(B_DIR)/ailists/mp_setupjunasm.o \
$(B_DIR)/ailists/mp_setupmp1asm.o \
$(B_DIR)/ailists/mp_setupmp3asm.o \
$(B_DIR)/ailists/mp_setupmp4asm.o \
$(B_DIR)/ailists/mp_setupmp5asm.o \
$(B_DIR)/ailists/mp_setupmp9asm.o \
$(B_DIR)/ailists/mp_setupmp10asm.o \
$(B_DIR)/ailists/mp_setupmp11asm.o \
$(B_DIR)/ailists/mp_setupmp12asm.o \
$(B_DIR)/ailists/mp_setupmp13asm.o \
$(B_DIR)/ailists/mp_setupmp15asm.o \
$(B_DIR)/ailists/mp_setupoatasm.o \
$(B_DIR)/ailists/mp_setuprefasm.o \
$(B_DIR)/assets/animations.o \
$(B_DIR)/assets/copyrightZ.o \
$(B_DIR)/assets/files/list.o \
@@ -715,6 +754,18 @@ $(B_DIR)/assets/files/%.o: $(B_DIR)/assets/files/%
$(B_DIR)/assets/files/%.bin: $(B_DIR)/assets/files/%.elf
$(TOOLCHAIN)-objcopy $< $@ -O binary
################################################################################
# AI lists
$(B_DIR)/ailists/%.elf: $(B_DIR)/ailists/%.o
TOOLCHAIN=$(TOOLCHAIN) tools/mksimpleelf $< $@
$(B_DIR)/ailists/%.bin: $(B_DIR)/ailists/%.elf
$(TOOLCHAIN)-objcopy $< $@ -O binary
$(B_DIR)/ailists/%asm.s: $(B_DIR)/ailists/%.bin
tools/ai2asm/ai2asm.py $< > $@
################################################################################
# Miscellaneous
@@ -769,6 +820,9 @@ $(B_DIR)/%.o: src/%.s
@mkdir -p $(dir $@)
cpp -P -Wno-trigraphs -I include -I include/PR -I src/include $(C_DEFINES) -D_LANGUAGE_ASSEMBLY -D_MIPSEB $< | $(AS) $(ASFLAGS) -o $@
$(B_DIR)/ailists/%.o: $(B_DIR)/ailists/%.s
cpp -P -Wno-trigraphs -I include -I include/PR -I src/include $(C_DEFINES) -D_LANGUAGE_ASSEMBLY -D_MIPSEB $< | $(AS) $(ASFLAGS) -G 0 -o $@
$(B_DIR)/assets/%.o: $(A_DIR)/%.c $(RECOMP_FILES)
@mkdir -p $(dir $@)
$(CC) -c $(CFLAGS) -o $@ $<
+47 -87
View File
@@ -30,6 +30,52 @@ Nintendo's library contains several dozen video mode configurations, but only fo
Camdraw code contains mostly unused code. They are functions for editing Perfect Head photos. Removing them frees up more memory.
## AI bytecode and interpreter replaced with ASM
The retail game implements AI using a bytecode system as described:
* Byte data representing AI commands is included in the stage's setup file (decomp implements this with C macros).
* The game engine interprets the bytecode at runtime, using bitwise operations to read each command's type and then execute a handler function based on the type.
* The handler function typically reads its parameters by doing further bitwise operations, before executing its action.
* Each handler moves a global "aioffset" forward by the size of the command.
PDHP does the following:
* The AI list macros are separated from the setup files.
* The AI list macros are compiled into the same bytecode as before.
* A new Python script called ai2asm then reads the compiled bytecode and converts them into assembly statements.
* The assembly statements are then compiled into machine code.
* The stage's machine code file is loaded into memory during stage load.
* When a character's AI is executed, the machine code is executed directly.
Here's an example of original macros:
u8 ailist_0009[] = {
set_action(MA_NORMAL, FALSE)
set_returnlist(CHR_SELF, GAILIST_IDLE_0009)
stop_chr
label(0x0c)
yield
goto_first(0x0c)
endlist
};
And here's the ASM of the same ailist that it now produces during the build process (prior to assembler reordering):
glabel ailist_0009
li $a0, 0x01
li $a1, 0
jal aiSetAction
li $a0, 0xfd
li $a1, 0x0009
jal aiSetReturnList
jal aiStop
.L0009_0c_00:
jal aiYield
b .L0009_0c_00
## Room preloading
The retail game loads room graphics data on the fly, based on rooms near the player and the direction they're looking. These rooms are then unloaded when not needed. When loading a room, the game uses a blocking DMA call which results in a lag frame (or a few if loading several rooms). There's extra processing associated with this as well, such as unzipping the graphics data and scanning the display lists.
@@ -48,93 +94,7 @@ Some stages have a bytecode script that overrides room visibility based on which
PDHP removes the scripting entirely and implements the custom visibility logic directly in C.
## AI: dprint command removed
All AI commands have a fixed-length, with the exception of the dprint command. The dprint command takes a variable-length string and prints it to the developer's console.
PDHP removes all uses of the command, which allows it to optimise the "how long is this command" function. In fact it's no longer a function at all, but a direct lookup into an array.
## AI: Pointers for AI offsets
Characters keep track of where they are in their AI processing by storing a pointer to their current AI "list", as well as an integer byte offset within that list. These have to be added together to read their current command, and then again for the next commnd and so on.
PDHP changes the aioffset value to be a pointer as well so it can be read directly, thus skipping the addition on each command invocation.
## AI: Preprocessing gotos and labels
In the retail game, AI command lists have a "label" command which is just a marker in the command list. Other commands can conditionally or unconditionally jump to a label. To implement this, the C engine has to iterate through the commands to find the label.
PDHP changes this so the goto statements specify a byte offset instead, and the labels are removed. When taking a branch, the C engine can now jump directly to the offset instead of searching for the label. This is achieved by preprocessing and rewriting each AI list during stage load.
## AI: Excessive reads and writes to g_Vars properties removed
In the retail game, the AI execution engine looks somewhat like this (simplified):
while (g_Vars.ailist) {
u8 *cmd = g_Vars.ailist + g_Vars.aioffset;
s32 type = cmd[0] << 8 | cmd[1];
yielding = g_CommandHandlers[type]();
if (yielding) {
break;
}
}
And a minimal handler looks like this:
bool aiSomeHandler(void)
{
u8 *cmd = g_Vars.ailist + g_Vars.aioffset;
// do something with cmd here
g_Vars.aioffset += 2; // or more if command has parameters
return false;
}
PDHP does a few improvements in this area:
* The handlers now accept an argument which is a pointer to the command being processed.
* The handlers increment the given command pointer and return it without writing it back to g_Vars.
* Unless the handler wants to yield, in which case it returns NULL.
* The loop code reuses the command pointer from the previous invocation.
* The loop code removes the unnecessary test on `g_Vars.ailist`.
The new loop runner code looks like this:
u8 *cmd = g_Vars.aioffset;
do {
s32 type = (cmd[0] << 8) | cmd[1];
cmd = g_CommandPointers[type](cmd);
} while (cmd);
And a new handler looks like this:
u8 *aiSomeHandler(u8 *cmd)
{
// do something with cmd here
cmd += 2; // or more if command has parameters
return cmd;
}
## AI: Single byte command IDs
The AI loop typically has to load two bytes (two lbu instructions) from the command pointer and bitwise-or them together to get the command type/ID. It can't use a single load-half instruction because the data is not aligned.
PDHP improves this by issuing new IDs to all the commands. All commands have been categorised into into critical and non-critical commands based on the number of usages and whether they occur during main gameplay (as opposed to during cutscenes or level startup). PDHP makes it so critical commands can be identified by the first byte only, while non-critical commands will have 0xff as the first byte and then use the second byte to identify them. What this means is that the vast majority of commands that are run during gameplay are identified and executed using a single lbu instruction, which is almost as good as having single-byte command IDs.
Additionally, commands which are not used or are unreachable have been completely removed.
## AI: Inlined handlers
PDHP moves all AI command handler functions in the same file as the AI loop, adds the `static` keyword on all of the handler functions, and implements them as a switch rather than a lookup array. The compiler (gcc) inlines them into the main AI loop.
## AI: Timer comparisons changed to integers
## AI Timer comparisons changed to integers
Each character maintains a timer which can be used for AI purposes. The timer is stored as an integer, where each unit is one 60th of a second. When AI scripting wants to set or check the timer, it specifies an integer value in 60ths of a second as well.
+3 -1
View File
@@ -88,6 +88,8 @@
build/ROMID/game/body.o (section); \
build/ROMID/game/chraction.o (section); \
build/ROMID/game/chrai.o (section); \
build/ROMID/game/chraiasm.o (section); \
build/ROMID/game/chraicommands.o (section); \
build/ROMID/game/prop.o (section); \
build/ROMID/game/propobj.o (section); \
build/ROMID/game/propobjbss.o (section); \
@@ -147,7 +149,7 @@
build/ROMID/game/debug.o (section); \
build/ROMID/game/debug3.o (section); \
build/ROMID/game/stubs/game_11eff0.o (section); \
build/ROMID/game/gailists.o (section); \
build/ROMID/ailists/gailistsasm.o (section); \
build/ROMID/game/modeldata/general.o (section); \
build/ROMID/game/modeldata/basic.o (section); \
build/ROMID/game/modeldata/chrgun.o (section); \
+50
View File
@@ -58,6 +58,17 @@
} \
END_SEG(font##name)
#define AILISTS_SEG(name) \
__rampos = _gameSegmentEnd; \
BEGIN_SEG(name) \
{ \
build/ROMID/ailists/name.o (.text); \
build/ROMID/ailists/name.o (.data); \
build/ROMID/ailists/name.o (.rodata); \
. = ALIGN(0x10); \
} \
END_SEG(name)
/**
* Placeholder segments are used to mark the
* locations where zipped content will go.
@@ -282,6 +293,45 @@ SECTIONS
__rompos = _inflateSegmentRomEnd + ROMALLOCATION_GAME;
AILISTS_SEG(setupdishasm)
AILISTS_SEG(setupameasm)
AILISTS_SEG(setupearasm)
AILISTS_SEG(setuparkasm)
AILISTS_SEG(setupeldasm)
AILISTS_SEG(setuppeteasm)
AILISTS_SEG(setupdepoasm)
AILISTS_SEG(setuplueasm)
AILISTS_SEG(setuplipasm)
AILISTS_SEG(setuptraasm)
AILISTS_SEG(setupcaveasm)
AILISTS_SEG(setupritasm)
AILISTS_SEG(setupaztasm)
AILISTS_SEG(setupdamasm)
AILISTS_SEG(setuppamasm)
AILISTS_SEG(setupimpasm)
AILISTS_SEG(setupleeasm)
AILISTS_SEG(setupshoasm)
AILISTS_SEG(setupwaxasm)
AILISTS_SEG(setupsevasm)
AILISTS_SEG(setupstatasm)
AILISTS_SEG(setupateasm)
AILISTS_SEG(mp_setuparecasm)
AILISTS_SEG(mp_setupcradasm)
AILISTS_SEG(mp_setupcrypasm)
AILISTS_SEG(mp_setupjunasm)
AILISTS_SEG(mp_setupmp1asm)
AILISTS_SEG(mp_setupmp3asm)
AILISTS_SEG(mp_setupmp4asm)
AILISTS_SEG(mp_setupmp5asm)
AILISTS_SEG(mp_setupmp9asm)
AILISTS_SEG(mp_setupmp10asm)
AILISTS_SEG(mp_setupmp11asm)
AILISTS_SEG(mp_setupmp12asm)
AILISTS_SEG(mp_setupmp13asm)
AILISTS_SEG(mp_setupmp15asm)
AILISTS_SEG(mp_setupoatasm)
AILISTS_SEG(mp_setuprefasm)
/***************************************************************************
* garbage
* -------------------------------------------------------------------------
+11 -73
View File
@@ -15,6 +15,8 @@
* guard combat.
*/
struct ailist *tmp = g_GlobalAilists;
/**
* @ailist GAILIST_IDLE
*/
@@ -2778,7 +2780,7 @@ u8 func0007_alerted[] = {
label(LABEL_TARGETGONE)
set_chr_hiddenflag(CHR_SELF, CHRHFLAG_00002000)
stop_chr
if_chr_deadish(CHR_SELF, /*goto*/ 0x16)
if_chr_deadish(CHR_SELF, /*goto*/ 0x0a)
if_can_see_target(/*goto*/ 0x13)
set_alertness(0)
set_self_flag_bankx(CHRFLAG1_SEARCHSAMEROOM, BANK_1)
@@ -3021,62 +3023,47 @@ u8 func000d_init_combat[] = {
* @ailist GAILIST_COMBAT_WITH_TARGET
*/
u8 func000c_combat_with_target_chr[] = {
label(0xbb)
if_chr_is_skedar(CHR_SELF, /*goto*/ 0x16)
#if VERSION >= VERSION_NTSC_1_0
if_num_human_players_lt(2, /*goto*/ 0x16)
label(0x13)
#endif
if_target_is_player(/*goto*/ 0x13)
goto_next(0x16)
label(0x13)
if_stage_is_not(STAGE_WAR, /*goto*/ 0x13)
#if VERSION >= VERSION_NTSC_1_0
if_num_human_players_lt(2, /*goto*/ 0x13)
#endif
goto_next(0x16)
label(0x13)
if_stage_is_not(STAGE_DEEPSEA, /*goto*/ 0x13)
#if VERSION >= VERSION_NTSC_1_0
if_num_human_players_lt(2, /*goto*/ 0x13)
#endif
goto_next(0x16)
label(0x13)
if_stage_is_not(STAGE_DEFENSE, /*goto*/ 0x13)
#if VERSION >= VERSION_NTSC_1_0
if_num_human_players_lt(2, /*goto*/ 0x13)
#endif
goto_next(0x16)
label(0x13)
if_stage_is_not(STAGE_WAR, /*goto*/ 0x13)
#if VERSION >= VERSION_NTSC_1_0
if_num_human_players_lt(2, /*goto*/ 0x13)
#endif
goto_next(0x16)
label(0x13)
if_stage_is_not(STAGE_ESCAPE, /*goto*/ 0x13)
#if VERSION >= VERSION_NTSC_1_0
if_num_human_players_lt(2, /*goto*/ 0x13)
#endif
goto_next(0x16)
label(0x13)
if_stage_is_not(STAGE_ATTACKSHIP, /*goto*/ 0x13)
#if VERSION >= VERSION_NTSC_1_0
if_num_human_players_lt(2, /*goto*/ 0x13)
#endif
goto_next(0x16)
label(0x13)
if_stage_is_not(STAGE_CRASHSITE, /*goto*/ 0x13)
#if VERSION >= VERSION_NTSC_1_0
if_num_human_players_lt(2, /*goto*/ 0x13)
#endif
goto_next(0x16)
// Solo mode, or co-op/counter-op on any other stage
@@ -3119,13 +3106,10 @@ u8 func000c_combat_with_target_chr[] = {
label(0x13)
if_num_times_shot_lt(1, /*goto*/ 0xb2)
if_just_injured(CHR_SELF, /*goto*/ 0x16)
#if VERSION >= VERSION_NTSC_1_0
if_has_gun(CHR_SELF, /*goto*/ 0xb2)
set_self_flag_bankx(CHRFLAG1_HANDCOMBATONLY, BANK_1)
#endif
goto_next(0xb2)
// Injured
label(0x16)
restart_timer
@@ -3140,9 +3124,7 @@ u8 func000c_combat_with_target_chr[] = {
label(0x16)
if_chr_stopped(/*goto*/ 0x13)
#if VERSION >= VERSION_NTSC_1_0
if_timer_gt(180, /*goto*/ 0x13)
#endif
endloop(0x1d)
label(0x13)
@@ -3179,59 +3161,43 @@ u8 func000c_combat_with_target_chr[] = {
label(0xb3)
if_chr_is_skedar(CHR_SELF, /*goto*/ 0x16)
#if VERSION >= VERSION_NTSC_1_0
label(0x13)
#endif
if_target_is_player(/*goto*/ 0x13)
goto_next(0x16)
label(0x13)
if_stage_is_not(STAGE_WAR, /*goto*/ 0x13)
#if VERSION >= VERSION_NTSC_1_0
if_num_human_players_lt(2, /*goto*/ 0x13)
#endif
goto_next(0x16)
label(0x13)
if_stage_is_not(STAGE_DEEPSEA, /*goto*/ 0x13)
#if VERSION >= VERSION_NTSC_1_0
if_num_human_players_lt(2, /*goto*/ 0x13)
#endif
goto_next(0x16)
label(0x13)
if_stage_is_not(STAGE_DEFENSE, /*goto*/ 0x13)
#if VERSION >= VERSION_NTSC_1_0
if_num_human_players_lt(2, /*goto*/ 0x13)
#endif
goto_next(0x16)
label(0x13)
if_stage_is_not(STAGE_WAR, /*goto*/ 0x13)
#if VERSION >= VERSION_NTSC_1_0
if_num_human_players_lt(2, /*goto*/ 0x13)
#endif
goto_next(0x16)
label(0x13)
if_stage_is_not(STAGE_ESCAPE, /*goto*/ 0x13)
#if VERSION >= VERSION_NTSC_1_0
if_num_human_players_lt(2, /*goto*/ 0x13)
#endif
goto_next(0x16)
label(0x13)
if_stage_is_not(STAGE_ATTACKSHIP, /*goto*/ 0x13)
#if VERSION >= VERSION_NTSC_1_0
if_num_human_players_lt(2, /*goto*/ 0x13)
#endif
goto_next(0x16)
label(0x13)
if_stage_is_not(STAGE_CRASHSITE, /*goto*/ 0x13)
#if VERSION >= VERSION_NTSC_1_0
if_num_human_players_lt(2, /*goto*/ 0x13)
#endif
goto_next(0x16)
label(0x13)
@@ -3306,6 +3272,9 @@ u8 func000c_combat_with_target_chr[] = {
if_chr_in_view(/*goto*/ 0xbb)
goto_first(0xb4)
label(0xbb)
goto_first(0xbb)
label(0xb5)
restart_timer
try_run_to_target(/*goto*/ 0xbc)
@@ -3316,14 +3285,10 @@ u8 func000c_combat_with_target_chr[] = {
goto_next(0xc0)
label(0x13)
#if VERSION >= VERSION_NTSC_1_0
if_chr_has_hiddenflag(CHR_TARGET, CHRHFLAG_CLOAKED, /*goto*/ 0x13)
#endif
if_can_see_attack_target(/*goto*/ 0xbf)
#if VERSION >= VERSION_NTSC_1_0
label(0x13)
#endif
if_timer_gt(120, /*goto*/ 0xc0)
endloop(0xbc)
@@ -3438,7 +3403,6 @@ u8 func000c_combat_with_target_chr[] = {
say_quip(CHR_BOND, QUIP_ATTACK3, 0x19, 0x02, 0xff, BANK_0, 0x00, 0x00)
say_quip(CHR_BOND, QUIP_ATTACK4, 0x19, 0x02, 0x01, BANK_0, 0x00, 0x00)
#if VERSION >= VERSION_NTSC_1_0
beginloop(0xe2)
if_chr_deadish(CHR_TARGET, /*goto*/ 0xc1)
if_chrpresets_target_is_different(/*goto*/ 0x16)
@@ -3447,15 +3411,6 @@ u8 func000c_combat_with_target_chr[] = {
label(0x16)
if_chr_stopped(/*goto*/ 0xc1)
endloop(0xe2)
#else
if_chr_deadish(CHR_TARGET, /*goto*/ 0xc1)
if_chrpresets_target_is_different(/*goto*/ 0xe2)
goto_next(0xc1)
beginloop(0xe2)
if_chr_stopped(/*goto*/ 0xc1)
endloop(0xe2)
#endif
label(0x13)
restart_timer
@@ -3538,39 +3493,25 @@ u8 func000c_combat_with_target_chr[] = {
goto_next(0xc5)
label(0x13)
#if VERSION >= VERSION_NTSC_1_0
if_enemy_distance_lt_and_los(400, /*goto*/ 0x15)
if_chr_has_hiddenflag(CHR_TARGET, CHRHFLAG_CLOAKED, /*goto*/ 0x13)
#else
if_enemy_distance_lt_and_los(400, /*goto*/ 0x13)
#endif
if_can_see_attack_target(/*goto*/ 0xca)
#if VERSION >= VERSION_NTSC_1_0
label(0x13)
#endif
if_timer_gt(200, /*goto*/ 0x16)
endloop(0xc9)
label(0x16)
#if VERSION >= VERSION_NTSC_1_0
#endif
goto_first(0xb3)
#if VERSION >= VERSION_NTSC_1_0
label(0x15)
#else
label(0x13)
#endif
goto_first(0xb5)
label(0xa3)
goto_first(0xc1)
label(0xca)
#if VERSION >= VERSION_NTSC_1_0
restart_timer
#endif
if_chr_is_skedar(CHR_SELF, /*goto*/ 0x16)
goto_next(0x17)
@@ -3579,9 +3520,7 @@ u8 func000c_combat_with_target_chr[] = {
label(0x17)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0xcb)
#if VERSION >= VERSION_NTSC_1_0
goto_next(0x16)
#endif
label(0xcb)
say_quip(CHR_BOND, QUIP_ATTACK3, 0x19, 0x02, 0xff, BANK_0, 0x00, 0x00)
@@ -3617,9 +3556,6 @@ u8 func000c_combat_with_target_chr[] = {
label(0x13)
if_self_flag_bankx_eq(CHRFLAG0_NOHEAR, TRUE, BANK_0, /*goto*/ 0x13)
#if VERSION < VERSION_NTSC_1_0
set_target_to_enemy_on_same_floor(/*goto*/ 0x16)
#endif
label(0x13)
goto_next(0xcf)
@@ -3670,12 +3606,10 @@ u8 func000c_combat_with_target_chr[] = {
label(0xcf)
if_self_flag_bankx_eq(CHRFLAG0_CAMP, FALSE, BANK_0, /*goto*/ 0x13)
#if VERSION >= VERSION_NTSC_1_0
if_target_is_player(/*goto*/ 0x16)
goto_next(0x13)
label(0x16)
#endif
return
label(0x13)
@@ -4720,6 +4654,7 @@ u8 func001d_search_for_player[] = {
* @ailist GAILIST_RELATED_TO_SPAWNING
*/
u8 func001f_related_to_spawning[] = {
label(0x23)
if_chr_deadish(CHR_SELF, /*goto*/ 0x13)
goto_next(0x16)
@@ -4775,6 +4710,9 @@ u8 func001f_related_to_spawning[] = {
label(0x16)
goto_first(0x1a)
label(0x23)
goto_first(0x23)
label(0x1e)
say_quip(CHR_BOND, QUIP_SEEPLAYER, 0xff, 0x03, 0xff, BANK_0, 0x00, 0x00)
+46
View File
@@ -0,0 +1,46 @@
//
// Defection
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
endintro
};
s32 path00[] = {
-1,
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func0000_0034[] = {
endlist
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+38
View File
@@ -0,0 +1,38 @@
//
// Stage ID 0x18
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+153
View File
@@ -0,0 +1,153 @@
//
// Ravine (MP)
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
tag(0x00, 1)
lift(0x0100, MODEL_RAVINELIFT, PAD_AREC_00BC, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x00bc, 0x00bb, 0x00ba, -1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000071c, 0x0010aaaa, 0x00000000)
weapon(0x0200, MODEL_ROOFGUN, PAD_AREC_00BD, OBJFLAG_00000001, 0, 0, 240)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00C7, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00C8, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0200, 0x0000, PAD_AREC_00BE, OBJFLAG_00000001, 0, 0, 241)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00C9, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00CA, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0200, 0x0000, PAD_AREC_00BF, OBJFLAG_00000001, 0, 0, 242)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00CB, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00CC, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0133, 0x0000, PAD_AREC_00C0, OBJFLAG_00000001, 0, 0, 243)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00CD, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00CE, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0133, 0x0000, PAD_AREC_00C1, OBJFLAG_00000001, 0, 0, 244)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00CF, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00D0, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0133, 0x0000, PAD_AREC_00C2, OBJFLAG_00000001, 0, 0, 245)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00D1, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00D2, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_AREC_00C3, OBJFLAG_00000001, 0, 0, 246)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00D3, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00D4, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_AREC_00C4, OBJFLAG_00000001, 0, 0, 247)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00D5, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00D6, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_AREC_00C5, OBJFLAG_00000001, 0, 0, 248)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00D7, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00D8, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_AREC_00C6, OBJFLAG_00000001, 0, 0, 249)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00D9, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00DA, OBJFLAG_00000001, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00DB, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00DC, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00DD, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00DE, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00DF, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00E0, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00E1, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00E2, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00E3, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00E4, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00E5, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00E6, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00E7, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00E8, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00E9, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00EA, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00EB, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00EC, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00ED, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00EE, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
endprops
};
s32 intro[] = {
spawn(PAD_AREC_00B0)
spawn(PAD_AREC_00B1)
spawn(PAD_AREC_00B2)
spawn(PAD_AREC_00B3)
spawn(PAD_AREC_00B4)
spawn(PAD_AREC_00B5)
spawn(PAD_AREC_00B6)
spawn(PAD_AREC_00B7)
spawn(PAD_AREC_00B8)
spawn(PAD_AREC_00B9)
hill(0x0066)
hill(0x008d)
hill(0x0071)
hill(0x007c)
hill(0x005c)
case(0, 0x009a)
case_respawn(0, 0x0094)
case_respawn(0, 0x0096)
case_respawn(0, 0x0097)
case_respawn(0, 0x0099)
case_respawn(0, 0x0098)
case_respawn(0, 0x0095)
case(1, 0x00a1)
case_respawn(1, 0x009b)
case_respawn(1, 0x009c)
case_respawn(1, 0x009d)
case_respawn(1, 0x009e)
case_respawn(1, 0x009f)
case_respawn(1, 0x00a0)
case(2, 0x00a8)
case_respawn(2, 0x00a2)
case_respawn(2, 0x00a3)
case_respawn(2, 0x00a4)
case_respawn(2, 0x00a5)
case_respawn(2, 0x00a6)
case_respawn(2, 0x00a7)
case(3, 0x00af)
case_respawn(3, 0x00a9)
case_respawn(3, 0x00aa)
case_respawn(3, 0x00ab)
case_respawn(3, 0x00ac)
case_respawn(3, 0x00ad)
case_respawn(3, 0x00ae)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func1001_start_lift[] = {
activate_lift(1, 0x00)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1000_1b30[] = {
mp_init_simulants
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
struct ailist ailists[] = {
{ func1000_1b30, 0x1000 },
{ func1001_start_lift, 0x1001 },
{ NULL, 0 },
};
+42
View File
@@ -0,0 +1,42 @@
//
// Extraction
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
endintro
};
s32 path00[] = {
-1,
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+46
View File
@@ -0,0 +1,46 @@
//
// Stage ID 0x2e
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
endintro
};
s32 path00[] = {
-1,
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func0000_0034[] = {
endlist
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+39
View File
@@ -0,0 +1,39 @@
//
// Duel
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+46
View File
@@ -0,0 +1,46 @@
//
// Crash Site
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
endintro
};
s32 path00[] = {
-1,
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func0000_0034[] = {
endlist
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+38
View File
@@ -0,0 +1,38 @@
//
// Stage ID 0x28
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+38
View File
@@ -0,0 +1,38 @@
//
// Air Base
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+145
View File
@@ -0,0 +1,145 @@
//
// Pipes (MP)
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
weapon(0x0100, 0x0000, PAD_CRAD_00E2, OBJFLAG_00000001, 0, 0, 240)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_CRAD_00EC, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_CRAD_00ED, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_CRAD_00E3, OBJFLAG_00000001, 0, 0, 241)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_CRAD_00EE, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_CRAD_00EF, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_CRAD_00E4, OBJFLAG_00000001, 0, 0, 242)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_CRAD_00F0, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_CRAD_00F1, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_CRAD_00E5, OBJFLAG_00000001, 0, 0, 243)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_CRAD_00F2, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_CRAD_00F3, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_CRAD_00E6, OBJFLAG_00000001, 0, 0, 244)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_CRAD_00F4, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_CRAD_00F5, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_CRAD_00E7, OBJFLAG_00000001, 0, 0, 245)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_CRAD_00F6, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_CRAD_00F7, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_CRAD_00E8, OBJFLAG_00000001, 0, 0, 246)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_CRAD_00F8, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_CRAD_00F9, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_CRAD_00E9, OBJFLAG_00000001, 0, 0, 247)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_CRAD_00FA, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_CRAD_00FB, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_CRAD_00EA, OBJFLAG_00000001, 0, 0, 248)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_CRAD_00FC, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_CRAD_00FD, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_CRAD_00EB, OBJFLAG_00000001, 0, 0, 249)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_CRAD_00FE, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_CRAD_00FF, OBJFLAG_00000001, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_CRAD_0100, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
tag(0x01, 1)
lift(0x0100, MODEL_A51_LIFT_THINWALL, PAD_CRAD_0104, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_80000000, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x0104, 0x0103, -1, -1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000005b0, 0x00050000, 0x00000000)
endprops
};
s32 intro[] = {
spawn(PAD_CRAD_00CD)
spawn(PAD_CRAD_00CE)
spawn(PAD_CRAD_00CF)
spawn(PAD_CRAD_00D0)
spawn(PAD_CRAD_00D1)
spawn(PAD_CRAD_00D2)
spawn(PAD_CRAD_00D3)
spawn(PAD_CRAD_00D4)
spawn(PAD_CRAD_00D5)
spawn(PAD_CRAD_00D6)
spawn(PAD_CRAD_00D7)
spawn(PAD_CRAD_00D8)
spawn(PAD_CRAD_00D9)
spawn(PAD_CRAD_00DA)
spawn(PAD_CRAD_00DB)
spawn(PAD_CRAD_00DC)
spawn(PAD_CRAD_00DD)
spawn(PAD_CRAD_00DE)
spawn(PAD_CRAD_00DF)
spawn(PAD_CRAD_00E0)
spawn(PAD_CRAD_00E1)
hill(0x0019)
hill(0x009e)
hill(0x0007)
hill(0x001b)
hill(0x001f)
case(0, 0x00b7)
case_respawn(0, 0x00b1)
case_respawn(0, 0x00b2)
case_respawn(0, 0x00b3)
case_respawn(0, 0x00b4)
case_respawn(0, 0x00b5)
case_respawn(0, 0x00b6)
case(1, 0x00be)
case_respawn(1, 0x00b8)
case_respawn(1, 0x00b9)
case_respawn(1, 0x00ba)
case_respawn(1, 0x00bb)
case_respawn(1, 0x00bc)
case_respawn(1, 0x00bd)
case(2, 0x00c5)
case_respawn(2, 0x00bf)
case_respawn(2, 0x00c0)
case_respawn(2, 0x00c1)
case_respawn(2, 0x00c2)
case_respawn(2, 0x00c3)
case_respawn(2, 0x00c4)
case(3, 0x00cc)
case_respawn(3, 0x00c6)
case_respawn(3, 0x00c7)
case_respawn(3, 0x00c8)
case_respawn(3, 0x00c9)
case_respawn(3, 0x00ca)
case_respawn(3, 0x00cb)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func1001_start_lift[] = {
activate_lift(1, 0x01)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1000_14e0[] = {
mp_init_simulants
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
struct ailist ailists[] = {
{ func1000_14e0, 0x1000 },
{ func1001_start_lift, 0x1001 },
{ NULL, 0 },
};
+140
View File
@@ -0,0 +1,140 @@
//
// G5 Building (MP)
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
weapon(0x0100, 0x0000, PAD_CRYP_00B2, OBJFLAG_00000001, 0, 0, 240)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_CRYP_00BC, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_CRYP_00BD, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_CRYP_00B3, OBJFLAG_00000001, 0, 0, 241)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_CRYP_00BE, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_CRYP_00BF, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_CRYP_00B4, OBJFLAG_00000001, 0, 0, 242)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_CRYP_00C0, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_CRYP_00C1, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_CRYP_00B5, OBJFLAG_00000001, 0, 0, 243)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_CRYP_00C2, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_CRYP_00C3, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_CRYP_00B6, OBJFLAG_00000001, 0, 0, 244)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_CRYP_00C4, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_CRYP_00C5, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_CRYP_00B7, OBJFLAG_00000001, 0, 0, 245)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_CRYP_00C6, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_CRYP_00C7, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_CRYP_00B8, OBJFLAG_00000001, 0, 0, 246)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_CRYP_00C8, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_CRYP_00C9, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_CRYP_00B9, OBJFLAG_00000001, 0, 0, 247)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_CRYP_00CA, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_CRYP_00CB, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_CRYP_00BA, OBJFLAG_00000001, 0, 0, 248)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_CRYP_00CC, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_CRYP_00CD, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_CRYP_00BB, OBJFLAG_00000001, 0, 0, 249)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_CRYP_00CE, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_CRYP_00CF, OBJFLAG_00000001, 0, 0, 1000)
endprops
};
s32 intro[] = {
spawn(PAD_CRYP_009D)
spawn(PAD_CRYP_009E)
spawn(PAD_CRYP_009F)
spawn(PAD_CRYP_00A0)
spawn(PAD_CRYP_00A1)
spawn(PAD_CRYP_00A2)
spawn(PAD_CRYP_00A3)
spawn(PAD_CRYP_00A4)
spawn(PAD_CRYP_00A5)
spawn(PAD_CRYP_00A6)
spawn(PAD_CRYP_00A7)
spawn(PAD_CRYP_00A8)
spawn(PAD_CRYP_00A9)
spawn(PAD_CRYP_00AA)
spawn(PAD_CRYP_00AB)
spawn(PAD_CRYP_00AC)
spawn(PAD_CRYP_00AD)
spawn(PAD_CRYP_00AE)
spawn(PAD_CRYP_00AF)
spawn(PAD_CRYP_00B0)
spawn(PAD_CRYP_00B1)
case(0, 0x0087)
case_respawn(0, 0x0081)
case_respawn(0, 0x0082)
case_respawn(0, 0x0083)
case_respawn(0, 0x0084)
case_respawn(0, 0x0085)
case_respawn(0, 0x0086)
case(1, 0x0088)
case_respawn(1, 0x0089)
case_respawn(1, 0x008a)
case_respawn(1, 0x008b)
case_respawn(1, 0x008c)
case_respawn(1, 0x008d)
case_respawn(1, 0x008e)
case(2, 0x0095)
case_respawn(2, 0x008f)
case_respawn(2, 0x0090)
case_respawn(2, 0x0091)
case_respawn(2, 0x0092)
case_respawn(2, 0x0093)
case_respawn(2, 0x0094)
case(3, 0x009c)
case_respawn(3, 0x0096)
case_respawn(3, 0x0097)
case_respawn(3, 0x0098)
case_respawn(3, 0x0099)
case_respawn(3, 0x009a)
case_respawn(3, 0x009b)
hill(0x0033)
hill(0x004d)
hill(0x0056)
hill(0x001a)
hill(0x0066)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func1001_13d4[] = {
set_wind_speed(11)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1000_13e0[] = {
mp_init_simulants
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
struct ailist ailists[] = {
{ func1000_13e0, 0x1000 },
{ func1001_13d4, 0x1001 },
{ NULL, 0 },
};
+48
View File
@@ -0,0 +1,48 @@
//
// Pelagic II
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
char *text_stagename = "B Y E L O M O R Y E D A M\n";
char *text_briefing1 = "mi6 has confirmed the existence of a secret chemical warfare facility at the arkhangelsk dam, ussr. its heavily guarded location and workings are a cause for major concern. nerve gas produced there has been turning up in the hands of hostile regimes around the world and deals with international terrorists have been rumoured. this facility should be destroyed without prejudice.\n";
char *text_briefing2 = "the area around the dam is well defended against a full scale military attack but they won't be expecting a lone agent. i've looked at the recon reports and decided that the easiest way to gain entrance to the weapons factory will be to bungee jump down the face of the dam. safe and simple. just throw yourself off the top and remember to look before you leap old chap.\n";
char *text_briefing3 = "information concerning shipping and contacts is stored on a computer system in a secret ops room within the dam.with this covert modem connected to their satellite link we can intercept this data when a backup is carried out.\n";
char *text_briefing4 = "hardly a lover's leap, james. be careful though, i hate to think of you falling for anyone else.\n";
char *text_objective1 = "neutralize all alarms\n";
char *text_objective2 = "install covert modem\n";
char *text_objective3 = "intercept data backup\n";
char *text_objective4 = "bungee jump from platform\n";
char *text_objective5 = "Byelomorye Dam, Archangel, USSR\n";
u32 props[] = {
endprops
};
s32 intro[] = {
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+38
View File
@@ -0,0 +1,38 @@
//
// G5 Building
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+38
View File
@@ -0,0 +1,38 @@
//
// Stage ID 0x1a
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+38
View File
@@ -0,0 +1,38 @@
//
// CI Training
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+48
View File
@@ -0,0 +1,48 @@
//
// Investigation
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
intro_weapon(WEAPON_UNARMED, -1)
outfit(OUTFIT_DEFAULT)
endintro
};
s32 path00[] = {
-1,
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func0000_004c[] = {
endlist
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+48
View File
@@ -0,0 +1,48 @@
//
// Villa
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
intro_weapon(WEAPON_UNARMED, -1)
outfit(OUTFIT_DEFAULT)
endintro
};
s32 path00[] = {
-1,
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func0000_004c[] = {
endlist
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+46
View File
@@ -0,0 +1,46 @@
//
// Defense
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
endintro
};
s32 path00[] = {
-1,
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func0000_0034[] = {
endlist
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+139
View File
@@ -0,0 +1,139 @@
//
// Temple (MP)
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
weapon(0x0100, 0x0000, PAD_JUN_0093, OBJFLAG_00000001, 0, 0, 240)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_JUN_009D, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_JUN_009E, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_JUN_0094, OBJFLAG_00000001, 0, 0, 241)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_JUN_009F, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_JUN_00A0, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_JUN_0095, OBJFLAG_00000001, 0, 0, 242)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_JUN_00A1, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_JUN_00A2, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_JUN_0096, OBJFLAG_00000001, 0, 0, 243)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_JUN_00A3, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_JUN_00A4, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_JUN_0097, OBJFLAG_00000001, 0, 0, 244)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_JUN_00A5, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_JUN_00A6, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_JUN_0098, OBJFLAG_00000001, 0, 0, 245)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_JUN_00A7, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_JUN_00A8, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_JUN_0099, OBJFLAG_00000001, 0, 0, 246)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_JUN_00AA, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_JUN_00A9, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_JUN_009A, OBJFLAG_00000001, 0, 0, 247)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_JUN_00AB, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_JUN_00AC, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_JUN_009B, OBJFLAG_00000001, 0, 0, 248)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_JUN_00AD, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_JUN_00AE, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_JUN_009C, OBJFLAG_00000001, 0, 0, 249)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_JUN_00AF, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_JUN_00B0, OBJFLAG_00000001, 0, 0, 1000)
door(0x0100, MODEL_TDOOR, PAD_JUN_008D, OBJFLAG_DEACTIVATED, OBJFLAG2_80000000, 0, 1000, 0x0000f333, 0x0000551e, 0x00002aaa, 0x00002aaa, 0x000000da, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x000005dc, 0x00000000, 0x00000000, 0x00001000)
door(0x0100, MODEL_TDOOR, PAD_JUN_008E, OBJFLAG_DEACTIVATED, OBJFLAG2_80000000, 0, 1000, 0x0000f333, 0x0000551e, 0x00002aaa, 0x00002aaa, 0x000000da, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x000005dc, 0x00000000, 0x00000000, 0x00001000)
door(0x0100, MODEL_TDOOR, PAD_JUN_008F, OBJFLAG_DEACTIVATED, OBJFLAG2_80000000, 0, 1000, 0x0000f333, 0x0000551e, 0x00002aaa, 0x00002aaa, 0x000000da, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x000005dc, 0x00000000, 0x00000000, 0x00001000)
door(0x0100, MODEL_TDOOR, PAD_JUN_0090, OBJFLAG_DEACTIVATED, OBJFLAG2_80000000, 0, 1000, 0x0000f333, 0x0000551e, 0x00002aaa, 0x00002aaa, 0x000000da, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x000005dc, 0x00000000, 0x00000000, 0x00001000)
door(0x0100, MODEL_TDOOR, PAD_JUN_0091, OBJFLAG_DEACTIVATED, OBJFLAG2_80000000, 0, 1000, 0x0000f333, 0x0000551e, 0x00002aaa, 0x00002aaa, 0x000000da, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x000005dc, 0x00000000, 0x00000000, 0x00001000)
door(0x0100, MODEL_TDOOR, PAD_JUN_0092, OBJFLAG_DEACTIVATED, OBJFLAG2_80000000, 0, 1000, 0x0000f333, 0x0000551e, 0x00002aaa, 0x00002aaa, 0x000000da, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x000005dc, 0x00000000, 0x00000000, 0x00001000)
endprops
};
s32 intro[] = {
spawn(PAD_JUN_001C)
spawn(PAD_JUN_001D)
spawn(PAD_JUN_001E)
spawn(PAD_JUN_001F)
spawn(PAD_JUN_0020)
spawn(PAD_JUN_0021)
spawn(PAD_JUN_0022)
spawn(PAD_JUN_0023)
spawn(PAD_JUN_0024)
spawn(PAD_JUN_0025)
spawn(PAD_JUN_0026)
spawn(PAD_JUN_0027)
case(0, 0x0006)
case_respawn(0, 0x0000)
case_respawn(0, 0x0001)
case_respawn(0, 0x0002)
case_respawn(0, 0x0003)
case_respawn(0, 0x0004)
case_respawn(0, 0x0005)
case(1, 0x000d)
case_respawn(1, 0x0007)
case_respawn(1, 0x0008)
case_respawn(1, 0x0009)
case_respawn(1, 0x000a)
case_respawn(1, 0x000b)
case_respawn(1, 0x000c)
case(2, 0x0014)
case_respawn(2, 0x000e)
case_respawn(2, 0x000f)
case_respawn(2, 0x0010)
case_respawn(2, 0x0011)
case_respawn(2, 0x0012)
case_respawn(2, 0x0013)
case(3, 0x0015)
case_respawn(3, 0x0016)
case_respawn(3, 0x0017)
case_respawn(3, 0x0018)
case_respawn(3, 0x0019)
case_respawn(3, 0x001a)
case_respawn(3, 0x001b)
hill(0x0072)
hill(0x005a)
hill(0x0080)
hill(0x007a)
outfit(OUTFIT_DEFAULT)
endintro
};
s32 path00[] = {
-1,
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 unregistered_func1[] = {
endlist
};
u8 func1000_1898[] = {
mp_init_simulants
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
struct ailist ailists[] = {
{ func1000_1898, 0x1000 },
{ NULL, 0 },
};
+39
View File
@@ -0,0 +1,39 @@
//
// Stage ID 0x50
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+48
View File
@@ -0,0 +1,48 @@
//
// Attack Ship
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
intro_weapon(WEAPON_UNARMED, -1)
outfit(OUTFIT_DEFAULT)
endintro
};
s32 path00[] = {
-1,
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func0000_004c[] = {
endlist
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+47
View File
@@ -0,0 +1,47 @@
//
// Stage ID 0x36
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
endintro
};
s32 path00[] = {
-1,
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func0000_003c[] = {
endlist
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+46
View File
@@ -0,0 +1,46 @@
//
// Rescue
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
endintro
};
s32 path00[] = {
-1,
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func0000_0034[] = {
endlist
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+46
View File
@@ -0,0 +1,46 @@
//
// Infiltration
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
endintro
};
s32 path00[] = {
-1,
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func0000_0034[] = {
endlist
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+171
View File
@@ -0,0 +1,171 @@
//
// Base (MP)
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
weapon(0x0100, 0x0000, PAD_MP1_002C, OBJFLAG_00000001, 0, 0, 240)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP1_0036, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP1_0037, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP1_002D, OBJFLAG_00000001, 0, 0, 241)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP1_0038, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP1_0039, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP1_002E, OBJFLAG_00000001, 0, 0, 242)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP1_003A, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP1_003B, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP1_002F, OBJFLAG_00000001, 0, 0, 243)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP1_003C, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP1_003D, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP1_0030, OBJFLAG_00000001, 0, 0, 244)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP1_003E, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP1_003F, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP1_0031, OBJFLAG_00000001, 0, 0, 245)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP1_0040, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP1_0041, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP1_0032, OBJFLAG_00000001, 0, 0, 246)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP1_0042, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP1_0043, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP1_0033, OBJFLAG_00000001, 0, 0, 247)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP1_0044, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP1_0045, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP1_0034, OBJFLAG_00000001, 0, 0, 248)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP1_0046, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP1_0047, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP1_0035, OBJFLAG_00000001, 0, 0, 249)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP1_0048, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP1_0049, OBJFLAG_00000001, 0, 0, 1000)
tag(0x01, 1)
lift(0x0100, MODEL_A51_LIFT_THINWALL, PAD_MP1_004C, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_80000000, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x004c, 0x004d, -1, -1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00001555, 0x00320000, 0x00000000)
tag(0x02, 1)
lift(0x0100, MODEL_A51_LIFT_THINWALL, PAD_MP1_004B, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_80000000, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x004b, 0x004a, -1, -1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00001555, 0x00320000, 0x00000000)
door(0x0100, MODEL_DD_LABDOOR, PAD_MP1_004E, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000100)
door(0x0100, MODEL_DD_LABDOOR, PAD_MP1_004F, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000100)
door(0x0100, MODEL_DD_LABDOOR, PAD_MP1_0051, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000100)
door(0x0100, MODEL_DD_LABDOOR, PAD_MP1_0050, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000100)
door(0x0100, MODEL_DD_LABDOOR, PAD_MP1_0052, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f851, 0x0000f333, 0x00035555, 0x00035555, 0x00000666, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000100)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_MP1_0053, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_MP1_0054, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_MP1_0055, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_MP1_0056, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_MP1_0057, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_MP1_0058, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_MP1_0059, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_MP1_005A, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_MP1_005B, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_MP1_005C, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_MP1_005D, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_MP1_005E, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_MP1_005F, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_MP1_0060, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_MP1_0061, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_MP1_0062, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_MP1_0063, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_MP1_0064, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_MP1_0065, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_MP1_0066, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_MP1_0067, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_MP1_0068, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_MP1_0069, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_MP1_006A, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
endprops
};
s32 intro[] = {
spawn(PAD_MP1_001C)
spawn(PAD_MP1_001D)
spawn(PAD_MP1_001E)
spawn(PAD_MP1_001F)
spawn(PAD_MP1_0020)
spawn(PAD_MP1_0021)
spawn(PAD_MP1_0022)
spawn(PAD_MP1_0023)
spawn(PAD_MP1_0024)
spawn(PAD_MP1_0025)
spawn(PAD_MP1_0026)
spawn(PAD_MP1_0027)
spawn(PAD_MP1_0028)
spawn(PAD_MP1_0029)
spawn(PAD_MP1_002A)
spawn(PAD_MP1_002B)
case(0, 0x0006)
case_respawn(0, 0x0000)
case_respawn(0, 0x0001)
case_respawn(0, 0x0002)
case_respawn(0, 0x0003)
case_respawn(0, 0x0004)
case_respawn(0, 0x0005)
case(1, 0x000d)
case_respawn(1, 0x0007)
case_respawn(1, 0x0008)
case_respawn(1, 0x0009)
case_respawn(1, 0x000a)
case_respawn(1, 0x000b)
case_respawn(1, 0x000c)
case(2, 0x0014)
case_respawn(2, 0x000e)
case_respawn(2, 0x000f)
case_respawn(2, 0x0010)
case_respawn(2, 0x0011)
case_respawn(2, 0x0012)
case_respawn(2, 0x0013)
case(3, 0x001b)
case_respawn(3, 0x0015)
case_respawn(3, 0x0016)
case_respawn(3, 0x0017)
case_respawn(3, 0x0018)
case_respawn(3, 0x0019)
case_respawn(3, 0x001a)
hill(0x00db)
hill(0x00f0)
hill(0x00aa)
hill(0x00b7)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func1001_start_lifts[] = {
activate_lift(1, 0x01)
activate_lift(2, 0x02)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1000_21d4[] = {
mp_init_simulants
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
struct ailist ailists[] = {
{ func1000_21d4, 0x1000 },
{ func1001_start_lifts, 0x1001 },
{ NULL, 0 },
};
+144
View File
@@ -0,0 +1,144 @@
//
// Sewers (MP)
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
weapon(0x0100, 0x0000, PAD_MP10_0099, OBJFLAG_00000001, 0, 0, 240)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP10_00A3, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP10_00A4, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP10_009A, OBJFLAG_00000001, 0, 0, 241)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP10_00A5, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP10_00A6, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP10_009B, OBJFLAG_00000001, 0, 0, 242)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP10_00A7, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP10_00A8, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP10_009C, OBJFLAG_00000001, 0, 0, 243)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP10_00A9, OBJFLAG_00000008, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP10_00AA, OBJFLAG_00000008, 0, 0, 1000)
stdobject(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP10_00B7, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP10_00B8, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP10_00B9, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP10_009D, OBJFLAG_00000001, 0, 0, 244)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP10_00AB, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP10_00AC, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP10_009E, OBJFLAG_00000001, 0, 0, 245)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP10_00AD, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP10_00AE, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP10_009F, OBJFLAG_00000001, 0, 0, 246)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP10_00AF, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP10_00B0, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP10_00A0, OBJFLAG_00000001, 0, 0, 247)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP10_00B1, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP10_00B2, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP10_00A1, OBJFLAG_00000001, 0, 0, 248)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP10_00B3, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP10_00B4, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP10_00A2, OBJFLAG_00000001, 0, 0, 249)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP10_00B5, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP10_00B6, OBJFLAG_00000001, 0, 0, 1000)
tag(0x00, 1)
lift(0x0100, MODEL_A51_LIFT_THINWALL, PAD_MP10_006A, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x006a, 0x006b, -1, -1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00001c71, 0x0074aaaa, 0x00000000)
tag(0x01, 1)
lift(0x0100, MODEL_A51_LIFT_THINWALL, PAD_MP10_006C, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_80000000, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x006c, 0x006d, -1, -1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00001c71, 0x0074aaaa, 0x00000000)
tag(0x02, 1)
lift(0x0100, MODEL_A51_LIFT_THINWALL, PAD_MP10_006E, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_80000000, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x006e, 0x006f, -1, -1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00001c71, 0x0074aaaa, 0x00000000)
endprops
};
s32 intro[] = {
spawn(PAD_MP10_008C)
spawn(PAD_MP10_008D)
spawn(PAD_MP10_008E)
spawn(PAD_MP10_008F)
spawn(PAD_MP10_0090)
spawn(PAD_MP10_0091)
spawn(PAD_MP10_0092)
spawn(PAD_MP10_0093)
spawn(PAD_MP10_0094)
spawn(PAD_MP10_0095)
spawn(PAD_MP10_0096)
spawn(PAD_MP10_0097)
spawn(PAD_MP10_0098)
case(0, 0x0070)
case_respawn(0, 0x0071)
case_respawn(0, 0x0072)
case_respawn(0, 0x0073)
case_respawn(0, 0x0074)
case_respawn(0, 0x0075)
case_respawn(0, 0x0076)
case(1, 0x0077)
case_respawn(1, 0x0078)
case_respawn(1, 0x0079)
case_respawn(1, 0x007a)
case_respawn(1, 0x007b)
case_respawn(1, 0x007c)
case_respawn(1, 0x007d)
case(2, 0x007e)
case_respawn(2, 0x007f)
case_respawn(2, 0x0080)
case_respawn(2, 0x0081)
case_respawn(2, 0x0082)
case_respawn(2, 0x0083)
case_respawn(2, 0x0084)
case(3, 0x008b)
case_respawn(3, 0x0085)
case_respawn(3, 0x0086)
case_respawn(3, 0x0087)
case_respawn(3, 0x0088)
case_respawn(3, 0x0089)
case_respawn(3, 0x008a)
hill(0x005f)
hill(0x002d)
hill(0x003a)
hill(0x002a)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func1001_start_lifts[] = {
activate_lift(1, 0x00)
activate_lift(2, 0x01)
activate_lift(3, 0x02)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1000_1680[] = {
mp_init_simulants
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
struct ailist ailists[] = {
{ func1000_1680, 0x1000 },
{ func1001_start_lifts, 0x1001 },
{ NULL, 0 },
};
+159
View File
@@ -0,0 +1,159 @@
//
// Felicity (MP)
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
weapon(0x0100, 0x0000, PAD_MP11_0028, OBJFLAG_00000001, 0, 0, 240)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP11_0032, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP11_0033, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP11_0029, OBJFLAG_00000001, 0, 0, 241)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP11_0034, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP11_0035, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP11_002A, OBJFLAG_00000001, 0, 0, 242)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP11_0036, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP11_0037, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP11_002B, OBJFLAG_00000001, 0, 0, 243)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP11_0038, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP11_0039, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP11_002C, OBJFLAG_00000001, 0, 0, 244)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP11_003A, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP11_003B, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP11_002D, OBJFLAG_00000001, 0, 0, 245)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP11_003C, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP11_003D, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP11_002E, OBJFLAG_00000001, 0, 0, 246)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP11_003E, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP11_003F, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP11_002F, OBJFLAG_00000001, 0, 0, 247)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP11_0040, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP11_0041, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP11_0030, OBJFLAG_00000001, 0, 0, 248)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP11_0043, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP11_0042, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP11_0031, OBJFLAG_00000001, 0, 0, 249)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP11_0044, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP11_0045, OBJFLAG_00000001, 0, 0, 1000)
door(0x0100, MODEL_DD_DR_NONREF, PAD_MP11_0046, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x00010000, 0x00002aaa, 0x00002aaa, 0x000002c5, DOORFLAG_0004, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000800)
door(0x0100, MODEL_DD_DR_NONREF, PAD_MP11_0047, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x00010000, 0x00002aaa, 0x00002aaa, 0x000002c5, DOORFLAG_0004, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000800)
door(0x0100, MODEL_DD_DR_NONREF, PAD_MP11_0048, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x00010000, 0x00002aaa, 0x00002aaa, 0x000002c5, DOORFLAG_0004, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000800)
door(0x0100, MODEL_DD_DR_NONREF, PAD_MP11_0049, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x00010000, 0x00002aaa, 0x00002aaa, 0x000002c5, DOORFLAG_0004, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000800)
door(0x0100, MODEL_DD_DR_NONREF, PAD_MP11_004A, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x00010000, 0x00002aaa, 0x00002aaa, 0x000002c5, DOORFLAG_0004, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000800)
door(0x0100, MODEL_DD_DR_NONREF, PAD_MP11_004B, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x00010000, 0x00002aaa, 0x00002aaa, 0x000002c5, DOORFLAG_0004, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000800)
door(0x0100, MODEL_DD_DR_NONREF, PAD_MP11_004C, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x00010000, 0x00002aaa, 0x00002aaa, 0x000002c5, DOORFLAG_0004, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000800)
#if VERSION >= VERSION_NTSC_1_0
tinted_glass(0x0100, MODEL_DD_WINDOW, PAD_MP11_0062, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x012c0258)
#else
tinted_glass(0x0100, MODEL_DD_WINDOW, PAD_MP11_0062, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE, 0, 1000, 0x012c0258)
#endif
tinted_glass(0x0100, MODEL_DD_WINDOW, PAD_MP11_0063, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x012c0258)
tinted_glass(0x0100, MODEL_DD_WINDOW, PAD_MP11_0064, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x012c0258)
tinted_glass(0x0100, MODEL_DD_WINDOW, PAD_MP11_0065, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x012c0258)
tinted_glass(0x0100, MODEL_DD_WINDOW, PAD_MP11_0066, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x012c0258)
tinted_glass(0x0100, MODEL_DD_WINDOW, PAD_MP11_0067, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x012c0258)
tinted_glass(0x0100, MODEL_DD_WINDOW, PAD_MP11_0068, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x012c0258)
tinted_glass(0x0100, MODEL_DD_WINDOW, PAD_MP11_0069, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_INVINCIBLE | OBJFLAG_AISEETHROUGH, OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x012c0258)
door(0x0100, MODEL_DD_DR_NONREF, PAD_MP11_004D, OBJFLAG_DEACTIVATED | OBJFLAG_80000000, 0, 0, 1000, 0x00640000, 0x03e80000, 0x01f40000, 0x01f40000, 0x00030000, 0, DOORTYPE_SWINGING, 0x00000000, 0x000005dc, 0x00000000, 0x00000000, 0x00000800)
door(0x0100, MODEL_DD_DR_NONREF, PAD_MP11_004E, OBJFLAG_DEACTIVATED | OBJFLAG_80000000, 0, 0, 1000, 0x00640000, 0x03e80000, 0x01f40000, 0x01f40000, 0x00030000, 0, DOORTYPE_SWINGING, 0x00000000, 0x000005dc, 0x00000000, 0x00000000, 0x00000800)
door(0x0100, MODEL_DD_DR_NONREF, PAD_MP11_004F, OBJFLAG_DEACTIVATED | OBJFLAG_80000000, OBJFLAG2_INTERACTCHECKLOS, 0, 1000, 0x00640000, 0x03e80000, 0x01f40000, 0x01f40000, 0x00030000, 0, DOORTYPE_SWINGING, 0x00000000, 0x000005dc, 0x00000000, 0x00000001, 0x00000800)
door(0x0100, MODEL_DD_DR_NONREF, PAD_MP11_0050, OBJFLAG_DEACTIVATED | OBJFLAG_20000000 | OBJFLAG_80000000, OBJFLAG2_INTERACTCHECKLOS, 0, 1000, 0x00640000, 0x03e80000, 0x01f40000, 0x01f40000, 0x00030000, 0, DOORTYPE_SWINGING, 0x00000000, 0x000005dc, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_DD_DR_NONREF, PAD_MP11_0051, OBJFLAG_DEACTIVATED | OBJFLAG_80000000, 0, 0, 1000, 0x00640000, 0x03e80000, 0x01f40000, 0x01f40000, 0x00030000, 0, DOORTYPE_SWINGING, 0x00000000, 0x000005dc, 0x00000000, 0x00000001, 0x00000800)
door(0x0100, MODEL_DD_DR_NONREF, PAD_MP11_0052, OBJFLAG_DEACTIVATED | OBJFLAG_20000000 | OBJFLAG_80000000, 0, 0, 1000, 0x00640000, 0x03e80000, 0x01f40000, 0x01f40000, 0x00030000, 0, DOORTYPE_SWINGING, 0x00000000, 0x000005dc, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_DD_DR_NONREF, PAD_MP11_0053, OBJFLAG_DEACTIVATED | OBJFLAG_80000000, 0, 0, 1000, 0x00640000, 0x03e80000, 0x01f40000, 0x01f40000, 0x00030000, 0, DOORTYPE_SWINGING, 0x00000000, 0x000005dc, 0x00000000, 0x00000001, 0x00000800)
door(0x0100, MODEL_DD_DR_NONREF, PAD_MP11_0054, OBJFLAG_DEACTIVATED | OBJFLAG_20000000 | OBJFLAG_80000000, 0, 0, 1000, 0x00640000, 0x03e80000, 0x01f40000, 0x01f40000, 0x00030000, 0, DOORTYPE_SWINGING, 0x00000000, 0x000005dc, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_DD_DR_NONREF, PAD_MP11_0055, OBJFLAG_DEACTIVATED | OBJFLAG_80000000, OBJFLAG2_INTERACTCHECKLOS, 0, 1000, 0x00640000, 0x03e80000, 0x01f40000, 0x01f40000, 0x00030000, 0, DOORTYPE_SWINGING, 0x00000000, 0x000005dc, 0x00000000, 0x00000001, 0x00000800)
door(0x0100, MODEL_DD_DR_NONREF, PAD_MP11_0056, OBJFLAG_DEACTIVATED | OBJFLAG_20000000 | OBJFLAG_80000000, OBJFLAG2_INTERACTCHECKLOS, 0, 1000, 0x00640000, 0x03e80000, 0x01f40000, 0x01f40000, 0x00030000, 0, DOORTYPE_SWINGING, 0x00000000, 0x000005dc, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_DD_DR_NONREF, PAD_MP11_0058, OBJFLAG_DEACTIVATED | OBJFLAG_20000000 | OBJFLAG_80000000, 0, 0, 1000, 0x00640000, 0x03e80000, 0x01f40000, 0x01f40000, 0x00030000, 0, DOORTYPE_SWINGING, 0x00000000, 0x000005dc, 0x00000000, 0x00000000, 0x00000800)
door(0x0100, MODEL_DD_DR_NONREF, PAD_MP11_0057, OBJFLAG_DEACTIVATED | OBJFLAG_20000000 | OBJFLAG_80000000, 0, 0, 1000, 0x00640000, 0x03e80000, 0x01f40000, 0x01f40000, 0x00030000, 0, DOORTYPE_SWINGING, 0x00000000, 0x000005dc, 0x00000000, 0x00000000, 0x00000800)
endprops
};
s32 intro[] = {
spawn(PAD_MP11_001C)
spawn(PAD_MP11_001D)
spawn(PAD_MP11_001E)
spawn(PAD_MP11_001F)
spawn(PAD_MP11_0020)
spawn(PAD_MP11_0021)
spawn(PAD_MP11_0022)
spawn(PAD_MP11_0023)
spawn(PAD_MP11_0024)
spawn(PAD_MP11_0025)
spawn(PAD_MP11_0026)
spawn(PAD_MP11_0027)
case(0, 0x0006)
case_respawn(0, 0x0000)
case_respawn(0, 0x0001)
case_respawn(0, 0x0002)
case_respawn(0, 0x0003)
case_respawn(0, 0x0004)
case_respawn(0, 0x0005)
case(1, 0x000d)
case_respawn(1, 0x0007)
case_respawn(1, 0x0008)
case_respawn(1, 0x0009)
case_respawn(1, 0x000a)
case_respawn(1, 0x000b)
case_respawn(1, 0x000c)
case(2, 0x0014)
case_respawn(2, 0x000e)
case_respawn(2, 0x000f)
case_respawn(2, 0x0010)
case_respawn(2, 0x0011)
case_respawn(2, 0x0012)
case_respawn(2, 0x0013)
case(3, 0x001b)
case_respawn(3, 0x0015)
case_respawn(3, 0x0016)
case_respawn(3, 0x0017)
case_respawn(3, 0x0018)
case_respawn(3, 0x0019)
case_respawn(3, 0x001a)
hill(0x0091)
hill(0x008b)
hill(0x0071)
hill(0x009f)
outfit(OUTFIT_DEFAULT)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func1000_26fc[] = {
mp_init_simulants
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
struct ailist ailists[] = {
{ func1000_26fc, 0x1000 },
{ NULL, 0 },
};
+213
View File
@@ -0,0 +1,213 @@
//
// Fortress (MP)
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
weapon(0x0100, 0x0000, PAD_MP12_01A7, OBJFLAG_00000001, 0, 0, 244)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01C0, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01C1, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP12_01A8, OBJFLAG_00000001, 0, 0, 241)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01C2, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01C3, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP12_01A9, OBJFLAG_00000001, 0, 0, 242)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01C4, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01C5, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP12_01AA, OBJFLAG_00000001, 0, 0, 243)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01C6, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01C7, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP12_01AB, OBJFLAG_00000001, 0, 0, 240)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01C8, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01C9, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP12_01AC, OBJFLAG_00000001, 0, 0, 245)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01CA, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01CB, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP12_01AD, OBJFLAG_00000001, 0, 0, 244)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01CC, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01CD, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP12_01AE, OBJFLAG_00000001, 0, 0, 241)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01CE, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01CF, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP12_01AF, OBJFLAG_00000001, 0, 0, 242)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01D0, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01D1, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP12_01B0, OBJFLAG_00000001, 0, 0, 243)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01D2, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01D3, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP12_01B1, OBJFLAG_00000001, 0, 0, 240)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01D4, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01D5, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP12_01B2, OBJFLAG_00000001, 0, 0, 245)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01D6, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01D7, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP12_01B3, OBJFLAG_00000001, 0, 0, 244)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01D8, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01D9, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP12_01B4, OBJFLAG_00000001, 0, 0, 241)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01DA, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01DB, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP12_01B5, OBJFLAG_00000001, 0, 0, 242)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01DC, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01DD, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP12_01B6, OBJFLAG_00000001, 0, 0, 243)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01DE, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01DF, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP12_01B7, OBJFLAG_00000001, 0, 0, 240)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01E0, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01E1, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP12_01B8, OBJFLAG_00000001, 0, 0, 245)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01E3, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01E2, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP12_01B9, OBJFLAG_00000001, 0, 0, 244)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01E4, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01E5, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP12_01BA, OBJFLAG_00000001, 0, 0, 241)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01E6, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01E7, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP12_01BB, OBJFLAG_00000001, 0, 0, 242)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01E8, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01E9, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP12_01BC, OBJFLAG_00000001, 0, 0, 243)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01EA, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01EB, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP12_01BD, OBJFLAG_00000001, 0, 0, 240)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01EC, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01ED, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP12_01BE, OBJFLAG_00000001, 0, 0, 245)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01EE, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01EF, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP12_01BF, OBJFLAG_00000001, 0, 0, 242)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01F0, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00b3, MODEL_MULTI_AMMO_CRATE, PAD_MP12_01F1, OBJFLAG_00000001, 0, 0, 1000)
tag(0x01, 1)
lift(0x0100, MODEL_A51_LIFT_THINWALL, PAD_MP12_01F2, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_80000000, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x01f2, 0x01f3, -1, -1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000011c7, 0x00040000, 0x00000000)
tag(0x02, 1)
lift(0x0100, MODEL_A51_LIFT_THINWALL, PAD_MP12_01F4, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_80000000, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x01f4, 0x01f5, -1, -1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000011c7, 0x00040000, 0x00000000)
tag(0x03, 1)
lift(0x0100, MODEL_A51_LIFT_THINWALL, PAD_MP12_01F6, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_80000000, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x01f6, 0x01f7, -1, -1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000011c7, 0x00040000, 0x00000000)
tag(0x04, 1)
lift(0x0100, MODEL_A51_LIFT_THINWALL, PAD_MP12_01F8, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_80000000, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x01f8, 0x01f9, -1, -1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000011c7, 0x00040000, 0x00000000)
tag(0x05, 1)
lift(0x0100, MODEL_A51_LIFT_THINWALL, PAD_MP12_01FA, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_80000000, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x01fa, 0x01fb, -1, -1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000011c7, 0x00040000, 0x00000000)
tag(0x06, 1)
lift(0x0100, MODEL_A51_LIFT_THINWALL, PAD_MP12_01FC, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_80000000, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x01fc, 0x01fd, -1, -1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000011c7, 0x00040000, 0x00000000)
tag(0x07, 1)
lift(0x0100, MODEL_A51_LIFT_THINWALL, PAD_MP12_01FE, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_80000000, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x01fe, 0x01ff, -1, -1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000011c7, 0x00040000, 0x00000000)
tag(0x08, 1)
lift(0x0100, MODEL_A51_LIFT_THINWALL, PAD_MP12_0200, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE | OBJFLAG_80000000, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x0200, 0x0201, -1, -1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000011c7, 0x00040000, 0x00000000)
door(0x0100, MODEL_CH_SHUTTER1, PAD_MP12_019E, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000fd70, 0x0000e666, 0x00003333, 0x00014000, 0x00280000, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x000000b4, 0x00000000, 0x00000000, 0x00000a00)
door(0x0100, MODEL_CH_SHUTTER1, PAD_MP12_019F, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000fd70, 0x0000e666, 0x00003333, 0x00014000, 0x00280000, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000a00)
door(0x0100, MODEL_CH_SHUTTER1, PAD_MP12_01A0, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000fd70, 0x0000e666, 0x00003333, 0x00014000, 0x00280000, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x000000f0, 0x00000000, 0x00000000, 0x00000a00)
door(0x0100, MODEL_CH_SHUTTER1, PAD_MP12_01A1, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000fd70, 0x0000e666, 0x00003333, 0x00014000, 0x00280000, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x000000b4, 0x00000000, 0x00000000, 0x00000a00)
door(0x0100, MODEL_CH_SHUTTER1, PAD_MP12_01A2, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000fd70, 0x0000e666, 0x00003333, 0x00014000, 0x00280000, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000a00)
door(0x0100, MODEL_CH_SHUTTER1, PAD_MP12_01A3, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000fd70, 0x0000e666, 0x00003333, 0x00014000, 0x00280000, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x000000f0, 0x00000000, 0x00000000, 0x00000a00)
door(0x0100, MODEL_CH_SHUTTER1, PAD_MP12_019B, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000fd70, 0x0000e666, 0x00003333, 0x00014000, 0x00280000, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x000000b4, 0x00000000, 0x00000000, 0x00000a00)
door(0x0100, MODEL_CH_SHUTTER1, PAD_MP12_019C, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000fd70, 0x0000e666, 0x00003333, 0x00014000, 0x00280000, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000a00)
door(0x0100, MODEL_CH_SHUTTER1, PAD_MP12_019D, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000fd70, 0x0000e666, 0x00003333, 0x00014000, 0x00280000, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x000000f0, 0x00000000, 0x00000000, 0x00000a00)
door(0x0100, MODEL_CH_SHUTTER1, PAD_MP12_01A4, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000fd70, 0x0000e666, 0x00003333, 0x00014000, 0x00280000, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x000000b4, 0x00000000, 0x00000000, 0x00000a00)
door(0x0100, MODEL_CH_SHUTTER1, PAD_MP12_01A5, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000fd70, 0x0000e666, 0x00003333, 0x00014000, 0x00280000, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000000, 0x00000a00)
door(0x0100, MODEL_CH_SHUTTER1, PAD_MP12_01A6, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000fd70, 0x0000e666, 0x00003333, 0x00014000, 0x00280000, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x000000f0, 0x00000000, 0x00000000, 0x00000a00)
endprops
};
s32 intro[] = {
spawn(PAD_MP12_018F)
spawn(PAD_MP12_0190)
spawn(PAD_MP12_0191)
spawn(PAD_MP12_0192)
spawn(PAD_MP12_0193)
spawn(PAD_MP12_0194)
spawn(PAD_MP12_0195)
spawn(PAD_MP12_0196)
spawn(PAD_MP12_0197)
spawn(PAD_MP12_0198)
spawn(PAD_MP12_0199)
spawn(PAD_MP12_019A)
case(0, 0x0188)
case_respawn(0, 0x0189)
case_respawn(0, 0x018a)
case_respawn(0, 0x018b)
case_respawn(0, 0x018c)
case_respawn(0, 0x018d)
case_respawn(0, 0x018e)
case(1, 0x0179)
case_respawn(1, 0x0178)
case_respawn(1, 0x0177)
case_respawn(1, 0x0176)
case_respawn(1, 0x0175)
case_respawn(1, 0x0174)
case_respawn(1, 0x0173)
case(2, 0x017a)
case_respawn(2, 0x017b)
case_respawn(2, 0x017c)
case_respawn(2, 0x017d)
case_respawn(2, 0x017e)
case_respawn(2, 0x017f)
case_respawn(2, 0x0180)
case(3, 0x0187)
case_respawn(3, 0x0186)
case_respawn(3, 0x0185)
case_respawn(3, 0x0184)
case_respawn(3, 0x0183)
case_respawn(3, 0x0182)
case_respawn(3, 0x0181)
hill(0x0009)
hill(0x0029)
hill(0x00f8)
hill(0x00b4)
hill(0x009a)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func1001_start_lifts[] = {
activate_lift(1, 0x01)
activate_lift(2, 0x02)
activate_lift(3, 0x03)
activate_lift(4, 0x04)
activate_lift(5, 0x05)
activate_lift(6, 0x06)
activate_lift(7, 0x07)
activate_lift(8, 0x08)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1000_3cc8[] = {
mp_init_simulants
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
struct ailist ailists[] = {
{ func1000_3cc8, 0x1000 },
{ func1001_start_lifts, 0x1001 },
{ NULL, 0 },
};
+124
View File
@@ -0,0 +1,124 @@
//
// Villa (MP)
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
weapon(0x0100, 0x0000, PAD_MP13_00BD, OBJFLAG_00000001, 0, 0, 240)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP13_00C7, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP13_00C8, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP13_00BE, OBJFLAG_00000001, 0, 0, 241)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP13_00C9, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP13_00CA, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP13_00BF, OBJFLAG_00000001, 0, 0, 242)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP13_00CB, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP13_00CC, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP13_00C0, OBJFLAG_00000001, 0, 0, 243)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP13_00CD, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP13_00CE, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP13_00C1, OBJFLAG_00000001, 0, 0, 244)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP13_00CF, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP13_00D0, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP13_00C2, OBJFLAG_00000001, 0, 0, 245)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP13_00D1, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP13_00D2, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP13_00C3, OBJFLAG_00000001, 0, 0, 246)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP13_00D3, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP13_00D4, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP13_00C4, OBJFLAG_00000001, 0, 0, 247)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP13_00D5, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP13_00D6, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP13_00C5, OBJFLAG_00000001, 0, 0, 248)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP13_00D7, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP13_00D8, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP13_00C6, OBJFLAG_00000001, 0, 0, 249)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP13_00D9, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP13_00DA, OBJFLAG_00000001, 0, 0, 1000)
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
spawn(PAD_MP13_001C)
spawn(PAD_MP13_001D)
spawn(PAD_MP13_001E)
spawn(PAD_MP13_001F)
spawn(PAD_MP13_0020)
spawn(PAD_MP13_0021)
spawn(PAD_MP13_0022)
spawn(PAD_MP13_0023)
spawn(PAD_MP13_0024)
spawn(PAD_MP13_0025)
spawn(PAD_MP13_0026)
spawn(PAD_MP13_0027)
case(0, 0x0006)
case_respawn(0, 0x0000)
case_respawn(0, 0x0001)
case_respawn(0, 0x0002)
case_respawn(0, 0x0003)
case_respawn(0, 0x0004)
case_respawn(0, 0x0005)
case(1, 0x000d)
case_respawn(1, 0x0007)
case_respawn(1, 0x0008)
case_respawn(1, 0x0009)
case_respawn(1, 0x000a)
case_respawn(1, 0x000b)
case_respawn(1, 0x000c)
case(2, 0x0013)
case_respawn(2, 0x000e)
case_respawn(2, 0x000f)
case_respawn(2, 0x0010)
case_respawn(2, 0x0011)
case_respawn(2, 0x0012)
case_respawn(2, 0x0014)
case(3, 0x001b)
case_respawn(3, 0x0015)
case_respawn(3, 0x0016)
case_respawn(3, 0x0017)
case_respawn(3, 0x0018)
case_respawn(3, 0x0019)
case_respawn(3, 0x001a)
hill(0x004c)
hill(0x008e)
hill(0x00aa)
hill(0x0043)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func1000_1368[] = {
mp_init_simulants
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
struct ailist ailists[] = {
{ func1000_1368, 0x1000 },
{ NULL, 0 },
};
+47
View File
@@ -0,0 +1,47 @@
//
// Stage ID 0x46
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 unregistered_func1[] = {
mp_init_simulants
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+172
View File
@@ -0,0 +1,172 @@
//
// Grid (MP)
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
weapon(0x0100, 0x0000, PAD_MP15_00AC, OBJFLAG_00000001, 0, 0, 240)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP15_00B7, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP15_00B8, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP15_00AD, OBJFLAG_00000001, 0, 0, 241)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP15_00B9, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP15_00BA, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP15_00AE, OBJFLAG_00000001, 0, 0, 242)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP15_00BB, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP15_00BC, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP15_00AF, OBJFLAG_00000001, 0, 0, 243)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP15_00BD, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP15_00BE, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP15_00B0, OBJFLAG_00000001, 0, 0, 244)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP15_00BF, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP15_00C0, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP15_00B1, OBJFLAG_00000001, 0, 0, 245)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP15_00C1, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP15_00C2, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP15_00B3, OBJFLAG_00000001, 0, 0, 246)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP15_00C5, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP15_00C6, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP15_00B4, OBJFLAG_00000001, 0, 0, 247)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP15_00C7, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP15_00C8, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP15_00B5, OBJFLAG_00000001, 0, 0, 248)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP15_00C9, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP15_00CA, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP15_00B6, OBJFLAG_00000001, 0, 0, 249)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP15_00CB, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP15_00CC, OBJFLAG_00000001, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_MP15_00D0, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_MP15_00D1, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_MP15_00D2, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_MP15_00D3, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_MP15_00D4, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_MP15_00D5, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_MP15_00D6, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_MP15_00D7, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_MP15_00D8, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_WINDOW, PAD_MP15_00D9, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_GLASS_FLOOR, PAD_MP15_0000, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_GLASS_FLOOR, PAD_MP15_0001, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_GLASS_FLOOR, PAD_MP15_0002, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_GLASS_FLOOR, PAD_MP15_0003, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_GLASS_FLOOR, PAD_MP15_0004, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_GLASS_FLOOR, PAD_MP15_0005, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_GLASS_FLOOR, PAD_MP15_0006, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_GLASS_FLOOR, PAD_MP15_0007, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
glass(0x0100, MODEL_GLASS_FLOOR, PAD_MP15_0008, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_AISEETHROUGH, 0, 0, 1000)
#if VERSION >= VERSION_NTSC_1_0
door(0x0100, MODEL_DOOR2A_G5, PAD_MP15_0080, 0, 0, 0, 1000, 0x0000e666, 0x00010000, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, DOORFLAG_0004, DOORTYPE_SLIDING, 0x00000020, 0x00000258, 0x00000000, 0x00000001, 0x00000000)
#else
door(0x0100, MODEL_DOOR2A_G5, PAD_MP15_0080, 0, 0, 0, 1000, 0x0000e666, 0x00010000, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, DOORFLAG_0004, DOORTYPE_SLIDING, 0x00000000, 0x00000258, 0x00000000, 0x00000001, 0x00000300)
#endif
door(0x0100, MODEL_DOOR2A_G5, PAD_MP15_0081, 0, 0, 0, 1000, 0x0000e666, 0x00010000, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, DOORFLAG_0004, DOORTYPE_SLIDING, 0x00000020, 0x00000258, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_DOOR2A_G5, PAD_MP15_0082, 0, 0, 0, 1000, 0x0000e666, 0x00010000, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, DOORFLAG_0004, DOORTYPE_SLIDING, 0x00000000, 0x00000258, 0x00000000, 0x00000000, 0x00000300)
door(0x0100, MODEL_DOOR2A_G5, PAD_MP15_0083, 0, 0, 0, 1000, 0x0000e666, 0x00010000, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, DOORFLAG_0004, DOORTYPE_SLIDING, 0x00000000, 0x00000258, 0x00000000, 0x00000000, 0x00000300)
door(0x0100, MODEL_DOOR2A_G5, PAD_MP15_0084, 0, 0, 0, 1000, 0x0000e666, 0x00010000, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, DOORFLAG_0004, DOORTYPE_SLIDING, 0x00000000, 0x00000258, 0x00000000, 0x00000000, 0x00000300)
door(0x0100, MODEL_DOOR2A_G5, PAD_MP15_0085, 0, 0, 0, 1000, 0x0000e666, 0x00010000, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, DOORFLAG_0004, DOORTYPE_SLIDING, 0x00000000, 0x00000258, 0x00000000, 0x00000000, 0x00000300)
tag(0x01, 1)
lift(0x0100, MODEL_MATRIX_LIFT, PAD_MP15_00CE, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x00ce, 0x00cf, -1, -1, 0x00000001, 0x00000003, 0x00000000, 0x00000000, 0x0000071c, 0x0010aaaa, 0x16000000)
door(0x0100, MODEL_DOOR2A_G5, PAD_MP15_007C, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_AISEETHROUGH, 0, 0, 1000, 0x0000e666, 0x00010000, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, DOORFLAG_0004, DOORTYPE_SLIDING, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00001200)
door(0x0100, MODEL_DOOR2A_G5, PAD_MP15_007D, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_AISEETHROUGH, 0, 0, 1000, 0x0000e666, 0x00010000, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, DOORFLAG_0004, DOORTYPE_SLIDING, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_DOOR2A_G5, PAD_MP15_007E, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_AISEETHROUGH, 0, 0, 1000, 0x0000e666, 0x00010000, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, DOORFLAG_0004, DOORTYPE_SLIDING, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00001200)
door(0x0100, MODEL_DOOR2A_G5, PAD_MP15_007F, OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_AISEETHROUGH, 0, 0, 1000, 0x0000e666, 0x00010000, 0x0001aaaa, 0x0001aaaa, 0x00000ccc, DOORFLAG_0004, DOORTYPE_SLIDING, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000000)
lift_door(-4, -5, 0)
lift_door(-4, -6, 0)
lift_door(-4, -7, 1)
lift_door(-4, -8, 1)
endprops
};
s32 intro[] = {
spawn(PAD_MP15_00A2)
spawn(PAD_MP15_00A3)
spawn(PAD_MP15_00A4)
spawn(PAD_MP15_00A5)
spawn(PAD_MP15_00A6)
spawn(PAD_MP15_00A7)
spawn(PAD_MP15_00A8)
spawn(PAD_MP15_00A9)
spawn(PAD_MP15_00AA)
spawn(PAD_MP15_00AB)
case(0, 0x0086)
case_respawn(0, 0x0087)
case_respawn(0, 0x0088)
case_respawn(0, 0x0089)
case_respawn(0, 0x008a)
case_respawn(0, 0x008b)
case_respawn(0, 0x008c)
case(1, 0x0093)
case_respawn(1, 0x008d)
case_respawn(1, 0x008e)
case_respawn(1, 0x008f)
case_respawn(1, 0x0090)
case_respawn(1, 0x0091)
case_respawn(1, 0x0092)
case(2, 0x009a)
case_respawn(2, 0x0094)
case_respawn(2, 0x0095)
case_respawn(2, 0x0096)
case_respawn(2, 0x0097)
case_respawn(2, 0x0098)
case_respawn(2, 0x0099)
case(3, 0x00a1)
case_respawn(3, 0x009b)
case_respawn(3, 0x009c)
case_respawn(3, 0x009d)
case_respawn(3, 0x009e)
case_respawn(3, 0x009f)
case_respawn(3, 0x00a0)
hill(0x0073)
hill(0x0013)
hill(0x006b)
hill(0x0060)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func1001_start_lift[] = {
activate_lift(1, 0x01)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1000_2400[] = {
mp_init_simulants
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
struct ailist ailists[] = {
{ func1000_2400, 0x1000 },
{ func1001_start_lift, 0x1001 },
{ NULL, 0 },
};
+46
View File
@@ -0,0 +1,46 @@
//
// Stage ID 0x48
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 unregistered_func1[] = {
mp_init_simulants
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+55
View File
@@ -0,0 +1,55 @@
//
// Stage ID 0x49
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func1001_0038[] = {
set_wind_speed(130)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1000_0044[] = {
mp_init_simulants
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
struct ailist ailists[] = {
{ func1000_0044, 0x1000 },
{ func1001_0038, 0x1001 },
{ NULL, 0 },
};
+48
View File
@@ -0,0 +1,48 @@
//
// Stage ID 0x4a
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func1000_0038[] = {
mp_init_simulants
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
struct ailist ailists[] = {
{ func1000_0038, 0x1000 },
{ NULL, 0 },
};
+48
View File
@@ -0,0 +1,48 @@
//
// Stage ID 0x4b
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func1000_0038[] = {
mp_init_simulants
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
struct ailist ailists[] = {
{ func1000_0038, 0x1000 },
{ NULL, 0 },
};
+54
View File
@@ -0,0 +1,54 @@
//
// Stage ID 0x3a
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
endintro
};
s32 path00[] = {
-1,
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 unregistered_func1[] = {
endlist
};
u8 unregistered_func2[] = {
mp_init_simulants
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+48
View File
@@ -0,0 +1,48 @@
//
// Stage ID 0x4c
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func1000_0038[] = {
mp_init_simulants
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
struct ailist ailists[] = {
{ func1000_0038, 0x1000 },
{ NULL, 0 },
};
+162
View File
@@ -0,0 +1,162 @@
//
// Area 52 (MP)
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
weapon(0x0100, 0x0000, PAD_MP3_0028, OBJFLAG_00000001, 0, 0, 240)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP3_0032, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP3_0033, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP3_0029, OBJFLAG_00000001, 0, 0, 241)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP3_0034, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP3_0035, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP3_002A, OBJFLAG_00000001, 0, 0, 242)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP3_0036, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP3_0037, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP3_002B, OBJFLAG_00000001, 0, 0, 243)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP3_0038, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP3_0039, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP3_002C, OBJFLAG_00000001, 0, 0, 244)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP3_003A, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP3_003B, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP3_002D, OBJFLAG_00000001, 0, 0, 245)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP3_003C, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP3_003D, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP3_002E, OBJFLAG_00000001, 0, 0, 246)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP3_003E, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP3_003F, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP3_002F, OBJFLAG_00000001, 0, 0, 247)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP3_0040, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP3_0041, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP3_0030, OBJFLAG_00000001, 0, 0, 248)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP3_0042, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP3_0043, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP3_0031, OBJFLAG_00000001, 0, 0, 249)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP3_0044, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP3_0045, OBJFLAG_00000001, 0, 0, 1000)
tinted_glass(0x0100, MODEL_DD_WINDOW, PAD_MP3_0046, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x04b007d0)
tinted_glass(0x0100, MODEL_DD_WINDOW, PAD_MP3_0047, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x04b007d0)
tinted_glass(0x0100, MODEL_DD_WINDOW, PAD_MP3_0048, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x04b007d0)
tinted_glass(0x0100, MODEL_DD_WINDOW, PAD_MP3_0049, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x04b007d0)
tinted_glass(0x0100, MODEL_DD_WINDOW, PAD_MP3_004A, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x04b007d0)
tinted_glass(0x0100, MODEL_DD_WINDOW, PAD_MP3_004B, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x04b007d0)
tinted_glass(0x0100, MODEL_DD_WINDOW, PAD_MP3_004C, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x04b007d0)
tinted_glass(0x0100, MODEL_DD_WINDOW, PAD_MP3_004D, OBJFLAG_00000002 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000100 | OBJFLAG_00000200 | OBJFLAG_PATHBLOCKER | OBJFLAG_AISEETHROUGH | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x04b007d0)
door(0x0100, MODEL_CH_SHUTTER1, PAD_MP3_005A, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000fd70, 0x0000e666, 0x00003333, 0x00014000, 0x00004000, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x0000021c, 0x00000000, 0x00000000, 0x00000a00)
door(0x0100, MODEL_CH_SHUTTER1, PAD_MP3_005B, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000fd70, 0x0000e666, 0x00003333, 0x00014000, 0x00004000, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000a00)
door(0x0100, MODEL_CH_SHUTTER1, PAD_MP3_005C, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000fd70, 0x0000e666, 0x00003333, 0x00014000, 0x00004000, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x00000168, 0x00000000, 0x00000000, 0x00000a00)
door(0x0100, MODEL_CH_SHUTTER1, PAD_MP3_005D, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000fd70, 0x0000e666, 0x00003333, 0x00014000, 0x00004000, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x00000348, 0x00000000, 0x00000000, 0x00000a00)
door(0x0100, MODEL_CH_SHUTTER1, PAD_MP3_005E, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000fd70, 0x0000e666, 0x00003333, 0x00014000, 0x00004000, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x00000168, 0x00000000, 0x00000000, 0x00000a00)
door(0x0100, MODEL_CH_SHUTTER1, PAD_MP3_005F, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000fd70, 0x0000e666, 0x00003333, 0x00014000, 0x00004000, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x00000078, 0x00000000, 0x00000000, 0x00000a00)
door(0x0100, MODEL_CH_SHUTTER1, PAD_MP3_0060, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000fd70, 0x0000e666, 0x00003333, 0x00014000, 0x00004000, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x000000f0, 0x00000000, 0x00000000, 0x00000a00)
door(0x0100, MODEL_CH_SHUTTER1, PAD_MP3_0061, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000fd70, 0x0000e666, 0x00003333, 0x00014000, 0x00004000, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x0000003c, 0x00000000, 0x00000000, 0x00000a00)
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_MP3_004F, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00320000, 0x00085555, 0x00002aaa, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000100)
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_MP3_004E, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00320000, 0x00085555, 0x00002aaa, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_MP3_0051, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00320000, 0x00085555, 0x00002aaa, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000100)
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_MP3_0050, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00320000, 0x00085555, 0x00002aaa, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_MP3_0053, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00320000, 0x00085555, 0x00002aaa, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000100)
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_MP3_0052, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00320000, 0x00085555, 0x00002aaa, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_MP3_0055, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00320000, 0x00085555, 0x00002aaa, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000100)
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_MP3_0054, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00320000, 0x00085555, 0x00002aaa, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_MP3_0057, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00320000, 0x00085555, 0x00002aaa, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000100)
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_MP3_0056, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00320000, 0x00085555, 0x00002aaa, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
door(0x0100, MODEL_A51_HORIZ_DOOR_BOT, PAD_MP3_0059, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00320000, 0x00085555, 0x00002aaa, DOORFLAG_AUTOMATIC, DOORTYPE_VERTICAL, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000100)
door(0x0100, MODEL_A51_HORIZ_DOOR_TOP, PAD_MP3_0058, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x0000f333, 0x00320000, 0x00085555, 0x00002aaa, 0, DOORTYPE_VERTICAL, 0x00000000, 0x0fffffff, 0x00000000, 0xffffffff, 0x00000000)
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
spawn(PAD_MP3_001C)
spawn(PAD_MP3_001D)
spawn(PAD_MP3_001E)
spawn(PAD_MP3_001F)
spawn(PAD_MP3_0020)
spawn(PAD_MP3_0021)
spawn(PAD_MP3_0022)
spawn(PAD_MP3_0023)
spawn(PAD_MP3_0024)
spawn(PAD_MP3_0025)
spawn(PAD_MP3_0026)
spawn(PAD_MP3_0027)
case(0, 0x0006)
case_respawn(0, 0x0000)
case_respawn(0, 0x0001)
case_respawn(0, 0x0002)
case_respawn(0, 0x0003)
case_respawn(0, 0x0004)
case_respawn(0, 0x0005)
case(1, 0x000d)
case_respawn(1, 0x0007)
case_respawn(1, 0x0008)
case_respawn(1, 0x0009)
case_respawn(1, 0x000a)
case_respawn(1, 0x000b)
case_respawn(1, 0x000c)
case(2, 0x0013)
case_respawn(2, 0x000e)
case_respawn(2, 0x000f)
case_respawn(2, 0x0010)
case_respawn(2, 0x0011)
case_respawn(2, 0x0012)
case_respawn(2, 0x0014)
case(3, 0x001b)
case_respawn(3, 0x0015)
case_respawn(3, 0x0016)
case_respawn(3, 0x0017)
case_respawn(3, 0x0018)
case_respawn(3, 0x0019)
case_respawn(3, 0x001a)
hill(0x010d)
hill(0x0106)
hill(0x00e4)
hill(0x00da)
hill(0x011c)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func1001_27e0[] = {
set_wind_speed(15)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1000_27ec[] = {
mp_init_simulants
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
struct ailist ailists[] = {
{ func1000_27ec, 0x1000 },
{ func1001_27e0, 0x1001 },
{ NULL, 0 },
};
+136
View File
@@ -0,0 +1,136 @@
//
// Warehouse (MP)
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
weapon(0x0100, 0x0000, PAD_MP4_0167, OBJFLAG_00000001, 0, 0, 240)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP4_0171, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP4_0172, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP4_0168, OBJFLAG_00000001, 0, 0, 241)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP4_0173, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP4_0174, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP4_0169, OBJFLAG_00000001, 0, 0, 242)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP4_0175, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP4_0176, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP4_016A, OBJFLAG_00000001, 0, 0, 243)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP4_0177, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP4_0178, OBJFLAG_00000001, 0, 0, 1000)
stdobject(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP4_0185, OBJFLAG_00000001 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP4_016B, OBJFLAG_00000001, 0, 0, 244)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP4_0179, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP4_017A, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP4_016C, OBJFLAG_00000001, 0, 0, 240)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP4_017B, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP4_017C, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP4_016D, OBJFLAG_00000001, 0, 0, 241)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP4_017D, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP4_017E, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP4_016E, OBJFLAG_00000001, 0, 0, 242)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP4_017F, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP4_0180, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP4_016F, OBJFLAG_00000001, 0, 0, 243)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP4_0181, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP4_0182, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP4_0170, OBJFLAG_00000001, 0, 0, 244)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP4_0183, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP4_0184, OBJFLAG_00000001, 0, 0, 1000)
hover_prop(0x0100, MODEL_A51_CRATE2, PAD_MP4_0186, OBJFLAG_00000001 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_DEACTIVATED | OBJFLAG_20000000, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, OBJFLAG3_PUSHABLE, 1000, 0x02010000)
hover_prop(0x0100, MODEL_HOVERCRATE1, PAD_MP4_0187, OBJFLAG_00000001 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_DEACTIVATED | OBJFLAG_20000000, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, OBJFLAG3_PUSHABLE | OBJFLAG3_GRABBABLE, 1000, 0x02010000)
hover_prop(0x0100, MODEL_A51_CRATE2, PAD_MP4_0188, OBJFLAG_00000001 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_01000000 | OBJFLAG_DEACTIVATED | OBJFLAG_20000000, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, OBJFLAG3_PUSHABLE, 1000, 0x02010000)
endprops
};
s32 intro[] = {
spawn(PAD_MP4_015B)
spawn(PAD_MP4_015C)
spawn(PAD_MP4_015D)
spawn(PAD_MP4_015E)
spawn(PAD_MP4_015F)
spawn(PAD_MP4_0160)
spawn(PAD_MP4_0161)
spawn(PAD_MP4_0162)
spawn(PAD_MP4_0163)
spawn(PAD_MP4_0164)
spawn(PAD_MP4_0165)
spawn(PAD_MP4_0166)
case(0, 0x013f)
case_respawn(0, 0x0140)
case_respawn(0, 0x0141)
case_respawn(0, 0x0142)
case_respawn(0, 0x0143)
case_respawn(0, 0x0144)
case_respawn(0, 0x0145)
case(1, 0x014c)
case_respawn(1, 0x0146)
case_respawn(1, 0x0147)
case_respawn(1, 0x0148)
case_respawn(1, 0x0149)
case_respawn(1, 0x014a)
case_respawn(1, 0x014b)
case(2, 0x0153)
case_respawn(2, 0x014e)
case_respawn(2, 0x014f)
case_respawn(2, 0x0150)
case_respawn(2, 0x0151)
case_respawn(2, 0x0152)
case_respawn(2, 0x014d)
case(3, 0x015a)
case_respawn(3, 0x0154)
case_respawn(3, 0x0155)
case_respawn(3, 0x0156)
case_respawn(3, 0x0157)
case_respawn(3, 0x0158)
case_respawn(3, 0x0159)
hill(0x011c)
hill(0x0087)
hill(0x006a)
hill(0x00ec)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func1001_1590[] = {
set_wind_speed(22)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1000_159c[] = {
mp_init_simulants
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
struct ailist ailists[] = {
{ func1000_159c, 0x1000 },
{ func1001_1590, 0x1001 },
{ NULL, 0 },
};
+145
View File
@@ -0,0 +1,145 @@
//
// Car Park (MP)
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
weapon(0x0100, 0x0000, PAD_MP5_0116, OBJFLAG_00000001, 0, 0, 240)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP5_0120, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP5_0121, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP5_0117, OBJFLAG_00000001, 0, 0, 241)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP5_0122, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP5_0123, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP5_0118, OBJFLAG_00000001, 0, 0, 242)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP5_0124, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP5_0125, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP5_0119, OBJFLAG_00000001, 0, 0, 243)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP5_0126, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP5_0127, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP5_011A, OBJFLAG_00000001, 0, 0, 244)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP5_0128, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP5_0129, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP5_011B, OBJFLAG_00000001, 0, 0, 245)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP5_012A, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP5_012B, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP5_011C, OBJFLAG_00000001, 0, 0, 246)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP5_012C, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP5_012D, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP5_011D, OBJFLAG_00000001, 0, 0, 247)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP5_012E, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP5_012F, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP5_011E, OBJFLAG_00000001, 0, 0, 248)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP5_0130, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP5_0131, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP5_011F, OBJFLAG_00000001, 0, 0, 249)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP5_0132, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x00cc, MODEL_MULTI_AMMO_CRATE, PAD_MP5_0133, OBJFLAG_00000001, 0, 0, 1000)
door(0x0100, MODEL_CH_SHUTTER1, PAD_MP5_010A, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000fd70, 0x0000e666, 0x00003333, 0x00014000, 0x00004000, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x000000f0, 0x00000000, 0x00000000, 0x00000a00)
door(0x0100, MODEL_CH_SHUTTER1, PAD_MP5_010B, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000fd70, 0x0000e666, 0x00003333, 0x00014000, 0x00004000, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x000000f0, 0x00000000, 0x00000000, 0x00000a00)
door(0x0100, MODEL_CH_SHUTTER1, PAD_MP5_010C, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000fd70, 0x0000e666, 0x00003333, 0x00014000, 0x00004000, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x000000f0, 0x00000000, 0x00000000, 0x00000a00)
door(0x0100, MODEL_CH_SHUTTER1, PAD_MP5_010D, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000fd70, 0x0000e666, 0x00003333, 0x00014000, 0x00004000, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x000000f0, 0x00000000, 0x00000000, 0x00000a00)
door(0x0100, MODEL_CH_SHUTTER1, PAD_MP5_010E, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000fd70, 0x0000e666, 0x00003333, 0x00014000, 0x00004000, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x000000f0, 0x00000000, 0x00000000, 0x00000a00)
door(0x0100, MODEL_CH_SHUTTER1, PAD_MP5_010F, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000fd70, 0x0000e666, 0x00003333, 0x00014000, 0x00004000, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x000000f0, 0x00000000, 0x00000000, 0x00000a00)
door(0x0100, MODEL_CH_SHUTTER1, PAD_MP5_0110, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000fd70, 0x0000e666, 0x00003333, 0x00014000, 0x00004000, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x000000f0, 0x00000000, 0x00000000, 0x00000a00)
door(0x0100, MODEL_CH_SHUTTER1, PAD_MP5_0111, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000fd70, 0x0000e666, 0x00003333, 0x00014000, 0x00004000, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x000000f0, 0x00000000, 0x00000000, 0x00000a00)
door(0x0100, MODEL_CH_SHUTTER1, PAD_MP5_0112, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000fd70, 0x0000e666, 0x00003333, 0x00014000, 0x00004000, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x000000f0, 0x00000000, 0x00000000, 0x00000a00)
door(0x0100, MODEL_CH_SHUTTER1, PAD_MP5_0113, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000fd70, 0x0000e666, 0x00003333, 0x00014000, 0x00004000, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x000000f0, 0x00000000, 0x00000000, 0x00000a00)
door(0x0100, MODEL_CH_SHUTTER1, PAD_MP5_0114, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000fd70, 0x0000e666, 0x00003333, 0x00014000, 0x00004000, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x000000f0, 0x00000000, 0x00000000, 0x00000a00)
door(0x0100, MODEL_CH_SHUTTER1, PAD_MP5_0115, OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000fd70, 0x0000e666, 0x00003333, 0x00014000, 0x00004000, DOORFLAG_0004, DOORTYPE_VERTICAL, 0x00000000, 0x000000f0, 0x00000000, 0x00000000, 0x00000a00)
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
spawn(PAD_MP5_001C)
spawn(PAD_MP5_001D)
spawn(PAD_MP5_001E)
spawn(PAD_MP5_001F)
spawn(PAD_MP5_0020)
spawn(PAD_MP5_0021)
spawn(PAD_MP5_0022)
spawn(PAD_MP5_0023)
spawn(PAD_MP5_0024)
spawn(PAD_MP5_0025)
spawn(PAD_MP5_0026)
spawn(PAD_MP5_0027)
case(0, 0x0006)
case_respawn(0, 0x0000)
case_respawn(0, 0x0001)
case_respawn(0, 0x0002)
case_respawn(0, 0x0003)
case_respawn(0, 0x0004)
case_respawn(0, 0x0005)
case(1, 0x000d)
case_respawn(1, 0x0007)
case_respawn(1, 0x0008)
case_respawn(1, 0x0009)
case_respawn(1, 0x000a)
case_respawn(1, 0x000b)
case_respawn(1, 0x000c)
case(2, 0x0014)
case_respawn(2, 0x000e)
case_respawn(2, 0x000f)
case_respawn(2, 0x0010)
case_respawn(2, 0x0011)
case_respawn(2, 0x0012)
case_respawn(2, 0x0013)
case(3, 0x001b)
case_respawn(3, 0x0015)
case_respawn(3, 0x0016)
case_respawn(3, 0x0017)
case_respawn(3, 0x0018)
case_respawn(3, 0x0019)
case_respawn(3, 0x001a)
hill(0x00c3)
hill(0x0075)
hill(0x00fa)
hill(0x0089)
hill(0x0048)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func1001_1dc0[] = {
set_wind_speed(8)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1000_1dcc[] = {
mp_init_simulants
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
struct ailist ailists[] = {
{ func1000_1dcc, 0x1000 },
{ func1001_1dc0, 0x1001 },
{ NULL, 0 },
};
+46
View File
@@ -0,0 +1,46 @@
//
// Stage ID 0x3e
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 unregistered_func1[] = {
mp_init_simulants
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+48
View File
@@ -0,0 +1,48 @@
//
// Stage ID 0x3f
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func1000_0038[] = {
mp_init_simulants
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
struct ailist ailists[] = {
{ func1000_0038, 0x1000 },
{ NULL, 0 },
};
+48
View File
@@ -0,0 +1,48 @@
//
// Stage ID 0x40
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func1000_0038[] = {
mp_init_simulants
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
struct ailist ailists[] = {
{ func1000_0038, 0x1000 },
{ NULL, 0 },
};
+136
View File
@@ -0,0 +1,136 @@
//
// Ruins (MP)
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
weapon(0x0100, 0x0000, PAD_MP9_0000, OBJFLAG_00000001, 0, 0, 240)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP9_000C, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP9_000D, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP9_0001, OBJFLAG_00000001, 0, 0, 241)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP9_000E, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP9_000F, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP9_0002, OBJFLAG_00000001, 0, 0, 242)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP9_0010, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP9_0011, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP9_0003, OBJFLAG_00000001, 0, 0, 243)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP9_0012, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP9_0013, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP9_0004, OBJFLAG_00000001, 0, 0, 244)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP9_0014, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP9_0015, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP9_0005, OBJFLAG_00000001, 0, 0, 245)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP9_0016, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP9_0017, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP9_0006, OBJFLAG_00000001, 0, 0, 246)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP9_0018, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP9_0019, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP9_0007, OBJFLAG_00000001, 0, 0, 247)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP9_001A, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP9_001B, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP9_0008, OBJFLAG_00000001, 0, 0, 248)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP9_001C, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP9_001D, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_MP9_0009, OBJFLAG_00000001, 0, 0, 249)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP9_001E, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP9_001F, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP9_0020, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP9_0021, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP9_0022, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0100, MODEL_MULTI_AMMO_CRATE, PAD_MP9_0023, OBJFLAG_00000001, 0, 0, 1000)
door(0x0100, MODEL_SK_DOOR1, PAD_MP9_00B2, OBJFLAG_DEACTIVATED, 0, OBJFLAG3_DOOR_STICKY, 1000, 0x0000e666, 0x00010000, 0x00002aaa, 0x00002aaa, 0x000002c5, 0, DOORTYPE_SLIDING, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000400)
door(0x0100, MODEL_SK_DOOR1, PAD_MP9_00B3, OBJFLAG_DEACTIVATED, 0, OBJFLAG3_DOOR_STICKY, 1000, 0x0000e666, 0x00010000, 0x00002aaa, 0x00002aaa, 0x000002c5, 0, DOORTYPE_SLIDING, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000400)
door(0x0100, MODEL_SK_DOOR1, PAD_MP9_00B4, OBJFLAG_DEACTIVATED, 0, OBJFLAG3_DOOR_STICKY, 1000, 0x0000e666, 0x00010000, 0x00002aaa, 0x00002aaa, 0x000002c5, 0, DOORTYPE_SLIDING, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000400)
door(0x0100, MODEL_SK_DOOR1, PAD_MP9_00B5, OBJFLAG_DEACTIVATED, 0, OBJFLAG3_DOOR_STICKY, 1000, 0x0000e666, 0x00010000, 0x00002aaa, 0x00002aaa, 0x000002c5, 0, DOORTYPE_SLIDING, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000400)
door(0x0100, MODEL_SK_DOOR1, PAD_MP9_00B6, OBJFLAG_DEACTIVATED, 0, OBJFLAG3_DOOR_STICKY, 1000, 0x0000e666, 0x00010000, 0x00002aaa, 0x00002aaa, 0x000002c5, 0, DOORTYPE_SLIDING, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000400)
door(0x0100, MODEL_SK_DOOR1, PAD_MP9_00B7, OBJFLAG_DEACTIVATED, 0, OBJFLAG3_DOOR_STICKY, 1000, 0x0000e666, 0x00010000, 0x00002aaa, 0x00002aaa, 0x000002c5, 0, DOORTYPE_SLIDING, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000400)
door(0x0100, MODEL_SK_DOOR1, PAD_MP9_00B8, OBJFLAG_DEACTIVATED, 0, OBJFLAG3_DOOR_STICKY, 1000, 0x0000e666, 0x00010000, 0x00002aaa, 0x00002aaa, 0x000002c5, 0, DOORTYPE_SLIDING, 0x00000000, 0x0000012c, 0x00000000, 0x00000001, 0x00000400)
door(0x0100, MODEL_SK_DOOR1, PAD_MP9_00B9, OBJFLAG_DEACTIVATED, 0, OBJFLAG3_DOOR_STICKY, 1000, 0x0000e666, 0x00010000, 0x00002aaa, 0x00002aaa, 0x000002c5, 0, DOORTYPE_SLIDING, 0x00000000, 0x0000012c, 0x00000000, 0xffffffff, 0x00000400)
endprops
};
s32 intro[] = {
spawn(PAD_MP9_0040)
spawn(PAD_MP9_0041)
spawn(PAD_MP9_0042)
spawn(PAD_MP9_0043)
spawn(PAD_MP9_0044)
spawn(PAD_MP9_0045)
spawn(PAD_MP9_0046)
spawn(PAD_MP9_0047)
spawn(PAD_MP9_0048)
spawn(PAD_MP9_0049)
spawn(PAD_MP9_004A)
spawn(PAD_MP9_004B)
case(0, PAD_MP9_0024)
case_respawn(0, PAD_MP9_0025)
case_respawn(0, PAD_MP9_0026)
case_respawn(0, PAD_MP9_0027)
case_respawn(0, PAD_MP9_0028)
case_respawn(0, PAD_MP9_0029)
case_respawn(0, PAD_MP9_002A)
case(1, PAD_MP9_0031)
case_respawn(1, PAD_MP9_002B)
case_respawn(1, PAD_MP9_002C)
case_respawn(1, PAD_MP9_002D)
case_respawn(1, PAD_MP9_002E)
case_respawn(1, PAD_MP9_002F)
case_respawn(1, PAD_MP9_0030)
case(2, PAD_MP9_0038)
case_respawn(2, PAD_MP9_0032)
case_respawn(2, PAD_MP9_0033)
case_respawn(2, PAD_MP9_0034)
case_respawn(2, PAD_MP9_0035)
case_respawn(2, PAD_MP9_0036)
case_respawn(2, PAD_MP9_0037)
case(3, PAD_MP9_003F)
case_respawn(3, PAD_MP9_0039)
case_respawn(3, PAD_MP9_003A)
case_respawn(3, PAD_MP9_003B)
case_respawn(3, PAD_MP9_003C)
case_respawn(3, PAD_MP9_003D)
case_respawn(3, PAD_MP9_003E)
hill(PAD_MP9_009B)
hill(PAD_MP9_00B0)
hill(PAD_MP9_0064)
hill(PAD_MP9_005F)
hill(PAD_MP9_0053)
hill(PAD_MP9_0070)
hill(PAD_MP9_009B)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func1000_1cf8[] = {
mp_init_simulants
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
struct ailist ailists[] = {
{ func1000_1cf8, 0x1000 },
{ NULL, 0 },
};
+147
View File
@@ -0,0 +1,147 @@
//
// Skedar (MP)
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
weapon(0x0200, 0x0000, PAD_OAT_00CD, OBJFLAG_00000001, 0, 0, 240)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_OAT_00DC, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_OAT_00DD, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0200, 0x0000, PAD_OAT_00CE, OBJFLAG_00000001, 0, 0, 241)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_OAT_00DE, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_OAT_00DF, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0200, 0x0000, PAD_OAT_00CF, OBJFLAG_00000001, 0, 0, 242)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_OAT_00E0, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_OAT_00E1, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0133, 0x0000, PAD_OAT_00D0, OBJFLAG_00000001, 0, 0, 243)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_OAT_00E2, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_OAT_00E3, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0133, 0x0000, PAD_OAT_00D1, OBJFLAG_00000001, 0, 0, 244)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_OAT_00E4, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_OAT_00E5, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0133, 0x0000, PAD_OAT_00D2, OBJFLAG_00000001, 0, 0, 245)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_OAT_00E6, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_OAT_00E7, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_OAT_00D3, OBJFLAG_00000001, 0, 0, 246)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_OAT_00E8, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_OAT_00E9, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_OAT_00D4, OBJFLAG_00000001, 0, 0, 247)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_OAT_00EA, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_OAT_00EB, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_OAT_00D5, OBJFLAG_00000001, 0, 0, 248)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_OAT_00EC, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_OAT_00ED, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_OAT_00D6, OBJFLAG_00000001, 0, 0, 249)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_OAT_00EE, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_OAT_00EF, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_OAT_00D7, OBJFLAG_00000001, 0, 0, 250)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_OAT_00F0, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_OAT_00F1, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_OAT_00D8, OBJFLAG_00000001, 0, 0, 251)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_OAT_00F2, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_OAT_00F3, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_OAT_00D9, OBJFLAG_00000001, 0, 0, 252)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_OAT_00F4, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_OAT_00F5, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_OAT_00DA, OBJFLAG_00000001, 0, 0, 253)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_OAT_00F6, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_OAT_00F7, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_OAT_00DB, OBJFLAG_00000001, 0, 0, 254)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_OAT_00F8, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_OAT_00F9, OBJFLAG_00000001, 0, 0, 1000)
endprops
};
s32 intro[] = {
spawn(PAD_OAT_00A5)
spawn(PAD_OAT_00A6)
spawn(PAD_OAT_00A7)
spawn(PAD_OAT_00A8)
spawn(PAD_OAT_00A9)
spawn(PAD_OAT_00AA)
spawn(PAD_OAT_00AB)
spawn(PAD_OAT_00AC)
spawn(PAD_OAT_00AD)
spawn(PAD_OAT_00AE)
spawn(PAD_OAT_00AF)
spawn(PAD_OAT_00B0)
case(0, 0x00b1)
case_respawn(0, 0x00b2)
case_respawn(0, 0x00b3)
case_respawn(0, 0x00b4)
case_respawn(0, 0x00b5)
case_respawn(0, 0x00b6)
case_respawn(0, 0x00b7)
case(1, 0x00b8)
case_respawn(1, 0x00b9)
case_respawn(1, 0x00ba)
case_respawn(1, 0x00bb)
case_respawn(1, 0x00bc)
case_respawn(1, 0x00bd)
case_respawn(1, 0x00be)
case(2, 0x00bf)
case_respawn(2, 0x00c0)
case_respawn(2, 0x00c1)
case_respawn(2, 0x00c2)
case_respawn(2, 0x00c3)
case_respawn(2, 0x00c4)
case_respawn(2, 0x00c5)
case(3, 0x00c6)
case_respawn(3, 0x00c7)
case_respawn(3, 0x00c8)
case_respawn(3, 0x00c9)
case_respawn(3, 0x00ca)
case_respawn(3, 0x00cb)
case_respawn(3, 0x00cc)
hill(0x0093)
hill(0x00d5)
hill(0x008d)
hill(0x00da)
hill(0x0076)
endintro
};
s32 path00[] = {
-1,
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 unregistered_func1[] = {
endlist
};
u8 func1000_1c08[] = {
mp_init_simulants
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
struct ailist ailists[] = {
{ func1000_1c08, 0x1000 },
{ NULL, 0 },
};
+39
View File
@@ -0,0 +1,39 @@
//
// Stage ID 0x4e
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+48
View File
@@ -0,0 +1,48 @@
//
// Deep Sea
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
intro_weapon(WEAPON_UNARMED, -1)
outfit(OUTFIT_DEFAULT)
endintro
};
s32 path00[] = {
-1,
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func0000_004c[] = {
endlist
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+63
View File
@@ -0,0 +1,63 @@
//
// Chicago
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
char *text_stagename = "S T . P E T E R S B U R G\n";
char *text_briefing1 = "use the stolen tank to chase the car containing natalya. you are up against a time limit.\n";
char *text_briefing2 = "\n";
char *text_briefing3 = "\n";
char *text_briefing4 = "\n";
char *text_objective1 = "\n\n\n";
char *text_objective2 = "\n\n\n";
char *text_objective3 = "\n";
u32 props[] = {
briefing(0, 0x0020)
briefing(1, 0x0024)
briefing(2, 0x0028)
briefing(3, 0x002c)
briefing(4, 0x0030)
beginobjective(0, 0x0034, (DIFFBIT_A | DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD))
endobjective
beginobjective(1, 0x0038, (DIFFBIT_A | DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD))
endobjective
beginobjective(2, 0x003c, (DIFFBIT_A | DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD))
endobjective
endprops
};
s32 intro[] = {
intro_weapon(WEAPON_PP9I, -1)
ammo(AMMOTYPE_PISTOL, 100)
outfit(OUTFIT_DEFAULT)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+146
View File
@@ -0,0 +1,146 @@
//
// Complex (MP)
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
weapon(0x0200, 0x0000, PAD_REF_002F, OBJFLAG_00000001, 0, 0, 240)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_REF_0039, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_REF_003A, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0200, 0x0000, PAD_REF_0030, OBJFLAG_00000001, 0, 0, 241)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_REF_003B, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_REF_003C, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0200, 0x0000, PAD_REF_0031, OBJFLAG_00000001, 0, 0, 242)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_REF_003D, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_REF_003E, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0133, 0x0000, PAD_REF_0032, OBJFLAG_00000001, 0, 0, 243)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_REF_003F, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_REF_0040, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0133, 0x0000, PAD_REF_0033, OBJFLAG_00000001, 0, 0, 244)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_REF_0041, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_REF_0042, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0133, 0x0000, PAD_REF_0034, OBJFLAG_00000001, 0, 0, 245)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_REF_0043, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_REF_0044, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_REF_0035, OBJFLAG_00000001, 0, 0, 246)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_REF_0045, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_REF_0046, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_REF_0036, OBJFLAG_00000001, 0, 0, 247)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_REF_0047, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_REF_0048, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_REF_0037, OBJFLAG_00000001, 0, 0, 248)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_REF_0049, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_REF_004A, OBJFLAG_00000001, 0, 0, 1000)
weapon(0x0100, 0x0000, PAD_REF_0038, OBJFLAG_00000001, 0, 0, 249)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_REF_004B, OBJFLAG_00000001, 0, 0, 1000)
ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_REF_004C, OBJFLAG_00000001, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_REF_004F, OBJFLAG_00000001 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_REF_0050, OBJFLAG_00000001 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_REF_0051, OBJFLAG_00000001 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_REF_004D, OBJFLAG_00000001 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
stdobject(0x0100, MODEL_A51_CRATE2, PAD_REF_004E, OBJFLAG_00000001 | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, 0, 1000)
endprops
};
s32 intro[] = {
spawn(PAD_REF_001C)
spawn(PAD_REF_001D)
spawn(PAD_REF_001E)
spawn(PAD_REF_001F)
spawn(PAD_REF_0020)
spawn(PAD_REF_0021)
spawn(PAD_REF_0022)
spawn(PAD_REF_0023)
spawn(PAD_REF_0024)
spawn(PAD_REF_0025)
spawn(PAD_REF_0026)
spawn(PAD_REF_0027)
spawn(PAD_REF_0028)
spawn(PAD_REF_0029)
spawn(PAD_REF_002A)
spawn(PAD_REF_002B)
spawn(PAD_REF_002C)
spawn(PAD_REF_002D)
spawn(PAD_REF_002E)
case(0, 0x0006)
case_respawn(0, 0x0000)
case_respawn(0, 0x0001)
case_respawn(0, 0x0002)
case_respawn(0, 0x0003)
case_respawn(0, 0x0004)
case_respawn(0, 0x0005)
case(1, 0x000d)
case_respawn(1, 0x0007)
case_respawn(1, 0x0008)
case_respawn(1, 0x0009)
case_respawn(1, 0x000a)
case_respawn(1, 0x000b)
case_respawn(1, 0x000c)
case(2, 0x0014)
case_respawn(2, 0x000e)
case_respawn(2, 0x000f)
case_respawn(2, 0x0010)
case_respawn(2, 0x0011)
case_respawn(2, 0x0012)
case_respawn(2, 0x0013)
case(3, 0x001b)
case_respawn(3, 0x0015)
case_respawn(3, 0x0016)
case_respawn(3, 0x0017)
case_respawn(3, 0x0018)
case_respawn(3, 0x0019)
case_respawn(3, 0x001a)
hill(0x0067)
hill(0x007b)
hill(0x00d5)
hill(0x0092)
hill(0x008b)
outfit(OUTFIT_DEFAULT)
endintro
};
s32 path00[] = {
-1,
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 unregistered_func1[] = {
endlist
};
u8 func1000_1598[] = {
mp_init_simulants
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
struct ailist ailists[] = {
{ func1000_1598, 0x1000 },
{ NULL, 0 },
};
+48
View File
@@ -0,0 +1,48 @@
//
// Air Force One
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
intro_weapon(WEAPON_UNARMED, -1)
outfit(OUTFIT_DEFAULT)
endintro
};
s32 path00[] = {
-1,
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func0000_004c[] = {
endlist
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+52
View File
@@ -0,0 +1,52 @@
//
// Stage ID 0x23
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 unregistered_func1[] = {
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 unregistered_func2[] = {
mp_init_simulants
rebuild_teams
rebuild_squadrons
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+39
View File
@@ -0,0 +1,39 @@
//
// Maian SOS
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+39
View File
@@ -0,0 +1,39 @@
//
// Retaking the Institute
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+38
View File
@@ -0,0 +1,38 @@
//
// Stage IDs 0x24 and 0x2b
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+38
View File
@@ -0,0 +1,38 @@
//
// Skedar Ruins
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
endintro
};
struct ailist ailists[] = {
{ NULL, 0 },
};
struct path paths[] = {
{ NULL, 0, 0 },
};
+39
View File
@@ -0,0 +1,39 @@
//
// Stage ID 0x14
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+38
View File
@@ -0,0 +1,38 @@
//
// WAR!
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+38
View File
@@ -0,0 +1,38 @@
//
// Escape
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+46
View File
@@ -0,0 +1,46 @@
//
// Stage ID 0x4d
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
endintro
};
s32 path00[] = {
-1,
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func0000_0034[] = {
endlist
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+46
View File
@@ -0,0 +1,46 @@
//
// Mr. Blonde's Revenge
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
endintro
};
s32 path00[] = {
-1,
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func0000_0034[] = {
endlist
};
struct ailist ailists[] = {
{ NULL, 0 },
};
File diff suppressed because it is too large Load Diff
+39
View File
@@ -0,0 +1,39 @@
//
// Stage ID 0x18
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+48
View File
@@ -0,0 +1,48 @@
//
// Ravine (MP)
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
lift(0x0100, MODEL_RAVINELIFT, PAD_AREC_00BC, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x00bc, 0x00bb, 0x00ba, -1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000071c, 0x0010aaaa, 0x00000000)
endprops
};
u8 unregistered_func1[] = {
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 unregistered_func2[] = {
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
s32 intro[] = {
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
File diff suppressed because it is too large Load Diff
+46
View File
@@ -0,0 +1,46 @@
//
// Stage ID 0x2e
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
endintro
};
s32 path00[] = {
-1,
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func0000_0034[] = {
endlist
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+584
View File
@@ -0,0 +1,584 @@
//
// Duel
//
#include "stagesetup.h"
// Characters
#define CHR_GUARD 0x00
#define CHR_JONATHAN 0x01
#define CHR_TRENT 0x02
// Stage flags
#define STAGEFLAG_GUARD_DEAD 0x00000100
#define STAGEFLAG_JONATHAN_DEAD 0x00000200
#define STAGEFLAG_TRENT_DEAD 0x00000400
#define STAGEFLAG_SA_WALK_TRIGGER 0x00000800
#define STAGEFLAG_PA_WALK_TRIGGER 0x00001000
// AI Lists
#define AILIST_MOVE_TO_PAD 0x0401
#define AILIST_GUARD_COMBAT 0x0402
#define AILIST_JON_COMBAT 0x0403
#define AILIST_TRENT_COMBAT 0x0404
#define AILIST_GUARD_INIT 0x0405
#define AILIST_JON_INIT 0x0406
#define AILIST_TRENT_INIT 0x0407
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
briefing(BRIEFINGTYPE_LOCATION, L_ATE_001)
briefing(BRIEFINGTYPE_TEXT_PA, L_ATE_000)
briefing(BRIEFINGTYPE_TEXT_SA, L_ATE_002)
briefing(BRIEFINGTYPE_TEXT_A, L_ATE_003)
beginobjective(0, L_ATE_004, (DIFFBIT_A | DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD)) // "Defeat dataDyne guard"
complete_flags(STAGEFLAG_GUARD_DEAD)
endobjective
beginobjective(1, L_ATE_005, (DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD)) // "Defeat Jonathan Dark"
complete_flags(STAGEFLAG_JONATHAN_DEAD)
endobjective
beginobjective(2, L_ATE_006, (DIFFBIT_PA | DIFFBIT_PD)) // "Defeat Trent Easton"
complete_flags(STAGEFLAG_TRENT_DEAD)
endobjective
chr(SPAWNFLAG_00000200, 0x00, PAD_ATE_0279, BODY_DDSHOCK, HEAD_RANDOM, AILIST_GUARD_INIT, -1, -1, 100, 100, CHRFLAG0_CAN_THROW_GRENADES | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_HOLD_POSITION | CHRFLAG0_COVER_TYPE2 | CHRFLAG0_NOHEAR, CHRFLAG1_STOPTRACKINGIFLOOKEDAT, TEAM_ENEMY, SQUADRON_04, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRFALCON2, CHR_GUARD, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_FALCON2_SCOPE)
chr(SPAWNFLAG_00000200, 0x01, PAD_ATE_0023, BODY_CISOLDIER, HEAD_JONATHAN, AILIST_JON_INIT, -1, -1, 100, 100, CHRFLAG0_CAN_THROW_GRENADES | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_HOLD_POSITION | CHRFLAG0_COVER_TYPE2 | CHRFLAG0_NOHEAR, CHRFLAG1_STOPTRACKINGIFLOOKEDAT, TEAM_ENEMY, SQUADRON_04, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRDY357, CHR_JONATHAN, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_DY357MAGNUM)
chr(SPAWNFLAG_00000200, 0x02, PAD_ATE_0024, BODY_TRENT, HEAD_TRENT, AILIST_TRENT_INIT, -1, -1, 100, 100, CHRFLAG0_CAN_THROW_GRENADES | CHRFLAG0_SQUADALERTANYDIST | CHRFLAG0_HOLD_POSITION | CHRFLAG0_COVER_TYPE2 | CHRFLAG0_NOHEAR, CHRFLAG1_STOPTRACKINGIFLOOKEDAT, TEAM_ENEMY, SQUADRON_04, -1, 0, 0, 0, 0, 0)
weapon(0x0100, MODEL_CHRDY357TRENT, CHR_TRENT, OBJFLAG_ASSIGNEDTOCHR, 0, 0, WEAPON_DY357LX)
door(0x0100, MODEL_DD_OFFICEDOOR, PAD_ATE_0158, OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, DOORFLAG_0004, DOORTYPE_SLIDING, 0x00000040, 0x00000384, 0x00000000, 0x00000001, 0x00000800)
door(0x0100, MODEL_DD_OFFICEDOOR, PAD_ATE_0159, OBJFLAG_IGNOREFLOORCOLOUR, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, DOORFLAG_0004, DOORTYPE_SLIDING, 0x00000040, 0x00000384, 0x00000000, 0xffffffff, 0x00000000)
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
spawn(PAD_ATE_027A)
intro_weapon(WEAPON_FALCON2_SCOPE, -1)
ammo(AMMOTYPE_PISTOL, 8)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
u8 func1000_counterop_setup[] = {
yield
set_chr_team(CHR_ANTI, TEAM_ENEMY)
set_ailist(CHR_SELF, GAILIST_REBUILD_GROUPS)
endlist
};
u8 func1001_objectives_failed[] = {
yield
set_ailist(CHR_SELF, GAILIST_SHOW_OBJ_FAILED_MSG)
endlist
};
u8 func1002_first_walk[] = {
set_chr_chrflag(CHR_COOP, CHRCFLAG_HIDDEN)
set_chr_chrflag(CHR_ANTI, CHRCFLAG_HIDDEN)
camera_movement(ANIM_CUT_ATE_INTRO_CAM)
unset_chr_chrflag(CHR_BOND, CHRCFLAG_HIDDEN)
set_chr_chrflag(CHR_BOND, CHRCFLAG_UNPLAYABLE)
set_chr_hiddenflag(CHR_BOND, CHRHFLAG_00020000)
show_hudmsg_middle(0x00, COLOR_02_WHITE, L_ATE_007) // "THE DUEL"
chr_do_animation(ANIM_RELOAD, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_GUARD, 2)
label(0x2d)
show_hudmsg(CHR_BOND, L_ATE_012) // "Opponent skill level: AGENT"
// Wait for camera to stop animating
restart_timer
beginloop(0x08)
if_camera_animating(/*goto*/ 0x2d)
goto_next(0x06)
label(0x2d)
endloop(0x08)
// Start walking
label(0x06)
remove_hudmsgs
revoke_control(CHR_BOND, 0)
enter_firstperson
force_walk(CHR_BOND, 0x0275, 40, 5, 0, 100)
chr_move_to_pad(CHR_GUARD, PAD_ATE_0274, 0x01, /*goto*/ 0x0b)
// Wait for walk to finish
beginloop(0x0b)
if_force_walk_finished(CHR_BOND, /*goto*/ 0x0c)
endloop(0x0b)
label(0x0c)
grant_control(CHR_BOND)
set_ailist(CHR_GUARD, AILIST_GUARD_COMBAT)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1007_second_walk[] = {
// Wait until SA walk trigger
beginloop(0x58)
if_chr_dead(CHR_BOND, /*goto*/ 0x2d)
if_chr_death_animation_finished(CHR_BOND, /*goto*/ 0x2d)
if_stage_flag_eq(STAGEFLAG_SA_WALK_TRIGGER, TRUE, /*goto*/ 0x06)
endloop(0x58)
// Begin cutscene
label(0x2d)
set_ailist(CHR_SELF, GAILIST_IDLE)
label(0x06)
revoke_control(CHR_BOND, 0)
camera_movement(ANIM_CUT_ATE_INTRO_CAM)
// Place chrs
label(0x8f)
set_ailist(CHR_P1P2, AILIST_MOVE_TO_PAD)
chr_move_to_pad(CHR_JONATHAN, PAD_ATE_0279, 0x01, /*goto*/ 0x2d)
yield
goto_first(0x8f)
label(0x2d)
unset_chr_chrflag(CHR_JONATHAN, CHRCFLAG_HIDDEN)
unset_chr_chrflag(CHR_JONATHAN, CHRCFLAG_INVINCIBLE)
unset_chr_chrflag(CHR_JONATHAN, CHRCFLAG_UNEXPLODABLE)
yield
unset_chr_chrflag(CHR_BOND, CHRCFLAG_HIDDEN)
set_chr_chrflag(CHR_BOND, CHRCFLAG_UNPLAYABLE)
set_chr_hiddenflag(CHR_BOND, CHRHFLAG_00020000)
chr_do_animation(ANIM_GRAB_CROTCH, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_JONATHAN, 2)
label(0x2d)
show_hudmsg(CHR_BOND, L_ATE_013) // "Opponent skill level: SPECIAL AGENT"
restart_timer
beginloop(0x08)
if_camera_animating(/*goto*/ 0x2d)
goto_next(0x06)
label(0x2d)
endloop(0x08)
// Start force walk
label(0x06)
label(0x2d)
remove_hudmsgs
revoke_control(CHR_BOND, 0)
enter_firstperson
yield
force_walk(CHR_BOND, 0x0275, 40, 5, 0, 100)
// Place Jon
call_rng
if_rand_lt(128, /*goto*/ 0x8f)
chr_move_to_pad(CHR_JONATHAN, PAD_ATE_0271, 0x01, /*goto*/ 0x0b)
label(0x8f)
chr_move_to_pad(CHR_JONATHAN, PAD_ATE_0270, 0x01, /*goto*/ 0x0b)
// Wait for force walk to finish
beginloop(0x0b)
if_force_walk_finished(CHR_BOND, /*goto*/ 0x0c)
endloop(0x0b)
// Give control back to Jo
label(0x0c)
grant_control(CHR_BOND)
set_ailist(CHR_JONATHAN, AILIST_JON_COMBAT)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func0401_move_to_pad[] = {
chr_move_to_pad(CHR_SELF, PAD_ATE_027A, 0x01, /*goto*/ 0x06)
label(0x06)
yield
stop_chr
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1008_third_walk[] = {
// Wait for flag or Jo dying
beginloop(0x58)
if_chr_dead(CHR_BOND, /*goto*/ 0x2d)
if_chr_death_animation_finished(CHR_BOND, /*goto*/ 0x2d)
if_stage_flag_eq(STAGEFLAG_PA_WALK_TRIGGER, TRUE, /*goto*/ 0x06)
endloop(0x58)
// Jo dead
label(0x2d)
set_ailist(CHR_SELF, GAILIST_IDLE)
// Do cutscene
label(0x06)
revoke_control(CHR_BOND, 0)
camera_movement(ANIM_CUT_ATE_INTRO_CAM)
label(0x8f)
set_ailist(CHR_P1P2, AILIST_MOVE_TO_PAD)
chr_move_to_pad(CHR_TRENT, PAD_ATE_0279, 0x01, /*goto*/ 0x2d)
yield
goto_first(0x8f)
label(0x2d)
unset_chr_chrflag(CHR_TRENT, CHRCFLAG_HIDDEN)
unset_chr_chrflag(CHR_TRENT, CHRCFLAG_INVINCIBLE)
unset_chr_chrflag(CHR_TRENT, CHRCFLAG_UNEXPLODABLE)
yield
unset_chr_chrflag(CHR_BOND, CHRCFLAG_HIDDEN)
set_chr_chrflag(CHR_BOND, CHRCFLAG_UNPLAYABLE)
set_chr_hiddenflag(CHR_BOND, CHRHFLAG_00020000)
chr_do_animation(ANIM_HEAD_ROLL, -1, -1, CHRANIMFLAG_MOVEWHENINVIS | CHRANIMFLAG_PAUSEATEND, 0, CHR_TRENT, 2)
label(0x2d)
show_hudmsg(CHR_BOND, L_ATE_014) // "Opponent skill level: PERFECT AGENT"
// Wait for cutscene to finish
restart_timer
beginloop(0x08)
if_camera_animating(/*goto*/ 0x2d)
goto_next(0x06)
label(0x2d)
endloop(0x08)
// Begin force walk
label(0x06)
remove_hudmsgs
revoke_control(CHR_BOND, 0)
enter_firstperson
force_walk(CHR_BOND, 0x0275, 40, 5, 0, 100)
chr_move_to_pad(CHR_TRENT, PAD_ATE_0272, 0x01, /*goto*/ 0x0b)
beginloop(0x0b)
if_force_walk_finished(CHR_BOND, /*goto*/ 0x0c)
endloop(0x0b)
label(0x0c)
set_ailist(CHR_TRENT, AILIST_TRENT_COMBAT)
grant_control(CHR_BOND)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1004_revoke_control[] = {
yield
revoke_control(CHR_BOND, 0)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1005_main[] = {
// Wait until guard dead
beginloop(0x04)
if_chr_deadish(CHR_GUARD, /*goto*/ 0x2d)
endloop(0x04)
label(0x2d)
show_hudmsg(CHR_BOND, L_ATE_009) // "Well done! You were too quick for him!"
set_stage_flag(STAGEFLAG_GUARD_DEAD)
restart_timer
beginloop(0x08)
if_timer_gt(120, /*goto*/ 0x2d)
endloop(0x08)
// If Agent, return
label(0x2d)
if_difficulty_lt(DIFF_SA, /*goto*/ 0x2d)
goto_next(0x06)
label(0x2d)
set_ailist(CHR_SELF, GAILIST_IDLE)
label(0x06)
set_stage_flag(STAGEFLAG_SA_WALK_TRIGGER)
// Wait until Jonathan dead
beginloop(0x09)
if_chr_deadish(CHR_JONATHAN, /*goto*/ 0x2d)
endloop(0x09)
label(0x2d)
show_hudmsg(CHR_BOND, L_ATE_010) // "Well done! You were too quick for him!"
set_stage_flag(STAGEFLAG_JONATHAN_DEAD)
restart_timer
beginloop(0x0b)
if_timer_gt(120, /*goto*/ 0x2d)
endloop(0x0b)
// If Special Agent, return
label(0x2d)
if_difficulty_lt(DIFF_PA, /*goto*/ 0x2d)
goto_next(0x06)
label(0x2d)
set_ailist(CHR_SELF, GAILIST_IDLE)
label(0x06)
set_stage_flag(STAGEFLAG_PA_WALK_TRIGGER)
// Wait until Trent dead
beginloop(0x0c)
if_chr_deadish(CHR_TRENT, /*goto*/ 0x2d)
endloop(0x0c)
label(0x2d)
show_hudmsg(CHR_BOND, L_ATE_011) // "Well done! You were too quick for him!"
set_stage_flag(STAGEFLAG_TRENT_DEAD)
restart_timer
beginloop(0x0d)
if_timer_gt(120, /*goto*/ 0x2d)
endloop(0x0d)
label(0x2d)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1003_init_audio[] = {
stop_cutscene_track
stop_ambient_track
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func1006_check_objectives_complete[] = {
// Wait for all objectives complete
beginloop(0x04)
if_all_objectives_complete(/*goto*/ 0x2d)
endloop(0x04)
// Wait 3 seconds
label(0x2d)
restart_timer
beginloop(0x08)
if_timer_gt(180, /*goto*/ 0x2d)
endloop(0x08)
// End level
label(0x2d)
end_level
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func0402_guard_combat[] = {
set_shotlist(AILIST_GUARD_COMBAT)
if_just_injured(CHR_SELF, /*goto*/ 0x03)
set_chr_hiddenflag(CHR_SELF, CHRHFLAG_PERFECTACCURACY)
// Wait 2 seconds or for guard to come into view
restart_timer
beginloop(0x04)
if_timer_gt(120, /*goto*/ 0x06)
if_chr_in_view(/*goto*/ 0x2d)
endloop(0x04)
// Guard has come into view. Jump sideways.
label(0x2d)
try_sidestep(/*goto*/ 0x08)
beginloop(0x08)
if_distance_to_target_lt(250, /*goto*/ 0x0e)
if_chr_stopped(/*goto*/ 0x03)
endloop(0x08)
// Guard has been shot, or finished jump
beginloop(0x03)
if_distance_to_target_lt(250, /*goto*/ 0x0e)
if_can_see_target(/*goto*/ 0x06)
reloop(0x03)
// 2 seconds have passed without seeing guard, or guard has been shot
label(0x06)
if_chr_dead(CHR_TARGET, /*goto*/ 0x2e)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x2d)
label(0x2d)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x0c)
beginloop(0x0c)
if_chr_stopped(/*goto*/ 0x06)
endloop(0x0c)
// Finished shooting
label(0x06)
endloop(0x03)
// Dying
label(0x2e)
set_ailist(CHR_SELF, GAILIST_IDLE)
// Hand combat
label(0x0e)
set_returnlist(CHR_SELF, AILIST_TRENT_COMBAT)
set_ailist(CHR_SELF, GAILIST_HAND_COMBAT)
endlist
};
u8 func0403_jon_combat[] = {
set_shotlist(AILIST_JON_COMBAT)
if_just_injured(CHR_SELF, /*goto*/ 0x58)
set_chr_hiddenflag(CHR_SELF, CHRHFLAG_PERFECTACCURACY)
restart_timer
beginloop(0x04)
if_timer_gt(240, /*goto*/ 0x58)
if_nearly_in_targets_sight(30, /*goto*/ 0x58)
endloop(0x04)
label(0x58)
try_run_to_target(/*goto*/ 0x08)
beginloop(0x08)
if_distance_to_target_lt(250, /*goto*/ 0x0e)
if_can_see_attack_target(/*goto*/ 0x06)
reloop(0x08)
label(0x06)
try_attack_kneel(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x2d)
label(0x2d)
try_attack_roll(/*goto*/ 0x0c)
try_attack_kneel(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x0c)
beginloop(0x0c)
if_chr_stopped(/*goto*/ 0x06)
endloop(0x0c)
label(0x06)
endloop(0x58)
label(0x0e)
set_returnlist(CHR_SELF, AILIST_JON_COMBAT)
set_ailist(CHR_SELF, GAILIST_HAND_COMBAT)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func0404_trent_combat[] = {
set_shotlist(AILIST_TRENT_COMBAT)
if_just_injured(CHR_SELF, /*goto*/ 0x03)
set_chr_hiddenflag(CHR_SELF, CHRHFLAG_PERFECTACCURACY)
restart_timer
beginloop(0x04)
if_timer_gt(120, /*goto*/ 0x03)
if_chr_in_view(/*goto*/ 0x03)
endloop(0x04)
// Wait until player in sight or in close range
beginloop(0x03)
if_distance_to_target_lt(250, /*goto*/ 0x0e)
if_can_see_target(/*goto*/ 0x06)
reloop(0x03)
// Attack
label(0x06)
if_chr_dead(CHR_TARGET, /*goto*/ 0x2e)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x2d)
label(0x2d)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x0c)
beginloop(0x0c)
if_chr_stopped(/*goto*/ 0x06)
endloop(0x0c)
label(0x06)
endloop(0x03)
// Hand combat
label(0x0e)
set_returnlist(CHR_SELF, AILIST_TRENT_COMBAT)
set_ailist(CHR_SELF, GAILIST_HAND_COMBAT)
label(0x2e)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func0405_guard_init[] = {
set_self_chrflag(CHRCFLAG_NOAUTOAIM)
// @bug: The value for set_accuracy is interpreted as a signed byte,
// so 200 is interpreted as -56 which reduces the chr's accuracy.
// However this isn't an issue because the chr has CHRHFLAG_PERFECTACCURACY.
// This bug is repeated for Jon and Trent below.
set_accuracy(200)
set_reaction_speed(50)
set_chr_maxdamage(CHR_SELF, 20)
add_health_or_armor(0)
set_recovery_speed(0)
set_shield(0)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func0406_jon_init[] = {
set_self_chrflag(CHRCFLAG_NOAUTOAIM)
set_accuracy(200)
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_HIDDEN)
set_self_chrflag(CHRCFLAG_INVINCIBLE)
set_self_chrflag(CHRCFLAG_UNEXPLODABLE)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
u8 func0407_trent_init[] = {
set_self_chrflag(CHRCFLAG_NOAUTOAIM)
set_accuracy(200)
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_HIDDEN)
set_self_chrflag(CHRCFLAG_INVINCIBLE)
set_self_chrflag(CHRCFLAG_UNEXPLODABLE)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
};
struct ailist ailists[] = {
{ func1000_counterop_setup, 0x1000 },
{ func1001_objectives_failed, 0x1001 },
{ func1002_first_walk, 0x1002 },
{ func1003_init_audio, 0x1003 },
{ func1004_revoke_control, 0x1004 },
{ func1005_main, 0x1005 },
{ func1006_check_objectives_complete, 0x1006 },
{ func1007_second_walk, 0x1007 },
{ func1008_third_walk, 0x1008 },
{ func0401_move_to_pad, 0x0401 },
{ func0402_guard_combat, 0x0402 },
{ func0403_jon_combat, 0x0403 },
{ func0404_trent_combat, 0x0404 },
{ func0405_guard_init, 0x0405 },
{ func0406_jon_init, 0x0406 },
{ func0407_trent_init, 0x0407 },
{ NULL, 0 },
};
File diff suppressed because it is too large Load Diff
+38
View File
@@ -0,0 +1,38 @@
//
// Stage ID 0x28
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
File diff suppressed because it is too large Load Diff
+40
View File
@@ -0,0 +1,40 @@
//
// Pipes (MP)
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
intro_weapon(WEAPON_FALCON2, -1)
ammo(AMMOTYPE_PISTOL, 100)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+39
View File
@@ -0,0 +1,39 @@
//
// G5 Building (MP)
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
intro_weapon(WEAPON_FALCON2, -1)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+39
View File
@@ -0,0 +1,39 @@
//
// Stage ID 0x1a
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+40
View File
@@ -0,0 +1,40 @@
//
// Temple (MP)
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
intro_weapon(WEAPON_NONE, -1)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+39
View File
@@ -0,0 +1,39 @@
//
// Stage ID 0x50
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
File diff suppressed because it is too large Load Diff
+40
View File
@@ -0,0 +1,40 @@
//
// Stage ID 0x36
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
intro_weapon(WEAPON_NONE, -1)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+39
View File
@@ -0,0 +1,39 @@
//
// Base (MP)
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+41
View File
@@ -0,0 +1,41 @@
//
// Sewers (MP)
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
lift(0x0100, MODEL_A51_LIFT_THINWALL, PAD_MP10_006A, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x006a, 0x006b, -1, -1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00003555, 0x00085555, 0x00000000)
lift(0x0100, MODEL_A51_LIFT_THINWALL, PAD_MP10_006C, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x006c, 0x006d, -1, -1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00003555, 0x00085555, 0x00000000)
lift(0x0100, MODEL_A51_LIFT_THINWALL, PAD_MP10_006E, OBJFLAG_00000008 | OBJFLAG_00000020 | OBJFLAG_00000040 | OBJFLAG_00000080 | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_00400000 | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE, OBJFLAG2_00000100 | OBJFLAG2_00000200 | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_00200000, 0, 1000, 0x006e, 0x006f, -1, -1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00003555, 0x00085555, 0x00000000)
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+39
View File
@@ -0,0 +1,39 @@
//
// Felicity (MP)
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+39
View File
@@ -0,0 +1,39 @@
//
// Fortress (MP)
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+39
View File
@@ -0,0 +1,39 @@
//
// Villa (MP)
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+39
View File
@@ -0,0 +1,39 @@
//
// Stage ID 0x46
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+39
View File
@@ -0,0 +1,39 @@
//
// Grid (MP)
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+39
View File
@@ -0,0 +1,39 @@
//
// Stage ID 0x48
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+39
View File
@@ -0,0 +1,39 @@
//
// Stage ID 0x49
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+39
View File
@@ -0,0 +1,39 @@
//
// Stage ID 0x4a
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};
+39
View File
@@ -0,0 +1,39 @@
//
// Stage ID 0x4b
//
#include "stagesetup.h"
extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];
struct stagesetup setup = {
NULL,
NULL,
NULL,
intro,
props,
paths,
ailists,
NULL,
};
u32 props[] = {
endprops
};
s32 intro[] = {
outfit(OUTFIT_DEFAULT)
endintro
};
struct path paths[] = {
{ NULL, 0, 0 },
};
struct ailist ailists[] = {
{ NULL, 0 },
};

Some files were not shown because too many files have changed in this diff Show More