This is required to add support for Stadium in unit tests. A lot of the
codebase assumes that all mods start with "gen" followed by a number,
but I don't want to touch the others at the moment.
* Improve Volcalith tests readability
* Add G-Max Volcalith recoil damage order test
* Add 1 HP priority tests
* Add charge move targeting test
* Correct assertions of Ripen / Sturdy
* Skip failing tests
* Add Volcalith Black Sludge test
* Add Pressure Max / Z-move tests
* Add Pressure submove test
* Add NGas speed test
* Skip NGas speed test
* Add White Herb double Intimidate test
* Remove debug log
* Remove duplicate Pressure test
* Improve White Herb Intimidate test title
* Add Rollout Storage tests
* Add spread move Rollout storage test
* Add Magician Weakness Policy test
* Add Sleep tests
* Add Shell Bell spread move test
* Add Synchronize Lum Berry test
* oh yeah it doesn't work
* Remove duplicate test
* Add Sunsteel Strike tests
* Add Leech Seed ally switch test
* Add Primal weather Natural Gift test
* Add Emergency Exit hazards test
* Add generic hazards tests
* Add and standardize Arceus tests
* Add Transform ability test
* Add and standardize Parting Shot tests
* Add Memento tests
* Add Me First test
* Add Cursed Body Z-move test
* Add Assurance targeting test
* Clarify Assurance test description
* Add double faint switch test
* Add Receiver KO boost ability
* Add double Unnerve test
* Add Dynamax Eject Pack test
* Improve Dynamax forced switchout test
* Add Protective Pads Perish Body test
* Add Sticky Web Pressure test
* Add Speed modifier lower bound test
* Add Cloud Nine Hydration test
* Correct Cursed Body test
* Add Grassy Terrain Leftovers test
* Remove leftover debug
* Add additional Receiver and Soul-Heart tests
* Add Spite tests
* mish
* Add Shell Bell multihit test
* Add WP Dragon Tail test
Co-authored-by: The Immortal <the_immortal123@live.com>
It was in Mirror Coat rather than Counter.
Also switch to checking for "activated", so it doesn't conflict
with #7702 (committed separately so git blame still shows me as
test author)
It turns out that when I switched us from `assert` to `assert.strict`,
I didn't actually update any existing tests or tell anyone:
0df0d234f2
So apparently everyone else just kept on using `strictEqual`.
This will be a PR and also throw an error if people continue trying to
use it, which should make it much clearer what PS policy is on this.
A lot of the problem may be that TypeScript marks assert.strict.equal
as deprecated when it's not. This was fixed 4 days ago:
https://github.com/DefinitelyTyped/DefinitelyTyped/pull/48452
But this probably hasn't made it to a thing yet. Until then, you'll
have to deal with TS marking your tests as deprecated, but it shouldn't
be too long.
Accidentally using `assert` instead of `assert.strict` should now show
an error. This protects against the probably much worse mistake of
accidentally using `assert.equal` rather than `assert.strict.equal`.
`assert.ok` is also deprecated now.
Inverse Mod needs to go first, to calculate the negated effectiveness.
Disguise goes second, to suppress effectiveness.
Delta Stream goes third, to weaken moves super-effective against Flying types.
Tar Shot goes last, to make its victim weak to Fire type moves.
This allows the existing test for Delta Stream with Tar Shot to pass.
Additionally a new test for Delta Stream with Inverse Mod now passes.
A test for Flying Press with Inverse Mod is also included.
The server now uses the same approach as the client of treating
cosmetic formes as real formes, as documented in `FORMES.md`.
This eliminates the need for the `.forme` and `.speciesid` properties
of `Pokemon`.
`pokemon.id` has also been removed: useful, since it turns out half
of its uses were bugs that should have used `pokemon.species.id`.
Not having prefer-const on the JS side makes JS -> TS refactors really
unreadable. This commit just auto-fixes it so we're using
`prefer-const` everywhere.
`activeTurns` was previously a horrible hack, used for "first full turn
only" effects like Speed Boost as well as "first move action" effects
like Fake Out.
In addition to being a huge hazard for API users such as OMs, this also
means weird bugs such as Speed Boost not working if you get hit by
Sky Drop on your first turn.
This commit fixes them by splitting these counters into two - an
`activeTurns` counter for Speed Boost, and an `activeMoveActions`
counter for Fake Out.
Dragon Darts has a variety of mechanics that I don't care to fully
write unit tests for, but this commit should track its in-game
implementation much more closely.
If anyone still has a Dragon Darts interaction that this implementation
handles incorrectly, they should confront me about it.
Fixes#6279
- Healing Wish is not consumed if the Pokemon switching in
has full health and no status condition.
- Being statused with full health will consume the Healing Wish.
- It does not trigger on damage after switching in.
- The effect will be consumed if an injured Pokemon is swapped
into a slot with an active Healing Wish by Ally Switch.
Check whether the move is a max move. If it isn't, then resolve the choice as usual. Otherwise, do not add the move to the queue, and let the runDynamax mechanic handle move resolution.
Added regression test to check for focus punch message in both dynamaxed and regular use
It turns out not creating a format on-the-fly breaks deserialization.
We now just use the same custom-rule system that tournaments use.
Some hacks are currently necessary (many tests assume that we're
playing in Anything Goes rather than Custom Game) but we'll work them
out in time.
- Centiskorch was misspelled in formats-data, causing a crash in the
egg validator
- A few validation errors were due to Gen 6 not inheriting from Gen 7,
Gen 7 not having a scripts file, and Gen 8 having a gen of 7
- Intimidate (Gen 7) wasn't inheriting from Intimidate (Gen 8), giving
it no name, causing a few validation errors
(Technically not a build error, but I also added Keen Eye to the list
of Intimidate immunities, as reported by SadisticMystic.)
- A lot of tests relied on Teleport always failing; these have been
switched to Gen 7 or swapped Teleport for Celebrate
- Inverse Mod suddenly stopped working; its implementation was a huge
hack and I can't figure out what went wrong, so I've switched it to
using the same system the other mod tests use. It's still a huge
hack, but I don't have the free time to fix it right now.
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.