@pkmn/sim 0.5.10 → 0.5.13

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 (83) hide show
  1. package/README.md +5 -0
  2. package/build/config/formats.js +376 -299
  3. package/build/config/formats.js.map +1 -1
  4. package/build/data/abilities.js +9 -9
  5. package/build/data/abilities.js.map +1 -1
  6. package/build/data/aliases.js +3 -0
  7. package/build/data/aliases.js.map +1 -1
  8. package/build/data/conditions.js +8 -12
  9. package/build/data/conditions.js.map +1 -1
  10. package/build/data/formats-data.js +36 -35
  11. package/build/data/formats-data.js.map +1 -1
  12. package/build/data/items.js +1 -1
  13. package/build/data/items.js.map +1 -1
  14. package/build/data/learnsets.js +5 -4
  15. package/build/data/learnsets.js.map +1 -1
  16. package/build/data/mods/gen1/formats-data.js +6 -4
  17. package/build/data/mods/gen1/formats-data.js.map +1 -1
  18. package/build/data/mods/gen1/moves.js +2 -4
  19. package/build/data/mods/gen1/moves.js.map +1 -1
  20. package/build/data/mods/gen3/formats-data.js +2 -2
  21. package/build/data/mods/gen3/formats-data.js.map +1 -1
  22. package/build/data/mods/gen6/formats-data.js +3 -3
  23. package/build/data/mods/gen6/formats-data.js.map +1 -1
  24. package/build/data/mods/gen7/formats-data.js +1 -1
  25. package/build/data/mods/gen7/formats-data.js.map +1 -1
  26. package/build/data/moves.js +14 -12
  27. package/build/data/moves.js.map +1 -1
  28. package/build/data/pokedex.js +2 -2
  29. package/build/data/pokedex.js.map +1 -1
  30. package/build/data/rulesets.js +1 -1
  31. package/build/data/rulesets.js.map +1 -1
  32. package/build/data/tags.js +4 -4
  33. package/build/data/tags.js.map +1 -1
  34. package/build/data/text/moves.js +1 -0
  35. package/build/data/text/moves.js.map +1 -1
  36. package/build/sim/battle-actions.js +0 -6
  37. package/build/sim/battle-actions.js.map +1 -1
  38. package/build/sim/battle-queue.js +1 -3
  39. package/build/sim/battle-queue.js.map +1 -1
  40. package/build/sim/battle.js +13 -11
  41. package/build/sim/battle.js.map +1 -1
  42. package/build/sim/dex-conditions.js +11 -3
  43. package/build/sim/dex-conditions.js.map +1 -1
  44. package/build/sim/dex-data.js +2 -0
  45. package/build/sim/dex-data.js.map +1 -1
  46. package/build/sim/dex-formats.js +1 -0
  47. package/build/sim/dex-formats.js.map +1 -1
  48. package/build/sim/dex-items.js +1 -0
  49. package/build/sim/dex-items.js.map +1 -1
  50. package/build/sim/dex-moves.js +1 -0
  51. package/build/sim/dex-moves.js.map +1 -1
  52. package/build/sim/dex-species.js +1 -0
  53. package/build/sim/dex-species.js.map +1 -1
  54. package/build/sim/team-validator.js +1 -1
  55. package/build/sim/team-validator.js.map +1 -1
  56. package/config/formats.ts +363 -283
  57. package/data/abilities.ts +9 -9
  58. package/data/aliases.ts +3 -0
  59. package/data/conditions.ts +8 -10
  60. package/data/formats-data.ts +36 -35
  61. package/data/items.ts +1 -1
  62. package/data/learnsets.ts +5 -4
  63. package/data/mods/gen1/formats-data.ts +6 -4
  64. package/data/mods/gen1/moves.ts +2 -4
  65. package/data/mods/gen3/formats-data.ts +2 -2
  66. package/data/mods/gen6/formats-data.ts +3 -3
  67. package/data/mods/gen7/formats-data.ts +1 -1
  68. package/data/moves.ts +13 -12
  69. package/data/pokedex.ts +2 -2
  70. package/data/rulesets.ts +1 -1
  71. package/data/tags.ts +4 -4
  72. package/data/text/moves.ts +2 -0
  73. package/package.json +3 -3
  74. package/sim/battle-actions.ts +0 -7
  75. package/sim/battle-queue.ts +1 -3
  76. package/sim/battle.ts +4 -1
  77. package/sim/dex-conditions.ts +10 -3
  78. package/sim/dex-data.ts +2 -0
  79. package/sim/dex-formats.ts +1 -0
  80. package/sim/dex-items.ts +1 -0
  81. package/sim/dex-moves.ts +1 -0
  82. package/sim/dex-species.ts +1 -0
  83. package/sim/team-validator.ts +1 -1
package/data/abilities.ts CHANGED
@@ -615,7 +615,7 @@ export const Abilities: {[abilityid: string]: AbilityData} = {
615
615
  }
616
616
  },
617
617
  onAnyDamage(damage, target, source, effect) {
618
- if (effect && effect.id === 'aftermath') {
618
+ if (effect && effect.name === 'Aftermath') {
619
619
  return false;
620
620
  }
621
621
  },
@@ -1695,7 +1695,7 @@ export const Abilities: {[abilityid: string]: AbilityData} = {
1695
1695
  if (status.id === 'flinch') return null;
1696
1696
  },
1697
1697
  onBoost(boost, target, source, effect) {
1698
- if (effect.id === 'intimidate') {
1698
+ if (effect.name === 'Intimidate') {
1699
1699
  delete boost.atk;
1700
1700
  this.add('-fail', target, 'unboost', 'Attack', '[from] ability: Inner Focus', '[of] ' + target);
1701
1701
  }
@@ -1837,7 +1837,7 @@ export const Abilities: {[abilityid: string]: AbilityData} = {
1837
1837
  },
1838
1838
  libero: {
1839
1839
  onPrepareHit(source, target, move) {
1840
- if (move.hasBounced || move.sourceEffect === 'snatch') return;
1840
+ if (move.hasBounced || move.isFutureMove || move.sourceEffect === 'snatch') return;
1841
1841
  const type = move.type;
1842
1842
  if (type && type !== '???' && source.getTypes().join() !== type) {
1843
1843
  if (!source.setType(type)) return;
@@ -2124,7 +2124,7 @@ export const Abilities: {[abilityid: string]: AbilityData} = {
2124
2124
  mirrorarmor: {
2125
2125
  onBoost(boost, target, source, effect) {
2126
2126
  // Don't bounce self stat changes, or boosts that have already bounced
2127
- if (target === source || !boost || effect.id === 'mirrorarmor') return;
2127
+ if (target === source || !boost || effect.name === 'Mirror Armor') return;
2128
2128
  let b: BoostID;
2129
2129
  for (b in boost) {
2130
2130
  if (boost[b]! < 0) {
@@ -2451,7 +2451,7 @@ export const Abilities: {[abilityid: string]: AbilityData} = {
2451
2451
  }
2452
2452
  },
2453
2453
  onBoost(boost, target, source, effect) {
2454
- if (effect.id === 'intimidate') {
2454
+ if (effect.name === 'Intimidate') {
2455
2455
  delete boost.atk;
2456
2456
  this.add('-fail', target, 'unboost', 'Attack', '[from] ability: Oblivious', '[of] ' + target);
2457
2457
  }
@@ -2512,7 +2512,7 @@ export const Abilities: {[abilityid: string]: AbilityData} = {
2512
2512
  }
2513
2513
  },
2514
2514
  onBoost(boost, target, source, effect) {
2515
- if (effect.id === 'intimidate') {
2515
+ if (effect.name === 'Intimidate') {
2516
2516
  delete boost.atk;
2517
2517
  this.add('-fail', target, 'unboost', 'Attack', '[from] ability: Own Tempo', '[of] ' + target);
2518
2518
  }
@@ -2831,7 +2831,7 @@ export const Abilities: {[abilityid: string]: AbilityData} = {
2831
2831
  },
2832
2832
  protean: {
2833
2833
  onPrepareHit(source, target, move) {
2834
- if (move.hasBounced || move.sourceEffect === 'snatch') return;
2834
+ if (move.hasBounced || move.isFutureMove || move.sourceEffect === 'snatch') return;
2835
2835
  const type = move.type;
2836
2836
  if (type && type !== '???' && source.getTypes().join() !== type) {
2837
2837
  if (!source.setType(type)) return;
@@ -3002,7 +3002,7 @@ export const Abilities: {[abilityid: string]: AbilityData} = {
3002
3002
  ripen: {
3003
3003
  onTryHeal(damage, target, source, effect) {
3004
3004
  if (!effect) return;
3005
- if (effect.id === 'berryjuice' || effect.id === 'leftovers') {
3005
+ if (effect.name === 'Berry Juice' || effect.name === 'Leftovers') {
3006
3006
  this.add('-activate', target, 'ability: Ripen');
3007
3007
  }
3008
3008
  if ((effect as Item).isBerry) return this.chainModify(2);
@@ -3218,7 +3218,7 @@ export const Abilities: {[abilityid: string]: AbilityData} = {
3218
3218
  }
3219
3219
  },
3220
3220
  onBoost(boost, target, source, effect) {
3221
- if (effect.id === 'intimidate') {
3221
+ if (effect.name === 'Intimidate') {
3222
3222
  delete boost.atk;
3223
3223
  this.add('-fail', target, 'unboost', 'Attack', '[from] ability: Scrappy', '[of] ' + target);
3224
3224
  }
package/data/aliases.ts CHANGED
@@ -67,6 +67,9 @@ export const Aliases: {[alias: string]: string} = {
67
67
  gen6mono: "[Gen 6] Monotype",
68
68
  gen6ag: "[Gen 6] Anything Goes",
69
69
  crossevo: "[Gen 8] Cross Evolution",
70
+ mayhem: "[Gen 8] Random Battle Mayhem",
71
+ omotm: "[Gen 8] Sketchmons",
72
+ lcotm: "[Gen 8] Flipped",
70
73
 
71
74
  // mega evos
72
75
  fabio: "Ampharos-Mega",
@@ -478,7 +478,7 @@ export const Conditions: {[k: string]: ConditionData} = {
478
478
  onFieldStart(field, source, effect) {
479
479
  if (effect?.effectType === 'Ability') {
480
480
  if (this.gen <= 5) this.effectState.duration = 0;
481
- this.add('-weather', 'RainDance', '[from] ability: ' + effect, '[of] ' + source);
481
+ this.add('-weather', 'RainDance', '[from] ability: ' + effect.name, '[of] ' + source);
482
482
  } else {
483
483
  this.add('-weather', 'RainDance');
484
484
  }
@@ -513,7 +513,7 @@ export const Conditions: {[k: string]: ConditionData} = {
513
513
  }
514
514
  },
515
515
  onFieldStart(field, source, effect) {
516
- this.add('-weather', 'PrimordialSea', '[from] ability: ' + effect, '[of] ' + source);
516
+ this.add('-weather', 'PrimordialSea', '[from] ability: ' + effect.name, '[of] ' + source);
517
517
  },
518
518
  onFieldResidualOrder: 1,
519
519
  onFieldResidual() {
@@ -548,7 +548,7 @@ export const Conditions: {[k: string]: ConditionData} = {
548
548
  onFieldStart(battle, source, effect) {
549
549
  if (effect?.effectType === 'Ability') {
550
550
  if (this.gen <= 5) this.effectState.duration = 0;
551
- this.add('-weather', 'SunnyDay', '[from] ability: ' + effect, '[of] ' + source);
551
+ this.add('-weather', 'SunnyDay', '[from] ability: ' + effect.name, '[of] ' + source);
552
552
  } else {
553
553
  this.add('-weather', 'SunnyDay');
554
554
  }
@@ -587,7 +587,7 @@ export const Conditions: {[k: string]: ConditionData} = {
587
587
  }
588
588
  },
589
589
  onFieldStart(field, source, effect) {
590
- this.add('-weather', 'DesolateLand', '[from] ability: ' + effect, '[of] ' + source);
590
+ this.add('-weather', 'DesolateLand', '[from] ability: ' + effect.name, '[of] ' + source);
591
591
  },
592
592
  onImmunity(type, pokemon) {
593
593
  if (pokemon.hasItem('utilityumbrella')) return;
@@ -623,7 +623,7 @@ export const Conditions: {[k: string]: ConditionData} = {
623
623
  onFieldStart(field, source, effect) {
624
624
  if (effect?.effectType === 'Ability') {
625
625
  if (this.gen <= 5) this.effectState.duration = 0;
626
- this.add('-weather', 'Sandstorm', '[from] ability: ' + effect, '[of] ' + source);
626
+ this.add('-weather', 'Sandstorm', '[from] ability: ' + effect.name, '[of] ' + source);
627
627
  } else {
628
628
  this.add('-weather', 'Sandstorm');
629
629
  }
@@ -653,7 +653,7 @@ export const Conditions: {[k: string]: ConditionData} = {
653
653
  onFieldStart(field, source, effect) {
654
654
  if (effect?.effectType === 'Ability') {
655
655
  if (this.gen <= 5) this.effectState.duration = 0;
656
- this.add('-weather', 'Hail', '[from] ability: ' + effect, '[of] ' + source);
656
+ this.add('-weather', 'Hail', '[from] ability: ' + effect.name, '[of] ' + source);
657
657
  } else {
658
658
  this.add('-weather', 'Hail');
659
659
  }
@@ -682,7 +682,7 @@ export const Conditions: {[k: string]: ConditionData} = {
682
682
  }
683
683
  },
684
684
  onFieldStart(field, source, effect) {
685
- this.add('-weather', 'DeltaStream', '[from] ability: ' + effect, '[of] ' + source);
685
+ this.add('-weather', 'DeltaStream', '[from] ability: ' + effect.name, '[of] ' + source);
686
686
  },
687
687
  onFieldResidualOrder: 1,
688
688
  onFieldResidual() {
@@ -708,8 +708,7 @@ export const Conditions: {[k: string]: ConditionData} = {
708
708
  if (['cramorantgulping', 'cramorantgorging'].includes(pokemon.species.id) && !pokemon.transformed) {
709
709
  pokemon.formeChange('cramorant');
710
710
  }
711
- this.add('-start', pokemon, 'Dynamax');
712
- if (pokemon.gigantamax) this.add('-formechange', pokemon, pokemon.species.name + '-Gmax');
711
+ this.add('-start', pokemon, 'Dynamax', pokemon.gigantamax ? 'Gmax' : '');
713
712
  if (pokemon.baseSpecies.name === 'Shedinja') return;
714
713
 
715
714
  // Changes based on dynamax level, 2 is max (at LVL 10)
@@ -739,7 +738,6 @@ export const Conditions: {[k: string]: ConditionData} = {
739
738
  onResidualPriority: -100,
740
739
  onEnd(pokemon) {
741
740
  this.add('-end', pokemon, 'Dynamax');
742
- if (pokemon.gigantamax) this.add('-formechange', pokemon, pokemon.species.name);
743
741
  if (pokemon.baseSpecies.name === 'Shedinja') return;
744
742
  pokemon.hp = pokemon.getUndynamaxedHP();
745
743
  pokemon.maxhp = pokemon.baseMaxhp;
@@ -64,7 +64,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
64
64
  randomDoubleBattleMoves: ["icebeam", "muddywater", "protect", "shellsmash"],
65
65
  randomDoubleBattleLevel: 80,
66
66
  tier: "NU",
67
- doublesTier: "DOU",
67
+ doublesTier: "DUU",
68
68
  },
69
69
  blastoisemega: {
70
70
  isNonstandard: "Past",
@@ -479,7 +479,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
479
479
  randomBattleLevel: 86,
480
480
  randomDoubleBattleMoves: ["closecombat", "fakeout", "ironhead", "lashout", "protect", "uturn"],
481
481
  randomDoubleBattleLevel: 88,
482
- tier: "(PU)",
482
+ tier: "PU",
483
483
  doublesTier: "(DUU)",
484
484
  },
485
485
  psyduck: {
@@ -491,7 +491,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
491
491
  randomDoubleBattleMoves: ["calmmind", "encore", "icebeam", "muddywater", "protect"],
492
492
  randomDoubleBattleLevel: 88,
493
493
  tier: "(PU)",
494
- doublesTier: "DUU",
494
+ doublesTier: "(DUU)",
495
495
  },
496
496
  mankey: {
497
497
  isNonstandard: "Past",
@@ -571,7 +571,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
571
571
  randomBattleLevel: 82,
572
572
  randomDoubleBattleMoves: ["bulletpunch", "closecombat", "facade", "knockoff", "protect"],
573
573
  randomDoubleBattleLevel: 88,
574
- tier: "PUBL",
574
+ tier: "NU",
575
575
  doublesTier: "(DUU)",
576
576
  },
577
577
  machampgmax: {
@@ -694,7 +694,8 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
694
694
  tier: "LC",
695
695
  },
696
696
  magneton: {
697
- tier: "NFE",
697
+ tier: "PU",
698
+ doublesTier: "NFE",
698
699
  },
699
700
  magnezone: {
700
701
  randomBattleMoves: ["bodypress", "flashcannon", "mirrorcoat", "thunderbolt", "voltswitch"],
@@ -917,7 +918,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
917
918
  randomBattleLevel: 85,
918
919
  randomDoubleBattleMoves: ["closecombat", "coaching", "fakeout", "helpinghand", "rapidspin", "suckerpunch", "tripleaxel"],
919
920
  randomDoubleBattleLevel: 88,
920
- tier: "PU",
921
+ tier: "NU",
921
922
  doublesTier: "DUU",
922
923
  },
923
924
  lickitung: {
@@ -1083,7 +1084,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
1083
1084
  randomDoubleBattleMoves: ["bugbite", "bulletpunch", "dualwingbeat", "feint", "protect", "superpower", "swordsdance", "uturn"],
1084
1085
  randomDoubleBattleLevel: 80,
1085
1086
  randomBattleNoDynamaxMoves: ["bulletpunch", "knockoff", "roost", "superpower", "swordsdance", "uturn"],
1086
- tier: "OU",
1087
+ tier: "UU",
1087
1088
  doublesTier: "DUU",
1088
1089
  },
1089
1090
  scizormega: {
@@ -1211,7 +1212,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
1211
1212
  randomDoubleBattleMoves: ["faketears", "protect", "shadowball", "thunderbolt", "thunderwave"],
1212
1213
  randomDoubleBattleLevel: 86,
1213
1214
  tier: "PU",
1214
- doublesTier: "(DUU)",
1215
+ doublesTier: "DUU",
1215
1216
  },
1216
1217
  flareon: {
1217
1218
  randomBattleMoves: ["facade", "flamecharge", "flareblitz", "quickattack", "superpower"],
@@ -1226,7 +1227,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
1226
1227
  randomBattleLevel: 82,
1227
1228
  randomDoubleBattleMoves: ["calmmind", "dazzlinggleam", "morningsun", "protect", "psychic", "shadowball"],
1228
1229
  randomDoubleBattleLevel: 84,
1229
- tier: "PU",
1230
+ tier: "PUBL",
1230
1231
  doublesTier: "(DUU)",
1231
1232
  },
1232
1233
  umbreon: {
@@ -1259,7 +1260,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
1259
1260
  randomDoubleBattleMoves: ["calmmind", "hypervoice", "mysticalfire", "protect", "psyshock"],
1260
1261
  randomDoubleBattleLevel: 80,
1261
1262
  tier: "NU",
1262
- doublesTier: "(DUU)",
1263
+ doublesTier: "DUU",
1263
1264
  },
1264
1265
  porygon: {
1265
1266
  tier: "LC",
@@ -1364,7 +1365,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
1364
1365
  randomDoubleBattleMoves: ["bravebird", "bulkup", "closecombat", "throatchop", "thunderouskick", "uturn"],
1365
1366
  randomDoubleBattleLevel: 76,
1366
1367
  tier: "OU",
1367
- doublesTier: "DOU",
1368
+ doublesTier: "DUU",
1368
1369
  },
1369
1370
  moltres: {
1370
1371
  randomBattleMoves: ["airslash", "defog", "fireblast", "roost", "uturn"],
@@ -1564,7 +1565,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
1564
1565
  randomDoubleBattleMoves: ["aquajet", "knockoff", "liquidation", "playrough", "protect"],
1565
1566
  randomDoubleBattleLevel: 87,
1566
1567
  tier: "UU",
1567
- doublesTier: "DUU",
1568
+ doublesTier: "(DUU)",
1568
1569
  },
1569
1570
  bonsly: {
1570
1571
  tier: "LC",
@@ -2352,7 +2353,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
2352
2353
  randomBattleLevel: 86,
2353
2354
  randomDoubleBattleMoves: ["bodypress", "earthpower", "fireblast", "heatwave", "protect", "solarbeam", "willowisp"],
2354
2355
  randomDoubleBattleLevel: 84,
2355
- tier: "(PU)",
2356
+ tier: "UU",
2356
2357
  doublesTier: "DOU",
2357
2358
  },
2358
2359
  spoink: {
@@ -2493,7 +2494,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
2493
2494
  randomDoubleBattleMoves: ["coil", "hypnosis", "muddywater", "recover"],
2494
2495
  randomDoubleBattleLevel: 80,
2495
2496
  tier: "RU",
2496
- doublesTier: "DUU",
2497
+ doublesTier: "DOU",
2497
2498
  },
2498
2499
  castform: {
2499
2500
  isNonstandard: "Past",
@@ -2584,7 +2585,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
2584
2585
  randomBattleLevel: 84,
2585
2586
  randomDoubleBattleMoves: ["destinybond", "icebeam", "icywind", "protect", "shadowball", "willowisp"],
2586
2587
  randomDoubleBattleLevel: 88,
2587
- tier: "PU",
2588
+ tier: "(PU)",
2588
2589
  doublesTier: "(DUU)",
2589
2590
  },
2590
2591
  spheal: {
@@ -2932,7 +2933,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
2932
2933
  randomDoubleBattleMoves: ["clearsmog", "earthpower", "icywind", "protect", "recover", "scald", "yawn"],
2933
2934
  randomDoubleBattleLevel: 80,
2934
2935
  tier: "RU",
2935
- doublesTier: "DUU",
2936
+ doublesTier: "DOU",
2936
2937
  },
2937
2938
  drifloon: {
2938
2939
  tier: "NFE",
@@ -3043,7 +3044,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
3043
3044
  randomBattleLevel: 80,
3044
3045
  randomDoubleBattleMoves: ["highhorsepower", "protect", "rockslide", "slackoff", "stealthrock", "whirlwind", "yawn"],
3045
3046
  randomDoubleBattleLevel: 88,
3046
- tier: "OU",
3047
+ tier: "UU",
3047
3048
  doublesTier: "(DUU)",
3048
3049
  },
3049
3050
  skorupi: {
@@ -3205,7 +3206,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
3205
3206
  randomDoubleBattleMoves: ["bodyslam", "knockoff", "protect", "thunderwave"],
3206
3207
  randomDoubleBattleLevel: 86,
3207
3208
  tier: "(PU)",
3208
- doublesTier: "DUU",
3209
+ doublesTier: "(DUU)",
3209
3210
  },
3210
3211
  giratina: {
3211
3212
  randomBattleMoves: ["hex", "rest", "sleeptalk", "toxic", "willowisp"],
@@ -3637,7 +3638,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
3637
3638
  randomBattleLevel: 80,
3638
3639
  randomDoubleBattleMoves: ["earthquake", "flareblitz", "rockslide", "superpower", "uturn"],
3639
3640
  randomDoubleBattleLevel: 82,
3640
- tier: "RU",
3641
+ tier: "UU",
3641
3642
  doublesTier: "(DUU)",
3642
3643
  },
3643
3644
  darmanitangalar: {
@@ -3738,7 +3739,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
3738
3739
  tier: "LC",
3739
3740
  },
3740
3741
  garbodor: {
3741
- tier: "NU",
3742
+ tier: "PU",
3742
3743
  doublesTier: "(DUU)",
3743
3744
  },
3744
3745
  garbodorgmax: {
@@ -3775,7 +3776,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
3775
3776
  randomBattleLevel: 84,
3776
3777
  randomDoubleBattleMoves: ["bulletseed", "knockoff", "protect", "rockblast", "tailslap", "tripleaxel", "uturn"],
3777
3778
  randomDoubleBattleLevel: 86,
3778
- tier: "(PU)",
3779
+ tier: "PU",
3779
3780
  doublesTier: "(DUU)",
3780
3781
  },
3781
3782
  gothita: {
@@ -4137,7 +4138,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
4137
4138
  randomBattleLevel: 78,
4138
4139
  randomDoubleBattleMoves: ["closecombat", "ironhead", "protect", "stoneedge", "swordsdance", "thunderwave"],
4139
4140
  randomDoubleBattleLevel: 84,
4140
- tier: "RU",
4141
+ tier: "UU",
4141
4142
  doublesTier: "(DUU)",
4142
4143
  },
4143
4144
  terrakion: {
@@ -4612,7 +4613,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
4612
4613
  randomDoubleBattleMoves: ["dazzlinggleam", "foulplay", "spikes", "thunderwave"],
4613
4614
  randomDoubleBattleLevel: 84,
4614
4615
  tier: "RU",
4615
- doublesTier: "DUU",
4616
+ doublesTier: "(DUU)",
4616
4617
  },
4617
4618
  phantump: {
4618
4619
  tier: "LC",
@@ -4708,7 +4709,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
4708
4709
  tier: "Illegal",
4709
4710
  },
4710
4711
  yveltal: {
4711
- randomBattleMoves: ["darkpulse", "defog", "heatwave", "knockoff", "oblivionwing", "roost", "suckerpunch", "taunt"],
4712
+ randomBattleMoves: ["defog", "heatwave", "knockoff", "oblivionwing", "roost", "suckerpunch", "taunt"],
4712
4713
  randomBattleLevel: 69,
4713
4714
  randomDoubleBattleMoves: ["darkpulse", "heatwave", "knockoff", "oblivionwing", "roost", "suckerpunch", "tailwind", "uturn"],
4714
4715
  randomDoubleBattleLevel: 71,
@@ -4760,7 +4761,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
4760
4761
  randomBattleLevel: 80,
4761
4762
  randomDoubleBattleMoves: ["earthpower", "heatwave", "protect", "sludgebomb", "steameruption"],
4762
4763
  randomDoubleBattleLevel: 80,
4763
- tier: "RU",
4764
+ tier: "OU",
4764
4765
  doublesTier: "DOU",
4765
4766
  },
4766
4767
  rowlet: {
@@ -4922,7 +4923,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
4922
4923
  doublesTier: "(DUU)",
4923
4924
  },
4924
4925
  wishiwashi: {
4925
- tier: "(PU)",
4926
+ tier: "PU",
4926
4927
  doublesTier: "(DUU)",
4927
4928
  },
4928
4929
  wishiwashischool: {
@@ -4962,7 +4963,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
4962
4963
  randomDoubleBattleMoves: ["leechlife", "liquidation", "lunge", "protect", "stickyweb", "wideguard"],
4963
4964
  randomDoubleBattleLevel: 84,
4964
4965
  tier: "NU",
4965
- doublesTier: "(DUU)",
4966
+ doublesTier: "DUU",
4966
4967
  },
4967
4968
  araquanidtotem: {
4968
4969
  isNonstandard: "Past",
@@ -5039,7 +5040,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
5039
5040
  randomBattleLevel: 86,
5040
5041
  randomDoubleBattleMoves: ["defog", "drainingkiss", "floralhealing", "gigadrain", "helpinghand", "protect"],
5041
5042
  randomDoubleBattleLevel: 89,
5042
- tier: "NU",
5043
+ tier: "PU",
5043
5044
  doublesTier: "DUU",
5044
5045
  },
5045
5046
  oranguru: {
@@ -5383,7 +5384,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
5383
5384
  randomDoubleBattleMoves: ["grassknot", "meteorbeam", "protect", "sludgebomb", "thunderbolt"],
5384
5385
  randomDoubleBattleLevel: 81,
5385
5386
  tier: "UU",
5386
- doublesTier: "DUU",
5387
+ doublesTier: "(DUU)",
5387
5388
  },
5388
5389
  buzzwole: {
5389
5390
  randomBattleMoves: ["closecombat", "darkestlariat", "dualwingbeat", "ironhead", "leechlife", "stoneedge"],
@@ -5408,7 +5409,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
5408
5409
  randomDoubleBattleMoves: ["dazzlinggleam", "energyball", "thunderbolt", "voltswitch"],
5409
5410
  randomDoubleBattleLevel: 79,
5410
5411
  tier: "RU",
5411
- doublesTier: "DUU",
5412
+ doublesTier: "(DUU)",
5412
5413
  },
5413
5414
  celesteela: {
5414
5415
  randomBattleMoves: ["airslash", "earthquake", "fireblast", "flashcannon", "leechseed", "protect"],
@@ -5465,7 +5466,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
5465
5466
  },
5466
5467
  magearna: {
5467
5468
  randomBattleMoves: ["agility", "calmmind", "flashcannon", "fleurcannon"],
5468
- randomBattleLevel: 75,
5469
+ randomBattleLevel: 76,
5469
5470
  randomDoubleBattleMoves: ["agility", "aurasphere", "dazzlinggleam", "flashcannon", "fleurcannon", "protect", "trick"],
5470
5471
  randomDoubleBattleLevel: 72,
5471
5472
  tier: "Uber",
@@ -5504,7 +5505,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
5504
5505
  randomBattleLevel: 80,
5505
5506
  randomDoubleBattleMoves: ["bodypress", "gyroball", "highhorsepower", "rockslide", "trickroom"],
5506
5507
  randomDoubleBattleLevel: 82,
5507
- tier: "RU",
5508
+ tier: "NU",
5508
5509
  doublesTier: "DOU",
5509
5510
  },
5510
5511
  blacephalon: {
@@ -5673,7 +5674,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
5673
5674
  randomBattleLevel: 90,
5674
5675
  randomDoubleBattleMoves: ["charm", "energyball", "helpinghand", "pollenpuff", "protect", "sleeppowder"],
5675
5676
  randomDoubleBattleLevel: 90,
5676
- tier: "(PU)",
5677
+ tier: "PU",
5677
5678
  doublesTier: "(DUU)",
5678
5679
  },
5679
5680
  wooloo: {
@@ -5897,7 +5898,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
5897
5898
  grimmsnarl: {
5898
5899
  randomBattleMoves: ["lightscreen", "reflect", "spiritbreak", "taunt", "thunderwave"],
5899
5900
  randomBattleLevel: 82,
5900
- tier: "RU",
5901
+ tier: "NU",
5901
5902
  doublesTier: "DUU",
5902
5903
  },
5903
5904
  grimmsnarlgmax: {
@@ -5949,7 +5950,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
5949
5950
  randomBattleLevel: 82,
5950
5951
  randomDoubleBattleMoves: ["bugbuzz", "gigadrain", "hurricane", "icebeam", "protect", "quiverdance", "wideguard"],
5951
5952
  randomDoubleBattleLevel: 88,
5952
- tier: "(PU)",
5953
+ tier: "PU",
5953
5954
  doublesTier: "(DUU)",
5954
5955
  },
5955
5956
  stonjourner: {
package/data/items.ts CHANGED
@@ -76,7 +76,7 @@ export const Items: {[itemid: string]: ItemData} = {
76
76
  if (target.boosts['spe'] === 6 || noAtkChange || noContraryAtkChange) {
77
77
  return;
78
78
  }
79
- if (effect.id === 'intimidate') {
79
+ if (effect.name === 'Intimidate') {
80
80
  target.useItem();
81
81
  }
82
82
  },
package/data/learnsets.ts CHANGED
@@ -20325,12 +20325,12 @@ export const Learnsets: {[speciesid: string]: LearnsetData} = {
20325
20325
  coaching: ["8T"],
20326
20326
  counter: ["8L55"],
20327
20327
  detect: ["8L60"],
20328
- drillpeck: ["8L35", "8S0"],
20328
+ drillpeck: ["8L35", "8S0", "8S1"],
20329
20329
  dualwingbeat: ["8T"],
20330
20330
  endure: ["8M"],
20331
20331
  facade: ["8M"],
20332
20332
  fly: ["8M"],
20333
- focusenergy: ["8M", "8L1", "8S0"],
20333
+ focusenergy: ["8M", "8L1", "8S0", "8S1"],
20334
20334
  gigaimpact: ["8M"],
20335
20335
  hurricane: ["8M"],
20336
20336
  hyperbeam: ["8M"],
@@ -20346,7 +20346,7 @@ export const Learnsets: {[speciesid: string]: LearnsetData} = {
20346
20346
  rest: ["8M"],
20347
20347
  retaliate: ["8M"],
20348
20348
  revenge: ["8M"],
20349
- reversal: ["8M", "8L70", "8S0"],
20349
+ reversal: ["8M", "8L70", "8S0", "8S1"],
20350
20350
  rocksmash: ["8L5"],
20351
20351
  round: ["8M"],
20352
20352
  scaryface: ["8M"],
@@ -20360,11 +20360,12 @@ export const Learnsets: {[speciesid: string]: LearnsetData} = {
20360
20360
  swift: ["8M"],
20361
20361
  taunt: ["8M"],
20362
20362
  throatchop: ["8M"],
20363
- thunderouskick: ["8L45", "8S0"],
20363
+ thunderouskick: ["8L45", "8S0", "8S1"],
20364
20364
  uturn: ["8M"],
20365
20365
  },
20366
20366
  eventData: [
20367
20367
  {generation: 8, level: 70, moves: ["thunderouskick", "drillpeck", "reversal", "focusenergy"]},
20368
+ {generation: 8, level: 70, shiny: true, moves: ["thunderouskick", "drillpeck", "reversal", "focusenergy"], pokeball: "cherishball"},
20368
20369
  ],
20369
20370
  eventOnly: true,
20370
20371
  },
@@ -79,21 +79,23 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
79
79
  },
80
80
  pidgey: {
81
81
  randomBattleMoves: ["agility", "doubleedge", "skyattack"],
82
- exclusiveMoves: ["mimic", "mirrormove", "reflect", "sandattack", "substitute", "toxic"],
82
+ exclusiveMoves: ["mimic", "mirrormove", "reflect", "sandattack", "substitute", "quickattack", "toxic"],
83
83
  tier: "LC",
84
84
  },
85
85
  pidgeotto: {
86
86
  randomBattleMoves: ["agility", "doubleedge", "skyattack"],
87
- exclusiveMoves: ["mimic", "mirrormove", "reflect", "sandattack", "substitute", "toxic"],
87
+ exclusiveMoves: ["mimic", "mirrormove", "reflect", "sandattack", "substitute", "quickattack", "toxic"],
88
88
  tier: "NFE",
89
89
  },
90
90
  pidgeot: {
91
91
  randomBattleMoves: ["agility", "doubleedge", "hyperbeam"],
92
- exclusiveMoves: ["mimic", "mirrormove", "reflect", "sandattack", "skyattack", "skyattack", "substitute", "toxic"],
92
+ exclusiveMoves: ["mimic", "mirrormove", "reflect", "sandattack", "skyattack", "skyattack", "substitute", "quickattack", "toxic"],
93
93
  tier: "NU",
94
94
  },
95
95
  rattata: {
96
- randomBattleMoves: ["blizzard", "bodyslam", "thunderbolt"],
96
+ randomBattleMoves: ["blizzard", "bodyslam"],
97
+ // The two Thunderbolts are not a mistake, but specifically requested
98
+ exclusiveMoves: ["thunderbolt", "thunderbolt", "quickattack"],
97
99
  essentialMove: "superfang",
98
100
  tier: "LC",
99
101
  },
@@ -196,12 +196,10 @@ export const Moves: {[k: string]: ModdedMoveData} = {
196
196
  },
197
197
  conversion: {
198
198
  inherit: true,
199
- volatileStatus: 'conversion',
200
- accuracy: true,
201
199
  target: "normal",
202
200
  onHit(target, source) {
203
- source.types = target.types;
204
- this.add('-start', source, 'typechange', source.types.join(', '), '[from] move: Conversion', '[of] ' + source);
201
+ source.setType(target.getTypes(true));
202
+ this.add('-start', source, 'typechange', source.types.join('/'), '[from] move: Conversion', '[of] ' + target);
205
203
  },
206
204
  },
207
205
  counter: {
@@ -694,7 +694,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
694
694
  tier: "NFE",
695
695
  },
696
696
  azumarill: {
697
- randomBattleMoves: ["encore", "focuspunch", "hiddenpowerghost", "hydropump", "return", "substitute"],
697
+ randomBattleMoves: ["brickbreak", "encore", "hiddenpowerghost", "hydropump", "return"],
698
698
  tier: "UU",
699
699
  },
700
700
  sudowoodo: {
@@ -835,7 +835,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
835
835
  tier: "UU",
836
836
  },
837
837
  skarmory: {
838
- randomBattleMoves: ["drillpeck", "protect", "rest", "roar", "sleeptalk", "spikes", "toxic"],
838
+ randomBattleMoves: ["doubleedge", "drillpeck", "protect", "rest", "roar", "sleeptalk", "spikes", "toxic"],
839
839
  tier: "OU",
840
840
  },
841
841
  houndour: {
@@ -2245,7 +2245,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
2245
2245
  doublesTier: "NFE",
2246
2246
  },
2247
2247
  infernape: {
2248
- randomBattleMoves: ["closecombat", "earthquake", "fireblast", "flareblitz", "grassknot", "machpunch", "nastyplot", "stealthrock", "stoneedge", "uturn", "vacuumwave"],
2248
+ randomBattleMoves: ["closecombat", "earthquake", "fireblast", "flareblitz", "grassknot", "machpunch", "stealthrock", "stoneedge", "uturn"],
2249
2249
  randomDoubleBattleMoves: ["closecombat", "fakeout", "feint", "flareblitz", "grassknot", "heatwave", "machpunch", "protect", "stoneedge", "taunt", "thunderpunch", "uturn"],
2250
2250
  tier: "UU",
2251
2251
  doublesTier: "DUU",
@@ -3279,8 +3279,8 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
3279
3279
  tier: "NFE",
3280
3280
  },
3281
3281
  haxorus: {
3282
- randomBattleMoves: ["dragondance", "earthquake", "outrage", "poisonjab", "swordsdance", "taunt"],
3283
- randomDoubleBattleMoves: ["dragonclaw", "dragondance", "earthquake", "poisonjab", "protect", "substitute", "swordsdance", "taunt"],
3282
+ randomBattleMoves: ["dragondance", "earthquake", "outrage", "poisonjab", "swordsdance"],
3283
+ randomDoubleBattleMoves: ["dragonclaw", "dragondance", "earthquake", "poisonjab", "protect", "substitute", "swordsdance"],
3284
3284
  tier: "UU",
3285
3285
  doublesTier: "(DUU)",
3286
3286
  },
@@ -405,7 +405,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
405
405
  doublesTier: "(DUU)",
406
406
  },
407
407
  politoed: {
408
- randomBattleMoves: ["encore", "hypnosis", "perishsong", "protect", "rest", "scald", "toxic"],
408
+ randomBattleMoves: ["encore", "icebeam", "protect", "rest", "scald", "toxic"],
409
409
  randomDoubleBattleMoves: ["encore", "helpinghand", "hypnosis", "icywind", "protect", "scald"],
410
410
  tier: "(PU)",
411
411
  doublesTier: "DOU",