Magical gene / spots and rings

Agate Eye

A few banded agate eyes sit on the haunch - a pale rim, two bands and a dark core, like a cut geode.

What it can come out as

OutcomeCarrying
Agate eyeAg/Ag · Ag/ag · Ag/n
Agate eye, colouredag/ag
Wild typeag/n · n/n

How each one is actually drawn - region by region, and the layers it is built from - is on the coding tab.

Crossing two of them

Finding one

About 1 in 1,786 wild horses is born showing this. That is the whole of the supply: catch one, or make one with the carrot below. Breeds set their own pools and a breed built around this gene will carry it far more often than the wild population does.

Wild pairShows asHow often
Ag/AgAgate eye0.002% — 1 in 50,000
Ag/agAgate eye0.008% — 1 in 12,500
Ag/nAgate eye0.038% — 1 in 2,632
ag/agAgate eye, coloured0.008% — 1 in 12,500
n/nWild type99.944%

Its gene carrot

The file

common/src/main/resources/horsegenetics/genes/agate_eye.json — a data-driven gene, not a Java class. It is listed in the index.json beside it and registered by Genes' class initialiser at startup.

Keyhorsegenetics.agate_eye
Phasemagical — it adds signed colour in phase 3, after the pigment has resolved
Priority325 — where it sits in the one (priority, key) paint order
AllelesAg · ag · n
Varies per horse2 values drawn once off the expressing allele copy, so a foal that inherits the copy inherits the look
Built fromAXIS, RINGS, SPOTS, TOWARD

Why it is built this way

Source was a slab of blue banded agate: packed concentric rings around a dark core. The bands are RINGS rather than a colour ramp because agate banding has a hard boundary between colours, and nothing noise-derived gives you one.

Arrived at priority 120. Moved to 325: spots and rings, after moth eyes (324) - a few banded eyes on the haunch. The arriving number was taken, or sat in a band whose family does not describe this marking - priority is both the paint order and the family the sidebar files a gene under.

LAYERS MADE DISJOINT on the way in. The eyes came out as pale blurs with no bands in them - the two blue bands were being added to the pale rim beneath them rather than painted over it. The rim now leaves holes where the bands and the core go; the bands and the core never overlapped each other. A gene's layers do not stack: each measures its delta against the colour the GENE started from and the deltas are summed (gap 169), so nested marks at full strength add up and clamp. Each layer now multiplies in an inverted copy of every shape painted after it, which for hard-edged masks is exactly the picture stacking would have given - the order in the file still reads as the order of the marking, it just no longer has to be the mechanism. The core also went from radius 0.8 to 1.3, and now fills everything inside the inner band rather than floating in a pale gap within it - the band leaves a hole for it the way the rim leaves holes for both bands. At 0.8, and again at 1.0, it landed on the skin so rarely that no horse the check tried showed one: a spot on a three-dimensional lattice only reaches the surface where its centre is within its radius of it, so how often a centre mark shows falls away roughly as the cube of its size.

chance went from 0.5 to 0.85 on every mask (they must match, or the bands stop being concentric with the rim). At 0.5, three horses in eight rendered with no eye on the near haunch at all - the haunch only holds a cell or two at spacing 9, so half of them empty often means all of them. It is still a few eyes; it is no longer sometimes none.

What it paints

Each outcome, described the way the gene file describes it, and then the layers that draw it in the order they are painted. The prose is the part a reader checks a bake against; the list underneath is what the engine actually did.

Agate eye

Two or three banded blue eyes on the haunch, each ringed pale and cored dark.

Four draws on one seed and one spacing, which is what keeps them concentric. vary is set explicitly on all four rather than left at the per-mask default, so a cell that comes out large comes out large in every band instead of tearing its core out of its rings.

chance 0.5 at spacing 9 is the whole of the restraint here: it leaves roughly two or three marks on the haunch rather than tiling it.

  1. pale outer rim — AXIS × SPOTS × RINGS inverted × RINGS inverted × SPOTS inverted, painted with TOWARD
  2. outer band — AXIS × RINGS, painted with TOWARD
  3. inner band — AXIS × RINGS × SPOTS inverted, painted with TOWARD
  4. dark core — AXIS × SPOTS, painted with TOWARD

Agate eye, coloured

The same banded eyes in whatever colour this line runs to.

  1. pale outer rim — AXIS × SPOTS × RINGS inverted × RINGS inverted × SPOTS inverted, painted with TOWARD
  2. outer band — AXIS × RINGS, painted with TOWARD
  3. inner band — AXIS × RINGS × SPOTS inverted, painted with TOWARD
  4. dark core — AXIS × SPOTS, painted with TOWARD

Wild type

No agate.

Paints nothing.