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

View file

@ -0,0 +1 @@
uid://hhd27rd8ii8j

View file

@ -0,0 +1,23 @@
class_name IceFieldAbility extends Ability
@export var field_radius: float = 150.0
@export var damage_per_second: float = 5.0
@export var slow_amount: float = 0.5
var field_instance: Node2D
func _init():
cooldown = 10.0
effect_duration = 6.0
func _start_ability():
field_instance = preload("scenes/ice_field.tscn").instantiate()
field_instance.global_position = global_position
field_instance.radius = field_radius
field_instance.damage = damage_per_second
field_instance.slow = slow_amount
get_tree().root.add_child(field_instance)
func _end_ability():
if is_instance_valid(field_instance):
field_instance.queue_free()

View file

@ -0,0 +1 @@
uid://cs28213tcth26

View file

@ -0,0 +1,8 @@
[gd_scene load_steps=2 format=3 uid="uid://btymtl71y0hx7"]
[sub_resource type="ImageTexture" id="ImageTexture_6kos1"]
[node name="IceField" type="Node2D"]
[node name="Sprite2D" type="Sprite2D" parent="."]
texture = SubResource("ImageTexture_6kos1")