Skip to content

battles

github-actions[bot] edited this page Jun 20, 2026 · 2 revisions

Battles

Battles let you pit the pet you've raised against another — your own past life from your Dex records, or a friend's pet from a DNA code they pasted you. They are pure spectacle: a battle never changes your pet, its grade, or your Dex. Nothing is at stake but bragging rights, so battle as often as you like.

Battles are fully deterministic and offline. The result is a function of the two combatants and the ruleset version — the same two pets always play out the exact same fight, frame for frame, on any machine, with no server. Share two codes and a friend can replay your battle bit-for-bit.

The "no model is stronger" guarantee

Battles obey the same pledge as everything else: no model — and no House — is ever net-stronger. The House type wheel is a closed circle, and every advantage is matched by an equal disadvantage somewhere else on the ring. A pet raised on one agent has no built-in edge over a pet raised on another; outcomes come from the build you grew (stats, traits, grade) and the matchup, never from which model fed it.

How to battle

  • From the shell: press 5 (or click Battle in the nav) to open the Battle page — a VS setup screen where you pick your fighter (your live pet or any battle-ready Dex record) on the left and your opponent on the right: either a pasted DNA code from a friend, or one of your own Dex records of a different species. Press Enter (or click Fight) to start.
  • From the command line: tt battle on a TTY opens the Battle setup screen (same as pressing 5 in the shell); tt battle <CODE> goes straight to the arena against that DNA code. Piped or with --text, both print a deterministic text summary instead of the animated view.

In the arena: Enter plays / pauses (and rewinds-then-replays once it's over), ←/→ step through the fight one blow at a time, r rematches with a fresh roll (same fighters, different outcome — variety without fishing), and Esc backs out to the setup screen.

Readiness gate. Both sides must have reached the Evolved stage to battle. A younger pet (or a code for one) shows as sealed until it matures — the same gate that guards DNA grafting later. It's always eventually reachable; just keep coding.

No fighting your own kind. You can't battle your pet against your own record of the same species — a self-mirror match is pointless. Battle a different species from your Archive, or a friend's pasted code (another player), which is always allowed even if it's the same species. (The same rule will govern DNA grafting.)

How a fight is decided

Each pet brings its four stats — PWR / SPD / WIS / GRT — and its traits. The faster pet (higher SPD) strikes first; blows trade until one side faints.

The House type wheel

Each strike is scaled by a House matchup, a closed four-way ring with Wild neutral:

Aether → Cipher → Flux → Forge → Aether        (Wild: no advantage, no disadvantage)

Each House beats exactly one and loses to exactly one; the advantage and its reverse are reciprocals, so summed around the ring no House comes out ahead. Wild-House pets (unmapped models) fight on even footing against everyone.

Trait counters

Some traits punish particular play-styles when they meet in battle — for example Sprinter counters Marathoner, and Deepdiver counters Swarm. When your attacker holds a counter to the defender's trait, that blow lands harder. (The full counter table is content data and may be tuned between Seasons.)

Grade

A pet's grade gives a small, capped stat-floor in battle — an S-grade pet fights at about +5% effective stats. This is battle-only: it never adds to the pet's recorded, equal-budget stats (horizontal evolution holds — different builds, never better builds), and it's based on grade, never on the model.

Feats

Battles earn Feats — the same achievement system as the rest of the game. Wins, win streaks, and total fights played each have their own Feat. Your battle record (played / won / best streak) is tracked across every session and is the only thing that changes; the pet's stats, grade, and Dex records are untouched.

Replays & versions

Because a battle is f(pet A, pet B, ruleset version), holding both DNA codes is enough to re-watch any fight forever — no replay file needed. When two codes meet, they fight under the oldest ruleset version both clients understand, so a battle stays reproducible even across app updates.

DNA grafting and fusionapplying a code to crossbreed pets — is a later Season. Today a code you receive can be battled and inspected, but not yet spliced into your line.

Clone this wiki locally