diff --git a/data/campaign/campaign.json b/data/campaign/campaign.json index 5b60374..cf7e35c 100644 --- a/data/campaign/campaign.json +++ b/data/campaign/campaign.json @@ -66,12 +66,12 @@ }, { "id": "003_xingyang_ambush", - "title": "Xingyang Ambush", + "title": "형양 매복전", "path": "res://data/scenarios/003_xingyang_ambush.json" }, { "id": "004_qingzhou_campaign", - "title": "Qingzhou Campaign", + "title": "청주 평정전", "path": "res://data/scenarios/004_qingzhou_campaign.json" }, { diff --git a/data/scenarios/003_xingyang_ambush.json b/data/scenarios/003_xingyang_ambush.json index df89f56..d40dac1 100644 --- a/data/scenarios/003_xingyang_ambush.json +++ b/data/scenarios/003_xingyang_ambush.json @@ -1,9 +1,9 @@ { "id": "003_xingyang_ambush", - "name": "Xingyang Ambush", + "name": "형양 매복전", "objectives": { - "victory": "Defeat Xu Rong's rearguard.", - "defeat": "Cao Cao is defeated or the battle reaches Turn 11." + "victory": "서영의 후군을 격파하라.", + "defeat": "조조가 퇴각하거나 제11턴에 이르면 패한다." }, "conditions": { "victory": { "type": "all_units_defeated", "team": "enemy", "after_event": "turn_3_ambush" }, @@ -13,24 +13,24 @@ ] }, "briefing": { - "title": "Xingyang Ambush", - "location": "Xingyang, 190 CE", + "title": "형양 매복전", + "location": "형양, 초평 원년", "lines": [ - "Dong Zhuo abandons Luoyang and retreats west.", - "Cao Cao's vanguard turns toward the enemy rearguard near Xingyang.", - "The road narrows ahead. Keep the vanguard together and watch the forest line." + "동탁이 낙양을 버리고 천자를 끼고 서쪽으로 달아났다.", + "조조의 선봉은 형양 부근에서 적의 후군을 따라붙는다.", + "앞길은 좁고 숲은 깊다. 전열을 흩뜨리지 말고 수풀의 기척을 살펴라." ], "conditional_lines": [ { "campaign_flags": { "pursued_dong_zhuo": true }, "lines": [ - "The rapid pursuit leaves little time for scouting, but may catch Xu Rong before he regroups." + "급히 추격한 탓에 척후가 모자라나, 서영이 군세를 다시 모으기 전 그 뒤를 칠 수 있다." ] }, { "campaign_flags": { "regrouped_after_sishui": true }, "lines": [ - "Scouts from Sishui report suspicious movement in the trees. Expect an ambush and prepare accordingly." + "사수관에서 보낸 척후가 숲 가장자리의 수상한 움직임을 알렸다. 매복을 염두에 두고 행군하라." ] } ], @@ -38,11 +38,11 @@ { "id": "xingyang_war_council", "group": "topic", - "label": "Xingyang War Council", - "summary": "Review the narrow road before the advance.", + "label": "형양 군의", + "summary": "좁은 숲길을 앞두고 행군법을 정한다.", "lines": [ - { "speaker": "Cao Cao", "side": "left", "text": "Dong Zhuo retreats with the court in his grip. If Xu Rong bars the road, we break him quickly." }, - { "speaker": "Xiahou Dun", "side": "right", "text": "The forest line is too quiet. I would rather meet steel in the open than courtesy from those trees." } + { "speaker": "Cao Cao", "display_speaker": "조조", "side": "left", "text": "동탁은 조정을 움켜쥐고 서쪽으로 물러난다. 서영이 길을 막는다면 오래 말할 것 없이 꺾어야 한다." }, + { "speaker": "Xiahou Dun", "display_speaker": "하후돈", "side": "right", "text": "숲가가 너무 고요합니다. 저 나무 아래의 예의보다는 벌판의 칼끝이 차라리 믿을 만합니다." } ] }, { @@ -50,26 +50,27 @@ "campaign_flags": { "pursued_dong_zhuo": true }, "group": "officer", "officer_id": "cao_cao", - "label": "Cao Cao - Forced March", + "label": "조조 - 강행군", "speaker": "Cao Cao", - "summary": "Consider the cost of chasing Dong Zhuo without rest.", + "display_speaker": "조조", + "summary": "쉬지 않고 동탁을 쫓는 대가를 헤아린다.", "lines": [ - { "speaker": "Cao Cao", "side": "left", "text": "The coalition will count banners until Dong Zhuo is beyond reach. We chose the road while they chose their chairs." }, - { "speaker": "Xiahou Dun", "side": "right", "text": "The men are tired, but their blood is up. Let Xu Rong stand in the road if he wants to be first." } + { "speaker": "Cao Cao", "display_speaker": "조조", "side": "left", "text": "연합은 동탁이 손 닿지 않을 곳까지 가도 깃발 수만 헤아릴 것이다. 저들은 자리를 택했고, 우리는 길을 택했다." }, + { "speaker": "Xiahou Dun", "display_speaker": "하후돈", "side": "right", "text": "군사는 지쳤으나 피는 아직 뜨겁습니다. 서영이 길 가운데 서겠다면 첫 제물이 되게 하겠습니다." } ] }, { "id": "xingyang_hasty_stores", "campaign_flags": { "pursued_dong_zhuo": true }, "group": "topic", - "label": "Hasty Stores", - "summary": "Open the last wagon packed during the pursuit.", + "label": "급행 보급차", + "summary": "추격 중 챙긴 마지막 보급 수레를 연다.", "lines": [ - { "speaker": "Xiahou Yuan", "side": "right", "text": "We left Sishui at speed, but I kept one small wagon close to the vanguard." }, - { "speaker": "Cao Cao", "side": "left", "text": "Good. Issue it before the road narrows; tired soldiers need steadier hands." } + { "speaker": "Xiahou Yuan", "display_speaker": "하후연", "side": "right", "text": "사수관을 급히 떠났으나 작은 수레 하나는 선봉 곁에 붙여 두었습니다." }, + { "speaker": "Cao Cao", "display_speaker": "조조", "side": "left", "text": "좋다. 길이 좁아지기 전에 나누어라. 지친 병사일수록 손끝을 가라앉힐 것이 필요하다." } ], "effects": [ - { "type": "grant_item", "item_id": "wine", "count": 1, "text": "The hasty stores add Wine to the field supplies." } + { "type": "grant_item", "item_id": "wine", "count": 1, "text": "급행 보급차에서 술 한 병을 군수에 보탰다." } ] }, { @@ -77,31 +78,39 @@ "campaign_flags": { "regrouped_after_sishui": true }, "group": "officer", "officer_id": "cao_ren", - "label": "Cao Ren - Scout Screen", + "label": "조인 - 척후망", "speaker": "Cao Ren", - "summary": "Review the warning signs around the forest road.", + "display_speaker": "조인", + "summary": "숲길 주변의 수상한 징후를 살핀다.", "lines": [ - { "speaker": "Cao Ren", "side": "right", "text": "The scouts found cut branches near the forest edge. Xu Rong wants us to enter blind." }, - { "speaker": "Cao Cao", "side": "left", "text": "Then we thank him for showing us where to look. Keep the line compact until the trap reveals itself." } + { "speaker": "Cao Ren", "display_speaker": "조인", "side": "right", "text": "척후가 숲가에서 갓 베인 가지를 찾았습니다. 서영은 우리가 눈먼 채 들어오길 바라는 듯합니다." }, + { "speaker": "Cao Cao", "display_speaker": "조조", "side": "left", "text": "그렇다면 어디를 보아야 할지 알려 준 셈이다. 함정이 모습을 드러낼 때까지 전열을 단단히 묶어라." } ] }, { "id": "xingyang_sishui_supply_train", "campaign_flags": { "regrouped_after_sishui": true }, "group": "topic", - "label": "Sishui Supply Train", - "summary": "Distribute the supplies gathered during the regroup.", + "label": "사수관 보급행렬", + "summary": "정비 중 모아 둔 약품을 나눈다.", "lines": [ - { "speaker": "Camp Merchant", "side": "right", "text": "The delay at Sishui let me sort the physician's chest. Take this before the forest road." }, - { "speaker": "Xiahou Yuan", "side": "left", "text": "If Xu Rong brought poison or snares, better to spend the remedy before men start cursing my scouting." } + { "speaker": "Camp Merchant", "display_speaker": "군막 상인", "side": "right", "text": "사수관에서 머문 덕에 의원의 약상자를 추릴 수 있었습니다. 숲길에 들기 전에 받아 두십시오." }, + { "speaker": "Xiahou Yuan", "display_speaker": "하후연", "side": "left", "text": "서영이 독이나 덫을 챙겼다면, 병사들이 내 척후를 욕하기 전에 약을 쓰는 편이 낫겠습니다." } ], "effects": [ - { "type": "grant_item", "item_id": "panacea", "count": 1, "text": "The Sishui supply train adds a Panacea to the field supplies." } + { "type": "grant_item", "item_id": "panacea", "count": 1, "text": "사수관 보급행렬이 만능약 한 꾸러미를 군수에 보탰다." } ] } ] }, "shop": { + "merchant": { + "name": "형양 길상인", + "lines": [ + "형양 숲길은 말굽보다 소문이 먼저 막힙니다. 약과 술은 값을 묻기 전에 챙기십시오.", + "사수관에서 흘러온 병장도 조금 있습니다. 서영의 후군을 만나고 나면 흠 없는 물건이 귀해질 겁니다." + ] + }, "items": [ "bean", "antidote", @@ -174,7 +183,7 @@ }, { "unit_id": "xu_rong_rearguard", - "name": "Xu Rong Rearguard", + "name": "서영 후군", "class_id": "cavalry", "team": "enemy", "level": 3, @@ -183,7 +192,7 @@ }, { "unit_id": "liang_spearman", - "name": "Liang Spearman", + "name": "양주 창병", "class_id": "infantry", "team": "enemy", "level": 3, @@ -192,7 +201,7 @@ }, { "unit_id": "liang_strategist", - "name": "Liang Strategist", + "name": "양주 책사", "class_id": "strategist", "team": "enemy", "level": 3, @@ -201,7 +210,7 @@ }, { "unit_id": "rearguard_archer", - "name": "Rearguard Archer", + "name": "후군 궁병", "class_id": "archer", "team": "enemy", "level": 3, @@ -215,7 +224,7 @@ "once": true, "when": { "type": "battle_start", "campaign_flags": { "pursued_dong_zhuo": true } }, "actions": [ - { "type": "log", "text": "Cao Cao's rapid pursuit closes on Dong Zhuo's rearguard." } + { "type": "log", "text": "조조의 급한 추격이 동탁의 후군을 바짝 압박한다." } ] }, { @@ -223,7 +232,7 @@ "once": true, "when": { "type": "battle_start", "campaign_flags": { "regrouped_after_sishui": true } }, "actions": [ - { "type": "log", "text": "Cao Cao advances after gathering scouts and supplies at Sishui." } + { "type": "log", "text": "조조가 사수관에서 척후와 보급을 정비한 뒤 형양 숲길로 나아간다." } ] }, { @@ -234,9 +243,9 @@ { "type": "dialogue", "lines": [ - { "speaker": "Cao Cao", "text": "The coalition hesitates while Dong Zhuo escapes. We will not let this chance pass." }, - { "speaker": "Xiahou Dun", "text": "The road is too quiet. If they mean to spring a trap, let them try it." }, - { "speaker": "Xiahou Yuan", "text": "I will watch the ridges. Their bowmen will favor the high ground." } + { "speaker": "Cao Cao", "display_speaker": "조조", "text": "동탁이 달아나는데 연합은 머뭇거린다. 이 기회를 그냥 흘려보낼 수 없다." }, + { "speaker": "Xiahou Dun", "display_speaker": "하후돈", "text": "길이 너무 고요합니다. 저들이 함정을 펼치려 한다면 어디 해 보라지요." }, + { "speaker": "Xiahou Yuan", "display_speaker": "하후연", "text": "능선을 살피겠습니다. 궁병이라면 반드시 높은 곳을 탐낼 것입니다." } ] } ] @@ -249,9 +258,9 @@ { "type": "dialogue", "lines": [ - { "speaker": "Cao Cao", "text": "The delay at Sishui bought us scouts and fresh supplies. Now we move with clear eyes." }, - { "speaker": "Cao Ren", "text": "Our riders report movement in the forest line. Xu Rong may be waiting ahead." }, - { "speaker": "Xiahou Yuan", "text": "Then we draw them out and break their trap before it closes." } + { "speaker": "Cao Cao", "display_speaker": "조조", "text": "사수관에서 늦춘 걸음이 척후와 보급을 얻어 주었다. 이제 눈을 뜨고 나아간다." }, + { "speaker": "Cao Ren", "display_speaker": "조인", "text": "기병이 숲가의 움직임을 보았습니다. 서영이 앞에서 기다릴지도 모릅니다." }, + { "speaker": "Xiahou Yuan", "display_speaker": "하후연", "text": "그렇다면 저들을 끌어내 함정이 닫히기 전에 깨겠습니다." } ] } ] @@ -261,7 +270,7 @@ "once": true, "when": { "type": "turn_start", "team": "enemy", "turn": 3 }, "actions": [ - { "type": "log", "text": "The forest line shifts as Xu Rong's ambush springs." } + { "type": "log", "text": "숲가가 흔들리며 서영의 매복이 모습을 드러낸다." } ] }, { @@ -269,25 +278,25 @@ "once": true, "when": { "type": "turn_start", "team": "enemy", "turn": 3, "campaign_flags": { "pursued_dong_zhuo": true } }, "actions": [ - { "type": "log", "text": "Xu Rong's ambush force closes in from the forest." }, + { "type": "log", "text": "서영의 매복병이 숲에서 내려와 길을 에워싼다." }, { "type": "dialogue", "lines": [ - { "speaker": "Xu Rong", "text": "Cao Cao took the bait. Seal the road and cut down his vanguard." }, - { "speaker": "Cao Cao", "text": "So this was their plan. Hold formation and break through!" } + { "speaker": "Xu Rong", "display_speaker": "서영", "text": "조조가 미끼를 물었다. 길을 봉하고 선봉을 베어라." }, + { "speaker": "Cao Cao", "display_speaker": "조조", "text": "이것이 저들의 꾀였군. 전열을 지키고 돌파하라!" } ] }, { "type": "set_objective", - "victory": "Defeat Xu Rong and every ambush unit.", - "defeat": "Cao Cao is defeated or the battle reaches Turn 11." + "victory": "서영과 모든 매복병을 격파하라.", + "defeat": "조조가 퇴각하거나 제11턴에 이르면 패한다." }, { "type": "spawn_deployments", "deployments": [ { "unit_id": "ambush_bandit_1", - "name": "Ambush Raider", + "name": "매복 산적", "class_id": "bandit", "team": "enemy", "level": 3, @@ -296,7 +305,7 @@ }, { "unit_id": "ambush_bandit_2", - "name": "Ambush Raider", + "name": "매복 산적", "class_id": "bandit", "team": "enemy", "level": 3, @@ -305,7 +314,7 @@ }, { "unit_id": "ambush_archer", - "name": "Ambush Archer", + "name": "매복 궁병", "class_id": "archer", "team": "enemy", "level": 3, @@ -321,25 +330,25 @@ "once": true, "when": { "type": "turn_start", "team": "enemy", "turn": 3, "campaign_flags": { "regrouped_after_sishui": true } }, "actions": [ - { "type": "log", "text": "Scouts expose Xu Rong's ambush before the trap fully closes." }, + { "type": "log", "text": "척후가 함정이 닫히기 전에 서영의 매복을 드러냈다." }, { "type": "dialogue", "lines": [ - { "speaker": "Xu Rong", "text": "They found our screen too soon. Attack before Cao Cao can withdraw!" }, - { "speaker": "Cao Cao", "text": "Their trap is revealed. Strike the exposed units and keep the road open." } + { "speaker": "Xu Rong", "display_speaker": "서영", "text": "우리 차폐가 너무 일찍 들켰다. 조조가 물러나기 전에 쳐라!" }, + { "speaker": "Cao Cao", "display_speaker": "조조", "text": "함정은 이미 드러났다. 모습을 보인 적을 치고 길을 열어 두어라." } ] }, { "type": "set_objective", - "victory": "Defeat Xu Rong and the exposed ambush units.", - "defeat": "Cao Cao is defeated or the battle reaches Turn 11." + "victory": "서영과 드러난 매복병을 격파하라.", + "defeat": "조조가 퇴각하거나 제11턴에 이르면 패한다." }, { "type": "spawn_deployments", "deployments": [ { "unit_id": "ambush_bandit_scouted", - "name": "Exposed Raider", + "name": "드러난 산적", "class_id": "bandit", "team": "enemy", "level": 3, @@ -348,7 +357,7 @@ }, { "unit_id": "ambush_archer_scouted", - "name": "Exposed Archer", + "name": "드러난 궁병", "class_id": "archer", "team": "enemy", "level": 3, @@ -367,7 +376,7 @@ { "type": "dialogue", "lines": [ - { "speaker": "Xiahou Yuan", "text": "Their line is stretched. Push through the road before they regroup." } + { "speaker": "Xiahou Yuan", "display_speaker": "하후연", "text": "적의 전열이 길게 늘어졌습니다. 저들이 다시 모이기 전에 길을 밀고 나가야 합니다." } ] } ] @@ -380,8 +389,8 @@ { "type": "dialogue", "lines": [ - { "speaker": "Cao Ren", "text": "Their hidden troops are fewer than expected. The scouts earned their pay." }, - { "speaker": "Cao Cao", "text": "Good. Keep the pressure on Xu Rong before he reforms the line." } + { "speaker": "Cao Ren", "display_speaker": "조인", "text": "숨은 병력이 생각보다 적습니다. 척후가 제 몫을 해냈습니다." }, + { "speaker": "Cao Cao", "display_speaker": "조조", "text": "좋다. 서영이 전열을 다시 세우기 전에 계속 압박하라." } ] } ] @@ -392,7 +401,7 @@ "items": ["bean", "wine", "iron_sword"] }, "post_battle_dialogue": [ - { "speaker": "Cao Cao", "text": "Xu Rong's trap failed, but Dong Zhuo has bought himself time." }, - { "speaker": "Xiahou Dun", "text": "Then we sharpen the army and wait for the next opening." } + { "speaker": "Cao Cao", "display_speaker": "조조", "text": "서영의 함정은 깨졌으나, 동탁은 그만큼 시간을 벌었다." }, + { "speaker": "Xiahou Dun", "display_speaker": "하후돈", "text": "그렇다면 군을 다시 벼리고 다음 틈을 기다리겠습니다." } ] } diff --git a/data/scenarios/004_qingzhou_campaign.json b/data/scenarios/004_qingzhou_campaign.json index 86a294b..0836c50 100644 --- a/data/scenarios/004_qingzhou_campaign.json +++ b/data/scenarios/004_qingzhou_campaign.json @@ -1,9 +1,9 @@ { "id": "004_qingzhou_campaign", - "name": "Qingzhou Campaign", + "name": "청주 평정전", "objectives": { - "victory": "Defeat the Yellow Turban remnant leaders.", - "defeat": "Cao Cao is defeated or the battle reaches Turn 12." + "victory": "황건 잔당의 우두머리를 격파하라.", + "defeat": "조조가 퇴각하거나 제12턴에 이르면 패한다." }, "conditions": { "victory": { "type": "all_units_defeated", "team": "enemy", "after_event": "turn_3_bandit_push" }, @@ -13,24 +13,24 @@ ] }, "briefing": { - "title": "Qingzhou Campaign", - "location": "Qingzhou, 192 CE", + "title": "청주 평정전", + "location": "청주, 초평 3년", "lines": [ - "After the coalition fractures, Cao Cao turns toward Qingzhou.", - "Yellow Turban remnants threaten the villages and trade roads.", - "Secure the road, defeat the rebel leaders, and gather soldiers for a lasting army." + "연합군이 흩어진 뒤 조조는 청주로 눈을 돌렸다.", + "황건 잔당이 마을과 상로를 어지럽히며 백성을 겁박한다.", + "길목을 장악하고 적장을 베어, 흩어진 장정을 군율 아래 모아라." ], "conditional_lines": [ { "campaign_flags": { "pursued_dong_zhuo": true }, "lines": [ - "The army is still lean from the rapid pursuit after Sishui, but its veterans are hardened by the ambush at Xingyang." + "사수관에서 형양까지 이어진 급한 추격으로 군세는 여위었으나, 매복을 넘긴 노병들의 눈빛은 더욱 단단하다." ] }, { "campaign_flags": { "regrouped_after_sishui": true }, "lines": [ - "Supplies gathered after Sishui let Cao Cao press into Qingzhou with a steadier line." + "사수관에서 거둔 보급이 청주로 향하는 전열을 안정시킨다." ] } ], @@ -39,52 +39,54 @@ "id": "qingzhou_settlement_council", "group": "officer", "officer_id": "cao_cao", - "label": "Cao Cao - Lasting Army", + "label": "조조 - 군세의 뿌리", "speaker": "Cao Cao", - "summary": "Discuss turning scattered victories into a standing force.", + "display_speaker": "조조", + "summary": "흩어진 승리를 오래 버틸 군세로 묶을 방도를 논한다.", "lines": [ - { "speaker": "Cao Cao", "side": "left", "text": "The coalition scattered after chasing shadows. Qingzhou gives us a harder task: turn hungry men into a disciplined army." }, - { "speaker": "Xiahou Dun", "side": "right", "text": "Then we break the worst of the remnants and give the rest a reason to stand in our line." } + { "speaker": "Cao Cao", "display_speaker": "조조", "side": "left", "text": "연합은 헛그림자를 좇다 흩어졌다. 청주에서는 굶주린 무리를 군율 있는 병사로 세워야 한다." }, + { "speaker": "Xiahou Dun", "display_speaker": "하후돈", "side": "right", "text": "먼저 가장 사나운 잔당을 꺾고, 나머지에게 우리 깃발 아래 설 까닭을 보이겠습니다." } ] }, { "id": "qingzhou_village_screen", "group": "officer", "officer_id": "cao_ren", - "label": "Cao Ren - Village Screen", + "label": "조인 - 촌락 엄호", "speaker": "Cao Ren", - "summary": "Protect villages and trade roads while the vanguard advances.", + "display_speaker": "조인", + "summary": "선봉이 나아가는 동안 촌락과 상로를 지킬 방도를 세운다.", "lines": [ - { "speaker": "Cao Ren", "side": "right", "text": "The villages fear every banner now. If our line tramples their fields, they will see no difference between us and the rebels." }, - { "speaker": "Cao Cao", "side": "left", "text": "Hold the road, not the harvest. Order is worth more than a hurried victory." } + { "speaker": "Cao Ren", "display_speaker": "조인", "side": "right", "text": "이제 마을은 모든 깃발을 두려워합니다. 우리 군열이 밭을 짓밟으면 백성은 황건과 우리를 가르지 못할 것입니다." }, + { "speaker": "Cao Cao", "display_speaker": "조조", "side": "left", "text": "곡식이 아니라 길을 지켜라. 질서는 서두른 승리보다 값지다." } ] }, { "id": "qingzhou_hardened_veterans", "campaign_flags": { "pursued_dong_zhuo": true }, "group": "topic", - "label": "Hardened Veterans", - "summary": "Issue wine to the men who survived the forced pursuit.", + "label": "형양 노병", + "summary": "강행 추격과 형양 매복을 넘긴 병사들에게 술을 나눈다.", "lines": [ - { "speaker": "Xiahou Yuan", "side": "right", "text": "The men who chased Dong Zhuo through Xingyang still march light. They complain less, which worries me more." }, - { "speaker": "Cao Cao", "side": "left", "text": "Give the veterans a little wine before the road opens. A steady hand matters more than a proud silence." } + { "speaker": "Xiahou Yuan", "display_speaker": "하후연", "side": "right", "text": "형양까지 동탁을 좇던 병사들은 아직 짐을 가볍게 메고 행군합니다. 원망이 줄어든 것이 오히려 마음에 걸립니다." }, + { "speaker": "Cao Cao", "display_speaker": "조조", "side": "left", "text": "길을 열기 전 노병들에게 술을 조금 나누어라. 말 없는 자존심보다 흔들리지 않는 손이 더 귀하다." } ], "effects": [ - { "type": "grant_item", "item_id": "wine", "count": 1, "text": "The hardened veterans add Wine to the field supplies." } + { "type": "grant_item", "item_id": "wine", "count": 1, "text": "형양을 넘긴 노병들이 술 한 병을 군수에 보탰다." } ] }, { "id": "qingzhou_sishui_stores", "campaign_flags": { "regrouped_after_sishui": true }, "group": "topic", - "label": "Sishui Stores", - "summary": "Open the supplies preserved during the regroup.", + "label": "사수관 묵은 보급", + "summary": "정비 중 보존해 둔 보급 꾸러미를 연다.", "lines": [ - { "speaker": "Coalition Merchant", "side": "left", "text": "Those Sishui stores traveled farther than some lords did. I kept the dry beans aside before the wagons bogged down." }, - { "speaker": "Cao Ren", "side": "right", "text": "Good. Feed the front rank before we ask them to spare the villages." } + { "speaker": "Coalition Merchant", "display_speaker": "군막 상인", "side": "left", "text": "사수관의 묵은 보급이 웬만한 제후보다 더 멀리 왔습니다. 수레가 진창에 빠지기 전에 마른 콩을 따로 챙겨 두었지요." }, + { "speaker": "Cao Ren", "display_speaker": "조인", "side": "right", "text": "좋다. 마을을 지키라 명하기 전에 앞줄 병사들의 배부터 채워야 한다." } ], "effects": [ - { "type": "grant_item", "item_id": "bean", "count": 1, "text": "The Sishui stores add a Bean to the field supplies." } + { "type": "grant_item", "item_id": "bean", "count": 1, "text": "사수관 보급에서 콩 한 줌을 군수에 보탰다." } ] } ] @@ -103,10 +105,10 @@ "iron_armor" ], "merchant": { - "name": "Qingzhou Road Merchant", + "name": "청주 길상인", "lines": [ - "The villages pay in grain, not coin, but a road army still needs steel and medicine.", - "Buy before the drums start. Once the remnants scatter, every cart on this road will claim to be a refugee." + "청주 촌락은 동전보다 곡식으로 값을 치릅니다. 그래도 길 위의 군대에는 쇠붙이와 약이 먼저 필요하지요.", + "북이 울리기 전에 고르십시오. 잔당이 흩어지고 나면 이 길의 수레마다 피난민 행색을 할 겁니다." ] } }, @@ -162,7 +164,7 @@ }, { "unit_id": "qingzhou_chief", - "name": "Qingzhou Chief", + "name": "청주 두령", "class_id": "bandit", "team": "enemy", "level": 4, @@ -171,7 +173,7 @@ }, { "unit_id": "yellow_turban_spearman_1", - "name": "Yellow Turban Spearman", + "name": "황건 창병", "class_id": "infantry", "team": "enemy", "level": 4, @@ -180,7 +182,7 @@ }, { "unit_id": "yellow_turban_spearman_2", - "name": "Yellow Turban Spearman", + "name": "황건 창병", "class_id": "infantry", "team": "enemy", "level": 4, @@ -189,7 +191,7 @@ }, { "unit_id": "yellow_turban_archer", - "name": "Yellow Turban Archer", + "name": "황건 궁병", "class_id": "archer", "team": "enemy", "level": 4, @@ -198,7 +200,7 @@ }, { "unit_id": "yellow_turban_strategist", - "name": "Yellow Turban Mystic", + "name": "황건 요술사", "class_id": "strategist", "team": "enemy", "level": 4, @@ -212,7 +214,7 @@ "once": true, "when": { "type": "battle_start" }, "actions": [ - { "type": "log", "text": "Cao Cao enters Qingzhou to pacify the Yellow Turban remnants." } + { "type": "log", "text": "조조군이 황건 잔당을 평정하고자 청주로 들어섰다." } ] }, { @@ -223,9 +225,9 @@ { "type": "dialogue", "lines": [ - { "speaker": "Cao Cao", "text": "A commander needs more than victories. We need men who can hold the land after the banners move on." }, - { "speaker": "Xiahou Dun", "text": "Then we break these remnants and give the villages a reason to trust our flag." }, - { "speaker": "Xiahou Yuan", "text": "Their archers have taken the eastern ridge. I will keep them from harassing the road." } + { "speaker": "Cao Cao", "display_speaker": "조조", "text": "장수에게 필요한 것은 승전뿐이 아니다. 깃발이 지나간 뒤에도 땅을 지킬 사람이 필요하다." }, + { "speaker": "Xiahou Dun", "display_speaker": "하후돈", "text": "그렇다면 잔당을 꺾고, 마을 사람들이 우리 깃발을 믿을 까닭을 보이겠습니다." }, + { "speaker": "Xiahou Yuan", "display_speaker": "하후연", "text": "적 궁병이 동쪽 언덕을 잡았습니다. 제가 길을 괴롭히지 못하게 막겠습니다." } ] } ] @@ -235,25 +237,25 @@ "once": true, "when": { "type": "turn_start", "team": "enemy", "turn": 3 }, "actions": [ - { "type": "log", "text": "Hidden Yellow Turban raiders rush from the woods." }, + { "type": "log", "text": "숲속에 숨은 황건 약탈병이 일제히 뛰쳐나온다." }, { "type": "dialogue", "lines": [ - { "speaker": "Qingzhou Chief", "text": "The villages are ours to feed from. Drive Cao Cao back to the west!" }, - { "speaker": "Cao Cao", "text": "They reveal themselves. Hold the road and cut them down in detail." } + { "speaker": "Qingzhou Chief", "display_speaker": "청주 두령", "text": "마을의 곡식은 우리 배를 채울 몫이다. 조조를 서쪽으로 몰아내라!" }, + { "speaker": "Cao Cao", "display_speaker": "조조", "text": "스스로 모습을 드러냈구나. 길을 지키며 하나씩 베어라." } ] }, { "type": "set_objective", - "victory": "Defeat the Qingzhou chief and every raider.", - "defeat": "Cao Cao is defeated or the battle reaches Turn 12." + "victory": "청주 두령과 모든 약탈병을 격파하라.", + "defeat": "조조가 퇴각하거나 제12턴에 이르면 패한다." }, { "type": "spawn_deployments", "deployments": [ { "unit_id": "qingzhou_raider_north", - "name": "Qingzhou Raider", + "name": "청주 약탈병", "class_id": "bandit", "team": "enemy", "level": 4, @@ -262,7 +264,7 @@ }, { "unit_id": "qingzhou_raider_south", - "name": "Qingzhou Raider", + "name": "청주 약탈병", "class_id": "bandit", "team": "enemy", "level": 4, @@ -271,7 +273,7 @@ }, { "unit_id": "qingzhou_raider_archer", - "name": "Qingzhou Archer", + "name": "청주 궁병", "class_id": "archer", "team": "enemy", "level": 4, @@ -290,8 +292,8 @@ { "type": "dialogue", "lines": [ - { "speaker": "Scout", "text": "My lord, a fierce warrior has been seen defending villagers east of the ridge." }, - { "speaker": "Cao Cao", "text": "Remember his name. Men who protect the weak are worth more than plunderers." } + { "speaker": "Scout", "display_speaker": "척후", "text": "주공, 동쪽 언덕 너머에서 사나운 무사가 백성을 지킨다는 말이 돌고 있습니다." }, + { "speaker": "Cao Cao", "display_speaker": "조조", "text": "그 이름을 기억해 두어라. 약한 자를 지키는 무사는 약탈자 백 명보다 귀하다." } ] } ] @@ -303,8 +305,8 @@ "join_officers": ["dian_wei"] }, "post_battle_dialogue": [ - { "speaker": "Dian Wei", "text": "You fought the raiders instead of bargaining with them. I can respect that." }, - { "speaker": "Cao Cao", "text": "Then stand with me, Dian Wei. I need warriors who can guard more than their own fame." }, - { "speaker": "Dian Wei", "text": "Give me a place in the line, and I will hold it." } + { "speaker": "Dian Wei", "display_speaker": "전위", "text": "약탈자와 흥정하지 않고 맞서 싸우셨군요. 그런 장수라면 믿을 만합니다." }, + { "speaker": "Cao Cao", "display_speaker": "조조", "text": "그렇다면 내 곁에 서라, 전위. 내게 필요한 것은 제 이름보다 군문을 지킬 무사다." }, + { "speaker": "Dian Wei", "display_speaker": "전위", "text": "대열 한가운데 자리를 주십시오. 제가 그 자리를 지키겠습니다." } ] } diff --git a/tools/smoke_camp_conversation_rewards.gd b/tools/smoke_camp_conversation_rewards.gd index 27e5541..36f2b58 100644 --- a/tools/smoke_camp_conversation_rewards.gd +++ b/tools/smoke_camp_conversation_rewards.gd @@ -3275,7 +3275,7 @@ func _check_qingzhou_branch_camp_conversations(failures: Array[String]) -> void: if not base_scene._camp_conversation_by_id("qingzhou_sishui_stores").is_empty(): failures.append("Qingzhou Sishui stores should be hidden without regroup flag") var merchant: Dictionary = base_scene.state.get_shop_merchant() - if str(merchant.get("name", "")) != "Qingzhou Road Merchant": + if str(merchant.get("name", "")) != "청주 길상인": failures.append("Qingzhou shop merchant name should be present") var merchant_lines: Array = merchant.get("lines", []) if merchant_lines.size() < 2: diff --git a/tools/smoke_result_summary.gd b/tools/smoke_result_summary.gd index 81508f1..3caf9e4 100644 --- a/tools/smoke_result_summary.gd +++ b/tools/smoke_result_summary.gd @@ -70,7 +70,7 @@ func _init() -> void: "saved": true, "pending_choice": true, "next_scenario_id": "002_sishui_gate", - "next_scenario_title": "Qingzhou Campaign" + "next_scenario_title": "청주 평정전" } var pending_choice_text := scene._format_battle_result_summary() _check_contains( diff --git a/tools/smoke_visual_assets.gd b/tools/smoke_visual_assets.gd index 6cab14d..9075e5a 100644 --- a/tools/smoke_visual_assets.gd +++ b/tools/smoke_visual_assets.gd @@ -140,7 +140,7 @@ func _check_battle_visual_data(failures: Array[String]) -> void: var qingzhou_state = BattleStateScript.new() if not qingzhou_state.load_battle("res://data/scenarios/004_qingzhou_campaign.json"): - failures.append("could not load Qingzhou Campaign camp data") + failures.append("could not load 청주 평정전 camp data") else: var qingzhou_conversations: Array = qingzhou_state.get_briefing().get("camp_conversations", []) if qingzhou_conversations.size() != 2: @@ -149,7 +149,7 @@ func _check_battle_visual_data(failures: Array[String]) -> void: _check_camp_conversation(failures, qingzhou_conversations[0], "qingzhou_settlement_council", "officer", "cao_cao") _check_camp_conversation(failures, qingzhou_conversations[1], "qingzhou_village_screen", "officer", "cao_ren") var qingzhou_merchant := qingzhou_state.get_shop_merchant() - if str(qingzhou_merchant.get("name", "")) != "Qingzhou Road Merchant": + if str(qingzhou_merchant.get("name", "")) != "청주 길상인": failures.append("004 shop should expose Qingzhou merchant name") if (qingzhou_merchant.get("lines", []) as Array).size() < 2: failures.append("004 shop should expose merchant flavor lines")