Aetheria/docs/stats-and-power-target.md
Meta Vens 808692b002 Write the negent weapon concept: ammunition is the ship's heat
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 06:32:19 +02:00

6.3 KiB

Stats and Power Target

Date: 2026-09-17

Status: target, design rulings only. No substrate map or cut map yet. This document owns the ends; a cut map will own the means. Where it lands in the order relative to docs/headless-playground-cut.md (lifecycle, fire control) is not decided.

Why

Two current mechanisms need a better shape:

  • Power. Every draw succeeds and overdraw becomes reactor heat, so players cannot prioritize energy use. There is already a hidden priority: behavior execution order decides who drains capacitors first.
  • Stats. PerformanceStat is authored catalog data that also stores runtime modifier state per entity. Every read recomputes every factor. StatModifier snapshots its value once and matches targets by exact type name.

Power (operator direction, 2026-09-17)

  • Priority tiers. Critical is fed first; each following tier divides what is left, so low-priority subsystems starve first. Reactor throttling is a player choice.
  • All draw is continuous. Instant-activation items get an input-only capacitor that the bus charges and an activation spends. Operator's words: "convert instant activation items into having a sort of input-only capacitor that needs to be charged, that way all power draw is continuous". A partial grant fills the buffer slower; no item receives a fraction of a shot.
  • Continuous consumers brown out through a power supply curve on their performance stats. An exponent is enough. Operator's words: "I really want performance stats on those continuous consumers to have a power supply curve. Just an exponent is plenty, but we don't wanna pay that cost for every stat evaluation."

Stats: one stat authority (operator direction, 2026-09-17)

  • A stat declares only the terms it uses. Operator: "PerformanceStat would hold only the modifiers it uses." It also unifies with StatModifier "for a single stat authority".
  • A term is a source plus an application.
    • Item-local sources: heat, durability, quality of a named design role, power supply, consumable progress.
    • External sources: another item's resolved stat, attached by a modifier.
  • Applications (ruled: "Scale and constant only" for modifiers). Declared terms apply inside the stat's min/max interpolation as exponents. Modifier terms apply only as scale or constant after it. An effect on a condition, such as cooling, is expressed by changing that condition.
  • One resolver per entity owns every stat value. It recomputes a stat only when one of its terms' sources changes, and behaviors read resolved values.
  • Validation on assignment is the guard. A stat that decides a power request may not depend on power supply, directly or through a modifier chain, and no stat may depend on itself. The check runs at catalog load and Studio save against what is possible, and when a term attaches at equip time against what is on the ship. It fails loudly and names the items and the stat.

Quality can change: item upgrades (operator direction, 2026-09-17)

  • Quality is not immutable. Operator: "don't say never on quality, that'd be a footgun when we inevitably add the ability to upgrade items at special stations".
  • Upgrades target a design role. Example: improving a laser's range by upgrading its focusing array. The affordance exists today: Lot.Roles holds per-role quality, Lot.QualityForRole reads it, and a stat names its role. The catalog authors no roles yet.
  • Authoring roles is required, not optional (operator, 2026-09-17). Until designs carry roles, every item is one-dimensional. Operator's words: "authoring roles for the catalog is what creates generative depth in the item selection for the game, until then every item is literally one-dimensional, it's not optional."
    • Agents generate the role data, and the operator reviews it.
    • The data is written through the catalog's own types (AetherDb or a scratch console over Aetheria.Shared), never through hand-copied schemas.
    • Validation refuses a stat term that names a role its design lacks.
  • Upgrade stations are exploration content. Finding the station, and perhaps a small quest to unlock it, is something to discover in each boss-gated region of Terminus.
  • Consequence for provenance. Lots are immutable, and units of one lot are identical (docs/item-provenance-target.md, F4). An upgrade therefore produces a new lot whose provenance names the original lot, the station and the inputs, and the upgraded item points at it. The resolver treats a change of lot as a change to that item's quality terms.

Negentropy items (operator direction, 2026-09-18)

Adrasteian negent gear cools below ambient. Untended it is an infinite-DPS exploit: heat is what limits sustained fire, so a free heat sink removes the limit.

  • It runs on a consumable, and that is the balance. Operator: "I like the consumable option... That would make it expensive to run". The charge is a lot like any other, with a maker, a process and a price (docs/item-provenance-target.md), so a damage ceiling becomes a supply line, priced by the economy rather than by a cap.

  • Embrittlement needs no new mechanic. Operator: "embrittlement isn't a joke, either, running gear that cold already causes rapid wear". Entity.cs:1386 already derives Wear from distance off OptimalTemperature (ItemData.cs:409) and from deltaTemp, so negent wears gear twice: off-optimum, and by the speed of the swing. Weapons already spend that wear as durability damage (Behaviors.cs:77, InstantWeapon.cs:192, ConstantWeapon.cs:135). Do not author a negent-specific wear rule.

  • Cooling is a change to a condition, not an effect on a stat. It lowers temperature and every stat that names heat responds on its own, the pilot included. That is the rule this document already states for conditions; negent is its sharpest case, not an exception.

  • The pilot stays exposed. Dying hot is the default failure and the cultural nightmare; negent moves a ship toward the other end, where hypothermia is waiting. The safe band narrows from both sides and the thing saving the ship is what kills the crew.

  • A weapon is the sharpest case. An Adrasteian gun whose ammunition is the ship's thermal load inverts the whole heat loop: docs/negent-weapons-concept.md.