game.city.heights — Megabuilding H10, the city's first place you can climb:
a thirty-metre residential stack on Kiwi Street behind the market's west row.
THE LOBBY open on the alley side, a doorman's desk, mailboxes,
vending machines, and a passage west to Kiwi Street
THE ATRIUM a well cut through every floor up to the sky, galleries
round it on five floors, each floor in its own neon,
and a switchback stair climbing all the way to the roof
THE ELEVATOR a glass cab running up the outside of the north face,
with sliding landing doors on every floor
FLOOR 3 V's apartment: bed, desk, wardrobe, katana rack, neon V
THE ROOF Nana's Skybar under a neon banana, string lights, tables,
a water tank, AC units, an antenna, and a big H10 sign
facing Lychee Alley
OWNED BY THE CITY SLICE. Placed once by scenes/main.scene/build.luau under
`mount_city`, after game.city.places. The plan (floors, elevator, apartment)
is game.city.h10's, shared with game.city.Megabuilding, which runs the
elevator, the bed, the bar and the stash. Static geometry is batched per
material under `heights_geometry`, collision into static triangle meshes
under `heights_colliders`, lights under `heights_lights` (the district's
LightBudget names `heights` among its roots). The cab and the fourteen
landing door panels are their own entities under `heights_elevator`, so
the play can move them.
newG( ) → any
geometry of our own: quads and slabs that slope along z
vtx(g: any, x: number, y: number, z: number, nx: number, ny: number, nz: number, u: number, v: number) → number
| arg | type | description |
|---|
| g | any | |
| x | number | |
| y | number | |
| z | number | |
| nx | number | |
| ny | number | |
| nz | number | |
| u | number | |
| v | number | |
tri(g: any, a: number, b: number, c: number, nx: number, ny: number, nz: number) → void
| arg | type | description |
|---|
| g | any | |
| a | number | |
| b | number | |
| c | number | |
| nx | number | |
| ny | number | |
| nz | number | |
quad(g: any, p: { { number } }, n: { number }, uv: { { number } }) → void
| arg | type | description |
|---|
| g | any | |
| p | { { number } } | |
| n | { number } | |
| uv | { { number } } | |
slopeGeo(x0: number, x1: number, za: number, aBot: number, aTop: number, zb: number, bBot: number, bTop: number) → any
a slab between x0 and x1 whose top runs from (za, aTop) to (zb, bTop) and
whose underside runs from (za, aBot) to (zb, bBot); its ends are vertical
| arg | type | description |
|---|
| x0 | number | |
| x1 | number | |
| za | number | |
| aBot | number | |
| aTop | number | |
| zb | number | |
| bBot | number | |
| bTop | number | |
surfN(dy: number) → void
| arg | type | description |
|---|
| dy | number | |
rr(a: number, b: number) → number return a
| arg | type | description |
|---|
| a | number | |
| b | number | |
getMat(key: string) → any
| arg | type | description |
|---|
| key | string | |
add(key: string, g: any) → void
| arg | type | description |
|---|
| key | string | |
| g | any | |
box(key: string, x0: number, y0: number, z0: number, x1: number, y1: number, z1: number, tu: number?, tv: number?, skip: any?) → void
| arg | type | description |
|---|
| key | string | |
| x0 | number | |
| y0 | number | |
| z0 | number | |
| x1 | number | |
| y1 | number | |
| z1 | number | |
| tu | number? | |
| tv | number? | |
| skip | any? | |
addAt(key: string, g: any, yaw: number, x: number, y: number, z: number) → void
| arg | type | description |
|---|
| key | string | |
| g | any | |
| yaw | number | |
| x | number | |
| y | number | |
| z | number | |
beam(key: string, a: { number }, b: { number }, t: number) → void
| arg | type | description |
|---|
| key | string | |
| a | { number } | |
| b | { number } | |
| t | number | |
col(x0: number, y0: number, z0: number, x1: number, y1: number, z1: number) → void
| arg | type | description |
|---|
| x0 | number | |
| y0 | number | |
| z0 | number | |
| x1 | number | |
| y1 | number | |
| z1 | number | |
solid(key: string, x0: number, y0: number, z0: number, x1: number, y1: number, z1: number, tu: number?, tv: number?) → void
| arg | type | description |
|---|
| key | string | |
| x0 | number | |
| y0 | number | |
| z0 | number | |
| x1 | number | |
| y1 | number | |
| z1 | number | |
| tu | number? | |
| tv | number? | |
clad(key: string, out: string, outFaces: { [string]: boolean }, x0: number, y0: number, z0: number, x1: number, y1: number, z1: number, tu: number, tv: number) → void
a box that wears `out` on the faces named in outFaces and `key` elsewhere
| arg | type | description |
|---|
| key | string | |
| out | string | |
| outFaces | { [string]: boolean } | |
| x0 | number | |
| y0 | number | |
| z0 | number | |
| x1 | number | |
| y1 | number | |
| z1 | number | |
| tu | number | |
| tv | number | |
plate(key: string, cx: number, cy: number, cz: number, dir: string, u: number, v: number, su: number, sv: number, depth: number) → void
a flat piece on a wall: (u, v) across and up the face from (cx, cy, cz),
su by sv big, standing depth proud of it
| arg | type | description |
|---|
| key | string | |
| cx | number | |
| cy | number | |
| cz | number | |
| dir | string | |
| u | number | |
| v | number | |
| su | number | |
| sv | number | |
| depth | number | |
glyph(key: string, ch: string, cx: number, cy: number, cz: number, dir: string, h: number) → void
a seven-segment glyph h tall, its centre at (cx, cy, cz) on a wall facing dir
| arg | type | description |
|---|
| key | string | |
| ch | string | |
| cx | number | |
| cy | number | |
| cz | number | |
| dir | string | |
| h | number | |
light(x: number, y: number, z: number, c: { number }, intensity: number, radius: number) → void
| arg | type | description |
|---|
| x | number | |
| y | number | |
| z | number | |
| c | { number } | |
| intensity | number | |
| radius | number | |
fy(n: number) → number return H
| arg | type | description |
|---|
| n | number | |
neon(n: number) → string return
| arg | type | description |
|---|
| n | number | |
ncol(n: number) → void
| arg | type | description |
|---|
| n | number | |
slabRect(x0: number, z0: number, x1: number, z1: number, y: number) → void
| arg | type | description |
|---|
| x0 | number | |
| z0 | number | |
| x1 | number | |
| z1 | number | |
| y | number | |
railX(x: number, z0: number, z1: number, y: number) → void
| arg | type | description |
|---|
| x | number | |
| z0 | number | |
| z1 | number | |
| y | number | |
railZ(z: number, x0: number, x1: number, y: number) → void
| arg | type | description |
|---|
| z | number | |
| x0 | number | |
| x1 | number | |
| y | number | |
railSlope(x: number, za: number, ya: number, zb: number, yb: number) → void
a railing that climbs with a flight: its foot runs from (za, ya) to (zb, yb)
| arg | type | description |
|---|
| x | number | |
| za | number | |
| ya | number | |
| zb | number | |
| yb | number | |
flight(xa: number, xb: number, z0: number, dir: number, y0: number, nk: string, solidBelow: boolean) → void
| arg | type | description |
|---|
| xa | number | |
| xb | number | |
| z0 | number | |
| dir | number | |
| y0 | number | |
| nk | string | |
| solidBelow | boolean | |
flatDoor(cx: number, y: number, cz: number, dir: string, n: number, real: boolean?) → void
| arg | type | description |
|---|
| cx | number | |
| y | number | |
| cz | number | |
| dir | string | |
| n | number | |
| real | boolean? | |
cabBox(key: string, x0: number, y0: number, z0: number, x1: number, y1: number, z1: number) → void
| arg | type | description |
|---|
| key | string | |
| x0 | number | |
| y0 | number | |
| z0 | number | |
| x1 | number | |
| y1 | number | |
| z1 | number | |
vend(yaw: number, x: number, y: number, z: number) → void
vending machines by the east entrance
| arg | type | description |
|---|
| yaw | number | |
| x | number | |
| y | number | |
| z | number | |
stroke(x0: number, y0: number, x1: number, y1: number) → void
| arg | type | description |
|---|
| x0 | number | |
| y0 | number | |
| x1 | number | |
| y1 | number | |