101 lines
3.0 KiB
GDScript
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_囚室偷听后") |