use crate::pokemon::PokemonName;

impl PokemonName {
    pub fn base_stats(&self) -> (i16, i16, i16, i16, i16, i16) {
        match self {
            PokemonName::NONE => (0, 0, 0, 0, 0, 0),
            PokemonName::BULBASAUR => (45, 49, 49, 65, 65, 45),
            PokemonName::IVYSAUR => (60, 62, 63, 80, 80, 60),
            PokemonName::VENUSAUR => (80, 82, 83, 100, 100, 80),
            PokemonName::CHARMANDER => (39, 52, 43, 50, 50, 65),
            PokemonName::CHARMELEON => (58, 64, 58, 65, 65, 80),
            PokemonName::CHARIZARD => (78, 84, 78, 85, 85, 100),
            PokemonName::SQUIRTLE => (44, 48, 65, 50, 50, 43),
            PokemonName::WARTORTLE => (59, 63, 80, 65, 65, 58),
            PokemonName::BLASTOISE => (79, 83, 100, 85, 85, 78),
            PokemonName::CATERPIE => (45, 30, 35, 20, 20, 45),
            PokemonName::METAPOD => (50, 20, 55, 25, 25, 30),
            PokemonName::BUTTERFREE => (60, 45, 50, 80, 80, 70),
            PokemonName::WEEDLE => (40, 35, 30, 20, 20, 50),
            PokemonName::KAKUNA => (45, 25, 50, 25, 25, 35),
            PokemonName::BEEDRILL => (65, 80, 40, 45, 45, 75),
            PokemonName::PIDGEY => (40, 45, 40, 35, 35, 56),
            PokemonName::PIDGEOTTO => (63, 60, 55, 50, 50, 71),
            PokemonName::PIDGEOT => (83, 80, 75, 70, 70, 91),
            PokemonName::RATTATA => (30, 56, 35, 25, 25, 72),
            PokemonName::RATICATE => (55, 81, 60, 50, 50, 97),
            PokemonName::SPEAROW => (40, 60, 30, 31, 31, 70),
            PokemonName::FEAROW => (65, 90, 65, 61, 61, 100),
            PokemonName::EKANS => (35, 60, 44, 40, 40, 55),
            PokemonName::ARBOK => (60, 85, 69, 65, 65, 80),
            PokemonName::PIKACHU => (35, 55, 30, 50, 50, 90),
            PokemonName::RAICHU => (60, 90, 55, 90, 90, 100),
            PokemonName::SANDSHREW => (50, 75, 85, 30, 30, 40),
            PokemonName::SANDSLASH => (75, 100, 110, 55, 55, 65),
            PokemonName::NIDORANF => (55, 47, 52, 40, 40, 41),
            PokemonName::NIDORINA => (70, 62, 67, 55, 55, 56),
            PokemonName::NIDOQUEEN => (90, 82, 87, 75, 75, 76),
            PokemonName::NIDORANM => (46, 57, 40, 40, 40, 50),
            PokemonName::NIDORINO => (61, 72, 57, 55, 55, 65),
            PokemonName::NIDOKING => (81, 92, 77, 75, 75, 85),
            PokemonName::CLEFAIRY => (70, 45, 48, 60, 60, 35),
            PokemonName::CLEFABLE => (95, 70, 73, 85, 85, 60),
            PokemonName::VULPIX => (38, 41, 40, 65, 65, 65),
            PokemonName::NINETALES => (73, 76, 75, 100, 100, 100),
            PokemonName::JIGGLYPUFF => (115, 45, 20, 25, 25, 20),
            PokemonName::WIGGLYTUFF => (140, 70, 45, 50, 50, 45),
            PokemonName::ZUBAT => (40, 45, 35, 40, 40, 55),
            PokemonName::GOLBAT => (75, 80, 70, 75, 75, 90),
            PokemonName::ODDISH => (45, 50, 55, 75, 75, 30),
            PokemonName::GLOOM => (60, 65, 70, 85, 85, 40),
            PokemonName::VILEPLUME => (75, 80, 85, 100, 100, 50),
            PokemonName::PARAS => (35, 70, 55, 55, 55, 25),
            PokemonName::PARASECT => (60, 95, 80, 80, 80, 30),
            PokemonName::VENONAT => (60, 55, 50, 40, 40, 45),
            PokemonName::VENOMOTH => (70, 65, 60, 90, 90, 90),
            PokemonName::DIGLETT => (10, 55, 25, 45, 45, 95),
            PokemonName::DUGTRIO => (35, 80, 50, 70, 70, 120),
            PokemonName::MEOWTH => (40, 45, 35, 40, 40, 90),
            PokemonName::PERSIAN => (65, 70, 60, 65, 65, 115),
            PokemonName::PSYDUCK => (50, 52, 48, 50, 50, 55),
            PokemonName::GOLDUCK => (80, 82, 78, 80, 80, 85),
            PokemonName::MANKEY => (40, 80, 35, 35, 35, 70),
            PokemonName::PRIMEAPE => (65, 105, 60, 60, 60, 95),
            PokemonName::GROWLITHE => (55, 70, 45, 50, 50, 60),
            PokemonName::ARCANINE => (90, 110, 80, 80, 80, 95),
            PokemonName::POLIWAG => (40, 50, 40, 40, 40, 90),
            PokemonName::POLIWHIRL => (65, 65, 65, 50, 50, 90),
            PokemonName::POLIWRATH => (90, 85, 95, 70, 70, 70),
            PokemonName::ABRA => (25, 20, 15, 105, 105, 90),
            PokemonName::KADABRA => (40, 35, 30, 120, 120, 105),
            PokemonName::ALAKAZAM => (55, 50, 45, 135, 135, 120),
            PokemonName::MACHOP => (70, 80, 50, 35, 35, 35),
            PokemonName::MACHOKE => (80, 100, 70, 50, 50, 45),
            PokemonName::MACHAMP => (90, 130, 80, 65, 65, 55),
            PokemonName::BELLSPROUT => (50, 75, 35, 70, 70, 40),
            PokemonName::WEEPINBELL => (65, 90, 50, 85, 85, 55),
            PokemonName::VICTREEBEL => (80, 105, 65, 100, 100, 70),
            PokemonName::TENTACOOL => (40, 40, 35, 100, 100, 70),
            PokemonName::TENTACRUEL => (80, 70, 65, 120, 120, 100),
            PokemonName::GEODUDE => (40, 80, 100, 30, 30, 20),
            PokemonName::GRAVELER => (55, 95, 115, 45, 45, 35),
            PokemonName::GOLEM => (80, 110, 130, 55, 55, 45),
            PokemonName::PONYTA => (50, 85, 55, 65, 65, 90),
            PokemonName::RAPIDASH => (65, 100, 70, 80, 80, 105),
            PokemonName::SLOWPOKE => (90, 65, 65, 40, 40, 15),
            PokemonName::SLOWBRO => (95, 75, 110, 80, 80, 30),
            PokemonName::MAGNEMITE => (25, 35, 70, 95, 95, 45),
            PokemonName::MAGNETON => (50, 60, 95, 120, 120, 70),
            PokemonName::FARFETCHD => (52, 65, 55, 58, 58, 60),
            PokemonName::DODUO => (35, 85, 45, 35, 35, 75),
            PokemonName::DODRIO => (60, 110, 70, 60, 60, 100),
            PokemonName::SEEL => (65, 45, 55, 70, 70, 45),
            PokemonName::DEWGONG => (90, 70, 80, 95, 95, 70),
            PokemonName::GRIMER => (80, 80, 50, 40, 40, 25),
            PokemonName::MUK => (105, 105, 75, 65, 65, 50),
            PokemonName::SHELLDER => (30, 65, 100, 45, 45, 40),
            PokemonName::CLOYSTER => (50, 95, 180, 85, 85, 70),
            PokemonName::GASTLY => (30, 35, 30, 100, 100, 80),
            PokemonName::HAUNTER => (45, 50, 45, 115, 115, 95),
            PokemonName::GENGAR => (60, 65, 60, 130, 130, 110),
            PokemonName::ONIX => (35, 45, 160, 30, 30, 70),
            PokemonName::DROWZEE => (60, 48, 45, 90, 90, 42),
            PokemonName::HYPNO => (85, 73, 70, 115, 115, 67),
            PokemonName::KRABBY => (30, 105, 90, 25, 25, 50),
            PokemonName::KINGLER => (55, 130, 115, 50, 50, 75),
            PokemonName::VOLTORB => (40, 30, 50, 55, 55, 100),
            PokemonName::ELECTRODE => (60, 50, 70, 80, 80, 140),
            PokemonName::EXEGGCUTE => (60, 40, 80, 60, 60, 40),
            PokemonName::EXEGGUTOR => (95, 95, 85, 125, 125, 55),
            PokemonName::CUBONE => (50, 50, 95, 40, 40, 35),
            PokemonName::MAROWAK => (60, 80, 110, 50, 50, 45),
            PokemonName::HITMONLEE => (50, 120, 53, 35, 35, 87),
            PokemonName::HITMONCHAN => (50, 105, 79, 35, 35, 76),
            PokemonName::LICKITUNG => (90, 55, 75, 60, 60, 30),
            PokemonName::KOFFING => (40, 65, 95, 60, 60, 35),
            PokemonName::WEEZING => (65, 90, 120, 85, 85, 60),
            PokemonName::RHYHORN => (80, 85, 95, 30, 30, 25),
            PokemonName::RHYDON => (105, 130, 120, 45, 45, 40),
            PokemonName::CHANSEY => (250, 5, 5, 105, 105, 50),
            PokemonName::TANGELA => (65, 55, 115, 100, 100, 60),
            PokemonName::KANGASKHAN => (105, 95, 80, 40, 40, 90),
            PokemonName::HORSEA => (30, 40, 70, 70, 70, 60),
            PokemonName::SEADRA => (55, 65, 95, 95, 95, 85),
            PokemonName::GOLDEEN => (45, 67, 60, 50, 50, 63),
            PokemonName::SEAKING => (80, 92, 65, 80, 80, 68),
            PokemonName::STARYU => (30, 45, 55, 70, 70, 85),
            PokemonName::STARMIE => (60, 75, 85, 100, 100, 115),
            PokemonName::MRMIME => (40, 45, 65, 100, 100, 90),
            PokemonName::SCYTHER => (70, 110, 80, 55, 55, 105),
            PokemonName::JYNX => (65, 50, 35, 95, 95, 95),
            PokemonName::ELECTABUZZ => (65, 83, 57, 85, 85, 105),
            PokemonName::MAGMAR => (65, 95, 57, 85, 85, 93),
            PokemonName::PINSIR => (65, 125, 100, 55, 55, 85),
            PokemonName::TAUROS => (75, 100, 95, 70, 70, 110),
            PokemonName::MAGIKARP => (20, 10, 55, 20, 20, 80),
            PokemonName::GYARADOS => (95, 125, 79, 100, 100, 81),
            PokemonName::LAPRAS => (130, 85, 80, 95, 95, 60),
            PokemonName::DITTO => (48, 48, 48, 48, 48, 48),
            PokemonName::EEVEE => (55, 55, 50, 65, 65, 55),
            PokemonName::VAPOREON => (130, 65, 60, 110, 110, 65),
            PokemonName::JOLTEON => (65, 65, 60, 110, 110, 130),
            PokemonName::FLAREON => (65, 130, 60, 110, 110, 65),
            PokemonName::PORYGON => (65, 60, 70, 75, 75, 40),
            PokemonName::OMANYTE => (35, 40, 100, 90, 90, 35),
            PokemonName::OMASTAR => (70, 60, 125, 115, 115, 55),
            PokemonName::KABUTO => (30, 80, 90, 45, 45, 55),
            PokemonName::KABUTOPS => (60, 115, 105, 70, 70, 80),
            PokemonName::AERODACTYL => (80, 105, 65, 60, 60, 130),
            PokemonName::SNORLAX => (160, 110, 65, 65, 65, 30),
            PokemonName::ARTICUNO => (90, 85, 100, 125, 125, 85),
            PokemonName::ZAPDOS => (90, 90, 85, 125, 125, 100),
            PokemonName::MOLTRES => (90, 100, 90, 125, 125, 90),
            PokemonName::DRATINI => (41, 64, 45, 50, 50, 50),
            PokemonName::DRAGONAIR => (61, 84, 65, 70, 70, 70),
            PokemonName::DRAGONITE => (91, 134, 95, 100, 100, 80),
            PokemonName::MEWTWO => (106, 110, 90, 154, 154, 130),
            PokemonName::MEW => (100, 100, 100, 100, 100, 100),
            _ => panic!("Invalid PokemonName for Gen1: {:?}", self),
        }
    }
    pub fn base_speed(&self) -> i16 {
        match self {
            PokemonName::NONE => 0,
            PokemonName::BULBASAUR => 45,
            PokemonName::IVYSAUR => 60,
            PokemonName::VENUSAUR => 80,
            PokemonName::CHARMANDER => 65,
            PokemonName::CHARMELEON => 80,
            PokemonName::CHARIZARD => 100,
            PokemonName::SQUIRTLE => 43,
            PokemonName::WARTORTLE => 58,
            PokemonName::BLASTOISE => 78,
            PokemonName::CATERPIE => 45,
            PokemonName::METAPOD => 30,
            PokemonName::BUTTERFREE => 70,
            PokemonName::WEEDLE => 50,
            PokemonName::KAKUNA => 35,
            PokemonName::BEEDRILL => 75,
            PokemonName::PIDGEY => 56,
            PokemonName::PIDGEOTTO => 71,
            PokemonName::PIDGEOT => 91,
            PokemonName::RATTATA => 72,
            PokemonName::RATICATE => 97,
            PokemonName::SPEAROW => 70,
            PokemonName::FEAROW => 100,
            PokemonName::EKANS => 55,
            PokemonName::ARBOK => 80,
            PokemonName::PIKACHU => 90,
            PokemonName::RAICHU => 100,
            PokemonName::SANDSHREW => 40,
            PokemonName::SANDSLASH => 65,
            PokemonName::NIDORANF => 41,
            PokemonName::NIDORINA => 56,
            PokemonName::NIDOQUEEN => 76,
            PokemonName::NIDORANM => 50,
            PokemonName::NIDORINO => 65,
            PokemonName::NIDOKING => 85,
            PokemonName::CLEFAIRY => 35,
            PokemonName::CLEFABLE => 60,
            PokemonName::VULPIX => 65,
            PokemonName::NINETALES => 100,
            PokemonName::JIGGLYPUFF => 20,
            PokemonName::WIGGLYTUFF => 45,
            PokemonName::ZUBAT => 55,
            PokemonName::GOLBAT => 90,
            PokemonName::ODDISH => 30,
            PokemonName::GLOOM => 40,
            PokemonName::VILEPLUME => 50,
            PokemonName::PARAS => 25,
            PokemonName::PARASECT => 30,
            PokemonName::VENONAT => 45,
            PokemonName::VENOMOTH => 90,
            PokemonName::DIGLETT => 95,
            PokemonName::DUGTRIO => 120,
            PokemonName::MEOWTH => 90,
            PokemonName::PERSIAN => 115,
            PokemonName::PSYDUCK => 55,
            PokemonName::GOLDUCK => 85,
            PokemonName::MANKEY => 70,
            PokemonName::PRIMEAPE => 95,
            PokemonName::GROWLITHE => 60,
            PokemonName::ARCANINE => 95,
            PokemonName::POLIWAG => 90,
            PokemonName::POLIWHIRL => 90,
            PokemonName::POLIWRATH => 70,
            PokemonName::ABRA => 90,
            PokemonName::KADABRA => 105,
            PokemonName::ALAKAZAM => 120,
            PokemonName::MACHOP => 35,
            PokemonName::MACHOKE => 45,
            PokemonName::MACHAMP => 55,
            PokemonName::BELLSPROUT => 40,
            PokemonName::WEEPINBELL => 55,
            PokemonName::VICTREEBEL => 70,
            PokemonName::TENTACOOL => 70,
            PokemonName::TENTACRUEL => 100,
            PokemonName::GEODUDE => 20,
            PokemonName::GRAVELER => 35,
            PokemonName::GOLEM => 45,
            PokemonName::PONYTA => 90,
            PokemonName::RAPIDASH => 105,
            PokemonName::SLOWPOKE => 15,
            PokemonName::SLOWBRO => 30,
            PokemonName::MAGNEMITE => 45,
            PokemonName::MAGNETON => 70,
            PokemonName::FARFETCHD => 52,
            PokemonName::DODUO => 75,
            PokemonName::DODRIO => 100,
            PokemonName::SEEL => 45,
            PokemonName::DEWGONG => 70,
            PokemonName::GRIMER => 25,
            PokemonName::MUK => 50,
            PokemonName::SHELLDER => 40,
            PokemonName::CLOYSTER => 70,
            PokemonName::GASTLY => 80,
            PokemonName::HAUNTER => 95,
            PokemonName::GENGAR => 110,
            PokemonName::ONIX => 70,
            PokemonName::DROWZEE => 42,
            PokemonName::HYPNO => 67,
            PokemonName::KRABBY => 50,
            PokemonName::KINGLER => 75,
            PokemonName::VOLTORB => 100,
            PokemonName::ELECTRODE => 140,
            PokemonName::EXEGGCUTE => 40,
            PokemonName::EXEGGUTOR => 55,
            PokemonName::CUBONE => 35,
            PokemonName::MAROWAK => 45,
            PokemonName::HITMONLEE => 87,
            PokemonName::HITMONCHAN => 76,
            PokemonName::LICKITUNG => 30,
            PokemonName::KOFFING => 35,
            PokemonName::WEEZING => 60,
            PokemonName::RHYHORN => 25,
            PokemonName::RHYDON => 40,
            PokemonName::CHANSEY => 50,
            PokemonName::TANGELA => 60,
            PokemonName::KANGASKHAN => 90,
            PokemonName::HORSEA => 60,
            PokemonName::SEADRA => 85,
            PokemonName::GOLDEEN => 63,
            PokemonName::SEAKING => 68,
            PokemonName::STARYU => 85,
            PokemonName::STARMIE => 115,
            PokemonName::MRMIME => 90,
            PokemonName::SCYTHER => 105,
            PokemonName::JYNX => 95,
            PokemonName::ELECTABUZZ => 105,
            PokemonName::MAGMAR => 93,
            PokemonName::PINSIR => 85,
            PokemonName::TAUROS => 110,
            PokemonName::MAGIKARP => 80,
            PokemonName::GYARADOS => 81,
            PokemonName::LAPRAS => 60,
            PokemonName::DITTO => 48,
            PokemonName::EEVEE => 55,
            PokemonName::VAPOREON => 65,
            PokemonName::JOLTEON => 130,
            PokemonName::FLAREON => 65,
            PokemonName::PORYGON => 40,
            PokemonName::OMANYTE => 35,
            PokemonName::OMASTAR => 55,
            PokemonName::KABUTO => 55,
            PokemonName::KABUTOPS => 80,
            PokemonName::AERODACTYL => 130,
            PokemonName::SNORLAX => 30,
            PokemonName::ARTICUNO => 85,
            PokemonName::ZAPDOS => 100,
            PokemonName::MOLTRES => 90,
            PokemonName::DRATINI => 50,
            PokemonName::DRAGONAIR => 70,
            PokemonName::DRAGONITE => 80,
            PokemonName::MEWTWO => 130,
            PokemonName::MEW => 100,
            _ => panic!("Invalid PokemonName for Gen1: {:?}", self),
        }
    }
}
