Status Effects Teaching Demos¶
This folder contains interactive teaching and sandbox panels for the Status Effects system.
Unlike the panels in ../HostileConsumers/, these demos attach helper components to the targets they operate on, so that receiver-side behaviour can be demonstrated in a scene that does not already have it wired up.
Why These Panels Are Not Hostile Consumers¶
Panels in this folder may:
- Attach teaching-only helper components from
../Support/to a bound target - Install an implementation of a public seam onto an object the panel does not own
- Remove those helpers again when the demo is finished
- Provide interactive controls for exploring runtime state
Because of this, they are not used as verification of the public API surface.
That is a statement about what they prove, not about what they are allowed to touch. These panels still use only public APIs, still contain no reflection, and are still covered by the TeachablesNoReflectionGate and TeachablesNoInternalNamespaceGate export gates like every other panel in the framework.
Panels in This Folder¶
| Panel | Teaches | Attaches |
|---|---|---|
StatusCleanseDispelPanel | Removal and protection: cleanse, dispel, immunity, and resistance | DemoStatusImmunity, DemoStatusResistance |
StatusPotencyAurasPanel | Receiver-side scaling: potency multipliers and aura patterns | DemoStatusPotency, DemoStatusResistance |
StatusSnapshotsTimePanel | Snapshot capture and restore, and time modes | a panel-local ITimeSource implementation |
The helpers are destroyed again when the demo stops, so a scene is not left carrying them.
A Judgement Call Worth Recording¶
StatusSnapshotsTimePanel is the least obvious member of this folder, and it was placed here deliberately rather than by default.
It installs a small ITimeSource implementation, defined inside the panel file itself, onto the bound target in order to demonstrate scaled time. Writing your own ITimeSource and plugging it in is the supported extension path, which is the most hostile-consumer thing a panel can do — a real consumer implementing a public seam.
It sits here anyway because the classification rule is about whose object changes, not about whether the API used is public. The panel modifies a test target during Play Mode, and that is the line the other systems' Demos/ folders already draw.
The cost of the call is worth naming: the clearest worked example of the ITimeSource seam now lives in a folder labelled "not proof of the public surface". If that trade stops looking right, the panel moves and this section goes with it — the rule should not bend quietly for one sympathetic case.
Reading These Panels¶
The service calls and result handling are still worth copying. What is not worth copying is the helper-attachment: in your own project you would author those components onto your actors deliberately, rather than having a panel install them at runtime to keep a demo self-contained.
The helper components themselves are documented in ../Support/.