diff --git a/data/scenarios/011_yan_ford_pursuit.json b/data/scenarios/011_yan_ford_pursuit.json index d723c26..42b4772 100644 --- a/data/scenarios/011_yan_ford_pursuit.json +++ b/data/scenarios/011_yan_ford_pursuit.json @@ -1,9 +1,9 @@ { "id": "011_yan_ford_pursuit", - "name": "Yan Ford Pursuit", + "name": "연진 추격전", "objectives": { - "victory": "Defeat Wen Chou's countercharge after his riders commit.", - "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_2_wen_chou_charge" }, @@ -13,23 +13,23 @@ ] }, "briefing": { - "title": "Yan Ford Pursuit", - "location": "Yan Ford, 200 CE", + "title": "연진 추격전", + "location": "연진, 건안 5년", "lines": [ - "Yan Liang's defeat shakes Yuan Shao's forward army, but Wen Chou rides to restore its nerve.", - "Cao Cao moves toward Yan Ford, where the road narrows between wooded banks and the river crossing." + "안량의 패전으로 원소군 선봉은 흔들렸으나, 문추가 말을 몰아 그 기세를 되살리려 한다.", + "조조는 숲이 낀 강둑과 나루 사이로 길이 좁아지는 연진으로 군을 돌린다." ], "conditional_lines": [ { "campaign_flags": { "fortified_white_horse": true }, "lines": [ - "The reinforced White Horse crossing slows Yuan Shao's messengers, buying time to arrange a tighter pursuit line." + "백마 나루의 방비가 원소의 전령을 늦추어, 추격 진형을 더욱 촘촘히 짤 틈을 얻었다." ] }, { "campaign_flags": { "raided_yuan_supplies": true }, "lines": [ - "Raids against Yuan Shao's baggage train leave Wen Chou's riders angry and hungry, but still eager to strike." + "원소의 치중대를 들이친 탓에 문추의 기병은 굶주리고 성났으나, 여전히 돌격할 뜻을 버리지 않았다." ] } ], @@ -38,19 +38,19 @@ "id": "yan_ford_pursuit_council", "group": "officer", "officer_id": "guo_jia", - "label": "Guo Jia - Ford Trap", + "label": "곽가 - 나루의 덫", "speaker": "Guo Jia", - "summary": "Shape the ford road into a charge that Wen Chou cannot safely recall.", + "summary": "나루 길을 문추가 돌이킬 수 없는 돌격로로 빚는다.", "lines": [ { "speaker": "Guo Jia", "side": "right", - "text": "Wen Chou rides to repair pride, not formation. Give him a road that feels open until it closes behind him." + "text": "문추는 진형을 고치러 오는 것이 아니라 체면을 되찾으러 옵니다. 뒤가 닫히기 전까지는 길이 트인 듯 보이게 하십시오." }, { "speaker": "Cao Cao", "side": "left", - "text": "Yan Liang taught Yuan Shao fear. Wen Chou will try to answer with noise. We answer with banks and timing." + "text": "안량은 원소에게 두려움을 가르쳤다. 문추는 함성으로 답하려 하겠지. 우리는 강둑과 때로 답한다." } ] }, @@ -58,19 +58,19 @@ "id": "yan_ford_xiahou_yuan_banks", "group": "officer", "officer_id": "xiahou_yuan", - "label": "Xiahou Yuan - River Banks", + "label": "하후연 - 강둑 척후", "speaker": "Xiahou Yuan", - "summary": "Watch the wooded banks while the center draws Wen Chou forward.", + "summary": "중앙이 문추를 끌어내는 사이 숲 낀 강둑을 살핀다.", "lines": [ { "speaker": "Xiahou Yuan", "side": "right", - "text": "The ford bends the field, but the wooded banks hide arrows. I will keep the scouts moving." + "text": "나루가 전장을 굽히지만, 숲이 낀 강둑에는 화살이 숨어 있습니다. 척후를 계속 돌리겠습니다." }, { "speaker": "Guo Jia", "side": "left", - "text": "Good. A trap fails when it forgets the second path. Watch the bank while the road does its work." + "text": "좋다. 덫은 둘째 길을 잊을 때 깨진다. 길이 제 일을 하는 동안 강둑을 살펴라." } ] }, @@ -78,18 +78,18 @@ "id": "yan_ford_fortified_crossing_medicine", "campaign_flags": { "fortified_white_horse": true }, "group": "topic", - "label": "Fortified Crossing Medicine", - "summary": "Use the stable White Horse crossing to bring field medicine forward.", + "label": "백마 나루 약재", + "summary": "안정된 백마 나루를 거쳐 전장 약재를 끌어온다.", "lines": [ { "speaker": "Cao Ren", "side": "left", - "text": "The fortified crossing behind us is still open. I brought medicine across before Yuan Shao's messengers could stir it." + "text": "뒤편의 백마 나루는 아직 굳게 열려 있습니다. 원소의 전령이 들쑤시기 전에 약재를 건너 보냈습니다." }, { "speaker": "Cao Cao", "side": "right", - "text": "Then give it to the men anchoring the ford. A steady rear makes a narrow road sharper." + "text": "그렇다면 나루를 붙드는 병사들에게 나누어라. 뒤가 든든하면 좁은 길도 칼날이 된다." } ], "effects": [ @@ -97,7 +97,7 @@ "type": "grant_item", "item_id": "panacea", "count": 1, - "text": "The fortified crossing medicine adds a Panacea to the field supplies." + "text": "백마 나루에서 온 약재로 전장 물자에 만능약 1점을 더했다." } ] }, @@ -105,18 +105,18 @@ "id": "yan_ford_raided_supply_beans", "campaign_flags": { "raided_yuan_supplies": true }, "group": "topic", - "label": "Raided Supply Beans", - "summary": "Distribute captured rations from Yuan Shao's disrupted baggage train.", + "label": "노획한 군량콩", + "summary": "흩어진 원소 치중대에서 거둔 군량을 나눈다.", "lines": [ { "speaker": "Xiahou Yuan", "side": "right", - "text": "The raid scattered Yuan Shao's baggage. Some of the beans are already in our sacks, and his riders know it." + "text": "습격으로 원소의 치중대가 흩어졌습니다. 그 콩 일부는 이미 우리 자루에 있고, 저들의 기병도 그 사실을 압니다." }, { "speaker": "Dian Wei", "side": "left", - "text": "Good. Hungry enemies chase harder. Fed soldiers close the road better." + "text": "좋다. 굶주린 적은 더 거칠게 쫓고, 배부른 병사는 길을 더 단단히 막는다." } ], "effects": [ @@ -124,7 +124,7 @@ "type": "grant_item", "item_id": "bean", "count": 1, - "text": "The raided supply beans add a Bean to the field supplies." + "text": "노획한 군량콩으로 전장 물자에 콩 1점을 더했다." } ] } @@ -152,10 +152,10 @@ } ], "merchant": { - "name": "Yan Ford Bank Sutler", + "name": "연진 강둑 야상", "lines": [ - "Keep your purchases high and dry. The ford takes careless sacks before it takes careless men.", - "No heavy loads on the bank road. Beans, medicine, and blades already fitted to the hand." + "사신 물건은 높고 마른 곳에 두십시오. 나루는 부주의한 병사보다 부주의한 자루를 먼저 삼킵니다.", + "강둑 길에는 무거운 짐이 독입니다. 콩, 약, 손에 맞춘 병장만 가져가십시오." ] } }, @@ -225,7 +225,7 @@ }, { "unit_id": "wen_chou_vanguard", - "name": "Wen Chou Vanguard", + "name": "문추 선봉", "class_id": "elite_cavalry", "team": "enemy", "level": 11, @@ -234,7 +234,7 @@ }, { "unit_id": "yan_ford_bridge_guard", - "name": "Yan Ford Guard", + "name": "연진 수비장", "class_id": "guard_captain", "team": "enemy", "level": 10, @@ -243,7 +243,7 @@ }, { "unit_id": "yuan_spear_north", - "name": "Yuan Spearman", + "name": "원소군 창병", "class_id": "infantry", "team": "enemy", "level": 10, @@ -252,7 +252,7 @@ }, { "unit_id": "yuan_spear_south", - "name": "Yuan Spearman", + "name": "원소군 창병", "class_id": "infantry", "team": "enemy", "level": 10, @@ -261,7 +261,7 @@ }, { "unit_id": "yan_ford_archer_north", - "name": "Yan Ford Archer", + "name": "연진 궁병", "class_id": "marksman", "team": "enemy", "level": 10, @@ -270,7 +270,7 @@ }, { "unit_id": "yan_ford_archer_south", - "name": "Yan Ford Archer", + "name": "연진 궁병", "class_id": "marksman", "team": "enemy", "level": 10, @@ -279,7 +279,7 @@ }, { "unit_id": "yuan_field_advisor", - "name": "Yuan Field Advisor", + "name": "원소군 군사", "class_id": "strategist", "team": "enemy", "level": 10, @@ -294,7 +294,7 @@ "once": true, "when": { "type": "battle_start" }, "actions": [ - { "type": "log", "text": "Wen Chou's riders gather near Yan Ford." } + { "type": "log", "text": "문추의 기병이 연진 근처에 모여든다." } ] }, { @@ -305,9 +305,9 @@ { "type": "dialogue", "lines": [ - { "speaker": "Guo Jia", "text": "Wen Chou will not accept Yan Liang's defeat as a warning. He will treat it as an insult." }, - { "speaker": "Cao Cao", "text": "Then leave him a road wide enough to charge and narrow enough to close." }, - { "speaker": "Xiahou Yuan", "text": "The ford bends the field for us. I will watch the wooded banks." } + { "speaker": "Guo Jia", "text": "문추는 안량의 죽음을 경고가 아니라 모욕으로 여길 것입니다." }, + { "speaker": "Cao Cao", "text": "그렇다면 돌격하기에는 넓고, 닫히기에는 좁은 길을 남겨 두어라." }, + { "speaker": "Xiahou Yuan", "text": "나루가 우리 쪽으로 전장을 굽힙니다. 숲 낀 강둑은 제가 살피겠습니다." } ] } ] @@ -320,8 +320,8 @@ { "type": "dialogue", "lines": [ - { "speaker": "Wen Chou", "text": "Yan Liang fell because he was alone. I bring enough horsemen to trample Cao Cao's tricks." }, - { "speaker": "Guo Jia", "text": "Good. Pride has supplied the second wing for us." } + { "speaker": "Wen Chou", "text": "안량은 홀로였기에 쓰러졌다. 나는 조조의 잔꾀를 짓밟을 기병을 데려왔다!" }, + { "speaker": "Guo Jia", "text": "좋군요. 교만이 우리에게 둘째 날개까지 내어 주었습니다." } ] }, { @@ -329,7 +329,7 @@ "deployments": [ { "unit_id": "wen_chou_rider_north", - "name": "Wen Chou Rider", + "name": "문추 기병", "class_id": "cavalry", "team": "enemy", "level": 10, @@ -338,7 +338,7 @@ }, { "unit_id": "wen_chou_rider_south", - "name": "Wen Chou Rider", + "name": "문추 기병", "class_id": "cavalry", "team": "enemy", "level": 10, @@ -357,8 +357,8 @@ { "type": "dialogue", "lines": [ - { "speaker": "Yuan Guard", "text": "Cao Cao has reached the ford. Close the bank behind him!" }, - { "speaker": "Dian Wei", "text": "They picked the wrong bank to close." } + { "speaker": "Yuan Guard", "text": "조조가 나루에 닿았다. 뒤 강둑을 닫아라!" }, + { "speaker": "Dian Wei", "text": "닫을 강둑을 잘못 골랐군." } ] }, { @@ -366,7 +366,7 @@ "deployments": [ { "unit_id": "ford_bank_guard", - "name": "Ford Bank Guard", + "name": "나루 강둑 수비병", "class_id": "infantry", "team": "enemy", "level": 10, @@ -375,7 +375,7 @@ }, { "unit_id": "ford_bank_archer", - "name": "Ford Bank Archer", + "name": "나루 강둑 궁병", "class_id": "archer", "team": "enemy", "level": 10, @@ -391,13 +391,13 @@ "once": true, "when": { "type": "unit_defeated", "unit_ids": ["wen_chou_vanguard"] }, "actions": [ - { "type": "log", "text": "Wen Chou's countercharge collapses at Yan Ford." }, + { "type": "log", "text": "문추의 반격 기병이 연진에서 무너졌다." }, { "type": "dialogue", "lines": [ - { "speaker": "Wen Chou", "text": "Yan Liang... I rode the same road too quickly." }, - { "speaker": "Guo Jia", "text": "The ford has taken both wings from Yuan Shao." }, - { "speaker": "Cao Cao", "text": "Then close the crossing. Guandu is where his numbers must answer us." } + { "speaker": "Wen Chou", "text": "안량... 나 또한 같은 길을 너무 빨리 달렸구나." }, + { "speaker": "Guo Jia", "text": "이 나루가 원소의 두 날개를 모두 거두었습니다." }, + { "speaker": "Cao Cao", "text": "그렇다면 도하로를 닫아라. 관도에서 원소의 숫자가 우리에게 답하게 될 것이다." } ] } ] @@ -410,8 +410,8 @@ { "type": "dialogue", "lines": [ - { "speaker": "Cao Ren", "text": "The fortified crossing behind us holds. Wen Chou cannot expect quick help from White Horse." }, - { "speaker": "Cao Cao", "text": "Then this is his battle alone." } + { "speaker": "Cao Ren", "text": "뒤의 백마 나루는 굳게 버팁니다. 문추가 백마에서 빠른 구원을 바라기는 어렵습니다." }, + { "speaker": "Cao Cao", "text": "그렇다면 이 싸움은 오롯이 그의 몫이다." } ] } ] @@ -424,8 +424,8 @@ { "type": "dialogue", "lines": [ - { "speaker": "Yuan Field Advisor", "text": "The supply carts are still scattered from Cao Cao's raid. The riders are charging hungry." }, - { "speaker": "Wen Chou", "text": "Hunger sharpens men. Forward!" } + { "speaker": "Yuan Field Advisor", "text": "조조의 습격으로 치중 수레가 아직 흩어져 있습니다. 기병들이 굶주린 채 돌격합니다." }, + { "speaker": "Wen Chou", "text": "굶주림은 사내를 날카롭게 한다. 전진!" } ] } ] @@ -438,8 +438,8 @@ { "type": "dialogue", "lines": [ - { "speaker": "Guo Jia", "text": "The ford is nearly sealed. Wen Chou's courage cannot carry him back across it." }, - { "speaker": "Cao Cao", "text": "Finish the countercharge and prepare the Guandu line." } + { "speaker": "Guo Jia", "text": "나루는 거의 봉해졌습니다. 문추의 용맹도 그를 다시 건너게 하지는 못합니다." }, + { "speaker": "Cao Cao", "text": "반격대를 끝내고 관도 방비선을 준비하라." } ] } ] @@ -450,23 +450,23 @@ "items": ["bean", "wine", "war_axe"] }, "post_battle_dialogue": [ - { "speaker": "Xiahou Yuan", "text": "Wen Chou's riders scattered at the ford. Yuan Shao has lost two blades in two strokes." }, - { "speaker": "Guo Jia", "text": "His numbers remain, but their certainty is damaged. That matters before Guandu." }, - { "speaker": "Cao Cao", "text": "Then we choose where the next certainty breaks." } + { "speaker": "Xiahou Yuan", "text": "문추의 기병이 나루에서 흩어졌습니다. 원소는 두 번의 칼질에 두 자루 칼을 잃었습니다." }, + { "speaker": "Guo Jia", "text": "숫자는 여전히 남았으나, 확신이 상했습니다. 관도 앞에서는 그것이 중요합니다." }, + { "speaker": "Cao Cao", "text": "그렇다면 다음 확신이 어디서 꺾일지 우리가 고른다." } ], "post_battle_choices": [ { "id": "secure_guandu_line", - "label": "Secure Guandu Line", - "description": "Cao Cao strengthens the main defensive camps before Yuan Shao commits his full army.", + "label": "관도 방비를 굳힌다", + "description": "원소가 전군을 움직이기 전에 조조가 관도 본영의 방비를 보강한다.", "set_flags": { "secured_guandu_line": true, "scouted_wuchao_depots": false }, "gold": 200, "items": ["iron_armor"] }, { "id": "scout_wuchao_depots", - "label": "Scout Wuchao", - "description": "Scouts follow the broken baggage routes toward Yuan Shao's supply depots.", + "label": "오소를 정찰한다", + "description": "척후가 흩어진 치중로를 따라 원소의 군량고가 있는 오소로 향한다.", "set_flags": { "secured_guandu_line": false, "scouted_wuchao_depots": true }, "gold": 100, "items": ["wine", "war_drum"] diff --git a/data/scenarios/012_guandu_showdown.json b/data/scenarios/012_guandu_showdown.json index 6c56e9a..a7d4706 100644 --- a/data/scenarios/012_guandu_showdown.json +++ b/data/scenarios/012_guandu_showdown.json @@ -1,9 +1,9 @@ { "id": "012_guandu_showdown", - "name": "Guandu Showdown", + "name": "관도 결전", "objectives": { - "victory": "Defeat Yuan Shao's main assault after the full line commits.", - "defeat": "Cao Cao is defeated or the battle reaches Turn 13." + "victory": "원소군 본대가 전열을 펼친 뒤 주공세를 격파하라.", + "defeat": "조조가 퇴각하거나 제13군령에 이른다." }, "conditions": { "victory": { "type": "all_units_defeated", "team": "enemy", "after_event": "turn_4_yuan_main_assault" }, @@ -13,23 +13,23 @@ ] }, "briefing": { - "title": "Guandu Showdown", - "location": "Guandu, 200 CE", + "title": "관도 결전", + "location": "관도, 건안 5년", "lines": [ - "Yuan Shao's vast army presses into Guandu, confident that numbers will crush Cao Cao's thin line.", - "Guo Jia urges patience: hold the camps, expose the rhythm of Yuan Shao's command, and look for the supply wound." + "원소의 대군이 숫자로 조조의 얇은 방비선을 누를 수 있다 믿고 관도로 밀려든다.", + "곽가는 조급함을 경계한다. 영채를 지키고, 원소 지휘의 박자를 드러내며, 군량의 상처를 찾아야 한다." ], "conditional_lines": [ { "campaign_flags": { "secured_guandu_line": true }, "lines": [ - "The defensive camps prepared after Yan Ford give the front line room to bend without breaking." + "연진 뒤에 다져 둔 방어 영채가 전열을 꺾이지 않고 휘어질 여유를 준다." ] }, { "campaign_flags": { "scouted_wuchao_depots": true }, "lines": [ - "Scouts from Yan Ford report unusually heavy traffic toward Wuchao. Yuan Shao's grain may be less protected than his banners." + "연진에서 보낸 척후가 오소로 향하는 수레가 지나치게 많다고 알렸다. 원소의 군량은 깃발만큼 단단히 지켜지지 않을지 모른다." ] } ], @@ -38,19 +38,19 @@ "id": "guandu_main_line_council", "group": "officer", "officer_id": "cao_cao", - "label": "Cao Cao - Main Line", + "label": "조조 - 본영 방비", "speaker": "Cao Cao", - "summary": "Set the rhythm for holding Guandu against Yuan Shao's full army.", + "summary": "원소의 전군을 맞아 관도를 지킬 박자를 정한다.", "lines": [ { "speaker": "Cao Cao", "side": "left", - "text": "Yuan Shao wants numbers to be a storm. A storm still breaks against a wall that knows why it stands." + "text": "원소는 숫자를 폭풍으로 삼으려 한다. 그러나 서야 할 까닭을 아는 성벽은 폭풍도 부순다." }, { "speaker": "Xiahou Dun", "side": "right", - "text": "Then the front holds by count, not pride. I will make the line step back only when ordered." + "text": "그렇다면 앞줄은 혈기가 아니라 명수로 버티겠습니다. 명이 있기 전에는 한 걸음도 물리지 않겠습니다." } ] }, @@ -58,19 +58,19 @@ "id": "guandu_guo_jia_supply_wound", "group": "officer", "officer_id": "guo_jia", - "label": "Guo Jia - Supply Wound", + "label": "곽가 - 군량의 상처", "speaker": "Guo Jia", - "summary": "Watch Yuan Shao's assault for the supply weakness that can decide the campaign.", + "summary": "원소의 공세 속에서 전역을 가를 군량의 약점을 살핀다.", "lines": [ { "speaker": "Guo Jia", "side": "right", - "text": "A large army has more than courage to protect. It has grain roads, signal fires, and arguments between commanders." + "text": "대군이 지켜야 할 것은 용맹만이 아닙니다. 군량길과 봉화, 장수들 사이의 다툼까지 모두 짐입니다." }, { "speaker": "Cao Cao", "side": "left", - "text": "Then Guandu is not only a wall. It is where we make Yuan Shao reveal what feeds him." + "text": "그렇다면 관도는 성벽만이 아니다. 원소가 무엇으로 먹고 서는지 드러내게 할 자리다." } ] }, @@ -78,18 +78,18 @@ "id": "guandu_secured_line_medicine", "campaign_flags": { "secured_guandu_line": true }, "group": "topic", - "label": "Secured Line Medicine", - "summary": "Open the prepared camp stores for field medicine before the main assault.", + "label": "방비선 약재", + "summary": "주공세가 오기 전에 준비한 영채 물자에서 약재를 연다.", "lines": [ { "speaker": "Cao Ren", "side": "left", - "text": "The camps secured after Yan Ford have dry medicine and enough order to send it where the line bends." + "text": "연진 뒤에 정비한 영채에는 마른 약재가 있고, 전열이 휘는 곳으로 보낼 만큼 군율도 서 있습니다." }, { "speaker": "Cao Cao", "side": "right", - "text": "Issue it before Yuan Shao's banners move. A prepared camp should save men before it praises them." + "text": "원소의 깃발이 움직이기 전에 풀어라. 준비된 영채는 병사를 칭찬하기 전에 먼저 살려야 한다." } ], "effects": [ @@ -97,7 +97,7 @@ "type": "grant_item", "item_id": "panacea", "count": 1, - "text": "The secured line medicine adds a Panacea to the field supplies." + "text": "방비선 약재로 전장 물자에 만능약 1점을 더했다." } ] }, @@ -105,18 +105,18 @@ "id": "guandu_wuchao_scout_wine", "campaign_flags": { "scouted_wuchao_depots": true }, "group": "topic", - "label": "Wuchao Scout Wine", - "summary": "Reward the scouts who traced Yuan Shao's grain traffic toward Wuchao.", + "label": "오소 척후 술", + "summary": "오소로 향한 원소의 군량 흐름을 짚어 낸 척후에게 술을 내린다.", "lines": [ { "speaker": "Xiahou Yuan", "side": "right", - "text": "The scouts followed the grain marks far enough to name Wuchao. They came back with horses breathing hard." + "text": "척후가 군량 자국을 따라 오소의 이름까지 짚어 냈습니다. 말들이 거친 숨을 몰아쉬며 돌아왔습니다." }, { "speaker": "Guo Jia", "side": "left", - "text": "Give them wine and fresh orders. A tired scout who found the grain has already moved a whole army." + "text": "술과 새 명을 내려라. 군량을 찾아낸 지친 척후 하나가 이미 한 군대를 움직인 셈이다." } ], "effects": [ @@ -124,7 +124,7 @@ "type": "grant_item", "item_id": "wine", "count": 1, - "text": "The Wuchao scout wine adds Wine to the field supplies." + "text": "오소 척후에게 내린 술 중 일부를 전장 물자에 더했다." } ] } @@ -153,10 +153,10 @@ } ], "merchant": { - "name": "Guandu Camp Sutler", + "name": "관도 영채 야상", "lines": [ - "Buy before Yuan Shao's banners blot out the road. Once the main assault starts, even a bean needs an escort.", - "No loose loads on the front line. Medicine, wine, fitted blades, and armor that can be buckled in one breath." + "원소의 깃발이 길을 덮기 전에 사 두십시오. 주공세가 시작되면 콩 한 알도 호위를 붙여야 합니다.", + "전열에는 헐거운 짐을 둘 수 없습니다. 약, 술, 손에 맞춘 병장, 한숨에 묶을 수 있는 갑옷뿐입니다." ] } }, @@ -228,7 +228,7 @@ }, { "unit_id": "yuan_shao_main_body", - "name": "Yuan Shao Main Body", + "name": "원소 본대", "class_id": "commander", "team": "enemy", "level": 12, @@ -237,7 +237,7 @@ }, { "unit_id": "ju_shou_advisor", - "name": "Ju Shou Advisor", + "name": "저수 군사", "class_id": "military_advisor", "team": "enemy", "level": 12, @@ -247,7 +247,7 @@ }, { "unit_id": "zhang_he_vanguard", - "name": "Zhang He Vanguard", + "name": "장합 선봉", "class_id": "elite_cavalry", "team": "enemy", "level": 12, @@ -256,7 +256,7 @@ }, { "unit_id": "yuan_center_guard", - "name": "Yuan Center Guard", + "name": "원소군 중앙위", "class_id": "guard_captain", "team": "enemy", "level": 11, @@ -265,7 +265,7 @@ }, { "unit_id": "yuan_north_guard", - "name": "Yuan North Guard", + "name": "원소군 북위", "class_id": "infantry", "team": "enemy", "level": 11, @@ -274,7 +274,7 @@ }, { "unit_id": "yuan_south_guard", - "name": "Yuan South Guard", + "name": "원소군 남위", "class_id": "infantry", "team": "enemy", "level": 11, @@ -283,7 +283,7 @@ }, { "unit_id": "guandu_archer_north", - "name": "Guandu Archer", + "name": "관도 궁병", "class_id": "marksman", "team": "enemy", "level": 11, @@ -292,7 +292,7 @@ }, { "unit_id": "guandu_archer_south", - "name": "Guandu Archer", + "name": "관도 궁병", "class_id": "marksman", "team": "enemy", "level": 11, @@ -306,7 +306,7 @@ "once": true, "when": { "type": "battle_start" }, "actions": [ - { "type": "log", "text": "Yuan Shao's main army bears down on Guandu." } + { "type": "log", "text": "원소의 본군이 관도를 향해 짓눌러 온다." } ] }, { @@ -317,9 +317,9 @@ { "type": "dialogue", "lines": [ - { "speaker": "Cao Cao", "text": "Yuan Shao brings more banners than the field can hold." }, - { "speaker": "Guo Jia", "text": "Then each banner must be fed, signaled, and protected. A large army has larger seams." }, - { "speaker": "Xiahou Dun", "text": "Hold the front until those seams show. I understand." } + { "speaker": "Cao Cao", "text": "원소가 전장이 감당할 수 없을 만큼 많은 깃발을 끌고 왔다." }, + { "speaker": "Guo Jia", "text": "그렇다면 깃발마다 먹이고, 알리고, 지켜야 할 것이 있습니다. 대군일수록 틈도 큽니다." }, + { "speaker": "Xiahou Dun", "text": "그 틈이 보일 때까지 앞줄을 버티라는 말씀이군요. 알겠습니다." } ] } ] @@ -332,8 +332,8 @@ { "type": "dialogue", "lines": [ - { "speaker": "Yuan Shao", "text": "Press the camps from both wings. Cao Cao cannot answer everywhere." }, - { "speaker": "Ju Shou", "text": "Steady pressure, my lord. Do not let their small line choose the tempo." } + { "speaker": "Yuan Shao", "text": "양익에서 영채를 압박하라. 조조가 모든 곳에 답할 수는 없다." }, + { "speaker": "Ju Shou", "text": "차분히 누르셔야 합니다, 주공. 저 작은 전열이 박자를 고르게 두지 마십시오." } ] } ] @@ -346,8 +346,8 @@ { "type": "dialogue", "lines": [ - { "speaker": "Cao Ren", "text": "The camps we reinforced are holding. Their first push has spent itself on timber and earth." }, - { "speaker": "Cao Cao", "text": "Good. Let Yuan Shao pay for every step." } + { "speaker": "Cao Ren", "text": "보강한 영채가 버티고 있습니다. 저들의 첫 밀물은 목책과 흙벽에 힘을 쏟았습니다." }, + { "speaker": "Cao Cao", "text": "좋다. 원소가 한 걸음마다 값을 치르게 하라." } ] } ] @@ -360,8 +360,8 @@ { "type": "dialogue", "lines": [ - { "speaker": "Guo Jia", "text": "The supply marks match the Yan Ford reports. Wuchao is feeding this entire assault." }, - { "speaker": "Cao Cao", "text": "Then this battle is not only a wall. It is a lantern pointing toward their granary." } + { "speaker": "Guo Jia", "text": "군량 자국이 연진 보고와 맞아떨어집니다. 오소가 이 공세 전체를 먹이고 있습니다." }, + { "speaker": "Cao Cao", "text": "그렇다면 이 싸움은 성벽만이 아니다. 저들의 군량고를 가리키는 등불이다." } ] } ] @@ -373,14 +373,14 @@ "actions": [ { "type": "set_objective", - "victory": "Defeat Yuan Shao's main body and every committed assault unit.", - "defeat": "Cao Cao is defeated or the battle reaches Turn 13." + "victory": "원소 본대와 투입된 공세 부대를 모두 격파하라.", + "defeat": "조조가 퇴각하거나 제13군령에 이른다." }, { "type": "dialogue", "lines": [ - { "speaker": "Zhang He", "text": "The center still stands. Send the rear cavalry in; break them before they settle." }, - { "speaker": "Guo Jia", "text": "Now the main weight is committed. If we endure this, Yuan Shao must expose his stores." } + { "speaker": "Zhang He", "text": "중앙이 아직 버티고 있다. 후열 기병을 들여보내라. 저들이 자리 잡기 전에 꺾어야 한다." }, + { "speaker": "Guo Jia", "text": "이제 주력이 들어왔습니다. 이것을 버티면 원소는 반드시 군량을 드러내게 됩니다." } ] }, { @@ -388,7 +388,7 @@ "deployments": [ { "unit_id": "yuan_rear_cavalry", - "name": "Yuan Rear Cavalry", + "name": "원소군 후열기병", "class_id": "cavalry", "team": "enemy", "level": 11, @@ -397,7 +397,7 @@ }, { "unit_id": "yuan_north_crossbow", - "name": "Yuan Crossbow", + "name": "원소군 쇠뇌병", "class_id": "archer", "team": "enemy", "level": 11, @@ -406,7 +406,7 @@ }, { "unit_id": "yuan_south_crossbow", - "name": "Yuan Crossbow", + "name": "원소군 쇠뇌병", "class_id": "archer", "team": "enemy", "level": 11, @@ -425,8 +425,8 @@ { "type": "dialogue", "lines": [ - { "speaker": "Yuan Guard", "text": "Cao Cao steps into the center! Close ranks around him." }, - { "speaker": "Dian Wei", "text": "Around him? Then you are around me too." } + { "speaker": "Yuan Guard", "text": "조조가 중앙으로 들어왔다! 그를 둘러싸라!" }, + { "speaker": "Dian Wei", "text": "둘러싼다고? 그렇다면 너희도 나를 둘러싼 셈이다." } ] }, { @@ -434,7 +434,7 @@ "deployments": [ { "unit_id": "yuan_center_spearman", - "name": "Yuan Center Spearman", + "name": "원소군 중앙창병", "class_id": "infantry", "team": "enemy", "level": 11, @@ -443,7 +443,7 @@ }, { "unit_id": "yuan_center_archer", - "name": "Yuan Center Archer", + "name": "원소군 중앙궁병", "class_id": "archer", "team": "enemy", "level": 11, @@ -462,8 +462,8 @@ { "type": "dialogue", "lines": [ - { "speaker": "Guo Jia", "text": "Their assault no longer moves as one army. It moves as arguments." }, - { "speaker": "Cao Cao", "text": "Then answer each argument with steel. Guandu will hold." } + { "speaker": "Guo Jia", "text": "저들의 공세는 더 이상 한 군대로 움직이지 않습니다. 서로 다른 말다툼처럼 움직입니다." }, + { "speaker": "Cao Cao", "text": "그렇다면 말다툼마다 쇠붙이로 답하라. 관도는 버틸 것이다." } ] } ] @@ -474,23 +474,23 @@ "items": ["bean", "wine", "imperial_seal", "yitian_sword"] }, "post_battle_dialogue": [ - { "speaker": "Xiahou Dun", "text": "Yuan Shao's first great push is broken, but his camps still fill the horizon." }, - { "speaker": "Guo Jia", "text": "The horizon eats grain. Wuchao is now more important than the banners before us." }, - { "speaker": "Cao Cao", "text": "Then we decide whether to strike the grain or strengthen the wall before the next tide." } + { "speaker": "Xiahou Dun", "text": "원소의 첫 큰 공세는 꺾였으나, 그의 영채는 아직 지평을 메우고 있습니다." }, + { "speaker": "Guo Jia", "text": "지평을 메운 군대는 군량을 먹습니다. 이제 오소는 눈앞의 깃발보다 중요합니다." }, + { "speaker": "Cao Cao", "text": "그렇다면 다음 물결이 오기 전에 군량을 칠지, 성벽을 더 굳힐지 정해야 한다." } ], "post_battle_choices": [ { "id": "prepare_wuchao_raid", - "label": "Prepare Wuchao Raid", - "description": "Cao Cao commits scouts and fast troops toward Yuan Shao's exposed granaries.", + "label": "오소 기습을 준비한다", + "description": "조조가 척후와 빠른 병력을 원소의 드러난 군량고로 보낸다.", "set_flags": { "prepared_wuchao_raid": true, "strengthened_guandu_defense": false }, "gold": 100, "items": ["wine", "war_drum"] }, { "id": "strengthen_guandu_defense", - "label": "Strengthen Guandu", - "description": "The army reinforces the camps before planning a deeper strike.", + "label": "관도 방비를 더한다", + "description": "더 깊은 기습을 꾀하기 전에 군이 관도 영채를 보강한다.", "set_flags": { "prepared_wuchao_raid": false, "strengthened_guandu_defense": true }, "gold": 250, "items": ["iron_armor"] diff --git a/data/scenarios/013_wuchao_raid.json b/data/scenarios/013_wuchao_raid.json index 5a2216e..60f6591 100644 --- a/data/scenarios/013_wuchao_raid.json +++ b/data/scenarios/013_wuchao_raid.json @@ -1,9 +1,9 @@ { "id": "013_wuchao_raid", - "name": "Wuchao Raid", + "name": "오소 기습전", "objectives": { - "victory": "Reach Wuchao's depot with Cao Cao, then defeat the remaining defenders.", - "defeat": "Cao Cao is defeated or the battle reaches Turn 12." + "victory": "조조가 오소 군량고에 도달한 뒤 남은 수비병을 모두 격파하라.", + "defeat": "조조가 퇴각하거나 제12군령에 이른다." }, "conditions": { "victory": { "type": "all_units_defeated", "team": "enemy", "after_event": "wuchao_depot_burned" }, @@ -13,23 +13,23 @@ ] }, "briefing": { - "title": "Wuchao Raid", - "location": "Wuchao, 200 CE", + "title": "오소 기습전", + "location": "오소, 건안 5년", "lines": [ - "The Guandu line holds, but Yuan Shao's army will not collapse while Wuchao feeds it.", - "Cao Cao leads a night raid toward the granaries, counting on speed, fire, and confusion." + "관도 방비선은 버티고 있으나, 오소가 먹이는 한 원소의 군세는 쉽게 무너지지 않는다.", + "조조는 속도와 불길, 그리고 혼란에 기대어 밤중에 군량고를 향한 기습대를 이끈다." ], "conditional_lines": [ { "campaign_flags": { "prepared_wuchao_raid": true }, "lines": [ - "Scouts placed after the Guandu assault mark a narrow path through the outer camp." + "관도 공세 뒤에 배치한 척후가 외곽 영채를 지나는 좁은 길에 표식을 남겼다." ] }, { "campaign_flags": { "strengthened_guandu_defense": true }, "lines": [ - "The reinforced Guandu camps can withstand a longer absence, but the raid must still finish before dawn." + "보강한 관도 영채는 더 오래 버틸 수 있으나, 기습은 여전히 동트기 전에 끝나야 한다." ] } ], @@ -37,63 +37,63 @@ { "id": "wuchao_night_raid_council", "group": "topic", - "label": "Night Raid Council", + "label": "야습 군의", "speaker": "Guo Jia", - "summary": "Review the depot objective and escape route.", + "summary": "군량고 표적과 퇴로를 다시 짚는다.", "lines": [ - { "speaker": "Guo Jia", "side": "right", "text": "Wuchao feeds Yuan Shao's whole line. Fire there will travel faster than any messenger." }, - { "speaker": "Cao Cao", "side": "left", "text": "Then the first objective is silence. The second is flame. The third is getting back through the panic." }, - { "speaker": "Dian Wei", "side": "right", "text": "Silence, flame, then panic. I can remember that order." } + { "speaker": "Guo Jia", "side": "right", "text": "오소는 원소의 전열 전체를 먹입니다. 그곳의 불길은 어떤 전령보다 빨리 번질 것입니다." }, + { "speaker": "Cao Cao", "side": "left", "text": "그렇다면 첫째는 침묵, 둘째는 불길, 셋째는 혼란 속의 귀환이다." }, + { "speaker": "Dian Wei", "side": "right", "text": "침묵, 불길, 그다음 혼란. 그 순서라면 기억할 수 있습니다." } ] }, { "id": "wuchao_guo_jia_empty_bowl", "group": "officer", "officer_id": "guo_jia", - "label": "Guo Jia - Empty Bowl", + "label": "곽가 - 빈 밥그릇", "speaker": "Guo Jia", - "summary": "Weigh fire against formation.", + "summary": "불길과 진형 사이의 무게를 가늠한다.", "lines": [ - { "speaker": "Guo Jia", "side": "right", "text": "A burned granary wins nothing if our line scatters in the smoke." }, - { "speaker": "Cao Cao", "side": "left", "text": "So we cut the bowl from Yuan Shao's hand, then march out as one blade." } + { "speaker": "Guo Jia", "side": "right", "text": "군량고를 태워도 우리 전열이 연기 속에서 흩어지면 아무것도 얻지 못합니다." }, + { "speaker": "Cao Cao", "side": "left", "text": "그러니 원소의 손에서 밥그릇을 베어 낸 뒤, 한 자루 칼처럼 빠져나간다." } ] }, { "id": "wuchao_fast_raid_supplies", "group": "topic", - "label": "Fast Raid Stores", - "summary": "Claim scout-carried field supplies.", + "label": "속습 보급", + "summary": "척후가 숨겨 둔 전장 물자를 거둔다.", "campaign_flags": { "prepared_wuchao_raid": true }, "lines": [ - { "speaker": "Xiahou Yuan", "side": "right", "text": "The scouts hid dry rations beside the narrow track. Fast riders can carry them without slowing the column." }, - { "speaker": "Cao Cao", "side": "left", "text": "Good. Speed is only useful if it still has breath at the far end." } + { "speaker": "Xiahou Yuan", "side": "right", "text": "척후가 좁은 길가에 마른 군량을 숨겨 두었습니다. 빠른 기병이 대열을 늦추지 않고 나를 수 있습니다." }, + { "speaker": "Cao Cao", "side": "left", "text": "좋다. 빠름도 끝에 숨이 남아 있어야 쓸모가 있다." } ], "effects": [ - { "type": "grant_item", "item_id": "bean", "count": 1, "text": "The raid scouts add a Bean to the field supplies." } + { "type": "grant_item", "item_id": "bean", "count": 1, "text": "기습 척후가 숨겨 둔 군량으로 전장 물자에 콩 1점을 더했다." } ] }, { "id": "wuchao_guandu_reserve_wagon", "group": "topic", - "label": "Guandu Reserve Wagon", - "summary": "Claim medicine from the reinforced camp line.", + "label": "관도 예비수레", + "summary": "보강한 관도 방비선에서 보낸 약재를 받는다.", "campaign_flags": { "strengthened_guandu_defense": true }, "lines": [ - { "speaker": "Cao Ren", "side": "right", "text": "The reinforced camps sent a reserve wagon after us. It carries medicine, not speed." }, - { "speaker": "Guo Jia", "side": "right", "text": "Medicine is speed after the first arrow lands." } + { "speaker": "Cao Ren", "side": "right", "text": "보강한 영채에서 예비 수레를 뒤따라 보냈습니다. 빠르지는 않아도 약재는 싣고 있습니다." }, + { "speaker": "Guo Jia", "side": "right", "text": "첫 화살이 꽂힌 뒤에는 약재 또한 속도입니다." } ], "effects": [ - { "type": "grant_item", "item_id": "panacea", "count": 1, "text": "The Guandu reserve wagon adds a Panacea to the field supplies." } + { "type": "grant_item", "item_id": "panacea", "count": 1, "text": "관도 예비수레의 약재로 전장 물자에 만능약 1점을 더했다." } ] } ] }, "shop": { "merchant": { - "name": "Wuchao Night Trader", + "name": "오소 야상", "lines": [ - "No lanterns, my lord. I wrapped the beans and wine in felt so they make no sound.", - "If you buy armor tonight, wear it before the moon drops. Dawn will make merchants honest and arrows accurate." + "등불은 켜지 않겠습니다, 주공. 콩과 술은 소리 나지 않게 펠트로 감쌌습니다.", + "오늘 밤 갑옷을 사신다면 달이 지기 전에 입으십시오. 새벽은 상인을 정직하게 만들고 화살을 정확하게 만듭니다." ] }, "items": [ @@ -186,7 +186,7 @@ }, { "unit_id": "chunyu_qiong_guard", - "name": "Chunyu Qiong Guard", + "name": "순우경 호위장", "class_id": "guard_captain", "team": "enemy", "level": 13, @@ -195,7 +195,7 @@ }, { "unit_id": "wuchao_granary_guard", - "name": "Granary Guard", + "name": "군량고 수비병", "class_id": "infantry", "team": "enemy", "level": 12, @@ -204,7 +204,7 @@ }, { "unit_id": "wuchao_north_archer", - "name": "Wuchao Archer", + "name": "오소 궁병", "class_id": "marksman", "team": "enemy", "level": 12, @@ -213,7 +213,7 @@ }, { "unit_id": "wuchao_south_archer", - "name": "Wuchao Archer", + "name": "오소 궁병", "class_id": "marksman", "team": "enemy", "level": 12, @@ -222,7 +222,7 @@ }, { "unit_id": "wuchao_camp_advisor", - "name": "Camp Advisor", + "name": "영채 군사", "class_id": "military_advisor", "team": "enemy", "level": 12, @@ -232,7 +232,7 @@ }, { "unit_id": "wuchao_patrol_north", - "name": "Wuchao Patrol", + "name": "오소 순찰기병", "class_id": "cavalry", "team": "enemy", "level": 12, @@ -241,7 +241,7 @@ }, { "unit_id": "wuchao_patrol_south", - "name": "Wuchao Patrol", + "name": "오소 순찰기병", "class_id": "cavalry", "team": "enemy", "level": 12, @@ -255,7 +255,7 @@ "once": true, "when": { "type": "battle_start" }, "actions": [ - { "type": "log", "text": "Cao Cao's raiding force approaches Wuchao under cover of darkness." } + { "type": "log", "text": "조조의 기습대가 밤그늘을 타고 오소에 접근한다." } ] }, { @@ -266,9 +266,9 @@ { "type": "dialogue", "lines": [ - { "speaker": "Cao Cao", "text": "If Wuchao burns, Yuan Shao's numbers become mouths instead of soldiers." }, - { "speaker": "Guo Jia", "text": "Strike the granary first. The defenders will fight harder once they see the flame." }, - { "speaker": "Xiahou Dun", "text": "Then we give them fire before they give us formation." } + { "speaker": "Cao Cao", "text": "오소가 불타면 원소의 숫자는 병사가 아니라 입이 된다." }, + { "speaker": "Guo Jia", "text": "군량고를 먼저 치십시오. 수비병은 불길을 본 뒤에 더 거칠게 싸울 것입니다." }, + { "speaker": "Xiahou Dun", "text": "그렇다면 저들이 진형을 갖추기 전에 우리가 불을 주겠습니다." } ] } ] @@ -281,8 +281,8 @@ { "type": "dialogue", "lines": [ - { "speaker": "Guo Jia", "text": "The scout marks are where they should be. The northern patrol is slower to answer." }, - { "speaker": "Cao Cao", "text": "Then we spend that advantage before dawn spends it for us." } + { "speaker": "Guo Jia", "text": "척후 표식이 제자리에 있습니다. 북쪽 순찰대의 응답이 늦습니다." }, + { "speaker": "Cao Cao", "text": "그렇다면 새벽이 우리 대신 그 이득을 써 버리기 전에 우리가 써야 한다." } ] } ] @@ -295,8 +295,8 @@ { "type": "dialogue", "lines": [ - { "speaker": "Cao Ren", "text": "The Guandu camps remain firm behind us. We can commit fully to the raid." }, - { "speaker": "Cao Cao", "text": "A strong wall is useful because it lets the blade leave the gate." } + { "speaker": "Cao Ren", "text": "뒤의 관도 영채는 여전히 굳건합니다. 기습에 전념하셔도 됩니다." }, + { "speaker": "Cao Cao", "text": "강한 성벽은 칼날이 문밖으로 나갈 수 있게 하기에 쓸모가 있다." } ] } ] @@ -309,8 +309,8 @@ { "type": "dialogue", "lines": [ - { "speaker": "Chunyu Qiong", "text": "Cao Cao is near the stores! Wake the rear camp before the grain catches." }, - { "speaker": "Dian Wei", "text": "Too late to wake quietly." } + { "speaker": "Chunyu Qiong", "text": "조조가 군량고 가까이에 있다! 곡식에 불이 붙기 전에 후영을 깨워라!" }, + { "speaker": "Dian Wei", "text": "조용히 깨우기에는 늦었다." } ] } ] @@ -322,18 +322,18 @@ "actions": [ { "type": "set_objective", - "victory": "Wuchao is burning. Defeat every defender before Yuan Shao can recover the stores.", - "defeat": "Cao Cao is defeated or the battle reaches Turn 12." + "victory": "오소가 불타고 있다. 원소가 군량을 되찾기 전에 모든 수비병을 격파하라.", + "defeat": "조조가 퇴각하거나 제12군령에 이른다." }, { "type": "dialogue", "lines": [ - { "speaker": "Cao Cao", "text": "Light the granaries. Let Yuan Shao see dawn from an empty bowl." }, - { "speaker": "Guo Jia", "text": "Now the raid becomes an escape through panic. Keep formation." } + { "speaker": "Cao Cao", "text": "군량고에 불을 붙여라. 원소가 빈 밥그릇으로 새벽을 보게 하라." }, + { "speaker": "Guo Jia", "text": "이제 기습은 혼란을 뚫고 빠져나가는 일이 되었습니다. 진형을 지키십시오." } ] }, - { "type": "log", "text": "Usable Wuchao stores are seized before the granaries burn." }, - { "type": "grant_gold", "amount": 200, "text": "Wuchao's captured pay chest yields 200 gold." }, + { "type": "log", "text": "불이 번지기 전, 쓸 만한 오소 물자를 거두었다." }, + { "type": "grant_gold", "amount": 200, "text": "오소에서 노획한 군자금 200냥을 거두었다." }, { "type": "grant_items", "items": [ @@ -346,7 +346,7 @@ "deployments": [ { "unit_id": "wuchao_rear_guard", - "name": "Wuchao Rear Guard", + "name": "오소 후영 수비장", "class_id": "guard_captain", "team": "enemy", "level": 12, @@ -355,7 +355,7 @@ }, { "unit_id": "wuchao_rear_rider", - "name": "Wuchao Rear Rider", + "name": "오소 후영 기병", "class_id": "cavalry", "team": "enemy", "level": 12, @@ -374,8 +374,8 @@ { "type": "dialogue", "lines": [ - { "speaker": "Guo Jia", "text": "Smoke is rising above the camp. Yuan Shao's army will feel this before his messengers explain it." }, - { "speaker": "Cao Cao", "text": "Then leave no guard behind to put the fire out." } + { "speaker": "Guo Jia", "text": "연기가 영채 위로 오릅니다. 전령이 설명하기 전에 원소군이 먼저 느낄 것입니다." }, + { "speaker": "Cao Cao", "text": "그렇다면 불을 끌 수비병을 하나도 남기지 마라." } ] } ] @@ -386,23 +386,23 @@ "items": ["bean", "wine", "war_drum", "black_tortoise_robe"] }, "post_battle_dialogue": [ - { "speaker": "Xiahou Dun", "text": "Wuchao burns. Yuan Shao's army will wake hungry." }, - { "speaker": "Guo Jia", "text": "Hunger breaks pride more cleanly than argument." }, - { "speaker": "Cao Cao", "text": "Now Guandu turns from endurance to pursuit." } + { "speaker": "Xiahou Dun", "text": "오소가 불탑니다. 원소군은 굶주린 채 깨어날 것입니다." }, + { "speaker": "Guo Jia", "text": "굶주림은 논변보다 깨끗하게 교만을 꺾습니다." }, + { "speaker": "Cao Cao", "text": "이제 관도는 버티는 싸움에서 추격하는 싸움으로 바뀐다." } ], "post_battle_choices": [ { "id": "press_yuan_rout", - "label": "Press the Rout", - "description": "Cao Cao prepares to chase Yuan Shao's shaken army before it reforms.", + "label": "패주를 몰아친다", + "description": "조조가 원소의 흔들린 군세가 다시 뭉치기 전에 추격을 준비한다.", "set_flags": { "pressed_yuan_rout": true, "secured_wuchao_stores": false }, "gold": 100, "items": ["war_drum"] }, { "id": "secure_wuchao_stores", - "label": "Secure Stores", - "description": "The army gathers usable supplies from Wuchao before pursuing.", + "label": "군량을 확보한다", + "description": "추격에 나서기 전, 군이 오소에서 쓸 만한 물자를 거둔다.", "set_flags": { "pressed_yuan_rout": false, "secured_wuchao_stores": true }, "gold": 300, "items": ["bean", "wine"] diff --git a/scripts/scenes/battle_scene.gd b/scripts/scenes/battle_scene.gd index 3ab8402..bf2d6cb 100644 --- a/scripts/scenes/battle_scene.gd +++ b/scripts/scenes/battle_scene.gd @@ -120,6 +120,12 @@ const SPEAKER_DISPLAY_NAMES := { "Gao Shun": "고순", "Lu Bu": "여포", "Yan Liang": "안량", + "Wen Chou": "문추", + "Yuan Shao": "원소", + "Ju Shou": "저수", + "Chunyu Qiong": "순우경", + "Yuan Guard": "원소군 호위병", + "Yuan Field Advisor": "원소군 군사", "Puyang Night Trader": "복양 야상", "Dingtao Field Sutler": "정도 야상", "Escort Road Sutler": "호송 야상", @@ -151,6 +157,12 @@ const SPEAKER_CANONICAL_NAMES := { "고순": "Gao Shun", "여포": "Lu Bu", "안량": "Yan Liang", + "문추": "Wen Chou", + "원소": "Yuan Shao", + "저수": "Ju Shou", + "순우경": "Chunyu Qiong", + "원소군 호위병": "Yuan Guard", + "원소군 군사": "Yuan Field Advisor", "원소 척후": "Yuan Scout", "천자 금위": "Imperial Guard", "완성 척후": "Wan Scout" diff --git a/tools/smoke_camp_conversation_rewards.gd b/tools/smoke_camp_conversation_rewards.gd index 9e8032e..a0abd27 100644 --- a/tools/smoke_camp_conversation_rewards.gd +++ b/tools/smoke_camp_conversation_rewards.gd @@ -828,7 +828,7 @@ func _check_yan_ford_branch_camp_conversations(failures: Array[String]) -> void: if not base_scene._camp_conversation_by_id(YAN_FORD_RAIDED_CONVERSATION_ID).is_empty(): failures.append("Yan Ford raided supply beans should be hidden without raided Yuan supplies flag") var merchant: Dictionary = base_scene.state.get_shop_merchant() - if str(merchant.get("name", "")) != "Yan Ford Bank Sutler": + if str(merchant.get("name", "")) != "연진 강둑 야상": failures.append("Yan Ford shop merchant name should be present") var merchant_lines: Array = merchant.get("lines", []) if merchant_lines.size() < 2: @@ -910,7 +910,7 @@ func _check_guandu_branch_camp_conversations(failures: Array[String]) -> void: if not base_scene._camp_conversation_by_id(GUANDU_SCOUTED_CONVERSATION_ID).is_empty(): failures.append("Guandu Wuchao scout wine should be hidden without scouted Wuchao flag") var merchant: Dictionary = base_scene.state.get_shop_merchant() - if str(merchant.get("name", "")) != "Guandu Camp Sutler": + if str(merchant.get("name", "")) != "관도 영채 야상": failures.append("Guandu shop merchant name should be present") var merchant_lines: Array = merchant.get("lines", []) if merchant_lines.size() < 2: @@ -3357,7 +3357,7 @@ func _check_wuchao_branch_camp_conversations(failures: Array[String]) -> void: if not base_scene._camp_conversation_by_id("wuchao_guandu_reserve_wagon").is_empty(): failures.append("Wuchao reserve wagon should be hidden without the strengthened defense flag") var merchant: Dictionary = base_scene.state.get_shop_merchant() - if str(merchant.get("name", "")) != "Wuchao Night Trader": + if str(merchant.get("name", "")) != "오소 야상": failures.append("Wuchao shop merchant name should be present") var merchant_lines: Array = merchant.get("lines", []) if merchant_lines.size() < 2: diff --git a/tools/smoke_event_gold_pickups.gd b/tools/smoke_event_gold_pickups.gd index 1e86421..a59a509 100644 --- a/tools/smoke_event_gold_pickups.gd +++ b/tools/smoke_event_gold_pickups.gd @@ -62,7 +62,7 @@ func _check_wuchao_gold_pickup_persists_on_victory(failures: Array[String]) -> v if state.get_battle_gold_reward() != 200: failures.append("Wuchao depot should add 200 battle gold, got %d" % state.get_battle_gold_reward()) - if not logs.has("Wuchao's captured pay chest yields 200 gold."): + if not logs.has("오소에서 노획한 군자금 200냥을 거두었다."): failures.append("Wuchao gold pickup log missing") if not feedback.has("cao_cao_ch13|+200냥|gold"): failures.append("Wuchao gold pickup feedback missing") diff --git a/tools/smoke_event_item_pickups.gd b/tools/smoke_event_item_pickups.gd index e72a104..c9a011c 100644 --- a/tools/smoke_event_item_pickups.gd +++ b/tools/smoke_event_item_pickups.gd @@ -46,7 +46,7 @@ func _check_wuchao_depot_pickup(failures: Array[String]) -> void: failures.append("Wuchao depot should grant 콩 2점: before %s after %s" % [str(before_inventory), str(after_inventory)]) if int(after_inventory.get("wine", 0)) != int(before_inventory.get("wine", 0)) + 1: failures.append("Wuchao depot should grant 술 1점: before %s after %s" % [str(before_inventory), str(after_inventory)]) - if not logs.has("Usable Wuchao stores are seized before the granaries burn."): + if not logs.has("불이 번지기 전, 쓸 만한 오소 물자를 거두었다."): failures.append("Wuchao depot pickup log missing") if not logs.has("전리품: 콩 2점."): failures.append("Bean pickup receipt log missing") diff --git a/tools/smoke_visual_assets.gd b/tools/smoke_visual_assets.gd index 60d6271..67928f9 100644 --- a/tools/smoke_visual_assets.gd +++ b/tools/smoke_visual_assets.gd @@ -576,7 +576,7 @@ func _check_battle_visual_data(failures: Array[String]) -> void: _check_camp_conversation(failures, yan_ford_conversations[0], "yan_ford_pursuit_council", "officer", "guo_jia") _check_camp_conversation(failures, yan_ford_conversations[1], "yan_ford_xiahou_yuan_banks", "officer", "xiahou_yuan") var yan_ford_merchant := yan_ford_state.get_shop_merchant() - if str(yan_ford_merchant.get("name", "")) != "Yan Ford Bank Sutler": + if str(yan_ford_merchant.get("name", "")) != "연진 강둑 야상": failures.append("011 shop should expose Yan Ford merchant name") if (yan_ford_merchant.get("lines", []) as Array).size() < 2: failures.append("011 shop should expose merchant flavor lines") @@ -637,7 +637,7 @@ func _check_battle_visual_data(failures: Array[String]) -> void: _check_camp_conversation(failures, guandu_conversations[0], "guandu_main_line_council", "officer", "cao_cao") _check_camp_conversation(failures, guandu_conversations[1], "guandu_guo_jia_supply_wound", "officer", "guo_jia") var guandu_merchant := guandu_state.get_shop_merchant() - if str(guandu_merchant.get("name", "")) != "Guandu Camp Sutler": + if str(guandu_merchant.get("name", "")) != "관도 영채 야상": failures.append("012 shop should expose Guandu merchant name") if (guandu_merchant.get("lines", []) as Array).size() < 2: failures.append("012 shop should expose merchant flavor lines") @@ -2731,6 +2731,9 @@ func _check_ancient_ui_theme(failures: Array[String]) -> void: if scene.dialogue_speaker_label == null or scene.dialogue_speaker_label.text != "조조": failures.append("dialogue speaker label should render localized display_speaker") scene._hide_dialogue_panel() + var enemy_lines := scene._normalized_dialogue_lines([{"speaker": "Wen Chou", "text": "전진!"}]) + if enemy_lines.is_empty() or str((enemy_lines[0] as Dictionary).get("speaker", "")) != "문추": + failures.append("dialogue normalization should localize enemy speaker names") var right_lines := scene._normalized_dialogue_lines([{"speaker": "Xiahou Dun", "display_speaker": "하후돈", "side": "right", "text": "우익에서 응하겠습니다."}]) if right_lines.is_empty(): failures.append("dialogue normalization should keep right-side lines")