The_Dark_Side_of_Earth/player/sword.gd

38 lines
1,000 B
GDScript3
Raw Normal View History

2025-09-16 14:59:40 +02:00
extends Area2D
var anim_sprite: AnimatedSprite2D
2025-09-16 15:19:57 +02:00
var slash_duration = 0.1
2025-09-16 14:59:40 +02:00
var slash_timer = 0
var damage = 20
var facing = -1
2025-09-17 18:23:42 +02:00
var facing_mult = 1
var dmg_id
2025-09-16 14:59:40 +02:00
func _ready() -> void:
anim_sprite = $AnimatedSprite2D
2025-09-17 18:23:42 +02:00
get_parent().attack.connect(swing)
2025-09-16 14:59:40 +02:00
func swing(dir_str) -> void:
dmg_id = Global.next_dmg_id
2025-09-17 18:23:42 +02:00
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
2025-09-16 14:59:40 +02:00
anim_sprite.visible = true
await get_tree().physics_frame
await get_tree().physics_frame
2025-09-16 14:59:40 +02:00
slash_timer = slash_duration
2025-09-23 12:36:15 +02:00
func _process(delta: float) -> void:
2025-09-16 14:59:40 +02:00
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)