* Standardize filenames to kebab-case
Co-authored-by: pymilkmaiden <cassiopeiamahler56@gmail.com>
* Move script outside of public folder
* Move update_exp_sprites to scripts
* Add ls-lint to lint file and directory names
* Update lefthook.yml to skip merge / rebase on all pre-commit commands
---------
Co-authored-by: pymilkmaiden <cassiopeiamahler56@gmail.com>
* Updated enum utils to refuse non-enum values;
added strong typing on return values
* Moved Enum functions to own file; added type helpers for enums
* Cleaned up some code
* Fixed up tests
* Fix training-session-encounter.ts
* Fixed Transform and Imposter Bug
* Updated Comments
* Revised Comments
* Revised Changes on how tranformed pokemon are referenced to align with reviewer's suggestions
* Removed unused BattlerTag type for transform
* Removed addition of the transform tag to a pokemon in the PokemonTransformPhase
* Moved the check for whether Transform can be used within the TransformAttr class as suggested and removed uneccesary moveId check
* Consolidated if statement regarding isTransformed
* Removed overrides
* Added move condition to Transform + fixed up imposter target selection
* Condensed tests into 1 file + added more automated tests
This includes a couple regression tests for the fusion shenanigans
* Fixed comment
* Updated override typo for unimplemented methods
* Remove redundant parentheses
* Apply suggestions from code review
Co-authored-by: Bertie690 <136088738+Bertie690@users.noreply.github.com>
---------
Co-authored-by: Bertie690 <taylormw163@gmail.com>
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com>
Co-authored-by: Bertie690 <136088738+Bertie690@users.noreply.github.com>
* Split up Pokemon data types to own files
* Moved `AttackMoveResult` and `TurnMove` to own files
* Moved `customPokemonData` into types folder + fixed comments
* Moved files around + fixed stuff
* Moved `DamageResult` into new file
* Fixed imports
* ran biome
* Fix merge issue
* [WIP] Refactor ability attribute apply args
* [WIP] update ability signatures
* Update callsites in pokemon.ts
* Update callsites in moves.ts
* Update abattr callsites in move-phase
* Update abattr callsites in battler-tags
Also removed stat drop ability application from cancelling ME stat boost effects
* format with biome and remove cancelled from weather lapse
* Update abattr callsites in MEP
* Update callsites in turn-start-phase
* Update abAttr callsites in misc phases
* Remove latent test functionality
* update ability attribute callsite in shield dust test
* update abattr callsite in winstrate challenge encounter
* Fix some tests to mock proper methods
* Remove improper condition in mimicry's ability application
* Fix improper simulated check in moody's apply method
* Pass source to postApplyDamage in pokemon.ts
* [wip] fix cud chew tests
* Make cud chew consumption not subclass postTurnAbAttr
* Fix regression in flower veil
* Update trySetStatus test in pokemon to respect new return value for undefined
* Remove empty, unused file
* Fix blockCrit method broken in merge
* Fix unnecessary attr type cast in move phase
* Address typing issue in safeguard test
* Improve documentation and get rid of ts-expect-error directive
* Minor comment/TSDoc updates and fixes
* Apply suggestions from code review
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Apply suggestions from code review
---------
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
https://github.com/pagefaultgames/pokerogue/pull/5932
* Fixed modifier code, removed instances of "0 ID = no mon"
* corrected casing + dejanked seed tag
* Added test file, added overload to `findModifier` if given type predicate
* fixed test
* Revert predicate stuff for now
going in separate PR
* Fix id check syrup bomb test
Wasn't running phase due to being a turn end effect
* [WIP] Changed test to use destiny bond as proper regression
* Removed `instant` and `ignoreUpdate` parameters from `tryTransferHeldItemModifier`; fixed post-battle loot code to _not_ break type safety
* Fixed up tests
* Reverted unneeded changes
* Removed outdated modifier test
* Fix import
* Apply Biome
* Update battler-tags.ts
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Update battler-tags.ts
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Update arena-tag.ts
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Update arena-tag.ts
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
---------
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Run `npm audit fix`
* Update Biome to 2.0.0
* Migrate `biome.jsonc` to 2.0
* Apply Biome and fix some suppression comments
* Fix some suppression comments and update config
* More config updates
Added at "error": `noUnusedLabels`, `noThisInStatic`
Changed `useDefaultParameterLast` from "off" to "warn"
Changed `noDocumentCookie` (from recommended) from "warn" to "off"
Changed `noExcessiveCognitiveComplexity` from "warn" to "info"
* Add a bunch of rules
* Apply Biome safe fixes
* Apply Biome unsafe fixes
* Remove irrelevant `useSelfClosingElements` rule
* Upgrade already followed rules to "error"
* Remove unnecessary type cast
* Disable fixer for `useDefaultParameterLast`
* Disable `useJsonImportAttribute` rule and revert changes
* Fix `mockImage.ts`
* ...there's a `@ts-nocheck` in this file
* Use whole-file lint suppression comment in `version_converter.ts`
* Add a couple comments to `biome.jsonc`
* Remove ESLint packages and GitHub workflow
* 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>
* 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>
* 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>
* Move phase types out of phase interceptor
* Create isXPhase method and add properties to each phase
* Replace instanceof phase with isXPhase
* Fix missing union types for phaseName
* Update doc comment in phase.ts
* Fix incomplete comment in encounter-phase
* Make phaseName as public and fix more uses
* Move phaseName property declaration before constructor in move anim phase
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Rename isXPhase to is
---------
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
* Allow gastro acid to suppress passives if main ability is unsuppressable
* Update gastro_acid.test.ts
* Update src/data/moves/move.ts
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Add test to ensure unsuppressable main ability is not suppressed
---------
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* [BUG] Fixes#5010 Roar and Whirlwind don´t display a fail message
Roar and Whirlwind should now display a fail message when
used against a trainer with only one pokémon left
* Apply suggestions from code review made by SirzBenjie
* Fixed IVs of trainers using the Battle Seed.
* Renamed the randSeedInt functions that use the Battle Seed to randBattleSeedInt functions
* Incorrectly used this in common
* Fixed tests that were still calling the old function name
---------
Co-authored-by: damocleas <damocleas25@gmail.com>
Co-authored-by: Bertie690 <136088738+Bertie690@users.noreply.github.com>
Co-authored-by: AJ Fontaine <36677462+Fontbane@users.noreply.github.com>
Co-authored-by: Dean <69436131+emdeann@users.noreply.github.com>
Co-authored-by: lxy-lxy-lxy <55084073+lxy-lxy-lxy@users.noreply.github.com>
Co-authored-by: Xavion3 <xavion333@gmail.com>
Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com>
Co-authored-by: Lylian BALL <131535108+PyGaVS@users.noreply.github.com>
Co-authored-by: Jimmybald1 <147992650+IBBCalc@users.noreply.github.com>
* Make type changing moves change type after abilities but before ion deluge/electrify
* Create unified test file for galvanize, pixilate, and refrigerate
* Make type boost items like silk scarf affect the move after its type change
* Add tests for type boost item interaction
* Remove leftover log messages
* Update spies in type-change ability tests
* Add automated tests for normalize
* Fix test name injection for tera blast
* Add automated test for tera blast normalize interaction
* Restore pokemon as a type-only import in moves.ts
* Add aerilate to type changing tests
* Rename galvanize test file
* Fix utils import
* Apply suggestions from code review
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Remove unnecessary mockRestore
* Remove unnecessary nullish coalescing
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Update src/field/pokemon.ts
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
---------
Co-authored-by: Madmadness65 <59298170+Madmadness65@users.noreply.github.com>
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Added changes to markdown files, reworked test boilerplate code + comment fixes
* Update comments.md
Removed references to jsdoc.
Removed mention of @extends which doesn't even exist in tsdoc
Increased clarity of documenting `args` parameter.
Moved to using active voice instead of passive voice
* Fix truncated sentence in returns example
* fix create-test-boilerplate.js
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Update gameManager.ts
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Update comments.md
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Update gameManager.ts
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Update gameManager.ts
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Update gameManager.ts
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Update gameManager.ts
* Fixed doc thing
* Fixed the things
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Fixde boilerplate to use snake case
* Update .gitignore to include workspace files
* Update linting.md, fix lefthook etc.
* Fix tpyo
* Update create-test-boilerplate.js
Co-authored-by: Dean <69436131+emdeann@users.noreply.github.com>
* Update create-test-boilerplate.js
Co-authored-by: Dean <69436131+emdeann@users.noreply.github.com>
* Update create-test-boilerplate.js
Co-authored-by: Dean <69436131+emdeann@users.noreply.github.com>
* Reverted boilerplate code fixes and applied review comments
Will now be handled by milkmaiden
* Fixed up documentation for comments.md and linting.md
Comments.md added info pertaining to Kev's review
linting.md i just stopped spouting misinformation
* Update `biome.jsonc` comments
Update `comments.md`
Update docs for `AddSubstituteAttr` in `move.ts` to match example
* Apply suggestions to the suggestions
---------
Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com>
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
Co-authored-by: Dean <69436131+emdeann@users.noreply.github.com>
* Fix#5085 Moves dont play a No Effect Message Against Immune Type
When using non-volatile status move like: Will-O-Wisp, Thunder
Wave, Toxic, or Poison Gas against a Pokémon whose type is immune
to that Status condition, no "It doesn't affect" message plays.
My proposed fixes:
In move.ts:
Removed a redudant if statement in StatusEffectAttr class
In pokemon.ts:
Renamed the "messageIsImmune" function to "queueImmuneMessage"
* Moved SelectBiomePhase in front of NewBattlePhase
* disguise test now has to go to QuietFormChangePhase
---------
Co-authored-by: Jimmybald1 <147992650+IBBCalc@users.noreply.github.com>
* Fix type hint after enemy disappears
* Add automated test for type hint bugfix
* Make onField default to true
* Replace reference to Mode with UiMode and battleType with BattleStyle
* 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>
* sheer force #, sheer force and burning jealousy test fix, and move chance fixes
* removed order up sheer force interaction mention and test - updated comments
* remove electro shot from changes
* Updating tera starstorm targeting condition so that it is a spread move on the turn that terastallization happens
* added new unit tests to verify behavior of tera starstorm under non-tera conditions as well as on terastallization turns
* Move ability.ts to subfolder
* Extract types out of ability.ts
* Update imports in ability.ts and friends
* Cleanup imports in ability.ts
* Re-add imports lost during sort
* Update imports forgotten during rebase
* Re-import proper type from enums
* Update biome.jsonc
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Add commit to force tests to rerun
---------
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
* Add PostSummonHealAbAttr and give it to appropriate abilities
* Add attr to insomnia
* Remove attr from leaf guard (it does not activate on gain with sun up)
* Add tests and remove attr from shields down
* Add PostSummonRemoveBattlerTag and give it to oblivious and own tempo
* Add tests for oblivious and own tempo
* Fix oblivious test sometimes failing
* Remove Comatose changes as it doesn't reapply
* Remove unused tagRemoved field
* Fix tests checking status instead of tag
* Fix attr comments
* Add PostSetStatusHealStatusAbAttr
* Add ResetStatusPhase
* Modify pokemon.resetStatus to use ResetStatusPhase
* Move post status effects to ObtainStatusEffectPhase
* Ensure status overriding (ie rest) works properly
* Add PostApplyBattlerTagRemoveTagAbAttr for own tempo and oblivious
* Guard removeTag call in PostApplyBattlerTagRemoveTagAbAttr
* Commenting
* Handle Mold Breaker case in MoveEndPhase
* Remove PostSummonHealStatusAbAttr from purifying salt
* Fix not passing overrideStatus to canSetStatus
* Apply suggestions from code review
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Add isNullOrUndefined import
* Add canApply to new attrs
* Add followup argument back
* Remove guard around new MoveEndPhase
---------
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Checks for hit result status on Grip Claw application
* Adds a boolean check for the Pollen Puff edge case in canBeMultiStrikeEnhanced
* Adds parental bond test
* Adds grip claw and multi lens tests
* Create new turnData field for tracking damageResults, check for HitResult in Reviver Seed modifier
* Optional chaining for cases like stealth rock
* Adds HitResult.SELF for confusion to distinguish from indirect damage
* Adds HitResult.SELF to damage sound effect switch
* Cover edge case of salt cure, insert HitResult for ALL damage regardless of optional variable
* Change Liquid Ooze HitResult to OTHER from HEAL
* Adjust OHKO moves to not bypass endure or RSeed
* Add tests for reviver seed
* Fixes endure to no longer block indirect damage, updates weather damage to be HitResult.OTHER, adds/fixes unit test
* Change destiny bond to HitResult.OTHER so it doesn't trigger rseed
* Adds destiny bond unit test
* Creates additional unit tests for endure
* Rename SELF hitresult to CONFUSION
* Update CONFUSION enum
* Refactors implementation per Wlowscha's suggestions: removes damageSources array and preventEndure variable
* Rename HitResult.OTHER to INDIRECT, create INDIRECT_KO for PSong/DBond, add functionality for INDIRECT_KO to damageanim/number handler
* Fixes hit result for stealth rock
* Removes unnecessary check, makes DamageResult default to EFFECTIVE, updates remaining damageAndUpdate calls to use INDIRECT
* Refactors damageAndUpdate to replace optional parameters with object parameter
* Fixes based on Kev's suggestions
* Updates tsdocs for damageAndUpdate
* Fix merge conflict
---------
Co-authored-by: Wlowscha <54003515+Wlowscha@users.noreply.github.com>
* Properly handle cases where enemy switches in due to revival
* Fix user ally using move when revived
* Move revival blessing function to move.ts
* Properly filter for the right switch phase to remove
* Re-add bug fix
* Add test
* Add list of uncallable moves for Mirror Move
* Mirror Move now respects the uncallable moves list
---------
Co-authored-by: damocleas <damocleas25@gmail.com>
Fix#5027: Missing confirmation message for moves special effects
When using the moves Thousand Arrows and Smack Down, though the special
effect of grounding the opponent is applied, a confirming message was
not displayed. In this fix a new AddBattlerTagAttr subclass has been
created to handle the message display, compared to previous multiple
attribute additions. This new subclass verifies the conditions for the
message to be displayed through asserting if target is grounded and
accesses a new locale message created to display if necessary.