Commit Graph

5045 Commits

Author SHA1 Message Date
Dean
a2be87f6f5
Merge branch 'beta' into beta 2025-04-23 14:23:10 -07:00
AJ Fontaine
5de567a3db
[Balance] Wave 90 gym leader has 5 mons (#5699)
5 mons on wave 90
2025-04-23 21:18:03 +00:00
Blitzy
c7265543bd
[Balance] Update Transistor to Gen IX version (#5700)
Update ability.ts
2025-04-23 17:15:45 -04:00
Dean
4750820ad3
Merge branch 'beta' into beta 2025-04-23 14:11:40 -07:00
AJ Fontaine
b49c994d2d
[Balance][Refactor] Move fixed boss waves enum to file, adjust GL templates (#5689)
* 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>
2025-04-23 14:48:04 -05:00
Sirz Benjie
389ad6ceb6
[Tests][UI/UX] Add automated tests for the pokedex (#5637)
* 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>
2025-04-23 18:10:01 +00:00
Jimmybald1
b848777880
[Bug][Misc] Moved SelectBiomePhase in front of NewBattlePhase (#5694)
* Moved SelectBiomePhase in front of NewBattlePhase

* disguise test now has to go to QuietFormChangePhase

---------

Co-authored-by: Jimmybald1 <147992650+IBBCalc@users.noreply.github.com>
2025-04-23 10:54:43 -07:00
Sirz Benjie
110fd2f0a1
[Refactor][Move] Refactor move effect phase (#5678)
* Add enum for hit check result

Co-authored-by: innerthunder <brandonerickson98@gmail.com>

* Refactor parameter list for pokemon#getBaseDamage and pokemon#getAttackDamage

* Rewrite move phase

Co-authored-by: innerthunder <brandonerickson98@gmail.com>

* Update tests to reflect move effect phase changes

Co-authored-by: innerthunder <brandonerickson98@gmail.com>

* Fix pluck / bug bite

Co-authored-by: innerthunder <brandonerickson98@gmail.com>

* Fix reviver seed ohko, remove leftover dead code

Co-authored-by: innerthunder <brandonerickson98@gmail.com>

* Cleanup jsdoc comments

* Remove hitsSubstitute check from postDefend abilities

* Fix improper i18nkey in moveEffectPhase#applyToTargets

* Cleanup comments

* Fix type issue with substitute test

* Move MYSTERY_ENCOUNTER_WAVES to constants.ts

* Update linkcode in damageparams to use proper tsdoc syntax

---------

Co-authored-by: innerthunder <brandonerickson98@gmail.com>
2025-04-23 00:10:27 +00:00
AJ Fontaine
aadb57ab75
[Balance] [Mystery] Salesman ME offers mons from event encounter pool (#5674)
* Initial event commit

* Salesman odds

* Clean up imports

* globalScene shiny rate getter, fix reroll, remove placeholder event

* Rerolling shiny also tries rerolling for better variant

* Shiny reroll affects 'trainer' mons too

---------

Co-authored-by: damocleas <damocleas25@gmail.com>
Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com>
2025-04-23 00:03:49 +00:00
Sirz Benjie
be6a117b1e
[Bug][Sprite] Fix variants not using recolors for back sprite (#5691)
Fix variants not showing back recolors with exp
2025-04-21 14:52:08 -05:00
Sirz Benjie
0da56cda9f
[Bug][Sprite] Fix variant loading console spam (#5690) 2025-04-21 13:46:32 -05:00
NightKev
b89b945b11
[Dev] Fix imports in overrides.ts and illusion.test.ts (#5686) 2025-04-20 13:51:06 -05:00
zaccie
d0be6a9274
[Bug] Fix order of operations when displaying enemy Boss level (#5685)
* 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)
2025-04-20 18:33:17 +00:00
Dean
2cf0b51299
[Bug] Properly handle suppression with Illusion (#5671)
* Remove extra attributes on neutralizing gas

* Add IllusionBreakAbAttr to applyOnLose

* Add test case
2025-04-20 11:14:19 -07:00
Inês Simões
45e3fe71ad 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"
2025-04-20 11:18:56 +01:00
Dean
ea618a93ee
Merge branch 'beta' into beta 2025-04-19 23:00:50 -07:00
Blitzy
8515cadd77
[Balance] Update Gym Leader Teams and Teras (#5670)
* Update Gym Leader Teams

* Set Tera slots for Gym Leaders

* Change Giovanni's Specialty Type to Ground

---

Co-authored-by: damocleas <damocleas25@gmail.com>
2025-04-20 00:20:07 -05:00
Chris
bda286cebb
[Bug] Fix Login Screen Buttons can be Pressed While Animating (#5170)
* destroy containers when processing external containers

* make form buttons uninteractible until tweens finished instead

* fix holding enter spam

* fix conflicts
2025-04-19 14:00:12 -07:00
Sirz Benjie
65294f408e
[Bug][UI/UX] Fix type hint after enemy disappears (#5677)
* 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
2025-04-19 08:04:19 -07:00
Sirz Benjie
5854b21da0
[Refactor] Remove circular imports part 1 (#5663)
* 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
2025-04-19 11:57:03 +00:00
damocleas
a6e87c8438
[Bug] [Move] Supercell Slam now hits Minimized targets for double damage and can't miss (#5680)
Added AlwaysHitMinimizeAttr and HitsTagForDoubleDamageAttr to Supercell Slam for Minimize
2025-04-18 22:25:05 -04:00
Sirz Benjie
54ce58411b
[Bug] Fix forced switch bugs in enemy partner trainer battles (#5644)
* 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>
2025-04-18 09:35:46 +00:00
Lylian BALL
82cd492117
[Bug] Pokemon with illusion imitate the cry of the illusion (#5675) 2025-04-18 09:33:28 +00:00
Sirz Benjie
b8b101119c
[Bug][Sprite] Use floats for variant shader recolor comparison (#5668)
* Use float values for comparison

* Remove unused colorInt
2025-04-17 20:31:57 +00:00
Sirz Benjie
3a46aae687
[Bug] Fix beak blast: not applying if user faints and not respecting long reach (#5639)
* 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
2025-04-17 15:25:38 -05:00
Sirz Benjie
eef8367caf
[Bug] Fix experimental sprites not loading in starter select (#5664)
[Bug][Sprite] Fix experimental variant sprites not being loaded in starter select screen
2025-04-17 09:57:30 -07:00
Sirz Benjie
45a2f42602
[Bug] Prevent game from hanging when loading in a new battle (#5676) 2025-04-17 11:44:50 -04:00
Sirz Benjie
b2bab46e1c
[Bug][Ability] Fix healer queueing its message when its ally is fainted (#5642)
* Add check against faint status effect

* Add tests for healer

* Remove redundant portions of the tests

* Fix broken test
2025-04-17 04:47:49 +00:00
damocleas
8d311e65cf
[Bug] [Ability] Fixed wrong Sheer Force interactions and multiplier from ~1.33 -> 1.3 (#5515)
* 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
2025-04-16 19:31:53 -07:00
Sirz Benjie
ae588ebff9
[Bug][Move] Struggle no longer gets STAB (#5643)
* Struggle no longer gets STAB

* 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>
2025-04-16 16:05:40 -05:00
NightKev
efad0d1324
[GitHub] Use .nvmrc for pages workflow (#5666) 2025-04-15 20:55:29 -07:00
Stephen Kelman
18c4dddcf0
[Bug] Fixing Tera Starstorm for first turn of terastallization (#5658)
* 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
2025-04-15 14:19:19 +00:00
Sirz Benjie
ff44cbfa97
[Refactor] Refactor ability file part 1 (#5589)
* 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>
2025-04-15 14:08:35 +00:00
Madmadness65
4740b593a0
[Balance] Fix Depot Agent trainer type lacking Pokémon (#5623)
Fix Depot Agent trainer type lacking Pokémon

Also removes a stray duplicate Barboach from the Fisherman.
2025-04-15 05:27:14 +00:00
AJ Fontaine
3ec8f236f9
[Refactor] Change how rival event rewards are generated (#5638)
* 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>
2025-04-15 00:13:05 +00:00
Sirz Benjie
8216a379bf
[Dev][GitHub] Update to node 22 (#5586)
* Update node and workflows to use version 22.14

* Update @types/node package

* Update engines field in package.json

* Hardcode node version in github pages workflow

* Update to checkout@v4 in github pages workflow
2025-04-14 12:37:26 -05:00
damocleas
b41eee3c7f
Revert "[Refactor] Move many interfaces and enums to their own file" (#5661)
Revert "[Refactor] Move many interfaces and enums to their own file (#5646)"

This reverts commit c82e01eed3.
2025-04-14 12:28:36 -04:00
Sirz Benjie
c82e01eed3
[Refactor] Move many interfaces and enums to their own file (#5646)
* 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
2025-04-14 08:31:26 -07:00
Lylian BALL
15e535a1a0
[Ability] Implement Illusion (#3273)
* implement illusion ability with unit test and localizations

* try removing whitespace change on unnecessary files

* nit corrections

* nit update src/field/pokemon.ts

Co-authored-by: Adrian T. <68144167+torranx@users.noreply.github.com>

* nit update src/phases.ts

Co-authored-by: Amani H. <109637146+xsn34kzx@users.noreply.github.com>

* illusion test correction

* unexpected error correction

* refactor property pokemon.illusion to pokemon.battleData.illusion

* nit

* nit

* update unit test up-to-date

* add docs

* merge up to date

* bugfix

* bugfix

* merge up to date

* refactor field illusion out of battleData

* fix nit

* fix nit

* Zoroark change illusion after lastPokemon update

* Zoroark change illusion after lastPokemon update

* refactor bug fix

* bugfix

* bug fix on tests

* Update src/field/pokemon.ts

Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com>

* use GetFailedText

* remove useless import

* add condition 'no illusion' into transform move

* wild Zoroark creates an illusion according to the current biome

* wild Zoroark creates an illusion according to the current biome

* delete console.log()

* add doc

* Update src/field/pokemon.ts

Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com>

* fix tests

* update locales submodule

* update Illusion interface

* bug fix

* bug fix

* bugfix

* rename some params for future implementations

* Zoroark keep illusion between battles

* Zoroark keep illusion between battles

* delete draft

* merge up-to-date

* bugfix

* merge

* merge

* implement canApplyPresummon method

* Update test/abilities/illusion.test.ts

Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com>

* Update src/data/ability.ts

Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com>

* Update src/data/ability.ts

Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com>

* Update test/abilities/illusion.test.ts

Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com>

* Update test/abilities/illusion.test.ts

Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com>

* nit

* review corrections

* nit

* type hints affected by enemy illusion

* type hints affected by enemy illusionin fight-ui-handler

* nit

* rename some parameters back in useIllusion

* Update src/field/pokemon.ts

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>

* refactor battleData.illusion as summonData.illusion and delete oncePerBattleClause

* add comments

* illusion will break before evolution

* Update src/field/pokemon.ts

Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com>

* Update src/data/ability.ts

Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com>

* Update src/data/ability.ts

Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com>

* Update src/data/ability.ts

Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com>

* Update src/data/ability.ts

Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com>

* bug fix

* g

* get submodule back

* get submodule back

* bug fix to save illusion status

* add pokemon.getPokeball()

* Update src/field/pokemon.ts

Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com>

* Update src/field/pokemon.ts

Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com>

* Update src/field/pokemon.ts

Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com>

* Update src/data/ability.ts

Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com>

* Update src/field/pokemon.ts

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>

* Update src/field/pokemon.ts

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: Adrian T. <68144167+torranx@users.noreply.github.com>
Co-authored-by: Amani H. <109637146+xsn34kzx@users.noreply.github.com>
Co-authored-by: innerthunder <168692175+innerthunder@users.noreply.github.com>
Co-authored-by: flx-sta <50131232+flx-sta@users.noreply.github.com>
Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com>
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2025-04-12 21:22:04 -04:00
Jimmybald1
f9ff4abfb0
[Bug] Fixed biome map options counting rng twice (#5648)
Fixed biome map options counting rng twice

Co-authored-by: Jimmybald1 <147992650+IBBCalc@users.noreply.github.com>
Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com>
2025-04-12 14:56:04 +00:00
NightKev
6f56dce771
[Biome] Add and apply lint/style/noNamespaceImport (#5650)
* Add `lint/style/noNamespaceImport` Biome rule

* Apply Biome rule, add exception for `*.test.ts` files
2025-04-12 01:31:56 -04:00
Blitzy
81f424dc71
[Balance] Fix and Adjust TM Compatibility
Curse
Skill Swap
Aqua Tail
Zen Headbutt
Hidden Power
Tera Blast
2025-04-11 16:33:25 -04:00
NightKev
1a7442511c
[Bug] Fix Biome selection RNG (#5645) 2025-04-10 23:22:42 -07:00
Inês Simões
b1f183199e 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 the else condition in the apply() function in StatusEffectAttr
class.

In pokemon.ts:
Added the function "messageIsImmune(quiet: boolean, effect:
StatusEffect)" which displays the message "It doesn't affect XXXX"
or the " XXXX is already affected by  YYY" message, depending if the
effect trying to be set is already affecting the pokemon or if the
pokemon is immune to the status.
Updated the "canSetStatus()" function so that when it returns false
(meaning the status couldn't be applied) it calls the
"messageIsImmune()" function to display the message correctly.
2025-04-10 22:44:20 +01:00
Sirz Benjie
787feceb14
[Refactor] Refactor variant sprite code part 1 (#5592)
* 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>
2025-04-09 10:43:05 -05:00
damocleas
b3a4c75c06
[Refactor] Delete stale pokemon objects at the end of a battle 2025-04-08 18:10:39 -04:00
NightKev
2c2a34cfaf
Merge branch 'beta' into refactor/delete-stale-pokemon-objects 2025-04-08 15:08:34 -07:00
Dean
31835e6d53
[Bug] Fix #4972 Status-Prevention Abilities do not Cure Status (#5406)
* 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>
2025-04-07 16:32:10 -07:00
NightKev
1171656d12 Update console message 2025-04-07 16:02:58 -07:00
NightKev
17a56cc6c1 Move try/catch inside for loop
Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com>
2025-04-07 15:58:17 -07:00