@pkmn/sim 0.5.25 → 0.5.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/config/formats.js +66 -69
- package/build/config/formats.js.map +1 -1
- package/build/data/mods/gen1/formats-data.js +0 -5
- package/build/data/mods/gen1/formats-data.js.map +1 -1
- package/build/data/mods/gen1/moves.js +54 -22
- package/build/data/mods/gen1/moves.js.map +1 -1
- package/build/data/mods/gen6/formats-data.js +14 -14
- package/build/data/mods/gen6/formats-data.js.map +1 -1
- package/build/data/mods/gen7/pokedex.js +4 -5
- package/build/data/mods/gen7/pokedex.js.map +1 -1
- package/build/data/pokedex.js +7 -7
- package/build/data/pokedex.js.map +1 -1
- package/build/data/rulesets.js +1 -1
- package/build/data/rulesets.js.map +1 -1
- package/build/sim/team-validator.js +9 -2
- package/build/sim/team-validator.js.map +1 -1
- package/config/formats.ts +68 -72
- package/data/mods/gen1/formats-data.ts +0 -5
- package/data/mods/gen1/moves.ts +54 -23
- package/data/mods/gen6/formats-data.ts +14 -14
- package/data/mods/gen7/pokedex.ts +4 -5
- package/data/pokedex.ts +7 -7
- package/data/rulesets.ts +1 -1
- package/package.json +1 -1
- package/sim/team-validator.ts +9 -2
|
@@ -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: {
|
package/data/mods/gen1/moves.ts
CHANGED
|
@@ -268,30 +268,42 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|
|
268
268
|
},
|
|
269
269
|
},
|
|
270
270
|
disable: {
|
|
271
|
-
|
|
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
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
this.
|
|
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
|
-
|
|
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',
|
|
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
|
-
|
|
414
|
-
|
|
415
|
-
|
|
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
|
-
|
|
418
|
-
this.add('-end', pokemon, id, '[silent]');
|
|
449
|
+
this.add('-end', pokemon, hazeVolatiles[v], '[silent]');
|
|
419
450
|
}
|
|
420
451
|
}
|
|
421
452
|
}
|
|
@@ -24,7 +24,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
24
24
|
tier: "NFE",
|
|
25
25
|
},
|
|
26
26
|
charizard: {
|
|
27
|
-
randomBattleMoves: ["
|
|
27
|
+
randomBattleMoves: ["airslash", "earthquake", "fireblast", "roost", "willowisp"],
|
|
28
28
|
randomDoubleBattleMoves: ["airslash", "dragonpulse", "fireblast", "heatwave", "overheat", "protect", "roost", "tailwind"],
|
|
29
29
|
tier: "NU",
|
|
30
30
|
doublesTier: "(DUU)",
|
|
@@ -54,7 +54,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
54
54
|
doublesTier: "(DUU)",
|
|
55
55
|
},
|
|
56
56
|
blastoisemega: {
|
|
57
|
-
randomBattleMoves: ["aurasphere", "darkpulse", "
|
|
57
|
+
randomBattleMoves: ["aurasphere", "darkpulse", "hydropump", "icebeam", "rapidspin", "scald"],
|
|
58
58
|
randomDoubleBattleMoves: ["aurasphere", "darkpulse", "fakeout", "followme", "hydropump", "icebeam", "icywind", "muddywater", "protect", "scald"],
|
|
59
59
|
tier: "UU",
|
|
60
60
|
doublesTier: "DUU",
|
|
@@ -686,7 +686,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
686
686
|
tier: "LC",
|
|
687
687
|
},
|
|
688
688
|
seaking: {
|
|
689
|
-
randomBattleMoves: ["drillrun", "icebeam", "knockoff", "megahorn", "
|
|
689
|
+
randomBattleMoves: ["drillrun", "icebeam", "knockoff", "megahorn", "raindance", "waterfall"],
|
|
690
690
|
randomDoubleBattleMoves: ["drillrun", "icebeam", "icywind", "knockoff", "megahorn", "protect", "surf", "waterfall"],
|
|
691
691
|
tier: "(PU)",
|
|
692
692
|
doublesTier: "(DUU)",
|
|
@@ -1693,7 +1693,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
1693
1693
|
tier: "NFE",
|
|
1694
1694
|
},
|
|
1695
1695
|
aggron: {
|
|
1696
|
-
randomBattleMoves: ["aquatail", "autotomize", "earthquake", "headsmash", "heavyslam", "
|
|
1696
|
+
randomBattleMoves: ["aquatail", "autotomize", "earthquake", "headsmash", "heavyslam", "stealthrock"],
|
|
1697
1697
|
randomDoubleBattleMoves: ["aquatail", "earthquake", "headsmash", "heavyslam", "lowkick", "protect", "rockslide", "stealthrock"],
|
|
1698
1698
|
tier: "NU",
|
|
1699
1699
|
doublesTier: "(DUU)",
|
|
@@ -1819,7 +1819,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
1819
1819
|
doublesTier: "DUU",
|
|
1820
1820
|
},
|
|
1821
1821
|
torkoal: {
|
|
1822
|
-
randomBattleMoves: ["earthpower", "
|
|
1822
|
+
randomBattleMoves: ["earthpower", "lavaplume", "rapidspin", "stealthrock", "yawn"],
|
|
1823
1823
|
randomDoubleBattleMoves: ["earthpower", "fireblast", "heatwave", "hiddenpowergrass", "protect", "shellsmash", "willowisp"],
|
|
1824
1824
|
tier: "PU",
|
|
1825
1825
|
doublesTier: "(DUU)",
|
|
@@ -1846,7 +1846,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
1846
1846
|
tier: "NFE",
|
|
1847
1847
|
},
|
|
1848
1848
|
flygon: {
|
|
1849
|
-
randomBattleMoves: ["defog", "earthquake", "fireblast", "
|
|
1849
|
+
randomBattleMoves: ["defog", "earthquake", "fireblast", "outrage", "roost", "stoneedge", "uturn"],
|
|
1850
1850
|
randomDoubleBattleMoves: ["dragonclaw", "earthquake", "feint", "fireblast", "firepunch", "protect", "rockslide", "tailwind", "uturn"],
|
|
1851
1851
|
tier: "RU",
|
|
1852
1852
|
doublesTier: "(DUU)",
|
|
@@ -1855,7 +1855,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
1855
1855
|
tier: "LC",
|
|
1856
1856
|
},
|
|
1857
1857
|
cacturne: {
|
|
1858
|
-
randomBattleMoves: ["darkpulse", "drainpunch", "focusblast", "
|
|
1858
|
+
randomBattleMoves: ["darkpulse", "drainpunch", "focusblast", "seedbomb", "spikes", "suckerpunch", "swordsdance"],
|
|
1859
1859
|
randomDoubleBattleMoves: ["drainpunch", "seedbomb", "spikyshield", "substitute", "suckerpunch", "swordsdance"],
|
|
1860
1860
|
tier: "PU",
|
|
1861
1861
|
doublesTier: "(DUU)",
|
|
@@ -1882,7 +1882,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
1882
1882
|
doublesTier: "(DUU)",
|
|
1883
1883
|
},
|
|
1884
1884
|
seviper: {
|
|
1885
|
-
randomBattleMoves: ["
|
|
1885
|
+
randomBattleMoves: ["darkpulse", "earthquake", "flamethrower", "gigadrain", "poisonjab", "sludgewave", "suckerpunch", "switcheroo"],
|
|
1886
1886
|
randomDoubleBattleMoves: ["aquatail", "earthquake", "flamethrower", "gigadrain", "glare", "poisonjab", "protect", "sludgebomb", "suckerpunch"],
|
|
1887
1887
|
tier: "(PU)",
|
|
1888
1888
|
doublesTier: "(DUU)",
|
|
@@ -2021,7 +2021,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
2021
2021
|
doublesTier: "(DUU)",
|
|
2022
2022
|
},
|
|
2023
2023
|
absolmega: {
|
|
2024
|
-
randomBattleMoves: ["
|
|
2024
|
+
randomBattleMoves: ["icebeam", "knockoff", "playrough", "pursuit", "suckerpunch", "superpower", "swordsdance"],
|
|
2025
2025
|
randomDoubleBattleMoves: ["fireblast", "knockoff", "playrough", "protect", "suckerpunch", "superpower", "swordsdance"],
|
|
2026
2026
|
tier: "UU",
|
|
2027
2027
|
doublesTier: "(DUU)",
|
|
@@ -2147,7 +2147,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
2147
2147
|
doublesTier: "(DUU)",
|
|
2148
2148
|
},
|
|
2149
2149
|
latiasmega: {
|
|
2150
|
-
randomBattleMoves: ["calmmind", "dracometeor", "
|
|
2150
|
+
randomBattleMoves: ["calmmind", "dracometeor", "hiddenpowerfire", "psyshock", "roost", "substitute", "surf"],
|
|
2151
2151
|
randomDoubleBattleMoves: ["dragonpulse", "healpulse", "helpinghand", "lightscreen", "protect", "psychic", "reflect", "tailwind"],
|
|
2152
2152
|
tier: "(OU)",
|
|
2153
2153
|
doublesTier: "(DUU)",
|
|
@@ -3392,7 +3392,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
3392
3392
|
tier: "NFE",
|
|
3393
3393
|
},
|
|
3394
3394
|
hydreigon: {
|
|
3395
|
-
randomBattleMoves: ["darkpulse", "dracometeor", "
|
|
3395
|
+
randomBattleMoves: ["darkpulse", "dracometeor", "fireblast", "flashcannon", "roost", "superpower", "uturn"],
|
|
3396
3396
|
randomDoubleBattleMoves: ["darkpulse", "dracometeor", "dragonpulse", "earthpower", "fireblast", "flashcannon", "protect", "roost", "superpower", "tailwind", "uturn"],
|
|
3397
3397
|
tier: "UU",
|
|
3398
3398
|
doublesTier: "DOU",
|
|
@@ -3401,7 +3401,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
3401
3401
|
tier: "LC",
|
|
3402
3402
|
},
|
|
3403
3403
|
volcarona: {
|
|
3404
|
-
randomBattleMoves: ["bugbuzz", "fierydance", "fireblast", "gigadrain", "
|
|
3404
|
+
randomBattleMoves: ["bugbuzz", "fierydance", "fireblast", "gigadrain", "hiddenpowerice", "quiverdance", "roost"],
|
|
3405
3405
|
randomDoubleBattleMoves: ["bugbuzz", "fierydance", "fireblast", "gigadrain", "heatwave", "hiddenpowerice", "protect", "quiverdance", "ragepowder", "roost", "tailwind", "willowisp"],
|
|
3406
3406
|
tier: "UUBL",
|
|
3407
3407
|
doublesTier: "DUU",
|
|
@@ -3449,7 +3449,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
3449
3449
|
doublesTier: "(DUU)",
|
|
3450
3450
|
},
|
|
3451
3451
|
reshiram: {
|
|
3452
|
-
randomBattleMoves: ["blueflare", "dracometeor", "
|
|
3452
|
+
randomBattleMoves: ["blueflare", "dracometeor", "earthpower", "roost", "stoneedge", "toxic"],
|
|
3453
3453
|
randomDoubleBattleMoves: ["blueflare", "dracometeor", "dragonpulse", "flamecharge", "heatwave", "protect", "roost", "tailwind"],
|
|
3454
3454
|
tier: "Uber",
|
|
3455
3455
|
doublesTier: "DUber",
|
|
@@ -3805,7 +3805,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
3805
3805
|
doublesTier: "DUU",
|
|
3806
3806
|
},
|
|
3807
3807
|
klefki: {
|
|
3808
|
-
randomBattleMoves: ["foulplay", "lightscreen", "
|
|
3808
|
+
randomBattleMoves: ["foulplay", "lightscreen", "playrough", "reflect", "spikes", "thunderwave", "toxic"],
|
|
3809
3809
|
randomDoubleBattleMoves: ["dazzlinggleam", "flashcannon", "lightscreen", "playrough", "protect", "reflect", "safeguard", "substitute", "thunderwave"],
|
|
3810
3810
|
tier: "UU",
|
|
3811
3811
|
doublesTier: "(DUU)",
|
|
@@ -165,13 +165,12 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = {
|
|
|
165
165
|
inherit: true,
|
|
166
166
|
baseStats: {hp: 90, atk: 85, def: 80, spa: 105, spd: 80, spe: 110},
|
|
167
167
|
},
|
|
168
|
-
|
|
168
|
+
mumbao: {
|
|
169
169
|
inherit: true,
|
|
170
|
-
|
|
170
|
+
unreleasedHidden: true,
|
|
171
171
|
},
|
|
172
|
-
|
|
172
|
+
jumbao: {
|
|
173
173
|
inherit: true,
|
|
174
|
-
|
|
175
|
-
abilities: {0: "Levitate", 1: "Bulletproof", H: "Justified"},
|
|
174
|
+
unreleasedHidden: true,
|
|
176
175
|
},
|
|
177
176
|
};
|
package/data/pokedex.ts
CHANGED
|
@@ -17065,9 +17065,9 @@ export const Pokedex: {[speciesid: string]: SpeciesData} = {
|
|
|
17065
17065
|
name: "Mumbao",
|
|
17066
17066
|
types: ["Grass", "Fairy"],
|
|
17067
17067
|
baseStats: {hp: 55, atk: 30, def: 64, spa: 87, spd: 73, spe: 66},
|
|
17068
|
-
abilities: {0: "
|
|
17068
|
+
abilities: {0: "Trace", 1: "Overcoat", H: "Solar Power"},
|
|
17069
17069
|
heightm: 1,
|
|
17070
|
-
weightkg:
|
|
17070
|
+
weightkg: 83,
|
|
17071
17071
|
color: "Brown",
|
|
17072
17072
|
evos: ["Jumbao"],
|
|
17073
17073
|
eggGroups: ["Grass"],
|
|
@@ -17078,9 +17078,9 @@ export const Pokedex: {[speciesid: string]: SpeciesData} = {
|
|
|
17078
17078
|
name: "Jumbao",
|
|
17079
17079
|
types: ["Grass", "Fairy"],
|
|
17080
17080
|
baseStats: {hp: 92, atk: 63, def: 97, spa: 124, spd: 104, spe: 96},
|
|
17081
|
-
abilities: {0: "
|
|
17081
|
+
abilities: {0: "Trace", 1: "Overcoat", H: "Drought"},
|
|
17082
17082
|
heightm: 2.4,
|
|
17083
|
-
weightkg:
|
|
17083
|
+
weightkg: 200,
|
|
17084
17084
|
color: "Brown",
|
|
17085
17085
|
prevo: "Mumbao",
|
|
17086
17086
|
evoType: "levelFriendship",
|
|
@@ -17229,7 +17229,7 @@ export const Pokedex: {[speciesid: string]: SpeciesData} = {
|
|
|
17229
17229
|
types: ["Steel", "Ground"],
|
|
17230
17230
|
gender: "N",
|
|
17231
17231
|
baseStats: {hp: 72, atk: 70, def: 56, spa: 83, spd: 68, spe: 30},
|
|
17232
|
-
abilities: {0: "Levitate", 1: "
|
|
17232
|
+
abilities: {0: "Levitate", 1: "Bulletproof", H: "Justified"},
|
|
17233
17233
|
heightm: 0.4,
|
|
17234
17234
|
weightkg: 36.5,
|
|
17235
17235
|
color: "Brown",
|
|
@@ -17242,8 +17242,8 @@ export const Pokedex: {[speciesid: string]: SpeciesData} = {
|
|
|
17242
17242
|
name: "Equilibra",
|
|
17243
17243
|
types: ["Steel", "Ground"],
|
|
17244
17244
|
gender: "N",
|
|
17245
|
-
baseStats: {hp: 102, atk: 50, def: 96, spa:
|
|
17246
|
-
abilities: {0: "Levitate", 1: "
|
|
17245
|
+
baseStats: {hp: 102, atk: 50, def: 96, spa: 133, spd: 118, spe: 60},
|
|
17246
|
+
abilities: {0: "Levitate", 1: "Bulletproof", H: "Justified"},
|
|
17247
17247
|
heightm: 0.8,
|
|
17248
17248
|
weightkg: 51.3,
|
|
17249
17249
|
color: "Brown",
|
package/data/rulesets.ts
CHANGED
|
@@ -994,7 +994,7 @@ export const Rulesets: {[k: string]: FormatData} = {
|
|
|
994
994
|
if (status.id === 'slp') {
|
|
995
995
|
for (const pokemon of target.side.pokemon) {
|
|
996
996
|
if (pokemon.hp && pokemon.status === 'slp') {
|
|
997
|
-
this.add('-message', "Sleep Clause activated. (In
|
|
997
|
+
this.add('-message', "Sleep Clause activated. (In Nintendo formats, Sleep Clause activates if any of the opponent's Pokemon are asleep, even if self-inflicted from Rest)");
|
|
998
998
|
return false;
|
|
999
999
|
}
|
|
1000
1000
|
}
|
package/package.json
CHANGED
package/sim/team-validator.ts
CHANGED
|
@@ -733,9 +733,16 @@ export class TeamValidator {
|
|
|
733
733
|
isFromRBYEncounter = true;
|
|
734
734
|
}
|
|
735
735
|
}
|
|
736
|
-
if (!isFromRBYEncounter && ruleTable.has('obtainablemisc')
|
|
736
|
+
if (!isFromRBYEncounter && ruleTable.has('obtainablemisc')) {
|
|
737
737
|
// FIXME: Event pokemon given at a level under what it normally can be attained at gives a false positive
|
|
738
|
-
|
|
738
|
+
let evoSpecies = species;
|
|
739
|
+
while (evoSpecies.prevo) {
|
|
740
|
+
if (set.level < (evoSpecies.evoLevel || 0)) {
|
|
741
|
+
problems.push(`${name} must be at least level ${evoSpecies.evoLevel} to be evolved.`);
|
|
742
|
+
break;
|
|
743
|
+
}
|
|
744
|
+
evoSpecies = dex.species.get(evoSpecies.prevo);
|
|
745
|
+
}
|
|
739
746
|
}
|
|
740
747
|
|
|
741
748
|
if (ruleTable.has('obtainablemoves') && species.id === 'keldeo' && set.moves.includes('secretsword') &&
|