xiandie/scene/ground/scene/c02/s05_一楼内侧楼道.gd

80 lines
2.4 KiB
GDScript

@tool
extends AnimationRoot
# 覆盖该方法
func _default_data() -> Dictionary:
return {}
func _ready() -> void:
super._ready()
if Engine.is_editor_hint():
return
func _on_ground_ready() -> void:
# 粘鼠游戏
if ArchiveManager.get_global_value(&"c02_meat_dropping"):
# 肉掉落,检查粘鼠板是否启用
if $"../DeployLayer/Interactable粘鼠板".interacted_times > 0:
if not $"../DeployLayer/Pickable掉落的肉".picked:
var sprite = $"../DeployLayer/Interactable粘鼠板/粘鼠挣扎"
sprite.visible = true
sprite.play()
else:
$"../DeployLayer/Interactable粘鼠板/粘鼠死亡".visible = true
$"../DeployLayer/Interactable粘鼠板/Note死老鼠".enabled = true
ArchiveManager.set_global_entry(&"c02_meat_given", true)
else:
$"../DeployLayer/Ambush老鼠叼肉".enabled = true
$"../DeployLayer/老鼠叼肉".visible = true
if ArchiveManager.get_global_value(&"c02_meat_given"):
$"../DeployLayer/Pickable掉落的肉".enabled = true
var xiaochan = $"../DeployLayer/Ambush小蝉消失" as Ambush2D
var madman = $"../DeployLayer/Npc疯子" as Npc2D
madman.interacted.connect(_on_madman_interacted)
if ArchiveManager.get_global_value(&"c02_madman_hitwall", false):
madman.queue_free()
# 疯子消失后启用杂物堆
$"../DeployLayer/Ambush杂物堆".enabled = true
# 杂物堆前,首次交互时显示小蝉
if not xiaochan.played:
xiaochan.enabled = true
xiaochan.visible = true
# 老鼠叼肉 ambush
func mouse_pick_meat() -> void:
$"../DeployLayer/Ambush老鼠叼肉".enabled = false
SceneManager.freeze_player(2.0)
# 标记为已掉落
ArchiveManager.set_global_entry(&"c02_meat_dropping", false)
var sprite = $"../DeployLayer/老鼠叼肉"
sprite.play()
await sprite.animation_finished
SceneManager.pop_os_with_str("c02_敲门_老鼠叼肉")
func _on_madman_interacted() -> void:
if EventManager.get_stage("c02_madman_interacted") > 0:
return
await DialogueManager.dialogue_ended
EventManager.set_stage("c02_madman_interacted", 1)
SceneManager.pop_os_with_str("c02_一楼疯子互动后")
func xiaochan_disappear():
var xc = $"../DeployLayer/Ambush小蝉消失/ProSprite" as AnimatedSprite2D
xc.play("小蝉背对转头")
create_tween().tween_property(xc, "modulate:a", 0.0, 2.0)
func wood_puppet() -> void:
SceneManager.enable_prop_item("prop_木头人偶")
func bucket_meat() -> void:
SceneManager.enable_prop_item("prop_新鲜的肉")