Many changes
Handle it
This commit is contained in:
parent
bf09402bc5
commit
214e0aa5e0
366 changed files with 24353 additions and 2096 deletions
63
player/abilities/ability.gd
Normal file
63
player/abilities/ability.gd
Normal 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
|
||||
1
player/abilities/ability.gd.uid
Normal file
1
player/abilities/ability.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://hhd27rd8ii8j
|
||||
23
player/abilities/ice_field.gd
Normal file
23
player/abilities/ice_field.gd
Normal 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()
|
||||
1
player/abilities/ice_field.gd.uid
Normal file
1
player/abilities/ice_field.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://cs28213tcth26
|
||||
8
player/abilities/scenes/ice_field.tscn
Normal file
8
player/abilities/scenes/ice_field.tscn
Normal 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")
|
||||
Loading…
Add table
Add a link
Reference in a new issue