Lantern ShootZombies Night
Lantern survival overhaul. Kill zombies or light a campfire to refuel your lantern, blow the bugle to refill the whole team. Bilingual (CN/EN). Requires ShootZombies 1.3.3.
By WUYACHIYU
| Date uploaded | 2 months ago |
| Version | 0.2.0 |
| Download link | WUYACHIYU-Lantern_ShootZombies_Night-0.2.0.zip |
| Downloads | 339 |
| Dependency string | WUYACHIYU-Lantern_ShootZombies_Night-0.2.0 |
This mod requires the following mods to function
BepInEx-BepInExPack_PEAK
BepInEx pack for PEAK. Preconfigured and ready to use.
Preferred version: 5.4.75301Thanks-ShootZombies
Turns the PEAK blowgun into a configurable zombie-survival weapon system with selectable gun models, lobby weapon grants, an in-game config panel, and host-synced multiplayer settings.
Preferred version: 1.3.3README
LanternShootZombiesNight
A PEAK mod that turns the lantern into your core survival anchor.
Kill zombies to top up fuel, let a snuffed lantern slowly refill itself, or save the bugle for a once-every-3-minutes group-wide refill ultimate. Adds configurable cold resistance, dynamic drain speeds, an on-screen HUD, a passive upgrade tree, and full multiplayer config sync.
The shipped defaults match the Casual preset. First-launch
.cfggives you a forgiving setup out of the box (withActivePreset = Customso your manual tweaks stick). FlipActivePresettoCasual/Balanced/Hardcoreany time for a one-click rebalance.
Requires BlackPeakRemix and ShootZombies 1.3.3 (or newer).
What's new in 0.2.0
The warmth-restore loop was completely reworked
Out: rope / rescue / eat / cook / luggage / huddle warmth. In: zombie hits, campfire, bugle ultimate, and snuffed-lantern auto-refill. Each source has a clear identity — combat, shelter, teamwork, downtime.
Default settings now match the Casual preset
First-launch .cfg is identical to the Casual preset values:
- Lit lantern blocks 75% of cold
- Snuffed lantern auto-refills at 1 fuel-second per real second, anytime (no daytime/hold gating)
- Upgrade system on by default with a cheaper curve (
30,60,90,120,150) and faster passive accrual (every 30s) - 3D fuel indicator on, HUD anchored at Bottom in ExtraLarge size
- Flashlight mode drain softened to 1.2×, proximity grace 15s
Want the old harder values? Switch ActivePreset from Custom to Balanced or Hardcore.
Bugle became an ultimate
- Global 3-minute shared cooldown, not per-bugle
- Blowing it refills every non-faerie lantern on every player within
BugleUltimateRadius(default 20m) - Overflow goes into the reserve pool
- Backpack-stored lanterns refill without being force-lit (they stay snuffed by design)
Host-only item management
- F8 — spawn missing items: empty lantern if you have none, one bugle session-wide (host), backpack if you're empty-handed
- F7 (host) — destroy every bugle in the scene. Handles PUN ownership via a two-phase coroutine (request ownership → wait 0.8s → destroy)
- Stray bugle cleanup — host periodically sweeps bugles left > 100m from everyone for > 60s and destroys them
- Auto-purge — if you're carrying two non-faerie lanterns, the lowest-fuel one is destroyed after a 0.5s grace
Warmth survives a snuffed lantern
- Zombie-kill and campfire refuel no longer care whether your lantern is lit — warmth flows straight into the lantern body (held, tempSlot, or backpack)
- Only overflow (hit restore past full) drops into the reserve pool, which then gets spent first on the next burn
- If you have zero lanterns, zombie-hit warmth still banks into the reserve as a last-resort fallback
ShootZombies 1.3.3 compatibility
- Upstream fixed cook-color tinting themselves, so our defensive overlays were removed
ShootZombiesPerformanceFixslimmed down to only theZombieDeathPatchreflection-elimination Postfix (the part that still wins measurable perf)
⚠️ Breaking change: many config keys were renamed or removed. Delete your old
.cfgbefore the first launch.
See CHANGELOG.md for the full list.
Features at a glance
| System | What it does |
|---|---|
| Fuel capacity | 30 / 60 / 90 / 120 / 240 seconds, or infinite |
| Campfire | Light = full refill; standing near = drain paused |
| Reserve pool | Overflow from Hit / Bugle is banked and spent first on next burn |
| AutoRefill | Snuffed lantern slowly refills up to a cap (default 50%) |
| Cold resistance | 0.0 – 1.0 multiplier when holding a lit lantern (default 0.75 = 75% block) |
| Dynamic drain | Flashlight × 1.2, solo penalty × 1.2 (after 15s grace), teammate discount × 0.8 |
| Bugle ultimate | Group-wide refill, 3-min global CD |
| Upgrades | Passive +1 / 30s, zombie hit +1, campfire +5, bugle +3 — auto-spend on capacity then efficiency |
| HUD | Fuel bar, drain multipliers, last restore source, reserve warmth, day/night, upgrade level |
| Multiplayer sync | Host gameplay settings push to clients in ~1s; HUD / hotkeys / mute stay local |
Config layout
The .cfg file has 5 sections. You rarely need to touch it — use ActivePreset for a one-click rebalance.
| Section | Contents |
|---|---|
[Lantern] |
Fuel capacity, cold resistance toggle + multiplier, campfire refuel, reserve pool, AutoRefill (cap/rate/daytime/hold), drain multipliers (flashlight/companion/solo), proximity grace, extra-lantern purge |
[Restore] |
Master switch, hit warmth seconds, radius, hit cooldown |
[Bugle] |
Ultimate enabled/cooldown/radius/restore amount, stray-bugle cleanup distance/grace |
[Display] |
ActivePreset, HUD on/off, position (8 anchors), size (4 presets), day-night display, 3D fuel indicator, F8 spawn key, F7 host-recall key, mute zombie/tornado |
[Upgrade] |
Enable, level-cost CSV, capacity bonus CSV, efficiency bonus CSV, passive tick interval/amount, per-event point values |
Preset quick-reference
| Casual (= shipped defaults) | Balanced | Hardcore | |
|---|---|---|---|
| Fuel capacity | 120s | 120s | 90s |
| Cold block | 75% | 60% | 40% |
| Reserve pool | Half | Half | Quarter |
| Hit restore | 8s / r50 / cd0.3 | 6s / r45 / cd0.4 | 4s / r35 / cd0.5 |
| AutoRefill cap / rate | 0.5 / 1.0 | 0.45 / 0.7 | 0.35 / 0.4 |
| AutoRefill gating | none | require-hold | daytime + require-hold |
| Bugle CD / radius | 180s / 20m | 220s / 18m | 280s / 15m |
| Drain (flash / solo / companion) | 1.2× / 1.2× / 0.8× | 1.4× / 1.3× / 0.85× | 1.7× / 1.4× / 0.9× |
| Proximity grace | 15s | 25s | 40s |
| Upgrade costs | 30,60,90,120,150 | 45,90,140,200,260 | 60,120,190,270,360 |
| Upgrade capacity max | +75% | +90% | +100% |
| Upgrade efficiency max | −50% | −50% | −40% |
| Passive tick | 30s | 45s | 60s |
| Campfire / Bugle points | 5 / 3 | 5 / 3 | 4 / 2 |
| Mute Z/T sounds | off | off | off |
Switching preset overwrites all gameplay keys at once; HUD / hotkey / mute are considered personal preferences and are not overridden. Custom does nothing automatic — it preserves whatever you've manually edited.
Installation
- Install
BepInExPack PEAK - Install BlackPeakRemix
- Install ShootZombies 1.3.3 (or newer)
- Install
ModConfig(optional but recommended — gives the in-game config UI proper bilingual labels) - Delete any old
BepInEx/config/com.wuyachiyu.LanternShootZombiesNight.cfg— 0.2.0 is a breaking change - Drop
Lantern_ShootZombies_Night.dllintoPEAK/BepInEx/plugins/
Launch the game once to generate the fresh .cfg.
FAQ
Why is the default so generous? Because "survive by managing a lantern" should feel fair on first try. Casual keeps you alive long enough to learn the mechanics; Balanced/Hardcore are there when you want real pressure.
Where did my old cfg go? Why did I lose all my settings? 0.2.0 renamed/removed many keys during the rework. Delete the old file and let 0.2.0 regenerate it.
Why did you remove eat / cook / rescue / rope / huddle warmth? They felt incidental — licking a cooked mushroom shouldn't really keep your lantern lit. The new loop is narrower but every source earns its keep: combat (hit), shelter (campfire), teamwork (bugle ult), downtime (AutoRefill).
Why does the snuffed lantern stop refilling at 50%?
Anti-AFK. The cap gives you enough to relight for the next night but not a free ride. Bump AutoRefillCapPercent if you disagree.
Bugle ultimate didn't seem to trigger for me?
Every client checks its own distance to the bugle independently. If you were outside BugleUltimateRadius (default 20m) you got skipped. Check the log for BugleUltimate ... Skipped (too far).
I'm the host, but F8 doesn't give me a bugle? The check is strict: any bugle anywhere in the session (any player's hand/backpack/tempSlot, or a loose one in the world) blocks the spawn. Wait for the stray-cleanup window (default 60s grace after 100m distance) or have someone discard theirs. Or press F7 to nuke every bugle and respawn one fresh.
Cold resistance not working?
- Game version must be 1.61.b or later
- ShootZombies "Night Cold" is on
- Current ascent is 5 or above
EnableWarmthReductionistrue
Contact
- Author: 乌鸦吃鱼
- QQ Group: 1093172647
CHANGELOG
Changelog
[0.2.0] - 2026-04-26
Final tuning before release
Default config is now "Casual" — friendly out of the box
First-time install no longer drops you into the old hardcore tuning. The default .cfg is now identical to the Casual preset:
- Lit lantern blocks 75% cold (
EnableWarmthReduction=true,LanternWarmthMultiplier=0.75) - AutoRefill runs 1.0 fuel-second per real second, anytime (no daytime/hold gating)
- Upgrade system on by default, cheaper curve
30,60,90,120,150and faster passive accrual (PassiveTickInterval=30s) - 3D fuel indicator on, HUD defaults to Bottom + ExtraLarge
- Flashlight drain dialed back to
1.2x, proximity grace shortened to15s
If you want the old tuning back, switch ActivePreset to Balanced (mid-range) or Hardcore.
The three-way alignment (cfg defaults / Config.Bind defaults / PresetManager.Casual) means manual edits and preset switches stay consistent — no more silent drift between "what gets written on first launch" and "what Casual gives you".
ShootZombies 1.3.3 compatibility — leaner patch surface
Upstream Thanks-ShootZombies shipped 1.3.3 with its own fixes for the cook-color tinting issue. Our defensive overlays were no longer needed and have been removed:
InventoryItemUiCookColorRestorePatch— deletedBackpackWheelCookColorRestorePatch— deletedShootZombiesPerformanceFixslimmed down from 369 lines → 163 lines, keeping only theZombieDeathPatchreflection-elimination Postfix (the part that still gives a measurable perf win)
No functional regression: cook-color now displays correctly in inventory and backpack wheel via SZ's own gating.
Late additions (post-rework polish)
Warmth now survives when the lantern is off (revised)
- Zombie-kill and campfire refuel now work regardless of whether your lantern is currently lit — the warmth flows straight into the lantern body (held, tempSlot, or backpack), RPC-synced to other clients
- Overflow behavior: if the lantern is already full, zombie-hit overflow spills into the reserve pool (campfire is a "refill to max" action, so no overflow by design)
- Why this matters: the reserve pool caps at a fraction of lantern max (
Half/Quarter), so dumping everything straight into it used to waste warmth. Filling the lantern first preserves the full value - Only truly lantern-less players fall back to reserve-pool banking (hit only) so nothing is silently dropped
Host: bugle recall hotkey (BugleRecallKey, default F7)
- Host-only shortcut that destroys every bugle in the scene
- Handles PUN ownership correctly: two-phase coroutine — phase 1 destroys bugles you own + requests ownership on the rest, waits ~0.8s for the RPC to propagate, phase 2 destroys the newly-owned ones
- Pairs with F8 (host bugle spawn): recall all → spawn a fresh one
Bugfix: StrayBugleCleaner couldn't actually destroy stray bugles
- PUN requires
Destroyto come from the current owner; stray bugles are usually owned by the last player who picked them up, not the host - Previous version just logged a warning and gave up
- Now uses two-scan flow: first scan requests ownership (skips destroy), next 5s-scan owns it and destroys cleanly
Bugfix: BugleRecaller had the same async-ownership issue
- Rewrote as a coroutine that waits for the TransferOwnership RPC to land before destroying (see above)
Bugfix: bugle ultimate could force-light lanterns inside backpacks
- Backpack lanterns are supposed to stay snuffed by game design
BugleUltimatePatchnow refills fuel as before but skips theLightLanternRPCcall for backpack slots — logsSkipped re-lit (in backpack)for verification
Cleanup
- Removed the dead
UpgradeMenuKey(F9) config — redundant since upgrades became automatic EnableUpgradeSystemmoved fromDisplaysection toUpgradesection (it never belonged in Display)- Added CN/EN localization for the
Upgradesection (9 entries) andBugleRecallKey
0.2.0 original rework below
Major rework of the warmth-restore system. Old restore sources that felt out of place (rope / rescue / eat / cook / luggage / huddle) are gone. The new loop is: kill zombies for quick top-ups, snuffed lanterns auto-refuel slowly, and the bugle becomes a long-cooldown ultimate.
⚠️ Breaking change: many config keys were renamed or removed. Old
.cfgfiles are not migrated — deleteBepInEx/config/com.wuyachiyu.LanternShootZombiesNight.cfgbefore the first launch.
Removed restore sources
InteractionRestorePatchnow only handles the bugle — the 5 sub-patches (Luggage / Action_ReduceUses / Item.Consume / CharacterItems.DropItemRpc / Rope.Detach_Rpc) are deletedCookingRestorePatch/RescueRestorePatch/HuddleWarmthdeleted outright- Their config keys (
EatRestoreWarmth,InteractRestoreWarmth,DropRestoreWarmth,RopeRestoreWarmth,HuddleRestoreWarmth,DiversityCooldown, etc.) are gone
New: AutoRefill (snuffed-lantern slow regeneration)
- When fuel hits 0 and the lantern goes out, it slowly refills back up to a configurable cap
- Configurable in the new
AutoRefillsection:AutoRefillEnabled(default true)AutoRefillCapPercent(default 0.5 — stops at 50% of max fuel)AutoRefillRate(default 0.5 fuel-seconds per real second)AutoRefillDaytimeOnly(default true — only recharges in daytime)AutoRefillRequireHold(default true — lantern must be held by a player)
- HUD shows "Refill…" while actively ticking
- The lantern stays snuffed — you have to relight it yourself once fuel is back
New: Bugle Ultimate (BugleUltimate section)
- Blowing the bugle is now a group-wide AoE ability with a long shared cooldown
- All non-faerie lanterns on everyone within radius are refilled to max; overflow goes into the reserve pool
- Config:
BugleUltimateEnabled(default true)BugleUltimateCooldown(default 180s — global, not per-bugle)BugleUltimateRadius(default 20m)BugleUltimateRestore(default -1 = refill to max; >0 = fixed seconds)
- Old per-item
Bugle_Enabled/Radius/Cooldown/Restoreconfig is gone
F8 hotkey: host-only bugle spawn
- F8 spawns missing items with stricter gating:
- Lantern: you get one only if you have no non-faerie lantern in hands, backpack, or temp slot; spawned empty (fuel=0) so you can't cheese it by burning one and respawning a full one
- Bugle: only the host can spawn, and only when no bugle exists anywhere in the session (checked against every player's inventory + scene objects)
- Backpack: unchanged
- Faerie Lantern is still exempt — mysterious items never block a regular lantern spawn
New: auto-purge extra lanterns (PurgeExtraLanterns)
- Scans the local player every 2s with a 0.5s grace buffer
- If you're carrying 2+ non-faerie lanterns, the lowest-fuel one (tempSlot first) gets destroyed
- Faerie Lantern is exempt
New: stray-bugle cleanup (host-only, StrayBugle*)
- The host periodically sweeps for bugles no one is holding, far from every player (> 100m), and has been so for a while (> 60s)
- These are destroyed via
PhotonNetwork.Destroyto prevent solo players from "locking" the F8 bugle spawn by tossing one into the void
Upgrade system: passive accrual + CSV-configurable levels
- Points are now gained passively (1 per 60s by default), plus event bonuses:
- Zombie hit: +1
- Campfire light: +5
- Bugle ultimate trigger: +3
- All level numbers moved to the new
Upgradesection as CSVs:LevelCostsCsv(default "50,100,150,200,250" — Casual default ships as "30,60,90,120,150")CapacityBonusCsv(default "0.2,0.4,0.6,0.8,1.0" — Casual default "0.15,0.3,0.45,0.6,0.75")EfficiencyBonusCsv(default "0.1,0.2,0.3,0.4,0.5")PassiveTickInterval/PassivePointsPerTick/HitPoints/CampfirePoints/BuglePoints
HUD simplified
- Restore source icons reduced to: Kill / Bugle / Fire
- AutoRefill shown as a small "Refill…" status text, not an event icon
- Reserve warmth still shown separately
Multiplayer sync
RoomConfigSyncpublishes the new AutoRefill / BugleUltimate / Upgrade / PurgeExtraLanterns / StrayBugle* keys- Presets (Casual / Balanced / Hardcore) re-tuned around the new loop