戰役模式
戰役模式提供多關卡劇本,每關有特定的勝利條件和故事背景。
遊戲內建一套教學戰役(5 關),引導新手學習各項遊戲機制。它在主選單最上面有自己的按鈕。
遠征是一條由多張地圖串成的路線,每走完一張,再由你選下一張。從主選單的遠征按鈕進入。
邊境遠征有六張地圖、四條路線,每條路線走四張:
| 階段 | 地圖 | 要做什麼 |
|---|---|---|
| 起點 | 邊境營地 | 建起一座城鎮,並剷平東邊的哥布林帳篷。西南方的古老烽火臺可做可不做:修復或拆取都行。 |
| 第一站 | 商道護運 | 在南路盡頭開設交易站,讓商隊完成兩趟收到錢的往返。山賊營寨可以留著不管。下一張地圖多得 300 金幣。 |
| 第一站 | 失落驛站 | 完成驛站的工作:把它重建起來,或把它的倖存者帶回家。下一張地圖多得 150 金幣。 |
| 第二站 | 封印墓室 | 完成墓室的工作:封住它、研究它,或把它搜刮一空。 |
| 第二站 | 敵軍邊境 | 切斷哥布林的補給線(趁運輸者還沒送達時擊殺一名,或剷平派出他們的營地),並剷平哥布林前哨。古老烽火臺可做可不做。 |
| 終點 | 王冠隘口 | 擋下兩波襲擊,再剷平哥布林堡壘。 |
隘口的堡壘會派出第三波援軍,除非你這一輪攻破過敵軍邊境。走墓室那條路線一樣能贏,只是要多打一波。在驛站與墓室,遺跡的工作就是目標,所以不能擱著不管。工作失敗或撤回後會再次提供,只有失去遺跡所在的現場才會輸掉這張地圖。
兩張地圖之間,遠征畫面會列出到目前為止走過的路線和接下來能走的路,每條都附上簡報,以及它會讓路線終點有什麼不同:
- 挑選隊伍:最多六名英雄繼續前進,其餘的留在後方等候。後備最多容納十二名;滿了就送人回家騰出位置。英雄會恢復滿血回來。陣亡的就不會回來了。
- 下一張地圖的國庫是它自己的預算,加上上一張地圖剩下金幣的一半(最多 1000),再加上上一張地圖的獎勵。出發前畫面會先幫你算好。
- 研究與城堡路線整輪都會保留。建築則留在原地。
輸掉的地圖會從同樣的起點重玩:同樣的英雄、金幣與地圖。一輪遠征會停在兩張地圖之間,等你從主選單繼續。放棄這一輪會放棄它,完成則結束一輪已經走到終點的遠征。每條走完的路線都會連同你的最佳時間記在紀錄裡。
試玩版的地圖
Section titled “試玩版的地圖”試玩版的五關也畫在同一張羊皮地圖上,就是遠征地圖。先打「第一頂王冠」;打完後「商路上的陰影」、「薄金遠征」和「守住商路」同時開放,順序自由。三條裡任兩條完成就開放「裂牙之夜」,第三條在打下終點前都還可以去打——跳過它不算失敗。
| 道路 | 給下一關的收益 |
|---|---|
| 商路上的陰影 | 國庫多 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 # 第二關地圖 └── ...campaign.json 格式
Section titled “campaign.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)。在《守住商路》裡,每一波襲擊都往交易站進軍:沒人防守的交易站會被拆掉,商隊也跟著消失,所以什麼都不做就會輸掉這個挑戰。
一步步做一個王國任務
Section titled “一步步做一個王國任務”- 在「創作/工作坊」選 新增專案,再選 王國任務,並指定一個新資料夾。你會得到一個可以直接玩的關卡:一座城鎮、東邊的哥布林帳篷、王室授予的探索/討伐/防守旗標、兩波有預告的敵人,以及作為具名 BOSS 的酋長。
- 用戰役編輯器開啟它。關卡表單有故事(前言)、簡報顯示的建議、起始金幣與勝利條件;下面是起始城堡等級、時限,以及最多兩個可選目標和它們的位置。
- 畫地圖:移動城鎮、怪巢與道路。地點必須是城堡走得到的,否則開局時那裡的東西會被略過。地圖檔裡的建築可以帶
"ruin"(1 到 99):它以已完成該百分比工作的工地開始,由王室工班免費蓋完。 - 開啟觸發器來改訊息、王室授予的旗標(
post_bounty)、敵波(spawn_enemies)與 BOSS 出現的時間(spawn_boss)。條件enemy_building_seen會等到有怪巢進入視野。 - 在
campaign.json裡,戰役的roster列出會在地圖上遊蕩的怪物,blocked_events列出不會擲出的隨機事件。 - 驗證:檢查會依欄位指出寫錯的城堡等級、時限、可選目標、陣容或事件名稱。接著從工作區試玩這一關;在那裡選的難度會決定襲擊、敵波與起始金幣的大小。
- 先以私人方式發布,玩起來符合你的想法之後再公開。
英雄依可達路程、價格與實際住宿容量選店。撤退後先恢復再接危險工作;遠征詳情顯示準備狀態與可達休養點。自訂關卡最多提供三個完整勝利方案,共同必要條件仍須完成。 既有單一勝利條件關卡在期限的最後一個 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 格內已發現的敵人。拆取需英雄自主接受探索旗、抵達並工作,國庫與執行者各領一次回報。擱置不啟動期限;撤回只退未支用款項。遺跡不招募,也不強化旗幟。離開本關會放棄已接受的遺跡工作,並像撤回一樣退還還沒花掉的資金;遺跡的效果留在它的地圖上,只有戰役會承接的東西(金幣、英雄、研究)會帶到下一關。
選用哥布林補給循環
Section titled “選用哥布林補給循環”地圖與戰役關卡可宣告 lair_expansion 能力並提供最多四筆同名清單資料。每筆必須有 id、target,以唯一 objective_id 指向既有哥布林帳篷。補給者真正抵達才資助前哨,施工需存活執行者到場。貨隊、護衛、守軍與襲擊共用有限單位預算:每來源最多四輪與 64 個新單位。前哨遭毀會延後、削弱尚未出發的攻勢;主巢被毀停止新生產,但保留活著的單位與可選前哨。前哨不增加主巢必做勝利目標。 未設定計畫維持舊排程。運輸者背著專用貨箱,具備獨立動畫與音效,只在指定貨隊出現。偵察後可對移動運輸者張貼討伐懸賞;擊殺會取消該批貨物並延後生產,存活護衛仍留在戰場。貨物與賞金各結算一次,取消沿用既有退款規則。 前哨有獨立的施工架、完成補給棚與毀損殘骸外觀。工地可被攻擊,須由存活工人施工,未完成前不產生新守軍。拆前哨會延後尚未出發的攻勢,並將集結移回主巢;攻主巢會停止生產,但保留存活單位與孤立前哨。每來源至多保留一處裝飾殘骸,不產生守軍或增加勝利目標。
地圖與戰役編輯器共用「怪巢擴張」表單:選擇最多四個既有哥布林帳篷,設定保護、準備、送達、施工、集結與冷卻時間、輪次與共用單位預算、護衛,以及每來源最多八個禁止擴張矩形。時間為遊戲秒,以 0.2 秒為單位。套用只更新作者草稿,取消會保留原值;清空地圖來源即停用擴張。戰役可明確勾選本關停用,優先於地圖;未勾選時,空白關卡清單繼承地圖設定。重複/缺失來源及越界禁區會在儲存前拒絕。
全圖共用前哨上限可設為一至四處。資助新工地的貨隊出發前先占名額;滿額時其他來源等待,不額外出兵或囤積攻勢。存活孤立前哨在被毀前仍占名額。
「敵方補給情報」圖層只顯示已觀測路點與據點。主巢生產、血量、金庫與守軍,前哨階段/進度,以及貨隊位置各有觀測時間。離開王國視野後維持最後觀測值,暗處施工或毀損不會改變已知外觀;再次偵察才更新。路線最多記住十六個已觀測路點。發現通知存讀檔後仍去重,簡報說明攔截、拆前哨、攻主巢與固守有限預算四種策略。
自由遊玩提供預設關閉的有限哥布林帳篷擴張開關。混合或哥布林限定時,指定巢穴數中的一席保留給哥布林帳篷,最多綁定四座既有帳篷,不增加巢穴總數;其他敵族不憑空生成來源。戰役使用作者設定,不套用此偏好。
補給前哨的工架、倉棚、殘骸各有可辨識輪廓與動態旗布,減少動態時旗布靜止。運輸者只在實際施工推進時敲槌。貨隊發現及觀測到的開工、完工、殘骸各有圖示與音效;暗處變化不發提示,讀檔不重複已觀測通知。作者表單在小視窗可捲動,情報面板可用鍵盤捲動。
補給者會等走動單位離開新前哨占地,最多等 10 秒,也不會超過原交貨期限;時間到了照樣交貨,還站在占地上的單位會被移到最近的空格。補給者與護衛停在預定占地外。
完成古代烽火臺的拆取後,工班不會再免費修復;拆取與修復仍是互斥的選擇。
以下為墓室與驛站的預設條款。選取已發現現場可查看作者實際設定的費用、原期限剩餘與結果;選擇時遊戲仍持續執行。
事件簿面板的「可選目標」區會追蹤已發現遺跡的所選分支、進度、等待原因、原期限剩餘與實際結果;「定位」只定位原現場,不接受選項或花費金幣。遺跡進入視野時會有消息,已接受的工作停在一半、失敗或完成時也會;自己選擇撤回則只在日誌留下一行。現場的樣子會反映狀況:接受工作前是廢墟,王室施工時有鷹架和堆好的材料,完成後是所選結果(點亮或拆光的烽火臺、封印或打開的墓室、重建的驛站),失敗則成了瓦礫。工作停住的原因會說清楚:沒有英雄可接、英雄回絕的理由、現場附近有怪物、工班先做別的工作(以及這個現場排第幾),或是水域、懸崖、建築把現場圍住了。
可選遺跡數量: 0 為關閉。最多生成兩處不同遺跡,放在城堡安全區外可達的開闊地,保留道路與通路;接受選項前不扣費或開始工作。 現場距城堡 21–80 格,選點時須通過正常工班路線檢查。
地圖規則與戰役關卡共用遺跡編輯器,可編輯最多兩處原來源、固定選項子集及有界費用、回報、工量與期限。取消保留原稿,套用前驗證來源,不執行玩法。空關卡覆寫繼承地圖;relics_disabled: true 明確停用繼承。清空獨立地圖的遺跡後,保存會移除其模板。
封印墓室
- 加固封印: 追加資助後,只壓制 墓地 / 亡靈城堡 的 2 波排定襲擊。守軍、自然出怪與其他來源照常;原威脅來源必須存活。
- 資助研究: 取得一次符合條件的「奧術親和」,不可用或已擁有時改領 80 金幣。沿用普通法師塔與研究前置;半程暫停,須追加資助或撤回。
- 開啟墓室: 真正探索並擊敗 3 名骷髏守衛後,領取一次 240 金幣財寶。資助才開棺;撤回或到期後,存活守衛仍留在現場。
失落驛站
- 重建補給點: 恢復共用 6 次一級付費補給:治療、藥水或煉金試劑,沿用普通價格。沒有週期收入或升級;重建與救援互斥。
- 護送倖存者: 志願英雄須護送原倖存者安全抵達城堡。加入機率 75%,資助時固定;抵達時職業、路線容許且完工遊俠公會有空位,才加入一名普通遊俠。 國庫回報固定為 120 金幣,與是否加入無關;不保留候補,救援與重建互斥。