diff --git a/src/game/behaviors/cannon.inc.c b/src/game/behaviors/cannon.inc.c index 51f2822f9..2755afe7b 100644 --- a/src/game/behaviors/cannon.inc.c +++ b/src/game/behaviors/cannon.inc.c @@ -120,7 +120,9 @@ void opened_cannon_act_1(void) { o->oMoveAngleYaw = marioState->marioObj->oMarioCannonObjectYaw + marioState->marioObj->oMarioCannonInputYaw; } o->oCannonUnk10C = 0; - gMarioShotFromCannon = 1; + if (o->oCannonIsLocal) { + gMarioShotFromCannon = 1; + } } void opened_cannon_act_2(void) { diff --git a/src/game/behaviors/koopa.inc.c b/src/game/behaviors/koopa.inc.c index b90cec64e..499aff312 100644 --- a/src/game/behaviors/koopa.inc.c +++ b/src/game/behaviors/koopa.inc.c @@ -913,14 +913,7 @@ void koopa_the_quick_force_end_race(void) { level_control_timer(TIMER_CONTROL_STOP); if (!o->oKoopaRaceEndpointKoopaFinished) { - network_send_object(o); play_race_fanfare(); - if (gMarioShotFromCannon) { - o->oKoopaRaceEndpointRaceStatus = -1; - } - else { - o->oKoopaRaceEndpointRaceStatus = 1; - } } koopaForceEndRace = FALSE; } @@ -931,6 +924,7 @@ void koopa_the_quick_force_end_race(void) { void bhv_koopa_race_endpoint_update(void) { if (!network_sync_object_initialized(o)) { network_init_object(o, SYNC_DISTANCE_ONLY_EVENTS); + network_init_object_field(o, &o->oKoopaRaceEndpointRaceStatus); network_init_object_field(o, &koopaForceEndRace); } @@ -944,16 +938,15 @@ void bhv_koopa_race_endpoint_update(void) { level_control_timer(TIMER_CONTROL_STOP); if (!o->oKoopaRaceEndpointKoopaFinished) { - koopaForceEndRace = TRUE; - network_send_object(o); - koopaForceEndRace = FALSE; - play_race_fanfare(); if (gMarioShotFromCannon) { o->oKoopaRaceEndpointRaceStatus = -1; } else { o->oKoopaRaceEndpointRaceStatus = 1; } + koopaForceEndRace = TRUE; + network_send_object(o); + koopaForceEndRace = FALSE; } } } diff --git a/src/game/behaviors/sparkle_spawn_star.inc.c b/src/game/behaviors/sparkle_spawn_star.inc.c index 0f7b9907e..58f15efbb 100644 --- a/src/game/behaviors/sparkle_spawn_star.inc.c +++ b/src/game/behaviors/sparkle_spawn_star.inc.c @@ -51,15 +51,16 @@ void set_home_to_mario(void) { break; } } + struct Object* player = nearest_player_to_object(o); if (parentIsMario) { o->oHomeX = o->parentObj->oPosX; o->oHomeZ = o->parentObj->oPosZ; o->oHomeY = o->parentObj->oPosY; - } else { - o->oHomeX = gMarioObject->oPosX; - o->oHomeZ = gMarioObject->oPosZ; - o->oHomeY = gMarioObject->oPosY; + struct Object* player = nearest_player_to_object(o); + o->oHomeX = player->oPosX; + o->oHomeZ = player->oPosZ; + o->oHomeY = player->oPosY; } o->oHomeY += 250.0f; o->oPosY = o->oHomeY;