Commit Graph

36 Commits

Author SHA1 Message Date
The Immortal
a0e94eb2ca RandomTeams mods: Shorten path 2019-11-15 19:50:17 +04:00
Marty-D
ea5d9d70dd Gen III-IV: Correct Intimidate boost attribution 2019-10-30 19:36:03 -04:00
urkerab
bae434e606 Add a single event for a move's own immunity to a specific target (#5904) 2019-10-24 11:00:28 +10:30
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
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
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
The Immortal
f005a5bfcf Random Battle updates 2019-09-25 17:14:39 +04:00
TheTiksiBranch
5550ef5155 Gen 3 Random Battle: Minor Move Generation Improvements (#5788)
* Gen 3 Random Battle: Minor Move Generation Improvements

* fix typo

* fix duplicate case
2019-09-17 17:50:34 +04:00
TheTiksiBranch
5451887047 Gen 3 Random Battle: Improve Movesets (#5787)
* Gen 3 Random Battle: Improve Movesets

* Revert removing Shadow Ball from Gengar
2019-09-17 17:49:39 +04:00
Guangcong Luo
0fdaeea3db Fix spread move messages
In certain cases, a spread move that KOed an opponent would send an
incorrect message which could crash the client. This fixes that while
also simplifying the code.
2019-08-28 20:47:15 -05:00
Marty-D
4c1ee02de6
Gen 3 OU: Move Moltres to OU and Raikou to UUBL
https://www.smogon.com/forums/threads/adv-tier-changes-moltres-raikou.3652636/
2019-07-18 19:27:36 -04:00
Guangcong Luo
413bf26d0d Correct .tier/.isNonstandard for future gens
Fixes #5243
2019-07-09 06:31:42 -05:00
Guangcong Luo
01804f988e Fix spread hit animation
Properly fixes https://github.com/Zarel/Pokemon-Showdown-Client/pull/1267
2019-05-16 12:52:13 +04:00
Kirk Scheibelhut
29430984f6 Only add the '-status slp' message in statuses (#5486) 2019-05-08 11:52:44 -04:00
Kirk Scheibelhut
a0734bde6f Redo Endless Battle Clause with a new specification (#5472) 2019-05-07 11:18:06 +09:30
Kirk Scheibelhut
10c744f733 Introduce an ID type to sim (#5468) 2019-05-04 13:13:12 +12:00
Kirk Scheibelhut
e632bd1991 Fixes crash in gen3doubles due to missing target (#5465)
Fixes #5654
2019-04-26 19:47:38 -04:00
Kirk Scheibelhut
7e4929a39f Change protocol for '|split' message type (#5331) (#5332) 2019-04-22 09:20:47 +09:30
Marty-D
9428d274cc Gen III: Improve Truant implementation 2019-04-17 16:36:25 -04:00
Marty-D
9b28525f4e Gen III: Correct Truant mechanics 2019-04-15 17:15:51 -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
Kevin Lau
cd9694cd20 Random Battle Gen 3: Update ability selection (#5402)
This updates the gen to use the ability selection algorithm from future
gens, where it defaults to the highest rated ability if all are rejected.
2019-04-04 15:50:17 +04:00
Slayer95
694cd47e7b Fix target resolution (#5363) 2019-03-30 22:34:44 +08:00
Slayer95
628f32e8fb Stricter type definitions for dex data (#5375)
BattleStatuses switched to PureEffectData
2019-03-30 22:31:04 +08:00
Ivo Julca
ac4b94876b Sim: Refactor to use Battle#getAllPokemon() and Battle#getAllActive() 2019-03-26 23:18:19 -05:00
MacChaeger
9a7ce3dedf Put side conditions on p1 and p2 in multi battles (#5341) 2019-03-27 11:00:36 +08:00
Kirk Scheibelhut
9f5a727ad1 Pull Field out of Battle (#5333) 2019-03-23 02:52:12 +09:00
Kirk Scheibelhut
4be90a0a28 Cleanup sim/battle.ts (#5325) 2019-03-22 01:25:12 +09:00
MacChaeger
6ac8266696 Support 4 player battles (#5266) 2019-03-18 13:37:27 +09:00
MacChaeger
6c486409f4 Fix spread move effect order (#5216) 2019-03-17 23:30:08 +09:00
Kirk Scheibelhut
295f7c6c9f Switch hints to use double quotes everywhere (#5261)
Also, have `Battle#hint` take Side per @urkerab's suggestion.

Followup to #5258, no functionality changes.
2019-03-07 09:34:14 -06:00
Kirk Scheibelhut
961b9882f5 Fix Gen 4 interaction between U-turn/Substitute/Intimidate (#5222) 2019-03-06 08:33:52 -05:00
Kirk Scheibelhut
6e122d5d74 Refactor lib/ to be native Typescript (#5217) 2019-03-02 11:12:24 -06:00
Guangcong Luo
b498bb222c Require object literal method shorthand 2019-02-11 18:14:09 -06:00
Guangcong Luo
f3e45fbb72 Move server code to server/
Also move mods/ to data/mods/

This makes PS more monorepo-like. The intent is to further separate
the sim and the server code, but without fully committing to splitting
the repository itself.

We now support `./pokemon-showdown start` in addition to
`./pokemon-showdown`. I'm not clear which I want to be the default
yet.
2019-02-03 16:07:06 -06:00