Magical gene / fields and regions

Hued Pangare

Pangare's own region map, painted in a colour the line carries instead of washed out to cream — muzzle, eye rings, belly, flank and the insides of the legs, with no edge anywhere on it.

What it can come out as

OutcomeCarrying
Extreme Hued PangareHpa/Hpa
Classic Hued PangareHpa/n
Wild typen/n

The two are not different shapes. They are the same map turned up further, which is exactly what ordinary pangare does between a trace and a strong one: one copy lands about where a moderate mealy horse sits — muzzle, eye rings, an underline up the belly, soft patches behind the elbow and a little way up the inside of each leg — and two copies take it up the flanks and the sides of the neck, over the cheek and jaw, and most of the way up the legs.

The mane, tail, ears and topline are left alone on both. Pangare is a soft-parts trait and so is this; a horse with a coloured mane has something else.

Crossing two of them

Finding one

About 1 in 833 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
Hpa/HpaExtreme Hued Pangare0.006% — 1 in 16,667
Hpa/nClassic Hued Pangare0.114% — 1 in 877
n/nWild type99.88%

Its gene carrot

The class

common/genetics/genes/HuedPangareGene.java — a Java gene, and one of the few that is a class rather than a gene file. Registered in Genes immediately after PangareGene, because that is whose painter it borrows.

Keyhorsegenetics.hued_pangare
Phasemagical — it adds signed colour in phase 3, after the pigment has resolved
Priority254 — where it sits in the one (priority, key) paint order
AllelesHpa · n
Varies per horsehue and expression, drawn once off the expressing allele copy, so a foal that inherits the copy inherits the colour and the strength
Built fromPangareGene.mealyCoverage × a TOWARD move on the visible colour

Why it is not a gene file

It was one, and the file was an approximation of pangare: a Y band up the belly and a second one down the neck, tuned by eye until it looked about right. It never was about right, because pangare is not a band. It is a region map with nine named weights on it — muzzle, eye ring, jaw, belly, flank, elbow, inner leg, outer leg, lower neck — each hung on its own shape, plus a mottle so the boundary comes out as hairs rather than as an airbrush.

Two hand-tuned copies of that would have drifted apart the first time either was touched, and the drift would have been invisible: both horses would still have looked like mealy horses. So the shared field was factored out of pangare's own painter into PangareGene.mealyCoverage, and this gene calls it. Move where pangare sits and this moves with it, in the same commit, with nothing to remember.

Ordinary pangare is not changed by any of this — the method came out of its painter and it paints exactly what it painted before.

What it paints

One pass over every texel. mealyCoverage answers "how mealy is this point", 0 to 1; the gene's dosage and its stored expression offset scale that; and what is left walks the texel's visible colour 86% of the way to hsl(hue, 0.78, 0.58).

Reading the visible colour rather than the stored one is the TOWARD move, and it is what lets one hue land correctly on a bay and on a cremello: the number stored in the sheet is not what the horse looks like once the white template shows through it.

Dosage2.0 per copy, on pangare's own 0–MAX_DOSAGE scale — so two copies reach the top of it and one lands a little under half way
Strength86% of the way to the hue, short of 100 so the coat's own shading survives underneath
Untouchedmane, tail, ears, topline — regionWeight returns 0 there