Fix damage/health client/server desynchnorization

This commit is contained in:
Squinty 2024-04-12 16:14:45 +00:00
parent 8221b323aa
commit 49ffa397e7

View file

@ -11,20 +11,28 @@ signal health_zeroed
signal health_changed(value : int)
func _ready():
health = max_health
heal_full()
area_entered.connect(_on_area_entered)
func damage(amount : int):
@rpc("call_local")
func _damage(amount : int) -> void:
health = clampf(health - amount, 0.0, max_health)
if health == 0.0:
health_zeroed.emit()
func heal_full():
health = max_health
func heal(amount : int):
@rpc("call_local")
func _heal(amount : int):
health = clampf(health + amount, 0.0, max_health)
func heal_full():
if not is_multiplayer_authority():
return
_heal.rpc(max_health)
func _on_area_entered(area : Area3D):
if not is_multiplayer_authority():
return
if area is AreaDamageComponent:
damage(area.damage)
_damage.rpc(area.damage)