* Tests MovePhase with new PokemonMove instead of moveset search
* Accounts for metronome call on charging moves
* Update comment in ChargeAttr to be clearer
* Creates function to get type resistances, implements conversion 2
* Removes unimplemented tag, adds condition for move history to exist
* Cleans up type selection, creates i18n entries for typeChanged
* Uses typeChanged i18n in Conversion move
* More detailed docs, early return with stellar/unknown type
* Adds note that it wont track type-changing moves properly
* Rephrases doc description, adds partial since it can't track type-changing moves
* Updates localization, removes typeChanged entry to use move-trigger entry
* Missed locale de entry in last commit
* Adds comment for reason of .partial()
* Fixes localization error due to revert, removes improper merge conflict from prior commit
* Remove magic number from Belly Drum's attr
* Remove redundant damage number popup
* Fix merge issue and remove another duplicate damage number instance
* refactor power calc, fix battery & power spot
* fix hard press unit test
* fix hard press
* refactor tests
* use sypOn hp instead
* rename method
* cleanup tests
* improve tests
* use slow vs fast pokemon
* fix steely spirit test
* fix steely spirit for real this time
* remove unnecessary test
* address pr feedback
* add removed code
* Made FormChangeItems untransferrable. Replaced getTransferrable()
* Made isTransferrable readonly. Removed unnecessary 'm as PokemonHeldItemModifier'.
* Changes getMoveHistory to getLastXMoves to fix sketch copying first move used instead of last
* Optimizes move search and early return
* Reverts check for virtual moves
* [Help] [Move/Bug] Patches Psychic Terrain applicability edge cases
Was cancelling moves even if targeted mons weren't on the terrain.
* [Bug `]Pokemon.isGrounded` does not exist
Replaced with `Pokemon.isGrounded()`, which does.
* [Bug] Psychic Terrain priority move cancel ignoring ungrounded
* [Bug] Semi-invulnerable should not be grounded
* Removes firstHitOnly from AddArenaTagAttr to allow multi hit set up with ceaseless edge
* Creates initial test file with basic cases for ceaseless edge
* Fixes ceaseless edge unit test and expands on case 3
* Adds truthy/falsy expectations prior to use
* Adjusts bug bite functionality when stealing from opponent with three berry pouches
* Adjusts bug bite functionality when stealing from opponent with three berry pouches
* Adjusts bug bite to remove berry pouch preservation on opponent berries
* Remove Promise<Boolean> where unnecessary
Leftover code removed from previous testing of the EatBerryAttr class.
* Remove undefined check on chosenBerry
Co-authored-by: flx-sta <50131232+flx-sta@users.noreply.github.com>
* Update StealEatBerryAttr if-clause readability
Decrementing inside of an if-clause removed for readability. Changed to check: if count is 1, then remove modifier.
* Localization of StealEatBerryAttr battle message
* Fixes berry incrementing after improper adjustment to readability
* Fixes berry decrementing after improper adjustment to readability
* Update battle.ts
* Update src/locales/fr/battle.ts
Co-authored-by: Lugiad' <adrien.grivel@hotmail.fr>
* Update battle.ts properly
Incorrectly added localization in previous commit
* Remove unnecessary space
* Update src/locales/ko/battle.ts
I do not have experience with Korean, so this may need other review.
Co-authored-by: Enoch <enoch.jwsong@gmail.com>
* Rewrites EatBerryAttr to combine with StealEatBerryAttr
* Removes excess lines
* Revert and refactor StealEatBerry and EatBerryAttr
* Refactor for early returns instead of nesting
---------
Co-authored-by: flx-sta <50131232+flx-sta@users.noreply.github.com>
Co-authored-by: Lugiad' <adrien.grivel@hotmail.fr>
Co-authored-by: Enoch <enoch.jwsong@gmail.com>
* Parental Bond basic implementation
* Parental Bond unit tests
* ESLint
* PBond AbAttr rework, documentation, and multi-target unit tests
* Update post-target move attribute logic
For Parental Bond interaction.
* AddSecondStrikeAbAttr now uses Constructor util
* Unit tests for PBond + Multi-Lens interaction
* Remove random damage spread in unit test
* Add null checks to PBond AbAttr
* Set player pokemon for unit test
* Fixed Post Target check to account for KO's
* Fix multi-strike moves applying effects at wrong times
* Test cases for updated effect timing
* Add Wake-Up Slap test case
* Fix Fury Cutter/Echoed Voice multi-hit interaction
* Fix Pay Day, Relic Song, and Fury Cutter (again)
* Add early stopping to multi-hit moves
* RecoilAttr now uses lastHitOnly
* Add faint check to last hit logic
Implements AddArenaTrapTagHitAttr for moves like Stone Axe and Ceaseless Edge.
Fixes chance for selfstatus moves.
Added Comments For AddArenaTrapTagHitAttr
* Bug fixes for spite, creates class to extend spite for eerie spell
* Comments for clarity, creates class to extend ReducePpMoveAttr
* Resolve reference error with AttackReducePpMoveAttr
* Shows move failed in a clearer way with showMoveText
* Localization of pp reduction moves
* Fixes issue of eerie spell reducing pp when ratio is 0
* Removes unnecessary phase replacement
* Remove partial implementation from eerie spell
* Adds locale entry for ppReduced to other languages
* Partially implemented Magnet Rise
* Implemented Magnet Rise
* Changed pokemon.ts so all TypeImmune tags work instead of just
MagnetRisen
* Magnet Risen is now removed when Gravity is used.
* Magnet Rise is ignored by Thousand Arrows
and Smack Down.
* Fixed a bug where status ground type moves
would also be ignored by Magnet Rise
* Added a message when Magnet Rise is removed
* Inserted TypeImmuneTag check in
getAttackMoveEffectiveness() for the AI
* Created a magnetRiseCondition separately
* Created a test for Magnet Rise
* Bug Fix in Magnet Rise test
* Created Magnet Rise test with Gravity
* Shifted the code from getAttackMoveEffectiveness
and apply into getAttackTypeEffectiveness instead
* Replaced onNextPrompt with doAttack
* Removed redundant runFrom(Phase)
* Replaced magnetRiseCondition with
battlerTags.every anonymous function
* Fixed import errors
* Added an undefined check for summonData
for TypeImmuneTag in getAttackTypeEffectiveness
* Replaced undefined-check with optional chaining