Skip to content

Commit f837da9

Browse files
committed
1 parent 504de5e commit f837da9

22 files changed

+100
-69
lines changed

client/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@
1515
"build"
1616
],
1717
"dependencies": {
18-
"@pkmn/data": "^0.9.19",
18+
"@pkmn/data": "^0.9.20",
1919
"@pkmn/protocol": "^0.6.27"
2020
},
2121
"devDependencies": {
22-
"@pkmn/dex": "^0.9.19"
22+
"@pkmn/dex": "^0.9.20"
2323
},
2424
"scripts": {
2525
"lint": "eslint --cache src --ext ts",

data/package.json

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@pkmn/data",
3-
"version": "0.9.19",
3+
"version": "0.9.20",
44
"description": "A forked implementation of the Pokémon Showdown client's data layer",
55
"repository": "github:pkmn/ps",
66
"license": "MIT",
@@ -16,12 +16,12 @@
1616
"build"
1717
],
1818
"dependencies": {
19-
"@pkmn/dex-types": "^0.9.19"
19+
"@pkmn/dex-types": "^0.9.20"
2020
},
2121
"devDependencies": {
22-
"@pkmn/dex": "^0.9.19",
23-
"@pkmn/mods": "^0.9.19",
24-
"@pkmn/sim": "^0.9.19",
22+
"@pkmn/dex": "^0.9.20",
23+
"@pkmn/mods": "^0.9.20",
24+
"@pkmn/sim": "^0.9.20",
2525
"@smogon/calc": "^0.10.0"
2626
},
2727
"scripts": {

dex/data/formats-data.json

+6-6
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@
168168
"butterfree": {"tier": "ZU"},
169169
"weedle": {"tier": "LC"},
170170
"kakuna": {"tier": "NFE"},
171-
"beedrill": {"tier": "ZU"},
171+
"beedrill": {"tier": "ZUBL"},
172172
"pidgey": {"tier": "LC"},
173173
"pidgeotto": {"tier": "NFE"},
174174
"pidgeot": {"tier": "NU"},
@@ -285,7 +285,7 @@
285285
"kingdra": {"tier": "UUBL"},
286286
"goldeen": {"tier": "LC"},
287287
"seaking": {"tier": "PU"},
288-
"staryu": {"tier": "ZU"},
288+
"staryu": {"tier": "ZUBL"},
289289
"starmie": {"tier": "OU"},
290290
"mrmime": {"tier": "UU"},
291291
"scyther": {"tier": "UU"},
@@ -302,7 +302,7 @@
302302
"gyarados": {"tier": "UU"},
303303
"lapras": {"tier": "UUBL"},
304304
"ditto": {"tier": "ZU"},
305-
"eevee": {"tier": "ZU"},
305+
"eevee": {"tier": "ZUBL"},
306306
"vaporeon": {"tier": "OU"},
307307
"jolteon": {"tier": "OU"},
308308
"flareon": {"tier": "NU"},
@@ -7068,7 +7068,7 @@
70687068
},
70697069
"exploud": {"isNonstandard": "Past", "tier": "Illegal", "natDexTier": "RU"},
70707070
"makuhita": {"tier": "LC"},
7071-
"hariyama": {"tier": "ZU", "doublesTier": "(DUU)", "natDexTier": "RU"},
7071+
"hariyama": {"tier": "ZUBL", "doublesTier": "(DUU)", "natDexTier": "RU"},
70727072
"nosepass": {"tier": "LC"},
70737073
"probopass": {"tier": "ZU", "doublesTier": "(DUU)", "natDexTier": "RU"},
70747074
"skitty": {"isNonstandard": "Past", "tier": "Illegal", "natDexTier": "LC"},
@@ -7087,7 +7087,7 @@
70877087
"mawilemega": {
70887088
"isNonstandard": "Past",
70897089
"tier": "Illegal",
7090-
"natDexTier": "UU"
7090+
"natDexTier": "UUBL"
70917091
},
70927092
"aron": {"isNonstandard": "Past", "tier": "Illegal", "natDexTier": "LC"},
70937093
"lairon": {"isNonstandard": "Past", "tier": "Illegal", "natDexTier": "NFE"},
@@ -7882,7 +7882,7 @@
78827882
"chesnaught": {"tier": "RU", "doublesTier": "(DUU)", "natDexTier": "RU"},
78837883
"fennekin": {"tier": "LC"},
78847884
"braixen": {"tier": "NFE"},
7885-
"delphox": {"tier": "ZU", "doublesTier": "(DUU)", "natDexTier": "RU"},
7885+
"delphox": {"tier": "ZUBL", "doublesTier": "(DUU)", "natDexTier": "RU"},
78867886
"froakie": {"tier": "LC"},
78877887
"frogadier": {"tier": "NFE"},
78887888
"greninja": {"tier": "UU", "doublesTier": "(DUU)", "natDexTier": "UU"},

dex/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@pkmn/dex",
3-
"version": "0.9.19",
3+
"version": "0.9.20",
44
"description": "A unification of Pokémon Showdown's client's and server's data layers",
55
"repository": "github:pkmn/ps",
66
"license": "MIT",
@@ -16,7 +16,7 @@
1616
"build"
1717
],
1818
"dependencies": {
19-
"@pkmn/dex-types": "^0.9.19"
19+
"@pkmn/dex-types": "^0.9.20"
2020
},
2121
"scripts": {
2222
"lint": "eslint --cache *.ts",

dex/types/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@pkmn/dex-types",
3-
"version": "0.9.19",
3+
"version": "0.9.20",
44
"types": "index.d.ts",
55
"description": "Common Pokémon Showdown Dex types shared by @pkmn/dex and @pkmn/sim",
66
"repository": "github:pkmn/ps",

integration/build-client

+8
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,7 @@ process.stdout.write("Building `data/teambuilder-tables.js`... ");
342342
const overrideTier = {};
343343
const ubersUUBans = {};
344344
const ndDoublesBans = {};
345+
const thirtyfivePokes = {};
345346
const monotypeBans = {};
346347
const nonstandardMoves = [];
347348
const gen5zuBans = {};
@@ -460,6 +461,10 @@ process.stdout.write("Building `data/teambuilder-tables.js`... ");
460461
if (ndDoubles.exists && Dex.formats.getRuleTable(ndDoubles).isBannedSpecies(species)) {
461462
ndDoublesBans[species.id] = 1;
462463
}
464+
const nd35Pokes = Dex.formats.get(gen + 'nationaldex35pokes');
465+
if (nd35Pokes.exists && !Dex.formats.getRuleTable(nd35Pokes).isBannedSpecies(species)) {
466+
thirtyfivePokes[species.id] = 1;
467+
}
463468
}
464469
if (genNum >= 5) {
465470
if (genNum === 5) {
@@ -493,6 +498,9 @@ process.stdout.write("Building `data/teambuilder-tables.js`... ");
493498
BattleTeambuilderTable['gen' + genNum + 'natdex'].ndDoublesBans = ndDoublesBans;
494499
BattleTeambuilderTable['gen' + genNum + 'natdex'].monotypeBans = monotypeBans;
495500
BattleTeambuilderTable['gen' + genNum + 'natdex'].formatSlices = formatSlices;
501+
if (isNatDex && genNum === 9) {
502+
BattleTeambuilderTable['gen' + genNum + 'natdex'].thirtyfivePokes = thirtyfivePokes;
503+
}
496504
} else if (isMetBattle) {
497505
BattleTeambuilderTable[gen + 'metronome'] = {};
498506
BattleTeambuilderTable[gen + 'metronome'].tiers = tiers;

mods/package.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@pkmn/mods",
3-
"version": "0.9.19",
3+
"version": "0.9.20",
44
"description": "Support for non-standard mods to @pkmn/sim and @pkmn/dex",
55
"repository": "github:pkmn/ps",
66
"author": "Guangcong Luo <[email protected]> (http://guangcongluo.com)",
@@ -114,11 +114,11 @@
114114
"build"
115115
],
116116
"dependencies": {
117-
"@pkmn/dex-types": "^0.9.19"
117+
"@pkmn/dex-types": "^0.9.20"
118118
},
119119
"devDependencies": {
120-
"@pkmn/dex": "^0.9.19",
121-
"@pkmn/sim": "^0.9.19"
120+
"@pkmn/dex": "^0.9.20",
121+
"@pkmn/sim": "^0.9.20"
122122
},
123123
"scripts": {
124124
"lint": "eslint --cache src --ext ts",

protocol/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@
4040
"@pkmn/types": "^4.0.0"
4141
},
4242
"devDependencies": {
43-
"@pkmn/dex": "^0.9.19",
44-
"@pkmn/data": "^0.9.19"
43+
"@pkmn/dex": "^0.9.20",
44+
"@pkmn/data": "^0.9.20"
4545
},
4646
"scripts": {
4747
"lint": "eslint --cache src --ext ts",

randoms/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@pkmn/randoms",
3-
"version": "0.9.19",
3+
"version": "0.9.20",
44
"description": "Random team generation logic for Pokémon Showdown's Random Battle formats",
55
"repository": "github:pkmn/ps",
66
"license": "MIT",
@@ -15,7 +15,7 @@
1515
"build"
1616
],
1717
"dependencies": {
18-
"@pkmn/sim": "^0.9.19"
18+
"@pkmn/sim": "^0.9.20"
1919
},
2020
"scripts": {
2121
"lint": "eslint --cache src --ext ts",

sim/config/formats.ts

+23-29
Original file line numberDiff line numberDiff line change
@@ -414,15 +414,15 @@ export const Formats: import('../sim/dex-formats').FormatList = [
414414
banlist: [
415415
'Arceus-Normal', 'Arceus-Fairy',
416416
'Arceus-Ground', 'Calyrex-Ice',
417-
'Clodsire', 'Deoxys-Attack',
418-
'Ditto', 'Eternatus',
419-
'Flutter Mane', 'Giratina-Origin',
420-
'Glimmora', 'Gliscor',
421-
'Grimmsnarl', 'Groudon',
422-
'Ho-Oh', 'Iron Bundle',
423-
'Iron Treads', 'Kingambit',
424-
'Koraidon', 'Kyogre',
425-
'Kyurem-Black', 'Lunala',
417+
'Chien-Pao', 'Deoxys-Attack',
418+
'Eternatus', 'Flutter Mane',
419+
'Giratina-Origin', 'Glimmora',
420+
'Gliscor', 'Grimmsnarl',
421+
'Groudon', 'Ho-Oh',
422+
'Iron Bundle', 'Iron Treads',
423+
'Kingambit', 'Koraidon',
424+
'Kyogre', 'Kyurem-Black',
425+
'Landorus-Therian', 'Lunala',
426426
'Miraidon', 'Necrozma-Dusk-Mane',
427427
'Rayquaza', 'Ribombee',
428428
'Skeledirge', 'Ting-Lu',
@@ -787,26 +787,20 @@ export const Formats: import('../sim/dex-formats').FormatList = [
787787
mod: 'gen9',
788788
ruleset: [ '[Gen 9] National Dex Ubers' ],
789789
banlist: [
790-
'Arceus-Normal', 'Arceus-Fairy',
791-
'Arceus-Ground', 'Arceus-Water',
792-
'Calyrex-Ice', 'Chien-Pao',
793-
'Deoxys-Attack', 'Eternatus',
794-
'Flutter Mane', 'Giratina-Origin',
795-
'Glimmora', 'Gliscor',
796-
'Grimmsnarl', 'Groudon',
797-
'Ho-Oh', 'Iron Bundle',
798-
'Iron Treads', 'Kingambit',
799-
'Koraidon', 'Kyogre',
800-
'Kyurem-Black', 'Landorus-Therian',
801-
'Miraidon', 'Necrozma-Dusk-Mane',
802-
'Rayquaza', 'Ribombee',
803-
'Skeledirge', 'Ting-Lu',
804-
'Zacian-Crowned', 'Arceus-Ghost',
805-
'Blaziken-Mega', 'Chi-Yu',
806-
'Shaymin-Sky', 'Zacian',
807-
'Zekrom', 'Power Construct',
808-
'Light Clay', 'Ultranecrozium Z',
809-
'Last Respects'
790+
'Arceus-Normal', 'Arceus-Dark', 'Arceus-Ground',
791+
'Calyrex-Ice', 'Chansey', 'Deoxys-Attack',
792+
'Ditto', 'Dondozo', 'Eternatus',
793+
'Giratina-Origin', 'Glimmora', 'Groudon-Primal',
794+
'Ho-Oh', 'Kyogre-Primal', 'Lunala',
795+
'Marshadow', 'Melmetal', 'Mewtwo-Mega-Y',
796+
'Necrozma-Dusk-Mane', 'Necrozma-Ultra', 'Rayquaza',
797+
'Salamence-Mega', 'Smeargle', 'Yveltal',
798+
'Zacian-Crowned', 'Zygarde-50%', 'Arceus-Fairy',
799+
'Arceus-Ghost', 'Arceus-Water', 'Blaziken-Mega',
800+
'Chi-Yu', 'Flutter Mane', 'Kyogre',
801+
'Kyurem-Black', 'Shaymin-Sky', 'Zacian',
802+
'Zekrom', 'Power Construct', 'Light Clay',
803+
'Ultranecrozium Z', 'Last Respects'
810804
]
811805
},
812806
{ name: '[Gen 9] National Dex AG', mod: 'gen9', ruleset: [ 'Standard NatDex' ] },

sim/data/formats-data.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1922,7 +1922,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable =
19221922
tier: "LC",
19231923
},
19241924
hariyama: {
1925-
tier: "ZU",
1925+
tier: "ZUBL",
19261926
doublesTier: "(DUU)",
19271927
natDexTier: "RU",
19281928
},
@@ -1962,7 +1962,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable =
19621962
mawilemega: {
19631963
isNonstandard: "Past",
19641964
tier: "Illegal",
1965-
natDexTier: "UU",
1965+
natDexTier: "UUBL",
19661966
},
19671967
aron: {
19681968
isNonstandard: "Past",
@@ -3714,7 +3714,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable =
37143714
tier: "NFE",
37153715
},
37163716
delphox: {
3717-
tier: "ZU",
3717+
tier: "ZUBL",
37183718
doublesTier: "(DUU)",
37193719
natDexTier: "RU",
37203720
},

sim/data/mods/gen2/formats-data.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat
4242
tier: "NFE",
4343
},
4444
beedrill: {
45-
tier: "ZU",
45+
tier: "ZUBL",
4646
},
4747
pidgey: {
4848
tier: "LC",
@@ -393,7 +393,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat
393393
tier: "PU",
394394
},
395395
staryu: {
396-
tier: "ZU",
396+
tier: "ZUBL",
397397
},
398398
starmie: {
399399
tier: "OU",
@@ -444,7 +444,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat
444444
tier: "ZU",
445445
},
446446
eevee: {
447-
tier: "ZU",
447+
tier: "ZUBL",
448448
},
449449
vaporeon: {
450450
tier: "OU",

sim/data/moves.ts

+7-2
Original file line numberDiff line numberDiff line change
@@ -15500,8 +15500,13 @@ export const Moves: import('../sim/dex-moves').MoveDataTable = {
1550015500
this.add('-fail', source, 'heal');
1550115501
return null;
1550215502
}
15503-
if (source.hasAbility(['insomnia', 'vitalspirit'])) {
15504-
this.add('-fail', source, '[from] ability: ' + source.getAbility().name, '[of] ' + source);
15503+
// insomnia and vital spirit checks are separate so that the message is accurate in multi-ability mods
15504+
if (source.hasAbility('insomnia')) {
15505+
this.add('-fail', source, '[from] ability: Insomnia', '[of] ' + source);
15506+
return null;
15507+
}
15508+
if (source.hasAbility('vitalspirit')) {
15509+
this.add('-fail', source, '[from] ability: Vital Spirit', '[of] ' + source);
1550515510
return null;
1550615511
}
1550715512
},

sim/data/rulesets.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -884,7 +884,8 @@ export const Rulesets: import('../sim/dex-formats').FormatDataTable = {
884884
'Charge Beam', 'Cosmic Power', 'Curse', 'Defend Order', 'Defense Curl', 'Dragon Dance', 'Growth', 'Guard Swap', 'Harden', 'Heart Swap', 'Howl',
885885
'Iron Defense', 'Ingrain', 'Mean Look', 'Meteor Mash', 'Meditate', 'Metal Claw', 'Nasty Plot', 'Ominous Wind', 'Power Trick', 'Psych Up', 'Rage',
886886
'Rock Polish', 'Sharpen', 'Silver Wind', 'Skull Bash', 'Spider Web', 'Steel Wing', 'Stockpile', 'Swords Dance', 'Tail Glow', 'Withdraw', 'Speed Boost',
887-
'Apicot Berry', 'Ganlon Berry', 'Liechi Berry', 'Petaya Berry', 'Salac Berry', 'Starf Berry',
887+
'Apicot Berry', 'Ganlon Berry', 'Liechi Berry', 'Petaya Berry', 'Salac Berry', 'Starf Berry', 'Kee Berry', 'Maranga Berry', 'Weakness Policy',
888+
'Blunder Policy', 'Luminiscent Moss', 'Snowball', 'Throat Spray', 'Mirror Herb', 'Adrenaline Orb',
888889
].map(this.toID);
889890
for (const set of team) {
890891
if (!set.moves.map(this.toID).includes('batonpass' as ID)) continue;

sim/data/tags.ts

+8
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,14 @@ export const Tags: {[id: IDEntry]: TagData} = {
260260
name: "ND RU",
261261
speciesFilter: species => species.natDexTier === 'RU',
262262
},
263+
ndnfe: {
264+
name: "ND NFE",
265+
speciesFilter: species => species.natDexTier === 'NFE',
266+
},
267+
ndlc: {
268+
name: "ND LC",
269+
speciesFilter: species => species.natDexTier === 'LC',
270+
},
263271

264272
// Legality tags
265273
past: {

sim/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@pkmn/sim",
3-
"version": "0.9.19",
3+
"version": "0.9.20",
44
"description": "An automatically generated extraction of just the simulator portion of Pokémon Showdown",
55
"repository": "github:pkmn/ps",
66
"homepage": "https://psim.us",

sim/sim/dex-species.ts

+13-1
Original file line numberDiff line numberDiff line change
@@ -603,10 +603,22 @@ export class DexSpecies {
603603
getMovePool(id: ID, isNatDex = false): Set<ID> {
604604
let eggMovesOnly = false;
605605
let maxGen = this.dex.gen;
606+
const gen3HMMoves = ['cut', 'fly', 'surf', 'strength', 'flash', 'rocksmash', 'waterfall', 'dive'];
607+
const gen4HMMoves = ['cut', 'fly', 'surf', 'strength', 'rocksmash', 'waterfall', 'rockclimb'];
606608
const movePool = new Set<ID>();
607609
for (const {species, learnset} of this.getFullLearnset(id)) {
608610
for (const moveid in learnset) {
609-
eggMovesOnly = this.eggMovesOnly(species, this.get(id));
611+
if (species.isNonstandard !== 'CAP') {
612+
if (gen4HMMoves.includes(moveid) && this.dex.gen >= 5) {
613+
if (!learnset[moveid].some(source => parseInt(source.charAt(0)) >= 5 &&
614+
parseInt(source.charAt(0)) <= this.dex.gen)) continue;
615+
} else if (gen3HMMoves.includes(moveid) && this.dex.gen >= 4 &&
616+
!learnset[moveid].some(source => parseInt(source.charAt(0)) >= 4 &&
617+
parseInt(source.charAt(0)) <= this.dex.gen)) {
618+
continue;
619+
}
620+
}
621+
if (!eggMovesOnly) eggMovesOnly = this.eggMovesOnly(species, this.get(id));
610622
if (eggMovesOnly) {
611623
if (learnset[moveid].some(source => source.startsWith('9E'))) {
612624
movePool.add(moveid as ID);

sim/sim/pokemon.ts

-1
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,6 @@ export class Pokemon {
307307
* An object for storing untyped data, for mods to use.
308308
*/
309309
m: {
310-
gluttonyFlag?: boolean, // Gen-NEXT
311310
innate?: string, // Partners in Crime
312311
originalSpecies?: string, // Mix and Mega
313312
[key: string]: any,

0 commit comments

Comments
 (0)