Wildlife: hamster and hamster wheel prefabs

Ported from the thaiai.lol easter egg (thaiai iso/hamster/lib/hamster.rhai);
the data-centre joke parts stay there.

- hamster (Animals): golden, grey or cream with a white belly, pink nose,
  ears and paws, buck teeth and whiskers; standing, running on the spot or
  asleep (eyes shut, z Z); n and spread like the herds; life size (about
  17 cm) at scale 1, up to 40 times.
- hamster_wheel (Animals): diameter (0.3 m life size, up to 12 m), running,
  A-frame stand or a cage-wall axle stub, fur colour. Running legs and the
  rungs are flipbooks of 4 poses, 0.1 s each; the spokes turn by a CSS
  rotation in a matrix that maps the wheel's plane onto the screen.
- draw_parts learns loft2 (two-tone lofts), eye and flip parts;
  place_parts scales and moves any part list; loft and loft2 share
  loft_rings (the other animals draw byte for byte as before).
- Things under 2 m are drawn ten times bigger in a group that scales them
  back (fine_begin / fine_end), so a life-size hamster keeps its shape on
  the drawing's 0.1-unit grid; sort boxes stay real size.
- The legs push back on the ground and swing forward lifted (the original
  lifted them on the way back).
- Theme: hamster, hamsterg, hamsterc, hamsterw, hamsterp, hwheel, hwhub,
  whisker and hamz in both palettes, materials, rules for eyes, whiskers,
  rims, spokes, hub, rungs and the z Z. Viewer CSS: iso-flip4,
  iso-wheelspin, iso-runbob, iso-zzz; beast edges take --bw (default .3).
- Test hamsters_run_in_wheels_from_every_side: no sort cycles in any
  rotation, flipbook counts, scaled groups, real-size sort boxes, tooltips.
- README, ROADMAP, SCRIPTING and the MCP instructions list them.
This commit is contained in:
grabowski committed 2026-10-27 16:39:43 +07:00
1 parent c8becc2e59
commit 9619d0f267
8 files changed
+609 -29

No files matched your search

+33
View File
@@ -288,6 +288,15 @@ rabbit = "#8a7a66"
eleph = "#6f6b69"
elephe = "#625e5c"
tusk = "#e9e2d0"
hamster = "#d99a45"
hamsterg = "#8f8a84"
hamsterc = "#e2c58f"
hamsterw = "#ece3d2"
hamsterp = "#e98f9c"
whisker = "rgba(255, 248, 235, .8)"
hamz = "#cfe3ff"
hwheel = "#a7b2c2"
hwhub = "#5d6878"
birdd = "#0b0d10"
birdw = "#e8e6e0"
bee = "#e7b416"
@@ -597,6 +606,15 @@ rabbit = "#a08d76"
eleph = "#8a8582"
elephe = "#7b7673"
tusk = "#f3eee0"
hamster = "#e9a650"
hamsterg = "#a29b93"
hamsterc = "#efd6a3"
hamsterw = "#fbf5ea"
hamsterp = "#f29aa7"
whisker = "rgba(90, 66, 40, .6)"
hamz = "#3b5a8a"
hwheel = "#7d8898"
hwhub = "#5d6878"
birdd = "#343a44"
birdw = "#f6f4ee"
bee = "#f0c02a"
@@ -647,6 +665,12 @@ rabbit = "rabbit"
eleph = "eleph"
elephe = "elephe"
tusk = "tusk"
hamster = "hamster"
hamsterg = "hamsterg"
hamsterc = "hamsterc"
hamsterw = "hamsterw"
hamsterp = "hamsterp"
hwheel = "hwheel"
hive1 = "hive1"
hive2 = "hive2"
hive3 = "hive3"
@@ -924,6 +948,15 @@ f-conc = "conc"
".iso-svg .iso-route" = "fill: none; stroke: var(--iso-route); stroke-width: 1.2; stroke-dasharray: 5 4; stroke-linecap: round; stroke-linejoin: round; opacity: .75"
".iso-svg .iso-antler" = "fill: none; stroke: var(--iso-antler); stroke-width: .35; stroke-linecap: round; stroke-linejoin: round"
".iso-svg .iso-bristle" = "fill: none; stroke: var(--iso-bristle); stroke-width: .5; stroke-linecap: round"
".iso-svg .iso-hamstereye" = "fill: #120d0a; stroke: none"
".iso-svg .iso-hamsterglint" = "fill: #ffffff; stroke: none"
".iso-svg .iso-hamstereyec" = "fill: none; stroke: #2a1d14; stroke-width: calc(var(--bw, .3) * .5); stroke-linecap: round"
".iso-svg .iso-whisker" = "fill: none; stroke: var(--iso-whisker); stroke-width: calc(var(--bw, .3) * .35); stroke-linecap: round"
".iso-svg .iso-hamz" = "fill: var(--iso-hamz); stroke: none; font-weight: 700; font-family: system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif"
".iso-svg .iso-wheelrim" = "fill: none; stroke: var(--iso-hwheel)"
".iso-svg .iso-wheelspoke" = "fill: none; stroke: var(--iso-hwheel); stroke-linecap: round"
".iso-svg .iso-wheelhub" = "fill: var(--iso-hwhub); stroke: none"
".iso-svg .iso-wheelrung" = "fill: none; stroke: var(--iso-hwheel); stroke-width: var(--rw, .4); stroke-linecap: round"
".iso-svg .iso-bird, .iso-svg .iso-wing" = "stroke: none"
".iso-svg .iso-birdd" = "fill: var(--iso-birdd)"
".iso-svg .iso-birdw" = "fill: var(--iso-birdw)"