extends Node2D class_name Attack @onready var cpu_particles_2d: CPUParticles2D = $CPUParticles2D @onready var area_2d: Area2D = $Area2D @onready var collision_shape_2d: CollisionShape2D = $Area2D/CollisionShape2D var initiator: Entity func set_initiator(entity: Entity) -> void: position = entity.position initiator = entity func _ready() -> void: cpu_particles_2d.emitting = true cpu_particles_2d.color = initiator.color collision_shape_2d.shape.radius = initiator.attack_pow cpu_particles_2d.initial_velocity_min = float(initiator.attack_pow) * 4.0 cpu_particles_2d.initial_velocity_max = float(initiator.attack_pow) * 4.0 func _on_cpu_particles_2d_finished() -> void: var collisions := area_2d.get_overlapping_bodies() for object in collisions: if object is Entity and object != initiator: var color_diff = object.color - initiator.color if abs(color_diff.r) + abs(color_diff.g) + abs(color_diff.b) > 0.5: object.hit() queue_free()