The_Dark_Side_of_Earth/traps/bear_trap.gd
2025-10-14 16:09:40 +02:00

30 lines
823 B
GDScript

extends Trap
@export var player_damage : int;
@export var enemy_damage : int;
var closed = false
func damage_target(target: CollisionObject2D):
# Checks whether the player or an enemy has been hit
if(target.get_collision_layer_value(3)):
target.hurt(player_damage, Vector2.ZERO)
else:
target.hurt(enemy_damage, Vector2.ZERO)
# Bear Traps are static, hence it is sufficient to check for others entering the trap
func _on_area_2d_area_entered(area: Area2D) -> void:
close_on(area)
func _on_area_2d_body_entered(body: Node2D) -> void:
close_on(body)
# Play the animation and assign the damage
func close_on(target):
if not closed:
damage_target(target)
closed = true
$AnimatedSprite2D.play("close")
await $AnimatedSprite2D.animation_finished
await get_tree().create_timer(0.1).timeout
queue_free()