> For the complete documentation index, see [llms.txt](https://esmp-fun.gitbook.io/plugins/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://esmp-fun.gitbook.io/plugins/mythic-trials/mob-editor.md).

# The Mob Editor

The Mob Editor turns chamber mobs into **custom, named encounters** you build in-game. Define a reusable *template* (gear, name, stats, death-loot, spawn effects), say *where* it appears (tiers / chambers), optionally make it a **boss** that arrives after a clear, and fine-tune the anti-cheese **tactics** per tier, chamber, or mob.

Everything here is **additive and gated**: with nothing authored, mobs behave exactly as the tier scaling alone produces. Files live under `plugins/Mythic Trials/my-mob-settings/` and are managed by the GUI, but they are plain YAML you can hand-edit and reload.

Open it with **`/tcpmt menu` → Mob Editor**.

## Templates

A **template** re-dresses an already-spawned chamber mob — it never replaces the entity, so trial-spawner wave counts stay exact. A template carries:

* a **base type** (which vanilla mob it dresses — e.g. `ZOMBIE`; "any" matches every mob),
* a **display name** (MiniMessage, e.g. `<aqua>Frost Knight</aqua>`),
* **gear** — laid out on the familiar armor-stand cross (helmet on top, main / off hand flanking the chestplate, leggings + boots below),
* **stat multipliers** relative to the tier band,
* **death-loot** dropped on top of the mob's normal drops,
* **spawn effects** (permanent or timed potion effects).

### Editing gear (stamp semantics)

In the editor, the gear slots use **stamp** input: hold an item on your cursor and **click** a slot to copy its type + enchants into the template — the item stays on your cursor (it is copied, not consumed). **Right-click** a slot to clear it. You can also drag an item onto a slot.

### Stats

The **Stat multipliers** button opens a slider dialog. Each value is a multiplier on that stat's tier-band contribution: `1.0` = unchanged, `0` = ignore the tier's boost for that stat, `>1` = amplified. Stats still pass through the `tiers.yml` guardrails (resistance / speed / damage caps) — a template can't bypass anti-cheese.

### Death-loot

The **Death-loot** panel lists each drop as its item. Add one by holding an item and clicking **＋ Add** (or shift-clicking it from your inventory); click an entry to set its drop **chance** and **min/max** amount; right-click to remove it.

### Spawn effects

The **Spawn effects** panel adds permanent or timed potion effects applied when the mob spawns — pick an effect, level, and duration.

### `mobs.yml`

The GUI writes `my-mob-settings/mobs.yml`. The same template by hand:

```yaml
mobs:
  frost_knight:
    base-type: STRAY
    display-name: "<aqua>Frost Knight</aqua>"
    equipment:
      helmet:    { type: DIAMOND_HELMET, enchants: { protection: 2 } }
      main-hand: { type: IRON_SWORD,     enchants: { sharpness: 2 } }
    stats:
      health: 1.5
      speed:  1.1
    effects:
      - { type: speed, amplifier: 0, permanent: true }
    death-loot:
      - { type: DIAMOND,    chance: 0.25, min: 1, max: 2 }
      - { type: PACKED_ICE, chance: 1.0,  min: 2, max: 5 }
```

## Assignments — *where* a template appears

A template does nothing on its own. An **assignment** maps it to the tiers and chambers it should spawn in. Without one, a template is only reachable via the `/tcpmt mob spawn` debug command.

Open **Assignments** from the template list, the editor, or a chamber's detail view. Each assignment picks a template, a tier range (`8-14`, `M1-M5`, or `all`), chamber name(s) (or `all`), and a relative **weight**. When several templates match the same mob, one is chosen by weight.

```yaml
# my-mob-settings/assignments.yml
assignments:
  - { mob: frost_knight, tiers: "8-14", weight: 1.0 }
  - { mob: frost_knight, tiers: "M1-M5", chambers: ["arena3"], weight: 2.0 }
```

## Bosses

A **boss** is an *added* encounter: after a chamber is cleared, the first boss whose tier/chamber matches spawns as an extra fight. (Tier-up still happens on clear — the boss is a bonus, not the gate.) The boss is just a mob template, so build it in the editor first, then point a boss entry at it.

```yaml
# my-mob-settings/bosses.yml
bosses:
  - template: frost_king          # a template from mobs.yml
    tiers: "M1-M5"                 # omit = every tier
    chambers: ["arena3"]          # omit = every chamber
    prep-delay-seconds: 8          # grace before it appears, so players regroup
    spawn-point: chamber_center    # or near_vault, or { x: .., y: .., z: .. }
    announce: true                 # telegraph a title to players in the chamber
    reward-bonus-tiers: 1          # extra reward tiers to whoever lands the kill
```

On clear, players get an **incoming-boss** telegraph, then after `prep-delay-seconds` the boss appears at the spawn point (the chamber centre by default — away from the room where the last wave ended). Defeat it for a **bonus reward** on top of the normal clear rewards.

Preview an encounter without grinding a full clear: **`/tcpmt boss spawn <chamber>`**.

## Scoped tactics

The gear-adaptive anti-cheese **tactics** — vs-ranged speed burst, vs-shield axe, vs-tank on-hit, the cover wall, and self-cleanse — default to the global settings in `tactics.yml`. You can **override** any of them per **tier**, per **chamber**, or per **mob template**.

Precedence is most-specific-wins: **mob > tier > chamber > global**. Each tactic is a **tri-state** toggle — *inherit* (use the broader default), *on*, or *off* — so a scope only changes what you set and inherits the rest.

* **Per-tier:** `/tcpmt menu` → **Tactics**.
* **Per-chamber:** the chamber's detail view → **Tactics**.
* **Per-mob:** the mob editor → **Tactics**.

Overrides are stored in `my-mob-settings/tactics-scopes.yml`:

```yaml
chambers:
  arena3:
    cover: { enabled: true }
tiers:
  "M1-M5":
    self-cleanse: { enabled: true }
mobs:
  frost_knight:
    vs-shield: { enabled: false }
```

### The tactics

| Tactic           | What it does                                                                                                          |
| ---------------- | --------------------------------------------------------------------------------------------------------------------- |
| **vs-ranged**    | Short speed burst toward a bow/crossbow user, to close the gap.                                                       |
| **vs-shield**    | Hands the mob a no-drop axe so its hits disable a raised shield (skips ranged mobs).                                  |
| **vs-tank**      | Punishes a heavily-armoured player with armor-bypassing on-hit effects.                                               |
| **cover**        | Drops a temporary LOS-breaking wall toward a shooter, then retreats behind it.                                        |
| **self-cleanse** | The mob sheds player-applied debuffs (poison / wither / …) on a cooldown — only harmful effects, never its own buffs. |

All are cooldown- and cap-guarded; none make a mob invincible.

## Debug commands

While building, the `/tcpmt mob list` · `mob spawn <id>` and `/tcpmt boss list` · `boss spawn [chamber]` admin commands (`tcpmt.admin`) let you test without waiting for a real spawn or clear — full descriptions are in [Commands & permissions](/plugins/mythic-trials/commands-and-permissions.md#admin-commands).

***

Next: [**messages.yml →**](/plugins/mythic-trials/messages-yml.md)
