* Remove unneeded fields from src/ui/filter-text.ts
* Add setOverlayMode to phaseInterceptor
* initialize pokemon starters before running tests
* Add getWrappedText to mockText
* Add initial pokedex test
* Add test for wrapping cursor in pokedex view
* Make pokedex use getPassiveAbility instead of checking passive map
Allows for tests to mock passives
* Add test for filtering double ability combinations
* Add test for filtering by types
* Mark failing test as TODO
* Apply suggestions from code review
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
Co-authored-by: Madmadness65 <59298170+Madmadness65@users.noreply.github.com>
* Use ts-expect-error instead of ts-ignore in comments
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Add save for pokedex tests
* Add test for filtering by cost reduction
* Add test for filtering by shiny
* Add tests for filtering by cost reductions
* Fix typo in test name
* Update test/ui/pokedex.test.ts
Co-authored-by: Wlowscha <54003515+Wlowscha@users.noreply.github.com>
* Update Mode import in pokedex test
* Replace reference to Mode with UiMode
---------
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
Co-authored-by: Madmadness65 <59298170+Madmadness65@users.noreply.github.com>
Co-authored-by: Wlowscha <54003515+Wlowscha@users.noreply.github.com>
* Moved SelectBiomePhase in front of NewBattlePhase
* disguise test now has to go to QuietFormChangePhase
---------
Co-authored-by: Jimmybald1 <147992650+IBBCalc@users.noreply.github.com>
* order of operations in creating boss battleInfo
fixed a bug where because of an order of operations error in this file it ignored the position update of the boss life value set in battle-info.ts (around line 562)
* Update Gym Leader Teams
* Set Tera slots for Gym Leaders
* Change Giovanni's Specialty Type to Ground
---
Co-authored-by: damocleas <damocleas25@gmail.com>
* destroy containers when processing external containers
* make form buttons uninteractible until tweens finished instead
* fix holding enter spam
* fix conflicts
* 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>
* Add test for beak blast applying after user faints
* Rewrite tags for contact protected and check moveFlags.doesFlagEffectApply
* Add test to beak blast ensuring a long reach user does not get burned
* Re-add DamageProtectedTag to relevant inheritance chains
* Move resetSummonData to faintPhase instead of pokemon.apply
* Remove passing of grudge and destiny bond tags to faint phase
* 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>
* Change how rival event rewards are generated
* Simplify to switch case
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
---------
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 exp to its own masterlist, simplify initVariantData
* Update test/sprites/pokemonSprite.test.ts
* Extract loadPokemonVariantAssets out of BattleScene
* move variant.ts and update pokemon.loadAssets
* Add fuzzy matching for applying variant recolors
* Move glsl shaders to their own files
* Remove extra variants from shader masterlist
Their exp sprites have since been removed.
Co-authored-by: Unicorn_Power <189861924+Unicornpowerstar@users.noreply.github.com>
* Make exp sprite keys a set instead of an array
* Remove outdated exp sprite jsons
Co-authored-by: Unicorn_Power <189861924+Unicornpowerstar@users.noreply.github.com>
---------
Co-authored-by: Unicorn_Power <189861924+Unicornpowerstar@users.noreply.github.com>
* 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>
* Clean up various phases
Remove redundant code, utilize default parameters,
clean up some leftover `strict-null` `TODO`s,
replace `integer` with `number`
* Replace `* as Utils` imports with named imports
* Apply Biome
* Fix pokedex entry after catching
* Allow turning pages
* Using isSeen in more places
* Evolutions show up as seen after catching
* Apply suggestions from code review
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Showing battle forms correctly for seen mons
---------
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
* 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>
* Reuse global scene between tests
Co-authored-by: PigeonBar <56974298+PigeonBar@users.noreply.github.com>
* Add missing each method to mockContainer
* Fix select-modifier-phase test
* Sanitize overrides before tests
Co-authored-by: PigeonBar <56974298+PigeonBar@users.noreply.github.com>
* Sanitize overrides before tests
Co-authored-by: PigeonBar <56974298+PigeonBar@users.noreply.github.com>
* [WIP] fix things
* Fix tests not working with --no-isolate
* Update npm tests to use no isolate
* Update test-shard-template
* Update package.json
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
---------
Co-authored-by: PigeonBar <56974298+PigeonBar@users.noreply.github.com>
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Options in Pokédex page are dark if unselectable
* Fixed docstring
* Changing display of seen Pokémon in the dex
* Changed visibility of icons in main Pokédex page
* Update splash-messages.ts 1
* Add Pokemon name splash text
This will display a random Pokemon's name, followed by an exclamation point (ex. "Bulbasaur!").
* Make Pokemon name splash message weighted
* Update splash-messages.ts
* Update splash-messages.ts
* fix trailing spaces
* Update splash-messages.ts
* Update splash-messages.ts
* Add splashes which use random Pokemon
* Update splash message tests
* Update splash-messages.ts
* Update splash-messages.ts
* Missing comma
* Fix length on test
It even says to do so whenever weight multipliers are adjusted...
* Update splash-messages.ts
* add missing prefix thing
* adjusted comment in splash_messages.test.ts
* Update splash-messages.ts
* fix blank line
* Add gender splash message code
This makes the specific April Fools splash message functional.
Also fixed a linter issue with the randomPokemon code.
* Update title-ui-handler.ts changed battles won fallback number to -1
* Update splash-messages.ts
* changed afd to 2 days
* Update splash_messages.test.ts
* Update src/data/splash-messages.ts
Co-authored-by: Jannik Tappert <38758606+CodeTappert@users.noreply.github.com>
---------
Co-authored-by: Madmadness65 <blaze.the.fireman@gmail.com>
Co-authored-by: Madmadness65 <59298170+Madmadness65@users.noreply.github.com>
Co-authored-by: Jannik Tappert <38758606+CodeTappert@users.noreply.github.com>
* Add more trainer types to biomes
This makes the Hooligans, Musician, Pilot, Poké Fan, Rich, and Rich Kid trainer types able to be battled.
* Adjusted Rich and Rich Kid $$$ multipliers
* Add basic dialogue for trainer types
Also added the Clerk's dialogue entries, as that trainer type has localized text, but no entry in the code.
* Fix Musician to Pokefan encounter music
* Add dialogue entries for new dialogue
---------
Co-authored-by: damocleas <damocleas25@gmail.com>
* Filtering correctly when combining gen and monotype challenges
* Clean-up
* Apply suggestions from code review
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Always check requested form first
* Fixing Basculin
* Only check forms which are starter selectable
* Exclude form changes that are not triggered by an item
---------
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* 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
* [BUG] fixes#5472 - transform on reload
* Fix the bug where transformed pokemon failed to load sprite on reload if it was not the base form
* Now properly loads the transformed sprite assets during summon phase
* Add list of uncallable moves for Mirror Move
* Mirror Move now respects the uncallable moves list
---------
Co-authored-by: damocleas <damocleas25@gmail.com>
* Changes to Biker, Baker, Beauty, Cyclist, Parasol Lady, Hex Maniac
* Linting and extra beauty mons
* Further changes
* Find to some
---------
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.
* Fix#5082: Nicknames not properly sanitized
When a player changes the name of the pokemon
to one that uses one of the following combination
of letters: "@c{}", "@s{}", "@d{}", "@f{}" and "$"
the game shows the name of the pokemon incorrectly in a battle.
Changes made:
- on message-ui-handler.ts file I updated the "showTextInternal"
function to get the original name of the pokemon
or pokemons (in case it's a double battle) saving it in a list
named "pokename" and change it in the text for their
correspondent placeholder which is saved in the list "repname"
(e.g "#POKEMON1" for the first pokemon and "#POKEMON2" for the
second pokemon). After the text is properly modified because
of the special characters ("@c{}", "@s{}", "@d{}", "@f{}")
the name of the pokemons is replaced to it's original value.
- on message-phase.ts file I updated the "start" function to use a
similar approach but only change the pokemon name to it's original
form after the "pageIndex" (which checks the index of the "$")
is updated, so the text is cut properly.
- on ui.ts file I updated the "showtext" function to use same
approach of the previous files, ensuring that the pokemon names
were only replaced back to their original values after all text
processing on "$" was completed.
* Replace `let` with `const`
---------
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Stop ShowAbilityPhase from ending until the bar has popped out
* Remove ability bar hiding from messagePhase
* Remove abilityBar reference from base Phase class
* Add HideAbilityPhase to hide ability bar after effects
* Add willSucceed to ability attrs
* Update AbAttrs and PostInitAbAttrs
* Update PreDefendAbAttrs
* Update postDefend, postMoveUsed, StatStage, postSetStatus, and PostDamage
* Update preAttack and fieldStat
* Partially implement postAttack
* Finish PostAttack
* Update PostSummon
* Update PreSwitchOut
* Update preStatStageChange
* Update PostStatStageChange, PreSetStatus, PreApplyBattlerTag
* Update postTurn and preWeatherEffect
* Update postWeatherChange
* Update postWeatherChange
* Update PostTerrainChange
* Update CheckTrapped and PostBattle
* Update postFaint
* Update PostItemLost
* Bug fixes from test cases
* Fix intimidate display
* Stop trace from displaying itself
* Rename to canApply
* Fix ability displays using getTriggerMessage
* Ensure abilities which are mistakenly shown are still hidden
* Fix ability bar showing the wrong ability with imposter
* Add canApply for imposter
* Update abilities using promises and `trySet...` functions
* Committing overrides changes is bad
* Document apply and canApply
* Update PreLeaveFieldAbAttr
* Remove boolean return type apply functions
* Remove redundant assignment
* Remove ability display from abilities that shouldn't have it
* Move queueAbilityDisplay to battlescene
* Remove unused shown variable
* Minor changes
* Fix using id instead of battlerindex in queueAbilityDisplay
* Fix PostBattleInitFormChangeAbAttr displaying
* Prevent crashes in case an ability for a pokemon not on the field is shown
* Stop more abilities from displaying
* Move enemy ability bar to the right side
* Automatically reload bar if shown while already out, fix specific abilities
* Remove duplicate call to clearPhaseQueueSplice
* Remove ShowAbilityPhase import from ability.ts
* Update PostDefendTypeChangeAbAttr to use PokemonType
* Update PostSummonAddArenaTagAbAttr
* Minor changes
* Shed Tail rounds incurred damage up
* Altered Substitute/Shed Tail success condition to account for rounding up
* Altered the test to match correct functionality
* Update src/data/move.ts
Removed default value in constructor due to it having become redundant
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
---------
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com>
* Make dropdown update selection when reset to default
* Function to resect selection in filter bar
* Pressing B on filter now closes it or resets instead of going to top of starters
* Filter changes to starter select screen
* Method to get column at a given index in filter bar
* Specific reset behavior for caught filter in starter select menu
* Apply suggestions from code review
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Update src/ui/starter-select-ui-handler.ts
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
---------
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
Co-authored-by: damocleas <damocleas25@gmail.com>
Co-authored-by: Madmadness65 <59298170+Madmadness65@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
* PokedexMonContainer now has a method to change species.
* Not setting tint to 0 in the container
* Using only 81 containers in Pokédex
* Apply suggestions from code review
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
---------
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Make moveset gen consider multi hit moves fairly
* Make getTargetBenefitScore consider effective power
* Apply Kev's suggestions
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Fix improper stat ratio.
* Fix expected hit count for pop-bomb like moves
Accuracy is now properly divided by 100
* Update src/data/move.ts
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Update src/data/move.ts
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Update src/data/move.ts
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
---------
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Partially implement Teraform Zero ability
The functionality of the ability is all there, it just isn't limited to one use per Terastallization yet.
* Add the once per battle condition
This removes the partial from the ability.
* Make attribute names more generic
---------
Co-authored-by: damocleas <damocleas25@gmail.com>
* [Misc] Added a Daily Run Seed Override to the overrides. Only works locally.
* [Misc] Changed Daily Run Seed Override to string | null
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
---------
Co-authored-by: Jimmybald1 <147992650+IBBCalc@users.noreply.github.com>
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
Co-authored-by: damocleas <damocleas25@gmail.com>
* Remove Promises from moves and abilities
* Fix `PostSummonPhase`
* Apply suggestions from Kev's review
* More suggestions
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
* Cleaning up some updated functions
* Remove Promise from `addEnemyModifier`
+ fixes to some extraneous `await`s
* Test fixes
* Fix missing import in revival blessing test
Co-authored-by: innerthunder <brandonerickson98@gmail.com>
* Add back applyPreLeaveFieldAttrs
Attribute was removed due to absence in a cherry-pick
* Make applyPostApplyEffects work
* Fix move-effect-phase.ts applications
Some applyX methods were missed in the cherry pick commit and were still returning functions instead of running the function themselves
* Mock `BattleScene.addPokemonIcon` in tests
* Revival Blessing condition and tests
* Incorporate Despair-Games/poketernity/pull/48
* Break up imports
* Remove enemy modifier chance dead code
* Remove async from applyAbAttrsInternal
Stray async leftover from merge
* Remove docs and comments referencing promises
* Add `user.setTempAbility` to transform phase
---------
Co-authored-by: innerthunder <brandonerickson98@gmail.com>
Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com>
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
Co-authored-by: PigeonBar <56974298+PigeonBar@users.noreply.github.com>