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/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="update_ip" from="Lobby/HBoxContainer/HostMenu/ForwardPortButton" to="Lobby/HBoxContainer/HostMenu/PublicIP" method="on_update_ip"]
|
||||
|
|
|
|||
|
|
@ -1,8 +1,4 @@
|
|||
extends Label
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
Lobby.update_ip.connect(on_update_ip)
|
||||
|
||||
func on_update_ip(to: StringName):
|
||||
text = to
|
||||
|
|
|
|||
|
|
@ -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] = []
|
||||
|
|
|
|||
|
|
@ -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())
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -8748,6 +8748,7 @@ script = ExtResource("28_xqgvn")
|
|||
player = NodePath("..")
|
||||
player_input = NodePath("../PlayerInput")
|
||||
jump_velocity = 12.0
|
||||
max_speed_debuff = 75.0
|
||||
|
||||
[node name="WeaponSystem" type="Node" parent="." node_paths=PackedStringArray("animation_player", "camera", "player", "player_input")]
|
||||
unique_name_in_owner = true
|
||||
|
|
@ -8802,6 +8803,7 @@ script = ExtResource("37_3lpnn")
|
|||
replication_config = SubResource("SceneReplicationConfig_5amik")
|
||||
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="Camera3D" method="disable"]
|
||||
[connection signal="died" from="." to="Camera3D/molikman_hands/PlayerBasedVisibility" method="reverse_if_own"]
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ class_name Player
|
|||
var passived: bool = false
|
||||
|
||||
signal health_changed(to: int)
|
||||
signal damaged
|
||||
signal died
|
||||
|
||||
const MAX_HP = 100
|
||||
|
|
@ -58,3 +59,4 @@ func depassive() -> void:
|
|||
|
||||
func take_damage(damage: int):
|
||||
hp -= damage
|
||||
damaged.emit()
|
||||
|
|
|
|||
|
|
@ -2,12 +2,19 @@ extends Node
|
|||
|
||||
class_name PlayerMovement
|
||||
|
||||
const XZ_PLANE = Vector3.RIGHT + Vector3.BACK
|
||||
|
||||
@export var player: Player
|
||||
@export var player_input: PlayerInput
|
||||
|
||||
@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 speed_debuff: float
|
||||
var debuff_tween: Tween
|
||||
|
||||
func disable() -> void:
|
||||
disabled = true
|
||||
|
||||
|
|
@ -21,11 +28,26 @@ func process_movement(max_speed: float,acceleration: float,deceleration: float,d
|
|||
var input_dir := player_input.direction
|
||||
var direction := (player.transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()
|
||||
if direction:
|
||||
player.velocity.x = clamp(player.velocity.x + direction.x * acceleration * delta,-max_speed*abs(direction.x),max_speed*abs(direction.x))
|
||||
player.velocity.z = clamp(player.velocity.z + direction.z * acceleration * delta,-max_speed*abs(direction.z),max_speed*abs(direction.z))
|
||||
var computed_mult : float = (1.-speed_debuff/100.)
|
||||
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:
|
||||
player.velocity.x = move_toward(player.velocity.x, 0, deceleration*delta)
|
||||
player.velocity.z = move_toward(player.velocity.z, 0, deceleration*delta)
|
||||
|
||||
func jump() -> void:
|
||||
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)
|
||||
|
||||
func notify_slots_updated():
|
||||
if not is_multiplayer_authority():
|
||||
return
|
||||
var display_slots: Dictionary[StringName,StringName] = {}
|
||||
for key in slots.keys():
|
||||
if slots[key] == null:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue