@pkmn/sim 0.5.14 → 0.5.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/build/config/formats.js +146 -135
  2. package/build/config/formats.js.map +1 -1
  3. package/build/data/aliases.js +2 -2
  4. package/build/data/aliases.js.map +1 -1
  5. package/build/data/conditions.js +4 -1
  6. package/build/data/conditions.js.map +1 -1
  7. package/build/data/formats-data.js +2 -2
  8. package/build/data/formats-data.js.map +1 -1
  9. package/build/data/items.js +4 -2
  10. package/build/data/items.js.map +1 -1
  11. package/build/data/learnsets.js +5 -4
  12. package/build/data/learnsets.js.map +1 -1
  13. package/build/data/mods/gen1/scripts.js +1 -1
  14. package/build/data/mods/gen1/scripts.js.map +1 -1
  15. package/build/data/mods/gen2/items.js +28 -0
  16. package/build/data/mods/gen2/items.js.map +1 -1
  17. package/build/data/mods/gen2/moves.js +2 -2
  18. package/build/data/mods/gen2/moves.js.map +1 -1
  19. package/build/data/mods/gen3/items.js +28 -0
  20. package/build/data/mods/gen3/items.js.map +1 -1
  21. package/build/data/mods/gen4/abilities.js +20 -0
  22. package/build/data/mods/gen4/abilities.js.map +1 -1
  23. package/build/data/mods/gen4/items.js +28 -0
  24. package/build/data/mods/gen4/items.js.map +1 -1
  25. package/build/data/mods/gen4/moves.js +14 -6
  26. package/build/data/mods/gen4/moves.js.map +1 -1
  27. package/build/data/mods/gen5/items.js +0 -4
  28. package/build/data/mods/gen5/items.js.map +1 -1
  29. package/build/data/mods/gen6/items.js +24 -0
  30. package/build/data/mods/gen6/items.js.map +1 -1
  31. package/build/data/mods/gen7/abilities.js +31 -0
  32. package/build/data/mods/gen7/abilities.js.map +1 -1
  33. package/build/data/mods/gen7/items.js +12 -0
  34. package/build/data/mods/gen7/items.js.map +1 -1
  35. package/build/data/mods/gen7/moves.js +14 -0
  36. package/build/data/mods/gen7/moves.js.map +1 -1
  37. package/build/data/moves.js +25 -12
  38. package/build/data/moves.js.map +1 -1
  39. package/build/data/rulesets.js +71 -0
  40. package/build/data/rulesets.js.map +1 -1
  41. package/build/data/tags.js +3 -3
  42. package/build/data/tags.js.map +1 -1
  43. package/build/data/text/moves.js +8 -8
  44. package/build/data/text/moves.js.map +1 -1
  45. package/build/sim/battle-queue.d.ts +2 -2
  46. package/build/sim/battle-queue.js +8 -0
  47. package/build/sim/battle-queue.js.map +1 -1
  48. package/build/sim/battle.js +42 -2
  49. package/build/sim/battle.js.map +1 -1
  50. package/build/sim/dex-conditions.d.ts +2 -2
  51. package/build/sim/dex-conditions.js.map +1 -1
  52. package/build/sim/dex-moves.d.ts +1 -0
  53. package/build/sim/dex-moves.js.map +1 -1
  54. package/build/sim/pokemon.js +18 -5
  55. package/build/sim/pokemon.js.map +1 -1
  56. package/build/sim/team-validator.js +1 -1
  57. package/build/sim/team-validator.js.map +1 -1
  58. package/config/formats.ts +151 -140
  59. package/data/aliases.ts +2 -2
  60. package/data/conditions.ts +4 -1
  61. package/data/formats-data.ts +2 -2
  62. package/data/items.ts +4 -2
  63. package/data/learnsets.ts +5 -4
  64. package/data/mods/gen1/scripts.ts +1 -1
  65. package/data/mods/gen2/items.ts +28 -0
  66. package/data/mods/gen2/moves.ts +2 -2
  67. package/data/mods/gen3/items.ts +28 -0
  68. package/data/mods/gen4/abilities.ts +20 -0
  69. package/data/mods/gen4/items.ts +28 -0
  70. package/data/mods/gen4/moves.ts +14 -7
  71. package/data/mods/gen5/items.ts +0 -4
  72. package/data/mods/gen6/items.ts +24 -0
  73. package/data/mods/gen7/abilities.ts +31 -0
  74. package/data/mods/gen7/items.ts +12 -0
  75. package/data/mods/gen7/moves.ts +14 -0
  76. package/data/moves.ts +25 -11
  77. package/data/rulesets.ts +70 -0
  78. package/data/tags.ts +3 -3
  79. package/data/text/moves.ts +8 -8
  80. package/package.json +2 -2
  81. package/sim/battle-queue.ts +10 -2
  82. package/sim/battle.ts +39 -2
  83. package/sim/dex-conditions.ts +6 -2
  84. package/sim/dex-moves.ts +1 -0
  85. package/sim/pokemon.ts +19 -7
  86. package/sim/team-validator.ts +1 -1
package/config/formats.ts CHANGED
@@ -208,7 +208,8 @@ export const Formats: FormatList = [
208
208
  'Calyrex-Ice', 'Calyrex-Shadow', 'Cinderace', 'Dialga', 'Dragonite', 'Eternatus', 'Genesect', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Jirachi',
209
209
  'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Melmetal', 'Mew', 'Mewtwo', 'Mimikyu', 'Necrozma', 'Necrozma-Dawn-Wings',
210
210
  'Necrozma-Dusk-Mane', 'Palkia', 'Rayquaza', 'Reshiram', 'Sableye', 'Snorlax', 'Solgaleo', 'Victini', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned',
211
- 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Moody', 'Power Construct', 'Bright Powder', 'Focus Band', 'Focus Sash', 'Lax Incense', 'Quick Claw', 'Perish Song',
211
+ 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Moody', 'Power Construct', 'Bright Powder', 'Focus Band', 'Focus Sash', 'Lax Incense', 'Quick Claw',
212
+ 'Acupressure', 'Hypnosis', 'Perish Song', 'Sing',
212
213
  ],
213
214
  },
214
215
  {
@@ -403,10 +404,10 @@ export const Formats: FormatList = [
403
404
  'Standard Doubles', 'Accuracy Moves Clause', 'Dynamax Clause', 'Sleep Clause Mod',
404
405
  ],
405
406
  banlist: [
406
- 'Calyrex-Ice', 'Calyrex-Shadow', 'Dialga', 'Eternatus', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Jirachi', 'Kyogre',
407
- 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Melmetal', 'Mewtwo', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia',
408
- 'Rayquaza', 'Reshiram', 'Solgaleo', 'Tornadus-Base', 'Urshifu-Base', 'Urshifu-Rapid-Strike', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned',
409
- 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Moody', 'Power Construct', 'Focus Sash', 'Ally Switch', 'Final Gambit', 'Perish Song', 'Swagger',
407
+ 'Calyrex-Ice', 'Calyrex-Shadow', 'Dialga', 'Eternatus', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Jirachi', 'Kyogre', 'Kyurem-White',
408
+ 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Melmetal', 'Mewtwo', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Rayquaza', 'Reshiram',
409
+ 'Solgaleo', 'Tornadus-Base', 'Urshifu-Base', 'Urshifu-Rapid-Strike', 'Whimsicott', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta',
410
+ 'Zamazenta-Crowned', 'Zekrom', 'Moody', 'Power Construct', 'Focus Sash', 'Ally Switch', 'Final Gambit', 'Perish Song', 'Swagger',
410
411
  ],
411
412
  },
412
413
  {
@@ -508,7 +509,7 @@ export const Formats: FormatList = [
508
509
  'Magnezone', 'Mawile-Mega', 'Pelipper', 'Rillaboom', 'Scizor-Mega', 'Serperior', 'Slowbro-Base', 'Swampert-Mega', 'Tapu Fini',
509
510
  'Tapu Koko', 'Tapu Lele', 'Toxapex', 'Tyranitar', 'Victini', 'Volcarona', 'Weavile', 'Zapdos-Base',
510
511
  'ND UUBL', // National Dex UUBL
511
- 'Drizzle', 'Drought',
512
+ 'Drizzle', 'Drought', 'Light Clay',
512
513
  // Slowbronite is banned so it doesn't validate on Galarian Slowbro
513
514
  'Slowbronite',
514
515
  ],
@@ -558,63 +559,41 @@ export const Formats: FormatList = [
558
559
  section: "Pet Mods",
559
560
  },
560
561
  {
561
- name: "[Gen 8] Alternatium",
562
- desc: `A metagame made up of only Pokémon with alternate forms, with all of them being separate and unique.`,
562
+ name: "[Gen 8] Restrictions",
563
+ desc: `A metagame made up of brand new Pokémon that are made according to various random and non-random restrictions.`,
563
564
  threads: [
564
- `&bullet; <a href="https://www.smogon.com/forums/threads/3683767/">Alternatium</a>`,
565
- `&bullet; <a href="https://docs.google.com/spreadsheets/d/1bvvkPg1CrUBJFJJeuwkts8elfJcEcahGOoHm-vGBXOI/edit?usp=sharing">Spreadsheet</a>`,
565
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3673824/">Restrictions</a>`,
566
+ `&bullet; <a href="https://docs.google.com/spreadsheets/d/1XsplBqN8njHZJT9cTP_3i3YSFITB9WaVfNOYAbNY75M/edit?usp=sharing">Spreadsheet</a>`,
566
567
  ],
567
-
568
- mod: 'alternatium',
569
- ruleset: ['Standard NatDex', 'Z-Move Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Dynamax Clause', 'Sleep Clause Mod'],
568
+ mod: 'restrictions',
569
+ ruleset: ['Standard', 'Dynamax Clause'],
570
570
  banlist: ['All Pokemon', 'Past'],
571
571
  unbanlist: [
572
- 'Silvally', 'Silvally-Bug', 'Silvally-Dark', 'Silvally-Dragon', 'Silvally-Electric', 'Silvally-Fairy', 'Silvally-Fighting', 'Silvally-Fire', 'Silvally-Flying', 'Silvally-Ghost',
573
- 'Silvally-Grass', 'Silvally-Ground', 'Silvally-Ice', 'Silvally-Poison', 'Silvally-Psychic', 'Silvally-Rock', 'Silvally-Steel', 'Silvally-Water', 'Pikachu', 'Pikachu-Rock-Star',
574
- 'Pikachu-Belle', 'Pikachu-Idol', 'Pikachu-PhD', 'Pikachu-Libre', 'Pikachu-Partner', 'Pikachu-Starter', 'Darmanitan', 'Darmanitan-Zen', 'Darmanitan-Galar', 'Darmanitan-Galar-Zen',
575
- 'Aegishield', 'Aegislash', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Rotom', 'Rotom-Heat', 'Rotom-Wash', 'Rotom-Frost', 'Rotom-Fan', 'Rotom-Mow', 'Dugtrio',
576
- 'Dugtrio-Alola', 'Muk', 'Muk-Oilslick', 'Slowbro', 'Slowbro-Galar', 'Slowking', 'Slowking-Galar', 'Tornadus', 'Cummulus', 'Thundurus', 'Thundurus-Therian', 'Landorus', 'Landorus-Bengal',
577
- 'Vivillon-Fancy', 'Vivillon', 'Vivillon-Pokeball', 'Genesect', 'Genesect-Password', 'Genesect-Molten', 'Genesect-Freezer', 'Genesect-Type-Delta', 'Groudon', 'Groudon-Primal', 'Kyogre',
578
- 'Kyogre-Primal', 'Deoxys-Wood', 'Deoxys-Gem', 'Deoxys-Tank', 'Deoxys-Speed', 'Sandslash-Lustrous', 'Sandslash-Alola', 'Ninetales-Steamwork', 'Ninetales-Alola', 'Giratina', 'Giratina-Shadow',
579
- 'Eternatus', 'Manustorm', 'Exeggutor', 'Exeggutor-Lighthouse', 'Weezing', 'Weezing-King', 'Raticate', 'Raticate-Alola', 'Linoone', 'Linoone-Punk', 'Catastroform', 'Castform-Firestorm',
580
- 'Castform-Thunderstorm', 'Castform-Snowy', 'Wormadam', 'Wormadam-Sandy', 'Fibormadam', 'Farfetch\u2019d', 'Farfetch\u2019d-Galar', 'Corsola', 'Corsoul', 'Shaymin', 'Shaymin-Sky', 'Keldeo',
581
- 'Swordeo', 'Meloetta', 'Meloetta-Fighter', 'Lycanday', 'Lycanroc-Spectre', 'Lycanroc-Dusk', 'Gourgeist', 'Gourgeist-Fae', 'Gourgeist-Pulpy', 'Supergeist', 'Cramorant', 'Cramorant-Swimmer',
582
- 'Cramorant-Gorging', 'Eiscue', 'Eiscue-Noice', 'Mimikyu', 'Mimikyu-Sparkstone', 'Morpeko-Marsh', 'Morvilant', 'Zygarde-Wyrm', 'Zygarde-Canid', 'Zygarde-Goliath',
583
- ],
584
- onValidateTeam(team, format) {
585
- const speciesTable = new Set<string>();
586
- for (const set of team) {
587
- const species = this.dex.species.get(set.species);
588
- if (speciesTable.has(species.id)) {
589
- return [
590
- `You are limited to one of each Pokémon by Species Clause (except for different formes).`,
591
- `(You have more than one ${species.id}.)`,
592
- ];
593
- }
594
- speciesTable.add(species.id);
595
- }
596
- },
572
+ 'Vulcaraptor', 'Parakinesis', 'Serpaint', 'Torgeist', 'Regolite', 'Polbearab', 'Centhorn', 'Donzyxote', 'Scimicobra', 'Folliclawe', 'Afloof', 'Nimbusteed',
573
+ 'Aerock', 'Borassa', 'Sharm', 'Nunopod', 'Crypterid', 'Abysseil', 'Faerenheit', 'Spiriteal', 'Zoltanka', 'Flydra', 'Coracrab', 'Quadringo', 'Teslaple',
574
+ 'Kapagon', 'Cyknight', 'Dirtoad', 'Crystelf', 'Rancourgar', 'Scalaron', 'Dragraceful', 'Tantrary', 'Modolith', 'Snailord', 'Arbrella', 'Draugelid',
575
+ 'Cinnastar', 'Refluse', 'Kelven', 'Kodokai', 'Cindarner', 'Thucotuco', 'Sorree', 'Gembezzle', 'Winterloper', 'Agapest', 'Volvolpa', 'Punduluum', 'Wraithful',
576
+ 'Panzarma', 'Krachiten', 'Cellsius', 'Borelem', 'Electangle', 'Orchile', 'Shinodori', 'Fluidrake', 'Potossum', 'Twygdrasill',
577
+ ],
597
578
  },
598
579
  {
599
- name: "[Gen 8] Random Dex",
600
- desc: `A micrometagame project consisting of 80 randomly selected fully-evolved Pok&eacute;mon.`,
580
+ name: "[Gen 8] Roulettemons Random Battle",
601
581
  threads: [
602
- `&bullet; <a href="https://www.smogon.com/forums/threads/3690182/">Random Dex</a>`,
603
- ],
604
-
605
- mod: 'randomdex',
606
- ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod'],
607
- banlist: ['All Pokemon', 'Past', 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass', 'Bright Powder', 'Lax Incense', 'King\'s Rock', 'Razor Fang', 'Kangaskhanite', 'Medichamite', 'Kommonium Z'],
608
- unbanlist: [
609
- 'Absol', 'Absol-Mega', 'Appletun', 'Articuno', 'Aurorus', 'Basculin', 'Beartic', 'Bisharp', 'Calyrex', 'Camerupt', 'Camerupt-Mega',
610
- 'Celesteela', 'Cloyster', 'Crawdaunt', 'Cursola', 'Dedenne', 'Delibird', 'Eelektross', 'Espeon', 'Flapple', 'Flareon', 'Flygon',
611
- 'Galvantula', 'Girafarig', 'Glaceon', 'Goodra', 'Gourgeist', 'Grimmsnarl', 'Guzzlord', 'Heliolisk', 'Hitmonchan', 'Hitmonlee',
612
- 'Hitmontop', 'Incineroar', 'Indeedee', 'Jolteon', 'Kangaskhan', 'Kommo-o', 'Lanturn', 'Leafeon', 'Leavanny', 'Ludicolo', 'Lunatone',
613
- 'Luvdisc', 'Machamp', 'Mandibuzz', 'Medicham', 'Nihilego', 'Palossand', 'Pidgeot', 'Pidgeot-Mega', 'Probopass', 'Pyroar', 'Sawk',
614
- 'Sceptile', 'Sceptile-Mega', 'Scolipede', 'Shiftry', 'Simisage', 'Slowbro', 'Slowbro-Mega', 'Slowking', 'Swoobat', 'Sylveon',
615
- 'Tapu Bulu', 'Tapu Fini', 'Tauros', 'Typhlosion', 'Umbreon', 'Ursaring', 'Vaporeon', 'Whiscash', 'Wishiwashi', 'Zebstrika', 'Absolite',
616
- 'Pidgeotite', 'Sceptilite', 'Cameruptite', 'Slowbronite',
582
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3649106/">Roulettemons</a>`,
583
+ `&bullet; <a href="https://docs.google.com/spreadsheets/d/1EOA1m7JXTq7Zz0ViVI4n6lBppFjVBa4S1GqhAwkPTZQ/edit?usp=sharing">Spreadsheet</a>`,
617
584
  ],
585
+ team: 'random',
586
+ mod: 'roulettemons',
587
+ ruleset: ['Standard NatDex'],
588
+ onSwitchIn(pokemon) {
589
+ this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]');
590
+ },
591
+ onChangeSet(set) {
592
+ if (set.species === 'Chillyte-Mega') {
593
+ set.species = 'Chillyte';
594
+ set.ability = 'Grassy Surge';
595
+ }
596
+ },
618
597
  },
619
598
  {
620
599
  name: "[Gen 6] NEXT OU",
@@ -637,42 +616,44 @@ export const Formats: FormatList = [
637
616
  column: 2,
638
617
  },
639
618
  {
640
- name: "[Gen 8] Sketchmons",
641
- desc: `Every Pok&eacute;mon gets a new move once.`,
619
+ name: "[Gen 8] Crazyhouse",
620
+ desc: `Pok&eacute;mon you KO are added to your team and removed from the opponent's, and vice versa.`,
642
621
  threads: [
643
- `&bullet; <a href="https://www.smogon.com/forums/threads/3680298/">Sketchmons</a>`,
622
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3699268/">Crazyhouse</a>`,
644
623
  ],
645
624
 
646
625
  mod: 'gen8',
647
- ruleset: ['Standard', 'Sketchmons Move Legality', 'Dynamax Clause'],
626
+ ruleset: ['Standard', 'Crazyhouse Rule', 'Dynamax Clause', 'Sleep Moves Clause', 'Evasion Abilities Clause', '!Sleep Clause Mod'],
648
627
  banlist: [
649
- 'Calyrex-Ice', 'Calyrex-Shadow', 'Cinderace', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dragapult', 'Eternatus', 'Genesect', 'Giratina',
650
- 'Giratina-Origin', 'Groudon', 'Hawlucha', 'Ho-Oh', 'Kartana', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Lugia', 'Lunala',
651
- 'Marshadow', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Porygon-Z', 'Pheromosa', 'Rayquaza', 'Regieleki',
652
- 'Reshiram', 'Rillaboom', 'Shedinja', 'Solgaleo', 'Spectrier', 'Swoobat', 'Tapu Bulu', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned',
653
- 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Zeraora', 'Zygarde-Base', 'Arena Trap', 'Magnet Pull', 'Moody', 'Power Construct', 'Sand Rush',
654
- 'Shadow Tag', 'King\'s Rock', 'Baton Pass',
655
- ],
656
- restricted: [
657
- 'Acupressure', 'Astral Barrage', 'Belly Drum', 'Bolt Beak', 'Clangorous Soul', 'Double Iron Bash', 'Electrify', 'Extreme Speed', 'Fishious Rend',
658
- 'Geomancy', 'Glacial Lance', 'Lovely Kiss', 'No Retreat', 'Oblivion Wing', 'Octolock', 'Quiver Dance', 'Secret Sword', 'Shell Smash', 'Shift Gear',
659
- 'Sleep Powder', 'Spore', 'Thousand Arrows', 'Transform', 'V-create', 'Wicked Blow',
628
+ 'Calyrex-Ice', 'Calyrex-Shadow', 'Cinderace', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Eternatus', 'Genesect', 'Giratina',
629
+ 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Lugia', 'Lunala', 'Magearna',
630
+ 'Marshadow', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram',
631
+ 'Solgaleo', 'Spectrier', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned',
632
+ 'Zekrom', 'Zygarde-Base', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'Bright Powder', 'King\'s Rock', 'Lax Incense',
633
+ 'Baton Pass', 'Explosion', 'Final Gambit', 'Misty Explosion', 'Self-Destruct',
660
634
  ],
661
635
  },
662
636
  {
663
- name: "[Gen 8] Flipped",
664
- desc: `Pok&eacute;mon have their base stats flipped.`,
637
+ name: "[Gen 8] Pokebilities AAA",
638
+ desc: `Pok&eacute;mon have all of their released abilities simultaneously alongside any additional ability.`,
665
639
  threads: [
666
- `&bullet; <a href="https://www.smogon.com/forums/threads/3662020/">Flipped</a>`,
640
+ `&bullet; <a href="https://www.smogon.com/forums/posts/8821047">Pok&eacute;bilities AAA</a>`,
667
641
  ],
668
642
 
669
- mod: 'gen8',
670
- ruleset: ['Standard', 'Flipped Mod', 'Dynamax Clause'],
643
+ mod: 'pokebilities',
644
+ ruleset: ['[Gen 8] Pokebilities', '!Obtainable Abilities', 'AAA Restricted Abilities', '2 Ability Clause', 'Sleep Moves Clause', '!Sleep Clause Mod'],
671
645
  banlist: [
672
- 'Azumarill', 'Blissey', 'Calyrex-Ice', 'Calyrex-Shadow', 'Dialga', 'Eternatus', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kyogre',
673
- 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Marshadow', 'Melmetal', 'Mewtwo', 'Necrozma-Dawn Wings', 'Necrozma-Dusk Mane', 'Palkia',
674
- 'Rayquaza', 'Reshiram', 'Solgaleo', 'Steelix', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom',
675
- 'Zygarde-Base', 'Arena Trap', 'Moody', 'Power Construct', 'Psychic Surge', 'Shadow Tag', 'Baton Pass', 'Psychic Terrain', 'Shell Smash',
646
+ 'Blacephalon', 'Buzzwole', 'Clefable', 'Dragapult', 'Dragonite', 'Kartana', 'Melmetal', 'Noivern', 'Pangoro', 'Perrserker', 'Rillaboom',
647
+ 'Tapu Lele', 'Urshifu', 'Urshifu-Rapid-Strike', 'Victini', 'Zamazenta-Crowned', 'Arena Trap', 'Moody', 'Shadow Tag', 'Wonder Guard',
648
+ 'Chlorophyll + Desolate Land', 'Chlorophyll + Drought', 'Regenerator + Emergency Exit', 'Regenerator + Multiscale', 'Regenerator + Shadow Shield',
649
+ 'Regenerator + Wimp Out', 'Sand Rush + Sand Stream', 'Slush Rush + Snow Warning', 'Swift Swim + Drizzle', 'Swift Swim + Primordial Sea',
650
+ 'Regenerator > 2',
651
+ ],
652
+ unbanlist: ['Dracozolt'],
653
+ restricted: [
654
+ 'Comatose', 'Contrary', 'Fluffy', 'Fur Coat', 'Gorilla Tactics', 'Huge Power', 'Ice Scales', 'Illusion', 'Imposter', 'Innards Out',
655
+ 'Intrepid Sword', 'Libero', 'Neutralizing Gas', 'Parental Bond', 'Poison Heal', 'Prankster', 'Protean', 'Pure Power', 'Simple', 'Stakeout',
656
+ 'Speed Boost', 'Tinted Lens', 'Water Bubble',
676
657
  ],
677
658
  },
678
659
 
@@ -868,9 +849,9 @@ export const Formats: FormatList = [
868
849
  mod: 'gen8',
869
850
  ruleset: ['Standard', 'Dynamax Clause', 'Sleep Moves Clause'],
870
851
  banlist: [
871
- 'Blissey', 'Calyrex-Shadow', 'Chansey', 'Dragapult', 'Eternatus', 'Hawlucha', 'Marowak-Alola', 'Melmetal', 'Pikachu',
872
- 'Toxapex', 'Xerneas', 'Zacian', 'Zacian-Crowned', 'Uber > 1', 'AG ++ Uber > 1', 'Arena Trap', 'Huge Power', 'Moody',
873
- 'Pure Power', 'Shadow Tag', 'Swift Swim', 'Bright Powder', 'Focus Band', 'King\'s Rock', 'Lax Incense', 'Quick Claw',
852
+ 'Blissey', 'Calyrex-Shadow', 'Chansey', 'Crawdaunt', 'Dragapult', 'Eternatus', 'Hawlucha', 'Marowak-Alola', 'Melmetal',
853
+ 'Pikachu', 'Toxapex', 'Xerneas', 'Zacian', 'Zacian-Crowned', 'Uber > 1', 'AG ++ Uber > 1', 'Arena Trap', 'Huge Power',
854
+ 'Moody', 'Pure Power', 'Shadow Tag', 'Swift Swim', 'Bright Powder', 'Focus Band', 'King\'s Rock', 'Lax Incense', 'Quick Claw',
874
855
  'Baton Pass',
875
856
  ],
876
857
  onValidateTeam(team) {
@@ -2419,40 +2400,36 @@ export const Formats: FormatList = [
2419
2400
  column: 3,
2420
2401
  },
2421
2402
  {
2422
- name: "[Gen 5] UU",
2403
+ name: "[Gen 6] UU",
2423
2404
  threads: [
2424
- `&bullet; <a href="https://www.smogon.com/forums/threads/3474024/">BW2 UU Viability Rankings</a>`,
2425
- `&bullet; <a href="https://www.smogon.com/forums/posts/6431094/">BW2 Sample Teams</a>`,
2405
+ `&bullet; <a href="https://www.smogon.com/dex/xy/formats/uu/">ORAS UU Banlist</a>`,
2406
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3598164/">ORAS UU Viability Rankings</a>`,
2426
2407
  ],
2427
2408
 
2428
- mod: 'gen5',
2409
+ mod: 'gen6',
2429
2410
  // searchShow: false,
2430
- ruleset: ['Standard', 'Evasion Abilities Clause', 'Swagger Clause', 'Sleep Clause Mod'],
2431
- banlist: ['Uber', 'OU', 'UUBL', 'Arena Trap', 'Drought', 'Sand Stream', 'Snow Warning', 'Prankster + Assist', 'Prankster + Copycat', 'Baton Pass'],
2411
+ ruleset: ['[Gen 6] OU'],
2412
+ banlist: ['OU', 'UUBL', 'Drizzle', 'Drought'],
2432
2413
  },
2433
2414
  {
2434
- name: "[Gen 5] NU",
2435
- threads: [
2436
- `&bullet; <a href="https://www.smogon.com/forums/posts/6431094/">BW2 Sample Teams</a>`,
2437
- `&bullet; <a href="https://www.smogon.com/forums/threads/3484121/">BW2 NU Viability Rankings</a>`,
2438
- ],
2415
+ name: "[Gen 4] Anything Goes",
2439
2416
 
2440
- mod: 'gen5',
2417
+ mod: 'gen4',
2441
2418
  // searchShow: false,
2442
- ruleset: ['[Gen 5] RU', '!Sleep Moves Clause', 'Sleep Clause Mod'],
2443
- banlist: ['RU', 'NUBL', 'Assist', 'Copycat'],
2419
+ ruleset: ['Obtainable', 'Arceus EV Limit', 'Endless Battle Clause', 'HP Percentage Mod', 'Cancel Mod'],
2444
2420
  },
2445
2421
  {
2446
- name: "[Gen 6] PU",
2422
+ name: "[Gen 7] RU",
2447
2423
  threads: [
2448
- `&bullet; <a href="https://www.smogon.com/dex/xy/tags/pu/">ORAS PU Banlist</a>`,
2449
- `&bullet; <a href="https://www.smogon.com/forums/threads/3528743/">ORAS PU Viability Rankings</a>`,
2424
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3645338/">USM RU Sample Teams</a>`,
2425
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3645873/">USM RU Viability Rankings</a>`,
2450
2426
  ],
2451
2427
 
2452
- mod: 'gen6',
2428
+ mod: 'gen7',
2453
2429
  // searchShow: false,
2454
- ruleset: ['[Gen 6] NU'],
2455
- banlist: ['NU', 'PUBL', 'Chatter'],
2430
+ ruleset: ['[Gen 7] UU'],
2431
+ banlist: ['UU', 'RUBL', 'Mimikyu', 'Aurora Veil'],
2432
+ unbanlist: ['Drought'],
2456
2433
  },
2457
2434
 
2458
2435
  // Past Gens OU
@@ -2668,16 +2645,6 @@ export const Formats: FormatList = [
2668
2645
  mod: 'gen6',
2669
2646
  ruleset: ['-Nonexistent', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod', 'Endless Battle Clause', 'EV limit = 510'],
2670
2647
  },
2671
- {
2672
- name: "[Gen 5] ZU",
2673
- threads: [
2674
- `&bullet; <a href="https://www.smogon.com/forums/posts/8034680/">BW2 ZU</a>`,
2675
- ],
2676
-
2677
- mod: 'gen5',
2678
- ruleset: ['[Gen 5] PU'],
2679
- banlist: ['PU', 'Dragonair', 'Glalie', 'Machoke', 'Marowak', 'Omanyte', 'Regigigas', 'Trubbish', 'Whirlipede', 'Baton Pass'],
2680
- },
2681
2648
 
2682
2649
  // US/UM Singles
2683
2650
  ///////////////////////////////////////////////////////////////////
@@ -2708,19 +2675,6 @@ export const Formats: FormatList = [
2708
2675
  ruleset: ['[Gen 7] OU'],
2709
2676
  banlist: ['OU', 'UUBL', 'Drizzle', 'Drought', 'Kommonium Z', 'Mewnium Z'],
2710
2677
  },
2711
- {
2712
- name: "[Gen 7] RU",
2713
- threads: [
2714
- `&bullet; <a href="https://www.smogon.com/forums/threads/3645338/">USM RU Sample Teams</a>`,
2715
- `&bullet; <a href="https://www.smogon.com/forums/threads/3645873/">USM RU Viability Rankings</a>`,
2716
- ],
2717
-
2718
- mod: 'gen7',
2719
- searchShow: false,
2720
- ruleset: ['[Gen 7] UU'],
2721
- banlist: ['UU', 'RUBL', 'Mimikyu', 'Aurora Veil'],
2722
- unbanlist: ['Drought'],
2723
- },
2724
2678
  {
2725
2679
  name: "[Gen 7] NU",
2726
2680
  threads: [
@@ -2826,7 +2780,7 @@ export const Formats: FormatList = [
2826
2780
  searchShow: false,
2827
2781
  ruleset: ['[Gen 7] PU'],
2828
2782
  banlist: [
2829
- 'PU', 'Carracosta', 'Crabominable', 'Gorebyss', 'Jynx', 'Raticate-Alola',
2783
+ 'PU', 'Carracosta', 'Crabominable', 'Exeggutor-Base', 'Gorebyss', 'Jynx', 'Raticate-Alola',
2830
2784
  'Shiftry', 'Throh', 'Turtonator', 'Type: Null', 'Ursaring', 'Victreebel',
2831
2785
  ],
2832
2786
  },
@@ -3013,18 +2967,6 @@ export const Formats: FormatList = [
3013
2967
  searchShow: false,
3014
2968
  ruleset: ['Standard', 'Swagger Clause', 'Mega Rayquaza Clause'],
3015
2969
  },
3016
- {
3017
- name: "[Gen 6] UU",
3018
- threads: [
3019
- `&bullet; <a href="https://www.smogon.com/dex/xy/formats/uu/">ORAS UU Banlist</a>`,
3020
- `&bullet; <a href="https://www.smogon.com/forums/threads/3598164/">ORAS UU Viability Rankings</a>`,
3021
- ],
3022
-
3023
- mod: 'gen6',
3024
- searchShow: false,
3025
- ruleset: ['[Gen 6] OU'],
3026
- banlist: ['OU', 'UUBL', 'Drizzle', 'Drought'],
3027
- },
3028
2970
  {
3029
2971
  name: "[Gen 6] RU",
3030
2972
  threads: [
@@ -3049,6 +2991,18 @@ export const Formats: FormatList = [
3049
2991
  ruleset: ['[Gen 6] RU'],
3050
2992
  banlist: ['RU', 'NUBL'],
3051
2993
  },
2994
+ {
2995
+ name: "[Gen 6] PU",
2996
+ threads: [
2997
+ `&bullet; <a href="https://www.smogon.com/dex/xy/tags/pu/">ORAS PU Banlist</a>`,
2998
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3528743/">ORAS PU Viability Rankings</a>`,
2999
+ ],
3000
+
3001
+ mod: 'gen6',
3002
+ searchShow: false,
3003
+ ruleset: ['[Gen 6] NU'],
3004
+ banlist: ['NU', 'PUBL', 'Chatter'],
3005
+ },
3052
3006
  {
3053
3007
  name: "[Gen 6] LC",
3054
3008
  threads: [
@@ -3115,6 +3069,18 @@ export const Formats: FormatList = [
3115
3069
  searchShow: false,
3116
3070
  ruleset: ['Obtainable', 'Team Preview', 'Endless Battle Clause', 'HP Percentage Mod', 'Cancel Mod'],
3117
3071
  },
3072
+ {
3073
+ name: "[Gen 6] ZU",
3074
+ threads: [
3075
+ `&bullet; <a href="https://www.smogon.com/dex/xy/formats/zu/">ORAS ZU Banlist</a>`,
3076
+ `&bullet; <a href="https://www.smogon.com/forums/posts/8034679/">ORAS ZU Viability Rankings</a>`,
3077
+ ],
3078
+
3079
+ mod: 'gen6',
3080
+ searchShow: false,
3081
+ ruleset: ['[Gen 6] PU'],
3082
+ banlist: ['PU', 'Fraxure', 'Regigigas', 'Simisear'],
3083
+ },
3118
3084
  {
3119
3085
  name: "[Gen 6] CAP",
3120
3086
  threads: [
@@ -3277,6 +3243,18 @@ export const Formats: FormatList = [
3277
3243
  searchShow: false,
3278
3244
  ruleset: ['Standard', 'Sleep Clause Mod'],
3279
3245
  },
3246
+ {
3247
+ name: "[Gen 5] UU",
3248
+ threads: [
3249
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3474024/">BW2 UU Viability Rankings</a>`,
3250
+ `&bullet; <a href="https://www.smogon.com/forums/posts/6431094/">BW2 Sample Teams</a>`,
3251
+ ],
3252
+
3253
+ mod: 'gen5',
3254
+ searchShow: false,
3255
+ ruleset: ['Standard', 'Evasion Abilities Clause', 'Swagger Clause', 'Sleep Clause Mod'],
3256
+ banlist: ['Uber', 'OU', 'UUBL', 'Arena Trap', 'Drought', 'Sand Stream', 'Snow Warning', 'Prankster + Assist', 'Prankster + Copycat', 'Baton Pass'],
3257
+ },
3280
3258
  {
3281
3259
  name: "[Gen 5] RU",
3282
3260
  threads: [
@@ -3290,6 +3268,18 @@ export const Formats: FormatList = [
3290
3268
  banlist: ['UU', 'RUBL', 'Shadow Tag', 'Shell Smash + Baton Pass'],
3291
3269
  unbanlist: ['Prankster + Assist', 'Prankster + Copycat', 'Baton Pass'],
3292
3270
  },
3271
+ {
3272
+ name: "[Gen 5] NU",
3273
+ threads: [
3274
+ `&bullet; <a href="https://www.smogon.com/forums/posts/6431094/">BW2 Sample Teams</a>`,
3275
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3484121/">BW2 NU Viability Rankings</a>`,
3276
+ ],
3277
+
3278
+ mod: 'gen5',
3279
+ searchShow: false,
3280
+ ruleset: ['[Gen 5] RU', '!Sleep Moves Clause', 'Sleep Clause Mod'],
3281
+ banlist: ['RU', 'NUBL', 'Assist', 'Copycat'],
3282
+ },
3293
3283
  {
3294
3284
  name: "[Gen 5] PU",
3295
3285
  threads: [
@@ -3343,6 +3333,17 @@ export const Formats: FormatList = [
3343
3333
  banlist: ['Uber', 'Cottonee', 'Dragonite', 'Jirachi', 'Kyurem-Black', 'Mew', 'Togekiss', 'Whimsicott', 'Victini', 'Bright Powder', 'Focus Band', 'Focus Sash', 'Lax Incense', 'Quick Claw', 'Soul Dew', 'Perish Song'],
3344
3334
  unbanlist: ['Genesect', 'Landorus', 'Manaphy', 'Thundurus', 'Tornadus-Therian'],
3345
3335
  },
3336
+ {
3337
+ name: "[Gen 5] ZU",
3338
+ threads: [
3339
+ `&bullet; <a href="https://www.smogon.com/forums/posts/8034680/">BW2 ZU</a>`,
3340
+ ],
3341
+
3342
+ mod: 'gen5',
3343
+ searchShow: false,
3344
+ ruleset: ['[Gen 5] PU'],
3345
+ banlist: ['PU', 'Articuno', 'Dragonair', 'Glalie', 'Machoke', 'Marowak', 'Omanyte', 'Regigigas', 'Trubbish', 'Whirlipede', 'Baton Pass'],
3346
+ },
3346
3347
  {
3347
3348
  name: "[Gen 5] GBU Singles",
3348
3349
 
@@ -3526,11 +3527,21 @@ export const Formats: FormatList = [
3526
3527
  unbanlist: ['Wobbuffet', 'Wynaut', 'Sand Veil', 'Swagger'],
3527
3528
  },
3528
3529
  {
3529
- name: "[Gen 4] Anything Goes",
3530
+ name: "[Gen 4] ZU",
3531
+ threads: [
3532
+ `&bullet; <a href="https://www.smogon.com/forums/posts/8034681/">DPP ZU</a>`,
3533
+ ],
3530
3534
 
3531
3535
  mod: 'gen4',
3532
3536
  searchShow: false,
3533
- ruleset: ['Obtainable', 'Arceus EV Limit', 'Endless Battle Clause', 'HP Percentage Mod', 'Cancel Mod'],
3537
+ ruleset: ['[Gen 4] PU'],
3538
+ banlist: [
3539
+ 'Ampharos', 'Armaldo', 'Bellossom', 'Dragonair', 'Gabite', 'Gastrodon', 'Glaceon', 'Glalie', 'Golduck',
3540
+ 'Gorebyss', 'Hippopotas', 'Kadabra', 'Machoke', 'Magmar', 'Mantine', 'Marowak', 'Metang', 'Misdreavus',
3541
+ 'Monferno', 'Mr. Mime', 'Muk', 'Murkrow', 'Pinsir', 'Politoed', 'Purugly', 'Quagsire', 'Raichu',
3542
+ 'Rampardos', 'Rapidash', 'Regigigas', 'Relicanth', 'Rhydon', 'Scyther', 'Sneasel', 'Snover', 'Solrock',
3543
+ 'Tangela', 'Torkoal', 'Victreebel', 'Xatu', 'Zangoose', 'Damp Rock',
3544
+ ],
3534
3545
  },
3535
3546
  {
3536
3547
  name: "[Gen 4] Custom Game",
package/data/aliases.ts CHANGED
@@ -68,8 +68,8 @@ export const Aliases: {[alias: string]: string} = {
68
68
  gen6ag: "[Gen 6] Anything Goes",
69
69
  crossevo: "[Gen 8] Cross Evolution",
70
70
  mayhem: "[Gen 8] Random Battle Mayhem",
71
- omotm: "[Gen 8] Sketchmons",
72
- lcotm: "[Gen 8] Flipped",
71
+ omotm: "[Gen 8] Crazyhouse",
72
+ lcotm: "[Gen 8] Pokebilities AAA",
73
73
 
74
74
  // mega evos
75
75
  fabio: "Ampharos-Mega",
@@ -697,8 +697,8 @@ export const Conditions: {[k: string]: ConditionData} = {
697
697
  dynamax: {
698
698
  name: 'Dynamax',
699
699
  noCopy: true,
700
- duration: 3,
701
700
  onStart(pokemon) {
701
+ this.effectState.turns = 0;
702
702
  pokemon.removeVolatile('minimize');
703
703
  pokemon.removeVolatile('substitute');
704
704
  if (pokemon.volatiles['torment']) {
@@ -736,6 +736,9 @@ export const Conditions: {[k: string]: ConditionData} = {
736
736
  return null;
737
737
  },
738
738
  onResidualPriority: -100,
739
+ onResidual() {
740
+ this.effectState.turns++;
741
+ },
739
742
  onEnd(pokemon) {
740
743
  this.add('-end', pokemon, 'Dynamax');
741
744
  if (pokemon.baseSpecies.name === 'Shedinja') return;
@@ -1212,7 +1212,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
1212
1212
  randomDoubleBattleMoves: ["faketears", "protect", "shadowball", "thunderbolt", "thunderwave"],
1213
1213
  randomDoubleBattleLevel: 86,
1214
1214
  tier: "PU",
1215
- doublesTier: "DUU",
1215
+ doublesTier: "(DUU)",
1216
1216
  },
1217
1217
  flareon: {
1218
1218
  randomBattleMoves: ["facade", "flamecharge", "flareblitz", "quickattack", "superpower"],
@@ -2016,7 +2016,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
2016
2016
  randomBattleLevel: 80,
2017
2017
  randomDoubleBattleMoves: ["closecombat", "facade", "knockoff", "obstruct", "partingshot", "taunt"],
2018
2018
  randomDoubleBattleLevel: 86,
2019
- tier: "RU",
2019
+ tier: "RUBL",
2020
2020
  doublesTier: "(DUU)",
2021
2021
  },
2022
2022
  wurmple: {
package/data/items.ts CHANGED
@@ -752,6 +752,7 @@ export const Items: {[itemid: string]: ItemData} = {
752
752
  num: 16,
753
753
  gen: 4,
754
754
  isPokeball: true,
755
+ isNonstandard: "Unobtainable",
755
756
  },
756
757
  chestoberry: {
757
758
  name: "Chesto Berry",
@@ -2904,7 +2905,7 @@ export const Items: {[itemid: string]: ItemData} = {
2904
2905
  return this.chainModify([5324, 4096]);
2905
2906
  },
2906
2907
  onAfterMoveSecondarySelf(source, target, move) {
2907
- if (source && source !== target && move && move.category !== 'Status') {
2908
+ if (source && source !== target && move && move.category !== 'Status' && !source.forceSwitchFlag) {
2908
2909
  this.damage(source.baseMaxhp / 10, source, source, this.dex.items.get('lifeorb'));
2909
2910
  }
2910
2911
  },
@@ -3773,6 +3774,7 @@ export const Items: {[itemid: string]: ItemData} = {
3773
3774
  num: 500,
3774
3775
  gen: 4,
3775
3776
  isPokeball: true,
3777
+ isNonstandard: "Unobtainable",
3776
3778
  },
3777
3779
  passhoberry: {
3778
3780
  name: "Passho Berry",
@@ -4877,7 +4879,7 @@ export const Items: {[itemid: string]: ItemData} = {
4877
4879
  },
4878
4880
  onAfterMoveSecondarySelfPriority: -1,
4879
4881
  onAfterMoveSecondarySelf(pokemon, target, move) {
4880
- if (move.totalDamage) {
4882
+ if (move.totalDamage && !pokemon.forceSwitchFlag) {
4881
4883
  this.heal(move.totalDamage / 8, pokemon);
4882
4884
  }
4883
4885
  },
package/data/learnsets.ts CHANGED
@@ -20480,20 +20480,20 @@ export const Learnsets: {[speciesid: string]: LearnsetData} = {
20480
20480
  dualwingbeat: ["8T"],
20481
20481
  endure: ["8M", "8L60"],
20482
20482
  facade: ["8M"],
20483
- fierywrath: ["8L45", "8S0"],
20483
+ fierywrath: ["8L45", "8S0", "8S1"],
20484
20484
  fly: ["8M"],
20485
20485
  foulplay: ["8M"],
20486
20486
  gigaimpact: ["8M"],
20487
20487
  gust: ["8L1"],
20488
20488
  hex: ["8M"],
20489
- hurricane: ["8M", "8L55", "8S0"],
20489
+ hurricane: ["8M", "8L55", "8S0", "8S1"],
20490
20490
  hyperbeam: ["8M"],
20491
20491
  hypervoice: ["8M"],
20492
20492
  imprison: ["8M"],
20493
20493
  lashout: ["8T"],
20494
20494
  leer: ["8L1"],
20495
20495
  memento: ["8L65"],
20496
- nastyplot: ["8M", "8L50", "8S0"],
20496
+ nastyplot: ["8M", "8L50", "8S0", "8S1"],
20497
20497
  payback: ["8M", "8L5"],
20498
20498
  protect: ["8M"],
20499
20499
  rest: ["8M"],
@@ -20507,7 +20507,7 @@ export const Learnsets: {[speciesid: string]: LearnsetData} = {
20507
20507
  snore: ["8M"],
20508
20508
  steelwing: ["8M"],
20509
20509
  substitute: ["8M"],
20510
- suckerpunch: ["8L30", "8S0"],
20510
+ suckerpunch: ["8L30", "8S0", "8S1"],
20511
20511
  swift: ["8M"],
20512
20512
  taunt: ["8M"],
20513
20513
  uturn: ["8M"],
@@ -20515,6 +20515,7 @@ export const Learnsets: {[speciesid: string]: LearnsetData} = {
20515
20515
  },
20516
20516
  eventData: [
20517
20517
  {generation: 8, level: 70, moves: ["fierywrath", "hurricane", "suckerpunch", "nastyplot"]},
20518
+ {generation: 8, level: 70, shiny: true, moves: ["fierywrath", "hurricane", "suckerpunch", "nastyplot"], pokeball: "cherishball"},
20518
20519
  ],
20519
20520
  eventOnly: true,
20520
20521
  },
@@ -662,7 +662,7 @@ export const Scripts: ModdedBattleScriptsData = {
662
662
  if (!isCrit) {
663
663
  // In gen 1, the critical chance is based on speed.
664
664
  // First, we get the base speed, divide it by 2 and floor it. This is our current crit chance.
665
- let critChance = Math.floor(source.species.baseStats['spe'] / 2);
665
+ let critChance = Math.floor(this.dex.species.get(source.set.species).baseStats['spe'] / 2);
666
666
 
667
667
  // Now we check for focus energy volatile.
668
668
  if (source.volatiles['focusenergy']) {