@pkmn/sim 0.5.25 → 0.5.27

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 (57) hide show
  1. package/build/config/formats.js +195 -162
  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 +1 -1
  6. package/build/data/conditions.js.map +1 -1
  7. package/build/data/formats-data.js +24 -25
  8. package/build/data/formats-data.js.map +1 -1
  9. package/build/data/learnsets.js +27 -20
  10. package/build/data/learnsets.js.map +1 -1
  11. package/build/data/mods/gen1/formats-data.js +0 -5
  12. package/build/data/mods/gen1/formats-data.js.map +1 -1
  13. package/build/data/mods/gen1/moves.js +54 -22
  14. package/build/data/mods/gen1/moves.js.map +1 -1
  15. package/build/data/mods/gen2/moves.js +10 -5
  16. package/build/data/mods/gen2/moves.js.map +1 -1
  17. package/build/data/mods/gen3/formats-data.js +2 -2
  18. package/build/data/mods/gen3/formats-data.js.map +1 -1
  19. package/build/data/mods/gen3/moves.js +9 -0
  20. package/build/data/mods/gen3/moves.js.map +1 -1
  21. package/build/data/mods/gen6/formats-data.js +14 -14
  22. package/build/data/mods/gen6/formats-data.js.map +1 -1
  23. package/build/data/mods/gen7/pokedex.js +4 -5
  24. package/build/data/mods/gen7/pokedex.js.map +1 -1
  25. package/build/data/pokedex.js +14 -14
  26. package/build/data/pokedex.js.map +1 -1
  27. package/build/data/rulesets.js +1 -1
  28. package/build/data/rulesets.js.map +1 -1
  29. package/build/data/text/abilities.js +321 -139
  30. package/build/data/text/abilities.js.map +1 -1
  31. package/build/data/text/moves.js +8 -2
  32. package/build/data/text/moves.js.map +1 -1
  33. package/build/sim/battle-actions.js.map +1 -1
  34. package/build/sim/pokemon.js +1 -1
  35. package/build/sim/pokemon.js.map +1 -1
  36. package/build/sim/team-validator.js +30 -18
  37. package/build/sim/team-validator.js.map +1 -1
  38. package/config/formats.ts +194 -159
  39. package/data/aliases.ts +2 -2
  40. package/data/conditions.ts +1 -1
  41. package/data/formats-data.ts +24 -25
  42. package/data/learnsets.ts +27 -20
  43. package/data/mods/gen1/formats-data.ts +0 -5
  44. package/data/mods/gen1/moves.ts +54 -23
  45. package/data/mods/gen2/moves.ts +10 -5
  46. package/data/mods/gen3/formats-data.ts +2 -2
  47. package/data/mods/gen3/moves.ts +9 -0
  48. package/data/mods/gen6/formats-data.ts +14 -14
  49. package/data/mods/gen7/pokedex.ts +4 -5
  50. package/data/pokedex.ts +14 -14
  51. package/data/rulesets.ts +1 -1
  52. package/data/text/abilities.ts +321 -139
  53. package/data/text/moves.ts +8 -2
  54. package/package.json +1 -1
  55. package/sim/battle-actions.ts +1 -0
  56. package/sim/pokemon.ts +1 -1
  57. package/sim/team-validator.ts +31 -20
@@ -70,7 +70,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
70
70
  randomBattleLevel: 82,
71
71
  randomDoubleBattleMoves: ["icebeam", "muddywater", "protect", "shellsmash"],
72
72
  randomDoubleBattleLevel: 80,
73
- tier: "NU",
73
+ tier: "NUBL",
74
74
  doublesTier: "DUU",
75
75
  natDexTier: "RU",
76
76
  },
@@ -371,7 +371,6 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
371
371
  randomDoubleBattleMoves: ["followme", "helpinghand", "moonblast", "protect"],
372
372
  randomDoubleBattleLevel: 95,
373
373
  tier: "NFE",
374
- doublesTier: "DUU",
375
374
  },
376
375
  clefable: {
377
376
  randomBattleMoves: ["calmmind", "fireblast", "moonblast", "softboiled", "stealthrock", "thunderwave"],
@@ -543,7 +542,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
543
542
  randomBattleLevel: 86,
544
543
  randomDoubleBattleMoves: ["closecombat", "fakeout", "ironhead", "lashout", "protect", "uturn"],
545
544
  randomDoubleBattleLevel: 88,
546
- tier: "PU",
545
+ tier: "(PU)",
547
546
  doublesTier: "(DUU)",
548
547
  natDexTier: "RU",
549
548
  },
@@ -677,7 +676,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
677
676
  randomBattleLevel: 84,
678
677
  randomDoubleBattleMoves: ["acidspray", "icywind", "knockoff", "muddywater", "rapidspin", "sludgebomb"],
679
678
  randomDoubleBattleLevel: 87,
680
- tier: "UU",
679
+ tier: "RU",
681
680
  doublesTier: "(DUU)",
682
681
  natDexTier: "RU",
683
682
  },
@@ -1215,9 +1214,9 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
1215
1214
  randomBattleLevel: 81,
1216
1215
  randomDoubleBattleMoves: ["brickbreak", "bugbite", "dualwingbeat", "uturn"],
1217
1216
  randomDoubleBattleLevel: 84,
1218
- tier: "PU",
1217
+ tier: "PUBL",
1219
1218
  doublesTier: "NFE",
1220
- natDexTier: "NFE",
1219
+ natDexTier: "LC",
1221
1220
  },
1222
1221
  scizor: {
1223
1222
  randomBattleMoves: ["bulletpunch", "dualwingbeat", "knockoff", "roost", "superpower", "swordsdance", "uturn"],
@@ -1432,7 +1431,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
1432
1431
  randomBattleMoves: ["discharge", "icebeam", "recover", "toxic", "triattack"],
1433
1432
  randomBattleLevel: 82,
1434
1433
  randomDoubleBattleMoves: ["icebeam", "protect", "recover", "thunderbolt", "toxic", "triattack"],
1435
- randomDoubleBattleLevel: 82,
1434
+ randomDoubleBattleLevel: 83,
1436
1435
  tier: "RU",
1437
1436
  doublesTier: "DOU",
1438
1437
  natDexTier: "NFE",
@@ -1518,7 +1517,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
1518
1517
  randomBattleMoves: ["airslash", "calmmind", "freezingglare", "recover"],
1519
1518
  randomBattleLevel: 80,
1520
1519
  randomDoubleBattleMoves: ["calmmind", "freezingglare", "hurricane", "recover", "tailwind"],
1521
- randomDoubleBattleLevel: 80,
1520
+ randomDoubleBattleLevel: 81,
1522
1521
  randomBattleNoDynamaxMoves: ["calmmind", "freezingglare", "hurricane", "recover"],
1523
1522
  tier: "PU",
1524
1523
  doublesTier: "(DUU)",
@@ -1538,7 +1537,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
1538
1537
  randomBattleLevel: 76,
1539
1538
  randomDoubleBattleMoves: ["bravebird", "bulkup", "closecombat", "throatchop", "thunderouskick", "uturn"],
1540
1539
  randomDoubleBattleLevel: 76,
1541
- tier: "OU",
1540
+ tier: "UUBL",
1542
1541
  doublesTier: "DUU",
1543
1542
  natDexTier: "UUBL",
1544
1543
  },
@@ -1778,7 +1777,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
1778
1777
  },
1779
1778
  sudowoodo: {
1780
1779
  randomBattleMoves: ["earthquake", "headsmash", "stealthrock", "suckerpunch", "woodhammer"],
1781
- randomBattleLevel: 86,
1780
+ randomBattleLevel: 87,
1782
1781
  randomDoubleBattleMoves: ["bodypress", "firepunch", "headsmash", "protect", "suckerpunch", "woodhammer"],
1783
1782
  randomDoubleBattleLevel: 90,
1784
1783
  tier: "(PU)",
@@ -1939,7 +1938,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
1939
1938
  },
1940
1939
  shuckle: {
1941
1940
  randomBattleMoves: ["encore", "knockoff", "stealthrock", "stickyweb", "toxic"],
1942
- randomBattleLevel: 86,
1941
+ randomBattleLevel: 87,
1943
1942
  randomDoubleBattleMoves: ["acupressure", "guardsplit", "helpinghand", "infestation", "knockoff", "stealthrock", "stickyweb", "toxic"],
1944
1943
  randomDoubleBattleLevel: 100,
1945
1944
  tier: "(PU)",
@@ -2733,7 +2732,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
2733
2732
  randomBattleMoves: ["defog", "dracometeor", "earthquake", "fireblast", "roost", "toxic"],
2734
2733
  randomBattleLevel: 90,
2735
2734
  randomDoubleBattleMoves: ["defog", "dracometeor", "fireblast", "roost", "tailwind", "toxic"],
2736
- randomDoubleBattleLevel: 91,
2735
+ randomDoubleBattleLevel: 92,
2737
2736
  tier: "(PU)",
2738
2737
  doublesTier: "(DUU)",
2739
2738
  natDexTier: "RU",
@@ -3415,7 +3414,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
3415
3414
  },
3416
3415
  bronzong: {
3417
3416
  randomBattleMoves: ["earthquake", "ironhead", "protect", "stealthrock", "toxic"],
3418
- randomBattleLevel: 82,
3417
+ randomBattleLevel: 83,
3419
3418
  randomDoubleBattleMoves: ["allyswitch", "bodypress", "explosion", "ironhead", "trickroom"],
3420
3419
  randomDoubleBattleLevel: 88,
3421
3420
  tier: "RU",
@@ -3446,7 +3445,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
3446
3445
  randomBattleMoves: ["earthquake", "fireblast", "firefang", "outrage", "stealthrock", "stoneedge", "swordsdance"],
3447
3446
  randomBattleLevel: 74,
3448
3447
  randomDoubleBattleMoves: ["dragonclaw", "earthquake", "fireblast", "protect", "rockslide", "swordsdance"],
3449
- randomDoubleBattleLevel: 79,
3448
+ randomDoubleBattleLevel: 80,
3450
3449
  tier: "OU",
3451
3450
  doublesTier: "(DUU)",
3452
3451
  natDexTier: "OU",
@@ -4167,7 +4166,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
4167
4166
  },
4168
4167
  maractus: {
4169
4168
  randomBattleMoves: ["energyball", "knockoff", "leechseed", "spikes", "spikyshield", "toxic"],
4170
- randomBattleLevel: 94,
4169
+ randomBattleLevel: 95,
4171
4170
  randomDoubleBattleMoves: ["acupressure", "drainpunch", "helpinghand", "leafstorm", "spikyshield", "suckerpunch"],
4172
4171
  randomDoubleBattleLevel: 96, // buffed twice in the last 6 months as of Nov 2021
4173
4172
  tier: "(PU)",
@@ -4219,7 +4218,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
4219
4218
  randomBattleLevel: 86,
4220
4219
  randomDoubleBattleMoves: ["bodypress", "irondefense", "painsplit", "shadowball", "trickroom", "willowisp"],
4221
4220
  randomDoubleBattleLevel: 88,
4222
- tier: "PU",
4221
+ tier: "(PU)",
4223
4222
  doublesTier: "(DUU)",
4224
4223
  natDexTier: "RU",
4225
4224
  },
@@ -4284,7 +4283,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
4284
4283
  zoroark: {
4285
4284
  randomBattleMoves: ["darkpulse", "flamethrower", "nastyplot", "sludgebomb", "trick"],
4286
4285
  randomDoubleBattleMoves: ["darkpulse", "flamethrower", "focusblast", "nastyplot", "protect", "sludgebomb"],
4287
- tier: "NU",
4286
+ tier: "PUBL",
4288
4287
  doublesTier: "(DUU)",
4289
4288
  natDexTier: "RU",
4290
4289
  },
@@ -5093,7 +5092,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
5093
5092
  randomDoubleBattleMoves: ["knockoff", "psychocut", "rest", "superpower"],
5094
5093
  randomDoubleBattleLevel: 84,
5095
5094
  tier: "(PU)",
5096
- doublesTier: "DUU",
5095
+ doublesTier: "(DUU)",
5097
5096
  natDexTier: "RU",
5098
5097
  },
5099
5098
  binacle: {
@@ -5618,7 +5617,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
5618
5617
  randomDoubleBattleMoves: ["leechlife", "liquidation", "lunge", "protect", "stickyweb", "wideguard"],
5619
5618
  randomDoubleBattleLevel: 84,
5620
5619
  tier: "PUBL",
5621
- doublesTier: "DUU",
5620
+ doublesTier: "(DUU)",
5622
5621
  natDexTier: "RU",
5623
5622
  },
5624
5623
  araquanidtotem: {
@@ -5913,7 +5912,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
5913
5912
  randomBattleLevel: 84,
5914
5913
  randomDoubleBattleMoves: ["flamethrower", "multiattack", "partingshot", "tailwind", "thunderbolt"],
5915
5914
  randomDoubleBattleLevel: 87,
5916
- tier: "NU",
5915
+ tier: "PU",
5917
5916
  doublesTier: "(DUU)",
5918
5917
  natDexTier: "RU",
5919
5918
  },
@@ -6035,7 +6034,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
6035
6034
  },
6036
6035
  tapulele: {
6037
6036
  randomBattleMoves: ["calmmind", "focusblast", "moonblast", "psychic", "psyshock", "shadowball"],
6038
- randomBattleLevel: 80,
6037
+ randomBattleLevel: 79,
6039
6038
  randomDoubleBattleMoves: ["calmmind", "dazzlinggleam", "focusblast", "moonblast", "protect", "psyshock"],
6040
6039
  randomDoubleBattleLevel: 80,
6041
6040
  tier: "OU",
@@ -6105,7 +6104,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
6105
6104
  },
6106
6105
  pheromosa: {
6107
6106
  randomBattleMoves: ["closecombat", "icebeam", "poisonjab", "throatchop", "uturn"],
6108
- randomBattleLevel: 76,
6107
+ randomBattleLevel: 75,
6109
6108
  randomDoubleBattleMoves: ["closecombat", "icebeam", "poisonjab", "protect", "throatchop", "uturn"],
6110
6109
  randomDoubleBattleLevel: 78,
6111
6110
  tier: "Uber",
@@ -6160,7 +6159,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
6160
6159
  },
6161
6160
  necrozmaduskmane: {
6162
6161
  randomBattleMoves: ["dragondance", "earthquake", "morningsun", "photongeyser", "sunsteelstrike"],
6163
- randomBattleLevel: 68,
6162
+ randomBattleLevel: 67,
6164
6163
  randomDoubleBattleMoves: ["dragondance", "photongeyser", "protect", "sunsteelstrike"],
6165
6164
  randomDoubleBattleLevel: 72,
6166
6165
  tier: "Uber",
@@ -6963,7 +6962,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
6963
6962
  randomDoubleBattleMoves: ["electroweb", "extremespeed", "protect", "thundercage", "voltswitch"],
6964
6963
  randomDoubleBattleLevel: 82,
6965
6964
  randomBattleNoDynamaxMoves: ["explosion", "rapidspin", "thunderbolt", "voltswitch"],
6966
- tier: "OU",
6965
+ tier: "UU",
6967
6966
  doublesTier: "DOU",
6968
6967
  natDexTier: "UU",
6969
6968
  },
@@ -6981,7 +6980,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
6981
6980
  randomBattleLevel: 82,
6982
6981
  randomDoubleBattleMoves: ["closecombat", "highhorsepower", "iciclecrash", "protect"],
6983
6982
  randomDoubleBattleLevel: 82,
6984
- tier: "PU",
6983
+ tier: "(PU)",
6985
6984
  doublesTier: "(DUU)",
6986
6985
  natDexTier: "RU",
6987
6986
  },
package/data/learnsets.ts CHANGED
@@ -4722,13 +4722,13 @@ export const Learnsets: {[speciesid: string]: LearnsetData} = {
4722
4722
  megapunch: ["8M", "7V", "3T"],
4723
4723
  meteorbeam: ["8T"],
4724
4724
  meteormash: ["8L32", "7L50", "6L50", "5L55", "4L43", "3L45"],
4725
- metronome: ["8M", "8L20", "8V", "7L31", "7V", "6L31", "5L34", "4L31", "3T", "3L29"],
4725
+ metronome: ["8M", "8L20", "8V", "8S1", "7L31", "7V", "6L31", "5L34", "4L31", "3T", "3L29"],
4726
4726
  mimic: ["7V", "3T"],
4727
4727
  minimize: ["8L8", "8V", "7L25", "7V", "6L25", "5L19", "4L19", "3L21"],
4728
4728
  mistyexplosion: ["8T"],
4729
4729
  mistyterrain: ["8M"],
4730
- moonblast: ["8L44", "8V", "7L46", "6L46"],
4731
- moonlight: ["8L24", "7L43", "7V", "6L43", "5L40", "4L37", "3L37"],
4730
+ moonblast: ["8L44", "8V", "8S1", "7L46", "6L46"],
4731
+ moonlight: ["8L24", "8S1", "7L43", "7V", "6L43", "5L40", "4L37", "3L37"],
4732
4732
  mudslap: ["7V", "4T", "3T"],
4733
4733
  mysticalfire: ["8M"],
4734
4734
  naturalgift: ["4M"],
@@ -4792,10 +4792,11 @@ export const Learnsets: {[speciesid: string]: LearnsetData} = {
4792
4792
  wonderroom: ["8M", "7T", "6T", "5T"],
4793
4793
  workup: ["8M", "7M", "5M"],
4794
4794
  zapcannon: ["7V"],
4795
- zenheadbutt: ["8M", "7T", "6T", "5T", "4T"],
4795
+ zenheadbutt: ["8M", "8S1", "7T", "6T", "5T", "4T"],
4796
4796
  },
4797
4797
  eventData: [
4798
4798
  {generation: 8, level: 50, gender: "F", shiny: true, nature: "Bold", isHidden: true, ivs: {hp: 31, atk: 0, def: 31, spa: 31, spd: 31, spe: 31}, moves: ["followme", "icywind", "helpinghand", "protect"], pokeball: "cherishball"},
4799
+ {generation: 8, level: 15, gender: "M", nature: "Modest", abilities: ["cutecharm"], moves: ["metronome", "moonblast", "zenheadbutt", "moonlight"], pokeball: "moonball"},
4799
4800
  ],
4800
4801
  encounters: [
4801
4802
  {generation: 1, level: 8},
@@ -11320,25 +11321,25 @@ export const Learnsets: {[speciesid: string]: LearnsetData} = {
11320
11321
  bodyslam: ["8M"],
11321
11322
  bravebird: ["8M", "8L65"],
11322
11323
  brickbreak: ["8M", "8L40"],
11323
- brutalswing: ["8M", "8L20"],
11324
+ brutalswing: ["8M", "8L20", "8S0"],
11324
11325
  closecombat: ["8M"],
11325
11326
  coaching: ["8T"],
11326
11327
  defog: ["8L35"],
11327
- detect: ["8L25"],
11328
+ detect: ["8L25", "8S0"],
11328
11329
  dualwingbeat: ["8T"],
11329
11330
  endure: ["8M"],
11330
11331
  facade: ["8M"],
11331
11332
  finalgambit: ["8L60"],
11332
11333
  firstimpression: ["8L1"],
11333
11334
  focusenergy: ["8M"],
11334
- furycutter: ["8L1"],
11335
+ furycutter: ["8L1", "8S0"],
11335
11336
  grassyglide: ["8T"],
11336
11337
  helpinghand: ["8M"],
11337
11338
  irondefense: ["8M", "8L0"],
11338
11339
  knockoff: ["8L30"],
11339
11340
  leafblade: ["8M", "8L55"],
11340
11341
  leer: ["8L1"],
11341
- meteorassault: ["8L70"],
11342
+ meteorassault: ["8L70", "8S0"],
11342
11343
  peck: ["8L1"],
11343
11344
  poisonjab: ["8M"],
11344
11345
  protect: ["8M"],
@@ -11360,6 +11361,9 @@ export const Learnsets: {[speciesid: string]: LearnsetData} = {
11360
11361
  throatchop: ["8M"],
11361
11362
  workup: ["8M"],
11362
11363
  },
11364
+ eventData: [
11365
+ {generation: 8, level: 80, gender: "M", nature: "Brave", abilities: ["steadfast"], ivs: {hp: 30, atk: 31, def: 31, spa: 30, spd: 30, spe: 31}, moves: ["meteorassault", "brutalswing", "furycutter", "detect"], pokeball: "pokeball"},
11366
+ ],
11363
11367
  },
11364
11368
  doduo: {
11365
11369
  learnset: {
@@ -12420,7 +12424,7 @@ export const Learnsets: {[speciesid: string]: LearnsetData} = {
12420
12424
  counter: ["7V", "3T"],
12421
12425
  curse: ["8L20", "7L12", "7V", "6L12", "5L12", "4L12", "3L13", "3S0"],
12422
12426
  darkpulse: ["8M", "8L42", "8V", "7M", "7L44", "6M", "6L44", "5T", "5L44", "4M", "4L44"],
12423
- dazzlinggleam: ["8M", "8V", "7M", "6M"],
12427
+ dazzlinggleam: ["8M", "8V", "8S7", "7M", "6M"],
12424
12428
  destinybond: ["8L54", "7L50", "7V", "6L50", "6S3", "5L50", "4L50", "3L39"],
12425
12429
  disable: ["8V"],
12426
12430
  doubleedge: ["7V", "3T"],
@@ -12490,14 +12494,14 @@ export const Learnsets: {[speciesid: string]: LearnsetData} = {
12490
12494
  secretpower: ["6M", "4M", "3M"],
12491
12495
  seismictoss: ["8V", "7V", "3T"],
12492
12496
  selfdestruct: ["8M", "8V", "7V", "3T"],
12493
- shadowball: ["8M", "8L48", "8V", "7M", "7L33", "7V", "6M", "6L33", "6S3", "6S4", "5M", "5L33", "4M", "4L33", "3M", "3L45"],
12497
+ shadowball: ["8M", "8L48", "8V", "8S7", "7M", "7L33", "7V", "6M", "6L33", "6S3", "6S4", "5M", "5L33", "4M", "4L33", "3M", "3L45"],
12494
12498
  shadowclaw: ["8M", "7M", "6M", "5M", "4M"],
12495
12499
  shadowpunch: ["8L1", "7L1", "6L25", "6S1", "6S2", "5L25", "4L25", "3L25"],
12496
12500
  skillswap: ["8M", "7T", "6T", "5T", "4M", "3M"],
12497
12501
  skittersmack: ["8T"],
12498
12502
  skullbash: ["7V"],
12499
12503
  sleeptalk: ["8M", "7M", "7V", "6M", "5T", "4M", "3T"],
12500
- sludgebomb: ["8M", "8V", "7M", "6M", "6S3", "5M", "4M", "3M"],
12504
+ sludgebomb: ["8M", "8V", "8S7", "7M", "6M", "6S3", "5M", "4M", "3M"],
12501
12505
  sludgewave: ["8M", "6S4"],
12502
12506
  smog: ["8V"],
12503
12507
  snatch: ["7T", "6T", "5T", "4M", "3M"],
@@ -12522,7 +12526,7 @@ export const Learnsets: {[speciesid: string]: LearnsetData} = {
12522
12526
  trickroom: ["8M", "7M", "6M", "5M", "4M"],
12523
12527
  uproar: ["8M", "7T", "6T", "5T", "4T"],
12524
12528
  venoshock: ["8M", "7M", "6M", "5M"],
12525
- willowisp: ["8M", "8V", "7M", "6M", "6S3", "5M", "4M"],
12529
+ willowisp: ["8M", "8V", "8S7", "7M", "6M", "6S3", "5M", "4M"],
12526
12530
  wonderroom: ["8M", "7T", "6T", "5T"],
12527
12531
  zapcannon: ["7V"],
12528
12532
  },
@@ -12534,6 +12538,7 @@ export const Learnsets: {[speciesid: string]: LearnsetData} = {
12534
12538
  {generation: 6, level: 25, shiny: true, moves: ["shadowball", "sludgewave", "confuseray", "astonish"], pokeball: "duskball"},
12535
12539
  {generation: 6, level: 50, shiny: true, gender: "M", moves: ["meanlook", "hypnosis", "psychic", "hyperbeam"], pokeball: "cherishball"},
12536
12540
  {generation: 6, level: 100, moves: ["meanlook", "hypnosis", "psychic", "hyperbeam"], pokeball: "cherishball"},
12541
+ {generation: 8, level: 80, gender: "M", nature: "Naughty", abilities: ["cursedbody"], ivs: {hp: 30, atk: 30, def: 30, spa: 31, spd: 31, spe: 31}, moves: ["shadowball", "sludgebomb", "dazzlinggleam", "willowisp"], pokeball: "pokeball"},
12537
12542
  ],
12538
12543
  },
12539
12544
  onix: {
@@ -45841,13 +45846,13 @@ export const Learnsets: {[speciesid: string]: LearnsetData} = {
45841
45846
  learnset: {
45842
45847
  agility: ["8M"],
45843
45848
  attract: ["8M", "7M", "6M", "5M", "4M"],
45844
- aurasphere: ["8M", "8L0", "7L1", "7S5", "6L1", "6S4", "5L51", "4L37", "4S0"],
45849
+ aurasphere: ["8M", "8L0", "8S6", "7L1", "7S5", "6L1", "6S4", "5L51", "4L37", "4S0"],
45845
45850
  blazekick: ["8M", "4S1"],
45846
45851
  bonerush: ["8L36", "7L29", "6L29", "5L19", "4L19", "4S1"],
45847
45852
  brickbreak: ["8M", "7M", "6M", "5M", "4M"],
45848
45853
  bulkup: ["8M", "7M", "6M", "5M", "4M"],
45849
45854
  bulldoze: ["8M", "7M", "6M", "5M"],
45850
- bulletpunch: ["5S2", "5S3"],
45855
+ bulletpunch: ["8S6", "5S2", "5S3"],
45851
45856
  calmmind: ["8M", "8L24", "7M", "7L47", "6M", "6L47", "5M", "5L47", "4M"],
45852
45857
  captivate: ["4M"],
45853
45858
  closecombat: ["8M", "8L60", "7L55", "6L1", "6S4", "5L55", "5S3", "4L42"],
@@ -45915,7 +45920,7 @@ export const Learnsets: {[speciesid: string]: LearnsetData} = {
45915
45920
  retaliate: ["8M", "6M", "5M"],
45916
45921
  return: ["7M", "6M", "5M", "4M"],
45917
45922
  revenge: ["8M"],
45918
- reversal: ["8M", "8L1"],
45923
+ reversal: ["8M", "8L1", "8S6"],
45919
45924
  roar: ["7M", "6M", "5M", "4M"],
45920
45925
  rockclimb: ["4M"],
45921
45926
  rockslide: ["8M", "7M", "6M", "5M", "4M"],
@@ -45930,7 +45935,7 @@ export const Learnsets: {[speciesid: string]: LearnsetData} = {
45930
45935
  shadowclaw: ["8M", "7M", "6M", "5M", "5S3", "4M"],
45931
45936
  sleeptalk: ["8M", "7M", "6M", "5T", "4M"],
45932
45937
  snore: ["8M", "7T", "6T", "5T", "4T"],
45933
- steelbeam: ["8T"],
45938
+ steelbeam: ["8T", "8S6"],
45934
45939
  stoneedge: ["8M", "7M", "6M", "5M", "5S3", "4M"],
45935
45940
  strength: ["6M", "5M", "4M"],
45936
45941
  substitute: ["8M", "7M", "6M", "5M", "4M"],
@@ -45953,6 +45958,7 @@ export const Learnsets: {[speciesid: string]: LearnsetData} = {
45953
45958
  {generation: 5, level: 50, gender: "M", nature: "Naughty", ivs: {atk: 31}, isHidden: true, moves: ["bulletpunch", "closecombat", "stoneedge", "shadowclaw"], pokeball: "cherishball"},
45954
45959
  {generation: 6, level: 100, nature: "Jolly", abilities: ["innerfocus"], moves: ["closecombat", "aurasphere", "flashcannon", "quickattack"], pokeball: "cherishball"},
45955
45960
  {generation: 7, level: 40, gender: "M", nature: "Serious", abilities: ["steadfast"], moves: ["aurasphere", "highjumpkick", "dragonpulse", "extremespeed"], pokeball: "pokeball"},
45961
+ {generation: 8, level: 80, gender: "M", nature: "Serious", abilities: ["innerfocus"], ivs: {hp: 31, atk: 30, def: 30, spa: 31, spd: 30, spe: 31}, moves: ["aurasphere", "bulletpunch", "reversal", "steelbeam"], pokeball: "pokeball"},
45956
45962
  ],
45957
45963
  },
45958
45964
  hippopotas: {
@@ -76822,11 +76828,11 @@ export const Learnsets: {[speciesid: string]: LearnsetData} = {
76822
76828
  dragondance: ["8M", "8L24"],
76823
76829
  dragonpulse: ["8M", "8L40", "8S0"],
76824
76830
  dragontail: ["8L1"],
76825
- dynamaxcannon: ["8L56", "8S0"],
76831
+ dynamaxcannon: ["8L56", "8S1", "8S0"],
76826
76832
  endure: ["8M"],
76827
- eternabeam: ["8L88"],
76833
+ eternabeam: ["8L88", "8S1"],
76828
76834
  facade: ["8M"],
76829
- flamethrower: ["8M", "8L48", "8S0"],
76835
+ flamethrower: ["8M", "8L48", "8S1", "8S0"],
76830
76836
  flashcannon: ["8M"],
76831
76837
  fly: ["8M"],
76832
76838
  gigaimpact: ["8M"],
@@ -76846,7 +76852,7 @@ export const Learnsets: {[speciesid: string]: LearnsetData} = {
76846
76852
  screech: ["8M"],
76847
76853
  shadowball: ["8M"],
76848
76854
  sleeptalk: ["8M"],
76849
- sludgebomb: ["8M"],
76855
+ sludgebomb: ["8M", "8S1"],
76850
76856
  sludgewave: ["8M"],
76851
76857
  snore: ["8M"],
76852
76858
  solarbeam: ["8M"],
@@ -76858,6 +76864,7 @@ export const Learnsets: {[speciesid: string]: LearnsetData} = {
76858
76864
  },
76859
76865
  eventData: [
76860
76866
  {generation: 8, level: 60, perfectIVs: 3, moves: ["crosspoison", "dragonpulse", "flamethrower", "dynamaxcannon"]},
76867
+ {generation: 8, level: 100, shiny: true, nature: "Timid", perfectIVs: 6, moves: ["eternabeam", "dynamaxcannon", "sludgebomb", "flamethrower"], pokeball: "cherishball"},
76861
76868
  ],
76862
76869
  eventOnly: true,
76863
76870
  },
@@ -51,11 +51,9 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
51
51
  tier: "NU",
52
52
  },
53
53
  caterpie: {
54
- randomBattleMoves: ["stringshot", "tackle"],
55
54
  tier: "LC",
56
55
  },
57
56
  metapod: {
58
- randomBattleMoves: ["harden", "stringshot", "tackle"],
59
57
  tier: "NFE",
60
58
  },
61
59
  butterfree: {
@@ -64,11 +62,9 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
64
62
  tier: "PU",
65
63
  },
66
64
  weedle: {
67
- randomBattleMoves: ["poisonsting", "stringshot"],
68
65
  tier: "LC",
69
66
  },
70
67
  kakuna: {
71
- randomBattleMoves: ["poisonsting", "stringshot"],
72
68
  tier: "NFE",
73
69
  },
74
70
  beedrill: {
@@ -655,7 +651,6 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
655
651
  tier: "OU",
656
652
  },
657
653
  magikarp: {
658
- randomBattleMoves: ["splash", "tackle"],
659
654
  tier: "LC",
660
655
  },
661
656
  gyarados: {
@@ -268,30 +268,42 @@ export const Moves: {[k: string]: ModdedMoveData} = {
268
268
  },
269
269
  },
270
270
  disable: {
271
- inherit: true,
271
+ num: 50,
272
+ accuracy: 55,
273
+ basePower: 0,
274
+ category: "Status",
275
+ name: "Disable",
276
+ pp: 20,
277
+ priority: 0,
278
+ flags: {protect: 1, mirror: 1, bypasssub: 1},
279
+ volatileStatus: 'disable',
280
+ onTryHit(target) {
281
+ // This function should not return if the checks are met. Adding && undefined ensures this happens.
282
+ return target.moveSlots.some(ms => ms.pp > 0) &&
283
+ !('disable' in target.volatiles) &&
284
+ undefined;
285
+ },
272
286
  condition: {
273
- duration: 4,
274
- durationCallback(target, source, effect) {
275
- const duration = this.random(1, 7);
276
- return duration;
277
- },
278
287
  onStart(pokemon) {
279
- if (!this.queue.willMove(pokemon)) {
280
- this.effectState.duration++;
281
- }
282
- const moves = pokemon.moves;
283
- const move = this.dex.moves.get(this.sample(moves));
284
- this.add('-start', pokemon, 'Disable', move.name);
285
- this.effectState.move = move.id;
286
- return;
288
+ // disable can only select moves that have pp > 0, hence the onTryHit modification
289
+ const moveSlot = this.sample(pokemon.moveSlots.filter(ms => ms.pp > 0));
290
+ this.add('-start', pokemon, 'Disable', moveSlot.move);
291
+ this.effectState.move = moveSlot.id;
292
+ // 1-8 turns (which will in effect translate to 0-7 missed turns for the target)
293
+ this.effectState.time = this.random(1, 9);
287
294
  },
288
- onResidualOrder: 14,
289
295
  onEnd(pokemon) {
290
296
  this.add('-end', pokemon, 'Disable');
291
297
  },
292
- onBeforeMove(attacker, defender, move) {
298
+ onBeforeMovePriority: 7,
299
+ onBeforeMove(pokemon, target, move) {
300
+ pokemon.volatiles['disable'].time--;
301
+ if (!pokemon.volatiles['disable'].time) {
302
+ pokemon.removeVolatile('disable');
303
+ return;
304
+ }
293
305
  if (move.id === this.effectState.move) {
294
- this.add('cant', attacker, 'Disable', move);
306
+ this.add('cant', pokemon, 'Disable', move);
295
307
  return false;
296
308
  }
297
309
  },
@@ -303,6 +315,9 @@ export const Moves: {[k: string]: ModdedMoveData} = {
303
315
  }
304
316
  },
305
317
  },
318
+ secondary: null,
319
+ target: "normal",
320
+ type: "Normal",
306
321
  },
307
322
  dizzypunch: {
308
323
  inherit: true,
@@ -403,19 +418,35 @@ export const Moves: {[k: string]: ModdedMoveData} = {
403
418
  this.add('-clearallboost', '[silent]');
404
419
  for (const pokemon of this.getAllActive()) {
405
420
  pokemon.clearBoosts();
406
-
407
421
  if (pokemon !== source) {
408
422
  pokemon.cureStatus(true);
409
423
  }
410
424
  if (pokemon.status === 'tox') {
411
425
  pokemon.setStatus('psn');
412
426
  }
413
- for (const id of Object.keys(pokemon.volatiles)) {
414
- if (id === 'residualdmg') {
415
- pokemon.volatiles[id].counter = 0;
427
+ // should only clear a specific set of volatiles and does not clear the toxic counter
428
+ const silentHack = '|[silent]';
429
+ const silentHackVolatiles = ['disable', 'confusion'];
430
+ const hazeVolatiles: {[key: string]: string} = {
431
+ 'disable': '',
432
+ 'confusion': '',
433
+ 'mist': 'Mist',
434
+ 'focusenergy': 'move: Focus Energy',
435
+ 'leechseed': 'move: Leech Seed',
436
+ 'lightscreen': 'Light Screen',
437
+ 'reflect': 'Reflect',
438
+ };
439
+ for (const v in hazeVolatiles) {
440
+ if (!pokemon.removeVolatile(v)) {
441
+ continue;
442
+ }
443
+ if (silentHackVolatiles.includes(v)) {
444
+ // these volatiles have their own onEnd method that prints, so to avoid
445
+ // double printing and ensure they are still silent, we need to tack on a
446
+ // silent attribute at the end
447
+ this.log[this.log.length - 1] += silentHack;
416
448
  } else {
417
- pokemon.removeVolatile(id);
418
- this.add('-end', pokemon, id, '[silent]');
449
+ this.add('-end', pokemon, hazeVolatiles[v], '[silent]');
419
450
  }
420
451
  }
421
452
  }
@@ -402,7 +402,8 @@ export const Moves: {[k: string]: ModdedMoveData} = {
402
402
  meanlook: {
403
403
  inherit: true,
404
404
  accuracy: true,
405
- ignoreAccuracy: false,
405
+ ignoreAccuracy: undefined,
406
+ ignoreEvasion: undefined,
406
407
  flags: {reflectable: 1, mirror: 1},
407
408
  },
408
409
  metronome: {
@@ -415,7 +416,8 @@ export const Moves: {[k: string]: ModdedMoveData} = {
415
416
  mimic: {
416
417
  inherit: true,
417
418
  accuracy: true,
418
- ignoreAccuracy: false,
419
+ ignoreAccuracy: undefined,
420
+ ignoreEvasion: undefined,
419
421
  noSketch: true,
420
422
  },
421
423
  mindreader: {
@@ -546,7 +548,8 @@ export const Moves: {[k: string]: ModdedMoveData} = {
546
548
  painsplit: {
547
549
  inherit: true,
548
550
  accuracy: true,
549
- ignoreAccuracy: false,
551
+ ignoreAccuracy: undefined,
552
+ ignoreEvasion: undefined,
550
553
  },
551
554
  perishsong: {
552
555
  inherit: true,
@@ -791,7 +794,8 @@ export const Moves: {[k: string]: ModdedMoveData} = {
791
794
  spiderweb: {
792
795
  inherit: true,
793
796
  accuracy: true,
794
- ignoreAccuracy: false,
797
+ ignoreAccuracy: undefined,
798
+ ignoreEvasion: undefined,
795
799
  flags: {reflectable: 1, mirror: 1},
796
800
  },
797
801
  spikes: {
@@ -966,7 +970,8 @@ export const Moves: {[k: string]: ModdedMoveData} = {
966
970
  vitalthrow: {
967
971
  inherit: true,
968
972
  accuracy: true,
969
- ignoreAccuracy: false,
973
+ ignoreAccuracy: undefined,
974
+ ignoreEvasion: undefined,
970
975
  },
971
976
  whirlwind: {
972
977
  inherit: true,
@@ -216,7 +216,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
216
216
  },
217
217
  arcanine: {
218
218
  randomBattleMoves: ["extremespeed", "fireblast", "flamethrower", "hiddenpowergrass", "rest", "sleeptalk", "toxic"],
219
- tier: "UUBL",
219
+ tier: "UU",
220
220
  },
221
221
  poliwag: {
222
222
  tier: "LC",
@@ -1033,7 +1033,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
1033
1033
  },
1034
1034
  ninjask: {
1035
1035
  randomBattleMoves: ["aerialace", "batonpass", "hiddenpowerrock", "protect", "silverwind", "substitute", "swordsdance"],
1036
- tier: "UUBL",
1036
+ tier: "UU",
1037
1037
  },
1038
1038
  shedinja: {
1039
1039
  randomBattleMoves: ["agility", "batonpass", "hiddenpowerground", "shadowball", "silverwind", "toxic"],