class_name EnemyEffectBleed extends EnemyEffectBase var damage: float var duration: float var tick_rate: float = 1.0 var _timer: Timer var _remaining_ticks: int = 5 var _enemy: EnemyBase const PUDDLE = preload("res://scenes/puddle.tscn") func _init(enemy: EnemyBase, bleed_damage: float, duration: float): damage = bleed_damage _timer = Timer.new() func apply(enemy: EnemyBase) -> void: enemy.effects.append(self) while _remaining_ticks > 0: enemy.take_damage(damage, false) _remaining_ticks -= 1 await enemy.get_tree().create_timer(1.0, false, true, false).timeout var p = PUDDLE.instantiate() enemy.get_parent().add_child(p) p.global_position = enemy.global_position enemy.effects.erase(self) static func _is_bleeding(enemy: EnemyBase) -> bool: return false