Files
heros/data/scenarios/004_qingzhou_campaign.json

311 lines
10 KiB
JSON

{
"id": "004_qingzhou_campaign",
"name": "Qingzhou Campaign",
"objectives": {
"victory": "Defeat the Yellow Turban remnant leaders.",
"defeat": "Cao Cao is defeated or the battle reaches Turn 12."
},
"conditions": {
"victory": { "type": "all_units_defeated", "team": "enemy", "after_event": "turn_3_bandit_push" },
"defeat": [
{ "type": "any_officer_defeated", "team": "player", "officer_ids": ["cao_cao"] },
{ "type": "turn_reached", "turn": 12, "team": "player" }
]
},
"briefing": {
"title": "Qingzhou Campaign",
"location": "Qingzhou, 192 CE",
"lines": [
"After the coalition fractures, Cao Cao turns toward Qingzhou.",
"Yellow Turban remnants threaten the villages and trade roads.",
"Secure the road, defeat the rebel leaders, and gather soldiers for a lasting army."
],
"conditional_lines": [
{
"campaign_flags": { "pursued_dong_zhuo": true },
"lines": [
"The army is still lean from the rapid pursuit after Sishui, but its veterans are hardened by the ambush at Xingyang."
]
},
{
"campaign_flags": { "regrouped_after_sishui": true },
"lines": [
"Supplies gathered after Sishui let Cao Cao press into Qingzhou with a steadier line."
]
}
],
"camp_conversations": [
{
"id": "qingzhou_settlement_council",
"group": "officer",
"officer_id": "cao_cao",
"label": "Cao Cao - Lasting Army",
"speaker": "Cao Cao",
"summary": "Discuss turning scattered victories into a standing force.",
"lines": [
{ "speaker": "Cao Cao", "side": "left", "text": "The coalition scattered after chasing shadows. Qingzhou gives us a harder task: turn hungry men into a disciplined army." },
{ "speaker": "Xiahou Dun", "side": "right", "text": "Then we break the worst of the remnants and give the rest a reason to stand in our line." }
]
},
{
"id": "qingzhou_village_screen",
"group": "officer",
"officer_id": "cao_ren",
"label": "Cao Ren - Village Screen",
"speaker": "Cao Ren",
"summary": "Protect villages and trade roads while the vanguard advances.",
"lines": [
{ "speaker": "Cao Ren", "side": "right", "text": "The villages fear every banner now. If our line tramples their fields, they will see no difference between us and the rebels." },
{ "speaker": "Cao Cao", "side": "left", "text": "Hold the road, not the harvest. Order is worth more than a hurried victory." }
]
},
{
"id": "qingzhou_hardened_veterans",
"campaign_flags": { "pursued_dong_zhuo": true },
"group": "topic",
"label": "Hardened Veterans",
"summary": "Issue wine to the men who survived the forced pursuit.",
"lines": [
{ "speaker": "Xiahou Yuan", "side": "right", "text": "The men who chased Dong Zhuo through Xingyang still march light. They complain less, which worries me more." },
{ "speaker": "Cao Cao", "side": "left", "text": "Give the veterans a little wine before the road opens. A steady hand matters more than a proud silence." }
],
"effects": [
{ "type": "grant_item", "item_id": "wine", "count": 1, "text": "The hardened veterans add Wine to the field supplies." }
]
},
{
"id": "qingzhou_sishui_stores",
"campaign_flags": { "regrouped_after_sishui": true },
"group": "topic",
"label": "Sishui Stores",
"summary": "Open the supplies preserved during the regroup.",
"lines": [
{ "speaker": "Coalition Merchant", "side": "left", "text": "Those Sishui stores traveled farther than some lords did. I kept the dry beans aside before the wagons bogged down." },
{ "speaker": "Cao Ren", "side": "right", "text": "Good. Feed the front rank before we ask them to spare the villages." }
],
"effects": [
{ "type": "grant_item", "item_id": "bean", "count": 1, "text": "The Sishui stores add a Bean to the field supplies." }
]
}
]
},
"shop": {
"items": [
"bean",
"antidote",
"panacea",
"wine",
"iron_sword",
"training_spear",
"short_bow",
"hand_axe",
"leather_armor",
"iron_armor"
],
"merchant": {
"name": "Qingzhou Road Merchant",
"lines": [
"The villages pay in grain, not coin, but a road army still needs steel and medicine.",
"Buy before the drums start. Once the remnants scatter, every cart on this road will claim to be a refugee."
]
}
},
"roster": {
"max_units": 4,
"required_officers": ["cao_cao"]
},
"formation": {
"cells": [[1, 4], [1, 5], [2, 3], [2, 4], [2, 5], [2, 6], [3, 4], [3, 5]]
},
"map": {
"width": 14,
"height": 10,
"terrain": [
"GGGGGGGGGGGGGG",
"GGGFFFGGGHHGGG",
"GGGFFFGRRHHGGG",
"GGGGGGRRRGGGGG",
"RRRRRRRRRRRRRR",
"GGGGGGRRRGGGGG",
"GGHGGGFFFGGGGG",
"GGHHGGFFFGGWWG",
"GGGGGGGFFGGWWG",
"GGGGGGGGGGGGGG"
]
},
"deployments": [
{
"unit_id": "cao_cao_ch4",
"officer_id": "cao_cao",
"team": "player",
"pos": [1, 4]
},
{
"unit_id": "xiahou_dun_ch4",
"officer_id": "xiahou_dun",
"team": "player",
"pos": [2, 4]
},
{
"unit_id": "xiahou_yuan_ch4",
"officer_id": "xiahou_yuan",
"team": "player",
"requires_joined": true,
"pos": [2, 3]
},
{
"unit_id": "cao_ren_ch4",
"officer_id": "cao_ren",
"team": "player",
"requires_joined": true,
"pos": [2, 5]
},
{
"unit_id": "qingzhou_chief",
"name": "Qingzhou Chief",
"class_id": "bandit",
"team": "enemy",
"level": 4,
"pos": [11, 4],
"base": { "hp": 48, "atk": 15, "def": 7 }
},
{
"unit_id": "yellow_turban_spearman_1",
"name": "Yellow Turban Spearman",
"class_id": "infantry",
"team": "enemy",
"level": 4,
"pos": [9, 3],
"base": { "hp": 38, "atk": 13, "def": 7 }
},
{
"unit_id": "yellow_turban_spearman_2",
"name": "Yellow Turban Spearman",
"class_id": "infantry",
"team": "enemy",
"level": 4,
"pos": [9, 5],
"base": { "hp": 38, "atk": 13, "def": 7 }
},
{
"unit_id": "yellow_turban_archer",
"name": "Yellow Turban Archer",
"class_id": "archer",
"team": "enemy",
"level": 4,
"pos": [10, 2],
"base": { "hp": 30, "atk": 11, "def": 5 }
},
{
"unit_id": "yellow_turban_strategist",
"name": "Yellow Turban Mystic",
"class_id": "strategist",
"team": "enemy",
"level": 4,
"pos": [11, 6],
"base": { "hp": 32, "mp": 16, "atk": 7, "def": 4, "int": 11 }
}
],
"events": [
{
"id": "opening",
"once": true,
"when": { "type": "battle_start" },
"actions": [
{ "type": "log", "text": "Cao Cao enters Qingzhou to pacify the Yellow Turban remnants." }
]
},
{
"id": "opening_dialogue",
"once": true,
"when": { "type": "battle_begin" },
"actions": [
{
"type": "dialogue",
"lines": [
{ "speaker": "Cao Cao", "text": "A commander needs more than victories. We need men who can hold the land after the banners move on." },
{ "speaker": "Xiahou Dun", "text": "Then we break these remnants and give the villages a reason to trust our flag." },
{ "speaker": "Xiahou Yuan", "text": "Their archers have taken the eastern ridge. I will keep them from harassing the road." }
]
}
]
},
{
"id": "turn_3_bandit_push",
"once": true,
"when": { "type": "turn_start", "team": "enemy", "turn": 3 },
"actions": [
{ "type": "log", "text": "Hidden Yellow Turban raiders rush from the woods." },
{
"type": "dialogue",
"lines": [
{ "speaker": "Qingzhou Chief", "text": "The villages are ours to feed from. Drive Cao Cao back to the west!" },
{ "speaker": "Cao Cao", "text": "They reveal themselves. Hold the road and cut them down in detail." }
]
},
{
"type": "set_objective",
"victory": "Defeat the Qingzhou chief and every raider.",
"defeat": "Cao Cao is defeated or the battle reaches Turn 12."
},
{
"type": "spawn_deployments",
"deployments": [
{
"unit_id": "qingzhou_raider_north",
"name": "Qingzhou Raider",
"class_id": "bandit",
"team": "enemy",
"level": 4,
"pos": [6, 1],
"base": { "hp": 34, "atk": 12, "def": 5 }
},
{
"unit_id": "qingzhou_raider_south",
"name": "Qingzhou Raider",
"class_id": "bandit",
"team": "enemy",
"level": 4,
"pos": [6, 8],
"base": { "hp": 34, "atk": 12, "def": 5 }
},
{
"unit_id": "qingzhou_raider_archer",
"name": "Qingzhou Archer",
"class_id": "archer",
"team": "enemy",
"level": 4,
"pos": [13, 7],
"base": { "hp": 28, "atk": 11, "def": 4 }
}
]
}
]
},
{
"id": "turn_5_dian_wei_rumor",
"once": true,
"when": { "type": "turn_start", "team": "player", "turn": 5 },
"actions": [
{
"type": "dialogue",
"lines": [
{ "speaker": "Scout", "text": "My lord, a fierce warrior has been seen defending villagers east of the ridge." },
{ "speaker": "Cao Cao", "text": "Remember his name. Men who protect the weak are worth more than plunderers." }
]
}
]
}
],
"rewards": {
"gold": 800,
"items": ["bean", "hand_axe", "iron_armor"],
"join_officers": ["dian_wei"]
},
"post_battle_dialogue": [
{ "speaker": "Dian Wei", "text": "You fought the raiders instead of bargaining with them. I can respect that." },
{ "speaker": "Cao Cao", "text": "Then stand with me, Dian Wei. I need warriors who can guard more than their own fame." },
{ "speaker": "Dian Wei", "text": "Give me a place in the line, and I will hold it." }
]
}