From 4d8e9fef4f83da576cc69529f4c7a25e8f3bde58 Mon Sep 17 00:00:00 2001 From: Demur Rumed Date: Sat, 12 Jul 2025 15:34:43 +0000 Subject: [PATCH] improvements/fixes based on ice cavern map room testing --- .../accessible-actors/AccessibleActorList.cpp | 15 ++++-- .../accessible-actors/ActorAccessibility.cpp | 50 ++++++++++--------- 2 files changed, 39 insertions(+), 26 deletions(-) diff --git a/soh/soh/Enhancements/accessible-actors/AccessibleActorList.cpp b/soh/soh/Enhancements/accessible-actors/AccessibleActorList.cpp index ba3f7fc52..f4b9990e8 100644 --- a/soh/soh/Enhancements/accessible-actors/AccessibleActorList.cpp +++ b/soh/soh/Enhancements/accessible-actors/AccessibleActorList.cpp @@ -826,7 +826,9 @@ void ActorAccessibility_InitActors() { ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_IT_FLAME); } }); - policy.n = 60; + policy.n = 40; + policy.distance = 900; + policy.volume = 2; ActorAccessibility_AddSupportedActor(ACTOR_EN_ICE_HONO, policy); ActorAccessibility_InitPolicy(&policy, "Ice Barred", NA_SE_EV_CHAIN_KEY_UNLOCK); ActorAccessibility_AddSupportedActor(ACTOR_BG_ICE_SHUTTER, policy); @@ -857,6 +859,11 @@ void ActorAccessibility_InitActors() { } }); ActorAccessibility_AddSupportedActor(ACTOR_OBJ_HANA, policy); + ActorAccessibility_InitPolicy(&policy, "Keese", nullptr); + policy.ydist = 1000; + policy.distance = 1500; + policy.aimAssist.isProvider = AIM_SHOOT; + ActorAccessibility_AddSupportedActor(ACTOR_EN_FIREFLY, policy); ActorAccessibility_InitPolicy(&policy, "gold skulltula token", NA_SE_EN_NUTS_DAMAGE); ActorAccessibility_AddSupportedActor(ACTOR_EN_SI, policy); ActorAccessibility_InitPolicy(&policy, "Gold and Wall skulltulas", nullptr); @@ -1260,9 +1267,11 @@ void ActorAccessibility_InitActors() { temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 475, 2840, -30 }); list = ActorAccessibility_GetVirtualActorList(SCENE_ICE_CAVERN, 9); - temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 860, 180, -2400 }); - temp->policy.distance = 300; + temp = ActorAccessibility_AddVirtualActor(list, VA_MARKER, { 860, 200, -2400 }); + temp->policy.aimAssist.isProvider = AIM_CUP; + temp->policy.distance = 750; temp->policy.ydist = 100; + temp->policy.volume = 1.5; temp->policy.sound = NA_SE_EV_BLOCK_SHAKE; ActorAccessibility_InitPolicy(&policy, "Terrain cue helper", nullptr); diff --git a/soh/soh/Enhancements/accessible-actors/ActorAccessibility.cpp b/soh/soh/Enhancements/accessible-actors/ActorAccessibility.cpp index d954f6438..34b9ad5b7 100644 --- a/soh/soh/Enhancements/accessible-actors/ActorAccessibility.cpp +++ b/soh/soh/Enhancements/accessible-actors/ActorAccessibility.cpp @@ -378,29 +378,33 @@ void ActorAccessibility_RunAccessibilityForActor(PlayState* play, AccessibleActo ((actor->policy.aimAssist.isProvider & AIM_CUP) || (player->stateFlags1 & (PLAYER_STATE1_USING_BOOMERANG | PLAYER_STATE1_ITEM_IN_HAND)))) { bool aim = false; - switch (player->heldItemAction) { - case PLAYER_IA_BOW: - case PLAYER_IA_BOW_FIRE: - case PLAYER_IA_BOW_ICE: - case PLAYER_IA_BOW_LIGHT: - case PLAYER_IA_BOW_0C: - case PLAYER_IA_BOW_0D: - case PLAYER_IA_BOW_0E: - aim = actor->policy.aimAssist.isProvider & AIM_BOW; - break; - case PLAYER_IA_SLINGSHOT: - aim = actor->policy.aimAssist.isProvider & AIM_SLING; - break; - case PLAYER_IA_HOOKSHOT: - case PLAYER_IA_LONGSHOT: - aim = actor->policy.aimAssist.isProvider & AIM_HOOK; - break; - case PLAYER_IA_BOOMERANG: - aim = actor->policy.aimAssist.isProvider & AIM_BOOM; - break; - case PLAYER_IA_NONE: - aim = actor->policy.aimAssist.isProvider & AIM_CUP; - break; + if (player->unk_6AD == 2) { + switch (player->heldItemAction) { + case PLAYER_IA_BOW: + case PLAYER_IA_BOW_FIRE: + case PLAYER_IA_BOW_ICE: + case PLAYER_IA_BOW_LIGHT: + case PLAYER_IA_BOW_0C: + case PLAYER_IA_BOW_0D: + case PLAYER_IA_BOW_0E: + aim = actor->policy.aimAssist.isProvider & AIM_BOW; + break; + case PLAYER_IA_SLINGSHOT: + aim = actor->policy.aimAssist.isProvider & AIM_SLING; + break; + case PLAYER_IA_HOOKSHOT: + case PLAYER_IA_LONGSHOT: + aim = actor->policy.aimAssist.isProvider & AIM_HOOK; + break; + case PLAYER_IA_BOOMERANG: + aim = actor->policy.aimAssist.isProvider & AIM_BOOM; + break; + case PLAYER_IA_NONE: + aim = actor->policy.aimAssist.isProvider & AIM_CUP; + break; + } + } else { + aim = actor->policy.aimAssist.isProvider & AIM_CUP; } if (aim) { auto aimAssistProps = ActorAccessibility_ProvideAimAssistForActor(actor);