* 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
* [Refactor] Added ON_GET_HIT BattlerTagLapseType
Adjusted BeakBlastChargingTag and ShellTrapTag to use new lapse type
Adjusted MoveEffectPhase to now lapse all tags with the ON_GET_HIT lapse type
* [Refactor] Added ON_GET_HIT BattlerTagLapseType
Adjusted BeakBlastChargingTag and ShellTrapTag to use new lapse type
Adjusted MoveEffectPhase to now lapse all tags with the ON_GET_HIT lapse type
* Fix nits
* Rename `ON_GET_HIT` to `AFTER_HIT`
Change `isOpponentTo` to `isOpponent`
* Fix a couple minor nits
* Remove single-use function
---------
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Mystery Encounter bugfixes
* more ME bug fixes
* update allowed pokemon in ME requirements
* some unit test cleanup and general tidying
* fix null exception on isBattleMysteryEncounter
* clean up tsdocs and fix pokemon hasAbility check
* fix double battle crash in challenge mode with a single eligible pokemon
* apply suggestions from PR#4619's code reviews
* revert fix for Keldeo crashes + implement fix suggestion from PR #4619
* fix session migration for PokemonCustomData
* prevent test failure due to keldeo fix
---------
Co-authored-by: ImperialSympathizer <imperialsympathizer@gmail.com>
* 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 cb7abcfd9f.
* 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>
* creates table for tracking species egg tiers
* creates table for tracking species egg tiers
* rename EggTier enum values
* replace clamp util function with Phaser function
---------
Co-authored-by: ImperialSympathizer <imperialsympathizer@gmail.com>
* Fixes some Substitute interactions
Specifically with Disguise/Ice Face and Gulp Missile
* Add tests
* Fix linting
* Add `hitsSubstitute()` checks to all `PostDefendAbAttr`s
Also fix comment indentation in `MoveEffectPhase`
* Revert `move-effect-phase.ts` changes
* [Bug] Fix Battle Bond continuing to buff Water Shuriken after Greninja returns to base form
* Test cleanup
* PR feedback
* Update test to use getMultiHitType()
* PR Feedback
* add: i18n backend support
the backend is being supported by using msw which will import the correct file from the local locales folder
* fix: tests to no longer rely on static i18n keys
* Update src/test/mystery-encounter/encounters/teleporting-hijinks-encounter.test.ts
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Update src/test/mystery-encounter/encounters/teleporting-hijinks-encounter.test.ts
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Update src/test/ui/type-hints.test.ts
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Update src/test/mystery-encounter/encounters/a-trainers-test-encounter.test.ts
Co-authored-by: MokaStitcher <54149968+MokaStitcher@users.noreply.github.com>
* Fix typos
Co-authored-by: Adrian T. <68144167+torranx@users.noreply.github.com>
* Fix linting
* update locales submodule
update reference to `56eeb809eb5a2de40cfc5bc6128a78bef14deea9` (from `3ccef8472dd7cc7c362538489954cb8fdad27e5f`)
---------
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
Co-authored-by: MokaStitcher <54149968+MokaStitcher@users.noreply.github.com>
Co-authored-by: Adrian T. <68144167+torranx@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>
* Fix TM compatibility on forms, Tera Blast on Indigo Disk mons
* Additional single strike moves
---------
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
Ensure that a Pokémon's animation speed is reset properly after saving
and quitting. Previously, if a Pokémon was put to sleep, which slows
its framerate, saving and quitting would result in the slower framerate
persisting even though the Pokémon was no longer asleep. This fix adds
an else condition to reset the frameRate to 12 if the sprite is already
loaded upon resuming the game.
Fixes#4465
* Fixes bug with Status Cure moves only curing player pokemon, refactors PartyStatusCureAttr, removes PartyStatusCurePhase
* Adds check for user ID, since user always cures its own status regardless of ability
* Adds unit tests for sparkly swirl
* Merge and fix conflicts
* Fix conflicts with SPLASH_ONLY
* Fix failing sparkly swirl test due to splash_only
* Adds unit tests for heal bell and aromatherapy
* Update src/data/move.ts
---------
Co-authored-by: flx-sta <50131232+flx-sta@users.noreply.github.com>
* Fix Toxic to bypass semi-invulnerability when used by a Poison-type.
* Apply suggestion to refactor BerryPhase in Toxic move tests.
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Corrected missing quotes on a BerryPhase in Toxic.test.
---------
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Have Friendship Value be shown in summary
* Fix how "fill" of icon is calced
* Update src/locales/de/pokemon-summary.json
* Actually add the images
* Add correct image files
* Update src/ui/summary-ui-handler.ts
Co-authored-by: Adrian T. <68144167+torranx@users.noreply.github.com>
* Update src/ui/summary-ui-handler.ts
Co-authored-by: Adrian T. <68144167+torranx@users.noreply.github.com>
* Update src/ui/summary-ui-handler.ts
* Update src/ui/summary-ui-handler.ts
Co-authored-by: MokaStitcher <54149968+MokaStitcher@users.noreply.github.com>
* Made changed suggested in code review
* Update src/locales/en/pokemon-summary.json
---------
Co-authored-by: Adrian T. <68144167+torranx@users.noreply.github.com>
Co-authored-by: MokaStitcher <54149968+MokaStitcher@users.noreply.github.com>
* Removed local translation files
added translations submodule
[Enhancement] Add post-merge command to update submodules in lefthook configuration
[Enhancement] Add postinstall script to install lefthook after package installation
[Enhancement] Update postinstall script to run post-merge command after lefthook installation
* Add subproject commit for locales directory
* Remove translation team assignments from CODEOWNERS
* Add recursive submodule checkout to workflow files and update README for translations
* fix: run without locales present (#4539)
some code was hard-wired with locales having to be present. This is no longer the case now
---------
Co-authored-by: flx-sta <50131232+flx-sta@users.noreply.github.com>
* move: locales files to `/public` (from `/src`)
* install: i18next-http-backend module
* implement: i18next language lazy-loading
* remove: all `config.ts` files (for locales)
* disable: enConfig import in i18next.d.ts
* remove: console.log from utils.camelCaseToKebabCase()
* remove localization tests
we don't need to test if i18next is working.
This is the job of i18next itself
* mock i18next for tests
* fix: tests that have to use the i18next key now
instead of the english translation
* fix: absolute-avarice-encounter test
* fix: loading mystery-encounter translations
with lazy-load
* fix: 2 mystery encounter translation loading
* replace: i18next mocks any vi.fn() calls
* fix: new namespace usage in ME tests
now using "mysteryEncounters/..."
* fix: delibirdy encounter not being language specific
the encounter was checking if the modifier name includes `Berry` which is only true for english. Instead it has to check if the modifier is an instance of BerryModifier
* fix: the-expert-pokemon-breeder
the new i18n pattern requires a different namespacing which has been adopted
* fix: GTS encounter tests
* add: `MockText.on()`
* fix: berries abound test
* chore: apply review suggestion
from @DayKev
* update i18next.d.ts
* chore: fix i18next.d.ts
* fix: `dialogue-misc` switchup between `en` and `ja`
* move: `SpeciesFormKey` into enum
there was an issue with circular dependencies
* replace: `#app/enums/` with `#enums/` for `SpeciesFormKey` imports
* re-sync locales from `beta`
* rename: `ca_ES` -> `ca-ES`
* rename: `pt_BR` -> `pt-BR`
* rename: `zh_CN` -> `zh-CN`
* rename: `zh_TW` -> `zh-TW`
* fix loading Species-Form-Key in poemon-evo.
* update: i18next `supporterLngs` ...
and remove `nonExplicitSupportedLngs`
* fix: `${namespace}.` -> `${namespace}:`
thanks @MokaStitcher
* fixing form issues generating tms pokemon shouldnt have
* cleaning up some code
* fixing tests and allowing rotom unique moves to be learned as tms for that rotom form
* Update src/test/field/pokemon.test.ts
Co-authored-by: flx-sta <50131232+flx-sta@users.noreply.github.com>
* making tests simpler
---------
Co-authored-by: flx-sta <50131232+flx-sta@users.noreply.github.com>
* feat: show app version on title screen
* fix: adjust app version positions
* update app version text
---------
Co-authored-by: flx-sta <50131232+flx-sta@users.noreply.github.com>
* sanitize all money when saving session data to server
* update money sanitization
---------
Co-authored-by: ImperialSympathizer <imperialsympathizer@gmail.com>
* Fix tag lapsing on battle start in MEs with free enemy moves
* lapse endure tag as well
* fix black sludge item money calculation
* Update src/modifier/modifier.ts
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
---------
Co-authored-by: ImperialSympathizer <imperialsympathizer@gmail.com>
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Fix tag lapsing on battle start in MEs with free enemy moves
* lapse endure tag as well
---------
Co-authored-by: ImperialSympathizer <imperialsympathizer@gmail.com>