mirror of
https://github.com/pmret/papermario.git
synced 2024-11-08 12:02:30 +01:00
sbk map data (#802)
* jan_00 ok * whale cleanup * sbk * format cleanup * fixes, revisions, and some trd * stop warnings Co-authored-by: HailSanta <Hail2Santa@gmail.com>
This commit is contained in:
parent
73af4eb5a0
commit
43c9a7c91d
@ -291,6 +291,8 @@ typedef struct BombableRockData {
|
|||||||
/* 0x88 */ f32 fragmentFallSpeed[6];
|
/* 0x88 */ f32 fragmentFallSpeed[6];
|
||||||
} BombableRockData; // size = 0xA0
|
} BombableRockData; // size = 0xA0
|
||||||
|
|
||||||
|
typedef s32 TweesterPath[0];
|
||||||
|
|
||||||
typedef struct TweesterData {
|
typedef struct TweesterData {
|
||||||
/* 0x00 */ s8 unk_00;
|
/* 0x00 */ s8 unk_00;
|
||||||
/* 0x01 */ s8 faceAnimState;
|
/* 0x01 */ s8 faceAnimState;
|
||||||
|
@ -29,6 +29,10 @@
|
|||||||
#define MAP_RODATA_PAD(n,name) const s32 N(rodata_pad_##name)[n] = {};
|
#define MAP_RODATA_PAD(n,name) const s32 N(rodata_pad_##name)[n] = {};
|
||||||
#define MAP_STATIC_PAD(n,name) static s32 N(static_pad_##name)[n];
|
#define MAP_STATIC_PAD(n,name) static s32 N(static_pad_##name)[n];
|
||||||
|
|
||||||
|
// standardized macro for reseting data section after a INCLUDE_ASM
|
||||||
|
//TODO these should all be removed after map decomp is done
|
||||||
|
#define MAP_DATA_SECTION_START __asm__(".section .data\n");
|
||||||
|
|
||||||
#define PHYSICAL_TO_VIRTUAL(addr) (void*)((u32)(addr) + 0x80000000)
|
#define PHYSICAL_TO_VIRTUAL(addr) (void*)((u32)(addr) + 0x80000000)
|
||||||
#define VIRTUAL_TO_PHYSICAL(addr) (u32)((u8*)(addr) - 0x80000000)
|
#define VIRTUAL_TO_PHYSICAL(addr) (u32)((u8*)(addr) - 0x80000000)
|
||||||
|
|
||||||
|
@ -10,7 +10,9 @@
|
|||||||
// temporary: some standard script names
|
// temporary: some standard script names
|
||||||
#define EVS_MakeEntities EVS_MakeEntities
|
#define EVS_MakeEntities EVS_MakeEntities
|
||||||
#define EVS_SetupMusic EVS_SetupMusic
|
#define EVS_SetupMusic EVS_SetupMusic
|
||||||
|
#define EVS_SetupFoliage EVS_SetupFoliage
|
||||||
#define EVS_BindExitTriggers EVS_BindExitTriggers
|
#define EVS_BindExitTriggers EVS_BindExitTriggers
|
||||||
|
#define EVS_EnterMap EVS_EnterMap
|
||||||
|
|
||||||
// TODO: consider moving Npc here
|
// TODO: consider moving Npc here
|
||||||
|
|
||||||
|
@ -148,7 +148,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 IsCurrentPartnerFlying(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);
|
||||||
ApiStatus SpeakToPlayer(Evt* script, s32 isInitialCall);
|
ApiStatus SpeakToPlayer(Evt* script, s32 isInitialCall);
|
||||||
|
@ -595,16 +595,42 @@
|
|||||||
EVT_END \
|
EVT_END \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define EVT_EXIT_DOUBLE_DOOR(exitIdx, colliderID, leftDoorModelID, rightDoorModelID, map, entryIdx) \
|
||||||
|
{ \
|
||||||
|
EVT_SET_GROUP(EVT_GROUP_1B) \
|
||||||
|
EVT_CALL(DisablePlayerInput, TRUE) \
|
||||||
|
EVT_SET(LVar0, exitIdx) \
|
||||||
|
EVT_SET(LVar1, colliderID) \
|
||||||
|
EVT_SET(LVar2, leftDoorModelID) \
|
||||||
|
EVT_SET(LVar3, rightDoorModelID) \
|
||||||
|
EVT_EXEC(ExitDoubleDoor) \
|
||||||
|
EVT_WAIT(17) \
|
||||||
|
EVT_CALL(GotoMap, EVT_PTR(map), entryIdx) \
|
||||||
|
EVT_WAIT(100) \
|
||||||
|
EVT_RETURN \
|
||||||
|
EVT_END \
|
||||||
|
}
|
||||||
|
|
||||||
|
// only set perspective to standard values
|
||||||
|
#define EVT_SETUP_CAMERA_MINIMAL() \
|
||||||
|
EVT_CALL(SetCamPerspective, CAM_DEFAULT, 3, 25, 16, 4096)
|
||||||
|
|
||||||
#define EVT_SETUP_CAMERA_DEFAULT() \
|
#define EVT_SETUP_CAMERA_DEFAULT() \
|
||||||
EVT_CALL(SetCamPerspective, CAM_DEFAULT, 3, 25, 16, 4096) \
|
EVT_CALL(SetCamPerspective, CAM_DEFAULT, 3, 25, 16, 4096) \
|
||||||
EVT_CALL(SetCamBGColor, CAM_DEFAULT, 0, 0, 0) \
|
EVT_CALL(SetCamBGColor, CAM_DEFAULT, 0, 0, 0) \
|
||||||
EVT_CALL(SetCamEnabled, CAM_DEFAULT, TRUE) \
|
EVT_CALL(SetCamEnabled, CAM_DEFAULT, TRUE)
|
||||||
|
|
||||||
#define EVT_SETUP_CAMERA_NO_LEAD() \
|
#define EVT_SETUP_CAMERA_NO_LEAD() \
|
||||||
EVT_CALL(SetCamPerspective, CAM_DEFAULT, 3, 25, 16, 4096) \
|
EVT_CALL(SetCamPerspective, CAM_DEFAULT, 3, 25, 16, 4096) \
|
||||||
EVT_CALL(SetCamBGColor, CAM_DEFAULT, 0, 0, 0) \
|
EVT_CALL(SetCamBGColor, CAM_DEFAULT, 0, 0, 0) \
|
||||||
EVT_CALL(SetCamLeadPlayer, CAM_DEFAULT, FALSE) \
|
|
||||||
EVT_CALL(SetCamEnabled, CAM_DEFAULT, TRUE) \
|
EVT_CALL(SetCamEnabled, CAM_DEFAULT, TRUE) \
|
||||||
|
EVT_CALL(SetCamLeadPlayer, CAM_DEFAULT, FALSE)
|
||||||
|
|
||||||
|
// same as above with calls reordered
|
||||||
|
#define EVT_SETUP_CAMERA_ALT_NO_LEAD() \
|
||||||
|
EVT_CALL(SetCamPerspective, CAM_DEFAULT, 3, 25, 16, 4096) \
|
||||||
|
EVT_CALL(SetCamBGColor, CAM_DEFAULT, 0, 0, 0) \
|
||||||
|
EVT_CALL(SetCamLeadPlayer, CAM_DEFAULT, FALSE) \
|
||||||
|
EVT_CALL(SetCamEnabled, CAM_DEFAULT, TRUE)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -593,7 +593,7 @@ s32 make_item_entity_delayed(s32 itemID, f32 x, f32 y, f32 z, s32 itemSpawnMode,
|
|||||||
return make_item_entity(itemID, x, y, z, itemSpawnMode, pickupDelay, -1, pickupVar);
|
return make_item_entity(itemID, x, y, z, itemSpawnMode, pickupDelay, -1, pickupVar);
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 make_item_entity_at_player(s32 itemID, s32 arg1, s32 pickupMsgFlags) {
|
s32 make_item_entity_at_player(s32 itemID, s32 category, s32 pickupMsgFlags) {
|
||||||
PlayerStatus* playerStatus = &gPlayerStatus;
|
PlayerStatus* playerStatus = &gPlayerStatus;
|
||||||
ItemEntity* item;
|
ItemEntity* item;
|
||||||
Shadow* shadow;
|
Shadow* shadow;
|
||||||
@ -619,7 +619,7 @@ s32 make_item_entity_at_player(s32 itemID, s32 arg1, s32 pickupMsgFlags) {
|
|||||||
itemID &= 0xFFFF;
|
itemID &= 0xFFFF;
|
||||||
item->renderGroup = -1;
|
item->renderGroup = -1;
|
||||||
item->flags = (ITEM_ENTITY_FLAGS_CAM0 | ITEM_ENTITY_FLAGS_CAM1 | ITEM_ENTITY_FLAGS_CAM2 | ITEM_ENTITY_FLAGS_10 | ITEM_ENTITY_FLAGS_2000000);
|
item->flags = (ITEM_ENTITY_FLAGS_CAM0 | ITEM_ENTITY_FLAGS_CAM1 | ITEM_ENTITY_FLAGS_CAM2 | ITEM_ENTITY_FLAGS_10 | ITEM_ENTITY_FLAGS_2000000);
|
||||||
if (arg1 != 0) {
|
if (category != ITEM_TYPE_CONSUMABLE) {
|
||||||
item->flags |= ITEM_ENTITY_FLAGS_4000000;
|
item->flags |= ITEM_ENTITY_FLAGS_4000000;
|
||||||
}
|
}
|
||||||
item->pickupMsgFlags = pickupMsgFlags;
|
item->pickupMsgFlags = pickupMsgFlags;
|
||||||
|
@ -277,8 +277,7 @@ NpcGroupList N(npcGroupList_80243D18) = {
|
|||||||
#include "world/common/atomic/SuperBlock.data.inc.c"
|
#include "world/common/atomic/SuperBlock.data.inc.c"
|
||||||
|
|
||||||
EvtScript N(makeEntities) = {
|
EvtScript N(makeEntities) = {
|
||||||
EVT_CALL(MakeEntity, EVT_PTR(Entity_SuperBlock), 500, -360, 110, 0, MAKE_ENTITY_END)
|
EVT_MAKE_SUPER_BLOCK(500, -360, 110, 0)
|
||||||
EVT_SETUP_SUPER_BLOCK(SUPER_BLOCK_MAPVAR, SUPER_BLOCK_GAMEFLAG)
|
|
||||||
EVT_RETURN
|
EVT_RETURN
|
||||||
EVT_END
|
EVT_END
|
||||||
};
|
};
|
||||||
|
@ -51,8 +51,7 @@ EvtScript N(80241F40) = {
|
|||||||
#include "world/common/atomic/SuperBlock.data.inc.c"
|
#include "world/common/atomic/SuperBlock.data.inc.c"
|
||||||
|
|
||||||
EvtScript N(makeEntities) = {
|
EvtScript N(makeEntities) = {
|
||||||
EVT_CALL(MakeEntity, EVT_PTR(Entity_SuperBlock), -780, 120, -110, 0, MAKE_ENTITY_END)
|
EVT_MAKE_SUPER_BLOCK(-780, 120, -110, 0)
|
||||||
EVT_SETUP_SUPER_BLOCK(SUPER_BLOCK_MAPVAR, SUPER_BLOCK_GAMEFLAG)
|
|
||||||
EVT_CALL(MakeItemEntity, ITEM_STAR_PIECE, 510, 0, -90, 17, GF_FLO08_Item_StarPiece)
|
EVT_CALL(MakeItemEntity, ITEM_STAR_PIECE, 510, 0, -90, 17, GF_FLO08_Item_StarPiece)
|
||||||
EVT_RETURN
|
EVT_RETURN
|
||||||
EVT_END
|
EVT_END
|
||||||
|
@ -288,8 +288,7 @@ EvtScript N(80243E80) = {
|
|||||||
EvtScript N(makeEntities) = {
|
EvtScript N(makeEntities) = {
|
||||||
EVT_SET(AreaFlag(39), 0)
|
EVT_SET(AreaFlag(39), 0)
|
||||||
EVT_BIND_TRIGGER(N(80243E80), TRIGGER_FLOOR_TOUCH, 20, 1, 0)
|
EVT_BIND_TRIGGER(N(80243E80), TRIGGER_FLOOR_TOUCH, 20, 1, 0)
|
||||||
EVT_CALL(MakeEntity, EVT_PTR(Entity_SuperBlock), 350, 240, -100, 0, MAKE_ENTITY_END)
|
EVT_MAKE_SUPER_BLOCK(350, 240, -100, 0)
|
||||||
EVT_SETUP_SUPER_BLOCK(SUPER_BLOCK_MAPVAR, SUPER_BLOCK_GAMEFLAG)
|
|
||||||
EVT_CALL(MakeEntity, EVT_PTR(Entity_ScriptSpring), 472, 100, -100, 0, MAKE_ENTITY_END)
|
EVT_CALL(MakeEntity, EVT_PTR(Entity_ScriptSpring), 472, 100, -100, 0, MAKE_ENTITY_END)
|
||||||
EVT_CALL(AssignScript, EVT_PTR(N(80243DB0)))
|
EVT_CALL(AssignScript, EVT_PTR(N(80243DB0)))
|
||||||
EVT_RETURN
|
EVT_RETURN
|
||||||
|
@ -62,8 +62,7 @@ EvtScript N(EVS_DropLastLetter) = {
|
|||||||
EvtScript N(EVS_Main) = {
|
EvtScript N(EVS_Main) = {
|
||||||
EVT_CALL(DisablePlayerInput, TRUE)
|
EVT_CALL(DisablePlayerInput, TRUE)
|
||||||
EVT_CALL(ModifyGlobalOverrideFlags, 0, GLOBAL_OVERRIDES_20000)
|
EVT_CALL(ModifyGlobalOverrideFlags, 0, GLOBAL_OVERRIDES_20000)
|
||||||
EVT_SETUP_CAMERA_DEFAULT()
|
EVT_SETUP_CAMERA_NO_LEAD()
|
||||||
EVT_CALL(SetCamLeadPlayer, CAM_DEFAULT, FALSE)
|
|
||||||
EVT_THREAD
|
EVT_THREAD
|
||||||
EVT_CALL(GetCurrentPartnerID, LVar0)
|
EVT_CALL(GetCurrentPartnerID, LVar0)
|
||||||
EVT_IF_NE(LVar0, PARTNER_NONE)
|
EVT_IF_NE(LVar0, PARTNER_NONE)
|
||||||
|
@ -20,6 +20,10 @@ enum {
|
|||||||
AB_JAN_F = AreaByte(15),
|
AB_JAN_F = AreaByte(15),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
AF_JAN_0D = AreaFlag(0xD),
|
||||||
|
};
|
||||||
|
|
||||||
#define AF_JAN(index) AreaFlag(index)
|
#define AF_JAN(index) AreaFlag(index)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,34 +0,0 @@
|
|||||||
#include "jan_00.h"
|
|
||||||
#include "npc.h"
|
|
||||||
#include "effects.h"
|
|
||||||
|
|
||||||
#include "world/common/atomic/TexturePan.inc.c"
|
|
||||||
|
|
||||||
INCLUDE_ASM(s32, "world/area_jan/jan_00/B20540", func_8024030C_B2084C);
|
|
||||||
|
|
||||||
#include "world/common/HeartPlant_SpawnHeart.inc.c"
|
|
||||||
|
|
||||||
#include "world/common/StashVars.inc.c"
|
|
||||||
|
|
||||||
#include "world/common/GetItemName.inc.c"
|
|
||||||
|
|
||||||
#include "world/common/GetNpcCollisionHeight.inc.c"
|
|
||||||
|
|
||||||
#include "world/common/AddPlayerHandsOffset.inc.c"
|
|
||||||
|
|
||||||
INCLUDE_ASM(s32, "world/area_jan/jan_00/B20540", func_80240738_B20C78);
|
|
||||||
|
|
||||||
INCLUDE_ASM(s32, "world/area_jan/jan_00/B20540", func_8024078C_B20CCC);
|
|
||||||
|
|
||||||
INCLUDE_ASM(s32, "world/area_jan/jan_00/B20540", func_802407C4_B20D04);
|
|
||||||
|
|
||||||
extern s32 N(LetterDelivery_SavedNpcAnim);
|
|
||||||
#include "world/common/LetterDelivery.inc.c"
|
|
||||||
|
|
||||||
INCLUDE_ASM(s32, "world/area_jan/jan_00/B20540", func_80240B4C_B2108C);
|
|
||||||
|
|
||||||
INCLUDE_ASM(s32, "world/area_jan/jan_00/B20540", func_80240CF8_B21238);
|
|
||||||
|
|
||||||
INCLUDE_ASM(s32, "world/area_jan/jan_00/B20540", func_80240F14_B21454);
|
|
||||||
|
|
||||||
INCLUDE_ASM(s32, "world/area_jan/jan_00/B20540", func_80241134_B21674);
|
|
@ -1,24 +0,0 @@
|
|||||||
#include "jan_00.h"
|
|
||||||
|
|
||||||
static char* N(exit_str_0) = "jan_01";
|
|
||||||
static char* N(exit_str_1) = "jan_08";
|
|
||||||
static char* N(exit_str_2) = "mac_06";
|
|
||||||
|
|
||||||
extern u32 N(unkAngle1);
|
|
||||||
extern s32 N(unkAngle2);
|
|
||||||
extern s32 N(unkAngle3);
|
|
||||||
|
|
||||||
#include "world/common/atomic/WhaleAnim.inc.c"
|
|
||||||
|
|
||||||
ApiStatus jan_00_UnkPlayerPosFunc(Evt* script, s32 isInitialCall) {
|
|
||||||
Npc* player = get_npc_safe(ACTOR_PLAYER);
|
|
||||||
f32 yaw = -player->yaw;
|
|
||||||
f32 x = player->pos.x + 30.0f + (sin_deg(yaw) * 170.0f);
|
|
||||||
f32 z = player->pos.z + (cos_deg(yaw) * 170.0f);
|
|
||||||
f32 y = player->pos.y + 50.0f;
|
|
||||||
|
|
||||||
evt_set_float_variable(script, LVar0, x);
|
|
||||||
evt_set_float_variable(script, LVar1, y);
|
|
||||||
evt_set_float_variable(script, LVar2, z);
|
|
||||||
return ApiStatus_DONE2;
|
|
||||||
}
|
|
@ -1,4 +0,0 @@
|
|||||||
#include "jan_00.h"
|
|
||||||
|
|
||||||
#include "common/foliage.inc.c"
|
|
||||||
|
|
@ -2,8 +2,27 @@
|
|||||||
/// @brief Jade Jungle - Whale Cove
|
/// @brief Jade Jungle - Whale Cove
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "../jan.h"
|
|
||||||
#include "message_ids.h"
|
#include "message_ids.h"
|
||||||
#include "map.h"
|
#include "map.h"
|
||||||
|
|
||||||
|
#include "../jan.h"
|
||||||
|
#include "mapfs/jan_00_shape.h"
|
||||||
|
#include "mapfs/jan_00_hit.h"
|
||||||
|
|
||||||
|
#include "sprite/npc/HeartPlant.h"
|
||||||
|
#include "sprite/npc/WorldParakarry.h"
|
||||||
|
#include "sprite/npc/Kolorado.h"
|
||||||
|
#include "sprite/npc/JrTroopa.h"
|
||||||
|
|
||||||
|
enum {
|
||||||
|
NPC_Kolorado_01 = 0,
|
||||||
|
NPC_Kolorado_02 = 1,
|
||||||
|
NPC_JrTroopa = 2,
|
||||||
|
NPC_HeartPlant_01 = 3,
|
||||||
|
NPC_HeartPlant_02 = 4,
|
||||||
|
NPC_HeartPlant_03 = 5,
|
||||||
|
NPC_HeartPlant_04 = 6,
|
||||||
|
NPC_HeartPlant_05 = 7,
|
||||||
|
};
|
||||||
|
|
||||||
#define NAMESPACE jan_00
|
#define NAMESPACE jan_00
|
||||||
|
25
src/world/area_jan/jan_00/jan_00_0_header.c
Normal file
25
src/world/area_jan/jan_00/jan_00_0_header.c
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
|
||||||
|
#include "jan_00.h"
|
||||||
|
|
||||||
|
extern EvtScript N(EVS_Main);
|
||||||
|
|
||||||
|
EntryList N(Entrances) = {
|
||||||
|
[jan_00_ENTRY_0] { 150.0, 0.0, 200.0, 0.0 },
|
||||||
|
[jan_00_ENTRY_1] { 340.0, 0.0, 340.0, 315.0 },
|
||||||
|
[jan_00_ENTRY_2] { 340.0, 0.0, -340.0, 225.0 },
|
||||||
|
};
|
||||||
|
|
||||||
|
MapSettings N(settings) = {
|
||||||
|
.main = &N(EVS_Main),
|
||||||
|
.entryList = &N(Entrances),
|
||||||
|
.entryCount = ENTRY_COUNT(N(Entrances)),
|
||||||
|
.background = &gBackgroundImage,
|
||||||
|
.tattle = { MSG_MapTattle_jan_00 },
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_80241C10) = {
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_YOSHIS_VILLAGE, 0, 8)
|
||||||
|
EVT_CALL(ClearAmbientSounds, 250)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
73
src/world/area_jan/jan_00/jan_00_1_main.c
Normal file
73
src/world/area_jan/jan_00/jan_00_1_main.c
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
#include "jan_00.h"
|
||||||
|
#include "npc.h"
|
||||||
|
#include "effects.h"
|
||||||
|
#include "entity.h"
|
||||||
|
|
||||||
|
extern EvtScript N(EVS_80241C10);
|
||||||
|
extern NpcGroupList N(DefaultNPCs);
|
||||||
|
extern EvtScript N(EVS_MakeEntities);
|
||||||
|
|
||||||
|
extern EvtScript N(EVS_802467AC);
|
||||||
|
extern EvtScript N(EVS_80247A2C);
|
||||||
|
API_CALLABLE(func_8024030C_B2084C);
|
||||||
|
|
||||||
|
#include "world/common/atomic/TexturePan.inc.c"
|
||||||
|
#include "world/common/atomic/TexturePan.data.inc.c"
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "world/area_jan/jan_00/B20540", func_8024030C_B2084C);
|
||||||
|
MAP_DATA_SECTION_START
|
||||||
|
|
||||||
|
EvtScript N(EVS_ExitWalk_jan_01_0) = EVT_EXIT_WALK(60, jan_00_ENTRY_1, "jan_01", jan_01_ENTRY_0);
|
||||||
|
EvtScript N(EVS_ExitWalk_jan_08_0) = EVT_EXIT_WALK(60, jan_00_ENTRY_2, "jan_08", jan_08_ENTRY_0);
|
||||||
|
|
||||||
|
EvtScript N(EVS_BindExitTriggers) = {
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_jan_01_0)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilise, 1, 0)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_jan_08_0)), TRIGGER_FLOOR_ABOVE, COLLIDER_deiline, 1, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_Main) = {
|
||||||
|
EVT_SET(GB_WorldLocation, LOCATION_JADE_JUNGLE)
|
||||||
|
EVT_CALL(SetSpriteShading, SHADING_NONE)
|
||||||
|
EVT_CALL(SetCamPerspective, CAM_DEFAULT, 3, 25, 16, 4096)
|
||||||
|
EVT_CALL(SetCamBGColor, CAM_DEFAULT, 0, 0, 0)
|
||||||
|
EVT_CALL(SetCamEnabled, CAM_DEFAULT, TRUE)
|
||||||
|
EVT_CALL(SetCamLeadPlayer, CAM_DEFAULT, FALSE)
|
||||||
|
EVT_SET(GF_MAP_JadeJungle, TRUE)
|
||||||
|
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs)))
|
||||||
|
EVT_EXEC_WAIT(N(EVS_MakeEntities))
|
||||||
|
EVT_CALL(EnableTexPanning, MODEL_o135, TRUE)
|
||||||
|
EVT_CALL(EnableTexPanning, MODEL_o142, TRUE)
|
||||||
|
EVT_CALL(EnableTexPanning, MODEL_o52, TRUE)
|
||||||
|
EVT_THREAD
|
||||||
|
TEX_PAN_PARAMS_ID(TEX_PANNER_1)
|
||||||
|
TEX_PAN_PARAMS_STEP( 0, 400, 0, 0)
|
||||||
|
TEX_PAN_PARAMS_FREQ( 0, 1, 0, 0)
|
||||||
|
TEX_PAN_PARAMS_INIT( 0, 0, 0, 0)
|
||||||
|
EVT_EXEC(N(EVS_UpdateTexturePan))
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_THREAD
|
||||||
|
TEX_PAN_PARAMS_ID(TEX_PANNER_3)
|
||||||
|
TEX_PAN_PARAMS_STEP( -100, 200, 0, 0)
|
||||||
|
TEX_PAN_PARAMS_FREQ( 1, 1, 0, 0)
|
||||||
|
TEX_PAN_PARAMS_INIT( 0, 0, 0, 0)
|
||||||
|
EVT_EXEC(N(EVS_UpdateTexturePan))
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_EXEC(N(EVS_802467AC))
|
||||||
|
EVT_EXEC(N(EVS_80247A2C))
|
||||||
|
EVT_CALL(ModifyColliderFlags, 0, COLLIDER_deilitne, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(ModifyColliderFlags, 0, COLLIDER_deilitse, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(GetEntryID, LVar0)
|
||||||
|
EVT_IF_EQ(LVar0, jan_00_ENTRY_0)
|
||||||
|
EVT_EXEC(N(EVS_BindExitTriggers))
|
||||||
|
EVT_ELSE
|
||||||
|
EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers)))
|
||||||
|
EVT_EXEC(EnterWalk)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(func_8024030C_B2084C)
|
||||||
|
EVT_EXEC_WAIT(N(EVS_80241C10))
|
||||||
|
EVT_CALL(PlaySound, SOUND_80000017)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
795
src/world/area_jan/jan_00/jan_00_2_npc.c
Normal file
795
src/world/area_jan/jan_00/jan_00_2_npc.c
Normal file
@ -0,0 +1,795 @@
|
|||||||
|
#include "jan_00.h"
|
||||||
|
#include "effects.h"
|
||||||
|
#include "npc.h"
|
||||||
|
|
||||||
|
extern EvtScript N(D_80245860_B25DA0);
|
||||||
|
extern EvtScript N(EVS_NpcInteract_HeartPlant_01);
|
||||||
|
|
||||||
|
#include "world/common/HeartPlant_SpawnHeart.inc.c"
|
||||||
|
|
||||||
|
NpcSettings N(NpcSettings_Kolorado_01) = {
|
||||||
|
.height = 24,
|
||||||
|
.radius = 48,
|
||||||
|
.level = 99,
|
||||||
|
};
|
||||||
|
|
||||||
|
NpcSettings N(NpcSettings_Kolorado_02) = {
|
||||||
|
.height = 40,
|
||||||
|
.radius = 24,
|
||||||
|
.level = 99,
|
||||||
|
};
|
||||||
|
|
||||||
|
NpcSettings N(NpcSettings_JrTroopa) = {
|
||||||
|
.height = 32,
|
||||||
|
.radius = 24,
|
||||||
|
.level = 99,
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_NpcAuxAI_HeartPlant_01) = {
|
||||||
|
EVT_CALL(EnableNpcShadow, NPC_SELF, FALSE)
|
||||||
|
EVT_CALL(SetSelfVar, 0, 0)
|
||||||
|
EVT_CALL(SetSelfVar, 1, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_80242260_B227A0) = {
|
||||||
|
EVT_WAIT(45)
|
||||||
|
EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(EVS_NpcInteract_HeartPlant_01)))
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_NpcInteract_HeartPlant_01) = {
|
||||||
|
EVT_CALL(GetSelfVar, 1, LVar0)
|
||||||
|
EVT_IF_EQ(LVar0, 0)
|
||||||
|
EVT_CALL(SetSelfVar, 1, 1)
|
||||||
|
EVT_CALL(PlaySoundAtNpc, NPC_SELF, SOUND_2099, 0)
|
||||||
|
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_HeartPlant_Anim00)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(N(HeartPlant_SpawnHeart))
|
||||||
|
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_HeartPlant_Anim01)
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_CALL(BindNpcInteract, NPC_SELF, 0)
|
||||||
|
EVT_EXEC(N(D_80242260_B227A0))
|
||||||
|
EVT_WAIT(45)
|
||||||
|
EVT_CALL(SetSelfVar, 1, 0)
|
||||||
|
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_HeartPlant_Anim00)
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
NpcSettings N(NpcSettings_HeartPlant_01) = {
|
||||||
|
.height = 20,
|
||||||
|
.radius = 28,
|
||||||
|
.level = 99,
|
||||||
|
.otherAI = &N(EVS_NpcAuxAI_HeartPlant_01),
|
||||||
|
.onInteract = &N(EVS_NpcInteract_HeartPlant_01),
|
||||||
|
};
|
||||||
|
|
||||||
|
#include "world/common/atomic/LetterChoice.inc.c"
|
||||||
|
|
||||||
|
s32 N(LetterList)[] = {
|
||||||
|
ITEM_LETTER25,
|
||||||
|
ITEM_NONE
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_Kolorado_LetterDelivery) = {
|
||||||
|
EVT_CALL(N(LetterDelivery_Init),
|
||||||
|
NPC_Kolorado_02, ANIM_Kolorado_Talk, ANIM_Kolorado_Idle,
|
||||||
|
ITEM_LETTER25, 0,
|
||||||
|
MSG_CH5_001D, MSG_CH5_001E, MSG_CH5_001F, MSG_CH5_0020,
|
||||||
|
EVT_PTR(N(LetterList)))
|
||||||
|
EVT_EXEC_WAIT(N(EVS_DoLetterDelivery))
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_Kolorado_LetterReward) = {
|
||||||
|
EVT_IF_EQ(LVarC, 2)
|
||||||
|
EVT_SET(LVar0, ITEM_STAR_PIECE)
|
||||||
|
EVT_SET(LVar1, 3)
|
||||||
|
EVT_EXEC_WAIT(N(Delivery_ShowGotStarPiece))
|
||||||
|
EVT_CALL(AddStarPieces, 1)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
API_CALLABLE(func_80240B4C_B2108C);
|
||||||
|
INCLUDE_ASM(s32, "world/area_jan/jan_00/B20540", func_80240B4C_B2108C);
|
||||||
|
|
||||||
|
API_CALLABLE(func_80240CF8_B21238);
|
||||||
|
INCLUDE_ASM(s32, "world/area_jan/jan_00/B20540", func_80240CF8_B21238);
|
||||||
|
|
||||||
|
API_CALLABLE(func_80240F14_B21454);
|
||||||
|
INCLUDE_ASM(s32, "world/area_jan/jan_00/B20540", func_80240F14_B21454);
|
||||||
|
|
||||||
|
API_CALLABLE(func_80241134_B21674);
|
||||||
|
INCLUDE_ASM(s32, "world/area_jan/jan_00/B20540", func_80241134_B21674);
|
||||||
|
|
||||||
|
MAP_DATA_SECTION_START
|
||||||
|
|
||||||
|
EvtScript N(D_80242D90_B232D0) = {
|
||||||
|
EVT_CALL(func_80240CF8_B21238, LVar0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_80242DB0_B232F0) = {
|
||||||
|
EVT_CALL(GetNpcPos, NPC_Kolorado_01, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
|
||||||
|
EVT_IF_EQ(LVar0, 0)
|
||||||
|
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(90.0))
|
||||||
|
EVT_ELSE
|
||||||
|
EVT_CALL(SetCamSpeed, CAM_DEFAULT, 1)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 0)
|
||||||
|
EVT_CALL(SetCamSpeed, CAM_DEFAULT, 1)
|
||||||
|
EVT_LABEL(0)
|
||||||
|
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)
|
||||||
|
EVT_IF_GT(LVar0, -300)
|
||||||
|
EVT_CALL(GetNpcPos, NPC_Kolorado_01, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(SetCamTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
||||||
|
EVT_ELSE
|
||||||
|
EVT_SET(LVar3, LVar0)
|
||||||
|
EVT_SUB(LVar3, -300)
|
||||||
|
EVT_CALL(GetNpcPos, NPC_Kolorado_01, LVar0, LVar1, LVar2)
|
||||||
|
EVT_SUB(LVar0, LVar3)
|
||||||
|
EVT_CALL(SetCamTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_GOTO(0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_80242FA8_B234E8) = {
|
||||||
|
EVT_CALL(DisablePlayerInput, TRUE)
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, 0, 0, 310)
|
||||||
|
EVT_CALL(SetPanTarget, CAM_DEFAULT, 0, 0, 310)
|
||||||
|
EVT_CALL(SetCamPitch, CAM_DEFAULT, EVT_FLOAT(17.0), EVT_FLOAT(-7.5))
|
||||||
|
EVT_CALL(SetCamPosA, CAM_DEFAULT, EVT_FLOAT(5.0), EVT_FLOAT(0.0))
|
||||||
|
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(90.0))
|
||||||
|
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
|
||||||
|
EVT_WAIT(60)
|
||||||
|
EVT_CALL(SetPanTarget, CAM_DEFAULT, 180, 0, 0)
|
||||||
|
EVT_CALL(SetCamDistance, CAM_DEFAULT, EVT_FLOAT(500.0))
|
||||||
|
EVT_CALL(SetCamPitch, CAM_DEFAULT, EVT_FLOAT(17.0), EVT_FLOAT(-7.5))
|
||||||
|
EVT_CALL(SetCamPosA, CAM_DEFAULT, EVT_FLOAT(0.0), EVT_FLOAT(0.0))
|
||||||
|
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(0.4))
|
||||||
|
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_SET(LVar0, 0)
|
||||||
|
EVT_EXEC_GET_TID(N(D_80242D90_B232D0), LVar3)
|
||||||
|
EVT_SET(LVar0, 1)
|
||||||
|
EVT_EXEC_GET_TID(N(D_80242D90_B232D0), LVar4)
|
||||||
|
EVT_IF_LT(GB_StoryProgress, STORY_CH5_REACHED_LAVA_LAVA_ISLAND)
|
||||||
|
EVT_SET(LVar0, 2)
|
||||||
|
EVT_EXEC_GET_TID(N(D_80242D90_B232D0), LVar5)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(func_80240F14_B21454, 1)
|
||||||
|
EVT_KILL_THREAD(LVar3)
|
||||||
|
EVT_KILL_THREAD(LVar4)
|
||||||
|
EVT_IF_LT(GB_StoryProgress, STORY_CH5_REACHED_LAVA_LAVA_ISLAND)
|
||||||
|
EVT_KILL_THREAD(LVar5)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_LT(GB_StoryProgress, STORY_CH5_REACHED_LAVA_LAVA_ISLAND)
|
||||||
|
EVT_CALL(func_80240B4C_B2108C, 3, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_Kolorado_02, NPC_FLAG_100, TRUE)
|
||||||
|
EVT_CALL(SetNpcAnimation, NPC_Kolorado_02, ANIM_Kolorado_Walk)
|
||||||
|
EVT_CALL(NpcMoveTo, NPC_Kolorado_02, LVar0, LVar2, 10)
|
||||||
|
EVT_CALL(SetNpcAnimation, NPC_Kolorado_02, ANIM_Kolorado_Thrown)
|
||||||
|
EVT_CALL(SetNpcJumpscale, NPC_Kolorado_02, EVT_FLOAT(1.0))
|
||||||
|
EVT_CALL(PlaySoundAtNpc, NPC_Kolorado_02, SOUND_32C, 0)
|
||||||
|
EVT_CALL(NpcJump0, NPC_Kolorado_02, 224, 0, 20, 20)
|
||||||
|
EVT_CALL(SetNpcAnimation, NPC_Kolorado_02, ANIM_Kolorado_Walk)
|
||||||
|
EVT_CALL(NpcMoveTo, NPC_Kolorado_02, 290, 20, 20)
|
||||||
|
EVT_CALL(SetNpcAnimation, NPC_Kolorado_02, ANIM_Kolorado_Idle)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_Kolorado_02, NPC_FLAG_100, FALSE)
|
||||||
|
EVT_CALL(InterpNpcYaw, NPC_Kolorado_02, 270, 0)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(func_80240B4C_B2108C, 3, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(PlayerMoveTo, LVar0, LVar2, 15)
|
||||||
|
EVT_CALL(SetPlayerJumpscale, EVT_FLOAT(1.0))
|
||||||
|
EVT_CALL(PlayerJump, 224, 0, 20, 20)
|
||||||
|
EVT_CALL(SetPlayerAnimation, ANIM_Mario_Walking)
|
||||||
|
EVT_CALL(PlayerMoveTo, 260, 20, 15)
|
||||||
|
EVT_CALL(SetPlayerAnimation, ANIM_Mario_10002)
|
||||||
|
EVT_CALL(func_80240B4C_B2108C, 3, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(SetNpcAnimation, NPC_PARTNER, 0x00000102)
|
||||||
|
EVT_CALL(NpcMoveTo, NPC_PARTNER, LVar0, LVar2, 20)
|
||||||
|
EVT_CALL(SetNpcJumpscale, NPC_PARTNER, EVT_FLOAT(1.0))
|
||||||
|
EVT_CALL(NpcJump0, NPC_PARTNER, 224, 0, 20, 20)
|
||||||
|
EVT_CALL(PartnerIsFlying, LVar0)
|
||||||
|
EVT_IF_EQ(LVar0, FALSE)
|
||||||
|
EVT_CALL(EnablePartnerAI)
|
||||||
|
EVT_WAIT(10)
|
||||||
|
EVT_CALL(DisablePartnerAI, 0)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(NpcMoveTo, NPC_PARTNER, 230, 20, 10)
|
||||||
|
EVT_CALL(SetNpcAnimation, NPC_PARTNER, 0x00000106)
|
||||||
|
EVT_CALL(SetNpcAnimation, NPC_Kolorado_01, ANIM_Kolorado_TalkSad)
|
||||||
|
EVT_CALL(SetNpcJumpscale, NPC_Kolorado_01, 0)
|
||||||
|
EVT_CALL(NpcJump0, NPC_Kolorado_01, 158, -10, -38, 20)
|
||||||
|
EVT_CALL(InterpPlayerYaw, 270, 0)
|
||||||
|
EVT_CALL(SpeakToPlayer, NPC_Kolorado_01, ANIM_Kolorado_Walk, ANIM_Kolorado_Still, 5, MSG_CH5_0000)
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_YOSHIS_VILLAGE, 0, 8)
|
||||||
|
EVT_IF_LT(GB_StoryProgress, STORY_CH5_REACHED_LAVA_LAVA_ISLAND)
|
||||||
|
EVT_CALL(AdjustCam, CAM_DEFAULT, EVT_FLOAT(5.0), 0, 300, 15, EVT_FLOAT(-6.0))
|
||||||
|
EVT_CALL(InterpNpcYaw, NPC_Kolorado_02, 90, 0)
|
||||||
|
EVT_WAIT(20)
|
||||||
|
EVT_CALL(SpeakToPlayer, NPC_Kolorado_02, ANIM_Kolorado_Talk, ANIM_Kolorado_Idle, 1, MSG_CH5_0001)
|
||||||
|
EVT_WAIT(5)
|
||||||
|
EVT_CALL(InterpNpcYaw, NPC_Kolorado_02, 270, 4)
|
||||||
|
EVT_WAIT(10)
|
||||||
|
EVT_CALL(InterpNpcYaw, NPC_Kolorado_02, 90, 4)
|
||||||
|
EVT_WAIT(15)
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_CALL(PlaySoundAtNpc, NPC_Kolorado_02, SOUND_32C, 0)
|
||||||
|
EVT_CALL(GetNpcPos, NPC_Kolorado_02, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(NpcJump0, NPC_Kolorado_02, LVar0, LVar1, LVar2, 15)
|
||||||
|
EVT_WAIT(25)
|
||||||
|
EVT_CALL(NpcFacePlayer, NPC_Kolorado_02, 4)
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_CALL(SpeakToPlayer, NPC_Kolorado_02, ANIM_Kolorado_Panic, ANIM_Kolorado_Yell, 5, MSG_CH5_0002)
|
||||||
|
EVT_CALL(SetNpcAnimation, NPC_Kolorado_01, ANIM_Kolorado_Idle)
|
||||||
|
EVT_CALL(SetNpcSpeed, NPC_Kolorado_02, EVT_FLOAT(6.0))
|
||||||
|
EVT_CALL(SetNpcAnimation, NPC_Kolorado_02, ANIM_Kolorado_Walk)
|
||||||
|
EVT_CALL(NpcMoveTo, NPC_Kolorado_02, 330, 190, 0)
|
||||||
|
EVT_CALL(SetNpcPos, NPC_Kolorado_02, 0, -1000, 0)
|
||||||
|
EVT_SET(GB_StoryProgress, STORY_CH5_REACHED_LAVA_LAVA_ISLAND)
|
||||||
|
EVT_SETF(LVar9, EVT_FLOAT(4.0))
|
||||||
|
EVT_ELSE
|
||||||
|
EVT_SETF(LVar9, EVT_FLOAT(1.0))
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_EXEC(N(D_80245860_B25DA0))
|
||||||
|
EVT_CALL(DisablePlayerPhysics, FALSE)
|
||||||
|
EVT_CALL(EnablePartnerAI)
|
||||||
|
EVT_CALL(DisablePlayerInput, FALSE)
|
||||||
|
EVT_CALL(ResetCam, CAM_DEFAULT, LVar9)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_802437C4_B23D04) = {
|
||||||
|
EVT_LABEL(0)
|
||||||
|
EVT_CALL(GetNpcYaw, NPC_Kolorado_01, LVar0)
|
||||||
|
EVT_CALL(InterpPlayerYaw, LVar0, 0)
|
||||||
|
EVT_CALL(InterpNpcYaw, NPC_PARTNER, LVar0, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_GOTO(0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_NpcIdle_Kolorado_01) = {
|
||||||
|
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, 250, 0, 200)
|
||||||
|
EVT_CALL(SetPanTarget, CAM_DEFAULT, 250, 0, 200)
|
||||||
|
EVT_CALL(SetCamPosA, CAM_DEFAULT, EVT_FLOAT(20.0), EVT_FLOAT(0.0))
|
||||||
|
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(90.0))
|
||||||
|
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
|
||||||
|
EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0))
|
||||||
|
EVT_EXEC(N(D_80242FA8_B234E8))
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
Vec3f N(D_802438E4_B23E24)[] = {
|
||||||
|
{ 290.0, 0.0, 20.0 },
|
||||||
|
{ 245.0, 6.0, -35.0 },
|
||||||
|
{ 190.0, 10.0, -50.0 },
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_NpcInteract_Kolorado_01) = {
|
||||||
|
EVT_CALL(DisablePlayerPhysics, TRUE)
|
||||||
|
EVT_CALL(InterpPlayerYaw, 270, 0)
|
||||||
|
EVT_CALL(SpeakToPlayer, NPC_Kolorado_01, ANIM_Kolorado_Walk, ANIM_Kolorado_Still, 5, MSG_CH5_0003)
|
||||||
|
EVT_CALL(ShowChoice, MSG_Choice_0010)
|
||||||
|
EVT_IF_EQ(LVar0, 1)
|
||||||
|
EVT_CALL(ContinueSpeech, NPC_Kolorado_01, ANIM_Kolorado_Walk, ANIM_Kolorado_Still, 5, MSG_CH5_0005)
|
||||||
|
EVT_CALL(DisablePlayerPhysics, FALSE)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(EndSpeech, NPC_SELF, 0xFFFFFFFF, 0xFFFFFFFF, 5)
|
||||||
|
EVT_IF_EQ(GB_StoryProgress, STORY_CH5_TRADED_VASE_FOR_SEED)
|
||||||
|
EVT_CALL(NpcFacePlayer, NPC_Kolorado_02, 0)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(SetNpcJumpscale, NPC_SELF, 0)
|
||||||
|
EVT_CALL(GetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(NpcJump0, NPC_SELF, 158, -50, -38, 20)
|
||||||
|
EVT_SET(LVar0, 0)
|
||||||
|
EVT_EXEC(N(D_80242DB0_B232F0))
|
||||||
|
EVT_CALL(DisablePartnerAI, 0)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_PARTNER, NPC_FLAG_ENABLE_HIT_SCRIPT | NPC_FLAG_40 | NPC_FLAG_8000, TRUE)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_PARTNER, NPC_FLAG_GRAVITY, FALSE)
|
||||||
|
EVT_CALL(SetNpcAnimation, NPC_PARTNER, 0x00000106)
|
||||||
|
EVT_CALL(GetPlayerPos, LVar3, LVar4, LVar5)
|
||||||
|
EVT_CALL(func_80240B4C_B2108C, 3, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(SetPlayerJumpscale, EVT_FLOAT(0.5))
|
||||||
|
EVT_CALL(PlayerJump, LVar0, LVar1, LVar2, 20)
|
||||||
|
EVT_CALL(func_80240B4C_B2108C, 0, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(PlayerMoveTo, LVar0, LVar2, 10)
|
||||||
|
EVT_CALL(InterpPlayerYaw, 90, 0)
|
||||||
|
EVT_CALL(SetPlayerAnimation, ANIM_Mario_10002)
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_CALL(func_80240CF8_B21238, 0)
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_CALL(NpcMoveTo, NPC_PARTNER, LVar3, LVar5, 20)
|
||||||
|
EVT_CALL(func_80240B4C_B2108C, 3, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(SetNpcAnimation, NPC_PARTNER, 0x00000102)
|
||||||
|
EVT_CALL(SetNpcJumpscale, NPC_PARTNER, EVT_FLOAT(0.5))
|
||||||
|
EVT_CALL(NpcJump0, NPC_PARTNER, LVar0, LVar1, LVar2, 18)
|
||||||
|
EVT_CALL(func_80240B4C_B2108C, 1, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(NpcMoveTo, NPC_PARTNER, LVar0, LVar2, 18)
|
||||||
|
EVT_CALL(SetNpcAnimation, NPC_PARTNER, 0x00000106)
|
||||||
|
EVT_CALL(InterpNpcYaw, NPC_PARTNER, 90, 0)
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_CALL(func_80240CF8_B21238, 1)
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_IF_EQ(GB_StoryProgress, STORY_CH5_TRADED_VASE_FOR_SEED)
|
||||||
|
EVT_CALL(SetNpcAnimation, NPC_Kolorado_02, ANIM_Kolorado_Walk)
|
||||||
|
EVT_CALL(LoadPath, 20, EVT_PTR(N(D_802438E4_B23E24)), 3, EASING_LINEAR)
|
||||||
|
EVT_LOOP(0)
|
||||||
|
EVT_CALL(GetNextPathPos)
|
||||||
|
EVT_CALL(SetNpcPos, NPC_Kolorado_02, LVar1, LVar2, LVar3)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar0, 0)
|
||||||
|
EVT_BREAK_LOOP
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_CALL(func_80240B4C_B2108C, 2, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(SetNpcAnimation, NPC_Kolorado_02, ANIM_Kolorado_Thrown)
|
||||||
|
EVT_CALL(SetNpcJumpscale, NPC_Kolorado_02, EVT_FLOAT(0.5))
|
||||||
|
EVT_CALL(PlaySoundAtNpc, NPC_Kolorado_02, SOUND_32C, 0)
|
||||||
|
EVT_CALL(NpcJump0, NPC_Kolorado_02, LVar0, LVar1, LVar2, 20)
|
||||||
|
EVT_CALL(SetNpcAnimation, NPC_Kolorado_02, ANIM_Kolorado_Idle)
|
||||||
|
EVT_CALL(InterpNpcYaw, NPC_Kolorado_02, 90, 0)
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_CALL(func_80240CF8_B21238, 2)
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_CALL(SpeakToPlayer, NPC_Kolorado_02, ANIM_Kolorado_Talk, ANIM_Kolorado_Idle, 0, MSG_CH5_0007)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_IF_GE(GB_StoryProgress, STORY_CH5_SUSHIE_JOINED_PARTY)
|
||||||
|
EVT_IF_EQ(GF_MAC01_Defeated_JrTroopa4, TRUE)
|
||||||
|
EVT_GOTO(90)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(SetNpcVar, NPC_JrTroopa, 0, 1)
|
||||||
|
EVT_LOOP(0)
|
||||||
|
EVT_CALL(GetNpcVar, NPC_JrTroopa, 0, LVar0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_NE(LVar0, 1)
|
||||||
|
EVT_BREAK_LOOP
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_EXEC(N(D_802437C4_B23D04))
|
||||||
|
EVT_CALL(func_80240F14_B21454, 0)
|
||||||
|
EVT_CALL(EnableGroup, MODEL_kujira, FALSE)
|
||||||
|
EVT_ELSE
|
||||||
|
EVT_LABEL(90)
|
||||||
|
EVT_EXEC(N(D_802437C4_B23D04))
|
||||||
|
EVT_CALL(func_80240F14_B21454, 0)
|
||||||
|
EVT_CALL(EnableGroup, MODEL_kujira, FALSE)
|
||||||
|
EVT_CALL(GotoMap, EVT_PTR("mac_06"), mac_06_ENTRY_1)
|
||||||
|
EVT_WAIT(100)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_NpcInit_Kolorado_01) = {
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_1000000, TRUE)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_HAS_SHADOW, FALSE)
|
||||||
|
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_Kolorado_Still)
|
||||||
|
EVT_CALL(InterpNpcYaw, NPC_SELF, 90, 0)
|
||||||
|
EVT_CALL(GetEntryID, LVar0)
|
||||||
|
EVT_IF_EQ(LVar0, jan_00_ENTRY_0)
|
||||||
|
EVT_CALL(DisablePlayerPhysics, TRUE)
|
||||||
|
EVT_CALL(InterpPlayerYaw, 90, 0)
|
||||||
|
EVT_CALL(DisablePartnerAI, 0)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_PARTNER, NPC_FLAG_ENABLE_HIT_SCRIPT | NPC_FLAG_40 | NPC_FLAG_8000, TRUE)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_PARTNER, NPC_FLAG_GRAVITY, FALSE)
|
||||||
|
EVT_CALL(SetNpcYaw, NPC_PARTNER, 90)
|
||||||
|
EVT_CALL(SetNpcAnimation, NPC_PARTNER, 0x00000106)
|
||||||
|
EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_Kolorado_01)))
|
||||||
|
EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(EVS_NpcInteract_Kolorado_01)))
|
||||||
|
EVT_ELSE
|
||||||
|
EVT_CALL(SetNpcPos, NPC_SELF, 158, -10, -38)
|
||||||
|
EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(EVS_NpcInteract_Kolorado_01)))
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_NpcInteract_Kolorado_02) = {
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_100, TRUE)
|
||||||
|
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Kolorado_Talk, ANIM_Kolorado_Idle, 0, MSG_CH5_0006)
|
||||||
|
EVT_EXEC_WAIT(N(EVS_Kolorado_LetterDelivery))
|
||||||
|
EVT_EXEC_WAIT(N(EVS_Kolorado_LetterReward))
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_NpcInit_Kolorado_02) = {
|
||||||
|
EVT_IF_EQ(GB_StoryProgress, STORY_CH5_TRADED_VASE_FOR_SEED)
|
||||||
|
EVT_CALL(SetNpcPos, NPC_SELF, 290, 0, 20)
|
||||||
|
EVT_CALL(InterpNpcYaw, NPC_SELF, 270, 1)
|
||||||
|
EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(EVS_NpcInteract_Kolorado_02)))
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_802441C8_B24708) = {
|
||||||
|
EVT_LOOP(0)
|
||||||
|
EVT_CALL(PlayerFaceNpc, NPC_JrTroopa, FALSE)
|
||||||
|
EVT_CALL(NpcFaceNpc, NPC_Kolorado_02, NPC_JrTroopa, 0)
|
||||||
|
EVT_CALL(NpcFaceNpc, NPC_PARTNER, NPC_JrTroopa, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_NpcIdle_JrTroopa) = {
|
||||||
|
EVT_LABEL(0)
|
||||||
|
EVT_CALL(GetSelfVar, 0, LVar0)
|
||||||
|
EVT_IF_EQ(LVar0, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_GOTO(0)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(SpeakToPlayer, NPC_SELF, 0xFFFFFFFF, 0xFFFFFFFF, 5, MSG_CH5_0008)
|
||||||
|
EVT_EXEC_GET_TID(N(D_802441C8_B24708), LVar9)
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_JR_TROOPA_THEME, 0, 8)
|
||||||
|
EVT_CALL(PlaySoundAtNpc, NPC_SELF, SOUND_80000055, 0)
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_CALL(func_80241134_B21674)
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, 85, 0, 320)
|
||||||
|
EVT_CALL(SetPanTarget, CAM_DEFAULT, 85, 0, 320)
|
||||||
|
EVT_CALL(SetCamDistance, CAM_DEFAULT, 300)
|
||||||
|
EVT_CALL(SetCamPitch, CAM_DEFAULT, EVT_FLOAT(22.5), EVT_FLOAT(-12.5))
|
||||||
|
EVT_CALL(SetCamPosA, CAM_DEFAULT, EVT_FLOAT(23.0), EVT_FLOAT(0.0))
|
||||||
|
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(90.0))
|
||||||
|
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
|
||||||
|
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_JrTroopa_ChargeTripped)
|
||||||
|
EVT_CALL(SetNpcSpeed, NPC_SELF, EVT_FLOAT(4.0))
|
||||||
|
EVT_CALL(NpcMoveTo, NPC_SELF, 80, 90, 0)
|
||||||
|
EVT_CALL(SetPanTarget, CAM_DEFAULT, 250, 0, 90)
|
||||||
|
EVT_CALL(SetCamDistance, CAM_DEFAULT, EVT_FLOAT(250.0))
|
||||||
|
EVT_CALL(SetCamPitch, CAM_DEFAULT, EVT_FLOAT(14.5), EVT_FLOAT(-10.0))
|
||||||
|
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(2.7))
|
||||||
|
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
|
||||||
|
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_JrTroopa_Charge)
|
||||||
|
EVT_CALL(SetNpcJumpscale, NPC_SELF, EVT_FLOAT(1.0))
|
||||||
|
EVT_CALL(StopSound, SOUND_80000055)
|
||||||
|
EVT_CALL(PlaySoundAtNpc, NPC_SELF, SOUND_JR_TROOPA_SPLASH, 0)
|
||||||
|
EVT_CALL(NpcJump0, NPC_SELF, 250, 0, 90, 20)
|
||||||
|
EVT_KILL_THREAD(LVar9)
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_WAIT(15)
|
||||||
|
EVT_CALL(SetSelfVar, 0, 2)
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_JrTroopa_OutOfBreath)
|
||||||
|
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_JrTroopa_TiredTalk, ANIM_JrTroopa_OutOfBreath, 5, MSG_CH5_0009)
|
||||||
|
EVT_WAIT(10)
|
||||||
|
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_JrTroopa_TiredTalk, ANIM_JrTroopa_OutOfBreath, 0, MSG_CH5_000A)
|
||||||
|
EVT_WAIT(20)
|
||||||
|
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_JrTroopa_Panic)
|
||||||
|
EVT_CALL(PlaySoundAtNpc, NPC_SELF, SOUND_262, 0)
|
||||||
|
EVT_CALL(ShowEmote, NPC_SELF, EMOTE_EXCLAMATION, 0, 20, TRUE, 0, 0, 0, 0)
|
||||||
|
EVT_WAIT(20)
|
||||||
|
EVT_CALL(NpcJump0, NPC_SELF, 250, 0, 90, 10)
|
||||||
|
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_JrTroopa_Panic, ANIM_JrTroopa_Panic, 0, MSG_CH5_000B)
|
||||||
|
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_JrTroopa_Charge)
|
||||||
|
EVT_WAIT(10)
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_JrTroopa_ChargeArmsUp, ANIM_JrTroopa_Charge, 0, MSG_CH5_000C)
|
||||||
|
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_JrTroopa_ChargeTripped)
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, 85, 0, 320)
|
||||||
|
EVT_CALL(SetPanTarget, CAM_DEFAULT, 85, 0, 320)
|
||||||
|
EVT_CALL(SetCamDistance, CAM_DEFAULT, 300)
|
||||||
|
EVT_CALL(SetCamPitch, CAM_DEFAULT, EVT_FLOAT(20.0), EVT_FLOAT(-10.0))
|
||||||
|
EVT_CALL(SetCamPosA, CAM_DEFAULT, EVT_FLOAT(24.0), EVT_FLOAT(0.0))
|
||||||
|
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(2.0))
|
||||||
|
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
|
||||||
|
EVT_CALL(SetNpcJumpscale, NPC_SELF, EVT_FLOAT(1.5))
|
||||||
|
EVT_CALL(NpcJump0, NPC_SELF, 80, -50, 90, 20)
|
||||||
|
EVT_CALL(PlaySoundAtNpc, NPC_SELF, SOUND_JR_TROOPA_SPLASH, 0)
|
||||||
|
EVT_CALL(SetNpcRotation, NPC_SELF, 0, -20, 0)
|
||||||
|
EVT_CALL(PlaySoundAtNpc, NPC_SELF, SOUND_80000055, 0)
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_CALL(SetNpcSpeed, NPC_SELF, EVT_FLOAT(2.0))
|
||||||
|
EVT_CALL(NpcMoveTo, NPC_SELF, -555, -32, 0)
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_WAIT(100)
|
||||||
|
EVT_CALL(GotoMap, EVT_PTR("mac_06"), mac_06_ENTRY_1)
|
||||||
|
EVT_WAIT(100)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_NpcInit_JrTroopa) = {
|
||||||
|
EVT_IF_EQ(GF_MAC01_Defeated_JrTroopa4, FALSE)
|
||||||
|
EVT_CALL(SetNpcPos, NPC_SELF, -530, -50, 20)
|
||||||
|
EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_JrTroopa)))
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
StaticNpc N(D_8024488C_B24DCC)[] = {
|
||||||
|
{
|
||||||
|
.id = NPC_Kolorado_01,
|
||||||
|
.settings = &N(NpcSettings_Kolorado_01),
|
||||||
|
.pos = { NPC_DISPOSE_LOCATION },
|
||||||
|
.yaw = 90,
|
||||||
|
.flags = NPC_FLAG_PASSIVE | NPC_FLAG_ENABLE_HIT_SCRIPT | NPC_FLAG_100 | NPC_FLAG_GRAVITY | NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_400000,
|
||||||
|
.init = &N(EVS_NpcInit_Kolorado_01),
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.heartDrops = NO_DROPS,
|
||||||
|
.flowerDrops = NO_DROPS,
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_Kolorado_Idle,
|
||||||
|
.walk = ANIM_Kolorado_Walk,
|
||||||
|
.run = ANIM_Kolorado_Run,
|
||||||
|
.chase = ANIM_Kolorado_Run,
|
||||||
|
.anim_4 = ANIM_Kolorado_Idle,
|
||||||
|
.anim_5 = ANIM_Kolorado_Idle,
|
||||||
|
.death = ANIM_Kolorado_Idle,
|
||||||
|
.hit = ANIM_Kolorado_Idle,
|
||||||
|
.anim_8 = ANIM_Kolorado_Idle,
|
||||||
|
.anim_9 = ANIM_Kolorado_Idle,
|
||||||
|
.anim_A = ANIM_Kolorado_Idle,
|
||||||
|
.anim_B = ANIM_Kolorado_Idle,
|
||||||
|
.anim_C = ANIM_Kolorado_Idle,
|
||||||
|
.anim_D = ANIM_Kolorado_Idle,
|
||||||
|
.anim_E = ANIM_Kolorado_Idle,
|
||||||
|
.anim_F = ANIM_Kolorado_Idle,
|
||||||
|
},
|
||||||
|
.tattle = MSG_NpcTattle_Whale,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.id = NPC_Kolorado_02,
|
||||||
|
.settings = &N(NpcSettings_Kolorado_02),
|
||||||
|
.pos = { NPC_DISPOSE_LOCATION },
|
||||||
|
.yaw = 90,
|
||||||
|
.flags = NPC_FLAG_PASSIVE | NPC_FLAG_4 | NPC_FLAG_ENABLE_HIT_SCRIPT | NPC_FLAG_100 | NPC_FLAG_JUMPING | NPC_FLAG_400000,
|
||||||
|
.init = &N(EVS_NpcInit_Kolorado_02),
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.heartDrops = NO_DROPS,
|
||||||
|
.flowerDrops = NO_DROPS,
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_Kolorado_Idle,
|
||||||
|
.walk = ANIM_Kolorado_Walk,
|
||||||
|
.run = ANIM_Kolorado_Run,
|
||||||
|
.chase = ANIM_Kolorado_Run,
|
||||||
|
.anim_4 = ANIM_Kolorado_Idle,
|
||||||
|
.anim_5 = ANIM_Kolorado_Idle,
|
||||||
|
.death = ANIM_Kolorado_Idle,
|
||||||
|
.hit = ANIM_Kolorado_Idle,
|
||||||
|
.anim_8 = ANIM_Kolorado_Idle,
|
||||||
|
.anim_9 = ANIM_Kolorado_Idle,
|
||||||
|
.anim_A = ANIM_Kolorado_Idle,
|
||||||
|
.anim_B = ANIM_Kolorado_Idle,
|
||||||
|
.anim_C = ANIM_Kolorado_Idle,
|
||||||
|
.anim_D = ANIM_Kolorado_Idle,
|
||||||
|
.anim_E = ANIM_Kolorado_Idle,
|
||||||
|
.anim_F = ANIM_Kolorado_Idle,
|
||||||
|
},
|
||||||
|
.tattle = MSG_NpcTattle_Kolorado,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.id = NPC_JrTroopa,
|
||||||
|
.settings = &N(NpcSettings_JrTroopa),
|
||||||
|
.pos = { NPC_DISPOSE_LOCATION },
|
||||||
|
.yaw = 90,
|
||||||
|
.flags = NPC_FLAG_PASSIVE | NPC_FLAG_4 | NPC_FLAG_ENABLE_HIT_SCRIPT | NPC_FLAG_100 | NPC_FLAG_JUMPING | NPC_FLAG_400000,
|
||||||
|
.init = &N(EVS_NpcInit_JrTroopa),
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.heartDrops = NO_DROPS,
|
||||||
|
.flowerDrops = NO_DROPS,
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_JrTroopa_Idle,
|
||||||
|
.walk = ANIM_JrTroopa_Walk,
|
||||||
|
.run = ANIM_JrTroopa_Walk,
|
||||||
|
.chase = ANIM_JrTroopa_Walk,
|
||||||
|
.anim_4 = ANIM_JrTroopa_Idle,
|
||||||
|
.anim_5 = ANIM_JrTroopa_Idle,
|
||||||
|
.death = ANIM_JrTroopa_Idle,
|
||||||
|
.hit = ANIM_JrTroopa_Idle,
|
||||||
|
.anim_8 = ANIM_JrTroopa_Idle,
|
||||||
|
.anim_9 = ANIM_JrTroopa_Idle,
|
||||||
|
.anim_A = ANIM_JrTroopa_Idle,
|
||||||
|
.anim_B = ANIM_JrTroopa_Idle,
|
||||||
|
.anim_C = ANIM_JrTroopa_Idle,
|
||||||
|
.anim_D = ANIM_JrTroopa_Idle,
|
||||||
|
.anim_E = ANIM_JrTroopa_Idle,
|
||||||
|
.anim_F = ANIM_JrTroopa_Idle,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
StaticNpc N(D_80244E5C_B2539C) = {
|
||||||
|
.id = NPC_HeartPlant_01,
|
||||||
|
.settings = &N(NpcSettings_HeartPlant_01),
|
||||||
|
.pos = { 455.0f, 0.0f, 115.0f },
|
||||||
|
.yaw = 270,
|
||||||
|
.flags = NPC_FLAG_PASSIVE | NPC_FLAG_4 | NPC_FLAG_100 | NPC_FLAG_JUMPING | NPC_FLAG_8000 | NPC_FLAG_400000,
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.heartDrops = NO_DROPS,
|
||||||
|
.flowerDrops = NO_DROPS,
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_HeartPlant_Anim00,
|
||||||
|
.walk = ANIM_HeartPlant_Anim00,
|
||||||
|
.run = ANIM_HeartPlant_Anim00,
|
||||||
|
.chase = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_4 = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_5 = ANIM_HeartPlant_Anim00,
|
||||||
|
.death = ANIM_HeartPlant_Anim00,
|
||||||
|
.hit = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_8 = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_9 = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_A = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_B = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_C = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_D = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_E = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_F = ANIM_HeartPlant_Anim00,
|
||||||
|
},
|
||||||
|
.tattle = MSG_NpcTattle_HeartPlant,
|
||||||
|
};
|
||||||
|
|
||||||
|
StaticNpc N(D_8024504C_B2558C) = {
|
||||||
|
.id = NPC_HeartPlant_02,
|
||||||
|
.settings = &N(NpcSettings_HeartPlant_01),
|
||||||
|
.pos = { 167.0f, 0.0f, 404.0f },
|
||||||
|
.yaw = 270,
|
||||||
|
.flags = NPC_FLAG_PASSIVE | NPC_FLAG_4 | NPC_FLAG_100 | NPC_FLAG_JUMPING | NPC_FLAG_8000 | NPC_FLAG_400000,
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.heartDrops = NO_DROPS,
|
||||||
|
.flowerDrops = NO_DROPS,
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_HeartPlant_Anim00,
|
||||||
|
.walk = ANIM_HeartPlant_Anim00,
|
||||||
|
.run = ANIM_HeartPlant_Anim00,
|
||||||
|
.chase = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_4 = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_5 = ANIM_HeartPlant_Anim00,
|
||||||
|
.death = ANIM_HeartPlant_Anim00,
|
||||||
|
.hit = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_8 = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_9 = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_A = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_B = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_C = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_D = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_E = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_F = ANIM_HeartPlant_Anim00,
|
||||||
|
},
|
||||||
|
.tattle = MSG_NpcTattle_HeartPlant,
|
||||||
|
};
|
||||||
|
|
||||||
|
StaticNpc N(D_8024523C_B2577C) = {
|
||||||
|
.id = NPC_HeartPlant_03,
|
||||||
|
.settings = &N(NpcSettings_HeartPlant_01),
|
||||||
|
.pos = { 90.0f, 0.0f, 316.0f },
|
||||||
|
.yaw = 270,
|
||||||
|
.flags = NPC_FLAG_PASSIVE | NPC_FLAG_4 | NPC_FLAG_100 | NPC_FLAG_JUMPING | NPC_FLAG_8000 | NPC_FLAG_400000,
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.heartDrops = NO_DROPS,
|
||||||
|
.flowerDrops = NO_DROPS,
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_HeartPlant_Anim00,
|
||||||
|
.walk = ANIM_HeartPlant_Anim00,
|
||||||
|
.run = ANIM_HeartPlant_Anim00,
|
||||||
|
.chase = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_4 = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_5 = ANIM_HeartPlant_Anim00,
|
||||||
|
.death = ANIM_HeartPlant_Anim00,
|
||||||
|
.hit = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_8 = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_9 = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_A = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_B = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_C = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_D = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_E = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_F = ANIM_HeartPlant_Anim00,
|
||||||
|
},
|
||||||
|
.tattle = MSG_NpcTattle_HeartPlant,
|
||||||
|
};
|
||||||
|
|
||||||
|
StaticNpc N(D_8024542C_B2596C) = {
|
||||||
|
.id = NPC_HeartPlant_04,
|
||||||
|
.settings = &N(NpcSettings_HeartPlant_01),
|
||||||
|
.pos = { 424.0f, 0.0f, 182.0f },
|
||||||
|
.yaw = 270,
|
||||||
|
.flags = NPC_FLAG_PASSIVE | NPC_FLAG_4 | NPC_FLAG_100 | NPC_FLAG_JUMPING | NPC_FLAG_8000 | NPC_FLAG_400000,
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.heartDrops = NO_DROPS,
|
||||||
|
.flowerDrops = NO_DROPS,
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_HeartPlant_Anim00,
|
||||||
|
.walk = ANIM_HeartPlant_Anim00,
|
||||||
|
.run = ANIM_HeartPlant_Anim00,
|
||||||
|
.chase = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_4 = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_5 = ANIM_HeartPlant_Anim00,
|
||||||
|
.death = ANIM_HeartPlant_Anim00,
|
||||||
|
.hit = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_8 = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_9 = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_A = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_B = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_C = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_D = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_E = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_F = ANIM_HeartPlant_Anim00,
|
||||||
|
},
|
||||||
|
.tattle = MSG_NpcTattle_HeartPlant,
|
||||||
|
};
|
||||||
|
|
||||||
|
StaticNpc N(D_8024561C_B25B5C) = {
|
||||||
|
.id = NPC_HeartPlant_05,
|
||||||
|
.settings = &N(NpcSettings_HeartPlant_01),
|
||||||
|
.pos = { 143.0f, 0.0f, 260.0f },
|
||||||
|
.yaw = 270,
|
||||||
|
.flags = NPC_FLAG_PASSIVE | NPC_FLAG_4 | NPC_FLAG_100 | NPC_FLAG_JUMPING | NPC_FLAG_8000 | NPC_FLAG_400000,
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.heartDrops = NO_DROPS,
|
||||||
|
.flowerDrops = NO_DROPS,
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_HeartPlant_Anim00,
|
||||||
|
.walk = ANIM_HeartPlant_Anim00,
|
||||||
|
.run = ANIM_HeartPlant_Anim00,
|
||||||
|
.chase = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_4 = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_5 = ANIM_HeartPlant_Anim00,
|
||||||
|
.death = ANIM_HeartPlant_Anim00,
|
||||||
|
.hit = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_8 = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_9 = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_A = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_B = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_C = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_D = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_E = ANIM_HeartPlant_Anim00,
|
||||||
|
.anim_F = ANIM_HeartPlant_Anim00,
|
||||||
|
},
|
||||||
|
.tattle = MSG_NpcTattle_HeartPlant,
|
||||||
|
};
|
||||||
|
|
||||||
|
NpcGroupList N(DefaultNPCs) = {
|
||||||
|
NPC_GROUP(N(D_8024488C_B24DCC)),
|
||||||
|
NPC_GROUP(N(D_80244E5C_B2539C)),
|
||||||
|
NPC_GROUP(N(D_8024504C_B2558C)),
|
||||||
|
NPC_GROUP(N(D_8024523C_B2577C)),
|
||||||
|
NPC_GROUP(N(D_8024542C_B2596C)),
|
||||||
|
NPC_GROUP(N(D_8024561C_B25B5C)),
|
||||||
|
{}
|
||||||
|
};
|
20
src/world/area_jan/jan_00/jan_00_3_entity.c
Normal file
20
src/world/area_jan/jan_00/jan_00_3_entity.c
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#include "jan_00.h"
|
||||||
|
#include "entity.h"
|
||||||
|
|
||||||
|
EvtScript N(D_80245860_B25DA0) = {
|
||||||
|
EVT_CALL(MakeItemEntity, ITEM_COIN, 15, 100, 415, ITEM_SPAWN_MODE_FIXED_NEVER_VANISH, GF_JAN00_Item_CoinA)
|
||||||
|
EVT_CALL(MakeItemEntity, ITEM_COIN, 15, 125, 415, ITEM_SPAWN_MODE_FIXED_NEVER_VANISH, GF_JAN00_Item_CoinB)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_MakeEntities) = {
|
||||||
|
EVT_CALL(MakeItemEntity, ITEM_STOP_WATCH, 370, 0, -210, ITEM_SPAWN_MODE_FIXED_NEVER_VANISH, GF_JAN00_Item_StopWatch)
|
||||||
|
EVT_CALL(GetEntryID, LVar0)
|
||||||
|
EVT_IF_NE(LVar0, jan_00_ENTRY_0)
|
||||||
|
EVT_EXEC(N(D_80245860_B25DA0))
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(MakeEntity, EVT_PTR(Entity_SpinningFlower), 15, 0, 415, 0, MAKE_ENTITY_END)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
333
src/world/area_jan/jan_00/jan_00_4_whale.c
Normal file
333
src/world/area_jan/jan_00/jan_00_4_whale.c
Normal file
@ -0,0 +1,333 @@
|
|||||||
|
#include "jan_00.h"
|
||||||
|
#include "effects.h"
|
||||||
|
|
||||||
|
u32 N(unkAngle1) = 0;
|
||||||
|
s32 N(unkAngle2) = -1;
|
||||||
|
s32 N(unkAngle3) = -1;
|
||||||
|
|
||||||
|
#include "world/common/atomic/WhaleAnim.inc.c"
|
||||||
|
|
||||||
|
ApiStatus jan_00_UnkPlayerPosFunc(Evt* script, s32 isInitialCall) {
|
||||||
|
Npc* player = get_npc_safe(ACTOR_PLAYER);
|
||||||
|
f32 yaw = -player->yaw;
|
||||||
|
f32 x = player->pos.x + 30.0f + (sin_deg(yaw) * 170.0f);
|
||||||
|
f32 z = player->pos.z + (cos_deg(yaw) * 170.0f);
|
||||||
|
f32 y = player->pos.y + 50.0f;
|
||||||
|
|
||||||
|
evt_set_float_variable(script, LVar0, x);
|
||||||
|
evt_set_float_variable(script, LVar1, y);
|
||||||
|
evt_set_float_variable(script, LVar2, z);
|
||||||
|
return ApiStatus_DONE2;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
EvtScript N(D_8024595C_B25E9C) = {
|
||||||
|
EVT_CALL(N(UnkFloatFunc001), LVarC, LVar0, 30, 60, 30, 0, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o167, LVar0, 1, 0, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o168, LVar0, -1, 0, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_802459D4_B25F14) = {
|
||||||
|
EVT_CALL(N(UnkFloatFunc001), LVarC, LVar0, 0, 30, 30, 1, 0)
|
||||||
|
EVT_SETF(LVar1, LVar0)
|
||||||
|
EVT_DIVF(LVar1, EVT_FLOAT(3.0))
|
||||||
|
EVT_CALL(RotateModel, MODEL_o173, LVar0, 0, 0, 1)
|
||||||
|
EVT_CALL(RotateGroup, MODEL_dou, LVar1, 0, 0, -1)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o170, -5, -68, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o183, -5, -68, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o167, 60, 29, -51)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o168, 60, 29, 51)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o170, LVar1, 0, 0, -1)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o183, LVar1, 0, 0, -1)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o167, LVar1, 0, 0, -1)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o168, LVar1, 0, 0, -1)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o170, 5, 68, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o183, 5, 68, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o167, -60, -29, 51)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o168, -60, -29, -51)
|
||||||
|
EVT_CALL(N(UnkFloatFunc001), LVarC, LVar0, 0, -40, 30, 1, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_bero, LVar0, 0, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_80245C10_B26150) = {
|
||||||
|
EVT_CALL(N(UnkFloatFunc001), LVarC, LVar0, 0, -30, 8, 1, 0)
|
||||||
|
EVT_ADDF(LVar0, EVT_FLOAT(30.0))
|
||||||
|
EVT_SETF(LVar1, LVar0)
|
||||||
|
EVT_DIVF(LVar1, EVT_FLOAT(3.0))
|
||||||
|
EVT_CALL(RotateModel, MODEL_o173, LVar0, 0, 0, 1)
|
||||||
|
EVT_CALL(RotateGroup, MODEL_dou, LVar1, 0, 0, -1)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o170, -5, -68, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o183, -5, -68, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o167, 60, 29, -51)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o168, 60, 29, 51)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o170, LVar1, 0, 0, -1)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o183, LVar1, 0, 0, -1)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o167, LVar1, 0, 0, -1)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o168, LVar1, 0, 0, -1)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o170, 5, 68, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o183, 5, 68, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o167, -60, -29, 51)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o168, -60, -29, -51)
|
||||||
|
EVT_CALL(N(UnkFloatFunc001), LVarC, LVar0, 0, -40, 120, 1, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_bero, LVar0, 0, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_80245E5C_B2639C) = {
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_80245E6C_B263AC) = {
|
||||||
|
EVT_SET(LVar1, LVarC)
|
||||||
|
EVT_MOD(LVar1, 4)
|
||||||
|
EVT_IF_EQ(LVar1, 0)
|
||||||
|
EVT_CALL(N(UnkPlayerPosFunc))
|
||||||
|
EVT_CALL(PlayEffect, EFFECT_DAMAGE_STARS, 2, LVar0, LVar1, LVar2, 0, -1, 0, 5, 0, 0, 0, 0, 0)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(N(UnkFloatFunc001), LVarC, LVar0, 30, 60, 30, 0, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o167, LVar0, 1, 0, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o168, LVar0, -1, 0, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_80245F6C_B264AC) = {
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_80245F7C_B264BC) = {
|
||||||
|
EVT_IF_GE(LVarC, 0)
|
||||||
|
EVT_IF_LE(LVarC, 2)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o170, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o183, TRUE)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_IF_EQ(LVarC, 15)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o170, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o183, TRUE)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_IF_EQ(LVarC, 22)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o170, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o183, TRUE)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(EnableModel, MODEL_o170, TRUE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o183, FALSE)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_802460A4_B265E4) = {
|
||||||
|
EVT_SET(LVar0, LVarC)
|
||||||
|
EVT_DIV(LVar0, 20)
|
||||||
|
EVT_MOD(LVar0, 2)
|
||||||
|
EVT_IF_EQ(LVar0, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(N(UnkFloatFunc001), LVarC, LVar0, EVT_FLOAT(-1.0), EVT_FLOAT(1.0), 3, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o173, LVar0, 0, 0)
|
||||||
|
EVT_CALL(TranslateGroup, MODEL_dou, LVar0, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o170, LVar0, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o183, LVar0, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o167, LVar0, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o168, LVar0, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o167, LVar0, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o168, LVar0, 0, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_8024620C_B2674C) = {
|
||||||
|
EVT_CALL(N(UnkFloatFunc001), LVarC, LVar0, EVT_FLOAT(-6.0), EVT_FLOAT(6.0), 3, 0, 0)
|
||||||
|
EVT_CALL(N(UnkFloatFunc001), LVarC, LVar1, EVT_FLOAT(6.0), EVT_FLOAT(-6.0), 2, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o173, LVar0, LVar1, 0)
|
||||||
|
EVT_CALL(TranslateGroup, MODEL_dou, LVar0, LVar1, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o170, LVar0, LVar1, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o183, LVar0, LVar1, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o167, LVar0, LVar1, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o168, LVar0, LVar1, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o167, LVar0, LVar1, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o168, LVar0, LVar1, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_8024634C_B2688C) = {
|
||||||
|
EVT_SET(LVar0, LVarC)
|
||||||
|
EVT_DIV(LVar0, 20)
|
||||||
|
EVT_MOD(LVar0, 2)
|
||||||
|
EVT_IF_EQ(LVar0, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(N(UnkFloatFunc001), LVarC, LVar0, EVT_FLOAT(-1.0), EVT_FLOAT(1.0), 3, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o173, LVar0, 0, 0)
|
||||||
|
EVT_CALL(TranslateGroup, MODEL_dou, LVar0, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o170, LVar0, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o183, LVar0, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o167, LVar0, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o168, LVar0, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o167, LVar0, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o168, LVar0, 0, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_802464B4_B269F4) = {
|
||||||
|
EVT_CALL(N(UnkFloatFunc001), LVarC, LVar0, 30, 60, 30, 0, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o167, LVar0, 1, 0, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o168, LVar0, -1, 0, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_8024652C_B26A6C) = {
|
||||||
|
EVT_CALL(N(UnkFloatFunc001), LVarC, LVar0, 0, 8, 3, 0, 0)
|
||||||
|
EVT_SET(LVar1, LVar0)
|
||||||
|
EVT_DIV(LVar1, 3)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o173, LVar0, 0, 0, 1)
|
||||||
|
EVT_CALL(RotateGroup, MODEL_dou, LVar1, 0, 0, -1)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o170, -5, -68, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o183, -5, -68, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o167, 60, 29, -51)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o168, 60, 29, 51)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o170, LVar1, 0, 0, -1)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o183, LVar1, 0, 0, -1)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o167, LVar1, 0, 0, -1)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o168, LVar1, 0, 0, -1)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o170, 5, 68, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o183, 5, 68, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o167, -60, -29, 51)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o168, -60, -29, -51)
|
||||||
|
EVT_SET(LVar0, LVarC)
|
||||||
|
EVT_MUL(LVar0, 2)
|
||||||
|
EVT_CALL(N(UnkFloatFunc001), LVar0, LVar0, 30, 60, 3, 0, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o167, LVar0, 1, 0, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o168, LVar0, -1, 0, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_802467AC) = {
|
||||||
|
EVT_SET_GROUP(EVT_GROUP_00)
|
||||||
|
EVT_CALL(MakeLocalVertexCopy, 1, MODEL_karada, TRUE)
|
||||||
|
EVT_CALL(SetCustomGfxBuilders, 1, EVT_PTR(N(unkAngleFunc002)), 0)
|
||||||
|
EVT_CALL(SetModelCustomGfx, MODEL_karada, 1, -1)
|
||||||
|
EVT_CALL(MakeLocalVertexCopy, 2, MODEL_onaka, TRUE)
|
||||||
|
EVT_CALL(SetCustomGfxBuilders, 2, EVT_PTR(N(unkAngleFunc003)), 0)
|
||||||
|
EVT_CALL(SetModelCustomGfx, MODEL_onaka, 2, -1)
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_LABEL(0)
|
||||||
|
EVT_CALL(N(UnkAngleFunc001), 0, LVar0, LVar1, LVar2)
|
||||||
|
EVT_SUBF(LVar0, -80)
|
||||||
|
EVT_SUBF(LVar1, -18)
|
||||||
|
EVT_SUBF(LVar2, 420)
|
||||||
|
EVT_ADDF(LVar0, 55)
|
||||||
|
EVT_ADDF(LVar1, -20)
|
||||||
|
EVT_ADDF(LVar2, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_bero, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o170, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o183, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o173, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o167, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o168, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(TranslateGroup, MODEL_dou, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(GetNpcYaw, NPC_Kolorado_01, LVar0)
|
||||||
|
EVT_MULF(LVar0, -1)
|
||||||
|
EVT_ADDF(LVar0, -90)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_bero, -100, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o170, -100, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o183, -100, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o173, -100, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o167, -100, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o168, -100, 0, 0)
|
||||||
|
EVT_CALL(TranslateGroup, MODEL_dou, -100, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_bero, 100, -1, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o170, -5, -68, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o183, -5, -68, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o173, 102, 4, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o167, 60, 29, -51)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o168, 60, 29, 51)
|
||||||
|
EVT_CALL(RotateModel, MODEL_bero, LVar0, 0, 1, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o170, LVar0, 0, 1, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o183, LVar0, 0, 1, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o173, LVar0, 0, 1, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o167, LVar0, 0, 1, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o168, LVar0, 0, 1, 0)
|
||||||
|
EVT_CALL(RotateGroup, MODEL_dou, LVar0, 0, 1, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_bero, -100, 1, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o170, 5, 68, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o183, 5, 68, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o173, -102, -4, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o167, -60, -29, 51)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o168, -60, -29, -51)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_bero, 100, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o170, 100, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o183, 100, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o173, 100, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o167, 100, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o168, 100, 0, 0)
|
||||||
|
EVT_CALL(TranslateGroup, MODEL_dou, 100, 0, 0)
|
||||||
|
EVT_CALL(GetNpcAnimation, NPC_Kolorado_01, LVar0)
|
||||||
|
EVT_IF_NE(LVar0, LVarB)
|
||||||
|
EVT_SET(LVarB, LVar0)
|
||||||
|
EVT_SET(LVarC, 0)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o170, TRUE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o183, FALSE)
|
||||||
|
EVT_SWITCH(LVarB)
|
||||||
|
EVT_CASE_EQ(0x00B60003)
|
||||||
|
EVT_SET(LVarD, EVT_PTR(N(D_80245C10_B26150)))
|
||||||
|
EVT_CASE_EQ(0x00B60000)
|
||||||
|
EVT_SET(LVarD, EVT_PTR(N(D_8024595C_B25E9C)))
|
||||||
|
EVT_CASE_EQ(0x00B60002)
|
||||||
|
EVT_SET(LVarD, EVT_PTR(N(D_802459D4_B25F14)))
|
||||||
|
EVT_CASE_EQ(0x00B60001)
|
||||||
|
EVT_SET(LVarD, EVT_PTR(N(D_802464B4_B269F4)))
|
||||||
|
EVT_CASE_EQ(0x00B60004)
|
||||||
|
EVT_SET(LVarD, EVT_PTR(N(D_8024652C_B26A6C)))
|
||||||
|
EVT_CASE_EQ(0x00B60005)
|
||||||
|
EVT_SET(LVarD, EVT_PTR(N(D_80245E5C_B2639C)))
|
||||||
|
EVT_CALL(EnableModel, MODEL_o170, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o183, FALSE)
|
||||||
|
EVT_CASE_EQ(0x00B60006)
|
||||||
|
EVT_SET(LVarD, EVT_PTR(N(D_802460A4_B265E4)))
|
||||||
|
EVT_CALL(EnableModel, MODEL_o170, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o183, FALSE)
|
||||||
|
EVT_CASE_EQ(0x00B60007)
|
||||||
|
EVT_SET(LVarD, EVT_PTR(N(D_8024620C_B2674C)))
|
||||||
|
EVT_CALL(EnableModel, MODEL_o170, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o183, FALSE)
|
||||||
|
EVT_CASE_EQ(0x00B60008)
|
||||||
|
EVT_SET(LVarD, EVT_PTR(N(D_8024634C_B2688C)))
|
||||||
|
EVT_CASE_EQ(0x00B60009)
|
||||||
|
EVT_SET(LVarD, EVT_PTR(N(D_80245E6C_B263AC)))
|
||||||
|
EVT_CASE_EQ(0x00B6000A)
|
||||||
|
EVT_SET(LVarD, EVT_PTR(N(D_80245F6C_B264AC)))
|
||||||
|
EVT_CASE_EQ(0x00B6000C)
|
||||||
|
EVT_SET(LVarD, EVT_PTR(N(D_80245F7C_B264BC)))
|
||||||
|
EVT_END_SWITCH
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_EXEC_WAIT(LVarD)
|
||||||
|
EVT_ADD(LVarC, 1)
|
||||||
|
EVT_IF_GT(LVarC, 1000)
|
||||||
|
EVT_SET(LVarC, 0)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_GOTO(0)
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_80247040) = {
|
||||||
|
EVT_CALL(SetNpcAnimation, NPC_Kolorado_01, ANIM_Kolorado_IdleSad)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
51
src/world/area_jan/jan_00/jan_00_5_foliage.c
Normal file
51
src/world/area_jan/jan_00/jan_00_5_foliage.c
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
#include "jan_00.h"
|
||||||
|
#include "effects.h"
|
||||||
|
|
||||||
|
#include "common/foliage.inc.c"
|
||||||
|
|
||||||
|
FoliageModelList N(Tree1_LeafModels) = {
|
||||||
|
.count = 2,
|
||||||
|
.models = {
|
||||||
|
MODEL_o241,
|
||||||
|
MODEL_o242,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
FoliageModelList N(Tree1_TrunkModels) = {
|
||||||
|
.count = 1,
|
||||||
|
.models = {
|
||||||
|
MODEL_o240,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
FoliageDropList N(Tree1_Drops) = {
|
||||||
|
.count = 1,
|
||||||
|
.drops = {
|
||||||
|
{
|
||||||
|
.itemID = ITEM_COCONUT,
|
||||||
|
.pos = { 485, 95, -145 },
|
||||||
|
.spawnMode = ITEM_SPAWN_MODE_FALL_SPAWN_ONCE,
|
||||||
|
.spawnFlag = AF_JAN_0D,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
ShakeTreeConfig N(ShakeTree_Tree1) = {
|
||||||
|
.leaves = &N(Tree1_LeafModels),
|
||||||
|
.trunk = &N(Tree1_TrunkModels),
|
||||||
|
.drops = &N(Tree1_Drops),
|
||||||
|
};
|
||||||
|
|
||||||
|
BombTrigger N(D_80247A1C_B27F5C) = {
|
||||||
|
.pos = { 481.0f, 0.0f, -165.0f },
|
||||||
|
.radius = 0.0f
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_80247A2C) = {
|
||||||
|
EVT_SET(AF_JAN_0D, FALSE)
|
||||||
|
EVT_SET(LVar0, EVT_PTR(N(ShakeTree_Tree1)))
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(shakeTree)), TRIGGER_WALL_HAMMER, COLLIDER_o282, 1, 0)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(shakeTree)), TRIGGER_POINT_BOMB, EVT_PTR(N(D_80247A1C_B27F5C)), 1, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
@ -32,8 +32,7 @@ EvtScript N(EVS_BindExitTriggers) = {
|
|||||||
EvtScript N(EVS_Main) = {
|
EvtScript N(EVS_Main) = {
|
||||||
EVT_SET(GB_WorldLocation, LOCATION_TOAD_TOWN)
|
EVT_SET(GB_WorldLocation, LOCATION_TOAD_TOWN)
|
||||||
EVT_CALL(SetSpriteShading, SHADING_NONE)
|
EVT_CALL(SetSpriteShading, SHADING_NONE)
|
||||||
EVT_SETUP_CAMERA_DEFAULT()
|
EVT_SETUP_CAMERA_NO_LEAD()
|
||||||
EVT_CALL(SetCamLeadPlayer, CAM_DEFAULT, FALSE)
|
|
||||||
EVT_CALL(HidePlayerShadow, TRUE)
|
EVT_CALL(HidePlayerShadow, TRUE)
|
||||||
EVT_CALL(EnableNpcShadow, NPC_PARTNER, FALSE)
|
EVT_CALL(EnableNpcShadow, NPC_PARTNER, FALSE)
|
||||||
EVT_EXEC(N(EVS_StartTongueWiggle))
|
EVT_EXEC(N(EVS_StartTongueWiggle))
|
||||||
|
@ -31,8 +31,7 @@ EvtScript N(EVS_BindExitTriggers) = {
|
|||||||
EvtScript N(EVS_Main) = {
|
EvtScript N(EVS_Main) = {
|
||||||
EVT_SET(GB_WorldLocation, LOCATION_TOAD_TOWN)
|
EVT_SET(GB_WorldLocation, LOCATION_TOAD_TOWN)
|
||||||
EVT_CALL(SetSpriteShading, SHADING_NONE)
|
EVT_CALL(SetSpriteShading, SHADING_NONE)
|
||||||
EVT_SETUP_CAMERA_DEFAULT()
|
EVT_SETUP_CAMERA_NO_LEAD()
|
||||||
EVT_CALL(SetCamLeadPlayer, CAM_DEFAULT, FALSE)
|
|
||||||
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs)))
|
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs)))
|
||||||
EVT_SET(LVar0, N(EVS_BindExitTriggers))
|
EVT_SET(LVar0, N(EVS_BindExitTriggers))
|
||||||
EVT_EXEC(EnterWalk)
|
EVT_EXEC(EnterWalk)
|
||||||
|
@ -16,7 +16,7 @@ EvtScript N(EVS_BindExitTriggers) = {
|
|||||||
EvtScript N(EVS_Main) = {
|
EvtScript N(EVS_Main) = {
|
||||||
EVT_SET(GB_WorldLocation, LOCATION_BOWSERS_CASTLE)
|
EVT_SET(GB_WorldLocation, LOCATION_BOWSERS_CASTLE)
|
||||||
EVT_CALL(SetSpriteShading, SHADING_NONE)
|
EVT_CALL(SetSpriteShading, SHADING_NONE)
|
||||||
EVT_SETUP_CAMERA_NO_LEAD()
|
EVT_SETUP_CAMERA_ALT_NO_LEAD()
|
||||||
EVT_EXEC_WAIT(N(EVS_Empty))
|
EVT_EXEC_WAIT(N(EVS_Empty))
|
||||||
EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers)))
|
EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers)))
|
||||||
EVT_EXEC(EnterWalk)
|
EVT_EXEC(EnterWalk)
|
||||||
|
@ -6,44 +6,7 @@ extern EvtScript N(EVS_KoloradoSinkingPlatform);
|
|||||||
API_CALLABLE(N(AwaitLetterChoiceResult));
|
API_CALLABLE(N(AwaitLetterChoiceResult));
|
||||||
API_CALLABLE(N(SetLetterChoiceResult));
|
API_CALLABLE(N(SetLetterChoiceResult));
|
||||||
|
|
||||||
f32 N(FlyingAI_JumpVels)[] = {
|
#include "world/common/enemy/complete/LavaBubble.inc.c"
|
||||||
4.5, 3.5, 2.6, 2.0, 1.5, 20.0,
|
|
||||||
};
|
|
||||||
|
|
||||||
#include "world/common/enemy/FlyingAI.inc.c"
|
|
||||||
|
|
||||||
#include "world/common/enemy/FlyingNoAttackAI.inc.c"
|
|
||||||
|
|
||||||
MobileAISettings N(AISettings_LavaBubble) = {
|
|
||||||
.moveSpeed = 0.8f,
|
|
||||||
.moveTime = 100,
|
|
||||||
.alertRadius = 90.0f,
|
|
||||||
.playerSearchInterval = 4,
|
|
||||||
.chaseSpeed = 3.2f,
|
|
||||||
.chaseTurnRate = 10,
|
|
||||||
.chaseUpdateInterval = 1,
|
|
||||||
.chaseRadius = 100.0f,
|
|
||||||
.unk_AI_2C = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(EVS_NpcAI_LavaBubble) = {
|
|
||||||
EVT_CALL(SetSelfVar, 0, 1)
|
|
||||||
EVT_CALL(SetSelfVar, 5, 0)
|
|
||||||
EVT_CALL(SetSelfVar, 6, 0)
|
|
||||||
EVT_CALL(SetSelfVar, 1, 150)
|
|
||||||
EVT_CALL(N(FlyingNoAttackAI_Main), EVT_PTR(N(AISettings_LavaBubble)))
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
NpcSettings N(NpcSettings_LavaBubble) = {
|
|
||||||
.height = 20,
|
|
||||||
.radius = 22,
|
|
||||||
.level = 17,
|
|
||||||
.ai = &N(EVS_NpcAI_LavaBubble),
|
|
||||||
.onHit = &EnemyNpcHit,
|
|
||||||
.onDefeat = &EnemyNpcDefeat,
|
|
||||||
};
|
|
||||||
|
|
||||||
NpcSettings N(NpSettings_Kolorado) = {
|
NpcSettings N(NpSettings_Kolorado) = {
|
||||||
.height = 40,
|
.height = 40,
|
||||||
@ -64,7 +27,7 @@ EvtScript N(EVS_Kolorado_LetterDelivery) = {
|
|||||||
ITEM_LETTER25, 0,
|
ITEM_LETTER25, 0,
|
||||||
MSG_CH5_00E4, MSG_CH5_00E5, MSG_CH5_00E6, MSG_CH5_00E7,
|
MSG_CH5_00E4, MSG_CH5_00E5, MSG_CH5_00E6, MSG_CH5_00E7,
|
||||||
EVT_PTR(N(LetterList)))
|
EVT_PTR(N(LetterList)))
|
||||||
EVT_EXEC_WAIT(N(DoLetterDelivery))
|
EVT_EXEC_WAIT(N(EVS_DoLetterDelivery))
|
||||||
EVT_RETURN
|
EVT_RETURN
|
||||||
EVT_END
|
EVT_END
|
||||||
};
|
};
|
||||||
|
@ -1,222 +1,8 @@
|
|||||||
#include "kzn_03.h"
|
#include "kzn_03.h"
|
||||||
|
|
||||||
extern EvtScript D_800936DC;
|
#include "world/common/enemy/complete/SpikeTop.inc.c"
|
||||||
|
|
||||||
// spike top
|
#include "world/common/enemy/complete/PutridPiranha.inc.c"
|
||||||
#include "world/common/enemy/TackleAI.inc.c"
|
|
||||||
|
|
||||||
#include "world/common/AwaitPlayerNearNpc.inc.c"
|
|
||||||
|
|
||||||
// spike top data
|
|
||||||
|
|
||||||
MobileAISettings N(D_80243AA0_C647B0) = {
|
|
||||||
.moveSpeed = 1.0f,
|
|
||||||
.moveTime = 60,
|
|
||||||
.waitTime = 60,
|
|
||||||
.alertRadius = 90.0f,
|
|
||||||
.alertOffsetDist = 40.0f,
|
|
||||||
.playerSearchInterval = 1,
|
|
||||||
.chaseSpeed = 4.5f,
|
|
||||||
.chaseRadius = 100.0f,
|
|
||||||
.chaseOffsetDist = 40.0f,
|
|
||||||
.unk_AI_2C = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(D_80243AD0_C647E0) = {
|
|
||||||
EVT_CALL(SetSelfVar, 2, 5)
|
|
||||||
EVT_CALL(SetSelfVar, 3, 2)
|
|
||||||
EVT_CALL(SetSelfVar, 5, 5)
|
|
||||||
EVT_CALL(SetSelfVar, 7, 2)
|
|
||||||
EVT_CALL(N(TackleAI_Main), EVT_PTR(N(D_80243AA0_C647B0)))
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
MobileAISettings N(AISettings_SpikeTop) = {
|
|
||||||
.moveSpeed = 1.0f,
|
|
||||||
.moveTime = 60,
|
|
||||||
.waitTime = 60,
|
|
||||||
.alertRadius = 90.0f,
|
|
||||||
.alertOffsetDist = 40.0f,
|
|
||||||
.playerSearchInterval = 1,
|
|
||||||
.chaseSpeed = 7.0f,
|
|
||||||
.chaseRadius = 100.0f,
|
|
||||||
.chaseOffsetDist = 40.0f,
|
|
||||||
.unk_AI_2C = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(EVS_NpcAI_SpikeTop) = {
|
|
||||||
EVT_CALL(SetSelfVar, 2, 4)
|
|
||||||
EVT_CALL(SetSelfVar, 3, 10)
|
|
||||||
EVT_CALL(SetSelfVar, 5, 4)
|
|
||||||
EVT_CALL(SetSelfVar, 7, 3)
|
|
||||||
EVT_CALL(N(TackleAI_Main), EVT_PTR(N(AISettings_SpikeTop)))
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
MobileAISettings N(D_80243BE0_C648F0) = {
|
|
||||||
.moveSpeed = 1.0f,
|
|
||||||
.moveTime = 20,
|
|
||||||
.waitTime = 5,
|
|
||||||
.alertRadius = 120.0f,
|
|
||||||
.playerSearchInterval = 3,
|
|
||||||
.chaseSpeed = 6.0f,
|
|
||||||
.chaseRadius = 150.0f,
|
|
||||||
.unk_AI_2C = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(D_80243C10_C64920) = {
|
|
||||||
EVT_CALL(SetSelfVar, 2, 3)
|
|
||||||
EVT_CALL(SetSelfVar, 3, 8)
|
|
||||||
EVT_CALL(SetSelfVar, 5, 6)
|
|
||||||
EVT_CALL(SetSelfVar, 7, 6)
|
|
||||||
EVT_CALL(N(TackleAI_Main), EVT_PTR(N(D_80243BE0_C648F0)))
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(D_80243C80_C64990) = {
|
|
||||||
EVT_CALL(N(func_80240814_97BE44))
|
|
||||||
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_BuzzyBeetle_Anim0F)
|
|
||||||
EVT_CALL(N(AwaitPlayerNearNpc))
|
|
||||||
EVT_CALL(SelfEnemyOverrideSyncPos, 1)
|
|
||||||
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_GRAVITY, TRUE)
|
|
||||||
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_BuzzyBeetle_Anim00)
|
|
||||||
EVT_CALL(N(func_802408B4_97BEE4))
|
|
||||||
EVT_CALL(SelfEnemyOverrideSyncPos, 0)
|
|
||||||
EVT_CALL(SetSelfVar, 2, 5)
|
|
||||||
EVT_CALL(SetSelfVar, 3, 2)
|
|
||||||
EVT_CALL(SetSelfVar, 5, 5)
|
|
||||||
EVT_CALL(SetSelfVar, 7, 2)
|
|
||||||
EVT_CALL(N(TackleAI_Main), EVT_PTR(N(D_80243AA0_C647B0)))
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
// different spike top prefabs
|
|
||||||
|
|
||||||
NpcSettings N(NpcSettings_Unused1) = {
|
|
||||||
.height = 20,
|
|
||||||
.radius = 22,
|
|
||||||
.level = 10,
|
|
||||||
.ai = &N(D_80243AD0_C647E0),
|
|
||||||
.onHit = &EnemyNpcHit,
|
|
||||||
.onDefeat = &EnemyNpcDefeat,
|
|
||||||
};
|
|
||||||
|
|
||||||
NpcSettings N(NpcSettings_Unused2) = {
|
|
||||||
.height = 20,
|
|
||||||
.radius = 22,
|
|
||||||
.level = 10,
|
|
||||||
.ai = &N(D_80243C80_C64990),
|
|
||||||
.onHit = &EnemyNpcHit,
|
|
||||||
.onDefeat = &EnemyNpcDefeat,
|
|
||||||
};
|
|
||||||
|
|
||||||
NpcSettings N(NpcSettings_SpikeTop) = {
|
|
||||||
.height = 20,
|
|
||||||
.radius = 22,
|
|
||||||
.level = 17,
|
|
||||||
.ai = &N(EVS_NpcAI_SpikeTop),
|
|
||||||
.onHit = &EnemyNpcHit,
|
|
||||||
.onDefeat = &EnemyNpcDefeat,
|
|
||||||
};
|
|
||||||
|
|
||||||
NpcSettings N(NpcSettings_Unused3) = {
|
|
||||||
.height = 24,
|
|
||||||
.radius = 24,
|
|
||||||
.level = 25,
|
|
||||||
.ai = &N(D_80243C10_C64920),
|
|
||||||
.onHit = &EnemyNpcHit,
|
|
||||||
.onDefeat = &EnemyNpcDefeat,
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
#include "world/common/enemy/PiranhaPlantAI.inc.c"
|
|
||||||
|
|
||||||
// piranha plant data
|
|
||||||
|
|
||||||
EvtScript N(EVS_NpcDefeat_PiranhaHitbox) = {
|
|
||||||
EVT_CALL(GetBattleOutcome, LVar0)
|
|
||||||
EVT_SWITCH(LVar0)
|
|
||||||
EVT_CASE_EQ(OUTCOME_PLAYER_WON)
|
|
||||||
EVT_CALL(RemoveNpc, NPC_SELF)
|
|
||||||
EVT_CASE_EQ(OUTCOME_PLAYER_FLED)
|
|
||||||
EVT_CALL(SetNpcPos, NPC_SELF, NPC_DISPOSE_LOCATION)
|
|
||||||
EVT_CALL(func_80045900, 1)
|
|
||||||
EVT_CASE_EQ(OUTCOME_ENEMY_FLED)
|
|
||||||
EVT_CALL(SetEnemyFlagBits, NPC_SELF, ENEMY_FLAGS_10, 1)
|
|
||||||
EVT_CALL(RemoveNpc, NPC_SELF)
|
|
||||||
EVT_END_SWITCH
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
MobileAISettings N(AISettings_Piranha) = {
|
|
||||||
.moveTime = 30,
|
|
||||||
.waitTime = 30,
|
|
||||||
.alertRadius = 150.0f,
|
|
||||||
.playerSearchInterval = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(EVS_NpcAI_Piranha) = {
|
|
||||||
EVT_CALL(SetSelfVar, 7, 1)
|
|
||||||
EVT_CALL(SetSelfVar, 8, 10)
|
|
||||||
EVT_CALL(SetSelfVar, 9, 9)
|
|
||||||
EVT_CALL(SetSelfVar, 10, 12)
|
|
||||||
EVT_CALL(SetSelfVar, 11, 7)
|
|
||||||
EVT_CALL(SetSelfVar, 12, 30)
|
|
||||||
EVT_CALL(SetSelfVar, 13, 15)
|
|
||||||
EVT_CALL(SetSelfVar, 14, 18)
|
|
||||||
EVT_CALL(SetSelfVar, 15, 15)
|
|
||||||
EVT_CALL(N(PiranhaPlantAI_Main), EVT_PTR(N(AISettings_Piranha)))
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
NpcSettings N(NpcSettings_Piranha) = {
|
|
||||||
.height = 50,
|
|
||||||
.radius = 36,
|
|
||||||
.level = 17,
|
|
||||||
.ai = &N(EVS_NpcAI_Piranha),
|
|
||||||
.onHit = &EnemyNpcHit,
|
|
||||||
.onDefeat = &EnemyNpcDefeat,
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(EVS_NpcAI_PiranhaHitbox) = {
|
|
||||||
EVT_CALL(EnableNpcShadow, NPC_SELF, FALSE)
|
|
||||||
EVT_CALL(SetSelfVar, 0, 14)
|
|
||||||
EVT_CALL(SetSelfVar, 1, 28)
|
|
||||||
EVT_CALL(SetSelfVar, 4, 3)
|
|
||||||
EVT_CALL(SetSelfVar, 15, SOUND_20DE)
|
|
||||||
EVT_CALL(N(MeleeHitbox_Main))
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(EVS_80244090) = {
|
|
||||||
EVT_CALL(GetOwnerEncounterTrigger, LVar0)
|
|
||||||
EVT_SWITCH(LVar0)
|
|
||||||
EVT_CASE_EQ(ENCOUNTER_TRIGGER_NONE)
|
|
||||||
EVT_CASE_OR_EQ(ENCOUNTER_TRIGGER_JUMP)
|
|
||||||
EVT_CASE_OR_EQ(ENCOUNTER_TRIGGER_HAMMER)
|
|
||||||
EVT_CASE_OR_EQ(ENCOUNTER_TRIGGER_PARTNER)
|
|
||||||
EVT_CALL(GetSelfAnimationFromTable, 7, LVar0)
|
|
||||||
EVT_EXEC_WAIT(D_800936DC)
|
|
||||||
EVT_END_CASE_GROUP
|
|
||||||
EVT_END_SWITCH
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
NpcSettings N(NpcSettings_PiranhaHitbox) = {
|
|
||||||
.height = 20,
|
|
||||||
.radius = 28,
|
|
||||||
.level = 17,
|
|
||||||
.ai = &N(EVS_NpcAI_PiranhaHitbox),
|
|
||||||
.onDefeat = &N(EVS_NpcDefeat_PiranhaHitbox),
|
|
||||||
};
|
|
||||||
|
|
||||||
NpcSettings N(NpcSettings_ZiplineDummy) = {
|
NpcSettings N(NpcSettings_ZiplineDummy) = {
|
||||||
.height = 24,
|
.height = 24,
|
||||||
@ -243,7 +29,7 @@ EvtScript N(EVS_Kolorado_LetterDelivery) = {
|
|||||||
ITEM_LETTER25, 0,
|
ITEM_LETTER25, 0,
|
||||||
MSG_CH5_00E4, MSG_CH5_00E5, MSG_CH5_00E6, MSG_CH5_00E7,
|
MSG_CH5_00E4, MSG_CH5_00E5, MSG_CH5_00E6, MSG_CH5_00E7,
|
||||||
EVT_PTR(N(LetterList)))
|
EVT_PTR(N(LetterList)))
|
||||||
EVT_EXEC_WAIT(N(DoLetterDelivery))
|
EVT_EXEC_WAIT(N(EVS_DoLetterDelivery))
|
||||||
EVT_RETURN
|
EVT_RETURN
|
||||||
EVT_END
|
EVT_END
|
||||||
};
|
};
|
||||||
@ -648,10 +434,10 @@ StaticNpc N(NpcData_SpikeTop_03) = {
|
|||||||
.aiDetectFlags = AI_DETECT_SIGHT | AI_DETECT_SENSITIVE_MOTION,
|
.aiDetectFlags = AI_DETECT_SIGHT | AI_DETECT_SENSITIVE_MOTION,
|
||||||
};
|
};
|
||||||
|
|
||||||
StaticNpc N(NpcData_Piranha)[] = {
|
StaticNpc N(NpcData_PutridPiranha)[] = {
|
||||||
{
|
{
|
||||||
.id = NPC_Piranha,
|
.id = NPC_Piranha,
|
||||||
.settings = &N(NpcSettings_Piranha),
|
.settings = &N(NpcSettings_PutridPiranha),
|
||||||
.pos = { 260.0f, 20.0f, 255.0f },
|
.pos = { 260.0f, 20.0f, 255.0f },
|
||||||
.yaw = 270,
|
.yaw = 270,
|
||||||
.flags = NPC_FLAG_LOCK_ANIMS,
|
.flags = NPC_FLAG_LOCK_ANIMS,
|
||||||
@ -700,7 +486,7 @@ StaticNpc N(NpcData_Piranha)[] = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
.id = NPC_Piranha_Hitbox,
|
.id = NPC_Piranha_Hitbox,
|
||||||
.settings = &N(NpcSettings_PiranhaHitbox),
|
.settings = &N(NpcSettings_PutridPiranha_Hitbox),
|
||||||
.pos = { NPC_DISPOSE_LOCATION },
|
.pos = { NPC_DISPOSE_LOCATION },
|
||||||
.yaw = 0,
|
.yaw = 0,
|
||||||
.flags = NPC_FLAG_100 | NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_DROPS,
|
.flags = NPC_FLAG_100 | NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_DROPS,
|
||||||
@ -735,6 +521,6 @@ NpcGroupList N(DefaultNPCs) = {
|
|||||||
NPC_GROUP(N(NpcData_SpikeTop_01), BTL_KZN_FORMATION_08, BTL_KZN_STAGE_01),
|
NPC_GROUP(N(NpcData_SpikeTop_01), BTL_KZN_FORMATION_08, BTL_KZN_STAGE_01),
|
||||||
NPC_GROUP(N(NpcData_SpikeTop_02), BTL_KZN_FORMATION_09, BTL_KZN_STAGE_01),
|
NPC_GROUP(N(NpcData_SpikeTop_02), BTL_KZN_FORMATION_09, BTL_KZN_STAGE_01),
|
||||||
NPC_GROUP(N(NpcData_SpikeTop_03), BTL_KZN_FORMATION_0A, BTL_KZN_STAGE_01),
|
NPC_GROUP(N(NpcData_SpikeTop_03), BTL_KZN_FORMATION_0A, BTL_KZN_STAGE_01),
|
||||||
NPC_GROUP(N(NpcData_Piranha), BTL_KZN_FORMATION_13, BTL_KZN_STAGE_01),
|
NPC_GROUP(N(NpcData_PutridPiranha), BTL_KZN_FORMATION_13, BTL_KZN_STAGE_01),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
@ -7,8 +7,7 @@
|
|||||||
#include "world/common/atomic/SuperBlock.data.inc.c"
|
#include "world/common/atomic/SuperBlock.data.inc.c"
|
||||||
|
|
||||||
EvtScript N(EVS_MakeEntities) = {
|
EvtScript N(EVS_MakeEntities) = {
|
||||||
EVT_CALL(MakeEntity, EVT_PTR(Entity_SuperBlock), 530, 560, 25, 0, MAKE_ENTITY_END)
|
EVT_MAKE_SUPER_BLOCK(530, 560, 25, 0)
|
||||||
EVT_SETUP_SUPER_BLOCK(SUPER_BLOCK_MAPVAR, SUPER_BLOCK_GAMEFLAG)
|
|
||||||
EVT_RETURN
|
EVT_RETURN
|
||||||
EVT_END
|
EVT_END
|
||||||
};
|
};
|
||||||
|
@ -9,6 +9,8 @@
|
|||||||
#include "mapfs/kzn_07_shape.h"
|
#include "mapfs/kzn_07_shape.h"
|
||||||
#include "mapfs/kzn_07_hit.h"
|
#include "mapfs/kzn_07_hit.h"
|
||||||
|
|
||||||
|
#include "sprite/npc/LavaBubble.h"
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
NPC_Bubble_01 = 0,
|
NPC_Bubble_01 = 0,
|
||||||
NPC_Bubble_02 = 1,
|
NPC_Bubble_02 = 1,
|
||||||
|
@ -58,7 +58,7 @@ LavaReset N(SafeFloorColliders)[] = {
|
|||||||
EvtScript N(EVS_Main) = {
|
EvtScript N(EVS_Main) = {
|
||||||
EVT_SET(GB_WorldLocation, LOCATION_MT_LAVALAVA)
|
EVT_SET(GB_WorldLocation, LOCATION_MT_LAVALAVA)
|
||||||
EVT_CALL(SetSpriteShading, SHADING_KZN_07)
|
EVT_CALL(SetSpriteShading, SHADING_KZN_07)
|
||||||
EVT_SETUP_CAMERA_NO_LEAD()
|
EVT_SETUP_CAMERA_ALT_NO_LEAD()
|
||||||
EVT_CALL(MakeNpcs, TRUE, EVT_PTR(N(DefaultNPCs)))
|
EVT_CALL(MakeNpcs, TRUE, EVT_PTR(N(DefaultNPCs)))
|
||||||
EVT_EXEC_WAIT(N(EVS_MakeEntities))
|
EVT_EXEC_WAIT(N(EVS_MakeEntities))
|
||||||
EVT_EXEC(N(EVS_SetupMusic))
|
EVT_EXEC(N(EVS_SetupMusic))
|
||||||
|
@ -1,49 +1,11 @@
|
|||||||
#include "kzn_07.h"
|
#include "kzn_07.h"
|
||||||
#include "effects.h"
|
#include "effects.h"
|
||||||
#include "sprite/npc/LavaBubble.h"
|
|
||||||
|
|
||||||
#include "world/common/enemy/FlyingAI.inc.c"
|
#include "world/common/enemy/complete/LavaBubble.inc.c"
|
||||||
|
|
||||||
#include "world/common/enemy/FlyingNoAttackAI.inc.c"
|
StaticNpc N(NpcData_LavaBubble_01) = {
|
||||||
|
|
||||||
f32 N(FlyingAI_JumpVels)[] = {
|
|
||||||
4.5, 3.5, 2.6, 2.0, 1.5, 20.0,
|
|
||||||
};
|
|
||||||
|
|
||||||
MobileAISettings N(D_80242BA8_C70ED8) = {
|
|
||||||
.moveSpeed = 0.8f,
|
|
||||||
.moveTime = 100,
|
|
||||||
.alertRadius = 90.0f,
|
|
||||||
.playerSearchInterval = 4,
|
|
||||||
.chaseSpeed = 3.2f,
|
|
||||||
.chaseTurnRate = 10,
|
|
||||||
.chaseUpdateInterval = 1,
|
|
||||||
.chaseRadius = 100.0f,
|
|
||||||
.unk_AI_2C = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(D_80242BD8_C70F08) = {
|
|
||||||
EVT_CALL(SetSelfVar, 0, 1)
|
|
||||||
EVT_CALL(SetSelfVar, 5, 0)
|
|
||||||
EVT_CALL(SetSelfVar, 6, 0)
|
|
||||||
EVT_CALL(SetSelfVar, 1, 150)
|
|
||||||
EVT_CALL(N(FlyingNoAttackAI_Main), EVT_PTR(N(D_80242BA8_C70ED8)))
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
NpcSettings N(D_80242C48_C70F78) = {
|
|
||||||
.height = 20,
|
|
||||||
.radius = 22,
|
|
||||||
.level = 17,
|
|
||||||
.ai = &N(D_80242BD8_C70F08),
|
|
||||||
.onHit = &EnemyNpcHit,
|
|
||||||
.onDefeat = &EnemyNpcDefeat,
|
|
||||||
};
|
|
||||||
|
|
||||||
StaticNpc N(D_80242C74_C70FA4) = {
|
|
||||||
.id = NPC_Bubble_01,
|
.id = NPC_Bubble_01,
|
||||||
.settings = &N(D_80242C48_C70F78),
|
.settings = &N(NpcSettings_LavaBubble),
|
||||||
.pos = { -200.0f, 50.0f, 150.0f },
|
.pos = { -200.0f, 50.0f, 150.0f },
|
||||||
.yaw = 90,
|
.yaw = 90,
|
||||||
.flags = NPC_FLAG_LOCK_ANIMS,
|
.flags = NPC_FLAG_LOCK_ANIMS,
|
||||||
@ -91,9 +53,9 @@ StaticNpc N(D_80242C74_C70FA4) = {
|
|||||||
.aiDetectFlags = AI_DETECT_SIGHT | AI_DETECT_SENSITIVE_MOTION,
|
.aiDetectFlags = AI_DETECT_SIGHT | AI_DETECT_SENSITIVE_MOTION,
|
||||||
};
|
};
|
||||||
|
|
||||||
StaticNpc N(D_80242E64_C71194) = {
|
StaticNpc N(NpcData_LavaBubble_02) = {
|
||||||
.id = NPC_Bubble_02,
|
.id = NPC_Bubble_02,
|
||||||
.settings = &N(D_80242C48_C70F78),
|
.settings = &N(NpcSettings_LavaBubble),
|
||||||
.pos = { -250.0f, 80.0f, 50.0f },
|
.pos = { -250.0f, 80.0f, 50.0f },
|
||||||
.yaw = 90,
|
.yaw = 90,
|
||||||
.flags = NPC_FLAG_LOCK_ANIMS,
|
.flags = NPC_FLAG_LOCK_ANIMS,
|
||||||
@ -142,7 +104,7 @@ StaticNpc N(D_80242E64_C71194) = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
NpcGroupList N(DefaultNPCs) = {
|
NpcGroupList N(DefaultNPCs) = {
|
||||||
NPC_GROUP(N(D_80242C74_C70FA4), BTL_KZN_FORMATION_05, BTL_KZN_STAGE_01),
|
NPC_GROUP(N(NpcData_LavaBubble_01), BTL_KZN_FORMATION_05, BTL_KZN_STAGE_01),
|
||||||
NPC_GROUP(N(D_80242E64_C71194), BTL_KZN_FORMATION_06, BTL_KZN_STAGE_01),
|
NPC_GROUP(N(NpcData_LavaBubble_02), BTL_KZN_FORMATION_06, BTL_KZN_STAGE_01),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
@ -9,6 +9,8 @@
|
|||||||
#include "mapfs/kzn_08_shape.h"
|
#include "mapfs/kzn_08_shape.h"
|
||||||
#include "mapfs/kzn_08_hit.h"
|
#include "mapfs/kzn_08_hit.h"
|
||||||
|
|
||||||
|
#include "sprite/npc/LargePiranha.h"
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
NPC_PutridPiranha_01 = 0,
|
NPC_PutridPiranha_01 = 0,
|
||||||
NPC_PutridPiranha_02 = 1
|
NPC_PutridPiranha_02 = 1
|
||||||
|
@ -1,135 +1,12 @@
|
|||||||
#include "kzn_08.h"
|
#include "kzn_08.h"
|
||||||
|
|
||||||
extern EvtScript D_800936DC;
|
#include "world/common/enemy/complete/LavaBubble.inc.c"
|
||||||
|
#include "world/common/enemy/complete/PutridPiranha.inc.c"
|
||||||
|
|
||||||
#include "sprite/npc/LargePiranha.h"
|
StaticNpc N(NpcData_PutridPiranha)[] = {
|
||||||
|
|
||||||
f32 N(FlyingAI_JumpVels)[] = {
|
|
||||||
4.5, 3.5, 2.6, 2.0, 1.5, 20.0,
|
|
||||||
};
|
|
||||||
|
|
||||||
#include "world/common/enemy/FlyingAI.inc.c"
|
|
||||||
|
|
||||||
#include "world/common/enemy/FlyingNoAttackAI.inc.c"
|
|
||||||
|
|
||||||
#include "world/common/enemy/PiranhaPlantAI.inc.c"
|
|
||||||
|
|
||||||
MobileAISettings N(D_80244DB8_C76238) = {
|
|
||||||
.moveSpeed = 0.8f,
|
|
||||||
.moveTime = 100,
|
|
||||||
.alertRadius = 90.0f,
|
|
||||||
.playerSearchInterval = 4,
|
|
||||||
.chaseSpeed = 3.2f,
|
|
||||||
.chaseTurnRate = 10,
|
|
||||||
.chaseUpdateInterval = 1,
|
|
||||||
.chaseRadius = 100.0f,
|
|
||||||
.unk_AI_2C = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(D_80244DE8_C76268) = {
|
|
||||||
EVT_CALL(SetSelfVar, 0, 1)
|
|
||||||
EVT_CALL(SetSelfVar, 5, 0)
|
|
||||||
EVT_CALL(SetSelfVar, 6, 0)
|
|
||||||
EVT_CALL(SetSelfVar, 1, 150)
|
|
||||||
EVT_CALL(N(FlyingNoAttackAI_Main), EVT_PTR(N(D_80244DB8_C76238)))
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
NpcSettings N(80244E58) = {
|
|
||||||
.height = 20,
|
|
||||||
.radius = 22,
|
|
||||||
.level = 17,
|
|
||||||
.ai = &N(D_80244DE8_C76268),
|
|
||||||
.onHit = &EnemyNpcHit,
|
|
||||||
.onDefeat = &EnemyNpcDefeat,
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(D_80244E84_C76304) = {
|
|
||||||
EVT_CALL(GetBattleOutcome, LVar0)
|
|
||||||
EVT_SWITCH(LVar0)
|
|
||||||
EVT_CASE_EQ(OUTCOME_PLAYER_WON)
|
|
||||||
EVT_CALL(RemoveNpc, NPC_SELF)
|
|
||||||
EVT_CASE_EQ(OUTCOME_PLAYER_FLED)
|
|
||||||
EVT_CALL(SetNpcPos, NPC_SELF, NPC_DISPOSE_LOCATION)
|
|
||||||
EVT_CALL(func_80045900, 1)
|
|
||||||
EVT_CASE_EQ(OUTCOME_ENEMY_FLED)
|
|
||||||
EVT_CALL(SetEnemyFlagBits, NPC_SELF, ENEMY_FLAGS_10, 1)
|
|
||||||
EVT_CALL(RemoveNpc, NPC_SELF)
|
|
||||||
EVT_END_SWITCH
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
MobileAISettings N(D_80244F40_C763C0) = {
|
|
||||||
.moveTime = 30,
|
|
||||||
.waitTime = 30,
|
|
||||||
.alertRadius = 150.0f,
|
|
||||||
.playerSearchInterval = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(D_80244F70_C763F0) = {
|
|
||||||
EVT_CALL(SetSelfVar, 7, 1)
|
|
||||||
EVT_CALL(SetSelfVar, 8, 10)
|
|
||||||
EVT_CALL(SetSelfVar, 9, 9)
|
|
||||||
EVT_CALL(SetSelfVar, 10, 12)
|
|
||||||
EVT_CALL(SetSelfVar, 11, 7)
|
|
||||||
EVT_CALL(SetSelfVar, 12, 30)
|
|
||||||
EVT_CALL(SetSelfVar, 13, 15)
|
|
||||||
EVT_CALL(SetSelfVar, 14, 18)
|
|
||||||
EVT_CALL(SetSelfVar, 15, 15)
|
|
||||||
EVT_CALL(N(PiranhaPlantAI_Main), EVT_PTR(N(D_80244F40_C763C0)))
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
NpcSettings N(D_80245044_C764C4) = {
|
|
||||||
.height = 50,
|
|
||||||
.radius = 36,
|
|
||||||
.level = 17,
|
|
||||||
.ai = &N(D_80244F70_C763F0),
|
|
||||||
.onHit = &EnemyNpcHit,
|
|
||||||
.onDefeat = &EnemyNpcDefeat,
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(D_80245070_C764F0) = {
|
|
||||||
EVT_CALL(EnableNpcShadow, NPC_SELF, FALSE)
|
|
||||||
EVT_CALL(SetSelfVar, 0, 14)
|
|
||||||
EVT_CALL(SetSelfVar, 1, 28)
|
|
||||||
EVT_CALL(SetSelfVar, 4, 3)
|
|
||||||
EVT_CALL(SetSelfVar, 15, SOUND_20DE)
|
|
||||||
EVT_CALL(EVT_PTR(N(MeleeHitbox_Main)))
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(EVS_802450F0) = {
|
|
||||||
EVT_CALL(GetOwnerEncounterTrigger, LVar0)
|
|
||||||
EVT_SWITCH(LVar0)
|
|
||||||
EVT_CASE_EQ(ENCOUNTER_TRIGGER_NONE)
|
|
||||||
EVT_CASE_OR_EQ(ENCOUNTER_TRIGGER_JUMP)
|
|
||||||
EVT_CASE_OR_EQ(ENCOUNTER_TRIGGER_HAMMER)
|
|
||||||
EVT_CASE_OR_EQ(ENCOUNTER_TRIGGER_PARTNER)
|
|
||||||
EVT_CALL(GetSelfAnimationFromTable, 7, LVar0)
|
|
||||||
EVT_EXEC_WAIT(D_800936DC)
|
|
||||||
EVT_END_CASE_GROUP
|
|
||||||
EVT_END_SWITCH
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
NpcSettings N(NpcSettings_MeleeHitbox) = {
|
|
||||||
.height = 20,
|
|
||||||
.radius = 28,
|
|
||||||
.level = 17,
|
|
||||||
.ai = &N(D_80245070_C764F0),
|
|
||||||
.onDefeat = &N(D_80244E84_C76304),
|
|
||||||
};
|
|
||||||
|
|
||||||
StaticNpc N(D_802451A8_C76628)[] = {
|
|
||||||
{
|
{
|
||||||
.id = NPC_PutridPiranha_01,
|
.id = NPC_PutridPiranha_01,
|
||||||
.settings = &N(D_80245044_C764C4),
|
.settings = &N(NpcSettings_PutridPiranha),
|
||||||
.pos = { 80.0f, 0.0f, 135.0f },
|
.pos = { 80.0f, 0.0f, 135.0f },
|
||||||
.yaw = 270,
|
.yaw = 270,
|
||||||
.flags = NPC_FLAG_100 | NPC_FLAG_LOCK_ANIMS,
|
.flags = NPC_FLAG_100 | NPC_FLAG_LOCK_ANIMS,
|
||||||
@ -178,7 +55,7 @@ StaticNpc N(D_802451A8_C76628)[] = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
.id = NPC_PutridPiranha_02,
|
.id = NPC_PutridPiranha_02,
|
||||||
.settings = &N(NpcSettings_MeleeHitbox),
|
.settings = &N(NpcSettings_PutridPiranha_Hitbox),
|
||||||
.pos = { NPC_DISPOSE_LOCATION },
|
.pos = { NPC_DISPOSE_LOCATION },
|
||||||
.yaw = 0,
|
.yaw = 0,
|
||||||
.flags = NPC_FLAG_100 | NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_DROPS,
|
.flags = NPC_FLAG_100 | NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_DROPS,
|
||||||
@ -209,6 +86,6 @@ StaticNpc N(D_802451A8_C76628)[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
NpcGroupList N(DefaultNPCs) = {
|
NpcGroupList N(DefaultNPCs) = {
|
||||||
NPC_GROUP(N(D_802451A8_C76628), BTL_KZN_FORMATION_11, BTL_KZN_STAGE_04),
|
NPC_GROUP(N(NpcData_PutridPiranha), BTL_KZN_FORMATION_11, BTL_KZN_STAGE_04),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
@ -7,8 +7,7 @@
|
|||||||
#include "world/common/atomic/SuperBlock.data.inc.c"
|
#include "world/common/atomic/SuperBlock.data.inc.c"
|
||||||
|
|
||||||
EvtScript N(EVS_MakeEntities) = {
|
EvtScript N(EVS_MakeEntities) = {
|
||||||
EVT_CALL(MakeEntity, EVT_PTR(Entity_SuperBlock), 130, 480, -75, 0, MAKE_ENTITY_END)
|
EVT_MAKE_SUPER_BLOCK(130, 480, -75, 0)
|
||||||
EVT_SETUP_SUPER_BLOCK(SUPER_BLOCK_MAPVAR, SUPER_BLOCK_GAMEFLAG)
|
|
||||||
EVT_CALL(MakeEntity, EVT_PTR(Entity_HiddenPanel), 350, 350, 55, 0, MODEL_o149, MAKE_ENTITY_END)
|
EVT_CALL(MakeEntity, EVT_PTR(Entity_HiddenPanel), 350, 350, 55, 0, MODEL_o149, MAKE_ENTITY_END)
|
||||||
EVT_CALL(AssignPanelFlag, GF_KZN09_HiddenPanel)
|
EVT_CALL(AssignPanelFlag, GF_KZN09_HiddenPanel)
|
||||||
EVT_RETURN
|
EVT_RETURN
|
||||||
|
@ -1,222 +1,15 @@
|
|||||||
#include "kzn_09.h"
|
#include "kzn_09.h"
|
||||||
|
|
||||||
extern EvtScript D_800936DC;
|
|
||||||
|
|
||||||
#include "world/common/enemy/PiranhaPlantAI.inc.c"
|
|
||||||
|
|
||||||
#include "world/common/enemy/TackleAI.inc.c"
|
|
||||||
|
|
||||||
#include "world/common/AwaitPlayerNearNpc.inc.c"
|
|
||||||
|
|
||||||
NpcSettings N(NpcSettings_Kolorado) = {
|
NpcSettings N(NpcSettings_Kolorado) = {
|
||||||
.height = 40,
|
.height = 40,
|
||||||
.radius = 24,
|
.radius = 24,
|
||||||
.level = 99,
|
.level = 99,
|
||||||
};
|
};
|
||||||
|
|
||||||
EvtScript N(EVS_NpcDefeat_PiranhaHitbox) = {
|
#include "world/common/enemy/complete/PutridPiranha.inc.c"
|
||||||
EVT_CALL(GetBattleOutcome, LVar0)
|
#include "world/common/enemy/complete/SpikeTop.inc.c"
|
||||||
EVT_SWITCH(LVar0)
|
|
||||||
EVT_CASE_EQ(OUTCOME_PLAYER_WON)
|
|
||||||
EVT_CALL(RemoveNpc, NPC_SELF)
|
|
||||||
EVT_CASE_EQ(OUTCOME_PLAYER_FLED)
|
|
||||||
EVT_CALL(SetNpcPos, NPC_SELF, NPC_DISPOSE_LOCATION)
|
|
||||||
EVT_CALL(func_80045900, 1)
|
|
||||||
EVT_CASE_EQ(OUTCOME_ENEMY_FLED)
|
|
||||||
EVT_CALL(SetEnemyFlagBits, NPC_SELF, ENEMY_FLAGS_10, 1)
|
|
||||||
EVT_CALL(RemoveNpc, NPC_SELF)
|
|
||||||
EVT_END_SWITCH
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
MobileAISettings N(D_80244C38_C7B918) = {
|
NpcSettings N(NpcSettings_Zipline) = {
|
||||||
.moveTime = 30,
|
|
||||||
.waitTime = 30,
|
|
||||||
.alertRadius = 150.0f,
|
|
||||||
.playerSearchInterval = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(EVS_NpcAI_Piranha) = {
|
|
||||||
EVT_CALL(SetSelfVar, 7, 1)
|
|
||||||
EVT_CALL(SetSelfVar, 8, 10)
|
|
||||||
EVT_CALL(SetSelfVar, 9, 9)
|
|
||||||
EVT_CALL(SetSelfVar, 10, 12)
|
|
||||||
EVT_CALL(SetSelfVar, 11, 7)
|
|
||||||
EVT_CALL(SetSelfVar, 12, 30)
|
|
||||||
EVT_CALL(SetSelfVar, 13, 15)
|
|
||||||
EVT_CALL(SetSelfVar, 14, 18)
|
|
||||||
EVT_CALL(SetSelfVar, 15, 15)
|
|
||||||
EVT_CALL(N(PiranhaPlantAI_Main), EVT_PTR(N(D_80244C38_C7B918)))
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
NpcSettings N(NpcSettings_Piranha) = {
|
|
||||||
.height = 50,
|
|
||||||
.radius = 36,
|
|
||||||
.level = 17,
|
|
||||||
.ai = &N(EVS_NpcAI_Piranha),
|
|
||||||
.onHit = &EnemyNpcHit,
|
|
||||||
.onDefeat = &EnemyNpcDefeat,
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(EVS_NpcAI_PiranhaHitbox) = {
|
|
||||||
EVT_CALL(EnableNpcShadow, NPC_SELF, FALSE)
|
|
||||||
EVT_CALL(SetSelfVar, 0, 14)
|
|
||||||
EVT_CALL(SetSelfVar, 1, 28)
|
|
||||||
EVT_CALL(SetSelfVar, 4, 3)
|
|
||||||
EVT_CALL(SetSelfVar, 15, SOUND_20DE)
|
|
||||||
EVT_CALL(N(MeleeHitbox_Main))
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(EVS_80244DE8) = {
|
|
||||||
EVT_CALL(GetOwnerEncounterTrigger, LVar0)
|
|
||||||
EVT_SWITCH(LVar0)
|
|
||||||
EVT_CASE_EQ(ENCOUNTER_TRIGGER_NONE)
|
|
||||||
EVT_CASE_OR_EQ(ENCOUNTER_TRIGGER_JUMP)
|
|
||||||
EVT_CASE_OR_EQ(ENCOUNTER_TRIGGER_HAMMER)
|
|
||||||
EVT_CASE_OR_EQ(ENCOUNTER_TRIGGER_PARTNER)
|
|
||||||
EVT_CALL(GetSelfAnimationFromTable, 7, LVar0)
|
|
||||||
EVT_EXEC_WAIT(D_800936DC)
|
|
||||||
EVT_END_CASE_GROUP
|
|
||||||
EVT_END_SWITCH
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
NpcSettings N(NpcSettings_PiranhaHitbox) = {
|
|
||||||
.height = 20,
|
|
||||||
.radius = 28,
|
|
||||||
.level = 17,
|
|
||||||
.ai = &N(EVS_NpcAI_PiranhaHitbox),
|
|
||||||
.onDefeat = &N(EVS_NpcDefeat_PiranhaHitbox),
|
|
||||||
};
|
|
||||||
|
|
||||||
MobileAISettings N(D_80244EA0_C7BB80) = {
|
|
||||||
.moveSpeed = 1.0f,
|
|
||||||
.moveTime = 60,
|
|
||||||
.waitTime = 60,
|
|
||||||
.alertRadius = 90.0f,
|
|
||||||
.alertOffsetDist = 40.0f,
|
|
||||||
.playerSearchInterval = 1,
|
|
||||||
.chaseSpeed = 4.5f,
|
|
||||||
.chaseRadius = 100.0f,
|
|
||||||
.chaseOffsetDist = 40.0f,
|
|
||||||
.unk_AI_2C = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(D_80244ED0_C7BBB0) = {
|
|
||||||
EVT_CALL(SetSelfVar, 2, 5)
|
|
||||||
EVT_CALL(SetSelfVar, 3, 2)
|
|
||||||
EVT_CALL(SetSelfVar, 5, 5)
|
|
||||||
EVT_CALL(SetSelfVar, 7, 2)
|
|
||||||
EVT_CALL(N(TackleAI_Main), EVT_PTR(N(D_80244EA0_C7BB80)))
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
MobileAISettings N(D_80244F40_C7BC20) = {
|
|
||||||
.moveSpeed = 1.0f,
|
|
||||||
.moveTime = 60,
|
|
||||||
.waitTime = 60,
|
|
||||||
.alertRadius = 90.0f,
|
|
||||||
.alertOffsetDist = 40.0f,
|
|
||||||
.playerSearchInterval = 1,
|
|
||||||
.chaseSpeed = 7.0f,
|
|
||||||
.chaseRadius = 100.0f,
|
|
||||||
.chaseOffsetDist = 40.0f,
|
|
||||||
.unk_AI_2C = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(D_80244F70_C7BC50) = {
|
|
||||||
EVT_CALL(SetSelfVar, 2, 4)
|
|
||||||
EVT_CALL(SetSelfVar, 3, 10)
|
|
||||||
EVT_CALL(SetSelfVar, 5, 4)
|
|
||||||
EVT_CALL(SetSelfVar, 7, 3)
|
|
||||||
EVT_CALL(N(TackleAI_Main), EVT_PTR(N(D_80244F40_C7BC20)))
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
MobileAISettings N(D_80244FE0_C7BCC0) = {
|
|
||||||
.moveSpeed = 1.0f,
|
|
||||||
.moveTime = 20,
|
|
||||||
.waitTime = 5,
|
|
||||||
.alertRadius = 120.0f,
|
|
||||||
.playerSearchInterval = 3,
|
|
||||||
.chaseSpeed = 6.0f,
|
|
||||||
.chaseRadius = 150.0f,
|
|
||||||
.unk_AI_2C = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(D_80245010_C7BCF0) = {
|
|
||||||
EVT_CALL(SetSelfVar, 2, 3)
|
|
||||||
EVT_CALL(SetSelfVar, 3, 8)
|
|
||||||
EVT_CALL(SetSelfVar, 5, 6)
|
|
||||||
EVT_CALL(SetSelfVar, 7, 6)
|
|
||||||
EVT_CALL(N(TackleAI_Main), EVT_PTR(N(D_80244FE0_C7BCC0)))
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(D_80245080_C7BD60) = {
|
|
||||||
EVT_CALL(N(func_80240814_97BE44))
|
|
||||||
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_BuzzyBeetle_Anim0F)
|
|
||||||
EVT_CALL(N(AwaitPlayerNearNpc))
|
|
||||||
EVT_CALL(SelfEnemyOverrideSyncPos, 1)
|
|
||||||
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_GRAVITY, TRUE)
|
|
||||||
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_BuzzyBeetle_Anim00)
|
|
||||||
EVT_CALL(N(func_802408B4_97BEE4))
|
|
||||||
EVT_CALL(SelfEnemyOverrideSyncPos, 0)
|
|
||||||
EVT_CALL(SetSelfVar, 2, 5)
|
|
||||||
EVT_CALL(SetSelfVar, 3, 2)
|
|
||||||
EVT_CALL(SetSelfVar, 5, 5)
|
|
||||||
EVT_CALL(SetSelfVar, 7, 2)
|
|
||||||
EVT_CALL(N(TackleAI_Main), EVT_PTR(N(D_80244EA0_C7BB80)))
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
NpcSettings N(80245174) = {
|
|
||||||
.height = 20,
|
|
||||||
.radius = 22,
|
|
||||||
.level = 10,
|
|
||||||
.ai = &N(D_80244ED0_C7BBB0),
|
|
||||||
.onHit = &EnemyNpcHit,
|
|
||||||
.onDefeat = &EnemyNpcDefeat,
|
|
||||||
};
|
|
||||||
|
|
||||||
NpcSettings N(802451A0) = {
|
|
||||||
.height = 20,
|
|
||||||
.radius = 22,
|
|
||||||
.level = 10,
|
|
||||||
.ai = &N(D_80245080_C7BD60),
|
|
||||||
.onHit = &EnemyNpcHit,
|
|
||||||
.onDefeat = &EnemyNpcDefeat,
|
|
||||||
};
|
|
||||||
|
|
||||||
NpcSettings N(D_802451CC_C7BEAC) = {
|
|
||||||
.height = 20,
|
|
||||||
.radius = 22,
|
|
||||||
.level = 17,
|
|
||||||
.ai = &N(D_80244F70_C7BC50),
|
|
||||||
.onHit = &EnemyNpcHit,
|
|
||||||
.onDefeat = &EnemyNpcDefeat,
|
|
||||||
};
|
|
||||||
|
|
||||||
NpcSettings N(802451F8) = {
|
|
||||||
.height = 24,
|
|
||||||
.radius = 24,
|
|
||||||
.level = 25,
|
|
||||||
.ai = &N(D_80245010_C7BCF0),
|
|
||||||
.onHit = &EnemyNpcHit,
|
|
||||||
.onDefeat = &EnemyNpcDefeat,
|
|
||||||
};
|
|
||||||
|
|
||||||
NpcSettings N(NpcSettings_Dummy) = {
|
|
||||||
.height = 24,
|
.height = 24,
|
||||||
.radius = 24,
|
.radius = 24,
|
||||||
.level = 99,
|
.level = 99,
|
||||||
@ -235,7 +28,7 @@ EvtScript N(D_80245B64_C7C844) = {
|
|||||||
ITEM_LETTER25, 0,
|
ITEM_LETTER25, 0,
|
||||||
MSG_CH5_00E8, MSG_CH5_00E9, MSG_CH5_00EA, MSG_CH5_00EB,
|
MSG_CH5_00E8, MSG_CH5_00E9, MSG_CH5_00EA, MSG_CH5_00EB,
|
||||||
EVT_PTR(N(LetterList)))
|
EVT_PTR(N(LetterList)))
|
||||||
EVT_EXEC_WAIT(N(DoLetterDelivery))
|
EVT_EXEC_WAIT(N(EVS_DoLetterDelivery))
|
||||||
EVT_RETURN
|
EVT_RETURN
|
||||||
EVT_END
|
EVT_END
|
||||||
};
|
};
|
||||||
@ -490,7 +283,7 @@ StaticNpc N(NpcData_PassiveNPCs)[] = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
.id = NPC_ZiplineDummy,
|
.id = NPC_ZiplineDummy,
|
||||||
.settings = &N(NpcSettings_Dummy),
|
.settings = &N(NpcSettings_Zipline),
|
||||||
.pos = { NPC_DISPOSE_LOCATION },
|
.pos = { NPC_DISPOSE_LOCATION },
|
||||||
.yaw = 90,
|
.yaw = 90,
|
||||||
.flags = NPC_FLAG_PASSIVE | NPC_FLAG_100 | NPC_FLAG_GRAVITY | NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_200000,
|
.flags = NPC_FLAG_PASSIVE | NPC_FLAG_100 | NPC_FLAG_GRAVITY | NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_200000,
|
||||||
@ -524,7 +317,7 @@ StaticNpc N(NpcData_PassiveNPCs)[] = {
|
|||||||
|
|
||||||
StaticNpc N(NpcData_SpikeTop) = {
|
StaticNpc N(NpcData_SpikeTop) = {
|
||||||
.id = NPC_SpikeTop,
|
.id = NPC_SpikeTop,
|
||||||
.settings = &N(D_802451CC_C7BEAC),
|
.settings = &N(NpcSettings_SpikeTop),
|
||||||
.pos = { -100.0f, 350.0f, 50.0f },
|
.pos = { -100.0f, 350.0f, 50.0f },
|
||||||
.yaw = 270,
|
.yaw = 270,
|
||||||
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_PROJECT_SHADOW,
|
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_PROJECT_SHADOW,
|
||||||
@ -572,10 +365,10 @@ StaticNpc N(NpcData_SpikeTop) = {
|
|||||||
.aiDetectFlags = AI_DETECT_SIGHT | AI_DETECT_SENSITIVE_MOTION,
|
.aiDetectFlags = AI_DETECT_SIGHT | AI_DETECT_SENSITIVE_MOTION,
|
||||||
};
|
};
|
||||||
|
|
||||||
StaticNpc N(NpcData_Piranha)[] = {
|
StaticNpc N(NpcData_PutridPiranha)[] = {
|
||||||
{
|
{
|
||||||
.id = NPC_Piranha,
|
.id = NPC_Piranha,
|
||||||
.settings = &N(NpcSettings_Piranha),
|
.settings = &N(NpcSettings_PutridPiranha),
|
||||||
.pos = { 200.0f, 350.0f, 100.0f },
|
.pos = { 200.0f, 350.0f, 100.0f },
|
||||||
.yaw = 270,
|
.yaw = 270,
|
||||||
.flags = NPC_FLAG_LOCK_ANIMS,
|
.flags = NPC_FLAG_LOCK_ANIMS,
|
||||||
@ -624,7 +417,7 @@ StaticNpc N(NpcData_Piranha)[] = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
.id = NPC_Piranha_Hitbox,
|
.id = NPC_Piranha_Hitbox,
|
||||||
.settings = &N(NpcSettings_PiranhaHitbox),
|
.settings = &N(NpcSettings_PutridPiranha_Hitbox),
|
||||||
.pos = { NPC_DISPOSE_LOCATION },
|
.pos = { NPC_DISPOSE_LOCATION },
|
||||||
.yaw = 0,
|
.yaw = 0,
|
||||||
.flags = NPC_FLAG_100 | NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_DROPS,
|
.flags = NPC_FLAG_100 | NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_DROPS,
|
||||||
@ -657,6 +450,6 @@ StaticNpc N(NpcData_Piranha)[] = {
|
|||||||
NpcGroupList N(DefaultNPCs) = {
|
NpcGroupList N(DefaultNPCs) = {
|
||||||
NPC_GROUP(N(NpcData_PassiveNPCs)),
|
NPC_GROUP(N(NpcData_PassiveNPCs)),
|
||||||
NPC_GROUP(N(NpcData_SpikeTop), BTL_KZN_FORMATION_0B, BTL_KZN_STAGE_01),
|
NPC_GROUP(N(NpcData_SpikeTop), BTL_KZN_FORMATION_0B, BTL_KZN_STAGE_01),
|
||||||
NPC_GROUP(N(NpcData_Piranha), BTL_KZN_FORMATION_0F, BTL_KZN_STAGE_01),
|
NPC_GROUP(N(NpcData_PutridPiranha), BTL_KZN_FORMATION_0F, BTL_KZN_STAGE_01),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
@ -1,46 +1,9 @@
|
|||||||
#include "kzn_11.h"
|
#include "kzn_11.h"
|
||||||
|
|
||||||
f32 N(FlyingAI_JumpVels)[] = {
|
#include "world/common/enemy/complete/LavaBubble.inc.c"
|
||||||
4.5, 3.5, 2.6, 2.0, 1.5, 20.0,
|
|
||||||
};
|
|
||||||
|
|
||||||
#include "world/common/enemy/FlyingAI.inc.c"
|
|
||||||
|
|
||||||
#include "world/common/enemy/FlyingNoAttackAI.inc.c"
|
|
||||||
|
|
||||||
#include "world/common/enemy/FireBarAI.inc.c"
|
#include "world/common/enemy/FireBarAI.inc.c"
|
||||||
|
|
||||||
MobileAISettings N(AISettings_Bubble) = {
|
|
||||||
.moveSpeed = 0.8f,
|
|
||||||
.moveTime = 100,
|
|
||||||
.alertRadius = 90.0f,
|
|
||||||
.playerSearchInterval = 4,
|
|
||||||
.chaseSpeed = 3.2f,
|
|
||||||
.chaseTurnRate = 10,
|
|
||||||
.chaseUpdateInterval = 1,
|
|
||||||
.chaseRadius = 100.0f,
|
|
||||||
.unk_AI_2C = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(EVS_NpcAI_Bubble) = {
|
|
||||||
EVT_CALL(SetSelfVar, 0, 1)
|
|
||||||
EVT_CALL(SetSelfVar, 5, 0)
|
|
||||||
EVT_CALL(SetSelfVar, 6, 0)
|
|
||||||
EVT_CALL(SetSelfVar, 1, 150)
|
|
||||||
EVT_CALL(N(FlyingNoAttackAI_Main), EVT_PTR(N(AISettings_Bubble)))
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
NpcSettings N(NpcSettings_Bubble) = {
|
|
||||||
.height = 20,
|
|
||||||
.radius = 22,
|
|
||||||
.level = 17,
|
|
||||||
.ai = &N(EVS_NpcAI_Bubble),
|
|
||||||
.onHit = &EnemyNpcHit,
|
|
||||||
.onDefeat = &EnemyNpcDefeat,
|
|
||||||
};
|
|
||||||
|
|
||||||
s32 N(FireBar_Sounds)[] = {
|
s32 N(FireBar_Sounds)[] = {
|
||||||
SOUND_FIRE_BAR_0, SOUND_FIRE_BAR_1, SOUND_FIRE_BAR_2, SOUND_FIRE_BAR_3,
|
SOUND_FIRE_BAR_0, SOUND_FIRE_BAR_1, SOUND_FIRE_BAR_2, SOUND_FIRE_BAR_3,
|
||||||
SOUND_FIRE_BAR_4, SOUND_FIRE_BAR_5, SOUND_FIRE_BAR_6, SOUND_FIRE_BAR_7,
|
SOUND_FIRE_BAR_4, SOUND_FIRE_BAR_5, SOUND_FIRE_BAR_6, SOUND_FIRE_BAR_7,
|
||||||
@ -310,7 +273,7 @@ StaticNpc N(NpcData_FireBar_03)[] = {
|
|||||||
|
|
||||||
StaticNpc N(NpcData_Bubble_01) = {
|
StaticNpc N(NpcData_Bubble_01) = {
|
||||||
.id = NPC_Bubble_01,
|
.id = NPC_Bubble_01,
|
||||||
.settings = &N(NpcSettings_Bubble),
|
.settings = &N(NpcSettings_LavaBubble),
|
||||||
.pos = { -150.0f, 50.0f, 10.0f },
|
.pos = { -150.0f, 50.0f, 10.0f },
|
||||||
.yaw = 90,
|
.yaw = 90,
|
||||||
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING,
|
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING,
|
||||||
@ -360,7 +323,7 @@ StaticNpc N(NpcData_Bubble_01) = {
|
|||||||
|
|
||||||
StaticNpc N(NpcData_Bubble_02) = {
|
StaticNpc N(NpcData_Bubble_02) = {
|
||||||
.id = NPC_Bubble_02,
|
.id = NPC_Bubble_02,
|
||||||
.settings = &N(NpcSettings_Bubble),
|
.settings = &N(NpcSettings_LavaBubble),
|
||||||
.pos = { 150.0f, 50.0f, 10.0f },
|
.pos = { 150.0f, 50.0f, 10.0f },
|
||||||
.yaw = 270,
|
.yaw = 270,
|
||||||
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING,
|
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING,
|
||||||
|
@ -1,219 +1,13 @@
|
|||||||
#include "kzn_17.h"
|
#include "kzn_17.h"
|
||||||
|
|
||||||
#include "world/common/enemy/PiranhaPlantAI.inc.c"
|
|
||||||
#include "world/common/enemy/TackleAI.inc.c"
|
|
||||||
|
|
||||||
#include "world/common/AwaitPlayerNearNpc.inc.c"
|
|
||||||
|
|
||||||
extern EvtScript D_800936DC;
|
|
||||||
|
|
||||||
NpcSettings N(NpcSettings_Kolorado) = {
|
NpcSettings N(NpcSettings_Kolorado) = {
|
||||||
.height = 40,
|
.height = 40,
|
||||||
.radius = 24,
|
.radius = 24,
|
||||||
.level = 99,
|
.level = 99,
|
||||||
};
|
};
|
||||||
|
|
||||||
EvtScript N(EVS_NpcDefeat_PiranhaHitbox) = {
|
#include "world/common/enemy/complete/PutridPiranha.inc.c"
|
||||||
EVT_CALL(GetBattleOutcome, LVar0)
|
#include "world/common/enemy/complete/SpikeTop.inc.c"
|
||||||
EVT_SWITCH(LVar0)
|
|
||||||
EVT_CASE_EQ(OUTCOME_PLAYER_WON)
|
|
||||||
EVT_CALL(RemoveNpc, NPC_SELF)
|
|
||||||
EVT_CASE_EQ(OUTCOME_PLAYER_FLED)
|
|
||||||
EVT_CALL(SetNpcPos, NPC_SELF, NPC_DISPOSE_LOCATION)
|
|
||||||
EVT_CALL(func_80045900, 1)
|
|
||||||
EVT_CASE_EQ(OUTCOME_ENEMY_FLED)
|
|
||||||
EVT_CALL(SetEnemyFlagBits, NPC_SELF, ENEMY_FLAGS_10, 1)
|
|
||||||
EVT_CALL(RemoveNpc, NPC_SELF)
|
|
||||||
EVT_END_SWITCH
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
MobileAISettings N(AISettings_Piranha) = {
|
|
||||||
.moveTime = 30,
|
|
||||||
.waitTime = 30,
|
|
||||||
.alertRadius = 150.0f,
|
|
||||||
.playerSearchInterval = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(EVS_NpcAI_Piranha) = {
|
|
||||||
EVT_CALL(SetSelfVar, 7, 1)
|
|
||||||
EVT_CALL(SetSelfVar, 8, 10)
|
|
||||||
EVT_CALL(SetSelfVar, 9, 9)
|
|
||||||
EVT_CALL(SetSelfVar, 10, 12)
|
|
||||||
EVT_CALL(SetSelfVar, 11, 7)
|
|
||||||
EVT_CALL(SetSelfVar, 12, 30)
|
|
||||||
EVT_CALL(SetSelfVar, 13, 15)
|
|
||||||
EVT_CALL(SetSelfVar, 14, 18)
|
|
||||||
EVT_CALL(SetSelfVar, 15, 15)
|
|
||||||
EVT_CALL(N(PiranhaPlantAI_Main), EVT_PTR(N(AISettings_Piranha)))
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
NpcSettings N(NpcSettings_Piranha) = {
|
|
||||||
.height = 50,
|
|
||||||
.radius = 36,
|
|
||||||
.level = 17,
|
|
||||||
.ai = &N(EVS_NpcAI_Piranha),
|
|
||||||
.onHit = &EnemyNpcHit,
|
|
||||||
.onDefeat = &EnemyNpcDefeat,
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(EVS_NpcAI_PiranhaHitbox) = {
|
|
||||||
EVT_CALL(EnableNpcShadow, NPC_SELF, FALSE)
|
|
||||||
EVT_CALL(SetSelfVar, 0, 14)
|
|
||||||
EVT_CALL(SetSelfVar, 1, 28)
|
|
||||||
EVT_CALL(SetSelfVar, 4, 3)
|
|
||||||
EVT_CALL(SetSelfVar, 15, SOUND_20DE)
|
|
||||||
EVT_CALL(N(MeleeHitbox_Main))
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(EVS_80243C38) = {
|
|
||||||
EVT_CALL(GetOwnerEncounterTrigger, LVar0)
|
|
||||||
EVT_SWITCH(LVar0)
|
|
||||||
EVT_CASE_EQ(ENCOUNTER_TRIGGER_NONE)
|
|
||||||
EVT_CASE_OR_EQ(ENCOUNTER_TRIGGER_JUMP)
|
|
||||||
EVT_CASE_OR_EQ(ENCOUNTER_TRIGGER_HAMMER)
|
|
||||||
EVT_CASE_OR_EQ(ENCOUNTER_TRIGGER_PARTNER)
|
|
||||||
EVT_CALL(GetSelfAnimationFromTable, 7, LVar0)
|
|
||||||
EVT_EXEC_WAIT(D_800936DC)
|
|
||||||
EVT_END_CASE_GROUP
|
|
||||||
EVT_END_SWITCH
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
NpcSettings N(NpcSettings_PiranhaHitbox) = {
|
|
||||||
.height = 20,
|
|
||||||
.radius = 28,
|
|
||||||
.level = 17,
|
|
||||||
.ai = &N(EVS_NpcAI_PiranhaHitbox),
|
|
||||||
.onDefeat = &N(EVS_NpcDefeat_PiranhaHitbox),
|
|
||||||
};
|
|
||||||
|
|
||||||
MobileAISettings N(AISettings_Unused1) = {
|
|
||||||
.moveSpeed = 1.0f,
|
|
||||||
.moveTime = 60,
|
|
||||||
.waitTime = 60,
|
|
||||||
.alertRadius = 90.0f,
|
|
||||||
.alertOffsetDist = 40.0f,
|
|
||||||
.playerSearchInterval = 1,
|
|
||||||
.chaseSpeed = 4.5f,
|
|
||||||
.chaseRadius = 100.0f,
|
|
||||||
.chaseOffsetDist = 40.0f,
|
|
||||||
.unk_AI_2C = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(EVS_NpcAI_Unused1) = {
|
|
||||||
EVT_CALL(SetSelfVar, 2, 5)
|
|
||||||
EVT_CALL(SetSelfVar, 3, 2)
|
|
||||||
EVT_CALL(SetSelfVar, 5, 5)
|
|
||||||
EVT_CALL(SetSelfVar, 7, 2)
|
|
||||||
EVT_CALL(N(TackleAI_Main), EVT_PTR(N(AISettings_Unused1)))
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
MobileAISettings N(AISettings_SpikeTop) = {
|
|
||||||
.moveSpeed = 1.0f,
|
|
||||||
.moveTime = 60,
|
|
||||||
.waitTime = 60,
|
|
||||||
.alertRadius = 90.0f,
|
|
||||||
.alertOffsetDist = 40.0f,
|
|
||||||
.playerSearchInterval = 1,
|
|
||||||
.chaseSpeed = 7.0f,
|
|
||||||
.chaseRadius = 100.0f,
|
|
||||||
.chaseOffsetDist = 40.0f,
|
|
||||||
.unk_AI_2C = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(EVS_NpcAI_SpikeTop) = {
|
|
||||||
EVT_CALL(SetSelfVar, 2, 4)
|
|
||||||
EVT_CALL(SetSelfVar, 3, 10)
|
|
||||||
EVT_CALL(SetSelfVar, 5, 4)
|
|
||||||
EVT_CALL(SetSelfVar, 7, 3)
|
|
||||||
EVT_CALL(N(TackleAI_Main), EVT_PTR(N(AISettings_SpikeTop)))
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
MobileAISettings N(AISettings_Unused3) = {
|
|
||||||
.moveSpeed = 1.0f,
|
|
||||||
.moveTime = 20,
|
|
||||||
.waitTime = 5,
|
|
||||||
.alertRadius = 120.0f,
|
|
||||||
.playerSearchInterval = 3,
|
|
||||||
.chaseSpeed = 6.0f,
|
|
||||||
.chaseRadius = 150.0f,
|
|
||||||
.unk_AI_2C = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(EVS_NpcAI_Unused3) = {
|
|
||||||
EVT_CALL(SetSelfVar, 2, 3)
|
|
||||||
EVT_CALL(SetSelfVar, 3, 8)
|
|
||||||
EVT_CALL(SetSelfVar, 5, 6)
|
|
||||||
EVT_CALL(SetSelfVar, 7, 6)
|
|
||||||
EVT_CALL(N(TackleAI_Main), EVT_PTR(N(AISettings_Unused3)))
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(EVS_NpcAI_Unused2) = {
|
|
||||||
EVT_CALL(N(func_80240814_97BE44))
|
|
||||||
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_BuzzyBeetle_Anim0F)
|
|
||||||
EVT_CALL(N(AwaitPlayerNearNpc))
|
|
||||||
EVT_CALL(SelfEnemyOverrideSyncPos, 1)
|
|
||||||
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_GRAVITY, TRUE)
|
|
||||||
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_BuzzyBeetle_Anim00)
|
|
||||||
EVT_CALL(N(func_802408B4_97BEE4))
|
|
||||||
EVT_CALL(SelfEnemyOverrideSyncPos, 0)
|
|
||||||
EVT_CALL(SetSelfVar, 2, 5)
|
|
||||||
EVT_CALL(SetSelfVar, 3, 2)
|
|
||||||
EVT_CALL(SetSelfVar, 5, 5)
|
|
||||||
EVT_CALL(SetSelfVar, 7, 2)
|
|
||||||
EVT_CALL(N(TackleAI_Main), EVT_PTR(N(AISettings_Unused1)))
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
NpcSettings N(NpcSettings_Unused1) = {
|
|
||||||
.height = 20,
|
|
||||||
.radius = 22,
|
|
||||||
.level = 10,
|
|
||||||
.ai = &N(EVS_NpcAI_Unused1),
|
|
||||||
.onHit = &EnemyNpcHit,
|
|
||||||
.onDefeat = &EnemyNpcDefeat,
|
|
||||||
};
|
|
||||||
|
|
||||||
NpcSettings N(NpcSettings_Unused2) = {
|
|
||||||
.height = 20,
|
|
||||||
.radius = 22,
|
|
||||||
.level = 10,
|
|
||||||
.ai = &N(EVS_NpcAI_Unused2),
|
|
||||||
.onHit = &EnemyNpcHit,
|
|
||||||
.onDefeat = &EnemyNpcDefeat,
|
|
||||||
};
|
|
||||||
|
|
||||||
NpcSettings N(NpcSettings_SpikeTop) = {
|
|
||||||
.height = 20,
|
|
||||||
.radius = 22,
|
|
||||||
.level = 17,
|
|
||||||
.ai = &N(EVS_NpcAI_SpikeTop),
|
|
||||||
.onHit = &EnemyNpcHit,
|
|
||||||
.onDefeat = &EnemyNpcDefeat,
|
|
||||||
};
|
|
||||||
|
|
||||||
NpcSettings N(NpcSettings_Unused3) = {
|
|
||||||
.height = 24,
|
|
||||||
.radius = 24,
|
|
||||||
.level = 25,
|
|
||||||
.ai = &N(EVS_NpcAI_Unused3),
|
|
||||||
.onHit = &EnemyNpcHit,
|
|
||||||
.onDefeat = &EnemyNpcDefeat,
|
|
||||||
};
|
|
||||||
|
|
||||||
#include "world/common/atomic/LetterChoice.inc.c"
|
#include "world/common/atomic/LetterChoice.inc.c"
|
||||||
|
|
||||||
@ -228,7 +22,7 @@ EvtScript N(EVS_Kolorado_LetterDelivery1) = {
|
|||||||
ITEM_LETTER25, 0,
|
ITEM_LETTER25, 0,
|
||||||
MSG_CH5_00E4, MSG_CH5_00E5, MSG_CH5_00E6, MSG_CH5_00E7,
|
MSG_CH5_00E4, MSG_CH5_00E5, MSG_CH5_00E6, MSG_CH5_00E7,
|
||||||
EVT_PTR(N(LetterList)))
|
EVT_PTR(N(LetterList)))
|
||||||
EVT_EXEC_WAIT(N(DoLetterDelivery))
|
EVT_EXEC_WAIT(N(EVS_DoLetterDelivery))
|
||||||
EVT_RETURN
|
EVT_RETURN
|
||||||
EVT_END
|
EVT_END
|
||||||
};
|
};
|
||||||
@ -239,7 +33,7 @@ EvtScript N(EVS_Kolorado_LetterDelivery2) = {
|
|||||||
ITEM_LETTER25, 0,
|
ITEM_LETTER25, 0,
|
||||||
MSG_CH5_00E8, MSG_CH5_00E9, MSG_CH5_00EA, MSG_CH5_00EB,
|
MSG_CH5_00E8, MSG_CH5_00E9, MSG_CH5_00EA, MSG_CH5_00EB,
|
||||||
EVT_PTR(N(LetterList)))
|
EVT_PTR(N(LetterList)))
|
||||||
EVT_EXEC_WAIT(N(DoLetterDelivery))
|
EVT_EXEC_WAIT(N(EVS_DoLetterDelivery))
|
||||||
EVT_RETURN
|
EVT_RETURN
|
||||||
EVT_END
|
EVT_END
|
||||||
};
|
};
|
||||||
@ -400,7 +194,7 @@ StaticNpc N(NpcData_Kolorado) = {
|
|||||||
StaticNpc N(NpcData_Piranha)[] = {
|
StaticNpc N(NpcData_Piranha)[] = {
|
||||||
{
|
{
|
||||||
.id = NPC_Piranha,
|
.id = NPC_Piranha,
|
||||||
.settings = &N(NpcSettings_Piranha),
|
.settings = &N(NpcSettings_PutridPiranha),
|
||||||
.pos = { -325.0f, 0.0f, 150.0f },
|
.pos = { -325.0f, 0.0f, 150.0f },
|
||||||
.yaw = 270,
|
.yaw = 270,
|
||||||
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING,
|
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING,
|
||||||
@ -449,7 +243,7 @@ StaticNpc N(NpcData_Piranha)[] = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
.id = NPC_Piranha_Hitbox,
|
.id = NPC_Piranha_Hitbox,
|
||||||
.settings = &N(NpcSettings_PiranhaHitbox),
|
.settings = &N(NpcSettings_PutridPiranha_Hitbox),
|
||||||
.pos = { NPC_DISPOSE_LOCATION },
|
.pos = { NPC_DISPOSE_LOCATION },
|
||||||
.yaw = 0,
|
.yaw = 0,
|
||||||
.flags = NPC_FLAG_100 | NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_DROPS,
|
.flags = NPC_FLAG_100 | NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_DROPS,
|
||||||
|
@ -354,7 +354,7 @@ EvtScript N(EVS_Kolorado_LetterDelivery) = {
|
|||||||
ITEM_LETTER25, 0,
|
ITEM_LETTER25, 0,
|
||||||
MSG_CH5_00E4, MSG_CH5_00E5, MSG_CH5_00E6, MSG_CH5_00E7,
|
MSG_CH5_00E4, MSG_CH5_00E5, MSG_CH5_00E6, MSG_CH5_00E7,
|
||||||
EVT_PTR(N(LetterList)))
|
EVT_PTR(N(LetterList)))
|
||||||
EVT_EXEC_WAIT(N(DoLetterDelivery))
|
EVT_EXEC_WAIT(N(EVS_DoLetterDelivery))
|
||||||
EVT_RETURN
|
EVT_RETURN
|
||||||
EVT_END
|
EVT_END
|
||||||
};
|
};
|
||||||
|
@ -200,8 +200,7 @@ EvtScript N(EVS_OnBreakWall) = {
|
|||||||
EvtScript N(EVS_Main) = {
|
EvtScript N(EVS_Main) = {
|
||||||
EVT_SET(GB_WorldLocation, LOCATION_MT_LAVALAVA)
|
EVT_SET(GB_WorldLocation, LOCATION_MT_LAVALAVA)
|
||||||
EVT_CALL(SetSpriteShading, SHADING_KZN_20)
|
EVT_CALL(SetSpriteShading, SHADING_KZN_20)
|
||||||
EVT_SETUP_CAMERA_DEFAULT()
|
EVT_SETUP_CAMERA_NO_LEAD()
|
||||||
EVT_CALL(SetCamLeadPlayer, CAM_DEFAULT, FALSE)
|
|
||||||
EVT_CALL(MakeNpcs, TRUE, EVT_PTR(N(DefaultNPCs)))
|
EVT_CALL(MakeNpcs, TRUE, EVT_PTR(N(DefaultNPCs)))
|
||||||
EVT_SET(LVar0, N(EVS_BindExitTriggers))
|
EVT_SET(LVar0, N(EVS_BindExitTriggers))
|
||||||
EVT_EXEC(EnterWalk)
|
EVT_EXEC(EnterWalk)
|
||||||
|
@ -53,7 +53,7 @@ EvtScript N(EVS_Kolorado_LetterDelivery) = {
|
|||||||
ITEM_LETTER25, 0,
|
ITEM_LETTER25, 0,
|
||||||
MSG_CH5_00E4, MSG_CH5_00E5, MSG_CH5_00E6, MSG_CH5_00E7,
|
MSG_CH5_00E4, MSG_CH5_00E5, MSG_CH5_00E6, MSG_CH5_00E7,
|
||||||
EVT_PTR(N(LetterList)))
|
EVT_PTR(N(LetterList)))
|
||||||
EVT_EXEC_WAIT(N(DoLetterDelivery))
|
EVT_EXEC_WAIT(N(EVS_DoLetterDelivery))
|
||||||
EVT_RETURN
|
EVT_RETURN
|
||||||
EVT_END
|
EVT_END
|
||||||
};
|
};
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
extern EvtScript N(EVS_Main);
|
extern EvtScript N(EVS_Main);
|
||||||
extern EvtScript N(EVS_FlyingGull);
|
extern EvtScript N(EVS_FlyingGull);
|
||||||
extern EvtScript N(EVS_80242A14);
|
extern EvtScript N(EVS_WhaleMain);
|
||||||
|
|
||||||
extern NpcGroupList N(DefaultNPCs);
|
extern NpcGroupList N(DefaultNPCs);
|
||||||
|
|
||||||
@ -69,7 +69,7 @@ EvtScript N(EVS_Main) = {
|
|||||||
EVT_SETUP_CAMERA_DEFAULT()
|
EVT_SETUP_CAMERA_DEFAULT()
|
||||||
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs)))
|
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs)))
|
||||||
EVT_EXEC(N(EVS_FlyingGull))
|
EVT_EXEC(N(EVS_FlyingGull))
|
||||||
EVT_EXEC(N(EVS_80242A14))
|
EVT_EXEC(N(EVS_WhaleMain))
|
||||||
EVT_CALL(SetMusicTrack, 0, SONG_RIDING_THE_WHALE, 0, 8)
|
EVT_CALL(SetMusicTrack, 0, SONG_RIDING_THE_WHALE, 0, 8)
|
||||||
EVT_CALL(PlayAmbientSounds, AMBIENT_BEACH)
|
EVT_CALL(PlayAmbientSounds, AMBIENT_BEACH)
|
||||||
EVT_EXEC(N(EVS_AnimateWaves))
|
EVT_EXEC(N(EVS_AnimateWaves))
|
||||||
|
@ -23,7 +23,7 @@ ApiStatus N(UnkPlayerPosFunc)(Evt* script, s32 isInitialCall) {
|
|||||||
|
|
||||||
MAP_RODATA_PAD(2, unk);
|
MAP_RODATA_PAD(2, unk);
|
||||||
|
|
||||||
EvtScript N(D_80241B6C_8666AC) = {
|
EvtScript N(EVS_WhaleState_Still) = {
|
||||||
EVT_CALL(N(UnkFloatFunc001), LVarC, LVar0, 30, 60, 30, 0, 0)
|
EVT_CALL(N(UnkFloatFunc001), LVarC, LVar0, 30, 60, 30, 0, 0)
|
||||||
EVT_CALL(RotateModel, MODEL_o167, LVar0, 1, 0, 0)
|
EVT_CALL(RotateModel, MODEL_o167, LVar0, 1, 0, 0)
|
||||||
EVT_CALL(RotateModel, MODEL_o168, LVar0, -1, 0, 0)
|
EVT_CALL(RotateModel, MODEL_o168, LVar0, -1, 0, 0)
|
||||||
@ -31,7 +31,7 @@ EvtScript N(D_80241B6C_8666AC) = {
|
|||||||
EVT_END
|
EVT_END
|
||||||
};
|
};
|
||||||
|
|
||||||
EvtScript N(D_80241BE4_866724) = {
|
EvtScript N(EVS_WhaleState_2) = {
|
||||||
EVT_CALL(N(UnkFloatFunc001), LVarC, LVar0, 0, 30, 30, 1, 0)
|
EVT_CALL(N(UnkFloatFunc001), LVarC, LVar0, 0, 30, 30, 1, 0)
|
||||||
EVT_SETF(LVar1, LVar0)
|
EVT_SETF(LVar1, LVar0)
|
||||||
EVT_DIVF(LVar1, EVT_FLOAT(3.0))
|
EVT_DIVF(LVar1, EVT_FLOAT(3.0))
|
||||||
@ -55,7 +55,7 @@ EvtScript N(D_80241BE4_866724) = {
|
|||||||
EVT_END
|
EVT_END
|
||||||
};
|
};
|
||||||
|
|
||||||
EvtScript N(D_80241E20_866960) = {
|
EvtScript N(EVS_WhaleState_IdleSad) = {
|
||||||
EVT_CALL(N(UnkFloatFunc001), LVarC, LVar0, 0, -30, 8, 1, 0)
|
EVT_CALL(N(UnkFloatFunc001), LVarC, LVar0, 0, -30, 8, 1, 0)
|
||||||
EVT_ADDF(LVar0, EVT_FLOAT(30.0))
|
EVT_ADDF(LVar0, EVT_FLOAT(30.0))
|
||||||
EVT_SETF(LVar1, LVar0)
|
EVT_SETF(LVar1, LVar0)
|
||||||
@ -80,12 +80,12 @@ EvtScript N(D_80241E20_866960) = {
|
|||||||
EVT_END
|
EVT_END
|
||||||
};
|
};
|
||||||
|
|
||||||
EvtScript N(D_8024206C_866BAC) = {
|
EvtScript N(EVS_WhaleState_WalkSad) = {
|
||||||
EVT_RETURN
|
EVT_RETURN
|
||||||
EVT_END
|
EVT_END
|
||||||
};
|
};
|
||||||
|
|
||||||
EvtScript N(D_8024207C_866BBC) = {
|
EvtScript N(EVS_WhaleState_Shout) = {
|
||||||
EVT_CALL(GetNpcVar, NPC_Whale, 0, LVar3)
|
EVT_CALL(GetNpcVar, NPC_Whale, 0, LVar3)
|
||||||
EVT_IF_EQ(LVar3, 0)
|
EVT_IF_EQ(LVar3, 0)
|
||||||
EVT_CALL(N(UnkPlayerPosFunc))
|
EVT_CALL(N(UnkPlayerPosFunc))
|
||||||
@ -103,12 +103,12 @@ EvtScript N(D_8024207C_866BBC) = {
|
|||||||
EVT_END
|
EVT_END
|
||||||
};
|
};
|
||||||
|
|
||||||
EvtScript N(D_802421D4_866D14) = {
|
EvtScript N(EVS_WhaleState_TalkSad) = {
|
||||||
EVT_RETURN
|
EVT_RETURN
|
||||||
EVT_END
|
EVT_END
|
||||||
};
|
};
|
||||||
|
|
||||||
EvtScript N(D_802421E4_866D24) = {
|
EvtScript N(EVS_WhaleState_HurtStill) = {
|
||||||
EVT_IF_GE(LVarC, 0)
|
EVT_IF_GE(LVarC, 0)
|
||||||
EVT_IF_LE(LVarC, 2)
|
EVT_IF_LE(LVarC, 2)
|
||||||
EVT_CALL(EnableModel, MODEL_o170, FALSE)
|
EVT_CALL(EnableModel, MODEL_o170, FALSE)
|
||||||
@ -132,7 +132,7 @@ EvtScript N(D_802421E4_866D24) = {
|
|||||||
EVT_END
|
EVT_END
|
||||||
};
|
};
|
||||||
|
|
||||||
EvtScript N(D_8024230C_866E4C) = {
|
EvtScript N(EVS_WhaleState_Run) = {
|
||||||
EVT_SET(LVar0, LVarC)
|
EVT_SET(LVar0, LVarC)
|
||||||
EVT_DIV(LVar0, 20)
|
EVT_DIV(LVar0, 20)
|
||||||
EVT_MOD(LVar0, 2)
|
EVT_MOD(LVar0, 2)
|
||||||
@ -167,7 +167,7 @@ EvtScript N(D_80242474_866FB4) = {
|
|||||||
EVT_END
|
EVT_END
|
||||||
};
|
};
|
||||||
|
|
||||||
EvtScript N(D_802425B4_8670F4) = {
|
EvtScript N(EVS_WhaleState_Talk) = {
|
||||||
EVT_SET(LVar0, LVarC)
|
EVT_SET(LVar0, LVarC)
|
||||||
EVT_DIV(LVar0, 20)
|
EVT_DIV(LVar0, 20)
|
||||||
EVT_MOD(LVar0, 2)
|
EVT_MOD(LVar0, 2)
|
||||||
@ -187,7 +187,7 @@ EvtScript N(D_802425B4_8670F4) = {
|
|||||||
EVT_END
|
EVT_END
|
||||||
};
|
};
|
||||||
|
|
||||||
EvtScript N(D_8024271C_86725C) = {
|
EvtScript N(EVS_WhaleState_Idle) = {
|
||||||
EVT_CALL(N(UnkFloatFunc001), LVarC, LVar0, 30, 60, 30, 0, 0)
|
EVT_CALL(N(UnkFloatFunc001), LVarC, LVar0, 30, 60, 30, 0, 0)
|
||||||
EVT_CALL(RotateModel, MODEL_o167, LVar0, 1, 0, 0)
|
EVT_CALL(RotateModel, MODEL_o167, LVar0, 1, 0, 0)
|
||||||
EVT_CALL(RotateModel, MODEL_o168, LVar0, -1, 0, 0)
|
EVT_CALL(RotateModel, MODEL_o168, LVar0, -1, 0, 0)
|
||||||
@ -195,7 +195,7 @@ EvtScript N(D_8024271C_86725C) = {
|
|||||||
EVT_END
|
EVT_END
|
||||||
};
|
};
|
||||||
|
|
||||||
EvtScript N(D_80242794_8672D4) = {
|
EvtScript N(EVS_WhaleState_Walk) = {
|
||||||
EVT_CALL(N(UnkFloatFunc001), LVarC, LVar0, 0, 30, 3, 0, 0)
|
EVT_CALL(N(UnkFloatFunc001), LVarC, LVar0, 0, 30, 3, 0, 0)
|
||||||
EVT_SET(LVar1, LVar0)
|
EVT_SET(LVar1, LVar0)
|
||||||
EVT_DIV(LVar1, 3)
|
EVT_DIV(LVar1, 3)
|
||||||
@ -222,7 +222,7 @@ EvtScript N(D_80242794_8672D4) = {
|
|||||||
EVT_END
|
EVT_END
|
||||||
};
|
};
|
||||||
|
|
||||||
EvtScript N(EVS_80242A14) = {
|
EvtScript N(EVS_WhaleMain) = {
|
||||||
EVT_SET_GROUP(EVT_GROUP_00)
|
EVT_SET_GROUP(EVT_GROUP_00)
|
||||||
EVT_CALL(MakeLocalVertexCopy, 1, MODEL_karada, TRUE)
|
EVT_CALL(MakeLocalVertexCopy, 1, MODEL_karada, TRUE)
|
||||||
EVT_CALL(SetCustomGfxBuilders, 1, EVT_PTR(N(unkAngleFunc002)), 0)
|
EVT_CALL(SetCustomGfxBuilders, 1, EVT_PTR(N(unkAngleFunc002)), 0)
|
||||||
@ -301,22 +301,22 @@ EvtScript N(EVS_80242A14) = {
|
|||||||
EVT_SWITCH(LVarB)
|
EVT_SWITCH(LVarB)
|
||||||
EVT_CASE_EQ(ANIM_Kolorado_IdleSad)
|
EVT_CASE_EQ(ANIM_Kolorado_IdleSad)
|
||||||
EVT_CALL(PlaySoundAtNpc, NPC_Whale, SOUND_2037, 0)
|
EVT_CALL(PlaySoundAtNpc, NPC_Whale, SOUND_2037, 0)
|
||||||
EVT_SET(LVarD, EVT_PTR(N(D_80241E20_866960)))
|
EVT_SET(LVarD, EVT_PTR(N(EVS_WhaleState_IdleSad)))
|
||||||
EVT_CASE_EQ(ANIM_Kolorado_Still)
|
EVT_CASE_EQ(ANIM_Kolorado_Still)
|
||||||
EVT_SET(LVarD, EVT_PTR(N(D_80241B6C_8666AC)))
|
EVT_SET(LVarD, EVT_PTR(N(EVS_WhaleState_Still)))
|
||||||
EVT_CASE_EQ(ANIM_Kolorado_Yell)
|
EVT_CASE_EQ(ANIM_Kolorado_Yell)
|
||||||
EVT_CALL(PlaySoundAtNpc, NPC_Whale, SOUND_2036, 0)
|
EVT_CALL(PlaySoundAtNpc, NPC_Whale, SOUND_2036, 0)
|
||||||
EVT_SET(LVarD, EVT_PTR(N(D_80241BE4_866724)))
|
EVT_SET(LVarD, EVT_PTR(N(EVS_WhaleState_2)))
|
||||||
EVT_CASE_EQ(ANIM_Kolorado_Idle)
|
EVT_CASE_EQ(ANIM_Kolorado_Idle)
|
||||||
EVT_SET(LVarD, EVT_PTR(N(D_8024271C_86725C)))
|
EVT_SET(LVarD, EVT_PTR(N(EVS_WhaleState_Idle)))
|
||||||
EVT_CASE_EQ(ANIM_Kolorado_Walk)
|
EVT_CASE_EQ(ANIM_Kolorado_Walk)
|
||||||
EVT_SET(LVarD, EVT_PTR(N(D_80242794_8672D4)))
|
EVT_SET(LVarD, EVT_PTR(N(EVS_WhaleState_Walk)))
|
||||||
EVT_CASE_EQ(ANIM_Kolorado_WalkSad)
|
EVT_CASE_EQ(ANIM_Kolorado_WalkSad)
|
||||||
EVT_SET(LVarD, EVT_PTR(N(D_8024206C_866BAC)))
|
EVT_SET(LVarD, EVT_PTR(N(EVS_WhaleState_WalkSad)))
|
||||||
EVT_CALL(EnableModel, MODEL_o170, FALSE)
|
EVT_CALL(EnableModel, MODEL_o170, FALSE)
|
||||||
EVT_CALL(EnableModel, MODEL_o183, FALSE)
|
EVT_CALL(EnableModel, MODEL_o183, FALSE)
|
||||||
EVT_CASE_EQ(ANIM_Kolorado_Run)
|
EVT_CASE_EQ(ANIM_Kolorado_Run)
|
||||||
EVT_SET(LVarD, EVT_PTR(N(D_8024230C_866E4C)))
|
EVT_SET(LVarD, EVT_PTR(N(EVS_WhaleState_Run)))
|
||||||
EVT_CALL(EnableModel, MODEL_o170, FALSE)
|
EVT_CALL(EnableModel, MODEL_o170, FALSE)
|
||||||
EVT_CALL(EnableModel, MODEL_o183, FALSE)
|
EVT_CALL(EnableModel, MODEL_o183, FALSE)
|
||||||
EVT_CASE_EQ(ANIM_Kolorado_Panic)
|
EVT_CASE_EQ(ANIM_Kolorado_Panic)
|
||||||
@ -324,13 +324,13 @@ EvtScript N(EVS_80242A14) = {
|
|||||||
EVT_CALL(EnableModel, MODEL_o170, FALSE)
|
EVT_CALL(EnableModel, MODEL_o170, FALSE)
|
||||||
EVT_CALL(EnableModel, MODEL_o183, FALSE)
|
EVT_CALL(EnableModel, MODEL_o183, FALSE)
|
||||||
EVT_CASE_EQ(ANIM_Kolorado_Talk)
|
EVT_CASE_EQ(ANIM_Kolorado_Talk)
|
||||||
EVT_SET(LVarD, EVT_PTR(N(D_802425B4_8670F4)))
|
EVT_SET(LVarD, EVT_PTR(N(EVS_WhaleState_Talk)))
|
||||||
EVT_CASE_EQ(ANIM_Kolorado_Shout)
|
EVT_CASE_EQ(ANIM_Kolorado_Shout)
|
||||||
EVT_SET(LVarD, EVT_PTR(N(D_8024207C_866BBC)))
|
EVT_SET(LVarD, EVT_PTR(N(EVS_WhaleState_Shout)))
|
||||||
EVT_CASE_EQ(ANIM_Kolorado_TalkSad)
|
EVT_CASE_EQ(ANIM_Kolorado_TalkSad)
|
||||||
EVT_SET(LVarD, EVT_PTR(N(D_802421D4_866D14)))
|
EVT_SET(LVarD, EVT_PTR(N(EVS_WhaleState_TalkSad)))
|
||||||
EVT_CASE_EQ(ANIM_Kolorado_HurtStill)
|
EVT_CASE_EQ(ANIM_Kolorado_HurtStill)
|
||||||
EVT_SET(LVarD, EVT_PTR(N(D_802421E4_866D24)))
|
EVT_SET(LVarD, EVT_PTR(N(EVS_WhaleState_HurtStill)))
|
||||||
EVT_END_SWITCH
|
EVT_END_SWITCH
|
||||||
EVT_END_IF
|
EVT_END_IF
|
||||||
EVT_EXEC_WAIT(LVarD)
|
EVT_EXEC_WAIT(LVarD)
|
||||||
|
@ -1,15 +1,11 @@
|
|||||||
#include "mac_06.h"
|
#include "mac_06.h"
|
||||||
|
#include "model.h"
|
||||||
|
#include "effects.h"
|
||||||
|
|
||||||
#define CLONED_MODEL_GULL 11000
|
#define CLONED_MODEL_GULL 11000
|
||||||
|
#define CLONED_MODEL_UNUSED 10000
|
||||||
|
|
||||||
API_CALLABLE(func_80241098_865BD8);
|
NpcSettings N(NpcSettings_Whale) = {
|
||||||
API_CALLABLE(func_80240E80_8659C0);
|
|
||||||
API_CALLABLE(func_80241290_865DD0);
|
|
||||||
API_CALLABLE(func_802412AC_865DEC);
|
|
||||||
API_CALLABLE(func_80241388_865EC8);
|
|
||||||
API_CALLABLE(func_802415FC_86613C);
|
|
||||||
|
|
||||||
NpcSettings N(NpcSettings_Kolorado_01) = {
|
|
||||||
.height = 24,
|
.height = 24,
|
||||||
.radius = 48,
|
.radius = 48,
|
||||||
.level = 99,
|
.level = 99,
|
||||||
@ -28,14 +24,11 @@ NpcSettings N(NpcSettings_JrTroopa) = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
f32 D_80243434_867F74 = 0.0f;
|
f32 D_80243434_867F74 = 0.0f;
|
||||||
|
f32 D_80243438_867F78 = 0.0f;
|
||||||
s32 D_80243438_867F78 = 0;
|
|
||||||
|
|
||||||
s32 D_8024343C_867F7C = 0;
|
s32 D_8024343C_867F7C = 0;
|
||||||
|
|
||||||
s32 D_80243440_867F80 = 0;
|
s32 D_80243440_867F80 = 0;
|
||||||
|
|
||||||
s32 func_80240E80_8659C0(Evt* script, s32 isInitialCall) {
|
API_CALLABLE(N(func_80240E80_8659C0)) {
|
||||||
Bytecode* args = script->ptrReadPos;
|
Bytecode* args = script->ptrReadPos;
|
||||||
Npc* whale = get_npc_safe(NPC_Whale);
|
Npc* whale = get_npc_safe(NPC_Whale);
|
||||||
Npc* kolorado;
|
Npc* kolorado;
|
||||||
@ -102,11 +95,91 @@ s32 func_80240E80_8659C0(Evt* script, s32 isInitialCall) {
|
|||||||
return ApiStatus_BLOCK;
|
return ApiStatus_BLOCK;
|
||||||
}
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(s32, "world/area_mac/mac_06/mac_06_3", func_80241098_865BD8);
|
API_CALLABLE(N(func_80241098_865BD8)) {
|
||||||
|
u32 buttons = gGameStatusPtr->pressedButtons[0];
|
||||||
|
Npc* npc = get_npc_safe(NPC_Whale);
|
||||||
|
|
||||||
|
switch (D_8024343C_867F7C) {
|
||||||
|
case 0:
|
||||||
|
if (buttons & BUTTON_A) {
|
||||||
|
D_8024343C_867F7C = 10;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (D_80243440_867F80 >= 150) {
|
||||||
|
return ApiStatus_DONE2;
|
||||||
|
}
|
||||||
|
D_80243440_867F80++;
|
||||||
|
break;
|
||||||
|
|
||||||
INCLUDE_ASM(s32, "world/area_mac/mac_06/mac_06_3", func_80241290_865DD0);
|
case 10:
|
||||||
|
npc->currentAnim = ANIM_Kolorado_Shout;
|
||||||
|
D_80243434_867F74 = 0.0f;
|
||||||
|
D_80243438_867F78 = 5.0f;
|
||||||
|
D_8024343C_867F7C = 11;
|
||||||
|
break;
|
||||||
|
|
||||||
INCLUDE_ASM(s32, "world/area_mac/mac_06/mac_06_3", func_802412AC_865DEC);
|
case 11:
|
||||||
|
D_80243434_867F74 += D_80243438_867F78;
|
||||||
|
if (D_80243434_867F74 < 70.0f) {
|
||||||
|
if (D_80243438_867F78 < 4.0f) {
|
||||||
|
D_80243438_867F78 = 4.0f;
|
||||||
|
}
|
||||||
|
D_80243438_867F78 += 1.0f;
|
||||||
|
} else {
|
||||||
|
D_80243438_867F78 -= 2.0f;
|
||||||
|
}
|
||||||
|
if (npc->currentAnim == ANIM_Kolorado_Idle) {
|
||||||
|
D_80243438_867F78 = 4.0f;
|
||||||
|
D_8024343C_867F7C++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 12:
|
||||||
|
D_80243434_867F74 -= D_80243438_867F78;
|
||||||
|
if (D_80243434_867F74 < 0.0f) {
|
||||||
|
D_80243434_867F74 = 0.0f;
|
||||||
|
return ApiStatus_DONE2;
|
||||||
|
}
|
||||||
|
D_80243438_867F78 += 1.0f;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return ApiStatus_BLOCK;
|
||||||
|
}
|
||||||
|
|
||||||
|
API_CALLABLE(N(func_80241290_865DD0)) {
|
||||||
|
if(gGameStatusPtr->pressedButtons[0] & BUTTON_B) {
|
||||||
|
return ApiStatus_DONE2;
|
||||||
|
} else {
|
||||||
|
return ApiStatus_BLOCK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
API_CALLABLE(N(func_802412AC_865DEC)) {
|
||||||
|
Bytecode* args = script->ptrReadPos;
|
||||||
|
s32 modelID = evt_get_variable(script, *args++);
|
||||||
|
s32 outVarX = *args++;
|
||||||
|
s32 outVarY = *args++;
|
||||||
|
s32 outVarZ = *args++;
|
||||||
|
s32 modelIndex = get_model_list_index_from_tree_index(modelID);
|
||||||
|
Model* model = get_model_from_list_index(modelIndex);
|
||||||
|
f32 x, y, z;
|
||||||
|
|
||||||
|
if (model->flags & MODEL_FLAGS_HAS_TRANSFORM_APPLIED) {
|
||||||
|
// get model translation from transform matrix
|
||||||
|
x = model->transformMatrix[3][0];
|
||||||
|
y = model->transformMatrix[3][1];
|
||||||
|
z = model->transformMatrix[3][2];
|
||||||
|
} else {
|
||||||
|
z = 0.0f;
|
||||||
|
y = 0.0f;
|
||||||
|
x = 0.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
evt_set_float_variable(script, outVarX, x);
|
||||||
|
evt_set_float_variable(script, outVarY, y);
|
||||||
|
evt_set_float_variable(script, outVarZ, z);
|
||||||
|
return ApiStatus_DONE2;
|
||||||
|
}
|
||||||
|
|
||||||
EvtScript N(EVS_NpcIdle_Whale) = {
|
EvtScript N(EVS_NpcIdle_Whale) = {
|
||||||
EVT_CALL(GetEntryID, LVar0)
|
EVT_CALL(GetEntryID, LVar0)
|
||||||
@ -114,7 +187,7 @@ EvtScript N(EVS_NpcIdle_Whale) = {
|
|||||||
EVT_CALL(GetNpcPos, NPC_Whale, LVar0, LVar1, LVar2)
|
EVT_CALL(GetNpcPos, NPC_Whale, LVar0, LVar1, LVar2)
|
||||||
EVT_CALL(NpcFlyTo, NPC_Whale, 50, LVar1, 500, 120, 0, EASING_SIN_OUT)
|
EVT_CALL(NpcFlyTo, NPC_Whale, 50, LVar1, 500, 120, 0, EASING_SIN_OUT)
|
||||||
EVT_THREAD
|
EVT_THREAD
|
||||||
EVT_CALL(func_80241098_865BD8)
|
EVT_CALL(N(func_80241098_865BD8))
|
||||||
EVT_END_THREAD
|
EVT_END_THREAD
|
||||||
EVT_WAIT(150)
|
EVT_WAIT(150)
|
||||||
EVT_CALL(SetNpcAnimation, NPC_Whale, ANIM_Kolorado_Idle)
|
EVT_CALL(SetNpcAnimation, NPC_Whale, ANIM_Kolorado_Idle)
|
||||||
@ -137,7 +210,7 @@ EvtScript N(EVS_NpcIdle_Whale) = {
|
|||||||
EVT_END_IF
|
EVT_END_IF
|
||||||
EVT_CALL(NpcFlyTo, NPC_Whale, -70, LVar1, 500, 120, 0, EASING_SIN_OUT)
|
EVT_CALL(NpcFlyTo, NPC_Whale, -70, LVar1, 500, 120, 0, EASING_SIN_OUT)
|
||||||
EVT_THREAD
|
EVT_THREAD
|
||||||
EVT_CALL(func_80241098_865BD8)
|
EVT_CALL(N(func_80241098_865BD8))
|
||||||
EVT_END_THREAD
|
EVT_END_THREAD
|
||||||
EVT_WAIT(150)
|
EVT_WAIT(150)
|
||||||
EVT_CALL(SetNpcAnimation, NPC_Whale, ANIM_Kolorado_Idle)
|
EVT_CALL(SetNpcAnimation, NPC_Whale, ANIM_Kolorado_Idle)
|
||||||
@ -148,9 +221,61 @@ EvtScript N(EVS_NpcIdle_Whale) = {
|
|||||||
EVT_END
|
EVT_END
|
||||||
};
|
};
|
||||||
|
|
||||||
INCLUDE_ASM(s32, "world/area_mac/mac_06/mac_06_3", func_80241388_865EC8);
|
API_CALLABLE(N(SeagullYawInterp)) {
|
||||||
|
f32 x1 = evt_get_float_variable(script, LVar1);
|
||||||
|
f32 y1 = evt_get_float_variable(script, LVar3);
|
||||||
|
f32 x2 = evt_get_float_variable(script, LVar4);
|
||||||
|
f32 y2 = evt_get_float_variable(script, LVar5);
|
||||||
|
f32 lastYaw = evt_get_float_variable(script, LVar7);
|
||||||
|
f32 newYaw, deltaYaw;
|
||||||
|
|
||||||
|
if (evt_get_variable(script, LocalFlag(0))) {
|
||||||
|
evt_set_float_variable(script, LVar6, 0.0f);
|
||||||
|
evt_set_float_variable(script, LVar7, 0.0f);
|
||||||
|
evt_set_variable(script, LocalFlag(0), 0);
|
||||||
|
evt_set_variable(script, LocalFlag(1), 1);
|
||||||
|
return ApiStatus_DONE2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (x1 == x2 && y1 == y2) {
|
||||||
|
return ApiStatus_DONE2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (evt_get_variable(script, LocalFlag(1))) {
|
||||||
|
newYaw = atan2(-x1, y1, -x2, y2);
|
||||||
|
evt_set_float_variable(script, LVar6, newYaw);
|
||||||
|
evt_set_float_variable(script, LVar7, newYaw);
|
||||||
|
evt_set_variable(script, LocalFlag(1), 0);
|
||||||
|
return ApiStatus_DONE2;
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(s32, "world/area_mac/mac_06/mac_06_3", func_802415FC_86613C);
|
newYaw = atan2(-x1, y1, -x2, y2);
|
||||||
|
newYaw = clamp_angle(newYaw);
|
||||||
|
evt_set_float_variable(script, LVar6, newYaw);
|
||||||
|
|
||||||
|
deltaYaw = lastYaw - newYaw;
|
||||||
|
if (deltaYaw >= 180.0f) {
|
||||||
|
lastYaw -= 360.0f;
|
||||||
|
} else if (deltaYaw <= -180.0f) {
|
||||||
|
lastYaw += 360.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
evt_set_float_variable(script, LVar7, lastYaw + (f32)((newYaw - lastYaw) * 0.1));
|
||||||
|
return ApiStatus_DONE2;
|
||||||
|
}
|
||||||
|
|
||||||
|
API_CALLABLE(N(MakeJrTroopaBubbles)) {
|
||||||
|
Npc* jrTroopa = get_npc_safe(NPC_JrTroopa);
|
||||||
|
f32 x = jrTroopa->pos.x + 10.0f;
|
||||||
|
f32 y = jrTroopa->pos.y;
|
||||||
|
f32 z = jrTroopa->pos.z;
|
||||||
|
|
||||||
|
if (y < 0.0f) {
|
||||||
|
fx_rising_bubble(0, x, y, z, 0.0f);
|
||||||
|
sfx_adjust_env_sound_pos(0x46, 0, x, y, z);
|
||||||
|
}
|
||||||
|
return ApiStatus_DONE2;
|
||||||
|
}
|
||||||
|
|
||||||
EvtScript N(EVS_NpcInit_Whale) = {
|
EvtScript N(EVS_NpcInit_Whale) = {
|
||||||
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_1000000, TRUE)
|
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_1000000, TRUE)
|
||||||
@ -178,17 +303,17 @@ EvtScript N(EVS_NpcInit_Whale) = {
|
|||||||
EVT_CALL(SetNpcFlagBits, NPC_PARTNER, NPC_FLAG_GRAVITY, FALSE)
|
EVT_CALL(SetNpcFlagBits, NPC_PARTNER, NPC_FLAG_GRAVITY, FALSE)
|
||||||
EVT_CALL(SetNpcAnimation, NPC_PARTNER, PARTNER_ANIM_RUN)
|
EVT_CALL(SetNpcAnimation, NPC_PARTNER, PARTNER_ANIM_RUN)
|
||||||
EVT_THREAD
|
EVT_THREAD
|
||||||
EVT_CALL(func_80240E80_8659C0, 0)
|
EVT_CALL(N(func_80240E80_8659C0), 0)
|
||||||
EVT_END_THREAD
|
EVT_END_THREAD
|
||||||
EVT_THREAD
|
EVT_THREAD
|
||||||
EVT_CALL(func_80240E80_8659C0, 1)
|
EVT_CALL(N(func_80240E80_8659C0), 1)
|
||||||
EVT_END_THREAD
|
EVT_END_THREAD
|
||||||
EVT_THREAD
|
EVT_THREAD
|
||||||
EVT_SWITCH(GB_StoryProgress)
|
EVT_SWITCH(GB_StoryProgress)
|
||||||
EVT_CASE_LT(STORY_CH5_REACHED_LAVA_LAVA_ISLAND)
|
EVT_CASE_LT(STORY_CH5_REACHED_LAVA_LAVA_ISLAND)
|
||||||
EVT_CALL(func_80240E80_8659C0, 2)
|
EVT_CALL(N(func_80240E80_8659C0), 2)
|
||||||
EVT_CASE_EQ(STORY_CH5_TRADED_VASE_FOR_SEED)
|
EVT_CASE_EQ(STORY_CH5_TRADED_VASE_FOR_SEED)
|
||||||
EVT_CALL(func_80240E80_8659C0, 2)
|
EVT_CALL(N(func_80240E80_8659C0), 2)
|
||||||
EVT_END_SWITCH
|
EVT_END_SWITCH
|
||||||
EVT_END_THREAD
|
EVT_END_THREAD
|
||||||
EVT_IF_LT(GB_StoryProgress, STORY_CH5_REACHED_LAVA_LAVA_ISLAND)
|
EVT_IF_LT(GB_StoryProgress, STORY_CH5_REACHED_LAVA_LAVA_ISLAND)
|
||||||
@ -200,7 +325,7 @@ EvtScript N(EVS_NpcInit_Whale) = {
|
|||||||
EVT_END_IF
|
EVT_END_IF
|
||||||
EVT_END_IF
|
EVT_END_IF
|
||||||
EVT_THREAD
|
EVT_THREAD
|
||||||
EVT_CALL(func_80241290_865DD0)
|
EVT_CALL(N(func_80241290_865DD0))
|
||||||
EVT_CALL(GetEntryID, LVar0)
|
EVT_CALL(GetEntryID, LVar0)
|
||||||
EVT_IF_EQ(LVar0, mac_06_ENTRY_0)
|
EVT_IF_EQ(LVar0, mac_06_ENTRY_0)
|
||||||
EVT_CALL(GotoMap, EVT_PTR("jan_00"), jan_00_ENTRY_0)
|
EVT_CALL(GotoMap, EVT_PTR("jan_00"), jan_00_ENTRY_0)
|
||||||
@ -248,7 +373,7 @@ EvtScript N(EVS_FlyingGull) = {
|
|||||||
EVT_SETF(LVar8, LVar2)
|
EVT_SETF(LVar8, LVar2)
|
||||||
EVT_MULF(LVar8, -1)
|
EVT_MULF(LVar8, -1)
|
||||||
EVT_CALL(TranslateModel, CLONED_MODEL_GULL, LVar1, LVar8, LVar3)
|
EVT_CALL(TranslateModel, CLONED_MODEL_GULL, LVar1, LVar8, LVar3)
|
||||||
EVT_CALL(func_80241388_865EC8)
|
EVT_CALL(N(SeagullYawInterp))
|
||||||
EVT_CALL(RotateModel, MODEL_hontai, LVar7, 0, 1, 0)
|
EVT_CALL(RotateModel, MODEL_hontai, LVar7, 0, 1, 0)
|
||||||
EVT_CALL(RotateModel, CLONED_MODEL_GULL, LVar7, 0, 1, 0)
|
EVT_CALL(RotateModel, CLONED_MODEL_GULL, LVar7, 0, 1, 0)
|
||||||
EVT_CALL(RotateModel, CLONED_MODEL_GULL, 180, 0, 0, 1)
|
EVT_CALL(RotateModel, CLONED_MODEL_GULL, 180, 0, 0, 1)
|
||||||
@ -263,8 +388,7 @@ EvtScript N(EVS_FlyingGull) = {
|
|||||||
EVT_END
|
EVT_END
|
||||||
};
|
};
|
||||||
|
|
||||||
// unused
|
EvtScript N(EVS_UnusedGull) = {
|
||||||
EvtScript N(EVS_80243CAC) = {
|
|
||||||
EVT_CALL(CloneModel, MODEL_hontai, LVar0)
|
EVT_CALL(CloneModel, MODEL_hontai, LVar0)
|
||||||
EVT_SET(LVarF, LVar0)
|
EVT_SET(LVarF, LVar0)
|
||||||
EVT_SET(LocalFlag(0), TRUE)
|
EVT_SET(LocalFlag(0), TRUE)
|
||||||
@ -282,12 +406,12 @@ EvtScript N(EVS_80243CAC) = {
|
|||||||
EVT_LABEL(10)
|
EVT_LABEL(10)
|
||||||
EVT_LABEL(0)
|
EVT_LABEL(0)
|
||||||
EVT_SET(LVarE, LVarF)
|
EVT_SET(LVarE, LVarF)
|
||||||
EVT_IF_EQ(LVarE, 0x00002710)
|
EVT_IF_EQ(LVarE, CLONED_MODEL_UNUSED)
|
||||||
EVT_SET(LVarE, 22)
|
EVT_SET(LVarE, 22)
|
||||||
EVT_ELSE
|
EVT_ELSE
|
||||||
EVT_ADD(LVarE, -1)
|
EVT_ADD(LVarE, -1)
|
||||||
EVT_END_IF
|
EVT_END_IF
|
||||||
EVT_CALL(func_802412AC_865DEC, LVarE, MV_Unk_00, MV_Unk_01, MV_Unk_02)
|
EVT_CALL(N(func_802412AC_865DEC), LVarE, MV_Unk_00, MV_Unk_01, MV_Unk_02)
|
||||||
EVT_SETF(LVar0, MV_Unk_00)
|
EVT_SETF(LVar0, MV_Unk_00)
|
||||||
EVT_SUBF(LVar0, LVar1)
|
EVT_SUBF(LVar0, LVar1)
|
||||||
EVT_IF_LT(LVar0, 0)
|
EVT_IF_LT(LVar0, 0)
|
||||||
@ -331,7 +455,7 @@ EvtScript N(EVS_80243CAC) = {
|
|||||||
EVT_END_IF
|
EVT_END_IF
|
||||||
EVT_ADDF(LVar3, LVarA)
|
EVT_ADDF(LVar3, LVarA)
|
||||||
EVT_CALL(TranslateModel, LVarF, LVar1, LVar2, LVar3)
|
EVT_CALL(TranslateModel, LVarF, LVar1, LVar2, LVar3)
|
||||||
EVT_CALL(func_80241388_865EC8)
|
EVT_CALL(N(SeagullYawInterp))
|
||||||
EVT_CALL(RotateModel, LVarF, LVar7, 0, 1, 0)
|
EVT_CALL(RotateModel, LVarF, LVar7, 0, 1, 0)
|
||||||
EVT_SET(LVar4, LVar1)
|
EVT_SET(LVar4, LVar1)
|
||||||
EVT_SET(LVar5, LVar3)
|
EVT_SET(LVar5, LVar3)
|
||||||
@ -361,7 +485,7 @@ EvtScript N(EVS_NpcIdle_JrTroopa) = {
|
|||||||
EVT_WAIT(5)
|
EVT_WAIT(5)
|
||||||
EVT_CHILD_THREAD
|
EVT_CHILD_THREAD
|
||||||
EVT_LOOP(0)
|
EVT_LOOP(0)
|
||||||
EVT_CALL(func_802415FC_86613C)
|
EVT_CALL(N(MakeJrTroopaBubbles))
|
||||||
EVT_WAIT(5)
|
EVT_WAIT(5)
|
||||||
EVT_END_LOOP
|
EVT_END_LOOP
|
||||||
EVT_END_CHILD_THREAD
|
EVT_END_CHILD_THREAD
|
||||||
@ -387,7 +511,7 @@ EvtScript N(EVS_NpcInit_JrTroopa) = {
|
|||||||
|
|
||||||
StaticNpc N(NpcData_Whale) = {
|
StaticNpc N(NpcData_Whale) = {
|
||||||
.id = NPC_Whale,
|
.id = NPC_Whale,
|
||||||
.settings = &N(NpcSettings_Kolorado_01),
|
.settings = &N(NpcSettings_Whale),
|
||||||
.pos = { NPC_DISPOSE_LOCATION },
|
.pos = { NPC_DISPOSE_LOCATION },
|
||||||
.yaw = 270,
|
.yaw = 270,
|
||||||
.flags = NPC_FLAG_PASSIVE | NPC_FLAG_ENABLE_HIT_SCRIPT | NPC_FLAG_100 | NPC_FLAG_GRAVITY | NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING,
|
.flags = NPC_FLAG_PASSIVE | NPC_FLAG_ENABLE_HIT_SCRIPT | NPC_FLAG_100 | NPC_FLAG_GRAVITY | NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING,
|
||||||
|
@ -122,8 +122,7 @@ EvtScript N(EVS_EnterMap) = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
EvtScript N(EVS_Main) = {
|
EvtScript N(EVS_Main) = {
|
||||||
EVT_SETUP_CAMERA_DEFAULT()
|
EVT_SETUP_CAMERA_NO_LEAD()
|
||||||
EVT_CALL(SetCamLeadPlayer, CAM_DEFAULT, FALSE)
|
|
||||||
EVT_EXEC_WAIT(N(D_80243C40_E123E0))
|
EVT_EXEC_WAIT(N(D_80243C40_E123E0))
|
||||||
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs)))
|
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs)))
|
||||||
EVT_EXEC_WAIT(N(D_80241850_E0FFF0))
|
EVT_EXEC_WAIT(N(D_80241850_E0FFF0))
|
||||||
|
@ -82,8 +82,7 @@ EvtScript N(D_8024189C_E13FFC) = {
|
|||||||
|
|
||||||
EvtScript N(EVS_Main) = {
|
EvtScript N(EVS_Main) = {
|
||||||
EVT_CALL(SetSpriteShading, SHADING_ARN_09)
|
EVT_CALL(SetSpriteShading, SHADING_ARN_09)
|
||||||
EVT_SETUP_CAMERA_DEFAULT()
|
EVT_SETUP_CAMERA_NO_LEAD()
|
||||||
EVT_CALL(SetCamLeadPlayer, CAM_DEFAULT, FALSE)
|
|
||||||
EVT_CALL(SetRenderMode, MODEL_o36, RENDER_MODE_SURFXLU_ZB_ZUPD)
|
EVT_CALL(SetRenderMode, MODEL_o36, RENDER_MODE_SURFXLU_ZB_ZUPD)
|
||||||
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs)))
|
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs)))
|
||||||
EVT_EXEC_WAIT(N(EVS_MakeEntities))
|
EVT_EXEC_WAIT(N(EVS_MakeEntities))
|
||||||
|
@ -38,8 +38,7 @@ EvtScript N(EVS_SetupCamera) = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
EvtScript N(EVS_Main) = {
|
EvtScript N(EVS_Main) = {
|
||||||
EVT_SETUP_CAMERA_DEFAULT()
|
EVT_SETUP_CAMERA_NO_LEAD()
|
||||||
EVT_CALL(SetCamLeadPlayer, CAM_DEFAULT, FALSE)
|
|
||||||
EVT_EXEC(N(EVS_SetupCamera))
|
EVT_EXEC(N(EVS_SetupCamera))
|
||||||
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs)))
|
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs)))
|
||||||
EVT_EXEC_WAIT(N(EVS_Dummy))
|
EVT_EXEC_WAIT(N(EVS_Dummy))
|
||||||
|
@ -15,8 +15,7 @@ MapSettings N(settings) = {
|
|||||||
|
|
||||||
EvtScript N(EVS_Main) = {
|
EvtScript N(EVS_Main) = {
|
||||||
EVT_CALL(SetSpriteShading, SHADING_ARN_09)
|
EVT_CALL(SetSpriteShading, SHADING_ARN_09)
|
||||||
EVT_SETUP_CAMERA_DEFAULT()
|
EVT_SETUP_CAMERA_NO_LEAD()
|
||||||
EVT_CALL(SetCamLeadPlayer, CAM_DEFAULT, FALSE)
|
|
||||||
EVT_RETURN
|
EVT_RETURN
|
||||||
EVT_END
|
EVT_END
|
||||||
};
|
};
|
||||||
|
@ -2,24 +2,82 @@
|
|||||||
#define _WORLD_AREA_SBK_SBK_H_
|
#define _WORLD_AREA_SBK_SBK_H_
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
AB_SBK_0 = AreaByte(0),
|
AB_SBK_0 = AreaByte(0),
|
||||||
AB_SBK_1 = AreaByte(1),
|
AB_SBK_1 = AreaByte(1),
|
||||||
AB_SBK_2 = AreaByte(2),
|
AB_SBK_2 = AreaByte(2),
|
||||||
AB_SBK_3 = AreaByte(3),
|
AB_SBK_3 = AreaByte(3),
|
||||||
AB_SBK_4 = AreaByte(4),
|
AB_SBK_4 = AreaByte(4),
|
||||||
AB_SBK_5 = AreaByte(5),
|
AB_SBK_5 = AreaByte(5),
|
||||||
AB_SBK_6 = AreaByte(6),
|
AB_SBK_6 = AreaByte(6),
|
||||||
AB_SBK_7 = AreaByte(7),
|
AB_SBK_7 = AreaByte(7),
|
||||||
AB_SBK_8 = AreaByte(8),
|
AB_SBK_8 = AreaByte(8),
|
||||||
AB_SBK_9 = AreaByte(9),
|
AB_SBK_9 = AreaByte(9),
|
||||||
AB_SBK_A = AreaByte(10),
|
AB_SBK_A = AreaByte(10),
|
||||||
AB_SBK_B = AreaByte(11),
|
AB_SBK_B = AreaByte(11),
|
||||||
AB_SBK_C = AreaByte(12),
|
AB_SBK_C = AreaByte(12),
|
||||||
AB_SBK_D = AreaByte(13),
|
AB_SBK_D = AreaByte(13),
|
||||||
AB_SBK_E = AreaByte(14),
|
AB_SBK_E = AreaByte(14),
|
||||||
AB_SBK_F = AreaByte(15),
|
AB_SBK_F = AreaByte(15),
|
||||||
};
|
};
|
||||||
|
|
||||||
#define AF_SBK(index) AreaFlag(index)
|
enum {
|
||||||
|
AF_SBK_01 = AreaFlag(1),
|
||||||
|
AF_SBK_02 = AreaFlag(2),
|
||||||
|
AF_SBK_03 = AreaFlag(3),
|
||||||
|
AF_SBK_04 = AreaFlag(4),
|
||||||
|
AF_SBK_05 = AreaFlag(5),
|
||||||
|
AF_SBK_06 = AreaFlag(6),
|
||||||
|
};
|
||||||
|
|
||||||
|
extern MapSettings sbk_00_settings;
|
||||||
|
extern MapSettings sbk_01_settings;
|
||||||
|
//extern MapSettings sbk_02_settings;
|
||||||
|
extern MapSettings sbk_03_settings;
|
||||||
|
extern MapSettings sbk_04_settings;
|
||||||
|
extern MapSettings sbk_05_settings;
|
||||||
|
extern MapSettings sbk_06_settings;
|
||||||
|
extern MapSettings sbk_10_settings;
|
||||||
|
extern MapSettings sbk_11_settings;
|
||||||
|
extern MapSettings sbk_12_settings;
|
||||||
|
extern MapSettings sbk_13_settings;
|
||||||
|
extern MapSettings sbk_14_settings;
|
||||||
|
extern MapSettings sbk_15_settings;
|
||||||
|
extern MapSettings sbk_16_settings;
|
||||||
|
extern MapSettings sbk_20_settings;
|
||||||
|
extern MapSettings sbk_21_settings;
|
||||||
|
extern MapSettings sbk_22_settings;
|
||||||
|
extern MapSettings sbk_23_settings;
|
||||||
|
extern MapSettings sbk_24_settings;
|
||||||
|
extern MapSettings sbk_25_settings;
|
||||||
|
extern MapSettings sbk_26_settings;
|
||||||
|
//extern MapSettings sbk_30_settings;
|
||||||
|
extern MapSettings sbk_31_settings;
|
||||||
|
extern MapSettings sbk_32_settings;
|
||||||
|
extern MapSettings sbk_33_settings;
|
||||||
|
extern MapSettings sbk_34_settings;
|
||||||
|
extern MapSettings sbk_35_settings;
|
||||||
|
extern MapSettings sbk_36_settings;
|
||||||
|
extern MapSettings sbk_40_settings;
|
||||||
|
extern MapSettings sbk_41_settings;
|
||||||
|
extern MapSettings sbk_42_settings;
|
||||||
|
extern MapSettings sbk_43_settings;
|
||||||
|
extern MapSettings sbk_44_settings;
|
||||||
|
extern MapSettings sbk_45_settings;
|
||||||
|
extern MapSettings sbk_46_settings;
|
||||||
|
extern MapSettings sbk_50_settings;
|
||||||
|
extern MapSettings sbk_51_settings;
|
||||||
|
extern MapSettings sbk_52_settings;
|
||||||
|
extern MapSettings sbk_53_settings;
|
||||||
|
extern MapSettings sbk_54_settings;
|
||||||
|
extern MapSettings sbk_55_settings;
|
||||||
|
extern MapSettings sbk_56_settings;
|
||||||
|
extern MapSettings sbk_60_settings;
|
||||||
|
extern MapSettings sbk_61_settings;
|
||||||
|
extern MapSettings sbk_62_settings;
|
||||||
|
extern MapSettings sbk_63_settings;
|
||||||
|
extern MapSettings sbk_64_settings;
|
||||||
|
extern MapSettings sbk_65_settings;
|
||||||
|
extern MapSettings sbk_66_settings;
|
||||||
|
extern MapSettings sbk_99_settings;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,50 +0,0 @@
|
|||||||
#include "sbk_00.h"
|
|
||||||
#include "message_ids.h"
|
|
||||||
|
|
||||||
#include "world/common/SpawnSunEffect.inc.c"
|
|
||||||
|
|
||||||
EntryList N(entryList) = {
|
|
||||||
{ -475.0f, 0.0f, 0.0f, 90.0f },
|
|
||||||
{ 475.0f, 0.0f, 0.0f, 270.0f },
|
|
||||||
{ 0.0f, 0.0f, -475.0f, 180.0f },
|
|
||||||
{ 0.0f, 0.0f, 475.0f, 0.0f },
|
|
||||||
};
|
|
||||||
|
|
||||||
MapSettings N(settings) = {
|
|
||||||
.main = &N(main),
|
|
||||||
.entryList = &N(entryList),
|
|
||||||
.entryCount = ENTRY_COUNT(N(entryList)),
|
|
||||||
.background = &gBackgroundImage,
|
|
||||||
.tattle = { MSG_MapTattle_sbk_00 },
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(exitWalk_802400E0) = EVT_EXIT_WALK(60, 1, "sbk_01", 0);
|
|
||||||
|
|
||||||
EvtScript N(exitWalk_8024013C) = EVT_EXIT_WALK(60, 3, "sbk_10", 2);
|
|
||||||
|
|
||||||
EvtScript N(80240198) = {
|
|
||||||
EVT_BIND_TRIGGER(N(exitWalk_802400E0), TRIGGER_FLOOR_ABOVE, 3, 1, 0)
|
|
||||||
EVT_BIND_TRIGGER(N(exitWalk_8024013C), TRIGGER_FLOOR_ABOVE, 6, 1, 0)
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(main) = {
|
|
||||||
EVT_SET(GB_WorldLocation, 10)
|
|
||||||
EVT_CALL(SetSpriteShading, -1)
|
|
||||||
EVT_IF_EQ(GB_StoryProgress, -63)
|
|
||||||
EVT_CALL(DisablePulseStone, 0)
|
|
||||||
EVT_END_IF
|
|
||||||
EVT_CALL(SetCamPerspective, 0, 3, 25, 16, 4096)
|
|
||||||
EVT_CALL(SetCamBGColor, 0, 0, 0, 0)
|
|
||||||
EVT_CALL(SetCamEnabled, 0, 1)
|
|
||||||
EVT_CALL(SetCamLeadPlayer, 0, 0)
|
|
||||||
EVT_CALL(MakeNpcs, 0, EVT_PTR(N(npcGroupList_80240768)))
|
|
||||||
EVT_EXEC_WAIT(N(makeEntities))
|
|
||||||
EVT_CALL(N(SpawnSunEffect))
|
|
||||||
EVT_CALL(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8)
|
|
||||||
EVT_SET(LVar0, EVT_PTR(N(80240198)))
|
|
||||||
EVT_EXEC(EnterWalk)
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
@ -1,131 +0,0 @@
|
|||||||
#include "sbk_00.h"
|
|
||||||
#include "sprite/npc/Pokey.h"
|
|
||||||
#include "entity.h"
|
|
||||||
|
|
||||||
#include "world/common/SetNpcB5_3.inc.c"
|
|
||||||
|
|
||||||
MobileAISettings N(npcAISettings_80240300) = {
|
|
||||||
.moveSpeed = 1.8f,
|
|
||||||
.moveTime = 50,
|
|
||||||
.waitTime = 10,
|
|
||||||
.alertRadius = 250.0f,
|
|
||||||
.playerSearchInterval = 2,
|
|
||||||
.chaseSpeed = 3.5f,
|
|
||||||
.chaseTurnRate= 45,
|
|
||||||
.chaseUpdateInterval = 6,
|
|
||||||
.chaseRadius = 300.0f,
|
|
||||||
.unk_AI_2C = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(npcAI_80240330) = {
|
|
||||||
EVT_CALL(N(SetNpcB5_3))
|
|
||||||
EVT_CALL(BasicAI_Main, EVT_PTR(N(npcAISettings_80240300)))
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
NpcSettings N(npcSettings_8024035C) = {
|
|
||||||
.height = 72,
|
|
||||||
.radius = 15,
|
|
||||||
.ai = &N(npcAI_80240330),
|
|
||||||
.onHit = &EnemyNpcHit,
|
|
||||||
.onDefeat = &EnemyNpcDefeat,
|
|
||||||
.level = 9,
|
|
||||||
};
|
|
||||||
|
|
||||||
StaticNpc N(npcGroup_80240388) = {
|
|
||||||
.id = 0,
|
|
||||||
.settings = &N(npcSettings_8024035C),
|
|
||||||
.pos = { -40.0f, 0.0f, 160.0f },
|
|
||||||
.flags = NPC_FLAG_JUMPING,
|
|
||||||
.yaw = 90,
|
|
||||||
.drops = {
|
|
||||||
.dropFlags = NPC_DROP_FLAGS_80,
|
|
||||||
.itemDropChance = 15,
|
|
||||||
.itemDrops = {
|
|
||||||
{ ITEM_DRIED_FRUIT, 9, 0 },
|
|
||||||
{ ITEM_TASTY_TONIC, 1, 0 },
|
|
||||||
},
|
|
||||||
.heartDrops = STANDARD_HEART_DROPS(2),
|
|
||||||
.flowerDrops = STANDARD_FLOWER_DROPS(2),
|
|
||||||
.maxCoinBonus = 1,
|
|
||||||
},
|
|
||||||
.territory = { .temp = { -40, 0, 160, 100, 0, -32767, 0, 0, 0, 0, 1000, 0, 0, 1 }},
|
|
||||||
.animations = {
|
|
||||||
ANIM_Pokey_Anim04,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim04,
|
|
||||||
ANIM_Pokey_Anim04,
|
|
||||||
ANIM_Pokey_Anim0C,
|
|
||||||
ANIM_Pokey_Anim0C,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
},
|
|
||||||
.aiDetectFlags = AI_DETECT_SIGHT,
|
|
||||||
};
|
|
||||||
|
|
||||||
StaticNpc N(npcGroup_80240578) = {
|
|
||||||
.id = 1,
|
|
||||||
.settings = &N(npcSettings_8024035C),
|
|
||||||
.pos = { 245.0f, 0.0f, 75.0f },
|
|
||||||
.flags = NPC_FLAG_JUMPING,
|
|
||||||
.yaw = 270,
|
|
||||||
.drops = {
|
|
||||||
.dropFlags = NPC_DROP_FLAGS_80,
|
|
||||||
.itemDropChance = 15,
|
|
||||||
.itemDrops = {
|
|
||||||
{ ITEM_DRIED_FRUIT, 9, 0 },
|
|
||||||
{ ITEM_TASTY_TONIC, 1, 0 },
|
|
||||||
},
|
|
||||||
.heartDrops = STANDARD_HEART_DROPS(2),
|
|
||||||
.flowerDrops = STANDARD_FLOWER_DROPS(2),
|
|
||||||
.maxCoinBonus = 1,
|
|
||||||
},
|
|
||||||
.territory = { .temp = { 245, 0, 75, 100, 0, -32767, 0, 0, 0, 0, 1000, 0, 0, 1 }},
|
|
||||||
.animations = {
|
|
||||||
ANIM_Pokey_Anim04,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim04,
|
|
||||||
ANIM_Pokey_Anim04,
|
|
||||||
ANIM_Pokey_Anim0C,
|
|
||||||
ANIM_Pokey_Anim0C,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
},
|
|
||||||
.aiDetectFlags = AI_DETECT_SIGHT,
|
|
||||||
};
|
|
||||||
|
|
||||||
NpcGroupList N(npcGroupList_80240768) = {
|
|
||||||
NPC_GROUP(N(npcGroup_80240388), 0x0A00, 0x00),
|
|
||||||
NPC_GROUP(N(npcGroup_80240578), 0x0A01, 0x00),
|
|
||||||
{},
|
|
||||||
};
|
|
||||||
|
|
||||||
static s32 N(pad_78C) = {
|
|
||||||
0x00000000,
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(makeEntities) = {
|
|
||||||
EVT_CALL(MakeEntity, EVT_PTR(Entity_YellowBlock), -230, 0, 155, 0, 152, MAKE_ENTITY_END)
|
|
||||||
EVT_CALL(AssignBlockFlag, GF_SBK00_ItemBlock_FrightJar)
|
|
||||||
EVT_CALL(MakeEntity, EVT_PTR(Entity_YellowBlock), 160, 0, 205, 0, 343, MAKE_ENTITY_END)
|
|
||||||
EVT_CALL(AssignBlockFlag, GF_SBK00_ItemBlock_Coin)
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
@ -2,12 +2,18 @@
|
|||||||
/// @brief Dry Dry Desert - N3W3
|
/// @brief Dry Dry Desert - N3W3
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "../sbk.h"
|
|
||||||
#include "message_ids.h"
|
#include "message_ids.h"
|
||||||
#include "map.h"
|
#include "map.h"
|
||||||
|
|
||||||
#define NAMESPACE sbk_00
|
#include "../sbk.h"
|
||||||
|
#include "mapfs/sbk_00_shape.h"
|
||||||
|
#include "mapfs/sbk_00_hit.h"
|
||||||
|
|
||||||
extern EvtScript N(main);
|
#include "sprite/npc/Pokey.h"
|
||||||
extern NpcGroupList N(npcGroupList_80240768);
|
|
||||||
extern EvtScript N(makeEntities);
|
enum {
|
||||||
|
NPC_Pokey_01 = 0,
|
||||||
|
NPC_Pokey_02 = 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
#define NAMESPACE sbk_00
|
||||||
|
49
src/world/area_sbk/sbk_00/sbk_00_1_main.c
Normal file
49
src/world/area_sbk/sbk_00/sbk_00_1_main.c
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
#include "sbk_00.h"
|
||||||
|
|
||||||
|
extern EvtScript N(EVS_Main);
|
||||||
|
extern NpcGroupList N(DefaultNPCs);
|
||||||
|
extern EvtScript N(EVS_MakeEntities);
|
||||||
|
|
||||||
|
EntryList N(Entrances) = {
|
||||||
|
[sbk_00_ENTRY_0] { -475.0, 0.0, 0.0, 90.0 },
|
||||||
|
[sbk_00_ENTRY_1] { 475.0, 0.0, 0.0, 270.0 },
|
||||||
|
[sbk_00_ENTRY_2] { 0.0, 0.0, -475.0, 180.0 },
|
||||||
|
[sbk_00_ENTRY_3] { 0.0, 0.0, 475.0, 0.0 },
|
||||||
|
};
|
||||||
|
|
||||||
|
MapSettings N(settings) = {
|
||||||
|
.main = &N(EVS_Main),
|
||||||
|
.entryList = &N(Entrances),
|
||||||
|
.entryCount = ENTRY_COUNT(N(Entrances)),
|
||||||
|
.background = &gBackgroundImage,
|
||||||
|
.tattle = { MSG_MapTattle_sbk_00 },
|
||||||
|
};
|
||||||
|
|
||||||
|
#include "world/common/SpawnSunEffect.inc.c"
|
||||||
|
|
||||||
|
EvtScript N(EVS_ExitWalk_sbk_01_0) = EVT_EXIT_WALK(60, sbk_00_ENTRY_1, "sbk_01", sbk_01_ENTRY_0);
|
||||||
|
EvtScript N(EVS_ExitWalk_sbk_10_2) = EVT_EXIT_WALK(60, sbk_00_ENTRY_3, "sbk_10", sbk_10_ENTRY_2);
|
||||||
|
|
||||||
|
EvtScript N(EVS_BindExitTriggers) = {
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_sbk_01_0)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilie, 1, 0)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_sbk_10_2)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilis, 1, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_Main) = {
|
||||||
|
EVT_SET(GB_WorldLocation, LOCATION_DRY_DRY_DESERT)
|
||||||
|
EVT_CALL(SetSpriteShading, SHADING_NONE)
|
||||||
|
EVT_IF_EQ(GB_StoryProgress, STORY_CH2_GOT_PULSE_STONE)
|
||||||
|
EVT_CALL(DisablePulseStone, FALSE)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_SETUP_CAMERA_NO_LEAD()
|
||||||
|
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs)))
|
||||||
|
EVT_EXEC_WAIT(N(EVS_MakeEntities))
|
||||||
|
EVT_CALL(N(SpawnSunEffect))
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8)
|
||||||
|
EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers)))
|
||||||
|
EVT_EXEC(EnterWalk)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
111
src/world/area_sbk/sbk_00/sbk_00_2_npc.c
Normal file
111
src/world/area_sbk/sbk_00/sbk_00_2_npc.c
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
#include "sbk_00.h"
|
||||||
|
|
||||||
|
#include "world/common/enemy/complete/Pokey.inc.c"
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_Pokey_01) = {
|
||||||
|
.id = NPC_Pokey_01,
|
||||||
|
.settings = &N(NpcSettings_Pokey),
|
||||||
|
.pos = { -40.0f, 0.0f, 160.0f },
|
||||||
|
.yaw = 90,
|
||||||
|
.flags = NPC_FLAG_JUMPING,
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.itemDropChance = 15,
|
||||||
|
.itemDrops = {
|
||||||
|
{ ITEM_DRIED_FRUIT, 9, 0 },
|
||||||
|
{ ITEM_TASTY_TONIC, 1, 0 },
|
||||||
|
},
|
||||||
|
.heartDrops = STANDARD_HEART_DROPS(2),
|
||||||
|
.flowerDrops = STANDARD_FLOWER_DROPS(2),
|
||||||
|
.minCoinBonus = 0,
|
||||||
|
.maxCoinBonus = 1,
|
||||||
|
},
|
||||||
|
.territory = {
|
||||||
|
.wander = {
|
||||||
|
.isFlying = TRUE,
|
||||||
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||||
|
.wanderShape = SHAPE_CYLINDER,
|
||||||
|
.centerPos = { -40, 0, 160 },
|
||||||
|
.wanderSize = { 100 },
|
||||||
|
.detectShape = SHAPE_CYLINDER,
|
||||||
|
.detectPos = { 0, 0, 0 },
|
||||||
|
.detectSize = { 1000 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_Pokey_Anim04,
|
||||||
|
.walk = ANIM_Pokey_Anim08,
|
||||||
|
.run = ANIM_Pokey_Anim08,
|
||||||
|
.chase = ANIM_Pokey_Anim08,
|
||||||
|
.anim_4 = ANIM_Pokey_Anim04,
|
||||||
|
.anim_5 = ANIM_Pokey_Anim04,
|
||||||
|
.death = ANIM_Pokey_Anim0C,
|
||||||
|
.hit = ANIM_Pokey_Anim0C,
|
||||||
|
.anim_8 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_9 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_A = ANIM_Pokey_Anim08,
|
||||||
|
.anim_B = ANIM_Pokey_Anim08,
|
||||||
|
.anim_C = ANIM_Pokey_Anim08,
|
||||||
|
.anim_D = ANIM_Pokey_Anim08,
|
||||||
|
.anim_E = ANIM_Pokey_Anim08,
|
||||||
|
.anim_F = ANIM_Pokey_Anim08,
|
||||||
|
},
|
||||||
|
.aiDetectFlags = AI_DETECT_SIGHT,
|
||||||
|
};
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_Pokey_02) = {
|
||||||
|
.id = NPC_Pokey_02,
|
||||||
|
.settings = &N(NpcSettings_Pokey),
|
||||||
|
.pos = { 245.0f, 0.0f, 75.0f },
|
||||||
|
.yaw = 270,
|
||||||
|
.flags = NPC_FLAG_JUMPING,
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.itemDropChance = 15,
|
||||||
|
.itemDrops = {
|
||||||
|
{ ITEM_DRIED_FRUIT, 9, 0 },
|
||||||
|
{ ITEM_TASTY_TONIC, 1, 0 },
|
||||||
|
},
|
||||||
|
.heartDrops = STANDARD_HEART_DROPS(2),
|
||||||
|
.flowerDrops = STANDARD_FLOWER_DROPS(2),
|
||||||
|
.minCoinBonus = 0,
|
||||||
|
.maxCoinBonus = 1,
|
||||||
|
},
|
||||||
|
.territory = {
|
||||||
|
.wander = {
|
||||||
|
.isFlying = TRUE,
|
||||||
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||||
|
.wanderShape = SHAPE_CYLINDER,
|
||||||
|
.centerPos = { 245, 0, 75 },
|
||||||
|
.wanderSize = { 100 },
|
||||||
|
.detectShape = SHAPE_CYLINDER,
|
||||||
|
.detectPos = { 0, 0, 0 },
|
||||||
|
.detectSize = { 1000 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_Pokey_Anim04,
|
||||||
|
.walk = ANIM_Pokey_Anim08,
|
||||||
|
.run = ANIM_Pokey_Anim08,
|
||||||
|
.chase = ANIM_Pokey_Anim08,
|
||||||
|
.anim_4 = ANIM_Pokey_Anim04,
|
||||||
|
.anim_5 = ANIM_Pokey_Anim04,
|
||||||
|
.death = ANIM_Pokey_Anim0C,
|
||||||
|
.hit = ANIM_Pokey_Anim0C,
|
||||||
|
.anim_8 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_9 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_A = ANIM_Pokey_Anim08,
|
||||||
|
.anim_B = ANIM_Pokey_Anim08,
|
||||||
|
.anim_C = ANIM_Pokey_Anim08,
|
||||||
|
.anim_D = ANIM_Pokey_Anim08,
|
||||||
|
.anim_E = ANIM_Pokey_Anim08,
|
||||||
|
.anim_F = ANIM_Pokey_Anim08,
|
||||||
|
},
|
||||||
|
.aiDetectFlags = AI_DETECT_SIGHT,
|
||||||
|
};
|
||||||
|
|
||||||
|
NpcGroupList N(DefaultNPCs) = {
|
||||||
|
NPC_GROUP(N(NpcData_Pokey_01), BTL_SBK_FORMATION_00, BTL_SBK_STAGE_00),
|
||||||
|
NPC_GROUP(N(NpcData_Pokey_02), BTL_SBK_FORMATION_01, BTL_SBK_STAGE_00),
|
||||||
|
{}
|
||||||
|
};
|
11
src/world/area_sbk/sbk_00/sbk_00_3_entity.c
Normal file
11
src/world/area_sbk/sbk_00/sbk_00_3_entity.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#include "sbk_00.h"
|
||||||
|
#include "entity.h"
|
||||||
|
|
||||||
|
EvtScript N(EVS_MakeEntities) = {
|
||||||
|
EVT_CALL(MakeEntity, EVT_PTR(Entity_YellowBlock), -230, 0, 155, 0, ITEM_FRIGHT_JAR, MAKE_ENTITY_END)
|
||||||
|
EVT_CALL(AssignBlockFlag, GF_SBK00_ItemBlock_FrightJar)
|
||||||
|
EVT_CALL(MakeEntity, EVT_PTR(Entity_YellowBlock), 160, 0, 205, 0, ITEM_COIN, MAKE_ENTITY_END)
|
||||||
|
EVT_CALL(AssignBlockFlag, GF_SBK00_ItemBlock_Coin)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
@ -1,55 +0,0 @@
|
|||||||
#include "sbk_01.h"
|
|
||||||
#include "message_ids.h"
|
|
||||||
|
|
||||||
#include "world/common/SpawnSunEffect.inc.c"
|
|
||||||
|
|
||||||
extern EvtScript N(main);
|
|
||||||
extern NpcGroupList N(npcGroupList_802407D8);
|
|
||||||
|
|
||||||
EntryList N(entryList) = {
|
|
||||||
{ -475.0f, 0.0f, 0.0f, 90.0f },
|
|
||||||
{ 475.0f, 0.0f, 0.0f, 270.0f },
|
|
||||||
{ 0.0f, 0.0f, -475.0f, 180.0f },
|
|
||||||
{ 0.0f, 0.0f, 475.0f, 0.0f },
|
|
||||||
};
|
|
||||||
|
|
||||||
MapSettings N(settings) = {
|
|
||||||
.main = &N(main),
|
|
||||||
.entryList = &N(entryList),
|
|
||||||
.entryCount = ENTRY_COUNT(N(entryList)),
|
|
||||||
.background = &gBackgroundImage,
|
|
||||||
.tattle = { MSG_MapTattle_sbk_01 },
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(exitWalk_802400E0) = EVT_EXIT_WALK(60, 0, "sbk_00", 1);
|
|
||||||
|
|
||||||
EvtScript N(exitWalk_8024013C) = EVT_EXIT_WALK(60, 1, "sbk_02", 0);
|
|
||||||
|
|
||||||
EvtScript N(exitWalk_80240198) = EVT_EXIT_WALK(60, 3, "sbk_11", 2);
|
|
||||||
|
|
||||||
EvtScript N(802401F4) = {
|
|
||||||
EVT_BIND_TRIGGER(N(exitWalk_802400E0), TRIGGER_FLOOR_ABOVE, 7, 1, 0)
|
|
||||||
EVT_BIND_TRIGGER(N(exitWalk_8024013C), TRIGGER_FLOOR_ABOVE, 3, 1, 0)
|
|
||||||
EVT_BIND_TRIGGER(N(exitWalk_80240198), TRIGGER_FLOOR_ABOVE, 5, 1, 0)
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(main) = {
|
|
||||||
EVT_SET(GB_WorldLocation, 10)
|
|
||||||
EVT_CALL(SetSpriteShading, -1)
|
|
||||||
EVT_IF_EQ(GB_StoryProgress, -63)
|
|
||||||
EVT_CALL(DisablePulseStone, 0)
|
|
||||||
EVT_END_IF
|
|
||||||
EVT_CALL(SetCamPerspective, 0, 3, 25, 16, 4096)
|
|
||||||
EVT_CALL(SetCamBGColor, 0, 0, 0, 0)
|
|
||||||
EVT_CALL(SetCamEnabled, 0, 1)
|
|
||||||
EVT_CALL(SetCamLeadPlayer, 0, 0)
|
|
||||||
EVT_CALL(MakeNpcs, 0, EVT_PTR(N(npcGroupList_802407D8)))
|
|
||||||
EVT_CALL(N(SpawnSunEffect))
|
|
||||||
EVT_CALL(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8)
|
|
||||||
EVT_SET(LVar0, EVT_PTR(N(802401F4)))
|
|
||||||
EVT_EXEC(EnterWalk)
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
@ -1,117 +0,0 @@
|
|||||||
#include "sbk_01.h"
|
|
||||||
#include "sprite/npc/Pokey.h"
|
|
||||||
|
|
||||||
#include "world/common/SetNpcB5_3.inc.c"
|
|
||||||
|
|
||||||
MobileAISettings N(npcAISettings_80240370) = {
|
|
||||||
.moveSpeed = 1.8f,
|
|
||||||
.moveTime = 50,
|
|
||||||
.waitTime = 10,
|
|
||||||
.alertRadius = 250.0f,
|
|
||||||
.playerSearchInterval = 2,
|
|
||||||
.chaseSpeed = 3.5f,
|
|
||||||
.chaseTurnRate= 45,
|
|
||||||
.chaseUpdateInterval = 6,
|
|
||||||
.chaseRadius = 300.0f,
|
|
||||||
.unk_AI_2C = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
EvtScript N(npcAI_802403A0) = {
|
|
||||||
EVT_CALL(N(SetNpcB5_3))
|
|
||||||
EVT_CALL(BasicAI_Main, EVT_PTR(N(npcAISettings_80240370)))
|
|
||||||
EVT_RETURN
|
|
||||||
EVT_END
|
|
||||||
};
|
|
||||||
|
|
||||||
NpcSettings N(npcSettings_802403CC) = {
|
|
||||||
.height = 72,
|
|
||||||
.radius = 15,
|
|
||||||
.ai = &N(npcAI_802403A0),
|
|
||||||
.onHit = &EnemyNpcHit,
|
|
||||||
.onDefeat = &EnemyNpcDefeat,
|
|
||||||
.level = 9,
|
|
||||||
};
|
|
||||||
|
|
||||||
StaticNpc N(npcGroup_802403F8) = {
|
|
||||||
.id = 0,
|
|
||||||
.settings = &N(npcSettings_802403CC),
|
|
||||||
.pos = { 205.0f, 0.0f, -60.0f },
|
|
||||||
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_PROJECT_SHADOW,
|
|
||||||
.yaw = 90,
|
|
||||||
.drops = {
|
|
||||||
.dropFlags = NPC_DROP_FLAGS_80,
|
|
||||||
.itemDropChance = 15,
|
|
||||||
.itemDrops = {
|
|
||||||
{ ITEM_DRIED_FRUIT, 9, 0 },
|
|
||||||
{ ITEM_TASTY_TONIC, 1, 0 },
|
|
||||||
},
|
|
||||||
.heartDrops = STANDARD_HEART_DROPS(2),
|
|
||||||
.flowerDrops = STANDARD_FLOWER_DROPS(2),
|
|
||||||
.maxCoinBonus = 1,
|
|
||||||
},
|
|
||||||
.territory = { .temp = { 205, 0, -60, 100, 0, -32767, 0, 0, 0, 0, 1000, 0, 0, 1 }},
|
|
||||||
.animations = {
|
|
||||||
ANIM_Pokey_Anim04,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim04,
|
|
||||||
ANIM_Pokey_Anim04,
|
|
||||||
ANIM_Pokey_Anim0C,
|
|
||||||
ANIM_Pokey_Anim0C,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
},
|
|
||||||
.aiDetectFlags = AI_DETECT_SIGHT,
|
|
||||||
};
|
|
||||||
|
|
||||||
StaticNpc N(npcGroup_802405E8) = {
|
|
||||||
.id = 1,
|
|
||||||
.settings = &N(npcSettings_802403CC),
|
|
||||||
.pos = { -200.0f, 0.0f, 180.0f },
|
|
||||||
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_PROJECT_SHADOW,
|
|
||||||
.yaw = 270,
|
|
||||||
.drops = {
|
|
||||||
.dropFlags = NPC_DROP_FLAGS_80,
|
|
||||||
.itemDropChance = 15,
|
|
||||||
.itemDrops = {
|
|
||||||
{ ITEM_DRIED_FRUIT, 9, 0 },
|
|
||||||
{ ITEM_TASTY_TONIC, 1, 0 },
|
|
||||||
},
|
|
||||||
.heartDrops = STANDARD_HEART_DROPS(2),
|
|
||||||
.flowerDrops = STANDARD_FLOWER_DROPS(2),
|
|
||||||
.maxCoinBonus = 1,
|
|
||||||
},
|
|
||||||
.territory = { .temp = { -200, 0, 180, 100, 0, -32767, 0, 0, 0, 0, 1000, 0, 0, 1 }},
|
|
||||||
.animations = {
|
|
||||||
ANIM_Pokey_Anim04,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim04,
|
|
||||||
ANIM_Pokey_Anim04,
|
|
||||||
ANIM_Pokey_Anim0C,
|
|
||||||
ANIM_Pokey_Anim0C,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
ANIM_Pokey_Anim08,
|
|
||||||
},
|
|
||||||
.aiDetectFlags = AI_DETECT_SIGHT,
|
|
||||||
};
|
|
||||||
|
|
||||||
NpcGroupList N(npcGroupList_802407D8) = {
|
|
||||||
NPC_GROUP(N(npcGroup_802403F8), 0x0A03, 0x00),
|
|
||||||
NPC_GROUP(N(npcGroup_802405E8), 0x0A01, 0x00),
|
|
||||||
{},
|
|
||||||
};
|
|
@ -2,11 +2,18 @@
|
|||||||
/// @brief Dry Dry Desert - N3W2
|
/// @brief Dry Dry Desert - N3W2
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "../sbk.h"
|
|
||||||
#include "message_ids.h"
|
#include "message_ids.h"
|
||||||
#include "map.h"
|
#include "map.h"
|
||||||
|
|
||||||
#define NAMESPACE sbk_01
|
#include "../sbk.h"
|
||||||
|
#include "mapfs/sbk_01_shape.h"
|
||||||
|
#include "mapfs/sbk_01_hit.h"
|
||||||
|
|
||||||
extern EvtScript N(main);
|
#include "sprite/npc/Pokey.h"
|
||||||
extern NpcGroupList N(npcGroupList_802407D8);
|
|
||||||
|
enum {
|
||||||
|
NPC_Pokey_01 = 0,
|
||||||
|
NPC_Pokey_02 = 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
#define NAMESPACE sbk_01
|
||||||
|
49
src/world/area_sbk/sbk_01/sbk_01_1_main.c
Normal file
49
src/world/area_sbk/sbk_01/sbk_01_1_main.c
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
#include "sbk_01.h"
|
||||||
|
|
||||||
|
extern EvtScript N(EVS_Main);
|
||||||
|
extern NpcGroupList N(DefaultNPCs);
|
||||||
|
|
||||||
|
EntryList N(Entrances) = {
|
||||||
|
[sbk_01_ENTRY_0] { -475.0, 0.0, 0.0, 90.0 },
|
||||||
|
[sbk_01_ENTRY_1] { 475.0, 0.0, 0.0, 270.0 },
|
||||||
|
[sbk_01_ENTRY_2] { 0.0, 0.0, -475.0, 180.0 },
|
||||||
|
[sbk_01_ENTRY_3] { 0.0, 0.0, 475.0, 0.0 },
|
||||||
|
};
|
||||||
|
|
||||||
|
MapSettings N(settings) = {
|
||||||
|
.main = &N(EVS_Main),
|
||||||
|
.entryList = &N(Entrances),
|
||||||
|
.entryCount = ENTRY_COUNT(N(Entrances)),
|
||||||
|
.background = &gBackgroundImage,
|
||||||
|
.tattle = { MSG_MapTattle_sbk_01 },
|
||||||
|
};
|
||||||
|
|
||||||
|
#include "world/common/SpawnSunEffect.inc.c"
|
||||||
|
|
||||||
|
EvtScript N(EVS_ExitWalk_sbk_00_1) = EVT_EXIT_WALK(60, sbk_01_ENTRY_0, "sbk_00", sbk_00_ENTRY_1);
|
||||||
|
EvtScript N(EVS_ExitWalk_sbk_02_0) = EVT_EXIT_WALK(60, sbk_01_ENTRY_1, "sbk_02", sbk_02_ENTRY_0);
|
||||||
|
EvtScript N(EVS_ExitWalk_sbk_11_2) = EVT_EXIT_WALK(60, sbk_01_ENTRY_3, "sbk_11", sbk_11_ENTRY_2);
|
||||||
|
|
||||||
|
EvtScript N(EVS_BindExitTriggers) = {
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_sbk_00_1)), TRIGGER_FLOOR_ABOVE, COLLIDER_deiliw, 1, 0)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_sbk_02_0)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilie, 1, 0)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_sbk_11_2)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilis, 1, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_Main) = {
|
||||||
|
EVT_SET(GB_WorldLocation, LOCATION_DRY_DRY_DESERT)
|
||||||
|
EVT_CALL(SetSpriteShading, SHADING_NONE)
|
||||||
|
EVT_IF_EQ(GB_StoryProgress, STORY_CH2_GOT_PULSE_STONE)
|
||||||
|
EVT_CALL(DisablePulseStone, FALSE)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_SETUP_CAMERA_NO_LEAD()
|
||||||
|
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs)))
|
||||||
|
EVT_CALL(N(SpawnSunEffect))
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8)
|
||||||
|
EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers)))
|
||||||
|
EVT_EXEC(EnterWalk)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
112
src/world/area_sbk/sbk_01/sbk_01_2_npc.c
Normal file
112
src/world/area_sbk/sbk_01/sbk_01_2_npc.c
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
#include "sbk_01.h"
|
||||||
|
#include "sprite/npc/Pokey.h"
|
||||||
|
|
||||||
|
#include "world/common/enemy/complete/Pokey.inc.c"
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_Pokey_01) = {
|
||||||
|
.id = NPC_Pokey_01,
|
||||||
|
.settings = &N(NpcSettings_Pokey),
|
||||||
|
.pos = { 205.0f, 0.0f, -60.0f },
|
||||||
|
.yaw = 90,
|
||||||
|
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_PROJECT_SHADOW,
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.itemDropChance = 15,
|
||||||
|
.itemDrops = {
|
||||||
|
{ ITEM_DRIED_FRUIT, 9, 0 },
|
||||||
|
{ ITEM_TASTY_TONIC, 1, 0 },
|
||||||
|
},
|
||||||
|
.heartDrops = STANDARD_HEART_DROPS(2),
|
||||||
|
.flowerDrops = STANDARD_FLOWER_DROPS(2),
|
||||||
|
.minCoinBonus = 0,
|
||||||
|
.maxCoinBonus = 1,
|
||||||
|
},
|
||||||
|
.territory = {
|
||||||
|
.wander = {
|
||||||
|
.isFlying = TRUE,
|
||||||
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||||
|
.wanderShape = SHAPE_CYLINDER,
|
||||||
|
.centerPos = { 205, 0, -60 },
|
||||||
|
.wanderSize = { 100 },
|
||||||
|
.detectShape = SHAPE_CYLINDER,
|
||||||
|
.detectPos = { 0, 0, 0 },
|
||||||
|
.detectSize = { 1000 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_Pokey_Anim04,
|
||||||
|
.walk = ANIM_Pokey_Anim08,
|
||||||
|
.run = ANIM_Pokey_Anim08,
|
||||||
|
.chase = ANIM_Pokey_Anim08,
|
||||||
|
.anim_4 = ANIM_Pokey_Anim04,
|
||||||
|
.anim_5 = ANIM_Pokey_Anim04,
|
||||||
|
.death = ANIM_Pokey_Anim0C,
|
||||||
|
.hit = ANIM_Pokey_Anim0C,
|
||||||
|
.anim_8 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_9 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_A = ANIM_Pokey_Anim08,
|
||||||
|
.anim_B = ANIM_Pokey_Anim08,
|
||||||
|
.anim_C = ANIM_Pokey_Anim08,
|
||||||
|
.anim_D = ANIM_Pokey_Anim08,
|
||||||
|
.anim_E = ANIM_Pokey_Anim08,
|
||||||
|
.anim_F = ANIM_Pokey_Anim08,
|
||||||
|
},
|
||||||
|
.aiDetectFlags = AI_DETECT_SIGHT,
|
||||||
|
};
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_Pokey_02) = {
|
||||||
|
.id = NPC_Pokey_02,
|
||||||
|
.settings = &N(NpcSettings_Pokey),
|
||||||
|
.pos = { -200.0f, 0.0f, 180.0f },
|
||||||
|
.yaw = 270,
|
||||||
|
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_PROJECT_SHADOW,
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.itemDropChance = 15,
|
||||||
|
.itemDrops = {
|
||||||
|
{ ITEM_DRIED_FRUIT, 9, 0 },
|
||||||
|
{ ITEM_TASTY_TONIC, 1, 0 },
|
||||||
|
},
|
||||||
|
.heartDrops = STANDARD_HEART_DROPS(2),
|
||||||
|
.flowerDrops = STANDARD_FLOWER_DROPS(2),
|
||||||
|
.minCoinBonus = 0,
|
||||||
|
.maxCoinBonus = 1,
|
||||||
|
},
|
||||||
|
.territory = {
|
||||||
|
.wander = {
|
||||||
|
.isFlying = TRUE,
|
||||||
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||||
|
.wanderShape = SHAPE_CYLINDER,
|
||||||
|
.centerPos = { -200, 0, 180 },
|
||||||
|
.wanderSize = { 100 },
|
||||||
|
.detectShape = SHAPE_CYLINDER,
|
||||||
|
.detectPos = { 0, 0, 0 },
|
||||||
|
.detectSize = { 1000 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_Pokey_Anim04,
|
||||||
|
.walk = ANIM_Pokey_Anim08,
|
||||||
|
.run = ANIM_Pokey_Anim08,
|
||||||
|
.chase = ANIM_Pokey_Anim08,
|
||||||
|
.anim_4 = ANIM_Pokey_Anim04,
|
||||||
|
.anim_5 = ANIM_Pokey_Anim04,
|
||||||
|
.death = ANIM_Pokey_Anim0C,
|
||||||
|
.hit = ANIM_Pokey_Anim0C,
|
||||||
|
.anim_8 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_9 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_A = ANIM_Pokey_Anim08,
|
||||||
|
.anim_B = ANIM_Pokey_Anim08,
|
||||||
|
.anim_C = ANIM_Pokey_Anim08,
|
||||||
|
.anim_D = ANIM_Pokey_Anim08,
|
||||||
|
.anim_E = ANIM_Pokey_Anim08,
|
||||||
|
.anim_F = ANIM_Pokey_Anim08,
|
||||||
|
},
|
||||||
|
.aiDetectFlags = AI_DETECT_SIGHT,
|
||||||
|
};
|
||||||
|
|
||||||
|
NpcGroupList N(DefaultNPCs) = {
|
||||||
|
NPC_GROUP(N(NpcData_Pokey_01), BTL_SBK_FORMATION_03, BTL_SBK_STAGE_00),
|
||||||
|
NPC_GROUP(N(NpcData_Pokey_02), BTL_SBK_FORMATION_01, BTL_SBK_STAGE_00),
|
||||||
|
{}
|
||||||
|
};
|
@ -22,14 +22,14 @@ s32 N(get_tattle)(void) {
|
|||||||
|
|
||||||
#include "world/common/atomic/UnkFunc27.inc.c"
|
#include "world/common/atomic/UnkFunc27.inc.c"
|
||||||
|
|
||||||
ApiStatus func_80240338_92A5E8(Evt* script, s32 isInitialCall) {
|
API_CALLABLE(func_80240338_92A5E8) {
|
||||||
EffectInstance* effect = (EffectInstance*)evt_get_variable(script, MapVar(0));
|
EffectInstance* effect = (EffectInstance*)evt_get_variable(script, MapVar(0));
|
||||||
|
|
||||||
effect->data.sun->targetAlpha = 0;
|
effect->data.sun->targetAlpha = 0;
|
||||||
return ApiStatus_DONE2;
|
return ApiStatus_DONE2;
|
||||||
}
|
}
|
||||||
|
|
||||||
ApiStatus func_80240364_92A614(Evt* script, s32 isInitialCall) {
|
API_CALLABLE(func_80240364_92A614) {
|
||||||
static u8 savedPrimR, savedPrimG, savedPrimB;
|
static u8 savedPrimR, savedPrimG, savedPrimB;
|
||||||
static u8 savedEnvR, savedEnvG, savedEnvB;
|
static u8 savedEnvR, savedEnvG, savedEnvB;
|
||||||
static s32 targetPrimR, targetPrimG, targetPrimB;
|
static s32 targetPrimR, targetPrimG, targetPrimB;
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
// needs data
|
// needs data
|
||||||
#ifdef NON_MATCHING
|
#ifdef NON_MATCHING
|
||||||
ApiStatus func_8024091C_92ABCC(Evt* script, s32 isInitialCall) {
|
API_CALLABLE(func_8024091C_92ABCC) {
|
||||||
Bytecode* args = script->ptrReadPos;
|
Bytecode* args = script->ptrReadPos;
|
||||||
if (isInitialCall) {
|
if (isInitialCall) {
|
||||||
D_8024404C_92E2FC = FALSE;
|
D_8024404C_92E2FC = FALSE;
|
||||||
@ -27,7 +27,7 @@ static s32 D_80245630[91];
|
|||||||
extern s32 D_8024404C_92E2FC;
|
extern s32 D_8024404C_92E2FC;
|
||||||
extern s32 D_80244050_92E300;
|
extern s32 D_80244050_92E300;
|
||||||
|
|
||||||
ApiStatus func_80240970_92AC20(Evt* script, s32 isInitialCall) {
|
API_CALLABLE(func_80240970_92AC20) {
|
||||||
Bytecode* args = script->ptrReadPos;
|
Bytecode* args = script->ptrReadPos;
|
||||||
|
|
||||||
D_80244050_92E300 = evt_get_variable(script, *args++);
|
D_80244050_92E300 = evt_get_variable(script, *args++);
|
||||||
@ -35,7 +35,7 @@ ApiStatus func_80240970_92AC20(Evt* script, s32 isInitialCall) {
|
|||||||
return ApiStatus_DONE2;
|
return ApiStatus_DONE2;
|
||||||
}
|
}
|
||||||
|
|
||||||
ApiStatus func_802409A8_92AC58(Evt* script, s32 isInitialCall) {
|
API_CALLABLE(func_802409A8_92AC58) {
|
||||||
Bytecode* args = script->ptrReadPos;
|
Bytecode* args = script->ptrReadPos;
|
||||||
s32* buf = (s32*) evt_get_variable(script, *args++);
|
s32* buf = (s32*) evt_get_variable(script, *args++);
|
||||||
s32 i;
|
s32 i;
|
||||||
@ -58,7 +58,7 @@ ApiStatus func_802409A8_92AC58(Evt* script, s32 isInitialCall) {
|
|||||||
|
|
||||||
#include "world/common/GetItemName.inc.c"
|
#include "world/common/GetItemName.inc.c"
|
||||||
|
|
||||||
ApiStatus PostChapter2StatUpdate(Evt* script, s32 isInitialCall) {
|
API_CALLABLE(PostChapter2StatUpdate) {
|
||||||
PlayerData* playerData = &gPlayerData;
|
PlayerData* playerData = &gPlayerData;
|
||||||
|
|
||||||
set_max_SP(2);
|
set_max_SP(2);
|
||||||
@ -68,13 +68,12 @@ ApiStatus PostChapter2StatUpdate(Evt* script, s32 isInitialCall) {
|
|||||||
return ApiStatus_DONE2;
|
return ApiStatus_DONE2;
|
||||||
}
|
}
|
||||||
|
|
||||||
ApiStatus N(CheckTradeEventTime)(Evt* script, s32 isInitialCall) {
|
API_CALLABLE(N(CheckTradeEventTime)) {
|
||||||
script->varTable[0] = (s32)((gPlayerData.frameCounter - gPlayerData.tradeEventStartTime) / 3600) < script->varTable[0];
|
script->varTable[0] = (s32)((gPlayerData.frameCounter - gPlayerData.tradeEventStartTime) / 3600) < script->varTable[0];
|
||||||
return ApiStatus_DONE2;
|
return ApiStatus_DONE2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
API_CALLABLE(GetItemCount) {
|
||||||
ApiStatus GetItemCount(Evt* script, s32 isInitialCall) {
|
|
||||||
script->varTable[0] = get_item_count();
|
script->varTable[0] = get_item_count();
|
||||||
return ApiStatus_DONE2;
|
return ApiStatus_DONE2;
|
||||||
}
|
}
|
||||||
|
@ -2,8 +2,23 @@
|
|||||||
/// @brief Dry Dry Desert - N3W1 Ruins Entrance
|
/// @brief Dry Dry Desert - N3W1 Ruins Entrance
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "../sbk.h"
|
|
||||||
#include "message_ids.h"
|
#include "message_ids.h"
|
||||||
#include "map.h"
|
#include "map.h"
|
||||||
|
|
||||||
|
#include "../sbk.h"
|
||||||
|
#include "mapfs/sbk_02_shape.h"
|
||||||
|
#include "mapfs/sbk_02_hit.h"
|
||||||
|
|
||||||
|
#include "sprite/npc/WorldMamar.h"
|
||||||
|
#include "sprite/npc/Toad.h"
|
||||||
|
|
||||||
|
enum {
|
||||||
|
NPC_Mamar = 1,
|
||||||
|
NPC_Toad = 2,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
MV_Unk_00 = MapVar(0),
|
||||||
|
};
|
||||||
|
|
||||||
#define NAMESPACE sbk_02
|
#define NAMESPACE sbk_02
|
||||||
|
45
src/world/area_sbk/sbk_02/sbk_02_0_header.c
Normal file
45
src/world/area_sbk/sbk_02/sbk_02_0_header.c
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
#include "sbk_02.h"
|
||||||
|
|
||||||
|
extern EvtScript N(EVS_Main);
|
||||||
|
|
||||||
|
s32 N(get_tattle)(void) {
|
||||||
|
s32 tattle;
|
||||||
|
if (evt_get_variable(NULL, GB_StoryProgress) > STORY_CH2_GOT_PULSE_STONE) {
|
||||||
|
tattle = MSG_MapTattle_sbk_02_after;
|
||||||
|
} else {
|
||||||
|
tattle = MSG_MapTattle_sbk_02_before;
|
||||||
|
}
|
||||||
|
return tattle;
|
||||||
|
}
|
||||||
|
|
||||||
|
EntryList N(Entrances) = {
|
||||||
|
[sbk_02_ENTRY_0] { -475.0, 0.0, 0.0, 90.0 },
|
||||||
|
[sbk_02_ENTRY_1] { 475.0, 0.0, 0.0, 270.0 },
|
||||||
|
[sbk_02_ENTRY_2] { 0.0, 0.0, -475.0, 180.0 },
|
||||||
|
[sbk_02_ENTRY_3] { 0.0, 0.0, 475.0, 0.0 },
|
||||||
|
[sbk_02_ENTRY_4] { 0.0, 80.0, -195.0, 180.0 },
|
||||||
|
[sbk_02_ENTRY_5] { 20.0, 0.0, 110.0, 270.0 },
|
||||||
|
[sbk_02_ENTRY_6] { -80.0, 0.0, 80.0, 180.0 },
|
||||||
|
[sbk_02_ENTRY_7] { 80.0, 0.0, 80.0, 90.0 },
|
||||||
|
};
|
||||||
|
|
||||||
|
MapSettings N(settings) = {
|
||||||
|
.main = &N(EVS_Main),
|
||||||
|
.entryList = &N(Entrances),
|
||||||
|
.entryCount = ENTRY_COUNT(N(Entrances)),
|
||||||
|
.background = &gBackgroundImage,
|
||||||
|
.tattle = { &N(get_tattle) },
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_SetupMusic) = {
|
||||||
|
EVT_CALL(GetEntryID, LVar0)
|
||||||
|
EVT_SWITCH(LVar0)
|
||||||
|
EVT_CASE_OR_EQ(sbk_02_ENTRY_6)
|
||||||
|
EVT_CASE_OR_EQ(sbk_02_ENTRY_7)
|
||||||
|
EVT_CASE_DEFAULT
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8)
|
||||||
|
EVT_END_CASE_GROUP
|
||||||
|
EVT_END_SWITCH
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
84
src/world/area_sbk/sbk_02/sbk_02_1_main.c
Normal file
84
src/world/area_sbk/sbk_02/sbk_02_1_main.c
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
#include "sbk_02.h"
|
||||||
|
#include "effects.h"
|
||||||
|
#include "entity.h"
|
||||||
|
|
||||||
|
extern EvtScript N(EVS_Main);
|
||||||
|
extern EvtScript N(EVS_80243A00);
|
||||||
|
extern EvtScript N(EVS_80243B38);
|
||||||
|
extern EvtScript N(EVS_SetupMusic);
|
||||||
|
extern EvtScript N(EVS_MakeEntities);
|
||||||
|
extern NpcGroupList N(DefaultNPCs);
|
||||||
|
|
||||||
|
EvtScript N(EVS_ExitWalk_sbk_01_1) = EVT_EXIT_WALK(60, sbk_02_ENTRY_0, "sbk_01", sbk_01_ENTRY_1);
|
||||||
|
EvtScript N(EVS_ExitWalk_sbk_03_0) = EVT_EXIT_WALK(60, sbk_02_ENTRY_1, "sbk_03", sbk_03_ENTRY_0);
|
||||||
|
EvtScript N(EVS_ExitWalk_sbk_12_2) = EVT_EXIT_WALK(60, sbk_02_ENTRY_3, "sbk_12", sbk_12_ENTRY_2);
|
||||||
|
EvtScript N(EVS_ExitWalk_isk_01_0) = EVT_EXIT_WALK(60, sbk_02_ENTRY_4, "isk_01", isk_01_ENTRY_0);
|
||||||
|
|
||||||
|
EvtScript N(EVS_BindExitTriggers) = {
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_sbk_01_1)), TRIGGER_FLOOR_ABOVE, COLLIDER_deiliw, 1, 0)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_sbk_03_0)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilie, 1, 0)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_sbk_12_2)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilis, 1, 0)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_isk_01_0)), TRIGGER_FLOOR_ABOVE, COLLIDER_deili1, 1, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_80240F30_92B1E0) = {
|
||||||
|
EVT_CALL(GetEntryID, LVar0)
|
||||||
|
EVT_SWITCH(LVar0)
|
||||||
|
EVT_CASE_EQ(sbk_02_ENTRY_5)
|
||||||
|
EVT_EXEC(N(EVS_BindExitTriggers))
|
||||||
|
EVT_CASE_OR_EQ(sbk_02_ENTRY_6)
|
||||||
|
EVT_CASE_OR_EQ(sbk_02_ENTRY_7)
|
||||||
|
EVT_EXEC(N(EVS_BindExitTriggers))
|
||||||
|
EVT_END_CASE_GROUP
|
||||||
|
EVT_CASE_DEFAULT
|
||||||
|
EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers)))
|
||||||
|
EVT_EXEC(EnterWalk)
|
||||||
|
EVT_END_SWITCH
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_Main) = {
|
||||||
|
EVT_SET(GB_WorldLocation, LOCATION_DRY_DRY_DESERT)
|
||||||
|
EVT_CALL(SetSpriteShading, SHADING_NONE)
|
||||||
|
EVT_IF_EQ(GB_StoryProgress, STORY_CH2_GOT_PULSE_STONE)
|
||||||
|
EVT_CALL(DisablePulseStone, FALSE)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_SETUP_CAMERA_NO_LEAD()
|
||||||
|
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs)))
|
||||||
|
EVT_EXEC_WAIT(N(EVS_MakeEntities))
|
||||||
|
EVT_IF_LT(GB_StoryProgress, STORY_CH2_UNCOVERED_DRY_DRY_RUINS)
|
||||||
|
EVT_CALL(PlayEffect, EFFECT_SUN, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||||
|
EVT_SET(MV_Unk_00, LVarF)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_IF_EQ(GB_StoryProgress, STORY_CH2_BEGAN_PEACH_MISSION)
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_STAR_SPIRIT_THEME, 1, 8)
|
||||||
|
EVT_ELSE
|
||||||
|
EVT_EXEC(N(EVS_SetupMusic))
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(GetEntryID, LVar0)
|
||||||
|
EVT_SWITCH(LVar0)
|
||||||
|
EVT_CASE_OR_EQ(sbk_02_ENTRY_6)
|
||||||
|
EVT_CASE_OR_EQ(sbk_02_ENTRY_7)
|
||||||
|
EVT_END_CASE_GROUP
|
||||||
|
EVT_CASE_DEFAULT
|
||||||
|
EVT_EXEC_WAIT(N(EVS_80243A00))
|
||||||
|
EVT_END_SWITCH
|
||||||
|
EVT_EXEC(N(D_80240F30_92B1E0))
|
||||||
|
EVT_CALL(GetEntryID, LVar0)
|
||||||
|
EVT_SWITCH(LVar0)
|
||||||
|
EVT_CASE_EQ(sbk_02_ENTRY_5)
|
||||||
|
EVT_WAIT(65)
|
||||||
|
EVT_CASE_OR_EQ(sbk_02_ENTRY_6)
|
||||||
|
EVT_CASE_OR_EQ(sbk_02_ENTRY_7)
|
||||||
|
EVT_EXEC(N(EVS_80243B38))
|
||||||
|
EVT_WAIT(3)
|
||||||
|
EVT_END_CASE_GROUP
|
||||||
|
EVT_CASE_DEFAULT
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_END_SWITCH
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
734
src/world/area_sbk/sbk_02/sbk_02_2_ruins.c
Normal file
734
src/world/area_sbk/sbk_02/sbk_02_2_ruins.c
Normal file
@ -0,0 +1,734 @@
|
|||||||
|
#include "sbk_02.h"
|
||||||
|
#include "effects.h"
|
||||||
|
|
||||||
|
#include "world/common/atomic/UnkFunc27.inc.c"
|
||||||
|
|
||||||
|
API_CALLABLE(N(func_80240338_92A5E8)) {
|
||||||
|
EffectInstance* effect = (EffectInstance*)evt_get_variable(script, MapVar(0));
|
||||||
|
|
||||||
|
effect->data.sun->targetAlpha = 0;
|
||||||
|
return ApiStatus_DONE2;
|
||||||
|
}
|
||||||
|
|
||||||
|
API_CALLABLE(N(func_80240364_92A614)) {
|
||||||
|
static u8 savedPrimR, savedPrimG, savedPrimB;
|
||||||
|
static u8 savedEnvR, savedEnvG, savedEnvB;
|
||||||
|
static s32 targetPrimR, targetPrimG, targetPrimB;
|
||||||
|
static s32 targetEnvR, targetEnvG, targetEnvB;
|
||||||
|
static s32 duration, elapsed;
|
||||||
|
|
||||||
|
Bytecode* args = script->ptrReadPos;
|
||||||
|
s32 blendPrimR, blendPrimG, blendPrimB;
|
||||||
|
s32 blendEnvR, blendEnvG, blendEnvB;
|
||||||
|
|
||||||
|
if (isInitialCall) {
|
||||||
|
get_model_env_color_parameters(&savedPrimR, &savedPrimG, &savedPrimB, &savedEnvR, &savedEnvG, &savedEnvB);
|
||||||
|
targetPrimR = evt_get_variable(script, *args++);
|
||||||
|
targetPrimG = evt_get_variable(script, *args++);
|
||||||
|
targetPrimB = evt_get_variable(script, *args++);
|
||||||
|
targetEnvR = evt_get_variable(script, *args++);
|
||||||
|
targetEnvG = evt_get_variable(script, *args++);
|
||||||
|
targetEnvB = evt_get_variable(script, *args++);
|
||||||
|
duration = evt_get_variable(script, *args++);
|
||||||
|
elapsed = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (duration > 0) {
|
||||||
|
elapsed++;
|
||||||
|
blendPrimR = savedPrimR + ((targetPrimR - savedPrimR) * elapsed) / duration;
|
||||||
|
blendPrimG = savedPrimG + ((targetPrimG - savedPrimG) * elapsed) / duration;
|
||||||
|
blendPrimB = savedPrimB + ((targetPrimB - savedPrimB) * elapsed) / duration;
|
||||||
|
blendEnvR = savedEnvR + ((targetEnvR - savedEnvR) * elapsed) / duration;
|
||||||
|
blendEnvG = savedEnvG + ((targetEnvG - savedEnvG) * elapsed) / duration;
|
||||||
|
blendEnvB = savedEnvB + ((targetEnvB - savedEnvB) * elapsed) / duration;
|
||||||
|
|
||||||
|
set_model_env_color_parameters(blendPrimR, blendPrimG, blendPrimB, blendEnvR, blendEnvG, blendEnvB);
|
||||||
|
if (elapsed >= duration) {
|
||||||
|
return ApiStatus_DONE2;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
set_model_env_color_parameters(targetPrimR, targetPrimG, targetPrimB, targetEnvR, targetEnvG, targetEnvB);
|
||||||
|
return ApiStatus_DONE2;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ApiStatus_BLOCK;
|
||||||
|
}
|
||||||
|
|
||||||
|
s32 N(D_80241250_92B500)[] = {
|
||||||
|
ITEM_PULSE_STONE,
|
||||||
|
ITEM_NONE
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_80241258_92B508) = {
|
||||||
|
EVT_CALL(PlayEffect, EFFECT_SMOKE_IMPACT, 0, 0, 0, 0, 20, 10, 0, 60, 0, 0, 0, 0, 0)
|
||||||
|
EVT_CALL(PlayEffect, EFFECT_DUST, 2, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||||
|
EVT_CALL(PlaySoundAtCollider, COLLIDER_iwa, SOUND_5F, 0)
|
||||||
|
EVT_SET(LVar2, 0)
|
||||||
|
EVT_CALL(MakeLerp, 0, -50, 50, EASING_LINEAR)
|
||||||
|
EVT_LOOP(0)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_CALL(RotateModel, MODEL_point_iwa, LVar2, 0, 1, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_point_iwa, 0, LVar0, 0)
|
||||||
|
EVT_SUB(LVar2, 10)
|
||||||
|
EVT_ADDF(LVar3, EVT_FLOAT(0.2))
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 0)
|
||||||
|
EVT_BREAK_LOOP
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_CALL(ModifyColliderFlags, 0, COLLIDER_iwa, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(EnableModel, MODEL_point_iwa, FALSE)
|
||||||
|
EVT_CALL(PlaySound, SOUND_8000005F)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
s32 N(D_80241418_92B6C8)[] = {
|
||||||
|
MODEL_ruins, MODEL_step, 0x0000FFFF
|
||||||
|
};
|
||||||
|
|
||||||
|
s32 N(D_80241424_92B6D4)[] = {
|
||||||
|
MODEL_upper_light, MODEL_o225, 0x0000FFFF
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_80241430_92B6E0) = {
|
||||||
|
EVT_CALL(N(UnkFunc27), 2, 0, 3)
|
||||||
|
EVT_CALL(N(UnkFunc27), 1, -1, 3)
|
||||||
|
EVT_CALL(N(UnkFunc27), 1, EVT_PTR(N(D_80241418_92B6C8)), 0)
|
||||||
|
EVT_CALL(N(UnkFunc27), 0, EVT_PTR(N(D_80241424_92B6D4)), 0)
|
||||||
|
EVT_CALL(N(func_80240364_92A614), 255, 255, 255, 0, 0, 0, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(N(func_80240364_92A614), 44, 32, 177, 0, 0, 0, 60)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_802414FC_92B7AC) = {
|
||||||
|
EVT_CALL(SetRenderMode, MODEL_o225, RENDER_MODE_SURFACE_XLU_LAYER2)
|
||||||
|
EVT_CALL(EnableTexPanning, MODEL_o225, TRUE)
|
||||||
|
EVT_CALL(EnableTexPanning, 0x00002710, TRUE)
|
||||||
|
EVT_SET(LVar0, 0)
|
||||||
|
EVT_SET(LVar1, 0)
|
||||||
|
EVT_SET(LVar2, 0)
|
||||||
|
EVT_LOOP(0)
|
||||||
|
EVT_CALL(SetTexPanOffset, 3, 0, LVar0, 0)
|
||||||
|
EVT_CALL(SetTexPanOffset, 3, 1, LVar1, LVar2)
|
||||||
|
EVT_ADD(LVar0, 0x00001770)
|
||||||
|
EVT_ADD(LVar1, 0x00001388)
|
||||||
|
EVT_ADD(LVar2, 0x00000FA0)
|
||||||
|
EVT_IF_GT(LVar0, 0x00020000)
|
||||||
|
EVT_SUB(LVar0, 0x00020000)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_IF_GT(LVar1, 0x00020000)
|
||||||
|
EVT_SUB(LVar1, 0x00020000)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_IF_GT(LVar2, 0x00020000)
|
||||||
|
EVT_SUB(LVar2, 0x00020000)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_80241678_92B928) = {
|
||||||
|
EVT_CALL(EnableModel, MODEL_o225, TRUE)
|
||||||
|
EVT_SET(LVar2, 0)
|
||||||
|
EVT_SET(LVar0, -100)
|
||||||
|
EVT_LOOP(100)
|
||||||
|
EVT_SET(LVar3, LVar2)
|
||||||
|
EVT_DIVF(LVar3, 80)
|
||||||
|
EVT_CALL(ScaleModel, MODEL_o225, LVar3, EVT_FLOAT(1.0), LVar3)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o225, 0, LVar0, 0)
|
||||||
|
EVT_ADD(LVar0, 1)
|
||||||
|
EVT_ADD(LVar2, 1)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_LOOP(0)
|
||||||
|
EVT_CALL(ScaleModel, MODEL_o225, LVar3, EVT_FLOAT(1.0), LVar3)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_80241790_92BA40) = {
|
||||||
|
EVT_WAIT(10)
|
||||||
|
EVT_CALL(EnableModel, 0x00002710, TRUE)
|
||||||
|
EVT_SET(LVar2, 0)
|
||||||
|
EVT_SET(LVar0, -100)
|
||||||
|
EVT_LOOP(100)
|
||||||
|
EVT_SET(LVar3, LVar2)
|
||||||
|
EVT_DIVF(LVar3, 110)
|
||||||
|
EVT_CALL(ScaleModel, 0x00002710, LVar3, EVT_FLOAT(1.0), LVar3)
|
||||||
|
EVT_CALL(TranslateModel, 0x00002710, 0, LVar0, 0)
|
||||||
|
EVT_ADD(LVar0, 1)
|
||||||
|
EVT_ADD(LVar2, 1)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_LOOP(0)
|
||||||
|
EVT_CALL(ScaleModel, 0x00002710, LVar3, EVT_FLOAT(1.0), LVar3)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_802418B4_92BB64) = {
|
||||||
|
EVT_CALL(EnableModel, MODEL_o225, TRUE)
|
||||||
|
EVT_SET(LVar0, 0)
|
||||||
|
EVT_SET(LVar2, 100)
|
||||||
|
EVT_SETF(LVar3, EVT_FLOAT(1.25))
|
||||||
|
EVT_LOOP(20)
|
||||||
|
EVT_CALL(ScaleModel, MODEL_o225, LVar3, EVT_FLOAT(1.0), LVar3)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_LOOP(70)
|
||||||
|
EVT_SET(LVar3, LVar2)
|
||||||
|
EVT_DIVF(LVar3, 80)
|
||||||
|
EVT_CALL(ScaleModel, MODEL_o225, LVar3, LVar3, LVar3)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o225, 0, LVar0, 0)
|
||||||
|
EVT_SUB(LVar0, 2)
|
||||||
|
EVT_ADD(LVar2, 5)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_CALL(EnableModel, MODEL_o225, FALSE)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_802419F0_92BCA0) = {
|
||||||
|
EVT_WAIT(10)
|
||||||
|
EVT_CALL(EnableModel, 0x00002710, TRUE)
|
||||||
|
EVT_SET(LVar0, 0)
|
||||||
|
EVT_SET(LVar2, 100)
|
||||||
|
EVT_SETF(LVar3, EVT_FLOAT(0.91))
|
||||||
|
EVT_LOOP(20)
|
||||||
|
EVT_CALL(ScaleModel, 0x00002710, LVar3, EVT_FLOAT(1.0), LVar3)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_LOOP(70)
|
||||||
|
EVT_SET(LVar3, LVar2)
|
||||||
|
EVT_DIVF(LVar3, 110)
|
||||||
|
EVT_CALL(ScaleModel, 0x00002710, LVar3, LVar3, LVar3)
|
||||||
|
EVT_CALL(TranslateModel, 0x00002710, 0, LVar0, 0)
|
||||||
|
EVT_SUB(LVar0, 2)
|
||||||
|
EVT_ADD(LVar2, 5)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_CALL(EnableModel, 0x00002710, FALSE)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_80241B38_92BDE8) = {
|
||||||
|
EVT_CHILD_THREAD
|
||||||
|
EVT_CALL(EnableTexPanning, MODEL_upper_light, TRUE)
|
||||||
|
EVT_SET(LVar0, 0)
|
||||||
|
EVT_LOOP(0)
|
||||||
|
EVT_CALL(SetTexPanOffset, 1, 0, LVar0, 0)
|
||||||
|
EVT_ADD(LVar0, 0x000009C4)
|
||||||
|
EVT_IF_GT(LVar0, 0x00008000)
|
||||||
|
EVT_SUB(LVar0, 0x00008000)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_END_CHILD_THREAD
|
||||||
|
EVT_CALL(EnableModel, MODEL_upper_light, TRUE)
|
||||||
|
EVT_SET(LVar0, -200)
|
||||||
|
EVT_SET(LVar1, 0)
|
||||||
|
EVT_LOOP(200)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_upper_light, 0, LVar0, 0)
|
||||||
|
EVT_ADD(LVar0, 1)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_LOOP(0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_80241C90_92BF40) = {
|
||||||
|
EVT_CHILD_THREAD
|
||||||
|
EVT_CALL(EnableTexPanning, MODEL_upper_light, TRUE)
|
||||||
|
EVT_SET(LVar0, 0)
|
||||||
|
EVT_LOOP(0)
|
||||||
|
EVT_CALL(SetTexPanOffset, 1, 0, LVar0, 0)
|
||||||
|
EVT_ADD(LVar0, 0x000009C4)
|
||||||
|
EVT_IF_GT(LVar0, 0x00008000)
|
||||||
|
EVT_SUB(LVar0, 0x00008000)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_END_CHILD_THREAD
|
||||||
|
EVT_CALL(EnableModel, MODEL_upper_light, TRUE)
|
||||||
|
EVT_SET(LVar0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_upper_light, 0, LVar0, 0)
|
||||||
|
EVT_WAIT(10)
|
||||||
|
EVT_LOOP(100)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_upper_light, 0, LVar0, 0)
|
||||||
|
EVT_SUB(LVar0, 2)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_80241DE0_92C090) = {
|
||||||
|
EVT_CALL(MakeTransformGroup, MODEL_ruins)
|
||||||
|
EVT_CALL(EnableGroup, MODEL_ruins, TRUE)
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_CALL(EnableTexPanning, MODEL_o232, TRUE)
|
||||||
|
EVT_SET(LVar0, 0)
|
||||||
|
EVT_SET(LVar1, 0)
|
||||||
|
EVT_SET(LVar2, 0)
|
||||||
|
EVT_LOOP(600)
|
||||||
|
EVT_CALL(SetTexPanOffset, 2, 0, 0, LVar0)
|
||||||
|
EVT_CALL(SetTexPanOffset, 2, 1, LVar1, LVar2)
|
||||||
|
EVT_ADD(LVar0, 200)
|
||||||
|
EVT_ADD(LVar1, -200)
|
||||||
|
EVT_ADD(LVar2, 700)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_CALL(EnableModel, MODEL_o232, FALSE)
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_WAIT(20)
|
||||||
|
EVT_LOOP(30)
|
||||||
|
EVT_CALL(RandInt, 290, LVar0)
|
||||||
|
EVT_ADD(LVar0, -110)
|
||||||
|
EVT_CALL(PlayEffect, EFFECT_SMOKE_IMPACT, 0, LVar0, 0, -35, 20, 10, 0, 60, 0, 0, 0, 0, 0)
|
||||||
|
EVT_CALL(PlayEffect, EFFECT_DUST, 2, LVar0, 0, -35, 60, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||||
|
EVT_WAIT(10)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_WAIT(20)
|
||||||
|
EVT_LOOP(15)
|
||||||
|
EVT_CALL(RandInt, 180, LVar0)
|
||||||
|
EVT_ADD(LVar0, 170)
|
||||||
|
EVT_CALL(PlayEffect, EFFECT_SMOKE_IMPACT, 0, LVar0, 0, -300, 20, 10, 0, 60, 0, 0, 0, 0, 0)
|
||||||
|
EVT_CALL(PlayEffect, EFFECT_DUST, 2, LVar0, 0, -300, 60, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||||
|
EVT_WAIT(20)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_WAIT(100)
|
||||||
|
EVT_LOOP(5)
|
||||||
|
EVT_CALL(PlayEffect, EFFECT_SMOKE_IMPACT, 0, -180, 0, 260, 20, 10, 0, 60, 0, 0, 0, 0, 0)
|
||||||
|
EVT_CALL(PlayEffect, EFFECT_DUST, 2, -180, 0, 260, 60, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||||
|
EVT_WAIT(40)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_WAIT(110)
|
||||||
|
EVT_LOOP(4)
|
||||||
|
EVT_CALL(PlayEffect, EFFECT_SMOKE_IMPACT, 0, 180, 0, 260, 20, 10, 0, 60, 0, 0, 0, 0, 0)
|
||||||
|
EVT_CALL(PlayEffect, EFFECT_DUST, 2, 180, 0, 260, 60, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||||
|
EVT_WAIT(50)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_CALL(PlaySound, SOUND_8000005E)
|
||||||
|
EVT_CALL(MakeLerp, -310, 0, 310, EASING_LINEAR)
|
||||||
|
EVT_LOOP(0)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_CALL(TranslateGroup, MODEL_ruins, 0, LVar0, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 0)
|
||||||
|
EVT_BREAK_LOOP
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_802422F0_92C5A0) = {
|
||||||
|
EVT_CALL(MakeTransformGroup, MODEL_ruins)
|
||||||
|
EVT_CALL(EnableGroup, MODEL_ruins, TRUE)
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_CALL(EnableTexPanning, MODEL_o232, TRUE)
|
||||||
|
EVT_SET(LVar0, 0x0000EA60)
|
||||||
|
EVT_SET(LVar1, 0xFFFF15A0)
|
||||||
|
EVT_SET(LVar2, 0x00033450)
|
||||||
|
EVT_LOOP(300)
|
||||||
|
EVT_CALL(SetTexPanOffset, 2, 0, 0, LVar0)
|
||||||
|
EVT_CALL(SetTexPanOffset, 2, 1, LVar1, LVar2)
|
||||||
|
EVT_ADD(LVar0, 200)
|
||||||
|
EVT_ADD(LVar1, -200)
|
||||||
|
EVT_ADD(LVar2, 700)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_CALL(EnableModel, MODEL_o232, FALSE)
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_LOOP(10)
|
||||||
|
EVT_CALL(RandInt, 290, LVar0)
|
||||||
|
EVT_ADD(LVar0, -110)
|
||||||
|
EVT_CALL(PlayEffect, EFFECT_SMOKE_IMPACT, 0, LVar0, 0, -35, 20, 10, 0, 60, 0, 0, 0, 0, 0)
|
||||||
|
EVT_CALL(PlayEffect, EFFECT_DUST, 2, LVar0, 0, -35, 60, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||||
|
EVT_WAIT(10)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_WAIT(10)
|
||||||
|
EVT_LOOP(5)
|
||||||
|
EVT_CALL(RandInt, 180, LVar0)
|
||||||
|
EVT_ADD(LVar0, 170)
|
||||||
|
EVT_CALL(PlayEffect, EFFECT_SMOKE_IMPACT, 0, LVar0, 0, -300, 20, 10, 0, 60, 0, 0, 0, 0, 0)
|
||||||
|
EVT_CALL(PlayEffect, EFFECT_DUST, 2, LVar0, 0, -300, 60, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||||
|
EVT_WAIT(20)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_LOOP(3)
|
||||||
|
EVT_CALL(PlayEffect, EFFECT_SMOKE_IMPACT, 0, -180, 0, 260, 20, 10, 0, 60, 0, 0, 0, 0, 0)
|
||||||
|
EVT_CALL(PlayEffect, EFFECT_DUST, 2, -180, 0, 260, 60, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||||
|
EVT_WAIT(40)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_WAIT(10)
|
||||||
|
EVT_LOOP(2)
|
||||||
|
EVT_CALL(PlayEffect, EFFECT_SMOKE_IMPACT, 0, 180, 0, 260, 20, 10, 0, 60, 0, 0, 0, 0, 0)
|
||||||
|
EVT_CALL(PlayEffect, EFFECT_DUST, 2, 180, 0, 260, 60, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||||
|
EVT_WAIT(50)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_CALL(MakeLerp, -20, 0, 20, EASING_LINEAR)
|
||||||
|
EVT_LOOP(0)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_CALL(TranslateGroup, MODEL_ruins, 0, LVar0, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 0)
|
||||||
|
EVT_BREAK_LOOP
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_CALL(ShakeCam, CAM_DEFAULT, 0, 10, EVT_FLOAT(1.0))
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_802427F4_92CAA4) = {
|
||||||
|
EVT_CALL(RotateGroup, MODEL_c_wang, LVar0, 0, 1, 0)
|
||||||
|
EVT_CALL(RotateGroup, MODEL_d_wang, LVar0, 0, 1, 0)
|
||||||
|
EVT_SET(LVar2, 0)
|
||||||
|
EVT_SUB(LVar2, LVar0)
|
||||||
|
EVT_CALL(RotateGroup, MODEL_a_wang, LVar2, 0, 1, 0)
|
||||||
|
EVT_CALL(RotateGroup, MODEL_b_wang, LVar2, 0, 1, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_802428A4_92CB54) = {
|
||||||
|
EVT_CALL(MakeLerp, 180, 0, 60, EASING_QUADRATIC_OUT)
|
||||||
|
EVT_LOOP(0)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_EXEC_WAIT(N(D_802427F4_92CAA4))
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 0)
|
||||||
|
EVT_BREAK_LOOP
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_80242928_92CBD8) = {
|
||||||
|
EVT_CALL(MakeLerp, 0, 60, 180, EASING_QUADRATIC_IN)
|
||||||
|
EVT_LABEL(10)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o168, LVar0, 0, 1, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o177, LVar0, 0, 1, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o169, -20, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o178, -20, 0, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o169, LVar0, 0, 1, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o178, LVar0, 0, 1, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o169, 20, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o178, 20, 0, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o130, LVar0, 0, 1, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o176, LVar0, 0, 1, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o175, -20, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o129, -20, 0, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o175, LVar0, 0, 1, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o129, LVar0, 0, 1, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o175, 20, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o129, 20, 0, 0)
|
||||||
|
EVT_SET(LVar2, 0)
|
||||||
|
EVT_SUB(LVar2, LVar0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o141, LVar2, 0, 1, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o174, LVar2, 0, 1, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o140, 20, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o173, 20, 0, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o140, LVar2, 0, 1, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o173, LVar2, 0, 1, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o140, -20, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o173, -20, 0, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o157, LVar2, 0, 1, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o171, LVar2, 0, 1, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o158, 20, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o172, 20, 0, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o158, LVar2, 0, 1, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o172, LVar2, 0, 1, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o158, -20, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o172, -20, 0, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 1)
|
||||||
|
EVT_GOTO(10)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(MakeLerp, 0, 60, 180, EASING_QUADRATIC_OUT)
|
||||||
|
EVT_LABEL(20)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o169, -20, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o178, -20, 0, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o169, 60, 0, 1, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o178, 60, 0, 1, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o169, 20, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o178, 20, 0, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o169, LVar0, 0, 1, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o178, LVar0, 0, 1, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o175, -20, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o129, -20, 0, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o175, 60, 0, 1, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o129, 60, 0, 1, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o175, 20, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o129, 20, 0, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o175, LVar0, 0, 1, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o129, LVar0, 0, 1, 0)
|
||||||
|
EVT_SET(LVar2, 0)
|
||||||
|
EVT_SUB(LVar2, LVar0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o140, 20, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o173, 20, 0, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o140, -60, 0, 1, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o173, -60, 0, 1, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o140, -20, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o173, -20, 0, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o140, LVar2, 0, 1, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o173, LVar2, 0, 1, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o158, 20, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o172, 20, 0, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o158, -60, 0, 1, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o172, -60, 0, 1, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o158, -20, 0, 0)
|
||||||
|
EVT_CALL(TranslateModel, MODEL_o172, -20, 0, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o158, LVar2, 0, 1, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o172, LVar2, 0, 1, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 1)
|
||||||
|
EVT_GOTO(20)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_802431C0_92D470) = {
|
||||||
|
EVT_CALL(EnableGroup, MODEL_step, TRUE)
|
||||||
|
EVT_CALL(MakeLerp, -310, 0, 310, EASING_LINEAR)
|
||||||
|
EVT_LOOP(0)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_CALL(TranslateGroup, MODEL_step, 0, LVar0, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 0)
|
||||||
|
EVT_BREAK_LOOP
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_80243268_92D518) = {
|
||||||
|
EVT_CALL(EnableGroup, MODEL_step, TRUE)
|
||||||
|
EVT_CALL(MakeLerp, -20, 0, 20, EASING_LINEAR)
|
||||||
|
EVT_LOOP(0)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_CALL(TranslateGroup, MODEL_step, 0, LVar0, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 0)
|
||||||
|
EVT_BREAK_LOOP
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_80243310_92D5C0) = {
|
||||||
|
EVT_CALL(PlaySoundAt, SOUND_5E, 0, 0, 39, -80)
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_CALL(ShakeCam, CAM_DEFAULT, 0, 5, EVT_FLOAT(0.2))
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_CALL(MakeLerp, 0, -180, 180, EASING_QUADRATIC_OUT)
|
||||||
|
EVT_LOOP(0)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o106, LVar0, 1, 0, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o107, LVar0, 1, 0, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o100, LVar0, 1, 0, 0)
|
||||||
|
EVT_CALL(RotateModel, MODEL_o105, LVar0, 1, 0, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 0)
|
||||||
|
EVT_BREAK_LOOP
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_CALL(PlayEffect, EFFECT_SMOKE_IMPACT, 0, 61, 2, -83, 20, 10, 0, 60, 0, 0, 0, 0, 0)
|
||||||
|
EVT_CALL(PlayEffect, EFFECT_DUST, 2, 61, 2, -83, 60, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||||
|
EVT_WAIT(3)
|
||||||
|
EVT_CALL(PlayEffect, EFFECT_SMOKE_IMPACT, 0, -61, 2, -83, 20, 10, 0, 60, 0, 0, 0, 0, 0)
|
||||||
|
EVT_CALL(PlayEffect, EFFECT_DUST, 2, -61, 2, -83, 60, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||||
|
EVT_CALL(ShakeCam, CAM_DEFAULT, 0, 5, EVT_FLOAT(1.0))
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_8024358C_92D83C) = {
|
||||||
|
EVT_CALL(DisablePulseStone, TRUE)
|
||||||
|
EVT_CALL(ShowKeyChoicePopup)
|
||||||
|
EVT_IF_LE(LVar0, 0)
|
||||||
|
EVT_CALL(CloseChoicePopup)
|
||||||
|
EVT_CALL(DisablePulseStone, FALSE)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(DisablePlayerInput, TRUE)
|
||||||
|
EVT_CALL(func_802CF56C, 1)
|
||||||
|
EVT_CALL(RemoveKeyItemAt, LVar1)
|
||||||
|
EVT_CALL(CloseChoicePopup)
|
||||||
|
EVT_SET(GB_StoryProgress, STORY_CH2_UNCOVERED_DRY_DRY_RUINS)
|
||||||
|
EVT_CALL(N(func_80240338_92A5E8))
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_DRY_DRY_RUINS_APPEAR, 1, 8)
|
||||||
|
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, 0, 0, 0)
|
||||||
|
EVT_CALL(SetPanTarget, CAM_DEFAULT, 210, 0, 137)
|
||||||
|
EVT_CALL(SetCamPosA, CAM_DEFAULT, EVT_FLOAT(150.0), EVT_FLOAT(500.0))
|
||||||
|
EVT_CALL(SetCamPosB, CAM_DEFAULT, EVT_FLOAT(-450.0), EVT_FLOAT(-500.0))
|
||||||
|
EVT_CALL(SetCamPitch, CAM_DEFAULT, EVT_FLOAT(15.0), EVT_FLOAT(-7.0))
|
||||||
|
EVT_CALL(SetCamDistance, CAM_DEFAULT, EVT_FLOAT(500.0))
|
||||||
|
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(0.2))
|
||||||
|
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
|
||||||
|
EVT_WAIT(10)
|
||||||
|
EVT_SET(LVar0, 180)
|
||||||
|
EVT_EXEC_WAIT(N(D_802427F4_92CAA4))
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_CALL(ShakeCam, CAM_DEFAULT, 0, 120, EVT_FLOAT(0.2))
|
||||||
|
EVT_CALL(ShakeCam, CAM_DEFAULT, 0, 300, EVT_FLOAT(0.5))
|
||||||
|
EVT_CALL(ShakeCam, CAM_DEFAULT, 0, 300, EVT_FLOAT(0.2))
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_EXEC(N(D_80241258_92B508))
|
||||||
|
EVT_WAIT(30)
|
||||||
|
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)
|
||||||
|
EVT_IF_LT(LVar0, 0)
|
||||||
|
EVT_SET(LVar0, -80)
|
||||||
|
EVT_SET(LocalFlag(0), FALSE)
|
||||||
|
EVT_ELSE
|
||||||
|
EVT_SET(LVar0, 80)
|
||||||
|
EVT_SET(LocalFlag(0), TRUE)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_WAIT(10)
|
||||||
|
EVT_CALL(SetPlayerSpeed, EVT_FLOAT(3.0))
|
||||||
|
EVT_CALL(PlayerMoveTo, LVar0, 80, 0)
|
||||||
|
EVT_CALL(func_802D2884, 0, 0, 0)
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_EXEC(N(D_80241430_92B6E0))
|
||||||
|
EVT_WAIT(30)
|
||||||
|
EVT_CALL(CloneModel, MODEL_o225, 0x00002710)
|
||||||
|
EVT_EXEC(N(D_802414FC_92B7AC))
|
||||||
|
EVT_EXEC(N(D_80241678_92B928))
|
||||||
|
EVT_EXEC(N(D_80241790_92BA40))
|
||||||
|
EVT_WAIT(100)
|
||||||
|
EVT_EXEC(N(D_80241B38_92BDE8))
|
||||||
|
EVT_WAIT(150)
|
||||||
|
EVT_EXEC(N(D_80241DE0_92C090))
|
||||||
|
EVT_EXEC(N(D_802431C0_92D470))
|
||||||
|
EVT_WAIT(100)
|
||||||
|
EVT_CALL(SetCamPitch, CAM_DEFAULT, EVT_FLOAT(8.0), EVT_FLOAT(-9.0))
|
||||||
|
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(0.2))
|
||||||
|
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
|
||||||
|
EVT_WAIT(80)
|
||||||
|
EVT_EXEC(N(D_802428A4_92CB54))
|
||||||
|
EVT_WAIT(60)
|
||||||
|
EVT_WAIT(50)
|
||||||
|
EVT_IF_EQ(LocalFlag(0), FALSE)
|
||||||
|
EVT_CALL(GotoMap, EVT_PTR("sbk_30"), sbk_30_ENTRY_4)
|
||||||
|
EVT_ELSE
|
||||||
|
EVT_CALL(GotoMap, EVT_PTR("sbk_30"), sbk_30_ENTRY_5)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_WAIT(100)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_80243A00) = {
|
||||||
|
EVT_SWITCH(GB_StoryProgress)
|
||||||
|
EVT_CASE_LT(STORY_CH2_GOT_PULSE_STONE)
|
||||||
|
EVT_CALL(EnableGroup, MODEL_day_version, FALSE)
|
||||||
|
EVT_CALL(ModifyColliderFlags, 0, COLLIDER_ruin, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CASE_LT(STORY_CH2_UNCOVERED_DRY_DRY_RUINS)
|
||||||
|
EVT_CALL(EnableGroup, MODEL_day_version, FALSE)
|
||||||
|
EVT_CALL(ModifyColliderFlags, 0, COLLIDER_ruin, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_BIND_PADLOCK(EVT_PTR(N(D_8024358C_92D83C)), TRIGGER_WALL_PRESS_A, COLLIDER_iwa, EVT_PTR(N(D_80241250_92B500)), 0, 1)
|
||||||
|
EVT_CASE_DEFAULT
|
||||||
|
EVT_CALL(EnableModel, MODEL_point_iwa, FALSE)
|
||||||
|
EVT_CALL(ModifyColliderFlags, 0, COLLIDER_pikapika, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_END_SWITCH
|
||||||
|
EVT_CALL(EnableGroup, MODEL_ruins, FALSE)
|
||||||
|
EVT_CALL(EnableGroup, MODEL_step, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_upper_light, FALSE)
|
||||||
|
EVT_CALL(EnableModel, MODEL_o225, FALSE)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_80243B38) = {
|
||||||
|
EVT_CALL(PlaySound, SOUND_5C)
|
||||||
|
EVT_CALL(DisablePlayerInput, TRUE)
|
||||||
|
EVT_CALL(func_802CF56C, 1)
|
||||||
|
EVT_CALL(func_802D2884, 0, 0, 0)
|
||||||
|
EVT_CALL(ModifyColliderFlags, 0, COLLIDER_iwa, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(EnableModel, MODEL_point_iwa, FALSE)
|
||||||
|
EVT_CALL(EnableGroup, MODEL_day_version, FALSE)
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_CALL(ShakeCam, CAM_DEFAULT, 0, 400, EVT_FLOAT(0.2))
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, 0, 0, 0)
|
||||||
|
EVT_CALL(SetPanTarget, CAM_DEFAULT, 210, 0, 137)
|
||||||
|
EVT_CALL(SetCamPosA, CAM_DEFAULT, EVT_FLOAT(150.0), EVT_FLOAT(500.0))
|
||||||
|
EVT_CALL(SetCamPosB, CAM_DEFAULT, EVT_FLOAT(-450.0), EVT_FLOAT(-500.0))
|
||||||
|
EVT_CALL(SetCamPitch, CAM_DEFAULT, EVT_FLOAT(8.0), EVT_FLOAT(-9.0))
|
||||||
|
EVT_CALL(SetCamDistance, CAM_DEFAULT, EVT_FLOAT(500.0))
|
||||||
|
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(90.0))
|
||||||
|
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
|
||||||
|
EVT_CALL(N(UnkFunc27), 2, 0, 3)
|
||||||
|
EVT_CALL(N(UnkFunc27), 1, -1, 3)
|
||||||
|
EVT_CALL(N(UnkFunc27), 1, EVT_PTR(N(D_80241418_92B6C8)), 0)
|
||||||
|
EVT_CALL(N(UnkFunc27), 0, EVT_PTR(N(D_80241424_92B6D4)), 0)
|
||||||
|
EVT_CALL(N(func_80240364_92A614), 44, 32, 177, 0, 0, 0, 0)
|
||||||
|
EVT_EXEC(N(D_802422F0_92C5A0))
|
||||||
|
EVT_EXEC(N(D_80243268_92D518))
|
||||||
|
EVT_CALL(CloneModel, MODEL_o225, 0x00002710)
|
||||||
|
EVT_EXEC(N(D_802414FC_92B7AC))
|
||||||
|
EVT_EXEC(N(D_802418B4_92BB64))
|
||||||
|
EVT_EXEC(N(D_802419F0_92BCA0))
|
||||||
|
EVT_WAIT(20)
|
||||||
|
EVT_EXEC(N(D_80241C90_92BF40))
|
||||||
|
EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0))
|
||||||
|
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, 0, 0, 0)
|
||||||
|
EVT_CALL(SetPanTarget, CAM_DEFAULT, 0, 0, 0)
|
||||||
|
EVT_CALL(SetCamPitch, CAM_DEFAULT, EVT_FLOAT(4.0), EVT_FLOAT(-6.5))
|
||||||
|
EVT_CALL(SetCamDistance, CAM_DEFAULT, EVT_FLOAT(790.0))
|
||||||
|
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(0.2))
|
||||||
|
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
|
||||||
|
EVT_WAIT(100)
|
||||||
|
EVT_EXEC(N(D_80242928_92CBD8))
|
||||||
|
EVT_WAIT(100)
|
||||||
|
EVT_EXEC_WAIT(N(D_80243310_92D5C0))
|
||||||
|
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_CLEAR_BITS, COLLIDER_ruin, COLLIDER_FLAGS_UPPER_MASK)
|
||||||
|
EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0))
|
||||||
|
EVT_WAIT(60)
|
||||||
|
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(90.0))
|
||||||
|
EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0))
|
||||||
|
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 0)
|
||||||
|
EVT_CALL(func_802CF56C, 0)
|
||||||
|
EVT_CALL(DisablePlayerInput, FALSE)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
458
src/world/area_sbk/sbk_02/sbk_02_3_npc.c
Normal file
458
src/world/area_sbk/sbk_02/sbk_02_3_npc.c
Normal file
@ -0,0 +1,458 @@
|
|||||||
|
#include "sbk_02.h"
|
||||||
|
#include "effects.h"
|
||||||
|
|
||||||
|
|
||||||
|
#include "world/common/GetNpcCollisionHeight.inc.c"
|
||||||
|
|
||||||
|
#include "world/common/AddPlayerHandsOffset.inc.c"
|
||||||
|
|
||||||
|
// needs data
|
||||||
|
#ifdef NON_MATCHING
|
||||||
|
API_CALLABLE(func_8024091C_92ABCC) {
|
||||||
|
Bytecode* args = script->ptrReadPos;
|
||||||
|
if (isInitialCall) {
|
||||||
|
D_8024404C_92E2FC = FALSE;
|
||||||
|
}
|
||||||
|
if (D_8024404C_92E2FC) {
|
||||||
|
D_8024404C_92E2FC = FALSE;
|
||||||
|
evt_set_variable(script, *args++, D_80244050_92E300);
|
||||||
|
return ApiStatus_DONE2;
|
||||||
|
} else {
|
||||||
|
return ApiStatus_BLOCK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
INCLUDE_ASM(s32, "world/area_sbk/sbk_02/92A9A0", func_8024091C_92ABCC);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static s32 D_80245630[91];
|
||||||
|
extern s32 D_8024404C_92E2FC;
|
||||||
|
extern s32 D_80244050_92E300;
|
||||||
|
|
||||||
|
API_CALLABLE(func_80240970_92AC20) {
|
||||||
|
Bytecode* args = script->ptrReadPos;
|
||||||
|
|
||||||
|
D_80244050_92E300 = evt_get_variable(script, *args++);
|
||||||
|
D_8024404C_92E2FC = TRUE;
|
||||||
|
return ApiStatus_DONE2;
|
||||||
|
}
|
||||||
|
|
||||||
|
API_CALLABLE(func_802409A8_92AC58) {
|
||||||
|
Bytecode* args = script->ptrReadPos;
|
||||||
|
s32* buf = (s32*) evt_get_variable(script, *args++);
|
||||||
|
s32 i;
|
||||||
|
|
||||||
|
if (buf != NULL) {
|
||||||
|
for (i = 0; *buf != NULL; i++) {
|
||||||
|
D_80245630[i] = *buf++;
|
||||||
|
}
|
||||||
|
D_80245630[i] = 0;
|
||||||
|
} else {
|
||||||
|
for (i = 0; i <= 90; i++) {
|
||||||
|
D_80245630[i] = i + 0x80;
|
||||||
|
D_80245630[91] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ApiStatus_DONE2;
|
||||||
|
}
|
||||||
|
|
||||||
|
#include "world/common/StashVars.inc.c"
|
||||||
|
|
||||||
|
#include "world/common/GetItemName.inc.c"
|
||||||
|
|
||||||
|
API_CALLABLE(PostChapter2StatUpdate) {
|
||||||
|
PlayerData* playerData = &gPlayerData;
|
||||||
|
|
||||||
|
set_max_SP(2);
|
||||||
|
playerData->curHP = playerData->curMaxHP;
|
||||||
|
playerData->curFP = playerData->curMaxFP;
|
||||||
|
sync_status_menu();
|
||||||
|
return ApiStatus_DONE2;
|
||||||
|
}
|
||||||
|
|
||||||
|
API_CALLABLE(N(CheckTradeEventTime)) {
|
||||||
|
script->varTable[0] = (s32)((gPlayerData.frameCounter - gPlayerData.tradeEventStartTime) / 3600) < script->varTable[0];
|
||||||
|
return ApiStatus_DONE2;
|
||||||
|
}
|
||||||
|
|
||||||
|
API_CALLABLE(GetItemCount) {
|
||||||
|
script->varTable[0] = get_item_count();
|
||||||
|
return ApiStatus_DONE2;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
NpcSettings N(NpcSettings_Mamar) = {
|
||||||
|
.height = 26,
|
||||||
|
.radius = 24,
|
||||||
|
.level = 99,
|
||||||
|
};
|
||||||
|
|
||||||
|
s32 N(missing_80243F9C_3F9C)[] = {
|
||||||
|
0x00000000, 0x00140014, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||||
|
0x00000000, 0x00000000, 0x00630000,
|
||||||
|
0x00000000, 0x00160018, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||||
|
0x00000000, 0x00000000, 0x00630000,
|
||||||
|
};
|
||||||
|
|
||||||
|
NpcSettings N(NpcSettings_Toad) = {
|
||||||
|
.height = 30,
|
||||||
|
.radius = 24,
|
||||||
|
.level = 99,
|
||||||
|
};
|
||||||
|
|
||||||
|
s32 N(missing_80244020_4020)[] = {
|
||||||
|
0x00000000, 0x00170013, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||||
|
0x00000000, 0x00000000, 0x00630000,
|
||||||
|
};
|
||||||
|
|
||||||
|
s32 N(D_8024404C_92E2FC) = 0;
|
||||||
|
|
||||||
|
s32 N(D_80244050_92E300) = 0;
|
||||||
|
|
||||||
|
EvtScript N(D_80244054_92E304) = {
|
||||||
|
EVT_SET(LVar9, LVar1)
|
||||||
|
EVT_CALL(ShowConsumableChoicePopup)
|
||||||
|
EVT_SET(LVarA, LVar0)
|
||||||
|
EVT_SWITCH(LVar0)
|
||||||
|
EVT_CASE_EQ(0)
|
||||||
|
EVT_CASE_EQ(-1)
|
||||||
|
EVT_CASE_DEFAULT
|
||||||
|
EVT_CALL(RemoveItemAt, LVar1)
|
||||||
|
EVT_CALL(GetPlayerPos, LVar3, LVar4, LVar5)
|
||||||
|
EVT_CALL(N(AddPlayerHandsOffset), LVar3, LVar4, LVar5)
|
||||||
|
EVT_CALL(MakeItemEntity, LVar0, LVar3, LVar4, LVar5, ITEM_SPAWN_MODE_DECORATION, 0)
|
||||||
|
EVT_CALL(SetPlayerAnimation, ANIM_Mario_60005)
|
||||||
|
EVT_WAIT(30)
|
||||||
|
EVT_CALL(SetPlayerAnimation, ANIM_Mario_10002)
|
||||||
|
EVT_CALL(RemoveItemEntity, LVar0)
|
||||||
|
EVT_END_SWITCH
|
||||||
|
EVT_CALL(N(func_80240970_92AC20), LVarA)
|
||||||
|
EVT_CALL(CloseChoicePopup)
|
||||||
|
EVT_UNBIND
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_80244188_92E438) = {
|
||||||
|
EVT_CALL(N(func_802409A8_92AC58), LVar0)
|
||||||
|
EVT_BIND_PADLOCK(EVT_PTR(N(D_80244054_92E304)), TRIGGER_FORCE_ACTIVATE, 0, 80245630_BSS[30], 0, 1)
|
||||||
|
EVT_CALL(N(func_8024091C_92ABCC), LVar0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
s32** N(varStash) = NULL;
|
||||||
|
|
||||||
|
EvtScript N(D_802441DC_92E48C) = {
|
||||||
|
EVT_CALL(ShowGotItem, LVar0, TRUE, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_8024420C) = {
|
||||||
|
EVT_CALL(ShowGotItem, LVar0, TRUE, 16)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_NpcIdle_Mamar) = {
|
||||||
|
EVT_LOOP(0)
|
||||||
|
EVT_LOOP(10)
|
||||||
|
EVT_CALL(GetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
|
||||||
|
EVT_SUB(LVar1, 1)
|
||||||
|
EVT_CALL(SetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_LOOP(10)
|
||||||
|
EVT_CALL(GetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
|
||||||
|
EVT_ADD(LVar1, 1)
|
||||||
|
EVT_CALL(SetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_80244330_92E5E0) = {
|
||||||
|
EVT_CALL(DisablePartnerAI, 0)
|
||||||
|
EVT_CALL(func_802CF56C, 2)
|
||||||
|
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)
|
||||||
|
EVT_SET(LVar3, LVar0)
|
||||||
|
EVT_ADD(LVar3, -50)
|
||||||
|
EVT_SET(LVar4, LVar1)
|
||||||
|
EVT_ADD(LVar4, 26)
|
||||||
|
EVT_CALL(SetNpcPos, NPC_Mamar, LVar3, LVar4, LVar2)
|
||||||
|
EVT_CALL(PlayerFaceNpc, NPC_Mamar, FALSE)
|
||||||
|
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(SetPanTarget, CAM_DEFAULT, 0, LVar1, LVar2)
|
||||||
|
EVT_CALL(SetCamDistance, CAM_DEFAULT, 600)
|
||||||
|
EVT_CALL(SetCamPitch, CAM_DEFAULT, EVT_FLOAT(18.0), EVT_FLOAT(-9.0))
|
||||||
|
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(90.0))
|
||||||
|
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_CALL(WaitForPlayerInputEnabled)
|
||||||
|
EVT_CALL(DisablePlayerInput, TRUE)
|
||||||
|
EVT_CALL(SetCamDistance, CAM_DEFAULT, EVT_FLOAT(300.0))
|
||||||
|
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(1.5))
|
||||||
|
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
|
||||||
|
EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0))
|
||||||
|
EVT_CALL(SpeakToPlayer, NPC_Mamar, ANIM_WorldMamar_TalkHappy, ANIM_WorldMamar_Idle, 512, MSG_CH2_00EB)
|
||||||
|
EVT_CALL(SetCamDistance, CAM_DEFAULT, EVT_FLOAT(300.0))
|
||||||
|
EVT_CALL(SetCamPitch, CAM_DEFAULT, 18, -9)
|
||||||
|
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(4.0))
|
||||||
|
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
|
||||||
|
EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0))
|
||||||
|
EVT_CALL(MakeLerp, 0, 360, 10, EASING_LINEAR)
|
||||||
|
EVT_LOOP(0)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_CALL(SetNpcRotation, NPC_Mamar, 0, LVar0, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 0)
|
||||||
|
EVT_BREAK_LOOP
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_CALL(EnableNpcAI, NPC_Mamar, FALSE)
|
||||||
|
EVT_CALL(SetNpcAnimation, NPC_Mamar, ANIM_WorldMamar_Leap)
|
||||||
|
EVT_WAIT(20)
|
||||||
|
EVT_CALL(SetPlayerAnimation, ANIM_Mario_GotItem)
|
||||||
|
EVT_CALL(PlaySoundAtPlayer, SOUND_139, 0)
|
||||||
|
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)
|
||||||
|
EVT_SET(LVar3, LVar1)
|
||||||
|
EVT_ADD(LVar1, 50)
|
||||||
|
EVT_ADD(LVar2, 10)
|
||||||
|
EVT_ADD(LVar3, 30)
|
||||||
|
EVT_LOOP(5)
|
||||||
|
EVT_CALL(PlayEffect, EFFECT_SPARKLES, 3, LVar0, LVar1, LVar2, 20, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||||
|
EVT_WAIT(6)
|
||||||
|
EVT_CALL(PlayEffect, EFFECT_SPARKLES, 1, LVar0, LVar3, LVar2, 20, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||||
|
EVT_WAIT(6)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_WAIT(20)
|
||||||
|
EVT_CALL(PlaySoundAtPlayer, SOUND_188, 0)
|
||||||
|
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)
|
||||||
|
EVT_ADD(LVar1, 20)
|
||||||
|
EVT_CALL(PlayEffect, EFFECT_ENERGY_ORB_WAVE, 4, LVar0, LVar1, LVar2, 1, 30, 0, 0, 0, 0, 0, 0, 0)
|
||||||
|
EVT_WAIT(30)
|
||||||
|
EVT_CALL(SetPlayerAnimation, ANIM_Mario_10002)
|
||||||
|
EVT_CALL(SetNpcAnimation, NPC_Mamar, ANIM_WorldMamar_Idle)
|
||||||
|
EVT_CALL(EnableNpcAI, NPC_Mamar, TRUE)
|
||||||
|
EVT_CALL(N(PostChapter2StatUpdate))
|
||||||
|
EVT_CALL(ShowMessageAtScreenPos, MSG_Menus_0192, 160, 40)
|
||||||
|
EVT_WAIT(10)
|
||||||
|
EVT_CALL(GetNpcPos, NPC_Mamar, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(SetCamDistance, CAM_DEFAULT, EVT_FLOAT(250.0))
|
||||||
|
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
|
||||||
|
EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0))
|
||||||
|
EVT_WAIT(10)
|
||||||
|
EVT_CALL(SpeakToPlayer, NPC_Mamar, ANIM_WorldMamar_TalkHappy, ANIM_WorldMamar_Idle, 512, MSG_CH2_00EC)
|
||||||
|
EVT_WAIT(10)
|
||||||
|
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(GetNpcPos, NPC_Mamar, LVar3, LVar4, LVar5)
|
||||||
|
EVT_ADD(LVar0, LVar3)
|
||||||
|
EVT_DIV(LVar0, 2)
|
||||||
|
EVT_CALL(UseSettingsFrom, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(4.0))
|
||||||
|
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 1)
|
||||||
|
EVT_CALL(WaitForCam, CAM_DEFAULT, EVT_FLOAT(1.0))
|
||||||
|
EVT_WAIT(10)
|
||||||
|
EVT_CALL(SpeakToPlayer, NPC_Mamar, ANIM_WorldMamar_TalkHappy, ANIM_WorldMamar_Idle, 512, MSG_CH2_00ED)
|
||||||
|
EVT_CALL(SetNpcFlagBits, NPC_Mamar, NPC_FLAG_40000, TRUE)
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_LOOP(25)
|
||||||
|
EVT_CALL(GetNpcPos, NPC_Mamar, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(PlayEffect, EFFECT_SPARKLES, 4, LVar0, LVar1, LVar2, 20, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||||
|
EVT_WAIT(4)
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_SET(LVar2, 0)
|
||||||
|
EVT_SET(LVar3, 0x00000708)
|
||||||
|
EVT_CALL(MakeLerp, LVar2, LVar3, 100, EASING_CUBIC_IN)
|
||||||
|
EVT_LOOP(0)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_CALL(SetNpcRotation, NPC_Mamar, 0, LVar0, 0)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 0)
|
||||||
|
EVT_BREAK_LOOP
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_CALL(GetNpcPos, NPC_Mamar, LVar2, LVar3, LVar4)
|
||||||
|
EVT_SET(LVar5, LVar3)
|
||||||
|
EVT_ADD(LVar5, 180)
|
||||||
|
EVT_CALL(MakeLerp, LVar3, LVar5, 100, EASING_CUBIC_IN)
|
||||||
|
EVT_LOOP(0)
|
||||||
|
EVT_CALL(UpdateLerp)
|
||||||
|
EVT_CALL(SetNpcPos, NPC_Mamar, LVar2, LVar0, LVar4)
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_IF_EQ(LVar1, 0)
|
||||||
|
EVT_BREAK_LOOP
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_END_LOOP
|
||||||
|
EVT_CALL(SetNpcPos, NPC_Mamar, NPC_DISPOSE_LOCATION)
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_THREAD
|
||||||
|
EVT_WAIT(15)
|
||||||
|
EVT_CALL(PlaySoundAtNpc, NPC_Mamar, SOUND_2045, 0)
|
||||||
|
EVT_END_THREAD
|
||||||
|
EVT_WAIT(10)
|
||||||
|
EVT_CALL(SetPlayerAnimation, ANIM_Mario_1002A)
|
||||||
|
EVT_WAIT(90)
|
||||||
|
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 0)
|
||||||
|
EVT_WAIT(20)
|
||||||
|
EVT_CALL(SetPlayerAnimation, ANIM_Mario_10002)
|
||||||
|
EVT_SET(GB_StoryProgress, STORY_CH2_STAR_SPRIT_DEPARTED)
|
||||||
|
EVT_EXEC(N(EVS_80240CC0))
|
||||||
|
EVT_CALL(EnablePartnerAI)
|
||||||
|
EVT_CALL(DisablePlayerInput, FALSE)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_NpcInit_Mamar) = {
|
||||||
|
EVT_CALL(GetEntryID, LVar0)
|
||||||
|
EVT_IF_EQ(LVar0, sbk_02_ENTRY_5)
|
||||||
|
EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_Mamar)))
|
||||||
|
EVT_EXEC(N(D_80244330_92E5E0))
|
||||||
|
EVT_ELSE
|
||||||
|
EVT_CALL(RemoveNpc, NPC_SELF)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_NpcInteract_Toad) = {
|
||||||
|
EVT_SET(LVar0, 5)
|
||||||
|
EVT_CALL(N(CheckTradeEventTime))
|
||||||
|
EVT_IF_EQ(LVar0, 0)
|
||||||
|
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Toad_Pink_Talk, ANIM_Toad_Pink_Idle, 0, MSG_CH2_00EE)
|
||||||
|
EVT_WAIT(10)
|
||||||
|
EVT_CALL(GetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(PlaySoundAtNpc, NPC_SELF, SOUND_SMOKE_BURST, 0)
|
||||||
|
EVT_CALL(PlayEffect, EFFECT_BIG_SMOKE_PUFF, LVar0, LVar1, LVar2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0)
|
||||||
|
EVT_CALL(SetNpcPos, NPC_SELF, NPC_DISPOSE_LOCATION)
|
||||||
|
EVT_SET(GF_TradingEvent2_Active, FALSE)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(N(GetItemCount))
|
||||||
|
EVT_IF_EQ(LVar0, 0)
|
||||||
|
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Toad_Pink_Talk, ANIM_Toad_Pink_Idle, 0, MSG_CH2_00EF)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Toad_Pink_Talk, ANIM_Toad_Pink_Idle, 0, MSG_CH2_00F0)
|
||||||
|
EVT_SET(LVar0, 0)
|
||||||
|
EVT_SET(LVar1, 2)
|
||||||
|
EVT_EXEC_WAIT(N(D_80244188_92E438))
|
||||||
|
EVT_SWITCH(LVar0)
|
||||||
|
EVT_CASE_EQ(-1)
|
||||||
|
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Toad_Pink_Talk, ANIM_Toad_Pink_Idle, 0, MSG_CH2_00F4)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_CASE_EQ(214)
|
||||||
|
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Toad_Pink_Talk, ANIM_Toad_Pink_Idle, 0, MSG_CH2_00F1)
|
||||||
|
EVT_SET(LVar0, ITEM_MAPLE_SUPER)
|
||||||
|
EVT_SET(LVar1, ITEM_TYPE_CONSUMABLE)
|
||||||
|
EVT_EXEC_WAIT(N(D_802441DC_92E48C))
|
||||||
|
EVT_CALL(AddItem, LVar0, LVar1)
|
||||||
|
EVT_WAIT(10)
|
||||||
|
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Toad_Pink_Talk, ANIM_Toad_Pink_Idle, 0, MSG_CH2_00F2)
|
||||||
|
EVT_WAIT(10)
|
||||||
|
EVT_CALL(GetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
|
||||||
|
EVT_CALL(PlaySoundAtNpc, NPC_SELF, SOUND_SMOKE_BURST, 0)
|
||||||
|
EVT_CALL(PlayEffect, EFFECT_BIG_SMOKE_PUFF, LVar0, LVar1, LVar2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0)
|
||||||
|
EVT_CALL(SetNpcPos, NPC_SELF, NPC_DISPOSE_LOCATION)
|
||||||
|
EVT_SET(GF_TradingEvent2_Active, FALSE)
|
||||||
|
EVT_ADD(GB_TradingEvent_Count, 1)
|
||||||
|
EVT_CASE_DEFAULT
|
||||||
|
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_Toad_Pink_Talk, ANIM_Toad_Pink_Idle, 0, MSG_CH2_00F3)
|
||||||
|
EVT_END_SWITCH
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_NpcInit_Toad) = {
|
||||||
|
EVT_IF_NE(GF_TradingEvent2_Active, FALSE)
|
||||||
|
EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(EVS_NpcInteract_Toad)))
|
||||||
|
EVT_ELSE
|
||||||
|
EVT_CALL(RemoveNpc, NPC_SELF)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_Mamar) = {
|
||||||
|
.id = NPC_Mamar,
|
||||||
|
.settings = &N(NpcSettings_Mamar),
|
||||||
|
.pos = { NPC_DISPOSE_LOCATION },
|
||||||
|
.yaw = 0,
|
||||||
|
.flags = NPC_FLAG_PASSIVE | NPC_FLAG_100 | NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING,
|
||||||
|
.init = &N(EVS_NpcInit_Mamar),
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.heartDrops = NO_DROPS,
|
||||||
|
.flowerDrops = NO_DROPS,
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_WorldMamar_Idle,
|
||||||
|
.walk = ANIM_WorldMamar_Idle,
|
||||||
|
.run = ANIM_WorldMamar_Idle,
|
||||||
|
.chase = ANIM_WorldMamar_Idle,
|
||||||
|
.anim_4 = ANIM_WorldMamar_Idle,
|
||||||
|
.anim_5 = ANIM_WorldMamar_Idle,
|
||||||
|
.death = ANIM_WorldMamar_Idle,
|
||||||
|
.hit = ANIM_WorldMamar_Idle,
|
||||||
|
.anim_8 = ANIM_WorldMamar_Still,
|
||||||
|
.anim_9 = ANIM_WorldMamar_Idle,
|
||||||
|
.anim_A = ANIM_WorldMamar_Idle,
|
||||||
|
.anim_B = ANIM_WorldMamar_Idle,
|
||||||
|
.anim_C = ANIM_WorldMamar_Idle,
|
||||||
|
.anim_D = ANIM_WorldMamar_Idle,
|
||||||
|
.anim_E = ANIM_WorldMamar_Idle,
|
||||||
|
.anim_F = ANIM_WorldMamar_Idle,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_Toad) = {
|
||||||
|
.id = NPC_Toad,
|
||||||
|
.settings = &N(NpcSettings_Toad),
|
||||||
|
.pos = { 0.0f, 2.0f, 150.0f },
|
||||||
|
.yaw = 90,
|
||||||
|
.flags = NPC_FLAG_PASSIVE | NPC_FLAG_ENABLE_HIT_SCRIPT | NPC_FLAG_100 | NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_PROJECT_SHADOW | NPC_FLAG_DIRTY_SHADOW | NPC_FLAG_MOTION_BLUR,
|
||||||
|
.init = &N(EVS_NpcInit_Toad),
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.heartDrops = NO_DROPS,
|
||||||
|
.flowerDrops = NO_DROPS,
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_Toad_Pink_Idle,
|
||||||
|
.walk = ANIM_Toad_Pink_Walk,
|
||||||
|
.run = ANIM_Toad_Pink_Run,
|
||||||
|
.chase = ANIM_Toad_Pink_Run,
|
||||||
|
.anim_4 = ANIM_Toad_Pink_Idle,
|
||||||
|
.anim_5 = ANIM_Toad_Pink_Idle,
|
||||||
|
.death = ANIM_Toad_Pink_Idle,
|
||||||
|
.hit = ANIM_Toad_Pink_Disappointed,
|
||||||
|
.anim_8 = ANIM_Toad_Pink_Run,
|
||||||
|
.anim_9 = ANIM_Toad_Pink_Run,
|
||||||
|
.anim_A = ANIM_Toad_Pink_Run,
|
||||||
|
.anim_B = ANIM_Toad_Pink_Run,
|
||||||
|
.anim_C = ANIM_Toad_Pink_Run,
|
||||||
|
.anim_D = ANIM_Toad_Pink_Run,
|
||||||
|
.anim_E = ANIM_Toad_Pink_Run,
|
||||||
|
.anim_F = ANIM_Toad_Pink_Run,
|
||||||
|
},
|
||||||
|
.tattle = MSG_NpcTattle_PrizeToad,
|
||||||
|
};
|
||||||
|
|
||||||
|
NpcGroupList N(DefaultNPCs) = {
|
||||||
|
NPC_GROUP(N(NpcData_Mamar)),
|
||||||
|
NPC_GROUP(N(NpcData_Toad)),
|
||||||
|
{}
|
||||||
|
};
|
10
src/world/area_sbk/sbk_02/sbk_02_4_entity.c
Normal file
10
src/world/area_sbk/sbk_02/sbk_02_4_entity.c
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#include "sbk_02.h"
|
||||||
|
#include "entity.h"
|
||||||
|
|
||||||
|
EvtScript N(EVS_MakeEntities) = {
|
||||||
|
EVT_IF_GE(GB_StoryProgress, STORY_CH2_UNCOVERED_DRY_DRY_RUINS)
|
||||||
|
EVT_CALL(MakeEntity, EVT_PTR(Entity_HeartBlock), -240, 60, -200, 0, 6, MAKE_ENTITY_END)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
@ -1,8 +0,0 @@
|
|||||||
#include "sbk_03.h"
|
|
||||||
|
|
||||||
static char* N(exit_str_0) = "sbk_02";
|
|
||||||
static char* N(exit_str_1) = "sbk_04";
|
|
||||||
static char* N(exit_str_2) = "sbk_13";
|
|
||||||
static char* N(exit_str_3) = "";
|
|
||||||
|
|
||||||
#include "world/common/SpawnSunEffect.inc.c"
|
|
@ -1,2 +0,0 @@
|
|||||||
#include "sbk_03.h"
|
|
||||||
#include "world/common/SetNpcB5_3.inc.c"
|
|
@ -2,8 +2,20 @@
|
|||||||
/// @brief Dry Dry Desert - N3
|
/// @brief Dry Dry Desert - N3
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "../sbk.h"
|
|
||||||
#include "message_ids.h"
|
#include "message_ids.h"
|
||||||
#include "map.h"
|
#include "map.h"
|
||||||
|
|
||||||
|
#include "../sbk.h"
|
||||||
|
#include "mapfs/sbk_03_shape.h"
|
||||||
|
#include "mapfs/sbk_03_hit.h"
|
||||||
|
|
||||||
|
#include "sprite/npc/Pokey.h"
|
||||||
|
|
||||||
|
enum {
|
||||||
|
NPC_Pokey_01 = 0,
|
||||||
|
NPC_Pokey_02 = 1,
|
||||||
|
NPC_Pokey_03 = 2,
|
||||||
|
NPC_Pokey_04 = 3,
|
||||||
|
};
|
||||||
|
|
||||||
#define NAMESPACE sbk_03
|
#define NAMESPACE sbk_03
|
||||||
|
49
src/world/area_sbk/sbk_03/sbk_03_1_main.c
Normal file
49
src/world/area_sbk/sbk_03/sbk_03_1_main.c
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
#include "sbk_03.h"
|
||||||
|
|
||||||
|
extern EvtScript N(EVS_Main);
|
||||||
|
extern NpcGroupList N(DefaultNPCs);
|
||||||
|
|
||||||
|
EntryList N(Entrances) = {
|
||||||
|
[sbk_03_ENTRY_0] { -475.0, 0.0, 0.0, 90.0 },
|
||||||
|
[sbk_03_ENTRY_1] { 475.0, 0.0, 0.0, 270.0 },
|
||||||
|
[sbk_03_ENTRY_2] { 0.0, 0.0, -475.0, 180.0 },
|
||||||
|
[sbk_03_ENTRY_3] { 0.0, 0.0, 475.0, 0.0 },
|
||||||
|
};
|
||||||
|
|
||||||
|
MapSettings N(settings) = {
|
||||||
|
.main = &N(EVS_Main),
|
||||||
|
.entryList = &N(Entrances),
|
||||||
|
.entryCount = ENTRY_COUNT(N(Entrances)),
|
||||||
|
.background = &gBackgroundImage,
|
||||||
|
.tattle = { MSG_MapTattle_sbk_03 },
|
||||||
|
};
|
||||||
|
|
||||||
|
#include "world/common/SpawnSunEffect.inc.c"
|
||||||
|
|
||||||
|
EvtScript N(EVS_ExitWalk_sbk_02_1) = EVT_EXIT_WALK(60, sbk_03_ENTRY_0, "sbk_02", sbk_02_ENTRY_1);
|
||||||
|
EvtScript N(EVS_ExitWalk_sbk_04_0) = EVT_EXIT_WALK(60, sbk_03_ENTRY_1, "sbk_04", sbk_04_ENTRY_0);
|
||||||
|
EvtScript N(EVS_ExitWalk_sbk_13_2) = EVT_EXIT_WALK(60, sbk_03_ENTRY_3, "sbk_13", sbk_13_ENTRY_2);
|
||||||
|
|
||||||
|
EvtScript N(EVS_BindExitTriggers) = {
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_sbk_02_1)), TRIGGER_FLOOR_ABOVE, COLLIDER_deiliw, 1, 0)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_sbk_04_0)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilie, 1, 0)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_sbk_13_2)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilis, 1, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_Main) = {
|
||||||
|
EVT_SET(GB_WorldLocation, LOCATION_DRY_DRY_DESERT)
|
||||||
|
EVT_CALL(SetSpriteShading, SHADING_NONE)
|
||||||
|
EVT_IF_EQ(GB_StoryProgress, STORY_CH2_GOT_PULSE_STONE)
|
||||||
|
EVT_CALL(DisablePulseStone, FALSE)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_SETUP_CAMERA_NO_LEAD()
|
||||||
|
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs)))
|
||||||
|
EVT_CALL(N(SpawnSunEffect))
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8)
|
||||||
|
EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers)))
|
||||||
|
EVT_EXEC(EnterWalk)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
215
src/world/area_sbk/sbk_03/sbk_03_2_npc.c
Normal file
215
src/world/area_sbk/sbk_03/sbk_03_2_npc.c
Normal file
@ -0,0 +1,215 @@
|
|||||||
|
#include "sbk_03.h"
|
||||||
|
|
||||||
|
#include "world/common/enemy/complete/Pokey.inc.c"
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_Pokey_01) = {
|
||||||
|
.id = NPC_Pokey_01,
|
||||||
|
.settings = &N(NpcSettings_Pokey),
|
||||||
|
.pos = { -340.0f, 0.0f, -125.0f },
|
||||||
|
.yaw = 90,
|
||||||
|
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_PROJECT_SHADOW,
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.itemDropChance = 15,
|
||||||
|
.itemDrops = {
|
||||||
|
{ ITEM_DRIED_FRUIT, 9, 0 },
|
||||||
|
{ ITEM_TASTY_TONIC, 1, 0 },
|
||||||
|
},
|
||||||
|
.heartDrops = STANDARD_HEART_DROPS(2),
|
||||||
|
.flowerDrops = STANDARD_FLOWER_DROPS(2),
|
||||||
|
.minCoinBonus = 0,
|
||||||
|
.maxCoinBonus = 1,
|
||||||
|
},
|
||||||
|
.territory = {
|
||||||
|
.wander = {
|
||||||
|
.isFlying = TRUE,
|
||||||
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||||
|
.wanderShape = SHAPE_CYLINDER,
|
||||||
|
.centerPos = { -340, 0, -125 },
|
||||||
|
.wanderSize = { 100 },
|
||||||
|
.detectShape = SHAPE_CYLINDER,
|
||||||
|
.detectPos = { 0, 0, 0 },
|
||||||
|
.detectSize = { 1000 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_Pokey_Anim04,
|
||||||
|
.walk = ANIM_Pokey_Anim08,
|
||||||
|
.run = ANIM_Pokey_Anim08,
|
||||||
|
.chase = ANIM_Pokey_Anim08,
|
||||||
|
.anim_4 = ANIM_Pokey_Anim04,
|
||||||
|
.anim_5 = ANIM_Pokey_Anim04,
|
||||||
|
.death = ANIM_Pokey_Anim0C,
|
||||||
|
.hit = ANIM_Pokey_Anim0C,
|
||||||
|
.anim_8 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_9 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_A = ANIM_Pokey_Anim08,
|
||||||
|
.anim_B = ANIM_Pokey_Anim08,
|
||||||
|
.anim_C = ANIM_Pokey_Anim08,
|
||||||
|
.anim_D = ANIM_Pokey_Anim08,
|
||||||
|
.anim_E = ANIM_Pokey_Anim08,
|
||||||
|
.anim_F = ANIM_Pokey_Anim08,
|
||||||
|
},
|
||||||
|
.aiDetectFlags = AI_DETECT_SIGHT,
|
||||||
|
};
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_Pokey_02) = {
|
||||||
|
.id = NPC_Pokey_02,
|
||||||
|
.settings = &N(NpcSettings_Pokey),
|
||||||
|
.pos = { 10.0f, 0.0f, 100.0f },
|
||||||
|
.yaw = 270,
|
||||||
|
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_PROJECT_SHADOW,
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.itemDropChance = 15,
|
||||||
|
.itemDrops = {
|
||||||
|
{ ITEM_DRIED_FRUIT, 9, 0 },
|
||||||
|
{ ITEM_TASTY_TONIC, 1, 0 },
|
||||||
|
},
|
||||||
|
.heartDrops = STANDARD_HEART_DROPS(2),
|
||||||
|
.flowerDrops = STANDARD_FLOWER_DROPS(2),
|
||||||
|
.minCoinBonus = 0,
|
||||||
|
.maxCoinBonus = 1,
|
||||||
|
},
|
||||||
|
.territory = {
|
||||||
|
.wander = {
|
||||||
|
.isFlying = TRUE,
|
||||||
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||||
|
.wanderShape = SHAPE_CYLINDER,
|
||||||
|
.centerPos = { 10, 0, 100 },
|
||||||
|
.wanderSize = { 100 },
|
||||||
|
.detectShape = SHAPE_CYLINDER,
|
||||||
|
.detectPos = { 0, 0, 0 },
|
||||||
|
.detectSize = { 1000 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_Pokey_Anim04,
|
||||||
|
.walk = ANIM_Pokey_Anim08,
|
||||||
|
.run = ANIM_Pokey_Anim08,
|
||||||
|
.chase = ANIM_Pokey_Anim08,
|
||||||
|
.anim_4 = ANIM_Pokey_Anim04,
|
||||||
|
.anim_5 = ANIM_Pokey_Anim04,
|
||||||
|
.death = ANIM_Pokey_Anim0C,
|
||||||
|
.hit = ANIM_Pokey_Anim0C,
|
||||||
|
.anim_8 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_9 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_A = ANIM_Pokey_Anim08,
|
||||||
|
.anim_B = ANIM_Pokey_Anim08,
|
||||||
|
.anim_C = ANIM_Pokey_Anim08,
|
||||||
|
.anim_D = ANIM_Pokey_Anim08,
|
||||||
|
.anim_E = ANIM_Pokey_Anim08,
|
||||||
|
.anim_F = ANIM_Pokey_Anim08,
|
||||||
|
},
|
||||||
|
.aiDetectFlags = AI_DETECT_SIGHT,
|
||||||
|
};
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_Pokey_03) = {
|
||||||
|
.id = NPC_Pokey_03,
|
||||||
|
.settings = &N(NpcSettings_Pokey),
|
||||||
|
.pos = { -90.0f, 0.0f, 260.0f },
|
||||||
|
.yaw = 90,
|
||||||
|
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_PROJECT_SHADOW,
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.itemDropChance = 15,
|
||||||
|
.itemDrops = {
|
||||||
|
{ ITEM_DRIED_FRUIT, 9, 0 },
|
||||||
|
{ ITEM_TASTY_TONIC, 1, 0 },
|
||||||
|
},
|
||||||
|
.heartDrops = STANDARD_HEART_DROPS(2),
|
||||||
|
.flowerDrops = STANDARD_FLOWER_DROPS(2),
|
||||||
|
.minCoinBonus = 0,
|
||||||
|
.maxCoinBonus = 1,
|
||||||
|
},
|
||||||
|
.territory = {
|
||||||
|
.wander = {
|
||||||
|
.isFlying = TRUE,
|
||||||
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||||
|
.wanderShape = SHAPE_CYLINDER,
|
||||||
|
.centerPos = { -90, 0, 260 },
|
||||||
|
.wanderSize = { 100 },
|
||||||
|
.detectShape = SHAPE_CYLINDER,
|
||||||
|
.detectPos = { 0, 0, 0 },
|
||||||
|
.detectSize = { 1000 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_Pokey_Anim04,
|
||||||
|
.walk = ANIM_Pokey_Anim08,
|
||||||
|
.run = ANIM_Pokey_Anim08,
|
||||||
|
.chase = ANIM_Pokey_Anim08,
|
||||||
|
.anim_4 = ANIM_Pokey_Anim04,
|
||||||
|
.anim_5 = ANIM_Pokey_Anim04,
|
||||||
|
.death = ANIM_Pokey_Anim0C,
|
||||||
|
.hit = ANIM_Pokey_Anim0C,
|
||||||
|
.anim_8 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_9 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_A = ANIM_Pokey_Anim08,
|
||||||
|
.anim_B = ANIM_Pokey_Anim08,
|
||||||
|
.anim_C = ANIM_Pokey_Anim08,
|
||||||
|
.anim_D = ANIM_Pokey_Anim08,
|
||||||
|
.anim_E = ANIM_Pokey_Anim08,
|
||||||
|
.anim_F = ANIM_Pokey_Anim08,
|
||||||
|
},
|
||||||
|
.aiDetectFlags = AI_DETECT_SIGHT,
|
||||||
|
};
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_Pokey_04) = {
|
||||||
|
.id = NPC_Pokey_04,
|
||||||
|
.settings = &N(NpcSettings_Pokey),
|
||||||
|
.pos = { 165.0f, 0.0f, 300.0f },
|
||||||
|
.yaw = 270,
|
||||||
|
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_PROJECT_SHADOW,
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.itemDropChance = 15,
|
||||||
|
.itemDrops = {
|
||||||
|
{ ITEM_DRIED_FRUIT, 9, 0 },
|
||||||
|
{ ITEM_TASTY_TONIC, 1, 0 },
|
||||||
|
},
|
||||||
|
.heartDrops = STANDARD_HEART_DROPS(2),
|
||||||
|
.flowerDrops = STANDARD_FLOWER_DROPS(2),
|
||||||
|
.minCoinBonus = 0,
|
||||||
|
.maxCoinBonus = 1,
|
||||||
|
},
|
||||||
|
.territory = {
|
||||||
|
.wander = {
|
||||||
|
.isFlying = TRUE,
|
||||||
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||||
|
.wanderShape = SHAPE_CYLINDER,
|
||||||
|
.centerPos = { 165, 0, 300 },
|
||||||
|
.wanderSize = { 100 },
|
||||||
|
.detectShape = SHAPE_CYLINDER,
|
||||||
|
.detectPos = { 0, 0, 0 },
|
||||||
|
.detectSize = { 1000 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_Pokey_Anim04,
|
||||||
|
.walk = ANIM_Pokey_Anim08,
|
||||||
|
.run = ANIM_Pokey_Anim08,
|
||||||
|
.chase = ANIM_Pokey_Anim08,
|
||||||
|
.anim_4 = ANIM_Pokey_Anim04,
|
||||||
|
.anim_5 = ANIM_Pokey_Anim04,
|
||||||
|
.death = ANIM_Pokey_Anim0C,
|
||||||
|
.hit = ANIM_Pokey_Anim0C,
|
||||||
|
.anim_8 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_9 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_A = ANIM_Pokey_Anim08,
|
||||||
|
.anim_B = ANIM_Pokey_Anim08,
|
||||||
|
.anim_C = ANIM_Pokey_Anim08,
|
||||||
|
.anim_D = ANIM_Pokey_Anim08,
|
||||||
|
.anim_E = ANIM_Pokey_Anim08,
|
||||||
|
.anim_F = ANIM_Pokey_Anim08,
|
||||||
|
},
|
||||||
|
.aiDetectFlags = AI_DETECT_SIGHT,
|
||||||
|
};
|
||||||
|
|
||||||
|
NpcGroupList N(DefaultNPCs) = {
|
||||||
|
NPC_GROUP(N(NpcData_Pokey_01), BTL_SBK_FORMATION_00, BTL_SBK_STAGE_00),
|
||||||
|
NPC_GROUP(N(NpcData_Pokey_02), BTL_SBK_FORMATION_03, BTL_SBK_STAGE_00),
|
||||||
|
NPC_GROUP(N(NpcData_Pokey_03), BTL_SBK_FORMATION_02, BTL_SBK_STAGE_00),
|
||||||
|
NPC_GROUP(N(NpcData_Pokey_04), BTL_SBK_FORMATION_01, BTL_SBK_STAGE_00),
|
||||||
|
{}
|
||||||
|
};
|
@ -1,8 +0,0 @@
|
|||||||
#include "sbk_04.h"
|
|
||||||
|
|
||||||
static char* N(exit_str_0) = "sbk_03";
|
|
||||||
static char* N(exit_str_1) = "sbk_05";
|
|
||||||
static char* N(exit_str_2) = "sbk_14";
|
|
||||||
static char* N(exit_str_3) = "";
|
|
||||||
|
|
||||||
#include "world/common/SpawnSunEffect.inc.c"
|
|
@ -1,2 +0,0 @@
|
|||||||
#include "sbk_04.h"
|
|
||||||
#include "world/common/SetNpcB5_3.inc.c"
|
|
@ -2,8 +2,18 @@
|
|||||||
/// @brief Dry Dry Desert - N3E1
|
/// @brief Dry Dry Desert - N3E1
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "../sbk.h"
|
|
||||||
#include "message_ids.h"
|
#include "message_ids.h"
|
||||||
#include "map.h"
|
#include "map.h"
|
||||||
|
|
||||||
|
#include "../sbk.h"
|
||||||
|
#include "mapfs/sbk_04_shape.h"
|
||||||
|
#include "mapfs/sbk_04_hit.h"
|
||||||
|
|
||||||
|
#include "sprite/npc/Pokey.h"
|
||||||
|
|
||||||
|
enum {
|
||||||
|
NPC_Pokey_01 = 0,
|
||||||
|
NPC_Pokey_02 = 1,
|
||||||
|
};
|
||||||
|
|
||||||
#define NAMESPACE sbk_04
|
#define NAMESPACE sbk_04
|
||||||
|
49
src/world/area_sbk/sbk_04/sbk_04_1_main.c
Normal file
49
src/world/area_sbk/sbk_04/sbk_04_1_main.c
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
#include "sbk_04.h"
|
||||||
|
|
||||||
|
extern EvtScript N(EVS_Main);
|
||||||
|
extern NpcGroupList N(DefaultNPCs);
|
||||||
|
|
||||||
|
EntryList N(Entrances) = {
|
||||||
|
[sbk_04_ENTRY_0] { -475.0, 0.0, 0.0, 90.0 },
|
||||||
|
[sbk_04_ENTRY_1] { 475.0, 0.0, 0.0, 270.0 },
|
||||||
|
[sbk_04_ENTRY_2] { 0.0, 0.0, -475.0, 180.0 },
|
||||||
|
[sbk_04_ENTRY_3] { 0.0, 0.0, 475.0, 0.0 },
|
||||||
|
};
|
||||||
|
|
||||||
|
MapSettings N(settings) = {
|
||||||
|
.main = &N(EVS_Main),
|
||||||
|
.entryList = &N(Entrances),
|
||||||
|
.entryCount = ENTRY_COUNT(N(Entrances)),
|
||||||
|
.background = &gBackgroundImage,
|
||||||
|
.tattle = { MSG_MapTattle_sbk_04 },
|
||||||
|
};
|
||||||
|
|
||||||
|
#include "world/common/SpawnSunEffect.inc.c"
|
||||||
|
|
||||||
|
EvtScript N(EVS_ExitWalk_sbk_03_1) = EVT_EXIT_WALK(60, sbk_04_ENTRY_0, "sbk_03", sbk_03_ENTRY_1);
|
||||||
|
EvtScript N(EVS_ExitWalk_sbk_05_0) = EVT_EXIT_WALK(60, sbk_04_ENTRY_1, "sbk_05", sbk_05_ENTRY_0);
|
||||||
|
EvtScript N(EVS_ExitWalk_sbk_14_2) = EVT_EXIT_WALK(60, sbk_04_ENTRY_3, "sbk_14", sbk_14_ENTRY_2);
|
||||||
|
|
||||||
|
EvtScript N(EVS_BindExitTriggers) = {
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_sbk_03_1)), TRIGGER_FLOOR_ABOVE, COLLIDER_deiliw, 1, 0)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_sbk_05_0)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilie, 1, 0)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_sbk_14_2)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilis, 1, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_Main) = {
|
||||||
|
EVT_SET(GB_WorldLocation, LOCATION_DRY_DRY_DESERT)
|
||||||
|
EVT_CALL(SetSpriteShading, SHADING_NONE)
|
||||||
|
EVT_IF_EQ(GB_StoryProgress, STORY_CH2_GOT_PULSE_STONE)
|
||||||
|
EVT_CALL(DisablePulseStone, FALSE)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_SETUP_CAMERA_NO_LEAD()
|
||||||
|
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs)))
|
||||||
|
EVT_CALL(N(SpawnSunEffect))
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8)
|
||||||
|
EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers)))
|
||||||
|
EVT_EXEC(EnterWalk)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
111
src/world/area_sbk/sbk_04/sbk_04_2_npc.c
Normal file
111
src/world/area_sbk/sbk_04/sbk_04_2_npc.c
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
#include "sbk_04.h"
|
||||||
|
|
||||||
|
#include "world/common/enemy/complete/Pokey.inc.c"
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_Pokey_01) = {
|
||||||
|
.id = NPC_Pokey_01,
|
||||||
|
.settings = &N(NpcSettings_Pokey),
|
||||||
|
.pos = { -295.0f, 0.0f, -110.0f },
|
||||||
|
.yaw = 90,
|
||||||
|
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_PROJECT_SHADOW,
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.itemDropChance = 15,
|
||||||
|
.itemDrops = {
|
||||||
|
{ ITEM_DRIED_FRUIT, 9, 0 },
|
||||||
|
{ ITEM_TASTY_TONIC, 1, 0 },
|
||||||
|
},
|
||||||
|
.heartDrops = STANDARD_HEART_DROPS(2),
|
||||||
|
.flowerDrops = STANDARD_FLOWER_DROPS(2),
|
||||||
|
.minCoinBonus = 0,
|
||||||
|
.maxCoinBonus = 1,
|
||||||
|
},
|
||||||
|
.territory = {
|
||||||
|
.wander = {
|
||||||
|
.isFlying = TRUE,
|
||||||
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||||
|
.wanderShape = SHAPE_CYLINDER,
|
||||||
|
.centerPos = { -295, 0, -110 },
|
||||||
|
.wanderSize = { 100 },
|
||||||
|
.detectShape = SHAPE_CYLINDER,
|
||||||
|
.detectPos = { 0, 0, 0 },
|
||||||
|
.detectSize = { 1000 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_Pokey_Anim04,
|
||||||
|
.walk = ANIM_Pokey_Anim08,
|
||||||
|
.run = ANIM_Pokey_Anim08,
|
||||||
|
.chase = ANIM_Pokey_Anim08,
|
||||||
|
.anim_4 = ANIM_Pokey_Anim04,
|
||||||
|
.anim_5 = ANIM_Pokey_Anim04,
|
||||||
|
.death = ANIM_Pokey_Anim0C,
|
||||||
|
.hit = ANIM_Pokey_Anim0C,
|
||||||
|
.anim_8 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_9 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_A = ANIM_Pokey_Anim08,
|
||||||
|
.anim_B = ANIM_Pokey_Anim08,
|
||||||
|
.anim_C = ANIM_Pokey_Anim08,
|
||||||
|
.anim_D = ANIM_Pokey_Anim08,
|
||||||
|
.anim_E = ANIM_Pokey_Anim08,
|
||||||
|
.anim_F = ANIM_Pokey_Anim08,
|
||||||
|
},
|
||||||
|
.aiDetectFlags = AI_DETECT_SIGHT,
|
||||||
|
};
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_Pokey_02) = {
|
||||||
|
.id = NPC_Pokey_02,
|
||||||
|
.settings = &N(NpcSettings_Pokey),
|
||||||
|
.pos = { -140.0f, 0.0f, -30.0f },
|
||||||
|
.yaw = 90,
|
||||||
|
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_PROJECT_SHADOW,
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.itemDropChance = 15,
|
||||||
|
.itemDrops = {
|
||||||
|
{ ITEM_DRIED_FRUIT, 9, 0 },
|
||||||
|
{ ITEM_TASTY_TONIC, 1, 0 },
|
||||||
|
},
|
||||||
|
.heartDrops = STANDARD_HEART_DROPS(2),
|
||||||
|
.flowerDrops = STANDARD_FLOWER_DROPS(2),
|
||||||
|
.minCoinBonus = 0,
|
||||||
|
.maxCoinBonus = 1,
|
||||||
|
},
|
||||||
|
.territory = {
|
||||||
|
.wander = {
|
||||||
|
.isFlying = TRUE,
|
||||||
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||||
|
.wanderShape = SHAPE_CYLINDER,
|
||||||
|
.centerPos = { -140, 0, -30 },
|
||||||
|
.wanderSize = { 100 },
|
||||||
|
.detectShape = SHAPE_CYLINDER,
|
||||||
|
.detectPos = { 0, 0, 0 },
|
||||||
|
.detectSize = { 1000 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_Pokey_Anim04,
|
||||||
|
.walk = ANIM_Pokey_Anim08,
|
||||||
|
.run = ANIM_Pokey_Anim08,
|
||||||
|
.chase = ANIM_Pokey_Anim08,
|
||||||
|
.anim_4 = ANIM_Pokey_Anim04,
|
||||||
|
.anim_5 = ANIM_Pokey_Anim04,
|
||||||
|
.death = ANIM_Pokey_Anim0C,
|
||||||
|
.hit = ANIM_Pokey_Anim0C,
|
||||||
|
.anim_8 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_9 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_A = ANIM_Pokey_Anim08,
|
||||||
|
.anim_B = ANIM_Pokey_Anim08,
|
||||||
|
.anim_C = ANIM_Pokey_Anim08,
|
||||||
|
.anim_D = ANIM_Pokey_Anim08,
|
||||||
|
.anim_E = ANIM_Pokey_Anim08,
|
||||||
|
.anim_F = ANIM_Pokey_Anim08,
|
||||||
|
},
|
||||||
|
.aiDetectFlags = AI_DETECT_SIGHT,
|
||||||
|
};
|
||||||
|
|
||||||
|
NpcGroupList N(DefaultNPCs) = {
|
||||||
|
NPC_GROUP(N(NpcData_Pokey_01), BTL_SBK_FORMATION_01, BTL_SBK_STAGE_00),
|
||||||
|
NPC_GROUP(N(NpcData_Pokey_02), BTL_SBK_FORMATION_01, BTL_SBK_STAGE_00),
|
||||||
|
{}
|
||||||
|
};
|
@ -1,8 +0,0 @@
|
|||||||
#include "sbk_05.h"
|
|
||||||
|
|
||||||
static char* N(exit_str_0) = "sbk_04";
|
|
||||||
static char* N(exit_str_1) = "sbk_06";
|
|
||||||
static char* N(exit_str_2) = "sbk_15";
|
|
||||||
static char* N(exit_str_3) = "";
|
|
||||||
|
|
||||||
#include "world/common/SpawnSunEffect.inc.c"
|
|
@ -1,2 +0,0 @@
|
|||||||
#include "sbk_05.h"
|
|
||||||
#include "world/common/SetNpcB5_3.inc.c"
|
|
@ -2,8 +2,26 @@
|
|||||||
/// @brief Dry Dry Desert - N3E2 Pokey Army
|
/// @brief Dry Dry Desert - N3E2 Pokey Army
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "../sbk.h"
|
|
||||||
#include "message_ids.h"
|
#include "message_ids.h"
|
||||||
#include "map.h"
|
#include "map.h"
|
||||||
|
|
||||||
|
#include "../sbk.h"
|
||||||
|
#include "mapfs/sbk_05_shape.h"
|
||||||
|
#include "mapfs/sbk_05_hit.h"
|
||||||
|
|
||||||
|
#include "sprite/npc/Pokey.h"
|
||||||
|
|
||||||
|
enum {
|
||||||
|
NPC_Pokey_01 = 0,
|
||||||
|
NPC_Pokey_02 = 1,
|
||||||
|
NPC_Pokey_03 = 2,
|
||||||
|
NPC_Pokey_04 = 3,
|
||||||
|
NPC_Pokey_05 = 4,
|
||||||
|
NPC_Pokey_06 = 5,
|
||||||
|
NPC_Pokey_07 = 6,
|
||||||
|
NPC_Pokey_08 = 7,
|
||||||
|
NPC_Pokey_09 = 8,
|
||||||
|
NPC_Pokey_10 = 9,
|
||||||
|
};
|
||||||
|
|
||||||
#define NAMESPACE sbk_05
|
#define NAMESPACE sbk_05
|
||||||
|
65
src/world/area_sbk/sbk_05/sbk_05_1_main.c
Normal file
65
src/world/area_sbk/sbk_05/sbk_05_1_main.c
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
#include "sbk_05.h"
|
||||||
|
|
||||||
|
extern EvtScript N(EVS_Main);
|
||||||
|
extern EvtScript N(EVS_MakeEntities);
|
||||||
|
extern NpcGroupList N(DefaultNPCs);
|
||||||
|
|
||||||
|
EntryList N(Entrances) = {
|
||||||
|
[sbk_05_ENTRY_0] { -475.0, 0.0, 0.0, 90.0 },
|
||||||
|
[sbk_05_ENTRY_1] { 475.0, 0.0, 0.0, 270.0 },
|
||||||
|
[sbk_05_ENTRY_2] { 0.0, 0.0, -475.0, 180.0 },
|
||||||
|
[sbk_05_ENTRY_3] { 0.0, 0.0, 475.0, 0.0 },
|
||||||
|
[sbk_05_ENTRY_4] { 157.0, 200.0, -338.0, 90.0 },
|
||||||
|
};
|
||||||
|
|
||||||
|
MapSettings N(settings) = {
|
||||||
|
.main = &N(EVS_Main),
|
||||||
|
.entryList = &N(Entrances),
|
||||||
|
.entryCount = ENTRY_COUNT(N(Entrances)),
|
||||||
|
.background = &gBackgroundImage,
|
||||||
|
.tattle = { MSG_MapTattle_sbk_05 },
|
||||||
|
};
|
||||||
|
|
||||||
|
#include "world/common/SpawnSunEffect.inc.c"
|
||||||
|
|
||||||
|
EvtScript N(EVS_ExitWalk_sbk_04_1) = EVT_EXIT_WALK(60, sbk_05_ENTRY_0, "sbk_04", sbk_04_ENTRY_1);
|
||||||
|
EvtScript N(EVS_ExitWalk_sbk_06_0) = EVT_EXIT_WALK(60, sbk_05_ENTRY_1, "sbk_06", sbk_06_ENTRY_0);
|
||||||
|
EvtScript N(EVS_ExitWalk_sbk_15_2) = EVT_EXIT_WALK(60, sbk_05_ENTRY_3, "sbk_15", sbk_15_ENTRY_2);
|
||||||
|
|
||||||
|
EvtScript N(EVS_BindExitTriggers) = {
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_sbk_04_1)), TRIGGER_FLOOR_ABOVE, COLLIDER_deiliw, 1, 0)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_sbk_06_0)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilie, 1, 0)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_sbk_15_2)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilis, 1, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(D_80240268_930F58) = {
|
||||||
|
EVT_CALL(GetEntryID, LVar0)
|
||||||
|
EVT_SWITCH(LVar0)
|
||||||
|
EVT_CASE_EQ(sbk_05_ENTRY_4)
|
||||||
|
EVT_EXEC(N(EVS_BindExitTriggers))
|
||||||
|
EVT_CASE_DEFAULT
|
||||||
|
EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers)))
|
||||||
|
EVT_EXEC(EnterWalk)
|
||||||
|
EVT_END_SWITCH
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_Main) = {
|
||||||
|
EVT_SET(GB_WorldLocation, LOCATION_DRY_DRY_DESERT)
|
||||||
|
EVT_CALL(SetSpriteShading, SHADING_NONE)
|
||||||
|
EVT_IF_EQ(GB_StoryProgress, STORY_CH2_GOT_PULSE_STONE)
|
||||||
|
EVT_CALL(DisablePulseStone, FALSE)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_SETUP_CAMERA_NO_LEAD()
|
||||||
|
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs)))
|
||||||
|
EVT_EXEC_WAIT(N(EVS_MakeEntities))
|
||||||
|
EVT_CALL(N(SpawnSunEffect))
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8)
|
||||||
|
EVT_EXEC(N(D_80240268_930F58))
|
||||||
|
EVT_WAIT(1)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
7
src/world/area_sbk/sbk_05/sbk_05_2_entity.c
Normal file
7
src/world/area_sbk/sbk_05/sbk_05_2_entity.c
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#include "sbk_05.h"
|
||||||
|
|
||||||
|
EvtScript N(EVS_MakeEntities) = {
|
||||||
|
EVT_CALL(MakeItemEntity, ITEM_FIRE_FLOWER, -100, 0, -445, ITEM_SPAWN_MODE_FIXED_NEVER_VANISH, GF_SBK05_Item_FireFlower)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
527
src/world/area_sbk/sbk_05/sbk_05_3_npc.c
Normal file
527
src/world/area_sbk/sbk_05/sbk_05_3_npc.c
Normal file
@ -0,0 +1,527 @@
|
|||||||
|
#include "sbk_05.h"
|
||||||
|
|
||||||
|
#include "world/common/enemy/complete/Pokey.inc.c"
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_Pokey_01) = {
|
||||||
|
.id = NPC_Pokey_01,
|
||||||
|
.settings = &N(NpcSettings_Pokey),
|
||||||
|
.pos = { -280.0f, 0.0f, -110.0f },
|
||||||
|
.yaw = 180,
|
||||||
|
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_PROJECT_SHADOW,
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.itemDropChance = 15,
|
||||||
|
.itemDrops = {
|
||||||
|
{ ITEM_DRIED_FRUIT, 9, 0 },
|
||||||
|
{ ITEM_TASTY_TONIC, 1, 0 },
|
||||||
|
},
|
||||||
|
.heartDrops = STANDARD_HEART_DROPS(2),
|
||||||
|
.flowerDrops = STANDARD_FLOWER_DROPS(2),
|
||||||
|
.minCoinBonus = 0,
|
||||||
|
.maxCoinBonus = 1,
|
||||||
|
},
|
||||||
|
.territory = {
|
||||||
|
.wander = {
|
||||||
|
.isFlying = TRUE,
|
||||||
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||||
|
.wanderShape = SHAPE_CYLINDER,
|
||||||
|
.centerPos = { -280, 0, -110 },
|
||||||
|
.wanderSize = { 100 },
|
||||||
|
.detectShape = SHAPE_CYLINDER,
|
||||||
|
.detectPos = { 0, 0, 0 },
|
||||||
|
.detectSize = { 1000 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_Pokey_Anim04,
|
||||||
|
.walk = ANIM_Pokey_Anim08,
|
||||||
|
.run = ANIM_Pokey_Anim08,
|
||||||
|
.chase = ANIM_Pokey_Anim08,
|
||||||
|
.anim_4 = ANIM_Pokey_Anim04,
|
||||||
|
.anim_5 = ANIM_Pokey_Anim04,
|
||||||
|
.death = ANIM_Pokey_Anim0C,
|
||||||
|
.hit = ANIM_Pokey_Anim0C,
|
||||||
|
.anim_8 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_9 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_A = ANIM_Pokey_Anim08,
|
||||||
|
.anim_B = ANIM_Pokey_Anim08,
|
||||||
|
.anim_C = ANIM_Pokey_Anim08,
|
||||||
|
.anim_D = ANIM_Pokey_Anim08,
|
||||||
|
.anim_E = ANIM_Pokey_Anim08,
|
||||||
|
.anim_F = ANIM_Pokey_Anim08,
|
||||||
|
},
|
||||||
|
.aiDetectFlags = AI_DETECT_SIGHT,
|
||||||
|
};
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_Pokey_02) = {
|
||||||
|
.id = NPC_Pokey_02,
|
||||||
|
.settings = &N(NpcSettings_Pokey),
|
||||||
|
.pos = { -200.0f, 0.0f, -80.0f },
|
||||||
|
.yaw = 120,
|
||||||
|
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_PROJECT_SHADOW,
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.itemDropChance = 15,
|
||||||
|
.itemDrops = {
|
||||||
|
{ ITEM_DRIED_FRUIT, 9, 0 },
|
||||||
|
{ ITEM_TASTY_TONIC, 1, 0 },
|
||||||
|
},
|
||||||
|
.heartDrops = STANDARD_HEART_DROPS(2),
|
||||||
|
.flowerDrops = STANDARD_FLOWER_DROPS(2),
|
||||||
|
.minCoinBonus = 0,
|
||||||
|
.maxCoinBonus = 1,
|
||||||
|
},
|
||||||
|
.territory = {
|
||||||
|
.wander = {
|
||||||
|
.isFlying = TRUE,
|
||||||
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||||
|
.wanderShape = SHAPE_CYLINDER,
|
||||||
|
.centerPos = { -200, 0, -80 },
|
||||||
|
.wanderSize = { 100 },
|
||||||
|
.detectShape = SHAPE_CYLINDER,
|
||||||
|
.detectPos = { 0, 0, 0 },
|
||||||
|
.detectSize = { 1000 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_Pokey_Anim04,
|
||||||
|
.walk = ANIM_Pokey_Anim08,
|
||||||
|
.run = ANIM_Pokey_Anim08,
|
||||||
|
.chase = ANIM_Pokey_Anim08,
|
||||||
|
.anim_4 = ANIM_Pokey_Anim04,
|
||||||
|
.anim_5 = ANIM_Pokey_Anim04,
|
||||||
|
.death = ANIM_Pokey_Anim0C,
|
||||||
|
.hit = ANIM_Pokey_Anim0C,
|
||||||
|
.anim_8 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_9 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_A = ANIM_Pokey_Anim08,
|
||||||
|
.anim_B = ANIM_Pokey_Anim08,
|
||||||
|
.anim_C = ANIM_Pokey_Anim08,
|
||||||
|
.anim_D = ANIM_Pokey_Anim08,
|
||||||
|
.anim_E = ANIM_Pokey_Anim08,
|
||||||
|
.anim_F = ANIM_Pokey_Anim08,
|
||||||
|
},
|
||||||
|
.aiDetectFlags = AI_DETECT_SIGHT,
|
||||||
|
};
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_Pokey_03) = {
|
||||||
|
.id = NPC_Pokey_03,
|
||||||
|
.settings = &N(NpcSettings_Pokey),
|
||||||
|
.pos = { -160.0f, 0.0f, -225.0f },
|
||||||
|
.yaw = 90,
|
||||||
|
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_PROJECT_SHADOW,
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.itemDropChance = 15,
|
||||||
|
.itemDrops = {
|
||||||
|
{ ITEM_DRIED_FRUIT, 9, 0 },
|
||||||
|
{ ITEM_TASTY_TONIC, 1, 0 },
|
||||||
|
},
|
||||||
|
.heartDrops = STANDARD_HEART_DROPS(2),
|
||||||
|
.flowerDrops = STANDARD_FLOWER_DROPS(2),
|
||||||
|
.minCoinBonus = 0,
|
||||||
|
.maxCoinBonus = 1,
|
||||||
|
},
|
||||||
|
.territory = {
|
||||||
|
.wander = {
|
||||||
|
.isFlying = TRUE,
|
||||||
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||||
|
.wanderShape = SHAPE_CYLINDER,
|
||||||
|
.centerPos = { -160, 0, -225 },
|
||||||
|
.wanderSize = { 100 },
|
||||||
|
.detectShape = SHAPE_CYLINDER,
|
||||||
|
.detectPos = { 0, 0, 0 },
|
||||||
|
.detectSize = { 1000 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_Pokey_Anim04,
|
||||||
|
.walk = ANIM_Pokey_Anim08,
|
||||||
|
.run = ANIM_Pokey_Anim08,
|
||||||
|
.chase = ANIM_Pokey_Anim08,
|
||||||
|
.anim_4 = ANIM_Pokey_Anim04,
|
||||||
|
.anim_5 = ANIM_Pokey_Anim04,
|
||||||
|
.death = ANIM_Pokey_Anim0C,
|
||||||
|
.hit = ANIM_Pokey_Anim0C,
|
||||||
|
.anim_8 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_9 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_A = ANIM_Pokey_Anim08,
|
||||||
|
.anim_B = ANIM_Pokey_Anim08,
|
||||||
|
.anim_C = ANIM_Pokey_Anim08,
|
||||||
|
.anim_D = ANIM_Pokey_Anim08,
|
||||||
|
.anim_E = ANIM_Pokey_Anim08,
|
||||||
|
.anim_F = ANIM_Pokey_Anim08,
|
||||||
|
},
|
||||||
|
.aiDetectFlags = AI_DETECT_SIGHT,
|
||||||
|
};
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_Pokey_04) = {
|
||||||
|
.id = NPC_Pokey_04,
|
||||||
|
.settings = &N(NpcSettings_Pokey),
|
||||||
|
.pos = { -100.0f, 0.0f, 70.0f },
|
||||||
|
.yaw = 270,
|
||||||
|
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_PROJECT_SHADOW,
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.itemDropChance = 15,
|
||||||
|
.itemDrops = {
|
||||||
|
{ ITEM_DRIED_FRUIT, 9, 0 },
|
||||||
|
{ ITEM_TASTY_TONIC, 1, 0 },
|
||||||
|
},
|
||||||
|
.heartDrops = STANDARD_HEART_DROPS(2),
|
||||||
|
.flowerDrops = STANDARD_FLOWER_DROPS(2),
|
||||||
|
.minCoinBonus = 0,
|
||||||
|
.maxCoinBonus = 1,
|
||||||
|
},
|
||||||
|
.territory = {
|
||||||
|
.wander = {
|
||||||
|
.isFlying = TRUE,
|
||||||
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||||
|
.wanderShape = SHAPE_CYLINDER,
|
||||||
|
.centerPos = { -100, 0, 70 },
|
||||||
|
.wanderSize = { 100 },
|
||||||
|
.detectShape = SHAPE_CYLINDER,
|
||||||
|
.detectPos = { 0, 0, 0 },
|
||||||
|
.detectSize = { 1000 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_Pokey_Anim04,
|
||||||
|
.walk = ANIM_Pokey_Anim08,
|
||||||
|
.run = ANIM_Pokey_Anim08,
|
||||||
|
.chase = ANIM_Pokey_Anim08,
|
||||||
|
.anim_4 = ANIM_Pokey_Anim04,
|
||||||
|
.anim_5 = ANIM_Pokey_Anim04,
|
||||||
|
.death = ANIM_Pokey_Anim0C,
|
||||||
|
.hit = ANIM_Pokey_Anim0C,
|
||||||
|
.anim_8 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_9 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_A = ANIM_Pokey_Anim08,
|
||||||
|
.anim_B = ANIM_Pokey_Anim08,
|
||||||
|
.anim_C = ANIM_Pokey_Anim08,
|
||||||
|
.anim_D = ANIM_Pokey_Anim08,
|
||||||
|
.anim_E = ANIM_Pokey_Anim08,
|
||||||
|
.anim_F = ANIM_Pokey_Anim08,
|
||||||
|
},
|
||||||
|
.aiDetectFlags = AI_DETECT_SIGHT,
|
||||||
|
};
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_Pokey_05) = {
|
||||||
|
.id = NPC_Pokey_05,
|
||||||
|
.settings = &N(NpcSettings_Pokey),
|
||||||
|
.pos = { -10.0f, 0.0f, 30.0f },
|
||||||
|
.yaw = 80,
|
||||||
|
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_PROJECT_SHADOW,
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.itemDropChance = 15,
|
||||||
|
.itemDrops = {
|
||||||
|
{ ITEM_DRIED_FRUIT, 9, 0 },
|
||||||
|
{ ITEM_TASTY_TONIC, 1, 0 },
|
||||||
|
},
|
||||||
|
.heartDrops = STANDARD_HEART_DROPS(2),
|
||||||
|
.flowerDrops = STANDARD_FLOWER_DROPS(2),
|
||||||
|
.minCoinBonus = 0,
|
||||||
|
.maxCoinBonus = 1,
|
||||||
|
},
|
||||||
|
.territory = {
|
||||||
|
.wander = {
|
||||||
|
.isFlying = TRUE,
|
||||||
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||||
|
.wanderShape = SHAPE_CYLINDER,
|
||||||
|
.centerPos = { -10, 0, 30 },
|
||||||
|
.wanderSize = { 100 },
|
||||||
|
.detectShape = SHAPE_CYLINDER,
|
||||||
|
.detectPos = { 0, 0, 0 },
|
||||||
|
.detectSize = { 1000 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_Pokey_Anim04,
|
||||||
|
.walk = ANIM_Pokey_Anim08,
|
||||||
|
.run = ANIM_Pokey_Anim08,
|
||||||
|
.chase = ANIM_Pokey_Anim08,
|
||||||
|
.anim_4 = ANIM_Pokey_Anim04,
|
||||||
|
.anim_5 = ANIM_Pokey_Anim04,
|
||||||
|
.death = ANIM_Pokey_Anim0C,
|
||||||
|
.hit = ANIM_Pokey_Anim0C,
|
||||||
|
.anim_8 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_9 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_A = ANIM_Pokey_Anim08,
|
||||||
|
.anim_B = ANIM_Pokey_Anim08,
|
||||||
|
.anim_C = ANIM_Pokey_Anim08,
|
||||||
|
.anim_D = ANIM_Pokey_Anim08,
|
||||||
|
.anim_E = ANIM_Pokey_Anim08,
|
||||||
|
.anim_F = ANIM_Pokey_Anim08,
|
||||||
|
},
|
||||||
|
.aiDetectFlags = AI_DETECT_SIGHT,
|
||||||
|
};
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_Pokey_06) = {
|
||||||
|
.id = NPC_Pokey_06,
|
||||||
|
.settings = &N(NpcSettings_Pokey),
|
||||||
|
.pos = { 20.0f, 0.0f, -110.0f },
|
||||||
|
.yaw = 270,
|
||||||
|
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_PROJECT_SHADOW,
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.itemDropChance = 15,
|
||||||
|
.itemDrops = {
|
||||||
|
{ ITEM_DRIED_FRUIT, 9, 0 },
|
||||||
|
{ ITEM_TASTY_TONIC, 1, 0 },
|
||||||
|
},
|
||||||
|
.heartDrops = STANDARD_HEART_DROPS(2),
|
||||||
|
.flowerDrops = STANDARD_FLOWER_DROPS(2),
|
||||||
|
.minCoinBonus = 0,
|
||||||
|
.maxCoinBonus = 1,
|
||||||
|
},
|
||||||
|
.territory = {
|
||||||
|
.wander = {
|
||||||
|
.isFlying = TRUE,
|
||||||
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||||
|
.wanderShape = SHAPE_CYLINDER,
|
||||||
|
.centerPos = { 20, 0, -110 },
|
||||||
|
.wanderSize = { 100 },
|
||||||
|
.detectShape = SHAPE_CYLINDER,
|
||||||
|
.detectPos = { 0, 0, 0 },
|
||||||
|
.detectSize = { 1000 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_Pokey_Anim04,
|
||||||
|
.walk = ANIM_Pokey_Anim08,
|
||||||
|
.run = ANIM_Pokey_Anim08,
|
||||||
|
.chase = ANIM_Pokey_Anim08,
|
||||||
|
.anim_4 = ANIM_Pokey_Anim04,
|
||||||
|
.anim_5 = ANIM_Pokey_Anim04,
|
||||||
|
.death = ANIM_Pokey_Anim0C,
|
||||||
|
.hit = ANIM_Pokey_Anim0C,
|
||||||
|
.anim_8 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_9 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_A = ANIM_Pokey_Anim08,
|
||||||
|
.anim_B = ANIM_Pokey_Anim08,
|
||||||
|
.anim_C = ANIM_Pokey_Anim08,
|
||||||
|
.anim_D = ANIM_Pokey_Anim08,
|
||||||
|
.anim_E = ANIM_Pokey_Anim08,
|
||||||
|
.anim_F = ANIM_Pokey_Anim08,
|
||||||
|
},
|
||||||
|
.aiDetectFlags = AI_DETECT_SIGHT,
|
||||||
|
};
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_Pokey_07) = {
|
||||||
|
.id = NPC_Pokey_07,
|
||||||
|
.settings = &N(NpcSettings_Pokey),
|
||||||
|
.pos = { 170.0f, 0.0f, -50.0f },
|
||||||
|
.yaw = 90,
|
||||||
|
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_PROJECT_SHADOW,
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.itemDropChance = 15,
|
||||||
|
.itemDrops = {
|
||||||
|
{ ITEM_DRIED_FRUIT, 9, 0 },
|
||||||
|
{ ITEM_TASTY_TONIC, 1, 0 },
|
||||||
|
},
|
||||||
|
.heartDrops = STANDARD_HEART_DROPS(2),
|
||||||
|
.flowerDrops = STANDARD_FLOWER_DROPS(2),
|
||||||
|
.minCoinBonus = 0,
|
||||||
|
.maxCoinBonus = 1,
|
||||||
|
},
|
||||||
|
.territory = {
|
||||||
|
.wander = {
|
||||||
|
.isFlying = TRUE,
|
||||||
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||||
|
.wanderShape = SHAPE_CYLINDER,
|
||||||
|
.centerPos = { 170, 0, -50 },
|
||||||
|
.wanderSize = { 100 },
|
||||||
|
.detectShape = SHAPE_CYLINDER,
|
||||||
|
.detectPos = { 0, 0, 0 },
|
||||||
|
.detectSize = { 1000 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_Pokey_Anim04,
|
||||||
|
.walk = ANIM_Pokey_Anim08,
|
||||||
|
.run = ANIM_Pokey_Anim08,
|
||||||
|
.chase = ANIM_Pokey_Anim08,
|
||||||
|
.anim_4 = ANIM_Pokey_Anim04,
|
||||||
|
.anim_5 = ANIM_Pokey_Anim04,
|
||||||
|
.death = ANIM_Pokey_Anim0C,
|
||||||
|
.hit = ANIM_Pokey_Anim0C,
|
||||||
|
.anim_8 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_9 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_A = ANIM_Pokey_Anim08,
|
||||||
|
.anim_B = ANIM_Pokey_Anim08,
|
||||||
|
.anim_C = ANIM_Pokey_Anim08,
|
||||||
|
.anim_D = ANIM_Pokey_Anim08,
|
||||||
|
.anim_E = ANIM_Pokey_Anim08,
|
||||||
|
.anim_F = ANIM_Pokey_Anim08,
|
||||||
|
},
|
||||||
|
.aiDetectFlags = AI_DETECT_SIGHT,
|
||||||
|
};
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_Pokey_08) = {
|
||||||
|
.id = NPC_Pokey_08,
|
||||||
|
.settings = &N(NpcSettings_Pokey),
|
||||||
|
.pos = { 250.0f, 0.0f, 130.0f },
|
||||||
|
.yaw = 90,
|
||||||
|
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_PROJECT_SHADOW,
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.itemDropChance = 15,
|
||||||
|
.itemDrops = {
|
||||||
|
{ ITEM_DRIED_FRUIT, 9, 0 },
|
||||||
|
{ ITEM_TASTY_TONIC, 1, 0 },
|
||||||
|
},
|
||||||
|
.heartDrops = STANDARD_HEART_DROPS(2),
|
||||||
|
.flowerDrops = STANDARD_FLOWER_DROPS(2),
|
||||||
|
.minCoinBonus = 0,
|
||||||
|
.maxCoinBonus = 1,
|
||||||
|
},
|
||||||
|
.territory = {
|
||||||
|
.wander = {
|
||||||
|
.isFlying = TRUE,
|
||||||
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||||
|
.wanderShape = SHAPE_CYLINDER,
|
||||||
|
.centerPos = { 250, 0, 130 },
|
||||||
|
.wanderSize = { 100 },
|
||||||
|
.detectShape = SHAPE_CYLINDER,
|
||||||
|
.detectPos = { 0, 0, 0 },
|
||||||
|
.detectSize = { 1000 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_Pokey_Anim04,
|
||||||
|
.walk = ANIM_Pokey_Anim08,
|
||||||
|
.run = ANIM_Pokey_Anim08,
|
||||||
|
.chase = ANIM_Pokey_Anim08,
|
||||||
|
.anim_4 = ANIM_Pokey_Anim04,
|
||||||
|
.anim_5 = ANIM_Pokey_Anim04,
|
||||||
|
.death = ANIM_Pokey_Anim0C,
|
||||||
|
.hit = ANIM_Pokey_Anim0C,
|
||||||
|
.anim_8 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_9 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_A = ANIM_Pokey_Anim08,
|
||||||
|
.anim_B = ANIM_Pokey_Anim08,
|
||||||
|
.anim_C = ANIM_Pokey_Anim08,
|
||||||
|
.anim_D = ANIM_Pokey_Anim08,
|
||||||
|
.anim_E = ANIM_Pokey_Anim08,
|
||||||
|
.anim_F = ANIM_Pokey_Anim08,
|
||||||
|
},
|
||||||
|
.aiDetectFlags = AI_DETECT_SIGHT,
|
||||||
|
};
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_Pokey_09) = {
|
||||||
|
.id = NPC_Pokey_09,
|
||||||
|
.settings = &N(NpcSettings_Pokey),
|
||||||
|
.pos = { 340.0f, 0.0f, 200.0f },
|
||||||
|
.yaw = 90,
|
||||||
|
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_PROJECT_SHADOW,
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.itemDropChance = 15,
|
||||||
|
.itemDrops = {
|
||||||
|
{ ITEM_DRIED_FRUIT, 9, 0 },
|
||||||
|
{ ITEM_TASTY_TONIC, 1, 0 },
|
||||||
|
},
|
||||||
|
.heartDrops = STANDARD_HEART_DROPS(2),
|
||||||
|
.flowerDrops = STANDARD_FLOWER_DROPS(2),
|
||||||
|
.minCoinBonus = 0,
|
||||||
|
.maxCoinBonus = 1,
|
||||||
|
},
|
||||||
|
.territory = {
|
||||||
|
.wander = {
|
||||||
|
.isFlying = TRUE,
|
||||||
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||||
|
.wanderShape = SHAPE_CYLINDER,
|
||||||
|
.centerPos = { 340, 0, 200 },
|
||||||
|
.wanderSize = { 100 },
|
||||||
|
.detectShape = SHAPE_CYLINDER,
|
||||||
|
.detectPos = { 0, 0, 0 },
|
||||||
|
.detectSize = { 1000 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_Pokey_Anim04,
|
||||||
|
.walk = ANIM_Pokey_Anim08,
|
||||||
|
.run = ANIM_Pokey_Anim08,
|
||||||
|
.chase = ANIM_Pokey_Anim08,
|
||||||
|
.anim_4 = ANIM_Pokey_Anim04,
|
||||||
|
.anim_5 = ANIM_Pokey_Anim04,
|
||||||
|
.death = ANIM_Pokey_Anim0C,
|
||||||
|
.hit = ANIM_Pokey_Anim0C,
|
||||||
|
.anim_8 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_9 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_A = ANIM_Pokey_Anim08,
|
||||||
|
.anim_B = ANIM_Pokey_Anim08,
|
||||||
|
.anim_C = ANIM_Pokey_Anim08,
|
||||||
|
.anim_D = ANIM_Pokey_Anim08,
|
||||||
|
.anim_E = ANIM_Pokey_Anim08,
|
||||||
|
.anim_F = ANIM_Pokey_Anim08,
|
||||||
|
},
|
||||||
|
.aiDetectFlags = AI_DETECT_SIGHT,
|
||||||
|
};
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_Pokey_10) = {
|
||||||
|
.id = NPC_Pokey_10,
|
||||||
|
.settings = &N(NpcSettings_Pokey),
|
||||||
|
.pos = { -150.0f, 0.0f, 360.0f },
|
||||||
|
.yaw = 270,
|
||||||
|
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_PROJECT_SHADOW,
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.itemDropChance = 15,
|
||||||
|
.itemDrops = {
|
||||||
|
{ ITEM_DRIED_FRUIT, 9, 0 },
|
||||||
|
{ ITEM_TASTY_TONIC, 1, 0 },
|
||||||
|
},
|
||||||
|
.heartDrops = STANDARD_HEART_DROPS(2),
|
||||||
|
.flowerDrops = STANDARD_FLOWER_DROPS(2),
|
||||||
|
.minCoinBonus = 0,
|
||||||
|
.maxCoinBonus = 1,
|
||||||
|
},
|
||||||
|
.territory = {
|
||||||
|
.wander = {
|
||||||
|
.isFlying = TRUE,
|
||||||
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||||
|
.wanderShape = SHAPE_CYLINDER,
|
||||||
|
.centerPos = { -150, 0, 360 },
|
||||||
|
.wanderSize = { 100 },
|
||||||
|
.detectShape = SHAPE_CYLINDER,
|
||||||
|
.detectPos = { 0, 0, 0 },
|
||||||
|
.detectSize = { 1000 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_Pokey_Anim04,
|
||||||
|
.walk = ANIM_Pokey_Anim08,
|
||||||
|
.run = ANIM_Pokey_Anim08,
|
||||||
|
.chase = ANIM_Pokey_Anim08,
|
||||||
|
.anim_4 = ANIM_Pokey_Anim04,
|
||||||
|
.anim_5 = ANIM_Pokey_Anim04,
|
||||||
|
.death = ANIM_Pokey_Anim0C,
|
||||||
|
.hit = ANIM_Pokey_Anim0C,
|
||||||
|
.anim_8 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_9 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_A = ANIM_Pokey_Anim08,
|
||||||
|
.anim_B = ANIM_Pokey_Anim08,
|
||||||
|
.anim_C = ANIM_Pokey_Anim08,
|
||||||
|
.anim_D = ANIM_Pokey_Anim08,
|
||||||
|
.anim_E = ANIM_Pokey_Anim08,
|
||||||
|
.anim_F = ANIM_Pokey_Anim08,
|
||||||
|
},
|
||||||
|
.aiDetectFlags = AI_DETECT_SIGHT,
|
||||||
|
};
|
||||||
|
|
||||||
|
NpcGroupList N(DefaultNPCs) = {
|
||||||
|
NPC_GROUP(N(NpcData_Pokey_01), BTL_SBK_FORMATION_00, BTL_SBK_STAGE_00),
|
||||||
|
NPC_GROUP(N(NpcData_Pokey_02), BTL_SBK_FORMATION_00, BTL_SBK_STAGE_00),
|
||||||
|
NPC_GROUP(N(NpcData_Pokey_03), BTL_SBK_FORMATION_00, BTL_SBK_STAGE_00),
|
||||||
|
NPC_GROUP(N(NpcData_Pokey_04), BTL_SBK_FORMATION_02, BTL_SBK_STAGE_00),
|
||||||
|
NPC_GROUP(N(NpcData_Pokey_05), BTL_SBK_FORMATION_02, BTL_SBK_STAGE_00),
|
||||||
|
NPC_GROUP(N(NpcData_Pokey_06), BTL_SBK_FORMATION_03, BTL_SBK_STAGE_00),
|
||||||
|
NPC_GROUP(N(NpcData_Pokey_07), BTL_SBK_FORMATION_01, BTL_SBK_STAGE_00),
|
||||||
|
NPC_GROUP(N(NpcData_Pokey_08), BTL_SBK_FORMATION_01, BTL_SBK_STAGE_00),
|
||||||
|
NPC_GROUP(N(NpcData_Pokey_09), BTL_SBK_FORMATION_01, BTL_SBK_STAGE_00),
|
||||||
|
NPC_GROUP(N(NpcData_Pokey_10), BTL_SBK_FORMATION_01, BTL_SBK_STAGE_00),
|
||||||
|
{}
|
||||||
|
};
|
@ -1,6 +0,0 @@
|
|||||||
#include "sbk_06.h"
|
|
||||||
|
|
||||||
static char* N(exit_str_0) = "sbk_05";
|
|
||||||
static char* N(exit_str_1) = "sbk_16";
|
|
||||||
|
|
||||||
#include "world/common/SpawnSunEffect.inc.c"
|
|
@ -1,4 +0,0 @@
|
|||||||
#include "sbk_06.h"
|
|
||||||
#include "world/common/Bandit_DropCoin.inc.c"
|
|
||||||
|
|
||||||
#include "common/foliage.inc.c"
|
|
@ -2,8 +2,17 @@
|
|||||||
/// @brief Dry Dry Desert - N3E3
|
/// @brief Dry Dry Desert - N3E3
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "../sbk.h"
|
|
||||||
#include "message_ids.h"
|
#include "message_ids.h"
|
||||||
#include "map.h"
|
#include "map.h"
|
||||||
|
|
||||||
|
#include "../sbk.h"
|
||||||
|
#include "mapfs/sbk_06_shape.h"
|
||||||
|
#include "mapfs/sbk_06_hit.h"
|
||||||
|
|
||||||
|
#include "sprite/npc/Bandit.h"
|
||||||
|
|
||||||
|
enum {
|
||||||
|
NPC_Bandit = 0,
|
||||||
|
};
|
||||||
|
|
||||||
#define NAMESPACE sbk_06
|
#define NAMESPACE sbk_06
|
||||||
|
51
src/world/area_sbk/sbk_06/sbk_06_1_main.c
Normal file
51
src/world/area_sbk/sbk_06/sbk_06_1_main.c
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
#include "sbk_06.h"
|
||||||
|
|
||||||
|
extern EvtScript N(EVS_Main);
|
||||||
|
extern NpcGroupList N(DefaultNPCs);
|
||||||
|
extern EvtScript N(EVS_SetupFoliage);
|
||||||
|
extern EvtScript N(EVS_MakeEntities);
|
||||||
|
|
||||||
|
EntryList N(Entrances) = {
|
||||||
|
[sbk_06_ENTRY_0] { -475.0, 0.0, 0.0, 90.0 },
|
||||||
|
[sbk_06_ENTRY_1] { 475.0, 0.0, 0.0, 270.0 },
|
||||||
|
[sbk_06_ENTRY_2] { 0.0, 0.0, -475.0, 180.0 },
|
||||||
|
[sbk_06_ENTRY_3] { 0.0, 0.0, 475.0, 0.0 },
|
||||||
|
};
|
||||||
|
|
||||||
|
MapSettings N(settings) = {
|
||||||
|
.main = &N(EVS_Main),
|
||||||
|
.entryList = &N(Entrances),
|
||||||
|
.entryCount = ENTRY_COUNT(N(Entrances)),
|
||||||
|
.background = &gBackgroundImage,
|
||||||
|
.tattle = { MSG_MapTattle_sbk_06 },
|
||||||
|
};
|
||||||
|
|
||||||
|
#include "world/common/SpawnSunEffect.inc.c"
|
||||||
|
|
||||||
|
EvtScript N(EVS_ExitWalk_sbk_05_1) = EVT_EXIT_WALK(60, sbk_06_ENTRY_0, "sbk_05", sbk_05_ENTRY_1);
|
||||||
|
EvtScript N(EVS_ExitWalk_sbk_16_2) = EVT_EXIT_WALK(60, sbk_06_ENTRY_3, "sbk_16", sbk_16_ENTRY_2);
|
||||||
|
|
||||||
|
EvtScript N(EVS_BindExitTriggers) = {
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_sbk_05_1)), TRIGGER_FLOOR_ABOVE, COLLIDER_deiliw, 1, 0)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_sbk_16_2)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilis, 1, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_Main) = {
|
||||||
|
EVT_SET(GB_WorldLocation, LOCATION_DRY_DRY_DESERT)
|
||||||
|
EVT_CALL(SetSpriteShading, SHADING_NONE)
|
||||||
|
EVT_IF_EQ(GB_StoryProgress, STORY_CH2_GOT_PULSE_STONE)
|
||||||
|
EVT_CALL(DisablePulseStone, FALSE)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_SETUP_CAMERA_NO_LEAD()
|
||||||
|
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs)))
|
||||||
|
EVT_EXEC_WAIT(N(EVS_MakeEntities))
|
||||||
|
EVT_CALL(N(SpawnSunEffect))
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8)
|
||||||
|
EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers)))
|
||||||
|
EVT_EXEC(EnterWalk)
|
||||||
|
EVT_EXEC(N(EVS_SetupFoliage))
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
58
src/world/area_sbk/sbk_06/sbk_06_2_npc.c
Normal file
58
src/world/area_sbk/sbk_06/sbk_06_2_npc.c
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
#include "sbk_06.h"
|
||||||
|
|
||||||
|
#include "world/common/enemy/complete/Bandit.inc.c"
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_Bandit) = {
|
||||||
|
.id = NPC_Bandit,
|
||||||
|
.settings = &N(NpcSettings_Bandit),
|
||||||
|
.pos = { -200.0f, 0.0f, 230.0f },
|
||||||
|
.yaw = 90,
|
||||||
|
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_PROJECT_SHADOW,
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.itemDropChance = 5,
|
||||||
|
.itemDrops = {
|
||||||
|
{ ITEM_HONEY_SYRUP, 10, 0 },
|
||||||
|
},
|
||||||
|
.heartDrops = STANDARD_HEART_DROPS(2),
|
||||||
|
.flowerDrops = STANDARD_FLOWER_DROPS(2),
|
||||||
|
.minCoinBonus = 1,
|
||||||
|
.maxCoinBonus = 3,
|
||||||
|
},
|
||||||
|
.territory = {
|
||||||
|
.wander = {
|
||||||
|
.isFlying = TRUE,
|
||||||
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||||
|
.wanderShape = SHAPE_CYLINDER,
|
||||||
|
.centerPos = { -200, 0, 230 },
|
||||||
|
.wanderSize = { 100 },
|
||||||
|
.detectShape = SHAPE_CYLINDER,
|
||||||
|
.detectPos = { 0, 0, 0 },
|
||||||
|
.detectSize = { 1000 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_Bandit_Anim01,
|
||||||
|
.walk = ANIM_Bandit_Anim05,
|
||||||
|
.run = ANIM_Bandit_Anim07,
|
||||||
|
.chase = ANIM_Bandit_Anim07,
|
||||||
|
.anim_4 = ANIM_Bandit_Anim01,
|
||||||
|
.anim_5 = ANIM_Bandit_Anim01,
|
||||||
|
.death = ANIM_Bandit_Anim09,
|
||||||
|
.hit = ANIM_Bandit_Anim09,
|
||||||
|
.anim_8 = ANIM_Bandit_Anim00,
|
||||||
|
.anim_9 = ANIM_Bandit_Anim00,
|
||||||
|
.anim_A = ANIM_Bandit_Anim00,
|
||||||
|
.anim_B = ANIM_Bandit_Anim00,
|
||||||
|
.anim_C = ANIM_Bandit_Anim00,
|
||||||
|
.anim_D = ANIM_Bandit_Anim00,
|
||||||
|
.anim_E = ANIM_Bandit_Anim00,
|
||||||
|
.anim_F = ANIM_Bandit_Anim00,
|
||||||
|
},
|
||||||
|
.aiDetectFlags = AI_DETECT_SIGHT,
|
||||||
|
};
|
||||||
|
|
||||||
|
NpcGroupList N(DefaultNPCs) = {
|
||||||
|
NPC_GROUP(N(NpcData_Bandit), BTL_SBK_FORMATION_0C, BTL_SBK_STAGE_00),
|
||||||
|
{}
|
||||||
|
};
|
48
src/world/area_sbk/sbk_06/sbk_06_3_foliage.c
Normal file
48
src/world/area_sbk/sbk_06/sbk_06_3_foliage.c
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
#include "sbk_06.h"
|
||||||
|
|
||||||
|
#include "common/foliage.inc.c"
|
||||||
|
|
||||||
|
FoliageModelList N(Tree1_LeafModels) = {
|
||||||
|
.count = 1,
|
||||||
|
.models = {
|
||||||
|
MODEL_o58,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
FoliageModelList N(Tree1_TrunkModels) = {
|
||||||
|
.count = 1,
|
||||||
|
.models = {
|
||||||
|
MODEL_o57,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
FoliageDropList N(Tree1_Drops) = {
|
||||||
|
.count = 1,
|
||||||
|
.drops = {
|
||||||
|
{
|
||||||
|
.itemID = ITEM_COIN,
|
||||||
|
.pos = { 205, 100, -310 },
|
||||||
|
.spawnMode = ITEM_SPAWN_MODE_FALL_SPAWN_ONCE,
|
||||||
|
.pickupFlag = GF_SBK06_Tree1_Coin,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
ShakeTreeConfig N(ShakeTree_Tree1) = {
|
||||||
|
.leaves = &N(Tree1_LeafModels),
|
||||||
|
.trunk = &N(Tree1_TrunkModels),
|
||||||
|
.drops = &N(Tree1_Drops),
|
||||||
|
};
|
||||||
|
|
||||||
|
BombTrigger N(BombPos_Tree1) = {
|
||||||
|
.pos = { 228.0f, 0.0f, -306.0f },
|
||||||
|
.radius = 0.0f
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_SetupFoliage) = {
|
||||||
|
EVT_SET(LVar0, EVT_PTR(N(ShakeTree_Tree1)))
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(shakeTree)), TRIGGER_WALL_HAMMER, COLLIDER_o191, 1, 0)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(shakeTree)), TRIGGER_POINT_BOMB, EVT_PTR(N(BombPos_Tree1)), 1, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
14
src/world/area_sbk/sbk_06/sbk_06_4_entity.c
Normal file
14
src/world/area_sbk/sbk_06/sbk_06_4_entity.c
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#include "sbk_06.h"
|
||||||
|
#include "entity.h"
|
||||||
|
|
||||||
|
EvtScript N(EVS_MakeEntities) = {
|
||||||
|
EVT_CALL(MakeEntity, EVT_PTR(Entity_MulticoinBlock), 135, 60, -205, 0, MAKE_ENTITY_END)
|
||||||
|
EVT_CALL(AssignBlockFlag, GF_SBK06_MultiCoinBrick)
|
||||||
|
EVT_CALL(MakeEntity, EVT_PTR(Entity_BrickBlock), -20, 60, -250, 0, MAKE_ENTITY_END)
|
||||||
|
EVT_CALL(MakeEntity, EVT_PTR(Entity_BrickBlock), 220, 60, 65, 0, MAKE_ENTITY_END)
|
||||||
|
EVT_CALL(MakeEntity, EVT_PTR(Entity_BrickBlock), 90, 60, 220, 0, MAKE_ENTITY_END)
|
||||||
|
EVT_CALL(MakeEntity, EVT_PTR(Entity_BrickBlock), -70, 60, 100, 0, MAKE_ENTITY_END)
|
||||||
|
EVT_CALL(MakeEntity, EVT_PTR(Entity_BrickBlock), -370, 60, 150, 0, MAKE_ENTITY_END)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
@ -1,8 +0,0 @@
|
|||||||
#include "sbk_10.h"
|
|
||||||
|
|
||||||
static char* N(exit_str_0) = "sbk_11";
|
|
||||||
static char* N(exit_str_1) = "sbk_00";
|
|
||||||
static char* N(exit_str_2) = "sbk_20";
|
|
||||||
static char* N(exit_str_3) = "";
|
|
||||||
|
|
||||||
#include "world/common/SpawnSunEffect.inc.c"
|
|
@ -2,8 +2,11 @@
|
|||||||
/// @brief Dry Dry Desert - N2W3
|
/// @brief Dry Dry Desert - N2W3
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "../sbk.h"
|
|
||||||
#include "message_ids.h"
|
#include "message_ids.h"
|
||||||
#include "map.h"
|
#include "map.h"
|
||||||
|
|
||||||
|
#include "../sbk.h"
|
||||||
|
#include "mapfs/sbk_10_shape.h"
|
||||||
|
#include "mapfs/sbk_10_hit.h"
|
||||||
|
|
||||||
#define NAMESPACE sbk_10
|
#define NAMESPACE sbk_10
|
||||||
|
49
src/world/area_sbk/sbk_10/sbk_10_1_main.c
Normal file
49
src/world/area_sbk/sbk_10/sbk_10_1_main.c
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
#include "sbk_10.h"
|
||||||
|
|
||||||
|
extern EvtScript N(EVS_Main);
|
||||||
|
extern EvtScript N(EVS_MakeEntities);
|
||||||
|
|
||||||
|
EntryList N(Entrances) = {
|
||||||
|
[sbk_10_ENTRY_0] { -475.0, 0.0, 0.0, 90.0 },
|
||||||
|
[sbk_10_ENTRY_1] { 475.0, 0.0, 0.0, 270.0 },
|
||||||
|
[sbk_10_ENTRY_2] { 0.0, 0.0, -475.0, 180.0 },
|
||||||
|
[sbk_10_ENTRY_3] { 0.0, 0.0, 475.0, 0.0 },
|
||||||
|
};
|
||||||
|
|
||||||
|
MapSettings N(settings) = {
|
||||||
|
.main = &N(EVS_Main),
|
||||||
|
.entryList = &N(Entrances),
|
||||||
|
.entryCount = ENTRY_COUNT(N(Entrances)),
|
||||||
|
.background = &gBackgroundImage,
|
||||||
|
.tattle = { MSG_MapTattle_sbk_10 },
|
||||||
|
};
|
||||||
|
|
||||||
|
#include "world/common/SpawnSunEffect.inc.c"
|
||||||
|
|
||||||
|
EvtScript N(EVS_ExitWalk_sbk_11_0) = EVT_EXIT_WALK(60, sbk_10_ENTRY_1, "sbk_11", sbk_11_ENTRY_0);
|
||||||
|
EvtScript N(EVS_ExitWalk_sbk_00_3) = EVT_EXIT_WALK(60, sbk_10_ENTRY_2, "sbk_00", sbk_00_ENTRY_3);
|
||||||
|
EvtScript N(EVS_ExitWalk_sbk_20_2) = EVT_EXIT_WALK(60, sbk_10_ENTRY_3, "sbk_20", sbk_20_ENTRY_2);
|
||||||
|
|
||||||
|
EvtScript N(EVS_BindExitTriggers) = {
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_sbk_11_0)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilie, 1, 0)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_sbk_00_3)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilin, 1, 0)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_sbk_20_2)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilis, 1, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_Main) = {
|
||||||
|
EVT_SET(GB_WorldLocation, LOCATION_DRY_DRY_DESERT)
|
||||||
|
EVT_CALL(SetSpriteShading, SHADING_NONE)
|
||||||
|
EVT_IF_EQ(GB_StoryProgress, STORY_CH2_GOT_PULSE_STONE)
|
||||||
|
EVT_CALL(DisablePulseStone, FALSE)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_SETUP_CAMERA_NO_LEAD()
|
||||||
|
EVT_EXEC_WAIT(N(EVS_MakeEntities))
|
||||||
|
EVT_CALL(N(SpawnSunEffect))
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8)
|
||||||
|
EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers)))
|
||||||
|
EVT_EXEC(EnterWalk)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
9
src/world/area_sbk/sbk_10/sbk_10_2_entity.c
Normal file
9
src/world/area_sbk/sbk_10/sbk_10_2_entity.c
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
#include "sbk_10.h"
|
||||||
|
#include "entity.h"
|
||||||
|
|
||||||
|
EvtScript N(EVS_MakeEntities) = {
|
||||||
|
EVT_CALL(MakeEntity, EVT_PTR(Entity_HiddenYellowBlock), 315, 93, 60, 0, ITEM_THUNDER_RAGE, MAKE_ENTITY_END)
|
||||||
|
EVT_CALL(AssignBlockFlag, GF_SBK10_HiddenItem_ThunderRage)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
@ -1,8 +0,0 @@
|
|||||||
#include "sbk_11.h"
|
|
||||||
|
|
||||||
static char* N(exit_str_0) = "sbk_10";
|
|
||||||
static char* N(exit_str_1) = "sbk_12";
|
|
||||||
static char* N(exit_str_2) = "sbk_01";
|
|
||||||
static char* N(exit_str_3) = "sbk_21";
|
|
||||||
|
|
||||||
#include "world/common/SpawnSunEffect.inc.c"
|
|
@ -1,4 +0,0 @@
|
|||||||
#include "sbk_11.h"
|
|
||||||
#include "world/common/Bandit_DropCoin.inc.c"
|
|
||||||
|
|
||||||
#include "world/common/SetNpcB5_3.inc.c"
|
|
@ -2,8 +2,19 @@
|
|||||||
/// @brief Dry Dry Desert - N2W2
|
/// @brief Dry Dry Desert - N2W2
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "../sbk.h"
|
|
||||||
#include "message_ids.h"
|
#include "message_ids.h"
|
||||||
#include "map.h"
|
#include "map.h"
|
||||||
|
|
||||||
|
#include "../sbk.h"
|
||||||
|
#include "mapfs/sbk_11_shape.h"
|
||||||
|
#include "mapfs/sbk_11_hit.h"
|
||||||
|
|
||||||
|
#include "sprite/npc/Bandit.h"
|
||||||
|
#include "sprite/npc/Pokey.h"
|
||||||
|
|
||||||
|
enum {
|
||||||
|
NPC_Pokey = 0,
|
||||||
|
NPC_Bandit = 1,
|
||||||
|
};
|
||||||
|
|
||||||
#define NAMESPACE sbk_11
|
#define NAMESPACE sbk_11
|
||||||
|
51
src/world/area_sbk/sbk_11/sbk_11_1_main.c
Normal file
51
src/world/area_sbk/sbk_11/sbk_11_1_main.c
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
#include "sbk_11.h"
|
||||||
|
|
||||||
|
extern EvtScript N(EVS_Main);
|
||||||
|
extern NpcGroupList N(DefaultNPCs);
|
||||||
|
|
||||||
|
EntryList N(Entrances) = {
|
||||||
|
[sbk_11_ENTRY_0] { -475.0, 0.0, 0.0, 90.0 },
|
||||||
|
[sbk_11_ENTRY_1] { 475.0, 0.0, 0.0, 270.0 },
|
||||||
|
[sbk_11_ENTRY_2] { 0.0, 0.0, -475.0, 180.0 },
|
||||||
|
[sbk_11_ENTRY_3] { 0.0, 0.0, 475.0, 0.0 },
|
||||||
|
};
|
||||||
|
|
||||||
|
MapSettings N(settings) = {
|
||||||
|
.main = &N(EVS_Main),
|
||||||
|
.entryList = &N(Entrances),
|
||||||
|
.entryCount = ENTRY_COUNT(N(Entrances)),
|
||||||
|
.background = &gBackgroundImage,
|
||||||
|
.tattle = { MSG_MapTattle_sbk_11 },
|
||||||
|
};
|
||||||
|
|
||||||
|
#include "world/common/SpawnSunEffect.inc.c"
|
||||||
|
|
||||||
|
EvtScript N(EVS_ExitWalk_sbk_10_1) = EVT_EXIT_WALK(60, sbk_11_ENTRY_0, "sbk_10", sbk_10_ENTRY_1);
|
||||||
|
EvtScript N(EVS_ExitWalk_sbk_12_0) = EVT_EXIT_WALK(60, sbk_11_ENTRY_1, "sbk_12", sbk_12_ENTRY_0);
|
||||||
|
EvtScript N(EVS_ExitWalk_sbk_01_3) = EVT_EXIT_WALK(60, sbk_11_ENTRY_2, "sbk_01", sbk_01_ENTRY_3);
|
||||||
|
EvtScript N(EVS_ExitWalk_sbk_21_2) = EVT_EXIT_WALK(60, sbk_11_ENTRY_3, "sbk_21", sbk_21_ENTRY_2);
|
||||||
|
|
||||||
|
EvtScript N(EVS_BindExitTriggers) = {
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_sbk_10_1)), TRIGGER_FLOOR_ABOVE, COLLIDER_deiliw, 1, 0)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_sbk_12_0)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilie, 1, 0)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_sbk_01_3)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilin, 1, 0)
|
||||||
|
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_sbk_21_2)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilis, 1, 0)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
||||||
|
|
||||||
|
EvtScript N(EVS_Main) = {
|
||||||
|
EVT_SET(GB_WorldLocation, LOCATION_DRY_DRY_DESERT)
|
||||||
|
EVT_CALL(SetSpriteShading, SHADING_NONE)
|
||||||
|
EVT_IF_EQ(GB_StoryProgress, STORY_CH2_GOT_PULSE_STONE)
|
||||||
|
EVT_CALL(DisablePulseStone, FALSE)
|
||||||
|
EVT_END_IF
|
||||||
|
EVT_SETUP_CAMERA_NO_LEAD()
|
||||||
|
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs)))
|
||||||
|
EVT_CALL(N(SpawnSunEffect))
|
||||||
|
EVT_CALL(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8)
|
||||||
|
EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers)))
|
||||||
|
EVT_EXEC(EnterWalk)
|
||||||
|
EVT_RETURN
|
||||||
|
EVT_END
|
||||||
|
};
|
111
src/world/area_sbk/sbk_11/sbk_11_2_npc.c
Normal file
111
src/world/area_sbk/sbk_11/sbk_11_2_npc.c
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
#include "sbk_11.h"
|
||||||
|
|
||||||
|
#include "world/common/enemy/complete/Bandit.inc.c"
|
||||||
|
#include "world/common/enemy/complete/Pokey.inc.c"
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_Pokey) = {
|
||||||
|
.id = NPC_Pokey,
|
||||||
|
.settings = &N(NpcSettings_Pokey),
|
||||||
|
.pos = { -120.0f, 0.0f, 90.0f },
|
||||||
|
.yaw = 90,
|
||||||
|
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_PROJECT_SHADOW,
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.itemDropChance = 15,
|
||||||
|
.itemDrops = {
|
||||||
|
{ ITEM_DRIED_FRUIT, 9, 0 },
|
||||||
|
{ ITEM_TASTY_TONIC, 1, 0 },
|
||||||
|
},
|
||||||
|
.heartDrops = STANDARD_HEART_DROPS(2),
|
||||||
|
.flowerDrops = STANDARD_FLOWER_DROPS(2),
|
||||||
|
.minCoinBonus = 0,
|
||||||
|
.maxCoinBonus = 1,
|
||||||
|
},
|
||||||
|
.territory = {
|
||||||
|
.wander = {
|
||||||
|
.isFlying = TRUE,
|
||||||
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||||
|
.wanderShape = SHAPE_CYLINDER,
|
||||||
|
.centerPos = { -120, 0, 90 },
|
||||||
|
.wanderSize = { 100 },
|
||||||
|
.detectShape = SHAPE_CYLINDER,
|
||||||
|
.detectPos = { 0, 0, 0 },
|
||||||
|
.detectSize = { 1000 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_Pokey_Anim04,
|
||||||
|
.walk = ANIM_Pokey_Anim08,
|
||||||
|
.run = ANIM_Pokey_Anim08,
|
||||||
|
.chase = ANIM_Pokey_Anim08,
|
||||||
|
.anim_4 = ANIM_Pokey_Anim04,
|
||||||
|
.anim_5 = ANIM_Pokey_Anim04,
|
||||||
|
.death = ANIM_Pokey_Anim0C,
|
||||||
|
.hit = ANIM_Pokey_Anim0C,
|
||||||
|
.anim_8 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_9 = ANIM_Pokey_Anim08,
|
||||||
|
.anim_A = ANIM_Pokey_Anim08,
|
||||||
|
.anim_B = ANIM_Pokey_Anim08,
|
||||||
|
.anim_C = ANIM_Pokey_Anim08,
|
||||||
|
.anim_D = ANIM_Pokey_Anim08,
|
||||||
|
.anim_E = ANIM_Pokey_Anim08,
|
||||||
|
.anim_F = ANIM_Pokey_Anim08,
|
||||||
|
},
|
||||||
|
.aiDetectFlags = AI_DETECT_SIGHT,
|
||||||
|
};
|
||||||
|
|
||||||
|
StaticNpc N(NpcData_Bandit) = {
|
||||||
|
.id = NPC_Bandit,
|
||||||
|
.settings = &N(NpcSettings_Bandit),
|
||||||
|
.pos = { -200.0f, 0.0f, 230.0f },
|
||||||
|
.yaw = 90,
|
||||||
|
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_PROJECT_SHADOW,
|
||||||
|
.drops = {
|
||||||
|
.dropFlags = NPC_DROP_FLAGS_80,
|
||||||
|
.itemDropChance = 5,
|
||||||
|
.itemDrops = {
|
||||||
|
{ ITEM_HONEY_SYRUP, 10, 0 },
|
||||||
|
},
|
||||||
|
.heartDrops = STANDARD_HEART_DROPS(2),
|
||||||
|
.flowerDrops = STANDARD_FLOWER_DROPS(2),
|
||||||
|
.minCoinBonus = 1,
|
||||||
|
.maxCoinBonus = 3,
|
||||||
|
},
|
||||||
|
.territory = {
|
||||||
|
.wander = {
|
||||||
|
.isFlying = TRUE,
|
||||||
|
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
|
||||||
|
.wanderShape = SHAPE_CYLINDER,
|
||||||
|
.centerPos = { -200, 0, 230 },
|
||||||
|
.wanderSize = { 100 },
|
||||||
|
.detectShape = SHAPE_CYLINDER,
|
||||||
|
.detectPos = { 0, 0, 0 },
|
||||||
|
.detectSize = { 1000 },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.animations = {
|
||||||
|
.idle = ANIM_Bandit_Anim01,
|
||||||
|
.walk = ANIM_Bandit_Anim05,
|
||||||
|
.run = ANIM_Bandit_Anim07,
|
||||||
|
.chase = ANIM_Bandit_Anim07,
|
||||||
|
.anim_4 = ANIM_Bandit_Anim01,
|
||||||
|
.anim_5 = ANIM_Bandit_Anim01,
|
||||||
|
.death = ANIM_Bandit_Anim09,
|
||||||
|
.hit = ANIM_Bandit_Anim09,
|
||||||
|
.anim_8 = ANIM_Bandit_Anim00,
|
||||||
|
.anim_9 = ANIM_Bandit_Anim00,
|
||||||
|
.anim_A = ANIM_Bandit_Anim00,
|
||||||
|
.anim_B = ANIM_Bandit_Anim00,
|
||||||
|
.anim_C = ANIM_Bandit_Anim00,
|
||||||
|
.anim_D = ANIM_Bandit_Anim00,
|
||||||
|
.anim_E = ANIM_Bandit_Anim00,
|
||||||
|
.anim_F = ANIM_Bandit_Anim00,
|
||||||
|
},
|
||||||
|
.aiDetectFlags = AI_DETECT_SIGHT,
|
||||||
|
};
|
||||||
|
|
||||||
|
NpcGroupList N(DefaultNPCs) = {
|
||||||
|
NPC_GROUP(N(NpcData_Pokey), BTL_SBK_FORMATION_04, BTL_SBK_STAGE_00),
|
||||||
|
NPC_GROUP(N(NpcData_Bandit), BTL_SBK_FORMATION_0D, BTL_SBK_STAGE_00),
|
||||||
|
{}
|
||||||
|
};
|
@ -1,8 +0,0 @@
|
|||||||
#include "sbk_12.h"
|
|
||||||
|
|
||||||
static char* N(exit_str_0) = "sbk_11";
|
|
||||||
static char* N(exit_str_1) = "sbk_13";
|
|
||||||
static char* N(exit_str_2) = "sbk_02";
|
|
||||||
static char* N(exit_str_3) = "sbk_22";
|
|
||||||
|
|
||||||
#include "world/common/SpawnSunEffect.inc.c"
|
|
@ -1,2 +0,0 @@
|
|||||||
#include "sbk_12.h"
|
|
||||||
#include "world/common/SetNpcB5_3.inc.c"
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user