diff --git a/server/src/events/entity_creation.rs b/server/src/events/entity_creation.rs index 49a4a8e872..6ecd41dd29 100644 --- a/server/src/events/entity_creation.rs +++ b/server/src/events/entity_creation.rs @@ -159,6 +159,6 @@ pub fn handle_create_waypoint(server: &mut Server, pos: Vec3) { animated: true, }) .with(WaypointArea::default()) - .with(comp::Mass(100000.0)) + .with(comp::Mass(10_f32.powi(10))) .build(); } diff --git a/server/src/events/entity_manipulation.rs b/server/src/events/entity_manipulation.rs index bc4ed8c6ba..8ca9d2cfee 100644 --- a/server/src/events/entity_manipulation.rs +++ b/server/src/events/entity_manipulation.rs @@ -40,12 +40,15 @@ pub fn handle_knockback(server: &Server, entity: EcsEntity, impulse: Vec3) if let Some(physics) = ecs.read_storage::().get(entity) { //Check if the entity is on a surface. If it is not, reduce knockback. - let impulse = impulse + let mut impulse = impulse * if physics.on_surface().is_some() { 1.0 } else { 0.4 }; + if let Some(mass) = ecs.read_storage::().get(entity) { + impulse /= mass.0; + } let mut velocities = ecs.write_storage::(); if let Some(vel) = velocities.get_mut(entity) { vel.0 = impulse;