Trap explosions with damage and health bar depletion.

This commit is contained in:
2025-12-29 15:03:05 -05:00
parent e632e54cba
commit 84bf495d11
16 changed files with 149 additions and 30 deletions

View File

@@ -9,6 +9,8 @@ const disarm_trap_modal = preload("res://templates/disarm_trap_modal.tscn")
@onready var data : PlayerData = $Data
@onready var trap_sound : AudioStreamPlayer3D = $TrapSound
var id : int = 1
var button_actions : Dictionary[int, String]
var current_square : Vector3i
var detecting : bool = false
@@ -22,7 +24,7 @@ var modal = null
signal trap_cycled(trap_index)
signal trap_quantity_changed(trap_index, quantity)
signal trap_list_changed(traps)
signal health_changed(current : int, max : int)
func _physics_process(delta: float) -> void:
var dir = Input.get_vector("west", "east", "north", "south")
@@ -156,6 +158,9 @@ func show_disarm_trap_modal() -> void:
modal = disarm_trap_modal.instantiate()
modal.difficulty = Game.level.difficulty
modal.square = current_square
var trap = Game.level.traps[current_square]
trap.disarming = true
trap.disarm_id = Multiplayer.id
Game.level.add_child(modal)
func start_detecting() -> void:
@@ -216,6 +221,10 @@ func cycle_active_trap(dir) -> void:
if prev != data.active_trap:
trap_cycled.emit(data.active_trap)
func hurt(damage : int) -> void:
data.life = max(0, data.life - damage)
health_changed.emit(data.life, data.max_life)
func _on_trap_disarmed(type : Trap.Type) -> void:
for i in range(len(data.traps)):
var d = data.traps[i]