diff --git a/README.md b/README.md index b5caf2b..14ea0b7 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ Godot 4 tactical RPG prototype inspired by classic turn-based Romance of the Thr - Pre-battle Talk can list scenario camp conversations by officer or topic with portrait rows, compact topic/supply badges, hover dialogue previews, saved-branch filtering, one-time pre-battle supplies, and merchant flavor lines before a battle. - The opening battle's camp and battle-opening dialogue now include a villager route report that frames the castle, village recovery point, lure line, and northern supply cache before combat starts. - The opening battle now uses a dedicated high-resolution Yingchuan battlefield backdrop, clearer generated terrain-cell texture overlays, image-first recovery/supply/tactic tile markers, no text class boxes on units, quieter objective progress text, and a pulled-back enemy line so the player can lure and form up before the first clash. -- The opening victory dialogue now bridges Xiahou Yuan and Cao Ren's join into the Sishui Gate march against Hua Xiong. +- The opening victory dialogue now explicitly shows Cao Ren and Xiahou Yuan joining Cao Cao's camp before bridging into the Sishui Gate march against Hua Xiong. - Sishui Gate now opens with camp dialogue that turns the coalition briefing into a spoken march order. - Pre-battle Armory equipment changes, including unequipping gear back into stock, save immediately and sync roster equipment plus inventory stock, with portrait and item-icon rows plus hover change details. - Pre-battle Roster can move optional officers between sortie and reserve within scenario limits, using portrait rows, compact status badges, and hover details. diff --git a/data/scenarios/001_yellow_turbans.json b/data/scenarios/001_yellow_turbans.json index ccbdc82..c4b2a78 100644 --- a/data/scenarios/001_yellow_turbans.json +++ b/data/scenarios/001_yellow_turbans.json @@ -1500,6 +1500,12 @@ "side": "left", "text": "이는 첫 불길일 뿐이다. 조정이 빨리 움직이지 못한다면 우리가 움직여야 한다." }, + { + "speaker": "Narrator", + "display_speaker": "기록", + "side": "left", + "text": "영천의 깃발이 내려가자 조인과 하후연이 각자 모은 병력을 이끌고 조조의 군막에 합류했다." + }, { "speaker": "Cao Ren", "display_speaker": "조인", diff --git a/tools/smoke_chapter_one_polish.gd b/tools/smoke_chapter_one_polish.gd index 5f752c7..ee9a7db 100644 --- a/tools/smoke_chapter_one_polish.gd +++ b/tools/smoke_chapter_one_polish.gd @@ -865,12 +865,14 @@ func _check_opening_battle_post_battle_bridge(failures: Array[String]) -> void: failures.append("could not load opening battle for post-battle bridge") return var lines: Array = state.get_post_battle_dialogue() - if lines.size() < 5: + if lines.size() < 6: failures.append("opening battle should have a multi-beat post-battle bridge") var bridge_text := _dialogue_lines_text(lines) - for expected in ["사수관", "화웅", "하후연", "조인", "난세의 길"]: + for expected in ["사수관", "화웅", "하후연", "조인", "합류", "난세의 길"]: if not bridge_text.contains(expected): failures.append("opening post-battle bridge should mention %s: %s" % [expected, bridge_text]) + if bridge_text.find("합류") > bridge_text.find("사수관"): + failures.append("opening post-battle bridge should explain officer joins before the Sishui report: %s" % bridge_text) func _check_sishui_gate_camp_context(failures: Array[String]) -> void: