From c3629359f40188b0732d26e0980f4e0d8a1e6500 Mon Sep 17 00:00:00 2001 From: Jeod <47716344+JeodC@users.noreply.github.com> Date: Sun, 2 Aug 2026 17:34:35 -0400 Subject: [PATCH] Stop rando spawn overrides from pretending to be jiggies --- src/core2/fx/effect_jiggy_list.c | 3 +++ src/core2/fx/effect_jiggy_spawn.c | 4 ++++ src/port/Enhancements/Events/Hooks/Events.h | 1 + src/port/Rando/ObjectBehavior/Jiggy.cpp | 9 +++++++++ 4 files changed, 17 insertions(+) diff --git a/src/core2/fx/effect_jiggy_list.c b/src/core2/fx/effect_jiggy_list.c index 6f0ef34d5..5d59c7bc3 100644 --- a/src/core2/fx/effect_jiggy_list.c +++ b/src/core2/fx/effect_jiggy_list.c @@ -334,6 +334,9 @@ void func_80333388(enum jiggy_e jiggy_id) { void func_803333DC(Struct81s *arg0, Actor *arg1) { s32 jiggy_id; + if (EventSystem_Should(VB_OVERRIDE_JIGGY_ACTOR_LINK, false, arg0, arg1)) { + return; + } arg0->marker = arg1->marker; if (arg0->unk14 != NULL) { arg0->unk14(arg1, arg0->unk18); diff --git a/src/core2/fx/effect_jiggy_spawn.c b/src/core2/fx/effect_jiggy_spawn.c index f50f5fa4f..0152e2553 100644 --- a/src/core2/fx/effect_jiggy_spawn.c +++ b/src/core2/fx/effect_jiggy_spawn.c @@ -7,6 +7,10 @@ void func_80347B10(Struct81s *arg0){ Actor *actor; actor = bundle_spawn_f32(BUNDLE_10__JIGGY, arg0->position); + // [port] VB_OVERRIDE_BUNDLE_SPAWN can consume the spawn and yield no actor + if (actor == NULL) { + return; + } actor->unk54 = 3.0f; func_803333DC(arg0, actor); } diff --git a/src/port/Enhancements/Events/Hooks/Events.h b/src/port/Enhancements/Events/Hooks/Events.h index 99148ae6b..3983466a0 100644 --- a/src/port/Enhancements/Events/Hooks/Events.h +++ b/src/port/Enhancements/Events/Hooks/Events.h @@ -52,6 +52,7 @@ typedef enum VBehaviorID { VB_OVERRIDE_BOTTLES_TEXT_CALLBACK, VB_OVERRIDE_MOLEHILL_ABILITY, VB_OVERRIDE_JIGGY_SPAWN, + VB_OVERRIDE_JIGGY_ACTOR_LINK, VB_OVERRIDE_PROP_SPAWN, VB_OVERRIDE_BUNDLE_SPAWN, VB_BUNDLE_SPAWN_SET_ACTOR_DATA, diff --git a/src/port/Rando/ObjectBehavior/Jiggy.cpp b/src/port/Rando/ObjectBehavior/Jiggy.cpp index 5084aed7a..d53d51964 100644 --- a/src/port/Rando/ObjectBehavior/Jiggy.cpp +++ b/src/port/Rando/ObjectBehavior/Jiggy.cpp @@ -28,6 +28,15 @@ static void MarkWorldStateFromJiggySpawn(RandoCheckId randoCheckId) { } void Rando::ObjectBehavior::InitJiggyBehavior() { + COND_VB_SHOULD(VB_OVERRIDE_JIGGY_ACTOR_LINK, EVENT_PRIORITY_NORMAL, true, { + (void)va_arg(args, Struct81s*); + Actor* actor = va_arg(args, Actor*); + + if (actor == NULL || actor->marker == NULL || actor->marker->id != MARKER_52_JIGGY) { + *should = true; + } + }) + COND_VB_SHOULD(VB_NAPPER_SET_JIGGY_POSITION, EVENT_PRIORITY_NORMAL, true, { if (!IS_RANDO && !OPTION_ENABLED) { return;