@pkmn/sim 0.5.19 → 0.5.22

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 (91) hide show
  1. package/build/config/formats.js +354 -294
  2. package/build/config/formats.js.map +1 -1
  3. package/build/data/abilities.js +1 -3
  4. package/build/data/abilities.js.map +1 -1
  5. package/build/data/aliases.js +2 -2
  6. package/build/data/aliases.js.map +1 -1
  7. package/build/data/conditions.js +4 -1
  8. package/build/data/conditions.js.map +1 -1
  9. package/build/data/formats-data.js +16 -12
  10. package/build/data/formats-data.js.map +1 -1
  11. package/build/data/learnsets.js +29 -0
  12. package/build/data/learnsets.js.map +1 -1
  13. package/build/data/mods/gen1/conditions.js +7 -0
  14. package/build/data/mods/gen1/conditions.js.map +1 -1
  15. package/build/data/mods/gen1/formats-data.js +3 -3
  16. package/build/data/mods/gen1/formats-data.js.map +1 -1
  17. package/build/data/mods/gen1/moves.js +0 -6
  18. package/build/data/mods/gen1/moves.js.map +1 -1
  19. package/build/data/mods/gen2/conditions.js +3 -0
  20. package/build/data/mods/gen2/conditions.js.map +1 -1
  21. package/build/data/mods/gen2/learnsets.js +2 -2
  22. package/build/data/mods/gen2/learnsets.js.map +1 -1
  23. package/build/data/mods/gen2/scripts.js +16 -0
  24. package/build/data/mods/gen2/scripts.js.map +1 -1
  25. package/build/data/mods/gen3/conditions.js +3 -0
  26. package/build/data/mods/gen3/conditions.js.map +1 -1
  27. package/build/data/mods/gen4/abilities.js +1 -1
  28. package/build/data/mods/gen4/abilities.js.map +1 -1
  29. package/build/data/mods/gen4/conditions.js +3 -0
  30. package/build/data/mods/gen4/conditions.js.map +1 -1
  31. package/build/data/mods/gen4/formats-data.js +1 -1
  32. package/build/data/mods/gen4/formats-data.js.map +1 -1
  33. package/build/data/mods/gen4/moves.js +9 -2
  34. package/build/data/mods/gen4/moves.js.map +1 -1
  35. package/build/data/mods/gen5/moves.js +4 -7
  36. package/build/data/mods/gen5/moves.js.map +1 -1
  37. package/build/data/mods/gen5/pokedex.js +24 -0
  38. package/build/data/mods/gen5/pokedex.js.map +1 -1
  39. package/build/data/mods/gen6/formats-data.js +1 -1
  40. package/build/data/mods/gen6/formats-data.js.map +1 -1
  41. package/build/data/mods/gen6/learnsets.js +0 -75
  42. package/build/data/mods/gen6/learnsets.js.map +1 -1
  43. package/build/data/mods/gen7/abilities.js +8 -0
  44. package/build/data/mods/gen7/abilities.js.map +1 -1
  45. package/build/data/mods/gen7/moves.js +2 -2
  46. package/build/data/mods/gen7/moves.js.map +1 -1
  47. package/build/data/moves.js +8 -3
  48. package/build/data/moves.js.map +1 -1
  49. package/build/data/pokedex.js +12 -0
  50. package/build/data/pokedex.js.map +1 -1
  51. package/build/data/rulesets.js +68 -0
  52. package/build/data/rulesets.js.map +1 -1
  53. package/build/data/tags.js +2 -2
  54. package/build/data/tags.js.map +1 -1
  55. package/build/sim/battle.js +1 -7
  56. package/build/sim/battle.js.map +1 -1
  57. package/build/sim/pokemon.js +8 -2
  58. package/build/sim/pokemon.js.map +1 -1
  59. package/build/sim/side.js +21 -0
  60. package/build/sim/side.js.map +1 -1
  61. package/config/formats.ts +346 -291
  62. package/data/abilities.ts +1 -3
  63. package/data/aliases.ts +2 -2
  64. package/data/conditions.ts +5 -1
  65. package/data/formats-data.ts +16 -12
  66. package/data/learnsets.ts +29 -0
  67. package/data/mods/gen1/conditions.ts +8 -0
  68. package/data/mods/gen1/formats-data.ts +3 -3
  69. package/data/mods/gen1/moves.ts +0 -4
  70. package/data/mods/gen2/conditions.ts +4 -0
  71. package/data/mods/gen2/learnsets.ts +2 -2
  72. package/data/mods/gen2/scripts.ts +16 -0
  73. package/data/mods/gen3/conditions.ts +4 -0
  74. package/data/mods/gen4/abilities.ts +1 -1
  75. package/data/mods/gen4/conditions.ts +4 -0
  76. package/data/mods/gen4/formats-data.ts +1 -1
  77. package/data/mods/gen4/moves.ts +9 -2
  78. package/data/mods/gen5/moves.ts +4 -7
  79. package/data/mods/gen5/pokedex.ts +24 -0
  80. package/data/mods/gen6/formats-data.ts +1 -1
  81. package/data/mods/gen6/learnsets.ts +0 -75
  82. package/data/mods/gen7/abilities.ts +8 -0
  83. package/data/mods/gen7/moves.ts +2 -2
  84. package/data/moves.ts +8 -3
  85. package/data/pokedex.ts +12 -0
  86. package/data/rulesets.ts +64 -0
  87. package/data/tags.ts +2 -2
  88. package/package.json +1 -1
  89. package/sim/battle.ts +1 -7
  90. package/sim/pokemon.ts +7 -2
  91. package/sim/side.ts +20 -0
package/data/abilities.ts CHANGED
@@ -642,7 +642,6 @@ export const Abilities: {[abilityid: string]: AbilityData} = {
642
642
  if (move.auraBooster !== this.effectState.target) return;
643
643
  return this.chainModify([move.hasAuraBreak ? 3072 : 5448, 4096]);
644
644
  },
645
- isBreakable: true,
646
645
  name: "Dark Aura",
647
646
  rating: 3,
648
647
  num: 186,
@@ -956,7 +955,6 @@ export const Abilities: {[abilityid: string]: AbilityData} = {
956
955
  if (move.auraBooster !== this.effectState.target) return;
957
956
  return this.chainModify([move.hasAuraBreak ? 3072 : 5448, 4096]);
958
957
  },
959
- isBreakable: true,
960
958
  name: "Fairy Aura",
961
959
  rating: 3,
962
960
  num: 187,
@@ -2326,7 +2324,7 @@ export const Abilities: {[abilityid: string]: AbilityData} = {
2326
2324
  if (pokemon.showCure === undefined) pokemon.showCure = true;
2327
2325
 
2328
2326
  if (pokemon.showCure) this.add('-curestatus', pokemon, pokemon.status, '[from] ability: Natural Cure');
2329
- pokemon.setStatus('');
2327
+ pokemon.clearStatus();
2330
2328
 
2331
2329
  // only reset .showCure if it's false
2332
2330
  // (once you know a Pokemon has Natural Cure, its cures are always known)
package/data/aliases.ts CHANGED
@@ -68,8 +68,8 @@ export const Aliases: {[alias: string]: string} = {
68
68
  gen6ag: "[Gen 6] Anything Goes",
69
69
  crossevo: "[Gen 8] Cross Evolution",
70
70
  mayhem: "[Gen 8] Random Battle Mayhem",
71
- omotm: "[Gen 8] Tier Shift",
72
- lcotm: "[Gen 8] Inverse",
71
+ omotm: "[Gen 8] Broken Record",
72
+ lcotm: "[Gen 8] Inheritance",
73
73
 
74
74
  // mega evos
75
75
  fabio: "Ampharos-Mega",
@@ -57,6 +57,10 @@ export const Conditions: {[k: string]: ConditionData} = {
57
57
  // 1-3 turns
58
58
  this.effectState.startTime = this.random(2, 5);
59
59
  this.effectState.time = this.effectState.startTime;
60
+
61
+ if (target.removeVolatile('nightmare')) {
62
+ this.add('-end', target, 'Nightmare', '[silent]');
63
+ }
60
64
  },
61
65
  onBeforeMovePriority: 10,
62
66
  onBeforeMove(pokemon, target, move) {
@@ -101,7 +105,7 @@ export const Conditions: {[k: string]: ConditionData} = {
101
105
  onModifyMove(move, pokemon) {
102
106
  if (move.flags['defrost']) {
103
107
  this.add('-curestatus', pokemon, 'frz', '[from] move: ' + move);
104
- pokemon.setStatus('');
108
+ pokemon.clearStatus();
105
109
  }
106
110
  },
107
111
  onAfterMoveSecondary(target, source, move) {
@@ -949,7 +949,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
949
949
  randomDoubleBattleMoves: ["clearsmog", "defog", "fireblast", "painsplit", "strangesteam", "toxicspikes", "willowisp"],
950
950
  randomDoubleBattleLevel: 89,
951
951
  tier: "RU",
952
- doublesTier: "DUU",
952
+ doublesTier: "(DUU)",
953
953
  },
954
954
  rhyhorn: {
955
955
  tier: "LC",
@@ -2153,7 +2153,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
2153
2153
  randomBattleLevel: 86,
2154
2154
  randomDoubleBattleMoves: ["acrobatics", "defog", "leechlife", "protect", "swordsdance"],
2155
2155
  randomDoubleBattleLevel: 88,
2156
- tier: "PU",
2156
+ tier: "(PU)",
2157
2157
  doublesTier: "(DUU)",
2158
2158
  },
2159
2159
  shedinja: {
@@ -2494,7 +2494,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
2494
2494
  randomDoubleBattleMoves: ["coil", "hypnosis", "muddywater", "recover"],
2495
2495
  randomDoubleBattleLevel: 80,
2496
2496
  tier: "RU",
2497
- doublesTier: "DOU",
2497
+ doublesTier: "DUU",
2498
2498
  },
2499
2499
  castform: {
2500
2500
  isNonstandard: "Past",
@@ -2932,7 +2932,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
2932
2932
  randomBattleLevel: 84,
2933
2933
  randomDoubleBattleMoves: ["clearsmog", "earthpower", "icywind", "protect", "recover", "scald", "yawn"],
2934
2934
  randomDoubleBattleLevel: 80,
2935
- tier: "RU",
2935
+ tier: "NU",
2936
2936
  doublesTier: "DOU",
2937
2937
  },
2938
2938
  drifloon: {
@@ -2989,7 +2989,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
2989
2989
  randomDoubleBattleMoves: ["allyswitch", "bodypress", "explosion", "ironhead", "trickroom"],
2990
2990
  randomDoubleBattleLevel: 88,
2991
2991
  tier: "RU",
2992
- doublesTier: "DUU",
2992
+ doublesTier: "(DUU)",
2993
2993
  },
2994
2994
  chatot: {
2995
2995
  isNonstandard: "Past",
@@ -4445,7 +4445,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
4445
4445
  doublade: {
4446
4446
  randomBattleMoves: ["closecombat", "ironhead", "shadowclaw", "shadowsneak", "swordsdance"],
4447
4447
  randomBattleLevel: 82,
4448
- tier: "NU",
4448
+ tier: "PU",
4449
4449
  doublesTier: "NFE",
4450
4450
  },
4451
4451
  aegislash: {
@@ -4453,7 +4453,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
4453
4453
  randomBattleLevel: 80,
4454
4454
  randomDoubleBattleMoves: ["flashcannon", "kingsshield", "shadowball", "shadowsneak"],
4455
4455
  randomDoubleBattleLevel: 84,
4456
- tier: "UU",
4456
+ tier: "UUBL",
4457
4457
  doublesTier: "(DUU)",
4458
4458
  },
4459
4459
  aegislashblade: {
@@ -4514,7 +4514,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
4514
4514
  randomBattleLevel: 86,
4515
4515
  randomDoubleBattleMoves: ["dracometeor", "dragonpulse", "focusblast", "protect", "sludgebomb"],
4516
4516
  randomDoubleBattleLevel: 86,
4517
- tier: "NU",
4517
+ tier: "NUBL",
4518
4518
  doublesTier: "(DUU)",
4519
4519
  },
4520
4520
  clauncher: {
@@ -4962,7 +4962,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
4962
4962
  randomBattleLevel: 80,
4963
4963
  randomDoubleBattleMoves: ["leechlife", "liquidation", "lunge", "protect", "stickyweb", "wideguard"],
4964
4964
  randomDoubleBattleLevel: 84,
4965
- tier: "NU",
4965
+ tier: "PU",
4966
4966
  doublesTier: "DUU",
4967
4967
  },
4968
4968
  araquanidtotem: {
@@ -5078,7 +5078,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
5078
5078
  randomBattleLevel: 86,
5079
5079
  randomDoubleBattleMoves: ["hypnosis", "protect", "scorchingsands", "shadowball", "shoreup", "stealthrock"],
5080
5080
  randomDoubleBattleLevel: 88,
5081
- tier: "PU",
5081
+ tier: "(PU)",
5082
5082
  doublesTier: "(DUU)",
5083
5083
  },
5084
5084
  pyukumuku: {
@@ -5433,7 +5433,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
5433
5433
  randomBattleLevel: 84,
5434
5434
  randomDoubleBattleMoves: ["dracometeor", "fireblast", "knockoff", "protect", "sludgebomb"],
5435
5435
  randomDoubleBattleLevel: 88,
5436
- tier: "NU",
5436
+ tier: "PU",
5437
5437
  doublesTier: "(DUU)",
5438
5438
  },
5439
5439
  necrozma: {
@@ -5594,7 +5594,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
5594
5594
  randomBattleLevel: 80,
5595
5595
  randomDoubleBattleMoves: ["airslash", "hydropump", "icebeam", "muddywater", "shadowball", "uturn"],
5596
5596
  randomDoubleBattleLevel: 84,
5597
- tier: "NU",
5597
+ tier: "PUBL",
5598
5598
  doublesTier: "(DUU)",
5599
5599
  },
5600
5600
  inteleongmax: {
@@ -6531,6 +6531,10 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
6531
6531
  isNonstandard: "CAP",
6532
6532
  tier: "CAP",
6533
6533
  },
6534
+ saharaja: {
6535
+ isNonstandard: "CAP",
6536
+ tier: "CAP",
6537
+ },
6534
6538
  pokestarsmeargle: {
6535
6539
  isNonstandard: "Custom",
6536
6540
  tier: "Illegal",
package/data/learnsets.ts CHANGED
@@ -82889,6 +82889,35 @@ export const Learnsets: {[speciesid: string]: LearnsetData} = {
82889
82889
  withdraw: ["8L5"],
82890
82890
  },
82891
82891
  },
82892
+ saharaja: {
82893
+ learnset: {
82894
+ attract: ["8M"],
82895
+ bodypress: ["8M"],
82896
+ diamondstorm: ["8L1"],
82897
+ earthquake: ["8M"],
82898
+ endure: ["8M"],
82899
+ facade: ["8M"],
82900
+ healbell: ["8L1"],
82901
+ hornleech: ["8L1"],
82902
+ leechseed: ["8L1"],
82903
+ painsplit: ["8L1"],
82904
+ poisonjab: ["8M"],
82905
+ powerwhip: ["8M"],
82906
+ protect: ["8M"],
82907
+ rapidspin: ["8L1"],
82908
+ rest: ["8M"],
82909
+ rockslide: ["8M"],
82910
+ round: ["8M"],
82911
+ sleeptalk: ["8M"],
82912
+ snore: ["8M"],
82913
+ stealthrock: ["8M"],
82914
+ substitute: ["8M"],
82915
+ suckerpunch: ["8L1"],
82916
+ swordsdance: ["8M"],
82917
+ taunt: ["8M"],
82918
+ thunderwave: ["8M"],
82919
+ },
82920
+ },
82892
82921
  pokestarsmeargle: {
82893
82922
  eventData: [
82894
82923
  {generation: 5, level: 60, gender: "M", abilities: ["owntempo"], moves: ["mindreader", "guillotine", "tailwhip", "gastroacid"]},
@@ -68,6 +68,10 @@ export const Conditions: {[id: string]: ModdedConditionData} = {
68
68
  // 1-7 turns
69
69
  this.effectState.startTime = this.random(1, 8);
70
70
  this.effectState.time = this.effectState.startTime;
71
+
72
+ if (target.removeVolatile('nightmare')) {
73
+ this.add('-end', target, 'Nightmare', '[silent]');
74
+ }
71
75
  },
72
76
  onBeforeMovePriority: 10,
73
77
  onBeforeMove(pokemon, target, move) {
@@ -78,6 +82,7 @@ export const Conditions: {[id: string]: ModdedConditionData} = {
78
82
  pokemon.lastMove = null;
79
83
  return false;
80
84
  },
85
+ onAfterMoveSelfPriority: 3,
81
86
  onAfterMoveSelf(pokemon) {
82
87
  if (pokemon.statusState.time <= 0) pokemon.cureStatus();
83
88
  },
@@ -164,6 +169,9 @@ export const Conditions: {[id: string]: ModdedConditionData} = {
164
169
  flinch: {
165
170
  name: 'flinch',
166
171
  duration: 1,
172
+ onStart(target) {
173
+ target.removeVolatile('mustrecharge');
174
+ },
167
175
  onBeforeMovePriority: 4,
168
176
  onBeforeMove(pokemon) {
169
177
  if (!this.runEvent('Flinch', pokemon)) {
@@ -370,7 +370,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
370
370
  randomBattleMoves: ["bodyslam", "sleeppowder", "stunspore"],
371
371
  essentialMove: "razorleaf",
372
372
  comboMoves: ["hyperbeam", "swordsdance"],
373
- tier: "(OU)",
373
+ tier: "UU",
374
374
  },
375
375
  tentacool: {
376
376
  randomBattleMoves: ["barrier", "hydropump", "surf"],
@@ -414,7 +414,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
414
414
  slowbro: {
415
415
  randomBattleMoves: ["amnesia", "surf", "thunderwave"],
416
416
  exclusiveMoves: ["blizzard", "psychic", "rest", "rest"],
417
- tier: "OU",
417
+ tier: "UUBL",
418
418
  },
419
419
  magnemite: {
420
420
  randomBattleMoves: ["thunder", "thunderbolt", "thunderwave"],
@@ -667,7 +667,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
667
667
  randomBattleMoves: ["bodyslam", "confuseray", "rest", "sing", "surf"],
668
668
  essentialMove: "blizzard",
669
669
  exclusiveMoves: ["thunderbolt", "thunderbolt"],
670
- tier: "(OU)",
670
+ tier: "UUBL",
671
671
  },
672
672
  ditto: {
673
673
  randomBattleMoves: ["transform"],
@@ -538,15 +538,12 @@ export const Moves: {[k: string]: ModdedMoveData} = {
538
538
  onBoost(boost, target, source, effect) {
539
539
  if (effect.effectType === 'Move' && effect.category !== 'Status') return;
540
540
  if (source && target !== source) {
541
- let showMsg = false;
542
541
  let i: BoostID;
543
542
  for (i in boost) {
544
543
  if (boost[i]! < 0) {
545
544
  delete boost[i];
546
- showMsg = true;
547
545
  }
548
546
  }
549
- if (showMsg) this.add('-activate', target, 'move: Mist');
550
547
  }
551
548
  },
552
549
  },
@@ -762,7 +759,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
762
759
  }
763
760
  // We only prevent when hp is less than one quarter.
764
761
  // If you use substitute at exactly one quarter, you faint.
765
- if (target.hp === target.maxhp / 4) target.faint();
766
762
  if (target.hp < target.maxhp / 4) {
767
763
  this.add('-fail', target, 'move: Substitute', '[weak]');
768
764
  return null;
@@ -35,6 +35,10 @@ export const Conditions: {[k: string]: ModdedConditionData} = {
35
35
  }
36
36
  // 1-6 turns
37
37
  this.effectState.time = this.random(2, 8);
38
+
39
+ if (target.removeVolatile('nightmare')) {
40
+ this.add('-end', target, 'Nightmare', '[silent]');
41
+ }
38
42
  },
39
43
  onBeforeMovePriority: 10,
40
44
  onBeforeMove(pokemon, target, move) {
@@ -7593,11 +7593,11 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = {
7593
7593
  dragonrage: ["1S0"],
7594
7594
  flail: ["2L30"],
7595
7595
  reversal: ["2S2"],
7596
- splash: ["2L1", "2S2", "2S1", "1L1"],
7596
+ splash: ["2L1", "2S2", "2S1", "1L1", "1S0"],
7597
7597
  tackle: ["2L15", "1L15"],
7598
7598
  },
7599
7599
  eventData: [
7600
- {generation: 1, level: 5, moves: ["dragonrage"], japan: true},
7600
+ {generation: 1, level: 15, moves: ["splash", "dragonrage"], japan: true},
7601
7601
  {generation: 2, level: 5, shiny: 1, moves: ["splash", "bubble"]},
7602
7602
  {generation: 2, level: 5, shiny: 1, moves: ["splash", "reversal"]},
7603
7603
  ],
@@ -160,6 +160,22 @@ export const Scripts: ModdedBattleScriptsData = {
160
160
  return false;
161
161
  }
162
162
 
163
+ if (move.target === 'all' || move.target === 'foeSide' || move.target === 'allySide' || move.target === 'allyTeam') {
164
+ if (move.target === 'all') {
165
+ hitResult = this.battle.runEvent('TryHitField', target, pokemon, move);
166
+ } else {
167
+ hitResult = this.battle.runEvent('TryHitSide', target, pokemon, move);
168
+ }
169
+ if (!hitResult) {
170
+ if (hitResult === false) {
171
+ this.battle.add('-fail', pokemon);
172
+ this.battle.attrLastMove('[still]');
173
+ }
174
+ return false;
175
+ }
176
+ return this.moveHit(target, pokemon, move);
177
+ }
178
+
163
179
  hitResult = this.battle.runEvent('Invulnerability', target, pokemon, move);
164
180
  if (hitResult === false) {
165
181
  this.battle.attrLastMove('[miss]');
@@ -12,6 +12,10 @@ export const Conditions: {[k: string]: ModdedConditionData} = {
12
12
  this.effectState.time = this.random(2, 6);
13
13
  // Turns spent using Sleep Talk/Snore immediately before switching out while asleep
14
14
  this.effectState.skippedTime = 0;
15
+
16
+ if (target.removeVolatile('nightmare')) {
17
+ this.add('-end', target, 'Nightmare', '[silent]');
18
+ }
15
19
  },
16
20
  onSwitchIn(target) {
17
21
  this.effectState.time += this.effectState.skippedTime;
@@ -281,7 +281,7 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
281
281
  // in gen 3-4, Natural Cure's curing is always known to both players
282
282
 
283
283
  this.add('-curestatus', pokemon, pokemon.status, '[from] ability: Natural Cure');
284
- pokemon.setStatus('');
284
+ pokemon.clearStatus();
285
285
  },
286
286
  },
287
287
  normalize: {
@@ -30,6 +30,10 @@ export const Conditions: {[k: string]: ModdedConditionData} = {
30
30
  }
31
31
  // 1-4 turns
32
32
  this.effectState.time = this.random(2, 6);
33
+
34
+ if (target.removeVolatile('nightmare')) {
35
+ this.add('-end', target, 'Nightmare', '[silent]');
36
+ }
33
37
  },
34
38
  onBeforeMovePriority: 10,
35
39
  onBeforeMove(pokemon, target, move) {
@@ -882,7 +882,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
882
882
  },
883
883
  mamoswine: {
884
884
  randomBattleMoves: ["earthquake", "endeavor", "iceshard", "stealthrock", "stoneedge", "superpower"],
885
- tier: "OU",
885
+ tier: "(OU)",
886
886
  },
887
887
  corsola: {
888
888
  randomBattleMoves: ["recover", "reflect", "stealthrock", "surf", "toxic"],
@@ -759,7 +759,7 @@ export const Moves: {[k: string]: ModdedMoveData} = {
759
759
  onSwitchIn(target) {
760
760
  if (target.hp > 0) {
761
761
  target.heal(target.maxhp);
762
- target.setStatus('');
762
+ target.clearStatus();
763
763
  this.add('-heal', target, target.getHealth, '[from] move: Healing Wish');
764
764
  target.side.removeSlotCondition(target, 'healingwish');
765
765
  target.lastMove = this.lastMove;
@@ -940,7 +940,7 @@ export const Moves: {[k: string]: ModdedMoveData} = {
940
940
  }
941
941
  if (target.hp > 0) {
942
942
  target.heal(target.maxhp);
943
- target.setStatus('');
943
+ target.clearStatus();
944
944
  for (const moveSlot of target.moveSlots) {
945
945
  moveSlot.pp = moveSlot.maxpp;
946
946
  }
@@ -1395,6 +1395,13 @@ export const Moves: {[k: string]: ModdedMoveData} = {
1395
1395
  inherit: true,
1396
1396
  accuracy: 90,
1397
1397
  },
1398
+ secretpower: {
1399
+ inherit: true,
1400
+ secondary: {
1401
+ chance: 30,
1402
+ status: 'par',
1403
+ },
1404
+ },
1398
1405
  sketch: {
1399
1406
  inherit: true,
1400
1407
  onHit(target, source) {
@@ -753,13 +753,10 @@ export const Moves: {[k: string]: ModdedMoveData} = {
753
753
  },
754
754
  secretpower: {
755
755
  inherit: true,
756
- condition: {
757
- duration: 1,
758
- onAfterMoveSecondarySelf(source, target, move) {
759
- if (this.randomChance(3, 10)) {
760
- this.boost({accuracy: -1}, target, source);
761
- }
762
- source.removeVolatile('secretpower');
756
+ secondary: {
757
+ chance: 30,
758
+ boosts: {
759
+ accuracy: -1,
763
760
  },
764
761
  },
765
762
  },
@@ -422,6 +422,30 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = {
422
422
  inherit: true,
423
423
  baseStats: {hp: 85, atk: 100, def: 90, spa: 45, spd: 90, spe: 80},
424
424
  },
425
+ pansage: {
426
+ inherit: true,
427
+ maleOnlyHidden: true,
428
+ },
429
+ simisage: {
430
+ inherit: true,
431
+ maleOnlyHidden: true,
432
+ },
433
+ pansear: {
434
+ inherit: true,
435
+ maleOnlyHidden: true,
436
+ },
437
+ simisear: {
438
+ inherit: true,
439
+ maleOnlyHidden: true,
440
+ },
441
+ panpour: {
442
+ inherit: true,
443
+ maleOnlyHidden: true,
444
+ },
445
+ simipour: {
446
+ inherit: true,
447
+ maleOnlyHidden: true,
448
+ },
425
449
  unfezant: {
426
450
  inherit: true,
427
451
  baseStats: {hp: 80, atk: 105, def: 80, spa: 65, spd: 55, spe: 93},
@@ -3918,7 +3918,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
3918
3918
  volcanion: {
3919
3919
  randomBattleMoves: ["earthpower", "fireblast", "hiddenpowerice", "sludgewave", "steameruption", "substitute", "superpower"],
3920
3920
  randomDoubleBattleMoves: ["earthquake", "heatwave", "protect", "rockslide", "sludgebomb", "steameruption", "substitute"],
3921
- tier: "(OU)",
3921
+ tier: "OU",
3922
3922
  doublesTier: "DOU",
3923
3923
  },
3924
3924
  };
@@ -172,79 +172,4 @@ export const Learnsets: {[k: string]: ModdedLearnsetData} = {
172
172
  zenheadbutt: ["7T", "5T"],
173
173
  },
174
174
  },
175
- crucibelle: {
176
- inherit: true,
177
- learnset: {
178
- acidarmor: ["7L32", "6L32"],
179
- astonish: ["7L1", "6L1"],
180
- attract: ["7M", "6M"],
181
- block: ["6T"],
182
- coil: ["7E", "6E"],
183
- confuseray: ["7L16", "6L16"],
184
- confusion: ["7L14", "6L14"],
185
- defensecurl: ["7E", "6E"],
186
- doubleteam: ["7M", "6M"],
187
- embargo: ["7M", "6M"],
188
- endure: ["7L1", "6L1"],
189
- explosion: ["7M", "7L60", "6M", "6L60"],
190
- facade: ["7M", "6M"],
191
- faketears: ["7L10", "6L10"],
192
- frustration: ["7M", "6M"],
193
- gigaimpact: ["7M", "6M"],
194
- grassknot: ["7M", "6M"],
195
- gravity: ["6T"],
196
- gunkshot: ["7L56", "6T", "6L56"],
197
- headsmash: ["6L1"],
198
- helpinghand: ["6T"],
199
- hex: ["7L44", "6L44"],
200
- hiddenpower: ["7M", "6M"],
201
- hyperbeam: ["7M", "6M"],
202
- infestation: ["7M", "6M"],
203
- ironhead: ["6T"],
204
- lowkick: ["6T"],
205
- magicroom: ["6T"],
206
- payback: ["7M", "6M"],
207
- poisonjab: ["7M", "6M"],
208
- protect: ["7M", "7L1", "6M", "6L1"],
209
- psybeam: ["7L40", "6L40"],
210
- psychic: ["7M", "6M"],
211
- reflect: ["7M", "7L25", "6M", "6L25"],
212
- rest: ["7M", "6M"],
213
- return: ["7M", "6M"],
214
- rockblast: ["7L52", "6L52"],
215
- rockpolish: ["7M", "6M"],
216
- rockslide: ["7M", "7L36", "6M", "6L36"],
217
- rocksmash: ["7M", "6M"],
218
- rockthrow: ["7L5", "6L5"],
219
- rocktomb: ["7M", "6M"],
220
- rollout: ["7E", "6E"],
221
- round: ["7M", "6M"],
222
- safeguard: ["7M", "6M"],
223
- sandstorm: ["7M", "6M"],
224
- secretpower: ["7M"],
225
- shadowball: ["7M", "6M"],
226
- skillswap: ["6T"],
227
- sleeptalk: ["7M", "6M"],
228
- sludge: ["7L28", "6L28"],
229
- sludgebomb: ["7M", "6M"],
230
- sludgewave: ["7M", "6M"],
231
- smackdown: ["7M", "7L23", "6M", "6L23"],
232
- snatch: ["6T"],
233
- snore: ["6T"],
234
- stealthrock: ["6T"],
235
- stoneedge: ["7M", "6M"],
236
- substitute: ["7M", "6M"],
237
- swagger: ["7M", "6M"],
238
- torment: ["7M", "7L48", "6M", "6L48"],
239
- toxic: ["7M", "7L7", "6M", "6L7"],
240
- toxicspikes: ["7L19", "6L19"],
241
- trick: ["6T"],
242
- uturn: ["7M", "6M"],
243
- venoshock: ["7M", "6M"],
244
- withdraw: ["7L1", "6L1"],
245
- wonderroom: ["6T"],
246
- woodhammer: ["7E", "6E"],
247
- zenheadbutt: ["6T"],
248
- },
249
- },
250
175
  };
@@ -8,6 +8,14 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
8
8
  }
9
9
  },
10
10
  },
11
+ darkaura: {
12
+ inherit: true,
13
+ isBreakable: true,
14
+ },
15
+ fairyaura: {
16
+ inherit: true,
17
+ isBreakable: true,
18
+ },
11
19
  innerfocus: {
12
20
  inherit: true,
13
21
  rating: 1,
@@ -381,7 +381,7 @@ export const Moves: {[k: string]: ModdedMoveData} = {
381
381
  onSwitchIn(target) {
382
382
  if (!target.fainted) {
383
383
  target.heal(target.maxhp);
384
- target.setStatus('');
384
+ target.clearStatus();
385
385
  this.add('-heal', target, target.getHealth, '[from] move: Healing Wish');
386
386
  target.side.removeSlotCondition(target, 'healingwish');
387
387
  }
@@ -608,7 +608,7 @@ export const Moves: {[k: string]: ModdedMoveData} = {
608
608
  onSwitchIn(target) {
609
609
  if (!target.fainted) {
610
610
  target.heal(target.maxhp);
611
- target.setStatus('');
611
+ target.clearStatus();
612
612
  for (const moveSlot of target.moveSlots) {
613
613
  moveSlot.pp = moveSlot.maxpp;
614
614
  }
package/data/moves.ts CHANGED
@@ -7828,7 +7828,7 @@ export const Moves: {[moveid: string]: MoveData} = {
7828
7828
  onSwap(target) {
7829
7829
  if (!target.fainted && (target.hp < target.maxhp || target.status)) {
7830
7830
  target.heal(target.maxhp);
7831
- target.setStatus('');
7831
+ target.clearStatus();
7832
7832
  this.add('-heal', target, target.getHealth, '[from] move: Healing Wish');
7833
7833
  target.side.removeSlotCondition(target, 'healingwish');
7834
7834
  }
@@ -9081,7 +9081,12 @@ export const Moves: {[moveid: string]: MoveData} = {
9081
9081
  return false;
9082
9082
  }
9083
9083
  this.add('-singleturn', target, 'move: Instruct', '[of] ' + source);
9084
- this.actions.runMove(target.lastMove.id, target, target.lastMoveTargetLoc!);
9084
+ this.queue.prioritizeAction(this.queue.resolveAction({
9085
+ choice: 'move',
9086
+ pokemon: target,
9087
+ moveid: target.lastMove.id,
9088
+ targetLoc: target.lastMoveTargetLoc!,
9089
+ })[0] as MoveAction);
9085
9090
  },
9086
9091
  secondary: null,
9087
9092
  target: "normal",
@@ -9929,7 +9934,7 @@ export const Moves: {[moveid: string]: MoveData} = {
9929
9934
  )
9930
9935
  ) {
9931
9936
  target.heal(target.maxhp);
9932
- target.setStatus('');
9937
+ target.clearStatus();
9933
9938
  for (const moveSlot of target.moveSlots) {
9934
9939
  moveSlot.pp = moveSlot.maxpp;
9935
9940
  }
package/data/pokedex.ts CHANGED
@@ -17419,6 +17419,18 @@ export const Pokedex: {[speciesid: string]: SpeciesData} = {
17419
17419
  changesFrom: "Venomicon",
17420
17420
  gen: 8,
17421
17421
  },
17422
+ saharaja: {
17423
+ num: -68,
17424
+ name: "Saharaja",
17425
+ types: ["Ground"],
17426
+ baseStats: {hp: 70, atk: 120, def: 105, spa: 65, spd: 130, spe: 90},
17427
+ abilities: {0: "Water Absorb", 1: "Serene Grace"},
17428
+ heightm: 2.3,
17429
+ weightkg: 303.9,
17430
+ color: "White",
17431
+ eggGroups: ["Undiscovered"],
17432
+ gen: 8,
17433
+ },
17422
17434
  // NOTE: PokeStar "formes" are not actually formes and thus do not have a formeOrder
17423
17435
  pokestarsmeargle: {
17424
17436
  num: -5000,