mirror of
https://github.com/pmret/papermario.git
synced 2024-09-19 16:01:48 +02:00
isk+ (#878)
* isk_01/2/3 * machi * mac_05 * mac_04 matched * mac_04 * mac_02 match * mostly cookin * mac_02 cleanup * tayce t cleanup done * most of isk * almost done isk * isk done * mapconfig 1C * jump to goal Co-authored-by: HailSanta <Hail2Santa@gmail.com>
This commit is contained in:
parent
40c2b9be4d
commit
703896a7f1
@ -416,7 +416,7 @@ typedef union X32 {
|
|||||||
} X32;
|
} X32;
|
||||||
|
|
||||||
typedef struct Evt {
|
typedef struct Evt {
|
||||||
/* 0x000 */ u8 state;
|
/* 0x000 */ u8 stateFlags;
|
||||||
/* 0x001 */ u8 currentArgc;
|
/* 0x001 */ u8 currentArgc;
|
||||||
/* 0x002 */ u8 currentOpcode;
|
/* 0x002 */ u8 currentOpcode;
|
||||||
/* 0x003 */ u8 priority;
|
/* 0x003 */ u8 priority;
|
||||||
@ -1514,7 +1514,7 @@ typedef struct SelectableTarget {
|
|||||||
} SelectableTarget; // size = 0x14
|
} SelectableTarget; // size = 0x14
|
||||||
|
|
||||||
typedef struct ActorPartMovement {
|
typedef struct ActorPartMovement {
|
||||||
/* 0x00 */ Vec3f unk_00;
|
/* 0x00 */ Vec3f absolutePosition;
|
||||||
/* 0x0C */ Vec3f goalPos;
|
/* 0x0C */ Vec3f goalPos;
|
||||||
/* 0x18 */ Vec3f unk_18;
|
/* 0x18 */ Vec3f unk_18;
|
||||||
/* 0x24 */ f32 jumpScale;
|
/* 0x24 */ f32 jumpScale;
|
||||||
|
@ -3381,7 +3381,7 @@ enum PlayerStatusAnimFlags {
|
|||||||
PA_FLAGS_SHIVERING = 0x00000400,
|
PA_FLAGS_SHIVERING = 0x00000400,
|
||||||
PA_FLAGS_OPENED_HIDDEN_PANEL = 0x00000800,
|
PA_FLAGS_OPENED_HIDDEN_PANEL = 0x00000800,
|
||||||
PA_FLAGS_USING_PEACH_PHYSICS = 0x00001000,
|
PA_FLAGS_USING_PEACH_PHYSICS = 0x00001000,
|
||||||
PA_FLAGS_IN_DISGUISE = 0x00002000,
|
PA_FLAGS_INVISIBLE = 0x00002000,
|
||||||
PA_FLAGS_8BIT_MARIO = 0x00004000,
|
PA_FLAGS_8BIT_MARIO = 0x00004000,
|
||||||
PA_FLAGS_NPC_COLLIDED = 0x00008000,
|
PA_FLAGS_NPC_COLLIDED = 0x00008000,
|
||||||
PA_FLAGS_SPINNING = 0x00010000,
|
PA_FLAGS_SPINNING = 0x00010000,
|
||||||
@ -4437,37 +4437,11 @@ enum ProjectileHitboxAttackStates {
|
|||||||
|
|
||||||
enum MusicSettingsFlags {
|
enum MusicSettingsFlags {
|
||||||
MUSIC_SETTINGS_FLAGS_1 = 0x00000001,
|
MUSIC_SETTINGS_FLAGS_1 = 0x00000001,
|
||||||
MUSIC_SETTINGS_FLAGS_2 = 0x00000002,
|
MUSIC_SETTINGS_FLAGS_ENABLE_PROXIMITY_MIX = 0x00000002,
|
||||||
MUSIC_SETTINGS_FLAGS_4 = 0x00000004,
|
MUSIC_SETTINGS_FLAGS_4 = 0x00000004,
|
||||||
MUSIC_SETTINGS_FLAGS_8 = 0x00000008,
|
MUSIC_SETTINGS_FLAGS_8 = 0x00000008,
|
||||||
MUSIC_SETTINGS_FLAGS_10 = 0x00000010,
|
MUSIC_SETTINGS_FLAGS_10 = 0x00000010,
|
||||||
MUSIC_SETTINGS_FLAGS_20 = 0x00000020,
|
MUSIC_SETTINGS_FLAGS_20 = 0x00000020,
|
||||||
MUSIC_SETTINGS_FLAGS_40 = 0x00000040,
|
|
||||||
MUSIC_SETTINGS_FLAGS_80 = 0x00000080,
|
|
||||||
MUSIC_SETTINGS_FLAGS_100 = 0x00000100,
|
|
||||||
MUSIC_SETTINGS_FLAGS_200 = 0x00000200,
|
|
||||||
MUSIC_SETTINGS_FLAGS_400 = 0x00000400,
|
|
||||||
MUSIC_SETTINGS_FLAGS_800 = 0x00000800,
|
|
||||||
MUSIC_SETTINGS_FLAGS_1000 = 0x00001000,
|
|
||||||
MUSIC_SETTINGS_FLAGS_2000 = 0x00002000,
|
|
||||||
MUSIC_SETTINGS_FLAGS_4000 = 0x00004000,
|
|
||||||
MUSIC_SETTINGS_FLAGS_8000 = 0x00008000,
|
|
||||||
MUSIC_SETTINGS_FLAGS_10000 = 0x00010000,
|
|
||||||
MUSIC_SETTINGS_FLAGS_20000 = 0x00020000,
|
|
||||||
MUSIC_SETTINGS_FLAGS_40000 = 0x00040000,
|
|
||||||
MUSIC_SETTINGS_FLAGS_80000 = 0x00080000,
|
|
||||||
MUSIC_SETTINGS_FLAGS_100000 = 0x00100000,
|
|
||||||
MUSIC_SETTINGS_FLAGS_200000 = 0x00200000,
|
|
||||||
MUSIC_SETTINGS_FLAGS_400000 = 0x00400000,
|
|
||||||
MUSIC_SETTINGS_FLAGS_800000 = 0x00800000,
|
|
||||||
MUSIC_SETTINGS_FLAGS_1000000 = 0x01000000,
|
|
||||||
MUSIC_SETTINGS_FLAGS_2000000 = 0x02000000,
|
|
||||||
MUSIC_SETTINGS_FLAGS_4000000 = 0x04000000,
|
|
||||||
MUSIC_SETTINGS_FLAGS_8000000 = 0x08000000,
|
|
||||||
MUSIC_SETTINGS_FLAGS_10000000 = 0x10000000,
|
|
||||||
MUSIC_SETTINGS_FLAGS_20000000 = 0x20000000,
|
|
||||||
MUSIC_SETTINGS_FLAGS_40000000 = 0x40000000,
|
|
||||||
MUSIC_SETTINGS_FLAGS_80000000 = 0x80000000,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// the lower byte of Collider::flags
|
// the lower byte of Collider::flags
|
||||||
|
@ -939,7 +939,7 @@ void func_800E9810(void);
|
|||||||
void func_800E983C(void);
|
void func_800E983C(void);
|
||||||
void func_800E984C(void);
|
void func_800E984C(void);
|
||||||
s32 func_800E9860(void);
|
s32 func_800E9860(void);
|
||||||
void func_800E98C4(void);
|
void status_menu_respond_to_changes(void);
|
||||||
void func_800E98EC(void);
|
void func_800E98EC(void);
|
||||||
void func_800E9900(void);
|
void func_800E9900(void);
|
||||||
void func_800F0C9C(void);
|
void func_800F0C9C(void);
|
||||||
@ -981,7 +981,7 @@ void func_8025DA60(ActorPart*, s32);
|
|||||||
void func_8025DBC8(ActorPart*, s32);
|
void func_8025DBC8(ActorPart*, s32);
|
||||||
void func_8025DD40(ActorPart*, s32);
|
void func_8025DD40(ActorPart*, s32);
|
||||||
void func_8025DE88(ActorPart*, s32);
|
void func_8025DE88(ActorPart*, s32);
|
||||||
void func_800E9894(void);
|
void status_menu_ignore_changes(void);
|
||||||
void func_8013A854(u32);
|
void func_8013A854(u32);
|
||||||
|
|
||||||
void set_script_flags(Evt* script, s32 flags);
|
void set_script_flags(Evt* script, s32 flags);
|
||||||
|
@ -16,9 +16,10 @@
|
|||||||
#define ALIGN16(val) (((val) + 0xF) & ~0xF)
|
#define ALIGN16(val) (((val) + 0xF) & ~0xF)
|
||||||
#define ALIGN8(val) (((val) + 0x7) & ~0x7)
|
#define ALIGN8(val) (((val) + 0x7) & ~0x7)
|
||||||
|
|
||||||
#define NAMESUFFIX
|
#define NAME_SUFFIX
|
||||||
#define A(sym) NS(AREA, sym, NAMESUFFIX)
|
#define NAME_PREFIX
|
||||||
#define N(sym) NS(NAMESPACE, sym, NAMESUFFIX)
|
#define A(sym) NS(AREA, NAME_PREFIX, sym, NAME_SUFFIX)
|
||||||
|
#define N(sym) NS(NAMESPACE, NAME_PREFIX, sym, NAME_SUFFIX)
|
||||||
|
|
||||||
#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0]))
|
#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0]))
|
||||||
|
|
||||||
@ -76,6 +77,8 @@
|
|||||||
#define MAX_TEX_PANNERS 16
|
#define MAX_TEX_PANNERS 16
|
||||||
#define MAX_ITEM_ENTITIES 256
|
#define MAX_ITEM_ENTITIES 256
|
||||||
|
|
||||||
|
#define MAX_STAR_PIECES 222
|
||||||
|
|
||||||
#define SCREEN_WIDTH 320
|
#define SCREEN_WIDTH 320
|
||||||
#define SCREEN_HEIGHT 240
|
#define SCREEN_HEIGHT 240
|
||||||
|
|
||||||
@ -132,8 +135,8 @@
|
|||||||
/// X.10 fixed-point literal
|
/// X.10 fixed-point literal
|
||||||
#define X10(f) (s32)(f * 1024.0f)
|
#define X10(f) (s32)(f * 1024.0f)
|
||||||
|
|
||||||
#define _NS(x, y, z) x ## _ ## y ## z
|
#define _NS(w, x, y, z) w ## _ ## x ## y ## z
|
||||||
#define NS(x, y, z) _NS(x, y, z)
|
#define NS(w, x, y, z) _NS(w, x, y, z)
|
||||||
|
|
||||||
#define ASCII_TO_U32(a, b, c, d) ((u32)((a << 24) | (b << 16) | (c << 8) | (d << 0)))
|
#define ASCII_TO_U32(a, b, c, d) ((u32)((a << 24) | (b << 16) | (c << 8) | (d << 0)))
|
||||||
|
|
||||||
|
@ -53,14 +53,9 @@ typedef struct MapConfig {
|
|||||||
/* 0x10 */ void* dmaDest;
|
/* 0x10 */ void* dmaDest;
|
||||||
/* 0x14 */ char* bgName;
|
/* 0x14 */ char* bgName;
|
||||||
/* 0x18 */ MapInit init; ///< Return TRUE to skip normal asset (shape/hit/bg/tex) loading.
|
/* 0x18 */ MapInit init; ///< Return TRUE to skip normal asset (shape/hit/bg/tex) loading.
|
||||||
/* 0x1C */ union {
|
/* 0x1C */ char unk_1C[0x2];
|
||||||
u32 word;
|
/* 0x1E */ s8 songVariation; ///< 0 or 1. @see bgm_get_map_default_variation
|
||||||
struct {
|
/* 0x1F */ s8 sfxReverb;
|
||||||
char unk_1C[0x2];
|
|
||||||
s8 songVariation; ///< 0 or 1. @see bgm_get_map_default_variation
|
|
||||||
s8 flags;
|
|
||||||
} bytes;
|
|
||||||
} unk_1C;
|
|
||||||
} MapConfig; // size = 0x20
|
} MapConfig; // size = 0x20
|
||||||
|
|
||||||
typedef struct AreaConfig {
|
typedef struct AreaConfig {
|
||||||
|
@ -22,10 +22,10 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#define GENEROUS_HEART_DROPS(attempts) { \
|
#define GENEROUS_HEART_DROPS(attempts) { \
|
||||||
{ F16(20), F16(80), attempts, F16(50) } \
|
{ F16(20), F16(80), attempts, F16(50) }, \
|
||||||
{ F16(30), F16(70), attempts, F16(50) } \
|
{ F16(30), F16(70), attempts, F16(50) }, \
|
||||||
{ F16(50), F16(60), attempts, F16(40) } \
|
{ F16(50), F16(60), attempts, F16(40) }, \
|
||||||
{ F16(80), F16(50), attempts, F16(40) } \
|
{ F16(80), F16(50), attempts, F16(40) }, \
|
||||||
{ F16(100), F16(40), attempts, F16(30) }, \
|
{ F16(100), F16(40), attempts, F16(30) }, \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -316,37 +316,37 @@ enum GameBytes {
|
|||||||
GB_Unused_KPA_0F = GameByte(0x138),
|
GB_Unused_KPA_0F = GameByte(0x138),
|
||||||
GB_Unused_KPA_10 = GameByte(0x139),
|
GB_Unused_KPA_10 = GameByte(0x139),
|
||||||
GB_Unused_KPA_11 = GameByte(0x13A),
|
GB_Unused_KPA_11 = GameByte(0x13A),
|
||||||
GB_Unused_END_00 = GameByte(0x13B),
|
GB_Unused_OSR_00 = GameByte(0x13B),
|
||||||
GB_Unused_END_01 = GameByte(0x13C),
|
GB_Unused_OSR_01 = GameByte(0x13C),
|
||||||
GB_Unused_END_02 = GameByte(0x13D),
|
GB_Unused_OSR_02 = GameByte(0x13D),
|
||||||
GB_Unused_END_03 = GameByte(0x13E),
|
GB_Unused_OSR_03 = GameByte(0x13E),
|
||||||
GB_Unused_END_04 = GameByte(0x13F),
|
GB_Unused_OSR_04 = GameByte(0x13F),
|
||||||
GB_Unused_END_05 = GameByte(0x140),
|
GB_Unused_OSR_05 = GameByte(0x140),
|
||||||
GB_Unused_END_06 = GameByte(0x141),
|
GB_Unused_OSR_06 = GameByte(0x141),
|
||||||
GB_Unused_END_07 = GameByte(0x142),
|
GB_Unused_OSR_07 = GameByte(0x142),
|
||||||
GB_Unused_END_08 = GameByte(0x143),
|
GB_Unused_OSR_08 = GameByte(0x143),
|
||||||
GB_Unused_END_09 = GameByte(0x144),
|
GB_Unused_OSR_09 = GameByte(0x144),
|
||||||
GB_Unused_END_0A = GameByte(0x145),
|
GB_Unused_END_00 = GameByte(0x145),
|
||||||
GB_Unused_END_0B = GameByte(0x146),
|
GB_Unused_END_01 = GameByte(0x146),
|
||||||
GB_Unused_END_0C = GameByte(0x147),
|
GB_Unused_END_02 = GameByte(0x147),
|
||||||
GB_Unused_END_0D = GameByte(0x148),
|
GB_Unused_END_03 = GameByte(0x148),
|
||||||
GB_Unused_END_0E = GameByte(0x149),
|
GB_Unused_END_04 = GameByte(0x149),
|
||||||
GB_Unused_END_0F = GameByte(0x14A),
|
GB_Unused_END_05 = GameByte(0x14A),
|
||||||
GB_Unused_END_10 = GameByte(0x14B),
|
GB_Unused_END_06 = GameByte(0x14B),
|
||||||
GB_Unused_END_11 = GameByte(0x14C),
|
GB_Unused_END_07 = GameByte(0x14C),
|
||||||
GB_Unused_END_12 = GameByte(0x14D),
|
GB_Unused_END_08 = GameByte(0x14D),
|
||||||
GB_Unused_END_13 = GameByte(0x14E),
|
GB_Unused_END_09 = GameByte(0x14E),
|
||||||
GB_Unused_END_14 = GameByte(0x14F),
|
GB_Unused_END_0A = GameByte(0x14F),
|
||||||
GB_Unused_OSR_00 = GameByte(0x150),
|
GB_Unused_BAT_00 = GameByte(0x150),
|
||||||
GB_Unused_BAT_00 = GameByte(0x151),
|
GB_Unused_BAT_01 = GameByte(0x151),
|
||||||
GB_Unused_BAT_01 = GameByte(0x152),
|
GB_Unused_BAT_02 = GameByte(0x152),
|
||||||
GB_Unused_BAT_02 = GameByte(0x153),
|
GB_Unused_BAT_03 = GameByte(0x153),
|
||||||
GB_Unused_BAT_03 = GameByte(0x154),
|
GB_Unused_BAT_04 = GameByte(0x154),
|
||||||
GB_Unused_BAT_04 = GameByte(0x155),
|
GB_Unused_BAT_05 = GameByte(0x155),
|
||||||
GB_Unused_BAT_05 = GameByte(0x156),
|
GB_Unused_BAT_06 = GameByte(0x156),
|
||||||
GB_Unused_BAT_06 = GameByte(0x157),
|
GB_Unused_BAT_07 = GameByte(0x157),
|
||||||
GB_Unused_BAT_07 = GameByte(0x158),
|
GB_Unused_BAT_08 = GameByte(0x158),
|
||||||
GB_Unused_BAT_08 = GameByte(0x159),
|
GB_Unused_BAT_09 = GameByte(0x159),
|
||||||
GB_KootFavor_State = GameByte(0x15A), ///< 0 = none, 1 = rejected, 2 = accepted
|
GB_KootFavor_State = GameByte(0x15A), ///< 0 = none, 1 = rejected, 2 = accepted
|
||||||
GB_KootFavor_Completed = GameByte(0x15B),
|
GB_KootFavor_Completed = GameByte(0x15B),
|
||||||
GB_KootFavor_Current = GameByte(0x15C), ///< 0 if none active
|
GB_KootFavor_Current = GameByte(0x15C), ///< 0 if none active
|
||||||
|
@ -46,6 +46,7 @@ ApiStatus ClearDefeatedEnemies(Evt* script, s32 isInitialCall);
|
|||||||
ApiStatus SetEnemyFlagBits(Evt* script, s32 isInitialCall);
|
ApiStatus SetEnemyFlagBits(Evt* script, s32 isInitialCall);
|
||||||
ApiStatus GetSelfAnimationFromTable(Evt* script, s32 isInitialCall);
|
ApiStatus GetSelfAnimationFromTable(Evt* script, s32 isInitialCall);
|
||||||
ApiStatus func_800457F8(Evt* script, s32 isInitialCall);
|
ApiStatus func_800457F8(Evt* script, s32 isInitialCall);
|
||||||
|
ApiStatus func_800457C4(Evt* script, s32 isInitialCall);
|
||||||
ApiStatus ShowCoinCounter(Evt* script, s32 isInitialCall);
|
ApiStatus ShowCoinCounter(Evt* script, s32 isInitialCall);
|
||||||
ApiStatus MakeEntity(Evt* script, s32 isInitialCall);
|
ApiStatus MakeEntity(Evt* script, s32 isInitialCall);
|
||||||
ApiStatus SetEntityCullMode(Evt* script, s32 isInitialCall);
|
ApiStatus SetEntityCullMode(Evt* script, s32 isInitialCall);
|
||||||
@ -154,6 +155,7 @@ ApiStatus EnablePartnerAI(Evt* script, s32 isInitialCall);
|
|||||||
ApiStatus BringPartnerOut(Evt* script, s32 isInitialCall);
|
ApiStatus BringPartnerOut(Evt* script, s32 isInitialCall);
|
||||||
ApiStatus PutPartnerAway(Evt* script, s32 isInitialCall);
|
ApiStatus PutPartnerAway(Evt* script, s32 isInitialCall);
|
||||||
ApiStatus GetCurrentPartnerID(Evt* script, s32 isInitialCall);
|
ApiStatus GetCurrentPartnerID(Evt* script, s32 isInitialCall);
|
||||||
|
ApiStatus PartnerCanUseAbility(Evt* script, s32 isInitialCall);
|
||||||
ApiStatus PartnerIsFlying(Evt* script, s32 isInitialCall);
|
ApiStatus PartnerIsFlying(Evt* script, s32 isInitialCall);
|
||||||
ApiStatus SetNpcDecoration(Evt* script, s32 isInitialCall);
|
ApiStatus SetNpcDecoration(Evt* script, s32 isInitialCall);
|
||||||
ApiStatus PlaySoundAtNpc(Evt* script, s32 isInitialCall);
|
ApiStatus PlaySoundAtNpc(Evt* script, s32 isInitialCall);
|
||||||
@ -231,6 +233,7 @@ ApiStatus ClampAngleFloat(Evt* script, s32 isInitialCall);
|
|||||||
ApiStatus FadeOutMusic(Evt* script, s32 isInitialCall);
|
ApiStatus FadeOutMusic(Evt* script, s32 isInitialCall);
|
||||||
ApiStatus SetMusicTrack(Evt* script, s32 isInitialCall);
|
ApiStatus SetMusicTrack(Evt* script, s32 isInitialCall);
|
||||||
ApiStatus FadeInMusic(Evt* script, s32 isInitialCall);
|
ApiStatus FadeInMusic(Evt* script, s32 isInitialCall);
|
||||||
|
ApiStatus EnableMusicProximityMix(Evt* script, s32 isInitialCall);
|
||||||
ApiStatus SetMusicTrackVolumes(Evt* script, s32 isInitialCall);
|
ApiStatus SetMusicTrackVolumes(Evt* script, s32 isInitialCall);
|
||||||
ApiStatus ClearAmbientSounds(Evt* script, s32 isInitialCall);
|
ApiStatus ClearAmbientSounds(Evt* script, s32 isInitialCall);
|
||||||
ApiStatus PlayAmbientSounds(Evt* script, s32 isInitialCall);
|
ApiStatus PlayAmbientSounds(Evt* script, s32 isInitialCall);
|
||||||
@ -319,6 +322,7 @@ ApiStatus PopSong(Evt* script, s32 isInitialCall);
|
|||||||
ApiStatus func_802D62E4(Evt* script, s32 isInitialCall);
|
ApiStatus func_802D62E4(Evt* script, s32 isInitialCall);
|
||||||
ApiStatus func_80044238(Evt* script, s32 isInitialCall);
|
ApiStatus func_80044238(Evt* script, s32 isInitialCall);
|
||||||
ApiStatus MakeLocalVertexCopy(Evt* script, s32 isInitialCall);
|
ApiStatus MakeLocalVertexCopy(Evt* script, s32 isInitialCall);
|
||||||
|
ApiStatus SetCustomGfx(Evt* script, s32 isInitialCall);
|
||||||
ApiStatus SetCustomGfxBuilders(Evt* script, s32 isInitialCall);
|
ApiStatus SetCustomGfxBuilders(Evt* script, s32 isInitialCall);
|
||||||
ApiStatus SetModelCustomGfx(Evt* script, s32 isInitialCall);
|
ApiStatus SetModelCustomGfx(Evt* script, s32 isInitialCall);
|
||||||
ApiStatus SetNpcPaletteSwapMode(Evt* script, s32 isInitialCall);
|
ApiStatus SetNpcPaletteSwapMode(Evt* script, s32 isInitialCall);
|
||||||
|
@ -122,12 +122,13 @@ extern s16 D_8009A6A4;
|
|||||||
extern s16 D_8009A6A6;
|
extern s16 D_8009A6A6;
|
||||||
|
|
||||||
extern s8 D_800A0920;
|
extern s8 D_800A0920;
|
||||||
extern s32 D_800A0924;
|
extern s32 SavedReverbMode;
|
||||||
extern s8 D_800A0921;
|
extern s8 D_800A0921;
|
||||||
extern s16 D_800A0922;
|
extern s16 D_800A0922;
|
||||||
extern char wMapTexName[];
|
extern char wMapTexName[];
|
||||||
extern char wMapHitName[];
|
extern char wMapHitName[];
|
||||||
extern char wMapShapeName[];
|
extern char wMapShapeName[];
|
||||||
|
extern char wMapBgName[];
|
||||||
extern struct ShapeFile* D_80210000; // shouldnt be a pointer
|
extern struct ShapeFile* D_80210000; // shouldnt be a pointer
|
||||||
extern u8 D_802D9D70; // player alpha1 copy?
|
extern u8 D_802D9D70; // player alpha1 copy?
|
||||||
extern u8 D_802D9D71; // player alpha2 copy?
|
extern u8 D_802D9D71; // player alpha2 copy?
|
||||||
|
12
src/16F740.c
12
src/16F740.c
@ -352,8 +352,8 @@ void btl_state_update_normal_start(void) {
|
|||||||
actor->unk_208 = 0;
|
actor->unk_208 = 0;
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
actor->unk_208 = currentEncounter->unk_10;
|
actor->unk_208 = currentEncounter->unk_10;
|
||||||
if (currentEncounter->dizzyAttackStatus == 4) {
|
if (currentEncounter->dizzyAttackStatus == STATUS_DIZZY) {
|
||||||
inflict_status_set_duration(actor, 4, 0x24, currentEncounter->dizzyAttackDuration);
|
inflict_status_set_duration(actor, STATUS_DIZZY, STATUS_DIZZY_TURN_MOD, currentEncounter->dizzyAttackDuration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -368,8 +368,8 @@ void btl_state_update_normal_start(void) {
|
|||||||
actor->unk_208 = 0;
|
actor->unk_208 = 0;
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
actor->unk_208 = 0;
|
actor->unk_208 = 0;
|
||||||
if (currentEncounter->dizzyAttackStatus == 4) {
|
if (currentEncounter->dizzyAttackStatus == STATUS_DIZZY) {
|
||||||
inflict_status_set_duration(actor, 4, 0x24, currentEncounter->dizzyAttackDuration);
|
inflict_status_set_duration(actor, STATUS_DIZZY, STATUS_DIZZY_TURN_MOD, currentEncounter->dizzyAttackDuration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -379,9 +379,9 @@ void btl_state_update_normal_start(void) {
|
|||||||
load_player_actor();
|
load_player_actor();
|
||||||
actor = battleStatus->playerActor;
|
actor = battleStatus->playerActor;
|
||||||
if (gBattleStatus.flags2 & 0x40) {
|
if (gBattleStatus.flags2 & 0x40) {
|
||||||
script = start_script(D_80284A30, 0xA, 0);
|
script = start_script(D_80284A30, EVT_PRIORITY_A, 0);
|
||||||
} else {
|
} else {
|
||||||
script = start_script(D_80284A20, 0xA, 0);
|
script = start_script(D_80284A20, EVT_PRIORITY_A, 0);
|
||||||
}
|
}
|
||||||
actor->takeTurnScript = script;
|
actor->takeTurnScript = script;
|
||||||
actor->takeTurnID = script->id;
|
actor->takeTurnID = script->id;
|
||||||
|
367
src/1A5830.c
367
src/1A5830.c
@ -1001,14 +1001,121 @@ ApiStatus BindNextTurn(Evt* script, s32 isInitialCall) {
|
|||||||
return ApiStatus_DONE2;
|
return ApiStatus_DONE2;
|
||||||
}
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(s32, "1A5830", JumpToGoal);
|
ApiStatus JumpToGoal(Evt* script, s32 isInitialCall) {
|
||||||
|
Bytecode* args = script->ptrReadPos;
|
||||||
|
Actor* actor;
|
||||||
|
ActorState* actorState;
|
||||||
|
s32 actorID;
|
||||||
|
f32 posX, posY, posZ;
|
||||||
|
f32 goalX, goalY, goalZ;
|
||||||
|
f32 moveDist;
|
||||||
|
|
||||||
|
if (isInitialCall) {
|
||||||
|
script->functionTemp[0] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (script->functionTemp[0] == 0) {
|
||||||
|
actorID = evt_get_variable(script, *args++);
|
||||||
|
if (actorID == ACTOR_SELF) {
|
||||||
|
actorID = script->owner1.enemyID;
|
||||||
|
}
|
||||||
|
script->functionTempPtr[1] = actor = get_actor(actorID);
|
||||||
|
actorState = &actor->state;
|
||||||
|
actor->state.moveTime = evt_get_variable(script, *args++);
|
||||||
|
script->functionTemp[2] = evt_get_variable(script, *args++);
|
||||||
|
script->functionTemp[3] = 0;
|
||||||
|
if (evt_get_variable(script, *args++) != 0) {
|
||||||
|
script->functionTemp[3] |= 1;
|
||||||
|
}
|
||||||
|
if (evt_get_variable(script, *args++) != 0) {
|
||||||
|
script->functionTemp[3] |= 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
actor->state.currentPos.x = actor->currentPos.x;
|
||||||
|
actor->state.currentPos.y = actor->currentPos.y;
|
||||||
|
actor->state.currentPos.z = actor->currentPos.z;
|
||||||
|
|
||||||
|
posX = actor->state.currentPos.x;
|
||||||
|
posY = actor->state.currentPos.y;
|
||||||
|
posZ = actor->state.currentPos.z;
|
||||||
|
goalX = actor->state.goalPos.x;
|
||||||
|
goalY = actor->state.goalPos.y;
|
||||||
|
goalZ = actor->state.goalPos.z;
|
||||||
|
actor->state.angle = atan2(posX, posZ, goalX, goalZ);
|
||||||
|
actor->state.distance = dist2D(posX, posZ, goalX, goalZ);
|
||||||
|
|
||||||
|
// make relative
|
||||||
|
posX = (goalX - posX);
|
||||||
|
posY = (goalY - posY);
|
||||||
|
posZ = (goalZ - posZ);
|
||||||
|
|
||||||
|
if (actor->state.moveTime == 0) {
|
||||||
|
actor->state.moveTime = actor->state.distance / actor->state.speed;
|
||||||
|
moveDist = actor->state.distance - (actor->state.moveTime * actor->state.speed);
|
||||||
|
} else {
|
||||||
|
actor->state.speed = actor->state.distance / actor->state.moveTime;
|
||||||
|
moveDist = actor->state.distance - (actor->state.moveTime * actor->state.speed);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (actorState->moveTime == 0) {
|
||||||
|
return ApiStatus_DONE2;
|
||||||
|
}
|
||||||
|
|
||||||
|
actorState->velocity = (actorState->acceleration * actorState->moveTime * 0.5f) + (posY / actorState->moveTime);
|
||||||
|
actorState->speed += (moveDist / actorState->moveTime);
|
||||||
|
|
||||||
|
if (script->functionTemp[2] != 0) {
|
||||||
|
set_animation(actor->actorID, (s8) actor->state.jumpPartIndex, actor->state.animJumpRise);
|
||||||
|
}
|
||||||
|
if (!(script->functionTemp[3] & 2) && (actor->actorTypeData1[4] != 0)) {
|
||||||
|
sfx_play_sound_at_position(actor->actorTypeData1[4], 0, actor->currentPos.x, actor->currentPos.y, actor->currentPos.z);
|
||||||
|
}
|
||||||
|
script->functionTemp[0] = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
actor = script->functionTempPtr[1];
|
||||||
|
actorState = &actor->state;
|
||||||
|
|
||||||
|
actor->state.currentPos.y += actor->state.velocity;
|
||||||
|
actor->state.velocity -= actor->state.acceleration;
|
||||||
|
|
||||||
|
if ((script->functionTemp[2] != 0) && (actor->state.velocity < 0.0f)) {
|
||||||
|
set_animation(actor->actorID, (s8) actor->state.jumpPartIndex, actor->state.animJumpFall);
|
||||||
|
}
|
||||||
|
if (actorState->velocity < 0.0f) {
|
||||||
|
if (actorState->currentPos.y < actorState->goalPos.y) {
|
||||||
|
actorState->currentPos.y = actorState->goalPos.y;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
add_xz_vec3f(&actorState->currentPos, actorState->speed, actorState->angle);
|
||||||
|
actor->currentPos.x = actorState->currentPos.x;
|
||||||
|
actor->currentPos.y = actorState->currentPos.y;
|
||||||
|
actor->currentPos.z = actorState->currentPos.z;
|
||||||
|
|
||||||
|
actorState->moveTime--;
|
||||||
|
if (actorState->moveTime > 0) {
|
||||||
|
return ApiStatus_BLOCK;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (script->functionTemp[3] & 1) {
|
||||||
|
play_movement_dust_effects(2, actorState->goalPos.x, actorState->goalPos.y, actorState->goalPos.z, actorState->angle);
|
||||||
|
}
|
||||||
|
actor->currentPos.x = actorState->goalPos.x;
|
||||||
|
actor->currentPos.y = actorState->goalPos.y;
|
||||||
|
actor->currentPos.z = actorState->goalPos.z;
|
||||||
|
if (script->functionTemp[2] != 0) {
|
||||||
|
set_animation(actor->actorID, (s8) actorState->jumpPartIndex, actorState->animJumpLand);
|
||||||
|
}
|
||||||
|
return ApiStatus_DONE1;
|
||||||
|
}
|
||||||
|
|
||||||
ApiStatus IdleJumpToGoal(Evt* script, s32 isInitialCall) {
|
ApiStatus IdleJumpToGoal(Evt* script, s32 isInitialCall) {
|
||||||
Bytecode* args = script->ptrReadPos;
|
Bytecode* args = script->ptrReadPos;
|
||||||
ActorMovement* fly;
|
ActorMovement* fly;
|
||||||
f32 x, y, z;
|
f32 posX, posY, posZ;
|
||||||
f32 goalX, goalY, goalZ;
|
f32 goalX, goalY, goalZ;
|
||||||
f32 var_f8;
|
f32 moveDist;
|
||||||
Actor* actor;
|
Actor* actor;
|
||||||
|
|
||||||
if (isInitialCall) {
|
if (isInitialCall) {
|
||||||
@ -1033,30 +1140,34 @@ ApiStatus IdleJumpToGoal(Evt* script, s32 isInitialCall) {
|
|||||||
fly->currentPos.y = actor->currentPos.y;
|
fly->currentPos.y = actor->currentPos.y;
|
||||||
fly->currentPos.z = actor->currentPos.z;
|
fly->currentPos.z = actor->currentPos.z;
|
||||||
|
|
||||||
x = fly->currentPos.x;
|
posX = fly->currentPos.x;
|
||||||
y = fly->currentPos.y;
|
posY = fly->currentPos.y;
|
||||||
z = fly->currentPos.z;
|
posZ = fly->currentPos.z;
|
||||||
goalX = fly->goalPos.x;
|
goalX = fly->goalPos.x;
|
||||||
goalY = fly->goalPos.y;
|
goalY = fly->goalPos.y;
|
||||||
goalZ = fly->goalPos.z;
|
goalZ = fly->goalPos.z;
|
||||||
fly->angle = atan2(x, z, goalX, goalZ);
|
fly->angle = atan2(posX, posZ, goalX, goalZ);
|
||||||
fly->distance = dist2D(x, z, goalX, goalZ);
|
fly->distance = dist2D(posX, posZ, goalX, goalZ);
|
||||||
y = goalY - y;
|
|
||||||
|
// make relative
|
||||||
|
posX = (goalX - posX);
|
||||||
|
posY = (goalY - posY);
|
||||||
|
posZ = (goalZ - posZ);
|
||||||
|
|
||||||
if (fly->flyTime == 0) {
|
if (fly->flyTime == 0) {
|
||||||
fly->flyTime = fly->distance / fly->speed;
|
fly->flyTime = fly->distance / fly->speed;
|
||||||
var_f8 = fly->distance - (fly->flyTime * fly->speed);
|
moveDist = fly->distance - (fly->flyTime * fly->speed);
|
||||||
} else {
|
} else {
|
||||||
fly->speed = fly->distance / fly->flyTime;
|
fly->speed = fly->distance / fly->flyTime;
|
||||||
var_f8 = fly->distance - (fly->flyTime * fly->speed);
|
moveDist = fly->distance - (fly->flyTime * fly->speed);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fly->flyTime == 0) {
|
if (fly->flyTime == 0) {
|
||||||
return ApiStatus_DONE2;
|
return ApiStatus_DONE2;
|
||||||
}
|
}
|
||||||
|
|
||||||
fly->velocity = ((fly->acceleration * fly->flyTime) * 0.5f) + (y / fly->flyTime);
|
fly->velocity = ((fly->acceleration * fly->flyTime) * 0.5f) + (posY / fly->flyTime);
|
||||||
fly->speed += var_f8 / fly->flyTime;
|
fly->speed += moveDist / fly->flyTime;
|
||||||
script->functionTemp[0] = TRUE;
|
script->functionTemp[0] = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1090,9 +1201,9 @@ ApiStatus IdleJumpToGoal(Evt* script, s32 isInitialCall) {
|
|||||||
ApiStatus JumpToGoalSimple2(Evt* script, s32 isInitialCall) {
|
ApiStatus JumpToGoalSimple2(Evt* script, s32 isInitialCall) {
|
||||||
Bytecode* args = script->ptrReadPos;
|
Bytecode* args = script->ptrReadPos;
|
||||||
ActorState* state;
|
ActorState* state;
|
||||||
f32 x, y, z;
|
f32 posX, posY, posZ;
|
||||||
f32 goalX, goalY, goalZ;
|
f32 goalX, goalY, goalZ;
|
||||||
f32 var_f8;
|
f32 moveDist;
|
||||||
Actor* actor;
|
Actor* actor;
|
||||||
|
|
||||||
if (isInitialCall) {
|
if (isInitialCall) {
|
||||||
@ -1114,30 +1225,34 @@ ApiStatus JumpToGoalSimple2(Evt* script, s32 isInitialCall) {
|
|||||||
state->currentPos.y = actor->currentPos.y;
|
state->currentPos.y = actor->currentPos.y;
|
||||||
state->currentPos.z = actor->currentPos.z;
|
state->currentPos.z = actor->currentPos.z;
|
||||||
|
|
||||||
x = state->currentPos.x;
|
posX = state->currentPos.x;
|
||||||
y = state->currentPos.y;
|
posY = state->currentPos.y;
|
||||||
z = state->currentPos.z;
|
posZ = state->currentPos.z;
|
||||||
goalX = state->goalPos.x;
|
goalX = state->goalPos.x;
|
||||||
goalY = state->goalPos.y;
|
goalY = state->goalPos.y;
|
||||||
goalZ = state->goalPos.z;
|
goalZ = state->goalPos.z;
|
||||||
state->angle = atan2(x, z, goalX, goalZ);
|
state->angle = atan2(posX, posZ, goalX, goalZ);
|
||||||
state->distance = dist2D(x, z, goalX, goalZ);
|
state->distance = dist2D(posX, posZ, goalX, goalZ);
|
||||||
y -= goalY;
|
|
||||||
|
// make relative (note: negated)
|
||||||
|
posX = (posX - goalX);
|
||||||
|
posY = (posY - goalY);
|
||||||
|
posZ = (posZ - goalZ);
|
||||||
|
|
||||||
if (state->moveTime == 0) {
|
if (state->moveTime == 0) {
|
||||||
state->moveTime = state->distance / state->speed;
|
state->moveTime = state->distance / state->speed;
|
||||||
var_f8 = state->distance - (state->moveTime * state->speed);
|
moveDist = state->distance - (state->moveTime * state->speed);
|
||||||
} else {
|
} else {
|
||||||
state->speed = state->distance / state->moveTime;
|
state->speed = state->distance / state->moveTime;
|
||||||
var_f8 = state->distance - (state->moveTime * state->speed);
|
moveDist = state->distance - (state->moveTime * state->speed);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state->moveTime == 0) {
|
if (state->moveTime == 0) {
|
||||||
return ApiStatus_DONE2;
|
return ApiStatus_DONE2;
|
||||||
}
|
}
|
||||||
|
|
||||||
state->velocity = ((state->acceleration * state->moveTime) * 0.5f) + (y / state->moveTime);
|
state->velocity = ((state->acceleration * state->moveTime) * 0.5f) + (posY / state->moveTime);
|
||||||
state->speed += var_f8 / state->moveTime;
|
state->speed += moveDist / state->moveTime;
|
||||||
if (actor->actorTypeData1[4] != 0) {
|
if (actor->actorTypeData1[4] != 0) {
|
||||||
sfx_play_sound_at_position(actor->actorTypeData1[4], 0, actor->currentPos.x, actor->currentPos.y, actor->currentPos.z);
|
sfx_play_sound_at_position(actor->actorTypeData1[4], 0, actor->currentPos.x, actor->currentPos.y, actor->currentPos.z);
|
||||||
}
|
}
|
||||||
@ -1176,10 +1291,10 @@ ApiStatus LandJump(Evt* script, s32 isInitialCall) {
|
|||||||
Actor* actor;
|
Actor* actor;
|
||||||
|
|
||||||
if (isInitialCall) {
|
if (isInitialCall) {
|
||||||
script->functionTemp[0] = 0;
|
script->functionTemp[0] = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (script->functionTemp[0] == 0) {
|
if (!script->functionTemp[0]) {
|
||||||
s32 actorID = evt_get_variable(script, *args++);
|
s32 actorID = evt_get_variable(script, *args++);
|
||||||
|
|
||||||
if (actorID == ACTOR_SELF) {
|
if (actorID == ACTOR_SELF) {
|
||||||
@ -1191,7 +1306,7 @@ ApiStatus LandJump(Evt* script, s32 isInitialCall) {
|
|||||||
actor->state.currentPos.x = actor->currentPos.x;
|
actor->state.currentPos.x = actor->currentPos.x;
|
||||||
actor->state.currentPos.y = actor->currentPos.y;
|
actor->state.currentPos.y = actor->currentPos.y;
|
||||||
actor->state.currentPos.z = actor->currentPos.z;
|
actor->state.currentPos.z = actor->currentPos.z;
|
||||||
script->functionTemp[0] = 1;
|
script->functionTemp[0] = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
actor = script->functionTempPtr[1];
|
actor = script->functionTempPtr[1];
|
||||||
@ -1216,7 +1331,7 @@ ApiStatus FallToGoal(Evt* script, s32 isInitialCall) {
|
|||||||
Bytecode* args = script->ptrReadPos;
|
Bytecode* args = script->ptrReadPos;
|
||||||
Actor* actor;
|
Actor* actor;
|
||||||
ActorState* state;
|
ActorState* state;
|
||||||
f32 x, y, z;
|
f32 posX, posY, posZ;
|
||||||
f32 goalX, goalY, goalZ;
|
f32 goalX, goalY, goalZ;
|
||||||
|
|
||||||
if (isInitialCall) {
|
if (isInitialCall) {
|
||||||
@ -1239,16 +1354,20 @@ ApiStatus FallToGoal(Evt* script, s32 isInitialCall) {
|
|||||||
actor->state.currentPos.y = actor->currentPos.y;
|
actor->state.currentPos.y = actor->currentPos.y;
|
||||||
actor->state.currentPos.z = actor->currentPos.z;
|
actor->state.currentPos.z = actor->currentPos.z;
|
||||||
|
|
||||||
x = actor->state.currentPos.x;
|
posX = actor->state.currentPos.x;
|
||||||
y = actor->state.currentPos.y;
|
posY = actor->state.currentPos.y;
|
||||||
z = actor->state.currentPos.z;
|
posZ = actor->state.currentPos.z;
|
||||||
goalX = actor->state.goalPos.x;
|
goalX = actor->state.goalPos.x;
|
||||||
goalY = actor->state.goalPos.y;
|
goalY = actor->state.goalPos.y;
|
||||||
goalZ = actor->state.goalPos.z;
|
goalZ = actor->state.goalPos.z;
|
||||||
|
|
||||||
actor->state.angle = atan2(x, z, goalX, goalZ);
|
actor->state.angle = atan2(posX, posZ, goalX, goalZ);
|
||||||
actor->state.distance = dist2D(x, z, goalX, goalZ);
|
actor->state.distance = dist2D(posX, posZ, goalX, goalZ);
|
||||||
y = goalY - y;
|
|
||||||
|
// make relative
|
||||||
|
posX = (goalX - posX);
|
||||||
|
posY = (goalY - posY);
|
||||||
|
posZ = (goalZ - posZ);
|
||||||
|
|
||||||
if (actor->state.moveTime == 0) {
|
if (actor->state.moveTime == 0) {
|
||||||
actor->state.moveTime = actor->state.distance / actor->state.speed;
|
actor->state.moveTime = actor->state.distance / actor->state.speed;
|
||||||
@ -1257,7 +1376,7 @@ ApiStatus FallToGoal(Evt* script, s32 isInitialCall) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
state->velocity = 0.0f;
|
state->velocity = 0.0f;
|
||||||
state->acceleration = (y / state->moveTime - state->velocity) / (-state->moveTime * 0.5);
|
state->acceleration = (posY / state->moveTime - state->velocity) / (-state->moveTime * 0.5);
|
||||||
|
|
||||||
if (actor->actorTypeData1[4] != 0) {
|
if (actor->actorTypeData1[4] != 0) {
|
||||||
sfx_play_sound_at_position(actor->actorTypeData1[4], 0, actor->currentPos.x, actor->currentPos.y, actor->currentPos.z);
|
sfx_play_sound_at_position(actor->actorTypeData1[4], 0, actor->currentPos.x, actor->currentPos.y, actor->currentPos.z);
|
||||||
@ -1376,8 +1495,8 @@ s32 JumpPartTo(Evt* script, s32 isInitialCall) {
|
|||||||
ActorPart* part;
|
ActorPart* part;
|
||||||
ActorPartMovement* movement;
|
ActorPartMovement* movement;
|
||||||
s32 actorID, partIndex;
|
s32 actorID, partIndex;
|
||||||
f32 x, y, z;
|
f32 posX, posY, posZ;
|
||||||
f32 x1, y1, z1;
|
f32 goalX, goalY, goalZ;
|
||||||
f32 deltaDist;
|
f32 deltaDist;
|
||||||
|
|
||||||
if (isInitialCall) {
|
if (isInitialCall) {
|
||||||
@ -1397,31 +1516,34 @@ s32 JumpPartTo(Evt* script, s32 isInitialCall) {
|
|||||||
script->functionTempPtr[2] = part;
|
script->functionTempPtr[2] = part;
|
||||||
movement = part->movement;
|
movement = part->movement;
|
||||||
|
|
||||||
x = evt_get_variable(script, *args++);
|
posX = evt_get_variable(script, *args++);
|
||||||
y = evt_get_variable(script, *args++);
|
posY = evt_get_variable(script, *args++);
|
||||||
z = evt_get_variable(script, *args++);
|
posZ = evt_get_variable(script, *args++);
|
||||||
movement->goalPos.x = x;
|
movement->goalPos.x = posX;
|
||||||
movement->goalPos.y = y;
|
movement->goalPos.y = posY;
|
||||||
movement->goalPos.z = z;
|
movement->goalPos.z = posZ;
|
||||||
movement->moveTime = evt_get_variable(script, *args++);
|
movement->moveTime = evt_get_variable(script, *args++);
|
||||||
script->functionTemp[3] = evt_get_variable(script, *args++);
|
script->functionTemp[3] = evt_get_variable(script, *args++);
|
||||||
|
|
||||||
x1 = movement->goalPos.x;
|
goalX = movement->goalPos.x;
|
||||||
y1 = movement->goalPos.y;
|
goalY = movement->goalPos.y;
|
||||||
z1 = movement->goalPos.z;
|
goalZ = movement->goalPos.z;
|
||||||
|
|
||||||
movement->unk_00.x = part->absolutePosition.x;
|
movement->absolutePosition.x = part->absolutePosition.x;
|
||||||
movement->unk_00.y = part->absolutePosition.y;
|
movement->absolutePosition.y = part->absolutePosition.y;
|
||||||
movement->unk_00.z = part->absolutePosition.z;
|
movement->absolutePosition.z = part->absolutePosition.z;
|
||||||
|
|
||||||
x = movement->unk_00.x;
|
posX = movement->absolutePosition.x;
|
||||||
y = movement->unk_00.y;
|
posY = movement->absolutePosition.y;
|
||||||
z = movement->unk_00.z;
|
posZ = movement->absolutePosition.z;
|
||||||
|
|
||||||
movement->angle = atan2(x, z, x1, z1);
|
movement->angle = atan2(posX, posZ, goalX, goalZ);
|
||||||
movement->distance = dist2D(x, z, x1, z1);
|
movement->distance = dist2D(posX, posZ, goalX, goalZ);
|
||||||
|
|
||||||
y = y1 - y;
|
// make relative
|
||||||
|
posX = (goalX - posX);
|
||||||
|
posY = (goalY - posY);
|
||||||
|
posZ = (goalZ - posZ);
|
||||||
|
|
||||||
if (movement->moveTime == 0) {
|
if (movement->moveTime == 0) {
|
||||||
movement->moveTime = movement->distance / movement->moveSpeed;
|
movement->moveTime = movement->distance / movement->moveSpeed;
|
||||||
@ -1431,7 +1553,7 @@ s32 JumpPartTo(Evt* script, s32 isInitialCall) {
|
|||||||
deltaDist = movement->distance - movement->moveTime * movement->moveSpeed;
|
deltaDist = movement->distance - movement->moveTime * movement->moveSpeed;
|
||||||
}
|
}
|
||||||
movement->moveSpeed += deltaDist / movement->moveTime;
|
movement->moveSpeed += deltaDist / movement->moveTime;
|
||||||
movement->unk_2C = movement->jumpScale * movement->moveTime * 0.5f + y / movement->moveTime;
|
movement->unk_2C = movement->jumpScale * movement->moveTime * 0.5f + posY / movement->moveTime;
|
||||||
if (part->partTypeData[4] != 0) {
|
if (part->partTypeData[4] != 0) {
|
||||||
sfx_play_sound_at_position(part->partTypeData[4], 0, part->absolutePosition.x, part->absolutePosition.y, part->absolutePosition.z);
|
sfx_play_sound_at_position(part->partTypeData[4], 0, part->absolutePosition.x, part->absolutePosition.y, part->absolutePosition.z);
|
||||||
}
|
}
|
||||||
@ -1440,12 +1562,12 @@ s32 JumpPartTo(Evt* script, s32 isInitialCall) {
|
|||||||
|
|
||||||
part = script->functionTempPtr[2];
|
part = script->functionTempPtr[2];
|
||||||
movement = part->movement;
|
movement = part->movement;
|
||||||
movement->unk_00.y += movement->unk_2C;
|
movement->absolutePosition.y += movement->unk_2C;
|
||||||
movement->unk_2C -= movement->jumpScale;
|
movement->unk_2C -= movement->jumpScale;
|
||||||
add_xz_vec3f_copy1(&movement->unk_00, movement->moveSpeed, movement->angle);
|
add_xz_vec3f_copy1(&movement->absolutePosition, movement->moveSpeed, movement->angle);
|
||||||
part->absolutePosition.x = movement->unk_00.x;
|
part->absolutePosition.x = movement->absolutePosition.x;
|
||||||
part->absolutePosition.y = movement->unk_00.y;
|
part->absolutePosition.y = movement->absolutePosition.y;
|
||||||
part->absolutePosition.z = movement->unk_00.z;
|
part->absolutePosition.z = movement->absolutePosition.z;
|
||||||
movement->moveTime--;
|
movement->moveTime--;
|
||||||
|
|
||||||
if (movement->moveTime <= 0) {
|
if (movement->moveTime <= 0) {
|
||||||
@ -1467,8 +1589,8 @@ s32 FallPartTo(Evt* script, s32 isInitialCall) {
|
|||||||
ActorPart* part;
|
ActorPart* part;
|
||||||
ActorPartMovement* movement;
|
ActorPartMovement* movement;
|
||||||
s32 actorID, partIndex;
|
s32 actorID, partIndex;
|
||||||
f32 x, y, z;
|
f32 posX, posY, posZ;
|
||||||
f32 x1, y1, z1;
|
f32 goalX, goalY, goalZ;
|
||||||
|
|
||||||
if (isInitialCall) {
|
if (isInitialCall) {
|
||||||
script->functionTemp[0] = 0;
|
script->functionTemp[0] = 0;
|
||||||
@ -1487,30 +1609,33 @@ s32 FallPartTo(Evt* script, s32 isInitialCall) {
|
|||||||
script->functionTempPtr[2] = part;
|
script->functionTempPtr[2] = part;
|
||||||
movement = part->movement;
|
movement = part->movement;
|
||||||
|
|
||||||
x = evt_get_variable(script, *args++);
|
posX = evt_get_variable(script, *args++);
|
||||||
y = evt_get_variable(script, *args++);
|
posY = evt_get_variable(script, *args++);
|
||||||
z = evt_get_variable(script, *args++);
|
posZ = evt_get_variable(script, *args++);
|
||||||
movement->goalPos.x = x;
|
movement->goalPos.x = posX;
|
||||||
movement->goalPos.y = y;
|
movement->goalPos.y = posY;
|
||||||
movement->goalPos.z = z;
|
movement->goalPos.z = posZ;
|
||||||
movement->moveTime = evt_get_variable(script, *args++);
|
movement->moveTime = evt_get_variable(script, *args++);
|
||||||
|
|
||||||
x1 = movement->goalPos.x;
|
goalX = movement->goalPos.x;
|
||||||
y1 = movement->goalPos.y;
|
goalY = movement->goalPos.y;
|
||||||
z1 = movement->goalPos.z;
|
goalZ = movement->goalPos.z;
|
||||||
|
|
||||||
movement->unk_00.x = part->absolutePosition.x;
|
movement->absolutePosition.x = part->absolutePosition.x;
|
||||||
movement->unk_00.y = part->absolutePosition.y;
|
movement->absolutePosition.y = part->absolutePosition.y;
|
||||||
movement->unk_00.z = part->absolutePosition.z;
|
movement->absolutePosition.z = part->absolutePosition.z;
|
||||||
|
|
||||||
x = movement->unk_00.x;
|
posX = movement->absolutePosition.x;
|
||||||
y = movement->unk_00.y;
|
posY = movement->absolutePosition.y;
|
||||||
z = movement->unk_00.z;
|
posZ = movement->absolutePosition.z;
|
||||||
|
|
||||||
movement->angle = atan2(x, z, x1, z1);
|
movement->angle = atan2(posX, posZ, goalX, goalZ);
|
||||||
movement->distance = dist2D(x, z, x1, z1);
|
movement->distance = dist2D(posX, posZ, goalX, goalZ);
|
||||||
|
|
||||||
y = y1 - y;
|
// make relative
|
||||||
|
posX = (goalX - posX);
|
||||||
|
posY = (goalY - posY);
|
||||||
|
posZ = (goalZ - posZ);
|
||||||
|
|
||||||
if (movement->moveTime == 0) {
|
if (movement->moveTime == 0) {
|
||||||
movement->moveTime = movement->distance / movement->moveSpeed;
|
movement->moveTime = movement->distance / movement->moveSpeed;
|
||||||
@ -1519,7 +1644,7 @@ s32 FallPartTo(Evt* script, s32 isInitialCall) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
movement->unk_2C = 0.0f;
|
movement->unk_2C = 0.0f;
|
||||||
movement->jumpScale = (y / movement->moveTime - movement->unk_2C) / (-movement->moveTime * 0.5);
|
movement->jumpScale = (posY / movement->moveTime - movement->unk_2C) / (-movement->moveTime * 0.5);
|
||||||
if (part->partTypeData[4] != 0) {
|
if (part->partTypeData[4] != 0) {
|
||||||
sfx_play_sound_at_position(part->partTypeData[4], 0, part->absolutePosition.x, part->absolutePosition.y, part->absolutePosition.z);
|
sfx_play_sound_at_position(part->partTypeData[4], 0, part->absolutePosition.x, part->absolutePosition.y, part->absolutePosition.z);
|
||||||
}
|
}
|
||||||
@ -1528,12 +1653,12 @@ s32 FallPartTo(Evt* script, s32 isInitialCall) {
|
|||||||
|
|
||||||
part = script->functionTempPtr[2];
|
part = script->functionTempPtr[2];
|
||||||
movement = part->movement;
|
movement = part->movement;
|
||||||
movement->unk_00.y += movement->unk_2C;
|
movement->absolutePosition.y += movement->unk_2C;
|
||||||
movement->unk_2C -= movement->jumpScale;
|
movement->unk_2C -= movement->jumpScale;
|
||||||
add_xz_vec3f_copy1(&movement->unk_00, movement->moveSpeed, movement->angle);
|
add_xz_vec3f_copy1(&movement->absolutePosition, movement->moveSpeed, movement->angle);
|
||||||
part->absolutePosition.x = movement->unk_00.x;
|
part->absolutePosition.x = movement->absolutePosition.x;
|
||||||
part->absolutePosition.y = movement->unk_00.y;
|
part->absolutePosition.y = movement->absolutePosition.y;
|
||||||
part->absolutePosition.z = movement->unk_00.z;
|
part->absolutePosition.z = movement->absolutePosition.z;
|
||||||
movement->moveTime--;
|
movement->moveTime--;
|
||||||
|
|
||||||
if (movement->moveTime <= 0) {
|
if (movement->moveTime <= 0) {
|
||||||
@ -1570,20 +1695,20 @@ s32 LandJumpPart(Evt* script, s32 isInitialCall) {
|
|||||||
script->functionTempPtr[1] = actor;
|
script->functionTempPtr[1] = actor;
|
||||||
script->functionTempPtr[2] = part;
|
script->functionTempPtr[2] = part;
|
||||||
movement = part->movement;
|
movement = part->movement;
|
||||||
movement->unk_00.x = part->absolutePosition.x;
|
movement->absolutePosition.x = part->absolutePosition.x;
|
||||||
movement->unk_00.y = part->absolutePosition.y;
|
movement->absolutePosition.y = part->absolutePosition.y;
|
||||||
movement->unk_00.z = part->absolutePosition.z;
|
movement->absolutePosition.z = part->absolutePosition.z;
|
||||||
script->functionTemp[0] = 1;
|
script->functionTemp[0] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
part = script->functionTempPtr[2];
|
part = script->functionTempPtr[2];
|
||||||
movement = part->movement;
|
movement = part->movement;
|
||||||
movement->unk_00.y += movement->unk_2C;
|
movement->absolutePosition.y += movement->unk_2C;
|
||||||
movement->unk_2C -= movement->jumpScale;
|
movement->unk_2C -= movement->jumpScale;
|
||||||
add_xz_vec3f_copy1(&movement->unk_00, movement->moveSpeed, movement->angle);
|
add_xz_vec3f_copy1(&movement->absolutePosition, movement->moveSpeed, movement->angle);
|
||||||
part->absolutePosition.x = movement->unk_00.x;
|
part->absolutePosition.x = movement->absolutePosition.x;
|
||||||
part->absolutePosition.y = movement->unk_00.y;
|
part->absolutePosition.y = movement->absolutePosition.y;
|
||||||
part->absolutePosition.z = movement->unk_00.z;
|
part->absolutePosition.z = movement->absolutePosition.z;
|
||||||
|
|
||||||
if (part->absolutePosition.y < 0.0f) {
|
if (part->absolutePosition.y < 0.0f) {
|
||||||
part->absolutePosition.y = 0.0f;
|
part->absolutePosition.y = 0.0f;
|
||||||
@ -1600,8 +1725,8 @@ s32 RunPartTo(Evt* script, s32 isInitialCall) {
|
|||||||
ActorPart* part;
|
ActorPart* part;
|
||||||
ActorPartMovement* movement;
|
ActorPartMovement* movement;
|
||||||
s32 actorID, partIndex;
|
s32 actorID, partIndex;
|
||||||
f32 x, y, z;
|
f32 posX, posY, posZ;
|
||||||
f32 x1, y1, z1;
|
f32 goalX, goalY, goalZ;
|
||||||
f32 deltaDist;
|
f32 deltaDist;
|
||||||
|
|
||||||
if (isInitialCall) {
|
if (isInitialCall) {
|
||||||
@ -1621,28 +1746,28 @@ s32 RunPartTo(Evt* script, s32 isInitialCall) {
|
|||||||
script->functionTempPtr[2] = part;
|
script->functionTempPtr[2] = part;
|
||||||
movement = part->movement;
|
movement = part->movement;
|
||||||
|
|
||||||
x = evt_get_variable(script, *args++);
|
posX = evt_get_variable(script, *args++);
|
||||||
y = evt_get_variable(script, *args++);
|
posY = evt_get_variable(script, *args++);
|
||||||
z = evt_get_variable(script, *args++);
|
posZ = evt_get_variable(script, *args++);
|
||||||
movement->goalPos.x = x;
|
movement->goalPos.x = posX;
|
||||||
movement->goalPos.y = y;
|
movement->goalPos.y = posY;
|
||||||
movement->goalPos.z = z;
|
movement->goalPos.z = posZ;
|
||||||
movement->moveTime = evt_get_variable(script, *args++);
|
movement->moveTime = evt_get_variable(script, *args++);
|
||||||
|
|
||||||
x1 = movement->goalPos.x;
|
goalX = movement->goalPos.x;
|
||||||
y1 = movement->goalPos.y;
|
goalY = movement->goalPos.y;
|
||||||
z1 = movement->goalPos.z;
|
goalZ = movement->goalPos.z;
|
||||||
|
|
||||||
movement->unk_00.x = part->absolutePosition.x;
|
movement->absolutePosition.x = part->absolutePosition.x;
|
||||||
movement->unk_00.y = part->absolutePosition.y;
|
movement->absolutePosition.y = part->absolutePosition.y;
|
||||||
movement->unk_00.z = part->absolutePosition.z;
|
movement->absolutePosition.z = part->absolutePosition.z;
|
||||||
|
|
||||||
x = movement->unk_00.x;
|
posX = movement->absolutePosition.x;
|
||||||
y = movement->unk_00.y;
|
posY = movement->absolutePosition.y;
|
||||||
z = movement->unk_00.z;
|
posZ = movement->absolutePosition.z;
|
||||||
|
|
||||||
movement->angle = atan2(x, z, x1, z1);
|
movement->angle = atan2(posX, posZ, goalX, goalZ);
|
||||||
movement->distance = dist2D(x, z, x1, z1);
|
movement->distance = dist2D(posX, posZ, goalX, goalZ);
|
||||||
|
|
||||||
if (movement->moveTime == 0) {
|
if (movement->moveTime == 0) {
|
||||||
movement->moveTime = movement->distance / movement->moveSpeed;
|
movement->moveTime = movement->distance / movement->moveSpeed;
|
||||||
@ -1664,15 +1789,15 @@ s32 RunPartTo(Evt* script, s32 isInitialCall) {
|
|||||||
movement = part->movement;
|
movement = part->movement;
|
||||||
actor = script->functionTempPtr[1];
|
actor = script->functionTempPtr[1];
|
||||||
|
|
||||||
add_xz_vec3f_copy1(&movement->unk_00, movement->moveSpeed, movement->angle);
|
add_xz_vec3f_copy1(&movement->absolutePosition, movement->moveSpeed, movement->angle);
|
||||||
if (movement->moveSpeed < 4.0f) {
|
if (movement->moveSpeed < 4.0f) {
|
||||||
play_movement_dust_effects(0, movement->unk_00.x, movement->unk_00.y, movement->unk_00.z, movement->angle);
|
play_movement_dust_effects(0, movement->absolutePosition.x, movement->absolutePosition.y, movement->absolutePosition.z, movement->angle);
|
||||||
} else {
|
} else {
|
||||||
play_movement_dust_effects(1, movement->unk_00.x, movement->unk_00.y, movement->unk_00.z, movement->angle);
|
play_movement_dust_effects(1, movement->absolutePosition.x, movement->absolutePosition.y, movement->absolutePosition.z, movement->angle);
|
||||||
}
|
}
|
||||||
part->absolutePosition.x = movement->unk_00.x;
|
part->absolutePosition.x = movement->absolutePosition.x;
|
||||||
part->absolutePosition.y = movement->unk_00.y;
|
part->absolutePosition.y = movement->absolutePosition.y;
|
||||||
part->absolutePosition.z = movement->unk_00.z;
|
part->absolutePosition.z = movement->absolutePosition.z;
|
||||||
|
|
||||||
if (part->partTypeData[0] != 0 && part->partTypeData[1] != 0) {
|
if (part->partTypeData[0] != 0 && part->partTypeData[1] != 0) {
|
||||||
if (part->actorTypeData2b[0] >= 0) {
|
if (part->actorTypeData2b[0] >= 0) {
|
||||||
|
@ -817,7 +817,7 @@ s32 get_overriding_player_anim(s32 anim) {
|
|||||||
if (!func_800DFCF4()) {
|
if (!func_800DFCF4()) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
} else if (!(playerStatus->animFlags & PA_FLAGS_IN_DISGUISE)) {
|
} else if (!(playerStatus->animFlags & PA_FLAGS_INVISIBLE)) {
|
||||||
anim = ANIM_Peach_C0010;
|
anim = ANIM_Peach_C0010;
|
||||||
} else {
|
} else {
|
||||||
peach_set_disguise_anim(BasicPeachDisguiseAnims[playerStatus->peachDisguise].hold);
|
peach_set_disguise_anim(BasicPeachDisguiseAnims[playerStatus->peachDisguise].hold);
|
||||||
@ -1480,7 +1480,7 @@ void render_player_model(void) {
|
|||||||
playerStatus->alpha2 = 0;
|
playerStatus->alpha2 = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(playerStatus->animFlags & PA_FLAGS_IN_DISGUISE)) {
|
if (!(playerStatus->animFlags & PA_FLAGS_INVISIBLE)) {
|
||||||
rtPtr->appendGfxArg = playerStatus;
|
rtPtr->appendGfxArg = playerStatus;
|
||||||
rtPtr->distance = -z;
|
rtPtr->distance = -z;
|
||||||
rtPtr->renderMode = playerStatus->renderMode;
|
rtPtr->renderMode = playerStatus->renderMode;
|
||||||
|
@ -310,7 +310,7 @@ void phys_peach_update(void) {
|
|||||||
} while (playerStatus->flags & PS_FLAGS_ACTION_STATE_CHANGED);
|
} while (playerStatus->flags & PS_FLAGS_ACTION_STATE_CHANGED);
|
||||||
|
|
||||||
peach_check_for_parasol_input();
|
peach_check_for_parasol_input();
|
||||||
if (playerStatus->animFlags & PA_FLAGS_IN_DISGUISE) {
|
if (playerStatus->animFlags & PA_FLAGS_INVISIBLE) {
|
||||||
peach_sync_disguise_npc();
|
peach_sync_disguise_npc();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -555,7 +555,7 @@ void peach_force_disguise_action(s32 useParasol) {
|
|||||||
if (useParasol) {
|
if (useParasol) {
|
||||||
set_action_state(ACTION_STATE_USE_SNEAKY_PARASOL);
|
set_action_state(ACTION_STATE_USE_SNEAKY_PARASOL);
|
||||||
} else {
|
} else {
|
||||||
playerStatus->animFlags &= ~PA_FLAGS_IN_DISGUISE;
|
playerStatus->animFlags &= ~PA_FLAGS_INVISIBLE;
|
||||||
gGameStatusPtr->peachFlags &= ~PEACH_STATUS_FLAG_DISGUISED;
|
gGameStatusPtr->peachFlags &= ~PEACH_STATUS_FLAG_DISGUISED;
|
||||||
playerStatus->peachDisguise = 0;
|
playerStatus->peachDisguise = 0;
|
||||||
free_npc_by_index(PeachDisguiseNpcIndex);
|
free_npc_by_index(PeachDisguiseNpcIndex);
|
||||||
@ -575,7 +575,7 @@ void peach_check_for_parasol_input(void) {
|
|||||||
D_8010C92C--;
|
D_8010C92C--;
|
||||||
if (D_8010C92C == 0) {
|
if (D_8010C92C == 0) {
|
||||||
if (gGameStatusPtr->peachFlags & PEACH_STATUS_FLAG_DISGUISED) {
|
if (gGameStatusPtr->peachFlags & PEACH_STATUS_FLAG_DISGUISED) {
|
||||||
playerStatus->animFlags |= PA_FLAGS_IN_DISGUISE;
|
playerStatus->animFlags |= PA_FLAGS_INVISIBLE;
|
||||||
gGameStatusPtr->peachFlags |= PEACH_STATUS_FLAG_DISGUISED;
|
gGameStatusPtr->peachFlags |= PEACH_STATUS_FLAG_DISGUISED;
|
||||||
|
|
||||||
disguiseNpc = peach_make_disguise_npc(gGameStatusPtr->peachDisguise);
|
disguiseNpc = peach_make_disguise_npc(gGameStatusPtr->peachDisguise);
|
||||||
|
@ -313,7 +313,7 @@ void initialize_status_menu(void) {
|
|||||||
uiStatus->hidden = 0;
|
uiStatus->hidden = 0;
|
||||||
uiStatus->showTimer = 210;
|
uiStatus->showTimer = 210;
|
||||||
uiStatus->unk_3B[0] = 0;
|
uiStatus->unk_3B[0] = 0;
|
||||||
uiStatus->ignoreChanges = 0;
|
uiStatus->ignoreChanges = FALSE;
|
||||||
uiStatus->unk_45[0] = 0;
|
uiStatus->unk_45[0] = 0;
|
||||||
uiStatus->unk_45[1] = 0;
|
uiStatus->unk_45[1] = 0;
|
||||||
uiStatus->hpBlinking = 0;
|
uiStatus->hpBlinking = 0;
|
||||||
@ -618,7 +618,7 @@ void show_coin_counter(void) {
|
|||||||
uiStatus->unk_6C[2] = uiStatus->ignoreChanges;
|
uiStatus->unk_6C[2] = uiStatus->ignoreChanges;
|
||||||
}
|
}
|
||||||
|
|
||||||
uiStatus->ignoreChanges = 1;
|
uiStatus->ignoreChanges = TRUE;
|
||||||
D_8010CD10 = 1;
|
D_8010CD10 = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -688,7 +688,7 @@ void func_800E97E4(void) {
|
|||||||
UiStatus* uiStatus = &gUIStatus;
|
UiStatus* uiStatus = &gUIStatus;
|
||||||
|
|
||||||
uiStatus->drawPosY = -100;
|
uiStatus->drawPosY = -100;
|
||||||
uiStatus->ignoreChanges = 0;
|
uiStatus->ignoreChanges = FALSE;
|
||||||
uiStatus->showTimer = 0;
|
uiStatus->showTimer = 0;
|
||||||
uiStatus->hidden = 1;
|
uiStatus->hidden = 1;
|
||||||
uiStatus->unk_3B[0] = 0;
|
uiStatus->unk_3B[0] = 0;
|
||||||
@ -700,7 +700,7 @@ void func_800E9810(void) {
|
|||||||
|
|
||||||
uiStatus->showTimer = 210;
|
uiStatus->showTimer = 210;
|
||||||
uiStatus->drawPosY = 0;
|
uiStatus->drawPosY = 0;
|
||||||
uiStatus->ignoreChanges = 0;
|
uiStatus->ignoreChanges = FALSE;
|
||||||
uiStatus->hidden = 0;
|
uiStatus->hidden = 0;
|
||||||
uiStatus->unk_3B[0] = 1;
|
uiStatus->unk_3B[0] = 1;
|
||||||
uiStatus->unk_3B[1] = 0;
|
uiStatus->unk_3B[1] = 0;
|
||||||
@ -728,19 +728,19 @@ s32 func_800E9860(void) {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_800E9894(void) {
|
void status_menu_ignore_changes(void) {
|
||||||
gUIStatus.ignoreChanges = 1;
|
gUIStatus.ignoreChanges = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_800E98A8(void) {
|
void func_800E98A8(void) {
|
||||||
UiStatus* uiStatus = &gUIStatus;
|
UiStatus* uiStatus = &gUIStatus;
|
||||||
|
|
||||||
uiStatus->ignoreChanges = 1;
|
uiStatus->ignoreChanges = TRUE;
|
||||||
uiStatus->drawPosY = 18;
|
uiStatus->drawPosY = 18;
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_800E98C4(void) {
|
void status_menu_respond_to_changes(void) {
|
||||||
gUIStatus.ignoreChanges = 0;
|
gUIStatus.ignoreChanges = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 func_800E98D4(void) {
|
s32 func_800E98D4(void) {
|
||||||
@ -912,7 +912,7 @@ void reset_status_menu(void) {
|
|||||||
uiStatus->hidden = 0;
|
uiStatus->hidden = 0;
|
||||||
uiStatus->showTimer = 210;
|
uiStatus->showTimer = 210;
|
||||||
uiStatus->unk_3B[0] = 0;
|
uiStatus->unk_3B[0] = 0;
|
||||||
uiStatus->ignoreChanges = 0;
|
uiStatus->ignoreChanges = FALSE;
|
||||||
uiStatus->unk_45[0] = 0;
|
uiStatus->unk_45[0] = 0;
|
||||||
uiStatus->unk_45[1] = 0;
|
uiStatus->unk_45[1] = 0;
|
||||||
uiStatus->hpBlinking = 0;
|
uiStatus->hpBlinking = 0;
|
||||||
@ -1247,8 +1247,8 @@ s32 add_star_pieces(s32 amt) {
|
|||||||
s32 newSP = playerData->starPieces;
|
s32 newSP = playerData->starPieces;
|
||||||
|
|
||||||
newSP += amt;
|
newSP += amt;
|
||||||
if (newSP > 222) {
|
if (newSP > MAX_STAR_PIECES) {
|
||||||
newSP = 222;
|
newSP = MAX_STAR_PIECES;
|
||||||
}
|
}
|
||||||
if (newSP < 0) {
|
if (newSP < 0) {
|
||||||
newSP = 0;
|
newSP = 0;
|
||||||
@ -1304,7 +1304,7 @@ s32 recover_fp(s32 amt) {
|
|||||||
s32 ret;
|
s32 ret;
|
||||||
|
|
||||||
if (amt == -2) {
|
if (amt == -2) {
|
||||||
playerData->curMaxFP += 1;
|
playerData->curMaxFP++;
|
||||||
playerData->curFP = playerData->curMaxFP;
|
playerData->curFP = playerData->curMaxFP;
|
||||||
return playerData->curMaxFP;
|
return playerData->curMaxFP;
|
||||||
}
|
}
|
||||||
@ -1326,7 +1326,7 @@ s32 recover_hp(s32 amt) {
|
|||||||
s32 ret;
|
s32 ret;
|
||||||
|
|
||||||
if (amt == -2) {
|
if (amt == -2) {
|
||||||
playerData->curMaxHP += 1;
|
playerData->curMaxHP++;
|
||||||
playerData->curHP = playerData->curMaxHP;
|
playerData->curHP = playerData->curMaxHP;
|
||||||
return playerData->curMaxHP;
|
return playerData->curMaxHP;
|
||||||
}
|
}
|
||||||
|
@ -185,7 +185,7 @@ void destroy_popup_menu(void) {
|
|||||||
gPopupMenu->popupType == POPUP_TYPE_USE_KEY
|
gPopupMenu->popupType == POPUP_TYPE_USE_KEY
|
||||||
) && !gGameStatusPtr->isBattle) {
|
) && !gGameStatusPtr->isBattle) {
|
||||||
if (D_8010D69A == 0) {
|
if (D_8010D69A == 0) {
|
||||||
func_800E98C4();
|
status_menu_respond_to_changes();
|
||||||
}
|
}
|
||||||
close_status_menu();
|
close_status_menu();
|
||||||
}
|
}
|
||||||
@ -1213,7 +1213,7 @@ void create_popup_menu(PopupMenu* popup) {
|
|||||||
s32 numEntries;
|
s32 numEntries;
|
||||||
|
|
||||||
D_8010D69A = func_800E98D4();
|
D_8010D69A = func_800E98D4();
|
||||||
func_800E9894();
|
status_menu_ignore_changes();
|
||||||
open_status_menu_short();
|
open_status_menu_short();
|
||||||
gPopupMenu = popup;
|
gPopupMenu = popup;
|
||||||
popup->result = 0;
|
popup->result = 0;
|
||||||
|
@ -52,7 +52,7 @@ s32 bgm_get_map_default_variation(s32 songID) {
|
|||||||
if (SongsUsingVariationFlag[i] == songID) {
|
if (SongsUsingVariationFlag[i] == songID) {
|
||||||
MapConfig* map = &gAreas[gGameStatusPtr->areaID].maps[gGameStatusPtr->mapID];
|
MapConfig* map = &gAreas[gGameStatusPtr->areaID].maps[gGameStatusPtr->mapID];
|
||||||
|
|
||||||
return map->unk_1C.bytes.songVariation & 1;
|
return map->songVariation & 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -175,8 +175,6 @@ void bgm_update_music_settings(void) {
|
|||||||
bgm_update_volume();
|
bgm_update_volume();
|
||||||
}
|
}
|
||||||
|
|
||||||
static const f32 padding = 0.0f;
|
|
||||||
|
|
||||||
s32 _bgm_set_song(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime, s16 volume) {
|
s32 _bgm_set_song(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime, s16 volume) {
|
||||||
MusicSettings* musicSetting;
|
MusicSettings* musicSetting;
|
||||||
s32 mapSongVariation;
|
s32 mapSongVariation;
|
||||||
@ -215,7 +213,7 @@ s32 _bgm_set_song(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime, s
|
|||||||
musicSetting->variation = variation;
|
musicSetting->variation = variation;
|
||||||
musicSetting->fadeOutTime = fadeOutTime;
|
musicSetting->fadeOutTime = fadeOutTime;
|
||||||
musicSetting->state = 1;
|
musicSetting->state = 1;
|
||||||
musicSetting->flags &= ~MUSIC_SETTINGS_FLAGS_2;
|
musicSetting->flags &= ~MUSIC_SETTINGS_FLAGS_ENABLE_PROXIMITY_MIX;
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -254,7 +252,7 @@ s32 func_8014A964(s32 playerIndex, s32 songID, s32 variation, s32 fadeInTime, s1
|
|||||||
musicSetting->variation = variation;
|
musicSetting->variation = variation;
|
||||||
musicSetting->flags |= MUSIC_SETTINGS_FLAGS_20;
|
musicSetting->flags |= MUSIC_SETTINGS_FLAGS_20;
|
||||||
musicSetting->state = 1;
|
musicSetting->state = 1;
|
||||||
musicSetting->flags &= ~MUSIC_SETTINGS_FLAGS_2;
|
musicSetting->flags &= ~MUSIC_SETTINGS_FLAGS_ENABLE_PROXIMITY_MIX;
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -266,7 +264,7 @@ s32 bgm_adjust_proximity(s32 playerIndex, s32 mix, s16 state) {
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(musicSetting->flags & MUSIC_SETTINGS_FLAGS_2)) {
|
if (!(musicSetting->flags & MUSIC_SETTINGS_FLAGS_ENABLE_PROXIMITY_MIX)) {
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -302,8 +302,8 @@ void sfx_reset_door_sounds(void);
|
|||||||
void sfx_clear_sounds(void);
|
void sfx_clear_sounds(void);
|
||||||
void sfx_clear_env_sounds(s16 playSounds);
|
void sfx_clear_env_sounds(s16 playSounds);
|
||||||
void sfx_update_looping_sound_params(void);
|
void sfx_update_looping_sound_params(void);
|
||||||
void func_801497FC(s32 arg0);
|
void sfx_set_reverb_mode(s32 arg0);
|
||||||
s32 func_80149828(void);
|
s32 sfx_get_reverb_mode(void);
|
||||||
void sfx_stop_env_sounds(void);
|
void sfx_stop_env_sounds(void);
|
||||||
*/
|
*/
|
||||||
SoundInstance* sfx_get_env_sound_instance(s32 soundID);
|
SoundInstance* sfx_get_env_sound_instance(s32 soundID);
|
||||||
|
@ -74,8 +74,8 @@ void sfx_reset_door_sounds(void);
|
|||||||
void sfx_clear_sounds(void);
|
void sfx_clear_sounds(void);
|
||||||
void sfx_clear_env_sounds(s16 playSounds);
|
void sfx_clear_env_sounds(s16 playSounds);
|
||||||
void sfx_update_looping_sound_params(void);
|
void sfx_update_looping_sound_params(void);
|
||||||
void func_801497FC(s32 arg0);
|
void sfx_set_reverb_mode(s32 arg0);
|
||||||
s32 func_80149828(void);
|
s32 sfx_get_reverb_mode(void);
|
||||||
void sfx_stop_env_sounds(void);
|
void sfx_stop_env_sounds(void);
|
||||||
//SoundInstance* sfx_get_env_sound_instance(s32 soundID);
|
//SoundInstance* sfx_get_env_sound_instance(s32 soundID);
|
||||||
void sfx_play_sound_looping(s32 soundId, u8 volume, u8 pan, s16 pitchShift);
|
void sfx_play_sound_looping(s32 soundId, u8 volume, u8 pan, s16 pitchShift);
|
||||||
|
@ -301,7 +301,7 @@ void sfx_clear_sounds(void) {
|
|||||||
bzero(&D_801598A0, sizeof(D_801598A0));
|
bzero(&D_801598A0, sizeof(D_801598A0));
|
||||||
bzero(&D_801599B8, sizeof(D_801599B8));
|
bzero(&D_801599B8, sizeof(D_801599B8));
|
||||||
D_80159AD0 = D_801598A0;
|
D_80159AD0 = D_801598A0;
|
||||||
func_801497FC(0);
|
sfx_set_reverb_mode(0);
|
||||||
sfx_reset_door_sounds();
|
sfx_reset_door_sounds();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -345,12 +345,12 @@ void sfx_update_looping_sound_params(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_801497FC(s32 arg0) {
|
void sfx_set_reverb_mode(s32 mode) {
|
||||||
func_800561E4(arg0);
|
func_800561E4(mode);
|
||||||
D_80159AD4 = arg0;
|
D_80159AD4 = mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 func_80149828(void) {
|
s32 sfx_get_reverb_mode(void) {
|
||||||
return D_80159AD4;
|
return D_80159AD4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -516,10 +516,10 @@ ApiStatus ShowStatusMenu(Evt* script, s32 isInitialCall) {
|
|||||||
Bytecode* args = script->ptrReadPos;
|
Bytecode* args = script->ptrReadPos;
|
||||||
|
|
||||||
if (evt_get_variable(script, *args++) != 0) {
|
if (evt_get_variable(script, *args++) != 0) {
|
||||||
func_800E9894();
|
status_menu_ignore_changes();
|
||||||
close_status_menu();
|
close_status_menu();
|
||||||
} else {
|
} else {
|
||||||
func_800E98C4();
|
status_menu_respond_to_changes();
|
||||||
}
|
}
|
||||||
|
|
||||||
return ApiStatus_DONE2;
|
return ApiStatus_DONE2;
|
||||||
|
@ -115,11 +115,11 @@ ApiStatus FadeInMusic(Evt* script, s32 isInitialCall) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ApiStatus func_802D5EE0(Evt* script, s32 isInitialCall) {
|
ApiStatus EnableMusicProximityMix(Evt* script, s32 isInitialCall) {
|
||||||
Bytecode* args = script->ptrReadPos;
|
Bytecode* args = script->ptrReadPos;
|
||||||
s32 playerIndex = evt_get_variable(script, *args++);
|
s32 playerIndex = evt_get_variable(script, *args++);
|
||||||
|
|
||||||
gMusicSettings[playerIndex].flags |= MUSIC_SETTINGS_FLAGS_2;
|
gMusicSettings[playerIndex].flags |= MUSIC_SETTINGS_FLAGS_ENABLE_PROXIMITY_MIX;
|
||||||
return ApiStatus_DONE2;
|
return ApiStatus_DONE2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -99,7 +99,7 @@ void sort_scripts(void) {
|
|||||||
for (i = 0; i < MAX_SCRIPTS; i++) {
|
for (i = 0; i < MAX_SCRIPTS; i++) {
|
||||||
curScript = (*gCurrentScriptListPtr)[i];
|
curScript = (*gCurrentScriptListPtr)[i];
|
||||||
if (curScript != NULL) {
|
if (curScript != NULL) {
|
||||||
if (curScript->state != 0) {
|
if (curScript->stateFlags != 0) {
|
||||||
scriptIndexList[numValidScripts] = i;
|
scriptIndexList[numValidScripts] = i;
|
||||||
scriptIdList[numValidScripts] = curScript->id;
|
scriptIdList[numValidScripts] = curScript->id;
|
||||||
numValidScripts++;
|
numValidScripts++;
|
||||||
@ -231,7 +231,7 @@ void suspend_frozen_scripts(Evt* script) {
|
|||||||
suspend_all_group(groupFlags);
|
suspend_all_group(groupFlags);
|
||||||
}
|
}
|
||||||
|
|
||||||
Evt* start_script(EvtScript* source, s32 priority, s32 initialState) {
|
Evt* start_script(EvtScript* source, s32 priority, s32 flags) {
|
||||||
Evt* newScript;
|
Evt* newScript;
|
||||||
s32 curScriptIndex;
|
s32 curScriptIndex;
|
||||||
s32 scriptListCount;
|
s32 scriptListCount;
|
||||||
@ -250,7 +250,7 @@ Evt* start_script(EvtScript* source, s32 priority, s32 initialState) {
|
|||||||
gNumScripts++;
|
gNumScripts++;
|
||||||
ASSERT(newScript != NULL);
|
ASSERT(newScript != NULL);
|
||||||
|
|
||||||
newScript->state = initialState | EVT_FLAG_ACTIVE;
|
newScript->stateFlags = flags | EVT_FLAG_ACTIVE;
|
||||||
newScript->currentOpcode = 0;
|
newScript->currentOpcode = 0;
|
||||||
newScript->priority = priority;
|
newScript->priority = priority;
|
||||||
newScript->ptrNextLine = (Bytecode*)source;
|
newScript->ptrNextLine = (Bytecode*)source;
|
||||||
@ -283,7 +283,7 @@ Evt* start_script(EvtScript* source, s32 priority, s32 initialState) {
|
|||||||
|
|
||||||
find_script_labels(newScript);
|
find_script_labels(newScript);
|
||||||
|
|
||||||
if (gIsUpdatingScripts && (newScript->state & EVT_FLAG_RUN_IMMEDIATELY)) {
|
if (gIsUpdatingScripts && (newScript->stateFlags & EVT_FLAG_RUN_IMMEDIATELY)) {
|
||||||
scriptListCount = gScriptListCount++;
|
scriptListCount = gScriptListCount++;
|
||||||
gScriptIndexList[scriptListCount] = curScriptIndex;
|
gScriptIndexList[scriptListCount] = curScriptIndex;
|
||||||
gScriptIdList[scriptListCount] = newScript->id;
|
gScriptIdList[scriptListCount] = newScript->id;
|
||||||
@ -298,7 +298,7 @@ Evt* start_script(EvtScript* source, s32 priority, s32 initialState) {
|
|||||||
return newScript;
|
return newScript;
|
||||||
}
|
}
|
||||||
|
|
||||||
Evt* start_script_in_group(EvtScript* source, u8 priority, u8 initialState, u8 groupFlags) {
|
Evt* start_script_in_group(EvtScript* source, u8 priority, u8 flags, u8 groupFlags) {
|
||||||
Evt* newScript;
|
Evt* newScript;
|
||||||
s32 scriptListCount;
|
s32 scriptListCount;
|
||||||
s32 i;
|
s32 i;
|
||||||
@ -322,7 +322,7 @@ Evt* start_script_in_group(EvtScript* source, u8 priority, u8 initialState, u8 g
|
|||||||
|
|
||||||
// Some of this function is surely macros. I think we'll learn more as we do others in this file. -Ethan
|
// Some of this function is surely macros. I think we'll learn more as we do others in this file. -Ethan
|
||||||
do {
|
do {
|
||||||
newScript->state = initialState | EVT_FLAG_ACTIVE;
|
newScript->stateFlags = flags | EVT_FLAG_ACTIVE;
|
||||||
newScript->currentOpcode = 0;
|
newScript->currentOpcode = 0;
|
||||||
newScript->priority = priority;
|
newScript->priority = priority;
|
||||||
newScript->id = gStaticScriptCounter++;
|
newScript->id = gStaticScriptCounter++;
|
||||||
@ -353,7 +353,7 @@ Evt* start_script_in_group(EvtScript* source, u8 priority, u8 initialState, u8 g
|
|||||||
|
|
||||||
find_script_labels(newScript);
|
find_script_labels(newScript);
|
||||||
|
|
||||||
if (gIsUpdatingScripts && (newScript->state & EVT_FLAG_RUN_IMMEDIATELY)) {
|
if (gIsUpdatingScripts && (newScript->stateFlags & EVT_FLAG_RUN_IMMEDIATELY)) {
|
||||||
scriptListCount = gScriptListCount++;
|
scriptListCount = gScriptListCount++;
|
||||||
gScriptIndexList[scriptListCount] = curScriptIndex;
|
gScriptIndexList[scriptListCount] = curScriptIndex;
|
||||||
gScriptIdList[scriptListCount] = newScript->id;
|
gScriptIdList[scriptListCount] = newScript->id;
|
||||||
@ -370,7 +370,7 @@ Evt* start_script_in_group(EvtScript* source, u8 priority, u8 initialState, u8 g
|
|||||||
return newScript;
|
return newScript;
|
||||||
}
|
}
|
||||||
|
|
||||||
Evt* start_child_script(Evt* parentScript, EvtScript* source, s32 initialState) {
|
Evt* start_child_script(Evt* parentScript, EvtScript* source, s32 flags) {
|
||||||
s32 curScriptIndex;
|
s32 curScriptIndex;
|
||||||
s32 scriptListCount;
|
s32 scriptListCount;
|
||||||
Evt* child;
|
Evt* child;
|
||||||
@ -390,8 +390,8 @@ Evt* start_child_script(Evt* parentScript, EvtScript* source, s32 initialState)
|
|||||||
ASSERT(child != NULL);
|
ASSERT(child != NULL);
|
||||||
|
|
||||||
parentScript->childScript = child;
|
parentScript->childScript = child;
|
||||||
parentScript->state |= EVT_FLAG_BLOCKED_BY_CHILD;
|
parentScript->stateFlags |= EVT_FLAG_BLOCKED_BY_CHILD;
|
||||||
child->state = initialState | EVT_FLAG_ACTIVE;
|
child->stateFlags = flags | EVT_FLAG_ACTIVE;
|
||||||
child->ptrCurrentLine = child->ptrFirstLine = child->ptrNextLine = (Bytecode*)source;
|
child->ptrCurrentLine = child->ptrFirstLine = child->ptrNextLine = (Bytecode*)source;
|
||||||
|
|
||||||
|
|
||||||
@ -459,7 +459,7 @@ Evt* func_802C39F8(Evt* parentScript, Bytecode* nextLine, s32 newState) {
|
|||||||
gNumScripts++;
|
gNumScripts++;
|
||||||
ASSERT(child != NULL);
|
ASSERT(child != NULL);
|
||||||
|
|
||||||
child->state = newState | EVT_FLAG_ACTIVE;
|
child->stateFlags = newState | EVT_FLAG_ACTIVE;
|
||||||
child->ptrNextLine = nextLine;
|
child->ptrNextLine = nextLine;
|
||||||
child->ptrFirstLine = nextLine;
|
child->ptrFirstLine = nextLine;
|
||||||
child->ptrCurrentLine = nextLine;
|
child->ptrCurrentLine = nextLine;
|
||||||
@ -516,7 +516,7 @@ Evt* func_802C3C10(Evt* script, Bytecode* line, s32 arg2) {
|
|||||||
script->ptrCurrentLine = line;
|
script->ptrCurrentLine = line;
|
||||||
script->currentOpcode = 0;
|
script->currentOpcode = 0;
|
||||||
script->frameCounter = 0;
|
script->frameCounter = 0;
|
||||||
script->state |= arg2;
|
script->stateFlags |= arg2;
|
||||||
script->timeScale = 1.0f;
|
script->timeScale = 1.0f;
|
||||||
|
|
||||||
if (script->userData != NULL) {
|
if (script->userData != NULL) {
|
||||||
@ -581,7 +581,7 @@ void update_scripts(void) {
|
|||||||
for (i = 0; i < gScriptListCount; i++) {
|
for (i = 0; i < gScriptListCount; i++) {
|
||||||
Evt* script = (*gCurrentScriptListPtr)[gScriptIndexList[i]];
|
Evt* script = (*gCurrentScriptListPtr)[gScriptIndexList[i]];
|
||||||
|
|
||||||
if (script != NULL && script->id == gScriptIdList[i] && script->state != 0 && !(script->state & (EVT_FLAG_SUSPENDED | EVT_FLAG_BLOCKED_BY_CHILD | EVT_FLAG_SUSPENDED_IN_GROUP))) {
|
if (script != NULL && script->id == gScriptIdList[i] && script->stateFlags != 0 && !(script->stateFlags & (EVT_FLAG_SUSPENDED | EVT_FLAG_BLOCKED_BY_CHILD | EVT_FLAG_SUSPENDED_IN_GROUP))) {
|
||||||
s32 stop = FALSE;
|
s32 stop = FALSE;
|
||||||
s32 status;
|
s32 status;
|
||||||
|
|
||||||
@ -646,7 +646,7 @@ void kill_script(Evt* instanceToKill) {
|
|||||||
blockingParent = instanceToKill->blockingParent;
|
blockingParent = instanceToKill->blockingParent;
|
||||||
if (blockingParent != NULL) {
|
if (blockingParent != NULL) {
|
||||||
blockingParent->childScript = NULL;
|
blockingParent->childScript = NULL;
|
||||||
blockingParent->state &= ~EVT_FLAG_BLOCKED_BY_CHILD;
|
blockingParent->stateFlags &= ~EVT_FLAG_BLOCKED_BY_CHILD;
|
||||||
|
|
||||||
for (j = 0; j < ARRAY_COUNT(blockingParent->varTable); j++) {
|
for (j = 0; j < ARRAY_COUNT(blockingParent->varTable); j++) {
|
||||||
blockingParent->varTable[j] = instanceToKill->varTable[j];
|
blockingParent->varTable[j] = instanceToKill->varTable[j];
|
||||||
@ -777,7 +777,7 @@ void suspend_group_script(Evt* script, s32 groupFlags) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ((script->groupFlags & groupFlags) != 0) {
|
if ((script->groupFlags & groupFlags) != 0) {
|
||||||
script->state |= EVT_FLAG_SUSPENDED_IN_GROUP;
|
script->stateFlags |= EVT_FLAG_SUSPENDED_IN_GROUP;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -798,7 +798,7 @@ void resume_group_script(Evt* script, s32 groupFlags) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ((script->groupFlags & groupFlags) != 0) {
|
if ((script->groupFlags & groupFlags) != 0) {
|
||||||
script->state &= ~EVT_FLAG_SUSPENDED_IN_GROUP;
|
script->stateFlags &= ~EVT_FLAG_SUSPENDED_IN_GROUP;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -921,7 +921,7 @@ void set_script_flags(Evt* script, s32 flags) {
|
|||||||
Evt* childScript = script->childScript;
|
Evt* childScript = script->childScript;
|
||||||
s32 i;
|
s32 i;
|
||||||
|
|
||||||
script->state |= flags;
|
script->stateFlags |= flags;
|
||||||
if (childScript != NULL) {
|
if (childScript != NULL) {
|
||||||
set_script_flags(childScript, flags);
|
set_script_flags(childScript, flags);
|
||||||
}
|
}
|
||||||
@ -939,7 +939,7 @@ void clear_script_flags(Evt* script, s32 flags) {
|
|||||||
Evt* childScript = script->childScript;
|
Evt* childScript = script->childScript;
|
||||||
s32 i;
|
s32 i;
|
||||||
|
|
||||||
script->state &= ~flags;
|
script->stateFlags &= ~flags;
|
||||||
if (childScript != NULL) {
|
if (childScript != NULL) {
|
||||||
clear_script_flags(childScript, flags);
|
clear_script_flags(childScript, flags);
|
||||||
}
|
}
|
||||||
|
@ -308,7 +308,7 @@ void state_step_exit_language_select(void) {
|
|||||||
|
|
||||||
calculate_model_sizes();
|
calculate_model_sizes();
|
||||||
npc_reload_all();
|
npc_reload_all();
|
||||||
func_800E98C4();
|
status_menu_respond_to_changes();
|
||||||
set_time_freeze_mode(TIME_FREEZE_PARTIAL);
|
set_time_freeze_mode(TIME_FREEZE_PARTIAL);
|
||||||
}
|
}
|
||||||
set_windows_visible(WINDOW_GROUP_ALL);
|
set_windows_visible(WINDOW_GROUP_ALL);
|
||||||
|
@ -78,8 +78,8 @@ void state_step_pause(void) {
|
|||||||
clear_npcs();
|
clear_npcs();
|
||||||
clear_entity_data(0);
|
clear_entity_data(0);
|
||||||
clear_trigger_data();
|
clear_trigger_data();
|
||||||
D_800A0924 = func_80149828();
|
SavedReverbMode = sfx_get_reverb_mode();
|
||||||
func_801497FC(0);
|
sfx_set_reverb_mode(0);
|
||||||
bgm_quiet_max_volume();
|
bgm_quiet_max_volume();
|
||||||
nuPiReadRomOverlay(&D_8007795C);
|
nuPiReadRomOverlay(&D_8007795C);
|
||||||
pause_init();
|
pause_init();
|
||||||
@ -159,7 +159,7 @@ void state_step_unpause(void) {
|
|||||||
init_npc_list();
|
init_npc_list();
|
||||||
init_entity_data();
|
init_entity_data();
|
||||||
init_trigger_list();
|
init_trigger_list();
|
||||||
func_801497FC(D_800A0924);
|
sfx_set_reverb_mode(SavedReverbMode);
|
||||||
bgm_reset_max_volume();
|
bgm_reset_max_volume();
|
||||||
load_map_script_lib();
|
load_map_script_lib();
|
||||||
assetData = load_asset_by_name(wMapShapeName, &assetSize);
|
assetData = load_asset_by_name(wMapShapeName, &assetSize);
|
||||||
@ -183,7 +183,7 @@ void state_step_unpause(void) {
|
|||||||
calculate_model_sizes();
|
calculate_model_sizes();
|
||||||
npc_reload_all();
|
npc_reload_all();
|
||||||
set_windows_visible(WINDOW_GROUP_ALL);
|
set_windows_visible(WINDOW_GROUP_ALL);
|
||||||
func_800E98C4();
|
status_menu_respond_to_changes();
|
||||||
set_time_freeze_mode(TIME_FREEZE_PARTIAL);
|
set_time_freeze_mode(TIME_FREEZE_PARTIAL);
|
||||||
D_800A0921 = 3;
|
D_800A0921 = 3;
|
||||||
gPlayerStatus.alpha2 = gPlayerStatus.alpha1 - 1;
|
gPlayerStatus.alpha2 = gPlayerStatus.alpha1 - 1;
|
||||||
|
@ -80,7 +80,7 @@ void state_init_title_screen(void) {
|
|||||||
D_8014C248[0] = 1;
|
D_8014C248[0] = 1;
|
||||||
general_heap_create();
|
general_heap_create();
|
||||||
clear_printers();
|
clear_printers();
|
||||||
func_801497FC(0);
|
sfx_set_reverb_mode(0);
|
||||||
gGameStatusPtr->introState = INTRO_STATE_0;
|
gGameStatusPtr->introState = INTRO_STATE_0;
|
||||||
gGameStatusPtr->introCounter = 0;
|
gGameStatusPtr->introCounter = 0;
|
||||||
gGameStatusPtr->isBattle = FALSE;
|
gGameStatusPtr->isBattle = FALSE;
|
||||||
|
@ -110,7 +110,7 @@ void action_update_idle_peach(void) {
|
|||||||
playerStatus->currentSpeed = 0.0f;
|
playerStatus->currentSpeed = 0.0f;
|
||||||
playerStatus->flags &= ~PS_FLAGS_AIRBORNE;
|
playerStatus->flags &= ~PS_FLAGS_AIRBORNE;
|
||||||
|
|
||||||
if (!(playerStatus->animFlags & PA_FLAGS_IN_DISGUISE)) {
|
if (!(playerStatus->animFlags & PA_FLAGS_INVISIBLE)) {
|
||||||
if (!(gGameStatusPtr->peachFlags & PEACH_STATUS_FLAG_HAS_INGREDIENT)) {
|
if (!(gGameStatusPtr->peachFlags & PEACH_STATUS_FLAG_HAS_INGREDIENT)) {
|
||||||
suggest_player_anim_clearUnkFlag(IdlePeachAnims[gGameStatusPtr->peachCookingIngredient]);
|
suggest_player_anim_clearUnkFlag(IdlePeachAnims[gGameStatusPtr->peachCookingIngredient]);
|
||||||
} else {
|
} else {
|
||||||
@ -121,7 +121,7 @@ void action_update_idle_peach(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(playerStatus->animFlags & PA_FLAGS_IN_DISGUISE)) {
|
if (!(playerStatus->animFlags & PA_FLAGS_INVISIBLE)) {
|
||||||
switch (playerStatus->actionSubstate) {
|
switch (playerStatus->actionSubstate) {
|
||||||
case SUBSTATE_IDLE_DEFAULT:
|
case SUBSTATE_IDLE_DEFAULT:
|
||||||
if (!(playerStatus->flags & (PS_FLAGS_NO_STATIC_COLLISION | PS_FLAGS_INPUT_DISABLED))
|
if (!(playerStatus->flags & (PS_FLAGS_NO_STATIC_COLLISION | PS_FLAGS_INPUT_DISABLED))
|
||||||
|
@ -229,7 +229,7 @@ void action_update_talk(void) {
|
|||||||
if (!(playerStatus->animFlags & PA_FLAGS_USING_PEACH_PHYSICS)) {
|
if (!(playerStatus->animFlags & PA_FLAGS_USING_PEACH_PHYSICS)) {
|
||||||
suggest_player_anim_setUnkFlag(ANIM_Mario_80007);
|
suggest_player_anim_setUnkFlag(ANIM_Mario_80007);
|
||||||
} else if (playerStatus->peachItemHeld == 0) {
|
} else if (playerStatus->peachItemHeld == 0) {
|
||||||
if (!(playerStatus->animFlags & PA_FLAGS_IN_DISGUISE)) {
|
if (!(playerStatus->animFlags & PA_FLAGS_INVISIBLE)) {
|
||||||
suggest_player_anim_setUnkFlag(ANIM_Peach_C0000);
|
suggest_player_anim_setUnkFlag(ANIM_Peach_C0000);
|
||||||
} else {
|
} else {
|
||||||
peach_set_disguise_anim(BasicPeachDisguiseAnims[playerStatus->peachDisguise].talk);
|
peach_set_disguise_anim(BasicPeachDisguiseAnims[playerStatus->peachDisguise].talk);
|
||||||
@ -242,7 +242,7 @@ void action_update_talk(void) {
|
|||||||
if (playerStatus->currentStateTime != 0) {
|
if (playerStatus->currentStateTime != 0) {
|
||||||
playerStatus->currentStateTime--;
|
playerStatus->currentStateTime--;
|
||||||
} else if (playerStatus->peachItemHeld == 0) {
|
} else if (playerStatus->peachItemHeld == 0) {
|
||||||
if (!(playerStatus->animFlags & PA_FLAGS_IN_DISGUISE)) {
|
if (!(playerStatus->animFlags & PA_FLAGS_INVISIBLE)) {
|
||||||
suggest_player_anim_setUnkFlag(ANIM_Peach_A0001);
|
suggest_player_anim_setUnkFlag(ANIM_Peach_A0001);
|
||||||
} else {
|
} else {
|
||||||
peach_set_disguise_anim(BasicPeachDisguiseAnims[playerStatus->peachDisguise].idle);
|
peach_set_disguise_anim(BasicPeachDisguiseAnims[playerStatus->peachDisguise].idle);
|
||||||
|
@ -96,7 +96,7 @@ void action_update_parasol(void) {
|
|||||||
}
|
}
|
||||||
*tempUnk_1C = phi_f4;
|
*tempUnk_1C = phi_f4;
|
||||||
|
|
||||||
if (!(playerStatus->animFlags & PA_FLAGS_IN_DISGUISE)) {
|
if (!(playerStatus->animFlags & PA_FLAGS_INVISIBLE)) {
|
||||||
playerStatus->currentStateTime = 20;
|
playerStatus->currentStateTime = 20;
|
||||||
playerStatus->actionSubstate = SUBSTATE_DISGUISE_INIT;
|
playerStatus->actionSubstate = SUBSTATE_DISGUISE_INIT;
|
||||||
transformation->disguiseTime = 15;
|
transformation->disguiseTime = 15;
|
||||||
@ -185,7 +185,7 @@ void action_update_parasol(void) {
|
|||||||
break;
|
break;
|
||||||
case SUBSTATE_DISGUISE_MAKE_NPC:
|
case SUBSTATE_DISGUISE_MAKE_NPC:
|
||||||
gameStatus = gGameStatusPtr;
|
gameStatus = gGameStatusPtr;
|
||||||
playerStatus->animFlags |= PA_FLAGS_IN_DISGUISE;
|
playerStatus->animFlags |= PA_FLAGS_INVISIBLE;
|
||||||
gameStatus->peachFlags |= PEACH_STATUS_FLAG_DISGUISED;
|
gameStatus->peachFlags |= PEACH_STATUS_FLAG_DISGUISED;
|
||||||
playerStatus->actionSubstate++; // SUBSTATE_DISGUISE_SPIN_DOWN
|
playerStatus->actionSubstate++; // SUBSTATE_DISGUISE_SPIN_DOWN
|
||||||
case SUBSTATE_DISGUISE_SPIN_DOWN:
|
case SUBSTATE_DISGUISE_SPIN_DOWN:
|
||||||
@ -261,7 +261,7 @@ void action_update_parasol(void) {
|
|||||||
playerStatus->currentStateTime = 2;
|
playerStatus->currentStateTime = 2;
|
||||||
playerStatus->actionSubstate++; // SUBSTATE_SPIN_DOWN
|
playerStatus->actionSubstate++; // SUBSTATE_SPIN_DOWN
|
||||||
gameStatus2 = gGameStatusPtr;
|
gameStatus2 = gGameStatusPtr;
|
||||||
playerStatus->animFlags &= ~PA_FLAGS_IN_DISGUISE;
|
playerStatus->animFlags &= ~PA_FLAGS_INVISIBLE;
|
||||||
gameStatus2->peachFlags &= ~PEACH_STATUS_FLAG_DISGUISED;
|
gameStatus2->peachFlags &= ~PEACH_STATUS_FLAG_DISGUISED;
|
||||||
playerStatus->peachDisguise = 0;
|
playerStatus->peachDisguise = 0;
|
||||||
free_npc_by_index(PeachDisguiseNpcIndex);
|
free_npc_by_index(PeachDisguiseNpcIndex);
|
||||||
|
@ -77,7 +77,7 @@ void action_update_step_up(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void func_802B6198_E24768(void) {
|
void func_802B6198_E24768(void) {
|
||||||
if (!(gPlayerStatus.animFlags & PA_FLAGS_IN_DISGUISE)) {
|
if (!(gPlayerStatus.animFlags & PA_FLAGS_INVISIBLE)) {
|
||||||
if (!(gGameStatusPtr->peachFlags & PEACH_STATUS_FLAG_HAS_INGREDIENT)) {
|
if (!(gGameStatusPtr->peachFlags & PEACH_STATUS_FLAG_HAS_INGREDIENT)) {
|
||||||
suggest_player_anim_clearUnkFlag((StepUpPeachAnims)[gGameStatusPtr->peachCookingIngredient]);
|
suggest_player_anim_clearUnkFlag((StepUpPeachAnims)[gGameStatusPtr->peachCookingIngredient]);
|
||||||
} else {
|
} else {
|
||||||
|
@ -205,7 +205,7 @@ void action_update_run(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void func_802B6550_E23C30(void) {
|
void func_802B6550_E23C30(void) {
|
||||||
if (!(gPlayerStatus.animFlags & PA_FLAGS_IN_DISGUISE)) {
|
if (!(gPlayerStatus.animFlags & PA_FLAGS_INVISIBLE)) {
|
||||||
if (!(gGameStatusPtr->peachFlags & PEACH_STATUS_FLAG_HAS_INGREDIENT)) {
|
if (!(gGameStatusPtr->peachFlags & PEACH_STATUS_FLAG_HAS_INGREDIENT)) {
|
||||||
suggest_player_anim_clearUnkFlag(WalkPeachAnims[gGameStatusPtr->peachCookingIngredient]);
|
suggest_player_anim_clearUnkFlag(WalkPeachAnims[gGameStatusPtr->peachCookingIngredient]);
|
||||||
return;
|
return;
|
||||||
@ -265,7 +265,7 @@ static void action_update_run_peach(void) {
|
|||||||
playerStatus->currentSpeed = playerStatus->runSpeed;
|
playerStatus->currentSpeed = playerStatus->runSpeed;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(playerStatus->animFlags & PA_FLAGS_IN_DISGUISE)) {
|
if (!(playerStatus->animFlags & PA_FLAGS_INVISIBLE)) {
|
||||||
gameStatus = gGameStatusPtr;
|
gameStatus = gGameStatusPtr;
|
||||||
if (!(gameStatus->peachFlags & PEACH_STATUS_FLAG_HAS_INGREDIENT)) {
|
if (!(gameStatus->peachFlags & PEACH_STATUS_FLAG_HAS_INGREDIENT)) {
|
||||||
if (!gameStatus->peachCookingIngredient) {
|
if (!gameStatus->peachCookingIngredient) {
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#include "world/common/npc/Boo.inc.c"
|
#include "world/common/npc/Boo.inc.c"
|
||||||
#include "world/common/npc/StarSpirit.inc.c"
|
#include "world/common/npc/StarSpirit.inc.c"
|
||||||
|
|
||||||
API_CALLABLE(N(UpgradeStarPower)) {
|
API_CALLABLE(N(UpgradeStarPowerCh3)) {
|
||||||
set_max_SP(3);
|
set_max_SP(3);
|
||||||
gPlayerData.curHP = gPlayerData.curMaxHP;
|
gPlayerData.curHP = gPlayerData.curMaxHP;
|
||||||
gPlayerData.curFP = gPlayerData.curMaxFP;
|
gPlayerData.curFP = gPlayerData.curMaxFP;
|
||||||
@ -472,7 +472,7 @@ EvtScript N(EVS_Scene_SkolarRescued) = {
|
|||||||
EVT_CALL(SetPlayerAnimation, ANIM_Mario_10002)
|
EVT_CALL(SetPlayerAnimation, ANIM_Mario_10002)
|
||||||
EVT_CALL(SetNpcAnimation, NPC_Skolar, ANIM_WorldSkolar_Idle)
|
EVT_CALL(SetNpcAnimation, NPC_Skolar, ANIM_WorldSkolar_Idle)
|
||||||
EVT_CALL(EnableNpcAI, NPC_Skolar, TRUE)
|
EVT_CALL(EnableNpcAI, NPC_Skolar, TRUE)
|
||||||
EVT_CALL(N(UpgradeStarPower))
|
EVT_CALL(N(UpgradeStarPowerCh3))
|
||||||
EVT_CALL(ShowMessageAtScreenPos, MSG_Menus_0193, 160, 40)
|
EVT_CALL(ShowMessageAtScreenPos, MSG_Menus_0193, 160, 40)
|
||||||
EVT_WAIT(10)
|
EVT_WAIT(10)
|
||||||
EVT_CALL(GetNpcPos, NPC_Skolar, LVar0, LVar1, LVar2)
|
EVT_CALL(GetNpcPos, NPC_Skolar, LVar0, LVar1, LVar2)
|
||||||
|
@ -1,309 +0,0 @@
|
|||||||
#include "arn_11.h"
|
|
||||||
#include "sprite/npc/TubbasHeart.h"
|
|
||||||
|
|
||||||
enum {
|
|
||||||
NPC_TUBBAS_HEART,
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(802400F0) = {
|
|
||||||
EVT_CALL(SetCamType, 0, 6, 1)
|
|
||||||
EVT_CALL(SetCamSpeed, 0, EVT_FLOAT(3.0))
|
|
||||||
EVT_CALL(UseSettingsFrom, 0, 60, 30, 0)
|
|
||||||
EVT_CALL(SetPanTarget, 0, 60, 30, 0)
|
|
||||||
EVT_CALL(SetCamPitch, 0, EVT_FLOAT(20.0), EVT_FLOAT(-13.0))
|
|
||||||
EVT_CALL(SetCamDistance, 0, 275)
|
|
||||||
EVT_CALL(PanToTarget, 0, 0, 1)
|
|
||||||
EVT_CALL(WaitForCam, 0, EVT_FLOAT(1.0))
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(802401BC) = {
|
|
||||||
EVT_CALL(DisablePlayerInput, TRUE)
|
|
||||||
EVT_WAIT(30)
|
|
||||||
EVT_CALL(SetPlayerSpeed, EVT_FLOAT(3.0))
|
|
||||||
EVT_CALL(PlayerMoveTo, 6, 0, 0)
|
|
||||||
EVT_CALL(SpeakToPlayer, 0, ANIM_TubbasHeart_Anim0B, ANIM_TubbasHeart_Anim01, 0, MSG_CH3_00BF)
|
|
||||||
EVT_WAIT(10)
|
|
||||||
EVT_CALL(SetPlayerAnimation, ANIM_Mario_80007)
|
|
||||||
EVT_WAIT(40)
|
|
||||||
EVT_CALL(SpeakToPlayer, 0, ANIM_TubbasHeart_Anim0B, ANIM_TubbasHeart_Anim01, 0, MSG_CH3_00C0)
|
|
||||||
EVT_CALL(SetPlayerAnimation, ANIM_Mario_10002)
|
|
||||||
EVT_WAIT(10)
|
|
||||||
EVT_CALL(SetPlayerAnimation, 589824)
|
|
||||||
EVT_WAIT(30)
|
|
||||||
EVT_CALL(SpeakToPlayer, 0, ANIM_TubbasHeart_Anim0B, ANIM_TubbasHeart_Anim01, 0, MSG_CH3_00C1)
|
|
||||||
EVT_CALL(SetPlayerAnimation, ANIM_Mario_10002)
|
|
||||||
EVT_WAIT(20)
|
|
||||||
EVT_CALL(SetPlayerAnimation, 589824)
|
|
||||||
EVT_THREAD
|
|
||||||
EVT_CALL(SetNpcJumpscale, 0, EVT_FLOAT(2.5))
|
|
||||||
EVT_CALL(GetNpcPos, 0, LVar0, LVar1, LVar2)
|
|
||||||
EVT_CALL(PlaySoundAtNpc, 0, 0x20C8, 0)
|
|
||||||
EVT_CALL(NpcJump0, 0, LVar0, LVar1, LVar2, 10)
|
|
||||||
EVT_WAIT(1)
|
|
||||||
EVT_CALL(PlaySoundAtNpc, 0, 0x20C8, 0)
|
|
||||||
EVT_CALL(NpcJump0, 0, LVar0, LVar1, LVar2, 10)
|
|
||||||
EVT_END_THREAD
|
|
||||||
EVT_WAIT(40)
|
|
||||||
EVT_CALL(SpeakToPlayer, 0, ANIM_TubbasHeart_Anim0B, ANIM_TubbasHeart_Anim01, 0, MSG_CH3_00C2)
|
|
||||||
EVT_CALL(SetPlayerAnimation, 589824)
|
|
||||||
EVT_WAIT(10)
|
|
||||||
EVT_CALL(SetNpcVar, 0, 0, 1)
|
|
||||||
EVT_CALL(DisablePlayerInput, FALSE)
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(exitSingleDoor_80240428) = {
|
|
||||||
EVT_SET_GROUP(EVT_GROUP_1B)
|
|
||||||
EVT_CALL(DisablePlayerInput, TRUE)
|
|
||||||
EVT_SET(LVar0, 0)
|
|
||||||
EVT_SET(LVar1, 2)
|
|
||||||
EVT_SET(LVar2, 0)
|
|
||||||
EVT_SET(LVar3, -1)
|
|
||||||
EVT_EXEC(ExitSingleDoor)
|
|
||||||
EVT_WAIT(17)
|
|
||||||
EVT_CALL(GotoMap, EVT_PTR("arn_13"), 1)
|
|
||||||
EVT_WAIT(100)
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(802404CC) = {
|
|
||||||
EVT_BIND_TRIGGER(N(exitSingleDoor_80240428), TRIGGER_WALL_PRESS_A, 2, 1, 0)
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(enterSingleDoor_802404F8) = {
|
|
||||||
EVT_CALL(DisablePlayerInput, TRUE)
|
|
||||||
EVT_SET(LVar2, 0)
|
|
||||||
EVT_SET(LVar3, -1)
|
|
||||||
EVT_EXEC_WAIT(EnterSingleDoor)
|
|
||||||
EVT_EXEC(N(802404CC))
|
|
||||||
EVT_IF_LT(GB_StoryProgress, -22)
|
|
||||||
EVT_WAIT(10)
|
|
||||||
EVT_EXEC(N(802400F0))
|
|
||||||
EVT_EXEC(N(802401BC))
|
|
||||||
EVT_WAIT(1)
|
|
||||||
EVT_END_IF
|
|
||||||
EVT_CALL(DisablePlayerInput, FALSE)
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(main) = {
|
|
||||||
EVT_SET(GB_WorldLocation, 35)
|
|
||||||
EVT_CALL(SetSpriteShading, 524290)
|
|
||||||
EVT_CALL(SetCamPerspective, 0, 3, 25, 16, 4096)
|
|
||||||
EVT_CALL(SetCamBGColor, 0, 0, 0, 0)
|
|
||||||
EVT_CALL(SetCamLeadPlayer, 0, 0)
|
|
||||||
EVT_CALL(SetCamEnabled, 0, 1)
|
|
||||||
EVT_CALL(MakeNpcs, 0, EVT_PTR(N(npcGroupList_802410DC)))
|
|
||||||
EVT_EXEC(N(80240050))
|
|
||||||
EVT_EXEC(N(enterSingleDoor_802404F8))
|
|
||||||
EVT_WAIT(1)
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
static s32 N(pad_674)[] = {
|
|
||||||
0x00000000, 0x00000000, 0x00000000,
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(80240680) = {
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(80240690) = {
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
NpcSettings N(npcSettings_802406A0) = {
|
|
||||||
.height = 24,
|
|
||||||
.radius = 24,
|
|
||||||
.otherAI = &N(80240680),
|
|
||||||
.onDefeat = &N(80240690),
|
|
||||||
.level = 13,
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(idle_802406CC) = {
|
|
||||||
EVT_LOOP(0)
|
|
||||||
EVT_CALL(GetSelfVar, 0, LVar0)
|
|
||||||
EVT_IF_NE(LVar0, 0)
|
|
||||||
EVT_BREAK_LOOP
|
|
||||||
EVT_END_IF
|
|
||||||
EVT_WAIT(1)
|
|
||||||
EVT_END_LOOP
|
|
||||||
EVT_THREAD
|
|
||||||
EVT_CALL(SetCamType, 0, 6, 1)
|
|
||||||
EVT_CALL(SetCamSpeed, 0, EVT_FLOAT(4.0))
|
|
||||||
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)
|
|
||||||
EVT_ADD(LVar0, 50)
|
|
||||||
EVT_CALL(UseSettingsFrom, 0, LVar0, LVar1, LVar2)
|
|
||||||
EVT_CALL(SetPanTarget, 0, LVar0, LVar1, LVar2)
|
|
||||||
EVT_CALL(SetCamDistance, 0, 3000)
|
|
||||||
EVT_CALL(PanToTarget, 0, 0, 1)
|
|
||||||
EVT_CALL(WaitForCam, 0, EVT_FLOAT(1.0))
|
|
||||||
EVT_END_THREAD
|
|
||||||
EVT_CALL(StartBossBattle, 11)
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(8024081C) = {
|
|
||||||
EVT_WAIT(15)
|
|
||||||
EVT_CALL(PlaySoundAtCollider, 2, 449, 0)
|
|
||||||
EVT_CALL(MakeLerp, 0, 80, 10, 0)
|
|
||||||
EVT_LOOP(0)
|
|
||||||
EVT_CALL(UpdateLerp)
|
|
||||||
EVT_CALL(RotateModel, 0, LVar0, 0, -1, 0)
|
|
||||||
EVT_WAIT(1)
|
|
||||||
EVT_IF_EQ(LVar1, 0)
|
|
||||||
EVT_BREAK_LOOP
|
|
||||||
EVT_END_IF
|
|
||||||
EVT_END_LOOP
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(802408D8) = {
|
|
||||||
EVT_CALL(MakeLerp, 80, 0, 10, 0)
|
|
||||||
EVT_LOOP(0)
|
|
||||||
EVT_CALL(UpdateLerp)
|
|
||||||
EVT_CALL(RotateModel, 0, LVar0, 0, -1, 0)
|
|
||||||
EVT_WAIT(1)
|
|
||||||
EVT_IF_EQ(LVar1, 0)
|
|
||||||
EVT_BREAK_LOOP
|
|
||||||
EVT_END_IF
|
|
||||||
EVT_END_LOOP
|
|
||||||
EVT_CALL(PlaySoundAtCollider, 2, 450, 0)
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
s32 N(intTable_80240988)[] = {
|
|
||||||
0x00000064, 0x0000001E, 0x00000046, 0x00000019, 0x0000001E, 0x00000050, 0xFFFFD8F0, 0x00000000,
|
|
||||||
0x00000000, 0xFFFFFFBA, 0x0000000A, 0x00000014, 0xFFFFFF4C, 0x00000000, 0x00000000, 0xFFFFFED4,
|
|
||||||
0x00000000, 0x00000000, 0xFFFFD8F0, 0x00000000, 0x00000000,
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(defeat_802409DC) = {
|
|
||||||
EVT_THREAD
|
|
||||||
EVT_CALL(SetCamType, 0, 6, 1)
|
|
||||||
EVT_CALL(SetCamSpeed, 0, EVT_FLOAT(90.0))
|
|
||||||
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)
|
|
||||||
EVT_ADD(LVar0, 50)
|
|
||||||
EVT_CALL(UseSettingsFrom, 0, LVar0, LVar1, LVar2)
|
|
||||||
EVT_CALL(SetPanTarget, 0, LVar0, LVar1, LVar2)
|
|
||||||
EVT_CALL(SetCamDistance, 0, 450)
|
|
||||||
EVT_CALL(PanToTarget, 0, 0, 1)
|
|
||||||
EVT_END_THREAD
|
|
||||||
EVT_WAIT(10)
|
|
||||||
EVT_CALL(PlayerFaceNpc, 0, 1)
|
|
||||||
EVT_LOOP(2)
|
|
||||||
EVT_CALL(GetNpcPos, 0, LVar0, LVar1, LVar2)
|
|
||||||
EVT_CALL(SetNpcJumpscale, 0, EVT_FLOAT(2.5))
|
|
||||||
EVT_CALL(PlaySoundAtNpc, NPC_SELF, 0x20C8, 0)
|
|
||||||
EVT_CALL(NpcJump0, 0, LVar0, LVar1, LVar2, 12)
|
|
||||||
EVT_WAIT(1)
|
|
||||||
EVT_END_LOOP
|
|
||||||
EVT_THREAD
|
|
||||||
EVT_WAIT(10)
|
|
||||||
EVT_CALL(SetCamType, 0, 4, 1)
|
|
||||||
EVT_CALL(SetCamSpeed, 0, EVT_FLOAT(2.0))
|
|
||||||
EVT_CALL(SetCamPitch, 0, EVT_FLOAT(17.0), EVT_FLOAT(-7.0))
|
|
||||||
EVT_CALL(SetCamDistance, 0, 450)
|
|
||||||
EVT_CALL(SetCamPosA, 0, -56, 70)
|
|
||||||
EVT_CALL(SetCamPosB, 0, -90, 40)
|
|
||||||
EVT_CALL(SetCamPosC, 0, 0, 0)
|
|
||||||
EVT_CALL(PanToTarget, 0, 0, 1)
|
|
||||||
EVT_END_THREAD
|
|
||||||
EVT_CALL(PlayerFaceNpc, 0, 1)
|
|
||||||
EVT_USE_BUF(EVT_PTR(N(intTable_80240988)))
|
|
||||||
EVT_LOOP(0)
|
|
||||||
EVT_BUF_READ3(LVar0, LVar1, LVar2)
|
|
||||||
EVT_IF_EQ(LVar0, -10000)
|
|
||||||
EVT_BREAK_LOOP
|
|
||||||
EVT_END_IF
|
|
||||||
EVT_CALL(PlaySoundAtNpc, NPC_SELF, 0x20C8, 0)
|
|
||||||
EVT_CALL(NpcJump0, 0, LVar0, LVar1, LVar2, 12)
|
|
||||||
EVT_WAIT(1)
|
|
||||||
EVT_END_LOOP
|
|
||||||
EVT_EXEC(N(8024081C))
|
|
||||||
EVT_LOOP(0)
|
|
||||||
EVT_BUF_READ3(LVar0, LVar1, LVar2)
|
|
||||||
EVT_IF_EQ(LVar0, -10000)
|
|
||||||
EVT_BREAK_LOOP
|
|
||||||
EVT_END_IF
|
|
||||||
EVT_CALL(PlaySoundAtNpc, NPC_SELF, 0x20C8, 0)
|
|
||||||
EVT_CALL(NpcJump0, 0, LVar0, LVar1, LVar2, 12)
|
|
||||||
EVT_WAIT(1)
|
|
||||||
EVT_END_LOOP
|
|
||||||
EVT_EXEC(N(802408D8))
|
|
||||||
EVT_WAIT(30)
|
|
||||||
EVT_CALL(SetCamType, 0, 6, 1)
|
|
||||||
EVT_CALL(SetCamSpeed, 0, EVT_FLOAT(90.0))
|
|
||||||
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)
|
|
||||||
EVT_CALL(UseSettingsFrom, 0, LVar0, LVar1, LVar2)
|
|
||||||
EVT_CALL(SetPanTarget, 0, LVar0, LVar1, LVar2)
|
|
||||||
EVT_CALL(SetCamDistance, 0, 450)
|
|
||||||
EVT_CALL(PanToTarget, 0, 0, 1)
|
|
||||||
EVT_CALL(WaitForCam, 0, EVT_FLOAT(1.0))
|
|
||||||
EVT_CALL(PanToTarget, 0, 0, 0)
|
|
||||||
EVT_SET(GB_StoryProgress, -22)
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(init_80240E70) = {
|
|
||||||
EVT_IF_GE(GB_StoryProgress, -22)
|
|
||||||
EVT_CALL(RemoveNpc, NPC_SELF)
|
|
||||||
EVT_ELSE
|
|
||||||
EVT_CALL(SetSelfVar, 0, 0)
|
|
||||||
EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(idle_802406CC)))
|
|
||||||
EVT_CALL(BindNpcDefeat, NPC_SELF, EVT_PTR(N(defeat_802409DC)))
|
|
||||||
EVT_END_IF
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
StaticNpc N(npcGroup_80240EEC) = {
|
|
||||||
.id = NPC_TUBBAS_HEART,
|
|
||||||
.settings = &N(npcSettings_802406A0),
|
|
||||||
.pos = { 119.0f, 60.0f, 0.0f },
|
|
||||||
.flags = ENEMY_FLAGS_1 | ENEMY_FLAGS_4 | ENEMY_FLAGS_100 | ENEMY_FLAGS_200 | ENEMY_FLAGS_800 | ENEMY_FLAGS_40000,
|
|
||||||
.init = &N(init_80240E70),
|
|
||||||
.yaw = 270,
|
|
||||||
.drops = {
|
|
||||||
.dropFlags = NPC_DROP_FLAGS_80,
|
|
||||||
.heartDrops = NO_DROPS,
|
|
||||||
.flowerDrops = NO_DROPS,
|
|
||||||
},
|
|
||||||
.animations = {
|
|
||||||
ANIM_TubbasHeart_Anim01,
|
|
||||||
ANIM_TubbasHeart_Anim01,
|
|
||||||
ANIM_TubbasHeart_Anim01,
|
|
||||||
ANIM_TubbasHeart_Anim01,
|
|
||||||
ANIM_TubbasHeart_Anim01,
|
|
||||||
ANIM_TubbasHeart_Anim01,
|
|
||||||
ANIM_TubbasHeart_Anim01,
|
|
||||||
ANIM_TubbasHeart_Anim01,
|
|
||||||
ANIM_TubbasHeart_Anim01,
|
|
||||||
ANIM_TubbasHeart_Anim01,
|
|
||||||
ANIM_TubbasHeart_Anim01,
|
|
||||||
ANIM_TubbasHeart_Anim01,
|
|
||||||
ANIM_TubbasHeart_Anim01,
|
|
||||||
ANIM_TubbasHeart_Anim01,
|
|
||||||
ANIM_TubbasHeart_Anim01,
|
|
||||||
ANIM_TubbasHeart_Anim01,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
NpcGroupList N(npcGroupList_802410DC) = {
|
|
||||||
NPC_GROUP(N(npcGroup_80240EEC), 0x0E0F, BTL_DEFAULT_STAGE),
|
|
||||||
{},
|
|
||||||
};
|
|
@ -2,12 +2,29 @@
|
|||||||
#define NAMESPACE dro_01_Shop
|
#define NAMESPACE dro_01_Shop
|
||||||
|
|
||||||
s32 N(ShopMessages)[] = {
|
s32 N(ShopMessages)[] = {
|
||||||
MSG_Shop_0049, MSG_Shop_004A, MSG_Shop_004B, MSG_Shop_004C,
|
MSG_Shop_0049,
|
||||||
MSG_Shop_004D, MSG_Shop_004E, MSG_Shop_004F, MSG_Shop_0050,
|
MSG_Shop_004A,
|
||||||
MSG_Shop_0051, MSG_Shop_0052, MSG_Shop_0053, MSG_Shop_0054,
|
MSG_Shop_004B,
|
||||||
MSG_Shop_0055, MSG_Shop_0056, MSG_Shop_0057, MSG_Shop_0058,
|
MSG_Shop_004C,
|
||||||
MSG_Shop_0059, MSG_Shop_005A, MSG_Shop_005B, MSG_Shop_005C,
|
MSG_Shop_004D,
|
||||||
MSG_Shop_005D, MSG_Shop_005E, MSG_Shop_005F,
|
MSG_Shop_004E,
|
||||||
|
MSG_Shop_004F,
|
||||||
|
MSG_Shop_0050,
|
||||||
|
MSG_Shop_0051,
|
||||||
|
MSG_Shop_0052,
|
||||||
|
MSG_Shop_0053,
|
||||||
|
MSG_Shop_0054,
|
||||||
|
MSG_Shop_0055,
|
||||||
|
MSG_Shop_0056,
|
||||||
|
MSG_Shop_0057,
|
||||||
|
MSG_Shop_0058,
|
||||||
|
MSG_Shop_0059,
|
||||||
|
MSG_Shop_005A,
|
||||||
|
MSG_Shop_005B,
|
||||||
|
MSG_Shop_005C,
|
||||||
|
MSG_Shop_005D,
|
||||||
|
MSG_Shop_005E,
|
||||||
|
MSG_Shop_005F,
|
||||||
};
|
};
|
||||||
|
|
||||||
ShopItemData N(Inventory)[] = {
|
ShopItemData N(Inventory)[] = {
|
||||||
|
@ -10,7 +10,7 @@ NpcSettings N(NpcSettings_Dummy) = {
|
|||||||
#include "world/common/npc/Tolielup.inc.c"
|
#include "world/common/npc/Tolielup.inc.c"
|
||||||
#include "world/common/npc/StarSpirit.inc.c"
|
#include "world/common/npc/StarSpirit.inc.c"
|
||||||
|
|
||||||
API_CALLABLE(N(UpgradeStarPower)) {
|
API_CALLABLE(N(UpgradeStarPowerCh6)) {
|
||||||
set_max_SP(6);
|
set_max_SP(6);
|
||||||
gPlayerData.curHP = gPlayerData.curMaxHP;
|
gPlayerData.curHP = gPlayerData.curMaxHP;
|
||||||
gPlayerData.curFP = gPlayerData.curMaxFP;
|
gPlayerData.curFP = gPlayerData.curMaxFP;
|
||||||
@ -498,7 +498,7 @@ EvtScript N(EVS_Scene_RescuedKlevar) = {
|
|||||||
EVT_CALL(SetPlayerAnimation, ANIM_Mario_10002)
|
EVT_CALL(SetPlayerAnimation, ANIM_Mario_10002)
|
||||||
EVT_CALL(SetNpcAnimation, NPC_Klevar, ANIM_WorldKlevar_Idle)
|
EVT_CALL(SetNpcAnimation, NPC_Klevar, ANIM_WorldKlevar_Idle)
|
||||||
EVT_CALL(EnableNpcAI, NPC_Klevar, TRUE)
|
EVT_CALL(EnableNpcAI, NPC_Klevar, TRUE)
|
||||||
EVT_CALL(N(UpgradeStarPower))
|
EVT_CALL(N(UpgradeStarPowerCh6))
|
||||||
EVT_CALL(ShowMessageAtScreenPos, MSG_Menus_0196, 160, 40)
|
EVT_CALL(ShowMessageAtScreenPos, MSG_Menus_0196, 160, 40)
|
||||||
EVT_WAIT(10)
|
EVT_WAIT(10)
|
||||||
EVT_CALL(GetNpcPos, NPC_Klevar, LVar0, LVar1, LVar2)
|
EVT_CALL(GetNpcPos, NPC_Klevar, LVar0, LVar1, LVar2)
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
#include "hos_00.h"
|
#include "hos_00.h"
|
||||||
|
|
||||||
extern char wMapBgName[];
|
|
||||||
|
|
||||||
ApiStatus func_80240000_A0BCF0(Evt* script, s32 isInitialCall) {
|
ApiStatus func_80240000_A0BCF0(Evt* script, s32 isInitialCall) {
|
||||||
if (gGameStatusPtr->entryID == 3) {
|
if (gGameStatusPtr->entryID == 3) {
|
||||||
sprintf(wMapBgName, "hos_bg\0\0\0\0\0\0\0\0\0");
|
sprintf(wMapBgName, "hos_bg\0\0\0\0\0\0\0\0\0");
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "sprite/npc/StoneChomp.h"
|
#include "sprite/npc/StoneChomp.h"
|
||||||
|
|
||||||
ApiStatus N(StoneChompFXA)(Evt* script, s32 isInitialCall) {
|
API_CALLABLE(N(StoneChompFXA)) {
|
||||||
NpcBlueprint bp;
|
NpcBlueprint bp;
|
||||||
NpcBlueprint* bpPtr = &bp;
|
NpcBlueprint* bpPtr = &bp;
|
||||||
NpcChompBlur* blurData;
|
NpcChompBlur* blurData;
|
||||||
@ -34,7 +34,7 @@ ApiStatus N(StoneChompFXA)(Evt* script, s32 isInitialCall) {
|
|||||||
return ApiStatus_DONE2;
|
return ApiStatus_DONE2;
|
||||||
}
|
}
|
||||||
|
|
||||||
ApiStatus N(StoneChompFXB)(Evt* script, s32 isInitialCall) {
|
API_CALLABLE(N(StoneChompFXB)) {
|
||||||
NpcChompBlur* blurData;
|
NpcChompBlur* blurData;
|
||||||
Npc* ownerNpc;
|
Npc* ownerNpc;
|
||||||
Npc* childNpc;
|
Npc* childNpc;
|
||||||
@ -110,7 +110,7 @@ ApiStatus N(StoneChompFXB)(Evt* script, s32 isInitialCall) {
|
|||||||
return ApiStatus_BLOCK;
|
return ApiStatus_BLOCK;
|
||||||
}
|
}
|
||||||
|
|
||||||
ApiStatus N(StoneChompFXC)(Evt* script, s32 isInitialCall) {
|
API_CALLABLE(N(StoneChompFXC)) {
|
||||||
NpcChompBlur* blurData = get_npc_safe(script->owner2.npcID)->blur.chomp;
|
NpcChompBlur* blurData = get_npc_safe(script->owner2.npcID)->blur.chomp;
|
||||||
s32 i;
|
s32 i;
|
||||||
|
|
||||||
|
@ -20,6 +20,44 @@ enum {
|
|||||||
AB_ISK_F = AreaByte(15),
|
AB_ISK_F = AreaByte(15),
|
||||||
};
|
};
|
||||||
|
|
||||||
#define AF_ISK(index) AreaFlag(index)
|
enum {
|
||||||
|
AF_ISK03_SandSwitchActivated = AreaFlag(1),
|
||||||
|
AF_ISK06_SandSwitchActivated = AreaFlag(2),
|
||||||
|
AF_ISK12_SandSwitchActivated = AreaFlag(3),
|
||||||
|
AF_ISK02_Sarcophagus1Opened = AreaFlag(4),
|
||||||
|
AF_ISK02_Sarcophagus2Opened = AreaFlag(5),
|
||||||
|
AF_ISK02_Sarcophagus3Opened = AreaFlag(6),
|
||||||
|
AF_ISK02_OpeningSarcophagus1 = AreaFlag(7),
|
||||||
|
AF_ISK02_OpeningSarcophagus2 = AreaFlag(8),
|
||||||
|
AF_ISK02_OpeningSarcophagus3 = AreaFlag(9),
|
||||||
|
AF_ISK07_OpeningSarcophagus1 = AreaFlag(10),
|
||||||
|
AF_ISK07_OpeningSarcophagus2 = AreaFlag(11),
|
||||||
|
AF_ISK07_OpeningSarcophagus3 = AreaFlag(12),
|
||||||
|
AF_ISK07_MummiesReleased = AreaFlag(13),
|
||||||
|
AF_ISK07_FlippingRedStairs = AreaFlag(14),
|
||||||
|
AF_ISK09_FlippingBlueStairs = AreaFlag(15),
|
||||||
|
AF_ISK09_FlippingRedStairs = AreaFlag(16),
|
||||||
|
AF_ISK05_StoneChompDefeated = AreaFlag(17),
|
||||||
|
AF_ISK12_StairSwitchActivated = AreaFlag(18),
|
||||||
|
AF_ISK14_StoneChompDefeated = AreaFlag(19),
|
||||||
|
};
|
||||||
|
|
||||||
|
extern MapSettings isk_01_settings;
|
||||||
|
extern MapSettings isk_02_settings;
|
||||||
|
extern MapSettings isk_03_settings;
|
||||||
|
extern MapSettings isk_04_settings;
|
||||||
|
extern MapSettings isk_05_settings;
|
||||||
|
extern MapSettings isk_06_settings;
|
||||||
|
extern MapSettings isk_07_settings;
|
||||||
|
extern MapSettings isk_08_settings;
|
||||||
|
extern MapSettings isk_09_settings;
|
||||||
|
extern MapSettings isk_10_settings;
|
||||||
|
extern MapSettings isk_11_settings;
|
||||||
|
extern MapSettings isk_12_settings;
|
||||||
|
extern MapSettings isk_13_settings;
|
||||||
|
extern MapSettings isk_14_settings;
|
||||||
|
extern MapSettings isk_16_settings;
|
||||||
|
extern MapSettings isk_18_settings;
|
||||||
|
extern MapSettings isk_19_settings;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
#include "isk_01.h"
|
|
||||||
|
|
||||||
static char* N(exit_str_0) = "sbk_02";
|
|
||||||
static char* N(exit_str_1) = "isk_02";
|
|
||||||
|
|
@ -2,8 +2,16 @@
|
|||||||
/// @brief Dry Dry Ruins - Entrance
|
/// @brief Dry Dry Ruins - Entrance
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "../isk.h"
|
|
||||||
#include "message_ids.h"
|
#include "message_ids.h"
|
||||||
#include "map.h"
|
#include "map.h"
|
||||||
|
|
||||||
|
#include "../isk.h"
|
||||||
|
#include "mapfs/isk_01_shape.h"
|
||||||
|
#include "mapfs/isk_01_hit.h"
|
||||||
|
|
||||||
#define NAMESPACE isk_01
|
#define NAMESPACE isk_01
|
||||||
|
|
||||||
|
extern EvtScript N(EVS_Main);
|
||||||
|
extern EvtScript N(EVS_SetupMusic);
|
||||||
|
extern EvtScript N(EVS_SetupHaze);
|
||||||
|
extern EvtScript N(EVS_MakeEntities);
|
||||||
|
14
src/world/area_isk/isk_01/isk_01_0_header.c
Normal file
14
src/world/area_isk/isk_01/isk_01_0_header.c
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#include "isk_01.h"
|
||||||
|
|
||||||
|
EntryList N(Entrances) = {
|
||||||
|
[isk_01_ENTRY_0] { -576.0, 0.0, -71.0, 179.0 },
|
||||||
|
[isk_01_ENTRY_1] { -555.0, 0.0, 170.0, 350.0 },
|
||||||
|
};
|
||||||
|
|
||||||
|
MapSettings N(settings) = {
|
||||||
|
.main = &N(EVS_Main),
|
||||||
|
.entryList = &N(Entrances),
|
||||||
|
.entryCount = ENTRY_COUNT(N(Entrances)),
|
||||||
|
.background = &gBackgroundImage,
|
||||||
|
.tattle = { MSG_MapTattle_isk_01 },
|
||||||
|
};
|
31
src/world/area_isk/isk_01/isk_01_1_music.c
Normal file
31
src/world/area_isk/isk_01/isk_01_1_music.c
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#include "isk_01.h"
|
||||||
|
|
||||||
|
EvtScript N(EVS_SetupMusic) = {
|
||||||
|
EVT_IF_EQ(GF_ISK01_FirstWarning, FALSE)
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_CALL(FadeInMusic, 1, SONG_TUTANKOOPA_WARNING, 0, 2000, 0, 127)
|
||||||
|
EVT_CALL(FadeOutMusic, 0, 2000)
|
||||||
|
EVT_CALL(DisablePlayerInput, TRUE)
|
||||||
|
EVT_WAIT(20)
|
||||||
|
EVT_SET_GROUP(EVT_GROUP_00)
|
||||||
|
EVT_CALL(SetTimeFreezeMode, TIME_FREEZE_PARTIAL)
|
||||||
|
EVT_CALL(ShowMessageAtScreenPos, MSG_CH2_00DD, 160, 40)
|
||||||
|
EVT_SET(GF_ISK01_FirstWarning, TRUE)
|
||||||
|
EVT_CALL(DisablePlayerInput, FALSE)
|
||||||
|
EVT_CALL(SetTimeFreezeMode, TIME_FREEZE_NORMAL)
|
||||||
|
EVT_CALL(FadeInMusic, 0, SONG_DRY_DRY_RUINS, 0, 2000, 0, 127)
|
||||||
|
EVT_CALL(FadeOutMusic, 1, 2000)
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_SWITCH(GB_StoryProgress)
|
||||||
|
EVT_CASE_LT(STORY_CH2_SOLVED_ARTIFACT_PUZZLE)
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8)
|
||||||
|
EVT_CASE_LT(STORY_CH2_DEFEATED_TUTANKOOPA)
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_RUINS_BASEMENT, 0, 8)
|
||||||
|
EVT_CASE_GE(STORY_CH2_DEFEATED_TUTANKOOPA)
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8)
|
||||||
|
EVT_END_SWITCH
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
38
src/world/area_isk/isk_01/isk_01_2_main.c
Normal file
38
src/world/area_isk/isk_01/isk_01_2_main.c
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
#include "isk_01.h"
|
||||||
|
|
||||||
|
EvtScript N(D_80240220_978360) = EVT_EXIT_WALK(40, isk_01_ENTRY_0, "sbk_02", sbk_02_ENTRY_4);
|
||||||
|
EvtScript N(D_8024027C_9783BC) = EVT_EXIT_WALK(40, isk_01_ENTRY_1, "isk_02", isk_02_ENTRY_0);
|
||||||
|
|
||||||
|
EvtScript N(EVS_BindExitTriggers) = {
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(D_80240220_978360)), TRIGGER_FLOOR_ABOVE, COLLIDER_deiliw, 1, 0)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(D_8024027C_9783BC)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilie, 1, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_EnterMap) = {
|
||||||
|
EVT_CALL(GetLoadType, LVar1)
|
||||||
|
EVT_IF_EQ(LVar1, LOAD_FROM_FILE_SELECT)
|
||||||
|
EVT_EXEC(EnterSavePoint)
|
||||||
|
EVT_EXEC(N(EVS_BindExitTriggers))
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers)))
|
||||||
|
EVT_EXEC(EnterWalk)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_Main) = {
|
||||||
|
EVT_SET(GB_WorldLocation, LOCATION_DRY_DRY_RUINS)
|
||||||
|
EVT_CALL(SetSpriteShading, SHADING_NONE)
|
||||||
|
EVT_SETUP_CAMERA_ALT_NO_LEAD()
|
||||||
|
EVT_SET(GF_MAP_DryDryRuins, TRUE)
|
||||||
|
EVT_EXEC_WAIT(N(EVS_MakeEntities))
|
||||||
|
EVT_EXEC(N(EVS_SetupMusic))
|
||||||
|
EVT_EXEC(N(EVS_SetupHaze))
|
||||||
|
EVT_EXEC(N(EVS_EnterMap))
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
24
src/world/area_isk/isk_01/isk_01_3_haze.c
Normal file
24
src/world/area_isk/isk_01/isk_01_3_haze.c
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#include "isk_01.h"
|
||||||
|
|
||||||
|
Gfx N(HazePreGfx)[] = {
|
||||||
|
gsDPSetAlphaDither(G_AD_NOISE),
|
||||||
|
gsSPEndDisplayList(),
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_SetupHaze) = {
|
||||||
|
EVT_CALL(SetTexPanner, MODEL_o99, TEX_PANNER_2)
|
||||||
|
EVT_CALL(EnableTexPanning, MODEL_o99, TRUE)
|
||||||
|
EVT_SET(LVar0, 0)
|
||||||
|
EVT_CALL(SetCustomGfx, 0, EVT_PTR(N(HazePreGfx)), NULL)
|
||||||
|
EVT_CALL(SetModelFlags, MODEL_o99, MODEL_FLAGS_USES_CUSTOM_GFX, TRUE)
|
||||||
|
EVT_LABEL(0)
|
||||||
|
EVT_ADD(LVar0, 70)
|
||||||
|
EVT_CALL(SetTexPanOffset, TEX_PANNER_2, TEX_PANNER_MAIN, LVar0, 0)
|
||||||
|
EVT_IF_GT(LVar0, 0x4000)
|
||||||
|
EVT_ADD(LVar0, -0x4000)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_GOTO(0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
8
src/world/area_isk/isk_01/isk_01_4_entity.c
Normal file
8
src/world/area_isk/isk_01/isk_01_4_entity.c
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#include "isk_01.h"
|
||||||
|
#include "entity.h"
|
||||||
|
|
||||||
|
EvtScript N(EVS_MakeEntities) = {
|
||||||
|
EVT_CALL(MakeEntity, EVT_PTR(Entity_SavePoint), -530, 60, 43, 0, MAKE_ENTITY_END)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
@ -1,6 +0,0 @@
|
|||||||
#include "isk_02.h"
|
|
||||||
|
|
||||||
static char* N(exit_str_0) = "isk_01";
|
|
||||||
static char* N(exit_str_1) = "isk_03";
|
|
||||||
|
|
||||||
#include "world/common/todo/RemovePadlock.inc.c"
|
|
@ -1,14 +0,0 @@
|
|||||||
#include "isk_02.h"
|
|
||||||
|
|
||||||
ApiStatus func_80240040_978750(Evt* script, s32 isInitialCall) {
|
|
||||||
Bytecode* args = script->ptrReadPos;
|
|
||||||
f32 x = evt_get_variable(script, *args++);
|
|
||||||
f32 y = evt_get_variable(script, *args++);
|
|
||||||
|
|
||||||
if (dist2D(x, y, gPlayerStatus.position.x, gPlayerStatus.position.z) > 250.0f) {
|
|
||||||
script->varTable[0] = FALSE;
|
|
||||||
} else {
|
|
||||||
script->varTable[0] = TRUE;
|
|
||||||
}
|
|
||||||
return ApiStatus_DONE2;
|
|
||||||
}
|
|
@ -1,2 +0,0 @@
|
|||||||
#include "isk_02.h"
|
|
||||||
#include "world/common/todo/SetNpcB5_3.inc.c"
|
|
@ -2,8 +2,29 @@
|
|||||||
/// @brief Dry Dry Ruins - Sarcophagus Hall 1
|
/// @brief Dry Dry Ruins - Sarcophagus Hall 1
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "../isk.h"
|
|
||||||
#include "message_ids.h"
|
#include "message_ids.h"
|
||||||
#include "map.h"
|
#include "map.h"
|
||||||
|
|
||||||
|
#include "../isk.h"
|
||||||
|
#include "mapfs/isk_02_shape.h"
|
||||||
|
#include "mapfs/isk_02_hit.h"
|
||||||
|
|
||||||
|
#include "sprite/npc/Pokey.h"
|
||||||
|
|
||||||
|
enum {
|
||||||
|
NPC_Pokey_01 = 0,
|
||||||
|
NPC_Pokey_02 = 1,
|
||||||
|
NPC_Pokey_03 = 2,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
MV_EntityID_Padlock = MapVar(0),
|
||||||
|
};
|
||||||
|
|
||||||
#define NAMESPACE isk_02
|
#define NAMESPACE isk_02
|
||||||
|
|
||||||
|
extern EvtScript N(EVS_Main);
|
||||||
|
extern EvtScript N(EVS_SetupLock);
|
||||||
|
extern EvtScript N(EVS_SetupSarcophagi);
|
||||||
|
extern EvtScript N(EVS_MakeEntities);
|
||||||
|
extern NpcGroupList N(DefaultNPCs);
|
||||||
|
15
src/world/area_isk/isk_02/isk_02_0_header.c
Normal file
15
src/world/area_isk/isk_02/isk_02_0_header.c
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#include "isk_02.h"
|
||||||
|
|
||||||
|
EntryList N(Entrances) = {
|
||||||
|
[isk_02_ENTRY_0] { -484.0, 0.0, 302.0, 140.0 },
|
||||||
|
[isk_02_ENTRY_1] { 258.0, 50.0, 486.0, 250.0 },
|
||||||
|
[isk_02_ENTRY_2] { 283.0, -80.0, 530.0, 250.0 },
|
||||||
|
};
|
||||||
|
|
||||||
|
MapSettings N(settings) = {
|
||||||
|
.main = &N(EVS_Main),
|
||||||
|
.entryList = &N(Entrances),
|
||||||
|
.entryCount = ENTRY_COUNT(N(Entrances)),
|
||||||
|
.background = &gBackgroundImage,
|
||||||
|
.tattle = { MSG_MapTattle_isk_02 },
|
||||||
|
};
|
35
src/world/area_isk/isk_02/isk_02_1_main.c
Normal file
35
src/world/area_isk/isk_02/isk_02_1_main.c
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
#include "isk_02.h"
|
||||||
|
|
||||||
|
EvtScript N(EVS_ExitWalk_isk_01_1) = EVT_EXIT_WALK(40, isk_02_ENTRY_0, "isk_01", isk_01_ENTRY_1);
|
||||||
|
EvtScript N(EVS_ExitWalk_isk_03_0) = EVT_EXIT_WALK(40, isk_02_ENTRY_1, "isk_03", isk_03_ENTRY_0);
|
||||||
|
EvtScript N(EVS_ExitWalk_isk_03_1) = EVT_EXIT_WALK(40, isk_02_ENTRY_2, "isk_03", isk_03_ENTRY_1);
|
||||||
|
|
||||||
|
EvtScript N(EVS_BindExitTriggers) = {
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_isk_01_1)), TRIGGER_FLOOR_ABOVE, COLLIDER_deiliw, 1, 0)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_isk_03_0)), TRIGGER_FLOOR_ABOVE, COLLIDER_deiline, 1, 0)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_isk_03_1)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilie, 1, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_Main) = {
|
||||||
|
EVT_SET(GB_WorldLocation, LOCATION_DRY_DRY_RUINS)
|
||||||
|
EVT_CALL(SetSpriteShading, SHADING_NONE)
|
||||||
|
EVT_SETUP_CAMERA_ALT_NO_LEAD()
|
||||||
|
EVT_CALL(MakeNpcs, TRUE, EVT_PTR(N(DefaultNPCs)))
|
||||||
|
EVT_EXEC_WAIT(N(EVS_MakeEntities))
|
||||||
|
EVT_EXEC_WAIT(N(EVS_SetupLock))
|
||||||
|
EVT_EXEC(N(EVS_SetupSarcophagi))
|
||||||
|
EVT_SWITCH(GB_StoryProgress)
|
||||||
|
EVT_CASE_LT(STORY_CH2_SOLVED_ARTIFACT_PUZZLE)
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8)
|
||||||
|
EVT_CASE_LT(STORY_CH2_DEFEATED_TUTANKOOPA)
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_RUINS_BASEMENT, 0, 8)
|
||||||
|
EVT_CASE_GE(STORY_CH2_DEFEATED_TUTANKOOPA)
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8)
|
||||||
|
EVT_END_SWITCH
|
||||||
|
EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers)))
|
||||||
|
EVT_EXEC(EnterWalk)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
54
src/world/area_isk/isk_02/isk_02_2_lock.c
Normal file
54
src/world/area_isk/isk_02/isk_02_2_lock.c
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
#include "isk_02.h"
|
||||||
|
|
||||||
|
#include "world/common/todo/RemovePadlock.inc.c"
|
||||||
|
|
||||||
|
s32 N(KeyList)[] = {
|
||||||
|
ITEM_RUINS_KEY,
|
||||||
|
ITEM_NONE,
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_UnlockDoor) = {
|
||||||
|
EVT_CALL(ShowKeyChoicePopup)
|
||||||
|
EVT_IF_EQ(LVar0, 0)
|
||||||
|
EVT_CALL(ShowMessageAtScreenPos, MSG_Menus_00D8, 160, 40)
|
||||||
|
EVT_CALL(CloseChoicePopup)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_IF_EQ(LVar0, -1)
|
||||||
|
EVT_CALL(CloseChoicePopup)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(PlaySoundAt, SOUND_269, 0, 272, 60, 486)
|
||||||
|
EVT_CALL(RemoveKeyItemAt, LVar1)
|
||||||
|
EVT_SET(GF_ISK02_UnlockedDoor, TRUE)
|
||||||
|
EVT_SET(LVar0, MV_EntityID_Padlock)
|
||||||
|
EVT_CALL(N(RemovePadlock))
|
||||||
|
EVT_SET(LVar1, 0)
|
||||||
|
EVT_WAIT(5)
|
||||||
|
EVT_CALL(PlaySoundAtCollider, COLLIDER_deilittne, SOUND_265, 0)
|
||||||
|
EVT_CALL(MakeLerp, 0, 65, 65, EASING_LINEAR)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_CALL(TranslateGroup, MODEL_g304, 0, LVar0, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 1)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilittne, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(CloseChoicePopup)
|
||||||
|
EVT_UNBIND
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_SetupLock) = {
|
||||||
|
EVT_IF_EQ(GF_ISK02_UnlockedDoor, FALSE)
|
||||||
|
EVT_CALL(MakeTransformGroup, MODEL_g304)
|
||||||
|
EVT_BIND_PADLOCK(EVT_PTR(N(EVS_UnlockDoor)), TRIGGER_WALL_PRESS_A, EVT_ENTITY_INDEX(0), EVT_PTR(N(KeyList)), 0, 1)
|
||||||
|
EVT_ELSE
|
||||||
|
EVT_CALL(EnableGroup, MODEL_g304, FALSE)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilittne, COLLIDER_FLAGS_SURFACE_TYPE_MASK | COLLIDER_FLAGS_SAFE_FLOOR | COLLIDER_FLAGS_IGNORE_SHELL | COLLIDER_FLAGS_IGNORE_PLAYER | COLLIDER_FLAGS_80000 | 0x7FF47E00)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
125
src/world/area_isk/isk_02/isk_02_3_ambush.c
Normal file
125
src/world/area_isk/isk_02/isk_02_3_ambush.c
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
#include "isk_02.h"
|
||||||
|
|
||||||
|
extern EvtScript N(EVS_ManageSarcophagus1);
|
||||||
|
extern EvtScript N(EVS_ManageSarcophagus2);
|
||||||
|
extern EvtScript N(EVS_ManageSarcophagus3);
|
||||||
|
|
||||||
|
API_CALLABLE(N(AwaitPlayerMummyAmbush)) {
|
||||||
|
Bytecode* args = script->ptrReadPos;
|
||||||
|
f32 x = evt_get_variable(script, *args++);
|
||||||
|
f32 y = evt_get_variable(script, *args++);
|
||||||
|
|
||||||
|
if (dist2D(x, y, gPlayerStatus.position.x, gPlayerStatus.position.z) > 250.0f) {
|
||||||
|
script->varTable[0] = FALSE;
|
||||||
|
} else {
|
||||||
|
script->varTable[0] = TRUE;
|
||||||
|
}
|
||||||
|
return ApiStatus_DONE2;
|
||||||
|
}
|
||||||
|
|
||||||
|
EvtScript N(EVS_SetupSarcophagi) = {
|
||||||
|
EVT_SET(AF_ISK02_OpeningSarcophagus1, FALSE)
|
||||||
|
EVT_SET(AF_ISK02_OpeningSarcophagus2, FALSE)
|
||||||
|
EVT_SET(AF_ISK02_OpeningSarcophagus3, FALSE)
|
||||||
|
EVT_EXEC(N(EVS_ManageSarcophagus1))
|
||||||
|
EVT_EXEC(N(EVS_ManageSarcophagus2))
|
||||||
|
EVT_EXEC(N(EVS_ManageSarcophagus3))
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_h1o, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_h2o, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_h3o, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_OpenSarcophagus) = {
|
||||||
|
EVT_IF_EQ(LVar0, 0)
|
||||||
|
EVT_CALL(PlaySoundAtModel, LVar3, SOUND_1D1, 0)
|
||||||
|
EVT_CALL(TranslateModel, LVar3, 0, 0, 13)
|
||||||
|
EVT_WAIT(3)
|
||||||
|
EVT_CALL(MakeLerp, 0, 35, 9, EASING_COS_IN_OUT)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_SET(LVar2, LVar0)
|
||||||
|
EVT_MULF(LVar2, EVT_FLOAT(1.1))
|
||||||
|
EVT_CALL(TranslateModel, LVar3, LVar2, 0, 13)
|
||||||
|
EVT_CALL(RotateModel, LVar3, LVar0, 0, 1, 0)
|
||||||
|
EVT_ADD(LVar0, 1)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_NE(LVar1, 0)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_WAIT(3)
|
||||||
|
EVT_ELSE
|
||||||
|
EVT_CALL(TranslateModel, LVar3, EVT_FLOAT(38.5), 0, 13)
|
||||||
|
EVT_CALL(RotateModel, LVar3, 35, 0, 1, 0)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_ManageSarcophagus1) = {
|
||||||
|
EVT_IF_EQ(AF_ISK02_Sarcophagus1Opened, FALSE)
|
||||||
|
EVT_LABEL(5)
|
||||||
|
EVT_CALL(N(AwaitPlayerMummyAmbush), -210, 580)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar0, 0)
|
||||||
|
EVT_GOTO(5)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_SET(AF_ISK02_OpeningSarcophagus1, TRUE)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_Pokey_01, NPC_FLAG_2, FALSE)
|
||||||
|
EVT_SET(LVar0, AF_ISK02_Sarcophagus1Opened)
|
||||||
|
EVT_SET(LVar3, MODEL_g346)
|
||||||
|
EVT_EXEC_WAIT(N(EVS_OpenSarcophagus))
|
||||||
|
EVT_SET(AF_ISK02_OpeningSarcophagus1, FALSE)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_h1c, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_CLEAR_BITS, COLLIDER_h1o, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_SET(AF_ISK02_Sarcophagus1Opened, TRUE)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_ManageSarcophagus2) = {
|
||||||
|
EVT_IF_EQ(AF_ISK02_Sarcophagus2Opened, FALSE)
|
||||||
|
EVT_LABEL(5)
|
||||||
|
EVT_CALL(N(AwaitPlayerMummyAmbush), -30, 670)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar0, 0)
|
||||||
|
EVT_GOTO(5)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(MakeItemEntity, ITEM_SPIKE_SHIELD, -133, 1, 500, ITEM_SPAWN_MODE_FIXED_NEVER_VANISH, GF_ISK02_Item_SpikeShield)
|
||||||
|
EVT_SET(AF_ISK02_OpeningSarcophagus2, TRUE)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_Pokey_02, NPC_FLAG_2, FALSE)
|
||||||
|
EVT_SET(LVar0, AF_ISK02_Sarcophagus2Opened)
|
||||||
|
EVT_SET(LVar3, MODEL_g348)
|
||||||
|
EVT_EXEC_WAIT(N(EVS_OpenSarcophagus))
|
||||||
|
EVT_SET(AF_ISK02_OpeningSarcophagus2, FALSE)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_h2c, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_CLEAR_BITS, COLLIDER_h2o, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_SET(AF_ISK02_Sarcophagus2Opened, TRUE)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_ManageSarcophagus3) = {
|
||||||
|
EVT_IF_EQ(AF_ISK02_Sarcophagus3Opened, FALSE)
|
||||||
|
EVT_LABEL(5)
|
||||||
|
EVT_CALL(N(AwaitPlayerMummyAmbush), 220, 600)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar0, 0)
|
||||||
|
EVT_GOTO(5)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_SET(AF_ISK02_OpeningSarcophagus3, TRUE)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_Pokey_03, NPC_FLAG_2, FALSE)
|
||||||
|
EVT_SET(LVar0, AF_ISK02_Sarcophagus3Opened)
|
||||||
|
EVT_SET(LVar3, MODEL_g350)
|
||||||
|
EVT_EXEC_WAIT(N(EVS_OpenSarcophagus))
|
||||||
|
EVT_SET(AF_ISK02_OpeningSarcophagus3, FALSE)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_h3c, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_CLEAR_BITS, COLLIDER_h3o, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_SET(AF_ISK02_Sarcophagus3Opened, TRUE)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
11
src/world/area_isk/isk_02/isk_02_4_entity.c
Normal file
11
src/world/area_isk/isk_02/isk_02_4_entity.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#include "isk_02.h"
|
||||||
|
#include "entity.h"
|
||||||
|
|
||||||
|
EvtScript N(EVS_MakeEntities) = {
|
||||||
|
EVT_IF_EQ(GF_ISK02_UnlockedDoor, FALSE)
|
||||||
|
EVT_CALL(MakeEntity, EVT_PTR(Entity_Padlock), 272, 60, 486, 300, MAKE_ENTITY_END)
|
||||||
|
EVT_SET(MV_EntityID_Padlock, LVar0)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
157
src/world/area_isk/isk_02/isk_02_5_npc.c
Normal file
157
src/world/area_isk/isk_02/isk_02_5_npc.c
Normal file
@ -0,0 +1,157 @@
|
|||||||
|
#include "isk_02.h"
|
||||||
|
|
||||||
|
#include "world/common/enemy/complete/PokeyMummy.inc.c"
|
||||||
|
|
||||||
|
EvtScript N(EVS_NpcIdle_Pokey_01) = {
|
||||||
|
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAGS_100000 | ENEMY_FLAGS_IGNORE_TOUCH | ENEMY_FLAGS_IGNORE_JUMP | ENEMY_FLAGS_IGNORE_HAMMER | ENEMY_FLAGS_10000000, 1)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_2, TRUE)
|
||||||
|
EVT_LABEL(1)
|
||||||
|
EVT_IF_EQ(AF_ISK02_OpeningSarcophagus1, FALSE)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_GOTO(1)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_WAIT(15)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_40, TRUE)
|
||||||
|
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAGS_100000 | ENEMY_FLAGS_IGNORE_TOUCH | ENEMY_FLAGS_IGNORE_JUMP | ENEMY_FLAGS_IGNORE_HAMMER | ENEMY_FLAGS_10000000, 0)
|
||||||
|
EVT_CALL(NpcMoveTo, NPC_SELF, -315, 455, 10)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_40, FALSE)
|
||||||
|
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAGS_40000000, 1)
|
||||||
|
EVT_CALL(BindNpcAI, NPC_SELF, EVT_PTR(N(EVS_NpcAI_PokeyMummy)))
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_NpcIdle_Pokey_02) = {
|
||||||
|
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAGS_100000 | ENEMY_FLAGS_IGNORE_TOUCH | ENEMY_FLAGS_IGNORE_JUMP | ENEMY_FLAGS_IGNORE_HAMMER | ENEMY_FLAGS_10000000, 1)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_2, TRUE)
|
||||||
|
EVT_LABEL(1)
|
||||||
|
EVT_IF_EQ(AF_ISK02_OpeningSarcophagus2, FALSE)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_GOTO(1)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_WAIT(15)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_40, TRUE)
|
||||||
|
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAGS_100000 | ENEMY_FLAGS_IGNORE_TOUCH | ENEMY_FLAGS_IGNORE_JUMP | ENEMY_FLAGS_IGNORE_HAMMER | ENEMY_FLAGS_10000000, 0)
|
||||||
|
EVT_CALL(NpcMoveTo, NPC_SELF, -145, 535, 10)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_40, FALSE)
|
||||||
|
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAGS_40000000, 1)
|
||||||
|
EVT_CALL(BindNpcAI, NPC_SELF, EVT_PTR(N(EVS_NpcAI_PokeyMummy)))
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_NpcIdle_Pokey_03) = {
|
||||||
|
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAGS_100000 | ENEMY_FLAGS_IGNORE_TOUCH | ENEMY_FLAGS_IGNORE_JUMP | ENEMY_FLAGS_IGNORE_HAMMER | ENEMY_FLAGS_10000000, 1)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_2, TRUE)
|
||||||
|
EVT_LABEL(1)
|
||||||
|
EVT_IF_EQ(AF_ISK02_OpeningSarcophagus3, FALSE)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_GOTO(1)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_WAIT(15)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_40, TRUE)
|
||||||
|
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAGS_100000 | ENEMY_FLAGS_IGNORE_TOUCH | ENEMY_FLAGS_IGNORE_JUMP | ENEMY_FLAGS_IGNORE_HAMMER | ENEMY_FLAGS_10000000, 0)
|
||||||
|
EVT_CALL(NpcMoveTo, NPC_SELF, 50, 550, 10)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_40, FALSE)
|
||||||
|
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAGS_40000000, 1)
|
||||||
|
EVT_CALL(BindNpcAI, NPC_SELF, EVT_PTR(N(EVS_NpcAI_PokeyMummy)))
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_NpcInit_Pokey_01) = {
|
||||||
|
EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_Pokey_01)))
|
||||||
|
EVT_CALL(func_800457C4, 3)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_NpcInit_Pokey_02) = {
|
||||||
|
EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_Pokey_02)))
|
||||||
|
EVT_CALL(func_800457C4, 3)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_NpcInit_Pokey_03) = {
|
||||||
|
EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_Pokey_03)))
|
||||||
|
EVT_CALL(func_800457C4, 3)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_Pokey_01) = {
|
||||||
|
.id = NPC_Pokey_01,
|
||||||
|
.settings = &N(NpcSettings_PokeyMummy),
|
||||||
|
.pos = { -296.0f, 0.0f, 421.0f },
|
||||||
|
.yaw = 304,
|
||||||
|
.flags = ENEMY_FLAGS_200 | ENEMY_FLAGS_800,
|
||||||
|
.init = &N(EVS_NpcInit_Pokey_01),
|
||||||
|
.drops = POKEY_MUMMY_DROPS,
|
||||||
|
.territory = {
|
||||||
|
.wander = {
|
||||||
|
.isFlying = TRUE,
|
||||||
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||||
|
.wanderShape = SHAPE_CYLINDER,
|
||||||
|
.centerPos = { -301, 0, 427 },
|
||||||
|
.wanderSize = { 200 },
|
||||||
|
.detectShape = SHAPE_CYLINDER,
|
||||||
|
.detectPos = { -301, 0, 427 },
|
||||||
|
.detectSize = { 400 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.animations = POKEY_MUMMY_ANIMS,
|
||||||
|
};
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_Pokey_02) = {
|
||||||
|
.id = NPC_Pokey_02,
|
||||||
|
.settings = &N(NpcSettings_PokeyMummy),
|
||||||
|
.pos = { -133.0f, 0.0f, 497.0f },
|
||||||
|
.yaw = 284,
|
||||||
|
.flags = ENEMY_FLAGS_200 | ENEMY_FLAGS_800,
|
||||||
|
.init = &N(EVS_NpcInit_Pokey_02),
|
||||||
|
.drops = POKEY_MUMMY_DROPS,
|
||||||
|
.territory = {
|
||||||
|
.wander = {
|
||||||
|
.isFlying = TRUE,
|
||||||
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||||
|
.wanderShape = SHAPE_CYLINDER,
|
||||||
|
.centerPos = { -134, 0, 495 },
|
||||||
|
.wanderSize = { 200 },
|
||||||
|
.detectShape = SHAPE_CYLINDER,
|
||||||
|
.detectPos = { -140, 0, 510 },
|
||||||
|
.detectSize = { 400 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.animations = POKEY_MUMMY_ANIMS,
|
||||||
|
};
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_Pokey_03) = {
|
||||||
|
.id = NPC_Pokey_03,
|
||||||
|
.settings = &N(NpcSettings_PokeyMummy),
|
||||||
|
.pos = { 45.0f, 0.0f, 505.0f },
|
||||||
|
.yaw = 264,
|
||||||
|
.flags = ENEMY_FLAGS_200 | ENEMY_FLAGS_800,
|
||||||
|
.init = &N(EVS_NpcInit_Pokey_03),
|
||||||
|
.drops = POKEY_MUMMY_DROPS,
|
||||||
|
.territory = {
|
||||||
|
.wander = {
|
||||||
|
.isFlying = TRUE,
|
||||||
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||||
|
.wanderShape = SHAPE_CYLINDER,
|
||||||
|
.centerPos = { 46, 0, 514 },
|
||||||
|
.wanderSize = { 200 },
|
||||||
|
.detectShape = SHAPE_CYLINDER,
|
||||||
|
.detectPos = { 47, 0, 518 },
|
||||||
|
.detectSize = { 400 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.animations = POKEY_MUMMY_ANIMS,
|
||||||
|
};
|
||||||
|
|
||||||
|
NpcGroupList N(DefaultNPCs) = {
|
||||||
|
NPC_GROUP(N(NpcData_Pokey_01), BTL_ISK_PART_1_FORMATION_00, BTL_ISK_PART_1_STAGE_05),
|
||||||
|
NPC_GROUP(N(NpcData_Pokey_02), BTL_ISK_PART_1_FORMATION_00, BTL_ISK_PART_1_STAGE_05),
|
||||||
|
NPC_GROUP(N(NpcData_Pokey_03), BTL_ISK_PART_1_FORMATION_01, BTL_ISK_PART_1_STAGE_05),
|
||||||
|
{}
|
||||||
|
};
|
@ -1,5 +0,0 @@
|
|||||||
#include "isk_03.h"
|
|
||||||
|
|
||||||
static char* N(exit_str_0) = "isk_02";
|
|
||||||
static char* N(exit_str_1) = "isk_04";
|
|
||||||
|
|
@ -2,8 +2,16 @@
|
|||||||
/// @brief Dry Dry Ruins - Sand Drainage Room 1
|
/// @brief Dry Dry Ruins - Sand Drainage Room 1
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "../isk.h"
|
|
||||||
#include "message_ids.h"
|
#include "message_ids.h"
|
||||||
#include "map.h"
|
#include "map.h"
|
||||||
|
|
||||||
|
#include "../isk.h"
|
||||||
|
#include "mapfs/isk_03_shape.h"
|
||||||
|
#include "mapfs/isk_03_hit.h"
|
||||||
|
|
||||||
#define NAMESPACE isk_03
|
#define NAMESPACE isk_03
|
||||||
|
|
||||||
|
extern EvtScript N(EVS_Main);
|
||||||
|
extern EvtScript N(EVS_MakeEntities);
|
||||||
|
extern EvtScript N(EVS_SetupSand);
|
||||||
|
extern EvtScript N(EVS_SetupSwitch);
|
||||||
|
14
src/world/area_isk/isk_03/isk_03_0_header.c
Normal file
14
src/world/area_isk/isk_03/isk_03_0_header.c
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#include "isk_03.h"
|
||||||
|
|
||||||
|
EntryList N(Entrances) = {
|
||||||
|
[isk_03_ENTRY_0] { 369.0, 50.0, 408.0, 59.0 },
|
||||||
|
[isk_03_ENTRY_1] { 401.0, -140.0, 447.0, 59.0 },
|
||||||
|
[isk_03_ENTRY_2] { 557.0, -155.0, 224.0, 209.0 },
|
||||||
|
};
|
||||||
|
|
||||||
|
MapSettings N(settings) = {
|
||||||
|
.main = &N(EVS_Main),
|
||||||
|
.entryList = &N(Entrances),
|
||||||
|
.entryCount = ENTRY_COUNT(N(Entrances)),
|
||||||
|
.tattle = { MSG_MapTattle_isk_03 },
|
||||||
|
};
|
41
src/world/area_isk/isk_03/isk_03_1_main.c
Normal file
41
src/world/area_isk/isk_03/isk_03_1_main.c
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
#include "isk_03.h"
|
||||||
|
|
||||||
|
EvtScript N(EVS_ExitWalk_isk_02_1) = EVT_EXIT_WALK(40, isk_03_ENTRY_0, "isk_02", isk_02_ENTRY_1);
|
||||||
|
EvtScript N(EVS_ExitWalk_isk_02_2) = EVT_EXIT_WALK(40, isk_03_ENTRY_1, "isk_02", isk_02_ENTRY_2);
|
||||||
|
EvtScript N(EVS_ExitWalk_isk_04_0) = EVT_EXIT_WALK(40, isk_03_ENTRY_2, "isk_04", isk_04_ENTRY_0);
|
||||||
|
|
||||||
|
EvtScript N(EVS_BindExitTriggers) = {
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_isk_02_1)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilinw, 1, 0)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_isk_02_2)), TRIGGER_FLOOR_ABOVE, COLLIDER_deiliw, 1, 0)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_isk_04_0)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilie, 1, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_Main) = {
|
||||||
|
EVT_SET(GB_WorldLocation, LOCATION_DRY_DRY_RUINS)
|
||||||
|
EVT_CALL(SetSpriteShading, SHADING_ISK_03)
|
||||||
|
EVT_SETUP_CAMERA_ALT_NO_LEAD()
|
||||||
|
EVT_IF_LT(GB_StoryProgress, STORY_CH2_DRAINED_FIRST_SAND_ROOM)
|
||||||
|
EVT_CALL(SetZoneEnabled, ZONE_o2023, FALSE)
|
||||||
|
EVT_CALL(SetZoneEnabled, ZONE_03, FALSE)
|
||||||
|
EVT_ELSE
|
||||||
|
EVT_CALL(SetZoneEnabled, ZONE_o2023, FALSE)
|
||||||
|
EVT_CALL(SetZoneEnabled, ZONE_o2008, FALSE)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_EXEC_WAIT(N(EVS_MakeEntities))
|
||||||
|
EVT_EXEC(N(EVS_SetupSand))
|
||||||
|
EVT_EXEC(N(EVS_SetupSwitch))
|
||||||
|
EVT_SWITCH(GB_StoryProgress)
|
||||||
|
EVT_CASE_LT(STORY_CH2_SOLVED_ARTIFACT_PUZZLE)
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8)
|
||||||
|
EVT_CASE_LT(STORY_CH2_DEFEATED_TUTANKOOPA)
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_RUINS_BASEMENT, 0, 8)
|
||||||
|
EVT_CASE_GE(STORY_CH2_DEFEATED_TUTANKOOPA)
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8)
|
||||||
|
EVT_END_SWITCH
|
||||||
|
EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers)))
|
||||||
|
EVT_EXEC(EnterWalk)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
294
src/world/area_isk/isk_03/isk_03_2_sand.c
Normal file
294
src/world/area_isk/isk_03/isk_03_2_sand.c
Normal file
@ -0,0 +1,294 @@
|
|||||||
|
#include "isk_03.h"
|
||||||
|
|
||||||
|
EvtScript N(EVS_TexPan_DrippingSand) = {
|
||||||
|
EVT_CALL(SetTexPanner, MODEL_o6000, TEX_PANNER_4)
|
||||||
|
EVT_SET(LVar1, 0)
|
||||||
|
EVT_SET(LVar2, 0)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_ADD(LVar1, -1000)
|
||||||
|
EVT_ADD(LVar2, 200)
|
||||||
|
EVT_CALL(SetTexPanOffset, TEX_PANNER_4, TEX_PANNER_MAIN, 0, LVar1)
|
||||||
|
EVT_CALL(SetTexPanOffset, TEX_PANNER_4, TEX_PANNER_AUX, LVar2, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_LT(GB_StoryProgress, STORY_CH2_DRAINED_FIRST_SAND_ROOM)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(EnableModel, MODEL_o6000, FALSE)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_Camera_LookAtDrain) = {
|
||||||
|
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(1.0))
|
||||||
|
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, 454, 35, 285)
|
||||||
|
EVT_CALL(SetCamDistance, CAM_DEFAULT, 400)
|
||||||
|
EVT_CALL(SetCamPosA, CAM_DEFAULT, 250, 40)
|
||||||
|
EVT_CALL(SetCamPosB, CAM_DEFAULT, 566, -50)
|
||||||
|
EVT_CALL(SetCamPitch, CAM_DEFAULT, EVT_FLOAT(13.6), EVT_FLOAT(-1.5))
|
||||||
|
EVT_CALL(SetPanTarget, CAM_DEFAULT, 429, 35, 278)
|
||||||
|
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_Camera_LookBelow) = {
|
||||||
|
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(0.5))
|
||||||
|
EVT_CALL(SetCamPitch, CAM_DEFAULT, EVT_FLOAT(3.4), EVT_FLOAT(-5.5))
|
||||||
|
EVT_CALL(SetPanTarget, CAM_DEFAULT, 429, -153, 278)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_Camera_Reset) = {
|
||||||
|
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(90.0))
|
||||||
|
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, 430, 35, 295)
|
||||||
|
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_TexPan_UpperSand) = {
|
||||||
|
EVT_CALL(SetTexPanner, MODEL_o1350, TEX_PANNER_0)
|
||||||
|
EVT_CALL(SetTexPanner, MODEL_o1351, TEX_PANNER_0)
|
||||||
|
EVT_CALL(SetTexPanner, MODEL_o1352, TEX_PANNER_0)
|
||||||
|
EVT_SET(LVar2, 0)
|
||||||
|
EVT_CALL(MakeLerp, 0, 500, 60, EASING_QUADRATIC_IN)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_ADD(LVar2, LVar0)
|
||||||
|
EVT_CALL(SetTexPanOffset, TEX_PANNER_0, TEX_PANNER_MAIN, 0, LVar2)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 1)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_LABEL(20)
|
||||||
|
EVT_ADD(LVar2, 500)
|
||||||
|
EVT_CALL(SetTexPanOffset, TEX_PANNER_0, TEX_PANNER_MAIN, 0, LVar2)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_LT(GB_StoryProgress, STORY_CH2_DRAINED_FIRST_SAND_ROOM)
|
||||||
|
EVT_GOTO(20)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_TexPan_LowerSand) = {
|
||||||
|
EVT_CALL(SetTexPanner, MODEL_o1341, TEX_PANNER_1)
|
||||||
|
EVT_CALL(SetTexPanner, MODEL_o1346, TEX_PANNER_2)
|
||||||
|
EVT_CALL(SetTexPanner, MODEL_o1343, TEX_PANNER_3)
|
||||||
|
EVT_CALL(SetTexPanner, MODEL_o1344, TEX_PANNER_3)
|
||||||
|
EVT_CALL(SetTexPanner, MODEL_o1345, TEX_PANNER_3)
|
||||||
|
EVT_SET(LVar2, 0)
|
||||||
|
EVT_SET(LVar3, 0)
|
||||||
|
EVT_SET(LVar4, 0)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_ADD(LVar2, 0x1800)
|
||||||
|
EVT_ADD(LVar3, -500)
|
||||||
|
EVT_ADD(LVar4, -100)
|
||||||
|
EVT_CALL(SetTexPanOffset, TEX_PANNER_1, TEX_PANNER_MAIN, 0, LVar2)
|
||||||
|
EVT_CALL(SetTexPanOffset, TEX_PANNER_2, TEX_PANNER_MAIN, 0, LVar3)
|
||||||
|
EVT_CALL(SetTexPanOffset, TEX_PANNER_3, TEX_PANNER_MAIN, 0, LVar4)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_LT(GB_StoryProgress, STORY_CH2_DRAINED_FIRST_SAND_ROOM)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_SET(LVar5, 0x1800)
|
||||||
|
EVT_SET(LVar6, -500)
|
||||||
|
EVT_SET(LVar7, -100)
|
||||||
|
EVT_LOOP(10)
|
||||||
|
EVT_ADD(LVar5, -512)
|
||||||
|
EVT_ADD(LVar6, 50)
|
||||||
|
EVT_ADD(LVar7, 10)
|
||||||
|
EVT_ADD(LVar2, LVar5)
|
||||||
|
EVT_ADD(LVar3, LVar6)
|
||||||
|
EVT_ADD(LVar4, LVar7)
|
||||||
|
EVT_CALL(SetTexPanOffset, TEX_PANNER_1, TEX_PANNER_MAIN, 0, LVar2)
|
||||||
|
EVT_CALL(SetTexPanOffset, TEX_PANNER_2, TEX_PANNER_MAIN, 0, LVar3)
|
||||||
|
EVT_CALL(SetTexPanOffset, TEX_PANNER_3, TEX_PANNER_MAIN, 0, LVar4)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_RescaleDrainingSand) = {
|
||||||
|
EVT_CALL(MakeLerp, 0, 100, 60, EASING_QUADRATIC_IN)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_CALL(ScaleModel, MODEL_o1351, EVT_FLOAT(1.0), LVar0, EVT_FLOAT(1.0))
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 1)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_CollapseSandPile) = {
|
||||||
|
EVT_CALL(MakeLerp, 0, 50, 10, EASING_QUADRATIC_OUT)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_DIVF(LVar0, 100)
|
||||||
|
EVT_SETF(LVar2, 1)
|
||||||
|
EVT_ADDF(LVar2, LVar0)
|
||||||
|
EVT_SETF(LVar3, 1)
|
||||||
|
EVT_SUBF(LVar3, LVar0)
|
||||||
|
EVT_CALL(ScaleModel, MODEL_o1346, LVar2, LVar3, LVar2)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 1)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_DrainUpperSand) = {
|
||||||
|
EVT_CALL(MakeLerp, 0, -100, 60, EASING_QUADRATIC_IN)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_DIVF(LVar0, 10)
|
||||||
|
EVT_SETF(LVar2, 0)
|
||||||
|
EVT_SUBF(LVar2, LVar0)
|
||||||
|
EVT_CALL(TranslateGroup, MODEL_g206, 0, LVar0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o1952, 0, LVar2, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 1)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(MakeLerp, -100, -250, 30, EASING_LINEAR)
|
||||||
|
EVT_LABEL(20)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_DIVF(LVar0, 10)
|
||||||
|
EVT_SETF(LVar2, 0)
|
||||||
|
EVT_SUBF(LVar2, LVar0)
|
||||||
|
EVT_CALL(TranslateGroup, MODEL_g206, 0, LVar0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o1952, 0, LVar2, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 1)
|
||||||
|
EVT_GOTO(20)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_FillLowerSand) = {
|
||||||
|
EVT_CALL(MakeTransformGroup, MODEL_g210)
|
||||||
|
EVT_CALL(MakeLerp, -200, 0, 120, EASING_LINEAR)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_DIVF(LVar0, 10)
|
||||||
|
EVT_CALL(TranslateGroup, MODEL_g210, 0, LVar0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o1346, 0, LVar0, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 1)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_LowerSandColumn) = {
|
||||||
|
EVT_CALL(MakeLerp, 0, -200, 10, EASING_LINEAR)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o1341, 0, LVar0, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 1)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_Scene_DrainSand) = {
|
||||||
|
EVT_WAIT(5)
|
||||||
|
EVT_CALL(InterpPlayerYaw, 179, 0)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1343, TRUE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1344, TRUE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1345, TRUE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1354, TRUE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1355, TRUE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1356, TRUE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1341, TRUE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1346, TRUE)
|
||||||
|
EVT_EXEC(N(EVS_Camera_LookAtDrain))
|
||||||
|
EVT_WAIT(30)
|
||||||
|
EVT_EXEC(N(EVS_TexPan_UpperSand))
|
||||||
|
EVT_EXEC(N(EVS_RescaleDrainingSand))
|
||||||
|
EVT_EXEC(N(EVS_DrainUpperSand))
|
||||||
|
EVT_CALL(PlaySound, SOUND_53)
|
||||||
|
EVT_WAIT(75)
|
||||||
|
EVT_EXEC(N(EVS_Camera_LookBelow))
|
||||||
|
EVT_WAIT(30)
|
||||||
|
EVT_EXEC(N(EVS_TexPan_LowerSand))
|
||||||
|
EVT_EXEC(N(EVS_FillLowerSand))
|
||||||
|
EVT_CALL(PlaySound, SOUND_453)
|
||||||
|
EVT_WAIT(120)
|
||||||
|
EVT_EXEC(N(EVS_LowerSandColumn))
|
||||||
|
EVT_WAIT(5)
|
||||||
|
EVT_EXEC(N(EVS_CollapseSandPile))
|
||||||
|
EVT_CALL(PlaySound, SOUND_453)
|
||||||
|
EVT_WAIT(10)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1347, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1348, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1349, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1350, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1351, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1352, FALSE)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o1350, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o1351, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o1352, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_SET(GB_StoryProgress, STORY_CH2_DRAINED_FIRST_SAND_ROOM)
|
||||||
|
EVT_CALL(SetZoneEnabled, ZONE_o2008, FALSE)
|
||||||
|
EVT_CALL(SetZoneEnabled, ZONE_o2023, TRUE)
|
||||||
|
EVT_WAIT(20)
|
||||||
|
EVT_EXEC(N(EVS_Camera_Reset))
|
||||||
|
EVT_WAIT(5)
|
||||||
|
EVT_CALL(DisablePlayerInput, FALSE)
|
||||||
|
EVT_UNBIND
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_SetupSand) = {
|
||||||
|
EVT_SET(AF_ISK03_SandSwitchActivated, FALSE)
|
||||||
|
EVT_CALL(MakeTransformGroup, MODEL_g206)
|
||||||
|
EVT_IF_LT(GB_StoryProgress, STORY_CH2_DRAINED_FIRST_SAND_ROOM)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_Scene_DrainSand)), TRIGGER_AREA_FLAG_SET, AF_ISK03_SandSwitchActivated, 1, 0)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1343, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1344, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1345, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1354, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1355, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1356, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1341, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1346, FALSE)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o1343, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o1344, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o1345, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_EXEC(N(EVS_TexPan_DrippingSand))
|
||||||
|
EVT_ELSE
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1347, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1348, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1349, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1350, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1351, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1352, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1341, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1346, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o6000, FALSE)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o1350, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o1351, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o1352, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_IF_LT(GB_StoryProgress, STORY_CH2_DRAINED_FIRST_SAND_ROOM)
|
||||||
|
EVT_ELSE
|
||||||
|
EVT_CALL(EnableModel, MODEL_o6000, FALSE)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
10
src/world/area_isk/isk_03/isk_03_3_entity.c
Normal file
10
src/world/area_isk/isk_03/isk_03_3_entity.c
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#include "isk_03.h"
|
||||||
|
#include "effects.h"
|
||||||
|
|
||||||
|
EvtScript N(EVS_MakeEntities) = {
|
||||||
|
EVT_CALL(MakeItemEntity, ITEM_RUINS_KEY, 467, -170, 218, ITEM_SPAWN_MODE_KEY, GF_ISK03_Item_RuinsKey)
|
||||||
|
EVT_PLAY_EFFECT(EFFECT_FLAME, 1, 358, -123, 358, EVT_FLOAT(0.3), LVar0)
|
||||||
|
EVT_PLAY_EFFECT(EFFECT_FLAME, 1, 457, -123, 214, EVT_FLOAT(0.3), LVar0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
57
src/world/area_isk/isk_03/isk_03_4_switch.c
Normal file
57
src/world/area_isk/isk_03/isk_03_4_switch.c
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
#include "isk_03.h"
|
||||||
|
|
||||||
|
extern EvtScript N(EVS_OnTouch_DrainSwitch);
|
||||||
|
|
||||||
|
EvtScript N(EVS_SetupSwitch) = {
|
||||||
|
EVT_CALL(ParentColliderToModel, COLLIDER_o1989, MODEL_o1992)
|
||||||
|
EVT_CALL(ParentColliderToModel, COLLIDER_o1990, MODEL_o1992)
|
||||||
|
EVT_IF_EQ(AF_ISK03_SandSwitchActivated, FALSE)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_OnTouch_DrainSwitch)), TRIGGER_FLOOR_TOUCH, COLLIDER_o1990, 1, 0)
|
||||||
|
EVT_ELSE
|
||||||
|
EVT_CALL(TranslateGroup, MODEL_g319, 0, -14, 0)
|
||||||
|
EVT_CALL(UpdateColliderTransform, COLLIDER_o1989)
|
||||||
|
EVT_CALL(UpdateColliderTransform, COLLIDER_o1990)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_OnTouch_DrainSwitch) = {
|
||||||
|
EVT_CALL(IsPlayerOnValidFloor, LVar0)
|
||||||
|
EVT_IF_EQ(LVar0, FALSE)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(DisablePlayerInput, TRUE)
|
||||||
|
EVT_LABEL(5)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(PartnerCanUseAbility, LVar0)
|
||||||
|
EVT_IF_EQ(LVar0, TRUE)
|
||||||
|
EVT_GOTO(5)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(GetNpcPos, NPC_PARTNER, LVar0, LVar1, LVar2)
|
||||||
|
EVT_IF_LT(LVar1, 50)
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_CALL(DisablePartnerAI, 0)
|
||||||
|
EVT_CALL(SetNpcJumpscale, NPC_PARTNER, EVT_FLOAT(2.5))
|
||||||
|
EVT_CALL(NpcJump0, NPC_PARTNER, 470, 50, 268, 10)
|
||||||
|
EVT_WAIT(10)
|
||||||
|
EVT_CALL(EnablePartnerAI)
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(PlaySoundAtCollider, COLLIDER_o1990, SOUND_208A, 0)
|
||||||
|
EVT_CALL(MakeLerp, 0, -14, 30, EASING_LINEAR)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_CALL(TranslateGroup, MODEL_g319, 0, LVar0, 0)
|
||||||
|
EVT_CALL(UpdateColliderTransform, COLLIDER_o1989)
|
||||||
|
EVT_CALL(UpdateColliderTransform, COLLIDER_o1990)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 1)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(PlaySoundAtCollider, COLLIDER_o1990, SOUND_208B, 0)
|
||||||
|
EVT_SET(AF_ISK03_SandSwitchActivated, TRUE)
|
||||||
|
EVT_UNBIND
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
@ -1,8 +0,0 @@
|
|||||||
#include "isk_04.h"
|
|
||||||
|
|
||||||
static char* N(exit_str_0) = "isk_03";
|
|
||||||
static char* N(exit_str_1) = "isk_07";
|
|
||||||
static char* N(exit_str_2) = "isk_06";
|
|
||||||
static char* N(exit_str_3) = "isk_05";
|
|
||||||
|
|
||||||
#include "world/common/todo/RemovePadlock.inc.c"
|
|
@ -1,9 +0,0 @@
|
|||||||
#include "isk_04.h"
|
|
||||||
|
|
||||||
#include "world/common/enemy/ai/TackleAI.inc.c"
|
|
||||||
|
|
||||||
#include "world/common/todo/AwaitPlayerNearNpc.inc.c"
|
|
||||||
|
|
||||||
static const f32 padding = 0.0f;
|
|
||||||
|
|
||||||
static char* N(exit_str_0) = "isk_04";
|
|
@ -1,33 +0,0 @@
|
|||||||
#include "isk_04.h"
|
|
||||||
|
|
||||||
#include "world/common/todo/SwitchToPartner.inc.c"
|
|
||||||
|
|
||||||
#include "world/partners.h"
|
|
||||||
extern s32 D_80242288_97D8B8;
|
|
||||||
|
|
||||||
// duplicate of SetupDemoScene from trd_09
|
|
||||||
ApiStatus func_8024095C_97BF8C(Evt* script, s32 isInitialCall) {
|
|
||||||
PlayerStatus* playerStatus = &gPlayerStatus;
|
|
||||||
|
|
||||||
switch (D_80242288_97D8B8) {
|
|
||||||
case 0:
|
|
||||||
D_80242288_97D8B8 = 1;
|
|
||||||
return ApiStatus_BLOCK;
|
|
||||||
case 1:
|
|
||||||
case 2:
|
|
||||||
D_80242288_97D8B8++;
|
|
||||||
return ApiStatus_BLOCK;
|
|
||||||
case 3:
|
|
||||||
wPartnerNpc->pos.x = playerStatus->position.x - 30.0f;
|
|
||||||
wPartnerNpc->pos.z = playerStatus->position.z + 30.0f;
|
|
||||||
partner_clear_player_tracking(wPartnerNpc);
|
|
||||||
partner_set_goal_pos(playerStatus->position.x, playerStatus->position.z);
|
|
||||||
func_800EF3D4(0);
|
|
||||||
set_npc_yaw(wPartnerNpc, 90.0f);
|
|
||||||
playerStatus->targetYaw = 90.0f;
|
|
||||||
playerStatus->currentYaw = 90.0f;
|
|
||||||
playerStatus->spriteFacingAngle = 0.0f;
|
|
||||||
return ApiStatus_DONE2;
|
|
||||||
}
|
|
||||||
return ApiStatus_BLOCK;
|
|
||||||
}
|
|
@ -2,8 +2,29 @@
|
|||||||
/// @brief Dry Dry Ruins - Descending Stairs 1
|
/// @brief Dry Dry Ruins - Descending Stairs 1
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "../isk.h"
|
|
||||||
#include "message_ids.h"
|
#include "message_ids.h"
|
||||||
#include "map.h"
|
#include "map.h"
|
||||||
|
|
||||||
|
#include "../isk.h"
|
||||||
|
#include "mapfs/isk_04_shape.h"
|
||||||
|
#include "mapfs/isk_04_hit.h"
|
||||||
|
|
||||||
|
#include "sprite/npc/BuzzyBeetle.h"
|
||||||
|
|
||||||
|
enum {
|
||||||
|
NPC_BuzzyBeetle_01 = 0,
|
||||||
|
NPC_BuzzyBeetle_02 = 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
MV_RuinsLockEntityID = MapVar(0),
|
||||||
|
};
|
||||||
|
|
||||||
#define NAMESPACE isk_04
|
#define NAMESPACE isk_04
|
||||||
|
|
||||||
|
extern EvtScript N(EVS_Main);
|
||||||
|
extern EvtScript N(EVS_SetupMusic);
|
||||||
|
extern EvtScript N(EVS_SetupObstructions);
|
||||||
|
extern EvtScript N(EVS_MakeEntities);
|
||||||
|
extern EvtScript N(EVS_SetupDemo);
|
||||||
|
extern NpcGroupList N(DefaultNPCs);
|
||||||
|
18
src/world/area_isk/isk_04/isk_04_0_header.c
Normal file
18
src/world/area_isk/isk_04/isk_04_0_header.c
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#include "isk_04.h"
|
||||||
|
|
||||||
|
EntryList N(Entrances) = {
|
||||||
|
[isk_04_ENTRY_0] { 594.0, -80.0, 84.0, 0.0 },
|
||||||
|
[isk_04_ENTRY_1] { 594.0, -340.0, 84.0, 0.0 },
|
||||||
|
[isk_04_ENTRY_2] { 524.0, 25.0, -169.0, 170.0 },
|
||||||
|
[isk_04_ENTRY_3] { 571.0, -80.0, -186.0, 170.0 },
|
||||||
|
[isk_04_ENTRY_4] { 524.0, -210.0, -169.0, 170.0 },
|
||||||
|
[isk_04_ENTRY_5] { 543.0, 25.0, 5.0, 90.0 },
|
||||||
|
};
|
||||||
|
|
||||||
|
MapSettings N(settings) = {
|
||||||
|
.main = &N(EVS_Main),
|
||||||
|
.entryList = &N(Entrances),
|
||||||
|
.entryCount = ENTRY_COUNT(N(Entrances)),
|
||||||
|
.background = &gBackgroundImage,
|
||||||
|
.tattle = { MSG_MapTattle_isk_04 },
|
||||||
|
};
|
31
src/world/area_isk/isk_04/isk_04_1_music.c
Normal file
31
src/world/area_isk/isk_04/isk_04_1_music.c
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#include "isk_04.h"
|
||||||
|
|
||||||
|
EvtScript N(EVS_SetupMusic) = {
|
||||||
|
EVT_IF_EQ(GF_ISK04_SecondWarning, FALSE)
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_CALL(FadeInMusic, 1, SONG_TUTANKOOPA_WARNING, 0, 2000, 0, 127)
|
||||||
|
EVT_CALL(FadeOutMusic, 0, 2000)
|
||||||
|
EVT_CALL(DisablePlayerInput, TRUE)
|
||||||
|
EVT_WAIT(20)
|
||||||
|
EVT_SET_GROUP(EVT_GROUP_00)
|
||||||
|
EVT_CALL(SetTimeFreezeMode, TIME_FREEZE_PARTIAL)
|
||||||
|
EVT_CALL(ShowMessageAtScreenPos, MSG_CH2_00DE, 160, 40)
|
||||||
|
EVT_SET(GF_ISK04_SecondWarning, TRUE)
|
||||||
|
EVT_CALL(DisablePlayerInput, FALSE)
|
||||||
|
EVT_CALL(SetTimeFreezeMode, TIME_FREEZE_NORMAL)
|
||||||
|
EVT_CALL(FadeInMusic, 0, SONG_DRY_DRY_RUINS, 0, 2000, 0, 127)
|
||||||
|
EVT_CALL(FadeOutMusic, 1, 2000)
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_SWITCH(GB_StoryProgress)
|
||||||
|
EVT_CASE_LT(STORY_CH2_SOLVED_ARTIFACT_PUZZLE)
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8)
|
||||||
|
EVT_CASE_LT(STORY_CH2_DEFEATED_TUTANKOOPA)
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_RUINS_BASEMENT, 0, 8)
|
||||||
|
EVT_CASE_GE(STORY_CH2_DEFEATED_TUTANKOOPA)
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8)
|
||||||
|
EVT_END_SWITCH
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
44
src/world/area_isk/isk_04/isk_04_2_main.c
Normal file
44
src/world/area_isk/isk_04/isk_04_2_main.c
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
#include "isk_04.h"
|
||||||
|
|
||||||
|
EvtScript N(EVS_ExitWalk_isk_03_2) = EVT_EXIT_WALK(40, isk_04_ENTRY_0, "isk_03", isk_03_ENTRY_2);
|
||||||
|
EvtScript N(EVS_ExitWalk_isk_07_1) = EVT_EXIT_WALK(40, isk_04_ENTRY_1, "isk_07", isk_07_ENTRY_1);
|
||||||
|
EvtScript N(EVS_ExitWalk_isk_06_0) = EVT_EXIT_WALK(40, isk_04_ENTRY_2, "isk_06", isk_06_ENTRY_0);
|
||||||
|
EvtScript N(EVS_ExitWalk_isk_06_1) = EVT_EXIT_WALK(40, isk_04_ENTRY_3, "isk_06", isk_06_ENTRY_1);
|
||||||
|
EvtScript N(EVS_ExitWalk_isk_05_0) = EVT_EXIT_WALK(40, isk_04_ENTRY_4, "isk_05", isk_05_ENTRY_0);
|
||||||
|
|
||||||
|
EvtScript N(EVS_BindExitTriggers) = {
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_isk_03_2)), TRIGGER_FLOOR_ABOVE, COLLIDER_deiliw, 1, 0)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_isk_07_1)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilisw, 1, 0)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_isk_06_0)), TRIGGER_FLOOR_ABOVE, COLLIDER_deiline, 1, 0)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_isk_06_1)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilie, 1, 0)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_isk_05_0)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilise, 1, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_EnterMap) = {
|
||||||
|
EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers)))
|
||||||
|
EVT_EXEC(EnterWalk)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_Main) = {
|
||||||
|
EVT_SET(GB_WorldLocation, LOCATION_DRY_DRY_RUINS)
|
||||||
|
EVT_CALL(SetSpriteShading, SHADING_ISK_04)
|
||||||
|
EVT_SETUP_CAMERA_ALT_NO_LEAD()
|
||||||
|
EVT_CALL(GetDemoState, LVar0)
|
||||||
|
EVT_IF_NE(LVar0, 0)
|
||||||
|
EVT_EXEC_WAIT(N(EVS_SetupObstructions))
|
||||||
|
EVT_EXEC_WAIT(N(EVS_SetupDemo))
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(MakeNpcs, TRUE, EVT_PTR(N(DefaultNPCs)))
|
||||||
|
EVT_EXEC_WAIT(N(EVS_MakeEntities))
|
||||||
|
EVT_EXEC_WAIT(N(EVS_SetupObstructions))
|
||||||
|
EVT_EXEC(N(EVS_SetupMusic))
|
||||||
|
EVT_EXEC(N(EVS_EnterMap))
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
81
src/world/area_isk/isk_04/isk_04_3_obstructions.c
Normal file
81
src/world/area_isk/isk_04/isk_04_3_obstructions.c
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
#include "isk_04.h"
|
||||||
|
#include "effects.h"
|
||||||
|
|
||||||
|
#include "world/common/todo/RemovePadlock.inc.c"
|
||||||
|
|
||||||
|
s32 N(ItemList_RuinsKey)[] = {
|
||||||
|
ITEM_RUINS_KEY,
|
||||||
|
ITEM_NONE
|
||||||
|
};
|
||||||
|
|
||||||
|
BombTrigger N(BombPos_Wall) = {
|
||||||
|
.pos = { 510.0f, 25.0f, -184.0f },
|
||||||
|
.radius = 0.0f
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_OnBlast_Wall) = {
|
||||||
|
EVT_PLAY_EFFECT(EFFECT_BOMBETTE_BREAKING, 0, 63, 22, 1, 10, 30)
|
||||||
|
EVT_LOOP(10)
|
||||||
|
EVT_CALL(EnableModel, MODEL_g262, TRUE)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(EnableModel, MODEL_g262, FALSE)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilittne, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_SET(GF_ISK04_BombedWall, TRUE)
|
||||||
|
EVT_UNBIND
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_UnlockDoorPrompt) = {
|
||||||
|
EVT_CALL(ShowKeyChoicePopup)
|
||||||
|
EVT_IF_EQ(LVar0, 0)
|
||||||
|
EVT_CALL(ShowMessageAtScreenPos, MSG_Menus_00D8, 160, 40)
|
||||||
|
EVT_CALL(CloseChoicePopup)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_IF_EQ(LVar0, -1)
|
||||||
|
EVT_CALL(CloseChoicePopup)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(PlaySoundAt, SOUND_269, 0, 600, -330, 100)
|
||||||
|
EVT_CALL(RemoveKeyItemAt, LVar1)
|
||||||
|
EVT_SET(GF_ISK04_UnlockedDoor, TRUE)
|
||||||
|
EVT_SET(LVar0, MV_RuinsLockEntityID)
|
||||||
|
EVT_CALL(N(RemovePadlock))
|
||||||
|
EVT_SET(LVar1, 0)
|
||||||
|
EVT_WAIT(5)
|
||||||
|
EVT_CALL(PlaySoundAtCollider, COLLIDER_deilittsw, SOUND_265, 0)
|
||||||
|
EVT_CALL(MakeLerp, 0, 65, 65, EASING_LINEAR)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_CALL(TranslateGroup, MODEL_g304, 0, LVar0, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 1)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilittsw, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(CloseChoicePopup)
|
||||||
|
EVT_UNBIND
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_SetupObstructions) = {
|
||||||
|
EVT_IF_EQ(GF_ISK04_BombedWall, FALSE)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_OnBlast_Wall)), TRIGGER_POINT_BOMB, EVT_PTR(N(BombPos_Wall)), 1, 0)
|
||||||
|
EVT_ELSE
|
||||||
|
EVT_CALL(EnableModel, MODEL_g262, FALSE)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilittne, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_IF_EQ(GF_ISK04_UnlockedDoor, FALSE)
|
||||||
|
EVT_CALL(MakeTransformGroup, MODEL_g304)
|
||||||
|
EVT_BIND_PADLOCK(EVT_PTR(N(EVS_UnlockDoorPrompt)), TRIGGER_WALL_PRESS_A, EVT_ENTITY_INDEX(0), EVT_PTR(N(ItemList_RuinsKey)), 0, 1)
|
||||||
|
EVT_ELSE
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilittsw, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(EnableModel, MODEL_g304, FALSE)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
14
src/world/area_isk/isk_04/isk_04_4_entity.c
Normal file
14
src/world/area_isk/isk_04/isk_04_4_entity.c
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#include "isk_04.h"
|
||||||
|
#include "entity.h"
|
||||||
|
#include "effects.h"
|
||||||
|
|
||||||
|
EvtScript N(EVS_MakeEntities) = {
|
||||||
|
EVT_IF_EQ(GF_ISK04_UnlockedDoor, FALSE)
|
||||||
|
EVT_CALL(MakeEntity, EVT_PTR(Entity_Padlock), 600, -330, 100, 160, MAKE_ENTITY_END)
|
||||||
|
EVT_SET(MV_RuinsLockEntityID, LVar0)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_PLAY_EFFECT(EFFECT_FLAME, 1, 504, -193, 43, EVT_FLOAT(0.3), LVar0)
|
||||||
|
EVT_PLAY_EFFECT(EFFECT_FLAME, 1, 486, -193, -128, EVT_FLOAT(0.3), LVar0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
53
src/world/area_isk/isk_04/isk_04_5_npc.c
Normal file
53
src/world/area_isk/isk_04/isk_04_5_npc.c
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
#include "isk_04.h"
|
||||||
|
|
||||||
|
#include "world/common/enemy/complete/SpikeTop.inc.c"
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_BuzzyBeetle_01) = {
|
||||||
|
.id = NPC_BuzzyBeetle_01,
|
||||||
|
.settings = &N(NpcSettings_BuzzyBeetle),
|
||||||
|
.pos = { 561.0f, 25.0f, 47.0f },
|
||||||
|
.yaw = 355,
|
||||||
|
.flags = ENEMY_FLAGS_400,
|
||||||
|
.drops = ISK_BUZZY_BEETLE_DROPS,
|
||||||
|
.territory = {
|
||||||
|
.wander = {
|
||||||
|
.isFlying = TRUE,
|
||||||
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||||
|
.wanderShape = SHAPE_CYLINDER,
|
||||||
|
.centerPos = { 561, 25, 47 },
|
||||||
|
.wanderSize = { 30 },
|
||||||
|
.detectShape = SHAPE_CYLINDER,
|
||||||
|
.detectPos = { 606, 25, 94 },
|
||||||
|
.detectSize = { 80 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.animations = BUZZY_BEETLE_ANIMS,
|
||||||
|
};
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_BuzzyBeetle_02) = {
|
||||||
|
.id = NPC_BuzzyBeetle_02,
|
||||||
|
.settings = &N(NpcSettings_BuzzyBeetle),
|
||||||
|
.pos = { 608.0f, -260.0f, -158.0f },
|
||||||
|
.yaw = 175,
|
||||||
|
.flags = ENEMY_FLAGS_400 | ENEMY_FLAGS_800,
|
||||||
|
.drops = ISK_BUZZY_BEETLE_DROPS,
|
||||||
|
.territory = {
|
||||||
|
.wander = {
|
||||||
|
.isFlying = TRUE,
|
||||||
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||||
|
.wanderShape = SHAPE_CYLINDER,
|
||||||
|
.centerPos = { 608, -260, -158 },
|
||||||
|
.wanderSize = { 30 },
|
||||||
|
.detectShape = SHAPE_CYLINDER,
|
||||||
|
.detectPos = { 596, -260, -203 },
|
||||||
|
.detectSize = { 80 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.animations = BUZZY_BEETLE_ANIMS,
|
||||||
|
};
|
||||||
|
|
||||||
|
NpcGroupList N(DefaultNPCs) = {
|
||||||
|
NPC_GROUP(N(NpcData_BuzzyBeetle_01), BTL_ISK_PART_1_FORMATION_09, BTL_ISK_PART_1_STAGE_03),
|
||||||
|
NPC_GROUP(N(NpcData_BuzzyBeetle_02), BTL_ISK_PART_1_FORMATION_09, BTL_ISK_PART_1_STAGE_03),
|
||||||
|
{}
|
||||||
|
};
|
164
src/world/area_isk/isk_04/isk_04_6_demo.c
Normal file
164
src/world/area_isk/isk_04/isk_04_6_demo.c
Normal file
@ -0,0 +1,164 @@
|
|||||||
|
#include "isk_04.h"
|
||||||
|
#include "world/partners.h"
|
||||||
|
|
||||||
|
#include "world/common/todo/SwitchToPartner.inc.c"
|
||||||
|
|
||||||
|
EvtScript N(EVS_ProvideDemoInputs) = {
|
||||||
|
EVT_CALL(EnableStatusMenu, FALSE)
|
||||||
|
EVT_CALL(DemoSetButtons, BUTTON_C_DOWN)
|
||||||
|
EVT_WAIT(5)
|
||||||
|
EVT_CALL(DemoSetButtons, 0)
|
||||||
|
EVT_WAIT(93)
|
||||||
|
EVT_CALL(DemoJoystickXY, 2, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(DemoJoystickXY, 15, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(DemoJoystickXY, 45, 19)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(DemoJoystickXY, 75, 11)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(DemoJoystickXY, 76, 11)
|
||||||
|
EVT_WAIT(8)
|
||||||
|
EVT_CALL(DemoJoystickXY, 69, 11)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(DemoJoystickXY, -2, 21)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(DemoJoystickXY, -1, -1)
|
||||||
|
EVT_CALL(N(SwitchToPartner), PARTNER_BOMBETTE)
|
||||||
|
EVT_WAIT(57)
|
||||||
|
EVT_CALL(DemoSetButtons, BUTTON_C_DOWN)
|
||||||
|
EVT_WAIT(4)
|
||||||
|
EVT_CALL(DemoSetButtons, 0)
|
||||||
|
EVT_WAIT(34)
|
||||||
|
EVT_CALL(DemoJoystickXY, -1, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(DemoJoystickXY, -4, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(DemoJoystickXY, -23, 3)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(DemoJoystickXY, -48, 4)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(DemoJoystickXY, -67, 6)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(DemoJoystickXY, -76, 7)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(DemoJoystickXY, -78, 7)
|
||||||
|
EVT_WAIT(4)
|
||||||
|
EVT_CALL(DemoJoystickXY, -36, 6)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(DemoJoystickXY, 1, -1)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(DemoJoystickXY, 47, -6)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(DemoJoystickXY, 74, -12)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(DemoJoystickXY, 63, -9)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(DemoJoystickXY, -1, 0)
|
||||||
|
EVT_WAIT(70)
|
||||||
|
EVT_CALL(DemoJoystickXY, 0, 0)
|
||||||
|
EVT_WAIT(2)
|
||||||
|
EVT_CALL(DemoJoystickXY, 3, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(DemoJoystickXY, 17, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(DemoJoystickXY, 38, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(DemoJoystickXY, 64, -3)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(DemoJoystickXY, 76, -6)
|
||||||
|
EVT_WAIT(8)
|
||||||
|
EVT_CALL(DemoJoystickXY, 77, -5)
|
||||||
|
EVT_WAIT(3)
|
||||||
|
EVT_CALL(DemoJoystickXY, 77, -4)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(DemoJoystickXY, 77, -2)
|
||||||
|
EVT_WAIT(2)
|
||||||
|
EVT_CALL(DemoJoystickXY, 77, -1)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(DemoJoystickXY, 78, -1)
|
||||||
|
EVT_WAIT(2)
|
||||||
|
EVT_CALL(DemoJoystickXY, 78, 0)
|
||||||
|
EVT_IF_EQ(GF_DemoSceneDone, TRUE)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_SET(GF_DemoSceneDone, TRUE)
|
||||||
|
EVT_CALL(GotoMapSpecial, EVT_PTR("isk_04"), isk_04_ENTRY_5, TRANSITION_2)
|
||||||
|
EVT_WAIT(323)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_MonitorDemoState) = {
|
||||||
|
EVT_WAIT(10)
|
||||||
|
EVT_LOOP(0)
|
||||||
|
EVT_CALL(GetDemoState, LVar0)
|
||||||
|
EVT_IF_EQ(LVar0, DEMO_STATE_CHANGE_MAP)
|
||||||
|
EVT_BREAK_LOOP
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_IF_EQ(GF_DemoSceneDone, TRUE)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_SET(GF_DemoSceneDone, TRUE)
|
||||||
|
EVT_CALL(GotoMapSpecial, EVT_PTR("isk_04"), isk_04_ENTRY_2, TRANSITION_3)
|
||||||
|
EVT_WAIT(313)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
s32 N(DemoSceneState) = 0;
|
||||||
|
|
||||||
|
// duplicate of SetupDemoScene from trd_09
|
||||||
|
API_CALLABLE(N(SetupDemoScene)) {
|
||||||
|
PlayerStatus* playerStatus = &gPlayerStatus;
|
||||||
|
|
||||||
|
switch (N(DemoSceneState)) {
|
||||||
|
case 0:
|
||||||
|
N(DemoSceneState) = 1;
|
||||||
|
return ApiStatus_BLOCK;
|
||||||
|
case 1:
|
||||||
|
case 2:
|
||||||
|
N(DemoSceneState)++;
|
||||||
|
return ApiStatus_BLOCK;
|
||||||
|
case 3:
|
||||||
|
wPartnerNpc->pos.x = playerStatus->position.x - 30.0f;
|
||||||
|
wPartnerNpc->pos.z = playerStatus->position.z + 30.0f;
|
||||||
|
partner_clear_player_tracking(wPartnerNpc);
|
||||||
|
partner_set_goal_pos(playerStatus->position.x, playerStatus->position.z);
|
||||||
|
func_800EF3D4(0);
|
||||||
|
set_npc_yaw(wPartnerNpc, 90.0f);
|
||||||
|
playerStatus->targetYaw = 90.0f;
|
||||||
|
playerStatus->currentYaw = 90.0f;
|
||||||
|
playerStatus->spriteFacingAngle = 0.0f;
|
||||||
|
return ApiStatus_DONE2;
|
||||||
|
}
|
||||||
|
return ApiStatus_BLOCK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
EvtScript N(EVS_SetupDemo) = {
|
||||||
|
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, 530, 25, -50)
|
||||||
|
EVT_CALL(SetCamPitch, CAM_DEFAULT, 12, -3)
|
||||||
|
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(90.0))
|
||||||
|
EVT_CALL(SetPanTarget, CAM_DEFAULT, LVar0, 25, LVar2)
|
||||||
|
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_LOOP(0)
|
||||||
|
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(SetCamPitch, CAM_DEFAULT, 12, -3)
|
||||||
|
EVT_CALL(SetPanTarget, CAM_DEFAULT, LVar0, 25, LVar2)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_CALL(N(SetupDemoScene))
|
||||||
|
EVT_SET(GF_DemoSceneDone, FALSE)
|
||||||
|
EVT_EXEC(N(EVS_MonitorDemoState))
|
||||||
|
EVT_EXEC(N(EVS_ProvideDemoInputs))
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
@ -1,161 +0,0 @@
|
|||||||
#include "isk_05.h"
|
|
||||||
#include "sprite.h"
|
|
||||||
#include "sprite/npc/StoneChomp.h"
|
|
||||||
|
|
||||||
static char* N(exit_str_0) = "isk_04";
|
|
||||||
static char* N(exit_str_1) = "";
|
|
||||||
|
|
||||||
#include "world/common/enemy/ai/StoneChompAI.inc.c"
|
|
||||||
|
|
||||||
#include "world/area_isk/StoneChompFX.inc.c"
|
|
||||||
|
|
||||||
typedef struct StoneChompAmbushIsk05 {
|
|
||||||
/* 0x00 */ s32 foldID;
|
|
||||||
/* 0x04 */ s32 workerID;
|
|
||||||
/* 0x08 */ s32 spriteIndex;
|
|
||||||
/* 0x0C */ s32 rasterIndex;
|
|
||||||
/* 0x10 */ Vec3f pos;
|
|
||||||
/* 0x1C */ Vec3f rot;
|
|
||||||
/* 0x28 */ Vec3f scale;
|
|
||||||
/* 0x34 */ f32 renderYaw;
|
|
||||||
/* 0x38 */ s32 alpha;
|
|
||||||
/* 0x3C */ f32 width;
|
|
||||||
/* 0x40 */ f32 height;
|
|
||||||
} StoneChompAmbushIsk05; // size = 0x44
|
|
||||||
|
|
||||||
extern StoneChompAmbushIsk05 N(ChompAmbush);
|
|
||||||
|
|
||||||
void func_80241610_97F0E0(void) {
|
|
||||||
StoneChompAmbushIsk05* ambush = &N(ChompAmbush);
|
|
||||||
Camera* cam = &gCameras[gCurrentCameraID];
|
|
||||||
FoldImageRecPart foldImg;
|
|
||||||
SpriteRasterInfo spriteRaster;
|
|
||||||
Matrix4f transformMtx, tempMtx;
|
|
||||||
|
|
||||||
gSPViewport(gMasterGfxPos++, &cam->vp);
|
|
||||||
if (!(cam->flags & CAMERA_FLAGS_ORTHO)) {
|
|
||||||
gSPPerspNormalize(gMasterGfxPos++, cam->perspNorm);
|
|
||||||
}
|
|
||||||
guMtxF2L(cam->perspectiveMatrix, &gDisplayContext->camPerspMatrix[gCurrentCameraID]);
|
|
||||||
|
|
||||||
gSPMatrix(gMasterGfxPos++, &gDisplayContext->camPerspMatrix[gCurrentCameraID],
|
|
||||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
|
|
||||||
gDPPipeSync(gMasterGfxPos++);
|
|
||||||
gDPSetCycleType(gMasterGfxPos++, G_CYC_1CYCLE);
|
|
||||||
gSPClearGeometryMode(gMasterGfxPos++, G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING
|
|
||||||
| G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH);
|
|
||||||
gSPSetGeometryMode(gMasterGfxPos++, G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH);
|
|
||||||
gSPTexture(gMasterGfxPos++, -1, -1, 0, G_TX_RENDERTILE, G_ON);
|
|
||||||
gDPSetTextureLOD(gMasterGfxPos++, G_TL_TILE);
|
|
||||||
gDPSetTexturePersp(gMasterGfxPos++, G_TP_PERSP);
|
|
||||||
gDPSetTextureFilter(gMasterGfxPos++, G_TF_BILERP);
|
|
||||||
gDPSetColorDither(gMasterGfxPos++, G_CD_DISABLE);
|
|
||||||
gDPSetTextureDetail(gMasterGfxPos++, G_TD_CLAMP);
|
|
||||||
gDPSetTextureConvert(gMasterGfxPos++, G_TC_FILT);
|
|
||||||
gDPSetCombineKey(gMasterGfxPos++, G_CK_NONE);
|
|
||||||
gDPSetAlphaCompare(gMasterGfxPos++, G_AC_NONE);
|
|
||||||
|
|
||||||
guTranslateF(transformMtx, ambush->pos.x, ambush->pos.y, ambush->pos.z);
|
|
||||||
guRotateF(tempMtx, ambush->rot.y + gCameras[gCurrentCameraID].currentYaw + ambush->renderYaw, 0.0f, 1.0f, 0.0f);
|
|
||||||
guMtxCatF(tempMtx, transformMtx, transformMtx);
|
|
||||||
guRotateF(tempMtx, ambush->rot.z, 0.0f, 0.0f, 1.0f);
|
|
||||||
guMtxCatF(tempMtx, transformMtx, transformMtx);
|
|
||||||
guRotateF(tempMtx, ambush->rot.x, 1.0f, 0.0f, 0.0f);
|
|
||||||
guMtxCatF(tempMtx, transformMtx, transformMtx);
|
|
||||||
guScaleF(tempMtx, ambush->scale.x, ambush->scale.y, ambush->scale.z);
|
|
||||||
guMtxCatF(tempMtx, transformMtx, transformMtx);
|
|
||||||
guMtxF2L(transformMtx, &gDisplayContext->matrixStack[gMatrixListPos]);
|
|
||||||
gSPMatrix(gMasterGfxPos++, OS_PHYSICAL_TO_K0(&gDisplayContext->matrixStack[gMatrixListPos++]),
|
|
||||||
G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
|
||||||
|
|
||||||
spr_get_npc_raster_info(&spriteRaster, ambush->spriteIndex, ambush->rasterIndex);
|
|
||||||
foldImg.raster = spriteRaster.raster;
|
|
||||||
foldImg.palette = spriteRaster.defaultPal;
|
|
||||||
ambush->width = foldImg.width = spriteRaster.width;
|
|
||||||
ambush->height = foldImg.height = spriteRaster.height;
|
|
||||||
foldImg.xOffset = -(spriteRaster.width / 2);
|
|
||||||
foldImg.yOffset = (spriteRaster.height / 2);
|
|
||||||
foldImg.opacity = 255;
|
|
||||||
|
|
||||||
fold_update(ambush->foldID, FOLD_TYPE_7, 255, 255, 255, ambush->alpha, 0);
|
|
||||||
fold_appendGfx_component(ambush->foldID, &foldImg, 0, transformMtx);
|
|
||||||
gSPPopMatrix(gMasterGfxPos++, G_MTX_MODELVIEW);
|
|
||||||
}
|
|
||||||
|
|
||||||
ApiStatus func_80241B28_97F5F8(Evt* script, s32 isInitialCall) {
|
|
||||||
StoneChompAmbushIsk05* ambush = &N(ChompAmbush);
|
|
||||||
SpriteRasterInfo rasterInfo;
|
|
||||||
Npc* npc = get_npc_unsafe(script->owner1.enemy->npcID);
|
|
||||||
|
|
||||||
ambush->spriteIndex = 53; //TODO get spriteID for this constant
|
|
||||||
ambush->rasterIndex = 0;
|
|
||||||
spr_get_npc_raster_info(&rasterInfo, ambush->spriteIndex, ambush->rasterIndex);
|
|
||||||
ambush->width = rasterInfo.width;
|
|
||||||
ambush->height = rasterInfo.height;
|
|
||||||
|
|
||||||
ambush->pos.x = npc->pos.x;
|
|
||||||
ambush->pos.y = npc->pos.y + (ambush->height * SPRITE_WORLD_SCALE_D * 0.5);
|
|
||||||
ambush->pos.z = npc->pos.z;
|
|
||||||
ambush->rot.x = 0;
|
|
||||||
ambush->rot.y = 0;
|
|
||||||
ambush->rot.z = 0;
|
|
||||||
ambush->scale.x = SPRITE_WORLD_SCALE_F;
|
|
||||||
ambush->scale.y = SPRITE_WORLD_SCALE_F;
|
|
||||||
ambush->scale.z = SPRITE_WORLD_SCALE_F;
|
|
||||||
ambush->renderYaw = 85.0f;
|
|
||||||
ambush->alpha = 0.0f;
|
|
||||||
|
|
||||||
ambush->foldID = 0;
|
|
||||||
ambush->workerID = create_worker_frontUI(NULL, func_80241610_97F0E0);
|
|
||||||
return ApiStatus_DONE2;
|
|
||||||
}
|
|
||||||
|
|
||||||
ApiStatus func_80241C34_97F704(Evt* script, s32 isInitialCall) {
|
|
||||||
StoneChompAmbushIsk05* ambush = &N(ChompAmbush);
|
|
||||||
|
|
||||||
free_worker(ambush->workerID);
|
|
||||||
return ApiStatus_DONE2;
|
|
||||||
}
|
|
||||||
|
|
||||||
ApiStatus func_80241C5C_97F72C(Evt* script, s32 isInitialCall) {
|
|
||||||
Bytecode* args = script->ptrReadPos;
|
|
||||||
s32 x = evt_get_float_variable(script, *args++);
|
|
||||||
s32 y = evt_get_float_variable(script, *args++);
|
|
||||||
s32 z = evt_get_float_variable(script, *args++);
|
|
||||||
StoneChompAmbushIsk05* ambush = &N(ChompAmbush);
|
|
||||||
|
|
||||||
ambush->pos.x = x;
|
|
||||||
ambush->pos.y = y + (ambush->height * SPRITE_WORLD_SCALE_D * 0.5);
|
|
||||||
ambush->pos.z = z;
|
|
||||||
return ApiStatus_DONE2;
|
|
||||||
}
|
|
||||||
|
|
||||||
ApiStatus func_80241D44_97F814(Evt* script, s32 isInitialCall) {
|
|
||||||
Bytecode* args = script->ptrReadPos;
|
|
||||||
s32 x = evt_get_float_variable(script, *args++);
|
|
||||||
s32 y = evt_get_float_variable(script, *args++);
|
|
||||||
s32 z = evt_get_float_variable(script, *args++);
|
|
||||||
StoneChompAmbushIsk05* ambush = &N(ChompAmbush);
|
|
||||||
|
|
||||||
ambush->rot.x = x;
|
|
||||||
ambush->rot.y = y;
|
|
||||||
ambush->rot.z = z;
|
|
||||||
return ApiStatus_DONE2;
|
|
||||||
}
|
|
||||||
|
|
||||||
ApiStatus func_80241DF8_97F8C8(Evt* script, s32 isInitialCall) {
|
|
||||||
Bytecode* args = script->ptrReadPos;
|
|
||||||
StoneChompAmbushIsk05* ambush = &N(ChompAmbush);
|
|
||||||
|
|
||||||
ambush->alpha = evt_get_variable(script, *args++);
|
|
||||||
return ApiStatus_DONE2;
|
|
||||||
}
|
|
||||||
|
|
||||||
ApiStatus func_80241E24_97F8F4(Evt* script, s32 isInitialCall) {
|
|
||||||
f32 x = evt_get_variable(script, LVar2);
|
|
||||||
f32 y = evt_get_variable(script, LVar0);
|
|
||||||
f32 z = evt_get_variable(script, LVar4);
|
|
||||||
|
|
||||||
fx_landing_dust(0, x, y, z, 0.0f);
|
|
||||||
return ApiStatus_DONE2;
|
|
||||||
}
|
|
@ -2,8 +2,21 @@
|
|||||||
/// @brief Dry Dry Ruins - Pyramid Stone Room
|
/// @brief Dry Dry Ruins - Pyramid Stone Room
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "../isk.h"
|
|
||||||
#include "message_ids.h"
|
#include "message_ids.h"
|
||||||
#include "map.h"
|
#include "map.h"
|
||||||
|
|
||||||
|
#include "../isk.h"
|
||||||
|
#include "mapfs/isk_05_shape.h"
|
||||||
|
#include "mapfs/isk_05_hit.h"
|
||||||
|
|
||||||
|
#include "sprite/npc/StoneChomp.h"
|
||||||
|
|
||||||
|
enum {
|
||||||
|
NPC_StoneChomp = 1,
|
||||||
|
};
|
||||||
|
|
||||||
#define NAMESPACE isk_05
|
#define NAMESPACE isk_05
|
||||||
|
|
||||||
|
extern EvtScript N(EVS_Main);
|
||||||
|
extern EvtScript N(EVS_MakeEntities);
|
||||||
|
extern NpcGroupList N(DefaultNPCs);
|
||||||
|
12
src/world/area_isk/isk_05/isk_05_0_header.c
Normal file
12
src/world/area_isk/isk_05/isk_05_0_header.c
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#include "isk_05.h"
|
||||||
|
|
||||||
|
EntryList N(Entrances) = {
|
||||||
|
[isk_05_ENTRY_0] { 463.0, 25.0, -279.0, 320.0 },
|
||||||
|
};
|
||||||
|
|
||||||
|
MapSettings N(settings) = {
|
||||||
|
.main = &N(EVS_Main),
|
||||||
|
.entryList = &N(Entrances),
|
||||||
|
.entryCount = ENTRY_COUNT(N(Entrances)),
|
||||||
|
.tattle = { MSG_MapTattle_isk_05 },
|
||||||
|
};
|
48
src/world/area_isk/isk_05/isk_05_1_main.c
Normal file
48
src/world/area_isk/isk_05/isk_05_1_main.c
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
#include "isk_05.h"
|
||||||
|
|
||||||
|
EvtScript N(D_80241F10_97F9E0) = EVT_EXIT_WALK(40, isk_05_ENTRY_0, "isk_04", isk_04_ENTRY_4);
|
||||||
|
|
||||||
|
EvtScript N(EVS_BindExitTriggers) = {
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(D_80241F10_97F9E0)), TRIGGER_FLOOR_ABOVE, COLLIDER_deiliw, 1, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_EnterWalk_80241F98) = {
|
||||||
|
EVT_CALL(TranslateGroup, MODEL_g304, 0, 65, 0)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilittw, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers)))
|
||||||
|
EVT_EXEC(EnterWalk)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_Main) = {
|
||||||
|
EVT_SET(GB_WorldLocation, LOCATION_DRY_DRY_RUINS)
|
||||||
|
EVT_CALL(SetSpriteShading, SHADING_ISK_05)
|
||||||
|
EVT_SETUP_CAMERA_ALT_NO_LEAD()
|
||||||
|
EVT_CALL(MakeNpcs, TRUE, EVT_PTR(N(DefaultNPCs)))
|
||||||
|
EVT_EXEC_WAIT(N(EVS_MakeEntities))
|
||||||
|
EVT_SWITCH(GB_StoryProgress)
|
||||||
|
EVT_CASE_LT(STORY_CH2_SOLVED_ARTIFACT_PUZZLE)
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8)
|
||||||
|
EVT_CASE_LT(STORY_CH2_DEFEATED_TUTANKOOPA)
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_RUINS_BASEMENT, 0, 8)
|
||||||
|
EVT_CASE_GE(STORY_CH2_DEFEATED_TUTANKOOPA)
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8)
|
||||||
|
EVT_END_SWITCH
|
||||||
|
EVT_CALL(TranslateGroup, MODEL_g304, 0, 65, 0)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilittw, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_IF_EQ(GF_ISK05_Hammer2Block, FALSE)
|
||||||
|
EVT_CALL(SetGroupEnabled, MODEL_wan1, 1)
|
||||||
|
EVT_CALL(SetGroupEnabled, MODEL_wan2, 0)
|
||||||
|
EVT_ELSE
|
||||||
|
EVT_CALL(SetGroupEnabled, MODEL_wan1, 0)
|
||||||
|
EVT_CALL(SetGroupEnabled, MODEL_wan2, 1)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers)))
|
||||||
|
EVT_EXEC(EnterWalk)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
22
src/world/area_isk/isk_05/isk_05_2_entity.c
Normal file
22
src/world/area_isk/isk_05/isk_05_2_entity.c
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#include "isk_05.h"
|
||||||
|
#include "effects.h"
|
||||||
|
#include "entity.h"
|
||||||
|
|
||||||
|
EvtScript N(D_80242210_97FCE0) = {
|
||||||
|
EVT_SET(GF_ISK05_Hammer2Block, TRUE)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_MakeEntities) = {
|
||||||
|
EVT_CALL(MakeItemEntity, ITEM_PYRAMID_STONE, 316, 82, -481, ITEM_SPAWN_MODE_KEY, GF_ISK05_Item_PyramidStone)
|
||||||
|
EVT_IF_EQ(GF_ISK05_Hammer2Block, FALSE)
|
||||||
|
EVT_CALL(MakeEntity, EVT_PTR(Entity_Hammer2Block_WideX), 431, 0, -478, 45, MAKE_ENTITY_END)
|
||||||
|
EVT_CALL(AssignScript, EVT_PTR(N(D_80242210_97FCE0)))
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_PLAY_EFFECT(EFFECT_FLAME, 1, 415, 196, -290, EVT_FLOAT(0.3), LVar0)
|
||||||
|
EVT_PLAY_EFFECT(EFFECT_FLAME, 1, 290, 196, -411, EVT_FLOAT(0.3), LVar0)
|
||||||
|
EVT_PLAY_EFFECT(EFFECT_FLAME, 1, 415, 66, -290, EVT_FLOAT(0.3), LVar0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
298
src/world/area_isk/isk_05/isk_05_3_npc.c
Normal file
298
src/world/area_isk/isk_05/isk_05_3_npc.c
Normal file
@ -0,0 +1,298 @@
|
|||||||
|
#include "isk_05.h"
|
||||||
|
#include "sprite.h"
|
||||||
|
|
||||||
|
#include "world/common/enemy/complete/StoneChomp.inc.c"
|
||||||
|
|
||||||
|
typedef struct StoneChompAmbushIsk05 {
|
||||||
|
/* 0x00 */ s32 foldID;
|
||||||
|
/* 0x04 */ s32 workerID;
|
||||||
|
/* 0x08 */ s32 spriteIndex;
|
||||||
|
/* 0x0C */ s32 rasterIndex;
|
||||||
|
/* 0x10 */ Vec3f pos;
|
||||||
|
/* 0x1C */ Vec3f rot;
|
||||||
|
/* 0x28 */ Vec3f scale;
|
||||||
|
/* 0x34 */ f32 renderYaw;
|
||||||
|
/* 0x38 */ s32 alpha;
|
||||||
|
/* 0x3C */ f32 width;
|
||||||
|
/* 0x40 */ f32 height;
|
||||||
|
} StoneChompAmbushIsk05; // size = 0x44
|
||||||
|
|
||||||
|
StoneChompAmbushIsk05 N(ChompAmbush) = {};
|
||||||
|
|
||||||
|
void N(func_80241610_97F0E0)(void) {
|
||||||
|
StoneChompAmbushIsk05* ambush = &N(ChompAmbush);
|
||||||
|
Camera* cam = &gCameras[gCurrentCameraID];
|
||||||
|
FoldImageRecPart foldImg;
|
||||||
|
SpriteRasterInfo spriteRaster;
|
||||||
|
Matrix4f transformMtx, tempMtx;
|
||||||
|
|
||||||
|
gSPViewport(gMasterGfxPos++, &cam->vp);
|
||||||
|
if (!(cam->flags & CAMERA_FLAGS_ORTHO)) {
|
||||||
|
gSPPerspNormalize(gMasterGfxPos++, cam->perspNorm);
|
||||||
|
}
|
||||||
|
guMtxF2L(cam->perspectiveMatrix, &gDisplayContext->camPerspMatrix[gCurrentCameraID]);
|
||||||
|
|
||||||
|
gSPMatrix(gMasterGfxPos++, &gDisplayContext->camPerspMatrix[gCurrentCameraID],
|
||||||
|
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
|
||||||
|
gDPPipeSync(gMasterGfxPos++);
|
||||||
|
gDPSetCycleType(gMasterGfxPos++, G_CYC_1CYCLE);
|
||||||
|
gSPClearGeometryMode(gMasterGfxPos++, G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING
|
||||||
|
| G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH);
|
||||||
|
gSPSetGeometryMode(gMasterGfxPos++, G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH);
|
||||||
|
gSPTexture(gMasterGfxPos++, -1, -1, 0, G_TX_RENDERTILE, G_ON);
|
||||||
|
gDPSetTextureLOD(gMasterGfxPos++, G_TL_TILE);
|
||||||
|
gDPSetTexturePersp(gMasterGfxPos++, G_TP_PERSP);
|
||||||
|
gDPSetTextureFilter(gMasterGfxPos++, G_TF_BILERP);
|
||||||
|
gDPSetColorDither(gMasterGfxPos++, G_CD_DISABLE);
|
||||||
|
gDPSetTextureDetail(gMasterGfxPos++, G_TD_CLAMP);
|
||||||
|
gDPSetTextureConvert(gMasterGfxPos++, G_TC_FILT);
|
||||||
|
gDPSetCombineKey(gMasterGfxPos++, G_CK_NONE);
|
||||||
|
gDPSetAlphaCompare(gMasterGfxPos++, G_AC_NONE);
|
||||||
|
|
||||||
|
guTranslateF(transformMtx, ambush->pos.x, ambush->pos.y, ambush->pos.z);
|
||||||
|
guRotateF(tempMtx, ambush->rot.y + gCameras[gCurrentCameraID].currentYaw + ambush->renderYaw, 0.0f, 1.0f, 0.0f);
|
||||||
|
guMtxCatF(tempMtx, transformMtx, transformMtx);
|
||||||
|
guRotateF(tempMtx, ambush->rot.z, 0.0f, 0.0f, 1.0f);
|
||||||
|
guMtxCatF(tempMtx, transformMtx, transformMtx);
|
||||||
|
guRotateF(tempMtx, ambush->rot.x, 1.0f, 0.0f, 0.0f);
|
||||||
|
guMtxCatF(tempMtx, transformMtx, transformMtx);
|
||||||
|
guScaleF(tempMtx, ambush->scale.x, ambush->scale.y, ambush->scale.z);
|
||||||
|
guMtxCatF(tempMtx, transformMtx, transformMtx);
|
||||||
|
guMtxF2L(transformMtx, &gDisplayContext->matrixStack[gMatrixListPos]);
|
||||||
|
gSPMatrix(gMasterGfxPos++, OS_PHYSICAL_TO_K0(&gDisplayContext->matrixStack[gMatrixListPos++]),
|
||||||
|
G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||||
|
|
||||||
|
spr_get_npc_raster_info(&spriteRaster, ambush->spriteIndex, ambush->rasterIndex);
|
||||||
|
foldImg.raster = spriteRaster.raster;
|
||||||
|
foldImg.palette = spriteRaster.defaultPal;
|
||||||
|
ambush->width = foldImg.width = spriteRaster.width;
|
||||||
|
ambush->height = foldImg.height = spriteRaster.height;
|
||||||
|
foldImg.xOffset = -(spriteRaster.width / 2);
|
||||||
|
foldImg.yOffset = (spriteRaster.height / 2);
|
||||||
|
foldImg.opacity = 255;
|
||||||
|
|
||||||
|
fold_update(ambush->foldID, FOLD_TYPE_7, 255, 255, 255, ambush->alpha, 0);
|
||||||
|
fold_appendGfx_component(ambush->foldID, &foldImg, 0, transformMtx);
|
||||||
|
gSPPopMatrix(gMasterGfxPos++, G_MTX_MODELVIEW);
|
||||||
|
}
|
||||||
|
|
||||||
|
API_CALLABLE(N(func_80241B28_97F5F8)) {
|
||||||
|
StoneChompAmbushIsk05* ambush = &N(ChompAmbush);
|
||||||
|
SpriteRasterInfo rasterInfo;
|
||||||
|
Npc* npc = get_npc_unsafe(script->owner1.enemy->npcID);
|
||||||
|
|
||||||
|
ambush->spriteIndex = SPR_StoneChomp;
|
||||||
|
ambush->rasterIndex = 0;
|
||||||
|
spr_get_npc_raster_info(&rasterInfo, ambush->spriteIndex, ambush->rasterIndex);
|
||||||
|
ambush->width = rasterInfo.width;
|
||||||
|
ambush->height = rasterInfo.height;
|
||||||
|
|
||||||
|
ambush->pos.x = npc->pos.x;
|
||||||
|
ambush->pos.y = npc->pos.y + (ambush->height * SPRITE_WORLD_SCALE_D * 0.5);
|
||||||
|
ambush->pos.z = npc->pos.z;
|
||||||
|
ambush->rot.x = 0;
|
||||||
|
ambush->rot.y = 0;
|
||||||
|
ambush->rot.z = 0;
|
||||||
|
ambush->scale.x = SPRITE_WORLD_SCALE_F;
|
||||||
|
ambush->scale.y = SPRITE_WORLD_SCALE_F;
|
||||||
|
ambush->scale.z = SPRITE_WORLD_SCALE_F;
|
||||||
|
ambush->renderYaw = 85.0f;
|
||||||
|
ambush->alpha = 0.0f;
|
||||||
|
|
||||||
|
ambush->foldID = 0;
|
||||||
|
ambush->workerID = create_worker_frontUI(NULL, N(func_80241610_97F0E0));
|
||||||
|
return ApiStatus_DONE2;
|
||||||
|
}
|
||||||
|
|
||||||
|
API_CALLABLE(N(DestroyAmbushWorker)) {
|
||||||
|
StoneChompAmbushIsk05* ambush = &N(ChompAmbush);
|
||||||
|
|
||||||
|
free_worker(ambush->workerID);
|
||||||
|
return ApiStatus_DONE2;
|
||||||
|
}
|
||||||
|
|
||||||
|
API_CALLABLE(N(func_80241C5C_97F72C)) {
|
||||||
|
Bytecode* args = script->ptrReadPos;
|
||||||
|
s32 x = evt_get_float_variable(script, *args++);
|
||||||
|
s32 y = evt_get_float_variable(script, *args++);
|
||||||
|
s32 z = evt_get_float_variable(script, *args++);
|
||||||
|
StoneChompAmbushIsk05* ambush = &N(ChompAmbush);
|
||||||
|
|
||||||
|
ambush->pos.x = x;
|
||||||
|
ambush->pos.y = y + (ambush->height * SPRITE_WORLD_SCALE_D * 0.5);
|
||||||
|
ambush->pos.z = z;
|
||||||
|
return ApiStatus_DONE2;
|
||||||
|
}
|
||||||
|
|
||||||
|
API_CALLABLE(N(func_80241D44_97F814)) {
|
||||||
|
Bytecode* args = script->ptrReadPos;
|
||||||
|
s32 x = evt_get_float_variable(script, *args++);
|
||||||
|
s32 y = evt_get_float_variable(script, *args++);
|
||||||
|
s32 z = evt_get_float_variable(script, *args++);
|
||||||
|
StoneChompAmbushIsk05* ambush = &N(ChompAmbush);
|
||||||
|
|
||||||
|
ambush->rot.x = x;
|
||||||
|
ambush->rot.y = y;
|
||||||
|
ambush->rot.z = z;
|
||||||
|
return ApiStatus_DONE2;
|
||||||
|
}
|
||||||
|
|
||||||
|
API_CALLABLE(N(func_80241DF8_97F8C8)) {
|
||||||
|
Bytecode* args = script->ptrReadPos;
|
||||||
|
StoneChompAmbushIsk05* ambush = &N(ChompAmbush);
|
||||||
|
|
||||||
|
ambush->alpha = evt_get_variable(script, *args++);
|
||||||
|
return ApiStatus_DONE2;
|
||||||
|
}
|
||||||
|
|
||||||
|
API_CALLABLE(N(func_80241E24_97F8F4)) {
|
||||||
|
f32 x = evt_get_variable(script, LVar2);
|
||||||
|
f32 y = evt_get_variable(script, LVar0);
|
||||||
|
f32 z = evt_get_variable(script, LVar4);
|
||||||
|
|
||||||
|
fx_landing_dust(0, x, y, z, 0.0f);
|
||||||
|
return ApiStatus_DONE2;
|
||||||
|
}
|
||||||
|
|
||||||
|
EvtScript N(EVS_NpcIdle_StoneChomp) = {
|
||||||
|
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAGS_20, 1)
|
||||||
|
EVT_LABEL(100)
|
||||||
|
EVT_IF_EQ(GF_ISK05_Hammer2Block, FALSE)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_GOTO(100)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(PlaySound, SOUND_A)
|
||||||
|
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAGS_20, 0)
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_WAIT(5)
|
||||||
|
EVT_CALL(PlaySoundAtCollider, COLLIDER_deilittw, SOUND_266, 0)
|
||||||
|
EVT_CALL(MakeLerp, 65, 0, 15, EASING_QUADRATIC_IN)
|
||||||
|
EVT_LABEL(101)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_CALL(TranslateGroup, MODEL_g304, 0, LVar0, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 1)
|
||||||
|
EVT_GOTO(101)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(PlaySoundAtCollider, COLLIDER_deilittw, SOUND_267, 0)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_CLEAR_BITS, COLLIDER_deilittw, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_CALL(DisablePlayerInput, TRUE)
|
||||||
|
EVT_WAIT(5)
|
||||||
|
EVT_CALL(N(func_80241B28_97F5F8))
|
||||||
|
EVT_CALL(MakeLerp, 0, 255, 30, EASING_LINEAR)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_CALL(N(func_80241DF8_97F8C8), LVar0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 1)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(SetGroupEnabled, MODEL_wan1, 0)
|
||||||
|
EVT_CALL(SetGroupEnabled, MODEL_wan2, 1)
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_WAIT(15)
|
||||||
|
EVT_CALL(MakeLerp, 0, 360, 15, EASING_LINEAR)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_CALL(N(func_80241D44_97F814), LVar0, 0, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 1)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_CALL(GetNpcPos, NPC_SELF, LVar2, LVar3, LVar4)
|
||||||
|
EVT_CALL(N(func_80241C5C_97F72C), LVar2, LVar3, LVar4)
|
||||||
|
EVT_CALL(MakeLerp, LVar3, 0, 30, EASING_QUARTIC_IN)
|
||||||
|
EVT_LABEL(1)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_CALL(SetNpcPos, NPC_SELF, LVar2, LVar0, LVar4)
|
||||||
|
EVT_CALL(N(func_80241C5C_97F72C), LVar2, LVar0, LVar4)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 1)
|
||||||
|
EVT_GOTO(1)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(N(func_80241E24_97F8F4))
|
||||||
|
EVT_WAIT(5)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_2, FALSE)
|
||||||
|
EVT_CALL(EnableNpcShadow, NPC_SELF, TRUE)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(N(DestroyAmbushWorker))
|
||||||
|
EVT_CALL(func_802CFD30, -1, 0, 0, 0, 0, 0)
|
||||||
|
EVT_CALL(DisablePlayerInput, FALSE)
|
||||||
|
EVT_CALL(BindNpcAI, NPC_SELF, EVT_PTR(N(EVS_NpcAI_StoneChomp)))
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_NpcDefeat_StoneChomp_Override) = {
|
||||||
|
EVT_SET(GF_ISK05_Defeated_StoneChomp, TRUE)
|
||||||
|
EVT_CALL(GetBattleOutcome, LVar0)
|
||||||
|
EVT_SWITCH(LVar0)
|
||||||
|
EVT_CASE_EQ(OUTCOME_PLAYER_WON)
|
||||||
|
EVT_SET(GF_ISK05_Defeated_StoneChomp, TRUE)
|
||||||
|
EVT_SET(AF_ISK05_StoneChompDefeated, TRUE)
|
||||||
|
EVT_CALL(PlaySoundAtCollider, COLLIDER_deilittw, SOUND_265, 0)
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_WAIT(5)
|
||||||
|
EVT_CALL(MakeLerp, 0, 65, 65, EASING_LINEAR)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_CALL(TranslateGroup, MODEL_g304, 0, LVar0, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 1)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilittw, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_CALL(N(StoneChompFXC))
|
||||||
|
EVT_CALL(DoNpcDefeat)
|
||||||
|
EVT_CASE_EQ(OUTCOME_PLAYER_LOST)
|
||||||
|
EVT_CASE_EQ(OUTCOME_PLAYER_FLED)
|
||||||
|
EVT_END_SWITCH
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_NpcInit_StoneChomp) = {
|
||||||
|
EVT_IF_EQ(GF_ISK05_Defeated_StoneChomp, TRUE)
|
||||||
|
EVT_CALL(RemoveNpc, NPC_SELF)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_StoneChomp)))
|
||||||
|
EVT_CALL(BindNpcDefeat, NPC_SELF, EVT_PTR(N(EVS_NpcDefeat_StoneChomp_Override)))
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_2, TRUE)
|
||||||
|
EVT_CALL(EnableNpcShadow, NPC_SELF, FALSE)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_StoneChomp) = {
|
||||||
|
.id = NPC_StoneChomp,
|
||||||
|
.settings = &N(NpcSettings_StoneChomp),
|
||||||
|
.pos = { 385.0f, 71.0f, -330.0f },
|
||||||
|
.yaw = 320,
|
||||||
|
.flags = ENEMY_FLAGS_100 | ENEMY_FLAGS_200 | ENEMY_FLAGS_800 | ENEMY_FLAGS_40000,
|
||||||
|
.init = &N(EVS_NpcInit_StoneChomp),
|
||||||
|
.initVarCount = 1,
|
||||||
|
.initVar = { .value = 0 },
|
||||||
|
.drops = STONE_CHOMP_DROPS,
|
||||||
|
.territory = {
|
||||||
|
.wander = {
|
||||||
|
.isFlying = TRUE,
|
||||||
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||||
|
.wanderShape = SHAPE_CYLINDER,
|
||||||
|
.centerPos = { 468, 0, -378 },
|
||||||
|
.wanderSize = { 200 },
|
||||||
|
.detectShape = SHAPE_CYLINDER,
|
||||||
|
.detectPos = { 468, 0, -378 },
|
||||||
|
.detectSize = { 400 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.animations = STONE_CHOMP_ANIMS,
|
||||||
|
};
|
||||||
|
|
||||||
|
NpcGroupList N(DefaultNPCs) = {
|
||||||
|
NPC_GROUP(N(NpcData_StoneChomp), BTL_ISK_PART_1_FORMATION_07, BTL_ISK_PART_1_STAGE_09),
|
||||||
|
{}
|
||||||
|
};
|
@ -1,4 +0,0 @@
|
|||||||
#include "isk_06.h"
|
|
||||||
|
|
||||||
static char* N(exit_str_0) = "isk_04";
|
|
||||||
|
|
@ -2,8 +2,16 @@
|
|||||||
/// @brief Dry Dry Ruins - Sand Drainage Room 2
|
/// @brief Dry Dry Ruins - Sand Drainage Room 2
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "../isk.h"
|
|
||||||
#include "message_ids.h"
|
#include "message_ids.h"
|
||||||
#include "map.h"
|
#include "map.h"
|
||||||
|
|
||||||
|
#include "../isk.h"
|
||||||
|
#include "mapfs/isk_06_shape.h"
|
||||||
|
#include "mapfs/isk_06_hit.h"
|
||||||
|
|
||||||
#define NAMESPACE isk_06
|
#define NAMESPACE isk_06
|
||||||
|
|
||||||
|
extern EvtScript N(EVS_Main);
|
||||||
|
extern EvtScript N(EVS_SetupSand);
|
||||||
|
extern EvtScript N(EVS_SetupSwitch);
|
||||||
|
extern EvtScript N(EVS_MakeEntities);
|
||||||
|
13
src/world/area_isk/isk_06/isk_06_0_header.c
Normal file
13
src/world/area_isk/isk_06/isk_06_0_header.c
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#include "isk_06.h"
|
||||||
|
|
||||||
|
EntryList N(Entrances) = {
|
||||||
|
[isk_06_ENTRY_0] { 471.0, -80.0, -290.0, 320.0 },
|
||||||
|
[isk_06_ENTRY_1] { 509.0, -270.0, -318.0, 320.0 },
|
||||||
|
};
|
||||||
|
|
||||||
|
MapSettings N(settings) = {
|
||||||
|
.main = &N(EVS_Main),
|
||||||
|
.entryList = &N(Entrances),
|
||||||
|
.entryCount = ENTRY_COUNT(N(Entrances)),
|
||||||
|
.tattle = { MSG_MapTattle_isk_06 },
|
||||||
|
};
|
38
src/world/area_isk/isk_06/isk_06_1_main.c
Normal file
38
src/world/area_isk/isk_06/isk_06_1_main.c
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
#include "isk_06.h"
|
||||||
|
|
||||||
|
EvtScript N(EVS_ExitWalk_isk_04_2) = EVT_EXIT_WALK(40, isk_06_ENTRY_0, "isk_04", isk_04_ENTRY_2);
|
||||||
|
EvtScript N(EVS_ExitWalk_isk_04_3) = EVT_EXIT_WALK(40, isk_06_ENTRY_1, "isk_04", isk_04_ENTRY_3);
|
||||||
|
|
||||||
|
EvtScript N(EVS_BindExitTriggers) = {
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_isk_04_2)), TRIGGER_FLOOR_ABOVE, COLLIDER_deiline, 1, 0)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_isk_04_3)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilie, 1, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_Main) = {
|
||||||
|
EVT_SET(GB_WorldLocation, LOCATION_DRY_DRY_RUINS)
|
||||||
|
EVT_CALL(SetSpriteShading, SHADING_ISK_06)
|
||||||
|
EVT_SETUP_CAMERA_ALT_NO_LEAD()
|
||||||
|
EVT_IF_LT(GB_StoryProgress, STORY_CH2_DRAINED_SECOND_SAND_ROOM)
|
||||||
|
EVT_CALL(SetZoneEnabled, ZONE_o2016, FALSE)
|
||||||
|
EVT_ELSE
|
||||||
|
EVT_CALL(SetZoneEnabled, ZONE_C2, FALSE)
|
||||||
|
EVT_CALL(SetZoneEnabled, ZONE_o2012, FALSE)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_EXEC_WAIT(N(EVS_MakeEntities))
|
||||||
|
EVT_EXEC(N(EVS_SetupSand))
|
||||||
|
EVT_EXEC(N(EVS_SetupSwitch))
|
||||||
|
EVT_SWITCH(GB_StoryProgress)
|
||||||
|
EVT_CASE_LT(STORY_CH2_SOLVED_ARTIFACT_PUZZLE)
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8)
|
||||||
|
EVT_CASE_LT(STORY_CH2_DEFEATED_TUTANKOOPA)
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_RUINS_BASEMENT, 0, 8)
|
||||||
|
EVT_CASE_GE(STORY_CH2_DEFEATED_TUTANKOOPA)
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8)
|
||||||
|
EVT_END_SWITCH
|
||||||
|
EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers)))
|
||||||
|
EVT_EXEC(EnterWalk)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
11
src/world/area_isk/isk_06/isk_06_2_entity.c
Normal file
11
src/world/area_isk/isk_06/isk_06_2_entity.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#include "isk_06.h"
|
||||||
|
#include "effects.h"
|
||||||
|
|
||||||
|
EvtScript N(EVS_MakeEntities) = {
|
||||||
|
EVT_CALL(MakeItemEntity, ITEM_STAR_PIECE, 335, -130, -550, ITEM_SPAWN_MODE_FIXED_NEVER_VANISH, GF_ISK06_Item_StarPiece)
|
||||||
|
EVT_CALL(MakeItemEntity, ITEM_RUINS_KEY, 304, -270, -434, ITEM_SPAWN_MODE_KEY, GF_ISK06_Item_RuinsKey)
|
||||||
|
EVT_PLAY_EFFECT(EFFECT_FLAME, 1, 415, -253, -291, EVT_FLOAT(0.3), LVar0)
|
||||||
|
EVT_PLAY_EFFECT(EFFECT_FLAME, 1, 291, -253, -415, EVT_FLOAT(0.3), LVar0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
326
src/world/area_isk/isk_06/isk_06_3_sand.c
Normal file
326
src/world/area_isk/isk_06/isk_06_3_sand.c
Normal file
@ -0,0 +1,326 @@
|
|||||||
|
#include "isk_06.h"
|
||||||
|
|
||||||
|
EvtScript N(EVS_TexPan_DrippingSand) = {
|
||||||
|
EVT_CALL(SetTexPanner, MODEL_o2057, TEX_PANNER_4)
|
||||||
|
EVT_SET(LVar1, 0)
|
||||||
|
EVT_SET(LVar2, 0)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_ADD(LVar1, -1000)
|
||||||
|
EVT_ADD(LVar2, 200)
|
||||||
|
EVT_CALL(SetTexPanOffset, TEX_PANNER_4, TEX_PANNER_MAIN, 0, LVar1)
|
||||||
|
EVT_CALL(SetTexPanOffset, TEX_PANNER_4, TEX_PANNER_AUX, LVar2, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_LT(GB_StoryProgress, STORY_CH2_DRAINED_SECOND_SAND_ROOM)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(EnableModel, MODEL_o2057, FALSE)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_Camera_LookAtDrain) = {
|
||||||
|
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(1.0))
|
||||||
|
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, 356, -95, -373)
|
||||||
|
EVT_CALL(SetCamDistance, CAM_DEFAULT, 364)
|
||||||
|
EVT_CALL(SetCamPosA, CAM_DEFAULT, -623, 192)
|
||||||
|
EVT_CALL(SetCamPosB, CAM_DEFAULT, 566, 0)
|
||||||
|
EVT_CALL(SetCamPitch, CAM_DEFAULT, EVT_FLOAT(13.6), EVT_FLOAT(-1.5))
|
||||||
|
EVT_CALL(SetPanTarget, CAM_DEFAULT, 356, -95, -373)
|
||||||
|
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_Camera_LookBelow) = {
|
||||||
|
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(0.5))
|
||||||
|
EVT_CALL(SetCamPitch, CAM_DEFAULT, EVT_FLOAT(3.4), EVT_FLOAT(-5.5))
|
||||||
|
EVT_CALL(SetPanTarget, CAM_DEFAULT, 356, -285, -373)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_Camera_Reset) = {
|
||||||
|
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(90.0))
|
||||||
|
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, 356, -95, -373)
|
||||||
|
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_TexPan_UpperSand) = {
|
||||||
|
EVT_CALL(SetTexPanner, MODEL_o1689, TEX_PANNER_0)
|
||||||
|
EVT_CALL(SetTexPanner, MODEL_o1690, TEX_PANNER_0)
|
||||||
|
EVT_CALL(SetTexPanner, MODEL_o1691, TEX_PANNER_0)
|
||||||
|
EVT_SET(LVar2, 0)
|
||||||
|
EVT_CALL(MakeLerp, 0, 500, 60, EASING_QUADRATIC_IN)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_ADD(LVar2, LVar0)
|
||||||
|
EVT_CALL(SetTexPanOffset, TEX_PANNER_0, TEX_PANNER_MAIN, 0, LVar2)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 1)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_LABEL(20)
|
||||||
|
EVT_ADD(LVar2, 500)
|
||||||
|
EVT_CALL(SetTexPanOffset, TEX_PANNER_0, TEX_PANNER_MAIN, 0, LVar2)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_LT(GB_StoryProgress, STORY_CH2_DRAINED_SECOND_SAND_ROOM)
|
||||||
|
EVT_GOTO(20)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_TexPan_LowerSand) = {
|
||||||
|
EVT_CALL(SetTexPanner, MODEL_o1682, TEX_PANNER_1)
|
||||||
|
EVT_CALL(SetTexPanner, MODEL_o1681, TEX_PANNER_2)
|
||||||
|
EVT_CALL(SetTexPanner, MODEL_o1675, TEX_PANNER_3)
|
||||||
|
EVT_CALL(SetTexPanner, MODEL_o1676, TEX_PANNER_3)
|
||||||
|
EVT_CALL(SetTexPanner, MODEL_o1677, TEX_PANNER_3)
|
||||||
|
EVT_SET(LVar2, 0)
|
||||||
|
EVT_SET(LVar3, 0)
|
||||||
|
EVT_SET(LVar4, 0)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_ADD(LVar2, 0x1800)
|
||||||
|
EVT_ADD(LVar3, -500)
|
||||||
|
EVT_ADD(LVar4, -100)
|
||||||
|
EVT_CALL(SetTexPanOffset, TEX_PANNER_1, TEX_PANNER_MAIN, 0, LVar2)
|
||||||
|
EVT_CALL(SetTexPanOffset, TEX_PANNER_2, TEX_PANNER_MAIN, 0, LVar3)
|
||||||
|
EVT_CALL(SetTexPanOffset, TEX_PANNER_3, TEX_PANNER_MAIN, 0, LVar4)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_LT(GB_StoryProgress, STORY_CH2_DRAINED_SECOND_SAND_ROOM)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_SET(LVar5, 0x00001800)
|
||||||
|
EVT_SET(LVar6, -500)
|
||||||
|
EVT_SET(LVar7, -100)
|
||||||
|
EVT_LOOP(10)
|
||||||
|
EVT_ADD(LVar5, -512)
|
||||||
|
EVT_ADD(LVar6, 50)
|
||||||
|
EVT_ADD(LVar7, 10)
|
||||||
|
EVT_ADD(LVar2, LVar5)
|
||||||
|
EVT_ADD(LVar3, LVar6)
|
||||||
|
EVT_ADD(LVar4, LVar7)
|
||||||
|
EVT_CALL(SetTexPanOffset, TEX_PANNER_1, TEX_PANNER_MAIN, 0, LVar2)
|
||||||
|
EVT_CALL(SetTexPanOffset, TEX_PANNER_2, TEX_PANNER_MAIN, 0, LVar3)
|
||||||
|
EVT_CALL(SetTexPanOffset, TEX_PANNER_3, TEX_PANNER_MAIN, 0, LVar4)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_RescaleDrainingSand) = {
|
||||||
|
EVT_CALL(MakeLerp, 0, 100, 60, EASING_QUADRATIC_IN)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_CALL(ScaleModel, MODEL_o1690, EVT_FLOAT(1.0), LVar0, EVT_FLOAT(1.0))
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 1)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_CollapseSandPile) = {
|
||||||
|
EVT_CALL(MakeLerp, 0, 50, 10, EASING_QUADRATIC_OUT)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_DIVF(LVar0, 100)
|
||||||
|
EVT_SETF(LVar2, 1)
|
||||||
|
EVT_ADDF(LVar2, LVar0)
|
||||||
|
EVT_SETF(LVar3, 1)
|
||||||
|
EVT_SUBF(LVar3, LVar0)
|
||||||
|
EVT_CALL(ScaleModel, MODEL_o1681, LVar2, LVar3, LVar2)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 1)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_DrainUpperSand) = {
|
||||||
|
EVT_CALL(MakeLerp, 0, -100, 60, EASING_QUADRATIC_IN)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_DIVF(LVar0, 10)
|
||||||
|
EVT_SETF(LVar2, 0)
|
||||||
|
EVT_SUBF(LVar2, LVar0)
|
||||||
|
EVT_CALL(TranslateGroup, MODEL_g279, 0, LVar0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o1959, 0, LVar2, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o1960, 0, LVar2, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o1961, 0, LVar2, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 1)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(MakeLerp, -100, -250, 30, EASING_LINEAR)
|
||||||
|
EVT_LABEL(20)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_DIVF(LVar0, 10)
|
||||||
|
EVT_SETF(LVar2, 0)
|
||||||
|
EVT_SUBF(LVar2, LVar0)
|
||||||
|
EVT_CALL(TranslateGroup, MODEL_g279, 0, LVar0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o1959, 0, LVar2, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o1960, 0, LVar2, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o1961, 0, LVar2, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 1)
|
||||||
|
EVT_GOTO(20)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_FillLowerSand) = {
|
||||||
|
EVT_CALL(MakeTransformGroup, MODEL_g277)
|
||||||
|
EVT_CALL(MakeLerp, -200, 0, 120, EASING_LINEAR)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_DIVF(LVar0, 10)
|
||||||
|
EVT_CALL(TranslateGroup, MODEL_g277, 0, LVar0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o1681, 0, LVar0, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 1)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_LowerSandColumn) = {
|
||||||
|
EVT_CALL(MakeLerp, 0, -200, 10, EASING_LINEAR)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o1682, 0, LVar0, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 1)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_Scene_DrainSand) = {
|
||||||
|
EVT_WAIT(5)
|
||||||
|
EVT_CALL(InterpPlayerYaw, 98, 0)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1675, TRUE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1676, TRUE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1677, TRUE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1678, TRUE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1679, TRUE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1680, TRUE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1681, TRUE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1682, TRUE)
|
||||||
|
EVT_EXEC(N(EVS_Camera_LookAtDrain))
|
||||||
|
EVT_WAIT(30)
|
||||||
|
EVT_EXEC(N(EVS_TexPan_UpperSand))
|
||||||
|
EVT_EXEC(N(EVS_RescaleDrainingSand))
|
||||||
|
EVT_EXEC(N(EVS_DrainUpperSand))
|
||||||
|
EVT_CALL(PlaySound, SOUND_53)
|
||||||
|
EVT_WAIT(75)
|
||||||
|
EVT_EXEC(N(EVS_Camera_LookBelow))
|
||||||
|
EVT_WAIT(30)
|
||||||
|
EVT_EXEC(N(EVS_TexPan_LowerSand))
|
||||||
|
EVT_EXEC(N(EVS_FillLowerSand))
|
||||||
|
EVT_CALL(PlaySound, SOUND_453)
|
||||||
|
EVT_WAIT(120)
|
||||||
|
EVT_EXEC(N(EVS_LowerSandColumn))
|
||||||
|
EVT_WAIT(5)
|
||||||
|
EVT_EXEC(N(EVS_CollapseSandPile))
|
||||||
|
EVT_CALL(PlaySound, SOUND_453)
|
||||||
|
EVT_WAIT(10)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1686, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1687, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1688, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1689, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1690, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1691, FALSE)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o1689, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o1690, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o1691, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_CLEAR_BITS, COLLIDER_o1675, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_CLEAR_BITS, COLLIDER_o1676, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_CLEAR_BITS, COLLIDER_o1677, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o2047, TRUE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o2048, TRUE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o2049, TRUE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o2050, TRUE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o2051, TRUE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o2052, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o2053, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o2054, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o2055, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o2056, FALSE)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o2077, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o2078, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_SET(GB_StoryProgress, STORY_CH2_DRAINED_SECOND_SAND_ROOM)
|
||||||
|
EVT_CALL(SetZoneEnabled, ZONE_o2012, FALSE)
|
||||||
|
EVT_CALL(SetZoneEnabled, ZONE_o2016, TRUE)
|
||||||
|
EVT_WAIT(20)
|
||||||
|
EVT_EXEC(N(EVS_Camera_Reset))
|
||||||
|
EVT_WAIT(5)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1681, FALSE)
|
||||||
|
EVT_CALL(DisablePlayerInput, FALSE)
|
||||||
|
EVT_UNBIND
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_SetupSand) = {
|
||||||
|
EVT_SET(AF_ISK06_SandSwitchActivated, FALSE)
|
||||||
|
EVT_CALL(MakeTransformGroup, MODEL_g279)
|
||||||
|
EVT_IF_LT(GB_StoryProgress, STORY_CH2_DRAINED_SECOND_SAND_ROOM)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_Scene_DrainSand)), TRIGGER_AREA_FLAG_SET, AF_ISK06_SandSwitchActivated, 1, 0)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1675, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1676, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1677, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1678, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1679, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1680, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1681, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1682, FALSE)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o1675, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o1676, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o1677, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o2047, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o2048, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o2049, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o2050, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o2051, FALSE)
|
||||||
|
EVT_EXEC(N(EVS_TexPan_DrippingSand))
|
||||||
|
EVT_ELSE
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1686, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1687, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1688, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1689, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1690, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1691, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1681, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o1682, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o2052, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o2053, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o2054, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o2055, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o2056, FALSE)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o2077, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o2078, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o2057, FALSE)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o1689, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o1690, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o1691, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_IF_LT(GB_StoryProgress, STORY_CH2_DRAINED_SECOND_SAND_ROOM)
|
||||||
|
EVT_ELSE
|
||||||
|
EVT_CALL(EnableModel, MODEL_o2057, FALSE)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
57
src/world/area_isk/isk_06/isk_06_4_switch.c
Normal file
57
src/world/area_isk/isk_06/isk_06_4_switch.c
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
#include "isk_06.h"
|
||||||
|
|
||||||
|
extern EvtScript N(EVS_OnTouch_DrainSwitch);
|
||||||
|
|
||||||
|
EvtScript N(EVS_SetupSwitch) = {
|
||||||
|
EVT_CALL(ParentColliderToModel, COLLIDER_o2090, MODEL_g336)
|
||||||
|
EVT_CALL(ParentColliderToModel, COLLIDER_o2091, MODEL_g336)
|
||||||
|
EVT_IF_EQ(AF_ISK06_SandSwitchActivated, FALSE)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_OnTouch_DrainSwitch)), TRIGGER_FLOOR_TOUCH, COLLIDER_o2091, 1, 0)
|
||||||
|
EVT_ELSE
|
||||||
|
EVT_CALL(TranslateModel, MODEL_g336, 0, -14, 0)
|
||||||
|
EVT_CALL(UpdateColliderTransform, COLLIDER_o2090)
|
||||||
|
EVT_CALL(UpdateColliderTransform, COLLIDER_o2091)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_OnTouch_DrainSwitch) = {
|
||||||
|
EVT_CALL(IsPlayerOnValidFloor, LVar0)
|
||||||
|
EVT_IF_EQ(LVar0, FALSE)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(DisablePlayerInput, TRUE)
|
||||||
|
EVT_LABEL(5)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(PartnerCanUseAbility, LVar0)
|
||||||
|
EVT_IF_EQ(LVar0, TRUE)
|
||||||
|
EVT_GOTO(5)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(GetNpcPos, NPC_PARTNER, LVar0, LVar1, LVar2)
|
||||||
|
EVT_IF_LT(LVar1, -80)
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_CALL(DisablePartnerAI, 0)
|
||||||
|
EVT_CALL(SetNpcJumpscale, NPC_PARTNER, EVT_FLOAT(2.5))
|
||||||
|
EVT_CALL(NpcJump0, NPC_PARTNER, 343, -80, -421, 10)
|
||||||
|
EVT_WAIT(10)
|
||||||
|
EVT_CALL(EnablePartnerAI)
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(PlaySoundAtCollider, COLLIDER_o2091, SOUND_208A, 0)
|
||||||
|
EVT_CALL(MakeLerp, 0, -14, 30, EASING_LINEAR)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_g336, 0, LVar0, 0)
|
||||||
|
EVT_CALL(UpdateColliderTransform, COLLIDER_o2090)
|
||||||
|
EVT_CALL(UpdateColliderTransform, COLLIDER_o2091)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 1)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(PlaySoundAtCollider, COLLIDER_o2091, SOUND_208B, 0)
|
||||||
|
EVT_SET(AF_ISK06_SandSwitchActivated, TRUE)
|
||||||
|
EVT_UNBIND
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
@ -1,35 +0,0 @@
|
|||||||
#include "isk_07.h"
|
|
||||||
|
|
||||||
static char* N(exit_str_0) = "isk_08";
|
|
||||||
static char* N(exit_str_1) = "isk_04";
|
|
||||||
|
|
||||||
#include "world/common/todo/SetNpcB5_3.inc.c"
|
|
||||||
|
|
||||||
ApiStatus func_80240014_982454(Evt* script, s32 isInitialCall) {
|
|
||||||
EncounterStatus* encounterStatus = &gCurrentEncounter;
|
|
||||||
s32 i, j;
|
|
||||||
s32 count;
|
|
||||||
|
|
||||||
script->varTable[1] = 0;
|
|
||||||
count = 0;
|
|
||||||
for (i = 0; i < encounterStatus->numEncounters; i++) {
|
|
||||||
Encounter* encounter = encounterStatus->encounterList[i];
|
|
||||||
if (encounter != NULL) {
|
|
||||||
s32 hasEnemy = FALSE;
|
|
||||||
for (j = 0; j < encounter->count; j++) {
|
|
||||||
if (encounter->enemy[j] != NULL) {
|
|
||||||
hasEnemy = TRUE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (hasEnemy) {
|
|
||||||
count++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (count != 1) {
|
|
||||||
return ApiStatus_DONE2;
|
|
||||||
}
|
|
||||||
script->varTable[1] = count;
|
|
||||||
return ApiStatus_DONE2;
|
|
||||||
}
|
|
@ -1,3 +0,0 @@
|
|||||||
#include "isk_07.h"
|
|
||||||
|
|
||||||
#include "world/common/todo/RemovePadlock.inc.c"
|
|
@ -1,11 +0,0 @@
|
|||||||
#include "isk_07.h"
|
|
||||||
#include "mapfs/isk_07_hit.h"
|
|
||||||
|
|
||||||
ApiStatus func_802400F0_982530(Evt* script, s32 isInitialCall) {
|
|
||||||
if (gCollisionStatus.currentFloor == COLLIDER_o2022) {
|
|
||||||
return ApiStatus_BLOCK;
|
|
||||||
} else {
|
|
||||||
return ApiStatus_DONE2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -2,8 +2,37 @@
|
|||||||
/// @brief Dry Dry Ruins - Sarcophagus Hall 2
|
/// @brief Dry Dry Ruins - Sarcophagus Hall 2
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "../isk.h"
|
|
||||||
#include "message_ids.h"
|
#include "message_ids.h"
|
||||||
#include "map.h"
|
#include "map.h"
|
||||||
|
|
||||||
|
#include "../isk.h"
|
||||||
|
#include "mapfs/isk_07_shape.h"
|
||||||
|
#include "mapfs/isk_07_hit.h"
|
||||||
|
|
||||||
|
#include "sprite/npc/Pokey.h"
|
||||||
|
|
||||||
|
enum {
|
||||||
|
NPC_Pokey_01 = 0,
|
||||||
|
NPC_Pokey_02 = 1,
|
||||||
|
NPC_Pokey_03 = 2,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
MV_LockEntityID = MapVar(0),
|
||||||
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
MF_StairsFlipped = MapFlag(0),
|
||||||
|
};
|
||||||
|
|
||||||
#define NAMESPACE isk_07
|
#define NAMESPACE isk_07
|
||||||
|
|
||||||
|
extern EvtScript N(EVS_Main);
|
||||||
|
extern EvtScript N(EVS_SetupLock);
|
||||||
|
extern EvtScript N(EVS_SetupStairs);
|
||||||
|
extern EvtScript N(EVS_SetupSwitch);
|
||||||
|
extern EvtScript N(EVS_SetupSarcophagi);
|
||||||
|
extern EvtScript N(EVS_OpenEntryDoor);
|
||||||
|
extern EvtScript N(EVS_ShutEntryDoor);
|
||||||
|
extern EvtScript N(EVS_MakeEntities);
|
||||||
|
extern NpcGroupList N(DefaultNPCs);
|
||||||
|
13
src/world/area_isk/isk_07/isk_07_0_header.c
Normal file
13
src/world/area_isk/isk_07/isk_07_0_header.c
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#include "isk_07.h"
|
||||||
|
|
||||||
|
EntryList N(Entrances) = {
|
||||||
|
[isk_07_ENTRY_0] { -283.0, -390.0, 530.0, 110.0 },
|
||||||
|
[isk_07_ENTRY_1] { 560.0, -340.0, 217.0, 210.0 },
|
||||||
|
};
|
||||||
|
|
||||||
|
MapSettings N(settings) = {
|
||||||
|
.main = &N(EVS_Main),
|
||||||
|
.entryList = &N(Entrances),
|
||||||
|
.entryCount = ENTRY_COUNT(N(Entrances)),
|
||||||
|
.tattle = { MSG_MapTattle_isk_07 },
|
||||||
|
};
|
37
src/world/area_isk/isk_07/isk_07_1_main.c
Normal file
37
src/world/area_isk/isk_07/isk_07_1_main.c
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
#include "isk_07.h"
|
||||||
|
|
||||||
|
EvtScript N(EVS_ExitWalk_isk_08_2) = EVT_EXIT_WALK(40, isk_07_ENTRY_0, "isk_08", isk_08_ENTRY_2);
|
||||||
|
EvtScript N(EVS_ExitWalk_isk_04_1) = EVT_EXIT_WALK(40, isk_07_ENTRY_1, "isk_04", isk_04_ENTRY_1);
|
||||||
|
|
||||||
|
EvtScript N(EVS_BindExitTriggers) = {
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_isk_08_2)), TRIGGER_FLOOR_ABOVE, COLLIDER_deiliw, 1, 0)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_isk_04_1)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilie, 1, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_Main) = {
|
||||||
|
EVT_SET(GB_WorldLocation, LOCATION_DRY_DRY_RUINS)
|
||||||
|
EVT_CALL(SetSpriteShading, SHADING_ISK_07)
|
||||||
|
EVT_SETUP_CAMERA_ALT_NO_LEAD()
|
||||||
|
EVT_IF_EQ(GF_ISK07_Defeated_Mummies, FALSE)
|
||||||
|
EVT_CALL(MakeNpcs, TRUE, EVT_PTR(N(DefaultNPCs)))
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_EXEC_WAIT(N(EVS_MakeEntities))
|
||||||
|
EVT_EXEC(N(EVS_SetupLock))
|
||||||
|
EVT_EXEC(N(EVS_SetupStairs))
|
||||||
|
EVT_EXEC(N(EVS_SetupSwitch))
|
||||||
|
EVT_EXEC(N(EVS_SetupSarcophagi))
|
||||||
|
EVT_SWITCH(GB_StoryProgress)
|
||||||
|
EVT_CASE_LT(STORY_CH2_SOLVED_ARTIFACT_PUZZLE)
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8)
|
||||||
|
EVT_CASE_LT(STORY_CH2_DEFEATED_TUTANKOOPA)
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_RUINS_BASEMENT, 0, 8)
|
||||||
|
EVT_CASE_GE(STORY_CH2_DEFEATED_TUTANKOOPA)
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8)
|
||||||
|
EVT_END_SWITCH
|
||||||
|
EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers)))
|
||||||
|
EVT_EXEC(EnterWalk)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
46
src/world/area_isk/isk_07/isk_07_2_entity.c
Normal file
46
src/world/area_isk/isk_07/isk_07_2_entity.c
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
#include "isk_07.h"
|
||||||
|
#include "entity.h"
|
||||||
|
#include "effects.h"
|
||||||
|
|
||||||
|
EvtScript N(EVS_HitBlock_Trigger) = {
|
||||||
|
EVT_SET(GF_ISK07_OpenedSarcophagi, TRUE)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_SmashBlock_Stone) = {
|
||||||
|
EVT_SET(GF_ISK07_Hammer2Block, TRUE)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_MakeEntities) = {
|
||||||
|
EVT_IF_EQ(GF_ISK07_UnlockedDoor, FALSE)
|
||||||
|
EVT_CALL(MakeEntity, EVT_PTR(Entity_Padlock), -300, -380, 530, 50, MAKE_ENTITY_END)
|
||||||
|
EVT_SET(MV_LockEntityID, LVar0)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_IF_EQ(GF_ISK07_Hammer2Block, FALSE)
|
||||||
|
EVT_CALL(MakeEntity, EVT_PTR(Entity_Hammer2Block_WideX), 470, -250, 270, 150, MAKE_ENTITY_END)
|
||||||
|
EVT_CALL(AssignScript, EVT_PTR(N(EVS_SmashBlock_Stone)))
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_IF_EQ(GF_ISK07_OpenedSarcophagi, FALSE)
|
||||||
|
EVT_CALL(MakeEntity, EVT_PTR(Entity_TriggerBlock), -250, -330, 545, -25, MAKE_ENTITY_END)
|
||||||
|
EVT_CALL(AssignScript, EVT_PTR(N(EVS_HitBlock_Trigger)))
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_IF_EQ(GF_ISK07_Defeated_Mummies, TRUE)
|
||||||
|
EVT_CALL(MakeItemEntity, ITEM_RUINS_KEY, -250, -390, 545, ITEM_SPAWN_MODE_KEY, GF_ISK07_Item_RuinsKey)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_PLAY_EFFECT(EFFECT_FLAME, 1, 415, -193, 291, EVT_FLOAT(0.3), LVar0)
|
||||||
|
EVT_PLAY_EFFECT(EFFECT_FLAME, 1, 291, -193, 415, EVT_FLOAT(0.3), LVar0)
|
||||||
|
EVT_PLAY_EFFECT(EFFECT_FLAME, 1, 131, -193, 489, EVT_FLOAT(0.3), LVar0)
|
||||||
|
EVT_PLAY_EFFECT(EFFECT_FLAME, 1, -44, -193, 505, EVT_FLOAT(0.3), LVar0)
|
||||||
|
EVT_PLAY_EFFECT(EFFECT_FLAME, 1, -214, -193, 459, EVT_FLOAT(0.3), LVar0)
|
||||||
|
EVT_PLAY_EFFECT(EFFECT_FLAME, 1, 415, -323, 291, EVT_FLOAT(0.3), LVar0)
|
||||||
|
EVT_PLAY_EFFECT(EFFECT_FLAME, 1, 291, -323, 415, EVT_FLOAT(0.3), LVar0)
|
||||||
|
EVT_PLAY_EFFECT(EFFECT_FLAME, 1, 131, -323, 489, EVT_FLOAT(0.3), LVar0)
|
||||||
|
EVT_PLAY_EFFECT(EFFECT_FLAME, 1, -44, -323, 505, EVT_FLOAT(0.3), LVar0)
|
||||||
|
EVT_PLAY_EFFECT(EFFECT_FLAME, 1, -214, -323, 459, EVT_FLOAT(0.3), LVar0)
|
||||||
|
EVT_CALL(MakeItemEntity, ITEM_ARTIFACT, 490, -250, 215, ITEM_SPAWN_MODE_FIXED_NEVER_VANISH, GF_ISK07_Item_Artifact)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
249
src/world/area_isk/isk_07/isk_07_3_npc.c
Normal file
249
src/world/area_isk/isk_07/isk_07_3_npc.c
Normal file
@ -0,0 +1,249 @@
|
|||||||
|
#include "isk_07.h"
|
||||||
|
|
||||||
|
#include "world/common/enemy/complete/PokeyMummy.inc.c"
|
||||||
|
|
||||||
|
API_CALLABLE(N(IsLastEnemy)) {
|
||||||
|
EncounterStatus* encounterStatus = &gCurrentEncounter;
|
||||||
|
s32 livingEncounters;
|
||||||
|
s32 i, j;
|
||||||
|
|
||||||
|
script->varTable[1] = FALSE;
|
||||||
|
livingEncounters = 0;
|
||||||
|
for (i = 0; i < encounterStatus->numEncounters; i++) {
|
||||||
|
Encounter* encounter = encounterStatus->encounterList[i];
|
||||||
|
if (encounter != NULL) {
|
||||||
|
s32 hasEnemy = FALSE;
|
||||||
|
for (j = 0; j < encounter->count; j++) {
|
||||||
|
if (encounter->enemy[j] != NULL) {
|
||||||
|
hasEnemy = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (hasEnemy) {
|
||||||
|
livingEncounters++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (livingEncounters != 1) {
|
||||||
|
return ApiStatus_DONE2;
|
||||||
|
} else {
|
||||||
|
script->varTable[1] = TRUE;
|
||||||
|
return ApiStatus_DONE2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
EvtScript N(EVS_NpcDefeat_Pokey_01) = {
|
||||||
|
EVT_CALL(GetBattleOutcome, LVar0)
|
||||||
|
EVT_SWITCH(LVar0)
|
||||||
|
EVT_CASE_EQ(OUTCOME_PLAYER_WON)
|
||||||
|
EVT_IF_EQ(GF_ISK07_Defeated_Mummies, FALSE)
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_CALL(N(IsLastEnemy))
|
||||||
|
EVT_IF_EQ(LVar1, TRUE)
|
||||||
|
EVT_CALL(DisablePlayerInput, TRUE)
|
||||||
|
EVT_CALL(PlaySound, SOUND_B)
|
||||||
|
EVT_WAIT(30)
|
||||||
|
EVT_CALL(SetTimeFreezeMode, TIME_FREEZE_PARTIAL)
|
||||||
|
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(2.0))
|
||||||
|
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, -150, -390, 571)
|
||||||
|
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, -251, -390, 553)
|
||||||
|
EVT_CALL(SetPanTarget, CAM_DEFAULT, -251, -390, 553)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
|
||||||
|
EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0))
|
||||||
|
EVT_WAIT(45)
|
||||||
|
EVT_CALL(MakeItemEntity, ITEM_RUINS_KEY, -250, -240, 545, ITEM_SPAWN_MODE_FALL_NEVER_VANISH, GF_ISK07_Item_RuinsKey)
|
||||||
|
EVT_SET(GF_ISK07_Defeated_Mummies, TRUE)
|
||||||
|
EVT_EXEC_WAIT(N(EVS_OpenEntryDoor))
|
||||||
|
EVT_WAIT(60)
|
||||||
|
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(90.0))
|
||||||
|
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 0)
|
||||||
|
EVT_CALL(SetTimeFreezeMode, TIME_FREEZE_NORMAL)
|
||||||
|
EVT_CALL(DisablePlayerInput, FALSE)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(DoNpcDefeat)
|
||||||
|
EVT_CASE_EQ(OUTCOME_PLAYER_FLED)
|
||||||
|
EVT_CALL(OnPlayerFled, 0)
|
||||||
|
EVT_CASE_EQ(OUTCOME_ENEMY_FLED)
|
||||||
|
EVT_CALL(SetEnemyFlagBits, NPC_SELF, ENEMY_FLAGS_FLED, 1)
|
||||||
|
EVT_CALL(RemoveNpc, NPC_SELF)
|
||||||
|
EVT_END_SWITCH
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_NpcIdle_Pokey_01) = {
|
||||||
|
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAGS_100000 | ENEMY_FLAGS_IGNORE_TOUCH | ENEMY_FLAGS_IGNORE_JUMP | ENEMY_FLAGS_IGNORE_HAMMER | ENEMY_FLAGS_10000000, 1)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_2, TRUE)
|
||||||
|
EVT_LABEL(1)
|
||||||
|
EVT_IF_EQ(AF_ISK07_MummiesReleased, FALSE)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_GOTO(1)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(SetNpcYaw, NPC_SELF, 105)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_2, FALSE)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_40, TRUE)
|
||||||
|
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAGS_100000 | ENEMY_FLAGS_IGNORE_TOUCH | ENEMY_FLAGS_IGNORE_JUMP | ENEMY_FLAGS_IGNORE_HAMMER | ENEMY_FLAGS_10000000, 0)
|
||||||
|
EVT_CALL(NpcMoveTo, NPC_SELF, -140, 528, 10)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_40, FALSE)
|
||||||
|
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAGS_40000000, 1)
|
||||||
|
EVT_CALL(BindNpcAI, NPC_SELF, EVT_PTR(N(EVS_NpcAI_PokeyMummy)))
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_NpcIdle_Pokey_02) = {
|
||||||
|
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAGS_100000 | ENEMY_FLAGS_IGNORE_TOUCH | ENEMY_FLAGS_IGNORE_JUMP | ENEMY_FLAGS_IGNORE_HAMMER | ENEMY_FLAGS_10000000, 1)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_2, TRUE)
|
||||||
|
EVT_LABEL(1)
|
||||||
|
EVT_IF_EQ(AF_ISK07_MummiesReleased, FALSE)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_GOTO(1)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_2, FALSE)
|
||||||
|
EVT_WAIT(15)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_40, TRUE)
|
||||||
|
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAGS_100000 | ENEMY_FLAGS_IGNORE_TOUCH | ENEMY_FLAGS_IGNORE_JUMP | ENEMY_FLAGS_IGNORE_HAMMER | ENEMY_FLAGS_10000000, 0)
|
||||||
|
EVT_CALL(NpcMoveTo, NPC_SELF, 47, 543, 10)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_40, FALSE)
|
||||||
|
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAGS_40000000, 1)
|
||||||
|
EVT_CALL(BindNpcAI, NPC_SELF, EVT_PTR(N(EVS_NpcAI_PokeyMummy)))
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_NpcIdle_Pokey_03) = {
|
||||||
|
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAGS_100000 | ENEMY_FLAGS_IGNORE_TOUCH | ENEMY_FLAGS_IGNORE_JUMP | ENEMY_FLAGS_IGNORE_HAMMER | ENEMY_FLAGS_10000000, 1)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_2, TRUE)
|
||||||
|
EVT_LABEL(1)
|
||||||
|
EVT_IF_EQ(AF_ISK07_MummiesReleased, FALSE)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_GOTO(1)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_2, FALSE)
|
||||||
|
EVT_WAIT(15)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_40, TRUE)
|
||||||
|
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAGS_100000 | ENEMY_FLAGS_IGNORE_TOUCH | ENEMY_FLAGS_IGNORE_JUMP | ENEMY_FLAGS_IGNORE_HAMMER | ENEMY_FLAGS_10000000, 0)
|
||||||
|
EVT_CALL(NpcMoveTo, NPC_SELF, 227, 489, 10)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_40, FALSE)
|
||||||
|
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAGS_40000000, 1)
|
||||||
|
EVT_CALL(BindNpcAI, NPC_SELF, EVT_PTR(N(EVS_NpcAI_PokeyMummy)))
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_NpcInit_Pokey_01) = {
|
||||||
|
EVT_IF_EQ(GF_ISK07_Defeated_Mummies, FALSE)
|
||||||
|
EVT_CALL(SetSelfEnemyFlags, ENEMY_FLAGS_800000)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_Pokey_01)))
|
||||||
|
EVT_CALL(BindNpcDefeat, NPC_SELF, EVT_PTR(N(EVS_NpcDefeat_Pokey_01)))
|
||||||
|
EVT_CALL(InterpNpcYaw, NPC_SELF, 100, 0)
|
||||||
|
EVT_CALL(func_800457C4, 3)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_NpcInit_Pokey_02) = {
|
||||||
|
EVT_IF_EQ(GF_ISK07_Defeated_Mummies, FALSE)
|
||||||
|
EVT_CALL(SetSelfEnemyFlags, ENEMY_FLAGS_800000)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_Pokey_02)))
|
||||||
|
EVT_CALL(BindNpcDefeat, NPC_SELF, EVT_PTR(N(EVS_NpcDefeat_Pokey_01)))
|
||||||
|
EVT_CALL(func_800457C4, 3)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_NpcInit_Pokey_03) = {
|
||||||
|
EVT_IF_EQ(GF_ISK07_Defeated_Mummies, FALSE)
|
||||||
|
EVT_CALL(SetSelfEnemyFlags, ENEMY_FLAGS_800000)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_Pokey_03)))
|
||||||
|
EVT_CALL(BindNpcDefeat, NPC_SELF, EVT_PTR(N(EVS_NpcDefeat_Pokey_01)))
|
||||||
|
EVT_CALL(func_800457C4, 3)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_Pokey_01) = {
|
||||||
|
.id = NPC_Pokey_01,
|
||||||
|
.settings = &N(NpcSettings_PokeyMummy),
|
||||||
|
.pos = { -132.0f, -390.0f, 492.0f },
|
||||||
|
.yaw = 304,
|
||||||
|
.flags = ENEMY_FLAGS_200 | ENEMY_FLAGS_800,
|
||||||
|
.init = &N(EVS_NpcInit_Pokey_01),
|
||||||
|
.drops = POKEY_MUMMY_DROPS,
|
||||||
|
.territory = {
|
||||||
|
.wander = {
|
||||||
|
.isFlying = TRUE,
|
||||||
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||||
|
.wanderShape = SHAPE_CYLINDER,
|
||||||
|
.centerPos = { -301, 0, 427 },
|
||||||
|
.wanderSize = { 200 },
|
||||||
|
.detectShape = SHAPE_CYLINDER,
|
||||||
|
.detectPos = { -301, 0, 427 },
|
||||||
|
.detectSize = { 400 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.animations = POKEY_MUMMY_ANIMS,
|
||||||
|
};
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_Pokey_02) = {
|
||||||
|
.id = NPC_Pokey_02,
|
||||||
|
.settings = &N(NpcSettings_PokeyMummy),
|
||||||
|
.pos = { 45.0f, -390.0f, 507.0f },
|
||||||
|
.yaw = 263,
|
||||||
|
.flags = ENEMY_FLAGS_200 | ENEMY_FLAGS_800,
|
||||||
|
.init = &N(EVS_NpcInit_Pokey_02),
|
||||||
|
.drops = POKEY_MUMMY_DROPS,
|
||||||
|
.territory = {
|
||||||
|
.wander = {
|
||||||
|
.isFlying = TRUE,
|
||||||
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||||
|
.wanderShape = SHAPE_CYLINDER,
|
||||||
|
.centerPos = { 52, -390, 573 },
|
||||||
|
.wanderSize = { 50 },
|
||||||
|
.detectShape = SHAPE_CYLINDER,
|
||||||
|
.detectPos = { 52, -390, 573 },
|
||||||
|
.detectSize = { 150 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.animations = POKEY_MUMMY_ANIMS,
|
||||||
|
};
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_Pokey_03) = {
|
||||||
|
.id = NPC_Pokey_03,
|
||||||
|
.settings = &N(NpcSettings_PokeyMummy),
|
||||||
|
.pos = { 220.0f, -389.0f, 467.0f },
|
||||||
|
.yaw = 244,
|
||||||
|
.flags = ENEMY_FLAGS_200 | ENEMY_FLAGS_800,
|
||||||
|
.init = &N(EVS_NpcInit_Pokey_03),
|
||||||
|
.drops = POKEY_MUMMY_DROPS,
|
||||||
|
.territory = {
|
||||||
|
.wander = {
|
||||||
|
.isFlying = TRUE,
|
||||||
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||||
|
.wanderShape = SHAPE_CYLINDER,
|
||||||
|
.centerPos = { 243, -390, 523 },
|
||||||
|
.wanderSize = { 50 },
|
||||||
|
.detectShape = SHAPE_CYLINDER,
|
||||||
|
.detectPos = { 243, -390, 523 },
|
||||||
|
.detectSize = { 150 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.animations = POKEY_MUMMY_ANIMS,
|
||||||
|
};
|
||||||
|
|
||||||
|
NpcGroupList N(DefaultNPCs) = {
|
||||||
|
NPC_GROUP(N(NpcData_Pokey_01), BTL_ISK_PART_1_FORMATION_00, BTL_ISK_PART_1_STAGE_0C),
|
||||||
|
NPC_GROUP(N(NpcData_Pokey_02), BTL_ISK_PART_1_FORMATION_02, BTL_ISK_PART_1_STAGE_0C),
|
||||||
|
NPC_GROUP(N(NpcData_Pokey_03), BTL_ISK_PART_1_FORMATION_03, BTL_ISK_PART_1_STAGE_0C),
|
||||||
|
{}
|
||||||
|
};
|
70
src/world/area_isk/isk_07/isk_07_4_stairs.c
Normal file
70
src/world/area_isk/isk_07/isk_07_4_stairs.c
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
#include "isk_07.h"
|
||||||
|
|
||||||
|
EvtScript N(EVS_RedStairs_FlipCCW) = {
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o1994, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_CLEAR_BITS, COLLIDER_o2000, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(PlaySoundAtCollider, COLLIDER_o2000, SOUND_80000002, 0)
|
||||||
|
EVT_CALL(MakeLerp, 0, 90, 30, EASING_QUADRATIC_OUT)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_CALL(RotateModel, MODEL_g311, LVar0, 0, 0, 1)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 1)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(StopSound, SOUND_80000002)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_RedStairs_FlipCW) = {
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_CLEAR_BITS, COLLIDER_o1994, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o2000, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(PlaySoundAtCollider, COLLIDER_o1994, SOUND_80000002, 0)
|
||||||
|
EVT_CALL(MakeLerp, 90, 0, 30, EASING_QUADRATIC_OUT)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_CALL(RotateModel, MODEL_g311, LVar0, 0, 0, 1)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 1)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(StopSound, SOUND_80000002)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_FlipRedStairs) = {
|
||||||
|
EVT_CALL(InterpCamTargetPos, 0, 1, 369, -349, 369, 20)
|
||||||
|
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(1.0))
|
||||||
|
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, 369, -349, 369)
|
||||||
|
EVT_CALL(SetPanTarget, CAM_DEFAULT, 369, -349, 369)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
|
||||||
|
EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0))
|
||||||
|
EVT_IF_EQ(MF_StairsFlipped, FALSE)
|
||||||
|
EVT_EXEC_WAIT(N(EVS_RedStairs_FlipCCW))
|
||||||
|
EVT_SET(MF_StairsFlipped, TRUE)
|
||||||
|
EVT_ELSE
|
||||||
|
EVT_EXEC_WAIT(N(EVS_RedStairs_FlipCW))
|
||||||
|
EVT_SET(MF_StairsFlipped, FALSE)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(ShakeCam, CAM_DEFAULT, 0, 3, EVT_FLOAT(0.1))
|
||||||
|
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0))
|
||||||
|
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 0)
|
||||||
|
EVT_CALL(DisablePlayerInput, FALSE)
|
||||||
|
EVT_SET(AF_ISK07_FlippingRedStairs, FALSE)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_SetupStairs) = {
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_CLEAR_BITS, COLLIDER_o1994, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o2000, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_SET(MF_StairsFlipped, FALSE)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_FlipRedStairs)), TRIGGER_AREA_FLAG_SET, AF_ISK07_FlippingRedStairs, 1, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
95
src/world/area_isk/isk_07/isk_07_5_lock.c
Normal file
95
src/world/area_isk/isk_07/isk_07_5_lock.c
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
#include "isk_07.h"
|
||||||
|
|
||||||
|
#include "world/common/todo/RemovePadlock.inc.c"
|
||||||
|
|
||||||
|
s32 N(ItemList_RuinsKey)[] = {
|
||||||
|
ITEM_RUINS_KEY,
|
||||||
|
ITEM_NONE
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_UnlockPrompt_RuinsDoor) = {
|
||||||
|
EVT_SET_GROUP(EVT_GROUP_00)
|
||||||
|
EVT_CALL(SetTimeFreezeMode, TIME_FREEZE_PARTIAL)
|
||||||
|
EVT_CALL(ShowKeyChoicePopup)
|
||||||
|
EVT_SWITCH(LVar0)
|
||||||
|
EVT_CASE_EQ(0)
|
||||||
|
EVT_CALL(ShowMessageAtScreenPos, MSG_Menus_00D8, 160, 40)
|
||||||
|
EVT_CALL(CloseChoicePopup)
|
||||||
|
EVT_CALL(SetTimeFreezeMode, TIME_FREEZE_NORMAL)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_CASE_EQ(-1)
|
||||||
|
EVT_CALL(CloseChoicePopup)
|
||||||
|
EVT_CALL(SetTimeFreezeMode, TIME_FREEZE_NORMAL)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END_SWITCH
|
||||||
|
EVT_CALL(PlaySoundAt, SOUND_269, 0, -300, -380, 530)
|
||||||
|
EVT_CALL(RemoveKeyItemAt, LVar1)
|
||||||
|
EVT_SET(GF_ISK07_UnlockedDoor, TRUE)
|
||||||
|
EVT_SET(LVar0, MV_LockEntityID)
|
||||||
|
EVT_CALL(N(RemovePadlock))
|
||||||
|
EVT_SET(LVar1, 0)
|
||||||
|
EVT_WAIT(5)
|
||||||
|
EVT_CALL(PlaySoundAtCollider, COLLIDER_deilittw, SOUND_265, 0)
|
||||||
|
EVT_CALL(MakeLerp, 0, 65, 65, EASING_LINEAR)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_CALL(TranslateGroup, MODEL_g310, 0, LVar0, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 1)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilittw, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(CloseChoicePopup)
|
||||||
|
EVT_CALL(SetTimeFreezeMode, TIME_FREEZE_NORMAL)
|
||||||
|
EVT_UNBIND
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_SetupLock) = {
|
||||||
|
EVT_IF_EQ(GF_ISK07_UnlockedDoor, FALSE)
|
||||||
|
EVT_CALL(MakeTransformGroup, MODEL_g310)
|
||||||
|
EVT_BIND_PADLOCK(EVT_PTR(N(EVS_UnlockPrompt_RuinsDoor)), TRIGGER_WALL_PRESS_A, EVT_ENTITY_INDEX(0), EVT_PTR(N(ItemList_RuinsKey)), 0, 1)
|
||||||
|
EVT_ELSE
|
||||||
|
EVT_CALL(EnableModel, MODEL_g310, FALSE)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilittw, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o2057, 0, 65, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o2058, 0, 65, 0)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilitte, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_ShutEntryDoor) = {
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_CLEAR_BITS, COLLIDER_deilitte, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(PlaySoundAtCollider, COLLIDER_deilitte, SOUND_266, 0)
|
||||||
|
EVT_CALL(MakeLerp, 65, 0, 15, EASING_QUADRATIC_IN)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o2057, 0, LVar0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o2058, 0, LVar0, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 1)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(PlaySoundAtCollider, COLLIDER_deilitte, SOUND_267, 0)
|
||||||
|
EVT_CALL(ShakeCam, CAM_DEFAULT, 0, 10, EVT_FLOAT(0.3))
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_OpenEntryDoor) = {
|
||||||
|
EVT_CALL(MakeLerp, 0, 65, 15, EASING_LINEAR)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o2057, 0, LVar0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o2058, 0, LVar0, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 1)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilitte, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
55
src/world/area_isk/isk_07/isk_07_6_switch.c
Normal file
55
src/world/area_isk/isk_07/isk_07_6_switch.c
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
#include "isk_07.h"
|
||||||
|
|
||||||
|
extern EvtScript N(EVS_OnTouch_StairSwitch);
|
||||||
|
|
||||||
|
API_CALLABLE(N(WaitForPlayerTouchingGround)) {
|
||||||
|
if (gCollisionStatus.currentFloor == COLLIDER_o2022) {
|
||||||
|
return ApiStatus_BLOCK;
|
||||||
|
} else {
|
||||||
|
return ApiStatus_DONE2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
EvtScript N(EVS_SetupSwitch) = {
|
||||||
|
EVT_CALL(ParentColliderToModel, COLLIDER_o2022, MODEL_g313)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_OnTouch_StairSwitch)), TRIGGER_FLOOR_TOUCH, COLLIDER_o2022, 1, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_OnTouch_StairSwitch) = {
|
||||||
|
EVT_CALL(IsPlayerOnValidFloor, LVar0)
|
||||||
|
EVT_IF_EQ(LVar0, FALSE)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(DisablePlayerInput, TRUE)
|
||||||
|
EVT_CALL(PlaySoundAtCollider, COLLIDER_o2022, SOUND_208A, 0)
|
||||||
|
EVT_CALL(MakeLerp, 0, -14, 30, EASING_LINEAR)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_g313, 0, LVar0, 0)
|
||||||
|
EVT_CALL(UpdateColliderTransform, COLLIDER_o2022)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 1)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(PlaySoundAtCollider, COLLIDER_o2022, SOUND_208B, 0)
|
||||||
|
EVT_SET(AF_ISK07_FlippingRedStairs, TRUE)
|
||||||
|
EVT_LABEL(15)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(AF_ISK07_FlippingRedStairs, TRUE)
|
||||||
|
EVT_GOTO(15)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(MakeLerp, -14, 0, 5, EASING_LINEAR)
|
||||||
|
EVT_LABEL(20)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_g313, 0, LVar0, 0)
|
||||||
|
EVT_CALL(UpdateColliderTransform, COLLIDER_o2022)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 1)
|
||||||
|
EVT_GOTO(20)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(N(WaitForPlayerTouchingGround))
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
139
src/world/area_isk/isk_07/isk_07_7_ambush.c
Normal file
139
src/world/area_isk/isk_07/isk_07_7_ambush.c
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
#include "isk_07.h"
|
||||||
|
|
||||||
|
extern EvtScript N(EVS_OpenSarcophagus1);
|
||||||
|
extern EvtScript N(EVS_OpenSarcophagus2);
|
||||||
|
extern EvtScript N(EVS_OpenSarcophagus3);
|
||||||
|
|
||||||
|
EvtScript N(EVS_SetupSarcophagi) = {
|
||||||
|
EVT_IF_EQ(GF_ISK07_OpenedSarcophagi, FALSE)
|
||||||
|
EVT_SET(AF_ISK07_OpeningSarcophagus1, FALSE)
|
||||||
|
EVT_SET(AF_ISK07_OpeningSarcophagus2, FALSE)
|
||||||
|
EVT_SET(AF_ISK07_OpeningSarcophagus3, FALSE)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o2039, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o2040, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o2041, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_IF_EQ(GF_ISK07_OpenedSarcophagi, FALSE)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(PlaySound, SOUND_A)
|
||||||
|
EVT_CALL(DisablePlayerInput, TRUE)
|
||||||
|
EVT_CALL(ShakeCam, CAM_DEFAULT, 0, 30, EVT_FLOAT(1.0))
|
||||||
|
EVT_CALL(SetNpcYaw, NPC_Pokey_01, 105)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_Pokey_01, NPC_FLAG_2, FALSE)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_Pokey_02, NPC_FLAG_2, FALSE)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_Pokey_03, NPC_FLAG_2, FALSE)
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_WAIT(12)
|
||||||
|
EVT_CALL(InterpPlayerYaw, 109, 0)
|
||||||
|
EVT_WAIT(3)
|
||||||
|
EVT_CALL(func_802D2520, ANIM_Mario_10002, 5, 0, 1, 1, 0)
|
||||||
|
EVT_CALL(SetPlayerAnimation, ANIM_Mario_8000A)
|
||||||
|
EVT_WAIT(20)
|
||||||
|
EVT_CALL(func_802D2520, ANIM_Mario_10002, 0, 0, 0, 0, 0)
|
||||||
|
EVT_CALL(SetPlayerAnimation, ANIM_Mario_10002)
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(2.0))
|
||||||
|
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, -151, -390, 576)
|
||||||
|
EVT_CALL(SetPanTarget, CAM_DEFAULT, -151, -390, 576)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
|
||||||
|
EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0))
|
||||||
|
EVT_EXEC(N(EVS_OpenSarcophagus1))
|
||||||
|
EVT_WAIT(15)
|
||||||
|
EVT_CALL(SetPanTarget, CAM_DEFAULT, 51, -390, 589)
|
||||||
|
EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0))
|
||||||
|
EVT_EXEC(N(EVS_OpenSarcophagus2))
|
||||||
|
EVT_WAIT(15)
|
||||||
|
EVT_CALL(SetPanTarget, CAM_DEFAULT, 239, -390, 515)
|
||||||
|
EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0))
|
||||||
|
EVT_EXEC(N(EVS_OpenSarcophagus3))
|
||||||
|
EVT_WAIT(15)
|
||||||
|
EVT_CALL(SetPanTarget, CAM_DEFAULT, 517, -390, 292)
|
||||||
|
EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0))
|
||||||
|
EVT_EXEC(N(EVS_ShutEntryDoor))
|
||||||
|
EVT_WAIT(30)
|
||||||
|
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(90.0))
|
||||||
|
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 0)
|
||||||
|
EVT_SET(AF_ISK07_MummiesReleased, TRUE)
|
||||||
|
EVT_CALL(DisablePlayerInput, FALSE)
|
||||||
|
EVT_ELSE
|
||||||
|
EVT_SET(AF_ISK07_OpeningSarcophagus1, TRUE)
|
||||||
|
EVT_SET(AF_ISK07_OpeningSarcophagus2, TRUE)
|
||||||
|
EVT_SET(AF_ISK07_OpeningSarcophagus3, TRUE)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_g323, 38, 0, 13)
|
||||||
|
EVT_CALL(RotateModel, MODEL_g323, 35, 0, 1, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_g327, 38, 0, 13)
|
||||||
|
EVT_CALL(RotateModel, MODEL_g327, 35, 0, 1, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_g331, 38, 0, 13)
|
||||||
|
EVT_CALL(RotateModel, MODEL_g331, 35, 0, 1, 0)
|
||||||
|
EVT_WAIT(5)
|
||||||
|
EVT_SET(AF_ISK07_OpeningSarcophagus1, FALSE)
|
||||||
|
EVT_SET(AF_ISK07_OpeningSarcophagus2, FALSE)
|
||||||
|
EVT_SET(AF_ISK07_OpeningSarcophagus3, FALSE)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o2036, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o2037, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o2038, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_SET(AF_ISK07_MummiesReleased, TRUE)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_OpenSarcophagusAnim) = {
|
||||||
|
EVT_CALL(PlaySoundAtModel, LVar3, SOUND_1D1, 0)
|
||||||
|
EVT_CALL(TranslateModel, LVar3, 0, 0, 13)
|
||||||
|
EVT_WAIT(3)
|
||||||
|
EVT_CALL(MakeLerp, 0, 35, 9, EASING_COS_IN_OUT)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_SET(LVar2, LVar0)
|
||||||
|
EVT_MULF(LVar2, EVT_FLOAT(1.1))
|
||||||
|
EVT_CALL(TranslateModel, LVar3, LVar2, 0, 13)
|
||||||
|
EVT_CALL(RotateModel, LVar3, LVar0, 0, 1, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_NE(LVar1, 0)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_WAIT(3)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_OpenSarcophagus1) = {
|
||||||
|
EVT_SET(AF_ISK07_OpeningSarcophagus1, TRUE)
|
||||||
|
EVT_SET(LVar3, MODEL_g323)
|
||||||
|
EVT_EXEC_WAIT(N(EVS_OpenSarcophagusAnim))
|
||||||
|
EVT_SET(AF_ISK07_OpeningSarcophagus1, FALSE)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o2036, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_CLEAR_BITS, COLLIDER_o2039, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_OpenSarcophagus2) = {
|
||||||
|
EVT_SET(AF_ISK07_OpeningSarcophagus2, TRUE)
|
||||||
|
EVT_SET(LVar3, MODEL_g327)
|
||||||
|
EVT_EXEC_WAIT(N(EVS_OpenSarcophagusAnim))
|
||||||
|
EVT_SET(AF_ISK07_OpeningSarcophagus2, FALSE)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o2037, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_CLEAR_BITS, COLLIDER_o2040, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_OpenSarcophagus3) = {
|
||||||
|
EVT_SET(AF_ISK07_OpeningSarcophagus3, TRUE)
|
||||||
|
EVT_SET(LVar3, MODEL_g331)
|
||||||
|
EVT_EXEC_WAIT(N(EVS_OpenSarcophagusAnim))
|
||||||
|
EVT_SET(AF_ISK07_OpeningSarcophagus3, FALSE)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o2038, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_CLEAR_BITS, COLLIDER_o2041, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
@ -1,10 +0,0 @@
|
|||||||
#include "isk_08.h"
|
|
||||||
|
|
||||||
static char* N(exit_str_0) = "isk_09";
|
|
||||||
static char* N(exit_str_1) = "isk_10";
|
|
||||||
static char* N(exit_str_2) = "isk_07";
|
|
||||||
static char* N(exit_str_3) = "isk_11";
|
|
||||||
|
|
||||||
#include "world/common/enemy/ai/TackleAI.inc.c"
|
|
||||||
|
|
||||||
#include "world/common/todo/AwaitPlayerNearNpc.inc.c"
|
|
@ -2,8 +2,22 @@
|
|||||||
/// @brief Dry Dry Ruins - Descending Stairs 2
|
/// @brief Dry Dry Ruins - Descending Stairs 2
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "../isk.h"
|
|
||||||
#include "message_ids.h"
|
#include "message_ids.h"
|
||||||
#include "map.h"
|
#include "map.h"
|
||||||
|
|
||||||
|
#include "../isk.h"
|
||||||
|
#include "mapfs/isk_08_shape.h"
|
||||||
|
#include "mapfs/isk_08_hit.h"
|
||||||
|
|
||||||
|
#include "sprite/npc/BuzzyBeetle.h"
|
||||||
|
|
||||||
|
enum {
|
||||||
|
NPC_BuzzyBeetle = 1,
|
||||||
|
};
|
||||||
|
|
||||||
#define NAMESPACE isk_08
|
#define NAMESPACE isk_08
|
||||||
|
|
||||||
|
extern EvtScript N(EVS_Main);
|
||||||
|
extern EvtScript N(EVS_SetupFlames);
|
||||||
|
extern EvtScript N(EVS_SetupBombableWall);
|
||||||
|
extern NpcGroupList N(DefaultNPCs);
|
||||||
|
15
src/world/area_isk/isk_08/isk_08_0_header.c
Normal file
15
src/world/area_isk/isk_08/isk_08_0_header.c
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#include "isk_08.h"
|
||||||
|
|
||||||
|
EntryList N(Entrances) = {
|
||||||
|
[isk_08_ENTRY_0] { -510.0, -390.0, 207.0, 150.0 },
|
||||||
|
[isk_08_ENTRY_1] { -557.0, -520.0, 224.0, 150.0 },
|
||||||
|
[isk_08_ENTRY_2] { -401.0, -390.0, 447.0, 320.0 },
|
||||||
|
[isk_08_ENTRY_3] { -401.0, -520.0, 447.0, 320.0 },
|
||||||
|
};
|
||||||
|
|
||||||
|
MapSettings N(settings) = {
|
||||||
|
.main = &N(EVS_Main),
|
||||||
|
.entryList = &N(Entrances),
|
||||||
|
.entryCount = ENTRY_COUNT(N(Entrances)),
|
||||||
|
.tattle = { MSG_MapTattle_isk_08 },
|
||||||
|
};
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user