nok and pra done (#936)

* nok_04 ok

* thread done

* push block doc

* nok done

* almost done pra

* pra done

* cleanup pra_31 mtx names

* git subrepo pull --force tools/splat

subrepo:
  subdir:   "tools/splat"
  merged:   "3bbc02af68"
upstream:
  origin:   "https://github.com/ethteck/splat.git"
  branch:   "master"
  commit:   "3bbc02af68"
git-subrepo:
  version:  "0.4.5"
  origin:   "???"
  commit:   "???"

---------

Co-authored-by: HailSanta <Hail2Santa@gmail.com>
This commit is contained in:
HailSanta 2023-02-07 19:47:26 -05:00 committed by GitHub
parent 354ebdfe20
commit 6c606383e8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
256 changed files with 9690 additions and 3337 deletions

View File

@ -217,7 +217,7 @@
#define PlayerJump dead_PlayerJump
#define StopSound dead_StopSound
#define NpcFacePlayer dead_NpcFacePlayer
#define func_802D2884 dead_func_802D2884
#define FacePlayerTowardPoint dead_FacePlayerTowardPoint
#define SetTimeFreezeMode dead_SetTimeFreezeMode
#define ShowKeyChoicePopup dead_ShowKeyChoicePopup
#define CloseChoicePopup dead_CloseChoicePopup

View File

@ -3547,7 +3547,7 @@ enum PlayerStatusAnimFlags {
Not sure why - seems like it might contribute to being unable to *stop* using your partner during a cutscene. */
PA_FLAG_PARTNER_USAGE_FORCED = 0x00200000,
PA_FLAG_RIDING_PARTNER = 0x00400000,
PA_FLAG_PUSHED_ALBINO_DINO = 0x00800000,
PA_FLAG_ABORT_PUSHING_BLOCK = 0x00800000,
/* Changes how Mario is rendered. Seems to be intended to make Mario's depth render properly when using Bow behind a switch (two translucent objects on top of eachother), but it doesn't actually work. */
PA_FLAG_MAP_HAS_SWITCH = 0x01000000,
PA_FLAG_2000000 = 0x02000000,

View File

@ -307,7 +307,7 @@ ApiStatus SetVirtualEntityJumpGravity(Evt* script, s32 isInitialCall);
ApiStatus SetVirtualEntityFlags(Evt* script, s32 isInitialCall);
ApiStatus GetVirtualEntityPosition(Evt* script, s32 isInitialCall);
ApiStatus VirtualEntityJumpTo(Evt* script, s32 isInitialCall);
ApiStatus func_802D2884(Evt* script, s32 isInitialCall);
ApiStatus FacePlayerTowardPoint(Evt* script, s32 isInitialCall);
ApiStatus func_802D2C14(Evt* script, s32 isInitialCall);
ApiStatus ShowConsumableChoicePopup(Evt* script, s32 isInitialCall);
ApiStatus func_800458CC(Evt* script, s32 isInitialCall);

View File

@ -1163,51 +1163,51 @@ EvtScript N(idle_8021D508) = {
EVT_CALL(RotateGroup, 24, LVar0, 1, 0, 0)
EVT_CALL(RotateGroup, 24, LVar1, 0, 1, 0)
EVT_CALL(RotateGroup, 24, LVar2, 0, 0, 1)
EVT_CALL(SetModelFlags, 15, 64, 1)
EVT_CALL(SetModelFlags, 16, 64, 1)
EVT_CALL(SetModelFlags, 17, 64, 1)
EVT_CALL(SetModelFlags, 18, 64, 1)
EVT_CALL(SetModelFlags, 19, 64, 1)
EVT_CALL(SetModelFlags, 20, 64, 1)
EVT_CALL(SetModelFlags, 21, 64, 1)
EVT_CALL(SetModelFlags, 22, 64, 1)
EVT_CALL(SetModelFlags, 23, 64, 1)
EVT_CALL(SetModelFlags, 15, MODEL_FLAG_FLAG_40, 1)
EVT_CALL(SetModelFlags, 16, MODEL_FLAG_FLAG_40, 1)
EVT_CALL(SetModelFlags, 17, MODEL_FLAG_FLAG_40, 1)
EVT_CALL(SetModelFlags, 18, MODEL_FLAG_FLAG_40, 1)
EVT_CALL(SetModelFlags, 19, MODEL_FLAG_FLAG_40, 1)
EVT_CALL(SetModelFlags, 20, MODEL_FLAG_FLAG_40, 1)
EVT_CALL(SetModelFlags, 21, MODEL_FLAG_FLAG_40, 1)
EVT_CALL(SetModelFlags, 22, MODEL_FLAG_FLAG_40, 1)
EVT_CALL(SetModelFlags, 23, MODEL_FLAG_FLAG_40, 1)
EVT_CALL(GetPartPos, ACTOR_SELF, 3, LVar0, LVar1, LVar2)
EVT_CALL(TranslateGroup, 34, LVar0, LVar1, LVar2)
EVT_CALL(GetPartRotation, ACTOR_SELF, 3, LVar0, LVar1, LVar2)
EVT_CALL(RotateGroup, 34, LVar0, 1, 0, 0)
EVT_CALL(RotateGroup, 34, LVar1, 0, 1, 0)
EVT_CALL(RotateGroup, 34, LVar2, 0, 0, 1)
EVT_CALL(SetModelFlags, 31, 64, 1)
EVT_CALL(SetModelFlags, 32, 64, 1)
EVT_CALL(SetModelFlags, 33, 64, 1)
EVT_CALL(SetModelFlags, 31, MODEL_FLAG_FLAG_40, 1)
EVT_CALL(SetModelFlags, 32, MODEL_FLAG_FLAG_40, 1)
EVT_CALL(SetModelFlags, 33, MODEL_FLAG_FLAG_40, 1)
EVT_CALL(GetPartPos, ACTOR_SELF, 4, LVar0, LVar1, LVar2)
EVT_CALL(TranslateGroup, 30, LVar0, LVar1, LVar2)
EVT_CALL(GetPartRotation, ACTOR_SELF, 4, LVar0, LVar1, LVar2)
EVT_CALL(RotateGroup, 30, LVar0, 1, 0, 0)
EVT_CALL(RotateGroup, 30, LVar1, 0, 1, 0)
EVT_CALL(RotateGroup, 30, LVar2, 0, 0, 1)
EVT_CALL(SetModelFlags, 25, 64, 1)
EVT_CALL(SetModelFlags, 26, 64, 1)
EVT_CALL(SetModelFlags, 27, 64, 1)
EVT_CALL(SetModelFlags, 28, 64, 1)
EVT_CALL(SetModelFlags, 29, 64, 1)
EVT_CALL(SetModelFlags, 25, MODEL_FLAG_FLAG_40, 1)
EVT_CALL(SetModelFlags, 26, MODEL_FLAG_FLAG_40, 1)
EVT_CALL(SetModelFlags, 27, MODEL_FLAG_FLAG_40, 1)
EVT_CALL(SetModelFlags, 28, MODEL_FLAG_FLAG_40, 1)
EVT_CALL(SetModelFlags, 29, MODEL_FLAG_FLAG_40, 1)
EVT_CALL(GetPartPos, ACTOR_SELF, 6, LVar0, LVar1, LVar2)
EVT_CALL(TranslateGroup, 14, LVar0, LVar1, LVar2)
EVT_CALL(GetPartRotation, ACTOR_SELF, 6, LVar0, LVar1, LVar2)
EVT_CALL(RotateGroup, 14, LVar0, 1, 0, 0)
EVT_CALL(RotateGroup, 14, LVar1, 0, 1, 0)
EVT_CALL(RotateGroup, 14, LVar2, 0, 0, 1)
EVT_CALL(SetModelFlags, 11, 64, 1)
EVT_CALL(SetModelFlags, 12, 64, 1)
EVT_CALL(SetModelFlags, 13, 64, 1)
EVT_CALL(SetModelFlags, 11, MODEL_FLAG_FLAG_40, 1)
EVT_CALL(SetModelFlags, 12, MODEL_FLAG_FLAG_40, 1)
EVT_CALL(SetModelFlags, 13, MODEL_FLAG_FLAG_40, 1)
EVT_CALL(GetPartPos, ACTOR_SELF, 7, LVar0, LVar1, LVar2)
EVT_CALL(TranslateGroup, 10, LVar0, LVar1, LVar2)
EVT_CALL(GetPartRotation, ACTOR_SELF, 7, LVar0, LVar1, LVar2)
EVT_CALL(RotateGroup, 10, LVar0, 1, 0, 0)
EVT_CALL(RotateGroup, 10, LVar1, 0, 1, 0)
EVT_CALL(RotateGroup, 10, LVar2, 0, 0, 1)
EVT_CALL(SetModelFlags, 9, 64, 1)
EVT_CALL(SetModelFlags, 9, MODEL_FLAG_FLAG_40, 1)
EVT_SET(LVar0, ArrayVar(0))
EVT_IF_EQ(LVar0, 9)
EVT_CALL(GetPartPos, ACTOR_SELF, 8, LVar0, LVar1, LVar2)
@ -1221,7 +1221,7 @@ EvtScript N(idle_8021D508) = {
EVT_CALL(RotateGroup, 44, LVar0, 1, 0, 0)
EVT_CALL(RotateGroup, 44, LVar1, 0, 1, 0)
EVT_CALL(RotateGroup, 44, LVar2, 0, 0, 1)
EVT_CALL(SetModelFlags, 43, 64, 1)
EVT_CALL(SetModelFlags, 43, MODEL_FLAG_FLAG_40, 1)
EVT_SET(LVar0, ArrayVar(0))
EVT_IF_EQ(LVar0, 9)
EVT_CALL(GetPartPos, ACTOR_SELF, 9, LVar0, LVar1, LVar2)
@ -1235,25 +1235,25 @@ EvtScript N(idle_8021D508) = {
EVT_CALL(RotateGroup, 46, LVar0, 1, 0, 0)
EVT_CALL(RotateGroup, 46, LVar1, 0, 1, 0)
EVT_CALL(RotateGroup, 46, LVar2, 0, 0, 1)
EVT_CALL(SetModelFlags, 45, 64, 1)
EVT_CALL(SetModelFlags, 45, MODEL_FLAG_FLAG_40, 1)
EVT_CALL(GetPartPos, ACTOR_SELF, 11, LVar0, LVar1, LVar2)
EVT_CALL(TranslateGroup, 38, LVar0, LVar1, LVar2)
EVT_CALL(GetPartRotation, ACTOR_SELF, 11, LVar0, LVar1, LVar2)
EVT_CALL(RotateGroup, 38, LVar0, 1, 0, 0)
EVT_CALL(RotateGroup, 38, LVar1, 0, 1, 0)
EVT_CALL(RotateGroup, 38, LVar2, 0, 0, 1)
EVT_CALL(SetModelFlags, 35, 64, 1)
EVT_CALL(SetModelFlags, 36, 64, 1)
EVT_CALL(SetModelFlags, 37, 64, 1)
EVT_CALL(SetModelFlags, 35, MODEL_FLAG_FLAG_40, 1)
EVT_CALL(SetModelFlags, 36, MODEL_FLAG_FLAG_40, 1)
EVT_CALL(SetModelFlags, 37, MODEL_FLAG_FLAG_40, 1)
EVT_CALL(GetPartPos, ACTOR_SELF, 10, LVar0, LVar1, LVar2)
EVT_CALL(TranslateGroup, 42, LVar0, LVar1, LVar2)
EVT_CALL(GetPartRotation, ACTOR_SELF, 10, LVar0, LVar1, LVar2)
EVT_CALL(RotateGroup, 42, LVar0, 1, 0, 0)
EVT_CALL(RotateGroup, 42, LVar1, 0, 1, 0)
EVT_CALL(RotateGroup, 42, LVar2, 0, 0, 1)
EVT_CALL(SetModelFlags, 39, 64, 1)
EVT_CALL(SetModelFlags, 40, 64, 1)
EVT_CALL(SetModelFlags, 41, 64, 1)
EVT_CALL(SetModelFlags, 39, MODEL_FLAG_FLAG_40, 1)
EVT_CALL(SetModelFlags, 40, MODEL_FLAG_FLAG_40, 1)
EVT_CALL(SetModelFlags, 41, MODEL_FLAG_FLAG_40, 1)
EVT_CALL(GetActorVar, ACTOR_ENEMY4, 0, LVar0)
EVT_IF_NOT_FLAG(LVar0, 2)
EVT_CALL(GetActorHP, ACTOR_SELF, LVar0)

View File

@ -705,46 +705,50 @@ ApiStatus func_802D286C(Evt* script, s32 isInitialCall) {
return ApiStatus_DONE2;
}
ApiStatus func_802D2884(Evt* script, s32 isInitialCall) {
ApiStatus FacePlayerTowardPoint(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
PlayerStatus* playerStatus = &gPlayerStatus;
f32* ft1 = &script->functionTempF[1];
f32* angle = &script->functionTempF[2];
s32* ft3 = &script->functionTemp[3];
f32* initialYaw = &script->functionTempF[1];
f32* deltaYaw = &script->functionTempF[2];
s32* duration = &script->functionTemp[3];
if (isInitialCall) {
f32 x = evt_get_float_variable(script, *args++);
f32 z = evt_get_float_variable(script, *args++);
f32 yawTemp;
f32 targetX = evt_get_float_variable(script, *args++);
f32 targetY = evt_get_float_variable(script, *args++);
f32 targetYaw;
*ft1 = playerNpc->yaw = playerStatus->targetYaw;
*initialYaw = playerNpc->yaw = playerStatus->targetYaw;
if (playerStatus->position.x != x || playerStatus->position.z != z) {
yawTemp = atan2(playerStatus->position.x, playerStatus->position.z, x, z);
if (playerStatus->position.x != targetX || playerStatus->position.z != targetY) {
targetYaw = atan2(playerStatus->position.x, playerStatus->position.z, targetX, targetY);
} else {
yawTemp = playerStatus->targetYaw;
targetYaw = playerStatus->targetYaw;
}
*angle = yawTemp - *ft1;
*ft3 = evt_get_variable(script, *args++);
*deltaYaw = targetYaw - *initialYaw;
*duration = evt_get_variable(script, *args++);
playerNpc->duration = 0;
if (*angle < -180.0f) {
*angle += 360.0f;
if (*deltaYaw < -180.0f) {
*deltaYaw += 360.0f;
}
if (*angle > 180.0f) {
*angle -= 360.0f;
if (*deltaYaw > 180.0f) {
*deltaYaw -= 360.0f;
}
}
if (*ft3 > 0) {
if (*duration > 0) {
playerNpc->duration++;
playerNpc->yaw = *ft1 + ((*angle * playerNpc->duration) / *ft3);
playerNpc->yaw = *initialYaw + ((*deltaYaw * playerNpc->duration) / *duration);
playerStatus->targetYaw = playerNpc->yaw = clamp_angle(playerNpc->yaw);
return !(playerNpc->duration < *ft3) * ApiStatus_DONE1;
if (playerNpc->duration < *duration) {
return ApiStatus_BLOCK;
} else {
return ApiStatus_DONE1;
}
}
playerNpc->yaw += *angle;
playerNpc->yaw += *deltaYaw;
playerStatus->targetYaw = playerNpc->yaw = clamp_angle(playerNpc->yaw);
return ApiStatus_DONE2;
}

View File

@ -75,7 +75,7 @@ BSS char D_802DBB70[0x100];
// why is this at the end? com section vs bss?
BSS u32 gWorldMapFlags[MAX_MAPFLAGS];
BSS s32 DoorModelsSwingCW[3];
BSS PushBlockGrid* D_802DBC88[8];
BSS PushBlockGrid* wPushBlockGrids[8];
BSS u32 gWorldMapVars[MAX_MAPVARS];
BSS u32 gBattleMapVars[MAX_MAPVARS];
BSS s32 DoorModelsSwingCCW[3];

View File

@ -208,7 +208,7 @@ void action_update_pushing_block(void) {
check_input_jump();
if (playerStatus->animFlags & PA_FLAG_PUSHED_ALBINO_DINO) {
if (playerStatus->animFlags & PA_FLAG_ABORT_PUSHING_BLOCK) {
if (playerStatus->currentStateTime != 0) {
playerStatus->currentStateTime--;
if (playerStatus->currentStateTime == 0) {

View File

@ -445,8 +445,8 @@ EvtScript N(EVS_Scene_TubbaRaid) = {
EVT_SETF(LVar0, EVT_FLOAT(240.0))
EVT_LOOP(20)
EVT_SUBF(LVar0, EVT_FLOAT(12.0))
EVT_CALL(func_802CFD30, 0, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_CALL(func_802CFD30, 1, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Boo_01, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Boo_02, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_WAIT(1)
EVT_END_LOOP
EVT_CALL(SetNpcPos, NPC_Boo_01, NPC_DISPOSE_LOCATION)
@ -565,14 +565,14 @@ EvtScript N(EVS_Scene_TubbaRaid) = {
EVT_SETF(LVar0, EVT_FLOAT(0.0))
EVT_LOOP(20)
EVT_ADDF(LVar0, EVT_FLOAT(12.5))
EVT_CALL(func_802CFD30, 0, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_CALL(func_802CFD30, 1, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_CALL(func_802CFD30, 4, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Boo_01, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Boo_02, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Boo_05, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_WAIT(1)
EVT_END_LOOP
EVT_CALL(func_802CFD30, 0, FOLD_TYPE_NONE, 0, 0, 0, 0)
EVT_CALL(func_802CFD30, 1, FOLD_TYPE_NONE, 0, 0, 0, 0)
EVT_CALL(func_802CFD30, 4, FOLD_TYPE_NONE, 0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Boo_01, FOLD_TYPE_NONE, 0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Boo_02, FOLD_TYPE_NONE, 0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Boo_05, FOLD_TYPE_NONE, 0, 0, 0, 0)
EVT_WAIT(10)
EVT_CALL(SetCamType, CAM_DEFAULT, 4, FALSE)
EVT_CALL(SetCamSpeed, CAM_DEFAULT, EVT_FLOAT(3.0))

View File

@ -133,12 +133,12 @@ EvtScript N(EVS_Scene_BossDefeated) = {
EVT_IF_NE(LVar6, PARTNER_BOW)
EVT_SET(LVar5, 8)
EVT_CALL(SetNpcPos, NPC_Bow, 257, 25, 0)
EVT_CALL(func_802CFD30, 8, FOLD_TYPE_7, 0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Bow, FOLD_TYPE_7, 0, 0, 0, 0)
EVT_CALL(NpcFacePlayer, NPC_Bow, 0)
EVT_CALL(MakeLerp, 0, 240, 20, EASING_LINEAR)
EVT_LOOP(0)
EVT_CALL(UpdateLerp)
EVT_CALL(func_802CFD30, 8, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Bow, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_WAIT(1)
EVT_IF_EQ(LVar1, 0)
EVT_BREAK_LOOP
@ -217,7 +217,7 @@ EvtScript N(EVS_Scene_BossDefeated) = {
EVT_CALL(MakeLerp, 240, 0, 20, EASING_LINEAR)
EVT_LOOP(0)
EVT_CALL(UpdateLerp)
EVT_CALL(func_802CFD30, 8, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Bow, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_WAIT(1)
EVT_IF_EQ(LVar1, 0)
EVT_BREAK_LOOP
@ -282,7 +282,7 @@ EvtScript N(EVS_NpcIdle_Boo) = {
EVT_CALL(MakeLerp, LVar2, 240, LVar3, EASING_LINEAR)
EVT_LOOP(0)
EVT_CALL(UpdateLerp)
EVT_CALL(func_802CFD30, -1, 7, LVar0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_WAIT(1)
EVT_IF_EQ(LVar1, 0)
EVT_BREAK_LOOP

View File

@ -461,7 +461,7 @@ s32 N(BeanstalkIngredients)[] = {
EvtScript N(EVS_BeanPatch_ItemPrompt) = {
EVT_CALL(DisablePlayerInput, TRUE)
EVT_CALL(func_802D2884, -85, 85, 0)
EVT_CALL(FacePlayerTowardPoint, -85, 85, 0)
EVT_CALL(func_802CF56C, 2)
EVT_CALL(DisablePlayerInput, FALSE)
EVT_IF_EQ(GF_FLO00_PlacedFertileSoil, FALSE)

View File

@ -157,10 +157,10 @@ EvtScript N(EVS_SetupClouds) = {
EVT_CALL(ParentColliderToModel, COLLIDER_o78, MODEL_g21)
EVT_CALL(ParentColliderToModel, COLLIDER_o76, MODEL_g22)
EVT_CALL(ParentColliderToModel, COLLIDER_o79, MODEL_g23)
EVT_CALL(SetModelFlags, MODEL_g17, 256, TRUE)
EVT_CALL(SetModelFlags, MODEL_g21, 256, TRUE)
EVT_CALL(SetModelFlags, MODEL_g22, 256, TRUE)
EVT_CALL(SetModelFlags, MODEL_g23, 256, TRUE)
EVT_CALL(SetModelFlags, MODEL_g17, MODEL_FLAG_USE_CAMERA_UNK_MATRIX, TRUE)
EVT_CALL(SetModelFlags, MODEL_g21, MODEL_FLAG_USE_CAMERA_UNK_MATRIX, TRUE)
EVT_CALL(SetModelFlags, MODEL_g22, MODEL_FLAG_USE_CAMERA_UNK_MATRIX, TRUE)
EVT_CALL(SetModelFlags, MODEL_g23, MODEL_FLAG_USE_CAMERA_UNK_MATRIX, TRUE)
EVT_EXEC(N(EVS_AnimatePlatforms))
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_AddPlayerWeight_Platform_01)), TRIGGER_FLOOR_TOUCH, COLLIDER_o77, 1, 0)
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_AddPlayerWeight_Platform_02)), TRIGGER_FLOOR_TOUCH, COLLIDER_o78, 1, 0)

View File

@ -16,7 +16,7 @@ EvtScript N(EVS_Scene_StarWayOpened) = {
EVT_END_IF
EVT_CALL(DisablePlayerInput, TRUE)
EVT_CALL(SetTimeFreezeMode, TIME_FREEZE_PARTIAL)
EVT_CALL(func_802D2884, -30, -160, 0)
EVT_CALL(FacePlayerTowardPoint, -30, -160, 0)
EVT_WAIT(15)
EVT_CALL(ShowMessageAtScreenPos, MSG_HOS_005C, 160, 40)
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)

View File

@ -1083,7 +1083,7 @@ EvtScript N(EVS_CaptureSpirits) = {
EVT_END_IF
EVT_CALL(N(SetCardCaptureState1))
EVT_CALL(SetNpcAnimation, NPC_Klevar, ANIM_WorldKlevar_Panic)
EVT_CALL(func_802CFD30, 5, 0, 0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Klevar, 0, 0, 0, 0, 0)
EVT_CALL(SetNpcFlagBits, NPC_Klevar, NPC_FLAG_2, TRUE)
EVT_CALL(func_802D7B10, ArrayVar(13))
EVT_END_THREAD
@ -1111,7 +1111,7 @@ EvtScript N(EVS_CaptureSpirits) = {
EVT_END_IF
EVT_CALL(N(SetCardCaptureState1))
EVT_CALL(SetNpcAnimation, NPC_Skolar, ANIM_WorldSkolar_IdleSad)
EVT_CALL(func_802CFD30, 2, 0, 0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Skolar, 0, 0, 0, 0, 0)
EVT_CALL(SetNpcFlagBits, NPC_Skolar, NPC_FLAG_2, TRUE)
EVT_CALL(func_802D7B10, ArrayVar(10))
EVT_END_THREAD
@ -1139,7 +1139,7 @@ EvtScript N(EVS_CaptureSpirits) = {
EVT_END_IF
EVT_CALL(N(SetCardCaptureState1))
EVT_CALL(SetNpcAnimation, NPC_Muskular, ANIM_WorldMuskular_Panic)
EVT_CALL(func_802CFD30, 3, 0, 0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Muskular, 0, 0, 0, 0, 0)
EVT_CALL(SetNpcFlagBits, NPC_Muskular, NPC_FLAG_2, TRUE)
EVT_CALL(func_802D7B10, ArrayVar(11))
EVT_END_THREAD
@ -1167,7 +1167,7 @@ EvtScript N(EVS_CaptureSpirits) = {
EVT_END_IF
EVT_CALL(N(SetCardCaptureState1))
EVT_CALL(SetNpcAnimation, NPC_Kalmar, ANIM_WorldKalmar_Panic)
EVT_CALL(func_802CFD30, 6, 0, 0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Kalmar, 0, 0, 0, 0, 0)
EVT_CALL(SetNpcFlagBits, NPC_Kalmar, NPC_FLAG_2, TRUE)
EVT_CALL(func_802D7B10, ArrayVar(14))
EVT_END_THREAD
@ -1195,7 +1195,7 @@ EvtScript N(EVS_CaptureSpirits) = {
EVT_END_IF
EVT_CALL(N(SetCardCaptureState1))
EVT_CALL(SetNpcAnimation, NPC_Misstar, ANIM_WorldMisstar_Panic)
EVT_CALL(func_802CFD30, 4, 0, 0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Misstar, 0, 0, 0, 0, 0)
EVT_CALL(SetNpcFlagBits, NPC_Misstar, NPC_FLAG_2, TRUE)
EVT_CALL(func_802D7B10, ArrayVar(12))
EVT_END_THREAD
@ -1223,7 +1223,7 @@ EvtScript N(EVS_CaptureSpirits) = {
EVT_END_IF
EVT_CALL(N(SetCardCaptureState1))
EVT_CALL(SetNpcAnimation, NPC_Mamar, ANIM_WorldMamar_Panic)
EVT_CALL(func_802CFD30, 1, 0, 0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Mamar, 0, 0, 0, 0, 0)
EVT_CALL(SetNpcFlagBits, NPC_Mamar, NPC_FLAG_2, TRUE)
EVT_CALL(func_802D7B10, ArrayVar(9))
EVT_END_THREAD
@ -2405,7 +2405,7 @@ EvtScript N(EVS_Scene_IntroStory) = {
EVT_END_IF
EVT_CALL(N(SetCardCaptureState1))
EVT_CALL(SetNpcAnimation, NPC_Eldstar, ANIM_WorldEldstar_Panic)
EVT_CALL(func_802CFD30, 0, 0, 0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Eldstar, 0, 0, 0, 0, 0)
EVT_CALL(SetNpcFlagBits, NPC_Eldstar, NPC_FLAG_2, TRUE)
EVT_CALL(func_802D7B10, ArrayVar(8))
EVT_END_THREAD

View File

@ -218,7 +218,7 @@ EvtScript N(EVS_NpcIdle_StoneChomp) = {
EVT_CALL(EnableNpcShadow, NPC_SELF, TRUE)
EVT_WAIT(1)
EVT_CALL(N(DestroyAmbushWorker))
EVT_CALL(func_802CFD30, -1, 0, 0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_SELF, 0, 0, 0, 0, 0)
EVT_CALL(DisablePlayerInput, FALSE)
EVT_CALL(BindNpcAI, NPC_SELF, EVT_PTR(N(EVS_NpcAI_StoneChomp)))
EVT_RETURN

View File

@ -268,7 +268,7 @@ EvtScript N(EVS_NpcDefeat_StoneChomp_Override) = {
EVT_SET(GF_ISK13_Defeated_StoneChomp, TRUE)
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_2, FALSE)
EVT_CALL(EnableNpcShadow, NPC_SELF, TRUE)
EVT_CALL(func_802CFD30, -1, 0, 0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_SELF, 0, 0, 0, 0, 0)
EVT_CALL(N(DestroyAmbushWorker))
EVT_CALL(GetBattleOutcome, LVar0)
EVT_SWITCH(LVar0)

View File

@ -165,7 +165,7 @@ EvtScript N(EVS_NpcIdle_StoneChomp) = {
EVT_CALL(EnableNpcShadow, NPC_SELF, TRUE)
EVT_WAIT(1)
EVT_CALL(N(DestroyAmbushWorker))
EVT_CALL(func_802CFD30, -1, 0, 0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_SELF, 0, 0, 0, 0, 0)
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAG_4 | ENEMY_FLAG_100000, 0)
EVT_WAIT(3)
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)

View File

@ -48,18 +48,18 @@ EvtScript N(EVS_Scene_TutankoopaAppears) = {
EVT_WAIT(30)
EVT_CALL(SetPlayerAnimation, ANIM_Mario_10002)
EVT_END_THREAD
EVT_CALL(func_802CFD30, 1, FOLD_TYPE_7, 0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Tutankoopa_02, FOLD_TYPE_7, 0, 0, 0, 0)
EVT_CALL(SetNpcPos, NPC_Tutankoopa_02, 410, -905, 410)
EVT_CALL(SetNpcAnimation, NPC_Tutankoopa_02, ANIM_Tutankoopa_Anim10)
EVT_CALL(MakeLerp, 0, 255, 100, EASING_QUADRATIC_IN)
EVT_LABEL(2)
EVT_CALL(UpdateLerp)
EVT_CALL(func_802CFD30, 1, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Tutankoopa_02, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_WAIT(1)
EVT_IF_EQ(LVar1, 1)
EVT_GOTO(2)
EVT_END_IF
EVT_CALL(func_802CFD30, 1, FOLD_TYPE_NONE, 0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Tutankoopa_02, FOLD_TYPE_NONE, 0, 0, 0, 0)
EVT_WAIT(30)
EVT_SET(LVar0, 255)
EVT_LOOP(60)
@ -106,17 +106,17 @@ EvtScript N(EVS_Scene_TutankoopaAppears) = {
EVT_WAIT(59)
EVT_CALL(PlaySoundAtNpc, NPC_Tutankoopa_01, SOUND_3EF, SOUND_SPACE_MODE_0)
EVT_END_THREAD
EVT_CALL(func_802CFD30, 0, FOLD_TYPE_7, 255, 0, 0, 0)
EVT_CALL(func_802CFE2C, 0, 0x00000800)
EVT_CALL(func_802CFD30, 0, FOLD_TYPE_5, 14, 2, 1, 0)
EVT_CALL(func_802CFD30, NPC_Tutankoopa_01, FOLD_TYPE_7, 255, 0, 0, 0)
EVT_CALL(func_802CFE2C, NPC_Tutankoopa_01, 0x800)
EVT_CALL(func_802CFD30, NPC_Tutankoopa_01, FOLD_TYPE_5, 14, 2, 1, 0)
EVT_WAIT(39)
EVT_CALL(func_802CFE2C, 0, 0x00000800)
EVT_CALL(func_802CFD30, 0, FOLD_TYPE_5, 13, 2, 1, 0)
EVT_CALL(func_802CFE2C, NPC_Tutankoopa_01, 0x800)
EVT_CALL(func_802CFD30, NPC_Tutankoopa_01, FOLD_TYPE_5, 13, 2, 1, 0)
EVT_WAIT(39)
EVT_CALL(func_802CFE2C, 0, 0x00000800)
EVT_CALL(func_802CFD30, 0, FOLD_TYPE_5, 12, 2, 1, 0)
EVT_CALL(func_802CFE2C, NPC_Tutankoopa_01, 0x0800)
EVT_CALL(func_802CFD30, NPC_Tutankoopa_01, FOLD_TYPE_5, 12, 2, 1, 0)
EVT_WAIT(55)
EVT_CALL(func_802CFD30, 0, FOLD_TYPE_NONE, 0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Tutankoopa_01, FOLD_TYPE_NONE, 0, 0, 0, 0)
EVT_CALL(SetNpcPos, NPC_Tutankoopa_02, 457, -1300, 316)
EVT_WAIT(10)
EVT_CALL(SetPanTarget, CAM_DEFAULT, 438, -800, 332)

View File

@ -206,7 +206,7 @@ EvtScript N(EVS_NpcIdle_Fuzzy_01) = {
EVT_END
};
EvtScript N(EVS_NpcDefeat_Fuzzy_01) = {
EvtScript N(EVS_NpcDefeat_FuzzyBoss) = {
EVT_CALL(GetBattleOutcome, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_EQ(OUTCOME_PLAYER_WON)
@ -261,7 +261,7 @@ EvtScript N(EVS_NpcInit_Fuzzy_01) = {
EVT_CALL(SetSelfVar, 0, 0)
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_Fuzzy_Jungle_Anim04)
EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_Fuzzy_01)))
EVT_CALL(BindNpcDefeat, NPC_SELF, EVT_PTR(N(EVS_NpcDefeat_Fuzzy_01)))
EVT_CALL(BindNpcDefeat, NPC_SELF, EVT_PTR(N(EVS_NpcDefeat_FuzzyBoss)))
EVT_ELSE
EVT_CALL(RemoveNpc, NPC_SELF)
EVT_END_IF

View File

@ -105,10 +105,10 @@ EvtScript N(EVS_Main) = {
TEX_PAN_PARAMS_INIT( 0, 0, 0, 0)
EVT_EXEC(N(EVS_UpdateTexturePan))
EVT_END_THREAD
EVT_CALL(SetModelFlags, MODEL_o189, 256, TRUE)
EVT_CALL(SetModelFlags, MODEL_o186, 256, TRUE)
EVT_CALL(SetModelFlags, MODEL_o192, 256, TRUE)
EVT_CALL(SetModelFlags, MODEL_o195, 256, TRUE)
EVT_CALL(SetModelFlags, MODEL_o189, MODEL_FLAG_USE_CAMERA_UNK_MATRIX, TRUE)
EVT_CALL(SetModelFlags, MODEL_o186, MODEL_FLAG_USE_CAMERA_UNK_MATRIX, TRUE)
EVT_CALL(SetModelFlags, MODEL_o192, MODEL_FLAG_USE_CAMERA_UNK_MATRIX, TRUE)
EVT_CALL(SetModelFlags, MODEL_o195, MODEL_FLAG_USE_CAMERA_UNK_MATRIX, TRUE)
EVT_EXEC(N(EVS_SetupShop))
EVT_RETURN
EVT_END

View File

@ -40,7 +40,7 @@ EvtScript N(EVS_UseSpring) = {
EVT_CALL(SetPlayerJumpscale, EVT_FLOAT(0.1))
EVT_CALL(PlayerJump, -556, 300, -195, 15)
EVT_CALL(DisablePlayerPhysics, FALSE)
EVT_CALL(func_802D2884, -630, -50, 0)
EVT_CALL(FacePlayerTowardPoint, -630, -50, 0)
EVT_CALL(SetPlayerAnimation, ANIM_Mario_AnimMidair)
EVT_CALL(SetPlayerJumpscale, EVT_FLOAT(1.0))
EVT_CALL(PlayerJump2, -601, 376, -105, 30)

View File

@ -75,12 +75,12 @@ EvtScript N(EVS_NpcAux_StarSpirit) = {
EVT_LABEL(1)
EVT_LOOP(50)
EVT_ADDF(LVar0, EVT_FLOAT(0.8))
EVT_CALL(func_802CFD30, -1, 13, 0, ArrayVar(0), MV_Unk_01, LVar0)
EVT_CALL(func_802CFD30, NPC_SELF, 13, 0, ArrayVar(0), MV_Unk_01, LVar0)
EVT_WAIT(1)
EVT_END_LOOP
EVT_LOOP(50)
EVT_ADDF(LVar0, EVT_FLOAT(-0.8))
EVT_CALL(func_802CFD30, -1, 13, 0, ArrayVar(0), MV_Unk_01, LVar0)
EVT_CALL(func_802CFD30, NPC_SELF, 13, 0, ArrayVar(0), MV_Unk_01, LVar0)
EVT_WAIT(1)
EVT_END_LOOP
EVT_GOTO(1)

View File

@ -1540,7 +1540,7 @@ EvtScript N(EVS_Scene_EldstarsPlea) = {
EVT_CALL(MakeLerp, 60, 0, 40, EASING_LINEAR)
EVT_LABEL(6)
EVT_CALL(UpdateLerp)
EVT_CALL(func_802CFD30, 12, 7, LVar0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Eldstar_02, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_WAIT(1)
EVT_IF_EQ(LVar1, 1)
EVT_GOTO(6)
@ -1750,11 +1750,11 @@ EvtScript N(EVS_NpcAI_Eldstar_02) = {
EVT_SETF(LVar0, EVT_FLOAT(100.0))
EVT_LABEL(1)
EVT_LOOP(50)
EVT_CALL(func_802CFD30, -1, 13, 0, ArrayVar(0), 0, MV_Unk_01)
EVT_CALL(func_802CFD30, NPC_SELF, 13, 0, ArrayVar(0), 0, MV_Unk_01)
EVT_WAIT(1)
EVT_END_LOOP
EVT_LOOP(50)
EVT_CALL(func_802CFD30, -1, 13, 0, ArrayVar(0), 0, MV_Unk_01)
EVT_CALL(func_802CFD30, NPC_SELF, 13, 0, ArrayVar(0), 0, MV_Unk_01)
EVT_WAIT(1)
EVT_END_LOOP
EVT_GOTO(1)

View File

@ -240,7 +240,7 @@ EvtScript N(EVS_Scene_KammyStrikes) = {
EVT_CALL(GetNpcPos, NPC_Goombaria, LVar0, LVar1, LVar2)
EVT_CALL(NpcJump0, NPC_Goombaria, LVar0, LVar1, LVar2, 25)
EVT_CALL(SetNpcAnimation, NPC_Goombaria, ANIM_Goombaria_LookUp)
EVT_CALL(func_802CFD30, 1, 0, 0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Goombaria, 0, 0, 0, 0, 0)
EVT_END_THREAD
EVT_CALL(func_802CFE2C, NPC_Goompapa, 0x100)
EVT_CALL(func_802CFD30, NPC_Goompapa, FOLD_TYPE_5, 0, 1, 1, 0)
@ -249,7 +249,7 @@ EvtScript N(EVS_Scene_KammyStrikes) = {
EVT_CALL(GetNpcPos, NPC_Goompapa, LVar0, LVar1, LVar2)
EVT_CALL(NpcJump0, NPC_Goompapa, LVar0, LVar1, LVar2, 25)
EVT_CALL(SetNpcAnimation, NPC_Goompapa, ANIM_Goompapa_LookUp)
EVT_CALL(func_802CFD30, 3, 0, 0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Goompapa, 0, 0, 0, 0, 0)
EVT_WAIT(10)
EVT_CALL(SetNpcAnimation, NPC_Kammy, ANIM_WorldKammy_Anim13)
EVT_CALL(SetCamType, CAM_DEFAULT, 4, FALSE)

View File

@ -1,13 +1,13 @@
EvtScript N(EVS_NpcInit_Eldstar) = {
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_WorldEldstar_Still)
EVT_CALL(func_802CFD30, -1, 8, 0, 0, 0, 128)
EVT_CALL(func_802CFD30, NPC_SELF, 8, 0, 0, 0, 128)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_NpcInit_KoopaBros) = {
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_KoopaBros_Black_Anim1B)
EVT_CALL(func_802CFD30, -1, 14, 80, 80, 80, 0)
EVT_CALL(func_802CFD30, NPC_SELF, 14, 80, 80, 80, 0)
EVT_RETURN
EVT_END
};

View File

@ -1,32 +1,32 @@
EvtScript N(EVS_NpcInit_Mamar) = {
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_WorldMamar_Still)
EVT_CALL(func_802CFD30, -1, 8, 0, 0, 0, 128)
EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_8, 0, 0, 0, 128)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_NpcInit_Tutankoopa) = {
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_Tutankoopa_Anim08)
EVT_CALL(func_802CFD30, -1, 14, 80, 80, 80, 0)
EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_E, 80, 80, 80, 0)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_NpcInit_ChainChomp) = {
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_ChainChomp_Anim03)
EVT_CALL(func_802CFD30, -1, 14, 80, 80, 80, 0)
EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_E, 80, 80, 80, 0)
EVT_CALL(SetNpcPos, NPC_SELF, 5, -25, -180)
EVT_CALL(SetNpcAnimation, NPC_ChainChomp_02, ANIM_ChainChomp_Anim02)
EVT_CALL(func_802CFD30, 13, 14, 80, 80, 80, 0)
EVT_CALL(func_802CFD30, NPC_ChainChomp_02, FOLD_TYPE_E, 80, 80, 80, 0)
EVT_CALL(SetNpcPos, NPC_ChainChomp_02, 35, -14, -180)
EVT_CALL(SetNpcAnimation, NPC_ChainChomp_03, ANIM_ChainChomp_Anim02)
EVT_CALL(func_802CFD30, 14, 14, 80, 80, 80, 0)
EVT_CALL(func_802CFD30, NPC_ChainChomp_03, FOLD_TYPE_E, 80, 80, 80, 0)
EVT_CALL(SetNpcPos, NPC_ChainChomp_03, 52, -18, -180)
EVT_CALL(SetNpcAnimation, NPC_ChainChomp_04, ANIM_ChainChomp_Anim02)
EVT_CALL(func_802CFD30, 15, 14, 80, 80, 80, 0)
EVT_CALL(func_802CFD30, NPC_ChainChomp_04, FOLD_TYPE_E, 80, 80, 80, 0)
EVT_CALL(SetNpcPos, NPC_ChainChomp_04, 69, -19, -180)
EVT_CALL(SetNpcAnimation, NPC_ChainChomp_05, ANIM_ChainChomp_Anim02)
EVT_CALL(func_802CFD30, 16, 14, 80, 80, 80, 0)
EVT_CALL(func_802CFD30, NPC_ChainChomp_05, FOLD_TYPE_E, 80, 80, 80, 0)
EVT_CALL(SetNpcPos, NPC_ChainChomp_05, 86, -19, -180)
EVT_RETURN
EVT_END

View File

@ -1,13 +1,13 @@
EvtScript N(EVS_NpcInit_Skolar) = {
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_WorldSkolar_Still)
EVT_CALL(func_802CFD30, -1, 8, 0, 0, 0, 128)
EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_8, 0, 0, 0, 128)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_NpcInit_Tubba) = {
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_WorldTubba_Anim10)
EVT_CALL(func_802CFD30, -1, 14, 80, 80, 80, 0)
EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_E, 80, 80, 80, 0)
EVT_RETURN
EVT_END
};

View File

@ -1,20 +1,20 @@
EvtScript N(EVS_NpcInit_Muskular) = {
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_WorldMuskular_Still)
EVT_CALL(func_802CFD30, -1, 8, 0, 0, 0, 128)
EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_8, 0, 0, 0, 128)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_NpcInit_GeneralGuy) = {
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_GeneralGuy_Anim03)
EVT_CALL(func_802CFD30, -1, 14, 80, 80, 80, 0)
EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_E, 80, 80, 80, 0)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_NpcInit_ShyGuy) = {
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_ShyGuy_Red_Anim02)
EVT_CALL(func_802CFD30, -1, 14, 80, 80, 80, 0)
EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_E, 80, 80, 80, 0)
EVT_RETURN
EVT_END
};

View File

@ -1,6 +1,6 @@
EvtScript N(EVS_NpcInit_Misstar) = {
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_WorldMisstar_Still)
EVT_CALL(func_802CFD30, -1, 8, 0, 0, 0, 128)
EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_8, 0, 0, 0, 128)
EVT_RETURN
EVT_END
};

View File

@ -1,13 +1,13 @@
EvtScript N(EVS_NpcInit_Klevar) = {
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_WorldKlevar_Still)
EVT_CALL(func_802CFD30, -1, 8, 0, 0, 0, 128)
EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_8, 0, 0, 0, 128)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_NpcInit_HuffNPuff_Body) = {
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_HuffNPuff_Anim1A)
EVT_CALL(func_802CFD30, -1, 14, 80, 80, 80, 0)
EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_E, 80, 80, 80, 0)
EVT_CALL(SetNpcPos, NPC_SELF, 40, 45, 1)
EVT_RETURN
EVT_END
@ -15,7 +15,7 @@ EvtScript N(EVS_NpcInit_HuffNPuff_Body) = {
EvtScript N(EVS_NpcInit_HuffNPuff_Face) = {
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_HuffNPuff_Anim1B)
EVT_CALL(func_802CFD30, -1, 14, 80, 80, 80, 0)
EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_E, 80, 80, 80, 0)
EVT_CALL(SetNpcPos, NPC_SELF, 40, 45, 1)
EVT_RETURN
EVT_END
@ -23,7 +23,7 @@ EvtScript N(EVS_NpcInit_HuffNPuff_Face) = {
EvtScript N(EVS_NpcInit_HuffNPuff_Arms) = {
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_HuffNPuff_Anim1C)
EVT_CALL(func_802CFD30, -1, 14, 80, 80, 80, 0)
EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_E, 80, 80, 80, 0)
EVT_CALL(SetNpcPos, NPC_SELF, 40, 45, 1)
EVT_RETURN
EVT_END
@ -31,10 +31,10 @@ EvtScript N(EVS_NpcInit_HuffNPuff_Arms) = {
EvtScript N(EVS_NpcInit_TuffPuff_01) = {
EVT_CALL(SetNpcAnimation, NPC_TuffPuff_01, ANIM_TuffPuff_Idle)
EVT_CALL(func_802CFD30, 28, 14, 80, 80, 80, 0)
EVT_CALL(func_802CFD30, NPC_TuffPuff_01, FOLD_TYPE_E, 80, 80, 80, 0)
EVT_CALL(SetNpcPos, NPC_TuffPuff_01, 120, -1, -51)
EVT_CALL(SetNpcAnimation, NPC_TuffPuff_02, ANIM_TuffPuff_Idle)
EVT_CALL(func_802CFD30, 29, 14, 80, 80, 80, 0)
EVT_CALL(func_802CFD30, NPC_TuffPuff_02, FOLD_TYPE_E, 80, 80, 80, 0)
EVT_CALL(SetNpcPos, NPC_TuffPuff_02, -40, 59, 1)
EVT_RETURN
EVT_END

View File

@ -1,34 +1,34 @@
EvtScript N(EVS_NpcInit_Kalmar) = {
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_WorldKalmar_Still)
EVT_CALL(func_802CFD30, -1, 8, 0, 0, 0, 128)
EVT_CALL(func_802CFD30, NPC_SELF, 8, 0, 0, 0, 128)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_NpcInit_CrystalKing) = {
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_CrystalKing_Anim09)
EVT_CALL(func_802CFD30, -1, 14, 80, 80, 80, 0)
EVT_CALL(func_802CFD30, NPC_SELF, 14, 80, 80, 80, 0)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_NpcInit_IceCube) = {
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_CrystalKing_Anim0A)
EVT_CALL(func_802CFD30, -1, 14, 80, 80, 80, 0)
EVT_CALL(func_802CFD30, NPC_SELF, 14, 80, 80, 80, 0)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_NpcInit_IceSphere) = {
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_CrystalKing_Anim0B)
EVT_CALL(func_802CFD30, -1, 14, 80, 80, 80, 0)
EVT_CALL(func_802CFD30, NPC_SELF, 14, 80, 80, 80, 0)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_NpcInit_IceSpike) = {
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_CrystalKing_Anim0C)
EVT_CALL(func_802CFD30, -1, 14, 80, 80, 80, 0)
EVT_CALL(func_802CFD30, NPC_SELF, 14, 80, 80, 80, 0)
EVT_RETURN
EVT_END
};

View File

@ -1,6 +1,6 @@
EvtScript N(EVS_NpcInit_Bowser) = {
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_WorldBowser_Talk)
EVT_CALL(func_802CFD30, -1, 14, 80, 80, 80, 0)
EVT_CALL(func_802CFD30, NPC_SELF, 14, 80, 80, 80, 0)
EVT_RETURN
EVT_END
};

View File

@ -179,9 +179,9 @@ EvtScript N(EVS_NpcAux_LavaPiranhaHead) = {
};
EvtScript N(EVS_NpcInit_LavaPiranhaHead) = {
EVT_CALL(func_802CFD30, 21, 14, 80, 80, 80, 0)
EVT_CALL(func_802CFD30, 22, 14, 80, 80, 80, 0)
EVT_CALL(func_802CFD30, 23, 14, 80, 80, 80, 0)
EVT_CALL(func_802CFD30, NPC_LavaPiranhaHead, FOLD_TYPE_E, 80, 80, 80, 0)
EVT_CALL(func_802CFD30, NPC_LavaBud_01, FOLD_TYPE_E, 80, 80, 80, 0)
EVT_CALL(func_802CFD30, NPC_LavaBud_02, FOLD_TYPE_E, 80, 80, 80, 0)
EVT_CALL(SetNpcAnimation, NPC_LavaPiranhaHead, ANIM_LavaPiranha_Anim03)
EVT_CALL(SetNpcAnimation, NPC_LavaBud_01, ANIM_LavaBud_Anim03)
EVT_CALL(SetNpcAnimation, NPC_LavaBud_02, ANIM_LavaBud_Anim03)

View File

@ -45,7 +45,7 @@ EvtScript N(EVS_Kolorado_TrompImpact) = {
EVT_CALL(SetNpcRotationPivot, NPC_Kolorado, 13)
EVT_CALL(SetNpcRotation, NPC_Kolorado, 0, 0, 250)
EVT_CALL(SetNpcAnimation, NPC_Kolorado, ANIM_Kolorado_HurtStill)
EVT_CALL(func_802CFD30, 0, FOLD_TYPE_4, EVT_FLOAT(3.0), EVT_FLOAT(3.0), 0, 0)
EVT_CALL(func_802CFD30, NPC_Kolorado, FOLD_TYPE_4, EVT_FLOAT(3.0), EVT_FLOAT(3.0), 0, 0)
EVT_CALL(PlaySoundAtNpc, NPC_Kolorado, SOUND_HIT_PLAYER_NORMAL, SOUND_SPACE_MODE_0)
EVT_THREAD
EVT_CALL(SetNpcCollisionSize, NPC_Kolorado, 20, 24)
@ -70,7 +70,7 @@ EvtScript N(EVS_Kolorado_HurtInit) = {
EVT_CALL(SetNpcRotationPivot, NPC_Kolorado, 13)
EVT_CALL(SetNpcRotation, NPC_Kolorado, 0, 0, 250)
EVT_CALL(SetNpcAnimation, NPC_Kolorado, ANIM_Kolorado_HurtStill)
EVT_CALL(func_802CFD30, 0, FOLD_TYPE_4, EVT_FLOAT(3.0), EVT_FLOAT(3.0), 0, 0)
EVT_CALL(func_802CFD30, NPC_Kolorado, FOLD_TYPE_4, EVT_FLOAT(3.0), EVT_FLOAT(3.0), 0, 0)
EVT_RETURN
EVT_END
};

View File

@ -28,8 +28,8 @@ EvtScript N(EVS_LuigiExitPipe_Intro) = {
EVT_CALL(SetNpcYaw, NPC_Luigi_Intro, 135)
EVT_WAIT(2)
EVT_CALL(PlaySoundAtNpc, NPC_Luigi_Intro, SOUND_ENTER_PIPE, SOUND_SPACE_MODE_0)
EVT_CALL(func_802CFE2C, 0, 0x100)
EVT_CALL(func_802CFD30, 0, FOLD_TYPE_5, 2, 1, 1, 0)
EVT_CALL(func_802CFE2C, NPC_Luigi_Intro, 0x100)
EVT_CALL(func_802CFD30, NPC_Luigi_Intro, FOLD_TYPE_5, 2, 1, 1, 0)
EVT_CALL(SetNpcPos, NPC_Luigi_Intro, -100, -10, -370)
EVT_CALL(GetNpcPos, NPC_Luigi_Intro, LVar0, LVar1, LVar2)
EVT_LOOP(45)
@ -37,7 +37,7 @@ EvtScript N(EVS_LuigiExitPipe_Intro) = {
EVT_CALL(SetNpcPos, NPC_Luigi_Intro, LVar0, LVar1, LVar2)
EVT_WAIT(1)
EVT_END_LOOP
EVT_CALL(func_802CFD30, 0, FOLD_TYPE_NONE, 0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Luigi_Intro, FOLD_TYPE_NONE, 0, 0, 0, 0)
EVT_CALL(SetNpcPos, NPC_Luigi_Intro, -100, 30, -370)
EVT_WAIT(3)
EVT_CALL(EnableNpcShadow, NPC_Luigi_Intro, TRUE)

View File

@ -28,8 +28,8 @@ EvtScript N(EVS_LuigiExitPipe_Epilogue) = {
EVT_CALL(SetNpcYaw, NPC_Luigi_Epilogue, 135)
EVT_WAIT(2)
EVT_CALL(PlaySoundAtNpc, NPC_Luigi_Epilogue, SOUND_ENTER_PIPE, SOUND_SPACE_MODE_0)
EVT_CALL(func_802CFE2C, 25, 0x100)
EVT_CALL(func_802CFD30, 25, FOLD_TYPE_5, 2, 1, 1, 0)
EVT_CALL(func_802CFE2C, NPC_Luigi_Epilogue, 0x100)
EVT_CALL(func_802CFD30, NPC_Luigi_Epilogue, FOLD_TYPE_5, 2, 1, 1, 0)
EVT_CALL(SetNpcPos, NPC_Luigi_Epilogue, -100, -10, -370)
EVT_CALL(GetNpcPos, NPC_Luigi_Epilogue, LVar0, LVar1, LVar2)
EVT_LOOP(45)
@ -37,7 +37,7 @@ EvtScript N(EVS_LuigiExitPipe_Epilogue) = {
EVT_CALL(SetNpcPos, NPC_Luigi_Epilogue, LVar0, LVar1, LVar2)
EVT_WAIT(1)
EVT_END_LOOP
EVT_CALL(func_802CFD30, 25, FOLD_TYPE_NONE, 0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Luigi_Epilogue, FOLD_TYPE_NONE, 0, 0, 0, 0)
EVT_CALL(SetNpcPos, NPC_Luigi_Epilogue, -100, 30, -370)
EVT_WAIT(3)
EVT_CALL(EnableNpcShadow, NPC_Luigi_Epilogue, TRUE)

View File

@ -8,7 +8,7 @@ EvtScript N(D_8024ACA4_82DF64) = {
EVT_END_IF
EVT_LOOP(10)
EVT_ADDF(LVar0, LVar1)
EVT_CALL(func_802CFD30, 9, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Bootler, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_WAIT(1)
EVT_END_LOOP
EVT_RETURN
@ -67,7 +67,7 @@ EvtScript N(EVS_NpcIdle_Bootler) = {
EVT_WAIT(20)
EVT_SETF(LVar0, EVT_FLOAT(0.0))
EVT_CALL(SetNpcAnimation, NPC_Bootler, ANIM_Bootler_Spook)
EVT_CALL(func_802CFD30, -1, 7, 0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_7, 0, 0, 0, 0)
EVT_CALL(SetNpcYaw, NPC_SELF, 270)
EVT_CALL(SetNpcPos, NPC_SELF, 500, 50, 30)
EVT_EXEC_WAIT(N(D_8024ACA4_82DF64))

View File

@ -19,7 +19,7 @@ MAP_STATIC_PAD(1,key_choice);
#include "world/common/complete/KeyItemChoice.inc.c"
EvtScript N(EVS_TossTrainInToybox) = {
EVT_CALL(func_802D2884, -440, -150, 0)
EVT_CALL(FacePlayerTowardPoint, -440, -150, 0)
EVT_WAIT(15)
EVT_THREAD
EVT_WAIT(7)

View File

@ -49,12 +49,12 @@ EvtScript N(EVS_NpcAux_Misstar) = {
EVT_SETF(LVar0, EVT_FLOAT(40.0))
EVT_LOOP(20)
EVT_ADDF(LVar0, EVT_FLOAT(4.0))
EVT_CALL(func_802CFD30, -1, 7, LVar0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_WAIT(1)
EVT_END_LOOP
EVT_LOOP(20)
EVT_ADDF(LVar0, EVT_FLOAT(-4.0))
EVT_CALL(func_802CFD30, -1, 7, LVar0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_WAIT(1)
EVT_END_LOOP
EVT_GOTO(0)

View File

@ -69,7 +69,7 @@ EvtScript N(EVS_ManageEvilTree) = {
EvtScript N(EVS_SetupExitHint) = {
EVT_CALL(SetCustomGfxBuilders, CUSTOM_GFX_1, EVT_PTR(N(gfx_build_evil_tree_face)), 0)
EVT_CALL(SetModelCustomGfx, MODEL_kao, CUSTOM_GFX_1, -1)
EVT_CALL(SetModelFlags, MODEL_kao, 16, TRUE)
EVT_CALL(SetModelFlags, MODEL_kao, MODEL_FLAG_USES_CUSTOM_GFX, TRUE)
EVT_WAIT(20)
EVT_EXEC(N(EVS_ManageEvilTree))
EVT_THREAD

View File

@ -113,7 +113,7 @@ EvtScript N(EVS_OnInspectEvilRock) = {
EvtScript N(EVS_SetupExitHint) = {
EVT_CALL(SetCustomGfxBuilders, CUSTOM_GFX_1, EVT_PTR(N(gfx_build_evil_rock_face)), 0)
EVT_CALL(SetModelCustomGfx, MODEL_o440, CUSTOM_GFX_1, -1)
EVT_CALL(SetModelFlags, MODEL_o440, 16, TRUE)
EVT_CALL(SetModelFlags, MODEL_o440, MODEL_FLAG_USES_CUSTOM_GFX, TRUE)
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_OnInspectEvilRock)), TRIGGER_WALL_PRESS_A, COLLIDER_o491, 1, 0)
EVT_CALL(SetTexPanner, MODEL_o440, TEX_PANNER_0)
EVT_RETURN

View File

@ -107,7 +107,7 @@ EvtScript N(EVS_Scene_BootlersInvitation) = {
EVT_END_THREAD
EVT_CALL(DisablePlayerInput, TRUE)
EVT_CALL(SetNpcPos, NPC_Bootler, 200, 44, 0)
EVT_CALL(func_802CFD30, 0, FOLD_TYPE_7, 0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Bootler, FOLD_TYPE_7, 0, 0, 0, 0)
EVT_SET(MV_Unk_00, TRUE)
EVT_CALL(SetMusicTrack, 0, SONG_BOOS_MANSION, 0, 8)
EVT_WAIT(20)
@ -125,7 +125,7 @@ EvtScript N(EVS_Scene_BootlersInvitation) = {
EVT_SETF(LVar0, EVT_FLOAT(0.0))
EVT_LOOP(20)
EVT_ADDF(LVar0, EVT_FLOAT(12.0))
EVT_CALL(func_802CFD30, 0, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Bootler, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_WAIT(1)
EVT_END_LOOP
EVT_WAIT(20)
@ -150,7 +150,7 @@ EvtScript N(EVS_Scene_BootlersInvitation) = {
EVT_SETF(LVar0, EVT_FLOAT(240.0))
EVT_LOOP(20)
EVT_SUBF(LVar0, EVT_FLOAT(12.0))
EVT_CALL(func_802CFD30, 0, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Bootler, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_WAIT(1)
EVT_END_LOOP
EVT_WAIT(25)
@ -163,7 +163,7 @@ EvtScript N(EVS_Scene_BootlersInvitation) = {
EVT_SETF(LVar0, EVT_FLOAT(0.0))
EVT_LOOP(20)
EVT_ADDF(LVar0, EVT_FLOAT(12.0))
EVT_CALL(func_802CFD30, 0, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Bootler, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_WAIT(1)
EVT_END_LOOP
EVT_END_THREAD
@ -176,7 +176,7 @@ EvtScript N(EVS_Scene_BootlersInvitation) = {
EVT_SETF(LVar0, EVT_FLOAT(240.0))
EVT_LOOP(20)
EVT_SUBF(LVar0, EVT_FLOAT(12.0))
EVT_CALL(func_802CFD30, 0, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Bootler, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_WAIT(1)
EVT_END_LOOP
EVT_SET(GB_StoryProgress, STORY_CH3_INVITED_TO_BOOS_MANSION)

View File

@ -46,7 +46,7 @@ EvtScript N(D_80242560_BB95D0) = {
EVT_SETF(LVar0, EVT_FLOAT(0.0))
EVT_LOOP(90)
EVT_ADDF(LVar0, EVT_FLOAT(2.667))
EVT_CALL(func_802CFD30, 0, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Bootler, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_WAIT(1)
EVT_END_LOOP
EVT_CALL(SpeakToPlayer, NPC_Bootler, ANIM_Bootler_Talk, ANIM_Bootler_Idle, 0, MSG_CH3_0028)
@ -69,7 +69,7 @@ EvtScript N(D_80242560_BB95D0) = {
EVT_SETF(LVar0, EVT_FLOAT(240.0))
EVT_LOOP(90)
EVT_SUBF(LVar0, EVT_FLOAT(2.667))
EVT_CALL(func_802CFD30, 0, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Bootler, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_WAIT(1)
EVT_END_LOOP
EVT_CALL(RemoveNpc, NPC_Bootler)

View File

@ -66,7 +66,7 @@ EvtScript N(EVS_NpcInit_Bootler) = {
EVT_SWITCH(GB_StoryProgress)
EVT_CASE_LT(STORY_CH3_OPENED_BOOS_MANSION_GATE)
EVT_CALL(EnableNpcShadow, NPC_SELF, FALSE)
EVT_CALL(func_802CFD30, -1, 7, 0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_7, 0, 0, 0, 0)
EVT_CASE_DEFAULT
EVT_CALL(RemoveNpc, NPC_SELF)
EVT_END_SWITCH

View File

@ -0,0 +1,19 @@
#include "common.h"
EvtScript N(EVS_GetIntoShell) = {
EVT_CALL(GetNpcYaw, LVar4, LVar1)
EVT_SET(LVar2, 30)
EVT_IF_GT(LVar1, 151)
EVT_IF_LE(LVar1, 331)
EVT_SET(LVar2, -30)
EVT_END_IF
EVT_END_IF
EVT_SET(LVar0, 0)
EVT_LOOP(15)
EVT_ADD(LVar0, LVar2)
EVT_CALL(SetNpcRotation, LVar3, 0, 0, LVar0)
EVT_WAIT(1)
EVT_END_LOOP
EVT_RETURN
EVT_END
};

View File

@ -2,38 +2,44 @@
#define _WORLD_AREA_NOK_NOK_H_
enum {
AB_NOK_0 = AreaByte(0),
AB_NOK_1 = AreaByte(1),
AB_NOK_2 = AreaByte(2),
AB_NOK_3 = AreaByte(3),
AB_NOK_4 = AreaByte(4),
AB_NOK_5 = AreaByte(5),
AB_NOK_6 = AreaByte(6),
AB_NOK_7 = AreaByte(7),
AB_NOK_8 = AreaByte(8),
AB_NOK_9 = AreaByte(9),
AB_NOK_A = AreaByte(10),
AB_NOK_B = AreaByte(11),
AB_NOK_C = AreaByte(12),
AB_NOK_D = AreaByte(13),
AB_NOK_E = AreaByte(14),
AB_NOK_F = AreaByte(15),
AB_NOK_0 = AreaByte(0),
AB_NOK_1 = AreaByte(1),
AB_NOK_2 = AreaByte(2),
AB_NOK_Unused_3 = AreaByte(3),
AB_NOK_Unused_4 = AreaByte(4),
AB_NOK_Unused_5 = AreaByte(5),
AB_NOK_Unused_6 = AreaByte(6),
AB_NOK_Unused_7 = AreaByte(7),
AB_NOK_Unused_8 = AreaByte(8),
AB_NOK_Unused_9 = AreaByte(9),
AB_NOK_Unused_A = AreaByte(10),
AB_NOK_Unused_B = AreaByte(11),
AB_NOK_Unused_C = AreaByte(12),
AB_NOK_Unused_D = AreaByte(13),
AB_NOK_Unused_E = AreaByte(14),
AB_NOK_Unused_F = AreaByte(15),
};
enum {
AF_NOK_01 = AreaFlag(1),
AF_NOK_02 = AreaFlag(2),
AF_NOK_09 = AreaFlag(9),
AF_NOK_0A = AreaFlag(10),
AF_NOK_0B = AreaFlag(11),
AF_NOK_0C = AreaFlag(12),
AF_NOK_0E = AreaFlag(14),
AF_NOK_0F = AreaFlag(15),
AF_NOK_10 = AreaFlag(16),
AF_NOK_11 = AreaFlag(17),
AF_NOK_12 = AreaFlag(18),
AF_NOK_13 = AreaFlag(19),
AF_NOK_15 = AreaFlag(21),
AF_NOK12_HitSwitch = AreaFlag(1),
AF_NOK14_HitSwitch = AreaFlag(2),
AF_NOK04_PlayingGame = AreaFlag(3),
AF_NOK04_BattleStarted = AreaFlag(4),
AF_NOK04_BattleDone = AreaFlag(5),
AF_NOK04_TauntMsgDone = AreaFlag(6),
AF_NOK04_FleeMsgDone = AreaFlag(7),
AF_NOK04_CamPanDone = AreaFlag(8),
AF_NOK01_Dialogue_RelaxedKoopa = AreaFlag(9),
AF_NOK01_Dialogue_Bobomb_01_Crisis = AreaFlag(10),
AF_NOK01_Dialogue_Bobomb_01 = AreaFlag(11),
AF_NOK01_Dialogue_Bobomb_02 = AreaFlag(12),
AF_NOK_0E = AreaFlag(14),
AF_NOK_0F = AreaFlag(15),
AF_NOK_10 = AreaFlag(16),
AF_NOK_11 = AreaFlag(17),
AF_NOK_12 = AreaFlag(18),
AF_NOK_13 = AreaFlag(19),
AF_NOK_15 = AreaFlag(21),
};
extern MapSettings nok_01_settings;

View File

@ -88,9 +88,9 @@ EvtScript N(EVS_Main) = {
EVT_CALL(SetSpriteShading, SHADING_NONE)
EVT_SETUP_CAMERA_NO_LEAD()
EVT_SET(GF_MAP_KoopaVillage, TRUE)
EVT_SET(AF_NOK_09, FALSE)
EVT_SET(AF_NOK_0A, FALSE)
EVT_SET(AF_NOK_0C, FALSE)
EVT_SET(AF_NOK01_Dialogue_RelaxedKoopa, FALSE)
EVT_SET(AF_NOK01_Dialogue_Bobomb_01_Crisis, FALSE)
EVT_SET(AF_NOK01_Dialogue_Bobomb_02, FALSE)
EVT_SET(AF_NOK_0E, FALSE)
EVT_SET(GF_NOK01_Bush4_KoopaLeaf, FALSE)
EVT_IF_GE(GB_StoryProgress, STORY_CH1_KOOPER_JOINED_PARTY)

View File

@ -126,23 +126,7 @@ EvtScript N(EVS_DoNothing) = {
EVT_END
};
EvtScript N(EVS_GetBackIntoShell) = {
EVT_CALL(GetNpcYaw, LVar4, LVar1)
EVT_SET(LVar2, 30)
EVT_IF_GT(LVar1, 151)
EVT_IF_LE(LVar1, 331)
EVT_SET(LVar2, -30)
EVT_END_IF
EVT_END_IF
EVT_SET(LVar0, 0)
EVT_LOOP(15)
EVT_ADD(LVar0, LVar2)
EVT_CALL(SetNpcRotation, LVar3, 0, 0, LVar0)
EVT_WAIT(1)
EVT_END_LOOP
EVT_RETURN
EVT_END
};
#include "../common/GetIntoShell.inc.c"
Vec2i N(FuzzyJumpPath1)[] = {
{ -255, 399 },
@ -398,12 +382,12 @@ EvtScript N(EVS_NpcInit_MortT) = {
EvtScript N(EVS_NpcInteract_RelaxedKoopa) = {
EVT_IF_LT(GB_StoryProgress, STORY_CH1_KOOPER_JOINED_PARTY)
EVT_IF_EQ(AF_NOK_09, FALSE)
EVT_IF_EQ(AF_NOK01_Dialogue_RelaxedKoopa, FALSE)
EVT_CALL(SpeakToPlayer, NPC_RelaxedKoopa, ANIM_Koopa_LeanBackTalk, ANIM_Koopa_LeanBack, 5, MSG_CH1_0021)
EVT_SET(AF_NOK_09, TRUE)
EVT_SET(AF_NOK01_Dialogue_RelaxedKoopa, TRUE)
EVT_ELSE
EVT_CALL(SpeakToPlayer, NPC_RelaxedKoopa, ANIM_Koopa_LeanBackTalk, ANIM_Koopa_LeanBack, 5, MSG_CH1_0022)
EVT_SET(AF_NOK_09, FALSE)
EVT_SET(AF_NOK01_Dialogue_RelaxedKoopa, FALSE)
EVT_END_IF
EVT_RETURN
EVT_END_IF

View File

@ -40,7 +40,7 @@ EvtScript N(EVS_Scene_RecoverTreeShell) = {
EVT_ADD(LVar1, 20)
EVT_SET(LVar3, NPC_KoopaShell_03)
EVT_SET(LVar4, NPC_Koopa_03)
EVT_EXEC(N(EVS_GetBackIntoShell))
EVT_EXEC(N(EVS_GetIntoShell))
EVT_CALL(InterpNpcYaw, LVar3, 60, 0)
EVT_CALL(NpcJump0, NPC_KoopaShell_03, LVar0, LVar1, LVar2, 30)
EVT_CALL(SetNpcPos, NPC_KoopaShell_03, NPC_DISPOSE_LOCATION)
@ -117,7 +117,7 @@ EvtScript N(EVS_Scene_RecoverBlockShell) = {
EVT_ADD(LVar1, 20)
EVT_SET(LVar3, NPC_KoopaShell_02)
EVT_SET(LVar4, NPC_Koopa_02)
EVT_EXEC(N(EVS_GetBackIntoShell))
EVT_EXEC(N(EVS_GetIntoShell))
EVT_CALL(InterpNpcYaw, LVar3, 60, 0)
EVT_CALL(NpcJump0, NPC_KoopaShell_02, LVar0, LVar1, LVar2, 30)
EVT_CALL(SetNpcPos, NPC_KoopaShell_02, NPC_DISPOSE_LOCATION)
@ -438,7 +438,7 @@ EvtScript N(EVS_NpcHit_FuzzyWithShell) = {
EVT_ADD(LVar1, 20)
EVT_SET(LVar3, NPC_KooversShell)
EVT_SET(LVar4, NPC_Koover)
EVT_EXEC(N(EVS_GetBackIntoShell))
EVT_EXEC(N(EVS_GetIntoShell))
EVT_CALL(InterpNpcYaw, LVar3, 60, 0)
EVT_CALL(NpcJump0, NPC_KooversShell, LVar0, LVar1, LVar2, 30)
EVT_CALL(SetNpcPos, NPC_KooversShell, NPC_DISPOSE_LOCATION)
@ -463,11 +463,11 @@ EvtScript N(EVS_NpcHit_FuzzyWithShell) = {
};
EvtScript N(EVS_NpcInteract_Bobomb_01_Crisis) = {
EVT_IF_EQ(AF_NOK_0A, FALSE)
EVT_SET(AF_NOK_0A, TRUE)
EVT_IF_EQ(AF_NOK01_Dialogue_Bobomb_01_Crisis, FALSE)
EVT_SET(AF_NOK01_Dialogue_Bobomb_01_Crisis, TRUE)
EVT_SET(LVar0, MSG_CH1_003D)
EVT_ELSE
EVT_SET(AF_NOK_0A, FALSE)
EVT_SET(AF_NOK01_Dialogue_Bobomb_01_Crisis, FALSE)
EVT_SET(LVar0, MSG_CH1_003E)
EVT_END_IF
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_WorldBobomb_Red_Talk, ANIM_WorldBobomb_Red_Idle, 0, LVar0)
@ -482,11 +482,11 @@ EvtScript N(EVS_NpcInit_Bobomb_01_Crisis) = {
};
EvtScript N(EVS_NpcInteract_Bobomb_02_Crisis) = {
EVT_IF_EQ(AF_NOK_0C, FALSE)
EVT_SET(AF_NOK_0C, TRUE)
EVT_IF_EQ(AF_NOK01_Dialogue_Bobomb_02, FALSE)
EVT_SET(AF_NOK01_Dialogue_Bobomb_02, TRUE)
EVT_SET(LVar0, MSG_CH1_0044)
EVT_ELSE
EVT_SET(AF_NOK_0C, FALSE)
EVT_SET(AF_NOK01_Dialogue_Bobomb_02, FALSE)
EVT_SET(LVar0, MSG_CH1_0045)
EVT_END_IF
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_WorldBobomb_Red_Talk, ANIM_WorldBobomb_Red_Idle, 0, LVar0)

View File

@ -79,11 +79,11 @@ EvtScript N(EVS_NpcInteract_Koopa_03_Normal) = {
EvtScript N(EVS_NpcInteract_Bobomb_01_Normal) = {
EVT_SWITCH(GB_StoryProgress)
EVT_CASE_LT(STORY_CH1_STAR_SPRIT_DEPARTED)
EVT_IF_EQ(AF_NOK_0B, FALSE)
EVT_SET(AF_NOK_0B, TRUE)
EVT_IF_EQ(AF_NOK01_Dialogue_Bobomb_01, FALSE)
EVT_SET(AF_NOK01_Dialogue_Bobomb_01, TRUE)
EVT_SET(LVar0, MSG_CH1_003F)
EVT_ELSE
EVT_SET(AF_NOK_0B, FALSE)
EVT_SET(AF_NOK01_Dialogue_Bobomb_01, FALSE)
EVT_SET(LVar0, MSG_CH1_0040)
EVT_END_IF
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_WorldBobomb_Red_Talk, ANIM_WorldBobomb_Red_Idle, 0, LVar0)
@ -109,17 +109,17 @@ EvtScript N(EVS_NpcInteract_Bobomb_01_Normal) = {
EvtScript N(EVS_NpcInteract_Bobomb_02_Normal) = {
EVT_SWITCH(GB_StoryProgress)
EVT_CASE_LT(STORY_CH1_STAR_SPRIT_DEPARTED)
EVT_IF_EQ(AF_NOK_0C, FALSE)
EVT_SET(AF_NOK_0C, TRUE)
EVT_IF_EQ(AF_NOK01_Dialogue_Bobomb_02, FALSE)
EVT_SET(AF_NOK01_Dialogue_Bobomb_02, TRUE)
EVT_SET(LVar0, MSG_CH1_0046)
EVT_ELSE
EVT_SET(AF_NOK_0C, FALSE)
EVT_SET(AF_NOK01_Dialogue_Bobomb_02, FALSE)
EVT_SET(LVar0, MSG_CH1_0047)
EVT_END_IF
EVT_CALL(SpeakToPlayer, NPC_SELF, ANIM_WorldBobomb_Red_Talk, ANIM_WorldBobomb_Red_Idle, 0, LVar0)
EVT_CASE_LT(STORY_CH4_STAR_SPRIT_DEPARTED)
EVT_IF_EQ(AF_NOK_0C, FALSE)
EVT_SET(AF_NOK_0C, TRUE)
EVT_IF_EQ(AF_NOK01_Dialogue_Bobomb_02, FALSE)
EVT_SET(AF_NOK01_Dialogue_Bobomb_02, TRUE)
EVT_CALL(NpcFacePlayer, NPC_SELF, 0)
EVT_CALL(BringPartnerOut, PARTNER_BOMBETTE)
EVT_CALL(NpcFaceNpc, NPC_PARTNER, NPC_SELF, 0)

View File

@ -6,7 +6,6 @@
#define NAME_SUFFIX _Unused
#include "world/common/complete/GiveReward.inc.c"
//MAP_STATIC_PAD(1,key_item);
#include "world/common/complete/KeyItemChoice.inc.c"
#define NAME_SUFFIX

View File

@ -47,23 +47,7 @@ EvtScript N(EVS_DoNothing) = {
EVT_END
};
EvtScript N(EVS_GetBackIntoShell) = {
EVT_CALL(GetNpcYaw, LVar4, LVar1)
EVT_SET(LVar2, 30)
EVT_IF_GT(LVar1, 151)
EVT_IF_LE(LVar1, 331)
EVT_SET(LVar2, -30)
EVT_END_IF
EVT_END_IF
EVT_SET(LVar0, 0)
EVT_LOOP(15)
EVT_ADD(LVar0, LVar2)
EVT_CALL(SetNpcRotation, LVar3, 0, 0, LVar0)
EVT_WAIT(1)
EVT_END_LOOP
EVT_RETURN
EVT_END
};
#include "../common/GetIntoShell.inc.c"
#include "world/common/todo/SwitchToPartner.inc.c"
@ -442,7 +426,7 @@ EvtScript N(EVS_BreakBlock_DropShell) = {
EVT_ADD(LVar1, 20)
EVT_SET(LVar3, NPC_KoopaShell_02)
EVT_SET(LVar4, NPC_Koopa_02)
EVT_EXEC(N(EVS_GetBackIntoShell))
EVT_EXEC(N(EVS_GetIntoShell))
EVT_CALL(InterpNpcYaw, LVar3, 60, 0)
EVT_CALL(NpcJump0, NPC_KoopaShell_02, LVar0, LVar1, LVar2, 30)
EVT_CALL(SetNpcPos, NPC_KoopaShell_02, NPC_DISPOSE_LOCATION)
@ -722,24 +706,7 @@ StaticNpc N(NpcData_Crisis)[] = {
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_Kooper),
.drops = NPC_NO_DROPS,
.animations = {
.idle = ANIM_WorldKooper_Idle,
.walk = ANIM_WorldKooper_Walk,
.run = ANIM_WorldKooper_Walk,
.chase = ANIM_WorldKooper_Walk,
.anim_4 = ANIM_WorldKooper_Walk,
.anim_5 = ANIM_WorldKooper_Walk,
.death = ANIM_WorldKooper_Still,
.hit = ANIM_WorldKooper_Still,
.anim_8 = ANIM_WorldKooper_Still,
.anim_9 = ANIM_WorldKooper_Still,
.anim_A = ANIM_WorldKooper_Still,
.anim_B = ANIM_WorldKooper_Still,
.anim_C = ANIM_WorldKooper_Still,
.anim_D = ANIM_WorldKooper_Still,
.anim_E = ANIM_WorldKooper_Still,
.anim_F = ANIM_WorldKooper_Still,
},
.animations = KOOPER_ANIMS,
.tattle = MSG_NpcTattle_NOK_Kooper,
},
{
@ -760,24 +727,7 @@ StaticNpc N(NpcData_Crisis)[] = {
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_200 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_KoopersShell),
.drops = NPC_NO_DROPS,
.animations = {
.idle = ANIM_WorldKooper_Idle,
.walk = ANIM_WorldKooper_Walk,
.run = ANIM_WorldKooper_Walk,
.chase = ANIM_WorldKooper_Walk,
.anim_4 = ANIM_WorldKooper_Walk,
.anim_5 = ANIM_WorldKooper_Walk,
.death = ANIM_WorldKooper_Still,
.hit = ANIM_WorldKooper_Still,
.anim_8 = ANIM_WorldKooper_Still,
.anim_9 = ANIM_WorldKooper_Still,
.anim_A = ANIM_WorldKooper_Still,
.anim_B = ANIM_WorldKooper_Still,
.anim_C = ANIM_WorldKooper_Still,
.anim_D = ANIM_WorldKooper_Still,
.anim_E = ANIM_WorldKooper_Still,
.anim_F = ANIM_WorldKooper_Still,
},
.animations = KOOPER_ANIMS,
},
};

View File

@ -403,7 +403,7 @@ EvtScript N(EVS_NpcIdle_Koopa_01_Crisis) = {
EVT_ADD(LVar1, 20)
EVT_SET(LVar3, NPC_KoopaShell_01)
EVT_SET(LVar4, NPC_Koopa_01)
EVT_EXEC(N(EVS_GetBackIntoShell))
EVT_EXEC(N(EVS_GetIntoShell))
EVT_CALL(InterpNpcYaw, LVar3, 60, 0)
EVT_CALL(NpcJump0, NPC_KoopaShell_01, LVar0, LVar1, LVar2, 30)
EVT_CALL(SetNpcPos, NPC_KoopaShell_01, NPC_DISPOSE_LOCATION)

View File

@ -1,6 +0,0 @@
#include "nok_03.h"
static char* N(exit_str_0) = "nok_02";
static char* N(exit_str_1) = "nok_04";
#include "world/common/enemy/ai/HoppingAI.inc.c"

View File

@ -2,8 +2,25 @@
/// @brief Koopa Region - Behind Koopa Village
#include "common.h"
#include "../nok.h"
#include "message_ids.h"
#include "map.h"
#include "../nok.h"
#include "mapfs/nok_03_shape.h"
#include "mapfs/nok_03_hit.h"
#include "sprite/npc/WorldKooper.h"
enum {
NPC_Fuzzy_01 = 0,
NPC_Fuzzy_02 = 1,
NPC_Fuzzy_03 = 4,
NPC_KoopersShell = 5,
};
#define NAMESPACE nok_03
extern EvtScript N(EVS_Main);
extern EvtScript N(EVS_SetupMusic);
extern EvtScript N(EVS_MakeEntities);
extern NpcGroupList N(DefaultNPCs);

View File

@ -0,0 +1,14 @@
#include "nok_03.h"
EntryList N(Entrances) = {
[nok_03_ENTRY_0] { -654.0, 0.0, 6.0, 90.0 },
[nok_03_ENTRY_1] { 1046.0, 0.0, -31.0, 270.0 },
};
MapSettings N(settings) = {
.main = &N(EVS_Main),
.entryList = &N(Entrances),
.entryCount = ENTRY_COUNT(N(Entrances)),
.background = &gBackgroundImage,
.tattle = { MSG_MapTattle_nok_03 },
};

View File

@ -0,0 +1,12 @@
#include "nok_03.h"
EvtScript N(EVS_SetupMusic) = {
EVT_IF_LT(GB_StoryProgress, STORY_CH1_KOOPER_JOINED_PARTY)
EVT_CALL(SetMusicTrack, 0, SONG_FUZZY_ATTACK, 0, 8)
EVT_ELSE
EVT_CALL(SetMusicTrack, 0, SONG_KOOPA_VILLAGE, 0, 8)
EVT_END_IF
EVT_CALL(PlaySoundAt, SOUND_8000005B, 0, 887, 0, -41)
EVT_RETURN
EVT_END
};

View File

@ -0,0 +1,78 @@
#include "nok_03.h"
EvtScript N(EVS_ExitWalk_nok_02_1) = EVT_EXIT_WALK_NOK(60, nok_03_ENTRY_0, "nok_02", nok_02_ENTRY_1);
EvtScript N(EVS_ExitWalk_nok_04_0) = EVT_EXIT_WALK_NOK(123, nok_03_ENTRY_1, "nok_04", nok_04_ENTRY_0);
EvtScript N(EVS_BindExitTriggers) = {
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_nok_02_1)), TRIGGER_FLOOR_ABOVE, COLLIDER_deiliw, 1, 0)
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_nok_04_0)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilie, 1, 0)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_TexPan_Flowers) = {
EVT_CALL(SetTexPanner, MODEL_hanahana, TEX_PANNER_0)
EVT_LABEL(10)
EVT_LOOP(12)
EVT_CALL(SetTexPanOffset, TEX_PANNER_0, TEX_PANNER_MAIN, 0, 0)
EVT_WAIT(1)
EVT_END_LOOP
EVT_LOOP(12)
EVT_CALL(SetTexPanOffset, TEX_PANNER_0, TEX_PANNER_MAIN, 0x4000, 0)
EVT_WAIT(1)
EVT_END_LOOP
EVT_GOTO(10)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_TexPan_Water) = {
EVT_THREAD
EVT_CALL(SetTexPanner, MODEL_suimen1, TEX_PANNER_1)
EVT_SET(LVar0, 0)
EVT_SET(LVar1, 0)
EVT_SET(LVar2, 0)
EVT_LABEL(10)
EVT_CALL(SetTexPanOffset, TEX_PANNER_1, TEX_PANNER_MAIN, LVar0, 0)
EVT_CALL(SetTexPanOffset, TEX_PANNER_1, TEX_PANNER_AUX, LVar1, LVar2)
EVT_SUB(LVar0, 100)
EVT_SUB(LVar1, 400)
EVT_ADD(LVar1, 1000)
EVT_WAIT(1)
EVT_GOTO(10)
EVT_END_THREAD
EVT_CALL(SetTexPanner, MODEL_kabemizu, TEX_PANNER_2)
EVT_SET(LVar0, 0)
EVT_SET(LVar1, 0)
EVT_SET(LVar2, 0)
EVT_LABEL(20)
EVT_CALL(SetTexPanOffset, TEX_PANNER_2, TEX_PANNER_MAIN, LVar0, 0)
EVT_CALL(SetTexPanOffset, TEX_PANNER_2, TEX_PANNER_AUX, LVar1, LVar2)
EVT_SUB(LVar0, 100)
EVT_ADD(LVar1, 800)
EVT_SUB(LVar1, 400)
EVT_WAIT(1)
EVT_GOTO(20)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_Main) = {
EVT_SET(GB_WorldLocation, LOCATION_KOOPA_VILLAGE)
EVT_CALL(SetSpriteShading, SHADING_NONE)
EVT_SETUP_CAMERA_DEFAULT()
EVT_IF_LT(GB_StoryProgress, STORY_CH1_KOOPER_JOINED_PARTY)
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs)))
EVT_END_IF
EVT_EXEC_WAIT(N(EVS_MakeEntities))
EVT_EXEC(N(EVS_TexPan_Flowers))
EVT_EXEC(N(EVS_TexPan_Water))
EVT_EXEC(N(EVS_SetupMusic))
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilitw, COLLIDER_FLAGS_UPPER_MASK)
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilite, COLLIDER_FLAGS_UPPER_MASK)
EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers)))
EVT_EXEC(EnterWalk)
EVT_WAIT(1)
EVT_RETURN
EVT_END
};

View File

@ -0,0 +1,8 @@
#include "nok_03.h"
#include "entity.h"
EvtScript N(EVS_MakeEntities) = {
EVT_CALL(MakeItemEntity, ITEM_HP_PLUS_B, 218, 64, -100, ITEM_SPAWN_MODE_FIXED_NEVER_VANISH, GF_NOK03_Item_HPPlusB)
EVT_RETURN
EVT_END
};

View File

@ -0,0 +1,216 @@
#include "nok_03.h"
#include "world/common/enemy/complete/Fuzzy_Wander.inc.c"
#include "world/common/enemy/complete/Fuzzy.inc.c"
#include "world/common/npc/Koopa.inc.c"
EvtScript N(EVS_NpcIdle_FuzzyBoss) = {
EVT_THREAD
EVT_LABEL(0)
EVT_CALL(GetNpcPos, NPC_Fuzzy_03, LVar0, LVar1, LVar2)
EVT_ADD(LVar2, 2)
EVT_CALL(SetNpcPos, NPC_KoopersShell, LVar0, LVar1, LVar2)
EVT_WAIT(1)
EVT_GOTO(0)
EVT_END_THREAD
EVT_LABEL(1)
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)
EVT_CALL(GetNpcPos, NPC_Fuzzy_03, LVar3, LVar4, LVar5)
EVT_SET(LVar6, LVar3)
EVT_SUB(LVar6, LVar0)
EVT_IF_LT(LVar6, 100)
EVT_ADD(LVar3, 100)
EVT_CALL(PlaySoundAtNpc, NPC_Fuzzy_03, SOUND_B0000017, 0)
EVT_CALL(NpcJump0, NPC_Fuzzy_03, LVar3, LVar4, LVar5, 10)
EVT_SET(GB_StoryProgress, STORY_CH1_FUZZY_THIEF_RAN_AWAY)
EVT_END_IF
EVT_IF_GT(LVar3, 1200)
EVT_CALL(SetNpcPos, NPC_Fuzzy_03, NPC_DISPOSE_LOCATION)
EVT_CALL(SetNpcPos, NPC_KoopersShell, NPC_DISPOSE_LOCATION)
EVT_CALL(EnableNpcShadow, NPC_Fuzzy_03, FALSE)
EVT_CALL(EnableNpcShadow, NPC_KoopersShell, FALSE)
EVT_RETURN
EVT_END_IF
EVT_WAIT(1)
EVT_GOTO(1)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_NpcIdle_Fuzzy_01) = {
EVT_WAIT(5)
EVT_LABEL(10)
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)
EVT_IF_LT(LVar0, -400)
EVT_WAIT(1)
EVT_GOTO(10)
EVT_END_IF
EVT_CALL(PlaySoundAtNpc, NPC_SELF, SOUND_B0000017, 0)
EVT_CALL(GetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
EVT_SET(LVar1, 0)
EVT_CALL(SetNpcJumpscale, NPC_SELF, EVT_FLOAT(3.0))
EVT_CALL(NpcJump0, NPC_SELF, LVar0, LVar1, LVar2, 6)
EVT_CALL(SetNpcJumpscale, NPC_SELF, EVT_FLOAT(1.2))
EVT_ADD(LVar0, 20)
EVT_CALL(PlaySoundAtNpc, NPC_SELF, SOUND_B0000017, 0)
EVT_CALL(NpcJump0, NPC_SELF, LVar0, LVar1, LVar2, 8)
EVT_SUB(LVar0, 15)
EVT_ADD(LVar2, 20)
EVT_CALL(PlaySoundAtNpc, NPC_SELF, SOUND_B0000017, 0)
EVT_CALL(NpcJump0, NPC_SELF, LVar0, LVar1, LVar2, 10)
EVT_ADD(LVar0, 20)
EVT_ADD(LVar2, 20)
EVT_CALL(PlaySoundAtNpc, NPC_SELF, SOUND_B0000017, 0)
EVT_CALL(NpcJump0, NPC_SELF, LVar0, LVar1, LVar2, 8)
EVT_CALL(PlaySoundAtNpc, NPC_SELF, SOUND_B0000017, 0)
EVT_CALL(SetNpcJumpscale, NPC_SELF, EVT_FLOAT(1.8))
EVT_CALL(NpcJump0, NPC_SELF, -341, 0, 23, 15)
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAG_40000000, 1)
EVT_CALL(BindNpcAI, NPC_SELF, EVT_PTR(N(EVS_NpcAI_Fuzzy_Wander)))
EVT_RETURN
EVT_END
};
EvtScript N(EVS_NpcIdle_Fuzzy_02) = {
EVT_WAIT(5)
EVT_LABEL(0)
EVT_CALL(GetPlayerPos, LVar0, LVar1, LVar2)
EVT_IF_LT(LVar0, -140)
EVT_WAIT(1)
EVT_GOTO(0)
EVT_END_IF
EVT_CALL(GetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
EVT_SET(LVar1, 0)
EVT_CALL(SetNpcJumpscale, NPC_SELF, EVT_FLOAT(3.0))
EVT_CALL(NpcJump0, NPC_SELF, LVar0, LVar1, LVar2, 6)
EVT_CALL(SetSelfEnemyFlagBits, ENEMY_FLAG_40000000, 1)
EVT_CALL(BindNpcAI, NPC_SELF, EVT_PTR(N(EVS_NpcAI_Fuzzy_Wander)))
EVT_RETURN
EVT_END
};
EvtScript N(EVS_NpcInit_Fuzzy_01) = {
EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_Fuzzy_01)))
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_IGNORE_WORLD_COLLISION, TRUE)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_NpcInit_Fuzzy_02) = {
EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_Fuzzy_02)))
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_IGNORE_WORLD_COLLISION, TRUE)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_NpcInit_FuzzyBoss) = {
EVT_IF_GE(GB_StoryProgress, STORY_CH1_FUZZY_THIEF_RAN_AWAY)
EVT_CALL(SetNpcFlagBits, NPC_Fuzzy_03, NPC_FLAG_GRAVITY, FALSE)
EVT_CALL(SetNpcFlagBits, NPC_KoopersShell, NPC_FLAG_GRAVITY, FALSE)
EVT_CALL(SetNpcPos, NPC_Fuzzy_03, NPC_DISPOSE_LOCATION)
EVT_CALL(SetNpcPos, NPC_KoopersShell, NPC_DISPOSE_LOCATION)
EVT_CALL(EnableNpcShadow, NPC_Fuzzy_03, FALSE)
EVT_CALL(EnableNpcShadow, NPC_KoopersShell, FALSE)
EVT_RETURN
EVT_END_IF
EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_NpcIdle_FuzzyBoss)))
EVT_RETURN
EVT_END
};
EvtScript N(EVS_NpcInit_KoopersShell) = {
EVT_CALL(EnableNpcShadow, NPC_SELF, FALSE)
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_WorldKooper_StillShellAlt)
EVT_RETURN
EVT_END
};
StaticNpc N(NpcData_Fuzzy_01) = {
.id = NPC_Fuzzy_01,
.settings = &N(NpcSettings_Fuzzy_Wander),
.pos = { -388.0f, 100.0f, -107.0f },
.yaw = 0,
.flags = ENEMY_FLAG_400 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_Fuzzy_01),
.drops = FUZZY_DROPS,
.territory = {
.wander = {
.isFlying = FALSE,
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
.wanderShape = SHAPE_CYLINDER,
.centerPos = { -388, 100, -107 },
.wanderSize = { 30 },
.detectShape = SHAPE_CYLINDER,
.detectPos = { -388, 0, -107 },
.detectSize = { 300 },
}
},
.animations = FUZZY_ANIMS,
.aiDetectFlags = AI_DETECT_SIGHT,
};
StaticNpc N(NpcData_Fuzzy_02) = {
.id = NPC_Fuzzy_02,
.settings = &N(NpcSettings_Fuzzy_Wander),
.pos = { -76.0f, 118.0f, -43.0f },
.yaw = 0,
.flags = ENEMY_FLAG_400 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_Fuzzy_02),
.drops = FUZZY_DROPS,
.territory = {
.wander = {
.isFlying = FALSE,
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
.wanderShape = SHAPE_CYLINDER,
.centerPos = { -76, 118, -43 },
.wanderSize = { 100 },
.detectShape = SHAPE_CYLINDER,
.detectPos = { -76, 118, -43 },
.detectSize = { 300 },
}
},
.animations = FUZZY_ANIMS,
.aiDetectFlags = AI_DETECT_SIGHT,
};
StaticNpc N(NpcData_FuzzyBoss)[] = {
{
.id = NPC_Fuzzy_03,
.settings = &N(NpcSettings_Fuzzy),
.pos = { -540.0f, 0.0f, 0.0f },
.yaw = 0,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_200 | ENEMY_FLAG_800 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_FuzzyBoss),
.drops = FUZZY_DROPS,
.territory = {
.wander = {
.isFlying = TRUE,
.moveSpeedOverride = NO_OVERRIDE_MOVEMENT_SPEED,
.wanderShape = SHAPE_CYLINDER,
.centerPos = { 0, 0, 0 },
.wanderSize = { 0 },
.detectShape = SHAPE_CYLINDER,
.detectPos = { 0, 0, 0 },
.detectSize = { 0 },
}
},
.animations = FUZZY_ANIMS,
},
{
.id = NPC_KoopersShell,
.settings = &N(NpcSettings_Koopa),
.pos = { 0.0f, 0.0f, 0.0f },
.yaw = 0,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_200 | ENEMY_FLAG_800 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_KoopersShell),
.drops = FUZZY_DROPS,
.animations = KOOPER_ANIMS,
},
};
NpcGroupList N(DefaultNPCs) = {
NPC_GROUP(N(NpcData_Fuzzy_01), BTL_NOK_FORMATION_16, BTL_NOK_STAGE_01),
NPC_GROUP(N(NpcData_Fuzzy_02), BTL_NOK_FORMATION_16, BTL_NOK_STAGE_01),
NPC_GROUP(N(NpcData_FuzzyBoss)),
{}
};

View File

@ -1,313 +0,0 @@
#include "nok_04.h"
typedef struct Unk80241440_2 {
/* 0x00 */ f32 unk_00;
/* 0x04 */ f32 unk_04;
/* 0x08 */ f32 unk_08;
/* 0x0C */ f32 unk_0C;
/* 0x10 */ f32 unk_10;
/* 0x14 */ f32 unk_14;
/* 0x18 */ f32 unk_18;
/* 0x1C */ f32 unk_1C;
/* 0x20 */ f32 unk_20;
/* 0x24 */ f32 unk_24;
/* 0x28 */ f32 unk_28;
/* 0x2C */ f32 unk_2C;
/* 0x30 */ f32 unk_30;
/* 0x34 */ f32 unk_34;
/* 0x38 */ f32 unk_38;
/* 0x3C */ f32 unk_3C;
/* 0x40 */ f32 unk_40;
} Unk80241440_2; //size = 0x44
typedef struct Unk80241440 {
/* 0x00 */ Vec3f unk_00;
/* 0x0C */ f32 unk_0C;
/* 0x10 */ f32 unk_10;
/* 0x14 */ f32 unk_14;
/* 0x18 */ f32 unk_18;
/* 0x1C */ f32 unk_1C;
/* 0x20 */ f32 unk_20;
/* 0x24 */ f32 unk_24;
/* 0x28 */ f32 unk_28;
/* 0x2C */ f32 unk_2C;
/* 0x30 */ f32 unk_30;
/* 0x34 */ f32 unk_34;
/* 0x38 */ f32 unk_38;
/* 0x3C */ f32 unk_3C;
/* 0x40 */ Unk80241440_2* unk_40;
/* 0x44 */ Unk80241440_2* unk_44;
} Unk80241440; //size = 0x48
extern Unk80241440 D_802413F8_9EEFE8;
extern s32 D_80241440_9EF030[12];
extern s32 D_80241438_9EF028;
extern s32 D_8024143C_9EF02C;
extern s32 D_80243254_9F0E44;
extern EvtScript D_80241470_9EF060;
extern EvtScript D_8024161C_9EF20C;
extern Gfx D_80241768_9EF358[];
extern Vtx D_80241748_9EF338[];
/*
trees in this room are labeled with a 0 through 5 system, meaning there are "6" tree values
(tree indexes from left to right in both rows, each tree has 2 unique numbers besides 0)
0, 1, 2, 3
0, 5, 4, 3
*/
static char* N(exit_str_0) = "nok_03";
static char* N(exit_str_1) = "";
#include "world/common/util/ChangeNpcToPartner.inc.c"
#include "common/CosInterpMinMax.inc.c"
ApiStatus func_80240314_9EDF04(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
s32 temp_s2 = evt_get_variable(script, *args++);
s32 temp_s0_3 = evt_get_variable(script, *args++);
f32 temp_f6 = evt_get_variable(script, *args++);
D_802413F8_9EEFE8.unk_00.x = temp_s2;
D_802413F8_9EEFE8.unk_00.y = temp_s0_3 + 4.0f;
D_802413F8_9EEFE8.unk_00.z = temp_f6;
return ApiStatus_DONE2;
}
ApiStatus func_802403C0_9EDFB0(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
s32 temp_s2 = evt_get_variable(script, *args++);
s32 temp_s0_3 = evt_get_variable(script, *args++);
s32 temp_a0 = evt_get_variable(script, *args++);
s32 phi_s0 = temp_s0_3;
Unk80241440* d802413F8 = &D_802413F8_9EEFE8; //needed to match
f32 temp_f4;
f32 temp_f6;
f32 temp_f8;
f32 temp_f10;
if (temp_s0_3 < 0) {
phi_s0 = temp_s0_3 + 15;
}
temp_f8 = phi_s0 >> 4;
D_802413F8_9EEFE8.unk_34 = 0.0f;
temp_f6 = temp_s2 * 0.0625f;
temp_f10 = D_802413F8_9EEFE8.unk_34;
temp_f4 = temp_a0;
D_802413F8_9EEFE8.unk_18 = temp_f8;
D_802413F8_9EEFE8.unk_30 = temp_f4;
D_802413F8_9EEFE8.unk_0C = temp_f6;
if (temp_f10 < temp_f4) {
D_802413F8_9EEFE8.unk_38 = (temp_f6 - D_802413F8_9EEFE8.unk_10) / temp_f4;
D_802413F8_9EEFE8.unk_3C = (temp_f8 - D_802413F8_9EEFE8.unk_20) / temp_f4;
}
if (temp_f4 < temp_f10) {
D_802413F8_9EEFE8.unk_10 = temp_f6;
D_802413F8_9EEFE8.unk_20 = temp_f8;
D_802413F8_9EEFE8.unk_30 = temp_f10;
}
return ApiStatus_DONE2;
}
ApiStatus func_802404D0_9EE0C0(Evt* script, s32 isInitialCall) {
D_802413F8_9EEFE8.unk_00.x = 0;
D_802413F8_9EEFE8.unk_00.y = 0;
D_802413F8_9EEFE8.unk_00.z = 0;
D_802413F8_9EEFE8.unk_10 = 0;
D_802413F8_9EEFE8.unk_0C = 0;
D_802413F8_9EEFE8.unk_14 = 0;
D_802413F8_9EEFE8.unk_18 = 0;
D_802413F8_9EEFE8.unk_20 = 0;
D_802413F8_9EEFE8.unk_1C = 0;
D_802413F8_9EEFE8.unk_40 = NULL;
D_802413F8_9EEFE8.unk_44 = NULL;
D_802413F8_9EEFE8.unk_34 = 0;
D_802413F8_9EEFE8.unk_30 = 0;
D_802413F8_9EEFE8.unk_38 = 0;
D_802413F8_9EEFE8.unk_3C = 0;
return ApiStatus_DONE2;
}
ApiStatus func_8024051C_9EE10C(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
D_80241438_9EF028 = evt_get_variable(script, *args++);
return ApiStatus_DONE2;
}
ApiStatus func_80240548_9EE138(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
D_8024143C_9EF02C = evt_get_variable(script, *args++);
return ApiStatus_DONE2;
}
ApiStatus func_80240574_9EE164(Evt* evt, s32 isInitialCall) {
Bytecode *args = evt->ptrReadPos;
s32 mapVar1 = evt_get_variable(evt, *args++) * 3;
s32 var1 = *args++;
s32 var2 = *args++;
s32 var3 = *args++;
evt_set_variable(evt, var1, D_80241440_9EF030[mapVar1]);
evt_set_variable(evt, var2, D_80241440_9EF030[mapVar1 + 1]);
evt_set_variable(evt, var3, D_80241440_9EF030[mapVar1 + 2]);
return ApiStatus_DONE2;
}
ApiStatus func_80240630_9EE220(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
s32 evtVar = evt_get_variable(script, *args++);
Bytecode outVar = *args++;
evtVar %= 6;
if (evtVar < 4) {
evt_set_variable(script, outVar, evtVar);
} else {
evt_set_variable(script, outVar, 6 - evtVar);
}
return ApiStatus_DONE2;
}
ApiStatus func_802406C4_9EE2B4(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
s32 temp_s1_2 = evt_get_variable(script, *args++);
s32 temp_s2 = evt_get_variable(script, *args++);
Evt* script2;
EvtScript* phi_a0;
temp_s1_2 %= 6;
if (temp_s1_2 >= 4) {
temp_s1_2 = 6 - temp_s1_2;
}
if (does_script_exist(script->varTable[temp_s1_2 + 6])) {
kill_script_by_ID(script->varTable[temp_s1_2 + 6]);
}
phi_a0 = &D_80241470_9EF060;
switch (temp_s2) {
case 0:
phi_a0 = &D_80241470_9EF060;
break;
case 1:
phi_a0 = &D_8024161C_9EF20C;
break;
}
script2 = start_script(phi_a0, EVT_PRIORITY_1, 0);
script->varTable[temp_s1_2 + 6] = script2->id;
switch (temp_s1_2) {
case 0:
script2->varTable[0] = 0x4C;
break;
case 1:
script2->varTable[0] = 0x4D;
break;
case 2:
script2->varTable[0] = 0x4E;
break;
case 3:
script2->varTable[0] = 0x4F;
break;
}
return ApiStatus_DONE2;
}
void func_80240814_9EE404(s32 index) {
f32 x = D_802413F8_9EEFE8.unk_00.x;
f32 y = D_802413F8_9EEFE8.unk_00.y;
f32 z = D_802413F8_9EEFE8.unk_00.z;
s32 i;
f32 angle, deltaY, fs3;
D_802413F8_9EEFE8.unk_14 += 0.2;
if (D_802413F8_9EEFE8.unk_30 != 0.0f) {
D_802413F8_9EEFE8.unk_10 += D_802413F8_9EEFE8.unk_38;
if (D_802413F8_9EEFE8.unk_0C < D_802413F8_9EEFE8.unk_10) {
D_802413F8_9EEFE8.unk_14 += (D_802413F8_9EEFE8.unk_0C - D_802413F8_9EEFE8.unk_10) * 0.5f;
}
D_802413F8_9EEFE8.unk_34 += 1.0f;
D_802413F8_9EEFE8.unk_1C = (D_802413F8_9EEFE8.unk_1C + (D_802413F8_9EEFE8.unk_18 - D_802413F8_9EEFE8.unk_20) / 10.0f) * 0.92;
D_802413F8_9EEFE8.unk_20 += D_802413F8_9EEFE8.unk_3C;
if (D_802413F8_9EEFE8.unk_30 <= D_802413F8_9EEFE8.unk_34) {
D_802413F8_9EEFE8.unk_30 = 0.0f;
}
} else {
D_802413F8_9EEFE8.unk_10 += D_802413F8_9EEFE8.unk_14;
if (D_802413F8_9EEFE8.unk_0C < D_802413F8_9EEFE8.unk_10) {
D_802413F8_9EEFE8.unk_14 += (D_802413F8_9EEFE8.unk_0C - D_802413F8_9EEFE8.unk_10) * 0.5f;
}
D_802413F8_9EEFE8.unk_1C = (D_802413F8_9EEFE8.unk_1C + (D_802413F8_9EEFE8.unk_18 - D_802413F8_9EEFE8.unk_20) / 10.0f) * 0.92;
D_802413F8_9EEFE8.unk_20 += D_802413F8_9EEFE8.unk_1C;
}
D_802413F8_9EEFE8.unk_14 *= 0.5;
gSPDisplayList(gMasterGfxPos++, D_80241768_9EF358);
guTranslate(&gDisplayContext->matrixStack[gMatrixListPos], D_802413F8_9EEFE8.unk_00.x, D_802413F8_9EEFE8.unk_00.y, D_802413F8_9EEFE8.unk_00.z);
gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
angle = D_802413F8_9EEFE8.unk_20;
deltaY = -D_802413F8_9EEFE8.unk_10;
x += -deltaY * sin_rad(D_802413F8_9EEFE8.unk_20 * 0 / 180.0f * PI);
y += deltaY * cos_rad(D_802413F8_9EEFE8.unk_20 * 0 / 180.0f * PI);
guPosition(&gDisplayContext->matrixStack[gMatrixListPos], 0.0f, 0.0f, angle, 1.0f, 0.0f, deltaY, 0.0f);
gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW);
for (i = 1; i < 16; i++) {
angle = D_802413F8_9EEFE8.unk_20;
deltaY = -D_802413F8_9EEFE8.unk_10;
x += -deltaY * sin_rad(D_802413F8_9EEFE8.unk_20 * i / 180.0f * PI);
y += deltaY * cos_rad(D_802413F8_9EEFE8.unk_20 * i / 180.0f * PI);
gSPVertex(gMasterGfxPos++, D_80241748_9EF338, 2, 0);
guPosition(&gDisplayContext->matrixStack[gMatrixListPos], 0.0f, 0.0f, angle, 1.0f, 0.0f, deltaY, 0.0f);
gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW);
gSPVertex(gMasterGfxPos++, D_80241748_9EF338, 2, 2);
gSP2Triangles(gMasterGfxPos++, 0, 2, 1, 0, 2, 3, 1, 0);
}
gSPPopMatrix(gMasterGfxPos++, G_MTX_MODELVIEW);
gDPPipeSync(gMasterGfxPos++);
D_802413F8_9EEFE8.unk_24 = x;
D_802413F8_9EEFE8.unk_28 = y;
D_802413F8_9EEFE8.unk_2C = z;
if (D_802413F8_9EEFE8.unk_40 != NULL) {
D_802413F8_9EEFE8.unk_40->unk_38 = x;
D_802413F8_9EEFE8.unk_40->unk_3C = y - 4.0f;
D_802413F8_9EEFE8.unk_40->unk_40 = z + 6.0f;
}
if (D_802413F8_9EEFE8.unk_44 != NULL) {
D_802413F8_9EEFE8.unk_44->unk_38 = x;
D_802413F8_9EEFE8.unk_44->unk_3C = y - 4.0f;
D_802413F8_9EEFE8.unk_44->unk_40 = z + 3.0f;
}
}
ApiStatus func_80240E4C_9EEA3C(Evt* script, s32 isInitialCall) {
if (isInitialCall) {
D_80243254_9F0E44 = FALSE;
}
if (D_80243254_9F0E44) {
return ApiStatus_DONE2;
} else {
return ApiStatus_BLOCK;
}
}
ApiStatus func_80240E70_9EEA60(Evt* script, s32 isInitialCall) {
D_80243254_9F0E44 = TRUE;
return ApiStatus_DONE2;
}

View File

@ -2,8 +2,52 @@
/// @brief Koopa Region - Fuzzy Forest
#include "common.h"
#include "../nok.h"
#include "message_ids.h"
#include "map.h"
#include "../nok.h"
#include "mapfs/nok_04_shape.h"
#include "mapfs/nok_04_hit.h"
#include "sprite/npc/Fuzzy.h"
#include "sprite/npc/KooperWithoutShell.h"
#include "sprite/npc/WorldGoombario.h"
#include "sprite/npc/WorldKooper.h"
enum {
NPC_BossFuzzy = 0,
NPC_KoopersShell = 1,
NPC_AmbushFuzzy = 2,
NPC_Fuzzy_01 = 3,
NPC_Fuzzy_02 = 4,
NPC_Fuzzy_03 = 5,
NPC_Kooper = 6,
};
enum {
MV_CorrectCount = MapVar(0),
MV_CorrectTreeIndex = MapVar(1),
MV_WrongAnswerBattle = MapVar(2),
MV_LastWrongTreeIndex = MapVar(3),
MV_LastCorrectTreeIndex = MapVar(4), // unused
};
enum {
TREE_0 = 0,
TREE_1 = 1,
TREE_2 = 2,
TREE_3 = 3,
};
#define NAMESPACE nok_04
extern EvtScript N(EVS_Main);
extern EvtScript N(EVS_SetupMusic);
extern EvtScript N(EVS_PushPartnerSong);
extern EvtScript N(EVS_PopSong);
extern EvtScript N(EVS_HitTree);
extern EvtScript N(EVS_MakeEntities);
extern NpcGroupList N(DefaultNPCs);
API_CALLABLE(N(LoadPartyImage));

View File

@ -0,0 +1,13 @@
#include "nok_04.h"
EntryList N(Entrances) = {
[nok_04_ENTRY_0] { -336.0, 0.0, 356.0, 45.0 },
};
MapSettings N(settings) = {
.main = &N(EVS_Main),
.entryList = &N(Entrances),
.entryCount = ENTRY_COUNT(N(Entrances)),
.background = &gBackgroundImage,
.tattle = { MSG_MapTattle_nok_04 },
};

View File

@ -0,0 +1,25 @@
#include "nok_04.h"
EvtScript N(EVS_SetupMusic) = {
EVT_IF_LT(GB_StoryProgress, STORY_CH1_KOOPER_JOINED_PARTY)
EVT_CALL(SetMusicTrack, 0, SONG_FUZZY_ATTACK, 0, 8)
EVT_ELSE
EVT_CALL(SetMusicTrack, 0, SONG_KOOPA_VILLAGE, 0, 8)
EVT_END_IF
EVT_RETURN
EVT_END
};
EvtScript N(EVS_PushPartnerSong) = {
EVT_CALL(PushSong, SONG_NEW_PARTNER, 0)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_PopSong) = {
EVT_CALL(FadeOutMusic, 0, 500)
EVT_WAIT(15)
EVT_CALL(PopSong)
EVT_RETURN
EVT_END
};

View File

@ -0,0 +1,37 @@
#include "nok_04.h"
EvtScript N(EVS_ExitWalk_nok_03_1) = EVT_EXIT_WALK_NOK(60, nok_04_ENTRY_0, "nok_03", nok_03_ENTRY_1);
EvtScript N(EVS_BindExitTriggers) = {
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_nok_03_1)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilisw, 1, 0)
EVT_RETURN
EVT_END
};
MAP_RODATA_PAD(1, exits);
EvtScript N(EVS_Main) = {
EVT_SET(GB_WorldLocation, LOCATION_KOOPA_VILLAGE)
EVT_CALL(SetSpriteShading, SHADING_NONE)
EVT_SETUP_CAMERA_NO_LEAD()
EVT_SET(AF_NOK04_PlayingGame, FALSE)
EVT_SET(AF_NOK04_BattleStarted, FALSE)
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o147, COLLIDER_FLAGS_UPPER_MASK)
EVT_CALL(MakeNpcs, FALSE, EVT_PTR(N(DefaultNPCs)))
EVT_EXEC_WAIT(N(EVS_MakeEntities))
EVT_SET(LVar0, TREE_0)
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_HitTree)), TRIGGER_WALL_HAMMER, COLLIDER_o59, 1, 0)
EVT_SET(LVar0, TREE_1)
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_HitTree)), TRIGGER_WALL_HAMMER, COLLIDER_o58, 1, 0)
EVT_SET(LVar0, TREE_2)
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_HitTree)), TRIGGER_WALL_HAMMER, COLLIDER_o57, 1, 0)
EVT_SET(LVar0, TREE_3)
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_HitTree)), TRIGGER_WALL_HAMMER, COLLIDER_o56, 1, 0)
EVT_EXEC(N(EVS_SetupMusic))
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilitsw, COLLIDER_FLAGS_UPPER_MASK)
EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers)))
EVT_EXEC(EnterWalk)
EVT_WAIT(1)
EVT_RETURN
EVT_END
};

View File

@ -0,0 +1,7 @@
#include "nok_04.h"
#include "entity.h"
EvtScript N(EVS_MakeEntities) = {
EVT_RETURN
EVT_END
};

File diff suppressed because it is too large Load Diff

View File

@ -21,7 +21,7 @@ enum {
};
enum {
MV_Unk_00 = MapVar(0),
MV_SwitchEntityID = MapVar(0),
};
#define NAMESPACE nok_12

View File

@ -116,7 +116,7 @@ EvtScript N(EVS_EnterMap) = {
EvtScript N(EVS_Main) = {
EVT_SET(GB_WorldLocation, LOCATION_PLEASANT_PATH)
EVT_CALL(SetSpriteShading, SHADING_NONE)
EVT_SET(AF_NOK_01, FALSE)
EVT_SET(AF_NOK12_HitSwitch, FALSE)
EVT_SETUP_CAMERA_DEFAULT()
EVT_CALL(GetDemoState, LVar0)
EVT_IF_EQ(LVar0, DEMO_STATE_NONE)

View File

@ -38,7 +38,7 @@ EvtScript N(EVS_OnShakeTree_DropSwitch) = {
EVT_CALL(MakeLerp, 95, 0, 12, EASING_QUADRATIC_IN)
EVT_LABEL(0)
EVT_CALL(UpdateLerp)
EVT_CALL(N(SetEntityPosition), MV_Unk_00, -470, LVar0, -150)
EVT_CALL(N(SetEntityPosition), MV_SwitchEntityID, -470, LVar0, -150)
EVT_WAIT(1)
EVT_IF_EQ(LVar1, 1)
EVT_GOTO(0)
@ -59,11 +59,11 @@ EvtScript N(EVS_MakeEntities) = {
EVT_IF_LE(GB_StoryProgress, STORY_CH1_KNOCKED_SWITCH_FROM_TREE)
EVT_IF_EQ(GB_StoryProgress, STORY_CH1_KNOCKED_SWITCH_FROM_TREE)
EVT_CALL(MakeEntity, EVT_PTR(Entity_BlueSwitch), -470, 0, -150, 0, MAKE_ENTITY_END)
EVT_CALL(AssignSwitchFlag, EVT_INDEX_OF_AREA_FLAG(AF_NOK_01))
EVT_CALL(AssignSwitchFlag, EVT_INDEX_OF_AREA_FLAG(AF_NOK12_HitSwitch))
EVT_ELSE
EVT_CALL(MakeEntity, EVT_PTR(Entity_BlueSwitch), NPC_DISPOSE_LOCATION, 0, MAKE_ENTITY_END)
EVT_CALL(AssignSwitchFlag, EVT_INDEX_OF_AREA_FLAG(AF_NOK_01))
EVT_SET(MV_Unk_00, LVar0)
EVT_CALL(AssignSwitchFlag, EVT_INDEX_OF_AREA_FLAG(AF_NOK12_HitSwitch))
EVT_SET(MV_SwitchEntityID, LVar0)
EVT_END_IF
EVT_END_IF
EVT_CALL(MakeEntity, EVT_PTR(Entity_YellowBlock), -560, 60, -120, 0, ITEM_POW_BLOCK, MAKE_ENTITY_END)

View File

@ -103,7 +103,7 @@ EvtScript N(EVS_Scene_BuildBridge) = {
EvtScript N(EVS_SetupBridge) = {
EVT_IF_LT(GB_StoryProgress, STORY_CH1_MADE_FIRST_BRIDGE)
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_Scene_BuildBridge)), TRIGGER_AREA_FLAG_SET, AF_NOK_01, 1, 0)
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_Scene_BuildBridge)), TRIGGER_AREA_FLAG_SET, AF_NOK12_HitSwitch, 1, 0)
EVT_CALL(TranslateGroup, MODEL_hashi, 0, -320, 0)
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o204, COLLIDER_FLAGS_UPPER_MASK)
EVT_RETURN

View File

@ -51,7 +51,7 @@ EvtScript N(EVS_MakeEntities) = {
EVT_END_IF
EVT_IF_EQ(LVar0, 0)
EVT_CALL(MakeEntity, EVT_PTR(Entity_BlueSwitch), 100, 0, -185, 0, MAKE_ENTITY_END)
EVT_CALL(AssignSwitchFlag, EVT_INDEX_OF_AREA_FLAG(AF_NOK_02))
EVT_CALL(AssignSwitchFlag, EVT_INDEX_OF_AREA_FLAG(AF_NOK14_HitSwitch))
EVT_END_IF
EVT_CALL(MakeItemEntity, ITEM_COIN, -655, 75, -35, ITEM_SPAWN_MODE_FIXED_NEVER_VANISH, GF_NOK14_Item_CoinA)
EVT_CALL(MakeItemEntity, ITEM_COIN, -640, 75, -20, ITEM_SPAWN_MODE_FIXED_NEVER_VANISH, GF_NOK14_Item_CoinB)

View File

@ -132,7 +132,7 @@ EvtScript N(EVS_SetupBridge) = {
EVT_SET(LVar0, 0)
EVT_END_IF
EVT_IF_EQ(LVar0, 0)
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_Scene_BuildBridge)), TRIGGER_AREA_FLAG_SET, AF_NOK_02, 1, 0)
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_Scene_BuildBridge)), TRIGGER_AREA_FLAG_SET, AF_NOK14_HitSwitch, 1, 0)
EVT_CALL(TranslateGroup, MODEL_hashi, 0, -200, 0)
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o255, COLLIDER_FLAGS_UPPER_MASK)
EVT_RETURN

View File

@ -101,7 +101,7 @@ EvtScript N(EVS_NpcIdle_TrafficBoo) = {
EVT_LOOP(0)
EVT_CALL(N(UpdateTrafficBooMotion))
EVT_CALL(N(UpdateTrafficBooAlpha))
EVT_CALL(func_802CFD30, -1, 7, LVar0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_CALL(SetNpcRenderMode, NPC_SELF, RENDER_MODE_SURFACE_XLU_LAYER1)
EVT_WAIT(1)
EVT_END_LOOP

View File

@ -32,7 +32,7 @@ EvtScript N(EVS_Scene_JumpScareBoo) = {
EVT_SETF(LVar0, EVT_FLOAT(240.0))
EVT_LOOP(20)
EVT_SUBF(LVar0, EVT_FLOAT(12.0))
EVT_CALL(func_802CFD30, 0, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_JumpScareBoo, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_WAIT(1)
EVT_END_LOOP
EVT_CALL(RemoveNpc, NPC_JumpScareBoo)

View File

@ -109,7 +109,7 @@ EvtScript N(EVS_NpcAux_TrafficBoo) = {
EVT_SET(LVar1, 0)
EVT_LOOP(0)
EVT_CALL(N(UpdateTrafficBooAlpha))
EVT_CALL(func_802CFD30, -1, 7, LVar0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_WAIT(1)
EVT_END_LOOP
EVT_RETURN

View File

@ -48,8 +48,8 @@ EvtScript N(EVS_Scene_MeetBow) = {
EVT_SETF(LVar0, EVT_FLOAT(0.0))
EVT_LOOP(20)
EVT_ADDF(LVar0, EVT_FLOAT(12.0))
EVT_CALL(func_802CFD30, 0, 7, LVar0, 0, 0, 0)
EVT_CALL(func_802CFD30, 1, 7, LVar0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Bow, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_Bootler, FOLD_TYPE_7, LVar0, 0, 0, 0)
EVT_WAIT(1)
EVT_END_LOOP
EVT_WAIT(40)

View File

@ -108,7 +108,7 @@ EvtScript N(EVS_NpcInit_Skolar) = {
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_WorldSkolar_IdleSad)
EVT_CALL(SetNpcPos, NPC_SELF, 0, NPC_DISPOSE_POS_Y, -100)
EVT_CALL(EnableNpcShadow, NPC_SELF, FALSE)
EVT_CALL(func_802CFD30, -1, 7, 170, 0, 0, 0)
EVT_CALL(func_802CFD30, NPC_SELF, FOLD_TYPE_7, 170, 0, 0, 0)
EVT_IF_GE(GB_StoryProgress, STORY_CH3_BOW_JOINED_PARTY)
EVT_CALL(RemoveNpc, NPC_SELF)
EVT_END_IF

View File

@ -74,7 +74,7 @@ EvtScript N(EVS_Scene_Starship) = {
EVT_END_THREAD
EVT_CHILD_THREAD
EVT_LOOP(0)
EVT_CALL(func_802D2884, 0, 0, 0)
EVT_CALL(FacePlayerTowardPoint, 0, 0, 0)
EVT_WAIT(1)
EVT_END_LOOP
EVT_END_CHILD_THREAD

View File

@ -1,7 +1,7 @@
#include "common.h"
// LVar0 wall model ID
// LVar1 door model ID
// LVar0 wall 1 model ID
// LVar1 wall 2 model ID
// LVar2 tex panner ID
EvtScript N(EVS_GlassShimmer) = {
EVT_CALL(SetTexPanner, LVar0, LVar2)

View File

@ -21,7 +21,8 @@ enum {
};
enum {
AF_PRA33_FlippingWall = AreaFlag(3),
AF_PRA09_HitSwitch = AreaFlag(2),
AF_PRA33_FlippingWall = AreaFlag(3),
};
extern MapSettings pra_01_settings;

View File

@ -12,7 +12,7 @@
#include "sprite/npc/WorldKalmar.h"
enum {
NPC_Kalmar = 0,
NPC_Kalmar = 0,
};
#define NAMESPACE pra_01

View File

@ -10,7 +10,7 @@
#include "mapfs/pra_04_hit.h"
enum {
NPC_Swoopula = 0,
NPC_Swoopula = 0,
};
enum {

View File

@ -1,6 +0,0 @@
#include "pra_09.h"
static char* N(exit_str_0) = "pra_03";
static char* N(exit_str_1) = "pra_11";
#include "../common/MapInit_EnableFloorReflection.inc.c"

View File

@ -1,137 +0,0 @@
#include "pra_09.h"
#include "effects.h"
#include "../common/Reflection.inc.c"
#include "world/common/todo/GetNpcCollisionHeight.inc.c"
#include "world/common/todo/AddPlayerHandsOffset.inc.c"
extern s32 N(ItemChoice_HasSelectedItem);
extern s32 N(ItemChoice_SelectedItemID);
#include "world/common/todo/ItemChoice_WaitForSelection.inc.c"
ApiStatus N(ItemChoice_SaveSelected)(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
N(ItemChoice_SelectedItemID) = evt_get_variable(script, *args++);
N(ItemChoice_HasSelectedItem) = TRUE;
return ApiStatus_DONE2;
}
BSS s32 pra_09_80246A20[114];
BSS s32 D_80246BE8[92];
ApiStatus func_802411D8_D59A68(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
s32* ptr = (s32*) evt_get_variable(script, *args++);
s32 i;
if (ptr != NULL) {
for (i = 0; ptr[i] != 0; i++) {
pra_09_80246A20[i] = ptr[i];
}
pra_09_80246A20[i] = 0;
} else {
for (i = 0; i < 112; i++) {
pra_09_80246A20[i] = i + 16;
pra_09_80246A20[112] = 0;
}
}
return ApiStatus_DONE2;
}
ApiStatus func_80241274_D59B04(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
s32* ptr = (s32*) evt_get_variable(script, *args++);
s32 i;
if (ptr != NULL) {
for (i = 0; ptr[i] != 0; i++) {
D_80246BE8[i] = ptr[i];
}
D_80246BE8[i] = 0;
} else {
for (i = 0; i < 91; i++) {
D_80246BE8[i] = i + 128;
D_80246BE8[91] = 0;
}
}
return ApiStatus_DONE2;
}
#include "world/common/todo/PlayBigSmokePuff.inc.c"
ApiStatus func_802413A4_D59C34(Evt* script, s32 isInitialCall) {
EncounterStatus* currentEncounter = &gCurrentEncounter;
Bytecode* args = script->ptrReadPos;
Enemy* enemy = script->owner1.enemy;
s32 var_s1 = evt_get_variable(script, *args++) == 0;
Encounter* encounter;
if (evt_get_variable(script, *args++) == 0) {
var_s1 += 1;
}
if (evt_get_variable(script, *args++) == 0) {
var_s1 += 1;
}
if (evt_get_variable(script, *args++) == 0) {
var_s1 += 1;
}
switch (var_s1) {
case 1:
encounter = currentEncounter->encounterList[enemy->encounterIndex];
encounter->battle = 0x2101;
break;
case 2:
encounter = currentEncounter->encounterList[enemy->encounterIndex];
encounter->battle = 0x2102;
break;
case 3:
encounter = currentEncounter->encounterList[enemy->encounterIndex];
encounter->battle = 0x2103;
break;
case 4:
encounter = currentEncounter->encounterList[enemy->encounterIndex];
encounter->battle = 0x2104;
break;
}
return ApiStatus_DONE2;
}
ApiStatus func_802414F4_D59D84(Evt* script, s32 isInitialCall) {
Npc* npc = resolve_npc(script, script->varTable[0]);
if (isInitialCall) {
npc->pos.x = script->varTable[1];
npc->pos.y = script->varTable[2];
npc->pos.z = script->varTable[3];
npc->jumpVelocity = 0.0f;
npc->currentAnim = 0x30011;
npc->jumpScale = 0.8f;
}
npc->rotation.z -= 39.0f;
npc->rotation.x -= 33.0f;
npc->pos.y -= npc->jumpVelocity;
npc->jumpVelocity += npc->jumpScale;
if (npc->pos.y <= 0.0f) {
npc->pos.y = 0.0f;
npc->rotation.z = 0.0f;
npc->rotation.x = 0.0f;
npc->jumpVelocity = 0.0f;
npc->jumpScale = 0.0f;
npc->currentAnim = 0x30003;
return ApiStatus_DONE2;
}
return ApiStatus_BLOCK;
}
ApiStatus func_802415F8_D59E88(Evt* script, s32 isInitialCall) {
Npc* npc1 = resolve_npc(script, script->varTable[3]);
Npc* npc2 = resolve_npc(script, script->varTable[4]);
npc1->collisionRadius = npc2->collisionRadius;
npc1->collisionHeight = npc2->collisionHeight;
return ApiStatus_DONE2;
}

View File

@ -2,8 +2,42 @@
/// @brief Crystal Palace - Red Key Hall
#include "common.h"
#include "../pra.h"
#include "message_ids.h"
#include "map.h"
#include "../pra.h"
#include "mapfs/pra_09_shape.h"
#include "mapfs/pra_09_hit.h"
enum {
NPC_Bombette_01 = 0,
NPC_Bombette_02 = 1,
NPC_Bombette_03 = 2,
NPC_Bombette_04 = 3,
NPC_Bombette_05 = 4,
NPC_Duplighost_01 = 5,
NPC_Duplighost_02 = 6,
NPC_Duplighost_03 = 7,
NPC_Duplighost_04 = 8,
NPC_Duplighost_05 = 9,
NPC_Bombette_01_Target = 10,
NPC_Bombette_02_Target = 11,
NPC_Bombette_03_Target = 12,
NPC_Bombette_04_Target = 13,
NPC_Bombette_05_Target = 14,
};
enum {
MV_UnmaskingState = MapVar(0),
MV_RevealedFakeBombette1 = MapVar(2),
MV_RevealedFakeBombette2 = MapVar(3),
MV_RevealedFakeBombette3 = MapVar(4),
MV_RevealedFakeBombette4 = MapVar(5),
};
#define NAMESPACE pra_09
extern EvtScript N(EVS_Main);
extern EvtScript N(EVS_SetupMusic);
extern EvtScript N(EVS_ExitWalk_pra_11_0);
extern NpcGroupList N(DefaultNPCs);

View File

@ -0,0 +1,15 @@
#include "pra_09.h"
#include "../common/MapInit_EnableFloorReflection.inc.c"
EntryList N(Entrances) = {
[pra_09_ENTRY_0] { 13.0, 0.0, 73.0, 90.0 },
[pra_09_ENTRY_1] { 479.0, 0.0, 84.0, 270.0 },
};
MapSettings N(settings) = {
.main = &N(EVS_Main),
.entryList = &N(Entrances),
.entryCount = ENTRY_COUNT(N(Entrances)),
.tattle = { MSG_MapTattle_pra_09 },
};

View File

@ -0,0 +1,8 @@
#include "pra_09.h"
EvtScript N(EVS_SetupMusic) = {
EVT_CALL(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8)
EVT_CALL(UseDoorSounds, DOOR_SOUNDS_BASIC)
EVT_RETURN
EVT_END
};

View File

@ -0,0 +1,94 @@
#include "pra_09.h"
#include "effects.h"
#include "../common/Reflection.inc.c"
#include "../common/Reflection.data.inc.c"
EvtScript N(EVS_ExitDoors_pra_03_2) = {
EVT_SET_GROUP(EVT_GROUP_1B)
EVT_CALL(DisablePlayerInput, TRUE)
EVT_SET(LVar0, pra_09_ENTRY_0)
EVT_SET(LVar1, COLLIDER_deilittsw)
EVT_SET(LVar2, MODEL_o772)
EVT_SET(LVar3, MODEL_o768)
EVT_SET(LVar4, MODEL_o844)
EVT_SET(LVar5, MODEL_o846)
EVT_EXEC(ExitSplitDoubleDoor)
EVT_WAIT(17)
EVT_CALL(GotoMap, EVT_PTR("pra_03"), pra_03_ENTRY_2)
EVT_WAIT(100)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_ExitWalk_pra_11_0) = EVT_EXIT_WALK(60, pra_09_ENTRY_1, "pra_11", pra_11_ENTRY_0);
EvtScript N(EVS_BindExitTriggers) = {
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitDoors_pra_03_2)), TRIGGER_WALL_PRESS_A, COLLIDER_deilittsw, 1, 0)
EVT_IF_GE(GB_StoryProgress, STORY_CH7_DEFEATED_BOMBETTE_DUPLIGHOSTS)
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_pra_11_0)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilise, 1, 0)
EVT_END_IF
EVT_RETURN
EVT_END
};
EvtScript N(EVS_EnterMap) = {
EVT_CALL(GetEntryID, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_EQ(pra_09_ENTRY_0)
EVT_SET(LVar2, MODEL_o772)
EVT_SET(LVar3, MODEL_o768)
EVT_SET(LVar4, MODEL_o844)
EVT_SET(LVar5, MODEL_o846)
EVT_EXEC_WAIT(EnterSplitDoubleDoor)
EVT_EXEC(N(EVS_BindExitTriggers))
EVT_CASE_EQ(pra_09_ENTRY_1)
EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers)))
EVT_EXEC(EnterWalk)
EVT_END_SWITCH
EVT_RETURN
EVT_END
};
BombTrigger N(BombPos_Wall) = {
.pos = { 487.0f, 0.0f, 80.0f },
.radius = 0.0f
};
EvtScript N(EVS_BlastWall) = {
EVT_PLAY_EFFECT(EFFECT_BOMBETTE_BREAKING, 0, 38, 30, 1, 10, 30)
EVT_CALL(EnableModel, MODEL_g260, FALSE)
EVT_CALL(EnableModel, MODEL_g265, FALSE)
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilittse, COLLIDER_FLAGS_UPPER_MASK)
EVT_CALL(EnableModel, MODEL_o952, TRUE)
EVT_SET(GF_PRA09_BombedWall, TRUE)
EVT_UNBIND
EVT_RETURN
EVT_END
};
EvtScript N(EVS_Main) = {
EVT_SET(GB_WorldLocation, LOCATION_CRYSTAL_PALACE)
EVT_CALL(SetSpriteShading, SHADING_NONE)
EVT_CALL(SetCamPerspective, CAM_DEFAULT, 3, 25, 16, 4096)
EVT_CALL(SetCamBGColor, CAM_DEFAULT, 24, 24, 40)
EVT_CALL(SetCamLeadPlayer, CAM_DEFAULT, FALSE)
EVT_CALL(SetCamEnabled, CAM_DEFAULT, TRUE)
EVT_CALL(MakeNpcs, TRUE, EVT_PTR(N(DefaultNPCs)))
EVT_IF_EQ(GF_PRA09_BombedWall, FALSE)
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_BlastWall)), TRIGGER_POINT_BOMB, EVT_PTR(N(BombPos_Wall)), 1, 0)
EVT_CALL(EnableModel, MODEL_o952, FALSE)
EVT_ELSE
EVT_CALL(EnableModel, MODEL_g260, FALSE)
EVT_CALL(EnableModel, MODEL_g265, FALSE)
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilittse, COLLIDER_FLAGS_UPPER_MASK)
EVT_END_IF
EVT_EXEC(N(EVS_SetupMusic))
EVT_SET(LVar0, 1)
EVT_SET(LVar1, GF_PRA_BrokeIllusion)
EVT_EXEC(N(EVS_SetupReflections))
EVT_EXEC(N(EVS_EnterMap))
EVT_WAIT(1)
EVT_RETURN
EVT_END
};

File diff suppressed because it is too large Load Diff

View File

@ -10,8 +10,8 @@
#include "mapfs/pra_10_hit.h"
enum {
NPC_Swoopula_01 = 0,
NPC_Swoopula_02 = 1,
NPC_Swoopula_01 = 0,
NPC_Swoopula_02 = 1,
};
#define NAMESPACE pra_10

View File

@ -1,6 +0,0 @@
#include "pra_13.h"
static char* N(exit_str_0) = "pra_02";
static char* N(exit_str_1) = "pra_14";
#include "../common/MapInit_EnableFloorReflection.inc.c"

View File

@ -1,108 +0,0 @@
#include "pra_13.h"
#include "../common/Reflection.inc.c"
#include "world/common/todo/GetNpcCollisionHeight.inc.c"
#include "world/common/todo/AddPlayerHandsOffset.inc.c"
extern s32 N(ItemChoice_HasSelectedItem);
extern s32 N(ItemChoice_SelectedItemID);
#include "world/common/todo/ItemChoice_WaitForSelection.inc.c"
ApiStatus N(ItemChoice_SaveSelected)(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
N(ItemChoice_SelectedItemID) = evt_get_variable(script, *args++);
N(ItemChoice_HasSelectedItem) = TRUE;
return ApiStatus_DONE2;
}
BSS s32 D_80243720[114];
BSS s32 pra_13_802438E8[92];
ApiStatus func_802411D8_D657B8(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
s32* ptr = (s32*) evt_get_variable(script, *args++);
s32 i;
if (ptr != NULL) {
for (i = 0; ptr[i] != 0; i++) {
D_80243720[i] = ptr[i];
}
D_80243720[i] = 0;
} else {
for (i = 0; i < 112; i++) {
D_80243720[i] = i + 16;
D_80243720[112] = 0;
}
}
return ApiStatus_DONE2;
}
ApiStatus func_80241274_D65854(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
s32* ptr = (s32*) evt_get_variable(script, *args++);
s32 i;
if (ptr != NULL) {
for (i = 0; ptr[i] != 0; i++) {
pra_13_802438E8[i] = ptr[i];
}
pra_13_802438E8[i] = 0;
} else {
for (i = 0; i < 91; i++) {
pra_13_802438E8[i] = i + 128;
pra_13_802438E8[91] = 0;
}
}
return ApiStatus_DONE2;
}
#include "world/common/todo/PlayBigSmokePuff.inc.c"
ApiStatus func_802413A4_D65984(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
get_npc_safe(evt_get_variable(script, *args++));
return ApiStatus_DONE2;
}
void func_8024140C_D659EC(void);
void func_802414BC_D65A9C(void* npc);
ApiStatus func_802413D0_D659B0(Evt* script, s32 isInitialCall) {
script->array[0] = create_worker_world(0, func_8024140C_D659EC);
return ApiStatus_DONE2;
}
void func_8024140C_D659EC(void) {
RenderTask rt;
RenderTask* rtPtr = &rt;
Npc* npc = get_npc_safe(0);
if (gPlayerStatusPtr->flags & PS_FLAG_HAS_REFLECTION) {
s32 x, y, z;
get_screen_coords(gCurrentCamID, npc->pos.x, npc->pos.y, -npc->pos.z, &x, &y, &z);
rtPtr->renderMode = npc->renderMode;
rtPtr->distance = -z;
rtPtr->appendGfxArg = npc;
rtPtr->appendGfx = func_802414BC_D65A9C;
queue_render_task(rtPtr);
}
}
void func_802414BC_D65A9C(void* data) {
Npc* npc = data;
Matrix4f sp18, sp58, sp98, spD8;
npc_get_render_yaw(npc);
guRotateF(sp18, npc->renderYaw + gCameras[gCurrentCamID].currentYaw, 0.0f, 1.0f, 0.0f);
guScaleF(spD8, SPRITE_WORLD_SCALE_F, SPRITE_WORLD_SCALE_F, SPRITE_WORLD_SCALE_F);
guMtxCatF(sp18, spD8, sp18);
guTranslateF(sp58, npc->pos.x, npc->pos.y, npc->pos.z);
guMtxCatF(sp18, sp58, sp18);
spr_update_player_sprite(PLAYER_SPRITE_AUX2, npc->currentAnim, 1.0f);
spr_draw_player_sprite(PLAYER_SPRITE_AUX2, 0, 0, 0, sp18);
}

View File

@ -2,8 +2,25 @@
/// @brief Crystal Palace - Blue Mirror Hall 1
#include "common.h"
#include "../pra.h"
#include "message_ids.h"
#include "map.h"
#include "../pra.h"
#include "mapfs/pra_13_shape.h"
#include "mapfs/pra_13_hit.h"
#include "sprite/npc/WorldBombette.h"
#include "sprite/npc/Duplighost.h"
enum {
NPC_FakeMario = 0,
NPC_FakeBombette = 1,
NPC_Duplighost_01 = 2,
NPC_Duplighost_02 = 3,
};
#define NAMESPACE pra_13
extern EvtScript N(EVS_Main);
extern EvtScript N(EVS_SetupMusic);
extern NpcGroupList N(DefaultNPCs);

View File

@ -0,0 +1,17 @@
#include "pra_13.h"
#include "../common/MapInit_EnableFloorReflection.inc.c"
EntryList N(Entrances) = {
[pra_13_ENTRY_0] { 13.0, 0.0, 70.0, 90.0 },
[pra_13_ENTRY_1] { 487.0, 0.0, 70.0, 270.0 },
[pra_13_ENTRY_2] { 487.0, 0.0, -70.0, 270.0 },
[pra_13_ENTRY_3] { 13.0, 0.0, -70.0, 90.0 },
};
MapSettings N(settings) = {
.main = &N(EVS_Main),
.entryList = &N(Entrances),
.entryCount = ENTRY_COUNT(N(Entrances)),
.tattle = { MSG_MapTattle_pra_13 },
};

View File

@ -0,0 +1,7 @@
#include "pra_13.h"
EvtScript N(EVS_SetupMusic) = {
EVT_CALL(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8)
EVT_RETURN
EVT_END
};

View File

@ -0,0 +1,190 @@
#include "pra_13.h"
#include "effects.h"
#include "../common/Reflection.inc.c"
#include "../common/Reflection.data.inc.c"
#include "../common/GlassShimmer.inc.c"
s32 N(NearLeftDoorModelsL)[] = { MODEL_o772, MODEL_o844, -1 };
s32 N(NearLeftDoorModelsR)[] = { MODEL_o768, MODEL_o846, -1 };
s32 N(FarLeftDoorModelsL)[] = { MODEL_o859, MODEL_o860, -1 };
s32 N(FarLeftDoorModelsR)[] = { MODEL_o861, MODEL_o862, -1 };
s32 N(BothLeftDoorModelsL)[] = { MODEL_o772, MODEL_o844, MODEL_o859, MODEL_o860, -1 };
s32 N(BothLeftDoorModelsR)[] = { MODEL_o768, MODEL_o846, MODEL_o861, MODEL_o862, -1 };
EvtScript N(EVS_ExitDoors_pra_02_2) = {
EVT_SET_GROUP(EVT_GROUP_1B)
EVT_CALL(DisablePlayerInput, TRUE)
EVT_CALL(UseDoorSounds, DOOR_SOUNDS_CREAKY)
EVT_SET(LVar0, 0)
EVT_SET(LVar1, 20)
EVT_IF_EQ(GF_PRA_BrokeIllusion, FALSE)
EVT_SET(LVar2, EVT_PTR(N(BothLeftDoorModelsL)))
EVT_SET(LVar3, EVT_PTR(N(BothLeftDoorModelsR)))
EVT_ELSE
EVT_SET(LVar2, EVT_PTR(N(NearLeftDoorModelsL)))
EVT_SET(LVar3, EVT_PTR(N(NearLeftDoorModelsR)))
EVT_END_IF
EVT_EXEC(BaseExitDoor)
EVT_WAIT(17)
EVT_CALL(GotoMap, EVT_PTR("pra_02"), pra_02_ENTRY_2)
EVT_WAIT(100)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_ExitWalk_pra_14_0) = EVT_EXIT_WALK(60, pra_13_ENTRY_1, "pra_14", pra_14_ENTRY_0);
EvtScript N(EVS_Unused_1) = {
EVT_RETURN
EVT_END
};
EvtScript N(EVS_ExitWalk_pra_14_1) = EVT_EXIT_WALK(60, pra_13_ENTRY_2, "pra_14", pra_14_ENTRY_1);
EvtScript N(EVS_Unused_2) = {
EVT_RETURN
EVT_END
};
EvtScript N(EVS_ExitDoors_pra_02_3) = {
EVT_SET_GROUP(EVT_GROUP_1B)
EVT_CALL(DisablePlayerInput, TRUE)
EVT_CALL(UseDoorSounds, DOOR_SOUNDS_CREAKY)
EVT_SET(LVar0, 3)
EVT_SET(LVar1, 24)
EVT_IF_EQ(GF_PRA_BrokeIllusion, FALSE)
EVT_SET(LVar2, EVT_PTR(N(BothLeftDoorModelsL)))
EVT_SET(LVar3, EVT_PTR(N(BothLeftDoorModelsR)))
EVT_ELSE
EVT_SET(LVar2, EVT_PTR(N(FarLeftDoorModelsL)))
EVT_SET(LVar3, EVT_PTR(N(FarLeftDoorModelsR)))
EVT_END_IF
EVT_EXEC(BaseExitDoor)
EVT_WAIT(17)
EVT_CALL(GotoMap, EVT_PTR("pra_02"), pra_02_ENTRY_3)
EVT_WAIT(100)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_BindExitTriggers) = {
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitDoors_pra_02_2)), TRIGGER_WALL_PRESS_A, COLLIDER_deilittsw, 1, 0)
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_pra_14_0)), TRIGGER_FLOOR_ABOVE, COLLIDER_deilise, 1, 0)
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitWalk_pra_14_1)), TRIGGER_FLOOR_ABOVE, COLLIDER_deiline, 1, 0)
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_ExitDoors_pra_02_3)), TRIGGER_WALL_PRESS_A, COLLIDER_deilittnw, 1, 0)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_EnterMap) = {
EVT_CALL(GetEntryID, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_EQ(pra_13_ENTRY_0)
EVT_CALL(UseDoorSounds, DOOR_SOUNDS_CREAKY)
EVT_IF_EQ(GF_PRA_BrokeIllusion, FALSE)
EVT_SET(LVar2, EVT_PTR(N(BothLeftDoorModelsL)))
EVT_SET(LVar3, EVT_PTR(N(BothLeftDoorModelsR)))
EVT_ELSE
EVT_SET(LVar2, EVT_PTR(N(NearLeftDoorModelsL)))
EVT_SET(LVar3, EVT_PTR(N(NearLeftDoorModelsR)))
EVT_END_IF
EVT_EXEC_WAIT(BaseEnterDoor)
EVT_EXEC(N(EVS_BindExitTriggers))
EVT_CASE_EQ(pra_13_ENTRY_1)
EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers)))
EVT_EXEC(EnterWalk)
EVT_CASE_EQ(pra_13_ENTRY_2)
EVT_SET(LVar0, EVT_PTR(N(EVS_BindExitTriggers)))
EVT_EXEC(EnterWalk)
EVT_CASE_EQ(pra_13_ENTRY_3)
EVT_CALL(UseDoorSounds, DOOR_SOUNDS_CREAKY)
EVT_IF_EQ(GF_PRA_BrokeIllusion, FALSE)
EVT_SET(LVar2, EVT_PTR(N(BothLeftDoorModelsL)))
EVT_SET(LVar3, EVT_PTR(N(BothLeftDoorModelsR)))
EVT_ELSE
EVT_SET(LVar2, EVT_PTR(N(FarLeftDoorModelsL)))
EVT_SET(LVar3, EVT_PTR(N(FarLeftDoorModelsR)))
EVT_END_IF
EVT_EXEC_WAIT(BaseEnterDoor)
EVT_EXEC(N(EVS_BindExitTriggers))
EVT_END_SWITCH
EVT_RETURN
EVT_END
};
BombTrigger N(BombPos_NearWall) = {
.pos = { 487.0f, 0.0f, 80.0f },
.radius = 0.0f
};
BombTrigger N(BombPos_FarWall) = {
.pos = { 487.0f, 0.0f, -80.0f },
.radius = 0.0f
};
EvtScript N(EVS_BlastWall_Near) = {
EVT_PLAY_EFFECT(EFFECT_BOMBETTE_BREAKING, 0, 50, 34, 1, 10, 30)
EVT_CALL(EnableModel, MODEL_g260, FALSE)
EVT_CALL(EnableModel, MODEL_g265, FALSE)
EVT_CALL(EnableModel, MODEL_o952, TRUE)
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilittse, COLLIDER_FLAGS_UPPER_MASK)
EVT_SET(GF_PRA13_BombedWallA, TRUE)
EVT_SET(GF_PRA_BrokeIllusion, TRUE)
EVT_UNBIND
EVT_RETURN
EVT_END
};
EvtScript N(EVS_BlastWall_Far) = {
EVT_PLAY_EFFECT(EFFECT_BOMBETTE_BREAKING, 0, 65, 34, 1, 10, 30)
EVT_CALL(EnableModel, MODEL_g289, FALSE)
EVT_CALL(EnableModel, MODEL_g290, FALSE)
EVT_CALL(EnableModel, MODEL_o1009, TRUE)
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilittne, COLLIDER_FLAGS_UPPER_MASK)
EVT_SET(GF_PRA13_BombedWallB, TRUE)
EVT_UNBIND
EVT_RETURN
EVT_END
};
EvtScript N(EVS_Main) = {
EVT_SET(GB_WorldLocation, LOCATION_CRYSTAL_PALACE)
EVT_CALL(SetSpriteShading, SHADING_NONE)
EVT_CALL(SetCamPerspective, CAM_DEFAULT, 3, 25, 16, 4096)
EVT_CALL(SetCamBGColor, CAM_DEFAULT, 24, 24, 40)
EVT_CALL(SetCamLeadPlayer, CAM_DEFAULT, FALSE)
EVT_CALL(SetCamEnabled, CAM_DEFAULT, TRUE)
EVT_CALL(MakeNpcs, TRUE, EVT_PTR(N(DefaultNPCs)))
EVT_SET(LVar0, MODEL_o945)
EVT_SET(LVar1, MODEL_o947)
EVT_SET(LVar2, 0)
EVT_EXEC(N(EVS_GlassShimmer))
EVT_SET(LVar0, REFLECTION_FLOOR_WALL)
EVT_SET(LVar1, GF_PRA_BrokeIllusion)
EVT_EXEC(N(EVS_SetupReflections))
EVT_EXEC(N(EVS_EnterMap))
EVT_WAIT(1)
EVT_EXEC(N(EVS_SetupMusic))
EVT_IF_EQ(GF_PRA13_BombedWallA, FALSE)
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_BlastWall_Near)), TRIGGER_POINT_BOMB, EVT_PTR(N(BombPos_NearWall)), 1, 0)
EVT_CALL(EnableModel, MODEL_o952, FALSE)
EVT_ELSE
EVT_CALL(EnableModel, MODEL_g260, FALSE)
EVT_CALL(EnableModel, MODEL_g265, FALSE)
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilittse, COLLIDER_FLAGS_UPPER_MASK)
EVT_END_IF
EVT_IF_EQ(GF_PRA13_BombedWallB, FALSE)
EVT_BIND_TRIGGER(EVT_PTR(N(EVS_BlastWall_Far)), TRIGGER_POINT_BOMB, EVT_PTR(N(BombPos_FarWall)), 1, 0)
EVT_CALL(EnableModel, MODEL_o1009, FALSE)
EVT_ELSE
EVT_CALL(EnableModel, MODEL_g289, FALSE)
EVT_CALL(EnableModel, MODEL_g290, FALSE)
EVT_CALL(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilittne, COLLIDER_FLAGS_UPPER_MASK)
EVT_END_IF
EVT_RETURN
EVT_END
};

View File

@ -0,0 +1,272 @@
#include "pra_13.h"
#include "sprite.h"
#include "world/common/enemy/complete/Bombette.h"
#include "world/common/enemy/complete/Duplighost.h"
NpcSettings N(NpcSettings_Player) = {
.height = 30,
.radius = 45,
.level = 99,
};
#include "world/common/complete/KeyItemChoice.inc.c"
MAP_STATIC_PAD(1,key_item);
#include "world/common/complete/NormalItemChoice.inc.c"
#include "world/common/todo/PlayBigSmokePuff.inc.c"
API_CALLABLE(N(DoNothingWithNpcID)) {
Bytecode* args = script->ptrReadPos;
s32 npcID = evt_get_variable(script, *args++);
get_npc_safe(npcID);
return ApiStatus_DONE2;
}
void N(appendGfx_fake_player)(void* data);
void N(worker_draw_fake_player)(void);
API_CALLABLE(N(CreateFakePlayerRenderer)) {
script->array[0] = create_worker_world(NULL, N(worker_draw_fake_player));
return ApiStatus_DONE2;
}
void N(worker_draw_fake_player)(void) {
RenderTask rt;
RenderTask* rtPtr = &rt;
Npc* npc = get_npc_safe(NPC_FakeMario);
if (gPlayerStatusPtr->flags & PS_FLAG_HAS_REFLECTION) {
s32 x, y, z;
get_screen_coords(gCurrentCamID, npc->pos.x, npc->pos.y, -npc->pos.z, &x, &y, &z);
rtPtr->renderMode = npc->renderMode;
rtPtr->distance = -z;
rtPtr->appendGfxArg = npc;
rtPtr->appendGfx = N(appendGfx_fake_player);
queue_render_task(rtPtr);
}
}
void N(appendGfx_fake_player)(void* data) {
Npc* npc = data;
Matrix4f mtxTransform, mtxTranslate, sp98, mtxScale;
npc_get_render_yaw(npc);
guRotateF(mtxTransform, npc->renderYaw + gCameras[gCurrentCamID].currentYaw, 0.0f, 1.0f, 0.0f);
guScaleF(mtxScale, SPRITE_WORLD_SCALE_F, SPRITE_WORLD_SCALE_F, SPRITE_WORLD_SCALE_F);
guMtxCatF(mtxTransform, mtxScale, mtxTransform);
guTranslateF(mtxTranslate, npc->pos.x, npc->pos.y, npc->pos.z);
guMtxCatF(mtxTransform, mtxTranslate, mtxTransform);
spr_update_player_sprite(PLAYER_SPRITE_AUX2, npc->currentAnim, 1.0f);
spr_draw_player_sprite(PLAYER_SPRITE_AUX2, 0, 0, 0, mtxTransform);
}
EvtScript N(EVS_ImposterSpin) = {
EVT_CALL(MakeLerp, 0, 8 * 360, 40, EASING_QUADRATIC_OUT)
EVT_LABEL(1)
EVT_CALL(UpdateLerp)
EVT_CALL(SetNpcRotation, LVar4, 0, LVar0, 0)
EVT_WAIT(1)
EVT_IF_EQ(LVar1, 1)
EVT_GOTO(1)
EVT_END_IF
EVT_RETURN
EVT_END
};
EvtScript N(EVS_Scene_ImpostersCaught) = {
EVT_CALL(GetEntryID, LVar0)
EVT_IF_EQ(LVar0, pra_13_ENTRY_2)
EVT_IF_LT(GB_StoryProgress, STORY_CH7_DEFEATED_MIRROR_DUPLIGHOSTS)
EVT_CALL(DisablePlayerInput, TRUE)
EVT_WAIT(10)
EVT_CALL(SetNpcYaw, NPC_FakeMario, 90)
EVT_THREAD
EVT_CALL(SetPlayerSpeed, EVT_FLOAT(2.0))
EVT_CALL(PlayerMoveTo, 440, -70, 0)
EVT_END_THREAD
EVT_WAIT(15)
EVT_CALL(GetNpcPos, NPC_FakeMario, LVar0, LVar1, LVar2)
EVT_CALL(SetCamProperties, CAM_DEFAULT, EVT_FLOAT(5.0), LVar0, LVar1, LVar2, EVT_FLOAT(350.0), EVT_FLOAT(12.0), EVT_FLOAT(-7.0))
EVT_CALL(SpeakToPlayer, NPC_FakeMario, ANIM_Mario_1002B, ANIM_Mario_1002B, 0, MSG_CH7_0139)
EVT_CALL(SpeakToPlayer, NPC_FakeBombette, ANIM_WorldBombette_Talk, ANIM_WorldBombette_Idle, 0, MSG_CH7_013A)
EVT_CALL(ResetCam, CAM_DEFAULT, EVT_FLOAT(6.0))
EVT_CALL(PanToTarget, CAM_DEFAULT, 0, 0)
EVT_THREAD
EVT_CALL(GetNpcPos, NPC_FakeMario, LVar0, LVar1, LVar2)
EVT_CALL(SetNpcPos, NPC_FakeMario, NPC_DISPOSE_LOCATION)
EVT_CALL(N(PlayBigSmokePuff), LVar0, LVar1, LVar2)
EVT_CALL(SetNpcPos, NPC_Duplighost_01, LVar0, LVar1, LVar2)
EVT_CALL(PlaySoundAtNpc, NPC_Duplighost_01, SOUND_SMOKE_BURST, 0)
EVT_CALL(SetNpcFlagBits, NPC_Duplighost_01, NPC_FLAG_100, TRUE)
EVT_SET(LVar4, 2)
EVT_CALL(SetNpcYaw, NPC_Duplighost_01, 90)
EVT_EXEC_WAIT(N(EVS_ImposterSpin))
EVT_CALL(SetNpcAnimation, NPC_Duplighost_01, ANIM_Duplighost_Anim04)
EVT_CALL(SetNpcFlagBits, NPC_Duplighost_01, NPC_FLAG_100, TRUE)
EVT_CALL(NpcMoveTo, NPC_Duplighost_01, 430, -70, 15)
EVT_END_THREAD
EVT_THREAD
EVT_CALL(GetNpcPos, NPC_FakeBombette, LVar0, LVar1, LVar2)
EVT_CALL(N(PlayBigSmokePuff), LVar0, LVar1, LVar2)
EVT_CALL(SetNpcPos, NPC_FakeBombette, 389, 0, -61)
EVT_CALL(SetNpcPos, NPC_Duplighost_02, LVar0, LVar1, LVar2)
EVT_CALL(PlaySoundAtNpc, NPC_Duplighost_02, SOUND_SMOKE_BURST, 0)
EVT_CALL(SetNpcFlagBits, NPC_FakeBombette, NPC_FLAG_100 | NPC_FLAG_1000000, TRUE)
EVT_CALL(SetNpcFlagBits, NPC_Duplighost_02, NPC_FLAG_100, TRUE)
EVT_SET(LVar4, 3)
EVT_CALL(SetNpcYaw, NPC_Duplighost_02, 90)
EVT_EXEC_WAIT(N(EVS_ImposterSpin))
EVT_CALL(SetNpcAnimation, NPC_Duplighost_02, ANIM_Duplighost_Anim04)
EVT_CALL(SetNpcFlagBits, NPC_Duplighost_02, NPC_FLAG_100, TRUE)
EVT_CALL(NpcMoveTo, NPC_Duplighost_02, 420, -70, 15)
EVT_END_THREAD
EVT_WAIT(35)
EVT_CALL(StartBossBattle, SONG_SPECIAL_BATTLE)
EVT_END_IF
EVT_END_IF
EVT_RETURN
EVT_END
};
EvtScript N(EVS_Scene_DefeatImposters) = {
EVT_CALL(SetNpcPos, NPC_Duplighost_01, 400, 0, -70)
EVT_CALL(SetNpcPos, NPC_Duplighost_02, 370, 0, -70)
EVT_CALL(SetNpcAnimation, NPC_Duplighost_01, ANIM_Duplighost_Anim02)
EVT_CALL(SetNpcAnimation, NPC_Duplighost_02, ANIM_Duplighost_Anim02)
EVT_SET_GROUP(EVT_GROUP_00)
EVT_CALL(SetTimeFreezeMode, TIME_FREEZE_PARTIAL)
EVT_CALL(SetNpcPos, NPC_FakeBombette, NPC_DISPOSE_LOCATION)
EVT_WAIT(10)
EVT_CALL(SpeakToPlayer, NPC_Duplighost_01, ANIM_Duplighost_Anim05, ANIM_Duplighost_Anim02, 0, MSG_CH7_013B)
EVT_WAIT(10)
EVT_CALL(InterpNpcYaw, NPC_Duplighost_01, 270, 0)
EVT_CALL(InterpNpcYaw, NPC_Duplighost_02, 270, 0)
EVT_WAIT(15)
EVT_THREAD
EVT_CALL(PlaySoundAtNpc, NPC_Duplighost_01, SOUND_2CB, 0)
EVT_CALL(SetNpcAnimation, NPC_Duplighost_01, ANIM_Duplighost_Anim04)
EVT_CALL(NpcMoveTo, NPC_Duplighost_01, 0, -70, 45)
EVT_CALL(SetNpcPos, NPC_Duplighost_01, NPC_DISPOSE_LOCATION)
EVT_END_THREAD
EVT_CALL(PlaySoundAtNpc, NPC_Duplighost_02, SOUND_2CB, 0)
EVT_CALL(SetNpcAnimation, NPC_Duplighost_02, ANIM_Duplighost_Anim04)
EVT_CALL(NpcMoveTo, NPC_Duplighost_02, -30, -70, 45)
EVT_CALL(SetNpcPos, NPC_Duplighost_02, -30, -1000, 0)
EVT_SET(GB_StoryProgress, STORY_CH7_DEFEATED_MIRROR_DUPLIGHOSTS)
EVT_CALL(SetTimeFreezeMode, TIME_FREEZE_NORMAL)
EVT_SET_GROUP(EVT_GROUP_0B)
EVT_CALL(DisablePlayerInput, FALSE)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_NpcInit_FakeMario) = {
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_10000000, TRUE)
EVT_CALL(SetNpcAnimation, NPC_SELF, ANIM_Mario_10002)
EVT_CALL(GetEntryID, LVar0)
EVT_IF_EQ(LVar0, pra_13_ENTRY_2)
EVT_IF_LT(GB_StoryProgress, STORY_CH7_DEFEATED_MIRROR_DUPLIGHOSTS)
EVT_CALL(SetNpcPos, NPC_SELF, 375, 0, -59)
EVT_END_IF
EVT_ELSE
EVT_IF_EQ(GF_PRA_BrokeIllusion, TRUE)
EVT_IF_LT(GB_StoryProgress, STORY_CH7_DEFEATED_MIRROR_DUPLIGHOSTS)
EVT_CALL(SetNpcPos, NPC_SELF, 465, 0, -59)
EVT_CALL(InterpNpcYaw, NPC_SELF, 270, 0)
EVT_END_IF
EVT_END_IF
EVT_END_IF
EVT_RETURN
EVT_END
};
EvtScript N(EVS_NpcInit_FakeBombette) = {
EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(EVS_Scene_ImpostersCaught)))
EVT_CALL(BindNpcDefeat, NPC_SELF, EVT_PTR(N(EVS_Scene_DefeatImposters)))
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_10000000, TRUE)
EVT_CALL(GetEntryID, LVar0)
EVT_IF_EQ(LVar0, pra_13_ENTRY_2)
EVT_IF_LT(GB_StoryProgress, STORY_CH7_DEFEATED_MIRROR_DUPLIGHOSTS)
EVT_CALL(SetNpcPos, NPC_SELF, 345, 0, -59)
EVT_MALLOC_ARRAY(16, LVarA)
EVT_CALL(N(CreateFakePlayerRenderer))
EVT_END_IF
EVT_ELSE
EVT_IF_EQ(GF_PRA_BrokeIllusion, TRUE)
EVT_IF_LT(GB_StoryProgress, STORY_CH7_DEFEATED_MIRROR_DUPLIGHOSTS)
EVT_CALL(SetNpcPos, NPC_SELF, 435, 0, -59)
EVT_MALLOC_ARRAY(16, LVarA)
EVT_CALL(N(CreateFakePlayerRenderer))
EVT_END_IF
EVT_END_IF
EVT_END_IF
EVT_RETURN
EVT_END
};
EvtScript N(EVS_NpcInit_Duplighost_01) = {
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_10000000, TRUE)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_NpcInit_Duplighost_02) = {
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_10000000, TRUE)
EVT_RETURN
EVT_END
};
StaticNpc N(NpcData_FakeMario) = {
.id = NPC_FakeMario,
.settings = &N(NpcSettings_Player),
.pos = { NPC_DISPOSE_LOCATION },
.yaw = 90,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_4 | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_4000 | ENEMY_FLAG_200000 | ENEMY_FLAG_400000,
.init = &N(EVS_NpcInit_FakeMario),
.drops = NPC_NO_DROPS,
.animations = BOMBETTE_ANIMS,
};
StaticNpc N(NpcData_Imposters)[] = {
{
.id = NPC_FakeBombette,
.settings = &N(NpcSettings_Player),
.pos = { NPC_DISPOSE_LOCATION },
.yaw = 90,
.flags = ENEMY_FLAG_4 | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_40000 | ENEMY_FLAG_200000 | ENEMY_FLAG_400000 | ENEMY_FLAG_NO_DROPS,
.init = &N(EVS_NpcInit_FakeBombette),
.drops = NPC_NO_DROPS,
.animations = BOMBETTE_ANIMS,
},
{
.id = NPC_Duplighost_01,
.settings = &N(NpcSettings_Player),
.pos = { NPC_DISPOSE_LOCATION },
.yaw = 270,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_40000 | ENEMY_FLAG_200000 | ENEMY_FLAG_400000 | ENEMY_FLAG_NO_DROPS,
.init = &N(EVS_NpcInit_Duplighost_01),
.drops = NPC_NO_DROPS,
.animations = DUPLIGHOST_ANIMS,
},
{
.id = NPC_Duplighost_02,
.settings = &N(NpcSettings_Player),
.pos = { NPC_DISPOSE_LOCATION },
.yaw = 270,
.flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_100 | ENEMY_FLAG_400 | ENEMY_FLAG_800 | ENEMY_FLAG_40000 | ENEMY_FLAG_200000 | ENEMY_FLAG_400000 | ENEMY_FLAG_NO_DROPS,
.init = &N(EVS_NpcInit_Duplighost_02),
.drops = NPC_NO_DROPS,
.animations = DUPLIGHOST_ANIMS,
},
};
NpcGroupList N(DefaultNPCs) = {
NPC_GROUP(N(NpcData_FakeMario), BTL_PRA3_FORMATION_02, BTL_PRA3_STAGE_00),
NPC_GROUP(N(NpcData_Imposters), BTL_PRA3_FORMATION_02, BTL_PRA3_STAGE_00),
{}
};

View File

@ -1,6 +0,0 @@
#include "pra_18.h"
static char* N(exit_str_0) = "pra_16";
static char* N(exit_str_1) = "pra_33";
#include "../common/MapInit_EnableFloorReflection.inc.c"

View File

@ -1,3 +0,0 @@
#include "pra_18.h"
#include "../common/Reflection.inc.c"

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