xiandie/scene/ground/scene/c03/s08_囚室.gd
2025-08-11 22:06:18 +08:00

101 lines
3.0 KiB
GDScript

@tool
extends AnimationRoot
# 覆盖该方法
func _default_data() -> Dictionary:
return {"has_entered": false}
func _ready() -> void:
super._ready()
if Engine.is_editor_hint():
return
#region node_reference
var ambush血脚印: Ambush2D
var pickable转轮: Pickable2D
var interactable囚室尸体: Interactable2D
var closeup符纸: Closeup2D
var interactable_body: Interactable2D
var body_sprite: AnimatedSprite2D
var closeup囚室门锁: Closeup2D
#endregion
# 读取设置变量名
func _setup_node_reference() -> void:
ambush血脚印 = $"../DeployLayer/Ambush血脚印"
pickable转轮 = $"../DeployLayer/Interactable囚室尸体/Pickable转轮"
interactable囚室尸体 = $"../DeployLayer/Interactable囚室尸体"
closeup符纸 = $"../DeployLayer/Closeup符纸"
interactable_body = $"../DeployLayer/Interactable囚室尸体"
body_sprite = $"../DeployLayer/Interactable囚室尸体/尸体动画"
closeup囚室门锁 = $"../DeployLayer/Closeup囚室门锁"
func _on_ground_ready() -> void:
interactable_body.interacted.connect(_on_body_interacted.bind(true))
interactable_body.interact_mismatch_failed.connect(_on_body_interacted.bind(false))
if interactable_body.icount > 0:
closeup符纸.show()
if interactable_body.interacted_times > 0:
pickable转轮.enabled = true
body_sprite.frame = 3
if ambush血脚印.played:
ambush血脚印.get_node("血脚印").frame = 8
_check_first_enter()
func _check_first_enter() -> void:
if not data["has_entered"]:
SceneManager.lock_player()
var player = SceneManager.get_player()
var portal_1_x = $"../DeployLayer/portal_1".global_position.x
player.global_position.x = portal_1_x
player.set_facing_direction(Vector2.LEFT)
# c02_吕萍_背靠呼吸
player.player_action(20, false)
await Util.wait(3.0)
# c02_吕萍_背靠起身
await player.player_action(19, true)
await SceneManager.pop_os_with_str("c03_s08_囚室醒过来")
set_data("has_entered", true)
SceneManager.unlock_player()
func _on_body_interacted(success: bool) -> void:
if interactable_body.icount == 1:
SceneManager.lock_player()
play("drop_wizardpaper")
await animation_finished
await Util.wait(1.0)
SceneManager.unlock_player()
if success:
# 留到第三章再用一次
# SceneManager.disable_prop_item("prop_菜刀")
pickable转轮.enabled = true
SceneManager.lock_player()
body_sprite.play()
await body_sprite.animation_finished
SceneManager.unlock_player()
# SceneManager.enable_prop_item("prop_转轮")
# await SceneManager.get_inspector().quit_and_hidden
func play_footstep() -> void:
SceneManager.lock_player()
var sfx = $"Sfx小蝉哼歌" as Sfx
sfx.play()
var sprite = ambush血脚印.get_node("血脚印")
sprite.play()
await sprite.animation_finished
await SceneManager.pop_os_with_str("c03_s08_囚室看到脚印")
SceneManager.unlock_player()
Util.timer(3.0, sfx.easing_kill.bind(3.0))
func eavesdrop() -> void:
await DialogueManager.dialogue_ended
SceneManager.pop_os_with_str("c03_s08_囚室偷听后")