diff --git a/README.md b/README.md index 1c0dca7..29c6b6f 100644 --- a/README.md +++ b/README.md @@ -37,8 +37,23 @@ Steel Credits ==== -* [Plague von Karma / May](https://www.youtube.com/channel/UClX86_ilOzCCUBryPCFGiqA) - Director & Programmer +As the open source nature of this project implies, people are free to reuse what's here for their own ends, **so long as credit is given, to this hack and those who worked on what you reuse.** Additionally, we strongly urge you to make any projects using KEP's content open source. KEP strongly supports the [free software movement](https://www.fsf.org/about/) and its four essential freedoms. If you have any questions on the topic of content reuse, contact @ plague_von_karma on Discord. + +KEP spriters hold the policy of requiring sprites to be used with direct credit for non-commerical purposes. Credit Albatross and Martha's Against Humanity in any case of using them. Helix Chamber spriters have a "must credit" policy as well, and precise credits for them are available [here](https://cdn.discordapp.com/attachments/1014321591657709569/1015347305483878521/unknown.png). + +* [Plague von Karma / Llinos Evans](https://www.youtube.com/channel/UClX86_ilOzCCUBryPCFGiqA) - Director & Programmer +* [Rezzo] - Programmer * [ausma](https://ausma.carrd.co/) - Programmer * [Albatross](https://www.smogon.com/forums/threads/albatross-nest.3683217/) - Sprites for many, many Pokemon. * [DuoM2](https://www.smogon.com/forums/members/duom2.364743/) - Technical advice & assistance -* [Frrf](https://www.smogon.com/forums/members/frrf.379142/) - Sprite script assistance, v1.1 icons for scrapped Pokemon. \ No newline at end of file +* [Frrf](https://www.smogon.com/forums/members/frrf.379142/) - Sprite script assistance, v1.1 icons for scrapped Pokemon. + +Helix Chamber sprites: Balumba, Blastyke, Blottle, Buu, Cactormus, Cheep, Coinpur, Croakozuna, Decilla, Fossils, Gaotora, Gavillain (edited by Albatross), Gawarhed, Gorochu (edited by Martha’s Against Humanity), Gorotora, Guardia, Jabetta (edited by Martha’s Against Humanity), Kolta, Kotora, Luxwan, Nidoreign, Omegadge, Orfry, Pendraken, Ramoose, Ribbito, Sharpoon, Totartle, Trampel, Vulpiii, Weirduck + +Albatross sprites: Articuno-G, Blissey, Dugtrio-A, Electivire, Electrode-H, Exeggutor-A, Gentlarva, Glaceon, Golem-A, Hitmontop, Iguanarch, Kleavor, Leafeon, Lickilicky, Marowak-A, Melmetal, Meltan, Moltres-G, Mr. Rime, Muk-A, Ninetales-A, Perrserker, Persian-A, Politoed, Porygon-Z, Pupal, Raichu-A, Rapidash-G, Raticate-A, Rhyperior, Sandslash-A, Sandy Shocks, Scizor, Sirfetch’d, Slowbro-G, Slowking-G, Tangrowth, Toedscool, Toedscruel, Weezing-G, Wiglett, Zapdos-G + +Martha’s Against Humanity sprites: Bellignan (with help from PvK), Mimmeo, Sylveon (with help from Albatross) + +Albatross’ sprites refined by either Martha’s Against Humanity or PvK: Annihilape, Arcanine-H, Bellossom, Carapthor, Kingdra, Magmortar, Magnezone, Ministare, Porygon2, Scream Tail, Squeamata, Tauros-P, Wugtrio + +Official sprites: Crobat, Disturban, Espeon (edited by Martha’s Against Humanity), Slowking, Steelix, Tricules (edited by Martha’s Against Humanity), Umbreon (edited by Martha’s Against Humanity) \ No newline at end of file diff --git a/audio/cries/gorochu.mp3.sfk b/audio/cries/gorochu.mp3.sfk new file mode 100644 index 0000000..e632c5f Binary files /dev/null and b/audio/cries/gorochu.mp3.sfk differ diff --git a/audio/cries/totartle.mp3.sfk b/audio/cries/totartle.mp3.sfk new file mode 100644 index 0000000..45bc631 Binary files /dev/null and b/audio/cries/totartle.mp3.sfk differ diff --git a/formats-data.ts b/formats-data.ts index a94bd4e..d3e0d3f 100644 --- a/formats-data.ts +++ b/formats-data.ts @@ -6,21 +6,21 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { ///db 8D Y8b d8 88 `88. 88 88 88 88 88. 88 .8D 88 `8b d8' 88 `88. 88. 88 88 88 `8b d8' 88 V888 ///`8888Y' `Y88P' 88 YD YP YP 88 88 Y88888P Y8888D' 88 `Y88P' YP YD Y88888P YP YP YP `Y88P' VP V8P //LCs and NFEs are given their respective designations - ///New Pokemon are tiered "New" as if it were a new generation. This should be positioned below OU. + //New Pokemon are tiered "New" as if it were a new generation. They are then moved with the next update. //Old Pokemon have been retiered - puchikoon: { + kolta: { tier: "LC", gen: 1, }, - mikon: { + vulpiii: { tier: "LC", gen: 1, }, - konya: { + coinpur: { tier: "LC", gen: 1, }, - gyopin: { + orfry: { tier: "LC", gen: 1, }, @@ -48,15 +48,15 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { tier: "UU", gen: 1, }, - skimper: { + squeamata: { tier: "LC", gen: 1, }, - bawligua: { + ministare: { tier: "NFE", gen: 1, }, - cryithan: { + iguanarch: { tier: "OU", gen: 1, }, @@ -68,11 +68,11 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { tier: "LC", gen: 1, }, - gyaoon: { + gawarhed: { tier: "UU", gen: 1, }, - omega: { + omegadge: { tier: "OU", gen: 1, }, @@ -80,7 +80,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { tier: "OU", gen: 1, }, - jagg: { + sharpoon: { tier: "UU", gen: 1, }, @@ -92,11 +92,11 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { tier: "UU", gen: 1, }, - deer: { + ramoose: { tier: "OU", gen: 1, }, - barunda: { + balumba: { tier: "UU", gen: 1, }, @@ -108,7 +108,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { tier: "UU", gen: 1, }, - cactus: { + cactormus: { tier: "UU", gen: 1, }, @@ -124,7 +124,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { tier: "UU", gen: 1, }, - crocky: { + gavillain: { tier: "UU", gen: 1, }, @@ -144,39 +144,39 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { tier: "UU", gen: 1, }, - purakkusu: { //1.1 SW97 additions begin here + tricules: { //1.1 SW97 additions begin here tier: "UU", gen: 1, }, - madaamu: { + luxwan: { tier: "OU", gen: 1, }, - tsubomitto: { + bellignan: { tier: "UU", gen: 1, }, - animon: { + mimmeo: { tier: "UU", gen: 1, }, - monja: { + burgela: { tier: "LC", gen: 1, }, - para: { + paraspor: { tier: "LC", gen: 1, }, - hinaazu: { + dodaerie: { tier: "LC", gen: 1, }, - pudi: { + pupperon: { tier: "LC", gen: 1, }, - betobebii: { + smujj: { tier: "LC", gen: 1, }, @@ -341,11 +341,11 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { gen: 1, }, melmetal: { - tier: "New", + tier: "OU", gen: 1, }, annihilape: { - tier: "New", + tier: "OU", gen: 1, }, wiglett: { @@ -353,7 +353,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { gen: 1, }, wugtrio: { - tier: "New", + tier: "UU", gen: 1, }, toedscool: { @@ -369,7 +369,23 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { gen: 1, }, sandyshocks: { - tier: "New", + tier: "OU", + gen: 1, + }, + gentlarva: { + tier: "LC", + gen: 1, + }, + pupal: { + tier: "NFE", + gen: 1, + }, + carapthor: { // ogasawara name + tier: "UU", + gen: 1, + }, + disturban: { + tier: "UU", gen: 1, }, ///d8888b. d88888b d888b d888888b .d88b. d8b db .d8b. db db db .d8b. d8888b. d888888b .d8b. d8b db d888888b .d8888. @@ -511,15 +527,15 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { gen: 1, }, taurospaldeacombat: { - tier: "New", + tier: "UU", gen: 1, }, taurospaldeablaze: { - tier: "New", + tier: "UU", gen: 1, }, taurospaldeaaqua: { - tier: "New", + tier: "UU", gen: 1, }, /// .o88b. db .d8b. .d8888. .d8888. d888888b .o88b. d8888b. .d88b. db dD d88888b d8888b. d88888b db db @@ -742,7 +758,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { }, golbat: { randomBattleMoves: ["confuseray", "doubleedge", "hyperbeam", "megadrain"], - tier: "PU", + tier: "NFE", }, oddish: { randomBattleMoves: ["doubleedge", "sleeppowder"], @@ -765,7 +781,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { randomBattleMoves: ["bodyslam", "megadrain"], essentialMove: "spore", exclusiveMoves: ["growth", "slash", "stunspore", "stunspore", "swordsdance"], - tier: "LC", + tier: "NFE", }, parasect: { randomBattleMoves: ["bodyslam", "megadrain"], @@ -797,7 +813,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { randomBattleMoves: ["bodyslam", "bubblebeam"], essentialMove: "slash", exclusiveMoves: ["thunder", "thunderbolt"], - tier: "LC", + tier: "NFE", }, persian: { randomBattleMoves: ["bodyslam", "bubblebeam"], @@ -825,11 +841,11 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { primeape: { randomBattleMoves: ["bodyslam", "rockslide", "submission"], exclusiveMoves: ["counter", "hyperbeam", "hyperbeam"], - tier: "PU", + tier: "NFE", }, growlithe: { randomBattleMoves: ["bodyslam", "fireblast", "flamethrower", "reflect"], - tier: "LC", + tier: "NFE", }, arcanine: { randomBattleMoves: ["bodyslam", "fireblast", "hyperbeam"], @@ -846,7 +862,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { randomBattleMoves: ["blizzard", "surf"], essentialMove: "amnesia", exclusiveMoves: ["counter", "hypnosis", "hypnosis", "psychic"], - tier: "NU", + tier: "NFE", }, poliwrath: { randomBattleMoves: ["blizzard", "bodyslam", "earthquake", "submission"], @@ -863,7 +879,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { kadabra: { randomBattleMoves: ["psychic", "recover", "thunderwave"], exclusiveMoves: ["counter", "reflect", "reflect", "seismictoss", "seismictoss"], - tier: "UU", + tier: "NFE", }, alakazam: { randomBattleMoves: ["psychic", "recover", "thunderwave"], @@ -927,7 +943,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { }, ponyta: { randomBattleMoves: ["agility", "bodyslam", "fireblast", "reflect"], - tier: "LC", + tier: "NFE", }, rapidash: { randomBattleMoves: ["agility", "bodyslam", "fireblast", "hyperbeam"], @@ -958,11 +974,11 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { farfetchd: { randomBattleMoves: ["agility", "bodyslam", "swordsdance"], essentialMove: "slash", - tier: "PU", + tier: "LC", }, doduo: { randomBattleMoves: ["agility", "bodyslam", "doubleedge", "drillpeck"], - tier: "LC", + tier: "NFE", }, dodrio: { randomBattleMoves: ["agility", "bodyslam", "drillpeck", "hyperbeam"], @@ -982,7 +998,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { randomBattleMoves: ["bodyslam", "sludge"], essentialMove: "explosion", exclusiveMoves: ["fireblast", "megadrain", "megadrain", "screech"], - tier: "LC", + tier: "NFE", }, muk: { randomBattleMoves: ["bodyslam", "sludge"], @@ -1015,13 +1031,13 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { randomBattleMoves: ["explosion", "megadrain", "nightshade", "psychic"], essentialMove: "thunderbolt", exclusiveMoves: ["confuseray", "hypnosis", "hypnosis"], - tier: "UU", + tier: "NFE", }, haunterghost: { randomBattleMoves: ["explosion", "megadrain", "nightshade", "psychic"], essentialMove: "thunderbolt", exclusiveMoves: ["confuseray", "hypnosis", "hypnosis"], - tier: "UU", + tier: "NFE", }, gengar: { randomBattleMoves: ["explosion", "megadrain", "nightshade", "psychic"], @@ -1031,7 +1047,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { }, onix: { randomBattleMoves: ["bodyslam", "earthquake", "explosion", "rockslide"], - tier: "PU", + tier: "LC", }, drowzee: { randomBattleMoves: ["hypnosis", "psychic", "thunderwave"], @@ -1131,7 +1147,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { randomBattleMoves: ["bodyslam", "sleeppowder", "swordsdance"], essentialMove: "megadrain", comboMoves: ["growth", "stunspore"], - tier: "LC", //lol + tier: "NFE", //lol }, kangaskhan: { randomBattleMoves: ["bodyslam", "earthquake", "hyperbeam"], @@ -1173,7 +1189,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { }, mrmime: { randomBattleMoves: ["psychic", "seismictoss", "thunderbolt", "thunderwave"], - tier: "NFE", //jesus christ how horrifying + tier: "NU", }, scyther: { randomBattleMoves: ["agility", "hyperbeam", "slash", "swordsdance"], @@ -1196,7 +1212,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { pinsir: { randomBattleMoves: ["bodyslam", "hyperbeam", "swordsdance"], exclusiveMoves: ["seismictoss", "submission", "submission"], - tier: "PU", + tier: "LC", }, tauros: { randomBattleMoves: ["bodyslam", "earthquake", "hyperbeam"], @@ -1220,7 +1236,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { }, ditto: { randomBattleMoves: ["transform"], - tier: "PU", + tier: "LC", }, eevee: { randomBattleMoves: ["doubleedge", "quickattack", "reflect"], @@ -1237,7 +1253,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { jolteon: { randomBattleMoves: ["bodyslam", "thunderbolt", "thunderwave"], exclusiveMoves: ["agility", "agility", "doublekick", "pinmissile", "pinmissile"], - tier: "OU", + tier: "UU", }, flareon: { randomBattleMoves: ["bodyslam", "fireblast", "hyperbeam", "quickattack"], @@ -1247,7 +1263,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { randomBattleMoves: ["blizzard", "thunderwave"], essentialMove: "recover", exclusiveMoves: ["doubleedge", "psychic", "thunderbolt", "triattack"], - tier: "NU", + tier: "LC", }, omanyte: { randomBattleMoves: ["bodyslam", "hydropump", "rest", "surf"], diff --git a/learnsets.ts b/learnsets.ts index a7db0a3..f8ce485 100644 --- a/learnsets.ts +++ b/learnsets.ts @@ -28,8 +28,9 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { ], }, */ - puchikoon: { + kolta: { learnset: { + tackle: ["2L1"], tailwhip: ["1L1"], ember: ["1L1"], quickattack: ["1L7"], //new legal move for ponyta @@ -52,12 +53,17 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { skullbash: ["1M"], rest: ["1M"], substitute: ["1M"], + headbutt: ["2M"], + doublekick: ["2E"], + hypnosis: ["2E"], + thrash: ["2E"], + lowkick: ["2S0"], }, encounters: [ {generation: 1, level: 5}, ], }, - mikon: { + vulpiii: { learnset: { tailwhip: ["1L1"], ember: ["1L1"], @@ -81,12 +87,15 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { skullbash: ["1M"], rest: ["1M"], substitute: ["1M"], + headbutt: ["2M"], + disable: ["2E"], + hypnosis: ["2E"], }, encounters: [ {generation: 1, level: 5}, ], }, - konya: { + coinpur: { learnset: { scratch: ["1L1"], growl: ["1L1"], @@ -113,12 +122,17 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { skullbash: ["1M"], rest: ["1M"], substitute: ["1M"], + dreameater: ["2M"], + defensecurl: ["2M"], + headbutt: ["2M"], + amnesia: ["2E"], + hypnosis: ["2E"], }, encounters: [ {generation: 1, level: 5}, ], }, - gyopin: { + orfry: { learnset: { peck: ["1L1"], tailwhip: ["1L1"], @@ -145,6 +159,11 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + swordsdance: ["2S0"], + haze: ["2E"], + psybeam: ["2E"], + hydropump: ["2E"], }, encounters: [ {generation: 1, level: 5}, @@ -175,6 +194,9 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + gust: ["2E"], + quickattack: ["2E"], }, encounters: [ {generation: 1, level: 5}, @@ -213,6 +235,14 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + defensecurl: ["1M"], + headbutt: ["1M"], + icepunch: ["1M"], + waterfall: ["1M"], + confusion: ["2E"], + haze: ["2E"], + mist: ["2E"], }, encounters: [ {generation: 1, level: 5}, @@ -233,7 +263,6 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { thunder: ["1M"], teleport: ["1M"], reflect: ["1M"], - swift: ["1M"], flash: ["1M"], toxic: ["1M"], @@ -317,6 +346,7 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { reflect: ["1M"], metronome: ["1M"], psywave: ["1M"], + surf: ["1M"], toxic: ["1M"], rage: ["1M"], @@ -326,14 +356,12 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { // tradeback moves | water 1 / human-like icepunch: ["2M"], + thunderpunch: ["2M"], headbutt: ["2M"], defensecurl: ["2M"], waterfall: ["2M"], - barrier: ["2E"], // mr. mime - amnesia: ["2E"], // poliwag - splash: ["2E"], // poliwag haze: ["2E"], // wooper - stomp: ["2E"], // slowpoke + lowkick: ["2E"], }, encounters: [ @@ -371,23 +399,136 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { reflect: ["1M"], metronome: ["1M"], psywave: ["1M"], + surf: ["1M"], toxic: ["1M"], rage: ["1M"], mimic: ["1M"], bide: ["1M"], rest: ["1M"], - }, - }, - skimper: { + + icepunch: ["2M"], + thunderpunch: ["2M"], + headbutt: ["2M"], + defensecurl: ["2M"], + waterfall: ["2M"], + haze: ["2E"], // wooper + lowkick: ["2E"], + }, + }, +// Previous revision of "Index 95". +// skimper: { +// learnset: { +// scratch: ["1L1"], +// growl: ["1L1"], +// glare: ["1L10"], +// watergun: ["1L20"], +// slash: ["1L30"], +// dragonrage: ["1L40", "1M"], +// hydropump: ["1L50"], +// bodyslam: ["1M"], +// takedown: ["1M"], +// doubleedge: ["1M"], +// bubblebeam: ["1M"], +// thunderbolt: ["1M"], +// thunder: ["1M"], +// dig: ["1M"], +// swift: ["1M"], +// skullbash: ["1M"], +// rockslide: ["1M"], +// surf: ["1M"], +// +// toxic: ["1M"], +// rage: ["1M"], +// mimic: ["1M"], +// doubleteam: ["1M"], +// bide: ["1M"], +// rest: ["1M"], +// substitute: ["1M"], +// +// // tradeback moves | dragon +// headbutt: ["2M"], +// waterfall: ["2M"], +// haze: ["2E"], // arbok +// mist: ["2E"], // dratini +// supersonic: ["2E"], // dratini +// +// }, +// encounters: [ +// {generation: 1, level: 5}, +// ], +// }, +// bawligua: { +// learnset: { +// scratch: ["1L1"], +// growl: ["1L1"], +// glare: ["1L10"], +// watergun: ["1L20"], +// slash: ["1L30"], +// dragonrage: ["1L40", "1M"], +// hydropump: ["1L50"], +// bodyslam: ["1M"], +// takedown: ["1M"], +// doubleedge: ["1M"], +// bubblebeam: ["1M"], +// thunderbolt: ["1M"], +// thunder: ["1M"], +// dig: ["1M"], +// swift: ["1M"], +// skullbash: ["1M"], +// rockslide: ["1M"], +// surf: ["1M"], +// +// toxic: ["1M"], +// rage: ["1M"], +// mimic: ["1M"], +// doubleteam: ["1M"], +// bide: ["1M"], +// rest: ["1M"], +// substitute: ["1M"], +// }, +// }, +// cryithan: { +// learnset: { +// scratch: ["1L1"], +// growl: ["1L1"], +// glare: ["1L10"], +// watergun: ["1L20"], +// slash: ["1L30"], +// dragonrage: ["1L40", "1M"], +// hydropump: ["1L50"], +// bodyslam: ["1M"], +// takedown: ["1M"], +// doubleedge: ["1M"], +// bubblebeam: ["1M"], +// hyperbeam: ["1M"], +// thunderbolt: ["1M"], +// thunder: ["1M"], +// dig: ["1M"], +// swift: ["1M"], +// skullbash: ["1M"], +// rockslide: ["1M"], +// surf: ["1M"], +// strength: ["1M"], +// toxic: ["1M"], +// rage: ["1M"], +// mimic: ["1M"], +// doubleteam: ["1M"], +// bide: ["1M"], +// rest: ["1M"], +// substitute: ["1M"], +// }, +// }, + squeamata: { learnset: { scratch: ["1L1"], - growl: ["1L1"], - glare: ["1L10"], - watergun: ["1L20"], - slash: ["1L30"], + tailwhip: ["1L1"], + leer: ["1L10"], + glare: ["1L30"], + bite: ["1L20"], + watergun: ["1M"], + slash: ["1L50"], dragonrage: ["1L40", "1M"], - hydropump: ["1L50"], bodyslam: ["1M"], takedown: ["1M"], doubleedge: ["1M"], @@ -411,24 +552,26 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { // tradeback moves | dragon headbutt: ["2M"], waterfall: ["2M"], - haze: ["2E"], // arbok + thrash: ["2E"], mist: ["2E"], // dratini - supersonic: ["2E"], // dratini + quickattack: ["2E"], // dratini }, encounters: [ {generation: 1, level: 5}, ], }, - bawligua: { + ministare: { learnset: { scratch: ["1L1"], - growl: ["1L1"], - glare: ["1L10"], - watergun: ["1L20"], - slash: ["1L30"], + tailwhip: ["1L1"], + leer: ["1L10"], + glare: ["1L30"], + bite: ["1L20"], + watergun: ["1M"], + slash: ["1L50"], dragonrage: ["1L40", "1M"], - hydropump: ["1L50"], + solarbeam: ["1M"], bodyslam: ["1M"], takedown: ["1M"], doubleedge: ["1M"], @@ -448,17 +591,25 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + headbutt: ["2M"], + waterfall: ["2M"], + thrash: ["2E"], + mist: ["2E"], // dratini + quickattack: ["2E"], // dratini }, }, - cryithan: { + iguanarch: { learnset: { scratch: ["1L1"], - growl: ["1L1"], - glare: ["1L10"], - watergun: ["1L20"], - slash: ["1L30"], + tailwhip: ["1L1"], + leer: ["1L10"], + glare: ["1L30"], + bite: ["1L20"], + watergun: ["1M"], + slash: ["1L50"], dragonrage: ["1L40", "1M"], - hydropump: ["1L50"], + solarbeam: ["1M"], bodyslam: ["1M"], takedown: ["1M"], doubleedge: ["1M"], @@ -479,6 +630,12 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + headbutt: ["2M"], + waterfall: ["2M"], + thrash: ["2E"], + mist: ["2E"], // dratini + quickattack: ["2E"], // dratini }, }, nidoreign: { //Nidoreign is complicated. It's designed to be a convergent evolution, so it can have moves from Nidorina and Nidorino. @@ -521,6 +678,12 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { substitute: ["1M"], surf: ["1M"], strength: ["1M"], + + firepunch: ["2M"], + icepunch: ["2M"], + thunderpunch: ["2M"], + roar: ["2M"], + flamethrower: ["2T"], },//Event data could probably be used but you'd need every combination of the 5 Nidorina moves to make it work. Yikes. }, decilla: { @@ -558,15 +721,15 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { firepunch: ["2M"], thunderpunch: ["2M"], headbutt: ["2M"], - roar: ["2M"], lick: ["2E"], // lickitung thrash: ["2E"], // cubone + flamethrower: ["1T"], }, encounters: [ {generation: 1, level: 30}, //assuming ressurected from a fossil ], }, - gyaoon: { + gawarhed: { learnset: { substitute: ["1L1", "1M"], growl: ["1L1"], @@ -603,9 +766,16 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { doubleteam: ["1M"], bide: ["1M"], rest: ["1M"], + + headbutt: ["2M"], + defensecurl: ["2M"], + icepunch: ["2M"], + thunderpunch: ["2M"], + firepunch: ["2M"], + flamethrower: ["2T"] }, }, - omega: { + omegadge: { learnset: { tackle: ["1L1"], supersonic: ["1L1"], @@ -653,6 +823,7 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { headbutt: ["2M"], defensecurl: ["2M"], roar: ["2M"], + flamethrower: ["2T"], }, encounters: [ @@ -694,7 +865,6 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { strength: ["1M"], toxic: ["1M"], - rage: ["1M"], mimic: ["1M"], doubleteam: ["1M"], bide: ["1M"], @@ -706,17 +876,15 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { icepunch: ["2M"], thunderpunch: ["2M"], headbutt: ["2M"], - flamethrower: ["2M"], - roar: ["2M"], thrash: ["2E"], // cubone - focusenergy: ["2E"], // cubone + cometpunch: ["2E"], // kangaskhan }, encounters: [ {generation: 1, level: 21}, //Safari Zone 1%er ], }, - jagg: { + sharpoon: { learnset: { bite: ["1L1"], leer: ["1L1"], @@ -754,9 +922,7 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { waterfall: ["2M"], agility: ["2E"], // goldeen thrash: ["2E"], // gyarados - psybeam: ["2E"], // goldeen - supersonic: ["2E"], // goldeen - splash: ["2E"], // magikarp + sharpen: ["2S0"], }, encounters: [ @@ -794,16 +960,11 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { substitute: ["1M"], // tradeback moves | water 3 / fairy | smog & poison gas are legacy additions - poisongas: ["2L19"], - smog: ["2L39"], + poisongas: ["2E"], + smog: ["2E"], defensecurl: ["2M"], waterfall: ["2M"], aurorabeam: ["2E"], // tentacool - disable: ["2E"], // jigglypuff - haze: ["2E"], // tentacool - mist: ["2E"], // corsola - lightscreen: ["2E"], // clefairy - thunderwave: ["2E"], // pikachu jumpscare }, encounters: [ @@ -845,11 +1006,14 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { rest: ["1M"], substitute: ["1M"], - poisongas: ["2L19"], - smog: ["2L39"], + poisongas: ["2E"], + smog: ["2E"], + defensecurl: ["2M"], + waterfall: ["2M"], + aurorabeam: ["2E"], // tentacool }, }, - deer: { + ramoose: { learnset: { tackle: ["1L1"], sandattack: ["1L14"], @@ -888,16 +1052,13 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { //tradeback moves | field headbutt: ["2M"], roar: ["2M"], - psybeam: ["2E"], // girafarig - hypnosis: ["2E"], // stantler - confuseray: ["2E"], // stantler }, encounters: [ {generation: 1, level: 18}, //no clue just validate the movepool and do what tajiri said ], }, - barunda: { + balumba: { learnset: { disarmingvoice: ["1L1"], growl: ["1L1"], @@ -937,9 +1098,10 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { //tradeback moves | fairy / amorphous defensecurl: ["2M"], headbutt: ["2M"], - haze: ["2E"], // koffing + psybeam: ["2E"], // koffing splash: ["2E"], // clefairy - + hypnosis: ["2E"], + minimize: ["2E"] }, encounters: [ {generation: 1, level: 30}, //idk stationary encounter? @@ -947,7 +1109,8 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { }, cheep: { learnset: { - bubble: ["1L17"], + peck: ["1L1"], + bubble: ["1L1", "1L17"], counter: ["1L19", "1L25", "1M"], bubblebeam: ["1L21", "1M"], lowkick: ["1L23"], @@ -956,7 +1119,8 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { waterfall: ["1L36"], highjumpkick: ["1L40"], strength: ["1L42", "1M"], - hydropump: ["1L48"], + hydropump: ["1L44"], + drillpeck: ["1L48"], megapunch: ["1M"], megakick: ["1M"], bodyslam: ["1M"], @@ -979,9 +1143,10 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { //tradeback moves | water 2 defensecurl: ["2M"], headbutt: ["2M"], - waterfall: ["2M"], aurorabeam: ["2E"], // remoraid agility: ["2E"], // goldeen + wingattack: ["2E"], + doublekick: ["2E"] }, encounters: [ @@ -990,7 +1155,8 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { }, jabetta: { learnset: { - bubble: ["1L17"], //had the same learn levels iirc + peck: ["1L1"], + bubble: ["1L1", "1L17"], //had the same learn levels iirc counter: ["1L19", "1L25", "1M"], bubblebeam: ["1L21", "1M"], lowkick: ["1L23"], @@ -999,7 +1165,8 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { waterfall: ["1L36"], highjumpkick: ["1L40"], strength: ["1L42", "1M"], - hydropump: ["1L48"], + hydropump: ["1L46"], + drillpeck: ["1L52"], megapunch: ["1M"], megakick: ["1M"], bodyslam: ["1M"], @@ -1024,9 +1191,9 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { icepunch: ["2M"], }, }, - cactus: { + cactormus: { learnset: { - tackle: ["1L1"], + barrage: ["1L1"], sandattack: ["1L1"], vinewhip: ["1L7"], hornattack: ["1L13"], @@ -1062,7 +1229,7 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { //tradeback moves | plant headbutt: ["2M"], defensecurl: ["2M"], - swordsdance: ["2E"] // chikorita + swordsdance: ["2E"], // chikorita leechseed: ["2E"], // oddish }, @@ -1086,6 +1253,7 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { swift: ["1M"], skullbash: ["1M"], thunderwave: ["1M"], + flash: ["1M"], toxic: ["1M"], rage: ["1M"], @@ -1098,10 +1266,9 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { // tradebacks | field defensecurl: ["2M"], headbutt: ["2M"], - doublekick: ["2E"], // smeargle thrash: ["2E"], // smeargle charm: ["2E"], // smeargle - focusenergy: ["2E"], // smeargle + screech: ["2E"], // smeargle }, encounters: [ @@ -1124,6 +1291,7 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { swift: ["1M"], skullbash: ["1M"], thunderwave: ["1M"], + flash: ["1M"], toxic: ["1M"], rage: ["1M"], @@ -1132,6 +1300,12 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + defensecurl: ["2M"], + headbutt: ["2M"], + thrash: ["2E"], // smeargle + charm: ["2E"], // smeargle + screech: ["2E"], // smeargle }, }, gorotora: { @@ -1153,6 +1327,7 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { swift: ["1M"], skullbash: ["1M"], thunderwave: ["1M"], + flash: ["1M"], toxic: ["1M"], rage: ["1M"], @@ -1161,9 +1336,15 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + defensecurl: ["2M"], + headbutt: ["2M"], + thrash: ["2E"], // smeargle + charm: ["2E"], // smeargle + screech: ["2E"], // smeargle }, }, - crocky: { + gavillain: { learnset: { scratch: ["1L1"], leer: ["1L1"], @@ -1179,8 +1360,8 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { doubleedge: ["1M"], watergun: ["1M"], bubblebeam: ["1M"], - icebeam: ["1M"], - blizzard: ["1M"], + thunder: ["1M"], // was ice beam, changed in 1.4 for an electric/dragon approach. + thunderbolt: ["1M"], // was blizzard, see above hyperbeam: ["1M"], submission: ["1M"], counter: ["1M"], @@ -1205,11 +1386,11 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { //tradeback moves | dragon headbutt: ["2M"], - icepunch: ["2M"], thunderpunch: ["2M"], firepunch: ["2M"], flamethrower: ["2M"], swordsdance: ["2E"], // charmander + growl: ["2L14"], }, encounters: [ @@ -1334,6 +1515,7 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { }, buu: { learnset: { + powdersnow: ["1L1"], aurorabeam: ["1L1"], leer: ["1L1"], mist: ["1L35"], @@ -1369,19 +1551,17 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { // tradeback moves | human-like thunderpunch: ["2M"], - firepunch: ["2M"], // unsure - will vet headbutt: ["2M"], barrier: ["2E"], // mr. mime karatechop: ["2E"], // machop rollingkick: ["2E"], // hitmonlee - meditate: ["2E"], // hitmonlee - + screech: ["2E"] }, encounters: [ {generation: 1, level: 32}, //seafoam rare encounter ], }, - purakkusu: { + tricules: { learnset: { harden: ["1L1"], visegrip: ["1L1"], @@ -1409,7 +1589,6 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { rage: ["1M"], mimic: ["1M"], doubleteam: ["1M"], - bide: ["1M"], rest: ["1M"], substitute: ["1M"], }, @@ -1417,7 +1596,7 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { {generation: 1, level: 15}, ], }, - madaamu: { + luxwan: { learnset: { peck: ["1L1"], sandattack: ["1L1"], @@ -1433,7 +1612,7 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bodyslam: ["1M"], takedown: ["1M"], doubleedge: ["1M"], - hyperbeam: ["1M"], +// hyperbeam: ["1M"], thunder: ["1M"], thunderbolt: ["1M"], reflect: ["1M"], @@ -1454,7 +1633,7 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { {generation: 1, level: 24}, ], }, - tsubomitto: { // should just import everything from weepinbell + bellignan: { // should just import everything from weepinbell learnset: { vinewhip: ["1L1"], growth: ["1L1"], @@ -1467,7 +1646,7 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { {generation: 1, level: 30}, ], }, - animon: { + mimmeo: { learnset: { transform: ["1L1"], mist: ["1L30"], @@ -1478,7 +1657,7 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { {generation: 1, level: 50}, ], }, - monja: { + burgela: { learnset: { constrict: ["1L1"], bind: ["1L5"], @@ -1505,12 +1684,18 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + flash: ["2M"], + headbutt: ["2M"], + amnesia: ["2E"], + confusion: ["2E"], + reflect: ["2E"], }, encounters: [ {generation: 1, level: 5}, ], }, - para: { + paraspor: { learnset: { scratch: ["1L1"], absorb: ["1L1"], @@ -1538,12 +1723,19 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + poisonpowder: ["2L13"], + flash: ["2M"], + counter: ["2E"], + lightscreen: ["2E"], + psybeam: ["2E"], + screech: ["2E"], }, encounters: [ {generation: 1, level: 2}, ], }, - hinaazu: { + dodaerie: { learnset: { peck: ["1L1"], growl: ["1L1"], @@ -1562,18 +1754,23 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { skyattack: ["1M"], fly: ["1M"], toxic: ["1M"], - rage: ["1M"], mimic: ["1M"], doubleteam: ["1M"], bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + swift: ["2M"], + haze: ["2E"], + quickattack: ["2E"], + supersonic: ["2E"], + lowkick: ["2S0"], }, encounters: [ {generation: 1, level: 5}, ], }, - pudi: { + pupperon: { learnset: { bite: ["1L1"], roar: ["1L1"], @@ -1597,12 +1794,16 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + firespin: ["2E"], + thrash: ["2E"], + headbutt: ["2M"], }, encounters: [ {generation: 1, level: 5}, ], }, - betobebii: { + smujj: { learnset: { pound: ["1L1"], disable: ["1L1"], @@ -1629,11 +1830,111 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + firepunch: ["2M"], + headbutt: ["2M"], + icepunch: ["2M"], + thunderpunch: ["2M"], + haze: ["2E"], + lick: ["2E"], + flamethrower: ["2T"], }, encounters: [ {generation: 1, level: 5}, ], }, + gentlarva: { + learnset: { + leechlife: ["1L1"], + stringshot: ["1L1"], + }, + encounters: [ + {generation: 1, level: 2}, + ], + }, + pupal: { + learnset: { + harden: ["1L7"], + }, + encounters: [ + {generation: 1, level: 7}, + ], + }, + carapthor: { + learnset: { + uppercut: ["1L1", "1L10"], + cometpunch: ["1L1", "1L12"], + pinmissile: ["1L12"], + defensecurl: ["1L20"], + swift: ["1L25", "1M"], + megapunch: ["1L30", "1M"], + substitute: ["1L35", "1M"], + razorwind: ["1M"], + swordsdance: ["1M"], + megakick: ["1M"], + toxic: ["1M"], + bodyslam: ["1M"], + takedown: ["1M"], + doubleedge: ["1M"], + hyperbeam: ["1M"], + payday: ["1M"], + submission: ["1M"], + counter: ["1M"], + seismictoss: ["1M"], + rage: ["1M"], + megadrain: ["1M"], + earthquake: ["1M"], + fissure: ["1M"], + dig: ["1M"], + mimic: ["1M"], + doubleteam: ["1M"], + reflect: ["1M"], + bide: ["1M"], + skullbash: ["1M"], + rest: ["1M"], + + headbutt: ["2M"], + absorb: ["2E"], + }, + encounters: [ + {generation: 1, level: 10}, + ], + }, + disturban: { + learnset: { + bite: ["1L1"], + watergun: ["1L1", "1M"], + bodyslam: ["1L1", "1M"], + poisongas: ["1L50"], + toxic: ["1M"], + takedown: ["1M"], + doubleedge: ["1M"], + bubblebeam: ["1M"], + icebeam: ["1M"], + blizzard: ["1M"], + hyperbeam: ["1M"], + rage: ["1M"], + earthquake: ["1M"], + fissure: ["1M"], + dig: ["1M"], + teleport: ["1M"], + mimic: ["1M"], + doubleteam: ["1M"], + reflect: ["1M"], + bide: ["1M"], + selfdestruct: ["1M"], + swift: ["1M"], + rest: ["1M"], + explosion: ["1M"], + triattack: ["1M"], + substitute: ["1M"], + surf: ["1M"], + strength: ["1M"], + }, + encounters: [ + {generation: 1, level: 30}, + ], + }, /// .o88b. d8888b. .d88b. .d8888. .d8888. d888b d88888b d8b db d88888b db db .d88b. .d8888. ///d8P Y8 88 `8D .8P Y8. 88' YP 88' YP 88' Y8b 88' 888o 88 88' 88 88 .8P Y8. 88' YP ///8P 88oobY' 88 88 `8bo. `8bo. 88 88ooooo 88V8o 88 88ooooo Y8 8P 88 88 `8bo. @@ -1679,8 +1980,19 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { psychic: ["1M"], doubleteam: ["1M"], dreameater: ["1M"], - rest: ["1M"], flash: ["1M"], + + dizzypunch: ["2E"], + amnesia: ["2E"], + splash: ["2E"], + petaldance: ["2S0"], + swift: ["2S0"], + flamethrower: ["2T"], + dreameater: ["2M"], + firepunch: ["2M"], + headbutt: ["2M"], + icepunch: ["2M"], + thunderpunch: ["2M"], }, }, igglybuff: { @@ -1720,8 +2032,17 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { psychic: ["1M"], doubleteam: ["1M"], dreameater: ["1M"], - rest: ["1M"], flash: ["1M"], + + dizzypunch: ["2E"], + petaldance: ["2S0"], + swift: ["2S0"], + flamethrower: ["2T"], + dreameater: ["2M"], + firepunch: ["2M"], + headbutt: ["2M"], + icepunch: ["2M"], + thunderpunch: ["2M"], }, }, crobat: { @@ -1858,6 +2179,12 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { surf: ["1M"], strength: ["1M"], flash: ["1M"], + + tackle: ["2L1"], + dreameater: ["2M"], + flamethrower: ["2T"], + stomp: ["2L13"], + icepunch: ["2M"], }, }, magnezone: { @@ -1919,6 +2246,10 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { metronome: ["1M"], skullbash: ["1M"], substitute: ["1M"], + + dizzypunch: ["2E"], + headbutt: ["2M"], + tackle: ["2L1"], }, }, lickilicky: { @@ -2070,6 +2401,10 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { psywave: ["1M"], triattack: ["1M"], substitute: ["1M"], + + dreameater: ["2M"], + headbutt: ["2M"], + flamethrower: ["2T"], }, }, blissey: { @@ -2249,6 +2584,15 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { skullbash: ["1M"], psywave: ["1M"], substitute: ["1M"], + + confusion: ["2L21"], + powdersnow: ["2L13"], + sing: ["2L25"], + dreameater: ["2M"], + headbutt: ["2M"], + dizzypunch: ["2E"], + meditate: ["2E"], + petaldance: ["2S0"], }, }, munchlax: { @@ -2286,11 +2630,20 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { selfdestruct: ["1M"], fireblast: ["1M"], skullbash: ["1M"], - rest: ["1M"], psywave: ["1M"], rockslide: ["1M"], substitute: ["1M"], surf: ["1M"], + + tackle: ["2L1"], + defensecurl: ["2M"], + firepunch: ["2M"], + icepunch: ["2M"], + thunderpunch: ["2M"], + flamethrower: ["2T"], + lick: ["2E"], + lovelykiss: ["2S0"], + splash: ["2S0"], }, }, pichu: { @@ -2318,6 +2671,16 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + thunderbolt: ["1M"], + + defensecurl: ["2M"], + headbutt: ["2M"], + strength: ["2M"], + thunderpunch: ["2M"], + dizzypunch: ["2E"], + doubleslap: ["2E"], + petaldance: ["2S0"], + sing: ["2S0"], }, }, elekid: { @@ -2355,6 +2718,14 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { thunderwave: ["1M"], psywave: ["1M"], substitute: ["1M"], + + firepunch: ["2M"], + headbutt: ["2M"], + icepunch: ["2M"], + barrier: ["2E"], + dizzypunch: ["2E"], + karatechop: ["2E"], + screech: ["2E"], }, }, electivire: { @@ -2392,10 +2763,19 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { substitute: ["1M"], strength: ["1M"], flash: ["1M"], + flamethrower: ["2T"], earthquake: ["1M"], fissure: ["1M"], rockslide: ["1M"], + + firepunch: ["2M"], + headbutt: ["2M"], + icepunch: ["2M"], + barrier: ["2E"], + dizzypunch: ["2E"], + karatechop: ["2E"], + screech: ["2E"], }, }, magby: { @@ -2429,7 +2809,39 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { skullbash: ["1M"], psywave: ["1M"], substitute: ["1M"], + + headbutt: ["2M"], + icepunch: ["2M"], + barrier: ["2E"], + dizzypunch: ["2E"], + karatechop: ["2E"], + screech: ["2E"], + }, + }, + tyrogue: { + learnset: { + tackle: ["1L1"], + + toxic: ["1M"], + rage: ["1M"], + mimic: ["1M"], + doubleteam: ["1M"], + bide: ["1M"], + rest: ["1M"], + substitute: ["1M"], + strength: ["1M"], + counter: ["1M"], + bodyslam: ["1M"], + seismictoss: ["1M"], + megakick: ["1M"], + doubleedge: ["1M"], + + highjumpkick: ["2E"], + dizzypunch: ["2E"], }, + encounters: [ + {generation: 1, level: 5}, + ], }, magmortar: { learnset: { @@ -2467,6 +2879,13 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { earthquake: ["1M"], fissure: ["1M"], rockslide: ["1M"], + + headbutt: ["2M"], + icepunch: ["2M"], + barrier: ["2E"], + dizzypunch: ["2E"], + karatechop: ["2E"], + screech: ["2E"], }, }, mimejr: { @@ -2502,6 +2921,14 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { thunderwave: ["1M"], psywave: ["1M"], flash: ["1M"], + + hypnosis: ["2E"], + psybeam: ["2E"], + dreameater: ["2M"], + firepunch: ["2M"], + headbutt: ["2M"], + icepunch: ["2M"], + thunderpunch: ["2M"], }, }, porygon2: { @@ -2533,7 +2960,6 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { rest: ["1M"], thunderwave: ["1M"], psywave: ["1M"], - triattack: ["1M"], substitute: ["1M"], flash: ["1M"], @@ -2569,7 +2995,6 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { rest: ["1M"], thunderwave: ["1M"], psywave: ["1M"], - triattack: ["1M"], substitute: ["1M"], flash: ["1M"], @@ -2664,6 +3089,7 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { }, glaceon: { learnset: { + powdersnow: ["1L1", "1L16"], tackle: ["1L1"], tailwhip: ["1L1"], sandattack: ["1L8"], @@ -2683,7 +3109,6 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { rest: ["1M"], substitute: ["1M"], hyperbeam: ["1M"], - aurorabeam: ["1L16"], mist: ["1L30"], haze: ["1L30"], icebeam: ["1L36", "1M"], @@ -2696,6 +3121,7 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { tackle: ["1L1"], tailwhip: ["1L1"], sandattack: ["1L8"], + disarmingvoice: ["1L16"], quickattack: ["1L23"], bite: ["1L30"], takedown: ["1L42", "1M"], @@ -2712,7 +3138,6 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { rest: ["1M"], substitute: ["1M"], hyperbeam: ["1M"], - disarmingvoice: ["1L16"], drainingkiss: ["1L30"], dazzlinggleam: ["1L36"], }, @@ -2767,7 +3192,7 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { skullbash: ["1M"], cut: ["1M"], fly: ["1M"], - hyperbeam: ["1M"], +// hyperbeam: ["1M"], toxic: ["1M"], rage: ["1M"], @@ -2776,6 +3201,10 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + headbutt: ["2M"], + rollingkick: ["2E"], + quickattack: ["2E"], }, }, mrrime: { @@ -2815,6 +3244,13 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + headbutt: ["2M"], + dreameater: ["2M"], + thunderpunch: ["2M"], + icepunch: ["2M"], + firepunch: ["2M"], + hypnosis: ["2E"], }, encounters: [ {generation: 1, level: 23}, @@ -2825,7 +3261,7 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { thundershock: ["1L1"], harden: ["1L1"], tailwhip: ["1L8"], - headbutt: ["1L16"], + headbutt: ["1L16", "2E"], thunderwave: ["1L24", "1M"], acidarmor: ["1L32"], ironhead: ["1L40"], @@ -2873,6 +3309,8 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + headbutt: ["2M"], }, encounters: [ {generation: 1, level: 5}, @@ -2944,6 +3382,8 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + screech: ["2E"], }, encounters: [ {generation: 1, level: 5}, @@ -2974,6 +3414,8 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + screech: ["2E"], }, encounters: [ {generation: 1, level: 30}, @@ -3008,6 +3450,8 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + growth: ["2E"], }, encounters: [ {generation: 1, level: 5}, @@ -3043,6 +3487,8 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + growth: ["2E"], }, encounters: [ {generation: 1, level: 30}, @@ -3094,6 +3540,12 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + headbutt: ["2M"], + firepunch: ["2M"], + icepunch: ["2M"], + thunderpunch: ["2M"], + flamethrower: ["2T"], }, encounters: [ {generation: 1, level: 50}, @@ -3107,7 +3559,7 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { magnetbomb: ["1L1"], supersonic: ["1L51"], screech: ["1L55"], - metalsound: ["1L55"], // intentional day care exploit + // metalsound: ["1L55"], // removed for balancing megakick: ["1M"], bodyslam: ["1M"], takedown: ["1M"], @@ -3131,6 +3583,8 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + triattack: ["2L35"], }, encounters: [ {generation: 1, level: 50}, @@ -3170,6 +3624,15 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + defensecurl: ["2M"], + headbutt: ["2M"], + cut: ["2M"], + strength: ["2M"], + roar: ["2M"], + counter: ["2E"], + screech: ["2E"], + furyswipes: ["2E"], }, encounters: [ {generation: 1, level: 5}, @@ -3203,6 +3666,15 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + defensecurl: ["2M"], + headbutt: ["2M"], + cut: ["2M"], + strength: ["2M"], + roar: ["2M"], + counter: ["2E"], + screech: ["2E"], + furyswipes: ["2E"], }, encounters: [ {generation: 1, level: 20}, @@ -3242,12 +3714,11 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { mimic: ["1M"], doubleteam: ["1M"], bide: ["1M"], - rest: ["1M"], - substitute: ["1M"], }, }, sandshrewalola: { learnset: { + powdersnow: ["1L1"], scratch: ["1L1"], defensecurl: ["1L1"], swift: ["1L21", "1M"], @@ -3271,8 +3742,10 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { mimic: ["1M"], doubleteam: ["1M"], bide: ["1M"], - rest: ["1M"], substitute: ["1M"], + + counter: ["2E"], + headbutt: ["2M"], }, encounters: [ {generation: 1, level: 5}, @@ -3280,6 +3753,7 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { }, sandslashalola: { learnset: { + powdersnow: ["1L1"], scratch: ["1L1"], defensecurl: ["1L1"], swift: ["1L21", "1M"], @@ -3304,12 +3778,15 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { mimic: ["1M"], doubleteam: ["1M"], bide: ["1M"], - rest: ["1M"], substitute: ["1M"], + + counter: ["2E"], + headbutt: ["2M"], }, }, vulpixalola: { learnset: { + powdersnow: ["1L1"], fairywind: ["1L1"], tailwhip: ["1L1"], roar: ["1L7"], @@ -3332,6 +3809,10 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + disable: ["2E"], + headbutt: ["2M"], + hypnosis: ["2E"], }, encounters: [ {generation: 1, level: 5}, @@ -3339,6 +3820,7 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { }, ninetalesalola: { learnset: { + powdersnow: ["1L1"], fairywind: ["1L1"], tailwhip: ["1L1"], roar: ["1L7"], @@ -3362,6 +3844,10 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + disable: ["2E"], + headbutt: ["2M"], + hypnosis: ["2E"], }, }, diglettalola: { @@ -3387,6 +3873,8 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + screech: ["2E"], }, encounters: [ {generation: 1, level: 5}, @@ -3416,6 +3904,8 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + screech: ["2E"], }, encounters: [ {generation: 1, level: 30}, @@ -3451,6 +3941,13 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + defensecurl: ["2M"], + dreameater: ["2M"], + headbutt: ["2M"], + amnesia: ["2E"], + hypnosis: ["2E"], + roar: ["2M"], }, encounters: [ {generation: 1, level: 5}, @@ -3486,6 +3983,11 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + headbutt: ["2M"], + defensecurl: ["2M"], + roar: ["2M"], + amnesia: ["2E"], }, encounters: [ {generation: 1, level: 5}, @@ -3522,6 +4024,11 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + headbutt: ["2M"], + defensecurl: ["2M"], + roar: ["2M"], + amnesia: ["2E"], }, encounters: [ {generation: 1, level: 5}, @@ -3558,6 +4065,13 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + defensecurl: ["2M"], + dreameater: ["2M"], + headbutt: ["2M"], + amnesia: ["2E"], + hypnosis: ["2E"], + roar: ["2M"], }, }, growlithehisui: { @@ -3622,6 +4136,10 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + firespin: ["2E"], + thrash: ["2E"], + headbutt: ["2M"], }, }, geodudealola: { @@ -3659,6 +4177,10 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + firepunch: ["2M"], + headbutt: ["2M"], + flamethrower: ["2T"], }, encounters: [ {generation: 1, level: 5}, @@ -3699,6 +4221,10 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + firepunch: ["2M"], + headbutt: ["2M"], + flamethrower: ["2T"], }, encounters: [ {generation: 1, level: 22}, @@ -3740,6 +4266,10 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + firepunch: ["2M"], + headbutt: ["2M"], + flamethrower: ["2T"], }, }, ponytagalar: { @@ -3753,7 +4283,7 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { psybeam: ["1L25"], stomp: ["1L30"], takedown: ["1L41", "1M"], - dazlinggleam: ["1L45"], + dazzlinggleam: ["1L45"], psychic: ["1L50", "1M"], bodyslam: ["1M"], swift: ["1M"], @@ -3771,6 +4301,15 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + quickattack: ["2L16"], + furyattack: ["2L40"], + headbutt: ["2M"], + doublekick: ["2E"], + lowkick: ["2S0"], + thrash: ["2E"], + hypnosis: ["2E"], + dreameater: ["2E"], }, encounters: [ {generation: 1, level: 5}, @@ -3806,11 +4345,50 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + quickattack: ["2L16"], + furyattack: ["2L40"], + headbutt: ["2M"], + doublekick: ["2E"], + lowkick: ["2S0"], + thrash: ["2E"], + hypnosis: ["2E"], + dreameater: ["2E"], + }, + }, + grimeralola: { + learnset: { + pound: ["1L1"], + poisongas: ["1L1"], + harden: ["1L6"], + minimize: ["1L12"], + disable: ["1L18"], + screech: ["1L30"], + acidarmor: ["1L42"], + + bodyslam: ["1M"], + megadrain: ["1M"], + thunderbolt: ["1M"], + thunder: ["1M"], + fireblast: ["1M"], + explosion: ["1M"], + selfdestruct: ["1M"], + + toxic: ["1M"], + rage: ["1M"], + mimic: ["1M"], + doubleteam: ["1M"], + bide: ["1M"], + rest: ["1M"], + substitute: ["1M"], }, + encounters: [ + {generation: 1, level: 5}, + ], }, slowpokegalar: { learnset: { - tackle: ["1L1"], + tackle: ["1L1", "2L1"], growl: ["1L1"], acid: ["1L8"], confusion: ["1L14"], @@ -3824,7 +4402,7 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { fissure: ["1M"], dig: ["1M"], fireblast: ["1M"], - dreameater: ["1M"], + dreameater: ["1M", "2M"], thunderwave: ["1M"], surf: ["1M"], strength: ["1M"], @@ -3849,6 +4427,10 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + flamethrower: ["2T"], + stomp: ["2L13"], + icepunch: ["2M"], }, encounters: [ {generation: 1, level: 5}, @@ -3897,6 +4479,59 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + flamethrower: ["2T"], + stomp: ["2L13"], + icepunch: ["2M"], + }, + }, + slowkinggalar: { + learnset: { + tackle: ["1L1"], + growl: ["1L1"], + acid: ["1L8"], + confusion: ["1L14"], + disable: ["1L22"], + headbutt: ["1L30"], + amnesia: ["1L38"], + psychic: ["1L42", "1M"], + icebeam: ["1M"], + blizzard: ["1M"], + earthquake: ["1M"], + fissure: ["1M"], + dig: ["1M"], + fireblast: ["1M"], + dreameater: ["1M"], + thunderwave: ["1M"], + surf: ["1M"], + strength: ["1M"], + bodyslam: ["1M"], + takedown: ["1M"], + doubleedge: ["1M"], + bubblebeam: ["1M"], + watergun: ["1M"], + payday: ["1M"], + teleport: ["1M"], + reflect: ["1M"], + swift: ["1M"], + skullbash: ["1M"], + psywave: ["1M"], + triattack: ["1M"], + flash: ["1M"], + sludge: ["1L1"], + hyperbeam: ["1M"], + + toxic: ["1M"], + rage: ["1M"], + mimic: ["1M"], + doubleteam: ["1M"], + bide: ["1M"], + rest: ["1M"], + substitute: ["1M"], + + flamethrower: ["2T"], + stomp: ["2L13"], + icepunch: ["2M"], }, }, farfetchdgalar: { @@ -3995,6 +4630,14 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + headbutt: ["2M"], + flamethrower: ["2T"], + thunderpunch: ["2M"], + icepunch: ["2M"], + firepunch: ["2M"], + haze: ["2E"], + lick: ["2E"], }, }, voltorbhisui: { @@ -4055,6 +4698,8 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + headbutt: ["2M"], }, }, exeggutoralola: { // should not need exeggcute's stuff @@ -4208,7 +4853,6 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { whirlwind: ["1M"], takedown: ["1M"], doubleedge: ["1M"], - hyperbeam: ["1M"], teleport: ["1M"], swift: ["1M"], skyattack: ["1M"], @@ -4220,7 +4864,8 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { doubleteam: ["1M"], bide: ["1M"], rest: ["1M"], - substitute: ["1M"], + + roar: ["2M"], }, encounters: [ {generation: 1, level: 50}, // moves may get pushed out in validation due to this level, revise if so @@ -4255,6 +4900,8 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + roar: ["2M"], }, encounters: [ {generation: 1, level: 50}, @@ -4285,6 +4932,8 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + roar: ["2M"], }, encounters: [ {generation: 1, level: 50}, @@ -4321,6 +4970,11 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + hornattack: ["2L1"], + thrash: ["2E"], + quickattack: ["2E"], + headbutt: ["2M"], }, encounters: [ {generation: 1, level: 5}, @@ -4357,6 +5011,12 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + hornattack: ["2L1"], + thrash: ["2E"], + quickattack: ["2E"], + flamethrower: ["2M"], + headbutt: ["2M"], }, encounters: [ {generation: 1, level: 5}, @@ -4395,6 +5055,12 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { bide: ["1M"], rest: ["1M"], substitute: ["1M"], + + hornattack: ["2L1"], + thrash: ["2E"], + quickattack: ["2E"], + surf: ["2M"], + headbutt: ["2M"], }, encounters: [ {generation: 1, level: 5}, @@ -4840,14 +5506,6 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { splash: ["1L1", "2L1", "2S1", "2S2"], tackle: ["1L15", "2L15"], }}, - magikarppinktwotone: {learnset: { - bubble: ["2S1"], - dragonrage: ["1S0"], - flail: ["2L30"], - reversal: ["2S2"], - splash: ["1L1", "2L1", "2S1", "2S2"], - tackle: ["1L15", "2L15"], - }}, magikarppinkdapples: {learnset: { bubble: ["2S1"], dragonrage: ["1S0"], @@ -5024,4 +5682,658 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = { splash: ["1L1", "2L1", "2S1", "2S2"], tackle: ["1L15", "2L15"], }}, + // Modified learnsets for Uppercut and Powder Snow + hitmonchan: { + learnset: { + uppercut: ["1L1"], + agility: ["2L7", "1L1", "1S0"], + attract: ["2M"], + bide: ["1M"], + bodyslam: ["1M"], + cometpunch: ["2L1", "1L1", "1S0"], + counter: ["2L50", "1M", "1L53"], + curse: ["2M"], + detect: ["2M", "2L44"], + doubleedge: ["1M"], + doubleteam: ["2M", "1M"], + dynamicpunch: ["2M"], + endure: ["2M"], + firepunch: ["2M", "2L26", "1L33"], + frustration: ["2M"], + headbutt: ["2M"], + hiddenpower: ["2M"], + icepunch: ["2M", "2L26", "1L38"], + machpunch: ["2L32"], + megakick: ["1M"], + megapunch: ["2L38", "1M", "1L48"], + metronome: ["1M"], + mimic: ["1M"], + mudslap: ["2M"], + protect: ["2M"], + pursuit: ["2L13"], + rage: ["1M"], + rest: ["2M", "1M"], + return: ["2M"], + rocksmash: ["2M"], + seismictoss: ["1M"], + skullbash: ["1M"], + sleeptalk: ["2M"], + snore: ["2M"], + strength: ["2M", "1M"], + submission: ["1M"], + substitute: ["1M"], + sunnyday: ["2M"], + swagger: ["2M"], + swift: ["2M", "1M"], + takedown: ["1M"], + thief: ["2M"], + thunderpunch: ["2M", "2L26", "1L43"], + toxic: ["2M", "1M"], + }, + eventData: [ + {generation: 1, level: 20, moves: ["cometpunch", "agility"]}, + ], + encounters: [ + {generation: 1, level: 30}, + ], + }, + machop: { + learnset: { + uppercut: ["1L1"], + attract: ["2M"], + bide: ["1M"], + bodyslam: ["1M"], + counter: ["1M"], + crosschop: ["2L37"], + curse: ["2M"], + detect: ["2M"], + dig: ["2M", "1M"], + doubleedge: ["1M"], + doubleteam: ["2M", "1M"], + dynamicpunch: ["2M"], + earthquake: ["2M", "1M"], + encore: ["2E"], + endure: ["2M"], + falseswipe: ["2S0"], + fireblast: ["2M", "1M"], + firepunch: ["2M"], + fissure: ["1M"], + flamethrower: ["2T"], + focusenergy: ["2L7", "1L32"], + foresight: ["2L25"], + frustration: ["2M"], + headbutt: ["2M"], + hiddenpower: ["2M"], + icepunch: ["2M"], + karatechop: ["2L13", "1L1"], + leer: ["2L1", "2S1", "2S0", "1L25"], + lightscreen: ["2E"], + lowkick: ["2L1", "2S1", "2S0", "1L20"], + meditate: ["2E"], + megakick: ["1M"], + megapunch: ["1M"], + metronome: ["1M"], + mimic: ["1M"], + mudslap: ["2M"], + protect: ["2M"], + rage: ["1M"], + rest: ["2M", "1M"], + return: ["2M"], + rockslide: ["1M"], + rocksmash: ["2M"], + rollingkick: ["2E"], + scaryface: ["2L43"], + seismictoss: ["2L19", "1M", "1L39"], + skullbash: ["1M"], + sleeptalk: ["2M"], + snore: ["2M"], + strength: ["2M", "1M"], + submission: ["2L49", "1M", "1L46"], + substitute: ["1M"], + sunnyday: ["2M"], + swagger: ["2M"], + takedown: ["1M"], + thief: ["2M"], + thrash: ["2S1"], + thunderpunch: ["2M"], + toxic: ["2M", "1M"], + vitalthrow: ["2L31"], + }, + eventData: [ + {generation: 2, level: 5, shiny: 1, moves: ["lowkick", "leer", "falseswipe"]}, + {generation: 2, level: 5, shiny: 1, moves: ["lowkick", "leer", "thrash"]}, + ], + encounters: [ + {generation: 1, level: 15}, + ], + }, + machoke: { + learnset: { + uppercut: ["1L1"], + attract: ["2M"], + bide: ["1M"], + bodyslam: ["1M"], + counter: ["1M"], + crosschop: ["2L43"], + curse: ["2M"], + detect: ["2M"], + dig: ["2M", "1M"], + doubleedge: ["1M"], + doubleteam: ["2M", "1M"], + dynamicpunch: ["2M"], + earthquake: ["2M", "1M"], + endure: ["2M"], + fireblast: ["2M", "1M"], + firepunch: ["2M"], + fissure: ["1M"], + flamethrower: ["2T"], + focusenergy: ["2L8", "2L1", "1L36"], + foresight: ["2L25"], + frustration: ["2M"], + headbutt: ["2M"], + hiddenpower: ["2M"], + icepunch: ["2M"], + karatechop: ["2L15", "1L1"], + leer: ["2L1", "1L25", "1L1"], + lowkick: ["2L1", "1L20", "1L1"], + megakick: ["1M"], + megapunch: ["1M"], + metronome: ["1M"], + mimic: ["1M"], + mudslap: ["2M"], + protect: ["2M"], + rage: ["1M"], + rest: ["2M", "1M"], + return: ["2M"], + rockslide: ["1M"], + rocksmash: ["2M"], + scaryface: ["2L52"], + seismictoss: ["2L19", "1M", "1L44"], + skullbash: ["1M"], + sleeptalk: ["2M"], + snore: ["2M"], + strength: ["2M", "1M"], + submission: ["2L61", "1M", "1L52"], + substitute: ["1M"], + sunnyday: ["2M"], + swagger: ["2M"], + takedown: ["1M"], + thief: ["2M"], + thunderpunch: ["2M"], + toxic: ["2M", "1M"], + vitalthrow: ["2L34"], + }, + encounters: [ + {generation: 2, level: 14}, + ], + }, + machamp: { + learnset: { + uppercut: ["1L1"], + attract: ["2M"], + bide: ["1M"], + bodyslam: ["1M"], + counter: ["1M"], + crosschop: ["2L43"], + curse: ["2M"], + detect: ["2M"], + dig: ["2M", "1M"], + doubleedge: ["1M"], + doubleteam: ["2M", "1M"], + dynamicpunch: ["2M"], + earthquake: ["2M", "1M"], + endure: ["2M"], + fireblast: ["2M", "1M"], + firepunch: ["2M"], + fissure: ["1M"], + flamethrower: ["2T"], + focusenergy: ["2L8", "2L1", "1L36"], + foresight: ["2L25"], + frustration: ["2M"], + headbutt: ["2M"], + hiddenpower: ["2M"], + hyperbeam: ["2M", "1M"], + icepunch: ["2M"], + karatechop: ["2L15", "1L1"], + leer: ["2L1", "1L25", "1L1"], + lowkick: ["2L1", "1L20", "1L1"], + megakick: ["1M"], + megapunch: ["1M"], + metronome: ["1M"], + mimic: ["1M"], + mudslap: ["2M"], + protect: ["2M"], + rage: ["1M"], + rest: ["2M", "1M"], + return: ["2M"], + rockslide: ["1M"], + rocksmash: ["2M"], + scaryface: ["2L52"], + seismictoss: ["2L19", "1M", "1L44"], + skullbash: ["1M"], + sleeptalk: ["2M"], + snore: ["2M"], + strength: ["2M", "1M"], + submission: ["2L61", "1M", "1L52"], + substitute: ["1M"], + sunnyday: ["2M"], + swagger: ["2M"], + takedown: ["1M"], + thief: ["2M"], + thunderpunch: ["2M"], + toxic: ["2M", "1M"], + vitalthrow: ["2L34"], + }, + encounters: [ + {generation: 1, level: 16}, + {generation: 2, level: 5}, + ], + }, + mankey: { + learnset: { + uppercut: ["1L1"], + attract: ["2M"], + beatup: ["2E"], + bide: ["1M"], + bodyslam: ["1M"], + counter: ["2E", "1M"], + crosschop: ["2L39"], + curse: ["2M"], + defensecurl: ["2M"], + detect: ["2M"], + dig: ["2M", "1M"], + doubleedge: ["1M"], + doubleteam: ["2M", "1M"], + dynamicpunch: ["2M"], + endure: ["2M"], + firepunch: ["2M"], + focusenergy: ["2L27", "1L27"], + foresight: ["2E"], + frustration: ["2M"], + furyswipes: ["2L21", "1L21"], + headbutt: ["2M"], + hiddenpower: ["2M"], + icepunch: ["2M"], + irontail: ["2M"], + karatechop: ["2L15", "1L15"], + leer: ["2L1", "1L1"], + lowkick: ["2L9", "1L9"], + meditate: ["2E"], + megakick: ["1M"], + megapunch: ["1M"], + metronome: ["1M"], + mimic: ["1M"], + mudslap: ["2M"], + payday: ["1M"], + protect: ["2M"], + psychup: ["2M"], + rage: ["1M"], + rest: ["2M", "1M"], + return: ["2M"], + reversal: ["2E"], + rockslide: ["2E", "1M"], + rocksmash: ["2M"], + scratch: ["2L1", "1L1"], + screech: ["2L45", "1L45"], + seismictoss: ["2L33", "1M", "1L33"], + skullbash: ["1M"], + sleeptalk: ["2M"], + snore: ["2M"], + strength: ["2M", "1M"], + submission: ["1M"], + substitute: ["1M"], + sunnyday: ["2M"], + swagger: ["2M"], + swift: ["2M", "1M"], + takedown: ["1M"], + thief: ["2M"], + thrash: ["2L51", "1L39"], + thunder: ["2M", "1M"], + thunderbolt: ["2T", "1M"], + thunderpunch: ["2M"], + toxic: ["2M", "1M"], + }, + encounters: [ + {generation: 1, level: 3}, + ], + }, + primeape: { + learnset: { + uppercut: ["1L1"], + attract: ["2M"], + bide: ["1M"], + bodyslam: ["1M"], + counter: ["1M"], + crosschop: ["2L45"], + curse: ["2M"], + defensecurl: ["2M"], + detect: ["2M"], + dig: ["2M", "1M"], + doubleedge: ["1M"], + doubleteam: ["2M", "1M"], + dynamicpunch: ["2M"], + endure: ["2M"], + firepunch: ["2M"], + focusenergy: ["2L27", "1L27"], + frustration: ["2M"], + furyswipes: ["2L21", "1L21", "1L1"], + headbutt: ["2M"], + hiddenpower: ["2M"], + hyperbeam: ["2M", "1M"], + icepunch: ["2M"], + irontail: ["2M"], + karatechop: ["2L15", "1L15", "1L1"], + leer: ["2L1", "1L1"], + lowkick: ["2L9", "2L1", "1L9", "1L1"], + megakick: ["1M"], + megapunch: ["1M"], + metronome: ["1M"], + mimic: ["1M"], + mudslap: ["2M"], + payday: ["1M"], + protect: ["2M"], + psychup: ["2M"], + rage: ["2L28", "2L1", "1M", "1L28"], + rest: ["2M", "1M"], + return: ["2M"], + rockslide: ["1M"], + rocksmash: ["2M"], + scratch: ["2L1", "1L1"], + screech: ["2L54", "1L45"], + seismictoss: ["2L36", "1M", "1L37"], + skullbash: ["1M"], + sleeptalk: ["2M"], + snore: ["2M"], + strength: ["2M", "1M"], + submission: ["1M"], + substitute: ["1M"], + sunnyday: ["2M"], + swagger: ["2M"], + swift: ["2M", "1M"], + takedown: ["1M"], + thief: ["2M"], + thrash: ["2L63", "1L46"], + thunder: ["2M", "1M"], + thunderbolt: ["2T", "1M"], + thunderpunch: ["2M"], + toxic: ["2M", "1M"], + }, + encounters: [ + {generation: 2, level: 15}, + ], + }, + moltres: { // Fixed to have Flamethrower and Leer at once; fixes a weird error on cart + learnset: { + agility: ["2L25", "2S0", "1L55"], + bide: ["1M"], + curse: ["2M"], + detect: ["2M"], + doubleedge: ["1M"], + doubleteam: ["2M", "1M"], + ember: ["2L1"], + endure: ["2M", "2L37", "2S0"], + fireblast: ["2M", "1M"], + firespin: ["2L13", "2S0", "1L1"], + flamethrower: ["2T", "2L49", "2S0", "1L51"], + fly: ["2M", "1M"], + frustration: ["2M"], + hiddenpower: ["2M"], + hyperbeam: ["2M", "1M"], + leer: ["1L51"], + mimic: ["1M"], + mudslap: ["2M"], + peck: ["1L1"], + protect: ["2M"], + rage: ["1M"], + raindance: ["2M"], + razorwind: ["1M"], + reflect: ["1M"], + rest: ["2M", "1M"], + return: ["2M"], + roar: ["2M"], + rocksmash: ["2M"], + safeguard: ["2L61"], + sandstorm: ["2M"], + skyattack: ["2L73", "1M", "1L60"], + sleeptalk: ["2M"], + snore: ["2M"], + steelwing: ["2M"], + substitute: ["1M"], + sunnyday: ["2M"], + swagger: ["2M"], + swift: ["2M", "1M"], + takedown: ["1M"], + toxic: ["2M", "1M"], + whirlwind: ["1M"], + wingattack: ["2L1"], + }, + eventData: [ + {generation: 2, level: 50, shiny: true, moves: ["firespin", "agility", "endure", "flamethrower"]}, + ], + encounters: [ + {generation: 1, level: 50}, + ], + }, + articuno: { + learnset: { + powdersnow: ["1L1"], + agility: ["2L25", "2S0", "1L55"], + bide: ["1M"], + blizzard: ["2M", "2L73", "1M", "1L51"], + bubblebeam: ["1M"], + curse: ["2M"], + detect: ["2M"], + doubleedge: ["1M"], + doubleteam: ["2M", "1M"], + endure: ["2M"], + fly: ["2M", "1M"], + frustration: ["2M"], + gust: ["2L1"], + hiddenpower: ["2M"], + hyperbeam: ["2M", "1M"], + icebeam: ["2T", "2L49", "2S0", "1M", "1L1"], + icywind: ["2M"], + mimic: ["1M"], + mindreader: ["2L37", "2S0"], + mist: ["2L13", "2S0", "1L60"], + mudslap: ["2M"], + peck: ["1L1"], + powdersnow: ["2L1"], + protect: ["2M"], + rage: ["1M"], + raindance: ["2M"], + razorwind: ["1M"], + reflect: ["2L61", "1M"], + rest: ["2M", "1M"], + return: ["2M"], + roar: ["2M"], + rocksmash: ["2M"], + sandstorm: ["2M"], + skyattack: ["1M"], + sleeptalk: ["2M"], + snore: ["2M"], + steelwing: ["2M"], + substitute: ["1M"], + sunnyday: ["2M"], + swagger: ["2M"], + swift: ["2M", "1M"], + takedown: ["1M"], + toxic: ["2M", "1M"], + watergun: ["1M"], + whirlwind: ["1M"], + }, + eventData: [ + {generation: 2, level: 50, shiny: true, moves: ["mist", "agility", "mindreader", "icebeam"]}, + ], + encounters: [ + {generation: 1, level: 50}, + ], + }, + jynx: { + learnset: { + attract: ["2M"], + bide: ["1M"], + blizzard: ["2M", "2L57", "1M", "1L58"], + bodyslam: ["2L41", "1M", "1L39"], + bubblebeam: ["1M"], + counter: ["1M"], + curse: ["2M"], + doubleedge: ["1M"], + doubleslap: ["2L21", "1L23"], + doubleteam: ["2M", "1M"], + dreameater: ["2M"], + dynamicpunch: ["2M"], + endure: ["2M"], + frustration: ["2M"], + headbutt: ["2M"], + hiddenpower: ["2M"], + hyperbeam: ["2M", "1M"], + icebeam: ["2T", "1M"], + icepunch: ["2M", "2L25", "1L31"], + icywind: ["2M"], + lick: ["2L1", "1L18"], + lovelykiss: ["2L9", "2L1", "1L1"], + meanlook: ["2L35"], + megakick: ["1M"], + megapunch: ["1M"], + metronome: ["1M"], + mimic: ["1M"], + mudslap: ["2M"], + nightmare: ["2M"], + perishsong: ["2L51"], + pound: ["2L1", "1L1"], + powdersnow: ["2L13", "2L1"], + protect: ["2M"], + psychic: ["2M", "1M"], + psychup: ["2M"], + psywave: ["1M"], + rage: ["1M"], + raindance: ["2M"], + reflect: ["1M"], + rest: ["2M", "1M"], + return: ["2M"], + seismictoss: ["1M"], + shadowball: ["2M"], + skullbash: ["1M"], + sleeptalk: ["2M"], + snore: ["2M"], + submission: ["1M"], + substitute: ["1M"], + swagger: ["2M"], + sweetscent: ["2M"], + takedown: ["1M"], + teleport: ["1M"], + thief: ["2M"], + thrash: ["1L47"], + toxic: ["2M", "1M"], + watergun: ["1M"], + powdersnow: ["1L1"], + }, + encounters: [ + {generation: 1, level: 15}, + {generation: 2, level: 10}, + ], + }, + seel: { + learnset: { + powdersnow: ["1L14"], + attract: ["2M"], + aurorabeam: ["2L16", "1L35"], + bide: ["1M"], + blizzard: ["2M", "1M"], + bodyslam: ["1M"], + bubblebeam: ["1M"], + curse: ["2M"], + disable: ["2E"], + doubleedge: ["1M"], + doubleteam: ["2M", "1M"], + encore: ["2E"], + endure: ["2M"], + flail: ["2S0"], + frustration: ["2M"], + growl: ["2L5", "2S0", "1L30"], + headbutt: ["2M", "2L1", "2S0", "1L1"], + hiddenpower: ["2M"], + horndrill: ["1M"], + icebeam: ["2T", "2L37", "1M", "1L50"], + icywind: ["2M"], + lick: ["2E"], + mimic: ["1M"], + payday: ["1M"], + peck: ["2E"], + perishsong: ["2E"], + protect: ["2M"], + rage: ["1M"], + raindance: ["2M"], + rest: ["2M", "2L21", "1M", "1L40"], + return: ["2M"], + safeguard: ["2L48"], + skullbash: ["1M"], + slam: ["2E"], + sleeptalk: ["2M"], + snore: ["2M"], + strength: ["1M"], + substitute: ["1M"], + surf: ["2M", "1M"], + swagger: ["2M"], + takedown: ["2L32", "1M", "1L45"], + toxic: ["2M", "1M"], + waterfall: ["2M"], + watergun: ["1M"], + whirlpool: ["2M"], + }, + eventData: [ + {generation: 2, level: 5, shiny: 1, moves: ["headbutt", "growl", "flail"]}, + ], + encounters: [ + {generation: 1, level: 22}, + ], + }, + dewgong: { + learnset: { + powdersnow: ["1L16"], + attract: ["2M"], + aurorabeam: ["2L16", "2L1", "1L35", "1L1"], + bide: ["1M"], + blizzard: ["2M", "1M"], + bodyslam: ["1M"], + bubblebeam: ["1M"], + curse: ["2M"], + doubleedge: ["1M"], + doubleteam: ["2M", "1M"], + endure: ["2M"], + frustration: ["2M"], + growl: ["2L5", "2L1", "1L30", "1L1"], + headbutt: ["2M", "2L1", "1L1"], + hiddenpower: ["2M"], + horndrill: ["1M"], + hyperbeam: ["2M", "1M"], + icebeam: ["2T", "2L43", "1M", "1L56"], + icywind: ["2M"], + mimic: ["1M"], + payday: ["1M"], + protect: ["2M"], + rage: ["1M"], + raindance: ["2M"], + rest: ["2M", "2L21", "1M", "1L44"], + return: ["2M"], + safeguard: ["2L60"], + skullbash: ["1M"], + sleeptalk: ["2M"], + snore: ["2M"], + strength: ["1M"], + substitute: ["1M"], + surf: ["2M", "1M"], + swagger: ["2M"], + takedown: ["2L32", "1M", "1L50"], + toxic: ["2M", "1M"], + waterfall: ["2M"], + watergun: ["1M"], + whirlpool: ["2M"], + }, + encounters: [ + {generation: 1, level: 15}, + {generation: 2, level: 5}, + ], + }, }; diff --git a/moves.ts b/moves.ts index b9a54c8..0b479b5 100644 --- a/moves.ts +++ b/moves.ts @@ -4,230 +4,18 @@ */ export const Moves: {[k: string]: ModdedMoveData} = { - acid: { - inherit: true, - category: "Physical", - secondary: { - chance: 33, - boosts: { - def: -1, - }, - }, - target: "normal", - }, - amnesia: { - inherit: true, - boosts: { - spd: 2, - spa: 2, - }, - }, - aurorabeam: { - inherit: true, - secondary: { - chance: 33, - boosts: { - atk: -1, - }, - }, - }, - bide: { - inherit: true, - priority: 0, - accuracy: true, - ignoreEvasion: true, - condition: { - duration: 2, - durationCallback: function (target, source, effect) { - return this.random(3, 4); - }, - onStart: function (pokemon) { - this.effectData.totalDamage = 0; - this.effectData.lastDamage = 0; - this.add('-start', pokemon, 'Bide'); - }, - onHit: function (target, source, move) { - if (source && source !== target && move.category !== 'Physical' && move.category !== 'Special') { - let damage = this.effectData.totalDamage; - this.effectData.totalDamage += damage; - this.effectData.lastDamage = damage; - this.effectData.sourcePosition = source.position; - this.effectData.sourceSide = source.side; - } - }, - onDamage: function (damage, target, source, move) { - if (!source || source.side === target.side) return; - if (!move || move.effectType !== 'Move') return; - if (!damage && this.effectData.lastDamage > 0) { - damage = this.effectData.totalDamage; - } - this.effectData.totalDamage += damage; - this.effectData.lastDamage = damage; - this.effectData.sourcePosition = source.position; - this.effectData.sourceSide = source.side; - }, - onAfterSetStatus: function (status, pokemon) { - // Sleep, freeze, and partial trap will just pause duration. - if (pokemon.volatiles['flinch']) { - this.effectData.duration++; - } else if (pokemon.volatiles['partiallytrapped']) { - this.effectData.duration++; - } else { - switch (status.id) { - case 'slp': - case 'frz': - this.effectData.duration++; - break; - } - } - }, - onBeforeMove: function (pokemon) { - if (this.effectData.duration === 1) { - if (!this.effectData.totalDamage) { - this.add('-fail', pokemon); - return false; - } - this.add('-end', pokemon, 'Bide'); - let target = this.effectData.sourceSide.active[this.effectData.sourcePosition]; - // @ts-ignore - this.moveHit(target, pokemon, 'bide', {damage: this.effectData.totalDamage * 2}); - return false; - } - this.add('-activate', pokemon, 'Bide'); - return false; - }, - onDisableMove: function (pokemon) { - if (!pokemon.hasMove('bide')) { - return; - } - for (const moveSlot of pokemon.moveSlots) { - if (moveSlot.id !== 'bide') { - pokemon.disableMove(moveSlot.id); - } - } - }, - }, - type: "???", // Will look as Normal but it's STAB-less - }, - bind: { - inherit: true, - ignoreImmunity: true, - volatileStatus: 'partiallytrapped', - self: { - volatileStatus: 'partialtrappinglock', - }, - // FIXME: onBeforeMove(pokemon, target) {target.removeVolatile('mustrecharge')} - onHit(target, source) { - /** - * The duration of the partially trapped must be always renewed to 2 - * so target doesn't move on trapper switch out as happens in gen 1. - * However, this won't happen if there's no switch and the trapper is - * about to end its partial trapping. - **/ - if (target.volatiles['partiallytrapped']) { - if (source.volatiles['partialtrappinglock'] && source.volatiles['partialtrappinglock'].duration > 1) { - target.volatiles['partiallytrapped'].duration = 2; - } - } - }, - }, - bite: { - inherit: true, - category: "Physical", - secondary: { - chance: 10, - volatileStatus: 'flinch', - }, - type: "Normal", - }, - blizzard: { - inherit: true, - accuracy: 90, - target: "normal", - }, brutalswing: { inherit: true, category: "Special", type: "Dark", gen: 1, }, - bubble: { - inherit: true, - secondary: { - chance: 33, - boosts: { - spe: -1, - }, - }, - target: "normal", - }, - bubblebeam: { - inherit: true, - secondary: { - chance: 33, - boosts: { - spe: -1, - }, - }, - }, bulletpunch: { inherit: true, category: "Physical", type: "Steel", gen: 1, }, - charm: { - inherit: true, - category: "Status", - type: "Fairy", - gen: 1, - }, - clamp: { - inherit: true, - category: "Special", - accuracy: 75, - pp: 10, - volatileStatus: 'partiallytrapped', - self: { - volatileStatus: 'partialtrappinglock', - }, - // FIXME: onBeforeMove(pokemon, target) {target.removeVolatile('mustrecharge')} - onHit(target, source) { - /** - * The duration of the partially trapped must be always renewed to 2 - * so target doesn't move on trapper switch out as happens in gen 1. - * However, this won't happen if there's no switch and the trapper is - * about to end its partial trapping. - **/ - if (target.volatiles['partiallytrapped']) { - if (source.volatiles['partialtrappinglock'] && source.volatiles['partialtrappinglock'].duration > 1) { - target.volatiles['partiallytrapped'].duration = 2; - } - } - }, - }, - constrict: { - inherit: true, - secondary: { - chance: 33, - boosts: { - spe: -1, - }, - }, - }, - conversion: { - inherit: true, - target: "normal", - onHit(target, source) { - source.setType(target.getTypes(true)); - this.add('-start', source, 'typechange', source.types.join('/'), '[from] move: Conversion', '[of] ' + target); - }, - }, - crabhammer: { - inherit: true, - category: "Special", - willCrit: true, - }, darkvoid: { // unused inherit: true, category: "Status", @@ -240,89 +28,12 @@ export const Moves: {[k: string]: ModdedMoveData} = { type: "Fairy", gen: 1, }, - dig: { - inherit: true, - basePower: 100, - condition: { - duration: 2, - onLockMove: 'dig', - onInvulnerability(target, source, move) { - if (move.id === 'swift') return true; - this.add('-message', 'The foe ' + target.name + ' can\'t be hit underground!'); - return false; - }, - onDamage(damage, target, source, move) { - if (!move || move.effectType !== 'Move') return; - if (!source) return; - if (move.id === 'earthquake') { - this.add('-message', 'The foe ' + target.name + ' can\'t be hit underground!'); - return null; - } - }, - }, - }, - disable: { - inherit: true, - desc: "For 0 to 7 turns, one of the target's known moves that has at least 1 PP remaining becomes disabled, at random. Fails if one of the target's moves is already disabled, or if none of the target's moves have PP remaining. If any Pokemon uses Haze, this effect ends. Whether or not this move was successful, it counts as a hit for the purposes of the opponent's use of Rage.", - shortDesc: "For 0-7 turns, disables one of the target's moves.", - condition: { - duration: 4, - durationCallback(target, source, effect) { - const duration = this.random(1, 7); - return duration; - }, - onStart(pokemon) { - if (!this.queue.willMove(pokemon)) { - this.effectData.duration++; - } - const moves = pokemon.moves; - const move = this.dex.getMove(this.sample(moves)); - this.add('-start', pokemon, 'Disable', move.name); - this.effectData.move = move.id; - return; - }, - onResidualOrder: 14, - onEnd(pokemon) { - this.add('-end', pokemon, 'Disable'); - }, - onBeforeMove(attacker, defender, move) { - if (move.id === this.effectData.move) { - this.add('cant', attacker, 'Disable', move); - return false; - } - }, - onDisableMove(pokemon) { - for (const moveSlot of pokemon.moveSlots) { - if (moveSlot.id === this.effectData.move) { - pokemon.disableMove(moveSlot.id); - } - } - }, - }, - }, - dizzypunch: { - inherit: true, - secondary: null, - }, - doubleedge: { - inherit: true, - basePower: 100, - }, - dragonrage: { - inherit: true, - basePower: 1, - }, drainingkiss: { inherit: true, category: "Special", type: "Fairy", gen: 1, }, - explosion: { - inherit: true, - basePower: 170, - target: "normal", - }, fairywind: { inherit: true, category: "Special", @@ -352,135 +63,6 @@ export const Moves: {[k: string]: ModdedMoveData} = { type: "Dark", gen: 1, }, - fireblast: { - inherit: true, - secondary: { - chance: 30, - status: 'brn', - }, - }, - firespin: { - inherit: true, - accuracy: 70, - basePower: 15, - volatileStatus: 'partiallytrapped', - self: { - volatileStatus: 'partialtrappinglock', - }, - // FIXME: onBeforeMove(pokemon, target) {target.removeVolatile('mustrecharge')} - onHit(target, source) { - /** - * The duration of the partially trapped must be always renewed to 2 - * so target doesn't move on trapper switch out as happens in gen 1. - * However, this won't happen if there's no switch and the trapper is - * about to end its partial trapping. - **/ - if (target.volatiles['partiallytrapped']) { - if (source.volatiles['partialtrappinglock'] && source.volatiles['partialtrappinglock'].duration > 1) { - target.volatiles['partiallytrapped'].duration = 2; - } - } - }, - }, - fly: { - inherit: true, - condition: { - duration: 2, - onLockMove: 'fly', - onInvulnerability(target, source, move) { - if (move.id === 'swift') return true; - this.add('-message', 'The foe ' + target.name + ' can\'t be hit while flying!'); - return false; - }, - onDamage(damage, target, source, move) { - if (!move || move.effectType !== 'Move') return; - if (!source || source.isAlly(target)) return; - if (move.id === 'gust' || move.id === 'thunder') { - this.add('-message', 'The foe ' + target.name + ' can\'t be hit while flying!'); - return null; - } - }, - }, - }, - focusenergy: { - inherit: true, - condition: { - onStart(pokemon) { - this.add('-start', pokemon, 'move: Focus Energy'); - }, - // This does nothing as it's dealt with on critical hit calculation. - onModifyMove() {}, - }, - }, - glare: { - inherit: true, - ignoreImmunity: true, - }, - growth: { - inherit: true, - boosts: { - spa: 1, - spd: 1, - }, - }, - gust: { - inherit: true, - category: "Physical", - type: "Normal", - }, - haze: { - inherit: true, - onHit(target, source) { - this.add('-activate', target, 'move: Haze'); - this.add('-clearallboost', '[silent]'); - for (const pokemon of this.getAllActive()) { - pokemon.clearBoosts(); - - if (pokemon !== source) { - pokemon.cureStatus(true); - } - if (pokemon.status === 'tox') { - pokemon.setStatus('psn'); - } - for (const id of Object.keys(pokemon.volatiles)) { - if (id === 'residualdmg') { - pokemon.volatiles[id].counter = 0; - } else { - pokemon.removeVolatile(id); - this.add('-end', pokemon, id, '[silent]'); - } - } - } - }, - target: "self", - }, - highjumpkick: { - inherit: true, - onMoveFail(target, source, move) { - if (!target.types.includes('Ghost')) { - this.directDamage(1, source, target); - } - }, - }, - hyperbeam: { - num: 63, - accuracy: 90, - basePower: 150, - category: "Physical", - name: "Hyper Beam", - pp: 5, - priority: 0, - flags: {recharge: 1, protect: 1, mirror: 1}, - self: null, - onHit(target, source) { - if (target.hp) { - source.addVolatile('mustrecharge'); - } - }, - secondary: null, - target: "normal", - type: "Normal", - }, irondefense: { inherit: true, category: "Status", @@ -493,19 +75,6 @@ export const Moves: {[k: string]: ModdedMoveData} = { type: "Steel", gen: 1, }, - jumpkick: { - inherit: true, - onMoveFail(target, source, move) { - if (!target.types.includes('Ghost')) { - this.directDamage(1, source, target); - } - }, - }, - karatechop: { - inherit: true, - willCrit: true, - type: "Normal", - }, kowtowcleave: { // filled in manually num: -100, inherit: true, @@ -518,60 +87,6 @@ export const Moves: {[k: string]: ModdedMoveData} = { priority: 0, name: "Kowtow Cleave", }, - leechseed: { - inherit: true, - onHit() {}, - condition: { - onStart(target) { - this.add('-start', target, 'move: Leech Seed'); - }, - onAfterMoveSelfPriority: 1, - onAfterMoveSelf(pokemon) { - const leecher = this.getAtSlot(pokemon.volatiles['leechseed'].sourceSlot); - if (!leecher || leecher.fainted || leecher.hp <= 0) { - this.debug('Nothing to leech into'); - return; - } - // We check if leeched Pokémon has Toxic to increase leeched damage. - let toxicCounter = 1; - const residualdmg = pokemon.volatiles['residualdmg']; - if (residualdmg) { - residualdmg.counter++; - toxicCounter = residualdmg.counter; - } - const toLeech = this.clampIntRange(Math.floor(pokemon.baseMaxhp / 16), 1) * toxicCounter; - const damage = this.damage(toLeech, pokemon, leecher); - if (residualdmg) this.hint("In Gen 1, Leech Seed's damage is affected by Toxic's counter.", true); - if (!damage || toLeech > damage) { - this.hint("In Gen 1, Leech Seed recovery is not limited by the remaining HP of the seeded Pokemon.", true); - } - this.heal(toLeech, leecher, pokemon); - }, - }, - }, - lightscreen: { - num: 113, - accuracy: true, - basePower: 0, - category: "Status", - name: "Light Screen", - pp: 30, - priority: 0, - flags: {}, - volatileStatus: 'lightscreen', - onTryHit(pokemon) { - if (pokemon.volatiles['lightscreen']) { - return false; - } - }, - condition: { - onStart(pokemon) { - this.add('-start', pokemon, 'Light Screen'); - }, - }, - target: "self", - type: "Psychic", - }, magnetbomb: { inherit: true, category: "Physical", @@ -588,54 +103,12 @@ export const Moves: {[k: string]: ModdedMoveData} = { spa: -2, }, }, - metronome: { - inherit: true, - noMetronome: ["Metronome", "Struggle"], - secondary: null, - target: "self", - type: "Normal", - }, - mimic: { - inherit: true, - onHit(target, source) { - const moveslot = source.moves.indexOf('mimic'); - if (moveslot < 0) return false; - const moves = target.moves; - const moveid = this.sample(moves); - if (!moveid) return false; - const move = this.dex.moves.get(moveid); - source.moveSlots[moveslot] = { - move: move.name, - id: move.id, - pp: source.moveSlots[moveslot].pp, - maxpp: move.pp * 8 / 5, - target: move.target, - disabled: false, - used: false, - virtual: true, - }; - this.add('-start', source, 'Mimic', move.name); - }, - }, - mirrormove: { - inherit: true, - onHit(pokemon) { - const foe = pokemon.side.foe.active[0]; - if (!foe?.lastMove || foe.lastMove.id === 'mirrormove') { - return false; - } - this.actions.useMove(foe.lastMove.id, pokemon); - }, - }, mirrorshot: { inherit: true, category: "Physical", type: "Steel", gen: 1, }, - mist: { - inherit: true, - }, naturesmadness: { // unused inherit: true, category: "Special", @@ -652,12 +125,6 @@ export const Moves: {[k: string]: ModdedMoveData} = { type: "Dark", gen: 1, }, - nightshade: { - inherit: true, - category: "Physical", - ignoreImmunity: true, - basePower: 1, - }, nightslash: { inherit: true, category: "Special", @@ -670,126 +137,6 @@ export const Moves: {[k: string]: ModdedMoveData} = { type: "Fairy", gen: 1, }, - poisonsting: { - inherit: true, - secondary: { - chance: 20, - status: 'psn', - }, - }, - psychic: { - inherit: true, - secondary: { - chance: 33, - boosts: { - spd: -1, - spa: -1, - }, - }, - }, - psywave: { - inherit: true, - basePower: 1, - damageCallback(pokemon) { - const psywaveDamage = (this.random(0, this.trunc(1.5 * pokemon.level))); - if (psywaveDamage <= 0) { - this.hint("Desync Clause Mod activated!"); - return false; - } - return psywaveDamage; - }, - }, - rage: { - inherit: true, - self: { - volatileStatus: 'rage', - }, - condition: { - // Rage lock - duration: 255, - onStart: function (target, source, effect) { - this.effectData.move = 'rage'; - }, - onLockMove: 'rage', - onTryHit: function (target, source, move) { - if (target.boosts.atk < 6 && move.id === 'disable') { - this.boost({atk: 1}); - } - }, - onHit: function (target, source, move) { - if (target.boosts.atk < 6 && move.category !== 'Status') { - this.boost({atk: 1}); - } - }, - }, - }, - razorleaf: { - inherit: true, - category: "Special", - willCrit: true, - target: "normal", - }, - razorwind: { - inherit: true, - category: "Physical", - critRatio: 1, - target: "normal", - }, - recover: { - inherit: true, - heal: null, - onHit(target) { - if (target.hp === target.maxhp) return false; - // Fail when health is 255 or 511 less than max - if (target.hp === (target.maxhp - 255) || target.hp === (target.maxhp - 511) || target.hp === target.maxhp) { - this.hint("In Gen 1, recovery moves fail if (user's maximum HP - user's current HP + 1) is divisible by 256."); - return false; - } - this.heal(Math.floor(target.maxhp / 2), target, target); - }, - }, - reflect: { - num: 115, - accuracy: true, - basePower: 0, - category: "Status", - name: "Reflect", - pp: 20, - priority: 0, - flags: {}, - volatileStatus: 'reflect', - onTryHit(pokemon) { - if (pokemon.volatiles['reflect']) { - return false; - } - }, - condition: { - onStart(pokemon) { - this.add('-start', pokemon, 'Reflect'); - }, - }, - secondary: null, - target: "self", - type: "Psychic", - }, - rest: { - inherit: true, - }, - roar: { - inherit: true, - forceSwitch: false, - onTryHit() {}, - priority: 0, - }, - rockslide: { - inherit: true, - secondary: null, - target: "normal", - }, - rockthrow: { - inherit: true, - accuracy: 65, - }, ruination: { // unused; filled in manually num: -101, inherit: true, @@ -806,21 +153,6 @@ export const Moves: {[k: string]: ModdedMoveData} = { priority: 0, name: "Ruination", }, - sandattack: { - inherit: true, - ignoreImmunity: true, - type: "Normal", - }, - seismictoss: { - inherit: true, - ignoreImmunity: true, - basePower: 1, - }, - selfdestruct: { - inherit: true, - basePower: 130, - target: "normal", - }, shelter: { // unused; filled in manually inherit: true, category: "Status", @@ -835,216 +167,49 @@ export const Moves: {[k: string]: ModdedMoveData} = { target: "self", type: "Steel", }, - skullbash: { - inherit: true, - onTryMove(attacker, defender, move) { - if (attacker.removeVolatile(move.id)) { - return; - } - this.add('-prepare', attacker, move.name); - if (!this.runEvent('ChargeMove', attacker, defender, move)) { - return; - } - attacker.addVolatile('twoturnmove', defender); - return null; - }, - }, - slash: { - inherit: true, - willCrit: true, - }, - sludge: { - inherit: true, - category: "Physical", - secondary: { - chance: 40, - status: 'psn', - }, - }, smartstrike: { inherit: true, category: "Physical", type: "Steel", gen: 1, }, - softboiled: { - inherit: true, - heal: null, - onHit(target) { - if (target.hp === target.maxhp) return false; - // Fail when health is 255 or 511 less than max - if (target.hp === (target.maxhp - 255) || target.hp === (target.maxhp - 511) || target.hp === target.maxhp) { - this.hint("In Gen 1, recovery moves fail if (user's maximum HP - user's current HP + 1) is divisible by 256."); - return false; - } - this.heal(Math.floor(target.maxhp / 2), target, target); - }, - }, - struggle: { - inherit: true, - pp: 10, - recoil: [1, 2], - onModifyMove() {}, - }, - substitute: { - num: 164, - accuracy: true, - basePower: 0, - category: "Status", - desc: "The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, or if the user switches out or faints. Until the substitute is broken, it receives damage from all attacks made by other Pokemon and shields the user from poison status and some stat stage changes caused by other Pokemon. The user still takes normal damage from status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. This move fails if the user already has a substitute.", - shortDesc: "User takes 1/4 its max HP to put in a Substitute.", - id: "substitute", - isViable: true, - name: "Substitute", - pp: 10, - priority: 0, - volatileStatus: 'Substitute', - onTryHit: function (target) { - if (target.volatiles['substitute']) { - this.add('-fail', target, 'move: Substitute'); - return null; - } - // We only prevent when hp is less than one quarter. - // If you use substitute at exactly one quarter, you faint. - if (target.hp === target.maxhp / 4) target.faint(); - if (target.hp < target.maxhp / 4) { - this.add('-fail', target, 'move: Substitute', '[weak]'); - return null; - } - }, - onHit: function (target) { - // If max HP is 3 or less substitute makes no damage - if (target.maxhp > 3) { - this.directDamage(target.maxhp / 4, target, target); - } - }, - condition: { - onStart: function (target) { - this.add('-start', target, 'Substitute'); - this.effectData.hp = Math.floor(target.maxhp / 4) + 1; - delete target.volatiles['partiallytrapped']; - }, - onTryHitPriority: -1, - onTryHit: function (target, source, move) { - if (move.category === 'Status') { - // In gen 1 it only blocks: - // poison, confusion, secondary effect confusion, stat reducing moves and Leech Seed. - let SubBlocked = ['lockon', 'meanlook', 'mindreader', 'nightmare']; - if (move.status === 'psn' || move.status === 'tox' || (move.boosts && target !== source) || move.volatileStatus === 'confusion' || SubBlocked.includes(move.id)) { - return false; - } - return; - } - if (move.volatileStatus && target === source) return; - let damage = this.getDamage(source, target, move); - if (!damage) return null; - damage = this.runEvent('SubDamage', target, source, move, damage); - if (!damage) return damage; - target.volatiles['substitute'].hp -= damage; - source.lastDamage = damage; - if (target.volatiles['substitute'].hp <= 0) { - target.removeVolatile('substitute'); - target.subFainted = true; - } else { - this.add('-activate', target, 'Substitute', '[damage]'); - } - // Drain/recoil does not happen if the substitute breaks - if (target.volatiles['substitute']) { - if (move.recoil) { - this.damage(Math.round(damage * move.recoil[0] / move.recoil[1]), source, target, 'recoil'); - } - if (move.drain) { - this.heal(Math.ceil(damage * move.drain[0] / move.drain[1]), source, target, 'drain'); - } - } - this.runEvent('AfterSubDamage', target, source, move, damage); - // Add here counter damage - if (!target.lastAttackedBy) target.lastAttackedBy = {pokemon: source, thisTurn: true}; - target.lastAttackedBy.move = move.id; - target.lastAttackedBy.damage = damage; - return 0; - }, - onEnd: function (target) { - this.add('-end', target, 'Substitute'); - }, - }, - secondary: false, - target: "self", - type: "Normal", - }, - superfang: { - inherit: true, - ignoreImmunity: true, - basePower: 1, - }, - surf: { - inherit: true, - gen: 1, - }, sweetkiss: { inherit: true, category: "Status", type: "Fairy", gen: 1, }, - thunder: { - inherit: true, +// Prototype Move restorations begin here. + powdersnow: { // copypasted from modern + num: 181, + accuracy: 100, + basePower: 40, + category: "Special", + name: "Powder Snow", + pp: 25, + priority: 0, secondary: { chance: 10, - status: 'par', - }, - }, - thunderwave: { - inherit: true, - accuracy: 100, - onTryHit(target) { - if (target.hasType('Ground')) { - this.add('-immune', target); - return null; - } + status: 'frz', }, + target: "normal", // reduces any chance of fuckery + type: "Ice", + gen: 1, }, - triattack: { - inherit: true, + uppercut: { // copypasted from modern + num: 182, + accuracy: 80, + basePower: 55, category: "Physical", - onHit() {}, - secondary: null, - }, - whirlwind: { - inherit: true, - accuracy: 85, - forceSwitch: false, - onTryHit() {}, + name: "Uppercut", + pp: 15, priority: 0, - }, - wingattack: { - inherit: true, - basePower: 35, - }, - wrap: { - inherit: true, - accuracy: 85, - ignoreImmunity: true, - volatileStatus: 'partiallytrapped', - self: { - volatileStatus: 'partialtrappinglock', - }, - onBeforeMove: function (pokemon, target, move) { - // Removes must recharge volatile even if it misses - target.removeVolatile('mustrecharge'); - }, - onHit: function (target, source) { - /** - * The duration of the partially trapped must be always renewed to 2 - * so target doesn't move on trapper switch out as happens in gen 1. - * However, this won't happen if there's no switch and the trapper is - * about to end its partial trapping. - **/ - if (target.volatiles['partiallytrapped']) { - if (source.volatiles['partialtrappinglock'] && source.volatiles['partialtrappinglock'].duration > 1) { - target.volatiles['partiallytrapped'].duration = 2; - } - } + secondary: { + chance: 30, + volatileStatus: 'flinch', }, + target: "normal", + type: "Fighting", + gen: 1, }, }; diff --git a/pokedex.ts b/pokedex.ts index 9533f74..f51c3fa 100644 --- a/pokedex.ts +++ b/pokedex.ts @@ -5,33 +5,37 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { /// `Y8b. 8b 88`8b 88~~~88 88~~~ 88~~~ 88~~~~~ 88 88 88~~~ 88 88 88`8b 88~~~~~ 88 88 88 88 88 88 V8o88 ///db 8D Y8b d8 88 `88. 88 88 88 88 88. 88 .8D 88 `8b d8' 88 `88. 88. 88 88 88 `8b d8' 88 V888 ///`8888Y' `Y88P' 88 YD YP YP 88 88 Y88888P Y8888D' 88 `Y88P' YP YD Y88888P YP YP YP `Y88P' VP V8P - puchikoon: { + kolta: { num: 1152, - name: "Puchikoon", + gen: 1, + name: "Kolta", types: ["Fire"], baseStats: {hp: 30, atk: 65, def: 35, spa: 45, spd: 45, spe: 70}, abilities: {}, evos: ["Ponyta"], }, - mikon: { + vulpiii: { num: 1153, - name: "Mikon", + gen: 1, + name: "Vulpiii", types: ["Fire"], baseStats: {hp: 28, atk: 31, def: 30, spa: 60, spd: 60, spe: 60}, abilities: {}, evos: ["Vulpix"], }, - konya: { + coinpur: { num: 1154, - name: "Konya", + gen: 1, + name: "Coinpur", types: ["Normal"], baseStats: {hp: 35, atk: 40, def: 30, spa: 35, spd: 35, spe: 85}, abilities: {}, evos: ["Meowth"], }, - gyopin: { + orfry: { num: 1155, - name: "Gyopin", + gen: 1, + name: "Orfry", types: ["Water"], baseStats: {hp: 35, atk: 57, def: 50, spa: 40, spd: 40, spe: 53}, abilities: {}, @@ -39,6 +43,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, bittybat: { num: 1156, + gen: 1, name: "Bittybat", types: ["Poison", "Flying"], baseStats: {hp: 35, atk: 40, def: 30, spa: 35, spd: 35, spe: 50}, @@ -47,6 +52,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, blastyke: { num: 1157, + gen: 1, name: "Blastyke", types: ["Water"], baseStats: {hp: 49, atk: 43, def: 60, spa: 45, spd: 45, spe: 48}, @@ -55,6 +61,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, magnetite: { num: 1158, + gen: 1, name: "Magnetite", types: ["Electric"], baseStats: {hp: 30, atk: 40, def: 75, spa: 100, spd: 100, spe: 50}, @@ -65,6 +72,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, weirduck: { num: 1159, + gen: 1, name: "Weirduck", types: ["Water"], baseStats: {hp: 65, atk: 67, def: 63, spa: 65, spd: 65, spe: 70}, @@ -75,6 +83,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, ribbito: { num: 1160, + gen: 1, name: "Ribbito", types: ["Water"], baseStats: {hp: 94, atk: 55, def: 50, spa: 55, spd: 55, spe: 40}, @@ -83,40 +92,73 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, croakozuna: { num: 1161, + gen: 1, name: "Croakozuna", types: ["Water", "Dark"], baseStats: {hp: 134, atk: 75, def: 70, spa: 75, spd: 75, spe: 60}, abilities: {}, }, - skimper: { +// This was a Helix Chamber interpretation of an iguana Pokemon that I substantially disagreed with. +// skimper: { +// num: 1162, +// name: "Skimper", +// types: ["Water"], +// baseStats: {hp: 62, atk: 43, def: 36, spa: 71, spd: 71, spe: 88}, +// abilities: {}, +// evos: ["Bawligua"], +// }, +// bawligua: { +// num: 1163, +// name: "Bawligua", +// types: ["Water"], +// baseStats: {hp: 72, atk: 53, def: 46, spa: 81, spd: 81, spe: 98}, +// abilities: {}, +// prevo: "Skimper", +// evoLevel: 30, +// evos: ["Cryithan"], +// }, +// cryithan: { +// num: 1164, +// name: "Cryithan", +// types: ["Water", "Dragon"], +// baseStats: {hp: 92, atk: 83, def: 76, spa: 101, spd: 101, spe: 118}, +// abilities: {}, +// prevo: "Bawligua", +// evoLevel: 50, +// This is the new interpretation of the Iguana Pokemon (Index 95). + squeamata: { num: 1162, - name: "Skimper", - types: ["Water"], + gen: 1, + name: "Squeamata", // Squeamish Squamata + types: ["Dragon"], baseStats: {hp: 62, atk: 43, def: 36, spa: 71, spd: 71, spe: 88}, abilities: {}, - evos: ["Bawligua"], + evos: ["Ministare"], }, - bawligua: { + ministare: { num: 1163, - name: "Bawligua", - types: ["Water"], + gen: 1, + name: "Ministare", // Ministro + Stare / Glare, "mini" implies small + types: ["Dragon"], baseStats: {hp: 72, atk: 53, def: 46, spa: 81, spd: 81, spe: 98}, abilities: {}, - prevo: "Skimper", + prevo: "Squeamata", evoLevel: 30, - evos: ["Cryithan"], + evos: ["Iguanarch"], }, - cryithan: { + iguanarch: { num: 1164, - name: "Cryithan", - types: ["Water", "Dragon"], - baseStats: {hp: 92, atk: 83, def: 76, spa: 101, spd: 101, spe: 118}, + gen: 1, + name: "Iguanarch", // Iguana + Monarch, "anarchy" could be derived for aggression. + types: ["Dragon"], + baseStats: {hp: 102, atk: 93, def: 76, spa: 121, spd: 121, spe: 108}, abilities: {}, - prevo: "Bawligua", + prevo: "Ministare", evoLevel: 50, }, nidoreign: { num: 1165, + gen: 1, name: "Nidoreign", types: ["Poison", "Rock"], baseStats: {hp: 90, atk: 92, def: 87, spa: 75, spd: 75, spe: 85}, @@ -127,44 +169,50 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, decilla: { num: 1166, + gen: 1, name: "Decilla", types: ["Rock"], baseStats: {hp: 61, atk: 90, def: 70, spa: 40, spd: 40, spe: 15}, abilities: {}, - evos: ["Gyaoon"], + evos: ["Gawarhed"], }, - gyaoon: { + gawarhed: { num: 1167, - name: "Gyaoon", + gen: 1, + name: "Gawarhed", types: ["Rock"], - baseStats: {hp: 101, atk: 110, def: 100, spa: 95, spd: 95, spe: 30}, + baseStats: {hp: 101, atk: 124, def: 100, spa: 95, spd: 95, spe: 30}, abilities: {}, prevo: "Decilla", evoLevel: 50, }, - omega: { + omegadge: { num: 1168, - name: "Omega", - types: ["Steel"], //WARNING: Not designed for SW97 Steel-type. Consider field testing in a closed beta. Talk to Shellnuts. - baseStats: {hp: 101, atk: 100, def: 120, spa: 95, spd: 95, spe: 25}, + gen: 1, + name: "Omegadge", + types: ["Steel"], + baseStats: {hp: 101, atk: 106, def: 120, spa: 95, spd: 95, spe: 25}, abilities: {}, }, trampel: { num: 1169, + gen: 1, name: "Trampel", types: ["Normal", "Ground"], - baseStats: {hp: 130, atk: 100, def: 90, spa: 64, spd: 64, spe: 56}, //Consider checking the Attack stat to see if we should add more points to factor in Blissey. Needs more testing. + baseStats: {hp: 110, atk: 100, def: 90, spa: 64, spd: 64, spe: 56}, //Consider checking the Attack stat to see if we should add more points to factor in Blissey. Needs more testing. abilities: {}, }, - jagg: { + sharpoon: { num: 1170, - name: "Jagg", + gen: 1, + name: "Sharpoon", types: ["Water", "Steel"], baseStats: {hp: 80, atk: 115, def: 100, spa: 85, spd: 85, spe: 60}, abilities: {}, }, blottle: { num: 1171, + gen: 1, name: "Blottle", types: ["Water", "Fairy"], baseStats: {hp: 60, atk: 35, def: 60, spa: 65, spd: 65, spe: 50}, @@ -173,6 +221,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, pendraken: { num: 1172, + gen: 1, name: "Pendraken", types: ["Water", "Fairy"], baseStats: {hp: 80, atk: 60, def: 85, spa: 95, spd: 95, spe: 90}, @@ -180,22 +229,25 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { prevo: "Blottle", evoLevel: 30, }, - deer: { + ramoose: { num: 1173, - name: "Deer", + gen: 1, + name: "Ramoose", types: ["Normal", "Grass"], baseStats: {hp: 85, atk: 110, def: 85, spa: 90, spd: 90, spe: 60}, abilities: {}, }, - barunda: { + balumba: { num: 1174, - name: "Barunda", + gen: 1, + name: "Balumba", types: ["Fairy", "Flying"], baseStats: {hp: 90, atk: 50, def: 30, spa: 100, spd: 100, spe: 125}, abilities: {}, }, cheep: { num: 1175, + gen: 1, name: "Cheep", types: ["Water"], baseStats: {hp: 45, atk: 65, def: 40, spa: 40, spd: 40, spe: 60}, @@ -204,6 +256,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, jabetta: { num: 1176, + gen: 1, name: "Jabetta", types: ["Water", "Fighting"], baseStats: {hp: 80, atk: 125, def: 70, spa: 80, spd: 80, spe: 80}, @@ -211,15 +264,17 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { prevo: "Cheep", evoLevel: 30, }, - cactus: { //Needs extensive field testing. + cactormus: { num: 1177, - name: "Cactus", + gen: 1, + name: "Cactormus", types: ["Grass", "Ground"], baseStats: {hp: 60, atk: 95, def: 100, spa: 75, spd: 75, spe: 90}, abilities: {}, }, kotora: { num: 1178, + gen: 1, name: "Kotora", types: ["Electric"], baseStats: {hp: 50, atk: 65, def: 45, spa: 55, spd: 55, spe: 40}, @@ -228,6 +283,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, gaotora: { num: 1179, + gen: 1, name: "Gaotora", types: ["Electric"], baseStats: {hp: 65, atk: 80, def: 65, spa: 75, spd: 75, spe: 60}, @@ -238,6 +294,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, gorotora: { num: 1180, + gen: 1, name: "Gorotora", types: ["Electric"], baseStats: {hp: 90, atk: 105, def: 85, spa: 95, spd: 95, spe: 80}, @@ -245,15 +302,17 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { prevo: "Gaotora", evoLevel: 36, }, - crocky: { + gavillain: { num: 1181, - name: "Crocky", - types: ["Dragon"], - baseStats: {hp: 80, atk: 90, def: 75, spa: 80, spd: 80, spe: 95}, + gen: 1, + name: "Gavillain", + types: ["Dragon", "Electric"], + baseStats: {hp: 80, atk: 80, def: 75, spa: 90, spd: 90, spe: 95}, abilities: {}, }, gorochu: { num: 1182, + gen: 1, name: "Gorochu", types: ["Electric"], baseStats: {hp: 70, atk: 100, def: 65, spa: 100, spd: 100, spe: 110}, @@ -263,6 +322,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, guardia: { num: 1183, + gen: 1, name: "Guardia", types: ["Ground"], baseStats: {hp: 70, atk: 90, def: 120, spa: 100, spd: 100, spe: 65}, @@ -273,6 +333,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, totartle: { num: 1184, + gen: 1, name: "Totartle", types: ["Water", "Grass"], baseStats: {hp: 79, atk: 83, def: 85, spa: 100, spd: 100, spe: 78}, @@ -282,41 +343,46 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, buu: { num: 1185, + gen: 1, name: "Buu", types: ["Ice"], baseStats: {hp: 65, atk: 93, def: 57, spa: 85, spd: 85, spe: 95}, abilities: {}, }, - purakkusu: { + tricules: { num: 1186, - name: "Purakkusu", + gen: 1, + name: "Tricules", types: ["Bug", "Steel"], - baseStats: {hp: 65, atk: 125, def: 140, spa: 55, spd: 55, spe: 85}, + baseStats: {hp: 65, atk: 125, def: 140, spa: 55, spd: 55, spe: 45}, abilities: {}, prevo: "Pinsir", evoLevel: 42, }, - madaamu: { + luxwan: { num: 1187, - name: "Madaamu", + gen: 1, + name: "Luxwan", types: ["Normal", "Flying"], baseStats: {hp: 72, atk: 105, def: 75, spa: 63, spd: 63, spe: 70}, abilities: {}, prevo: "Farfetch'd", evoLevel: 24, }, - tsubomitto: { + bellignan: { num: 1188, - name: "Tsubomitto", + gen: 1, + name: "Bellignan", types: ["Grass", "Poison"], baseStats: {hp: 80, atk: 120, def: 65, spa: 85, spd: 85, spe: 70}, abilities: {}, prevo: "Weepinbell", evoType: "trade", // sun/poison stone does not exist so let's just do this }, - animon: { + mimmeo: { num: 1187, - name: "Animon", + gen: 1, + name: "Mimmeo ", types: ["Steel"], baseStats: {hp: 100, atk: 55, def: 50, spa: 50, spd: 50, spe: 150}, abilities: {}, @@ -324,46 +390,92 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { evoType: "useItem", // it's sort of a metal coat evoItem: "Moon Stone", }, - monja: { + burgela: { num: 1188, - name: "Monja", + gen: 1, + name: "Burgela", types: ["Grass"], baseStats: {hp: 45, atk: 35, def: 85, spa: 80, spd: 80, spe: 40}, abilities: {}, evos: ["Tangela"], }, - para: { + paraspor: { num: 1189, - name: "Para", + gen: 1, + name: "Paraspor", types: ["Bug"], baseStats: {hp: 20, atk: 55, def: 40, spa: 40, spd: 40, spe: 10}, abilities: {}, evos: ["Paras"], }, - hinaazu: { + dodaerie: { num: 1190, - name: "Hinaazu", + gen: 1, + name: "Dodaerie", types: ["Normal", "Flying"], baseStats: {hp: 15, atk: 65, def: 25, spa: 15, spd: 15, spe: 55}, abilities: {}, evos: ["Doduo"], }, - pudi: { + pupperon: { num: 1191, - name: "Pudi", + gen: 1, + name: "Pupperon", types: ["Fire"], baseStats: {hp: 35, atk: 50, def: 25, spa: 30, spd: 30, spe: 40}, abilities: {}, evos: ["Growlithe"], }, - betobebii: { + smujj: { num: 1191, - name: "Betobebii", + gen: 1, + name: "Smujj", types: ["Poison"], baseStats: {hp: 60, atk: 60, def: 30, spa: 20, spd: 20, spe: 5}, abilities: {}, evos: ["Grimer"], }, + gentlarva: { + num: 1192, + gen: 1, + name: "Gentlarva", + types: ["Bug"], + abilities: {}, + baseStats: {hp: 40, atk: 35, def: 30, spa: 25, spd: 25, spe: 45}, + evos: ["Pupal"], + }, + pupal: { + num: 1193, + gen: 1, + name: "Pupal", + types: ["Bug"], + abilities: {}, + baseStats: {hp: 45, atk: 20, def: 50, spa: 30, spd: 30, spe: 40}, + evos: ["Carapthor"], + prevo: "Gentlarva", + evoLevel: 7, + }, + carapthor: { + num: 1194, + gen: 1, + name: "Carapthor", + types: ["Bug", "Fighting"], + abilities: {}, + baseStats: {hp: 60, atk: 85, def: 50, spa: 50, spd: 50, spe: 60}, + prevo: "Pupal", + evoLevel: 10, + }, + disturban: { + num: 1195, + gen: 1, + name: "Disturban", + types: ["Water"], + baseStats: {hp: 70, atk: 125, def: 145, spa: 70, spd: 70, spe: 50}, + abilities: {}, + prevo: "Shellder", + evoType: "useItem", + evoItem: "Water Stone", + }, /// /// .o88b. d8888b. .d88b. .d8888. .d8888. d888b d88888b d8b db d88888b db db .d88b. .d8888. ///d8P Y8 88 `8D .8P Y8. 88' YP 88' YP 88' Y8b 88' 888o 88 88' 88 88 .8P Y8. 88' YP @@ -373,143 +485,178 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { /// `Y88P' 88 YD `Y88P' `8888Y' `8888Y' Y888P Y88888P VP V8P Y88888P YP `Y88P' `8888Y' /// scizor: { + gen: 1, inherit: true, baseStats: {hp: 70, atk: 130, def: 100, spa: 55, spd: 55, spe: 60}, }, cleffa: { + gen: 1, inherit: true, baseStats: {hp: 50, atk: 25, def: 28, spa: 45, spd: 45, spe: 15}, }, igglybuff: { + gen: 1, inherit: true, baseStats: {hp: 90, atk: 30, def: 15, spa: 20, spd: 20, spe: 15}, }, crobat: { + gen: 1, inherit: true, baseStats: {hp: 85, atk: 90, def: 80, spa: 80, spd: 80, spe: 130}, }, bellossom: { + gen: 1, inherit: true, baseStats: {hp: 75, atk: 80, def: 85, spa: 100, spd: 100, spe: 50}, }, politoed: { + gen: 1, inherit: true, baseStats: {hp: 90, atk: 75, def: 75, spa: 90, spd: 90, spe: 70}, }, slowking: { + gen: 1, inherit: true, baseStats: {hp: 95, atk: 75, def: 80, spa: 100, spd: 100, spe: 30}, }, slowkinggalar: { //its a forme but its one of a cross-gen evo so lets keep things simple inherit: true, baseStats: {hp: 95, atk: 65, def: 80, spa: 110, spd: 110, spe: 30}, + gen: 1, }, magnezone: { inherit: true, baseStats: {hp: 70, atk: 70, def: 115, spa: 130, spd: 130, spe: 60}, + gen: 1, }, hitmontop: { inherit: true, baseStats: {hp: 50, atk: 95, def: 95, spa: 35, spd: 35, spe: 70}, + gen: 1, }, lickilicky: { inherit: true, baseStats: {hp: 110, atk: 85, def: 95, spa: 80, spd: 80, spe: 50}, + gen: 1, }, steelix: { inherit: true, baseStats: {hp: 75, atk: 85, def: 200, spa: 65, spd: 65, spe: 30}, + gen: 1, }, rhyperior: { inherit: true, baseStats: {hp: 115, atk: 140, def: 130, spa: 55, spd: 55, spe: 40}, + gen: 1, }, happiny: { inherit: true, baseStats: {hp: 100, atk: 5, def: 5, spa: 65, spd: 65, spe: 30}, + gen: 1, }, blissey: { inherit: true, baseStats: {hp: 255, atk: 10, def: 10, spa: 135, spd: 135, spe: 55}, + gen: 1, }, tangrowth: { inherit: true, baseStats: {hp: 100, atk: 100, def: 125, spa: 110, spd: 110, spe: 50}, + gen: 1, }, kingdra: { inherit: true, baseStats: {hp: 75, atk: 95, def: 95, spa: 95, spd: 95, spe: 85}, + gen: 1, }, smoochum: { inherit: true, baseStats: {hp: 45, atk: 30, def: 15, spa: 85, spd: 85, spe: 65}, + gen: 1, }, elekid: { inherit: true, - baseStats: {hp: 45, atk: 63, def: 37, spa: 55, spd: 55, spe: 55}, + baseStats: {hp: 45, atk: 63, def: 37, spa: 55, spd: 55, spe: 95}, + gen: 1, }, electivire: { inherit: true, baseStats: {hp: 75, atk: 123, def: 67, spa: 85, spd: 85, spe: 95}, + gen: 1, }, magby: { inherit: true, baseStats: {hp: 45, atk: 75, def: 37, spa: 55, spd: 55, spe: 83}, + gen: 1, }, magmortar: { inherit: true, baseStats: {hp: 75, atk: 95, def: 67, spa: 95, spd: 95, spe: 83}, //why do they have the same speed as their babies this is so mean + gen: 1, }, munchlax: { inherit: true, baseStats: {hp: 135, atk: 85, def: 40, spa: 40, spd: 40, spe: 5}, + gen: 1, }, mimejr: { inherit: true, baseStats: {hp: 20, atk: 25, def: 45, spa: 70, spd: 70, spe: 60}, + gen: 1, }, porygon2: { //hahahahahahaa inherit: true, baseStats: {hp: 85, atk: 80, def: 90, spa: 95, spd: 95, spe: 60}, + gen: 1, }, porygonz: { //new uber just dropped inherit: true, baseStats: {hp: 85, atk: 80, def: 70, spa: 135, spd: 135, spe: 90}, + gen: 1, }, espeon: { inherit: true, baseStats: {hp: 65, atk: 65, def: 60, spa: 130, spd: 130, spe: 110}, + gen: 1, }, umbreon: { inherit: true, baseStats: {hp: 95, atk: 65, def: 110, spa: 130, spd: 130, spe: 65}, + gen: 1, }, leafeon: { inherit: true, baseStats: {hp: 65, atk: 110, def: 130, spa: 65, spd: 65, spe: 95}, + gen: 1, }, glaceon: { inherit: true, baseStats: {hp: 65, atk: 60, def: 110, spa: 130, spd: 130, spe: 65}, + gen: 1, }, sylveon: { inherit: true, baseStats: {hp: 95, atk: 65, def: 65, spa: 130, spd: 130, spe: 60}, + gen: 1, }, perrserker: { inherit: true, baseStats: {hp: 70, atk: 110, def: 100, spa: 60, spd: 60, spe: 50}, + gen: 1, }, sirfetchd: { inherit: true, baseStats: {hp: 62, atk: 135, def: 95, spa: 68, spd: 68, spe: 65}, + gen: 1, }, mrrime: { inherit: true, baseStats: {hp: 80, atk: 85, def: 75, spa: 100, spd: 100, spe: 70}, + gen: 1, }, kleavor: { inherit: true, + gen: 1, baseStats: {hp: 70, atk: 135, def: 95, spa: 45, spd: 45, spe: 85}, abilities: {}, prevo: "Scyther", @@ -518,11 +665,13 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, meltan: { // look just let me put them here inherit: true, + gen: 1, baseStats: {hp: 46, atk: 65, def: 55, spa: 35, spd: 35, spe: 34}, evos: ["Melmetal"], // iirc ps hates this so i will just force it myself like a 2 year old }, melmetal: { // please? inherit: true, + gen: 1, baseStats: {hp: 135, atk: 143, def: 143, spa: 65, spd: 65, spe: 34}, prevo: "Meltan", evoType: "useItem", @@ -530,66 +679,39 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, annihilape: { inherit: true, - num: 979, - name: "Annihilape", - types: ["Fighting", "Ghost"], - abilities: {}, + gen: 1, baseStats: {hp: 110, atk: 115, def: 80, spa: 50, spd: 50, spe: 90}, prevo: "Primeape", evoType: "trade", }, wiglett: { // yeah convergents can go here too idgaf inherit: true, - num: 960, - name: "Wiglett", - types: ["Water"], - abilities: {}, - baseStats: {hp: 10, atk: 55, def: 25, spa: 35, spd: 35, spe: 95}, - evos: ["Wugtrio"], + gen: 1, + baseStats: {hp: 10, atk: 55, def: 25, spa: 25, spd: 25, spe: 95}, }, wugtrio: { inherit: true, - num: 961, - name: "Wugtrio", - types: ["Water"], - abilities: {}, + gen: 1, baseStats: {hp: 35, atk: 80, def: 50, spa: 70, spd: 70, spe: 120}, - prevo: "Wiglett", - evoLevel: 26, }, toedscool: { inherit: true, - num: 948, - name: "Toedscool", - types: ["Ground", "Grass"], - abilities: {}, + gen: 1, baseStats: {hp: 40, atk: 40, def: 35, spa: 100, spd: 100, spe: 70}, - evos: ["Toedscruel"] }, toedscruel: { inherit: true, - num: 949, - name: "Toedscruel", - types: ["Ground", "Grass"], - abilities: {}, + gen: 1, baseStats: {hp: 80, atk: 60, def: 65, spa: 120, spd: 120, spe: 100}, - prevo: "Toedscool", - evoLevel: 30, }, screamtail: { //ehh go on then you paradox fucks can go here too inherit: true, - num: 985, - name: "Scream Tail", - types: ["Fairy", "Psychic"], - abilities: {}, + gen: 1, baseStats: {hp: 115, atk: 65, def: 99, spa: 115, spd: 115, spe: 111}, }, sandyshocks: { inherit: true, - num: 989, - name: "Sandy Shocks", - types: ["Electric", "Ground"], - abilities: {}, + gen: 1, baseStats: {hp: 85, atk: 81, def: 97, spa: 121, spd: 121, spe: 101}, }, ///d8888b. d88888b d888b d888888b .d88b. d8b db .d8b. db db db .d8b. d8888b. d888888b .d8b. d8b db d888888b .d8888. @@ -600,165 +722,186 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { ///88 YD Y88888P Y888P Y888888P `Y88P' VP V8P YP YP Y88888P YP YP YP 88 YD Y888888P YP YP VP V8P YP `8888Y' rattataalola: { inherit: true, + gen: 1, baseStats: {hp: 30, atk: 56, def: 35, spa: 25, spd: 25, spe: 72}, }, raticatealola: { inherit: true, + gen: 1, baseStats: {hp: 75, atk: 71, def: 70, spa: 40, spd: 40, spe: 77}, }, raichualola: { inherit: true, + gen: 1, baseStats: {hp: 60, atk: 85, def: 50, spa: 95, spd: 95, spe: 100}, }, sandshrewalola: { inherit: true, + gen: 1, baseStats: {hp: 50, atk: 75, def: 90, spa: 35, spd: 35, spe: 40}, }, sandslashalola: { //yo its freezai inherit: true, + gen: 1, baseStats: {hp: 75, atk: 100, def: 120, spa: 65, spd: 65, spe: 65}, }, vulpixalola: { inherit: true, + gen: 1, baseStats: {hp: 38, atk: 41, def: 40, spa: 65, spd: 65, spe: 65}, }, ninetalesalola: { inherit: true, + gen: 1, baseStats: {hp: 73, atk: 67, def: 75, spa: 100, spd: 100, spe: 109}, }, diglettalola: { inherit: true, + gen: 1, baseStats: {hp: 10, atk: 55, def: 30, spa: 45, spd: 45, spe: 90}, }, dugtrioalola: { inherit: true, + gen: 1, baseStats: {hp: 35, atk: 80, def: 60, spa: 70, spd: 70, spe: 110}, }, meowthalola: { inherit: true, + gen: 1, baseStats: {hp: 40, atk: 35, def: 35, spa: 50, spd: 50, spe: 90}, }, meowthgalar: { inherit: true, + gen: 1, baseStats: {hp: 50, atk: 65, def: 55, spa: 40, spd: 40, spe: 40}, }, persianalola: { inherit: true, + gen: 1, baseStats: {hp: 65, atk: 60, def: 60, spa: 75, spd: 75, spe: 115}, }, growlithehisui: { inherit: true, + gen: 1, baseStats: {hp: 60, atk: 75, def: 45, spa: 50, spd: 50, spe: 55}, abilities: {}, }, arcaninehisui: { inherit: true, + gen: 1, baseStats: {hp: 95, atk: 115, def: 80, spa: 80, spd: 80, spe: 90}, abilities: {}, }, geodudealola: { inherit: true, + gen: 1, baseStats: {hp: 40, atk: 80, def: 100, spa: 30, spd: 30, spe: 20}, }, graveleralola: { inherit: true, + gen: 1, baseStats: {hp: 55, atk: 95, def: 115, spa: 45, spd: 45, spe: 35}, }, golemalola: { inherit: true, + gen: 1, baseStats: {hp: 80, atk: 120, def: 130, spa: 55, spd: 55, spe: 45}, }, ponytagalar: { inherit: true, + gen: 1, baseStats: {hp: 50, atk: 85, def: 55, spa: 65, spd: 65, spe: 90}, }, rapidashgalar: { inherit: true, + gen: 1, baseStats: {hp: 65, atk: 100, def: 70, spa: 80, spd: 80, spe: 105}, }, slowpokegalar: { inherit: true, + gen: 1, baseStats: {hp: 90, atk: 65, def: 65, spa: 40, spd: 40, spe: 15}, }, slowbrogalar: { inherit: true, + gen: 1, baseStats: {hp: 95, atk: 100, def: 95, spa: 70, spd: 70, spe: 30}, }, farfetchdgalar: { inherit: true, + gen: 1, baseStats: {hp: 52, atk: 70, def: 55, spa: 58, spd: 58, spe: 55}, }, grimeralola: { inherit: true, + gen: 1, baseStats: {hp: 80, atk: 80, def: 50, spa: 40, spd: 40, spe: 25}, }, mukalola: { inherit: true, + gen: 1, baseStats: {hp: 105, atk: 105, def: 75, spa: 65, spd: 65, spe: 50}, }, voltorbhisui: { inherit: true, + gen: 1, baseStats: {hp: 40, atk: 30, def: 55, spa: 55, spd: 55, spe: 100}, abilities: {}, }, electrodehisui: { inherit: true, + gen: 1, baseStats: {hp: 60, atk: 50, def: 70, spa: 80, spd: 80, spe: 140}, abilities: {}, }, exeggutoralola: { inherit: true, + gen: 1, baseStats: {hp: 95, atk: 105, def: 85, spa: 125, spd: 125, spe: 45}, }, marowakalola: { inherit: true, + gen: 1, baseStats: {hp: 60, atk: 80, def: 110, spa: 50, spd: 50, spe: 45}, }, weezinggalar: { inherit: true, + gen: 1, baseStats: {hp: 65, atk: 90, def: 120, spa: 85, spd: 85, spe: 60}, }, mrmimegalar: { inherit: true, + gen: 1, baseStats: {hp: 50, atk: 65, def: 65, spa: 90, spd: 90, spe: 100}, }, taurospaldeacombat: { inherit: true, - num: 128, - name: "Tauros-Paldea-Combat", - baseSpecies: "Tauros", - forme: "Paldea-Combat", - types: ["Fighting"], + gen: 1, baseStats: {hp: 75, atk: 110, def: 105, spa: 70, spd: 70, spe: 100}, }, taurospaldeablaze: { inherit: true, - num: 128, - name: "Tauros-Paldea-Blaze", - baseSpecies: "Tauros", - forme: "Paldea-Blaze", - types: ["Fighting", "Fire"], + gen: 1, baseStats: {hp: 75, atk: 110, def: 105, spa: 70, spd: 70, spe: 100}, }, taurospaldeaaqua: { inherit: true, - num: 128, - name: "Tauros-Paldea-Aqua", - baseSpecies: "Tauros", - forme: "Paldea-Aqua", - types: ["Fighting", "Water"], + gen: 1, baseStats: {hp: 75, atk: 110, def: 105, spa: 70, spd: 70, spe: 100}, }, articunogalar: { inherit: true, + gen: 1, baseStats: {hp: 90, atk: 85, def: 85, spa: 125, spd: 125, spe: 95}, }, zapdosgalar: { inherit: true, + gen: 1, baseStats: {hp: 90, atk: 125, def: 90, spa: 85, spd: 85, spe: 100}, }, moltresgalar: { inherit: true, + gen: 1, baseStats: {hp: 90, atk: 85, def: 90, spa: 125, spd: 125, spe: 90}, }, //8888 8888 888 888 888 @@ -773,6 +916,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { // These were mainly added for fun and have no impact on gameplay. The important details are simply cloned as a result. gastlyghost: { inherit: true, + gen: 1, num: -9000, name: "Gastly-Ghost", baseSpecies: "Gastly", @@ -783,6 +927,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, haunterghost: { inherit: true, + gen: 1, num: -9001, name: "Haunter-Ghost", baseSpecies: "Haunter", @@ -793,6 +938,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, cuboneghost: { inherit: true, + gen: 1, num: -9002, name: "Cubone-Ghost", baseSpecies: "Cubone", @@ -803,6 +949,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, marowakghost: { inherit: true, + gen: 1, num: -9003, name: "Marowak-Ghost", baseSpecies: "Marowak", @@ -813,6 +960,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, kabutopsfossil: { inherit: true, + gen: 1, num: -9004, name: "Kabutops-Fossil", baseSpecies: "Kabutops", @@ -823,6 +971,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, aerodactylfossil: { inherit: true, + gen: 1, num: -9005, name: "Aerodactyl-Fossil", baseSpecies: "Aerodactyl", @@ -1001,7 +1150,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { vulpix: { inherit: true, baseStats: {hp: 38, atk: 41, def: 40, spa: 65, spd: 65, spe: 65}, - prevo: "Mikon", + prevo: "Vulpiii", evoLevel: 13, }, ninetales: { @@ -1045,7 +1194,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { paras: { inherit: true, baseStats: {hp: 35, atk: 70, def: 55, spa: 55, spd: 55, spe: 25}, - prevo: "Para", + prevo: "Paraspor", evoLevel: 12, }, parasect: { @@ -1071,7 +1220,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { meowth: { inherit: true, baseStats: {hp: 40, atk: 45, def: 35, spa: 40, spd: 40, spe: 90}, - prevo: "Konya", + prevo: "Coinpur", evoLevel: 14, }, persian: { @@ -1101,7 +1250,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { growlithe: { inherit: true, baseStats: {hp: 55, atk: 70, def: 45, spa: 50, spd: 50, spe: 60}, - prevo: "Pudi", + prevo: "Pupperon", evoLevel: 13, }, arcanine: { @@ -1152,7 +1301,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { weepinbell: { inherit: true, baseStats: {hp: 65, atk: 90, def: 50, spa: 85, spd: 85, spe: 55}, - evos: ["Victreebel", "Tsubomitto"], + evos: ["Victreebel", "Bellignan"], }, victreebel: { inherit: true, @@ -1181,7 +1330,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { ponyta: { inherit: true, baseStats: {hp: 50, atk: 85, def: 55, spa: 65, spd: 65, spe: 90}, - prevo: "Puchikoon", + prevo: "Kolta", evoLevel: 20, }, rapidash: { @@ -1214,12 +1363,12 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { farfetchd: { inherit: true, baseStats: {hp: 52, atk: 65, def: 55, spa: 58, spd: 58, spe: 60}, - evos: ["Madaamu"], + evos: ["Luxwan"], }, doduo: { inherit: true, baseStats: {hp: 35, atk: 85, def: 45, spa: 35, spd: 35, spe: 75}, - prevo: "Hinaazu", + prevo: "Dodaerie", evoLevel: 16, }, dodrio: { @@ -1237,7 +1386,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { grimer: { inherit: true, baseStats: {hp: 80, atk: 80, def: 50, spa: 40, spd: 40, spe: 25}, - prevo: "Betobebii", + prevo: "Smujj", evoLevel: 19, }, muk: { @@ -1247,6 +1396,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { shellder: { inherit: true, baseStats: {hp: 30, atk: 65, def: 100, spa: 45, spd: 45, spe: 40}, + evos: ["Cloyster", "Disturban"], }, cloyster: { inherit: true, @@ -1353,7 +1503,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { inherit: true, baseStats: {hp: 65, atk: 55, def: 115, spa: 100, spd: 100, spe: 60}, evos: ["Tangrowth"], - prevo: "Monja", + prevo: "Burgela", evoLevel: 13, }, kangaskhan: { @@ -1372,7 +1522,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { goldeen: { inherit: true, baseStats: {hp: 45, atk: 67, def: 60, spa: 50, spd: 50, spe: 63}, - prevo: "Gyopin", + prevo: "Orfry", evoLevel: 22, }, seaking: { @@ -1420,7 +1570,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { pinsir: { inherit: true, baseStats: {hp: 65, atk: 125, def: 100, spa: 55, spd: 55, spe: 85}, - evos: ["Purakkusu"], + evos: ["Tricules"], }, tauros: { inherit: true, @@ -1441,7 +1591,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { ditto: { inherit: true, baseStats: {hp: 48, atk: 48, def: 48, spa: 48, spd: 48, spe: 48}, - evos: ["Animon"], + evos: ["Mimmeo"], }, eevee: { inherit: true, @@ -1548,6 +1698,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { // These are the Magikarp formes from Magikarp Jump, done by Albatross on Christmas. She is insane and so am I. magikarpskelly: { inherit: true, + gen: 1, num: -9006, name: "Magikarp-Skelly", baseSpecies: "Magikarp", @@ -1558,6 +1709,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, magikarpcalicoorange: { inherit: true, + gen: 1, num: -9007, name: "Magikarp-Calico-Orange", baseSpecies: "Magikarp", @@ -1568,6 +1720,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, magikarpcalicowhite: { inherit: true, + gen: 1, num: -9008, name: "Magikarp-Calico-White", baseSpecies: "Magikarp", @@ -1578,6 +1731,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, magikarpcalicoblack: { inherit: true, + gen: 1, num: -9009, name: "Magikarp-Calico-Black", baseSpecies: "Magikarp", @@ -1588,6 +1742,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, magikarpcalicogold: { inherit: true, + gen: 1, num: -9010, name: "Magikarp-Calico-Gold", baseSpecies: "Magikarp", @@ -1598,6 +1753,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, magikarporangetwotone: { inherit: true, + gen: 1, num: -9011, name: "Magikarp-Orange-Two-Tone", baseSpecies: "Magikarp", @@ -1608,6 +1764,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, magikarporangeorca: { inherit: true, + gen: 1, num: -9012, name: "Magikarp-Orange-Orca", baseSpecies: "Magikarp", @@ -1618,6 +1775,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, magikarporangedapples: { inherit: true, + gen: 1, num: -9013, name: "Magikarp-Orange-Dapples", baseSpecies: "Magikarp", @@ -1628,6 +1786,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, magikarppinktwotone: { inherit: true, + gen: 1, num: -9014, name: "Magikarp-Pink-Two-Tone", baseSpecies: "Magikarp", @@ -1638,6 +1797,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, magikarppinkorca: { inherit: true, + gen: 1, num: -9015, name: "Magikarp-Pink-Orca", baseSpecies: "Magikarp", @@ -1648,6 +1808,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, magikarppinkdapples: { inherit: true, + gen: 1, num: -9016, name: "Magikarp-Pink-Dapples", baseSpecies: "Magikarp", @@ -1658,6 +1819,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, magikarpgraybubbles: { inherit: true, + gen: 1, num: -9017, name: "Magikarp-Gray-Bubbles", baseSpecies: "Magikarp", @@ -1668,6 +1830,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, magikarpgraydiamonds: { inherit: true, + gen: 1, num: -9018, name: "Magikarp-Gray-Diamonds", baseSpecies: "Magikarp", @@ -1678,6 +1841,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, magikarpgraypatches: { inherit: true, + gen: 1, num: -9019, name: "Magikarp-Gray-Patches", baseSpecies: "Magikarp", @@ -1688,6 +1852,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, magikarppurplebubbles: { inherit: true, + gen: 1, num: -9020, name: "Magikarp-Purple-Bubbles", baseSpecies: "Magikarp", @@ -1698,6 +1863,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, magikarppurplediamonds: { inherit: true, + gen: 1, num: -9021, name: "Magikarp-Purple-Diamonds", baseSpecies: "Magikarp", @@ -1708,6 +1874,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, magikarppurplepatches: { inherit: true, + gen: 1, num: -9022, name: "Magikarp-Purple-Patches", baseSpecies: "Magikarp", @@ -1718,6 +1885,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, magikarpapricottiger: { inherit: true, + gen: 1, num: -9023, name: "Magikarp-Apricot-Tiger", baseSpecies: "Magikarp", @@ -1728,6 +1896,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, magikarpapricotzebra: { inherit: true, + gen: 1, num: -9024, name: "Magikarp-Apricot-Zebra", baseSpecies: "Magikarp", @@ -1738,6 +1907,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, magikarpapricotstripes: { inherit: true, + gen: 1, num: -9025, name: "Magikarp-Apricot-Stripes", baseSpecies: "Magikarp", @@ -1748,6 +1918,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, magikarpbrowntiger: { inherit: true, + gen: 1, num: -9026, name: "Magikarp-Brown-Tiger", baseSpecies: "Magikarp", @@ -1758,6 +1929,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, magikarpbrownzebra: { inherit: true, + gen: 1, num: -9027, name: "Magikarp-Brown-Zebra", baseSpecies: "Magikarp", @@ -1768,6 +1940,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, magikarpbrownstripes: { inherit: true, + gen: 1, num: -9028, name: "Magikarp-Brown-Stripes", baseSpecies: "Magikarp", @@ -1778,6 +1951,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, magikarporangeforehead: { inherit: true, + gen: 1, num: -9029, name: "Magikarp-Orange-Forehead", baseSpecies: "Magikarp", @@ -1788,6 +1962,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, magikarporangemask: { inherit: true, + gen: 1, num: -9030, name: "Magikarp-Orange-Mask", baseSpecies: "Magikarp", @@ -1798,6 +1973,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, magikarpblackforehead: { inherit: true, + gen: 1, num: -9031, name: "Magikarp-Black-Forehead", baseSpecies: "Magikarp", @@ -1808,6 +1984,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, magikarpblackmask: { inherit: true, + gen: 1, num: -9032, name: "Magikarp-Black-Mask", baseSpecies: "Magikarp", @@ -1818,6 +1995,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, magikarpsaucyblue: { inherit: true, + gen: 1, num: -9033, name: "Magikarp-Saucy-Blue", baseSpecies: "Magikarp", @@ -1828,6 +2006,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, magikarpblueraindrops: { inherit: true, + gen: 1, num: -9034, name: "Magikarp-Blue-Raindrops", baseSpecies: "Magikarp", @@ -1838,6 +2017,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, magikarpsaucyviolet: { inherit: true, + gen: 1, num: -9035, name: "Magikarp-Saucy-Violet", baseSpecies: "Magikarp", @@ -1848,6 +2028,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, magikarpvioletraindrops: { inherit: true, + gen: 1, num: -9036, name: "Magikarp-Violet-Raindrops", baseSpecies: "Magikarp", @@ -1858,6 +2039,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { }, magikarpgold: { inherit: true, + gen: 1, num: -9037, name: "Magikarp-Gold", baseSpecies: "Magikarp", diff --git a/rulesets.ts b/rulesets.ts index fcb85ea..ec4ed59 100644 --- a/rulesets.ts +++ b/rulesets.ts @@ -1,20 +1,20 @@ -export const Formats: {[k: string]: ModdedFormatsData} = { +export const Rulesets: {[k: string]: ModdedFormatData} = { standard: { effectType: 'ValidatorRule', name: 'Standard', ruleset: ['Obtainable', 'Desync Clause Mod', 'Sleep Clause Mod', 'Freeze Clause Mod', 'Species Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Endless Battle Clause', 'HP Percentage Mod', 'Cancel Mod'], banlist: ['Dig', 'Fly'], }, - + welcomemessage: { effectType: 'Rule', name: 'Welcome Message', desc: 'https://www.youtube.com/channel/UCvVihnVokWwZ4NpeMsBk48A', - onBegin() { + onBegin() { this.add('-message', "Welcome to RBY Expansion Pack!"); - this.add('-message', "This is a Solomod that adds things like scrapped content and crossgen evos to RBY OU."); - this.add('-message', "For more information, please check this spreadsheet - "); - this.add('-message', "https://docs.google.com/spreadsheets/d/1AVXdy6hSW_TtPr0HSGW9JT4m0bstLlPXnH3ccl-rQ20/edit?usp=sharing"); + this.add('-message', "This is a Solomod that adds things like scrapped content and crossgen evos to RBY OU."); + this.add('-message', "For more information, please check this spreadsheet - "); + this.add('-message', "https://docs.google.com/spreadsheets/d/1AVXdy6hSW_TtPr0HSGW9JT4m0bstLlPXnH3ccl-rQ20/edit?usp=sharing"); }, }, }; diff --git a/scripts.ts b/scripts.ts index e71cc34..6781f81 100644 --- a/scripts.ts +++ b/scripts.ts @@ -1,867 +1,24 @@ -/** - * Gen 1 mechanics are fairly different to those we know on current gen. - * Therefor we need to make a lot of changes to the battle engine for this game simulation. - * This generation inherits all the changes from older generations, that must be taken into account when editing code. - */ - export const Scripts: ModdedBattleScriptsData = { inherit: 'gen1', gen: 1, init() { + const specialTypes = ['Fire', 'Water', 'Grass', 'Ice', 'Electric', 'Dark', 'Psychic', 'Dragon', 'Fairy']; + let newCategory = ''; + for (const i in this.data.Moves) { + if (!this.data.Moves[i]) console.log(i); + if (this.data.Moves[i].category === 'Status') continue; + newCategory = specialTypes.includes(this.data.Moves[i].type) ? 'Special' : 'Physical'; + if (newCategory !== this.data.Moves[i].category) { + this.modData('Moves', i).category = newCategory; + } + } for (const i in this.data.Pokedex) { (this.data.Pokedex[i] as any).gender = 'N'; (this.data.Pokedex[i] as any).eggGroups = null; } }, - // Gen 1 stores the last damage dealt by a move in the battle. - // This is used for the move Counter. - lastDamage: 0, - // BattleSide scripts. - // In gen 1, last move information is stored on the side rather than on the active Pokémon. - // This is because there was actually no side, just Battle and active Pokémon effects. - // Side's lastMove is used for Counter and Mirror Move. - side: { - lastMove: null, - }, - // BattlePokemon scripts. - pokemon: { - getStat(statName, unmodified) { - // @ts-ignore - type checking prevents 'hp' from being passed, but we're paranoid - if (statName === 'hp') throw new Error("Please read `maxhp` directly"); - if (unmodified) return this.storedStats[statName]; - return this.modifiedStats![statName]; - }, - // Gen 1 function to apply a stat modification that is only active until the stat is recalculated or mon switched. - modifyStat(statName, modifier) { - if (!(statName in this.storedStats)) throw new Error("Invalid `statName` passed to `modifyStat`"); - const modifiedStats = this.battle.clampIntRange(Math.floor(this.modifiedStats![statName] * modifier), 1, 999); - this.modifiedStats![statName] = modifiedStats; - }, - // In generation 1, boosting function increases the stored modified stat and checks for opponent's status. - boostBy(boost) { - let changed = false; - let i: BoostName; - for (i in boost) { - const delta = boost[i]; - if (delta === undefined) continue; - if (delta > 0 && this.boosts[i] >= 6) continue; - if (delta < 0 && this.boosts[i] <= -6) continue; - this.boosts[i] += delta; - if (this.boosts[i] > 6) { - this.boosts[i] = 6; - } - if (this.boosts[i] < -6) { - this.boosts[i] = -6; - } - changed = true; - // Recalculate the modified stat - if (i === 'evasion' || i === 'accuracy') continue; - let stat = this.species.baseStats[i]; - stat = Math.floor(Math.floor(2 * stat + this.set.ivs[i] + Math.floor(this.set.evs[i] / 4)) * this.level / 100 + 5); - this.modifiedStats![i] = this.storedStats[i] = Math.floor(stat); - if (this.boosts[i] >= 0) { - this.modifyStat!(i, [1, 1.5, 2, 2.5, 3, 3.5, 4][this.boosts[i]]); - } else { - this.modifyStat!(i, [100, 66, 50, 40, 33, 28, 25][-this.boosts[i]] / 100); - } - } - return changed; - }, - }, - // Battle scripts. - // runMove can be found in scripts.js. This function is the main one when running a move. - // It deals with the beforeMove and AfterMoveSelf events. - // This leads with partial trapping moves shennanigans after the move has been used. - // It also deals with how PP reduction works on gen 1. - runMove(moveOrMoveName, pokemon, targetLoc, sourceEffect) { - const target = this.getTarget(pokemon, moveOrMoveName, targetLoc); - const move = this.dex.getActiveMove(moveOrMoveName); - if (target?.subFainted) target.subFainted = null; - - this.setActiveMove(move, pokemon, target); - - if (pokemon.moveThisTurn || !this.runEvent('BeforeMove', pokemon, target, move)) { - // Prevent invulnerability from persisting until the turn ends. - pokemon.removeVolatile('twoturnmove'); - // Rampage moves end without causing confusion - delete pokemon.volatiles['lockedmove']; - this.clearActiveMove(true); - // This is only run for sleep. - this.runEvent('AfterMoveSelf', pokemon, target, move); - return; - } - if (move.beforeMoveCallback) { - if (move.beforeMoveCallback.call(this, pokemon, target, move)) { - this.clearActiveMove(true); - return; - } - } - pokemon.lastDamage = 0; - let lockedMove = this.runEvent('LockMove', pokemon); - if (lockedMove === true) lockedMove = false; - if ( - !lockedMove && - (!pokemon.volatiles['partialtrappinglock'] || pokemon.volatiles['partialtrappinglock'].locked !== target) - ) { - pokemon.deductPP(move, null, target); - // On gen 1 moves are stored when they are chosen and a PP is deducted. - pokemon.side.lastMove = move; - pokemon.lastMove = move; - } else { - sourceEffect = move; - } - if (pokemon.volatiles['partialtrappinglock'] && target !== pokemon.volatiles['partialtrappinglock'].locked) { - const moveSlot = pokemon.moveSlots.find(ms => ms.id === move.id); - if (moveSlot && moveSlot.pp < 0) { - moveSlot.pp = 0; - this.hint("You normally would have underflowed their PP to 63, but I removed that!"); - } - } - this.useMove(move, pokemon, target, sourceEffect); - this.singleEvent('AfterMove', move, null, pokemon, target, move); - - // If target fainted - if (target && target.hp <= 0) { - // We remove recharge - if (pokemon.volatiles['mustrecharge']) pokemon.removeVolatile('mustrecharge'); - delete pokemon.volatiles['partialtrappinglock']; - // We remove screens - target.side.removeSideCondition('reflect'); - target.side.removeSideCondition('lightscreen'); - pokemon.removeVolatile('twoturnmove'); - } else if (pokemon.hp) { - this.runEvent('AfterMoveSelf', pokemon, target, move); - } - if (pokemon.volatiles['mustrecharge']) this.add('-mustrecharge', pokemon); - - // For partial trapping moves, we are saving the target - if (move.volatileStatus === 'partiallytrapped' && target && target.hp > 0) { - // Let's check if the lock exists - if (pokemon.volatiles['partialtrappinglock'] && target.volatiles['partiallytrapped']) { - // Here the partialtrappinglock volatile has been already applied - const sourceVolatile = pokemon.volatiles['partialtrappinglock']; - const targetVolatile = target.volatiles['partiallytrapped']; - if (!sourceVolatile.locked) { - // If it's the first hit, we save the target - sourceVolatile.locked = target; - } else if (target !== pokemon && target !== sourceVolatile.locked) { - // Our target switched out! Re-roll the duration, damage, and accuracy. - const duration = this.sample([2, 2, 2, 2, 3, 3, 3, 3]); - sourceVolatile.duration = duration; - sourceVolatile.locked = target; - // Duration reset thus partially trapped at 2 always. - targetVolatile.duration = 2; - } - } // If we move to here, the move failed and there's no partial trapping lock. - } - }, - // useMove can be found on scripts.js - // It is the function that actually uses the move, running ModifyMove events. - // It uses the move and then deals with the effects after the move. - useMove(moveOrMoveName, pokemon, target, sourceEffect) { - if (!sourceEffect && this.effect.id) sourceEffect = this.effect; - const baseMove = this.dex.getMove(moveOrMoveName); - let move = this.dex.getActiveMove(baseMove); - if (target === undefined) target = this.getRandomTarget(pokemon, move); - if (move.target === 'self') { - target = pokemon; - } - if (sourceEffect) move.sourceEffect = sourceEffect.id; - - this.setActiveMove(move, pokemon, target); - - this.singleEvent('ModifyMove', move, null, pokemon, target, move, move); - if (baseMove.target !== move.target) { - // Target changed in ModifyMove, so we must adjust it here - target = this.getRandomTarget(pokemon, move); - } - move = this.runEvent('ModifyMove', pokemon, target, move, move); - if (baseMove.target !== move.target) { - // Check again, this shouldn't ever happen on Gen 1. - target = this.getRandomTarget(pokemon, move); - this.debug('not a gen 1 mechanic'); - } - if (!move) return false; - - let attrs = ''; - if (pokemon.fainted) { - // Removing screens upon faint. - pokemon.side.removeSideCondition('reflect'); - pokemon.side.removeSideCondition('lightscreen'); - return false; - } - - if (sourceEffect) attrs += '|[from]' + this.dex.getEffect(sourceEffect); - this.addMove('move', pokemon, move.name, target + attrs); - - if (!this.singleEvent('Try', move, null, pokemon, target, move)) { - return true; - } - if (!this.singleEvent('TryMove', move, null, pokemon, target, move) || - !this.runEvent('TryMove', pokemon, target, move)) { - return true; - } - - if (move.ignoreImmunity === undefined) { - move.ignoreImmunity = (move.category === 'Status'); - } - - let damage: number | undefined | false | '' = false; - if (!target || target.fainted) { - this.attrLastMove('[notarget]'); - this.add('-notarget'); - return true; - } - damage = this.tryMoveHit(target, pokemon, move); - - // Store 0 damage for last damage if move failed or dealt 0 damage. - // This only happens on moves that don't deal damage but call GetDamageVarsForPlayerAttack (disassembly). - const neverDamageMoves = [ - 'conversion', 'haze', 'mist', 'focusenergy', 'confuseray', 'supersonic', 'transform', 'lightscreen', 'reflect', 'substitute', 'mimic', 'leechseed', 'splash', 'softboiled', 'recover', 'rest', - ]; - if ( - !damage && - (move.category !== 'Status' || (move.status && !['psn', 'tox', 'par'].includes(move.status))) && - !neverDamageMoves.includes(move.id) - ) { - this.lastDamage = 0; - } - - // Go ahead with results of the used move. - if (damage === false) { - this.singleEvent('MoveFail', move, null, target, pokemon, move); - return true; - } - - if (!move.negateSecondary) { - this.singleEvent('AfterMoveSecondarySelf', move, null, pokemon, target, move); - this.runEvent('AfterMoveSecondarySelf', pokemon, target, move); - } - return true; - }, - // tryMoveHit can be found on scripts.js - // This function attempts a move hit and returns the attempt result before the actual hit happens. - // It deals with partial trapping weirdness and accuracy bugs as well. - tryMoveHit(target, pokemon, move) { - let damage: number | false | undefined = 0; - - // First, check if the target is semi-invulnerable - let hitResult = this.runEvent('Invulnerability', target, pokemon, move); - if (hitResult === false) { - if (!move.spreadHit) this.attrLastMove('[miss]'); - this.add('-miss', pokemon); - return false; - } - - // Then, check if the Pokémon is immune to this move. - if ( - (!move.ignoreImmunity || (move.ignoreImmunity !== true && !move.ignoreImmunity[move.type])) && - !target.runImmunity(move.type, true) - ) { - if (move.selfdestruct) { - this.faint(pokemon, pokemon, move); - } - return false; - } - hitResult = this.singleEvent('TryImmunity', move, null, target, pokemon, move); - if (hitResult === false) { - this.add('-immune', target); - return false; - } - - // Now, let's calculate the accuracy. - let accuracy = move.accuracy; - - // Partial trapping moves: true accuracy while it lasts - if (move.volatileStatus === 'partiallytrapped' && target === pokemon.volatiles['partialtrappinglock']?.locked) { - accuracy = true; - } - - // If a sleep inducing move is used while the user is recharging, the accuracy is true. - if (move.status === 'slp' && target && target.volatiles['mustrecharge']) { - accuracy = true; - } - - // OHKO moves only have a chance to hit if the user is at least as fast as the target - if (move.ohko) { - if (target.speed > pokemon.speed) { - this.add('-immune', target, '[ohko]'); - return false; - } - } - - // Calculate true accuracy for gen 1, which uses 0-255. - // Gen 1 uses the same boost table for accuracy and evasiveness as every other stat - const boostTable = [25, 28, 33, 40, 50, 66, 100, 150, 200, 250, 300, 350, 400]; - if (accuracy !== true) { - accuracy = Math.floor(accuracy * 255 / 100); - // Check also for accuracy modifiers. - if (!move.ignoreAccuracy) { - accuracy = Math.floor(accuracy * (boostTable[pokemon.boosts.accuracy + 6] / 100)); - } - if (!move.ignoreEvasion) { - accuracy = Math.floor(accuracy * (boostTable[-target.boosts.evasion + 6] / 100)); - } - accuracy = Math.min(accuracy, 255); - } - accuracy = this.runEvent('Accuracy', target, pokemon, move, accuracy); - // Moves that target the user do not suffer from the 1/256 miss chance. - if (move.target === 'self' && accuracy !== true) accuracy++; - if (move.target === 'self' && accuracy !== true) accuracy++; //this extra one removes the self-heal glitch - - // 1/256 chance of missing always, no matter what. Besides the aforementioned exceptions. - if (accuracy !== true && !this.randomChance(accuracy, 256)) { - this.attrLastMove('[miss]'); - this.add('-miss', pokemon); - if (accuracy === 255) this.hint("This move missed because of the 1/256 glitch."); - damage = false; - } - - // If damage is 0 and not false it means it didn't miss, let's calc. - if (damage !== false) { - pokemon.lastDamage = 0; - if (move.multihit) { - let hits = move.multihit; - if (Array.isArray(hits)) { - // Yes, it's hardcoded... meh - if (hits[0] === 2 && hits[1] === 5) { - hits = this.sample([2, 2, 3, 3, 4, 5]); - } else { - hits = this.random(hits[0], hits[1] + 1); - } - } - hits = Math.floor(hits); - // In gen 1, all the hits have the same damage for multihits move - let moveDamage: number | undefined | false = 0; - let i: number; - for (i = 0; i < hits && target.hp && pokemon.hp; i++) { - move.hit = i + 1; - moveDamage = this.moveHit(target, pokemon, move); - if (moveDamage === false) break; - damage = (moveDamage || 0); - // Move damage is fixed to be the first move's damage - if (i === 0) move.damage = damage; - if (target.subFainted) { - i++; - break; - } - } - move.damage = null; - if (i === 0) return 1; - this.add('-hitcount', target, i); - } else { - damage = this.moveHit(target, pokemon, move); - } - } - - if (move.category !== 'Status') { - target.gotAttacked(move, damage, pokemon); - } - - if (move.selfdestruct) { - if (!target.subFainted) { - this.faint(pokemon, pokemon, move); - } else { - this.hint(`In Gen 1, the user of ${move.name} will not take damage if it breaks a Substitute.`); - } - } - - // The move missed. - if (!damage && damage !== 0) { - // Delete the partial trap lock if necessary. - delete pokemon.volatiles['partialtrappinglock']; - return false; - } - - if (move.ohko) this.add('-ohko'); - - if (!move.negateSecondary) { - this.singleEvent('AfterMoveSecondary', move, null, target, pokemon, move); - this.runEvent('AfterMoveSecondary', target, pokemon, move); - } - - return damage; - }, - // move Hit can be found on scripts.js - // It deals with the actual move hit, as the name indicates, dealing damage and/or effects. - // This function also deals with the Gen 1 Substitute behaviour on the hitting process. - moveHit(target, pokemon, move, moveData, isSecondary, isSelf) { - let damage: number | false | null | undefined = 0; - - if (!isSecondary && !isSelf) this.setActiveMove(move, pokemon, target); - let hitResult: number | boolean = true; - if (!moveData) moveData = move; - - if (move.ignoreImmunity === undefined) { - move.ignoreImmunity = (move.category === 'Status'); - } - - // We get the sub to the target to see if it existed - const targetSub = (target) ? target.volatiles['substitute'] : false; - const targetHadSub = (targetSub !== null && targetSub !== false && (typeof targetSub !== 'undefined')); - - if (target) { - hitResult = this.singleEvent('TryHit', moveData, {}, target, pokemon, move); - - // Handle here the applying of partial trapping moves to Pokémon with Substitute - if (targetSub && moveData.volatileStatus && moveData.volatileStatus === 'partiallytrapped') { - target.addVolatile(moveData.volatileStatus, pokemon, move); - } - - if (!hitResult) { - if (hitResult === false) this.add('-fail', target); - return false; - } - - // Only run the hit events for the hit itself, not the secondary or self hits - if (!isSelf && !isSecondary) { - hitResult = this.runEvent('TryHit', target, pokemon, move); - if (!hitResult) { - if (hitResult === false) this.add('-fail', target); - // Special Substitute hit flag - if (hitResult !== 0) { - return false; - } - } - if (!this.runEvent('TryFieldHit', target, pokemon, move)) { - return false; - } - } else if (isSecondary && !moveData.self) { - hitResult = this.runEvent('TrySecondaryHit', target, pokemon, moveData); - } - - if (hitResult === 0) { - target = null; - } else if (!hitResult) { - if (hitResult === false) this.add('-fail', target); - return false; - } - } - - if (target) { - let didSomething = false; - - damage = this.getDamage(pokemon, target, moveData); - - // getDamage has several possible return values: - // - // a number: - // means that much damage is dealt (0 damage still counts as dealing - // damage for the purposes of things like Static) - // false: - // gives error message: "But it failed!" and move ends - // null: - // the move ends, with no message (usually, a custom fail message - // was already output by an event handler) - // undefined: - // means no damage is dealt and the move continues - // - // basically, these values have the same meanings as they do for event - // handlers. - - if ((damage || damage === 0) && !target.fainted) { - if (move.noFaint && damage >= target.hp) { - damage = target.hp - 1; - } - damage = this.damage(damage, target, pokemon, move); - if (!(damage || damage === 0)) return false; - didSomething = true; - } else if (damage === false && typeof hitResult === 'undefined') { - this.add('-fail', target); - } - if (damage === false || damage === null) { - return false; - } - if (moveData.boosts && target.hp) { - if (!this.boost(moveData.boosts, target, pokemon, move)) { - this.add('-fail', target); - return false; - } - didSomething = true; - // Check the status of the Pokémon whose turn is not. - // When a move that affects stat levels is used, if the Pokémon whose turn it is not right now is paralyzed or - // burned, the correspoding stat penalties will be applied again to that Pokémon. - if (pokemon.side.foe.active[0] && pokemon.side.foe.active[0].status) { - // If it's paralysed, quarter its speed. - if (pokemon.side.foe.active[0].status === 'par') { - pokemon.side.foe.active[0].modifyStat!('spe', 0.25); - } - // If it's burned, halve its attack. - if (pokemon.side.foe.active[0].status === 'brn') { - pokemon.side.foe.active[0].modifyStat!('atk', 0.5); - } - } - } - if (moveData.heal && !target.fainted) { - const d = target.heal(Math.floor(target.maxhp * moveData.heal[0] / moveData.heal[1])); - if (!d) { - this.add('-fail', target); - return false; - } - this.add('-heal', target, target.getHealth); - didSomething = true; - } - if (moveData.status) { - // Gen 1 bug: If the target has just used hyperbeam and must recharge, its status will be ignored and put to sleep. - // This does NOT revert the paralyse speed drop or the burn attack drop. - // Also, being put to sleep clears the recharge condition. - if (moveData.status === 'slp' && target.volatiles['mustrecharge']) { - // The sleep move is guaranteed to hit in this situation, unless Sleep Clause activates. - // Do not clear recharge in that case. - if (target.setStatus(moveData.status, pokemon, move)) { - target.removeVolatile('mustrecharge'); - this.hint( - "In Gen 1, if a Pokémon that has just used Hyper Beam and has yet to recharge is targeted with a sleep inducing move, " + - "any other status it may already have will be ignored and sleep will be induced regardless." - ); - } - } else if (!target.status) { - if (target.setStatus(moveData.status, pokemon, move)) { - // Gen 1 mechanics: The burn attack drop and the paralyse speed drop are applied here directly on stat modifiers. - if (moveData.status === 'brn') target.modifyStat!('atk', 0.5); - if (moveData.status === 'par') target.modifyStat!('spe', 0.25); - } - } else if (!isSecondary) { - if (target.status === moveData.status) { - this.add('-fail', target, target.status); - } else { - this.add('-fail', target); - } - } - didSomething = true; - } - if (moveData.forceStatus) { - if (target.setStatus(moveData.forceStatus, pokemon, move)) { - // @ts-ignore - if (moveData.forceStatus === 'brn') target.modifyStat('atk', 0.5); - // @ts-ignore - if (moveData.forceStatus === 'par') target.modifyStat('spe', 0.25); - didSomething = true; - } - } - if (moveData.volatileStatus) { - if (target.addVolatile(moveData.volatileStatus, pokemon, move)) { - didSomething = true; - } - } - if (moveData.sideCondition) { - if (target.side.addSideCondition(moveData.sideCondition, pokemon, move)) { - didSomething = true; - } - } - if (moveData.pseudoWeather) { - if (this.field.addPseudoWeather(moveData.pseudoWeather, pokemon, move)) { - didSomething = true; - } - } - // Hit events - hitResult = this.singleEvent('Hit', moveData, {}, target, pokemon, move); - if (!isSelf && !isSecondary) { - this.runEvent('Hit', target, pokemon, move); - } - if (!hitResult && !didSomething) { - if (hitResult === false) this.add('-fail', target); - return false; - } - } - const targetHasSub = !!(target?.volatiles['substitute']); - - // Here's where self effects are applied. - const doSelf = (targetHadSub && targetHasSub) || !targetHadSub; - if (moveData.self && (doSelf || (moveData.self !== true && moveData.self.volatileStatus === 'partialtrappinglock'))) { - this.moveHit(pokemon, pokemon, move, moveData.self, isSecondary, true); - } - - // Now we can save the partial trapping damage. - if (pokemon.volatiles['partialtrappinglock']) { - pokemon.volatiles['partialtrappinglock'].damage = pokemon.lastDamage; - } - - // Apply move secondaries. - if (moveData.secondaries) { - for (const secondary of moveData.secondaries) { - // We check here whether to negate the probable secondary status if it's para, burn, or freeze. - // In the game, this is checked and if true, the random number generator is not called. - // That means that a move that does not share the type of the target can status it. - // If a move that was not fire-type would exist on Gen 1, it could burn a Pokémon. - if (!(secondary.status && ['par', 'brn', 'frz'].includes(secondary.status) && target && target.hasType(move.type))) { - if (secondary.chance === undefined || this.randomChance(Math.ceil(secondary.chance * 256 / 100), 256)) { - this.moveHit(target, pokemon, move, secondary, true, isSelf); - } - } - } - } - if (move.selfSwitch && pokemon.hp) { - pokemon.switchFlag = move.selfSwitch; - } - - return damage; - }, - // boost can be found on sim/battle.js on Battle object. - // It deals with Pokémon stat boosting, including Gen 1 buggy behaviour with burn and paralyse. - boost(boost, target, source = null, effect = null) { - if (this.event) { - if (!target) target = this.event.target; - if (!source) source = this.event.source; - if (!effect) effect = this.effect; - } - if (typeof effect === 'string') effect = this.dex.getEffect(effect); - if (!target || !target.hp) return 0; - let success = null; - boost = this.runEvent('Boost', target, source, effect, Object.assign({}, boost)); - let i: BoostName; - for (i in boost) { - const currentBoost: SparseBoostsTable = {}; - currentBoost[i] = boost[i]; - if (boost[i] !== 0 && target.boostBy(currentBoost)) { - success = true; - let msg = '-boost'; - if (boost[i]! < 0) { - msg = '-unboost'; - // @ts-ignore - boost[i] = -boost[i]; - // Re-add attack and speed drops if not present - if (i === 'atk' && target.status === 'brn' && !target.volatiles['brnattackdrop']) { - target.addVolatile('brnattackdrop'); - } - if (i === 'spe' && target.status === 'par' && !target.volatiles['parspeeddrop']) { - target.addVolatile('parspeeddrop'); - } - } else { - // Check for boost increases deleting attack or speed drops - if (i === 'atk' && target.status === 'brn' && target.volatiles['brnattackdrop']) { - target.removeVolatile('brnattackdrop'); - } - if (i === 'spe' && target.status === 'par' && target.volatiles['parspeeddrop']) { - target.removeVolatile('parspeeddrop'); - } - } - if (!effect || effect.effectType === 'Move') { - // @ts-ignore - this.add(msg, target, i, boost[i]); - } else { - // @ts-ignore - this.add(msg, target, i, boost[i], '[from] ' + effect.fullname); - } - this.runEvent('AfterEachBoost', target, source, effect, currentBoost); - } - } - this.runEvent('AfterBoost', target, source, effect, boost); - return success; - }, - // getDamage can be found on sim/battle.js on the Battle object. - // It calculates the damage pokemon does to target with move. - getDamage(pokemon, target, move, suppressMessages) { - // First of all, we get the move. - if (typeof move === 'string') { - move = this.dex.getActiveMove(move); - } else if (typeof move === 'number') { - move = { - basePower: move, - type: '???', - category: 'Physical', - willCrit: false, - flags: {}, - } as ActiveMove; - } - - // Let's see if the target is immune to the move. - if (!move.ignoreImmunity || (move.ignoreImmunity !== true && !move.ignoreImmunity[move.type])) { - if (!target.runImmunity(move.type, true)) { - return false; - } - } - - // Is it an OHKO move? - if (move.ohko) { - return target.maxhp; - } - - // We edit the damage through move's damage callback if necessary. - if (move.damageCallback) { - return move.damageCallback.call(this, pokemon, target); - } - - // We take damage from damage=level moves (seismic toss). - if (move.damage === 'level') { - return pokemon.level; - } - - // If there's a fix move damage, we return that. - if (move.damage) { - return move.damage; - } - - // If it's the first hit on a Normal-type partially trap move, it hits Ghosts anyways but damage is 0. - if (move.volatileStatus === 'partiallytrapped' && move.type === 'Normal' && target.hasType('Ghost')) { - return 0; - } - - // Let's check if we are in middle of a partial trap sequence to return the previous damage. - if (pokemon.volatiles['partialtrappinglock'] && (target === pokemon.volatiles['partialtrappinglock'].locked)) { - return pokemon.volatiles['partialtrappinglock'].damage; - } - - // We check the category and typing to calculate later on the damage. - if (!move.category) move.category = 'Physical'; - if (!move.defensiveCategory) move.defensiveCategory = move.category; - // '???' is typeless damage: used for Struggle and Confusion etc - if (!move.type) move.type = '???'; - const type = move.type; - - // We get the base power and apply basePowerCallback if necessary. - let basePower: number | false | null = move.basePower; - if (move.basePowerCallback) { - basePower = move.basePowerCallback.call(this, pokemon, target, move); - } - if (!basePower) { - return basePower === 0 ? undefined : basePower; - } - basePower = this.clampIntRange(basePower, 1); - - // Checking for the move's Critical Hit possibility. We check if it's a 100% crit move, otherwise we calculate the chance. - let isCrit = move.willCrit || false; - if (!isCrit) { - // In gen 1, the critical chance is based on speed. - // First, we get the base speed, divide it by 2 and floor it. This is our current crit chance. - let critChance = Math.floor(pokemon.species.baseStats['spe'] / 2); - - // Now we check for focus energy volatile. - if (pokemon.volatiles['focusenergy']) { - // If it exists, crit chance is divided by 2 again and floored. - critChance = Math.floor(critChance / 2); - } else { - // Normally, without focus energy, crit chance is multiplied by 2 and capped at 255 here. - critChance = this.clampIntRange(critChance * 2, 1, 255); - } - - // Now we check for the move's critical hit ratio. - if (move.critRatio === 1) { - // Normal hit ratio, we divide the crit chance by 2 and floor the result again. - critChance = Math.floor(critChance / 2); - } else if (move.critRatio === 2) { - // High crit ratio, we multiply the result so far by 4 and cap it at 255. - critChance = this.clampIntRange(critChance * 4, 1, 255); - } - - // Last, we check deppending on ratio if the move critical hits or not. - // We compare our critical hit chance against a random number between 0 and 255. - // If the random number is lower, we get a critical hit. This means there is always a 1/255 chance of not hitting critically. - if (critChance > 0) { - isCrit = this.randomChance(critChance, 256); - } - } - if (isCrit) target.getMoveHitData(move).crit = true; - - // Happens after crit calculation. - if (basePower) { - basePower = this.runEvent('BasePower', pokemon, target, move, basePower); - if (basePower && move.basePowerModifier) { - basePower *= move.basePowerModifier; - } - } - if (!basePower) return 0; - basePower = this.clampIntRange(basePower, 1); - - // We now check attacker's and defender's stats. - let level = pokemon.level; - let attacker = pokemon; - const defender = target; - if (move.useTargetOffensive) attacker = target; - const atkType: StatNameExceptHP = (move.category === 'Physical') ? 'atk' : 'spa'; - const defType: StatNameExceptHP = (move.defensiveCategory === 'Physical') ? 'def' : 'spd'; - let attack = attacker.getStat(move.useSourceDefensiveAsOffensive ? defType : atkType); - let defense = defender.getStat(defType); - // In gen 1, screen effect is applied here. - if ((defType === 'def' && defender.volatiles['reflect']) || (defType === 'spd' && defender.volatiles['lightscreen'])) { - this.debug('Screen doubling (Sp)Def'); - defense *= 2; - defense = this.clampIntRange(defense, 1, 1998); - } - - // In the event of a critical hit, the offense and defense changes are ignored. - // This includes both boosts and screens. - // Also, level is doubled in damage calculation. - if (isCrit) { - move.ignoreOffensive = true; - move.ignoreDefensive = true; - level *= 2; - if (!suppressMessages) this.add('-crit', target); - } - if (move.ignoreOffensive) { - this.debug('Negating (sp)atk boost/penalty.'); - attack = attacker.getStat(atkType, true); - } - if (move.ignoreDefensive) { - this.debug('Negating (sp)def boost/penalty.'); - // No screens - defense = target.getStat(defType, true); - } - - // When either attack or defense are higher than 256, they are both divided by 4 and moded by 256. - // This is what cuases the roll over bugs. - if (attack >= 256 || defense >= 256) { - attack = this.clampIntRange(Math.floor(attack / 4) % 256, 1); - // Defense isn't checked on the cartridge, but we don't want those / 0 bugs on the sim. - defense = this.clampIntRange(Math.floor(defense / 4) % 256, 1); - } - - // Self destruct moves halve defense at this point. - if (move.selfdestruct && defType === 'def') { - defense = this.clampIntRange(Math.floor(defense / 2), 1); - } - - // Let's go with the calculation now that we have what we need. - // We do it step by step just like the game does. - let damage = level * 2; - damage = Math.floor(damage / 5); - damage += 2; - damage *= basePower; - damage *= attack; - damage = Math.floor(damage / defense); - damage = this.clampIntRange(Math.floor(damage / 50), 1, 997); - damage += 2; - - // STAB damage bonus, the "???" type never gets STAB - if (type !== '???' && pokemon.hasType(type)) { - damage += Math.floor(damage / 2); - } - - // Type effectiveness. - // The order here is not correct, must change to check the move versus each type. - const totalTypeMod = target.runEffectiveness(move); - // Super effective attack - if (totalTypeMod > 0) { - if (!suppressMessages) this.add('-supereffective', target); - damage *= 20; - damage = Math.floor(damage / 10); - if (totalTypeMod >= 2) { - damage *= 20; - damage = Math.floor(damage / 10); - } - } - if (totalTypeMod < 0) { - if (!suppressMessages) this.add('-resisted', target); - damage *= 5; - damage = Math.floor(damage / 10); - if (totalTypeMod <= -2) { - damage *= 5; - damage = Math.floor(damage / 10); - } - } - - // If damage becomes 0, the move is made to miss. - // This occurs when damage was either 2 or 3 prior to applying STAB/Type matchup, and target is 4x resistant to the move. - if (damage === 0) return damage; - - // Apply random factor is damage is greater than 1 - if (damage > 1) { - damage *= this.random(217, 256); - damage = Math.floor(damage / 255); - if (damage > target.hp && !target.volatiles['substitute']) damage = target.hp; - } - - // And we are done. - return Math.floor(damage); + teambuilderConfig: { + rbyTradebacks: true, + specialTypes: ['Fire', 'Water', 'Grass', 'Electric', 'Ice', 'Psychic', 'Dark', 'Dragon', 'Fairy'], }, }; diff --git a/sprites/back/balumba.png b/sprites/back/balumba.png new file mode 100644 index 0000000..7637498 Binary files /dev/null and b/sprites/back/balumba.png differ diff --git a/sprites/back/bellignan.png b/sprites/back/bellignan.png new file mode 100644 index 0000000..5dc4d4e Binary files /dev/null and b/sprites/back/bellignan.png differ diff --git a/sprites/back/blissey.png b/sprites/back/blissey.png index a3667f3..9fd12e7 100644 Binary files a/sprites/back/blissey.png and b/sprites/back/blissey.png differ diff --git a/sprites/back/burgela.png b/sprites/back/burgela.png new file mode 100644 index 0000000..428e100 Binary files /dev/null and b/sprites/back/burgela.png differ diff --git a/sprites/back/cactormus.png b/sprites/back/cactormus.png new file mode 100644 index 0000000..cda3894 Binary files /dev/null and b/sprites/back/cactormus.png differ diff --git a/sprites/back/carapthor.png b/sprites/back/carapthor.png new file mode 100644 index 0000000..e3114e0 Binary files /dev/null and b/sprites/back/carapthor.png differ diff --git a/sprites/back/coinpur.png b/sprites/back/coinpur.png new file mode 100644 index 0000000..77fbde9 Binary files /dev/null and b/sprites/back/coinpur.png differ diff --git a/sprites/back/crobat.png b/sprites/back/crobat.png index d67f171..6dfb445 100644 Binary files a/sprites/back/crobat.png and b/sprites/back/crobat.png differ diff --git a/sprites/back/crocky.png b/sprites/back/crocky.png index b95aa9d..484248f 100644 Binary files a/sprites/back/crocky.png and b/sprites/back/crocky.png differ diff --git a/sprites/back/disturban.png b/sprites/back/disturban.png new file mode 100644 index 0000000..a7bd541 Binary files /dev/null and b/sprites/back/disturban.png differ diff --git a/sprites/back/dodaerie.png b/sprites/back/dodaerie.png new file mode 100644 index 0000000..ac9b86d Binary files /dev/null and b/sprites/back/dodaerie.png differ diff --git a/sprites/back/gavillain.png b/sprites/back/gavillain.png new file mode 100644 index 0000000..484248f Binary files /dev/null and b/sprites/back/gavillain.png differ diff --git a/sprites/back/gawarhed.png b/sprites/back/gawarhed.png new file mode 100644 index 0000000..bd575cc Binary files /dev/null and b/sprites/back/gawarhed.png differ diff --git a/sprites/back/gentlarva.png b/sprites/back/gentlarva.png new file mode 100644 index 0000000..9aad70d Binary files /dev/null and b/sprites/back/gentlarva.png differ diff --git a/sprites/back/golem-alola.png b/sprites/back/golem-alola.png new file mode 100644 index 0000000..9975691 Binary files /dev/null and b/sprites/back/golem-alola.png differ diff --git a/sprites/back/golemalola.png b/sprites/back/golemalola.png index a0a3565..9975691 100644 Binary files a/sprites/back/golemalola.png and b/sprites/back/golemalola.png differ diff --git a/sprites/back/iguanarch.png b/sprites/back/iguanarch.png new file mode 100644 index 0000000..3836117 Binary files /dev/null and b/sprites/back/iguanarch.png differ diff --git a/sprites/back/kasanagi.png b/sprites/back/kasanagi.png new file mode 100644 index 0000000..f0777ad Binary files /dev/null and b/sprites/back/kasanagi.png differ diff --git a/sprites/back/kingdra.png b/sprites/back/kingdra.png index fcd03ee..e060047 100644 Binary files a/sprites/back/kingdra.png and b/sprites/back/kingdra.png differ diff --git a/sprites/back/kleavor.png b/sprites/back/kleavor.png index 9b2c3dc..a34ae50 100644 Binary files a/sprites/back/kleavor.png and b/sprites/back/kleavor.png differ diff --git a/sprites/back/kokana.png b/sprites/back/kokana.png new file mode 100644 index 0000000..9aad70d Binary files /dev/null and b/sprites/back/kokana.png differ diff --git a/sprites/back/kolta.png b/sprites/back/kolta.png new file mode 100644 index 0000000..d340e86 Binary files /dev/null and b/sprites/back/kolta.png differ diff --git a/sprites/back/leafeon.png b/sprites/back/leafeon.png index 6506f76..bb60daf 100644 Binary files a/sprites/back/leafeon.png and b/sprites/back/leafeon.png differ diff --git a/sprites/back/luxwan.png b/sprites/back/luxwan.png new file mode 100644 index 0000000..d549519 Binary files /dev/null and b/sprites/back/luxwan.png differ diff --git a/sprites/back/mimmeo.png b/sprites/back/mimmeo.png new file mode 100644 index 0000000..ca57b8e Binary files /dev/null and b/sprites/back/mimmeo.png differ diff --git a/sprites/back/ministare.png b/sprites/back/ministare.png new file mode 100644 index 0000000..010ecd2 Binary files /dev/null and b/sprites/back/ministare.png differ diff --git a/sprites/back/moltres-galar.png b/sprites/back/moltres-galar.png index c33442e..baf6b8e 100644 Binary files a/sprites/back/moltres-galar.png and b/sprites/back/moltres-galar.png differ diff --git a/sprites/back/mrrime.png b/sprites/back/mrrime.png index f51ffe9..1998091 100644 Binary files a/sprites/back/mrrime.png and b/sprites/back/mrrime.png differ diff --git a/sprites/back/omegadge.png b/sprites/back/omegadge.png new file mode 100644 index 0000000..39308dd Binary files /dev/null and b/sprites/back/omegadge.png differ diff --git a/sprites/back/orfry.png b/sprites/back/orfry.png new file mode 100644 index 0000000..9fc306d Binary files /dev/null and b/sprites/back/orfry.png differ diff --git a/sprites/back/paraspor.png b/sprites/back/paraspor.png new file mode 100644 index 0000000..76ec4cf Binary files /dev/null and b/sprites/back/paraspor.png differ diff --git a/sprites/back/perrserker.png b/sprites/back/perrserker.png index c0d5754..8d1025c 100644 Binary files a/sprites/back/perrserker.png and b/sprites/back/perrserker.png differ diff --git a/sprites/back/persian-alola.png b/sprites/back/persian-alola.png index fafe198..6f9616b 100644 Binary files a/sprites/back/persian-alola.png and b/sprites/back/persian-alola.png differ diff --git a/sprites/back/porygon-z.png b/sprites/back/porygon-z.png index f6f213b..a686dac 100644 Binary files a/sprites/back/porygon-z.png and b/sprites/back/porygon-z.png differ diff --git a/sprites/back/porygon.png b/sprites/back/porygon.png new file mode 100644 index 0000000..00e6c31 Binary files /dev/null and b/sprites/back/porygon.png differ diff --git a/sprites/back/porygon2.png b/sprites/back/porygon2.png index db3ca2d..1f4c1f7 100644 Binary files a/sprites/back/porygon2.png and b/sprites/back/porygon2.png differ diff --git a/sprites/back/pupal.png b/sprites/back/pupal.png new file mode 100644 index 0000000..f0777ad Binary files /dev/null and b/sprites/back/pupal.png differ diff --git a/sprites/back/pupperon.png b/sprites/back/pupperon.png new file mode 100644 index 0000000..a62b1ee Binary files /dev/null and b/sprites/back/pupperon.png differ diff --git a/sprites/back/ramoose.png b/sprites/back/ramoose.png new file mode 100644 index 0000000..5c0266a Binary files /dev/null and b/sprites/back/ramoose.png differ diff --git a/sprites/back/raticate-alola.png b/sprites/back/raticate-alola.png index 03aff23..ca989fc 100644 Binary files a/sprites/back/raticate-alola.png and b/sprites/back/raticate-alola.png differ diff --git a/sprites/back/rhyperior.png b/sprites/back/rhyperior.png index c46381f..5200815 100644 Binary files a/sprites/back/rhyperior.png and b/sprites/back/rhyperior.png differ diff --git a/sprites/back/sandslash-alola.png b/sprites/back/sandslash-alola.png index 85e08bb..eabf25e 100644 Binary files a/sprites/back/sandslash-alola.png and b/sprites/back/sandslash-alola.png differ diff --git a/sprites/back/sandyshocks.png b/sprites/back/sandyshocks.png index 65ba13a..fb22ae8 100644 Binary files a/sprites/back/sandyshocks.png and b/sprites/back/sandyshocks.png differ diff --git a/sprites/back/screamtail.png b/sprites/back/screamtail.png index a575ff1..f0d25f0 100644 Binary files a/sprites/back/screamtail.png and b/sprites/back/screamtail.png differ diff --git a/sprites/back/sharpoon.png b/sprites/back/sharpoon.png new file mode 100644 index 0000000..ceb7167 Binary files /dev/null and b/sprites/back/sharpoon.png differ diff --git a/sprites/back/skimper.png b/sprites/back/skimper.png index 511209c..16546da 100644 Binary files a/sprites/back/skimper.png and b/sprites/back/skimper.png differ diff --git a/sprites/back/slowking-galar.png b/sprites/back/slowking-galar.png new file mode 100644 index 0000000..fc3eb0d Binary files /dev/null and b/sprites/back/slowking-galar.png differ diff --git a/sprites/back/smudjj.png b/sprites/back/smudjj.png new file mode 100644 index 0000000..82bf308 Binary files /dev/null and b/sprites/back/smudjj.png differ diff --git a/sprites/back/squeamata.png b/sprites/back/squeamata.png new file mode 100644 index 0000000..16546da Binary files /dev/null and b/sprites/back/squeamata.png differ diff --git a/sprites/back/steelix.png b/sprites/back/steelix.png index e4c6840..9c066bc 100644 Binary files a/sprites/back/steelix.png and b/sprites/back/steelix.png differ diff --git a/sprites/back/taaban.png b/sprites/back/taaban.png new file mode 100644 index 0000000..a7bd541 Binary files /dev/null and b/sprites/back/taaban.png differ diff --git a/sprites/back/tauros-paldeaaqua.png b/sprites/back/tauros-paldeaaqua.png new file mode 100644 index 0000000..bac2ddb Binary files /dev/null and b/sprites/back/tauros-paldeaaqua.png differ diff --git a/sprites/back/tauros-paldeablaze.png b/sprites/back/tauros-paldeablaze.png new file mode 100644 index 0000000..d0a0477 Binary files /dev/null and b/sprites/back/tauros-paldeablaze.png differ diff --git a/sprites/back/tauros-paldeacombat.png b/sprites/back/tauros-paldeacombat.png new file mode 100644 index 0000000..8d545bf Binary files /dev/null and b/sprites/back/tauros-paldeacombat.png differ diff --git a/sprites/back/tricules.png b/sprites/back/tricules.png new file mode 100644 index 0000000..f56c554 Binary files /dev/null and b/sprites/back/tricules.png differ diff --git a/sprites/back/vulpiii.png b/sprites/back/vulpiii.png new file mode 100644 index 0000000..86de962 Binary files /dev/null and b/sprites/back/vulpiii.png differ diff --git a/sprites/back/weirduck.png b/sprites/back/weirduck.png index a9b962d..b1a6743 100644 Binary files a/sprites/back/weirduck.png and b/sprites/back/weirduck.png differ diff --git a/sprites/back/wugtrio.png b/sprites/back/wugtrio.png index 1ed4bd6..2be0604 100644 Binary files a/sprites/back/wugtrio.png and b/sprites/back/wugtrio.png differ diff --git a/sprites/front.zip b/sprites/front.zip new file mode 100644 index 0000000..4717df6 Binary files /dev/null and b/sprites/front.zip differ diff --git a/sprites/front/animon.png b/sprites/front/animon.png index 921f77e..1ab0099 100644 Binary files a/sprites/front/animon.png and b/sprites/front/animon.png differ diff --git a/sprites/front/annihilape.png b/sprites/front/annihilape.png index 698a2de..76c9d54 100644 Binary files a/sprites/front/annihilape.png and b/sprites/front/annihilape.png differ diff --git a/sprites/front/arcanine-hisui.png b/sprites/front/arcanine-hisui.png index c29510f..f3f19a3 100644 Binary files a/sprites/front/arcanine-hisui.png and b/sprites/front/arcanine-hisui.png differ diff --git a/sprites/front/articuno-galar.png b/sprites/front/articuno-galar.png index afeed2e..5e7484a 100644 Binary files a/sprites/front/articuno-galar.png and b/sprites/front/articuno-galar.png differ diff --git a/sprites/front/balumba.png b/sprites/front/balumba.png new file mode 100644 index 0000000..39e59a1 Binary files /dev/null and b/sprites/front/balumba.png differ diff --git a/sprites/front/barunda.png b/sprites/front/barunda.png index da4e572..39e59a1 100644 Binary files a/sprites/front/barunda.png and b/sprites/front/barunda.png differ diff --git a/sprites/front/bawligua.png b/sprites/front/bawligua.png index 958b288..e466ffd 100644 Binary files a/sprites/front/bawligua.png and b/sprites/front/bawligua.png differ diff --git a/sprites/front/bellignan.png b/sprites/front/bellignan.png new file mode 100644 index 0000000..019d923 Binary files /dev/null and b/sprites/front/bellignan.png differ diff --git a/sprites/front/bittybat.png b/sprites/front/bittybat.png index 511a75f..87959f2 100644 Binary files a/sprites/front/bittybat.png and b/sprites/front/bittybat.png differ diff --git a/sprites/front/blastyke.png b/sprites/front/blastyke.png index d692fa3..d33b18a 100644 Binary files a/sprites/front/blastyke.png and b/sprites/front/blastyke.png differ diff --git a/sprites/front/blissey.png b/sprites/front/blissey.png index 517ae4e..d602bac 100644 Binary files a/sprites/front/blissey.png and b/sprites/front/blissey.png differ diff --git a/sprites/front/blottle.png b/sprites/front/blottle.png index 8fba009..152a9c2 100644 Binary files a/sprites/front/blottle.png and b/sprites/front/blottle.png differ diff --git a/sprites/front/burgela.png b/sprites/front/burgela.png new file mode 100644 index 0000000..237c30c Binary files /dev/null and b/sprites/front/burgela.png differ diff --git a/sprites/front/buu.png b/sprites/front/buu.png index 985d001..e3f8a58 100644 Binary files a/sprites/front/buu.png and b/sprites/front/buu.png differ diff --git a/sprites/front/cactormus.png b/sprites/front/cactormus.png new file mode 100644 index 0000000..49919fd Binary files /dev/null and b/sprites/front/cactormus.png differ diff --git a/sprites/front/cactus.png b/sprites/front/cactus.png index 0ad8364..49919fd 100644 Binary files a/sprites/front/cactus.png and b/sprites/front/cactus.png differ diff --git a/sprites/front/carapthor.png b/sprites/front/carapthor.png new file mode 100644 index 0000000..7914056 Binary files /dev/null and b/sprites/front/carapthor.png differ diff --git a/sprites/front/cheep.png b/sprites/front/cheep.png index f8765d6..cd154bf 100644 Binary files a/sprites/front/cheep.png and b/sprites/front/cheep.png differ diff --git a/sprites/front/coinpur.png b/sprites/front/coinpur.png new file mode 100644 index 0000000..7807461 Binary files /dev/null and b/sprites/front/coinpur.png differ diff --git a/sprites/front/croakozuna.png b/sprites/front/croakozuna.png index b19464d..3311369 100644 Binary files a/sprites/front/croakozuna.png and b/sprites/front/croakozuna.png differ diff --git a/sprites/front/crobat.png b/sprites/front/crobat.png index 4b6a76f..a482f30 100644 Binary files a/sprites/front/crobat.png and b/sprites/front/crobat.png differ diff --git a/sprites/front/crocky.png b/sprites/front/crocky.png index 29fc778..ec81191 100644 Binary files a/sprites/front/crocky.png and b/sprites/front/crocky.png differ diff --git a/sprites/front/cryithan.png b/sprites/front/cryithan.png index 13b01d3..18e3d05 100644 Binary files a/sprites/front/cryithan.png and b/sprites/front/cryithan.png differ diff --git a/sprites/front/decilla.png b/sprites/front/decilla.png index 39f3600..7b70cee 100644 Binary files a/sprites/front/decilla.png and b/sprites/front/decilla.png differ diff --git a/sprites/front/deer.png b/sprites/front/deer.png index 5266784..e6f63fc 100644 Binary files a/sprites/front/deer.png and b/sprites/front/deer.png differ diff --git a/sprites/front/disturban.png b/sprites/front/disturban.png new file mode 100644 index 0000000..1f71370 Binary files /dev/null and b/sprites/front/disturban.png differ diff --git a/sprites/front/dodaerie.png b/sprites/front/dodaerie.png new file mode 100644 index 0000000..8ef79cb Binary files /dev/null and b/sprites/front/dodaerie.png differ diff --git a/sprites/front/electivire.png b/sprites/front/electivire.png index 2dac805..a4a0e91 100644 Binary files a/sprites/front/electivire.png and b/sprites/front/electivire.png differ diff --git a/sprites/front/espeon.png b/sprites/front/espeon.png index e0c6599..5a367ed 100644 Binary files a/sprites/front/espeon.png and b/sprites/front/espeon.png differ diff --git a/sprites/front/exeggutor-alola.png b/sprites/front/exeggutor-alola.png index 456333c..f2da6ac 100644 Binary files a/sprites/front/exeggutor-alola.png and b/sprites/front/exeggutor-alola.png differ diff --git a/sprites/front/gaotora.png b/sprites/front/gaotora.png index 969c537..db54dfa 100644 Binary files a/sprites/front/gaotora.png and b/sprites/front/gaotora.png differ diff --git a/sprites/front/gavillain.png b/sprites/front/gavillain.png new file mode 100644 index 0000000..ec81191 Binary files /dev/null and b/sprites/front/gavillain.png differ diff --git a/sprites/front/gawarhed.png b/sprites/front/gawarhed.png new file mode 100644 index 0000000..b84644c Binary files /dev/null and b/sprites/front/gawarhed.png differ diff --git a/sprites/front/gentlarva.png b/sprites/front/gentlarva.png new file mode 100644 index 0000000..34fb1a2 Binary files /dev/null and b/sprites/front/gentlarva.png differ diff --git a/sprites/front/glaceon.png b/sprites/front/glaceon.png index 3f8f256..50ad65e 100644 Binary files a/sprites/front/glaceon.png and b/sprites/front/glaceon.png differ diff --git a/sprites/front/gorochu.png b/sprites/front/gorochu.png index e532ad8..62a0339 100644 Binary files a/sprites/front/gorochu.png and b/sprites/front/gorochu.png differ diff --git a/sprites/front/gorotora.png b/sprites/front/gorotora.png index 6784279..ea7f7b8 100644 Binary files a/sprites/front/gorotora.png and b/sprites/front/gorotora.png differ diff --git a/sprites/front/guardia.png b/sprites/front/guardia.png index 4bb0c26..8e14aec 100644 Binary files a/sprites/front/guardia.png and b/sprites/front/guardia.png differ diff --git a/sprites/front/gyaoon.png b/sprites/front/gyaoon.png index 7d9e860..b84644c 100644 Binary files a/sprites/front/gyaoon.png and b/sprites/front/gyaoon.png differ diff --git a/sprites/front/gyopin.png b/sprites/front/gyopin.png index fbdba1a..e0d3ba9 100644 Binary files a/sprites/front/gyopin.png and b/sprites/front/gyopin.png differ diff --git a/sprites/front/iguanarch.png b/sprites/front/iguanarch.png new file mode 100644 index 0000000..18e3d05 Binary files /dev/null and b/sprites/front/iguanarch.png differ diff --git a/sprites/front/jabetta.png b/sprites/front/jabetta.png index 117fbf1..a919d1b 100644 Binary files a/sprites/front/jabetta.png and b/sprites/front/jabetta.png differ diff --git a/sprites/front/jagg.png b/sprites/front/jagg.png index b877fa2..436024c 100644 Binary files a/sprites/front/jagg.png and b/sprites/front/jagg.png differ diff --git a/sprites/front/kasanagi.png b/sprites/front/kasanagi.png new file mode 100644 index 0000000..6b2e879 Binary files /dev/null and b/sprites/front/kasanagi.png differ diff --git a/sprites/front/kingdra.png b/sprites/front/kingdra.png index 86474fa..1e754f0 100644 Binary files a/sprites/front/kingdra.png and b/sprites/front/kingdra.png differ diff --git a/sprites/front/kokana.png b/sprites/front/kokana.png new file mode 100644 index 0000000..34fb1a2 Binary files /dev/null and b/sprites/front/kokana.png differ diff --git a/sprites/front/kolta.png b/sprites/front/kolta.png new file mode 100644 index 0000000..2eed34f Binary files /dev/null and b/sprites/front/kolta.png differ diff --git a/sprites/front/konya.png b/sprites/front/konya.png index f2bc570..7807461 100644 Binary files a/sprites/front/konya.png and b/sprites/front/konya.png differ diff --git a/sprites/front/kotora.png b/sprites/front/kotora.png index 47d861b..b74d3a4 100644 Binary files a/sprites/front/kotora.png and b/sprites/front/kotora.png differ diff --git a/sprites/front/leafeon.png b/sprites/front/leafeon.png index 9d1d174..ae9bf46 100644 Binary files a/sprites/front/leafeon.png and b/sprites/front/leafeon.png differ diff --git a/sprites/front/lickilicky.png b/sprites/front/lickilicky.png index 8358bc2..1f1518c 100644 Binary files a/sprites/front/lickilicky.png and b/sprites/front/lickilicky.png differ diff --git a/sprites/front/luxwan.png b/sprites/front/luxwan.png new file mode 100644 index 0000000..0365eaa Binary files /dev/null and b/sprites/front/luxwan.png differ diff --git a/sprites/front/madaamu.png b/sprites/front/madaamu.png index cbfc98b..0365eaa 100644 Binary files a/sprites/front/madaamu.png and b/sprites/front/madaamu.png differ diff --git a/sprites/front/magmortar.png b/sprites/front/magmortar.png index 3ba9784..aeb08a7 100644 Binary files a/sprites/front/magmortar.png and b/sprites/front/magmortar.png differ diff --git a/sprites/front/magnezone.png b/sprites/front/magnezone.png index 92bfdeb..940424d 100644 Binary files a/sprites/front/magnezone.png and b/sprites/front/magnezone.png differ diff --git a/sprites/front/marowak-alola.png b/sprites/front/marowak-alola.png index 9db48ed..83f1310 100644 Binary files a/sprites/front/marowak-alola.png and b/sprites/front/marowak-alola.png differ diff --git a/sprites/front/mikon.png b/sprites/front/mikon.png index e473e1c..d7c3499 100644 Binary files a/sprites/front/mikon.png and b/sprites/front/mikon.png differ diff --git a/sprites/front/mimmeo.png b/sprites/front/mimmeo.png new file mode 100644 index 0000000..1ab0099 Binary files /dev/null and b/sprites/front/mimmeo.png differ diff --git a/sprites/front/ministare.png b/sprites/front/ministare.png new file mode 100644 index 0000000..e466ffd Binary files /dev/null and b/sprites/front/ministare.png differ diff --git a/sprites/front/muk-alola.png b/sprites/front/muk-alola.png index 3fca538..777d19b 100644 Binary files a/sprites/front/muk-alola.png and b/sprites/front/muk-alola.png differ diff --git a/sprites/front/nidoreign.png b/sprites/front/nidoreign.png index 6ca4f58..2c24f1e 100644 Binary files a/sprites/front/nidoreign.png and b/sprites/front/nidoreign.png differ diff --git a/sprites/front/ninetales-alola.png b/sprites/front/ninetales-alola.png index 9ffa9d9..3180bc0 100644 Binary files a/sprites/front/ninetales-alola.png and b/sprites/front/ninetales-alola.png differ diff --git a/sprites/front/omega.png b/sprites/front/omega.png index abe40d7..a686cae 100644 Binary files a/sprites/front/omega.png and b/sprites/front/omega.png differ diff --git a/sprites/front/omegadge.png b/sprites/front/omegadge.png new file mode 100644 index 0000000..a686cae Binary files /dev/null and b/sprites/front/omegadge.png differ diff --git a/sprites/front/orfry.png b/sprites/front/orfry.png new file mode 100644 index 0000000..e0d3ba9 Binary files /dev/null and b/sprites/front/orfry.png differ diff --git a/sprites/front/paraspor.png b/sprites/front/paraspor.png new file mode 100644 index 0000000..c576748 Binary files /dev/null and b/sprites/front/paraspor.png differ diff --git a/sprites/front/pendraken.png b/sprites/front/pendraken.png index 108d13b..eb50722 100644 Binary files a/sprites/front/pendraken.png and b/sprites/front/pendraken.png differ diff --git a/sprites/front/persian-alola.png b/sprites/front/persian-alola.png index 9574c7b..9f123d7 100644 Binary files a/sprites/front/persian-alola.png and b/sprites/front/persian-alola.png differ diff --git a/sprites/front/porygon.png b/sprites/front/porygon.png new file mode 100644 index 0000000..fd33f95 Binary files /dev/null and b/sprites/front/porygon.png differ diff --git a/sprites/front/porygon2.png b/sprites/front/porygon2.png index a9ce847..7beb3b4 100644 Binary files a/sprites/front/porygon2.png and b/sprites/front/porygon2.png differ diff --git a/sprites/front/porygonz.png b/sprites/front/porygonz.png new file mode 100644 index 0000000..fb258a6 Binary files /dev/null and b/sprites/front/porygonz.png differ diff --git a/sprites/front/puchikoon.png b/sprites/front/puchikoon.png index 755a9b6..2eed34f 100644 Binary files a/sprites/front/puchikoon.png and b/sprites/front/puchikoon.png differ diff --git a/sprites/front/pupal.png b/sprites/front/pupal.png new file mode 100644 index 0000000..6b2e879 Binary files /dev/null and b/sprites/front/pupal.png differ diff --git a/sprites/front/pupperon.png b/sprites/front/pupperon.png new file mode 100644 index 0000000..6261a4b Binary files /dev/null and b/sprites/front/pupperon.png differ diff --git a/sprites/front/raichu-alola.png b/sprites/front/raichu-alola.png index db948ef..6e55d10 100644 Binary files a/sprites/front/raichu-alola.png and b/sprites/front/raichu-alola.png differ diff --git a/sprites/front/ramoose.png b/sprites/front/ramoose.png new file mode 100644 index 0000000..e6f63fc Binary files /dev/null and b/sprites/front/ramoose.png differ diff --git a/sprites/front/rhyperior.png b/sprites/front/rhyperior.png index a70ccec..1d41b26 100644 Binary files a/sprites/front/rhyperior.png and b/sprites/front/rhyperior.png differ diff --git a/sprites/front/ribbito.png b/sprites/front/ribbito.png index c9560cd..fb69d83 100644 Binary files a/sprites/front/ribbito.png and b/sprites/front/ribbito.png differ diff --git a/sprites/front/sharpoon.png b/sprites/front/sharpoon.png new file mode 100644 index 0000000..436024c Binary files /dev/null and b/sprites/front/sharpoon.png differ diff --git a/sprites/front/skimper.png b/sprites/front/skimper.png index 84065f0..2bfe993 100644 Binary files a/sprites/front/skimper.png and b/sprites/front/skimper.png differ diff --git a/sprites/front/slowking-galar.png b/sprites/front/slowking-galar.png new file mode 100644 index 0000000..c7404cb Binary files /dev/null and b/sprites/front/slowking-galar.png differ diff --git a/sprites/front/smujj.png b/sprites/front/smujj.png new file mode 100644 index 0000000..036bb33 Binary files /dev/null and b/sprites/front/smujj.png differ diff --git a/sprites/front/squeamata.png b/sprites/front/squeamata.png new file mode 100644 index 0000000..2bfe993 Binary files /dev/null and b/sprites/front/squeamata.png differ diff --git a/sprites/front/sylveon.png b/sprites/front/sylveon.png index 10f704e..3812d87 100644 Binary files a/sprites/front/sylveon.png and b/sprites/front/sylveon.png differ diff --git a/sprites/front/taaban.png b/sprites/front/taaban.png new file mode 100644 index 0000000..1f71370 Binary files /dev/null and b/sprites/front/taaban.png differ diff --git a/sprites/front/tauros-paldeaaqua.png b/sprites/front/tauros-paldeaaqua.png new file mode 100644 index 0000000..cdcd563 Binary files /dev/null and b/sprites/front/tauros-paldeaaqua.png differ diff --git a/sprites/front/tauros-paldeablaze.png b/sprites/front/tauros-paldeablaze.png new file mode 100644 index 0000000..1bf5935 Binary files /dev/null and b/sprites/front/tauros-paldeablaze.png differ diff --git a/sprites/front/tauros-paldeacombat.png b/sprites/front/tauros-paldeacombat.png new file mode 100644 index 0000000..7d1fd49 Binary files /dev/null and b/sprites/front/tauros-paldeacombat.png differ diff --git a/sprites/front/taurospaldeaaqua.png b/sprites/front/taurospaldeaaqua.png index 60a9718..8f39243 100644 Binary files a/sprites/front/taurospaldeaaqua.png and b/sprites/front/taurospaldeaaqua.png differ diff --git a/sprites/front/taurospaldeablaze.png b/sprites/front/taurospaldeablaze.png index cd99880..674748b 100644 Binary files a/sprites/front/taurospaldeablaze.png and b/sprites/front/taurospaldeablaze.png differ diff --git a/sprites/front/taurospaldeacombat.png b/sprites/front/taurospaldeacombat.png index f778b95..7d1fd49 100644 Binary files a/sprites/front/taurospaldeacombat.png and b/sprites/front/taurospaldeacombat.png differ diff --git a/sprites/front/totartle.png b/sprites/front/totartle.png index 9aea0d4..5540462 100644 Binary files a/sprites/front/totartle.png and b/sprites/front/totartle.png differ diff --git a/sprites/front/trampel.png b/sprites/front/trampel.png index 9e69603..e5ace75 100644 Binary files a/sprites/front/trampel.png and b/sprites/front/trampel.png differ diff --git a/sprites/front/tricules.png b/sprites/front/tricules.png new file mode 100644 index 0000000..6891631 Binary files /dev/null and b/sprites/front/tricules.png differ diff --git a/sprites/front/tsubomitto.png b/sprites/front/tsubomitto.png index ed58e6c..019d923 100644 Binary files a/sprites/front/tsubomitto.png and b/sprites/front/tsubomitto.png differ diff --git a/sprites/front/umbreon.png b/sprites/front/umbreon.png index 86e2dd8..7e70ab4 100644 Binary files a/sprites/front/umbreon.png and b/sprites/front/umbreon.png differ diff --git a/sprites/front/vulpiii.png b/sprites/front/vulpiii.png new file mode 100644 index 0000000..d7c3499 Binary files /dev/null and b/sprites/front/vulpiii.png differ diff --git a/sprites/front/weirduck.png b/sprites/front/weirduck.png index 1c63f00..9e5de62 100644 Binary files a/sprites/front/weirduck.png and b/sprites/front/weirduck.png differ diff --git a/sprites/icons/aerodactylfossil.png b/sprites/icons/aerodactylfossil.png index 38fe002..239d440 100644 Binary files a/sprites/icons/aerodactylfossil.png and b/sprites/icons/aerodactylfossil.png differ diff --git a/sprites/icons/balumba.png b/sprites/icons/balumba.png new file mode 100644 index 0000000..45a6c72 Binary files /dev/null and b/sprites/icons/balumba.png differ diff --git a/sprites/icons/bellignan.png b/sprites/icons/bellignan.png new file mode 100644 index 0000000..6f66fc6 Binary files /dev/null and b/sprites/icons/bellignan.png differ diff --git a/sprites/icons/bittybat.png b/sprites/icons/bittybat.png index e8d05d3..f0ef81e 100644 Binary files a/sprites/icons/bittybat.png and b/sprites/icons/bittybat.png differ diff --git a/sprites/icons/blastyke.png b/sprites/icons/blastyke.png index 148498b..acb7a3f 100644 Binary files a/sprites/icons/blastyke.png and b/sprites/icons/blastyke.png differ diff --git a/sprites/icons/blottle.png b/sprites/icons/blottle.png index 13b9670..a0c350a 100644 Binary files a/sprites/icons/blottle.png and b/sprites/icons/blottle.png differ diff --git a/sprites/icons/burgela.png b/sprites/icons/burgela.png new file mode 100644 index 0000000..33e8684 Binary files /dev/null and b/sprites/icons/burgela.png differ diff --git a/sprites/icons/buu.png b/sprites/icons/buu.png index f887808..9391c1b 100644 Binary files a/sprites/icons/buu.png and b/sprites/icons/buu.png differ diff --git a/sprites/icons/cactormus.png b/sprites/icons/cactormus.png new file mode 100644 index 0000000..6f4cb17 Binary files /dev/null and b/sprites/icons/cactormus.png differ diff --git a/sprites/icons/carapthor.png b/sprites/icons/carapthor.png new file mode 100644 index 0000000..2cce8e5 Binary files /dev/null and b/sprites/icons/carapthor.png differ diff --git a/sprites/icons/cheep.png b/sprites/icons/cheep.png index ca4bd16..c88c6bb 100644 Binary files a/sprites/icons/cheep.png and b/sprites/icons/cheep.png differ diff --git a/sprites/icons/coinpur.png b/sprites/icons/coinpur.png new file mode 100644 index 0000000..2812549 Binary files /dev/null and b/sprites/icons/coinpur.png differ diff --git a/sprites/icons/croakozuna.png b/sprites/icons/croakozuna.png index a75649b..e875b61 100644 Binary files a/sprites/icons/croakozuna.png and b/sprites/icons/croakozuna.png differ diff --git a/sprites/icons/cuboneghost.png b/sprites/icons/cuboneghost.png index 62803e9..8f69d63 100644 Binary files a/sprites/icons/cuboneghost.png and b/sprites/icons/cuboneghost.png differ diff --git a/sprites/icons/decilla.png b/sprites/icons/decilla.png index c7784bf..e677541 100644 Binary files a/sprites/icons/decilla.png and b/sprites/icons/decilla.png differ diff --git a/sprites/icons/disturban.png b/sprites/icons/disturban.png new file mode 100644 index 0000000..62ad45e Binary files /dev/null and b/sprites/icons/disturban.png differ diff --git a/sprites/icons/dodaerie.png b/sprites/icons/dodaerie.png new file mode 100644 index 0000000..f49ca57 Binary files /dev/null and b/sprites/icons/dodaerie.png differ diff --git a/sprites/icons/elekid.png b/sprites/icons/elekid.png index d08cdec..4b11e1e 100644 Binary files a/sprites/icons/elekid.png and b/sprites/icons/elekid.png differ diff --git a/sprites/icons/gaotora.png b/sprites/icons/gaotora.png index c705bbd..1c72d05 100644 Binary files a/sprites/icons/gaotora.png and b/sprites/icons/gaotora.png differ diff --git a/sprites/icons/gastlyghost.png b/sprites/icons/gastlyghost.png index d163b4d..515a30d 100644 Binary files a/sprites/icons/gastlyghost.png and b/sprites/icons/gastlyghost.png differ diff --git a/sprites/icons/gavillain.png b/sprites/icons/gavillain.png new file mode 100644 index 0000000..715a65e Binary files /dev/null and b/sprites/icons/gavillain.png differ diff --git a/sprites/icons/gawarhed.png b/sprites/icons/gawarhed.png new file mode 100644 index 0000000..3acea10 Binary files /dev/null and b/sprites/icons/gawarhed.png differ diff --git a/sprites/icons/gentlarva.png b/sprites/icons/gentlarva.png new file mode 100644 index 0000000..1c7af91 Binary files /dev/null and b/sprites/icons/gentlarva.png differ diff --git a/sprites/icons/gorochu.png b/sprites/icons/gorochu.png index 3420a91..546a012 100644 Binary files a/sprites/icons/gorochu.png and b/sprites/icons/gorochu.png differ diff --git a/sprites/icons/gorotora.png b/sprites/icons/gorotora.png index 911e6c1..ee95980 100644 Binary files a/sprites/icons/gorotora.png and b/sprites/icons/gorotora.png differ diff --git a/sprites/icons/guardia.png b/sprites/icons/guardia.png index 6565c4b..bb2587f 100644 Binary files a/sprites/icons/guardia.png and b/sprites/icons/guardia.png differ diff --git a/sprites/icons/haunterghost.png b/sprites/icons/haunterghost.png index 0a8c7af..515a30d 100644 Binary files a/sprites/icons/haunterghost.png and b/sprites/icons/haunterghost.png differ diff --git a/sprites/icons/hitmontop.png b/sprites/icons/hitmontop.png new file mode 100644 index 0000000..acfb93e Binary files /dev/null and b/sprites/icons/hitmontop.png differ diff --git a/sprites/icons/igglybuff.png b/sprites/icons/igglybuff.png new file mode 100644 index 0000000..e694b75 Binary files /dev/null and b/sprites/icons/igglybuff.png differ diff --git a/sprites/icons/iguanarch.png b/sprites/icons/iguanarch.png new file mode 100644 index 0000000..184c486 Binary files /dev/null and b/sprites/icons/iguanarch.png differ diff --git a/sprites/icons/jabetta.png b/sprites/icons/jabetta.png index a88b4f1..349384b 100644 Binary files a/sprites/icons/jabetta.png and b/sprites/icons/jabetta.png differ diff --git a/sprites/icons/kabutopsfossil.png b/sprites/icons/kabutopsfossil.png index 0d8d059..25d058f 100644 Binary files a/sprites/icons/kabutopsfossil.png and b/sprites/icons/kabutopsfossil.png differ diff --git a/sprites/icons/kokana.png b/sprites/icons/kokana.png new file mode 100644 index 0000000..b3d55cc Binary files /dev/null and b/sprites/icons/kokana.png differ diff --git a/sprites/icons/kolta.png b/sprites/icons/kolta.png new file mode 100644 index 0000000..3a22141 Binary files /dev/null and b/sprites/icons/kolta.png differ diff --git a/sprites/icons/kotora.png b/sprites/icons/kotora.png index 7477eb5..06dcbd6 100644 Binary files a/sprites/icons/kotora.png and b/sprites/icons/kotora.png differ diff --git a/sprites/icons/leafeon.png b/sprites/icons/leafeon.png new file mode 100644 index 0000000..c892641 Binary files /dev/null and b/sprites/icons/leafeon.png differ diff --git a/sprites/icons/luxwan.png b/sprites/icons/luxwan.png new file mode 100644 index 0000000..4228a75 Binary files /dev/null and b/sprites/icons/luxwan.png differ diff --git a/sprites/icons/magihkarpapricotzebra.png b/sprites/icons/magihkarpapricotzebra.png new file mode 100644 index 0000000..a6c34e3 Binary files /dev/null and b/sprites/icons/magihkarpapricotzebra.png differ diff --git a/sprites/icons/magikarpapricotstripes.png b/sprites/icons/magikarpapricotstripes.png new file mode 100644 index 0000000..11ade72 Binary files /dev/null and b/sprites/icons/magikarpapricotstripes.png differ diff --git a/sprites/icons/magikarpapricottiger.png b/sprites/icons/magikarpapricottiger.png new file mode 100644 index 0000000..12d77a2 Binary files /dev/null and b/sprites/icons/magikarpapricottiger.png differ diff --git a/sprites/icons/magikarpblackforehead.png b/sprites/icons/magikarpblackforehead.png new file mode 100644 index 0000000..4acac4b Binary files /dev/null and b/sprites/icons/magikarpblackforehead.png differ diff --git a/sprites/icons/magikarpblackmask.png b/sprites/icons/magikarpblackmask.png new file mode 100644 index 0000000..beeb4b9 Binary files /dev/null and b/sprites/icons/magikarpblackmask.png differ diff --git a/sprites/icons/magikarpblueraindrops.png b/sprites/icons/magikarpblueraindrops.png new file mode 100644 index 0000000..270067f Binary files /dev/null and b/sprites/icons/magikarpblueraindrops.png differ diff --git a/sprites/icons/magikarpbluesaucy.png b/sprites/icons/magikarpbluesaucy.png new file mode 100644 index 0000000..2682596 Binary files /dev/null and b/sprites/icons/magikarpbluesaucy.png differ diff --git a/sprites/icons/magikarpbrownstripes.png b/sprites/icons/magikarpbrownstripes.png new file mode 100644 index 0000000..8d02b42 Binary files /dev/null and b/sprites/icons/magikarpbrownstripes.png differ diff --git a/sprites/icons/magikarpbrowntiger.png b/sprites/icons/magikarpbrowntiger.png new file mode 100644 index 0000000..798351b Binary files /dev/null and b/sprites/icons/magikarpbrowntiger.png differ diff --git a/sprites/icons/magikarpbrownzebra.png b/sprites/icons/magikarpbrownzebra.png new file mode 100644 index 0000000..c1b6f9e Binary files /dev/null and b/sprites/icons/magikarpbrownzebra.png differ diff --git a/sprites/icons/magikarpcalicogold.png b/sprites/icons/magikarpcalicogold.png new file mode 100644 index 0000000..6a020c6 Binary files /dev/null and b/sprites/icons/magikarpcalicogold.png differ diff --git a/sprites/icons/magikarpcalicoorange.png b/sprites/icons/magikarpcalicoorange.png new file mode 100644 index 0000000..4e9ceac Binary files /dev/null and b/sprites/icons/magikarpcalicoorange.png differ diff --git a/sprites/icons/magikarpcalicoorangeblack.png b/sprites/icons/magikarpcalicoorangeblack.png new file mode 100644 index 0000000..dca006a Binary files /dev/null and b/sprites/icons/magikarpcalicoorangeblack.png differ diff --git a/sprites/icons/magikarpcalicowhite.png b/sprites/icons/magikarpcalicowhite.png new file mode 100644 index 0000000..7af36b3 Binary files /dev/null and b/sprites/icons/magikarpcalicowhite.png differ diff --git a/sprites/icons/magikarpgold.png b/sprites/icons/magikarpgold.png new file mode 100644 index 0000000..90b6ff9 Binary files /dev/null and b/sprites/icons/magikarpgold.png differ diff --git a/sprites/icons/magikarpgraybubbles.png b/sprites/icons/magikarpgraybubbles.png new file mode 100644 index 0000000..50edeae Binary files /dev/null and b/sprites/icons/magikarpgraybubbles.png differ diff --git a/sprites/icons/magikarpgraydiamonds.png b/sprites/icons/magikarpgraydiamonds.png new file mode 100644 index 0000000..b395f96 Binary files /dev/null and b/sprites/icons/magikarpgraydiamonds.png differ diff --git a/sprites/icons/magikarpgreypatches.png b/sprites/icons/magikarpgreypatches.png new file mode 100644 index 0000000..7f93d8a Binary files /dev/null and b/sprites/icons/magikarpgreypatches.png differ diff --git a/sprites/icons/magikarporangedapples.png b/sprites/icons/magikarporangedapples.png new file mode 100644 index 0000000..3518830 Binary files /dev/null and b/sprites/icons/magikarporangedapples.png differ diff --git a/sprites/icons/magikarporangeforehead.png b/sprites/icons/magikarporangeforehead.png new file mode 100644 index 0000000..8ea8a13 Binary files /dev/null and b/sprites/icons/magikarporangeforehead.png differ diff --git a/sprites/icons/magikarporangemask.png b/sprites/icons/magikarporangemask.png new file mode 100644 index 0000000..9b2a77c Binary files /dev/null and b/sprites/icons/magikarporangemask.png differ diff --git a/sprites/icons/magikarporangeorca.png b/sprites/icons/magikarporangeorca.png new file mode 100644 index 0000000..9d20119 Binary files /dev/null and b/sprites/icons/magikarporangeorca.png differ diff --git a/sprites/icons/magikarporangetwotone.png b/sprites/icons/magikarporangetwotone.png new file mode 100644 index 0000000..90b6b91 Binary files /dev/null and b/sprites/icons/magikarporangetwotone.png differ diff --git a/sprites/icons/magikarppinkdapples.png b/sprites/icons/magikarppinkdapples.png new file mode 100644 index 0000000..5c97d4d Binary files /dev/null and b/sprites/icons/magikarppinkdapples.png differ diff --git a/sprites/icons/magikarppinkorca.png b/sprites/icons/magikarppinkorca.png new file mode 100644 index 0000000..e836135 Binary files /dev/null and b/sprites/icons/magikarppinkorca.png differ diff --git a/sprites/icons/magikarppinktwotone.png b/sprites/icons/magikarppinktwotone.png new file mode 100644 index 0000000..c849236 Binary files /dev/null and b/sprites/icons/magikarppinktwotone.png differ diff --git a/sprites/icons/magikarppurplebubbles.png b/sprites/icons/magikarppurplebubbles.png new file mode 100644 index 0000000..7031f7c Binary files /dev/null and b/sprites/icons/magikarppurplebubbles.png differ diff --git a/sprites/icons/magikarppurplediamonds.png b/sprites/icons/magikarppurplediamonds.png new file mode 100644 index 0000000..e5c14a3 Binary files /dev/null and b/sprites/icons/magikarppurplediamonds.png differ diff --git a/sprites/icons/magikarppurplepatches.png b/sprites/icons/magikarppurplepatches.png new file mode 100644 index 0000000..4ab957b Binary files /dev/null and b/sprites/icons/magikarppurplepatches.png differ diff --git a/sprites/icons/magikarpskelly.png b/sprites/icons/magikarpskelly.png new file mode 100644 index 0000000..e08e4aa Binary files /dev/null and b/sprites/icons/magikarpskelly.png differ diff --git a/sprites/icons/magikarpvioletraindrops.png b/sprites/icons/magikarpvioletraindrops.png new file mode 100644 index 0000000..da4ccf7 Binary files /dev/null and b/sprites/icons/magikarpvioletraindrops.png differ diff --git a/sprites/icons/magikarpvioletsaucy.png b/sprites/icons/magikarpvioletsaucy.png new file mode 100644 index 0000000..efb54c8 Binary files /dev/null and b/sprites/icons/magikarpvioletsaucy.png differ diff --git a/sprites/icons/magnetite.png b/sprites/icons/magnetite.png index 9e8f4a5..5f0cbc3 100644 Binary files a/sprites/icons/magnetite.png and b/sprites/icons/magnetite.png differ diff --git a/sprites/icons/marowakghost.png b/sprites/icons/marowakghost.png index eaab8fe..acadcec 100644 Binary files a/sprites/icons/marowakghost.png and b/sprites/icons/marowakghost.png differ diff --git a/sprites/icons/mimmeo.png b/sprites/icons/mimmeo.png new file mode 100644 index 0000000..bedb1c6 Binary files /dev/null and b/sprites/icons/mimmeo.png differ diff --git a/sprites/icons/ministare.png b/sprites/icons/ministare.png new file mode 100644 index 0000000..9e16e8e Binary files /dev/null and b/sprites/icons/ministare.png differ diff --git a/sprites/icons/nidoreign.png b/sprites/icons/nidoreign.png index 4324909..8d1d769 100644 Binary files a/sprites/icons/nidoreign.png and b/sprites/icons/nidoreign.png differ diff --git a/sprites/icons/omegadge.png b/sprites/icons/omegadge.png new file mode 100644 index 0000000..ffe88e2 Binary files /dev/null and b/sprites/icons/omegadge.png differ diff --git a/sprites/icons/orfry.png b/sprites/icons/orfry.png new file mode 100644 index 0000000..f183520 Binary files /dev/null and b/sprites/icons/orfry.png differ diff --git a/sprites/icons/paraspor.png b/sprites/icons/paraspor.png new file mode 100644 index 0000000..bcf8339 Binary files /dev/null and b/sprites/icons/paraspor.png differ diff --git a/sprites/icons/pendraken.png b/sprites/icons/pendraken.png index bdaf89f..8ac0a82 100644 Binary files a/sprites/icons/pendraken.png and b/sprites/icons/pendraken.png differ diff --git a/sprites/icons/pupal.png b/sprites/icons/pupal.png new file mode 100644 index 0000000..43a0640 Binary files /dev/null and b/sprites/icons/pupal.png differ diff --git a/sprites/icons/pupperon.png b/sprites/icons/pupperon.png new file mode 100644 index 0000000..b854b2f Binary files /dev/null and b/sprites/icons/pupperon.png differ diff --git a/sprites/icons/ramoose.png b/sprites/icons/ramoose.png new file mode 100644 index 0000000..9bf418a Binary files /dev/null and b/sprites/icons/ramoose.png differ diff --git a/sprites/icons/ribbito.png b/sprites/icons/ribbito.png index 4dce16d..ce81122 100644 Binary files a/sprites/icons/ribbito.png and b/sprites/icons/ribbito.png differ diff --git a/sprites/icons/sharpoon.png b/sprites/icons/sharpoon.png new file mode 100644 index 0000000..3cf9d1e Binary files /dev/null and b/sprites/icons/sharpoon.png differ diff --git a/sprites/icons/smoochum.png b/sprites/icons/smoochum.png new file mode 100644 index 0000000..70a3ffe Binary files /dev/null and b/sprites/icons/smoochum.png differ diff --git a/sprites/icons/smujj.png b/sprites/icons/smujj.png new file mode 100644 index 0000000..457de05 Binary files /dev/null and b/sprites/icons/smujj.png differ diff --git a/sprites/icons/squeamata.png b/sprites/icons/squeamata.png new file mode 100644 index 0000000..4d05e5a Binary files /dev/null and b/sprites/icons/squeamata.png differ diff --git a/sprites/icons/taaban.png b/sprites/icons/taaban.png new file mode 100644 index 0000000..89535b8 Binary files /dev/null and b/sprites/icons/taaban.png differ diff --git a/sprites/icons/toedscool.png b/sprites/icons/toedscool.png new file mode 100644 index 0000000..6a300c5 Binary files /dev/null and b/sprites/icons/toedscool.png differ diff --git a/sprites/icons/toedscruel.png b/sprites/icons/toedscruel.png new file mode 100644 index 0000000..9cb7a26 Binary files /dev/null and b/sprites/icons/toedscruel.png differ diff --git a/sprites/icons/totartle.png b/sprites/icons/totartle.png index b0eaa89..bf55559 100644 Binary files a/sprites/icons/totartle.png and b/sprites/icons/totartle.png differ diff --git a/sprites/icons/trampel.png b/sprites/icons/trampel.png index 1081a5d..fe731a8 100644 Binary files a/sprites/icons/trampel.png and b/sprites/icons/trampel.png differ diff --git a/sprites/icons/tricules.png b/sprites/icons/tricules.png new file mode 100644 index 0000000..e482dbc Binary files /dev/null and b/sprites/icons/tricules.png differ diff --git a/sprites/icons/vulpiii.png b/sprites/icons/vulpiii.png new file mode 100644 index 0000000..50f01b1 Binary files /dev/null and b/sprites/icons/vulpiii.png differ diff --git a/sprites/icons/weirduck.png b/sprites/icons/weirduck.png index b182f7d..0d54422 100644 Binary files a/sprites/icons/weirduck.png and b/sprites/icons/weirduck.png differ diff --git a/sprites/old/back/carapthor.png b/sprites/old/back/carapthor.png new file mode 100644 index 0000000..3c69c6e Binary files /dev/null and b/sprites/old/back/carapthor.png differ diff --git a/sprites/old/back/crobat.png b/sprites/old/back/crobat.png new file mode 100644 index 0000000..d67f171 Binary files /dev/null and b/sprites/old/back/crobat.png differ diff --git a/sprites/old/back/golemalola.png b/sprites/old/back/golemalola.png new file mode 100644 index 0000000..a0a3565 Binary files /dev/null and b/sprites/old/back/golemalola.png differ diff --git a/sprites/old/back/kingdra.png b/sprites/old/back/kingdra.png new file mode 100644 index 0000000..fcd03ee Binary files /dev/null and b/sprites/old/back/kingdra.png differ diff --git a/sprites/old/back/leafeon.png b/sprites/old/back/leafeon.png new file mode 100644 index 0000000..6506f76 Binary files /dev/null and b/sprites/old/back/leafeon.png differ diff --git a/sprites/old/back/persian-alola.png b/sprites/old/back/persian-alola.png new file mode 100644 index 0000000..fafe198 Binary files /dev/null and b/sprites/old/back/persian-alola.png differ diff --git a/sprites/old/back/raticate-alola.png b/sprites/old/back/raticate-alola.png new file mode 100644 index 0000000..03aff23 Binary files /dev/null and b/sprites/old/back/raticate-alola.png differ diff --git a/sprites/old/back/sandslash-alola.png b/sprites/old/back/sandslash-alola.png new file mode 100644 index 0000000..85e08bb Binary files /dev/null and b/sprites/old/back/sandslash-alola.png differ diff --git a/sprites/old/front/arcanine-hisui.png b/sprites/old/front/arcanine-hisui.png new file mode 100644 index 0000000..c29510f Binary files /dev/null and b/sprites/old/front/arcanine-hisui.png differ diff --git a/sprites/old/front/articuno-galar.png b/sprites/old/front/articuno-galar.png new file mode 100644 index 0000000..afeed2e Binary files /dev/null and b/sprites/old/front/articuno-galar.png differ diff --git a/sprites/old/front/bawligua.png b/sprites/old/front/bawligua.png new file mode 100644 index 0000000..958b288 Binary files /dev/null and b/sprites/old/front/bawligua.png differ diff --git a/sprites/old/front/carapthor.png b/sprites/old/front/carapthor.png new file mode 100644 index 0000000..6b3c45e Binary files /dev/null and b/sprites/old/front/carapthor.png differ diff --git a/sprites/old/front/cryithan.png b/sprites/old/front/cryithan.png new file mode 100644 index 0000000..13b01d3 Binary files /dev/null and b/sprites/old/front/cryithan.png differ diff --git a/sprites/old/front/kingdra.png b/sprites/old/front/kingdra.png new file mode 100644 index 0000000..86474fa Binary files /dev/null and b/sprites/old/front/kingdra.png differ diff --git a/sprites/old/front/kingdra2.png b/sprites/old/front/kingdra2.png new file mode 100644 index 0000000..6db2ac0 Binary files /dev/null and b/sprites/old/front/kingdra2.png differ diff --git a/sprites/old/front/leafeon.png b/sprites/old/front/leafeon.png new file mode 100644 index 0000000..9d1d174 Binary files /dev/null and b/sprites/old/front/leafeon.png differ diff --git a/sprites/old/front/skimper.png b/sprites/old/front/skimper.png new file mode 100644 index 0000000..84065f0 Binary files /dev/null and b/sprites/old/front/skimper.png differ diff --git a/sprites/old/front/taurospaldeaaqua.png b/sprites/old/front/taurospaldeaaqua.png new file mode 100644 index 0000000..60a9718 Binary files /dev/null and b/sprites/old/front/taurospaldeaaqua.png differ diff --git a/sprites/old/front/taurospaldeablaze.png b/sprites/old/front/taurospaldeablaze.png new file mode 100644 index 0000000..cd99880 Binary files /dev/null and b/sprites/old/front/taurospaldeablaze.png differ diff --git a/sprites/old/front/taurospaldeacombat.png b/sprites/old/front/taurospaldeacombat.png new file mode 100644 index 0000000..f778b95 Binary files /dev/null and b/sprites/old/front/taurospaldeacombat.png differ diff --git a/sprites/old/icons/aerodactylfossil.png b/sprites/old/icons/aerodactylfossil.png new file mode 100644 index 0000000..38fe002 Binary files /dev/null and b/sprites/old/icons/aerodactylfossil.png differ diff --git a/sprites/old/icons/arcanine-hisui.png b/sprites/old/icons/arcanine-hisui.png new file mode 100644 index 0000000..609df1d Binary files /dev/null and b/sprites/old/icons/arcanine-hisui.png differ diff --git a/sprites/old/icons/balumba.png b/sprites/old/icons/balumba.png new file mode 100644 index 0000000..7d1a607 Binary files /dev/null and b/sprites/old/icons/balumba.png differ diff --git a/sprites/old/icons/bittybat.png b/sprites/old/icons/bittybat.png new file mode 100644 index 0000000..e8d05d3 Binary files /dev/null and b/sprites/old/icons/bittybat.png differ diff --git a/sprites/old/icons/blastyke.png b/sprites/old/icons/blastyke.png new file mode 100644 index 0000000..148498b Binary files /dev/null and b/sprites/old/icons/blastyke.png differ diff --git a/sprites/old/icons/blottle.png b/sprites/old/icons/blottle.png new file mode 100644 index 0000000..13b9670 Binary files /dev/null and b/sprites/old/icons/blottle.png differ diff --git a/sprites/old/icons/buu.png b/sprites/old/icons/buu.png new file mode 100644 index 0000000..f887808 Binary files /dev/null and b/sprites/old/icons/buu.png differ diff --git a/sprites/old/icons/cactus.png b/sprites/old/icons/cactus.png new file mode 100644 index 0000000..b947f4a Binary files /dev/null and b/sprites/old/icons/cactus.png differ diff --git a/sprites/old/icons/carapthor.png b/sprites/old/icons/carapthor.png new file mode 100644 index 0000000..df22417 Binary files /dev/null and b/sprites/old/icons/carapthor.png differ diff --git a/sprites/old/icons/cheep.png b/sprites/old/icons/cheep.png new file mode 100644 index 0000000..ca4bd16 Binary files /dev/null and b/sprites/old/icons/cheep.png differ diff --git a/sprites/old/icons/croakozuna.png b/sprites/old/icons/croakozuna.png new file mode 100644 index 0000000..a75649b Binary files /dev/null and b/sprites/old/icons/croakozuna.png differ diff --git a/sprites/old/icons/crocky.png b/sprites/old/icons/crocky.png new file mode 100644 index 0000000..fc28a40 Binary files /dev/null and b/sprites/old/icons/crocky.png differ diff --git a/sprites/old/icons/cryithan.png b/sprites/old/icons/cryithan.png new file mode 100644 index 0000000..590e1b9 Binary files /dev/null and b/sprites/old/icons/cryithan.png differ diff --git a/sprites/old/icons/cuboneghost.png b/sprites/old/icons/cuboneghost.png new file mode 100644 index 0000000..62803e9 Binary files /dev/null and b/sprites/old/icons/cuboneghost.png differ diff --git a/sprites/old/icons/decilla.png b/sprites/old/icons/decilla.png new file mode 100644 index 0000000..c7784bf Binary files /dev/null and b/sprites/old/icons/decilla.png differ diff --git a/sprites/old/icons/deer.png b/sprites/old/icons/deer.png new file mode 100644 index 0000000..0b2792a Binary files /dev/null and b/sprites/old/icons/deer.png differ diff --git a/sprites/old/icons/electrode-hisui.png b/sprites/old/icons/electrode-hisui.png new file mode 100644 index 0000000..1c407b6 Binary files /dev/null and b/sprites/old/icons/electrode-hisui.png differ diff --git a/sprites/old/icons/elekid.png b/sprites/old/icons/elekid.png new file mode 100644 index 0000000..d08cdec Binary files /dev/null and b/sprites/old/icons/elekid.png differ diff --git a/sprites/old/icons/gaotora.png b/sprites/old/icons/gaotora.png new file mode 100644 index 0000000..c705bbd Binary files /dev/null and b/sprites/old/icons/gaotora.png differ diff --git a/sprites/old/icons/gastlyghost.png b/sprites/old/icons/gastlyghost.png new file mode 100644 index 0000000..d163b4d Binary files /dev/null and b/sprites/old/icons/gastlyghost.png differ diff --git a/sprites/old/icons/gorochu.png b/sprites/old/icons/gorochu.png new file mode 100644 index 0000000..3420a91 Binary files /dev/null and b/sprites/old/icons/gorochu.png differ diff --git a/sprites/old/icons/gorotora.png b/sprites/old/icons/gorotora.png new file mode 100644 index 0000000..911e6c1 Binary files /dev/null and b/sprites/old/icons/gorotora.png differ diff --git a/sprites/old/icons/guardia.png b/sprites/old/icons/guardia.png new file mode 100644 index 0000000..6565c4b Binary files /dev/null and b/sprites/old/icons/guardia.png differ diff --git a/sprites/old/icons/gyaoon.png b/sprites/old/icons/gyaoon.png new file mode 100644 index 0000000..3185188 Binary files /dev/null and b/sprites/old/icons/gyaoon.png differ diff --git a/sprites/old/icons/gyopin.png b/sprites/old/icons/gyopin.png new file mode 100644 index 0000000..c1773ed Binary files /dev/null and b/sprites/old/icons/gyopin.png differ diff --git a/sprites/old/icons/haunterghost.png b/sprites/old/icons/haunterghost.png new file mode 100644 index 0000000..0a8c7af Binary files /dev/null and b/sprites/old/icons/haunterghost.png differ diff --git a/sprites/old/icons/hinaazu.png b/sprites/old/icons/hinaazu.png new file mode 100644 index 0000000..16f6887 Binary files /dev/null and b/sprites/old/icons/hinaazu.png differ diff --git a/sprites/old/icons/jabetta.png b/sprites/old/icons/jabetta.png new file mode 100644 index 0000000..a88b4f1 Binary files /dev/null and b/sprites/old/icons/jabetta.png differ diff --git a/sprites/old/icons/jagg.png b/sprites/old/icons/jagg.png new file mode 100644 index 0000000..9546cb7 Binary files /dev/null and b/sprites/old/icons/jagg.png differ diff --git a/sprites/old/icons/kabutopsfossil.png b/sprites/old/icons/kabutopsfossil.png new file mode 100644 index 0000000..0d8d059 Binary files /dev/null and b/sprites/old/icons/kabutopsfossil.png differ diff --git a/sprites/old/icons/kleavor.png b/sprites/old/icons/kleavor.png new file mode 100644 index 0000000..f2af149 Binary files /dev/null and b/sprites/old/icons/kleavor.png differ diff --git a/sprites/old/icons/kokana.png b/sprites/old/icons/kokana.png new file mode 100644 index 0000000..b3d55cc Binary files /dev/null and b/sprites/old/icons/kokana.png differ diff --git a/sprites/old/icons/konya.png b/sprites/old/icons/konya.png new file mode 100644 index 0000000..1b803cc Binary files /dev/null and b/sprites/old/icons/konya.png differ diff --git a/sprites/old/icons/kotora.png b/sprites/old/icons/kotora.png new file mode 100644 index 0000000..7477eb5 Binary files /dev/null and b/sprites/old/icons/kotora.png differ diff --git a/sprites/old/icons/madaamu.png b/sprites/old/icons/madaamu.png new file mode 100644 index 0000000..22b316b Binary files /dev/null and b/sprites/old/icons/madaamu.png differ diff --git a/sprites/old/icons/magnetite.png b/sprites/old/icons/magnetite.png new file mode 100644 index 0000000..9e8f4a5 Binary files /dev/null and b/sprites/old/icons/magnetite.png differ diff --git a/sprites/old/icons/marowakghost.png b/sprites/old/icons/marowakghost.png new file mode 100644 index 0000000..eaab8fe Binary files /dev/null and b/sprites/old/icons/marowakghost.png differ diff --git a/sprites/old/icons/mikon.png b/sprites/old/icons/mikon.png new file mode 100644 index 0000000..bb0c71f Binary files /dev/null and b/sprites/old/icons/mikon.png differ diff --git a/sprites/old/icons/mimmeo.png b/sprites/old/icons/mimmeo.png new file mode 100644 index 0000000..dcc7e72 Binary files /dev/null and b/sprites/old/icons/mimmeo.png differ diff --git a/sprites/old/icons/ministare.png b/sprites/old/icons/ministare.png new file mode 100644 index 0000000..1e93b69 Binary files /dev/null and b/sprites/old/icons/ministare.png differ diff --git a/sprites/old/icons/monja.png b/sprites/old/icons/monja.png new file mode 100644 index 0000000..d30b16d Binary files /dev/null and b/sprites/old/icons/monja.png differ diff --git a/sprites/old/icons/nidoreign.png b/sprites/old/icons/nidoreign.png new file mode 100644 index 0000000..4324909 Binary files /dev/null and b/sprites/old/icons/nidoreign.png differ diff --git a/sprites/old/icons/omega.png b/sprites/old/icons/omega.png new file mode 100644 index 0000000..9067da9 Binary files /dev/null and b/sprites/old/icons/omega.png differ diff --git a/sprites/old/icons/para.png b/sprites/old/icons/para.png new file mode 100644 index 0000000..ea3f341 Binary files /dev/null and b/sprites/old/icons/para.png differ diff --git a/sprites/old/icons/pendraken.png b/sprites/old/icons/pendraken.png new file mode 100644 index 0000000..bdaf89f Binary files /dev/null and b/sprites/old/icons/pendraken.png differ diff --git a/sprites/old/icons/puchikoon.png b/sprites/old/icons/puchikoon.png new file mode 100644 index 0000000..2e0a4d1 Binary files /dev/null and b/sprites/old/icons/puchikoon.png differ diff --git a/sprites/old/icons/pudi.png b/sprites/old/icons/pudi.png new file mode 100644 index 0000000..85df164 Binary files /dev/null and b/sprites/old/icons/pudi.png differ diff --git a/sprites/old/icons/pupal.png b/sprites/old/icons/pupal.png new file mode 100644 index 0000000..a108e12 Binary files /dev/null and b/sprites/old/icons/pupal.png differ diff --git a/sprites/old/icons/purakkusu.png b/sprites/old/icons/purakkusu.png new file mode 100644 index 0000000..75290e0 Binary files /dev/null and b/sprites/old/icons/purakkusu.png differ diff --git a/sprites/old/icons/ribbito.png b/sprites/old/icons/ribbito.png new file mode 100644 index 0000000..4dce16d Binary files /dev/null and b/sprites/old/icons/ribbito.png differ diff --git a/sprites/old/icons/skimper.png b/sprites/old/icons/skimper.png new file mode 100644 index 0000000..e7d7519 Binary files /dev/null and b/sprites/old/icons/skimper.png differ diff --git a/sprites/old/icons/smudjj.png b/sprites/old/icons/smudjj.png new file mode 100644 index 0000000..69a72f7 Binary files /dev/null and b/sprites/old/icons/smudjj.png differ diff --git a/sprites/old/icons/taaban.png b/sprites/old/icons/taaban.png new file mode 100644 index 0000000..89535b8 Binary files /dev/null and b/sprites/old/icons/taaban.png differ diff --git a/sprites/old/icons/totartle.png b/sprites/old/icons/totartle.png new file mode 100644 index 0000000..b0eaa89 Binary files /dev/null and b/sprites/old/icons/totartle.png differ diff --git a/sprites/old/icons/trampel.png b/sprites/old/icons/trampel.png new file mode 100644 index 0000000..1081a5d Binary files /dev/null and b/sprites/old/icons/trampel.png differ diff --git a/sprites/old/icons/tsubomitto.png b/sprites/old/icons/tsubomitto.png new file mode 100644 index 0000000..a53a507 Binary files /dev/null and b/sprites/old/icons/tsubomitto.png differ diff --git a/sprites/old/icons/weirduck.png b/sprites/old/icons/weirduck.png new file mode 100644 index 0000000..b182f7d Binary files /dev/null and b/sprites/old/icons/weirduck.png differ diff --git a/typechart.ts b/typechart.ts index 84b19bf..18ddbba 100644 --- a/typechart.ts +++ b/typechart.ts @@ -1,341 +1,340 @@ /** * New types use data from their earliest known data. - * So, Steel- and Dark-type use the SW97 incarnations. + * So, Steel- and Dark-type use the SW97 incarnations. * Fairy works how it does in modern (SWSH at time of writing, unchanged from XY) * All types are put in here in case something crazy happens, also so Fairy and everything work properly. */ -export const TypeChart: {[k: string]: ModdedTypeData} = { - "Bug": { +export const TypeChart: {[k: string]: ModdedTypeData | null} = { + bug: { damageTaken: { - "Bug": 0, - "Dragon": 0, - "Electric": 0, - "Fighting": 2, - "Fire": 1, - "Flying": 1, - "Ghost": 0, - "Grass": 2, - "Ground": 2, - "Ice": 0, - "Normal": 0, - "Poison": 1, - "Psychic": 0, - "Rock": 1, - "Water": 0, + Bug: 0, + Dragon: 0, + Electric: 0, + Fighting: 2, + Fire: 1, + Flying: 1, + Ghost: 0, + Grass: 2, + Ground: 2, + Ice: 0, + Normal: 0, + Poison: 1, + Psychic: 0, + Rock: 1, + Water: 0, }, }, - "Dragon": { + dragon: { damageTaken: { - "Bug": 0, - "Dark": 0, - "Dragon": 1, - "Electric": 2, - "Fairy": 1, - "Fighting": 0, - "Fire": 2, - "Flying": 0, - "Ghost": 0, - "Grass": 2, - "Ground": 0, - "Ice": 1, - "Normal": 0, - "Poison": 0, - "Psychic": 0, - "Rock": 0, - "Steel": 0, - "Water": 2, + Bug: 0, + Dark: 0, + Dragon: 1, + Electric: 2, + Fairy: 1, + Fighting: 0, + Fire: 2, + Flying: 0, + Ghost: 0, + Grass: 2, + Ground: 0, + Ice: 1, + Normal: 0, + Poison: 0, + Psychic: 0, + Rock: 0, + Steel: 0, + Water: 2, }, }, - "Electric": { + electric: { damageTaken: { - "Bug": 0, - "Dark": 0, - "Dragon": 0, - "Electric": 2, - "Fairy": 0, - "Fighting": 0, - "Fire": 0, - "Flying": 2, - "Ghost": 0, - "Grass": 0, - "Ground": 1, - "Ice": 0, - "Normal": 0, - "Poison": 0, - "Psychic": 0, - "Rock": 0, - "Steel": 2, - "Water": 0, + Bug: 0, + Dark: 0, + Dragon: 0, + Electric: 2, + Fairy: 0, + Fighting: 0, + Fire: 0, + Flying: 2, + Ghost: 0, + Grass: 0, + Ground: 1, + Ice: 0, + Normal: 0, + Poison: 0, + Psychic: 0, + Rock: 0, + Steel: 2, + Water: 0, }, }, - "Fighting": { + fighting: { damageTaken: { - "Bug": 2, - "Dark": 0, - "Dragon": 0, - "Electric": 0, - "Fairy": 1, - "Fighting": 0, - "Fire": 0, - "Flying": 1, - "Ghost": 0, - "Grass": 0, - "Ground": 0, - "Ice": 0, - "Normal": 0, - "Poison": 0, - "Psychic": 1, - "Rock": 2, - "Steel": 0, - "Water": 0, + Bug: 2, + Dark: 0, + Dragon: 0, + Electric: 0, + Fairy: 1, + Fighting: 0, + Fire: 0, + Flying: 1, + Ghost: 0, + Grass: 0, + Ground: 0, + Ice: 0, + Normal: 0, + Poison: 0, + Psychic: 1, + Rock: 2, + Steel: 0, + Water: 0, }, }, - "Fire": { + fire: { damageTaken: { - "Bug": 2, - "Dark": 0, - "Dragon": 0, - "Electric": 0, - "Fairy": 2, - "Fighting": 0, - "Fire": 2, - "Flying": 0, - "Ghost": 0, - "Grass": 2, - "Ground": 1, - "Ice": 0, - "Normal": 0, - "Poison": 0, - "Psychic": 0, - "Rock": 1, - "Steel": 0, - "Water": 1, + Bug: 2, + Dark: 0, + Dragon: 0, + Electric: 0, + Fairy: 2, + Fighting: 0, + Fire: 2, + Flying: 0, + Ghost: 0, + Grass: 2, + Ground: 1, + Ice: 0, + Normal: 0, + Poison: 0, + Psychic: 0, + Rock: 1, + Steel: 0, + Water: 1, }, }, - "Ghost": { + ghost: { damageTaken: { - "Bug": 2, - "Dark": 1, - "Dragon": 0, - "Electric": 0, - "Fairy": 0, - "Fighting": 3, - "Fire": 0, - "Flying": 0, - "Ghost": 1, - "Grass": 0, - "Ground": 0, - "Ice": 0, - "Normal": 3, - "Poison": 2, - "Psychic": 0, - "Rock": 0, - "Steel": 0, - "Water": 0, + Bug: 2, + Dark: 1, + Dragon: 0, + Electric: 0, + Fairy: 0, + Fighting: 3, + Fire: 0, + Flying: 0, + Ghost: 1, + Grass: 0, + Ground: 0, + Ice: 0, + Normal: 3, + Poison: 2, + Psychic: 0, + Rock: 0, + Steel: 0, + Water: 0, }, }, - "Ice": { + ice: { damageTaken: { - "Bug": 0, - "Dark": 0, - "Dragon": 0, - "Electric": 0, - "Fairy": 0, - "Fighting": 1, - "Fire": 1, - "Flying": 0, - "Ghost": 0, - "Grass": 0, - "Ground": 0, - "Ice": 2, - "Normal": 0, - "Poison": 0, - "Psychic": 0, - "Rock": 1, - "Steel": 0, - "Water": 0, + Bug: 0, + Dark: 0, + Dragon: 0, + Electric: 0, + Fairy: 0, + Fighting: 1, + Fire: 1, + Flying: 0, + Ghost: 0, + Grass: 0, + Ground: 0, + Ice: 2, + Normal: 0, + Poison: 0, + Psychic: 0, + Rock: 1, + Steel: 0, + Water: 0, }, }, - "Normal": { + normal: { damageTaken: { - "Bug": 0, - "Dark": 2, //lol - "Dragon": 0, - "Electric": 0, - "Fairy": 0, - "Fighting": 1, - "Fire": 0, - "Flying": 0, - "Ghost": 3, - "Grass": 0, - "Ground": 0, - "Ice": 0, - "Normal": 0, - "Poison": 0, - "Psychic": 0, - "Rock": 0, - "Steel": 0, - "Water": 0, + Bug: 0, + Dark: 2, // lol + Dragon: 0, + Electric: 0, + Fairy: 0, + Fighting: 1, + Fire: 0, + Flying: 0, + Ghost: 3, + Grass: 0, + Ground: 0, + Ice: 0, + Normal: 0, + Poison: 0, + Psychic: 0, + Rock: 0, + Steel: 0, + Water: 0, }, }, - "Poison": { + poison: { damageTaken: { psn: 3, tox: 3, - "Bug": 1, - "Dark": 0, - "Dragon": 0, - "Electric": 0, - "Fighting": 2, - "Fire": 0, - "Flying": 0, - "Ghost": 0, - "Grass": 2, - "Ground": 1, - "Ice": 0, - "Normal": 0, - "Poison": 2, - "Psychic": 1, - "Rock": 0, - "Steel": 0, - "Water": 0, - "Fairy": 2, + Bug: 1, + Dark: 0, + Dragon: 0, + Electric: 0, + Fighting: 2, + Fire: 0, + Flying: 0, + Ghost: 0, + Grass: 2, + Ground: 1, + Ice: 0, + Normal: 0, + Poison: 2, + Psychic: 1, + Rock: 0, + Steel: 0, + Water: 0, + Fairy: 2, }, }, - "Psychic": { + psychic: { damageTaken: { - "Bug": 1, - "Dark": 1, - "Dragon": 0, - "Electric": 0, - "Fairy": 0, - "Fighting": 2, - "Fire": 0, - "Flying": 0, - "Ghost": 3, - "Grass": 0, - "Ground": 0, - "Ice": 0, - "Normal": 0, - "Poison": 0, - "Psychic": 2, - "Rock": 0, - "Steel": 0, - "Water": 0, + Bug: 1, + Dark: 1, + Dragon: 0, + Electric: 0, + Fairy: 0, + Fighting: 2, + Fire: 0, + Flying: 0, + Ghost: 3, + Grass: 0, + Ground: 0, + Ice: 0, + Normal: 0, + Poison: 0, + Psychic: 2, + Rock: 0, + Steel: 0, + Water: 0, }, }, - "Rock": { + rock: { damageTaken: { - "Bug": 0, - "Dark": 0, - "Dragon": 0, - "Electric": 0, - "Fairy": 0, - "Fighting": 1, - "Fire": 2, - "Flying": 2, - "Ghost": 0, - "Grass": 1, - "Ground": 1, - "Ice": 0, - "Normal": 2, - "Poison": 2, - "Psychic": 0, - "Rock": 0, - "Steel": 1, - "Water": 1, + Bug: 0, + Dark: 0, + Dragon: 0, + Electric: 0, + Fairy: 0, + Fighting: 1, + Fire: 2, + Flying: 2, + Ghost: 0, + Grass: 1, + Ground: 1, + Ice: 0, + Normal: 2, + Poison: 2, + Psychic: 0, + Rock: 0, + Steel: 1, + Water: 1, }, }, - "Water": { + water: { damageTaken: { - "Bug": 0, - "Dark": 0, - "Dragon": 0, - "Electric": 1, - "Fairy": 0, - "Fighting": 0, - "Fire": 2, - "Flying": 0, - "Ghost": 0, - "Grass": 1, - "Ground": 0, - "Ice": 2, - "Normal": 0, - "Poison": 0, - "Psychic": 0, - "Rock": 0, - "Steel": 2, - "Water": 2, + Bug: 0, + Dark: 0, + Dragon: 0, + Electric: 1, + Fairy: 0, + Fighting: 0, + Fire: 2, + Flying: 0, + Ghost: 0, + Grass: 1, + Ground: 0, + Ice: 2, + Normal: 0, + Poison: 0, + Psychic: 0, + Rock: 0, + Steel: 2, + Water: 2, }, }, - "Dark": { + dark: { damageTaken: { - "Bug": 0, - "Dark": 1, - "Dragon": 0, - "Electric": 0, - "Fairy": 1, - "Fighting": 0, - "Fire": 0, - "Flying": 0, - "Ghost": 2, - "Grass": 0, - "Ground": 0, - "Ice": 0, - "Normal": 1, - "Poison": 0, - "Psychic": 2, - "Rock": 0, - "Steel": 0, - "Water": 0, + Bug: 0, + Dark: 1, + Dragon: 0, + Electric: 0, + Fairy: 1, + Fighting: 0, + Fire: 0, + Flying: 0, + Ghost: 2, + Grass: 0, + Ground: 0, + Ice: 0, + Normal: 1, + Poison: 0, + Psychic: 2, + Rock: 0, + Steel: 0, + Water: 0, }, }, - "Steel": { + steel: { inherit: true, damageTaken: { - "Bug": 0, - "Dark": 0, - "Dragon": 0, - "Electric": 1, - "Fairy": 2, - "Fighting": 2, - "Fire": 0, - "Flying": 0, - "Ghost": 0, - "Grass": 0, - "Ground": 0, - "Ice": 0, - "Normal": 0, - "Poison": 2, - "Psychic": 0, - "Rock": 2, - "Steel": 3, - "Water": 1, + Bug: 0, + Dark: 0, + Dragon: 0, + Electric: 1, + Fairy: 2, + Fighting: 2, + Fire: 0, + Flying: 0, + Ghost: 0, + Grass: 0, + Ground: 0, + Ice: 0, + Normal: 0, + Poison: 2, + Psychic: 0, + Rock: 2, + Steel: 3, + Water: 1, }, }, -"Fairy": { - inherit: true, - category: "Special", + fairy: { + inherit: true, damageTaken: { - "Bug": 2, - "Dark": 2, - "Dragon": 3, - "Electric": 0, - "Fairy": 0, - "Fighting": 2, - "Fire": 0, - "Flying": 0, - "Ghost": 0, - "Grass": 0, - "Ground": 0, - "Ice": 0, - "Normal": 0, - "Poison": 1, - "Psychic": 0, - "Rock": 0, - "Steel": 1, - "Water": 0, + Bug: 2, + Dark: 2, + Dragon: 3, + Electric: 0, + fairy: 0, + Fighting: 2, + Fire: 0, + Flying: 0, + Ghost: 0, + grass: 0, + Ground: 0, + Ice: 0, + Normal: 0, + Poison: 1, + Psychic: 0, + Rock: 0, + Steel: 1, + Water: 0, }, - }, + }, };