跳至主要内容

EternalTD 波次與敵人

plugins/EternalTD/waves/ 下的波次檔案定義了某個關卡的完整敵人陣容,包括一般波次、突然死亡波次以及可選的波前或波次訊息。每個關卡設定透過 wavesConfigFile: 引用一個波次檔案。

頂層欄位

欄位類型預設值備註
isEnabledbooltrue在此停用也會停用相依於此檔案的關卡
baseMobAmountint20當條目未指定 amount= 時使用的預設數量
waveEntitiesstring list必填逐波的敵人條目
suddenDeathWaveEntitiesstring list選填在配置波次耗盡後執行的可選循環波次池
prewaveMessageslist of maps選填在特定波次開始前顯示的訊息
waveMessageslist of maps選填波次開始時顯示的訊息

如果波次檔案未定義任何突然死亡條目,則關卡會在配置波次耗盡後立即結束。

波次實體條目格式

waveEntities(或 suddenDeathWaveEntities)中的每一行都是以冒號分隔的條目:

- wave=1:entityType=ZOMBIE:healthMultiplier=1.0:amount=10
- wave=2:entityType=SKELETON:fast:treasure
- wave=5:entityType=WITHER_SKELETON:boss
- wave=8:entityType=PHANTOM:air:horde
類型備註
waveint必填。此條目所屬的波次編號
entityTypeenum必填。Bukkit EntityType 列舉值
healthMultiplierdouble選填。乘以實體的最大生命值
amountint選填。覆寫此條目的 baseMobAmount
namestring選填。自訂名稱字串
resistflag將實體標記為免疫減速
fastflag提高移動速度
treasureflag擊殺時的金幣賞金加倍
bossflag作為單一頭目生成,具有縮放生命值和頭目血條
hordeflagamount 加倍且生命值減半
airflag實體在路徑上方 4 格生成,忽略地面牆壁

內部數量計算

  • amount 在生成前會增加 wave / 10
  • boss 條目會將 amount 覆寫為 max(1, floor(wave / 10))
  • horde 條目會將最終 amount 加倍。
  • 在每個條目數量之外,波次執行時還會額外複製波次的第一個、第三個、第五個... 條目(每個偶數索引 0, 2, 4, ...)最多 waveNumber - 1 次。boss 條目永遠不會以此方式被複製。因此較高的波次會堆疊更多較低索引條目的副本。

訊息區塊格式

prewaveMessageswaveMessages 都接受 maps 列表:

prewaveMessages:
- wave: 1
message:
- "&aWelcome! Build a couple of basic towers along the path."
- wave: 5
message:
- "&6Heads up: a boss is coming next wave."

prewaveMessages 在該波次建造階段開始時執行。waveMessages 在防禦階段開始的那一刻執行。

波次生命週期

工作階段會經歷這些狀態:

  • STARTING — 玩家第一次執行 /etd start 之前。
  • CONSTRUCTION_PHASE — 防禦階段之間的 10 秒建造視窗。
  • DEFENSIVE_PHASE — 敵人正在生成並沿路徑行走。
  • ENDING — 玩家退出、失敗,或關卡的波次耗盡。

建造階段總是持續 10 秒,除非教學保留它(請參閱教學關卡)。

波次結束行為:

  • 完成一波會獲得 waveNumber * 10 金幣。
  • 如果你在這波中沒有受到傷害,你會獲得該獎勵的第二份副本作為「完美」獎勵。
  • 每波結束後會宣布下一波的修飾符列表。

突然死亡

如果定義了 suddenDeathWaveEntities,關卡會在配置波次列表結束後繼續執行。突然死亡計數器每波遞增,當超過池大小時會繞回到突然死亡池的第 1 波。

波次實體的元素契合

每個波次都有自己的元素契合,每波輪換:

  • 第 1 波 → 火
  • 第 2 波 → 風
  • 第 3 波 → 水
  • 第 4 波 → 土
  • (然後重複)

當波次實體生成時,有 waveNumber / 100 的機率讓實體繼承該波次的元素契合,顯示為漂浮在怪物上方的彩色標籤。

元素傷害規則由防禦塔的 DamageTower 類別處理:

  • 相同契合的攻擊者對相同契合的目標 — 0.5× 傷害(抗性)。
  • 對立的單一元素(火 vs 水、風 vs 土)— 2× 傷害(暴擊)。
  • 融合契合(岩漿、爆裂、暴風、淤泥)遵循配對互動;完整矩陣請參閱原始碼。
  • 無契合的塔對所有人造成 1× 傷害。

當基礎塔被具有可組合元素契合的輔助塔接觸時,會形成融合契合:

組合產生的融合
火 + 土岩漿
火 + 風爆裂
水 + 風暴風
水 + 土淤泥

衝突配對(火 + 水、土 + 風)以及任何 3 種以上元素的混合會將塔還原為無契合。

生命值、護甲和賞金縮放

WaveEntity 在生成時套用以下公式:

  • health = (currentHealth + ((wave - 1)^1.2) / 2) × healthMultiplier
  • 頭目實體的生命值會在此基礎上再乘以 baseMobAmount × 0.5
  • 群體實體的生命值減半。
  • 空中實體的生命值再次減半。
  • 護甲僅從第 10 波起出現,設定為 maxHealth / 80
  • 賞金為 ceil(health × 1)treasure 條目加倍。金礦輔助塔會在死亡時增加賞金。

分裂體

從第 20 波起,非空中敵人在死亡時會生成額外的小型怪物(「分裂體」)。

  • 數量:每次擊殺 floor(wave / 20)
  • 如果父實體是 CAVE_SPIDER,則分裂體為 SILVERFISH。否則為 CAVE_SPIDER
  • 分裂體以父實體波次的 wave / 2 生成,因此夠深的執行仍然可以將分裂體串連成更多分裂體(在其自己死亡時)。
  • 分裂體死亡時給予 0 金幣,且空中敵人永遠不會生成分裂體。

教學關卡特殊情況

附帶的教學地圖透過硬編碼的教學波次腳本執行:

  • 建造階段不會自動結束,直到你在高亮顯示的格子上放置了確切所需的塔。
  • 硬編碼的塔由目標格子方塊下方的彩色混凝土補丁指示,如果安裝了 FMM,則由其上方漂浮的向下紅色箭頭模型指示。
  • 教學會在早期波次中為玩家的金幣池作弊增加一些額外金幣,以便腳本化的塔陣容總是負擔得起。

玩家生命和金幣

  • 起始生命:20。
  • 起始金幣:150。
  • 如果頭目怪物到達終點,會消耗 5 條生命。所有其他怪物消耗 1 條生命。
  • 作弊(/etd cheat)將生命和金幣設定為實際上無限的值,並將工作階段標記為已作弊以用於高分目的。

高分追蹤

每個關卡設定會保留 highscoreWavehighscorePlayerName。在非作弊工作階段結束時,插件會將新的波次編號儲存到關卡檔案中,並在打破先前分數時廣播伺服器範圍的訊息。