Magical gene / no coat effect
Magic fighter
What the horse hits for. Wild type is 3 points — a heart and a half. The gladiator allele adds a percentage of that, the wimp allele takes one off, and both copies are added with opposite signs, so a wimp copy really does count against a gladiator one.
Crossing two of them
What it does
Horses in this mod already fight: a wild one that is hit will path to its attacker and kick it, and its herd comes too. This locus decides how much that hurts.
| Combination | Outcome | Damage |
|---|---|---|
n/n | wild | 3 points |
Gld/n | more | +1 to +3 from a wild copy |
Gld/Gld | double-more | both percentages, added — no ceiling |
Wmp/n | less | a share off |
Wmp/Wmp | double-less | both off, floored at 1 point |
Gld/Wmp | balanced | the two cancel |
A wimp copy cancels a gladiator copy
This is the part worth knowing before breeding for it. A
Gld/Wmp horse is not “a gladiator that also carries a
wimp” — the two percentages are added with opposite signs and the
horse comes out near the baseline while throwing both extremes.
So breeding a fighter means breeding the wimp allele out as much as breeding the gladiator in, and crossing a spectacular fighter with a poor one gives an ordinary foal carrying both. That is a far more interesting animal to own than one which simply inherited the better half.
No ceiling, but nothing to catch
A wild gladiator copy is worth between one and three extra points. Nothing caps it after that: the percentage drifts a little at every breeding, so a line selected for it climbs past the wild range and keeps climbing. What a player cannot do is catch a monster — the founder table lists the two carriers and the plain horse and no doubled form at all.
Health
None to the horse. A doubled wimp is harmless rather than unwell.
Its gene carrot
- Gene key
horsegenetics.magic_fighter- Alleles
Gldgladiator,Wmpwimp,n- Priority
- 146 — the magical body-stat band
- Reaches the game as
- a
combateffect — the horse’sATTACK_DAMAGEbase value - Coat effect
- none, ever
Nothing on this page has been seen in game. The translator was written against the 26.1.2 sources and is flagged as unverified in its own comments. Checklist on To be verified.
The floor is on the damage, not on the percentage
A wimp copy subtracts a share of the baseline, and two unlucky ones after a few generations of drift would take a horse to zero or below. Zero damage is not “a very weak horse”, it is a horse that cannot attack at all, which is a different animal. So the sum is applied and then the result is floored at one point.
public static double damageFor(double sum) {
return Math.max(MIN_DAMAGE, BASELINE_DAMAGE * (1.0 + sum));
}
Two epigenetic values, not one
Every other summed locus here carries a single delta and lets
the allele supply the sign. This one carries a gladiator percentage
and a wimp percentage on every copy, and only ever reads the one
matching its allele.
A single shared value would work arithmetically, but it would mean the two alleles drew from the same distribution — and they should not. A gladiator copy is worth a third to a whole baseline; a wimp copy takes off a seventh to three fifths. Writing both on every copy costs one number, keeps each allele’s range its own, and is what lets a carrier’s sheet say what it is carrying.
Where the baseline lives
HorseAggroHandler registers ATTACK_DAMAGE on
EntityType.HORSE, because vanilla horses have none. That
registration now takes its value from
MagicFighterGene.BASELINE_DAMAGE rather than repeating a
number: this locus is what a player reads to find out what a horse hits for,
and its wild type has to mean the same thing as a horse that has never been
near the gene.
The translator writes a base value rather than a modifier, because the gene’s number is absolute — it is the damage the horse deals, not an adjustment to something the reader would have to go and look up. It is only written when it differs, so the common case is a comparison rather than an attribute write on every tick of every horse.
Why codominance is the whole design
A ranked locus — gladiator dominant to wimp dominant to wild — would have been simpler and would have produced a much duller gene. Under ranking, a carrier is a carrier: you cannot tell how good the hidden allele is, and crossing your best fighter with anything gives you either a fighter or not.
Summing makes every combination genuinely different, and it makes the bad allele matter. A herd that looks unremarkable can be full of high gladiator percentages masked by wimps, and finding that out is a breeding programme rather than a lookup. It is the same argument the four body-stat genes make, applied to the one axis where a player is going to care about the number in a fight.
Why the wild range is +1 to +3
Because a wild horse should be a nuisance and not a threat. Three points is a heart and a half; a wild gladiator carrier hits for four to six, which is a bad surprise and not a death. Everything past that is somebody’s project, and the mod would rather a player met their first genuinely dangerous horse in a paddock they built.
common/genetics/genes/MagicFighterGene.java,
neoforge/server/HorseAggroHandler.java