diff --git a/src/engine/behavior_script.c b/src/engine/behavior_script.c index d38236400..50613400d 100644 --- a/src/engine/behavior_script.c +++ b/src/engine/behavior_script.c @@ -1119,8 +1119,8 @@ void cur_obj_fake_update(void) { } u16 position_based_random_u16(void) { - u16 value = (u16)(gCurrentObject->oPosX * 2659); - value ^= (u16)(gCurrentObject->oPosY * 1901); + u16 value = (u16)(gCurrentObject->oPosX * 17); + value ^= (u16)(gCurrentObject->oPosY * 613); value ^= (u16)(gCurrentObject->oPosZ * 3331); return value; } diff --git a/src/game/behaviors/rotating_platform.inc.c b/src/game/behaviors/rotating_platform.inc.c index 7f90e7114..25cc9b941 100644 --- a/src/game/behaviors/rotating_platform.inc.c +++ b/src/game/behaviors/rotating_platform.inc.c @@ -8,33 +8,25 @@ struct WFRotatingPlatformData sWFRotatingPlatformData[] = { { 0, 150, wdw_seg7_collision_070186B4, 1000 } }; -void bhv_wf_rotating_wooden_platform_loop(void) { - if (!network_sync_object_initialized(o)) { - network_init_object(o, SYNC_DISTANCE_ONLY_EVENTS); - network_init_object_field(o, &o->oAction); - network_init_object_field(o, &o->oAngleVelYaw); - network_init_object_field(o, &o->oFaceAngleYaw); - network_init_object_field(o, &o->oMoveAngleYaw); - network_init_object_field(o, &o->oTimer); - } - +static void bhv_wf_rotating_wooden_platform_loop_inner(void) { if (o->oAction == 0) { o->oAngleVelYaw = 0; - if (o->oTimer > 60 && network_owns_object(o)) { + if (o->oTimer > 60) { o->oAction++; - o->oFaceAngleYaw = (o->oFaceAngleYaw & 0x8000); - network_send_object(o); } } else { o->oAngleVelYaw = 0x100; - if (o->oTimer > 126) { + if (o->oTimer > 126) o->oAction = 0; - } cur_obj_play_sound_1(SOUND_ENV_ELEVATOR2); } cur_obj_rotate_face_angle_using_vel(); } +void bhv_wf_rotating_wooden_platform_loop(void) { + cur_obj_area_timer_loop(380, bhv_wf_rotating_wooden_platform_loop_inner); +} + void bhv_rotating_platform_loop(void) { s8 sp1F = o->oBehParams >> 24; if (o->oTimer == 0) { diff --git a/src/game/behaviors/sliding_platform.inc.c b/src/game/behaviors/sliding_platform.inc.c index 74fcac9e7..3e2c14579 100644 --- a/src/game/behaviors/sliding_platform.inc.c +++ b/src/game/behaviors/sliding_platform.inc.c @@ -19,19 +19,10 @@ void bhv_wf_sliding_platform_init(void) { break; } - o->oTimer = random_float() * 100.0f; - - if (!network_sync_object_initialized(o)) { - network_init_object(o, SYNC_DISTANCE_ONLY_EVENTS); - network_init_object_field(o, &o->oAction); - network_init_object_field(o, &o->oMoveAngleYaw); - network_init_object_field(o, &o->oPosX); - network_init_object_field(o, &o->oForwardVel); - network_init_object_field(o, &o->oTimer); - } + o->oTimer = position_based_random_float_position() * 100.0f; } -void bhv_wf_sliding_platform_loop(void) { +static void bhv_wf_sliding_platform_loop_inner(void) { switch (o->oAction) { case WF_SLID_BRICK_PTFM_ACT_WAIT: if (o->oTimer >= 101) { @@ -59,12 +50,15 @@ void bhv_wf_sliding_platform_loop(void) { o->oPosX = o->oHomeX; } - if (o->oTimer >= 90 && network_owns_object(o)) { + if (o->oTimer == 90) { o->oAction = WF_SLID_BRICK_PTFM_ACT_EXTEND; o->oForwardVel = o->oWFSlidBrickPtfmMovVel; o->oMoveAngleYaw -= 0x8000; - network_send_object(o); } break; } } + +void bhv_wf_sliding_platform_loop(void) { + cur_obj_area_timer_loop(152, bhv_wf_sliding_platform_loop_inner); +}