You are viewing a potentially older version of this package. View all versions.
Bananegame-HazardChaos-0.1.16 icon

HazardChaos

Spawns Dynamite, Tornado, and Tumbleweed dynamically near players, optionally hands Tornado control to the game’s AI, and shows per-type spawn timers.

Date uploaded 2 weeks ago
Version 0.1.16
Download link Bananegame-HazardChaos-0.1.16.zip
Downloads 1332
Dependency string Bananegame-HazardChaos-0.1.16

This mod requires the following mods to function

BepInEx-BepInExPack_PEAK-5.4.2403 icon
BepInEx-BepInExPack_PEAK

BepInEx pack for PEAK. Preconfigured and ready to use.

Preferred version: 5.4.2403

README

HazardChaos (PEAK) — v0.1.16

Spawns Dynamite, Tornado, Tumbleweed, and now Troublemaker entities (Zombies, Scoutmaster, Bees, Scorpions) dynamically near players. Optionally hands Tornado control to the game's AI, and shows per-type spawn timers. Runs only in Level_* scenes (e.g., Level_1) — not in Airport/Title/Pretitle.

Features

Per-type schedulers

Independent intervals, TTLs, and caps for each hazard type.

Smart placement

Forward-cone from the chosen player anchor, ground raycast, collision checks; optional line-of-sight (LoS).

Multiplayer aware

  • Only the MasterClient (host) performs spawns → all clients see them.
  • Configurable anchor selection modes to decide whose vicinity to target.
  • Optional capacity scaling per additional player.

Tornado AI hand-off

If the vanilla TornadoSpawner + RPCA_InitTornado path exists, the game's AI takes over; otherwise the mod's mover is used (reliable fallback with parent-drive).

Burst spawns

Configure how many Dynamite/Tumbleweed to spawn at once per tick.

Grace period

Optional protection window after level load before any timers start.

Overlay / Settings

  • Compact overlay with independent timers (per hazard), live counts, and status (F9 toggle).
  • In-game Settings window (F11) to edit config live; Save writes to .cfg.

Performance: Large scales & particles are GPU-heavy. Lower Scale/Radius or enable HardPause if FPS drops.


NEW in v0.1.15

Troublemaker Mode

A new game mode that spawns random hostile entities near players instead of environmental hazards.

Available Troublemaker Entities:

  1. Mushroom Zombie (1-2 per spawn)

    • Spawns near player and wakes up immediately
    • Configurable lifetime (30-300s)
    • Spawn chance: 0-100%
  2. Scoutmaster

    • Teleports 1-2 meters from player
    • Note: May run away instead of chasing (vanilla AI behavior)
    • Spawn chance: 0-100%
  3. Bee Swarm

    • Spawns angry bees that chase players
    • Configurable anger duration
    • Spawn chance: 0-100%
  4. Scorpion (1-3 per spawn)

    • Multiple scorpions spawn near player
    • Automatically "woken up" to start moving
    • Spawn chance: 0-100%

Game Modes (updated):

  • Off — No spawns
  • NormalOnly — Only environmental hazards (Dynamite, Tornado, Tumbleweed)
  • ChallengeOnly — Only challenge events (Challenge Tornado/Tumbleweed)
  • TroublemakerOnly — Only Troublemaker entities
  • Both — Normal + Challenge
  • All — Normal + Challenge + Troublemaker

Behavior:

  • One random Troublemaker entity spawns per interval (configurable: 30-300s with jitter)
  • Sequential spawn chance: If the first entity fails its spawn chance, the next enabled entity is tried (in random order) until something spawns
  • Each entity type can be individually enabled/disabled
  • Spawn distances configurable per entity type (closer than normal hazards for better engagement)

Tunables (section Troublemaker.*):

  • Interval / Random Jitter (global timing)
  • Per-entity: Enabled, Spawn Chance (%), spawn distances, counts, lifetimes

How it behaves in multiplayer

  • Only the MasterClient schedules/spawns.
  • Spawn positions are chosen near an anchor (configurable):
    • HostOnly | RandomPlayer | RoundRobin | NearestToHostCamera
  • With Host proximity enabled, spawns that would land far away from the host are re-anchored to the host's vicinity.
  • All players are affected by hazards; spectators are handled via the camera anchor.

Controls (Hotkeys)

Hotkey Action Scope
F6 Spawn Tornado near anchor host only
F7 Spawn Dynamite near anchor host only
F8 Spawn Tumbleweed near anchor host only
F9 Toggle overlay UI local
F10 Toggle version watermark local
F11 Toggle Settings window host only

Default Settings (from code)

Intervals (independent per type)

  • Dynamite: 15 s
  • Tornado: 90 s
  • Tumbleweed: 12 s
  • Troublemaker: 90 s

TTLs

  • Dynamite: 10 s
  • Tornado: 120 s
  • Tumbleweed: 20 s

Caps (concurrency limits)

  • Global: 6
  • Dynamite: 2
  • Tornado: 1
  • Tumbleweed: 3

Burst counts (per tick)

  • Dynamite: 2
  • Tumbleweed: 3

Tornado fallback movement

  • MoveSpeed: 10 m/s
  • RetargetSeconds: 3.0 s

Challenge — Tumbleweed (defaults)

  • Scale 4, SpeedMult 3, Retarget 1.5 s

Troublemaker (defaults)

  • Interval: 90 s, Jitter: 20 s
  • Zombie: 30% chance, 1-2 count, 120s lifetime, 5-12m spawn distance
  • Scoutmaster: 15% chance, 60s chase time
  • BeeSwarm: 25% chance, 20s anger time, 4-10m spawn distance
  • Scorpion: 30% chance, 1-3 count, 3-8m spawn distance

Adjust any of the keys above to fit your session or server rules.

CHANGELOG

Changelog

0.1.16

Troublemaker Capacity Management

  • Added per-entity cap limits to prevent queue flooding in "All" mode:
    • Max Zombie: 2 concurrent (configurable 1-5 in Spawning.MaxZombie)
    • Max BeeSwarm: 1 concurrent (configurable 1-5 in Spawning.MaxBeeSwarm)
    • Max Scorpion: 3 concurrent (configurable 1-5 in Spawning.MaxScorpion)
  • Troublemaker spawns now respect both global cap and per-entity caps
  • Better logging when caps are reached

Scorpion Improvements

  • Spawn delay: New config Troublemaker.Scorpion.SpawnDelay (1-3 seconds, default: 1.5s)
    • When spawning multiple scorpions, they appear sequentially with delay
    • Prevents overwhelming instant spawns
    • Cap checks between each spawn
  • Lifetime reduced: 45 seconds (was 120s) for faster queue cycling
  • Enhanced activation: Stronger physics impulses (2f upward + random horizontal) for more reliable movement
  • Second activation attempt after 0.5s to ensure scorpions start moving

Challenge Tornado Fix

  • Cap check before announcement: "Tornado incoming" banner now only shows if spawn is actually possible
  • Prevents confusing announcements when global/tornado cap is already reached
  • Double cap check: once before banner, once after delay
  • Better logging for failed spawns due to caps

UI/Display Fixes

  • Challenge timer now correctly displays in "All" mode (was only showing in "Both" and "ChallengeOnly")
  • Consistent timer display across all game modes

Behavior Changes

  • Scorpion spawns are now sequential with delay instead of all at once
  • Each scorpion spawn checks caps individually to avoid overshooting limits
  • More predictable entity counts in "All" mode with multiple spawn types active

Configuration

  • New config entry: Troublemaker.Scorpion.SpawnDelay (float, 1-3s range)
  • New cap entries under Spawning section:
    • Spawning.MaxZombie (int, 1-5 range, default: 2)
    • Spawning.MaxBeeSwarm (int, 1-5 range, default: 1)
    • Spawning.MaxScorpion (int, 1-5 range, default: 3)

Technical Improvements

  • Coroutine-based sequential spawning for scorpions (SpawnScorpionsWithDelay)
  • Cap validation before each individual scorpion spawn
  • Improved physics-based scorpion wake-up with multiple activation attempts
  • Better error messages for troubleshooting cap-related spawn failures

0.1.15

New — Troublemaker Mode

  • New game mode that spawns hostile entities instead of environmental hazards.
  • 4 entity types available:
    • Mushroom Zombie: Spawns 1-2 zombies near player, wakes up immediately, auto-despawns after configurable lifetime (30-300s)
    • Scoutmaster: Teleports 1-2 meters from player (note: may run away due to vanilla AI behavior)
    • Bee Swarm: Spawns angry bees that chase players for configurable duration (5-60s)
    • Scorpion: Spawns 1-3 scorpions that are "woken up" to start moving immediately

Game Modes (expanded)

  • Added TroublemakerOnly mode (only Troublemaker entities spawn)
  • Added All mode (Normal + Challenge + Troublemaker combined)
  • Existing modes: Off, NormalOnly, ChallengeOnly, Both

Sequential spawn guarantee

  • If first entity's spawn chance fails, tries next enabled entity in random order
  • Ensures something spawns each Troublemaker cycle (unless all chances fail)
  • Reduces "nothing happened" cycles significantly

Spawn distance improvements

  • Troublemaker entities spawn closer to players than normal hazards
  • Default ranges optimized for engagement:
    • Zombie: 5-12m (was too far before)
    • BeeSwarm: 4-10m
    • Scorpion: 3-8m
    • Scoutmaster: 1-2m offset from player

Configuration

  • 25+ new config entries under Troublemaker.* sections
  • Per-entity: Enable/disable, spawn chance (%), count ranges, lifetimes, spawn distances
  • Global: Interval (30-300s), Random Jitter (0-60s)

UI/Settings

  • Settings window (F11) expanded with Troublemaker section
  • Nested configuration panels for each entity type
  • HUD overlay shows Troublemaker timer and live entity counts
  • Slider ranges corrected for better usability

Technical improvements

  • Scorpion activation: Physics impulse applied on spawn to wake them up
  • Zombie lifecycle: Coroutines for immediate wake-up and lifetime management
  • Better error handling and logging for entity spawning

Known limitations

  • Scoutmaster may run away instead of chasing (vanilla AI behavior not fully controllable)
  • Zombie spawning produces harmless NullReferenceException in CharacterVoiceHandler (can be ignored)

0.1.14

New — Challenge: Tornado

  • Configurable challenge Tornado with banner + optional pre-spawn delay.
  • Movement uses the mod's mover (same feel as normal mod Tornado), with:
    • Scale (visual), SpeedMult, RetargetSeconds (1.5–3.0)
    • PullRadius (up to 100), PullForce (up to 100)
    • LiberateKinematic, LiberateMaxMass (up to 150)
  • Safer placement: ring around the selected player, ground-snap, and a small push-out so it doesn't appear too close.
  • BothRandom: if a Challenge Tornado is already active when the timer fires, a Challenge Tumbleweed spawns instead.

New — Host proximity gate (optional)

  • Challenge.RequireHostNear (default true) + Challenge.HostNearMeters (default 150).
  • If a computed spawn near a chosen player would be farther than the radius from the host, the spawn is re-anchored and recalculated near the host to avoid map-spawn fallbacks.

Performance

  • UI throttle now pauses only Normal spawns when an interactive game UI is open. Challenge spawns are not blocked, so events won't stall on menus.
  • UI detection refined to avoid false positives from HUD/overlays.

Fixes

  • Vanilla Tornado NRE when airborne (Tornado.PickTarget) fixed by always providing a valid targetParent (fallback parent and reparenting) and keeping transform sync.
  • Challenge Tornado sometimes spawning too close to the player: additional push-out applied after clamping to the ring.
  • Normal timers are correctly paused on ChallengeOnly at level start and resumed when switching back to Normal/Both.

UI

  • Settings sliders updated to match intended ranges:
    • Challenge Interval: 30–300 s
    • Challenge Tornado Scale: 2–5
    • PullRadius: up to 100
    • RetargetSeconds: 1.5–3.0
    • PullForce: up to 100
    • LiberateMaxMass: up to 150

0.1.13

Game Mode selector (Off / NormalOnly / ChallengeOnly / Both). Set it in the in-game settings; the active mode is also shown on the overlay.

Challenge: Aggressive Tumbleweed A special Tumbleweed that actively chases players. Tunables under Challenge.Tumbleweed:

Scale (visual size)

SpeedMult (chase speed)

RetargetSeconds (how often it picks a new target)

Next Challenge countdown Overlay and Settings window display time remaining until the next Challenge spawn.

Global Settings window (F11) available in all scenes. Includes a dimmable background (Overlay -> Settings Alpha).

Improvements

Timer reset on mode change Switching Game Mode now resets all internal spawn timers (Normal & Challenge) to prevent immediate spawns after a switch.

UI organization New sections for Mode, Challenge (global), and Challenge — Tumbleweed for clearer configuration.

Fixes

ChallengeOnly no longer "leaks" Normal timers in the background; spawns are aligned with the selected mode.

Default values (changed)

TTL.TumbleweedDespawn 20s

Notes

Challenge Tumbleweed's damage is not scaled by size in this version; difficulty comes from pursuit behavior and speed.


0.1.12

In-game settings window

Press F11 to open the HazardChaos Settings anywhere (title/airport/levels). Independent from the overlay (F9).

Edit config live (sliders/toggles/dropdowns). Click Save to write to the .cfg.

Grouped sections for quick navigation: Intervals, TTL, Spawning & Caps, Tornado, Overlay, Version, Multiplayer, Debug.

UI/UX

Screen dimmer behind the settings window for readability on bright scenes. Configurable via Overlay.SettingsDimAlpha (0–1, default 0.55).

Behavior changes

None to gameplay/spawn logic in this release. Pure QoL for configuration.

Internal / maintenance

Codebase split into multiple files (partials) for readability: Anchors.cs, Spawning.cs, UI.cs, ModTornadoMover.cs (single [BepInPlugin] attribute kept in core)


0.1.11

Optional multi-spawn for Tornados

Tornado.MoreTornados (default: false): when ON, Tornados can spawn in bursts (spread respected, caps still apply).

Tornado.BurstTornado (default: 1, range 1–5): how many Tornados per tick when multi-spawn is enabled.

Config structure — clearer sections & renamed keys

Sections now grouped as: Intervals, Spawning, TTL, Tornado, Overlay, Version, Multiplayer, Debug.

Renamed keys:

TTL.DynamiteDespawn (was TTL.DynamiteTTL)

TTL.TornadoDespawn (was TTL.TornadoTTL)

TTL.TumbleweedDespawn (was TTL.TumbleweedTTL)

Tornado.UseVanillaWhenAvailable (was Tornado.UseVanillaAIWhenAvailable)

UI moved/split:

Overlay.SpawnTimerUI & Overlay.HotkeyOverlay (were UI.SpawnTimerUI & UI.ToggleKey)

Version.WatermarkEnabled, Version.HotkeyVersion, Version.Corner, Version.FontSize, Version.Alpha, Version.Margin (were under UI.Version.*)

Note: Legacy entries remain in the .cfg but are ignored; no migration required.

Default values updated

Intervals: Intervals.IntervalDynamiteSec 15s, Intervals.IntervalTornadoSec 90s, Intervals.IntervalTumbleweedSec 12s.

Bursts & spread: Spawning.BurstDynamite 2, Spawning.BurstTumbleweed 3, Spawning.BurstSpreadSeconds 3.0s.

TTLs: TTL.DynamiteDespawn 10s (was 20), TTL.TornadoDespawn 20s (was 15), TTL.TumbleweedDespawn 10s.

UI defaults: Overlay.SpawnTimerUI false (off by default), Version.WatermarkEnabled false; watermark corner now TopRight, font size 13.

Multiplayer default: Multiplayer.AnchorMode now RandomPlayer (was NearestToHostCamera).

Housekeeping

Old "Weights" entries are no longer used (commented out in code).

Notes

Multi-spawn still respects Spawning.MaxTornado and Spawning.MaxSimultaneousGlobal.

To actually see multiple Tornados, increase those caps accordingly


0.1.10

Reliable Tornado movement in all areas

Drive-the-parent fix: the mod now moves the Tornado's targetParent (Mod_TornadoTargetParent) and reparents the Tornado under it. This avoids vanilla scripts snapping the Tornado back when no TornadoSpawner is present. Fixes the "spawns and stands still" issue outside MESA.

Last-word movement: fallback mover runs in LateUpdate() with DefaultExecutionOrder(10000), ensuring its final transform wins even if other scripts adjust earlier in the frame.

Soft-disable vanilla movers on fallback: TryDisableVanillaMovement() best-effort disables NavMeshAgent / CharacterController, sets Rigidbody kinematic/no-gravity, and turns off common Tornado mover scripts to prevent position resets.

Grounding & glide: continuous ground projection plus a tiny side-step when blocked (spherecast) for smoother drift instead of jitter or sticking.

Networking robustness: ownership hand-off to host when needed and auto-add of PhotonTransformViewClassic if missing to keep movement synced.

Config / Compatibility

No new config keys. Existing options continue to work (Tornado.UseVanillaAIWhenAvailable, Tornado.ForceModMover, Tornado.MoveSpeed, Tornado.RetargetSeconds).

Logging

Clearer logs when the fallback mover is used and which transform is being driven


0.1.9

Tornado AI hand-off: If the vanilla TornadoSpawner + RPCA_InitTornado path is available, the mod now prefers the game's built-in AI. Only falls back to the mod's mover when needed.

Burst spawns (configurable): You can now spawn multiple objects per tick for specific types.

New config keys:

Spawning.BurstCountDynamite (default: 1)

Spawning.BurstCountTumbleweed (default: 1)

Version watermark improvements: Small version label can be shown on the title/start screens and in-game. Position, size, margin, and background alpha are configurable. Toggle with F10.

UI.Version.WatermarkEnabled (bool), Corner (TopLeft|TopRight|BottomLeft|BottomRight), FontSize (int), Margin (int), Alpha (0–1).


0.1.8

Level start grace period: Optional protection window before hazards begin (default: 60s).

Spawning.GracePeriodSeconds (float). Timers start counting after the grace period ends.

UI polish: Watermark added (see 0.1.9 for the full set of options).

Quality: Minor stability/perf tweaks around scene transitions.


0.1.7

Independent per-type scheduling: Each hazard has its own spawn interval and cap:

Intervals (defaults):

Dynamite: 12.5s (Intervals.IntervalDynamiteSec)

Tornado: 40s (Intervals.IntervalTornadoSec)

Tumbleweed: 15s (Intervals.IntervalTumbleweedSec)

TTLs (defaults):

Dynamite: 20s, Tornado: 15s, Tumbleweed: 10s (under TTL.*)

Caps: global + per-type (Spawning.MaxSimultaneousGlobal, MaxDynamite, MaxTornado, MaxTumbleweed)

Multiplayer aware:

Anchor selection modes: HostOnly, RandomPlayer, RoundRobin, NearestToHostCamera (Multiplayer.AnchorMode).

Dynamic scaling: Multiplayer.PerPlayerExtraSlots adds extra concurrent slots per additional player.

Positioning rules: Forward-cone sampling, ground raycast, collision checks; optional Line of Sight (Spawning.RequireLineOfSight).

Tornado movement: Speed and retarget cadence configurable (Tornado.MoveSpeed, Tornado.RetargetSeconds), with a robust fallback if vanilla spawner isn't present.

UI: Compact overlay with three independent timers (one per hazard), live counters, status. Toggle with F9.

Hotkeys (host only): F6 Tornado, F7 Dynamite, F8 Tumbleweed.


0.1.3

Scene gating: Spawning only in Level_* scenes. (Airport/Title/Pretitle are excluded.)

Overlay UI: Spawn timer, status, and live count.

Stronger player tracking: Camera/Character only from the active scene.

Smarter spawn placement: Forward cone, ground raycast, LoS, collision checks.

Tornado movement: Speed/retarget configurable; fallback path without TornadoSpawner.


0.1.2

Fixes & logging: Better diagnostics and safer instantiation paths.


0.1.1

Initial release