Commit Graph

901 Commits

Author SHA1 Message Date
Guangcong Luo
3336decb79 Implement Desync Clause Mod for Gen 1 Counter 2020-11-15 02:18:37 +00:00
Marty-D
826dd94eae Validator: Fix Ability attribution from Virtual Console 2020-11-13 11:28:10 -05:00
Marty-D
b098b54187 Validator: Fix Ability attribution from Dream World 2020-11-12 18:13:58 -05:00
urkerab
ec8cd25d59
Properly update Diamond Storm boosts for Gen 7 (#7638) 2020-11-12 10:27:18 -05:00
The Immortal
cc27e0b2fc species.prevo is a name 2020-11-12 06:59:47 +04:00
The Immortal
fff0f6c806 Release Gigantamax Melmetal
Also added necessary validation for it as its event is a special case.
2020-11-12 05:41:24 +04:00
Kris Johnson
890b4d9f59
Refactor text files (#7680) 2020-11-11 14:40:55 -08:00
Guangcong Luo
8543fc291a Fix Gen 2 evo/tradeback validation 2020-11-09 04:12:59 +00:00
Guangcong Luo
1e39e19f00 Refactor chat to use Utils.splitFirst 2020-11-08 18:31:38 +00:00
Guangcong Luo
ca96d7bf49 Fix crash in tests
It turns out `sentLogPos` isn't incremented in unit tests (no actual
use-case was affected). This is the simplest fix, although at some point
we should revisit how battles send and receive data.
2020-11-08 02:14:30 +00:00
Guangcong Luo
1e9b506ee5 Add detector for infinite event loops
This has happened a few times in the past, so this helps prevent them
from spinlocking entire processes.
2020-11-07 22:56:37 +00:00
Guangcong Luo
9b5217ab70
Split up dex-data into more files (#7634)
* Split up dex-data over individual files

This commit introduces:
- `dex-abilities.ts`
- `dex-conditions.ts`
- `dex-formats.ts`
- `dex-items.ts`
- `dex-moves.ts`
- `dex-species.ts`

These files centralize definitions from `dex-data` and `global-types`.

* Inherit ItemData from Item etc

Previously, Condition inherited from ConditionData. Now, ConditionData
inherits from Condition. The advantage of the new approach is that now,
Condition and DataCondition no longer need to be separate types, and
there should be much less duplication of type definitions in general.

This has also been done for

- ItemData/Item/DataItem
- AbilityData/Ability/DataAbility
- FormatData/Format/DataFormat

Species and DataSpecies was already merged, but this also reverses
their inheritance (saving a lot of duplicated definitions in the
process!)

The only one left is MoveData, which is just super complicated and
will need its own commit.
2020-11-05 05:00:13 -08:00
Leonard Craft III
920af21aac
Abilities: Add isPermanent flag (#7614) 2020-11-03 10:31:11 -05:00
The Immortal
7d9eb43ef7 Remove unused definitions 2020-11-02 01:30:16 +04:00
Kris Johnson
909419ca27 Fix /randbats interaction with Gen 2 sets 2020-11-01 14:23:40 -07:00
Guangcong Luo
8b68cdd736 Fix Streams bug
It turns out 001f98b4f2 was wrong.

When urkerab asked why it `peek` wasn't awaited:

e91c4c5260 (commitcomment-41364837)

The answer was because clearing the buffer after peeking needed to
happen synchronous: if the buffer is written to after peeking but
before the buffer is cleared, that write is lost forever.

This just goes to show, if you do something subtle enough to require
type assertions, you should probably add a comment about what's going
on.

Fixes #7605

This also removes `BattleStream#start()` which is completely useless
API complication. A better implementation would properly forward
crashes between streams (maybe `pipeTo` should do this) but as it
stands, it's not doing anything.
2020-11-01 02:06:24 +00:00
The Immortal
42f491a092 Fix Ripen 2020-10-30 14:03:35 +04:00
Kris Johnson
a641cfcce8
Fix Overflow Stat Clause and turn it into a mod (#7604) 2020-10-30 10:59:38 +04:00
Guangcong Luo
e90658c038 Validate Natures in tests
(There's no need to validate natures somewhere that has an actual
performance impact.)
2020-10-29 16:19:07 +00:00
Kris Johnson
ab6e173e24
Move natures into their own file (#7601) 2020-10-29 08:38:03 -07:00
Guangcong Luo
e546236221 Improve error for Japan-only event moves
Thanks Plague Von Karma for help with wording!

Refs #7581
2020-10-29 12:06:36 +00:00
The Immortal
2e6ccdd738 Random Doubles: Fix Regieleki 2020-10-28 22:47:43 +04:00
Guangcong Luo
3b4a3ba7e0 Improve custom rule validation
Stray spaces are now consistently allowed in `/tour rules` and
`/challenge`, but are not allowed in `formats.ts`.

Improves #6811
2020-10-28 02:18:52 +00:00
PartMan
062e42402d
Fix Custom Rules Error (#6811)
`/challenge [Gen 8] OU @@@ +Reshiram` failed earlier, since the rule wasn't trimmed.
2020-10-27 19:00:05 -07:00
Guangcong Luo
a38f0597f8 Remove last vestiges of tslint 2020-10-27 22:49:00 +00:00
Guangcong Luo
c9759954b9 Remove sim/global-variables.d.ts
The sim no longer uses any global variables, so this can and should be
removed.

`server/global-variables` has also been cleaned up, since I'm working
on this.
2020-10-27 22:03:14 +00:00
Guangcong Luo
7eafea8ee1 Add client text data
This syncs data/text to exactly match the client's data/text, in
preparation for them to be merged. The server's data/text will be
canonical, moving forward:

Relevant changes:

- A new file `data/text/default` has been added, for battle messages
  not associated with a move/item/ability.

- As One (Glastrier) and As One (Spectrier) should not have a start
  message; only As One itself.

- Hidden Power's `realMove` property does not belong in data/text
  and has been removed (it's still in data/moves where it belongs).
2020-10-27 16:56:08 +00:00
Guangcong Luo
5f8c36c616 Ban Gen 1 Japan-only event moves
Fixes #7516
2020-10-26 15:30:47 +00:00
May Evans
e102416793
Ban Japanese Gen 1 Events in Int Formats: Part 2 (#7581)
Co-authored-by: Guangcong Luo <guangcongluo@gmail.com>
2020-10-26 06:00:35 -07:00
urkerab
b90f03b77e
Calculate natures with 16-bit truncation (#7540)
Also fixes Let's Go! which wanted to override these but couldn't.
2020-10-25 16:54:43 -07:00
Guangcong Luo
c96b2d6248 Improve sim readme 2020-10-24 22:09:52 +01:00
Kris Johnson
a1058ac29c
Convert VGC 2020's mod to a pre-DLC2 mod (#7564) 2020-10-24 06:00:29 +04:00
The Immortal
381c8190c6 Fix Dragon Ascent Rayquaza validation 2020-10-24 04:58:05 +04:00
Marty-D
0f17b39dd3 As One cannot be suppressed, acquired, or removed 2020-10-23 19:13:27 -04:00
The Immortal
498e38502a Implement As One correctly 2020-10-23 21:10:18 +04:00
The Immortal
e9c62cb86d Prevent As One from being copied or removed 2020-10-23 18:01:51 +04:00
Leonard Craft III
4e6ff7e72c
Validator: Allow Hidden Ability Entei/Raikou/Suicune in Gen 8 natively (#7563) 2020-10-23 15:28:12 +04:00
The Immortal
80d368d1cb Update hidden ability legality 2020-10-23 06:49:43 +04:00
HoeenHero
daa6010ddb Validator: Reject sets with the Gigantamax flag that cant Gmax 2020-10-21 13:50:38 -04:00
Guangcong Luo
ebd1ed11e4 Fix typo in sim/README.md 2020-10-21 17:32:10 +01:00
Guangcong Luo
2faa3d635d Publish 0.11.3 to npm
PS's sim engine is now available on npm!

sim/README.md describes how to use it:

https://github.com/smogon/pokemon-showdown/blob/master/sim/README.md
2020-10-21 17:24:58 +01:00
Guangcong Luo
a55d3cd530 Fix crashes from using moves with no target
Specifically, if you target your ally and your ally uses Ally Switch
(causing you to target yourself), certain moves (including Thunder,
Hurricane, and SSA) crash. This has been fixed.
2020-10-19 18:10:25 +01:00
Guangcong Luo
958d22fc7f Improve error propagation in debuggers
Running `./pokemon-showdown simulate-battle` no longer catches/rethrows
errors. This should make debugging with something like VS Code's
built-in debugger much easier.
2020-10-19 18:09:22 +01:00
Guangcong Luo
49743a6a93 Fix crash from bad changesFrom type
Fixes #7544
2020-10-19 17:40:38 +01:00
Guangcong Luo
d6c650d545 Properly fix HP type corruption crash 2020-10-19 17:18:28 +01:00
Guangcong Luo
9d87616176
Add more style linting rules (#7537)
* Lint arrow-body-style

* Lint prefer-object-spread

Object spread is faster _and_ more readable.

This also fixes a few unnecessary object clones.

* Enable no-parameter-properties

This isn't currently used, but this makes clear that it shouldn't be.

* Refactor more Promises to async/await

* Remove unnecessary code from getDataMoveHTML etc

* Lint prefer-string-starts-ends-with

* Stop using no-undef

According to the typescript-eslint FAQ, this is redundant with
TypeScript, and they're not wrong. This will save us from needing to
specify globals in two different places which will be nice.
2020-10-19 02:42:28 -07:00
Kris Johnson
7ebc4411e9
Fix Allowing Hidden Power with an undefined hpType (#7541) 2020-10-18 22:52:25 -04:00
Guangcong Luo
1c0c77ff6b
Update to TypeScript 4.0 (#7504) 2020-10-10 14:43:32 -07:00
Mia
fb23fc8733
/showteam: Properly handle nick/form names (#7489) 2020-10-08 13:31:29 -07:00
Kris Johnson
ee0e8828bf
Stop serializing the HIT_SUBSTITUTE const in state (#7485) 2020-10-06 22:43:21 -07:00