From 82dc5d1f2c790409dcf7f6e07f2e98cbb6b7271d Mon Sep 17 00:00:00 2001 From: Wickedness Date: Sat, 20 Jun 2026 00:39:57 +0900 Subject: [PATCH] Expand opening prologue beats --- README.md | 2 +- scripts/scenes/battle_scene.gd | 8 ++++++-- tools/smoke_title_menu.gd | 15 +++++++++++++++ 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index d0be390..2642ccf 100644 --- a/README.md +++ b/README.md @@ -116,7 +116,7 @@ Godot 4 tactical RPG prototype inspired by classic turn-based Romance of the Thr - Campaign completion screen. - New campaign save reset. - Manual campaign checkpoint save/load. -- Cinematic title screen uses the battlefield backdrop and Cao Cao portrait art, offers start/load/settings, leads new campaigns through a short Cao Cao and Xiahou Dun opening prologue, exposes the same audio/edge-scroll settings from the top in-game toolbar, and persists BGM/SFX volume, sound toggles, and edge-scroll preference in `user://heros_settings.json`. +- Cinematic title screen uses the battlefield backdrop and Cao Cao portrait art, offers start/load/settings, leads new campaigns through a four-beat Cao Cao decision and Xiahou Dun opening prologue, exposes the same audio/edge-scroll settings from the top in-game toolbar, and persists BGM/SFX volume, sound toggles, and edge-scroll preference in `user://heros_settings.json`. - Victory and defeat result overlay. - Dialogue portrait slot stays fixed across speaker and narration lines, with officer default image paths, optional per-line overrides, and speaker-initial or record fallback. - Initial AI-generated photorealistic officer portraits for Cao Cao, Xiahou Dun, Xiahou Yuan, Cao Ren, Dian Wei, Guo Jia, and Zhang He. diff --git a/scripts/scenes/battle_scene.gd b/scripts/scenes/battle_scene.gd index 50a4796..29a1938 100644 --- a/scripts/scenes/battle_scene.gd +++ b/scripts/scenes/battle_scene.gd @@ -36,8 +36,12 @@ const OPENING_PROLOGUE_PAGES := [ "body": "젊은 조조는 재주와 결단으로 이름을 얻었지만, 조정 안팎의 권세와 부패를 가까이 보며 법만으로는 세상을 붙들기 어렵다는 것을 알았다." }, { - "title": "하후돈과 첫 군세", - "body": "가문의 친척 하후돈은 먼저 창을 들고 조조의 길에 섰다. 두 사람은 큰 명성보다 무너지는 고을을 구하는 첫 군령을 택했다." + "title": "맹덕의 결심", + "body": "황건의 봉기가 고을을 삼키자 조조는 더는 조정의 명만 기다리지 않았다. 그는 작은 군세라도 직접 세워 백성이 빠져나갈 길을 열기로 했다." + }, + { + "title": "하후돈의 합류", + "body": "가문의 친척 하후돈은 먼저 창을 들고 조조의 길에 섰다. 두 사람은 큰 명성보다 무너지는 고을을 구하는 첫 군령을 함께 택했다." }, { "title": "영천으로", diff --git a/tools/smoke_title_menu.gd b/tools/smoke_title_menu.gd index e4b86ea..b30694b 100644 --- a/tools/smoke_title_menu.gd +++ b/tools/smoke_title_menu.gd @@ -112,6 +112,21 @@ func _check_title_menu_start_load_and_settings(failures: Array[String]) -> void: failures.append("opening prologue should expose title and story text") elif not scene.opening_prologue_body_label.text.contains("조조"): failures.append("opening prologue should first explain Cao Cao before the Yellow Turban battle") + if scene.opening_prologue_step_label == null or not scene.opening_prologue_step_label.text.ends_with("/4"): + failures.append("opening prologue should give Cao Cao, decision, Xiahou Dun, and Yingchuan their own beats") + scene._on_opening_prologue_next_pressed() + if scene.opening_prologue_title_label == null or scene.opening_prologue_title_label.text != "맹덕의 결심": + failures.append("opening prologue should move from Cao Cao background to his decision") + elif not scene.opening_prologue_body_label.text.contains("황건") or not scene.opening_prologue_body_label.text.contains("작은 군세"): + failures.append("opening prologue decision page should explain why Cao Cao raises troops") + scene._on_opening_prologue_next_pressed() + if scene.opening_prologue_title_label == null or scene.opening_prologue_title_label.text != "하후돈의 합류": + failures.append("opening prologue should then show Xiahou Dun joining Cao Cao") + elif not scene.opening_prologue_body_label.text.contains("하후돈") or not scene.opening_prologue_body_label.text.contains("첫 군령"): + failures.append("opening prologue Xiahou Dun page should link the relationship to the first command") + scene._on_opening_prologue_next_pressed() + if scene.opening_prologue_title_label == null or scene.opening_prologue_title_label.text != "영천으로": + failures.append("opening prologue should end by pointing toward Yingchuan") var prologue_guard := 0 while scene._is_opening_prologue_visible() and prologue_guard < 8: scene._on_opening_prologue_next_pressed()