跳到內容

戰役模式

戰役模式提供多關卡劇本,每關有特定的勝利條件和故事背景。


遊戲內建一套教學戰役(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 金幣,與是否加入無關;不保留候補,救援與重建互斥。