extends Node @export var max_shield := 50.0 const REGEN_DELAY := 3.0 const REGEN_TIME := 5.0 var current_shield: float var regen_timer := 0.0 func _ready() -> void: current_shield = max_shield func _process(delta: float) -> void: if current_shield < max_shield: regen_timer += delta if regen_timer >= REGEN_DELAY: current_shield += (max_shield / REGEN_TIME) * delta if current_shield >= max_shield: current_shield = max_shield EventBus.shield_regenerated.emit(get_parent()) EventBus.shield_changed.emit(get_parent(), current_shield, max_shield) func absorb(amount: float) -> float: if current_shield <= 0: return amount regen_timer = 0.0 var absorbed: float = min(amount, current_shield) current_shield -= absorbed print("%s Schild: %s/%s (-%s)" % [get_parent().name, current_shield, max_shield, absorbed]) if current_shield <= 0: EventBus.shield_broken.emit(get_parent()) EventBus.shield_changed.emit(get_parent(), current_shield, max_shield) return amount - absorbed