跳转到内容

战役模式

战役模式提供多关卡剧本,每关有特定的胜利条件和故事背景。


游戏内建一套教学战役(5 关),引导新手学习各项游戏机制。它在主菜单最上面有自己的按钮。


远征是一条由多张地图串起来的路线,每打完一张,再由你选下一张。从主菜单的远征按钮进入。

边境远征有六张地图、四条路线,每条路线走四张:

阶段 地图 要做什么
起点 边境营地 建起一座城镇,并铲平东边的哥布林帐篷。西南方的古老烽火台可做可不做:修复或拆取都行。
第一站 商道护送 在南路尽头开设交易站,让商队完成两趟收到钱的往返。山贼营寨可以留着不管。下一张地图多得 300 金币。
第一站 失落驿站 完成驿站的工作:把它重建起来,或把它的幸存者带回家。下一张地图多得 150 金币。
第二站 封印墓室 完成墓室的工作:封住它、研究它,或把它搜刮一空。
第二站 敌军边境 切断哥布林的补给线(趁运输者还没送达时击杀一名,或铲平派出他们的营地),并铲平哥布林前哨。古老烽火台可做可不做。
终点 王冠隘口 挡下两波袭击,再铲平哥布林堡垒。

隘口的堡垒会派出第三波援军,除非你这一轮攻破过敌军边境。走墓室那条路线一样能赢,只是要多打一波。在驿站与墓室,遗迹的工作就是目标,所以不能搁着不管。工作失败或撤回后会再次提供,只有失去遗迹所在的现场才会输掉这张地图。

两张地图之间,远征画面会列出到目前为止走过的路线和接下来能走的路,每条都附上简报,以及它会让路线终点有什么不同:

  • 挑选队伍:最多六名英雄继续前进,其余的留在后方等候。后备最多容纳十二名;满了就送人回家腾出位置。英雄会恢复满血回来。阵亡的就不会回来了。
  • 下一张地图的国库是它自己的预算,加上上一张地图剩下金币的一半(最多 1000),再加上上一张地图的奖励。出发前画面会先帮你算好。
  • 研究与城堡路线整轮都会保留。建筑则留在原地。

输掉的地图会从同样的起点重玩:同样的英雄、金币与地图。一轮远征会停在两张地图之间,等你从主菜单继续。放弃这一轮会放弃它,完成则结束一轮已经走到终点的远征。每条走完的路线都会连同你的最佳时间记在记录里。

试玩版的五关也画在同一张羊皮地图上,就是远征地图。先打“第一顶王冠”;打完后“商路上的阴影”“薄金远征”和“守住商路”同时开放,顺序自由。三条里任意两条完成就开放“裂牙之夜”,第三条在打下终点前都还可以去打——跳过它不算失败。

道路 给下一关的收益
商路上的阴影 国库多 300 金币
薄金远征 建筑打七五折,省满 400 金币为止
守住商路 每位英雄药水补满,另发 200 金币补给款

收益只用在下一关,用完就没了;重打那一关会再拿到一次。随行队伍、国库的一半(最多 1000)、研究和城堡路线,都和边境远征一样带到下一关。

点选一枚印章,右边就会显示那一关:故事和目标、大约要打多久、开局的国库和收益。虚线圈是还没开放的关卡(面板会写还差几条路),金圈是可以出发的,双圈是这一轮已经打过的。按出发开始;练习可以单独重玩已经打过的关卡,不会影响这一轮。在地图出现之前就打过的关卡会盖上印记。拖动平移、滚轮缩放、方向键在印章之间移动、Enter 出发、Home 看整张地图。

战役的 map_route.json 把它的关卡放到地图上,在战役编辑器的地图页制作:每个节点是一关,位于地图坐标 x、y(从左上角算起,0 到 1),写明它等待哪些节点(after)以及要打下其中几个(need,不填就是全部);minutes 是简报上的估计时间,reward 是一次性收益(trade_subsidy、build_discount 或 escort_supply,加上 amount)。links 是墨线,end 是最后一个节点,art 是底图:demo_frontier,或战役文件夹里的 PNG/JPG(每边最多 8192 像素、总共最多 1600 万像素;否则是素色羊皮纸)。按检查路线会画出预览。唯一没有 after 的节点就是起点;地图必须有某种顺序能打到终点,创意工坊也会要求每个节点都是同一个战役或游戏自带战役的关卡。

战役只要在 campaign.json 旁边放一个 expedition.json 文件,就会变成远征。在战役编辑器的远征路线标签页制作:给每个节点指定战役中的一关,以及它给下一个节点的金币(0 到 2000),列出接下来能走的路,再选好起点与终点。检查路线会告诉你它组成几条路线。创意工坊的检查会要求每个节点都对应到同一个战役,或游戏自带战役的一关。试玩可以从起点开始玩这条路线。

{
"version": 1, "id": "frontier", "start": "camp", "end": "pass", "length": 4,
"nodes": [{"id": "trade", "campaign": "expedition.frontier", "level": "trade", "grants": {"gold": 300}}, "..."],
"edges": [["camp", "trade"], ["trade", "tomb"], "..."]
}

路线必须能从起点走到终点,不能有环路,每个节点都要在某条路线上,而且每条路线都和 length 一样长。requires 列出这条路线在 expeditions 之外还需要的能力(例如 relics 或 lair_expansion)。关卡没有安装、或版本缺少它所需能力的路线,仍会列在远征画面上并注明原因,但无法开始。关卡可以用触发条件 expedition_won 与 expedition_lacks({"node": "<id>"})依这一轮走过的路行事,而目标 complete_relic(完成一处遗迹的工作)与 intercept_supply(在 N 名敌方补给运输者送达前击杀他们,或铲平每一座派出他们的营地)则能给节点一个目标。


每个战役关卡可以设定以下胜利条件之一:

victory 条件 说明
free 自由模式 无特定胜利条件,自由游玩
destroy_enemy_buildings 摧毁所有据点 消灭地图上所有敌方据点
survive_ticks 存活指定时间 城堡存活超过指定 tick 数
reach_gold 累积指定金币 玩家金库达到目标金额
destroy_building 摧毁指定据点 摧毁特定类型的敌方据点
defend 防御城堡 城堡在指定时间内不被摧毁
collect_chests 收集所有宝箱 开启地图上所有宝箱
secure_trade 确保商路 商队完成 victory_value 趟往返,且地图上所有敌营都被摧毁

战役以文件夹形式存放在 campaigns/ 目录下:

campaigns/
└── tutorial/
├── campaign.json # 战役元数据与关卡列表
├── level1.json # 第一关地图
├── level2.json # 第二关地图
└── ...
{
"name": "教学战役",
"description": "学习基本游戏机制",
"levels": [
{
"map": "level1.json",
"title": "新的开始",
"intro": "欢迎来到不驯之冠...",
"outro": "恭喜过关!",
"starting_gold": 500,
"victory": "destroy_enemy_buildings",
"victory_value": 0,
"victory_target": "",
"unlocked_buildings": [],
"carry_over": {"gold": true, "adventurers": true},
"triggers": [
{"id": "welcome", "condition": "tick_reached", "params": {"value": 2},
"action": "show_message", "action_params": {"text_key": "tut_welcome"}}
]
}
]
}
字段 说明
map 地图文件路径(相对于战役文件夹)
title 关卡标题
intro 开场文字
outro 过关文字
starting_gold 初始金币 (0 – 10⁷)
victory 胜利条件类型
victory_value 胜利条件数值(如存活 tick 数、目标金额等) (0 – 10⁹)
unlocked_buildings 可用建筑白名单(限制玩家的建造选项)。空列表表示允许所有建筑;unlock_building 只会往非空列表里添加。
victory_target destroy_building 要摧毁的据点类型(例如 DRAGON_NEST),其他条件会忽略
carry_over 从上一关保留的内容:gold、adventurers、research、path(城堡路线与它的专精)(各为 true/false)。关卡在 carry_over 列出的内容,是玩家直接接着玩时从同一战役的另一关带过来的,并在那一刻记录下来;这一关每次重试都从这份记录开始。从任务列表开始的关卡什么都不带,关卡没有列出的内容(研究与城堡路线也一样)不会跟着换地图留下来。
triggers 脚本事件:condition + params、action + action_params,可选 id、after(等该触发器触发后才检查)与 once。条件:always、tick_reached、tick_after_fire、gold_at_least、adventurer_count_at_least、building_built、building_count_at_least、any_building_damaged、enemy_buildings_destroyed、enemy_building_seen、chests_opened、enemy_killed_count、bounties_completed、buildings_lost、caravan_rounds、caravans_lost、ticks_after_step、site_count_at_least、bounty_posted、taxes_collected、branch_chosen、spell_cast、hero_geared。动作:show_message、unlock_building、spawn_boss、start_event、spawn_enemies、post_bounty、grant_gold、reveal。不是对象或有字段值类型不对的触发器会被略过,并在控制台报告。chests_opened、enemy_killed_count 与 bounties_completed 从关卡开始时计数。重复的触发器(once: false)在条件成立的每个 tick 都会执行,所以检查会拒绝会刷怪、给钱、插旗或启动事件的重复触发器;BOSS 遭遇只会启动一次,也不能要等它自己被打倒才启动。spawn_enemies 的敌群可以带 march(castle 或 road):这样它会往城堡或最近的交易站进军,而不是在出现的地方游荡。reveal(x、y、1 到 40 的 radius)让玩家看到一个地方:这个半径内的地面视为已探索。ticks_after_step 从 after 所指的触发器触发的那一 tick 起算 value。show_message 的参数写成 i18n:<key> 时,会先翻译再放进文字里,所以讯息可以用游戏自己的称呼来指面板或建筑。
id 关卡的固定名称,用于进度与 requires(字母、数字、.、-、_);省略时按位置为 level<n>
requires 必须先完成的关卡:本战役的关卡 id,或 <战役 id>/<关卡 id>
ruleset 只能是 kingdom,也可以省略:每一关都采用王国规则。写了 classic 或什么都没写的关卡或地图会当作王国来玩;不认识的名称会被拒绝
castle_level 关卡开始时的城堡等级(1–3);省略时为主堡
time_limit 关卡可用的 tick 数;时间到还没赢就算输。0 或省略表示不限时
advice 简报里的建议;和其他文字一样可以是 i18n: 键
side_quests 关卡的可选目标,最多两个,每个是 {"kind", "x", "y"},kind 为 supply_party, guarded_cache, lair_treasure;可用 enemy 或 lair 指定那里是谁
objectives 最多 8 个附加胜利条件,每个是 {"victory", "value", "target", "required"},victory 可用 free 以外的任何条件。主要胜利(若不是 free)与所有必做条件同时达成才算过关;选做条件会在目标栏计数并列在结算画面
defeats 最多 4 个额外的失败条件,每个是 {"kind", "value"}:自关卡开始起 heroes_lost(倒下的英雄)、buildings_lost(失去的建筑)或 caravans_lost(失去的商队)达到该值即失败
hero_bonds_disabled true:本关英雄不会结下新的羁绊,也不邀请伙伴(之前的羁绊仍保留);省略时羁绊照常

战役本身可以带 id(记录进度时用的名称)与 "linear": false(互相独立的挑战:赢下一关不会接到下一关)。也可以列出 blocked_events:这个战役的关卡不会掷出的随机事件名称(例如 DRAGON_NEST)。还可以列出 roster:会在这个战役的关卡游荡与入侵的敌人种类(例如 GOBLIN);不列就是全部种类。


试玩版的剧情战役(campaigns/demo_kingdom/)从主菜单进入。它和教学一样由 game/systems/demo_campaign.py 写出。

任务 目标 失败条件 开局
1. 第一顶王冠 找出主堡东边的哥布林营地并让人摧毁它 主堡陷落 1600 金币与一份精简的建筑清单,外加铁匠铺与市场的废墟
2. 商路上的阴影 让商队完成三趟往返并摧毁强盗营地 城堡陷落 2400 金币、2 级城堡、一座小镇与两条铺好的路
3. 裂牙之夜 击败裂牙酋长 城堡陷落 3000 金币、2 级城堡与六座建筑的城镇

任务 1 从铁匠铺与市场的废墟旁开始:王室工班免费把它们重建起来,先盖铁匠铺;你放下的建筑(包括第一座公会)要排在它们后面等工班,除非你把它标记为优先。任务一的消息会从第一座公会带到第一位英雄、市场与税务员。开始约 48 秒后,王室自费在营地附近张贴一张探索悬赏;有英雄完成后,会请你对营地张贴讨伐悬赏。任务二中,王室会先让人探查两处交易站地点,强盗会袭击南路一次(提前 20 秒预告),第一次失去建筑时会收到 400 金币的援助。任务三中,第一波袭击在第 1000 tick 从东边的路到来,第二波在第 2500 tick 从北边的路到来,裂牙酋长在第 4300 tick 到,每次都提前 100 tick 预告;攻下他的要塞是一趟值得掠夺的远征,但只有击败他才算过关。任务一与任务二可以盖工人公会来修理;任务三的城堡一开始就是 2 级,可以马上选路线,攻下的要塞也不会再派出它自己的袭击。任务 2 与任务 3 在直接接着玩时保留上一关的研究;每次重试都和第一次尝试一样开始,从列表选的任务则不带研究。

挑战(campaigns/demo_challenges/,"linear": false)用同样的方式写出。《薄金远征》在任务二过关后开放:600 金币、二级城堡、南路上有交易站的小镇,要在 15 分钟内(time_limit)摧毁哥布林帐篷与袭击商路的强盗营地;营地自己的袭击开始前,强盗会先试探商路两次。《守住商路》在任务三过关后开放:交易站已经开张,强盗每 500 tick 从南路来一次、一次比一次强,要在 14 分 20 秒内让商队完成 10 趟往返。自由王国(试玩版的“自由王国”或正式版的沙盒模式)没有目标;开局对话框可以选择让裂牙酋长在开局 20 分钟后来袭一次(game/systems/free_kingdom.py)。在《守住商路》里,每一波袭击都往交易站进军:没人防守的交易站会被拆掉,商队也跟着消失,所以什么都不做就会输掉这个挑战。

  1. 在「创作/创意工坊」选 新增项目,再选 王国任务,并指定一个新文件夹。你会得到一个可以直接玩的关卡:一座城镇、东边的哥布林帐篷、王室授予的探索/讨伐/防守旗标、两波有预告的敌人,以及作为具名 BOSS 的酋长。
  2. 用战役编辑器打开它。关卡表单有故事(前言)、简报显示的建议、起始金币与胜利条件;下面是起始城堡等级、时限,以及最多两个可选目标和它们的位置。
  3. 画地图:移动城镇、怪巢与道路。地点必须是城堡走得到的,否则开局时那里的东西会被略过。地图文件里的建筑可以带 "ruin"(1 到 99):它以已完成该百分比工作的工地开始,由王室工班免费盖完。
  4. 打开触发器来改消息、王室授予的旗标(post_bounty)、敌波(spawn_enemies)与 BOSS 出现的时间(spawn_boss)。条件 enemy_building_seen 会等到有怪巢进入视野。
  5. 在 campaign.json 里,战役的 roster 列出会在地图上游荡的怪物,blocked_events 列出不会掷出的随机事件。
  6. 验证:检查会按字段指出写错的城堡等级、时限、可选目标、阵容或事件名称。接着从工作区试玩这一关;在那里选的难度会决定袭击、敌波与起始金币的大小。
  7. 先以私人方式发布,玩起来符合你的想法之后再公开。

英雄依可达路程、价格与实际住宿容量选店。撤退后先恢复再接危险工作;远征详情显示准备状态与可达休养点。自定义关卡最多提供三个完整胜利方案,共同必要条件仍须完成。 原有单一胜利条件关卡在期限的最后一个 tick 完成目标仍判胜利;替代胜利方案保持失败优先。

{
"victory": "free",
"objectives": [
{
"victory": "protect_building",
"target": "trade-post"
}
],
"victory_plans": [
{
"id": "commerce",
"title": "i18n:victory_kind_caravan_rounds",
"objectives": [
{
"victory": "caravan_rounds",
"value": 2
}
]
},
{
"id": "assault",
"title": "i18n:victory_kind_destroy_building",
"objectives": [
{
"victory": "destroy_building",
"target": "GOBLIN_TENT"
}
]
}
]
}
{"type": "TRADING_POST", "x": 100, "y": 80, "objective_id": "trade-post"}

远征详情可定位可达的药店与休养点,并列出已学治疗与同伴护盾能力。商店记录累计到访、平均路程耗时与受袭情况;结算显示一个主要通关方案及同时达成的事迹,基本结算只有一次。

含古代烽火台的地图中,选择已发现的现场,可在详情栏查看费用、期限与选择。修复需工班或建造者真正到场,进度一半时暂停,等待追加资助或撤回;完工后预警 20 格内已发现的敌人。拆取需英雄自主接受探索旗、抵达并工作,国库与执行者各领一次回报。搁置不启动期限;撤回只退未支用款项。遗迹不招募,也不强化旗帜。离开本关会放弃已接受的遗迹工作,并像撤回一样退还还没花掉的资金;遗迹的效果留在它的地图上,只有战役会承接的东西(金币、英雄、研究)会带到下一关。

地图与战役关卡可声明 lair_expansion 能力并提供最多四条同名列表数据。每条必须有 id、target,用唯一 objective_id 指向现有哥布林帐篷。补给者真正抵达才资助前哨,施工需存活执行者到场。货队、护卫、守军与袭击共享有限单位预算:每来源最多四轮与 64 个新单位。前哨被毁会延后、削弱尚未出发的攻势;主巢被毁停止新生产,但保留活着的单位与可选前哨。前哨不增加主巢必做胜利目标。 未设置计划维持旧排程。运输者背着专用货箱,拥有独立动画与音效,只在指定货队出现。侦察后可对移动运输者张贴讨伐悬赏;击杀会取消该批货物并延后生产,存活护卫仍留在战场。货物与赏金各结算一次,取消沿用现有退款规则。 前哨有独立的施工架、完成补给棚与毁损残骸外观。工地可被攻击,须由存活工人施工,未完成前不产生新守军。拆前哨会延后尚未出发的攻势,并将集结移回主巢;攻主巢会停止生产,但保留存活单位与孤立前哨。每来源至多保留一处装饰残骸,不产生守军或增加胜利目标。

地图与战役编辑器共用“怪巢扩张”表单:选择最多四个现有哥布林帐篷,设置保护、准备、送达、施工、集结与冷却时间、轮次与共享单位预算、护卫,以及每来源最多八个禁止扩张矩形。时间为游戏秒,以 0.2 秒为单位。应用只更新作者草稿,取消会保留原值;清空地图来源即停用扩张。战役可明确勾选本关停用,优先于地图;未勾选时,空白关卡列表继承地图设置。重复/缺失来源及越界禁区会在保存前拒绝。

全图共享前哨上限可设为一至四处。资助新工地的货队出发前先占名额;满额时其他来源等待,不额外出兵或囤积攻势。存活孤立前哨在被毁前仍占名额。

“敌方补给情报”图层只显示已观察路点与据点。主巢生产、血量、金库与守军,前哨阶段/进度,以及货队位置各有观察时间。离开王国视野后保持最后观察值,暗处施工或毁损不会改变已知外观;再次侦察才更新。路线最多记住十六个已观察路点。发现通知存读档后仍去重,简报说明拦截、拆前哨、攻主巢与固守有限预算四种策略。

自由游玩提供默认关闭的有限哥布林帐篷扩张开关。混合或哥布林限定时,指定巢穴数中的一席留给哥布林帐篷,最多绑定四座现有帐篷,不增加巢穴总数;其他敌族不凭空生成来源。战役使用作者设置,不套用此偏好。

补给前哨的工架、仓棚、残骸各有可辨识轮廓与动态旗布,减少动态时旗布静止。运输者只在实际施工推进时敲锤。货队发现及观察到的开工、完工、残骸各有图标与音效;暗处变化不发提示,读档不重复已观察通知。作者表单在小窗口可滚动,情报面板可用键盘滚动。

补给者会等移动单位离开新前哨占地,最多等 10 秒,也不会超过原交货期限;时间到了照样交货,还站在占地上的单位会被移到最近的空格。补给者与护卫停在预定占地外。

完成古代烽火台的拆取后,工班不会再免费修复;拆取与修复仍是互斥的选择。

以下为墓室与驿站的默认条款。选取已发现现场可查看作者实际设置的费用、原期限剩余与结果;选择时游戏仍持续运行。

事件簿面板的“可选目标”区会追踪已发现遗迹的所选分支、进度、等待原因、原期限剩余与实际结果;“定位”只定位原现场,不接受选项或花费金币。遗迹进入视野时会有消息,已接受的工作停在一半、失败或完成时也会;自己选择撤回则只在日志留下一行。现场的样子会反映状况:接受工作前是废墟,王室施工时有鹰架和堆好的材料,完成后是所选结果(点亮或拆光的烽火台、封印或打开的墓室、重建的驿站),失败则成了瓦砾。工作停住的原因会说清楚:没有英雄可接、英雄回绝的理由、现场附近有怪物、工班先做别的工作(以及这个现场排第几),或是水域、悬崖、建筑把现场围住了。

可选遗迹数量: 0 为关闭。最多生成两处不同遗迹,放在城堡安全区外可达的开阔地,保留道路与通路;接受选项前不扣费或开始工作。 现场距城堡 21–80 格,选点时须通过正常工班路线检查。

地图规则与战役关卡共用遗迹编辑器,可编辑最多两处原来源、固定选项子集及有界费用、回报、工量与期限。取消保留原稿,应用前验证来源,不执行玩法。空关卡覆盖继承地图;relics_disabled: true 明确停用继承。清空独立地图的遗迹后,保存会移除其模板。

封印墓室

  • 加固封印: 追加资助后,只压制 墓地 / 亡灵城堡 的 2 波排定袭击。守军、自然出怪与其他来源照常;原威胁来源必须存活。
  • 资助研究: 取得一次符合条件的“奥术亲和”,不可用或已拥有时改领 80 金币。沿用普通法师塔与研究前置;半程暂停,须追加资助或撤回。
  • 开启墓室: 真正探索并击败 3 名骷髅守卫后,领取一次 240 金币财宝。资助才开棺;撤回或到期后,存活守卫仍留在现场。

失落驿站

  • 重建补给点: 恢复共用 6 次一级付费补给:治疗、药水或炼金试剂,沿用普通价格。没有周期收入或升级;重建与救援互斥。
  • 护送幸存者: 志愿英雄须护送原幸存者安全抵达城堡。加入概率 75%,资助时固定;抵达时职业、路线允许且完工游侠公会有空位,才加入一名普通游侠。 国库回报固定为 120 金币,与是否加入无关;不保留候补,救援与重建互斥。