diff --git a/src/game/behaviors/boo.inc.c b/src/game/behaviors/boo.inc.c index 60ab79256..a2b8b3eb3 100644 --- a/src/game/behaviors/boo.inc.c +++ b/src/game/behaviors/boo.inc.c @@ -19,8 +19,13 @@ static s16 sCourtyardBooTripletPositions[][3] = { {-210, 70, -210} }; +static u8 boo_ignore_update(void) { + return (o->oHealth == 0); +} + struct SyncObject* boo_network_init_object(void) { struct SyncObject* so = network_init_object(o, 4000.0f); + so->ignore_if_true = boo_ignore_update; network_init_object_field(o, &o->oBooBaseScale); network_init_object_field(o, &o->oBooNegatedAggressiveness); network_init_object_field(o, &o->oBooOscillationTimer); @@ -735,7 +740,7 @@ static void (*sBooGivingStarActions[])(void) = { }; u8 big_boo_ignore_update(void) { - return cur_obj_has_behavior(bhvGhostHuntBigBoo) && !bigBooActivated; + return o->oHealth == 0 || (cur_obj_has_behavior(bhvGhostHuntBigBoo) && !bigBooActivated); } void bhv_big_boo_loop(void) { @@ -744,7 +749,7 @@ void bhv_big_boo_loop(void) { bigBooActivated = FALSE; struct SyncObject* so = boo_network_init_object(); so->syncDeathEvent = FALSE; - so->ignore_if_true = &big_boo_ignore_update; + so->ignore_if_true = big_boo_ignore_update; } } else if (o->oHealth <= 0) { if (network_sync_object_initialized(o)) { diff --git a/src/game/behaviors/cannon.inc.c b/src/game/behaviors/cannon.inc.c index 8e9c16b58..d4113680b 100644 --- a/src/game/behaviors/cannon.inc.c +++ b/src/game/behaviors/cannon.inc.c @@ -178,8 +178,8 @@ static void cannon_on_received(void) { void bhv_cannon_base_loop(void) { if (!network_sync_object_initialized(o)) { struct SyncObject* so = network_init_object(o, SYNC_DISTANCE_ONLY_EVENTS); - so->ignore_if_true = &cannon_ignore_remote_updates; - so->on_received = &cannon_on_received; + so->ignore_if_true = cannon_ignore_remote_updates; + so->on_received = cannon_on_received; network_init_object_field(o, &o->oAction); network_init_object_field(o, &o->oPrevAction); network_init_object_field(o, &o->oTimer); diff --git a/src/game/behaviors/king_bobomb.inc.c b/src/game/behaviors/king_bobomb.inc.c index c5d31251d..b707c4885 100644 --- a/src/game/behaviors/king_bobomb.inc.c +++ b/src/game/behaviors/king_bobomb.inc.c @@ -364,7 +364,7 @@ u8 king_bobomb_ignore_if_true(void) { return o->oAction == 8; } void bhv_king_bobomb_loop(void) { if (!network_sync_object_initialized(o)) { struct SyncObject* so = network_init_object(o, 4000.0f); - so->ignore_if_true = &king_bobomb_ignore_if_true; + so->ignore_if_true = king_bobomb_ignore_if_true; network_init_object_field(o, &o->oKingBobombUnk88); network_init_object_field(o, &o->oFlags); network_init_object_field(o, &o->oHealth);