* Added `MoveUseType` and refactored MEP
* Fixed Wimp out tests & ME code
finally i think all the booleans are gone
i hope
* Added version migration for last resort and co.
buh gumbug
* Fixed various bugs and added tests for previous bugfixes
* Reverted a couple doc changes
* WIP
* Update pokemon-species.ts
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Update pokemon-phase.ts
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Fixed remaining tests (I think)
* Reverted rollout test changes
* Fixed command phase bug causing metronome test timeout
* Revert early_bird.test.ts
* Fix biome.jsonc
* Made `MoveUseType` start at 1
As per @DayKev's request
* Fixed a thing
* Fixed bolt beak condition to be marginally less jank
* Applied some review suggestions
* Reverted move phase operations
* Added helper functions complete with markdown tables
* Fixed things
* Update battler-tags.ts
* Fixed random issues
* Fixed code
* Fixed comment
* Fixed import issues
* Fix disable.test.ts conflicts
* Update instruct.test.ts
* Update `biome.jsonc`
* Renamed `MoveUseType` to `MoveUseMode`; applied review comments
* Fixed space
* Fixed phasemanager bugs
* Fixed instruct test to not bork
* Fixed gorilla tactics bug
* Battler Tags doc fixes
* Fixed formatting and suttff
* Minor comment updates and remove unused imports in `move.ts`
* Re-add `public`, remove unnecessary default value in `battler-tags.ts`
* Restore `{}` in `turn-start-phase.ts`
Fixes `lint/correctness/noSwitchDeclarations`
* Remove extra space in TSDoc in `move-phase.ts`
* Use `game.field` instead of `game.scene` in `instruct.test.ts`
Also `game.toEndOfTurn()` instead of
`game.phaseInterceptor.to("BerryPhase")`
* Use `game.field` instead of `game.scene` in `metronome.test.ts`
* Use `toEndOfTurn()` instead of `to("BerryPhase")` in `powder.test.ts`
* Convert `MoveUseMode` enum to `const` object
* Update move-phase.ts
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Add `enumValueToKey` utility function
* Apply Biome
---------
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
https://github.com/pagefaultgames/pokerogue/pull/5513
* Add prependToPhaseWithCondition and use it in SummonPhase to determine speed order
* Move logic to PostSummonPhase
* Add test base
* Pivot to using sort strategy instead
* Add and update tests
* Support priority ability activations
* Ensure priority abilities are still activated on switch in
* Add test for priority
* Update to use priority numbers instead of a boolean
* Add ability priorities to constructors
* Move sorting to BattleScene
* Rename phase file
* Update import
* Move application to applyPostSummonAbAttrs and stop assuming no other phases in queue
* Ensure all PostSummonPhases from encounters are added at the same time
* Switch to priority queue approach
* Ensure that zero/negative priority activations happen after postsummonphase
* Revert 07646fe (not needed due to stable sort)
* Always create separate ability phases for passive and use boolean instead of priority number when applying
* Add test for dynamic updates
* Add BattlerIndex import
* Clear queues for testing
* Benjie suggestion
* Split files
* Update import in battlescene
* Remove extra spaces added by VSCode
* Fix other conflicts
* Update PhaseManager
* Update to use PhaseManager
* Immediately start postsummons
* Fix test
* Fix BattlerIndex import
* Remove unused imports
* Fix postsummon application
* Make priority readonly
* Add abilityAttr.is methods
* [WIP] move modifier stuff around
* Untangle circular deps from modifiers
* Move unlockables to own file
* Untangle all circular deps outside of MEs
* Move constants in MEs to their own files
* Re-add missing import to battle.ts
* Add necessary overload for getTag
* Add missing type import in weather.ts
* Init modifier types and pools in loading-scene
* Remove stray commented code
* Apply kev's suggestions from code review
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
---------
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
https://github.com/pagefaultgames/pokerogue/pull/5924
* [UI/UX] "Stop trying to teach move" Defaulting to "No"
* [Test] setCursor to 0, 'Yes' to end learning move
* Move confirmUIMode to its own file in enums, add docs
---------
Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com>
* Move game-mode to its own file
Reduces circular imports to 325
* Move battler-index to own file
Reduces circular deps to 314
* Move trainer-variant to own file
Reduces circ deps to 313
* Move enums in pokemon to their own file
* Move arena-tag-type to its own file
* Move pokemon-moves to its own file
* Move command to own file
* Move learnMoveType to own file
* Move form change item to own file
* Move battlerTagLapseType to own file
* Move anim enums to own shared file
* Move enums out of challenges
* Move species form change triggers to own file
Reduces circ imports to 291
* Update test importing pokemon move
* Replace move attribute imports with string names
* Untangle circular deps from game data
* Fix missing string call in switch summon phase
* Apply kev's suggestions from code review
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Ensure ChargeMove's is method calls super
* Use InstanceType for proper narrowing
* Apply kev's suggestions from code review
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
---------
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Rename `Abilities` to `AbilityId`
* Rename `abilities.ts` to `ability-id.ts`
* Rename `Moves` to `MoveId`
* Rename `moves.ts` to `move-id.ts`
* Rename `Species` to `SpeciesId`
* Rename `species.ts` to `species-id.ts`
* Rename `Biome` to `BiomeId`
* Rename `biome.ts` to `biome-id.ts`
* Replace `Abilities` with `AbilityId` in comments
* Replace `Biome` with `BiomeId` in comments
* Replace `Moves` with `MoveId` in comments
* Replace `Species` with `SpeciesId` in comments
* Move fixed boss waves enum to file, adjust GL templates
* Move post return to default case
* Address comment
---------
Co-authored-by: Wlowscha <54003515+Wlowscha@users.noreply.github.com>
* Extract Mode enum out of UI and into its own file
Reduces circular imports from 909 to 773
* Move around utility files
Reduces cyclical dependencies from 773 to 765
* Remove starterColors and bypassLogin from battle-scene
Reduces cyclical dependencies from 765 to 623
* Fix test runner error
* Update import for bypassLogin in test
* Update mocks for utils in tests
* Fix broken tests
* Update selectWithTera override
* Update path for utils in ab-attr.ts
* Update path for utils in ability-class.ts
* Fix utils import path in healer.test.ts
* Add isPartner method to trainer class
* Ensure force switches cannot pull pokemon from the wrong trainer
* Add override for battle type
* Fixup tests and broken assumptions
* Make move fail override semi-invuln check
Bandaid fix because move effect phase does not allow for the move to fail if all of its conditions fail
* Restore overrides
* Apply kev's suggestions from code review
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Fix illusion test battle type invocation
* Update struggle and healer tests to use battleStyle
---------
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Move LearnMoveSituation to its own file
* Remove unused selfStatLowerMoves array
* Move all-moves to its own file
* Move TurnMove interface to its own file
* move AiType to its own file
* Move PokemonMove to its own file
* Move DamageCalculationResult interface to its own file
* Move fieldPosition to its own file
* Move hit-result to its own file
* Move DamageResult to its own file
* Move SpeciesWildEvolutionDelay to its own file
* move EvolutionItem to its own file
* Move trainer-config.ts
* move TeraAIMode enum to its own file
* Move TrainerPoolTier enum to its own file
* Move TrainerSlot enum to its own file
* Reorder and group imports
* Move TrainerPartyTemplate to its own file
* Remove speciesPoolPerEvilTeamAdmin method
* Apply kev's suggestions from code review
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Fix typo in zinzolin's name
---------
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Add neutralizing gas arena tag
* Add PostSummonAddArenaTagAbAttr
* Add PreLeaveField attr for neutralizing gas
* Remove old SuppressFieldAbilitiesAttr
* Fix ability suppression logic
* Add basic tests
* Reapply onGain abilities when neutralizing gas ends
* Untodo ability remval test
* Add more tests
* Modify gastro acid to call onLose attributes when suppressing
* Properly cancel abilities on switch in
* Add documentation
* Remove partial designation
* Update locale key usage
* Reactivate the last source's other abilities when it becomes the last remaining
* Fix loop vars
* Add access modifiers for SuppressAbilitiesTag
* Minor changes
* Move test to reflect new location
* Remove promises from abattr function signatures
* Add unit tests for magic bounce
* Add reflectable tag and apply to moves
* Add BattlerTagType for Magic Coat
* Add more magic bounce tests
* Add magic bounce test for sticky web source
* Mostly working magic bounce and magic coat
* Fix missing negation on mayBounce check
* Move onto the next target after bouncing
* Fix magic bounce accuracy check test
* Finish magic bounce impl
* Make spikes use leftmost magic bounce target
* Add magic coat tests
* Add MagicCoatTag to battler-tags.ts
* Add final set of tests for Magic Coat / Bounce
* Fix semi invulnerbale check in hitCheck
* Fix magic bounce semi-invulnerable interaction
This was based on smogon's incorrect handling of this situation
* Magic bounce should not bounce anything during semi-invulnerable state
* Activate mirror armor interaction test
Also update i18 locales key to `magicCoatActivated`
* Implement Flip Stat Challange
* Add Achivement
* Update challenge code to block other challenges.
* Add Achievment Image
* Add FLIP_STAT to enum ChallengeType
* Fix comment for FlipStatChallenge
* Add applyFlipStat override to Challenge Class, and add override inside of FlipStatsChallenge
* Add ChallengeType.FLIP_STAT case to export function applyChallenges (Master Switch Function)
* Properly block other challange achviements
* Change the way achivements are blocked by challenge modes to a more flexible method
* Adjust the image for Flip Stat, and add an additional achivement for completing both Flip and Inverse
* Fix FLIP_INVERSE achivement to check ALL challanges are met, not SOME
* Remove outdated image
* Fix FlipStat applyChallenges inside calculateBaseStats
* Update locales
---------
Co-authored-by: Scooom <na@na.na>
Co-authored-by: Scooom <jerry@hosterslice.com>
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Powder basic implementation
* Add Powder integration tests
* Fix thaw test
* Use new test utils and type check function
* More edge case tests
* Make Powder (P)
* Add locale keys
* Add placeholder common anim
* Use CommonAnimPhase instead of async animation
* Add comments with new English text
* Make Powder `edgeCase` instead
* ESLint
* Fix imports
* Add `moveName` key arg for other languages
* ESLint
* Update locales
* Fix pages issues
* Update Powder explosion animation
* Update common-powder.json
* Update src/test/moves/powder.test.ts
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Remove lingering TIMEOUTs
* More test cleanup
---------
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* 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`
* unburden implemented
* Used tag instead of stat changes for Unburden
* added documentation and neutralizing gas test
* accounted for unburden in getEffectiveStat
* fixed doubling speed in two places
* merge conflict resolve
* changed documentation wording, added test for stuff cheeks
* refactor unburden
* merge
* remove console logs
* Update src/data/ability.ts
Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com>
* add neut gas check
Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com>
* Added test for NeutGas user entering while unburden activated
* add spaces to tests, removed passive and [] from applyPostItemLostAbAttrs
* added line breaks after test cases
---------
Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com>
* fixing speed boost for pokemon being switched in and for if failed escape
* adding unit tests
* adding failed run away test case
* adding failed run away test case modification
* refactoring solution to be more consistent with coding style
* more fixes for consistency
* more fixes for consistency
* adding new AbAttr in abiliity.ts for posterity
* removing uneccesary variables
* fixing a merge conflict
* 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>
* 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>
* 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>
* 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