Files
MeatSlicer/docs/enemies.md
T

154 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Enemies
All **6 enemy types** in MeatSlicer, plus elites, drops, and the exact difficulty-scaling formulas. Pulled from `js/enemies.js` and `js/rooms.js`.
---
## Enemy roster
### Shambler
| Stat | Value |
|---|---|
| Base HP | 26 |
| Base speed | 55 |
| Contact damage | 1 |
| Hitbox radius | 18 |
| XP | 1 |
| First appears | Floor 1 (spawn weight 40) |
The basic chaser. Shuffles toward you with a sinusoidal wobble. Individually harmless, dangerous in the packed waves of later floors.
### Runner
| Stat | Value |
|---|---|
| Base HP | 12 |
| Base speed | 236 |
| Contact damage | 1 |
| Hitbox radius | 15 |
| XP | 1 |
| First appears | Floor 1 (spawn weight 25) |
Extremely fast, fragile chaser — over 4× the Shambler's speed. They arrive first and force you to keep moving.
### Spitter
| Stat | Value |
|---|---|
| Base HP | 20 |
| Base speed | 60 |
| Contact damage | 1 |
| Hitbox radius | 18 |
| XP | 2 |
| First appears | Floor 2 (spawn weight 18) |
Ranged kiter. Holds 190–250 px away from you — approaches if you're farther than 250 px, retreats if you're closer than 190 px. Fires a gore bolt (speed 220, damage 1, 3 s life) when within 420 px, every **1.9 s**. Elite Spitters fire a 3-shot fan (0.25 rad spread) every **1.1 s**.
### Splitter
| Stat | Value |
|---|---|
| Base HP | 30 |
| Base speed | 70 |
| Contact damage | 1 |
| Hitbox radius | 21 |
| XP | 1 |
| First appears | Floor 2 (spawn weight 16) |
Chaser that **splits into 2 Minis on death** (non-elite Splitters only). Slightly tankier than a Shambler. Explosions and AoE that kill the Minis with the parent are valuable here.
### Mini
| Stat | Value |
|---|---|
| Base HP | 6 |
| Base speed | 120 |
| Contact damage | 1 |
| Hitbox radius | 10 |
| XP | 1 |
| First appears | Only from Splitter deaths and boss summons |
Tiny, quick chaser with a small hitbox. Never spawns directly from room waves.
### Exploder
| Stat | Value |
|---|---|
| Base HP | 14 |
| Base speed | 110 |
| Contact damage | 2 |
| Hitbox radius | 16 |
| XP | 2 |
| First appears | Floor 3 (spawn weight 14) |
Suicide bomber. Charges at you; within 56 px its **0.5 s fuse** lights (it flashes). When the fuse ends — or when it's killed by anything — it detonates: radius 70 (fuse) / 60 (killed), **2 damage**. The blast only hurts *you*, not other enemies. Kill them at range or bait the fuse and back off.
---
## Spawn weights
| Enemy | Floor 1 | Floor 2 | Floor 3+ |
|---|---|---|---|
| Shambler | 40 | 40 | 40 |
| Runner | 25 | 25 | 25 |
| Spitter | — | 18 | 18 |
| Splitter | — | 16 | 16 |
| Exploder | — | — | 14 |
Weights stay flat once unlocked; floors get harder through stat scaling and wave size, not new mixes.
## Elites
Any wave-spawned enemy can roll as an **elite** (gold ring, HP bar pip):
- Chance: `min(0.03 + floor × 0.02, 0.20)` — 5% on floor 1, capping at 20% from floor 9.
- **HP ×2.6**, speed ×0.9, contact damage **+1**, radius ×1.45, XP ×3.
- Drops: 3× XP plus 3–5 bonus gems, **18% + luck×10% chance of an item pedestal drop**, otherwise 60% + luck×20% chance of ammo.
## Drops
| Kill | XP | Other drops |
|---|---|---|
| Normal enemy | Its XP value | Ammo: 7% + luck×4% · Heart: 2.2% + luck×3% |
| Elite | 3× XP + 3–5 bonus | Item: 18% + luck×10% · else ammo: 60% + luck×20% |
Your on-kill items (Volatile Bile, Bloodlust, Vampire Dentures, Dead Man's Switch) trigger off every kill — see [items.md](items.md).
---
## Difficulty scaling
Every enemy's stats are computed at **spawn time** from three factors: floor, your power score, and pressure.
**Power score** = `(your level − 1) × 0.5 + (sum of all your item tiers)`
**HP:**
```
base HP × (1 + 0.22 × (floor − 1)) × (1 + 0.05 × power) × (elite ? 2.6 : 1) × pressure
```
**Speed:**
```
base speed × (1 + 0.04 × (floor − 1) + 0.01 × power) × (elite ? 0.9 : 1) × rand(0.9, 1.1) × pressure
```
**Contact damage:** flat per type (elites +1) — it **never scales with floor**. What kills you late-game is volume, speed, and HP pools, not bigger hit numbers.
**Pressure** (see [gameplay.md](gameplay.md#pressure-dynamic-difficulty)) ranges 0.75–1.60 and multiplies both HP and speed. Playing flawlessly pushes it up; getting hit pulls it down.
### Example: Floor 10 Shambler
Level 8 player (3.5 power) with 8 item tiers (8 power) → power 11.5, pressure 1.2:
```
HP: 26 × (1 + 0.22×9) × (1 + 0.05×11.5) × 1.2 = 26 × 2.98 × 1.575 × 1.2 ≈ 146
Spd: 55 × (1 + 0.04×9 + 0.01×11.5) × 1.2 ≈ 55 × 1.475 × 1.2 ≈ 97
```
vs. 26 HP / 55 speed on floor 1. Build damage accordingly.
## Wave sizes
Combat rooms spawn `3 + ceil(floor × 1.4)` enemies in wave 1, plus a second wave (×0.7) from floor 2 and a third (×0.5) from floor 4. Full table in [gameplay.md](gameplay.md#waves-per-combat-room). Hard cap: 72 enemies alive at once.