* 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>
`checkLearnset` has been renamed `checkCanLearn`.
`reconcileLearnset` has been replaced with `validateMoves`, which
bundles the actual `checkCanLearn` calls with the old
`reconcileLearnset`, making for a better name.
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.
PS wasn't correctly detecting `disabled: 'hidden'` moves as disabled
for the purposes of detecting Struggle activation. This has been fixed.
Thanks to DaWoblefet for unit tests!
Fixes#6620
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.
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.
`Dex.installFormat` has been deprecated and removed. Formats are now
directly created and cached by our unit test framework. This should
lead to fewer weird bugs.
In Generation 8, a Pokemon's speed updates dynamically. Meaning that it can move sooner than expected if its speed is modified by something such as tailwind or swift swim. This is different from past generations where the Pokemon's updated speed would only take effect the next turn.