Bridge opening battle story into tactics

This commit is contained in:
2026-06-20 14:55:19 +09:00
parent 68fbce761f
commit d0bfcbc90a
3 changed files with 11 additions and 2 deletions

View File

@@ -26,7 +26,7 @@ Godot 4 tactical RPG prototype inspired by classic turn-based Romance of the Thr
- Scenario-specific pre-battle shop purchases, optional finite shop stock, and 50% sell-back save immediately and sync into the upcoming battle inventory. - Scenario-specific pre-battle shop purchases, optional finite shop stock, and 50% sell-back save immediately and sync into the upcoming battle inventory.
- Pre-battle shop rows emphasize item artwork, compact price/status badges, and hover details instead of dense inline text. - Pre-battle shop rows emphasize item artwork, compact price/status badges, and hover details instead of dense inline text.
- 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. - 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 now includes a villager route report that frames the castle, village recovery point, and enemy approach before combat starts. - 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 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 bridges Xiahou Yuan and Cao Ren's join 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. - Sishui Gate now opens with camp dialogue that turns the coalition briefing into a spoken march order.

View File

@@ -707,11 +707,17 @@
"side": "left", "side": "left",
"text": "두 사람은 작은 병력을 이끌고 황건의 깃발이 걸린 들판으로 향했다. 첫 군령은 여기서 시작된다." "text": "두 사람은 작은 병력을 이끌고 황건의 깃발이 걸린 들판으로 향했다. 첫 군령은 여기서 시작된다."
}, },
{
"speaker": "Yingchuan Villager",
"display_speaker": "영천 백성",
"side": "right",
"text": "장군, 마을 우물가에는 다친 이를 돌볼 약이 남아 있습니다. 북쪽 숲에는 황건병이 미처 옮기지 못한 보급 수레가 있다는 말도 들었습니다."
},
{ {
"speaker": "Cao Cao", "speaker": "Cao Cao",
"display_speaker": "조조", "display_speaker": "조조",
"side": "left", "side": "left",
"text": "황건의 깃발은 마을 뒤 성채에 기대어 서 있다. 들판의 잔병을 먼저 끊고 성채로 길을 열어라." "text": "좋다. 마을을 등지고 유인선까지만 적 앞줄을 끌어낸다. 성채로 곧장 달리지 말고, 길목과 숲의 보급을 함께 살펴라."
}, },
{ {
"speaker": "Zhang Mancheng", "speaker": "Zhang Mancheng",

View File

@@ -916,6 +916,9 @@ func _check_opening_battle_event_dialogue_structure(failures: Array[String]) ->
var opening_text := _event_dialogue_text(opening_event) var opening_text := _event_dialogue_text(opening_event)
if not opening_text.contains("젊은 조조") or not opening_text.contains("하후돈") or not opening_text.contains("첫 군령"): if not opening_text.contains("젊은 조조") or not opening_text.contains("하후돈") or not opening_text.contains("첫 군령"):
failures.append("opening battle should first explain Cao Cao, Xiahou Dun, and why the first battle begins") failures.append("opening battle should first explain Cao Cao, Xiahou Dun, and why the first battle begins")
for tactical_context in ["마을 우물", "북쪽 숲", "유인선", "성채"]:
if not opening_text.contains(tactical_context):
failures.append("opening battle dialogue should bridge story into tactical context `%s`: %s" % [tactical_context, opening_text])
if opening_text.find("젊은 조조") > opening_text.find("황건의 깃발"): if opening_text.find("젊은 조조") > opening_text.find("황건의 깃발"):
failures.append("opening battle prologue should come before the tactical battlefield order") failures.append("opening battle prologue should come before the tactical battlefield order")
var boss_event := _event_by_id(state, "zhang_mancheng_falls") var boss_event := _event_by_id(state, "zhang_mancheng_falls")