@tool extends Event2D # var prev_stage := 0 # var stage := 0 @onready var animation_player = $AnimationPlayer as AnimationPlayer @onready var light_adder = $LightAdder as PointLight2D @onready var light_subtracter = $LightSubtracter as PointLight2D @onready var the_blind = $"瞎子抽烟" as AnimatedSprite2D @onready var xxdie = $"小小小蝶" as AnimatedSprite2D var c03_dialogue = preload("uid://b66v5hsf3tdox") as DialogueResource func _ready() -> void: super._ready() if Engine.is_editor_hint(): return func _on_global_stage_updated(e: StringName, s: int): super._on_global_stage_updated(e, s) @onready var sfx_amb: Sfx = $"Sfx灰姑amb" @onready var sfx_sfx: Sfx = $"Sfx灰姑sfx" func _on_ground_ready(_ground: Ground2D): # 邀请小蝉晚饭 if stage == 1: SceneManager.lock_player() SceneManager.get_player().set_facing_direction(Vector2.RIGHT) SceneManager.get_player().global_position.x = 63.0 sfx_amb.play() modulate.a = 0.0 # 等待玩家看到画面,再开始对话 await Util.wait(1.5) create_tween().tween_property(self, "modulate:a", 1.0, 2.0) await Util.wait(2.5) # Part1: 上半段对话1&抽烟 DialogueManager.show_dialogue_balloon(c03_dialogue, "c03_s02_邀请小蝉与瞎子对话1") the_blind.play("瞎子_抽烟") await DialogueManager.dialogue_ended if the_blind.animation == "瞎子_抽烟": await the_blind.animation_finished # Part2: 下半段对话2&灯忽闪 animation_player.play("light_flipping") SceneManager.pop_debug_dialog_info("音效", "老鼠叫声+悉悉索索老鼠走路钻洞声") the_blind.play("瞎子_咳嗽吐血") DialogueManager.show_dialogue_balloon(c03_dialogue, "c03_s02_邀请小蝉与瞎子对话2") await DialogueManager.dialogue_ended DialogueManager.show_dialogue_balloon(c03_dialogue, "c03_s02_邀请小蝉与瞎子对话3") await DialogueManager.dialogue_ended the_blind.play("瞎子_咳嗽吐血") Util.timer(1.0, $"Sfx2D瞎子咳嗽".play) Util.timer(6.0, func (): animation_player.pause() # Part4: 过度到快速闪烁 var tween = create_tween() tween.tween_property(light_adder, "energy", 0.8, 0.2) await tween.finished animation_player.play("light_fast_flipping") ) # -1: not ready; 0: ready(开始混合背景音,如猫叫); # 1女人诡异吹起声&瞎子与小小蝶消失; # 2灰姑1出现; # 3灰姑2出现; func light_flipping_darkest_point(darkest_step: int) -> void: if GlobalConfig.DEBUG: print("darkest_step: " + str(darkest_step)) if darkest_step == 1: sfx_sfx.play() SceneManager.pop_debug_dialog_info("音效", "女人诡异吹气声,灰姑的老鼠叫,猫咪害怕的声音响起") the_blind.hide() xxdie.hide() elif darkest_step == 2: #TODO SceneManager.pop_debug_dialog_info("音效", "灰姑影子突然出现") $"灰姑1".show() elif darkest_step == 3: $"灰姑1".hide() $"灰姑2".show() #TODO SceneManager.pop_debug_dialog_info("音效", "灰姑贴脸&惊悚音效(剧烈呼吸&心跳)") animation_player.pause() var tween = create_tween() tween.tween_property(light_adder, "energy", 1.0, 0.8) tween.parallel().tween_property(light_subtracter, "energy", 0.0, 0.8) # 灰姑散开前等 1s tween.tween_interval(1.0) await tween.finished $"灰姑2".play("姑散开") #TODO SceneManager.pop_debug_dialog_info("音效", "灰姑散开时伴随老鼠叫声") await Util.wait(1.0) SceneManager.black_transition(0.8, 0.2) #TODO SceneManager.pop_debug_dialog_info("音效", "猫叫伴随灯光暗下") await Util.wait(0.8) EventManager.set_stage(event_name, 2) await Util.wait(1.0) # 最后一闪,在最暗时调整场景状态 SceneManager.unlock_player() sfx_amb.easing_kill() SceneManager.pop_os_with_str("c03_s02_演出结束") func player_walk_right() -> void: var current_x = SceneManager.get_player().global_position.x SceneManager.get_player().walk_to_x(current_x + 30.0)\ # 走完直接播放吓到动画 .tween_callback(SceneManager.player_action.bind(18, true)) func _on_pre_stage_updated(): pass func _on_stage_updated(): pass