damage slow down

This commit is contained in:
Rendo 2025-12-11 22:07:53 +05:00
commit 96f92757b5
9 changed files with 47 additions and 18 deletions

View file

@ -1,8 +1,4 @@
extends Label
func _ready() -> void:
Lobby.update_ip.connect(on_update_ip)
func on_update_ip(to: StringName):
text = to

View file

@ -9,8 +9,6 @@ signal lobby_joined
signal lobby_closed
signal update_teams_state
signal update_ip(StringName)
var in_lobby: bool = false
var attack_team: Array[int] = []

View file

@ -1,5 +1,6 @@
extends Button
signal update_ip(StringName)
func _pressed() -> void:
var upnp = UPNP.new()
@ -7,18 +8,18 @@ func _pressed() -> void:
var discover_error = upnp.discover()
if discover_error != UPNP.UPNPResult.UPNP_RESULT_SUCCESS:
Lobby.update_ip.emit("Discover error: " + str(discover_error as UPNP.UPNPResult))
update_ip.emit("Discover error: " + str(discover_error as UPNP.UPNPResult))
return
var error_udp = upnp.add_port_mapping(Lobby.PORT)
if error_udp != UPNP.UPNPResult.UPNP_RESULT_SUCCESS:
Lobby.update_ip.emit("UDP forward error: " + str(error_udp as UPNP.UPNPResult))
update_ip.emit("UDP forward error: " + str(error_udp as UPNP.UPNPResult))
return
var error_tcp = upnp.add_port_mapping(Lobby.PORT,0,"","TCP")
if error_tcp != UPNP.UPNPResult.UPNP_RESULT_SUCCESS:
Lobby.update_ip.emit("TCP forward error: " + str(error_tcp as UPNP.UPNPResult))
update_ip.emit("TCP forward error: " + str(error_tcp as UPNP.UPNPResult))
return
Lobby.update_ip.emit(upnp.query_external_address())

View file

@ -333,16 +333,21 @@ func shoot(id:int , limb_damage: int, torso_damage: int,head_damage: int, distan
var hit_player: Player = collision["collider"]
var shape_object: CollisionShape3D = hit_player.shape_owner_get_owner(collision["shape"])
var reduction: float = 0
var damage: int = 0
match shape_object.get_groups()[0]:
"Head":
damage = head_damage
"Limb":
damage = limb_damage
_:
damage = torso_damage
if damage_reduction_curve != null:
var distance_to_hit = (player_camera.global_position - collision["position"]).length()/distance
reduction = damage_reduction_curve.sample(distance_to_hit)
match shape_object.get_groups()[0]:
"Head":
hit_player.take_damage(head_damage*reduction)
"Limb":
hit_player.take_damage(limb_damage*reduction)
_:
hit_player.take_damage(torso_damage*reduction)
hit_player.take_damage(int(float(damage) * reduction))