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.
88 lines
3.4 KiB
Markdown
88 lines
3.4 KiB
Markdown
# 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.
|