The_Dark_Side_of_Earth/traps/bear_trap.gd

31 lines
823 B
GDScript3
Raw Normal View History

2025-09-18 18:10:44 +02:00
extends Trap
@export var player_damage : int;
@export var enemy_damage : int;
2025-09-19 14:54:13 +02:00
var closed = false
func damage_target(target: CollisionObject2D):
2025-10-14 16:09:40 +02:00
# 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)
2025-10-14 16:09:40 +02:00
# Bear Traps are static, hence it is sufficient to check for others entering the trap
func _on_area_2d_area_entered(area: Area2D) -> void:
2025-10-14 16:09:40 +02:00
close_on(area)
func _on_area_2d_body_entered(body: Node2D) -> void:
2025-10-14 16:09:40 +02:00
close_on(body)
# Play the animation and assign the damage
func close_on(target):
2025-09-19 14:54:13 +02:00
if not closed:
2025-10-14 16:09:40 +02:00
damage_target(target)
2025-09-19 14:54:13 +02:00
closed = true
$AnimatedSprite2D.play("close")
await $AnimatedSprite2D.animation_finished
await get_tree().create_timer(0.1).timeout
queue_free()