Tune and optimize boss encounter

This commit is contained in:
Loïc Wisniewski 2026-09-03 11:49:51 +02:00
commit 68985316e5
16 changed files with 316 additions and 88 deletions

View file

@ -2,6 +2,7 @@ class_name BossEye
extends Area2D
signal destroyed
signal health_changed(current: int, maximum: int)
const COMBAT_TARGET = preload("res://core/CombatTarget.gd")
@ -10,6 +11,9 @@ const COMBAT_TARGET = preload("res://core/CombatTarget.gd")
var hp: int = 3
var opened: bool = false
var phase: float = 0.0
var redraw_left: float = 0.0
const REDRAW_INTERVAL: float = 1.0 / 12.0
func _ready() -> void:
@ -32,6 +36,7 @@ func take_damage(amount: int) -> bool:
if not opened or hp <= 0:
return false
hp -= maxi(amount, 1)
health_changed.emit(maxi(hp, 0), max_hp)
if hp > 0:
queue_redraw()
return false
@ -45,7 +50,9 @@ func take_damage(amount: int) -> bool:
func _process(delta: float) -> void:
phase += delta
if opened:
redraw_left -= delta
if opened and redraw_left <= 0.0:
redraw_left = REDRAW_INTERVAL
queue_redraw()