@pkmn/sim 0.5.1 → 0.5.2

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.
@@ -80,7 +80,10 @@ exports.Formats = [
80
80
  ],
81
81
  mod: 'gen8',
82
82
  ruleset: ['Standard', 'Dynamax Clause'],
83
- banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', 'Baton Pass'],
83
+ banlist: [
84
+ 'Uber', 'AG', 'Arena Trap', 'Moody', 'Power Construct', 'Sand Veil', 'Shadow Tag', 'Snow Cloak',
85
+ 'Bright Powder', 'King\'s Rock', 'Lax Incense', 'Baton Pass',
86
+ ],
84
87
  },
85
88
  {
86
89
  name: "[Gen 8] OU (Blitz)",
@@ -591,12 +594,12 @@ exports.Formats = [
591
594
  mod: 'gen8',
592
595
  ruleset: ['Standard', 'Dynamax Clause', 'Revelationmons Mod', 'Sleep Moves Clause'],
593
596
  banlist: [
594
- 'Calyrex-Ice', 'Calyrex-Shadow', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dragonite', 'Dragapult', 'Eternatus', 'Genesect',
595
- 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kommo-o', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Lugia',
596
- 'Lunala', 'Magearna', 'Marshadow', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Noivern', 'Palkia',
597
- 'Pheromosa', 'Rayquaza', 'Reshiram', 'Solgaleo', 'Spectrier', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned',
598
- 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Zygarde-Base', 'Arena Trap', 'Magnet Pull', 'Moody', 'Power Construct', 'Shadow Tag',
599
- 'King\'s Rock', 'Baton Pass',
597
+ 'Barraskewda', 'Blacephalon', 'Calyrex-Ice', 'Calyrex-Shadow', 'Darmanitan-Galar', 'Dialga', 'Dracovish', 'Dragonite', 'Dragapult',
598
+ 'Eternatus', 'Genesect', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kommo-o', 'Kyogre', 'Kyurem-Black', 'Kyurem-White',
599
+ 'Landorus-Base', 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane',
600
+ 'Noivern', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram', 'Solgaleo', 'Spectrier', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian',
601
+ 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Zygarde-Base', 'Arena Trap', 'Magnet Pull', 'Moody', 'Power Construct',
602
+ 'Shadow Tag', 'King\'s Rock', 'Baton Pass',
600
603
  ],
601
604
  restricted: ['Bolt Beak', 'U-turn', 'Volt Switch'],
602
605
  },
@@ -781,6 +784,63 @@ exports.Formats = [
781
784
  'Rhydon', 'Scyther', 'Sneasel', 'Type: Null', 'Vulpix-Base', 'Arena Trap', 'Shadow Tag', 'Baton Pass',
782
785
  ],
783
786
  },
787
+ {
788
+ name: "[Gen 8] Godly Gift",
789
+ desc: `Each Pokémon receives one base stat from a God (AG/Uber Pokémon) depending on its position in the team. If there is no Uber Pokémon, it uses the Pokémon in the first slot.`,
790
+ threads: [
791
+ `&bullet; <a href="https://www.smogon.com/forums/threads/3660461/">Godly Gift</a>`,
792
+ ],
793
+ mod: 'gen8',
794
+ ruleset: ['Standard', 'Dynamax Clause'],
795
+ banlist: [
796
+ 'Blissey', 'Calyrex-Shadow', 'Chansey', 'Dragapult', 'Hawlucha', 'Marowak-Alola', 'Melmetal', 'Pikachu', 'Toxapex',
797
+ 'Xerneas', 'Zacian', 'Zacian-Crowned', 'Uber > 1', 'AG ++ Uber > 1', 'Arena Trap', 'Huge Power', 'Moody', 'Pure Power',
798
+ 'Shadow Tag', 'Baton Pass',
799
+ ],
800
+ onValidateTeam(team) {
801
+ const gods = new Set();
802
+ for (const set of team) {
803
+ let species = this.dex.species.get(set.species);
804
+ if (typeof species.battleOnly === 'string')
805
+ species = this.dex.species.get(species.battleOnly);
806
+ if (['ag', 'uber'].includes(this.toID(species.tier)) || this.toID(set.ability) === 'powerconstruct') {
807
+ gods.add(species.name);
808
+ }
809
+ }
810
+ if (gods.size > 1) {
811
+ return [`You have too many Gods.`, `(${Array.from(gods).join(', ')} are Gods.)`];
812
+ }
813
+ },
814
+ onModifySpeciesPriority: 3,
815
+ onModifySpecies(species, target, source) {
816
+ if (source || !target?.side)
817
+ return;
818
+ const god = target.side.team.find(set => {
819
+ let godSpecies = this.dex.species.get(set.species);
820
+ const validator = this.dex.formats.getRuleTable(this.dex.formats.get(`gen${this.gen}ou`));
821
+ if (this.toID(set.ability) === 'powerconstruct') {
822
+ return true;
823
+ }
824
+ if (set.item) {
825
+ const item = this.dex.items.get(set.item);
826
+ if (item.megaEvolves === set.species)
827
+ godSpecies = this.dex.species.get(item.megaStone);
828
+ }
829
+ const isBanned = validator.isBannedSpecies(godSpecies);
830
+ return isBanned;
831
+ }) || target.side.team[0];
832
+ const stat = Dex.stats.ids()[target.side.team.indexOf(target.set)];
833
+ const newSpecies = this.dex.deepClone(species);
834
+ let godSpecies = this.dex.species.get(god.species);
835
+ if (godSpecies.forme === 'Crowned') {
836
+ godSpecies = this.dex.species.get(godSpecies.changesFrom || godSpecies.baseSpecies);
837
+ }
838
+ newSpecies.bst -= newSpecies.baseStats[stat];
839
+ newSpecies.baseStats[stat] = godSpecies.baseStats[stat];
840
+ newSpecies.bst += newSpecies.baseStats[stat];
841
+ return newSpecies;
842
+ },
843
+ },
784
844
  {
785
845
  name: "[Gen 8] Free-For-All",
786
846
  threads: [
@@ -821,7 +881,10 @@ exports.Formats = [
821
881
  ],
822
882
  mod: 'gen8bdsp',
823
883
  ruleset: ['Standard'],
824
- banlist: ['Uber', 'Arena Trap', 'Drizzle', 'Moody', 'Shadow Tag', 'King\'s Rock', 'Razor Fang', 'Baton Pass'],
884
+ banlist: [
885
+ 'Uber', 'Arena Trap', 'Drizzle', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak',
886
+ 'Bright Powder', 'King\'s Rock', 'Lax Incense', 'Razor Fang', 'Baton Pass',
887
+ ],
825
888
  },
826
889
  {
827
890
  name: "[Gen 8 BDSP] Ubers",
@@ -927,64 +990,6 @@ exports.Formats = [
927
990
  this.add('-start', pokemon, 'typechange', (pokemon.illusion || pokemon).getTypes(true).join('/'), '[silent]');
928
991
  },
929
992
  },
930
- {
931
- name: "[Gen 8] Godly Gift",
932
- desc: `Each Pok&eacute;mon receives one base stat from a God (AG/Uber Pok&eacute;mon) depending on its position in the team. If there is no Uber Pok&eacute;mon, it uses the Pok&eacute;mon in the first slot.`,
933
- threads: [
934
- `&bullet; <a href="https://www.smogon.com/forums/threads/3660461/">Godly Gift</a>`,
935
- ],
936
- mod: 'gen8',
937
- searchShow: false,
938
- ruleset: ['Standard', 'Dynamax Clause'],
939
- banlist: [
940
- 'Blissey', 'Calyrex-Shadow', 'Chansey', 'Dragapult', 'Hawlucha', 'Marowak-Alola', 'Melmetal', 'Pikachu', 'Toxapex',
941
- 'Xerneas', 'Zacian', 'Zacian-Crowned', 'Uber > 1', 'AG ++ Uber > 1', 'Arena Trap', 'Huge Power', 'Moody', 'Pure Power',
942
- 'Shadow Tag', 'Baton Pass',
943
- ],
944
- onValidateTeam(team) {
945
- const gods = new Set();
946
- for (const set of team) {
947
- let species = this.dex.species.get(set.species);
948
- if (typeof species.battleOnly === 'string')
949
- species = this.dex.species.get(species.battleOnly);
950
- if (['ag', 'uber'].includes(this.toID(species.tier)) || this.toID(set.ability) === 'powerconstruct') {
951
- gods.add(species.name);
952
- }
953
- }
954
- if (gods.size > 1) {
955
- return [`You have too many Gods.`, `(${Array.from(gods).join(', ')} are Gods.)`];
956
- }
957
- },
958
- onModifySpeciesPriority: 3,
959
- onModifySpecies(species, target, source) {
960
- if (source || !target?.side)
961
- return;
962
- const god = target.side.team.find(set => {
963
- let godSpecies = this.dex.species.get(set.species);
964
- const validator = this.dex.formats.getRuleTable(this.dex.formats.get(`gen${this.gen}ou`));
965
- if (this.toID(set.ability) === 'powerconstruct') {
966
- return true;
967
- }
968
- if (set.item) {
969
- const item = this.dex.items.get(set.item);
970
- if (item.megaEvolves === set.species)
971
- godSpecies = this.dex.species.get(item.megaStone);
972
- }
973
- const isBanned = validator.isBannedSpecies(godSpecies);
974
- return isBanned;
975
- }) || target.side.team[0];
976
- const stat = Dex.stats.ids()[target.side.team.indexOf(target.set)];
977
- const newSpecies = this.dex.deepClone(species);
978
- let godSpecies = this.dex.species.get(god.species);
979
- if (godSpecies.forme === 'Crowned') {
980
- godSpecies = this.dex.species.get(godSpecies.changesFrom || godSpecies.baseSpecies);
981
- }
982
- newSpecies.bst -= newSpecies.baseStats[stat];
983
- newSpecies.baseStats[stat] = godSpecies.baseStats[stat];
984
- newSpecies.bst += newSpecies.baseStats[stat];
985
- return newSpecies;
986
- },
987
- },
988
993
  {
989
994
  name: "[Gen 8] Inheritance",
990
995
  desc: `Pok&eacute;mon may use the ability and moves of another, as long as they forfeit their own learnset.`,
@@ -2088,8 +2093,8 @@ exports.Formats = [
2088
2093
  `&bullet; <a href="https://www.smogon.com/forums/threads/3503019/">ADV OU Viability Rankings</a>`,
2089
2094
  ],
2090
2095
  mod: 'gen3',
2091
- ruleset: ['Standard', '3 Baton Pass Clause'],
2092
- banlist: ['Uber', 'Mr. Mime', 'Smeargle + Baton Pass', 'Sand Veil'],
2096
+ ruleset: ['Standard', 'One Boost Passer Clause'],
2097
+ banlist: ['Uber', 'Sand Veil', 'Smeargle + Ingrain'],
2093
2098
  },
2094
2099
  {
2095
2100
  name: "[Gen 2] OU",
@@ -2637,7 +2642,7 @@ exports.Formats = [
2637
2642
  mod: 'gen6',
2638
2643
  searchShow: false,
2639
2644
  ruleset: ['[Gen 6] OU', '+CAP'],
2640
- banlist: ['Aurumoth', 'Cawmodore'],
2645
+ banlist: ['Aurumoth', 'Cawmodore', 'Crucibelle-Mega'],
2641
2646
  },
2642
2647
  {
2643
2648
  name: "[Gen 6] Battle Spot Singles",
@@ -2851,7 +2856,7 @@ exports.Formats = [
2851
2856
  searchShow: false,
2852
2857
  ruleset: [
2853
2858
  'Picked Team Size = 1', 'Max Team Size = 3',
2854
- 'Standard', 'Baton Pass Clause', 'Swagger Clause',
2859
+ 'Standard', 'Baton Pass Clause', 'Swagger Clause', 'Accuracy Moves Clause',
2855
2860
  ],
2856
2861
  banlist: ['Uber', 'Cottonee', 'Dragonite', 'Kyurem-Black', 'Mew', 'Togekiss', 'Whimsicott', 'Victini', 'Bright Powder', 'Focus Band', 'Focus Sash', 'Lax Incense', 'Quick Claw', 'Soul Dew', 'Perish Song'],
2857
2862
  unbanlist: ['Genesect', 'Landorus', 'Manaphy', 'Thundurus', 'Tornadus-Therian'],
@@ -3129,6 +3134,7 @@ exports.Formats = [
3129
3134
  '[Gen 3] OU', 'Accuracy Moves Clause', 'Sleep Moves Clause', 'Team Preview',
3130
3135
  ],
3131
3136
  banlist: ['Clefable', 'Slaking', 'Snorlax', 'Suicune', 'Destiny Bond', 'Explosion', 'Ingrain', 'Perish Song', 'Self-Destruct', 'Bright Powder', 'Focus Band', 'King\'s Rock', 'Lax Incense', 'Quick Claw'],
3137
+ unbanlist: ['Mr. Mime', 'Wobbuffet', 'Wynaut', 'Sand Veil'],
3132
3138
  },
3133
3139
  {
3134
3140
  name: "[Gen 3] Custom Game",