From 368c68d4cff5aafc7af1862a91cc12ecd3d07221 Mon Sep 17 00:00:00 2001 From: Sofia Date: Wed, 22 Jul 2026 23:53:27 +0300 Subject: [PATCH] Move ball when it's being shot --- rust/src/weapon.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/rust/src/weapon.rs b/rust/src/weapon.rs index 82f450b..b9669de 100644 --- a/rust/src/weapon.rs +++ b/rust/src/weapon.rs @@ -2,8 +2,9 @@ use godot::{classes::AudioStreamPlayer3D, prelude::*}; use serde::{Deserialize, Serialize}; use crate::{ + ball::Ball, game_manager::{Game, GameOption}, - net::util::cast_ray, + net::{network_manager::NetworkManager, util::cast_ray}, player::{DamageSource, IPlayer}, }; @@ -68,7 +69,7 @@ impl Weapon for Raygun { } if deal_damage && let Some(target) = target { - if let Ok(mut player) = target.collider.try_dynify::() { + if let Ok(mut player) = target.collider.clone().try_dynify::() { self.run_deferred(move |_| { if let Some(game) = Game::singleton() && game.bind().opts.is_true(GameOption::FriendlyFire) @@ -80,6 +81,11 @@ impl Weapon for Raygun { ); } }); + } else if let Ok(mut ball) = target.collider.try_cast::() { + let prev_velocity = ball.bind().base().get_linear_velocity(); + ball.bind_mut() + .base_mut() + .set_linear_velocity(prev_velocity + dir * 10.); } } }