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
| Outcome | Carrying |
|---|---|
| Agate eye | Ag/Ag · Ag/ag · Ag/n |
| Agate eye, coloured | ag/ag |
| Wild type | ag/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 pair | Shows as | How often |
|---|---|---|
Ag/Ag | Agate eye | 0.002% — 1 in 50,000 |
Ag/ag | Agate eye | 0.008% — 1 in 12,500 |
Ag/n | Agate eye | 0.038% — 1 in 2,632 |
ag/ag | Agate eye, coloured | 0.008% — 1 in 12,500 |
n/n | Wild type | 99.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.
| Key | horsegenetics.agate_eye |
|---|---|
| Phase | magical — it adds signed colour in phase 3, after the pigment has resolved |
| Priority | 325 — where it sits in the one (priority, key) paint order |
| Alleles | Ag · ag · n |
| Varies per horse | 2 values drawn once off the expressing allele copy, so a foal that inherits the copy inherits the look |
| Built from | AXIS, 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.
- pale outer rim —
AXIS×SPOTS×RINGS inverted×RINGS inverted×SPOTS inverted, painted withTOWARD - outer band —
AXIS×RINGS, painted withTOWARD - inner band —
AXIS×RINGS×SPOTS inverted, painted withTOWARD - dark core —
AXIS×SPOTS, painted withTOWARD
Agate eye, coloured
The same banded eyes in whatever colour this line runs to.
- pale outer rim —
AXIS×SPOTS×RINGS inverted×RINGS inverted×SPOTS inverted, painted withTOWARD - outer band —
AXIS×RINGS, painted withTOWARD - inner band —
AXIS×RINGS×SPOTS inverted, painted withTOWARD - dark core —
AXIS×SPOTS, painted withTOWARD
Wild type
No agate.
Paints nothing.