From 36c7757f6f018b8a140ce757daebf930d2ccee29 Mon Sep 17 00:00:00 2001 From: Ryan Date: Fri, 25 Aug 2023 21:14:45 -0400 Subject: [PATCH] improved incline detection and scene change callback --- .../accessible-actors/AccessibleActorList.cpp | 21 ++++++++++++++++--- .../accessible-actors/accessibility_cues.cpp | 20 +++++++++++------- 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/soh/soh/Enhancements/accessible-actors/AccessibleActorList.cpp b/soh/soh/Enhancements/accessible-actors/AccessibleActorList.cpp index 1cb9cf329..601a71feb 100644 --- a/soh/soh/Enhancements/accessible-actors/AccessibleActorList.cpp +++ b/soh/soh/Enhancements/accessible-actors/AccessibleActorList.cpp @@ -164,6 +164,7 @@ void accessible_maruta(AccessibleActor* actor) { } void accessible_area_change(AccessibleActor* actor) { + Player* player = GET_PLAYER(actor->play); if (actor->yDistToPlayer > 300.0) { return; } @@ -175,9 +176,22 @@ void accessible_area_change(AccessibleActor* actor) { case 0: ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_EV_FANTOM_WARP_L, false); }*/ - + if (actor->play->sceneNum == 81) { + actor->policy.distance = 4000; + } + if (actor->play->sceneNum <= 11) { + actor->policy.distance = 500; + } + if (actor->sceneIndex == 85 || actor->sceneIndex == 91) { - ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_EV_SARIA_MELODY, false); + if (actor->play->sceneNum == 91 && gSaveContext.entranceIndex != 1504 && gSaveContext.entranceIndex != 1246) { + return; + } + if (actor->play->sceneNum == 85 && actor->world.pos.y < 0) { + ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_EV_HORSE_RUN_LEVEL, false); + } else { + ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_EV_SARIA_MELODY, false); + } //kokiri forest and lost woods } else if (actor->play->sceneNum >= 17 && actor->play->sceneNum <= 25) { return; // dont check for entrances while in boss rooms @@ -232,6 +246,7 @@ void accessible_area_change(AccessibleActor* actor) { return;//boss rooms } else { + actor->policy.distance = 500; ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_OC_DOOR_OPEN, false); } @@ -524,7 +539,7 @@ void accessible_audio_compass(AccessibleActor* actor) { ActorAccessibility_AddSupportedActor(VA_DOOR, policy); ActorAccessibility_InitPolicy(&policy, "Area Change", accessible_area_change, 0); policy.n = 60; - //policy.distance = 2000; + policy.distance = 2000; ActorAccessibility_AddSupportedActor(VA_AREA_CHANGE, policy); //ActorAccessibility_InitPolicy(&policy, "marker", NULL, // NA_SE_EV_DIAMOND_SWITCH); diff --git a/soh/soh/Enhancements/accessible-actors/accessibility_cues.cpp b/soh/soh/Enhancements/accessible-actors/accessibility_cues.cpp index 7865439a7..159f6d71d 100644 --- a/soh/soh/Enhancements/accessible-actors/accessibility_cues.cpp +++ b/soh/soh/Enhancements/accessible-actors/accessibility_cues.cpp @@ -849,16 +849,22 @@ class Climable : protected TerrainCueSound { (fabs(pos.y - (player->actor.world.pos.y + player->actor.yDistToWater)) > 30.0)) { discoverLedge(pos); } - if (pos.y > prevPos.y && fabs(pos.y - prevPos.y) < 20 && fabs(pos.y - prevPos.y) > 2 && + if (pos.y > prevPos.y && fabs(pos.y - prevPos.y) < 20 && fabs(pos.y - prevPos.y) > 1.2 && player->stateFlags1 != PLAYER_STATE1_CLIMBING_LADDER) { // This is an incline. Vec3f_ bottom = pos; - - while ((pos.y > prevPos.y && fabs(pos.y - prevPos.y) < 20 && fabs(pos.y - prevPos.y) > 2 && + f32 ogStep = step; + step = 1.0; + move(); + if (fabs(pos.y - bottom.y) > 3.5) { + discoverWall(pos); + break; + } + while ((pos.y > prevPos.y && fabs(pos.y - prevPos.y) < 20 && fabs(pos.y - prevPos.y) > 1.2 && player->stateFlags1 != PLAYER_STATE1_CLIMBING_LADDER)) { prevPos = pos; if (!move()) { - destroyCurrentSound(); + //destroyCurrentSound(); break; // Probe is out of bounds. } } @@ -872,17 +878,17 @@ class Climable : protected TerrainCueSound { discoverIncline(bottom, pitchModifier); break; } - if (pos.y < prevPos.y && fabs(pos.y - prevPos.y) < 20 && fabs(pos.y - prevPos.y) > 2 && + if (pos.y < prevPos.y && fabs(pos.y - prevPos.y) < 20 && fabs(pos.y - prevPos.y) > 1.2 && player->stateFlags1 != PLAYER_STATE1_CLIMBING_LADDER) { // This is a decline. // discorver top Vec3f_ top = pos; - while ((pos.y < prevPos.y && fabs(pos.y - prevPos.y) < 20 && fabs(pos.y - prevPos.y) > 2 && + while ((pos.y < prevPos.y && fabs(pos.y - prevPos.y) < 20 && fabs(pos.y - prevPos.y) > 1.2 && player->stateFlags1 != PLAYER_STATE1_CLIMBING_LADDER)) { prevPos = pos; if (!move()) { - destroyCurrentSound(); + //destroyCurrentSound(); break; // Probe is out of bounds. } }