extends Area2D var anim_sprite: AnimatedSprite2D var slash_duration = 0.1 var slash_timer = 0 var damage = 20 var facing = -1 var facing_mult = 1 var dmg_id func _ready() -> void: anim_sprite = $AnimatedSprite2D get_parent().attack.connect(swing) func swing(dir_str) -> void: dmg_id = Global.next_dmg_id facing = - get_parent().facing * facing_mult if dir_str == "up": scale.x = abs(scale.x) scale.y = abs(scale.y) * facing rotation = PI/2 else: scale.x = abs(scale.x) * facing scale.y = abs(scale.y) rotation = 0 anim_sprite.visible = true await get_tree().physics_frame await get_tree().physics_frame slash_timer = slash_duration func _process(delta: float) -> void: if slash_timer > 0: slash_timer = max(0, slash_timer-delta) if(slash_timer == 0): anim_sprite.visible = false for area in get_overlapping_areas(): var hurt_dir = -get_parent().earth_aligner.global_from_local(Vector2(-facing, 0)).rotated(facing*rotation) area.hurt(damage, hurt_dir, dmg_id)