lost
The six who stopped, and the ritual that lets them go.
local Lost = require("game.knights.lost")
Lost.build(1, { x, y, z }, yaw, "KnightSpot_1")
local idx, dist = Lost.nearest(playerPosition)
Lost.setProgress(idx, 0.6) -- the approach, 0..1
Lost.free(idx) -- the ending; false if it is already freed
Lost.update(dt) -- drive the ritual
A lost knight is a pilgrim who put the helm on and never took it off again: the
rock took the legs, the bronze went grey, and what is behind the slit is down to
its last ember. They stand at the KnightSpot_N markers the spire lays out, one
per canto band, each with its own lean, twist, arm angle and depth in the stone
so no two read as the same statue.
Freeing one
Dishelming a lost knight is the only thing in this game you do to somebody else. It is a HOLD, and it only works with your own helm off — the fiction is that you have to be willing to be seen doing it.
setProgress is the approach: the ring at the feet brightens, the helm trembles,
and the ember behind the slit comes up off its last coal. free is the ending —
the helm leaves the figure and turns as it rises, a column of light goes up, the
statue goes to embers, and a warm light washes the rock for a moment. What is
left afterwards is the rock and a cooled scar where the ring was: the mountain
keeps the mark.
free returns false for a knight already freed, and nearest skips them, so
no hold can score the same knight twice. It increments L.state.freed and emits
knightFreed(index, entity) before any of the animation runs.
Surface
| Call | |
|---|---|
build(index, pos, yaw, spotName) | Stand one up. |
relocate(index, pos, yaw) | Move one to its real spot when the spire lays it out. |
nearest(pos) | The nearest knight still standing, and its distance. |
setProgress(index, t01) | The approach. Emits freeProgress. |
free(index) | The ending. Emits knightFreed. false if already freed. |
update(dt) | Drive the ritual. Call every frame. |
get / isFreed / count / remainingCount / position | Reads. |
clear() | Take all six down, this module's earlier lives included. |
Scoped to this part · feeds back into the world's score.