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:
HailSanta 2022-10-05 16:11:24 -04:00 committed by GitHub
parent 73af4eb5a0
commit 43c9a7c91d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
464 changed files with 14412 additions and 5994 deletions

View File

@ -291,6 +291,8 @@ typedef struct BombableRockData {
/* 0x88 */ f32 fragmentFallSpeed[6];
} BombableRockData; // size = 0xA0
typedef s32 TweesterPath[0];
typedef struct TweesterData {
/* 0x00 */ s8 unk_00;
/* 0x01 */ s8 faceAnimState;

View File

@ -29,6 +29,10 @@
#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];
// 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 VIRTUAL_TO_PHYSICAL(addr) (u32)((u8*)(addr) - 0x80000000)

View File

@ -10,7 +10,9 @@
// temporary: some standard script names
#define EVS_MakeEntities EVS_MakeEntities
#define EVS_SetupMusic EVS_SetupMusic
#define EVS_SetupFoliage EVS_SetupFoliage
#define EVS_BindExitTriggers EVS_BindExitTriggers
#define EVS_EnterMap EVS_EnterMap
// TODO: consider moving Npc here

View File

@ -148,7 +148,7 @@ ApiStatus EnablePartnerAI(Evt* script, s32 isInitialCall);
ApiStatus BringPartnerOut(Evt* script, s32 isInitialCall);
ApiStatus PutPartnerAway(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 PlaySoundAtNpc(Evt* script, s32 isInitialCall);
ApiStatus SpeakToPlayer(Evt* script, s32 isInitialCall);

View File

@ -595,16 +595,42 @@
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() \
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(SetCamEnabled, CAM_DEFAULT, TRUE)
#define EVT_SETUP_CAMERA_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) \
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

View File

@ -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);
}
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;
ItemEntity* item;
Shadow* shadow;
@ -619,7 +619,7 @@ s32 make_item_entity_at_player(s32 itemID, s32 arg1, s32 pickupMsgFlags) {
itemID &= 0xFFFF;
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);
if (arg1 != 0) {
if (category != ITEM_TYPE_CONSUMABLE) {
item->flags |= ITEM_ENTITY_FLAGS_4000000;
}
item->pickupMsgFlags = pickupMsgFlags;

View File

@ -277,8 +277,7 @@ NpcGroupList N(npcGroupList_80243D18) = {
#include "world/common/atomic/SuperBlock.data.inc.c"
EvtScript N(makeEntities) = {
EVT_CALL(MakeEntity, EVT_PTR(Entity_SuperBlock), 500, -360, 110, 0, MAKE_ENTITY_END)
EVT_SETUP_SUPER_BLOCK(SUPER_BLOCK_MAPVAR, SUPER_BLOCK_GAMEFLAG)
EVT_MAKE_SUPER_BLOCK(500, -360, 110, 0)
EVT_RETURN
EVT_END
};

View File

@ -51,8 +51,7 @@ EvtScript N(80241F40) = {
#include "world/common/atomic/SuperBlock.data.inc.c"
EvtScript N(makeEntities) = {
EVT_CALL(MakeEntity, EVT_PTR(Entity_SuperBlock), -780, 120, -110, 0, MAKE_ENTITY_END)
EVT_SETUP_SUPER_BLOCK(SUPER_BLOCK_MAPVAR, SUPER_BLOCK_GAMEFLAG)
EVT_MAKE_SUPER_BLOCK(-780, 120, -110, 0)
EVT_CALL(MakeItemEntity, ITEM_STAR_PIECE, 510, 0, -90, 17, GF_FLO08_Item_StarPiece)
EVT_RETURN
EVT_END

View File

@ -288,8 +288,7 @@ EvtScript N(80243E80) = {
EvtScript N(makeEntities) = {
EVT_SET(AreaFlag(39), 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_SETUP_SUPER_BLOCK(SUPER_BLOCK_MAPVAR, SUPER_BLOCK_GAMEFLAG)
EVT_MAKE_SUPER_BLOCK(350, 240, -100, 0)
EVT_CALL(MakeEntity, EVT_PTR(Entity_ScriptSpring), 472, 100, -100, 0, MAKE_ENTITY_END)
EVT_CALL(AssignScript, EVT_PTR(N(80243DB0)))
EVT_RETURN

View File

@ -62,8 +62,7 @@ EvtScript N(EVS_DropLastLetter) = {
EvtScript N(EVS_Main) = {
EVT_CALL(DisablePlayerInput, TRUE)
EVT_CALL(ModifyGlobalOverrideFlags, 0, GLOBAL_OVERRIDES_20000)
EVT_SETUP_CAMERA_DEFAULT()
EVT_CALL(SetCamLeadPlayer, CAM_DEFAULT, FALSE)
EVT_SETUP_CAMERA_NO_LEAD()
EVT_THREAD
EVT_CALL(GetCurrentPartnerID, LVar0)
EVT_IF_NE(LVar0, PARTNER_NONE)

View File

@ -20,6 +20,10 @@ enum {
AB_JAN_F = AreaByte(15),
};
enum {
AF_JAN_0D = AreaFlag(0xD),
};
#define AF_JAN(index) AreaFlag(index)
#endif

View File

@ -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);

View File

@ -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;
}

View File

@ -1,4 +0,0 @@
#include "jan_00.h"
#include "common/foliage.inc.c"

View File

@ -2,8 +2,27 @@
/// @brief Jade Jungle - Whale Cove
#include "common.h"
#include "../jan.h"
#include "message_ids.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

View 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
};

View 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
};

View 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)),
{}
};

View 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
};

View 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
};

View 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
};

View File

@ -32,8 +32,7 @@ EvtScript N(EVS_BindExitTriggers) = {
EvtScript N(EVS_Main) = {
EVT_SET(GB_WorldLocation, LOCATION_TOAD_TOWN)
EVT_CALL(SetSpriteShading, SHADING_NONE)
EVT_SETUP_CAMERA_DEFAULT()
EVT_CALL(SetCamLeadPlayer, CAM_DEFAULT, FALSE)
EVT_SETUP_CAMERA_NO_LEAD()
EVT_CALL(HidePlayerShadow, TRUE)
EVT_CALL(EnableNpcShadow, NPC_PARTNER, FALSE)
EVT_EXEC(N(EVS_StartTongueWiggle))

View File

@ -31,8 +31,7 @@ EvtScript N(EVS_BindExitTriggers) = {
EvtScript N(EVS_Main) = {
EVT_SET(GB_WorldLocation, LOCATION_TOAD_TOWN)
EVT_CALL(SetSpriteShading, SHADING_NONE)
EVT_SETUP_CAMERA_DEFAULT()
EVT_CALL(SetCamLeadPlayer, CAM_DEFAULT, FALSE)
EVT_SETUP_CAMERA_NO_LEAD()
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs)))
EVT_SET(LVar0, N(EVS_BindExitTriggers))
EVT_EXEC(EnterWalk)

View File

@ -16,7 +16,7 @@ EvtScript N(EVS_BindExitTriggers) = {
EvtScript N(EVS_Main) = {
EVT_SET(GB_WorldLocation, LOCATION_BOWSERS_CASTLE)
EVT_CALL(SetSpriteShading, SHADING_NONE)
EVT_SETUP_CAMERA_NO_LEAD()
EVT_SETUP_CAMERA_ALT_NO_LEAD()
EVT_EXEC_WAIT(N(EVS_Empty))
EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers)))
EVT_EXEC(EnterWalk)

View File

@ -6,44 +6,7 @@ extern EvtScript N(EVS_KoloradoSinkingPlatform);
API_CALLABLE(N(AwaitLetterChoiceResult));
API_CALLABLE(N(SetLetterChoiceResult));
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"
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,
};
#include "world/common/enemy/complete/LavaBubble.inc.c"
NpcSettings N(NpSettings_Kolorado) = {
.height = 40,
@ -64,7 +27,7 @@ EvtScript N(EVS_Kolorado_LetterDelivery) = {
ITEM_LETTER25, 0,
MSG_CH5_00E4, MSG_CH5_00E5, MSG_CH5_00E6, MSG_CH5_00E7,
EVT_PTR(N(LetterList)))
EVT_EXEC_WAIT(N(DoLetterDelivery))
EVT_EXEC_WAIT(N(EVS_DoLetterDelivery))
EVT_RETURN
EVT_END
};

View File

@ -1,222 +1,8 @@
#include "kzn_03.h"
extern EvtScript D_800936DC;
#include "world/common/enemy/complete/SpikeTop.inc.c"
// spike top
#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),
};
#include "world/common/enemy/complete/PutridPiranha.inc.c"
NpcSettings N(NpcSettings_ZiplineDummy) = {
.height = 24,
@ -243,7 +29,7 @@ EvtScript N(EVS_Kolorado_LetterDelivery) = {
ITEM_LETTER25, 0,
MSG_CH5_00E4, MSG_CH5_00E5, MSG_CH5_00E6, MSG_CH5_00E7,
EVT_PTR(N(LetterList)))
EVT_EXEC_WAIT(N(DoLetterDelivery))
EVT_EXEC_WAIT(N(EVS_DoLetterDelivery))
EVT_RETURN
EVT_END
};
@ -648,10 +434,10 @@ StaticNpc N(NpcData_SpikeTop_03) = {
.aiDetectFlags = AI_DETECT_SIGHT | AI_DETECT_SENSITIVE_MOTION,
};
StaticNpc N(NpcData_Piranha)[] = {
StaticNpc N(NpcData_PutridPiranha)[] = {
{
.id = NPC_Piranha,
.settings = &N(NpcSettings_Piranha),
.settings = &N(NpcSettings_PutridPiranha),
.pos = { 260.0f, 20.0f, 255.0f },
.yaw = 270,
.flags = NPC_FLAG_LOCK_ANIMS,
@ -700,7 +486,7 @@ StaticNpc N(NpcData_Piranha)[] = {
},
{
.id = NPC_Piranha_Hitbox,
.settings = &N(NpcSettings_PiranhaHitbox),
.settings = &N(NpcSettings_PutridPiranha_Hitbox),
.pos = { NPC_DISPOSE_LOCATION },
.yaw = 0,
.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_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_Piranha), BTL_KZN_FORMATION_13, BTL_KZN_STAGE_01),
NPC_GROUP(N(NpcData_PutridPiranha), BTL_KZN_FORMATION_13, BTL_KZN_STAGE_01),
{}
};

View File

@ -7,8 +7,7 @@
#include "world/common/atomic/SuperBlock.data.inc.c"
EvtScript N(EVS_MakeEntities) = {
EVT_CALL(MakeEntity, EVT_PTR(Entity_SuperBlock), 530, 560, 25, 0, MAKE_ENTITY_END)
EVT_SETUP_SUPER_BLOCK(SUPER_BLOCK_MAPVAR, SUPER_BLOCK_GAMEFLAG)
EVT_MAKE_SUPER_BLOCK(530, 560, 25, 0)
EVT_RETURN
EVT_END
};

View File

@ -9,6 +9,8 @@
#include "mapfs/kzn_07_shape.h"
#include "mapfs/kzn_07_hit.h"
#include "sprite/npc/LavaBubble.h"
enum {
NPC_Bubble_01 = 0,
NPC_Bubble_02 = 1,

View File

@ -58,7 +58,7 @@ LavaReset N(SafeFloorColliders)[] = {
EvtScript N(EVS_Main) = {
EVT_SET(GB_WorldLocation, LOCATION_MT_LAVALAVA)
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_EXEC_WAIT(N(EVS_MakeEntities))
EVT_EXEC(N(EVS_SetupMusic))

View File

@ -1,49 +1,11 @@
#include "kzn_07.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"
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) = {
StaticNpc N(NpcData_LavaBubble_01) = {
.id = NPC_Bubble_01,
.settings = &N(D_80242C48_C70F78),
.settings = &N(NpcSettings_LavaBubble),
.pos = { -200.0f, 50.0f, 150.0f },
.yaw = 90,
.flags = NPC_FLAG_LOCK_ANIMS,
@ -91,9 +53,9 @@ StaticNpc N(D_80242C74_C70FA4) = {
.aiDetectFlags = AI_DETECT_SIGHT | AI_DETECT_SENSITIVE_MOTION,
};
StaticNpc N(D_80242E64_C71194) = {
StaticNpc N(NpcData_LavaBubble_02) = {
.id = NPC_Bubble_02,
.settings = &N(D_80242C48_C70F78),
.settings = &N(NpcSettings_LavaBubble),
.pos = { -250.0f, 80.0f, 50.0f },
.yaw = 90,
.flags = NPC_FLAG_LOCK_ANIMS,
@ -142,7 +104,7 @@ StaticNpc N(D_80242E64_C71194) = {
};
NpcGroupList N(DefaultNPCs) = {
NPC_GROUP(N(D_80242C74_C70FA4), 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_01), BTL_KZN_FORMATION_05, BTL_KZN_STAGE_01),
NPC_GROUP(N(NpcData_LavaBubble_02), BTL_KZN_FORMATION_06, BTL_KZN_STAGE_01),
{}
};

View File

@ -9,6 +9,8 @@
#include "mapfs/kzn_08_shape.h"
#include "mapfs/kzn_08_hit.h"
#include "sprite/npc/LargePiranha.h"
enum {
NPC_PutridPiranha_01 = 0,
NPC_PutridPiranha_02 = 1

View File

@ -1,135 +1,12 @@
#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"
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)[] = {
StaticNpc N(NpcData_PutridPiranha)[] = {
{
.id = NPC_PutridPiranha_01,
.settings = &N(D_80245044_C764C4),
.settings = &N(NpcSettings_PutridPiranha),
.pos = { 80.0f, 0.0f, 135.0f },
.yaw = 270,
.flags = NPC_FLAG_100 | NPC_FLAG_LOCK_ANIMS,
@ -178,7 +55,7 @@ StaticNpc N(D_802451A8_C76628)[] = {
},
{
.id = NPC_PutridPiranha_02,
.settings = &N(NpcSettings_MeleeHitbox),
.settings = &N(NpcSettings_PutridPiranha_Hitbox),
.pos = { NPC_DISPOSE_LOCATION },
.yaw = 0,
.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) = {
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),
{}
};

View File

@ -7,8 +7,7 @@
#include "world/common/atomic/SuperBlock.data.inc.c"
EvtScript N(EVS_MakeEntities) = {
EVT_CALL(MakeEntity, EVT_PTR(Entity_SuperBlock), 130, 480, -75, 0, MAKE_ENTITY_END)
EVT_SETUP_SUPER_BLOCK(SUPER_BLOCK_MAPVAR, SUPER_BLOCK_GAMEFLAG)
EVT_MAKE_SUPER_BLOCK(130, 480, -75, 0)
EVT_CALL(MakeEntity, EVT_PTR(Entity_HiddenPanel), 350, 350, 55, 0, MODEL_o149, MAKE_ENTITY_END)
EVT_CALL(AssignPanelFlag, GF_KZN09_HiddenPanel)
EVT_RETURN

View File

@ -1,222 +1,15 @@
#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) = {
.height = 40,
.radius = 24,
.level = 99,
};
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
};
#include "world/common/enemy/complete/PutridPiranha.inc.c"
#include "world/common/enemy/complete/SpikeTop.inc.c"
MobileAISettings N(D_80244C38_C7B918) = {
.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) = {
NpcSettings N(NpcSettings_Zipline) = {
.height = 24,
.radius = 24,
.level = 99,
@ -235,7 +28,7 @@ EvtScript N(D_80245B64_C7C844) = {
ITEM_LETTER25, 0,
MSG_CH5_00E8, MSG_CH5_00E9, MSG_CH5_00EA, MSG_CH5_00EB,
EVT_PTR(N(LetterList)))
EVT_EXEC_WAIT(N(DoLetterDelivery))
EVT_EXEC_WAIT(N(EVS_DoLetterDelivery))
EVT_RETURN
EVT_END
};
@ -490,7 +283,7 @@ StaticNpc N(NpcData_PassiveNPCs)[] = {
},
{
.id = NPC_ZiplineDummy,
.settings = &N(NpcSettings_Dummy),
.settings = &N(NpcSettings_Zipline),
.pos = { NPC_DISPOSE_LOCATION },
.yaw = 90,
.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) = {
.id = NPC_SpikeTop,
.settings = &N(D_802451CC_C7BEAC),
.settings = &N(NpcSettings_SpikeTop),
.pos = { -100.0f, 350.0f, 50.0f },
.yaw = 270,
.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,
};
StaticNpc N(NpcData_Piranha)[] = {
StaticNpc N(NpcData_PutridPiranha)[] = {
{
.id = NPC_Piranha,
.settings = &N(NpcSettings_Piranha),
.settings = &N(NpcSettings_PutridPiranha),
.pos = { 200.0f, 350.0f, 100.0f },
.yaw = 270,
.flags = NPC_FLAG_LOCK_ANIMS,
@ -624,7 +417,7 @@ StaticNpc N(NpcData_Piranha)[] = {
},
{
.id = NPC_Piranha_Hitbox,
.settings = &N(NpcSettings_PiranhaHitbox),
.settings = &N(NpcSettings_PutridPiranha_Hitbox),
.pos = { NPC_DISPOSE_LOCATION },
.yaw = 0,
.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) = {
NPC_GROUP(N(NpcData_PassiveNPCs)),
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),
{}
};

View File

@ -1,46 +1,9 @@
#include "kzn_11.h"
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/complete/LavaBubble.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)[] = {
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,
@ -310,7 +273,7 @@ StaticNpc N(NpcData_FireBar_03)[] = {
StaticNpc N(NpcData_Bubble_01) = {
.id = NPC_Bubble_01,
.settings = &N(NpcSettings_Bubble),
.settings = &N(NpcSettings_LavaBubble),
.pos = { -150.0f, 50.0f, 10.0f },
.yaw = 90,
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING,
@ -360,7 +323,7 @@ StaticNpc N(NpcData_Bubble_01) = {
StaticNpc N(NpcData_Bubble_02) = {
.id = NPC_Bubble_02,
.settings = &N(NpcSettings_Bubble),
.settings = &N(NpcSettings_LavaBubble),
.pos = { 150.0f, 50.0f, 10.0f },
.yaw = 270,
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING,

View File

@ -1,219 +1,13 @@
#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) = {
.height = 40,
.radius = 24,
.level = 99,
};
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_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/enemy/complete/PutridPiranha.inc.c"
#include "world/common/enemy/complete/SpikeTop.inc.c"
#include "world/common/atomic/LetterChoice.inc.c"
@ -228,7 +22,7 @@ EvtScript N(EVS_Kolorado_LetterDelivery1) = {
ITEM_LETTER25, 0,
MSG_CH5_00E4, MSG_CH5_00E5, MSG_CH5_00E6, MSG_CH5_00E7,
EVT_PTR(N(LetterList)))
EVT_EXEC_WAIT(N(DoLetterDelivery))
EVT_EXEC_WAIT(N(EVS_DoLetterDelivery))
EVT_RETURN
EVT_END
};
@ -239,7 +33,7 @@ EvtScript N(EVS_Kolorado_LetterDelivery2) = {
ITEM_LETTER25, 0,
MSG_CH5_00E8, MSG_CH5_00E9, MSG_CH5_00EA, MSG_CH5_00EB,
EVT_PTR(N(LetterList)))
EVT_EXEC_WAIT(N(DoLetterDelivery))
EVT_EXEC_WAIT(N(EVS_DoLetterDelivery))
EVT_RETURN
EVT_END
};
@ -400,7 +194,7 @@ StaticNpc N(NpcData_Kolorado) = {
StaticNpc N(NpcData_Piranha)[] = {
{
.id = NPC_Piranha,
.settings = &N(NpcSettings_Piranha),
.settings = &N(NpcSettings_PutridPiranha),
.pos = { -325.0f, 0.0f, 150.0f },
.yaw = 270,
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING,
@ -449,7 +243,7 @@ StaticNpc N(NpcData_Piranha)[] = {
},
{
.id = NPC_Piranha_Hitbox,
.settings = &N(NpcSettings_PiranhaHitbox),
.settings = &N(NpcSettings_PutridPiranha_Hitbox),
.pos = { NPC_DISPOSE_LOCATION },
.yaw = 0,
.flags = NPC_FLAG_100 | NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING | NPC_FLAG_NO_DROPS,

View File

@ -354,7 +354,7 @@ EvtScript N(EVS_Kolorado_LetterDelivery) = {
ITEM_LETTER25, 0,
MSG_CH5_00E4, MSG_CH5_00E5, MSG_CH5_00E6, MSG_CH5_00E7,
EVT_PTR(N(LetterList)))
EVT_EXEC_WAIT(N(DoLetterDelivery))
EVT_EXEC_WAIT(N(EVS_DoLetterDelivery))
EVT_RETURN
EVT_END
};

View File

@ -200,8 +200,7 @@ EvtScript N(EVS_OnBreakWall) = {
EvtScript N(EVS_Main) = {
EVT_SET(GB_WorldLocation, LOCATION_MT_LAVALAVA)
EVT_CALL(SetSpriteShading, SHADING_KZN_20)
EVT_SETUP_CAMERA_DEFAULT()
EVT_CALL(SetCamLeadPlayer, CAM_DEFAULT, FALSE)
EVT_SETUP_CAMERA_NO_LEAD()
EVT_CALL(MakeNpcs, TRUE, EVT_PTR(N(DefaultNPCs)))
EVT_SET(LVar0, N(EVS_BindExitTriggers))
EVT_EXEC(EnterWalk)

View File

@ -53,7 +53,7 @@ EvtScript N(EVS_Kolorado_LetterDelivery) = {
ITEM_LETTER25, 0,
MSG_CH5_00E4, MSG_CH5_00E5, MSG_CH5_00E6, MSG_CH5_00E7,
EVT_PTR(N(LetterList)))
EVT_EXEC_WAIT(N(DoLetterDelivery))
EVT_EXEC_WAIT(N(EVS_DoLetterDelivery))
EVT_RETURN
EVT_END
};

View File

@ -2,7 +2,7 @@
extern EvtScript N(EVS_Main);
extern EvtScript N(EVS_FlyingGull);
extern EvtScript N(EVS_80242A14);
extern EvtScript N(EVS_WhaleMain);
extern NpcGroupList N(DefaultNPCs);
@ -69,7 +69,7 @@ EvtScript N(EVS_Main) = {
EVT_SETUP_CAMERA_DEFAULT()
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs)))
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(PlayAmbientSounds, AMBIENT_BEACH)
EVT_EXEC(N(EVS_AnimateWaves))

View File

@ -23,7 +23,7 @@ ApiStatus N(UnkPlayerPosFunc)(Evt* script, s32 isInitialCall) {
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(RotateModel, MODEL_o167, LVar0, 1, 0, 0)
EVT_CALL(RotateModel, MODEL_o168, LVar0, -1, 0, 0)
@ -31,7 +31,7 @@ EvtScript N(D_80241B6C_8666AC) = {
EVT_END
};
EvtScript N(D_80241BE4_866724) = {
EvtScript N(EVS_WhaleState_2) = {
EVT_CALL(N(UnkFloatFunc001), LVarC, LVar0, 0, 30, 30, 1, 0)
EVT_SETF(LVar1, LVar0)
EVT_DIVF(LVar1, EVT_FLOAT(3.0))
@ -55,7 +55,7 @@ EvtScript N(D_80241BE4_866724) = {
EVT_END
};
EvtScript N(D_80241E20_866960) = {
EvtScript N(EVS_WhaleState_IdleSad) = {
EVT_CALL(N(UnkFloatFunc001), LVarC, LVar0, 0, -30, 8, 1, 0)
EVT_ADDF(LVar0, EVT_FLOAT(30.0))
EVT_SETF(LVar1, LVar0)
@ -80,12 +80,12 @@ EvtScript N(D_80241E20_866960) = {
EVT_END
};
EvtScript N(D_8024206C_866BAC) = {
EvtScript N(EVS_WhaleState_WalkSad) = {
EVT_RETURN
EVT_END
};
EvtScript N(D_8024207C_866BBC) = {
EvtScript N(EVS_WhaleState_Shout) = {
EVT_CALL(GetNpcVar, NPC_Whale, 0, LVar3)
EVT_IF_EQ(LVar3, 0)
EVT_CALL(N(UnkPlayerPosFunc))
@ -103,12 +103,12 @@ EvtScript N(D_8024207C_866BBC) = {
EVT_END
};
EvtScript N(D_802421D4_866D14) = {
EvtScript N(EVS_WhaleState_TalkSad) = {
EVT_RETURN
EVT_END
};
EvtScript N(D_802421E4_866D24) = {
EvtScript N(EVS_WhaleState_HurtStill) = {
EVT_IF_GE(LVarC, 0)
EVT_IF_LE(LVarC, 2)
EVT_CALL(EnableModel, MODEL_o170, FALSE)
@ -132,7 +132,7 @@ EvtScript N(D_802421E4_866D24) = {
EVT_END
};
EvtScript N(D_8024230C_866E4C) = {
EvtScript N(EVS_WhaleState_Run) = {
EVT_SET(LVar0, LVarC)
EVT_DIV(LVar0, 20)
EVT_MOD(LVar0, 2)
@ -167,7 +167,7 @@ EvtScript N(D_80242474_866FB4) = {
EVT_END
};
EvtScript N(D_802425B4_8670F4) = {
EvtScript N(EVS_WhaleState_Talk) = {
EVT_SET(LVar0, LVarC)
EVT_DIV(LVar0, 20)
EVT_MOD(LVar0, 2)
@ -187,7 +187,7 @@ EvtScript N(D_802425B4_8670F4) = {
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(RotateModel, MODEL_o167, LVar0, 1, 0, 0)
EVT_CALL(RotateModel, MODEL_o168, LVar0, -1, 0, 0)
@ -195,7 +195,7 @@ EvtScript N(D_8024271C_86725C) = {
EVT_END
};
EvtScript N(D_80242794_8672D4) = {
EvtScript N(EVS_WhaleState_Walk) = {
EVT_CALL(N(UnkFloatFunc001), LVarC, LVar0, 0, 30, 3, 0, 0)
EVT_SET(LVar1, LVar0)
EVT_DIV(LVar1, 3)
@ -222,7 +222,7 @@ EvtScript N(D_80242794_8672D4) = {
EVT_END
};
EvtScript N(EVS_80242A14) = {
EvtScript N(EVS_WhaleMain) = {
EVT_SET_GROUP(EVT_GROUP_00)
EVT_CALL(MakeLocalVertexCopy, 1, MODEL_karada, TRUE)
EVT_CALL(SetCustomGfxBuilders, 1, EVT_PTR(N(unkAngleFunc002)), 0)
@ -301,22 +301,22 @@ EvtScript N(EVS_80242A14) = {
EVT_SWITCH(LVarB)
EVT_CASE_EQ(ANIM_Kolorado_IdleSad)
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_SET(LVarD, EVT_PTR(N(D_80241B6C_8666AC)))
EVT_SET(LVarD, EVT_PTR(N(EVS_WhaleState_Still)))
EVT_CASE_EQ(ANIM_Kolorado_Yell)
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_SET(LVarD, EVT_PTR(N(D_8024271C_86725C)))
EVT_SET(LVarD, EVT_PTR(N(EVS_WhaleState_Idle)))
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_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_o183, FALSE)
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_o183, FALSE)
EVT_CASE_EQ(ANIM_Kolorado_Panic)
@ -324,13 +324,13 @@ EvtScript N(EVS_80242A14) = {
EVT_CALL(EnableModel, MODEL_o170, FALSE)
EVT_CALL(EnableModel, MODEL_o183, FALSE)
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_SET(LVarD, EVT_PTR(N(D_8024207C_866BBC)))
EVT_SET(LVarD, EVT_PTR(N(EVS_WhaleState_Shout)))
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_SET(LVarD, EVT_PTR(N(D_802421E4_866D24)))
EVT_SET(LVarD, EVT_PTR(N(EVS_WhaleState_HurtStill)))
EVT_END_SWITCH
EVT_END_IF
EVT_EXEC_WAIT(LVarD)

View File

@ -1,15 +1,11 @@
#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);
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) = {
NpcSettings N(NpcSettings_Whale) = {
.height = 24,
.radius = 48,
.level = 99,
@ -28,14 +24,11 @@ NpcSettings N(NpcSettings_JrTroopa) = {
};
f32 D_80243434_867F74 = 0.0f;
s32 D_80243438_867F78 = 0;
f32 D_80243438_867F78 = 0.0f;
s32 D_8024343C_867F7C = 0;
s32 D_80243440_867F80 = 0;
s32 func_80240E80_8659C0(Evt* script, s32 isInitialCall) {
API_CALLABLE(N(func_80240E80_8659C0)) {
Bytecode* args = script->ptrReadPos;
Npc* whale = get_npc_safe(NPC_Whale);
Npc* kolorado;
@ -102,11 +95,91 @@ s32 func_80240E80_8659C0(Evt* script, s32 isInitialCall) {
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) = {
EVT_CALL(GetEntryID, LVar0)
@ -114,7 +187,7 @@ EvtScript N(EVS_NpcIdle_Whale) = {
EVT_CALL(GetNpcPos, NPC_Whale, LVar0, LVar1, LVar2)
EVT_CALL(NpcFlyTo, NPC_Whale, 50, LVar1, 500, 120, 0, EASING_SIN_OUT)
EVT_THREAD
EVT_CALL(func_80241098_865BD8)
EVT_CALL(N(func_80241098_865BD8))
EVT_END_THREAD
EVT_WAIT(150)
EVT_CALL(SetNpcAnimation, NPC_Whale, ANIM_Kolorado_Idle)
@ -137,7 +210,7 @@ EvtScript N(EVS_NpcIdle_Whale) = {
EVT_END_IF
EVT_CALL(NpcFlyTo, NPC_Whale, -70, LVar1, 500, 120, 0, EASING_SIN_OUT)
EVT_THREAD
EVT_CALL(func_80241098_865BD8)
EVT_CALL(N(func_80241098_865BD8))
EVT_END_THREAD
EVT_WAIT(150)
EVT_CALL(SetNpcAnimation, NPC_Whale, ANIM_Kolorado_Idle)
@ -148,9 +221,61 @@ EvtScript N(EVS_NpcIdle_Whale) = {
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) = {
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(SetNpcAnimation, NPC_PARTNER, PARTNER_ANIM_RUN)
EVT_THREAD
EVT_CALL(func_80240E80_8659C0, 0)
EVT_CALL(N(func_80240E80_8659C0), 0)
EVT_END_THREAD
EVT_THREAD
EVT_CALL(func_80240E80_8659C0, 1)
EVT_CALL(N(func_80240E80_8659C0), 1)
EVT_END_THREAD
EVT_THREAD
EVT_SWITCH(GB_StoryProgress)
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_CALL(func_80240E80_8659C0, 2)
EVT_CALL(N(func_80240E80_8659C0), 2)
EVT_END_SWITCH
EVT_END_THREAD
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_THREAD
EVT_CALL(func_80241290_865DD0)
EVT_CALL(N(func_80241290_865DD0))
EVT_CALL(GetEntryID, LVar0)
EVT_IF_EQ(LVar0, mac_06_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_MULF(LVar8, -1)
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, CLONED_MODEL_GULL, LVar7, 0, 1, 0)
EVT_CALL(RotateModel, CLONED_MODEL_GULL, 180, 0, 0, 1)
@ -263,8 +388,7 @@ EvtScript N(EVS_FlyingGull) = {
EVT_END
};
// unused
EvtScript N(EVS_80243CAC) = {
EvtScript N(EVS_UnusedGull) = {
EVT_CALL(CloneModel, MODEL_hontai, LVar0)
EVT_SET(LVarF, LVar0)
EVT_SET(LocalFlag(0), TRUE)
@ -282,12 +406,12 @@ EvtScript N(EVS_80243CAC) = {
EVT_LABEL(10)
EVT_LABEL(0)
EVT_SET(LVarE, LVarF)
EVT_IF_EQ(LVarE, 0x00002710)
EVT_IF_EQ(LVarE, CLONED_MODEL_UNUSED)
EVT_SET(LVarE, 22)
EVT_ELSE
EVT_ADD(LVarE, -1)
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_SUBF(LVar0, LVar1)
EVT_IF_LT(LVar0, 0)
@ -331,7 +455,7 @@ EvtScript N(EVS_80243CAC) = {
EVT_END_IF
EVT_ADDF(LVar3, LVarA)
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_SET(LVar4, LVar1)
EVT_SET(LVar5, LVar3)
@ -361,7 +485,7 @@ EvtScript N(EVS_NpcIdle_JrTroopa) = {
EVT_WAIT(5)
EVT_CHILD_THREAD
EVT_LOOP(0)
EVT_CALL(func_802415FC_86613C)
EVT_CALL(N(MakeJrTroopaBubbles))
EVT_WAIT(5)
EVT_END_LOOP
EVT_END_CHILD_THREAD
@ -387,7 +511,7 @@ EvtScript N(EVS_NpcInit_JrTroopa) = {
StaticNpc N(NpcData_Whale) = {
.id = NPC_Whale,
.settings = &N(NpcSettings_Kolorado_01),
.settings = &N(NpcSettings_Whale),
.pos = { NPC_DISPOSE_LOCATION },
.yaw = 270,
.flags = NPC_FLAG_PASSIVE | NPC_FLAG_ENABLE_HIT_SCRIPT | NPC_FLAG_100 | NPC_FLAG_GRAVITY | NPC_FLAG_LOCK_ANIMS | NPC_FLAG_JUMPING,

View File

@ -122,8 +122,7 @@ EvtScript N(EVS_EnterMap) = {
};
EvtScript N(EVS_Main) = {
EVT_SETUP_CAMERA_DEFAULT()
EVT_CALL(SetCamLeadPlayer, CAM_DEFAULT, FALSE)
EVT_SETUP_CAMERA_NO_LEAD()
EVT_EXEC_WAIT(N(D_80243C40_E123E0))
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs)))
EVT_EXEC_WAIT(N(D_80241850_E0FFF0))

View File

@ -82,8 +82,7 @@ EvtScript N(D_8024189C_E13FFC) = {
EvtScript N(EVS_Main) = {
EVT_CALL(SetSpriteShading, SHADING_ARN_09)
EVT_SETUP_CAMERA_DEFAULT()
EVT_CALL(SetCamLeadPlayer, CAM_DEFAULT, FALSE)
EVT_SETUP_CAMERA_NO_LEAD()
EVT_CALL(SetRenderMode, MODEL_o36, RENDER_MODE_SURFXLU_ZB_ZUPD)
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs)))
EVT_EXEC_WAIT(N(EVS_MakeEntities))

View File

@ -38,8 +38,7 @@ EvtScript N(EVS_SetupCamera) = {
};
EvtScript N(EVS_Main) = {
EVT_SETUP_CAMERA_DEFAULT()
EVT_CALL(SetCamLeadPlayer, CAM_DEFAULT, FALSE)
EVT_SETUP_CAMERA_NO_LEAD()
EVT_EXEC(N(EVS_SetupCamera))
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs)))
EVT_EXEC_WAIT(N(EVS_Dummy))

View File

@ -15,8 +15,7 @@ MapSettings N(settings) = {
EvtScript N(EVS_Main) = {
EVT_CALL(SetSpriteShading, SHADING_ARN_09)
EVT_SETUP_CAMERA_DEFAULT()
EVT_CALL(SetCamLeadPlayer, CAM_DEFAULT, FALSE)
EVT_SETUP_CAMERA_NO_LEAD()
EVT_RETURN
EVT_END
};

View File

@ -2,24 +2,82 @@
#define _WORLD_AREA_SBK_SBK_H_
enum {
AB_SBK_0 = AreaByte(0),
AB_SBK_1 = AreaByte(1),
AB_SBK_2 = AreaByte(2),
AB_SBK_3 = AreaByte(3),
AB_SBK_4 = AreaByte(4),
AB_SBK_5 = AreaByte(5),
AB_SBK_6 = AreaByte(6),
AB_SBK_7 = AreaByte(7),
AB_SBK_8 = AreaByte(8),
AB_SBK_9 = AreaByte(9),
AB_SBK_A = AreaByte(10),
AB_SBK_B = AreaByte(11),
AB_SBK_C = AreaByte(12),
AB_SBK_D = AreaByte(13),
AB_SBK_E = AreaByte(14),
AB_SBK_F = AreaByte(15),
AB_SBK_0 = AreaByte(0),
AB_SBK_1 = AreaByte(1),
AB_SBK_2 = AreaByte(2),
AB_SBK_3 = AreaByte(3),
AB_SBK_4 = AreaByte(4),
AB_SBK_5 = AreaByte(5),
AB_SBK_6 = AreaByte(6),
AB_SBK_7 = AreaByte(7),
AB_SBK_8 = AreaByte(8),
AB_SBK_9 = AreaByte(9),
AB_SBK_A = AreaByte(10),
AB_SBK_B = AreaByte(11),
AB_SBK_C = AreaByte(12),
AB_SBK_D = AreaByte(13),
AB_SBK_E = AreaByte(14),
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

View File

@ -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
};

View File

@ -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
};

View File

@ -2,12 +2,18 @@
/// @brief Dry Dry Desert - N3W3
#include "common.h"
#include "../sbk.h"
#include "message_ids.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);
extern NpcGroupList N(npcGroupList_80240768);
extern EvtScript N(makeEntities);
#include "sprite/npc/Pokey.h"
enum {
NPC_Pokey_01 = 0,
NPC_Pokey_02 = 1,
};
#define NAMESPACE sbk_00

View 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
};

View 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),
{}
};

View 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
};

View File

@ -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
};

View File

@ -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),
{},
};

View File

@ -2,11 +2,18 @@
/// @brief Dry Dry Desert - N3W2
#include "common.h"
#include "../sbk.h"
#include "message_ids.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);
extern NpcGroupList N(npcGroupList_802407D8);
#include "sprite/npc/Pokey.h"
enum {
NPC_Pokey_01 = 0,
NPC_Pokey_02 = 1,
};
#define NAMESPACE sbk_01

View 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
};

View 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),
{}
};

View File

@ -22,14 +22,14 @@ s32 N(get_tattle)(void) {
#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));
effect->data.sun->targetAlpha = 0;
return ApiStatus_DONE2;
}
ApiStatus func_80240364_92A614(Evt* script, s32 isInitialCall) {
API_CALLABLE(func_80240364_92A614) {
static u8 savedPrimR, savedPrimG, savedPrimB;
static u8 savedEnvR, savedEnvG, savedEnvB;
static s32 targetPrimR, targetPrimG, targetPrimB;

View File

@ -6,7 +6,7 @@
// needs data
#ifdef NON_MATCHING
ApiStatus func_8024091C_92ABCC(Evt* script, s32 isInitialCall) {
API_CALLABLE(func_8024091C_92ABCC) {
Bytecode* args = script->ptrReadPos;
if (isInitialCall) {
D_8024404C_92E2FC = FALSE;
@ -27,7 +27,7 @@ static s32 D_80245630[91];
extern s32 D_8024404C_92E2FC;
extern s32 D_80244050_92E300;
ApiStatus func_80240970_92AC20(Evt* script, s32 isInitialCall) {
API_CALLABLE(func_80240970_92AC20) {
Bytecode* args = script->ptrReadPos;
D_80244050_92E300 = evt_get_variable(script, *args++);
@ -35,7 +35,7 @@ ApiStatus func_80240970_92AC20(Evt* script, s32 isInitialCall) {
return ApiStatus_DONE2;
}
ApiStatus func_802409A8_92AC58(Evt* script, s32 isInitialCall) {
API_CALLABLE(func_802409A8_92AC58) {
Bytecode* args = script->ptrReadPos;
s32* buf = (s32*) evt_get_variable(script, *args++);
s32 i;
@ -58,7 +58,7 @@ ApiStatus func_802409A8_92AC58(Evt* script, s32 isInitialCall) {
#include "world/common/GetItemName.inc.c"
ApiStatus PostChapter2StatUpdate(Evt* script, s32 isInitialCall) {
API_CALLABLE(PostChapter2StatUpdate) {
PlayerData* playerData = &gPlayerData;
set_max_SP(2);
@ -68,13 +68,12 @@ ApiStatus PostChapter2StatUpdate(Evt* script, s32 isInitialCall) {
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];
return ApiStatus_DONE2;
}
ApiStatus GetItemCount(Evt* script, s32 isInitialCall) {
API_CALLABLE(GetItemCount) {
script->varTable[0] = get_item_count();
return ApiStatus_DONE2;
}

View File

@ -2,8 +2,23 @@
/// @brief Dry Dry Desert - N3W1 Ruins Entrance
#include "common.h"
#include "../sbk.h"
#include "message_ids.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

View 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
};

View 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
};

View 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
};

View 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)),
{}
};

View 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
};

View File

@ -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"

View File

@ -1,2 +0,0 @@
#include "sbk_03.h"
#include "world/common/SetNpcB5_3.inc.c"

View File

@ -2,8 +2,20 @@
/// @brief Dry Dry Desert - N3
#include "common.h"
#include "../sbk.h"
#include "message_ids.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

View 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
};

View 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),
{}
};

View File

@ -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"

View File

@ -1,2 +0,0 @@
#include "sbk_04.h"
#include "world/common/SetNpcB5_3.inc.c"

View File

@ -2,8 +2,18 @@
/// @brief Dry Dry Desert - N3E1
#include "common.h"
#include "../sbk.h"
#include "message_ids.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

View 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
};

View 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),
{}
};

View File

@ -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"

View File

@ -1,2 +0,0 @@
#include "sbk_05.h"
#include "world/common/SetNpcB5_3.inc.c"

View File

@ -2,8 +2,26 @@
/// @brief Dry Dry Desert - N3E2 Pokey Army
#include "common.h"
#include "../sbk.h"
#include "message_ids.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

View 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
};

View 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
};

View 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),
{}
};

View File

@ -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"

View File

@ -1,4 +0,0 @@
#include "sbk_06.h"
#include "world/common/Bandit_DropCoin.inc.c"
#include "common/foliage.inc.c"

View File

@ -2,8 +2,17 @@
/// @brief Dry Dry Desert - N3E3
#include "common.h"
#include "../sbk.h"
#include "message_ids.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

View 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
};

View 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),
{}
};

View 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
};

View 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
};

View File

@ -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"

View File

@ -2,8 +2,11 @@
/// @brief Dry Dry Desert - N2W3
#include "common.h"
#include "../sbk.h"
#include "message_ids.h"
#include "map.h"
#include "../sbk.h"
#include "mapfs/sbk_10_shape.h"
#include "mapfs/sbk_10_hit.h"
#define NAMESPACE sbk_10

View 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
};

View 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
};

View File

@ -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"

View File

@ -1,4 +0,0 @@
#include "sbk_11.h"
#include "world/common/Bandit_DropCoin.inc.c"
#include "world/common/SetNpcB5_3.inc.c"

View File

@ -2,8 +2,19 @@
/// @brief Dry Dry Desert - N2W2
#include "common.h"
#include "../sbk.h"
#include "message_ids.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

View 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
};

View 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),
{}
};

View File

@ -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"

View File

@ -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