Commit Graph

159 Commits

Author SHA1 Message Date
Marty-D
bc144b8504 Descriptions: Remove duplicates 2021-01-24 13:26:04 -05:00
The Immortal
b737c5a728 Gen 5: Random Battle improvements
- Various movepool adjustments
- Prevent Substitute + Circle Throw (Poliwrath)
- Improve Protect rejection
- Prevent Water Spout outside of Choice sets (Kyogre)
- Prevent Ice Punch with RestTalk (optimizes Throh and Muk)
- Make RestTalk Throh have Guts
- Make Gardevoir have Trace
- Fix Tinted Lens rejection (Venomoth)
- Improve Gem selection with Unburden
- Increase the bulk cut-off for Focus Sash
- Allow Sturdy leads to roll Custap Berry (Golem)
2021-01-23 22:28:52 +04:00
The Immortal
7ab649a666 Gen 5: Random Battle updates
- Various movepool changes
- Prevent Trick Room + Haze Cofagrigus
- Prevent Extreme Speed + Roost Dragonite
- Prevent Head Smash + Roost Archeops
- Give Bouffalant Sap Sipper
- Give Rain Dance and Sunny Day Pokemon Life Orb
- Remove Rocky Helmet Ferrothorn
- Improve Leftovers, Life Orb, and Focus Sash selection
- Fix Unown's level
2021-01-21 18:32:13 +04:00
The Immortal
1d941a90d3 Random Battle improvements 2021-01-19 06:01:35 +04:00
The Immortal
0bd3e854ff Gen 5: Fix Moody appearing in Randoms 2021-01-17 16:12:02 +04:00
Dawnofares
e7f7260927
Show OHKO message if OHKO move breaks substitute (#7171) 2021-01-12 12:16:17 -05:00
The Immortal
3ae56399bd Label Pokemon banned from LC as NFE 2021-01-11 00:29:18 +04:00
The Immortal
2bd9e757c4 Past gens: Random Battle improvements 2021-01-10 19:19:33 +04:00
Marty-D
ca4fcabc39 Gens 5-6 OU: Put consistently low usage Pokemon in OU by technicality
https://www.smogon.com/forums/posts/8703468/
2021-01-03 13:41:06 -05:00
Leonard Craft III
8f590ef8b7 Dex: Feebas does not get Oblivious until Gen VI 2020-12-26 17:42:43 -06:00
The Immortal
fda0ee61f4 Gen 7/6: Implement Toxic accuracy mechanics 2020-12-22 15:50:05 +04:00
The Immortal
85761cca5b Gen 4 Random: Fix Mono-Electric teams 2020-12-19 14:56:13 +04:00
The Immortal
bce1267fae Improve randoms generator 2020-12-10 15:33:08 +04:00
The Immortal
9965288bd2 Gen 5 Random: Fix Monotype Normal teams
Closes #7782
2020-12-09 22:12:30 +04:00
Leonard Craft III
12da66fb21
Correct Protean interactions & Gravity-blocked Status Z-Moves (#7729) 2020-11-30 16:30:51 -05:00
Kris Johnson
7877b95e67 Random Battle: Fix typo and remove redundant check 2020-11-16 22:40:48 -07:00
The Immortal
201842c421 Allow Same Type Clause to work in gen 5/4 Random 2020-11-15 16:47:03 +04:00
Guangcong Luo
3d68248efa Update to latest eslint
We're skipping two major typescript-eslint versions, so there are a
bunch of changes here, including:

- it's catching a lot of things it didn't catch in the past, for
  reasons unclear to me

- no-unused-vars has to be explicitly disabled in global-types now

- a lot of `ts-ignore`s were never necessary and have been fixed

- Crashlogger can now handle being thrown things that aren't errors.
  This has never been a problem in the past, but to satisfy TypeScript
	we might as well not die in a fire on the off chance someone tries to
	`throw null` or something.
2020-09-29 15:28:08 -07:00
The Immortal
0d71ec82c3 Random Battle improvements 2020-09-22 11:56:21 +04:00
urkerab
5d714fbb56
Replace @ts-ignore with type assertions or other less unsafe constructs (#7390) 2020-09-19 02:07:48 -07:00
ACakeWearingAHat
e3b9b95283
Random Battles updates (#7358) 2020-09-14 01:29:48 +04:00
Strahm, Jeffrey S.(S&T-Student)
188426490b Rename FormatsData to FormatData
(The name FormatsData is inconsistent with how we name other things;
especially since it's supposed to be data for a single format. It was
probably originally a typo. -Zarel)
2020-09-07 19:35:14 -07:00
Guangcong Luo
ea8f52ce97
Move descriptions to data/text/ files (#7036)
This adds some new `data/text/` files, which are the new home for
item/move/ability descriptions, as well as in-game messages, in one
place for ease of translation.
2020-09-06 22:00:11 -07:00
Marty-D
edcbf6a483 Gens 4-6 OU: Put consistently low usage Pokemon in OU by technicality
https://www.smogon.com/forums/posts/8525878/
2020-08-29 10:41:55 -04:00
Mia
deeed6c789
Remove sim/ and data/'s globals (#7091) 2020-08-07 06:44:15 -07:00
Guangcong Luo
4d09f7acde Rename more instances of Effect to Condition 2020-07-26 11:26:23 -07:00
Guangcong Luo
2f805c93a2
Remove "Battle" prefix from data exports (#7039)
`BattlePokedex` is now `Pokedex`, `BattleItems` is now `Items`, etc.

I also renamed `Movedex` to `Moves` and `Statuses` to `Conditions`.

`TypeChart` isn't `Types` yet, because unlike the others, it's not
indexed by ID. That should probably be fixed one day.
2020-07-24 12:42:26 -07:00
The Immortal
8817ca88c7 Move unreleasedHidden and maleOnlyHidden to Pokedex 2020-06-18 17:44:44 +04:00
The Immortal
f9791abba9 Random Battles: Fix cosmetic formes 2020-06-04 03:06:07 +04:00
ACakeWearingAHat
f797cdd98b
Update Gen 5 Random Battle (#6773) 2020-06-04 02:57:35 +04:00
Kris Johnson
960721aef6
Fix Mandibuzz's Gen 5 tier (#6785) 2020-06-01 22:21:34 -07:00
Leonard Craft III
3496491d4f
Fix Farfetch'd / Sirfetch'd with new apostrophe (#6721)
Also fixes Stick's behavior
2020-05-19 21:56:35 -07:00
Marty-D
6311dd7f0b Fix Binding Band implementation 2020-05-15 16:20:59 -04:00
The Immortal
fc62da963a Random Battle: Adjust Pokemon rates 2020-05-03 02:31:15 +04:00
Guangcong Luo
e0f6453b60 Refactor data definitions
- `Modded[Effect]Data` are now correctly defined: they must either have
  `inherit: true` and be partial, or not have `inherit: true` and be a
	complete `[Effect]Data` entry

- `id` is no longer allowed; instead, it's calculated directly from
  `toID(name)`. The one exception, Hidden Power, gets a `realMove`
	property to track this (it's still used to set `.id`, though;
	TODO: really fix it properly).

- `num` is still required in `data/pokedex.ts` (dex number),
  `data/moves.ts` (move index number, for Metronome), and
	`data/items.ts` (minisprite sprite-sheet location). It's still not
	required for mod-only items and moves.

- `num` is no longer allowed for PureEffects (in `statuses.ts`) where
  it's always been meaningless.

- `color` and `heightm`, being completely flavor, are still not
  required for `pokedex.ts` in mods. They're still required in the base
	pokedex.
2020-04-30 21:39:29 -07:00
The Immortal
9bb97f0228 Random Battle: Update forme generation 2020-05-01 08:18:29 +04:00
Kris Johnson
28bf388b98
Typescript data (#6553) 2020-04-23 09:16:09 -07:00
Guangcong Luo
6884c7ee81 Remove unnecessarily quoted keys in data/
(By pulling this out from the rest of the TypeScript refactor, this
should make the diffs for the TypeScript refactor more readable.)
2020-04-16 01:32:18 -07:00
The Immortal
af353fa46f Update BW LC 2020-04-12 17:16:12 +04:00
The Immortal
b99c238b20 Gen 5 Randoms: Fix Medicham 2020-04-12 00:05:07 +04:00
The Immortal
5202df1921 Gen 5 Randoms: Fix NFE level 2020-04-11 10:20:00 +04:00
HoeenHero
3458bdd454 Gen 5: Normal Gem should inherit from base data. 2020-04-10 22:15:16 -04:00
The Immortal
e6682bfb07 Gen 5 Randoms: Fix Mandibuzz 2020-04-11 03:05:06 +04:00
The Immortal
90b1597548 Gen 5/6 Randoms: Update levels 2020-04-08 02:06:37 +04:00
The Immortal
2b17e3bb92 Gen 5 Randoms: Fix Zangoose 2020-04-06 03:41:37 +04:00
The Immortal
6a057e733c Gen 5 Random: Fix Belly Drum 2020-04-06 03:01:42 +04:00
The Immortal
387dd7ce2d Refactor unavailable items
Items that are not available in-game are now consolidated into `isNonstandard`. 'Past' indicates that the item no longer works in the current generation. 'Unobtainable' indicates that the item works but can only be obtained through hacking.

Credit to @lusamine for testing many of these items in Sw/Sh.
2020-04-05 23:54:57 +04:00
The Immortal
659a878e5d Random Battle updates 2020-03-27 22:58:10 +04:00
Kris Johnson
ea1b028950
Rename cosmeticFormeName to forme (#6492) 2020-03-26 18:13:31 +04:00
Kris Johnson
994fc60aed
Rename Template to Species (#6478) 2020-03-25 23:29:27 -07:00
Kris Johnson
bafea519c4
Gen 5: Fix Combusken's tier (#6486) 2020-03-24 20:36:34 -07:00
Kris Johnson
770f1a3f7c
Add support for (NU) (#6475) 2020-03-20 20:50:14 -07:00
The Immortal
d7348167a9 Formats-Data: Do not inherit in older gens
It was used to inherit `eventPokemon` so as to not have duplicated data. Event data is now in Learnsets so this inheriting is unneeded.
2020-03-19 16:59:11 +04:00
The Immortal
51ccfd844d Fix Arceus items in past gens 2020-03-18 22:30:55 +04:00
The Immortal
bbb4da0131 Refactor forme data 2020-03-18 15:17:55 +04:00
Kris Johnson
3e26318758
Refactor learnsets.js (#6466) 2020-03-18 00:59:29 -07:00
The Immortal
ffc88e833f Random Battle: Improve error handling 2020-03-17 14:23:38 +04:00
Kris Johnson
83ebdb27da
Add Dex#getOutOfBattleSpecies (#6463) 2020-03-16 20:31:38 +04:00
The Immortal
bdfb975041 Gen 5 Randoms: Fix Sunflora 2020-03-14 13:09:01 +04:00
The Immortal
a61d7080e3 Fix usage of inheritsFrom 2020-03-10 21:31:06 +04:00
Guangcong Luo
64ff1da81f Refactor more things to use inheritsFrom 2020-03-10 09:59:36 -07:00
Kris Johnson
f56e3ef66d
Fix BW Magic Room priority (#6437) 2020-03-10 17:00:51 +04:00
The Immortal
22feeebaee Gen 5: Fix Rapid Spin 2020-02-29 12:50:50 +04:00
ACakeWearingAHat
69ab44a78e
Gen 5: Randoms update (#6387) 2020-02-27 17:19:51 +04:00
The Immortal
d7c09e0f0e Gen 5: Update Random Battle moves 2020-02-22 02:00:16 +04:00
Guangcong Luo
167c84124a Refactor Gyro/Electro Ball implementations
This one's for you, @scheibo

https://github.com/smogon/pokemon-showdown/pull/5805/files#r326914000
2020-02-18 13:18:39 -08:00
Russell Jones
4615693685
Fix Gyro Ball/Electro Ball divide-by-0 edge cases (#5805) 2020-02-14 10:39:54 -08:00
Guangcong Luo
652c7163cf
Refactor queue to new BattleQueue class (#6358)
Previously, battle queue stuff was just strewn around `battle.ts`.
This gives it a new home: `battle-queue.ts`.

This was intended to make `battle.ts` slightly more tractable, although
the difference is so small that maybe I shouldn't bother. Oh, well,
every little bit helps.
2020-02-12 16:20:17 -08:00
The Immortal
da7507f806 Gen 5 Random: Don't reject Inner Focus 2020-02-06 01:05:45 +04:00
The Immortal
0b06127638 Gen 5 Randoms: Copy updates from gen 6 2020-01-22 08:22:04 +04:00
Guangcong Luo
138fccbaa8 Consolidate more rules into Standard
- `Obtainable` and `Team Preview` are now part of `Standard`

- `minSourceGen: 8` is now a part of `-Unreleased` (which is part of
  `Obtainable`) in Gen 8. Instead, it's NatDex that overrides it with
	`minSourceGen: 1`. This allows `!Standard, Standard NatDex` and
	`!Standard NatDex, Standard` to work as intended.

- Duplicate rules are now checked for (does not apply to subrules, so
  multiple inheritance is still possible)

- It is now possible to inherit `minSourceGen` from rules.
2020-01-03 23:42:48 -05:00
urkerab
b437e64efe Fix tier counting in Gen 5 randbats (#6234) 2019-12-29 20:01:59 +04:00
The Immortal
4414fab072 BW OU: Remove Sleep Clause 2019-12-27 01:08:47 +04:00
The Immortal
f62ff19e8a Improve validation for unobtainable Pokemon
This merges the Glitch and Pokestar tags into a new Unobtainable tag that defines Pokemon that are only obtainable through hacking (such as Floette-Eternal and Missingno.). These Pokemon are legal in Hackmons of their specific generation only. Custom is used in future gens instead of Past because of National Dex legality.
2019-12-25 00:35:39 +04:00
Kris Johnson
cb83dda418 Update Utility Umbrella (#6127) 2019-12-13 00:30:57 +09:00
Guangcong Luo
9b943fb62f Fix Dynamax stat handling
We now track `baseMaxhp`, the pre-Dynamax max HP. We also have a new
function `getUndynamaxedHP` for use by moves that use it (famously,
Endeavor).

- `baseStoredStats` is unused outside of the mouseover stats display.
  I updated its implementation to reflect this.

- Power Construct doesn't have a defined behavior during Dynamax. I
  ended up implementing an approximation of what it should probably do.

- Endeavor, Pain Split, Super Fang, and Nature's Madness now work on
  undynamaxed HP.

- Moves that deal or heal percentage damage now do it based on
  undynamaxed max HP, other than G-Max Finale.

Fixes #6131

Fixes #6087
2019-12-04 09:25:46 +09:00
The Immortal
a0e94eb2ca RandomTeams mods: Shorten path 2019-11-15 19:50:17 +04:00
urkerab
4ab68a3440 Refactor Toxic from Poison types against semi-invulnerability (#5930) 2019-11-06 19:51:22 -05:00
urkerab
5b9d0c8db6 Centralise invulnerability checks for No Guard and Lock-On (#5894) 2019-10-17 22:32:44 -04:00
urkerab
3bfec7bf2f Rename TryImmunity to Invulnerability (#5877)
It's a check for semi-invulnerability rather than any sort of immunity.
2019-10-16 20:12:12 -04:00
Guangcong Luo
2adc80efe4
Improve egg validator (#5854)
Previously, we split gen 2-5 egg move validation into two phases,
`checkLearnset` where we searched for a valid father, and
`reconcileLearnset` where we made sure the father could learn the move
combination.

Egg move validation has now been completely moved out of these
functions and into `validateSource`, which calls `findEggMoveFathers`.

The new algorithm no longer requires `C` moves to be hardcoded into
`learnsets.js`, now doing a more thorough check validation for the
father's move combination. This should be slower than before, but
net performance should be massively improved due to two other
optimizations in this refactor:

- We no longer do any father-searching if the moveset can be obtained
  any other way - in particular, this means no more father validation
  in gen 6+ where all egg move combinations are legal anyway.

- We only check fully-evolved pokemon as fathers (because anything a
  prevo can learn, its evos can learn, too - yes, we remember to make
  exceptions for Salazzle, Combee, and future-gen evos)

In addition, `/learn` should now provide significantly better
information for egg move breeding, since it uses a more thorough check
instead of the validator's short-circuiting the moment it finds a valid
father.

This also improves some baby-only move validation, specifically fixing
the issue with Seismic Toss Charm Chansey.
2019-10-09 00:59:24 +11:00
Guangcong Luo
7a023746ba
Refactor battle.dex out of battle (#5851)
In most other similar systems, like TeamValidator, we use `thing.dex` instead of having it extend `ModdedDex`. Battle has always extended `ModdedDex`, though. This changes Battle to match the others.

This should fix an issue with `Battle.data` not being cached.

This also frees up Battle to extend ObjectReadWriteStream<string> in a future update.
2019-10-06 07:38:08 +11:00
Guangcong Luo
3cd04c349e Fix missed conversions of validate -> obtainable 2019-10-06 04:32:23 +11:00
Guangcong Luo
71498d451d
New validator (#5840)
* Refactor validator

This is a major refactor intended to make the default rules easier to
understand, and also easier for OMs to bypass.

Removed rules:
- `Pokemon`: This is now `-Nonexistent`. Its previous name was intended
  to be interpreted as "simulate the Pokémon games exactly, and only
  allow what they allow". The new name should make it clearer that it
  mainly bans CAPs and other nonexistent Pokémon and functionality.
- `-Illegal`: This is now `Obtainable` (see below).
- `Allow CAP`: This is now `+CAP`. Instead of having a hardcoded rule,
  OMs can now be manually whitelist any pokemon/item/etc or group of
  them, overriding `-Nonexistent`.
- `Ignore Illegal Abilities`: This is now `!Obtainable Abilities` (see
  below).

`Obtainable` was previously `-Illegal`, and does the same thing: Makes
sure you have a regular Pokémon game with only Pokémon that can be
obtained without hacking.

But instead of being a ban, it's now a rule that does nothing by
itself, except contain more rules:
- `Obtainable Moves`
- `Obtainable Abilities`
- `Obtainable Formes`
- `Obtainable Misc`
- `-Nonexistent`
- `-Unreleased`

This allows OMs to piecemeal repeal and unban any of these individual
rules, instead of the previous approach of unbanning them all and
manually reimplementing every single validation you wanted to keep.

* Refactor PokemonSources into a class

This mostly just makes a lot of the weirder checks in the validator
substantially more readable.

This also renames `lsetData` to `setSources`, which should also help
readability.

* Validate Bottle Cap HP types

Fixes an issue reported here:

https://github.com/Zarel/Pokemon-Showdown/issues/5742#issuecomment-533850288

* Fix several move validation issues

Fixes #5742

We have a new MoveSource type: R for Restricted. R moves work like
level-up/tutor/TM moves, except you're limited to one R move.

- Shedinja move stolen from Ninjask in Gen 3-4 are now R moves instead
  of event moves. This allows them to coexist with Nincada egg moves.

- Necrozma-DW/DM now inherit moves/events from Necrozma (like Rotom,
  but with event validation). This allows them to be shiny.

- Pokemon can now get egg moves from their own evolutions. This fixes
  some Tyrogue, Charmander, and Treecko sets mentioned in #5742

- Some more C moves were added, fixing some Hitmontop and Chatot sets
  mentioned in #5742

* Improve ability/move compatibility validator
2019-10-06 04:21:30 +11:00
urkerab
948257cce7 Change weight units to hectograms (#5765) 2019-10-03 14:00:16 +10:00
The Immortal
f005a5bfcf Random Battle updates 2019-09-25 17:14:39 +04:00
The Immortal
26dfe8fd9e Revamp Random Battle
- New ability ratings
- Improve move pools
- Allow non-status moves to be re-rolled if rejected (this fixes all undesired move set combinations)
- Update move & ability rejections
- New item possibilities
2019-09-01 19:40:53 +04:00
Danofares
c7da0b1e82 Fix Toxic interaction with semi-invulnerable states (#5625) 2019-08-08 20:33:13 -04:00
Marty-D
b3b553cfbd Gen V: Prevent illegal Huntail move combination 2019-07-09 21:23:07 -04:00
Guangcong Luo
413bf26d0d Correct .tier/.isNonstandard for future gens
Fixes #5243
2019-07-09 06:31:42 -05:00
The Immortal
dbb0f0306b Gen 5 Random Battle: Fix Meloetta 2019-06-10 16:54:50 +04:00
Kirk Scheibelhut
3d24166cdf toId -> toID
Closes #5479
2019-05-12 17:53:01 -07:00
The Immortal
034b936219 Random Battle updates 2019-04-24 02:50:51 +04:00
Slayer95
cd82475d06 Fix misspecified event handler priorities (#5445) 2019-04-15 18:03:32 -04:00
The Immortal
b0901e6fc9 Random Battle updates 2019-04-15 16:58:48 +04:00
The Immortal
3e735aa6ce Fix typo in previous commit 2019-04-13 18:18:53 +04:00
The Immortal
527c6fe82c Gen 5: Random Battle updates 2019-04-13 16:39:45 +04:00
Marty-D
ad4f80ee67 Fix Anticipation interaction with Hidden Power 2019-04-11 14:01:23 -04:00
Guangcong Luo
a33fc11d26 Refactor Actions, RandomTeamsTypes to namespace
They were previously some weird interface where their actual types
were properties. I guess whoever wrote this was unaware that TypeScript
namespaces were designed for this exact use-case.
2019-04-10 19:58:56 +09:30
urkerab
8034198c87 Camouflage and Soak should fail if they don't change the type (#5425) 2019-04-09 08:18:07 -04:00