jabu cue feedback

This commit is contained in:
Demur Rumed 2025-05-04 21:43:35 +00:00
commit f2c8ec4c68
2 changed files with 62 additions and 59 deletions

View file

@ -18,11 +18,15 @@ extern "C" {
#include "overlays/actors/ovl_En_Box/z_en_box.h" #include "overlays/actors/ovl_En_Box/z_en_box.h"
#include "overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.h" #include "overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.h"
#include "overlays/actors/ovl_En_Dog/z_en_dog.h" #include "overlays/actors/ovl_En_Dog/z_en_dog.h"
#include "overlays/actors/ovl_En_Ba/z_en_ba.h"
#include "overlays/actors/ovl_En_Eiyer/z_en_eiyer.h"
void EnBox_WaitOpen(EnBox*, PlayState*); void EnBox_WaitOpen(EnBox*, PlayState*);
void EnKarebaba_DeadItemDrop(EnKarebaba*, PlayState*); void EnKarebaba_DeadItemDrop(EnKarebaba*, PlayState*);
void EnDog_FollowPlayer(EnDog*, PlayState*); void EnDog_FollowPlayer(EnDog*, PlayState*);
s8 EnDog_CanFollow(EnDog*, PlayState*); s8 EnDog_CanFollow(EnDog*, PlayState*);
void EnEiyer_Die(EnEiyer*, PlayState*);
void EnEiyer_Dead(EnEiyer*, PlayState*);
} }
// User data for the general helper VA. // User data for the general helper VA.
@ -167,14 +171,6 @@ void accessible_larva(AccessibleActor* actor) {
} }
} }
void accessible_eiyer(AccessibleActor* actor) {
if (GET_PLAYER(actor->play)->actor.world.pos.y > actor->actor->world.pos.y - 8) {
ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_IT_FISHING_REEL_SLOW, false);
} else {
ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_IT_FISHING_REEL_HIGH, false);
}
}
void accessible_door(AccessibleActor* actor) { void accessible_door(AccessibleActor* actor) {
ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_OC_DOOR_OPEN, false); ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_OC_DOOR_OPEN, false);
} }
@ -351,39 +347,6 @@ void accessible_area_change(AccessibleActor* actor) {
} }
} }
void accessible_231_dekus(AccessibleActor* actor) {
if (actor->actor->params == 1) {
ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_EN_NUTS_FAINT, false);
ActorAccessibility_SetSoundPitch(actor, 0, 1.0);
} else if (actor->actor->params == 2) {
ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_EN_NUTS_FAINT, false);
ActorAccessibility_SetSoundPitch(actor, 0, 0.5);
} else if (actor->actor->params == 3) {
ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_EN_NUTS_FAINT, false);
ActorAccessibility_SetSoundPitch(actor, 0, 1.5);
} else {
return;
}
}
void accessible_hana(AccessibleActor* actor) {
if (actor->actor->params == 1) {
ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_EN_OCTAROCK_ROCK, false);
} else if (actor->actor->params == 0) {
ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_EV_DIG_UP, false);
}
}
void accessible_climable(AccessibleActor* actor) {
Player* player = GET_PLAYER(actor->play);
f32 waterLoc = player->actor.yDistToWater + player->actor.world.pos.y;
if (actor->world.pos.y < waterLoc) {
actor->world.pos.y = waterLoc;
}
if (actor != nullptr && actor->yDistToPlayer < 80)
ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_PL_LAND_LADDER, false);
}
void accessible_en_guard(AccessibleActor* actor) { void accessible_en_guard(AccessibleActor* actor) {
Player* player = GET_PLAYER(actor->play); Player* player = GET_PLAYER(actor->play);
f32 guardsfx = NA_SE_IT_SWORD_IMPACT; f32 guardsfx = NA_SE_IT_SWORD_IMPACT;
@ -622,6 +585,8 @@ void ActorAccessibility_InitActors() {
policy.n = Npc_Frames; policy.n = Npc_Frames;
policy.pitch = 1.1; policy.pitch = 1.1;
ActorAccessibility_AddSupportedActor(ACTOR_EN_KO, policy); ActorAccessibility_AddSupportedActor(ACTOR_EN_KO, policy);
policy.englishName = "Zoras";
ActorAccessibility_AddSupportedActor(ACTOR_EN_ZO, policy);
policy.englishName = "Gorons"; policy.englishName = "Gorons";
ActorAccessibility_AddSupportedActor(ACTOR_EN_GO2, policy); ActorAccessibility_AddSupportedActor(ACTOR_EN_GO2, policy);
policy.englishName = "Saria"; policy.englishName = "Saria";
@ -726,9 +691,6 @@ void ActorAccessibility_InitActors() {
ActorAccessibility_AddSupportedActor(ACTOR_EN_KAREBABA, policy); ActorAccessibility_AddSupportedActor(ACTOR_EN_KAREBABA, policy);
ActorAccessibility_InitPolicy(&policy, "Owl", NA_SE_EN_OWL_FLUTTER); ActorAccessibility_InitPolicy(&policy, "Owl", NA_SE_EN_OWL_FLUTTER);
ActorAccessibility_AddSupportedActor(ACTOR_EN_OWL, policy); ActorAccessibility_AddSupportedActor(ACTOR_EN_OWL, policy);
// will probably just get replaced with ghost actors anyways
// ActorAccessibility_AddSupporte dActor(ACTOR_EN_HOLL, "Room Changing Plane", nullptr, 30, 500, 1.0, 1.0,
// NA_SE_EV_STONEDOOR_STOP /*NOT SURE YET*/);
ActorAccessibility_InitPolicy(&policy, "Ruto", NA_SE_VO_RT_LAUGH_0); ActorAccessibility_InitPolicy(&policy, "Ruto", NA_SE_VO_RT_LAUGH_0);
policy.n = 40; policy.n = 40;
@ -794,8 +756,9 @@ void ActorAccessibility_InitActors() {
policy.distance = 1000; policy.distance = 1000;
policy.ydist = 300; policy.ydist = 300;
ActorAccessibility_AddSupportedActor(ACTOR_BG_BDAN_SWITCH, policy); ActorAccessibility_AddSupportedActor(ACTOR_BG_BDAN_SWITCH, policy);
ActorAccessibility_InitPolicy(&policy, "Jabu Elevator", [](AccessibleActor* actor) { ActorAccessibility_InitPolicy(&policy, "Jabu Object", [](AccessibleActor* actor) {
if ((actor->actor->params & 0xFF) == 2 && actor->xzDistToPlayer > 50) { if ((actor->actor->params & 0xFF) == 2 && actor->xzDistToPlayer > 50) {
// Jabu Elevator
ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_PL_LAND_LADDER, false); ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_PL_LAND_LADDER, false);
} }
}); });
@ -820,14 +783,10 @@ void ActorAccessibility_InitActors() {
policy.distance = 800; policy.distance = 800;
ActorAccessibility_AddSupportedActor(ACTOR_OBJ_SYOKUDAI, policy); ActorAccessibility_AddSupportedActor(ACTOR_OBJ_SYOKUDAI, policy);
ActorAccessibility_InitPolicy(&policy, "Deku Tree Moving Platform", accessible_hasi); ActorAccessibility_InitPolicy(&policy, "Deku Tree Moving Platform", accessible_hasi);
// policy.volume = 1.3;
policy.distance = 1000; policy.distance = 1000;
ActorAccessibility_AddSupportedActor(ACTOR_BG_YDAN_HASI, policy); ActorAccessibility_AddSupportedActor(ACTOR_BG_YDAN_HASI, policy);
ActorAccessibility_InitPolicy(&policy, "Pot", NA_SE_EV_POT_BROKEN); ActorAccessibility_InitPolicy(&policy, "Pot", NA_SE_EV_POT_BROKEN);
ActorAccessibility_AddSupportedActor(ACTOR_OBJ_TSUBO, policy); ActorAccessibility_AddSupportedActor(ACTOR_OBJ_TSUBO, policy);
// ActorAccessibility_InitPolicy(&policy, "Deku Tree Entrance", NA_SE_EV_FANTOM_WARP_L);
// policy.distance = 5000;
// ActorAccessibility_AddSupportedActor(ACTOR_BG_TREEMOUTH, policy);
ActorAccessibility_InitPolicy(&policy, "Platform collapsable", NA_SE_EV_BLOCK_SHAKE); ActorAccessibility_InitPolicy(&policy, "Platform collapsable", NA_SE_EV_BLOCK_SHAKE);
ActorAccessibility_AddSupportedActor(ACTOR_OBJ_LIFT, policy); ActorAccessibility_AddSupportedActor(ACTOR_OBJ_LIFT, policy);
ActorAccessibility_InitPolicy(&policy, "Ladder in Slingshot Room", accessible_maruta); ActorAccessibility_InitPolicy(&policy, "Ladder in Slingshot Room", accessible_maruta);
@ -835,13 +794,30 @@ void ActorAccessibility_InitActors() {
ActorAccessibility_InitPolicy(&policy, "bombable wall", NA_SE_EN_OCTAROCK_ROCK); ActorAccessibility_InitPolicy(&policy, "bombable wall", NA_SE_EN_OCTAROCK_ROCK);
ActorAccessibility_AddSupportedActor(ACTOR_BG_BREAKWALL, policy); ActorAccessibility_AddSupportedActor(ACTOR_BG_BREAKWALL, policy);
ActorAccessibility_AddSupportedActor(ACTOR_BG_BOMBWALL, policy); ActorAccessibility_AddSupportedActor(ACTOR_BG_BOMBWALL, policy);
ActorAccessibility_InitPolicy(&policy, "231 dekus", accessible_231_dekus); ActorAccessibility_InitPolicy(&policy, "231 dekus", [](AccessibleActor* actor) {
if (actor->actor->params == 1) {
ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_EN_NUTS_FAINT, false);
ActorAccessibility_SetSoundPitch(actor, 0, 1.0);
} else if (actor->actor->params == 2) {
ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_EN_NUTS_FAINT, false);
ActorAccessibility_SetSoundPitch(actor, 0, 0.5);
} else if (actor->actor->params == 3) {
ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_EN_NUTS_FAINT, false);
ActorAccessibility_SetSoundPitch(actor, 0, 1.5);
}
});
policy.distance = 2000; policy.distance = 2000;
policy.n = 50; policy.n = 50;
ActorAccessibility_AddSupportedActor(ACTOR_EN_HINTNUTS, policy); ActorAccessibility_AddSupportedActor(ACTOR_EN_HINTNUTS, policy);
ActorAccessibility_InitPolicy(&policy, "Flame Circle", NA_SE_EV_FIRE_PILLAR); ActorAccessibility_InitPolicy(&policy, "Flame Circle", NA_SE_EV_FIRE_PILLAR);
ActorAccessibility_AddSupportedActor(ACTOR_BG_HIDAN_CURTAIN, policy); ActorAccessibility_AddSupportedActor(ACTOR_BG_HIDAN_CURTAIN, policy);
ActorAccessibility_InitPolicy(&policy, "uninteractable rocks in kokiri forest", accessible_hana); ActorAccessibility_InitPolicy(&policy, "uninteractable rocks in kokiri forest", [](AccessibleActor* actor) {
if (actor->actor->params == 1) {
ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_EN_OCTAROCK_ROCK, false);
} else if (actor->actor->params == 0) {
ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_EV_DIG_UP, false);
}
});
ActorAccessibility_AddSupportedActor(ACTOR_OBJ_HANA, policy); ActorAccessibility_AddSupportedActor(ACTOR_OBJ_HANA, policy);
ActorAccessibility_InitPolicy(&policy, "gold skulltula token", accessible_en_pickups); ActorAccessibility_InitPolicy(&policy, "gold skulltula token", accessible_en_pickups);
ActorAccessibility_AddSupportedActor(ACTOR_EN_SI, policy); ActorAccessibility_AddSupportedActor(ACTOR_EN_SI, policy);
@ -855,9 +831,21 @@ void ActorAccessibility_InitActors() {
policy.distance = 1000; policy.distance = 1000;
policy.ydist = 1000; policy.ydist = 1000;
ActorAccessibility_AddSupportedActor(ACTOR_EN_GOMA, policy); ActorAccessibility_AddSupportedActor(ACTOR_EN_GOMA, policy);
ActorAccessibility_InitPolicy(&policy, "jabu jabu", NA_SE_EV_JABJAB_HICCUP);
policy.distance = 10000;
ActorAccessibility_AddSupportedActor(ACTOR_EN_JJ, policy);
ActorAccessibility_InitPolicy(&policy, "small jellyfish", NA_SE_EN_BIRI_FLY); ActorAccessibility_InitPolicy(&policy, "small jellyfish", NA_SE_EN_BIRI_FLY);
ActorAccessibility_AddSupportedActor(ACTOR_EN_BILI, policy); ActorAccessibility_AddSupportedActor(ACTOR_EN_BILI, policy);
ActorAccessibility_InitPolicy(&policy, "stinger", accessible_eiyer); ActorAccessibility_InitPolicy(&policy, "stinger", [](AccessibleActor* actor) {
auto actionFunc = ((EnEiyer*)actor->actor)->actionFunc;
if (actionFunc == EnEiyer_Die || actionFunc == EnEiyer_Dead) {
ActorAccessibility_StopAllSoundsForActor(actor);
} else if (GET_PLAYER(actor->play)->actor.world.pos.y > actor->actor->world.pos.y - 8) {
ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_IT_FISHING_REEL_SLOW, false);
} else {
ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_IT_FISHING_REEL_HIGH, false);
}
});
policy.n = 1; policy.n = 1;
policy.distance = 1000; policy.distance = 1000;
policy.ydist = 200; policy.ydist = 200;
@ -865,10 +853,19 @@ void ActorAccessibility_InitActors() {
ActorAccessibility_InitPolicy(&policy, "bubble", NA_SE_EN_DAIOCTA_SPLASH); ActorAccessibility_InitPolicy(&policy, "bubble", NA_SE_EN_DAIOCTA_SPLASH);
policy.ydist = 200; policy.ydist = 200;
ActorAccessibility_AddSupportedActor(ACTOR_EN_BUBBLE, policy); ActorAccessibility_AddSupportedActor(ACTOR_EN_BUBBLE, policy);
ActorAccessibility_InitPolicy(&policy, "tentacle", NA_SE_EN_BALINADE_THUNDER); ActorAccessibility_InitPolicy(&policy, "tentacle obstacle", NA_SE_EN_BALINADE_THUNDER);
ActorAccessibility_AddSupportedActor(ACTOR_EN_BA, policy);
policy.distance = 100; policy.distance = 100;
ActorAccessibility_AddSupportedActor(ACTOR_EN_BX, policy); ActorAccessibility_AddSupportedActor(ACTOR_EN_BX, policy);
ActorAccessibility_InitPolicy(&policy, "tentacle", [](AccessibleActor* actor) {
if (actor->actor->params < EN_BA_DEAD_BLOB) {
actor->policy.volume = 2.5 - (actor->actor->world.pos.y - actor->actor->home.pos.y) / 200.0;
ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_EN_OWL_FLUTTER, false);
}
});
policy.distance = 1500;
policy.ydist = 1000;
policy.n = 5;
ActorAccessibility_AddSupportedActor(ACTOR_EN_BA, policy);
ActorAccessibility_InitPolicy(&policy, "redead", NA_SE_EN_REDEAD_CRY); ActorAccessibility_InitPolicy(&policy, "redead", NA_SE_EN_REDEAD_CRY);
ActorAccessibility_AddSupportedActor(ACTOR_EN_RD, policy); ActorAccessibility_AddSupportedActor(ACTOR_EN_RD, policy);
ActorAccessibility_InitPolicy(&policy, "Beamos", NA_SE_EN_BIMOS_AIM); ActorAccessibility_InitPolicy(&policy, "Beamos", NA_SE_EN_BIMOS_AIM);
@ -893,10 +890,16 @@ void ActorAccessibility_InitActors() {
policy.volume = 1.5; policy.volume = 1.5;
policy.distance = 2000; policy.distance = 2000;
ActorAccessibility_AddSupportedActor(VA_CRAWLSPACE, policy); ActorAccessibility_AddSupportedActor(VA_CRAWLSPACE, policy);
ActorAccessibility_InitPolicy(&policy, "Ladder/climable", accessible_climable); ActorAccessibility_InitPolicy(&policy, "Ladder/climable", [](AccessibleActor* actor) {
// policy.volume = 1.5; Player* player = GET_PLAYER(actor->play);
f32 waterLoc = player->actor.yDistToWater + player->actor.world.pos.y;
if (actor->world.pos.y < waterLoc) {
actor->world.pos.y = waterLoc;
}
if (actor->yDistToPlayer < 80)
ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_PL_LAND_LADDER, false);
});
policy.pitch = 1.3; policy.pitch = 1.3;
// policy.distance = 2000;
ActorAccessibility_AddSupportedActor(VA_CLIMB, policy); ActorAccessibility_AddSupportedActor(VA_CLIMB, policy);
ActorAccessibility_InitPolicy(&policy, "Door", NA_SE_OC_DOOR_OPEN); ActorAccessibility_InitPolicy(&policy, "Door", NA_SE_OC_DOOR_OPEN);
policy.n = 30; policy.n = 30;

View file

@ -3,7 +3,7 @@
// All of the "DUMMY's" and "YOBI's" have been removed as they produce duplicate sounds at best, and cause errors or // All of the "DUMMY's" and "YOBI's" have been removed as they produce duplicate sounds at best, and cause errors or
// even crashes at worst. // even crashes at worst.
const s16 sfxTable[1207] = { const s16 sfxTable[] = {
NA_SE_PL_WALK_GROUND, NA_SE_PL_WALK_GROUND,
NA_SE_PL_WALK_SAND, NA_SE_PL_WALK_SAND,
NA_SE_PL_WALK_CONCRETE, NA_SE_PL_WALK_CONCRETE,
@ -1212,4 +1212,4 @@ const s16 sfxTable[1207] = {
NA_SE_VO_IN_LAUGH, NA_SE_VO_IN_LAUGH,
NA_SE_VO_LI_AUTO_JUMP_DARKLINK, NA_SE_VO_LI_AUTO_JUMP_DARKLINK,
}; };
const int sfxCount = 1207; const int sfxCount = sizeof(sfxTable) / sizeof(s16);