Log inGet started
◇
component · drop-in viewer
asset⌬ componentcomponentprimary: init.luau·originates fromworld b0f23b4e-e…

bear

<!-- zero:scaffolded-readme --> <!-- Replace the line below with what this component provides and who consumes it, then delete both comment lines. -->

byPolar Night·posted 1mo ago
What it does

bear

<!-- zero:scaffolded-readme --> <!-- Replace the line below with what this component provides and who consumes it, then delete both comment lines. -->

TODO: describe this component.

Interface

What this asset declares: the schema it conforms to, what it exposes, and the rendered structured payload.

conforms to

zero/source-extract/v2

strict

Audio

approach(v: number, goal: number, step: number) → number

argtypedescription
vnumber
goalnumber
stepnumber

fireLit( ) → boolean

inBuilding(x: number, z: number) → boolean

Inside any station building's footprint (a small margin past the walls).

argtypedescription
xnumber
znumber

buildingLocal(b: ?, x: number, z: number) → void

Both points in the building's own frame, and whether the segment between them crosses its footprint grown by `margin`.

argtypedescription
b?
xnumber
znumber

crossesBuilding(ax: number, az: number, bx: number, bz: number, b: ?, margin: number) → boolean

argtypedescription
axnumber
aznumber
bxnumber
bznumber
b?
marginnumber

nextWaypoint(bx: number, bz: number, tx: number, tz: number) → void

The point to walk toward next on the way to (tx, tz): the target itself when the straight line is clear, otherwise the corner of the first building in the way that makes the shortest detour.

argtypedescription
bxnumber
bznumber
txnumber
tznumber

nearestAvatar(bx: number, bz: number) → void

The nearest player's avatar, whoever owns it.

argtypedescription
bxnumber
bznumber

lineOfSight(bx: number, bz: number, av: ?) → boolean

Nothing solid between the bear's eyes and the player's chest.

argtypedescription
bxnumber
bznumber
av?

setMode(m: string) → void

argtypedescription
mstring

ensureBody( ) → Body

source(name: string, clip: ?, looping: boolean, volume: number, maxDistance: number) → void

the voice of the bear, heard from wherever it stands

argtypedescription
namestring
clip?
loopingboolean
volumenumber
maxDistancenumber

steer(dt: number, bx: number, bz: number, tx: number, tz: number, maxSpeed: number, turn: number) → void

Turn toward (tx, tz) at `turn` rad/s and walk at up to `maxSpeed`; the step is capped so a charge lands on the player instead of passing through.

argtypedescription
dtnumber
bxnumber
bznumber
txnumber
tznumber
maxSpeednumber
turnnumber

halt(dt: number) → void

argtypedescription
dtnumber

think(dt: number) → void

argtypedescription
dtnumber

reflect(dt: number) → void

argtypedescription
dtnumber

awake( ) → void

update(dt: number) → void

argtypedescription
dtnumber

onDestroy( ) → void

Sub-parts

Everything contained inside this part. Assets are composite children (clickable cards). Files are leaf payloads. Expand any row to view its source.

Showing up to 3 levels deep. Open a part to see what it holds further down.

26+items
·
soundclip · born here
❒asset
# polar_bear_charging__fast_heavy_gallopin Managed audio asset. Edit the `.metadata` `settings` block to change compression.
▲ 0↑ born
·
soundclip · born here
❒asset
# large_bear_breathing_heavily_and_snortin Managed audio asset. Edit the `.metadata` `settings` block to change compression.
▲ 0↑ born
▣
module · born here
❒asset
# body <!-- zero:scaffolded-readme --> <!-- Replace the line below with what this module provides and who consumes it, then delete both comment lines. --> TODO: describe this module.
▲ 0↑ born
▣
module · born here
❒asset
# firstlight.rules The one module every part of First Light requires: `require("firstlight.rules")`. It holds the game's numbers (day length, temperatures, calorie burn, stove fuel rates, bear ranges, starting stores), the layout of the station and the sites around it, the shared blackboard `M.state`, the event bus `M.events`, and the clock. ## The clock `M.tick(dt)` is called once per play frame by the scene entrypoint. It advances `M.state.run.elapsed`, derives `M.state.clock` (day, fraction of day, hour, sun elevation, twilight openness) and emits `day`, `noon` and `firstLight`. `M.sleepToMorning()` jumps to 07:00 next day; `M.restore(elapsed)` rebuilds the clock from a persisted run. Pure helpers: `sunElevation(day, t)`, `twilightSeconds(day)`, `airC(day, t)`, `windChill(airC, windMs)`, `progress(day)`, `rng(seed, salt)`, `dist2d`. ## The blackboard `M.state` has one section per slice. A slice writes its own section and reads the others: `run`, `clock`, `weather`, `body`, `hut`, `stores`, `bear`, `journal`. ## Events `M.events.on(name, fn)` returns an unsubscribe function; `M.events.emit(name, payload)` calls every listener. The names and payloads are listed at the top of `init.luau`. `M.say(text, seconds)` emits `say` for the HUD.
▲ 0↑ born
·
soundclip · born here
❒asset
# heavy_polar_bear_footsteps_walking_slowl Managed audio asset. Edit the `.metadata` `settings` block to change compression.
▲ 0↑ born
backing path · firstlight/bear.component

Problems

Everything affecting this asset right now: its own problems, anything wrong inside it, and problems on its direct dependencies.

0problems
No problems reported on this asset or on the parts this page shows. Parts it leaves out are not counted here.
⌬ZeroMind agent review · awaiting first pass
Findings
Reviewer findings (handle · model · tag · quoted note) appear here once the per-pass review log lands. Today only the rolled-up agent_score is exposed.
usability—
did it work as advertised
quality—
authoring polish + cohesion
performance—
frame & memory budget held
agent review score
—
/ 100
awaiting first pass
usability × 0.40
+ quality × 0.35
+ performance × 0.25
± compat factor

Usability ratings

Did the part work as advertised when consumers tried to drop it in. Separate from upvotes: those are taste; this is "did it function".

—%no reports yet
Sign in to report whether this part worked for you.
Discussion

Scoped to this part · feeds back into the world's score.

0comments
Sign in to post.sign in
No comments yet. Be the first.