* Converted EncoreTag into a MoveRestrictionBattlerTag
* Wrote test and added documentation
* Added documentation describing EncoreTag as a whole
* Added PRE_MOVE lapse code to handle early tag expiration from PP-less encored move
* Replaced PRE_MOVE with CUSTOM for lapsing Encore in situations where the encored move has 0 PP
* Add encore tests
* fix overrides
* Apply suggestions from code review
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Update command-phase.ts
* Addressed failing eslint test
---------
Co-authored-by: frutescens <info@laptop>
Co-authored-by: innerthunder <brandonerickson98@gmail.com>
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Added check to make sure that Sketch does not copy a failed move.
* Added check for Struggle.
* Added a revised check.
* Added test + change to valid move finding conditional.
* Made revision to .find target
* Reverting previous commit, whoops.
* Add moveset checks to Sketch tests
---------
Co-authored-by: frutescens <info@laptop>
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* [Bug] fixed interaction between freeze dry and soaked wonder guard target
* added automated test for freeze dry interaction with soaked wonder guard target
* using parameter instead of function to get typeMultiplier
* Implement Order Up (mostly untested)
* Commander unit tests + bug fixes
* Implement Order Up (misnamed the other commit...)
* Order Up unit tests
* applying Temp's suggestions + other bugfixes
* add TODO comment
* Reviver Seed reapplies Commander
* ESLint woes
* Some animation fixes
* Update locales
* Order Up now uses attr option
* Prevent semi-invulnerability lapsing out while Commanding
* semi-invulnerability test
* Add `edgeCase`
* Update `battle-scene.ts` and `data/field/pokemon.ts`
`battle-scene.ts` changes:
- `getParty()` renamed to `getPlayerParty()` for clarity
- `getNonSwitchedXPokemon()` consolidated into `getXPokemon()`
- Some tsdocs were added/updated for
`getXParty()`, `getXField()` and `getXPokemon()`;
and those functions were explicitly marked as `public`
- Helper function `getPokemonAllowedInBattle()` added
`pokemon.ts` changes:
- `isAllowed()` renamed to `isAllowedInChallenge()` for clarity
- A redundant check for an active scene is removed in `isActive()`
- Some tsdocs were added/updated for `isFainted()`,
`isAllowedInChallenge()`, `isAllowedInBattle()` and `isActive()`;
and those functions were explicitly marked as `public`
- `isFainted()` now checks for `hp <= 0` instead of `!hp`
Co-authored-by: flx-sta <50131232+flx-sta@users.noreply.github.com>
* Backport eslint change to reduce merge conflicts
* Fix merge issues
---------
Co-authored-by: flx-sta <50131232+flx-sta@users.noreply.github.com>
Co-authored-by: Tempoanon <163687446+Tempo-anon@users.noreply.github.com>
* the fix... will maybe write a test later
* ughh
* made a test
* moved aorund function
* Update src/test/moves/camouflage.test.ts
Co-authored-by: PigeonBar <56974298+PigeonBar@users.noreply.github.com>
* lalal
---------
Co-authored-by: frutescens <info@laptop>
Co-authored-by: PigeonBar <56974298+PigeonBar@users.noreply.github.com>
* Chloroblast & Struggle should not recoil if no damage was dealt
* Protect against missing move entry
Co-authored-by: PigeonBar <56974298+PigeonBar@users.noreply.github.com>
---------
Co-authored-by: PigeonBar <56974298+PigeonBar@users.noreply.github.com>
* Adds updateInfo to transform move/ability, mirrors Transform functionality in Imposter
* Implements functionality for reducing pp to 5 or less for each move when transforming
* Refactors to async/await pattern, adds back removed anims/sounds from last commit
* Eslint fix attempt
* Update src/data/ability.ts
per DayKev's suggestion
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Merge and fix conflicts
* Adds unit tests for pp-change with transform/imposter
* Updates to consistency in syntax/deprecated code
---------
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Fix Early Bird, add tests
* Update tsdocs for Early Bird's `AbAttr`
Rename `turnCount` to `toxicTurnCount` and
`turnsRemaining` to `sleepTurnsRemaining` in `status-effect.ts`
* Fix Toxic Orb test
* Redundant code :despair:
* Fix status override to set the number of sleep turns
* Add simulated support for Arena Tag application
* Add type inference to ArenaTag.apply
* Fix screen tests
* back to `any` again lol
* fix missing spread syntax (maybe)
* updated docs
* named imports for `Utils`
* [P1 Bug] Fix softlock when a phazing attack activates a reviver seed
* Polishing tests
* Change approach to respect Parting Shot's targeting
* Tests: Added checks for correct number of Pokemon on field
* some early set up
* localization
* Added Wiglett family to restrictions
* Added Smack Down + 1000 Arrows Interactions
* Added checks for certain tags
* Gravity removes telekinesis from all pokemon on the field
* need to check something else real quick
* mmmmmm
* think this is fine?
* ingrain fixes
* more ingrain
* Telekinesis Test + Move Fix
* Test Name change
* another day another try...
* Test Cleanup
* fsfdsfds
* Revert "fsfdsfds"
This reverts commit cb7abcfd9f69342ae7b1864e2e4e124029f9f67e.
* whoops
* Apply suggestions from code review
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Missed one
* Update src/data/move.ts
Co-authored-by: PigeonBar <56974298+PigeonBar@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com>
* Add separate battler tags in move attr
* Update src/data/battler-tags.ts
Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com>
* removed onRemove
* Documentation
* Update src/data/battler-tags.ts
---------
Co-authored-by: frutescens <info@laptop>
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
Co-authored-by: PigeonBar <56974298+PigeonBar@users.noreply.github.com>
Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com>
* [Bug] Toxic Spikes implementation issues fixed
Adjusted MoveEffectPhase.start() so that ENEMY_SIDE targeted moves no longer occur twice per use in double battles.
Updated Toxic Orb test to no longer expect a tick of damage turn 1.
Fixed Toxic/Poison dealing damage immediately when applied.
Fixed Hazards not persisting through save
Added unit tests
Fixed flyout not displaying correct number of Spikes/Toxic Spikes after a refresh
* Update Toxic Orb test
* Updates Toxic Spikes tests
* Apply suggestions from code review
* Fix merge issues
Replace `integer` with `number` in `arena-tag.ts`
* Remove partial Magic Bounce implementation
* Remove stray newline
* Remove extra change in safeguard test
---------
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Triple Arrows effect chance for stat change is now properly 50%
* Add tsdocs to `StatStageChangeAttr`
* Add test for Serene Grace interaction
* Fix linting
---------
Co-authored-by: Mumble <171087428+frutescens@users.noreply.github.com>
* Diamond Storm should only trigger once when hitting multiple pokemon
* Also fix Clangorous Soulblaze just in case
* Fix linting
* Fix linting
Oops missed this one
* Implement Fire/Grass Pledge combo
* Add other Pledge combo effects (untested)
* Fix missing enums
* Pledge moves integration tests
* Add turn order manipulation + more tests
* Safeguarding against weird Instruct interactions
* Update src/test/moves/pledge_moves.test.ts
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Fix style issues
* Delete arena-tag.json
* Update package-lock.json
* Use `instanceof` for all arg type inference
* Add Pledge Move sleep test
* Fix linting
* Fix linting
Apparently GitHub has a limit on how many errors it will show
* Pledges now only bypass redirection from abilities
---------
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Refactor `MovePhase` to improve readability/maintainability
Add tsdocs/comments all over
Mark all functions/fields with public/etc
Fix multi-hit moves called from Metronome/etc, fixes#3914
Remove unused function `BattleScene.pushMovePhase`
Don't use failure text as a condition for move success
A move defining potential failure text doesn't mean it failed
Replace relative imports with absolute imports in `battle-scene.ts`
Change some fields from optional to default `false`
* Fix Whirlwind test
* Fix linting