@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.
- package/build/config/formats.js +76 -70
- package/build/config/formats.js.map +1 -1
- package/build/data/abilities.js +5 -1
- package/build/data/abilities.js.map +1 -1
- package/build/data/formats-data.js +2 -2
- package/build/data/formats-data.js.map +1 -1
- package/build/data/items.js +5 -5
- package/build/data/items.js.map +1 -1
- package/build/data/mods/gen2/formats-data.js +1 -1
- package/build/data/mods/gen2/formats-data.js.map +1 -1
- package/build/data/moves.js +3 -1
- package/build/data/moves.js.map +1 -1
- package/build/data/pokedex.js +2 -2
- package/build/data/rulesets.js +39 -5
- package/build/data/rulesets.js.map +1 -1
- package/build/data/text/moves.js +1 -1
- package/build/data/text/moves.js.map +1 -1
- package/build/sim/pokemon.js +1 -1
- package/build/sim/pokemon.js.map +1 -1
- package/build/sim/team-validator.js +3 -0
- package/build/sim/team-validator.js.map +1 -1
- package/config/formats.ts +74 -68
- package/data/abilities.ts +3 -1
- package/data/formats-data.ts +2 -2
- package/data/items.ts +5 -5
- package/data/mods/gen2/formats-data.ts +1 -1
- package/data/moves.ts +3 -1
- package/data/pokedex.ts +2 -2
- package/data/rulesets.ts +35 -6
- package/data/text/moves.ts +1 -1
- package/package.json +1 -1
- package/sim/pokemon.ts +1 -1
- package/sim/team-validator.ts +3 -0
package/build/config/formats.js
CHANGED
|
@@ -80,7 +80,10 @@ exports.Formats = [
|
|
|
80
80
|
],
|
|
81
81
|
mod: 'gen8',
|
|
82
82
|
ruleset: ['Standard', 'Dynamax Clause'],
|
|
83
|
-
banlist: [
|
|
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',
|
|
595
|
-
'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kommo-o', 'Kyogre', 'Kyurem-Black', 'Kyurem-White',
|
|
596
|
-
'Lunala', 'Magearna', 'Marshadow', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane',
|
|
597
|
-
'Pheromosa', 'Rayquaza', 'Reshiram', 'Solgaleo', 'Spectrier', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian',
|
|
598
|
-
'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Zygarde-Base', 'Arena Trap', 'Magnet Pull', 'Moody', 'Power Construct',
|
|
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
|
+
`• <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: [
|
|
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é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.`,
|
|
933
|
-
threads: [
|
|
934
|
-
`• <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é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
|
`• <a href="https://www.smogon.com/forums/threads/3503019/">ADV OU Viability Rankings</a>`,
|
|
2089
2094
|
],
|
|
2090
2095
|
mod: 'gen3',
|
|
2091
|
-
ruleset: ['Standard', '
|
|
2092
|
-
banlist: ['Uber', '
|
|
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",
|