Magical gene / fields and regions

Taper Flame

A candle flame stood on the barrel: a dark outer skin, a brighter body inside it, a pale foot and one small spark near the tip.

What it can come out as

OutcomeCarrying
Pale flameTf/Tf · Tf/Tfb · Tf/Tfc · Tf/n
Black flameTfb/Tfb · Tfb/Tfc · Tfb/n
Coloured flameTfc/Tfc
Wild typeTfc/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
Tf/TfPale flame0.002% — 1 in 50,000
Tf/TfbPale flame0.0027% — 1 in 37,495
Tf/TfcPale flame0.0027% — 1 in 37,495
Tf/nPale flame0.038% — 1 in 2,632
Tfb/TfbBlack flame0.0027% — 1 in 37,495
Tfb/TfcBlack flame0.0027% — 1 in 37,495
Tfb/nBlack flame0.0027% — 1 in 37,495
Tfc/TfcColoured flame0.0027% — 1 in 37,495
n/nWild type99.944%

Its gene carrot

The file

common/src/main/resources/horsegenetics/genes/taper_flame.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.taper_flame
Phasemagical — it adds signed colour in phase 3, after the pigment has resolved
Priority295 — where it sits in the one (priority, key) paint order
AllelesTf · Tfb · Tfc · n
Varies per horse3 values drawn once off the expressing allele copy, so a foal that inherits the copy inherits the look
Built fromPARTS, SVG, TOWARD

Why it is built this way

The d strings are pasted verbatim out of the traced SVG - every command, both cases, all subpaths, fillRule evenodd as the artist's file declared it. Paths were SELECTED (the tracer emits dozens per drawing); none was re-typed or re-pointed.

Originally placed with originU/originV 0.27/0.338 (originU is now the posU knob - see the note below) and sizeU/sizeV 0.38/0.273 in body space, so the viewport is x 11.1-26.7 and y 11.4-20.6 - the full height of BODY (x 7.5-29.5, y 11-21) and about two thirds of its length, with clearance on every side. It is sized to the barrel's HEIGHT because every drawing here except the trillium is portrait and meet fits the tall side first; the spare width is centring room. The first mask is PARTS BODY, so nothing the side-plane extrusion reaches can land on a leg or the neck if the mesh ever moves.

Four layers, painted outer skin to spark, and the order is the marking - each one sits inside the one before it. The source's fifth path is the black page behind the flame and is deliberately not here; pasting it would have painted a rectangle over the whole flank.

Three of the four tones are one hue at rising lightness, so the coloured form runs them off a single $hue. The spark is not - in the reference it is a warm mark inside a cold flame - so it takes its own knob rather than an offset, which rule 16 does not allow.

Lightness order in the reference is outer < mid < spark < core, and both achromatic forms keep that order and its spacing even though the spark is painted last.

At this viewport the marking is about 18 texels tall (a texel is 0.5 body units, and meet fits the tall side first). The silhouette and the tonal split survive that; detail finer than about half a body unit inside the drawing does not, and reads as texture rather than as countable structure. That is rule 15 being accepted deliberately, not overlooked - the barrel is 10 units tall and there is nowhere else for the marking to grow.

Arrived at priority 360. Moved to 295: fields and regions, with the other barrel drawings beside moonwing (283). 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 flame came out as one white sliver and the spark painted nothing at all - four near-white tones, each inside the one before, sum straight past white, and the spark was clamped away entirely. 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 spark is drawn at twice the size it was traced at, scaled about its own centre by the mask's transform - translate(313.1 389.1) scale(2) translate(-313.1 -389.1). At the traced size it was two texels on the horse and the check could not find it on any coat; the rest of the flame is untouched, and the other layers cut their hole for it from the same transformed shape.

PLACED BY THE HORSE, NOT THE FILE (2026-09-11). originU is the posU knob, 0.12-0.40, so the viewport's centre runs from about x 12.7 to x 24.2 and the drawing lands anywhere from shoulder to hip. It used to be a constant 0.27, shared with the other five barrel drawings, and the owner's first look at the intake found six different drawings all standing in the same place on every horse. The range keeps every one of the six on BODY with two units to spare at either end - the widest, candelabra, is 6.2 units - checked on a side-view render at six seeds each. originV stays fixed: these are sized to the barrel's full height and there is no room to move up or down.

WIDENED 2.6x ABOUT ITS CENTRE LINE (2026-09-11). Every SVG mask's transform starts translate(311 0) scale(2.6 1) translate(-311 0), x 311 being the flame's own centre. As traced the flame is 150 by 752 in its viewBox, which on the horse is 1.5 by 7.7 units - three texels wide, with an outer skin under a texel that vanished and left the owner looking at 'a very very narrow white streak'. At 2.6 it is about 4 units wide and reads as a flame with a skin, a core, a foot and a spark; 3.2 was tried and turns it into an egg.

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.

Pale flame

A grey taper flame on the ribs, palest at its foot.

  1. outer skin — PARTS × SVG × SVG inverted × SVG inverted × SVG inverted, painted with TOWARD
  2. body — PARTS × SVG × SVG inverted × SVG inverted, painted with TOWARD
  3. foot — PARTS × SVG × SVG inverted, painted with TOWARD
  4. spark — PARTS × SVG, painted with TOWARD

Black flame

A near-black taper flame on the ribs, stepped up to a mid-grey foot.

  1. outer skin — PARTS × SVG × SVG inverted × SVG inverted × SVG inverted, painted with TOWARD
  2. body — PARTS × SVG × SVG inverted × SVG inverted, painted with TOWARD
  3. foot — PARTS × SVG × SVG inverted, painted with TOWARD
  4. spark — PARTS × SVG, painted with TOWARD

Coloured flame

A taper flame in the line's own colour, with a spark of a second near the tip.

  1. outer skin — PARTS × SVG × SVG inverted × SVG inverted × SVG inverted, painted with TOWARD
  2. body — PARTS × SVG × SVG inverted × SVG inverted, painted with TOWARD
  3. foot — PARTS × SVG × SVG inverted, painted with TOWARD
  4. spark — PARTS × SVG, painted with TOWARD

Wild type

Nothing.

Paints nothing.