Files
heros/data/scenarios/009_xiapi_siege.json

479 lines
16 KiB
JSON

{
"id": "009_xiapi_siege",
"name": "하비 수공전",
"objectives": {
"victory": "수문 작전이 끝날 때까지 버틴 뒤 여포군을 격파하라.",
"defeat": "조조가 퇴각하거나 제13군령에 이르면 패한다."
},
"conditions": {
"victory": { "type": "all_units_defeated", "team": "enemy", "after_event": "turn_3_flood_gates" },
"defeat": [
{ "type": "any_officer_defeated", "team": "player", "officer_ids": ["cao_cao"] },
{ "type": "turn_reached", "turn": 13, "team": "player" }
]
},
"briefing": {
"title": "하비 수공전",
"location": "하비, 건안 삼년",
"lines": [
"여포는 하비의 젖은 성벽 뒤로 물러나 기병과 진궁의 계책으로 포위를 깨려 한다.",
"조조는 물길을 열라 명한다. 수문 신호가 올라 여포군을 낮은 길로 끌어낼 때까지 첫 반격을 버텨라."
],
"conditional_lines": [
{
"campaign_flags": { "held_wan_gate": true },
"lines": [
"완성에서 되찾은 짐수레 덕에 포위선에는 두꺼운 방패와 마른 활시위가 넉넉하다."
]
},
{
"campaign_flags": { "swift_wan_escape": true },
"lines": [
"완성의 짐을 버리고 빠르게 하비에 닿았으나, 무거운 공성 물자는 아직 뒤따르는 중이다."
]
}
],
"camp_conversations": [
{
"id": "xiapi_floodgate_council",
"group": "officer",
"officer_id": "cao_cao",
"label": "조조 - 수문 계책",
"speaker": "Cao Cao",
"summary": "수문 신호에 맞춰 포위전의 박자를 정한다.",
"lines": [
{
"speaker": "Cao Cao",
"side": "left",
"text": "여포는 속도로 이 포위를 가르려 한다. 물은 기병보다 느리나, 낮은 길을 하나도 잊지 않는다."
},
{
"speaker": "Xiahou Dun",
"side": "right",
"text": "그렇다면 물길이 대답할 때까지 버티겠습니다. 진흙이 오르면 저들의 기병은 믿던 들판을 잃습니다."
}
]
},
{
"id": "xiapi_dian_wei_siege_road",
"group": "officer",
"officer_id": "dian_wei",
"label": "전위 - 포위로",
"speaker": "Dian Wei",
"summary": "여포의 첫 반격이 부딪힐 길목에 전위를 세운다.",
"lines": [
{
"speaker": "Dian Wei",
"side": "right",
"text": "물이 닿기 전의 길목을 제게 주십시오. 비켜서지 않는 사람을 기병은 싫어합니다."
},
{
"speaker": "Cao Cao",
"side": "left",
"text": "전열이 너를 볼 수 있는 곳에 서라. 용기가 얼굴을 가지면 포위선은 더 오래 버틴다."
}
]
},
{
"id": "xiapi_wan_baggage_dressings",
"campaign_flags": { "held_wan_gate": true },
"group": "topic",
"label": "완성 짐수레 약상",
"summary": "되찾은 짐수레에서 해독약과 야전 약상을 연다.",
"lines": [
{
"speaker": "Cao Ren",
"side": "left",
"text": "완성에서 건진 짐수레에 아직 마른 약이 남아 있습니다. 강가의 습기가 벌써 상처를 곪게 합니다."
},
{
"speaker": "Cao Cao",
"side": "right",
"text": "수문을 열기 전에 나누어라. 흔들리지 않는 포위선은 작은 구휼에서 세워진다."
}
],
"effects": [
{
"type": "grant_item",
"item_id": "panacea",
"count": 1,
"text": "완성 짐수레 약상에서 만능약 한 꾸러미를 군수에 보탰다."
}
]
},
{
"id": "xiapi_forced_march_rations",
"campaign_flags": { "swift_wan_escape": true },
"group": "topic",
"label": "강행군 군량",
"summary": "무거운 군수보다 먼저 하비에 닿은 병사에게 휴대 군량을 나눈다.",
"lines": [
{
"speaker": "Xiahou Yuan",
"side": "right",
"text": "느린 수레보다 먼저 하비에 닿았습니다. 가볍게 싸울 수는 있으나 밤일로 물통이 비었습니다."
},
{
"speaker": "Dian Wei",
"side": "left",
"text": "콩을 먹이고 여포의 길목을 가리켜라. 짐이 가벼운 병사도 부딪히면 세다."
}
],
"effects": [
{
"type": "grant_item",
"item_id": "bean",
"count": 1,
"text": "강행군 군량에서 콩 한 꾸러미를 군수에 보탰다."
}
]
}
]
},
"shop": {
"items": [
"bean",
"panacea",
"wine",
"iron_sword",
"training_spear",
"short_bow",
"hand_axe",
"leather_armor",
"iron_armor"
],
"conditional_items": [
{
"campaign_flags": { "held_wan_gate": true },
"items": ["war_drum"]
},
{
"campaign_flags": { "swift_wan_escape": true },
"items": ["war_axe"]
}
],
"merchant": {
"name": "하비 수문 야상",
"lines": [
"자루를 낮은 길에 두지 마십시오. 물길이 열리면 마른 콩 하나도 값이 오릅니다.",
"신호가 오르기 전에 사 두십시오. 물이 움직인 뒤에는 수레까지 걸어올 수 있는 사람에게만 팝니다."
]
}
},
"roster": {
"max_units": 5,
"required_officers": ["cao_cao", "dian_wei"]
},
"formation": {
"cells": [[1, 3], [1, 4], [1, 5], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [3, 4]]
},
"map": {
"width": 15,
"height": 10,
"background": "res://art/backgrounds/xiapi_flooded_siege.png",
"terrain": [
"GGGGGHHGGGWWGGG",
"GGGFFHHGGGWWGGG",
"GGGFFRRRRGGGGGG",
"GGGGGRRRGGFFFGG",
"RRRRRRRRRRRRRRR",
"GGGGGRRRGGFFFGG",
"GGHHGFFFGGGRRGG",
"GGHHGFFFGGGWWGG",
"GGGGGGFFGGGWWGG",
"GGGGGGGGGGGGGGG"
]
},
"deployments": [
{
"unit_id": "cao_cao_ch9",
"officer_id": "cao_cao",
"team": "player",
"pos": [1, 4]
},
{
"unit_id": "dian_wei_ch9",
"officer_id": "dian_wei",
"team": "player",
"requires_joined": true,
"pos": [2, 4]
},
{
"unit_id": "xiahou_dun_ch9",
"officer_id": "xiahou_dun",
"team": "player",
"pos": [1, 5]
},
{
"unit_id": "xiahou_yuan_ch9",
"officer_id": "xiahou_yuan",
"team": "player",
"requires_joined": true,
"pos": [2, 3]
},
{
"unit_id": "cao_ren_ch9",
"officer_id": "cao_ren",
"team": "player",
"requires_joined": true,
"pos": [2, 5]
},
{
"unit_id": "lu_bu_xiapi",
"name": "여포",
"class_id": "elite_cavalry",
"team": "enemy",
"level": 9,
"pos": [11, 4],
"base": { "hp": 64, "atk": 21, "def": 11, "agi": 13 }
},
{
"unit_id": "chen_gong_strategist",
"name": "진궁",
"class_id": "strategist",
"team": "enemy",
"level": 9,
"pos": [10, 6],
"skills": ["blaze"],
"base": { "hp": 40, "mp": 24, "atk": 7, "def": 6, "int": 15 }
},
{
"unit_id": "gao_shun_trap_line",
"name": "고순 방진",
"class_id": "infantry",
"team": "enemy",
"level": 9,
"pos": [9, 5],
"base": { "hp": 50, "atk": 16, "def": 11 }
},
{
"unit_id": "xiapi_rider_north",
"name": "하비 기병",
"class_id": "cavalry",
"team": "enemy",
"level": 8,
"pos": [9, 3],
"base": { "hp": 42, "atk": 15, "def": 8, "agi": 11 }
},
{
"unit_id": "xiapi_rider_south",
"name": "하비 기병",
"class_id": "cavalry",
"team": "enemy",
"level": 8,
"pos": [10, 5],
"base": { "hp": 42, "atk": 15, "def": 8, "agi": 11 }
},
{
"unit_id": "xiapi_wall_archer",
"name": "성벽 궁병",
"class_id": "archer",
"team": "enemy",
"level": 8,
"pos": [12, 2],
"base": { "hp": 34, "atk": 13, "def": 6 }
},
{
"unit_id": "xiapi_gate_guard",
"name": "수문 수비병",
"class_id": "infantry",
"team": "enemy",
"level": 8,
"pos": [12, 6],
"base": { "hp": 46, "atk": 15, "def": 10 }
}
],
"events": [
{
"id": "opening",
"once": true,
"when": { "type": "battle_start" },
"actions": [
{ "type": "log", "text": "하비를 둘러싼 포위선이 조여 든다." }
]
},
{
"id": "opening_dialogue",
"once": true,
"when": { "type": "battle_begin" },
"actions": [
{
"type": "dialogue",
"lines": [
{ "speaker": "Cao Cao", "text": "여포는 성벽 뒤에서도 속도를 믿는다. 이번에는 땅이 그를 배반하게 만들 것이다." },
{ "speaker": "Xiahou Dun", "text": "수로는 준비되었습니다. 신호가 오를 때까지 전열만 붙들면 됩니다." },
{ "speaker": "Dian Wei", "text": "그렇다면 제가 길을 붙들겠습니다. 기병들이 먼저 저를 찾게 두십시오." }
]
}
]
},
{
"id": "turn_2_lu_bu_charge",
"once": true,
"when": { "type": "turn_start", "team": "enemy", "turn": 2 },
"actions": [
{
"type": "dialogue",
"lines": [
{ "speaker": "Lu Bu", "text": "조조가 도랑과 진흙 뒤에 숨었구나. 물이 차기 전에 포위선을 짓밟아라!" },
{ "speaker": "Chen Gong", "text": "전열이 휘면 장수를 치십시오. 수공의 계책도 그와 함께 죽습니다." }
]
},
{
"type": "spawn_deployments",
"deployments": [
{
"unit_id": "lu_bu_flank_rider_north",
"name": "측익 기병",
"class_id": "cavalry",
"team": "enemy",
"level": 8,
"pos": [6, 1],
"base": { "hp": 40, "atk": 15, "def": 8, "agi": 11 }
},
{
"unit_id": "lu_bu_flank_rider_south",
"name": "측익 기병",
"class_id": "cavalry",
"team": "enemy",
"level": 8,
"pos": [6, 8],
"base": { "hp": 40, "atk": 15, "def": 8, "agi": 11 }
}
]
}
]
},
{
"id": "turn_3_flood_gates",
"once": true,
"when": { "type": "turn_start", "team": "player", "turn": 3 },
"actions": [
{ "type": "log", "text": "하비 둘레에 수문 개방 신호가 오른다." },
{
"type": "dialogue",
"lines": [
{ "speaker": "Scout", "text": "물이 움직입니다. 하비 외곽 부대가 낮은 길에서 물러납니다!" },
{ "speaker": "Cao Cao", "text": "좋다. 이제 여포는 우리가 닿을 수 있는 곳에서 싸워야 한다." }
]
},
{
"type": "set_objective",
"victory": "여포, 진궁, 남은 하비 수비대를 격파하라.",
"defeat": "조조가 퇴각하거나 제13군령에 이르면 패한다."
},
{
"type": "withdraw_units",
"unit_ids": ["lu_bu_flank_rider_north", "lu_bu_flank_rider_south"]
},
{
"type": "spawn_deployments",
"deployments": [
{
"unit_id": "flooded_gate_guard",
"name": "수문 수비병",
"class_id": "infantry",
"team": "enemy",
"level": 8,
"pos": [8, 4],
"base": { "hp": 42, "atk": 14, "def": 9 }
},
{
"unit_id": "flooded_wall_archer",
"name": "수문 성벽 궁병",
"class_id": "archer",
"team": "enemy",
"level": 8,
"pos": [8, 6],
"base": { "hp": 32, "atk": 13, "def": 5 }
}
]
}
]
},
{
"id": "wan_gate_baggage_support",
"once": true,
"when": { "type": "turn_start", "team": "player", "turn": 4, "campaign_flags": { "held_wan_gate": true } },
"actions": [
{
"type": "dialogue",
"lines": [
{ "speaker": "Cao Ren", "text": "완성에서 온 짐수레가 포위선에 닿았습니다. 예비대가 안정되었습니다." },
{ "speaker": "Cao Cao", "text": "그렇다면 조심스럽게 밀어붙여라. 이제는 인내를 쓸 여유가 있다." }
]
}
]
},
{
"id": "swift_wan_counterraid",
"once": true,
"when": { "type": "turn_start", "team": "enemy", "turn": 4, "campaign_flags": { "swift_wan_escape": true } },
"actions": [
{
"type": "dialogue",
"lines": [
{ "speaker": "Chen Gong", "text": "조조가 빨리 왔으나, 빠른 행군은 포위선을 얇게 만듭니다. 느슨한 수레를 치십시오." },
{ "speaker": "Xiahou Yuan", "text": "저들의 기습대가 보급로를 찾았습니다. 제가 끊어 내겠습니다." }
]
},
{
"type": "spawn_deployment",
"deployment": {
"unit_id": "supply_road_raider",
"name": "보급로 습격병",
"class_id": "bandit",
"team": "enemy",
"level": 8,
"pos": [4, 7],
"base": { "hp": 40, "atk": 14, "def": 7, "agi": 9 }
}
}
]
},
{
"id": "turn_6_lu_bu_cornered",
"once": true,
"when": { "type": "turn_start", "team": "player", "turn": 6 },
"actions": [
{
"type": "dialogue",
"lines": [
{ "speaker": "Cao Cao", "text": "저 기병이 달릴 마른 길은 이제 없다. 포위망을 닫고 진궁에게 한 시각도 더 주지 마라." },
{ "speaker": "Dian Wei", "text": "그렇다면 길은 여기서 끝입니다." }
]
}
]
}
],
"rewards": {
"gold": 1400,
"items": ["bean", "wine", "war_axe"],
"join_officers": ["guo_jia"]
},
"post_battle_dialogue": [
{ "speaker": "Xiahou Dun", "text": "하비가 무너졌습니다. 여포의 기병은 다시 연주를 어지럽히지 못할 것입니다." },
{ "speaker": "Dian Wei", "text": "빠른 말도 느린 말과 똑같이 물에 잠깁니다." },
{ "speaker": "Guo Jia", "text": "여포가 쓰러졌으니, 북방의 진짜 저울은 원소가 되었습니다." },
{ "speaker": "Cao Cao", "text": "판단 없는 속도는 더 긴 추락일 뿐이다. 이제 우리는 생존이 아니라 통치를 향해 돈다." }
],
"post_battle_choices": [
{
"id": "integrate_xu_province",
"label": "서주 편입",
"description": "조조가 새로 얻은 땅에 관리를 두어 서주를 안정시킨다.",
"set_flags": { "integrated_xu_province": true, "pressed_northern_campaign": false },
"gold": 200,
"items": ["iron_armor"]
},
{
"id": "press_northern_campaign",
"label": "북방 압박",
"description": "군세가 승세를 몰아 북방의 제후들을 겨눌 준비를 한다.",
"set_flags": { "integrated_xu_province": false, "pressed_northern_campaign": true },
"gold": 100,
"items": ["wine", "war_drum"]
}
]
}