# The Harvester

> The Harvester, End of the Season, is boss 13 of 21 in tibo.dog. A combine harvester. It charges down long lanes. Every potato's last fear.

Source page: https://www.tibodog.wiki/bosses/harvester · Wiki updated 6 Nov 2026, 03:55 UTC · Game version 75 (`main-CSuyb4iv.js`, data synced 5 Nov 2026, 21:45 UTC)

Breadcrumb: [Main page](/) › [Bosses](/bosses)

| The Harvester | |
|---|---|
| Title | End of the Season |
| Order | 13 of 21 |
| Arrives | 20:00 ([schedule](/bosses#wave-schedule)) |
| Base HP | 16000 |
| Contact damage | 60 |
| Speed | 36 |
| Main attack | `charge` every 2.6 s |
| Telegraph | 1 s |
| Bullet patterns | 2, every 2.4 s |
| XP | 300 |
| Minute-20 boss | Arrives at 20:00, when a run counts as survived |

**The Harvester**, *End of the Season*, is a boss in tibo.dog. In-game description: “A combine harvester. It charges down long lanes. Every potato's last fear.”

## Overview

The Harvester is the last of the 13 bosses and the one the game config names as `win.finalBoss`. It is the minute-20 wave boss, arriving at 20:00 on the [wave schedule](/bosses#wave-schedule), the same moment the run counts as survived. Beating it is not required to survive: the run carries on into overtime either way (see [After 20:00](/bosses#after-20-00)). After that it returns as the last boss in the overtime cycle, first at 27:00 and then every seven minutes.

It is by far the toughest boss. Its 16000 base HP is multiplied by the ×6 boss HP step that starts at 20:00, which gives 96000 HP before the difficulty multiplier and 62400 on Normal (boss HP ×0.65, see [Modes](/modes)), more with [curse](/curse). It has the highest contact damage of any boss (60 before time scaling) and walks at speed 36, a little over half of Tibo's base speed of 62. Boss walking speed does not grow with time. [sim-BkfBhQfw.js: `n.speed[r]=i.speed,n.damage[r]=i.damage*o.dmg`]

[Boss Lairs](/points-of-interest#boss-lair) never wake the Harvester: they pick from the boss order but stop one short of its end. [sim-BkfBhQfw.js: `r=n[Math.max(1,Math.min(n.length-2,Math.floor(e.runClock/120)+Math.floor(t.tier/2)))]`]

Like every boss, it drops a [chest](/chests), an XP gem worth its 300 XP and a 25-gold coin (both multiplied by the biome's XP and gold multipliers).

**Measured** (headless `tools/play.mjs`, build `main-B2gf34bA`, seed `wiki`, standard mode, `--god`; the clock warped to 2 s before each minute and stepped across it; level-up offers taken first-in-order except Rotten Spud, so curse stays at the difficulty's start value): it spawned at exactly 20:00 on all four difficulties, with 48,000 HP on Easy, 62,400 on Normal, 67,200 on Hard and 100,320 on Nightmare. The Nightmare figure is 10% above base HP × the difficulty multiplier because Nightmare starts every run with one curse, and boss HP is multiplied by 1 + curse. [sim-BkfBhQfw.js: `startCurses:1,tierLag:2,wallPests:.6`] [sim-BkfBhQfw.js: `n.maxHp[r]=i.hp*t.hpMult*(1+e.loadout.stats.curse)`] Seeds `s1` to `s4` gave the same Normal times and HP. The Nightmare value comes from a run where each earlier boss was removed on arrival, because a stationary god-mode Tibo was killed by stacked boss hits at 17:59 otherwise.

## Fight

The Harvester walks towards Tibo and alternates two bullet patterns while walking. Every 2.6 s of walking it stops to charge. The pattern timer pauses during the warning and the charge, and the 2.6 s countdown restarts only once the charge ends. Its first charge comes 1.56 s after it spawns and its first pattern 1.2 s after. [sim-BkfBhQfw.js: `n.timer[r]=.6*i.attackEvery,n.patternT[r]=.5*i.patternEvery`]

### Combine charge

When the attack is ready, the Harvester stops and locks onto the direction Tibo is in at that moment. A 70-unit-wide warning lane, 418 units long, shows its path for 1 s. It then drives along that line at speed 380 for 1.1 s, which covers the whole lane, and does not steer. A full cycle of walking, warning and charging takes 4.7 s.

The charge damage comes from touching the boss, not from the lane. While charging, its body hitbox widens from its normal radius of 22 to half the lane width (35), and contact damage is ×1.5, which is 90 before time scaling. [sim-BkfBhQfw.js: ``e.bosses.state[t]===2&&r.attack.kind===`charge`?1.5:1``]

### Homing volleys

The first pattern fires 3 volleys at Tibo, 0.25 s apart, after a 0.7 s warning. Each volley is a line of bullets fired in the same direction at falling speeds: the first at full speed (140), each later one 15% slower, so the line stretches out as it flies. [sim-BkfBhQfw.js: ``case`aimed`:return Z.angle=s,Z.speed=c/(1+.15*n)``] The aim is fixed when the warning starts. From 0.1 s to 0.6 s after launch, each bullet turns towards Tibo by up to 1.6 radians per second, but only while he is ahead of it and only if he has not dashed since it was fired. A dash ends the homing for every bullet already in the air. [sim-BkfBhQfw.js: `c!==void 0&&r>=c.after&&r<c.until&&mp.dashAgo>Math.round(r/i)`]

### Stalling rings

The second pattern fires two rings of 24 bullets, 0.4 s apart, after a 0.9 s warning. The second ring is rotated by half a gap, so it covers the first ring's holes. The bullets launch at speed 85, slow to a fifth of that by 0.4 s, hang almost still until 0.9 s, then speed up to 1.6× (136) by 1.2 s. In practice the double ring stalls around the Harvester before bursting outward.

### Late-game numbers

Enemy bullet counts, fire rates and bullet speeds all grow with run time (see [Enemy bullets](/enemy-scaling#enemy-bullets)). They are worked out when each pattern starts, so they are already high when the Harvester arrives at 20:00: ×1.8 bullet count, ×1.6 fire rate, ×1.3 bullet speed. [sim-BkfBhQfw.js: `a.count[o]=Math.max(1,Math.round(t.count*d.bulletCount)),a.speed[o]=t.speed*d.bulletSpeed`] At 20:00 that means:

- Homing volleys: 7 bullets per line instead of 4, lead bullet at speed 182, volleys 0.16 s apart.
- Stalling rings: 43 bullets per ring instead of 24, rings 0.25 s apart, bursting out at about 177.
- A new pattern every 1.5 s of walking instead of 2.4 s, so it usually fires one or two patterns between charges.

**Measured** (headless `tools/play.mjs`, build `main-B2gf34bA`, seed `wiki`, standard mode, `--god`, Normal; the clock warped to just before 20:00; every other boss and every pest removed each tick, so the sim's hostile-shot counter only counts this boss): three 7-bullet volleys 0.15 s apart at 1.85 s, two 43-bullet rings 0.23 s apart at 5.65 s, the volleys again at 9.05 s and the rings at 10.75 s after it spawned.

The charge is not affected: its timing and speed are fixed.

## Tips

- **Sidestep the charge early.** The direction is locked when the lane appears, so leaving the lane is enough. To be safe, Tibo needs to be about 40 units from the lane's centre line (35 for the hitbox plus his own size). At base speed that is about 0.65 s of the 1 s warning, so start moving as soon as the lane appears. A dash covers 48 units in 0.15 s and clears it on its own (see [dash details](/controls#dash-details)).
- **Stay out of its path after it stops.** The charge always runs the full 418 units, so standing just past where Tibo was is not safe either.
- **Dash after the volleys are fired**, not before. Dashing once the bullets are in the air ends their homing, and they fly straight from then on. With only one dash charge and a 5 s recharge, it may be worth saving the dash for the charge and walking out of the volleys instead. [Butter Socks](/passives/butter-socks) adds dash charges and makes this choice easier.
- **Don't try to slip through a ring while it stalls near the boss.** With 43 bullets per ring at 20:00, the gaps only become wide enough for Tibo once the ring is about 90 units out. Before the ring bursts, either back off or wait for it to pass.
- **Armor is weaker here.** Bosses count as 10 levels higher than the run time against [armor](/stats#armor), so the same armor blocks less of the Harvester's hits than of normal pests'. Avoiding hits matters more than tanking them.
- **For damage**, [Bacon Bits](/passives/bacon-bits) (+12% damage to elites and bosses per level) and [Boss Buster](/items/boss-buster) (+15%) apply to every hit on it. [Inferno Basket](/weapons/inferno-basket) deals double damage to bosses, but its cone is short, so Tibo has to stay close to a boss that hits hard on contact.
- Freeze effects such as [Frozen Fries](/weapons/frozen-fries) don't freeze bosses [sim-BkfBhQfw.js: ``case`freeze`:r||(e.freezeT[t]=Math.max(e.freezeT[t],n.seconds*i))``], and the Harvester has more HP than anything else, so plan to whittle it down while dodging rather than to lock it in place.

## Main attack

| Parameter | Value |
|---|---|
| `kind` | charge |
| `dashSpeed` | 380 |
| `dashTime` | 1.1 |
| `width` | 70 |

## Nightmare ground attack

**Verified**: Nightmare adds the `wheel` ground layout; other difficulties keep the ordinary attack. Its anchor captures Tibo's position when placed, rather than following him. A radius-18 hub and outer ring (56–70) strike together, then five width-14 spokes strike 0.5 seconds later. The charge still happens. Distances above are raw values: multiply them by Nightmare's `areaScale` of 1.45, but not counts, angles, ratios or times. This does not enlarge every enemy attack. [sim-BkfBhQfw.js: `return e.level.sharpAttacks&&n!==void 0?n:t.attack`] [run-extras-l2haGSVw.js: `kind:`wheel`,hub:18,radius:70,rim:14,spokes:5,spoke:14,wave:.5`] [run-extras-l2haGSVw.js: `j.cx=e.player.x[e.me],j.cy=e.player.y[e.me],j.scale=e.cfg.level.areaScale`]

## Bullet patterns

| Pattern | Count | Bursts | Bullet damage | Speed | Telegraph (s) | Extra |
|---|---|---|---|---|---|---|
| `aimed` | 4 | 3 | 16 | 140 | 0.7 | motion: `{"home":{"rate":1.6,"after":0.1,"until":0.6}}` |
| `ring` | 24 | 2 | 12 | 85 | 0.9 | motion: `{"speed":[{"at":0.4,"to":0.2},{"at":0.9,"to":0.2},{"at":1.2,"to":1.6}]}` |

## HP scaling

Boss HP is multiplied by a step factor depending on the run time (`bosses.hpSteps`), and by the difficulty's boss HP multiplier (see [Modes](/modes)).

| From minute | HP × | The Harvester HP (Normal) |
|---|---|---|
| 0 | 1 | 10400 |
| 16 | 3 | 31200 |
| 18 | 4 | 41600 |
| 20 | 6 | 62400 |

The Normal column includes Normal's boss HP ×0.65, without curse. Other time scaling may also apply; see [Enemy scaling](/enemy-scaling).

## Names in other languages

**Verified**: the name the game shows when another language is selected in Settings, from its translation files. [i18n-ja-content-DO6GrqHt.js: `"content.boss.harvester.name":["ハーベスター"]`] See [Languages](/controls#languages).

<details class="raw"><summary>Show names in 26 languages</summary>

| Language | Code | Name | Title |
|---|---|---|---|
| 简体中文 · Simplified Chinese | `zh-CN` | 收割机 | 季节终结者 |
| 繁體中文 · Traditional Chinese (Taiwan) | `zh-TW` | 收割機 | 季節終結者 |
| 日本語 · Japanese | `ja` | ハーベスター | 季節の終わり |
| 한국어 · Korean | `ko` | 수확기 | 계절의 끝 |
| Español · Spanish | `es` | La cosechadora | Fin de temporada |
| हिन्दी · Hindi | `hi` | हार्वेस्टर | सीज़न का अंत |
| Deutsch · German | `de` | Der Vollernter | Ende der Saison |
| Français · French | `fr` | La moissonneuse | Fin de saison |
| Português (Brasil) · Brazilian Portuguese | `pt` | A Colheitadeira | Fim da safra |
| Türkçe · Turkish | `tr` | Biçerdöver | Sezonun Sonu |
| Bahasa Indonesia · Indonesian | `id` | Si Pemanen | Akhir Musim |
| Русский · Russian | `ru` | Комбайн | Конец сезона |
| Bahasa Melayu · Malay | `ms` | Sang Penuai | Penghujung Musim |
| Filipino | `fil` | Mang-aani | Wakas ng Anihan |
| मराठी · Marathi | `mr` | हार्वेस्टर | हंगामाचा अंत |
| Tiếng Việt · Vietnamese | `vi` | Cỗ Máy Gặt | Hồi Kết Mùa Vụ |
| తెలుగు · Telugu | `te` | హార్వెస్టర్ | సీజన్ అంతం |
| தமிழ் · Tamil | `ta` | ஹார்வெஸ்டர் | பருவத்தின் முடிவு |
| বাংলা · Bengali | `bn` | হারভেস্টার | মৌসুমের শেষ |
| ไทย · Thai | `th` | จอมเก็บเกี่ยว | จุดจบแห่งฤดูกาล |
| Hausa | `ha` | Injin Girbi | Ƙarshen Damina |
| Naijá · Nigerian Pidgin | `pcm` | Di Harvester | Season Don End |
| <bdi>العربية</bdi> · Arabic | `ar` | <bdi>الحصّادة</bdi> | <bdi>نهاية الموسم</bdi> |
| <bdi>فارسی</bdi> · Persian | `fa` | <bdi>دروگر</bdi> | <bdi>پایان فصل</bdi> |
| <bdi>עברית</bdi> · Hebrew | `he` | <bdi>הקוצר</bdi> | <bdi>סוף העונה</bdi> |
| <bdi>اردو</bdi> · Urdu | `ur` | <bdi>ہارویسٹر</bdi> | <bdi>موسم کا انجام</bdi> |

</details>

## Data

```json
{
  "id": "harvester",
  "hp": 16000,
  "speed": 36,
  "damage": 60,
  "radius": 22,
  "attackEvery": 2.6,
  "telegraph": 1,
  "attack": {
    "kind": "charge",
    "dashSpeed": 380,
    "dashTime": 1.1,
    "width": 70
  },
  "sharpAttack": {
    "kind": "charge",
    "dashSpeed": 380,
    "dashTime": 1.1,
    "width": 70,
    "layout": "wheel"
  },
  "patternEvery": 2.4,
  "patterns": [
    {
      "kind": "aimed",
      "count": 4,
      "speed": 140,
      "radius": 2.5,
      "damage": 16,
      "bursts": 3,
      "interval": 0.25,
      "telegraph": 0.7,
      "motion": {
        "home": {
          "rate": 1.6,
          "after": 0.1,
          "until": 0.6
        }
      }
    },
    {
      "kind": "ring",
      "count": 24,
      "speed": 85,
      "radius": 2.5,
      "damage": 12,
      "bursts": 2,
      "interval": 0.4,
      "telegraph": 0.9,
      "motion": {
        "speed": [
          {
            "at": 0.4,
            "to": 0.2
          },
          {
            "at": 0.9,
            "to": 0.2
          },
          {
            "at": 1.2,
            "to": 1.6
          }
        ]
      }
    }
  ],
  "xp": 300
}
```

## Sources

Game version 75: `main-CSuyb4iv.js` / `boot-CPW8VVmR.js` / `sim-BkfBhQfw.js` from https://tibo.dog/, researched 2026-11-05. See [Versions & updates](/versions).
- Content registry exported by `boot-CPW8VVmR.js`; boss definitions and order exported by `sim-BkfBhQfw.js`; lazy endgame definitions from `endgame-content-CyuS5vbP.js` and `catalog.generated-JnyrtBzy.js`
- English names and descriptions from `i18n-en-content--0ALgcKX.js`
- Game config `bosses.hpSteps` and `win.finalBoss` from `sim-BkfBhQfw.js`
- Names in other languages from the 26 `i18n-<code>-content` files of `main-CSuyb4iv.js` (`data/i18n-names.json`)
