From 79f55456d327f5a9f03798a1250cfe831cbce9eb Mon Sep 17 00:00:00 2001 From: Demur Rumed Date: Wed, 2 Jul 2025 06:22:23 +0000 Subject: [PATCH] forest basement cues --- .../accessible-actors/AccessibleActorList.cpp | 28 +++++++++++++++++++ .../accessible-actors/ActorAccessibility.cpp | 1 + 2 files changed, 29 insertions(+) diff --git a/soh/soh/Enhancements/accessible-actors/AccessibleActorList.cpp b/soh/soh/Enhancements/accessible-actors/AccessibleActorList.cpp index 10ac30a5f..92a4d7463 100644 --- a/soh/soh/Enhancements/accessible-actors/AccessibleActorList.cpp +++ b/soh/soh/Enhancements/accessible-actors/AccessibleActorList.cpp @@ -641,6 +641,12 @@ void ActorAccessibility_InitActors() { policy.n = 1; policy.ydist = 50; ActorAccessibility_AddSupportedActor(ACTOR_BG_BDAN_OBJECTS, policy); + ActorAccessibility_InitPolicy(&policy, "Forest Basement Gate", NA_SE_EV_METALGATE_OPEN); + policy.ydist = 1; + policy.distance = 200; + policy.volume = 0.5; + policy.pitch = 1.2; + ActorAccessibility_AddSupportedActor(ACTOR_BG_MORI_HASHIRA4, policy); ActorAccessibility_InitPolicy(&policy, "Ocarina Spots", NA_SE_EV_DIAMOND_SWITCH); policy.n = 30; policy.distance = 800; @@ -1142,6 +1148,28 @@ void ActorAccessibility_InitActors() { temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 2960, -410, -2000 }); temp->policy.distance = 500; + auto forest_basement = [](AccessibleActor* actor) { + Actor* walls = Actor_Find(&actor->play->actorCtx, ACTOR_BG_MORI_KAITENKABE, ACTORCAT_BG); + if (walls != nullptr) { + actor->pos.x = walls->world.pos.x + Math_CosS(-walls->world.rot.y) * (actor->policy.sound == 0 ? -300.0f : 300.0f); + actor->pos.z = walls->world.pos.z + Math_SinS(-walls->world.rot.y) * (actor->policy.sound == 0 ? -300.0f : 300.0f); + if ((actor->frameCount & 31) == 0) { + ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_EV_TRAP_BOUND); + } + } + }; + list = ActorAccessibility_GetVirtualActorList(SCENE_FOREST_TEMPLE, 17); + temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 119, -779, -1566 }); + temp->policy.callback = forest_basement; + temp->policy.sound = 0; + temp->policy.distance = 333; + temp->policy.n = 1; + temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 119, -779, -1566 }); + temp->policy.callback = forest_basement; + temp->policy.sound = 1; + temp->policy.distance = 333; + temp->policy.n = 1; + auto forest_twisted_hallway = [](AccessibleActor* actor) { Actor* twisted = Actor_Find(&actor->play->actorCtx, ACTOR_BG_MORI_HINERI, ACTORCAT_BG); if (twisted != nullptr) { diff --git a/soh/soh/Enhancements/accessible-actors/ActorAccessibility.cpp b/soh/soh/Enhancements/accessible-actors/ActorAccessibility.cpp index 3355bb908..3aeb97ba1 100644 --- a/soh/soh/Enhancements/accessible-actors/ActorAccessibility.cpp +++ b/soh/soh/Enhancements/accessible-actors/ActorAccessibility.cpp @@ -564,6 +564,7 @@ void ActorAccessibility_GeneralHelper(PlayState* play) { 1, 1, &bgId)) { if (SurfaceType_IsHookshotSurface(&play->colCtx, colPoly, bgId)) { ActorAccessibility_PlaySound(nullptr, 2, NA_SE_IT_HOOKSHOT_STICK_OBJ); + ActorAccessibility_SetSoundVolume(nullptr, 2, 0.5f); } } }