@umang-boss/claudemon 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +164 -0
- package/bin/claudemon.js +52 -0
- package/bunfig.toml +2 -0
- package/cli/doctor.ts +334 -0
- package/cli/index.ts +42 -0
- package/cli/install.ts +248 -0
- package/cli/shared.ts +102 -0
- package/cli/uninstall.ts +155 -0
- package/cli/update.ts +318 -0
- package/hooks/post-tool-use.sh +127 -0
- package/hooks/stop.sh +49 -0
- package/hooks/user-prompt-submit.sh +73 -0
- package/package.json +68 -0
- package/scripts/download-colorscripts.ts +311 -0
- package/skills/buddy/SKILL.md +47 -0
- package/sprites/colorscripts/small/1-bulbasaur.txt +11 -0
- package/sprites/colorscripts/small/10-caterpie.txt +9 -0
- package/sprites/colorscripts/small/100-voltorb.txt +8 -0
- package/sprites/colorscripts/small/101-electrode.txt +9 -0
- package/sprites/colorscripts/small/102-exeggcute.txt +10 -0
- package/sprites/colorscripts/small/103-exeggutor.txt +23 -0
- package/sprites/colorscripts/small/104-cubone.txt +11 -0
- package/sprites/colorscripts/small/105-marowak.txt +16 -0
- package/sprites/colorscripts/small/106-hitmonlee.txt +16 -0
- package/sprites/colorscripts/small/107-hitmonchan.txt +19 -0
- package/sprites/colorscripts/small/108-lickitung.txt +10 -0
- package/sprites/colorscripts/small/109-koffing.txt +14 -0
- package/sprites/colorscripts/small/11-metapod.txt +10 -0
- package/sprites/colorscripts/small/110-weezing.txt +23 -0
- package/sprites/colorscripts/small/111-rhyhorn.txt +11 -0
- package/sprites/colorscripts/small/112-rhydon.txt +20 -0
- package/sprites/colorscripts/small/113-chansey.txt +11 -0
- package/sprites/colorscripts/small/114-tangela.txt +10 -0
- package/sprites/colorscripts/small/115-kangaskhan.txt +18 -0
- package/sprites/colorscripts/small/116-horsea.txt +10 -0
- package/sprites/colorscripts/small/117-seadra.txt +11 -0
- package/sprites/colorscripts/small/118-goldeen.txt +11 -0
- package/sprites/colorscripts/small/119-seaking.txt +16 -0
- package/sprites/colorscripts/small/12-butterfree.txt +20 -0
- package/sprites/colorscripts/small/120-staryu.txt +10 -0
- package/sprites/colorscripts/small/121-starmie.txt +17 -0
- package/sprites/colorscripts/small/122-mr-mime.txt +18 -0
- package/sprites/colorscripts/small/123-scyther.txt +21 -0
- package/sprites/colorscripts/small/124-jynx.txt +18 -0
- package/sprites/colorscripts/small/125-electabuzz.txt +19 -0
- package/sprites/colorscripts/small/126-magmar.txt +19 -0
- package/sprites/colorscripts/small/127-pinsir.txt +19 -0
- package/sprites/colorscripts/small/128-tauros.txt +20 -0
- package/sprites/colorscripts/small/129-magikarp.txt +13 -0
- package/sprites/colorscripts/small/13-weedle.txt +10 -0
- package/sprites/colorscripts/small/130-gyarados.txt +21 -0
- package/sprites/colorscripts/small/131-lapras.txt +19 -0
- package/sprites/colorscripts/small/132-ditto.txt +8 -0
- package/sprites/colorscripts/small/133-eevee.txt +10 -0
- package/sprites/colorscripts/small/134-vaporeon.txt +16 -0
- package/sprites/colorscripts/small/135-jolteon.txt +17 -0
- package/sprites/colorscripts/small/136-flareon.txt +18 -0
- package/sprites/colorscripts/small/137-porygon.txt +10 -0
- package/sprites/colorscripts/small/138-omanyte.txt +10 -0
- package/sprites/colorscripts/small/139-omastar.txt +18 -0
- package/sprites/colorscripts/small/14-kakuna.txt +10 -0
- package/sprites/colorscripts/small/140-kabuto.txt +8 -0
- package/sprites/colorscripts/small/141-kabutops.txt +17 -0
- package/sprites/colorscripts/small/142-aerodactyl.txt +17 -0
- package/sprites/colorscripts/small/143-snorlax.txt +21 -0
- package/sprites/colorscripts/small/144-articuno.txt +24 -0
- package/sprites/colorscripts/small/145-zapdos.txt +20 -0
- package/sprites/colorscripts/small/146-moltres.txt +23 -0
- package/sprites/colorscripts/small/147-dratini.txt +10 -0
- package/sprites/colorscripts/small/148-dragonair.txt +12 -0
- package/sprites/colorscripts/small/149-dragonite.txt +21 -0
- package/sprites/colorscripts/small/15-beedrill.txt +13 -0
- package/sprites/colorscripts/small/150-mewtwo.txt +22 -0
- package/sprites/colorscripts/small/151-mew.txt +14 -0
- package/sprites/colorscripts/small/16-pidgey.txt +10 -0
- package/sprites/colorscripts/small/17-pidgeotto.txt +11 -0
- package/sprites/colorscripts/small/18-pidgeot.txt +18 -0
- package/sprites/colorscripts/small/19-rattata.txt +12 -0
- package/sprites/colorscripts/small/2-ivysaur.txt +11 -0
- package/sprites/colorscripts/small/20-raticate.txt +12 -0
- package/sprites/colorscripts/small/21-spearow.txt +9 -0
- package/sprites/colorscripts/small/22-fearow.txt +12 -0
- package/sprites/colorscripts/small/23-ekans.txt +12 -0
- package/sprites/colorscripts/small/24-arbok.txt +16 -0
- package/sprites/colorscripts/small/25-pikachu.txt +11 -0
- package/sprites/colorscripts/small/26-raichu.txt +19 -0
- package/sprites/colorscripts/small/27-sandshrew.txt +10 -0
- package/sprites/colorscripts/small/28-sandslash.txt +16 -0
- package/sprites/colorscripts/small/29-nidoran-f.txt +11 -0
- package/sprites/colorscripts/small/3-venusaur.txt +21 -0
- package/sprites/colorscripts/small/30-nidorina.txt +12 -0
- package/sprites/colorscripts/small/31-nidoqueen.txt +19 -0
- package/sprites/colorscripts/small/32-nidoran-m.txt +11 -0
- package/sprites/colorscripts/small/33-nidorino.txt +12 -0
- package/sprites/colorscripts/small/34-nidoking.txt +18 -0
- package/sprites/colorscripts/small/35-clefairy.txt +11 -0
- package/sprites/colorscripts/small/36-clefable.txt +17 -0
- package/sprites/colorscripts/small/37-vulpix.txt +11 -0
- package/sprites/colorscripts/small/38-ninetales.txt +18 -0
- package/sprites/colorscripts/small/39-jigglypuff.txt +11 -0
- package/sprites/colorscripts/small/4-charmander.txt +11 -0
- package/sprites/colorscripts/small/40-wigglytuff.txt +20 -0
- package/sprites/colorscripts/small/41-zubat.txt +11 -0
- package/sprites/colorscripts/small/42-golbat.txt +18 -0
- package/sprites/colorscripts/small/43-oddish.txt +11 -0
- package/sprites/colorscripts/small/44-gloom.txt +12 -0
- package/sprites/colorscripts/small/45-vileplume.txt +17 -0
- package/sprites/colorscripts/small/46-paras.txt +11 -0
- package/sprites/colorscripts/small/47-parasect.txt +12 -0
- package/sprites/colorscripts/small/48-venonat.txt +14 -0
- package/sprites/colorscripts/small/49-venomoth.txt +19 -0
- package/sprites/colorscripts/small/5-charmeleon.txt +13 -0
- package/sprites/colorscripts/small/50-diglett.txt +8 -0
- package/sprites/colorscripts/small/51-dugtrio.txt +18 -0
- package/sprites/colorscripts/small/52-meowth.txt +12 -0
- package/sprites/colorscripts/small/53-persian.txt +20 -0
- package/sprites/colorscripts/small/54-psyduck.txt +12 -0
- package/sprites/colorscripts/small/55-golduck.txt +17 -0
- package/sprites/colorscripts/small/56-mankey.txt +11 -0
- package/sprites/colorscripts/small/57-primeape.txt +13 -0
- package/sprites/colorscripts/small/58-growlithe.txt +12 -0
- package/sprites/colorscripts/small/59-arcanine.txt +20 -0
- package/sprites/colorscripts/small/6-charizard.txt +21 -0
- package/sprites/colorscripts/small/60-poliwag.txt +9 -0
- package/sprites/colorscripts/small/61-poliwhirl.txt +11 -0
- package/sprites/colorscripts/small/62-poliwrath.txt +17 -0
- package/sprites/colorscripts/small/63-abra.txt +12 -0
- package/sprites/colorscripts/small/64-kadabra.txt +14 -0
- package/sprites/colorscripts/small/65-alakazam.txt +19 -0
- package/sprites/colorscripts/small/66-machop.txt +11 -0
- package/sprites/colorscripts/small/67-machoke.txt +12 -0
- package/sprites/colorscripts/small/68-machamp.txt +19 -0
- package/sprites/colorscripts/small/69-bellsprout.txt +9 -0
- package/sprites/colorscripts/small/7-squirtle.txt +10 -0
- package/sprites/colorscripts/small/70-weepinbell.txt +11 -0
- package/sprites/colorscripts/small/71-victreebel.txt +17 -0
- package/sprites/colorscripts/small/72-tentacool.txt +12 -0
- package/sprites/colorscripts/small/73-tentacruel.txt +20 -0
- package/sprites/colorscripts/small/74-geodude.txt +9 -0
- package/sprites/colorscripts/small/75-graveler.txt +12 -0
- package/sprites/colorscripts/small/76-golem.txt +18 -0
- package/sprites/colorscripts/small/77-ponyta.txt +13 -0
- package/sprites/colorscripts/small/78-rapidash.txt +18 -0
- package/sprites/colorscripts/small/79-slowpoke.txt +12 -0
- package/sprites/colorscripts/small/8-wartortle.txt +12 -0
- package/sprites/colorscripts/small/80-slowbro.txt +18 -0
- package/sprites/colorscripts/small/81-magnemite.txt +9 -0
- package/sprites/colorscripts/small/82-magneton.txt +18 -0
- package/sprites/colorscripts/small/83-farfetchd.txt +12 -0
- package/sprites/colorscripts/small/84-doduo.txt +10 -0
- package/sprites/colorscripts/small/85-dodrio.txt +17 -0
- package/sprites/colorscripts/small/86-seel.txt +13 -0
- package/sprites/colorscripts/small/87-dewgong.txt +20 -0
- package/sprites/colorscripts/small/88-grimer.txt +10 -0
- package/sprites/colorscripts/small/89-muk.txt +14 -0
- package/sprites/colorscripts/small/9-blastoise.txt +20 -0
- package/sprites/colorscripts/small/90-shellder.txt +10 -0
- package/sprites/colorscripts/small/91-cloyster.txt +18 -0
- package/sprites/colorscripts/small/92-gastly.txt +12 -0
- package/sprites/colorscripts/small/93-haunter.txt +14 -0
- package/sprites/colorscripts/small/94-gengar.txt +19 -0
- package/sprites/colorscripts/small/95-onix.txt +22 -0
- package/sprites/colorscripts/small/96-drowzee.txt +12 -0
- package/sprites/colorscripts/small/97-hypno.txt +19 -0
- package/sprites/colorscripts/small/98-krabby.txt +12 -0
- package/sprites/colorscripts/small/99-kingler.txt +20 -0
- package/src/engine/constants.ts +121 -0
- package/src/engine/encounter-pool.ts +71 -0
- package/src/engine/encounters.ts +308 -0
- package/src/engine/evolution-data.ts +535 -0
- package/src/engine/evolution.ts +310 -0
- package/src/engine/pokemon-data.ts +1838 -0
- package/src/engine/reactions.ts +877 -0
- package/src/engine/starter-pool.ts +47 -0
- package/src/engine/stats.ts +97 -0
- package/src/engine/types.ts +312 -0
- package/src/engine/xp.ts +135 -0
- package/src/gamification/achievements.ts +204 -0
- package/src/gamification/legendary-quests.ts +265 -0
- package/src/gamification/milestones.ts +86 -0
- package/src/hooks/award-xp.ts +131 -0
- package/src/hooks/increment-counter.ts +27 -0
- package/src/server/index.ts +78 -0
- package/src/server/instructions.ts +194 -0
- package/src/server/tools/achievements.ts +118 -0
- package/src/server/tools/catch.ts +295 -0
- package/src/server/tools/display-helpers.ts +35 -0
- package/src/server/tools/evolve.ts +236 -0
- package/src/server/tools/legendary.ts +78 -0
- package/src/server/tools/party.ts +251 -0
- package/src/server/tools/pet.ts +124 -0
- package/src/server/tools/pokedex.ts +286 -0
- package/src/server/tools/rename.ts +63 -0
- package/src/server/tools/show.ts +136 -0
- package/src/server/tools/starter.ts +175 -0
- package/src/server/tools/stats.ts +123 -0
- package/src/server/tools/visibility.ts +65 -0
- package/src/sprites/index.ts +45 -0
- package/src/state/io.ts +91 -0
- package/src/state/schemas.ts +131 -0
- package/src/state/state-manager.ts +321 -0
- package/statusline/buddy-status.sh +233 -0
- package/tsconfig.json +37 -0
|
@@ -0,0 +1,1838 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Complete Gen 1 Pokedex — all 151 Pokemon with actual base stats,
|
|
3
|
+
* catch rates, and coding-themed descriptions.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { Pokemon } from "./types.js";
|
|
7
|
+
|
|
8
|
+
export const POKEDEX: readonly Pokemon[] = [
|
|
9
|
+
// pokemon-data.ts — #001–#151
|
|
10
|
+
// ═══════════════════════════════════════════════════════════
|
|
11
|
+
|
|
12
|
+
// ── Bulbasaur line (chain 1) ─────────────────────────────
|
|
13
|
+
{
|
|
14
|
+
id: 1,
|
|
15
|
+
name: "Bulbasaur",
|
|
16
|
+
types: ["Grass", "Poison"],
|
|
17
|
+
baseStats: { hp: 45, attack: 49, defense: 49, speed: 45, special: 65 },
|
|
18
|
+
expGroup: "medium_slow",
|
|
19
|
+
evolutionChainId: 1,
|
|
20
|
+
rarity: "uncommon",
|
|
21
|
+
catchRate: 45,
|
|
22
|
+
description: "Grows features on its back like a well-maintained monorepo.",
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
id: 2,
|
|
26
|
+
name: "Ivysaur",
|
|
27
|
+
types: ["Grass", "Poison"],
|
|
28
|
+
baseStats: { hp: 60, attack: 62, defense: 63, speed: 60, special: 80 },
|
|
29
|
+
expGroup: "medium_slow",
|
|
30
|
+
evolutionChainId: 1,
|
|
31
|
+
rarity: "uncommon",
|
|
32
|
+
catchRate: 45,
|
|
33
|
+
description: "Its codebase blooms after each successful refactor.",
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
id: 3,
|
|
37
|
+
name: "Venusaur",
|
|
38
|
+
types: ["Grass", "Poison"],
|
|
39
|
+
baseStats: { hp: 80, attack: 82, defense: 83, speed: 80, special: 100 },
|
|
40
|
+
expGroup: "medium_slow",
|
|
41
|
+
evolutionChainId: 1,
|
|
42
|
+
rarity: "uncommon",
|
|
43
|
+
catchRate: 45,
|
|
44
|
+
description: "A fully-deployed app in production with zero downtime.",
|
|
45
|
+
},
|
|
46
|
+
|
|
47
|
+
// ── Charmander line (chain 2) ────────────────────────────
|
|
48
|
+
{
|
|
49
|
+
id: 4,
|
|
50
|
+
name: "Charmander",
|
|
51
|
+
types: ["Fire"],
|
|
52
|
+
baseStats: { hp: 39, attack: 52, defense: 43, speed: 65, special: 50 },
|
|
53
|
+
expGroup: "medium_slow",
|
|
54
|
+
evolutionChainId: 2,
|
|
55
|
+
rarity: "uncommon",
|
|
56
|
+
catchRate: 45,
|
|
57
|
+
description: "Its tail flame flickers when a hot-reload completes.",
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
id: 5,
|
|
61
|
+
name: "Charmeleon",
|
|
62
|
+
types: ["Fire"],
|
|
63
|
+
baseStats: { hp: 58, attack: 64, defense: 58, speed: 80, special: 65 },
|
|
64
|
+
expGroup: "medium_slow",
|
|
65
|
+
evolutionChainId: 2,
|
|
66
|
+
rarity: "uncommon",
|
|
67
|
+
catchRate: 45,
|
|
68
|
+
description: "Aggressively refactors legacy code with fiery PRs.",
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
id: 6,
|
|
72
|
+
name: "Charizard",
|
|
73
|
+
types: ["Fire", "Flying"],
|
|
74
|
+
baseStats: { hp: 78, attack: 84, defense: 78, speed: 100, special: 85 },
|
|
75
|
+
expGroup: "medium_slow",
|
|
76
|
+
evolutionChainId: 2,
|
|
77
|
+
rarity: "uncommon",
|
|
78
|
+
catchRate: 45,
|
|
79
|
+
description: "Deploys microservices at scale from 30,000 feet.",
|
|
80
|
+
},
|
|
81
|
+
|
|
82
|
+
// ── Squirtle line (chain 3) ──────────────────────────────
|
|
83
|
+
{
|
|
84
|
+
id: 7,
|
|
85
|
+
name: "Squirtle",
|
|
86
|
+
types: ["Water"],
|
|
87
|
+
baseStats: { hp: 44, attack: 48, defense: 65, speed: 43, special: 50 },
|
|
88
|
+
expGroup: "medium_slow",
|
|
89
|
+
evolutionChainId: 3,
|
|
90
|
+
rarity: "uncommon",
|
|
91
|
+
catchRate: 45,
|
|
92
|
+
description: "Puts out fires in production with calm precision.",
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
id: 8,
|
|
96
|
+
name: "Wartortle",
|
|
97
|
+
types: ["Water"],
|
|
98
|
+
baseStats: { hp: 59, attack: 63, defense: 80, speed: 58, special: 65 },
|
|
99
|
+
expGroup: "medium_slow",
|
|
100
|
+
evolutionChainId: 3,
|
|
101
|
+
rarity: "uncommon",
|
|
102
|
+
catchRate: 45,
|
|
103
|
+
description: "Its fluffy tail hides a robust error-handling layer.",
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
id: 9,
|
|
107
|
+
name: "Blastoise",
|
|
108
|
+
types: ["Water"],
|
|
109
|
+
baseStats: { hp: 79, attack: 83, defense: 100, speed: 78, special: 85 },
|
|
110
|
+
expGroup: "medium_slow",
|
|
111
|
+
evolutionChainId: 3,
|
|
112
|
+
rarity: "uncommon",
|
|
113
|
+
catchRate: 45,
|
|
114
|
+
description: "Dual cannons blast through integration test suites.",
|
|
115
|
+
},
|
|
116
|
+
|
|
117
|
+
// ── Caterpie line (chain 4) ──────────────────────────────
|
|
118
|
+
{
|
|
119
|
+
id: 10,
|
|
120
|
+
name: "Caterpie",
|
|
121
|
+
types: ["Bug"],
|
|
122
|
+
baseStats: { hp: 45, attack: 30, defense: 35, speed: 45, special: 20 },
|
|
123
|
+
expGroup: "medium_fast",
|
|
124
|
+
evolutionChainId: 4,
|
|
125
|
+
rarity: "common",
|
|
126
|
+
catchRate: 255,
|
|
127
|
+
description: "Crawls through your codebase finding tiny bugs.",
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
id: 11,
|
|
131
|
+
name: "Metapod",
|
|
132
|
+
types: ["Bug"],
|
|
133
|
+
baseStats: { hp: 50, attack: 20, defense: 55, speed: 30, special: 25 },
|
|
134
|
+
expGroup: "medium_fast",
|
|
135
|
+
evolutionChainId: 4,
|
|
136
|
+
rarity: "common",
|
|
137
|
+
catchRate: 120,
|
|
138
|
+
description: "Hardens code with type annotations and waits to ship.",
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
id: 12,
|
|
142
|
+
name: "Butterfree",
|
|
143
|
+
types: ["Bug", "Flying"],
|
|
144
|
+
baseStats: { hp: 60, attack: 45, defense: 50, speed: 70, special: 80 },
|
|
145
|
+
expGroup: "medium_fast",
|
|
146
|
+
evolutionChainId: 4,
|
|
147
|
+
rarity: "common",
|
|
148
|
+
catchRate: 45,
|
|
149
|
+
description: "Spreads beautiful documentation across every module.",
|
|
150
|
+
},
|
|
151
|
+
|
|
152
|
+
// ── Weedle line (chain 5) ────────────────────────────────
|
|
153
|
+
{
|
|
154
|
+
id: 13,
|
|
155
|
+
name: "Weedle",
|
|
156
|
+
types: ["Bug", "Poison"],
|
|
157
|
+
baseStats: { hp: 40, attack: 35, defense: 30, speed: 50, special: 20 },
|
|
158
|
+
expGroup: "medium_fast",
|
|
159
|
+
evolutionChainId: 5,
|
|
160
|
+
rarity: "common",
|
|
161
|
+
catchRate: 255,
|
|
162
|
+
description: "Injects subtle bugs that only appear in production.",
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
id: 14,
|
|
166
|
+
name: "Kakuna",
|
|
167
|
+
types: ["Bug", "Poison"],
|
|
168
|
+
baseStats: { hp: 45, attack: 25, defense: 50, speed: 35, special: 25 },
|
|
169
|
+
expGroup: "medium_fast",
|
|
170
|
+
evolutionChainId: 5,
|
|
171
|
+
rarity: "common",
|
|
172
|
+
catchRate: 120,
|
|
173
|
+
description: "Sits in code review limbo, hardening its defenses.",
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
id: 15,
|
|
177
|
+
name: "Beedrill",
|
|
178
|
+
types: ["Bug", "Poison"],
|
|
179
|
+
baseStats: { hp: 65, attack: 80, defense: 40, speed: 75, special: 45 },
|
|
180
|
+
expGroup: "medium_fast",
|
|
181
|
+
evolutionChainId: 5,
|
|
182
|
+
rarity: "common",
|
|
183
|
+
catchRate: 45,
|
|
184
|
+
description: "Drills through bug backlogs with twin stingers.",
|
|
185
|
+
},
|
|
186
|
+
|
|
187
|
+
// ── Pidgey line (chain 6) ────────────────────────────────
|
|
188
|
+
{
|
|
189
|
+
id: 16,
|
|
190
|
+
name: "Pidgey",
|
|
191
|
+
types: ["Normal", "Flying"],
|
|
192
|
+
baseStats: { hp: 40, attack: 45, defense: 40, speed: 56, special: 35 },
|
|
193
|
+
expGroup: "medium_slow",
|
|
194
|
+
evolutionChainId: 6,
|
|
195
|
+
rarity: "common",
|
|
196
|
+
catchRate: 255,
|
|
197
|
+
description: "The first commit of every project — small but brave.",
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
id: 17,
|
|
201
|
+
name: "Pidgeotto",
|
|
202
|
+
types: ["Normal", "Flying"],
|
|
203
|
+
baseStats: { hp: 63, attack: 60, defense: 55, speed: 71, special: 50 },
|
|
204
|
+
expGroup: "medium_slow",
|
|
205
|
+
evolutionChainId: 6,
|
|
206
|
+
rarity: "common",
|
|
207
|
+
catchRate: 120,
|
|
208
|
+
description: "Scouts the codebase for unused imports from above.",
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
id: 18,
|
|
212
|
+
name: "Pidgeot",
|
|
213
|
+
types: ["Normal", "Flying"],
|
|
214
|
+
baseStats: { hp: 83, attack: 80, defense: 75, speed: 91, special: 70 },
|
|
215
|
+
expGroup: "medium_slow",
|
|
216
|
+
evolutionChainId: 6,
|
|
217
|
+
rarity: "common",
|
|
218
|
+
catchRate: 45,
|
|
219
|
+
description: "Delivers hotfixes at mach speed across environments.",
|
|
220
|
+
},
|
|
221
|
+
|
|
222
|
+
// ── Rattata line (chain 7) ───────────────────────────────
|
|
223
|
+
{
|
|
224
|
+
id: 19,
|
|
225
|
+
name: "Rattata",
|
|
226
|
+
types: ["Normal"],
|
|
227
|
+
baseStats: { hp: 30, attack: 56, defense: 35, speed: 72, special: 25 },
|
|
228
|
+
expGroup: "medium_fast",
|
|
229
|
+
evolutionChainId: 7,
|
|
230
|
+
rarity: "common",
|
|
231
|
+
catchRate: 255,
|
|
232
|
+
description: "Gnaws through spaghetti code one line at a time.",
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
id: 20,
|
|
236
|
+
name: "Raticate",
|
|
237
|
+
types: ["Normal"],
|
|
238
|
+
baseStats: { hp: 55, attack: 81, defense: 60, speed: 97, special: 50 },
|
|
239
|
+
expGroup: "medium_fast",
|
|
240
|
+
evolutionChainId: 7,
|
|
241
|
+
rarity: "common",
|
|
242
|
+
catchRate: 127,
|
|
243
|
+
description: "Chews through technical debt with razor-sharp teeth.",
|
|
244
|
+
},
|
|
245
|
+
|
|
246
|
+
// ── Spearow line (chain 8) ───────────────────────────────
|
|
247
|
+
{
|
|
248
|
+
id: 21,
|
|
249
|
+
name: "Spearow",
|
|
250
|
+
types: ["Normal", "Flying"],
|
|
251
|
+
baseStats: { hp: 40, attack: 60, defense: 30, speed: 70, special: 31 },
|
|
252
|
+
expGroup: "medium_fast",
|
|
253
|
+
evolutionChainId: 8,
|
|
254
|
+
rarity: "common",
|
|
255
|
+
catchRate: 255,
|
|
256
|
+
description: "Angrily squawks at every linting error it finds.",
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
id: 22,
|
|
260
|
+
name: "Fearow",
|
|
261
|
+
types: ["Normal", "Flying"],
|
|
262
|
+
baseStats: { hp: 65, attack: 90, defense: 65, speed: 100, special: 61 },
|
|
263
|
+
expGroup: "medium_fast",
|
|
264
|
+
evolutionChainId: 8,
|
|
265
|
+
rarity: "common",
|
|
266
|
+
catchRate: 90,
|
|
267
|
+
description: "Its long beak drills deep into nested callback hell.",
|
|
268
|
+
},
|
|
269
|
+
|
|
270
|
+
// ── Ekans line (chain 9) ─────────────────────────────────
|
|
271
|
+
{
|
|
272
|
+
id: 23,
|
|
273
|
+
name: "Ekans",
|
|
274
|
+
types: ["Poison"],
|
|
275
|
+
baseStats: { hp: 35, attack: 60, defense: 44, speed: 55, special: 40 },
|
|
276
|
+
expGroup: "medium_fast",
|
|
277
|
+
evolutionChainId: 9,
|
|
278
|
+
rarity: "common",
|
|
279
|
+
catchRate: 255,
|
|
280
|
+
description: "Slithers through your code looking for Python jokes.",
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
id: 24,
|
|
284
|
+
name: "Arbok",
|
|
285
|
+
types: ["Poison"],
|
|
286
|
+
baseStats: { hp: 60, attack: 85, defense: 69, speed: 80, special: 65 },
|
|
287
|
+
expGroup: "medium_fast",
|
|
288
|
+
evolutionChainId: 9,
|
|
289
|
+
rarity: "common",
|
|
290
|
+
catchRate: 90,
|
|
291
|
+
description: "Its hood pattern warns of deprecated API usage.",
|
|
292
|
+
},
|
|
293
|
+
|
|
294
|
+
// ── Pikachu line (chain 10) ──────────────────────────────
|
|
295
|
+
{
|
|
296
|
+
id: 25,
|
|
297
|
+
name: "Pikachu",
|
|
298
|
+
types: ["Electric"],
|
|
299
|
+
baseStats: { hp: 35, attack: 55, defense: 30, speed: 90, special: 50 },
|
|
300
|
+
expGroup: "medium_fast",
|
|
301
|
+
evolutionChainId: 10,
|
|
302
|
+
rarity: "uncommon",
|
|
303
|
+
catchRate: 190,
|
|
304
|
+
description: "Sparks of inspiration for every new feature branch.",
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
id: 26,
|
|
308
|
+
name: "Raichu",
|
|
309
|
+
types: ["Electric"],
|
|
310
|
+
baseStats: { hp: 60, attack: 90, defense: 55, speed: 100, special: 90 },
|
|
311
|
+
expGroup: "medium_fast",
|
|
312
|
+
evolutionChainId: 10,
|
|
313
|
+
rarity: "uncommon",
|
|
314
|
+
catchRate: 75,
|
|
315
|
+
description: "Overclocked and shipping features at lightning speed.",
|
|
316
|
+
},
|
|
317
|
+
|
|
318
|
+
// ── Sandshrew line (chain 11) ────────────────────────────
|
|
319
|
+
{
|
|
320
|
+
id: 27,
|
|
321
|
+
name: "Sandshrew",
|
|
322
|
+
types: ["Ground"],
|
|
323
|
+
baseStats: { hp: 50, attack: 75, defense: 85, speed: 40, special: 30 },
|
|
324
|
+
expGroup: "medium_fast",
|
|
325
|
+
evolutionChainId: 11,
|
|
326
|
+
rarity: "common",
|
|
327
|
+
catchRate: 255,
|
|
328
|
+
description: "Digs through stack traces to find root causes.",
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
id: 28,
|
|
332
|
+
name: "Sandslash",
|
|
333
|
+
types: ["Ground"],
|
|
334
|
+
baseStats: { hp: 75, attack: 100, defense: 110, speed: 65, special: 55 },
|
|
335
|
+
expGroup: "medium_fast",
|
|
336
|
+
evolutionChainId: 11,
|
|
337
|
+
rarity: "common",
|
|
338
|
+
catchRate: 90,
|
|
339
|
+
description: "Slashes through merge conflicts with sharp claws.",
|
|
340
|
+
},
|
|
341
|
+
|
|
342
|
+
// ── Nidoran♀ line (chain 12) ─────────────────────────────
|
|
343
|
+
{
|
|
344
|
+
id: 29,
|
|
345
|
+
name: "Nidoran♀",
|
|
346
|
+
types: ["Poison"],
|
|
347
|
+
baseStats: { hp: 55, attack: 47, defense: 52, speed: 41, special: 40 },
|
|
348
|
+
expGroup: "medium_slow",
|
|
349
|
+
evolutionChainId: 12,
|
|
350
|
+
rarity: "common",
|
|
351
|
+
catchRate: 235,
|
|
352
|
+
description: "A small but venomous code reviewer.",
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
id: 30,
|
|
356
|
+
name: "Nidorina",
|
|
357
|
+
types: ["Poison"],
|
|
358
|
+
baseStats: { hp: 70, attack: 62, defense: 67, speed: 56, special: 55 },
|
|
359
|
+
expGroup: "medium_slow",
|
|
360
|
+
evolutionChainId: 12,
|
|
361
|
+
rarity: "common",
|
|
362
|
+
catchRate: 120,
|
|
363
|
+
description: "Files detailed bug reports with surgical precision.",
|
|
364
|
+
},
|
|
365
|
+
{
|
|
366
|
+
id: 31,
|
|
367
|
+
name: "Nidoqueen",
|
|
368
|
+
types: ["Poison", "Ground"],
|
|
369
|
+
baseStats: { hp: 90, attack: 82, defense: 87, speed: 76, special: 75 },
|
|
370
|
+
expGroup: "medium_slow",
|
|
371
|
+
evolutionChainId: 12,
|
|
372
|
+
rarity: "uncommon",
|
|
373
|
+
catchRate: 45,
|
|
374
|
+
description: "Reigns over the CI pipeline with an iron claw.",
|
|
375
|
+
},
|
|
376
|
+
|
|
377
|
+
// ── Nidoran♂ line (chain 13) ─────────────────────────────
|
|
378
|
+
{
|
|
379
|
+
id: 32,
|
|
380
|
+
name: "Nidoran♂",
|
|
381
|
+
types: ["Poison"],
|
|
382
|
+
baseStats: { hp: 46, attack: 57, defense: 40, speed: 50, special: 40 },
|
|
383
|
+
expGroup: "medium_slow",
|
|
384
|
+
evolutionChainId: 13,
|
|
385
|
+
rarity: "common",
|
|
386
|
+
catchRate: 235,
|
|
387
|
+
description: "Pokes holes in flawed logic with its tiny horn.",
|
|
388
|
+
},
|
|
389
|
+
{
|
|
390
|
+
id: 33,
|
|
391
|
+
name: "Nidorino",
|
|
392
|
+
types: ["Poison"],
|
|
393
|
+
baseStats: { hp: 61, attack: 72, defense: 57, speed: 65, special: 55 },
|
|
394
|
+
expGroup: "medium_slow",
|
|
395
|
+
evolutionChainId: 13,
|
|
396
|
+
rarity: "common",
|
|
397
|
+
catchRate: 120,
|
|
398
|
+
description: "Charges through code reviews leaving no bug alive.",
|
|
399
|
+
},
|
|
400
|
+
{
|
|
401
|
+
id: 34,
|
|
402
|
+
name: "Nidoking",
|
|
403
|
+
types: ["Poison", "Ground"],
|
|
404
|
+
baseStats: { hp: 81, attack: 92, defense: 77, speed: 85, special: 75 },
|
|
405
|
+
expGroup: "medium_slow",
|
|
406
|
+
evolutionChainId: 13,
|
|
407
|
+
rarity: "uncommon",
|
|
408
|
+
catchRate: 45,
|
|
409
|
+
description: "Commands the deployment army with absolute authority.",
|
|
410
|
+
},
|
|
411
|
+
|
|
412
|
+
// ── Clefairy line (chain 14) ─────────────────────────────
|
|
413
|
+
{
|
|
414
|
+
id: 35,
|
|
415
|
+
name: "Clefairy",
|
|
416
|
+
types: ["Normal"],
|
|
417
|
+
baseStats: { hp: 70, attack: 45, defense: 48, speed: 35, special: 60 },
|
|
418
|
+
expGroup: "fast",
|
|
419
|
+
evolutionChainId: 14,
|
|
420
|
+
rarity: "uncommon",
|
|
421
|
+
catchRate: 150,
|
|
422
|
+
description: "Waves its fingers and magically fixes build errors.",
|
|
423
|
+
},
|
|
424
|
+
{
|
|
425
|
+
id: 36,
|
|
426
|
+
name: "Clefable",
|
|
427
|
+
types: ["Normal"],
|
|
428
|
+
baseStats: { hp: 95, attack: 70, defense: 73, speed: 60, special: 85 },
|
|
429
|
+
expGroup: "fast",
|
|
430
|
+
evolutionChainId: 14,
|
|
431
|
+
rarity: "uncommon",
|
|
432
|
+
catchRate: 25,
|
|
433
|
+
description: "Its metronome randomly picks the perfect algorithm.",
|
|
434
|
+
},
|
|
435
|
+
|
|
436
|
+
// ── Vulpix line (chain 15) ───────────────────────────────
|
|
437
|
+
{
|
|
438
|
+
id: 37,
|
|
439
|
+
name: "Vulpix",
|
|
440
|
+
types: ["Fire"],
|
|
441
|
+
baseStats: { hp: 38, attack: 41, defense: 40, speed: 65, special: 65 },
|
|
442
|
+
expGroup: "medium_fast",
|
|
443
|
+
evolutionChainId: 15,
|
|
444
|
+
rarity: "uncommon",
|
|
445
|
+
catchRate: 190,
|
|
446
|
+
description: "Six tails, six microservices, all perfectly split.",
|
|
447
|
+
},
|
|
448
|
+
{
|
|
449
|
+
id: 38,
|
|
450
|
+
name: "Ninetales",
|
|
451
|
+
types: ["Fire"],
|
|
452
|
+
baseStats: { hp: 73, attack: 76, defense: 75, speed: 100, special: 100 },
|
|
453
|
+
expGroup: "medium_fast",
|
|
454
|
+
evolutionChainId: 15,
|
|
455
|
+
rarity: "uncommon",
|
|
456
|
+
catchRate: 75,
|
|
457
|
+
description: "Lives for 1000 sprints and remembers every retro.",
|
|
458
|
+
},
|
|
459
|
+
|
|
460
|
+
// ── Jigglypuff line (chain 16) ───────────────────────────
|
|
461
|
+
{
|
|
462
|
+
id: 39,
|
|
463
|
+
name: "Jigglypuff",
|
|
464
|
+
types: ["Normal"],
|
|
465
|
+
baseStats: { hp: 115, attack: 45, defense: 20, speed: 20, special: 25 },
|
|
466
|
+
expGroup: "fast",
|
|
467
|
+
evolutionChainId: 16,
|
|
468
|
+
rarity: "common",
|
|
469
|
+
catchRate: 170,
|
|
470
|
+
description: "Sings your linter to sleep so it stops complaining.",
|
|
471
|
+
},
|
|
472
|
+
{
|
|
473
|
+
id: 40,
|
|
474
|
+
name: "Wigglytuff",
|
|
475
|
+
types: ["Normal"],
|
|
476
|
+
baseStats: { hp: 140, attack: 70, defense: 45, speed: 45, special: 50 },
|
|
477
|
+
expGroup: "fast",
|
|
478
|
+
evolutionChainId: 16,
|
|
479
|
+
rarity: "common",
|
|
480
|
+
catchRate: 50,
|
|
481
|
+
description: "Inflates estimates until deadlines feel comfortable.",
|
|
482
|
+
},
|
|
483
|
+
|
|
484
|
+
// ── Zubat line (chain 17) ────────────────────────────────
|
|
485
|
+
{
|
|
486
|
+
id: 41,
|
|
487
|
+
name: "Zubat",
|
|
488
|
+
types: ["Poison", "Flying"],
|
|
489
|
+
baseStats: { hp: 40, attack: 45, defense: 35, speed: 55, special: 40 },
|
|
490
|
+
expGroup: "medium_fast",
|
|
491
|
+
evolutionChainId: 17,
|
|
492
|
+
rarity: "common",
|
|
493
|
+
catchRate: 255,
|
|
494
|
+
description: "Appears in every cave and every node_modules folder.",
|
|
495
|
+
},
|
|
496
|
+
{
|
|
497
|
+
id: 42,
|
|
498
|
+
name: "Golbat",
|
|
499
|
+
types: ["Poison", "Flying"],
|
|
500
|
+
baseStats: { hp: 75, attack: 80, defense: 70, speed: 90, special: 75 },
|
|
501
|
+
expGroup: "medium_fast",
|
|
502
|
+
evolutionChainId: 17,
|
|
503
|
+
rarity: "common",
|
|
504
|
+
catchRate: 90,
|
|
505
|
+
description: "Drains memory leaks dry with its gaping mouth.",
|
|
506
|
+
},
|
|
507
|
+
|
|
508
|
+
// ── Oddish line (chain 18) ───────────────────────────────
|
|
509
|
+
{
|
|
510
|
+
id: 43,
|
|
511
|
+
name: "Oddish",
|
|
512
|
+
types: ["Grass", "Poison"],
|
|
513
|
+
baseStats: { hp: 45, attack: 50, defense: 55, speed: 30, special: 75 },
|
|
514
|
+
expGroup: "medium_slow",
|
|
515
|
+
evolutionChainId: 18,
|
|
516
|
+
rarity: "common",
|
|
517
|
+
catchRate: 255,
|
|
518
|
+
description: "Plants seeds of good architecture in every repo.",
|
|
519
|
+
},
|
|
520
|
+
{
|
|
521
|
+
id: 44,
|
|
522
|
+
name: "Gloom",
|
|
523
|
+
types: ["Grass", "Poison"],
|
|
524
|
+
baseStats: { hp: 60, attack: 65, defense: 70, speed: 40, special: 85 },
|
|
525
|
+
expGroup: "medium_slow",
|
|
526
|
+
evolutionChainId: 18,
|
|
527
|
+
rarity: "common",
|
|
528
|
+
catchRate: 120,
|
|
529
|
+
description: "Its stinky code smell reveals hidden anti-patterns.",
|
|
530
|
+
},
|
|
531
|
+
{
|
|
532
|
+
id: 45,
|
|
533
|
+
name: "Vileplume",
|
|
534
|
+
types: ["Grass", "Poison"],
|
|
535
|
+
baseStats: { hp: 75, attack: 80, defense: 85, speed: 50, special: 100 },
|
|
536
|
+
expGroup: "medium_slow",
|
|
537
|
+
evolutionChainId: 18,
|
|
538
|
+
rarity: "uncommon",
|
|
539
|
+
catchRate: 45,
|
|
540
|
+
description: "Releases toxic spore clouds of breaking changes.",
|
|
541
|
+
},
|
|
542
|
+
|
|
543
|
+
// ── Paras line (chain 19) ────────────────────────────────
|
|
544
|
+
{
|
|
545
|
+
id: 46,
|
|
546
|
+
name: "Paras",
|
|
547
|
+
types: ["Bug", "Grass"],
|
|
548
|
+
baseStats: { hp: 35, attack: 70, defense: 55, speed: 25, special: 55 },
|
|
549
|
+
expGroup: "medium_fast",
|
|
550
|
+
evolutionChainId: 19,
|
|
551
|
+
rarity: "common",
|
|
552
|
+
catchRate: 190,
|
|
553
|
+
description: "Parasitic dependencies slowly take over your build.",
|
|
554
|
+
},
|
|
555
|
+
{
|
|
556
|
+
id: 47,
|
|
557
|
+
name: "Parasect",
|
|
558
|
+
types: ["Bug", "Grass"],
|
|
559
|
+
baseStats: { hp: 60, attack: 95, defense: 80, speed: 30, special: 80 },
|
|
560
|
+
expGroup: "medium_fast",
|
|
561
|
+
evolutionChainId: 19,
|
|
562
|
+
rarity: "common",
|
|
563
|
+
catchRate: 75,
|
|
564
|
+
description: "Fully consumed by its dependency tree mushroom.",
|
|
565
|
+
},
|
|
566
|
+
|
|
567
|
+
// ── Venonat line (chain 20) ──────────────────────────────
|
|
568
|
+
{
|
|
569
|
+
id: 48,
|
|
570
|
+
name: "Venonat",
|
|
571
|
+
types: ["Bug", "Poison"],
|
|
572
|
+
baseStats: { hp: 60, attack: 55, defense: 50, speed: 45, special: 40 },
|
|
573
|
+
expGroup: "medium_fast",
|
|
574
|
+
evolutionChainId: 20,
|
|
575
|
+
rarity: "common",
|
|
576
|
+
catchRate: 190,
|
|
577
|
+
description: "Big compound eyes spot off-by-one errors instantly.",
|
|
578
|
+
},
|
|
579
|
+
{
|
|
580
|
+
id: 49,
|
|
581
|
+
name: "Venomoth",
|
|
582
|
+
types: ["Bug", "Poison"],
|
|
583
|
+
baseStats: { hp: 70, attack: 65, defense: 60, speed: 90, special: 90 },
|
|
584
|
+
expGroup: "medium_fast",
|
|
585
|
+
evolutionChainId: 20,
|
|
586
|
+
rarity: "common",
|
|
587
|
+
catchRate: 75,
|
|
588
|
+
description: "Attracted to the light of your monitor at 3 AM.",
|
|
589
|
+
},
|
|
590
|
+
|
|
591
|
+
// ── Diglett line (chain 21) ──────────────────────────────
|
|
592
|
+
{
|
|
593
|
+
id: 50,
|
|
594
|
+
name: "Diglett",
|
|
595
|
+
types: ["Ground"],
|
|
596
|
+
baseStats: { hp: 10, attack: 55, defense: 25, speed: 95, special: 45 },
|
|
597
|
+
expGroup: "medium_fast",
|
|
598
|
+
evolutionChainId: 21,
|
|
599
|
+
rarity: "common",
|
|
600
|
+
catchRate: 255,
|
|
601
|
+
description: "Tunnels through layers of abstraction underground.",
|
|
602
|
+
},
|
|
603
|
+
{
|
|
604
|
+
id: 51,
|
|
605
|
+
name: "Dugtrio",
|
|
606
|
+
types: ["Ground"],
|
|
607
|
+
baseStats: { hp: 35, attack: 80, defense: 50, speed: 120, special: 70 },
|
|
608
|
+
expGroup: "medium_fast",
|
|
609
|
+
evolutionChainId: 21,
|
|
610
|
+
rarity: "common",
|
|
611
|
+
catchRate: 50,
|
|
612
|
+
description: "Three heads, three parallel threads, zero deadlocks.",
|
|
613
|
+
},
|
|
614
|
+
|
|
615
|
+
// ── Meowth line (chain 22) ───────────────────────────────
|
|
616
|
+
{
|
|
617
|
+
id: 52,
|
|
618
|
+
name: "Meowth",
|
|
619
|
+
types: ["Normal"],
|
|
620
|
+
baseStats: { hp: 40, attack: 45, defense: 35, speed: 90, special: 40 },
|
|
621
|
+
expGroup: "medium_fast",
|
|
622
|
+
evolutionChainId: 22,
|
|
623
|
+
rarity: "common",
|
|
624
|
+
catchRate: 255,
|
|
625
|
+
description: "Collects shiny GitHub stars with Pay Day commits.",
|
|
626
|
+
},
|
|
627
|
+
{
|
|
628
|
+
id: 53,
|
|
629
|
+
name: "Persian",
|
|
630
|
+
types: ["Normal"],
|
|
631
|
+
baseStats: { hp: 65, attack: 70, defense: 60, speed: 115, special: 65 },
|
|
632
|
+
expGroup: "medium_fast",
|
|
633
|
+
evolutionChainId: 22,
|
|
634
|
+
rarity: "common",
|
|
635
|
+
catchRate: 90,
|
|
636
|
+
description: "Elegantly refactors code with aristocratic taste.",
|
|
637
|
+
},
|
|
638
|
+
|
|
639
|
+
// ── Psyduck line (chain 23) ──────────────────────────────
|
|
640
|
+
{
|
|
641
|
+
id: 54,
|
|
642
|
+
name: "Psyduck",
|
|
643
|
+
types: ["Water"],
|
|
644
|
+
baseStats: { hp: 50, attack: 52, defense: 48, speed: 55, special: 50 },
|
|
645
|
+
expGroup: "medium_fast",
|
|
646
|
+
evolutionChainId: 23,
|
|
647
|
+
rarity: "common",
|
|
648
|
+
catchRate: 190,
|
|
649
|
+
description: "Perpetual headache from reading undocumented APIs.",
|
|
650
|
+
},
|
|
651
|
+
{
|
|
652
|
+
id: 55,
|
|
653
|
+
name: "Golduck",
|
|
654
|
+
types: ["Water"],
|
|
655
|
+
baseStats: { hp: 80, attack: 82, defense: 78, speed: 85, special: 80 },
|
|
656
|
+
expGroup: "medium_fast",
|
|
657
|
+
evolutionChainId: 23,
|
|
658
|
+
rarity: "common",
|
|
659
|
+
catchRate: 75,
|
|
660
|
+
description: "Headache cleared — now streams data at full speed.",
|
|
661
|
+
},
|
|
662
|
+
|
|
663
|
+
// ── Mankey line (chain 24) ───────────────────────────────
|
|
664
|
+
{
|
|
665
|
+
id: 56,
|
|
666
|
+
name: "Mankey",
|
|
667
|
+
types: ["Fighting"],
|
|
668
|
+
baseStats: { hp: 40, attack: 80, defense: 35, speed: 70, special: 35 },
|
|
669
|
+
expGroup: "medium_fast",
|
|
670
|
+
evolutionChainId: 24,
|
|
671
|
+
rarity: "common",
|
|
672
|
+
catchRate: 190,
|
|
673
|
+
description: "Rage-codes after the third failed CI build.",
|
|
674
|
+
},
|
|
675
|
+
{
|
|
676
|
+
id: 57,
|
|
677
|
+
name: "Primeape",
|
|
678
|
+
types: ["Fighting"],
|
|
679
|
+
baseStats: { hp: 65, attack: 105, defense: 60, speed: 95, special: 60 },
|
|
680
|
+
expGroup: "medium_fast",
|
|
681
|
+
evolutionChainId: 24,
|
|
682
|
+
rarity: "common",
|
|
683
|
+
catchRate: 75,
|
|
684
|
+
description: "Permanently angry at whoever wrote this regex.",
|
|
685
|
+
},
|
|
686
|
+
|
|
687
|
+
// ── Growlithe line (chain 25) ────────────────────────────
|
|
688
|
+
{
|
|
689
|
+
id: 58,
|
|
690
|
+
name: "Growlithe",
|
|
691
|
+
types: ["Fire"],
|
|
692
|
+
baseStats: { hp: 55, attack: 70, defense: 45, speed: 60, special: 50 },
|
|
693
|
+
expGroup: "slow",
|
|
694
|
+
evolutionChainId: 25,
|
|
695
|
+
rarity: "uncommon",
|
|
696
|
+
catchRate: 190,
|
|
697
|
+
description: "A loyal guard dog watching over your test suite.",
|
|
698
|
+
},
|
|
699
|
+
{
|
|
700
|
+
id: 59,
|
|
701
|
+
name: "Arcanine",
|
|
702
|
+
types: ["Fire"],
|
|
703
|
+
baseStats: { hp: 90, attack: 110, defense: 80, speed: 95, special: 80 },
|
|
704
|
+
expGroup: "slow",
|
|
705
|
+
evolutionChainId: 25,
|
|
706
|
+
rarity: "uncommon",
|
|
707
|
+
catchRate: 75,
|
|
708
|
+
description: "Legendary speed — ships features before the sprint ends.",
|
|
709
|
+
},
|
|
710
|
+
|
|
711
|
+
// ── Poliwag line (chain 26) ──────────────────────────────
|
|
712
|
+
{
|
|
713
|
+
id: 60,
|
|
714
|
+
name: "Poliwag",
|
|
715
|
+
types: ["Water"],
|
|
716
|
+
baseStats: { hp: 40, attack: 50, defense: 40, speed: 90, special: 40 },
|
|
717
|
+
expGroup: "medium_slow",
|
|
718
|
+
evolutionChainId: 26,
|
|
719
|
+
rarity: "common",
|
|
720
|
+
catchRate: 255,
|
|
721
|
+
description: "Its spiral belly visualizes recursive algorithms.",
|
|
722
|
+
},
|
|
723
|
+
{
|
|
724
|
+
id: 61,
|
|
725
|
+
name: "Poliwhirl",
|
|
726
|
+
types: ["Water"],
|
|
727
|
+
baseStats: { hp: 65, attack: 65, defense: 65, speed: 90, special: 50 },
|
|
728
|
+
expGroup: "medium_slow",
|
|
729
|
+
evolutionChainId: 26,
|
|
730
|
+
rarity: "common",
|
|
731
|
+
catchRate: 120,
|
|
732
|
+
description: "Hypnotizes reviewers into approving any PR.",
|
|
733
|
+
},
|
|
734
|
+
{
|
|
735
|
+
id: 62,
|
|
736
|
+
name: "Poliwrath",
|
|
737
|
+
types: ["Water", "Fighting"],
|
|
738
|
+
baseStats: { hp: 90, attack: 85, defense: 95, speed: 70, special: 70 },
|
|
739
|
+
expGroup: "medium_slow",
|
|
740
|
+
evolutionChainId: 26,
|
|
741
|
+
rarity: "uncommon",
|
|
742
|
+
catchRate: 45,
|
|
743
|
+
description: "Punches through blockers in the sprint backlog.",
|
|
744
|
+
},
|
|
745
|
+
|
|
746
|
+
// ── Abra line (chain 27) ─────────────────────────────────
|
|
747
|
+
{
|
|
748
|
+
id: 63,
|
|
749
|
+
name: "Abra",
|
|
750
|
+
types: ["Psychic"],
|
|
751
|
+
baseStats: { hp: 25, attack: 20, defense: 15, speed: 90, special: 105 },
|
|
752
|
+
expGroup: "medium_slow",
|
|
753
|
+
evolutionChainId: 27,
|
|
754
|
+
rarity: "uncommon",
|
|
755
|
+
catchRate: 200,
|
|
756
|
+
description: "Teleports away before you can finish code review.",
|
|
757
|
+
},
|
|
758
|
+
{
|
|
759
|
+
id: 64,
|
|
760
|
+
name: "Kadabra",
|
|
761
|
+
types: ["Psychic"],
|
|
762
|
+
baseStats: { hp: 40, attack: 35, defense: 30, speed: 105, special: 120 },
|
|
763
|
+
expGroup: "medium_slow",
|
|
764
|
+
evolutionChainId: 27,
|
|
765
|
+
rarity: "uncommon",
|
|
766
|
+
catchRate: 100,
|
|
767
|
+
description: "Bends spoons and type systems with psychic power.",
|
|
768
|
+
},
|
|
769
|
+
{
|
|
770
|
+
id: 65,
|
|
771
|
+
name: "Alakazam",
|
|
772
|
+
types: ["Psychic"],
|
|
773
|
+
baseStats: { hp: 55, attack: 50, defense: 45, speed: 120, special: 135 },
|
|
774
|
+
expGroup: "medium_slow",
|
|
775
|
+
evolutionChainId: 27,
|
|
776
|
+
rarity: "uncommon",
|
|
777
|
+
catchRate: 50,
|
|
778
|
+
description: "IQ of 5000 — solves NP-hard problems before lunch.",
|
|
779
|
+
},
|
|
780
|
+
|
|
781
|
+
// ── Machop line (chain 28) ───────────────────────────────
|
|
782
|
+
{
|
|
783
|
+
id: 66,
|
|
784
|
+
name: "Machop",
|
|
785
|
+
types: ["Fighting"],
|
|
786
|
+
baseStats: { hp: 70, attack: 80, defense: 50, speed: 35, special: 35 },
|
|
787
|
+
expGroup: "medium_slow",
|
|
788
|
+
evolutionChainId: 28,
|
|
789
|
+
rarity: "common",
|
|
790
|
+
catchRate: 180,
|
|
791
|
+
description: "Brute-forces solutions when elegance fails.",
|
|
792
|
+
},
|
|
793
|
+
{
|
|
794
|
+
id: 67,
|
|
795
|
+
name: "Machoke",
|
|
796
|
+
types: ["Fighting"],
|
|
797
|
+
baseStats: { hp: 80, attack: 100, defense: 70, speed: 45, special: 50 },
|
|
798
|
+
expGroup: "medium_slow",
|
|
799
|
+
evolutionChainId: 28,
|
|
800
|
+
rarity: "common",
|
|
801
|
+
catchRate: 90,
|
|
802
|
+
description: "Flexes while benchmarking O(n) algorithms.",
|
|
803
|
+
},
|
|
804
|
+
{
|
|
805
|
+
id: 68,
|
|
806
|
+
name: "Machamp",
|
|
807
|
+
types: ["Fighting"],
|
|
808
|
+
baseStats: { hp: 90, attack: 130, defense: 80, speed: 55, special: 65 },
|
|
809
|
+
expGroup: "medium_slow",
|
|
810
|
+
evolutionChainId: 28,
|
|
811
|
+
rarity: "uncommon",
|
|
812
|
+
catchRate: 45,
|
|
813
|
+
description: "Four arms type on four keyboards simultaneously.",
|
|
814
|
+
},
|
|
815
|
+
|
|
816
|
+
// ── Bellsprout line (chain 29) ────────────────────────────
|
|
817
|
+
{
|
|
818
|
+
id: 69,
|
|
819
|
+
name: "Bellsprout",
|
|
820
|
+
types: ["Grass", "Poison"],
|
|
821
|
+
baseStats: { hp: 50, attack: 75, defense: 35, speed: 40, special: 70 },
|
|
822
|
+
expGroup: "medium_slow",
|
|
823
|
+
evolutionChainId: 29,
|
|
824
|
+
rarity: "common",
|
|
825
|
+
catchRate: 255,
|
|
826
|
+
description: "Sprouts new feature branches in every direction.",
|
|
827
|
+
},
|
|
828
|
+
{
|
|
829
|
+
id: 70,
|
|
830
|
+
name: "Weepinbell",
|
|
831
|
+
types: ["Grass", "Poison"],
|
|
832
|
+
baseStats: { hp: 65, attack: 90, defense: 50, speed: 55, special: 85 },
|
|
833
|
+
expGroup: "medium_slow",
|
|
834
|
+
evolutionChainId: 29,
|
|
835
|
+
rarity: "common",
|
|
836
|
+
catchRate: 120,
|
|
837
|
+
description: "Weeps acidic tears over poorly formatted JSON.",
|
|
838
|
+
},
|
|
839
|
+
{
|
|
840
|
+
id: 71,
|
|
841
|
+
name: "Victreebel",
|
|
842
|
+
types: ["Grass", "Poison"],
|
|
843
|
+
baseStats: { hp: 80, attack: 105, defense: 65, speed: 70, special: 100 },
|
|
844
|
+
expGroup: "medium_slow",
|
|
845
|
+
evolutionChainId: 29,
|
|
846
|
+
rarity: "uncommon",
|
|
847
|
+
catchRate: 45,
|
|
848
|
+
description: "Devours entire legacy codebases for breakfast.",
|
|
849
|
+
},
|
|
850
|
+
|
|
851
|
+
// ── Tentacool line (chain 30) ────────────────────────────
|
|
852
|
+
{
|
|
853
|
+
id: 72,
|
|
854
|
+
name: "Tentacool",
|
|
855
|
+
types: ["Water", "Poison"],
|
|
856
|
+
baseStats: { hp: 40, attack: 40, defense: 35, speed: 70, special: 100 },
|
|
857
|
+
expGroup: "slow",
|
|
858
|
+
evolutionChainId: 30,
|
|
859
|
+
rarity: "common",
|
|
860
|
+
catchRate: 190,
|
|
861
|
+
description: "Wraps tentacles around every open port it finds.",
|
|
862
|
+
},
|
|
863
|
+
{
|
|
864
|
+
id: 73,
|
|
865
|
+
name: "Tentacruel",
|
|
866
|
+
types: ["Water", "Poison"],
|
|
867
|
+
baseStats: { hp: 80, attack: 70, defense: 65, speed: 100, special: 120 },
|
|
868
|
+
expGroup: "slow",
|
|
869
|
+
evolutionChainId: 30,
|
|
870
|
+
rarity: "common",
|
|
871
|
+
catchRate: 60,
|
|
872
|
+
description: "80 tentacles manage 80 microservice connections.",
|
|
873
|
+
},
|
|
874
|
+
|
|
875
|
+
// ── Geodude line (chain 31) ──────────────────────────────
|
|
876
|
+
{
|
|
877
|
+
id: 74,
|
|
878
|
+
name: "Geodude",
|
|
879
|
+
types: ["Rock", "Ground"],
|
|
880
|
+
baseStats: { hp: 40, attack: 80, defense: 100, speed: 20, special: 30 },
|
|
881
|
+
expGroup: "medium_slow",
|
|
882
|
+
evolutionChainId: 31,
|
|
883
|
+
rarity: "common",
|
|
884
|
+
catchRate: 255,
|
|
885
|
+
description: "Rock-solid test coverage that never crumbles.",
|
|
886
|
+
},
|
|
887
|
+
{
|
|
888
|
+
id: 75,
|
|
889
|
+
name: "Graveler",
|
|
890
|
+
types: ["Rock", "Ground"],
|
|
891
|
+
baseStats: { hp: 55, attack: 95, defense: 115, speed: 35, special: 45 },
|
|
892
|
+
expGroup: "medium_slow",
|
|
893
|
+
evolutionChainId: 31,
|
|
894
|
+
rarity: "common",
|
|
895
|
+
catchRate: 120,
|
|
896
|
+
description: "Rolls downhill through your deployment pipeline.",
|
|
897
|
+
},
|
|
898
|
+
{
|
|
899
|
+
id: 76,
|
|
900
|
+
name: "Golem",
|
|
901
|
+
types: ["Rock", "Ground"],
|
|
902
|
+
baseStats: { hp: 80, attack: 110, defense: 130, speed: 45, special: 55 },
|
|
903
|
+
expGroup: "medium_slow",
|
|
904
|
+
evolutionChainId: 31,
|
|
905
|
+
rarity: "uncommon",
|
|
906
|
+
catchRate: 45,
|
|
907
|
+
description: "An immovable fortress of defensive programming.",
|
|
908
|
+
},
|
|
909
|
+
|
|
910
|
+
// ── Ponyta line (chain 32) ───────────────────────────────
|
|
911
|
+
{
|
|
912
|
+
id: 77,
|
|
913
|
+
name: "Ponyta",
|
|
914
|
+
types: ["Fire"],
|
|
915
|
+
baseStats: { hp: 50, attack: 85, defense: 55, speed: 90, special: 65 },
|
|
916
|
+
expGroup: "medium_fast",
|
|
917
|
+
evolutionChainId: 32,
|
|
918
|
+
rarity: "common",
|
|
919
|
+
catchRate: 190,
|
|
920
|
+
description: "Gallops through PRs at blazing review speed.",
|
|
921
|
+
},
|
|
922
|
+
{
|
|
923
|
+
id: 78,
|
|
924
|
+
name: "Rapidash",
|
|
925
|
+
types: ["Fire"],
|
|
926
|
+
baseStats: { hp: 65, attack: 100, defense: 70, speed: 105, special: 80 },
|
|
927
|
+
expGroup: "medium_fast",
|
|
928
|
+
evolutionChainId: 32,
|
|
929
|
+
rarity: "common",
|
|
930
|
+
catchRate: 60,
|
|
931
|
+
description: "The fastest hot-reload in the entire stable.",
|
|
932
|
+
},
|
|
933
|
+
|
|
934
|
+
// ── Slowpoke line (chain 33) ─────────────────────────────
|
|
935
|
+
{
|
|
936
|
+
id: 79,
|
|
937
|
+
name: "Slowpoke",
|
|
938
|
+
types: ["Water", "Psychic"],
|
|
939
|
+
baseStats: { hp: 90, attack: 65, defense: 65, speed: 15, special: 40 },
|
|
940
|
+
expGroup: "medium_fast",
|
|
941
|
+
evolutionChainId: 33,
|
|
942
|
+
rarity: "common",
|
|
943
|
+
catchRate: 190,
|
|
944
|
+
description: "Still processing the build from three hours ago.",
|
|
945
|
+
},
|
|
946
|
+
{
|
|
947
|
+
id: 80,
|
|
948
|
+
name: "Slowbro",
|
|
949
|
+
types: ["Water", "Psychic"],
|
|
950
|
+
baseStats: { hp: 95, attack: 75, defense: 110, speed: 30, special: 80 },
|
|
951
|
+
expGroup: "medium_fast",
|
|
952
|
+
evolutionChainId: 33,
|
|
953
|
+
rarity: "common",
|
|
954
|
+
catchRate: 75,
|
|
955
|
+
description: "Finally understood the bug — after the fix shipped.",
|
|
956
|
+
},
|
|
957
|
+
|
|
958
|
+
// ── Magnemite line (chain 34) ────────────────────────────
|
|
959
|
+
{
|
|
960
|
+
id: 81,
|
|
961
|
+
name: "Magnemite",
|
|
962
|
+
types: ["Electric"],
|
|
963
|
+
baseStats: { hp: 25, attack: 35, defense: 70, speed: 45, special: 95 },
|
|
964
|
+
expGroup: "medium_fast",
|
|
965
|
+
evolutionChainId: 34,
|
|
966
|
+
rarity: "common",
|
|
967
|
+
catchRate: 190,
|
|
968
|
+
description: "Magnetically attracted to poorly shielded APIs.",
|
|
969
|
+
},
|
|
970
|
+
{
|
|
971
|
+
id: 82,
|
|
972
|
+
name: "Magneton",
|
|
973
|
+
types: ["Electric"],
|
|
974
|
+
baseStats: { hp: 50, attack: 60, defense: 95, speed: 70, special: 120 },
|
|
975
|
+
expGroup: "medium_fast",
|
|
976
|
+
evolutionChainId: 34,
|
|
977
|
+
rarity: "common",
|
|
978
|
+
catchRate: 60,
|
|
979
|
+
description: "Three units linked — a perfectly load-balanced cluster.",
|
|
980
|
+
},
|
|
981
|
+
|
|
982
|
+
// ── Farfetch'd (chain 35) ───────────────────────────────
|
|
983
|
+
{
|
|
984
|
+
id: 83,
|
|
985
|
+
name: "Farfetch'd",
|
|
986
|
+
types: ["Normal", "Flying"],
|
|
987
|
+
baseStats: { hp: 52, attack: 65, defense: 55, speed: 60, special: 58 },
|
|
988
|
+
expGroup: "medium_fast",
|
|
989
|
+
evolutionChainId: 35,
|
|
990
|
+
rarity: "uncommon",
|
|
991
|
+
catchRate: 45,
|
|
992
|
+
description: "Carries a leek and a far-fetched technical proposal.",
|
|
993
|
+
},
|
|
994
|
+
|
|
995
|
+
// ── Doduo line (chain 36) ────────────────────────────────
|
|
996
|
+
{
|
|
997
|
+
id: 84,
|
|
998
|
+
name: "Doduo",
|
|
999
|
+
types: ["Normal", "Flying"],
|
|
1000
|
+
baseStats: { hp: 35, attack: 85, defense: 45, speed: 75, special: 35 },
|
|
1001
|
+
expGroup: "medium_fast",
|
|
1002
|
+
evolutionChainId: 36,
|
|
1003
|
+
rarity: "common",
|
|
1004
|
+
catchRate: 190,
|
|
1005
|
+
description: "Two heads pair-programming on the same keyboard.",
|
|
1006
|
+
},
|
|
1007
|
+
{
|
|
1008
|
+
id: 85,
|
|
1009
|
+
name: "Dodrio",
|
|
1010
|
+
types: ["Normal", "Flying"],
|
|
1011
|
+
baseStats: { hp: 60, attack: 110, defense: 70, speed: 100, special: 60 },
|
|
1012
|
+
expGroup: "medium_fast",
|
|
1013
|
+
evolutionChainId: 36,
|
|
1014
|
+
rarity: "common",
|
|
1015
|
+
catchRate: 45,
|
|
1016
|
+
description: "Three heads mob-programming at triple velocity.",
|
|
1017
|
+
},
|
|
1018
|
+
|
|
1019
|
+
// ── Seel line (chain 37) ─────────────────────────────────
|
|
1020
|
+
{
|
|
1021
|
+
id: 86,
|
|
1022
|
+
name: "Seel",
|
|
1023
|
+
types: ["Water"],
|
|
1024
|
+
baseStats: { hp: 65, attack: 45, defense: 55, speed: 45, special: 70 },
|
|
1025
|
+
expGroup: "medium_fast",
|
|
1026
|
+
evolutionChainId: 37,
|
|
1027
|
+
rarity: "common",
|
|
1028
|
+
catchRate: 190,
|
|
1029
|
+
description: "Seels the deal on every code review approval.",
|
|
1030
|
+
},
|
|
1031
|
+
{
|
|
1032
|
+
id: 87,
|
|
1033
|
+
name: "Dewgong",
|
|
1034
|
+
types: ["Water", "Ice"],
|
|
1035
|
+
baseStats: { hp: 90, attack: 70, defense: 80, speed: 70, special: 95 },
|
|
1036
|
+
expGroup: "medium_fast",
|
|
1037
|
+
evolutionChainId: 37,
|
|
1038
|
+
rarity: "common",
|
|
1039
|
+
catchRate: 75,
|
|
1040
|
+
description: "Gracefully glides through frozen legacy codebases.",
|
|
1041
|
+
},
|
|
1042
|
+
|
|
1043
|
+
// ── Grimer line (chain 38) ───────────────────────────────
|
|
1044
|
+
{
|
|
1045
|
+
id: 88,
|
|
1046
|
+
name: "Grimer",
|
|
1047
|
+
types: ["Poison"],
|
|
1048
|
+
baseStats: { hp: 80, attack: 80, defense: 50, speed: 25, special: 40 },
|
|
1049
|
+
expGroup: "medium_fast",
|
|
1050
|
+
evolutionChainId: 38,
|
|
1051
|
+
rarity: "common",
|
|
1052
|
+
catchRate: 190,
|
|
1053
|
+
description: "Born from toxic waste left by npm install.",
|
|
1054
|
+
},
|
|
1055
|
+
{
|
|
1056
|
+
id: 89,
|
|
1057
|
+
name: "Muk",
|
|
1058
|
+
types: ["Poison"],
|
|
1059
|
+
baseStats: { hp: 105, attack: 105, defense: 75, speed: 50, special: 65 },
|
|
1060
|
+
expGroup: "medium_fast",
|
|
1061
|
+
evolutionChainId: 38,
|
|
1062
|
+
rarity: "common",
|
|
1063
|
+
catchRate: 75,
|
|
1064
|
+
description: "An amorphous blob of unmaintainable spaghetti code.",
|
|
1065
|
+
},
|
|
1066
|
+
|
|
1067
|
+
// ── Shellder line (chain 39) ─────────────────────────────
|
|
1068
|
+
{
|
|
1069
|
+
id: 90,
|
|
1070
|
+
name: "Shellder",
|
|
1071
|
+
types: ["Water"],
|
|
1072
|
+
baseStats: { hp: 30, attack: 65, defense: 100, speed: 40, special: 45 },
|
|
1073
|
+
expGroup: "slow",
|
|
1074
|
+
evolutionChainId: 39,
|
|
1075
|
+
rarity: "common",
|
|
1076
|
+
catchRate: 190,
|
|
1077
|
+
description: "Clamps shut on any PR that lacks test coverage.",
|
|
1078
|
+
},
|
|
1079
|
+
{
|
|
1080
|
+
id: 91,
|
|
1081
|
+
name: "Cloyster",
|
|
1082
|
+
types: ["Water", "Ice"],
|
|
1083
|
+
baseStats: { hp: 50, attack: 95, defense: 180, speed: 70, special: 85 },
|
|
1084
|
+
expGroup: "slow",
|
|
1085
|
+
evolutionChainId: 39,
|
|
1086
|
+
rarity: "uncommon",
|
|
1087
|
+
catchRate: 60,
|
|
1088
|
+
description: "Impenetrable defense — 180 DEF, zero vulnerabilities.",
|
|
1089
|
+
},
|
|
1090
|
+
|
|
1091
|
+
// ── Gastly line (chain 40) ───────────────────────────────
|
|
1092
|
+
{
|
|
1093
|
+
id: 92,
|
|
1094
|
+
name: "Gastly",
|
|
1095
|
+
types: ["Ghost", "Poison"],
|
|
1096
|
+
baseStats: { hp: 30, attack: 35, defense: 30, speed: 80, special: 100 },
|
|
1097
|
+
expGroup: "medium_slow",
|
|
1098
|
+
evolutionChainId: 40,
|
|
1099
|
+
rarity: "common",
|
|
1100
|
+
catchRate: 190,
|
|
1101
|
+
description: "A phantom bug that vanishes when you add logging.",
|
|
1102
|
+
},
|
|
1103
|
+
{
|
|
1104
|
+
id: 93,
|
|
1105
|
+
name: "Haunter",
|
|
1106
|
+
types: ["Ghost", "Poison"],
|
|
1107
|
+
baseStats: { hp: 45, attack: 50, defense: 45, speed: 95, special: 115 },
|
|
1108
|
+
expGroup: "medium_slow",
|
|
1109
|
+
evolutionChainId: 40,
|
|
1110
|
+
rarity: "common",
|
|
1111
|
+
catchRate: 90,
|
|
1112
|
+
description: "Haunts your codebase with race conditions at night.",
|
|
1113
|
+
},
|
|
1114
|
+
{
|
|
1115
|
+
id: 94,
|
|
1116
|
+
name: "Gengar",
|
|
1117
|
+
types: ["Ghost", "Poison"],
|
|
1118
|
+
baseStats: { hp: 60, attack: 65, defense: 60, speed: 110, special: 130 },
|
|
1119
|
+
expGroup: "medium_slow",
|
|
1120
|
+
evolutionChainId: 40,
|
|
1121
|
+
rarity: "uncommon",
|
|
1122
|
+
catchRate: 45,
|
|
1123
|
+
description: "Hides in your shadow and whispers edge cases.",
|
|
1124
|
+
},
|
|
1125
|
+
|
|
1126
|
+
// ── Onix (chain 41) ──────────────────────────────────────
|
|
1127
|
+
{
|
|
1128
|
+
id: 95,
|
|
1129
|
+
name: "Onix",
|
|
1130
|
+
types: ["Rock", "Ground"],
|
|
1131
|
+
baseStats: { hp: 35, attack: 45, defense: 160, speed: 70, special: 30 },
|
|
1132
|
+
expGroup: "medium_fast",
|
|
1133
|
+
evolutionChainId: 41,
|
|
1134
|
+
rarity: "uncommon",
|
|
1135
|
+
catchRate: 45,
|
|
1136
|
+
description: "A monolith that refuses to be broken into services.",
|
|
1137
|
+
},
|
|
1138
|
+
|
|
1139
|
+
// ── Drowzee line (chain 42) ──────────────────────────────
|
|
1140
|
+
{
|
|
1141
|
+
id: 96,
|
|
1142
|
+
name: "Drowzee",
|
|
1143
|
+
types: ["Psychic"],
|
|
1144
|
+
baseStats: { hp: 60, attack: 48, defense: 45, speed: 42, special: 90 },
|
|
1145
|
+
expGroup: "medium_fast",
|
|
1146
|
+
evolutionChainId: 42,
|
|
1147
|
+
rarity: "common",
|
|
1148
|
+
catchRate: 190,
|
|
1149
|
+
description: "Eats your dreams of shipping on time.",
|
|
1150
|
+
},
|
|
1151
|
+
{
|
|
1152
|
+
id: 97,
|
|
1153
|
+
name: "Hypno",
|
|
1154
|
+
types: ["Psychic"],
|
|
1155
|
+
baseStats: { hp: 85, attack: 73, defense: 70, speed: 67, special: 115 },
|
|
1156
|
+
expGroup: "medium_fast",
|
|
1157
|
+
evolutionChainId: 42,
|
|
1158
|
+
rarity: "common",
|
|
1159
|
+
catchRate: 75,
|
|
1160
|
+
description: "Hypnotizes you into one more commit before bed.",
|
|
1161
|
+
},
|
|
1162
|
+
|
|
1163
|
+
// ── Krabby line (chain 43) ───────────────────────────────
|
|
1164
|
+
{
|
|
1165
|
+
id: 98,
|
|
1166
|
+
name: "Krabby",
|
|
1167
|
+
types: ["Water"],
|
|
1168
|
+
baseStats: { hp: 30, attack: 105, defense: 90, speed: 50, special: 25 },
|
|
1169
|
+
expGroup: "medium_fast",
|
|
1170
|
+
evolutionChainId: 43,
|
|
1171
|
+
rarity: "common",
|
|
1172
|
+
catchRate: 225,
|
|
1173
|
+
description: "Pinches off small bugs with oversized claws.",
|
|
1174
|
+
},
|
|
1175
|
+
{
|
|
1176
|
+
id: 99,
|
|
1177
|
+
name: "Kingler",
|
|
1178
|
+
types: ["Water"],
|
|
1179
|
+
baseStats: { hp: 55, attack: 130, defense: 115, speed: 75, special: 50 },
|
|
1180
|
+
expGroup: "medium_fast",
|
|
1181
|
+
evolutionChainId: 43,
|
|
1182
|
+
rarity: "common",
|
|
1183
|
+
catchRate: 60,
|
|
1184
|
+
description: "King of crustacean-driven development.",
|
|
1185
|
+
},
|
|
1186
|
+
|
|
1187
|
+
// ── Voltorb line (chain 44) ──────────────────────────────
|
|
1188
|
+
{
|
|
1189
|
+
id: 100,
|
|
1190
|
+
name: "Voltorb",
|
|
1191
|
+
types: ["Electric"],
|
|
1192
|
+
baseStats: { hp: 40, attack: 30, defense: 50, speed: 100, special: 55 },
|
|
1193
|
+
expGroup: "medium_fast",
|
|
1194
|
+
evolutionChainId: 44,
|
|
1195
|
+
rarity: "common",
|
|
1196
|
+
catchRate: 190,
|
|
1197
|
+
description: "Looks like a Pokeball but explodes like rm -rf.",
|
|
1198
|
+
},
|
|
1199
|
+
{
|
|
1200
|
+
id: 101,
|
|
1201
|
+
name: "Electrode",
|
|
1202
|
+
types: ["Electric"],
|
|
1203
|
+
baseStats: { hp: 60, attack: 50, defense: 70, speed: 140, special: 80 },
|
|
1204
|
+
expGroup: "medium_fast",
|
|
1205
|
+
evolutionChainId: 44,
|
|
1206
|
+
rarity: "common",
|
|
1207
|
+
catchRate: 60,
|
|
1208
|
+
description: "The fastest self-destruct in deployment history.",
|
|
1209
|
+
},
|
|
1210
|
+
|
|
1211
|
+
// ── Exeggcute line (chain 45) ────────────────────────────
|
|
1212
|
+
{
|
|
1213
|
+
id: 102,
|
|
1214
|
+
name: "Exeggcute",
|
|
1215
|
+
types: ["Grass", "Psychic"],
|
|
1216
|
+
baseStats: { hp: 60, attack: 40, defense: 80, speed: 40, special: 60 },
|
|
1217
|
+
expGroup: "slow",
|
|
1218
|
+
evolutionChainId: 45,
|
|
1219
|
+
rarity: "uncommon",
|
|
1220
|
+
catchRate: 90,
|
|
1221
|
+
description: "Six eggs — six microservices waiting to hatch.",
|
|
1222
|
+
},
|
|
1223
|
+
{
|
|
1224
|
+
id: 103,
|
|
1225
|
+
name: "Exeggutor",
|
|
1226
|
+
types: ["Grass", "Psychic"],
|
|
1227
|
+
baseStats: { hp: 95, attack: 95, defense: 85, speed: 55, special: 125 },
|
|
1228
|
+
expGroup: "slow",
|
|
1229
|
+
evolutionChainId: 45,
|
|
1230
|
+
rarity: "uncommon",
|
|
1231
|
+
catchRate: 45,
|
|
1232
|
+
description: "Three heads arguing about which framework to use.",
|
|
1233
|
+
},
|
|
1234
|
+
|
|
1235
|
+
// ── Cubone line (chain 46) ───────────────────────────────
|
|
1236
|
+
{
|
|
1237
|
+
id: 104,
|
|
1238
|
+
name: "Cubone",
|
|
1239
|
+
types: ["Ground"],
|
|
1240
|
+
baseStats: { hp: 50, attack: 50, defense: 95, speed: 35, special: 40 },
|
|
1241
|
+
expGroup: "medium_fast",
|
|
1242
|
+
evolutionChainId: 46,
|
|
1243
|
+
rarity: "common",
|
|
1244
|
+
catchRate: 190,
|
|
1245
|
+
description: "Mourns its deprecated parent class with a bone club.",
|
|
1246
|
+
},
|
|
1247
|
+
{
|
|
1248
|
+
id: 105,
|
|
1249
|
+
name: "Marowak",
|
|
1250
|
+
types: ["Ground"],
|
|
1251
|
+
baseStats: { hp: 60, attack: 80, defense: 110, speed: 45, special: 50 },
|
|
1252
|
+
expGroup: "medium_fast",
|
|
1253
|
+
evolutionChainId: 46,
|
|
1254
|
+
rarity: "common",
|
|
1255
|
+
catchRate: 75,
|
|
1256
|
+
description: "Wields its bone like a seasoned vim power user.",
|
|
1257
|
+
},
|
|
1258
|
+
|
|
1259
|
+
// ── Hitmonlee (chain 47) ─────────────────────────────────
|
|
1260
|
+
{
|
|
1261
|
+
id: 106,
|
|
1262
|
+
name: "Hitmonlee",
|
|
1263
|
+
types: ["Fighting"],
|
|
1264
|
+
baseStats: { hp: 50, attack: 120, defense: 53, speed: 87, special: 35 },
|
|
1265
|
+
expGroup: "medium_fast",
|
|
1266
|
+
evolutionChainId: 47,
|
|
1267
|
+
rarity: "uncommon",
|
|
1268
|
+
catchRate: 45,
|
|
1269
|
+
description: "Kicks bugs out of the codebase with spring-loaded legs.",
|
|
1270
|
+
},
|
|
1271
|
+
|
|
1272
|
+
// ── Hitmonchan (chain 48) ────────────────────────────────
|
|
1273
|
+
{
|
|
1274
|
+
id: 107,
|
|
1275
|
+
name: "Hitmonchan",
|
|
1276
|
+
types: ["Fighting"],
|
|
1277
|
+
baseStats: { hp: 50, attack: 105, defense: 79, speed: 76, special: 35 },
|
|
1278
|
+
expGroup: "medium_fast",
|
|
1279
|
+
evolutionChainId: 48,
|
|
1280
|
+
rarity: "uncommon",
|
|
1281
|
+
catchRate: 45,
|
|
1282
|
+
description: "Punches out rapid-fire commits like a boxing champ.",
|
|
1283
|
+
},
|
|
1284
|
+
|
|
1285
|
+
// ── Lickitung (chain 49) ─────────────────────────────────
|
|
1286
|
+
{
|
|
1287
|
+
id: 108,
|
|
1288
|
+
name: "Lickitung",
|
|
1289
|
+
types: ["Normal"],
|
|
1290
|
+
baseStats: { hp: 90, attack: 55, defense: 75, speed: 30, special: 60 },
|
|
1291
|
+
expGroup: "medium_fast",
|
|
1292
|
+
evolutionChainId: 49,
|
|
1293
|
+
rarity: "uncommon",
|
|
1294
|
+
catchRate: 45,
|
|
1295
|
+
description: "Licks every file in the repo to mark its territory.",
|
|
1296
|
+
},
|
|
1297
|
+
|
|
1298
|
+
// ── Koffing line (chain 50) ──────────────────────────────
|
|
1299
|
+
{
|
|
1300
|
+
id: 109,
|
|
1301
|
+
name: "Koffing",
|
|
1302
|
+
types: ["Poison"],
|
|
1303
|
+
baseStats: { hp: 40, attack: 65, defense: 95, speed: 35, special: 60 },
|
|
1304
|
+
expGroup: "medium_fast",
|
|
1305
|
+
evolutionChainId: 50,
|
|
1306
|
+
rarity: "common",
|
|
1307
|
+
catchRate: 190,
|
|
1308
|
+
description: "Emits toxic fumes of code smell from every method.",
|
|
1309
|
+
},
|
|
1310
|
+
{
|
|
1311
|
+
id: 110,
|
|
1312
|
+
name: "Weezing",
|
|
1313
|
+
types: ["Poison"],
|
|
1314
|
+
baseStats: { hp: 65, attack: 90, defense: 120, speed: 60, special: 85 },
|
|
1315
|
+
expGroup: "medium_fast",
|
|
1316
|
+
evolutionChainId: 50,
|
|
1317
|
+
rarity: "common",
|
|
1318
|
+
catchRate: 60,
|
|
1319
|
+
description: "Double the heads, double the code review comments.",
|
|
1320
|
+
},
|
|
1321
|
+
|
|
1322
|
+
// ── Rhyhorn line (chain 51) ──────────────────────────────
|
|
1323
|
+
{
|
|
1324
|
+
id: 111,
|
|
1325
|
+
name: "Rhyhorn",
|
|
1326
|
+
types: ["Ground", "Rock"],
|
|
1327
|
+
baseStats: { hp: 80, attack: 85, defense: 95, speed: 25, special: 30 },
|
|
1328
|
+
expGroup: "slow",
|
|
1329
|
+
evolutionChainId: 51,
|
|
1330
|
+
rarity: "uncommon",
|
|
1331
|
+
catchRate: 120,
|
|
1332
|
+
description: "Charges through refactors without looking back.",
|
|
1333
|
+
},
|
|
1334
|
+
{
|
|
1335
|
+
id: 112,
|
|
1336
|
+
name: "Rhydon",
|
|
1337
|
+
types: ["Ground", "Rock"],
|
|
1338
|
+
baseStats: { hp: 105, attack: 130, defense: 120, speed: 40, special: 45 },
|
|
1339
|
+
expGroup: "slow",
|
|
1340
|
+
evolutionChainId: 51,
|
|
1341
|
+
rarity: "uncommon",
|
|
1342
|
+
catchRate: 60,
|
|
1343
|
+
description: "Drills through database schemas like solid rock.",
|
|
1344
|
+
},
|
|
1345
|
+
|
|
1346
|
+
// ── Chansey (chain 52) ───────────────────────────────────
|
|
1347
|
+
{
|
|
1348
|
+
id: 113,
|
|
1349
|
+
name: "Chansey",
|
|
1350
|
+
types: ["Normal"],
|
|
1351
|
+
baseStats: { hp: 250, attack: 5, defense: 5, speed: 50, special: 105 },
|
|
1352
|
+
expGroup: "fast",
|
|
1353
|
+
evolutionChainId: 52,
|
|
1354
|
+
rarity: "rare",
|
|
1355
|
+
catchRate: 30,
|
|
1356
|
+
description: "Carries a healing egg that restores crashed servers.",
|
|
1357
|
+
},
|
|
1358
|
+
|
|
1359
|
+
// ── Tangela (chain 53) ───────────────────────────────────
|
|
1360
|
+
{
|
|
1361
|
+
id: 114,
|
|
1362
|
+
name: "Tangela",
|
|
1363
|
+
types: ["Grass"],
|
|
1364
|
+
baseStats: { hp: 65, attack: 55, defense: 115, speed: 60, special: 100 },
|
|
1365
|
+
expGroup: "medium_fast",
|
|
1366
|
+
evolutionChainId: 53,
|
|
1367
|
+
rarity: "uncommon",
|
|
1368
|
+
catchRate: 45,
|
|
1369
|
+
description: "A tangled mess of spaghetti code come to life.",
|
|
1370
|
+
},
|
|
1371
|
+
|
|
1372
|
+
// ── Kangaskhan (chain 54) ────────────────────────────────
|
|
1373
|
+
{
|
|
1374
|
+
id: 115,
|
|
1375
|
+
name: "Kangaskhan",
|
|
1376
|
+
types: ["Normal"],
|
|
1377
|
+
baseStats: { hp: 105, attack: 95, defense: 80, speed: 90, special: 40 },
|
|
1378
|
+
expGroup: "medium_fast",
|
|
1379
|
+
evolutionChainId: 54,
|
|
1380
|
+
rarity: "rare",
|
|
1381
|
+
catchRate: 45,
|
|
1382
|
+
description: "Carries a child process in its pouch at all times.",
|
|
1383
|
+
},
|
|
1384
|
+
|
|
1385
|
+
// ── Horsea line (chain 55) ───────────────────────────────
|
|
1386
|
+
{
|
|
1387
|
+
id: 116,
|
|
1388
|
+
name: "Horsea",
|
|
1389
|
+
types: ["Water"],
|
|
1390
|
+
baseStats: { hp: 30, attack: 40, defense: 70, speed: 60, special: 70 },
|
|
1391
|
+
expGroup: "medium_fast",
|
|
1392
|
+
evolutionChainId: 55,
|
|
1393
|
+
rarity: "common",
|
|
1394
|
+
catchRate: 225,
|
|
1395
|
+
description: "Sprays ink to obfuscate its source code.",
|
|
1396
|
+
},
|
|
1397
|
+
{
|
|
1398
|
+
id: 117,
|
|
1399
|
+
name: "Seadra",
|
|
1400
|
+
types: ["Water"],
|
|
1401
|
+
baseStats: { hp: 55, attack: 65, defense: 95, speed: 85, special: 95 },
|
|
1402
|
+
expGroup: "medium_fast",
|
|
1403
|
+
evolutionChainId: 55,
|
|
1404
|
+
rarity: "common",
|
|
1405
|
+
catchRate: 75,
|
|
1406
|
+
description: "Spins in whirlpools of async/await callbacks.",
|
|
1407
|
+
},
|
|
1408
|
+
|
|
1409
|
+
// ── Goldeen line (chain 56) ──────────────────────────────
|
|
1410
|
+
{
|
|
1411
|
+
id: 118,
|
|
1412
|
+
name: "Goldeen",
|
|
1413
|
+
types: ["Water"],
|
|
1414
|
+
baseStats: { hp: 45, attack: 67, defense: 60, speed: 63, special: 50 },
|
|
1415
|
+
expGroup: "medium_fast",
|
|
1416
|
+
evolutionChainId: 56,
|
|
1417
|
+
rarity: "common",
|
|
1418
|
+
catchRate: 225,
|
|
1419
|
+
description: "Splashes uselessly until it learns a real framework.",
|
|
1420
|
+
},
|
|
1421
|
+
{
|
|
1422
|
+
id: 119,
|
|
1423
|
+
name: "Seaking",
|
|
1424
|
+
types: ["Water"],
|
|
1425
|
+
baseStats: { hp: 80, attack: 92, defense: 65, speed: 68, special: 80 },
|
|
1426
|
+
expGroup: "medium_fast",
|
|
1427
|
+
evolutionChainId: 56,
|
|
1428
|
+
rarity: "common",
|
|
1429
|
+
catchRate: 60,
|
|
1430
|
+
description: "Its horn pierces through the toughest tech debt.",
|
|
1431
|
+
},
|
|
1432
|
+
|
|
1433
|
+
// ── Staryu line (chain 57) ───────────────────────────────
|
|
1434
|
+
{
|
|
1435
|
+
id: 120,
|
|
1436
|
+
name: "Staryu",
|
|
1437
|
+
types: ["Water"],
|
|
1438
|
+
baseStats: { hp: 30, attack: 45, defense: 55, speed: 85, special: 70 },
|
|
1439
|
+
expGroup: "slow",
|
|
1440
|
+
evolutionChainId: 57,
|
|
1441
|
+
rarity: "uncommon",
|
|
1442
|
+
catchRate: 225,
|
|
1443
|
+
description: "Its core gem glows green when all tests pass.",
|
|
1444
|
+
},
|
|
1445
|
+
{
|
|
1446
|
+
id: 121,
|
|
1447
|
+
name: "Starmie",
|
|
1448
|
+
types: ["Water", "Psychic"],
|
|
1449
|
+
baseStats: { hp: 60, attack: 75, defense: 85, speed: 115, special: 100 },
|
|
1450
|
+
expGroup: "slow",
|
|
1451
|
+
evolutionChainId: 57,
|
|
1452
|
+
rarity: "uncommon",
|
|
1453
|
+
catchRate: 60,
|
|
1454
|
+
description: "Spins rapidly generating perfect code coverage.",
|
|
1455
|
+
},
|
|
1456
|
+
|
|
1457
|
+
// ── Mr. Mime (chain 58) ──────────────────────────────────
|
|
1458
|
+
{
|
|
1459
|
+
id: 122,
|
|
1460
|
+
name: "Mr. Mime",
|
|
1461
|
+
types: ["Psychic"],
|
|
1462
|
+
baseStats: { hp: 40, attack: 45, defense: 65, speed: 90, special: 100 },
|
|
1463
|
+
expGroup: "medium_fast",
|
|
1464
|
+
evolutionChainId: 58,
|
|
1465
|
+
rarity: "uncommon",
|
|
1466
|
+
catchRate: 45,
|
|
1467
|
+
description: "Creates invisible walls of input validation.",
|
|
1468
|
+
},
|
|
1469
|
+
|
|
1470
|
+
// ── Scyther (chain 59) ──────────────────────────────────
|
|
1471
|
+
{
|
|
1472
|
+
id: 123,
|
|
1473
|
+
name: "Scyther",
|
|
1474
|
+
types: ["Bug", "Flying"],
|
|
1475
|
+
baseStats: { hp: 70, attack: 110, defense: 80, speed: 105, special: 55 },
|
|
1476
|
+
expGroup: "medium_fast",
|
|
1477
|
+
evolutionChainId: 59,
|
|
1478
|
+
rarity: "rare",
|
|
1479
|
+
catchRate: 45,
|
|
1480
|
+
description: "Slices through code reviews with mantis precision.",
|
|
1481
|
+
},
|
|
1482
|
+
|
|
1483
|
+
// ── Jynx (chain 60) ─────────────────────────────────────
|
|
1484
|
+
{
|
|
1485
|
+
id: 124,
|
|
1486
|
+
name: "Jynx",
|
|
1487
|
+
types: ["Ice", "Psychic"],
|
|
1488
|
+
baseStats: { hp: 65, attack: 50, defense: 35, speed: 95, special: 95 },
|
|
1489
|
+
expGroup: "medium_fast",
|
|
1490
|
+
evolutionChainId: 60,
|
|
1491
|
+
rarity: "uncommon",
|
|
1492
|
+
catchRate: 45,
|
|
1493
|
+
description: "Freezes flaky tests with a psychic stare.",
|
|
1494
|
+
},
|
|
1495
|
+
|
|
1496
|
+
// ── Electabuzz (chain 61) ────────────────────────────────
|
|
1497
|
+
{
|
|
1498
|
+
id: 125,
|
|
1499
|
+
name: "Electabuzz",
|
|
1500
|
+
types: ["Electric"],
|
|
1501
|
+
baseStats: { hp: 65, attack: 83, defense: 57, speed: 105, special: 85 },
|
|
1502
|
+
expGroup: "medium_fast",
|
|
1503
|
+
evolutionChainId: 61,
|
|
1504
|
+
rarity: "uncommon",
|
|
1505
|
+
catchRate: 45,
|
|
1506
|
+
description: "Powers through builds with raw electrical energy.",
|
|
1507
|
+
},
|
|
1508
|
+
|
|
1509
|
+
// ── Magmar (chain 62) ────────────────────────────────────
|
|
1510
|
+
{
|
|
1511
|
+
id: 126,
|
|
1512
|
+
name: "Magmar",
|
|
1513
|
+
types: ["Fire"],
|
|
1514
|
+
baseStats: { hp: 65, attack: 95, defense: 57, speed: 93, special: 85 },
|
|
1515
|
+
expGroup: "medium_fast",
|
|
1516
|
+
evolutionChainId: 62,
|
|
1517
|
+
rarity: "uncommon",
|
|
1518
|
+
catchRate: 45,
|
|
1519
|
+
description: "Burns through CPU cycles with fiery computation.",
|
|
1520
|
+
},
|
|
1521
|
+
|
|
1522
|
+
// ── Pinsir (chain 63) ───────────────────────────────────
|
|
1523
|
+
{
|
|
1524
|
+
id: 127,
|
|
1525
|
+
name: "Pinsir",
|
|
1526
|
+
types: ["Bug"],
|
|
1527
|
+
baseStats: { hp: 65, attack: 125, defense: 100, speed: 85, special: 55 },
|
|
1528
|
+
expGroup: "slow",
|
|
1529
|
+
evolutionChainId: 63,
|
|
1530
|
+
rarity: "rare",
|
|
1531
|
+
catchRate: 45,
|
|
1532
|
+
description: "Crushes bugs in its pincers with extreme prejudice.",
|
|
1533
|
+
},
|
|
1534
|
+
|
|
1535
|
+
// ── Tauros (chain 64) ───────────────────────────────────
|
|
1536
|
+
{
|
|
1537
|
+
id: 128,
|
|
1538
|
+
name: "Tauros",
|
|
1539
|
+
types: ["Normal"],
|
|
1540
|
+
baseStats: { hp: 75, attack: 100, defense: 95, speed: 110, special: 70 },
|
|
1541
|
+
expGroup: "slow",
|
|
1542
|
+
evolutionChainId: 64,
|
|
1543
|
+
rarity: "rare",
|
|
1544
|
+
catchRate: 45,
|
|
1545
|
+
description: "Charges through sprint goals like a raging bull.",
|
|
1546
|
+
},
|
|
1547
|
+
|
|
1548
|
+
// ── Magikarp line (chain 65) ─────────────────────────────
|
|
1549
|
+
{
|
|
1550
|
+
id: 129,
|
|
1551
|
+
name: "Magikarp",
|
|
1552
|
+
types: ["Water"],
|
|
1553
|
+
baseStats: { hp: 20, attack: 10, defense: 55, speed: 80, special: 20 },
|
|
1554
|
+
expGroup: "slow",
|
|
1555
|
+
evolutionChainId: 65,
|
|
1556
|
+
rarity: "common",
|
|
1557
|
+
catchRate: 255,
|
|
1558
|
+
description: "Splashes helplessly — but keep leveling it up.",
|
|
1559
|
+
},
|
|
1560
|
+
{
|
|
1561
|
+
id: 130,
|
|
1562
|
+
name: "Gyarados",
|
|
1563
|
+
types: ["Water", "Flying"],
|
|
1564
|
+
baseStats: { hp: 95, attack: 125, defense: 79, speed: 81, special: 100 },
|
|
1565
|
+
expGroup: "slow",
|
|
1566
|
+
evolutionChainId: 65,
|
|
1567
|
+
rarity: "rare",
|
|
1568
|
+
catchRate: 45,
|
|
1569
|
+
description: "That intern project? It became the main product.",
|
|
1570
|
+
},
|
|
1571
|
+
|
|
1572
|
+
// ── Lapras (chain 66) ────────────────────────────────────
|
|
1573
|
+
{
|
|
1574
|
+
id: 131,
|
|
1575
|
+
name: "Lapras",
|
|
1576
|
+
types: ["Water", "Ice"],
|
|
1577
|
+
baseStats: { hp: 130, attack: 85, defense: 80, speed: 60, special: 95 },
|
|
1578
|
+
expGroup: "slow",
|
|
1579
|
+
evolutionChainId: 66,
|
|
1580
|
+
rarity: "rare",
|
|
1581
|
+
catchRate: 45,
|
|
1582
|
+
description: "Ferries developers safely across the data lake.",
|
|
1583
|
+
},
|
|
1584
|
+
|
|
1585
|
+
// ── Ditto (chain 67) ─────────────────────────────────────
|
|
1586
|
+
{
|
|
1587
|
+
id: 132,
|
|
1588
|
+
name: "Ditto",
|
|
1589
|
+
types: ["Normal"],
|
|
1590
|
+
baseStats: { hp: 48, attack: 48, defense: 48, speed: 48, special: 48 },
|
|
1591
|
+
expGroup: "medium_fast",
|
|
1592
|
+
evolutionChainId: 67,
|
|
1593
|
+
rarity: "uncommon",
|
|
1594
|
+
catchRate: 35,
|
|
1595
|
+
description: "Transforms into whatever interface you need.",
|
|
1596
|
+
},
|
|
1597
|
+
|
|
1598
|
+
// ── Eevee line (chain 68) ────────────────────────────────
|
|
1599
|
+
{
|
|
1600
|
+
id: 133,
|
|
1601
|
+
name: "Eevee",
|
|
1602
|
+
types: ["Normal"],
|
|
1603
|
+
baseStats: { hp: 55, attack: 55, defense: 50, speed: 55, special: 65 },
|
|
1604
|
+
expGroup: "medium_fast",
|
|
1605
|
+
evolutionChainId: 68,
|
|
1606
|
+
rarity: "uncommon",
|
|
1607
|
+
catchRate: 45,
|
|
1608
|
+
description: "Unstable DNA — could evolve into any framework.",
|
|
1609
|
+
},
|
|
1610
|
+
{
|
|
1611
|
+
id: 134,
|
|
1612
|
+
name: "Vaporeon",
|
|
1613
|
+
types: ["Water"],
|
|
1614
|
+
baseStats: { hp: 130, attack: 65, defense: 60, speed: 65, special: 110 },
|
|
1615
|
+
expGroup: "medium_fast",
|
|
1616
|
+
evolutionChainId: 68,
|
|
1617
|
+
rarity: "uncommon",
|
|
1618
|
+
catchRate: 45,
|
|
1619
|
+
description: "Flows like water through every data pipeline.",
|
|
1620
|
+
},
|
|
1621
|
+
{
|
|
1622
|
+
id: 135,
|
|
1623
|
+
name: "Jolteon",
|
|
1624
|
+
types: ["Electric"],
|
|
1625
|
+
baseStats: { hp: 65, attack: 65, defense: 60, speed: 130, special: 110 },
|
|
1626
|
+
expGroup: "medium_fast",
|
|
1627
|
+
evolutionChainId: 68,
|
|
1628
|
+
rarity: "uncommon",
|
|
1629
|
+
catchRate: 45,
|
|
1630
|
+
description: "Electrifyingly fast iteration on feature branches.",
|
|
1631
|
+
},
|
|
1632
|
+
{
|
|
1633
|
+
id: 136,
|
|
1634
|
+
name: "Flareon",
|
|
1635
|
+
types: ["Fire"],
|
|
1636
|
+
baseStats: { hp: 65, attack: 130, defense: 60, speed: 65, special: 110 },
|
|
1637
|
+
expGroup: "medium_fast",
|
|
1638
|
+
evolutionChainId: 68,
|
|
1639
|
+
rarity: "uncommon",
|
|
1640
|
+
catchRate: 45,
|
|
1641
|
+
description: "Sets ablaze any code that fails to meet standards.",
|
|
1642
|
+
},
|
|
1643
|
+
|
|
1644
|
+
// ── Porygon (chain 69) ──────────────────────────────────
|
|
1645
|
+
{
|
|
1646
|
+
id: 137,
|
|
1647
|
+
name: "Porygon",
|
|
1648
|
+
types: ["Normal"],
|
|
1649
|
+
baseStats: { hp: 65, attack: 60, defense: 70, speed: 40, special: 75 },
|
|
1650
|
+
expGroup: "medium_fast",
|
|
1651
|
+
evolutionChainId: 69,
|
|
1652
|
+
rarity: "uncommon",
|
|
1653
|
+
catchRate: 45,
|
|
1654
|
+
description: "Made entirely of code — the first digital Pokemon.",
|
|
1655
|
+
},
|
|
1656
|
+
|
|
1657
|
+
// ── Omanyte line (chain 70) ──────────────────────────────
|
|
1658
|
+
{
|
|
1659
|
+
id: 138,
|
|
1660
|
+
name: "Omanyte",
|
|
1661
|
+
types: ["Rock", "Water"],
|
|
1662
|
+
baseStats: { hp: 35, attack: 40, defense: 100, speed: 35, special: 90 },
|
|
1663
|
+
expGroup: "medium_fast",
|
|
1664
|
+
evolutionChainId: 70,
|
|
1665
|
+
rarity: "uncommon",
|
|
1666
|
+
catchRate: 45,
|
|
1667
|
+
description: "Resurrected from fossilized COBOL source code.",
|
|
1668
|
+
},
|
|
1669
|
+
{
|
|
1670
|
+
id: 139,
|
|
1671
|
+
name: "Omastar",
|
|
1672
|
+
types: ["Rock", "Water"],
|
|
1673
|
+
baseStats: { hp: 70, attack: 60, defense: 125, speed: 55, special: 115 },
|
|
1674
|
+
expGroup: "medium_fast",
|
|
1675
|
+
evolutionChainId: 70,
|
|
1676
|
+
rarity: "uncommon",
|
|
1677
|
+
catchRate: 45,
|
|
1678
|
+
description: "Ancient wisdom makes it a master of legacy systems.",
|
|
1679
|
+
},
|
|
1680
|
+
|
|
1681
|
+
// ── Kabuto line (chain 71) ───────────────────────────────
|
|
1682
|
+
{
|
|
1683
|
+
id: 140,
|
|
1684
|
+
name: "Kabuto",
|
|
1685
|
+
types: ["Rock", "Water"],
|
|
1686
|
+
baseStats: { hp: 30, attack: 80, defense: 90, speed: 55, special: 45 },
|
|
1687
|
+
expGroup: "medium_fast",
|
|
1688
|
+
evolutionChainId: 71,
|
|
1689
|
+
rarity: "uncommon",
|
|
1690
|
+
catchRate: 45,
|
|
1691
|
+
description: "A fossil-era bug tracker brought back to life.",
|
|
1692
|
+
},
|
|
1693
|
+
{
|
|
1694
|
+
id: 141,
|
|
1695
|
+
name: "Kabutops",
|
|
1696
|
+
types: ["Rock", "Water"],
|
|
1697
|
+
baseStats: { hp: 60, attack: 115, defense: 105, speed: 80, special: 70 },
|
|
1698
|
+
expGroup: "medium_fast",
|
|
1699
|
+
evolutionChainId: 71,
|
|
1700
|
+
rarity: "uncommon",
|
|
1701
|
+
catchRate: 45,
|
|
1702
|
+
description: "Scythe arms slice through deprecated code swiftly.",
|
|
1703
|
+
},
|
|
1704
|
+
|
|
1705
|
+
// ── Aerodactyl (chain 72) ───────────────────────────────
|
|
1706
|
+
{
|
|
1707
|
+
id: 142,
|
|
1708
|
+
name: "Aerodactyl",
|
|
1709
|
+
types: ["Rock", "Flying"],
|
|
1710
|
+
baseStats: { hp: 80, attack: 105, defense: 65, speed: 130, special: 60 },
|
|
1711
|
+
expGroup: "slow",
|
|
1712
|
+
evolutionChainId: 72,
|
|
1713
|
+
rarity: "rare",
|
|
1714
|
+
catchRate: 45,
|
|
1715
|
+
description: "A prehistoric predator revived from amber backups.",
|
|
1716
|
+
},
|
|
1717
|
+
|
|
1718
|
+
// ── Snorlax (chain 73) ──────────────────────────────────
|
|
1719
|
+
{
|
|
1720
|
+
id: 143,
|
|
1721
|
+
name: "Snorlax",
|
|
1722
|
+
types: ["Normal"],
|
|
1723
|
+
baseStats: { hp: 160, attack: 110, defense: 65, speed: 30, special: 65 },
|
|
1724
|
+
expGroup: "slow",
|
|
1725
|
+
evolutionChainId: 73,
|
|
1726
|
+
rarity: "rare",
|
|
1727
|
+
catchRate: 25,
|
|
1728
|
+
description: "Blocks the deployment path until poked with a PR.",
|
|
1729
|
+
},
|
|
1730
|
+
|
|
1731
|
+
// ── Articuno (chain 74) ─────────────────────────────────
|
|
1732
|
+
{
|
|
1733
|
+
id: 144,
|
|
1734
|
+
name: "Articuno",
|
|
1735
|
+
types: ["Ice", "Flying"],
|
|
1736
|
+
baseStats: { hp: 90, attack: 85, defense: 100, speed: 85, special: 125 },
|
|
1737
|
+
expGroup: "slow",
|
|
1738
|
+
evolutionChainId: 74,
|
|
1739
|
+
rarity: "legendary",
|
|
1740
|
+
catchRate: 3,
|
|
1741
|
+
description: "Freezes production bugs in their tracks instantly.",
|
|
1742
|
+
},
|
|
1743
|
+
|
|
1744
|
+
// ── Zapdos (chain 75) ───────────────────────────────────
|
|
1745
|
+
{
|
|
1746
|
+
id: 145,
|
|
1747
|
+
name: "Zapdos",
|
|
1748
|
+
types: ["Electric", "Flying"],
|
|
1749
|
+
baseStats: { hp: 90, attack: 90, defense: 85, speed: 100, special: 125 },
|
|
1750
|
+
expGroup: "slow",
|
|
1751
|
+
evolutionChainId: 75,
|
|
1752
|
+
rarity: "legendary",
|
|
1753
|
+
catchRate: 3,
|
|
1754
|
+
description: "Strikes flaky tests with divine thunderbolts.",
|
|
1755
|
+
},
|
|
1756
|
+
|
|
1757
|
+
// ── Moltres (chain 76) ──────────────────────────────────
|
|
1758
|
+
{
|
|
1759
|
+
id: 146,
|
|
1760
|
+
name: "Moltres",
|
|
1761
|
+
types: ["Fire", "Flying"],
|
|
1762
|
+
baseStats: { hp: 90, attack: 100, defense: 90, speed: 90, special: 125 },
|
|
1763
|
+
expGroup: "slow",
|
|
1764
|
+
evolutionChainId: 76,
|
|
1765
|
+
rarity: "legendary",
|
|
1766
|
+
catchRate: 3,
|
|
1767
|
+
description: "Its flames burn away technical debt from the ashes.",
|
|
1768
|
+
},
|
|
1769
|
+
|
|
1770
|
+
// ── Dratini line (chain 77) ──────────────────────────────
|
|
1771
|
+
{
|
|
1772
|
+
id: 147,
|
|
1773
|
+
name: "Dratini",
|
|
1774
|
+
types: ["Dragon"],
|
|
1775
|
+
baseStats: { hp: 41, attack: 64, defense: 45, speed: 50, special: 50 },
|
|
1776
|
+
expGroup: "slow",
|
|
1777
|
+
evolutionChainId: 77,
|
|
1778
|
+
rarity: "rare",
|
|
1779
|
+
catchRate: 45,
|
|
1780
|
+
description: "A tiny dragon hatched from a well-typed generic.",
|
|
1781
|
+
},
|
|
1782
|
+
{
|
|
1783
|
+
id: 148,
|
|
1784
|
+
name: "Dragonair",
|
|
1785
|
+
types: ["Dragon"],
|
|
1786
|
+
baseStats: { hp: 61, attack: 84, defense: 65, speed: 70, special: 70 },
|
|
1787
|
+
expGroup: "slow",
|
|
1788
|
+
evolutionChainId: 77,
|
|
1789
|
+
rarity: "rare",
|
|
1790
|
+
catchRate: 45,
|
|
1791
|
+
description: "Gracefully refactors code with serpentine elegance.",
|
|
1792
|
+
},
|
|
1793
|
+
{
|
|
1794
|
+
id: 149,
|
|
1795
|
+
name: "Dragonite",
|
|
1796
|
+
types: ["Dragon", "Flying"],
|
|
1797
|
+
baseStats: { hp: 91, attack: 134, defense: 95, speed: 80, special: 100 },
|
|
1798
|
+
expGroup: "slow",
|
|
1799
|
+
evolutionChainId: 77,
|
|
1800
|
+
rarity: "rare",
|
|
1801
|
+
catchRate: 45,
|
|
1802
|
+
description: "Delivers flawless deploys across any ocean of code.",
|
|
1803
|
+
},
|
|
1804
|
+
|
|
1805
|
+
// ── Mewtwo (chain 78) ───────────────────────────────────
|
|
1806
|
+
{
|
|
1807
|
+
id: 150,
|
|
1808
|
+
name: "Mewtwo",
|
|
1809
|
+
types: ["Psychic"],
|
|
1810
|
+
baseStats: { hp: 106, attack: 110, defense: 90, speed: 130, special: 154 },
|
|
1811
|
+
expGroup: "slow",
|
|
1812
|
+
evolutionChainId: 78,
|
|
1813
|
+
rarity: "legendary",
|
|
1814
|
+
catchRate: 3,
|
|
1815
|
+
description: "Engineered in a lab to write perfect code forever.",
|
|
1816
|
+
},
|
|
1817
|
+
|
|
1818
|
+
// ── Mew (chain 79) ──────────────────────────────────────
|
|
1819
|
+
{
|
|
1820
|
+
id: 151,
|
|
1821
|
+
name: "Mew",
|
|
1822
|
+
types: ["Psychic"],
|
|
1823
|
+
baseStats: { hp: 100, attack: 100, defense: 100, speed: 100, special: 100 },
|
|
1824
|
+
expGroup: "medium_slow",
|
|
1825
|
+
evolutionChainId: 79,
|
|
1826
|
+
rarity: "mythical",
|
|
1827
|
+
catchRate: 45,
|
|
1828
|
+
description: "Contains the DNA of every programming language.",
|
|
1829
|
+
},
|
|
1830
|
+
] as const satisfies readonly Pokemon[];
|
|
1831
|
+
|
|
1832
|
+
// ── Lookup Maps ──────────────────────────────────────────────
|
|
1833
|
+
|
|
1834
|
+
export const POKEMON_BY_ID: ReadonlyMap<number, Pokemon> = new Map(POKEDEX.map((p) => [p.id, p]));
|
|
1835
|
+
|
|
1836
|
+
export const POKEMON_BY_NAME: ReadonlyMap<string, Pokemon> = new Map(
|
|
1837
|
+
POKEDEX.map((p) => [p.name.toLowerCase(), p]),
|
|
1838
|
+
);
|