@pkmn/sim 0.5.0 → 0.5.4
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 +356 -266
- package/build/config/formats.js.map +1 -1
- package/build/data/abilities.js +5 -1
- package/build/data/abilities.js.map +1 -1
- package/build/data/aliases.js +2 -2
- package/build/data/aliases.js.map +1 -1
- package/build/data/formats-data.js +91 -92
- package/build/data/formats-data.js.map +1 -1
- package/build/data/items.js +5 -5
- package/build/data/items.js.map +1 -1
- package/build/data/learnsets.js +1 -1
- package/build/data/learnsets.js.map +1 -1
- package/build/data/mods/gen1/formats-data.js +190 -190
- package/build/data/mods/gen1/formats-data.js.map +1 -1
- package/build/data/mods/gen1/moves.js +1 -2
- package/build/data/mods/gen1/moves.js.map +1 -1
- package/build/data/mods/gen1/scripts.js +12 -0
- package/build/data/mods/gen1/scripts.js.map +1 -1
- package/build/data/mods/gen2/formats-data.js +2 -2
- package/build/data/mods/gen2/formats-data.js.map +1 -1
- package/build/data/mods/gen3/formats-data.js +12 -12
- package/build/data/mods/gen3/formats-data.js.map +1 -1
- package/build/data/mods/gen4/moves.js +22 -0
- package/build/data/mods/gen4/moves.js.map +1 -1
- package/build/data/mods/gen5/formats-data.js +15 -15
- package/build/data/mods/gen5/formats-data.js.map +1 -1
- package/build/data/mods/gen6/formats-data.js +1 -1
- package/build/data/mods/gen7/formats-data.js +1 -1
- package/build/data/mods/gen7/formats-data.js.map +1 -1
- package/build/data/mods/gen7/moves.js +154 -0
- package/build/data/mods/gen7/moves.js.map +1 -1
- package/build/data/moves.js +47 -20
- package/build/data/moves.js.map +1 -1
- package/build/data/pokedex.js +2 -2
- package/build/data/rulesets.js +48 -5
- package/build/data/rulesets.js.map +1 -1
- package/build/data/tags.js +3 -2
- package/build/data/tags.js.map +1 -1
- package/build/data/text/moves.js +1 -1
- package/build/data/text/moves.js.map +1 -1
- package/build/sim/battle-actions.js +8 -3
- package/build/sim/battle-actions.js.map +1 -1
- package/build/sim/exported-global-types.d.ts +1 -0
- package/build/sim/global-types.d.ts +1 -0
- package/build/sim/pokemon.js +1 -1
- package/build/sim/pokemon.js.map +1 -1
- package/build/sim/team-validator.js +3 -0
- package/build/sim/team-validator.js.map +1 -1
- package/config/formats.ts +363 -269
- package/data/abilities.ts +3 -1
- package/data/aliases.ts +2 -2
- package/data/formats-data.ts +91 -92
- package/data/items.ts +5 -5
- package/data/learnsets.ts +1 -1
- package/data/mods/gen1/formats-data.ts +190 -190
- package/data/mods/gen1/moves.ts +1 -2
- package/data/mods/gen1/scripts.ts +11 -0
- package/data/mods/gen2/formats-data.ts +2 -2
- package/data/mods/gen3/formats-data.ts +12 -12
- package/data/mods/gen4/moves.ts +21 -0
- package/data/mods/gen5/formats-data.ts +15 -15
- package/data/mods/gen6/formats-data.ts +1 -1
- package/data/mods/gen7/formats-data.ts +1 -1
- package/data/mods/gen7/moves.ts +150 -0
- package/data/moves.ts +46 -20
- package/data/pokedex.ts +2 -2
- package/data/rulesets.ts +44 -6
- package/data/tags.ts +3 -2
- package/data/text/moves.ts +1 -1
- package/package.json +1 -1
- package/sim/battle-actions.ts +8 -3
- package/sim/exported-global-types.ts +1 -0
- package/sim/global-types.ts +1 -0
- package/sim/pokemon.ts +1 -1
- package/sim/team-validator.ts +3 -0
package/data/mods/gen1/moves.ts
CHANGED
|
@@ -407,8 +407,7 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|
|
407
407
|
pokemon.clearBoosts();
|
|
408
408
|
|
|
409
409
|
if (pokemon !== source) {
|
|
410
|
-
|
|
411
|
-
pokemon.setStatus('');
|
|
410
|
+
pokemon.cureStatus(true);
|
|
412
411
|
}
|
|
413
412
|
if (pokemon.status === 'tox') {
|
|
414
413
|
pokemon.setStatus('psn');
|
|
@@ -57,6 +57,17 @@ export const Scripts: ModdedBattleScriptsData = {
|
|
|
57
57
|
}
|
|
58
58
|
return changed;
|
|
59
59
|
},
|
|
60
|
+
clearBoosts() {
|
|
61
|
+
let i: BoostID;
|
|
62
|
+
for (i in this.boosts) {
|
|
63
|
+
this.boosts[i] = 0;
|
|
64
|
+
// Recalculate the modified stat
|
|
65
|
+
if (i === 'evasion' || i === 'accuracy') continue;
|
|
66
|
+
let stat = this.species.baseStats[i];
|
|
67
|
+
stat = Math.floor(Math.floor(2 * stat + this.set.ivs[i] + Math.floor(this.set.evs[i] / 4)) * this.level / 100 + 5);
|
|
68
|
+
this.modifiedStats![i] = this.storedStats[i] = Math.floor(stat);
|
|
69
|
+
}
|
|
70
|
+
},
|
|
60
71
|
},
|
|
61
72
|
actions: {
|
|
62
73
|
// This function is the main one when running a move.
|
|
@@ -691,7 +691,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
691
691
|
tier: "LC",
|
|
692
692
|
},
|
|
693
693
|
azumarill: {
|
|
694
|
-
randomBattleMoves: ["perishsong", "rest", "
|
|
694
|
+
randomBattleMoves: ["perishsong", "rest", "surf", "whirlpool"],
|
|
695
695
|
tier: "NU",
|
|
696
696
|
},
|
|
697
697
|
sudowoodo: {
|
|
@@ -885,7 +885,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
885
885
|
tier: "Uber",
|
|
886
886
|
},
|
|
887
887
|
hooh: {
|
|
888
|
-
randomBattleMoves: ["curse", "earthquake", "hiddenpowerflying", "
|
|
888
|
+
randomBattleMoves: ["curse", "earthquake", "hiddenpowerflying", "recover", "sacredfire", "thunder", "thunderbolt"],
|
|
889
889
|
tier: "Uber",
|
|
890
890
|
},
|
|
891
891
|
celebi: {
|
|
@@ -215,7 +215,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
215
215
|
tier: "LC",
|
|
216
216
|
},
|
|
217
217
|
arcanine: {
|
|
218
|
-
randomBattleMoves: ["
|
|
218
|
+
randomBattleMoves: ["extremespeed", "fireblast", "flamethrower", "hiddenpowergrass", "rest", "sleeptalk", "toxic"],
|
|
219
219
|
tier: "UUBL",
|
|
220
220
|
},
|
|
221
221
|
poliwag: {
|
|
@@ -294,14 +294,14 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
294
294
|
tier: "UUBL",
|
|
295
295
|
},
|
|
296
296
|
slowking: {
|
|
297
|
-
randomBattleMoves: ["calmmind", "flamethrower", "icebeam", "psychic", "
|
|
297
|
+
randomBattleMoves: ["calmmind", "flamethrower", "icebeam", "psychic", "rest", "sleeptalk", "surf", "thunderwave"],
|
|
298
298
|
tier: "UU",
|
|
299
299
|
},
|
|
300
300
|
magnemite: {
|
|
301
301
|
tier: "LC",
|
|
302
302
|
},
|
|
303
303
|
magneton: {
|
|
304
|
-
randomBattleMoves: ["hiddenpowergrass", "hiddenpowerice", "rest", "sleeptalk", "
|
|
304
|
+
randomBattleMoves: ["hiddenpowergrass", "hiddenpowerice", "rest", "sleeptalk", "thunderbolt", "toxic"],
|
|
305
305
|
tier: "OU",
|
|
306
306
|
},
|
|
307
307
|
farfetchd: {
|
|
@@ -326,14 +326,14 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
326
326
|
tier: "LC",
|
|
327
327
|
},
|
|
328
328
|
muk: {
|
|
329
|
-
randomBattleMoves: ["
|
|
329
|
+
randomBattleMoves: ["brickbreak", "curse", "explosion", "fireblast", "hiddenpowerghost", "rest", "sludgebomb"],
|
|
330
330
|
tier: "UU",
|
|
331
331
|
},
|
|
332
332
|
shellder: {
|
|
333
333
|
tier: "LC",
|
|
334
334
|
},
|
|
335
335
|
cloyster: {
|
|
336
|
-
randomBattleMoves: ["explosion", "icebeam", "
|
|
336
|
+
randomBattleMoves: ["explosion", "icebeam", "rapidspin", "spikes", "surf", "toxic"],
|
|
337
337
|
tier: "OU",
|
|
338
338
|
},
|
|
339
339
|
gastly: {
|
|
@@ -565,7 +565,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
565
565
|
tier: "OU",
|
|
566
566
|
},
|
|
567
567
|
snorlax: {
|
|
568
|
-
randomBattleMoves: ["bodyslam", "curse", "earthquake", "
|
|
568
|
+
randomBattleMoves: ["bodyslam", "curse", "earthquake", "rest", "return", "selfdestruct", "shadowball", "sleeptalk"],
|
|
569
569
|
tier: "OU",
|
|
570
570
|
},
|
|
571
571
|
articuno: {
|
|
@@ -764,7 +764,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
764
764
|
tier: "OU",
|
|
765
765
|
},
|
|
766
766
|
dunsparce: {
|
|
767
|
-
randomBattleMoves: ["bodyslam", "curse", "headbutt", "
|
|
767
|
+
randomBattleMoves: ["bodyslam", "curse", "headbutt", "rest", "rockslide", "shadowball", "thunderwave"],
|
|
768
768
|
tier: "NU",
|
|
769
769
|
},
|
|
770
770
|
gligar: {
|
|
@@ -831,7 +831,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
831
831
|
tier: "NU",
|
|
832
832
|
},
|
|
833
833
|
mantine: {
|
|
834
|
-
randomBattleMoves: ["haze", "hiddenpowergrass", "icebeam", "
|
|
834
|
+
randomBattleMoves: ["haze", "hiddenpowergrass", "icebeam", "raindance", "rest", "sleeptalk", "surf", "toxic"],
|
|
835
835
|
tier: "UU",
|
|
836
836
|
},
|
|
837
837
|
skarmory: {
|
|
@@ -891,7 +891,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
891
891
|
tier: "Uber",
|
|
892
892
|
},
|
|
893
893
|
hooh: {
|
|
894
|
-
randomBattleMoves: ["calmmind", "earthquake", "
|
|
894
|
+
randomBattleMoves: ["calmmind", "earthquake", "recover", "sacredfire", "substitute", "thunderbolt", "toxic"],
|
|
895
895
|
tier: "Uber",
|
|
896
896
|
},
|
|
897
897
|
celebi: {
|
|
@@ -1053,7 +1053,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
1053
1053
|
tier: "LC",
|
|
1054
1054
|
},
|
|
1055
1055
|
hariyama: {
|
|
1056
|
-
randomBattleMoves: ["bulkup", "crosschop", "fakeout", "
|
|
1056
|
+
randomBattleMoves: ["bulkup", "crosschop", "fakeout", "hiddenpowerghost", "rest", "rockslide", "sleeptalk"],
|
|
1057
1057
|
tier: "UUBL",
|
|
1058
1058
|
},
|
|
1059
1059
|
nosepass: {
|
|
@@ -1206,7 +1206,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
1206
1206
|
tier: "LC",
|
|
1207
1207
|
},
|
|
1208
1208
|
whiscash: {
|
|
1209
|
-
randomBattleMoves: ["earthquake", "hiddenpowerbug", "icebeam", "
|
|
1209
|
+
randomBattleMoves: ["earthquake", "hiddenpowerbug", "icebeam", "rest", "rockslide", "sleeptalk", "spark", "surf", "toxic"],
|
|
1210
1210
|
tier: "NU",
|
|
1211
1211
|
},
|
|
1212
1212
|
corphish: {
|
|
@@ -1241,7 +1241,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
1241
1241
|
tier: "LC",
|
|
1242
1242
|
},
|
|
1243
1243
|
milotic: {
|
|
1244
|
-
randomBattleMoves: ["icebeam", "mirrorcoat", "recover", "
|
|
1244
|
+
randomBattleMoves: ["icebeam", "mirrorcoat", "recover", "surf", "toxic"],
|
|
1245
1245
|
tier: "OU",
|
|
1246
1246
|
},
|
|
1247
1247
|
castform: {
|
package/data/mods/gen4/moves.ts
CHANGED
|
@@ -1433,6 +1433,27 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|
|
1433
1433
|
return !pokemon.volatiles['choicelock'] && !pokemon.volatiles['encore'];
|
|
1434
1434
|
},
|
|
1435
1435
|
},
|
|
1436
|
+
snatch: {
|
|
1437
|
+
inherit: true,
|
|
1438
|
+
condition: {
|
|
1439
|
+
duration: 1,
|
|
1440
|
+
onStart(pokemon) {
|
|
1441
|
+
this.add('-singleturn', pokemon, 'Snatch');
|
|
1442
|
+
},
|
|
1443
|
+
onAnyPrepareHitPriority: -1,
|
|
1444
|
+
onAnyPrepareHit(source, target, move) {
|
|
1445
|
+
const snatchUser = this.effectState.source;
|
|
1446
|
+
if (snatchUser.isSkyDropped()) return;
|
|
1447
|
+
if (!move || move.isZ || move.isMax || !move.flags['snatch']) {
|
|
1448
|
+
return;
|
|
1449
|
+
}
|
|
1450
|
+
snatchUser.removeVolatile('snatch');
|
|
1451
|
+
this.add('-activate', snatchUser, 'move: Snatch', '[of] ' + source);
|
|
1452
|
+
this.actions.useMove(move.id, snatchUser);
|
|
1453
|
+
return null;
|
|
1454
|
+
},
|
|
1455
|
+
},
|
|
1456
|
+
},
|
|
1436
1457
|
spikes: {
|
|
1437
1458
|
inherit: true,
|
|
1438
1459
|
flags: {},
|
|
@@ -983,7 +983,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
983
983
|
doublesTier: "DUU",
|
|
984
984
|
},
|
|
985
985
|
heracross: {
|
|
986
|
-
randomBattleMoves: ["closecombat", "
|
|
986
|
+
randomBattleMoves: ["closecombat", "earthquake", "facade", "megahorn", "stoneedge"],
|
|
987
987
|
tier: "UU",
|
|
988
988
|
doublesTier: "DUU",
|
|
989
989
|
},
|
|
@@ -1363,12 +1363,12 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
1363
1363
|
doublesTier: "DUU",
|
|
1364
1364
|
},
|
|
1365
1365
|
plusle: {
|
|
1366
|
-
randomBattleMoves: ["batonpass", "hiddenpowerice", "nastyplot", "
|
|
1366
|
+
randomBattleMoves: ["batonpass", "hiddenpowerice", "nastyplot", "substitute", "thunderbolt"],
|
|
1367
1367
|
tier: "(NU)",
|
|
1368
1368
|
doublesTier: "DUU",
|
|
1369
1369
|
},
|
|
1370
1370
|
minun: {
|
|
1371
|
-
randomBattleMoves: ["batonpass", "encore", "nastyplot", "
|
|
1371
|
+
randomBattleMoves: ["batonpass", "encore", "nastyplot", "substitute", "thunderbolt"],
|
|
1372
1372
|
tier: "(NU)",
|
|
1373
1373
|
doublesTier: "DUU",
|
|
1374
1374
|
},
|
|
@@ -1572,7 +1572,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
1572
1572
|
doublesTier: "NFE",
|
|
1573
1573
|
},
|
|
1574
1574
|
dusknoir: {
|
|
1575
|
-
randomBattleMoves: ["earthquake", "icepunch", "painsplit", "shadowsneak", "
|
|
1575
|
+
randomBattleMoves: ["earthquake", "icepunch", "painsplit", "shadowsneak", "trick", "willowisp"],
|
|
1576
1576
|
tier: "RU",
|
|
1577
1577
|
doublesTier: "DUU",
|
|
1578
1578
|
},
|
|
@@ -1637,7 +1637,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
1637
1637
|
doublesTier: "DUU",
|
|
1638
1638
|
},
|
|
1639
1639
|
luvdisc: {
|
|
1640
|
-
randomBattleMoves: ["icebeam", "protect", "surf", "
|
|
1640
|
+
randomBattleMoves: ["icebeam", "protect", "surf", "sweetkiss", "toxic"],
|
|
1641
1641
|
tier: "(NU)",
|
|
1642
1642
|
doublesTier: "DUU",
|
|
1643
1643
|
},
|
|
@@ -1670,12 +1670,12 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
1670
1670
|
doublesTier: "DUU",
|
|
1671
1671
|
},
|
|
1672
1672
|
regice: {
|
|
1673
|
-
randomBattleMoves: ["focusblast", "icebeam", "
|
|
1673
|
+
randomBattleMoves: ["focusblast", "icebeam", "rest", "rockpolish", "sleeptalk", "thunderbolt"],
|
|
1674
1674
|
tier: "NU",
|
|
1675
1675
|
doublesTier: "DUU",
|
|
1676
1676
|
},
|
|
1677
1677
|
registeel: {
|
|
1678
|
-
randomBattleMoves: ["
|
|
1678
|
+
randomBattleMoves: ["curse", "ironhead", "protect", "rest", "sleeptalk", "stealthrock", "toxic"],
|
|
1679
1679
|
tier: "UU",
|
|
1680
1680
|
doublesTier: "DUU",
|
|
1681
1681
|
},
|
|
@@ -1715,7 +1715,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
1715
1715
|
doublesTier: "DUU",
|
|
1716
1716
|
},
|
|
1717
1717
|
deoxysattack: {
|
|
1718
|
-
randomBattleMoves: ["extremespeed", "hiddenpowerfire", "icebeam", "psychoboost", "
|
|
1718
|
+
randomBattleMoves: ["extremespeed", "hiddenpowerfire", "icebeam", "psychoboost", "stealthrock", "superpower"],
|
|
1719
1719
|
tier: "Uber",
|
|
1720
1720
|
doublesTier: "DUU",
|
|
1721
1721
|
},
|
|
@@ -1994,7 +1994,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
1994
1994
|
doublesTier: "DOU",
|
|
1995
1995
|
},
|
|
1996
1996
|
rotom: {
|
|
1997
|
-
randomBattleMoves: ["hiddenpowerice", "
|
|
1997
|
+
randomBattleMoves: ["hiddenpowerice", "painsplit", "shadowball", "substitute", "thunderbolt", "trick", "voltswitch", "willowisp"],
|
|
1998
1998
|
tier: "RU",
|
|
1999
1999
|
doublesTier: "DUU",
|
|
2000
2000
|
},
|
|
@@ -2059,7 +2059,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
2059
2059
|
doublesTier: "DUU",
|
|
2060
2060
|
},
|
|
2061
2061
|
giratina: {
|
|
2062
|
-
randomBattleMoves: ["calmmind", "
|
|
2062
|
+
randomBattleMoves: ["calmmind", "dragonpulse", "dragontail", "rest", "sleeptalk", "willowisp"],
|
|
2063
2063
|
tier: "Uber",
|
|
2064
2064
|
doublesTier: "DUber",
|
|
2065
2065
|
},
|
|
@@ -2089,7 +2089,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
2089
2089
|
doublesTier: "DUU",
|
|
2090
2090
|
},
|
|
2091
2091
|
shaymin: {
|
|
2092
|
-
randomBattleMoves: ["earthpower", "hiddenpowerfire", "leechseed", "psychic", "
|
|
2092
|
+
randomBattleMoves: ["earthpower", "hiddenpowerfire", "leechseed", "psychic", "rest", "seedflare", "substitute"],
|
|
2093
2093
|
tier: "UU",
|
|
2094
2094
|
doublesTier: "DUU",
|
|
2095
2095
|
},
|
|
@@ -2143,7 +2143,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
2143
2143
|
randomBattleMoves: ["calmmind", "darkpulse", "judgment", "recover", "willowisp"],
|
|
2144
2144
|
},
|
|
2145
2145
|
arceusrock: {
|
|
2146
|
-
randomBattleMoves: ["earthquake", "
|
|
2146
|
+
randomBattleMoves: ["earthquake", "recover", "stoneedge", "swordsdance"],
|
|
2147
2147
|
},
|
|
2148
2148
|
arceussteel: {
|
|
2149
2149
|
randomBattleMoves: ["calmmind", "judgment", "recover", "thunderbolt", "willowisp"],
|
|
@@ -2655,7 +2655,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
2655
2655
|
tier: "LC",
|
|
2656
2656
|
},
|
|
2657
2657
|
mienshao: {
|
|
2658
|
-
randomBattleMoves: ["batonpass", "highjumpkick", "stoneedge", "
|
|
2658
|
+
randomBattleMoves: ["batonpass", "highjumpkick", "stoneedge", "substitute", "swordsdance", "uturn"],
|
|
2659
2659
|
tier: "UU",
|
|
2660
2660
|
doublesTier: "DUU",
|
|
2661
2661
|
},
|
|
@@ -2741,7 +2741,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
2741
2741
|
doublesTier: "DOU",
|
|
2742
2742
|
},
|
|
2743
2743
|
virizion: {
|
|
2744
|
-
randomBattleMoves: ["calmmind", "closecombat", "focusblast", "gigadrain", "
|
|
2744
|
+
randomBattleMoves: ["calmmind", "closecombat", "focusblast", "gigadrain", "hiddenpowerice", "leafblade", "stoneedge", "swordsdance"],
|
|
2745
2745
|
tier: "UU",
|
|
2746
2746
|
doublesTier: "DUU",
|
|
2747
2747
|
},
|
|
@@ -2781,7 +2781,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
2781
2781
|
doublesTier: "DUU",
|
|
2782
2782
|
},
|
|
2783
2783
|
landorustherian: {
|
|
2784
|
-
randomBattleMoves: ["earthquake", "hiddenpowerice", "rockpolish", "stealthrock", "stoneedge", "
|
|
2784
|
+
randomBattleMoves: ["earthquake", "hiddenpowerice", "rockpolish", "stealthrock", "stoneedge", "superpower", "swordsdance", "uturn"],
|
|
2785
2785
|
tier: "OU",
|
|
2786
2786
|
doublesTier: "DOU",
|
|
2787
2787
|
},
|
|
@@ -664,7 +664,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
664
664
|
doublesTier: "(DUU)",
|
|
665
665
|
},
|
|
666
666
|
kangaskhanmega: {
|
|
667
|
-
randomBattleMoves: ["crunch", "earthquake", "fakeout", "poweruppunch", "return", "
|
|
667
|
+
randomBattleMoves: ["crunch", "earthquake", "fakeout", "poweruppunch", "return", "seismictoss", "suckerpunch"],
|
|
668
668
|
randomDoubleBattleMoves: ["crunch", "doubleedge", "drainpunch", "earthquake", "fakeout", "poweruppunch", "protect", "return", "suckerpunch"],
|
|
669
669
|
tier: "Uber",
|
|
670
670
|
doublesTier: "DOU",
|
|
@@ -2300,7 +2300,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = {
|
|
|
2300
2300
|
doublesTier: "DUber",
|
|
2301
2301
|
},
|
|
2302
2302
|
deoxys: {
|
|
2303
|
-
randomBattleMoves: ["extremespeed", "
|
|
2303
|
+
randomBattleMoves: ["extremespeed", "firepunch", "icebeam", "knockoff", "psychoboost", "stealthrock", "superpower"],
|
|
2304
2304
|
randomDoubleBattleMoves: ["extremespeed", "firepunch", "icebeam", "knockoff", "protect", "psychoboost", "superpower"],
|
|
2305
2305
|
tier: "Uber",
|
|
2306
2306
|
doublesTier: "(DUU)",
|
package/data/mods/gen7/moves.ts
CHANGED
|
@@ -240,6 +240,25 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|
|
240
240
|
inherit: true,
|
|
241
241
|
isNonstandard: null,
|
|
242
242
|
},
|
|
243
|
+
floralhealing: {
|
|
244
|
+
inherit: true,
|
|
245
|
+
onHit(target, source) {
|
|
246
|
+
let success = false;
|
|
247
|
+
if (this.field.isTerrain('grassyterrain')) {
|
|
248
|
+
success = !!this.heal(this.modify(target.baseMaxhp, 0.667));
|
|
249
|
+
} else {
|
|
250
|
+
success = !!this.heal(Math.ceil(target.baseMaxhp * 0.5));
|
|
251
|
+
}
|
|
252
|
+
if (success && !target.isAlly(source)) {
|
|
253
|
+
target.staleness = 'external';
|
|
254
|
+
}
|
|
255
|
+
if (!success) {
|
|
256
|
+
this.add('-fail', target, 'heal');
|
|
257
|
+
return null;
|
|
258
|
+
}
|
|
259
|
+
return success;
|
|
260
|
+
},
|
|
261
|
+
},
|
|
243
262
|
foresight: {
|
|
244
263
|
inherit: true,
|
|
245
264
|
isNonstandard: null,
|
|
@@ -359,6 +378,25 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|
|
359
378
|
inherit: true,
|
|
360
379
|
isNonstandard: null,
|
|
361
380
|
},
|
|
381
|
+
healpulse: {
|
|
382
|
+
inherit: true,
|
|
383
|
+
onHit(target, source) {
|
|
384
|
+
let success = false;
|
|
385
|
+
if (source.hasAbility('megalauncher')) {
|
|
386
|
+
success = !!this.heal(this.modify(target.baseMaxhp, 0.75));
|
|
387
|
+
} else {
|
|
388
|
+
success = !!this.heal(Math.ceil(target.baseMaxhp * 0.5));
|
|
389
|
+
}
|
|
390
|
+
if (success && !target.isAlly(source)) {
|
|
391
|
+
target.staleness = 'external';
|
|
392
|
+
}
|
|
393
|
+
if (!success) {
|
|
394
|
+
this.add('-fail', target, 'heal');
|
|
395
|
+
return null;
|
|
396
|
+
}
|
|
397
|
+
return success;
|
|
398
|
+
},
|
|
399
|
+
},
|
|
362
400
|
heartstamp: {
|
|
363
401
|
inherit: true,
|
|
364
402
|
isNonstandard: null,
|
|
@@ -608,6 +646,54 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|
|
608
646
|
inherit: true,
|
|
609
647
|
isNonstandard: null,
|
|
610
648
|
},
|
|
649
|
+
moonlight: {
|
|
650
|
+
inherit: true,
|
|
651
|
+
onHit(pokemon) {
|
|
652
|
+
let factor = 0.5;
|
|
653
|
+
switch (pokemon.effectiveWeather()) {
|
|
654
|
+
case 'sunnyday':
|
|
655
|
+
case 'desolateland':
|
|
656
|
+
factor = 0.667;
|
|
657
|
+
break;
|
|
658
|
+
case 'raindance':
|
|
659
|
+
case 'primordialsea':
|
|
660
|
+
case 'sandstorm':
|
|
661
|
+
case 'hail':
|
|
662
|
+
factor = 0.25;
|
|
663
|
+
break;
|
|
664
|
+
}
|
|
665
|
+
const success = !!this.heal(this.modify(pokemon.maxhp, factor));
|
|
666
|
+
if (!success) {
|
|
667
|
+
this.add('-fail', pokemon, 'heal');
|
|
668
|
+
return null;
|
|
669
|
+
}
|
|
670
|
+
return success;
|
|
671
|
+
},
|
|
672
|
+
},
|
|
673
|
+
morningsun: {
|
|
674
|
+
inherit: true,
|
|
675
|
+
onHit(pokemon) {
|
|
676
|
+
let factor = 0.5;
|
|
677
|
+
switch (pokemon.effectiveWeather()) {
|
|
678
|
+
case 'sunnyday':
|
|
679
|
+
case 'desolateland':
|
|
680
|
+
factor = 0.667;
|
|
681
|
+
break;
|
|
682
|
+
case 'raindance':
|
|
683
|
+
case 'primordialsea':
|
|
684
|
+
case 'sandstorm':
|
|
685
|
+
case 'hail':
|
|
686
|
+
factor = 0.25;
|
|
687
|
+
break;
|
|
688
|
+
}
|
|
689
|
+
const success = !!this.heal(this.modify(pokemon.maxhp, factor));
|
|
690
|
+
if (!success) {
|
|
691
|
+
this.add('-fail', pokemon, 'heal');
|
|
692
|
+
return null;
|
|
693
|
+
}
|
|
694
|
+
return success;
|
|
695
|
+
},
|
|
696
|
+
},
|
|
611
697
|
mudbomb: {
|
|
612
698
|
inherit: true,
|
|
613
699
|
isNonstandard: null,
|
|
@@ -651,6 +737,14 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|
|
651
737
|
pollenpuff: {
|
|
652
738
|
inherit: true,
|
|
653
739
|
flags: {bullet: 1, protect: 1, mirror: 1},
|
|
740
|
+
onHit(target, source) {
|
|
741
|
+
if (source.isAlly(target)) {
|
|
742
|
+
if (!this.heal(Math.floor(target.baseMaxhp * 0.5))) {
|
|
743
|
+
this.add('-immune', target);
|
|
744
|
+
return null;
|
|
745
|
+
}
|
|
746
|
+
}
|
|
747
|
+
},
|
|
654
748
|
},
|
|
655
749
|
powder: {
|
|
656
750
|
inherit: true,
|
|
@@ -722,6 +816,13 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|
|
722
816
|
inherit: true,
|
|
723
817
|
isNonstandard: null,
|
|
724
818
|
},
|
|
819
|
+
purify: {
|
|
820
|
+
inherit: true,
|
|
821
|
+
onHit(target, source) {
|
|
822
|
+
if (!target.cureStatus()) return false;
|
|
823
|
+
this.heal(Math.ceil(source.maxhp * 0.5), source);
|
|
824
|
+
},
|
|
825
|
+
},
|
|
725
826
|
pursuit: {
|
|
726
827
|
inherit: true,
|
|
727
828
|
isNonstandard: null,
|
|
@@ -815,6 +916,21 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|
|
815
916
|
inherit: true,
|
|
816
917
|
isNonstandard: null,
|
|
817
918
|
},
|
|
919
|
+
shoreup: {
|
|
920
|
+
inherit: true,
|
|
921
|
+
onHit(pokemon) {
|
|
922
|
+
let factor = 0.5;
|
|
923
|
+
if (this.field.isWeather('sandstorm')) {
|
|
924
|
+
factor = 0.667;
|
|
925
|
+
}
|
|
926
|
+
const success = !!this.heal(this.modify(pokemon.maxhp, factor));
|
|
927
|
+
if (!success) {
|
|
928
|
+
this.add('-fail', pokemon, 'heal');
|
|
929
|
+
return null;
|
|
930
|
+
}
|
|
931
|
+
return success;
|
|
932
|
+
},
|
|
933
|
+
},
|
|
818
934
|
signalbeam: {
|
|
819
935
|
inherit: true,
|
|
820
936
|
isNonstandard: null,
|
|
@@ -898,6 +1014,16 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|
|
898
1014
|
inherit: true,
|
|
899
1015
|
isNonstandard: null,
|
|
900
1016
|
},
|
|
1017
|
+
swallow: {
|
|
1018
|
+
inherit: true,
|
|
1019
|
+
onHit(pokemon) {
|
|
1020
|
+
const healAmount = [0.25, 0.5, 1];
|
|
1021
|
+
const success = !!this.heal(this.modify(pokemon.maxhp, healAmount[(pokemon.volatiles['stockpile'].layers - 1)]));
|
|
1022
|
+
if (!success) this.add('-fail', pokemon, 'heal');
|
|
1023
|
+
pokemon.removeVolatile('stockpile');
|
|
1024
|
+
return success || null;
|
|
1025
|
+
},
|
|
1026
|
+
},
|
|
901
1027
|
switcheroo: {
|
|
902
1028
|
inherit: true,
|
|
903
1029
|
onHit(target, source, move) {
|
|
@@ -935,6 +1061,30 @@ export const Moves: {[k: string]: ModdedMoveData} = {
|
|
|
935
1061
|
inherit: true,
|
|
936
1062
|
isNonstandard: null,
|
|
937
1063
|
},
|
|
1064
|
+
synthesis: {
|
|
1065
|
+
inherit: true,
|
|
1066
|
+
onHit(pokemon) {
|
|
1067
|
+
let factor = 0.5;
|
|
1068
|
+
switch (pokemon.effectiveWeather()) {
|
|
1069
|
+
case 'sunnyday':
|
|
1070
|
+
case 'desolateland':
|
|
1071
|
+
factor = 0.667;
|
|
1072
|
+
break;
|
|
1073
|
+
case 'raindance':
|
|
1074
|
+
case 'primordialsea':
|
|
1075
|
+
case 'sandstorm':
|
|
1076
|
+
case 'hail':
|
|
1077
|
+
factor = 0.25;
|
|
1078
|
+
break;
|
|
1079
|
+
}
|
|
1080
|
+
const success = !!this.heal(this.modify(pokemon.maxhp, factor));
|
|
1081
|
+
if (!success) {
|
|
1082
|
+
this.add('-fail', pokemon, 'heal');
|
|
1083
|
+
return null;
|
|
1084
|
+
}
|
|
1085
|
+
return success;
|
|
1086
|
+
},
|
|
1087
|
+
},
|
|
938
1088
|
tailglow: {
|
|
939
1089
|
inherit: true,
|
|
940
1090
|
isNonstandard: null,
|