Magical gene / magical coat genes
Dripwork
A scatter of ringed marks across the barrel and down the legs, each with a drip hanging under it, and long runs of ink drawn down toward the hooves as though the whole thing were still wet. The coloured form does the same in one saturated ink instead of black.
What it can come out as
| Outcome | Carrying |
|---|---|
| Dripwork | Dw/Dw · Dw/Dx · Dw/n |
| Coloured dripwork | Dx/Dx |
| Wild type | Dx/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 |
|---|---|---|
Dw/Dw | Dripwork | 0.002% — 1 in 50,000 |
Dw/Dx | Dripwork | 0.008% — 1 in 12,500 |
Dw/n | Dripwork | 0.038% — 1 in 2,632 |
Dx/Dx | Coloured dripwork | 0.008% — 1 in 12,500 |
n/n | Wild type | 99.944% |
Its gene carrot
The file
common/src/main/resources/horsegenetics/genes/dripwork.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.dripwork |
|---|---|
| Phase | magical — it adds signed colour in phase 3, after the pigment has resolved |
| Priority | 124 — where it sits in the one (priority, key) paint order |
| Alleles | Dw · Dx · n |
| Varies per horse | 5 values drawn once off the expressing allele copy, so a foal that inherits the copy inherits the look |
| Built from | AXIS, RINGS, SPOTS, STROKES, TINT, TOWARD |
Why it is built this way
The source was an SVG: two flat colours, near-black on off-white, about 12 KB - the smallest of the set and the only one already at poster weight. Rings with solid centres, small solid dots, and thick drips running down off the larger marks.
The ring and its pupil are RINGS and SPOTS on one seed, one spacing and one vary, which is what should put the pupil in the middle of its own ring - RINGS is documented as the same scatter drawn hollow. That is the one assumption in this file worth checking with coverage.mjs before trusting it: if the pupils land beside the rings rather than inside them, the two masks do not share a lattice and the pupil has to be built as a second RINGS at a small radius instead.
The drip is three SPOTS draws on that same lattice at growing offsetY, MAXed together. offsetY moves where a mask reads the cell centre from WITHOUT moving the cell, so all three stay attached to the mark they hang from rather than becoming their own scatter. Softness at 0.16 is what fuses the three into a continuous run rather than a dotted line - wind it much lower and the drip beads.
No stretch anywhere, deliberately. A stretched drip would read better, but stretch divides the sample before the lattice walk, so a draw with a different stretch is on a DIFFERENT lattice - and the drip would come apart from its own ring. Every layer of one compound element shares its stretch or the element scatters.
Sizing against the wiki's floors: the ring is radius 2.4 on thickness 0.9 with softness 0.12, all clear of the 1.3 / 0.7 / half-the-thickness minimums. markSpacing bottoms out at 6.2 against an outer radius of about 2.85, so there is over a body unit of clear ground between neighbouring rings even at the tightest roll.
The loose dots run on their own seed and spacing because in the source they have nothing to do with where the rings fell - they are thrown, not placed.
Three changes off looking at it. The white ground is gone - it covered the whole horse at 84% opacity and turned every base coat into the same pale grey, which is a lot of horse to spend on a backdrop for a scatter of small marks. The marks are on the BODY and the LEGS only rather than everywhere, and there are fewer of them: chance 0.7 down to 0.4 on the ringed marks and the loose dots from spacing 4 at chance 0.35 to spacing 7.5 at 0.18. And the runs are new - STROKES on Y, weighted to the lower half of the body by an inverted AXIS, which is what makes them read as ink running down rather than as a stripe pattern.
The loose dots were thinned to spacing 7.5 at chance 0.18 when the marks were thinned, and at that pitch they stopped landing on the horse at all - DeadLayerTest caught the layer painting nothing on any base coat. 5.5 at 0.32 is still far fewer than the 4.0 at 0.35 it started with, and it is actually there.
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.
Dripwork
Black rings with solid centres sit on a near-white ground, each trailing a drip downward, with smaller solid dots scattered between them.
Layer order puts the drip UNDER the ring: the drip's top draw overlaps the ring's lower edge, and painting it second would leave a visible seam across the ring where two nominally identical inks met at different coverages.
- the drip hanging under each mark —
SPOTS×SPOTS×SPOTS, painted withTINT - the ring —
RINGS, painted withTINT - the pupil inside the ring —
SPOTS, painted withTINT - the loose dots between the rings —
SPOTS, painted withTINT - and the ink running down toward the hooves —
STROKES×AXIS, painted withTINT
Coloured dripwork
The same rings and drips in an ink this line of horses carries.
The recessive coloured half of the usual pair. The ground stays near-white: the whole graphic depends on the ink being much darker than what it sits on, and a hue knob on the ground can roll a value that leaves the rings invisible. Lightness 0.18 on the ink for the same reason.
- the drip hanging under each mark —
SPOTS×SPOTS×SPOTS, painted withTOWARD - the ring —
RINGS, painted withTOWARD - the pupil inside the ring —
SPOTS, painted withTOWARD - the loose dots between the rings —
SPOTS, painted withTOWARD - and the ink running down toward the hooves —
STROKES×AXIS, painted withTOWARD
Wild type
Unmarked.
Paints nothing.