diff --git a/godot/scenes/player/local_player.tscn b/godot/scenes/player/local_player.tscn index 1a7ccfc..fe26c3d 100644 --- a/godot/scenes/player/local_player.tscn +++ b/godot/scenes/player/local_player.tscn @@ -19,7 +19,7 @@ font_color = Color(1, 0, 0, 1) outline_size = 10 outline_color = Color(0, 0, 0, 1) -[node name="player" type="LocalPlayer" unique_id=863055906 node_paths=PackedStringArray("camera", "soldier_mesh", "collider", "effects", "dead_cam_target", "respawn_label", "camera_origin", "weapon_node", "pause_panel", "exit_to_lobby", "settings_panel", "scoreboard", "chatbox", "health_label")] +[node name="player" type="LocalPlayer" unique_id=863055906 node_paths=PackedStringArray("camera", "soldier_mesh", "collider", "effects", "dead_cam_target", "respawn_label", "camera_origin", "weapon_node", "pause_panel", "exit_to_lobby", "settings_panel", "scoreboard", "chatbox", "health_label", "hit_sound")] look_sensitivity = 1.5 camera = NodePath("camera_3d") move_speed = 5.0 @@ -36,7 +36,9 @@ settings_panel = NodePath("settings") scoreboard = NodePath("scoreboard") chatbox = NodePath("chat_box") health_label = NodePath("health_label") +hit_sound = NodePath("hit_sound") health = 100 +punch_cooldown = 1.0 collision_mask = 4 [node name="camera_3d" type="Camera3D" parent="." unique_id=1773137418] diff --git a/godot/scenes/player/remote_player.tscn b/godot/scenes/player/remote_player.tscn index 08ae900..81842a8 100644 --- a/godot/scenes/player/remote_player.tscn +++ b/godot/scenes/player/remote_player.tscn @@ -38,6 +38,7 @@ soldier_mesh = NodePath("soldier_m") collider = NodePath("collision_shape_3d") effects = NodePath("effects") health = 100 +punch_cooldown = 1.0 spectator_camera = NodePath("spectate_root/spectate_camera") camera_origin = NodePath("camera_origin") name_label = NodePath("name_label") diff --git a/rust/src/game_manager.rs b/rust/src/game_manager.rs index 0ba5658..9d4d9ea 100644 --- a/rust/src/game_manager.rs +++ b/rust/src/game_manager.rs @@ -431,9 +431,6 @@ impl Game { } pub fn change_map_selection(&mut self, map_idx: u8, emit: bool) { - if self.selected_map_idx == map_idx { - return; - } self.selected_map_idx = map_idx; if let Some(map) = self.maps.get(map_idx as usize) { self.selected_map = Some(map); diff --git a/rust/src/player/local_player.rs b/rust/src/player/local_player.rs index 2c0699c..a4749a1 100644 --- a/rust/src/player/local_player.rs +++ b/rust/src/player/local_player.rs @@ -168,6 +168,10 @@ impl IPlayer for LocalPlayer { fn try_punch(&mut self, to: Vector3, deal_damage: bool) -> bool { if self.punch_cd_remaining <= 0. { + if let Some(weapon) = &mut self.weapon { + weapon.set_position(Vector3::FORWARD); + weapon.set_rotation(Vector3::UP); + } self.punch_cd_remaining = self.punch_cooldown; self.try_punch_common(to, deal_damage) } else { @@ -328,6 +332,7 @@ impl ICharacterBody3D for LocalPlayer { fn process(&mut self, delta: f64) { self.time_passed += delta; + self.punch_cd_remaining -= delta; if self.is_dead { self.dead_for += delta; @@ -426,10 +431,11 @@ impl ICharacterBody3D for LocalPlayer { let prev_weapon_pos = weapon.get_position(); let new_y = prev_weapon_pos.y.lerp(target_y as f32, 0.2); let new_x = prev_weapon_pos.x.lerp(target_x as f32, 0.2); + let new_z = prev_weapon_pos.z.lerp(0., 0.2); let new_weapon_pos = Vector3 { y: new_y, x: new_x, - ..prev_weapon_pos + z: new_z, }; weapon.set_position(new_weapon_pos); } diff --git a/rust/src/player/mod.rs b/rust/src/player/mod.rs index 30cb350..81f9509 100644 --- a/rust/src/player/mod.rs +++ b/rust/src/player/mod.rs @@ -235,7 +235,7 @@ impl PlayerCommon for T { self.run_deferred(move |s| { shootable.dyn_bind_mut().on_shoot( DamageSource::Player(s.get_player_id().unwrap_or(0)), - 500, + 100, delta.normalized(), ); }); diff --git a/rust/src/player/remote_player.rs b/rust/src/player/remote_player.rs index 5f8601a..4931a4c 100644 --- a/rust/src/player/remote_player.rs +++ b/rust/src/player/remote_player.rs @@ -242,6 +242,8 @@ impl ICharacterBody3D for RemotePlayer { } fn process(&mut self, delta: f64) { + self.punch_cd_remaining -= delta; + if self.is_dead { self.dead_for += delta; }