30 lines
560 B
GDScript
30 lines
560 B
GDScript
class_name InvulnerabilityComponent
|
|
extends Node
|
|
|
|
@export var duration: float = 1.0
|
|
@export var flashing_component: FlashingComponent
|
|
|
|
var invulnerable: bool = false
|
|
|
|
|
|
func activate() -> void:
|
|
if invulnerable:
|
|
return
|
|
|
|
invulnerable = true
|
|
if flashing_component:
|
|
flashing_component.start_flashing()
|
|
|
|
var timer = get_tree().create_timer(duration)
|
|
timer.timeout.connect(deactivate)
|
|
|
|
|
|
func deactivate() -> void:
|
|
invulnerable = false
|
|
if flashing_component:
|
|
flashing_component.stop_flashing()
|
|
|
|
|
|
func is_invulnerable() -> bool:
|
|
return invulnerable
|
|
|