@pkmn/sim 0.5.21 → 0.5.24

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 (88) hide show
  1. package/LICENSE +1 -1
  2. package/build/config/formats.js +412 -419
  3. package/build/config/formats.js.map +1 -1
  4. package/build/data/abilities.js +1 -3
  5. package/build/data/abilities.js.map +1 -1
  6. package/build/data/aliases.js +4 -4
  7. package/build/data/aliases.js.map +1 -1
  8. package/build/data/conditions.js +5 -2
  9. package/build/data/conditions.js.map +1 -1
  10. package/build/data/formats-data.js +9 -10
  11. package/build/data/formats-data.js.map +1 -1
  12. package/build/data/mods/gen1/conditions.js +3 -0
  13. package/build/data/mods/gen1/conditions.js.map +1 -1
  14. package/build/data/mods/gen1/formats-data.js +1 -1
  15. package/build/data/mods/gen1/formats-data.js.map +1 -1
  16. package/build/data/mods/gen1/moves.js +5 -2
  17. package/build/data/mods/gen1/moves.js.map +1 -1
  18. package/build/data/mods/gen1/scripts.js +4 -2
  19. package/build/data/mods/gen1/scripts.js.map +1 -1
  20. package/build/data/mods/gen2/conditions.js +3 -0
  21. package/build/data/mods/gen2/conditions.js.map +1 -1
  22. package/build/data/mods/gen3/conditions.js +3 -0
  23. package/build/data/mods/gen3/conditions.js.map +1 -1
  24. package/build/data/mods/gen3/formats-data.js +3 -3
  25. package/build/data/mods/gen3/formats-data.js.map +1 -1
  26. package/build/data/mods/gen4/abilities.js +1 -1
  27. package/build/data/mods/gen4/abilities.js.map +1 -1
  28. package/build/data/mods/gen4/conditions.js +3 -0
  29. package/build/data/mods/gen4/conditions.js.map +1 -1
  30. package/build/data/mods/gen4/moves.js +9 -2
  31. package/build/data/mods/gen4/moves.js.map +1 -1
  32. package/build/data/mods/gen5/moves.js +4 -7
  33. package/build/data/mods/gen5/moves.js.map +1 -1
  34. package/build/data/mods/gen5/pokedex.js +24 -0
  35. package/build/data/mods/gen5/pokedex.js.map +1 -1
  36. package/build/data/mods/gen6/formats-data.js +64 -64
  37. package/build/data/mods/gen6/formats-data.js.map +1 -1
  38. package/build/data/mods/gen7/abilities.js +8 -0
  39. package/build/data/mods/gen7/abilities.js.map +1 -1
  40. package/build/data/mods/gen7/moves.js +2 -2
  41. package/build/data/mods/gen7/moves.js.map +1 -1
  42. package/build/data/moves.js +8 -3
  43. package/build/data/moves.js.map +1 -1
  44. package/build/data/pokedex.js +1 -1
  45. package/build/data/rulesets.js +270 -3
  46. package/build/data/rulesets.js.map +1 -1
  47. package/build/lib/utils.d.ts +4 -0
  48. package/build/lib/utils.js +20 -1
  49. package/build/lib/utils.js.map +1 -1
  50. package/build/sim/battle-stream.js +3 -0
  51. package/build/sim/battle-stream.js.map +1 -1
  52. package/build/sim/exported-global-types.d.ts +2 -0
  53. package/build/sim/global-types.d.ts +2 -0
  54. package/build/sim/pokemon.d.ts +1 -0
  55. package/build/sim/pokemon.js +9 -2
  56. package/build/sim/pokemon.js.map +1 -1
  57. package/build/sim/side.js +21 -0
  58. package/build/sim/side.js.map +1 -1
  59. package/config/formats.ts +407 -406
  60. package/data/abilities.ts +1 -3
  61. package/data/aliases.ts +4 -4
  62. package/data/conditions.ts +6 -2
  63. package/data/formats-data.ts +9 -10
  64. package/data/mods/gen1/conditions.ts +4 -0
  65. package/data/mods/gen1/formats-data.ts +1 -1
  66. package/data/mods/gen1/moves.ts +5 -1
  67. package/data/mods/gen1/scripts.ts +3 -2
  68. package/data/mods/gen2/conditions.ts +4 -0
  69. package/data/mods/gen3/conditions.ts +4 -0
  70. package/data/mods/gen3/formats-data.ts +3 -3
  71. package/data/mods/gen4/abilities.ts +1 -1
  72. package/data/mods/gen4/conditions.ts +4 -0
  73. package/data/mods/gen4/moves.ts +9 -2
  74. package/data/mods/gen5/moves.ts +4 -7
  75. package/data/mods/gen5/pokedex.ts +24 -0
  76. package/data/mods/gen6/formats-data.ts +64 -64
  77. package/data/mods/gen7/abilities.ts +8 -0
  78. package/data/mods/gen7/moves.ts +2 -2
  79. package/data/moves.ts +8 -3
  80. package/data/pokedex.ts +1 -1
  81. package/data/rulesets.ts +247 -3
  82. package/lib/utils.ts +16 -0
  83. package/package.json +2 -2
  84. package/sim/battle-stream.ts +3 -0
  85. package/sim/exported-global-types.ts +2 -0
  86. package/sim/global-types.ts +2 -0
  87. package/sim/pokemon.ts +9 -2
  88. 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
@@ -32,11 +32,11 @@ export const Aliases: {[alias: string]: string} = {
32
32
  mnm: "[Gen 8] Mix and Mega",
33
33
  aaa: "[Gen 8] Almost Any Ability",
34
34
  stab: "[Gen 8] STABmons",
35
+ gg: "[Gen 8] Godly Gift",
35
36
  camo: "[Gen 8] Camomons",
36
37
  ffa: "[Gen 8] Free-For-All",
37
38
  ts: "[Gen 8] Tier Shift",
38
- ph: "[Gen 8 BDSP] Pure Hackmons",
39
- purehackmons: "[Gen 8 BDSP] Pure Hackmons",
39
+ ph: "[Gen 8] Pure Hackmons",
40
40
  gen7bh: "[Gen 7] Balanced Hackmons",
41
41
  gen7mnm: "[Gen 7] Mix and Mega",
42
42
  gen7stab: "[Gen 7] STABmons",
@@ -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] Broken Record",
72
- lcotm: "[Gen 8] Inheritance",
71
+ omotm: "[Gen 8] Re-Evolution",
72
+ lcotm: "[Gen 8] Category Swap",
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) {
@@ -712,7 +716,7 @@ export const Conditions: {[k: string]: ConditionData} = {
712
716
  if (pokemon.baseSpecies.name === 'Shedinja') return;
713
717
 
714
718
  // Changes based on dynamax level, 2 is max (at LVL 10)
715
- const ratio = 2; // TODO: Implement Dynamax levels
719
+ const ratio = 1.5 + (pokemon.dynamaxLevel * 0.05);
716
720
 
717
721
  pokemon.maxhp = Math.floor(pokemon.maxhp * ratio);
718
722
  pokemon.hp = Math.floor(pokemon.hp * ratio);
@@ -3594,7 +3594,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
3594
3594
  tier: "Illegal",
3595
3595
  },
3596
3596
  basculin: {
3597
- randomBattleMoves: ["aquajet", "crunch", "flipturn", "headsmash", "liquidation", "psychicfangs"],
3597
+ randomBattleMoves: ["aquajet", "crunch", "flipturn", "liquidation", "psychicfangs", "superpower"],
3598
3598
  randomBattleLevel: 86,
3599
3599
  randomDoubleBattleMoves: ["flipturn", "headsmash", "icebeam", "liquidation", "muddywater", "protect", "psychicfangs", "superpower"],
3600
3600
  randomDoubleBattleLevel: 86,
@@ -3602,7 +3602,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
3602
3602
  doublesTier: "(DUU)",
3603
3603
  },
3604
3604
  basculinbluestriped: {
3605
- randomBattleMoves: ["aquajet", "crunch", "flipturn", "headsmash", "liquidation", "psychicfangs"],
3605
+ randomBattleMoves: ["aquajet", "crunch", "flipturn", "liquidation", "psychicfangs", "superpower"],
3606
3606
  randomBattleLevel: 86,
3607
3607
  randomDoubleBattleMoves: ["aquajet", "flipturn", "headsmash", "icebeam", "liquidation", "protect", "psychicfangs", "superpower"],
3608
3608
  randomDoubleBattleLevel: 86,
@@ -4029,7 +4029,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
4029
4029
  doublesTier: "(DUU)",
4030
4030
  },
4031
4031
  druddigon: {
4032
- randomBattleMoves: ["earthquake", "glare", "outrage", "stealthrock", "suckerpunch", "superpower"],
4032
+ randomBattleMoves: ["earthquake", "glare", "gunkshot", "outrage", "stealthrock", "suckerpunch", "superpower"],
4033
4033
  randomBattleLevel: 84,
4034
4034
  randomDoubleBattleMoves: ["firepunch", "glare", "gunkshot", "protect", "scaleshot", "suckerpunch"],
4035
4035
  randomDoubleBattleLevel: 87,
@@ -4070,7 +4070,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
4070
4070
  tier: "NFE",
4071
4071
  },
4072
4072
  braviary: {
4073
- randomBattleMoves: ["bravebird", "bulkup", "closecombat", "retaliate", "roost", "uturn"],
4073
+ randomBattleMoves: ["bravebird", "bulkup", "closecombat", "roost"],
4074
4074
  randomBattleLevel: 82,
4075
4075
  randomDoubleBattleMoves: ["bravebird", "closecombat", "protect", "roost", "tailwind"],
4076
4076
  randomDoubleBattleLevel: 82,
@@ -4082,7 +4082,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
4082
4082
  tier: "Illegal",
4083
4083
  },
4084
4084
  vullaby: {
4085
- tier: "LC",
4085
+ tier: "NFE",
4086
4086
  },
4087
4087
  mandibuzz: {
4088
4088
  randomBattleMoves: ["bravebird", "defog", "foulplay", "roost", "toxic"],
@@ -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: "PU",
4965
+ tier: "PUBL",
4966
4966
  doublesTier: "DUU",
4967
4967
  },
4968
4968
  araquanidtotem: {
@@ -5159,11 +5159,10 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
5159
5159
  doublesTier: "(DUU)",
5160
5160
  },
5161
5161
  silvallyflying: {
5162
- randomBattleMoves: ["firefang", "ironhead", "multiattack", "rockslide", "swordsdance"],
5162
+ randomBattleMoves: ["flamecharge", "ironhead", "multiattack", "rockslide", "swordsdance"],
5163
5163
  randomBattleLevel: 84,
5164
5164
  randomDoubleBattleMoves: ["firefang", "ironhead", "multiattack", "swordsdance", "tailwind"],
5165
5165
  randomDoubleBattleLevel: 86,
5166
- randomBattleNoDynamaxMoves: ["flamecharge", "ironhead", "multiattack", "rockslide", "swordsdance"],
5167
5166
  tier: "(PU)",
5168
5167
  doublesTier: "(DUU)",
5169
5168
  },
@@ -5433,7 +5432,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
5433
5432
  randomBattleLevel: 84,
5434
5433
  randomDoubleBattleMoves: ["dracometeor", "fireblast", "knockoff", "protect", "sludgebomb"],
5435
5434
  randomDoubleBattleLevel: 88,
5436
- tier: "PU",
5435
+ tier: "PUBL",
5437
5436
  doublesTier: "(DUU)",
5438
5437
  },
5439
5438
  necrozma: {
@@ -5594,7 +5593,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
5594
5593
  randomBattleLevel: 80,
5595
5594
  randomDoubleBattleMoves: ["airslash", "hydropump", "icebeam", "muddywater", "shadowball", "uturn"],
5596
5595
  randomDoubleBattleLevel: 84,
5597
- tier: "PU",
5596
+ tier: "PUBL",
5598
5597
  doublesTier: "(DUU)",
5599
5598
  },
5600
5599
  inteleongmax: {
@@ -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) {
@@ -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: "UUBL",
417
+ tier: "OU",
418
418
  },
419
419
  magnemite: {
420
420
  randomBattleMoves: ["thunder", "thunderbolt", "thunderwave"],
@@ -538,12 +538,17 @@ 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;
541
542
  let i: BoostID;
542
543
  for (i in boost) {
543
544
  if (boost[i]! < 0) {
544
545
  delete boost[i];
546
+ showMsg = true;
545
547
  }
546
548
  }
549
+ if (showMsg && !(effect as ActiveMove).secondaries) {
550
+ this.add('-activate', target, 'move: Mist');
551
+ }
547
552
  }
548
553
  },
549
554
  },
@@ -759,7 +764,6 @@ export const Moves: {[k: string]: ModdedMoveData} = {
759
764
  }
760
765
  // We only prevent when hp is less than one quarter.
761
766
  // If you use substitute at exactly one quarter, you faint.
762
- if (target.hp === target.maxhp / 4) target.faint();
763
767
  if (target.hp < target.maxhp / 4) {
764
768
  this.add('-fail', target, 'move: Substitute', '[weak]');
765
769
  return null;
@@ -467,8 +467,9 @@ export const Scripts: ModdedBattleScriptsData = {
467
467
  return false;
468
468
  }
469
469
  if (moveData.boosts && target.hp) {
470
- if (!this.battle.boost(moveData.boosts, target, pokemon, move)) {
471
- this.battle.add('-fail', target);
470
+ const willBoost = this.battle.boost(moveData.boosts, target, pokemon, move);
471
+ if (!willBoost) {
472
+ if (willBoost === false) this.battle.add('-fail', target);
472
473
  return false;
473
474
  }
474
475
  didSomething = true;
@@ -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) {
@@ -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;
@@ -411,7 +411,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
411
411
  tier: "LC",
412
412
  },
413
413
  weezing: {
414
- randomBattleMoves: ["explosion", "fireblast", "flamethrower", "haze", "painsplit", "sludgebomb", "toxic", "willowisp"],
414
+ randomBattleMoves: ["explosion", "fireblast", "haze", "painsplit", "sludgebomb", "toxic", "willowisp"],
415
415
  tier: "UUBL",
416
416
  },
417
417
  rhyhorn: {
@@ -835,7 +835,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
835
835
  tier: "UU",
836
836
  },
837
837
  skarmory: {
838
- randomBattleMoves: ["doubleedge", "drillpeck", "protect", "rest", "roar", "sleeptalk", "spikes", "toxic"],
838
+ randomBattleMoves: ["drillpeck", "hiddenpowerground", "protect", "rest", "roar", "sleeptalk", "spikes", "toxic"],
839
839
  tier: "OU",
840
840
  },
841
841
  houndour: {
@@ -1368,7 +1368,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
1368
1368
  tier: "Uber",
1369
1369
  },
1370
1370
  groudon: {
1371
- randomBattleMoves: ["earthquake", "hiddenpowerghost", "overheat", "rockslide", "substitute", "swordsdance", "thunderwave"],
1371
+ randomBattleMoves: ["earthquake", "hiddenpowerbug", "overheat", "rockslide", "substitute", "swordsdance", "thunderwave"],
1372
1372
  tier: "Uber",
1373
1373
  },
1374
1374
  rayquaza: {
@@ -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) {
@@ -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},