damage slow down
This commit is contained in:
parent
1d5065cbbf
commit
96f92757b5
9 changed files with 47 additions and 18 deletions
|
|
@ -217,3 +217,4 @@ script = ExtResource("3_qy2xc")
|
||||||
[connection signal="value_changed" from="Lobby/HBoxContainer/HostMenu/BuyTime/BuyTimeBox" to="Lobby/HBoxContainer/HostMenu" method="_on_buy_time_box_value_changed"]
|
[connection signal="value_changed" from="Lobby/HBoxContainer/HostMenu/BuyTime/BuyTimeBox" to="Lobby/HBoxContainer/HostMenu" method="_on_buy_time_box_value_changed"]
|
||||||
[connection signal="value_changed" from="Lobby/HBoxContainer/HostMenu/RoundAmount/RoundBox" to="Lobby/HBoxContainer/HostMenu" method="_on_round_box_value_changed"]
|
[connection signal="value_changed" from="Lobby/HBoxContainer/HostMenu/RoundAmount/RoundBox" to="Lobby/HBoxContainer/HostMenu" method="_on_round_box_value_changed"]
|
||||||
[connection signal="value_changed" from="Lobby/HBoxContainer/HostMenu/TeamSwitchAmount/TeamSwitchBox" to="Lobby/HBoxContainer/HostMenu" method="_on_team_switch_box_value_changed"]
|
[connection signal="value_changed" from="Lobby/HBoxContainer/HostMenu/TeamSwitchAmount/TeamSwitchBox" to="Lobby/HBoxContainer/HostMenu" method="_on_team_switch_box_value_changed"]
|
||||||
|
[connection signal="update_ip" from="Lobby/HBoxContainer/HostMenu/ForwardPortButton" to="Lobby/HBoxContainer/HostMenu/PublicIP" method="on_update_ip"]
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,4 @@
|
||||||
extends Label
|
extends Label
|
||||||
|
|
||||||
|
|
||||||
func _ready() -> void:
|
|
||||||
Lobby.update_ip.connect(on_update_ip)
|
|
||||||
|
|
||||||
func on_update_ip(to: StringName):
|
func on_update_ip(to: StringName):
|
||||||
text = to
|
text = to
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,6 @@ signal lobby_joined
|
||||||
signal lobby_closed
|
signal lobby_closed
|
||||||
signal update_teams_state
|
signal update_teams_state
|
||||||
|
|
||||||
signal update_ip(StringName)
|
|
||||||
|
|
||||||
var in_lobby: bool = false
|
var in_lobby: bool = false
|
||||||
|
|
||||||
var attack_team: Array[int] = []
|
var attack_team: Array[int] = []
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
extends Button
|
extends Button
|
||||||
|
|
||||||
|
signal update_ip(StringName)
|
||||||
|
|
||||||
func _pressed() -> void:
|
func _pressed() -> void:
|
||||||
var upnp = UPNP.new()
|
var upnp = UPNP.new()
|
||||||
|
|
@ -7,18 +8,18 @@ func _pressed() -> void:
|
||||||
var discover_error = upnp.discover()
|
var discover_error = upnp.discover()
|
||||||
|
|
||||||
if discover_error != UPNP.UPNPResult.UPNP_RESULT_SUCCESS:
|
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
|
return
|
||||||
|
|
||||||
var error_udp = upnp.add_port_mapping(Lobby.PORT)
|
var error_udp = upnp.add_port_mapping(Lobby.PORT)
|
||||||
if error_udp != UPNP.UPNPResult.UPNP_RESULT_SUCCESS:
|
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
|
return
|
||||||
|
|
||||||
var error_tcp = upnp.add_port_mapping(Lobby.PORT,0,"","TCP")
|
var error_tcp = upnp.add_port_mapping(Lobby.PORT,0,"","TCP")
|
||||||
|
|
||||||
if error_tcp != UPNP.UPNPResult.UPNP_RESULT_SUCCESS:
|
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
|
return
|
||||||
|
|
||||||
Lobby.update_ip.emit(upnp.query_external_address())
|
Lobby.update_ip.emit(upnp.query_external_address())
|
||||||
|
|
|
||||||
|
|
@ -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 hit_player: Player = collision["collider"]
|
||||||
var shape_object: CollisionShape3D = hit_player.shape_owner_get_owner(collision["shape"])
|
var shape_object: CollisionShape3D = hit_player.shape_owner_get_owner(collision["shape"])
|
||||||
var reduction: float = 0
|
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:
|
if damage_reduction_curve != null:
|
||||||
var distance_to_hit = (player_camera.global_position - collision["position"]).length()/distance
|
var distance_to_hit = (player_camera.global_position - collision["position"]).length()/distance
|
||||||
reduction = damage_reduction_curve.sample(distance_to_hit)
|
reduction = damage_reduction_curve.sample(distance_to_hit)
|
||||||
match shape_object.get_groups()[0]:
|
|
||||||
"Head":
|
hit_player.take_damage(int(float(damage) * reduction))
|
||||||
hit_player.take_damage(head_damage*reduction)
|
|
||||||
"Limb":
|
|
||||||
hit_player.take_damage(limb_damage*reduction)
|
|
||||||
_:
|
|
||||||
hit_player.take_damage(torso_damage*reduction)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8748,6 +8748,7 @@ script = ExtResource("28_xqgvn")
|
||||||
player = NodePath("..")
|
player = NodePath("..")
|
||||||
player_input = NodePath("../PlayerInput")
|
player_input = NodePath("../PlayerInput")
|
||||||
jump_velocity = 12.0
|
jump_velocity = 12.0
|
||||||
|
max_speed_debuff = 75.0
|
||||||
|
|
||||||
[node name="WeaponSystem" type="Node" parent="." node_paths=PackedStringArray("animation_player", "camera", "player", "player_input")]
|
[node name="WeaponSystem" type="Node" parent="." node_paths=PackedStringArray("animation_player", "camera", "player", "player_input")]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
|
@ -8802,6 +8803,7 @@ script = ExtResource("37_3lpnn")
|
||||||
replication_config = SubResource("SceneReplicationConfig_5amik")
|
replication_config = SubResource("SceneReplicationConfig_5amik")
|
||||||
script = ExtResource("38_2cl6u")
|
script = ExtResource("38_2cl6u")
|
||||||
|
|
||||||
|
[connection signal="damaged" from="." to="PlayerMovement" method="apply_speed_debuff"]
|
||||||
[connection signal="died" from="." to="molikman_ingame/PlayerBasedVisibility" method="reverse_if_own"]
|
[connection signal="died" from="." to="molikman_ingame/PlayerBasedVisibility" method="reverse_if_own"]
|
||||||
[connection signal="died" from="." to="Camera3D" method="disable"]
|
[connection signal="died" from="." to="Camera3D" method="disable"]
|
||||||
[connection signal="died" from="." to="Camera3D/molikman_hands/PlayerBasedVisibility" method="reverse_if_own"]
|
[connection signal="died" from="." to="Camera3D/molikman_hands/PlayerBasedVisibility" method="reverse_if_own"]
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ class_name Player
|
||||||
var passived: bool = false
|
var passived: bool = false
|
||||||
|
|
||||||
signal health_changed(to: int)
|
signal health_changed(to: int)
|
||||||
|
signal damaged
|
||||||
signal died
|
signal died
|
||||||
|
|
||||||
const MAX_HP = 100
|
const MAX_HP = 100
|
||||||
|
|
@ -58,3 +59,4 @@ func depassive() -> void:
|
||||||
|
|
||||||
func take_damage(damage: int):
|
func take_damage(damage: int):
|
||||||
hp -= damage
|
hp -= damage
|
||||||
|
damaged.emit()
|
||||||
|
|
|
||||||
|
|
@ -2,12 +2,19 @@ extends Node
|
||||||
|
|
||||||
class_name PlayerMovement
|
class_name PlayerMovement
|
||||||
|
|
||||||
|
const XZ_PLANE = Vector3.RIGHT + Vector3.BACK
|
||||||
|
|
||||||
@export var player: Player
|
@export var player: Player
|
||||||
@export var player_input: PlayerInput
|
@export var player_input: PlayerInput
|
||||||
|
|
||||||
@export var jump_velocity: float
|
@export var jump_velocity: float
|
||||||
|
@export_range(0,100,1,"suffix:%") var max_speed_debuff: float
|
||||||
|
@export var debuff_time: float = 0.5
|
||||||
var disabled: bool
|
var disabled: bool
|
||||||
|
|
||||||
|
var speed_debuff: float
|
||||||
|
var debuff_tween: Tween
|
||||||
|
|
||||||
func disable() -> void:
|
func disable() -> void:
|
||||||
disabled = true
|
disabled = true
|
||||||
|
|
||||||
|
|
@ -21,11 +28,26 @@ func process_movement(max_speed: float,acceleration: float,deceleration: float,d
|
||||||
var input_dir := player_input.direction
|
var input_dir := player_input.direction
|
||||||
var direction := (player.transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()
|
var direction := (player.transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()
|
||||||
if direction:
|
if direction:
|
||||||
player.velocity.x = clamp(player.velocity.x + direction.x * acceleration * delta,-max_speed*abs(direction.x),max_speed*abs(direction.x))
|
var computed_mult : float = (1.-speed_debuff/100.)
|
||||||
player.velocity.z = clamp(player.velocity.z + direction.z * acceleration * delta,-max_speed*abs(direction.z),max_speed*abs(direction.z))
|
player.velocity.x = clamp(player.velocity.x + direction.x * acceleration * delta * computed_mult,-max_speed*abs(direction.x),max_speed*abs(direction.x))
|
||||||
|
player.velocity.z = clamp(player.velocity.z + direction.z * acceleration * delta * computed_mult,-max_speed*abs(direction.z),max_speed*abs(direction.z))
|
||||||
else:
|
else:
|
||||||
player.velocity.x = move_toward(player.velocity.x, 0, deceleration*delta)
|
player.velocity.x = move_toward(player.velocity.x, 0, deceleration*delta)
|
||||||
player.velocity.z = move_toward(player.velocity.z, 0, deceleration*delta)
|
player.velocity.z = move_toward(player.velocity.z, 0, deceleration*delta)
|
||||||
|
|
||||||
func jump() -> void:
|
func jump() -> void:
|
||||||
player.velocity.y = jump_velocity
|
player.velocity.y = jump_velocity
|
||||||
|
|
||||||
|
func apply_speed_debuff():
|
||||||
|
if debuff_tween:
|
||||||
|
debuff_tween.kill()
|
||||||
|
speed_debuff = max_speed_debuff
|
||||||
|
|
||||||
|
var xz_velocity: Vector3 = player.velocity * XZ_PLANE
|
||||||
|
var new_velocity = xz_velocity * (1.-max_speed_debuff/100.)
|
||||||
|
|
||||||
|
player.velocity = Vector3(new_velocity.x,player.velocity.y,new_velocity.z)
|
||||||
|
|
||||||
|
|
||||||
|
debuff_tween = create_tween().set_ease(Tween.EASE_IN).set_trans(Tween.TRANS_SINE)
|
||||||
|
debuff_tween.tween_property(self,"speed_debuff",0,debuff_time)
|
||||||
|
|
|
||||||
|
|
@ -150,6 +150,8 @@ func remote_ammo_update(ammo: int, remaining_ammo: int):
|
||||||
ammo_updated.emit(ammo,remaining_ammo)
|
ammo_updated.emit(ammo,remaining_ammo)
|
||||||
|
|
||||||
func notify_slots_updated():
|
func notify_slots_updated():
|
||||||
|
if not is_multiplayer_authority():
|
||||||
|
return
|
||||||
var display_slots: Dictionary[StringName,StringName] = {}
|
var display_slots: Dictionary[StringName,StringName] = {}
|
||||||
for key in slots.keys():
|
for key in slots.keys():
|
||||||
if slots[key] == null:
|
if slots[key] == null:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue