extends Area2D # --- 🛠️ PRELOAD CETAKAN TUTORIAL UTAMA --- const TUTORIAL_SCENE = preload("res://tutorial.tscn") @export var waktu_kabur: float = 30.0 # Waktu bagi player untuk lari (30 detik) @onready var sprite_bom: Sprite2D = $nobel808 var player_didalam_area: Node2D = null var bom_sudah_dispang: bool = false # Mempertahankan penulisan variabel bawaanmu var bom_sudah_dipasang: bool = false var timer_aktif: bool = false var sisa_waktu: float = 0.0 # 🛠️ BARU: Pengaman agar tutorial pasang bom hanya muncul sekali saja var tutorial_bom_sudah_muncul: bool = false func _ready() -> void: # Memastikan bom tidak terlihat saat scene dimulai if sprite_bom: sprite_bom.visible = false func _on_body_entered(body: Node2D) -> void: if body.is_in_group("pemain") and not bom_sudah_dipasang: player_didalam_area = body print("💣 Titik pemasangan peledak ditemukan! Tekan interaksi untuk memasang Nobel's 808...") # 🛠️ BARU: Picu tutorial pasang bom saat player mendeteksi titik ini pertama kali if not tutorial_bom_sudah_muncul: pemicu_tutorial_titik_bom() func _on_body_exited(body: Node2D) -> void: if body == player_didalam_area: player_didalam_area = null func _input(event: InputEvent) -> void: if not event.is_action_pressed("interact"): return if player_didalam_area == null or bom_sudah_dipasang: return # Jalankan fungsi pasang bom pasang_bom() func pasang_bom() -> void: bom_sudah_dipasang = true bom_sudah_dispang = true # Sinkronisasi failsafe variabel bawaan # 1. Munculkan sprite bom seolah-olah tertempel di mesin if sprite_bom: sprite_bom.visible = true # 2. KUNCI UTAMA: Potong paksa timer global menjadi tinggal 15 detik! Globaltimer.sisa_waktu = 15.0 Globaltimer.mulai_timer() # Memastikan timer global tetap berjalan print("💥 Nobel's 808 terpasang! Detonator 'Time Pencil' diaktifkan!") print("🚨 OVERRIDE: Waktu meledak dipercepat menjadi 15 DETIK! RUN, WAYAN, RUN!!") # --- 🛠️ FUNGSI BARU: MEMUNCULKAN TUTORIAL DESAIN B0M --- func pemicu_tutorial_titik_bom() -> void: tutorial_bom_sudah_muncul = true # Kunci saklar agar tidak berulang print("💡 Player menemukan posisi peledak, memunculkan instruksi Nobel's 808...") var tutorial_instance = TUTORIAL_SCENE.instantiate() # Sesuai pesanan teks darimu, Wayan! tutorial_instance.teks_panduan = "Ini titik yang sempurna! Tekan tombol 'Interact' untuk memasang bom dan segeralah kabur!" # Lempar ke scene root agar membekukan gameplay get_tree().current_scene.add_child(tutorial_instance) func _process(delta: float) -> void: # Logika hitung mundur global setelah bom terpasang if timer_aktif: sisa_waktu -= delta print("⏰ BOM AKAN MELEDAK DALAM: ", snp(sisa_waktu, 1), " DETIK!") # Jika waktu habis dan player belum sampai pintu keluar... GAME OVER! if sisa_waktu <= 0.0: timer_aktif = false eksekusi_ledakan_bunker() func snp(nilai: float, tempat: int) -> float: return round(nilai * pow(10, tempat)) / pow(10, tempat) func eksekusi_ledakan_bunker() -> void: print("💥💥💥 BOOM!!! Seluruh bunker meledak rata dengan tanah! 💥💥💥") # Di sini kamu bisa panggil fungsi Player mati atau memicu layar Game Over (Kalah) if player_didalam_area: if player_didalam_area.has_method("terima_damage"): player_didalam_area.terima_damage(999) # Instakill jika masih di dalam map