Compare commits

...

430 Commits

Author SHA1 Message Date
damocleas 7dfd8e72cc
Sync locales and update version to 1.8.4 (#5620) 2025-04-03 00:32:29 -04:00
damocleas 68f10dc199
Merge branch 'main' into beta 2025-04-03 00:28:55 -04:00
NightKev 7b38596a12
Sync locales and update version to 1.8.4 (#5620) 2025-04-02 19:37:48 -07:00
damocleas 333975017f
Hotfixes 1.8.3 2025-04-02 20:37:45 -04:00
damocleas d0703e0e0b
Merge branch 'main' into beta 2025-04-02 20:31:13 -04:00
Dean 4c8f81bb09
[Bug] Fix uses of getAlly() (#5618)
* Fix plus/minus crash

* Update getAlly() uses
2025-04-02 17:28:58 -07:00
Wlowscha c6721521ab
[BUG] Fix broken forms of Pichu starter (#5616)
* Unlock base Pichu form when catching a Pikachu form

* Implementing migrator for broken Pichu forms
2025-04-02 19:59:31 -04:00
Wlowscha db7ed43ad7
[Bug][UI/UX] Make sure forms and evolutions are counted in challenges again (#5617)
Making sure to actually count forms...
2025-04-02 19:42:36 -04:00
Unicorn_Power a7394130a7
(Beta) Undoing the Pika-etern stuff (#5615) 2025-04-02 17:21:04 -04:00
damocleas cf1616212c
Hotfixes 1.18.2 2025-04-02 03:05:51 -04:00
damocleas 7f4b37a36f
Merge branch 'main' into beta 2025-04-02 02:58:27 -04:00
Dean 2773354193
[Bug][Hotfix] Fix various ability flyouts not disappearing (#5614)
* Add hide phases for rogue ability showing

* Hide ability bar on game over

* Hide ability bar in TurnEndPhase
2025-04-02 02:56:19 -04:00
damocleas 951d8b633d
[Balance] Minor Passive Adjustments for 1.8.2 (#5613)
* Update passives.ts
2025-04-02 02:42:10 -04:00
damocleas d92bf29030 [i18n] Update locales submodule and 1.8.2 bump 2025-04-02 00:25:05 -04:00
Dean 5416c76ecb
[Bug][Hotfix] Fix crash when pulling trainer names for (certain) non-English languages (#5608)
* Fix key usage for trainer locales

* Update gts

* Fix partner name generation

---------

Co-authored-by: Wlowscha <54003515+Wlowscha@users.noreply.github.com>
2025-04-01 21:31:52 -04:00
Amani H. 4a4e766135
[Bug] Prevent `Mystical Rock` after Max Stack (#5606)
* [Bug] Prevent `Mystical Rock` after Max Stack

* Update modifier-type.ts

* fixed ordering, testing locally

---------

Co-authored-by: damocleas <damocleas25@gmail.com>
2025-04-01 17:18:49 -04:00
Jimmybald1 5217703d2b
[Bug] Mystical Rock modifier missing Drought check 2025-04-01 20:18:10 +00:00
Dean 1229bfe004
[Bug][Hotfix] Fix Parental bond + Pollen Puff softlock (#5607)
* Fix parental bond softlock

* Add test for pollen puff

---------

Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com>
2025-04-01 12:10:59 -07:00
damocleas 7d6b375f6f
Hotfixes 1.8.1
- Fix Flower Gift / Forecast flyout - P3
- Fix Sinistcha/Poltchageist Crash in the Pokedex - P1
- Undid a dependency update, fixing Mobile fullscreen and the opponent status UI being misaligned
- Hopefully update locales properly this time
2025-04-01 02:55:04 -04:00
Sirz Benjie 6477be99f5
[Misc] Rollback phaser update (package-lock.json) (#5603)
Update package-lock.json
2025-04-01 01:34:47 -05:00
damocleas 13b118454c Update package-lock.json 2025-04-01 01:27:42 -04:00
Sirz Benjie a975192cf4
[Misc] Rollback Phaser Update 2025-04-01 04:54:48 +00:00
damocleas 6538eddf91
[Bug][Hotfix] Mark Sinistcha/Poltchageist forms as unselectable/unobtainable 2025-04-01 00:05:24 -04:00
damocleas 318b0c25d8
Merge branch 'beta' into sinis 2025-04-01 00:03:10 -04:00
damocleas fd40bb50e9 Update beta to 1.8.1 2025-03-31 22:54:15 -04:00
Dean 95194ce8f1 Mark Sinistcha/Poltchageist forms as unselectable/unobtainable 2025-03-31 18:20:49 -07:00
damocleas f417c0915e [i18n] Locales Fix 2025-03-31 21:10:19 -04:00
Dean 136ea70a6e
[Bug][Hotfix] Fix Flower Gift/Forecast flyout (#5599)
Fix Flower Gift flyout
2025-03-31 20:01:30 -05:00
damocleas 4afac11814
1.8 quick Main to Beta 2025-03-31 20:20:21 -04:00
Madmadness65 3d9aea7d71 Update version number 2025-03-31 19:00:47 -05:00
damocleas 5685220dda
Release 1.8.0
just an ordinary update
2025-03-31 19:47:12 -04:00
Unicorn_Power 16bce25333
Pika-e (#5597) 2025-04-01 00:39:54 +02:00
NightKev efa3662099
[Misc] AFD Event (#5596)
* global timed event manager

* more

* Music change

* Add AFD track loop points

* Add AFD music tracks

* changed music for afd

* Enable Seasonal Splash Text, adjust event values

* Add daily run challenge support

* update event date, change trainer shiny chance to 20%

* add banners lol

* fix activeeventhasbanner function

* Fix banner

* Update locales submodule

---------

Co-authored-by: AJ Fontaine <fontbane@gmail.com>
Co-authored-by: damocleas <damocleas25@gmail.com>
Co-authored-by: Madmadness65 <59298170+Madmadness65@users.noreply.github.com>
Co-authored-by: Dean <me@deann.dev>
Co-authored-by: AJ Fontaine <36677462+Fontbane@users.noreply.github.com>
2025-03-31 15:11:01 -07:00
damocleas 6add614e1c
[Balance] Trash to Treasure and The Strong Stuff minor adjustments (#5593)
* Update trash-to-treasure-encounter.ts

* Update the-strong-stuff-encounter.ts

* add 'set' items to garbodor

* Update relevant tests

---------

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2025-03-31 12:34:16 -04:00
damocleas 7e4151f1ef
[Balance] Even more Split Passive fixes (#5591)
* Initial Split Passives

* Update split passives final v1

* Lock Battle Bond Froakie/Frogadier Ability, Gallade back to Inner Focus

* fix mispell

* remove unneeded ability on froakie and frogadier after testing

* fix some form passives

* Update passives.ts

* Update passives.ts

* Correct BB Froakie, G-Max changes for Flapple, Appletun, Toxtricity, Hatterene, Grimmsnarl, Alcremie

* Update egg-moves.ts

* Seviper now matches Zangoose's egg tier wow

* fix mispell

* Update passives.ts

* Update passives.ts
2025-03-31 01:19:58 -04:00
NightKev 51f765d67a
[Move] Add message for called moves failing due to no targets (#5590) 2025-03-31 00:00:59 -04:00
Lugiad 111390631d
[Localization] LATAM Spanish inclusion (#5582)
* Update i18n.ts

* Update settings.ts

* Update settings-display-ui-handler.ts

* Update starter-select-ui-handler.ts

* Update utils.ts

* Add files via upload

* Update i18n.ts

* Add files via upload

* Update loading-scene.ts

---------

Co-authored-by: Dean <69436131+emdeann@users.noreply.github.com>
2025-03-30 19:29:28 +00:00
damocleas 28234e577e
[Balance] Beta Passive Fixes, 1.8 Egg Move Changes, Egg Tier Change, and G-Max Form Re-Evaluation finished (#5588)
* Update passives.ts

* Correct BB Froakie, G-Max changes for Flapple, Appletun, Toxtricity, Hatterene, Grimmsnarl, Alcremie

* Update egg-moves.ts

* Seviper now matches Zangoose's egg tier wow
2025-03-30 06:21:12 +00:00
AJ Fontaine d2ffc12d65
[Refactor] Remove game mode param from applyChallenges (#5585) 2025-03-30 06:18:18 +00:00
Wlowscha 05691970e2
[Bug] Fix pokedex option after catching (#5574)
* 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>
2025-03-30 06:14:19 +00:00
Dean b33d95d27d
[Bug][Refactor] Fix Unsuppressable Abilities being Unreplaceable (#5547)
* Switch unsuppressable to unswappable

* Update test

* Change suppress/replace/copy flags

* Make flower gift unreplaceable

* Make forecast unreplaceable

* No holding hands

* [Sprite] Reduce Mystical Rock sprite's size (#5570)

* Updating the size to be smaller

* Update item atlas

* Fix Malicious Armor missing outline

Noticed when exporting atlas that the item sprite broke

---------

Co-authored-by: Madmadness65 <blaze.the.fireman@gmail.com>
Co-authored-by: damocleas <damocleas25@gmail.com>

* Switch unsuppressable to unswappable

* Update test

* Change suppress/replace/copy flags

* Make flower gift unreplaceable

* Make forecast unreplaceable

* No holding hands

* Apply suggestions from code review

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

* Remove trivial type annotations

---------

Co-authored-by: Unicorn_Power <189861924+Unicornpowerstar@users.noreply.github.com>
Co-authored-by: Madmadness65 <blaze.the.fireman@gmail.com>
Co-authored-by: damocleas <damocleas25@gmail.com>
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2025-03-30 05:37:35 +00:00
Sirz Benjie 66bc83fce4
[Ability] Flower Veil implementation (#5327)
* [WIP] flower veil implementation

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

* Remove promises

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

* Fully implement Flower Veil

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

* Fix ally interaction for battler tag

* Condense and cleanup test files

* Remove a console.log message

* Remove stray excess import

* Update doc comments and apply kev's suggestions from code review

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

* Remove duplicated test

---------

Signed-off-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com>
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2025-03-29 21:32:35 -07:00
damocleas ba1fa85045 [i18n] Update locales submodule 2025-03-29 23:53:11 -04:00
Sirz Benjie 451b1f6b08
[Misc] Update packages (#5462)
* Update via `npm audit fix --force`

* Update i18next family

* Update typescript family

* Update vite-tsconfig-paths

* Update jsdom to 26.0

Important! Security fixes, and performance/stability improvements.

* Update @stylistic/eslint-plugin-js to 4.1.0

* Update inquirer to 12.4.2

* Remove commented code and defunct import

* Run npm-audit fix

* Fix ts errors

* Update eslint family

* Update phaser family

* Update eslint plugin

* Update rest of imports
2025-03-29 22:13:50 -05:00
Blitzy 9c13fa5f80
[Balance] Evil Team Tweaks (#5579)
* Update evil-admin-trainer-pools.ts

* Update trainer-config.ts

* Fix Pokemon names

* Update / Fix Teams

* typo

* Rotom Revival Protocol (and Ponyta)

Accidentally removed Rotom from two different places

* unevolve the buddies

* Update evil-admin-trainer-pools.ts

---------

Co-authored-by: Madmadness65 <59298170+Madmadness65@users.noreply.github.com>
2025-03-30 03:02:27 +00:00
Unicorn_Power 2ad030ec16
[Sprite] Animation updated for gen 7 batch 1 (#5558)
* 749-750 animation updated.

* Fix the animation json error plus missing files.

back shiny had placement issues and needed to be redone and i forgot to include the static updates.

* Remove the code that got merged by accident again

* Wishiwashi and schooling animations 746

* 728-729-730 Animation implementation

also Variant compatibility

* Final touch ups for 728-729-730

* Yes...... another undo redo

* 2037-2038 Alolan vulpix line animations

plus the Primarina back exp I show how missed

* 2074-2075-2076- animations

plus fixing the back shiny vulpix sprite not working correctly

* 2088-2089 animation and variant support.

* Fixing the base shiny 730

* 780 animation update
2025-03-30 01:57:15 +00:00
schmidtc1 27a1638243
[Bug] Fix interactions for Pollen Puff Parental Bond, Multi-Lens, Grip Claw Ally Healing (#5550)
* 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
2025-03-29 18:25:34 +00:00
damocleas 4f19e4a126
[Move] False Swipe/Hold Back don't fail if the target has 1 HP (#5577)
* Remove condition from `SurviveDamageAttr`

* Add test for False Swipe

---------

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
Co-authored-by: EmberCM <kooly213@hotmail.com>
2025-03-29 17:10:07 +00:00
NightKev 25b9fa7933
[Biome] Add "no unused imports" rule (#5580)
* Apply Biome to files

* Add `lint/correctness/noUnusedImports` rule

* Apply rule

* Remove obsolete eslint directives

* Fix variable naming in `game-speed.ts`
2025-03-29 10:24:23 +00:00
Dean a727375730
[Bug] Fix Flash Fire has No Message (#5578)
Add flash fire message
2025-03-29 09:51:28 +01:00
Sirz Benjie 5f01caffae
[Refactor] Minor refactor of trainer-config files (#5573)
* 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>
2025-03-29 00:19:35 -04:00
Sirz Benjie fac20ca97a
[Ability] Fully implement Flower Gift and Victory Star (#5222)
* Fully implement Flower Gift and Victory Star

* Fully implement Flower Gift and Victory Star

* 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/data/ability.ts

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

* Update src/data/ability.ts

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

* Accept suggested change

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

* Accept suggested change

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

* Update src/data/ability.ts

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

* Update src/data/ability.ts

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

* Update src/data/ability.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>

* Fix check for ignore_abilities move flag

* Fix missing argument to getBaseDamage in getAttackDamage

* Fix merge conflict due to same changed import line

* Fix call to getAttackDamage that was reset after merge

* Update calls to getEffectiveStat

---------

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2025-03-28 22:24:19 -05:00
Unicorn_Power 4a560d7185
[Sprite] Reduce Mystical Rock sprite's size (#5570)
* Updating the size to be smaller

* Update item atlas

* Fix Malicious Armor missing outline

Noticed when exporting atlas that the item sprite broke

---------

Co-authored-by: Madmadness65 <blaze.the.fireman@gmail.com>
Co-authored-by: damocleas <damocleas25@gmail.com>
2025-03-28 19:02:47 -04:00
Sirz Benjie 4149d3600a
[Misc] Remove pre-push lefthook (#5572)
Remove pre-push lefthook
2025-03-28 14:49:54 -07:00
Sirz Benjie 35e733e87a
[Test] [Refactor] [GitHub] Enable no isolate for vitest (#5566)
* 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>
2025-03-28 17:30:38 -04:00
Dean b838d5f775
[Misc] Allow Localization of Common Trainer Names (#5569)
* Localize common trainer names

* Update locale key usage
2025-03-28 21:23:57 +00:00
Dean f09c77c81b
[Bug] Fix Extra Ability Activation Flyouts during AI Decisions (#5563)
Fix extra messages in getMoveChance
2025-03-28 18:38:20 +00:00
Wlowscha 188647d2e5
[Bug][UI/UX] Pokédex filters properly track TMs for evolutions (#5568)
Looking at speciesId for TMs
2025-03-28 16:02:42 +00:00
Wlowscha 46d110e705
[UI/UX] Grey options in Pokédex for uncaught mons (#5529)
* 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
2025-03-28 03:59:05 +00:00
damocleas 0ea8edcf75 [i18n] Update locales submodule 2025-03-27 22:58:53 -04:00
damocleas 19c61a041f
[Misc] New Splash Texts, March 2025 (#5345)
* 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>
2025-03-27 19:56:26 -07:00
Dean eb12b8c692
[Bug] Stop Shield Dust and Gluttony from Displaying (#5564)
Prevent displays
2025-03-27 15:01:33 -04:00
Amani H. d955051730
[Bug] `Mystical Rock` Crashing on Selection (#5562) 2025-03-27 00:05:38 -04:00
Wlowscha 5fdc133955
[UI/UX] Pokédex filters correctly show split passives (#5560)
* Pokédex filters properly take split passives into account

* Removed unused dependency
2025-03-27 03:26:03 +00:00
Amani H. 6316218bd3
[Item] Add Weather and Terrain Extender Item (#4799)
* [Item] Add Weather and Terrain Extender Item

* Add Documentation

* Clean Up Unit Tests

* Add Weight Function

* Include Suggestions
2025-03-26 22:40:46 -04:00
NightKev db850c79cd
[Refactor] Moveset arrays can no longer hold `null` values (#4919)
* Pokemon movesets no longer allow `null` values

* Clean up all the bangs caused by movesets allowing `null`

* Pokemon movesets no longer allow `null` values

* Clean up all the bangs caused by movesets allowing `null`

* Fix merge issues

* Remove various unnecessary `?`

* Apply biome

* Fix `global-trade-system-encounter.ts`

* Fix merge issue

* Remove unnecessary parentheses

* Remove missed `?`

* Match formatting of `pokemon.ts`
2025-03-26 19:12:54 -07:00
Unicorn_Power 0b1f324f97
[Sprite] [Item] Weather/Terrain Extender Item Sprite (#5542)
* Terrain/weather-extender item

* Fixing indexing for the sprite atlas

* Re-export item atlas, fix extender item's name

Spaces in names use underscores instead of hyphens

---------

Co-authored-by: Madmadness65 <blaze.the.fireman@gmail.com>
2025-03-26 21:47:16 -04:00
damocleas 938f1b8756
[Balance] G-Max Form Re-Evaluation (#5545)
* Update pokemon-species.ts

* Orbeetle and Drednaw adjustment

* Cinderace, Corviknight, Drednaw, and Coalossal adjustments

* Fix Urshifus

* Butterfree, Orbettle, and Drednaw adjustments
2025-03-26 17:57:30 -05:00
damocleas f911ffc266
[Balance] Split Passives and related (#5531)
* Initial Split Passives

* Lock Battle Bond Froakie/Frogadier Ability, Gallade back to Inner Focus
2025-03-26 16:01:54 -04:00
damocleas ead1bc6cce
[UI/UX] Autofill login text color changed to gray (#5523)
Update index.css
2025-03-25 18:06:28 -07:00
Wlowscha bba7c1610d
[UI/UX] Option to see Pokedex entry after catching wild Pokémon (#5538)
* pokedex option after catching

* Also changing catching for mystery encounters
2025-03-25 13:36:12 -07:00
Lugiad f78015d757
[Localization] Catalan reactivation (#5555)
* Add files via upload

* Update settings.ts

* Add files via upload

* Add files via upload

* Update starter-select-ui-handler.ts

* Update utils.ts with Catalan

* Update loading-scene.ts
2025-03-25 13:06:24 -07:00
damocleas 443264a3ea [i18n] Update locales submodule 2025-03-25 01:55:26 -04:00
Madmadness65 f3141280c9
[Balance] Implement more trainer types & add to biomes (#5520)
* 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>
2025-03-25 01:51:59 -04:00
Wlowscha 7f72794d23
[UI/UX] Cancel button on Pokédex page to previously selected Pokémon (#5528)
* Removed redundant form index argument in show() of pokedex page

* Storing previous pokémon for cancel button
2025-03-23 22:03:11 -07:00
Wlowscha 37e51e9657
[Bug][Challenge][UI/UX] Exclude invalid starters when combining challenges (#5509)
* 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>
2025-03-24 02:40:17 +00:00
Dean dbc8ac26af
[Bug] Fix #5422 Neut. Gas and Primal Weather Persist After Flee (#5496)
* Add applyPreLeaveFieldAbAttrs call to AttemptRunPhase

* Update tests
2025-03-23 23:27:20 +00:00
schmidtc1 40e1e7fd4e
[Bug] Fix Reviver Seed and endure triggering on indirect damage (#5182)
* 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>
2025-03-23 22:59:19 +00:00
Dean 817095d895
[Bug] Fix #2769 Revival Blessing Softlock in doubles (#5141)
* 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
2025-03-23 20:47:51 +00:00
José Serrado Marques 1e876ec595
[BUG] fixes #5472 - transform on reload (#5508)
* [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
2025-03-23 12:07:14 -07:00
NightKev 4b8f1df8cd
[Bug] Add list of uncallable moves for Mirror Move (#5552)
* Add list of uncallable moves for Mirror Move

* Mirror Move now respects the uncallable moves list

---------

Co-authored-by: damocleas <damocleas25@gmail.com>
2025-03-22 14:46:58 -07:00
damocleas d0a9672e91
[Balance] [Move] Add Fleur Cannon as a Metronome callableove (#5551)
* Update invalid-moves.ts

* forgot fleur cannon
2025-03-22 13:18:08 -07:00
damocleas 87b78e6b70
[Balance] [Move] Made more moves callable with Metronome, Assist, Sleep Talk, and Copycat (#5549)
Update invalid-moves.ts
2025-03-22 15:47:41 -04:00
AJ Fontaine c792d5e704
[Balance] Changes to several trainer classes (#5505)
* 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>
2025-03-20 19:53:27 +00:00
Dean 66965bf7e2
[Bug] Fix Slow Start Message being Deferred (#5534)
Fix deferred message
2025-03-20 19:37:16 +00:00
Dean 17e71a1b8a
[Bug] Fix Poison Heal Crash on beta (#5544)
Fix !== null uses
2025-03-20 19:26:49 +00:00
Unicorn_Power b3c7300c37
[Sprite] Fixing the naming issue in exp-sprite.json +Disabling few problematic exp's (#5526)
* fixing the naming in exp-sprite.json

* Did the same thing to 931

* Undo for 3 pokemons due to exp animation quality.

* Corrected the Indicator for the exp being disabled

* Charcadet line exp disable
2025-03-20 19:15:12 +00:00
Dean 585f040057
[Test] Fix Chilly Reception Test Ability Overrides (#5543)
* Fix ability overrides

* Remove extraneous resets
2025-03-19 23:25:14 +00:00
Matheus Rabello Noya Alves 3f887988a6
[Bug] [UI/UX] Smack Down and Thousand Arrows now display a message for Grounding (#5536)
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.
2025-03-19 22:45:41 +00:00
Matilde Simões a1a6b0dd5a
[Bug] Nicknames not properly sanitized (#5537)
* 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>
2025-03-19 22:01:33 +00:00
NightKev b2848af899
[Test] Add ability overrides to Tailwind tests (#5541) 2025-03-18 23:00:46 -05:00
Wlowscha b1d494eadb
[UI/UX] [Bug] Icons for egg moves and passives show up even when not unlocked (#5540)
Reworked icons to more compact code
2025-03-19 03:22:52 +00:00
NightKev 3b99d3aea2
[Misc] Add `* -crlf` to `.gitattributes` (#5539) 2025-03-18 21:52:49 -04:00
Dean d9288a7908
[Bug] Add Neutralizing Gas Message for each user (#5527)
Add message to onOverlap

Co-authored-by: damocleas <damocleas25@gmail.com>
2025-03-18 21:19:37 +01:00
Wlowscha a5ed9c5191
[UI/UX] Mark Revavroom forms as unobtainable (#5525) 2025-03-16 21:51:27 -04:00
Dean 02ae7952ad
[Bug] Fix Commander crash after 5267 (#5524)
Fix reversed commander checks
2025-03-16 12:44:48 +01:00
Dean 1d7f916240
[Refactor] Align ability display with mainline (#5267)
* 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
2025-03-16 02:51:02 +00:00
AJ Fontaine 7aa5649aa8
[Refactor] Move signature species to separate file (#5519) 2025-03-14 17:06:19 -04:00
NightKev e8e0041ed0
[Misc] `OPP_FORM_OVERRIDES` now accepts 0 as a valid form index (#5514) 2025-03-13 21:48:53 +00:00
NightKev 4e1ee9e50b
Revert "[Enhancement] Add form changes for Solgaleo, Lunala, & Marshadow cosmetic forms" (#5512) 2025-03-13 22:32:35 +01:00
Scooom dc46cf6d05
[BUG] Add Multi Attack, Revelation Dance, and Terrain Pulse to Normalize Exceptions (#5503) 2025-03-12 07:03:12 +00:00
Scooom 85c39754c4
[Bug] [Balance] Fix Locked Reroll not using Luck Score (#5502) 2025-03-12 06:34:34 +00:00
Madmadness65 f3f43f4a44
[Enhancement] Add form changes for Solgaleo, Lunala, & Marshadow cosmetic forms (#5344) 2025-03-12 01:00:33 -04:00
Dean b298138157
[Bug] Fix NG crash when ability is reactivated for a Pokemon off the field (#5478) 2025-03-11 03:20:00 +00:00
Dean 929392fe8b
[Bug] Fix #5358 Abilities that Redirect Moves Consider Move-Typings before Ability Modifiers (#5464) 2025-03-11 03:02:51 +00:00
MascaChapas27 572556b7b9
[UI/UX] Changed wrong colors in german type icons (#5494)
Co-authored-by: Ángel <odiopds@yahoo.az>
Co-authored-by: damocleas <damocleas25@gmail.com>
2025-03-10 12:59:19 +01:00
Sirz Benjie 7f226df8d6
[GitHub] Automatically add issue-type in issue templates (#5499) 2025-03-09 22:15:24 +00:00
Sirz Benjie 408b66f913
[Misc][Refactor][GitHub] Ditch eslint for biome, and add a formatter (#5495)
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2025-03-09 14:13:25 -07:00
Sirz Benjie 7455360824
[Misc] Add Wlowscha and SirzBenjie to credits (#5498) 2025-03-08 22:31:36 -05:00
NightKev c977bc86c1
[Misc] Add some pre-defined imports to `overrides.ts` (#5492) 2025-03-07 17:20:08 -08:00
Sirz Benjie 60a4db7059
[Refactor] Refactor moves.ts part 1 (#5420) 2025-03-07 19:10:29 -06:00
Mikhail Shueb e73dbe9861
[Bug] Chilly Reception no longer replaces Legendary Weather (Primordial Sea, Desolate Land, Delta Stream) (#5484)
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2025-03-07 12:31:34 -05:00
Fuad Ali da68cf15c6
[Bug] Harsh Sun, Heavy Rain, and Delta Stream messages now display when their effects are triggered (#5489) 2025-03-06 19:03:01 -05:00
damocleas fdc5e7daea [i18n] Update locales submodule 2025-03-06 14:05:08 -05:00
schmidtc1 7a9b1e5033
[Bug] Fix critical hits not bypassing screens (#5470) 2025-03-06 09:14:22 +00:00
Sirz Benjie ba617ad91b
[Misc] Add a script to help verify correctness of variant sprite masterlist (#5325)
Co-authored-by: AJ Fontaine <36677462+Fontbane@users.noreply.github.com>
2025-03-06 00:39:02 -05:00
NightKev 6595966478
[Misc] `getPokemonSpecies()` no longer accepts `undefined` (#5477) 2025-03-06 02:18:24 +00:00
Unicorn_Power 9544973f1f
[Sprite] Gmax animation implementation + Palkia-Origin fix (#5468) 2025-03-05 14:05:59 -08:00
NightKev f185039474
Merge pull request #5485 from pagefaultgames/main
Main (1.7.7) -> Beta
2025-03-05 14:04:06 -08:00
Xavion3 632caff2f3
[Bug][Hotfix] Fix migration crash (#5482) 2025-03-05 13:58:51 -08:00
Lugiad c890b7ae46
[Localization] [UI/UX] Added Spanish status icons (#5481) 2025-03-05 21:44:29 +01:00
damocleas 1882e96ec5
Minor Release 1.7.6 2025-03-03 23:49:28 -05:00
David Yang 6181afc6d2
[UI/UX] Make left button also go back to run history from run info (#5474) 2025-03-04 00:40:04 +00:00
damocleas ff4184e23f
[Balance] Make Pickup and Honey Gather Unsuppressable (#5476) 2025-03-03 16:33:53 -08:00
Xavion3 cabcfcbd39
[Balance] Make megas/max player pokemon unable to tera (#5469)
Co-authored-by: damocleas <damocleas25@gmail.com>
2025-03-02 21:22:37 -05:00
Sirz Benjie 5e469620ef
[Bug] Fix battle-anims crashing in certain cases (#5337) 2025-03-02 17:15:51 -08:00
Wlowscha 6f686a05e3
[UI/UX] [Bug] Hiding tera button when toggling on stats mode (#5466) 2025-03-02 14:35:59 -05:00
Sirz Benjie 73afb35c4d
[GitHub] Update CODEOWNERS to fix team ownership (#5465) 2025-03-02 10:40:40 -08:00
damocleas 659bc82676 [i18n] Up version to 1.7.6, Update locales submodule 2025-03-02 12:19:17 -05:00
Wlowscha 882b965da1
[Bug] Pledge moves in summary do not break the game (#5461) 2025-03-01 19:46:38 -06:00
Wlowscha b50d2c0783
[Bug][UI/UX] Fix bug in Pokédex for Mothim and other niche cases (#5458) 2025-03-01 16:24:15 -05:00
Wlowscha 8f280bec49
[Bug][UI/UX] Restore V button in battle (#5459) 2025-03-01 21:11:05 +00:00
Wlowscha 04ac5c3762
[Bug][UI/UX] Shiny button can cycle variants even if non-shiny form is uncaught (#5457) 2025-03-01 15:54:29 -05:00
Wlowscha 5c73a1ea46
[Bug][UI/UX] Starter select screen now looks for and displays form-specific abilities (#5454) 2025-03-01 15:43:18 -05:00
Wlowscha c7df847e66
[Bug] Unlocking correct base form of Zygarde when captured (#5453) 2025-03-01 13:33:31 -06:00
Wlowscha 89e8085c39
[Bug] Display Pokémon name in Focus Punch lost focus message (#5448) 2025-02-28 23:22:51 -05:00
Wlowscha d16197e950
[Bug] Gendered forms display correct information in Pokédex (#5452) 2025-02-28 22:34:49 -05:00
Wlowscha b348626ec2
[Bug][UI/UX] Make candy icons show up again in starter select screen (#5451) 2025-03-01 01:00:56 +00:00
Wlowscha 7cc5f40af8
[Bug][UI/UX] Restore egg/tm move and passive icons when using filters in Pokédex (#5450) 2025-02-28 19:55:22 -05:00
Wlowscha 118bdcc49e
[Bug][UI/UX] Never select invisible containers in Pokédex (#5449) 2025-02-28 18:15:11 -06:00
damocleas 9b2f649078
Main -> Beta 1.7.5 #5438
Merge main to beta
2025-02-28 18:02:25 -05:00
Wlowscha 942bcacb56
[Bug][Hotfix] Restrict Use Candies option in the Pokédex during Shop (#5446) 2025-02-28 16:22:22 -05:00
AJ Fontaine 13429446d3
[Bug] Fix tera slot wrapping (#5437) 2025-02-28 06:18:58 +00:00
Xavion3 b33ffb29b3
[Bug] Fix mycelium might softlock (#5441) 2025-02-27 19:08:55 -08:00
Wlowscha 5941cfb001
[Bug][Hotfix] Fix bug with transferring all items (#5440) 2025-02-28 02:49:27 +00:00
Blitzy 9701f27c63
[Bug] [Hotfix] Remove Penny's Extra Zamazenta (#5439)
Co-authored-by: damocleas <damocleas25@gmail.com>
2025-02-28 02:05:11 +00:00
damocleas 49edc39bda
Release 1.7.0 #5429
Release 1.7.0
2025-02-27 19:11:20 -05:00
NightKev 2b535622ac [i18n] Update locales submodule 2025-02-27 15:33:01 -08:00
Xavion3 078c3d00ce
[UI][Enhancement] Implement keybind migrator (#5431)
Co-authored-by: Madmadness65 <59298170+Madmadness65@users.noreply.github.com>
2025-02-27 22:22:09 +00:00
Xavion3 9ff20af8b7
[UI] Make fight cursor tera icon while tera-ing (#5402)
Co-authored-by: damocleas <damocleas25@gmail.com>
Co-authored-by: Madmadness65 <blaze.the.fireman@gmail.com>
2025-02-27 23:13:35 +01:00
Wlowscha 922a17048c
[Bug] Save data migrator to fix starters with no selectable forms (#5425)
Co-authored-by: Madmadness65 <59298170+Madmadness65@users.noreply.github.com>
2025-02-27 21:50:46 +00:00
damocleas 3124aeb810
[Misc] Event Banner Fix (#5435) 2025-02-27 19:59:24 +00:00
damocleas 02edfb673e
Data for possible Pokémon Day 2025 Event (#5433) 2025-02-27 19:12:57 +00:00
Unicorn_Power f902716837
[Sprite] Froakie static scuff (#5434) 2025-02-27 19:05:37 +00:00
Lugiad 32ae72150f
Pokémon Day 2025 Event banners (#5432) 2025-02-27 12:59:33 -06:00
damocleas d12aa635af
[Balance] Follow Cost Change from #5416 (#5430) 2025-02-27 05:56:01 +00:00
AJ Fontaine de148277ea
[Balance] [Bug] Set trainer mons to forms matching specialty type (#5409)
Co-authored-by: damocleas <damocleas25@gmail.com>
2025-02-26 19:14:15 -05:00
Wlowscha 13373a6391
[UI/UX] Pokédex - New locales keys for standalone battle forms (#5386) 2025-02-26 16:57:05 -05:00
Dean 905fec92e9
[Bug] Fix Neutralizing Gas not Deactivating on Faint and Capture (#5423) 2025-02-26 22:39:08 +01:00
Xavion3 035aed3e85
[Bug][UI] Fix arena flyout (#5421) 2025-02-26 19:16:07 +00:00
AJ Fontaine 85f8c59036
[Balance] Paldean Gym Leader, E4, and other Tera-related trainer adjustments #5367 2025-02-26 14:11:46 -05:00
Xavion3 71f644c453
[UI] Tera type on summary screen (#5419) 2025-02-26 17:03:22 +00:00
Esca 883bf45bc0
[Bug][Move] Shed Tail now rounds incurred damage up, not down (#5219)
* 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>
2025-02-26 00:45:29 -08:00
Wlowscha 6e8a4b287c
[UI/UX] Pressing B on filter bar resets filters (#5404)
* 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>
2025-02-26 01:05:39 -05:00
Dean b9a853ed2e
[Bug] Fix canApplyAbility check but for real this time (#5418)
* Move canApplyAbility check

* Fix suppressed abilities not activated properly

* Move canApplyAbility to applySingleAbAttrs

---------

Co-authored-by: damocleas <damocleas25@gmail.com>
2025-02-26 00:48:44 -05:00
damocleas 92ee9d06ca
[Balance] February 2025 Passive/Egg Move/Cost Changes 2 #5416
* Update egg-moves.ts

* Update starters.ts cost changes

* Update passives.ts

* Update mystery-encounter-utils.test.ts
2025-02-25 23:02:04 -05:00
Xavion3 ca5e578954
[Bug] Fix AI func save/loads. #5414
Co-authored-by: damocleas <damocleas25@gmail.com>
2025-02-25 22:27:20 -05:00
Sirz Benjie aa3f924633
Revert "[Bug] Fix canApplyAbility check #5413" (#5417)
This reverts commit 2cc0ac90f8.
2025-02-25 22:05:18 -05:00
Dean 2cc0ac90f8
[Bug] Fix canApplyAbility check #5413 2025-02-25 20:22:32 -05:00
Dean 870bff0e6e
[Bug][Ability] Fix Neutralizing Gas interactions #5381
* 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
2025-02-25 18:38:17 -05:00
Wlowscha 7a9bede38d
[UI/UX][Bug] Fixing obsolete reference in Pokédex to filteredPokemonContainers #5415 2025-02-25 16:17:22 -05:00
Wlowscha 8cc5f650f3
[UI/UX] Reducing number of containers in the Pokédex (#5400)
* 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>
2025-02-25 08:54:48 -06:00
Unicorn_Power d11f02aa3d
[Sprite] Variant json and deletion of the pngs for Vivillon-666 (#5408)
* Variant json and deletion of the pngs

* Variant color adjustment

adjusted some color that werent mapped correctly.
adjusted some colors due to contrast issues

* Fixing  the reason sprite test kept failing.

.....669
2025-02-25 06:54:24 -08:00
Sirz Benjie c81d9b6a89
[Balance] Update moveset gen to calculate expected power (#5390)
* 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>
2025-02-25 08:22:25 -06:00
Madmadness65 88a5c9d416
[Ability] Implement Teraform Zero ability (#5359)
* 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>
2025-02-25 08:46:07 +01:00
AJ Fontaine d14f71d27a
[Bug] Maintain Gimmighoul evo counter when fusing (#5411) 2025-02-24 21:15:15 -08:00
Wlowscha b95bedce7a
[UI/UX] Pokedex - Ensure gender forms loop correctly with either button (#5387) 2025-02-24 20:45:45 -08:00
Wlowscha 4128d09a1d
[UI/UX] Pokedex - Page turning takes filters into account (#5372)
* Introducing list of indices of filtered mons to be passed to the Pokédex Page for scrolling

* Update pokedex-page-ui-handler.ts
2025-02-24 20:44:13 -08:00
Wlowscha 6857cd459c
[UI/UX] Pokédex - Fix candy filter (#5377)
* Hardcoding Pikachu to show 0 candies

* Looking at starterId to determine order in sort by candy
2025-02-24 20:43:53 -08:00
Wlowscha cc7e1af827
[BUG] Base forms are now counted as caught when catching a battle form (#5385)
* Base forms are counted as caught when catching a battle form

* Ensuring that correct form shows up in Pokédex Index
2025-02-24 20:43:34 -08:00
Xavion3 0cb3a28dfa
Fix tera type access (#5364) 2025-02-25 04:33:39 +11:00
Dean 5996f8c6eb
[Move] Add Taunt Removal Message #5407 2025-02-24 11:46:54 -05:00
Xavion3 9fb654ce73
[Balance] Make dual STABs way more likely #5401 2025-02-24 11:44:22 -05:00
Jimmybald1 8f15788b39
[Misc] Added a Daily Run Seed Override to the overrides. Only works locally. (#5330)
* [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>
2025-02-24 11:43:38 -05:00
Unicorn_Power 1c192d434b
[Sprite] 666-Vivillion back exp change and scuff fix (#5382)
* [Sprite] Vivillion back exp change and scuff fix

scuff is the incorrect labeling in the exp-sprite.json.
fully updated meadow pattern.
all incorrect labeled back sprites are no more a thing.

* fix the last issues with Shiny exp backs

* Last adjustment for the future variant Pr

added 1 color
2025-02-24 10:44:41 -05:00
Dean 9d03004dd3
[Test] Fix import in `create-test` script (#5403) 2025-02-23 23:17:37 -08:00
NightKev 3ab75b297b
[Misc] Copy Encounter Phase logging to MEs (#5405) 2025-02-23 22:27:40 -08:00
AJ Fontaine 095634fe6d
[Bug] Fix Gym Leaders fought on wave 20 not evolving mons when fought later in the run (#5370)
* Fix repeat Plains GLs not evolving first mons

* Add null check
2025-02-23 13:21:24 -06:00
NightKev cefd92bee8
[Misc] Update Encounter Phase logging nature display and passive check (#5397) 2025-02-23 00:06:27 -06:00
Madmadness65 eeeb4171b1
[Move] Add flavor text for Splash and Celebrate (#5392)
* Add flavor text for Splash and Celebrate

* Remove unnecessary constructors

* Use Splash move text from move triggers
2025-02-23 00:35:49 -05:00
Sirz Benjie a51a504155
[Test] Move test folder out of src (#5398)
* move test folder

* Update vitest files

* rename test/utils to test/testUtils

* Remove stray utils/gameManager

Got put back from a rebase
2025-02-22 22:52:07 -06:00
Wlowscha bd288ad862
[UI] Adding container to set transparency of optionSelectText (#5396) 2025-02-22 15:38:11 -08:00
Sirz Benjie b1b71dbd6d
[Test] Fix annoying BBCodeText error messages in tests (#5395) 2025-02-22 15:37:52 -08:00
Sirz Benjie 7a015e094f
[Bug] [Move] Add focus punch lost focus message (#5341)
* Add focus punch lost focus message

* Rename attribute

* Added automated test

* Fix failedToTerrain being undefined

* Update src/test/moves/focus_punch.test.ts

Co-authored-by: Wlowscha <54003515+Wlowscha@users.noreply.github.com>

* Update src/data/move.ts

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

---------

Co-authored-by: Wlowscha <54003515+Wlowscha@users.noreply.github.com>
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2025-02-22 13:33:32 -05:00
Wlowscha 180a9cc054
[UI/UX] Pokedex - Separate shiny icons (#5371)
* Separate shiny icons

* Added forgotten access modifier
2025-02-21 14:09:00 -06:00
damocleas 39f2fdf4ff
[Bug] Giratina no longer loses its' Hidden Ability going from Origin back to Altered Form #5326 2025-02-21 02:43:45 -06:00
Sirz Benjie e4ce822ce6
[Refactor] Remove Promises from moves and abilities (#5283)
* 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>
2025-02-21 09:34:39 +01:00
Wlowscha 97aeceab58
[UI/UX] Pokédex - Move Pokédex option up the starter select screen menu #5376 2025-02-21 03:26:50 -05:00
Xavion3 bec73fd8d3
[Bug][UI/UX] Remove redundant bgm bar (#5391) 2025-02-20 22:50:44 -08:00
Wlowscha 6a4c6f1c89
[UI/UX] Pokédex - Informative messages for level up moves #5388 2025-02-20 23:23:34 -06:00
NightKev 13d9140340
[Misc] Update console logging of encounter pokemon on beta/local (#5389) 2025-02-20 19:11:52 -08:00
Sirz Benjie 5072460f4c
[Bug] Fix endless tokens allowing attacks to deal 0 damage (#5347) 2025-02-20 16:16:41 -08:00
Xavion3 ed8d162125
[Balance] Make stat a much larger factor in moveset gen #5383 2025-02-21 10:50:39 +11:00
Lugiad 073a36a33e
[Localization] Corrections move-touch-controls-handler local key names (#5365)
* Update move-touch-controls-handler.ts

* Update locales submodule

---------

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2025-02-21 10:49:57 +11:00
Xavion3 2d067ec7ce
[UI][Enhancement] Allow tera type choice on starter select (#5366)
* Allow tera type choice on starter select

* Make tera type actually apply in run

* Remove logging statement

* Add support for alternate forms
2025-02-21 07:23:08 +11:00
Lugiad 3a4c8eb92e
[UX/UI] [Localization] Summary removed Lv and ID No. as image texts (#5361)
* summary-ui-handler.ts Lv. and ID No. Text

* Remove Lv and ID No.

* Remove Lv and ID No.
2025-02-21 02:08:48 +11:00
Lugiad c3045b58b6
[Localization] Localizable Lv UP pop-up bar (#5336)
* Update party-exp-bar.ts localizable

* Update party-exp-bar.ts
2025-02-21 02:06:12 +11:00
Dean a346318f9d
[Move] Implement Quash (#5049)
* Add quash logic for single targets

* Multi-squash power

* Update MovePhase constructor

* Start searching from front of phaseQueue instead of weather

* Use findPhase instead of looping to search

* Basic test case

* Test for failure on a already moved target

* Speed order test

* Fix speed test comment

* Fix ForceLastAttr to properly respect speed order

* Respect trick room in quash turn order

* Test for respecting TR

* Add comments, fix var name

* Allow for quashed speed ties

* Avoid reapplying if a move is already forced last

* Spacing

* Quash does fail in a single battle despite this not being documented anywhere

* Add move text

* Update move.ts (readability)

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

* Use globalScene

---------

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2025-02-19 18:59:54 -06:00
Amani H. 7ec0dba74b
[Bug/Item] Fix Flame Orb Weight Function (#5380) 2025-02-19 14:19:02 -08:00
Dean 9cc1b17745
[Bug] Fix moves/abilities which modify abilities (#5146)
* Add setAbility method to pokemon.ts

* Edit SwitchAbilitiesAttr to use setAbility

* Change AbilityGiveAttr to use setAbility

* Rename setAbility to be more accurate

* Fix AbilityCopyAttr

* Fix AbilityChangeAttr

* Fix Transform

* Fix imposter

* Fix PostDefendAbilityGiveAbAttr

* Actually fix imposter

* Actually fix transform

* Fix CopyFaintedAllyAbilityAbAttr

* Fix Trace

* Fix PostDefendAbilitySwapAbAttr

* Add tests for skill swap

* Add tests for doodle

* Add tests for entrainment

* Add tests for role play

* Add test for simple beam

* Add test for transform

* Add test for imposter

* Add tests for mummy

* Add tests for trace

* Add tests for wandering spirit

* Consider legendary weather when changing ability

* Ensure that passives are not (re)applied when main abilities change

* Add general ability swap test cases

* Fix test name

* Add NoMidTurnActivationAttr

* Remove NoMidTurnActivationAttr from illusion

* Remove extraneous call to triggerWeatherBasedFormChanges

* Fix primal weather clearing

* Change "MidTurn" to "OnGain"

* Change NoOnGainActivationAttr to a field in PostSummonAbAttr

* Add passive support

* Remove redundant parentheses

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

---------

Co-authored-by: damocleas <damocleas25@gmail.com>
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2025-02-19 09:02:39 +01:00
NightKev 7fafccf8de
[Test] Disable broken Wimp Out test (#5369) 2025-02-18 19:47:50 -08:00
Xavion3 8864347cb0
[Move] Make Disable disable most recent move instead of oldest move (#5321) 2025-02-17 20:53:57 -06:00
Unicorn_Power 5fa77b7177
[Sprite][Exp First batch of exp change (#5231)
* [Sprite][Exp change] Gen 6 - Gen 7

* Sylveon new exp

* 702 Dedenne

* 712-713 exp changes
2025-02-17 20:32:17 -06:00
Unicorn_Power fd066ac9b2
[Sprite]Batch 5 exp change (#5243)
* 718 and 718-10 exp change and removal of experimental

* 719 exp change and removal of exp

* 362-mega exp change

* 248-mega exp change

* Fix missing pixels on 248-mega back-exp

* screwing up the master.json to properly commit it

Somehow its ignoring the master.json changes when checking mega tyranitar

* Reverted the screw up on Master.json

Trying to fix so test check the correct files and not look for a png that dont exists

* update the exp-sprites.json

after Kev gave me the Info I needed I did this

* fix it and pokemonSprites text is passing

* Final Adjustment for the colors regarding 248-mega.

Adjusted the colors so that it would GLOW and not become darker.

---------

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2025-02-17 20:27:19 -06:00
Unicorn_Power 3018a747bd
DuskNoir sprite fix and base sprite fix (#5338) 2025-02-17 20:26:36 -06:00
Unicorn_Power 62bacf52a7
[Sprite] Batch 6 exp change last for Gen 6 (#5248)
* 653-654 exp change

* 656 exp change

* 664-665 + 663 exp change.

Will need to remove Exp need in the future

* 714 exp change and removal of Experimental need

Its a better improved version of what we already had all around.

* 656 exp change + static change

Undoing the smiling froakie sadge

* 715 files and base fix

I fix the sprite bug that has been around for the longest time. HELL YEAH

* Finishing touches to 654 variants

Gave Braxien tier 2 and tier 3 custom fire color matching the variants for contrast.
2025-02-17 20:24:05 -06:00
AJ Fontaine c7ee0173f6
Fix Impidimp front Arctozolt back variants (#5342) 2025-02-17 20:23:10 -06:00
Unicorn_Power a8bf385899
[Sprite]Batch 3 of exp changes (#5232)
* Pancham-exp change

* 698 -Exp change and undo experimental need

* 703.exp change and undo experimental

* 694-exp and removal of experimental

* 698-fixing missing pixels and removing uneeded files
2025-02-17 19:52:43 -06:00
Unicorn_Power 200d52cd99
[Sprite]-2.0-batch-4-exp-change (#5277)
* 707 Klefki animation change and removal of experimental need

Animation is high enough quality plus personality for the pokemon that there wont be a need to try and make 1 better. this is the best animation for klefki

* 704-705 change of exp + 707 Experimental removal

* +707

 fix a Json over sight and now are displaying properly

* 708 animation change and removal of Experimental need

Phantump's animation quality is already top notch and dont need to stay in exp prison

* 692-693 exp change
2025-02-17 19:52:21 -06:00
Unicorn_Power 9e1cc1f188
651. 661-662. 672 exp change (#5314) 2025-02-17 19:45:28 -06:00
AJ Fontaine 7463bedbfd
Un-screw the pooch (#5363) 2025-02-17 19:44:51 -06:00
Jimmybald1 af91ea85c3
[Bug] Changes Daily Run item stack full message to a delay (#5339)
Co-authored-by: Jimmybald1 <147992650+IBBCalc@users.noreply.github.com>
2025-02-17 19:22:12 +01:00
Lugiad ed8ef48068
[Localization] Move Touch controls Localization (#5349)
* Update move-touch-controls-handler.ts localization

* Update move-touch-controls-handler.ts
2025-02-17 19:17:04 +01:00
Lugiad db22354057
Update starter-select-ui-handler.ts Spnaish text size (#5356) 2025-02-16 22:30:27 -06:00
Blitzy e1327c1d2d
[Balance] Guarantee Tera Orb as a reward from Rival 4, Remove it from Classic Item Pool (#5353)
* Add Tera Orb to Rival

* Remove Tera Orb from Classic Rewards
2025-02-16 20:40:11 -05:00
Xavion3 0913c77140
Update version number for migration code (#5354) 2025-02-16 18:07:09 -06:00
Sirz Benjie 4361aa089b
[Refactor] Replace integer holder with number holder (#5350)
* Replace integer holder with number holder

* Remove duplicate NumberHolder

---------

Co-authored-by: Madmadness65 <59298170+Madmadness65@users.noreply.github.com>
2025-02-16 15:31:46 -08:00
Xavion3 90d32b886c
[Feature] Tera Rework (#5233)
* Commit old stashed changes

* Complete basic implementation of Tera

* Fix effectiveness test

* Make tera retain until forced recall or faint, regain on biome change

* Experimental sparkle fix

* Fix champion teras

* Attempted fix for double battles tera UI bug

* Fix the fix

* Fix linting and test issues

* Fix more tests

* Change int type

* Implement tera for ME trainers

* Cleanup species inclusivity check

* Make tera instant recharge if terapagos in party

* Make useless tera shards not generate

* Implement stellar tera damage boost

* Improve tera selection UI

* Tidy up animation and localisation

* Improve tera button sprite

* Fix Lance tera

* Make tera instant recharge during E4 in classic modes.

* Fix formatting in the tera common animation

The animation was also not playing due to `frameTimedEvents` being missing as well.

* Make tera effect start after animation

* Implement save migration

* Update version number for migration code

---------

Co-authored-by: Madmadness65 <blaze.the.fireman@gmail.com>
Co-authored-by: Madmadness65 <59298170+Madmadness65@users.noreply.github.com>
2025-02-16 16:20:50 -05:00
Kenneth West 4bc617bd5f
Fix [BUG] #5081 Wrong visual text when using priority moves on Psychic Terrain (#5091)
* Fix [BUG] #5081 Wrong visual text when using priority moves on Psychic Terrain

* Apply suggestions from code review for global scene change
2025-02-16 15:18:19 -06:00
AJ Fontaine ef11527b9a
Remove outdated Victini check for monogen challenge (#5309) 2025-02-16 15:07:07 -06:00
Wlowscha 5b1950a1ae
[Bug][UI/UX] Setting proper labels in cost reduction dropdown filter #5316 2025-02-15 23:34:10 -05:00
Madmadness65 4d5f9cecf1
Fix Zenith Marshadow missing a party icon (#5301) 2025-02-15 20:32:07 -06:00
NightKev 8f496ee226
Merge pull request #5329 from pagefaultgames/main
Main (1.6.4) -> Beta
2025-02-15 17:26:53 -08:00
Jannik Tappert 8555ef7cb7
[QOL] Make the name and formName readable for bigger sprites in pokedex (#5328)
* Make the name, formName and type readable (bring it infront of larger sprites that would block it)

* Dont to type Icons otherwise they will overlay on the "want to go back" text

* Update src/ui/pokedex-ui-handler.ts
2025-02-14 22:51:28 -06:00
AJ Fontaine 7b9d1d6570
[Hotfix] Fix crash involving female Pyroar fusions with exp sprites (#5331)
* Fix crash involving female Pyroar fusions with exp sprites

* Update locales submodule
2025-02-14 18:51:41 -08:00
Xavion3 77fbcc70ef
[Bug][Hotfix] Fix fusion with dual type + monotype with shared primary type. (#5322)
* Fix fusion with dual type + monotype with shared primary type.

* Update version number

* Add test case
2025-02-14 02:40:13 -05:00
damocleas 727bf0d74d
[Bug][Hotfix] Show caught pokemon correctly #5320
Merge pull request #5320 from Wlowscha/hotfix-show-caught-pokemon-correctly
2025-02-13 21:25:09 -05:00
Wlowscha d159901ea1
Updated version 2025-02-14 03:03:58 +01:00
Wlowscha 8f498f1197
Counting default form in caughtAttr for mons that don't have alternative forms 2025-02-14 03:03:14 +01:00
damocleas f68a833fcf
[Bug][Hotfix] Display caught forms in dex as intended #5319
Merge pull request #5319 from Wlowscha/hotfix-show-caught-forms-in-dex
2025-02-13 20:43:31 -05:00
Wlowscha 7611061378
Updating version 2025-02-14 02:15:24 +01:00
Wlowscha 5ad8f18950
getFullUnlockedData now properly accounts for forms 2025-02-14 02:13:28 +01:00
damocleas 1b16825a50
[Release] 1.6.0
Release 1.6.0 and all that
2025-02-13 19:01:07 -05:00
Sirz Benjie 3fd5414f5c
[Misc] Increment version number (#5317) 2025-02-13 15:37:54 -08:00
Sirz Benjie dcd1636338
[i18n] Update locales submodule (#5318) 2025-02-13 15:28:59 -08:00
Sirz Benjie 6acd15970e
[Ability][Bug] Remove partial designation from Quark Drive and Protosynthesis #5315 2025-02-13 16:20:54 -05:00
damocleas d629bf12ab
[Misc][Balance] Organizing Evil Teams (#5303)
* Organized all evil teams
* Improved Giovanni and other Evil Team Leaders
* Experienced endless pain
2025-02-13 16:20:13 -05:00
Lugiad f1283ad1c8
[UI/UX] Valentine 2025 Event Banners (#5310)
* Valentine 2025 Event Banners
2025-02-13 16:11:40 -05:00
Wlowscha be0f3b2ab3
[Bug][UI/UX] Dex bug fixes 12 feb (#5307)
* Fixed bug when setting tint of eggs for egg move filter

* Form text is properly hidden when going to filters

* Displaying level up moves of alternate forms

* Offsetting form cycle button when uncaught text is shown

* Pokedex buttons now appear on mobile touchpad

* Hotfix to prevent "Normal" form to showing the text

* Preventing filter texts from showing gibberish

* Moving cursor to input text when pressing on filter

* Introducing method to get full obtainable unlocks for a given species

* Filtering obtainable unlocks in dex

* Buying eggs in dex does not crash the game

* Shiny icon does not overlap with luck text for evolutions

* Shiny is maintained correctly when cycling through different pages

* Displacing text elements to avoid overlap for localized form names

* Checking starter caughtAttr in addition to pokemon caughtAttr
2025-02-12 19:14:22 -08:00
AJ Fontaine 595413edd7
[i18n] Update locale submodules (Feb 12 21:30 UTC) (#5308) 2025-02-12 15:14:22 -08:00
Wlowscha 7199aee9ad
[UI/UX] Fix showing form names and types (#5302)
* Correctly displaying form names

* Fixed bug which displayed wrong form types

* Handling unobtainable forms

* F button does not show up if there is only one obtainable form
2025-02-12 13:09:25 -05:00
Wlowscha 5743751e5c
[Bug][Test] Adding bypass faint to abilities that need it + fixing Perish Body (#5226)
* Added tests for snad spit, seed sower and perish body; for all three, the test checking if the ability triggers after the user faints is failing.

* Adding .bypassFaint() to the three abilities, tests passing

* Apply suggestions from code review

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

* Removed incorrect test for perish song

* Added tests for perish body when one mon already has the perish song tag, both ways

* Changed ability behavior to pass tests

* Removing superfluous conditional

---------

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2025-02-11 17:01:54 -06:00
Wlowscha f087162eeb
Adding for text on main dex page (#5300) 2025-02-11 16:40:20 -06:00
AJ Fontaine b483aa0465
[Sprite] Fix Stunfisk variant backs to use shader (#5293) 2025-02-11 14:39:04 -08:00
Esca ce8b5752c4
Fix Lunar Dance and Healing Wish not failing when no valid teammates are present (#5195)
Co-authored-by: damocleas <damocleas25@gmail.com>
2025-02-11 16:36:49 -06:00
AJ Fontaine 03011c4601
[Balance] Change IV Scanner to single stack (#5299)
* Make IV Scanner max stack 1

* Apply suggestions from code review

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

---------

Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com>
Co-authored-by: damocleas <damocleas25@gmail.com>
2025-02-11 16:35:24 -06:00
AJ Fontaine 195a3936b3
[Sprite] Update Litleo/Pyroar exp sprites, enable female exp sprites (#5260)
* Enable female experimental sprites

* Update Litleo/Pyroar exp sprites

Co-authored-by: Unicornpowerstar <gabriella.pahankala@hotmail.se>

* Update sprite test to check exp female variants

* Fix shading on shiny Pyroar, remove unused 668-female files

---------

Co-authored-by: Unicornpowerstar <gabriella.pahankala@hotmail.se>
2025-02-11 14:34:40 -08:00
damocleas 5045b637ff
[Balance] Item Table Removals and increased Wide Lens Frequency (#5296)
* Update modifier-type.ts

* Up weight of event DNA Splicers

* fix attempt 1

* Removed 100 pokemon minimum requirement for Catching Charm

commit fontbane suggestion

Co-authored-by: AJ Fontaine <36677462+Fontbane@users.noreply.github.com>

* Removed unused items from item table

* removed selfStatLowerMoves

---------

Co-authored-by: AJ Fontaine <36677462+Fontbane@users.noreply.github.com>
2025-02-11 14:10:25 -08:00
AJ Fontaine 7fea8603f3
[Refactor] Add support for showing separate species form names (#5294)
* Support for localization of regional form names

* Show names of regional and other forms where appropriate

* Add form name to evolution screen

* Remove formKey parameter

* Update docstrings

* More SpeciesFormKey

Co-authored-by: Wlowscha <54003515+Wlowscha@users.noreply.github.com>

* Clean up

* Fix inconsistent key name

---------

Co-authored-by: Wlowscha <54003515+Wlowscha@users.noreply.github.com>
2025-02-11 15:41:22 -06:00
geeilhan b31d5fd23e
[Move] Spectral Thief Full Implementation (#4891)
* fully implemented spectral thief

* Update to structure of implementation

* line commented target.scene.queueMessage since message does not exist yet

* changed documentation

* added move-trigger.json key

* removed line comment since key was added to english locales

* removed console.log messages used for debugging

* refactored move-trigger key to race with @muscode13

* added more automated tests

* github tests failed

* removed line comment since key was added to english locales

* refactored move-trigger key to race with @muscode13

* added more automated tests

* github tests failed

* solved conflicts

* Update src/data/move.ts

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

* removed .partial()

* corrected spectral thief name

* changed target.scene to globalScene

* changed comments

---------

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com>
2025-02-11 03:26:01 -08:00
Sirz Benjie 5296966f70
[Ability] [Move] Implement Magic Bounce and Magic Coat (#5225)
* 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`
2025-02-11 03:25:36 -08:00
NightKev 702a6ba482
[i18n] Update locales submodule (#5298) 2025-02-11 03:24:48 -08:00
Wlowscha 60b27f4f62
[UI/UX] Pokedex updates batch (#5282)
* Introducing tray to display form icons in the pokedex; displaying correct information for uncaught and seen forms in pokedex page; dexForDevs now unlocks everything in the main page

* Filtering correctly passive abilities and form abilities. Passive candy symbol is now colored

* Pikachu does not break the dex due to having no passive

* Fixed position of pokemonFormText

* Added button instructions to show forms

* Allowing candy upgrades for evolutions; too expensive options shown in shadow text

* Apply suggestions from code review

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

* Fixed game crashing after save and quit

* Updating import of BBCodeText

* Restoring name on dex page

* getStarterSpecies now looks at speciesStarterCosts to determine what is a starter instead of looking at game data (exception for Pikachu)

* Selecting pokedex option in starter select menu does not play error sound

* Mons having no TM moves don't freeze the game in the dex

* Menu in pokedex page is not pushed to the left when localized options are long

* Removed spurious globalScene.clearPhaseQueue() call

* Showing error message when clicking tm option if no tm moves are available

* Egg move icon and passive icon are darkened when filtering if the respective move or passive has not been unlocked

* Hiding form button when switching to filters

* Hiding "Show forms" button while forms are being shown

---------

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2025-02-10 23:32:32 -08:00
NightKev f5ef4a5da9
[Test] Fix Tera Blast test (#5297) 2025-02-10 23:14:54 -08:00
geeilhan 42c4ca27e6
[Ability][Move] Last Respects Refactor and Full Implementation (#5200)
* full implementation of supreme overlord + test

* removed unused import

* changed documentation since Battle.playerFaints is not used in supreme overlord

* Update faint-phase.ts

* changed supreme overlords power calculation function and adjusted tests

* added changes to Last Respects too

* added playerFaints to SessionSaveData to make the counter saveable

* Apply Kev's suggestions

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

* Reset enemy faint counter per battle

* Re-mark supreme overlord as partial

* added automated test case

* moved playerFaints reset to resetArenaEffects

* removed resetEnemyFaintCount() function since it is unused

---------

Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com>
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2025-02-11 00:53:37 -06:00
Scooom abf9c83607
[Bug] Fix Fused Pokemon not having stats Flipped correctly (#5295)
Co-authored-by: Scooom <jerry@hosterslice.com>
2025-02-10 19:33:13 -08:00
AJ Fontaine de5aba3d5e
Fix Greninja floating static backsprite (#5292) 2025-02-10 20:17:01 -06:00
AJ Fontaine 20ed4db88b
Index Zangoose sprites (#5042) 2025-02-10 20:15:59 -06:00
geeilhan e75ddfa975
[Ability] Ignore Held Items for Stat Calculation (#5254)
* added the ability to ignore held items at stat calculation

* integer -> number in src/field/pokemon.ts

* added tests from @SirzBenjie

* Update test

* Fix test filename

* added turnorder to tests

* added tera_blast changes and tests

---------

Co-authored-by: damocleas <damocleas25@gmail.com>
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2025-02-10 18:56:56 -06:00
Chris 8012a1b559
[Bug] Fix Fun and Games playing move animations even if off (#5187) 2025-02-10 13:48:50 -08:00
AJ Fontaine 3daa9054f3
[Misc] Add data for theoretical Valentine's event (#5244)
* Add Valentines event data

* Event ends Feb 21 not March 21

* Event starts Feb 11 12:00 UTC for testing on beta

* Oops I meant February 10

* Add Luvdisc +3 Luck Boost

* Added Applin to round out the total pokemon and because I know people are going to be confused why it isn't here if they've actually read in gen 8 (any readers in chat?)

---------

Co-authored-by: Jannik Tappert <38758606+CodeTappert@users.noreply.github.com>
Co-authored-by: damocleas <damocleas25@gmail.com>
2025-02-10 00:30:39 -06:00
damocleas f77bfc8367
Reapply [UI/UX] Show IVs on stats page of summary (#5172) #5291
This reverts commit 612e6a25c1.
2025-02-10 00:40:26 -05:00
Sirz Benjie c5968d52ce
Merge pull request #5228 from DayKev/add-eslint-promises-rule
[Test] Add eslint rule enforcing proper `await` usage in tests
2025-02-09 18:57:22 -06:00
damocleas 612e6a25c1
Revert "[UI/UX] Show IVs on stats page of summary (#5172)" (#5284)
This reverts commit 366c88517c.
2025-02-09 04:13:06 -05:00
AJ Fontaine 366c88517c
[UI/UX] Show IVs on stats page of summary (#5172)
* Show IVs on stats screen

* Clearer text and gold perfect IVs
2025-02-09 03:41:59 -05:00
PrabbyDD 7cd3217114
[Ability] Implement Mirror Armor (#4769)
* beginnings of implementation of mirror armor

* logging some new changes

* fixing edge cases

* adding changes for sticky web and other features of mirror armor

* adding changes for sticky web and other features of mirror armor

* adding more unit tests and cleaning up notes

* Update src/data/ability.ts

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

* Update src/data/ability.ts

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

* Update src/data/ability.ts

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

* Update src/data/ability.ts

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

* using arena tags source id variable

* updating submodule pointer for locales

* small change

* Update src/data/move.ts

commit Kev fix (minor flip for consistency)

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

* fix import

* Use global scene

* Update tests

---------

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
Co-authored-by: Madmadness65 <59298170+Madmadness65@users.noreply.github.com>
Co-authored-by: Madmadness65 <blaze.the.fireman@gmail.com>
2025-02-09 03:14:56 -05:00
dependabot[bot] a941533a13
Bump vite from 5.4.8 to 5.4.14 (#5275)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.8 to 5.4.14.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.4.14/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.4.14/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-08 11:49:02 -08:00
dependabot[bot] e29b8937f2
Bump vitest and @vitest/coverage-istanbul (#5276)
Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) and [@vitest/coverage-istanbul](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-istanbul). These dependencies needed to be updated together.

Updates `vitest` from 2.0.4 to 2.1.9
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v2.1.9/packages/vitest)

Updates `@vitest/coverage-istanbul` from 2.0.4 to 2.1.9
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v2.1.9/packages/coverage-istanbul)

---
updated-dependencies:
- dependency-name: vitest
  dependency-type: direct:development
- dependency-name: "@vitest/coverage-istanbul"
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-08 11:48:47 -08:00
NightKev 090a60dfba
[Test] Update sprite test to give more useful error messages (#5281) 2025-02-08 10:54:45 -08:00
bjparker1226 66024c9bcd
[Bug] Fix Fell Stinger giving boost when enemy dies to another source (#4723)
* check last source of damage instead of last successful attacker

* implement unit tests for Fell Stinger

---------

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2025-02-08 10:52:59 -08:00
NightKev db50091f12
Merge pull request #5280 from pagefaultgames/main
Main (1.5.4) -> Beta
2025-02-08 10:46:12 -08:00
NightKev e6340de046
[i18n] Update locales submodule (#5279) 2025-02-08 09:52:13 -08:00
NightKev f38393e64f
Revert "[Hotfix] Adding warning message for the maintenance" (#5278)
* Revert "[Hotfix] Adding warning message for the maintenance (#5263)"

This reverts commit c88c9337dd.

* Update version to 1.5.4
2025-02-08 12:22:29 -05:00
Wlowscha 66c70b07a7
[UI/UX] In-Game Pokedex (#5083)
* Working ui, missing logic, logs

* Filtering starters by name is working

* Filtering moves and abilities correctly

* Opening starter page on button.action

* Removed ugly leftover from title

* Added container for text with different colors and titles

* Showing all species in pokedex with no decorations and shinies

* Filtering includes extra forms; moving cursor from filterText to starters does not reset scrollIndex; toggle button for decorations

* Can access evolution page

* Abilities are colored properly (still missing info overlay)

* Biome filter; displays for baseStats, biomes and evolutions

* Removed lockable select ui handler, replaced by changes to standard ui handler.

* Evolutions are selectable from list and displayed properly

* Keeps shiny variant, gender and form when switching to evolutions; show ability descriptions; properly displaying sprites for megas and other forms

* Listing prevolutions and base forms

* Fixed filtering of baby forms with no biome assigned; Caught filter is ALL by default

* Highlighting text filters, resetting all filters when starting up

* No error messag when cursor on uncaught species, showing sprite again after toggling stats

* Simplified Pokemon Scan logic, accepts separate words as input

* Dynamically resizing ability box, showing ability description on first hover. Removed debug logs.

* Removed some more debug messages.

* Filter bar can adjust cursorOffset and x padding

* Fixed some type definitions

* Fixed more warnings; added localization strings in the pokedex scan overlay.

* Fixed fatal bug due to using Object.keys

* Removed debug messages

* Added try catch construct to prevent error that was breaking reloadHelper tests

* Added filter for starters / evolutions

* Biome filter option for uncatchable mons

* C and V buttons snap cursor to filters

* Changing background to make instructions visible

* Can buy candy upgrades through pokedex

* Displaying base stats as bars in an overlay

* Including baby forms among uncatchable mons

* Including evolutions when filtering by biome

* Working logic for select ui handler with skips and scroll

* -Pokedex page showing biomes from prevolutions; displaying correct biomes for forms of Rotom, Burmy and Lycanroc

* Fixed bug in base stats overlay

* Regional forms display name of region in evolutions and prevolutions

* Better messages for evolution conditions

* Showing proper descriptions for menu

* Adding sound effects to menu, and pokemon cry when opening page

* Changing menu colors to textstyle options supporting a legacy version.

* Fix to getStarterSpeciesId to work with all-unlocks files

* Passing a TextStyle to option select ui handler to allow for shadowed text

* Fixed bug of overlapping labels in text filters

* Fixed bug with supportHover and skipped indices in option select ui handler

* Localization of pokemon number label

* Fix to pokemon number localization

* Fix to pokemon number localization

* Adding some comments, removing useless elements

* More cleanup

* Removed candy upgrade instructions from evolved pokemon; attempting to buy candies from evolution now gives error sound instead of crashing the game

* Attempting to exit from filter text is now allowed if current option is empty

* UI changes to make dex pages work in legacy style

* Pokemon name shown while in alt form is no more capitalized

* Handling uncaught pokemon

* Showing types on Pokémon page

* Introducing globalScene everywhere

* Showing evolution requirements in message box

* Displaying form changing items; now using pokemonFormChanges to only show reachable forms

* Playing correct cry

* Pokemon cry in setSpeciesDetails

* Left and right buttons to turn previous or next pokedex page

* Cleaned up "last" from this.species; turning pages now preserves memories of unlocks

* Pokerus cursor is now treated as decoration

* Correctly displaying prevolutions for Pikachu and Gholdengo

* Uncaught forms can be cycled through (with black sprite and no options available)

* Filtering by moves now shows icons to distinguish egg and tm moves

* Added icons for passive abilities

* Added icons to legacy mode; fixed bug that caused game to hang when switching to or from legacy mode

* Pokedex entries are accessible through party screen

* Adding sort criteria for consistency with starter select screen

* Added options to cost reduction filter for consistency with starter select screen

* Updating optionSelectUiHandler to simplify logic and fix bug of autocomplete showing options incorrectly

* Adding Pokedéx option in starter select screen

* Prevolutions are shown properly again; battle forms are considered caught as long as the base form is caught

* Small fixes to evolution and form change descriptions

* Reworked evolutions menu to incorporate condition descriptions

* Moving evolution condition description logic entirely to the SpeciesEvolution class

* Removed extra Miraidon and Koraidon forms

* Properly showing evolution text for Dunsparce and Maushold

* Displaying uncaught forms for Dudunsparce and Maushold properly

* Displaying correct forms for Urshifu and Toxicitry after evolution

* Cleared up comments

* Updating test for tandemaus evolution

* Localized labels for egg moves and abilities

* Added button to show back sprites

* Back to showing only caught battleforms; added dexForDevs option

* Merging shiny and variant buttons

* Uncaught battle forms options are shown in dark text, like evolutions

* Showing proper gender for mons that can only be (or have only caught in) one gender

* Apply suggestions from code review

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

* Removed unused options from base-stats-overlay

* Fixed import of BaseStatsOverlay

* Displaying form-specific TMs properly; adjusting for passives rework

* Removed logging messages

* resetting containers to prevent memory leaks

* Updating integer to number in pokedex

* Implemented suggestion

* Removed some stray comments

* Fixed logic for cursor coming down from filter bar

* Transition from filters to dex box now works in a visually pleasing way

---------

Co-authored-by: Lugiad <2070109+Adri1@users.noreply.github.com>
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
Co-authored-by: damocleas <damocleas25@gmail.com>
2025-02-08 11:48:06 -05:00
Jimmybald1 6e0c8dba88
[Balance] Update base exp values to gen 9 (#5240)
* [Balance] Update base exp values to gen 9

* [Balance] Updated Bloodmoon Ursaluna and Ultra Necrozma with exp formula

---------

Co-authored-by: Jimmybald1 <147992650+IBBCalc@users.noreply.github.com>
Co-authored-by: damocleas <damocleas25@gmail.com>
2025-02-08 08:24:34 -07:00
Sirz Benjie 10502b777c
[Misc] Add .nvmrc for a smoother repo install (#5270) 2025-02-08 08:19:36 -07:00
Madmadness65 280c552d6d
[Audio] Replace End biome BGM with custom BGM by Firel (#5271)
* Replace End biome BGM with custom BGM by Firel

* Update locales submodule

---------

Co-authored-by: damocleas <damocleas25@gmail.com>
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2025-02-08 08:16:25 -07:00
damocleas a46d59b031
[Balance] February 2025 Starter Balance Changes (#5274)
* Update egg-moves.ts

* Update passives.ts

* Update starters.ts starter costs
2025-02-07 22:34:15 -07:00
Wlowscha 345329a31e
[UI/UX] Moving Daily Run option (#5273)
* Position of player count on title screen is set dynamically

* Moving daily run under "New run" option
2025-02-07 20:56:17 -07:00
Sirz Benjie 986fbf3cf7
[Move] [Bug] Fix super-niche edgecase with mega gengar and telekinesis (#5266)
* Fix super-niche edgecase with mega gengar and telekinesis

* Update TelekinesisTag doc comment

* Remove comment about mega gengar as this update fixes it
2025-02-07 15:00:25 -07:00
Lugiad e06a9df4cd
[UX/UI] Update emerald font for zero (again) (#5268) 2025-02-07 13:40:58 -07:00
damocleas c80489460c
[Bug] [Balance] Fix Bouncy Bubble being a spread move, revert back to 100% drain effect (#5269) 2025-02-07 13:28:25 -07:00
Wlowscha c88c9337dd
[Hotfix] Adding warning message for the maintenance (#5263)
* Adding warning message for the maintenance; needs localization

* Update src/ui/title-ui-handler.ts

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

* Update language codes

* Add French translation

Co-authored-by: Lugiad <2070109+Adri1@users.noreply.github.com>

* Fix variable typo in French translation

* Add `zh-CN`

Co-authored-by: Lugiad' <2070109+Adri1@users.noreply.github.com>

* Add `zh-TW`

Co-authored-by: Lugiad' <2070109+Adri1@users.noreply.github.com>

* Add `ja`

Co-authored-by: Lugiad' <2070109+Adri1@users.noreply.github.com>

* Add `es-ES`

Co-authored-by: Lugiad' <2070109+Adri1@users.noreply.github.com>

* Improve date localization

* Specify 12h/24h time format for each language

* Mark the temporary announcement code with comments

* Add `ko`

Co-authored-by: sodam <66295123+sodaMelon@users.noreply.github.com>

* Move announcement box 10 pixels to the left

* Update korean translation

Co-authored-by: sodam <66295123+sodaMelon@users.noreply.github.com>

* Added German translation

Co-authored-by: Lugiad' <2070109+Adri1@users.noreply.github.com>

* Removed some useless spaces in maintenance message

* Reduced announcement font size by 2 px

* Adding italian, fixing japanese

* Use English message as placeholder for pt-BR for now

---------

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
Co-authored-by: Lugiad <2070109+Adri1@users.noreply.github.com>
Co-authored-by: sodam <66295123+sodaMelon@users.noreply.github.com>
2025-02-06 21:17:36 -07:00
Wlowscha 6c4dedb73e
[Refactor/Bug] `Pokemon.leaveField()`, Fix Related Abilities (#5191)
* Added new AbAttr that triggers whenever a pokemon leaves the field

* Use leaveField everywhere

* Changing order for PreSwitchOutAbAttr

* Don't clearEffects when catching in a mystery encounter

* Attempts to make new overrides for testing

* New options in overrides

* Implemented tests for Desolate Land

* Fixing instruct test to not read turnData of fainted mon

* Removed post faint clear weather

* Apply suggestions from code review

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

* Has_passive_ability override now turns off passives if set to "false", defaults to "null"

* Updating overrides type definitions

* Apply suggestions from code review

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

* Suggestions from review

* Fixed strings in suggestions

* Simplified function to throw balls in tests

* Added tsdocs to overrideHelper.ts

---------

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2025-02-06 18:37:50 -05:00
Chris 60990deaf2
[Bug] Update Biome text after using Teleporting Hijinks (#5173) 2025-02-06 14:14:28 -07:00
NightKev f89e42fa7b
[Docs] Update `CREDITS.md` (#5257)
* [Docs] Update `CREDITS.md`

Add Xavion, condense dev team categories

* Move Dakurei and OrangeRed to dev team list

* Move sirzento to dev team list

* Add Navori, move Sam
2025-02-06 09:13:42 -06:00
NightKev a7aebb0823
Silvally/Arceus should not change form without its ability (#4738)
Co-authored-by: damocleas <damocleas25@gmail.com>
2025-02-05 17:48:17 -06:00
NightKev e5691f11a4
[Misc] Prevent auto-imports from appending `.js` to imports (#5256)
Also fixes `#enums` import not being recognized by auto-imports
2025-02-05 21:07:37 +01:00
Sirz Benjie c363d2b93c
[Ability] Fully Implement Good as Gold (#5245)
* Fix good as gold

* Update good as gold tests with Kev's feedback
2025-02-04 21:28:49 -07:00
Wlowscha 8d043a9f55
[Refactor] Replace all instances of `integer` with `number` (#5250)
* Replaced instances of "integer" with "number"
2025-02-04 17:56:13 -07:00
Sirz Benjie 0d1dacbc7a
[Bug] Fix softlock caused by shields down preventing faint status (#5252) 2025-02-03 20:21:49 -08:00
Wlowscha 91a4333e96
[Misc] New data structures for pokedex (#5223)
* Introducing catchableStarters in biomes.ts

* Introducing SpeciesTmMoves with a list of TM moves for each species

* speciesTmMoves now properly accounts for form-specific tms

* Removed argument from transverse function

* Adding types to passive abilities data structures

* Update tms.ts

* Update src/data/balance/passives.ts

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

---------

Co-authored-by: damocleas <damocleas25@gmail.com>
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2025-02-03 17:43:52 -08:00
Sirz Benjie 45f4bf3f13
[Misc] add .editorconfig (#5246)
* add .editorconfig

* add .js files to editorconfig, fix insert_final_newline

* Remove stray .editorconfig in src/tests
2025-02-03 18:55:44 +01:00
Wlowscha 3f71f79d7b
[Bug] Ensuring proper .getTypes() behavior with secondary Normal type (#5241)
* customPokemonData.types now accepts Type.UNKNOWN, ignores when determining type

* Changed test for clowning around encounter to look at getTypes() instead of directly accessing customData

* Simplifying logic for fusions when overrides are involved, introducing new tests in pokemon.test.ts

* Renamed overrideTypes to customTypes to avoid confusion with override

* pokemon.getType() properly recognizes Normal secondary type

* Added effectiveness test for ghost on normal

---------

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2025-02-02 19:17:08 -07:00
Madmadness65 f5c4a205b4
[Sprites] Update many static trainer sprites (#5218)
* Update many static trainer sprites

* Replace BW Plasma Grunts with B2W2 Plasma Grunts

---------

Co-authored-by: damocleas <damocleas25@gmail.com>
2025-02-02 19:14:07 -07:00
Wlowscha 9db2fb1617
Merge pull request #5238 from pagefaultgames/bgm-changes
[Audio] Update Team Plasma battle theme to B2W2 version
2025-02-02 22:05:49 +01:00
damocleas 0d4d25b1e2
Merge branch 'beta' into bgm-changes 2025-02-01 22:29:36 -05:00
Madmadness65 268dff2e3f Update Team Plasma battle theme to B2W2 version 2025-02-01 21:08:41 -06:00
Esca 0da777ff80
[Bug] [Mystery Encounter] Force Clowning Around Blacephalon and Option 3 to roll two different types (#5234)
Co-authored-by: damocleas <damocleas25@gmail.com>
2025-02-01 19:52:45 -07:00
Madmadness65 d318c9b9ae Merge branch 'beta' into bgm-changes 2025-02-01 20:40:14 -06:00
Wlowscha 82da3c1b6d
[Bug][Refactor] Custom types from MEs are correctly applied on form changes (#5229)
* customPokemonData.types now accepts Type.UNKNOWN, ignores when determining type

* Changed test for clowning around encounter to look at getTypes() instead of directly accessing customData

* Simplifying logic for fusions when overrides are involved, introducing new tests in pokemon.test.ts

* Fixed typo

* Fixed another typo

* Renamed overrideTypes to customTypes to avoid confusion with override

* Fixing comments
2025-02-01 20:32:37 -06:00
NightKev dcb4299aaf
[Misc] Add `update-locales:remote` command to `package.json` (#5237) 2025-02-01 20:14:12 -06:00
NightKev 2cac113959
[i18n] Update locales submodule (#5236) 2025-02-01 19:03:40 -07:00
Blitzy 5c5622ed0e
[Enhancement] Add Kukui and Mustard as Champions and Colress as an admin. (#5224)
* Add data for Colress / Kukui / Mustard

* Add Colress / Kukui / Mustard names

* Move Kukui above Hau

* Replace Rood dialouge, Add Kukui / Mustard

* Update trainer-config.ts

* Update battle.ts

* Update challenge.ts

* Update battle.ts

* Update challenge.ts

* Add music & sprites for Colress, Kukui, & Mustard

---------

Co-authored-by: Madmadness65 <59298170+Madmadness65@users.noreply.github.com>
Co-authored-by: damocleas <damocleas25@gmail.com>
2025-02-01 19:03:34 -07:00
Wlowscha 4cc62c9d76
[UI/UX] Moving the "Run History" option to title phase (#5139)
Co-authored-by: damocleas <damocleas25@gmail.com>
2025-02-01 19:02:28 -07:00
damocleas 4dc81c4e7b
Merge branch 'beta' into add-eslint-promises-rule 2025-02-01 19:23:07 -05:00
Wlowscha 38e2abc059
[Balance] Removing Pain Split from boss move pool (#5235)
* Adding HpSplitAttr moves to those removed from the boss pool

---------

Co-authored-by: damocleas <damocleas25@gmail.com>
2025-02-01 17:06:13 -07:00
Jimmybald1 da076d0aa2
[Bug] Fix #5211 gender override would not activate for Male (#5220)
Co-authored-by: Jimmybald1 <147992650+IBBCalc@users.noreply.github.com>
2025-02-01 16:31:29 -07:00
NightKev 7d6036df98 Fix files glob 2025-02-01 01:29:25 -08:00
NightKev c2a7afc5ba [Test] Add eslint rule enforcing proper `await` usage in tests 2025-02-01 00:54:04 -08:00
Scooom db37dcc204
[Misc] Add 100% New Save File (#5104) 2025-01-30 21:25:06 -07:00
Blitzy 5539c5f21f
[Balance] Refactor and Update Champion Teams (#5089)
* Update trainer-config.ts

---------

Co-authored-by: damocleas <damocleas25@gmail.com>
2025-01-30 16:51:08 -07:00
Blitzy 6446e1b7ad
[Balance] Update Evil Leader Teams (#5171)
* Update Evil Leaders

---------

Co-authored-by: damocleas <damocleas25@gmail.com>
2025-01-30 16:45:04 -07:00
NightKev 5280f309f8
[Misc] Add `update-version` commands to `package.json` (#5204)
Version numbers are in the format of `MAJOR.MINOR.PATCH`

Commands added are `update-version:patch` and `update-version:minor`
2025-01-30 15:32:12 -08:00
Wlowscha e5c0b11c02
[Misc] Removing unused forms of Koraidon and Miraidon (#5221) 2025-01-30 14:46:19 -08:00
Esca a255e06d82
[Bug] [Move] Opponent's Healing Wish now checks opponent's party (#5207) 2025-01-30 12:26:05 -07:00
Sirz Benjie 6b36e4ca06
[Ability] Fully implement shields down (#5205) 2025-01-30 12:21:48 -07:00
Madmadness65 861c2e9274
[Bug] Fix Rapid Strike Urshifu not appearing in wild/trainers (#5216) 2025-01-30 09:33:04 -07:00
Xavion3 6c845cc0d3
[Refactor] Add support for form and evolution specific passives (#5193)
* Add support for form and evolution specific passives

* Update src/data/pokemon-species.ts

---------

Co-authored-by: Amani H. <109637146+xsn34kzx@users.noreply.github.com>
Co-authored-by: damocleas <damocleas25@gmail.com>
2025-01-29 21:35:01 -07:00
AJ Fontaine a9ffe03804
[Misc] Rename battle music, experimental sprites settings (#5174)
Co-authored-by: damocleas <damocleas25@gmail.com>
2025-01-29 20:43:44 -07:00
Wlowscha 974fe9f7d3
[UI/UX] Merged shiny and variant buttons in starter select menu (#5213)
* Merged shiny and variant options

* Modified test of starter-select ui to reflect button changes

* Removed unused graphics elements
2025-01-29 20:07:44 -07:00
NightKev 0989128deb
[Bug][Mystery Encounters] Use proper BST calculation (#5199)
Mystery Encounters that check the base stats of a pokemon will
no longer check modified BST and instead check the actual BST
2025-01-29 19:47:09 -07:00
AJ Fontaine 4e0b10769b
[Bug] [UI/UX] Allow arena flyout during target selection (#5208) 2025-01-29 19:25:58 -07:00
Bertie690 4c17ebd400
[Bug][Test] Instruct Bugfixes + More tests (#5134)
---------
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2025-01-29 19:19:05 -07:00
Madmadness65 ec09186264
[Audio] Replace Title BGM with custom BGM by Firel (#5189)
* Replace Title BGM with custom BGM by Firel

Also added descriptions for the battle scene and arena's getBgmLoopPoint methods.

---------

Co-authored-by: damocleas <damocleas25@gmail.com>
2025-01-29 17:51:14 -07:00
damocleas 1e6c74abb8
Merge branch 'beta' into bgm-changes 2025-01-29 19:38:46 -05:00
NightKev e88b8aeb6f
Merge pull request #5212 from pagefaultgames/main
Main to Beta 1.5
2025-01-29 16:37:03 -08:00
AJ Fontaine 8d20b7b5e0
[Hotfix] Fix event encounters not evolving (#5206)
Your snakes shall now evolve properly, wahoo!
2025-01-28 18:53:07 -07:00
damocleas d14a5b8819
[Misc] Update version number to 1.5.1
#5203
2025-01-28 19:28:41 -05:00
NightKev 7563a6cd0b [Misc] Update version number to 1.5.1 2025-01-28 16:24:01 -08:00
AJ Fontaine 9fb9bb7e5d
Specify available langs for yots event banner (#5202) 2025-01-28 18:09:50 -06:00
damocleas 7ee573937e
Release 1.5.0
Merge pull request #5177 from pagefaultgames/beta
2025-01-27 19:03:43 -05:00
AJ Fontaine 8d11313458
[Misc] Charms in any events (#5194) 2025-01-27 14:44:21 -08:00
Lugiad ec68ec2066
[UI/UX] Year of the Snake event banners (#5192)
* Update loading-scene.ts

* 2025 Lunar Year Banners
2025-01-27 15:22:47 -07:00
NightKev 2593d0206c
[i18n] Update locales submodule (#5190) 2025-01-26 16:12:11 -08:00
Madmadness65 8a2ae0a683 Upload fixed version of title music 2025-01-26 17:01:59 -06:00
Madmadness65 15f88fcc39 Replace Title BGM with custom BGM by Firel
Also added descriptions for the battle scene and arena's getBgmLoopPoint methods.
2025-01-26 12:58:46 -06:00
David Yang 33982c311e
[UI/UX] Allow viewing egg list from rewards screen (#5181) 2025-01-26 10:28:03 -07:00
AJ Fontaine f1c06a5476
[Sprite] Fix Lugia backsprite being cut off (#5144) 2025-01-25 18:58:21 -08:00
damocleas 706a23238c
Revert "[Bug] Fix miniblackhole (#5169)" (#5183)
This reverts commit 9c29cdc63d.
2025-01-25 14:29:09 -08:00
NightKev 996ce5d986
[Misc] Update version to 1.5.0 (#5175) 2025-01-24 21:06:57 -08:00
NightKev 1a57d3998f
Merge branch 'main' into beta 2025-01-24 21:04:13 -08:00
AJ Fontaine 8685ec3c3c
[Misc] Rework some aspects of timed events (#5099)
* Refactor timed event changes

* Use getWeather function

* Add mystery encounter tier change/disabling to timed events

* Event luck boost, event encounter helper function

* Events without shiny boost shouldn't give shiny charm

* globalScene -> this in battle scene class

* Change event pools
2025-01-24 15:59:24 -07:00
Bertie690 747656e8df
[Test] Added learn move utility function & level cap overrides (#5058)
* Added learn move utility function
* Added utility functions
* add another test
* Update overrides.ts
* Update moveHelper.ts
* Update overridesHelper.ts
---------
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
Co-authored-by: damocleas <damocleas25@gmail.com>
2025-01-23 18:47:22 -07:00
Xavion3 9c29cdc63d
[Bug] Fix miniblackhole (#5169) 2025-01-23 17:18:21 -07:00
Lugiad 134c6e928f
[UI/UX] New version of the 0 (zero) of pokemon-emerald-pro font (#5167) 2025-01-22 11:15:48 -07:00
Wlowscha d10b7c05f7
[Refactor] Descriptions for evolution and form change requirements (#5147)
* Adding extensions of the SpeciesEvolutionCondition class

* Commented out logs

* Introducing descriptions for form changes; new class SpeciesFormChangeAbilityTrigger which is functionally identical to SpeciesFormChangeManualTrigger but has appropriate description

* Fix in description of compound trigger

* Commenting out logs

* Small fixes, clearing logs, implementing suggestions

* Apply suggestions from code review

Trigger functions are declared with no arguments when not needed.

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

* Removed exports for new classes

---------

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
Co-authored-by: damocleas <damocleas25@gmail.com>
2025-01-21 16:42:27 -07:00
AJ Fontaine 271e51be58
[Balance] [Feature] Match evil teams to monogen challenge (#4850)
* Match evil teams to monogen challenge

* Remove outdated comment

* Remove BBL adjustment

---------

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
Co-authored-by: damocleas <damocleas25@gmail.com>
2025-01-21 15:40:05 -07:00
Madmadness65 93fc779350
[Bug] Fix G-Max Urshifus having wrong movesets (#5162) 2025-01-21 15:34:18 -07:00
AJ Fontaine 39283e373b
[UI/UX] Add sort by caught/hatched count to starter select (#5161) 2025-01-20 15:43:55 -07:00
NightKev d85aedbdfc
[Bug] Prevent pokemon with 0 HP from being statused (#5137)
* [Bug] Prevent pokemon with 0 HP from being statused

* Update test

* Move check to `trySetStatus()` and update test
2025-01-20 09:12:58 -08:00
NightKev d495c48716 [i18n] Update locales submodule 2025-01-20 09:11:58 -08:00
Wlowscha f551c51413
[UI/UX] Adding options to see mons with only one or only two cost reductions (#5045) 2025-01-20 10:01:42 -07:00
Unicornpowerstar ce30897c0a
[Sprite] Update Primal Kyogre Backsprite (#5156) 2025-01-19 16:48:07 -07:00
Scooom 58b7f67ca8
[Challenge] Fix flip inverse achievement (#5145)
* Actually issue FLIP_INVERSE achivement

* Local to remote

* Update src/system/achv.ts

Fix correctly giving FLIP_INVERSE

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

---------

Co-authored-by: Scooom <jerry@hosterslice.com>
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
Co-authored-by: damocleas <damocleas25@gmail.com>
2025-01-19 12:15:59 -07:00
Unicornpowerstar 05485aefdd
[Sprite] Flutter mane back sprite adjustments (#5057)
Co-authored-by: damocleas <damocleas25@gmail.com>
2025-01-19 11:15:33 -07:00
geeilhan f3256ec5d4
[Move] Improve implementation of Rage Fist damage increase (#5129)
* implementation of rage fist

* Apply suggestions from code review

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

* Update src/test/moves/rage_fist.test.ts

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

* added removed TODO from some test cases

* Apply suggestions from code review

Added changes to documentation and cleaning up code

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

* added protected to updateHitReceivedCount()

---------

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
Co-authored-by: damocleas <damocleas25@gmail.com>
2025-01-19 11:52:50 -06:00
Unicornpowerstar 75e66b4099
[Sprite] Update Shelly sprite (#5155)
Co-authored-by: damocleas <damocleas25@gmail.com>
2025-01-19 11:50:19 -06:00
Unicornpowerstar 46e1268a64
[Sprite][Color fix] 3 Venusaur and all forms (#5153) 2025-01-19 11:26:59 -06:00
NightKev ab17df83c7
[Misc] Disable enforced type-only imports in `overrides.ts` (#5154) 2025-01-19 09:13:48 -08:00
NightKev 24f1fedcd0 [i18n] Update locales submodule 2025-01-18 21:11:29 -08:00
NightKev ea3fbecfd3
[Misc] Replace `globalScene` with `this` in `BattleScene` (#5142) 2025-01-18 19:12:50 -08:00
damocleas ae2c9071e4
[Balance] Update starters.ts, removed redundant starters (#5125) 2025-01-17 17:40:40 -05:00
Scooom ca0522436a
[Challenge] Make the Flip Inverse Challenge Secret (#5133)
Co-authored-by: Scooom <jerry@hosterslice.com>
2025-01-16 16:50:19 -08:00
AJ Fontaine 481616c2ad
[Sprite] Fix female Scizor variants not showing (#5097)
Co-authored-by: damocleas <damocleas25@gmail.com>
2025-01-16 16:25:50 -05:00
NightKev 188664f389
[Sprite] Fix game not waiting for variant data to finish loading (#5130)
Co-authored-by: Moka <millennium.stitcher@gmail.com>
Co-authored-by: damocleas <damocleas25@gmail.com>
2025-01-15 20:25:08 -07:00
AJ Fontaine c3641a370f
Add BW crit throw sound (#5131) 2025-01-15 20:11:19 -07:00
Scooom ee6115f49d
[Challenge] Flip Stats Challenge (#5087)
* 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>
2025-01-15 01:55:14 -08:00
Madmadness65 608a92b70c Revert "Update locales"
This reverts commit 95c6f4cd52.
2025-01-15 03:39:52 -06:00
Madmadness65 95c6f4cd52 Update locales 2025-01-15 03:33:52 -06:00
Jimmybald1 d624733565
[Bug] Fix #5034 removed unnecessary caught data block for certain forms (#5119)
Co-authored-by: Jimmybald1 <147992650+IBBCalc@users.noreply.github.com>
Co-authored-by: damocleas <damocleas25@gmail.com>
2025-01-15 02:12:50 -07:00
Dean 39b4d74e95
[Bug] Fix #5029 Memory leak when saving and exiting (#5128)
* Add destroy function to ui handlers

* Implement destroy() for StarterSelectUiHandler

* Update battlescene to free memory when resetting

* Document destroy for starter select

---------

Co-authored-by: damocleas <damocleas25@gmail.com>
2025-01-15 02:06:09 -07:00
AJ Fontaine e2c6bec418
[Bug] Fix Poltergeist message displaying before move use (#5040) 2025-01-15 00:53:16 -08:00
Wlowscha d2a3e4bb2d
[UI/UX] Looping cursor in save slot selection screen (#5109)
* Save slot selection allows looping

* Removed debug logs

---------

Co-authored-by: damocleas <damocleas25@gmail.com>
2025-01-15 00:23:38 -07:00
Wlowscha 7ae216f0d6
[UI/UX] Shop cursor freedom (#5110)
* Allowing cursor in shop to cycle horizontally

* Improved cycling of commands

---------

Co-authored-by: damocleas <damocleas25@gmail.com>
2025-01-14 23:18:24 -07:00
damocleas d5f84cf3df
Change Archen HA from Emergency Exit to Wimp Out (#5124) 2025-01-14 19:07:09 -07:00
Amani H. 6681a913fe
[Bug] Prevent Duplicate Signature Species in Trainer Battles (#5059)
* [Bug] Prevent Duplicate Signature Species in Trainer Battles

* Apply Kev's Suggestion

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>
2025-01-14 18:25:18 -07:00
schmidtc1 001b61c1c7
[Bug][Move] Refactor moves that call a random move (#3380)
* Combine moveset from allies and uses it to get a move

* Clearer implementation of combining user and teammates' moves

* Refactor assist and sleep talk to use metronome's attribute for calling a move

* Refactor move filtering in RandomMovesetMoveAttr, creates arrays with invalid moves for assist/sleep talk

* Refactor RandomMoveAttr to set moveId in condition, places reused code in callMove in RandomMoveAttr

* Correct invalid move lists, adds Max/Z moves to metronome's list

* Remove ignoresVirtual from beta merge

* Remove Max/Z moves per frutescens' comment

* Fix bug with metronome/copycat/assist/sleep talk targeting ally

* Experimental async/await to be tested

* Refactor other attributes to extend CallMoveAttr

* Replace QueuedMove with TurnMove, refactor to attempt two-turn move fix for metronome

* Fix Swallow test due to TurnMove refactor

* Further fixes for TurnMove refactor

* Fix metronome two turn moves for enemy pokemon

* Replace nested ternary with if-else block per DayKev's comment

* Minor fixes

* Adjust command phase args handling

* Create metronome test, refactor RandomMoveAttr for easier testing

* Add unit test for recharge moves

* Refactor Copycat and Mirror Move, adjust move targeting

* Add unit test for ally targeting with Aromatic Mist

* Add tests for secondary effects and recharge moves for metronome

* Add test for Roar, remove test for Acupressure

* Create test for Assist

* Add test for assist failing

* Add sleep talk unit test coverage

* Adjust move-phase to better track last move for copycat, write and update unit tests for assist/copycat

* Create moveHistory in Battle to track all moves used, adjust mirror move to use this, writes unit tests

* Correct mirror move implementation, rewrite unit test to adjust

* Add docs to attrs, update assist to only grab allies sets

* Update assist unit test to match expected functionality

* Update metronome unit test to use getMoveOverride

* Update copycat unit test to use metronome getMoveOverride mock

* Fix phase interception

* Add docs from missed conversations

* Update assist tests to use manual moveset overrides

Minor fixes to other tests

* Remove `export` from `CallMoveAttr`

* Add missing `.unimplemented()` to some Max- and Z-Moves

---------

Co-authored-by: Tempoanon <163687446+Tempo-anon@users.noreply.github.com>
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2025-01-14 15:26:35 -08:00
Jimmybald1 f1e500400a
[Balance][Bug] Fix off by one error in Generate random biome and Daily Mode now has its own function (#5121)
* [Balance] Allow Island and Laboratory in Generate Random Biome

* [Bug] Fix off by one error in Generate Random Biome

* [Balance] Daily Mode now has its own Generate Random Starting Biome

* [Misc] Filtering out Town and End specifically instead of assuming enum value stays consistent forever

---------

Co-authored-by: Jimmybald1 <147992650+IBBCalc@users.noreply.github.com>
2025-01-14 15:45:11 -07:00
NightKev 3a3ebfb783
[Balance] Multi-hit moves now use gen 5+ behavior (#5117) 2025-01-12 15:39:06 -08:00
NightKev 0107b1d47e
[Refactor] Create global scene variable (#4766)
* Replace various `scene` pass-arounds with global scene variable

* Modify tests

* Add scene back to `fade[in|out]()` calls

Co-authored-by: Moka <54149968+MokaStitcher@users.noreply.github.com>

* Fix Bug Superfan ME test

Co-authored-by: Moka <54149968+MokaStitcher@users.noreply.github.com>

* Re-enable fixed test

Co-authored-by: Moka <54149968+MokaStitcher@users.noreply.github.com>

* Rename `gScene` to `globalScene`

* Move `globalScene` to its own file to fix import/async issues

* Fix `SelectModifierPhase` tests

* Fix ME tests by removing `scene` from `expect()`s

* Resolve merge issues

* Remove tsdocs referencing `scene` params

Remove missed instances of `.scene`

* Remove unnecessary `globalScene` usage in `loading-scene.ts`

* Fix merge conflicts

* Attempt to fix circular import issue

* Found the source of the import issue

* Fix merge issues

---------

Co-authored-by: Moka <54149968+MokaStitcher@users.noreply.github.com>
2025-01-12 15:33:05 -08:00
Madmadness65 f83ab00ce4 Add missing 'unused' comment before Max Moves 2025-01-12 13:34:21 -06:00
Ori shalhon d3fafa2770
[UI/UX] Add random selection option during starter select (#5075)
* Update submodule public/locales to the latest upstream commit

* feat: add random selection option during starter select

* move random selection behavior to seperate label

* Update public/locales submodule reference

* Remove debug console.log statement

* Update locales

* Update src/ui/starter-select-ui-handler.ts

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>

* Update src/ui/starter-select-ui-handler.ts

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

* Update locales submodule

---------

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2025-01-10 20:10:52 -06:00
Amani H. 29087710b7
[Balance] Adjust Orb & Light Ball Weight Functions (#5070)
* [Balance] Adjust Orb & Light Ball Weight Functions

* Apply Kev's Suggestions

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>
2025-01-10 19:34:16 -05:00
Zain b0c347e20d
[Bug] Fixed defog not removing the target's Safeguard and Mist (#5107)
* Fixed defog not removing the target's Safeguard and Mist

* Made requested changes and added unit test

* Remove stray newline

---------

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2025-01-10 18:29:25 -06:00
Jimmybald1 d0db6a35d2
[Bug] fix #5102 Catching Charm now always max weight in Daily Mode (#5103)
Co-authored-by: Jimmybald1 <147992650+IBBCalc@users.noreply.github.com>
2025-01-08 20:27:23 +01:00
Unicornpowerstar 07b69c9485
[Sprite] Fix Issues with the 658-ash.json to display sprite correctly (#5055)
* [Sprite][Color] Fixing Issues with the 658-ash.json to display sprite correctly

- Fix colors not being shown correctly in the json.
   - Said fix are adding a new entry to separate the whites that are F8f8f8 by adding f4f4f4
   - Changed the wrong color into the correct one on the rare.

---------

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2025-01-06 16:26:00 -08:00
NightKev 197b264fb0
[Bug] Gimmighoul & Eevee eggs will now properly randomize their forms (#5080) 2025-01-06 16:24:08 -08:00
Lugiad 1be95e8a1a
[Localization] [UI/UX] Updates for pokemon-emerald-pro & pkmnems (#4968)
* Add files via upload

* Add files via upload
2025-01-04 23:43:40 +01:00
damocleas bfe0d9bb79
Merge pull request #5076 from pagefaultgames/beta
Minor Release 1.4.3
2025-01-03 19:35:41 -05:00
Amani H. 355e70328c
[Misc] `1.4.3` Version Bump + Locales Update (#5077) 2025-01-03 18:27:26 -06:00
AJ Fontaine ec5dadb4f4
[Misc] Undo winter holiday event changes (#5068) 2025-01-03 16:42:06 -07:00
NightKev 206419c9f1
Merge pull request #5061 from pagefaultgames/main
Merge main (1.4.2) into beta
2024-12-31 02:38:07 -08:00
NightKev 14902cdb60
[Hotfix] Prevent Keldeo from changing forms in Daily Run (#5060)
* [Hotfix] Prevent Keldeo from changing forms in Daily Run

* Update patch version
2024-12-30 20:20:23 -08:00
NightKev 1b6374f469
[UI/UX] Change label for music settings (#5053)
Changes from "Consistent/Mixed" to "Gen V + PMD"/"All Gens"

Update `MusicPreferences` enum

* Update locales submodule
2024-12-30 18:55:28 -08:00
Wlowscha 6946abadb8
[UI/UX] Add cursor memory option (#5028)
* Adding a new key determining whether the command cursor resets at the beginning of each new battle.

* Allowing user to toggle commandCursorReset on and off.

* Changing option name to commandCursorMemory

* Fixed caps in settings.ts

* Moved Command_Cursor_Memory from Display settings to General settings
2024-12-30 09:35:45 -06:00
Asuka Kuwahara 8f884a7ef0
[BUG] fix #5038 update shedinja's gender to genderless on evolution (#5039)
* update shedinja's gender to genderless

* update unit test
2024-12-29 20:09:11 -06:00
NightKev 10e0f9f0de
Merge pull request #5024 from pagefaultgames/main
Merge main to beta
2024-12-20 19:32:30 -08:00
AJ Fontaine 8457fb96fe
[Hotfix] Fix off-by-one error for event encounters (#5022)
* Fix off-by-one error for event encounters

* Increment version to 1.4.1

---------

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2024-12-20 18:41:07 -08:00
damocleas f95a5d41cb
Merge pull request #5019 from pagefaultgames/beta
Release 1.4.0
2024-12-20 19:06:24 -05:00
AJ Fontaine 6392ee857c
[Balance] Allow event Stantler to evolve (#5021) 2024-12-20 15:53:42 -08:00
NightKev e75fa0d16d
Merge main into beta to fix git history (#5020)
Co-authored-by: Tempoanon <163687446+Tempo-anon@users.noreply.github.com>
2024-12-20 14:27:49 -08:00
AJ Fontaine 82dad5568c
[Balance] Fix Annihilape Tera Blast TM Compatibility (#5016) 2024-12-20 14:14:16 -08:00
damocleas e9d97db11b
Winter Holiday Event (#5015)
* Update trainer-victory-phase.ts

* Update starters.ts for event

* Update timed-event-manager.ts

* Event stuff

* Cleaning up

* Winter Holiday 2024 Banners

* Update timed-event-manager.ts

* Fix event banner

* Update trainer-config.ts

* FoF, BBound, weather changes

* Fix German Banner

* Add Iron Bundle to event encounters

* Update delibirdy-encounter.test.ts

* Update src/data/weather.ts

Co-authored-by: AJ Fontaine <36677462+Fontbane@users.noreply.github.com>

---------

Co-authored-by: AJ Fontaine <fontbane@gmail.com>
Co-authored-by: Lugiad <2070109+Adri1@users.noreply.github.com>
Co-authored-by: AJ Fontaine <36677462+Fontbane@users.noreply.github.com>
2024-12-20 14:11:06 -08:00
AJ Fontaine bbb6b46801
[Balance] Change a few early gym teams (#4998)
* Change gyms accessible before wave 30

* Prevent wave 20 gym leader from evolving

* Check game mode for wave 20 trainer evo ban

* Add Whitney Girafarig Crasher Wake Magikarp
2024-12-20 14:10:38 -08:00
AJ Fontaine 1953e8dbe9
[Balance] Check previous level moves for redundancy when spawning TMs (#4996) 2024-12-20 14:10:23 -08:00
NightKev ba28511046
Bump version number to 1.4.0 (#5013) 2024-12-20 12:25:34 -08:00
NightKev 0022972be9 [i18n] Update locales submodule 2024-12-20 12:24:09 -08:00
NightKev 6ef15eca4a [i18n] Update locales submodule 2024-12-19 16:18:32 -08:00
NightKev 29a079cfd3
Revert "[UI/UX] Refactor and enable seasonal splash messages (#5009)" (#5014)
This reverts commit 806585f1a6.
2024-12-19 16:04:12 -08:00
AJ Fontaine 806585f1a6
[UI/UX] Refactor and enable seasonal splash messages (#5009)
* Refactor and enable seasonal splash texts

* Update splash text test
2024-12-19 12:01:40 -08:00
NightKev 708e58d083 [i18n] Update locales submodule 2024-12-19 11:45:00 -08:00
NightKev 62e4a7ec54
[Misc] Update CREDITS.md (#5003)
* Add muscode and geeilhan to CREDITS.md

* Sort list alphabetically

* Change subcategory to "Other Code Contributors"

* Add Lugiadrien and Zé Ricardo

Co-authored-by: Moka <54149968+MokaStitcher@users.noreply.github.com>

---------

Co-authored-by: Moka <54149968+MokaStitcher@users.noreply.github.com>
2024-12-18 12:01:19 -08:00
Lugiad cb719d99a5
[i18n] Update party-ui-handler.ts (#4986) 2024-12-16 03:34:14 -08:00
NightKev f6f29f0f66
[i18n] Update locales submodule (#4992) 2024-12-15 13:38:51 -08:00
NightKev 90c8c97437 Fix BattleBond Greninja moveset: Add Mat Block, remove duplicate move 2024-12-14 10:15:21 -08:00
NightKev dfde40f1ae
[Misc] Update "Yda's Dex" credit (the tool is now gone) (#4988) 2024-12-14 06:55:23 -08:00
PrabbyDD 5db3074e2c
[Move] Implement Lunar Dance (#4926)
* beginning immplementation of lunar dance

* adding tests

* changing in game message and making full hp message not display

* Reuse Healing Wish's move attr, update test

---------

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
2024-12-09 21:25:28 -06:00
Lugiad f2ef3620b5
[Localization] Localizable Event Timer (#4971) 2024-12-06 17:49:09 -08:00
Jannik Tappert 22f4e747ab
Login now shows "beta" when playing on beta (#4973) 2024-12-06 17:48:55 -08:00
2334 changed files with 279972 additions and 251767 deletions

View File

@ -2,92 +2,86 @@
module.exports = {
forbidden: [
{
name: 'no-circular-at-runtime',
severity: 'warn',
name: "no-circular-at-runtime",
severity: "warn",
comment:
'This dependency is part of a circular relationship. You might want to revise ' +
'your solution (i.e. use dependency inversion, make sure the modules have a single responsibility) ',
"This dependency is part of a circular relationship. You might want to revise " +
"your solution (i.e. use dependency inversion, make sure the modules have a single responsibility) ",
from: {},
to: {
circular: true,
viaOnly: {
dependencyTypesNot: [
'type-only'
]
}
}
dependencyTypesNot: ["type-only"],
},
},
},
{
name: 'no-orphans',
name: "no-orphans",
comment:
"This is an orphan module - it's likely not used (anymore?). Either use it or " +
"remove it. If it's logical this module is an orphan (i.e. it's a config file), " +
"add an exception for it in your dependency-cruiser configuration. By default " +
"this rule does not scrutinize dot-files (e.g. .eslintrc.js), TypeScript declaration " +
"files (.d.ts), tsconfig.json and some of the babel and webpack configs.",
severity: 'warn',
severity: "warn",
from: {
orphan: true,
pathNot: [
'(^|/)[.][^/]+[.](?:js|cjs|mjs|ts|cts|mts|json)$', // dot files
'[.]d[.]ts$', // TypeScript declaration files
'(^|/)tsconfig[.]json$', // TypeScript config
'(^|/)(?:babel|webpack)[.]config[.](?:js|cjs|mjs|ts|cts|mts|json)$' // other configs
]
"(^|/)[.][^/]+[.](?:js|cjs|mjs|ts|cts|mts|json)$", // dot files
"[.]d[.]ts$", // TypeScript declaration files
"(^|/)tsconfig[.]json$", // TypeScript config
"(^|/)(?:babel|webpack)[.]config[.](?:js|cjs|mjs|ts|cts|mts|json)$", // other configs
],
},
to: {},
},
{
name: 'no-deprecated-core',
name: "no-deprecated-core",
comment:
'A module depends on a node core module that has been deprecated. Find an alternative - these are ' +
"A module depends on a node core module that has been deprecated. Find an alternative - these are " +
"bound to exist - node doesn't deprecate lightly.",
severity: 'warn',
severity: "warn",
from: {},
to: {
dependencyTypes: [
'core'
],
dependencyTypes: ["core"],
path: [
'^v8/tools/codemap$',
'^v8/tools/consarray$',
'^v8/tools/csvparser$',
'^v8/tools/logreader$',
'^v8/tools/profile_view$',
'^v8/tools/profile$',
'^v8/tools/SourceMap$',
'^v8/tools/splaytree$',
'^v8/tools/tickprocessor-driver$',
'^v8/tools/tickprocessor$',
'^node-inspect/lib/_inspect$',
'^node-inspect/lib/internal/inspect_client$',
'^node-inspect/lib/internal/inspect_repl$',
'^async_hooks$',
'^punycode$',
'^domain$',
'^constants$',
'^sys$',
'^_linklist$',
'^_stream_wrap$'
"^v8/tools/codemap$",
"^v8/tools/consarray$",
"^v8/tools/csvparser$",
"^v8/tools/logreader$",
"^v8/tools/profile_view$",
"^v8/tools/profile$",
"^v8/tools/SourceMap$",
"^v8/tools/splaytree$",
"^v8/tools/tickprocessor-driver$",
"^v8/tools/tickprocessor$",
"^node-inspect/lib/_inspect$",
"^node-inspect/lib/internal/inspect_client$",
"^node-inspect/lib/internal/inspect_repl$",
"^async_hooks$",
"^punycode$",
"^domain$",
"^constants$",
"^sys$",
"^_linklist$",
"^_stream_wrap$",
],
}
},
},
{
name: 'not-to-deprecated',
name: "not-to-deprecated",
comment:
'This module uses a (version of an) npm module that has been deprecated. Either upgrade to a later ' +
'version of that module, or find an alternative. Deprecated modules are a security risk.',
severity: 'warn',
"This module uses a (version of an) npm module that has been deprecated. Either upgrade to a later " +
"version of that module, or find an alternative. Deprecated modules are a security risk.",
severity: "warn",
from: {},
to: {
dependencyTypes: [
'deprecated'
]
}
dependencyTypes: ["deprecated"],
},
},
{
name: 'no-non-package-json',
severity: 'error',
name: "no-non-package-json",
severity: "error",
comment:
"This module depends on an npm package that isn't in the 'dependencies' section of your package.json. " +
"That's problematic as the package either (1) won't be available on live (2 - worse) will be " +
@ -95,87 +89,75 @@ module.exports = {
"in your package.json.",
from: {},
to: {
dependencyTypes: [
'npm-no-pkg',
'npm-unknown'
]
}
dependencyTypes: ["npm-no-pkg", "npm-unknown"],
},
},
{
name: 'not-to-unresolvable',
name: "not-to-unresolvable",
comment:
"This module depends on a module that cannot be found ('resolved to disk'). If it's an npm " +
'module: add it to your package.json. In all other cases you likely already know what to do.',
severity: 'error',
"module: add it to your package.json. In all other cases you likely already know what to do.",
severity: "error",
from: {},
to: {
couldNotResolve: true
}
couldNotResolve: true,
},
},
{
name: 'no-duplicate-dep-types',
name: "no-duplicate-dep-types",
comment:
"Likely this module depends on an external ('npm') package that occurs more than once " +
"in your package.json i.e. bot as a devDependencies and in dependencies. This will cause " +
"maintenance problems later on.",
severity: 'warn',
severity: "warn",
from: {},
to: {
moreThanOneDependencyType: true,
// as it's pretty common to have a type import be a type only import
// as it's pretty common to have a type import be a type only import
// _and_ (e.g.) a devDependency - don't consider type-only dependency
// types for this rule
dependencyTypesNot: ["type-only"]
}
dependencyTypesNot: ["type-only"],
},
},
/* rules you might want to tweak for your specific situation: */
{
name: 'not-to-spec',
name: "not-to-spec",
comment:
'This module depends on a spec (test) file. The sole responsibility of a spec file is to test code. ' +
"This module depends on a spec (test) file. The sole responsibility of a spec file is to test code. " +
"If there's something in a spec that's of use to other modules, it doesn't have that single " +
'responsibility anymore. Factor it out into (e.g.) a separate utility/ helper or a mock.',
severity: 'error',
"responsibility anymore. Factor it out into (e.g.) a separate utility/ helper or a mock.",
severity: "error",
from: {},
to: {
path: '[.](?:spec|test)[.](?:js|mjs|cjs|jsx|ts|mts|cts|tsx)$'
}
path: "[.](?:spec|test)[.](?:js|mjs|cjs|jsx|ts|mts|cts|tsx)$",
},
},
{
name: 'not-to-dev-dep',
severity: 'error',
name: "not-to-dev-dep",
severity: "error",
comment:
"This module depends on an npm package from the 'devDependencies' section of your " +
'package.json. It looks like something that ships to production, though. To prevent problems ' +
"package.json. It looks like something that ships to production, though. To prevent problems " +
"with npm packages that aren't there on production declare it (only!) in the 'dependencies'" +
'section of your package.json. If this module is development only - add it to the ' +
'from.pathNot re of the not-to-dev-dep rule in the dependency-cruiser configuration',
"section of your package.json. If this module is development only - add it to the " +
"from.pathNot re of the not-to-dev-dep rule in the dependency-cruiser configuration",
from: {
path: '^(src)',
pathNot: [
'[.](?:spec|test|setup|script)[.](?:js|mjs|cjs|jsx|ts|mts|cts|tsx)$',
'src/test'
]
path: "^(src)",
pathNot: ["[.](?:spec|test|setup|script)[.](?:js|mjs|cjs|jsx|ts|mts|cts|tsx)$", "./test"],
},
to: {
dependencyTypes: [
'npm-dev',
],
dependencyTypes: ["npm-dev"],
// type only dependencies are not a problem as they don't end up in the
// production code or are ignored by the runtime.
dependencyTypesNot: [
'type-only'
],
pathNot: [
'node_modules/@types/'
]
}
dependencyTypesNot: ["type-only"],
pathNot: ["node_modules/@types/"],
},
},
{
name: 'optional-deps-used',
severity: 'info',
name: "optional-deps-used",
severity: "info",
comment:
"This module depends on an npm package that is declared as an optional dependency " +
"in your package.json. As this makes sense in limited situations only, it's flagged here. " +
@ -183,33 +165,28 @@ module.exports = {
"dependency-cruiser configuration.",
from: {},
to: {
dependencyTypes: [
'npm-optional'
]
}
dependencyTypes: ["npm-optional"],
},
},
{
name: 'peer-deps-used',
name: "peer-deps-used",
comment:
"This module depends on an npm package that is declared as a peer dependency " +
"in your package.json. This makes sense if your package is e.g. a plugin, but in " +
"other cases - maybe not so much. If the use of a peer dependency is intentional " +
"add an exception to your dependency-cruiser configuration.",
severity: 'warn',
severity: "warn",
from: {},
to: {
dependencyTypes: [
'npm-peer'
]
}
}
dependencyTypes: ["npm-peer"],
},
},
],
options: {
/* Which modules not to follow further when encountered */
doNotFollow: {
/* path: an array of regular expressions in strings to match against */
path: ['node_modules']
path: ["node_modules"],
},
/* Which modules to exclude */
@ -271,7 +248,7 @@ module.exports = {
defaults to './tsconfig.json'.
*/
tsConfig: {
fileName: 'tsconfig.json'
fileName: "tsconfig.json",
},
/* Webpack configuration to use to get resolve options from.
@ -345,7 +322,7 @@ module.exports = {
collapses everything in node_modules to one folder deep so you see
the external modules, but their innards.
*/
collapsePattern: 'node_modules/(?:@[^/]+/[^/]+|[^/]+)',
collapsePattern: "node_modules/(?:@[^/]+/[^/]+|[^/]+)",
/* Options to tweak the appearance of your graph.See
https://github.com/sverweij/dependency-cruiser/blob/main/doc/options-reference.md#reporteroptions
@ -367,7 +344,8 @@ module.exports = {
dependency graph reporter (`archi`) you probably want to tweak
this collapsePattern to your situation.
*/
collapsePattern: '^(?:packages|src|lib(s?)|app(s?)|bin|test(s?)|spec(s?))/[^/]+|node_modules/(?:@[^/]+/[^/]+|[^/]+)',
collapsePattern:
"^(?:packages|src|lib(s?)|app(s?)|bin|test(s?)|spec(s?))/[^/]+|node_modules/(?:@[^/]+/[^/]+|[^/]+)",
/* Options to tweak the appearance of your graph. If you don't specify a
theme for 'archi' dependency-cruiser will use the one specified in the
@ -375,10 +353,10 @@ module.exports = {
*/
// theme: { },
},
"text": {
"highlightFocused": true
text: {
highlightFocused: true,
},
}
}
},
},
};
// generated: dependency-cruiser@16.3.3 on 2024-06-13T23:26:36.169Z

12
.editorconfig Normal file
View File

@ -0,0 +1,12 @@
# EditorConfig is awesome: https://EditorConfig.org
# top-most EditorConfig file
root = true
[src/*.{js,ts}]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

1
.gitattributes vendored
View File

@ -1,2 +1,3 @@
# Auto detect text files and perform LF normalization
* text=auto
* -crlf

17
.github/CODEOWNERS vendored
View File

@ -4,4 +4,19 @@
* @pagefaultgames/junior-dev-team
# github actions/templates etc. - Dev Leads
/.github @pagefaultgames/dev-leads
/.github @pagefaultgames/senior-dev-team
# Art Team
/public/**/*.png @pagefaultgames/art-team
/public/**/*.json @pagefaultgames/art-team
/public/images @pagefaultgames/art-team
/public/battle-anims @pagefaultgames/art-team
# Audio files
*.mp3 @pagefaultgames/composer-team
*.wav @pagefaultgames/composer-team
*.ogg @pagefaultgames/composer-team
/public/audio @pagefaultgames/composer-team
# Balance Files; contain actual code logic and must also be owned by dev team
/src/data/balance @pagefaultgames/balance-team @pagefaultgames/junior-dev-team

View File

@ -1,6 +1,7 @@
name: Bug Report
description: Create a report to help us improve
title: "[Bug] "
type: bug
labels: ["Bug", "Triage"]
body:
- type: markdown

View File

@ -1,6 +1,7 @@
name: Feature Request
description: Suggest an idea for this project
title: "[Feature] "
type: 'feature'
labels: ["Enhancement", "Triage"]
body:
- type: markdown

View File

@ -1,4 +1,4 @@
name: ESLint
name: Biome Code Quality
on:
# Trigger the workflow on push or pull request,
@ -28,10 +28,13 @@ jobs:
- name: Set up Node.js # Step to set up Node.js environment
uses: actions/setup-node@v4 # Use the setup-node action version 4
with:
node-version: 20 # Specify Node.js version 20
node-version-file: '.nvmrc'
- name: Install Node.js dependencies # Step to install Node.js dependencies
run: npm ci # Use 'npm ci' to install dependencies
- name: eslint # Step to run linters
run: npm run eslint-ci
- name: Lint with Biome # Step to run linters
run: npm run biome-ci

View File

@ -29,4 +29,4 @@ jobs:
- name: Install Node.js dependencies
run: npm ci
- name: Run tests
run: npx vitest --project ${{ inputs.project }} --shard=${{ inputs.shard }}/${{ inputs.totalShards }} ${{ !runner.debug && '--silent' || '' }}
run: npx vitest --project ${{ inputs.project }} --no-isolate --shard=${{ inputs.shard }}/${{ inputs.totalShards }} ${{ !runner.debug && '--silent' || '' }}

View File

@ -15,29 +15,8 @@ on:
types: [checks_requested]
jobs:
pre-test:
name: Run Pre-test
runs-on: ubuntu-latest
steps:
- name: Check out Git repository
uses: actions/checkout@v4
with:
submodules: 'recursive'
path: tests-action
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install Node.js dependencies
working-directory: tests-action
run: npm ci
- name: Run Pre-test
working-directory: tests-action
run: npx vitest run --project pre ${{ !runner.debug && '--silent' || '' }}
run-tests:
name: Run Tests
needs: [pre-test]
strategy:
matrix:
shard: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

4
.gitignore vendored
View File

@ -41,3 +41,7 @@ coverage
/dependency-graph.svg
/.vs
# Script outputs
./*.csv

1
.nvmrc Normal file
View File

@ -0,0 +1 @@
v20.13.1

View File

@ -343,92 +343,96 @@ In addition to the lists below, please check [the PokéRogue wiki](https://wiki.
# 💻 Development
## Server Owner/Administrator
## Server Developers
- pancakes aka patapancakes
## Senior Developers
- Walker
- NightKev
- Moka
- Temp aka Tempo-anon
- Madmadness65
## Developers
## Current and former Development Team members
- bennybroseph
- Brain Frog
- CodeTappert
- Dakurei
- flx-sta
- innerthunder
- frutescens
- Greenlamp
- ImperialSympathizer
- innerthunder
- KimJeongSun
- Madmadness65
- Moka
- Navori
- NightKev
- Opaquer
- OrangeRed
- Sam aka Flashfyre (initial developer, started PokéRogue)
- SirzBenjie
- sirzento
- SN34KZ
- Swain aka torranx
## Junior Developers
- KimJeongSun
- ImperialSympathizer
- Temp aka Tempo-anon
- Walker
- Wlowscha (aka Curbio)
- Xavion
## Bug/Issue Managers
- Snailman
- Daleks
- Lily
- PigeonBar
- Snailman
## Past Contributors
- Fontbane
- sodaMelon
- schmidtc1
- shayebeadling
## Other Code Contributors
- Admiral-Billy
- allen925
- arColm
- Arxalc
- AsdarDevelops
- Corrade
- DustinLin
- lucfd
- madibye
- ElizaAlex
- EmberCM
- Mewtwo2387
- EmoUsedHM01
- EvasiveAce
- Fontbane
- francktrouillez
- FredeX
- geeilhan
- happinyz
- hayuna
- sirzento
- ReneGV
- mattrossdev
- zacharied
- NxKarim
- td76099
- Xiaphear
- InfernoVulpix
- j-diefenbach
- jaimefd
- EvasiveAce
- EmoUsedHM01
- francktrouillez
- JakubHanko
- FredeX
- PigeonBar
- prime-dialga
- rnicar245
- rationality6
- Neverblade
- Corrade
- Admiral-Billy
- okimin
- Arxalc
- PrabbyDD
- JonStudders
- karl-police
- prateau
- meepen
- arColm
- allen925
- InfernoVulpix
- snoozbuster
- zaccie
- happinyz
- PyGaVS
- lucfd
- Lugiadrien
- madibye
- mattrossdev
- mcmontag
- ElizaAlex
- AsdarDevelops
- Vassiat
- meepen
- Mewtwo2387
- muscode
- Neverblade
- NxKarim
- okimin
- PigeonBar
- PrabbyDD
- prateau
- prime-dialga
- PyGaVS
- rationality6
- RedstonewolfX
- Sam/Flashfyre (initial developer, started PokéRogue)
- Greenlamp
- bennybroseph
- OrangeRed
- Dakurei
- Brain Frog
- ReneGV
- rnicar245
- schmidtc1
- shayebeadling
- snoozbuster
- sodaMelon
- td76099
- Vassiat
- Xiaphear
- zaccie
- zacharied
- Zé Ricardo
# 🌎 Translation
@ -615,6 +619,6 @@ In addition to the lists below, please check [the PokéRogue wiki](https://wiki.
- roi
## External Tools
- Ydarissep (RogueDex)
- Ydarissep (creator of the now defunct "Yda's Dex")
- Admiral-Billy (Offline App - Desktop)
- Red aka StonedModder (iOS App)

View File

@ -3,23 +3,30 @@
PokéRogue is a browser based Pokémon fangame heavily inspired by the roguelite genre. Battle endlessly while gathering stacking items, exploring many different biomes, fighting trainers, bosses, and more!
# Contributing
## 🛠️ Development
If you have the motivation and experience with Typescript/Javascript (or are willing to learn) please feel free to fork the repository and make pull requests with contributions. If you don't know what to work on but want to help, reference the below **To-Do** section or the **#feature-vote** channel in the discord.
### 💻 Environment Setup
#### Prerequisites
- node: 20.13.1
- npm: [how to install](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)
#### Running Locally
1. Clone the repo and in the root directory run `npm install`
- *if you run into any errors, reach out in the **#dev-corner** channel in discord*
2. Run `npm run start:dev` to locally run the project in `localhost:8000`
#### Linting
We're using ESLint as our common linter and formatter. It will run automatically during the pre-commit hook but if you would like to manually run it, use the `npm run eslint` script. To view the complete rules, check out the [eslint.config.js](./eslint.config.js) file.
We're using Biome as our common linter and formatter. It will run automatically during the pre-commit hook but if you would like to manually run it, use the `npm run biome` script. To view the complete rules, check out the [biome.jsonc](./biome.jsonc) file.
### 📚 Documentation
You can find the auto-generated documentation [here](https://pagefaultgames.github.io/pokerogue/main/index.html).
For information on enemy AI, check out the [enemy-ai.md](./docs/enemy-ai.md) file.
For detailed guidelines on documenting your code, refer to the [comments.md](./docs/comments.md) file.
@ -27,16 +34,20 @@ For detailed guidelines on documenting your code, refer to the [comments.md](./d
### ❔ FAQ
**How do I test a new _______?**
- In the `src/overrides.ts` file there are overrides for most values you'll need to change for testing
**How do I retrieve the translations?**
- The translations were moved to the [dedicated translation repository](https://github.com/pagefaultgames/pokerogue-locales) and are now applied as a submodule in this project.
- The command to retrieve the translations is `git submodule update --init --recursive`. If you still struggle to get it working, please reach out to #dev-corner channel in Discord.
## 🪧 To Do
Check out [Github Issues](https://github.com/pagefaultgames/pokerogue/issues) to see how can you help us!
# 📝 Credits
>
> If this project contains assets you have produced and you do not see your name, **please** reach out, either [here on GitHub](https://github.com/pagefaultgames/pokerogue/issues/new) or via [Discord](https://discord.gg/pokerogue).
Thank you to all the wonderful people that have contributed to the PokéRogue project! You can find the credits [here](./CREDITS.md).

107
biome.jsonc Normal file
View File

@ -0,0 +1,107 @@
{
"$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
"vcs": {
"enabled": false,
"clientKind": "git",
"useIgnoreFile": true,
"defaultBranch": "beta"
},
"formatter": {
"enabled": true,
"useEditorconfig": true,
"indentStyle": "space",
"ignore": ["src/enums/*", "src/data/balance/*"],
"lineWidth": 120
},
"files": {
"ignoreUnknown": true,
// Adding folders to the ignore list is GREAT for performance because it prevents biome from descending into them
// and having to verify whether each individual file is ignored
"ignore": [
"**/*.d.ts",
"dist/*",
"build/*",
"coverage/*",
"public/*",
".github/*",
"node_modules/*",
".vscode/*",
"*.css", // TODO?
"*.html", // TODO?
"src/overrides.ts",
// TODO: these files are too big and complex, ignore them until their respective refactors
"src/data/moves/move.ts",
"src/data/ability.ts",
"src/field/pokemon.ts",
// this file is just too big:
"src/data/balance/tms.ts"
]
},
"organizeImports": { "enabled": false },
"linter": {
"ignore": [
"src/phases/move-effect-phase.ts" // TODO: unignore after move-effect-phase refactor
],
"enabled": true,
"rules": {
"recommended": true,
"correctness": {
"noUndeclaredVariables": "off",
"noUnusedVariables": "error",
"noSwitchDeclarations": "warn", // TODO: refactor and make this an error
"noVoidTypeReturn": "warn", // TODO: Refactor and make this an error
"noUnusedImports": "error"
},
"style": {
"noVar": "error",
"useEnumInitializers": "off",
"useBlockStatements": "error",
"useConst": "error",
"useImportType": "error",
"noNonNullAssertion": "off", // TODO: Turn this on ASAP and fix all non-null assertions
"noParameterAssign": "off",
"useExponentiationOperator": "off",
"useDefaultParameterLast": "off", // TODO: Fix spots in the codebase where this flag would be triggered, and then enable
"useSingleVarDeclarator": "off",
"useNodejsImportProtocol": "off",
"useTemplate": "off" // string concatenation is faster: https://stackoverflow.com/questions/29055518/are-es6-template-literals-faster-than-string-concatenation
},
"suspicious": {
"noDoubleEquals": "error",
"noExplicitAny": "off",
"noAssignInExpressions": "off",
"noPrototypeBuiltins": "off",
"noFallthroughSwitchClause": "off",
"noImplicitAnyLet": "info", // TODO: Refactor and make this an error
"noRedeclare": "off", // TODO: Refactor and make this an error
"noGlobalIsNan": "off",
"noAsyncPromiseExecutor": "warn" // TODO: Refactor and make this an error
},
"complexity": {
"noExcessiveCognitiveComplexity": "warn",
"useLiteralKeys": "off",
"noForEach": "off", // Foreach vs for of is not that simple.
"noUselessSwitchCase": "off", // Explicit > Implicit
"noUselessConstructor": "warn", // TODO: Refactor and make this an error
"noBannedTypes": "warn" // TODO: Refactor and make this an error
}
}
},
"javascript": {
"formatter": { "quoteStyle": "double", "arrowParentheses": "asNeeded" }
},
"overrides": [
{
"include": ["test/**/*.test.ts"],
"javascript": { "globals": [] },
"linter": {
"rules": {
"performance": {
"noDelete": "off"
}
}
}
}
]
}

View File

@ -1,5 +1,5 @@
/**
* This script creates a test boilerplate file in the appropriate
* This script creates a test boilerplate file in the appropriate
* directory based on the type selected.
* @example npm run create-test
*/
@ -31,7 +31,8 @@ async function promptTestType() {
if (typeAnswer.selectedOption === "EXIT") {
console.log("Exiting...");
return process.exit();
} else if (!typeChoices.includes(typeAnswer.selectedOption)) {
}
if (!typeChoices.includes(typeAnswer.selectedOption)) {
console.error(`Please provide a valid type (${typeChoices.join(", ")})!`);
return await promptTestType();
}
@ -74,29 +75,29 @@ async function runInteractive() {
const fileName = fileNameAnswer.userInput
.replace(/-+/g, "_") // Convert kebab-case (dashes) to underscores
.replace(/([a-z])([A-Z])/g, "$1_$2") // Convert camelCase to snake_case
.replace(/\s+/g, '_') // Replace spaces with underscores
.replace(/\s+/g, "_") // Replace spaces with underscores
.toLowerCase(); // Ensure all lowercase
// Format the description for the test case
const formattedName = fileName.replace(/_/g, " ").replace(/\b\w/g, (char) => char.toUpperCase());
const formattedName = fileName.replace(/_/g, " ").replace(/\b\w/g, char => char.toUpperCase());
// Determine the directory based on the type
let dir;
let description;
switch (type) {
case "move":
dir = path.join(__dirname, "src", "test", "moves");
dir = path.join(__dirname, "test", "moves");
description = `Moves - ${formattedName}`;
break;
case "ability":
dir = path.join(__dirname, "src", "test", "abilities");
dir = path.join(__dirname, "test", "abilities");
description = `Abilities - ${formattedName}`;
break;
case "item":
dir = path.join(__dirname, "src", "test", "items");
dir = path.join(__dirname, "test", "items");
description = `Items - ${formattedName}`;
break;
case "mystery encounter":
dir = path.join(__dirname, "src", "test", "mystery-encounter", "encounters");
dir = path.join(__dirname, "test", "mystery-encounter", "encounters");
description = `Mystery Encounter - ${formattedName}`;
break;
default:
@ -108,7 +109,7 @@ async function runInteractive() {
const content = `import { Abilities } from "#enums/abilities";
import { Moves } from "#enums/moves";
import { Species } from "#enums/species";
import GameManager from "#test/utils/gameManager";
import GameManager from "#test/testUtils/gameManager";
import Phaser from "phaser";
import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest";

View File

@ -10,4 +10,4 @@ for await (const chunk of process.stdin) {
const file = Buffer.concat(inputFile).toString("utf-8");
const svg = graphviz.dot(file, "svg");
process.stdout.write(svg);
process.stdout.write(svg);

View File

@ -80,8 +80,8 @@ As part of the move selection process, the enemy Pokémon must compute a **targe
A move's UBS and TBS are computed with the respective functions in the `Move` class:
```ts
getUserBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer;
getTargetBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer;
getUserBenefitScore(user: Pokemon, target: Pokemon, move: Move): number;
getTargetBenefitScore(user: Pokemon, target: Pokemon, move: Move): number;
```
Logically, these functions are very similar &ndash; they add up their respective benefit scores from each of the move's attributes (as determined by `attr.getUserBenefitScore`, and `attr.getTargetBenefitScore`, respectively) and return the total benefit score. However, there are two key functional differences in how the UBS and TBS of a move are handled:

View File

@ -1,51 +1,43 @@
import tseslint from '@typescript-eslint/eslint-plugin';
import stylisticTs from '@stylistic/eslint-plugin-ts';
import parser from '@typescript-eslint/parser';
import importX from 'eslint-plugin-import-x';
import tseslint from "@typescript-eslint/eslint-plugin";
import stylisticTs from "@stylistic/eslint-plugin-ts";
import parser from "@typescript-eslint/parser";
import importX from "eslint-plugin-import-x";
export default [
{
files: ["src/**/*.{ts,tsx,js,jsx}"],
ignores: ["dist/*", "build/*", "coverage/*", "public/*", ".github/*", "node_modules/*", ".vscode/*"],
languageOptions: {
parser: parser
},
plugins: {
"import-x": importX,
'@stylistic/ts': stylisticTs,
'@typescript-eslint': tseslint
},
rules: {
"eqeqeq": ["error", "always"], // Enforces the use of `===` and `!==` instead of `==` and `!=`
"indent": ["error", 2, { "SwitchCase": 1 }], // Enforces a 2-space indentation, enforces indentation of `case ...:` statements
"quotes": ["error", "double"], // Enforces the use of double quotes for strings
"no-var": "error", // Disallows the use of `var`, enforcing `let` or `const` instead
"prefer-const": "error", // Enforces the use of `const` for variables that are never reassigned
"no-undef": "off", // Disables the rule that disallows the use of undeclared variables (TypeScript handles this)
"@typescript-eslint/no-unused-vars": [ "error", {
"args": "none", // Allows unused function parameters. Useful for functions with specific signatures where not all parameters are always used.
"ignoreRestSiblings": true // Allows unused variables that are part of a rest property in object destructuring. Useful for excluding certain properties from an object while using the others.
}],
"eol-last": ["error", "always"], // Enforces at least one newline at the end of files
"@stylistic/ts/semi": ["error", "always"], // Requires semicolons for TypeScript-specific syntax
"semi": "off", // Disables the general semi rule for TypeScript files
"no-extra-semi": ["error"], // Disallows unnecessary semicolons for TypeScript-specific syntax
"brace-style": "off", // Note: you must disable the base rule as it can report incorrect errors
"curly": ["error", "all"], // Enforces the use of curly braces for all control statements
"@stylistic/ts/brace-style": ["error", "1tbs"], // Enforces the following brace style: https://eslint.style/rules/js/brace-style#_1tbs
"no-trailing-spaces": ["error", { // Disallows trailing whitespace at the end of lines
"skipBlankLines": false, // Enforces the rule even on blank lines
"ignoreComments": false // Enforces the rule on lines containing comments
}],
"space-before-blocks": ["error", "always"], // Enforces a space before blocks
"keyword-spacing": ["error", { "before": true, "after": true }], // Enforces spacing before and after keywords
"comma-spacing": ["error", { "before": false, "after": true }], // Enforces spacing after commas
"import-x/extensions": ["error", "never", { "json": "always" }], // Enforces no extension for imports unless json
"array-bracket-spacing": ["error", "always", { "objectsInArrays": false, "arraysInArrays": false }], // Enforces consistent spacing inside array brackets
"object-curly-spacing": ["error", "always", { "arraysInObjects": false, "objectsInObjects": false }], // Enforces consistent spacing inside braces of object literals, destructuring assignments, and import/export specifiers
"computed-property-spacing": ["error", "never" ], // Enforces consistent spacing inside computed property brackets
"space-infix-ops": ["error", { "int32Hint": false }], // Enforces spacing around infix operators
"no-multiple-empty-lines": ["error", { "max": 2, "maxEOF": 1, "maxBOF": 0 }], // Disallows multiple empty lines
}
}
]
export default [
{
name: "eslint-config",
files: ["src/**/*.{ts,tsx,js,jsx}", "test/**/*.{ts,tsx,js,jsx}"],
ignores: ["dist/*", "build/*", "coverage/*", "public/*", ".github/*", "node_modules/*", ".vscode/*"],
languageOptions: {
parser: parser,
},
plugins: {
"import-x": importX,
"@stylistic/ts": stylisticTs,
"@typescript-eslint": tseslint,
},
rules: {
"prefer-const": "error", // Enforces the use of `const` for variables that are never reassigned
"no-undef": "off", // Disables the rule that disallows the use of undeclared variables (TypeScript handles this)
"no-extra-semi": ["error"], // Disallows unnecessary semicolons for TypeScript-specific syntax
"import-x/extensions": ["error", "never", { json: "always" }], // Enforces no extension for imports unless json
},
},
{
name: "eslint-tests",
files: ["test/**/**.test.ts"],
languageOptions: {
parser: parser,
parserOptions: {
project: ["./tsconfig.json"],
},
},
plugins: {
"@typescript-eslint": tseslint,
},
rules: {
"@typescript-eslint/no-floating-promises": "error", // Require Promise-like statements to be handled appropriately. - https://typescript-eslint.io/rules/no-floating-promises/
"@typescript-eslint/no-misused-promises": "error", // Disallow Promises in places not designed to handle them. - https://typescript-eslint.io/rules/no-misused-promises/
},
},
];

194
index.css
View File

@ -11,7 +11,7 @@ html {
body {
margin: 0;
display:flex;
display: flex;
flex-direction: column;
align-items: center;
background: #484050;
@ -49,16 +49,17 @@ body {
@media (pointer: coarse) {
/* hasTouchscreen() && !isTouchControlsEnabled */
body:has(> #touchControls[class=visible]) #app {
body:has(> #touchControls[class="visible"]) #app {
align-items: start;
}
body:has(> #touchControls[class=visible]) #app > div:first-child {
body:has(> #touchControls[class="visible"]) #app > div:first-child {
transform-origin: top !important;
}
}
#layout:fullscreen #dpad, #layout:fullscreen {
#layout:fullscreen #dpad,
#layout:fullscreen {
bottom: 6rem;
}
@ -67,6 +68,10 @@ input:-internal-autofill-selected {
background-clip: text;
}
input:-webkit-autofill {
-webkit-text-fill-color: #a1a1a1;
}
/* Need adjust input font-size */
input {
font-size: 3.2rem;
@ -76,7 +81,6 @@ input {
display: none !important;
}
input:-internal-autofill-selected {
-webkit-background-clip: text;
background-clip: text;
@ -91,18 +95,33 @@ input:-internal-autofill-selected {
--controls-padding: 1rem;
--controls-size-with-padding: calc(var(--controls-size) + var(--controls-padding));
--controls-size-with-wide-padding: calc(var(--controls-size) *1.2 + var(--controls-padding));
--controls-size-with-padding: calc(
var(--controls-size) +
var(--controls-padding)
);
--controls-size-with-wide-padding: calc(
var(--controls-size) *
1.2 +
var(--controls-padding)
);
--control-group-extra-size: calc(var(--controls-size) * 0.8);
--control-group-extra-wide-size: calc(var(--controls-size) * 1.2);
--control-group-extra-2-offset: calc(var(--controls-size-with-padding) + (var(--controls-size) - var(--control-group-extra-size)) / 2);
--control-group-extra-1-offset: calc(var(--controls-padding) + (var(--controls-size) - var(--control-group-extra-size)) / 2);
--control-group-extra-2-offset: calc(
var(--controls-size-with-padding) +
(var(--controls-size) - var(--control-group-extra-size)) /
2
);
--control-group-extra-1-offset: calc(
var(--controls-padding) +
(var(--controls-size) - var(--control-group-extra-size)) /
2
);
--small-control-size: calc(var(--controls-size) / 3);
--rect-control-size: calc(var(--controls-size) * 0.74);
font-family: 'emerald';
font-family: "emerald";
font-size: var(--controls-size);
text-shadow: var(--color-dark) var(--text-shadow-size) var(--text-shadow-size);
color: var(--color-light);
@ -146,32 +165,69 @@ input:-internal-autofill-selected {
/* Hide buttons on specific UIs */
/* Show #apadPreviousTab and #apadNextTab only in settings, except in touch configuration panel */
#touchControls:not([data-ui-mode^='SETTINGS']) #apadPreviousTab,
#touchControls:not([data-ui-mode^='SETTINGS']) #apadNextTab,
#touchControls:not([data-ui-mode^="SETTINGS"]) #apadPreviousTab,
#touchControls:not([data-ui-mode^="SETTINGS"]) #apadNextTab,
#touchControls:is(.config-mode) #apadPreviousTab,
#touchControls:is(.config-mode) #apadNextTab {
display: none;
}
/* Show #apadInfo only in battle */
#touchControls:not([data-ui-mode='COMMAND']):not([data-ui-mode='FIGHT']):not([data-ui-mode='BALL']):not([data-ui-mode='TARGET_SELECT']) #apadInfo {
#touchControls:not([data-ui-mode="COMMAND"]):not([data-ui-mode="FIGHT"]):not(
[data-ui-mode="BALL"]
):not([data-ui-mode="TARGET_SELECT"])
#apadInfo {
display: none;
}
/* Show #apadStats only in battle and shop */
#touchControls:not([data-ui-mode='COMMAND']):not([data-ui-mode='FIGHT']):not([data-ui-mode='BALL']):not([data-ui-mode='TARGET_SELECT']):not([data-ui-mode='MODIFIER_SELECT']) #apadStats {
#touchControls:not([data-ui-mode="COMMAND"]):not([data-ui-mode="FIGHT"]):not(
[data-ui-mode="BALL"]
):not([data-ui-mode="TARGET_SELECT"]):not([data-ui-mode="MODIFIER_SELECT"])
#apadStats {
display: none;
}
/* Show cycle buttons only on STARTER_SELECT and on touch configuration panel */
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT']) #apadOpenFilters,
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT'], [data-ui-mode='RUN_INFO']) #apadCycleForm,
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT'], [data-ui-mode='RUN_INFO']) #apadCycleShiny,
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT']) #apadCycleNature,
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT'], [data-ui-mode='RUN_INFO']) #apadCycleAbility,
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT']) #apadCycleGender,
#touchControls:not(.config-mode):not([data-ui-mode='STARTER_SELECT']) #apadCycleVariant {
display: none;
#touchControls:not(.config-mode):not(
[data-ui-mode="STARTER_SELECT"],
[data-ui-mode="POKEDEX"],
[data-ui-mode="POKEDEX_PAGE"]
)
#apadOpenFilters,
#touchControls:not(.config-mode):not(
[data-ui-mode="STARTER_SELECT"],
[data-ui-mode="POKEDEX"],
[data-ui-mode="POKEDEX_PAGE"],
[data-ui-mode="RUN_INFO"]
)
#apadCycleForm,
#touchControls:not(.config-mode):not(
[data-ui-mode="STARTER_SELECT"],
[data-ui-mode="POKEDEX"],
[data-ui-mode="POKEDEX_PAGE"],
[data-ui-mode="RUN_INFO"]
)
#apadCycleShiny,
#touchControls:not(.config-mode):not([data-ui-mode="STARTER_SELECT"])
#apadCycleNature,
#touchControls:not(.config-mode):not(
[data-ui-mode="STARTER_SELECT"],
[data-ui-mode="POKEDEX_PAGE"],
[data-ui-mode="RUN_INFO"]
)
#apadCycleAbility,
#touchControls:not(.config-mode):not(
[data-ui-mode="STARTER_SELECT"],
[data-ui-mode="POKEDEX_PAGE"]
)
#apadCycleGender,
#touchControls:not(.config-mode):not(
[data-ui-mode="STARTER_SELECT"],
[data-ui-mode="POKEDEX"]
)
#apadCycleTera {
display: none;
}
/* Configuration toolbar */
@ -217,16 +273,18 @@ input:-internal-autofill-selected {
font-size: var(--small-control-size);
border-radius: 8px;
padding: 2px 8px;
text-shadow: var(--color-dark) calc(var(--text-shadow-size) / 3) calc(var(--text-shadow-size) / 3);
text-shadow: var(--color-dark) calc(var(--text-shadow-size) / 3)
calc(var(--text-shadow-size) / 3);
}
#configToolbar .button:active {
opacity: var(--touch-control-opacity)
opacity: var(--touch-control-opacity);
}
#configToolbar .orientation-label {
font-size: var(--small-control-size);
text-shadow: var(--color-dark) calc(var(--text-shadow-size) / 3) calc(var(--text-shadow-size) / 3);
text-shadow: var(--color-dark) calc(var(--text-shadow-size) / 3)
calc(var(--text-shadow-size) / 3);
}
/* dpad */
@ -270,7 +328,8 @@ input:-internal-autofill-selected {
.apad-small > .apad-label {
font-size: var(--small-control-size);
text-shadow: var(--color-dark) calc(var(--text-shadow-size) / 3) calc(var(--text-shadow-size) / 3);
text-shadow: var(--color-dark) calc(var(--text-shadow-size) / 3)
calc(var(--text-shadow-size) / 3);
}
.apad-rectangle {
@ -320,7 +379,8 @@ input:-internal-autofill-selected {
/* Layout */
#layout:fullscreen #dpad, #layout:fullscreen #apad {
#layout:fullscreen #dpad,
#layout:fullscreen #apad {
bottom: 6rem;
}
@ -353,55 +413,55 @@ a {
/* Firefox old*/
@-moz-keyframes blink {
0% {
opacity:1;
}
50% {
opacity:0;
}
100% {
opacity:1;
}
0% {
opacity: 1;
}
50% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@-webkit-keyframes blink {
0% {
opacity:1;
}
50% {
opacity:0;
}
100% {
opacity:1;
}
0% {
opacity: 1;
}
50% {
opacity: 0;
}
100% {
opacity: 1;
}
}
/* IE */
@-ms-keyframes blink {
0% {
opacity:1;
}
50% {
opacity:0;
}
100% {
opacity:1;
}
0% {
opacity: 1;
}
50% {
opacity: 0;
}
100% {
opacity: 1;
}
}
/* Opera and prob css3 final iteration */
@keyframes blink {
0% {
opacity:1;
}
50% {
opacity:0;
}
100% {
opacity:1;
}
0% {
opacity: 1;
}
50% {
opacity: 0;
}
100% {
opacity: 1;
}
}
.blink-image {
-moz-animation: blink normal 4s infinite ease-in-out; /* Firefox */
-webkit-animation: blink normal 4s infinite ease-in-out; /* Webkit */
-ms-animation: blink normal 4s infinite ease-in-out; /* IE */
animation: blink normal 4s infinite ease-in-out; /* Opera and prob css3 final iteration */
-moz-animation: blink normal 4s infinite ease-in-out; /* Firefox */
-webkit-animation: blink normal 4s infinite ease-in-out; /* Webkit */
-ms-animation: blink normal 4s infinite ease-in-out; /* IE */
animation: blink normal 4s infinite ease-in-out; /* Opera and prob css3 final iteration */
}

View File

@ -129,11 +129,11 @@
<div id="apadCycleNature" class="apad-button apad-square apad-small" data-key="CYCLE_NATURE">
<span class="apad-label">N</span>
</div>
<div id="apadCycleVariant" class="apad-button apad-square apad-small" data-key="V">
<div id="apadCycleTera" class="apad-button apad-square apad-small" data-key="CYCLE_TERA">
<span class="apad-label">V</span>
</div>
<!-- buttons to display battle-specific information -->
<div id="apadInfo" class="apad-button apad-rectangle apad-small" data-key="V">
<div id="apadInfo" class="apad-button apad-rectangle apad-small" data-key="CYCLE_TERA">
<span class="apad-label">V</span>
</div>
<div id="apadStats" class="apad-button apad-rectangle apad-small" data-key="STATS">

View File

@ -1,19 +1,13 @@
pre-commit:
parallel: true
commands:
eslint:
biome-lint:
glob: "*.{js,jsx,ts,tsx}"
run: npx eslint --fix {staged_files}
run: npx @biomejs/biome check --write --reporter=summary {staged_files} --no-errors-on-unmatched
stage_fixed: true
skip:
- merge
- rebase
pre-push:
commands:
eslint:
glob: "*.{js,ts,jsx,tsx}"
run: npx eslint --fix {push_files}
post-merge:
commands:

15102
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,71 +1,71 @@
{
"name": "pokemon-rogue-battle",
"private": true,
"version": "1.3.0",
"type": "module",
"scripts": {
"start": "vite",
"start:dev": "vite --mode development",
"build": "vite build",
"build:beta": "vite build --mode beta",
"preview": "vite preview",
"test": "vitest run --project pre && vitest run --project main",
"test:cov": "vitest run --project pre && vitest run --project main --coverage",
"test:watch": "vitest run --project pre && vitest watch --project main --coverage",
"test:silent": "vitest run --project pre && vitest run --project main --silent",
"typecheck": "tsc --noEmit",
"eslint": "eslint --fix .",
"eslint-ci": "eslint .",
"docs": "typedoc",
"depcruise": "depcruise src",
"depcruise:graph": "depcruise src --output-type dot | node dependency-graph.js > dependency-graph.svg",
"create-test": "node ./create-test-boilerplate.js",
"postinstall": "npx lefthook install && npx lefthook run post-merge"
},
"devDependencies": {
"@eslint/js": "^9.3.0",
"@hpcc-js/wasm": "^2.18.0",
"@stylistic/eslint-plugin-ts": "^2.6.0-beta.0",
"@types/jsdom": "^21.1.7",
"@types/node": "^20.12.13",
"@typescript-eslint/eslint-plugin": "^8.0.0-alpha.54",
"@typescript-eslint/parser": "^8.0.0-alpha.54",
"@vitest/coverage-istanbul": "^2.0.4",
"dependency-cruiser": "^16.3.10",
"eslint": "^9.7.0",
"eslint-plugin-import-x": "^4.2.1",
"inquirer": "^11.0.2",
"jsdom": "^24.0.0",
"lefthook": "^1.6.12",
"msw": "^2.4.9",
"phaser3spectorjs": "^0.0.8",
"typedoc": "^0.26.4",
"typescript": "^5.5.3",
"typescript-eslint": "^8.0.0-alpha.54",
"vite": "^5.4.8",
"vite-tsconfig-paths": "^4.3.2",
"vitest": "^2.0.4",
"vitest-canvas-mock": "^0.3.3"
},
"dependencies": {
"@material/material-color-utilities": "^0.2.7",
"crypto-js": "^4.2.0",
"i18next": "^23.11.1",
"i18next-browser-languagedetector": "^7.2.1",
"i18next-http-backend": "^2.6.1",
"i18next-korean-postposition-processor": "^1.0.0",
"json-stable-stringify": "^1.1.0",
"jszip": "^3.10.1",
"phaser": "^3.70.0",
"phaser3-rex-plugins": "^1.1.84"
},
"engines": {
"node": ">=20.0.0"
},
"imports": {
"#enums/*": "./enums/*",
"#app": "./src/main.js",
"#app/*": "./src/*",
"#test/*": "./src/test/*"
}
"name": "pokemon-rogue-battle",
"private": true,
"version": "1.8.4",
"type": "module",
"scripts": {
"start": "vite",
"start:dev": "vite --mode development",
"build": "vite build",
"build:beta": "vite build --mode beta",
"preview": "vite preview",
"test": "vitest run",
"test:cov": "vitest run --coverage --no-isolate",
"test:watch": "vitest watch --coverage --no-isolate",
"test:silent": "vitest run --silent --no-isolate",
"typecheck": "tsc --noEmit",
"eslint": "eslint --fix .",
"eslint-ci": "eslint .",
"biome": "biome check --write --changed --no-errors-on-unmatched",
"biome-ci": "biome ci --diagnostic-level=error --reporter=github --changed --no-errors-on-unmatched",
"docs": "typedoc",
"depcruise": "depcruise src",
"depcruise:graph": "depcruise src --output-type dot | node dependency-graph.js > dependency-graph.svg",
"create-test": "node ./create-test-boilerplate.js",
"postinstall": "npx lefthook install && npx lefthook run post-merge",
"update-version:patch": "npm version patch --force --no-git-tag-version",
"update-version:minor": "npm version minor --force --no-git-tag-version",
"update-locales:remote": "git submodule update --progress --init --recursive --force --remote"
},
"devDependencies": {
"@biomejs/biome": "1.9.4",
"@eslint/js": "^9.23.0",
"@hpcc-js/wasm": "^2.22.4",
"@stylistic/eslint-plugin-ts": "^4.1.0",
"@types/jsdom": "^21.1.7",
"@types/node": "^20.12.13",
"@typescript-eslint/eslint-plugin": "^8.28.0",
"@typescript-eslint/parser": "^8.28.0",
"@vitest/coverage-istanbul": "^3.0.9",
"dependency-cruiser": "^16.3.10",
"eslint": "^9.23.0",
"eslint-plugin-import-x": "^4.9.4",
"inquirer": "^12.4.2",
"jsdom": "^26.0.0",
"lefthook": "^1.11.5",
"msw": "^2.7.3",
"phaser3spectorjs": "^0.0.8",
"typedoc": "^0.28.1",
"typescript": "^5.8.2",
"typescript-eslint": "^8.28.0",
"vite": "^6.2.0",
"vite-tsconfig-paths": "^5.1.4",
"vitest": "^3.0.9",
"vitest-canvas-mock": "^0.3.3"
},
"dependencies": {
"@material/material-color-utilities": "^0.2.7",
"crypto-js": "^4.2.0",
"i18next": "^24.2.2",
"i18next-browser-languagedetector": "^8.0.4",
"i18next-http-backend": "^3.0.2",
"i18next-korean-postposition-processor": "^1.0.0",
"json-stable-stringify": "^1.2.0",
"jszip": "^3.10.1",
"phaser": "^3.70.0",
"phaser3-rex-plugins": "^1.80.14"
},
"engines": {
"node": ">=20.0.0"
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,774 @@
{
"graphic": "terastallize",
"frames": [
[
{
"x": 0,
"y": 0,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 0,
"graphicFrame": 0,
"opacity": 255,
"locked": true,
"priority": 1,
"focus": 2
},
{
"x": 128,
"y": -64,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 1,
"graphicFrame": 0,
"opacity": 255,
"locked": true,
"priority": 1,
"focus": 1
},
{
"x": 0,
"y": -20,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 2,
"graphicFrame": 0,
"opacity": 150,
"priority": 1,
"focus": 2
}
],
[
{
"x": 0,
"y": 0,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 0,
"graphicFrame": 0,
"opacity": 255,
"locked": true,
"priority": 1,
"focus": 2
},
{
"x": 128,
"y": -64,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 1,
"graphicFrame": 0,
"opacity": 255,
"locked": true,
"priority": 1,
"focus": 1
},
{
"x": 0,
"y": -20,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 2,
"graphicFrame": 0,
"opacity": 225,
"priority": 1,
"focus": 2
}
],
[
{
"x": 0,
"y": 0,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 0,
"graphicFrame": 0,
"opacity": 255,
"locked": true,
"priority": 1,
"focus": 2
},
{
"x": 128,
"y": -64,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 1,
"graphicFrame": 0,
"opacity": 255,
"locked": true,
"priority": 1,
"focus": 1
},
{
"x": 0,
"y": -20,
"zoomX": 70,
"zoomY": 70,
"visible": true,
"target": 2,
"graphicFrame": 1,
"opacity": 255,
"priority": 1,
"focus": 2
}
],
[
{
"x": 0,
"y": 0,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 0,
"graphicFrame": 0,
"opacity": 255,
"locked": true,
"priority": 1,
"focus": 2
},
{
"x": 128,
"y": -64,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 1,
"graphicFrame": 0,
"opacity": 255,
"locked": true,
"priority": 1,
"focus": 1
},
{
"x": 0,
"y": -20,
"zoomX": 70,
"zoomY": 70,
"visible": true,
"target": 2,
"graphicFrame": 1,
"opacity": 255,
"priority": 1,
"focus": 2
}
],
[
{
"x": 0,
"y": 0,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 0,
"graphicFrame": 0,
"opacity": 255,
"locked": true,
"priority": 1,
"focus": 2
},
{
"x": 128,
"y": -64,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 1,
"graphicFrame": 0,
"opacity": 255,
"locked": true,
"priority": 1,
"focus": 1
},
{
"x": 0,
"y": -20,
"zoomX": 90,
"zoomY": 90,
"visible": true,
"target": 2,
"graphicFrame": 1,
"opacity": 255,
"priority": 1,
"focus": 2
}
],
[
{
"x": 0,
"y": 0,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 0,
"graphicFrame": 0,
"opacity": 255,
"locked": true,
"priority": 1,
"focus": 2
},
{
"x": 128,
"y": -64,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 1,
"graphicFrame": 0,
"opacity": 255,
"locked": true,
"priority": 1,
"focus": 1
},
{
"x": 0,
"y": -20,
"zoomX": 90,
"zoomY": 90,
"visible": true,
"target": 2,
"graphicFrame": 1,
"opacity": 255,
"priority": 1,
"focus": 2
}
],
[
{
"x": 0,
"y": 0,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 0,
"graphicFrame": 0,
"opacity": 255,
"locked": true,
"priority": 1,
"focus": 2
},
{
"x": 128,
"y": -64,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 1,
"graphicFrame": 0,
"opacity": 255,
"locked": true,
"priority": 1,
"focus": 1
},
{
"x": 0,
"y": -20,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 2,
"graphicFrame": 1,
"opacity": 255,
"priority": 1,
"focus": 2
}
],
[
{
"x": 0,
"y": 0,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 0,
"graphicFrame": 0,
"opacity": 255,
"locked": true,
"priority": 1,
"focus": 2
},
{
"x": 128,
"y": -64,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 1,
"graphicFrame": 0,
"opacity": 255,
"locked": true,
"priority": 1,
"focus": 1
},
{
"x": 0,
"y": -20,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 2,
"graphicFrame": 1,
"opacity": 255,
"priority": 1,
"focus": 2
}
],
[
{
"x": 0,
"y": 0,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 0,
"graphicFrame": 0,
"opacity": 255,
"locked": true,
"priority": 1,
"focus": 2
},
{
"x": 128,
"y": -64,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 1,
"graphicFrame": 0,
"opacity": 255,
"locked": true,
"priority": 1,
"focus": 1
},
{
"x": 0,
"y": -20,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 2,
"graphicFrame": 1,
"opacity": 255,
"priority": 1,
"focus": 2
}
],
[
{
"x": 0,
"y": 0,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 0,
"graphicFrame": 0,
"opacity": 255,
"locked": true,
"priority": 1,
"focus": 2
},
{
"x": 128,
"y": -64,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 1,
"graphicFrame": 0,
"opacity": 255,
"locked": true,
"priority": 1,
"focus": 1
},
{
"x": 0,
"y": -20,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 2,
"graphicFrame": 1,
"opacity": 200,
"priority": 1,
"focus": 2
}
],
[
{
"x": 0,
"y": 0,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 0,
"graphicFrame": 0,
"opacity": 255,
"tone": [
100,
100,
100,
0
],
"locked": true,
"priority": 1,
"focus": 2
},
{
"x": 128,
"y": -64,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 1,
"graphicFrame": 0,
"opacity": 255,
"locked": true,
"priority": 1,
"focus": 1
},
{
"x": 0,
"y": -20,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 2,
"graphicFrame": 1,
"opacity": 100,
"priority": 1,
"focus": 2
}
],
[
{
"x": 0,
"y": 0,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 0,
"graphicFrame": 0,
"opacity": 255,
"tone": [
100,
100,
100,
0
],
"locked": true,
"priority": 1,
"focus": 2
},
{
"x": 128,
"y": -64,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 1,
"graphicFrame": 0,
"opacity": 255,
"locked": true,
"priority": 1,
"focus": 1
},
{
"x": 0,
"y": -20,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 2,
"graphicFrame": 1,
"opacity": 100,
"priority": 1,
"focus": 2
}
],
[
{
"x": 0,
"y": 0,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 0,
"graphicFrame": 0,
"opacity": 255,
"tone": [
100,
100,
100,
0
],
"locked": true,
"priority": 1,
"focus": 2
},
{
"x": 128,
"y": -64,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 1,
"graphicFrame": 0,
"opacity": 255,
"locked": true,
"priority": 1,
"focus": 1
},
{
"x": 0,
"y": -20,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 2,
"graphicFrame": 1,
"opacity": 60,
"priority": 1,
"focus": 2
}
],
[
{
"x": 0,
"y": 0,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 0,
"graphicFrame": 0,
"opacity": 255,
"tone": [
100,
100,
100,
0
],
"locked": true,
"priority": 1,
"focus": 2
},
{
"x": 128,
"y": -64,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 1,
"graphicFrame": 0,
"opacity": 255,
"locked": true,
"priority": 1,
"focus": 1
},
{
"x": 0,
"y": -20,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 2,
"graphicFrame": 1,
"opacity": 60,
"priority": 1,
"focus": 2
}
],
[
{
"x": 0,
"y": 0,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 0,
"graphicFrame": 0,
"opacity": 255,
"tone": [
100,
100,
100,
0
],
"locked": true,
"priority": 1,
"focus": 2
},
{
"x": 128,
"y": -64,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 1,
"graphicFrame": 0,
"opacity": 255,
"locked": true,
"priority": 1,
"focus": 1
},
{
"x": 0,
"y": -20,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 2,
"graphicFrame": 1,
"opacity": 60,
"priority": 1,
"focus": 2
}
],
[
{
"x": 0,
"y": 0,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 0,
"graphicFrame": 0,
"opacity": 255,
"tone": [
100,
100,
100,
0
],
"locked": true,
"priority": 1,
"focus": 2
},
{
"x": 128,
"y": -64,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 1,
"graphicFrame": 0,
"opacity": 255,
"locked": true,
"priority": 1,
"focus": 1
}
],
[
{
"x": 0,
"y": 0,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 0,
"graphicFrame": 0,
"opacity": 255,
"tone": [
255,
255,
255,
255
],
"locked": true,
"priority": 1,
"focus": 2
},
{
"x": 128,
"y": -64,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 1,
"graphicFrame": 0,
"opacity": 255,
"locked": true,
"priority": 1,
"focus": 1
}
],
[
{
"x": 0,
"y": 0,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 0,
"graphicFrame": 0,
"opacity": 255,
"tone": [
255,
255,
255,
0
],
"locked": true,
"priority": 1,
"focus": 2
},
{
"x": 128,
"y": -64,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 1,
"graphicFrame": 0,
"opacity": 255,
"locked": true,
"priority": 1,
"focus": 1
}
],
[
{
"x": 0,
"y": 0,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 0,
"graphicFrame": 0,
"opacity": 255,
"tone": [
255,
255,
255,
255
],
"locked": true,
"priority": 1,
"focus": 2
},
{
"x": 128,
"y": -64,
"zoomX": 100,
"zoomY": 100,
"visible": true,
"target": 1,
"graphicFrame": 0,
"opacity": 255,
"locked": true,
"priority": 1,
"focus": 1
}
]
],
"frameTimedEvents": {},
"position": 4,
"hue": 0
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 257 B

After

Width:  |  Height:  |  Size: 274 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 556 B

After

Width:  |  Height:  |  Size: 308 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 241 B

After

Width:  |  Height:  |  Size: 243 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 234 B

After

Width:  |  Height:  |  Size: 236 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 317 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 245 B

After

Width:  |  Height:  |  Size: 252 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 235 B

After

Width:  |  Height:  |  Size: 252 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 236 B

After

Width:  |  Height:  |  Size: 247 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 228 B

After

Width:  |  Height:  |  Size: 242 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 250 B

After

Width:  |  Height:  |  Size: 253 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 293 B

After

Width:  |  Height:  |  Size: 270 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 290 B

After

Width:  |  Height:  |  Size: 282 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 240 B

After

Width:  |  Height:  |  Size: 261 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 695 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 245 B

After

Width:  |  Height:  |  Size: 247 B

Some files were not shown because too many files have changed in this diff Show More