LamplighterLook
What the Lamplighter is wearing, and the light he carries.
LamplighterLook
What the Lamplighter is wearing, and the light he carries.
Boot spawns this on HollowSystems/heroAsset. It waits for the hero body
(Hollow.hero.entity(), announced on "heroReady"), resolves that body's
skeleton through the rig's own role map, and dresses it:
| entity | mounted on | what it is |
|---|---|---|
LamplighterMantle | the pelvis bone | heroAsset.lamplighter_mantle — the hooded waxed coat over mail, hood to shins |
LamplighterHood | the head bone | heroAsset.lamplighter_hood, only when wearHood is set; the coat carries a hood of its own |
LanternHammer | the right-hand bone | the grip socket: it holds the angle and the scale |
LanternHammerProp | the socket | heroAsset.lantern_hammer_b — the lantern-headed warhammer, shifted so the hand closes on the haft |
LanternFlame | the socket | an emissive sphere in heroAsset.lantern_flame — the visible wick |
LanternLight | the socket | a point light, the only light the Lamplighter carries into the crypt |
Before anything is hung on it the bare rig is repainted in
heroAsset.lamplighter_leather, so no pale limb shows through the coat. The
material is written straight onto each SkinnedModel / Model rather than
through the appearance toolbox, whose confirmation outline would flash on the
hero in front of the player.
Everything rides bone entities, so the rig's own animation carries it and nothing is positioned per frame. That is also why the garments are rigid: they follow single bones rather than deforming with the skin, which suits heavy waxed leather and lets the whole look sit on the standard humanoid rig the locomotion already drives.
What the light says
The lantern is the hero's status read at a glance, driven every frame from
Hollow.state.hero and from the abilities he has spent:
- Charged — Cleave and Flare off cooldown burn the lantern at its brightest
(measured: intensity 12.5). Cooldowns are derived here from
"heroAttack"andHollow.HERO, so the hero slice does not have to publish them. - Flare —
"heroAttack"("flare")flashes the lantern near-white and swells the flame (measured: 29.9), decaying over about half a second. - Guttering — under 40% health the flame flickers and cools toward the deep red of a dying wick, the deeper the lower the health (measured at 12 hp: 4.6, flickering). At 0 it is all but out.
Tuning
Every placement number is a public field, so the look can be re-seated without
editing code: hammerOffset, hammerRotation, hammerScale, gripPoint,
flameOffset, flameSize, mantleOffset, mantleRotation, mantleScale,
hoodOffset, hoodRotation, hoodScale, wearHood, dressBody, plus
baseIntensity, lanternRange and lanternShadows for the light itself.
hammerRotation is measured in the hand bone's own frame so the hammer turns
with the hand; the garment rotations are world angles, because a garment should
not inherit whatever spin a rig gave its spine bone.
The rest of the slice
heroAsset.lamplighter— the avatar the scene entrypoint puts on the local player. Its body is the standard humanoid rig and its controller and animation are the standard kit, so the hero slice's movement and the shared locomotion work unchanged; the Lamplighter's look is the dressing above, not a separate skinned character.heroAsset.anim_strike/anim_cleave/anim_flare/anim_flask/anim_hurt/anim_death— the clips at theHollow.HERO_CLIPSidentities, generated as humanoid motion and retargeting onto the rig (41 of 50 bones matched when measured). The hero slice plays them when they exist. Each keeps its source rig beside it inanim_<name>_anims/source_rig.rig; a clip whose source rig is missing cannot retarget.
Scoped to this part · feeds back into the world's score.