diff --git a/data/scenarios/014_cangting_pursuit.json b/data/scenarios/014_cangting_pursuit.json index cfb0625..585e1f1 100644 --- a/data/scenarios/014_cangting_pursuit.json +++ b/data/scenarios/014_cangting_pursuit.json @@ -1,9 +1,9 @@ { "id": "014_cangting_pursuit", - "name": "Cangting Pursuit", + "name": "창정 추격전", "objectives": { - "victory": "Defeat Yuan Shao's rear guard after the retreat line rallies.", - "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_3_yuan_rally" }, @@ -13,23 +13,23 @@ ] }, "briefing": { - "title": "Cangting Pursuit", - "location": "Cangting, 201 CE", + "title": "창정 추격전", + "location": "창정, 건안 6년", "lines": [ - "With Wuchao destroyed, Yuan Shao's great army breaks into columns of wounded pride and hungry soldiers.", - "Cao Cao pursues the retreating rear guard before it can gather enough order to shield the northern crossings." + "오소의 군량이 재가 되자 원소의 대군은 상처 입은 위세와 굶주린 병사들의 행렬로 흩어졌다.", + "조조는 북쪽 나루를 막을 기강이 다시 서기 전에 창정의 후위대를 추격한다." ], "conditional_lines": [ { "campaign_flags": { "pressed_yuan_rout": true }, "lines": [ - "The army gave Yuan Shao no room to breathe after Wuchao, and the rear guard is already fraying." + "오소 뒤에도 원소에게 숨 돌릴 틈을 주지 않았으니, 후위의 줄도 이미 풀리고 있다." ] }, { "campaign_flags": { "secured_wuchao_stores": true }, "lines": [ - "Captured stores from Wuchao keep the pursuit fed, letting Cao Cao press north without stretching the supply train." + "오소에서 거둔 군량이 추격군을 먹인다. 보급 행렬을 늘리지 않고도 조조는 북상할 수 있다." ] } ], @@ -37,24 +37,24 @@ { "id": "cangting_pursuit_council", "group": "topic", - "label": "Pursuit Council", + "label": "추격 군의", "speaker": "Cao Cao", - "summary": "Set the pace for striking Yuan Shao's retreating rear guard.", + "summary": "원소의 퇴각 후위를 칠 추격 속도를 정한다.", "lines": [ { "speaker": "Cao Cao", "side": "left", - "text": "Wuchao burned their grain. Cangting must burn the belief that retreat can become order." + "text": "오소는 저들의 군량을 태웠다. 창정에서는 퇴각이 다시 진세가 될 수 있다는 믿음을 태워야 한다." }, { "speaker": "Xiahou Dun", "side": "right", - "text": "Then we do not chase noise. We strike the soldiers still listening to commands." + "text": "그렇다면 소란을 쫓지 말고, 아직 명을 듣는 병졸부터 쳐야 합니다." }, { "speaker": "Guo Jia", "side": "right", - "text": "A broken army still has a spine if Zhang He holds the rear. Break that, and the rest becomes road dust." + "text": "패군에도 장합이 후위를 잡으면 등골이 남습니다. 그 등골을 꺾으면 나머지는 길먼지가 됩니다." } ] }, @@ -62,19 +62,19 @@ "id": "cangting_guo_jia_rearguard", "group": "officer", "officer_id": "guo_jia", - "label": "Guo Jia - Rear Guard", + "label": "곽가 - 후위의 기강", "speaker": "Guo Jia", - "summary": "Read Zhang He's discipline before the pursuit closes.", + "summary": "추격이 닿기 전에 장합의 기강을 읽는다.", "lines": [ { "speaker": "Guo Jia", "side": "right", - "text": "Most of Yuan Shao's men are running from hunger. Zhang He is running toward duty." + "text": "원소의 병사들은 굶주림을 피해 달아납니다. 장합만은 직분을 향해 달리고 있습니다." }, { "speaker": "Cao Cao", "side": "left", - "text": "A man who can still choose duty in a rout is worth watching." + "text": "패주 속에서도 직분을 택하는 자라면 눈여겨볼 만하다." } ] }, @@ -82,18 +82,18 @@ "id": "cangting_fast_pursuit_beans", "campaign_flags": { "pressed_yuan_rout": true }, "group": "topic", - "label": "Fast Pursuit Rations", - "summary": "Claim the light rations packed for a forced pursuit.", + "label": "속추 군량", + "summary": "강행 추격을 위해 꾸린 가벼운 군량을 거둔다.", "lines": [ { "speaker": "Xiahou Yuan", "side": "right", - "text": "The riders packed beans instead of baggage. They can eat in the saddle and keep Yuan Shao looking over his shoulder." + "text": "기병들이 짐 대신 콩을 챙겼습니다. 말 위에서 씹으며 원소가 계속 뒤돌아보게 만들 수 있습니다." }, { "speaker": "Cao Cao", "side": "left", - "text": "Good. A pursuit that pauses to cook has already become a parade." + "text": "좋다. 솥을 걸려고 멈춘 추격은 이미 행렬이 된 것이다." } ], "effects": [ @@ -101,7 +101,7 @@ "type": "grant_item", "item_id": "bean", "count": 1, - "text": "The fast pursuit rations add a Bean to the field supplies." + "text": "속추 군량에서 콩 1점을 전장 물자에 더했다." } ] }, @@ -109,18 +109,18 @@ "id": "cangting_wuchao_store_medicine", "campaign_flags": { "secured_wuchao_stores": true }, "group": "topic", - "label": "Wuchao Store Medicine", - "summary": "Claim medicine sorted from the captured Wuchao stores.", + "label": "오소 창고 약재", + "summary": "오소 창고에서 가려낸 약재를 거둔다.", "lines": [ { "speaker": "Cao Ren", "side": "right", - "text": "The captured Wuchao stores held more than grain. The physicians sorted clean medicine before the march resumed." + "text": "빼앗은 오소 창고에는 군량만 있지 않았습니다. 의관들이 행군 재개 전에 깨끗한 약재를 골라 두었습니다." }, { "speaker": "Guo Jia", "side": "left", - "text": "Then the stores have bought us speed twice: once by starving Yuan Shao, once by keeping our wounded moving." + "text": "그렇다면 그 창고는 두 번 속도를 사 주었군. 한 번은 원소를 굶겨서, 한 번은 우리 부상병을 걷게 해서." } ], "effects": [ @@ -128,7 +128,7 @@ "type": "grant_item", "item_id": "panacea", "count": 1, - "text": "The Wuchao store medicine adds a Panacea to the field supplies." + "text": "오소 창고 약재에서 만능약 1점을 전장 물자에 더했다." } ] } @@ -136,10 +136,10 @@ }, "shop": { "merchant": { - "name": "Cangting Road Sutler", + "name": "창정 길목 야상", "lines": [ - "The road north is full of abandoned Yuan packs. I sell only what can survive a pursuit.", - "Buy before the rear guard rallies. Once Zhang He steadies them, even a wine jar will need armor." + "북쪽 길에는 원소군이 버린 짐이 널렸습니다. 추격길을 버틸 물건만 팔지요.", + "후위가 다시 뭉치기 전에 사 두십시오. 장합이 줄을 세우면 술동이에도 갑옷이 필요할 겁니다." ] }, "items": [ @@ -231,7 +231,7 @@ }, { "unit_id": "yuan_shao_rearguard", - "name": "Yuan Shao Rear Guard", + "name": "원소 후위대", "class_id": "commander", "team": "enemy", "level": 13, @@ -240,7 +240,7 @@ }, { "unit_id": "zhang_he_rearguard", - "name": "Zhang He Rearguard", + "name": "장합 후위대", "class_id": "elite_cavalry", "team": "enemy", "level": 13, @@ -249,7 +249,7 @@ }, { "unit_id": "yuan_rally_advisor", - "name": "Yuan Rally Advisor", + "name": "원소 수습군사", "class_id": "military_advisor", "team": "enemy", "level": 13, @@ -259,7 +259,7 @@ }, { "unit_id": "cangting_center_guard", - "name": "Cangting Guard", + "name": "창정 수비병", "class_id": "guard_captain", "team": "enemy", "level": 12, @@ -268,7 +268,7 @@ }, { "unit_id": "cangting_north_guard", - "name": "Cangting Guard", + "name": "창정 수비병", "class_id": "infantry", "team": "enemy", "level": 12, @@ -277,7 +277,7 @@ }, { "unit_id": "cangting_south_guard", - "name": "Cangting Guard", + "name": "창정 수비병", "class_id": "infantry", "team": "enemy", "level": 12, @@ -286,7 +286,7 @@ }, { "unit_id": "cangting_archer_north", - "name": "Cangting Archer", + "name": "창정 궁병", "class_id": "marksman", "team": "enemy", "level": 12, @@ -295,7 +295,7 @@ }, { "unit_id": "cangting_archer_south", - "name": "Cangting Archer", + "name": "창정 궁병", "class_id": "marksman", "team": "enemy", "level": 12, @@ -309,7 +309,7 @@ "once": true, "when": { "type": "battle_start" }, "actions": [ - { "type": "log", "text": "Yuan Shao's retreating army tries to rally near Cangting." } + { "type": "log", "text": "원소의 패군이 창정 부근에서 다시 진세를 세우려 한다." } ] }, { @@ -320,9 +320,9 @@ { "type": "dialogue", "lines": [ - { "speaker": "Cao Cao", "text": "Wuchao broke their hunger. Cangting must break their confidence." }, - { "speaker": "Guo Jia", "text": "Zhang He holds the rear with more discipline than the rest. If he wavers, the rout becomes a road." }, - { "speaker": "Xiahou Yuan", "text": "Then we strike the disciplined men first." } + { "speaker": "Cao Cao", "text": "오소가 저들의 배를 꺾었다. 창정에서는 저들의 마음을 꺾어야 한다." }, + { "speaker": "Guo Jia", "text": "장합은 다른 자들보다 기강 있게 후위를 붙잡고 있습니다. 그가 흔들리면 패주는 그대로 길이 됩니다." }, + { "speaker": "Xiahou Yuan", "text": "그렇다면 기강 있는 자부터 먼저 친다." } ] } ] @@ -335,8 +335,8 @@ { "type": "dialogue", "lines": [ - { "speaker": "Xiahou Dun", "text": "Our pursuit caught them before their wagons even formed a wall." }, - { "speaker": "Cao Cao", "text": "Momentum is a weapon. Keep it sharp." } + { "speaker": "Xiahou Dun", "text": "우리 추격이 저들의 수레가 장벽을 이루기 전에 닿았습니다." }, + { "speaker": "Cao Cao", "text": "기세도 병장이다. 무디게 두지 마라." } ] } ] @@ -349,8 +349,8 @@ { "type": "dialogue", "lines": [ - { "speaker": "Guo Jia", "text": "The Wuchao stores are feeding our own pursuit now. Yuan Shao pays for both armies." }, - { "speaker": "Cao Cao", "text": "A pleasant economy." } + { "speaker": "Guo Jia", "text": "오소 창고가 이제 우리 추격군을 먹이고 있습니다. 원소가 양군의 군량값을 내는 셈입니다." }, + { "speaker": "Cao Cao", "text": "흐뭇한 셈법이군." } ] } ] @@ -362,14 +362,14 @@ "actions": [ { "type": "set_objective", - "victory": "Defeat Yuan Shao's rallied rear guard and every covering unit.", - "defeat": "Cao Cao is defeated or the battle reaches Turn 13." + "victory": "다시 모인 원소 후위와 엄호 부대를 모두 격파하라.", + "defeat": "조조가 퇴각하거나 제13군령에 이른다." }, { "type": "dialogue", "lines": [ - { "speaker": "Zhang He", "text": "Hold the road. If the rear collapses, the whole army becomes fugitives." }, - { "speaker": "Guo Jia", "text": "He sees the truth. That makes him dangerous, and useful." } + { "speaker": "Zhang He", "text": "길을 지켜라. 후위가 무너지면 전군이 도망자일 뿐이다." }, + { "speaker": "Guo Jia", "text": "진실을 보는군. 그래서 위험하고, 또한 쓸 만하다." } ] }, { @@ -377,7 +377,7 @@ "deployments": [ { "unit_id": "yuan_rout_rider_north", - "name": "Rout Rider", + "name": "패주 기병", "class_id": "cavalry", "team": "enemy", "level": 12, @@ -386,7 +386,7 @@ }, { "unit_id": "yuan_rout_rider_south", - "name": "Rout Rider", + "name": "패주 기병", "class_id": "cavalry", "team": "enemy", "level": 12, @@ -405,8 +405,8 @@ { "type": "dialogue", "lines": [ - { "speaker": "Yuan Guard", "text": "Cao Cao is in the center road. Close the retreat line behind him!" }, - { "speaker": "Dian Wei", "text": "Try closing it from the ground." } + { "speaker": "Yuan Guard", "text": "조조가 중앙 길로 들었다. 뒤의 퇴각선을 닫아라!" }, + { "speaker": "Dian Wei", "text": "땅바닥에 누워서 닫아 보거라." } ] }, { @@ -414,7 +414,7 @@ "deployments": [ { "unit_id": "cangting_road_guard", - "name": "Road Guard", + "name": "길목 수비병", "class_id": "infantry", "team": "enemy", "level": 12, @@ -423,7 +423,7 @@ }, { "unit_id": "cangting_road_archer", - "name": "Road Archer", + "name": "길목 궁병", "class_id": "archer", "team": "enemy", "level": 12, @@ -442,8 +442,8 @@ { "type": "dialogue", "lines": [ - { "speaker": "Guo Jia", "text": "Zhang He is guarding a lord who no longer listens to his guards." }, - { "speaker": "Cao Cao", "text": "Then let him see which camp rewards judgment." } + { "speaker": "Guo Jia", "text": "장합은 이제 호위의 말을 듣지 않는 주군을 지키고 있습니다." }, + { "speaker": "Cao Cao", "text": "그렇다면 판단을 알아주는 진영이 어디인지 보게 해라." } ] } ] @@ -455,23 +455,23 @@ "join_officers": ["zhang_he"] }, "post_battle_dialogue": [ - { "speaker": "Zhang He", "text": "Yuan Shao would rather lose an army than hear the men who tried to save it." }, - { "speaker": "Cao Cao", "text": "Then serve where clear eyes are useful." }, - { "speaker": "Guo Jia", "text": "Cangting breaks the pursuit open. The Yuan heirs will now fight over what remains." } + { "speaker": "Zhang He", "text": "원소는 군대를 잃더라도 그것을 구하려 한 자의 말을 듣지 않으려 합니다." }, + { "speaker": "Cao Cao", "text": "그렇다면 맑은 눈이 쓰이는 곳에서 섬겨라." }, + { "speaker": "Guo Jia", "text": "창정에서 추격의 길이 열렸습니다. 이제 원씨 형제들은 남은 것을 두고 다툴 것입니다." } ], "post_battle_choices": [ { "id": "advance_to_ye", - "label": "Advance to Ye", - "description": "Cao Cao prepares to press toward the Yuan heartland before the heirs can settle.", + "label": "업성으로 진군", + "description": "원씨 형제들이 숨을 고르기 전에 조조가 원씨 본거지로 압박해 들어간다.", "set_flags": { "advanced_to_ye": true, "secured_hebei_crossings": false }, "gold": 100, "items": ["war_drum"] }, { "id": "secure_hebei_crossings", - "label": "Secure Crossings", - "description": "The army consolidates river crossings and supply lanes before moving deeper north.", + "label": "하북 나루 확보", + "description": "군세가 더 깊이 북상하기 전에 나루와 보급로를 다진다.", "set_flags": { "advanced_to_ye": false, "secured_hebei_crossings": true }, "gold": 300, "items": ["imperial_seal"] diff --git a/data/scenarios/015_ye_campaign.json b/data/scenarios/015_ye_campaign.json index 9a7f18f..63e6a94 100644 --- a/data/scenarios/015_ye_campaign.json +++ b/data/scenarios/015_ye_campaign.json @@ -1,9 +1,9 @@ { "id": "015_ye_campaign", - "name": "Ye Campaign", + "name": "업성 외곽전", "objectives": { - "victory": "Defeat the Yuan heirs' outer defense after their split command reveals itself.", - "defeat": "Cao Cao is defeated or the battle reaches Turn 14." + "victory": "원씨 형제의 지휘 균열이 드러난 뒤 업성 외곽 수비대를 격파하라.", + "defeat": "조조가 퇴각하거나 제14군령에 이른다." }, "conditions": { "victory": { "type": "all_units_defeated", "team": "enemy", "after_event": "turn_3_yuan_heir_split" }, @@ -13,23 +13,23 @@ ] }, "briefing": { - "title": "Ye Campaign", - "location": "Ye Outskirts, 202 CE", + "title": "업성 외곽전", + "location": "업성 외곽, 건안 7년", "lines": [ - "Yuan Shao's heirs inherit banners, grudges, and a northern capital that cannot obey two masters.", - "Cao Cao advances toward Ye, while Zhang He explains where the Yuan defense is strong and where pride has hollowed it out." + "원소의 아들들은 깃발과 원한, 두 주인을 섬길 수 없는 북방의 도읍을 물려받았다.", + "조조가 업성으로 나아가고, 장합은 원씨 수비가 단단한 곳과 교만으로 비어 버린 곳을 짚어낸다." ], "conditional_lines": [ { "campaign_flags": { "advanced_to_ye": true }, "lines": [ - "The rapid march from Cangting catches Yuan Tan's scouts arguing over orders instead of watching the road." + "창정에서 이어진 급행군은 길을 살피지 않고 명령을 다투던 원담의 척후를 덮친다." ] }, { "campaign_flags": { "secured_hebei_crossings": true }, "lines": [ - "Secured crossings behind the army keep Cao Cao's supply line steady as the campaign enters Yuan territory." + "뒤편 나루가 굳게 잡혀 조조의 보급선은 원씨 땅으로 들어서도 흔들리지 않는다." ] } ], @@ -37,24 +37,24 @@ { "id": "ye_outer_council", "group": "topic", - "label": "Outer Defense Council", + "label": "외성 방비 군의", "speaker": "Cao Cao", - "summary": "Set the plan for breaking the Yuan heirs' divided outer defense.", + "summary": "갈라진 원씨 형제의 외곽 수비를 깰 계책을 정한다.", "lines": [ { "speaker": "Cao Cao", "side": "left", - "text": "Ye is not guarded by one mind. Yuan Tan and Yuan Shang share walls, not trust." + "text": "업성은 한마음으로 지켜지는 성이 아니다. 원담과 원상은 성벽을 나눌 뿐 믿음은 나누지 않는다." }, { "speaker": "Guo Jia", "side": "right", - "text": "Then the wall is stone, but the command is paper. We strike where the orders overlap." + "text": "그렇다면 성벽은 돌이나 군령은 종이입니다. 명령이 겹치는 곳을 치면 됩니다." }, { "speaker": "Zhang He", "side": "right", - "text": "Their outer guard obeys names before signals. Make two names answer one alarm, and the line will hesitate." + "text": "저들의 외곽 수비는 신호보다 이름을 먼저 따릅니다. 하나의 경보에 두 이름이 답하게 만들면 전열은 머뭇거립니다." } ] }, @@ -62,24 +62,24 @@ "id": "ye_zhang_he_city_map", "group": "officer", "officer_id": "zhang_he", - "label": "Zhang He - City Map", + "label": "장합 - 업성 길도", "speaker": "Zhang He", - "summary": "Study Ye's outer roads with Zhang He before the assault.", + "summary": "공격 전에 장합과 업성 외곽 길을 살핀다.", "lines": [ { "speaker": "Zhang He", "side": "right", - "text": "The center road looks direct because Yuan Shang wants attackers to think with their feet." + "text": "중앙 길이 곧아 보이는 것은 원상이 공격자가 발로만 생각하기를 바라기 때문입니다." }, { "speaker": "Cao Cao", "side": "left", - "text": "And what does a commander think with?" + "text": "그럼 장수는 무엇으로 생각하느냐?" }, { "speaker": "Zhang He", "side": "right", - "text": "With the road the enemy forgot to fear." + "text": "적이 두려워하기를 잊은 길로 생각합니다." } ] }, @@ -87,18 +87,18 @@ "id": "ye_rapid_march_rations", "campaign_flags": { "advanced_to_ye": true }, "group": "topic", - "label": "Rapid March Rations", - "summary": "Claim light rations packed for the swift advance from Cangting.", + "label": "급행 군량", + "summary": "창정에서 이어진 급행 진군을 위해 꾸린 군량을 거둔다.", "lines": [ { "speaker": "Xiahou Yuan", "side": "right", - "text": "The rapid column kept only dry beans and spare bowstrings. It is not comfortable, but it arrives first." + "text": "급행대는 마른 콩과 여분 활시위만 남겼습니다. 편하지는 않아도 먼저 닿습니다." }, { "speaker": "Guo Jia", "side": "left", - "text": "Comfort is for the army that arrives second." + "text": "편안함은 두 번째로 도착한 군대의 몫이지." } ], "effects": [ @@ -106,7 +106,7 @@ "type": "grant_item", "item_id": "bean", "count": 1, - "text": "The rapid march rations add a Bean to the field supplies." + "text": "급행 군량에서 콩 1점을 전장 물자에 더했다." } ] }, @@ -114,18 +114,18 @@ "id": "ye_crossing_medicine", "campaign_flags": { "secured_hebei_crossings": true }, "group": "topic", - "label": "Crossing Medicine", - "summary": "Claim medicine brought safely across the secured Hebei crossings.", + "label": "나루 약재", + "summary": "확보한 하북 나루를 무사히 건너온 약재를 거둔다.", "lines": [ { "speaker": "Cao Ren", "side": "right", - "text": "The secured crossings kept the medicine carts with us. No river mud spoiled the seals." + "text": "나루를 확보한 덕에 약재 수레가 따라왔습니다. 강 진흙도 봉인을 더럽히지 못했습니다." }, { "speaker": "Cao Cao", "side": "left", - "text": "Then issue it before Ye teaches us the price of its walls." + "text": "그럼 업성이 성벽의 값을 가르치기 전에 나누어 주라." } ], "effects": [ @@ -133,7 +133,7 @@ "type": "grant_item", "item_id": "panacea", "count": 1, - "text": "The crossing medicine adds a Panacea to the field supplies." + "text": "나루 약재에서 만능약 1점을 전장 물자에 더했다." } ] } @@ -141,10 +141,10 @@ }, "shop": { "merchant": { - "name": "Ye Outskirts Sutler", + "name": "업성 외곽 야상", "lines": [ - "The Yuan heirs argue inside the walls. Out here, coin still gives a clean answer.", - "Buy what can cross a ditch and climb a wall. I left the pretty goods for men who expect to sit." + "성 안에서는 원씨 형제들이 다투지만, 성 밖에서는 아직 은전이 가장 분명한 대답입니다.", + "해자를 건너고 성벽을 오를 물건만 사십시오. 보기 좋은 물건은 앉아 있을 사람들에게 남겨 두었습니다." ] }, "items": [ @@ -243,7 +243,7 @@ }, { "unit_id": "yuan_tan_outer_guard", - "name": "Yuan Tan Guard", + "name": "원담 호위병", "class_id": "commander", "team": "enemy", "level": 14, @@ -252,7 +252,7 @@ }, { "unit_id": "yuan_shang_inner_guard", - "name": "Yuan Shang Guard", + "name": "원상 호위병", "class_id": "guard_captain", "team": "enemy", "level": 14, @@ -261,7 +261,7 @@ }, { "unit_id": "ye_council_advisor", - "name": "Ye Council Advisor", + "name": "업성 군사", "class_id": "military_advisor", "team": "enemy", "level": 14, @@ -271,7 +271,7 @@ }, { "unit_id": "ye_center_guard", - "name": "Ye Center Guard", + "name": "업성 중앙수비병", "class_id": "guard_captain", "team": "enemy", "level": 13, @@ -280,7 +280,7 @@ }, { "unit_id": "ye_north_guard", - "name": "Ye Spear Guard", + "name": "업성 창병", "class_id": "infantry", "team": "enemy", "level": 13, @@ -289,7 +289,7 @@ }, { "unit_id": "ye_south_guard", - "name": "Ye Spear Guard", + "name": "업성 창병", "class_id": "infantry", "team": "enemy", "level": 13, @@ -298,7 +298,7 @@ }, { "unit_id": "ye_archer_north", - "name": "Ye Archer", + "name": "업성 궁병", "class_id": "marksman", "team": "enemy", "level": 13, @@ -307,7 +307,7 @@ }, { "unit_id": "ye_archer_south", - "name": "Ye Archer", + "name": "업성 궁병", "class_id": "marksman", "team": "enemy", "level": 13, @@ -321,7 +321,7 @@ "once": true, "when": { "type": "battle_start" }, "actions": [ - { "type": "log", "text": "The Yuan heirs argue behind Ye's outer defense." } + { "type": "log", "text": "원씨 형제들이 업성 외곽 방비 뒤에서 서로 다툰다." } ] }, { @@ -332,9 +332,9 @@ { "type": "dialogue", "lines": [ - { "speaker": "Zhang He", "text": "Ye's outer road looks strong, but Yuan Tan and Yuan Shang will not agree who commands it." }, - { "speaker": "Cao Cao", "text": "Then their wall already has two gates." }, - { "speaker": "Guo Jia", "text": "Let them quarrel loudly enough for our blades to hear." } + { "speaker": "Zhang He", "text": "업성 외곽 길은 강해 보이나, 원담과 원상은 누가 지휘하는지조차 합의하지 못할 것입니다." }, + { "speaker": "Cao Cao", "text": "그렇다면 저 성벽에는 이미 문이 둘이군." }, + { "speaker": "Guo Jia", "text": "우리 칼끝이 들을 만큼 크게 다투게 두십시오." } ] } ] @@ -347,8 +347,8 @@ { "type": "dialogue", "lines": [ - { "speaker": "Yuan Tan Guard", "text": "Cao Cao is already here? Yuan Shang promised another day!" }, - { "speaker": "Zhang He", "text": "They are blaming one another before the first order is given." } + { "speaker": "원담 호위병", "text": "조조가 벌써 왔다고? 원상은 하루가 더 있다고 하지 않았느냐!" }, + { "speaker": "Zhang He", "text": "첫 명령이 떨어지기도 전에 서로를 탓하고 있습니다." } ] } ] @@ -361,8 +361,8 @@ { "type": "dialogue", "lines": [ - { "speaker": "Xiahou Yuan", "text": "The crossings behind us are secure. We can keep pressure on Ye without starving the rear." }, - { "speaker": "Cao Cao", "text": "A campaign is won by the road as much as the sword." } + { "speaker": "Xiahou Yuan", "text": "뒤편 나루가 안전합니다. 후군을 굶기지 않고도 업성을 압박할 수 있습니다." }, + { "speaker": "Cao Cao", "text": "전역은 칼만큼이나 길로 이기는 법이다." } ] } ] @@ -374,14 +374,14 @@ "actions": [ { "type": "set_objective", - "victory": "Exploit the Yuan heirs' split command and defeat every outer defender.", - "defeat": "Cao Cao is defeated or the battle reaches Turn 14." + "victory": "원씨 형제의 갈라진 지휘를 파고들어 외곽 수비대를 모두 격파하라.", + "defeat": "조조가 퇴각하거나 제14군령에 이른다." }, { "type": "dialogue", "lines": [ - { "speaker": "Yuan Shang Guard", "text": "Hold for Yuan Shang! Do not yield command to Yuan Tan's men." }, - { "speaker": "Guo Jia", "text": "There it is. Two drums, one army, no rhythm." } + { "speaker": "원상 호위병", "text": "원상 공자를 위해 버텨라! 원담의 병사들에게 지휘를 넘기지 마라." }, + { "speaker": "Guo Jia", "text": "저것입니다. 북은 둘, 군대는 하나, 박자는 없습니다." } ] }, { @@ -389,7 +389,7 @@ "deployments": [ { "unit_id": "yuan_tan_rider", - "name": "Yuan Tan Rider", + "name": "원담 기병", "class_id": "cavalry", "team": "enemy", "level": 13, @@ -398,7 +398,7 @@ }, { "unit_id": "yuan_shang_rider", - "name": "Yuan Shang Rider", + "name": "원상 기병", "class_id": "cavalry", "team": "enemy", "level": 13, @@ -417,8 +417,8 @@ { "type": "dialogue", "lines": [ - { "speaker": "Ye Guard", "text": "Cao Cao has pushed to the outer wall. Seal the road!" }, - { "speaker": "Zhang He", "text": "They seal late and from bad ground. Press through the center." } + { "speaker": "Ye Guard", "text": "조조가 외성까지 밀고 왔다. 길을 막아라!" }, + { "speaker": "Zhang He", "text": "늦게 막고 자리도 나쁩니다. 중앙으로 밀고 나가십시오." } ] }, { @@ -426,7 +426,7 @@ "deployments": [ { "unit_id": "ye_road_blocker", - "name": "Ye Road Blocker", + "name": "업성 길목병", "class_id": "infantry", "team": "enemy", "level": 13, @@ -435,7 +435,7 @@ }, { "unit_id": "ye_road_archer", - "name": "Ye Road Archer", + "name": "업성 길목궁병", "class_id": "archer", "team": "enemy", "level": 13, @@ -454,8 +454,8 @@ { "type": "dialogue", "lines": [ - { "speaker": "Cao Cao", "text": "Their outer command breaks before the wall does." }, - { "speaker": "Guo Jia", "text": "A city divided is already partly open." } + { "speaker": "Cao Cao", "text": "저들의 외곽 지휘는 성벽보다 먼저 무너지는군." }, + { "speaker": "Guo Jia", "text": "갈라진 성은 이미 반쯤 열린 성입니다." } ] } ] @@ -466,23 +466,23 @@ "items": ["bean", "wine", "war_axe", "wind_chaser_bow"] }, "post_battle_dialogue": [ - { "speaker": "Zhang He", "text": "Ye's outer defense is broken. The heirs will blame each other before they blame us." }, - { "speaker": "Guo Jia", "text": "Good. Their family quarrel is now a campaign map." }, - { "speaker": "Cao Cao", "text": "Then we decide whether to strike the city or widen the fracture." } + { "speaker": "Zhang He", "text": "업성 외곽 수비는 무너졌습니다. 원씨 형제들은 우리보다 먼저 서로를 탓할 것입니다." }, + { "speaker": "Guo Jia", "text": "좋다. 저들의 집안싸움이 이제 전역 지도가 되었군." }, + { "speaker": "Cao Cao", "text": "그렇다면 성을 칠지, 균열을 더 벌릴지 정해야겠군." } ], "post_battle_choices": [ { "id": "press_ye_siege", - "label": "Press Ye Siege", - "description": "Cao Cao prepares a direct siege before the Yuan heirs can reorganize.", + "label": "업성 포위 강행", + "description": "원씨 형제들이 다시 진세를 정비하기 전에 조조가 곧장 업성 포위를 준비한다.", "set_flags": { "pressed_ye_siege": true, "split_yuan_heirs": false }, "gold": 100, "items": ["war_drum"] }, { "id": "split_yuan_heirs", - "label": "Split Heirs", - "description": "The army spreads rumors and pressure to deepen Yuan Tan and Yuan Shang's rivalry.", + "label": "원씨 형제 이간", + "description": "군세가 소문과 압박을 퍼뜨려 원담과 원상의 반목을 깊게 만든다.", "set_flags": { "pressed_ye_siege": false, "split_yuan_heirs": true }, "gold": 250, "items": ["imperial_seal"] diff --git a/data/scenarios/016_ye_siege.json b/data/scenarios/016_ye_siege.json index f0df1ae..103d957 100644 --- a/data/scenarios/016_ye_siege.json +++ b/data/scenarios/016_ye_siege.json @@ -1,9 +1,9 @@ { "id": "016_ye_siege", - "name": "Ye Siege", + "name": "업성 포위전", "objectives": { - "victory": "Reach Ye's inner gate with Cao Cao, then defeat the palace defenders.", - "defeat": "Cao Cao is defeated or the battle reaches Turn 15." + "victory": "조조가 업성 내문에 이른 뒤 궁성 수비대를 격파하라.", + "defeat": "조조가 퇴각하거나 제15군령에 이른다." }, "conditions": { "victory": { "type": "all_units_defeated", "team": "enemy", "after_event": "inner_gate_breached" }, @@ -13,23 +13,23 @@ ] }, "briefing": { - "title": "Ye Siege", - "location": "Ye, 202 CE", + "title": "업성 포위전", + "location": "업성, 건안 7년", "lines": [ - "Ye's outer line has broken, but the Yuan heirs still command the inner city through suspicion and fear.", - "Cao Cao orders a direct push toward the inner gate while Zhang He marks the streets where the defenders will try to seal the advance." + "업성 외곽은 무너졌으나 원씨 형제들은 의심과 두려움으로 아직 내성을 부린다.", + "조조는 내문으로 곧장 밀고 들어가라 명하고, 장합은 수비병이 진군을 막으려 할 거리들을 짚어 둔다." ], "conditional_lines": [ { "campaign_flags": { "pressed_ye_siege": true }, "lines": [ - "The rapid siege leaves Yuan Shang's inner guard scrambling to reinforce streets that were still being repaired." + "빠른 포위는 아직 보수 중이던 거리를 원상의 내성위가 허둥지둥 메우게 만든다." ] }, { "campaign_flags": { "split_yuan_heirs": true }, "lines": [ - "Rumors spread through Ye that Yuan Tan has been abandoned, and some defenders hesitate before answering Yuan Shang's orders." + "원담이 버림받았다는 소문이 업성 안에 퍼져, 일부 수비병은 원상의 명령에 답하기 전에 머뭇거린다." ] } ], @@ -37,24 +37,24 @@ { "id": "ye_siege_inner_gate_council", "group": "topic", - "label": "Inner Gate Council", + "label": "내문 공략 군의", "speaker": "Cao Cao", - "summary": "Set the assault plan for Ye's inner gate.", + "summary": "업성 내문을 칠 공략책을 정한다.", "lines": [ { "speaker": "Cao Cao", "side": "left", - "text": "The outer wall is broken, but a city does not surrender until its inner gate believes it is alone." + "text": "외성은 무너졌으나, 성은 내문이 홀로 남았다고 믿기 전까지 항복하지 않는다." }, { "speaker": "Guo Jia", "side": "right", - "text": "Then we make the gate answer two fears: our ladders outside, and Yuan distrust inside." + "text": "그렇다면 그 문이 두 두려움에 답하게 만들면 됩니다. 밖의 우리 운제와 안의 원씨 불신이지요." }, { "speaker": "Zhang He", "side": "right", - "text": "The palace road is narrow. If the first line yields, the second will have nowhere clean to stand." + "text": "궁도는 좁습니다. 첫 줄이 물러서면 둘째 줄은 제대로 설 자리조차 없습니다." } ] }, @@ -62,19 +62,19 @@ "id": "ye_siege_zhang_he_streets", "group": "officer", "officer_id": "zhang_he", - "label": "Zhang He - Inner Streets", + "label": "장합 - 내성 거리", "speaker": "Zhang He", - "summary": "Read Ye's inner streets before the gate assault.", + "summary": "내문 공략 전에 업성 내성 거리를 읽는다.", "lines": [ { "speaker": "Zhang He", "side": "right", - "text": "Yuan Shang trusts the broad road because he can see it from the palace. That is why every ambush will face it." + "text": "원상은 궁에서 볼 수 있다는 이유로 큰길을 믿습니다. 그래서 매복도 모두 그 길을 향할 것입니다." }, { "speaker": "Cao Cao", "side": "left", - "text": "Then we show him the cost of watching one road too closely." + "text": "그럼 한 길만 뚫어지게 본 대가를 보여 주자." } ] }, @@ -82,18 +82,18 @@ "id": "ye_siege_ladder_rations", "campaign_flags": { "pressed_ye_siege": true }, "group": "topic", - "label": "Ladder Team Rations", - "summary": "Claim light rations packed for the direct inner gate assault.", + "label": "운제대 군량", + "summary": "내문 직공을 위해 꾸린 가벼운 군량을 거둔다.", "lines": [ { "speaker": "Xiahou Dun", "side": "right", - "text": "The ladder teams carry beans and rope. Nothing that slows a man with both hands full." + "text": "운제대는 콩과 밧줄만 멥니다. 두 손이 찬 병사를 늦출 물건은 없습니다." }, { "speaker": "Cao Cao", "side": "left", - "text": "Then let the walls learn how little baggage a determined army needs." + "text": "그렇다면 뜻을 정한 군대가 얼마나 짐을 적게 드는지 성벽에게 가르쳐 주라." } ], "effects": [ @@ -101,7 +101,7 @@ "type": "grant_item", "item_id": "bean", "count": 1, - "text": "The ladder team rations add a Bean to the field supplies." + "text": "운제대 군량에서 콩 1점을 전장 물자에 더했다." } ] }, @@ -109,18 +109,18 @@ "id": "ye_siege_defector_medicine", "campaign_flags": { "split_yuan_heirs": true }, "group": "topic", - "label": "Defector Medicine", - "summary": "Claim medicine sent through frightened Yuan defectors.", + "label": "투항자 약재", + "summary": "두려움에 투항한 원씨 병사들이 보낸 약재를 거둔다.", "lines": [ { "speaker": "Guo Jia", "side": "left", - "text": "The defectors sent a medicine chest with their first message. Fear is learning to be practical." + "text": "투항자들이 첫 서찰과 함께 약상자를 보냈습니다. 두려움도 실리를 배우는 모양입니다." }, { "speaker": "Cao Ren", "side": "right", - "text": "The seals are clean. If the Yuan officers want our trust, this is a useful beginning." + "text": "봉인은 깨끗합니다. 원씨 장교들이 우리의 신임을 원한다면 쓸 만한 시작입니다." } ], "effects": [ @@ -128,7 +128,7 @@ "type": "grant_item", "item_id": "panacea", "count": 1, - "text": "The defector medicine adds a Panacea to the field supplies." + "text": "투항자 약재에서 만능약 1점을 전장 물자에 더했다." } ] } @@ -136,10 +136,10 @@ }, "shop": { "merchant": { - "name": "Ye Gate Sutler", + "name": "업성 문전 야상", "lines": [ - "The inner gate makes men spend faster than any market bell.", - "Buy now, my lord. Once the palace road opens, merchants and cowards will both look for side streets." + "내문 앞에서는 어떤 저잣거리 종보다도 지갑이 빨리 열립니다.", + "지금 사 두십시오. 궁도가 열리면 상인도 겁쟁이도 샛길을 찾을 겁니다." ] }, "items": [ @@ -238,7 +238,7 @@ }, { "unit_id": "yuan_shang_inner_guard", - "name": "Yuan Shang Inner Guard", + "name": "원상 내성위", "class_id": "commander", "team": "enemy", "level": 15, @@ -247,7 +247,7 @@ }, { "unit_id": "ye_gate_captain", - "name": "Ye Gate Captain", + "name": "업성 문장", "class_id": "guard_captain", "team": "enemy", "level": 14, @@ -256,7 +256,7 @@ }, { "unit_id": "ye_inner_advisor", - "name": "Inner City Advisor", + "name": "내성 군사", "class_id": "military_advisor", "team": "enemy", "level": 14, @@ -266,7 +266,7 @@ }, { "unit_id": "ye_north_wall_guard", - "name": "Ye Wall Guard", + "name": "업성 성벽병", "class_id": "infantry", "team": "enemy", "level": 14, @@ -275,7 +275,7 @@ }, { "unit_id": "ye_south_wall_guard", - "name": "Ye Wall Guard", + "name": "업성 성벽병", "class_id": "infantry", "team": "enemy", "level": 14, @@ -284,7 +284,7 @@ }, { "unit_id": "ye_wall_archer_north", - "name": "Ye Wall Archer", + "name": "업성 성벽궁병", "class_id": "marksman", "team": "enemy", "level": 14, @@ -293,7 +293,7 @@ }, { "unit_id": "ye_wall_archer_south", - "name": "Ye Wall Archer", + "name": "업성 성벽궁병", "class_id": "marksman", "team": "enemy", "level": 14, @@ -307,7 +307,7 @@ "once": true, "when": { "type": "battle_start" }, "actions": [ - { "type": "log", "text": "Cao Cao's army enters the streets outside Ye's inner gate." } + { "type": "log", "text": "조조군이 업성 내문 밖 거리로 들어선다." } ] }, { @@ -318,9 +318,9 @@ { "type": "dialogue", "lines": [ - { "speaker": "Zhang He", "text": "The inner gate is not Ye's strongest point. It is simply where the heirs trust each other least." }, - { "speaker": "Cao Cao", "text": "Then we press where mistrust must give orders." }, - { "speaker": "Guo Jia", "text": "A siege ladder is useful. A frightened messenger is faster." } + { "speaker": "Zhang He", "text": "내문은 업성의 가장 강한 곳이 아닙니다. 단지 원씨 형제들이 서로를 가장 믿지 못하는 곳일 뿐입니다." }, + { "speaker": "Cao Cao", "text": "그렇다면 불신이 명령을 내려야 하는 곳을 누른다." }, + { "speaker": "Guo Jia", "text": "운제도 쓸모 있습니다. 겁먹은 사자는 더 빠르지요." } ] } ] @@ -333,8 +333,8 @@ { "type": "dialogue", "lines": [ - { "speaker": "Xiahou Dun", "text": "The rapid assault has them reinforcing with half-formed companies." }, - { "speaker": "Cao Cao", "text": "Then do not give the other half time to arrive." } + { "speaker": "Xiahou Dun", "text": "급습 때문에 저들이 반도 갖추지 못한 부대로 보강하고 있습니다." }, + { "speaker": "Cao Cao", "text": "그렇다면 나머지 반이 닿을 시간을 주지 마라." } ] } ] @@ -347,8 +347,8 @@ { "type": "dialogue", "lines": [ - { "speaker": "Ye Guard", "text": "Yuan Tan's men are refusing the inner gate order. They say Yuan Shang means to abandon them." }, - { "speaker": "Guo Jia", "text": "Good. Every rumor is now doing the work of a ram." } + { "speaker": "Ye Guard", "text": "원담의 병사들이 내문 명령을 거부합니다. 원상이 그들을 버릴 셈이라 합니다." }, + { "speaker": "Guo Jia", "text": "좋다. 이제 소문 하나하나가 충차 노릇을 하는군." } ] } ] @@ -361,8 +361,8 @@ { "type": "dialogue", "lines": [ - { "speaker": "Yuan Shang Inner Guard", "text": "Hold the gate. If Cao Cao takes the inner road, Ye will hear his drums before ours." }, - { "speaker": "Zhang He", "text": "He is defending the sound of command, not the city." } + { "speaker": "원상 내성위", "text": "문을 지켜라. 조조가 내성 길을 잡으면 업성은 우리 북소리보다 그의 북소리를 먼저 듣게 된다." }, + { "speaker": "Zhang He", "text": "그는 성이 아니라 지휘의 소리를 지키고 있습니다." } ] } ] @@ -374,14 +374,14 @@ "actions": [ { "type": "set_objective", - "victory": "The inner gate is breached. Defeat Yuan Shang's palace defenders.", - "defeat": "Cao Cao is defeated or the battle reaches Turn 15." + "victory": "내문을 돌파했다. 원상의 궁성 수비대를 격파하라.", + "defeat": "조조가 퇴각하거나 제15군령에 이른다." }, { "type": "dialogue", "lines": [ - { "speaker": "Cao Cao", "text": "The gate is open. Drive through before the city remembers how to obey." }, - { "speaker": "Guo Jia", "text": "The palace guard is moving. This is the last hard knot." } + { "speaker": "Cao Cao", "text": "문이 열렸다. 성이 복종하는 법을 떠올리기 전에 밀고 들어가라." }, + { "speaker": "Guo Jia", "text": "궁성위가 움직입니다. 마지막 단단한 매듭입니다." } ] }, { @@ -389,7 +389,7 @@ "deployments": [ { "unit_id": "ye_palace_guard", - "name": "Ye Palace Guard", + "name": "업성 궁성위", "class_id": "guard_captain", "team": "enemy", "level": 14, @@ -398,7 +398,7 @@ }, { "unit_id": "ye_palace_rider", - "name": "Ye Palace Rider", + "name": "업성 궁기병", "class_id": "cavalry", "team": "enemy", "level": 14, @@ -417,8 +417,8 @@ { "type": "dialogue", "lines": [ - { "speaker": "Zhang He", "text": "Ye's defenders are waiting to see which heir survives the day." }, - { "speaker": "Cao Cao", "text": "Then give them an easier answer." } + { "speaker": "Zhang He", "text": "업성 수비병들은 오늘 어느 후계자가 살아남을지 지켜보고 있습니다." }, + { "speaker": "Cao Cao", "text": "그렇다면 더 쉬운 답을 주어라." } ] } ] @@ -429,23 +429,23 @@ "items": ["bean", "wine", "imperial_seal"] }, "post_battle_dialogue": [ - { "speaker": "Zhang He", "text": "The inner gate is broken. Ye cannot pretend the Yuan house is whole." }, - { "speaker": "Guo Jia", "text": "One city remains, but the family that held it has become several smaller enemies." }, - { "speaker": "Cao Cao", "text": "Then we choose whether to take the city by force or make the heirs surrender it piece by piece." } + { "speaker": "Zhang He", "text": "내문이 무너졌습니다. 업성은 더는 원씨 집안이 온전한 척할 수 없습니다." }, + { "speaker": "Guo Jia", "text": "성 하나는 남았으나, 그 성을 쥔 집안은 여러 작은 적으로 갈라졌습니다." }, + { "speaker": "Cao Cao", "text": "그렇다면 힘으로 성을 취할지, 원씨 형제들이 조각조각 바치게 할지 정하자." } ], "post_battle_choices": [ { "id": "force_ye_surrender", - "label": "Force Surrender", - "description": "Cao Cao prepares a final direct pressure on Ye's remaining defenders.", + "label": "항복 강제", + "description": "조조가 업성의 남은 수비대를 향해 마지막 직접 압박을 준비한다.", "set_flags": { "forced_ye_surrender": true, "negotiated_yuan_defections": false }, "gold": 150, "items": ["war_drum"] }, { "id": "negotiate_yuan_defections", - "label": "Negotiate Defections", - "description": "The army courts frightened Yuan officers and turns the city's divisions inward.", + "label": "투항 회유", + "description": "군세가 겁먹은 원씨 장교들을 회유하여 성 안의 균열을 안쪽으로 돌린다.", "set_flags": { "forced_ye_surrender": false, "negotiated_yuan_defections": true }, "gold": 300, "items": ["iron_armor"] diff --git a/data/scenarios/017_ye_surrender.json b/data/scenarios/017_ye_surrender.json index 5761779..0c3ca48 100644 --- a/data/scenarios/017_ye_surrender.json +++ b/data/scenarios/017_ye_surrender.json @@ -1,9 +1,9 @@ { "id": "017_ye_surrender", - "name": "Ye Surrender", + "name": "업성 항복전", "objectives": { - "victory": "Break the last Yuan holdouts after the surrender signal reaches the palace road.", - "defeat": "Cao Cao is defeated or the battle reaches Turn 14." + "victory": "항복의 깃발이 궁도에 오른 뒤에도 버티는 원씨 잔당을 격파하라.", + "defeat": "조조가 퇴각하거나 제14군령에 이른다." }, "conditions": { "victory": { "type": "all_units_defeated", "team": "enemy", "after_event": "surrender_signal_sent" }, @@ -13,23 +13,23 @@ ] }, "briefing": { - "title": "Ye Surrender", - "location": "Ye Palace Road, 202 CE", + "title": "업성 항복전", + "location": "업성 궁도, 건안 7년", "lines": [ - "Ye's inner gate has fallen. Only palace loyalists and frightened Yuan officers remain between Cao Cao and the city's surrender.", - "Zhang He warns that the last defenders will either break quickly or fight wildly to prove loyalty to absent heirs." + "업성 내문이 떨어졌다. 조조와 성의 항복 사이에는 궁도 충신들과 겁먹은 원씨 장교들만 남았다.", + "장합은 마지막 수비병들이 곧 무너지거나, 부재한 후계자에게 충성을 보이려 미친 듯 싸울 것이라 경고한다." ], "conditional_lines": [ { "campaign_flags": { "forced_ye_surrender": true }, "lines": [ - "Direct pressure on Ye leaves the palace guard short of time, but their cornered officers are ready for a final stand." + "업성에 가한 직접 압박은 궁성위의 시간을 빼앗았으나, 몰린 장교들은 마지막 결전을 준비하고 있다." ] }, { "campaign_flags": { "negotiated_yuan_defections": true }, "lines": [ - "Negotiations have drawn several Yuan captains away from the palace, leaving the loyalists angry and isolated." + "회유로 몇몇 원씨 장수들이 궁도를 떠나자, 충신들은 분노와 고립 속에 남았다." ] } ], @@ -37,24 +37,24 @@ { "id": "ye_surrender_palace_road_council", "group": "topic", - "label": "Palace Road Council", + "label": "궁도 항복 군의", "speaker": "Cao Cao", - "summary": "Set the terms for Ye's final surrender signal.", + "summary": "업성의 마지막 항복 신호와 그 조건을 정한다.", "lines": [ { "speaker": "Cao Cao", "side": "left", - "text": "The city has opened its teeth. Now we decide whether the mouth speaks surrender or bites until it breaks." + "text": "성이 이빨을 드러냈다. 이제 그 입이 항복을 말할지, 부러질 때까지 물지 정해야 한다." }, { "speaker": "Guo Jia", "side": "right", - "text": "A banner raised on the palace road will be seen by every frightened household. Mercy must arrive with discipline." + "text": "궁도에 세운 깃발은 겁먹은 모든 집에서 볼 것입니다. 자비는 기강과 함께 닿아야 합니다." }, { "speaker": "Zhang He", "side": "right", - "text": "The loyalists still listen for Yuan orders that will not come. Strike cleanly, and the silence will do half the work." + "text": "충신들은 오지 않을 원씨의 명령을 아직 기다립니다. 깨끗이 치면 침묵이 절반의 일을 해낼 것입니다." } ] }, @@ -62,19 +62,19 @@ "id": "ye_surrender_zhang_he_last_loyalists", "group": "officer", "officer_id": "zhang_he", - "label": "Zhang He - Last Loyalists", + "label": "장합 - 마지막 충신들", "speaker": "Zhang He", - "summary": "Read the palace loyalists before the surrender signal.", + "summary": "항복 신호를 올리기 전에 궁도 충신들의 마음을 읽는다.", "lines": [ { "speaker": "Zhang He", "side": "right", - "text": "The men ahead are not guarding Ye. They are guarding the last moment when they can call themselves loyal." + "text": "앞의 병사들은 업성을 지키는 것이 아닙니다. 스스로 충신이라 부를 수 있는 마지막 순간을 지키는 것입니다." }, { "speaker": "Cao Cao", "side": "left", - "text": "Then we leave them only two names: citizen, or corpse." + "text": "그럼 저들에게 두 이름만 남겨라. 백성, 아니면 시체." } ] }, @@ -82,18 +82,18 @@ "id": "ye_surrender_pressure_rations", "campaign_flags": { "forced_ye_surrender": true }, "group": "topic", - "label": "Pressure Rations", - "summary": "Claim compact rations prepared for the direct palace road assault.", + "label": "압박 군량", + "summary": "궁도 직공을 위해 준비한 간편 군량을 거둔다.", "lines": [ { "speaker": "Xiahou Dun", "side": "right", - "text": "The men who pushed the gate brought forward dry beans. No ceremony, no cart, just food that survives dust." + "text": "문을 민 병사들이 마른 콩을 앞으로 가져왔습니다. 의식도 수레도 없이, 먼지를 버티는 먹을거리뿐입니다." }, { "speaker": "Cao Cao", "side": "left", - "text": "Good. A forced surrender leaves little time for kitchens." + "text": "좋다. 항복을 강제하는 데 부엌 차릴 시간은 없다." } ], "effects": [ @@ -101,7 +101,7 @@ "type": "grant_item", "item_id": "bean", "count": 1, - "text": "The pressure rations add a Bean to the field supplies." + "text": "압박 군량에서 콩 1점을 전장 물자에 더했다." } ] }, @@ -109,18 +109,18 @@ "id": "ye_surrender_defector_medicine", "campaign_flags": { "negotiated_yuan_defections": true }, "group": "topic", - "label": "Defector Medicine", - "summary": "Claim a medicine bundle handed over by Yuan defectors.", + "label": "투항자 약재", + "summary": "원씨 투항자들이 넘긴 약 꾸러미를 거둔다.", "lines": [ { "speaker": "Guo Jia", "side": "left", - "text": "The defectors brought a medicine bundle and the names of two palace guards. One gift heals men, the other opens doors." + "text": "투항자들이 약 꾸러미와 궁성위 둘의 이름을 가져왔습니다. 하나는 사람을 살리고, 하나는 문을 엽니다." }, { "speaker": "Cao Ren", "side": "right", - "text": "The cloth bears a Yuan store mark, but the seal has been cut away." + "text": "천에는 원씨 창고 표식이 남아 있으나 봉인은 잘려 나갔습니다." } ], "effects": [ @@ -128,7 +128,7 @@ "type": "grant_item", "item_id": "panacea", "count": 1, - "text": "The defector medicine adds a Panacea to the field supplies." + "text": "투항자 약재에서 만능약 1점을 전장 물자에 더했다." } ] } @@ -136,10 +136,10 @@ }, "shop": { "merchant": { - "name": "Ye Palace Road Sutler", + "name": "업성 궁도 야상", "lines": [ - "The palace road is bad for banners and excellent for prices.", - "Buy what you need before the surrender bell. After that, every cellar in Ye will claim it was loyal all along." + "궁도는 깃발에는 나쁘고 값에는 좋습니다.", + "항복 종이 울기 전에 필요한 것을 사십시오. 그 뒤에는 업성의 모든 창고가 처음부터 충성스러웠다고 할 겁니다." ] }, "items": [ @@ -238,7 +238,7 @@ }, { "unit_id": "ye_last_loyalist", - "name": "Ye Last Loyalist", + "name": "업성 결사항전병", "class_id": "commander", "team": "enemy", "level": 16, @@ -247,7 +247,7 @@ }, { "unit_id": "yuan_palace_guard", - "name": "Yuan Palace Guard", + "name": "원씨 궁성위", "class_id": "guard_captain", "team": "enemy", "level": 15, @@ -256,7 +256,7 @@ }, { "unit_id": "yuan_palace_advisor", - "name": "Palace Advisor", + "name": "궁도 군사", "class_id": "military_advisor", "team": "enemy", "level": 15, @@ -266,7 +266,7 @@ }, { "unit_id": "ye_palace_spear_north", - "name": "Palace Spear Guard", + "name": "궁도 창병", "class_id": "infantry", "team": "enemy", "level": 15, @@ -275,7 +275,7 @@ }, { "unit_id": "ye_palace_spear_south", - "name": "Palace Spear Guard", + "name": "궁도 창병", "class_id": "infantry", "team": "enemy", "level": 15, @@ -284,7 +284,7 @@ }, { "unit_id": "ye_palace_archer_north", - "name": "Palace Archer", + "name": "궁도 궁병", "class_id": "marksman", "team": "enemy", "level": 15, @@ -293,7 +293,7 @@ }, { "unit_id": "ye_palace_archer_south", - "name": "Palace Archer", + "name": "궁도 궁병", "class_id": "marksman", "team": "enemy", "level": 15, @@ -307,7 +307,7 @@ "once": true, "when": { "type": "battle_start" }, "actions": [ - { "type": "log", "text": "Ye's last loyalists gather near the palace road." } + { "type": "log", "text": "업성의 마지막 충신들이 궁도 부근에 모인다." } ] }, { @@ -318,9 +318,9 @@ { "type": "dialogue", "lines": [ - { "speaker": "Zhang He", "text": "The loyalists have no plan left, only the need to be seen dying for one." }, - { "speaker": "Cao Cao", "text": "Then let the city see survival rewarded as clearly as resistance is ended." }, - { "speaker": "Guo Jia", "text": "A surrender must look inevitable before it is signed." } + { "speaker": "Zhang He", "text": "충신들에게 남은 계책은 없습니다. 다만 계책을 위해 죽는 것처럼 보이고 싶을 뿐입니다." }, + { "speaker": "Cao Cao", "text": "그렇다면 성이 보게 하라. 살아남는 자가 상을 받고, 저항은 끝난다는 것을." }, + { "speaker": "Guo Jia", "text": "항복은 서명되기 전에 먼저 필연처럼 보여야 합니다." } ] } ] @@ -333,8 +333,8 @@ { "type": "dialogue", "lines": [ - { "speaker": "Xiahou Dun", "text": "The direct pressure has them packed against the palace road." }, - { "speaker": "Cao Cao", "text": "Good. A cornered guard can no longer pretend to command a city." } + { "speaker": "Xiahou Dun", "text": "직접 압박으로 저들이 궁도에 몰려 있습니다." }, + { "speaker": "Cao Cao", "text": "좋다. 몰린 수비대는 더는 성을 지휘하는 척할 수 없다." } ] } ] @@ -347,8 +347,8 @@ { "type": "dialogue", "lines": [ - { "speaker": "Palace Advisor", "text": "Two more captains have opened their gates to Cao Cao. The loyalists are fighting alone." }, - { "speaker": "Guo Jia", "text": "A city can surrender one door at a time." } + { "speaker": "궁도 군사", "text": "장수 둘이 더 조조에게 문을 열었습니다. 충신들은 홀로 싸우고 있습니다." }, + { "speaker": "Guo Jia", "text": "성은 문 하나씩 항복할 수도 있습니다." } ] } ] @@ -361,8 +361,8 @@ { "type": "dialogue", "lines": [ - { "speaker": "Ye Last Loyalist", "text": "If the Yuan name must leave Ye, let Cao Cao pay for every stone." }, - { "speaker": "Zhang He", "text": "That is no longer strategy. It is grief with a spear." } + { "speaker": "업성 결사항전병", "text": "원씨의 이름이 업성을 떠나야 한다면, 조조에게 돌 하나하나의 값을 치르게 하라." }, + { "speaker": "Zhang He", "text": "저것은 더는 계책이 아닙니다. 창을 든 슬픔입니다." } ] } ] @@ -374,14 +374,14 @@ "actions": [ { "type": "set_objective", - "victory": "The surrender signal is sent. Defeat the loyalists who refuse it.", - "defeat": "Cao Cao is defeated or the battle reaches Turn 14." + "victory": "항복 신호가 올랐다. 이를 거부하는 충신들을 격파하라.", + "defeat": "조조가 퇴각하거나 제14군령에 이른다." }, { "type": "dialogue", "lines": [ - { "speaker": "Cao Cao", "text": "Raise the surrender banner. Those who lay down arms will live under law." }, - { "speaker": "Ye Last Loyalist", "text": "Then we die outside that law." } + { "speaker": "Cao Cao", "text": "항복기를 올려라. 병장을 내려놓는 자는 법 아래 살 것이다." }, + { "speaker": "업성 결사항전병", "text": "그렇다면 우리는 그 법 밖에서 죽겠다." } ] }, { @@ -389,7 +389,7 @@ "deployments": [ { "unit_id": "ye_last_rider", - "name": "Last Rider", + "name": "결사항전 기병", "class_id": "elite_cavalry", "team": "enemy", "level": 15, @@ -398,7 +398,7 @@ }, { "unit_id": "ye_last_archer", - "name": "Last Archer", + "name": "결사항전 궁병", "class_id": "archer", "team": "enemy", "level": 15, @@ -417,8 +417,8 @@ { "type": "dialogue", "lines": [ - { "speaker": "Guo Jia", "text": "The palace road is quieting. Ye is deciding that tomorrow matters more than yesterday." }, - { "speaker": "Cao Cao", "text": "Then end the last yesterday standing in our way." } + { "speaker": "Guo Jia", "text": "궁도가 조용해지고 있습니다. 업성은 어제보다 내일이 중요하다고 결정하고 있습니다." }, + { "speaker": "Cao Cao", "text": "그럼 우리 앞에 선 마지막 어제를 끝내라." } ] } ] @@ -429,23 +429,23 @@ "items": ["bean", "wine", "iron_armor"] }, "post_battle_dialogue": [ - { "speaker": "Zhang He", "text": "Ye has surrendered. The Yuan house still runs north, but its capital is no longer theirs." }, - { "speaker": "Guo Jia", "text": "A capital lost is a family argument made permanent." }, - { "speaker": "Cao Cao", "text": "Then Hebei must learn whether it belongs to heirs, rebels, or order." } + { "speaker": "Zhang He", "text": "업성이 항복했습니다. 원씨 집안은 아직 북쪽으로 달아나지만, 그 도읍은 더는 그들의 것이 아닙니다." }, + { "speaker": "Guo Jia", "text": "도읍을 잃는다는 것은 집안싸움이 영원해졌다는 뜻입니다." }, + { "speaker": "Cao Cao", "text": "그렇다면 하북은 배워야 한다. 자신이 후계자의 것인지, 반역자의 것인지, 질서의 것인지를." } ], "post_battle_choices": [ { "id": "pursue_yuan_shang", - "label": "Pursue Yuan Shang", - "description": "Cao Cao turns immediately toward the fleeing Yuan heir.", + "label": "원상 추격", + "description": "조조가 달아나는 원씨 후계자를 향해 곧장 군세를 돌린다.", "set_flags": { "pursued_yuan_shang": true, "stabilized_ye": false }, "gold": 100, "items": ["war_drum"] }, { "id": "stabilize_ye", - "label": "Stabilize Ye", - "description": "The army secures Ye's administration before marching farther north.", + "label": "업성 안정", + "description": "군세가 더 북상하기 전에 업성의 관청과 민심을 안정시킨다.", "set_flags": { "pursued_yuan_shang": false, "stabilized_ye": true }, "gold": 350, "items": ["imperial_seal"] diff --git a/scripts/scenes/battle_scene.gd b/scripts/scenes/battle_scene.gd index bf2d6cb..791d170 100644 --- a/scripts/scenes/battle_scene.gd +++ b/scripts/scenes/battle_scene.gd @@ -126,6 +126,14 @@ const SPEAKER_DISPLAY_NAMES := { "Chunyu Qiong": "순우경", "Yuan Guard": "원소군 호위병", "Yuan Field Advisor": "원소군 군사", + "Yuan Rally Advisor": "원소 수습군사", + "Yuan Tan Guard": "원담 호위병", + "Yuan Shang Guard": "원상 호위병", + "Ye Guard": "업성 수비병", + "Yuan Shang Inner Guard": "원상 내성위", + "Inner City Advisor": "내성 군사", + "Ye Last Loyalist": "업성 결사항전병", + "Palace Advisor": "궁도 군사", "Puyang Night Trader": "복양 야상", "Dingtao Field Sutler": "정도 야상", "Escort Road Sutler": "호송 야상", @@ -163,6 +171,14 @@ const SPEAKER_CANONICAL_NAMES := { "순우경": "Chunyu Qiong", "원소군 호위병": "Yuan Guard", "원소군 군사": "Yuan Field Advisor", + "원소 수습군사": "Yuan Rally Advisor", + "원담 호위병": "Yuan Tan Guard", + "원상 호위병": "Yuan Shang Guard", + "업성 수비병": "Ye Guard", + "원상 내성위": "Yuan Shang Inner Guard", + "내성 군사": "Inner City Advisor", + "업성 결사항전병": "Ye Last Loyalist", + "궁도 군사": "Palace Advisor", "원소 척후": "Yuan Scout", "천자 금위": "Imperial Guard", "완성 척후": "Wan Scout" @@ -436,31 +452,31 @@ func _apply_panel_style(panel: PanelContainer, variant: String) -> void: var shadow_size := 6 match variant: "paper": - fill = Color(0.68, 0.50, 0.25, 0.997) - border = UI_BAMBOO_DARK + fill = Color(0.58, 0.39, 0.17, 0.997) + border = UI_SCROLL_EDGE border_width = 9 margin = 22 shadow_size = 18 "edict": - fill = UI_BONE_PAPER - border = UI_BAMBOO_DARK + fill = Color(0.70, 0.55, 0.30, 0.997) + border = UI_SCROLL_EDGE border_width = 6 margin = 16 shadow_size = 7 "edict_compact": - fill = UI_BONE_PAPER - border = UI_BAMBOO_DARK + fill = Color(0.66, 0.50, 0.27, 0.996) + border = UI_SCROLL_EDGE border_width = 3 margin = 6 shadow_size = 2 "notice_edict": - fill = UI_BONE_PAPER - border = UI_BAMBOO_DARK + fill = Color(0.71, 0.54, 0.28, 0.998) + border = UI_SCROLL_EDGE border_width = 5 margin = 12 shadow_size = 10 "seal": - fill = Color(0.23, 0.018, 0.010, 1.0) + fill = Color(0.18, 0.018, 0.010, 1.0) border = UI_OLD_BRONZE border_width = 4 margin = 10 @@ -475,14 +491,14 @@ func _apply_panel_style(panel: PanelContainer, variant: String) -> void: border_width = 5 margin = 3 "dialogue": - fill = Color(0.070, 0.018, 0.010, 0.997) - border = UI_OLD_BRONZE - border_width = 8 - margin = 19 - shadow_size = 18 + fill = Color(0.045, 0.018, 0.010, 0.998) + border = UI_TARNISHED_BRONZE + border_width = 9 + margin = 20 + shadow_size = 22 "speech_scroll": - fill = UI_BONE_PAPER - border = UI_BAMBOO_DARK + fill = Color(0.70, 0.54, 0.29, 0.998) + border = UI_SCROLL_EDGE border_width = 6 margin = 15 shadow_size = 4 @@ -503,13 +519,13 @@ func _apply_panel_style(panel: PanelContainer, variant: String) -> void: margin = 10 shadow_size = 5 "compact": - fill = Color(0.052, 0.078, 0.052, 0.982) - border = UI_JADE_EDGE - border_width = 3 + fill = Color(0.058, 0.026, 0.014, 0.988) + border = UI_TARNISHED_BRONZE + border_width = 4 margin = 8 - shadow_size = 4 + shadow_size = 8 "bamboo_slips": - fill = Color(0.42, 0.30, 0.14, 0.985) + fill = Color(0.36, 0.24, 0.105, 0.990) border = UI_INK_WASH border_width = 3 margin = 10 @@ -521,11 +537,11 @@ func _apply_panel_style(panel: PanelContainer, variant: String) -> void: margin = 5 shadow_size = 2 "result_tablet": - fill = Color(0.62, 0.44, 0.20, 0.996) - border = UI_BAMBOO_DARK - border_width = 8 - margin = 19 - shadow_size = 12 + fill = Color(0.54, 0.36, 0.15, 0.997) + border = UI_SCROLL_EDGE + border_width = 9 + margin = 20 + shadow_size = 16 "command_seal": fill = Color(0.065, 0.020, 0.012, 0.992) border = UI_TARNISHED_BRONZE @@ -605,14 +621,14 @@ func _apply_control_font(control: Control, bold: bool = false) -> void: func _apply_button_style(button: Button, important: bool = false) -> void: if button == null: return - var normal_fill := UI_SEAL_RED_DARK if important else Color(0.27, 0.15, 0.055, 0.985) - var hover_fill := UI_SEAL_RED if important else Color(0.37, 0.22, 0.085, 1.0) - var pressed_fill := Color(0.17, 0.030, 0.018, 1.0) - button.add_theme_stylebox_override("normal", _make_button_style(normal_fill, UI_INK_WASH, 2)) + var normal_fill := Color(0.34, 0.030, 0.018, 0.990) if important else Color(0.18, 0.095, 0.035, 0.988) + var hover_fill := Color(0.48, 0.045, 0.025, 1.0) if important else Color(0.28, 0.135, 0.048, 1.0) + var pressed_fill := Color(0.10, 0.030, 0.016, 1.0) + button.add_theme_stylebox_override("normal", _make_button_style(normal_fill, UI_TARNISHED_BRONZE, 2)) button.add_theme_stylebox_override("hover", _make_button_style(hover_fill, UI_OLD_BRONZE, 2)) button.add_theme_stylebox_override("pressed", _make_button_style(pressed_fill, UI_OLD_BRONZE, 2)) - button.add_theme_stylebox_override("focus", _make_button_style(Color(0.34, 0.20, 0.080, 0.96), UI_OLD_BRONZE, 2)) - button.add_theme_stylebox_override("disabled", _make_button_style(Color(0.13, 0.080, 0.046, 0.88), UI_RICE_PAPER_DARK, 1)) + button.add_theme_stylebox_override("focus", _make_button_style(Color(0.31, 0.16, 0.060, 0.98), UI_OLD_BRONZE, 2)) + button.add_theme_stylebox_override("disabled", _make_button_style(Color(0.10, 0.065, 0.040, 0.88), UI_RICE_PAPER_DARK, 1)) button.add_theme_color_override("font_color", UI_PARCHMENT_TEXT) button.add_theme_color_override("font_hover_color", UI_PARCHMENT_TEXT) button.add_theme_color_override("font_pressed_color", UI_PARCHMENT_TEXT) diff --git a/tools/smoke_camp_conversation_rewards.gd b/tools/smoke_camp_conversation_rewards.gd index a0abd27..702505c 100644 --- a/tools/smoke_camp_conversation_rewards.gd +++ b/tools/smoke_camp_conversation_rewards.gd @@ -3437,7 +3437,7 @@ func _check_cangting_branch_camp_conversations(failures: Array[String]) -> void: if not base_scene._camp_conversation_by_id(CANGTING_STORES_CONVERSATION_ID).is_empty(): failures.append("Cangting Wuchao store medicine should be hidden without secured stores flag") var merchant: Dictionary = base_scene.state.get_shop_merchant() - if str(merchant.get("name", "")) != "Cangting Road Sutler": + if str(merchant.get("name", "")) != "창정 길목 야상": failures.append("Cangting shop merchant name should be present") var merchant_lines: Array = merchant.get("lines", []) if merchant_lines.size() < 2: @@ -3519,7 +3519,7 @@ func _check_ye_branch_camp_conversations(failures: Array[String]) -> void: if not base_scene._camp_conversation_by_id(YE_CROSSING_CONVERSATION_ID).is_empty(): failures.append("Ye crossing medicine should be hidden without crossings flag") var merchant: Dictionary = base_scene.state.get_shop_merchant() - if str(merchant.get("name", "")) != "Ye Outskirts Sutler": + if str(merchant.get("name", "")) != "업성 외곽 야상": failures.append("Ye shop merchant name should be present") var merchant_lines: Array = merchant.get("lines", []) if merchant_lines.size() < 2: @@ -3601,7 +3601,7 @@ func _check_ye_siege_branch_camp_conversations(failures: Array[String]) -> void: if not base_scene._camp_conversation_by_id(YE_SIEGE_SPLIT_CONVERSATION_ID).is_empty(): failures.append("Ye Siege defector medicine should be hidden without split heirs flag") var merchant: Dictionary = base_scene.state.get_shop_merchant() - if str(merchant.get("name", "")) != "Ye Gate Sutler": + if str(merchant.get("name", "")) != "업성 문전 야상": failures.append("Ye Siege shop merchant name should be present") var merchant_lines: Array = merchant.get("lines", []) if merchant_lines.size() < 2: @@ -3683,7 +3683,7 @@ func _check_ye_surrender_branch_camp_conversations(failures: Array[String]) -> v if not base_scene._camp_conversation_by_id(YE_SURRENDER_DEFECTOR_CONVERSATION_ID).is_empty(): failures.append("Ye Surrender defector medicine should be hidden without negotiated defections flag") var merchant: Dictionary = base_scene.state.get_shop_merchant() - if str(merchant.get("name", "")) != "Ye Palace Road Sutler": + if str(merchant.get("name", "")) != "업성 궁도 야상": failures.append("Ye Surrender shop merchant name should be present") var merchant_lines: Array = merchant.get("lines", []) if merchant_lines.size() < 2: diff --git a/tools/smoke_visual_assets.gd b/tools/smoke_visual_assets.gd index 67928f9..6d74166 100644 --- a/tools/smoke_visual_assets.gd +++ b/tools/smoke_visual_assets.gd @@ -749,7 +749,7 @@ func _check_battle_visual_data(failures: Array[String]) -> void: _check_camp_conversation(failures, cangting_conversations[0], "cangting_pursuit_council", "topic", "") _check_camp_conversation(failures, cangting_conversations[1], "cangting_guo_jia_rearguard", "officer", "guo_jia") var cangting_merchant := cangting_state.get_shop_merchant() - if str(cangting_merchant.get("name", "")) != "Cangting Road Sutler": + if str(cangting_merchant.get("name", "")) != "창정 길목 야상": failures.append("014 shop should expose Cangting merchant name") if (cangting_merchant.get("lines", []) as Array).size() < 2: failures.append("014 shop should expose merchant flavor lines") @@ -831,7 +831,7 @@ func _check_battle_visual_data(failures: Array[String]) -> void: _check_camp_conversation(failures, ye_conversations[0], "ye_outer_council", "topic", "") _check_camp_conversation(failures, ye_conversations[1], "ye_zhang_he_city_map", "officer", "zhang_he") var ye_merchant := ye_state.get_shop_merchant() - if str(ye_merchant.get("name", "")) != "Ye Outskirts Sutler": + if str(ye_merchant.get("name", "")) != "업성 외곽 야상": failures.append("015 shop should expose Ye merchant name") if (ye_merchant.get("lines", []) as Array).size() < 2: failures.append("015 shop should expose merchant flavor lines") @@ -912,7 +912,7 @@ func _check_battle_visual_data(failures: Array[String]) -> void: _check_camp_conversation(failures, ye_siege_conversations[0], "ye_siege_inner_gate_council", "topic", "") _check_camp_conversation(failures, ye_siege_conversations[1], "ye_siege_zhang_he_streets", "officer", "zhang_he") var ye_siege_merchant := ye_siege_state.get_shop_merchant() - if str(ye_siege_merchant.get("name", "")) != "Ye Gate Sutler": + if str(ye_siege_merchant.get("name", "")) != "업성 문전 야상": failures.append("016 shop should expose Ye Gate merchant name") if (ye_siege_merchant.get("lines", []) as Array).size() < 2: failures.append("016 shop should expose merchant flavor lines") @@ -991,7 +991,7 @@ func _check_battle_visual_data(failures: Array[String]) -> void: _check_camp_conversation(failures, ye_surrender_conversations[0], "ye_surrender_palace_road_council", "topic", "") _check_camp_conversation(failures, ye_surrender_conversations[1], "ye_surrender_zhang_he_last_loyalists", "officer", "zhang_he") var ye_surrender_merchant := ye_surrender_state.get_shop_merchant() - if str(ye_surrender_merchant.get("name", "")) != "Ye Palace Road Sutler": + if str(ye_surrender_merchant.get("name", "")) != "업성 궁도 야상": failures.append("017 shop should expose Ye Palace Road merchant name") if (ye_surrender_merchant.get("lines", []) as Array).size() < 2: failures.append("017 shop should expose merchant flavor lines") @@ -2697,17 +2697,17 @@ func _check_ancient_ui_theme(failures: Array[String]) -> void: for expected in ["勝令", "敗兆", "戰功 죽간", "凶兆 징후"]: if not mission_text.contains(expected): failures.append("mission panel should use old campaign wording `%s`: %s" % [expected, mission_text]) - _check_panel_style_fill(failures, scene.briefing_panel, "briefing panel", Color(0.68, 0.50, 0.25, 0.997)) - _check_panel_style_frame(failures, scene.briefing_panel, "briefing panel", Color(0.20, 0.11, 0.045, 1.0), 10) - _check_panel_style_fill(failures, scene.briefing_objective_panel, "briefing objective edict panel", Color(0.66, 0.52, 0.31, 0.995)) - _check_panel_style_frame(failures, scene.briefing_objective_panel, "briefing objective edict panel", Color(0.20, 0.11, 0.045, 1.0), 6) + _check_panel_style_fill(failures, scene.briefing_panel, "briefing panel", Color(0.58, 0.39, 0.17, 0.997)) + _check_panel_style_frame(failures, scene.briefing_panel, "briefing panel", Color(0.43, 0.25, 0.095, 0.996), 10) + _check_panel_style_fill(failures, scene.briefing_objective_panel, "briefing objective edict panel", Color(0.70, 0.55, 0.30, 0.997)) + _check_panel_style_frame(failures, scene.briefing_objective_panel, "briefing objective edict panel", Color(0.43, 0.25, 0.095, 0.996), 6) _check_panel_style_fill(failures, scene.briefing_camp_overview_panel, "briefing silk map panel", Color(0.54, 0.38, 0.18, 0.992)) _check_panel_style_frame(failures, scene.briefing_camp_overview_panel, "briefing silk map panel", Color(0.43, 0.25, 0.095, 0.996), 4) - _check_panel_style_fill(failures, scene.dialogue_panel, "dialogue panel", Color(0.070, 0.018, 0.010, 0.997)) - _check_panel_style_frame(failures, scene.dialogue_panel, "dialogue panel", Color(0.78, 0.58, 0.27, 1.0), 9) + _check_panel_style_fill(failures, scene.dialogue_panel, "dialogue panel", Color(0.045, 0.018, 0.010, 0.998)) + _check_panel_style_frame(failures, scene.dialogue_panel, "dialogue panel", Color(0.50, 0.36, 0.16, 1.0), 10) _check_panel_style_fill(failures, scene.dialogue_portrait_panel, "dialogue portrait panel", Color(0.035, 0.014, 0.008, 1.0)) _check_panel_style_fill(failures, scene.dialogue_speaker_panel, "dialogue speaker seal panel", Color(0.28, 0.020, 0.014, 1.0)) - _check_panel_style_fill(failures, scene.dialogue_text_panel, "dialogue text scroll panel", Color(0.66, 0.52, 0.31, 0.995)) + _check_panel_style_fill(failures, scene.dialogue_text_panel, "dialogue text scroll panel", Color(0.70, 0.54, 0.29, 0.998)) _check_seal_ribbon(failures, scene.briefing_seal_ribbon, "briefing seal ribbon") _check_seal_ribbon(failures, scene.dialogue_seal_ribbon, "dialogue seal ribbon") _check_seal_ribbon(failures, scene.result_seal_ribbon, "result seal ribbon") @@ -2778,7 +2778,7 @@ func _check_ancient_ui_theme(failures: Array[String]) -> void: scene._update_briefing_camp_overview(scene.state.get_briefing(), false) if scene.briefing_camp_overview_fallback_label == null or scene.briefing_camp_overview_fallback_label.text != "비단 전장도": failures.append("briefing map fallback should read as an old campaign map") - _check_panel_style_fill(failures, scene.result_panel, "result panel", Color(0.62, 0.44, 0.20, 0.996)) + _check_panel_style_fill(failures, scene.result_panel, "result panel", Color(0.54, 0.36, 0.15, 0.997)) if not scene._format_victory_result_text().contains("승전 조서"): failures.append("victory result should read like a bronze proclamation") if not scene._format_defeat_result_text().contains("패전 비문"):