* Activate Wonder Guard if the target is immune
* Lint
* Correctly check for immunities
* Refactor runImmunity
* Change all move.type to move
For example, this fixes Thousand Arrows vs Air Ballon Terapagos. Tera Shell was not activating.
* Remove unnecessary cast
PP is now deducted after the move rather than before, which is more
accurate and also simplifies the code.
Co-authored-by: Guangcong Luo <guangcongluo@gmail.com>
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.
The only issue came from gen1 not using modData. After fixing that, everything just works.
You can test this by deepFreezing dataCache right after running Scripts.init and
then loading all the species for all the mods and running the test suite.
* Copy everything from Gen 2 thrashing condition and stop inheriting
* Remove residual and MoveAborted events (don't occur in gen 1)
* effectState.duration --> effectState.time, so that thrashing pauses on slp/frz/flinch/partial trapping. Also, confusion is now applied before the final Thrash hits (but after confusion check, so the final Thrash won't be interrupted)
* Confusion is only applied if Thrashing effect ends naturally, not due to full para/confusion
* Thrash should lock the user in, even if it misses/hits a Ghost/etc
* Add Thrash tests: duration and locking in the user when it misses
* Thrash locks in the user even if it breaks a sub
* Remove unnecessary events for thrashing moves
* Thrash is paused when the user is asleep, frozen, partially trapped, or flinching
* Thrash is paused when disabled
* Rage duration is permanent, not 255
* Implement Rage/Thrash accuracy bug (need to change when lockedmove volatile is removed
* Move location of applying thrashing effect, so that the final turn will be subject to accuracy bug
* Add test for Thrash accuracy bug
* Add test for Rage accuracy bug
* Remove useless line
* Use an event for obtaining accuracy of Rage/Thrash
* Revert last change
* Protect/Detect/Endure don't exist in gen 1
* Add twoturnmove condition to gen 1
* Gens 1-2: Mirror Move fails immediately after a switch
* Fix first Mirror Move test: Fearow was getting OHKO'd by Hyper Beam
* pokemon.lastMove (for Mirror Move) isn't updated with the charging turn
* Remove unnecessary code
* Add onTryMove for each two-turn move with removeVolatile('twoturnmove')
* Sleep, Freeze, partial trapping, flinch don't stop two turn moves
* Para/confusion stops thrashing moves + copy over lockedmove condition details instead of inheriting
* Remove some unnecessary code
* Add Dig/Fly invulnerability glitch
* Add hint for Dig/Fly invulnerability glitch
* Gen 1 Japanese and Stadium
* put Dig before Fly
* Self-targeted moves (e.g. Recover) will work while semi-invulnerable
* Revert changes to lockedmove, do them in a future patch
* move ends if it fails due to disable
* Two-turn moves use PP in their second turn
* restore mocharc
* Remove unnecessary code
* Fix PP usage for Metronome/Mirror Move calling two-turn moves
* Gen 1: SonicBoom can be Countered
* OHKO moves do 65535 damage (matters for Counter against sub)
* Move damage comparison with target hp outside getDamage()
* Remove a blank line
* Move damage comparison with target hp outside getDamage() (Stadium)
* Add counter test
* Fix Metronome not failing if calling Counter (move setting lastDamage before tryMoveHit)
* Do the same for Stadium
* Start phasing out pokemon.lastDamage from Gen 1 code
* Failed Counter doesn't zero lastDamage
* When a move misses, battle.lastDamage is set to 0
* Remove all pokemon.lastDamage
* Remove a couple of comments
* Move Gen 1 Counter tests into its own section
* Confusion damage, (h)jk recoil, and draining can be countered in gen 1
* Recoil and Drain round down in gen 1 (against substitute)
* Add tests for Counter + fix linting issue
* lastSelectedMove is updated when Mirror Move or Metronome calls another move
* Move pokemon.side.lastMove setting into a (more) correct location
* move pokemon.lastMove as well
* Remove unnecessary seed in test
* The volatiles don't actually do anything
* Gen 1: implement stat down overflow glitch
* Change the wording of the hint slightly
* Add hint for division by zero avoidance
* Gen 1: Confusion/Psybeam can confuse enemies with substitute, and with probability 25/256 (not 26/256)
* Add explanatory hint for secondary effect confusion against Substitute
* Gen 1 Stadium: fix battle crash when Wrap KOs an enemy
* Fix explosion against semi-invulnerable enemies + shift disable-rage message location
* Add relevant Explosion test
* Add explanatory hint for Disable/Explosion boosting Rage
* Move rage interaction back to where it was
* Gen 1: Fix Wrap against a substitute
* Gen 1: Fix Wrap when it hits Ghosts behind a substitute
* Remove unnecessary 'else' statement
* Fix Stadium as well
* Fix Gen 1 Japanese as well
* Gen 1: Fix Counter interaction with Substitute
* reverse an unintentional empty line delete
* reverse an unintentional empty line delete
* updating a couple of comments
* Update gen 1 Japanese version as well
* Update test/sim/moves/counter.js
Co-authored-by: pyuk-bot <msaimrkon@gmail.com>
* Update test/sim/moves/counter.js
Co-authored-by: pyuk-bot <msaimrkon@gmail.com>
Co-authored-by: pyuk-bot <msaimrkon@gmail.com>
* Gen 1: Fix multiple Transform bugs
* Modify partners in crime transformInto to be consistent with pokemon.ts changes
* undoing accidental sync of different branch