From 331352878ef7af3fe469c8cd625724270ddae67d Mon Sep 17 00:00:00 2001 From: MelonSpeedruns Date: Mon, 4 May 2026 08:41:19 -0400 Subject: [PATCH 1/5] Fix a UB in morpheel --- src/d/actor/d_a_e_oct_bg.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/d/actor/d_a_e_oct_bg.cpp b/src/d/actor/d_a_e_oct_bg.cpp index 14a421a3b6..3292be8749 100644 --- a/src/d/actor/d_a_e_oct_bg.cpp +++ b/src/d/actor/d_a_e_oct_bg.cpp @@ -502,6 +502,11 @@ void daE_OctBg_c::core_fish_attack() { } else if (field_0xbaf == 0) { cXyz cStack_68(current.pos); f32 in_f31; + + #if AVOID_UB + in_f31 = cM_rndFX(80.0f) + 100.0f; + #endif + cStack_68.y += 200.0f; if (fopAcM_gc_c::gndCheck(&cStack_68)) { f32 groundY = fopAcM_gc_c::getGroundY(); From b8e38e03e2e7f23da894c0671bcd28f7c37b5992 Mon Sep 17 00:00:00 2001 From: MelonSpeedruns Date: Mon, 4 May 2026 09:54:00 -0400 Subject: [PATCH 2/5] Apply PJB request --- src/d/actor/d_a_e_oct_bg.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/d/actor/d_a_e_oct_bg.cpp b/src/d/actor/d_a_e_oct_bg.cpp index 3292be8749..5c7ceffb88 100644 --- a/src/d/actor/d_a_e_oct_bg.cpp +++ b/src/d/actor/d_a_e_oct_bg.cpp @@ -503,10 +503,6 @@ void daE_OctBg_c::core_fish_attack() { cXyz cStack_68(current.pos); f32 in_f31; - #if AVOID_UB - in_f31 = cM_rndFX(80.0f) + 100.0f; - #endif - cStack_68.y += 200.0f; if (fopAcM_gc_c::gndCheck(&cStack_68)) { f32 groundY = fopAcM_gc_c::getGroundY(); @@ -522,6 +518,11 @@ void daE_OctBg_c::core_fish_attack() { field_0xbaf = cM_rndFX(80.0f) + 100.0f; } } + #if AVOID_UB + else { + in_f31 = cM_rndFX(80.0f) + 100.0f; + } + #endif } else if (current.pos.abs(cStack_5c) < 400.0f) { in_f31 = cM_rndF(50.0f) + 20.0f; field_0xbaf = cM_rndFX(20.0f) + 40.0f; From 9105dcb07803c0d3cf17d9be0071f7c2006a08e7 Mon Sep 17 00:00:00 2001 From: MelonSpeedruns Date: Mon, 4 May 2026 09:54:24 -0400 Subject: [PATCH 3/5] remove empty line --- src/d/actor/d_a_e_oct_bg.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/d/actor/d_a_e_oct_bg.cpp b/src/d/actor/d_a_e_oct_bg.cpp index 5c7ceffb88..ebebc366cc 100644 --- a/src/d/actor/d_a_e_oct_bg.cpp +++ b/src/d/actor/d_a_e_oct_bg.cpp @@ -502,7 +502,6 @@ void daE_OctBg_c::core_fish_attack() { } else if (field_0xbaf == 0) { cXyz cStack_68(current.pos); f32 in_f31; - cStack_68.y += 200.0f; if (fopAcM_gc_c::gndCheck(&cStack_68)) { f32 groundY = fopAcM_gc_c::getGroundY(); From 8047330952e0b3f167ad1c515d56ce81a829920a Mon Sep 17 00:00:00 2001 From: MelonSpeedruns Date: Mon, 4 May 2026 09:55:01 -0400 Subject: [PATCH 4/5] oops i suck --- src/d/actor/d_a_e_oct_bg.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/d/actor/d_a_e_oct_bg.cpp b/src/d/actor/d_a_e_oct_bg.cpp index ebebc366cc..5ee1e6428d 100644 --- a/src/d/actor/d_a_e_oct_bg.cpp +++ b/src/d/actor/d_a_e_oct_bg.cpp @@ -519,7 +519,7 @@ void daE_OctBg_c::core_fish_attack() { } #if AVOID_UB else { - in_f31 = cM_rndFX(80.0f) + 100.0f; + in_f31 = cM_rndF(400.0f) + 80.0f; } #endif } else if (current.pos.abs(cStack_5c) < 400.0f) { From 75f4940f5e086a5e86d83192af511db0040530e7 Mon Sep 17 00:00:00 2001 From: MelonSpeedruns Date: Mon, 4 May 2026 11:29:29 -0400 Subject: [PATCH 5/5] set field_0xbaf variable like all the other conditions --- src/d/actor/d_a_e_oct_bg.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/d/actor/d_a_e_oct_bg.cpp b/src/d/actor/d_a_e_oct_bg.cpp index 5ee1e6428d..94fa69596b 100644 --- a/src/d/actor/d_a_e_oct_bg.cpp +++ b/src/d/actor/d_a_e_oct_bg.cpp @@ -520,6 +520,7 @@ void daE_OctBg_c::core_fish_attack() { #if AVOID_UB else { in_f31 = cM_rndF(400.0f) + 80.0f; + field_0xbaf = cM_rndFX(80.0f) + 100.0f; } #endif } else if (current.pos.abs(cStack_5c) < 400.0f) {