rules
The one sheet of paper every slice of ASHEN VIGIL argues from.
game.rules — ASHEN VIGIL's constants and rules
The one sheet of paper every slice of ASHEN VIGIL argues from.
require("game.rules") gives the game's constants — the title and the
art-direction sentence, the palette in linear RGB, the sun, the three stats and
what a level buys, the soul cost curve, the flask, every combat timing (light,
heavy, roll, guard, the turn rates, poise), movement and stamina, lock-on,
grace, death, the boss and the common foe, and the names of the five slice
mounts the scene makes.
It also carries the four pure rules the slices share rather than duplicate:
levelCost(level), statsAt(levels), inArc(swingYaw, hitYaw, arcDegrees),
and the SLICES list.
It touches no engine API and reads no scene state: it is data and arithmetic, so it can be called from a component, a scene build, a tool or a test with the same answer. A number that lives in two slices is a bug — it lives here instead.
Who reads it: every slice (game.vigil, game.valley, game.foes,
game.screens, game.sound) and scenes/main.scene/build.luau.
Scoped to this part · feeds back into the world's score.