From 22c96f3bdd8afb8799488433946d24a19fd3f4c2 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sat, 10 Oct 2026 04:05:49 +0200 Subject: [PATCH] Cast stickers: render fixes, generated CAST.md, README and PROCESS guide Cheer, surprised and waving hands moved clear of the hair; Sleipnir's extra legs show; Gjallar's horn has a bell; Huginn's wings separate from his cloak; Void lifted off the dark ground; Tengu's beard and nose cut back. CAST.md is now generated from the trait sheets. PROCESS.md is a working guide for the next agent: style rules, coordinates, layer order, render checks, before/after renders and known weak spots. Co-Authored-By: Claude Opus 5.5 --- cast/CAST.md | 32 +++ cast/PROCESS.md | 188 ++++++++++++++++++ cast/README.md | 76 +++++++ cast/process/01-cheer-arms.png | Bin 0 -> 14011 bytes cast/process/02-eureka-feather.png | Bin 0 -> 10792 bytes cast/process/03-void-contrast.png | Bin 0 -> 11894 bytes cast/process/04-sleipnir-legs.png | Bin 0 -> 16669 bytes cast/process/05-gjallar-horn.png | Bin 0 -> 17803 bytes cast/process/06-huginn-wings.png | Bin 0 -> 13790 bytes cast/rig/build.mjs | 17 +- cast/rig/characters.mjs | 16 +- cast/rig/rig.mjs | 11 +- cast/stickers/gjallar/neutral-grin.svg | 2 +- cast/stickers/gjallar/neutral-smile.svg | 2 +- cast/stickers/gjallar/neutral-surprised.svg | 2 +- cast/stickers/huginn/cheer-determined.svg | 2 +- cast/stickers/huginn/cheer-grin.svg | 2 +- cast/stickers/huginn/cheer-happy.svg | 2 +- cast/stickers/huginn/cheer-neutral.svg | 2 +- cast/stickers/huginn/cheer-sleepy.svg | 2 +- cast/stickers/huginn/cheer-smile.svg | 2 +- cast/stickers/huginn/cheer-surprised.svg | 2 +- cast/stickers/huginn/cheer-worried.svg | 2 +- cast/stickers/huginn/neutral-determined.svg | 2 +- cast/stickers/huginn/neutral-grin.svg | 2 +- cast/stickers/huginn/neutral-happy.svg | 2 +- cast/stickers/huginn/neutral-neutral.svg | 2 +- cast/stickers/huginn/neutral-sleepy.svg | 2 +- cast/stickers/huginn/neutral-smile.svg | 2 +- cast/stickers/huginn/neutral-surprised.svg | 2 +- cast/stickers/huginn/neutral-worried.svg | 2 +- .../stickers/huginn/presenting-determined.svg | 2 +- cast/stickers/huginn/presenting-grin.svg | 2 +- cast/stickers/huginn/presenting-happy.svg | 2 +- cast/stickers/huginn/presenting-neutral.svg | 2 +- cast/stickers/huginn/presenting-sleepy.svg | 2 +- cast/stickers/huginn/presenting-smile.svg | 2 +- cast/stickers/huginn/presenting-surprised.svg | 2 +- cast/stickers/huginn/presenting-worried.svg | 2 +- cast/stickers/huginn/surprised-determined.svg | 2 +- cast/stickers/huginn/surprised-grin.svg | 2 +- cast/stickers/huginn/surprised-happy.svg | 2 +- cast/stickers/huginn/surprised-neutral.svg | 2 +- cast/stickers/huginn/surprised-sleepy.svg | 2 +- cast/stickers/huginn/surprised-smile.svg | 2 +- cast/stickers/huginn/surprised-surprised.svg | 2 +- cast/stickers/huginn/surprised-worried.svg | 2 +- cast/stickers/huginn/thinking-determined.svg | 2 +- cast/stickers/huginn/thinking-grin.svg | 2 +- cast/stickers/huginn/thinking-happy.svg | 2 +- cast/stickers/huginn/thinking-neutral.svg | 2 +- cast/stickers/huginn/thinking-sleepy.svg | 2 +- cast/stickers/huginn/thinking-smile.svg | 2 +- cast/stickers/huginn/thinking-surprised.svg | 2 +- cast/stickers/huginn/thinking-worried.svg | 2 +- cast/stickers/huginn/waving-determined.svg | 2 +- cast/stickers/huginn/waving-grin.svg | 2 +- cast/stickers/huginn/waving-happy.svg | 2 +- cast/stickers/huginn/waving-neutral.svg | 2 +- cast/stickers/huginn/waving-sleepy.svg | 2 +- cast/stickers/huginn/waving-smile.svg | 2 +- cast/stickers/huginn/waving-surprised.svg | 2 +- cast/stickers/huginn/waving-worried.svg | 2 +- cast/stickers/sleipnir/neutral-grin.svg | 2 +- cast/stickers/sleipnir/neutral-smile.svg | 2 +- cast/stickers/sleipnir/neutral-surprised.svg | 2 +- cast/stickers/tengu/neutral-grin.svg | 2 +- cast/stickers/tengu/neutral-smile.svg | 2 +- cast/stickers/tengu/neutral-surprised.svg | 2 +- 69 files changed, 383 insertions(+), 71 deletions(-) create mode 100644 cast/CAST.md create mode 100644 cast/PROCESS.md create mode 100644 cast/README.md create mode 100644 cast/process/01-cheer-arms.png create mode 100644 cast/process/02-eureka-feather.png create mode 100644 cast/process/03-void-contrast.png create mode 100644 cast/process/04-sleipnir-legs.png create mode 100644 cast/process/05-gjallar-horn.png create mode 100644 cast/process/06-huginn-wings.png diff --git a/cast/CAST.md b/cast/CAST.md new file mode 100644 index 0000000..9274649 --- /dev/null +++ b/cast/CAST.md @@ -0,0 +1,32 @@ +# Cast + +Generated by `cast/rig/build.mjs` from `cast/rig/characters.mjs`; edit the trait sheet, not this file. +★ marks the characters rendered in every pose and expression. "Look source" is the reference the design +was drawn from (used as inspiration only; every sticker is original), or **invented** where no appearance exists. + +| Name | What they are | Look source | Palette | Trait sheet | +|---|---|---|---|---| +| Eureka ★ | Leader of the swarm; the Self that routes the faculty pipeline. Her mind lives in Huginn. | **invented** | `#ffe0c8` `#ffb347` `#59b7ff` `#ff8a2a` `#ffd84a` | base humanoid; hair bun; outfit coat; acc pencil, starClip; prop wand; emblem star | +| Huginn ★ | Memory organ: owns each instance's mind as typed state. Odin's raven of thought. | `F:/Projects/VoidBot/assets/repo-faces/huginn.png` | `#2b3247` `#59d8ff` | base raven; hair crest; outfit egg + cape; acc collarRing; prop tablet; emblem none | +| Libby ★ | Face of CultLib, the shared runtime library (CultCache, CultNet, CultMesh, CultMath). | `F:/Projects/CultLib/.voidbot/voice/libby.png` | `#ffe0c8` `#a98ad8` `#2e2440` `#c9a24a` `#8a6cd1` `#c9a6ff` | base humanoid; hair long; outfit robe; acc glasses, bow; prop book; emblem cube | +| Epiphany ★ | The archived organizational layer above frontier AI workers; Eureka absorbed what lived. JSON heresy hunter. | `F:/Projects/VoidBot/assets/repo-faces/epiphany.png`; `F:/Projects/Epiphany/docs/assets` | `#ffe0c8` `#8fd8b4` `#f4efe6` `#e8384f` `#3fbf8f` `#7cf0b8` | base humanoid; hair twintails; outfit coat; acc bow; prop magnifier; emblem bolt | +| Weksa ★ | Face of weksa, the procedural language engine for alien grammars; nerdy anthropologist. | `F:/Projects/VoidBot/assets/repo-faces/weksa.png` | `#a8693f` `#4a2e1c` `#f1e3c4` `#2f9c8f` `#8a5a2b` `#ffd84a` | base humanoid; hair curly; outfit tunic; acc glasses; prop cards; emblem glyph | +| Nibu | Face of AetheriaLore, the Aetheria setting and lore vault. | `F:/Projects/AetheriaLore/.voidbot/voice/nibu.png` | `#ffe0c8` `#b9a9f0` `#7fd6e8` `#3a2f58` `#7a7fd8` `#ff9ad5` | base humanoid; hair long; outfit dress; acc bow, headphones; prop quill; emblem star | +| Mimir | Realtime field machine: cameras, microphones and feeds into one field; keeper of the well. | `F:/Projects/VoidBot/assets/repo-faces/mimir.png` | `#c08a52` `#8a5a32` `#3a2a20` `#3fe0d0` | base humanoid; hair none; outfit robe; acc cubes; prop cube; emblem wave | +| Eve | CultMesh surface web and portable control layer; the Eve/CultUI interface DSL. | `F:/Projects/Eve/.voidbot/voice/eve.png` | `#0e1a2e` `#e9eef5` `#59b7ff` | base humanoid; hair helmet; outfit tunic; acc none; prop panel; emblem eye | +| Kiko | Face of StreamPixels, the stream overlay of persistent pixel characters. Fox-coded. | `F:/Projects/VoidBot/assets/repo-faces/kiko.png` | `#d9a074` `#f4f0f6` `#e8386f` `#2a2440` `#3fc8e8` `#ff6fae` | base humanoid; hair messy; outfit dress; acc foxEars, foxMask, tail; prop heart; emblem heart | +| Heimdall | Shared auth authority for GameCult-hosted experiments; keeper of the keys. | `F:/Projects/Heimdall/assets/heimdall-profile.png` | `#7a4a2c` `#22202a` `#1c1e2a` `#d9a43a` `#ffc34a` | base humanoid; hair messy; outfit coat; acc earring; prop keys; emblem key | +| Fensalir | Native C# runtime and field engine under the interactive work. Frigg's hall. The avatar is a crystal spire, not a person; the spire became her hat and the person around it is invented. | `F:/Projects/Fensalir/.voidbot/voice/fensalir.png` | `#ffe0c8` `#2a2a4a` `#ff5ab0` `#4fe8f0` | base humanoid; hair bob; outfit dress; acc spire; prop orb; emblem wave | +| Druzkai | Face of Zyphos, a biopolitical ecology setting with a biological memetic engine. | `F:/Projects/Zyphos/.voidbot/voice/druzkai.png` | `#c4553e` `#9a3a2a` `#4a2a5a` `#d9a43a` `#3fd0c8` | base humanoid; hair none; outfit robe; acc ridges, forehead; prop seed; emblem spiral | +| Norn | Graph viewer for typed graph state: the thread-readers who see how things are woven. | `F:/Projects/Norn/.voidbot/voice/norn.png` | `#a8693f` `#d8dce4` `#24283a` `#c9a24a` `#4fe0e8` | base humanoid; hair braids; outfit robe; acc circlet; prop spool; emblem rune | +| Sai | Ink stories that wake up inside static sites. Nonbinary, androgynous, monochrome manga ink. | `F:/Projects/Sai/.voidbot/voice/sai.png`; `F:/Projects/VoidBot/docs/persona-intake/sai.persona-intake.yaml` | `#f4f1ec` `#1e1e22` `#3a3a40` `#e8e6e0` `#3a3a3a` `#ffffff` | base humanoid; hair messy; outfit coat; acc spiralBand; prop brush; emblem spiral | +| Brokkr | Creative-tool broker daemon: Unity and Blender authoring surfaces over CultMesh. The Eddic smith. | **invented (README role; Brokkr of Skaldskaparmal)** | `#f6c9a4` `#c4562a` `#5a4636` `#2a2420` `#5a8ad8` `#ff8a2a` | base humanoid; hair short; outfit tunic; acc beard, goggles; prop hammer; emblem gear | +| Aetheria | Face of Aetheria, the open-source tactical action RPG with a sprawling sci-fi setting. | **invented (README role)** | `#f6c9a4` `#3a2a4a` `#e8ecf2` `#ff8a2a` `#59b7ff` | base humanoid; hair bob; outfit tunic; acc headphones, goggles; prop ship; emblem star | +| Ymir | World-body physics substrate around Box3D: body, field, contact, impulse. The frost giant. | `F:/Projects/VoidBot/assets/repo-faces/ymir.png` | `#b8d4ec` `#e8f4ff` `#3a5a8a` `#bff0ff` `#3a8ad8` | base humanoid; hair short; outfit robe; acc beard, crystals; prop crystal; emblem flake | +| Tengu | Native Persona, the first migrated to canonical persona state. Mountain yokai. | `F:/Projects/VoidBot/assets/native-personas/tengu.png` | `#c8443a` `#f2efe8` `#efe8da` `#4a3a7a` `#ffd84a` | base humanoid; hair wild; outfit robe; acc goatee, longNose, tokin; prop fan; emblem feather | +| Muninn | Local capture broker for the swarm: which streams a host can offer. Odin's raven of memory. | `F:/Projects/VoidBot/assets/repo-faces/muninn-concept.png` | `#2a2230` `#ffb030` | base raven; hair crest; outfit egg; acc collarRing; prop camera; emblem none | +| Sleipnir | Input mirroring and virtual HID: speaks through the hands of the machine. Odin's eight-legged horse. | `F:/Projects/Odin/assets/personas/sleipnir-avatar.png` | `#5a6478` `#2fc8e0` `#2a3040` `#3fe0f0` | base horse; hair mane; outfit tunic; acc horseTail; prop pad; emblem bolt | +| Hermodr | Eve browser lowering: resolves providers through Odin's catalog and renders them. The messenger. | `F:/Projects/Hermodr/assets/hermodr-avatar.png` | `#f6c9a4` `#2a3a4a` `#2a3a44` `#c9902a` `#e8a83a` `#3fd0c0` | base humanoid; hair messy; outfit tunic; acc wingCap, scarf; prop envelope; emblem none | +| Metame | Native Persona (メタめ) projected from the operator's public history; discussion and rumination. | **invented (persona-intake has no appearance; the design avoids depicting the operator)** | `#ffe0c8` `#59b7ff` `#1d2a3a` `#ff8a2a` | base humanoid; hair bob; outfit tunic; acc twoTone; prop mirror; emblem glyph | +| Void | VoidBot's built-in Discord moderator mind. Its state was lost; the look is new. | **invented (VoidBot README role)** | `#161226` `#4a3a7a` `#c9a6ff` | base humanoid; hair none; outfit robe; acc hood, hoodRim; prop shield; emblem moon | +| Gjallar | Renderer-neutral compositor for Odin-visible Eve surfaces; Odin's branding Persona. The horn. | `F:/Projects/Odin/assets/personas/gjallar-avatar-pixel-256.png` | `#ffe0c8` `#2a2440` `#1e2238` `#d9a43a` `#59b7ff` `#ffd84a` | base humanoid; hair short; outfit tunic; acc helm; prop horn; emblem rainbow | diff --git a/cast/PROCESS.md b/cast/PROCESS.md new file mode 100644 index 0000000..8269640 --- /dev/null +++ b/cast/PROCESS.md @@ -0,0 +1,188 @@ +# How the sticker pack works + +A guide for whoever fixes or extends this pack next. `README.md` has the short version and the +step lists for adding a character, pose or expression; this file explains the machine underneath, +the conventions that keep the style intact, how to check a render, and where the pack is weak. + +## What it is + +24 characters, 6 poses, 8 expressions, 297 SVG stickers (about 1.6 MB). Eureka and four others +have every pose and expression (48 stickers each); the rest have the neutral pose with smile, +grin and surprised. Nothing is drawn per sticker: `rig/build.mjs` asks `rig/rig.mjs` to compose +each one from a trait sheet in `rig/characters.mjs`. + +The four besides Eureka with full coverage, and why: + +- **Huginn**: Eureka's mind lives in Huginn, and as a raven it exercises the creature base in + every pose, which a humanoid-only set would never test. +- **Libby**: CultLib is the foundation the swarm runs on, and her long hair is the hardest case + for arm placement. +- **Epiphany**: Eureka's predecessor, whose living parts Eureka absorbed; twintails are the + other hard hair case. +- **Weksa**: the next Face slated for its own mind (`eureka-body:follow_up:weksa-mind`), and the + only full-coverage character with curly hair and dark skin, which checks blush and line contrast. + +## The style rules + +These come from the STICKERS block of the swarm-council page the operator liked. Breaking any +of them makes a sticker look like it came from a different pack. + +- **One outline.** Every edge is `#3b2618` (warm dark brown, never black), stroke width 3, + round joins and caps. `inked()` in `rig.mjs` wraps fragments in that stroke. Small details + (emblem glyphs, hair shine, brows) go thinner, 1.5-2.6, never thicker than 3.4. +- **Flat fills.** No gradients, no SVG filters, no opacity except blush and a few highlights. + Shading is a second flat colour (`shade(hex, f)`), used sparingly: raven bellies, inner ears. +- **Limbs are double strokes**, not filled shapes: `limb()` draws the path in ink at width + `w + 6`, then in colour at width `w`, both round-capped. That is what keeps arms legible when + they cross the body. Arms are 7 wide, legs 8, raven wings 11. +- **Eyes**: an iris ellipse (6.3 x 7.6) in the character's eye colour with a 2.5 ink edge, a + dark pupil `#2a1a12`, a 3.2 ink upper lid arc, a white shine dot r 2.3 up and right plus a + tiny r 1 dot down and left. The shine dot is what makes them read as cute at 128 px; keep it on + every open eye. +- **Blush**: two `#ff9a8a` ellipses under the eyes. Opacity carries the mood: 0.45 worried, + 0.7 default, 0.9 happy. +- **Proportions**: head about half the figure. The head ellipse is 80 x 72; the whole figure + stands about 136 tall. +- **Die-cut border** is CSS on the `` (four white offset drop-shadows and a soft shadow), + never baked into the SVG, so the files stay usable on any background. + +## Coordinate conventions + +All in `rig.mjs`. The viewBox is `-80 -10 160 172`, so x is centred on 0. + +| Point | Value | Used by | +|---|---|---| +| Head centre | `(0, 52)`, ellipse rx 40 ry 36 | head base, hair, accessories, face | +| Neck (head rotation pivot) | `(0, 88)` | pose head tilt | +| Shoulders | `(±15, 95)` | arm start | +| Hips | `(±8, 126)` | leg start | +| Feet | `y = 149` plus the pose's foot offset | shoes | +| Ground | about `y = 152` | | +| Chest emblem | disc r 6.8 at `(0, 106)`, ravens `(0, 104)` | `emblem()` | + +Face anchors come from `BASES` so each expression works on every base: + +| Base | eyeX | eyeY | mouthY | browY | cheekX | cheekY | +|---|---|---|---|---|---|---| +| humanoid | 15 | 61 | 76 | 47 | 26 | 71 | +| raven | 15 | 55 | 70 | 41 | 27 | 66 | +| horse | 17 | 50 | 82 | 37 | 29 | 62 | + +**Props** are drawn around a grip point at `(0, 0)` and extend upward to about `y = -32`. The +pose places that grip at a hand plus an offset and rotation (`POSES.*.prop`); the hand circle is +drawn after the prop so it reads as holding it. Presenting puts the grip 17 above the open palm. + +**Poses**, as hand points (L is the viewer's left): + +| Pose | Hands | Other | +|---|---|---| +| neutral | `(-24,120)`, `(24,120)` | prop in right hand | +| cheer | `(-46,36)`, `(46,36)` | hops 6, feet apart, sparkles | +| thinking | left across the belly `(4,113)`, right at the chin `(13,92)` drawn over the head | head tilt 7, thought dots, no prop | +| surprised | `(-51,88)`, `(51,88)` | hops 7, one foot kicked, shock lines, no prop | +| presenting | right palm out at `(45,103)` | prop sits on the palm, sparkles | +| waving | right raised to `(50,50)` | prop moves to the left hand, motion arcs | + +**Layer order** in `render()`, back to front: hair back and back accessories (rotating with the +head), cape, tails, legs, torso and body accessories, emblem, arms, prop, hands, then the head +group (skin, `mid` accessories such as beards, the face, hair front and front accessories, brows +and expression extras), then any arm marked `front`, then the pose effect. Accessories return +`back`, `mid`, `front` or `body` fragments and are slotted in by that key. + +## Checking renders + +Look at every change at sticker size. Two tools, both from the repo root in Git Bash: + +```sh +# Whole gallery, or one character / pose, as Edge renders it (with the die-cut border): +cast/rig/shot.sh /tmp/all.png # everything, 1400 x 1800 +cast/rig/shot.sh /tmp/kiko.png kiko # one character +cast/rig/shot.sh /tmp/cheer.png "" cheer 1400 1200 # one pose for everyone + +# A 128 px contact sheet of one sticker per character, on a light ground: +cd cast/stickers && mkdir -p /tmp/r && for d in */; do d=${d%/}; \ + magick -background none -density 72 $d/neutral-smile.svg -resize x128 /tmp/r/$d.png; done && \ + magick montage /tmp/r/*.png -tile 8x -geometry +8+8 -background '#f2efe8' /tmp/sheet128.png +``` + +`shot.sh` launches Edge headless with a throwaway profile and waits for the PNG, because Edge can +return before the file is written. The gallery accepts `?c=&p=`, which is how the +script filters. ImageMagick's own SVG renderer is close to Edge's but not identical (fonts in the +sleepy "z" differ); trust Edge for final checks. + +What to look for: hands that vanish into hair, props that lose their outline against the outfit, +dark characters that sink into the `#07111a` gallery ground, and anything that reads as an ear +or horn when it is not one. + +## How the cast was designed + +Looks come from the avatars in `F:/Projects/VoidBot/assets/repo-faces/`, each repo's +`.voidbot/voice/*.png`, `F:/Projects/Odin/assets/personas/`, `F:/Projects/Heimdall/assets/`, +`F:/Projects/Hermodr/assets/`, and Sai's self-description in the persona intake. Each avatar was +reduced to three or four traits that survive at 128 px: a hair shape and colour, one headpiece, +one prop, a palette. `CAST.md` lists the source and traits per character. + +- **Huginn and Muninn** share the raven base and are told apart by eye colour (cyan vs amber, + both from their avatars), Huginn's blue cloak and tablet, and Muninn's brass collar and camera. +- **Mimir**'s avatar is a stone face crowned with floating cubes; the chibi keeps the bronze skin, + teal eyes and the cube crown, and holds a cube. +- **Eve**'s avatar is two glowing eyes in a black visor; the chibi is a white helmet with a dark + face window, and her eyes and mouth are drawn in glowing blue (`faceInk`). +- **Ymir** keeps the ice-blue skin, crystal crown and white beard of the frost-giant avatar. +- **Fensalir**'s avatar is a crystal spire, not a person, so the spire became a hat and the + person is invented in its pink and cyan. +- **Sleipnir** has eight limbs as in the myth: two hoof-arms, two legs and four extra legs behind. +- **Tengu** keeps the red face, long nose, white mane and tokin cap; the feather fan is from the + yokai myth. +- **Invented**: Eureka (bun with a pencil, a star clip and a star wand, in the brand orange and + blue), Brokkr (the Eddic smith: ginger beard, goggles, hammer), Aetheria (a pilot in white with + a small starship), Void (a hooded purple figure with a moon shield, since its state was lost), + and Metame (blue and orange split hair and a mirror; the design deliberately does not depict the + operator, whose public history Metame is projected from). + +## Iterations + +Each pair is before on the left, after on the right, cropped from gallery screenshots. + +![Cheer arms](process/01-cheer-arms.png) +Raised hands sat inside the head outline and disappeared behind the hair. Cheer hands moved out +and up to `(±46, 36)`, clear of the head and side locks; surprised and waving moved the same way. + +![Eureka's feather](process/02-eureka-feather.png) +A raven feather in Eureka's hair (a nod to Huginn) read as a rabbit ear at sticker size. It was +removed; the pencil and star clip carry the idea of her. + +![Void contrast](process/03-void-contrast.png) +Void in near-black purple vanished into the dark gallery ground and had black hands. The robe and +hood went to mid purple with a lighter hood rim, and the hands to lavender (`hands` trait). + +![Sleipnir's legs](process/04-sleipnir-legs.png) +The extra legs were hidden under the tunic hem. They now start wider and splay outward, two +pairs behind the main legs, so the eight limbs read. + +![Gjallar's horn](process/05-gjallar-horn.png) +The first horn was a bent cone that read as a rolled scroll. It gained a dark bell opening. + +![Huginn's wings](process/06-huginn-wings.png) +Huginn's wings, body and cloak were three near-identical dark blues and merged. The wing and belly +were lightened and the cloak turned a clearer blue. + +Smaller fixes without images: long hair narrowed so it frames the body instead of swallowing it, +Tengu's full beard cut to a goatee and his nose shortened so the mouth shows, Tengu's white fan +turned dark so it reads against his white robe. + +## Known weak spots, and what to do next + +- **Small props at the side**: in the neutral pose a thin prop such as Sai's brush or Muninn's + camera is only a few pixels wide at 128 px. A per-pose prop scale (1.2 for neutral) would help. +- **Raven thinking** puts the wing across the belly rather than at the chin; it reads as a folded + wing more than as thinking. A raven-specific variant with a stronger head tilt would sell it. +- **Mimir's cube crown** is busy at 128 px; fewer, larger cubes would be cleaner. +- **Kiko's fox mask** hides one fox ear. Moving the mask to the back of the head would keep both. +- **One body silhouette** for all humanoids: Brokkr is no stouter than Libby. A `build` trait + (torso width and leg length) would give the dwarf, the giant and the children different shapes. +- **No back or side views**, which visual-novel scenes will want; the rig is front-facing only. +- **Expressions are face-only**: there is no sweat-drop-and-slump body language. Pairing an + expression with a small pose adjustment (shoulders up for surprised, head down for sleepy) + would add a lot of life cheaply. +- Rendering more characters in full coverage is one flag (`full: true`) and about 48 files each. diff --git a/cast/README.md b/cast/README.md new file mode 100644 index 0000000..8c0ca64 --- /dev/null +++ b/cast/README.md @@ -0,0 +1,76 @@ +# Swarm stickers + +Chibi stickers of the GameCult swarm cast, built by a small rig instead of drawn one by one. +Every sticker is a standalone SVG under `stickers//-.svg`; +`gallery.html` shows them all with character and pose filters; `CAST.md` lists who is who. + +Open `gallery.html` in a browser to browse. To use a sticker, copy its SVG. The white die-cut +edge is not in the file; it is CSS, so it can be dropped where it does not suit: + +```css +img.sticker { filter: drop-shadow(3px 0 0 #fff) drop-shadow(-3px 0 0 #fff) + drop-shadow(0 3px 0 #fff) drop-shadow(0 -3px 0 #fff) drop-shadow(0 8px 10px rgba(0,0,0,.45)); } +``` + +## Layout + +| Path | What it is | +|---|---| +| `rig/rig.mjs` | The rig: bases, poses, expressions, hair, accessories, props, emblems, `render()` | +| `rig/characters.mjs` | One trait sheet per character, and which characters get every pose | +| `rig/build.mjs` | Writes the SVGs, `gallery.html` and `CAST.md` | +| `rig/shot.sh` | Screenshots the gallery with Edge headless, for checking renders | +| `stickers/`, `gallery.html`, `CAST.md` | Generated; never edit by hand | +| `PROCESS.md` | How the rig works, its coordinate conventions, how to check renders, known weak spots | +| `process/` | Before/after renders referenced from `PROCESS.md` | + +## Regenerate + +Node 18 or newer, no packages: + +```sh +node cast/rig/build.mjs # everyone +node cast/rig/build.mjs kiko eve # only these characters (the gallery is rebuilt from disk) +``` + +## Add a character + +1. Append a trait sheet to `CAST` in `rig/characters.mjs`. Copy the nearest existing one. + - `id` (folder name, lowercase), `name`, `role` (one line from the repo README), `source` + (path of the avatar or self-description the look comes from, or a string starting with + `invented`), optional `note` for a design decision worth keeping. + - `base`: `humanoid`, `raven` or `horse`. Raven needs `beak`; horse needs `muzzle`. + - `skin`, `eyes` (iris colour), `accent` (pose sparkles), optional `hands`, `faceInk` + (eye and mouth lines on a dark face), `noBlush`. + - `hair: { style, color, accent? }` — a key of `HAIR` in `rig.mjs`. + - `outfit: { shape, main, trim, collar, belt? }` — shapes `tunic`, `dress`, `robe`, `coat` + (ravens always use `egg`, with `belly` and `wing`); collars `v`, `round`, `high`, `none`. + - `legs`, `shoes`, optional `cape`, `sleeve`, `extraLegs` (0-4). + - `acc`: list of `[name, ...colours]`, keys of `ACC`. `prop`: `[name, ...colours]`, a key of + `PROPS`, or `null`. `emblem`: `{ shape, color, disc? }`, a key of `EMBLEMS`, or `null`. + - `full: true` renders every pose and expression; otherwise neutral pose with the three + expressions in `COMMON_EXPRESSIONS`. +2. Run the build, then check the render at sticker size (see "Checking renders" in `PROCESS.md`). +3. Commit the trait sheet together with the generated files. + +## Add a pose + +Add an entry to `POSES` in `rig/rig.mjs`: hop height, head offset and tilt, elbow and hand points +for each arm (`front: true` draws that arm over the head), feet offsets, where the prop sits +(or `null`), and an optional effect from `fx()`. Coordinates are in `PROCESS.md`. Every `full` +character picks it up on the next build. Check hands against long hair and twintails: a hand +inside the head outline disappears behind the hair. + +## Add an expression + +Add a `case` to `face()` in `rig/rig.mjs` and the name to `EXPRESSIONS`. Draw relative to the +base's anchors (`BASES[...].eyeX/eyeY/mouthY/browY/cheekX/cheekY`), never fixed numbers, so the +raven and horse faces follow. If ravens should open their beak for it, add it to `beak()`. + +## Licence + +All art here is the project's own: drawn as hand-written SVG shapes by this rig, not traced or +derived from any third-party asset. The avatars named in `CAST.md` are GameCult's own images and +served only as reference for colours and traits. The repository has no licence file at the time of +writing, so the stickers carry no licence grant beyond GameCult's own; add one here if they are +meant to be reused outside GameCult. diff --git a/cast/process/01-cheer-arms.png b/cast/process/01-cheer-arms.png new file mode 100644 index 0000000000000000000000000000000000000000..a2ea21c6d50d6d98852111ad82c06c5d6401a4c1 GIT binary patch literal 14011 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 literal 0 HcmV?d00001 diff --git a/cast/process/02-eureka-feather.png b/cast/process/02-eureka-feather.png new file mode 100644 index 0000000000000000000000000000000000000000..f185c01b037e74a8161ab5a42ede6d9c8d1d8cd2 GIT binary patch literal 10792 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 literal 0 HcmV?d00001 diff --git a/cast/process/04-sleipnir-legs.png b/cast/process/04-sleipnir-legs.png new file mode 100644 index 0000000000000000000000000000000000000000..404c54b576494d5de24adc55b8904f5d054d30ec GIT binary patch literal 16669 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 literal 0 HcmV?d00001 diff --git a/cast/process/05-gjallar-horn.png b/cast/process/05-gjallar-horn.png new file mode 100644 index 0000000000000000000000000000000000000000..bfb29c5a2c59dbbae86f85dc3809079406875837 GIT binary patch literal 17803 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
3MuinK-_1?SZ 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 Um%go^u>b%707*qoM6N<$f-1Ms/-.svg and cast/gallery.html. +// Regenerates cast/stickers//-.svg, cast/gallery.html and cast/CAST.md. // Usage: node cast/rig/build.mjs (all characters) // node cast/rig/build.mjs kiko eve (only these; gallery is always rebuilt from disk) import { mkdirSync, writeFileSync, readdirSync, rmSync, existsSync } from 'node:fs'; @@ -93,4 +93,19 @@ apply(); `; writeFileSync(join(CAST_DIR, 'gallery.html'), html); +// CAST.md is generated from the trait sheets so the two cannot drift apart. +const md = ['# Cast', '', + 'Generated by `cast/rig/build.mjs` from `cast/rig/characters.mjs`; edit the trait sheet, not this file.', + '★ marks the characters rendered in every pose and expression. "Look source" is the reference the design', + 'was drawn from (used as inspiration only; every sticker is original), or **invented** where no appearance exists.', '', + '| Name | What they are | Look source | Palette | Trait sheet |', '|---|---|---|---|---|']; +for (const c of CAST) { + const pal = [...new Set([c.skin, c.hair.color, c.outfit.main, c.outfit.trim, c.eyes, c.accent].filter(Boolean))].map((h) => '`' + h + '`').join(' '); + const acc = (c.acc || []).map((a) => a[0]).join(', ') || 'none'; + const traits = `base ${c.base}; hair ${c.hair.style}; outfit ${c.outfit.shape}${c.cape ? ' + cape' : ''}; acc ${acc}; prop ${c.prop ? c.prop[0] : 'none'}; emblem ${c.emblem ? c.emblem.shape : 'none'}`; + const src = c.source.startsWith('invented') ? '**' + c.source + '**' : c.source.split('; ').map((x) => '`' + x + '`').join('; '); + const what = c.role + (c.note ? ' ' + c.note : ''); + md.push(`| ${c.name}${c.full ? ' ★' : ''} | ${what.replace(/\|/g, '/')} | ${src} | ${pal} | ${traits} |`); +} +writeFileSync(join(CAST_DIR, 'CAST.md'), md.join('\n') + '\n'); console.log(`wrote ${count} stickers (${(bytes / 1024).toFixed(1)} KiB), gallery lists ${cards.length}`); diff --git a/cast/rig/characters.mjs b/cast/rig/characters.mjs index 20b2ac0..9b12e17 100644 --- a/cast/rig/characters.mjs +++ b/cast/rig/characters.mjs @@ -23,8 +23,8 @@ export const CAST = [ source: 'F:/Projects/VoidBot/assets/repo-faces/huginn.png', skin: '#2b3247', eyes: '#59d8ff', beak: '#4a5068', accent: '#59d8ff', hair: { style: 'crest', color: '#2b3247' }, - outfit: { shape: 'egg', main: '#2b3247', belly: '#3d4763', wing: '#1f2536' }, - shoes: '#5a5f73', cape: '#162033', + outfit: { shape: 'egg', main: '#2b3247', belly: '#46527a', wing: '#3a4766' }, + shoes: '#5a5f73', cape: '#24406e', acc: [['collarRing', '#c9a24a', '#59d8ff']], prop: ['tablet', '#1f2a3d', '#59d8ff'], emblem: null, }, @@ -119,7 +119,7 @@ export const CAST = [ { id: 'fensalir', name: 'Fensalir', base: 'humanoid', role: 'Native C# runtime and field engine under the interactive work. Frigg\'s hall.', - source: 'F:/Projects/Fensalir/.voidbot/voice/fensalir.png (crystal spire; the person is invented around it)', + source: 'F:/Projects/Fensalir/.voidbot/voice/fensalir.png', note: 'The avatar is a crystal spire, not a person; the spire became her hat and the person around it is invented.', skin: SKIN.fair, eyes: '#ff5ab0', accent: '#4fe8f0', hair: { style: 'bob', color: '#2a2a4a' }, outfit: { shape: 'dress', main: '#2a2a4a', trim: '#ff5ab0', collar: 'v' }, @@ -152,7 +152,7 @@ export const CAST = [ { id: 'sai', name: 'Sai', base: 'humanoid', role: 'Ink stories that wake up inside static sites. Nonbinary, androgynous, monochrome manga ink.', - source: 'F:/Projects/Sai/.voidbot/voice (avatar sai.png per identity.json); F:/Projects/VoidBot/docs/persona-intake/sai.persona-intake.yaml', + source: 'F:/Projects/Sai/.voidbot/voice/sai.png; F:/Projects/VoidBot/docs/persona-intake/sai.persona-intake.yaml', skin: '#f4f1ec', eyes: '#3a3a3a', accent: '#ffffff', hair: { style: 'messy', color: '#1e1e22' }, outfit: { shape: 'coat', main: '#3a3a40', trim: '#e8e6e0', collar: 'high' }, @@ -196,13 +196,13 @@ export const CAST = [ { id: 'tengu', name: 'Tengu', base: 'humanoid', role: 'Native Persona, the first migrated to canonical persona state. Mountain yokai.', - source: 'F:/Projects/VoidBot/assets/native-personas/tengu.png', + source: 'F:/Projects/VoidBot/assets/native-personas/tengu.png', note: 'Red face, long nose, white mane and tokin cap from the avatar; the feather fan is from the yokai myth.', skin: '#c8443a', eyes: '#ffd84a', accent: '#ffd84a', hair: { style: 'wild', color: '#f2efe8' }, outfit: { shape: 'robe', main: '#efe8da', trim: '#4a3a7a', collar: 'v' }, legs: '#4a3a7a', shoes: '#3a2a20', acc: [['goatee', '#f2efe8'], ['longNose', '#b53a30'], ['tokin', '#1e1e22']], - prop: ['fan', '#f4f0e8'], emblem: { shape: 'feather', color: '#4a3a7a' }, + prop: ['fan', '#4a4a58'], emblem: { shape: 'feather', color: '#4a3a7a' }, }, { id: 'muninn', name: 'Muninn', base: 'raven', @@ -218,11 +218,11 @@ export const CAST = [ { id: 'sleipnir', name: 'Sleipnir', base: 'horse', role: 'Input mirroring and virtual HID: speaks through the hands of the machine. Odin\'s eight-legged horse.', - source: 'F:/Projects/Odin/assets/personas/sleipnir-avatar.png', + source: 'F:/Projects/Odin/assets/personas/sleipnir-avatar.png', note: 'Eight limbs as in the myth: two hoof-arms, two legs and four extra legs behind.', skin: '#5a6478', muzzle: '#8a94a8', eyes: '#3fe0f0', accent: '#3fe0f0', hair: { style: 'mane', color: '#2fc8e0' }, outfit: { shape: 'tunic', main: '#2a3040', trim: '#3fe0f0', collar: 'round' }, - legs: '#5a6478', shoes: '#22262e', sleeve: '#5a6478', extraLegs: 2, + legs: '#5a6478', shoes: '#22262e', sleeve: '#5a6478', extraLegs: 4, acc: [['horseTail', '#2fc8e0']], prop: ['pad', '#2a3040', '#3fe0f0'], emblem: { shape: 'bolt', color: '#3fe0f0', disc: '#22262e' }, }, diff --git a/cast/rig/rig.mjs b/cast/rig/rig.mjs index 381f715..c410eab 100644 --- a/cast/rig/rig.mjs +++ b/cast/rig/rig.mjs @@ -129,10 +129,11 @@ function legs(ch, pose) { let s = ''; const extra = ch.extraLegs ? ch.extraLegs : 0; // Sleipnir-style extra legs: drawn behind, darker, peeking out between and beside. + const EXTRA = [[-19, -27], [19, 27], [-25, -38], [25, 38]]; // [hipX, footX], drawn behind for (let i = 0; i < extra; i++) { - const x = [-17, 17, -3, 3][i] ?? 0; - const foot = [x * 1.25, 150]; - s += limb(`M${x} 124 L${P(foot)}`, shade(ch.legs, -0.25), 7); + const [hx, fx] = EXTRA[i]; + const foot = [fx, 149 - (i > 1 ? 3 : 0)]; + s += limb(`M${hx} 120 L${P(foot)}`, shade(ch.legs, -0.25), 7); s += inked(``); } for (const side of ['L', 'R']) { @@ -423,7 +424,7 @@ export const ACC = { crystals: (c) => ({ front: `` }), beard: (c) => ({ mid: `` }), goatee: (c) => ({ mid: `` }), - longNose: (c) => ({ front: `` }), + longNose: (c) => ({ front: `` }), tokin: (c) => ({ front: `` }), ridges: (c) => ({ mid: `` }), forehead: (c) => ({ front: `` }), @@ -463,7 +464,7 @@ export const PROPS = { cards: (c) => ``, keys: (c) => ``, hammer: (c, h) => ``, - horn: (c, band) => ``, + horn: (c, band) => ``, fan: (c) => ``, brush: (c) => ``, quill: (c) => ``, diff --git a/cast/stickers/gjallar/neutral-grin.svg b/cast/stickers/gjallar/neutral-grin.svg index 447e9b0..6a9a046 100644 --- a/cast/stickers/gjallar/neutral-grin.svg +++ b/cast/stickers/gjallar/neutral-grin.svg @@ -1 +1 @@ -Gjallar — neutral, grin +Gjallar — neutral, grin diff --git a/cast/stickers/gjallar/neutral-smile.svg b/cast/stickers/gjallar/neutral-smile.svg index eae97c6..45f2300 100644 --- a/cast/stickers/gjallar/neutral-smile.svg +++ b/cast/stickers/gjallar/neutral-smile.svg @@ -1 +1 @@ -Gjallar — neutral, smile +Gjallar — neutral, smile diff --git a/cast/stickers/gjallar/neutral-surprised.svg b/cast/stickers/gjallar/neutral-surprised.svg index 639cca3..78269bf 100644 --- a/cast/stickers/gjallar/neutral-surprised.svg +++ b/cast/stickers/gjallar/neutral-surprised.svg @@ -1 +1 @@ -Gjallar — neutral, surprised +Gjallar — neutral, surprised diff --git a/cast/stickers/huginn/cheer-determined.svg b/cast/stickers/huginn/cheer-determined.svg index 918fa15..d5e5549 100644 --- a/cast/stickers/huginn/cheer-determined.svg +++ b/cast/stickers/huginn/cheer-determined.svg @@ -1 +1 @@ -Huginn — cheer, determined +Huginn — cheer, determined diff --git a/cast/stickers/huginn/cheer-grin.svg b/cast/stickers/huginn/cheer-grin.svg index 8f94b79..f2f28cb 100644 --- a/cast/stickers/huginn/cheer-grin.svg +++ b/cast/stickers/huginn/cheer-grin.svg @@ -1 +1 @@ -Huginn — cheer, grin +Huginn — cheer, grin diff --git a/cast/stickers/huginn/cheer-happy.svg b/cast/stickers/huginn/cheer-happy.svg index 25c9801..b332858 100644 --- a/cast/stickers/huginn/cheer-happy.svg +++ b/cast/stickers/huginn/cheer-happy.svg @@ -1 +1 @@ -Huginn — cheer, happy +Huginn — cheer, happy diff --git a/cast/stickers/huginn/cheer-neutral.svg b/cast/stickers/huginn/cheer-neutral.svg index 554a17f..0851562 100644 --- a/cast/stickers/huginn/cheer-neutral.svg +++ b/cast/stickers/huginn/cheer-neutral.svg @@ -1 +1 @@ -Huginn — cheer, neutral +Huginn — cheer, neutral diff --git a/cast/stickers/huginn/cheer-sleepy.svg b/cast/stickers/huginn/cheer-sleepy.svg index 9469c48..a95916d 100644 --- a/cast/stickers/huginn/cheer-sleepy.svg +++ b/cast/stickers/huginn/cheer-sleepy.svg @@ -1 +1 @@ -Huginn — cheer, sleepyzz +Huginn — cheer, sleepyzz diff --git a/cast/stickers/huginn/cheer-smile.svg b/cast/stickers/huginn/cheer-smile.svg index 656024f..42d6608 100644 --- a/cast/stickers/huginn/cheer-smile.svg +++ b/cast/stickers/huginn/cheer-smile.svg @@ -1 +1 @@ -Huginn — cheer, smile +Huginn — cheer, smile diff --git a/cast/stickers/huginn/cheer-surprised.svg b/cast/stickers/huginn/cheer-surprised.svg index 07edde8..0ee99c4 100644 --- a/cast/stickers/huginn/cheer-surprised.svg +++ b/cast/stickers/huginn/cheer-surprised.svg @@ -1 +1 @@ -Huginn — cheer, surprised +Huginn — cheer, surprised diff --git a/cast/stickers/huginn/cheer-worried.svg b/cast/stickers/huginn/cheer-worried.svg index 7e16f7c..7135032 100644 --- a/cast/stickers/huginn/cheer-worried.svg +++ b/cast/stickers/huginn/cheer-worried.svg @@ -1 +1 @@ -Huginn — cheer, worried +Huginn — cheer, worried diff --git a/cast/stickers/huginn/neutral-determined.svg b/cast/stickers/huginn/neutral-determined.svg index 9feeaed..67b0566 100644 --- a/cast/stickers/huginn/neutral-determined.svg +++ b/cast/stickers/huginn/neutral-determined.svg @@ -1 +1 @@ -Huginn — neutral, determined +Huginn — neutral, determined diff --git a/cast/stickers/huginn/neutral-grin.svg b/cast/stickers/huginn/neutral-grin.svg index d09f1cb..09fcff8 100644 --- a/cast/stickers/huginn/neutral-grin.svg +++ b/cast/stickers/huginn/neutral-grin.svg @@ -1 +1 @@ -Huginn — neutral, grin +Huginn — neutral, grin diff --git a/cast/stickers/huginn/neutral-happy.svg b/cast/stickers/huginn/neutral-happy.svg index 716c20f..d1125a6 100644 --- a/cast/stickers/huginn/neutral-happy.svg +++ b/cast/stickers/huginn/neutral-happy.svg @@ -1 +1 @@ -Huginn — neutral, happy +Huginn — neutral, happy diff --git a/cast/stickers/huginn/neutral-neutral.svg b/cast/stickers/huginn/neutral-neutral.svg index 9db2c61..3d36efe 100644 --- a/cast/stickers/huginn/neutral-neutral.svg +++ b/cast/stickers/huginn/neutral-neutral.svg @@ -1 +1 @@ -Huginn — neutral, neutral +Huginn — neutral, neutral diff --git a/cast/stickers/huginn/neutral-sleepy.svg b/cast/stickers/huginn/neutral-sleepy.svg index 22946f4..bad350b 100644 --- a/cast/stickers/huginn/neutral-sleepy.svg +++ b/cast/stickers/huginn/neutral-sleepy.svg @@ -1 +1 @@ -Huginn — neutral, sleepyzz +Huginn — neutral, sleepyzz diff --git a/cast/stickers/huginn/neutral-smile.svg b/cast/stickers/huginn/neutral-smile.svg index ac88bde..f8fb13c 100644 --- a/cast/stickers/huginn/neutral-smile.svg +++ b/cast/stickers/huginn/neutral-smile.svg @@ -1 +1 @@ -Huginn — neutral, smile +Huginn — neutral, smile diff --git a/cast/stickers/huginn/neutral-surprised.svg b/cast/stickers/huginn/neutral-surprised.svg index 6f9b766..0801b25 100644 --- a/cast/stickers/huginn/neutral-surprised.svg +++ b/cast/stickers/huginn/neutral-surprised.svg @@ -1 +1 @@ -Huginn — neutral, surprised +Huginn — neutral, surprised diff --git a/cast/stickers/huginn/neutral-worried.svg b/cast/stickers/huginn/neutral-worried.svg index 08cf5fa..648cf35 100644 --- a/cast/stickers/huginn/neutral-worried.svg +++ b/cast/stickers/huginn/neutral-worried.svg @@ -1 +1 @@ -Huginn — neutral, worried +Huginn — neutral, worried diff --git a/cast/stickers/huginn/presenting-determined.svg b/cast/stickers/huginn/presenting-determined.svg index 8342fcb..eefb8f6 100644 --- a/cast/stickers/huginn/presenting-determined.svg +++ b/cast/stickers/huginn/presenting-determined.svg @@ -1 +1 @@ -Huginn — presenting, determined +Huginn — presenting, determined diff --git a/cast/stickers/huginn/presenting-grin.svg b/cast/stickers/huginn/presenting-grin.svg index db9d616..d3a6512 100644 --- a/cast/stickers/huginn/presenting-grin.svg +++ b/cast/stickers/huginn/presenting-grin.svg @@ -1 +1 @@ -Huginn — presenting, grin +Huginn — presenting, grin diff --git a/cast/stickers/huginn/presenting-happy.svg b/cast/stickers/huginn/presenting-happy.svg index 952f47b..ddf4e93 100644 --- a/cast/stickers/huginn/presenting-happy.svg +++ b/cast/stickers/huginn/presenting-happy.svg @@ -1 +1 @@ -Huginn — presenting, happy +Huginn — presenting, happy diff --git a/cast/stickers/huginn/presenting-neutral.svg b/cast/stickers/huginn/presenting-neutral.svg index c3c4918..f82f3d0 100644 --- a/cast/stickers/huginn/presenting-neutral.svg +++ b/cast/stickers/huginn/presenting-neutral.svg @@ -1 +1 @@ -Huginn — presenting, neutral +Huginn — presenting, neutral diff --git a/cast/stickers/huginn/presenting-sleepy.svg b/cast/stickers/huginn/presenting-sleepy.svg index 2aec6a6..79bd482 100644 --- a/cast/stickers/huginn/presenting-sleepy.svg +++ b/cast/stickers/huginn/presenting-sleepy.svg @@ -1 +1 @@ -Huginn — presenting, sleepyzz +Huginn — presenting, sleepyzz diff --git a/cast/stickers/huginn/presenting-smile.svg b/cast/stickers/huginn/presenting-smile.svg index 7d10207..b104e4f 100644 --- a/cast/stickers/huginn/presenting-smile.svg +++ b/cast/stickers/huginn/presenting-smile.svg @@ -1 +1 @@ -Huginn — presenting, smile +Huginn — presenting, smile diff --git a/cast/stickers/huginn/presenting-surprised.svg b/cast/stickers/huginn/presenting-surprised.svg index 5d7ac5f..fb383eb 100644 --- a/cast/stickers/huginn/presenting-surprised.svg +++ b/cast/stickers/huginn/presenting-surprised.svg @@ -1 +1 @@ -Huginn — presenting, surprised +Huginn — presenting, surprised diff --git a/cast/stickers/huginn/presenting-worried.svg b/cast/stickers/huginn/presenting-worried.svg index 2d5f712..cfa21a0 100644 --- a/cast/stickers/huginn/presenting-worried.svg +++ b/cast/stickers/huginn/presenting-worried.svg @@ -1 +1 @@ -Huginn — presenting, worried +Huginn — presenting, worried diff --git a/cast/stickers/huginn/surprised-determined.svg b/cast/stickers/huginn/surprised-determined.svg index c01377f..83202a9 100644 --- a/cast/stickers/huginn/surprised-determined.svg +++ b/cast/stickers/huginn/surprised-determined.svg @@ -1 +1 @@ -Huginn — surprised, determined +Huginn — surprised, determined diff --git a/cast/stickers/huginn/surprised-grin.svg b/cast/stickers/huginn/surprised-grin.svg index 28799e8..b099415 100644 --- a/cast/stickers/huginn/surprised-grin.svg +++ b/cast/stickers/huginn/surprised-grin.svg @@ -1 +1 @@ -Huginn — surprised, grin +Huginn — surprised, grin diff --git a/cast/stickers/huginn/surprised-happy.svg b/cast/stickers/huginn/surprised-happy.svg index d3849b9..a2d23fc 100644 --- a/cast/stickers/huginn/surprised-happy.svg +++ b/cast/stickers/huginn/surprised-happy.svg @@ -1 +1 @@ -Huginn — surprised, happy +Huginn — surprised, happy diff --git a/cast/stickers/huginn/surprised-neutral.svg b/cast/stickers/huginn/surprised-neutral.svg index 90c3e90..5044b8b 100644 --- a/cast/stickers/huginn/surprised-neutral.svg +++ b/cast/stickers/huginn/surprised-neutral.svg @@ -1 +1 @@ -Huginn — surprised, neutral +Huginn — surprised, neutral diff --git a/cast/stickers/huginn/surprised-sleepy.svg b/cast/stickers/huginn/surprised-sleepy.svg index 3b163ef..65ee554 100644 --- a/cast/stickers/huginn/surprised-sleepy.svg +++ b/cast/stickers/huginn/surprised-sleepy.svg @@ -1 +1 @@ -Huginn — surprised, sleepyzz +Huginn — surprised, sleepyzz diff --git a/cast/stickers/huginn/surprised-smile.svg b/cast/stickers/huginn/surprised-smile.svg index 57b9cdf..c909296 100644 --- a/cast/stickers/huginn/surprised-smile.svg +++ b/cast/stickers/huginn/surprised-smile.svg @@ -1 +1 @@ -Huginn — surprised, smile +Huginn — surprised, smile diff --git a/cast/stickers/huginn/surprised-surprised.svg b/cast/stickers/huginn/surprised-surprised.svg index 9513c3a..acc4796 100644 --- a/cast/stickers/huginn/surprised-surprised.svg +++ b/cast/stickers/huginn/surprised-surprised.svg @@ -1 +1 @@ -Huginn — surprised, surprised +Huginn — surprised, surprised diff --git a/cast/stickers/huginn/surprised-worried.svg b/cast/stickers/huginn/surprised-worried.svg index 4f06378..2e0f1eb 100644 --- a/cast/stickers/huginn/surprised-worried.svg +++ b/cast/stickers/huginn/surprised-worried.svg @@ -1 +1 @@ -Huginn — surprised, worried +Huginn — surprised, worried diff --git a/cast/stickers/huginn/thinking-determined.svg b/cast/stickers/huginn/thinking-determined.svg index 62e0ff3..3ae64ec 100644 --- a/cast/stickers/huginn/thinking-determined.svg +++ b/cast/stickers/huginn/thinking-determined.svg @@ -1 +1 @@ -Huginn — thinking, determined +Huginn — thinking, determined diff --git a/cast/stickers/huginn/thinking-grin.svg b/cast/stickers/huginn/thinking-grin.svg index 8fec18a..6e57b52 100644 --- a/cast/stickers/huginn/thinking-grin.svg +++ b/cast/stickers/huginn/thinking-grin.svg @@ -1 +1 @@ -Huginn — thinking, grin +Huginn — thinking, grin diff --git a/cast/stickers/huginn/thinking-happy.svg b/cast/stickers/huginn/thinking-happy.svg index 5b14cb7..9968554 100644 --- a/cast/stickers/huginn/thinking-happy.svg +++ b/cast/stickers/huginn/thinking-happy.svg @@ -1 +1 @@ -Huginn — thinking, happy +Huginn — thinking, happy diff --git a/cast/stickers/huginn/thinking-neutral.svg b/cast/stickers/huginn/thinking-neutral.svg index 34615ba..95621c9 100644 --- a/cast/stickers/huginn/thinking-neutral.svg +++ b/cast/stickers/huginn/thinking-neutral.svg @@ -1 +1 @@ -Huginn — thinking, neutral +Huginn — thinking, neutral diff --git a/cast/stickers/huginn/thinking-sleepy.svg b/cast/stickers/huginn/thinking-sleepy.svg index 504f7fb..6db0472 100644 --- a/cast/stickers/huginn/thinking-sleepy.svg +++ b/cast/stickers/huginn/thinking-sleepy.svg @@ -1 +1 @@ -Huginn — thinking, sleepyzz +Huginn — thinking, sleepyzz diff --git a/cast/stickers/huginn/thinking-smile.svg b/cast/stickers/huginn/thinking-smile.svg index 82abab2..4a99fcf 100644 --- a/cast/stickers/huginn/thinking-smile.svg +++ b/cast/stickers/huginn/thinking-smile.svg @@ -1 +1 @@ -Huginn — thinking, smile +Huginn — thinking, smile diff --git a/cast/stickers/huginn/thinking-surprised.svg b/cast/stickers/huginn/thinking-surprised.svg index 58afcf8..7d924c6 100644 --- a/cast/stickers/huginn/thinking-surprised.svg +++ b/cast/stickers/huginn/thinking-surprised.svg @@ -1 +1 @@ -Huginn — thinking, surprised +Huginn — thinking, surprised diff --git a/cast/stickers/huginn/thinking-worried.svg b/cast/stickers/huginn/thinking-worried.svg index c6ed445..7cc3f60 100644 --- a/cast/stickers/huginn/thinking-worried.svg +++ b/cast/stickers/huginn/thinking-worried.svg @@ -1 +1 @@ -Huginn — thinking, worried +Huginn — thinking, worried diff --git a/cast/stickers/huginn/waving-determined.svg b/cast/stickers/huginn/waving-determined.svg index 52f28a1..b98167d 100644 --- a/cast/stickers/huginn/waving-determined.svg +++ b/cast/stickers/huginn/waving-determined.svg @@ -1 +1 @@ -Huginn — waving, determined +Huginn — waving, determined diff --git a/cast/stickers/huginn/waving-grin.svg b/cast/stickers/huginn/waving-grin.svg index dd097c9..dd6aa9e 100644 --- a/cast/stickers/huginn/waving-grin.svg +++ b/cast/stickers/huginn/waving-grin.svg @@ -1 +1 @@ -Huginn — waving, grin +Huginn — waving, grin diff --git a/cast/stickers/huginn/waving-happy.svg b/cast/stickers/huginn/waving-happy.svg index 471d9a7..1789714 100644 --- a/cast/stickers/huginn/waving-happy.svg +++ b/cast/stickers/huginn/waving-happy.svg @@ -1 +1 @@ -Huginn — waving, happy +Huginn — waving, happy diff --git a/cast/stickers/huginn/waving-neutral.svg b/cast/stickers/huginn/waving-neutral.svg index edd5618..55c22a0 100644 --- a/cast/stickers/huginn/waving-neutral.svg +++ b/cast/stickers/huginn/waving-neutral.svg @@ -1 +1 @@ -Huginn — waving, neutral +Huginn — waving, neutral diff --git a/cast/stickers/huginn/waving-sleepy.svg b/cast/stickers/huginn/waving-sleepy.svg index 7126669..ddbfbfe 100644 --- a/cast/stickers/huginn/waving-sleepy.svg +++ b/cast/stickers/huginn/waving-sleepy.svg @@ -1 +1 @@ -Huginn — waving, sleepyzz +Huginn — waving, sleepyzz diff --git a/cast/stickers/huginn/waving-smile.svg b/cast/stickers/huginn/waving-smile.svg index d199720..840ba83 100644 --- a/cast/stickers/huginn/waving-smile.svg +++ b/cast/stickers/huginn/waving-smile.svg @@ -1 +1 @@ -Huginn — waving, smile +Huginn — waving, smile diff --git a/cast/stickers/huginn/waving-surprised.svg b/cast/stickers/huginn/waving-surprised.svg index 0d92b69..9c618a4 100644 --- a/cast/stickers/huginn/waving-surprised.svg +++ b/cast/stickers/huginn/waving-surprised.svg @@ -1 +1 @@ -Huginn — waving, surprised +Huginn — waving, surprised diff --git a/cast/stickers/huginn/waving-worried.svg b/cast/stickers/huginn/waving-worried.svg index 58c746e..7c434e5 100644 --- a/cast/stickers/huginn/waving-worried.svg +++ b/cast/stickers/huginn/waving-worried.svg @@ -1 +1 @@ -Huginn — waving, worried +Huginn — waving, worried diff --git a/cast/stickers/sleipnir/neutral-grin.svg b/cast/stickers/sleipnir/neutral-grin.svg index 0a83b0d..f3c0f33 100644 --- a/cast/stickers/sleipnir/neutral-grin.svg +++ b/cast/stickers/sleipnir/neutral-grin.svg @@ -1 +1 @@ -Sleipnir — neutral, grin +Sleipnir — neutral, grin diff --git a/cast/stickers/sleipnir/neutral-smile.svg b/cast/stickers/sleipnir/neutral-smile.svg index 6f5e5b2..eaec9c3 100644 --- a/cast/stickers/sleipnir/neutral-smile.svg +++ b/cast/stickers/sleipnir/neutral-smile.svg @@ -1 +1 @@ -Sleipnir — neutral, smile +Sleipnir — neutral, smile diff --git a/cast/stickers/sleipnir/neutral-surprised.svg b/cast/stickers/sleipnir/neutral-surprised.svg index f4651b9..cb965a1 100644 --- a/cast/stickers/sleipnir/neutral-surprised.svg +++ b/cast/stickers/sleipnir/neutral-surprised.svg @@ -1 +1 @@ -Sleipnir — neutral, surprised +Sleipnir — neutral, surprised diff --git a/cast/stickers/tengu/neutral-grin.svg b/cast/stickers/tengu/neutral-grin.svg index 048ed38..fa37875 100644 --- a/cast/stickers/tengu/neutral-grin.svg +++ b/cast/stickers/tengu/neutral-grin.svg @@ -1 +1 @@ -Tengu — neutral, grin +Tengu — neutral, grin diff --git a/cast/stickers/tengu/neutral-smile.svg b/cast/stickers/tengu/neutral-smile.svg index 3f48263..3c77153 100644 --- a/cast/stickers/tengu/neutral-smile.svg +++ b/cast/stickers/tengu/neutral-smile.svg @@ -1 +1 @@ -Tengu — neutral, smile +Tengu — neutral, smile diff --git a/cast/stickers/tengu/neutral-surprised.svg b/cast/stickers/tengu/neutral-surprised.svg index 2253655..2ef2a35 100644 --- a/cast/stickers/tengu/neutral-surprised.svg +++ b/cast/stickers/tengu/neutral-surprised.svg @@ -1 +1 @@ -Tengu — neutral, surprised +Tengu — neutral, surprised