From ff796396e33077645cea23ff4687ab17daff52b2 Mon Sep 17 00:00:00 2001 From: "NG (Graham)" Date: Sun, 14 Dec 2025 11:38:16 -0500 Subject: [PATCH] Fix crash on point capture caused by counting fix, fix #66 --- rc_multiplayer/src/matches/generic.rs | 2 +- rc_multiplayer/src/matches/modes/battle_arena.rs | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/rc_multiplayer/src/matches/generic.rs b/rc_multiplayer/src/matches/generic.rs index e939e47..dfda48b 100644 --- a/rc_multiplayer/src/matches/generic.rs +++ b/rc_multiplayer/src/matches/generic.rs @@ -715,7 +715,7 @@ impl GenericGamemodeEngine { log::warn!("Got RequestLoadingSync after user {} was already in/past WaitingForSync stage", user_id); continue; } - log::info!("User {} is awaiting sync", user_id); + log::info!("User {} (player {}) is awaiting sync", user_id, player_id); user_desc.state.mode.store(ConnectionMode::WaitingForSync.to_u8(), std::sync::atomic::Ordering::Relaxed); ready_count += 1; } else if matches!(ConnectionMode::from_u8(user_desc.state.mode.load(std::sync::atomic::Ordering::Relaxed)), ConnectionMode::WaitingForSync) { diff --git a/rc_multiplayer/src/matches/modes/battle_arena.rs b/rc_multiplayer/src/matches/modes/battle_arena.rs index 903f9a5..77dc0e6 100644 --- a/rc_multiplayer/src/matches/modes/battle_arena.rs +++ b/rc_multiplayer/src/matches/modes/battle_arena.rs @@ -372,9 +372,15 @@ impl PointTracker { lost_lasts.insert(point_owner as u8); } // in case 2+ points are captured in the same tick - *owned_points.get_mut(&(new_team as u8)).unwrap() += 1; + if let Some(new_team_owned_points) = owned_points.get_mut(&(new_team as u8)) { + *new_team_owned_points += 1; + } else { + owned_points.insert(new_team as u8, 1); + } if point_owner >= 0 { - *owned_points.get_mut(&(point_owner as u8)).unwrap() -= 1; + if let Some(old_owner_owned_points) = owned_points.get_mut(&(point_owner as u8)) { + *old_owner_owned_points -= 1; + } } generic.broadcast( rlnl::event_code::NetworkEvent::CapturePointNotification,