@pkmn/sim 0.5.15 → 0.5.18
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 +39 -57
- package/build/config/formats.js.map +1 -1
- package/build/data/formats-data.js +1 -1
- package/build/data/formats-data.js.map +1 -1
- package/build/data/items.js +1 -3
- package/build/data/items.js.map +1 -1
- package/build/data/learnsets.js +2 -2
- package/build/data/learnsets.js.map +1 -1
- package/build/data/mods/gen1/formats-data.js +1 -1
- package/build/data/mods/gen1/formats-data.js.map +1 -1
- package/build/data/mods/gen1/moves.js +1 -4
- package/build/data/mods/gen1/moves.js.map +1 -1
- package/build/data/mods/gen2/moves.js +0 -3
- package/build/data/mods/gen2/moves.js.map +1 -1
- package/build/data/mods/gen3/moves.js +0 -10
- package/build/data/mods/gen3/moves.js.map +1 -1
- package/build/data/mods/gen3/scripts.js +2 -2
- package/build/data/mods/gen3/scripts.js.map +1 -1
- package/build/data/mods/gen4/moves.js +4 -5
- package/build/data/mods/gen4/moves.js.map +1 -1
- package/build/data/mods/gen4/rulesets.js +2 -1
- package/build/data/mods/gen4/rulesets.js.map +1 -1
- package/build/data/mods/gen5/rulesets.js +2 -1
- package/build/data/mods/gen5/rulesets.js.map +1 -1
- package/build/data/mods/gen7/formats-data.js +4 -4
- package/build/data/mods/gen7/formats-data.js.map +1 -1
- package/build/data/mods/gen7/rulesets.js +2 -1
- package/build/data/mods/gen7/rulesets.js.map +1 -1
- package/build/data/moves.js +59 -79
- package/build/data/moves.js.map +1 -1
- package/build/data/pokedex.js +2 -2
- package/build/data/pokedex.js.map +1 -1
- package/build/data/rulesets.js +3 -4
- package/build/data/rulesets.js.map +1 -1
- package/build/data/text/items.js +1 -0
- package/build/data/text/items.js.map +1 -1
- package/build/data/text/moves.js +5 -3
- package/build/data/text/moves.js.map +1 -1
- package/build/sim/battle-actions.js +12 -4
- package/build/sim/battle-actions.js.map +1 -1
- package/build/sim/battle.js +43 -5
- package/build/sim/battle.js.map +1 -1
- package/build/sim/dex-conditions.d.ts +1 -0
- package/build/sim/dex-conditions.js.map +1 -1
- package/build/sim/dex-moves.d.ts +1 -1
- package/build/sim/exported-global-types.d.ts +1 -0
- package/build/sim/global-types.d.ts +1 -0
- package/build/sim/team-validator.js +15 -4
- package/build/sim/team-validator.js.map +1 -1
- package/build/sim/tools/exhaustive-runner.d.ts +9 -0
- package/build/sim/tools/exhaustive-runner.js +18 -7
- package/build/sim/tools/exhaustive-runner.js.map +1 -1
- package/config/formats.ts +39 -57
- package/data/formats-data.ts +1 -1
- package/data/items.ts +1 -3
- package/data/learnsets.ts +2 -2
- package/data/mods/gen1/formats-data.ts +1 -1
- package/data/mods/gen1/moves.ts +1 -4
- package/data/mods/gen2/moves.ts +0 -3
- package/data/mods/gen3/moves.ts +0 -10
- package/data/mods/gen3/scripts.ts +3 -3
- package/data/mods/gen4/moves.ts +3 -5
- package/data/mods/gen4/rulesets.ts +2 -1
- package/data/mods/gen5/rulesets.ts +2 -1
- package/data/mods/gen7/formats-data.ts +4 -4
- package/data/mods/gen7/rulesets.ts +2 -1
- package/data/moves.ts +59 -70
- package/data/pokedex.ts +2 -2
- package/data/rulesets.ts +3 -6
- package/data/text/items.ts +2 -0
- package/data/text/moves.ts +6 -3
- package/package.json +1 -1
- package/sim/battle-actions.ts +16 -5
- package/sim/battle.ts +42 -5
- package/sim/dex-conditions.ts +1 -0
- package/sim/dex-moves.ts +1 -1
- package/sim/exported-global-types.ts +3 -0
- package/sim/global-types.ts +3 -0
- package/sim/team-validator.ts +16 -4
- package/sim/tools/exhaustive-runner.ts +30 -11
package/config/formats.ts
CHANGED
|
@@ -254,7 +254,7 @@ export const Formats: FormatList = [
|
|
|
254
254
|
'Larvesta', 'Magby', 'Magnemite', 'Mareanie', 'Mienfoo', 'Mudbray', 'Munchlax', 'Natu', 'Onix', 'Pawniard',
|
|
255
255
|
'Ponyta', 'Ponyta-Galar', 'Porygon', 'Slowpoke-Base', 'Staryu', 'Timburr', 'Trapinch', 'Tyrunt',
|
|
256
256
|
// LC UUBL
|
|
257
|
-
'Farfetch\u2019d-Galar', 'Scorbunny', 'Shellder', 'Wingull',
|
|
257
|
+
'Archen', 'Farfetch\u2019d-Galar', 'Scorbunny', 'Shellder', 'Wingull',
|
|
258
258
|
],
|
|
259
259
|
},
|
|
260
260
|
{
|
|
@@ -359,7 +359,7 @@ export const Formats: FormatList = [
|
|
|
359
359
|
gameType: 'doubles',
|
|
360
360
|
searchShow: false,
|
|
361
361
|
ruleset: ['Standard Doubles', 'Little Cup', 'Dynamax Clause', 'Swagger Clause', 'Sleep Clause Mod'],
|
|
362
|
-
banlist: ['Corsola-Galar', 'Cutiefly', 'Ponyta-Base', 'Scyther', 'Sneasel', 'Swirlix', 'Tangela', 'Vulpix
|
|
362
|
+
banlist: ['Corsola-Galar', 'Cutiefly', 'Ponyta-Base', 'Scyther', 'Sneasel', 'Swirlix', 'Tangela', 'Vulpix-Base', 'Ally Switch'],
|
|
363
363
|
},
|
|
364
364
|
{
|
|
365
365
|
name: "[Gen 8] VGC 2022",
|
|
@@ -626,11 +626,12 @@ export const Formats: FormatList = [
|
|
|
626
626
|
ruleset: ['Standard', 'Crazyhouse Rule', 'Dynamax Clause', 'Sleep Moves Clause', 'Evasion Abilities Clause', '!Sleep Clause Mod'],
|
|
627
627
|
banlist: [
|
|
628
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',
|
|
630
|
-
'Marshadow', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa',
|
|
631
|
-
'Solgaleo', 'Spectrier', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta',
|
|
632
|
-
'Zekrom', 'Zygarde-Base', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'Bright Powder',
|
|
633
|
-
'Baton Pass', 'Explosion', 'Final Gambit', '
|
|
629
|
+
'Giratina-Origin', 'Groudon', 'Hawlucha', 'Ho-Oh', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Lugia',
|
|
630
|
+
'Lunala', 'Magearna', 'Marshadow', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa',
|
|
631
|
+
'Rayquaza', 'Reshiram', 'Solgaleo', 'Spectrier', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta',
|
|
632
|
+
'Zamazenta-Crowned', 'Zekrom', 'Zygarde-Base', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'Bright Powder',
|
|
633
|
+
'King\'s Rock', 'Lax Incense', 'Baton Pass', 'Explosion', 'Final Gambit', 'Healing Wish', 'Lunar Dance', 'Memento',
|
|
634
|
+
'Misty Explosion', 'Self-Destruct',
|
|
634
635
|
],
|
|
635
636
|
},
|
|
636
637
|
{
|
|
@@ -643,17 +644,18 @@ export const Formats: FormatList = [
|
|
|
643
644
|
mod: 'pokebilities',
|
|
644
645
|
ruleset: ['[Gen 8] Pokebilities', '!Obtainable Abilities', 'AAA Restricted Abilities', '2 Ability Clause', 'Sleep Moves Clause', '!Sleep Clause Mod'],
|
|
645
646
|
banlist: [
|
|
646
|
-
'Blacephalon', 'Buzzwole', 'Clefable', 'Dragapult', 'Dragonite', '
|
|
647
|
-
'
|
|
648
|
-
'
|
|
649
|
-
'Regenerator +
|
|
650
|
-
'
|
|
647
|
+
'Alakazam', 'Blacephalon', 'Buzzwole', 'Clefable', 'Dragapult', 'Dragonite', 'Gengar', 'Kartana', 'Keldeo', 'Kyurem', 'Melmetal', 'Mienshao',
|
|
648
|
+
'Noivern', 'Obstagoon', 'Perrserker', 'Rillaboom', 'Tapu Lele', 'Urshifu', 'Urshifu-Rapid-Strike', 'Victini', 'Weavile', 'Zamazenta-Crowned',
|
|
649
|
+
'Zapdos-Galar', 'Arena Trap', 'Moody', 'Shadow Tag', 'Wonder Guard', 'Chlorophyll + Desolate Land', 'Chlorophyll + Drought', 'Electric Surge + Surge Surfer',
|
|
650
|
+
'Regenerator + Emergency Exit', 'Regenerator + Multiscale', 'Regenerator + Shadow Shield', 'Regenerator + Wimp Out', 'Sand Rush + Sand Stream',
|
|
651
|
+
'Slush Rush + Snow Warning', 'Swift Swim + Drizzle', 'Swift Swim + Primordial Sea', 'Snow Cloak + Snow Warning', 'Sand Veil + Sand Stream',
|
|
652
|
+
'Regenerator > 2', 'Bright Powder', 'Lax Incense', 'Quick Claw',
|
|
651
653
|
],
|
|
652
|
-
unbanlist: ['Dracozolt'],
|
|
653
654
|
restricted: [
|
|
654
655
|
'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',
|
|
656
|
-
'Speed Boost', 'Tinted Lens', '
|
|
656
|
+
'Intrepid Sword', 'Libero', 'Magnet Pull', 'Neutralizing Gas', 'Parental Bond', 'Poison Heal', 'Prankster', 'Protean', 'Pure Power',
|
|
657
|
+
'Quick Draw', 'Sand Veil', 'Serene Grace', 'Simple', 'Snow Cloak', 'Speed Boost', 'Stakeout', 'Stench', 'Tinted Lens', 'Triage',
|
|
658
|
+
'Unburden', 'Water Bubble',
|
|
657
659
|
],
|
|
658
660
|
},
|
|
659
661
|
|
|
@@ -681,25 +683,6 @@ export const Formats: FormatList = [
|
|
|
681
683
|
'Water Bubble', 'Wonder Guard', 'Comatose + Sleep Talk', 'Rusted Sword', 'Court Change', 'Bolt Beak', 'Double Iron Bash',
|
|
682
684
|
'Octolock', 'Shell Smash',
|
|
683
685
|
],
|
|
684
|
-
onChangeSet(set) {
|
|
685
|
-
const item = this.dex.toID(set.item);
|
|
686
|
-
if (set.species === 'Zacian' && item === 'rustedsword') {
|
|
687
|
-
set.species = 'Zacian-Crowned';
|
|
688
|
-
set.ability = 'Intrepid Sword';
|
|
689
|
-
const ironHead = set.moves.indexOf('ironhead');
|
|
690
|
-
if (ironHead >= 0) {
|
|
691
|
-
set.moves[ironHead] = 'behemothblade';
|
|
692
|
-
}
|
|
693
|
-
}
|
|
694
|
-
if (set.species === 'Zamazenta' && item === 'rustedshield') {
|
|
695
|
-
set.species = 'Zamazenta-Crowned';
|
|
696
|
-
set.ability = 'Dauntless Shield';
|
|
697
|
-
const ironHead = set.moves.indexOf('ironhead');
|
|
698
|
-
if (ironHead >= 0) {
|
|
699
|
-
set.moves[ironHead] = 'behemothbash';
|
|
700
|
-
}
|
|
701
|
-
}
|
|
702
|
-
},
|
|
703
686
|
},
|
|
704
687
|
{
|
|
705
688
|
name: "[Gen 8] Almost Any Ability",
|
|
@@ -721,15 +704,6 @@ export const Formats: FormatList = [
|
|
|
721
704
|
'Innards Out', 'Intrepid Sword', 'Libero', 'Magnet Pull', 'Moody', 'Neutralizing Gas', 'Parental Bond', 'Poison Heal', 'Protean',
|
|
722
705
|
'Pure Power', 'Shadow Tag', 'Simple', 'Stakeout', 'Speed Boost', 'Water Bubble', 'Wonder Guard', 'King\'s Rock', 'Baton Pass',
|
|
723
706
|
],
|
|
724
|
-
onValidateSet(set) {
|
|
725
|
-
// Temporary fix until battle-only is implemented properly
|
|
726
|
-
if (this.toID(set.species) === 'zamazentacrowned' && this.toID(set.ability) !== 'dauntlessshield') {
|
|
727
|
-
return [`Zamazenta-Crowned can only use Dauntless Shield because it is a battle-only forme.`];
|
|
728
|
-
}
|
|
729
|
-
if (this.toID(set.species) === 'zaciancrowned' && this.toID(set.ability) !== 'intrepidsword') {
|
|
730
|
-
return [`Zacian-Crowned can only use Intrepid Sword because it is a battle-only forme.`];
|
|
731
|
-
}
|
|
732
|
-
},
|
|
733
707
|
},
|
|
734
708
|
{
|
|
735
709
|
name: "[Gen 8] Mix and Mega",
|
|
@@ -900,9 +874,6 @@ export const Formats: FormatList = [
|
|
|
900
874
|
const stat = Dex.stats.ids()[target.side.team.indexOf(target.set)];
|
|
901
875
|
const newSpecies = this.dex.deepClone(species);
|
|
902
876
|
let godSpecies = this.dex.species.get(god.species);
|
|
903
|
-
if (godSpecies.forme === 'Crowned') {
|
|
904
|
-
godSpecies = this.dex.species.get(godSpecies.changesFrom || godSpecies.baseSpecies);
|
|
905
|
-
}
|
|
906
877
|
if (typeof godSpecies.battleOnly === 'string') {
|
|
907
878
|
godSpecies = this.dex.species.get(godSpecies.battleOnly);
|
|
908
879
|
}
|
|
@@ -1756,6 +1727,17 @@ export const Formats: FormatList = [
|
|
|
1756
1727
|
}
|
|
1757
1728
|
}
|
|
1758
1729
|
},
|
|
1730
|
+
onSwitchOut(pokemon) {
|
|
1731
|
+
for (const innate of Object.keys(pokemon.volatiles).filter(i => i.startsWith('ability:'))) {
|
|
1732
|
+
pokemon.removeVolatile(innate);
|
|
1733
|
+
}
|
|
1734
|
+
},
|
|
1735
|
+
onFaint(pokemon) {
|
|
1736
|
+
for (const innate of Object.keys(pokemon.volatiles).filter(i => i.startsWith('ability:'))) {
|
|
1737
|
+
const innateEffect = this.dex.conditions.get(innate) as Effect;
|
|
1738
|
+
this.singleEvent('End', innateEffect, null, pokemon);
|
|
1739
|
+
}
|
|
1740
|
+
},
|
|
1759
1741
|
onAfterMega(pokemon) {
|
|
1760
1742
|
for (const innate of Object.keys(pokemon.volatiles).filter(i => i.startsWith('ability:'))) {
|
|
1761
1743
|
pokemon.removeVolatile(innate);
|
|
@@ -2495,7 +2477,7 @@ export const Formats: FormatList = [
|
|
|
2495
2477
|
|
|
2496
2478
|
mod: 'gen3',
|
|
2497
2479
|
ruleset: ['Standard', 'One Boost Passer Clause'],
|
|
2498
|
-
banlist: ['Uber', 'Sand Veil', 'Soundproof', 'Assist', 'Baton Pass + Mean Look', 'Baton Pass + Spider Web', 'Smeargle + Ingrain'],
|
|
2480
|
+
banlist: ['Uber', 'Sand Veil', 'Soundproof', 'Assist', 'Baton Pass + Block', 'Baton Pass + Mean Look', 'Baton Pass + Spider Web', 'Smeargle + Ingrain'],
|
|
2499
2481
|
},
|
|
2500
2482
|
{
|
|
2501
2483
|
name: "[Gen 2] OU",
|
|
@@ -2639,7 +2621,7 @@ export const Formats: FormatList = [
|
|
|
2639
2621
|
name: "[Gen 6] Pure Hackmons",
|
|
2640
2622
|
desc: `Anything that can be hacked in-game and is usable in local battles is allowed.`,
|
|
2641
2623
|
threads: [
|
|
2642
|
-
`• <a href="https://www.smogon.com/forums/posts/
|
|
2624
|
+
`• <a href="https://www.smogon.com/forums/posts/9029427/">ORAS Pure Hackmons</a>`,
|
|
2643
2625
|
],
|
|
2644
2626
|
|
|
2645
2627
|
mod: 'gen6',
|
|
@@ -3029,8 +3011,8 @@ export const Formats: FormatList = [
|
|
|
3029
3011
|
searchShow: false,
|
|
3030
3012
|
ruleset: ['Standard', 'Swagger Clause', 'Same Type Clause'],
|
|
3031
3013
|
banlist: [
|
|
3032
|
-
'Aegislash', 'Altaria-Mega', 'Arceus', 'Blaziken', 'Darkrai', 'Deoxys-Base', 'Deoxys-Attack', '
|
|
3033
|
-
'Giratina', 'Giratina-Origin', 'Greninja', 'Groudon', 'Ho-Oh', 'Hoopa-Unbound', 'Kangaskhan-Mega', 'Kyogre', 'Kyurem-White',
|
|
3014
|
+
'Aegislash', 'Altaria-Mega', 'Arceus', 'Blaziken', 'Darkrai', 'Deoxys-Base', 'Deoxys-Attack', 'Deoxys-Speed', 'Dialga', 'Genesect',
|
|
3015
|
+
'Gengar-Mega', 'Giratina', 'Giratina-Origin', 'Greninja', 'Groudon', 'Ho-Oh', 'Hoopa-Unbound', 'Kangaskhan-Mega', 'Kyogre', 'Kyurem-White',
|
|
3034
3016
|
'Lucario-Mega', 'Lugia', 'Mawile-Mega', 'Medicham-Mega', 'Metagross-Mega', 'Mewtwo', 'Palkia', 'Rayquaza', 'Reshiram', 'Sableye-Mega',
|
|
3035
3017
|
'Salamence-Mega', 'Shaymin-Sky', 'Slowbro-Mega', 'Talonflame', 'Xerneas', 'Yveltal', 'Zekrom',
|
|
3036
3018
|
'Shadow Tag', 'Bright Powder', 'Damp Rock', 'Focus Band', 'King\'s Rock', 'Lax Incense', 'Quick Claw', 'Razor Fang', 'Smooth Rock',
|
|
@@ -3054,8 +3036,8 @@ export const Formats: FormatList = [
|
|
|
3054
3036
|
banlist: [
|
|
3055
3037
|
'Arceus', 'Blaziken', 'Darkrai', 'Deoxys-Base', 'Deoxys-Attack', 'Deoxys-Defense', 'Dialga', 'Giratina',
|
|
3056
3038
|
'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kangaskhan-Mega', 'Kyogre', 'Kyurem-White', 'Lugia', 'Mewtwo',
|
|
3057
|
-
'Palkia', 'Rayquaza', 'Reshiram', 'Salamence-Mega', 'Shaymin-Sky', '
|
|
3058
|
-
'Focus Sash', 'Soul Dew', 'Grass Whistle', 'Hypnosis', 'Perish Song', 'Sing', 'Yawn',
|
|
3039
|
+
'Palkia', 'Rayquaza', 'Reshiram', 'Salamence-Mega', 'Shaymin-Sky', 'Snorlax', 'Xerneas', 'Yveltal',
|
|
3040
|
+
'Zekrom', 'Focus Sash', 'Soul Dew', 'Grass Whistle', 'Hypnosis', 'Perish Song', 'Sing', 'Yawn',
|
|
3059
3041
|
],
|
|
3060
3042
|
},
|
|
3061
3043
|
{
|
|
@@ -3536,11 +3518,11 @@ export const Formats: FormatList = [
|
|
|
3536
3518
|
searchShow: false,
|
|
3537
3519
|
ruleset: ['[Gen 4] PU'],
|
|
3538
3520
|
banlist: [
|
|
3539
|
-
'Ampharos', 'Armaldo', 'Bellossom', 'Dragonair', 'Gabite', 'Gastrodon', 'Glaceon', 'Glalie',
|
|
3540
|
-
'Gorebyss', 'Hippopotas', 'Kadabra', 'Machoke', 'Magmar', 'Mantine', 'Marowak', 'Metang',
|
|
3541
|
-
'Monferno', 'Mr. Mime', 'Muk', 'Murkrow', 'Pinsir', 'Politoed', 'Purugly', 'Quagsire',
|
|
3542
|
-
'Rampardos', 'Rapidash', 'Regigigas', 'Relicanth', 'Rhydon', 'Scyther', 'Sneasel', 'Snover',
|
|
3543
|
-
'Tangela', 'Torkoal', 'Victreebel', 'Xatu', 'Zangoose', 'Damp Rock',
|
|
3521
|
+
'Ampharos', 'Armaldo', 'Bellossom', 'Dragonair', 'Electabuzz', 'Gabite', 'Gastrodon', 'Glaceon', 'Glalie',
|
|
3522
|
+
'Golduck', 'Gorebyss', 'Hippopotas', 'Kadabra', 'Machoke', 'Magmar', 'Mantine', 'Marowak', 'Metang',
|
|
3523
|
+
'Misdreavus', 'Monferno', 'Mr. Mime', 'Muk', 'Murkrow', 'Pinsir', 'Politoed', 'Purugly', 'Quagsire',
|
|
3524
|
+
'Raichu', 'Rampardos', 'Rapidash', 'Regigigas', 'Relicanth', 'Rhydon', 'Scyther', 'Sneasel', 'Snover',
|
|
3525
|
+
'Solrock', 'Tangela', 'Torkoal', 'Victreebel', 'Xatu', 'Zangoose', 'Damp Rock',
|
|
3544
3526
|
],
|
|
3545
3527
|
},
|
|
3546
3528
|
{
|
package/data/formats-data.ts
CHANGED
|
@@ -1382,7 +1382,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
|
|
|
1382
1382
|
randomDoubleBattleMoves: ["fierywrath", "hurricane", "nastyplot", "protect"],
|
|
1383
1383
|
randomDoubleBattleLevel: 75,
|
|
1384
1384
|
randomBattleNoDynamaxMoves: ["agility", "fierywrath", "hurricane", "nastyplot", "rest"],
|
|
1385
|
-
tier: "
|
|
1385
|
+
tier: "UUBL",
|
|
1386
1386
|
doublesTier: "DUU",
|
|
1387
1387
|
},
|
|
1388
1388
|
dratini: {
|
package/data/items.ts
CHANGED
|
@@ -2349,7 +2349,7 @@ export const Items: {[itemid: string]: ItemData} = {
|
|
|
2349
2349
|
},
|
|
2350
2350
|
num: 1120,
|
|
2351
2351
|
gen: 8,
|
|
2352
|
-
// Hazard Immunity implemented in moves.
|
|
2352
|
+
// Hazard Immunity implemented in moves.ts
|
|
2353
2353
|
},
|
|
2354
2354
|
helixfossil: {
|
|
2355
2355
|
name: "Helix Fossil",
|
|
@@ -4664,7 +4664,6 @@ export const Items: {[itemid: string]: ItemData} = {
|
|
|
4664
4664
|
}
|
|
4665
4665
|
return true;
|
|
4666
4666
|
},
|
|
4667
|
-
forcedForme: "Zamazenta-Crowned",
|
|
4668
4667
|
itemUser: ["Zamazenta-Crowned"],
|
|
4669
4668
|
num: 1104,
|
|
4670
4669
|
gen: 8,
|
|
@@ -4678,7 +4677,6 @@ export const Items: {[itemid: string]: ItemData} = {
|
|
|
4678
4677
|
}
|
|
4679
4678
|
return true;
|
|
4680
4679
|
},
|
|
4681
|
-
forcedForme: "Zacian-Crowned",
|
|
4682
4680
|
itemUser: ["Zacian-Crowned"],
|
|
4683
4681
|
num: 1103,
|
|
4684
4682
|
gen: 8,
|
package/data/learnsets.ts
CHANGED
|
@@ -76710,7 +76710,7 @@ export const Learnsets: {[speciesid: string]: LearnsetData} = {
|
|
|
76710
76710
|
},
|
|
76711
76711
|
zaciancrowned: {
|
|
76712
76712
|
learnset: {
|
|
76713
|
-
behemothblade: ["
|
|
76713
|
+
behemothblade: ["8R"],
|
|
76714
76714
|
},
|
|
76715
76715
|
eventOnly: true,
|
|
76716
76716
|
},
|
|
@@ -76781,7 +76781,7 @@ export const Learnsets: {[speciesid: string]: LearnsetData} = {
|
|
|
76781
76781
|
},
|
|
76782
76782
|
zamazentacrowned: {
|
|
76783
76783
|
learnset: {
|
|
76784
|
-
behemothbash: ["
|
|
76784
|
+
behemothbash: ["8R"],
|
|
76785
76785
|
},
|
|
76786
76786
|
eventOnly: true,
|
|
76787
76787
|
},
|
|
@@ -179,7 +179,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
179
179
|
randomBattleMoves: ["bodyslam", "thunderbolt", "thunderwave"],
|
|
180
180
|
essentialMove: "blizzard",
|
|
181
181
|
exclusiveMoves: ["counter", "psychic", "seismictoss", "sing", "sing"],
|
|
182
|
-
tier: "
|
|
182
|
+
tier: "LC",
|
|
183
183
|
},
|
|
184
184
|
clefable: {
|
|
185
185
|
randomBattleMoves: ["bodyslam", "thunderbolt", "thunderwave"],
|
package/data/mods/gen1/moves.ts
CHANGED
|
@@ -38,7 +38,7 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|
|
38
38
|
condition: {
|
|
39
39
|
duration: 2,
|
|
40
40
|
durationCallback(target, source, effect) {
|
|
41
|
-
return this.random(3,
|
|
41
|
+
return this.random(3, 5);
|
|
42
42
|
},
|
|
43
43
|
onStart(pokemon) {
|
|
44
44
|
this.effectState.totalDamage = 0;
|
|
@@ -500,9 +500,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|
|
500
500
|
metronome: {
|
|
501
501
|
inherit: true,
|
|
502
502
|
noMetronome: ["Metronome", "Struggle"],
|
|
503
|
-
secondary: null,
|
|
504
|
-
target: "self",
|
|
505
|
-
type: "Normal",
|
|
506
503
|
},
|
|
507
504
|
mimic: {
|
|
508
505
|
inherit: true,
|
package/data/mods/gen2/moves.ts
CHANGED
|
@@ -204,9 +204,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|
|
204
204
|
}
|
|
205
205
|
this.effectState.move = lockedMove;
|
|
206
206
|
this.add('-start', target, 'Encore');
|
|
207
|
-
if (!this.queue.willMove(target)) {
|
|
208
|
-
this.effectState.duration++;
|
|
209
|
-
}
|
|
210
207
|
},
|
|
211
208
|
onOverrideAction(pokemon) {
|
|
212
209
|
return this.effectState.move;
|
package/data/mods/gen3/moves.ts
CHANGED
|
@@ -304,9 +304,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|
|
304
304
|
}
|
|
305
305
|
this.effectState.move = target.lastMove.id;
|
|
306
306
|
this.add('-start', target, 'Encore');
|
|
307
|
-
if (!this.queue.willMove(target)) {
|
|
308
|
-
this.effectState.duration++;
|
|
309
|
-
}
|
|
310
307
|
},
|
|
311
308
|
onOverrideAction(pokemon) {
|
|
312
309
|
return this.effectState.move;
|
|
@@ -549,13 +546,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|
|
549
546
|
},
|
|
550
547
|
sleeptalk: {
|
|
551
548
|
inherit: true,
|
|
552
|
-
beforeMoveCallback(pokemon) {
|
|
553
|
-
if (pokemon.volatiles['choicelock'] || pokemon.volatiles['encore']) {
|
|
554
|
-
this.addMove('move', pokemon, 'Sleep Talk');
|
|
555
|
-
this.add('-fail', pokemon);
|
|
556
|
-
return true;
|
|
557
|
-
}
|
|
558
|
-
},
|
|
559
549
|
onHit(pokemon) {
|
|
560
550
|
const moves = [];
|
|
561
551
|
for (const moveSlot of pokemon.moveSlots) {
|
|
@@ -69,9 +69,6 @@ export const Scripts: ModdedBattleScriptsData = {
|
|
|
69
69
|
// Mod 2 (Damage is floored after all multipliers are in)
|
|
70
70
|
baseDamage = Math.floor(this.battle.runEvent('ModifyDamagePhase2', pokemon, target, move, baseDamage));
|
|
71
71
|
|
|
72
|
-
// this is not a modifier
|
|
73
|
-
baseDamage = this.battle.randomizer(baseDamage);
|
|
74
|
-
|
|
75
72
|
// STAB
|
|
76
73
|
if (move.forceSTAB || type !== '???' && pokemon.hasType(type)) {
|
|
77
74
|
// The "???" type never gets STAB
|
|
@@ -104,6 +101,9 @@ export const Scripts: ModdedBattleScriptsData = {
|
|
|
104
101
|
// Final modifier.
|
|
105
102
|
baseDamage = this.battle.runEvent('ModifyDamage', pokemon, target, move, baseDamage);
|
|
106
103
|
|
|
104
|
+
// this is not a modifier
|
|
105
|
+
baseDamage = this.battle.randomizer(baseDamage);
|
|
106
|
+
|
|
107
107
|
if (!Math.floor(baseDamage)) {
|
|
108
108
|
return 1;
|
|
109
109
|
}
|
package/data/mods/gen4/moves.ts
CHANGED
|
@@ -448,9 +448,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|
|
448
448
|
}
|
|
449
449
|
this.effectState.move = target.lastMove.id;
|
|
450
450
|
this.add('-start', target, 'Encore');
|
|
451
|
-
if (!this.queue.willMove(target)) {
|
|
452
|
-
this.effectState.duration++;
|
|
453
|
-
}
|
|
454
451
|
},
|
|
455
452
|
onOverrideAction(pokemon) {
|
|
456
453
|
return this.effectState.move;
|
|
@@ -835,8 +832,9 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|
|
835
832
|
inherit: true,
|
|
836
833
|
onAfterHit(target, source, move) {
|
|
837
834
|
if (!target.item || target.itemState.knockedOff) return;
|
|
835
|
+
if (target.ability === 'multitype') return;
|
|
838
836
|
const item = target.getItem();
|
|
839
|
-
if (this.
|
|
837
|
+
if (this.runEvent('TakeItem', target, source, move, item)) {
|
|
840
838
|
target.itemState.knockedOff = true;
|
|
841
839
|
this.add('-enditem', target, item.name, '[from] move: Knock Off');
|
|
842
840
|
this.hint("In Gens 3-4, Knock Off only makes the target's item unusable; it cannot obtain a new item.", true);
|
|
@@ -1652,7 +1650,7 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|
|
1652
1650
|
this.add('-sidestart', side, 'move: Toxic Spikes');
|
|
1653
1651
|
this.effectState.layers++;
|
|
1654
1652
|
},
|
|
1655
|
-
|
|
1653
|
+
onEntryHazard(pokemon) {
|
|
1656
1654
|
if (!pokemon.isGrounded()) return;
|
|
1657
1655
|
if (pokemon.hasType('Poison')) {
|
|
1658
1656
|
this.add('-sideend', pokemon.side, 'move: Toxic Spikes', '[of] ' + pokemon);
|
|
@@ -13,7 +13,8 @@ export const Rulesets: {[k: string]: ModdedFormatData} = {
|
|
|
13
13
|
this.add('clearpoke');
|
|
14
14
|
for (const pokemon of this.getAllPokemon()) {
|
|
15
15
|
const details = pokemon.details.replace(', shiny', '')
|
|
16
|
-
.replace(/(Arceus|Gourgeist|
|
|
16
|
+
.replace(/(Arceus|Gourgeist|Pumpkaboo|Xerneas|Silvally|Urshifu)(-[a-zA-Z?-]+)?/g, '$1-*')
|
|
17
|
+
.replace(/(Zacian|Zamazenta)(?!-Crowned)/g, '$1-*'); // Hacked-in Crowned formes will be revealed
|
|
17
18
|
this.add('poke', pokemon.side.id, details, pokemon.item ? 'item' : '');
|
|
18
19
|
}
|
|
19
20
|
this.makeRequest('teampreview');
|
|
@@ -19,7 +19,8 @@ export const Rulesets: {[k: string]: ModdedFormatData} = {
|
|
|
19
19
|
this.add('clearpoke');
|
|
20
20
|
for (const pokemon of this.getAllPokemon()) {
|
|
21
21
|
const details = pokemon.details.replace(', shiny', '')
|
|
22
|
-
.replace(/(Arceus|Gourgeist|
|
|
22
|
+
.replace(/(Arceus|Gourgeist|Pumpkaboo|Xerneas|Silvally|Urshifu)(-[a-zA-Z?-]+)?/g, '$1-*')
|
|
23
|
+
.replace(/(Zacian|Zamazenta)(?!-Crowned)/g, '$1-*'); // Hacked-in Crowned formes will be revealed
|
|
23
24
|
const item = pokemon.item.includes('mail') ? 'mail' : pokemon.item ? 'item' : '';
|
|
24
25
|
this.add('poke', pokemon.side.id, details, item);
|
|
25
26
|
}
|
|
@@ -3046,7 +3046,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
3046
3046
|
doublesTier: "(DUU)",
|
|
3047
3047
|
},
|
|
3048
3048
|
sawk: {
|
|
3049
|
-
randomBattleMoves: ["bulkup", "closecombat", "earthquake", "icepunch", "knockoff", "poisonjab"],
|
|
3049
|
+
randomBattleMoves: ["bulkup", "closecombat", "earthquake", "icepunch", "knockoff", "poisonjab", "stoneedge"],
|
|
3050
3050
|
randomDoubleBattleMoves: ["closecombat", "icepunch", "knockoff", "protect", "rockslide"],
|
|
3051
3051
|
tier: "PUBL",
|
|
3052
3052
|
doublesTier: "(DUU)",
|
|
@@ -3362,7 +3362,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
3362
3362
|
tier: "NFE",
|
|
3363
3363
|
},
|
|
3364
3364
|
chandelure: {
|
|
3365
|
-
randomBattleMoves: ["calmmind", "energyball", "fireblast", "hiddenpowerground", "
|
|
3365
|
+
randomBattleMoves: ["calmmind", "energyball", "fireblast", "hiddenpowerground", "shadowball", "substitute", "trick"],
|
|
3366
3366
|
randomDoubleBattleMoves: ["energyball", "heatwave", "overheat", "protect", "shadowball", "trick"],
|
|
3367
3367
|
tier: "UU",
|
|
3368
3368
|
doublesTier: "DUU",
|
|
@@ -3485,7 +3485,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
3485
3485
|
tier: "NFE",
|
|
3486
3486
|
},
|
|
3487
3487
|
hydreigon: {
|
|
3488
|
-
randomBattleMoves: ["darkpulse", "dracometeor", "
|
|
3488
|
+
randomBattleMoves: ["darkpulse", "dracometeor", "earthpower", "fireblast", "flashcannon", "roost", "superpower", "uturn"],
|
|
3489
3489
|
randomDoubleBattleMoves: ["darkpulse", "dracometeor", "fireblast", "flashcannon", "protect", "tailwind", "uturn"],
|
|
3490
3490
|
tier: "UU",
|
|
3491
3491
|
doublesTier: "DUU",
|
|
@@ -3904,7 +3904,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
3904
3904
|
tier: "NFE",
|
|
3905
3905
|
},
|
|
3906
3906
|
goodra: {
|
|
3907
|
-
randomBattleMoves: ["dracometeor", "
|
|
3907
|
+
randomBattleMoves: ["dracometeor", "dragontail", "earthquake", "fireblast", "sludgebomb", "thunderbolt"],
|
|
3908
3908
|
randomDoubleBattleMoves: ["dracometeor", "dragonpulse", "fireblast", "muddywater", "powerwhip", "protect", "thunderbolt"],
|
|
3909
3909
|
tier: "RU",
|
|
3910
3910
|
doublesTier: "(DUU)",
|
|
@@ -36,7 +36,8 @@ export const Rulesets: {[k: string]: ModdedFormatData} = {
|
|
|
36
36
|
this.add('clearpoke');
|
|
37
37
|
for (const pokemon of this.getAllPokemon()) {
|
|
38
38
|
const details = pokemon.details.replace(', shiny', '')
|
|
39
|
-
.replace(/(Arceus|Gourgeist|
|
|
39
|
+
.replace(/(Arceus|Gourgeist|Pumpkaboo|Xerneas|Silvally|Urshifu)(-[a-zA-Z?-]+)?/g, '$1-*')
|
|
40
|
+
.replace(/(Zacian|Zamazenta)(?!-Crowned)/g, '$1-*'); // Hacked-in Crowned formes will be revealed
|
|
40
41
|
this.add('poke', pokemon.side.id, details, pokemon.item ? 'item' : '');
|
|
41
42
|
}
|
|
42
43
|
this.makeRequest('teampreview');
|