† DEVOUR

Other Systems › Devour

One creature consumes another — or a Devour item — and takes what was worth keeping. The fodder's XP always transfers in full. Grade and mutant status transfer too, but only within the same line. The fodder is destroyed permanently: its uid is burned and nothing recovers it.

Where it lives

What can be consumed

The fodder picker lists the soul bag's visible pool only: creatures and Devour consumables. By construction this means anything equipped, penned or socketed can never be fodder — those are not in the visible pool. Eggs and class souls are never fodder. The consumer is excluded from its own pool; a creature cannot devour itself. Consumables sort to the top of the picker, then creatures in soul-bag order.

Devouring a creature

AspectRule
XPAlways transfers, in full, regardless of species: consumer.xp += fodder.xp. Level is re-derived from the shared XP curve.
GradeTransfers within the same LINE, and only upward: the consumer keeps the higher of the two grades. Any stage feeds any other stage of its own line. Grade feeds the Grade Multiplier, so this is a real stat change.
MutantTransfers within the same LINE, across stages: a mutant fodder makes the consumer a mutant (see Mutant Variants). Never removed, never reversed.
FodderDestroyed. The record leaves the bag, the uid is burned, equipment is unaffected (a bag creature carries none).
IdentityThe consumer's uid, origin, gender and everything not listed above are untouched. It is the same creature, fed.

“Same” means the same LINE (D ruling 2026-08-02). Identity for grade and mutant is Line_ID from creatures.csv, so an S1 and the S3 it advances into ARE the same for this rule: feed a Stage-1 Rare mutant into its own Stage-3 Common and the Stage-3 comes out Rare and mutant. Across different lines only XP moves.

The comparison falls back to the creature row when creatures.csv has no row for a record, so an unknown or forged creature with a blank Line_ID can never read as “same line” as everything else. dvSpeciesId still exists and is still exact-creature identity — it answers a different question and the picker labels off it.

The Devour consumables

Three item types live in the soul bag under the new Consumable category. None of them can be obtained anywhere yet (D ruling) — no drop, no craft, no purchase mints them (still true at 0.93); mkDevourItem is the single mint and nothing calls it in play. A refused consumable is never spent.

ItemEffect when consumedRefusal rule
Blood PelletGrants XP to the consumer. Currently 1,000 XP — economy_params.csv Devour_Pellet_XP, a placeholder pending tuning; each pellet record can also carry its own xp.None.
MutagenThe consumer becomes a mutant.Refused if the consumer already is one: ALREADY A MUTANT.
[Grade] Essence of PowerRaises the consumer's grade to the essence's grade (e.g. an Abyssal Essence of Power makes the creature Abyssal). One item per grade on the Worn→Void ladder.Refused unless the essence's grade is strictly higher than the creature's: THE ESSENCE MUST OUTRANK THE CREATURE'S GRADE. Equal or lower is unusable.

Order of operations

Edge cases and consequences

Integrity

A creature-on-creature devour is the server’s (since 0.89, 2026-10-23): the game asks the devour door, the server judges the pair from its own records — grade and mutant status pass along the line and only upward, the XP is the fodder’s recorded XP, and a devour that would change nothing is refused — then spends the fodder and rewrites the consumer. The game shows the server’s answer, never its own guess; a refusal or a lost connection consumes nothing and says so, and a retry on the same fodder replays the first answer. A locked creature, or one in a pen, a party slot or a soul socket, is never fodder. The three consumables still resolve on the client, because nothing mints them; the day one becomes obtainable it goes through the same door. Nothing of economic value is created here: a devour only concentrates what the account already holds into fewer creatures.

Engine reference

FunctionResponsibility
dvOpenBag / dvOpenSlot / dvOpenSoulEntry points from the creature sheet, the equipped-creature slot picker, and the soul-socket picker (a socket holding a creature); all three enforce the battle-phase gate.
dvChoicesThe fodder pool: visible soul-bag creatures + consumables, consumer excluded, consumables first.
dvSpeciesIdSpecies identity: the codex row (imgId, name fallback). Same row = same species.
dvJudgeThe single outcome judgement shared by preview and execution.
dvExecThe atomic commit: for a creature fodder, plays /api/devour’s answer; consume fodder, rewrite consumer, toast, save; bails on stale references and puts the fodder back.
mkDevourItemThe only mint for Blood Pellet / Mutagen / Essence records. No play path calls it.

The fodder picker shows what it cannot take

Creatures that are equipped (a party slot or a soul socket) or breeding (in a pen) appear in the fodder list, greyed, badged EQUIPPED or BREEDING, and cannot be selected. Clicking one says why rather than doing nothing.

The report that prompted this was a name collision, and the measurement is worth keeping. It was raised as “it is showing mons currently in breeding as options”. Compared by uid on the reporting save, zero penned, equipped or socketed creatures were in the list — penning and equipping both splice the creature out of the bag, which is exactly why isPennedItem() and isEquippedMon() can honestly return false. The account held three creatures called Tempest and two called Ingot; one of each was penned, and the rest were ordinary bag creatures. What the player could not do was tell them apart.

So the filter that was asked for already existed. Showing the unavailable creatures greyed is what fixes the actual confusion, and it is worth more than the filter: a list that silently omits a creature cannot explain where it went.

Client: dvBlockedRecs(), dvChoices() in play/app.js. Probe: tools/probe_devsel.py — BEFORE 4/4 (asserting the creatures are absent entirely), AFTER 7/7, matching by uid rather than by name.

The fodder picker is ordered, and it offers only fodder that can change the consumer

Build 0.47. Two changes to the same list: it has an order, and it has a usefulness filter.

Ordering — Level > Grade > line > stage > gender > rarity

KeyDirectionWhy it sits here
Levelbest firstThe XP a fodder carries is the payout that always applies, so it leads.
Gradebest firstThe second payout, and the one that decides whether a devour is worth spending a creature on.
Advancement linealphabeticalNot a ranking — it exists to group a family together, so every stage of one line lands in one block.
Stageascending, within a lineS1 before S3, so a family block reads in advancement order.
Gendertie-break
RaritylastRarity does not affect what a devour pays, so it is the weakest key here.
NameascendingPresent so the order is TOTAL and cannot shuffle between re-renders.
Record this explicitly: this is a DIFFERENT key order from the party equipment picker, which is Level > Grade > Rarity > Codex # > Gender (see Equipment & Auto-Optimize). The two are deliberately separate comparators: the party picker is choosing a creature to fight with, where rarity and codex identity matter and the advancement line does not; this picker is choosing a creature to spend, where the line decides whether grade and mutant transfer at all. They must not be unified without the designer's word.

The usefulness filter

The list now offers only fodder that can actually change the consumer. The predicate is the existing dvJudge, which returns not-ok exactly when xp, grade and mut are ALL absent — the same three payouts the 2026-08-06 refusal is built on.

Consequence worth recording: the filter made “no rows at all” the wrong empty-state test. The common empty state is now a list holding only blocked cards — the equipped and breeding creatures that exist to explain where a creature went and that can never be picked. A row-count test reads that list as populated and stays silent on a screen the player cannot act on. The empty message now fires on nothing SELECTABLE, not on nothing at all.

What a devour pays — the full set, for completeness

SourcePayout
Same-line fodder of a higher gradeRaises the consumer's grade to the fodder's.
Mutant fodderMakes a non-mutant consumer mutant. Never reversed.
Any fodderXP transfers.
Blood PelletXP.
MutagenMutant — and nothing at all if the consumer already is one.
[Grade] Essence of PowerGrade, and only if the essence outranks the consumer's grade.

Correction to earlier text on this page. What can be consumed above ends “Consumables sort to the top of the picker, then creatures in soul-bag order.” The soul-bag order half is stale as of 0.47 — creatures are ordered by the comparator above. The sentence is left as written; this page is append-only.

Changelog