Chelimbalo/scripts/player/player.gd
2025-11-29 23:46:16 +05:00

57 lines
1.1 KiB
GDScript

extends CharacterBody3D
class_name Player
@export var team: Session.TEAMS
@export var weapon_models: Dictionary[StringName,Node3D]
signal spawned
signal health_changed(to: int)
signal died
const MAX_HP = 100
@export var hp: int = 100:
set(value):
if value < 0:
hp = 0
else:
hp = value
health_changed.emit(hp)
if hp == 0:
die()
get:
return hp
func _enter_tree() -> void:
set_multiplayer_authority(str(name).to_int())
func _physics_process(_delta: float) -> void:
if not is_multiplayer_authority():
return
move_and_slide()
func die() -> void:
if (not is_multiplayer_authority()):
return
Session.add_dead.rpc(team)
died.emit()
@rpc("any_peer","call_local","reliable")
func kill_request() -> void:
if multiplayer.get_remote_sender_id() != 1:
return
die()
@rpc("any_peer","call_local","reliable")
func set_after_spawn(start_position: Vector3,new_team: int):
global_position = start_position
team = new_team as Session.TEAMS
spawned.emit()
@rpc("any_peer","call_local","reliable")
func take_damage(damage: int):
hp -= damage