Combat mechanic — not covered elsewhere
Enemy Infighting
Pulling a creature into another and having it happen by accident is the moment players tell each other about
Every creature in the game is sorted into a kin — a category read straight from its name and type, not hand-tagged one at a time — and certain pairs of kin are genuinely, mutually hostile. Lead the right two creatures close enough together, or let one clip the other while swinging at you, and a real fight breaks out between them.
The kin, and why they're not called "factions"
Deliberately not "faction" — that word is already used elsewhere for the five player-facing reputation groups with their own envoys, standing, and quest chains. Kin is what a creature is; faction is who the player stands with. There are six real kin, matched by keyword patterns against the roster (the more specific pattern always wins over a generic one — a Chrome Jackal reads as Machine before it reads as Beast), and a seventh catch-all:
- Undead — skeletons, zombies, ghosts, liches, wraiths, and similar.
- Fiend — demons, devils, hellspawn, angels, gargoyles, and similar.
- Machine — robots, drones, golems, constructs, turrets, and similar.
- Swarm — bees, spiders, ants, beetles, hives, and similar.
- Folk — knights, bandits, guards, cultists, villagers, and similar.
- Beast — wolves, bears, birds, snakes, and ordinary wildlife.
- Wild — everything that matches none of the above. A wild creature hates nobody, on purpose, so anything the keyword rules can't confidently place behaves exactly as it always did rather than picking a fight it was never meant to.
Wild is still a large group even after the keyword rules run — plenty of creature names genuinely don't imply any particular kin, and forcing them into one anyway would mean inventing lore just to hit a percentage.
Kin is also what a later pass used to place every creature's Weak Point, rather than inventing a second classification for the same roster.
Five pairs, and that's all of them
The hate matrix is deliberately tiny — most kin ignore most other kin entirely, because if everything in the world fought everything else on sight, fights would resolve themselves before a player ever arrived and the moment would stop being rare:
- Folk vs. Undead
- Folk vs. Fiend
- Machine vs. Undead
- Beast vs. Swarm
- Fiend vs. Beast
Wild is excluded from every pair — an untagged creature can never start or join a fight on kin grounds alone.
Being hit turns you on the hitter, whatever its kin
Landing a blow on any creature makes it turn on the attacker immediately, entirely independent of kin. The game's own design notes call this the actually important half of the whole system: standing so that something chasing you swings past another creature and hits it instead is a deliberate, repeatable move a player can pull off on purpose, not just something the hate matrix produces on its own.
The splash: a swing at you can clip a bystander
Every creature blow aimed at the player now passes through one shared function, which is what makes this possible at all: if another creature of a different kin happens to be standing within about 3.2 units of the attacker when it swings, that bystander catches roughly 35% of the blow as splash damage — and both the attacker and the newly-clipped bystander turn on each other immediately. Only one bystander can ever be clipped per swing, so this reads as a single deliberate clip rather than an area attack, and a creature can never clip one of its own kin this way — otherwise a whole pack of the same creature would tear itself apart the instant one of them so much as swung at you.
Half XP for a kill you didn't land
If infighting finishes off a creature you never personally struck, you still receive experience for it — at exactly half the rate a kill you landed yourself would pay.
History
- Infighting added (cycle 1) — the kin table, the five-pair hate matrix, and the grudge-on-hit rule that turns any creature on whoever just struck it.
- The splash clip added (cycle 2), alongside a long-overdue piece of infrastructure: every creature blow aimed at the player used to be written three separate times across the game's enemy-update code, and this cycle finally routed all three through one shared function. That single change is also what let the Leech elite, deferred since it first shipped for lack of exactly this, finally go live — it now genuinely heals for half of whatever damage it deals, the moment that damage lands.
Trivia
- Measuring an infight kill's XP payout by simply watching the player's total skill XP turned out to be unreliable — the world spawns and despawns creatures constantly in the background, so readings swung wildly depending on what else happened to die nearby during the same window. The eventual fix tracks exactly what the infighting system itself paid out, separately from every other source of XP, rather than trying to infer it from a noisy total.
- The scan for a nearby hated creature runs on a one-second cadence rather than every single frame — a full search across every other creature in the world, done every frame for every creature, would scale badly, and a decision that plays out over several seconds doesn't need frame-perfect timing to feel right.