---
name: set-anima-item-attributes
description: AnimaSystem's reading of item prefixes, suffixes and item quality, Set's own rules for what every word does in its browser game. Use when a game wants ready rules for what a prefix or suffix gives a character (stats, speed, health, protection, critical hits, effects on hit, buffs when struck, thorns, lifesteal, regeneration and the rest), how item quality sets a word's points, how the same effect stacks over several items, how a chance meets effect resistance, how a hit deals a physical and a magic part, how quality strengthens the status effects an item gives, or the schema of the item-word receipt.
license: "Free to use when obtained from set.world, commercially too (the API, what it returns and the skills). Its models, animations and textures, Anima included, are CC BY 4.0: free to use with attribution to Jimmy Lee (j@internet.dev). The source code of Set is © Jimmy Lee under CC BY-NC 4.0 and its commercial use needs a paid waiver."
metadata:
  version: "0.14.0"
  title: Item attributes
---

# Item attributes (AnimaSystem)

Set names 163 prefixes and 194 suffixes and grades them as rarity ([Prefixes](https://set.world/skills/item-prefixes), [Suffixes](https://set.world/skills/item-suffixes)). It never says what a word does. AnimaSystem, Set's local game layer, gives every one of them an effect of its own (`item-attributes-6`). Nothing here is an API rule: no response, table, birth or `contentVersion` changes, and another game may read the same words differently. Label these readings as AnimaSystem's.

Every word is listed with its grants and its amount at every quality on `https://set.world/anima-prefixes-suffixes-effects`, the canon reference of what this skill describes ([Scenes](https://set.world/skills/anima-scenes) has its build sheet). The derivation of every price is §13.90 of the reference ([Algorithms](https://set.world/skills/algorithms)).

## The call

There is no endpoint. In Set's source the reading is part of `withAnimaSystem(character)` (`three-isometric-engine/anima-scene/anima-system.ts`, [Derived stats](https://set.world/skills/anima-derived-stats)), which puts it on the receipt as `animaSystem.affixes` and applies its character readings to `attributes`:

```ts
import { withAnimaSystem, characterItemAttributes, itemAttributeReading, withItemAttributes } from '@engine/anima-scene/anima-system';

const character = withAnimaSystem(response);   // scene-based: armor, held items and every item word
character.animaSystem.affixes.totals['physicalDamage']?.amount;

const words = characterItemAttributes(response.equipment, response.finalStats);   // the item-word receipt alone
const sword = itemAttributeReading('tool', response.equipment.tool);           // one item's words at its quality
const turnBased = withItemAttributes(response);                                // turn-based: item words only, no armor
```

Two more readers serve displays and the scene alike, so a sheet shows exactly what a fight uses: `itemAttributeSteps(base, finalStats, receipt)` (`three-isometric-engine/items/item-attributes.ts`) returns the attributes after the words' stat points (`stats`) and after their percentage and point words too (`readied`), with `ITEM_ATTRIBUTE_MOVES` naming the words that move each attribute; `sceneEffectChance(finalStats, receipt.stats)` (`anima-scene/progression.ts`) and `itemAttributeResistance(attributes, receipt)` are the two sides of the effect contest below, before the fight's statuses.

## Schema

```ts
type ItemAttributeEffect = string;   // one of the 44 keys in the table below
type ItemAttributeGrant = { effect: ItemAttributeEffect; share: number; status?: StatusWord; stat?: StatKey; outcome?: 'pierce' | 'crush' | 'disarm' | 'break' | 'stick' | 'precise' };
type ItemAttributeGrantReading = ItemAttributeGrant & {
  key: string;            // the effect, or "effect:detail" ("onHitStatus:BURNED", "stat:strength")
  amount: number;         // this grant's amount at the item's points, before the total's cap
  text: string | null;    // what it does, in words; null when the amount rounds to nothing
};
type ItemAffixReading = { kind: 'prefix' | 'suffix'; word: string; archetype: string; worn: boolean; grants: ItemAttributeGrantReading[] };   // worn: a prefix read in its worn form
type ItemAttributeItem = {
  slot: string; side: 'right' | 'left' | null;
  striking: 'right' | 'left' | null;   // the hand whose hits this item's prefix acts on; null when worn
  quality: string | null;              // the quality word; null for none
  points: number;                      // the points each of its words spends
  strength: number;                    // s: how strongly the effects it gives act
  mass: number;                        // its own lighter and heavier words: 1 for none
  affixes: ItemAffixReading[];
};
type ItemAttributeTotal = {
  key: string; effect: ItemAttributeEffect; status?: StatusWord; stat?: StatKey; outcome?: string;
  amount: number;         // what applies: items plus readings, stopped at the cap (both ways)
  items: number;          // the sum from the items' words
  readings: number;       // the sum from wisdom, perception, resolve and luck
  cap: number;            // the most from every item together
  words: string[];        // the words that carry it
  strength: number;       // the effect strength of what it gives, weighted by each item's share
};
type ItemAttributeReceipt = {
  version: string;                                   // "item-attributes-6"
  items: ItemAttributeItem[];                        // every equipped item, words or not
  totals: Record<string, ItemAttributeTotal>;        // the character's, by key
  hands: { right: Record<string, ItemAttributeTotal>; left: Record<string, ItemAttributeTotal> };   // a held prefix's effects on hit, by hand
  stats: Record<StatKey, number>;                    // stat points the words add
  steadiness: number;                                // the worn items' heavier words, in percent
};
```

The receipt of the example character in [Rolling a character](https://set.world/skills/rolling-a-character) holding only its `fine burning steel sword of the dawn` (quality points 4.06, effect strength 1.141: burning: 5% chance on hit to give BURNED!, burning: +1 strength, burning: +2% attack speed, dawn: +4% initiative and dawn: heals 0.4% of its maximum health a tick, in whole points, at least 1):

```json
{
  "version": "item-attributes-6",
  "items": [
    {
      "slot": "tool",
      "side": null,
      "striking": "right",
      "quality": "fine",
      "points": 4.055945730278072,
      "strength": 1.1407927640370765,
      "mass": 1,
      "affixes": [
        {
          "kind": "prefix",
          "word": "burning",
          "archetype": "Flame",
          "worn": false,
          "grants": [
            {
              "effect": "onHitStatus",
              "share": 0.5,
              "status": "BURNED",
              "key": "onHitStatus:BURNED",
              "amount": 5,
              "text": "5% chance on hit to give BURNED!"
            },
            {
              "effect": "stat",
              "share": 0.3,
              "stat": "strength",
              "key": "stat:strength",
              "amount": 1,
              "text": "+1 strength"
            },
            {
              "effect": "attackSpeed",
              "share": 0.2,
              "key": "attackSpeed",
              "amount": 2,
              "text": "+2% attack speed"
            }
          ]
        },
        {
          "kind": "suffix",
          "word": "dawn",
          "archetype": "Dawn",
          "worn": false,
          "grants": [
            {
              "effect": "initiative",
              "share": 0.5,
              "key": "initiative",
              "amount": 4,
              "text": "+4% initiative"
            },
            {
              "effect": "regeneration",
              "share": 0.5,
              "key": "regeneration",
              "amount": 0.4,
              "text": "heals 0.4% of its maximum health a tick, in whole points, at least 1"
            }
          ]
        }
      ]
    }
  ],
  "totals": {
    "stat:strength": {
      "key": "stat:strength",
      "effect": "stat",
      "stat": "strength",
      "amount": 1,
      "items": 1,
      "readings": 0,
      "cap": 30,
      "words": [
        "burning"
      ],
      "strength": 1.140793
    },
    "attackSpeed": {
      "key": "attackSpeed",
      "effect": "attackSpeed",
      "amount": 2,
      "items": 2,
      "readings": 0,
      "cap": 80,
      "words": [
        "burning"
      ],
      "strength": 1.140793
    },
    "initiative": {
      "key": "initiative",
      "effect": "initiative",
      "amount": 4,
      "items": 4,
      "readings": 0,
      "cap": 80,
      "words": [
        "dawn"
      ],
      "strength": 1.140793
    },
    "regeneration": {
      "key": "regeneration",
      "effect": "regeneration",
      "amount": 0.4,
      "items": 0.4,
      "readings": 0,
      "cap": 3,
      "words": [
        "dawn"
      ],
      "strength": 1.140793
    },
    "statusPotency": {
      "key": "statusPotency",
      "effect": "statusPotency",
      "amount": 3,
      "items": 0,
      "readings": 3,
      "cap": 120,
      "words": [],
      "strength": 1
    },
    "castSpeed": {
      "key": "castSpeed",
      "effect": "castSpeed",
      "amount": 1.5,
      "items": 0,
      "readings": 1.5,
      "cap": 80,
      "words": [],
      "strength": 1
    },
    "clarity": {
      "key": "clarity",
      "effect": "clarity",
      "amount": 1,
      "items": 0,
      "readings": 1,
      "cap": 40,
      "words": [],
      "strength": 1
    },
    "criticalDamage": {
      "key": "criticalDamage",
      "effect": "criticalDamage",
      "amount": 4,
      "items": 0,
      "readings": 4,
      "cap": 150,
      "words": [],
      "strength": 1
    },
    "ailmentResistance": {
      "key": "ailmentResistance",
      "effect": "ailmentResistance",
      "amount": 2.5,
      "items": 0,
      "readings": 2.5,
      "cap": 150,
      "words": [],
      "strength": 1
    },
    "staminaRecovery": {
      "key": "staminaRecovery",
      "effect": "staminaRecovery",
      "amount": 4.166667,
      "items": 0,
      "readings": 4.166667,
      "cap": 100,
      "words": [],
      "strength": 1
    },
    "criticalChance": {
      "key": "criticalChance",
      "effect": "criticalChance",
      "amount": 0.1,
      "items": 0,
      "readings": 0.1,
      "cap": 40,
      "words": [],
      "strength": 1
    },
    "chanceBonus": {
      "key": "chanceBonus",
      "effect": "chanceBonus",
      "amount": 0.025,
      "items": 0,
      "readings": 0.025,
      "cap": 10,
      "words": [],
      "strength": 1
    }
  },
  "hands": {
    "right": {
      "onHitStatus:BURNED": {
        "key": "onHitStatus:BURNED",
        "effect": "onHitStatus",
        "status": "BURNED",
        "amount": 5,
        "items": 5,
        "readings": 0,
        "cap": 150,
        "words": [
          "burning"
        ],
        "strength": 1.140793
      }
    },
    "left": {}
  },
  "stats": {
    "strength": 1,
    "dexterity": 0,
    "intelligence": 0,
    "wisdom": 0,
    "agility": 0,
    "vitality": 0,
    "perception": 0,
    "resolve": 0,
    "luck": 0
  },
  "steadiness": 0
}
```

## Points: quality is the power

An item's quality alone sets the points each of its words spends; the material's grade plays no part. Plain gives 3. Each nine of rarity `n = -log10(t)` (the reading of item quality in [Derived stats](https://set.world/skills/anima-derived-stats)) multiplies that by `1 + 1 n` above Plain and `1 - 0.5 n` below. The effects an item gives are strengthened by `s = 1 + 2 (f - 1)`, where `f` is the item quality factor.

| Quality | Points | Strength `s` |
| --- | ---: | ---: |
| Poor | 1.04 | 0.687 |
| Brittle | 1.57 | 0.771 |
| Crude | 1.91 | 0.825 |
| Fair | 2.16 | 0.866 |
| Plain | 3.00 | 1.000 |
| Fine | 4.06 | 1.141 |
| Refined | 4.82 | 1.243 |
| Superior | 5.96 | 1.395 |
| Exceptional | 6.57 | 1.476 |
| Perfected | 7.34 | 1.579 |
| Masterwork | 8.45 | 1.726 |
| Legendary | 11.57 | 2.143 |

## Price: what a word gives

Every word spends exactly 1 affix of points across its grants (`share`). A small minority (the Chaos and Sin archetypes and the tyrant) spend 2 affixes on a strength and pay 1 in a drawback every unit pays.

```text
amount = step-round( points × share / (price × statusPrice × statShare) ),  at most cap / statShare
statusPrice = the status's price to give or to gain (table below), else 1
statShare   = a stat's weight in the power rating over a primary's (Calculations), else 1
```

Regeneration floors to its step instead of rounding; contagion is had only when its whole price is met.

| Key | Effect | Kind | Price per unit | Step | Most from all items |
| --- | --- | --- | ---: | ---: | ---: |
| `stat` | One stat | stat | 1 | 0.5 | 30 |
| `allStats` | Every stat | stat | 3 | 0.5 | 10 |
| `attackSpeed` | Attack speed | attribute | 0.5 | 1 | 80 |
| `castSpeed` | Cast speed | attribute | 0.5 | 1 | 80 |
| `walkSpeed` | Walk speed | attribute | 0.4 | 1 | 80 |
| `initiative` | Initiative | attribute | 0.5 | 1 | 80 |
| `criticalChance` | Critical chance | attribute | 1 | 1 | 40 |
| `criticalDamage` | Critical damage | attribute | 0.25 | 1 | 150 |
| `physicalDamage` | Physical damage | attribute | 0.5 | 1 | 150 |
| `magicalDamage` | Magic damage | attribute | 0.5 | 1 | 150 |
| `rangedDamage` | Projectile damage | attribute | 0.4 | 1 | 80 |
| `maxHealth` | Maximum health | attribute | 0.5 | 1 | 80 |
| `stamina` | Maximum stamina | attribute | 0.4 | 1 | 80 |
| `staminaRecovery` | Stamina recovery | attribute | 0.3 | 1 | 100 |
| `dodge` | Dodge | attribute | 1.5 | 0.5 | 20 |
| `clarity` | Clarity | attribute | 1 | 1 | 40 |
| `physicalReduction` | Physical protection | attribute | 1 | 1 | 150 |
| `magicalReduction` | Magic protection | attribute | 1 | 1 | 150 |
| `ailmentResistance` | Effect resistance | attribute | 0.5 | 1 | 150 |
| `blockChance` | Block chance | attribute | 1 | 1 | 40 |
| `glanceChance` | Glance chance | attribute | 1 | 1 | 40 |
| `parryChance` | Parry chance | attribute | 1 | 1 | 40 |
| `riposteChance` | Riposte chance | attribute | 1 | 1 | 40 |
| `knockback` | Knockback | attribute | 0.3 | 1 | 100 |
| `lighter` | Lighter | attribute | 0.25 | 1 | 50 |
| `heavier` | Heavier | attribute | 0.25 | 1 | 100 |
| `magicArea` | Magic area | attribute | 0.5 | 1 | 50 |
| `lifesteal` | Lifesteal | hit | 1 | 1 | 30 |
| `staminaLeech` | Stamina leech | hit | 1 | 1 | 30 |
| `regeneration` | Regeneration | attribute | 5 | 0.1 | 3 |
| `afflictedDamage` | Damage to the afflicted | hit | 0.2 | 1 | 200 |
| `thorns` | Thorns | struck | 1.2 | 0.5 | 20 |
| `chanceBonus` | Luck in every roll | attribute | 4 | 0.5 | 10 |
| `statusPotency` | Effect potency | hit | 0.25 | 1 | 120 |
| `outcomeChance` | Outcome chance | hit | 1.5 | 1 | 15 |
| `outcomeDamage` | Outcome damage | hit | 0.2 | 1 | 150 |
| `crushDuration` | Crush duration | hit | 0.25 | 1 | 150 |
| `indestructible` | Indestructible | struck | 0.5 | 1 | 90 |
| `onHitStatus` | Effect on hit | hit | 1 | 0.5 | 150 |
| `struckStatus` | Effect on the attacker | struck | 1 | 0.5 | 150 |
| `contagion` | Contagion | trigger | 1.5 | whole | had or not |
| `struckBuff` | Buff when struck | trigger | 1 | 0.5 | 50 |
| `castBuff` | Buff when it casts | trigger | 1 | 0.5 | 50 |
| `woundedBuff` | Buff when wounded | trigger | 0.5 | 0.5 | 60 |

Status prices, in points for each 1% of chance (`-`: not priced that way):

| Status | To give | To gain |
| --- | ---: | ---: |
| BURNED! | 0.4 | - |
| POISONED! | 0.4 | - |
| BLEEDING! | 0.4 | - |
| BLIGHTED! | 0.4 | - |
| DECAYING! | 0.9 | - |
| WITHERING! | 0.8 | - |
| FROZEN! | 0.6 | - |
| PETRIFIED! | 1.6 | - |
| SLEEPING! | 0.8 | - |
| SEDUCED! | 1 | - |
| SILENCED! | 1.2 | - |
| AFRAID! | 1.2 | - |
| HYSTERIA! | 1.2 | - |
| TAUNTED! | 0.3 | - |
| PROVOKED! | 0.6 | - |
| SCARED! | 0.5 | - |
| EXPOSED! | 1 | - |
| HIDDEN! | - | 0.6 |
| STALKING! | - | 0.5 |
| PHASED! | - | 0.9 |
| RESIST! | - | 0.6 |
| HASTED! | - | 1.2 |
| SLOWED! | 0.8 | - |
| SHIELDED! | - | 0.6 |
| REGEN! | - | 0.4 |
| DEATH! | 1.5 | - |
| RESURRECTION! | - | 4 |
| FORESIGHT! | - | 0.7 |
| FORTIFIED! | - | 0.9 |
| REINFORCED! | - | 0.5 |
| WARDED! | - | 0.7 |
| LEECHED! | - | 0.4 |
| VIGOR! | - | 0.3 |
| VIGILANCE! | - | 0.5 |
| BERSERK! | - | 1 |
| FRENZY! | - | 1 |
| PROWESS! | - | 0.6 |
| KEEN! | - | 0.4 |
| EXALTED! | - | 0.5 |
| HEAVY! | 0.6 | - |
| LIGHT! | - | 0.5 |
| FLOAT! | 0.5 | - |
| FADED! | - | 0.8 |
| DOOMED! | 0.6 | - |
| BLINDED! | 0.7 | - |
| FRAIL! | 1.4 | - |
| ELECTROCUTED! | 0.6 | - |
| COURAGE! | - | 0.8 |
| CURSED! | 0.5 | - |

A status's price follows how much of a fight one landing is worth, so a fight-ending effect is always the rarest: PETRIFIED! ends the fight on landing and DEATH! only when its count runs out, so PETRIFIED! is priced above it. 6 items of the rarest quality, each with a whole affix of PETRIFIED! on hit, reach at least 40%; a suffix carries it, since a suffix acts in any slot.

The words are the whole supply, so the effects are spread over them by rule: every status effect has at least one prefix and one suffix (found on a weapon by its name, and in any slot); every effect rides at least 3 words; and no one effect, stat, status or outcome rides more than one word in 8 (44 of 357). Only a grant that gives counts; a trade-off's drawback carries nothing. Every word has grants of its own, and no two words share them.

## Held, worn and stacked

- **A prefix on a held item** (mainhand or offhand) acts on that hand's hits for its `onHitStatus`; everything else it grants is the character's. A shield is a held item, a tool with block and its own bash, so its prefix gives its effect on hit to its bash.
- **A prefix worn** (every worn slot) takes its worn form: `onHitStatus` becomes `struckStatus`, `physicalDamage` becomes `physicalReduction` and `magicalDamage` becomes `magicalReduction`. An effect on hit becomes one given to whoever strikes the wearer in melee.
- **A suffix** acts the same in any slot; its effect on hit acts on every hit the bearer lands.
- **Stacking.** The same effect from several items adds up, then stops at its most from all items (a drawback stops at the same bound below zero). There are no set bonuses: words of one archetype add nothing for being worn together.
- **Broken gear** (BREAK!, [Derived combat](https://set.world/skills/anima-derived-combat)) gives nothing while it is broken.

## Character readings (both combat modes)

`withAnimaSystem` and `withItemAttributes` move the attributes before anything else:

- **Stats.** `stat` adds points to its stat and `allStats` to all 9. The attributes move by the public formulas applied to the raised stats ([Calculations](https://set.world/skills/calculations)), and `knockbackPower` with strength. `finalStats` keeps the birth.
- **Percentages.** `maxHealth`, `stamina`, `walkSpeed`, `attackSpeed`, `castSpeed` (with the cast wind-up), `initiative` and `knockback` multiply their attribute by `1 + amount / 100`.
- **Points.** `criticalChance`, `dodge` and `clarity` add `amount / 100` to `criticalHitChance`, `dodgeRate` and `clarity`.
- **Wisdom, perception, resolve and luck** move no API attribute, so AnimaSystem reads each point above 8 at its own price, as points spent on two small readings that join the totals. Every character has them, words or not:

| Stat | Price share | Readings for each point above 8 |
| --- | ---: | --- |
| wisdom | 0.5 | +1 `statusPotency`, +0.5 `castSpeed` |
| perception | 0.5 | +0.25 `clarity`, +1 `criticalDamage` |
| resolve | 0.5 | +0.5 `ailmentResistance`, +0.833 `staminaRecovery` |
| luck | 0.2 | +0.1 `criticalChance`, +0.025 `chanceBonus` |

- **Scene-based only, on the receipt:** `staminaRecovery` multiplies AnimaSystem's recovery, `glanceChance` adds to the armor's glance, and `lighter` and `heavier` change the item's own mass (its weight, load, handling and a heavy blow's hit), at most 50% lighter and 100% heavier.

## Counterweights

Every raiser has an answer, and they meet by subtraction rather than by product, so equal stacks cancel and a surplus still counts:

- **A strike is stopped, in this order,** by MISS (dodge against clarity, then a BLINDED! striker's sight), PHASED! (a genuine chance to miss that no strike bypasses), PARRY! (a parrying tool or parry chance), BLOCK! (a shield or a heavy melee weapon, plus block chance) and GLANCED! (worn armor plus glance chance; PIERCE! and sure strikes pass it). Only then is damage dealt.
- **Damage and effects.** A damage bonus meets protection of its kind, and a chance to give an effect meets effect resistance, by subtraction (both below). Level grows effect chance and resistance alike, so they cancel between equals; the striker's enhancement has no answer of its own, so no protection is immunity.
- **Every roll.** Luck and COURAGE! raise every chance their bearer rolls, a block or a glance as much as a chance to burn; CURSED! raises every chance rolled against its bearer.
- **Narrow answers.** Indestructible answers BREAK!; VIGILANCE! answers knockback and CRUSH!; worn heavier words answer knockback and knockdowns; CLEANSE! ([Derived combat](https://set.world/skills/anima-derived-combat)) ends debuffs that already landed.

## In a scene fight

These run in scene-based combat ([Derived combat](https://set.world/skills/anima-derived-combat), part two). Practice pairs (`/anima-battle-effects`) take the character readings but no random item trigger, so every cell stays certain.

- **Luck in every roll.** `chanceBonus` adds its points to every chance the bearer rolls (critical, block, parry, glance, every outcome, buffs), beside Courage.
- **The effect contest.** An effect given on hit, when struck or by contagion lands with

  ```text
  chance     = the words' chance + the giver's effect chance (intelligence and dexterity, read like a scene attribute) + luck
  resistance = the target's ailmentResistance attribute + its ailmentResistance total (Effect resistance words and resolve's reading) + RESIST!'s points
  lands      = clamp((min(150, chance + Courage + Cursed) − min(150, resistance)) / 100, 0, 1) × Blind's scale
  ```

  A roll that RESIST!'s points alone turned away shows `RESIST!`. Buffs an item gains are never resisted.
- **Two parts to every hit.** A hit has a physical part and a magic part. The item's own kind starts at its whole base hit `B`; each damage word adds its share of `B` to its kind; each part meets the struck Anima's protection words of its kind by subtraction, then its armor and resistances as before:

  ```text
  part = floor(B × max(0, k + damageBonus + E − protectionWords) × (1 − reduction) × (1 − globalResistance) × (critical ? 2 : 1))
  k    = 1 for the item's own kind (+ rangedDamage on a projectile), 0 for the other; a part exists only when k + bonus > 0
  E    = criticalDamage on a critical + afflictedDamage for each effect the target carries + outcomeDamage for each outcome the hit causes
  hit  = max(1, physical part + magic part)
  ```

  Damage words and protection words stop at 150%; `E` sums past it. A pierce ignores the protection of its kind. A thrown WorldSphere is never contested.
- **Outcomes.** `outcomeChance` adds to an outcome only an item can already cause, at most 15 points from all items. The outcomes are rolled before the damage, so their outcome damage joins `E`.
- **Effects given.** A status from a word carries its giver's strength `s` and base hit (the giver's damage channel of the hit's kind times its item's hit power). Its numbers and duration grow with `s` ([Derived combat](https://set.world/skills/anima-derived-combat) has the anchored numbers); `statusPotency` lengthens what the bearer gives others, never a countdown.
- **Buffs.** The fight's start is a trigger of its own: as each fight begins, every buff the bearer's items gain when struck rolls once at its chance, so the bearer may start the fight with it. `struckBuff` then rolls its chance on every landed hit taken; `woundedBuff` on a hit that leaves the bearer under 50% health; `castBuff` as a magic action begins. They meet no resistance; a buff gained when struck or casting stops at 50%, when wounded at 60%.
- **Answering melee.** A melee hit or punch taken gives the striker each `struckStatus` through the contest, then takes `thorns`% of the bearer's own base hit (its mainhand), at most 20%, shown as damage with `THORNS!`; it can kill.
- **Lifesteal and stamina leech** add to LEECHED! and VIGOR!: the bearer heals, or restores as stamina, that share of the health each hit takes.
- **Regeneration** heals `floor(maxHealth × amount / 100)` (at least 1) once every 2 s of combat, up to the health cap, at most 3%.
- **Contagion.** When an Anima carrying a status falls and a living foe of it carries contagion for that status, the status passes, with its strength and base hit, to every foe of that bearer within 2 body widths, each through the contest at a chance of 150%.
- **Guarding.** `blockChance` adds to a shield's or a heavy melee weapon's block, never to bare arms. `parryChance` lets any melee item but a shield parry and adds to a parrying tool's chance; the riposte after a parry is its own roll, a parrying tool's natural chance plus `riposteChance`, or `riposteChance` alone on any other item, through every chance modifier ([Derived combat](https://set.world/skills/anima-derived-combat)). `indestructible` rolls before each BREAK! of the bearer's gear and turns it away.
- **Weight on the body.** `steadiness` (the worn items' heavier words) divides the push of every hit the bearer takes by `1 + steadiness / 100` and turns away a knockdown (a hurl or a hit while airborne) at `steadiness / (100 + steadiness)`; it never stops the hit flinch. `crushDuration` lengthens the floored hold of a CRUSH! the bearer causes by `1 + amount / 100`.
- **Magic area.** `magicArea` widens the radius of every ring, Repulse, Rupture, Flick wave and Gaze cone the bearer casts by `1 + amount / 100`.

## In turn-based combat

Set's dungeon is a light sketch of turn-based play that may grow. It reads only the character readings above and the two-part hit: health, stamina, damage, dodge, clarity and critical chance from the words, and the punch split into its physical and magic parts against the target's protection words, with critical damage the whole of its `E`. It reads no effect on hit, buff, thorns, regeneration, weight or other scene rule, and its turn order still comes from the birth stats ([Derived combat](https://set.world/skills/anima-derived-combat), part one).

## What stays the game's

Which items drop and what a word is worth in trade; whether to read these words at all; and anything a talent will add. SILENCED! is priced and carried but changes nothing until talents exist.
