You are viewing a potentially older version of this package. View all versions.
WUYACHIYU-Lantern_ShootZombies_Night-0.1.2 icon

Lantern ShootZombies Night

Lantern as survival core: configurable fuel, warmth restore from actions, cold resistance, dynamic drain, HUD panel, auto-upgrade system, and multiplayer sync. Bilingual (CN/EN).

Date uploaded 3 months ago
Version 0.1.2
Download link WUYACHIYU-Lantern_ShootZombies_Night-0.1.2.zip
Downloads 102
Dependency string WUYACHIYU-Lantern_ShootZombies_Night-0.1.2

This mod requires the following mods to function

BepInEx-BepInExPack_PEAK-5.4.75301 icon
BepInEx-BepInExPack_PEAK

BepInEx pack for PEAK. Preconfigured and ready to use.

Preferred version: 5.4.75301
Thanks-ShootZombies-1.3.3 icon
Thanks-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.3
Hnsk_Noah-BlackPeakRemix-2.1.8 icon
Hnsk_Noah-BlackPeakRemix

Colorful Peaknight, Remix of Pitch Black PEAK

Preferred version: 2.1.8

README

LanternShootZombiesNight

A PEAK mod that turns the lantern into a core survival tool. Configurable fuel, warmth restore from various actions, cold resistance while holding a lit lantern, dynamic drain speed, and a HUD to keep track of everything.

Requires BlackPeakRemix and ShootZombies.


Features

Lantern Fuel

  • Choose fuel capacity: 30 / 60 / 90 / 120 / 240 seconds, or infinite
  • Lighting a campfire refills the lantern; standing near one pauses fuel drain
  • Reserve warmth pool: overflow from restores is banked and used before main fuel runs out
  • Auto re-light: a snuffed lantern re-lights automatically when fuel is added

Warmth Restore

The following actions restore lantern fuel:

  • Kill zombies (area-based), open chests, use items, eat food, cook, blow the bugle (AoE), rescue teammates, huddle with teammates
  • Unified value mode: chest / item / eat / cook can share a single restore amount
  • Variety limiter: the same source type is blocked within the last N restores (bugle and rope items are exempt)
  • Cooked food bonus multiplier for properly cooked meals

Cold Resistance

  • Adjustable multiplier (0–1): 1 = full cold block, 0.5 = half cold, 0 = no protection
  • Night-only — daytime behavior is untouched
  • Requires EnableWarmthReduction = true in config

Night Cold Warning

A one-time screen warning at nightfall (auto-hides after 15s) when cold resistance cannot work:

  • ShootZombies "Night Cold" is turned off
  • Current ascent is below 5 (no night cold in the base game)

Dynamic Fuel Drain

  • BPR flashlight mode: faster drain (configurable multiplier)
  • Teammates nearby: slower drain (scales with up to 3 players)
  • Going solo: faster drain after a grace period

Upgrade System

Automatic passive upgrades earned through warmth-restore events:

  • Each restore event grants +1 upgrade point
  • Capacity and Efficiency trees alternate (capacity first when tied)
  • Cost per level: 50 → 100 → 150 → 200 → 250
  • Capacity: +20% fuel cap per level (up to ×2.0 at Lv5)
  • Efficiency: −8% fuel drain per level (up to ×0.6 at Lv5)
  • Progress displayed on HUD line 4

HUD Panel

  • Fuel bar (green → yellow → red), drain multiplier, last restore source, day/night info
  • Upgrade progress (level, next cost, points)
  • 8 screen positions × 4 size presets
  • Optional day count, time, and BPR darkness display

Hotkey

  • Press F8 (rebindable) to spawn a missing bugle and/or backpack

Multiplayer Sync

  • The host controls gameplay settings; clients sync automatically
  • HUD position, size, and display preferences stay local to each player

Mute Option

  • Toggle to silence all zombie and tornado sounds

Performance Fixes

This mod also patches ShootZombies and BlackPeakRemix for better performance:

  • Inventory icons only refresh when the item actually changes (not every frame)
  • Zombie UI refresh rate is throttled to prevent lag with many zombies
  • Eliminates redundant per-frame reflection calls and component lookups

Config Sections

All settings are managed through ModConfig. Descriptions auto-detect Chinese / English.

Section Contents
LanternCold Fuel capacity, cold-resistance toggle & multiplier, campfire refuel, reserve warmth max
Restore Master switch, unified value, per-source warmth, huddle settings, radius, cooldown, variety count
DrainMultiplier Flashlight / companion / solo drain multipliers and grace period
Display HUD preset/position/size, day/night display, mute toggle, 3D indicator, upgrade toggle, hotkey

Installation

  1. Install BepInExPack PEAK
  2. Install BlackPeakRemix
  3. Install ShootZombies
  4. Install ModConfig
  5. Place Lantern_ShootZombies_Night.dll into PEAK/BepInEx/plugins/

FAQ

Cold resistance not working?

Check the following:

  1. Game version is 1.61.b or later (older versions have a bug that prevents night cold entirely)
  2. ShootZombies config has Night Cold enabled
  3. Current ascent is 5 or above (no night cold below ascent 5)
  4. EnableWarmthReduction is set to true

Multiplayer settings not syncing?

Make sure the host and all clients are running the same mod version.


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,150 and faster passive accrual (PassiveTickInterval=30s)
  • 3D fuel indicator on, HUD defaults to Bottom + ExtraLarge
  • Flashlight drain dialed back to 1.2x, proximity grace shortened to 15s

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 — deleted
  • BackpackWheelCookColorRestorePatch — deleted
  • ShootZombiesPerformanceFix slimmed down from 369 lines → 163 lines, keeping only the ZombieDeathPatch reflection-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 Destroy to 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
  • BugleUltimatePatch now refills fuel as before but skips the LightLanternRPC call for backpack slots — logs Skipped re-lit (in backpack) for verification

Cleanup

  • Removed the dead UpgradeMenuKey (F9) config — redundant since upgrades became automatic
  • EnableUpgradeSystem moved from Display section to Upgrade section (it never belonged in Display)
  • Added CN/EN localization for the Upgrade section (9 entries) and BugleRecallKey

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 .cfg files are not migrated — delete BepInEx/config/com.wuyachiyu.LanternShootZombiesNight.cfg before the first launch.

Removed restore sources

  • InteractionRestorePatch now only handles the bugle — the 5 sub-patches (Luggage / Action_ReduceUses / Item.Consume / CharacterItems.DropItemRpc / Rope.Detach_Rpc) are deleted
  • CookingRestorePatch / RescueRestorePatch / HuddleWarmth deleted 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 AutoRefill section:
    • 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/Restore config 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.Destroy to 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 Upgrade section 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

  • RoomConfigSync publishes the new AutoRefill / BugleUltimate / Upgrade / PurgeExtraLanterns / StrayBugle* keys
  • Presets (Casual / Balanced / Hardcore) re-tuned around the new loop