Files
ScrapFrontier/game/health_system/health.gd
T
2025-11-08 14:31:52 +03:00

31 lines
778 B
GDScript

class_name Health
extends Node
signal depleted
@export_range(0, 5000) var max_shield: int = 0
@export_range(0, 5000) var max_armor: int = 0
@export_range(1, 5000) var max_hull: int = 1
@onready var _shield := max_shield
@onready var _armor := max_armor
@onready var _hull := max_hull
func apply_damage(damage: AbstractDamage) -> void:
if _shield > 0:
var damage_value := ceili(damage.value * damage.shield_damage_multiplier())
_shield = max(_shield - damage_value, 0)
elif _armor > 0:
var damage_value := ceili(damage.value * damage.armor_damage_multiplier())
_armor = max(_armor - damage_value, 0)
else:
var damage_value := ceili(damage.value * damage.hull_damage_multiplier())
_hull = max(_hull - damage_value, 0)
if _hull == 0:
depleted.emit()