MIF_E31230535/heal_up.gd

35 lines
1.1 KiB
GDScript

extends Area2D
# 📣 Sinyal baru untuk memberi tahu Stage kalau item ini baru saja diambil
signal diambil
@export var jumlah_heal: int = 50
@onready var anim_player: AnimationPlayer = $AnimationPlayer
@onready var collision: CollisionShape2D = $CollisionShape2D
func _ready() -> void:
if anim_player and anim_player.has_animation("gerak"):
anim_player.play("gerak")
func _on_body_entered(body: Node2D) -> void:
if body is Player:
if body.has_method("tambah_hp"):
body.tambah_hp(jumlah_heal)
print("✨ Item Heal Up diambil oleh Player!")
# PENTING: Picu sinyal diambil agar Stage tahu harus mulai menghitung 20 detik
emit_signal("diambil")
# Sembunyikan item dan matikan collision-nya (Failsafe agar tidak bisa diambil dua kali)
set_responsif(false)
# Fungsi pembantu untuk memunculkan / menyembunyikan item dengan aman
func set_responsif(status: bool) -> void:
visible = status
if collision:
collision.set_deferred("disabled", !status)
# Jalankan kembali animasi jika item dimunculkan lagi
if status and anim_player and anim_player.has_animation("gerak"):
anim_player.play("gerak")