Files
EscapistsReintroduced/docs/living-island/T6-ambient-signals.md
T
jakub cab998fb64 Combine Workshop addon and fix prison startup
Merge owned systems into one addon while preserving resource identities. Gate player admission on the replicated prison scene, restore the original framed door, and hold enemy AI until escape. Correct scenario branding and author metadata, include publishing assets, and retain regression and native verification evidence.
2026-09-20 16:42:52 +02:00

3.4 KiB
Raw Blame History

T6 — Cheap signs of life

Read docs/living-island/README.md first, including the rules section. Depends on T2.

Goal

Sell an occupied island through things that are not soldiers. Every item here is either a static prop, a single entity, or a timed event — none of it adds a standing AI presence.

Budget for this whole task: at most 4 active agents at any time, island-wide.

What to build

addons/core/Scripts/Game/ERR/ERR_AmbientLife.c.

1. Static occupation markers (zero CPU)

Placed once during preparation, never ticked:

  • Parked military vehicles at sites and checkpoints.
  • Crates, barrels, tents, field tables at outposts.
  • At night, lit windows and lamps at occupied sites; dark at abandoned ones. Drive the light state from the site's eliminated flag, evaluated on the existing environment tick, not a new one.

This alone changes how the island reads at 300 m, for nothing.

2. Road traffic that exists only when watched

A CONVOY ledger record: a vehicle plus 2 crew travelling a long road route. It simulates virtually like anything else and materialises only near players. Two convoy records island-wide is enough — the player meets traffic occasionally and it is real when they do.

3. Distant transit

Occasionally (every 8–15 minutes, settings ambientTransitSeconds), a single helicopter flies a high-altitude route across the map, well above small-arms range, and despawns at the far edge. One vehicle, one pilot, bounded lifetime, hard cap of one at a time. It must never route over the extraction site while extraction is active.

4. Audio and radio texture

  • Use only vanilla sound prefabs. No audio from the original mod — see the licensing rules.
  • Occasional distant, non-hostile gunfire near enemy sites (a training burst) is a strong cue. Gate it hard: never within 400 m of a player, never during an alert, at most once per 3 minutes.

Rules

  • Everything in this task is skippable: if the budget is full or the mission is in a terminal phase, ambient life is the first thing dropped.
  • One tick, ≥ 10 s, shared by all ambient features. No feature gets its own timer.
  • Every ambient entity is owned and tracked so Stop() removes all of it. Nothing here may survive a restart — the repo already had restart-cleanup work; do not regress it.
  • Ambient units are SCR_EAISpawnImportance.LOW so they lose the budget contest first.

Acceptance criteria

  1. Standing still in open terrain for 10 minutes, a player sees or hears at least two distinct signs of occupation.
  2. Ambient features contribute at most 4 active agents at any moment, verified in the admin status output.
  3. Restarting the mission leaves no ambient entity behind.
  4. No ambient event fires during extraction over the extraction site.
  5. python3 tools/check.py passes.

Tests to write

tests/test_ambient_life.py:

  • The gating rule refuses a transit while one is already active, during a terminal phase, and when the agent budget is full.
  • The gunfire rule refuses within 400 m of a player and inside the cooldown.
  • The ownership list is emptied by Stop().

Do not

  • Do not add civilians in this task. A civilian population is a separate, much larger piece of work with its own budget.
  • Do not spawn ambient AI that patrols indefinitely; ambient means bounded.
  • Do not reuse any audio, particle or composition asset from the original mod.