Commit Graph

32 Commits

Author SHA1 Message Date
Guangcong Luo
78439b4a02
Update to ESLint 9 (#10926)
ESLint has a whole new config format, so I figure it's a good time to
make the config system saner.

- First, we no longer have separate eslint-no-types configs. Lint
  performance shouldn't be enough of a problem to justify the
  relevant maintenance complexity.

- Second, our base config should work out-of-the-box now. `npx eslint`
  will work as expected, without any CLI flags. You should still use
  `npm run lint` which adds the `--cached` flag for performance.

- Third, whatever updates I did fixed style linting, which apparently
  has been bugged for quite some time, considering all the obvious
  mixed-tabs-and-spaces issues I found in the upgrade.

Also here are some changes to our style rules. In particular:

- Curly brackets (for objects etc) now have spaces inside them. Sorry
  for the huge change. ESLint doesn't support our old style, and most
  projects use Prettier style, so we might as well match them in this way.
  See https://github.com/eslint-stylistic/eslint-stylistic/issues/415

- String + number concatenation is no longer allowed. We now
  consistently use template strings for this.
2025-02-25 20:03:46 -08:00
pyuk-bot
7bb2fd1869
Overhaul 'SwitchIn' event for more accurate effect resolution order (#10766) 2025-01-28 16:51:17 -06:00
André Bastos Dias
ce76114c12
Implement fainted forme regression (#10810) 2025-01-25 14:06:40 -06:00
Eric Hall
00f3bdc3d8
Fix crash with Psych Up, Focus Energy, and Dragon Cheer (#10573) 2024-10-01 08:02:22 -05:00
Leonard Craft III
d956c5833a
Fix interaction of Psych Up and Transform with Dragon Cheer (#10412) 2024-07-14 23:45:24 -05:00
Guangcong Luo
88be8d7b3c
Refactor types for Lowercase<string> (#10377)
TypeScript 4.8+ supports Lowercase for lowercase strings, which isn't
exactly what ID is, but can be used to type IDs in object keys and data
entries that previously required string. I'm calling it IDEntry in places
where it should be an ID but TypeScript doesn't support that.

Very conveniently, no additional casts will be needed when using ID
where IDEntry is expected.

It's caught at least a few bugs, which is also why I'm PRing: I didn't
write the code for the bugs it found, and don't know if it's the right
way to fix them.

This ballooned into several other type refactors.
2024-07-01 15:57:14 -07:00
Leonard Craft III
8a5bbbd255
Implement Ability flags (#10048)
* Add AbilityFlags interface

* Add flags to abilities data (Karthik's script)

* Convert isBreakable to its new flag

* Convert most of isPermanent to its new flag

* Convert Trace to its new flag

* Convert Skill Swap to its new flag

* Convert Wandering Spirit to the failskillswap flag

* Update miscelleneous descriptions that depend on cantsuppress

* Convert Entrainment to its flag

* Convert Receiver/PoA to its flag

* Convert Role Play to its flag

* Implement Doodle failure conditions

* Various cleanup

* Breakable fixes

* How did I manage to do this

* Allow LightningRod to be breakable in Gen 3

* Implement notransform flag

* Tera Shell oopsie

* Fix more things after the rebase

* And fix Teraform Zero

* Update data/abilities.ts

* Update data/abilities.ts

* Update data/abilities.ts

* Update data/mods/partnersincrime/abilities.ts

* Update data/abilities.ts

* Update data/mods/sharedpower/abilities.ts

* Update abilities.ts

---------

Co-authored-by: Kris Johnson <11083252+KrisXV@users.noreply.github.com>
2024-01-02 23:55:17 -07:00
Leonard Craft III
3933c2198d
Fix Poison Touch's interaction with Pledge Rainbow (#9756) 2023-09-10 20:57:48 -05:00
pyuk-bot
8dc70cc701
Gen 9: Allow Hacked Megas, etc. to Tera (#9684) 2023-07-31 23:12:46 -05:00
pyuk-bot
ac3647cba0
Remove unnecessary effect overrides from some mods (#9312) 2023-01-11 23:08:25 -06:00
Kris Johnson
0d16603f95 Add updated OM support 2022-12-14 15:57:08 -07:00
WeWuzNidokangz
580ed48329
OMs: Fix generation consistency (#9088)
* Linked: Fix generation consistency

* Fix same issue with Pokebilities

* Clean up
2022-12-05 16:05:08 -07:00
pyuk-bot
ba920c135d
Update Ability Shield with new research (#9081) 2022-11-29 13:27:39 -05:00
WeWuzNidokangz
11a9fe59a5
Pokebilities AAA: Fix Ice Face activation timing (#8766) 2022-05-13 18:16:07 -04:00
WeWuzNidokangz
734224ce36
Pokebilities: Fix Mummy (#8767) 2022-05-12 19:01:53 -04:00
WeWuzNidokangz
0d4f08caad
Pokebilities AAA: Fix Sheer Force interaction with secondaries (#8764) 2022-05-12 18:59:35 -04:00
Kris Johnson
dfb60dfe10 Add January 2022 OMotM and RoA Spotlight 2022-01-01 03:06:00 -07:00
Kris Johnson
497d3a6972 Add May 2021's OMotM, LCotM, and RoA Spotlight 2021-05-01 01:21:59 -06:00
Guangcong Luo
f9fdc73133
Support per-pokemon Residual handlers in Side/Field conditions (#8222)
For side conditions, `onStart`/`onRestart`/`onResidual`/`onEnd`
have been renamed `onSideStart`/`onSideRestart`/`onSideResidual`/`onSideEnd`,
with the `onResidualOrder` properties renamed `onSideResidualOrder`.

For field conditions, `onStart`/`onRestart`/`onResidual`/`onEnd`
have been renamed `onFieldStart`/`onFieldRestart`/`onFieldResidual`/`onFieldEnd`,
with the `onResidualOrder` properties renamed `onFieldResidualOrder`.

(The `onField` and `onSide` part helps make it clear to the type system
that the first argument is a Field or Side, not a Pokemon.)

Side and field conditions can now use `onResidual` to tick separately
on each pokemon in Speed order. `onResidualOrder` (the per-pokemon
tick) can be timed separate from `onSideResidualOrder` (the
per-condition tick), allowing conditions to end at a different priority
than they tick per-pokemon.

Relatedly, `onTeamPreview` and `onStart` in formats now need to be
`onFieldTeamPreview` and `onFieldStart`.

Unrelatedly, `effectData` has been renamed `effectState`, and the
corresponding state containers (`pokemon.statusData`,
`pokemon.speciesData`, `pokemon.itemData`, `pokemon.abilityData`,
`field.weatherData`, `field.terrainData`) have been similarly renamed. I
renamed the types a while ago, but I was holding off renaming the fields
because it would be a breaking change. But this is a breaking change
anyway, so we might as well do it now.

Note: `onResidual` will tick even on `onSideEnd` turns, although
`onSideResidual` won't. When refactoring weather, remember to
check `this.state.duration` so you don't deal weather damage on the
ending turn.

Intended as a better fix for #8216
2021-04-25 10:55:54 -07:00
pyuk-bot
3639079d1f
Protective Pads should not apply to Gulp Missile (#8207)
Co-authored-by: Leonard Craft III <leonardcraft64@gmail.com>
2021-04-19 12:39:33 -04:00
Kris Johnson
568e99b0e5 Shared Power: Fix more abilities 2021-04-15 16:33:13 -06:00
Guangcong Luo
13189fdb02
Update Dex API (#8181)
This is the change that renames:

- `Dex.getMove` -> `Dex.moves.get`
- `Dex.getAbility` -> `Dex.abilities.get`
- `Dex.getItem` -> `Dex.items.get`
- `Dex.getSpecies` -> `Dex.species.get`
- `Dex.getEffect` -> `Dex.conditions.get`
- `Dex.getNature` -> `Dex.natures.get`
- `Dex.getType` -> `Dex.types.get`
- `Dex.getFormat` -> `Dex.formats.get`

In addition, some other APIs have been updated:

- `getByID` methods have also been added to every other table.
- `Dex.moves.all()` now gets an array of all moves
  - Plus equivalent methods for `abilities`, `items`, `species`, `formats`, `natures`, `types`
  - Note: there's no `Dex.conditions.all()`
- new API: `Dex.stats` for naming/iterating stats
- `Dex.getEffectByID` -> `Dex.conditions.getByID`
- `Dex.getType` -> `Dex.types.get`
- `Dex.data.Formats` -> `Dex.data.Rulesets`
- `Dex.formats` -> now an array `Dex.formats.all()`
- `Dex.getRuleTable` -> `Dex.formats.getRuleTable`
- `Dex.validateFormat` -> `Dex.formats.validate`

Team functions have been split off into a new `sim/teams` package:

- `Dex.packTeam` -> `Teams.pack`
- `Dex.fastUnpackTeam` -> `Teams.unpack`
- `Dex.generateTeam` -> `Teams.generate`
- `Dex.stringifyTeam` -> `Teams.export`

`Teams.export` has also been rewritten to better match how it works in client.

This implements #8178
2021-04-08 03:00:37 -07:00
Kris Johnson
10eb793c92
Pokebilities: Fix various ability interactions 2021-04-03 01:40:35 -06:00
Kris Johnson
ebf13740f4 Shared Power: Fix Trace and Mirror Armor 2021-04-01 19:42:32 -06:00
Kris Johnson
876b09b010 OMotM/LCotM: Update bans/fix bugs 2021-04-01 17:25:41 -06:00
Kris Johnson
931b6caf8f Add April 2021 OMotM/RoA Spotlights 2021-04-01 03:52:36 -06:00
The Immortal
075da69253 Update Other Metagames 2019-03-01 17:27:26 +04:00
MacChaeger
bdf74b838a Pokebilities: Update Trace, Power of Alchemy, and Receiver (#5203)
* Pokebilities: Update Trace, Power of Alchemy, and Receiver

Now Trace copies a random ability from a random target, regardless of whether it was originally an innate or not

* Send correct target in message to client
2019-02-25 22:42:37 +04:00
urkerab
9195822c37 Fix transformInto so OMs still work (#5165) 2019-02-15 17:52:20 -06:00
Guangcong Luo
b498bb222c Require object literal method shorthand 2019-02-11 18:14:09 -06:00
MacChaeger
205a753544 Pokebilities: fix special abilities as well as Gastro Acid (#5140) 2019-02-06 16:30:14 +04: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