Files
heros/data/scenarios/018_northern_pursuit.json

464 lines
14 KiB
JSON

{
"id": "018_northern_pursuit",
"name": "Northern Pursuit",
"objectives": {
"victory": "Push Cao Cao to the northern road, then defeat Yuan Shang's rearguard.",
"defeat": "Cao Cao is defeated or the battle reaches Turn 15."
},
"conditions": {
"victory": { "type": "all_units_defeated", "team": "enemy", "after_event": "yuan_rearguard_formed" },
"defeat": [
{ "type": "any_officer_defeated", "team": "player", "officer_ids": ["cao_cao"] },
{ "type": "turn_reached", "turn": 15, "team": "player" }
]
},
"briefing": {
"title": "Northern Pursuit",
"location": "North Road from Ye, 203 CE",
"lines": [
"Ye has fallen, but Yuan Shang flees north with enough banners to pretend his command still exists.",
"Cao Cao sends Zhang He ahead to read the retreat road while Guo Jia watches for the moment a fleeing heir becomes a trapped one."
],
"conditional_lines": [
{
"campaign_flags": { "pursued_yuan_shang": true },
"lines": [
"The immediate pursuit catches Yuan Shang's baggage train stretched thin, but Cao Cao's own vanguard is marching hard."
]
},
{
"campaign_flags": { "stabilized_ye": true },
"lines": [
"Ye's administration now feeds the road behind Cao Cao, giving the pursuit fewer gaps for Yuan loyalists to exploit."
]
}
],
"camp_conversations": [
{
"id": "northern_pursuit_road_council",
"group": "topic",
"label": "Northern Road Council",
"speaker": "Cao Cao",
"summary": "Set the pursuit order before Yuan Shang's banners disappear north.",
"lines": [
{
"speaker": "Cao Cao",
"side": "left",
"text": "Yuan Shang still carries banners, but a banner on a fleeing road is only cloth unless men believe it can return."
},
{
"speaker": "Guo Jia",
"side": "right",
"text": "Then the first blow must fall on belief. His baggage, his messengers, and the captains who still count tomorrow."
},
{
"speaker": "Zhang He",
"side": "right",
"text": "The northern road narrows after the hill bend. If the rearguard forms there, they can only retreat through their own carts."
}
]
},
{
"id": "northern_pursuit_zhang_he_retreat_road",
"group": "officer",
"officer_id": "zhang_he",
"label": "Zhang He - Retreat Road",
"speaker": "Zhang He",
"summary": "Read Yuan Shang's retreat road before the chase begins.",
"lines": [
{
"speaker": "Zhang He",
"side": "right",
"text": "Yuan Shang's men are marching by household loyalty, not command order. Their slowest wagons will decide where courage ends."
},
{
"speaker": "Cao Cao",
"side": "left",
"text": "Then we chase the wagons and let the courage arrive late."
}
]
},
{
"id": "northern_pursuit_hard_march_beans",
"campaign_flags": { "pursued_yuan_shang": true },
"group": "topic",
"label": "Hard March Beans",
"summary": "Claim compact rations carried by the fastest pursuit column.",
"lines": [
{
"speaker": "Xiahou Yuan",
"side": "right",
"text": "The vanguard kept beans under the saddle cloths. They taste of leather, but they keep a man moving."
},
{
"speaker": "Cao Cao",
"side": "left",
"text": "For a hard march, that is finer fare than a full table reached too late."
}
],
"effects": [
{
"type": "grant_item",
"item_id": "bean",
"count": 1,
"text": "The hard march beans add a Bean to the field supplies."
}
]
},
{
"id": "northern_pursuit_ji_supply_medicine",
"campaign_flags": { "stabilized_ye": true },
"group": "topic",
"label": "Ji Supply Medicine",
"summary": "Claim medicine delivered along the steadied Ji Province road.",
"lines": [
{
"speaker": "Cao Ren",
"side": "right",
"text": "Ji Province carts reached us with medicine sealed in plain boxes. No banners, no panic, just useful order."
},
{
"speaker": "Guo Jia",
"side": "left",
"text": "A quiet road is a physician with wheels."
}
],
"effects": [
{
"type": "grant_item",
"item_id": "panacea",
"count": 1,
"text": "The Ji supply medicine adds a Panacea to the field supplies."
}
]
}
]
},
"shop": {
"merchant": {
"name": "Northern Road Sutler",
"lines": [
"The road north buys speed first and comfort never.",
"Spend before the dust rises, my lord. A fleeing heir leaves broken carts, not orderly markets."
]
},
"items": [
"bean",
"wine",
"iron_sword",
"training_spear",
"short_bow",
"hand_axe",
"war_axe",
"leather_armor",
"iron_armor"
],
"conditional_items": [
{
"campaign_flags": { "pursued_yuan_shang": true },
"items": ["war_drum"]
},
{
"campaign_flags": { "stabilized_ye": true },
"items": ["imperial_seal"]
}
]
},
"roster": {
"max_units": 7,
"required_officers": ["cao_cao", "guo_jia", "zhang_he"]
},
"formation": {
"cells": [[1, 3], [1, 4], [1, 5], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [3, 2], [3, 3], [3, 4], [3, 5], [3, 6]]
},
"map": {
"width": 18,
"height": 11,
"terrain": [
"GGGGGHHGGGGGGGGGGG",
"GGFFGHHGGGFFGGGFFG",
"GGRRRRRRRRRRRRGFFG",
"GGGGGRGGGGRRGGGGGG",
"RRRRRRRRRRRRRRRRRR",
"GGGGGRGGGGRRGGGGGG",
"GGHHGFFFGGFFFGGHHG",
"GGHHGFFFGGFFFGGHHG",
"GGGGGGFFGGHHHGGGGG",
"GGFFGGGGGGHHHFFGGG",
"GGGGGGGGGGGGGGGGGG"
]
},
"deployments": [
{
"unit_id": "cao_cao_ch18",
"officer_id": "cao_cao",
"team": "player",
"pos": [1, 4]
},
{
"unit_id": "guo_jia_ch18",
"officer_id": "guo_jia",
"team": "player",
"requires_joined": true,
"pos": [2, 4]
},
{
"unit_id": "zhang_he_ch18",
"officer_id": "zhang_he",
"team": "player",
"requires_joined": true,
"pos": [2, 3]
},
{
"unit_id": "xiahou_dun_ch18",
"officer_id": "xiahou_dun",
"team": "player",
"pos": [1, 5]
},
{
"unit_id": "dian_wei_ch18",
"officer_id": "dian_wei",
"team": "player",
"requires_joined": true,
"pos": [2, 5]
},
{
"unit_id": "xiahou_yuan_ch18",
"officer_id": "xiahou_yuan",
"team": "player",
"requires_joined": true,
"pos": [3, 3]
},
{
"unit_id": "cao_ren_ch18",
"officer_id": "cao_ren",
"team": "player",
"requires_joined": true,
"pos": [3, 4]
},
{
"unit_id": "yuan_shang_rearguard",
"name": "Yuan Shang Rearguard",
"class_id": "commander",
"team": "enemy",
"level": 17,
"pos": [14, 4],
"base": { "hp": 84, "mp": 20, "atk": 23, "def": 17, "int": 13, "agi": 12 }
},
{
"unit_id": "northern_road_captain",
"name": "Northern Road Captain",
"class_id": "guard_captain",
"team": "enemy",
"level": 16,
"pos": [12, 4],
"base": { "hp": 64, "atk": 20, "def": 16 }
},
{
"unit_id": "yuan_retreat_advisor",
"name": "Retreat Advisor",
"class_id": "military_advisor",
"team": "enemy",
"level": 16,
"pos": [15, 5],
"skills": ["blaze", "great_mend"],
"base": { "hp": 52, "mp": 36, "atk": 7, "def": 9, "int": 19, "agi": 10 }
},
{
"unit_id": "northern_spear_north",
"name": "Northern Spear Guard",
"class_id": "infantry",
"team": "enemy",
"level": 16,
"pos": [12, 3],
"base": { "hp": 56, "atk": 19, "def": 13 }
},
{
"unit_id": "northern_spear_south",
"name": "Northern Spear Guard",
"class_id": "infantry",
"team": "enemy",
"level": 16,
"pos": [12, 5],
"base": { "hp": 56, "atk": 19, "def": 13 }
},
{
"unit_id": "northern_archer_north",
"name": "Northern Archer",
"class_id": "marksman",
"team": "enemy",
"level": 16,
"pos": [13, 2],
"base": { "hp": 46, "atk": 19, "def": 8, "agi": 15 }
},
{
"unit_id": "northern_archer_south",
"name": "Northern Archer",
"class_id": "marksman",
"team": "enemy",
"level": 16,
"pos": [14, 6],
"base": { "hp": 46, "atk": 19, "def": 8, "agi": 15 }
},
{
"unit_id": "yuan_escape_rider",
"name": "Yuan Escape Rider",
"class_id": "elite_cavalry",
"team": "enemy",
"level": 16,
"pos": [15, 3],
"base": { "hp": 60, "atk": 20, "def": 12, "agi": 15 }
}
],
"events": [
{
"id": "opening",
"once": true,
"when": { "type": "battle_start" },
"actions": [
{ "type": "log", "text": "Yuan Shang's rearguard blocks the road north from Ye." }
]
},
{
"id": "opening_dialogue",
"once": true,
"when": { "type": "battle_begin" },
"actions": [
{
"type": "dialogue",
"lines": [
{ "speaker": "Zhang He", "text": "Yuan Shang runs north, but his captains are trying to make a wall out of retreating men." },
{ "speaker": "Cao Cao", "text": "Then we break the wall before it remembers it is an army." },
{ "speaker": "Guo Jia", "text": "A fleeing heir still has value. A trapped heir has more." }
]
}
]
},
{
"id": "rapid_pursuit_strain",
"once": true,
"when": { "type": "turn_start", "team": "player", "turn": 2, "campaign_flags": { "pursued_yuan_shang": true } },
"actions": [
{
"type": "dialogue",
"lines": [
{ "speaker": "Xiahou Yuan", "text": "We caught the dust of Yuan Shang's standards. Another push and his baggage is ours." },
{ "speaker": "Guo Jia", "text": "Fast pursuit wins distance, but tired men must still win the road." }
]
}
]
},
{
"id": "ye_supply_arrives",
"once": true,
"when": { "type": "turn_start", "team": "player", "turn": 2, "campaign_flags": { "stabilized_ye": true } },
"actions": [
{
"type": "dialogue",
"lines": [
{ "speaker": "Cao Ren", "text": "Grain from Ye has reached the columns. The road behind us is quiet." },
{ "speaker": "Cao Cao", "text": "Good. A quiet rear lets the front speak plainly." }
]
}
]
},
{
"id": "turn_3_rearguard_orders",
"once": true,
"when": { "type": "turn_start", "team": "enemy", "turn": 3 },
"actions": [
{
"type": "dialogue",
"lines": [
{ "speaker": "Yuan Shang Rearguard", "text": "Hold the road until the heir reaches the next command tent. No one retreats without my order." },
{ "speaker": "Zhang He", "text": "They still protect the tent, not the province." }
]
}
]
},
{
"id": "yuan_rearguard_formed",
"once": true,
"when": { "type": "unit_reaches_tile", "team": "player", "officer_ids": ["cao_cao"], "pos": [10, 4] },
"actions": [
{
"type": "set_objective",
"victory": "The northern road is reached. Defeat Yuan Shang's formed rearguard.",
"defeat": "Cao Cao is defeated or the battle reaches Turn 15."
},
{
"type": "dialogue",
"lines": [
{ "speaker": "Cao Cao", "text": "The road is in sight. Cut down the screen before Yuan Shang grows another army behind it." },
{ "speaker": "Yuan Shang Rearguard", "text": "Close the road. If Cao Cao sees the fleeing banners, we have failed." }
]
},
{
"type": "spawn_deployments",
"deployments": [
{
"unit_id": "yuan_baggage_guard",
"name": "Baggage Guard",
"class_id": "guard_captain",
"team": "enemy",
"level": 16,
"pos": [16, 4],
"base": { "hp": 60, "atk": 19, "def": 15 }
},
{
"unit_id": "yuan_baggage_archer",
"name": "Baggage Archer",
"class_id": "archer",
"team": "enemy",
"level": 16,
"pos": [16, 5],
"base": { "hp": 40, "atk": 17, "def": 7, "agi": 13 }
}
]
}
]
},
{
"id": "turn_7_pursuit_closes",
"once": true,
"when": { "type": "turn_start", "team": "player", "turn": 7 },
"actions": [
{
"type": "dialogue",
"lines": [
{ "speaker": "Guo Jia", "text": "The rearguard is losing shape. Yuan Shang is learning that a retreat can be surrounded from behind." },
{ "speaker": "Cao Cao", "text": "Then make the lesson brief." }
]
}
]
}
],
"rewards": {
"gold": 3200,
"items": ["bean", "wine", "war_axe"]
},
"post_battle_dialogue": [
{ "speaker": "Zhang He", "text": "Yuan Shang's screen is broken, but the Yuan heirs still have northern towns that will answer a familiar seal." },
{ "speaker": "Guo Jia", "text": "Then we decide whether to chase the seal or make the towns afraid to use it." },
{ "speaker": "Cao Cao", "text": "The north will not be settled by one road. Choose the next pressure." }
],
"post_battle_choices": [
{
"id": "press_north_to_nanpi",
"label": "Press Nanpi",
"description": "Cao Cao keeps pressure on the Yuan heirs before they can gather at Nanpi.",
"set_flags": { "pressed_north_to_nanpi": true, "secured_ji_province": false },
"gold": 150,
"items": ["war_drum"]
},
{
"id": "secure_ji_province",
"label": "Secure Ji Province",
"description": "The army secures surrendered towns and supply lines before the next northern strike.",
"set_flags": { "pressed_north_to_nanpi": false, "secured_ji_province": true },
"gold": 400,
"items": ["imperial_seal"]
}
]
}