nobugs
Removes bugs
模組介紹 作者原文
PEAK NoBugs
一個用於遊戲 PEAK 的 BepInEx 5 插件,移除關卡中所有的昆蟲(蜘蛛、蠍子、甲蟲、蜂羣、蟻獅),讓有昆蟲恐懼症的玩家可以安心遊玩。
只針對"昆蟲"生效。殭屍、渡鴉、雪人、水母等非昆蟲的環境 Hazard 不在本插件範圍內(遊戲本身已自帶對應開關)。
支持的昆蟲
| 昆蟲 | 默認 | 說明 |
|---|---|---|
| 蜘蛛 Spider | 移除 | 不再從天花板垂降並抓住玩家 |
| 蠍子 Scorpion | 移除 | 不再中毒 / 擊退 |
| 甲蟲 Beetle | 移除 | 不再把玩家頂飛 |
| 蜂羣 BeeSwarm | 移除 | 蜂巢不再孵化蜂羣(從源頭阻止生成) |
| 蟻獅 Antlion | 移除 | 沙坑不再吞噬玩家 |
| 青蛙舌 FrogTongue | 保留 | 兩棲類,不算昆蟲,默認不移除 |
每種昆蟲都能在配置文件裏單獨開關。
安裝
前置條件:遊戲目錄已安裝 BepInEx 5(本項目基於 5.4.23 編譯)。
- 編譯本項目(見下方"構建"),得到 bin/Debug/netstandard2.1/nobugs.dll。
- 將 nobugs.dll 複製到遊戲的插件目錄:
/steamapps/common/PEAK/BepInEx/plugins/nobugs.dll
- 啓動遊戲,日誌中應出現:
[Info: nobugs] PEAK NoBugs v1.0.0 已加載,昆蟲清理已啓用。
配置
配置文件在 /BepInEx/config/nobugs.cfg,可隨時修改後重啓遊戲生效:
[Bugs]
是否移除蜘蛛
RemoveSpiders = true
是否移除蠍子
RemoveScorpions = true
是否移除甲蟲
RemoveBeetles = true
是否移除蜂羣
RemoveBees = true
是否移除蟻獅
RemoveAntlions = true
是否移除青蛙舌(非昆蟲,默認關閉)
RemoveFrogTongues = false
[General]
true = 直接銷燬蟲子對象(更徹底);false = 僅隱藏並禁用其行爲(聯機更安全)
DestroyObjects = true
實現原理
通過 Harmony 在昆蟲各自的生命週期入口打補丁。具體針對遊戲的反編譯分析(見 agent.md):
- Spider.Start / Spider.Scan / SpiderTrigger.OnTriggerEnter
—— 阻止蜘蛛向 SpiderManager 註冊並阻斷垂降抓人;
- Mob.Start(Postfix,運行時按類型判斷) —— 移除 Scorpion / Beetle / FrogTongue(三者都繼承 Mob,但並未重寫 Start);
- Scorpion.InflictAttack / Beetle.InflictAttack —— 雙保險,即使對象殘留也不會造成傷害;
- Beehive.Init —— 將 spawnBees 置爲 false,從源頭阻止聯網生成蜂羣(比事後銷燬更乾淨,避免多餘 Photon 網絡對象);
- BeeSwarm.Start —— 移除已存在於場景 / 存檔中的蜂羣;
- Antlion.Start —— 移除蟻獅。
每個目標都採用"阻止生成 + 阻斷傷害"的雙重保險,規避加載順序差異。
爲什麼不能只改遊戲自帶的 Hazard 開關
RunSettings 裏雖然定義了 Hazard_Spiders / Hazard_Beetles / Hazard_Scorpions / Hazard_Bees,但經逆向分析確認,這些枚舉值除了註冊默認值以外,從未被任何昆蟲代碼讀取;只有 Antlion 和 FrogTongue 真正自檢了開關。遊戲自帶的 "Bug Phobia"(昆蟲恐懼症)模式也只是把蟲子模型換成其他造型,行爲傷害依舊存在。因此必須用補丁才能真正移除。
聯機注意事項
蟲子的生成與狀態由房主(MasterClient)主導:
- 若僅客戶端安裝本插件,本地蟲子會被銷燬,但可能與房主狀態不一致;
- 建議房主也安裝,或把 DestroyObjects 設爲 false(改爲僅隱藏並禁用),以降低聯機不同步的風險。
構建
需要.NET SDK 與遊戲程序集(位於項目 lib/ 目錄,已從遊戲安裝目錄 PEAK_Data/Managed 提取):
dotnet build
輸出:bin/Debug/netstandard2.1/nobugs.dll
編譯期依賴的 BepInEx.dll / 0Harmony.dll / Photon*.dll / Assembly-CSharp.dll 均來自 lib/,以保證與遊戲運行時版本一致。
lib/、dnSpy/、obj/、bin/、decompiled/ 已在.gitignore 中排除,不會進入倉庫。
目錄說明
| 路徑 | 說明 |
|---|---|
| Plugin.cs | 插件全部實現(入口 + Harmony 補丁) |
| nobugs.csproj | 項目文件,目標框架 netstandard2.1 |
| lib/ | 編譯引用用的遊戲 / BepInEx 程序集(不提交) |
| dnSpy/ | dnSpy 反編譯工具 |
| decompiled/ | dnSpy 反編譯出的參考源碼(不提交,不參與編譯) |
| agent.md | 逆向分析結論與實現細節(供開發者參考) |
安裝與使用 安裝:BepInEx 外掛
- 本站下載的壓縮包就是模組本體,通常是 BepInEx 外掛(解壓後得到 .dll 或外掛資料夾)。
- 建議流程:用社群模組管理器(如 r2modman)選中本遊戲後匯入該模組,管理器會自動裝好 BepInEx 前置並處理依賴。
- 手動流程:先在遊戲目錄裝好 BepInEx 載入器,再把解壓出的 .dll 或外掛資料夾放進 BepInEx/plugins/。
- 啟動遊戲,BepInEx 控制台會列印載入日誌;確認這個模組出現在日誌裡即為安裝成功。
帶「前置依賴」的模組需要一併安裝,否則不會載入。功能開關通常在遊戲內或外掛自帶的設定檔裡調整。
下面這些內容需要先安裝,否則該模組不會生效: