From 716bd0618308d6100556d1231b0b156f48c64778 Mon Sep 17 00:00:00 2001 From: Alexander Foremny Date: Wed, 20 Mar 2024 06:39:46 +0100 Subject: feat: scale spear damage --- src/server.rs | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'src/server.rs') diff --git a/src/server.rs b/src/server.rs index 1b31338..5ac07c0 100644 --- a/src/server.rs +++ b/src/server.rs @@ -474,12 +474,28 @@ fn projectile_despawn( if let Some(target_player) = maybe_target_player { if let Some(target_entity) = entity_map.0.get(&target_player.0) { if let Ok(mut health) = healths.get_mut(*target_entity) { - health.apply_damage(projectile.damage); + let damage = match projectile.type_ { + ProjectileType::Free(FreeProjectile { + position, + starting_position, + max_distance, + scale_damage: Some((min_multiplier, max_multiplier)), + .. + }) => { + let distance_traveled = + position.distance(starting_position) / max_distance; + let multiplier = + min_multiplier.lerp(max_multiplier, distance_traveled); + multiplier * projectile.damage + } + _ => projectile.damage, + }; + health.apply_damage(damage); let _ = connection_manager .send_message_to_target::( HealthChanged(HealthEvent { target_player, - health_gained: -projectile.damage, + health_gained: -damage, }), NetworkTarget::All, ); -- cgit v1.2.3