mirror of
https://gitlab.com/ryandwyer/perfect-dark
synced 2026-05-29 08:42:48 -04:00
Introduce ai2asm
This commit is contained in:
@@ -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 $@ $<
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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); \
|
||||
|
||||
@@ -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
|
||||
* -------------------------------------------------------------------------
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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
@@ -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
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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
@@ -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
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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
@@ -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
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user