Many changes

Handle it
This commit is contained in:
Dan Baker 2025-05-04 09:30:14 +01:00
parent bf09402bc5
commit 214e0aa5e0
366 changed files with 24353 additions and 2096 deletions

View file

@ -0,0 +1,63 @@
class_name Ability extends Node2D
@export var cooldown: float = 5.0
@export var effect_duration: float = 3.0
var modifiers: Array = []
var can_activate: bool = true
var cooldown_timer: Timer
var effect_timer: Timer
var is_active: bool = false
func _ready():
cooldown_timer = Timer.new()
add_child(cooldown_timer)
cooldown_timer.one_shot = true
cooldown_timer.connect("timeout", _on_cooldown_timeout)
effect_timer = Timer.new()
add_child(effect_timer)
effect_timer.one_shot = true
effect_timer.connect("timeout", _on_effect_timeout)
func activate():
if !can_activate:
return
# Apply ability effects
_start_ability()
# Apply modifiers to the ability
for modifier in modifiers:
modifier.modify_ability(self)
is_active = true
can_activate = false
effect_timer.start(effect_duration)
func add_modifier(modifier: Modifier):
modifiers.append(modifier)
modifier.on_equip(self)
func remove_modifier(modifier_id: String):
for i in range(modifiers.size()):
if modifiers[i].id == modifier_id:
modifiers[i].on_unequip(self)
modifiers.remove_at(i)
break
# Override in child classes
func _start_ability():
pass
# Override in child classes
func _end_ability():
pass
func _on_effect_timeout():
is_active = false
_end_ability()
cooldown_timer.start(cooldown)
func _on_cooldown_timeout():
can_activate = true