From 1051a4adc58b73d38c6caca6b880a650cab51454 Mon Sep 17 00:00:00 2001 From: MysterD Date: Thu, 1 Oct 2020 00:03:31 -0700 Subject: [PATCH] Synchronized HMC boulders --- src/game/behaviors/boulder.inc.c | 36 ++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/src/game/behaviors/boulder.inc.c b/src/game/behaviors/boulder.inc.c index 6a48a7f0c..daf535446 100644 --- a/src/game/behaviors/boulder.inc.c +++ b/src/game/behaviors/boulder.inc.c @@ -46,24 +46,42 @@ void bhv_big_boulder_loop(void) { } void bhv_big_boulder_generator_loop(void) { + if (!network_sync_object_initialized(o)) { + struct SyncObject* so = network_init_object(o, SYNC_DISTANCE_ONLY_EVENTS); + network_init_object_field(o, &o->oTimer); + } + struct Object *sp1C; if (o->oTimer >= 256) { o->oTimer = 0; + if (network_owns_object(o)) { + network_send_object(o); + } } // TODO: current_mario_room_check() isn't remote-aware!!!! if (!current_mario_room_check(4) || is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 1500)) return; - if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 6000)) { - if ((o->oTimer & 0x3F) == 0) { - sp1C = spawn_object(o, MODEL_HMC_ROLLING_ROCK, bhvBigBoulder); - sp1C->oMoveAngleYaw = random_float() * 4096.0f; - } - } else { - if ((o->oTimer & 0x7F) == 0) { - sp1C = spawn_object(o, MODEL_HMC_ROLLING_ROCK, bhvBigBoulder); - sp1C->oMoveAngleYaw = random_float() * 4096.0f; + if (network_owns_object(o)) { + if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 6000)) { + if ((o->oTimer & 0x3F) == 0) { + sp1C = spawn_object(o, MODEL_HMC_ROLLING_ROCK, bhvBigBoulder); + sp1C->oMoveAngleYaw = random_float() * 4096.0f; + + struct Object* spawn_objects[] = { sp1C }; + u32 models[] = { MODEL_HMC_ROLLING_ROCK }; + network_send_spawn_objects(spawn_objects, models, 1); + } + } else { + if ((o->oTimer & 0x7F) == 0) { + sp1C = spawn_object(o, MODEL_HMC_ROLLING_ROCK, bhvBigBoulder); + sp1C->oMoveAngleYaw = random_float() * 4096.0f; + + struct Object* spawn_objects[] = { sp1C }; + u32 models[] = { MODEL_HMC_ROLLING_ROCK }; + network_send_spawn_objects(spawn_objects, models, 1); + } } } }