diff --git a/scene/entity/npc.gd b/scene/entity/npc.gd index 94a2884a..1e57d9ec 100644 --- a/scene/entity/npc.gd +++ b/scene/entity/npc.gd @@ -69,6 +69,7 @@ var speaking_sign_mode := 0: speaking_sign_tween = create_tween() if val == 0: speaking_sign_tween.tween_property(speaking_sign, "modulate:a", 0.0, 0.3) + speaking_animation.stop() elif val == 1: speaking_sign_tween.tween_property(speaking_sign, "modulate", base_mod, 0.3) speaking_sign_tween.parallel().tween_property( @@ -133,10 +134,10 @@ func _align_signs_status(): func _on_toggle_active(activated: bool) -> void: - if activated and speaking_sign_mode == 0: - speaking_sign_mode = 1 - elif not activated and speaking_sign_mode > 0: + if not activated: speaking_sign_mode = 0 + elif speaking_sign_mode == 0: + speaking_sign_mode = 1 func _on_interacted() -> void: @@ -147,9 +148,10 @@ func _on_interacted() -> void: ground_archive.set_pair(name, "icount", icount) DialogueManager.show_dialogue_balloon(dialogue_res, dialogue_title) interacted.emit() + var out_of_range = speaking_sign_mode == 0 speaking_sign_mode = 2 await DialogueManager.dialogue_ended - speaking_sign_mode = 1 + speaking_sign_mode = 0 if out_of_range else 1 # 在 unlock 之前发射 talk_finished.emit() SceneManager.unlock_player()