Skip to content

Commit ba787e6

Browse files
Merge branch 'smogon:master' into master
2 parents f04628c + 7c05630 commit ba787e6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+812
-3974
lines changed

LICENSE

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
The MIT License (MIT)
22

3-
Copyright (c) 2011-2022 Guangcong Luo and other contributors http://pokemonshowdown.com/
3+
Copyright (c) 2011-2024 Guangcong Luo and other contributors http://pokemonshowdown.com/
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy of
66
this software and associated documentation files (the "Software"), to deal in

config/formats.ts

+197-245
Large diffs are not rendered by default.

data/abilities.ts

+7-2
Original file line numberDiff line numberDiff line change
@@ -93,13 +93,15 @@ export const Abilities: {[abilityid: string]: AbilityData} = {
9393
},
9494
onStart(pokemon) {
9595
// Air Lock does not activate when Skill Swapped or when Neutralizing Gas leaves the field
96+
pokemon.abilityState.ending = false; // Clear the ending flag
9697
if (this.effectState.switchingIn) {
9798
this.add('-ability', pokemon, 'Air Lock');
9899
this.effectState.switchingIn = false;
99100
}
100101
this.eachEvent('WeatherChange', this.effect);
101102
},
102103
onEnd(pokemon) {
104+
pokemon.abilityState.ending = true;
103105
this.eachEvent('WeatherChange', this.effect);
104106
},
105107
suppressWeather: true,
@@ -537,13 +539,15 @@ export const Abilities: {[abilityid: string]: AbilityData} = {
537539
},
538540
onStart(pokemon) {
539541
// Cloud Nine does not activate when Skill Swapped or when Neutralizing Gas leaves the field
542+
pokemon.abilityState.ending = false; // Clear the ending flag
540543
if (this.effectState.switchingIn) {
541544
this.add('-ability', pokemon, 'Cloud Nine');
542545
this.effectState.switchingIn = false;
543546
}
544547
this.eachEvent('WeatherChange', this.effect);
545548
},
546549
onEnd(pokemon) {
550+
pokemon.abilityState.ending = true;
547551
this.eachEvent('WeatherChange', this.effect);
548552
},
549553
suppressWeather: true,
@@ -3423,7 +3427,8 @@ export const Abilities: {[abilityid: string]: AbilityData} = {
34233427
// Protosynthesis is not affected by Utility Umbrella
34243428
if (this.field.isWeather('sunnyday')) {
34253429
pokemon.addVolatile('protosynthesis');
3426-
} else if (!pokemon.volatiles['protosynthesis']?.fromBooster) {
3430+
} else if (!pokemon.volatiles['protosynthesis']?.fromBooster && this.field.weather !== 'sunnyday') {
3431+
// Protosynthesis will not deactivite if Sun is suppressed, hence the direct ID check (isWeather respects supression)
34273432
pokemon.removeVolatile('protosynthesis');
34283433
}
34293434
},
@@ -3678,7 +3683,7 @@ export const Abilities: {[abilityid: string]: AbilityData} = {
36783683
}
36793684
},
36803685
onAfterBoost(boost, target, source, effect) {
3681-
if (effect?.name === 'Intimidate') {
3686+
if (effect?.name === 'Intimidate' && boost.atk) {
36823687
this.boost({spe: 1});
36833688
}
36843689
},

data/conditions.ts

+1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ export const Conditions: {[k: string]: ConditionData} = {
2727
this.add('-status', target, 'par');
2828
}
2929
},
30+
onModifySpePriority: -101,
3031
onModifySpe(spe, pokemon) {
3132
// Paralysis occurs after all other Speed modifiers, so evaluate all modifiers up to this point first
3233
spe = this.finalModify(spe);

data/formats-data.ts

+26-26
Original file line numberDiff line numberDiff line change
@@ -651,7 +651,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
651651
tier: "LC",
652652
},
653653
dodrio: {
654-
tier: "ZU",
654+
tier: "ZUBL",
655655
doublesTier: "(DUU)",
656656
natDexTier: "RU",
657657
},
@@ -683,7 +683,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
683683
tier: "LC",
684684
},
685685
cloyster: {
686-
tier: "NUBL",
686+
tier: "NU",
687687
doublesTier: "(DUU)",
688688
natDexTier: "RU",
689689
},
@@ -1020,7 +1020,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
10201020
tier: "LC",
10211021
},
10221022
gyarados: {
1023-
tier: "NU",
1023+
tier: "NUBL",
10241024
doublesTier: "DUU",
10251025
natDexTier: "UUBL",
10261026
},
@@ -1434,7 +1434,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
14341434
tier: "NFE",
14351435
},
14361436
farigiraf: {
1437-
tier: "ZU",
1437+
tier: "ZUBL",
14381438
doublesTier: "DOU",
14391439
natDexTier: "RU",
14401440
},
@@ -1656,7 +1656,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
16561656
natDexTier: "RU",
16571657
},
16581658
suicune: {
1659-
tier: "NU",
1659+
tier: "NUBL",
16601660
doublesTier: "(DUU)",
16611661
natDexTier: "RU",
16621662
},
@@ -1863,7 +1863,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
18631863
gallademega: {
18641864
isNonstandard: "Past",
18651865
tier: "Illegal",
1866-
natDexTier: "RU",
1866+
natDexTier: "RUBL",
18671867
},
18681868
surskit: {
18691869
tier: "LC",
@@ -2145,7 +2145,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
21452145
altariamega: {
21462146
isNonstandard: "Past",
21472147
tier: "Illegal",
2148-
natDexTier: "RU",
2148+
natDexTier: "RUBL",
21492149
},
21502150
zangoose: {
21512151
tier: "ZU",
@@ -2405,12 +2405,12 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
24052405
latios: {
24062406
tier: "UU",
24072407
doublesTier: "(DUU)",
2408-
natDexTier: "UU",
2408+
natDexTier: "UUBL",
24092409
},
24102410
latiosmega: {
24112411
isNonstandard: "Past",
24122412
tier: "Illegal",
2413-
natDexTier: "UU",
2413+
natDexTier: "UUBL",
24142414
},
24152415
kyogre: {
24162416
tier: "Uber",
@@ -2454,7 +2454,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
24542454
},
24552455
deoxysattack: {
24562456
tier: "Uber",
2457-
doublesTier: "DOU",
2457+
doublesTier: "DUber",
24582458
natDexTier: "Uber",
24592459
},
24602460
deoxysdefense: {
@@ -2689,7 +2689,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
26892689
tier: "NFE",
26902690
},
26912691
garchomp: {
2692-
tier: "UU",
2692+
tier: "UUBL",
26932693
doublesTier: "DUU",
26942694
natDexTier: "OU",
26952695
},
@@ -3552,7 +3552,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
35523552
tier: "NFE",
35533553
},
35543554
braviary: {
3555-
tier: "ZU",
3555+
tier: "ZUBL",
35563556
doublesTier: "(DUU)",
35573557
natDexTier: "RU",
35583558
},
@@ -3633,7 +3633,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
36333633
thundurustherian: {
36343634
tier: "RU",
36353635
doublesTier: "(DUU)",
3636-
natDexTier: "UU",
3636+
natDexTier: "UUBL",
36373637
},
36383638
reshiram: {
36393639
tier: "Uber",
@@ -4031,7 +4031,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
40314031
xerneas: {
40324032
isNonstandard: "Past",
40334033
tier: "Illegal",
4034-
natDexTier: "Uber",
4034+
natDexTier: "AG",
40354035
},
40364036
xerneasneutral: {
40374037
isNonstandard: "Custom", // can't be used in battle
@@ -4073,7 +4073,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
40734073
natDexTier: "RU",
40744074
},
40754075
hoopaunbound: {
4076-
tier: "RU",
4076+
tier: "RUBL",
40774077
doublesTier: "(DUU)",
40784078
natDexTier: "OU",
40794079
},
@@ -4167,12 +4167,12 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
41674167
natDexTier: "RU",
41684168
},
41694169
oricorio: {
4170-
tier: "ZU",
4170+
tier: "ZUBL",
41714171
doublesTier: "(DUU)",
41724172
natDexTier: "RU",
41734173
},
41744174
oricoriopompom: {
4175-
tier: "NUBL",
4175+
tier: "NU",
41764176
doublesTier: "(DUU)",
41774177
natDexTier: "RU",
41784178
},
@@ -4281,7 +4281,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
42814281
tier: "LC",
42824282
},
42834283
salazzle: {
4284-
tier: "PU",
4284+
tier: "PUBL",
42854285
doublesTier: "(DUU)",
42864286
natDexTier: "RU",
42874287
},
@@ -4582,7 +4582,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
45824582
natDexTier: "RU",
45834583
},
45844584
necrozma: {
4585-
tier: "NU",
4585+
tier: "NUBL",
45864586
doublesTier: "(DUU)",
45874587
natDexTier: "RU",
45884588
},
@@ -4773,7 +4773,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
47734773
tier: "LC",
47744774
},
47754775
drednaw: {
4776-
tier: "NUBL",
4776+
tier: "NU",
47774777
doublesTier: "(DUU)",
47784778
natDexTier: "RU",
47794779
},
@@ -5093,7 +5093,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
50935093
tier: "Illegal",
50945094
},
50955095
zarude: {
5096-
tier: "RU",
5096+
tier: "RUBL",
50975097
doublesTier: "(DUU)",
50985098
natDexTier: "RU",
50995099
},
@@ -5103,7 +5103,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
51035103
natDexTier: "Uber",
51045104
},
51055105
regidrago: {
5106-
tier: "NU",
5106+
tier: "NUBL",
51075107
doublesTier: "(DUU)",
51085108
natDexTier: "RU",
51095109
},
@@ -5308,7 +5308,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
53085308
tier: "LC",
53095309
},
53105310
cetitan: {
5311-
tier: "NUBL",
5311+
tier: "NU",
53125312
doublesTier: "(DUU)",
53135313
natDexTier: "RU",
53145314
},
@@ -5468,7 +5468,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
54685468
},
54695469
roaringmoon: {
54705470
tier: "OU",
5471-
doublesTier: "DUU",
5471+
doublesTier: "DBL",
54725472
natDexTier: "Uber",
54735473
},
54745474
irontreads: {
@@ -5492,7 +5492,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
54925492
natDexTier: "RU",
54935493
},
54945494
ironthorns: {
5495-
tier: "NUBL",
5495+
tier: "NU",
54965496
doublesTier: "(DUU)",
54975497
natDexTier: "RU",
54985498
},
@@ -5553,7 +5553,7 @@ export const FormatsData: {[k: string]: SpeciesFormatsData} = {
55535553
tier: "LC",
55545554
},
55555555
armarouge: {
5556-
tier: "NU",
5556+
tier: "NUBL",
55575557
doublesTier: "DUU",
55585558
natDexTier: "RU",
55595559
},

data/learnsets.ts

+5-4
Original file line numberDiff line numberDiff line change
@@ -91024,25 +91024,25 @@ export const Learnsets: {[k: string]: LearnsetData} = {
9102491024
hex: ["9M"],
9102591025
hyperbeam: ["9M"],
9102691026
hypervoice: ["9M"],
91027-
icywind: ["9M"],
91027+
icywind: ["9M", "9S1"],
9102891028
imprison: ["9M"],
9102991029
magicalleaf: ["9M"],
9103091030
meanlook: ["9L14"],
9103191031
memento: ["9L21"],
9103291032
mistyterrain: ["9M"],
91033-
moonblast: ["9L84"],
91033+
moonblast: ["9L84", "9S1"],
9103491034
mysticalfire: ["9L49", "9S0"],
9103591035
nightshade: ["9M"],
9103691036
painsplit: ["9M", "9L77"],
9103791037
perishsong: ["9L91"],
9103891038
phantomforce: ["9M", "9L70"],
9103991039
poltergeist: ["9M"],
91040-
powergem: ["9M", "9L56"],
91040+
powergem: ["9M", "9L56", "9S1"],
9104191041
protect: ["9M"],
9104291042
psybeam: ["9M", "9L7"],
9104391043
psyshock: ["9M", "9L63"],
9104491044
rest: ["9M"],
91045-
shadowball: ["9M", "9L42", "9S0"],
91045+
shadowball: ["9M", "9L42", "9S0", "9S1"],
9104691046
sleeptalk: ["9M"],
9104791047
spite: ["9M", "9L1"],
9104891048
storedpower: ["9M"],
@@ -91059,6 +91059,7 @@ export const Learnsets: {[k: string]: LearnsetData} = {
9105991059
},
9106091060
eventData: [
9106191061
{generation: 9, level: 52, shiny: 1, moves: ["shadowball", "mysticalfire", "wish", "dazzlinggleam"]},
91062+
{generation: 9, level: 75, shiny: 1, perfectIVs: 4, moves: ["shadowball", "moonblast", "powergem", "icywind"]},
9106291063
],
9106391064
eventOnly: true,
9106491065
},

data/mods/gen4/abilities.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -538,7 +538,7 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
538538
inherit: true,
539539
onTryHit(target, source, move) {
540540
if (move.id === 'firefang') {
541-
this.hint("In Gen 4, Fire Fang is always able to hit through Wonder Guard.");
541+
this.hint("In Gen 4, Fire Fang is always able to hit through Wonder Guard.", true, target.side);
542542
return;
543543
}
544544
if (target === source || move.category === 'Status' || move.type === '???' || move.id === 'struggle') return;

data/mods/gen4/moves.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -802,7 +802,7 @@ export const Moves: {[k: string]: ModdedMoveData} = {
802802
const item = target.getItem();
803803
if (this.runEvent('TakeItem', target, source, move, item)) {
804804
target.itemState.knockedOff = true;
805-
this.add('-enditem', target, item.name, '[from] move: Knock Off');
805+
this.add('-enditem', target, item.name, '[from] move: Knock Off', '[of] ' + source);
806806
this.hint("In Gens 3-4, Knock Off only makes the target's item unusable; it cannot obtain a new item.", true);
807807
}
808808
},

0 commit comments

Comments
 (0)