Files
DungeonsOfKharadum/src/scripts/stairs.gd
2026-01-11 03:34:14 +01:00

49 lines
1.6 KiB
GDScript

extends Area2D
# Stairs that trigger level completion when player enters
@onready var sfx_stairs = null
func _ready():
# Connect body entered signal
body_entered.connect(_on_body_entered)
# Set collision layer/mask to detect players
collision_layer = 0
collision_mask = 1 # Detect players (layer 1)
# Load stairs sound effect
if not sfx_stairs:
# Try to create AudioStreamPlayer2D if it doesn't exist
sfx_stairs = AudioStreamPlayer2D.new()
sfx_stairs.name = "SfxStairs"
add_child(sfx_stairs)
# Load go_down_stairs.mp3 sound
var stairs_sound = load("res://assets/audio/sfx/walk/go_down_stairs.mp3")
if stairs_sound:
sfx_stairs.stream = stairs_sound
else:
print("Stairs: Warning - Could not load go_down_stairs.mp3")
func _on_body_entered(body: Node2D):
print("Stairs: Body entered: ", body, " is_player: ", body.is_in_group("player") if body else false, " is_dead: ", body.is_dead if body and "is_dead" in body else false)
if body and body.is_in_group("player") and not body.is_dead:
print("Stairs: Player entered stairs! Player: ", body.name)
# Play stairs sound effect
if sfx_stairs and sfx_stairs.stream:
sfx_stairs.play()
# Only trigger on server/authority
if multiplayer.is_server() or not multiplayer.has_multiplayer_peer():
print("Stairs: Server detected, calling game_world")
var game_world = get_tree().get_first_node_in_group("game_world")
if game_world:
print("Stairs: Game world found, calling _on_player_reached_stairs")
game_world._on_player_reached_stairs(body)
else:
print("Stairs: ERROR - Game world not found!")
else:
print("Stairs: Not server, ignoring")