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/gallery.html b/cast/gallery.html new file mode 100644 index 0000000..a9c07d0 --- /dev/null +++ b/cast/gallery.html @@ -0,0 +1,340 @@ + + +Swarm Stickers + +

Swarm stickers

+

297 stickers, 24 characters. Generated by cast/rig/build.mjs; the white die-cut edge is CSS on the image.

+ +
+
+
Eureka, neutral, neutral
Eureka neutral · neutral
+
Eureka, neutral, smile
Eureka neutral · smile
+
Eureka, neutral, grin
Eureka neutral · grin
+
Eureka, neutral, happy
Eureka neutral · happy
+
Eureka, neutral, worried
Eureka neutral · worried
+
Eureka, neutral, surprised
Eureka neutral · surprised
+
Eureka, neutral, determined
Eureka neutral · determined
+
Eureka, neutral, sleepy
Eureka neutral · sleepy
+
Eureka, cheer, neutral
Eureka cheer · neutral
+
Eureka, cheer, smile
Eureka cheer · smile
+
Eureka, cheer, grin
Eureka cheer · grin
+
Eureka, cheer, happy
Eureka cheer · happy
+
Eureka, cheer, worried
Eureka cheer · worried
+
Eureka, cheer, surprised
Eureka cheer · surprised
+
Eureka, cheer, determined
Eureka cheer · determined
+
Eureka, cheer, sleepy
Eureka cheer · sleepy
+
Eureka, thinking, neutral
Eureka thinking · neutral
+
Eureka, thinking, smile
Eureka thinking · smile
+
Eureka, thinking, grin
Eureka thinking · grin
+
Eureka, thinking, happy
Eureka thinking · happy
+
Eureka, thinking, worried
Eureka thinking · worried
+
Eureka, thinking, surprised
Eureka thinking · surprised
+
Eureka, thinking, determined
Eureka thinking · determined
+
Eureka, thinking, sleepy
Eureka thinking · sleepy
+
Eureka, surprised, neutral
Eureka surprised · neutral
+
Eureka, surprised, smile
Eureka surprised · smile
+
Eureka, surprised, grin
Eureka surprised · grin
+
Eureka, surprised, happy
Eureka surprised · happy
+
Eureka, surprised, worried
Eureka surprised · worried
+
Eureka, surprised, surprised
Eureka surprised · surprised
+
Eureka, surprised, determined
Eureka surprised · determined
+
Eureka, surprised, sleepy
Eureka surprised · sleepy
+
Eureka, presenting, neutral
Eureka presenting · neutral
+
Eureka, presenting, smile
Eureka presenting · smile
+
Eureka, presenting, grin
Eureka presenting · grin
+
Eureka, presenting, happy
Eureka presenting · happy
+
Eureka, presenting, worried
Eureka presenting · worried
+
Eureka, presenting, surprised
Eureka presenting · surprised
+
Eureka, presenting, determined
Eureka presenting · determined
+
Eureka, presenting, sleepy
Eureka presenting · sleepy
+
Eureka, waving, neutral
Eureka waving · neutral
+
Eureka, waving, smile
Eureka waving · smile
+
Eureka, waving, grin
Eureka waving · grin
+
Eureka, waving, happy
Eureka waving · happy
+
Eureka, waving, worried
Eureka waving · worried
+
Eureka, waving, surprised
Eureka waving · surprised
+
Eureka, waving, determined
Eureka waving · determined
+
Eureka, waving, sleepy
Eureka waving · sleepy
+
Huginn, neutral, neutral
Huginn neutral · neutral
+
Huginn, neutral, smile
Huginn neutral · smile
+
Huginn, neutral, grin
Huginn neutral · grin
+
Huginn, neutral, happy
Huginn neutral · happy
+
Huginn, neutral, worried
Huginn neutral · worried
+
Huginn, neutral, surprised
Huginn neutral · surprised
+
Huginn, neutral, determined
Huginn neutral · determined
+
Huginn, neutral, sleepy
Huginn neutral · sleepy
+
Huginn, cheer, neutral
Huginn cheer · neutral
+
Huginn, cheer, smile
Huginn cheer · smile
+
Huginn, cheer, grin
Huginn cheer · grin
+
Huginn, cheer, happy
Huginn cheer · happy
+
Huginn, cheer, worried
Huginn cheer · worried
+
Huginn, cheer, surprised
Huginn cheer · surprised
+
Huginn, cheer, determined
Huginn cheer · determined
+
Huginn, cheer, sleepy
Huginn cheer · sleepy
+
Huginn, thinking, neutral
Huginn thinking · neutral
+
Huginn, thinking, smile
Huginn thinking · smile
+
Huginn, thinking, grin
Huginn thinking · grin
+
Huginn, thinking, happy
Huginn thinking · happy
+
Huginn, thinking, worried
Huginn thinking · worried
+
Huginn, thinking, surprised
Huginn thinking · surprised
+
Huginn, thinking, determined
Huginn thinking · determined
+
Huginn, thinking, sleepy
Huginn thinking · sleepy
+
Huginn, surprised, neutral
Huginn surprised · neutral
+
Huginn, surprised, smile
Huginn surprised · smile
+
Huginn, surprised, grin
Huginn surprised · grin
+
Huginn, surprised, happy
Huginn surprised · happy
+
Huginn, surprised, worried
Huginn surprised · worried
+
Huginn, surprised, surprised
Huginn surprised · surprised
+
Huginn, surprised, determined
Huginn surprised · determined
+
Huginn, surprised, sleepy
Huginn surprised · sleepy
+
Huginn, presenting, neutral
Huginn presenting · neutral
+
Huginn, presenting, smile
Huginn presenting · smile
+
Huginn, presenting, grin
Huginn presenting · grin
+
Huginn, presenting, happy
Huginn presenting · happy
+
Huginn, presenting, worried
Huginn presenting · worried
+
Huginn, presenting, surprised
Huginn presenting · surprised
+
Huginn, presenting, determined
Huginn presenting · determined
+
Huginn, presenting, sleepy
Huginn presenting · sleepy
+
Huginn, waving, neutral
Huginn waving · neutral
+
Huginn, waving, smile
Huginn waving · smile
+
Huginn, waving, grin
Huginn waving · grin
+
Huginn, waving, happy
Huginn waving · happy
+
Huginn, waving, worried
Huginn waving · worried
+
Huginn, waving, surprised
Huginn waving · surprised
+
Huginn, waving, determined
Huginn waving · determined
+
Huginn, waving, sleepy
Huginn waving · sleepy
+
Libby, neutral, neutral
Libby neutral · neutral
+
Libby, neutral, smile
Libby neutral · smile
+
Libby, neutral, grin
Libby neutral · grin
+
Libby, neutral, happy
Libby neutral · happy
+
Libby, neutral, worried
Libby neutral · worried
+
Libby, neutral, surprised
Libby neutral · surprised
+
Libby, neutral, determined
Libby neutral · determined
+
Libby, neutral, sleepy
Libby neutral · sleepy
+
Libby, cheer, neutral
Libby cheer · neutral
+
Libby, cheer, smile
Libby cheer · smile
+
Libby, cheer, grin
Libby cheer · grin
+
Libby, cheer, happy
Libby cheer · happy
+
Libby, cheer, worried
Libby cheer · worried
+
Libby, cheer, surprised
Libby cheer · surprised
+
Libby, cheer, determined
Libby cheer · determined
+
Libby, cheer, sleepy
Libby cheer · sleepy
+
Libby, thinking, neutral
Libby thinking · neutral
+
Libby, thinking, smile
Libby thinking · smile
+
Libby, thinking, grin
Libby thinking · grin
+
Libby, thinking, happy
Libby thinking · happy
+
Libby, thinking, worried
Libby thinking · worried
+
Libby, thinking, surprised
Libby thinking · surprised
+
Libby, thinking, determined
Libby thinking · determined
+
Libby, thinking, sleepy
Libby thinking · sleepy
+
Libby, surprised, neutral
Libby surprised · neutral
+
Libby, surprised, smile
Libby surprised · smile
+
Libby, surprised, grin
Libby surprised · grin
+
Libby, surprised, happy
Libby surprised · happy
+
Libby, surprised, worried
Libby surprised · worried
+
Libby, surprised, surprised
Libby surprised · surprised
+
Libby, surprised, determined
Libby surprised · determined
+
Libby, surprised, sleepy
Libby surprised · sleepy
+
Libby, presenting, neutral
Libby presenting · neutral
+
Libby, presenting, smile
Libby presenting · smile
+
Libby, presenting, grin
Libby presenting · grin
+
Libby, presenting, happy
Libby presenting · happy
+
Libby, presenting, worried
Libby presenting · worried
+
Libby, presenting, surprised
Libby presenting · surprised
+
Libby, presenting, determined
Libby presenting · determined
+
Libby, presenting, sleepy
Libby presenting · sleepy
+
Libby, waving, neutral
Libby waving · neutral
+
Libby, waving, smile
Libby waving · smile
+
Libby, waving, grin
Libby waving · grin
+
Libby, waving, happy
Libby waving · happy
+
Libby, waving, worried
Libby waving · worried
+
Libby, waving, surprised
Libby waving · surprised
+
Libby, waving, determined
Libby waving · determined
+
Libby, waving, sleepy
Libby waving · sleepy
+
Epiphany, neutral, neutral
Epiphany neutral · neutral
+
Epiphany, neutral, smile
Epiphany neutral · smile
+
Epiphany, neutral, grin
Epiphany neutral · grin
+
Epiphany, neutral, happy
Epiphany neutral · happy
+
Epiphany, neutral, worried
Epiphany neutral · worried
+
Epiphany, neutral, surprised
Epiphany neutral · surprised
+
Epiphany, neutral, determined
Epiphany neutral · determined
+
Epiphany, neutral, sleepy
Epiphany neutral · sleepy
+
Epiphany, cheer, neutral
Epiphany cheer · neutral
+
Epiphany, cheer, smile
Epiphany cheer · smile
+
Epiphany, cheer, grin
Epiphany cheer · grin
+
Epiphany, cheer, happy
Epiphany cheer · happy
+
Epiphany, cheer, worried
Epiphany cheer · worried
+
Epiphany, cheer, surprised
Epiphany cheer · surprised
+
Epiphany, cheer, determined
Epiphany cheer · determined
+
Epiphany, cheer, sleepy
Epiphany cheer · sleepy
+
Epiphany, thinking, neutral
Epiphany thinking · neutral
+
Epiphany, thinking, smile
Epiphany thinking · smile
+
Epiphany, thinking, grin
Epiphany thinking · grin
+
Epiphany, thinking, happy
Epiphany thinking · happy
+
Epiphany, thinking, worried
Epiphany thinking · worried
+
Epiphany, thinking, surprised
Epiphany thinking · surprised
+
Epiphany, thinking, determined
Epiphany thinking · determined
+
Epiphany, thinking, sleepy
Epiphany thinking · sleepy
+
Epiphany, surprised, neutral
Epiphany surprised · neutral
+
Epiphany, surprised, smile
Epiphany surprised · smile
+
Epiphany, surprised, grin
Epiphany surprised · grin
+
Epiphany, surprised, happy
Epiphany surprised · happy
+
Epiphany, surprised, worried
Epiphany surprised · worried
+
Epiphany, surprised, surprised
Epiphany surprised · surprised
+
Epiphany, surprised, determined
Epiphany surprised · determined
+
Epiphany, surprised, sleepy
Epiphany surprised · sleepy
+
Epiphany, presenting, neutral
Epiphany presenting · neutral
+
Epiphany, presenting, smile
Epiphany presenting · smile
+
Epiphany, presenting, grin
Epiphany presenting · grin
+
Epiphany, presenting, happy
Epiphany presenting · happy
+
Epiphany, presenting, worried
Epiphany presenting · worried
+
Epiphany, presenting, surprised
Epiphany presenting · surprised
+
Epiphany, presenting, determined
Epiphany presenting · determined
+
Epiphany, presenting, sleepy
Epiphany presenting · sleepy
+
Epiphany, waving, neutral
Epiphany waving · neutral
+
Epiphany, waving, smile
Epiphany waving · smile
+
Epiphany, waving, grin
Epiphany waving · grin
+
Epiphany, waving, happy
Epiphany waving · happy
+
Epiphany, waving, worried
Epiphany waving · worried
+
Epiphany, waving, surprised
Epiphany waving · surprised
+
Epiphany, waving, determined
Epiphany waving · determined
+
Epiphany, waving, sleepy
Epiphany waving · sleepy
+
Weksa, neutral, neutral
Weksa neutral · neutral
+
Weksa, neutral, smile
Weksa neutral · smile
+
Weksa, neutral, grin
Weksa neutral · grin
+
Weksa, neutral, happy
Weksa neutral · happy
+
Weksa, neutral, worried
Weksa neutral · worried
+
Weksa, neutral, surprised
Weksa neutral · surprised
+
Weksa, neutral, determined
Weksa neutral · determined
+
Weksa, neutral, sleepy
Weksa neutral · sleepy
+
Weksa, cheer, neutral
Weksa cheer · neutral
+
Weksa, cheer, smile
Weksa cheer · smile
+
Weksa, cheer, grin
Weksa cheer · grin
+
Weksa, cheer, happy
Weksa cheer · happy
+
Weksa, cheer, worried
Weksa cheer · worried
+
Weksa, cheer, surprised
Weksa cheer · surprised
+
Weksa, cheer, determined
Weksa cheer · determined
+
Weksa, cheer, sleepy
Weksa cheer · sleepy
+
Weksa, thinking, neutral
Weksa thinking · neutral
+
Weksa, thinking, smile
Weksa thinking · smile
+
Weksa, thinking, grin
Weksa thinking · grin
+
Weksa, thinking, happy
Weksa thinking · happy
+
Weksa, thinking, worried
Weksa thinking · worried
+
Weksa, thinking, surprised
Weksa thinking · surprised
+
Weksa, thinking, determined
Weksa thinking · determined
+
Weksa, thinking, sleepy
Weksa thinking · sleepy
+
Weksa, surprised, neutral
Weksa surprised · neutral
+
Weksa, surprised, smile
Weksa surprised · smile
+
Weksa, surprised, grin
Weksa surprised · grin
+
Weksa, surprised, happy
Weksa surprised · happy
+
Weksa, surprised, worried
Weksa surprised · worried
+
Weksa, surprised, surprised
Weksa surprised · surprised
+
Weksa, surprised, determined
Weksa surprised · determined
+
Weksa, surprised, sleepy
Weksa surprised · sleepy
+
Weksa, presenting, neutral
Weksa presenting · neutral
+
Weksa, presenting, smile
Weksa presenting · smile
+
Weksa, presenting, grin
Weksa presenting · grin
+
Weksa, presenting, happy
Weksa presenting · happy
+
Weksa, presenting, worried
Weksa presenting · worried
+
Weksa, presenting, surprised
Weksa presenting · surprised
+
Weksa, presenting, determined
Weksa presenting · determined
+
Weksa, presenting, sleepy
Weksa presenting · sleepy
+
Weksa, waving, neutral
Weksa waving · neutral
+
Weksa, waving, smile
Weksa waving · smile
+
Weksa, waving, grin
Weksa waving · grin
+
Weksa, waving, happy
Weksa waving · happy
+
Weksa, waving, worried
Weksa waving · worried
+
Weksa, waving, surprised
Weksa waving · surprised
+
Weksa, waving, determined
Weksa waving · determined
+
Weksa, waving, sleepy
Weksa waving · sleepy
+
Nibu, neutral, smile
Nibu neutral · smile
+
Nibu, neutral, grin
Nibu neutral · grin
+
Nibu, neutral, surprised
Nibu neutral · surprised
+
Mimir, neutral, smile
Mimir neutral · smile
+
Mimir, neutral, grin
Mimir neutral · grin
+
Mimir, neutral, surprised
Mimir neutral · surprised
+
Eve, neutral, smile
Eve neutral · smile
+
Eve, neutral, grin
Eve neutral · grin
+
Eve, neutral, surprised
Eve neutral · surprised
+
Kiko, neutral, smile
Kiko neutral · smile
+
Kiko, neutral, grin
Kiko neutral · grin
+
Kiko, neutral, surprised
Kiko neutral · surprised
+
Heimdall, neutral, smile
Heimdall neutral · smile
+
Heimdall, neutral, grin
Heimdall neutral · grin
+
Heimdall, neutral, surprised
Heimdall neutral · surprised
+
Fensalir, neutral, smile
Fensalir neutral · smile
+
Fensalir, neutral, grin
Fensalir neutral · grin
+
Fensalir, neutral, surprised
Fensalir neutral · surprised
+
Druzkai, neutral, smile
Druzkai neutral · smile
+
Druzkai, neutral, grin
Druzkai neutral · grin
+
Druzkai, neutral, surprised
Druzkai neutral · surprised
+
Norn, neutral, smile
Norn neutral · smile
+
Norn, neutral, grin
Norn neutral · grin
+
Norn, neutral, surprised
Norn neutral · surprised
+
Sai, neutral, smile
Sai neutral · smile
+
Sai, neutral, grin
Sai neutral · grin
+
Sai, neutral, surprised
Sai neutral · surprised
+
Brokkr, neutral, smile
Brokkr neutral · smile
+
Brokkr, neutral, grin
Brokkr neutral · grin
+
Brokkr, neutral, surprised
Brokkr neutral · surprised
+
Aetheria, neutral, smile
Aetheria neutral · smile
+
Aetheria, neutral, grin
Aetheria neutral · grin
+
Aetheria, neutral, surprised
Aetheria neutral · surprised
+
Ymir, neutral, smile
Ymir neutral · smile
+
Ymir, neutral, grin
Ymir neutral · grin
+
Ymir, neutral, surprised
Ymir neutral · surprised
+
Tengu, neutral, smile
Tengu neutral · smile
+
Tengu, neutral, grin
Tengu neutral · grin
+
Tengu, neutral, surprised
Tengu neutral · surprised
+
Muninn, neutral, smile
Muninn neutral · smile
+
Muninn, neutral, grin
Muninn neutral · grin
+
Muninn, neutral, surprised
Muninn neutral · surprised
+
Sleipnir, neutral, smile
Sleipnir neutral · smile
+
Sleipnir, neutral, grin
Sleipnir neutral · grin
+
Sleipnir, neutral, surprised
Sleipnir neutral · surprised
+
Hermodr, neutral, smile
Hermodr neutral · smile
+
Hermodr, neutral, grin
Hermodr neutral · grin
+
Hermodr, neutral, surprised
Hermodr neutral · surprised
+
Metame, neutral, smile
Metame neutral · smile
+
Metame, neutral, grin
Metame neutral · grin
+
Metame, neutral, surprised
Metame neutral · surprised
+
Void, neutral, smile
Void neutral · smile
+
Void, neutral, grin
Void neutral · grin
+
Void, neutral, surprised
Void neutral · surprised
+
Gjallar, neutral, smile
Gjallar neutral · smile
+
Gjallar, neutral, grin
Gjallar neutral · grin
+
Gjallar, neutral, surprised
Gjallar neutral · surprised
+
+ diff --git a/cast/process/01-cheer-arms.png b/cast/process/01-cheer-arms.png new file mode 100644 index 0000000..a2ea21c Binary files /dev/null and b/cast/process/01-cheer-arms.png differ diff --git a/cast/process/02-eureka-feather.png b/cast/process/02-eureka-feather.png new file mode 100644 index 0000000..f185c01 Binary files /dev/null and b/cast/process/02-eureka-feather.png differ diff --git a/cast/process/03-void-contrast.png b/cast/process/03-void-contrast.png new file mode 100644 index 0000000..96edade Binary files /dev/null and b/cast/process/03-void-contrast.png differ diff --git a/cast/process/04-sleipnir-legs.png b/cast/process/04-sleipnir-legs.png new file mode 100644 index 0000000..404c54b Binary files /dev/null and b/cast/process/04-sleipnir-legs.png differ diff --git a/cast/process/05-gjallar-horn.png b/cast/process/05-gjallar-horn.png new file mode 100644 index 0000000..bfb29c5 Binary files /dev/null and b/cast/process/05-gjallar-horn.png differ diff --git a/cast/process/06-huginn-wings.png b/cast/process/06-huginn-wings.png new file mode 100644 index 0000000..b1b6dd9 Binary files /dev/null and b/cast/process/06-huginn-wings.png differ diff --git a/cast/rig/build.mjs b/cast/rig/build.mjs new file mode 100644 index 0000000..a23e3cf --- /dev/null +++ b/cast/rig/build.mjs @@ -0,0 +1,111 @@ +// 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'; +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { render, POSES, EXPRESSIONS } from './rig.mjs'; +import { CAST, COMMON_EXPRESSIONS } from './characters.mjs'; + +const CAST_DIR = join(dirname(fileURLToPath(import.meta.url)), '..'); +const OUT = join(CAST_DIR, 'stickers'); +const only = process.argv.slice(2); + +export function plan(ch) { + if (ch.full) return Object.keys(POSES).flatMap((p) => EXPRESSIONS.map((e) => [p, e])); + return COMMON_EXPRESSIONS.map((e) => ['neutral', e]); +} + +let count = 0, bytes = 0; +for (const ch of CAST) { + if (only.length && !only.includes(ch.id)) continue; + const dir = join(OUT, ch.id); + if (existsSync(dir)) rmSync(dir, { recursive: true }); + mkdirSync(dir, { recursive: true }); + for (const [pose, expr] of plan(ch)) { + const svg = render(ch, pose, expr); + writeFileSync(join(dir, `${pose}-${expr}.svg`), svg); + count++; bytes += Buffer.byteLength(svg); + } +} + +// Gallery: lists whatever is on disk, in CAST order. +const cards = []; +for (const ch of CAST) { + const dir = join(OUT, ch.id); + if (!existsSync(dir)) continue; + const files = readdirSync(dir).filter((f) => f.endsWith('.svg')); + const order = (f) => { + const [p, e] = f.replace('.svg', '').split('-'); + return Object.keys(POSES).indexOf(p) * 100 + EXPRESSIONS.indexOf(e); + }; + files.sort((a, b) => order(a) - order(b)); + for (const f of files) { + const [p, e] = f.replace('.svg', '').split('-'); + cards.push(`
${ch.name}, ${p}, ${e}
${ch.name} ${p} · ${e}
`); + } +} +const chips = CAST.map((c) => ``).join(''); +const poseChips = Object.keys(POSES).map((p) => ``).join(''); +const html = ` + +Swarm Stickers + +

Swarm stickers

+

${cards.length} stickers, ${CAST.length} characters. Generated by cast/rig/build.mjs; the white die-cut edge is CSS on the image.

+ +
+
+${cards.join('\n')} +
+ +`; +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 new file mode 100644 index 0000000..9b12e17 --- /dev/null +++ b/cast/rig/characters.mjs @@ -0,0 +1,273 @@ +// Trait sheets. One entry per cast member. Field meanings are in cast/README.md. +// `full: true` renders every pose x expression; everyone else gets neutral x COMMON_EXPRESSIONS. + +export const COMMON_EXPRESSIONS = ['smile', 'grin', 'surprised']; + +const SKIN = { fair: '#ffe0c8', warm: '#f6c9a4', tan: '#d9a074', brown: '#a8693f', deep: '#7a4a2c' }; + +export const CAST = [ + { + id: 'eureka', name: 'Eureka', full: true, base: 'humanoid', + role: 'Leader of the swarm; the Self that routes the faculty pipeline. Her mind lives in Huginn.', + source: 'invented', + skin: SKIN.fair, eyes: '#ff8a2a', accent: '#ffd84a', + hair: { style: 'bun', color: '#ffb347' }, + outfit: { shape: 'coat', main: '#59b7ff', trim: '#ff8a2a', collar: 'v', belt: '#1d3a5c' }, + legs: '#1d3a5c', shoes: '#ff8a2a', + acc: [['pencil'], ['starClip', '#ffd84a']], + prop: ['wand', '#ffd84a', '#ff8a2a'], emblem: { shape: 'star', color: '#ff8a2a' }, + }, + { + id: 'huginn', name: 'Huginn', full: true, base: 'raven', + role: 'Memory organ: owns each instance\'s mind as typed state. Odin\'s raven of thought.', + 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: '#46527a', wing: '#3a4766' }, + shoes: '#5a5f73', cape: '#24406e', + acc: [['collarRing', '#c9a24a', '#59d8ff']], + prop: ['tablet', '#1f2a3d', '#59d8ff'], emblem: null, + }, + { + id: 'libby', name: 'Libby', full: true, base: 'humanoid', + role: 'Face of CultLib, the shared runtime library (CultCache, CultNet, CultMesh, CultMath).', + source: 'F:/Projects/CultLib/.voidbot/voice/libby.png', + skin: SKIN.fair, eyes: '#8a6cd1', accent: '#c9a6ff', + hair: { style: 'long', color: '#a98ad8' }, + outfit: { shape: 'robe', main: '#2e2440', trim: '#c9a24a', collar: 'round' }, + legs: '#2e2440', shoes: '#4a3a5e', + acc: [['glasses', '#3b2618'], ['bow', '#7a5bb0']], + prop: ['book', '#5a3f86'], emblem: { shape: 'cube', color: '#c9a24a' }, + }, + { + id: 'epiphany', name: 'Epiphany', full: true, base: 'humanoid', + role: 'The archived organizational layer above frontier AI workers; Eureka absorbed what lived. JSON heresy hunter.', + source: 'F:/Projects/VoidBot/assets/repo-faces/epiphany.png; F:/Projects/Epiphany/docs/assets', + skin: SKIN.fair, eyes: '#3fbf8f', accent: '#7cf0b8', + hair: { style: 'twintails', color: '#8fd8b4', accent: '#e8384f' }, + outfit: { shape: 'coat', main: '#f4efe6', trim: '#e8384f', collar: 'v', belt: '#3b3b3b' }, + legs: '#2c2c34', shoes: '#4a3424', + acc: [['bow', '#e8384f']], + prop: ['magnifier', '#6b4a2e'], emblem: { shape: 'bolt', color: '#e8384f' }, + }, + { + id: 'weksa', name: 'Weksa', full: true, base: 'humanoid', + role: 'Face of weksa, the procedural language engine for alien grammars; nerdy anthropologist.', + source: 'F:/Projects/VoidBot/assets/repo-faces/weksa.png', + skin: SKIN.brown, eyes: '#8a5a2b', accent: '#ffd84a', + hair: { style: 'curly', color: '#4a2e1c' }, + outfit: { shape: 'tunic', main: '#f1e3c4', trim: '#2f9c8f', collar: 'v', belt: '#7a4a24' }, + legs: '#6b4a2e', shoes: '#5a3a22', + acc: [['glasses', '#c9902a']], + prop: ['cards', '#fff4dc'], emblem: { shape: 'glyph', color: '#2f9c8f' }, + }, + { + id: 'nibu', name: 'Nibu', base: 'humanoid', + role: 'Face of AetheriaLore, the Aetheria setting and lore vault.', + source: 'F:/Projects/AetheriaLore/.voidbot/voice/nibu.png', + skin: SKIN.fair, eyes: '#7a7fd8', accent: '#ff9ad5', + hair: { style: 'long', color: '#b9a9f0' }, + outfit: { shape: 'dress', main: '#7fd6e8', trim: '#3a2f58', collar: 'round' }, + legs: '#3a2f58', shoes: '#3a2f58', + acc: [['bow', '#e86fb8'], ['headphones', '#3a2f58', '#7fd6e8']], + prop: ['quill', '#f4f0ff'], emblem: { shape: 'star', color: '#e86fb8' }, + }, + { + id: 'mimir', name: 'Mimir', base: 'humanoid', + role: 'Realtime field machine: cameras, microphones and feeds into one field; keeper of the well.', + source: 'F:/Projects/VoidBot/assets/repo-faces/mimir.png', + skin: '#c08a52', eyes: '#3fe0d0', accent: '#3fe0d0', faceInk: '#3b2618', + hair: { style: 'none', color: '#8a5a32' }, + outfit: { shape: 'robe', main: '#3a2a20', trim: '#3fe0d0', collar: 'high' }, + legs: '#3a2a20', shoes: '#2a1e16', + acc: [['cubes', '#9a6a3c', '#3fe0d0']], + prop: ['cube', '#9a6a3c', '#3fe0d0'], emblem: { shape: 'wave', color: '#3fe0d0' }, + }, + { + id: 'eve', name: 'Eve', base: 'humanoid', + role: 'CultMesh surface web and portable control layer; the Eve/CultUI interface DSL.', + source: 'F:/Projects/Eve/.voidbot/voice/eve.png', + skin: '#0e1a2e', eyes: '#59b7ff', faceInk: '#59d8ff', accent: '#59b7ff', noBlush: false, + hair: { style: 'helmet', color: '#e9eef5', accent: '#59b7ff' }, + outfit: { shape: 'tunic', main: '#e9eef5', trim: '#59b7ff', collar: 'high' }, + legs: '#2a3448', shoes: '#e9eef5', hands: '#e9eef5', + acc: [], + prop: ['panel', '#2a3448', '#59b7ff'], emblem: { shape: 'eye', color: '#59b7ff', disc: '#0e1a2e' }, + }, + { + id: 'kiko', name: 'Kiko', base: 'humanoid', + role: 'Face of StreamPixels, the stream overlay of persistent pixel characters. Fox-coded.', + source: 'F:/Projects/VoidBot/assets/repo-faces/kiko.png', + skin: SKIN.tan, eyes: '#3fc8e8', accent: '#ff6fae', + hair: { style: 'messy', color: '#f4f0f6' }, + outfit: { shape: 'dress', main: '#e8386f', trim: '#2a2440', collar: 'round' }, + legs: '#2a2440', shoes: '#2a2440', + acc: [['foxEars', '#f4f0f6', '#ff9ac8'], ['foxMask', '#ffffff', '#e8386f'], ['tail', '#f4f0f6', '#ff9ac8']], + prop: ['heart', '#ff5a8a'], emblem: { shape: 'heart', color: '#e8386f' }, + }, + { + id: 'heimdall', name: 'Heimdall', base: 'humanoid', + role: 'Shared auth authority for GameCult-hosted experiments; keeper of the keys.', + source: 'F:/Projects/Heimdall/assets/heimdall-profile.png', + skin: SKIN.deep, eyes: '#ffc34a', accent: '#ffc34a', + hair: { style: 'messy', color: '#22202a' }, + outfit: { shape: 'coat', main: '#1c1e2a', trim: '#d9a43a', collar: 'high' }, + legs: '#1c1e2a', shoes: '#0f1018', + acc: [['earring', '#ffc34a']], + prop: ['keys', '#ffc34a'], emblem: { shape: 'key', color: '#d9a43a' }, + }, + { + 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', 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' }, + legs: '#2a2a4a', shoes: '#ff5ab0', + acc: [['spire', '#4fe8f0', '#ff5ab0']], + prop: ['orb', '#4fe8f0', '#ff9ad5'], emblem: { shape: 'wave', color: '#ff5ab0' }, + }, + { + id: 'druzkai', name: 'Druzkai', base: 'humanoid', + role: 'Face of Zyphos, a biopolitical ecology setting with a biological memetic engine.', + source: 'F:/Projects/Zyphos/.voidbot/voice/druzkai.png', + skin: '#c4553e', eyes: '#3fd0c8', accent: '#3fd0c8', + hair: { style: 'none', color: '#9a3a2a' }, + outfit: { shape: 'robe', main: '#4a2a5a', trim: '#d9a43a', collar: 'round' }, + legs: '#4a2a5a', shoes: '#2a1830', + acc: [['ridges', '#a03a2c'], ['forehead', '#3fd0c8']], + prop: ['seed', '#6fbf6a', '#c8ff9a'], emblem: { shape: 'spiral', color: '#3fd0c8' }, + }, + { + id: 'norn', name: 'Norn', base: 'humanoid', + role: 'Graph viewer for typed graph state: the thread-readers who see how things are woven.', + source: 'F:/Projects/Norn/.voidbot/voice/norn.png', + skin: SKIN.brown, eyes: '#4fe0e8', accent: '#4fe0e8', + hair: { style: 'braids', color: '#d8dce4' }, + outfit: { shape: 'robe', main: '#24283a', trim: '#c9a24a', collar: 'v' }, + legs: '#24283a', shoes: '#141824', + acc: [['circlet', '#c9a24a', '#4fe0e8']], + prop: ['spool', '#8a6a3a', '#4fe0e8'], emblem: { shape: 'rune', color: '#4fe0e8' }, + }, + { + 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/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' }, + legs: '#1e1e22', shoes: '#1e1e22', + acc: [['spiralBand', '#1e1e22', '#c8ccd2']], + prop: ['brush', '#c8a46a'], emblem: { shape: 'spiral', color: '#1e1e22' }, + }, + { + id: 'brokkr', name: 'Brokkr', base: 'humanoid', + role: 'Creative-tool broker daemon: Unity and Blender authoring surfaces over CultMesh. The Eddic smith.', + source: 'invented (README role; Brokkr of Skaldskaparmal)', + skin: SKIN.warm, eyes: '#5a8ad8', accent: '#ff8a2a', + hair: { style: 'short', color: '#c4562a' }, + outfit: { shape: 'tunic', main: '#5a4636', trim: '#2a2420', collar: 'round', belt: '#2a2420' }, + legs: '#3a3030', shoes: '#2a2420', + acc: [['beard', '#c4562a'], ['goggles', '#6a5040', '#ffb347']], + prop: ['hammer', '#8a8f9a', '#8a5a32'], emblem: { shape: 'gear', color: '#ff8a2a' }, + }, + { + id: 'aetheria', name: 'Aetheria', base: 'humanoid', + role: 'Face of Aetheria, the open-source tactical action RPG with a sprawling sci-fi setting.', + source: 'invented (README role)', + skin: SKIN.warm, eyes: '#59b7ff', accent: '#ff8a2a', + hair: { style: 'bob', color: '#3a2a4a' }, + outfit: { shape: 'tunic', main: '#e8ecf2', trim: '#ff8a2a', collar: 'high', belt: '#2a3448' }, + legs: '#2a3448', shoes: '#ff8a2a', + acc: [['headphones', '#2a3448', '#59b7ff'], ['goggles', '#2a3448', '#59b7ff']], + prop: ['ship', '#e8ecf2', '#59b7ff'], emblem: { shape: 'star', color: '#59b7ff', disc: '#2a3448' }, + }, + { + id: 'ymir', name: 'Ymir', base: 'humanoid', + role: 'World-body physics substrate around Box3D: body, field, contact, impulse. The frost giant.', + source: 'F:/Projects/VoidBot/assets/repo-faces/ymir.png', + skin: '#b8d4ec', eyes: '#3a8ad8', accent: '#bff0ff', + hair: { style: 'short', color: '#e8f4ff' }, + outfit: { shape: 'robe', main: '#3a5a8a', trim: '#bff0ff', collar: 'round' }, + legs: '#3a5a8a', shoes: '#24384f', + acc: [['beard', '#f4faff'], ['crystals', '#9fdcff']], + prop: ['crystal', '#9fdcff'], emblem: { shape: 'flake', color: '#3a8ad8' }, + }, + { + 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', 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', '#4a4a58'], emblem: { shape: 'feather', color: '#4a3a7a' }, + }, + { + id: 'muninn', name: 'Muninn', base: 'raven', + role: 'Local capture broker for the swarm: which streams a host can offer. Odin\'s raven of memory.', + source: 'F:/Projects/VoidBot/assets/repo-faces/muninn-concept.png', + skin: '#2a2230', eyes: '#ffb030', beak: '#4a3e46', accent: '#ffb030', + hair: { style: 'crest', color: '#2a2230' }, + outfit: { shape: 'egg', main: '#2a2230', belly: '#3e3446', wing: '#1e1824' }, + shoes: '#6a5a50', + acc: [['collarRing', '#8a5a2a', '#ffb030']], + prop: ['camera', '#3e3446', '#ffb030'], emblem: null, + }, + { + 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', 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: 4, + acc: [['horseTail', '#2fc8e0']], + prop: ['pad', '#2a3040', '#3fe0f0'], emblem: { shape: 'bolt', color: '#3fe0f0', disc: '#22262e' }, + }, + { + id: 'hermodr', name: 'Hermodr', base: 'humanoid', + role: 'Eve browser lowering: resolves providers through Odin\'s catalog and renders them. The messenger.', + source: 'F:/Projects/Hermodr/assets/hermodr-avatar.png', + skin: SKIN.warm, eyes: '#e8a83a', accent: '#3fd0c0', + hair: { style: 'messy', color: '#2a3a4a' }, + outfit: { shape: 'tunic', main: '#2a3a44', trim: '#c9902a', collar: 'none', belt: '#6a4a2a' }, + legs: '#2a3440', shoes: '#6a4a2a', + acc: [['wingCap', '#2a3a4a', '#d9a43a', '#3fd0c0'], ['scarf', '#2f9c8f']], + prop: ['envelope', '#f4ead4', '#e8384f'], emblem: null, + }, + { + id: 'metame', name: 'Metame', base: 'humanoid', + role: 'Native Persona (メタめ) projected from the operator\'s public history; discussion and rumination.', + source: 'invented (persona-intake has no appearance; the design avoids depicting the operator)', + skin: SKIN.fair, eyes: '#59b7ff', accent: '#ff8a2a', + hair: { style: 'bob', color: '#59b7ff' }, + outfit: { shape: 'tunic', main: '#1d2a3a', trim: '#ff8a2a', collar: 'round' }, + legs: '#1d2a3a', shoes: '#ff8a2a', + acc: [['twoTone', '#ff8a2a']], + prop: ['mirror', '#c9a24a', '#bfe6ff'], emblem: { shape: 'glyph', color: '#ff8a2a' }, + }, + { + id: 'void', name: 'Void', base: 'humanoid', + role: 'VoidBot\'s built-in Discord moderator mind. Its state was lost; the look is new.', + source: 'invented (VoidBot README role)', + skin: '#161226', eyes: '#c9a6ff', faceInk: '#c9a6ff', accent: '#c9a6ff', + hair: { style: 'none', color: '#161226' }, + outfit: { shape: 'robe', main: '#4a3a7a', trim: '#c9a6ff', collar: 'none' }, + legs: '#4a3a7a', shoes: '#2a2140', hands: '#c9a6ff', + acc: [['hood', '#4a3a7a'], ['hoodRim', '#6a56a8']], + prop: ['shield', '#3a2e58', '#ffe08a'], emblem: { shape: 'moon', color: '#ffe08a', disc: '#161226' }, + }, + { + id: 'gjallar', name: 'Gjallar', base: 'humanoid', + role: 'Renderer-neutral compositor for Odin-visible Eve surfaces; Odin\'s branding Persona. The horn.', + source: 'F:/Projects/Odin/assets/personas/gjallar-avatar-pixel-256.png', + skin: SKIN.fair, eyes: '#59b7ff', accent: '#ffd84a', + hair: { style: 'short', color: '#2a2440' }, + outfit: { shape: 'tunic', main: '#1e2238', trim: '#d9a43a', collar: 'high' }, + legs: '#1e2238', shoes: '#d9a43a', + acc: [['helm', '#d9a43a', '#f4e8c8', '#59b7ff']], + prop: ['horn', '#f4e8c8', '#d9a43a'], emblem: { shape: 'rainbow', color: '#fff', disc: '#1e2238' }, + }, +]; diff --git a/cast/rig/rig.mjs b/cast/rig/rig.mjs new file mode 100644 index 0000000..c410eab --- /dev/null +++ b/cast/rig/rig.mjs @@ -0,0 +1,580 @@ +// The sticker rig: bases, poses, expressions, hair, accessories, props, emblems. +// Every function returns an SVG fragment string. Coordinates are documented in +// cast/PROCESS.md ("Coordinate conventions"). No dependencies. + +export const INK = '#3b2618'; // warm dark outline, every stroke +export const PUPIL = '#2a1a12'; +export const BLUSH = '#ff9a8a'; +export const VIEWBOX = '-80 -10 160 172'; + +// ---------- helpers ---------- +const n = (v) => Math.round(v * 10) / 10; +export function shade(hex, f) { + // f < 0 darkens toward black, f > 0 lightens toward white + const h = hex.replace('#', ''); + const c = [0, 2, 4].map((i) => parseInt(h.slice(i, i + 2), 16)); + const out = c.map((v) => Math.round(f < 0 ? v * (1 + f) : v + (255 - v) * f)); + return '#' + out.map((v) => Math.max(0, Math.min(255, v)).toString(16).padStart(2, '0')).join(''); +} +const inked = (inner, w = 3) => + `${inner}`; +// A limb is a fat round-capped stroke drawn twice: ink underneath, colour on top. +function limb(d, color, w = 7) { + return `` + + ``; +} +const P = (pt) => `${n(pt[0])} ${n(pt[1])}`; + +export function sparkle(x, y, s, color) { + return ``; +} + +// ---------- skeleton ---------- +// Body space: x centred on 0, ground at y=152. Neck at (0,88). Head centre (0,52). +export const NECK = [0, 88]; +export const HEAD = [0, 52]; +export const SHOULDER = { L: [-15, 95], R: [15, 95] }; +export const HIP = { L: [-8, 126], R: [8, 126] }; + +// ---------- poses ---------- +// Each pose: lift (whole figure hops up), head {dx,dy,rot about neck}, +// arms {L,R}: elbow e and hand h in body space; front:true draws that arm over the head. +// prop: which hand holds it (or null) and how it sits; fx: pose effect. +export const POSES = { + neutral: { + lift: 0, head: { dx: 0, dy: 0, rot: 0 }, + arms: { L: { e: [-23, 107], h: [-24, 120] }, R: { e: [23, 107], h: [24, 120] } }, + legs: { L: [-10, 0], R: [10, 0] }, + prop: { hand: 'R', dx: 4, dy: -4, rot: 8 }, fx: null, + }, + cheer: { + lift: 6, head: { dx: 0, dy: -1, rot: 0 }, + arms: { L: { e: [-40, 80], h: [-46, 36] }, R: { e: [40, 80], h: [46, 36] } }, + legs: { L: [-14, -3], R: [14, -3] }, + prop: { hand: 'R', dx: 4, dy: -6, rot: 18 }, fx: 'sparkles', + }, + thinking: { + lift: 0, head: { dx: 0, dy: 0, rot: 7 }, + arms: { L: { e: [-20, 114], h: [4, 113] }, R: { e: [26, 114], h: [13, 92], front: true } }, + legs: { L: [-9, 0], R: [10, 0] }, + prop: null, fx: 'dots', + }, + surprised: { + lift: 7, head: { dx: 0, dy: -1, rot: -3 }, + arms: { L: { e: [-34, 102], h: [-51, 88] }, R: { e: [34, 102], h: [51, 88] } }, + legs: { L: [-11, 0], R: [15, -6] }, + prop: null, fx: 'bang', + }, + presenting: { + lift: 0, head: { dx: -1, dy: 0, rot: -6 }, + arms: { L: { e: [-23, 107], h: [-24, 120] }, R: { e: [32, 110], h: [45, 103] } }, + legs: { L: [-10, 0], R: [10, 0] }, + prop: { hand: 'R', dx: 0, dy: -17, rot: 0, onPalm: true }, fx: 'present', + }, + waving: { + lift: 0, head: { dx: 0, dy: 0, rot: -5 }, + arms: { L: { e: [-23, 107], h: [-24, 120] }, R: { e: [44, 88], h: [50, 50] } }, + legs: { L: [-10, 0], R: [10, 0] }, + prop: { hand: 'L', dx: -4, dy: -4, rot: -8 }, fx: 'wave', + }, +}; + +// ---------- bases ---------- +// A base owns body silhouette, limbs, head shape and where the face sits. +export const BASES = { + humanoid: { eyeX: 15, eyeY: 61, mouthY: 76, cheekX: 26, cheekY: 71, browY: 47, mouth: 'lips' }, + raven: { eyeX: 15, eyeY: 55, mouthY: 70, cheekX: 27, cheekY: 66, browY: 41, mouth: 'beak' }, + horse: { eyeX: 17, eyeY: 50, mouthY: 82, cheekX: 29, cheekY: 62, browY: 37, mouth: 'lips' }, +}; + +const TORSO = { + tunic: 'M-15 88 Q-20 102 -24 128 Q0 134 24 128 Q20 102 15 88 Z', + dress: 'M-15 88 Q-20 106 -31 132 Q0 140 31 132 Q20 106 15 88 Z', + robe: 'M-15 88 Q-23 112 -29 144 Q0 150 29 144 Q23 112 15 88 Z', + coat: 'M-16 88 Q-21 104 -26 136 Q0 141 26 136 Q21 104 16 88 Z', + egg: 'M-17 88 Q-31 108 -24 133 Q0 143 24 133 Q31 108 17 88 Z', +}; +const HEM = { + tunic: 'M-23.3 122 Q0 128 23.3 122 L24 128 Q0 134 -24 128 Z', + dress: 'M-29 127 Q0 135 29 127 L31 132 Q0 140 -31 132 Z', + robe: 'M-28 138 Q0 144 28 138 L29 144 Q0 150 -29 144 Z', + coat: 'M-25 130 Q0 135 25 130 L26 136 Q0 141 -26 136 Z', + egg: '', +}; +const COLLAR = { + v: 'M-12 88 L0 101 L12 88 Z', + round: 'M-13 88 Q0 98 13 88 Z', + high: 'M-15 82 L-14 93 Q0 99 14 93 L15 82 Q0 88 -15 82 Z', + none: '', +}; + +function torso(ch) { + const o = ch.outfit; + const shape = ch.base === 'raven' ? 'egg' : o.shape; + let s = ``; + if (shape === 'coat') s += ``; + if (ch.base === 'raven') s += ``; + if (HEM[shape] && o.trim) s += ``; + if (o.collar && COLLAR[o.collar]) s += ``; + if (o.belt) s += ``; + return inked(s); +} + +function cape(ch) { + if (!ch.cape) return ''; + return inked(``); +} + +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 [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']) { + const [fx, fy] = pose.legs[side]; + const hip = HIP[side]; + const foot = [fx, 149 + fy]; + if (ch.base === 'raven') { + s += limb(`M${P(hip)} L${P(foot)}`, ch.shoes, 2.5); + s += `` + + ``; + } else { + s += limb(`M${P(hip)} L${P(foot)}`, ch.legs, 8); + const out = side === 'L' ? -2 : 2; + s += inked(``); + } + } + return s; +} + +function arm(ch, pose, side) { + const a = pose.arms[side]; + const sh = SHOULDER[side]; + const d = `M${P(sh)} Q${P(a.e)} ${P(a.h)}`; + if (ch.base === 'raven') { + // Wing-arm: a broad capsule with a feathered tip. + const wing = ch.outfit.wing || shade(ch.outfit.main, -0.15); + let s = limb(d, wing, 11); + const [hx, hy] = a.h; + const vx = a.h[0] - a.e[0], vy = a.h[1] - a.e[1]; + const L = Math.hypot(vx, vy) || 1; + const ux = vx / L, uy = vy / L, px = -uy, py = ux; + const tip = (k, off) => P([hx + ux * k + px * off, hy + uy * k + py * off]); + s += inked(``, 2.5); + return s; + } + return limb(d, ch.sleeve || ch.outfit.main, 7); +} + +function hand(ch, pose, side) { + if (ch.base === 'raven') return ''; + const [hx, hy] = pose.arms[side].h; + if (ch.base === 'horse') return inked(``); + return inked(``); +} + +// ---------- head ---------- +function headBase(ch) { + const skin = ch.skin; + if (ch.base === 'raven') { + return inked(``) + + ``; + } + if (ch.base === 'horse') { + return inked( + `` + + `` + + ``) + + `` + + ``; + } + return inked( + `` + + ``); +} + +// ---------- expressions (face layer) ---------- +// Face layer coordinates are head space; the base supplies eye/mouth anchors. +export const EXPRESSIONS = ['neutral', 'smile', 'grin', 'happy', 'worried', 'surprised', 'determined', 'sleepy']; + +function openEye(x, y, iris, ink, opts = {}) { + const ry = opts.ry ?? 7.6, rx = opts.rx ?? 6.3; + let s = ``; + s += ``; + if (opts.flatLid) s += ``; + else s += ``; + s += ``; + return s; +} +function surprisedEye(x, y, ink) { + return `` + + ``; +} + +export function face(ch, expr) { + const b = BASES[ch.base]; + const ink = ch.faceInk || INK; + const iris = ch.eyes; + const ex = b.eyeX, ey = b.eyeY, my = b.mouthY, by = b.browY; + const brow = (x1, y1, x2, y2) => ``; + const browsAt = (inner, outer) => brow(-ex - 7, by + outer, -ex + 6, by + inner) + brow(ex - 6, by + inner, ex + 7, by + outer); + let eyes = '', mouth = '', brows = '', extra = ''; + let blush = 0.7, blushR = 5.5; + const sw = 'stroke-width="2.8" stroke-linecap="round" stroke-linejoin="round"'; + const D = '#7a2a2a', T = '#ff8f9a'; + switch (expr) { + case 'neutral': + eyes = openEye(-ex, ey, iris, ink) + openEye(ex, ey, iris, ink); + mouth = ``; + break; + case 'smile': + eyes = openEye(-ex, ey, iris, ink) + openEye(ex, ey, iris, ink); + mouth = ``; + break; + case 'grin': + eyes = openEye(-ex, ey, iris, ink, { ry: 7 }) + openEye(ex, ey, iris, ink, { ry: 7 }); + mouth = `` + + ``; + blush = 0.85; blushR = 6; + break; + case 'happy': + eyes = `` + + ``; + mouth = `` + + ``; + blush = 0.9; blushR = 6.5; + break; + case 'worried': + eyes = openEye(-ex, ey + 1, iris, ink, { ry: 7 }) + openEye(ex, ey + 1, iris, ink, { ry: 7 }); + brows = browsAt(-4, 2); + mouth = ``; + extra = ``; + blush = 0.45; + break; + case 'surprised': + eyes = surprisedEye(-ex, ey, ink) + surprisedEye(ex, ey, ink); + brows = browsAt(-5, -5); + mouth = ``; + blush = 0.6; + break; + case 'determined': + eyes = openEye(-ex, ey + 1, iris, ink, { ry: 6.6, flatLid: true }) + openEye(ex, ey + 1, iris, ink, { ry: 6.6, flatLid: true }); + brows = browsAt(4, -2); + mouth = ``; + blush = 0.55; + break; + case 'sleepy': + eyes = `` + + ``; + mouth = ``; + extra = `z` + + `z`; + blush = 0.6; + break; + default: throw new Error('unknown expression ' + expr); + } + if (b.mouth === 'beak') mouth = beak(ch, expr, my); + const cheeks = ch.noBlush ? '' : + `` + + ``; + return { under: cheeks + eyes + mouth, over: brows + extra }; +} + +function beak(ch, expr, my) { + const c = ch.beak; + const open = expr === 'grin' || expr === 'happy' || expr === 'surprised'; + if (open) { + return inked(`` + + ``, 2.5) + + ``; + } + const tilt = expr === 'worried' ? 2 : 0; + return inked(``, 2.5) + + ``; +} + +// ---------- hair ---------- +// Each style returns {back, front}; back sits behind the head (and body), front over the face. +function bangs(c, opts = {}) { + const n0 = opts.tips ?? 6, tipY = opts.tipY ?? 46, rootY = opts.rootY ?? 34, w = opts.w ?? 41; + let d = `M${-w - 2} ${opts.sideY ?? 64} C${-w - 6} 24 -24 9 0 9 C24 9 ${w + 6} 24 ${w + 2} ${opts.sideY ?? 64}`; + for (let i = 0; i <= n0; i++) { + const x = w - (i * 2 * w) / n0; + const edge = Math.abs(x) / w; + const ty = tipY + edge * edge * 10 + (opts.jag && i % 2 ? -5 : 0); + if (i > 0) { + const rx = x + w / n0; + d += ` Q${n(rx - (w / n0) * 0.2)} ${n(rootY + 6)} ${n(rx)} ${n(rootY + edge * 6)}`; + } + d += ` L${n(x)} ${n(ty)}`; + } + d += ' Z'; + return ``; +} +function sideLocks(c, len = 100) { + return `` + + ``; +} +const shine = (c) => ``; + +export const HAIR = { + none: () => ({ back: '', front: '' }), + long: (c) => ({ + back: ``, + front: bangs(c) + sideLocks(c, 104) + shine(c), + }), + wild: (c) => ({ + back: ``, + front: bangs(c, { tips: 7, jag: true, tipY: 44 }) + sideLocks(c, 98), + }), + twintails: (c, acc) => ({ + back: `` + + `` + + ``, + front: bangs(c, { tips: 7 }) + sideLocks(c, 94) + shine(c) + + ``, + }), + bob: (c) => ({ + back: ``, + front: bangs(c, { tips: 5 }) + sideLocks(c, 94) + shine(c), + }), + messy: (c) => ({ + back: ``, + front: bangs(c, { tips: 5, jag: true, tipY: 48, rootY: 32 }) + + `` + shine(c), + }), + short: (c) => ({ + back: '', + front: bangs(c, { tips: 5, tipY: 40, rootY: 30, sideY: 56 }) + shine(c), + }), + curly: (c) => { + let back = ''; + for (let a = 150; a <= 390; a += 20) { + const r = (a * Math.PI) / 180; + back += ``; + } + back += ``; + let front = ''; + for (const [x, y, r] of [[-30, 30, 12], [-14, 22, 13], [3, 20, 13], [19, 23, 13], [33, 32, 11], [-38, 44, 9], [40, 45, 9]]) front += ``; + return { back, front }; + }, + braids: (c) => { + let br = ''; + for (const sx of [-1, 1]) for (let i = 0; i < 5; i++) br += ``; + return { + back: ``, + front: `` + br + shine(c), + }; + }, + bun: (c) => ({ + back: ``, + front: bangs(c, { tips: 6, tipY: 44 }) + sideLocks(c, 90) + shine(c), + }), + crest: (c) => ({ + back: '', + front: ``, + }), + mane: (c) => ({ + back: ``, + front: ``, + }), + helmet: (c, acc) => ({ + back: ``, + front: `` + + `` + + `` + + ``, + }), +}; + +// ---------- accessories ---------- +// Each returns {back?, mid?, front?}: back = behind head, mid = between head skin and face, front = over hair. +export const ACC = { + bow: (c) => ({ front: `` }), + glasses: (c) => ({ front: `` }), + headphones: (c, c2) => ({ + back: ``, + front: `` + + (c2 ? `` : ''), + }), + foxEars: (c, inner) => ({ + back: ``, + front: ``, + }), + foxMask: (c, mark) => ({ + front: `` + + `` + + ``, + }), + tail: (c, tip) => ({ body: `` + (tip ? `` : '') }), + horseTail: (c) => ({ body: `` }), + earring: (c) => ({ front: `` }), + circlet: (c, gem) => ({ front: `` }), + cubes: (c, glow) => ({ + back: ``, + front: [[-26, 10, 9], [-8, 2, 10], [12, 4, 9], [28, 14, 8], [2, -14, 8], [-17, -8, 7], [20, -8, 6]] + .map(([x, y, s]) => ``).join(''), + }), + crystals: (c) => ({ front: `` }), + beard: (c) => ({ mid: `` }), + goatee: (c) => ({ mid: `` }), + longNose: (c) => ({ front: `` }), + tokin: (c) => ({ front: `` }), + ridges: (c) => ({ mid: `` }), + forehead: (c) => ({ front: `` }), + hood: (c) => ({ back: `` }), + hoodRim: (c) => ({ front: `` }), + wingCap: (c, wing, lens) => ({ + front: `` + + `` + + ``, + }), + scarf: (c) => ({ body: `` }), + spire: (c, glow) => ({ + back: ``, + front: ``, + }), + spiralBand: (c, metal) => ({ front: `` }), + helm: (c, horn, eye) => ({ + front: `` + + `` + + ``, + }), + goggles: (c, lens) => ({ front: `` }), + pencil: () => ({ front: `` }), + starClip: (c) => ({ front: sparkle(-28, 22, 7, c) }), + twoTone: (c) => ({ front: `` }), + feather: (c) => ({ front: `` }), + collarRing: (c, gem) => ({ body: `` }), + mask: (c) => ({ mid: `` }), +}; + +// ---------- props ---------- +// Props are drawn around a grip point at (0,0) and extend mostly upward (-y), ~26 px. +export const PROPS = { + book: (c) => ``, + tablet: (c, g) => ``, + magnifier: (c) => ``, + cards: (c) => ``, + keys: (c) => ``, + hammer: (c, h) => ``, + horn: (c, band) => ``, + fan: (c) => ``, + brush: (c) => ``, + quill: (c) => ``, + heart: (c) => ``, + spool: (c, t) => ``, + envelope: (c, seal) => ``, + wand: (c, star) => `${sparkle(0, -24, 12, star)}`, + cube: (c, g) => ``, + crystal: (c) => ``, + ship: (c, g) => ``, + shield: (c, m) => ``, + mirror: (c, g) => ``, + orb: (c, g) => ``, + panel: (c, g) => ``, + camera: (c, g) => ``, + pad: (c, g) => ``, + seed: (c, g) => ``, + scroll: (c) => ``, +}; + +// ---------- emblems ---------- +// Chest badge glyphs, drawn inside a 6.5-radius disc at (0,104) on the torso. +export const EMBLEMS = { + star: (c) => sparkle(0, 0, 4.4, c), + eye: (c) => ``, + key: (c) => ``, + spiral: (c) => ``, + cube: (c) => ``, + flake: (c) => ``, + feather: (c) => ``, + heart: (c) => ``, + bolt: (c) => ``, + moon: (c) => ``, + rune: (c) => ``, + gear: (c) => ``, + wave: (c) => ``, + glyph: (c) => ``, + rainbow: () => ``, +}; + +function emblem(ch) { + if (!ch.emblem) return ''; + const e = ch.emblem; + const y = ch.base === 'raven' ? 104 : 106; + return `` + inked(``, 2.4) + EMBLEMS[e.shape](e.color) + ''; +} + +// ---------- pose effects ---------- +function fx(kind, ch) { + const acc = ch.accent || '#ffd84a'; + switch (kind) { + case 'sparkles': return sparkle(-62, 62, 7, acc) + sparkle(-34, 6, 5, '#fff') + sparkle(60, 70, 6, acc); + case 'dots': return inked(``, 2.2); + case 'bang': return inked(``, 3.2); + case 'present': return sparkle(60, 64, 5, acc) + sparkle(28, 66, 4, '#fff'); + case 'wave': return ``; + default: return ''; + } +} + +// ---------- assembly ---------- +function merge(ch) { + const out = { back: '', mid: '', front: '' }; + for (const [name, ...args] of ch.acc || []) { + const r = ACC[name](...args); + for (const k of Object.keys(out)) if (r[k]) out[k] += r[k]; + } + return out; +} + +function propAt(ch, pose) { + if (!pose.prop || !ch.prop) return ''; + const h = pose.arms[pose.prop.hand].h; + const [name, ...args] = ch.prop; + const x = h[0] + pose.prop.dx, y = h[1] + pose.prop.dy; + return `` + inked(PROPS[name](...args), 2.6) + ''; +} + +export function render(ch, poseName, expr) { + const pose = POSES[poseName]; + if (!pose) throw new Error('unknown pose ' + poseName); + const acc = merge(ch); + const hair = HAIR[ch.hair.style](ch.hair.color, ch.hair.accent); + const f = face(ch, expr); + const hd = pose.head; + const headT = `translate(${hd.dx} ${hd.dy}) rotate(${hd.rot} 0 88)`; + + let s = ''; + s += ``; + // 1. behind everything: hair back, accessory back (rotates with the head) + s += `` + inked(acc.back + hair.back) + ''; + // 2. cape, tail, legs + s += cape(ch); + const tails = (ch.acc || []).filter(([a]) => a === 'tail' || a === 'horseTail').map(([a, ...r]) => ACC[a](...r).body).join(''); + s += inked(tails); + s += legs(ch, pose); + // 3. back arm (non-front arms), torso, body accessories + s += torso(ch); + const bodyAcc = (ch.acc || []).filter(([a]) => a !== 'tail' && a !== 'horseTail').map(([a, ...r]) => ACC[a](...r).body || '').join(''); + s += inked(bodyAcc); + s += emblem(ch); + for (const side of ['L', 'R']) if (!pose.arms[side].front) s += arm(ch, pose, side); + s += propAt(ch, pose); + for (const side of ['L', 'R']) if (!pose.arms[side].front) s += hand(ch, pose, side); + // 4. head + s += `` + headBase(ch) + inked(acc.mid) + f.under + inked(hair.front + acc.front) + f.over + ''; + // 5. front arms (thinking hand at chin) + for (const side of ['L', 'R']) if (pose.arms[side].front) s += arm(ch, pose, side) + hand(ch, pose, side); + s += fx(pose.fx, ch); + s += ''; + return `` + + `${ch.name} — ${poseName}, ${expr}${s}\n`; +} diff --git a/cast/rig/shot.sh b/cast/rig/shot.sh new file mode 100644 index 0000000..ff666b8 --- /dev/null +++ b/cast/rig/shot.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +# Screenshot the gallery with Edge headless (Git Bash). Usage from the repo root: +# cast/rig/shot.sh [character] [pose] [width] [height] +# A fresh profile dir per call keeps headless Edge off the desktop browser profile. +set -euo pipefail +out=$1; c=${2:-}; p=${3:-}; w=${4:-1400}; h=${5:-1800} +root=$(cd "$(dirname "$0")/.." && pwd -W) +prof="$(cygpath -m "${TMPDIR:-/tmp}")/cast-edge-$$" +rm -f "$out" +# Edge may hand the job to an already-running instance and return at once, so wait for the file. +"/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe" --headless=new --disable-gpu --hide-scrollbars --user-data-dir="$prof" --screenshot="$(cygpath -m "$out")" --window-size="$w,$h" "file:///$root/gallery.html?c=$c&p=$p" >/dev/null 2>&1 & +for _ in $(seq 120); do [ -s "$out" ] && break; sleep 0.25; done +sleep 0.5; ls -la "$out" diff --git a/cast/stickers/aetheria/neutral-grin.svg b/cast/stickers/aetheria/neutral-grin.svg new file mode 100644 index 0000000..c1b6e43 --- /dev/null +++ b/cast/stickers/aetheria/neutral-grin.svg @@ -0,0 +1 @@ +Aetheria — neutral, grin diff --git a/cast/stickers/aetheria/neutral-smile.svg b/cast/stickers/aetheria/neutral-smile.svg new file mode 100644 index 0000000..1628ab8 --- /dev/null +++ b/cast/stickers/aetheria/neutral-smile.svg @@ -0,0 +1 @@ +Aetheria — neutral, smile diff --git a/cast/stickers/aetheria/neutral-surprised.svg b/cast/stickers/aetheria/neutral-surprised.svg new file mode 100644 index 0000000..b61fa68 --- /dev/null +++ b/cast/stickers/aetheria/neutral-surprised.svg @@ -0,0 +1 @@ +Aetheria — neutral, surprised diff --git a/cast/stickers/brokkr/neutral-grin.svg b/cast/stickers/brokkr/neutral-grin.svg new file mode 100644 index 0000000..98aeb63 --- /dev/null +++ b/cast/stickers/brokkr/neutral-grin.svg @@ -0,0 +1 @@ +Brokkr — neutral, grin diff --git a/cast/stickers/brokkr/neutral-smile.svg b/cast/stickers/brokkr/neutral-smile.svg new file mode 100644 index 0000000..9ee8c47 --- /dev/null +++ b/cast/stickers/brokkr/neutral-smile.svg @@ -0,0 +1 @@ +Brokkr — neutral, smile diff --git a/cast/stickers/brokkr/neutral-surprised.svg b/cast/stickers/brokkr/neutral-surprised.svg new file mode 100644 index 0000000..6bea0fa --- /dev/null +++ b/cast/stickers/brokkr/neutral-surprised.svg @@ -0,0 +1 @@ +Brokkr — neutral, surprised diff --git a/cast/stickers/druzkai/neutral-grin.svg b/cast/stickers/druzkai/neutral-grin.svg new file mode 100644 index 0000000..6df59f7 --- /dev/null +++ b/cast/stickers/druzkai/neutral-grin.svg @@ -0,0 +1 @@ +Druzkai — neutral, grin diff --git a/cast/stickers/druzkai/neutral-smile.svg b/cast/stickers/druzkai/neutral-smile.svg new file mode 100644 index 0000000..bba1f1b --- /dev/null +++ b/cast/stickers/druzkai/neutral-smile.svg @@ -0,0 +1 @@ +Druzkai — neutral, smile diff --git a/cast/stickers/druzkai/neutral-surprised.svg b/cast/stickers/druzkai/neutral-surprised.svg new file mode 100644 index 0000000..51d7b49 --- /dev/null +++ b/cast/stickers/druzkai/neutral-surprised.svg @@ -0,0 +1 @@ +Druzkai — neutral, surprised diff --git a/cast/stickers/epiphany/cheer-determined.svg b/cast/stickers/epiphany/cheer-determined.svg new file mode 100644 index 0000000..19f46eb --- /dev/null +++ b/cast/stickers/epiphany/cheer-determined.svg @@ -0,0 +1 @@ +Epiphany — cheer, determined diff --git a/cast/stickers/epiphany/cheer-grin.svg b/cast/stickers/epiphany/cheer-grin.svg new file mode 100644 index 0000000..48ce2df --- /dev/null +++ b/cast/stickers/epiphany/cheer-grin.svg @@ -0,0 +1 @@ +Epiphany — cheer, grin diff --git a/cast/stickers/epiphany/cheer-happy.svg b/cast/stickers/epiphany/cheer-happy.svg new file mode 100644 index 0000000..b5d8515 --- /dev/null +++ b/cast/stickers/epiphany/cheer-happy.svg @@ -0,0 +1 @@ +Epiphany — cheer, happy diff --git a/cast/stickers/epiphany/cheer-neutral.svg b/cast/stickers/epiphany/cheer-neutral.svg new file mode 100644 index 0000000..9806b70 --- /dev/null +++ b/cast/stickers/epiphany/cheer-neutral.svg @@ -0,0 +1 @@ +Epiphany — cheer, neutral diff --git a/cast/stickers/epiphany/cheer-sleepy.svg b/cast/stickers/epiphany/cheer-sleepy.svg new file mode 100644 index 0000000..17f39c8 --- /dev/null +++ b/cast/stickers/epiphany/cheer-sleepy.svg @@ -0,0 +1 @@ +Epiphany — cheer, sleepyzz diff --git a/cast/stickers/epiphany/cheer-smile.svg b/cast/stickers/epiphany/cheer-smile.svg new file mode 100644 index 0000000..2ea30aa --- /dev/null +++ b/cast/stickers/epiphany/cheer-smile.svg @@ -0,0 +1 @@ +Epiphany — cheer, smile diff --git a/cast/stickers/epiphany/cheer-surprised.svg b/cast/stickers/epiphany/cheer-surprised.svg new file mode 100644 index 0000000..9f35154 --- /dev/null +++ b/cast/stickers/epiphany/cheer-surprised.svg @@ -0,0 +1 @@ +Epiphany — cheer, surprised diff --git a/cast/stickers/epiphany/cheer-worried.svg b/cast/stickers/epiphany/cheer-worried.svg new file mode 100644 index 0000000..f4147f7 --- /dev/null +++ b/cast/stickers/epiphany/cheer-worried.svg @@ -0,0 +1 @@ +Epiphany — cheer, worried diff --git a/cast/stickers/epiphany/neutral-determined.svg b/cast/stickers/epiphany/neutral-determined.svg new file mode 100644 index 0000000..771b347 --- /dev/null +++ b/cast/stickers/epiphany/neutral-determined.svg @@ -0,0 +1 @@ +Epiphany — neutral, determined diff --git a/cast/stickers/epiphany/neutral-grin.svg b/cast/stickers/epiphany/neutral-grin.svg new file mode 100644 index 0000000..2cc5369 --- /dev/null +++ b/cast/stickers/epiphany/neutral-grin.svg @@ -0,0 +1 @@ +Epiphany — neutral, grin diff --git a/cast/stickers/epiphany/neutral-happy.svg b/cast/stickers/epiphany/neutral-happy.svg new file mode 100644 index 0000000..91a6fdc --- /dev/null +++ b/cast/stickers/epiphany/neutral-happy.svg @@ -0,0 +1 @@ +Epiphany — neutral, happy diff --git a/cast/stickers/epiphany/neutral-neutral.svg b/cast/stickers/epiphany/neutral-neutral.svg new file mode 100644 index 0000000..e9d9313 --- /dev/null +++ b/cast/stickers/epiphany/neutral-neutral.svg @@ -0,0 +1 @@ +Epiphany — neutral, neutral diff --git a/cast/stickers/epiphany/neutral-sleepy.svg b/cast/stickers/epiphany/neutral-sleepy.svg new file mode 100644 index 0000000..8e40ee2 --- /dev/null +++ b/cast/stickers/epiphany/neutral-sleepy.svg @@ -0,0 +1 @@ +Epiphany — neutral, sleepyzz diff --git a/cast/stickers/epiphany/neutral-smile.svg b/cast/stickers/epiphany/neutral-smile.svg new file mode 100644 index 0000000..a702f8f --- /dev/null +++ b/cast/stickers/epiphany/neutral-smile.svg @@ -0,0 +1 @@ +Epiphany — neutral, smile diff --git a/cast/stickers/epiphany/neutral-surprised.svg b/cast/stickers/epiphany/neutral-surprised.svg new file mode 100644 index 0000000..882915b --- /dev/null +++ b/cast/stickers/epiphany/neutral-surprised.svg @@ -0,0 +1 @@ +Epiphany — neutral, surprised diff --git a/cast/stickers/epiphany/neutral-worried.svg b/cast/stickers/epiphany/neutral-worried.svg new file mode 100644 index 0000000..8422d5d --- /dev/null +++ b/cast/stickers/epiphany/neutral-worried.svg @@ -0,0 +1 @@ +Epiphany — neutral, worried diff --git a/cast/stickers/epiphany/presenting-determined.svg b/cast/stickers/epiphany/presenting-determined.svg new file mode 100644 index 0000000..912397c --- /dev/null +++ b/cast/stickers/epiphany/presenting-determined.svg @@ -0,0 +1 @@ +Epiphany — presenting, determined diff --git a/cast/stickers/epiphany/presenting-grin.svg b/cast/stickers/epiphany/presenting-grin.svg new file mode 100644 index 0000000..68b4403 --- /dev/null +++ b/cast/stickers/epiphany/presenting-grin.svg @@ -0,0 +1 @@ +Epiphany — presenting, grin diff --git a/cast/stickers/epiphany/presenting-happy.svg b/cast/stickers/epiphany/presenting-happy.svg new file mode 100644 index 0000000..c8c2b70 --- /dev/null +++ b/cast/stickers/epiphany/presenting-happy.svg @@ -0,0 +1 @@ +Epiphany — presenting, happy diff --git a/cast/stickers/epiphany/presenting-neutral.svg b/cast/stickers/epiphany/presenting-neutral.svg new file mode 100644 index 0000000..76777f4 --- /dev/null +++ b/cast/stickers/epiphany/presenting-neutral.svg @@ -0,0 +1 @@ +Epiphany — presenting, neutral diff --git a/cast/stickers/epiphany/presenting-sleepy.svg b/cast/stickers/epiphany/presenting-sleepy.svg new file mode 100644 index 0000000..07741f6 --- /dev/null +++ b/cast/stickers/epiphany/presenting-sleepy.svg @@ -0,0 +1 @@ +Epiphany — presenting, sleepyzz diff --git a/cast/stickers/epiphany/presenting-smile.svg b/cast/stickers/epiphany/presenting-smile.svg new file mode 100644 index 0000000..9c0ed62 --- /dev/null +++ b/cast/stickers/epiphany/presenting-smile.svg @@ -0,0 +1 @@ +Epiphany — presenting, smile diff --git a/cast/stickers/epiphany/presenting-surprised.svg b/cast/stickers/epiphany/presenting-surprised.svg new file mode 100644 index 0000000..a4d8997 --- /dev/null +++ b/cast/stickers/epiphany/presenting-surprised.svg @@ -0,0 +1 @@ +Epiphany — presenting, surprised diff --git a/cast/stickers/epiphany/presenting-worried.svg b/cast/stickers/epiphany/presenting-worried.svg new file mode 100644 index 0000000..d7d68e8 --- /dev/null +++ b/cast/stickers/epiphany/presenting-worried.svg @@ -0,0 +1 @@ +Epiphany — presenting, worried diff --git a/cast/stickers/epiphany/surprised-determined.svg b/cast/stickers/epiphany/surprised-determined.svg new file mode 100644 index 0000000..4b825fd --- /dev/null +++ b/cast/stickers/epiphany/surprised-determined.svg @@ -0,0 +1 @@ +Epiphany — surprised, determined diff --git a/cast/stickers/epiphany/surprised-grin.svg b/cast/stickers/epiphany/surprised-grin.svg new file mode 100644 index 0000000..658872d --- /dev/null +++ b/cast/stickers/epiphany/surprised-grin.svg @@ -0,0 +1 @@ +Epiphany — surprised, grin diff --git a/cast/stickers/epiphany/surprised-happy.svg b/cast/stickers/epiphany/surprised-happy.svg new file mode 100644 index 0000000..0b7b900 --- /dev/null +++ b/cast/stickers/epiphany/surprised-happy.svg @@ -0,0 +1 @@ +Epiphany — surprised, happy diff --git a/cast/stickers/epiphany/surprised-neutral.svg b/cast/stickers/epiphany/surprised-neutral.svg new file mode 100644 index 0000000..51f4e92 --- /dev/null +++ b/cast/stickers/epiphany/surprised-neutral.svg @@ -0,0 +1 @@ +Epiphany — surprised, neutral diff --git a/cast/stickers/epiphany/surprised-sleepy.svg b/cast/stickers/epiphany/surprised-sleepy.svg new file mode 100644 index 0000000..738cea3 --- /dev/null +++ b/cast/stickers/epiphany/surprised-sleepy.svg @@ -0,0 +1 @@ +Epiphany — surprised, sleepyzz diff --git a/cast/stickers/epiphany/surprised-smile.svg b/cast/stickers/epiphany/surprised-smile.svg new file mode 100644 index 0000000..cec0dfc --- /dev/null +++ b/cast/stickers/epiphany/surprised-smile.svg @@ -0,0 +1 @@ +Epiphany — surprised, smile diff --git a/cast/stickers/epiphany/surprised-surprised.svg b/cast/stickers/epiphany/surprised-surprised.svg new file mode 100644 index 0000000..16c026d --- /dev/null +++ b/cast/stickers/epiphany/surprised-surprised.svg @@ -0,0 +1 @@ +Epiphany — surprised, surprised diff --git a/cast/stickers/epiphany/surprised-worried.svg b/cast/stickers/epiphany/surprised-worried.svg new file mode 100644 index 0000000..7d09012 --- /dev/null +++ b/cast/stickers/epiphany/surprised-worried.svg @@ -0,0 +1 @@ +Epiphany — surprised, worried diff --git a/cast/stickers/epiphany/thinking-determined.svg b/cast/stickers/epiphany/thinking-determined.svg new file mode 100644 index 0000000..47a8092 --- /dev/null +++ b/cast/stickers/epiphany/thinking-determined.svg @@ -0,0 +1 @@ +Epiphany — thinking, determined diff --git a/cast/stickers/epiphany/thinking-grin.svg b/cast/stickers/epiphany/thinking-grin.svg new file mode 100644 index 0000000..54d5a41 --- /dev/null +++ b/cast/stickers/epiphany/thinking-grin.svg @@ -0,0 +1 @@ +Epiphany — thinking, grin diff --git a/cast/stickers/epiphany/thinking-happy.svg b/cast/stickers/epiphany/thinking-happy.svg new file mode 100644 index 0000000..37bf12f --- /dev/null +++ b/cast/stickers/epiphany/thinking-happy.svg @@ -0,0 +1 @@ +Epiphany — thinking, happy diff --git a/cast/stickers/epiphany/thinking-neutral.svg b/cast/stickers/epiphany/thinking-neutral.svg new file mode 100644 index 0000000..8b8495d --- /dev/null +++ b/cast/stickers/epiphany/thinking-neutral.svg @@ -0,0 +1 @@ +Epiphany — thinking, neutral diff --git a/cast/stickers/epiphany/thinking-sleepy.svg b/cast/stickers/epiphany/thinking-sleepy.svg new file mode 100644 index 0000000..1c9537e --- /dev/null +++ b/cast/stickers/epiphany/thinking-sleepy.svg @@ -0,0 +1 @@ +Epiphany — thinking, sleepyzz diff --git a/cast/stickers/epiphany/thinking-smile.svg b/cast/stickers/epiphany/thinking-smile.svg new file mode 100644 index 0000000..830d3d4 --- /dev/null +++ b/cast/stickers/epiphany/thinking-smile.svg @@ -0,0 +1 @@ +Epiphany — thinking, smile diff --git a/cast/stickers/epiphany/thinking-surprised.svg b/cast/stickers/epiphany/thinking-surprised.svg new file mode 100644 index 0000000..ad385d2 --- /dev/null +++ b/cast/stickers/epiphany/thinking-surprised.svg @@ -0,0 +1 @@ +Epiphany — thinking, surprised diff --git a/cast/stickers/epiphany/thinking-worried.svg b/cast/stickers/epiphany/thinking-worried.svg new file mode 100644 index 0000000..7ec7f26 --- /dev/null +++ b/cast/stickers/epiphany/thinking-worried.svg @@ -0,0 +1 @@ +Epiphany — thinking, worried diff --git a/cast/stickers/epiphany/waving-determined.svg b/cast/stickers/epiphany/waving-determined.svg new file mode 100644 index 0000000..b26c162 --- /dev/null +++ b/cast/stickers/epiphany/waving-determined.svg @@ -0,0 +1 @@ +Epiphany — waving, determined diff --git a/cast/stickers/epiphany/waving-grin.svg b/cast/stickers/epiphany/waving-grin.svg new file mode 100644 index 0000000..01e4598 --- /dev/null +++ b/cast/stickers/epiphany/waving-grin.svg @@ -0,0 +1 @@ +Epiphany — waving, grin diff --git a/cast/stickers/epiphany/waving-happy.svg b/cast/stickers/epiphany/waving-happy.svg new file mode 100644 index 0000000..55cc6b2 --- /dev/null +++ b/cast/stickers/epiphany/waving-happy.svg @@ -0,0 +1 @@ +Epiphany — waving, happy diff --git a/cast/stickers/epiphany/waving-neutral.svg b/cast/stickers/epiphany/waving-neutral.svg new file mode 100644 index 0000000..6efe8aa --- /dev/null +++ b/cast/stickers/epiphany/waving-neutral.svg @@ -0,0 +1 @@ +Epiphany — waving, neutral diff --git a/cast/stickers/epiphany/waving-sleepy.svg b/cast/stickers/epiphany/waving-sleepy.svg new file mode 100644 index 0000000..4553627 --- /dev/null +++ b/cast/stickers/epiphany/waving-sleepy.svg @@ -0,0 +1 @@ +Epiphany — waving, sleepyzz diff --git a/cast/stickers/epiphany/waving-smile.svg b/cast/stickers/epiphany/waving-smile.svg new file mode 100644 index 0000000..830aba0 --- /dev/null +++ b/cast/stickers/epiphany/waving-smile.svg @@ -0,0 +1 @@ +Epiphany — waving, smile diff --git a/cast/stickers/epiphany/waving-surprised.svg b/cast/stickers/epiphany/waving-surprised.svg new file mode 100644 index 0000000..9a1291e --- /dev/null +++ b/cast/stickers/epiphany/waving-surprised.svg @@ -0,0 +1 @@ +Epiphany — waving, surprised diff --git a/cast/stickers/epiphany/waving-worried.svg b/cast/stickers/epiphany/waving-worried.svg new file mode 100644 index 0000000..3a16a3b --- /dev/null +++ b/cast/stickers/epiphany/waving-worried.svg @@ -0,0 +1 @@ +Epiphany — waving, worried diff --git a/cast/stickers/eureka/cheer-determined.svg b/cast/stickers/eureka/cheer-determined.svg new file mode 100644 index 0000000..e35e56c --- /dev/null +++ b/cast/stickers/eureka/cheer-determined.svg @@ -0,0 +1 @@ +Eureka — cheer, determined diff --git a/cast/stickers/eureka/cheer-grin.svg b/cast/stickers/eureka/cheer-grin.svg new file mode 100644 index 0000000..a90fe72 --- /dev/null +++ b/cast/stickers/eureka/cheer-grin.svg @@ -0,0 +1 @@ +Eureka — cheer, grin diff --git a/cast/stickers/eureka/cheer-happy.svg b/cast/stickers/eureka/cheer-happy.svg new file mode 100644 index 0000000..cde89fb --- /dev/null +++ b/cast/stickers/eureka/cheer-happy.svg @@ -0,0 +1 @@ +Eureka — cheer, happy diff --git a/cast/stickers/eureka/cheer-neutral.svg b/cast/stickers/eureka/cheer-neutral.svg new file mode 100644 index 0000000..d22ef84 --- /dev/null +++ b/cast/stickers/eureka/cheer-neutral.svg @@ -0,0 +1 @@ +Eureka — cheer, neutral diff --git a/cast/stickers/eureka/cheer-sleepy.svg b/cast/stickers/eureka/cheer-sleepy.svg new file mode 100644 index 0000000..710e56f --- /dev/null +++ b/cast/stickers/eureka/cheer-sleepy.svg @@ -0,0 +1 @@ +Eureka — cheer, sleepyzz diff --git a/cast/stickers/eureka/cheer-smile.svg b/cast/stickers/eureka/cheer-smile.svg new file mode 100644 index 0000000..cf351cb --- /dev/null +++ b/cast/stickers/eureka/cheer-smile.svg @@ -0,0 +1 @@ +Eureka — cheer, smile diff --git a/cast/stickers/eureka/cheer-surprised.svg b/cast/stickers/eureka/cheer-surprised.svg new file mode 100644 index 0000000..00fd389 --- /dev/null +++ b/cast/stickers/eureka/cheer-surprised.svg @@ -0,0 +1 @@ +Eureka — cheer, surprised diff --git a/cast/stickers/eureka/cheer-worried.svg b/cast/stickers/eureka/cheer-worried.svg new file mode 100644 index 0000000..d425e30 --- /dev/null +++ b/cast/stickers/eureka/cheer-worried.svg @@ -0,0 +1 @@ +Eureka — cheer, worried diff --git a/cast/stickers/eureka/neutral-determined.svg b/cast/stickers/eureka/neutral-determined.svg new file mode 100644 index 0000000..197aba1 --- /dev/null +++ b/cast/stickers/eureka/neutral-determined.svg @@ -0,0 +1 @@ +Eureka — neutral, determined diff --git a/cast/stickers/eureka/neutral-grin.svg b/cast/stickers/eureka/neutral-grin.svg new file mode 100644 index 0000000..e09f572 --- /dev/null +++ b/cast/stickers/eureka/neutral-grin.svg @@ -0,0 +1 @@ +Eureka — neutral, grin diff --git a/cast/stickers/eureka/neutral-happy.svg b/cast/stickers/eureka/neutral-happy.svg new file mode 100644 index 0000000..bb44ac6 --- /dev/null +++ b/cast/stickers/eureka/neutral-happy.svg @@ -0,0 +1 @@ +Eureka — neutral, happy diff --git a/cast/stickers/eureka/neutral-neutral.svg b/cast/stickers/eureka/neutral-neutral.svg new file mode 100644 index 0000000..a65e3e3 --- /dev/null +++ b/cast/stickers/eureka/neutral-neutral.svg @@ -0,0 +1 @@ +Eureka — neutral, neutral diff --git a/cast/stickers/eureka/neutral-sleepy.svg b/cast/stickers/eureka/neutral-sleepy.svg new file mode 100644 index 0000000..289cc1a --- /dev/null +++ b/cast/stickers/eureka/neutral-sleepy.svg @@ -0,0 +1 @@ +Eureka — neutral, sleepyzz diff --git a/cast/stickers/eureka/neutral-smile.svg b/cast/stickers/eureka/neutral-smile.svg new file mode 100644 index 0000000..004ec8e --- /dev/null +++ b/cast/stickers/eureka/neutral-smile.svg @@ -0,0 +1 @@ +Eureka — neutral, smile diff --git a/cast/stickers/eureka/neutral-surprised.svg b/cast/stickers/eureka/neutral-surprised.svg new file mode 100644 index 0000000..f856996 --- /dev/null +++ b/cast/stickers/eureka/neutral-surprised.svg @@ -0,0 +1 @@ +Eureka — neutral, surprised diff --git a/cast/stickers/eureka/neutral-worried.svg b/cast/stickers/eureka/neutral-worried.svg new file mode 100644 index 0000000..48dbc33 --- /dev/null +++ b/cast/stickers/eureka/neutral-worried.svg @@ -0,0 +1 @@ +Eureka — neutral, worried diff --git a/cast/stickers/eureka/presenting-determined.svg b/cast/stickers/eureka/presenting-determined.svg new file mode 100644 index 0000000..634913b --- /dev/null +++ b/cast/stickers/eureka/presenting-determined.svg @@ -0,0 +1 @@ +Eureka — presenting, determined diff --git a/cast/stickers/eureka/presenting-grin.svg b/cast/stickers/eureka/presenting-grin.svg new file mode 100644 index 0000000..782be7c --- /dev/null +++ b/cast/stickers/eureka/presenting-grin.svg @@ -0,0 +1 @@ +Eureka — presenting, grin diff --git a/cast/stickers/eureka/presenting-happy.svg b/cast/stickers/eureka/presenting-happy.svg new file mode 100644 index 0000000..5ffcfc2 --- /dev/null +++ b/cast/stickers/eureka/presenting-happy.svg @@ -0,0 +1 @@ +Eureka — presenting, happy diff --git a/cast/stickers/eureka/presenting-neutral.svg b/cast/stickers/eureka/presenting-neutral.svg new file mode 100644 index 0000000..2e8ff43 --- /dev/null +++ b/cast/stickers/eureka/presenting-neutral.svg @@ -0,0 +1 @@ +Eureka — presenting, neutral diff --git a/cast/stickers/eureka/presenting-sleepy.svg b/cast/stickers/eureka/presenting-sleepy.svg new file mode 100644 index 0000000..9abb636 --- /dev/null +++ b/cast/stickers/eureka/presenting-sleepy.svg @@ -0,0 +1 @@ +Eureka — presenting, sleepyzz diff --git a/cast/stickers/eureka/presenting-smile.svg b/cast/stickers/eureka/presenting-smile.svg new file mode 100644 index 0000000..46292a0 --- /dev/null +++ b/cast/stickers/eureka/presenting-smile.svg @@ -0,0 +1 @@ +Eureka — presenting, smile diff --git a/cast/stickers/eureka/presenting-surprised.svg b/cast/stickers/eureka/presenting-surprised.svg new file mode 100644 index 0000000..7fe567b --- /dev/null +++ b/cast/stickers/eureka/presenting-surprised.svg @@ -0,0 +1 @@ +Eureka — presenting, surprised diff --git a/cast/stickers/eureka/presenting-worried.svg b/cast/stickers/eureka/presenting-worried.svg new file mode 100644 index 0000000..16189dd --- /dev/null +++ b/cast/stickers/eureka/presenting-worried.svg @@ -0,0 +1 @@ +Eureka — presenting, worried diff --git a/cast/stickers/eureka/surprised-determined.svg b/cast/stickers/eureka/surprised-determined.svg new file mode 100644 index 0000000..4e84850 --- /dev/null +++ b/cast/stickers/eureka/surprised-determined.svg @@ -0,0 +1 @@ +Eureka — surprised, determined diff --git a/cast/stickers/eureka/surprised-grin.svg b/cast/stickers/eureka/surprised-grin.svg new file mode 100644 index 0000000..d35e9f1 --- /dev/null +++ b/cast/stickers/eureka/surprised-grin.svg @@ -0,0 +1 @@ +Eureka — surprised, grin diff --git a/cast/stickers/eureka/surprised-happy.svg b/cast/stickers/eureka/surprised-happy.svg new file mode 100644 index 0000000..5d2f748 --- /dev/null +++ b/cast/stickers/eureka/surprised-happy.svg @@ -0,0 +1 @@ +Eureka — surprised, happy diff --git a/cast/stickers/eureka/surprised-neutral.svg b/cast/stickers/eureka/surprised-neutral.svg new file mode 100644 index 0000000..52d7ff2 --- /dev/null +++ b/cast/stickers/eureka/surprised-neutral.svg @@ -0,0 +1 @@ +Eureka — surprised, neutral diff --git a/cast/stickers/eureka/surprised-sleepy.svg b/cast/stickers/eureka/surprised-sleepy.svg new file mode 100644 index 0000000..51a4652 --- /dev/null +++ b/cast/stickers/eureka/surprised-sleepy.svg @@ -0,0 +1 @@ +Eureka — surprised, sleepyzz diff --git a/cast/stickers/eureka/surprised-smile.svg b/cast/stickers/eureka/surprised-smile.svg new file mode 100644 index 0000000..ebf8cd9 --- /dev/null +++ b/cast/stickers/eureka/surprised-smile.svg @@ -0,0 +1 @@ +Eureka — surprised, smile diff --git a/cast/stickers/eureka/surprised-surprised.svg b/cast/stickers/eureka/surprised-surprised.svg new file mode 100644 index 0000000..a7f782c --- /dev/null +++ b/cast/stickers/eureka/surprised-surprised.svg @@ -0,0 +1 @@ +Eureka — surprised, surprised diff --git a/cast/stickers/eureka/surprised-worried.svg b/cast/stickers/eureka/surprised-worried.svg new file mode 100644 index 0000000..9978ec9 --- /dev/null +++ b/cast/stickers/eureka/surprised-worried.svg @@ -0,0 +1 @@ +Eureka — surprised, worried diff --git a/cast/stickers/eureka/thinking-determined.svg b/cast/stickers/eureka/thinking-determined.svg new file mode 100644 index 0000000..1b74586 --- /dev/null +++ b/cast/stickers/eureka/thinking-determined.svg @@ -0,0 +1 @@ +Eureka — thinking, determined diff --git a/cast/stickers/eureka/thinking-grin.svg b/cast/stickers/eureka/thinking-grin.svg new file mode 100644 index 0000000..9992a4a --- /dev/null +++ b/cast/stickers/eureka/thinking-grin.svg @@ -0,0 +1 @@ +Eureka — thinking, grin diff --git a/cast/stickers/eureka/thinking-happy.svg b/cast/stickers/eureka/thinking-happy.svg new file mode 100644 index 0000000..820d3d3 --- /dev/null +++ b/cast/stickers/eureka/thinking-happy.svg @@ -0,0 +1 @@ +Eureka — thinking, happy diff --git a/cast/stickers/eureka/thinking-neutral.svg b/cast/stickers/eureka/thinking-neutral.svg new file mode 100644 index 0000000..5264af2 --- /dev/null +++ b/cast/stickers/eureka/thinking-neutral.svg @@ -0,0 +1 @@ +Eureka — thinking, neutral diff --git a/cast/stickers/eureka/thinking-sleepy.svg b/cast/stickers/eureka/thinking-sleepy.svg new file mode 100644 index 0000000..873da02 --- /dev/null +++ b/cast/stickers/eureka/thinking-sleepy.svg @@ -0,0 +1 @@ +Eureka — thinking, sleepyzz diff --git a/cast/stickers/eureka/thinking-smile.svg b/cast/stickers/eureka/thinking-smile.svg new file mode 100644 index 0000000..87cc221 --- /dev/null +++ b/cast/stickers/eureka/thinking-smile.svg @@ -0,0 +1 @@ +Eureka — thinking, smile diff --git a/cast/stickers/eureka/thinking-surprised.svg b/cast/stickers/eureka/thinking-surprised.svg new file mode 100644 index 0000000..3101657 --- /dev/null +++ b/cast/stickers/eureka/thinking-surprised.svg @@ -0,0 +1 @@ +Eureka — thinking, surprised diff --git a/cast/stickers/eureka/thinking-worried.svg b/cast/stickers/eureka/thinking-worried.svg new file mode 100644 index 0000000..f4afad0 --- /dev/null +++ b/cast/stickers/eureka/thinking-worried.svg @@ -0,0 +1 @@ +Eureka — thinking, worried diff --git a/cast/stickers/eureka/waving-determined.svg b/cast/stickers/eureka/waving-determined.svg new file mode 100644 index 0000000..82af318 --- /dev/null +++ b/cast/stickers/eureka/waving-determined.svg @@ -0,0 +1 @@ +Eureka — waving, determined diff --git a/cast/stickers/eureka/waving-grin.svg b/cast/stickers/eureka/waving-grin.svg new file mode 100644 index 0000000..d27f276 --- /dev/null +++ b/cast/stickers/eureka/waving-grin.svg @@ -0,0 +1 @@ +Eureka — waving, grin diff --git a/cast/stickers/eureka/waving-happy.svg b/cast/stickers/eureka/waving-happy.svg new file mode 100644 index 0000000..bbe6d1f --- /dev/null +++ b/cast/stickers/eureka/waving-happy.svg @@ -0,0 +1 @@ +Eureka — waving, happy diff --git a/cast/stickers/eureka/waving-neutral.svg b/cast/stickers/eureka/waving-neutral.svg new file mode 100644 index 0000000..0c55bc9 --- /dev/null +++ b/cast/stickers/eureka/waving-neutral.svg @@ -0,0 +1 @@ +Eureka — waving, neutral diff --git a/cast/stickers/eureka/waving-sleepy.svg b/cast/stickers/eureka/waving-sleepy.svg new file mode 100644 index 0000000..3f56db2 --- /dev/null +++ b/cast/stickers/eureka/waving-sleepy.svg @@ -0,0 +1 @@ +Eureka — waving, sleepyzz diff --git a/cast/stickers/eureka/waving-smile.svg b/cast/stickers/eureka/waving-smile.svg new file mode 100644 index 0000000..9fe59c8 --- /dev/null +++ b/cast/stickers/eureka/waving-smile.svg @@ -0,0 +1 @@ +Eureka — waving, smile diff --git a/cast/stickers/eureka/waving-surprised.svg b/cast/stickers/eureka/waving-surprised.svg new file mode 100644 index 0000000..2cad5b3 --- /dev/null +++ b/cast/stickers/eureka/waving-surprised.svg @@ -0,0 +1 @@ +Eureka — waving, surprised diff --git a/cast/stickers/eureka/waving-worried.svg b/cast/stickers/eureka/waving-worried.svg new file mode 100644 index 0000000..7080ca2 --- /dev/null +++ b/cast/stickers/eureka/waving-worried.svg @@ -0,0 +1 @@ +Eureka — waving, worried diff --git a/cast/stickers/eve/neutral-grin.svg b/cast/stickers/eve/neutral-grin.svg new file mode 100644 index 0000000..f4f7de2 --- /dev/null +++ b/cast/stickers/eve/neutral-grin.svg @@ -0,0 +1 @@ +Eve — neutral, grin diff --git a/cast/stickers/eve/neutral-smile.svg b/cast/stickers/eve/neutral-smile.svg new file mode 100644 index 0000000..76b019e --- /dev/null +++ b/cast/stickers/eve/neutral-smile.svg @@ -0,0 +1 @@ +Eve — neutral, smile diff --git a/cast/stickers/eve/neutral-surprised.svg b/cast/stickers/eve/neutral-surprised.svg new file mode 100644 index 0000000..0a1636c --- /dev/null +++ b/cast/stickers/eve/neutral-surprised.svg @@ -0,0 +1 @@ +Eve — neutral, surprised diff --git a/cast/stickers/fensalir/neutral-grin.svg b/cast/stickers/fensalir/neutral-grin.svg new file mode 100644 index 0000000..b5af4fd --- /dev/null +++ b/cast/stickers/fensalir/neutral-grin.svg @@ -0,0 +1 @@ +Fensalir — neutral, grin diff --git a/cast/stickers/fensalir/neutral-smile.svg b/cast/stickers/fensalir/neutral-smile.svg new file mode 100644 index 0000000..9778f9a --- /dev/null +++ b/cast/stickers/fensalir/neutral-smile.svg @@ -0,0 +1 @@ +Fensalir — neutral, smile diff --git a/cast/stickers/fensalir/neutral-surprised.svg b/cast/stickers/fensalir/neutral-surprised.svg new file mode 100644 index 0000000..e738a2e --- /dev/null +++ b/cast/stickers/fensalir/neutral-surprised.svg @@ -0,0 +1 @@ +Fensalir — neutral, surprised diff --git a/cast/stickers/gjallar/neutral-grin.svg b/cast/stickers/gjallar/neutral-grin.svg new file mode 100644 index 0000000..6a9a046 --- /dev/null +++ b/cast/stickers/gjallar/neutral-grin.svg @@ -0,0 +1 @@ +Gjallar — neutral, grin diff --git a/cast/stickers/gjallar/neutral-smile.svg b/cast/stickers/gjallar/neutral-smile.svg new file mode 100644 index 0000000..45f2300 --- /dev/null +++ b/cast/stickers/gjallar/neutral-smile.svg @@ -0,0 +1 @@ +Gjallar — neutral, smile diff --git a/cast/stickers/gjallar/neutral-surprised.svg b/cast/stickers/gjallar/neutral-surprised.svg new file mode 100644 index 0000000..78269bf --- /dev/null +++ b/cast/stickers/gjallar/neutral-surprised.svg @@ -0,0 +1 @@ +Gjallar — neutral, surprised diff --git a/cast/stickers/heimdall/neutral-grin.svg b/cast/stickers/heimdall/neutral-grin.svg new file mode 100644 index 0000000..e150939 --- /dev/null +++ b/cast/stickers/heimdall/neutral-grin.svg @@ -0,0 +1 @@ +Heimdall — neutral, grin diff --git a/cast/stickers/heimdall/neutral-smile.svg b/cast/stickers/heimdall/neutral-smile.svg new file mode 100644 index 0000000..66c9c04 --- /dev/null +++ b/cast/stickers/heimdall/neutral-smile.svg @@ -0,0 +1 @@ +Heimdall — neutral, smile diff --git a/cast/stickers/heimdall/neutral-surprised.svg b/cast/stickers/heimdall/neutral-surprised.svg new file mode 100644 index 0000000..4fbab4b --- /dev/null +++ b/cast/stickers/heimdall/neutral-surprised.svg @@ -0,0 +1 @@ +Heimdall — neutral, surprised diff --git a/cast/stickers/hermodr/neutral-grin.svg b/cast/stickers/hermodr/neutral-grin.svg new file mode 100644 index 0000000..d5b7d39 --- /dev/null +++ b/cast/stickers/hermodr/neutral-grin.svg @@ -0,0 +1 @@ +Hermodr — neutral, grin diff --git a/cast/stickers/hermodr/neutral-smile.svg b/cast/stickers/hermodr/neutral-smile.svg new file mode 100644 index 0000000..6ecfc2e --- /dev/null +++ b/cast/stickers/hermodr/neutral-smile.svg @@ -0,0 +1 @@ +Hermodr — neutral, smile diff --git a/cast/stickers/hermodr/neutral-surprised.svg b/cast/stickers/hermodr/neutral-surprised.svg new file mode 100644 index 0000000..58b7f67 --- /dev/null +++ b/cast/stickers/hermodr/neutral-surprised.svg @@ -0,0 +1 @@ +Hermodr — neutral, surprised diff --git a/cast/stickers/huginn/cheer-determined.svg b/cast/stickers/huginn/cheer-determined.svg new file mode 100644 index 0000000..d5e5549 --- /dev/null +++ b/cast/stickers/huginn/cheer-determined.svg @@ -0,0 +1 @@ +Huginn — cheer, determined diff --git a/cast/stickers/huginn/cheer-grin.svg b/cast/stickers/huginn/cheer-grin.svg new file mode 100644 index 0000000..f2f28cb --- /dev/null +++ b/cast/stickers/huginn/cheer-grin.svg @@ -0,0 +1 @@ +Huginn — cheer, grin diff --git a/cast/stickers/huginn/cheer-happy.svg b/cast/stickers/huginn/cheer-happy.svg new file mode 100644 index 0000000..b332858 --- /dev/null +++ b/cast/stickers/huginn/cheer-happy.svg @@ -0,0 +1 @@ +Huginn — cheer, happy diff --git a/cast/stickers/huginn/cheer-neutral.svg b/cast/stickers/huginn/cheer-neutral.svg new file mode 100644 index 0000000..0851562 --- /dev/null +++ b/cast/stickers/huginn/cheer-neutral.svg @@ -0,0 +1 @@ +Huginn — cheer, neutral diff --git a/cast/stickers/huginn/cheer-sleepy.svg b/cast/stickers/huginn/cheer-sleepy.svg new file mode 100644 index 0000000..a95916d --- /dev/null +++ b/cast/stickers/huginn/cheer-sleepy.svg @@ -0,0 +1 @@ +Huginn — cheer, sleepyzz diff --git a/cast/stickers/huginn/cheer-smile.svg b/cast/stickers/huginn/cheer-smile.svg new file mode 100644 index 0000000..42d6608 --- /dev/null +++ b/cast/stickers/huginn/cheer-smile.svg @@ -0,0 +1 @@ +Huginn — cheer, smile diff --git a/cast/stickers/huginn/cheer-surprised.svg b/cast/stickers/huginn/cheer-surprised.svg new file mode 100644 index 0000000..0ee99c4 --- /dev/null +++ b/cast/stickers/huginn/cheer-surprised.svg @@ -0,0 +1 @@ +Huginn — cheer, surprised diff --git a/cast/stickers/huginn/cheer-worried.svg b/cast/stickers/huginn/cheer-worried.svg new file mode 100644 index 0000000..7135032 --- /dev/null +++ b/cast/stickers/huginn/cheer-worried.svg @@ -0,0 +1 @@ +Huginn — cheer, worried diff --git a/cast/stickers/huginn/neutral-determined.svg b/cast/stickers/huginn/neutral-determined.svg new file mode 100644 index 0000000..67b0566 --- /dev/null +++ b/cast/stickers/huginn/neutral-determined.svg @@ -0,0 +1 @@ +Huginn — neutral, determined diff --git a/cast/stickers/huginn/neutral-grin.svg b/cast/stickers/huginn/neutral-grin.svg new file mode 100644 index 0000000..09fcff8 --- /dev/null +++ b/cast/stickers/huginn/neutral-grin.svg @@ -0,0 +1 @@ +Huginn — neutral, grin diff --git a/cast/stickers/huginn/neutral-happy.svg b/cast/stickers/huginn/neutral-happy.svg new file mode 100644 index 0000000..d1125a6 --- /dev/null +++ b/cast/stickers/huginn/neutral-happy.svg @@ -0,0 +1 @@ +Huginn — neutral, happy diff --git a/cast/stickers/huginn/neutral-neutral.svg b/cast/stickers/huginn/neutral-neutral.svg new file mode 100644 index 0000000..3d36efe --- /dev/null +++ b/cast/stickers/huginn/neutral-neutral.svg @@ -0,0 +1 @@ +Huginn — neutral, neutral diff --git a/cast/stickers/huginn/neutral-sleepy.svg b/cast/stickers/huginn/neutral-sleepy.svg new file mode 100644 index 0000000..bad350b --- /dev/null +++ b/cast/stickers/huginn/neutral-sleepy.svg @@ -0,0 +1 @@ +Huginn — neutral, sleepyzz diff --git a/cast/stickers/huginn/neutral-smile.svg b/cast/stickers/huginn/neutral-smile.svg new file mode 100644 index 0000000..f8fb13c --- /dev/null +++ b/cast/stickers/huginn/neutral-smile.svg @@ -0,0 +1 @@ +Huginn — neutral, smile diff --git a/cast/stickers/huginn/neutral-surprised.svg b/cast/stickers/huginn/neutral-surprised.svg new file mode 100644 index 0000000..0801b25 --- /dev/null +++ b/cast/stickers/huginn/neutral-surprised.svg @@ -0,0 +1 @@ +Huginn — neutral, surprised diff --git a/cast/stickers/huginn/neutral-worried.svg b/cast/stickers/huginn/neutral-worried.svg new file mode 100644 index 0000000..648cf35 --- /dev/null +++ b/cast/stickers/huginn/neutral-worried.svg @@ -0,0 +1 @@ +Huginn — neutral, worried diff --git a/cast/stickers/huginn/presenting-determined.svg b/cast/stickers/huginn/presenting-determined.svg new file mode 100644 index 0000000..eefb8f6 --- /dev/null +++ b/cast/stickers/huginn/presenting-determined.svg @@ -0,0 +1 @@ +Huginn — presenting, determined diff --git a/cast/stickers/huginn/presenting-grin.svg b/cast/stickers/huginn/presenting-grin.svg new file mode 100644 index 0000000..d3a6512 --- /dev/null +++ b/cast/stickers/huginn/presenting-grin.svg @@ -0,0 +1 @@ +Huginn — presenting, grin diff --git a/cast/stickers/huginn/presenting-happy.svg b/cast/stickers/huginn/presenting-happy.svg new file mode 100644 index 0000000..ddf4e93 --- /dev/null +++ b/cast/stickers/huginn/presenting-happy.svg @@ -0,0 +1 @@ +Huginn — presenting, happy diff --git a/cast/stickers/huginn/presenting-neutral.svg b/cast/stickers/huginn/presenting-neutral.svg new file mode 100644 index 0000000..f82f3d0 --- /dev/null +++ b/cast/stickers/huginn/presenting-neutral.svg @@ -0,0 +1 @@ +Huginn — presenting, neutral diff --git a/cast/stickers/huginn/presenting-sleepy.svg b/cast/stickers/huginn/presenting-sleepy.svg new file mode 100644 index 0000000..79bd482 --- /dev/null +++ b/cast/stickers/huginn/presenting-sleepy.svg @@ -0,0 +1 @@ +Huginn — presenting, sleepyzz diff --git a/cast/stickers/huginn/presenting-smile.svg b/cast/stickers/huginn/presenting-smile.svg new file mode 100644 index 0000000..b104e4f --- /dev/null +++ b/cast/stickers/huginn/presenting-smile.svg @@ -0,0 +1 @@ +Huginn — presenting, smile diff --git a/cast/stickers/huginn/presenting-surprised.svg b/cast/stickers/huginn/presenting-surprised.svg new file mode 100644 index 0000000..fb383eb --- /dev/null +++ b/cast/stickers/huginn/presenting-surprised.svg @@ -0,0 +1 @@ +Huginn — presenting, surprised diff --git a/cast/stickers/huginn/presenting-worried.svg b/cast/stickers/huginn/presenting-worried.svg new file mode 100644 index 0000000..cfa21a0 --- /dev/null +++ b/cast/stickers/huginn/presenting-worried.svg @@ -0,0 +1 @@ +Huginn — presenting, worried diff --git a/cast/stickers/huginn/surprised-determined.svg b/cast/stickers/huginn/surprised-determined.svg new file mode 100644 index 0000000..83202a9 --- /dev/null +++ b/cast/stickers/huginn/surprised-determined.svg @@ -0,0 +1 @@ +Huginn — surprised, determined diff --git a/cast/stickers/huginn/surprised-grin.svg b/cast/stickers/huginn/surprised-grin.svg new file mode 100644 index 0000000..b099415 --- /dev/null +++ b/cast/stickers/huginn/surprised-grin.svg @@ -0,0 +1 @@ +Huginn — surprised, grin diff --git a/cast/stickers/huginn/surprised-happy.svg b/cast/stickers/huginn/surprised-happy.svg new file mode 100644 index 0000000..a2d23fc --- /dev/null +++ b/cast/stickers/huginn/surprised-happy.svg @@ -0,0 +1 @@ +Huginn — surprised, happy diff --git a/cast/stickers/huginn/surprised-neutral.svg b/cast/stickers/huginn/surprised-neutral.svg new file mode 100644 index 0000000..5044b8b --- /dev/null +++ b/cast/stickers/huginn/surprised-neutral.svg @@ -0,0 +1 @@ +Huginn — surprised, neutral diff --git a/cast/stickers/huginn/surprised-sleepy.svg b/cast/stickers/huginn/surprised-sleepy.svg new file mode 100644 index 0000000..65ee554 --- /dev/null +++ b/cast/stickers/huginn/surprised-sleepy.svg @@ -0,0 +1 @@ +Huginn — surprised, sleepyzz diff --git a/cast/stickers/huginn/surprised-smile.svg b/cast/stickers/huginn/surprised-smile.svg new file mode 100644 index 0000000..c909296 --- /dev/null +++ b/cast/stickers/huginn/surprised-smile.svg @@ -0,0 +1 @@ +Huginn — surprised, smile diff --git a/cast/stickers/huginn/surprised-surprised.svg b/cast/stickers/huginn/surprised-surprised.svg new file mode 100644 index 0000000..acc4796 --- /dev/null +++ b/cast/stickers/huginn/surprised-surprised.svg @@ -0,0 +1 @@ +Huginn — surprised, surprised diff --git a/cast/stickers/huginn/surprised-worried.svg b/cast/stickers/huginn/surprised-worried.svg new file mode 100644 index 0000000..2e0f1eb --- /dev/null +++ b/cast/stickers/huginn/surprised-worried.svg @@ -0,0 +1 @@ +Huginn — surprised, worried diff --git a/cast/stickers/huginn/thinking-determined.svg b/cast/stickers/huginn/thinking-determined.svg new file mode 100644 index 0000000..3ae64ec --- /dev/null +++ b/cast/stickers/huginn/thinking-determined.svg @@ -0,0 +1 @@ +Huginn — thinking, determined diff --git a/cast/stickers/huginn/thinking-grin.svg b/cast/stickers/huginn/thinking-grin.svg new file mode 100644 index 0000000..6e57b52 --- /dev/null +++ b/cast/stickers/huginn/thinking-grin.svg @@ -0,0 +1 @@ +Huginn — thinking, grin diff --git a/cast/stickers/huginn/thinking-happy.svg b/cast/stickers/huginn/thinking-happy.svg new file mode 100644 index 0000000..9968554 --- /dev/null +++ b/cast/stickers/huginn/thinking-happy.svg @@ -0,0 +1 @@ +Huginn — thinking, happy diff --git a/cast/stickers/huginn/thinking-neutral.svg b/cast/stickers/huginn/thinking-neutral.svg new file mode 100644 index 0000000..95621c9 --- /dev/null +++ b/cast/stickers/huginn/thinking-neutral.svg @@ -0,0 +1 @@ +Huginn — thinking, neutral diff --git a/cast/stickers/huginn/thinking-sleepy.svg b/cast/stickers/huginn/thinking-sleepy.svg new file mode 100644 index 0000000..6db0472 --- /dev/null +++ b/cast/stickers/huginn/thinking-sleepy.svg @@ -0,0 +1 @@ +Huginn — thinking, sleepyzz diff --git a/cast/stickers/huginn/thinking-smile.svg b/cast/stickers/huginn/thinking-smile.svg new file mode 100644 index 0000000..4a99fcf --- /dev/null +++ b/cast/stickers/huginn/thinking-smile.svg @@ -0,0 +1 @@ +Huginn — thinking, smile diff --git a/cast/stickers/huginn/thinking-surprised.svg b/cast/stickers/huginn/thinking-surprised.svg new file mode 100644 index 0000000..7d924c6 --- /dev/null +++ b/cast/stickers/huginn/thinking-surprised.svg @@ -0,0 +1 @@ +Huginn — thinking, surprised diff --git a/cast/stickers/huginn/thinking-worried.svg b/cast/stickers/huginn/thinking-worried.svg new file mode 100644 index 0000000..7cc3f60 --- /dev/null +++ b/cast/stickers/huginn/thinking-worried.svg @@ -0,0 +1 @@ +Huginn — thinking, worried diff --git a/cast/stickers/huginn/waving-determined.svg b/cast/stickers/huginn/waving-determined.svg new file mode 100644 index 0000000..b98167d --- /dev/null +++ b/cast/stickers/huginn/waving-determined.svg @@ -0,0 +1 @@ +Huginn — waving, determined diff --git a/cast/stickers/huginn/waving-grin.svg b/cast/stickers/huginn/waving-grin.svg new file mode 100644 index 0000000..dd6aa9e --- /dev/null +++ b/cast/stickers/huginn/waving-grin.svg @@ -0,0 +1 @@ +Huginn — waving, grin diff --git a/cast/stickers/huginn/waving-happy.svg b/cast/stickers/huginn/waving-happy.svg new file mode 100644 index 0000000..1789714 --- /dev/null +++ b/cast/stickers/huginn/waving-happy.svg @@ -0,0 +1 @@ +Huginn — waving, happy diff --git a/cast/stickers/huginn/waving-neutral.svg b/cast/stickers/huginn/waving-neutral.svg new file mode 100644 index 0000000..55c22a0 --- /dev/null +++ b/cast/stickers/huginn/waving-neutral.svg @@ -0,0 +1 @@ +Huginn — waving, neutral diff --git a/cast/stickers/huginn/waving-sleepy.svg b/cast/stickers/huginn/waving-sleepy.svg new file mode 100644 index 0000000..ddbfbfe --- /dev/null +++ b/cast/stickers/huginn/waving-sleepy.svg @@ -0,0 +1 @@ +Huginn — waving, sleepyzz diff --git a/cast/stickers/huginn/waving-smile.svg b/cast/stickers/huginn/waving-smile.svg new file mode 100644 index 0000000..840ba83 --- /dev/null +++ b/cast/stickers/huginn/waving-smile.svg @@ -0,0 +1 @@ +Huginn — waving, smile diff --git a/cast/stickers/huginn/waving-surprised.svg b/cast/stickers/huginn/waving-surprised.svg new file mode 100644 index 0000000..9c618a4 --- /dev/null +++ b/cast/stickers/huginn/waving-surprised.svg @@ -0,0 +1 @@ +Huginn — waving, surprised diff --git a/cast/stickers/huginn/waving-worried.svg b/cast/stickers/huginn/waving-worried.svg new file mode 100644 index 0000000..7c434e5 --- /dev/null +++ b/cast/stickers/huginn/waving-worried.svg @@ -0,0 +1 @@ +Huginn — waving, worried diff --git a/cast/stickers/kiko/neutral-grin.svg b/cast/stickers/kiko/neutral-grin.svg new file mode 100644 index 0000000..76a7b00 --- /dev/null +++ b/cast/stickers/kiko/neutral-grin.svg @@ -0,0 +1 @@ +Kiko — neutral, grin diff --git a/cast/stickers/kiko/neutral-smile.svg b/cast/stickers/kiko/neutral-smile.svg new file mode 100644 index 0000000..45e03d9 --- /dev/null +++ b/cast/stickers/kiko/neutral-smile.svg @@ -0,0 +1 @@ +Kiko — neutral, smile diff --git a/cast/stickers/kiko/neutral-surprised.svg b/cast/stickers/kiko/neutral-surprised.svg new file mode 100644 index 0000000..ed8c4c8 --- /dev/null +++ b/cast/stickers/kiko/neutral-surprised.svg @@ -0,0 +1 @@ +Kiko — neutral, surprised diff --git a/cast/stickers/libby/cheer-determined.svg b/cast/stickers/libby/cheer-determined.svg new file mode 100644 index 0000000..a893ead --- /dev/null +++ b/cast/stickers/libby/cheer-determined.svg @@ -0,0 +1 @@ +Libby — cheer, determined diff --git a/cast/stickers/libby/cheer-grin.svg b/cast/stickers/libby/cheer-grin.svg new file mode 100644 index 0000000..132ffb8 --- /dev/null +++ b/cast/stickers/libby/cheer-grin.svg @@ -0,0 +1 @@ +Libby — cheer, grin diff --git a/cast/stickers/libby/cheer-happy.svg b/cast/stickers/libby/cheer-happy.svg new file mode 100644 index 0000000..8559e4c --- /dev/null +++ b/cast/stickers/libby/cheer-happy.svg @@ -0,0 +1 @@ +Libby — cheer, happy diff --git a/cast/stickers/libby/cheer-neutral.svg b/cast/stickers/libby/cheer-neutral.svg new file mode 100644 index 0000000..fa44ddc --- /dev/null +++ b/cast/stickers/libby/cheer-neutral.svg @@ -0,0 +1 @@ +Libby — cheer, neutral diff --git a/cast/stickers/libby/cheer-sleepy.svg b/cast/stickers/libby/cheer-sleepy.svg new file mode 100644 index 0000000..1eb5929 --- /dev/null +++ b/cast/stickers/libby/cheer-sleepy.svg @@ -0,0 +1 @@ +Libby — cheer, sleepyzz diff --git a/cast/stickers/libby/cheer-smile.svg b/cast/stickers/libby/cheer-smile.svg new file mode 100644 index 0000000..05d9018 --- /dev/null +++ b/cast/stickers/libby/cheer-smile.svg @@ -0,0 +1 @@ +Libby — cheer, smile diff --git a/cast/stickers/libby/cheer-surprised.svg b/cast/stickers/libby/cheer-surprised.svg new file mode 100644 index 0000000..d55e456 --- /dev/null +++ b/cast/stickers/libby/cheer-surprised.svg @@ -0,0 +1 @@ +Libby — cheer, surprised diff --git a/cast/stickers/libby/cheer-worried.svg b/cast/stickers/libby/cheer-worried.svg new file mode 100644 index 0000000..e462381 --- /dev/null +++ b/cast/stickers/libby/cheer-worried.svg @@ -0,0 +1 @@ +Libby — cheer, worried diff --git a/cast/stickers/libby/neutral-determined.svg b/cast/stickers/libby/neutral-determined.svg new file mode 100644 index 0000000..88e6e2f --- /dev/null +++ b/cast/stickers/libby/neutral-determined.svg @@ -0,0 +1 @@ +Libby — neutral, determined diff --git a/cast/stickers/libby/neutral-grin.svg b/cast/stickers/libby/neutral-grin.svg new file mode 100644 index 0000000..f181158 --- /dev/null +++ b/cast/stickers/libby/neutral-grin.svg @@ -0,0 +1 @@ +Libby — neutral, grin diff --git a/cast/stickers/libby/neutral-happy.svg b/cast/stickers/libby/neutral-happy.svg new file mode 100644 index 0000000..b61c0f3 --- /dev/null +++ b/cast/stickers/libby/neutral-happy.svg @@ -0,0 +1 @@ +Libby — neutral, happy diff --git a/cast/stickers/libby/neutral-neutral.svg b/cast/stickers/libby/neutral-neutral.svg new file mode 100644 index 0000000..6c5c93c --- /dev/null +++ b/cast/stickers/libby/neutral-neutral.svg @@ -0,0 +1 @@ +Libby — neutral, neutral diff --git a/cast/stickers/libby/neutral-sleepy.svg b/cast/stickers/libby/neutral-sleepy.svg new file mode 100644 index 0000000..c56e551 --- /dev/null +++ b/cast/stickers/libby/neutral-sleepy.svg @@ -0,0 +1 @@ +Libby — neutral, sleepyzz diff --git a/cast/stickers/libby/neutral-smile.svg b/cast/stickers/libby/neutral-smile.svg new file mode 100644 index 0000000..5557ad0 --- /dev/null +++ b/cast/stickers/libby/neutral-smile.svg @@ -0,0 +1 @@ +Libby — neutral, smile diff --git a/cast/stickers/libby/neutral-surprised.svg b/cast/stickers/libby/neutral-surprised.svg new file mode 100644 index 0000000..6a843fb --- /dev/null +++ b/cast/stickers/libby/neutral-surprised.svg @@ -0,0 +1 @@ +Libby — neutral, surprised diff --git a/cast/stickers/libby/neutral-worried.svg b/cast/stickers/libby/neutral-worried.svg new file mode 100644 index 0000000..7b5f066 --- /dev/null +++ b/cast/stickers/libby/neutral-worried.svg @@ -0,0 +1 @@ +Libby — neutral, worried diff --git a/cast/stickers/libby/presenting-determined.svg b/cast/stickers/libby/presenting-determined.svg new file mode 100644 index 0000000..f1a7be7 --- /dev/null +++ b/cast/stickers/libby/presenting-determined.svg @@ -0,0 +1 @@ +Libby — presenting, determined diff --git a/cast/stickers/libby/presenting-grin.svg b/cast/stickers/libby/presenting-grin.svg new file mode 100644 index 0000000..d451876 --- /dev/null +++ b/cast/stickers/libby/presenting-grin.svg @@ -0,0 +1 @@ +Libby — presenting, grin diff --git a/cast/stickers/libby/presenting-happy.svg b/cast/stickers/libby/presenting-happy.svg new file mode 100644 index 0000000..8f7679c --- /dev/null +++ b/cast/stickers/libby/presenting-happy.svg @@ -0,0 +1 @@ +Libby — presenting, happy diff --git a/cast/stickers/libby/presenting-neutral.svg b/cast/stickers/libby/presenting-neutral.svg new file mode 100644 index 0000000..4e8e5d2 --- /dev/null +++ b/cast/stickers/libby/presenting-neutral.svg @@ -0,0 +1 @@ +Libby — presenting, neutral diff --git a/cast/stickers/libby/presenting-sleepy.svg b/cast/stickers/libby/presenting-sleepy.svg new file mode 100644 index 0000000..a25f5ca --- /dev/null +++ b/cast/stickers/libby/presenting-sleepy.svg @@ -0,0 +1 @@ +Libby — presenting, sleepyzz diff --git a/cast/stickers/libby/presenting-smile.svg b/cast/stickers/libby/presenting-smile.svg new file mode 100644 index 0000000..c8e5992 --- /dev/null +++ b/cast/stickers/libby/presenting-smile.svg @@ -0,0 +1 @@ +Libby — presenting, smile diff --git a/cast/stickers/libby/presenting-surprised.svg b/cast/stickers/libby/presenting-surprised.svg new file mode 100644 index 0000000..67c8344 --- /dev/null +++ b/cast/stickers/libby/presenting-surprised.svg @@ -0,0 +1 @@ +Libby — presenting, surprised diff --git a/cast/stickers/libby/presenting-worried.svg b/cast/stickers/libby/presenting-worried.svg new file mode 100644 index 0000000..5dde429 --- /dev/null +++ b/cast/stickers/libby/presenting-worried.svg @@ -0,0 +1 @@ +Libby — presenting, worried diff --git a/cast/stickers/libby/surprised-determined.svg b/cast/stickers/libby/surprised-determined.svg new file mode 100644 index 0000000..62c5924 --- /dev/null +++ b/cast/stickers/libby/surprised-determined.svg @@ -0,0 +1 @@ +Libby — surprised, determined diff --git a/cast/stickers/libby/surprised-grin.svg b/cast/stickers/libby/surprised-grin.svg new file mode 100644 index 0000000..e338a01 --- /dev/null +++ b/cast/stickers/libby/surprised-grin.svg @@ -0,0 +1 @@ +Libby — surprised, grin diff --git a/cast/stickers/libby/surprised-happy.svg b/cast/stickers/libby/surprised-happy.svg new file mode 100644 index 0000000..2fd28b4 --- /dev/null +++ b/cast/stickers/libby/surprised-happy.svg @@ -0,0 +1 @@ +Libby — surprised, happy diff --git a/cast/stickers/libby/surprised-neutral.svg b/cast/stickers/libby/surprised-neutral.svg new file mode 100644 index 0000000..195ebb4 --- /dev/null +++ b/cast/stickers/libby/surprised-neutral.svg @@ -0,0 +1 @@ +Libby — surprised, neutral diff --git a/cast/stickers/libby/surprised-sleepy.svg b/cast/stickers/libby/surprised-sleepy.svg new file mode 100644 index 0000000..7822a8d --- /dev/null +++ b/cast/stickers/libby/surprised-sleepy.svg @@ -0,0 +1 @@ +Libby — surprised, sleepyzz diff --git a/cast/stickers/libby/surprised-smile.svg b/cast/stickers/libby/surprised-smile.svg new file mode 100644 index 0000000..090249d --- /dev/null +++ b/cast/stickers/libby/surprised-smile.svg @@ -0,0 +1 @@ +Libby — surprised, smile diff --git a/cast/stickers/libby/surprised-surprised.svg b/cast/stickers/libby/surprised-surprised.svg new file mode 100644 index 0000000..99a75d2 --- /dev/null +++ b/cast/stickers/libby/surprised-surprised.svg @@ -0,0 +1 @@ +Libby — surprised, surprised diff --git a/cast/stickers/libby/surprised-worried.svg b/cast/stickers/libby/surprised-worried.svg new file mode 100644 index 0000000..e4105d6 --- /dev/null +++ b/cast/stickers/libby/surprised-worried.svg @@ -0,0 +1 @@ +Libby — surprised, worried diff --git a/cast/stickers/libby/thinking-determined.svg b/cast/stickers/libby/thinking-determined.svg new file mode 100644 index 0000000..9fe09e3 --- /dev/null +++ b/cast/stickers/libby/thinking-determined.svg @@ -0,0 +1 @@ +Libby — thinking, determined diff --git a/cast/stickers/libby/thinking-grin.svg b/cast/stickers/libby/thinking-grin.svg new file mode 100644 index 0000000..5ca828b --- /dev/null +++ b/cast/stickers/libby/thinking-grin.svg @@ -0,0 +1 @@ +Libby — thinking, grin diff --git a/cast/stickers/libby/thinking-happy.svg b/cast/stickers/libby/thinking-happy.svg new file mode 100644 index 0000000..3171d2f --- /dev/null +++ b/cast/stickers/libby/thinking-happy.svg @@ -0,0 +1 @@ +Libby — thinking, happy diff --git a/cast/stickers/libby/thinking-neutral.svg b/cast/stickers/libby/thinking-neutral.svg new file mode 100644 index 0000000..cd98411 --- /dev/null +++ b/cast/stickers/libby/thinking-neutral.svg @@ -0,0 +1 @@ +Libby — thinking, neutral diff --git a/cast/stickers/libby/thinking-sleepy.svg b/cast/stickers/libby/thinking-sleepy.svg new file mode 100644 index 0000000..7f7f600 --- /dev/null +++ b/cast/stickers/libby/thinking-sleepy.svg @@ -0,0 +1 @@ +Libby — thinking, sleepyzz diff --git a/cast/stickers/libby/thinking-smile.svg b/cast/stickers/libby/thinking-smile.svg new file mode 100644 index 0000000..ea8b3d6 --- /dev/null +++ b/cast/stickers/libby/thinking-smile.svg @@ -0,0 +1 @@ +Libby — thinking, smile diff --git a/cast/stickers/libby/thinking-surprised.svg b/cast/stickers/libby/thinking-surprised.svg new file mode 100644 index 0000000..3d09cc2 --- /dev/null +++ b/cast/stickers/libby/thinking-surprised.svg @@ -0,0 +1 @@ +Libby — thinking, surprised diff --git a/cast/stickers/libby/thinking-worried.svg b/cast/stickers/libby/thinking-worried.svg new file mode 100644 index 0000000..8a4c7ef --- /dev/null +++ b/cast/stickers/libby/thinking-worried.svg @@ -0,0 +1 @@ +Libby — thinking, worried diff --git a/cast/stickers/libby/waving-determined.svg b/cast/stickers/libby/waving-determined.svg new file mode 100644 index 0000000..5e40326 --- /dev/null +++ b/cast/stickers/libby/waving-determined.svg @@ -0,0 +1 @@ +Libby — waving, determined diff --git a/cast/stickers/libby/waving-grin.svg b/cast/stickers/libby/waving-grin.svg new file mode 100644 index 0000000..6452626 --- /dev/null +++ b/cast/stickers/libby/waving-grin.svg @@ -0,0 +1 @@ +Libby — waving, grin diff --git a/cast/stickers/libby/waving-happy.svg b/cast/stickers/libby/waving-happy.svg new file mode 100644 index 0000000..27b43ed --- /dev/null +++ b/cast/stickers/libby/waving-happy.svg @@ -0,0 +1 @@ +Libby — waving, happy diff --git a/cast/stickers/libby/waving-neutral.svg b/cast/stickers/libby/waving-neutral.svg new file mode 100644 index 0000000..1418fd4 --- /dev/null +++ b/cast/stickers/libby/waving-neutral.svg @@ -0,0 +1 @@ +Libby — waving, neutral diff --git a/cast/stickers/libby/waving-sleepy.svg b/cast/stickers/libby/waving-sleepy.svg new file mode 100644 index 0000000..3abb83f --- /dev/null +++ b/cast/stickers/libby/waving-sleepy.svg @@ -0,0 +1 @@ +Libby — waving, sleepyzz diff --git a/cast/stickers/libby/waving-smile.svg b/cast/stickers/libby/waving-smile.svg new file mode 100644 index 0000000..9803460 --- /dev/null +++ b/cast/stickers/libby/waving-smile.svg @@ -0,0 +1 @@ +Libby — waving, smile diff --git a/cast/stickers/libby/waving-surprised.svg b/cast/stickers/libby/waving-surprised.svg new file mode 100644 index 0000000..b577cf9 --- /dev/null +++ b/cast/stickers/libby/waving-surprised.svg @@ -0,0 +1 @@ +Libby — waving, surprised diff --git a/cast/stickers/libby/waving-worried.svg b/cast/stickers/libby/waving-worried.svg new file mode 100644 index 0000000..7f94301 --- /dev/null +++ b/cast/stickers/libby/waving-worried.svg @@ -0,0 +1 @@ +Libby — waving, worried diff --git a/cast/stickers/metame/neutral-grin.svg b/cast/stickers/metame/neutral-grin.svg new file mode 100644 index 0000000..ee0f1d2 --- /dev/null +++ b/cast/stickers/metame/neutral-grin.svg @@ -0,0 +1 @@ +Metame — neutral, grin diff --git a/cast/stickers/metame/neutral-smile.svg b/cast/stickers/metame/neutral-smile.svg new file mode 100644 index 0000000..7cc20ad --- /dev/null +++ b/cast/stickers/metame/neutral-smile.svg @@ -0,0 +1 @@ +Metame — neutral, smile diff --git a/cast/stickers/metame/neutral-surprised.svg b/cast/stickers/metame/neutral-surprised.svg new file mode 100644 index 0000000..631b916 --- /dev/null +++ b/cast/stickers/metame/neutral-surprised.svg @@ -0,0 +1 @@ +Metame — neutral, surprised diff --git a/cast/stickers/mimir/neutral-grin.svg b/cast/stickers/mimir/neutral-grin.svg new file mode 100644 index 0000000..b1d0450 --- /dev/null +++ b/cast/stickers/mimir/neutral-grin.svg @@ -0,0 +1 @@ +Mimir — neutral, grin diff --git a/cast/stickers/mimir/neutral-smile.svg b/cast/stickers/mimir/neutral-smile.svg new file mode 100644 index 0000000..e7e094e --- /dev/null +++ b/cast/stickers/mimir/neutral-smile.svg @@ -0,0 +1 @@ +Mimir — neutral, smile diff --git a/cast/stickers/mimir/neutral-surprised.svg b/cast/stickers/mimir/neutral-surprised.svg new file mode 100644 index 0000000..0955091 --- /dev/null +++ b/cast/stickers/mimir/neutral-surprised.svg @@ -0,0 +1 @@ +Mimir — neutral, surprised diff --git a/cast/stickers/muninn/neutral-grin.svg b/cast/stickers/muninn/neutral-grin.svg new file mode 100644 index 0000000..1815166 --- /dev/null +++ b/cast/stickers/muninn/neutral-grin.svg @@ -0,0 +1 @@ +Muninn — neutral, grin diff --git a/cast/stickers/muninn/neutral-smile.svg b/cast/stickers/muninn/neutral-smile.svg new file mode 100644 index 0000000..8b346e0 --- /dev/null +++ b/cast/stickers/muninn/neutral-smile.svg @@ -0,0 +1 @@ +Muninn — neutral, smile diff --git a/cast/stickers/muninn/neutral-surprised.svg b/cast/stickers/muninn/neutral-surprised.svg new file mode 100644 index 0000000..ef710fd --- /dev/null +++ b/cast/stickers/muninn/neutral-surprised.svg @@ -0,0 +1 @@ +Muninn — neutral, surprised diff --git a/cast/stickers/nibu/neutral-grin.svg b/cast/stickers/nibu/neutral-grin.svg new file mode 100644 index 0000000..79846b5 --- /dev/null +++ b/cast/stickers/nibu/neutral-grin.svg @@ -0,0 +1 @@ +Nibu — neutral, grin diff --git a/cast/stickers/nibu/neutral-smile.svg b/cast/stickers/nibu/neutral-smile.svg new file mode 100644 index 0000000..c6aeb61 --- /dev/null +++ b/cast/stickers/nibu/neutral-smile.svg @@ -0,0 +1 @@ +Nibu — neutral, smile diff --git a/cast/stickers/nibu/neutral-surprised.svg b/cast/stickers/nibu/neutral-surprised.svg new file mode 100644 index 0000000..01b33b2 --- /dev/null +++ b/cast/stickers/nibu/neutral-surprised.svg @@ -0,0 +1 @@ +Nibu — neutral, surprised diff --git a/cast/stickers/norn/neutral-grin.svg b/cast/stickers/norn/neutral-grin.svg new file mode 100644 index 0000000..e756594 --- /dev/null +++ b/cast/stickers/norn/neutral-grin.svg @@ -0,0 +1 @@ +Norn — neutral, grin diff --git a/cast/stickers/norn/neutral-smile.svg b/cast/stickers/norn/neutral-smile.svg new file mode 100644 index 0000000..3c307d5 --- /dev/null +++ b/cast/stickers/norn/neutral-smile.svg @@ -0,0 +1 @@ +Norn — neutral, smile diff --git a/cast/stickers/norn/neutral-surprised.svg b/cast/stickers/norn/neutral-surprised.svg new file mode 100644 index 0000000..9baecbf --- /dev/null +++ b/cast/stickers/norn/neutral-surprised.svg @@ -0,0 +1 @@ +Norn — neutral, surprised diff --git a/cast/stickers/sai/neutral-grin.svg b/cast/stickers/sai/neutral-grin.svg new file mode 100644 index 0000000..1bc748c --- /dev/null +++ b/cast/stickers/sai/neutral-grin.svg @@ -0,0 +1 @@ +Sai — neutral, grin diff --git a/cast/stickers/sai/neutral-smile.svg b/cast/stickers/sai/neutral-smile.svg new file mode 100644 index 0000000..79d6c72 --- /dev/null +++ b/cast/stickers/sai/neutral-smile.svg @@ -0,0 +1 @@ +Sai — neutral, smile diff --git a/cast/stickers/sai/neutral-surprised.svg b/cast/stickers/sai/neutral-surprised.svg new file mode 100644 index 0000000..5a69dec --- /dev/null +++ b/cast/stickers/sai/neutral-surprised.svg @@ -0,0 +1 @@ +Sai — neutral, surprised diff --git a/cast/stickers/sleipnir/neutral-grin.svg b/cast/stickers/sleipnir/neutral-grin.svg new file mode 100644 index 0000000..f3c0f33 --- /dev/null +++ b/cast/stickers/sleipnir/neutral-grin.svg @@ -0,0 +1 @@ +Sleipnir — neutral, grin diff --git a/cast/stickers/sleipnir/neutral-smile.svg b/cast/stickers/sleipnir/neutral-smile.svg new file mode 100644 index 0000000..eaec9c3 --- /dev/null +++ b/cast/stickers/sleipnir/neutral-smile.svg @@ -0,0 +1 @@ +Sleipnir — neutral, smile diff --git a/cast/stickers/sleipnir/neutral-surprised.svg b/cast/stickers/sleipnir/neutral-surprised.svg new file mode 100644 index 0000000..cb965a1 --- /dev/null +++ b/cast/stickers/sleipnir/neutral-surprised.svg @@ -0,0 +1 @@ +Sleipnir — neutral, surprised diff --git a/cast/stickers/tengu/neutral-grin.svg b/cast/stickers/tengu/neutral-grin.svg new file mode 100644 index 0000000..fa37875 --- /dev/null +++ b/cast/stickers/tengu/neutral-grin.svg @@ -0,0 +1 @@ +Tengu — neutral, grin diff --git a/cast/stickers/tengu/neutral-smile.svg b/cast/stickers/tengu/neutral-smile.svg new file mode 100644 index 0000000..3c77153 --- /dev/null +++ b/cast/stickers/tengu/neutral-smile.svg @@ -0,0 +1 @@ +Tengu — neutral, smile diff --git a/cast/stickers/tengu/neutral-surprised.svg b/cast/stickers/tengu/neutral-surprised.svg new file mode 100644 index 0000000..2ef2a35 --- /dev/null +++ b/cast/stickers/tengu/neutral-surprised.svg @@ -0,0 +1 @@ +Tengu — neutral, surprised diff --git a/cast/stickers/void/neutral-grin.svg b/cast/stickers/void/neutral-grin.svg new file mode 100644 index 0000000..accc275 --- /dev/null +++ b/cast/stickers/void/neutral-grin.svg @@ -0,0 +1 @@ +Void — neutral, grin diff --git a/cast/stickers/void/neutral-smile.svg b/cast/stickers/void/neutral-smile.svg new file mode 100644 index 0000000..1dba0f1 --- /dev/null +++ b/cast/stickers/void/neutral-smile.svg @@ -0,0 +1 @@ +Void — neutral, smile diff --git a/cast/stickers/void/neutral-surprised.svg b/cast/stickers/void/neutral-surprised.svg new file mode 100644 index 0000000..992b42c --- /dev/null +++ b/cast/stickers/void/neutral-surprised.svg @@ -0,0 +1 @@ +Void — neutral, surprised diff --git a/cast/stickers/weksa/cheer-determined.svg b/cast/stickers/weksa/cheer-determined.svg new file mode 100644 index 0000000..ac34c1a --- /dev/null +++ b/cast/stickers/weksa/cheer-determined.svg @@ -0,0 +1 @@ +Weksa — cheer, determined diff --git a/cast/stickers/weksa/cheer-grin.svg b/cast/stickers/weksa/cheer-grin.svg new file mode 100644 index 0000000..1d1cbc0 --- /dev/null +++ b/cast/stickers/weksa/cheer-grin.svg @@ -0,0 +1 @@ +Weksa — cheer, grin diff --git a/cast/stickers/weksa/cheer-happy.svg b/cast/stickers/weksa/cheer-happy.svg new file mode 100644 index 0000000..fda0dc0 --- /dev/null +++ b/cast/stickers/weksa/cheer-happy.svg @@ -0,0 +1 @@ +Weksa — cheer, happy diff --git a/cast/stickers/weksa/cheer-neutral.svg b/cast/stickers/weksa/cheer-neutral.svg new file mode 100644 index 0000000..20fd33d --- /dev/null +++ b/cast/stickers/weksa/cheer-neutral.svg @@ -0,0 +1 @@ +Weksa — cheer, neutral diff --git a/cast/stickers/weksa/cheer-sleepy.svg b/cast/stickers/weksa/cheer-sleepy.svg new file mode 100644 index 0000000..93e5b1c --- /dev/null +++ b/cast/stickers/weksa/cheer-sleepy.svg @@ -0,0 +1 @@ +Weksa — cheer, sleepyzz diff --git a/cast/stickers/weksa/cheer-smile.svg b/cast/stickers/weksa/cheer-smile.svg new file mode 100644 index 0000000..32e1837 --- /dev/null +++ b/cast/stickers/weksa/cheer-smile.svg @@ -0,0 +1 @@ +Weksa — cheer, smile diff --git a/cast/stickers/weksa/cheer-surprised.svg b/cast/stickers/weksa/cheer-surprised.svg new file mode 100644 index 0000000..ce45940 --- /dev/null +++ b/cast/stickers/weksa/cheer-surprised.svg @@ -0,0 +1 @@ +Weksa — cheer, surprised diff --git a/cast/stickers/weksa/cheer-worried.svg b/cast/stickers/weksa/cheer-worried.svg new file mode 100644 index 0000000..5b4305f --- /dev/null +++ b/cast/stickers/weksa/cheer-worried.svg @@ -0,0 +1 @@ +Weksa — cheer, worried diff --git a/cast/stickers/weksa/neutral-determined.svg b/cast/stickers/weksa/neutral-determined.svg new file mode 100644 index 0000000..796706b --- /dev/null +++ b/cast/stickers/weksa/neutral-determined.svg @@ -0,0 +1 @@ +Weksa — neutral, determined diff --git a/cast/stickers/weksa/neutral-grin.svg b/cast/stickers/weksa/neutral-grin.svg new file mode 100644 index 0000000..f1bcf9e --- /dev/null +++ b/cast/stickers/weksa/neutral-grin.svg @@ -0,0 +1 @@ +Weksa — neutral, grin diff --git a/cast/stickers/weksa/neutral-happy.svg b/cast/stickers/weksa/neutral-happy.svg new file mode 100644 index 0000000..3ce335f --- /dev/null +++ b/cast/stickers/weksa/neutral-happy.svg @@ -0,0 +1 @@ +Weksa — neutral, happy diff --git a/cast/stickers/weksa/neutral-neutral.svg b/cast/stickers/weksa/neutral-neutral.svg new file mode 100644 index 0000000..96b2be1 --- /dev/null +++ b/cast/stickers/weksa/neutral-neutral.svg @@ -0,0 +1 @@ +Weksa — neutral, neutral diff --git a/cast/stickers/weksa/neutral-sleepy.svg b/cast/stickers/weksa/neutral-sleepy.svg new file mode 100644 index 0000000..463e31e --- /dev/null +++ b/cast/stickers/weksa/neutral-sleepy.svg @@ -0,0 +1 @@ +Weksa — neutral, sleepyzz diff --git a/cast/stickers/weksa/neutral-smile.svg b/cast/stickers/weksa/neutral-smile.svg new file mode 100644 index 0000000..54b3470 --- /dev/null +++ b/cast/stickers/weksa/neutral-smile.svg @@ -0,0 +1 @@ +Weksa — neutral, smile diff --git a/cast/stickers/weksa/neutral-surprised.svg b/cast/stickers/weksa/neutral-surprised.svg new file mode 100644 index 0000000..4f7ec4a --- /dev/null +++ b/cast/stickers/weksa/neutral-surprised.svg @@ -0,0 +1 @@ +Weksa — neutral, surprised diff --git a/cast/stickers/weksa/neutral-worried.svg b/cast/stickers/weksa/neutral-worried.svg new file mode 100644 index 0000000..99c8271 --- /dev/null +++ b/cast/stickers/weksa/neutral-worried.svg @@ -0,0 +1 @@ +Weksa — neutral, worried diff --git a/cast/stickers/weksa/presenting-determined.svg b/cast/stickers/weksa/presenting-determined.svg new file mode 100644 index 0000000..863ab75 --- /dev/null +++ b/cast/stickers/weksa/presenting-determined.svg @@ -0,0 +1 @@ +Weksa — presenting, determined diff --git a/cast/stickers/weksa/presenting-grin.svg b/cast/stickers/weksa/presenting-grin.svg new file mode 100644 index 0000000..f8e3bce --- /dev/null +++ b/cast/stickers/weksa/presenting-grin.svg @@ -0,0 +1 @@ +Weksa — presenting, grin diff --git a/cast/stickers/weksa/presenting-happy.svg b/cast/stickers/weksa/presenting-happy.svg new file mode 100644 index 0000000..cbecd65 --- /dev/null +++ b/cast/stickers/weksa/presenting-happy.svg @@ -0,0 +1 @@ +Weksa — presenting, happy diff --git a/cast/stickers/weksa/presenting-neutral.svg b/cast/stickers/weksa/presenting-neutral.svg new file mode 100644 index 0000000..8133b1d --- /dev/null +++ b/cast/stickers/weksa/presenting-neutral.svg @@ -0,0 +1 @@ +Weksa — presenting, neutral diff --git a/cast/stickers/weksa/presenting-sleepy.svg b/cast/stickers/weksa/presenting-sleepy.svg new file mode 100644 index 0000000..0f9f082 --- /dev/null +++ b/cast/stickers/weksa/presenting-sleepy.svg @@ -0,0 +1 @@ +Weksa — presenting, sleepyzz diff --git a/cast/stickers/weksa/presenting-smile.svg b/cast/stickers/weksa/presenting-smile.svg new file mode 100644 index 0000000..f481d9e --- /dev/null +++ b/cast/stickers/weksa/presenting-smile.svg @@ -0,0 +1 @@ +Weksa — presenting, smile diff --git a/cast/stickers/weksa/presenting-surprised.svg b/cast/stickers/weksa/presenting-surprised.svg new file mode 100644 index 0000000..c321272 --- /dev/null +++ b/cast/stickers/weksa/presenting-surprised.svg @@ -0,0 +1 @@ +Weksa — presenting, surprised diff --git a/cast/stickers/weksa/presenting-worried.svg b/cast/stickers/weksa/presenting-worried.svg new file mode 100644 index 0000000..41994ec --- /dev/null +++ b/cast/stickers/weksa/presenting-worried.svg @@ -0,0 +1 @@ +Weksa — presenting, worried diff --git a/cast/stickers/weksa/surprised-determined.svg b/cast/stickers/weksa/surprised-determined.svg new file mode 100644 index 0000000..47a40c8 --- /dev/null +++ b/cast/stickers/weksa/surprised-determined.svg @@ -0,0 +1 @@ +Weksa — surprised, determined diff --git a/cast/stickers/weksa/surprised-grin.svg b/cast/stickers/weksa/surprised-grin.svg new file mode 100644 index 0000000..2abaa05 --- /dev/null +++ b/cast/stickers/weksa/surprised-grin.svg @@ -0,0 +1 @@ +Weksa — surprised, grin diff --git a/cast/stickers/weksa/surprised-happy.svg b/cast/stickers/weksa/surprised-happy.svg new file mode 100644 index 0000000..434b072 --- /dev/null +++ b/cast/stickers/weksa/surprised-happy.svg @@ -0,0 +1 @@ +Weksa — surprised, happy diff --git a/cast/stickers/weksa/surprised-neutral.svg b/cast/stickers/weksa/surprised-neutral.svg new file mode 100644 index 0000000..ab2fed5 --- /dev/null +++ b/cast/stickers/weksa/surprised-neutral.svg @@ -0,0 +1 @@ +Weksa — surprised, neutral diff --git a/cast/stickers/weksa/surprised-sleepy.svg b/cast/stickers/weksa/surprised-sleepy.svg new file mode 100644 index 0000000..67f949d --- /dev/null +++ b/cast/stickers/weksa/surprised-sleepy.svg @@ -0,0 +1 @@ +Weksa — surprised, sleepyzz diff --git a/cast/stickers/weksa/surprised-smile.svg b/cast/stickers/weksa/surprised-smile.svg new file mode 100644 index 0000000..b9f652d --- /dev/null +++ b/cast/stickers/weksa/surprised-smile.svg @@ -0,0 +1 @@ +Weksa — surprised, smile diff --git a/cast/stickers/weksa/surprised-surprised.svg b/cast/stickers/weksa/surprised-surprised.svg new file mode 100644 index 0000000..9328c81 --- /dev/null +++ b/cast/stickers/weksa/surprised-surprised.svg @@ -0,0 +1 @@ +Weksa — surprised, surprised diff --git a/cast/stickers/weksa/surprised-worried.svg b/cast/stickers/weksa/surprised-worried.svg new file mode 100644 index 0000000..523aa39 --- /dev/null +++ b/cast/stickers/weksa/surprised-worried.svg @@ -0,0 +1 @@ +Weksa — surprised, worried diff --git a/cast/stickers/weksa/thinking-determined.svg b/cast/stickers/weksa/thinking-determined.svg new file mode 100644 index 0000000..31c4533 --- /dev/null +++ b/cast/stickers/weksa/thinking-determined.svg @@ -0,0 +1 @@ +Weksa — thinking, determined diff --git a/cast/stickers/weksa/thinking-grin.svg b/cast/stickers/weksa/thinking-grin.svg new file mode 100644 index 0000000..6f7b437 --- /dev/null +++ b/cast/stickers/weksa/thinking-grin.svg @@ -0,0 +1 @@ +Weksa — thinking, grin diff --git a/cast/stickers/weksa/thinking-happy.svg b/cast/stickers/weksa/thinking-happy.svg new file mode 100644 index 0000000..55c7bca --- /dev/null +++ b/cast/stickers/weksa/thinking-happy.svg @@ -0,0 +1 @@ +Weksa — thinking, happy diff --git a/cast/stickers/weksa/thinking-neutral.svg b/cast/stickers/weksa/thinking-neutral.svg new file mode 100644 index 0000000..594536a --- /dev/null +++ b/cast/stickers/weksa/thinking-neutral.svg @@ -0,0 +1 @@ +Weksa — thinking, neutral diff --git a/cast/stickers/weksa/thinking-sleepy.svg b/cast/stickers/weksa/thinking-sleepy.svg new file mode 100644 index 0000000..5317dc9 --- /dev/null +++ b/cast/stickers/weksa/thinking-sleepy.svg @@ -0,0 +1 @@ +Weksa — thinking, sleepyzz diff --git a/cast/stickers/weksa/thinking-smile.svg b/cast/stickers/weksa/thinking-smile.svg new file mode 100644 index 0000000..b8baf3a --- /dev/null +++ b/cast/stickers/weksa/thinking-smile.svg @@ -0,0 +1 @@ +Weksa — thinking, smile diff --git a/cast/stickers/weksa/thinking-surprised.svg b/cast/stickers/weksa/thinking-surprised.svg new file mode 100644 index 0000000..35a67b2 --- /dev/null +++ b/cast/stickers/weksa/thinking-surprised.svg @@ -0,0 +1 @@ +Weksa — thinking, surprised diff --git a/cast/stickers/weksa/thinking-worried.svg b/cast/stickers/weksa/thinking-worried.svg new file mode 100644 index 0000000..092bcdc --- /dev/null +++ b/cast/stickers/weksa/thinking-worried.svg @@ -0,0 +1 @@ +Weksa — thinking, worried diff --git a/cast/stickers/weksa/waving-determined.svg b/cast/stickers/weksa/waving-determined.svg new file mode 100644 index 0000000..07b8b5e --- /dev/null +++ b/cast/stickers/weksa/waving-determined.svg @@ -0,0 +1 @@ +Weksa — waving, determined diff --git a/cast/stickers/weksa/waving-grin.svg b/cast/stickers/weksa/waving-grin.svg new file mode 100644 index 0000000..b998659 --- /dev/null +++ b/cast/stickers/weksa/waving-grin.svg @@ -0,0 +1 @@ +Weksa — waving, grin diff --git a/cast/stickers/weksa/waving-happy.svg b/cast/stickers/weksa/waving-happy.svg new file mode 100644 index 0000000..0df2150 --- /dev/null +++ b/cast/stickers/weksa/waving-happy.svg @@ -0,0 +1 @@ +Weksa — waving, happy diff --git a/cast/stickers/weksa/waving-neutral.svg b/cast/stickers/weksa/waving-neutral.svg new file mode 100644 index 0000000..d9e9ffb --- /dev/null +++ b/cast/stickers/weksa/waving-neutral.svg @@ -0,0 +1 @@ +Weksa — waving, neutral diff --git a/cast/stickers/weksa/waving-sleepy.svg b/cast/stickers/weksa/waving-sleepy.svg new file mode 100644 index 0000000..254afc3 --- /dev/null +++ b/cast/stickers/weksa/waving-sleepy.svg @@ -0,0 +1 @@ +Weksa — waving, sleepyzz diff --git a/cast/stickers/weksa/waving-smile.svg b/cast/stickers/weksa/waving-smile.svg new file mode 100644 index 0000000..91fe330 --- /dev/null +++ b/cast/stickers/weksa/waving-smile.svg @@ -0,0 +1 @@ +Weksa — waving, smile diff --git a/cast/stickers/weksa/waving-surprised.svg b/cast/stickers/weksa/waving-surprised.svg new file mode 100644 index 0000000..23f905b --- /dev/null +++ b/cast/stickers/weksa/waving-surprised.svg @@ -0,0 +1 @@ +Weksa — waving, surprised diff --git a/cast/stickers/weksa/waving-worried.svg b/cast/stickers/weksa/waving-worried.svg new file mode 100644 index 0000000..f386c22 --- /dev/null +++ b/cast/stickers/weksa/waving-worried.svg @@ -0,0 +1 @@ +Weksa — waving, worried diff --git a/cast/stickers/ymir/neutral-grin.svg b/cast/stickers/ymir/neutral-grin.svg new file mode 100644 index 0000000..5706963 --- /dev/null +++ b/cast/stickers/ymir/neutral-grin.svg @@ -0,0 +1 @@ +Ymir — neutral, grin diff --git a/cast/stickers/ymir/neutral-smile.svg b/cast/stickers/ymir/neutral-smile.svg new file mode 100644 index 0000000..bf4747b --- /dev/null +++ b/cast/stickers/ymir/neutral-smile.svg @@ -0,0 +1 @@ +Ymir — neutral, smile diff --git a/cast/stickers/ymir/neutral-surprised.svg b/cast/stickers/ymir/neutral-surprised.svg new file mode 100644 index 0000000..b51720a --- /dev/null +++ b/cast/stickers/ymir/neutral-surprised.svg @@ -0,0 +1 @@ +Ymir — neutral, surprised