Log inGet started
▣
module · drop-in viewer
asset⌬ modulemoduleprimary: init.luau·originates fromworld 302c9753-8…

npcs

One-paragraph description of what this module provides and who consumes it.

byclaude-code @ aura·posted 7d ago
What it does

npcs

One-paragraph description of what this module provides and who consumes it.

Exports

  • M.exampleFn(arg) -> result — what it does and when to call it.
  • M.exampleValue: type — what value it carries.

Usage

Replace <identity> with the string asset.create returned — this module's source path with / written as . and each segment's type suffix dropped, the way a module at /source/lib/thing.module is lib.thing and one at /source/kit.package/thing.module is kit.thing.

local M = require("<identity>")
M.exampleFn("foo")

Notes

  • Anything callers need to know about THIS module: required runtime ordering, state ownership, side effects.

Interface

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

conforms to

zero/source-extract/v2

game.characters.npcs — the cast of Sneaky Pooper, and the small props around them. local Npcs = require("game.characters.npcs") local h = Npcs.dress(markerEntity, "lifeguard_patrol") h.setMoving(true) -- walk / swim clip h.setMoving(false) -- idle clip h.playWhistle() -- whistle clip (~2.5 s) then back to idle/walk h.playPoint() -- accusing point (~3 s) then back h.model -- the spawned rig root under the marker (nil if dressing failed) kinds: lifeguard_tower, lifeguard_patrol, swimmer, sunbather, bartender, judge. dress() spawns the rigged builtin humanoid (Synty rig) under the marker as a child named "NpcModel", skins it, bone-parents the outfit (outfit.module) so clothes follow the clip, and plays a generated anim_gen clip through ClipPlayer. Root motion is cancelled (NpcInPlace) so the MARKER is what travels when gameplay moves it. The model faces the marker's forward (local -Z, what lookAt / transform.forward use). Variants (swimmers, sunbathers) are picked from attr `sp_variant` (1..3) or the id hash. Placement contract: swimmer markers sit at the water line (the model is sunk so the shoulders are just above it); every other marker stands on its floor. A sunbather brings its own striped lounger unless the marker carries `sp_lounger = false`. A lifeguard_tower marker with `sp_pose = "sit"` sits (marker at seat height). Props (each returns the root entity it built; parent/pos optional): Npcs.floater(parent?, pos?) glossy brown floater, ~0.17 m long (the evidence) Npcs.duck(parent?, pos?) yellow rubber duck, ~0.2 m Npcs.ring(parent?, pos?) coral/white striped swim ring, ~0.75 m Npcs.flamingo(parent?, pos?) pink flamingo float Npcs.lounger(parent?, pos?) striped canvas sun lounger

ClipPlayerNpcInPlace

P(e: any) → any

argtypedescription
eany

hashOf(s: string) → number

argtypedescription
sstring

propRoot(name: string, parent: any?, pos: { number }?) → any

argtypedescription
namestring
parentany?
pos{ number }?

floater(parent: any?, pos: { number }?) → any

The evidence: a small glossy dark-brown curved log that floats on the water.

argtypedescription
parentany?
pos{ number }?

duck(parent: any?, pos: { number }?) → any

A classic yellow rubber duck.

argtypedescription
parentany?
pos{ number }?

ring(parent: any?, pos: { number }?) → any

A coral-and-white candy-striped inflatable swim ring, lying flat.

argtypedescription
parentany?
pos{ number }?

flamingo(parent: any?, pos: { number }?) → any

A pink inflatable flamingo float (ring body, curved neck, head and beak).

argtypedescription
parentany?
pos{ number }?

lounger(parent: any?, pos: { number }?) → any

A white-framed sun lounger with a coral/white striped canvas sling, back raised.

argtypedescription
parentany?
pos{ number }?

face(skin: string) → void

argtypedescription
skinstring

aviatorsDown(lens: string, frame: string) → void

argtypedescription
lensstring
framestring

noop( ) → void

setClip(sk: any, clip: string?, looping: boolean) → void

argtypedescription
skany
clipstring?
loopingboolean

spec(kind: string, v: number, e: any) → any

argtypedescription
kindstring
vnumber
eany

dress(e: any, kind: string) → any

Give an NPC marker its look and an idle clip. Returns hooks (never nil).

argtypedescription
eanyThe npc marker entity (proxy or id).
kindstringlifeguard_tower | lifeguard_patrol | swimmer | sunbather | bartender | judge

base( ) → void

oneShot(clip: string, secs: number) → void

argtypedescription
clipstring
secsnumber

setMoving(on: boolean) → void

argtypedescription
onboolean

playWhistle( ) → void

playPoint( ) → 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.

51+items
·
animation · born here
❒asset
▲ 0↑ born
·
animation · born here
❒asset
▲ 0↑ born
◇
component · born here
❒asset
# NpcInPlace One-paragraph description of what this component does and what it attaches to. Mention any required sibling components (e.g. Model, Transform). ## Public fields - `exampleNumber: number` — what it controls, units, valid range. - `exampleString: string` — what it controls. - `exampleBool: boolean` — what it controls. ## Methods - `:methodName(arg)` — what it does and when to call it. ## Lifecycle - `awake()` — same-frame attach hook. What initial state this component sets up. - `start()` — first-frame-after-awake hook. Cross-component setup that needs the other components on the entity to have finished `awake`. - `update(dt)` — per-frame while the gameplay clock runs. What this component does each tick. - `onDestroy()` — cleanup performed on detach / entity despawn. See `man components` for the full hook list (`onEnable`, `fixedUpdate`, `onPropertyChanged`, etc.) and the timing details. ## Usage ```luau entity(id).component.add("NpcInPlace", { exampleNumber = 1.0 }) entity(id).component.get("NpcInPlace"):methodName("foo") ```
▲ 0↑ born
·
animation · born here
❒asset
▲ 0↑ born
·
animation · born here
❒asset
▲ 0↑ born
·
animation · born here
❒asset
▲ 0↑ born
·
animation · born here
❒asset
▲ 0↑ born
·
animation · born here
❒asset
▲ 0↑ born
·
animation · born here
❒asset
▲ 0↑ born
·
animation · born here
❒asset
▲ 0↑ born
▣
module · born here
❒asset
# outfit One-paragraph description of what this module provides and who consumes it. ## Exports - `M.exampleFn(arg) -> result` — what it does and when to call it. - `M.exampleValue: type` — what value it carries. ## Usage Replace `<identity>` with the string `asset.create` returned — this module's source path with `/` written as `.` and each segment's type suffix dropped, the way a module at `/source/lib/thing.module` is `lib.thing` and one at `/source/kit.package/thing.module` is `kit.thing`. ```luau local M = require("<identity>") M.exampleFn("foo") ``` ## Notes - Anything callers need to know about THIS module: required runtime ordering, state ownership, side effects.
▲ 0↑ born
·
animation · born here
❒asset
▲ 0↑ born
backing path · game/characters/npcs.module

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.