worldbox-observer-mod/README.md
DazedAnon 58a67a198d feat(saga): replace tabs with character beat captions
- Compose Identity, Beat, and Context without mutating camera labels
- Move Cast and Legacy details into a hover-only panel
- Centralize relation, title, stake, and legacy prose
- Make rail clicks toggle Prefer without pinning a Saga subject
- Add harness coverage for caption composition and hover behavior
2026-07-22 17:09:13 -05:00

36 lines
1.5 KiB
Markdown

# IdleSpectator
WorldBox NeoModLoader mod: AFK Idle Spectator camera director.
## Controls
- **I** - toggle Idle Spectator on/off
- **F9** - toggle Character Chronicle side panel (non-modal; works with focus)
- Dragging the camera while Spectator is on turns it off (after a short grace period)
## What it follows
The camera follows **ranked events** from live feeds (wars, fights, relationships, buildings, statuses, plots, …).
`EventStrength` decides who wins; quieter events still take the shot when nothing stronger is pending.
Character fill only runs when the event queue is empty (no orange reason; task chip shows the live job).
While watching, a **character beat caption** shows who they are (Identity), an orange **event sentence** (Beat), and muted Context (story spine or open stake).
Main characters get `Name · Title` when they have a real role; tips may gain a self-explanatory relation clause.
See [`docs/life-saga.md`](docs/life-saga.md) and [`docs/event-reason.md`](docs/event-reason.md).
Lingering on someone writes a **Chronicle** line; F9 lists them and click jumps the camera.
## Layout
- `IdleSpectator/` - mod source (`mod.json` + C#), loaded/compiled by NML
- `scripts/verify-nml.sh` - load verification helper
- `docs/event-reason.md` - events-own-camera + EventReason contract
## Deploy
```bash
ln -sfn "$(pwd)/IdleSpectator" \
"$HOME/.local/share/Steam/steamapps/common/worldbox/Mods/IdleSpectator"
```
Requires NeoModLoader in `worldbox_Data/StreamingAssets/mods/` and **Experimental Mode** enabled.