diff --git a/biome.jsonc b/biome.jsonc index ed5db201824..d4cb67d33a6 100644 --- a/biome.jsonc +++ b/biome.jsonc @@ -139,7 +139,7 @@ "useAdjacentGetterSetter": "error", "noConstantBinaryExpression": "error", "noTsIgnore": "error", - "noAwaitInLoop": "warn", + "noAwaitInLoop": "off", "useJsonImportAttribute": "off", // "Import attributes are only supported when the '--module' option is set to 'esnext', 'node18', 'nodenext', or 'preserve'. ts(2823)" "useIndexOf": "error", "useObjectSpread": "error", diff --git a/public/fonts/item-count.png b/public/fonts/item-count.png index 85cfe88e902..ea6ad8d8ee5 100644 Binary files a/public/fonts/item-count.png and b/public/fonts/item-count.png differ diff --git a/public/images/arenas/abyss_a.png b/public/images/arenas/abyss_a.png index 1b3b9d287d3..9bd8f1a9032 100644 Binary files a/public/images/arenas/abyss_a.png and b/public/images/arenas/abyss_a.png differ diff --git a/public/images/arenas/abyss_b.png b/public/images/arenas/abyss_b.png index 2bcf8b6f243..98811c108f2 100644 Binary files a/public/images/arenas/abyss_b.png and b/public/images/arenas/abyss_b.png differ diff --git a/public/images/arenas/abyss_b_1.png b/public/images/arenas/abyss_b_1.png index 24f1340de48..91ab529e898 100644 Binary files a/public/images/arenas/abyss_b_1.png and b/public/images/arenas/abyss_b_1.png differ diff --git a/public/images/arenas/abyss_b_2.png b/public/images/arenas/abyss_b_2.png index 1ba1aa60e59..1a9bd1dc9f4 100644 Binary files a/public/images/arenas/abyss_b_2.png and b/public/images/arenas/abyss_b_2.png differ diff --git a/public/images/arenas/abyss_b_3.png b/public/images/arenas/abyss_b_3.png index 4dddce63274..823c36d6c8b 100644 Binary files a/public/images/arenas/abyss_b_3.png and b/public/images/arenas/abyss_b_3.png differ diff --git a/public/images/arenas/abyss_bg.png b/public/images/arenas/abyss_bg.png index 1abc378806a..224071c0dac 100644 Binary files a/public/images/arenas/abyss_bg.png and b/public/images/arenas/abyss_bg.png differ diff --git a/public/images/arenas/badlands_a.png b/public/images/arenas/badlands_a.png index 2e404d30253..f1118d46310 100644 Binary files a/public/images/arenas/badlands_a.png and b/public/images/arenas/badlands_a.png differ diff --git a/public/images/arenas/badlands_b.png b/public/images/arenas/badlands_b.png index 6232eddfede..355e82883f0 100644 Binary files a/public/images/arenas/badlands_b.png and b/public/images/arenas/badlands_b.png differ diff --git a/public/images/arenas/badlands_b_1.png b/public/images/arenas/badlands_b_1.png index a4cbe062061..f8568ff4163 100644 Binary files a/public/images/arenas/badlands_b_1.png and b/public/images/arenas/badlands_b_1.png differ diff --git a/public/images/arenas/badlands_b_2.png b/public/images/arenas/badlands_b_2.png index 64396591282..21da949a4ce 100644 Binary files a/public/images/arenas/badlands_b_2.png and b/public/images/arenas/badlands_b_2.png differ diff --git a/public/images/arenas/badlands_b_3.png b/public/images/arenas/badlands_b_3.png index ba8553182fd..4ab8d7d5520 100644 Binary files a/public/images/arenas/badlands_b_3.png and b/public/images/arenas/badlands_b_3.png differ diff --git a/public/images/arenas/badlands_bg.png b/public/images/arenas/badlands_bg.png index 71efce424fa..92a8562c21a 100644 Binary files a/public/images/arenas/badlands_bg.png and b/public/images/arenas/badlands_bg.png differ diff --git a/public/images/arenas/beach_a.png b/public/images/arenas/beach_a.png index 90e9189a4be..ea66c2d19d6 100644 Binary files a/public/images/arenas/beach_a.png and b/public/images/arenas/beach_a.png differ diff --git a/public/images/arenas/beach_b.png b/public/images/arenas/beach_b.png index e3b7e31ea96..233fb53358e 100644 Binary files a/public/images/arenas/beach_b.png and b/public/images/arenas/beach_b.png differ diff --git a/public/images/arenas/beach_b_1.png b/public/images/arenas/beach_b_1.png index 1441c75abde..73ad6db675b 100644 Binary files a/public/images/arenas/beach_b_1.png and b/public/images/arenas/beach_b_1.png differ diff --git a/public/images/arenas/beach_b_2.png b/public/images/arenas/beach_b_2.png index 8f79f5b59f2..50c9be97b0d 100644 Binary files a/public/images/arenas/beach_b_2.png and b/public/images/arenas/beach_b_2.png differ diff --git a/public/images/arenas/beach_b_3.png b/public/images/arenas/beach_b_3.png index 45904c68986..c31a4f6b7f6 100644 Binary files a/public/images/arenas/beach_b_3.png and b/public/images/arenas/beach_b_3.png differ diff --git a/public/images/arenas/beach_bg.png b/public/images/arenas/beach_bg.png index b1ee271c7b7..48c81a61336 100644 Binary files a/public/images/arenas/beach_bg.png and b/public/images/arenas/beach_bg.png differ diff --git a/public/images/arenas/cave_a.png b/public/images/arenas/cave_a.png index 23e79a31b43..071546b4411 100644 Binary files a/public/images/arenas/cave_a.png and b/public/images/arenas/cave_a.png differ diff --git a/public/images/arenas/cave_b.png b/public/images/arenas/cave_b.png index 884a2232b66..7b3f53c6465 100644 Binary files a/public/images/arenas/cave_b.png and b/public/images/arenas/cave_b.png differ diff --git a/public/images/arenas/cave_b_1.png b/public/images/arenas/cave_b_1.png index 4e6a3219081..fe9f07f6ebd 100644 Binary files a/public/images/arenas/cave_b_1.png and b/public/images/arenas/cave_b_1.png differ diff --git a/public/images/arenas/cave_b_2.png b/public/images/arenas/cave_b_2.png index cc2bdd98f27..f76560e1f03 100644 Binary files a/public/images/arenas/cave_b_2.png and b/public/images/arenas/cave_b_2.png differ diff --git a/public/images/arenas/cave_b_3.png b/public/images/arenas/cave_b_3.png index d05144c6d1e..346fd5f08e6 100644 Binary files a/public/images/arenas/cave_b_3.png and b/public/images/arenas/cave_b_3.png differ diff --git a/public/images/arenas/cave_bg.png b/public/images/arenas/cave_bg.png index 37f4b9c41ff..24c0462a231 100644 Binary files a/public/images/arenas/cave_bg.png and b/public/images/arenas/cave_bg.png differ diff --git a/public/images/arenas/construction_site_a.png b/public/images/arenas/construction_site_a.png index bbd63269244..8c8ea7d49fb 100644 Binary files a/public/images/arenas/construction_site_a.png and b/public/images/arenas/construction_site_a.png differ diff --git a/public/images/arenas/construction_site_b.png b/public/images/arenas/construction_site_b.png index 51884ff0453..4c1333c12d0 100644 Binary files a/public/images/arenas/construction_site_b.png and b/public/images/arenas/construction_site_b.png differ diff --git a/public/images/arenas/construction_site_b_1.png b/public/images/arenas/construction_site_b_1.png index cc01a5a86d5..4e3e22f1fae 100644 Binary files a/public/images/arenas/construction_site_b_1.png and b/public/images/arenas/construction_site_b_1.png differ diff --git a/public/images/arenas/construction_site_b_2.png b/public/images/arenas/construction_site_b_2.png index b4ad8d154d8..4dc1c383952 100644 Binary files a/public/images/arenas/construction_site_b_2.png and b/public/images/arenas/construction_site_b_2.png differ diff --git a/public/images/arenas/construction_site_b_3.png b/public/images/arenas/construction_site_b_3.png index fd00a05fb9f..484dd7197f4 100644 Binary files a/public/images/arenas/construction_site_b_3.png and b/public/images/arenas/construction_site_b_3.png differ diff --git a/public/images/arenas/construction_site_bg.png b/public/images/arenas/construction_site_bg.png index 79aaaef7cab..ff324a620b1 100644 Binary files a/public/images/arenas/construction_site_bg.png and b/public/images/arenas/construction_site_bg.png differ diff --git a/public/images/arenas/default_bg.png b/public/images/arenas/default_bg.png index 3c1ae88d032..f49ff0de8fa 100644 Binary files a/public/images/arenas/default_bg.png and b/public/images/arenas/default_bg.png differ diff --git a/public/images/arenas/desert_a.png b/public/images/arenas/desert_a.png index 0d8ead8251e..83e5a9d5122 100644 Binary files a/public/images/arenas/desert_a.png and b/public/images/arenas/desert_a.png differ diff --git a/public/images/arenas/desert_b.png b/public/images/arenas/desert_b.png index 85403341266..c03b5fa4d4b 100644 Binary files a/public/images/arenas/desert_b.png and b/public/images/arenas/desert_b.png differ diff --git a/public/images/arenas/desert_b_1.png b/public/images/arenas/desert_b_1.png index 1e8d33d48b7..f1f04caef99 100644 Binary files a/public/images/arenas/desert_b_1.png and b/public/images/arenas/desert_b_1.png differ diff --git a/public/images/arenas/desert_b_2.png b/public/images/arenas/desert_b_2.png index a907372731e..3c0561040c2 100644 Binary files a/public/images/arenas/desert_b_2.png and b/public/images/arenas/desert_b_2.png differ diff --git a/public/images/arenas/desert_b_3.png b/public/images/arenas/desert_b_3.png index 8016fe6c933..101b2bbada5 100644 Binary files a/public/images/arenas/desert_b_3.png and b/public/images/arenas/desert_b_3.png differ diff --git a/public/images/arenas/desert_bg.png b/public/images/arenas/desert_bg.png index 57c00d7bbc5..f4d44e69afc 100644 Binary files a/public/images/arenas/desert_bg.png and b/public/images/arenas/desert_bg.png differ diff --git a/public/images/arenas/dojo_a.png b/public/images/arenas/dojo_a.png index a68acc61a5a..969bd0c09cf 100644 Binary files a/public/images/arenas/dojo_a.png and b/public/images/arenas/dojo_a.png differ diff --git a/public/images/arenas/dojo_b.png b/public/images/arenas/dojo_b.png index 1797a371cf4..4a55429c4ec 100644 Binary files a/public/images/arenas/dojo_b.png and b/public/images/arenas/dojo_b.png differ diff --git a/public/images/arenas/dojo_bg.png b/public/images/arenas/dojo_bg.png index 2a23c835211..c1c9e883627 100644 Binary files a/public/images/arenas/dojo_bg.png and b/public/images/arenas/dojo_bg.png differ diff --git a/public/images/arenas/end_a.png b/public/images/arenas/end_a.png index eeaef65eb7a..06a82254e0c 100644 Binary files a/public/images/arenas/end_a.png and b/public/images/arenas/end_a.png differ diff --git a/public/images/arenas/end_b.png b/public/images/arenas/end_b.png index 37a59201d23..6093d09dd61 100644 Binary files a/public/images/arenas/end_b.png and b/public/images/arenas/end_b.png differ diff --git a/public/images/arenas/end_b_1.png b/public/images/arenas/end_b_1.png index a79e8d0e0ea..2cb508226f0 100644 Binary files a/public/images/arenas/end_b_1.png and b/public/images/arenas/end_b_1.png differ diff --git a/public/images/arenas/end_b_2.png b/public/images/arenas/end_b_2.png index 8753543b8b0..9c66867b5bc 100644 Binary files a/public/images/arenas/end_b_2.png and b/public/images/arenas/end_b_2.png differ diff --git a/public/images/arenas/end_b_3.png b/public/images/arenas/end_b_3.png index 2ce6e372487..3310c9b9c18 100644 Binary files a/public/images/arenas/end_b_3.png and b/public/images/arenas/end_b_3.png differ diff --git a/public/images/arenas/end_bg.png b/public/images/arenas/end_bg.png index 0f821d9e357..0cfae7f7b40 100644 Binary files a/public/images/arenas/end_bg.png and b/public/images/arenas/end_bg.png differ diff --git a/public/images/arenas/factory_a.png b/public/images/arenas/factory_a.png index 7752f08e938..aa1b1024619 100644 Binary files a/public/images/arenas/factory_a.png and b/public/images/arenas/factory_a.png differ diff --git a/public/images/arenas/factory_b.png b/public/images/arenas/factory_b.png index eea4397eac6..31242986bc0 100644 Binary files a/public/images/arenas/factory_b.png and b/public/images/arenas/factory_b.png differ diff --git a/public/images/arenas/factory_b_1.png b/public/images/arenas/factory_b_1.png index 73530a9acbe..c38ffe00b0d 100644 Binary files a/public/images/arenas/factory_b_1.png and b/public/images/arenas/factory_b_1.png differ diff --git a/public/images/arenas/factory_b_2.png b/public/images/arenas/factory_b_2.png index 4b60c243717..0b2347b36c4 100644 Binary files a/public/images/arenas/factory_b_2.png and b/public/images/arenas/factory_b_2.png differ diff --git a/public/images/arenas/factory_b_3.png b/public/images/arenas/factory_b_3.png index 83c0c29f80c..f2bb93128cf 100644 Binary files a/public/images/arenas/factory_b_3.png and b/public/images/arenas/factory_b_3.png differ diff --git a/public/images/arenas/factory_bg.png b/public/images/arenas/factory_bg.png index 1d3b7e7cfd6..5bc8939f3f7 100644 Binary files a/public/images/arenas/factory_bg.png and b/public/images/arenas/factory_bg.png differ diff --git a/public/images/arenas/fairy_cave_a.png b/public/images/arenas/fairy_cave_a.png index f2636d6f601..ffbe4397a9a 100644 Binary files a/public/images/arenas/fairy_cave_a.png and b/public/images/arenas/fairy_cave_a.png differ diff --git a/public/images/arenas/fairy_cave_b.png b/public/images/arenas/fairy_cave_b.png index 5d9f4e8cad0..0afd5cf86a9 100644 Binary files a/public/images/arenas/fairy_cave_b.png and b/public/images/arenas/fairy_cave_b.png differ diff --git a/public/images/arenas/fairy_cave_b_1.png b/public/images/arenas/fairy_cave_b_1.png index e1c86ddfc0e..c30fd89bdf3 100644 Binary files a/public/images/arenas/fairy_cave_b_1.png and b/public/images/arenas/fairy_cave_b_1.png differ diff --git a/public/images/arenas/fairy_cave_b_2.png b/public/images/arenas/fairy_cave_b_2.png index 2b73e8111b7..6738be06508 100644 Binary files a/public/images/arenas/fairy_cave_b_2.png and b/public/images/arenas/fairy_cave_b_2.png differ diff --git a/public/images/arenas/fairy_cave_b_3.png b/public/images/arenas/fairy_cave_b_3.png index 8e0459f94d0..44fe937fe25 100644 Binary files a/public/images/arenas/fairy_cave_b_3.png and b/public/images/arenas/fairy_cave_b_3.png differ diff --git a/public/images/arenas/fairy_cave_bg.png b/public/images/arenas/fairy_cave_bg.png index 0eee1df0796..3282bfc6736 100644 Binary files a/public/images/arenas/fairy_cave_bg.png and b/public/images/arenas/fairy_cave_bg.png differ diff --git a/public/images/arenas/forest_a.png b/public/images/arenas/forest_a.png index a19c6568caa..31cb7947951 100644 Binary files a/public/images/arenas/forest_a.png and b/public/images/arenas/forest_a.png differ diff --git a/public/images/arenas/forest_b.png b/public/images/arenas/forest_b.png index 0fc971d11b3..dcd1981a5e9 100644 Binary files a/public/images/arenas/forest_b.png and b/public/images/arenas/forest_b.png differ diff --git a/public/images/arenas/forest_bg.png b/public/images/arenas/forest_bg.png index 92219224dff..6d9eb8dbee5 100644 Binary files a/public/images/arenas/forest_bg.png and b/public/images/arenas/forest_bg.png differ diff --git a/public/images/arenas/grass_a.png b/public/images/arenas/grass_a.png index 90685819201..f3428ee9f30 100644 Binary files a/public/images/arenas/grass_a.png and b/public/images/arenas/grass_a.png differ diff --git a/public/images/arenas/grass_b.png b/public/images/arenas/grass_b.png index 88a31b5512a..e2056c9cac8 100644 Binary files a/public/images/arenas/grass_b.png and b/public/images/arenas/grass_b.png differ diff --git a/public/images/arenas/grass_bg.png b/public/images/arenas/grass_bg.png index 8ebfa5ae695..490198179d8 100644 Binary files a/public/images/arenas/grass_bg.png and b/public/images/arenas/grass_bg.png differ diff --git a/public/images/arenas/graveyard_a.png b/public/images/arenas/graveyard_a.png index c7ee580dddc..a77cda3f519 100644 Binary files a/public/images/arenas/graveyard_a.png and b/public/images/arenas/graveyard_a.png differ diff --git a/public/images/arenas/graveyard_b.png b/public/images/arenas/graveyard_b.png index e8980bd859c..77a7acd2dd7 100644 Binary files a/public/images/arenas/graveyard_b.png and b/public/images/arenas/graveyard_b.png differ diff --git a/public/images/arenas/graveyard_b_1.png b/public/images/arenas/graveyard_b_1.png index 1d693865691..2e4f524d5bc 100644 Binary files a/public/images/arenas/graveyard_b_1.png and b/public/images/arenas/graveyard_b_1.png differ diff --git a/public/images/arenas/graveyard_b_2.png b/public/images/arenas/graveyard_b_2.png index 7e99aa4a36d..04eec264773 100644 Binary files a/public/images/arenas/graveyard_b_2.png and b/public/images/arenas/graveyard_b_2.png differ diff --git a/public/images/arenas/graveyard_b_3.png b/public/images/arenas/graveyard_b_3.png index b7879e9df36..7e7e174552b 100644 Binary files a/public/images/arenas/graveyard_b_3.png and b/public/images/arenas/graveyard_b_3.png differ diff --git a/public/images/arenas/graveyard_bg.png b/public/images/arenas/graveyard_bg.png index 9beffdc817c..c49c05e0b6f 100644 Binary files a/public/images/arenas/graveyard_bg.png and b/public/images/arenas/graveyard_bg.png differ diff --git a/public/images/arenas/ice_cave_a.png b/public/images/arenas/ice_cave_a.png index 52f2e468e1b..30b1ccc675e 100644 Binary files a/public/images/arenas/ice_cave_a.png and b/public/images/arenas/ice_cave_a.png differ diff --git a/public/images/arenas/ice_cave_b.png b/public/images/arenas/ice_cave_b.png index 684c008b467..63878dbb4e9 100644 Binary files a/public/images/arenas/ice_cave_b.png and b/public/images/arenas/ice_cave_b.png differ diff --git a/public/images/arenas/ice_cave_b_1.png b/public/images/arenas/ice_cave_b_1.png index 8d287a2c526..a28dedb50a8 100644 Binary files a/public/images/arenas/ice_cave_b_1.png and b/public/images/arenas/ice_cave_b_1.png differ diff --git a/public/images/arenas/ice_cave_b_2.png b/public/images/arenas/ice_cave_b_2.png index 675d0e52b8d..d7e6fb1784e 100644 Binary files a/public/images/arenas/ice_cave_b_2.png and b/public/images/arenas/ice_cave_b_2.png differ diff --git a/public/images/arenas/ice_cave_b_3.png b/public/images/arenas/ice_cave_b_3.png index 44e4e25a8e6..f674ab8f796 100644 Binary files a/public/images/arenas/ice_cave_b_3.png and b/public/images/arenas/ice_cave_b_3.png differ diff --git a/public/images/arenas/ice_cave_bg.png b/public/images/arenas/ice_cave_bg.png index 3f3e809e5ed..a9675202932 100644 Binary files a/public/images/arenas/ice_cave_bg.png and b/public/images/arenas/ice_cave_bg.png differ diff --git a/public/images/arenas/island_a.png b/public/images/arenas/island_a.png index e48675aa59b..e57c28dfa82 100644 Binary files a/public/images/arenas/island_a.png and b/public/images/arenas/island_a.png differ diff --git a/public/images/arenas/island_b.png b/public/images/arenas/island_b.png index 53bd4f1fe4c..d2dbe8bf0b1 100644 Binary files a/public/images/arenas/island_b.png and b/public/images/arenas/island_b.png differ diff --git a/public/images/arenas/island_b_1.png b/public/images/arenas/island_b_1.png index 8619e406a3f..bf7f3cb32e1 100644 Binary files a/public/images/arenas/island_b_1.png and b/public/images/arenas/island_b_1.png differ diff --git a/public/images/arenas/island_b_2.png b/public/images/arenas/island_b_2.png index b6dfa077346..a414da194ee 100644 Binary files a/public/images/arenas/island_b_2.png and b/public/images/arenas/island_b_2.png differ diff --git a/public/images/arenas/island_b_3.png b/public/images/arenas/island_b_3.png index 192c06950ae..07595401d2a 100644 Binary files a/public/images/arenas/island_b_3.png and b/public/images/arenas/island_b_3.png differ diff --git a/public/images/arenas/island_bg.png b/public/images/arenas/island_bg.png index 5ecb6d8100d..e05c3afa775 100644 Binary files a/public/images/arenas/island_bg.png and b/public/images/arenas/island_bg.png differ diff --git a/public/images/arenas/jungle_a.png b/public/images/arenas/jungle_a.png index 5501593d9e1..48a801fb65f 100644 Binary files a/public/images/arenas/jungle_a.png and b/public/images/arenas/jungle_a.png differ diff --git a/public/images/arenas/jungle_b.png b/public/images/arenas/jungle_b.png index 29ec524298c..e6f239fda0a 100644 Binary files a/public/images/arenas/jungle_b.png and b/public/images/arenas/jungle_b.png differ diff --git a/public/images/arenas/jungle_b_1.png b/public/images/arenas/jungle_b_1.png index 462bd0df264..e1f45c38e85 100644 Binary files a/public/images/arenas/jungle_b_1.png and b/public/images/arenas/jungle_b_1.png differ diff --git a/public/images/arenas/jungle_b_2.png b/public/images/arenas/jungle_b_2.png index 1a395af55ae..dfcfa355960 100644 Binary files a/public/images/arenas/jungle_b_2.png and b/public/images/arenas/jungle_b_2.png differ diff --git a/public/images/arenas/jungle_b_3.png b/public/images/arenas/jungle_b_3.png index e579f4013ce..5bb08ec72e4 100644 Binary files a/public/images/arenas/jungle_b_3.png and b/public/images/arenas/jungle_b_3.png differ diff --git a/public/images/arenas/jungle_bg.png b/public/images/arenas/jungle_bg.png index ff2cda1c9da..e03de2a3223 100644 Binary files a/public/images/arenas/jungle_bg.png and b/public/images/arenas/jungle_bg.png differ diff --git a/public/images/arenas/laboratory_a.png b/public/images/arenas/laboratory_a.png index 628a6919ebb..56f080f49fb 100644 Binary files a/public/images/arenas/laboratory_a.png and b/public/images/arenas/laboratory_a.png differ diff --git a/public/images/arenas/laboratory_b.png b/public/images/arenas/laboratory_b.png index eabd398bada..7948b89f072 100644 Binary files a/public/images/arenas/laboratory_b.png and b/public/images/arenas/laboratory_b.png differ diff --git a/public/images/arenas/laboratory_b_1.png b/public/images/arenas/laboratory_b_1.png index b3ee7875943..57786e6b224 100644 Binary files a/public/images/arenas/laboratory_b_1.png and b/public/images/arenas/laboratory_b_1.png differ diff --git a/public/images/arenas/laboratory_b_2.png b/public/images/arenas/laboratory_b_2.png index 66ce17d947b..fcd945b8b86 100644 Binary files a/public/images/arenas/laboratory_b_2.png and b/public/images/arenas/laboratory_b_2.png differ diff --git a/public/images/arenas/laboratory_b_3.png b/public/images/arenas/laboratory_b_3.png index 99b23e95a1f..e2538fbef77 100644 Binary files a/public/images/arenas/laboratory_b_3.png and b/public/images/arenas/laboratory_b_3.png differ diff --git a/public/images/arenas/laboratory_bg.png b/public/images/arenas/laboratory_bg.png index 331e15f8db7..0e64877c0b6 100644 Binary files a/public/images/arenas/laboratory_bg.png and b/public/images/arenas/laboratory_bg.png differ diff --git a/public/images/arenas/lake_a.png b/public/images/arenas/lake_a.png index 6ca45fb4101..cce0a61a5f6 100644 Binary files a/public/images/arenas/lake_a.png and b/public/images/arenas/lake_a.png differ diff --git a/public/images/arenas/lake_b.png b/public/images/arenas/lake_b.png index c1c81f2b29c..c24893a1392 100644 Binary files a/public/images/arenas/lake_b.png and b/public/images/arenas/lake_b.png differ diff --git a/public/images/arenas/lake_b_1.png b/public/images/arenas/lake_b_1.png index be6db3451a8..5426dd1e8d9 100644 Binary files a/public/images/arenas/lake_b_1.png and b/public/images/arenas/lake_b_1.png differ diff --git a/public/images/arenas/lake_b_2.png b/public/images/arenas/lake_b_2.png index ee8af5049c3..b08ccd7b8e4 100644 Binary files a/public/images/arenas/lake_b_2.png and b/public/images/arenas/lake_b_2.png differ diff --git a/public/images/arenas/lake_b_3.png b/public/images/arenas/lake_b_3.png index f0cf92f5389..aff06718ecb 100644 Binary files a/public/images/arenas/lake_b_3.png and b/public/images/arenas/lake_b_3.png differ diff --git a/public/images/arenas/lake_bg.png b/public/images/arenas/lake_bg.png index 547d30782c2..15d8348e20c 100644 Binary files a/public/images/arenas/lake_bg.png and b/public/images/arenas/lake_bg.png differ diff --git a/public/images/arenas/loading_bg.png b/public/images/arenas/loading_bg.png index 79c249f6879..2ed3ca2333b 100644 Binary files a/public/images/arenas/loading_bg.png and b/public/images/arenas/loading_bg.png differ diff --git a/public/images/arenas/meadow_a.png b/public/images/arenas/meadow_a.png index 1069d0fab93..549ddadc549 100644 Binary files a/public/images/arenas/meadow_a.png and b/public/images/arenas/meadow_a.png differ diff --git a/public/images/arenas/meadow_b.png b/public/images/arenas/meadow_b.png index 50db0026271..42bbe50606f 100644 Binary files a/public/images/arenas/meadow_b.png and b/public/images/arenas/meadow_b.png differ diff --git a/public/images/arenas/meadow_b_1.png b/public/images/arenas/meadow_b_1.png index 82dbbdcda86..fcd599c9477 100644 Binary files a/public/images/arenas/meadow_b_1.png and b/public/images/arenas/meadow_b_1.png differ diff --git a/public/images/arenas/meadow_b_2.png b/public/images/arenas/meadow_b_2.png index 547e0a2b8a7..23a075e9215 100644 Binary files a/public/images/arenas/meadow_b_2.png and b/public/images/arenas/meadow_b_2.png differ diff --git a/public/images/arenas/meadow_b_3.png b/public/images/arenas/meadow_b_3.png index 5a763e19b0e..493ea6d0b78 100644 Binary files a/public/images/arenas/meadow_b_3.png and b/public/images/arenas/meadow_b_3.png differ diff --git a/public/images/arenas/meadow_bg.png b/public/images/arenas/meadow_bg.png index 8f4bbc5655c..7463051755e 100644 Binary files a/public/images/arenas/meadow_bg.png and b/public/images/arenas/meadow_bg.png differ diff --git a/public/images/arenas/metropolis_a.png b/public/images/arenas/metropolis_a.png index 5a51c500702..cbb1a17c7e9 100644 Binary files a/public/images/arenas/metropolis_a.png and b/public/images/arenas/metropolis_a.png differ diff --git a/public/images/arenas/metropolis_b.png b/public/images/arenas/metropolis_b.png index 638899f3e53..6ae764af398 100644 Binary files a/public/images/arenas/metropolis_b.png and b/public/images/arenas/metropolis_b.png differ diff --git a/public/images/arenas/metropolis_b_1.png b/public/images/arenas/metropolis_b_1.png index 6e543b4c55e..52a0df3a7f9 100644 Binary files a/public/images/arenas/metropolis_b_1.png and b/public/images/arenas/metropolis_b_1.png differ diff --git a/public/images/arenas/metropolis_b_2.png b/public/images/arenas/metropolis_b_2.png index bc609ddb300..8402a90a42d 100644 Binary files a/public/images/arenas/metropolis_b_2.png and b/public/images/arenas/metropolis_b_2.png differ diff --git a/public/images/arenas/metropolis_b_3.png b/public/images/arenas/metropolis_b_3.png index c29a3b7bb7c..7e8f9e7b825 100644 Binary files a/public/images/arenas/metropolis_b_3.png and b/public/images/arenas/metropolis_b_3.png differ diff --git a/public/images/arenas/metropolis_bg.png b/public/images/arenas/metropolis_bg.png index b84c5aa494d..374744f245e 100644 Binary files a/public/images/arenas/metropolis_bg.png and b/public/images/arenas/metropolis_bg.png differ diff --git a/public/images/arenas/mountain_a.png b/public/images/arenas/mountain_a.png index f3896fb409f..7f539ba0a7a 100644 Binary files a/public/images/arenas/mountain_a.png and b/public/images/arenas/mountain_a.png differ diff --git a/public/images/arenas/mountain_b.png b/public/images/arenas/mountain_b.png index 99b4399b1f3..9c970e74180 100644 Binary files a/public/images/arenas/mountain_b.png and b/public/images/arenas/mountain_b.png differ diff --git a/public/images/arenas/mountain_b_1.png b/public/images/arenas/mountain_b_1.png index aa7c1209f5a..1f895b64aec 100644 Binary files a/public/images/arenas/mountain_b_1.png and b/public/images/arenas/mountain_b_1.png differ diff --git a/public/images/arenas/mountain_b_2.png b/public/images/arenas/mountain_b_2.png index 377c3b16b23..9f60c9e15d7 100644 Binary files a/public/images/arenas/mountain_b_2.png and b/public/images/arenas/mountain_b_2.png differ diff --git a/public/images/arenas/mountain_b_3.png b/public/images/arenas/mountain_b_3.png index ba44117634a..55e892377cd 100644 Binary files a/public/images/arenas/mountain_b_3.png and b/public/images/arenas/mountain_b_3.png differ diff --git a/public/images/arenas/mountain_bg.png b/public/images/arenas/mountain_bg.png index 972a08a8695..102f331bcf9 100644 Binary files a/public/images/arenas/mountain_bg.png and b/public/images/arenas/mountain_bg.png differ diff --git a/public/images/arenas/plains_a.png b/public/images/arenas/plains_a.png index ada3c63ccd8..49a36b80844 100644 Binary files a/public/images/arenas/plains_a.png and b/public/images/arenas/plains_a.png differ diff --git a/public/images/arenas/plains_b.png b/public/images/arenas/plains_b.png index b75b9825b21..85e3439fb12 100644 Binary files a/public/images/arenas/plains_b.png and b/public/images/arenas/plains_b.png differ diff --git a/public/images/arenas/plains_b_1.png b/public/images/arenas/plains_b_1.png index 7312a61af32..4e4a0a46164 100644 Binary files a/public/images/arenas/plains_b_1.png and b/public/images/arenas/plains_b_1.png differ diff --git a/public/images/arenas/plains_b_2.png b/public/images/arenas/plains_b_2.png index e270986dd21..a35dbec9917 100644 Binary files a/public/images/arenas/plains_b_2.png and b/public/images/arenas/plains_b_2.png differ diff --git a/public/images/arenas/plains_b_3.png b/public/images/arenas/plains_b_3.png index b149daccd72..f61b9206a46 100644 Binary files a/public/images/arenas/plains_b_3.png and b/public/images/arenas/plains_b_3.png differ diff --git a/public/images/arenas/plains_bg.png b/public/images/arenas/plains_bg.png index 092f7e9cdbc..f2cbec9197c 100644 Binary files a/public/images/arenas/plains_bg.png and b/public/images/arenas/plains_bg.png differ diff --git a/public/images/arenas/power_plant_a.png b/public/images/arenas/power_plant_a.png index 15f7970d726..f5e99d62b3b 100644 Binary files a/public/images/arenas/power_plant_a.png and b/public/images/arenas/power_plant_a.png differ diff --git a/public/images/arenas/power_plant_b.png b/public/images/arenas/power_plant_b.png index 67fa01426c9..9f6647adf8d 100644 Binary files a/public/images/arenas/power_plant_b.png and b/public/images/arenas/power_plant_b.png differ diff --git a/public/images/arenas/power_plant_b_1.png b/public/images/arenas/power_plant_b_1.png index 43c4979214f..c97baf92450 100644 Binary files a/public/images/arenas/power_plant_b_1.png and b/public/images/arenas/power_plant_b_1.png differ diff --git a/public/images/arenas/power_plant_b_2.png b/public/images/arenas/power_plant_b_2.png index 1cecfa0e56a..cb8cdddc9cc 100644 Binary files a/public/images/arenas/power_plant_b_2.png and b/public/images/arenas/power_plant_b_2.png differ diff --git a/public/images/arenas/power_plant_b_3.png b/public/images/arenas/power_plant_b_3.png index 25d75ff53ed..228060e3a8d 100644 Binary files a/public/images/arenas/power_plant_b_3.png and b/public/images/arenas/power_plant_b_3.png differ diff --git a/public/images/arenas/power_plant_bg.png b/public/images/arenas/power_plant_bg.png index 578f2a141d4..f0a91431a04 100644 Binary files a/public/images/arenas/power_plant_bg.png and b/public/images/arenas/power_plant_bg.png differ diff --git a/public/images/arenas/ruins_a.png b/public/images/arenas/ruins_a.png index b264c82b452..e24bc129809 100644 Binary files a/public/images/arenas/ruins_a.png and b/public/images/arenas/ruins_a.png differ diff --git a/public/images/arenas/ruins_b.png b/public/images/arenas/ruins_b.png index 88a0c3f87d9..c019f4d0317 100644 Binary files a/public/images/arenas/ruins_b.png and b/public/images/arenas/ruins_b.png differ diff --git a/public/images/arenas/ruins_b_1.png b/public/images/arenas/ruins_b_1.png index 548b9266866..dd6643f5f36 100644 Binary files a/public/images/arenas/ruins_b_1.png and b/public/images/arenas/ruins_b_1.png differ diff --git a/public/images/arenas/ruins_b_2.png b/public/images/arenas/ruins_b_2.png index 4b2393cf886..f14eac400be 100644 Binary files a/public/images/arenas/ruins_b_2.png and b/public/images/arenas/ruins_b_2.png differ diff --git a/public/images/arenas/ruins_b_3.png b/public/images/arenas/ruins_b_3.png index b15755d0d81..bc34b12fe10 100644 Binary files a/public/images/arenas/ruins_b_3.png and b/public/images/arenas/ruins_b_3.png differ diff --git a/public/images/arenas/ruins_bg.png b/public/images/arenas/ruins_bg.png index 7e6448e14ef..616c586c8c6 100644 Binary files a/public/images/arenas/ruins_bg.png and b/public/images/arenas/ruins_bg.png differ diff --git a/public/images/arenas/sea_a.png b/public/images/arenas/sea_a.png index ef93c3159d5..05cc9c2880d 100644 Binary files a/public/images/arenas/sea_a.png and b/public/images/arenas/sea_a.png differ diff --git a/public/images/arenas/sea_b.png b/public/images/arenas/sea_b.png index 17081770fb6..31984c870ab 100644 Binary files a/public/images/arenas/sea_b.png and b/public/images/arenas/sea_b.png differ diff --git a/public/images/arenas/sea_bg.png b/public/images/arenas/sea_bg.png index 65c48634fc7..9ab7445681f 100644 Binary files a/public/images/arenas/sea_bg.png and b/public/images/arenas/sea_bg.png differ diff --git a/public/images/arenas/seabed_a.png b/public/images/arenas/seabed_a.png index b6a854e7807..f4f5408e218 100644 Binary files a/public/images/arenas/seabed_a.png and b/public/images/arenas/seabed_a.png differ diff --git a/public/images/arenas/seabed_b.png b/public/images/arenas/seabed_b.png index a9ded4f54a2..6743c67ea87 100644 Binary files a/public/images/arenas/seabed_b.png and b/public/images/arenas/seabed_b.png differ diff --git a/public/images/arenas/seabed_b_1.png b/public/images/arenas/seabed_b_1.png index e71de87d194..c913d219bc4 100644 Binary files a/public/images/arenas/seabed_b_1.png and b/public/images/arenas/seabed_b_1.png differ diff --git a/public/images/arenas/seabed_b_2.png b/public/images/arenas/seabed_b_2.png index e0a87d6a4b7..33eb117a70c 100644 Binary files a/public/images/arenas/seabed_b_2.png and b/public/images/arenas/seabed_b_2.png differ diff --git a/public/images/arenas/seabed_b_3.png b/public/images/arenas/seabed_b_3.png index 868c9951f2b..5389076edd9 100644 Binary files a/public/images/arenas/seabed_b_3.png and b/public/images/arenas/seabed_b_3.png differ diff --git a/public/images/arenas/seabed_bg.png b/public/images/arenas/seabed_bg.png index 9d3ea46a681..38b28453362 100644 Binary files a/public/images/arenas/seabed_bg.png and b/public/images/arenas/seabed_bg.png differ diff --git a/public/images/arenas/slum_a.png b/public/images/arenas/slum_a.png index 4756d7acfed..4230b89abd8 100644 Binary files a/public/images/arenas/slum_a.png and b/public/images/arenas/slum_a.png differ diff --git a/public/images/arenas/slum_b.png b/public/images/arenas/slum_b.png index 38bdadae526..82a36473ae4 100644 Binary files a/public/images/arenas/slum_b.png and b/public/images/arenas/slum_b.png differ diff --git a/public/images/arenas/slum_bg.png b/public/images/arenas/slum_bg.png index f3c39504204..ad2cf0e2951 100644 Binary files a/public/images/arenas/slum_bg.png and b/public/images/arenas/slum_bg.png differ diff --git a/public/images/arenas/snowy_forest_a.png b/public/images/arenas/snowy_forest_a.png index c44abbbce51..b1a049543ae 100644 Binary files a/public/images/arenas/snowy_forest_a.png and b/public/images/arenas/snowy_forest_a.png differ diff --git a/public/images/arenas/snowy_forest_b.png b/public/images/arenas/snowy_forest_b.png index e4ae9f4b180..e1675300279 100644 Binary files a/public/images/arenas/snowy_forest_b.png and b/public/images/arenas/snowy_forest_b.png differ diff --git a/public/images/arenas/snowy_forest_b_1.png b/public/images/arenas/snowy_forest_b_1.png index f47f4f91508..1631722b6e1 100644 Binary files a/public/images/arenas/snowy_forest_b_1.png and b/public/images/arenas/snowy_forest_b_1.png differ diff --git a/public/images/arenas/snowy_forest_b_2.png b/public/images/arenas/snowy_forest_b_2.png index 5bc27fc5161..aea120be719 100644 Binary files a/public/images/arenas/snowy_forest_b_2.png and b/public/images/arenas/snowy_forest_b_2.png differ diff --git a/public/images/arenas/snowy_forest_b_3.png b/public/images/arenas/snowy_forest_b_3.png index 521870232de..14c8f4c64aa 100644 Binary files a/public/images/arenas/snowy_forest_b_3.png and b/public/images/arenas/snowy_forest_b_3.png differ diff --git a/public/images/arenas/snowy_forest_bg.png b/public/images/arenas/snowy_forest_bg.png index c449ddb32ee..b0dcc3ddfc5 100644 Binary files a/public/images/arenas/snowy_forest_bg.png and b/public/images/arenas/snowy_forest_bg.png differ diff --git a/public/images/arenas/space_a.png b/public/images/arenas/space_a.png index 8176fd9217c..dbf5c18ecc3 100644 Binary files a/public/images/arenas/space_a.png and b/public/images/arenas/space_a.png differ diff --git a/public/images/arenas/space_b.png b/public/images/arenas/space_b.png index 1be1c0c5309..42cc73943d8 100644 Binary files a/public/images/arenas/space_b.png and b/public/images/arenas/space_b.png differ diff --git a/public/images/arenas/space_bg.png b/public/images/arenas/space_bg.png index a83db0fc6ff..4fdd53348c6 100644 Binary files a/public/images/arenas/space_bg.png and b/public/images/arenas/space_bg.png differ diff --git a/public/images/arenas/swamp_a.png b/public/images/arenas/swamp_a.png index ea037b85b9c..731092a2fe3 100644 Binary files a/public/images/arenas/swamp_a.png and b/public/images/arenas/swamp_a.png differ diff --git a/public/images/arenas/swamp_b.png b/public/images/arenas/swamp_b.png index 3e8f5f308e5..3a571027e3c 100644 Binary files a/public/images/arenas/swamp_b.png and b/public/images/arenas/swamp_b.png differ diff --git a/public/images/arenas/swamp_bg.png b/public/images/arenas/swamp_bg.png index 52cf79213e9..b48b72bed9f 100644 Binary files a/public/images/arenas/swamp_bg.png and b/public/images/arenas/swamp_bg.png differ diff --git a/public/images/arenas/tall_grass_a.png b/public/images/arenas/tall_grass_a.png index 5fa1421903d..8078351eaaa 100644 Binary files a/public/images/arenas/tall_grass_a.png and b/public/images/arenas/tall_grass_a.png differ diff --git a/public/images/arenas/tall_grass_b.png b/public/images/arenas/tall_grass_b.png index 39d23a2247f..a1b405fbf0c 100644 Binary files a/public/images/arenas/tall_grass_b.png and b/public/images/arenas/tall_grass_b.png differ diff --git a/public/images/arenas/tall_grass_bg.png b/public/images/arenas/tall_grass_bg.png index ea8e31d0e75..d76a0b4a4a6 100644 Binary files a/public/images/arenas/tall_grass_bg.png and b/public/images/arenas/tall_grass_bg.png differ diff --git a/public/images/arenas/temple_a.png b/public/images/arenas/temple_a.png index aa6b3b2eb55..245131d9ae1 100644 Binary files a/public/images/arenas/temple_a.png and b/public/images/arenas/temple_a.png differ diff --git a/public/images/arenas/temple_b.png b/public/images/arenas/temple_b.png index 07d4c2b86bb..cb910289119 100644 Binary files a/public/images/arenas/temple_b.png and b/public/images/arenas/temple_b.png differ diff --git a/public/images/arenas/temple_b_1.png b/public/images/arenas/temple_b_1.png index 971a890c8a3..ed7f6c9d3d6 100644 Binary files a/public/images/arenas/temple_b_1.png and b/public/images/arenas/temple_b_1.png differ diff --git a/public/images/arenas/temple_b_2.png b/public/images/arenas/temple_b_2.png index 30ab5653742..7e864271eaa 100644 Binary files a/public/images/arenas/temple_b_2.png and b/public/images/arenas/temple_b_2.png differ diff --git a/public/images/arenas/temple_b_3.png b/public/images/arenas/temple_b_3.png index 3ea8793526b..3d3c93b5d56 100644 Binary files a/public/images/arenas/temple_b_3.png and b/public/images/arenas/temple_b_3.png differ diff --git a/public/images/arenas/temple_bg.png b/public/images/arenas/temple_bg.png index 9296648d836..0510ff86bb0 100644 Binary files a/public/images/arenas/temple_bg.png and b/public/images/arenas/temple_bg.png differ diff --git a/public/images/arenas/town_a.png b/public/images/arenas/town_a.png index faeea0c4aee..0837806c678 100644 Binary files a/public/images/arenas/town_a.png and b/public/images/arenas/town_a.png differ diff --git a/public/images/arenas/town_b.png b/public/images/arenas/town_b.png index 10db2998a36..f1de28f625a 100644 Binary files a/public/images/arenas/town_b.png and b/public/images/arenas/town_b.png differ diff --git a/public/images/arenas/town_bg.png b/public/images/arenas/town_bg.png index e1dc5a9363e..b2f035135cc 100644 Binary files a/public/images/arenas/town_bg.png and b/public/images/arenas/town_bg.png differ diff --git a/public/images/arenas/volcano_a.png b/public/images/arenas/volcano_a.png index ab98acabda2..ecf086689cc 100644 Binary files a/public/images/arenas/volcano_a.png and b/public/images/arenas/volcano_a.png differ diff --git a/public/images/arenas/volcano_b.png b/public/images/arenas/volcano_b.png index 5a5b27d623c..f995e5b8c9b 100644 Binary files a/public/images/arenas/volcano_b.png and b/public/images/arenas/volcano_b.png differ diff --git a/public/images/arenas/volcano_b_1.png b/public/images/arenas/volcano_b_1.png index 0d6c291620d..68558800f9f 100644 Binary files a/public/images/arenas/volcano_b_1.png and b/public/images/arenas/volcano_b_1.png differ diff --git a/public/images/arenas/volcano_b_2.png b/public/images/arenas/volcano_b_2.png index 30677ca16af..3bef9ff5ae4 100644 Binary files a/public/images/arenas/volcano_b_2.png and b/public/images/arenas/volcano_b_2.png differ diff --git a/public/images/arenas/volcano_b_3.png b/public/images/arenas/volcano_b_3.png index 5b0401ebfde..ba4e493cd7e 100644 Binary files a/public/images/arenas/volcano_b_3.png and b/public/images/arenas/volcano_b_3.png differ diff --git a/public/images/arenas/volcano_bg.png b/public/images/arenas/volcano_bg.png index bb72170f70e..7c4d9d9e962 100644 Binary files a/public/images/arenas/volcano_bg.png and b/public/images/arenas/volcano_bg.png differ diff --git a/public/images/arenas/wasteland_a.png b/public/images/arenas/wasteland_a.png index 7a88f33feef..61e33b93c60 100644 Binary files a/public/images/arenas/wasteland_a.png and b/public/images/arenas/wasteland_a.png differ diff --git a/public/images/arenas/wasteland_b.png b/public/images/arenas/wasteland_b.png index 38234d4140a..6ac4a317b17 100644 Binary files a/public/images/arenas/wasteland_b.png and b/public/images/arenas/wasteland_b.png differ diff --git a/public/images/arenas/wasteland_b_1.png b/public/images/arenas/wasteland_b_1.png index 6cf27c532cd..d10a7f27699 100644 Binary files a/public/images/arenas/wasteland_b_1.png and b/public/images/arenas/wasteland_b_1.png differ diff --git a/public/images/arenas/wasteland_b_2.png b/public/images/arenas/wasteland_b_2.png index 1f5f23a86cd..e4102a19ce6 100644 Binary files a/public/images/arenas/wasteland_b_2.png and b/public/images/arenas/wasteland_b_2.png differ diff --git a/public/images/arenas/wasteland_b_3.png b/public/images/arenas/wasteland_b_3.png index b5329ada69b..cdc5a2bdd50 100644 Binary files a/public/images/arenas/wasteland_b_3.png and b/public/images/arenas/wasteland_b_3.png differ diff --git a/public/images/arenas/wasteland_bg.png b/public/images/arenas/wasteland_bg.png index 3c321a8568e..f1a94e1e22d 100644 Binary files a/public/images/arenas/wasteland_bg.png and b/public/images/arenas/wasteland_bg.png differ diff --git a/public/images/battle_anims/003-Attack01.png b/public/images/battle_anims/003-Attack01.png index 870fb592852..2b249874d6a 100644 Binary files a/public/images/battle_anims/003-Attack01.png and b/public/images/battle_anims/003-Attack01.png differ diff --git a/public/images/battle_anims/004-Attack02.png b/public/images/battle_anims/004-Attack02.png index e60f3cfc46f..061aa9dd706 100644 Binary files a/public/images/battle_anims/004-Attack02.png and b/public/images/battle_anims/004-Attack02.png differ diff --git a/public/images/battle_anims/007-Weapon02.png b/public/images/battle_anims/007-Weapon02.png index aab407081f7..e76da15bf4c 100644 Binary files a/public/images/battle_anims/007-Weapon02.png and b/public/images/battle_anims/007-Weapon02.png differ diff --git a/public/images/battle_anims/029-Emotion01.png b/public/images/battle_anims/029-Emotion01.png index 3fe970fb4ea..40d67887d00 100644 Binary files a/public/images/battle_anims/029-Emotion01.png and b/public/images/battle_anims/029-Emotion01.png differ diff --git a/public/images/battle_anims/Anima (2).png b/public/images/battle_anims/Anima (2).png index f4651241e03..c51c95c483e 100644 Binary files a/public/images/battle_anims/Anima (2).png and b/public/images/battle_anims/Anima (2).png differ diff --git a/public/images/battle_anims/GEN8- Aura Wheel Ally.png b/public/images/battle_anims/GEN8- Aura Wheel Ally.png index 97243d3f121..3c506b190b8 100644 Binary files a/public/images/battle_anims/GEN8- Aura Wheel Ally.png and b/public/images/battle_anims/GEN8- Aura Wheel Ally.png differ diff --git a/public/images/battle_anims/GEN8- Aura Wheel Opp.png b/public/images/battle_anims/GEN8- Aura Wheel Opp.png index 516b015f384..9849b68422e 100644 Binary files a/public/images/battle_anims/GEN8- Aura Wheel Opp.png and b/public/images/battle_anims/GEN8- Aura Wheel Opp.png differ diff --git a/public/images/battle_anims/GEN8- Behemoth Bash Sword.png b/public/images/battle_anims/GEN8- Behemoth Bash Sword.png index bfa2a645b5d..91677023868 100644 Binary files a/public/images/battle_anims/GEN8- Behemoth Bash Sword.png and b/public/images/battle_anims/GEN8- Behemoth Bash Sword.png differ diff --git a/public/images/battle_anims/GEN8- Fiery.png b/public/images/battle_anims/GEN8- Fiery.png index 329a0663c0e..51abe55cf88 100644 Binary files a/public/images/battle_anims/GEN8- Fiery.png and b/public/images/battle_anims/GEN8- Fiery.png differ diff --git a/public/images/battle_anims/GEN8- No Retreat.png b/public/images/battle_anims/GEN8- No Retreat.png index fa4f45c9bd8..42bf8eb6eda 100644 Binary files a/public/images/battle_anims/GEN8- No Retreat.png and b/public/images/battle_anims/GEN8- No Retreat.png differ diff --git a/public/images/battle_anims/GEN8- PrimalGroudon2.png b/public/images/battle_anims/GEN8- PrimalGroudon2.png index 781e38e77fc..dcb704c3f9a 100644 Binary files a/public/images/battle_anims/GEN8- PrimalGroudon2.png and b/public/images/battle_anims/GEN8- PrimalGroudon2.png differ diff --git a/public/images/battle_anims/GEN8- PrimalKyogre2.png b/public/images/battle_anims/GEN8- PrimalKyogre2.png index 120f9ecf67f..b4581bdeadb 100644 Binary files a/public/images/battle_anims/GEN8- PrimalKyogre2.png and b/public/images/battle_anims/GEN8- PrimalKyogre2.png differ diff --git a/public/images/battle_anims/GEN8- UltraBurst2.png b/public/images/battle_anims/GEN8- UltraBurst2.png index d0f33ea0d22..37a48d24a6c 100644 Binary files a/public/images/battle_anims/GEN8- UltraBurst2.png and b/public/images/battle_anims/GEN8- UltraBurst2.png differ diff --git a/public/images/battle_anims/Gen9- Bitter Blade.png b/public/images/battle_anims/Gen9- Bitter Blade.png index 763d4fcc063..7733e521b39 100644 Binary files a/public/images/battle_anims/Gen9- Bitter Blade.png and b/public/images/battle_anims/Gen9- Bitter Blade.png differ diff --git a/public/images/battle_anims/Light1.png b/public/images/battle_anims/Light1.png index 78e278fdcef..36af8bb5060 100644 Binary files a/public/images/battle_anims/Light1.png and b/public/images/battle_anims/Light1.png differ diff --git a/public/images/battle_anims/Majesty - Shed Tail.png b/public/images/battle_anims/Majesty - Shed Tail.png index 47969335b35..6cf1a8fd219 100644 Binary files a/public/images/battle_anims/Majesty - Shed Tail.png and b/public/images/battle_anims/Majesty - Shed Tail.png differ diff --git a/public/images/battle_anims/PRAS- All Out Pummeling.png b/public/images/battle_anims/PRAS- All Out Pummeling.png index f0528fe59ba..c54dfeb25aa 100644 Binary files a/public/images/battle_anims/PRAS- All Out Pummeling.png and b/public/images/battle_anims/PRAS- All Out Pummeling.png differ diff --git a/public/images/battle_anims/PRAS- Aqua Jet.png b/public/images/battle_anims/PRAS- Aqua Jet.png index 6079d67d384..284743c12e2 100644 Binary files a/public/images/battle_anims/PRAS- Aqua Jet.png and b/public/images/battle_anims/PRAS- Aqua Jet.png differ diff --git a/public/images/battle_anims/PRAS- Aurora Veil FG.png b/public/images/battle_anims/PRAS- Aurora Veil FG.png index 87061305e38..1ac8f7341c0 100644 Binary files a/public/images/battle_anims/PRAS- Aurora Veil FG.png and b/public/images/battle_anims/PRAS- Aurora Veil FG.png differ diff --git a/public/images/battle_anims/PRAS- Aurora Veil Opp FG.png b/public/images/battle_anims/PRAS- Aurora Veil Opp FG.png index 0a283cd59cb..186fa027eb2 100644 Binary files a/public/images/battle_anims/PRAS- Aurora Veil Opp FG.png and b/public/images/battle_anims/PRAS- Aurora Veil Opp FG.png differ diff --git a/public/images/battle_anims/PRAS- Barrier.png b/public/images/battle_anims/PRAS- Barrier.png index 2d0af4db9ba..afac47f8dbd 100644 Binary files a/public/images/battle_anims/PRAS- Barrier.png and b/public/images/battle_anims/PRAS- Barrier.png differ diff --git a/public/images/battle_anims/PRAS- Black Hole Eclipse.png b/public/images/battle_anims/PRAS- Black Hole Eclipse.png index 6963b4b2f3f..8f4c75237b3 100644 Binary files a/public/images/battle_anims/PRAS- Black Hole Eclipse.png and b/public/images/battle_anims/PRAS- Black Hole Eclipse.png differ diff --git a/public/images/battle_anims/PRAS- Blizzard BG.png b/public/images/battle_anims/PRAS- Blizzard BG.png index f83fde2e4f2..31c45ffa3a4 100644 Binary files a/public/images/battle_anims/PRAS- Blizzard BG.png and b/public/images/battle_anims/PRAS- Blizzard BG.png differ diff --git a/public/images/battle_anims/PRAS- Blizzard FG.png b/public/images/battle_anims/PRAS- Blizzard FG.png index d61f1e40f8b..b52ee422d66 100644 Binary files a/public/images/battle_anims/PRAS- Blizzard FG.png and b/public/images/battle_anims/PRAS- Blizzard FG.png differ diff --git a/public/images/battle_anims/PRAS- BoneMerang.png b/public/images/battle_anims/PRAS- BoneMerang.png index 8a548433ceb..40730f1c992 100644 Binary files a/public/images/battle_anims/PRAS- BoneMerang.png and b/public/images/battle_anims/PRAS- BoneMerang.png differ diff --git a/public/images/battle_anims/PRAS- Catastropika.png b/public/images/battle_anims/PRAS- Catastropika.png index b3b38200a23..5d69114429c 100644 Binary files a/public/images/battle_anims/PRAS- Catastropika.png and b/public/images/battle_anims/PRAS- Catastropika.png differ diff --git a/public/images/battle_anims/PRAS- Draining Kiss.png b/public/images/battle_anims/PRAS- Draining Kiss.png index 33f11acf9ae..8d5fe34a817 100644 Binary files a/public/images/battle_anims/PRAS- Draining Kiss.png and b/public/images/battle_anims/PRAS- Draining Kiss.png differ diff --git a/public/images/battle_anims/PRAS- Earthquake BG.png b/public/images/battle_anims/PRAS- Earthquake BG.png index 94895b238ff..c78f189188f 100644 Binary files a/public/images/battle_anims/PRAS- Earthquake BG.png and b/public/images/battle_anims/PRAS- Earthquake BG.png differ diff --git a/public/images/battle_anims/PRAS- Electric Terrain BG.png b/public/images/battle_anims/PRAS- Electric Terrain BG.png index 3ff1abf6318..934ed1067b1 100644 Binary files a/public/images/battle_anims/PRAS- Electric Terrain BG.png and b/public/images/battle_anims/PRAS- Electric Terrain BG.png differ diff --git a/public/images/battle_anims/PRAS- Elemental Fangs.png b/public/images/battle_anims/PRAS- Elemental Fangs.png index 5c631982488..da0900f6915 100644 Binary files a/public/images/battle_anims/PRAS- Elemental Fangs.png and b/public/images/battle_anims/PRAS- Elemental Fangs.png differ diff --git a/public/images/battle_anims/PRAS- False Swipe.png b/public/images/battle_anims/PRAS- False Swipe.png index 5e17c520d43..eca24570f26 100644 Binary files a/public/images/battle_anims/PRAS- False Swipe.png and b/public/images/battle_anims/PRAS- False Swipe.png differ diff --git a/public/images/battle_anims/PRAS- Frenzy Plant.png b/public/images/battle_anims/PRAS- Frenzy Plant.png index 756290186ff..65dd328e984 100644 Binary files a/public/images/battle_anims/PRAS- Frenzy Plant.png and b/public/images/battle_anims/PRAS- Frenzy Plant.png differ diff --git a/public/images/battle_anims/PRAS- Giga Impact Opp BG.png b/public/images/battle_anims/PRAS- Giga Impact Opp BG.png index 031483c4d4f..0b571c7bc18 100644 Binary files a/public/images/battle_anims/PRAS- Giga Impact Opp BG.png and b/public/images/battle_anims/PRAS- Giga Impact Opp BG.png differ diff --git a/public/images/battle_anims/PRAS- Glitch BG.png b/public/images/battle_anims/PRAS- Glitch BG.png index e8938f6d92b..f08383c48a6 100644 Binary files a/public/images/battle_anims/PRAS- Glitch BG.png and b/public/images/battle_anims/PRAS- Glitch BG.png differ diff --git a/public/images/battle_anims/PRAS- Gravity BG.png b/public/images/battle_anims/PRAS- Gravity BG.png index f5e7cb66a5a..f5ceb490677 100644 Binary files a/public/images/battle_anims/PRAS- Gravity BG.png and b/public/images/battle_anims/PRAS- Gravity BG.png differ diff --git a/public/images/battle_anims/PRAS- Heat Wave.png b/public/images/battle_anims/PRAS- Heat Wave.png index 6f1cba45fd0..8a88b7063aa 100644 Binary files a/public/images/battle_anims/PRAS- Heat Wave.png and b/public/images/battle_anims/PRAS- Heat Wave.png differ diff --git a/public/images/battle_anims/PRAS- Hyperspace Hole.png b/public/images/battle_anims/PRAS- Hyperspace Hole.png index 0f4d9016eee..ecf066c3207 100644 Binary files a/public/images/battle_anims/PRAS- Hyperspace Hole.png and b/public/images/battle_anims/PRAS- Hyperspace Hole.png differ diff --git a/public/images/battle_anims/PRAS- Leaf Tornado.png b/public/images/battle_anims/PRAS- Leaf Tornado.png index b3919b2dc9c..f1ade2553db 100644 Binary files a/public/images/battle_anims/PRAS- Leaf Tornado.png and b/public/images/battle_anims/PRAS- Leaf Tornado.png differ diff --git a/public/images/battle_anims/PRAS- Leech Life.png b/public/images/battle_anims/PRAS- Leech Life.png index cacb94faa93..dd3c64e86da 100644 Binary files a/public/images/battle_anims/PRAS- Leech Life.png and b/public/images/battle_anims/PRAS- Leech Life.png differ diff --git a/public/images/battle_anims/PRAS- Light Screen.png b/public/images/battle_anims/PRAS- Light Screen.png index 58a43861c80..830327f1739 100644 Binary files a/public/images/battle_anims/PRAS- Light Screen.png and b/public/images/battle_anims/PRAS- Light Screen.png differ diff --git a/public/images/battle_anims/PRAS- Luster Purge.png b/public/images/battle_anims/PRAS- Luster Purge.png index 1b1e7fea7b1..d165bc97ec3 100644 Binary files a/public/images/battle_anims/PRAS- Luster Purge.png and b/public/images/battle_anims/PRAS- Luster Purge.png differ diff --git a/public/images/battle_anims/PRAS- Magic Coat.png b/public/images/battle_anims/PRAS- Magic Coat.png index 769984806ad..fcaec4f6b07 100644 Binary files a/public/images/battle_anims/PRAS- Magic Coat.png and b/public/images/battle_anims/PRAS- Magic Coat.png differ diff --git a/public/images/battle_anims/PRAS- Magnet bomb.png b/public/images/battle_anims/PRAS- Magnet bomb.png index 17c58b03f97..2d9d7417f4a 100644 Binary files a/public/images/battle_anims/PRAS- Magnet bomb.png and b/public/images/battle_anims/PRAS- Magnet bomb.png differ diff --git a/public/images/battle_anims/PRAS- Mist FG.png b/public/images/battle_anims/PRAS- Mist FG.png index cee92715ba3..f75af146109 100644 Binary files a/public/images/battle_anims/PRAS- Mist FG.png and b/public/images/battle_anims/PRAS- Mist FG.png differ diff --git a/public/images/battle_anims/PRAS- Mist.png b/public/images/battle_anims/PRAS- Mist.png index 11a92964717..c9161afdf9a 100644 Binary files a/public/images/battle_anims/PRAS- Mist.png and b/public/images/battle_anims/PRAS- Mist.png differ diff --git a/public/images/battle_anims/PRAS- Odor Sleuth.png b/public/images/battle_anims/PRAS- Odor Sleuth.png index a0e76eef728..a3b832c24c6 100644 Binary files a/public/images/battle_anims/PRAS- Odor Sleuth.png and b/public/images/battle_anims/PRAS- Odor Sleuth.png differ diff --git a/public/images/battle_anims/PRAS- Ominous Wind BG.png b/public/images/battle_anims/PRAS- Ominous Wind BG.png index da7f1a85bef..a7cd026bef7 100644 Binary files a/public/images/battle_anims/PRAS- Ominous Wind BG.png and b/public/images/battle_anims/PRAS- Ominous Wind BG.png differ diff --git a/public/images/battle_anims/PRAS- Petal Blizzard FG.png b/public/images/battle_anims/PRAS- Petal Blizzard FG.png index 50730ac068a..d62cd4623ae 100644 Binary files a/public/images/battle_anims/PRAS- Petal Blizzard FG.png and b/public/images/battle_anims/PRAS- Petal Blizzard FG.png differ diff --git a/public/images/battle_anims/PRAS- Powder.png b/public/images/battle_anims/PRAS- Powder.png index 9656c31e6c9..e4283e53e73 100644 Binary files a/public/images/battle_anims/PRAS- Powder.png and b/public/images/battle_anims/PRAS- Powder.png differ diff --git a/public/images/battle_anims/PRAS- Psychic BG.png b/public/images/battle_anims/PRAS- Psychic BG.png index 67e4ea88af4..17ebbf41049 100644 Binary files a/public/images/battle_anims/PRAS- Psychic BG.png and b/public/images/battle_anims/PRAS- Psychic BG.png differ diff --git a/public/images/battle_anims/PRAS- Psychic Terrain BG.png b/public/images/battle_anims/PRAS- Psychic Terrain BG.png index eab6c8c5bf6..44cb39fc3d6 100644 Binary files a/public/images/battle_anims/PRAS- Psychic Terrain BG.png and b/public/images/battle_anims/PRAS- Psychic Terrain BG.png differ diff --git a/public/images/battle_anims/PRAS- Pulverizing Pancake BG.png b/public/images/battle_anims/PRAS- Pulverizing Pancake BG.png index a74d9c307a3..e235c7c2e68 100644 Binary files a/public/images/battle_anims/PRAS- Pulverizing Pancake BG.png and b/public/images/battle_anims/PRAS- Pulverizing Pancake BG.png differ diff --git a/public/images/battle_anims/PRAS- Pulverizing Pancake BG2.png b/public/images/battle_anims/PRAS- Pulverizing Pancake BG2.png index a2a0f9afed2..44b50a6d385 100644 Binary files a/public/images/battle_anims/PRAS- Pulverizing Pancake BG2.png and b/public/images/battle_anims/PRAS- Pulverizing Pancake BG2.png differ diff --git a/public/images/battle_anims/PRAS- Pulverizing Pancake.png b/public/images/battle_anims/PRAS- Pulverizing Pancake.png index 787015e0731..519a52c63c6 100644 Binary files a/public/images/battle_anims/PRAS- Pulverizing Pancake.png and b/public/images/battle_anims/PRAS- Pulverizing Pancake.png differ diff --git a/public/images/battle_anims/PRAS- Reflect.png b/public/images/battle_anims/PRAS- Reflect.png index d7db4a3561f..f82d2ce50d4 100644 Binary files a/public/images/battle_anims/PRAS- Reflect.png and b/public/images/battle_anims/PRAS- Reflect.png differ diff --git a/public/images/battle_anims/PRAS- Retaliate BG.png b/public/images/battle_anims/PRAS- Retaliate BG.png index 58ea9540ea8..82688e4bf88 100644 Binary files a/public/images/battle_anims/PRAS- Retaliate BG.png and b/public/images/battle_anims/PRAS- Retaliate BG.png differ diff --git a/public/images/battle_anims/PRAS- Roost.png b/public/images/battle_anims/PRAS- Roost.png index 5c9167ff393..6b9e70e0539 100644 Binary files a/public/images/battle_anims/PRAS- Roost.png and b/public/images/battle_anims/PRAS- Roost.png differ diff --git a/public/images/battle_anims/PRAS- Sky Uppercut BG.png b/public/images/battle_anims/PRAS- Sky Uppercut BG.png index e9780d3bb5a..5c6ae5e4484 100644 Binary files a/public/images/battle_anims/PRAS- Sky Uppercut BG.png and b/public/images/battle_anims/PRAS- Sky Uppercut BG.png differ diff --git a/public/images/battle_anims/PRAS- Space BG.png b/public/images/battle_anims/PRAS- Space BG.png index 6a72789df99..99aeded6f15 100644 Binary files a/public/images/battle_anims/PRAS- Space BG.png and b/public/images/battle_anims/PRAS- Space BG.png differ diff --git a/public/images/battle_anims/PRAS- Spectral thief BG.png b/public/images/battle_anims/PRAS- Spectral thief BG.png index 03d15aeee4a..35fc434fdca 100644 Binary files a/public/images/battle_anims/PRAS- Spectral thief BG.png and b/public/images/battle_anims/PRAS- Spectral thief BG.png differ diff --git a/public/images/battle_anims/PRAS- Speed BG.png b/public/images/battle_anims/PRAS- Speed BG.png index abb97f035ba..388065a2d49 100644 Binary files a/public/images/battle_anims/PRAS- Speed BG.png and b/public/images/battle_anims/PRAS- Speed BG.png differ diff --git a/public/images/battle_anims/PRAS- Spike Cannon.png b/public/images/battle_anims/PRAS- Spike Cannon.png index e2ee3ab8c3e..6d121870b3e 100644 Binary files a/public/images/battle_anims/PRAS- Spike Cannon.png and b/public/images/battle_anims/PRAS- Spike Cannon.png differ diff --git a/public/images/battle_anims/PRAS- Steam Eruption FG.png b/public/images/battle_anims/PRAS- Steam Eruption FG.png index 710d4d768f7..b3910fac9ff 100644 Binary files a/public/images/battle_anims/PRAS- Steam Eruption FG.png and b/public/images/battle_anims/PRAS- Steam Eruption FG.png differ diff --git a/public/images/battle_anims/PRAS- Underwater BG.png b/public/images/battle_anims/PRAS- Underwater BG.png index 9b8d1b255b2..8d5d8c83744 100644 Binary files a/public/images/battle_anims/PRAS- Underwater BG.png and b/public/images/battle_anims/PRAS- Underwater BG.png differ diff --git a/public/images/battle_anims/Rock Tomb.png b/public/images/battle_anims/Rock Tomb.png index d5d654a8dc8..02b7dbf403b 100644 Binary files a/public/images/battle_anims/Rock Tomb.png and b/public/images/battle_anims/Rock Tomb.png differ diff --git a/public/images/battle_anims/Sword6.png b/public/images/battle_anims/Sword6.png index 2a08c846b05..7f93457434c 100644 Binary files a/public/images/battle_anims/Sword6.png and b/public/images/battle_anims/Sword6.png differ diff --git a/public/images/battle_anims/Thunder2.png b/public/images/battle_anims/Thunder2.png index 97677830322..16284d300e8 100644 Binary files a/public/images/battle_anims/Thunder2.png and b/public/images/battle_anims/Thunder2.png differ diff --git a/public/images/battle_anims/Trovao.png b/public/images/battle_anims/Trovao.png index 14210e47551..7c3b67967d7 100644 Binary files a/public/images/battle_anims/Trovao.png and b/public/images/battle_anims/Trovao.png differ diff --git a/public/images/battle_anims/block.png b/public/images/battle_anims/block.png index ca4d8874df4..d2496d7390d 100644 Binary files a/public/images/battle_anims/block.png and b/public/images/battle_anims/block.png differ diff --git a/public/images/battle_anims/confused.png b/public/images/battle_anims/confused.png index 8e4823b79e1..267765e5701 100644 Binary files a/public/images/battle_anims/confused.png and b/public/images/battle_anims/confused.png differ diff --git a/public/images/battle_anims/finger.spoon.png b/public/images/battle_anims/finger.spoon.png index f8ea58fca81..268d3169ba0 100644 Binary files a/public/images/battle_anims/finger.spoon.png and b/public/images/battle_anims/finger.spoon.png differ diff --git a/public/images/battle_anims/fly copy.png b/public/images/battle_anims/fly copy.png index 78909303837..d3431d209e4 100644 Binary files a/public/images/battle_anims/fly copy.png and b/public/images/battle_anims/fly copy.png differ diff --git a/public/images/battle_anims/ghost2.png b/public/images/battle_anims/ghost2.png index eb58d716dc5..f2a29364257 100644 Binary files a/public/images/battle_anims/ghost2.png and b/public/images/battle_anims/ghost2.png differ diff --git a/public/images/battle_anims/mixed status.png b/public/images/battle_anims/mixed status.png index e95d3b457d2..c08f9f64dec 100644 Binary files a/public/images/battle_anims/mixed status.png and b/public/images/battle_anims/mixed status.png differ diff --git a/public/images/battle_anims/mixed.png b/public/images/battle_anims/mixed.png index 074dc10ae72..9b4da7d5626 100644 Binary files a/public/images/battle_anims/mixed.png and b/public/images/battle_anims/mixed.png differ diff --git a/public/images/battle_anims/terastallize.png b/public/images/battle_anims/terastallize.png index 78fbb7ec335..b322a8a89d0 100644 Binary files a/public/images/battle_anims/terastallize.png and b/public/images/battle_anims/terastallize.png differ diff --git a/public/images/categories.png b/public/images/categories.png index 0f683399495..56903fddd07 100644 Binary files a/public/images/categories.png and b/public/images/categories.png differ diff --git a/public/images/categories_legacy.png b/public/images/categories_legacy.png index 94ba1d4c4bc..54c90c36b18 100644 Binary files a/public/images/categories_legacy.png and b/public/images/categories_legacy.png differ diff --git a/public/images/cg/end_f.png b/public/images/cg/end_f.png index 84f94d7e05d..9fbb4514007 100644 Binary files a/public/images/cg/end_f.png and b/public/images/cg/end_f.png differ diff --git a/public/images/cg/end_m.png b/public/images/cg/end_m.png index abdcb49aff9..4ba892011b5 100644 Binary files a/public/images/cg/end_m.png and b/public/images/cg/end_m.png differ diff --git a/public/images/character/rival_f.png b/public/images/character/rival_f.png index b165cd8a760..2c78dd39fff 100644 Binary files a/public/images/character/rival_f.png and b/public/images/character/rival_f.png differ diff --git a/public/images/character/rival_m.png b/public/images/character/rival_m.png index b12e2787287..46fb12b53ba 100644 Binary files a/public/images/character/rival_m.png and b/public/images/character/rival_m.png differ diff --git a/public/images/effects/battle_stats.png b/public/images/effects/battle_stats.png index cc3bc279641..e1d4fd4eea7 100644 Binary files a/public/images/effects/battle_stats.png and b/public/images/effects/battle_stats.png differ diff --git a/public/images/effects/evo_sparkle.png b/public/images/effects/evo_sparkle.png index 46e1aebba81..b8e791f13e1 100644 Binary files a/public/images/effects/evo_sparkle.png and b/public/images/effects/evo_sparkle.png differ diff --git a/public/images/effects/pb_particles.png b/public/images/effects/pb_particles.png index 386ca9b29e7..a25b3cf7a09 100644 Binary files a/public/images/effects/pb_particles.png and b/public/images/effects/pb_particles.png differ diff --git a/public/images/effects/shiny.png b/public/images/effects/shiny.png index e508fcdf58a..fb05ab39eba 100644 Binary files a/public/images/effects/shiny.png and b/public/images/effects/shiny.png differ diff --git a/public/images/effects/shiny_2.png b/public/images/effects/shiny_2.png index 3f9e37c1643..717cf936685 100644 Binary files a/public/images/effects/shiny_2.png and b/public/images/effects/shiny_2.png differ diff --git a/public/images/effects/shiny_3.png b/public/images/effects/shiny_3.png index 53000bdb3d1..52cafa35259 100644 Binary files a/public/images/effects/shiny_3.png and b/public/images/effects/shiny_3.png differ diff --git a/public/images/effects/tera.png b/public/images/effects/tera.png index e378d1c051c..343565f0005 100644 Binary files a/public/images/effects/tera.png and b/public/images/effects/tera.png differ diff --git a/public/images/effects/tera_sparkle.png b/public/images/effects/tera_sparkle.png index 3385aaf23ad..2d6769a291b 100644 Binary files a/public/images/effects/tera_sparkle.png and b/public/images/effects/tera_sparkle.png differ diff --git a/public/images/egg/default.png b/public/images/egg/default.png index 160ac2542eb..94d6b34a4dc 100644 Binary files a/public/images/egg/default.png and b/public/images/egg/default.png differ diff --git a/public/images/egg/egg.png b/public/images/egg/egg.png index 2943e83b5ea..696b5a232cf 100644 Binary files a/public/images/egg/egg.png and b/public/images/egg/egg.png differ diff --git a/public/images/egg/egg_crack.png b/public/images/egg/egg_crack.png index b23b7703307..9d553ebf378 100644 Binary files a/public/images/egg/egg_crack.png and b/public/images/egg/egg_crack.png differ diff --git a/public/images/egg/egg_icons.png b/public/images/egg/egg_icons.png index c69187baa51..59891a9629e 100644 Binary files a/public/images/egg/egg_icons.png and b/public/images/egg/egg_icons.png differ diff --git a/public/images/egg/egg_lightrays.png b/public/images/egg/egg_lightrays.png index a457625454d..892134b8701 100644 Binary files a/public/images/egg/egg_lightrays.png and b/public/images/egg/egg_lightrays.png differ diff --git a/public/images/egg/egg_shard.png b/public/images/egg/egg_shard.png index a4084af17e1..774763be241 100644 Binary files a/public/images/egg/egg_shard.png and b/public/images/egg/egg_shard.png differ diff --git a/public/images/egg/gacha_eggs.png b/public/images/egg/gacha_eggs.png index 6e26addc450..8aa6420be1a 100644 Binary files a/public/images/egg/gacha_eggs.png and b/public/images/egg/gacha_eggs.png differ diff --git a/public/images/egg/gacha_glass.png b/public/images/egg/gacha_glass.png index b8c4a423454..ddeeb68f3a1 100644 Binary files a/public/images/egg/gacha_glass.png and b/public/images/egg/gacha_glass.png differ diff --git a/public/images/egg/gacha_hatch.png b/public/images/egg/gacha_hatch.png index 39fa7de58c1..0bdcae840e0 100644 Binary files a/public/images/egg/gacha_hatch.png and b/public/images/egg/gacha_hatch.png differ diff --git a/public/images/egg/gacha_knob.png b/public/images/egg/gacha_knob.png index 9b20c081cf2..10107ebd27f 100644 Binary files a/public/images/egg/gacha_knob.png and b/public/images/egg/gacha_knob.png differ diff --git a/public/images/egg/gacha_legendary.png b/public/images/egg/gacha_legendary.png index 6eb41e55099..f0ff27095b6 100644 Binary files a/public/images/egg/gacha_legendary.png and b/public/images/egg/gacha_legendary.png differ diff --git a/public/images/egg/gacha_move.png b/public/images/egg/gacha_move.png index 19b3668424a..f0559192a75 100644 Binary files a/public/images/egg/gacha_move.png and b/public/images/egg/gacha_move.png differ diff --git a/public/images/egg/gacha_shiny.png b/public/images/egg/gacha_shiny.png index ffc1314f597..a884fee5927 100644 Binary files a/public/images/egg/gacha_shiny.png and b/public/images/egg/gacha_shiny.png differ diff --git a/public/images/egg/gacha_underlay_legendary.png b/public/images/egg/gacha_underlay_legendary.png index 5d116d3e11f..0e7d29b1a79 100644 Binary files a/public/images/egg/gacha_underlay_legendary.png and b/public/images/egg/gacha_underlay_legendary.png differ diff --git a/public/images/egg/gacha_underlay_move.png b/public/images/egg/gacha_underlay_move.png index 437b2bca3ab..b3ce6b4a666 100644 Binary files a/public/images/egg/gacha_underlay_move.png and b/public/images/egg/gacha_underlay_move.png differ diff --git a/public/images/egg/gacha_underlay_shiny.png b/public/images/egg/gacha_underlay_shiny.png index a2b40fa2b0b..f9ea3733ca0 100644 Binary files a/public/images/egg/gacha_underlay_shiny.png and b/public/images/egg/gacha_underlay_shiny.png differ diff --git a/public/images/egg/open_hatch.png b/public/images/egg/open_hatch.png index fd91aca14d3..535f2fabff2 100644 Binary files a/public/images/egg/open_hatch.png and b/public/images/egg/open_hatch.png differ diff --git a/public/images/events/aprf25-de.png b/public/images/events/aprf25-de.png index d4bb7ebdc50..af0d2a63f70 100644 Binary files a/public/images/events/aprf25-de.png and b/public/images/events/aprf25-de.png differ diff --git a/public/images/events/aprf25-en.png b/public/images/events/aprf25-en.png index 8f7268b01b6..bb61b156a7b 100644 Binary files a/public/images/events/aprf25-en.png and b/public/images/events/aprf25-en.png differ diff --git a/public/images/events/aprf25-es-ES.png b/public/images/events/aprf25-es-ES.png index a6136a2c8de..c8f2e6a0d5a 100644 Binary files a/public/images/events/aprf25-es-ES.png and b/public/images/events/aprf25-es-ES.png differ diff --git a/public/images/events/aprf25-es-MX.png b/public/images/events/aprf25-es-MX.png index a6136a2c8de..c8f2e6a0d5a 100644 Binary files a/public/images/events/aprf25-es-MX.png and b/public/images/events/aprf25-es-MX.png differ diff --git a/public/images/events/aprf25-fr.png b/public/images/events/aprf25-fr.png index c68264c75dd..cad3045cf68 100644 Binary files a/public/images/events/aprf25-fr.png and b/public/images/events/aprf25-fr.png differ diff --git a/public/images/events/aprf25-it.png b/public/images/events/aprf25-it.png index 01bc0d2a1f0..70c57f92845 100644 Binary files a/public/images/events/aprf25-it.png and b/public/images/events/aprf25-it.png differ diff --git a/public/images/events/aprf25-ja.png b/public/images/events/aprf25-ja.png index c6b62a3672e..ae99dd72e52 100644 Binary files a/public/images/events/aprf25-ja.png and b/public/images/events/aprf25-ja.png differ diff --git a/public/images/events/aprf25-ko.png b/public/images/events/aprf25-ko.png index bcc87e33ac1..1c76f7ce6e9 100644 Binary files a/public/images/events/aprf25-ko.png and b/public/images/events/aprf25-ko.png differ diff --git a/public/images/events/aprf25-pt-BR.png b/public/images/events/aprf25-pt-BR.png index f56f5b5c1e9..bee4ed3f1e2 100644 Binary files a/public/images/events/aprf25-pt-BR.png and b/public/images/events/aprf25-pt-BR.png differ diff --git a/public/images/events/aprf25-zh-CN.png b/public/images/events/aprf25-zh-CN.png index 57b2c3ec5be..23322d12760 100644 Binary files a/public/images/events/aprf25-zh-CN.png and b/public/images/events/aprf25-zh-CN.png differ diff --git a/public/images/events/august-variant-update.png b/public/images/events/august-variant-update.png index 1c78aa2fe14..e2e429ae2e6 100644 Binary files a/public/images/events/august-variant-update.png and b/public/images/events/august-variant-update.png differ diff --git a/public/images/events/egg-update_de.png b/public/images/events/egg-update_de.png index 5de94877d5c..5b7c8e50881 100644 Binary files a/public/images/events/egg-update_de.png and b/public/images/events/egg-update_de.png differ diff --git a/public/images/events/egg-update_en.png b/public/images/events/egg-update_en.png index 7104d340ca0..5b407cf7c75 100644 Binary files a/public/images/events/egg-update_en.png and b/public/images/events/egg-update_en.png differ diff --git a/public/images/events/egg-update_es.png b/public/images/events/egg-update_es.png index ec5f5c46d17..4d1bfe7b2e8 100644 Binary files a/public/images/events/egg-update_es.png and b/public/images/events/egg-update_es.png differ diff --git a/public/images/events/egg-update_fr.png b/public/images/events/egg-update_fr.png index e0505fa96dd..e214ef46cbe 100644 Binary files a/public/images/events/egg-update_fr.png and b/public/images/events/egg-update_fr.png differ diff --git a/public/images/events/egg-update_it.png b/public/images/events/egg-update_it.png index fc347bce9cf..4665d7e9657 100644 Binary files a/public/images/events/egg-update_it.png and b/public/images/events/egg-update_it.png differ diff --git a/public/images/events/egg-update_ja.png b/public/images/events/egg-update_ja.png index 2259cbb4d9a..2a1403e752f 100644 Binary files a/public/images/events/egg-update_ja.png and b/public/images/events/egg-update_ja.png differ diff --git a/public/images/events/egg-update_ko.png b/public/images/events/egg-update_ko.png index 99dcc662402..5e22550cea8 100644 Binary files a/public/images/events/egg-update_ko.png and b/public/images/events/egg-update_ko.png differ diff --git a/public/images/events/egg-update_pt-BR.png b/public/images/events/egg-update_pt-BR.png index ee347d35654..68f3633f16a 100644 Binary files a/public/images/events/egg-update_pt-BR.png and b/public/images/events/egg-update_pt-BR.png differ diff --git a/public/images/events/egg-update_zh-CN.png b/public/images/events/egg-update_zh-CN.png index 02d780fab89..e646562f4cf 100644 Binary files a/public/images/events/egg-update_zh-CN.png and b/public/images/events/egg-update_zh-CN.png differ diff --git a/public/images/events/halloween2024-event-de.png b/public/images/events/halloween2024-event-de.png index a56053c73cc..8291991091e 100644 Binary files a/public/images/events/halloween2024-event-de.png and b/public/images/events/halloween2024-event-de.png differ diff --git a/public/images/events/halloween2024-event-en.png b/public/images/events/halloween2024-event-en.png index 3886fa796ae..dc2d241fb09 100644 Binary files a/public/images/events/halloween2024-event-en.png and b/public/images/events/halloween2024-event-en.png differ diff --git a/public/images/events/halloween2024-event-es-ES.png b/public/images/events/halloween2024-event-es-ES.png index dc9bac86cd0..5d3c4a1734f 100644 Binary files a/public/images/events/halloween2024-event-es-ES.png and b/public/images/events/halloween2024-event-es-ES.png differ diff --git a/public/images/events/halloween2024-event-fr.png b/public/images/events/halloween2024-event-fr.png index 21df18c7471..198e5d28de5 100644 Binary files a/public/images/events/halloween2024-event-fr.png and b/public/images/events/halloween2024-event-fr.png differ diff --git a/public/images/events/halloween2024-event-it.png b/public/images/events/halloween2024-event-it.png index ce2316b2ce5..461e9faf704 100644 Binary files a/public/images/events/halloween2024-event-it.png and b/public/images/events/halloween2024-event-it.png differ diff --git a/public/images/events/halloween2024-event-ja.png b/public/images/events/halloween2024-event-ja.png index 363f3b33b0d..4bd49b3d28a 100644 Binary files a/public/images/events/halloween2024-event-ja.png and b/public/images/events/halloween2024-event-ja.png differ diff --git a/public/images/events/halloween2024-event-ko.png b/public/images/events/halloween2024-event-ko.png index 3f52526a296..94b9859da97 100644 Binary files a/public/images/events/halloween2024-event-ko.png and b/public/images/events/halloween2024-event-ko.png differ diff --git a/public/images/events/halloween2024-event-pt-BR.png b/public/images/events/halloween2024-event-pt-BR.png index 764a9c1daa9..a89cfe5231f 100644 Binary files a/public/images/events/halloween2024-event-pt-BR.png and b/public/images/events/halloween2024-event-pt-BR.png differ diff --git a/public/images/events/halloween2024-event-zh-CN.png b/public/images/events/halloween2024-event-zh-CN.png index c2096a05d98..61c11b4ee95 100644 Binary files a/public/images/events/halloween2024-event-zh-CN.png and b/public/images/events/halloween2024-event-zh-CN.png differ diff --git a/public/images/events/pkmnday2025event-de.png b/public/images/events/pkmnday2025event-de.png index 4cc53546752..b3746a4623e 100644 Binary files a/public/images/events/pkmnday2025event-de.png and b/public/images/events/pkmnday2025event-de.png differ diff --git a/public/images/events/pkmnday2025event-en.png b/public/images/events/pkmnday2025event-en.png index e9caa9e19d6..54b6e7280ac 100644 Binary files a/public/images/events/pkmnday2025event-en.png and b/public/images/events/pkmnday2025event-en.png differ diff --git a/public/images/events/pkmnday2025event-es-ES.png b/public/images/events/pkmnday2025event-es-ES.png index e1ab096dffc..afdf051dc79 100644 Binary files a/public/images/events/pkmnday2025event-es-ES.png and b/public/images/events/pkmnday2025event-es-ES.png differ diff --git a/public/images/events/pkmnday2025event-fr.png b/public/images/events/pkmnday2025event-fr.png index 037d1e06e61..52ef02d474a 100644 Binary files a/public/images/events/pkmnday2025event-fr.png and b/public/images/events/pkmnday2025event-fr.png differ diff --git a/public/images/events/pkmnday2025event-it.png b/public/images/events/pkmnday2025event-it.png index f38a60330fa..6f3e8642e3d 100644 Binary files a/public/images/events/pkmnday2025event-it.png and b/public/images/events/pkmnday2025event-it.png differ diff --git a/public/images/events/pkmnday2025event-ja.png b/public/images/events/pkmnday2025event-ja.png index 94b02ad93a0..e7633edb5ed 100644 Binary files a/public/images/events/pkmnday2025event-ja.png and b/public/images/events/pkmnday2025event-ja.png differ diff --git a/public/images/events/pkmnday2025event-ko.png b/public/images/events/pkmnday2025event-ko.png index aed9ee3fb28..343687706ac 100644 Binary files a/public/images/events/pkmnday2025event-ko.png and b/public/images/events/pkmnday2025event-ko.png differ diff --git a/public/images/events/pkmnday2025event-pt-BR.png b/public/images/events/pkmnday2025event-pt-BR.png index 2190bbac535..67559a80068 100644 Binary files a/public/images/events/pkmnday2025event-pt-BR.png and b/public/images/events/pkmnday2025event-pt-BR.png differ diff --git a/public/images/events/pkmnday2025event-zh-CN.png b/public/images/events/pkmnday2025event-zh-CN.png index a3430482dd0..fc92405a149 100644 Binary files a/public/images/events/pkmnday2025event-zh-CN.png and b/public/images/events/pkmnday2025event-zh-CN.png differ diff --git a/public/images/events/pride-update.png b/public/images/events/pride-update.png index face6df1790..253101bd63a 100644 Binary files a/public/images/events/pride-update.png and b/public/images/events/pride-update.png differ diff --git a/public/images/events/pride2025-de.png b/public/images/events/pride2025-de.png index 8d205821b3c..06044f3c94e 100644 Binary files a/public/images/events/pride2025-de.png and b/public/images/events/pride2025-de.png differ diff --git a/public/images/events/pride2025-en.png b/public/images/events/pride2025-en.png index 5a81a32be5f..1dd3d3d97f1 100644 Binary files a/public/images/events/pride2025-en.png and b/public/images/events/pride2025-en.png differ diff --git a/public/images/events/pride2025-es-ES.png b/public/images/events/pride2025-es-ES.png index 52eba6ffe45..cd0f972266a 100644 Binary files a/public/images/events/pride2025-es-ES.png and b/public/images/events/pride2025-es-ES.png differ diff --git a/public/images/events/pride2025-es-MX.png b/public/images/events/pride2025-es-MX.png index cb2100cd601..4408bbcf9e1 100644 Binary files a/public/images/events/pride2025-es-MX.png and b/public/images/events/pride2025-es-MX.png differ diff --git a/public/images/events/pride2025-fr.png b/public/images/events/pride2025-fr.png index f583c83bbbc..78084fdbe89 100644 Binary files a/public/images/events/pride2025-fr.png and b/public/images/events/pride2025-fr.png differ diff --git a/public/images/events/pride2025-it.png b/public/images/events/pride2025-it.png index 293d1f92ad8..68d3910782e 100644 Binary files a/public/images/events/pride2025-it.png and b/public/images/events/pride2025-it.png differ diff --git a/public/images/events/pride2025-ja.png b/public/images/events/pride2025-ja.png index 562e43e7d8e..af4f837ab74 100644 Binary files a/public/images/events/pride2025-ja.png and b/public/images/events/pride2025-ja.png differ diff --git a/public/images/events/pride2025-ko.png b/public/images/events/pride2025-ko.png index 74be30ba4ef..fe8733dc2ae 100644 Binary files a/public/images/events/pride2025-ko.png and b/public/images/events/pride2025-ko.png differ diff --git a/public/images/events/pride2025-pt-BR.png b/public/images/events/pride2025-pt-BR.png index 99269bd1495..bc08dea5e6f 100644 Binary files a/public/images/events/pride2025-pt-BR.png and b/public/images/events/pride2025-pt-BR.png differ diff --git a/public/images/events/pride2025-zh-CN.png b/public/images/events/pride2025-zh-CN.png index 5be66a544cf..fbd9e9ff278 100644 Binary files a/public/images/events/pride2025-zh-CN.png and b/public/images/events/pride2025-zh-CN.png differ diff --git a/public/images/events/pride2025-zh-TW.png b/public/images/events/pride2025-zh-TW.png index aeffc354c7d..e64be2cd79c 100644 Binary files a/public/images/events/pride2025-zh-TW.png and b/public/images/events/pride2025-zh-TW.png differ diff --git a/public/images/events/september-update-de.png b/public/images/events/september-update-de.png index 1ecb46e408c..9947adaa222 100644 Binary files a/public/images/events/september-update-de.png and b/public/images/events/september-update-de.png differ diff --git a/public/images/events/september-update-en.png b/public/images/events/september-update-en.png index 57dd130b98d..1bcced18f68 100644 Binary files a/public/images/events/september-update-en.png and b/public/images/events/september-update-en.png differ diff --git a/public/images/events/september-update-es.png b/public/images/events/september-update-es.png index 8c294d21403..a43ae8d15fa 100644 Binary files a/public/images/events/september-update-es.png and b/public/images/events/september-update-es.png differ diff --git a/public/images/events/september-update-fr.png b/public/images/events/september-update-fr.png index 4be33c85e9a..7a6ae965226 100644 Binary files a/public/images/events/september-update-fr.png and b/public/images/events/september-update-fr.png differ diff --git a/public/images/events/september-update-it.png b/public/images/events/september-update-it.png index 62542f4eb9b..c97001c28d5 100644 Binary files a/public/images/events/september-update-it.png and b/public/images/events/september-update-it.png differ diff --git a/public/images/events/september-update-ja.png b/public/images/events/september-update-ja.png index 93e18c51223..11d1f34abdf 100644 Binary files a/public/images/events/september-update-ja.png and b/public/images/events/september-update-ja.png differ diff --git a/public/images/events/september-update-ko.png b/public/images/events/september-update-ko.png index 13585327fce..6e8adf31fcb 100644 Binary files a/public/images/events/september-update-ko.png and b/public/images/events/september-update-ko.png differ diff --git a/public/images/events/september-update-pt-BR.png b/public/images/events/september-update-pt-BR.png index 8dd8b8759e9..2960bb1c605 100644 Binary files a/public/images/events/september-update-pt-BR.png and b/public/images/events/september-update-pt-BR.png differ diff --git a/public/images/events/september-update-zh-CN.png b/public/images/events/september-update-zh-CN.png index ee56d644d24..31f660ceace 100644 Binary files a/public/images/events/september-update-zh-CN.png and b/public/images/events/september-update-zh-CN.png differ diff --git a/public/images/events/spr25event-de.png b/public/images/events/spr25event-de.png index 1ccd9557460..a91202d7334 100644 Binary files a/public/images/events/spr25event-de.png and b/public/images/events/spr25event-de.png differ diff --git a/public/images/events/spr25event-en.png b/public/images/events/spr25event-en.png index 0e73f9247e3..cb30dac4638 100644 Binary files a/public/images/events/spr25event-en.png and b/public/images/events/spr25event-en.png differ diff --git a/public/images/events/spr25event-es-ES.png b/public/images/events/spr25event-es-ES.png index 137f1c6e743..9d16d9ced6d 100644 Binary files a/public/images/events/spr25event-es-ES.png and b/public/images/events/spr25event-es-ES.png differ diff --git a/public/images/events/spr25event-es-MX.png b/public/images/events/spr25event-es-MX.png index 137f1c6e743..9d16d9ced6d 100644 Binary files a/public/images/events/spr25event-es-MX.png and b/public/images/events/spr25event-es-MX.png differ diff --git a/public/images/events/spr25event-fr.png b/public/images/events/spr25event-fr.png index 7730e16d4a3..f7b2618a3e3 100644 Binary files a/public/images/events/spr25event-fr.png and b/public/images/events/spr25event-fr.png differ diff --git a/public/images/events/spr25event-it.png b/public/images/events/spr25event-it.png index 2664b4367cc..384078c3e82 100644 Binary files a/public/images/events/spr25event-it.png and b/public/images/events/spr25event-it.png differ diff --git a/public/images/events/spr25event-ja.png b/public/images/events/spr25event-ja.png index 90b02af8050..523dc529539 100644 Binary files a/public/images/events/spr25event-ja.png and b/public/images/events/spr25event-ja.png differ diff --git a/public/images/events/spr25event-ko.png b/public/images/events/spr25event-ko.png index a8fe279617a..d8a470ffd7e 100644 Binary files a/public/images/events/spr25event-ko.png and b/public/images/events/spr25event-ko.png differ diff --git a/public/images/events/spr25event-pt-BR.png b/public/images/events/spr25event-pt-BR.png index ae195fecc97..42d4a404ca7 100644 Binary files a/public/images/events/spr25event-pt-BR.png and b/public/images/events/spr25event-pt-BR.png differ diff --git a/public/images/events/spr25event-zh-CN.png b/public/images/events/spr25event-zh-CN.png index 1d8ad35c166..88f9023170b 100644 Binary files a/public/images/events/spr25event-zh-CN.png and b/public/images/events/spr25event-zh-CN.png differ diff --git a/public/images/events/valentines2025event-de.png b/public/images/events/valentines2025event-de.png index 8dd41924a77..1c8696b1e37 100644 Binary files a/public/images/events/valentines2025event-de.png and b/public/images/events/valentines2025event-de.png differ diff --git a/public/images/events/valentines2025event-en.png b/public/images/events/valentines2025event-en.png index dc36dad3394..ab1d2c7fa19 100644 Binary files a/public/images/events/valentines2025event-en.png and b/public/images/events/valentines2025event-en.png differ diff --git a/public/images/events/valentines2025event-es-ES.png b/public/images/events/valentines2025event-es-ES.png index 0915299b7bd..905d7de92ff 100644 Binary files a/public/images/events/valentines2025event-es-ES.png and b/public/images/events/valentines2025event-es-ES.png differ diff --git a/public/images/events/valentines2025event-fr.png b/public/images/events/valentines2025event-fr.png index dbaf23101ed..f6300b01d28 100644 Binary files a/public/images/events/valentines2025event-fr.png and b/public/images/events/valentines2025event-fr.png differ diff --git a/public/images/events/valentines2025event-it.png b/public/images/events/valentines2025event-it.png index b10eb8083be..06927ff8d88 100644 Binary files a/public/images/events/valentines2025event-it.png and b/public/images/events/valentines2025event-it.png differ diff --git a/public/images/events/valentines2025event-ja.png b/public/images/events/valentines2025event-ja.png index 7e9fe5ad3d4..6c7cd449c76 100644 Binary files a/public/images/events/valentines2025event-ja.png and b/public/images/events/valentines2025event-ja.png differ diff --git a/public/images/events/valentines2025event-ko.png b/public/images/events/valentines2025event-ko.png index 558a402fc77..199a0538dd3 100644 Binary files a/public/images/events/valentines2025event-ko.png and b/public/images/events/valentines2025event-ko.png differ diff --git a/public/images/events/valentines2025event-pt-BR.png b/public/images/events/valentines2025event-pt-BR.png index 45fa40f30fc..bae78d11849 100644 Binary files a/public/images/events/valentines2025event-pt-BR.png and b/public/images/events/valentines2025event-pt-BR.png differ diff --git a/public/images/events/valentines2025event-zh-CN.png b/public/images/events/valentines2025event-zh-CN.png index 13256da720c..c8302d06cd6 100644 Binary files a/public/images/events/valentines2025event-zh-CN.png and b/public/images/events/valentines2025event-zh-CN.png differ diff --git a/public/images/events/winter_holidays2024-event-de.png b/public/images/events/winter_holidays2024-event-de.png index 1c2e10086f2..0d900058705 100644 Binary files a/public/images/events/winter_holidays2024-event-de.png and b/public/images/events/winter_holidays2024-event-de.png differ diff --git a/public/images/events/winter_holidays2024-event-en.png b/public/images/events/winter_holidays2024-event-en.png index 3a361e99bee..fa4e693f54c 100644 Binary files a/public/images/events/winter_holidays2024-event-en.png and b/public/images/events/winter_holidays2024-event-en.png differ diff --git a/public/images/events/winter_holidays2024-event-es-ES.png b/public/images/events/winter_holidays2024-event-es-ES.png index f7e64268ad5..6923e1e2c5f 100644 Binary files a/public/images/events/winter_holidays2024-event-es-ES.png and b/public/images/events/winter_holidays2024-event-es-ES.png differ diff --git a/public/images/events/winter_holidays2024-event-fr.png b/public/images/events/winter_holidays2024-event-fr.png index 278f5f2afd4..cf68c7221a8 100644 Binary files a/public/images/events/winter_holidays2024-event-fr.png and b/public/images/events/winter_holidays2024-event-fr.png differ diff --git a/public/images/events/winter_holidays2024-event-it.png b/public/images/events/winter_holidays2024-event-it.png index f3062f40d51..5c58c806dda 100644 Binary files a/public/images/events/winter_holidays2024-event-it.png and b/public/images/events/winter_holidays2024-event-it.png differ diff --git a/public/images/events/winter_holidays2024-event-ja.png b/public/images/events/winter_holidays2024-event-ja.png index 0a217c81d03..29cc129f7c2 100644 Binary files a/public/images/events/winter_holidays2024-event-ja.png and b/public/images/events/winter_holidays2024-event-ja.png differ diff --git a/public/images/events/winter_holidays2024-event-ko.png b/public/images/events/winter_holidays2024-event-ko.png index 83c9a8525f0..93033288093 100644 Binary files a/public/images/events/winter_holidays2024-event-ko.png and b/public/images/events/winter_holidays2024-event-ko.png differ diff --git a/public/images/events/winter_holidays2024-event-pt-BR.png b/public/images/events/winter_holidays2024-event-pt-BR.png index 1f003be5986..7a160f9efbd 100644 Binary files a/public/images/events/winter_holidays2024-event-pt-BR.png and b/public/images/events/winter_holidays2024-event-pt-BR.png differ diff --git a/public/images/events/winter_holidays2024-event-zh-CN.png b/public/images/events/winter_holidays2024-event-zh-CN.png index 03a9f57c6f2..2308ff99a38 100644 Binary files a/public/images/events/winter_holidays2024-event-zh-CN.png and b/public/images/events/winter_holidays2024-event-zh-CN.png differ diff --git a/public/images/events/yearofthesnakeevent-de.png b/public/images/events/yearofthesnakeevent-de.png index f5e684bbcd5..08cf799303d 100644 Binary files a/public/images/events/yearofthesnakeevent-de.png and b/public/images/events/yearofthesnakeevent-de.png differ diff --git a/public/images/events/yearofthesnakeevent-en.png b/public/images/events/yearofthesnakeevent-en.png index ddd34023b94..2b846528790 100644 Binary files a/public/images/events/yearofthesnakeevent-en.png and b/public/images/events/yearofthesnakeevent-en.png differ diff --git a/public/images/events/yearofthesnakeevent-es-ES.png b/public/images/events/yearofthesnakeevent-es-ES.png index 76474c475c5..b3d3330f05c 100644 Binary files a/public/images/events/yearofthesnakeevent-es-ES.png and b/public/images/events/yearofthesnakeevent-es-ES.png differ diff --git a/public/images/events/yearofthesnakeevent-fr.png b/public/images/events/yearofthesnakeevent-fr.png index 88ad3e770ca..edabe05527c 100644 Binary files a/public/images/events/yearofthesnakeevent-fr.png and b/public/images/events/yearofthesnakeevent-fr.png differ diff --git a/public/images/events/yearofthesnakeevent-it.png b/public/images/events/yearofthesnakeevent-it.png index a02e7048d2a..32c5d02ebb6 100644 Binary files a/public/images/events/yearofthesnakeevent-it.png and b/public/images/events/yearofthesnakeevent-it.png differ diff --git a/public/images/events/yearofthesnakeevent-ja.png b/public/images/events/yearofthesnakeevent-ja.png index ba13b5d281f..250efd2bd43 100644 Binary files a/public/images/events/yearofthesnakeevent-ja.png and b/public/images/events/yearofthesnakeevent-ja.png differ diff --git a/public/images/events/yearofthesnakeevent-ko.png b/public/images/events/yearofthesnakeevent-ko.png index dca6bcbbd15..072f310273b 100644 Binary files a/public/images/events/yearofthesnakeevent-ko.png and b/public/images/events/yearofthesnakeevent-ko.png differ diff --git a/public/images/events/yearofthesnakeevent-pt-BR.png b/public/images/events/yearofthesnakeevent-pt-BR.png index a535aec2aa5..9b192361373 100644 Binary files a/public/images/events/yearofthesnakeevent-pt-BR.png and b/public/images/events/yearofthesnakeevent-pt-BR.png differ diff --git a/public/images/events/yearofthesnakeevent-zh-CN.png b/public/images/events/yearofthesnakeevent-zh-CN.png index 3ab4fc565a7..49dc32e8141 100644 Binary files a/public/images/events/yearofthesnakeevent-zh-CN.png and b/public/images/events/yearofthesnakeevent-zh-CN.png differ diff --git a/public/images/inputs/dualshock.png b/public/images/inputs/dualshock.png index 264f03a298e..acdfd37aa79 100644 Binary files a/public/images/inputs/dualshock.png and b/public/images/inputs/dualshock.png differ diff --git a/public/images/inputs/keyboard.png b/public/images/inputs/keyboard.png index 0c33e579006..a1532bf667e 100644 Binary files a/public/images/inputs/keyboard.png and b/public/images/inputs/keyboard.png differ diff --git a/public/images/inputs/xbox.png b/public/images/inputs/xbox.png index 037fd8515ae..6f47d27fe5b 100644 Binary files a/public/images/inputs/xbox.png and b/public/images/inputs/xbox.png differ diff --git a/public/images/items.png b/public/images/items.png index 896bb46c7c2..f0f11e9443e 100644 Binary files a/public/images/items.png and b/public/images/items.png differ diff --git a/public/images/items/ability_capsule.png b/public/images/items/ability_capsule.png index ee8aec6b346..92171d5296a 100644 Binary files a/public/images/items/ability_capsule.png and b/public/images/items/ability_capsule.png differ diff --git a/public/images/items/ability_charm.png b/public/images/items/ability_charm.png index 2e9e0368667..c8a168e315d 100644 Binary files a/public/images/items/ability_charm.png and b/public/images/items/ability_charm.png differ diff --git a/public/images/items/abomasite.png b/public/images/items/abomasite.png index 0758786bb0f..eae8422bdaf 100644 Binary files a/public/images/items/abomasite.png and b/public/images/items/abomasite.png differ diff --git a/public/images/items/absolite.png b/public/images/items/absolite.png index f7fe8b7ac12..8043b2969bb 100644 Binary files a/public/images/items/absolite.png and b/public/images/items/absolite.png differ diff --git a/public/images/items/adamant_crystal.png b/public/images/items/adamant_crystal.png index eb35af1540e..f9aea1fda30 100644 Binary files a/public/images/items/adamant_crystal.png and b/public/images/items/adamant_crystal.png differ diff --git a/public/images/items/aerodactylite.png b/public/images/items/aerodactylite.png index 4feb04f3702..8065e19de5e 100644 Binary files a/public/images/items/aerodactylite.png and b/public/images/items/aerodactylite.png differ diff --git a/public/images/items/aggronite.png b/public/images/items/aggronite.png index 8feb64633ec..a7c1f990ffa 100644 Binary files a/public/images/items/aggronite.png and b/public/images/items/aggronite.png differ diff --git a/public/images/items/alakazite.png b/public/images/items/alakazite.png index ed6acab02ca..470987bc13b 100644 Binary files a/public/images/items/alakazite.png and b/public/images/items/alakazite.png differ diff --git a/public/images/items/altarianite.png b/public/images/items/altarianite.png index 0bb6be23819..03ef291faa5 100644 Binary files a/public/images/items/altarianite.png and b/public/images/items/altarianite.png differ diff --git a/public/images/items/ampharosite.png b/public/images/items/ampharosite.png index 3084c05c1a9..154f7ea5609 100644 Binary files a/public/images/items/ampharosite.png and b/public/images/items/ampharosite.png differ diff --git a/public/images/items/amulet_coin.png b/public/images/items/amulet_coin.png index 3cda2b2a53b..727562836c4 100644 Binary files a/public/images/items/amulet_coin.png and b/public/images/items/amulet_coin.png differ diff --git a/public/images/items/apicot_berry.png b/public/images/items/apicot_berry.png index 4719671eaf3..7681645c114 100644 Binary files a/public/images/items/apicot_berry.png and b/public/images/items/apicot_berry.png differ diff --git a/public/images/items/audinite.png b/public/images/items/audinite.png index f7c21bf8e3b..b73c11bfbf2 100644 Binary files a/public/images/items/audinite.png and b/public/images/items/audinite.png differ diff --git a/public/images/items/auspicious_armor.png b/public/images/items/auspicious_armor.png index 27c40ae0bd0..d484b01f8b8 100644 Binary files a/public/images/items/auspicious_armor.png and b/public/images/items/auspicious_armor.png differ diff --git a/public/images/items/banettite.png b/public/images/items/banettite.png index b6bcadd72fc..9361e0e3da5 100644 Binary files a/public/images/items/banettite.png and b/public/images/items/banettite.png differ diff --git a/public/images/items/baton.png b/public/images/items/baton.png index ece81f82b2f..f814d93728e 100644 Binary files a/public/images/items/baton.png and b/public/images/items/baton.png differ diff --git a/public/images/items/beedrillite.png b/public/images/items/beedrillite.png index 99e516446d7..f1eb43f5488 100644 Binary files a/public/images/items/beedrillite.png and b/public/images/items/beedrillite.png differ diff --git a/public/images/items/berry_juice_bad.png b/public/images/items/berry_juice_bad.png index 344822c09ea..3b0805fff81 100644 Binary files a/public/images/items/berry_juice_bad.png and b/public/images/items/berry_juice_bad.png differ diff --git a/public/images/items/berry_juice_good.png b/public/images/items/berry_juice_good.png index 2f6272eca7c..b4d9907576f 100644 Binary files a/public/images/items/berry_juice_good.png and b/public/images/items/berry_juice_good.png differ diff --git a/public/images/items/berry_pot.png b/public/images/items/berry_pot.png index 3cb9b90dc53..d80ac4a4cc0 100644 Binary files a/public/images/items/berry_pot.png and b/public/images/items/berry_pot.png differ diff --git a/public/images/items/berry_pouch.png b/public/images/items/berry_pouch.png index d14d71358a9..6fd84402bca 100644 Binary files a/public/images/items/berry_pouch.png and b/public/images/items/berry_pouch.png differ diff --git a/public/images/items/big_mushroom.png b/public/images/items/big_mushroom.png index eb203a7374c..37b53cdb6bb 100644 Binary files a/public/images/items/big_mushroom.png and b/public/images/items/big_mushroom.png differ diff --git a/public/images/items/big_nugget.png b/public/images/items/big_nugget.png index e8839daa0b6..21f83672a2e 100644 Binary files a/public/images/items/big_nugget.png and b/public/images/items/big_nugget.png differ diff --git a/public/images/items/big_root.png b/public/images/items/big_root.png index 24b863ee238..8f32b006495 100644 Binary files a/public/images/items/big_root.png and b/public/images/items/big_root.png differ diff --git a/public/images/items/binding_band.png b/public/images/items/binding_band.png index b33256b7b8c..ee91f14a36c 100644 Binary files a/public/images/items/binding_band.png and b/public/images/items/binding_band.png differ diff --git a/public/images/items/black_augurite.png b/public/images/items/black_augurite.png index b34127e2942..d448c7b888c 100644 Binary files a/public/images/items/black_augurite.png and b/public/images/items/black_augurite.png differ diff --git a/public/images/items/black_belt.png b/public/images/items/black_belt.png index 9dde3ff83cd..4d303e2f645 100644 Binary files a/public/images/items/black_belt.png and b/public/images/items/black_belt.png differ diff --git a/public/images/items/black_glasses.png b/public/images/items/black_glasses.png index 4b18d828964..fd512c9763d 100644 Binary files a/public/images/items/black_glasses.png and b/public/images/items/black_glasses.png differ diff --git a/public/images/items/black_sludge.png b/public/images/items/black_sludge.png index fe308586dd3..04a1cabd9f5 100644 Binary files a/public/images/items/black_sludge.png and b/public/images/items/black_sludge.png differ diff --git a/public/images/items/blank_plate.png b/public/images/items/blank_plate.png index c08d25aa3c3..aa881d228f2 100644 Binary files a/public/images/items/blank_plate.png and b/public/images/items/blank_plate.png differ diff --git a/public/images/items/blastoisinite.png b/public/images/items/blastoisinite.png index ea2ddef0640..9d4f29cce8f 100644 Binary files a/public/images/items/blastoisinite.png and b/public/images/items/blastoisinite.png differ diff --git a/public/images/items/blazikenite.png b/public/images/items/blazikenite.png index 9b6e9e59212..4269cb18710 100644 Binary files a/public/images/items/blazikenite.png and b/public/images/items/blazikenite.png differ diff --git a/public/images/items/blue_orb.png b/public/images/items/blue_orb.png index 34c19c8aea8..f523a868c30 100644 Binary files a/public/images/items/blue_orb.png and b/public/images/items/blue_orb.png differ diff --git a/public/images/items/blunder_policy.png b/public/images/items/blunder_policy.png index 8d5b11cb3f6..8104d00c40c 100644 Binary files a/public/images/items/blunder_policy.png and b/public/images/items/blunder_policy.png differ diff --git a/public/images/items/bronze_ribbon.png b/public/images/items/bronze_ribbon.png index cab218e09f5..13eeb7254ca 100644 Binary files a/public/images/items/bronze_ribbon.png and b/public/images/items/bronze_ribbon.png differ diff --git a/public/images/items/bug_memory.png b/public/images/items/bug_memory.png index 004b499ba7a..a71637ceb5a 100644 Binary files a/public/images/items/bug_memory.png and b/public/images/items/bug_memory.png differ diff --git a/public/images/items/bug_tera_shard.png b/public/images/items/bug_tera_shard.png index 5711fe193bd..bc722e4698f 100644 Binary files a/public/images/items/bug_tera_shard.png and b/public/images/items/bug_tera_shard.png differ diff --git a/public/images/items/burn_drive.png b/public/images/items/burn_drive.png index 02ee18c02bd..b45ffc76d7e 100644 Binary files a/public/images/items/burn_drive.png and b/public/images/items/burn_drive.png differ diff --git a/public/images/items/calcium.png b/public/images/items/calcium.png index 4c42228d724..0ec70b68fec 100644 Binary files a/public/images/items/calcium.png and b/public/images/items/calcium.png differ diff --git a/public/images/items/cameruptite.png b/public/images/items/cameruptite.png index 9eda37e14e1..1653ff8f33a 100644 Binary files a/public/images/items/cameruptite.png and b/public/images/items/cameruptite.png differ diff --git a/public/images/items/candy.png b/public/images/items/candy.png index 81cf5e19ee2..fcbdaa1b13d 100644 Binary files a/public/images/items/candy.png and b/public/images/items/candy.png differ diff --git a/public/images/items/candy_jar.png b/public/images/items/candy_jar.png index 0338b64a86d..ddd7922bdce 100644 Binary files a/public/images/items/candy_jar.png and b/public/images/items/candy_jar.png differ diff --git a/public/images/items/candy_overlay.png b/public/images/items/candy_overlay.png index a1cb428cdee..567df8b3606 100644 Binary files a/public/images/items/candy_overlay.png and b/public/images/items/candy_overlay.png differ diff --git a/public/images/items/carbos.png b/public/images/items/carbos.png index 7dd09f2ec12..c824ddd5b82 100644 Binary files a/public/images/items/carbos.png and b/public/images/items/carbos.png differ diff --git a/public/images/items/catching_charm.png b/public/images/items/catching_charm.png index 57545622131..4699b8c3d85 100644 Binary files a/public/images/items/catching_charm.png and b/public/images/items/catching_charm.png differ diff --git a/public/images/items/charcoal.png b/public/images/items/charcoal.png index e10f8f20fd6..ce456f7b1fc 100644 Binary files a/public/images/items/charcoal.png and b/public/images/items/charcoal.png differ diff --git a/public/images/items/charizardite_x.png b/public/images/items/charizardite_x.png index d238a77a9e2..37838c5919c 100644 Binary files a/public/images/items/charizardite_x.png and b/public/images/items/charizardite_x.png differ diff --git a/public/images/items/charizardite_y.png b/public/images/items/charizardite_y.png index 5a3ea59d091..ba4672dd3f3 100644 Binary files a/public/images/items/charizardite_y.png and b/public/images/items/charizardite_y.png differ diff --git a/public/images/items/chill_drive.png b/public/images/items/chill_drive.png index fbf7462479a..6126b295328 100644 Binary files a/public/images/items/chill_drive.png and b/public/images/items/chill_drive.png differ diff --git a/public/images/items/chipped_pot.png b/public/images/items/chipped_pot.png index 969c3dc3c16..c78d7581ea8 100644 Binary files a/public/images/items/chipped_pot.png and b/public/images/items/chipped_pot.png differ diff --git a/public/images/items/choice_scarf.png b/public/images/items/choice_scarf.png index 2ddf7d3be16..e4be436ca73 100644 Binary files a/public/images/items/choice_scarf.png and b/public/images/items/choice_scarf.png differ diff --git a/public/images/items/choice_specs.png b/public/images/items/choice_specs.png index 09b58f64381..24163f48bf9 100644 Binary files a/public/images/items/choice_specs.png and b/public/images/items/choice_specs.png differ diff --git a/public/images/items/clefairy_doll.png b/public/images/items/clefairy_doll.png index 3b54c83df47..cd618cd80ab 100644 Binary files a/public/images/items/clefairy_doll.png and b/public/images/items/clefairy_doll.png differ diff --git a/public/images/items/coin_case.png b/public/images/items/coin_case.png index 3c17c2b13f8..733a0c95e76 100644 Binary files a/public/images/items/coin_case.png and b/public/images/items/coin_case.png differ diff --git a/public/images/items/cornerstone_mask.png b/public/images/items/cornerstone_mask.png index 205bdef9805..e92be7ea813 100644 Binary files a/public/images/items/cornerstone_mask.png and b/public/images/items/cornerstone_mask.png differ diff --git a/public/images/items/coupon.png b/public/images/items/coupon.png index b08fa65fecc..81cfa676705 100644 Binary files a/public/images/items/coupon.png and b/public/images/items/coupon.png differ diff --git a/public/images/items/cracked_pot.png b/public/images/items/cracked_pot.png index 4afc2caf2c8..36a73cd0884 100644 Binary files a/public/images/items/cracked_pot.png and b/public/images/items/cracked_pot.png differ diff --git a/public/images/items/dark_memory.png b/public/images/items/dark_memory.png index e1e503bd036..0d0ccb42664 100644 Binary files a/public/images/items/dark_memory.png and b/public/images/items/dark_memory.png differ diff --git a/public/images/items/dark_stone.png b/public/images/items/dark_stone.png index c28a93ecabc..f97da5f3394 100644 Binary files a/public/images/items/dark_stone.png and b/public/images/items/dark_stone.png differ diff --git a/public/images/items/dark_tera_shard.png b/public/images/items/dark_tera_shard.png index ca24664b74e..2472fc812f9 100644 Binary files a/public/images/items/dark_tera_shard.png and b/public/images/items/dark_tera_shard.png differ diff --git a/public/images/items/dawn_stone.png b/public/images/items/dawn_stone.png index b29d2016a56..91b50dca7b2 100644 Binary files a/public/images/items/dawn_stone.png and b/public/images/items/dawn_stone.png differ diff --git a/public/images/items/deep_sea_scale.png b/public/images/items/deep_sea_scale.png index cf40e652319..6027c618afc 100644 Binary files a/public/images/items/deep_sea_scale.png and b/public/images/items/deep_sea_scale.png differ diff --git a/public/images/items/deep_sea_tooth.png b/public/images/items/deep_sea_tooth.png index 2cd1980aeb4..0a7a74f0c9a 100644 Binary files a/public/images/items/deep_sea_tooth.png and b/public/images/items/deep_sea_tooth.png differ diff --git a/public/images/items/diancite.png b/public/images/items/diancite.png index 293d327524e..fbb0267fb59 100644 Binary files a/public/images/items/diancite.png and b/public/images/items/diancite.png differ diff --git a/public/images/items/dire_hit.png b/public/images/items/dire_hit.png index 0c060710ff2..49011c7f86d 100644 Binary files a/public/images/items/dire_hit.png and b/public/images/items/dire_hit.png differ diff --git a/public/images/items/dna_splicers.png b/public/images/items/dna_splicers.png index 51c1524076e..918c156ba53 100644 Binary files a/public/images/items/dna_splicers.png and b/public/images/items/dna_splicers.png differ diff --git a/public/images/items/douse_drive.png b/public/images/items/douse_drive.png index fb8e7623184..6ecf6125fcf 100644 Binary files a/public/images/items/douse_drive.png and b/public/images/items/douse_drive.png differ diff --git a/public/images/items/draco_plate.png b/public/images/items/draco_plate.png index b4702aadba3..0dfae0ef0e1 100644 Binary files a/public/images/items/draco_plate.png and b/public/images/items/draco_plate.png differ diff --git a/public/images/items/dragon_fang.png b/public/images/items/dragon_fang.png index 4a9904e0ef3..b5c028d1e92 100644 Binary files a/public/images/items/dragon_fang.png and b/public/images/items/dragon_fang.png differ diff --git a/public/images/items/dragon_memory.png b/public/images/items/dragon_memory.png index 01a14cadf3e..9a383fc5f0a 100644 Binary files a/public/images/items/dragon_memory.png and b/public/images/items/dragon_memory.png differ diff --git a/public/images/items/dragon_scale.png b/public/images/items/dragon_scale.png index 9cec39b22f6..6b82ce88b01 100644 Binary files a/public/images/items/dragon_scale.png and b/public/images/items/dragon_scale.png differ diff --git a/public/images/items/dragon_tera_shard.png b/public/images/items/dragon_tera_shard.png index 51f20d9f5cb..c140671fbfc 100644 Binary files a/public/images/items/dragon_tera_shard.png and b/public/images/items/dragon_tera_shard.png differ diff --git a/public/images/items/dread_plate.png b/public/images/items/dread_plate.png index 6537320bc0a..ce40b216eea 100644 Binary files a/public/images/items/dread_plate.png and b/public/images/items/dread_plate.png differ diff --git a/public/images/items/dubious_disc.png b/public/images/items/dubious_disc.png index 122958f9550..eb907164f05 100644 Binary files a/public/images/items/dubious_disc.png and b/public/images/items/dubious_disc.png differ diff --git a/public/images/items/dusk_stone.png b/public/images/items/dusk_stone.png index e2cf73d04f3..fd4879d48fe 100644 Binary files a/public/images/items/dusk_stone.png and b/public/images/items/dusk_stone.png differ diff --git a/public/images/items/dynamax_band.png b/public/images/items/dynamax_band.png index 57b9a0caef5..df9f4460884 100644 Binary files a/public/images/items/dynamax_band.png and b/public/images/items/dynamax_band.png differ diff --git a/public/images/items/earth_plate.png b/public/images/items/earth_plate.png index 79fbbad5a84..8d298d92722 100644 Binary files a/public/images/items/earth_plate.png and b/public/images/items/earth_plate.png differ diff --git a/public/images/items/electirizer.png b/public/images/items/electirizer.png index a5589a27e42..2ef85308755 100644 Binary files a/public/images/items/electirizer.png and b/public/images/items/electirizer.png differ diff --git a/public/images/items/electric_memory.png b/public/images/items/electric_memory.png index d0595356482..2801bb7d03c 100644 Binary files a/public/images/items/electric_memory.png and b/public/images/items/electric_memory.png differ diff --git a/public/images/items/electric_tera_shard.png b/public/images/items/electric_tera_shard.png index 2195be32929..a836a5587f8 100644 Binary files a/public/images/items/electric_tera_shard.png and b/public/images/items/electric_tera_shard.png differ diff --git a/public/images/items/elixir.png b/public/images/items/elixir.png index b4bf7834e17..2d365d259af 100644 Binary files a/public/images/items/elixir.png and b/public/images/items/elixir.png differ diff --git a/public/images/items/enigma_berry.png b/public/images/items/enigma_berry.png index 1a1a20854ed..7a13e643d68 100644 Binary files a/public/images/items/enigma_berry.png and b/public/images/items/enigma_berry.png differ diff --git a/public/images/items/ether.png b/public/images/items/ether.png index 44a6e79de8e..76003bb7696 100644 Binary files a/public/images/items/ether.png and b/public/images/items/ether.png differ diff --git a/public/images/items/everstone.png b/public/images/items/everstone.png index 194f7b63baf..27c205f9132 100644 Binary files a/public/images/items/everstone.png and b/public/images/items/everstone.png differ diff --git a/public/images/items/eviolite.png b/public/images/items/eviolite.png index 8591791a5a1..30da75fd71d 100644 Binary files a/public/images/items/eviolite.png and b/public/images/items/eviolite.png differ diff --git a/public/images/items/exp_balance.png b/public/images/items/exp_balance.png index 6a03556a3a2..a00a5d599a4 100644 Binary files a/public/images/items/exp_balance.png and b/public/images/items/exp_balance.png differ diff --git a/public/images/items/exp_charm.png b/public/images/items/exp_charm.png index 2635e4d8020..1c3fe829993 100644 Binary files a/public/images/items/exp_charm.png and b/public/images/items/exp_charm.png differ diff --git a/public/images/items/exp_share.png b/public/images/items/exp_share.png index 6b866c63427..611056743e6 100644 Binary files a/public/images/items/exp_share.png and b/public/images/items/exp_share.png differ diff --git a/public/images/items/expert_belt.png b/public/images/items/expert_belt.png index 86cfd7170de..e4e903d7507 100644 Binary files a/public/images/items/expert_belt.png and b/public/images/items/expert_belt.png differ diff --git a/public/images/items/fairy_feather.png b/public/images/items/fairy_feather.png index 44923a1db94..7e087db48d5 100644 Binary files a/public/images/items/fairy_feather.png and b/public/images/items/fairy_feather.png differ diff --git a/public/images/items/fairy_memory.png b/public/images/items/fairy_memory.png index b5d0b32ff95..20d088762e6 100644 Binary files a/public/images/items/fairy_memory.png and b/public/images/items/fairy_memory.png differ diff --git a/public/images/items/fairy_tera_shard.png b/public/images/items/fairy_tera_shard.png index 36fb5e88f1c..1984581c74d 100644 Binary files a/public/images/items/fairy_tera_shard.png and b/public/images/items/fairy_tera_shard.png differ diff --git a/public/images/items/fighting_memory.png b/public/images/items/fighting_memory.png index 13789836880..58dd3ecf8a1 100644 Binary files a/public/images/items/fighting_memory.png and b/public/images/items/fighting_memory.png differ diff --git a/public/images/items/fighting_tera_shard.png b/public/images/items/fighting_tera_shard.png index 8423a41cbe8..c76f50b48e4 100644 Binary files a/public/images/items/fighting_tera_shard.png and b/public/images/items/fighting_tera_shard.png differ diff --git a/public/images/items/fire_memory.png b/public/images/items/fire_memory.png index 4f341417b6e..c066c1be42b 100644 Binary files a/public/images/items/fire_memory.png and b/public/images/items/fire_memory.png differ diff --git a/public/images/items/fire_stone.png b/public/images/items/fire_stone.png index 3db1942dfed..2f9cb737064 100644 Binary files a/public/images/items/fire_stone.png and b/public/images/items/fire_stone.png differ diff --git a/public/images/items/fire_tera_shard.png b/public/images/items/fire_tera_shard.png index 5783a5e9720..4a620eec220 100644 Binary files a/public/images/items/fire_tera_shard.png and b/public/images/items/fire_tera_shard.png differ diff --git a/public/images/items/fist_plate.png b/public/images/items/fist_plate.png index d992e4ab1c2..c3304c41e07 100644 Binary files a/public/images/items/fist_plate.png and b/public/images/items/fist_plate.png differ diff --git a/public/images/items/flame_orb.png b/public/images/items/flame_orb.png index 5132bbb6153..6c9d05fc8a0 100644 Binary files a/public/images/items/flame_orb.png and b/public/images/items/flame_orb.png differ diff --git a/public/images/items/flame_plate.png b/public/images/items/flame_plate.png index 7633773eee1..c7b7eb6bef1 100644 Binary files a/public/images/items/flame_plate.png and b/public/images/items/flame_plate.png differ diff --git a/public/images/items/flying_memory.png b/public/images/items/flying_memory.png index 8d3efbf1401..8b73abd8264 100644 Binary files a/public/images/items/flying_memory.png and b/public/images/items/flying_memory.png differ diff --git a/public/images/items/flying_tera_shard.png b/public/images/items/flying_tera_shard.png index 97d3013f70b..42e2b16c4d2 100644 Binary files a/public/images/items/flying_tera_shard.png and b/public/images/items/flying_tera_shard.png differ diff --git a/public/images/items/focus_band.png b/public/images/items/focus_band.png index 3a04ae17023..c49d74a5ae9 100644 Binary files a/public/images/items/focus_band.png and b/public/images/items/focus_band.png differ diff --git a/public/images/items/focus_sash.png b/public/images/items/focus_sash.png index 7700ceecf6b..17dc0fd8fe6 100644 Binary files a/public/images/items/focus_sash.png and b/public/images/items/focus_sash.png differ diff --git a/public/images/items/full_heal.png b/public/images/items/full_heal.png index 4e59dcf44fa..e378291efe0 100644 Binary files a/public/images/items/full_heal.png and b/public/images/items/full_heal.png differ diff --git a/public/images/items/full_restore.png b/public/images/items/full_restore.png index ba64f2edad8..d6e8c7f33e8 100644 Binary files a/public/images/items/full_restore.png and b/public/images/items/full_restore.png differ diff --git a/public/images/items/galarica_cuff.png b/public/images/items/galarica_cuff.png index 56523da5230..4706279c43d 100644 Binary files a/public/images/items/galarica_cuff.png and b/public/images/items/galarica_cuff.png differ diff --git a/public/images/items/galarica_wreath.png b/public/images/items/galarica_wreath.png index 20356bafd8a..6b1838c78dc 100644 Binary files a/public/images/items/galarica_wreath.png and b/public/images/items/galarica_wreath.png differ diff --git a/public/images/items/galladite.png b/public/images/items/galladite.png index 15c93cd9c7e..3fccc2d9b61 100644 Binary files a/public/images/items/galladite.png and b/public/images/items/galladite.png differ diff --git a/public/images/items/ganlon_berry.png b/public/images/items/ganlon_berry.png index f9b88fc563a..72dfb41c4a5 100644 Binary files a/public/images/items/ganlon_berry.png and b/public/images/items/ganlon_berry.png differ diff --git a/public/images/items/garchompite.png b/public/images/items/garchompite.png index 4276146a858..b1938a6979d 100644 Binary files a/public/images/items/garchompite.png and b/public/images/items/garchompite.png differ diff --git a/public/images/items/gardevoirite.png b/public/images/items/gardevoirite.png index 66a90b93bce..9180b369df4 100644 Binary files a/public/images/items/gardevoirite.png and b/public/images/items/gardevoirite.png differ diff --git a/public/images/items/gb.png b/public/images/items/gb.png index 4b437277849..bcc88593fad 100644 Binary files a/public/images/items/gb.png and b/public/images/items/gb.png differ diff --git a/public/images/items/gengarite.png b/public/images/items/gengarite.png index 4ccaae6ee8d..4a6a40d2f99 100644 Binary files a/public/images/items/gengarite.png and b/public/images/items/gengarite.png differ diff --git a/public/images/items/ghost_memory.png b/public/images/items/ghost_memory.png index cb3c31ea4de..cde6f45e735 100644 Binary files a/public/images/items/ghost_memory.png and b/public/images/items/ghost_memory.png differ diff --git a/public/images/items/ghost_tera_shard.png b/public/images/items/ghost_tera_shard.png index 8b9c6e750a9..859c0b9778f 100644 Binary files a/public/images/items/ghost_tera_shard.png and b/public/images/items/ghost_tera_shard.png differ diff --git a/public/images/items/glalitite.png b/public/images/items/glalitite.png index ed7858c631c..e3830e7b6e7 100644 Binary files a/public/images/items/glalitite.png and b/public/images/items/glalitite.png differ diff --git a/public/images/items/golden_egg.png b/public/images/items/golden_egg.png index 5727b4cb513..743a32729f3 100644 Binary files a/public/images/items/golden_egg.png and b/public/images/items/golden_egg.png differ diff --git a/public/images/items/golden_exp_charm.png b/public/images/items/golden_exp_charm.png index 1895bfaa6b9..75067eb0eea 100644 Binary files a/public/images/items/golden_exp_charm.png and b/public/images/items/golden_exp_charm.png differ diff --git a/public/images/items/golden_mystic_ticket.png b/public/images/items/golden_mystic_ticket.png index 57f5b9efca6..6886c815099 100644 Binary files a/public/images/items/golden_mystic_ticket.png and b/public/images/items/golden_mystic_ticket.png differ diff --git a/public/images/items/golden_net.png b/public/images/items/golden_net.png index 3205d545e27..95ac08c1132 100644 Binary files a/public/images/items/golden_net.png and b/public/images/items/golden_net.png differ diff --git a/public/images/items/golden_punch.png b/public/images/items/golden_punch.png index 291ff7e248f..80c4729a227 100644 Binary files a/public/images/items/golden_punch.png and b/public/images/items/golden_punch.png differ diff --git a/public/images/items/gracidea.png b/public/images/items/gracidea.png index 6e464390f17..3fca2378d87 100644 Binary files a/public/images/items/gracidea.png and b/public/images/items/gracidea.png differ diff --git a/public/images/items/grass_memory.png b/public/images/items/grass_memory.png index 9d7d27de770..aacb8e7e98a 100644 Binary files a/public/images/items/grass_memory.png and b/public/images/items/grass_memory.png differ diff --git a/public/images/items/grass_tera_shard.png b/public/images/items/grass_tera_shard.png index 30e8762b5b6..218474660c4 100644 Binary files a/public/images/items/grass_tera_shard.png and b/public/images/items/grass_tera_shard.png differ diff --git a/public/images/items/great_ribbon.png b/public/images/items/great_ribbon.png index e7d7e452122..e246d8db981 100644 Binary files a/public/images/items/great_ribbon.png and b/public/images/items/great_ribbon.png differ diff --git a/public/images/items/grip_claw.png b/public/images/items/grip_claw.png index 61cbb89e9b2..ccef5828f8d 100644 Binary files a/public/images/items/grip_claw.png and b/public/images/items/grip_claw.png differ diff --git a/public/images/items/griseous_core.png b/public/images/items/griseous_core.png index 7f3f683eda8..b067ffc7ef6 100644 Binary files a/public/images/items/griseous_core.png and b/public/images/items/griseous_core.png differ diff --git a/public/images/items/ground_memory.png b/public/images/items/ground_memory.png index 808a4e13eeb..66d31446dd9 100644 Binary files a/public/images/items/ground_memory.png and b/public/images/items/ground_memory.png differ diff --git a/public/images/items/ground_tera_shard.png b/public/images/items/ground_tera_shard.png index d7760f7dc1b..46a1cab5f4e 100644 Binary files a/public/images/items/ground_tera_shard.png and b/public/images/items/ground_tera_shard.png differ diff --git a/public/images/items/guard_spec.png b/public/images/items/guard_spec.png index 95a37d0d28e..d65f5a8c07f 100644 Binary files a/public/images/items/guard_spec.png and b/public/images/items/guard_spec.png differ diff --git a/public/images/items/gyaradosite.png b/public/images/items/gyaradosite.png index e4cae1366ab..7765f443dbd 100644 Binary files a/public/images/items/gyaradosite.png and b/public/images/items/gyaradosite.png differ diff --git a/public/images/items/hard_meteorite.png b/public/images/items/hard_meteorite.png index 8e8a2b5688b..5a38e06c9ac 100644 Binary files a/public/images/items/hard_meteorite.png and b/public/images/items/hard_meteorite.png differ diff --git a/public/images/items/hard_stone.png b/public/images/items/hard_stone.png index 571d96afaa8..98463a6a391 100644 Binary files a/public/images/items/hard_stone.png and b/public/images/items/hard_stone.png differ diff --git a/public/images/items/healing_charm.png b/public/images/items/healing_charm.png index 4601eeef593..42bcc0eab06 100644 Binary files a/public/images/items/healing_charm.png and b/public/images/items/healing_charm.png differ diff --git a/public/images/items/hearthflame_mask.png b/public/images/items/hearthflame_mask.png index deed3d0cde8..b76556c8baf 100644 Binary files a/public/images/items/hearthflame_mask.png and b/public/images/items/hearthflame_mask.png differ diff --git a/public/images/items/heracronite.png b/public/images/items/heracronite.png index ffcfc440c19..29c8e8285fb 100644 Binary files a/public/images/items/heracronite.png and b/public/images/items/heracronite.png differ diff --git a/public/images/items/houndoominite.png b/public/images/items/houndoominite.png index c9ea1954dfa..9ae4982694e 100644 Binary files a/public/images/items/houndoominite.png and b/public/images/items/houndoominite.png differ diff --git a/public/images/items/hp_up.png b/public/images/items/hp_up.png index 5c6baff0673..b9284383978 100644 Binary files a/public/images/items/hp_up.png and b/public/images/items/hp_up.png differ diff --git a/public/images/items/hyper_potion.png b/public/images/items/hyper_potion.png index 197aaac690c..140c74b638e 100644 Binary files a/public/images/items/hyper_potion.png and b/public/images/items/hyper_potion.png differ diff --git a/public/images/items/ice_memory.png b/public/images/items/ice_memory.png index 812548cf36c..e41e27c888b 100644 Binary files a/public/images/items/ice_memory.png and b/public/images/items/ice_memory.png differ diff --git a/public/images/items/ice_stone.png b/public/images/items/ice_stone.png index 945714b759c..6920d78ab37 100644 Binary files a/public/images/items/ice_stone.png and b/public/images/items/ice_stone.png differ diff --git a/public/images/items/ice_tera_shard.png b/public/images/items/ice_tera_shard.png index 5644d647c2b..946d5e2dd0c 100644 Binary files a/public/images/items/ice_tera_shard.png and b/public/images/items/ice_tera_shard.png differ diff --git a/public/images/items/icicle_plate.png b/public/images/items/icicle_plate.png index f9797d91f6a..dc4bb74c1d6 100644 Binary files a/public/images/items/icicle_plate.png and b/public/images/items/icicle_plate.png differ diff --git a/public/images/items/icy_reins_of_unity.png b/public/images/items/icy_reins_of_unity.png index b7af48d6a81..1b7d9c6399d 100644 Binary files a/public/images/items/icy_reins_of_unity.png and b/public/images/items/icy_reins_of_unity.png differ diff --git a/public/images/items/insect_plate.png b/public/images/items/insect_plate.png index 5bcc0eebaf5..23e8012d580 100644 Binary files a/public/images/items/insect_plate.png and b/public/images/items/insect_plate.png differ diff --git a/public/images/items/inverse.png b/public/images/items/inverse.png index 0d77ce77dde..059cb2f22ea 100644 Binary files a/public/images/items/inverse.png and b/public/images/items/inverse.png differ diff --git a/public/images/items/iron.png b/public/images/items/iron.png index 5cfff11b059..9c459388385 100644 Binary files a/public/images/items/iron.png and b/public/images/items/iron.png differ diff --git a/public/images/items/iron_plate.png b/public/images/items/iron_plate.png index 65d660e34eb..1a8365ac2af 100644 Binary files a/public/images/items/iron_plate.png and b/public/images/items/iron_plate.png differ diff --git a/public/images/items/kangaskhanite.png b/public/images/items/kangaskhanite.png index 3d65d2cc5ca..8e27c75332c 100644 Binary files a/public/images/items/kangaskhanite.png and b/public/images/items/kangaskhanite.png differ diff --git a/public/images/items/kings_rock.png b/public/images/items/kings_rock.png index bfda9d559d3..52dd6d04938 100644 Binary files a/public/images/items/kings_rock.png and b/public/images/items/kings_rock.png differ diff --git a/public/images/items/lansat_berry.png b/public/images/items/lansat_berry.png index 223bff3eb26..b9c244194b7 100644 Binary files a/public/images/items/lansat_berry.png and b/public/images/items/lansat_berry.png differ diff --git a/public/images/items/latiasite.png b/public/images/items/latiasite.png index 486a542576f..055e74d50bb 100644 Binary files a/public/images/items/latiasite.png and b/public/images/items/latiasite.png differ diff --git a/public/images/items/latiosite.png b/public/images/items/latiosite.png index 69708835c7b..60fdf81f708 100644 Binary files a/public/images/items/latiosite.png and b/public/images/items/latiosite.png differ diff --git a/public/images/items/leaders_crest.png b/public/images/items/leaders_crest.png index 86b71f1eb6d..3f9ddd4b89a 100644 Binary files a/public/images/items/leaders_crest.png and b/public/images/items/leaders_crest.png differ diff --git a/public/images/items/leaf_stone.png b/public/images/items/leaf_stone.png index dc68e916bcf..e4c85f2b0ba 100644 Binary files a/public/images/items/leaf_stone.png and b/public/images/items/leaf_stone.png differ diff --git a/public/images/items/leek.png b/public/images/items/leek.png index 1cb136aa78c..528392264c7 100644 Binary files a/public/images/items/leek.png and b/public/images/items/leek.png differ diff --git a/public/images/items/leftovers.png b/public/images/items/leftovers.png index 4732d149b64..c06eaf073d9 100644 Binary files a/public/images/items/leftovers.png and b/public/images/items/leftovers.png differ diff --git a/public/images/items/legend_plate.png b/public/images/items/legend_plate.png index e96f12b45f5..2304d587346 100644 Binary files a/public/images/items/legend_plate.png and b/public/images/items/legend_plate.png differ diff --git a/public/images/items/leppa_berry.png b/public/images/items/leppa_berry.png index 7a0f13b5199..611acba6a1a 100644 Binary files a/public/images/items/leppa_berry.png and b/public/images/items/leppa_berry.png differ diff --git a/public/images/items/liechi_berry.png b/public/images/items/liechi_berry.png index 192d8f001ef..8ce788a36aa 100644 Binary files a/public/images/items/liechi_berry.png and b/public/images/items/liechi_berry.png differ diff --git a/public/images/items/light_ball.png b/public/images/items/light_ball.png index 7748f735d37..a5fe2859e63 100644 Binary files a/public/images/items/light_ball.png and b/public/images/items/light_ball.png differ diff --git a/public/images/items/light_stone.png b/public/images/items/light_stone.png index 97258cf3970..f9f40130b48 100644 Binary files a/public/images/items/light_stone.png and b/public/images/items/light_stone.png differ diff --git a/public/images/items/linking_cord.png b/public/images/items/linking_cord.png index 4cde9da3f14..414378222f7 100644 Binary files a/public/images/items/linking_cord.png and b/public/images/items/linking_cord.png differ diff --git a/public/images/items/lock_capsule.png b/public/images/items/lock_capsule.png index 25d0cc14cff..be5a5e02c99 100644 Binary files a/public/images/items/lock_capsule.png and b/public/images/items/lock_capsule.png differ diff --git a/public/images/items/lopunnite.png b/public/images/items/lopunnite.png index bd67cf159ed..7f9364e3755 100644 Binary files a/public/images/items/lopunnite.png and b/public/images/items/lopunnite.png differ diff --git a/public/images/items/lucarionite.png b/public/images/items/lucarionite.png index b97161df68c..b964cb0b039 100644 Binary files a/public/images/items/lucarionite.png and b/public/images/items/lucarionite.png differ diff --git a/public/images/items/lucky_egg.png b/public/images/items/lucky_egg.png index fa9a1e4b390..8f99d3f37d0 100644 Binary files a/public/images/items/lucky_egg.png and b/public/images/items/lucky_egg.png differ diff --git a/public/images/items/lucky_punch.png b/public/images/items/lucky_punch.png index 97887631d9a..c70c084e3bc 100644 Binary files a/public/images/items/lucky_punch.png and b/public/images/items/lucky_punch.png differ diff --git a/public/images/items/lucky_punch_great.png b/public/images/items/lucky_punch_great.png index 77c77daf535..2b2c60d6f3a 100644 Binary files a/public/images/items/lucky_punch_great.png and b/public/images/items/lucky_punch_great.png differ diff --git a/public/images/items/lucky_punch_master.png b/public/images/items/lucky_punch_master.png index 89fc1b67cf4..97d5d22aea0 100644 Binary files a/public/images/items/lucky_punch_master.png and b/public/images/items/lucky_punch_master.png differ diff --git a/public/images/items/lucky_punch_ultra.png b/public/images/items/lucky_punch_ultra.png index a95c23666bb..fbe09c35cd1 100644 Binary files a/public/images/items/lucky_punch_ultra.png and b/public/images/items/lucky_punch_ultra.png differ diff --git a/public/images/items/lum_berry.png b/public/images/items/lum_berry.png index d19c4fba583..97d3167eec4 100644 Binary files a/public/images/items/lum_berry.png and b/public/images/items/lum_berry.png differ diff --git a/public/images/items/lure.png b/public/images/items/lure.png index 1c3ea6cc8e8..883181158e5 100644 Binary files a/public/images/items/lure.png and b/public/images/items/lure.png differ diff --git a/public/images/items/lustrous_globe.png b/public/images/items/lustrous_globe.png index 2a854db742b..0aee9500272 100644 Binary files a/public/images/items/lustrous_globe.png and b/public/images/items/lustrous_globe.png differ diff --git a/public/images/items/macho_brace.png b/public/images/items/macho_brace.png index 760139cf7f8..b5063258fc2 100644 Binary files a/public/images/items/macho_brace.png and b/public/images/items/macho_brace.png differ diff --git a/public/images/items/magmarizer.png b/public/images/items/magmarizer.png index 4f4d5f45851..785816b6ad5 100644 Binary files a/public/images/items/magmarizer.png and b/public/images/items/magmarizer.png differ diff --git a/public/images/items/magnet.png b/public/images/items/magnet.png index 9ce8b686e9f..f8668e72abd 100644 Binary files a/public/images/items/magnet.png and b/public/images/items/magnet.png differ diff --git a/public/images/items/malicious_armor.png b/public/images/items/malicious_armor.png index b7bfb55195b..62c93b3b817 100644 Binary files a/public/images/items/malicious_armor.png and b/public/images/items/malicious_armor.png differ diff --git a/public/images/items/manectite.png b/public/images/items/manectite.png index c9df61669bc..ca82d2cee9f 100644 Binary files a/public/images/items/manectite.png and b/public/images/items/manectite.png differ diff --git a/public/images/items/map.png b/public/images/items/map.png index dc2fc6b95d8..9fda9174744 100644 Binary files a/public/images/items/map.png and b/public/images/items/map.png differ diff --git a/public/images/items/master_ribbon.png b/public/images/items/master_ribbon.png index 0443215c1f9..a8a181a52a0 100644 Binary files a/public/images/items/master_ribbon.png and b/public/images/items/master_ribbon.png differ diff --git a/public/images/items/masterpiece_teacup.png b/public/images/items/masterpiece_teacup.png index ec2455c0763..71d8e5a8cf8 100644 Binary files a/public/images/items/masterpiece_teacup.png and b/public/images/items/masterpiece_teacup.png differ diff --git a/public/images/items/mawilite.png b/public/images/items/mawilite.png index 60ea4017f56..da9f74a43be 100644 Binary files a/public/images/items/mawilite.png and b/public/images/items/mawilite.png differ diff --git a/public/images/items/max_elixir.png b/public/images/items/max_elixir.png index 1f528c2bb61..7afaf6581ea 100644 Binary files a/public/images/items/max_elixir.png and b/public/images/items/max_elixir.png differ diff --git a/public/images/items/max_ether.png b/public/images/items/max_ether.png index 8cee7152a86..451e7fa302f 100644 Binary files a/public/images/items/max_ether.png and b/public/images/items/max_ether.png differ diff --git a/public/images/items/max_lure.png b/public/images/items/max_lure.png index 812229d140a..dfc86583dd3 100644 Binary files a/public/images/items/max_lure.png and b/public/images/items/max_lure.png differ diff --git a/public/images/items/max_mushrooms.png b/public/images/items/max_mushrooms.png index 8d5c015c963..10ff9f5a72f 100644 Binary files a/public/images/items/max_mushrooms.png and b/public/images/items/max_mushrooms.png differ diff --git a/public/images/items/max_potion.png b/public/images/items/max_potion.png index d8fadc9cb93..94f3828e7eb 100644 Binary files a/public/images/items/max_potion.png and b/public/images/items/max_potion.png differ diff --git a/public/images/items/max_repel.png b/public/images/items/max_repel.png index 4d88ae6d0b5..6e0621f5f0f 100644 Binary files a/public/images/items/max_repel.png and b/public/images/items/max_repel.png differ diff --git a/public/images/items/max_revive.png b/public/images/items/max_revive.png index 609fd17c3b9..e440b940dec 100644 Binary files a/public/images/items/max_revive.png and b/public/images/items/max_revive.png differ diff --git a/public/images/items/mb.png b/public/images/items/mb.png index d80b3b89108..2ba762c5853 100644 Binary files a/public/images/items/mb.png and b/public/images/items/mb.png differ diff --git a/public/images/items/meadow_plate.png b/public/images/items/meadow_plate.png index e2b991776ba..f3358e3df96 100644 Binary files a/public/images/items/meadow_plate.png and b/public/images/items/meadow_plate.png differ diff --git a/public/images/items/medichamite.png b/public/images/items/medichamite.png index 42f22ed6cd6..f99b8af2edd 100644 Binary files a/public/images/items/medichamite.png and b/public/images/items/medichamite.png differ diff --git a/public/images/items/mega_bracelet.png b/public/images/items/mega_bracelet.png index 5e8ff02be8c..674c59a8f5a 100644 Binary files a/public/images/items/mega_bracelet.png and b/public/images/items/mega_bracelet.png differ diff --git a/public/images/items/metagrossite.png b/public/images/items/metagrossite.png index c245368758d..1ec22fb09db 100644 Binary files a/public/images/items/metagrossite.png and b/public/images/items/metagrossite.png differ diff --git a/public/images/items/metal_alloy.png b/public/images/items/metal_alloy.png index 41f22df4254..33b0f556d70 100644 Binary files a/public/images/items/metal_alloy.png and b/public/images/items/metal_alloy.png differ diff --git a/public/images/items/metal_coat.png b/public/images/items/metal_coat.png index 88f055c3fb3..07344dfe724 100644 Binary files a/public/images/items/metal_coat.png and b/public/images/items/metal_coat.png differ diff --git a/public/images/items/metal_powder.png b/public/images/items/metal_powder.png index 64af0b144fe..a56b6aa1d70 100644 Binary files a/public/images/items/metal_powder.png and b/public/images/items/metal_powder.png differ diff --git a/public/images/items/metronome.png b/public/images/items/metronome.png index 837d75b4c03..2ae5ed6d1fa 100644 Binary files a/public/images/items/metronome.png and b/public/images/items/metronome.png differ diff --git a/public/images/items/mewtwonite_x.png b/public/images/items/mewtwonite_x.png index 507d17e54e8..0639c28e33e 100644 Binary files a/public/images/items/mewtwonite_x.png and b/public/images/items/mewtwonite_x.png differ diff --git a/public/images/items/mewtwonite_y.png b/public/images/items/mewtwonite_y.png index ff0c53396d2..f78e7d7e1fc 100644 Binary files a/public/images/items/mewtwonite_y.png and b/public/images/items/mewtwonite_y.png differ diff --git a/public/images/items/mind_plate.png b/public/images/items/mind_plate.png index ff6fcc4f3af..e8964d64816 100644 Binary files a/public/images/items/mind_plate.png and b/public/images/items/mind_plate.png differ diff --git a/public/images/items/mini_black_hole.png b/public/images/items/mini_black_hole.png index 6edcaad16e3..16589cad227 100644 Binary files a/public/images/items/mini_black_hole.png and b/public/images/items/mini_black_hole.png differ diff --git a/public/images/items/mint_atk.png b/public/images/items/mint_atk.png index 88315c0cd07..f42e0cccfc0 100644 Binary files a/public/images/items/mint_atk.png and b/public/images/items/mint_atk.png differ diff --git a/public/images/items/mint_def.png b/public/images/items/mint_def.png index 584c610ffd7..5e45103f199 100644 Binary files a/public/images/items/mint_def.png and b/public/images/items/mint_def.png differ diff --git a/public/images/items/mint_neutral.png b/public/images/items/mint_neutral.png index f5287539e78..ccf97113000 100644 Binary files a/public/images/items/mint_neutral.png and b/public/images/items/mint_neutral.png differ diff --git a/public/images/items/mint_spatk.png b/public/images/items/mint_spatk.png index 90a57c5608b..94b60ed1597 100644 Binary files a/public/images/items/mint_spatk.png and b/public/images/items/mint_spatk.png differ diff --git a/public/images/items/mint_spd.png b/public/images/items/mint_spd.png index 5420b0997b3..f3f1a1308a9 100644 Binary files a/public/images/items/mint_spd.png and b/public/images/items/mint_spd.png differ diff --git a/public/images/items/mint_spdef.png b/public/images/items/mint_spdef.png index 54a1b4ed21d..4b378953644 100644 Binary files a/public/images/items/mint_spdef.png and b/public/images/items/mint_spdef.png differ diff --git a/public/images/items/miracle_seed.png b/public/images/items/miracle_seed.png index 8be7ba72d33..fac8d792c85 100644 Binary files a/public/images/items/miracle_seed.png and b/public/images/items/miracle_seed.png differ diff --git a/public/images/items/moon_flute.png b/public/images/items/moon_flute.png index 5d3c0caf5f2..e22ea1e0c84 100644 Binary files a/public/images/items/moon_flute.png and b/public/images/items/moon_flute.png differ diff --git a/public/images/items/moon_stone.png b/public/images/items/moon_stone.png index f002fb18073..1f1644946f8 100644 Binary files a/public/images/items/moon_stone.png and b/public/images/items/moon_stone.png differ diff --git a/public/images/items/muscle_band.png b/public/images/items/muscle_band.png index 0be9d010767..0038fc4d65d 100644 Binary files a/public/images/items/muscle_band.png and b/public/images/items/muscle_band.png differ diff --git a/public/images/items/mystery_egg.png b/public/images/items/mystery_egg.png index ac631cec7c8..1630e9c69f3 100644 Binary files a/public/images/items/mystery_egg.png and b/public/images/items/mystery_egg.png differ diff --git a/public/images/items/mystic_ticket.png b/public/images/items/mystic_ticket.png index cab03fa5470..8a1e4ccd937 100644 Binary files a/public/images/items/mystic_ticket.png and b/public/images/items/mystic_ticket.png differ diff --git a/public/images/items/mystic_water.png b/public/images/items/mystic_water.png index 2128895b385..9ab0c0544dc 100644 Binary files a/public/images/items/mystic_water.png and b/public/images/items/mystic_water.png differ diff --git a/public/images/items/mystical_rock.png b/public/images/items/mystical_rock.png index 81a397e4c2d..39c5da781dd 100644 Binary files a/public/images/items/mystical_rock.png and b/public/images/items/mystical_rock.png differ diff --git a/public/images/items/n_lunarizer.png b/public/images/items/n_lunarizer.png index a03b48ad387..fc67271346c 100644 Binary files a/public/images/items/n_lunarizer.png and b/public/images/items/n_lunarizer.png differ diff --git a/public/images/items/n_solarizer.png b/public/images/items/n_solarizer.png index 69153fd38dd..787d2b49bc4 100644 Binary files a/public/images/items/n_solarizer.png and b/public/images/items/n_solarizer.png differ diff --git a/public/images/items/never_melt_ice.png b/public/images/items/never_melt_ice.png index 35b1ada771d..58bbb01788a 100644 Binary files a/public/images/items/never_melt_ice.png and b/public/images/items/never_melt_ice.png differ diff --git a/public/images/items/normal_memory.png b/public/images/items/normal_memory.png index e1ff89a9993..e7aa8336820 100644 Binary files a/public/images/items/normal_memory.png and b/public/images/items/normal_memory.png differ diff --git a/public/images/items/normal_tera_shard.png b/public/images/items/normal_tera_shard.png index 1c7a41ea0ec..b63640ca94a 100644 Binary files a/public/images/items/normal_tera_shard.png and b/public/images/items/normal_tera_shard.png differ diff --git a/public/images/items/nugget.png b/public/images/items/nugget.png index 0340f5d4000..ce70209b164 100644 Binary files a/public/images/items/nugget.png and b/public/images/items/nugget.png differ diff --git a/public/images/items/old_gateau.png b/public/images/items/old_gateau.png index dd5f0e05a94..52aaf5a3b73 100644 Binary files a/public/images/items/old_gateau.png and b/public/images/items/old_gateau.png differ diff --git a/public/images/items/oval_charm.png b/public/images/items/oval_charm.png index fcdb914ec22..5c47c169157 100644 Binary files a/public/images/items/oval_charm.png and b/public/images/items/oval_charm.png differ diff --git a/public/images/items/oval_stone.png b/public/images/items/oval_stone.png index d58ffde18e3..6437a6dd821 100644 Binary files a/public/images/items/oval_stone.png and b/public/images/items/oval_stone.png differ diff --git a/public/images/items/pair_of_tickets.png b/public/images/items/pair_of_tickets.png index b06c9a8727f..68274208196 100644 Binary files a/public/images/items/pair_of_tickets.png and b/public/images/items/pair_of_tickets.png differ diff --git a/public/images/items/pb.png b/public/images/items/pb.png index 37c37edb8c1..d54f6b02b5b 100644 Binary files a/public/images/items/pb.png and b/public/images/items/pb.png differ diff --git a/public/images/items/pb_gold.png b/public/images/items/pb_gold.png index 6dff6824158..86842760431 100644 Binary files a/public/images/items/pb_gold.png and b/public/images/items/pb_gold.png differ diff --git a/public/images/items/pb_silver.png b/public/images/items/pb_silver.png index 9528517a77a..674cf646fd3 100644 Binary files a/public/images/items/pb_silver.png and b/public/images/items/pb_silver.png differ diff --git a/public/images/items/peat_block.png b/public/images/items/peat_block.png index f3c65449b87..357a9496aa8 100644 Binary files a/public/images/items/peat_block.png and b/public/images/items/peat_block.png differ diff --git a/public/images/items/petaya_berry.png b/public/images/items/petaya_berry.png index 0fba884c2e2..434165e6e20 100644 Binary files a/public/images/items/petaya_berry.png and b/public/images/items/petaya_berry.png differ diff --git a/public/images/items/pidgeotite.png b/public/images/items/pidgeotite.png index 52cb40852d6..cd7c1d2d01c 100644 Binary files a/public/images/items/pidgeotite.png and b/public/images/items/pidgeotite.png differ diff --git a/public/images/items/pinsirite.png b/public/images/items/pinsirite.png index 88ecc8e9ea9..5a63465f882 100644 Binary files a/public/images/items/pinsirite.png and b/public/images/items/pinsirite.png differ diff --git a/public/images/items/pixie_plate.png b/public/images/items/pixie_plate.png index e123ae6a49a..7d29f030a76 100644 Binary files a/public/images/items/pixie_plate.png and b/public/images/items/pixie_plate.png differ diff --git a/public/images/items/poison_barb.png b/public/images/items/poison_barb.png index 3f9d714b08c..b85f7d3b777 100644 Binary files a/public/images/items/poison_barb.png and b/public/images/items/poison_barb.png differ diff --git a/public/images/items/poison_memory.png b/public/images/items/poison_memory.png index 6c2b0aea77b..4de0993adbf 100644 Binary files a/public/images/items/poison_memory.png and b/public/images/items/poison_memory.png differ diff --git a/public/images/items/poison_tera_shard.png b/public/images/items/poison_tera_shard.png index 4f21d158a41..bd213f1a91e 100644 Binary files a/public/images/items/poison_tera_shard.png and b/public/images/items/poison_tera_shard.png differ diff --git a/public/images/items/potion.png b/public/images/items/potion.png index f69c3210f03..e24a483970e 100644 Binary files a/public/images/items/potion.png and b/public/images/items/potion.png differ diff --git a/public/images/items/power_herb.png b/public/images/items/power_herb.png index ba156c62122..477e32e3271 100644 Binary files a/public/images/items/power_herb.png and b/public/images/items/power_herb.png differ diff --git a/public/images/items/pp_max.png b/public/images/items/pp_max.png index 787641e26ac..9c449b2e564 100644 Binary files a/public/images/items/pp_max.png and b/public/images/items/pp_max.png differ diff --git a/public/images/items/pp_up.png b/public/images/items/pp_up.png index 463c3a0578d..16f1c7558fd 100644 Binary files a/public/images/items/pp_up.png and b/public/images/items/pp_up.png differ diff --git a/public/images/items/prism_scale.png b/public/images/items/prism_scale.png index 2436e96bf73..807031bf268 100644 Binary files a/public/images/items/prism_scale.png and b/public/images/items/prism_scale.png differ diff --git a/public/images/items/prison_bottle.png b/public/images/items/prison_bottle.png index 06217988364..e8f24568da3 100644 Binary files a/public/images/items/prison_bottle.png and b/public/images/items/prison_bottle.png differ diff --git a/public/images/items/protector.png b/public/images/items/protector.png index 8f65be09b2f..028fd793988 100644 Binary files a/public/images/items/protector.png and b/public/images/items/protector.png differ diff --git a/public/images/items/protein.png b/public/images/items/protein.png index 54df13c6753..6165202f37d 100644 Binary files a/public/images/items/protein.png and b/public/images/items/protein.png differ diff --git a/public/images/items/psychic_memory.png b/public/images/items/psychic_memory.png index 21d62daa483..5ac912cfb10 100644 Binary files a/public/images/items/psychic_memory.png and b/public/images/items/psychic_memory.png differ diff --git a/public/images/items/psychic_tera_shard.png b/public/images/items/psychic_tera_shard.png index f4b1cf7b259..cb575d7bb69 100644 Binary files a/public/images/items/psychic_tera_shard.png and b/public/images/items/psychic_tera_shard.png differ diff --git a/public/images/items/quick_claw.png b/public/images/items/quick_claw.png index ff4f76d0576..94999fa3c09 100644 Binary files a/public/images/items/quick_claw.png and b/public/images/items/quick_claw.png differ diff --git a/public/images/items/quick_powder.png b/public/images/items/quick_powder.png index 58a8a1187a9..731d6fce025 100644 Binary files a/public/images/items/quick_powder.png and b/public/images/items/quick_powder.png differ diff --git a/public/images/items/rare_candy.png b/public/images/items/rare_candy.png index a860a116905..cd27e2002ba 100644 Binary files a/public/images/items/rare_candy.png and b/public/images/items/rare_candy.png differ diff --git a/public/images/items/rarer_candy.png b/public/images/items/rarer_candy.png index 4424caa659a..92af7fe43bf 100644 Binary files a/public/images/items/rarer_candy.png and b/public/images/items/rarer_candy.png differ diff --git a/public/images/items/rayquazite.png b/public/images/items/rayquazite.png index b39957b857d..6617924c434 100644 Binary files a/public/images/items/rayquazite.png and b/public/images/items/rayquazite.png differ diff --git a/public/images/items/razor_claw.png b/public/images/items/razor_claw.png index 0ba506e8706..48fc80d7f00 100644 Binary files a/public/images/items/razor_claw.png and b/public/images/items/razor_claw.png differ diff --git a/public/images/items/razor_fang.png b/public/images/items/razor_fang.png index 75306db5c4c..a55dbb3ee13 100644 Binary files a/public/images/items/razor_fang.png and b/public/images/items/razor_fang.png differ diff --git a/public/images/items/rb.png b/public/images/items/rb.png index 020f2ff878b..2dcccceb57e 100644 Binary files a/public/images/items/rb.png and b/public/images/items/rb.png differ diff --git a/public/images/items/reaper_cloth.png b/public/images/items/reaper_cloth.png index 9caf7665e95..8bb722c241d 100644 Binary files a/public/images/items/reaper_cloth.png and b/public/images/items/reaper_cloth.png differ diff --git a/public/images/items/red_orb.png b/public/images/items/red_orb.png index cee83740ca5..8e9a3bd4f74 100644 Binary files a/public/images/items/red_orb.png and b/public/images/items/red_orb.png differ diff --git a/public/images/items/relic_band.png b/public/images/items/relic_band.png index adbd73bc46b..7f783d26647 100644 Binary files a/public/images/items/relic_band.png and b/public/images/items/relic_band.png differ diff --git a/public/images/items/relic_crown.png b/public/images/items/relic_crown.png index de090041c1c..1f3c9c3a7df 100644 Binary files a/public/images/items/relic_crown.png and b/public/images/items/relic_crown.png differ diff --git a/public/images/items/relic_gold.png b/public/images/items/relic_gold.png index af5b1797938..650c610d4e2 100644 Binary files a/public/images/items/relic_gold.png and b/public/images/items/relic_gold.png differ diff --git a/public/images/items/repel.png b/public/images/items/repel.png index 80c7738e9ff..12c0111b794 100644 Binary files a/public/images/items/repel.png and b/public/images/items/repel.png differ diff --git a/public/images/items/reveal_glass.png b/public/images/items/reveal_glass.png index 469d20a2752..2f9d45a8932 100644 Binary files a/public/images/items/reveal_glass.png and b/public/images/items/reveal_glass.png differ diff --git a/public/images/items/revive.png b/public/images/items/revive.png index e84659867d8..2e2185088d5 100644 Binary files a/public/images/items/revive.png and b/public/images/items/revive.png differ diff --git a/public/images/items/reviver_seed.png b/public/images/items/reviver_seed.png index 10bc5c32451..2ba0919ea5a 100644 Binary files a/public/images/items/reviver_seed.png and b/public/images/items/reviver_seed.png differ diff --git a/public/images/items/ribbon_gen1.png b/public/images/items/ribbon_gen1.png index 1d731cf2e98..cb992589d36 100644 Binary files a/public/images/items/ribbon_gen1.png and b/public/images/items/ribbon_gen1.png differ diff --git a/public/images/items/ribbon_gen2.png b/public/images/items/ribbon_gen2.png index 2ff54112105..26268987fbe 100644 Binary files a/public/images/items/ribbon_gen2.png and b/public/images/items/ribbon_gen2.png differ diff --git a/public/images/items/ribbon_gen3.png b/public/images/items/ribbon_gen3.png index 14a5eb09f7d..501885bc952 100644 Binary files a/public/images/items/ribbon_gen3.png and b/public/images/items/ribbon_gen3.png differ diff --git a/public/images/items/ribbon_gen4.png b/public/images/items/ribbon_gen4.png index c482ac1d04a..ad4cb139a7e 100644 Binary files a/public/images/items/ribbon_gen4.png and b/public/images/items/ribbon_gen4.png differ diff --git a/public/images/items/ribbon_gen5.png b/public/images/items/ribbon_gen5.png index 52560cde636..a4f99ffb7f2 100644 Binary files a/public/images/items/ribbon_gen5.png and b/public/images/items/ribbon_gen5.png differ diff --git a/public/images/items/ribbon_gen6.png b/public/images/items/ribbon_gen6.png index 3dd04927acd..4c9281fa8a7 100644 Binary files a/public/images/items/ribbon_gen6.png and b/public/images/items/ribbon_gen6.png differ diff --git a/public/images/items/ribbon_gen7.png b/public/images/items/ribbon_gen7.png index 225b40da419..5d088392bd5 100644 Binary files a/public/images/items/ribbon_gen7.png and b/public/images/items/ribbon_gen7.png differ diff --git a/public/images/items/ribbon_gen8.png b/public/images/items/ribbon_gen8.png index 32aaa803699..537d64605b3 100644 Binary files a/public/images/items/ribbon_gen8.png and b/public/images/items/ribbon_gen8.png differ diff --git a/public/images/items/ribbon_gen9.png b/public/images/items/ribbon_gen9.png index ad489005e23..a702b6241c3 100644 Binary files a/public/images/items/ribbon_gen9.png and b/public/images/items/ribbon_gen9.png differ diff --git a/public/images/items/rock_memory.png b/public/images/items/rock_memory.png index cfa71c851c0..963ea849d8c 100644 Binary files a/public/images/items/rock_memory.png and b/public/images/items/rock_memory.png differ diff --git a/public/images/items/rock_tera_shard.png b/public/images/items/rock_tera_shard.png index a07ca7955a4..279722e455b 100644 Binary files a/public/images/items/rock_tera_shard.png and b/public/images/items/rock_tera_shard.png differ diff --git a/public/images/items/rogue_ribbon.png b/public/images/items/rogue_ribbon.png index c3cfdcd85f3..6864b6a1fb7 100644 Binary files a/public/images/items/rogue_ribbon.png and b/public/images/items/rogue_ribbon.png differ diff --git a/public/images/items/rusted_shield.png b/public/images/items/rusted_shield.png index 3748f13dc4b..065309fc1b7 100644 Binary files a/public/images/items/rusted_shield.png and b/public/images/items/rusted_shield.png differ diff --git a/public/images/items/rusted_sword.png b/public/images/items/rusted_sword.png index 249233374e0..ad7123dc56d 100644 Binary files a/public/images/items/rusted_sword.png and b/public/images/items/rusted_sword.png differ diff --git a/public/images/items/sablenite.png b/public/images/items/sablenite.png index 48eac2d5875..771480aa918 100644 Binary files a/public/images/items/sablenite.png and b/public/images/items/sablenite.png differ diff --git a/public/images/items/sachet.png b/public/images/items/sachet.png index 6d91fa210fc..3d9d6e6c7c7 100644 Binary files a/public/images/items/sachet.png and b/public/images/items/sachet.png differ diff --git a/public/images/items/sacred_ash.png b/public/images/items/sacred_ash.png index 4fab9dc0dc7..741afe59ef2 100644 Binary files a/public/images/items/sacred_ash.png and b/public/images/items/sacred_ash.png differ diff --git a/public/images/items/salac_berry.png b/public/images/items/salac_berry.png index 846dbb4f160..a01a824b4ba 100644 Binary files a/public/images/items/salac_berry.png and b/public/images/items/salac_berry.png differ diff --git a/public/images/items/salamencite.png b/public/images/items/salamencite.png index f175f39d351..f54a8d3dae9 100644 Binary files a/public/images/items/salamencite.png and b/public/images/items/salamencite.png differ diff --git a/public/images/items/scanner.png b/public/images/items/scanner.png index a291d3f43f8..f56f696638c 100644 Binary files a/public/images/items/scanner.png and b/public/images/items/scanner.png differ diff --git a/public/images/items/sceptilite.png b/public/images/items/sceptilite.png index ff81c4a55fe..4b255b1ff6d 100644 Binary files a/public/images/items/sceptilite.png and b/public/images/items/sceptilite.png differ diff --git a/public/images/items/scizorite.png b/public/images/items/scizorite.png index 8ffca143835..9d357bbd0b6 100644 Binary files a/public/images/items/scizorite.png and b/public/images/items/scizorite.png differ diff --git a/public/images/items/scope_lens.png b/public/images/items/scope_lens.png index d3b1f354313..2cf77cbde77 100644 Binary files a/public/images/items/scope_lens.png and b/public/images/items/scope_lens.png differ diff --git a/public/images/items/scroll_of_darkness.png b/public/images/items/scroll_of_darkness.png index ff6a6065e40..72044c62d8b 100644 Binary files a/public/images/items/scroll_of_darkness.png and b/public/images/items/scroll_of_darkness.png differ diff --git a/public/images/items/scroll_of_waters.png b/public/images/items/scroll_of_waters.png index e4a0cb725eb..9195a26abe1 100644 Binary files a/public/images/items/scroll_of_waters.png and b/public/images/items/scroll_of_waters.png differ diff --git a/public/images/items/shadow_reins_of_unity.png b/public/images/items/shadow_reins_of_unity.png index 85cbc446851..668033ff166 100644 Binary files a/public/images/items/shadow_reins_of_unity.png and b/public/images/items/shadow_reins_of_unity.png differ diff --git a/public/images/items/sharp_beak.png b/public/images/items/sharp_beak.png index f22019e658b..a19e77d2e6e 100644 Binary files a/public/images/items/sharp_beak.png and b/public/images/items/sharp_beak.png differ diff --git a/public/images/items/sharp_meteorite.png b/public/images/items/sharp_meteorite.png index 61a139fab05..97f89e5893b 100644 Binary files a/public/images/items/sharp_meteorite.png and b/public/images/items/sharp_meteorite.png differ diff --git a/public/images/items/sharpedonite.png b/public/images/items/sharpedonite.png index b3eabd5650f..c409b9afef7 100644 Binary files a/public/images/items/sharpedonite.png and b/public/images/items/sharpedonite.png differ diff --git a/public/images/items/shed_shell.png b/public/images/items/shed_shell.png index 17981864897..855b9034e49 100644 Binary files a/public/images/items/shed_shell.png and b/public/images/items/shed_shell.png differ diff --git a/public/images/items/shell_bell.png b/public/images/items/shell_bell.png index 6367d134672..9a99aeebae6 100644 Binary files a/public/images/items/shell_bell.png and b/public/images/items/shell_bell.png differ diff --git a/public/images/items/shiny_charm.png b/public/images/items/shiny_charm.png index 9f692828d04..de2ca39bf5b 100644 Binary files a/public/images/items/shiny_charm.png and b/public/images/items/shiny_charm.png differ diff --git a/public/images/items/shiny_stone.png b/public/images/items/shiny_stone.png index d2fabe6ec8b..01919d39107 100644 Binary files a/public/images/items/shiny_stone.png and b/public/images/items/shiny_stone.png differ diff --git a/public/images/items/shock_drive.png b/public/images/items/shock_drive.png index 592b0085a8f..6bf2602386f 100644 Binary files a/public/images/items/shock_drive.png and b/public/images/items/shock_drive.png differ diff --git a/public/images/items/silk_scarf.png b/public/images/items/silk_scarf.png index 83f056c8b41..993e9841dd7 100644 Binary files a/public/images/items/silk_scarf.png and b/public/images/items/silk_scarf.png differ diff --git a/public/images/items/silver_powder.png b/public/images/items/silver_powder.png index eb717fc6776..fee080a8612 100644 Binary files a/public/images/items/silver_powder.png and b/public/images/items/silver_powder.png differ diff --git a/public/images/items/sitrus_berry.png b/public/images/items/sitrus_berry.png index 703657ad8dd..d26f506e403 100644 Binary files a/public/images/items/sitrus_berry.png and b/public/images/items/sitrus_berry.png differ diff --git a/public/images/items/sky_plate.png b/public/images/items/sky_plate.png index 293bb8f5dc2..be463d5dbdf 100644 Binary files a/public/images/items/sky_plate.png and b/public/images/items/sky_plate.png differ diff --git a/public/images/items/slowbronite.png b/public/images/items/slowbronite.png index 3dc21ffb550..6e0ff2ad294 100644 Binary files a/public/images/items/slowbronite.png and b/public/images/items/slowbronite.png differ diff --git a/public/images/items/smooth_meteorite.png b/public/images/items/smooth_meteorite.png index 059e8e91a30..9e0361e8be2 100644 Binary files a/public/images/items/smooth_meteorite.png and b/public/images/items/smooth_meteorite.png differ diff --git a/public/images/items/soft_sand.png b/public/images/items/soft_sand.png index feda8cd3858..380be0052a5 100644 Binary files a/public/images/items/soft_sand.png and b/public/images/items/soft_sand.png differ diff --git a/public/images/items/soothe_bell.png b/public/images/items/soothe_bell.png index fbceb808c56..d21da03f663 100644 Binary files a/public/images/items/soothe_bell.png and b/public/images/items/soothe_bell.png differ diff --git a/public/images/items/soul_dew.png b/public/images/items/soul_dew.png index 56b9655714b..8458cb04cfd 100644 Binary files a/public/images/items/soul_dew.png and b/public/images/items/soul_dew.png differ diff --git a/public/images/items/spell_tag.png b/public/images/items/spell_tag.png index f9270c6e0a6..0dc730371d5 100644 Binary files a/public/images/items/spell_tag.png and b/public/images/items/spell_tag.png differ diff --git a/public/images/items/splash_plate.png b/public/images/items/splash_plate.png index d86ae5eab57..57a310c7d4f 100644 Binary files a/public/images/items/splash_plate.png and b/public/images/items/splash_plate.png differ diff --git a/public/images/items/spooky_plate.png b/public/images/items/spooky_plate.png index d7df7d25e32..0de26ac30ea 100644 Binary files a/public/images/items/spooky_plate.png and b/public/images/items/spooky_plate.png differ diff --git a/public/images/items/starf_berry.png b/public/images/items/starf_berry.png index cbf423e8343..6c1fb5fd0d4 100644 Binary files a/public/images/items/starf_berry.png and b/public/images/items/starf_berry.png differ diff --git a/public/images/items/steel_memory.png b/public/images/items/steel_memory.png index 8c45bc8b640..764ba8d6022 100644 Binary files a/public/images/items/steel_memory.png and b/public/images/items/steel_memory.png differ diff --git a/public/images/items/steel_tera_shard.png b/public/images/items/steel_tera_shard.png index c93f8c52f60..1cd37754648 100644 Binary files a/public/images/items/steel_tera_shard.png and b/public/images/items/steel_tera_shard.png differ diff --git a/public/images/items/steelixite.png b/public/images/items/steelixite.png index 429c668e656..92a73b854b7 100644 Binary files a/public/images/items/steelixite.png and b/public/images/items/steelixite.png differ diff --git a/public/images/items/stellar_tera_shard.png b/public/images/items/stellar_tera_shard.png index 1d5982f5b94..7d0644646a1 100644 Binary files a/public/images/items/stellar_tera_shard.png and b/public/images/items/stellar_tera_shard.png differ diff --git a/public/images/items/stone_plate.png b/public/images/items/stone_plate.png index dfc3a0cd132..782874f7ca7 100644 Binary files a/public/images/items/stone_plate.png and b/public/images/items/stone_plate.png differ diff --git a/public/images/items/strange_ball.png b/public/images/items/strange_ball.png index 2ddce33d7ac..3c8c7d71aa4 100644 Binary files a/public/images/items/strange_ball.png and b/public/images/items/strange_ball.png differ diff --git a/public/images/items/strawberry_sweet.png b/public/images/items/strawberry_sweet.png index 5df6e1cd8be..0089247b6b9 100644 Binary files a/public/images/items/strawberry_sweet.png and b/public/images/items/strawberry_sweet.png differ diff --git a/public/images/items/sun_flute.png b/public/images/items/sun_flute.png index f81d35fde9c..a792d42244c 100644 Binary files a/public/images/items/sun_flute.png and b/public/images/items/sun_flute.png differ diff --git a/public/images/items/sun_stone.png b/public/images/items/sun_stone.png index 33a7e8f8387..cc26cdf4a63 100644 Binary files a/public/images/items/sun_stone.png and b/public/images/items/sun_stone.png differ diff --git a/public/images/items/super_exp_charm.png b/public/images/items/super_exp_charm.png index ccd73f558cc..fd12fcdbc34 100644 Binary files a/public/images/items/super_exp_charm.png and b/public/images/items/super_exp_charm.png differ diff --git a/public/images/items/super_lure.png b/public/images/items/super_lure.png index 9c2213cd964..56c9abe59d2 100644 Binary files a/public/images/items/super_lure.png and b/public/images/items/super_lure.png differ diff --git a/public/images/items/super_potion.png b/public/images/items/super_potion.png index 16205cb0fff..def35f4d363 100644 Binary files a/public/images/items/super_potion.png and b/public/images/items/super_potion.png differ diff --git a/public/images/items/super_repel.png b/public/images/items/super_repel.png index 628cdbc5c1d..a8a0394832c 100644 Binary files a/public/images/items/super_repel.png and b/public/images/items/super_repel.png differ diff --git a/public/images/items/swampertite.png b/public/images/items/swampertite.png index d4d6415f6f4..5b4b422e034 100644 Binary files a/public/images/items/swampertite.png and b/public/images/items/swampertite.png differ diff --git a/public/images/items/sweet_apple.png b/public/images/items/sweet_apple.png index cfdf79a9eac..de183d1c644 100644 Binary files a/public/images/items/sweet_apple.png and b/public/images/items/sweet_apple.png differ diff --git a/public/images/items/syrupy_apple.png b/public/images/items/syrupy_apple.png index 9c9d05e2e0a..e6bebc8f3c8 100644 Binary files a/public/images/items/syrupy_apple.png and b/public/images/items/syrupy_apple.png differ diff --git a/public/images/items/tart_apple.png b/public/images/items/tart_apple.png index ad9a1728bb5..67f90802382 100644 Binary files a/public/images/items/tart_apple.png and b/public/images/items/tart_apple.png differ diff --git a/public/images/items/tera_orb.png b/public/images/items/tera_orb.png index d8720e41669..52348dc95fc 100644 Binary files a/public/images/items/tera_orb.png and b/public/images/items/tera_orb.png differ diff --git a/public/images/items/thick_club.png b/public/images/items/thick_club.png index f15885f0190..193540ff0b1 100644 Binary files a/public/images/items/thick_club.png and b/public/images/items/thick_club.png differ diff --git a/public/images/items/thunder_stone.png b/public/images/items/thunder_stone.png index 9e87909516b..dc54772c294 100644 Binary files a/public/images/items/thunder_stone.png and b/public/images/items/thunder_stone.png differ diff --git a/public/images/items/tm_bug.png b/public/images/items/tm_bug.png index 229230198c4..191f6b93c82 100644 Binary files a/public/images/items/tm_bug.png and b/public/images/items/tm_bug.png differ diff --git a/public/images/items/tm_dark.png b/public/images/items/tm_dark.png index 6856b1d5444..f2aab224ff9 100644 Binary files a/public/images/items/tm_dark.png and b/public/images/items/tm_dark.png differ diff --git a/public/images/items/tm_dragon.png b/public/images/items/tm_dragon.png index 62405519132..bf31cf2565e 100644 Binary files a/public/images/items/tm_dragon.png and b/public/images/items/tm_dragon.png differ diff --git a/public/images/items/tm_electric.png b/public/images/items/tm_electric.png index 34e4fe8de7b..96022151293 100644 Binary files a/public/images/items/tm_electric.png and b/public/images/items/tm_electric.png differ diff --git a/public/images/items/tm_fairy.png b/public/images/items/tm_fairy.png index 056783a8d63..f62104d0ba0 100644 Binary files a/public/images/items/tm_fairy.png and b/public/images/items/tm_fairy.png differ diff --git a/public/images/items/tm_fighting.png b/public/images/items/tm_fighting.png index 144d75826cd..0359997d820 100644 Binary files a/public/images/items/tm_fighting.png and b/public/images/items/tm_fighting.png differ diff --git a/public/images/items/tm_fire.png b/public/images/items/tm_fire.png index ae19e381873..f4880a6c888 100644 Binary files a/public/images/items/tm_fire.png and b/public/images/items/tm_fire.png differ diff --git a/public/images/items/tm_flying.png b/public/images/items/tm_flying.png index 3db06a69e68..ebadc39a88a 100644 Binary files a/public/images/items/tm_flying.png and b/public/images/items/tm_flying.png differ diff --git a/public/images/items/tm_ghost.png b/public/images/items/tm_ghost.png index a7e8928aa7e..ef0fd9f6927 100644 Binary files a/public/images/items/tm_ghost.png and b/public/images/items/tm_ghost.png differ diff --git a/public/images/items/tm_grass.png b/public/images/items/tm_grass.png index 42f11f590eb..f81d27b7ff0 100644 Binary files a/public/images/items/tm_grass.png and b/public/images/items/tm_grass.png differ diff --git a/public/images/items/tm_ground.png b/public/images/items/tm_ground.png index ff9dc7c7384..e8bf5d4da04 100644 Binary files a/public/images/items/tm_ground.png and b/public/images/items/tm_ground.png differ diff --git a/public/images/items/tm_ice.png b/public/images/items/tm_ice.png index 4edbb447a3e..eece8623654 100644 Binary files a/public/images/items/tm_ice.png and b/public/images/items/tm_ice.png differ diff --git a/public/images/items/tm_normal.png b/public/images/items/tm_normal.png index 19afe85d442..cede4cb96e2 100644 Binary files a/public/images/items/tm_normal.png and b/public/images/items/tm_normal.png differ diff --git a/public/images/items/tm_poison.png b/public/images/items/tm_poison.png index 83cb4488f33..5cea7211e95 100644 Binary files a/public/images/items/tm_poison.png and b/public/images/items/tm_poison.png differ diff --git a/public/images/items/tm_psychic.png b/public/images/items/tm_psychic.png index 4296914eda2..8767e879b21 100644 Binary files a/public/images/items/tm_psychic.png and b/public/images/items/tm_psychic.png differ diff --git a/public/images/items/tm_rock.png b/public/images/items/tm_rock.png index 6e13a1835e7..1a6be381a1a 100644 Binary files a/public/images/items/tm_rock.png and b/public/images/items/tm_rock.png differ diff --git a/public/images/items/tm_steel.png b/public/images/items/tm_steel.png index 32071b0843b..3fbb61b47df 100644 Binary files a/public/images/items/tm_steel.png and b/public/images/items/tm_steel.png differ diff --git a/public/images/items/tm_water.png b/public/images/items/tm_water.png index 85403f20be7..3f9122a3862 100644 Binary files a/public/images/items/tm_water.png and b/public/images/items/tm_water.png differ diff --git a/public/images/items/toxic_orb.png b/public/images/items/toxic_orb.png index 3483c13ba2b..8b8a1026f92 100644 Binary files a/public/images/items/toxic_orb.png and b/public/images/items/toxic_orb.png differ diff --git a/public/images/items/toxic_plate.png b/public/images/items/toxic_plate.png index efb2cff129c..721b275f7d7 100644 Binary files a/public/images/items/toxic_plate.png and b/public/images/items/toxic_plate.png differ diff --git a/public/images/items/twisted_spoon.png b/public/images/items/twisted_spoon.png index 9bb23b04386..07908d6cd0f 100644 Binary files a/public/images/items/twisted_spoon.png and b/public/images/items/twisted_spoon.png differ diff --git a/public/images/items/tyranitarite.png b/public/images/items/tyranitarite.png index 691f8c6123d..3873e7784b1 100644 Binary files a/public/images/items/tyranitarite.png and b/public/images/items/tyranitarite.png differ diff --git a/public/images/items/ub.png b/public/images/items/ub.png index 6ad0702223a..76fe1f28675 100644 Binary files a/public/images/items/ub.png and b/public/images/items/ub.png differ diff --git a/public/images/items/ultra_ribbon.png b/public/images/items/ultra_ribbon.png index a63ec63e394..f1342eb3bae 100644 Binary files a/public/images/items/ultra_ribbon.png and b/public/images/items/ultra_ribbon.png differ diff --git a/public/images/items/ultranecrozium_z.png b/public/images/items/ultranecrozium_z.png index cdcb29e6c26..f95d722873e 100644 Binary files a/public/images/items/ultranecrozium_z.png and b/public/images/items/ultranecrozium_z.png differ diff --git a/public/images/items/unknown.png b/public/images/items/unknown.png index 2d0637048ae..17697d0d640 100644 Binary files a/public/images/items/unknown.png and b/public/images/items/unknown.png differ diff --git a/public/images/items/unremarkable_teacup.png b/public/images/items/unremarkable_teacup.png index 340214b6a5c..154d8284e0d 100644 Binary files a/public/images/items/unremarkable_teacup.png and b/public/images/items/unremarkable_teacup.png differ diff --git a/public/images/items/upgrade.png b/public/images/items/upgrade.png index 11a7ade4d6a..3fe4f03d15a 100644 Binary files a/public/images/items/upgrade.png and b/public/images/items/upgrade.png differ diff --git a/public/images/items/venusaurite.png b/public/images/items/venusaurite.png index 845d1cef75a..853b37417e3 100644 Binary files a/public/images/items/venusaurite.png and b/public/images/items/venusaurite.png differ diff --git a/public/images/items/water_memory.png b/public/images/items/water_memory.png index a0cf8b3c5c9..fb3d33dfbce 100644 Binary files a/public/images/items/water_memory.png and b/public/images/items/water_memory.png differ diff --git a/public/images/items/water_stone.png b/public/images/items/water_stone.png index fa3d924960b..6972b36573c 100644 Binary files a/public/images/items/water_stone.png and b/public/images/items/water_stone.png differ diff --git a/public/images/items/water_tera_shard.png b/public/images/items/water_tera_shard.png index eec8caf1245..1cab0ad8f33 100644 Binary files a/public/images/items/water_tera_shard.png and b/public/images/items/water_tera_shard.png differ diff --git a/public/images/items/wellspring_mask.png b/public/images/items/wellspring_mask.png index 921c71e1493..bec005856e3 100644 Binary files a/public/images/items/wellspring_mask.png and b/public/images/items/wellspring_mask.png differ diff --git a/public/images/items/whipped_dream.png b/public/images/items/whipped_dream.png index 16090ccaac0..d02a3fb9807 100644 Binary files a/public/images/items/whipped_dream.png and b/public/images/items/whipped_dream.png differ diff --git a/public/images/items/white_herb.png b/public/images/items/white_herb.png index 829c64f188e..0729602fd15 100644 Binary files a/public/images/items/white_herb.png and b/public/images/items/white_herb.png differ diff --git a/public/images/items/wide_lens.png b/public/images/items/wide_lens.png index f7dbe9843fa..dcfb43378a0 100644 Binary files a/public/images/items/wide_lens.png and b/public/images/items/wide_lens.png differ diff --git a/public/images/items/wise_glasses.png b/public/images/items/wise_glasses.png index b48d2cb3ffd..765c88524d0 100644 Binary files a/public/images/items/wise_glasses.png and b/public/images/items/wise_glasses.png differ diff --git a/public/images/items/wl_ability_urge.png b/public/images/items/wl_ability_urge.png index b6b2c8bd398..7312de48a94 100644 Binary files a/public/images/items/wl_ability_urge.png and b/public/images/items/wl_ability_urge.png differ diff --git a/public/images/items/wl_antidote.png b/public/images/items/wl_antidote.png index 93e4757938b..18a74292dcf 100644 Binary files a/public/images/items/wl_antidote.png and b/public/images/items/wl_antidote.png differ diff --git a/public/images/items/wl_awakening.png b/public/images/items/wl_awakening.png index 57e83b30cda..4fa59e2d10d 100644 Binary files a/public/images/items/wl_awakening.png and b/public/images/items/wl_awakening.png differ diff --git a/public/images/items/wl_burn_heal.png b/public/images/items/wl_burn_heal.png index 3565af12d62..98fa6c11766 100644 Binary files a/public/images/items/wl_burn_heal.png and b/public/images/items/wl_burn_heal.png differ diff --git a/public/images/items/wl_custom_spliced.png b/public/images/items/wl_custom_spliced.png index 8aef30edb27..de344ae5704 100644 Binary files a/public/images/items/wl_custom_spliced.png and b/public/images/items/wl_custom_spliced.png differ diff --git a/public/images/items/wl_custom_thief.png b/public/images/items/wl_custom_thief.png index de6d62a48bc..aa6f9e0acc7 100644 Binary files a/public/images/items/wl_custom_thief.png and b/public/images/items/wl_custom_thief.png differ diff --git a/public/images/items/wl_elixir.png b/public/images/items/wl_elixir.png index 05eb590c484..e9b7b48ab87 100644 Binary files a/public/images/items/wl_elixir.png and b/public/images/items/wl_elixir.png differ diff --git a/public/images/items/wl_ether.png b/public/images/items/wl_ether.png index 114e8ffc941..457f2bf0649 100644 Binary files a/public/images/items/wl_ether.png and b/public/images/items/wl_ether.png differ diff --git a/public/images/items/wl_full_heal.png b/public/images/items/wl_full_heal.png index 215f9801d65..361d432781a 100644 Binary files a/public/images/items/wl_full_heal.png and b/public/images/items/wl_full_heal.png differ diff --git a/public/images/items/wl_full_restore.png b/public/images/items/wl_full_restore.png index d6d4ffe720f..0e9399f7c77 100644 Binary files a/public/images/items/wl_full_restore.png and b/public/images/items/wl_full_restore.png differ diff --git a/public/images/items/wl_guard_spec.png b/public/images/items/wl_guard_spec.png index 9d22029e927..4207e5094b9 100644 Binary files a/public/images/items/wl_guard_spec.png and b/public/images/items/wl_guard_spec.png differ diff --git a/public/images/items/wl_hyper_potion.png b/public/images/items/wl_hyper_potion.png index 1eb075445e4..016c257a1eb 100644 Binary files a/public/images/items/wl_hyper_potion.png and b/public/images/items/wl_hyper_potion.png differ diff --git a/public/images/items/wl_ice_heal.png b/public/images/items/wl_ice_heal.png index 9ac297c0e7c..619d30d9ca9 100644 Binary files a/public/images/items/wl_ice_heal.png and b/public/images/items/wl_ice_heal.png differ diff --git a/public/images/items/wl_item_drop.png b/public/images/items/wl_item_drop.png index 73425749670..66e81677917 100644 Binary files a/public/images/items/wl_item_drop.png and b/public/images/items/wl_item_drop.png differ diff --git a/public/images/items/wl_item_urge.png b/public/images/items/wl_item_urge.png index 17a6343058f..766751fa329 100644 Binary files a/public/images/items/wl_item_urge.png and b/public/images/items/wl_item_urge.png differ diff --git a/public/images/items/wl_max_elixir.png b/public/images/items/wl_max_elixir.png index 4a33dc853fd..4df3eaff10a 100644 Binary files a/public/images/items/wl_max_elixir.png and b/public/images/items/wl_max_elixir.png differ diff --git a/public/images/items/wl_max_ether.png b/public/images/items/wl_max_ether.png index d3f69ce053d..0e174f9eba4 100644 Binary files a/public/images/items/wl_max_ether.png and b/public/images/items/wl_max_ether.png differ diff --git a/public/images/items/wl_max_potion.png b/public/images/items/wl_max_potion.png index 6b58c07e86a..2f334795489 100644 Binary files a/public/images/items/wl_max_potion.png and b/public/images/items/wl_max_potion.png differ diff --git a/public/images/items/wl_max_revive.png b/public/images/items/wl_max_revive.png index f2eabaa8d5b..89528b0fe8a 100644 Binary files a/public/images/items/wl_max_revive.png and b/public/images/items/wl_max_revive.png differ diff --git a/public/images/items/wl_paralyze_heal.png b/public/images/items/wl_paralyze_heal.png index 8e89e54c156..ba9c172fa17 100644 Binary files a/public/images/items/wl_paralyze_heal.png and b/public/images/items/wl_paralyze_heal.png differ diff --git a/public/images/items/wl_potion.png b/public/images/items/wl_potion.png index 619c5d2b014..a70bba17b2f 100644 Binary files a/public/images/items/wl_potion.png and b/public/images/items/wl_potion.png differ diff --git a/public/images/items/wl_reset_urge.png b/public/images/items/wl_reset_urge.png index 0d2f94504f0..197bcc829fa 100644 Binary files a/public/images/items/wl_reset_urge.png and b/public/images/items/wl_reset_urge.png differ diff --git a/public/images/items/wl_revive.png b/public/images/items/wl_revive.png index c01b5f68853..36ac67d5a60 100644 Binary files a/public/images/items/wl_revive.png and b/public/images/items/wl_revive.png differ diff --git a/public/images/items/wl_super_potion.png b/public/images/items/wl_super_potion.png index eaf60d6c882..5bf5dd8fc89 100644 Binary files a/public/images/items/wl_super_potion.png and b/public/images/items/wl_super_potion.png differ diff --git a/public/images/items/x_accuracy.png b/public/images/items/x_accuracy.png index e7af52fc684..4e51324faef 100644 Binary files a/public/images/items/x_accuracy.png and b/public/images/items/x_accuracy.png differ diff --git a/public/images/items/x_attack.png b/public/images/items/x_attack.png index 711aca7269c..a66167121f6 100644 Binary files a/public/images/items/x_attack.png and b/public/images/items/x_attack.png differ diff --git a/public/images/items/x_defense.png b/public/images/items/x_defense.png index ee8d3fa5e2d..a4f9675fc82 100644 Binary files a/public/images/items/x_defense.png and b/public/images/items/x_defense.png differ diff --git a/public/images/items/x_sp_atk.png b/public/images/items/x_sp_atk.png index f0e674e4d45..853df12a909 100644 Binary files a/public/images/items/x_sp_atk.png and b/public/images/items/x_sp_atk.png differ diff --git a/public/images/items/x_sp_def.png b/public/images/items/x_sp_def.png index 2ab43574af9..04cb91cd73f 100644 Binary files a/public/images/items/x_sp_def.png and b/public/images/items/x_sp_def.png differ diff --git a/public/images/items/x_speed.png b/public/images/items/x_speed.png index daebb295d77..7d9541531d3 100644 Binary files a/public/images/items/x_speed.png and b/public/images/items/x_speed.png differ diff --git a/public/images/items/zap_plate.png b/public/images/items/zap_plate.png index a966fb76cd3..a291624b7a3 100644 Binary files a/public/images/items/zap_plate.png and b/public/images/items/zap_plate.png differ diff --git a/public/images/items/zinc.png b/public/images/items/zinc.png index c1dfd47a9fc..fccbc59e9e8 100644 Binary files a/public/images/items/zinc.png and b/public/images/items/zinc.png differ diff --git a/public/images/items/zoom_lens.png b/public/images/items/zoom_lens.png index 30b3ed55bdf..4f1e5cc9e4b 100644 Binary files a/public/images/items/zoom_lens.png and b/public/images/items/zoom_lens.png differ diff --git a/public/images/logo.png b/public/images/logo.png index 16e559d9c38..bf6c0b19ef2 100644 Binary files a/public/images/logo.png and b/public/images/logo.png differ diff --git a/public/images/mystery-encounters/berries_abound_bush.png b/public/images/mystery-encounters/berries_abound_bush.png index e9be20b4863..741191d71c9 100644 Binary files a/public/images/mystery-encounters/berries_abound_bush.png and b/public/images/mystery-encounters/berries_abound_bush.png differ diff --git a/public/images/mystery-encounters/dark_deal_porygon.png b/public/images/mystery-encounters/dark_deal_porygon.png index 168999fb0f4..97013af65a1 100644 Binary files a/public/images/mystery-encounters/dark_deal_porygon.png and b/public/images/mystery-encounters/dark_deal_porygon.png differ diff --git a/public/images/mystery-encounters/dark_deal_scientist.png b/public/images/mystery-encounters/dark_deal_scientist.png index 453cb767ec1..980f5109f30 100644 Binary files a/public/images/mystery-encounters/dark_deal_scientist.png and b/public/images/mystery-encounters/dark_deal_scientist.png differ diff --git a/public/images/mystery-encounters/department_store_sale_lady.png b/public/images/mystery-encounters/department_store_sale_lady.png index 9dcc1281c9e..b11034d3c99 100644 Binary files a/public/images/mystery-encounters/department_store_sale_lady.png and b/public/images/mystery-encounters/department_store_sale_lady.png differ diff --git a/public/images/mystery-encounters/encounter_exclaim.png b/public/images/mystery-encounters/encounter_exclaim.png index a7727f4da2e..25b288c9700 100644 Binary files a/public/images/mystery-encounters/encounter_exclaim.png and b/public/images/mystery-encounters/encounter_exclaim.png differ diff --git a/public/images/mystery-encounters/encounter_radar.png b/public/images/mystery-encounters/encounter_radar.png index deb9426c269..9af44cd452e 100644 Binary files a/public/images/mystery-encounters/encounter_radar.png and b/public/images/mystery-encounters/encounter_radar.png differ diff --git a/public/images/mystery-encounters/field_trip_teacher.png b/public/images/mystery-encounters/field_trip_teacher.png index b4332bc0032..22a6a316297 100644 Binary files a/public/images/mystery-encounters/field_trip_teacher.png and b/public/images/mystery-encounters/field_trip_teacher.png differ diff --git a/public/images/mystery-encounters/fun_and_games_game.png b/public/images/mystery-encounters/fun_and_games_game.png index 03a3b9c9cbc..8b087c7a31b 100644 Binary files a/public/images/mystery-encounters/fun_and_games_game.png and b/public/images/mystery-encounters/fun_and_games_game.png differ diff --git a/public/images/mystery-encounters/fun_and_games_man.png b/public/images/mystery-encounters/fun_and_games_man.png index 05f94dbd33d..42c3b4996fa 100644 Binary files a/public/images/mystery-encounters/fun_and_games_man.png and b/public/images/mystery-encounters/fun_and_games_man.png differ diff --git a/public/images/mystery-encounters/fun_and_games_wobbuffet.png b/public/images/mystery-encounters/fun_and_games_wobbuffet.png index 37e7220196a..71997be5692 100644 Binary files a/public/images/mystery-encounters/fun_and_games_wobbuffet.png and b/public/images/mystery-encounters/fun_and_games_wobbuffet.png differ diff --git a/public/images/mystery-encounters/global_trade_system.png b/public/images/mystery-encounters/global_trade_system.png index cb0ffb0ab20..fb6815c0240 100644 Binary files a/public/images/mystery-encounters/global_trade_system.png and b/public/images/mystery-encounters/global_trade_system.png differ diff --git a/public/images/mystery-encounters/lost_at_sea_buoy.png b/public/images/mystery-encounters/lost_at_sea_buoy.png index fb957ac29f0..0c7400b7760 100644 Binary files a/public/images/mystery-encounters/lost_at_sea_buoy.png and b/public/images/mystery-encounters/lost_at_sea_buoy.png differ diff --git a/public/images/mystery-encounters/mysterious_chest_blue.png b/public/images/mystery-encounters/mysterious_chest_blue.png index e67bdcafa04..f959db13aa7 100644 Binary files a/public/images/mystery-encounters/mysterious_chest_blue.png and b/public/images/mystery-encounters/mysterious_chest_blue.png differ diff --git a/public/images/mystery-encounters/mysterious_chest_red.png b/public/images/mystery-encounters/mysterious_chest_red.png index c20a8218be6..c312911040e 100644 Binary files a/public/images/mystery-encounters/mysterious_chest_red.png and b/public/images/mystery-encounters/mysterious_chest_red.png differ diff --git a/public/images/mystery-encounters/part_timer_crate.png b/public/images/mystery-encounters/part_timer_crate.png index fb70a6e534a..dd02c243613 100644 Binary files a/public/images/mystery-encounters/part_timer_crate.png and b/public/images/mystery-encounters/part_timer_crate.png differ diff --git a/public/images/mystery-encounters/pokemon_salesman.png b/public/images/mystery-encounters/pokemon_salesman.png index 1251dd8eda7..e5195cf6999 100644 Binary files a/public/images/mystery-encounters/pokemon_salesman.png and b/public/images/mystery-encounters/pokemon_salesman.png differ diff --git a/public/images/mystery-encounters/safari_zone.png b/public/images/mystery-encounters/safari_zone.png index 375d66ebbe9..54bf097656c 100644 Binary files a/public/images/mystery-encounters/safari_zone.png and b/public/images/mystery-encounters/safari_zone.png differ diff --git a/public/images/mystery-encounters/safari_zone_bait.png b/public/images/mystery-encounters/safari_zone_bait.png index 7de9169d187..2133aea6567 100644 Binary files a/public/images/mystery-encounters/safari_zone_bait.png and b/public/images/mystery-encounters/safari_zone_bait.png differ diff --git a/public/images/mystery-encounters/safari_zone_mud.png b/public/images/mystery-encounters/safari_zone_mud.png index 2ba7cb00047..750ff585353 100644 Binary files a/public/images/mystery-encounters/safari_zone_mud.png and b/public/images/mystery-encounters/safari_zone_mud.png differ diff --git a/public/images/mystery-encounters/shady_vitamin_dealer.png b/public/images/mystery-encounters/shady_vitamin_dealer.png index 967d82973e6..f63eadc6799 100644 Binary files a/public/images/mystery-encounters/shady_vitamin_dealer.png and b/public/images/mystery-encounters/shady_vitamin_dealer.png differ diff --git a/public/images/mystery-encounters/teleporting_hijinks_teleporter.png b/public/images/mystery-encounters/teleporting_hijinks_teleporter.png index 9a049c30ab1..178f1571194 100644 Binary files a/public/images/mystery-encounters/teleporting_hijinks_teleporter.png and b/public/images/mystery-encounters/teleporting_hijinks_teleporter.png differ diff --git a/public/images/mystery-encounters/training_session_gear.png b/public/images/mystery-encounters/training_session_gear.png index 42c3a9bb7d4..9ebc7530f64 100644 Binary files a/public/images/mystery-encounters/training_session_gear.png and b/public/images/mystery-encounters/training_session_gear.png differ diff --git a/public/images/mystery-encounters/weird_dream_woman.png b/public/images/mystery-encounters/weird_dream_woman.png index 50d04667152..65fe2f30841 100644 Binary files a/public/images/mystery-encounters/weird_dream_woman.png and b/public/images/mystery-encounters/weird_dream_woman.png differ diff --git a/public/images/pb.png b/public/images/pb.png index acb3a96f066..364d864f7fe 100644 Binary files a/public/images/pb.png and b/public/images/pb.png differ diff --git a/public/images/pokeball/gb.png b/public/images/pokeball/gb.png index 94f278c8ef1..54980d63766 100644 Binary files a/public/images/pokeball/gb.png and b/public/images/pokeball/gb.png differ diff --git a/public/images/pokeball/gb_open.png b/public/images/pokeball/gb_open.png index 26d8956fd27..c5a6e43e705 100644 Binary files a/public/images/pokeball/gb_open.png and b/public/images/pokeball/gb_open.png differ diff --git a/public/images/pokeball/gb_opening.png b/public/images/pokeball/gb_opening.png index 9947f7ceb37..075aafeb460 100644 Binary files a/public/images/pokeball/gb_opening.png and b/public/images/pokeball/gb_opening.png differ diff --git a/public/images/pokeball/lb.png b/public/images/pokeball/lb.png index 1a5639d48e9..2aedfafec3c 100644 Binary files a/public/images/pokeball/lb.png and b/public/images/pokeball/lb.png differ diff --git a/public/images/pokeball/lb_open.png b/public/images/pokeball/lb_open.png index fd2b9c71953..6ec104da2d8 100644 Binary files a/public/images/pokeball/lb_open.png and b/public/images/pokeball/lb_open.png differ diff --git a/public/images/pokeball/lb_opening.png b/public/images/pokeball/lb_opening.png index e62517bd67a..b5f0cffa55a 100644 Binary files a/public/images/pokeball/lb_opening.png and b/public/images/pokeball/lb_opening.png differ diff --git a/public/images/pokeball/mb.png b/public/images/pokeball/mb.png index de374e0fd7c..cc7b7d3164b 100644 Binary files a/public/images/pokeball/mb.png and b/public/images/pokeball/mb.png differ diff --git a/public/images/pokeball/mb_open.png b/public/images/pokeball/mb_open.png index f4e0145dcd4..b0d21c800c2 100644 Binary files a/public/images/pokeball/mb_open.png and b/public/images/pokeball/mb_open.png differ diff --git a/public/images/pokeball/mb_opening.png b/public/images/pokeball/mb_opening.png index 9c483fbbb9c..a13437ba70a 100644 Binary files a/public/images/pokeball/mb_opening.png and b/public/images/pokeball/mb_opening.png differ diff --git a/public/images/pokeball/pb.png b/public/images/pokeball/pb.png index 684ed6b0a5f..7404b3129b7 100644 Binary files a/public/images/pokeball/pb.png and b/public/images/pokeball/pb.png differ diff --git a/public/images/pokeball/pb_open.png b/public/images/pokeball/pb_open.png index 62db56cddde..0fdfa7b98fa 100644 Binary files a/public/images/pokeball/pb_open.png and b/public/images/pokeball/pb_open.png differ diff --git a/public/images/pokeball/pb_opening.png b/public/images/pokeball/pb_opening.png index 4f13a9b46cb..1a7136f186d 100644 Binary files a/public/images/pokeball/pb_opening.png and b/public/images/pokeball/pb_opening.png differ diff --git a/public/images/pokeball/rb.png b/public/images/pokeball/rb.png index e2e1f1b077e..5c4c616d72d 100644 Binary files a/public/images/pokeball/rb.png and b/public/images/pokeball/rb.png differ diff --git a/public/images/pokeball/rb_open.png b/public/images/pokeball/rb_open.png index 94d480b5828..3fe5f6e81c7 100644 Binary files a/public/images/pokeball/rb_open.png and b/public/images/pokeball/rb_open.png differ diff --git a/public/images/pokeball/rb_opening.png b/public/images/pokeball/rb_opening.png index 76aae3c1772..76f4989755d 100644 Binary files a/public/images/pokeball/rb_opening.png and b/public/images/pokeball/rb_opening.png differ diff --git a/public/images/pokeball/ub.png b/public/images/pokeball/ub.png index 306cb168428..92f11481dce 100644 Binary files a/public/images/pokeball/ub.png and b/public/images/pokeball/ub.png differ diff --git a/public/images/pokeball/ub_open.png b/public/images/pokeball/ub_open.png index 2ccf2ae366d..29e5ddac92f 100644 Binary files a/public/images/pokeball/ub_open.png and b/public/images/pokeball/ub_open.png differ diff --git a/public/images/pokeball/ub_opening.png b/public/images/pokeball/ub_opening.png index 6c8e7711201..0696c666d95 100644 Binary files a/public/images/pokeball/ub_opening.png and b/public/images/pokeball/ub_opening.png differ diff --git a/public/images/pokemon_icons_0.png b/public/images/pokemon_icons_0.png index 134fe8c1bee..dd91c8358a2 100644 Binary files a/public/images/pokemon_icons_0.png and b/public/images/pokemon_icons_0.png differ diff --git a/public/images/pokemon_icons_1.png b/public/images/pokemon_icons_1.png index 4091f15165f..de7342ad141 100644 Binary files a/public/images/pokemon_icons_1.png and b/public/images/pokemon_icons_1.png differ diff --git a/public/images/pokemon_icons_1v.png b/public/images/pokemon_icons_1v.png index 025c1ab025a..8e62eef7c76 100644 Binary files a/public/images/pokemon_icons_1v.png and b/public/images/pokemon_icons_1v.png differ diff --git a/public/images/pokemon_icons_2.png b/public/images/pokemon_icons_2.png index fed696d7154..218c4345069 100644 Binary files a/public/images/pokemon_icons_2.png and b/public/images/pokemon_icons_2.png differ diff --git a/public/images/pokemon_icons_2v.png b/public/images/pokemon_icons_2v.png index fea0fb339ce..e6b0a58fe96 100644 Binary files a/public/images/pokemon_icons_2v.png and b/public/images/pokemon_icons_2v.png differ diff --git a/public/images/pokemon_icons_3.png b/public/images/pokemon_icons_3.png index a0eec0a5290..cf0c1b2c3c9 100644 Binary files a/public/images/pokemon_icons_3.png and b/public/images/pokemon_icons_3.png differ diff --git a/public/images/pokemon_icons_3v.png b/public/images/pokemon_icons_3v.png index b151e36e72c..ba4bcfdeb57 100644 Binary files a/public/images/pokemon_icons_3v.png and b/public/images/pokemon_icons_3v.png differ diff --git a/public/images/pokemon_icons_4.png b/public/images/pokemon_icons_4.png index 5b271a3930c..38bb31617f9 100644 Binary files a/public/images/pokemon_icons_4.png and b/public/images/pokemon_icons_4.png differ diff --git a/public/images/pokemon_icons_4v.png b/public/images/pokemon_icons_4v.png index 972bff8b777..0b207777830 100644 Binary files a/public/images/pokemon_icons_4v.png and b/public/images/pokemon_icons_4v.png differ diff --git a/public/images/pokemon_icons_5.png b/public/images/pokemon_icons_5.png index 12fa2e99e24..5f80eaaff67 100644 Binary files a/public/images/pokemon_icons_5.png and b/public/images/pokemon_icons_5.png differ diff --git a/public/images/pokemon_icons_5v.png b/public/images/pokemon_icons_5v.png index 881f430447e..7ca76312c2b 100644 Binary files a/public/images/pokemon_icons_5v.png and b/public/images/pokemon_icons_5v.png differ diff --git a/public/images/pokemon_icons_6.png b/public/images/pokemon_icons_6.png index 272018b672b..47a5274c3d1 100644 Binary files a/public/images/pokemon_icons_6.png and b/public/images/pokemon_icons_6.png differ diff --git a/public/images/pokemon_icons_6v.png b/public/images/pokemon_icons_6v.png index d8bd10eaa71..be2bd1621fb 100644 Binary files a/public/images/pokemon_icons_6v.png and b/public/images/pokemon_icons_6v.png differ diff --git a/public/images/pokemon_icons_7.png b/public/images/pokemon_icons_7.png index e541af01c2d..c2ffe6ad9f3 100644 Binary files a/public/images/pokemon_icons_7.png and b/public/images/pokemon_icons_7.png differ diff --git a/public/images/pokemon_icons_7v.png b/public/images/pokemon_icons_7v.png index 732e67e5219..8164a6bb37b 100644 Binary files a/public/images/pokemon_icons_7v.png and b/public/images/pokemon_icons_7v.png differ diff --git a/public/images/pokemon_icons_8.png b/public/images/pokemon_icons_8.png index 3003f3b9e0e..4bcbb68ac35 100644 Binary files a/public/images/pokemon_icons_8.png and b/public/images/pokemon_icons_8.png differ diff --git a/public/images/pokemon_icons_8v.png b/public/images/pokemon_icons_8v.png index 4017b0945d6..183a87bbad4 100644 Binary files a/public/images/pokemon_icons_8v.png and b/public/images/pokemon_icons_8v.png differ diff --git a/public/images/pokemon_icons_9.png b/public/images/pokemon_icons_9.png index 2985fb800d6..2cfc7c6272d 100644 Binary files a/public/images/pokemon_icons_9.png and b/public/images/pokemon_icons_9.png differ diff --git a/public/images/pokemon_icons_9v.png b/public/images/pokemon_icons_9v.png index 3636c3059d8..cc93a28d120 100644 Binary files a/public/images/pokemon_icons_9v.png and b/public/images/pokemon_icons_9v.png differ diff --git a/public/images/statuses.png b/public/images/statuses.png index d372b989be9..f678b9cb700 100644 Binary files a/public/images/statuses.png and b/public/images/statuses.png differ diff --git a/public/images/statuses/burn.png b/public/images/statuses/burn.png deleted file mode 100644 index e77cd88af3b..00000000000 Binary files a/public/images/statuses/burn.png and /dev/null differ diff --git a/public/images/statuses/faint.png b/public/images/statuses/faint.png deleted file mode 100644 index 12297bdab22..00000000000 Binary files a/public/images/statuses/faint.png and /dev/null differ diff --git a/public/images/statuses/freeze.png b/public/images/statuses/freeze.png deleted file mode 100644 index 5f768a5cef4..00000000000 Binary files a/public/images/statuses/freeze.png and /dev/null differ diff --git a/public/images/statuses/paralysis.png b/public/images/statuses/paralysis.png deleted file mode 100644 index ceda9071708..00000000000 Binary files a/public/images/statuses/paralysis.png and /dev/null differ diff --git a/public/images/statuses/poison.png b/public/images/statuses/poison.png deleted file mode 100644 index b9ed12adcfc..00000000000 Binary files a/public/images/statuses/poison.png and /dev/null differ diff --git a/public/images/statuses/pokerus.png b/public/images/statuses/pokerus.png deleted file mode 100644 index 2963d0081f8..00000000000 Binary files a/public/images/statuses/pokerus.png and /dev/null differ diff --git a/public/images/statuses/sleep.png b/public/images/statuses/sleep.png deleted file mode 100644 index 8a54bbab717..00000000000 Binary files a/public/images/statuses/sleep.png and /dev/null differ diff --git a/public/images/statuses/toxic.png b/public/images/statuses/toxic.png deleted file mode 100644 index c34fcb71d85..00000000000 Binary files a/public/images/statuses/toxic.png and /dev/null differ diff --git a/public/images/statuses_ca.png b/public/images/statuses_ca.png index fe05e243f7a..d6fb8fd0415 100644 Binary files a/public/images/statuses_ca.png and b/public/images/statuses_ca.png differ diff --git a/public/images/statuses_da.png b/public/images/statuses_da.png index 02780bddd98..274e960a565 100644 Binary files a/public/images/statuses_da.png and b/public/images/statuses_da.png differ diff --git a/public/images/statuses_de.png b/public/images/statuses_de.png index ab85384d591..140ba6326ca 100644 Binary files a/public/images/statuses_de.png and b/public/images/statuses_de.png differ diff --git a/public/images/statuses_es-ES.png b/public/images/statuses_es-ES.png index dc845d6fb1f..fbe87996506 100644 Binary files a/public/images/statuses_es-ES.png and b/public/images/statuses_es-ES.png differ diff --git a/public/images/statuses_es-MX.png b/public/images/statuses_es-MX.png index dc845d6fb1f..fbe87996506 100644 Binary files a/public/images/statuses_es-MX.png and b/public/images/statuses_es-MX.png differ diff --git a/public/images/statuses_fr.png b/public/images/statuses_fr.png index 95989cd5d97..611e6226a17 100644 Binary files a/public/images/statuses_fr.png and b/public/images/statuses_fr.png differ diff --git a/public/images/statuses_it.png b/public/images/statuses_it.png index af3107018f8..4ca1e908d94 100644 Binary files a/public/images/statuses_it.png and b/public/images/statuses_it.png differ diff --git a/public/images/statuses_ja.png b/public/images/statuses_ja.png index 305fbe9168c..433c54f04bd 100644 Binary files a/public/images/statuses_ja.png and b/public/images/statuses_ja.png differ diff --git a/public/images/statuses_ko.png b/public/images/statuses_ko.png index d372b989be9..a600231df7b 100644 Binary files a/public/images/statuses_ko.png and b/public/images/statuses_ko.png differ diff --git a/public/images/statuses_pt-BR.png b/public/images/statuses_pt-BR.png index 3073540e8a2..0c5124f12d8 100644 Binary files a/public/images/statuses_pt-BR.png and b/public/images/statuses_pt-BR.png differ diff --git a/public/images/statuses_ro.png b/public/images/statuses_ro.png index 537b634c520..0eb8e1fc32c 100644 Binary files a/public/images/statuses_ro.png and b/public/images/statuses_ro.png differ diff --git a/public/images/statuses_ru.png b/public/images/statuses_ru.png index 1da8b66a4f8..c579e454c0f 100644 Binary files a/public/images/statuses_ru.png and b/public/images/statuses_ru.png differ diff --git a/public/images/statuses_tr.png b/public/images/statuses_tr.png index d372b989be9..f678b9cb700 100644 Binary files a/public/images/statuses_tr.png and b/public/images/statuses_tr.png differ diff --git a/public/images/statuses_zh-CN.png b/public/images/statuses_zh-CN.png index d372b989be9..f678b9cb700 100644 Binary files a/public/images/statuses_zh-CN.png and b/public/images/statuses_zh-CN.png differ diff --git a/public/images/statuses_zh-TW.png b/public/images/statuses_zh-TW.png index d372b989be9..f678b9cb700 100644 Binary files a/public/images/statuses_zh-TW.png and b/public/images/statuses_zh-TW.png differ diff --git a/public/images/trainer/aaron.png b/public/images/trainer/aaron.png index a63f49849a6..e392942b43b 100644 Binary files a/public/images/trainer/aaron.png and b/public/images/trainer/aaron.png differ diff --git a/public/images/trainer/ace_trainer_f.png b/public/images/trainer/ace_trainer_f.png index 8774ba08044..c4bd56a4e97 100644 Binary files a/public/images/trainer/ace_trainer_f.png and b/public/images/trainer/ace_trainer_f.png differ diff --git a/public/images/trainer/ace_trainer_m.png b/public/images/trainer/ace_trainer_m.png index a7922b1b2d1..4b8524bd83c 100644 Binary files a/public/images/trainer/ace_trainer_m.png and b/public/images/trainer/ace_trainer_m.png differ diff --git a/public/images/trainer/acerola.png b/public/images/trainer/acerola.png index 3804d2986a3..49215970f25 100644 Binary files a/public/images/trainer/acerola.png and b/public/images/trainer/acerola.png differ diff --git a/public/images/trainer/aether_grunt_f.png b/public/images/trainer/aether_grunt_f.png index a5088c9e1de..30e1adea75f 100644 Binary files a/public/images/trainer/aether_grunt_f.png and b/public/images/trainer/aether_grunt_f.png differ diff --git a/public/images/trainer/aether_grunt_m.png b/public/images/trainer/aether_grunt_m.png index 1b1e092a340..c61970f4c98 100644 Binary files a/public/images/trainer/aether_grunt_m.png and b/public/images/trainer/aether_grunt_m.png differ diff --git a/public/images/trainer/agatha.png b/public/images/trainer/agatha.png index 71eed676318..d342f258577 100644 Binary files a/public/images/trainer/agatha.png and b/public/images/trainer/agatha.png differ diff --git a/public/images/trainer/alder.png b/public/images/trainer/alder.png index 552fe694929..83f4025d90c 100644 Binary files a/public/images/trainer/alder.png and b/public/images/trainer/alder.png differ diff --git a/public/images/trainer/allister.png b/public/images/trainer/allister.png index 07c20c1b275..c29781660d1 100644 Binary files a/public/images/trainer/allister.png and b/public/images/trainer/allister.png differ diff --git a/public/images/trainer/amarys.png b/public/images/trainer/amarys.png index a342c909f69..e4b43a2c82b 100644 Binary files a/public/images/trainer/amarys.png and b/public/images/trainer/amarys.png differ diff --git a/public/images/trainer/aqua_grunt_f.png b/public/images/trainer/aqua_grunt_f.png index 4db237bf9e7..61d6fd258bc 100644 Binary files a/public/images/trainer/aqua_grunt_f.png and b/public/images/trainer/aqua_grunt_f.png differ diff --git a/public/images/trainer/aqua_grunt_m.png b/public/images/trainer/aqua_grunt_m.png index 4fe230ca119..bddb6e9fa3c 100644 Binary files a/public/images/trainer/aqua_grunt_m.png and b/public/images/trainer/aqua_grunt_m.png differ diff --git a/public/images/trainer/archie.png b/public/images/trainer/archie.png index d4c003fd348..7b047322bfb 100644 Binary files a/public/images/trainer/archie.png and b/public/images/trainer/archie.png differ diff --git a/public/images/trainer/artist.png b/public/images/trainer/artist.png index 3843508aa36..99e5264d250 100644 Binary files a/public/images/trainer/artist.png and b/public/images/trainer/artist.png differ diff --git a/public/images/trainer/atticus.png b/public/images/trainer/atticus.png index 75cd70b72d8..6ed82233976 100644 Binary files a/public/images/trainer/atticus.png and b/public/images/trainer/atticus.png differ diff --git a/public/images/trainer/backers_f.png b/public/images/trainer/backers_f.png index 2d9a08ea89a..ac39e36e80b 100644 Binary files a/public/images/trainer/backers_f.png and b/public/images/trainer/backers_f.png differ diff --git a/public/images/trainer/backers_m.png b/public/images/trainer/backers_m.png index 0b5fda670ca..26d2bf9c70a 100644 Binary files a/public/images/trainer/backers_m.png and b/public/images/trainer/backers_m.png differ diff --git a/public/images/trainer/backpacker_f.png b/public/images/trainer/backpacker_f.png index 11e471a4649..89d70dca204 100644 Binary files a/public/images/trainer/backpacker_f.png and b/public/images/trainer/backpacker_f.png differ diff --git a/public/images/trainer/backpacker_m.png b/public/images/trainer/backpacker_m.png index b7397aa2555..295046b42c1 100644 Binary files a/public/images/trainer/backpacker_m.png and b/public/images/trainer/backpacker_m.png differ diff --git a/public/images/trainer/baker.png b/public/images/trainer/baker.png index 1f97fea2323..16a3079d181 100644 Binary files a/public/images/trainer/baker.png and b/public/images/trainer/baker.png differ diff --git a/public/images/trainer/bea.png b/public/images/trainer/bea.png index 844abc3df9f..1054b16f590 100644 Binary files a/public/images/trainer/bea.png and b/public/images/trainer/bea.png differ diff --git a/public/images/trainer/beauty.png b/public/images/trainer/beauty.png index 881bbead794..c3e209e30f2 100644 Binary files a/public/images/trainer/beauty.png and b/public/images/trainer/beauty.png differ diff --git a/public/images/trainer/bede.png b/public/images/trainer/bede.png index 7db54c785d9..b48920e8098 100644 Binary files a/public/images/trainer/bede.png and b/public/images/trainer/bede.png differ diff --git a/public/images/trainer/benga.png b/public/images/trainer/benga.png index a3ad1a93c8c..e9a268a105b 100644 Binary files a/public/images/trainer/benga.png and b/public/images/trainer/benga.png differ diff --git a/public/images/trainer/bertha.png b/public/images/trainer/bertha.png index 6b8f0b3e3e5..83a9f23d3fa 100644 Binary files a/public/images/trainer/bertha.png and b/public/images/trainer/bertha.png differ diff --git a/public/images/trainer/biker.png b/public/images/trainer/biker.png index 79ec6d15ec9..9b067958d8d 100644 Binary files a/public/images/trainer/biker.png and b/public/images/trainer/biker.png differ diff --git a/public/images/trainer/black_belt_f.png b/public/images/trainer/black_belt_f.png index 8567cd35cf7..b4a333c9d41 100644 Binary files a/public/images/trainer/black_belt_f.png and b/public/images/trainer/black_belt_f.png differ diff --git a/public/images/trainer/black_belt_m.png b/public/images/trainer/black_belt_m.png index c620c2d0e77..3d84251773b 100644 Binary files a/public/images/trainer/black_belt_m.png and b/public/images/trainer/black_belt_m.png differ diff --git a/public/images/trainer/blaine.png b/public/images/trainer/blaine.png index 86b1e3fef2d..389f8fc331c 100644 Binary files a/public/images/trainer/blaine.png and b/public/images/trainer/blaine.png differ diff --git a/public/images/trainer/blue.png b/public/images/trainer/blue.png index ff5c0883e13..0a1b7296d69 100644 Binary files a/public/images/trainer/blue.png and b/public/images/trainer/blue.png differ diff --git a/public/images/trainer/brassius.png b/public/images/trainer/brassius.png index 9e736d32f45..0b1c928b47a 100644 Binary files a/public/images/trainer/brassius.png and b/public/images/trainer/brassius.png differ diff --git a/public/images/trainer/brawly.png b/public/images/trainer/brawly.png index 11b2f7807ca..1a31cfa4d06 100644 Binary files a/public/images/trainer/brawly.png and b/public/images/trainer/brawly.png differ diff --git a/public/images/trainer/breeder_f.png b/public/images/trainer/breeder_f.png index 9995c61c217..2fa7ebdd36c 100644 Binary files a/public/images/trainer/breeder_f.png and b/public/images/trainer/breeder_f.png differ diff --git a/public/images/trainer/breeder_m.png b/public/images/trainer/breeder_m.png index 0ae024e3767..16588225352 100644 Binary files a/public/images/trainer/breeder_m.png and b/public/images/trainer/breeder_m.png differ diff --git a/public/images/trainer/brock.png b/public/images/trainer/brock.png index e4e06a63c55..91790be27ad 100644 Binary files a/public/images/trainer/brock.png and b/public/images/trainer/brock.png differ diff --git a/public/images/trainer/bruno.png b/public/images/trainer/bruno.png index 5dc90107ec2..10c394fbd68 100644 Binary files a/public/images/trainer/bruno.png and b/public/images/trainer/bruno.png differ diff --git a/public/images/trainer/brycen.png b/public/images/trainer/brycen.png index 7b26705b0e7..3f8e2be9100 100644 Binary files a/public/images/trainer/brycen.png and b/public/images/trainer/brycen.png differ diff --git a/public/images/trainer/buck.png b/public/images/trainer/buck.png index 2384fb42a33..fcf66000b47 100644 Binary files a/public/images/trainer/buck.png and b/public/images/trainer/buck.png differ diff --git a/public/images/trainer/bug_type_superfan.png b/public/images/trainer/bug_type_superfan.png index 0d2fd7a68ae..db622948152 100644 Binary files a/public/images/trainer/bug_type_superfan.png and b/public/images/trainer/bug_type_superfan.png differ diff --git a/public/images/trainer/bugsy.png b/public/images/trainer/bugsy.png index 59316fe6ed8..091f8a1219c 100644 Binary files a/public/images/trainer/bugsy.png and b/public/images/trainer/bugsy.png differ diff --git a/public/images/trainer/burgh.png b/public/images/trainer/burgh.png index fc41dafa7e3..24fd8f7bb31 100644 Binary files a/public/images/trainer/burgh.png and b/public/images/trainer/burgh.png differ diff --git a/public/images/trainer/byron.png b/public/images/trainer/byron.png index 0d815c94eaf..52830777c00 100644 Binary files a/public/images/trainer/byron.png and b/public/images/trainer/byron.png differ diff --git a/public/images/trainer/caitlin.png b/public/images/trainer/caitlin.png index 78ed7cc94dd..ecf96cb8a68 100644 Binary files a/public/images/trainer/caitlin.png and b/public/images/trainer/caitlin.png differ diff --git a/public/images/trainer/candice.png b/public/images/trainer/candice.png index 32539cdea8c..c0337b94a71 100644 Binary files a/public/images/trainer/candice.png and b/public/images/trainer/candice.png differ diff --git a/public/images/trainer/cheren.png b/public/images/trainer/cheren.png index cb230d910c4..f56accbb01b 100644 Binary files a/public/images/trainer/cheren.png and b/public/images/trainer/cheren.png differ diff --git a/public/images/trainer/cheryl.png b/public/images/trainer/cheryl.png index c46505f6b25..390ae7d88af 100644 Binary files a/public/images/trainer/cheryl.png and b/public/images/trainer/cheryl.png differ diff --git a/public/images/trainer/chili.png b/public/images/trainer/chili.png index f66b5aa841d..20f26201c44 100644 Binary files a/public/images/trainer/chili.png and b/public/images/trainer/chili.png differ diff --git a/public/images/trainer/chuck.png b/public/images/trainer/chuck.png index 511283ff5f5..852bc80a69c 100644 Binary files a/public/images/trainer/chuck.png and b/public/images/trainer/chuck.png differ diff --git a/public/images/trainer/cilan.png b/public/images/trainer/cilan.png index b5249c30e47..cbcf6f14b5d 100644 Binary files a/public/images/trainer/cilan.png and b/public/images/trainer/cilan.png differ diff --git a/public/images/trainer/clair.png b/public/images/trainer/clair.png index 9299c73a2f7..6e70dfab397 100644 Binary files a/public/images/trainer/clair.png and b/public/images/trainer/clair.png differ diff --git a/public/images/trainer/clay.png b/public/images/trainer/clay.png index 1aa788d7d72..a6418f382e2 100644 Binary files a/public/images/trainer/clay.png and b/public/images/trainer/clay.png differ diff --git a/public/images/trainer/clemont.png b/public/images/trainer/clemont.png index a93aa428002..8cc7e3cf8fb 100644 Binary files a/public/images/trainer/clemont.png and b/public/images/trainer/clemont.png differ diff --git a/public/images/trainer/clerk_f.png b/public/images/trainer/clerk_f.png index 7d522ed31a2..431dac64d75 100644 Binary files a/public/images/trainer/clerk_f.png and b/public/images/trainer/clerk_f.png differ diff --git a/public/images/trainer/clerk_m.png b/public/images/trainer/clerk_m.png index 69531b2a0dd..765094fea95 100644 Binary files a/public/images/trainer/clerk_m.png and b/public/images/trainer/clerk_m.png differ diff --git a/public/images/trainer/clerk_m_2.png b/public/images/trainer/clerk_m_2.png index 13f2f76c7cd..4ee3e07e810 100644 Binary files a/public/images/trainer/clerk_m_2.png and b/public/images/trainer/clerk_m_2.png differ diff --git a/public/images/trainer/colress.png b/public/images/trainer/colress.png index 49a316c95d5..f9bc0ecb01b 100644 Binary files a/public/images/trainer/colress.png and b/public/images/trainer/colress.png differ diff --git a/public/images/trainer/courtney.png b/public/images/trainer/courtney.png index 3db5151e61c..5e24995ebee 100644 Binary files a/public/images/trainer/courtney.png and b/public/images/trainer/courtney.png differ diff --git a/public/images/trainer/crasher_wake.png b/public/images/trainer/crasher_wake.png index 42bbf3a69c6..41ef2bff7c4 100644 Binary files a/public/images/trainer/crasher_wake.png and b/public/images/trainer/crasher_wake.png differ diff --git a/public/images/trainer/cress.png b/public/images/trainer/cress.png index 97448e0c561..6183dafdc4d 100644 Binary files a/public/images/trainer/cress.png and b/public/images/trainer/cress.png differ diff --git a/public/images/trainer/crispin.png b/public/images/trainer/crispin.png index 865e1ac1990..d6b21a30edc 100644 Binary files a/public/images/trainer/crispin.png and b/public/images/trainer/crispin.png differ diff --git a/public/images/trainer/cyclist_f.png b/public/images/trainer/cyclist_f.png index 8a809efb985..c1fad64a8b6 100644 Binary files a/public/images/trainer/cyclist_f.png and b/public/images/trainer/cyclist_f.png differ diff --git a/public/images/trainer/cyclist_m.png b/public/images/trainer/cyclist_m.png index 002b880babf..78015bf74a6 100644 Binary files a/public/images/trainer/cyclist_m.png and b/public/images/trainer/cyclist_m.png differ diff --git a/public/images/trainer/cynthia.png b/public/images/trainer/cynthia.png index 078c4522abd..6dbef7cc81b 100644 Binary files a/public/images/trainer/cynthia.png and b/public/images/trainer/cynthia.png differ diff --git a/public/images/trainer/cyrus.png b/public/images/trainer/cyrus.png index f7351340568..fc087b3d428 100644 Binary files a/public/images/trainer/cyrus.png and b/public/images/trainer/cyrus.png differ diff --git a/public/images/trainer/dancer.png b/public/images/trainer/dancer.png index f43feed6972..ae22fc4926d 100644 Binary files a/public/images/trainer/dancer.png and b/public/images/trainer/dancer.png differ diff --git a/public/images/trainer/depot_agent.png b/public/images/trainer/depot_agent.png index 6a7ac6326e9..41670eeb681 100644 Binary files a/public/images/trainer/depot_agent.png and b/public/images/trainer/depot_agent.png differ diff --git a/public/images/trainer/diantha.png b/public/images/trainer/diantha.png index 663eb3613ba..25ccaa08347 100644 Binary files a/public/images/trainer/diantha.png and b/public/images/trainer/diantha.png differ diff --git a/public/images/trainer/doctor_f.png b/public/images/trainer/doctor_f.png index eb9730f17fc..c386059cf6a 100644 Binary files a/public/images/trainer/doctor_f.png and b/public/images/trainer/doctor_f.png differ diff --git a/public/images/trainer/doctor_m.png b/public/images/trainer/doctor_m.png index 6fd41266ab1..03dc3c1add0 100644 Binary files a/public/images/trainer/doctor_m.png and b/public/images/trainer/doctor_m.png differ diff --git a/public/images/trainer/drake.png b/public/images/trainer/drake.png index 80d663d1149..322e9e247e5 100644 Binary files a/public/images/trainer/drake.png and b/public/images/trainer/drake.png differ diff --git a/public/images/trainer/drasna.png b/public/images/trainer/drasna.png index a6e1824f3a8..799c77c7536 100644 Binary files a/public/images/trainer/drasna.png and b/public/images/trainer/drasna.png differ diff --git a/public/images/trainer/drayden.png b/public/images/trainer/drayden.png index 76845bb7a93..97c56b4e3c1 100644 Binary files a/public/images/trainer/drayden.png and b/public/images/trainer/drayden.png differ diff --git a/public/images/trainer/drayton.png b/public/images/trainer/drayton.png index bd575b25937..e4108f87744 100644 Binary files a/public/images/trainer/drayton.png and b/public/images/trainer/drayton.png differ diff --git a/public/images/trainer/elesa.png b/public/images/trainer/elesa.png index 84c3f31b687..c0ff42ea16d 100644 Binary files a/public/images/trainer/elesa.png and b/public/images/trainer/elesa.png differ diff --git a/public/images/trainer/emmet.png b/public/images/trainer/emmet.png index 15019e1b4c7..dd18339a28d 100644 Binary files a/public/images/trainer/emmet.png and b/public/images/trainer/emmet.png differ diff --git a/public/images/trainer/eri.png b/public/images/trainer/eri.png index cb38f96b030..1ad9c948ef9 100644 Binary files a/public/images/trainer/eri.png and b/public/images/trainer/eri.png differ diff --git a/public/images/trainer/erika.png b/public/images/trainer/erika.png index f3018cde454..408da0444cd 100644 Binary files a/public/images/trainer/erika.png and b/public/images/trainer/erika.png differ diff --git a/public/images/trainer/expert_pokemon_breeder.png b/public/images/trainer/expert_pokemon_breeder.png index 0625f5255c3..0c53da6f2dc 100644 Binary files a/public/images/trainer/expert_pokemon_breeder.png and b/public/images/trainer/expert_pokemon_breeder.png differ diff --git a/public/images/trainer/faba.png b/public/images/trainer/faba.png index 1c509da8a78..c5dc107fe99 100644 Binary files a/public/images/trainer/faba.png and b/public/images/trainer/faba.png differ diff --git a/public/images/trainer/falkner.png b/public/images/trainer/falkner.png index b5ca8944620..ab628366d2c 100644 Binary files a/public/images/trainer/falkner.png and b/public/images/trainer/falkner.png differ diff --git a/public/images/trainer/fantina.png b/public/images/trainer/fantina.png index a0bea745d6e..f0f53f8e042 100644 Binary files a/public/images/trainer/fantina.png and b/public/images/trainer/fantina.png differ diff --git a/public/images/trainer/firebreather.png b/public/images/trainer/firebreather.png index 829496bd56e..daf0d2d1c1f 100644 Binary files a/public/images/trainer/firebreather.png and b/public/images/trainer/firebreather.png differ diff --git a/public/images/trainer/fisherman.png b/public/images/trainer/fisherman.png index b2656dbf360..b7344ac611a 100644 Binary files a/public/images/trainer/fisherman.png and b/public/images/trainer/fisherman.png differ diff --git a/public/images/trainer/flannery.png b/public/images/trainer/flannery.png index d909ee145fe..f538797b539 100644 Binary files a/public/images/trainer/flannery.png and b/public/images/trainer/flannery.png differ diff --git a/public/images/trainer/flare_grunt_f.png b/public/images/trainer/flare_grunt_f.png index e2a4dd7fe92..c7a3177d45f 100644 Binary files a/public/images/trainer/flare_grunt_f.png and b/public/images/trainer/flare_grunt_f.png differ diff --git a/public/images/trainer/flare_grunt_m.png b/public/images/trainer/flare_grunt_m.png index eb14dbed0e2..88dd10d10c5 100644 Binary files a/public/images/trainer/flare_grunt_m.png and b/public/images/trainer/flare_grunt_m.png differ diff --git a/public/images/trainer/flint.png b/public/images/trainer/flint.png index 46fc32c5796..d3d775da7f6 100644 Binary files a/public/images/trainer/flint.png and b/public/images/trainer/flint.png differ diff --git a/public/images/trainer/future_self_f.png b/public/images/trainer/future_self_f.png index e75c5e5e65b..9493d712ce0 100644 Binary files a/public/images/trainer/future_self_f.png and b/public/images/trainer/future_self_f.png differ diff --git a/public/images/trainer/future_self_m.png b/public/images/trainer/future_self_m.png index edd15cb6ea3..f6e7be1c38d 100644 Binary files a/public/images/trainer/future_self_m.png and b/public/images/trainer/future_self_m.png differ diff --git a/public/images/trainer/galactic_grunt_f.png b/public/images/trainer/galactic_grunt_f.png index 209d8ae09ba..27fe101d0e7 100644 Binary files a/public/images/trainer/galactic_grunt_f.png and b/public/images/trainer/galactic_grunt_f.png differ diff --git a/public/images/trainer/galactic_grunt_m.png b/public/images/trainer/galactic_grunt_m.png index 1fff818266c..5ccbc2ff194 100644 Binary files a/public/images/trainer/galactic_grunt_m.png and b/public/images/trainer/galactic_grunt_m.png differ diff --git a/public/images/trainer/gardenia.png b/public/images/trainer/gardenia.png index 3d28f2257f8..13cbdfccc47 100644 Binary files a/public/images/trainer/gardenia.png and b/public/images/trainer/gardenia.png differ diff --git a/public/images/trainer/geeta.png b/public/images/trainer/geeta.png index c14ff9deb56..2319cb21ecd 100644 Binary files a/public/images/trainer/geeta.png and b/public/images/trainer/geeta.png differ diff --git a/public/images/trainer/ghetsis.png b/public/images/trainer/ghetsis.png index e17bd7d7b95..00597b74a1e 100644 Binary files a/public/images/trainer/ghetsis.png and b/public/images/trainer/ghetsis.png differ diff --git a/public/images/trainer/giacomo.png b/public/images/trainer/giacomo.png index 352acaddf95..2a756c804b1 100644 Binary files a/public/images/trainer/giacomo.png and b/public/images/trainer/giacomo.png differ diff --git a/public/images/trainer/giovanni.png b/public/images/trainer/giovanni.png index 360f444c409..d372fcc0db5 100644 Binary files a/public/images/trainer/giovanni.png and b/public/images/trainer/giovanni.png differ diff --git a/public/images/trainer/glacia.png b/public/images/trainer/glacia.png index c73b9b69bab..3a6203096d5 100644 Binary files a/public/images/trainer/glacia.png and b/public/images/trainer/glacia.png differ diff --git a/public/images/trainer/gordie.png b/public/images/trainer/gordie.png index a91f7dacaa7..c588c956209 100644 Binary files a/public/images/trainer/gordie.png and b/public/images/trainer/gordie.png differ diff --git a/public/images/trainer/grant.png b/public/images/trainer/grant.png index 60cf5b8d493..56092076792 100644 Binary files a/public/images/trainer/grant.png and b/public/images/trainer/grant.png differ diff --git a/public/images/trainer/grimsley.png b/public/images/trainer/grimsley.png index 02b04d486d4..e8abca3adc1 100644 Binary files a/public/images/trainer/grimsley.png and b/public/images/trainer/grimsley.png differ diff --git a/public/images/trainer/grusha.png b/public/images/trainer/grusha.png index 73d6a8708b3..80963763465 100644 Binary files a/public/images/trainer/grusha.png and b/public/images/trainer/grusha.png differ diff --git a/public/images/trainer/guitarist.png b/public/images/trainer/guitarist.png index 94fdeb0fafd..7b86da2d9de 100644 Binary files a/public/images/trainer/guitarist.png and b/public/images/trainer/guitarist.png differ diff --git a/public/images/trainer/guzma.png b/public/images/trainer/guzma.png index 1ae6d8eb8d1..ffb17930b47 100644 Binary files a/public/images/trainer/guzma.png and b/public/images/trainer/guzma.png differ diff --git a/public/images/trainer/hala.png b/public/images/trainer/hala.png index 4f26cbb8ff3..d0972fb43ae 100644 Binary files a/public/images/trainer/hala.png and b/public/images/trainer/hala.png differ diff --git a/public/images/trainer/harlequin.png b/public/images/trainer/harlequin.png index e810db5c849..bed24c10510 100644 Binary files a/public/images/trainer/harlequin.png and b/public/images/trainer/harlequin.png differ diff --git a/public/images/trainer/hassel.png b/public/images/trainer/hassel.png index d78bc4dd5db..3c3d42ef8f8 100644 Binary files a/public/images/trainer/hassel.png and b/public/images/trainer/hassel.png differ diff --git a/public/images/trainer/hau.png b/public/images/trainer/hau.png index 7aa673a6fe9..4f4696779ad 100644 Binary files a/public/images/trainer/hau.png and b/public/images/trainer/hau.png differ diff --git a/public/images/trainer/hex_maniac.png b/public/images/trainer/hex_maniac.png index 7557dbf7797..5ed9deeea92 100644 Binary files a/public/images/trainer/hex_maniac.png and b/public/images/trainer/hex_maniac.png differ diff --git a/public/images/trainer/hiker.png b/public/images/trainer/hiker.png index 4d151cdf6f7..44d87b45e32 100644 Binary files a/public/images/trainer/hiker.png and b/public/images/trainer/hiker.png differ diff --git a/public/images/trainer/hooligans.png b/public/images/trainer/hooligans.png index e639e46f3ed..4a216f17a63 100644 Binary files a/public/images/trainer/hooligans.png and b/public/images/trainer/hooligans.png differ diff --git a/public/images/trainer/hoopster.png b/public/images/trainer/hoopster.png index c9ab835029c..5576224d0aa 100644 Binary files a/public/images/trainer/hoopster.png and b/public/images/trainer/hoopster.png differ diff --git a/public/images/trainer/hugh.png b/public/images/trainer/hugh.png index 638c7d350d8..8fa09efef64 100644 Binary files a/public/images/trainer/hugh.png and b/public/images/trainer/hugh.png differ diff --git a/public/images/trainer/infielder.png b/public/images/trainer/infielder.png index 0a8e22ac10c..7ad913cd0bf 100644 Binary files a/public/images/trainer/infielder.png and b/public/images/trainer/infielder.png differ diff --git a/public/images/trainer/ingo.png b/public/images/trainer/ingo.png index 638833acba6..d4e31c4c344 100644 Binary files a/public/images/trainer/ingo.png and b/public/images/trainer/ingo.png differ diff --git a/public/images/trainer/iono.png b/public/images/trainer/iono.png index e2637beba08..5e78c70dea4 100644 Binary files a/public/images/trainer/iono.png and b/public/images/trainer/iono.png differ diff --git a/public/images/trainer/iris.png b/public/images/trainer/iris.png index 943f49846b0..49526059f30 100644 Binary files a/public/images/trainer/iris.png and b/public/images/trainer/iris.png differ diff --git a/public/images/trainer/janine.png b/public/images/trainer/janine.png index 7caa31d487b..79a728d2c96 100644 Binary files a/public/images/trainer/janine.png and b/public/images/trainer/janine.png differ diff --git a/public/images/trainer/janitor.png b/public/images/trainer/janitor.png index c95f2f2e97e..0cb2f399944 100644 Binary files a/public/images/trainer/janitor.png and b/public/images/trainer/janitor.png differ diff --git a/public/images/trainer/jasmine.png b/public/images/trainer/jasmine.png index bb14acd7bcf..2fd744fe3f4 100644 Binary files a/public/images/trainer/jasmine.png and b/public/images/trainer/jasmine.png differ diff --git a/public/images/trainer/juan.png b/public/images/trainer/juan.png index fb7a376693b..add2de7bf5a 100644 Binary files a/public/images/trainer/juan.png and b/public/images/trainer/juan.png differ diff --git a/public/images/trainer/kabu.png b/public/images/trainer/kabu.png index bffcec47e1e..c6de5929d2a 100644 Binary files a/public/images/trainer/kabu.png and b/public/images/trainer/kabu.png differ diff --git a/public/images/trainer/kahili.png b/public/images/trainer/kahili.png index 94dea140f4c..c60873d31be 100644 Binary files a/public/images/trainer/kahili.png and b/public/images/trainer/kahili.png differ diff --git a/public/images/trainer/karen.png b/public/images/trainer/karen.png index 3ed1ef2d8ad..a5d90c9fc94 100644 Binary files a/public/images/trainer/karen.png and b/public/images/trainer/karen.png differ diff --git a/public/images/trainer/katy.png b/public/images/trainer/katy.png index 74da023252b..534abca0397 100644 Binary files a/public/images/trainer/katy.png and b/public/images/trainer/katy.png differ diff --git a/public/images/trainer/kieran.png b/public/images/trainer/kieran.png index c857052e2eb..9c167c4b30f 100644 Binary files a/public/images/trainer/kieran.png and b/public/images/trainer/kieran.png differ diff --git a/public/images/trainer/kofu.png b/public/images/trainer/kofu.png index ae7f364f7f6..bfbc8898ede 100644 Binary files a/public/images/trainer/kofu.png and b/public/images/trainer/kofu.png differ diff --git a/public/images/trainer/koga.png b/public/images/trainer/koga.png index f763d7eff6d..4ed714d63c0 100644 Binary files a/public/images/trainer/koga.png and b/public/images/trainer/koga.png differ diff --git a/public/images/trainer/korrina.png b/public/images/trainer/korrina.png index 8994afdddb1..db7d5102ce6 100644 Binary files a/public/images/trainer/korrina.png and b/public/images/trainer/korrina.png differ diff --git a/public/images/trainer/kukui.png b/public/images/trainer/kukui.png index aacf1c197ee..e06972b1dbb 100644 Binary files a/public/images/trainer/kukui.png and b/public/images/trainer/kukui.png differ diff --git a/public/images/trainer/lacey.png b/public/images/trainer/lacey.png index 0e71e6976c9..b62b524fa86 100644 Binary files a/public/images/trainer/lacey.png and b/public/images/trainer/lacey.png differ diff --git a/public/images/trainer/lance.png b/public/images/trainer/lance.png index 464a8da55b2..091dd5f8790 100644 Binary files a/public/images/trainer/lance.png and b/public/images/trainer/lance.png differ diff --git a/public/images/trainer/larry.png b/public/images/trainer/larry.png index 08dfa0bdc4b..486acf68078 100644 Binary files a/public/images/trainer/larry.png and b/public/images/trainer/larry.png differ diff --git a/public/images/trainer/lenora.png b/public/images/trainer/lenora.png index 11a58822296..df01b993925 100644 Binary files a/public/images/trainer/lenora.png and b/public/images/trainer/lenora.png differ diff --git a/public/images/trainer/leon.png b/public/images/trainer/leon.png index c907f0dc87c..c16132a95c3 100644 Binary files a/public/images/trainer/leon.png and b/public/images/trainer/leon.png differ diff --git a/public/images/trainer/linebacker.png b/public/images/trainer/linebacker.png index e82dd76b25c..315ca22c8f1 100644 Binary files a/public/images/trainer/linebacker.png and b/public/images/trainer/linebacker.png differ diff --git a/public/images/trainer/liza.png b/public/images/trainer/liza.png index 525607739cc..9412f90dc1f 100644 Binary files a/public/images/trainer/liza.png and b/public/images/trainer/liza.png differ diff --git a/public/images/trainer/lorelei.png b/public/images/trainer/lorelei.png index 30b6643d834..9dc7852887d 100644 Binary files a/public/images/trainer/lorelei.png and b/public/images/trainer/lorelei.png differ diff --git a/public/images/trainer/lt_surge.png b/public/images/trainer/lt_surge.png index df207e92bdd..483ba989759 100644 Binary files a/public/images/trainer/lt_surge.png and b/public/images/trainer/lt_surge.png differ diff --git a/public/images/trainer/lucian.png b/public/images/trainer/lucian.png index fabf59aad08..d10db6ea578 100644 Binary files a/public/images/trainer/lucian.png and b/public/images/trainer/lucian.png differ diff --git a/public/images/trainer/lusamine.png b/public/images/trainer/lusamine.png index 1619dc11e2d..b1b35f1fbeb 100644 Binary files a/public/images/trainer/lusamine.png and b/public/images/trainer/lusamine.png differ diff --git a/public/images/trainer/lysandre.png b/public/images/trainer/lysandre.png index fe6dafb00f8..71ee7998de2 100644 Binary files a/public/images/trainer/lysandre.png and b/public/images/trainer/lysandre.png differ diff --git a/public/images/trainer/macro_grunt_f.png b/public/images/trainer/macro_grunt_f.png index 85586126da1..0a7e20b8ab5 100644 Binary files a/public/images/trainer/macro_grunt_f.png and b/public/images/trainer/macro_grunt_f.png differ diff --git a/public/images/trainer/macro_grunt_m.png b/public/images/trainer/macro_grunt_m.png index 464c735c75d..980db918ac6 100644 Binary files a/public/images/trainer/macro_grunt_m.png and b/public/images/trainer/macro_grunt_m.png differ diff --git a/public/images/trainer/magma_grunt_f.png b/public/images/trainer/magma_grunt_f.png index 5ea582ad067..fa3d74b4049 100644 Binary files a/public/images/trainer/magma_grunt_f.png and b/public/images/trainer/magma_grunt_f.png differ diff --git a/public/images/trainer/magma_grunt_m.png b/public/images/trainer/magma_grunt_m.png index b2432a79d28..c2477104fb8 100644 Binary files a/public/images/trainer/magma_grunt_m.png and b/public/images/trainer/magma_grunt_m.png differ diff --git a/public/images/trainer/maid.png b/public/images/trainer/maid.png index 824c2f1a46c..b17a90a2358 100644 Binary files a/public/images/trainer/maid.png and b/public/images/trainer/maid.png differ diff --git a/public/images/trainer/malva.png b/public/images/trainer/malva.png index 850818e761b..cdff3f0cf58 100644 Binary files a/public/images/trainer/malva.png and b/public/images/trainer/malva.png differ diff --git a/public/images/trainer/marley.png b/public/images/trainer/marley.png index 8e78e11e8ad..2fc9ce88a76 100644 Binary files a/public/images/trainer/marley.png and b/public/images/trainer/marley.png differ diff --git a/public/images/trainer/marlon.png b/public/images/trainer/marlon.png index 657ae5eef0e..edf735d8d1e 100644 Binary files a/public/images/trainer/marlon.png and b/public/images/trainer/marlon.png differ diff --git a/public/images/trainer/marnie.png b/public/images/trainer/marnie.png index 1cbac5f67a5..65b03c2a66c 100644 Binary files a/public/images/trainer/marnie.png and b/public/images/trainer/marnie.png differ diff --git a/public/images/trainer/marshal.png b/public/images/trainer/marshal.png index b705a547a28..5bfcdb032d0 100644 Binary files a/public/images/trainer/marshal.png and b/public/images/trainer/marshal.png differ diff --git a/public/images/trainer/maxie.png b/public/images/trainer/maxie.png index 232082f869f..741c439ff97 100644 Binary files a/public/images/trainer/maxie.png and b/public/images/trainer/maxie.png differ diff --git a/public/images/trainer/maylene.png b/public/images/trainer/maylene.png index 09fbbd72982..69ab563b79c 100644 Binary files a/public/images/trainer/maylene.png and b/public/images/trainer/maylene.png differ diff --git a/public/images/trainer/mela.png b/public/images/trainer/mela.png index a98547d6380..7e2eceef1a1 100644 Binary files a/public/images/trainer/mela.png and b/public/images/trainer/mela.png differ diff --git a/public/images/trainer/melony.png b/public/images/trainer/melony.png index 01a148396da..3a58cf1c431 100644 Binary files a/public/images/trainer/melony.png and b/public/images/trainer/melony.png differ diff --git a/public/images/trainer/milo.png b/public/images/trainer/milo.png index dbc7878185e..859500024da 100644 Binary files a/public/images/trainer/milo.png and b/public/images/trainer/milo.png differ diff --git a/public/images/trainer/mira.png b/public/images/trainer/mira.png index 5c1afe5d241..4e6b08d7c87 100644 Binary files a/public/images/trainer/mira.png and b/public/images/trainer/mira.png differ diff --git a/public/images/trainer/misty.png b/public/images/trainer/misty.png index 56b9beae28c..9c90330a4c3 100644 Binary files a/public/images/trainer/misty.png and b/public/images/trainer/misty.png differ diff --git a/public/images/trainer/molayne.png b/public/images/trainer/molayne.png index c400e5be33d..89ff5dd4678 100644 Binary files a/public/images/trainer/molayne.png and b/public/images/trainer/molayne.png differ diff --git a/public/images/trainer/morty.png b/public/images/trainer/morty.png index 5aad41ca1b6..15ec18c6822 100644 Binary files a/public/images/trainer/morty.png and b/public/images/trainer/morty.png differ diff --git a/public/images/trainer/musician.png b/public/images/trainer/musician.png index 72f5ec495c2..db9373c9764 100644 Binary files a/public/images/trainer/musician.png and b/public/images/trainer/musician.png differ diff --git a/public/images/trainer/mustard.png b/public/images/trainer/mustard.png index 0acba02db45..2a58de341dd 100644 Binary files a/public/images/trainer/mustard.png and b/public/images/trainer/mustard.png differ diff --git a/public/images/trainer/nate.png b/public/images/trainer/nate.png index aebbe7a2da9..6798b80efdd 100644 Binary files a/public/images/trainer/nate.png and b/public/images/trainer/nate.png differ diff --git a/public/images/trainer/nemona.png b/public/images/trainer/nemona.png index 83a9e803df4..c30b46602d3 100644 Binary files a/public/images/trainer/nemona.png and b/public/images/trainer/nemona.png differ diff --git a/public/images/trainer/nessa.png b/public/images/trainer/nessa.png index b645ff7159a..53f4f1edf94 100644 Binary files a/public/images/trainer/nessa.png and b/public/images/trainer/nessa.png differ diff --git a/public/images/trainer/norman.png b/public/images/trainer/norman.png index 16dd4d5b2ba..39ab24236bf 100644 Binary files a/public/images/trainer/norman.png and b/public/images/trainer/norman.png differ diff --git a/public/images/trainer/nursery_aide.png b/public/images/trainer/nursery_aide.png index a0cbb549864..a49b12c0729 100644 Binary files a/public/images/trainer/nursery_aide.png and b/public/images/trainer/nursery_aide.png differ diff --git a/public/images/trainer/officer.png b/public/images/trainer/officer.png index 6a6da4cdcc0..b2b2af2f0c3 100644 Binary files a/public/images/trainer/officer.png and b/public/images/trainer/officer.png differ diff --git a/public/images/trainer/oleana.png b/public/images/trainer/oleana.png index e74fb6ab2eb..811e5a81b15 100644 Binary files a/public/images/trainer/oleana.png and b/public/images/trainer/oleana.png differ diff --git a/public/images/trainer/olivia.png b/public/images/trainer/olivia.png index 60b4336efdb..d9e47ae3ca5 100644 Binary files a/public/images/trainer/olivia.png and b/public/images/trainer/olivia.png differ diff --git a/public/images/trainer/olympia.png b/public/images/trainer/olympia.png index 5faa566d31b..a84068a7148 100644 Binary files a/public/images/trainer/olympia.png and b/public/images/trainer/olympia.png differ diff --git a/public/images/trainer/opal.png b/public/images/trainer/opal.png index 8fbf608526f..f7eb342bdf8 100644 Binary files a/public/images/trainer/opal.png and b/public/images/trainer/opal.png differ diff --git a/public/images/trainer/ortega.png b/public/images/trainer/ortega.png index cede7b6c311..8b9b6ce7409 100644 Binary files a/public/images/trainer/ortega.png and b/public/images/trainer/ortega.png differ diff --git a/public/images/trainer/parasol_lady.png b/public/images/trainer/parasol_lady.png index 8610320dca4..53855f00100 100644 Binary files a/public/images/trainer/parasol_lady.png and b/public/images/trainer/parasol_lady.png differ diff --git a/public/images/trainer/penny.png b/public/images/trainer/penny.png index 67c90a41462..1fd8dd8aa4d 100644 Binary files a/public/images/trainer/penny.png and b/public/images/trainer/penny.png differ diff --git a/public/images/trainer/phoebe.png b/public/images/trainer/phoebe.png index eb0bf9f61bb..44506d6bc66 100644 Binary files a/public/images/trainer/phoebe.png and b/public/images/trainer/phoebe.png differ diff --git a/public/images/trainer/piers.png b/public/images/trainer/piers.png index 7730a2d54ca..155b39bcb09 100644 Binary files a/public/images/trainer/piers.png and b/public/images/trainer/piers.png differ diff --git a/public/images/trainer/pilot.png b/public/images/trainer/pilot.png index 0956c048ed9..393742c4941 100644 Binary files a/public/images/trainer/pilot.png and b/public/images/trainer/pilot.png differ diff --git a/public/images/trainer/plasma_grunt_f.png b/public/images/trainer/plasma_grunt_f.png index 7fa804cc39d..c2198d815ad 100644 Binary files a/public/images/trainer/plasma_grunt_f.png and b/public/images/trainer/plasma_grunt_f.png differ diff --git a/public/images/trainer/plasma_grunt_m.png b/public/images/trainer/plasma_grunt_m.png index 801e91b1d6d..040b602e272 100644 Binary files a/public/images/trainer/plasma_grunt_m.png and b/public/images/trainer/plasma_grunt_m.png differ diff --git a/public/images/trainer/player_alt_f.png b/public/images/trainer/player_alt_f.png index b244076da83..c03b7792be1 100644 Binary files a/public/images/trainer/player_alt_f.png and b/public/images/trainer/player_alt_f.png differ diff --git a/public/images/trainer/player_alt_m.png b/public/images/trainer/player_alt_m.png index 935c7b8ba1b..659f21aa530 100644 Binary files a/public/images/trainer/player_alt_m.png and b/public/images/trainer/player_alt_m.png differ diff --git a/public/images/trainer/player_f.png b/public/images/trainer/player_f.png index f2f9169d6aa..c775fdf84ea 100644 Binary files a/public/images/trainer/player_f.png and b/public/images/trainer/player_f.png differ diff --git a/public/images/trainer/player_m.png b/public/images/trainer/player_m.png index 7dd60695fb2..96e73e271f1 100644 Binary files a/public/images/trainer/player_m.png and b/public/images/trainer/player_m.png differ diff --git a/public/images/trainer/plumeria.png b/public/images/trainer/plumeria.png index 4528c3e2053..f1903a9ca8e 100644 Binary files a/public/images/trainer/plumeria.png and b/public/images/trainer/plumeria.png differ diff --git a/public/images/trainer/pokefan_f.png b/public/images/trainer/pokefan_f.png index 9464d4ee858..4818584f15f 100644 Binary files a/public/images/trainer/pokefan_f.png and b/public/images/trainer/pokefan_f.png differ diff --git a/public/images/trainer/pokefan_m.png b/public/images/trainer/pokefan_m.png index ffba222874d..8057f5417b2 100644 Binary files a/public/images/trainer/pokefan_m.png and b/public/images/trainer/pokefan_m.png differ diff --git a/public/images/trainer/poppy.png b/public/images/trainer/poppy.png index 750043084c0..8055562ed19 100644 Binary files a/public/images/trainer/poppy.png and b/public/images/trainer/poppy.png differ diff --git a/public/images/trainer/preschooler_f.png b/public/images/trainer/preschooler_f.png index 1d265ffc97f..0668e5a22a0 100644 Binary files a/public/images/trainer/preschooler_f.png and b/public/images/trainer/preschooler_f.png differ diff --git a/public/images/trainer/preschooler_m.png b/public/images/trainer/preschooler_m.png index bfbc6d8fb53..3b2376c7ae3 100644 Binary files a/public/images/trainer/preschooler_m.png and b/public/images/trainer/preschooler_m.png differ diff --git a/public/images/trainer/pryce.png b/public/images/trainer/pryce.png index 90d884085e5..0da1d3f13f8 100644 Binary files a/public/images/trainer/pryce.png and b/public/images/trainer/pryce.png differ diff --git a/public/images/trainer/psychic_f.png b/public/images/trainer/psychic_f.png index 45978bc4ee1..f3e8ea6c795 100644 Binary files a/public/images/trainer/psychic_f.png and b/public/images/trainer/psychic_f.png differ diff --git a/public/images/trainer/psychic_m.png b/public/images/trainer/psychic_m.png index af62c9ae440..a871f261ff6 100644 Binary files a/public/images/trainer/psychic_m.png and b/public/images/trainer/psychic_m.png differ diff --git a/public/images/trainer/raihan.png b/public/images/trainer/raihan.png index a23c2b61e14..651482ff439 100644 Binary files a/public/images/trainer/raihan.png and b/public/images/trainer/raihan.png differ diff --git a/public/images/trainer/ramos.png b/public/images/trainer/ramos.png index ad47c93cbe5..76855734a90 100644 Binary files a/public/images/trainer/ramos.png and b/public/images/trainer/ramos.png differ diff --git a/public/images/trainer/ranger_f.png b/public/images/trainer/ranger_f.png index 713d793e65e..82fe5bb82fd 100644 Binary files a/public/images/trainer/ranger_f.png and b/public/images/trainer/ranger_f.png differ diff --git a/public/images/trainer/ranger_m.png b/public/images/trainer/ranger_m.png index 785502a9326..1c03cc6800d 100644 Binary files a/public/images/trainer/ranger_m.png and b/public/images/trainer/ranger_m.png differ diff --git a/public/images/trainer/red.png b/public/images/trainer/red.png index fd0da367b25..8f2573dda89 100644 Binary files a/public/images/trainer/red.png and b/public/images/trainer/red.png differ diff --git a/public/images/trainer/rich_f.png b/public/images/trainer/rich_f.png index 05b4e4c0d87..2d781ec1982 100644 Binary files a/public/images/trainer/rich_f.png and b/public/images/trainer/rich_f.png differ diff --git a/public/images/trainer/rich_kid_f.png b/public/images/trainer/rich_kid_f.png index 9985a098e03..c172f40b969 100644 Binary files a/public/images/trainer/rich_kid_f.png and b/public/images/trainer/rich_kid_f.png differ diff --git a/public/images/trainer/rich_kid_m.png b/public/images/trainer/rich_kid_m.png index 86b5428ae99..0f1ba099691 100644 Binary files a/public/images/trainer/rich_kid_m.png and b/public/images/trainer/rich_kid_m.png differ diff --git a/public/images/trainer/rich_m.png b/public/images/trainer/rich_m.png index 56f674536eb..8718fdc669e 100644 Binary files a/public/images/trainer/rich_m.png and b/public/images/trainer/rich_m.png differ diff --git a/public/images/trainer/rika.png b/public/images/trainer/rika.png index f5848fda219..e7c0bea47f0 100644 Binary files a/public/images/trainer/rika.png and b/public/images/trainer/rika.png differ diff --git a/public/images/trainer/riley.png b/public/images/trainer/riley.png index a9f0e3b53a9..8f6088a3982 100644 Binary files a/public/images/trainer/riley.png and b/public/images/trainer/riley.png differ diff --git a/public/images/trainer/rival_f.png b/public/images/trainer/rival_f.png index 2495192d1fc..9b5519ac98c 100644 Binary files a/public/images/trainer/rival_f.png and b/public/images/trainer/rival_f.png differ diff --git a/public/images/trainer/rival_m.png b/public/images/trainer/rival_m.png index 86e4bfac879..243c9ca8534 100644 Binary files a/public/images/trainer/rival_m.png and b/public/images/trainer/rival_m.png differ diff --git a/public/images/trainer/roark.png b/public/images/trainer/roark.png index 37354c5afd7..c29d629f15f 100644 Binary files a/public/images/trainer/roark.png and b/public/images/trainer/roark.png differ diff --git a/public/images/trainer/rocket_grunt_f.png b/public/images/trainer/rocket_grunt_f.png index c4f6e96dec4..b69e4c95638 100644 Binary files a/public/images/trainer/rocket_grunt_f.png and b/public/images/trainer/rocket_grunt_f.png differ diff --git a/public/images/trainer/rocket_grunt_m.png b/public/images/trainer/rocket_grunt_m.png index 027da6cacb0..0dffe2aa7b4 100644 Binary files a/public/images/trainer/rocket_grunt_m.png and b/public/images/trainer/rocket_grunt_m.png differ diff --git a/public/images/trainer/rood.png b/public/images/trainer/rood.png index b2bc88aa1c4..198f32405ec 100644 Binary files a/public/images/trainer/rood.png and b/public/images/trainer/rood.png differ diff --git a/public/images/trainer/rosa.png b/public/images/trainer/rosa.png index 87d35510dda..7cba799b0c0 100644 Binary files a/public/images/trainer/rosa.png and b/public/images/trainer/rosa.png differ diff --git a/public/images/trainer/rose.png b/public/images/trainer/rose.png index 4c448e3302b..0365f1463ce 100644 Binary files a/public/images/trainer/rose.png and b/public/images/trainer/rose.png differ diff --git a/public/images/trainer/roughneck.png b/public/images/trainer/roughneck.png index 7ddff3373a0..5dee090991b 100644 Binary files a/public/images/trainer/roughneck.png and b/public/images/trainer/roughneck.png differ diff --git a/public/images/trainer/roxanne.png b/public/images/trainer/roxanne.png index ab0b88c6491..9bf9cad24be 100644 Binary files a/public/images/trainer/roxanne.png and b/public/images/trainer/roxanne.png differ diff --git a/public/images/trainer/roxie.png b/public/images/trainer/roxie.png index f0189c961b7..356377da04a 100644 Binary files a/public/images/trainer/roxie.png and b/public/images/trainer/roxie.png differ diff --git a/public/images/trainer/ryme.png b/public/images/trainer/ryme.png index f7756e94c94..efa70c27ad1 100644 Binary files a/public/images/trainer/ryme.png and b/public/images/trainer/ryme.png differ diff --git a/public/images/trainer/sabrina.png b/public/images/trainer/sabrina.png index da3e0550023..adaf8baf826 100644 Binary files a/public/images/trainer/sabrina.png and b/public/images/trainer/sabrina.png differ diff --git a/public/images/trainer/sailor.png b/public/images/trainer/sailor.png index ec61152bce3..80668a3e8fb 100644 Binary files a/public/images/trainer/sailor.png and b/public/images/trainer/sailor.png differ diff --git a/public/images/trainer/school_kid_f.png b/public/images/trainer/school_kid_f.png index 53814a045c3..4016ab433ea 100644 Binary files a/public/images/trainer/school_kid_f.png and b/public/images/trainer/school_kid_f.png differ diff --git a/public/images/trainer/school_kid_m.png b/public/images/trainer/school_kid_m.png index 3ae8eee89ae..8c80854078e 100644 Binary files a/public/images/trainer/school_kid_m.png and b/public/images/trainer/school_kid_m.png differ diff --git a/public/images/trainer/scientist_f.png b/public/images/trainer/scientist_f.png index b8d520f3e0c..e91b73fd5ce 100644 Binary files a/public/images/trainer/scientist_f.png and b/public/images/trainer/scientist_f.png differ diff --git a/public/images/trainer/scientist_m.png b/public/images/trainer/scientist_m.png index b4d200a0e27..184638085ac 100644 Binary files a/public/images/trainer/scientist_m.png and b/public/images/trainer/scientist_m.png differ diff --git a/public/images/trainer/shauntal.png b/public/images/trainer/shauntal.png index 9b64ff966f4..3bdad41bf68 100644 Binary files a/public/images/trainer/shauntal.png and b/public/images/trainer/shauntal.png differ diff --git a/public/images/trainer/shelly.png b/public/images/trainer/shelly.png index 95e6a07310d..4be79909123 100644 Binary files a/public/images/trainer/shelly.png and b/public/images/trainer/shelly.png differ diff --git a/public/images/trainer/sidney.png b/public/images/trainer/sidney.png index 72e6db5e4af..bc6226b58d1 100644 Binary files a/public/images/trainer/sidney.png and b/public/images/trainer/sidney.png differ diff --git a/public/images/trainer/siebold.png b/public/images/trainer/siebold.png index 0ac8038f87e..521a6fc911b 100644 Binary files a/public/images/trainer/siebold.png and b/public/images/trainer/siebold.png differ diff --git a/public/images/trainer/skull_grunt_f.png b/public/images/trainer/skull_grunt_f.png index c26e8d7f882..e92cdaf26ff 100644 Binary files a/public/images/trainer/skull_grunt_f.png and b/public/images/trainer/skull_grunt_f.png differ diff --git a/public/images/trainer/skull_grunt_m.png b/public/images/trainer/skull_grunt_m.png index 8babb09ec74..e1d3fc24713 100644 Binary files a/public/images/trainer/skull_grunt_m.png and b/public/images/trainer/skull_grunt_m.png differ diff --git a/public/images/trainer/skyla.png b/public/images/trainer/skyla.png index bdf9200eef3..209a672764c 100644 Binary files a/public/images/trainer/skyla.png and b/public/images/trainer/skyla.png differ diff --git a/public/images/trainer/smasher.png b/public/images/trainer/smasher.png index 7cda7f48365..74832f72bdb 100644 Binary files a/public/images/trainer/smasher.png and b/public/images/trainer/smasher.png differ diff --git a/public/images/trainer/snow_worker.png b/public/images/trainer/snow_worker.png index 0e39505cc8d..805d6e70e56 100644 Binary files a/public/images/trainer/snow_worker.png and b/public/images/trainer/snow_worker.png differ diff --git a/public/images/trainer/snow_worker_f.png b/public/images/trainer/snow_worker_f.png index e52dbf31514..02eab1ae027 100644 Binary files a/public/images/trainer/snow_worker_f.png and b/public/images/trainer/snow_worker_f.png differ diff --git a/public/images/trainer/snow_worker_m.png b/public/images/trainer/snow_worker_m.png index 0e39505cc8d..805d6e70e56 100644 Binary files a/public/images/trainer/snow_worker_m.png and b/public/images/trainer/snow_worker_m.png differ diff --git a/public/images/trainer/star_grunt_f.png b/public/images/trainer/star_grunt_f.png index ee0c25147cc..26f865a99f8 100644 Binary files a/public/images/trainer/star_grunt_f.png and b/public/images/trainer/star_grunt_f.png differ diff --git a/public/images/trainer/star_grunt_m.png b/public/images/trainer/star_grunt_m.png index 13fd4e88510..981d8af43e9 100644 Binary files a/public/images/trainer/star_grunt_m.png and b/public/images/trainer/star_grunt_m.png differ diff --git a/public/images/trainer/steven.png b/public/images/trainer/steven.png index 969d7b3d08c..ab18f202d3a 100644 Binary files a/public/images/trainer/steven.png and b/public/images/trainer/steven.png differ diff --git a/public/images/trainer/striker.png b/public/images/trainer/striker.png index 656a14833a1..2d9f87cf214 100644 Binary files a/public/images/trainer/striker.png and b/public/images/trainer/striker.png differ diff --git a/public/images/trainer/swimmer_f.png b/public/images/trainer/swimmer_f.png index 0a37d19172b..5514e1ac949 100644 Binary files a/public/images/trainer/swimmer_f.png and b/public/images/trainer/swimmer_f.png differ diff --git a/public/images/trainer/swimmer_m.png b/public/images/trainer/swimmer_m.png index 517ed5cfc65..ae028e93fe8 100644 Binary files a/public/images/trainer/swimmer_m.png and b/public/images/trainer/swimmer_m.png differ diff --git a/public/images/trainer/tate.png b/public/images/trainer/tate.png index 1702c2c7e7e..d1f66d77409 100644 Binary files a/public/images/trainer/tate.png and b/public/images/trainer/tate.png differ diff --git a/public/images/trainer/trainer_f_back.png b/public/images/trainer/trainer_f_back.png index 8c528ad5610..67f6c71b7d8 100644 Binary files a/public/images/trainer/trainer_f_back.png and b/public/images/trainer/trainer_f_back.png differ diff --git a/public/images/trainer/trainer_f_back_pb.png b/public/images/trainer/trainer_f_back_pb.png index e1c9b6d6ca4..f0497142d04 100644 Binary files a/public/images/trainer/trainer_f_back_pb.png and b/public/images/trainer/trainer_f_back_pb.png differ diff --git a/public/images/trainer/trainer_m_back.png b/public/images/trainer/trainer_m_back.png index 9e40d634ad7..5721107641e 100644 Binary files a/public/images/trainer/trainer_m_back.png and b/public/images/trainer/trainer_m_back.png differ diff --git a/public/images/trainer/trainer_m_back_pb.png b/public/images/trainer/trainer_m_back_pb.png index 8980a4e8249..06b1833e94a 100644 Binary files a/public/images/trainer/trainer_m_back_pb.png and b/public/images/trainer/trainer_m_back_pb.png differ diff --git a/public/images/trainer/tulip.png b/public/images/trainer/tulip.png index 87c9f3fd029..ed0fa56b494 100644 Binary files a/public/images/trainer/tulip.png and b/public/images/trainer/tulip.png differ diff --git a/public/images/trainer/twins.png b/public/images/trainer/twins.png index 9114c998285..8c3e3881458 100644 Binary files a/public/images/trainer/twins.png and b/public/images/trainer/twins.png differ diff --git a/public/images/trainer/unknown_f.png b/public/images/trainer/unknown_f.png index f7fb6d789a8..88cd0bb18c7 100644 Binary files a/public/images/trainer/unknown_f.png and b/public/images/trainer/unknown_f.png differ diff --git a/public/images/trainer/unknown_m.png b/public/images/trainer/unknown_m.png index a48f97af57a..df36d351b3d 100644 Binary files a/public/images/trainer/unknown_m.png and b/public/images/trainer/unknown_m.png differ diff --git a/public/images/trainer/valerie.png b/public/images/trainer/valerie.png index dc03beceb56..d8e652cdc82 100644 Binary files a/public/images/trainer/valerie.png and b/public/images/trainer/valerie.png differ diff --git a/public/images/trainer/veteran_f.png b/public/images/trainer/veteran_f.png index d6117581ff3..e49f49cb209 100644 Binary files a/public/images/trainer/veteran_f.png and b/public/images/trainer/veteran_f.png differ diff --git a/public/images/trainer/veteran_m.png b/public/images/trainer/veteran_m.png index 1f1d864859d..d30e3b18fed 100644 Binary files a/public/images/trainer/veteran_m.png and b/public/images/trainer/veteran_m.png differ diff --git a/public/images/trainer/vicky.png b/public/images/trainer/vicky.png index 3e2d6c13696..19020b9e204 100644 Binary files a/public/images/trainer/vicky.png and b/public/images/trainer/vicky.png differ diff --git a/public/images/trainer/victor.png b/public/images/trainer/victor.png index 3ffddea24bb..e7455126957 100644 Binary files a/public/images/trainer/victor.png and b/public/images/trainer/victor.png differ diff --git a/public/images/trainer/victoria.png b/public/images/trainer/victoria.png index e2874f266ad..8ee103e6376 100644 Binary files a/public/images/trainer/victoria.png and b/public/images/trainer/victoria.png differ diff --git a/public/images/trainer/viola.png b/public/images/trainer/viola.png index 0f6f19cadff..e9484ec0bca 100644 Binary files a/public/images/trainer/viola.png and b/public/images/trainer/viola.png differ diff --git a/public/images/trainer/vito.png b/public/images/trainer/vito.png index a7c6c0444f4..88fa724fc00 100644 Binary files a/public/images/trainer/vito.png and b/public/images/trainer/vito.png differ diff --git a/public/images/trainer/vivi.png b/public/images/trainer/vivi.png index cd97e676cfb..d4652590756 100644 Binary files a/public/images/trainer/vivi.png and b/public/images/trainer/vivi.png differ diff --git a/public/images/trainer/volkner.png b/public/images/trainer/volkner.png index d791513764a..b6fac546efa 100644 Binary files a/public/images/trainer/volkner.png and b/public/images/trainer/volkner.png differ diff --git a/public/images/trainer/waiter_f.png b/public/images/trainer/waiter_f.png index 2fbe15759e2..63aaa72f61e 100644 Binary files a/public/images/trainer/waiter_f.png and b/public/images/trainer/waiter_f.png differ diff --git a/public/images/trainer/waiter_m.png b/public/images/trainer/waiter_m.png index 2c9f01e9b49..24bf074d322 100644 Binary files a/public/images/trainer/waiter_m.png and b/public/images/trainer/waiter_m.png differ diff --git a/public/images/trainer/wallace.png b/public/images/trainer/wallace.png index c52997c700b..f5c366e07d9 100644 Binary files a/public/images/trainer/wallace.png and b/public/images/trainer/wallace.png differ diff --git a/public/images/trainer/wattson.png b/public/images/trainer/wattson.png index e31db579ac1..3a115e8e702 100644 Binary files a/public/images/trainer/wattson.png and b/public/images/trainer/wattson.png differ diff --git a/public/images/trainer/whitney.png b/public/images/trainer/whitney.png index 8177f4491ec..69a87bc1105 100644 Binary files a/public/images/trainer/whitney.png and b/public/images/trainer/whitney.png differ diff --git a/public/images/trainer/wikstrom.png b/public/images/trainer/wikstrom.png index c78630a3a11..bf0f5042eb9 100644 Binary files a/public/images/trainer/wikstrom.png and b/public/images/trainer/wikstrom.png differ diff --git a/public/images/trainer/will.png b/public/images/trainer/will.png index 918fe06431a..6095b21584e 100644 Binary files a/public/images/trainer/will.png and b/public/images/trainer/will.png differ diff --git a/public/images/trainer/winona.png b/public/images/trainer/winona.png index 362941ea5fa..4fa37c83799 100644 Binary files a/public/images/trainer/winona.png and b/public/images/trainer/winona.png differ diff --git a/public/images/trainer/worker_f.png b/public/images/trainer/worker_f.png index e52dbf31514..02eab1ae027 100644 Binary files a/public/images/trainer/worker_f.png and b/public/images/trainer/worker_f.png differ diff --git a/public/images/trainer/worker_m.png b/public/images/trainer/worker_m.png index 53bfd8047cd..0142c1053c8 100644 Binary files a/public/images/trainer/worker_m.png and b/public/images/trainer/worker_m.png differ diff --git a/public/images/trainer/wulfric.png b/public/images/trainer/wulfric.png index f379afa2260..6f146d502ac 100644 Binary files a/public/images/trainer/wulfric.png and b/public/images/trainer/wulfric.png differ diff --git a/public/images/trainer/youngster_f.png b/public/images/trainer/youngster_f.png index 40b5a947be8..886b1e90963 100644 Binary files a/public/images/trainer/youngster_f.png and b/public/images/trainer/youngster_f.png differ diff --git a/public/images/trainer/youngster_m.png b/public/images/trainer/youngster_m.png index 5f092f96ef1..543536c2412 100644 Binary files a/public/images/trainer/youngster_m.png and b/public/images/trainer/youngster_m.png differ diff --git a/public/images/trainer/zinzolin.png b/public/images/trainer/zinzolin.png index 6c866562989..a376a1cdd7d 100644 Binary files a/public/images/trainer/zinzolin.png and b/public/images/trainer/zinzolin.png differ diff --git a/public/images/types.png b/public/images/types.png index 8b644f1041c..26cb6111c8e 100644 Binary files a/public/images/types.png and b/public/images/types.png differ diff --git a/public/images/types_ca.png b/public/images/types_ca.png index a1c295d7b9b..363589b6421 100644 Binary files a/public/images/types_ca.png and b/public/images/types_ca.png differ diff --git a/public/images/types_da.png b/public/images/types_da.png index f2b7af8967a..c199e078376 100644 Binary files a/public/images/types_da.png and b/public/images/types_da.png differ diff --git a/public/images/types_de.png b/public/images/types_de.png index a033554029c..0e1d77e73b2 100755 Binary files a/public/images/types_de.png and b/public/images/types_de.png differ diff --git a/public/images/types_es-ES.png b/public/images/types_es-ES.png index 3596b7f6a0a..79797df11e0 100644 Binary files a/public/images/types_es-ES.png and b/public/images/types_es-ES.png differ diff --git a/public/images/types_es-MX.png b/public/images/types_es-MX.png index ad159a7c6bb..49c99bfaf35 100644 Binary files a/public/images/types_es-MX.png and b/public/images/types_es-MX.png differ diff --git a/public/images/types_fr.png b/public/images/types_fr.png index bf81bed1b22..4ee31a0fb36 100644 Binary files a/public/images/types_fr.png and b/public/images/types_fr.png differ diff --git a/public/images/types_it.png b/public/images/types_it.png index 3be03aeea68..61079be81c0 100644 Binary files a/public/images/types_it.png and b/public/images/types_it.png differ diff --git a/public/images/types_ja.png b/public/images/types_ja.png index a6f3b00607f..072e723f9a8 100644 Binary files a/public/images/types_ja.png and b/public/images/types_ja.png differ diff --git a/public/images/types_ko.png b/public/images/types_ko.png index 53342ddd3ec..d8f7b2a7761 100644 Binary files a/public/images/types_ko.png and b/public/images/types_ko.png differ diff --git a/public/images/types_pt-BR.png b/public/images/types_pt-BR.png index 71bb1471ff2..58b6b14bcf4 100644 Binary files a/public/images/types_pt-BR.png and b/public/images/types_pt-BR.png differ diff --git a/public/images/types_ro.png b/public/images/types_ro.png index 35b09a37035..4eaadd8877b 100644 Binary files a/public/images/types_ro.png and b/public/images/types_ro.png differ diff --git a/public/images/types_ru.png b/public/images/types_ru.png index 1e0615f721f..8ce9c06f905 100644 Binary files a/public/images/types_ru.png and b/public/images/types_ru.png differ diff --git a/public/images/types_tr.png b/public/images/types_tr.png index 93eae27caa0..828aeb0b741 100644 Binary files a/public/images/types_tr.png and b/public/images/types_tr.png differ diff --git a/public/images/types_zh-CN.png b/public/images/types_zh-CN.png index e1927ad9d3b..52403ed5892 100644 Binary files a/public/images/types_zh-CN.png and b/public/images/types_zh-CN.png differ diff --git a/public/images/types_zh-TW.png b/public/images/types_zh-TW.png index 8b644f1041c..9ebc29f0d4f 100644 Binary files a/public/images/types_zh-TW.png and b/public/images/types_zh-TW.png differ diff --git a/public/images/ui/ability_bar_left.png b/public/images/ui/ability_bar_left.png index 54abe4c5a94..de15f4910d6 100644 Binary files a/public/images/ui/ability_bar_left.png and b/public/images/ui/ability_bar_left.png differ diff --git a/public/images/ui/ability_bar_right.png b/public/images/ui/ability_bar_right.png index 282025bfc74..b8ab048c6b0 100644 Binary files a/public/images/ui/ability_bar_right.png and b/public/images/ui/ability_bar_right.png differ diff --git a/public/images/ui/achv_bar.png b/public/images/ui/achv_bar.png index c2ab2c5c63e..c5ba5fd2c4c 100644 Binary files a/public/images/ui/achv_bar.png and b/public/images/ui/achv_bar.png differ diff --git a/public/images/ui/achv_bar_2.png b/public/images/ui/achv_bar_2.png index 8505760d66e..b4d9af70614 100644 Binary files a/public/images/ui/achv_bar_2.png and b/public/images/ui/achv_bar_2.png differ diff --git a/public/images/ui/achv_bar_3.png b/public/images/ui/achv_bar_3.png index 723e533f741..2a3b26ebfb6 100644 Binary files a/public/images/ui/achv_bar_3.png and b/public/images/ui/achv_bar_3.png differ diff --git a/public/images/ui/achv_bar_4.png b/public/images/ui/achv_bar_4.png index f14026c7a34..2f079bb927c 100644 Binary files a/public/images/ui/achv_bar_4.png and b/public/images/ui/achv_bar_4.png differ diff --git a/public/images/ui/achv_bar_5.png b/public/images/ui/achv_bar_5.png index cc06af91620..0f27058fc7f 100644 Binary files a/public/images/ui/achv_bar_5.png and b/public/images/ui/achv_bar_5.png differ diff --git a/public/images/ui/bg.png b/public/images/ui/bg.png index 9c35e80ff8b..0f73a067181 100644 Binary files a/public/images/ui/bg.png and b/public/images/ui/bg.png differ diff --git a/public/images/ui/bgm_bar.png b/public/images/ui/bgm_bar.png index 54abe4c5a94..de15f4910d6 100644 Binary files a/public/images/ui/bgm_bar.png and b/public/images/ui/bgm_bar.png differ diff --git a/public/images/ui/bmenu_sel.png b/public/images/ui/bmenu_sel.png index c2e28ba2035..a77939dbac3 100644 Binary files a/public/images/ui/bmenu_sel.png and b/public/images/ui/bmenu_sel.png differ diff --git a/public/images/ui/boolean_sel.png b/public/images/ui/boolean_sel.png index d5b212a3088..7f1c86fbb4d 100644 Binary files a/public/images/ui/boolean_sel.png and b/public/images/ui/boolean_sel.png differ diff --git a/public/images/ui/button_tera.png b/public/images/ui/button_tera.png index c9672bafa39..61a65ed4813 100644 Binary files a/public/images/ui/button_tera.png and b/public/images/ui/button_tera.png differ diff --git a/public/images/ui/candy.png b/public/images/ui/candy.png index 6b633a19504..a37358a3f90 100644 Binary files a/public/images/ui/candy.png and b/public/images/ui/candy.png differ diff --git a/public/images/ui/candy_overlay.png b/public/images/ui/candy_overlay.png index 835cfccb05c..e8cadeabb73 100644 Binary files a/public/images/ui/candy_overlay.png and b/public/images/ui/candy_overlay.png differ diff --git a/public/images/ui/champion_ribbon.png b/public/images/ui/champion_ribbon.png index 96e36075d8f..533c20f6821 100644 Binary files a/public/images/ui/champion_ribbon.png and b/public/images/ui/champion_ribbon.png differ diff --git a/public/images/ui/cursor.png b/public/images/ui/cursor.png index 68283fcc22d..0e2f9d98a16 100644 Binary files a/public/images/ui/cursor.png and b/public/images/ui/cursor.png differ diff --git a/public/images/ui/cursor_reverse.png b/public/images/ui/cursor_reverse.png index 40c867e62a5..6048cdcdd86 100644 Binary files a/public/images/ui/cursor_reverse.png and b/public/images/ui/cursor_reverse.png differ diff --git a/public/images/ui/cursor_tera.png b/public/images/ui/cursor_tera.png index 34cbe095895..9d2be35cfac 100644 Binary files a/public/images/ui/cursor_tera.png and b/public/images/ui/cursor_tera.png differ diff --git a/public/images/ui/dawn_icon_bg.png b/public/images/ui/dawn_icon_bg.png index 2983c2744a3..7136582a3c8 100644 Binary files a/public/images/ui/dawn_icon_bg.png and b/public/images/ui/dawn_icon_bg.png differ diff --git a/public/images/ui/dawn_icon_fg.png b/public/images/ui/dawn_icon_fg.png index e6c195bd371..c64f0578073 100644 Binary files a/public/images/ui/dawn_icon_fg.png and b/public/images/ui/dawn_icon_fg.png differ diff --git a/public/images/ui/dawn_icon_mg.png b/public/images/ui/dawn_icon_mg.png index ff32b4418aa..63786fd68fe 100644 Binary files a/public/images/ui/dawn_icon_mg.png and b/public/images/ui/dawn_icon_mg.png differ diff --git a/public/images/ui/day_icon_bg.png b/public/images/ui/day_icon_bg.png index 9028e0309f7..34b812464af 100644 Binary files a/public/images/ui/day_icon_bg.png and b/public/images/ui/day_icon_bg.png differ diff --git a/public/images/ui/day_icon_fg.png b/public/images/ui/day_icon_fg.png index 523f7b1be7e..a480e4d274d 100644 Binary files a/public/images/ui/day_icon_fg.png and b/public/images/ui/day_icon_fg.png differ diff --git a/public/images/ui/day_icon_mg.png b/public/images/ui/day_icon_mg.png index 7a236fa48d3..43b5a011098 100644 Binary files a/public/images/ui/day_icon_mg.png and b/public/images/ui/day_icon_mg.png differ diff --git a/public/images/ui/discord.png b/public/images/ui/discord.png index 1cd833854b0..fd16df3646c 100644 Binary files a/public/images/ui/discord.png and b/public/images/ui/discord.png differ diff --git a/public/images/ui/dusk_icon_bg.png b/public/images/ui/dusk_icon_bg.png index 57d22ec2b21..31d637eb674 100644 Binary files a/public/images/ui/dusk_icon_bg.png and b/public/images/ui/dusk_icon_bg.png differ diff --git a/public/images/ui/dusk_icon_fg.png b/public/images/ui/dusk_icon_fg.png index e0ca1bce79b..b19cf6ae1f8 100644 Binary files a/public/images/ui/dusk_icon_fg.png and b/public/images/ui/dusk_icon_fg.png differ diff --git a/public/images/ui/dusk_icon_mg.png b/public/images/ui/dusk_icon_mg.png index 4e6a880b37f..298b9de6ff7 100644 Binary files a/public/images/ui/dusk_icon_mg.png and b/public/images/ui/dusk_icon_mg.png differ diff --git a/public/images/ui/egg_list_bg.png b/public/images/ui/egg_list_bg.png index 4ec09441866..3dd8ac7386a 100644 Binary files a/public/images/ui/egg_list_bg.png and b/public/images/ui/egg_list_bg.png differ diff --git a/public/images/ui/egg_summary_bg.png b/public/images/ui/egg_summary_bg.png index e81934b9d75..ed602d77bb6 100644 Binary files a/public/images/ui/egg_summary_bg.png and b/public/images/ui/egg_summary_bg.png differ diff --git a/public/images/ui/egg_summary_bg_blank.png b/public/images/ui/egg_summary_bg_blank.png index 09bcb63cfa3..77aed2cadc6 100644 Binary files a/public/images/ui/egg_summary_bg_blank.png and b/public/images/ui/egg_summary_bg_blank.png differ diff --git a/public/images/ui/favorite.png b/public/images/ui/favorite.png index d86dd58f5ab..3c0ea483b65 100644 Binary files a/public/images/ui/favorite.png and b/public/images/ui/favorite.png differ diff --git a/public/images/ui/friendship.png b/public/images/ui/friendship.png index 073adcadc76..16a50f93c79 100644 Binary files a/public/images/ui/friendship.png and b/public/images/ui/friendship.png differ diff --git a/public/images/ui/friendship_overlay.png b/public/images/ui/friendship_overlay.png index 4a4724fbdc9..b6957ded371 100644 Binary files a/public/images/ui/friendship_overlay.png and b/public/images/ui/friendship_overlay.png differ diff --git a/public/images/ui/google.png b/public/images/ui/google.png index 82760552886..3f5389086db 100644 Binary files a/public/images/ui/google.png and b/public/images/ui/google.png differ diff --git a/public/images/ui/ha_capsule.png b/public/images/ui/ha_capsule.png index cccc9cf51d3..a5b2a1e9d42 100644 Binary files a/public/images/ui/ha_capsule.png and b/public/images/ui/ha_capsule.png differ diff --git a/public/images/ui/hall_of_fame_blue.png b/public/images/ui/hall_of_fame_blue.png index 87fadf565fd..2b799070cb1 100644 Binary files a/public/images/ui/hall_of_fame_blue.png and b/public/images/ui/hall_of_fame_blue.png differ diff --git a/public/images/ui/hall_of_fame_red.png b/public/images/ui/hall_of_fame_red.png index 5d4d5e41e9c..df999ae631f 100644 Binary files a/public/images/ui/hall_of_fame_red.png and b/public/images/ui/hall_of_fame_red.png differ diff --git a/public/images/ui/icon_egg_move.png b/public/images/ui/icon_egg_move.png index a5b0bff4ace..3b79a6682d0 100644 Binary files a/public/images/ui/icon_egg_move.png and b/public/images/ui/icon_egg_move.png differ diff --git a/public/images/ui/icon_lock.png b/public/images/ui/icon_lock.png index 6a12efa15e8..6a09f41f182 100644 Binary files a/public/images/ui/icon_lock.png and b/public/images/ui/icon_lock.png differ diff --git a/public/images/ui/icon_owned.png b/public/images/ui/icon_owned.png index 37e2dfd08e6..f4592f33d0f 100644 Binary files a/public/images/ui/icon_owned.png and b/public/images/ui/icon_owned.png differ diff --git a/public/images/ui/icon_spliced.png b/public/images/ui/icon_spliced.png index 1db0d1136ba..edd3049a5c7 100644 Binary files a/public/images/ui/icon_spliced.png and b/public/images/ui/icon_spliced.png differ diff --git a/public/images/ui/icon_stop.png b/public/images/ui/icon_stop.png index 6d9c201695a..ff248e38c8e 100644 Binary files a/public/images/ui/icon_stop.png and b/public/images/ui/icon_stop.png differ diff --git a/public/images/ui/icon_tera.png b/public/images/ui/icon_tera.png index 97673434315..9d2be35cfac 100644 Binary files a/public/images/ui/icon_tera.png and b/public/images/ui/icon_tera.png differ diff --git a/public/images/ui/legacy/ability_bar_left.png b/public/images/ui/legacy/ability_bar_left.png index 7491a9ca527..18a3726eb28 100644 Binary files a/public/images/ui/legacy/ability_bar_left.png and b/public/images/ui/legacy/ability_bar_left.png differ diff --git a/public/images/ui/legacy/ability_bar_right.png b/public/images/ui/legacy/ability_bar_right.png index 3dcb845b3c9..8b5954d5624 100644 Binary files a/public/images/ui/legacy/ability_bar_right.png and b/public/images/ui/legacy/ability_bar_right.png differ diff --git a/public/images/ui/legacy/achv_bar.png b/public/images/ui/legacy/achv_bar.png index 442b43343cc..7e5f5d5f8c7 100644 Binary files a/public/images/ui/legacy/achv_bar.png and b/public/images/ui/legacy/achv_bar.png differ diff --git a/public/images/ui/legacy/achv_bar_2.png b/public/images/ui/legacy/achv_bar_2.png index 23ffca0a7d9..87d19379f01 100644 Binary files a/public/images/ui/legacy/achv_bar_2.png and b/public/images/ui/legacy/achv_bar_2.png differ diff --git a/public/images/ui/legacy/achv_bar_3.png b/public/images/ui/legacy/achv_bar_3.png index e2697234ecd..874e2384b1a 100644 Binary files a/public/images/ui/legacy/achv_bar_3.png and b/public/images/ui/legacy/achv_bar_3.png differ diff --git a/public/images/ui/legacy/achv_bar_4.png b/public/images/ui/legacy/achv_bar_4.png index d52fbfd055e..c0032288a00 100644 Binary files a/public/images/ui/legacy/achv_bar_4.png and b/public/images/ui/legacy/achv_bar_4.png differ diff --git a/public/images/ui/legacy/achv_bar_5.png b/public/images/ui/legacy/achv_bar_5.png index dae7a30dec0..ea6830b53ef 100644 Binary files a/public/images/ui/legacy/achv_bar_5.png and b/public/images/ui/legacy/achv_bar_5.png differ diff --git a/public/images/ui/legacy/bg.png b/public/images/ui/legacy/bg.png index 0b1ec4fac1a..d5b3f127ad8 100644 Binary files a/public/images/ui/legacy/bg.png and b/public/images/ui/legacy/bg.png differ diff --git a/public/images/ui/legacy/bgm_bar.png b/public/images/ui/legacy/bgm_bar.png index fedeb323fc2..bdcbf4cceee 100644 Binary files a/public/images/ui/legacy/bgm_bar.png and b/public/images/ui/legacy/bgm_bar.png differ diff --git a/public/images/ui/legacy/bmenu_sel.png b/public/images/ui/legacy/bmenu_sel.png index fe54fa918cf..8058a569e7d 100644 Binary files a/public/images/ui/legacy/bmenu_sel.png and b/public/images/ui/legacy/bmenu_sel.png differ diff --git a/public/images/ui/legacy/boolean_sel.png b/public/images/ui/legacy/boolean_sel.png index bd832fa1289..5ae1bba4bb2 100644 Binary files a/public/images/ui/legacy/boolean_sel.png and b/public/images/ui/legacy/boolean_sel.png differ diff --git a/public/images/ui/legacy/button_tera.png b/public/images/ui/legacy/button_tera.png index c9672bafa39..61a65ed4813 100644 Binary files a/public/images/ui/legacy/button_tera.png and b/public/images/ui/legacy/button_tera.png differ diff --git a/public/images/ui/legacy/candy.png b/public/images/ui/legacy/candy.png index 6b633a19504..a37358a3f90 100644 Binary files a/public/images/ui/legacy/candy.png and b/public/images/ui/legacy/candy.png differ diff --git a/public/images/ui/legacy/candy_overlay.png b/public/images/ui/legacy/candy_overlay.png index 835cfccb05c..e8cadeabb73 100644 Binary files a/public/images/ui/legacy/candy_overlay.png and b/public/images/ui/legacy/candy_overlay.png differ diff --git a/public/images/ui/legacy/champion_ribbon.png b/public/images/ui/legacy/champion_ribbon.png index 96e36075d8f..533c20f6821 100644 Binary files a/public/images/ui/legacy/champion_ribbon.png and b/public/images/ui/legacy/champion_ribbon.png differ diff --git a/public/images/ui/legacy/cursor.png b/public/images/ui/legacy/cursor.png index 39d7b7977ee..deadae321e3 100644 Binary files a/public/images/ui/legacy/cursor.png and b/public/images/ui/legacy/cursor.png differ diff --git a/public/images/ui/legacy/cursor_reverse.png b/public/images/ui/legacy/cursor_reverse.png index 57fb297747e..a13304f0956 100644 Binary files a/public/images/ui/legacy/cursor_reverse.png and b/public/images/ui/legacy/cursor_reverse.png differ diff --git a/public/images/ui/legacy/cursor_tera.png b/public/images/ui/legacy/cursor_tera.png index f2e77046137..cccdb7c68b1 100644 Binary files a/public/images/ui/legacy/cursor_tera.png and b/public/images/ui/legacy/cursor_tera.png differ diff --git a/public/images/ui/legacy/dawn_icon_bg.png b/public/images/ui/legacy/dawn_icon_bg.png index 87c4d75cd94..6521aa78765 100644 Binary files a/public/images/ui/legacy/dawn_icon_bg.png and b/public/images/ui/legacy/dawn_icon_bg.png differ diff --git a/public/images/ui/legacy/dawn_icon_fg.png b/public/images/ui/legacy/dawn_icon_fg.png index db985f953d3..1b82ad2dfcf 100644 Binary files a/public/images/ui/legacy/dawn_icon_fg.png and b/public/images/ui/legacy/dawn_icon_fg.png differ diff --git a/public/images/ui/legacy/dawn_icon_mg.png b/public/images/ui/legacy/dawn_icon_mg.png index 442cb1b674c..c259ea4e068 100644 Binary files a/public/images/ui/legacy/dawn_icon_mg.png and b/public/images/ui/legacy/dawn_icon_mg.png differ diff --git a/public/images/ui/legacy/day_icon_bg.png b/public/images/ui/legacy/day_icon_bg.png index 3db0dab4589..9c79cabfe26 100644 Binary files a/public/images/ui/legacy/day_icon_bg.png and b/public/images/ui/legacy/day_icon_bg.png differ diff --git a/public/images/ui/legacy/day_icon_fg.png b/public/images/ui/legacy/day_icon_fg.png index 657c82e5dbd..79872f95202 100644 Binary files a/public/images/ui/legacy/day_icon_fg.png and b/public/images/ui/legacy/day_icon_fg.png differ diff --git a/public/images/ui/legacy/day_icon_mg.png b/public/images/ui/legacy/day_icon_mg.png index 90fce4a761c..132d23bd8a3 100644 Binary files a/public/images/ui/legacy/day_icon_mg.png and b/public/images/ui/legacy/day_icon_mg.png differ diff --git a/public/images/ui/legacy/discord.png b/public/images/ui/legacy/discord.png index eac801cdd9d..1bb254b1594 100644 Binary files a/public/images/ui/legacy/discord.png and b/public/images/ui/legacy/discord.png differ diff --git a/public/images/ui/legacy/dusk_icon_bg.png b/public/images/ui/legacy/dusk_icon_bg.png index 7610a2e67f8..d5e29169fa8 100644 Binary files a/public/images/ui/legacy/dusk_icon_bg.png and b/public/images/ui/legacy/dusk_icon_bg.png differ diff --git a/public/images/ui/legacy/dusk_icon_fg.png b/public/images/ui/legacy/dusk_icon_fg.png index d4bbb98fdd1..f8adaf11a83 100644 Binary files a/public/images/ui/legacy/dusk_icon_fg.png and b/public/images/ui/legacy/dusk_icon_fg.png differ diff --git a/public/images/ui/legacy/dusk_icon_mg.png b/public/images/ui/legacy/dusk_icon_mg.png index dc603f8ca79..b889cab0e4f 100644 Binary files a/public/images/ui/legacy/dusk_icon_mg.png and b/public/images/ui/legacy/dusk_icon_mg.png differ diff --git a/public/images/ui/legacy/egg_list_bg.png b/public/images/ui/legacy/egg_list_bg.png index 932d01d335f..2d08756679e 100644 Binary files a/public/images/ui/legacy/egg_list_bg.png and b/public/images/ui/legacy/egg_list_bg.png differ diff --git a/public/images/ui/legacy/egg_summary_bg.png b/public/images/ui/legacy/egg_summary_bg.png index 658f5df0e96..8affc928028 100644 Binary files a/public/images/ui/legacy/egg_summary_bg.png and b/public/images/ui/legacy/egg_summary_bg.png differ diff --git a/public/images/ui/legacy/favorite.png b/public/images/ui/legacy/favorite.png index d86dd58f5ab..3c0ea483b65 100644 Binary files a/public/images/ui/legacy/favorite.png and b/public/images/ui/legacy/favorite.png differ diff --git a/public/images/ui/legacy/friendship.png b/public/images/ui/legacy/friendship.png index 073adcadc76..16a50f93c79 100644 Binary files a/public/images/ui/legacy/friendship.png and b/public/images/ui/legacy/friendship.png differ diff --git a/public/images/ui/legacy/friendship_overlay.png b/public/images/ui/legacy/friendship_overlay.png index 4a4724fbdc9..b6957ded371 100644 Binary files a/public/images/ui/legacy/friendship_overlay.png and b/public/images/ui/legacy/friendship_overlay.png differ diff --git a/public/images/ui/legacy/google.png b/public/images/ui/legacy/google.png index 82760552886..3f5389086db 100644 Binary files a/public/images/ui/legacy/google.png and b/public/images/ui/legacy/google.png differ diff --git a/public/images/ui/legacy/ha_capsule.png b/public/images/ui/legacy/ha_capsule.png index cccc9cf51d3..a5b2a1e9d42 100644 Binary files a/public/images/ui/legacy/ha_capsule.png and b/public/images/ui/legacy/ha_capsule.png differ diff --git a/public/images/ui/legacy/hall_of_fame_blue.png b/public/images/ui/legacy/hall_of_fame_blue.png index 87fadf565fd..2b799070cb1 100644 Binary files a/public/images/ui/legacy/hall_of_fame_blue.png and b/public/images/ui/legacy/hall_of_fame_blue.png differ diff --git a/public/images/ui/legacy/hall_of_fame_red.png b/public/images/ui/legacy/hall_of_fame_red.png index 5d4d5e41e9c..df999ae631f 100644 Binary files a/public/images/ui/legacy/hall_of_fame_red.png and b/public/images/ui/legacy/hall_of_fame_red.png differ diff --git a/public/images/ui/legacy/icon_egg_move.png b/public/images/ui/legacy/icon_egg_move.png index a5b0bff4ace..3b79a6682d0 100644 Binary files a/public/images/ui/legacy/icon_egg_move.png and b/public/images/ui/legacy/icon_egg_move.png differ diff --git a/public/images/ui/legacy/icon_lock.png b/public/images/ui/legacy/icon_lock.png index 6a12efa15e8..6a09f41f182 100644 Binary files a/public/images/ui/legacy/icon_lock.png and b/public/images/ui/legacy/icon_lock.png differ diff --git a/public/images/ui/legacy/icon_owned.png b/public/images/ui/legacy/icon_owned.png index 21e03afec60..6fe9dacd3e7 100644 Binary files a/public/images/ui/legacy/icon_owned.png and b/public/images/ui/legacy/icon_owned.png differ diff --git a/public/images/ui/legacy/icon_spliced.png b/public/images/ui/legacy/icon_spliced.png index 1db0d1136ba..edd3049a5c7 100644 Binary files a/public/images/ui/legacy/icon_spliced.png and b/public/images/ui/legacy/icon_spliced.png differ diff --git a/public/images/ui/legacy/icon_stop.png b/public/images/ui/legacy/icon_stop.png index 6d9c201695a..ff248e38c8e 100644 Binary files a/public/images/ui/legacy/icon_stop.png and b/public/images/ui/legacy/icon_stop.png differ diff --git a/public/images/ui/legacy/icon_tera.png b/public/images/ui/legacy/icon_tera.png index d178ca8fcb9..90d30ee9db6 100644 Binary files a/public/images/ui/legacy/icon_tera.png and b/public/images/ui/legacy/icon_tera.png differ diff --git a/public/images/ui/legacy/link_icon.png b/public/images/ui/legacy/link_icon.png index 56081261b9c..1e20ab56ec7 100644 Binary files a/public/images/ui/legacy/link_icon.png and b/public/images/ui/legacy/link_icon.png differ diff --git a/public/images/ui/legacy/mmenu_sel.png b/public/images/ui/legacy/mmenu_sel.png index 26952f7ece9..64b388876da 100644 Binary files a/public/images/ui/legacy/mmenu_sel.png and b/public/images/ui/legacy/mmenu_sel.png differ diff --git a/public/images/ui/legacy/mystery_egg.png b/public/images/ui/legacy/mystery_egg.png index bb117a137b0..83ad626da7e 100644 Binary files a/public/images/ui/legacy/mystery_egg.png and b/public/images/ui/legacy/mystery_egg.png differ diff --git a/public/images/ui/legacy/namebox.png b/public/images/ui/legacy/namebox.png index 25659f9dd40..5eea1504d77 100644 Binary files a/public/images/ui/legacy/namebox.png and b/public/images/ui/legacy/namebox.png differ diff --git a/public/images/ui/legacy/night_icon_bg.png b/public/images/ui/legacy/night_icon_bg.png index c32ee1ebd2a..ea2febb3cc1 100644 Binary files a/public/images/ui/legacy/night_icon_bg.png and b/public/images/ui/legacy/night_icon_bg.png differ diff --git a/public/images/ui/legacy/night_icon_fg.png b/public/images/ui/legacy/night_icon_fg.png index 737cca3305e..d8eceed3e37 100644 Binary files a/public/images/ui/legacy/night_icon_fg.png and b/public/images/ui/legacy/night_icon_fg.png differ diff --git a/public/images/ui/legacy/normal_memory.png b/public/images/ui/legacy/normal_memory.png index ddc22d1d4ab..604371dcc7c 100644 Binary files a/public/images/ui/legacy/normal_memory.png and b/public/images/ui/legacy/normal_memory.png differ diff --git a/public/images/ui/legacy/numbers.png b/public/images/ui/legacy/numbers.png index ba48453fa60..6157774d58e 100644 Binary files a/public/images/ui/legacy/numbers.png and b/public/images/ui/legacy/numbers.png differ diff --git a/public/images/ui/legacy/numbers_alt.png b/public/images/ui/legacy/numbers_alt.png index 1512ef435d0..fb510465471 100644 Binary files a/public/images/ui/legacy/numbers_alt.png and b/public/images/ui/legacy/numbers_alt.png differ diff --git a/public/images/ui/legacy/numbers_red.png b/public/images/ui/legacy/numbers_red.png index acafb20c98a..f0d885d304d 100644 Binary files a/public/images/ui/legacy/numbers_red.png and b/public/images/ui/legacy/numbers_red.png differ diff --git a/public/images/ui/legacy/numbers_red_alt.png b/public/images/ui/legacy/numbers_red_alt.png index 90b6f109289..d9edb0468d8 100644 Binary files a/public/images/ui/legacy/numbers_red_alt.png and b/public/images/ui/legacy/numbers_red_alt.png differ diff --git a/public/images/ui/legacy/overlay_exp.png b/public/images/ui/legacy/overlay_exp.png index 51166cd9e62..85d0cad7bfb 100644 Binary files a/public/images/ui/legacy/overlay_exp.png and b/public/images/ui/legacy/overlay_exp.png differ diff --git a/public/images/ui/legacy/overlay_hp.png b/public/images/ui/legacy/overlay_hp.png index 9855c6106f4..75607c199f5 100644 Binary files a/public/images/ui/legacy/overlay_hp.png and b/public/images/ui/legacy/overlay_hp.png differ diff --git a/public/images/ui/legacy/overlay_hp_boss.png b/public/images/ui/legacy/overlay_hp_boss.png index d7dc3b74e0f..8bfb4524007 100644 Binary files a/public/images/ui/legacy/overlay_hp_boss.png and b/public/images/ui/legacy/overlay_hp_boss.png differ diff --git a/public/images/ui/legacy/overlay_lv.png b/public/images/ui/legacy/overlay_lv.png index d79614f41eb..fdcbb1c7082 100644 Binary files a/public/images/ui/legacy/overlay_lv.png and b/public/images/ui/legacy/overlay_lv.png differ diff --git a/public/images/ui/legacy/overlay_lv_alt.png b/public/images/ui/legacy/overlay_lv_alt.png index 75b90a2ee4c..f7a76955e7b 100644 Binary files a/public/images/ui/legacy/overlay_lv_alt.png and b/public/images/ui/legacy/overlay_lv_alt.png differ diff --git a/public/images/ui/legacy/overlay_message.png b/public/images/ui/legacy/overlay_message.png index 9e58d86fc8b..769b2ae8144 100644 Binary files a/public/images/ui/legacy/overlay_message.png and b/public/images/ui/legacy/overlay_message.png differ diff --git a/public/images/ui/legacy/party_bg.png b/public/images/ui/legacy/party_bg.png index 323de1856c8..cdade735b4a 100644 Binary files a/public/images/ui/legacy/party_bg.png and b/public/images/ui/legacy/party_bg.png differ diff --git a/public/images/ui/legacy/party_bg_double.png b/public/images/ui/legacy/party_bg_double.png index 89beff1edf0..8e00bd6c293 100644 Binary files a/public/images/ui/legacy/party_bg_double.png and b/public/images/ui/legacy/party_bg_double.png differ diff --git a/public/images/ui/legacy/party_cancel.png b/public/images/ui/legacy/party_cancel.png index 4219c8d33c4..9836b9ced2d 100644 Binary files a/public/images/ui/legacy/party_cancel.png and b/public/images/ui/legacy/party_cancel.png differ diff --git a/public/images/ui/legacy/party_exp_bar.png b/public/images/ui/legacy/party_exp_bar.png index 0a514b43393..61757a97c2d 100644 Binary files a/public/images/ui/legacy/party_exp_bar.png and b/public/images/ui/legacy/party_exp_bar.png differ diff --git a/public/images/ui/legacy/party_pb.png b/public/images/ui/legacy/party_pb.png index a1e5f7a9bf7..cd8b9726155 100644 Binary files a/public/images/ui/legacy/party_pb.png and b/public/images/ui/legacy/party_pb.png differ diff --git a/public/images/ui/legacy/party_slot.png b/public/images/ui/legacy/party_slot.png index c7a2eb5c082..162f321ece5 100644 Binary files a/public/images/ui/legacy/party_slot.png and b/public/images/ui/legacy/party_slot.png differ diff --git a/public/images/ui/legacy/party_slot_hp_bar.png b/public/images/ui/legacy/party_slot_hp_bar.png index 13ac7436cc7..6a37002744c 100644 Binary files a/public/images/ui/legacy/party_slot_hp_bar.png and b/public/images/ui/legacy/party_slot_hp_bar.png differ diff --git a/public/images/ui/legacy/party_slot_hp_overlay.png b/public/images/ui/legacy/party_slot_hp_overlay.png index 360a3cd17fa..859adab148c 100644 Binary files a/public/images/ui/legacy/party_slot_hp_overlay.png and b/public/images/ui/legacy/party_slot_hp_overlay.png differ diff --git a/public/images/ui/legacy/party_slot_main.png b/public/images/ui/legacy/party_slot_main.png index 06eb9b03a7d..cb4af766597 100644 Binary files a/public/images/ui/legacy/party_slot_main.png and b/public/images/ui/legacy/party_slot_main.png differ diff --git a/public/images/ui/legacy/party_slot_overlay_hp.png b/public/images/ui/legacy/party_slot_overlay_hp.png index 8c15c63f31a..2eebb557cce 100644 Binary files a/public/images/ui/legacy/party_slot_overlay_hp.png and b/public/images/ui/legacy/party_slot_overlay_hp.png differ diff --git a/public/images/ui/legacy/party_slot_overlay_lv.png b/public/images/ui/legacy/party_slot_overlay_lv.png index 57d901a7d3d..11bb545c7af 100644 Binary files a/public/images/ui/legacy/party_slot_overlay_lv.png and b/public/images/ui/legacy/party_slot_overlay_lv.png differ diff --git a/public/images/ui/legacy/party_slot_overlay_lv_alt.png b/public/images/ui/legacy/party_slot_overlay_lv_alt.png index a52b9c2fa60..387dfec6b22 100644 Binary files a/public/images/ui/legacy/party_slot_overlay_lv_alt.png and b/public/images/ui/legacy/party_slot_overlay_lv_alt.png differ diff --git a/public/images/ui/legacy/passive_bg.png b/public/images/ui/legacy/passive_bg.png index 1e18a47b881..4a3fa1ec72b 100644 Binary files a/public/images/ui/legacy/passive_bg.png and b/public/images/ui/legacy/passive_bg.png differ diff --git a/public/images/ui/legacy/pb_tray_ball.png b/public/images/ui/legacy/pb_tray_ball.png index 112184f8593..671db0c0b15 100644 Binary files a/public/images/ui/legacy/pb_tray_ball.png and b/public/images/ui/legacy/pb_tray_ball.png differ diff --git a/public/images/ui/legacy/pb_tray_overlay_enemy.png b/public/images/ui/legacy/pb_tray_overlay_enemy.png index c557ac736fc..86ac85f946f 100644 Binary files a/public/images/ui/legacy/pb_tray_overlay_enemy.png and b/public/images/ui/legacy/pb_tray_overlay_enemy.png differ diff --git a/public/images/ui/legacy/pb_tray_overlay_player.png b/public/images/ui/legacy/pb_tray_overlay_player.png index 4a065de5d7d..de0b01502c0 100644 Binary files a/public/images/ui/legacy/pb_tray_overlay_player.png and b/public/images/ui/legacy/pb_tray_overlay_player.png differ diff --git a/public/images/ui/legacy/pbinfo_enemy_boss.png b/public/images/ui/legacy/pbinfo_enemy_boss.png index cffefd32396..98b2f09f941 100644 Binary files a/public/images/ui/legacy/pbinfo_enemy_boss.png and b/public/images/ui/legacy/pbinfo_enemy_boss.png differ diff --git a/public/images/ui/legacy/pbinfo_enemy_boss_stats.png b/public/images/ui/legacy/pbinfo_enemy_boss_stats.png index faca8887ff5..bf4b3d61d12 100644 Binary files a/public/images/ui/legacy/pbinfo_enemy_boss_stats.png and b/public/images/ui/legacy/pbinfo_enemy_boss_stats.png differ diff --git a/public/images/ui/legacy/pbinfo_enemy_mini.png b/public/images/ui/legacy/pbinfo_enemy_mini.png index 908ea10606f..c1c002a4b21 100644 Binary files a/public/images/ui/legacy/pbinfo_enemy_mini.png and b/public/images/ui/legacy/pbinfo_enemy_mini.png differ diff --git a/public/images/ui/legacy/pbinfo_enemy_mini_stats.png b/public/images/ui/legacy/pbinfo_enemy_mini_stats.png index eb32e694134..e6eaaa3be9e 100644 Binary files a/public/images/ui/legacy/pbinfo_enemy_mini_stats.png and b/public/images/ui/legacy/pbinfo_enemy_mini_stats.png differ diff --git a/public/images/ui/legacy/pbinfo_enemy_type.png b/public/images/ui/legacy/pbinfo_enemy_type.png index d89e360af86..27cb481e861 100644 Binary files a/public/images/ui/legacy/pbinfo_enemy_type.png and b/public/images/ui/legacy/pbinfo_enemy_type.png differ diff --git a/public/images/ui/legacy/pbinfo_enemy_type1.png b/public/images/ui/legacy/pbinfo_enemy_type1.png index f882e56ac88..df44b5bad5d 100644 Binary files a/public/images/ui/legacy/pbinfo_enemy_type1.png and b/public/images/ui/legacy/pbinfo_enemy_type1.png differ diff --git a/public/images/ui/legacy/pbinfo_enemy_type2.png b/public/images/ui/legacy/pbinfo_enemy_type2.png index f882e56ac88..df44b5bad5d 100644 Binary files a/public/images/ui/legacy/pbinfo_enemy_type2.png and b/public/images/ui/legacy/pbinfo_enemy_type2.png differ diff --git a/public/images/ui/legacy/pbinfo_player.png b/public/images/ui/legacy/pbinfo_player.png index 825a9eafec2..60c92f886aa 100644 Binary files a/public/images/ui/legacy/pbinfo_player.png and b/public/images/ui/legacy/pbinfo_player.png differ diff --git a/public/images/ui/legacy/pbinfo_player_mini.png b/public/images/ui/legacy/pbinfo_player_mini.png index 1ccaf4efd65..120e9592ab9 100644 Binary files a/public/images/ui/legacy/pbinfo_player_mini.png and b/public/images/ui/legacy/pbinfo_player_mini.png differ diff --git a/public/images/ui/legacy/pbinfo_player_mini_stats.png b/public/images/ui/legacy/pbinfo_player_mini_stats.png index dd2b7e65ba3..00bb687296c 100644 Binary files a/public/images/ui/legacy/pbinfo_player_mini_stats.png and b/public/images/ui/legacy/pbinfo_player_mini_stats.png differ diff --git a/public/images/ui/legacy/pbinfo_player_stats.png b/public/images/ui/legacy/pbinfo_player_stats.png index 078248624bc..6bf984a94dc 100644 Binary files a/public/images/ui/legacy/pbinfo_player_stats.png and b/public/images/ui/legacy/pbinfo_player_stats.png differ diff --git a/public/images/ui/legacy/pbinfo_player_type.png b/public/images/ui/legacy/pbinfo_player_type.png index 1a8b82855f6..5bfc5545067 100644 Binary files a/public/images/ui/legacy/pbinfo_player_type.png and b/public/images/ui/legacy/pbinfo_player_type.png differ diff --git a/public/images/ui/legacy/pbinfo_player_type1.png b/public/images/ui/legacy/pbinfo_player_type1.png index f882e56ac88..df44b5bad5d 100644 Binary files a/public/images/ui/legacy/pbinfo_player_type1.png and b/public/images/ui/legacy/pbinfo_player_type1.png differ diff --git a/public/images/ui/legacy/pbinfo_player_type2.png b/public/images/ui/legacy/pbinfo_player_type2.png index f882e56ac88..df44b5bad5d 100644 Binary files a/public/images/ui/legacy/pbinfo_player_type2.png and b/public/images/ui/legacy/pbinfo_player_type2.png differ diff --git a/public/images/ui/legacy/pbinfo_stat.png b/public/images/ui/legacy/pbinfo_stat.png index 18b0ca314de..25c94f9a807 100644 Binary files a/public/images/ui/legacy/pbinfo_stat.png and b/public/images/ui/legacy/pbinfo_stat.png differ diff --git a/public/images/ui/legacy/pbinfo_stat_numbers.png b/public/images/ui/legacy/pbinfo_stat_numbers.png index b02dfbec72f..5d27caa8efa 100644 Binary files a/public/images/ui/legacy/pbinfo_stat_numbers.png and b/public/images/ui/legacy/pbinfo_stat_numbers.png differ diff --git a/public/images/ui/legacy/pokedex_summary_bg.png b/public/images/ui/legacy/pokedex_summary_bg.png index 690df1547c0..7323f99a913 100644 Binary files a/public/images/ui/legacy/pokedex_summary_bg.png and b/public/images/ui/legacy/pokedex_summary_bg.png differ diff --git a/public/images/ui/legacy/prompt.png b/public/images/ui/legacy/prompt.png index ee74128ce56..d70362d1958 100644 Binary files a/public/images/ui/legacy/prompt.png and b/public/images/ui/legacy/prompt.png differ diff --git a/public/images/ui/legacy/saving_icon.png b/public/images/ui/legacy/saving_icon.png index fddff8c2d39..772fa91fb8c 100644 Binary files a/public/images/ui/legacy/saving_icon.png and b/public/images/ui/legacy/saving_icon.png differ diff --git a/public/images/ui/legacy/scroll_bar.png b/public/images/ui/legacy/scroll_bar.png index e4e5eb34dd2..1e8f53cd29e 100644 Binary files a/public/images/ui/legacy/scroll_bar.png and b/public/images/ui/legacy/scroll_bar.png differ diff --git a/public/images/ui/legacy/scroll_bar_handle.png b/public/images/ui/legacy/scroll_bar_handle.png index 95a1726b3ba..18532fb4dc1 100644 Binary files a/public/images/ui/legacy/scroll_bar_handle.png and b/public/images/ui/legacy/scroll_bar_handle.png differ diff --git a/public/images/ui/legacy/select_cursor_highlight_thick.png b/public/images/ui/legacy/select_cursor_highlight_thick.png index d9a1532862e..6b013b3747e 100644 Binary files a/public/images/ui/legacy/select_cursor_highlight_thick.png and b/public/images/ui/legacy/select_cursor_highlight_thick.png differ diff --git a/public/images/ui/legacy/settings_icon.png b/public/images/ui/legacy/settings_icon.png index 21680cce7fc..5963317affa 100644 Binary files a/public/images/ui/legacy/settings_icon.png and b/public/images/ui/legacy/settings_icon.png differ diff --git a/public/images/ui/legacy/shiny.png b/public/images/ui/legacy/shiny.png index 26d7814fb0b..362f8f48ff1 100644 Binary files a/public/images/ui/legacy/shiny.png and b/public/images/ui/legacy/shiny.png differ diff --git a/public/images/ui/legacy/shiny_1.png b/public/images/ui/legacy/shiny_1.png index 9c7a583a7f9..5154761124c 100644 Binary files a/public/images/ui/legacy/shiny_1.png and b/public/images/ui/legacy/shiny_1.png differ diff --git a/public/images/ui/legacy/shiny_icons.png b/public/images/ui/legacy/shiny_icons.png index f601d908d32..685f7b8af97 100644 Binary files a/public/images/ui/legacy/shiny_icons.png and b/public/images/ui/legacy/shiny_icons.png differ diff --git a/public/images/ui/legacy/shiny_small.png b/public/images/ui/legacy/shiny_small.png index e3d8e260573..66a8b12b876 100644 Binary files a/public/images/ui/legacy/shiny_small.png and b/public/images/ui/legacy/shiny_small.png differ diff --git a/public/images/ui/legacy/starter_container_bg.png b/public/images/ui/legacy/starter_container_bg.png index 5b60fcf551e..887616a8c87 100644 Binary files a/public/images/ui/legacy/starter_container_bg.png and b/public/images/ui/legacy/starter_container_bg.png differ diff --git a/public/images/ui/legacy/starter_select_bg.png b/public/images/ui/legacy/starter_select_bg.png index a94e470df0d..501e892969e 100644 Binary files a/public/images/ui/legacy/starter_select_bg.png and b/public/images/ui/legacy/starter_select_bg.png differ diff --git a/public/images/ui/legacy/summary_bg.png b/public/images/ui/legacy/summary_bg.png index c482b5a1bf1..261b4974fb7 100644 Binary files a/public/images/ui/legacy/summary_bg.png and b/public/images/ui/legacy/summary_bg.png differ diff --git a/public/images/ui/legacy/summary_moves.png b/public/images/ui/legacy/summary_moves.png index 54ddf0fb2c7..ab909588160 100644 Binary files a/public/images/ui/legacy/summary_moves.png and b/public/images/ui/legacy/summary_moves.png differ diff --git a/public/images/ui/legacy/summary_moves_cursor.png b/public/images/ui/legacy/summary_moves_cursor.png index 6b8314b66ca..7375cedcdf6 100644 Binary files a/public/images/ui/legacy/summary_moves_cursor.png and b/public/images/ui/legacy/summary_moves_cursor.png differ diff --git a/public/images/ui/legacy/summary_moves_effect.png b/public/images/ui/legacy/summary_moves_effect.png index 8d6ef024cf3..34d59970c99 100644 Binary files a/public/images/ui/legacy/summary_moves_effect.png and b/public/images/ui/legacy/summary_moves_effect.png differ diff --git a/public/images/ui/legacy/summary_moves_overlay_pp.png b/public/images/ui/legacy/summary_moves_overlay_pp.png index a42c86f28ea..9babffc0429 100644 Binary files a/public/images/ui/legacy/summary_moves_overlay_pp.png and b/public/images/ui/legacy/summary_moves_overlay_pp.png differ diff --git a/public/images/ui/legacy/summary_moves_overlay_row.png b/public/images/ui/legacy/summary_moves_overlay_row.png index 5b3e3d3e940..221a0f99a53 100644 Binary files a/public/images/ui/legacy/summary_moves_overlay_row.png and b/public/images/ui/legacy/summary_moves_overlay_row.png differ diff --git a/public/images/ui/legacy/summary_overlay_shiny.png b/public/images/ui/legacy/summary_overlay_shiny.png index e4ab820730a..bb2436738a8 100644 Binary files a/public/images/ui/legacy/summary_overlay_shiny.png and b/public/images/ui/legacy/summary_overlay_shiny.png differ diff --git a/public/images/ui/legacy/summary_profile.png b/public/images/ui/legacy/summary_profile.png index 77d59dac177..0b5b2ffec05 100644 Binary files a/public/images/ui/legacy/summary_profile.png and b/public/images/ui/legacy/summary_profile.png differ diff --git a/public/images/ui/legacy/summary_profile_ability.png b/public/images/ui/legacy/summary_profile_ability.png index 84c41556ab0..a803323564b 100644 Binary files a/public/images/ui/legacy/summary_profile_ability.png and b/public/images/ui/legacy/summary_profile_ability.png differ diff --git a/public/images/ui/legacy/summary_profile_passive.png b/public/images/ui/legacy/summary_profile_passive.png index 8d70a54b2a4..1ff9ad8e09a 100644 Binary files a/public/images/ui/legacy/summary_profile_passive.png and b/public/images/ui/legacy/summary_profile_passive.png differ diff --git a/public/images/ui/legacy/summary_profile_prompt_a.png b/public/images/ui/legacy/summary_profile_prompt_a.png index 146f1a862e5..f40127ec5ab 100644 Binary files a/public/images/ui/legacy/summary_profile_prompt_a.png and b/public/images/ui/legacy/summary_profile_prompt_a.png differ diff --git a/public/images/ui/legacy/summary_profile_prompt_z.png b/public/images/ui/legacy/summary_profile_prompt_z.png index ed842718914..eaa158eaddf 100644 Binary files a/public/images/ui/legacy/summary_profile_prompt_z.png and b/public/images/ui/legacy/summary_profile_prompt_z.png differ diff --git a/public/images/ui/legacy/summary_stats.png b/public/images/ui/legacy/summary_stats.png index de8baecc7d4..660fbee6df6 100644 Binary files a/public/images/ui/legacy/summary_stats.png and b/public/images/ui/legacy/summary_stats.png differ diff --git a/public/images/ui/legacy/summary_status.png b/public/images/ui/legacy/summary_status.png index 4a5b27e9e2b..95bd7533258 100644 Binary files a/public/images/ui/legacy/summary_status.png and b/public/images/ui/legacy/summary_status.png differ diff --git a/public/images/ui/legacy/summary_tabs_1.png b/public/images/ui/legacy/summary_tabs_1.png index ff38096fcd8..379768ea310 100644 Binary files a/public/images/ui/legacy/summary_tabs_1.png and b/public/images/ui/legacy/summary_tabs_1.png differ diff --git a/public/images/ui/legacy/summary_tabs_2.png b/public/images/ui/legacy/summary_tabs_2.png index f147d1b8385..2a04879b32b 100644 Binary files a/public/images/ui/legacy/summary_tabs_2.png and b/public/images/ui/legacy/summary_tabs_2.png differ diff --git a/public/images/ui/legacy/summary_tabs_3.png b/public/images/ui/legacy/summary_tabs_3.png index cf882988664..ef65774f744 100644 Binary files a/public/images/ui/legacy/summary_tabs_3.png and b/public/images/ui/legacy/summary_tabs_3.png differ diff --git a/public/images/ui/legacy/type_bgs.png b/public/images/ui/legacy/type_bgs.png index 6e682d9c327..c060ac46428 100644 Binary files a/public/images/ui/legacy/type_bgs.png and b/public/images/ui/legacy/type_bgs.png differ diff --git a/public/images/ui/legacy/type_tera.png b/public/images/ui/legacy/type_tera.png index 5c35966a6f4..f7f644cec5d 100644 Binary files a/public/images/ui/legacy/type_tera.png and b/public/images/ui/legacy/type_tera.png differ diff --git a/public/images/ui/legacy/unlink_icon.png b/public/images/ui/legacy/unlink_icon.png index f0da5f8e3ed..36723390363 100644 Binary files a/public/images/ui/legacy/unlink_icon.png and b/public/images/ui/legacy/unlink_icon.png differ diff --git a/public/images/ui/legacy/windows/window_1.png b/public/images/ui/legacy/windows/window_1.png index edfef03f924..355a25c17b3 100644 Binary files a/public/images/ui/legacy/windows/window_1.png and b/public/images/ui/legacy/windows/window_1.png differ diff --git a/public/images/ui/legacy/windows/window_1_thin.png b/public/images/ui/legacy/windows/window_1_thin.png index 4648d812f17..1e71eae928b 100644 Binary files a/public/images/ui/legacy/windows/window_1_thin.png and b/public/images/ui/legacy/windows/window_1_thin.png differ diff --git a/public/images/ui/legacy/windows/window_1_xthin.png b/public/images/ui/legacy/windows/window_1_xthin.png index 0ee6ffd00e1..d9ee533e223 100644 Binary files a/public/images/ui/legacy/windows/window_1_xthin.png and b/public/images/ui/legacy/windows/window_1_xthin.png differ diff --git a/public/images/ui/legacy/windows/window_2.png b/public/images/ui/legacy/windows/window_2.png index 7da47310d64..dda8f20c8ac 100644 Binary files a/public/images/ui/legacy/windows/window_2.png and b/public/images/ui/legacy/windows/window_2.png differ diff --git a/public/images/ui/legacy/windows/window_2_thin.png b/public/images/ui/legacy/windows/window_2_thin.png index 281d538b997..f75186c9c56 100644 Binary files a/public/images/ui/legacy/windows/window_2_thin.png and b/public/images/ui/legacy/windows/window_2_thin.png differ diff --git a/public/images/ui/legacy/windows/window_2_xthin.png b/public/images/ui/legacy/windows/window_2_xthin.png index 01e95113338..2f831870d74 100644 Binary files a/public/images/ui/legacy/windows/window_2_xthin.png and b/public/images/ui/legacy/windows/window_2_xthin.png differ diff --git a/public/images/ui/legacy/windows/window_3.png b/public/images/ui/legacy/windows/window_3.png index 0764ea2d6b0..6270a0c0f25 100644 Binary files a/public/images/ui/legacy/windows/window_3.png and b/public/images/ui/legacy/windows/window_3.png differ diff --git a/public/images/ui/legacy/windows/window_3_thin.png b/public/images/ui/legacy/windows/window_3_thin.png index 12cc6d60778..61d0ccbfe72 100644 Binary files a/public/images/ui/legacy/windows/window_3_thin.png and b/public/images/ui/legacy/windows/window_3_thin.png differ diff --git a/public/images/ui/legacy/windows/window_3_xthin.png b/public/images/ui/legacy/windows/window_3_xthin.png index 57ac6427b79..b510e667b46 100644 Binary files a/public/images/ui/legacy/windows/window_3_xthin.png and b/public/images/ui/legacy/windows/window_3_xthin.png differ diff --git a/public/images/ui/legacy/windows/window_4.png b/public/images/ui/legacy/windows/window_4.png index 69c5bce9dc9..0952c229cb9 100644 Binary files a/public/images/ui/legacy/windows/window_4.png and b/public/images/ui/legacy/windows/window_4.png differ diff --git a/public/images/ui/legacy/windows/window_4_thin.png b/public/images/ui/legacy/windows/window_4_thin.png index b61e7d7b22c..13f689ab884 100644 Binary files a/public/images/ui/legacy/windows/window_4_thin.png and b/public/images/ui/legacy/windows/window_4_thin.png differ diff --git a/public/images/ui/legacy/windows/window_4_xthin.png b/public/images/ui/legacy/windows/window_4_xthin.png index 45fec09adb0..e4d9163174e 100644 Binary files a/public/images/ui/legacy/windows/window_4_xthin.png and b/public/images/ui/legacy/windows/window_4_xthin.png differ diff --git a/public/images/ui/legacy/windows/window_5.png b/public/images/ui/legacy/windows/window_5.png index edfef03f924..355a25c17b3 100644 Binary files a/public/images/ui/legacy/windows/window_5.png and b/public/images/ui/legacy/windows/window_5.png differ diff --git a/public/images/ui/legacy/windows/window_5_thin.png b/public/images/ui/legacy/windows/window_5_thin.png index 4648d812f17..1e71eae928b 100644 Binary files a/public/images/ui/legacy/windows/window_5_thin.png and b/public/images/ui/legacy/windows/window_5_thin.png differ diff --git a/public/images/ui/legacy/windows/window_5_xthin.png b/public/images/ui/legacy/windows/window_5_xthin.png index 0ee6ffd00e1..d9ee533e223 100644 Binary files a/public/images/ui/legacy/windows/window_5_xthin.png and b/public/images/ui/legacy/windows/window_5_xthin.png differ diff --git a/public/images/ui/link_icon.png b/public/images/ui/link_icon.png index 56081261b9c..1e20ab56ec7 100644 Binary files a/public/images/ui/link_icon.png and b/public/images/ui/link_icon.png differ diff --git a/public/images/ui/mmenu_sel.png b/public/images/ui/mmenu_sel.png index 584403e5d74..4b957c7b905 100644 Binary files a/public/images/ui/mmenu_sel.png and b/public/images/ui/mmenu_sel.png differ diff --git a/public/images/ui/mystery_egg.png b/public/images/ui/mystery_egg.png index bb117a137b0..83ad626da7e 100644 Binary files a/public/images/ui/mystery_egg.png and b/public/images/ui/mystery_egg.png differ diff --git a/public/images/ui/namebox.png b/public/images/ui/namebox.png index 87e5a0875b9..70a0e5e4698 100644 Binary files a/public/images/ui/namebox.png and b/public/images/ui/namebox.png differ diff --git a/public/images/ui/night_icon_bg.png b/public/images/ui/night_icon_bg.png index 1ce4007d54c..233da1c80ee 100644 Binary files a/public/images/ui/night_icon_bg.png and b/public/images/ui/night_icon_bg.png differ diff --git a/public/images/ui/night_icon_fg.png b/public/images/ui/night_icon_fg.png index 78741584312..ef184e24435 100644 Binary files a/public/images/ui/night_icon_fg.png and b/public/images/ui/night_icon_fg.png differ diff --git a/public/images/ui/night_icon_mg.png b/public/images/ui/night_icon_mg.png index 5583c8f799d..f808e50b2c7 100644 Binary files a/public/images/ui/night_icon_mg.png and b/public/images/ui/night_icon_mg.png differ diff --git a/public/images/ui/normal_memory.png b/public/images/ui/normal_memory.png index ddc22d1d4ab..604371dcc7c 100644 Binary files a/public/images/ui/normal_memory.png and b/public/images/ui/normal_memory.png differ diff --git a/public/images/ui/numbers.png b/public/images/ui/numbers.png index bde4fe28202..fd281962047 100644 Binary files a/public/images/ui/numbers.png and b/public/images/ui/numbers.png differ diff --git a/public/images/ui/numbers_red.png b/public/images/ui/numbers_red.png index 37cae6b4d60..4b7eabcbde6 100644 Binary files a/public/images/ui/numbers_red.png and b/public/images/ui/numbers_red.png differ diff --git a/public/images/ui/overlay_exp.png b/public/images/ui/overlay_exp.png index 6b745bedcef..10181d01d4c 100644 Binary files a/public/images/ui/overlay_exp.png and b/public/images/ui/overlay_exp.png differ diff --git a/public/images/ui/overlay_hp.png b/public/images/ui/overlay_hp.png index 08674fdcdb7..9612ed8c4c2 100644 Binary files a/public/images/ui/overlay_hp.png and b/public/images/ui/overlay_hp.png differ diff --git a/public/images/ui/overlay_hp_boss.png b/public/images/ui/overlay_hp_boss.png index 5f7a02a4814..5a011709e0c 100644 Binary files a/public/images/ui/overlay_hp_boss.png and b/public/images/ui/overlay_hp_boss.png differ diff --git a/public/images/ui/overlay_lv.png b/public/images/ui/overlay_lv.png index bbd406d957a..ee3f439f7be 100644 Binary files a/public/images/ui/overlay_lv.png and b/public/images/ui/overlay_lv.png differ diff --git a/public/images/ui/overlay_message.png b/public/images/ui/overlay_message.png index 37eb577402b..7057d08ec71 100644 Binary files a/public/images/ui/overlay_message.png and b/public/images/ui/overlay_message.png differ diff --git a/public/images/ui/party_bg.png b/public/images/ui/party_bg.png index 378b1302cb7..f916cd1e1f8 100644 Binary files a/public/images/ui/party_bg.png and b/public/images/ui/party_bg.png differ diff --git a/public/images/ui/party_bg_double.png b/public/images/ui/party_bg_double.png index e0411c1199b..c4d381d828c 100644 Binary files a/public/images/ui/party_bg_double.png and b/public/images/ui/party_bg_double.png differ diff --git a/public/images/ui/party_cancel.png b/public/images/ui/party_cancel.png index 4ea4bc6d65e..5409a1463ce 100644 Binary files a/public/images/ui/party_cancel.png and b/public/images/ui/party_cancel.png differ diff --git a/public/images/ui/party_exp_bar.png b/public/images/ui/party_exp_bar.png index 7815c684b3a..4703876c129 100644 Binary files a/public/images/ui/party_exp_bar.png and b/public/images/ui/party_exp_bar.png differ diff --git a/public/images/ui/party_pb.png b/public/images/ui/party_pb.png index 4169e9c70dc..b635d5f66aa 100644 Binary files a/public/images/ui/party_pb.png and b/public/images/ui/party_pb.png differ diff --git a/public/images/ui/party_slot.png b/public/images/ui/party_slot.png index ad137cead64..9cdea6f61ca 100644 Binary files a/public/images/ui/party_slot.png and b/public/images/ui/party_slot.png differ diff --git a/public/images/ui/party_slot_hp_bar.png b/public/images/ui/party_slot_hp_bar.png index 1771123c141..5381fe0a0b6 100644 Binary files a/public/images/ui/party_slot_hp_bar.png and b/public/images/ui/party_slot_hp_bar.png differ diff --git a/public/images/ui/party_slot_hp_overlay.png b/public/images/ui/party_slot_hp_overlay.png index 09e8c974ca3..8c6935e5540 100644 Binary files a/public/images/ui/party_slot_hp_overlay.png and b/public/images/ui/party_slot_hp_overlay.png differ diff --git a/public/images/ui/party_slot_main.png b/public/images/ui/party_slot_main.png index ab1f70d8034..1ab1e8ee926 100644 Binary files a/public/images/ui/party_slot_main.png and b/public/images/ui/party_slot_main.png differ diff --git a/public/images/ui/party_slot_overlay_hp.png b/public/images/ui/party_slot_overlay_hp.png index 09e8c974ca3..8c6935e5540 100644 Binary files a/public/images/ui/party_slot_overlay_hp.png and b/public/images/ui/party_slot_overlay_hp.png differ diff --git a/public/images/ui/party_slot_overlay_lv.png b/public/images/ui/party_slot_overlay_lv.png index 7051b1d84c4..3d7dafd6737 100644 Binary files a/public/images/ui/party_slot_overlay_lv.png and b/public/images/ui/party_slot_overlay_lv.png differ diff --git a/public/images/ui/passive_bg.png b/public/images/ui/passive_bg.png index 1e18a47b881..4a3fa1ec72b 100644 Binary files a/public/images/ui/passive_bg.png and b/public/images/ui/passive_bg.png differ diff --git a/public/images/ui/pb_tray_ball.png b/public/images/ui/pb_tray_ball.png index 554f9079042..b8f9cb072ba 100644 Binary files a/public/images/ui/pb_tray_ball.png and b/public/images/ui/pb_tray_ball.png differ diff --git a/public/images/ui/pb_tray_overlay_enemy.png b/public/images/ui/pb_tray_overlay_enemy.png index b6fdbcd1753..06bb9ed2e78 100644 Binary files a/public/images/ui/pb_tray_overlay_enemy.png and b/public/images/ui/pb_tray_overlay_enemy.png differ diff --git a/public/images/ui/pb_tray_overlay_player.png b/public/images/ui/pb_tray_overlay_player.png index ddbacced3d3..b3517543fd7 100644 Binary files a/public/images/ui/pb_tray_overlay_player.png and b/public/images/ui/pb_tray_overlay_player.png differ diff --git a/public/images/ui/pbinfo_enemy_boss.png b/public/images/ui/pbinfo_enemy_boss.png index ff5ba661450..ce829bf4631 100644 Binary files a/public/images/ui/pbinfo_enemy_boss.png and b/public/images/ui/pbinfo_enemy_boss.png differ diff --git a/public/images/ui/pbinfo_enemy_boss_stats.png b/public/images/ui/pbinfo_enemy_boss_stats.png index 7148a7af475..f1478a04172 100644 Binary files a/public/images/ui/pbinfo_enemy_boss_stats.png and b/public/images/ui/pbinfo_enemy_boss_stats.png differ diff --git a/public/images/ui/pbinfo_enemy_mini.png b/public/images/ui/pbinfo_enemy_mini.png index a7ff3cb9b82..ddf10776778 100644 Binary files a/public/images/ui/pbinfo_enemy_mini.png and b/public/images/ui/pbinfo_enemy_mini.png differ diff --git a/public/images/ui/pbinfo_enemy_mini_stats.png b/public/images/ui/pbinfo_enemy_mini_stats.png index 69ac5d49411..9c31d64faa4 100644 Binary files a/public/images/ui/pbinfo_enemy_mini_stats.png and b/public/images/ui/pbinfo_enemy_mini_stats.png differ diff --git a/public/images/ui/pbinfo_enemy_type.png b/public/images/ui/pbinfo_enemy_type.png index 9bac63e5e72..f5199ab6d0e 100644 Binary files a/public/images/ui/pbinfo_enemy_type.png and b/public/images/ui/pbinfo_enemy_type.png differ diff --git a/public/images/ui/pbinfo_enemy_type1.png b/public/images/ui/pbinfo_enemy_type1.png index 6d94871e8da..be28e1d2c65 100644 Binary files a/public/images/ui/pbinfo_enemy_type1.png and b/public/images/ui/pbinfo_enemy_type1.png differ diff --git a/public/images/ui/pbinfo_enemy_type2.png b/public/images/ui/pbinfo_enemy_type2.png index 56a1989f2cd..a4616dc6e86 100644 Binary files a/public/images/ui/pbinfo_enemy_type2.png and b/public/images/ui/pbinfo_enemy_type2.png differ diff --git a/public/images/ui/pbinfo_player.png b/public/images/ui/pbinfo_player.png index fee08f71044..c7b2227e800 100644 Binary files a/public/images/ui/pbinfo_player.png and b/public/images/ui/pbinfo_player.png differ diff --git a/public/images/ui/pbinfo_player_mini.png b/public/images/ui/pbinfo_player_mini.png index f12d46bb4ff..90d5e03dae8 100644 Binary files a/public/images/ui/pbinfo_player_mini.png and b/public/images/ui/pbinfo_player_mini.png differ diff --git a/public/images/ui/pbinfo_player_mini_stats.png b/public/images/ui/pbinfo_player_mini_stats.png index 7ce3bd1af1e..52295492eb7 100644 Binary files a/public/images/ui/pbinfo_player_mini_stats.png and b/public/images/ui/pbinfo_player_mini_stats.png differ diff --git a/public/images/ui/pbinfo_player_stats.png b/public/images/ui/pbinfo_player_stats.png index cda978979aa..10192b7752e 100644 Binary files a/public/images/ui/pbinfo_player_stats.png and b/public/images/ui/pbinfo_player_stats.png differ diff --git a/public/images/ui/pbinfo_player_type.png b/public/images/ui/pbinfo_player_type.png index b78d078de95..864848f843b 100644 Binary files a/public/images/ui/pbinfo_player_type.png and b/public/images/ui/pbinfo_player_type.png differ diff --git a/public/images/ui/pbinfo_player_type1.png b/public/images/ui/pbinfo_player_type1.png index 56a1989f2cd..a4616dc6e86 100644 Binary files a/public/images/ui/pbinfo_player_type1.png and b/public/images/ui/pbinfo_player_type1.png differ diff --git a/public/images/ui/pbinfo_player_type2.png b/public/images/ui/pbinfo_player_type2.png index 6d94871e8da..be28e1d2c65 100644 Binary files a/public/images/ui/pbinfo_player_type2.png and b/public/images/ui/pbinfo_player_type2.png differ diff --git a/public/images/ui/pbinfo_stat.png b/public/images/ui/pbinfo_stat.png index 1c20ed70e82..1f86cc6a958 100644 Binary files a/public/images/ui/pbinfo_stat.png and b/public/images/ui/pbinfo_stat.png differ diff --git a/public/images/ui/pbinfo_stat_numbers.png b/public/images/ui/pbinfo_stat_numbers.png index 1465f8b7a64..af244d5ce26 100644 Binary files a/public/images/ui/pbinfo_stat_numbers.png and b/public/images/ui/pbinfo_stat_numbers.png differ diff --git a/public/images/ui/pokedex_summary_bg.png b/public/images/ui/pokedex_summary_bg.png index 92e70bbee27..bb55127edf2 100644 Binary files a/public/images/ui/pokedex_summary_bg.png and b/public/images/ui/pokedex_summary_bg.png differ diff --git a/public/images/ui/prompt.png b/public/images/ui/prompt.png index 4c5e4c7a96c..c045c5e91fe 100644 Binary files a/public/images/ui/prompt.png and b/public/images/ui/prompt.png differ diff --git a/public/images/ui/saving_icon.png b/public/images/ui/saving_icon.png index fddff8c2d39..772fa91fb8c 100644 Binary files a/public/images/ui/saving_icon.png and b/public/images/ui/saving_icon.png differ diff --git a/public/images/ui/scroll_bar.png b/public/images/ui/scroll_bar.png index e4e5eb34dd2..1e8f53cd29e 100644 Binary files a/public/images/ui/scroll_bar.png and b/public/images/ui/scroll_bar.png differ diff --git a/public/images/ui/scroll_bar_handle.png b/public/images/ui/scroll_bar_handle.png index 95a1726b3ba..18532fb4dc1 100644 Binary files a/public/images/ui/scroll_bar_handle.png and b/public/images/ui/scroll_bar_handle.png differ diff --git a/public/images/ui/select_cursor.png b/public/images/ui/select_cursor.png index 41e52ac0d60..002973f2c9d 100644 Binary files a/public/images/ui/select_cursor.png and b/public/images/ui/select_cursor.png differ diff --git a/public/images/ui/select_cursor_highlight.png b/public/images/ui/select_cursor_highlight.png index a0263740509..b8094eecfa8 100644 Binary files a/public/images/ui/select_cursor_highlight.png and b/public/images/ui/select_cursor_highlight.png differ diff --git a/public/images/ui/select_cursor_highlight_thick.png b/public/images/ui/select_cursor_highlight_thick.png index 4081361b211..7730e58387e 100644 Binary files a/public/images/ui/select_cursor_highlight_thick.png and b/public/images/ui/select_cursor_highlight_thick.png differ diff --git a/public/images/ui/select_cursor_pokerus.png b/public/images/ui/select_cursor_pokerus.png index b84340fdde4..506d6deb249 100644 Binary files a/public/images/ui/select_cursor_pokerus.png and b/public/images/ui/select_cursor_pokerus.png differ diff --git a/public/images/ui/select_gen_cursor.png b/public/images/ui/select_gen_cursor.png index e4ed90ecc77..7f1c86fbb4d 100644 Binary files a/public/images/ui/select_gen_cursor.png and b/public/images/ui/select_gen_cursor.png differ diff --git a/public/images/ui/select_gen_cursor_highlight.png b/public/images/ui/select_gen_cursor_highlight.png index 8019de6f3cd..cecc543ae56 100644 Binary files a/public/images/ui/select_gen_cursor_highlight.png and b/public/images/ui/select_gen_cursor_highlight.png differ diff --git a/public/images/ui/settings_icon.png b/public/images/ui/settings_icon.png index 21680cce7fc..5963317affa 100644 Binary files a/public/images/ui/settings_icon.png and b/public/images/ui/settings_icon.png differ diff --git a/public/images/ui/shiny.png b/public/images/ui/shiny.png index 26d7814fb0b..362f8f48ff1 100644 Binary files a/public/images/ui/shiny.png and b/public/images/ui/shiny.png differ diff --git a/public/images/ui/shiny_1.png b/public/images/ui/shiny_1.png index 9c7a583a7f9..5154761124c 100644 Binary files a/public/images/ui/shiny_1.png and b/public/images/ui/shiny_1.png differ diff --git a/public/images/ui/shiny_icons.png b/public/images/ui/shiny_icons.png index f601d908d32..685f7b8af97 100644 Binary files a/public/images/ui/shiny_icons.png and b/public/images/ui/shiny_icons.png differ diff --git a/public/images/ui/shiny_small.png b/public/images/ui/shiny_small.png index e3d8e260573..66a8b12b876 100644 Binary files a/public/images/ui/shiny_small.png and b/public/images/ui/shiny_small.png differ diff --git a/public/images/ui/starter_container_bg.png b/public/images/ui/starter_container_bg.png index 5b60fcf551e..887616a8c87 100644 Binary files a/public/images/ui/starter_container_bg.png and b/public/images/ui/starter_container_bg.png differ diff --git a/public/images/ui/starter_select_bg.png b/public/images/ui/starter_select_bg.png index 8b11f55a963..b11cd12a5e4 100644 Binary files a/public/images/ui/starter_select_bg.png and b/public/images/ui/starter_select_bg.png differ diff --git a/public/images/ui/summary_bg.png b/public/images/ui/summary_bg.png index a86a94dd56e..ebfe87b78b2 100644 Binary files a/public/images/ui/summary_bg.png and b/public/images/ui/summary_bg.png differ diff --git a/public/images/ui/summary_moves.png b/public/images/ui/summary_moves.png index 8f6b01137c1..618d91934f2 100644 Binary files a/public/images/ui/summary_moves.png and b/public/images/ui/summary_moves.png differ diff --git a/public/images/ui/summary_moves_cursor.png b/public/images/ui/summary_moves_cursor.png index 93ce1fc0dae..5472c55d0c0 100644 Binary files a/public/images/ui/summary_moves_cursor.png and b/public/images/ui/summary_moves_cursor.png differ diff --git a/public/images/ui/summary_moves_effect.png b/public/images/ui/summary_moves_effect.png index e1b0e066732..5b1cef9c02e 100644 Binary files a/public/images/ui/summary_moves_effect.png and b/public/images/ui/summary_moves_effect.png differ diff --git a/public/images/ui/summary_moves_overlay_pp.png b/public/images/ui/summary_moves_overlay_pp.png index 9dd0a080e3d..a2bcd0bd021 100644 Binary files a/public/images/ui/summary_moves_overlay_pp.png and b/public/images/ui/summary_moves_overlay_pp.png differ diff --git a/public/images/ui/summary_moves_overlay_row.png b/public/images/ui/summary_moves_overlay_row.png index 5c975b17472..1c2ed2d3a86 100644 Binary files a/public/images/ui/summary_moves_overlay_row.png and b/public/images/ui/summary_moves_overlay_row.png differ diff --git a/public/images/ui/summary_overlay_shiny.png b/public/images/ui/summary_overlay_shiny.png index 472728cc3a3..956f9fb93f3 100644 Binary files a/public/images/ui/summary_overlay_shiny.png and b/public/images/ui/summary_overlay_shiny.png differ diff --git a/public/images/ui/summary_profile.png b/public/images/ui/summary_profile.png index 55cc70dc4d0..2c0c93af6b4 100644 Binary files a/public/images/ui/summary_profile.png and b/public/images/ui/summary_profile.png differ diff --git a/public/images/ui/summary_profile_ability.png b/public/images/ui/summary_profile_ability.png index 84c41556ab0..a803323564b 100644 Binary files a/public/images/ui/summary_profile_ability.png and b/public/images/ui/summary_profile_ability.png differ diff --git a/public/images/ui/summary_profile_passive.png b/public/images/ui/summary_profile_passive.png index 8d70a54b2a4..1ff9ad8e09a 100644 Binary files a/public/images/ui/summary_profile_passive.png and b/public/images/ui/summary_profile_passive.png differ diff --git a/public/images/ui/summary_profile_prompt_a.png b/public/images/ui/summary_profile_prompt_a.png index 146f1a862e5..f40127ec5ab 100644 Binary files a/public/images/ui/summary_profile_prompt_a.png and b/public/images/ui/summary_profile_prompt_a.png differ diff --git a/public/images/ui/summary_profile_prompt_z.png b/public/images/ui/summary_profile_prompt_z.png index ed842718914..eaa158eaddf 100644 Binary files a/public/images/ui/summary_profile_prompt_z.png and b/public/images/ui/summary_profile_prompt_z.png differ diff --git a/public/images/ui/summary_stats.png b/public/images/ui/summary_stats.png index bcbc6809852..d808be92fd1 100644 Binary files a/public/images/ui/summary_stats.png and b/public/images/ui/summary_stats.png differ diff --git a/public/images/ui/summary_stats_overlay_exp.png b/public/images/ui/summary_stats_overlay_exp.png index a5ef5093ced..126f3c71a3d 100644 Binary files a/public/images/ui/summary_stats_overlay_exp.png and b/public/images/ui/summary_stats_overlay_exp.png differ diff --git a/public/images/ui/summary_status.png b/public/images/ui/summary_status.png index 981e4dafe05..fd518c6c015 100644 Binary files a/public/images/ui/summary_status.png and b/public/images/ui/summary_status.png differ diff --git a/public/images/ui/summary_tabs_1.png b/public/images/ui/summary_tabs_1.png index c4989a86514..750c407b075 100644 Binary files a/public/images/ui/summary_tabs_1.png and b/public/images/ui/summary_tabs_1.png differ diff --git a/public/images/ui/summary_tabs_2.png b/public/images/ui/summary_tabs_2.png index 16f7c35b278..250c3ce7960 100644 Binary files a/public/images/ui/summary_tabs_2.png and b/public/images/ui/summary_tabs_2.png differ diff --git a/public/images/ui/summary_tabs_3.png b/public/images/ui/summary_tabs_3.png index b766307aaca..1af80fa5c0d 100644 Binary files a/public/images/ui/summary_tabs_3.png and b/public/images/ui/summary_tabs_3.png differ diff --git a/public/images/ui/type_bgs.png b/public/images/ui/type_bgs.png index 91d75d622ba..820dc3f5a0e 100644 Binary files a/public/images/ui/type_bgs.png and b/public/images/ui/type_bgs.png differ diff --git a/public/images/ui/type_tera.png b/public/images/ui/type_tera.png index 5c35966a6f4..f7f644cec5d 100644 Binary files a/public/images/ui/type_tera.png and b/public/images/ui/type_tera.png differ diff --git a/public/images/ui/unlink_icon.png b/public/images/ui/unlink_icon.png index f0da5f8e3ed..36723390363 100644 Binary files a/public/images/ui/unlink_icon.png and b/public/images/ui/unlink_icon.png differ diff --git a/public/images/ui/windows/window_1.png b/public/images/ui/windows/window_1.png index 16a088108ee..8349452bd1a 100644 Binary files a/public/images/ui/windows/window_1.png and b/public/images/ui/windows/window_1.png differ diff --git a/public/images/ui/windows/window_1_thin.png b/public/images/ui/windows/window_1_thin.png index 96750d47c0f..8c915f239e8 100644 Binary files a/public/images/ui/windows/window_1_thin.png and b/public/images/ui/windows/window_1_thin.png differ diff --git a/public/images/ui/windows/window_1_xthin.png b/public/images/ui/windows/window_1_xthin.png index 0c11a595ca2..edcabf7b17a 100644 Binary files a/public/images/ui/windows/window_1_xthin.png and b/public/images/ui/windows/window_1_xthin.png differ diff --git a/public/images/ui/windows/window_2.png b/public/images/ui/windows/window_2.png index 98a6de12270..ca7767d1344 100644 Binary files a/public/images/ui/windows/window_2.png and b/public/images/ui/windows/window_2.png differ diff --git a/public/images/ui/windows/window_2_thin.png b/public/images/ui/windows/window_2_thin.png index d3940f62f76..17d180bbb7b 100644 Binary files a/public/images/ui/windows/window_2_thin.png and b/public/images/ui/windows/window_2_thin.png differ diff --git a/public/images/ui/windows/window_2_xthin.png b/public/images/ui/windows/window_2_xthin.png index bbb68216776..0f6450313e3 100644 Binary files a/public/images/ui/windows/window_2_xthin.png and b/public/images/ui/windows/window_2_xthin.png differ diff --git a/public/images/ui/windows/window_3.png b/public/images/ui/windows/window_3.png index d3810b06e0c..76234f0175c 100644 Binary files a/public/images/ui/windows/window_3.png and b/public/images/ui/windows/window_3.png differ diff --git a/public/images/ui/windows/window_3_thin.png b/public/images/ui/windows/window_3_thin.png index db5e0a91266..34c6a7d21cf 100644 Binary files a/public/images/ui/windows/window_3_thin.png and b/public/images/ui/windows/window_3_thin.png differ diff --git a/public/images/ui/windows/window_3_xthin.png b/public/images/ui/windows/window_3_xthin.png index bbf7f904a98..416433f5105 100644 Binary files a/public/images/ui/windows/window_3_xthin.png and b/public/images/ui/windows/window_3_xthin.png differ diff --git a/public/images/ui/windows/window_4.png b/public/images/ui/windows/window_4.png index 5be8161ca8b..dc6095b1663 100644 Binary files a/public/images/ui/windows/window_4.png and b/public/images/ui/windows/window_4.png differ diff --git a/public/images/ui/windows/window_4_thin.png b/public/images/ui/windows/window_4_thin.png index fb8c004921a..0e60510833d 100644 Binary files a/public/images/ui/windows/window_4_thin.png and b/public/images/ui/windows/window_4_thin.png differ diff --git a/public/images/ui/windows/window_4_xthin.png b/public/images/ui/windows/window_4_xthin.png index 15bf0f8c692..bb5323a7aad 100644 Binary files a/public/images/ui/windows/window_4_xthin.png and b/public/images/ui/windows/window_4_xthin.png differ diff --git a/public/images/ui/windows/window_5.png b/public/images/ui/windows/window_5.png index 35ad9c4f22c..9e64853d3ab 100644 Binary files a/public/images/ui/windows/window_5.png and b/public/images/ui/windows/window_5.png differ diff --git a/public/images/ui/windows/window_5_thin.png b/public/images/ui/windows/window_5_thin.png index 35ad9c4f22c..9e64853d3ab 100644 Binary files a/public/images/ui/windows/window_5_thin.png and b/public/images/ui/windows/window_5_thin.png differ diff --git a/public/images/ui/windows/window_5_xthin.png b/public/images/ui/windows/window_5_xthin.png index 8c3a4e12e57..47a23a6a5d7 100644 Binary files a/public/images/ui/windows/window_5_xthin.png and b/public/images/ui/windows/window_5_xthin.png differ diff --git a/public/logo128.png b/public/logo128.png index 40f2a93715f..e6acfb9bfe2 100644 Binary files a/public/logo128.png and b/public/logo128.png differ diff --git a/public/logo512.png b/public/logo512.png index 7fdde1f6b82..6e9854d98b9 100644 Binary files a/public/logo512.png and b/public/logo512.png differ diff --git a/src/@types/arena-tags.ts b/src/@types/arena-tags.ts new file mode 100644 index 00000000000..ab4339b2fef --- /dev/null +++ b/src/@types/arena-tags.ts @@ -0,0 +1,48 @@ +import type { ArenaTagTypeMap } from "#data/arena-tag"; +import type { ArenaTagType } from "#enums/arena-tag-type"; +import type { NonFunctionProperties } from "./type-helpers"; + +/** Subset of {@linkcode ArenaTagType}s that apply some negative effect to pokemon that switch in ({@link https://bulbapedia.bulbagarden.net/wiki/List_of_moves_that_cause_entry_hazards#List_of_traps | entry hazards} and Imprison. */ +export type ArenaTrapTagType = + | ArenaTagType.STICKY_WEB + | ArenaTagType.SPIKES + | ArenaTagType.TOXIC_SPIKES + | ArenaTagType.STEALTH_ROCK + | ArenaTagType.IMPRISON; + +/** Subset of {@linkcode ArenaTagType}s that are considered delayed attacks */ +export type ArenaDelayedAttackTagType = ArenaTagType.FUTURE_SIGHT | ArenaTagType.DOOM_DESIRE; + +/** Subset of {@linkcode ArenaTagType}s that create {@link https://bulbapedia.bulbagarden.net/wiki/Category:Screen-creating_moves | screens}. */ +export type ArenaScreenTagType = ArenaTagType.REFLECT | ArenaTagType.LIGHT_SCREEN | ArenaTagType.AURORA_VEIL; + +/** Subset of {@linkcode ArenaTagType}s for moves that add protection */ +export type TurnProtectArenaTagType = + | ArenaTagType.QUICK_GUARD + | ArenaTagType.WIDE_GUARD + | ArenaTagType.MAT_BLOCK + | ArenaTagType.CRAFTY_SHIELD; + +/** Subset of {@linkcode ArenaTagType}s that cannot persist across turns, and thus should not be serialized in {@linkcode SessionSaveData}. */ +export type NonSerializableArenaTagType = ArenaTagType.NONE | TurnProtectArenaTagType | ArenaTagType.ION_DELUGE; + +/** Subset of {@linkcode ArenaTagType}s that may persist across turns, and thus must be serialized in {@linkcode SessionSaveData}. */ +export type SerializableArenaTagType = Exclude; + +/** + * Type-safe representation of the serializable data of an ArenaTag + */ +export type ArenaTagTypeData = NonFunctionProperties< + ArenaTagTypeMap[keyof { + [K in keyof ArenaTagTypeMap as K extends SerializableArenaTagType ? K : never]: ArenaTagTypeMap[K]; + }] +>; + +/** Dummy, typescript-only declaration to ensure that + * {@linkcode ArenaTagTypeMap} has a map for all ArenaTagTypes. + * + * If an arena tag is missing from the map, typescript will throw an error on this statement. + * + * ⚠️ Does not actually exist at runtime, so it must not be used! + */ +declare const EnsureAllArenaTagTypesAreMapped: ArenaTagTypeMap[ArenaTagType] & never; diff --git a/src/@types/type-helpers.ts b/src/@types/type-helpers.ts index 077bef62f1f..3a5c88e3f15 100644 --- a/src/@types/type-helpers.ts +++ b/src/@types/type-helpers.ts @@ -44,3 +44,34 @@ export type Mutable = { export type InferKeys, V extends EnumValues> = { [K in keyof O]: O[K] extends V ? K : never; }[keyof O]; + +/** + * Type helper that matches any `Function` type. Equivalent to `Function`, but will not raise a warning from Biome. + */ +export type AnyFn = (...args: any[]) => any; + +/** + * Type helper to extract non-function properties from a type. + * + * @remarks + * Useful to produce a type that is roughly the same as the type of `{... obj}`, where `obj` is an instance of `T`. + * A couple of differences: + * - Private and protected properties are not included. + * - Nested properties are not recursively extracted. For this, use {@linkcode NonFunctionPropertiesRecursive} + */ +export type NonFunctionProperties = { + [K in keyof T as T[K] extends AnyFn ? never : K]: T[K]; +}; + +/** + * Type helper to extract out non-function properties from a type, recursively applying to nested properties. + */ +export type NonFunctionPropertiesRecursive = { + [K in keyof Class as Class[K] extends AnyFn ? never : K]: Class[K] extends Array + ? NonFunctionPropertiesRecursive[] + : Class[K] extends object + ? NonFunctionPropertiesRecursive + : Class[K]; +}; + +export type AbstractConstructor = abstract new (...args: any[]) => T; diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 53032370dda..7763655cfc4 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -50,7 +50,7 @@ import { BattlerTagType } from "#enums/battler-tag-type"; import { BiomeId } from "#enums/biome-id"; import { EaseType } from "#enums/ease-type"; import { ExpGainsSpeed } from "#enums/exp-gains-speed"; -import type { ExpNotification } from "#enums/exp-notification"; +import { ExpNotification } from "#enums/exp-notification"; import { FormChangeItem } from "#enums/form-change-item"; import { GameModes } from "#enums/game-modes"; import { ModifierPoolType } from "#enums/modifier-pool-type"; @@ -197,6 +197,7 @@ export class BattleScene extends SceneBase { public enableMoveInfo = true; public enableRetries = false; public hideIvs = false; + // TODO: Remove all plain numbers in place of enums or `const object` equivalents for clarity /** * Determines the condition for a notification should be shown for Candy Upgrades * - 0 = 'Off' @@ -214,7 +215,7 @@ export class BattleScene extends SceneBase { public uiTheme: UiTheme = UiTheme.DEFAULT; public windowType = 0; public experimentalSprites = false; - public musicPreference: number = MusicPreference.ALLGENS; + public musicPreference: MusicPreference = MusicPreference.ALLGENS; public moveAnimations = true; public expGainsSpeed: ExpGainsSpeed = ExpGainsSpeed.DEFAULT; public skipSeenDialogues = false; @@ -225,33 +226,18 @@ export class BattleScene extends SceneBase { * - 2 = Always (automatically skip animation when hatching 2 or more eggs) */ public eggSkipPreference = 0; - /** - * Defines the experience gain display mode. - * - * @remarks - * The `expParty` can have several modes: - * - `0` - Default: The normal experience gain display, nothing changed. - * - `1` - Level Up Notification: Displays the level up in the small frame instead of a message. - * - `2` - Skip: No level up frame nor message. - * - * Modes `1` and `2` are still compatible with stats display, level up, new move, etc. - * @default 0 - Uses the default normal experience gain display. + * Defines the {@linkcode ExpNotification | Experience gain display mode}. + * @defaultValue {@linkcode ExpNotification.DEFAULT} */ - public expParty: ExpNotification = 0; + public expParty: ExpNotification = ExpNotification.DEFAULT; public hpBarSpeed = 0; public fusionPaletteSwaps = true; public enableTouchControls = false; public enableVibration = false; public showBgmBar = true; - - /** - * Determines the selected battle style. - * - 0 = 'Switch' - * - 1 = 'Set' - The option to switch the active pokemon at the start of a battle will not display. - */ + /** Determines the selected battle style. */ public battleStyle: BattleStyle = BattleStyle.SWITCH; - /** * Defines whether or not to show type effectiveness hints * - true: No hints @@ -827,7 +813,8 @@ export class BattleScene extends SceneBase { /** * Returns an array of Pokemon on both sides of the battle - player first, then enemy. * Does not actually check if the pokemon are on the field or not, and always has length 4 regardless of battle type. - * @param activeOnly - Whether to consider only active pokemon; default `false` + * @param activeOnly - Whether to consider only active pokemon (as described by {@linkcode Pokemon.isActive()}); default `false`. + * If `true`, will also remove all `null` values from the array. * @returns An array of {@linkcode Pokemon}, as described above. */ public getField(activeOnly = false): Pokemon[] { @@ -840,9 +827,9 @@ export class BattleScene extends SceneBase { } /** - * Used in doubles battles to redirect moves from one pokemon to another when one faints or is removed from the field - * @param removedPokemon {@linkcode Pokemon} the pokemon that is being removed from the field (flee, faint), moves to be redirected FROM - * @param allyPokemon {@linkcode Pokemon} the pokemon that will have the moves be redirected TO + * Attempt to redirect a move in double battles from a fainted/removed Pokemon to its ally. + * @param removedPokemon - The {@linkcode Pokemon} having been removed from the field. + * @param allyPokemon - The {@linkcode Pokemon} allied with the removed Pokemon; will have moves redirected to it */ redirectPokemonMoves(removedPokemon: Pokemon, allyPokemon: Pokemon): void { // failsafe: if not a double battle just return @@ -868,10 +855,10 @@ export class BattleScene extends SceneBase { /** * Returns the ModifierBar of this scene, which is declared private and therefore not accessible elsewhere - * @param isEnemy Whether to return the enemy's modifier bar - * @returns {ModifierBar} + * @param isEnemy - Whether to return the enemy modifier bar instead of the player bar; default `false` + * @returns The {@linkcode ModifierBar} for the given side of the field */ - getModifierBar(isEnemy?: boolean): ModifierBar { + getModifierBar(isEnemy = false): ModifierBar { return isEnemy ? this.enemyModifierBar : this.modifierBar; } @@ -1472,10 +1459,12 @@ export class BattleScene extends SceneBase { if (!waveIndex && lastBattle) { const isNewBiome = this.isNewBiome(lastBattle); + /** Whether to reset and recall pokemon */ const resetArenaState = isNewBiome || [BattleType.TRAINER, BattleType.MYSTERY_ENCOUNTER].includes(this.currentBattle.battleType) || this.currentBattle.battleSpec === BattleSpec.FINAL_BOSS; + for (const enemyPokemon of this.getEnemyParty()) { enemyPokemon.destroy(); } @@ -1850,7 +1839,7 @@ export class BattleScene extends SceneBase { } resetSeed(waveIndex?: number): void { - const wave = waveIndex || this.currentBattle?.waveIndex || 0; + const wave = waveIndex ?? this.currentBattle?.waveIndex ?? 0; this.waveSeed = shiftCharCodes(this.seed, wave); Phaser.Math.RND.sow([this.waveSeed]); console.log("Wave Seed:", this.waveSeed, wave); diff --git a/src/data/abilities/ability.ts b/src/data/abilities/ability.ts index ff459f24193..30f6f6fb8b2 100644 --- a/src/data/abilities/ability.ts +++ b/src/data/abilities/ability.ts @@ -145,76 +145,141 @@ export class Ability implements Localizable { return this.attrs.some(attr => attr instanceof targetAttr); } - attr>(AttrType: T, ...args: ConstructorParameters): Ability { + /** + * Create a new {@linkcode AbAttr} instance and add it to this {@linkcode Ability}. + * @param attrType - The constructor of the {@linkcode AbAttr} to create. + * @param args - The arguments needed to instantiate the given class. + * @returns `this` + */ + attr>(AttrType: T, ...args: ConstructorParameters): this { const attr = new AttrType(...args); this.attrs.push(attr); return this; } + /** + * Create a new {@linkcode AbAttr} instance with the given condition and add it to this {@linkcode Ability}. + * Checked before all other conditions, and is unique to the individual {@linkcode AbAttr} being created. + * @param condition - The {@linkcode AbAttrCondition} to add. + * @param attrType - The constructor of the {@linkcode AbAttr} to create. + * @param args - The arguments needed to instantiate the given class. + * @returns `this` + */ conditionalAttr>( condition: AbAttrCondition, - AttrType: T, + attrType: T, ...args: ConstructorParameters - ): Ability { - const attr = new AttrType(...args); + ): this { + const attr = new attrType(...args); attr.addCondition(condition); this.attrs.push(attr); return this; } - bypassFaint(): Ability { + /** + * Make this ability trigger even if the user faints. + * @returns `this` + * @remarks + * This is also required for abilities to trigger when revived via Reviver Seed. + */ + bypassFaint(): this { this.isBypassFaint = true; return this; } - ignorable(): Ability { + /** + * Make this ability ignorable by effects like {@linkcode MoveId.SUNSTEEL_STRIKE | Sunsteel Strike} or {@linkcode AbilityId.MOLD_BREAKER | Mold Breaker}. + * @returns `this` + */ + ignorable(): this { this.isIgnorable = true; return this; } - unsuppressable(): Ability { + /** + * Make this ability unsuppressable by effects like {@linkcode MoveId.GASTRO_ACID | Gastro Acid} or {@linkcode AbilityId.NEUTRALIZING_GAS | Neutralizing Gas}. + * @returns `this` + */ + unsuppressable(): this { this.isSuppressable = false; return this; } - uncopiable(): Ability { + /** + * Make this ability uncopiable by effects like {@linkcode MoveId.ROLE_PLAY | Role Play} or {@linkcode AbilityId.TRACE | Trace}. + * @returns `this` + */ + uncopiable(): this { this.isCopiable = false; return this; } - unreplaceable(): Ability { + /** + * Make this ability unreplaceable by effects like {@linkcode MoveId.SIMPLE_BEAM | Simple Beam} or {@linkcode MoveId.ENTRAINMENT | Entrainment}. + * @returns `this` + */ + unreplaceable(): this { this.isReplaceable = false; return this; } - condition(condition: AbAttrCondition): Ability { + /** + * Add a condition for this ability to be applied. + * Applies to **all** attributes of the given ability. + * @param condition - The {@linkcode AbAttrCondition} to add + * @returns `this` + * @see {@linkcode AbAttr.canApply} for setting conditions per attribute type + * @see {@linkcode conditionalAttr} for setting individual conditions per attribute instance + * @todo Review if this is necessary anymore - this is used extremely sparingly + */ + condition(condition: AbAttrCondition): this { this.conditions.push(condition); return this; } + /** + * Mark an ability as partially implemented. + * Partial abilities are expected to have some of their core functionality implemented, but may lack + * certain notable features or interactions with other moves or abilities. + * @returns `this` + */ partial(): this { this.nameAppend += " (P)"; return this; } + /** + * Mark an ability as unimplemented. + * Unimplemented abilities are ones which have _none_ of their basic functionality enabled. + * @returns `this` + */ unimplemented(): this { this.nameAppend += " (N)"; return this; } /** - * Internal flag used for developers to document edge cases. When using this, please be sure to document the edge case. - * @returns the ability + * Mark an ability as having one or more edge cases. + * It may lack certain niche interactions with other moves/abilities, but still functions + * as intended in most cases. + * Does not show up in game and is solely for internal dev use. + * + * When using this, make sure to **document the edge case** (or else this becomes pointless). + * @returns `this` */ edgeCase(): this { return this; } } -/** Base set of parameters passed to every ability attribute's apply method */ +/** + * Base set of parameters passed to every ability attribute's {@linkcode AbAttr.apply | apply} method. + * + * Extended by sub-classes to contain additional parameters pertaining to the ability type(s) being triggered. + */ export interface AbAttrBaseParams { /** The pokemon that has the ability being applied */ readonly pokemon: Pokemon; @@ -245,9 +310,20 @@ export interface AbAttrParamsWithCancel extends AbAttrBaseParams { readonly cancelled: BooleanHolder; } +/** + * Abstract class for all ability attributes. + * + * Each {@linkcode Ability} may have any number of individual attributes, each functioning independently from one another. + */ export abstract class AbAttr { - public showAbility: boolean; - private extraCondition: AbAttrCondition; + /** + * Whether to show this ability as a flyout when applying its effects. + * Should be kept in parity with mainline where possible. + * @defaultValue `true` + */ + public showAbility = true; + /** The additional condition associated with this AbAttr, if any. */ + private extraCondition?: AbAttrCondition; /** * Return whether this attribute is of the given type. @@ -275,21 +351,43 @@ export abstract class AbAttr { } /** - * Apply ability effects without checking conditions. - * **Never call this method directly, use {@linkcode applyAbAttrs} instead.** + * Apply this attribute's effects without checking conditions. + * + * @remarks + * **Never call this method directly!** \ + * Use {@linkcode applyAbAttrs} instead. */ apply(_params: AbAttrBaseParams): void {} - // The `Exact` in the next two signatures enforces that the type of the _params operand - // is always compatible with the type of apply. This allows fewer fields, but never a type with more. + /** + * Return the trigger message to show when this attribute is executed. + * @param _params - The parameters passed to this attribute's {@linkcode apply} function; must match type exactly + * @param _abilityName - The name of the current ability. + * @privateRemarks + * If more fields are provided than needed, any excess can be discarded using destructuring. + * @todo Remove `null` from signature in lieu of using an empty string + */ getTriggerMessage(_params: Exact[0]>, _abilityName: string): string | null { return null; } + /** + * Check whether this attribute can have its effects successfully applied. + * Applies to **all** instances of the given attribute. + * @param _params - The parameters passed to this attribute's {@linkcode apply} function; must match type exactly + * @privateRemarks + * If more fields are provided than needed, any excess can be discarded using destructuring. + */ canApply(_params: Exact[0]>): boolean { return true; } + /** + * Return the additional condition associated with this particular AbAttr instance, if any. + * @returns The extra condition for this {@linkcode AbAttr}, or `null` if none exist + * @todo Make this use `undefined` instead of `null` + * @todo Prevent this from being overridden by sub-classes + */ getCondition(): AbAttrCondition | null { return this.extraCondition || null; } @@ -593,7 +691,7 @@ export class TypeImmunityAbAttr extends PreDefendAbAttr { private immuneType: PokemonType | null; private condition: AbAttrCondition | null; - // TODO: `immuneType` shouldn't be able to be `null` + // TODO: Change `NonSuperEffectiveImmunityAbAttr` to not pass `null` as immune type constructor(immuneType: PokemonType | null, condition?: AbAttrCondition) { super(true); @@ -1526,6 +1624,11 @@ export interface FieldMultiplyStatAbAttrParams extends AbAttrBaseParams { export class FieldMultiplyStatAbAttr extends AbAttr { private stat: Stat; private multiplier: number; + /** + * Whether this ability can stack with others of the same type for this stat. + * @defaultValue `false` + * @todo Remove due to being literally useless - the ruin abilities are hardcoded to never stack in game + */ private canStack: boolean; constructor(stat: Stat, multiplier: number, canStack = false) { @@ -1546,7 +1649,7 @@ export class FieldMultiplyStatAbAttr extends AbAttr { } /** - * applyFieldStat: Tries to multiply a Pokemon's Stat + * Atttempt to multiply a Pokemon's Stat. */ apply({ statVal, hasApplied }: FieldMultiplyStatAbAttrParams): void { statVal.value *= this.multiplier; @@ -1572,23 +1675,25 @@ export class MoveTypeChangeAbAttr extends PreAttackAbAttr { } /** - * Determine if the move type change attribute can be applied + * Determine if the move type change attribute can be applied. * * Can be applied if: * - The ability's condition is met, e.g. pixilate only boosts normal moves, * - The move is not forbidden from having its type changed by an ability, e.g. {@linkcode MoveId.MULTI_ATTACK} - * - The user is not terastallized and using tera blast - * - The user is not a terastallized terapagos with tera stellar using tera starstorm + * - The user is not Terastallized and using Tera Blast + * - The user is not a Terastallized Terapagos using Stellar-type Tera Starstorm */ override canApply({ pokemon, opponent: target, move }: MoveTypeChangeAbAttrParams): boolean { return ( (!this.condition || this.condition(pokemon, target, move)) && !noAbilityTypeOverrideMoves.has(move.id) && - (!pokemon.isTerastallized || - (move.id !== MoveId.TERA_BLAST && - (move.id !== MoveId.TERA_STARSTORM || - pokemon.getTeraType() !== PokemonType.STELLAR || - !pokemon.hasSpecies(SpeciesId.TERAPAGOS)))) + !( + pokemon.isTerastallized && + (move.id === MoveId.TERA_BLAST || + (move.id === MoveId.TERA_STARSTORM && + pokemon.getTeraType() === PokemonType.STELLAR && + pokemon.hasSpecies(SpeciesId.TERAPAGOS))) + ) ); } @@ -1661,23 +1766,19 @@ export interface AddSecondStrikeAbAttrParams extends Omit): boolean { return this.attackCondition(pokemon, opponent, move); @@ -3511,18 +3613,18 @@ export interface ConfusionOnStatusEffectAbAttrParams extends AbAttrBaseParams { */ export class ConfusionOnStatusEffectAbAttr extends AbAttr { /** List of effects to apply confusion after */ - private effects: StatusEffect[]; + private effects: ReadonlySet; constructor(...effects: StatusEffect[]) { super(); - this.effects = effects; + this.effects = new Set(effects); } /** * @returns Whether the ability can apply confusion to the opponent */ override canApply({ opponent, effect }: ConfusionOnStatusEffectAbAttrParams): boolean { - return this.effects.includes(effect) && !opponent.isFainted() && opponent.canAddTag(BattlerTagType.CONFUSED); + return this.effects.has(effect) && !opponent.isFainted() && opponent.canAddTag(BattlerTagType.CONFUSED); } /** @@ -4500,8 +4602,8 @@ export class PostTurnStatusHealAbAttr extends PostTurnAbAttr { } /** - * After the turn ends, resets the status of either the ability holder or their ally - * @param allyTarget Whether to target ally, defaults to false (self-target) + * After the turn ends, resets the status of either the user or their ally. + * @param allyTarget Whether to target the user's ally; default `false` (self-target) * * @sealed */ @@ -4786,17 +4888,22 @@ export class PostTurnHurtIfSleepingAbAttr extends PostTurnAbAttr { !opp.switchOutStatus, ); } - /** Deals damage to all sleeping opponents equal to 1/8 of their max hp (min 1) */ + + /** Deal damage to all sleeping, on-field opponents equal to 1/8 of their max hp (min 1). */ override apply({ pokemon, simulated }: AbAttrBaseParams): void { if (simulated) { return; } + for (const opp of pokemon.getOpponents()) { - if ( - (opp.status?.effect === StatusEffect.SLEEP || opp.hasAbility(AbilityId.COMATOSE)) && - !opp.hasAbilityWithAttr("BlockNonDirectDamageAbAttr") && - !opp.switchOutStatus - ) { + if ((opp.status?.effect !== StatusEffect.SLEEP && !opp.hasAbility(AbilityId.COMATOSE)) || opp.switchOutStatus) { + continue; + } + + const cancelled = new BooleanHolder(false); + applyAbAttrs("BlockNonDirectDamageAbAttr", { pokemon, simulated, cancelled }); + + if (!cancelled.value) { opp.damageAndUpdate(toDmgValue(opp.getMaxHp() / 8), { result: HitResult.INDIRECT }); globalScene.phaseManager.queueMessage( i18next.t("abilityTriggers:badDreams", { pokemonName: getPokemonNameWithAffix(opp) }), @@ -4809,7 +4916,8 @@ export class PostTurnHurtIfSleepingAbAttr extends PostTurnAbAttr { /** * Grabs the last failed Pokeball used * @sealed - * @see {@linkcode applyPostTurn} */ + * @see {@linkcode applyPostTurn} + */ export class FetchBallAbAttr extends PostTurnAbAttr { override canApply({ simulated, pokemon }: AbAttrBaseParams): boolean { return !simulated && !isNullOrUndefined(globalScene.currentBattle.lastUsedPokeball) && !!pokemon.isPlayer; @@ -5265,14 +5373,15 @@ export class PostBattleLootAbAttr extends PostBattleAbAttr { } /** - * Shared parameters for ability attributes that are triggered after the user faints. + * Shared parameters for ability attributes that trigger after the user faints. */ export interface PostFaintAbAttrParams extends AbAttrBaseParams { - /** The pokemon that caused the faint, or undefined if not caused by a pokemon */ + /** The pokemon that caused the user to faint, or `undefined` if not caused by a Pokemon */ readonly attacker?: Pokemon; - /** The move that caused the faint, or undefined if not caused by a move */ + /** The move that caused the user to faint, or `undefined` if not caused by a move */ readonly move?: Move; - /** The result of the hit that caused the faint */ + /** The result of the hit that caused the user to faint */ + // TODO: Do we need this? It's unused by all classes readonly hitResult?: HitResult; } @@ -5305,6 +5414,26 @@ export class PostFaintUnsuppressedWeatherFormChangeAbAttr extends PostFaintAbAtt } } +export class PostFaintFormChangeAbAttr extends PostFaintAbAttr { + private formFunc: (p: Pokemon) => number; + + constructor(formFunc: (p: Pokemon) => number) { + super(true); + + this.formFunc = formFunc; + } + + override canApply({ pokemon }: AbAttrBaseParams): boolean { + return this.formFunc(pokemon) !== pokemon.formIndex; + } + + override apply({ pokemon, simulated }: AbAttrBaseParams): void { + if (!simulated) { + globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeAbilityTrigger, false); + } + } +} + export class PostFaintContactDamageAbAttr extends PostFaintAbAttr { private damageRatio: number; @@ -5315,28 +5444,35 @@ export class PostFaintContactDamageAbAttr extends PostFaintAbAttr { } override canApply({ pokemon, attacker, move, simulated }: PostFaintAbAttrParams): boolean { - if (!move || !attacker) { + if ( + move === undefined || + attacker === undefined || + !move.doesFlagEffectApply({ flag: MoveFlags.MAKES_CONTACT, user: attacker, target: pokemon }) + ) { return false; } - const diedToDirectDamage = - attacker !== undefined && - move.doesFlagEffectApply({ flag: MoveFlags.MAKES_CONTACT, user: attacker, target: pokemon }); + const cancelled = new BooleanHolder(false); - for (const otherPokemon of globalScene.getField(true)) { - applyAbAttrs("FieldPreventExplosiveMovesAbAttr", { - pokemon: otherPokemon, - simulated, - cancelled, - }); + // TODO: This should be in speed order + globalScene + .getField(true) + .forEach(p => applyAbAttrs("FieldPreventExplosiveMovesAbAttr", { pokemon: p, cancelled, simulated })); + + if (cancelled.value) { + return false; } - return !(!diedToDirectDamage || cancelled.value || attacker.hasAbilityWithAttr("BlockNonDirectDamageAbAttr")); + + // Confirmed: Aftermath does not activate or show text vs Magic Guard killers + applyAbAttrs("BlockNonDirectDamageAbAttr", { pokemon: attacker, cancelled }); + return !cancelled.value; } override apply({ simulated, attacker }: PostFaintAbAttrParams): void { if (!attacker || simulated) { return; } - attacker.damageAndUpdate(toDmgValue(attacker!.getMaxHp() * (1 / this.damageRatio)), { + + attacker.damageAndUpdate(toDmgValue(attacker.getMaxHp() * (1 / this.damageRatio)), { result: HitResult.INDIRECT, }); attacker.turnData.damageTaken += toDmgValue(attacker.getMaxHp() * (1 / this.damageRatio)); @@ -5351,20 +5487,33 @@ export class PostFaintContactDamageAbAttr extends PostFaintAbAttr { } /** - * Attribute used for abilities (Innards Out) that damage the opponent based on how much HP the last attack used to knock out the owner of the ability. + * Attribute used for abilities that damage opponents causing the user to faint + * equal to the amount of damage the last attack inflicted. + * + * Used for {@linkcode Abilities.INNARDS_OUT}. * @sealed */ export class PostFaintHPDamageAbAttr extends PostFaintAbAttr { override apply({ simulated, pokemon, move, attacker }: PostFaintAbAttrParams): void { - //If the mon didn't die to indirect damage - if (move !== undefined && attacker !== undefined && !simulated) { - const damage = pokemon.turnData.attacksReceived[0].damage; - attacker.damageAndUpdate(damage, { result: HitResult.INDIRECT }); - attacker.turnData.damageTaken += damage; + // return early if the user died to indirect damage, target has magic guard or was KO'd by an ally + if (!move || !attacker || simulated || attacker.getAlly() === pokemon) { + return; } + + const cancelled = new BooleanHolder(false); + applyAbAttrs("BlockNonDirectDamageAbAttr", { pokemon: attacker, cancelled }); + if (cancelled.value) { + return; + } + + const damage = pokemon.turnData.attacksReceived[0].damage; + attacker.damageAndUpdate(damage, { result: HitResult.INDIRECT }); + attacker.turnData.damageTaken += damage; } - getTriggerMessage({ pokemon }: PostFaintAbAttrParams, abilityName: string): string { + // Oddly, Innards Out still shows a flyout if the effect was blocked due to Magic Guard... + // TODO: Verify on cart + override getTriggerMessage({ pokemon }: PostFaintAbAttrParams, abilityName: string): string { return i18next.t("abilityTriggers:postFaintHpDamage", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName, @@ -5640,11 +5789,13 @@ export class InfiltratorAbAttr extends AbAttr { * Allows the source to bounce back {@linkcode MoveFlags.REFLECTABLE | Reflectable} * moves as if the user had used {@linkcode MoveId.MAGIC_COAT | Magic Coat}. * @sealed + * @todo Make reflection a part of this ability's effects */ export class ReflectStatusMoveAbAttr extends AbAttr { private declare readonly _: never; } +// TODO: Make these ability attributes be flags instead of dummy attributes /** @sealed */ export class NoTransformAbilityAbAttr extends AbAttr { private declare readonly _: never; @@ -7296,6 +7447,7 @@ export function initAbilities() { (pokemon, abilityName) => i18next.t("abilityTriggers:disguiseAvoidedDamage", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName: abilityName }), (pokemon) => toDmgValue(pokemon.getMaxHp() / 8)) .attr(PostBattleInitFormChangeAbAttr, () => 0) + .attr(PostFaintFormChangeAbAttr, () => 0) .uncopiable() .unreplaceable() .unsuppressable() @@ -7304,6 +7456,7 @@ export function initAbilities() { new Ability(AbilityId.BATTLE_BOND, 7) .attr(PostVictoryFormChangeAbAttr, () => 2) .attr(PostBattleInitFormChangeAbAttr, () => 1) + .attr(PostFaintFormChangeAbAttr, () => 1) .attr(NoFusionAbilityAbAttr) .uncopiable() .unreplaceable() @@ -7315,6 +7468,7 @@ export function initAbilities() { .conditionalAttr(p => p.formIndex === 4 || p.formIndex === 5, PostBattleInitFormChangeAbAttr, p => p.formIndex - 2) .conditionalAttr(p => p.getHpRatio() <= 0.5 && (p.formIndex === 2 || p.formIndex === 3), PostSummonFormChangeAbAttr, p => p.formIndex + 2) .conditionalAttr(p => p.getHpRatio() <= 0.5 && (p.formIndex === 2 || p.formIndex === 3), PostTurnFormChangeAbAttr, p => p.formIndex + 2) + .conditionalAttr(p => p.formIndex === 4 || p.formIndex === 5, PostFaintFormChangeAbAttr, p => p.formIndex - 2) .attr(NoFusionAbilityAbAttr) .uncopiable() .unreplaceable() diff --git a/src/data/abilities/apply-ab-attrs.ts b/src/data/abilities/apply-ab-attrs.ts index e8f01a4bb36..58f63c5924a 100644 --- a/src/data/abilities/apply-ab-attrs.ts +++ b/src/data/abilities/apply-ab-attrs.ts @@ -8,23 +8,18 @@ function applySingleAbAttrs( messages: string[] = [], ) { const { simulated = false, passive = false, pokemon } = params; - if (!pokemon?.canApplyAbility(passive) || (passive && pokemon.getPassiveAbility().id === pokemon.getAbility().id)) { + if (!pokemon.canApplyAbility(passive) || (passive && pokemon.getPassiveAbility().id === pokemon.getAbility().id)) { return; } const ability = passive ? pokemon.getPassiveAbility() : pokemon.getAbility(); - if ( - gainedMidTurn && - ability.getAttrs(attrType).some(attr => { - attr.is("PostSummonAbAttr") && !attr.shouldActivateOnGain(); - }) - ) { + const attrs = ability.getAttrs(attrType); + if (gainedMidTurn && attrs.some(attr => attr.is("PostSummonAbAttr") && !attr.shouldActivateOnGain())) { return; } - for (const attr of ability.getAttrs(attrType)) { + for (const attr of attrs) { const condition = attr.getCondition(); - let abShown = false; // We require an `as any` cast to suppress an error about the `params` type not being assignable to // the type of the argument expected by `attr.canApply()`. This is OK, because we know that // `attr` is an instance of the `attrType` class provided to the method, and typescript _will_ check @@ -33,7 +28,7 @@ function applySingleAbAttrs( continue; } - globalScene.phaseManager.setPhaseQueueSplice(); + let abShown = false; if (attr.showAbility && !simulated) { globalScene.phaseManager.queueAbilityDisplay(pokemon, passive, true); @@ -45,6 +40,7 @@ function applySingleAbAttrs( if (!simulated) { globalScene.phaseManager.queueMessage(message); } + // TODO: Should messages be added to the array if they aren't actually shown? messages.push(message); } // The `as any` cast here uses the same reasoning as above. @@ -57,8 +53,6 @@ function applySingleAbAttrs( if (!simulated) { pokemon.waveData.abilitiesApplied.add(ability.id); } - - globalScene.phaseManager.clearPhaseQueueSplice(); } } diff --git a/src/data/arena-tag.ts b/src/data/arena-tag.ts index 0c369f8b22d..2d49e7011af 100644 --- a/src/data/arena-tag.ts +++ b/src/data/arena-tag.ts @@ -19,17 +19,88 @@ import { Stat } from "#enums/stat"; import { StatusEffect } from "#enums/status-effect"; import type { Arena } from "#field/arena"; import type { Pokemon } from "#field/pokemon"; -import { BooleanHolder, NumberHolder, toDmgValue } from "#utils/common"; +import type { + ArenaDelayedAttackTagType, + ArenaScreenTagType, + ArenaTagTypeData, + ArenaTrapTagType, + SerializableArenaTagType, +} from "#types/arena-tags"; +import type { Mutable, NonFunctionProperties } from "#types/type-helpers"; +import { BooleanHolder, isNullOrUndefined, NumberHolder, toDmgValue } from "#utils/common"; import i18next from "i18next"; -export abstract class ArenaTag { - constructor( - public tagType: ArenaTagType, - public turnCount: number, - public sourceMove?: MoveId, - public sourceId?: number, - public side: ArenaTagSide = ArenaTagSide.BOTH, - ) {} +/* +ArenaTags are are meant for effects that are tied to the arena (as opposed to a specific pokemon). +Examples include (but are not limited to) +- Cross-turn effects that persist even if the user/target switches out, such as Wish, Future Sight, and Happy Hour +- Effects that are applied to a specific side of the field, such as Crafty Shield, Reflect, and Spikes +- Field-Effects, like Gravity and Trick Room + +Any arena tag that persists across turns *must* extend from `SerializableArenaTag` in the class definition signature. + +Serializable ArenaTags have strict rules for their fields. +These rules ensure that only the data necessary to reconstruct the tag is serialized, and that the +session loader is able to deserialize saved tags correctly. + +If the data is static (i.e. it is always the same for all instances of the class, such as the +type that is weakened by Mud Sport/Water Sport), then it must not be defined as a field, and must +instead be defined as a getter. +A static property is also acceptable, though static properties are less ergonomic with inheritance. + +If the data is mutable (i.e. it can change over the course of the tag's lifetime), then it *must* +be defined as a field, and it must be set in the `loadTag` method. +Such fields cannot be marked as `private/protected`, as if they were, typescript would omit them from +types that are based off of the class, namely, `ArenaTagTypeData`. It is preferrable to trade the +type-safety of private/protected fields for the type safety when deserializing arena tags from save data. + +For data that is mutable only within a turn (e.g. SuppressAbilitiesTag's beingRemoved field), +where it does not make sense to be serialized, the field should use ES2020's private field syntax (a `#` prepended to the field name). +If the field should be accessible outside of the class, then a public getter should be used. +*/ + +/** Interface containing the serializable fields of ArenaTagData. */ +interface BaseArenaTag { + /** + * The tag's remaining duration. Setting to any number `<=0` will make the tag's duration effectively infinite. + */ + turnCount: number; + /** + * The {@linkcode MoveId} that created this tag, or `undefined` if not set by a move. + */ + sourceMove?: MoveId; + /** + * The {@linkcode Pokemon.id | PID} of the {@linkcode Pokemon} having created the tag, or `undefined` if not set by a Pokemon. + * @todo Implement handling for `ArenaTag`s created by non-pokemon sources (most tags will throw errors without a source) + */ + // Note: Intentionally not using `?`, as the property should always exist, but just be undefined if not present. + sourceId: number | undefined; + /** + * The {@linkcode ArenaTagSide | side of the field} that this arena tag affects. + * @defaultValue `ArenaTagSide.BOTH` + */ + side: ArenaTagSide; +} + +/** + * An {@linkcode ArenaTag} represents a semi-persistent effect affecting a given _side_ of the field. + * Unlike {@linkcode BattlerTag}s (which are tied to individual {@linkcode Pokemon}), `ArenaTag`s function independently of + * the Pokemon currently on-field, only cleared on arena reset or through their respective {@linkcode ArenaTag.lapse | lapse} methods. + */ +export abstract class ArenaTag implements BaseArenaTag { + /** The type of the arena tag */ + public abstract readonly tagType: ArenaTagType; + public turnCount: number; + public sourceMove?: MoveId; + public sourceId: number | undefined; + public side: ArenaTagSide; + + constructor(turnCount: number, sourceMove?: MoveId, sourceId?: number, side: ArenaTagSide = ArenaTagSide.BOTH) { + this.turnCount = turnCount; + this.sourceMove = sourceMove; + this.sourceId = sourceId; + this.side = side; + } apply(_arena: Arena, _simulated: boolean, ..._args: unknown[]): boolean { return true; @@ -50,8 +121,17 @@ export abstract class ArenaTag { onOverlap(_arena: Arena, _source: Pokemon | null): void {} + /** + * Trigger this {@linkcode ArenaTag}'s effect, reducing its duration as applicable. + * Will ignore durations of all tags with durations `<=0`. + * @param _arena - The {@linkcode Arena} at the moment the tag is being lapsed. + * Unused by default but can be used by sub-classes. + * @returns `true` if this tag should be kept; `false` if it should be removed. + */ lapse(_arena: Arena): boolean { - return this.turnCount < 1 || !!--this.turnCount; + // TODO: Rather than treating negative duration tags as being indefinite, + // make all duration based classes inherit from their own sub-class + return this.turnCount < 1 || --this.turnCount > 0; } getMoveName(): string | null { @@ -61,9 +141,9 @@ export abstract class ArenaTag { /** * When given a arena tag or json representing one, load the data for it. * This is meant to be inherited from by any arena tag with custom attributes - * @param {ArenaTag | any} source An arena tag + * @param source - The {@linkcode BaseArenaTag} being loaded */ - loadTag(source: ArenaTag | any): void { + loadTag(source: BaseArenaTag): void { this.turnCount = source.turnCount; this.sourceMove = source.sourceMove; this.sourceId = source.sourceId; @@ -96,13 +176,21 @@ export abstract class ArenaTag { } } +/** + * Abstract class for arena tags that can persist across turns. + */ +export abstract class SerializableArenaTag extends ArenaTag { + abstract readonly tagType: SerializableArenaTagType; +} + /** * Arena Tag class for {@link https://bulbapedia.bulbagarden.net/wiki/Mist_(move) Mist}. * Prevents Pokémon on the opposing side from lowering the stats of the Pokémon in the Mist. */ -export class MistTag extends ArenaTag { - constructor(turnCount: number, sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.MIST, turnCount, MoveId.MIST, sourceId, side); +export class MistTag extends SerializableArenaTag { + readonly tagType = ArenaTagType.MIST; + constructor(turnCount: number, sourceId: number | undefined, side: ArenaTagSide) { + super(turnCount, MoveId.MIST, sourceId, side); } onAdd(arena: Arena, quiet = false): void { @@ -159,33 +247,11 @@ export class MistTag extends ArenaTag { /** * Reduces the damage of specific move categories in the arena. - * @extends ArenaTag */ -export class WeakenMoveScreenTag extends ArenaTag { - protected weakenedCategories: MoveCategory[]; - - /** - * Creates a new instance of the WeakenMoveScreenTag class. - * - * @param tagType - The type of the arena tag. - * @param turnCount - The number of turns the tag is active. - * @param sourceMove - The move that created the tag. - * @param sourceId - The ID of the source of the tag. - * @param side - The side (player or enemy) the tag affects. - * @param weakenedCategories - The categories of moves that are weakened by this tag. - */ - constructor( - tagType: ArenaTagType, - turnCount: number, - sourceMove: MoveId, - sourceId: number, - side: ArenaTagSide, - weakenedCategories: MoveCategory[], - ) { - super(tagType, turnCount, sourceMove, sourceId, side); - - this.weakenedCategories = weakenedCategories; - } +export abstract class WeakenMoveScreenTag extends SerializableArenaTag { + public abstract readonly tagType: ArenaScreenTagType; + // Getter to avoid unnecessary serialization and prevent modification + protected abstract get weakenedCategories(): MoveCategory[]; /** * Applies the weakening effect to the move. @@ -222,8 +288,13 @@ export class WeakenMoveScreenTag extends ArenaTag { * Used by {@linkcode MoveId.REFLECT} */ class ReflectTag extends WeakenMoveScreenTag { - constructor(turnCount: number, sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.REFLECT, turnCount, MoveId.REFLECT, sourceId, side, [MoveCategory.PHYSICAL]); + public readonly tagType = ArenaTagType.REFLECT; + protected get weakenedCategories(): [MoveCategory.PHYSICAL] { + return [MoveCategory.PHYSICAL]; + } + + constructor(turnCount: number, sourceId: number | undefined, side: ArenaTagSide) { + super(turnCount, MoveId.REFLECT, sourceId, side); } onAdd(_arena: Arena, quiet = false): void { @@ -242,8 +313,12 @@ class ReflectTag extends WeakenMoveScreenTag { * Used by {@linkcode MoveId.LIGHT_SCREEN} */ class LightScreenTag extends WeakenMoveScreenTag { - constructor(turnCount: number, sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.LIGHT_SCREEN, turnCount, MoveId.LIGHT_SCREEN, sourceId, side, [MoveCategory.SPECIAL]); + public readonly tagType = ArenaTagType.LIGHT_SCREEN; + protected get weakenedCategories(): [MoveCategory.SPECIAL] { + return [MoveCategory.SPECIAL]; + } + constructor(turnCount: number, sourceId: number | undefined, side: ArenaTagSide) { + super(turnCount, MoveId.LIGHT_SCREEN, sourceId, side); } onAdd(_arena: Arena, quiet = false): void { @@ -262,11 +337,13 @@ class LightScreenTag extends WeakenMoveScreenTag { * Used by {@linkcode MoveId.AURORA_VEIL} */ class AuroraVeilTag extends WeakenMoveScreenTag { - constructor(turnCount: number, sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.AURORA_VEIL, turnCount, MoveId.AURORA_VEIL, sourceId, side, [ - MoveCategory.SPECIAL, - MoveCategory.PHYSICAL, - ]); + public readonly tagType = ArenaTagType.AURORA_VEIL; + protected get weakenedCategories(): [MoveCategory.PHYSICAL, MoveCategory.SPECIAL] { + return [MoveCategory.PHYSICAL, MoveCategory.SPECIAL]; + } + + constructor(turnCount: number, sourceId: number | undefined, side: ArenaTagSide) { + super(turnCount, MoveId.AURORA_VEIL, sourceId, side); } onAdd(_arena: Arena, quiet = false): void { @@ -286,21 +363,23 @@ type ProtectConditionFunc = (arena: Arena, moveId: MoveId) => boolean; * Class to implement conditional team protection * applies protection based on the attributes of incoming moves */ -export class ConditionalProtectTag extends ArenaTag { +export abstract class ConditionalProtectTag extends ArenaTag { /** The condition function to determine which moves are negated */ protected protectConditionFunc: ProtectConditionFunc; - /** Does this apply to all moves, including those that ignore other forms of protection? */ + /** + * Whether this protection effect should apply to _all_ moves, including ones that ignore other forms of protection. + * @defaultValue `false` + */ protected ignoresBypass: boolean; constructor( - tagType: ArenaTagType, sourceMove: MoveId, - sourceId: number, + sourceId: number | undefined, side: ArenaTagSide, condition: ProtectConditionFunc, ignoresBypass = false, ) { - super(tagType, 1, sourceMove, sourceId, side); + super(1, sourceMove, sourceId, side); this.protectConditionFunc = condition; this.ignoresBypass = ignoresBypass; @@ -386,8 +465,9 @@ const QuickGuardConditionFunc: ProtectConditionFunc = (_arena, moveId) => { * Condition: The incoming move has increased priority. */ class QuickGuardTag extends ConditionalProtectTag { - constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.QUICK_GUARD, MoveId.QUICK_GUARD, sourceId, side, QuickGuardConditionFunc); + public readonly tagType = ArenaTagType.QUICK_GUARD; + constructor(sourceId: number | undefined, side: ArenaTagSide) { + super(MoveId.QUICK_GUARD, sourceId, side, QuickGuardConditionFunc); } } @@ -417,8 +497,9 @@ const WideGuardConditionFunc: ProtectConditionFunc = (_arena, moveId): boolean = * can be an ally or enemy. */ class WideGuardTag extends ConditionalProtectTag { - constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.WIDE_GUARD, MoveId.WIDE_GUARD, sourceId, side, WideGuardConditionFunc); + public readonly tagType = ArenaTagType.WIDE_GUARD; + constructor(sourceId: number | undefined, side: ArenaTagSide) { + super(MoveId.WIDE_GUARD, sourceId, side, WideGuardConditionFunc); } } @@ -439,8 +520,9 @@ const MatBlockConditionFunc: ProtectConditionFunc = (_arena, moveId): boolean => * Condition: The incoming move is a Physical or Special attack move. */ class MatBlockTag extends ConditionalProtectTag { - constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.MAT_BLOCK, MoveId.MAT_BLOCK, sourceId, side, MatBlockConditionFunc); + public readonly tagType = ArenaTagType.MAT_BLOCK; + constructor(sourceId: number | undefined, side: ArenaTagSide) { + super(MoveId.MAT_BLOCK, sourceId, side, MatBlockConditionFunc); } onAdd(_arena: Arena) { @@ -483,8 +565,9 @@ const CraftyShieldConditionFunc: ProtectConditionFunc = (_arena, moveId) => { * not target all Pokemon or sides of the field. */ class CraftyShieldTag extends ConditionalProtectTag { - constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.CRAFTY_SHIELD, MoveId.CRAFTY_SHIELD, sourceId, side, CraftyShieldConditionFunc, true); + public readonly tagType = ArenaTagType.CRAFTY_SHIELD; + constructor(sourceId: number | undefined, side: ArenaTagSide) { + super(MoveId.CRAFTY_SHIELD, sourceId, side, CraftyShieldConditionFunc, true); } } @@ -492,17 +575,8 @@ class CraftyShieldTag extends ConditionalProtectTag { * Arena Tag class for {@link https://bulbapedia.bulbagarden.net/wiki/Lucky_Chant_(move) Lucky Chant}. * Prevents critical hits against the tag's side. */ -export class NoCritTag extends ArenaTag { - /** - * Constructor method for the NoCritTag class - * @param turnCount `number` the number of turns this effect lasts - * @param sourceMove {@linkcode MoveId} the move that created this effect - * @param sourceId `number` the ID of the {@linkcode Pokemon} that created this effect - * @param side {@linkcode ArenaTagSide} the side to which this effect belongs - */ - constructor(turnCount: number, sourceMove: MoveId, sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.NO_CRIT, turnCount, sourceMove, sourceId, side); - } +export class NoCritTag extends SerializableArenaTag { + public readonly tagType = ArenaTagType.NO_CRIT; /** Queues a message upon adding this effect to the field */ onAdd(_arena: Arena): void { @@ -534,13 +608,17 @@ export class NoCritTag extends ArenaTag { * Arena Tag class for {@link https://bulbapedia.bulbagarden.net/wiki/Wish_(move) | Wish}. * Heals the Pokémon in the user's position the turn after Wish is used. */ -class WishTag extends ArenaTag { - private battlerIndex: BattlerIndex; - private triggerMessage: string; - private healHp: number; +class WishTag extends SerializableArenaTag { + // The following fields are meant to be inwardly mutable, but outwardly immutable. + readonly battlerIndex: BattlerIndex; + readonly healHp: number; + readonly sourceName: string; + // End inwardly mutable fields - constructor(turnCount: number, sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.WISH, turnCount, MoveId.WISH, sourceId, side); + public readonly tagType = ArenaTagType.WISH; + + constructor(turnCount: number, sourceId: number | undefined, side: ArenaTagSide) { + super(turnCount, MoveId.WISH, sourceId, side); } onAdd(_arena: Arena): void { @@ -550,45 +628,38 @@ class WishTag extends ArenaTag { return; } - super.onAdd(_arena); - this.healHp = toDmgValue(source.getMaxHp() / 2); - - globalScene.phaseManager.queueMessage( - i18next.t("arenaTag:wishTagOnAdd", { - pokemonNameWithAffix: getPokemonNameWithAffix(source), - }), - ); + (this as Mutable).sourceName = getPokemonNameWithAffix(source); + (this as Mutable).healHp = toDmgValue(source.getMaxHp() / 2); + (this as Mutable).battlerIndex = source.getBattlerIndex(); } onRemove(_arena: Arena): void { const target = globalScene.getField()[this.battlerIndex]; if (target?.isActive(true)) { - globalScene.phaseManager.queueMessage(this.triggerMessage); + globalScene.phaseManager.queueMessage( + // TODO: Rename key as it triggers on activation + i18next.t("arenaTag:wishTagOnAdd", { + pokemonNameWithAffix: this.sourceName, + }), + ); globalScene.phaseManager.unshiftNew("PokemonHealPhase", target.getBattlerIndex(), this.healHp, null, true, false); } } + + override loadTag(source: NonFunctionProperties): void { + super.loadTag(source); + (this as Mutable).battlerIndex = source.battlerIndex; + (this as Mutable).healHp = source.healHp; + (this as Mutable).sourceName = source.sourceName; + } } /** * Abstract class to implement weakened moves of a specific type. */ -export class WeakenMoveTypeTag extends ArenaTag { - private weakenedType: PokemonType; - - /** - * Creates a new instance of the WeakenMoveTypeTag class. - * - * @param tagType - The type of the arena tag. - * @param turnCount - The number of turns the tag is active. - * @param type - The type being weakened from this tag. - * @param sourceMove - The move that created the tag. - * @param sourceId - The ID of the source of the tag. - */ - constructor(tagType: ArenaTagType, turnCount: number, type: PokemonType, sourceMove: MoveId, sourceId: number) { - super(tagType, turnCount, sourceMove, sourceId); - - this.weakenedType = type; - } +export abstract class WeakenMoveTypeTag extends SerializableArenaTag { + abstract readonly tagType: ArenaTagType.MUD_SPORT | ArenaTagType.WATER_SPORT; + abstract get weakenedType(): PokemonType; /** * Reduces an attack's power by 0.33x if it matches this tag's weakened type. @@ -612,8 +683,12 @@ export class WeakenMoveTypeTag extends ArenaTag { * Weakens Electric type moves for a set amount of turns, usually 5. */ class MudSportTag extends WeakenMoveTypeTag { - constructor(turnCount: number, sourceId: number) { - super(ArenaTagType.MUD_SPORT, turnCount, PokemonType.ELECTRIC, MoveId.MUD_SPORT, sourceId); + public readonly tagType = ArenaTagType.MUD_SPORT; + override get weakenedType(): PokemonType.ELECTRIC { + return PokemonType.ELECTRIC; + } + constructor(turnCount: number, sourceId?: number) { + super(turnCount, MoveId.MUD_SPORT, sourceId); } onAdd(_arena: Arena): void { @@ -630,8 +705,12 @@ class MudSportTag extends WeakenMoveTypeTag { * Weakens Fire type moves for a set amount of turns, usually 5. */ class WaterSportTag extends WeakenMoveTypeTag { - constructor(turnCount: number, sourceId: number) { - super(ArenaTagType.WATER_SPORT, turnCount, PokemonType.FIRE, MoveId.WATER_SPORT, sourceId); + public readonly tagType = ArenaTagType.WATER_SPORT; + override get weakenedType(): PokemonType.FIRE { + return PokemonType.FIRE; + } + constructor(turnCount: number, sourceId?: number) { + super(turnCount, MoveId.WATER_SPORT, sourceId); } onAdd(_arena: Arena): void { @@ -649,8 +728,9 @@ class WaterSportTag extends WeakenMoveTypeTag { * Converts Normal-type moves to Electric type for the rest of the turn. */ export class IonDelugeTag extends ArenaTag { + public readonly tagType = ArenaTagType.ION_DELUGE; constructor(sourceMove?: MoveId) { - super(ArenaTagType.ION_DELUGE, 1, sourceMove); + super(1, sourceMove); } /** Queues an on-add message */ @@ -679,7 +759,8 @@ export class IonDelugeTag extends ArenaTag { /** * Abstract class to implement arena traps. */ -export class ArenaTrapTag extends ArenaTag { +export abstract class ArenaTrapTag extends SerializableArenaTag { + abstract readonly tagType: ArenaTrapTagType; public layers: number; public maxLayers: number; @@ -692,8 +773,8 @@ export class ArenaTrapTag extends ArenaTag { * @param side - The side (player or enemy) the tag affects. * @param maxLayers - The maximum amount of layers this tag can have. */ - constructor(tagType: ArenaTagType, sourceMove: MoveId, sourceId: number, side: ArenaTagSide, maxLayers: number) { - super(tagType, 0, sourceMove, sourceId, side); + constructor(sourceMove: MoveId, sourceId: number | undefined, side: ArenaTagSide, maxLayers: number) { + super(0, sourceMove, sourceId, side); this.layers = 1; this.maxLayers = maxLayers; @@ -732,7 +813,7 @@ export class ArenaTrapTag extends ArenaTag { : Phaser.Math.Linear(0, 1 / Math.pow(2, this.layers), Math.min(pokemon.getHpRatio(), 0.5) * 2); } - loadTag(source: any): void { + loadTag(source: NonFunctionProperties): void { super.loadTag(source); this.layers = source.layers; this.maxLayers = source.maxLayers; @@ -745,8 +826,9 @@ export class ArenaTrapTag extends ArenaTag { * in damage for 1, 2, or 3 layers of Spikes respectively if they are summoned into this trap. */ class SpikesTag extends ArenaTrapTag { - constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.SPIKES, MoveId.SPIKES, sourceId, side, 3); + public readonly tagType = ArenaTagType.SPIKES; + constructor(sourceId: number | undefined, side: ArenaTagSide) { + super(MoveId.SPIKES, sourceId, side, 3); } onAdd(arena: Arena, quiet = false): void { @@ -803,11 +885,12 @@ class SpikesTag extends ArenaTrapTag { * Pokémon summoned into this trap remove it entirely. */ class ToxicSpikesTag extends ArenaTrapTag { - private neutralized: boolean; + #neutralized: boolean; + public readonly tagType = ArenaTagType.TOXIC_SPIKES; - constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.TOXIC_SPIKES, MoveId.TOXIC_SPIKES, sourceId, side, 2); - this.neutralized = false; + constructor(sourceId: number | undefined, side: ArenaTagSide) { + super(MoveId.TOXIC_SPIKES, sourceId, side, 2); + this.#neutralized = false; } onAdd(arena: Arena, quiet = false): void { @@ -833,7 +916,7 @@ class ToxicSpikesTag extends ArenaTrapTag { } onRemove(arena: Arena): void { - if (!this.neutralized) { + if (!this.#neutralized) { super.onRemove(arena); } } @@ -844,7 +927,7 @@ class ToxicSpikesTag extends ArenaTrapTag { return true; } if (pokemon.isOfType(PokemonType.POISON)) { - this.neutralized = true; + this.#neutralized = true; if (globalScene.arena.removeTag(this.tagType)) { globalScene.phaseManager.queueMessage( i18next.t("arenaTag:toxicSpikesActivateTrapPoison", { @@ -878,55 +961,15 @@ class ToxicSpikesTag extends ArenaTrapTag { } } -/** - * Arena Tag class for delayed attacks, such as {@linkcode MoveId.FUTURE_SIGHT} or {@linkcode MoveId.DOOM_DESIRE}. - * Delays the attack's effect by a set amount of turns, usually 3 (including the turn the move is used), - * and deals damage after the turn count is reached. - */ -export class DelayedAttackTag extends ArenaTag { - public targetIndex: BattlerIndex; - - constructor( - tagType: ArenaTagType, - sourceMove: MoveId | undefined, - sourceId: number, - targetIndex: BattlerIndex, - side: ArenaTagSide = ArenaTagSide.BOTH, - ) { - super(tagType, 3, sourceMove, sourceId, side); - - this.targetIndex = targetIndex; - this.side = side; - } - - lapse(arena: Arena): boolean { - const ret = super.lapse(arena); - - if (!ret) { - // TODO: This should not add to move history (for Spite) - globalScene.phaseManager.unshiftNew( - "MoveEffectPhase", - this.sourceId!, - [this.targetIndex], - allMoves[this.sourceMove!], - MoveUseMode.FOLLOW_UP, - ); // TODO: are those bangs correct? - } - - return ret; - } - - onRemove(_arena: Arena): void {} -} - /** * Arena Tag class for {@link https://bulbapedia.bulbagarden.net/wiki/Stealth_Rock_(move) Stealth Rock}. * Applies up to 1 layer of Stealth Rocks, dealing percentage-based damage to any Pokémon * who is summoned into the trap, based on the Rock type's type effectiveness. */ class StealthRockTag extends ArenaTrapTag { - constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.STEALTH_ROCK, MoveId.STEALTH_ROCK, sourceId, side, 1); + public readonly tagType = ArenaTagType.STEALTH_ROCK; + constructor(sourceId: number | undefined, side: ArenaTagSide) { + super(MoveId.STEALTH_ROCK, sourceId, side, 1); } onAdd(arena: Arena, quiet = false): void { @@ -1014,8 +1057,9 @@ class StealthRockTag extends ArenaTrapTag { * to any Pokémon who is summoned into this trap. */ class StickyWebTag extends ArenaTrapTag { - constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.STICKY_WEB, MoveId.STICKY_WEB, sourceId, side, 1); + public readonly tagType = ArenaTagType.STICKY_WEB; + constructor(sourceId: number | undefined, side: ArenaTagSide) { + super(MoveId.STICKY_WEB, sourceId, side, 1); } onAdd(arena: Arena, quiet = false): void { @@ -1082,14 +1126,57 @@ class StickyWebTag extends ArenaTrapTag { } } +/** + * Arena Tag class for delayed attacks, such as {@linkcode MoveId.FUTURE_SIGHT} or {@linkcode MoveId.DOOM_DESIRE}. + * Delays the attack's effect by a set amount of turns, usually 3 (including the turn the move is used), + * and deals damage after the turn count is reached. + */ +export class DelayedAttackTag extends SerializableArenaTag { + public targetIndex: BattlerIndex; + public readonly tagType: ArenaDelayedAttackTagType; + + constructor( + tagType: ArenaTagType.DOOM_DESIRE | ArenaTagType.FUTURE_SIGHT, + sourceMove: MoveId | undefined, + sourceId: number | undefined, + targetIndex: BattlerIndex, + side: ArenaTagSide = ArenaTagSide.BOTH, + ) { + super(3, sourceMove, sourceId, side); + this.tagType = tagType; + this.targetIndex = targetIndex; + this.side = side; + } + + lapse(arena: Arena): boolean { + const ret = super.lapse(arena); + + if (!ret) { + // TODO: This should not add to move history (for Spite) + globalScene.phaseManager.unshiftNew( + "MoveEffectPhase", + this.sourceId!, + [this.targetIndex], + allMoves[this.sourceMove!], + MoveUseMode.FOLLOW_UP, + ); // TODO: are those bangs correct? + } + + return ret; + } + + onRemove(_arena: Arena): void {} +} + /** * Arena Tag class for {@link https://bulbapedia.bulbagarden.net/wiki/Trick_Room_(move) Trick Room}. * Reverses the Speed stats for all Pokémon on the field as long as this arena tag is up, * also reversing the turn order for all Pokémon on the field as well. */ -export class TrickRoomTag extends ArenaTag { - constructor(turnCount: number, sourceId: number) { - super(ArenaTagType.TRICK_ROOM, turnCount, MoveId.TRICK_ROOM, sourceId); +export class TrickRoomTag extends SerializableArenaTag { + public readonly tagType = ArenaTagType.TRICK_ROOM; + constructor(turnCount: number, sourceId?: number) { + super(turnCount, MoveId.TRICK_ROOM, sourceId); } /** @@ -1131,9 +1218,10 @@ export class TrickRoomTag extends ArenaTag { * Grounds all Pokémon on the field, including Flying-types and those with * {@linkcode AbilityId.LEVITATE} for the duration of the arena tag, usually 5 turns. */ -export class GravityTag extends ArenaTag { - constructor(turnCount: number) { - super(ArenaTagType.GRAVITY, turnCount, MoveId.GRAVITY); +export class GravityTag extends SerializableArenaTag { + public readonly tagType = ArenaTagType.GRAVITY; + constructor(turnCount: number, sourceId?: number) { + super(turnCount, MoveId.GRAVITY, sourceId); } onAdd(_arena: Arena): void { @@ -1159,9 +1247,10 @@ export class GravityTag extends ArenaTag { * Doubles the Speed of the Pokémon who created this arena tag, as well as all allied Pokémon. * Applies this arena tag for 4 turns (including the turn the move was used). */ -class TailwindTag extends ArenaTag { - constructor(turnCount: number, sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.TAILWIND, turnCount, MoveId.TAILWIND, sourceId, side); +class TailwindTag extends SerializableArenaTag { + public readonly tagType = ArenaTagType.TAILWIND; + constructor(turnCount: number, sourceId: number | undefined, side: ArenaTagSide) { + super(turnCount, MoveId.TAILWIND, sourceId, side); } onAdd(_arena: Arena, quiet = false): void { @@ -1227,9 +1316,10 @@ class TailwindTag extends ArenaTag { * Arena Tag class for {@link https://bulbapedia.bulbagarden.net/wiki/Happy_Hour_(move) Happy Hour}. * Doubles the prize money from trainers and money moves like {@linkcode MoveId.PAY_DAY} and {@linkcode MoveId.MAKE_IT_RAIN}. */ -class HappyHourTag extends ArenaTag { - constructor(turnCount: number, sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.HAPPY_HOUR, turnCount, MoveId.HAPPY_HOUR, sourceId, side); +class HappyHourTag extends SerializableArenaTag { + public readonly tagType = ArenaTagType.HAPPY_HOUR; + constructor(turnCount: number, sourceId: number | undefined, side: ArenaTagSide) { + super(turnCount, MoveId.HAPPY_HOUR, sourceId, side); } onAdd(_arena: Arena): void { @@ -1242,8 +1332,9 @@ class HappyHourTag extends ArenaTag { } class SafeguardTag extends ArenaTag { - constructor(turnCount: number, sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.SAFEGUARD, turnCount, MoveId.SAFEGUARD, sourceId, side); + public readonly tagType = ArenaTagType.SAFEGUARD; + constructor(turnCount: number, sourceId: number | undefined, side: ArenaTagSide) { + super(turnCount, MoveId.SAFEGUARD, sourceId, side); } onAdd(_arena: Arena): void { @@ -1264,18 +1355,21 @@ class SafeguardTag extends ArenaTag { } class NoneTag extends ArenaTag { + public readonly tagType = ArenaTagType.NONE; constructor() { - super(ArenaTagType.NONE, 0); + super(0); } } + /** * This arena tag facilitates the application of the move Imprison * Imprison remains in effect as long as the source Pokemon is active and present on the field. * Imprison will apply to any opposing Pokemon that switch onto the field as well. */ class ImprisonTag extends ArenaTrapTag { - constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.IMPRISON, MoveId.IMPRISON, sourceId, side, 1); + public readonly tagType = ArenaTagType.IMPRISON; + constructor(sourceId: number | undefined, side: ArenaTagSide) { + super(MoveId.IMPRISON, sourceId, side, 1); } /** @@ -1330,7 +1424,9 @@ class ImprisonTag extends ArenaTrapTag { */ override onRemove(): void { const party = this.getAffectedPokemon(); - party.forEach(p => p.removeTag(BattlerTagType.IMPRISON)); + party.forEach(p => { + p.removeTag(BattlerTagType.IMPRISON); + }); } } @@ -1341,9 +1437,10 @@ class ImprisonTag extends ArenaTrapTag { * Damages all non-Fire-type Pokemon on the given side of the field at the end * of each turn for 4 turns. */ -class FireGrassPledgeTag extends ArenaTag { - constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.FIRE_GRASS_PLEDGE, 4, MoveId.FIRE_PLEDGE, sourceId, side); +class FireGrassPledgeTag extends SerializableArenaTag { + public readonly tagType = ArenaTagType.FIRE_GRASS_PLEDGE; + constructor(sourceId: number | undefined, side: ArenaTagSide) { + super(4, MoveId.FIRE_PLEDGE, sourceId, side); } override onAdd(_arena: Arena): void { @@ -1389,9 +1486,10 @@ class FireGrassPledgeTag extends ArenaTag { * Doubles the secondary effect chance of moves from Pokemon on the * given side of the field for 4 turns. */ -class WaterFirePledgeTag extends ArenaTag { - constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.WATER_FIRE_PLEDGE, 4, MoveId.WATER_PLEDGE, sourceId, side); +class WaterFirePledgeTag extends SerializableArenaTag { + public readonly tagType = ArenaTagType.WATER_FIRE_PLEDGE; + constructor(sourceId: number | undefined, side: ArenaTagSide) { + super(4, MoveId.WATER_PLEDGE, sourceId, side); } override onAdd(_arena: Arena): void { @@ -1423,9 +1521,10 @@ class WaterFirePledgeTag extends ArenaTag { * and {@link https://bulbapedia.bulbagarden.net/wiki/Water_Pledge_(move) | Water Pledge}. * Quarters the Speed of Pokemon on the given side of the field for 4 turns. */ -class GrassWaterPledgeTag extends ArenaTag { - constructor(sourceId: number, side: ArenaTagSide) { - super(ArenaTagType.GRASS_WATER_PLEDGE, 4, MoveId.GRASS_PLEDGE, sourceId, side); +class GrassWaterPledgeTag extends SerializableArenaTag { + public readonly tagType = ArenaTagType.GRASS_WATER_PLEDGE; + constructor(sourceId: number | undefined, side: ArenaTagSide) { + super(4, MoveId.GRASS_PLEDGE, sourceId, side); } override onAdd(_arena: Arena): void { @@ -1445,9 +1544,10 @@ class GrassWaterPledgeTag extends ArenaTag { * If a Pokémon that's on the field when Fairy Lock is used goes on to faint later in the same turn, * the Pokémon that replaces it will still be unable to switch out in the following turn. */ -export class FairyLockTag extends ArenaTag { - constructor(turnCount: number, sourceId: number) { - super(ArenaTagType.FAIRY_LOCK, turnCount, MoveId.FAIRY_LOCK, sourceId); +export class FairyLockTag extends SerializableArenaTag { + public readonly tagType = ArenaTagType.FAIRY_LOCK; + constructor(turnCount: number, sourceId?: number) { + super(turnCount, MoveId.FAIRY_LOCK, sourceId); } onAdd(_arena: Arena): void { @@ -1461,15 +1561,29 @@ export class FairyLockTag extends ArenaTag { * Keeps track of the number of pokemon on the field with Neutralizing Gas - If it drops to zero, the effect is ended and abilities are reactivated * * Additionally ends onLose abilities when it is activated + * @sealed */ -export class SuppressAbilitiesTag extends ArenaTag { - private sourceCount: number; - private beingRemoved: boolean; +export class SuppressAbilitiesTag extends SerializableArenaTag { + // Source count is allowed to be inwardly mutable, but outwardly immutable + public readonly sourceCount: number; + public readonly tagType = ArenaTagType.NEUTRALIZING_GAS; + // Private field prevents field from appearing during serialization + /** Whether the tag is in the process of being removed */ + #beingRemoved: boolean; + /** Whether the tag is in the process of being removed */ + public get beingRemoved(): boolean { + return this.#beingRemoved; + } - constructor(sourceId: number) { - super(ArenaTagType.NEUTRALIZING_GAS, 0, undefined, sourceId); + constructor(sourceId?: number) { + super(0, undefined, sourceId); this.sourceCount = 1; - this.beingRemoved = false; + this.#beingRemoved = false; + } + + public override loadTag(source: NonFunctionProperties): void { + super.loadTag(source); + (this as Mutable).sourceCount = source.sourceCount; } public override onAdd(_arena: Arena): void { @@ -1481,19 +1595,21 @@ export class SuppressAbilitiesTag extends ArenaTag { if (fieldPokemon && fieldPokemon.id !== pokemon.id) { // TODO: investigate whether we can just remove the foreach and call `applyAbAttrs` directly, providing // the appropriate attributes (preLEaveField and IllusionBreak) - [true, false].forEach(passive => applyOnLoseAbAttrs({ pokemon: fieldPokemon, passive })); + [true, false].forEach(passive => { + applyOnLoseAbAttrs({ pokemon: fieldPokemon, passive }); + }); } } } } public override onOverlap(_arena: Arena, source: Pokemon | null): void { - this.sourceCount++; + (this as Mutable).sourceCount++; this.playActivationMessage(source); } public onSourceLeave(arena: Arena): void { - this.sourceCount--; + (this as Mutable).sourceCount--; if (this.sourceCount <= 0) { arena.removeTag(ArenaTagType.NEUTRALIZING_GAS); } else if (this.sourceCount === 1) { @@ -1511,7 +1627,7 @@ export class SuppressAbilitiesTag extends ArenaTag { } public override onRemove(_arena: Arena, quiet = false) { - this.beingRemoved = true; + this.#beingRemoved = true; if (!quiet) { globalScene.phaseManager.queueMessage(i18next.t("arenaTag:neutralizingGasOnRemove")); } @@ -1519,7 +1635,9 @@ export class SuppressAbilitiesTag extends ArenaTag { for (const pokemon of globalScene.getField(true)) { // There is only one pokemon with this attr on the field on removal, so its abilities are already active if (pokemon && !pokemon.hasAbilityWithAttr("PreLeaveFieldRemoveSuppressAbilitiesSourceAbAttr", false)) { - [true, false].forEach(passive => applyOnGainAbAttrs({ pokemon, passive })); + [true, false].forEach(passive => { + applyOnGainAbAttrs({ pokemon, passive }); + }); } } } @@ -1528,10 +1646,6 @@ export class SuppressAbilitiesTag extends ArenaTag { return this.sourceCount > 1; } - public isBeingRemoved() { - return this.beingRemoved; - } - private playActivationMessage(pokemon: Pokemon | null) { if (pokemon) { globalScene.phaseManager.queueMessage( @@ -1548,7 +1662,7 @@ export function getArenaTag( tagType: ArenaTagType, turnCount: number, sourceMove: MoveId | undefined, - sourceId: number, + sourceId: number | undefined, targetIndex?: BattlerIndex, side: ArenaTagSide = ArenaTagSide.BOTH, ): ArenaTag | null { @@ -1564,7 +1678,7 @@ export function getArenaTag( case ArenaTagType.CRAFTY_SHIELD: return new CraftyShieldTag(sourceId, side); case ArenaTagType.NO_CRIT: - return new NoCritTag(turnCount, sourceMove!, sourceId, side); // TODO: is this bang correct? + return new NoCritTag(turnCount, sourceMove, sourceId, side); case ArenaTagType.MUD_SPORT: return new MudSportTag(turnCount, sourceId); case ArenaTagType.WATER_SPORT: @@ -1577,7 +1691,10 @@ export function getArenaTag( return new ToxicSpikesTag(sourceId, side); case ArenaTagType.FUTURE_SIGHT: case ArenaTagType.DOOM_DESIRE: - return new DelayedAttackTag(tagType, sourceMove, sourceId, targetIndex!, side); // TODO:questionable bang + if (isNullOrUndefined(targetIndex)) { + return null; // If missing target index, no tag is created + } + return new DelayedAttackTag(tagType, sourceMove, sourceId, targetIndex, side); case ArenaTagType.WISH: return new WishTag(turnCount, sourceId, side); case ArenaTagType.STEALTH_ROCK: @@ -1587,7 +1704,7 @@ export function getArenaTag( case ArenaTagType.TRICK_ROOM: return new TrickRoomTag(turnCount, sourceId); case ArenaTagType.GRAVITY: - return new GravityTag(turnCount); + return new GravityTag(turnCount, sourceId); case ArenaTagType.REFLECT: return new ReflectTag(turnCount, sourceId, side); case ArenaTagType.LIGHT_SCREEN: @@ -1619,10 +1736,10 @@ export function getArenaTag( /** * When given a battler tag or json representing one, creates an actual ArenaTag object with the same data. - * @param {ArenaTag | any} source An arena tag - * @return {ArenaTag} The valid arena tag + * @param source - An arena tag + * @returns The valid arena tag */ -export function loadArenaTag(source: ArenaTag | any): ArenaTag { +export function loadArenaTag(source: (ArenaTag | ArenaTagTypeData) & { targetIndex?: BattlerIndex }): ArenaTag { const tag = getArenaTag( source.tagType, @@ -1635,3 +1752,37 @@ export function loadArenaTag(source: ArenaTag | any): ArenaTag { tag.loadTag(source); return tag; } + +export type ArenaTagTypeMap = { + [ArenaTagType.MUD_SPORT]: MudSportTag; + [ArenaTagType.WATER_SPORT]: WaterSportTag; + [ArenaTagType.ION_DELUGE]: IonDelugeTag; + [ArenaTagType.SPIKES]: SpikesTag; + [ArenaTagType.MIST]: MistTag; + [ArenaTagType.QUICK_GUARD]: QuickGuardTag; + [ArenaTagType.WIDE_GUARD]: WideGuardTag; + [ArenaTagType.MAT_BLOCK]: MatBlockTag; + [ArenaTagType.CRAFTY_SHIELD]: CraftyShieldTag; + [ArenaTagType.NO_CRIT]: NoCritTag; + [ArenaTagType.TOXIC_SPIKES]: ToxicSpikesTag; + [ArenaTagType.FUTURE_SIGHT]: DelayedAttackTag; + [ArenaTagType.DOOM_DESIRE]: DelayedAttackTag; + [ArenaTagType.WISH]: WishTag; + [ArenaTagType.STEALTH_ROCK]: StealthRockTag; + [ArenaTagType.STICKY_WEB]: StickyWebTag; + [ArenaTagType.TRICK_ROOM]: TrickRoomTag; + [ArenaTagType.GRAVITY]: GravityTag; + [ArenaTagType.REFLECT]: ReflectTag; + [ArenaTagType.LIGHT_SCREEN]: LightScreenTag; + [ArenaTagType.AURORA_VEIL]: AuroraVeilTag; + [ArenaTagType.TAILWIND]: TailwindTag; + [ArenaTagType.HAPPY_HOUR]: HappyHourTag; + [ArenaTagType.SAFEGUARD]: SafeguardTag; + [ArenaTagType.IMPRISON]: ImprisonTag; + [ArenaTagType.FIRE_GRASS_PLEDGE]: FireGrassPledgeTag; + [ArenaTagType.WATER_FIRE_PLEDGE]: WaterFirePledgeTag; + [ArenaTagType.GRASS_WATER_PLEDGE]: GrassWaterPledgeTag; + [ArenaTagType.FAIRY_LOCK]: FairyLockTag; + [ArenaTagType.NEUTRALIZING_GAS]: SuppressAbilitiesTag; + [ArenaTagType.NONE]: NoneTag; +}; diff --git a/src/data/battler-tags.ts b/src/data/battler-tags.ts index 72fa6eaa64b..060b17e889b 100644 --- a/src/data/battler-tags.ts +++ b/src/data/battler-tags.ts @@ -74,10 +74,13 @@ export class BattlerTag { /** * Tick down this {@linkcode BattlerTag}'s duration. - * @returns `true` if the tag should be kept (`turnCount > 0`) + * @param _pokemon - The {@linkcode Pokemon} whom this tag belongs to. + * Unused by default but can be used by subclasses. + * @param _lapseType - The {@linkcode BattlerTagLapseType} being lapsed. + * Unused by default but can be used by subclasses. + * @returns `true` if the tag should be kept (`turnCount` > 0`) */ lapse(_pokemon: Pokemon, _lapseType: BattlerTagLapseType): boolean { - // TODO: Maybe flip this (return `true` if tag needs removal) return --this.turnCount > 0; } @@ -123,7 +126,7 @@ export interface TerrainBattlerTag { /** * Base class for tags that restrict the usage of moves. This effect is generally referred to as "disabling" a move - * in-game. This is not to be confused with {@linkcode MoveId.DISABLE}. + * in-game (not to be confused with {@linkcode MoveId.DISABLE}). * * Descendants can override {@linkcode isMoveRestricted} to restrict moves that * match a condition. A restricted move gets cancelled before it is used. diff --git a/src/data/moves/move.ts b/src/data/moves/move.ts index 0b0a7e4a853..d8863016002 100644 --- a/src/data/moves/move.ts +++ b/src/data/moves/move.ts @@ -166,9 +166,9 @@ export abstract class Move implements Localizable { } /** - * Get all move attributes that match `attrType` - * @param attrType any attribute that extends {@linkcode MoveAttr} - * @returns Array of attributes that match `attrType`, Empty Array if none match. + * Get all move attributes that match `attrType`. + * @param attrType - The name of a {@linkcode MoveAttr} to search for + * @returns An array containing all attributes matching `attrType`, or an empty array if none match. */ getAttrs(attrType: T): (MoveAttrMap[T])[] { const targetAttr = MoveAttrs[attrType]; @@ -179,9 +179,9 @@ export abstract class Move implements Localizable { } /** - * Check if a move has an attribute that matches `attrType` - * @param attrType any attribute that extends {@linkcode MoveAttr} - * @returns true if the move has attribute `attrType` + * Check if a move has an attribute that matches `attrType`. + * @param attrType - The name of a {@linkcode MoveAttr} to search for + * @returns Whether this move has at least 1 attribute that matches `attrType` */ hasAttr(attrType: MoveAttrString): boolean { const targetAttr = MoveAttrs[attrType]; @@ -193,23 +193,25 @@ export abstract class Move implements Localizable { } /** - * Takes as input a boolean function and returns the first MoveAttr in attrs that matches true - * @param attrPredicate - * @returns the first {@linkcode MoveAttr} element in attrs that makes the input function return true + * Find the first attribute that matches a given predicate function. + * @param attrPredicate - The predicate function to search `MoveAttr`s by + * @returns The first {@linkcode MoveAttr} for which `attrPredicate` returns `true` */ findAttr(attrPredicate: (attr: MoveAttr) => boolean): MoveAttr { - return this.attrs.find(attrPredicate)!; // TODO: is the bang correct? + // TODO: Remove bang and make return type `MoveAttr | undefined`, + // as well as add overload for functions of type `x is T` + return this.attrs.find(attrPredicate)!; } /** - * Adds a new MoveAttr to the move (appends to the attr array) - * if the MoveAttr also comes with a condition, also adds that to the conditions array: {@linkcode MoveCondition} - * @param AttrType {@linkcode MoveAttr} the constructor of a MoveAttr class - * @param args the args needed to instantiate a the given class - * @returns the called object {@linkcode Move} + * Adds a new MoveAttr to this move (appends to the attr array). + * If the MoveAttr also comes with a condition, it is added to its {@linkcode MoveCondition} array. + * @param attrType - The {@linkcode MoveAttr} to add + * @param args - The arguments needed to instantiate the given class + * @returns `this` */ - attr>(AttrType: T, ...args: ConstructorParameters): this { - const attr = new AttrType(...args); + attr>(attrType: T, ...args: ConstructorParameters): this { + const attr = new attrType(...args); this.attrs.push(attr); let attrCondition = attr.getCondition(); if (attrCondition) { @@ -223,11 +225,13 @@ export abstract class Move implements Localizable { } /** - * Adds a new MoveAttr to the move (appends to the attr array) - * if the MoveAttr also comes with a condition, also adds that to the conditions array: {@linkcode MoveCondition} - * Almost identical to {@link attr}, except you are passing in a MoveAttr object, instead of a constructor and it's arguments - * @param attrAdd {@linkcode MoveAttr} the attribute to add - * @returns the called object {@linkcode Move} + * Adds a new MoveAttr to this move (appends to the attr array). + * If the MoveAttr also comes with a condition, it is added to its {@linkcode MoveCondition} array. + * + * Similar to {@linkcode attr}, except this takes an already instantiated {@linkcode MoveAttr} object + * as opposed to a constructor and its arguments. + * @param attrAdd - The {@linkcode MoveAttr} to add + * @returns `this` */ addAttr(attrAdd: MoveAttr): this { this.attrs.push(attrAdd); @@ -244,8 +248,8 @@ export abstract class Move implements Localizable { /** * Sets the move target of this move - * @param moveTarget {@linkcode MoveTarget} the move target to set - * @returns the called object {@linkcode Move} + * @param moveTarget - The {@linkcode MoveTarget} to set + * @returns `this` */ target(moveTarget: MoveTarget): this { this.moveTarget = moveTarget; @@ -253,13 +257,13 @@ export abstract class Move implements Localizable { } /** - * Getter function that returns if this Move has a MoveFlag - * @param flag {@linkcode MoveFlags} to check - * @returns boolean + * Getter function that returns if this Move has a given MoveFlag. + * @param flag - The {@linkcode MoveFlags} to check + * @returns Whether this Move has the specified flag. */ hasFlag(flag: MoveFlags): boolean { - // internally it is taking the bitwise AND (MoveFlags are represented as bit-shifts) and returning False if result is 0 and true otherwise - return !!(this.flags & flag); + // Flags are internally represented as bitmasks, so we check by taking the bitwise AND. + return (this.flags & flag) !== MoveFlags.NONE; } /** @@ -304,12 +308,13 @@ export abstract class Move implements Localizable { } /** - * Checks if the move is immune to certain types. + * Checks if the target is immune to this Move's type. * Currently looks at cases of Grass types with powder moves and Dark types with moves affected by Prankster. - * @param {Pokemon} user the source of this move - * @param {Pokemon} target the target of this move - * @param {PokemonType} type the type of the move's target - * @returns boolean + * @param user - The {@linkcode Pokemon} using this move + * @param target - The {@linkcode Pokemon} targeted by this move + * @param type - The {@linkcode PokemonType} of the target + * @returns Whether the move is blocked by the target's type. + * Self-targeted moves will return `false` regardless of circumstances. */ isTypeImmune(user: Pokemon, target: Pokemon, type: PokemonType): boolean { if (this.moveTarget === MoveTarget.USER) { @@ -323,7 +328,7 @@ export abstract class Move implements Localizable { } break; case PokemonType.DARK: - if (user.hasAbility(AbilityId.PRANKSTER) && this.category === MoveCategory.STATUS && (user.isPlayer() !== target.isPlayer())) { + if (user.hasAbility(AbilityId.PRANKSTER) && this.category === MoveCategory.STATUS && user.isOpponent(target)) { return true; } break; @@ -333,9 +338,9 @@ export abstract class Move implements Localizable { /** * Checks if the move would hit its target's Substitute instead of the target itself. - * @param user The {@linkcode Pokemon} using this move - * @param target The {@linkcode Pokemon} targeted by this move - * @returns `true` if the move can bypass the target's Substitute; `false` otherwise. + * @param user - The {@linkcode Pokemon} using this move + * @param target - The {@linkcode Pokemon} targeted by this move + * @returns Whether this Move will hit the target's Substitute (assuming one exists). */ hitsSubstitute(user: Pokemon, target?: Pokemon): boolean { if ([ MoveTarget.USER, MoveTarget.USER_SIDE, MoveTarget.ENEMY_SIDE, MoveTarget.BOTH_SIDES ].includes(this.moveTarget) @@ -353,13 +358,14 @@ export abstract class Move implements Localizable { } /** - * Adds a move condition to the move - * @param condition {@linkcode MoveCondition} or {@linkcode MoveConditionFunc}, appends to conditions array a new MoveCondition object - * @returns the called object {@linkcode Move} + * Adds a condition to this move (in addition to any provided by its prior {@linkcode MoveAttr}s). + * The move will fail upon use if at least 1 of its conditions is not met. + * @param condition - The {@linkcode MoveCondition} or {@linkcode MoveConditionFunc} to add to the conditions array. + * @returns `this` */ condition(condition: MoveCondition | MoveConditionFunc): this { if (typeof condition === "function") { - condition = new MoveCondition(condition as MoveConditionFunc); + condition = new MoveCondition(condition); } this.conditions.push(condition); @@ -367,16 +373,22 @@ export abstract class Move implements Localizable { } /** - * Internal dev flag for documenting edge cases. When using this, please document the known edge case. - * @returns the called object {@linkcode Move} + * Mark a move as having one or more edge cases. + * The move may lack certain niche interactions with other moves/abilities, + * but still functions as intended in most cases. + * + * When using this, **make sure to document the edge case** (or else this becomes pointless). + * @returns `this` */ edgeCase(): this { return this; } /** - * Marks the move as "partial": appends texts to the move name - * @returns the called object {@linkcode Move} + * Mark this move as partially implemented. + * Partial moves are expected to have some core functionality implemented, but may lack + * certain notable features or interactions with other moves or abilities. + * @returns `this` */ partial(): this { this.nameAppend += " (P)"; @@ -384,8 +396,10 @@ export abstract class Move implements Localizable { } /** - * Marks the move as "unimplemented": appends texts to the move name - * @returns the called object {@linkcode Move} + * Mark this move as unimplemented. + * Unimplemented moves are ones which have _none_ of their basic functionality enabled, + * and cannot be used. + * @returns `this` */ unimplemented(): this { this.nameAppend += " (N)"; @@ -960,10 +974,8 @@ export class AttackMove extends Move { constructor(id: MoveId, type: PokemonType, category: MoveCategory, power: number, accuracy: number, pp: number, chance: number, priority: number, generation: number) { super(id, type, category, MoveTarget.NEAR_OTHER, power, accuracy, pp, chance, priority, generation); - /** - * {@link https://bulbapedia.bulbagarden.net/wiki/Freeze_(status_condition)} - * > All damaging Fire-type moves can now thaw a frozen target, regardless of whether or not they have a chance to burn; - */ + // > All damaging Fire-type moves can... thaw a frozen target, regardless of whether or not they have a chance to burn. + // - https://bulbapedia.bulbagarden.net/wiki/Freeze_(status_condition) if (this.type === PokemonType.FIRE) { this.addAttr(new HealStatusEffectAttr(false, StatusEffect.FREEZE)); } @@ -1219,7 +1231,8 @@ interface MoveEffectAttrOptions { effectChanceOverride?: number; } -/** Base class defining all Move Effect Attributes +/** + * Base class defining all Move Effect Attributes * @extends MoveAttr * @see {@linkcode apply} */ @@ -1237,8 +1250,7 @@ export class MoveEffectAttr extends MoveAttr { /** * Defines when this effect should trigger in the move's effect order. - * @default MoveEffectTrigger.POST_APPLY - * @see {@linkcode MoveEffectTrigger} + * @defaultValue {@linkcode MoveEffectTrigger.POST_APPLY} */ public get trigger () { return this.options?.trigger ?? MoveEffectTrigger.POST_APPLY; @@ -1247,7 +1259,7 @@ export class MoveEffectAttr extends MoveAttr { /** * `true` if this effect should only trigger on the first hit of * multi-hit moves. - * @default false + * @defaultValue `false` */ public get firstHitOnly () { return this.options?.firstHitOnly ?? false; @@ -1256,7 +1268,7 @@ export class MoveEffectAttr extends MoveAttr { /** * `true` if this effect should only trigger on the last hit of * multi-hit moves. - * @default false + * @defaultValue `false` */ public get lastHitOnly () { return this.options?.lastHitOnly ?? false; @@ -1265,7 +1277,7 @@ export class MoveEffectAttr extends MoveAttr { /** * `true` if this effect should apply only upon hitting a target * for the first time when targeting multiple {@linkcode Pokemon}. - * @default false + * @defaultValue `false` */ public get firstTargetOnly () { return this.options?.firstTargetOnly ?? false; @@ -2569,9 +2581,12 @@ export class PsychoShiftEffectAttr extends MoveEffectAttr { } /** - * Applies the effect of Psycho Shift to its target - * Psycho Shift takes the user's status effect and passes it onto the target. The user is then healed after the move has been successfully executed. - * @returns `true` if Psycho Shift's effect is able to be applied to the target + * Applies the effect of {@linkcode Moves.PSYCHO_SHIFT} to its target. + * Psycho Shift takes the user's status effect and passes it onto the target. + * The user is then healed after the move has been successfully executed. + * @param user - The {@linkcode Pokemon} using the move + * @param target - The {@linkcode Pokemon} targeted by the move. + * @returns - Whether the effect was successfully applied to the target. */ apply(user: Pokemon, target: Pokemon, _move: Move, _args: any[]): boolean { const statusToApply: StatusEffect | undefined = user.status?.effect ?? (user.hasAbility(AbilityId.COMATOSE) ? StatusEffect.SLEEP : undefined); @@ -2904,6 +2919,12 @@ export class HealStatusEffectAttr extends MoveEffectAttr { } } +/** + * Attribute to add the {@linkcode BattlerTagType.BYPASS_SLEEP | BYPASS_SLEEP Battler Tag} for 1 turn to the user before move use. + * Used by {@linkcode Moves.SNORE} and {@linkcode Moves.SLEEP_TALK}. + */ +// TODO: Should this use a battler tag? +// TODO: Give this `userSleptOrComatoseCondition` by default export class BypassSleepAttr extends MoveAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { if (user.status?.effect === StatusEffect.SLEEP) { @@ -2921,7 +2942,7 @@ export class BypassSleepAttr extends MoveAttr { * @param move */ getUserBenefitScore(user: Pokemon, target: Pokemon, move: Move): number { - return user.status && user.status.effect === StatusEffect.SLEEP ? 200 : -10; + return user.status?.effect === StatusEffect.SLEEP ? 200 : -10; } } @@ -3252,7 +3273,7 @@ export class StatStageChangeAttr extends MoveEffectAttr { /** * `true` to display a message for the stat change. - * @default true + * @defaultValue `true` */ private get showMessage () { return this.options?.showMessage ?? true; @@ -5415,7 +5436,10 @@ export class NoEffectAttr extends MoveAttr { } } -const crashDamageFunc = (user: Pokemon, move: Move) => { +/** + * Function to deal Crash Damage (1/2 max hp) to the user on apply. + */ +const crashDamageFunc: UserMoveConditionFunc = (user: Pokemon, move: Move) => { const cancelled = new BooleanHolder(false); applyAbAttrs("BlockNonDirectDamageAbAttr", {pokemon: user, cancelled}); if (cancelled.value) { @@ -7054,7 +7078,8 @@ export class CopyMoveAttr extends CallMoveAttr { /** * Attribute used for moves that cause the target to repeat their last used move. * - * Used for [Instruct](https://bulbapedia.bulbagarden.net/wiki/Instruct_(move)). + * Used by {@linkcode Moves.INSTRUCT | Instruct}. + * @see [Instruct on Bulbapedia](https://bulbapedia.bulbagarden.net/wiki/Instruct_(move)) */ export class RepeatMoveAttr extends MoveEffectAttr { private movesetMove: PokemonMove; diff --git a/src/data/moves/pokemon-move.ts b/src/data/moves/pokemon-move.ts index ec5ae195bd6..d3f68fe9db4 100644 --- a/src/data/moves/pokemon-move.ts +++ b/src/data/moves/pokemon-move.ts @@ -36,13 +36,13 @@ export class PokemonMove { } /** - * Checks whether the move can be selected or performed by a Pokemon, without consideration for the move's targets. + * Checks whether this move can be selected/performed by a Pokemon, without consideration for the move's targets. * The move is unusable if it is out of PP, restricted by an effect, or unimplemented. * - * @param pokemon - {@linkcode Pokemon} that would be using this move - * @param ignorePp - If `true`, skips the PP check - * @param ignoreRestrictionTags - If `true`, skips the check for move restriction tags (see {@link MoveRestrictionBattlerTag}) - * @returns `true` if the move can be selected and used by the Pokemon, otherwise `false`. + * @param pokemon - The {@linkcode Pokemon} attempting to use this move + * @param ignorePp - Whether to ignore checking if the move is out of PP; default `false` + * @param ignoreRestrictionTags - Whether to skip checks for {@linkcode MoveRestrictionBattlerTag}s; default `false` + * @returns Whether this {@linkcode PokemonMove} can be selected by this Pokemon. */ isUsable(pokemon: Pokemon, ignorePp = false, ignoreRestrictionTags = false): boolean { // TODO: Add Sky Drop's 1 turn stall diff --git a/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts b/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts index e4211baa78a..19f06707257 100644 --- a/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts +++ b/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts @@ -406,12 +406,12 @@ export async function applyModifierTypeToPlayerPokemon( // Check if the Pokemon has max stacks of that item already const modifier = modType.newModifier(pokemon); const existing = globalScene.findModifier( - m => + (m): m is PokemonHeldItemModifier => m instanceof PokemonHeldItemModifier && m.type.id === modType.id && m.pokemonId === pokemon.id && m.matchType(modifier), - ) as PokemonHeldItemModifier; + ) as PokemonHeldItemModifier | undefined; // At max stacks if (existing && existing.getStackCount() >= existing.getMaxStackCount()) { diff --git a/src/data/terrain.ts b/src/data/terrain.ts index f44fd4f35e7..f5382b1c3ec 100644 --- a/src/data/terrain.ts +++ b/src/data/terrain.ts @@ -13,6 +13,11 @@ export enum TerrainType { PSYCHIC, } +export interface SerializedTerrain { + terrainType: TerrainType; + turnsLeft: number; +} + export class Terrain { public terrainType: TerrainType; public turnsLeft: number; diff --git a/src/data/weather.ts b/src/data/weather.ts index 62a03aa0832..59be56826a4 100644 --- a/src/data/weather.ts +++ b/src/data/weather.ts @@ -11,6 +11,11 @@ import type { Move } from "#moves/move"; import { randSeedInt } from "#utils/common"; import i18next from "i18next"; +export interface SerializedWeather { + weatherType: WeatherType; + turnsLeft: number; +} + export class Weather { public weatherType: WeatherType; public turnsLeft: number; diff --git a/src/enums/MoveFlags.ts b/src/enums/MoveFlags.ts index 1155417da6d..06de265df09 100644 --- a/src/enums/MoveFlags.ts +++ b/src/enums/MoveFlags.ts @@ -1,3 +1,7 @@ +/** + * A list of possible flags that various moves may have. + * Represented internally as a bitmask. + */ export enum MoveFlags { NONE = 0, MAKES_CONTACT = 1 << 0, diff --git a/src/enums/arena-tag-type.ts b/src/enums/arena-tag-type.ts index 4180aa00ef5..214826993b3 100644 --- a/src/enums/arena-tag-type.ts +++ b/src/enums/arena-tag-type.ts @@ -1,3 +1,13 @@ +import type { ArenaTagTypeMap } from "#data/arena-tag"; +import type { NonSerializableArenaTagType, SerializableArenaTagType } from "#types/arena-tags"; + +/** + * Enum representing all different types of {@linkcode ArenaTag}s. + * @privateRemarks + * ⚠️ When modifying the fields in this enum, ensure that: + * - The entry is added to / removed from {@linkcode ArenaTagTypeMap} + * - The tag is added to / removed from {@linkcode NonSerializableArenaTagType} or {@linkcode SerializableArenaTagType} +*/ export enum ArenaTagType { NONE = "NONE", MUD_SPORT = "MUD_SPORT", diff --git a/src/enums/battle-style.ts b/src/enums/battle-style.ts index 3f3e7f6d8f6..2fba10f1bf9 100644 --- a/src/enums/battle-style.ts +++ b/src/enums/battle-style.ts @@ -1,9 +1,7 @@ -/** - * Determines the selected battle style. - * - 'Switch' - The option to switch the active pokemon at the start of a battle will be displayed. - * - 'Set' - The option to switch the active pokemon at the start of a battle will not display. -*/ +/** Enum for selected battle style. */ export enum BattleStyle { - SWITCH, - SET + /** Display option to switch active pokemon at battle start. */ + SWITCH, + /** Hide option to switch active pokemon at battle start. */ + SET } diff --git a/src/enums/battler-index.ts b/src/enums/battler-index.ts index 32b1684c86c..253e5bfc3ed 100644 --- a/src/enums/battler-index.ts +++ b/src/enums/battler-index.ts @@ -1,3 +1,7 @@ +/** + * The index of a given Pokemon on-field. + * Used as an index into `globalScene.getField`, as well as for most target-specifying effects. + */ export enum BattlerIndex { ATTACKER = -1, PLAYER, diff --git a/src/enums/exp-gains-speed.ts b/src/enums/exp-gains-speed.ts index 964c4f99c70..f5f36a1c78d 100644 --- a/src/enums/exp-gains-speed.ts +++ b/src/enums/exp-gains-speed.ts @@ -1,15 +1,4 @@ -/** - * Defines the speed of gaining experience. - * - * @remarks - * The `expGainSpeed` can have several modes: - * - `0` - Default: The normal speed. - * - `1` - Fast: Fast speed. - * - `2` - Faster: Faster speed. - * - `3` - Skip: Skip gaining exp animation. - * - * @default 0 - Uses the default normal speed. - */ +/** Defines the speed of gaining experience. */ export enum ExpGainsSpeed { /** The normal speed. */ DEFAULT, diff --git a/src/enums/exp-notification.ts b/src/enums/exp-notification.ts index b7f50814d3a..a64d8591e76 100644 --- a/src/enums/exp-notification.ts +++ b/src/enums/exp-notification.ts @@ -1,11 +1,9 @@ -/** - * Determines exp notification style. - * - Default - the normal exp gain display, nothing changed - * - Only level up - we display the level up in the small frame instead of a message - * - Skip - no level up frame nor message -*/ +/** Enum for party experience gain notification style. */ export enum ExpNotification { - DEFAULT, - ONLY_LEVEL_UP, - SKIP + /** Display amount flyout for all off-field party members upon gaining any amount of EXP. */ + DEFAULT, + /** Display smaller flyout showing level gained on gaining a new level. */ + ONLY_LEVEL_UP, + /** Do not show any flyouts for EXP gains or levelups. */ + SKIP } diff --git a/src/field/arena.ts b/src/field/arena.ts index b28ebd0b46b..8f27ddb22e9 100644 --- a/src/field/arena.ts +++ b/src/field/arena.ts @@ -30,6 +30,7 @@ import { TagAddedEvent, TagRemovedEvent, TerrainChangedEvent, WeatherChangedEven import type { Pokemon } from "#field/pokemon"; import { FieldEffectModifier } from "#modifiers/modifier"; import type { Move } from "#moves/move"; +import type { AbstractConstructor } from "#types/type-helpers"; import { type Constructor, isNullOrUndefined, NumberHolder, randSeedInt } from "#utils/common"; import { getPokemonSpecies } from "#utils/pokemon-utils"; @@ -644,7 +645,7 @@ export class Arena { * @param args array of parameters that the called upon tags may need */ applyTagsForSide( - tagType: ArenaTagType | Constructor, + tagType: ArenaTagType | Constructor | AbstractConstructor, side: ArenaTagSide, simulated: boolean, ...args: unknown[] @@ -666,7 +667,11 @@ export class Arena { * @param simulated if `true`, this applies arena tags without changing game state * @param args array of parameters that the called upon tags may need */ - applyTags(tagType: ArenaTagType | Constructor, simulated: boolean, ...args: unknown[]): void { + applyTags( + tagType: ArenaTagType | Constructor | AbstractConstructor, + simulated: boolean, + ...args: unknown[] + ): void { this.applyTagsForSide(tagType, ArenaTagSide.BOTH, simulated, ...args); } @@ -723,7 +728,7 @@ export class Arena { * @param tagType The {@linkcode ArenaTagType} or {@linkcode ArenaTag} to get * @returns either the {@linkcode ArenaTag}, or `undefined` if it isn't there */ - getTag(tagType: ArenaTagType | Constructor): ArenaTag | undefined { + getTag(tagType: ArenaTagType | Constructor | AbstractConstructor): ArenaTag | undefined { return this.getTagOnSide(tagType, ArenaTagSide.BOTH); } @@ -739,7 +744,10 @@ export class Arena { * @param side The {@linkcode ArenaTagSide} to look at * @returns either the {@linkcode ArenaTag}, or `undefined` if it isn't there */ - getTagOnSide(tagType: ArenaTagType | Constructor, side: ArenaTagSide): ArenaTag | undefined { + getTagOnSide( + tagType: ArenaTagType | Constructor | AbstractConstructor, + side: ArenaTagSide, + ): ArenaTag | undefined { return typeof tagType === "string" ? this.tags.find( t => t.tagType === tagType && (side === ArenaTagSide.BOTH || t.side === ArenaTagSide.BOTH || t.side === side), diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 6ccccec7d91..01f137b28fd 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -375,7 +375,7 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { this.ivs = ivs || getIvsFromId(this.id); if (this.gender === undefined) { - this.generateGender(); + this.gender = this.species.generateGender(); } if (this.formIndex === undefined) { @@ -437,7 +437,9 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * @param useIllusion - Whether we want the fake name or the real name of the Pokemon (for Illusion ability). + * Return the name that will be displayed when this Pokemon is sent out into battle. + * @param useIllusion - Whether to consider this Pokemon's illusion if present; default `true` + * @returns The name to render for this {@linkcode Pokemon}. */ getNameToRender(useIllusion = true) { const name: string = @@ -446,7 +448,7 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { !useIllusion && this.summonData.illusion ? this.summonData.illusion.basePokemon.nickname : this.nickname; try { if (nickname) { - return decodeURIComponent(escape(atob(nickname))); + return decodeURIComponent(escape(atob(nickname))); // TODO: Remove `atob` and `escape`... eventually... } return name; } catch (err) { @@ -455,11 +457,13 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { } } - getPokeball(useIllusion = false) { - if (useIllusion) { - return this.summonData.illusion?.pokeball ?? this.pokeball; - } - return this.pokeball; + /** + * Return this Pokemon's {@linkcode PokeballType}. + * @param useIllusion - Whether to consider this Pokemon's illusion if present; default `false` + * @returns The {@linkcode PokeballType} that will be shown when this Pokemon is sent out into battle. + */ + getPokeball(useIllusion = false): PokeballType { + return useIllusion && this.summonData.illusion ? this.summonData.illusion.pokeball : this.pokeball; } init(): void { @@ -516,17 +520,17 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { /** * Checks if a pokemon is fainted (ie: its `hp <= 0`). - * It's usually better to call {@linkcode isAllowedInBattle()} - * @param checkStatus `true` to also check that the pokemon's status is {@linkcode StatusEffect.FAINT} - * @returns `true` if the pokemon is fainted + * Usually should not be called directly in favor of calling {@linkcode isAllowedInBattle()}. + * @param checkStatus - Whether to also check that the pokemon's status is {@linkcode StatusEffect.FAINT}; default `false` + * @returns Whether this Pokemon is fainted, as described above. */ public isFainted(checkStatus = false): boolean { return this.hp <= 0 && (!checkStatus || this.status?.effect === StatusEffect.FAINT); } /** - * Check if this pokemon is both not fainted and allowed to be in battle based on currently active challenges. - * @returns {boolean} `true` if pokemon is allowed in battle + * Check if this pokemon is both not fainted and allowed to be used based on currently active challenges. + * @returns Whether this Pokemon is allowed to partake in battle. */ public isAllowedInBattle(): boolean { return !this.isFainted() && this.isAllowedInChallenge(); @@ -534,8 +538,8 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { /** * Check if this pokemon is allowed based on any active challenges. - * It's usually better to call {@linkcode isAllowedInBattle()} - * @returns {boolean} `true` if pokemon is allowed in battle + * Usually should not be called directly in favor of consulting {@linkcode isAllowedInBattle()}. + * @returns Whether this Pokemon is allowed under the current challenge conditions. */ public isAllowedInChallenge(): boolean { const challengeAllowed = new BooleanHolder(true); @@ -545,8 +549,8 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { /** * Checks if this {@linkcode Pokemon} is allowed in battle (ie: not fainted, and allowed under any active challenges). - * @param onField `true` to also check if the pokemon is currently on the field; default `false` - * @returns `true` if the pokemon is "active", as described above. + * @param onField - Whether to also check if the pokemon is currently on the field; default `false` + * @returns Whether this pokemon is considered "active", as described above. * Returns `false` if there is no active {@linkcode BattleScene} or the pokemon is disallowed. */ public isActive(onField = false): boolean { @@ -703,7 +707,10 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { abstract getBattlerIndex(): BattlerIndex; /** - * @param useIllusion - Whether we want the illusion or not. + * Load all assets needed for this Pokemon's use in battle + * @param ignoreOverride - Whether to ignore overrides caused by {@linkcode Moves.TRANSFORM | Transform}; default `true` + * @param useIllusion - Whether to consider this pokemon's active illusion; default `false` + * @returns A promise that resolves once all the corresponding assets have been loaded. */ async loadAssets(ignoreOverride = true, useIllusion = false): Promise { /** Promises that are loading assets and can be run concurrently. */ @@ -832,11 +839,10 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * Attempt to process variant sprite. - * - * @param cacheKey the cache key for the variant color sprite - * @param useExpSprite should the experimental sprite be used - * @param battleSpritePath the filename of the sprite + * Attempt to process variant sprite color caches. + * @param cacheKey - the cache key for the variant color sprite + * @param useExpSprite - Whether experimental sprites should be used if present + * @param battleSpritePath - the filename of the sprite */ async populateVariantColorCache(cacheKey: string, useExpSprite: boolean, battleSpritePath: string) { const spritePath = `./images/pokemon/variant/${useExpSprite ? "exp/" : ""}${battleSpritePath}.json`; @@ -883,8 +889,12 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { return this.fusionSpecies.forms[this.fusionFormIndex].formKey; } - getSpriteAtlasPath(ignoreOverride?: boolean): string { + // TODO: Add more documentation for all these attributes. + // They may be all similar, but what each one actually _does_ is quite unclear at first glance + + getSpriteAtlasPath(ignoreOverride = false): string { const spriteId = this.getSpriteId(ignoreOverride).replace(/_{2}/g, "/"); + return `${/_[1-3]$/.test(spriteId) ? "variant/" : ""}${spriteId}`; } @@ -1027,10 +1037,11 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * Get this {@linkcode Pokemon}'s {@linkcode PokemonSpeciesForm}. - * @param ignoreOverride - Whether to ignore overridden species from {@linkcode MoveId.TRANSFORM}, default `false`. - * This overrides `useIllusion` if `true`. - * @param useIllusion - `true` to use the speciesForm of the illusion; default `false`. + * Return this Pokemon's {@linkcode PokemonSpeciesForm | SpeciesForm}. + * @param ignoreOverride - Whether to ignore any overrides caused by {@linkcode Moves.TRANSFORM | Transform}; default `false` + * and overrides `useIllusion`. + * @param useIllusion - Whether to consider this Pokemon's illusion if present; default `false`. + * @returns This Pokemon's {@linkcode PokemonSpeciesForm}. */ getSpeciesForm(ignoreOverride = false, useIllusion = false): PokemonSpeciesForm { if (!ignoreOverride && this.summonData.speciesForm) { @@ -1082,9 +1093,12 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * @param {boolean} useIllusion - Whether we want the fusionSpeciesForm of the illusion or not. + * Return the {@linkcode PokemonSpeciesForm | SpeciesForm} of this Pokemon's fusion counterpart. + * @param ignoreOverride - Whether to ignore species overrides caused by {@linkcode Moves.TRANSFORM | Transform}; default `false` + * @param useIllusion - Whether to consider the species of this Pokemon's illusion; default `false` + * @returns The {@linkcode PokemonSpeciesForm} of this Pokemon's fusion counterpart. */ - getFusionSpeciesForm(ignoreOverride?: boolean, useIllusion = false): PokemonSpeciesForm { + getFusionSpeciesForm(ignoreOverride = false, useIllusion = false): PokemonSpeciesForm { const fusionSpecies: PokemonSpecies = useIllusion && this.summonData.illusion ? this.summonData.illusion.fusionSpecies! : this.fusionSpecies!; const fusionFormIndex = @@ -1406,17 +1420,19 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { * Calculates and retrieves the final value of a stat considering any held * items, move effects, opponent abilities, and whether there was a critical * hit. - * @param stat the desired {@linkcode EffectiveStat} - * @param opponent the target {@linkcode Pokemon} - * @param move the {@linkcode Move} being used - * @param ignoreAbility determines whether this Pokemon's abilities should be ignored during the stat calculation - * @param ignoreOppAbility during an attack, determines whether the opposing Pokemon's abilities should be ignored during the stat calculation. - * @param ignoreAllyAbility during an attack, determines whether the ally Pokemon's abilities should be ignored during the stat calculation. - * @param isCritical determines whether a critical hit has occurred or not (`false` by default) - * @param simulated if `true`, nullifies any effects that produce any changes to game state from triggering - * @param ignoreHeldItems determines whether this Pokemon's held items should be ignored during the stat calculation, default `false` - * @returns the final in-battle value of a stat + * @param stat - The desired {@linkcode EffectiveStat | Stat} to check. + * @param opponent - The {@linkcode Pokemon} being targeted, if applicable. + * @param move - The {@linkcode Move} being used, if any. Used to check ability ignoring effects and similar. + * @param ignoreAbility - Whether to ignore ability effects of the user; default `false`. + * @param ignoreOppAbility - Whether to ignore ability effects of the target; default `false`. + * @param ignoreAllyAbility - Whether to ignore ability effects of the user's allies; default `false`. + * @param isCritical - Whether a critical hit has occurred or not; default `false`. + * If `true`, will nullify offensive stat drops or defensive stat boosts. + * @param simulated - Whether to nullify any effects that produce changes to game state during calculations; default `true` + * @param ignoreHeldItems - Whether to ignore the user's held items during stat calculation; default `false`. + * @returns The final in-battle value for the given stat. */ + // TODO: Replace the optional parameters with an object to make calling this method less cumbersome getEffectiveStat( stat: EffectiveStat, opponent?: Pokemon, @@ -1436,6 +1452,7 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { // The Ruin abilities here are never ignored, but they reveal themselves on summon anyway const fieldApplied = new BooleanHolder(false); for (const pokemon of globalScene.getField(true)) { + // TODO: remove `canStack` toggle from ability as breaking out renders it useless applyAbAttrs("FieldMultiplyStatAbAttr", { pokemon, stat, @@ -1448,6 +1465,7 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { break; } } + if (!ignoreAbility) { applyAbAttrs("StatMultiplierAbAttr", { pokemon: this, @@ -1647,9 +1665,12 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * @param useIllusion - Whether we want the fake or real gender (illusion ability). + * Return this Pokemon's {@linkcode Gender}. + * @param ignoreOverride - Whether to ignore any overrides caused by {@linkcode Moves.TRANSFORM | Transform}; default `false` + * @param useIllusion - Whether to consider this pokemon's illusion if present; default `false` + * @returns the {@linkcode Gender} of this {@linkcode Pokemon}. */ - getGender(ignoreOverride?: boolean, useIllusion = false): Gender { + getGender(ignoreOverride = false, useIllusion = false): Gender { if (useIllusion && this.summonData.illusion) { return this.summonData.illusion.gender; } @@ -1660,9 +1681,12 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * @param useIllusion - Whether we want the fake or real gender (illusion ability). + * Return this Pokemon's fusion's {@linkcode Gender}. + * @param ignoreOverride - Whether to ignore any overrides caused by {@linkcode Moves.TRANSFORM | Transform}; default `false` + * @param useIllusion - Whether to consider this pokemon's illusion if present; default `false` + * @returns The {@linkcode Gender} of this {@linkcode Pokemon}'s fusion. */ - getFusionGender(ignoreOverride?: boolean, useIllusion = false): Gender { + getFusionGender(ignoreOverride = false, useIllusion = false): Gender { if (useIllusion && this.summonData.illusion?.fusionGender) { return this.summonData.illusion.fusionGender; } @@ -1673,15 +1697,19 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * @param useIllusion - Whether we want the fake or real shininess (illusion ability). + * Check whether this Pokemon is shiny. + * @param useIllusion - Whether to consider this pokemon's illusion if present; default `false` + * @returns Whether this Pokemon is shiny */ isShiny(useIllusion = false): boolean { if (!useIllusion && this.summonData.illusion) { - return !!( + return ( this.summonData.illusion.basePokemon?.shiny || - (this.summonData.illusion.fusionSpecies && this.summonData.illusion.basePokemon?.fusionShiny) + (this.summonData.illusion.fusionSpecies && this.summonData.illusion.basePokemon?.fusionShiny) || + false ); } + return this.shiny || (this.isFusion(useIllusion) && this.fusionShiny); } @@ -1700,9 +1728,9 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * - * @param useIllusion - Whether we want the fake or real shininess (illusion ability). - * @returns `true` if the {@linkcode Pokemon} is shiny and the fusion is shiny as well, `false` otherwise + * Check whether this Pokemon is doubly shiny (both normal and fusion are shiny). + * @param useIllusion - Whether to consider this pokemon's illusion if present; default `false` + * @returns Whether this pokemon's base and fusion counterparts are both shiny. */ isDoubleShiny(useIllusion = false): boolean { if (!useIllusion && this.summonData.illusion?.basePokemon) { @@ -1712,11 +1740,15 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { this.summonData.illusion.basePokemon.fusionShiny ); } + return this.isFusion(useIllusion) && this.shiny && this.fusionShiny; } /** - * @param useIllusion - Whether we want the fake or real variant (illusion ability). + * Return this Pokemon's {@linkcode Variant | shiny variant}. + * Only meaningful if this pokemon is actually shiny. + * @param useIllusion - Whether to consider this pokemon's illusion if present; default `false` + * @returns The shiny variant of this Pokemon. */ getVariant(useIllusion = false): Variant { if (!useIllusion && this.summonData.illusion) { @@ -1724,9 +1756,11 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { ? this.summonData.illusion.basePokemon!.variant : (Math.max(this.variant, this.fusionVariant) as Variant); } + return !this.isFusion(true) ? this.variant : (Math.max(this.variant, this.fusionVariant) as Variant); } + // TODO: Clarify how this differs from `getVariant` getBaseVariant(doubleShiny: boolean): Variant { if (doubleShiny) { return this.summonData.illusion?.basePokemon?.variant ?? this.variant; @@ -1734,19 +1768,28 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { return this.getVariant(); } + /** + * Return this pokemon's overall luck value, based on its shininess (1 pt per variant lvl). + * @returns The luck value of this Pokemon. + */ getLuck(): number { return this.luck + (this.isFusion() ? this.fusionLuck : 0); } + /** + * Return whether this {@linkcode Pokemon} is currently fused with anything. + * @param useIllusion - Whether to consider this pokemon's illusion if present; default `false` + * @returns Whether this Pokemon is currently fused with another species. + */ isFusion(useIllusion = false): boolean { - if (useIllusion && this.summonData.illusion) { - return !!this.summonData.illusion.fusionSpecies; - } - return !!this.fusionSpecies; + return useIllusion && this.summonData.illusion ? !!this.summonData.illusion.fusionSpecies : !!this.fusionSpecies; } /** - * @param useIllusion - Whether we want the fake name or the real name of the Pokemon (for Illusion ability). + * Return this {@linkcode Pokemon}'s name. + * @param useIllusion - Whether to consider this pokemon's illusion if present; default `false` + * @returns This Pokemon's name. + * @see {@linkcode getNameToRender} - gets this Pokemon's display name. */ getName(useIllusion = false): string { return !useIllusion && this.summonData.illusion?.basePokemon @@ -1755,19 +1798,19 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * Checks if the {@linkcode Pokemon} has a fusion with the specified {@linkcode SpeciesId}. - * @param species the pokemon {@linkcode SpeciesId} to check - * @returns `true` if the {@linkcode Pokemon} has a fusion with the specified {@linkcode SpeciesId}, `false` otherwise + * Check whether this {@linkcode Pokemon} has a fusion with the specified {@linkcode SpeciesId}. + * @param species - The {@linkcode SpeciesId} to check against. + * @returns Whether this Pokemon is currently fused with the specified {@linkcode SpeciesId}. */ hasFusionSpecies(species: SpeciesId): boolean { return this.fusionSpecies?.speciesId === species; } /** - * Checks if the {@linkcode Pokemon} has is the specified {@linkcode SpeciesId} or is fused with it. - * @param species the pokemon {@linkcode SpeciesId} to check - * @param formKey If provided, requires the species to be in that form - * @returns `true` if the pokemon is the species or is fused with it, `false` otherwise + * Check whether this {@linkcode Pokemon} either is or is fused with the given {@linkcode SpeciesId}. + * @param species - The {@linkcode SpeciesId} to check against. + * @param formKey - If provided, will require the species to be in the given form. + * @returns Whether this Pokemon has this species as either its base or fusion counterpart. */ hasSpecies(species: SpeciesId, formKey?: string): boolean { if (isNullOrUndefined(formKey)) { @@ -1782,7 +1825,13 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { abstract isBoss(): boolean; - getMoveset(ignoreOverride?: boolean): PokemonMove[] { + /** + * Return all the {@linkcode PokemonMove}s that make up this Pokemon's moveset. + * Takes into account player/enemy moveset overrides (which will also override PP count). + * @param ignoreOverride - Whether to ignore any overrides caused by {@linkcode Moves.TRANSFORM | Transform}; default `false` + * @returns An array of {@linkcode PokemonMove}, as described above. + */ + getMoveset(ignoreOverride = false): PokemonMove[] { const ret = !ignoreOverride && this.summonData.moveset ? this.summonData.moveset : this.moveset; // Overrides moveset based on arrays specified in overrides.ts @@ -1804,11 +1853,10 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * Checks which egg moves have been unlocked for the {@linkcode Pokemon} based - * on the species it was met at or by the first {@linkcode Pokemon} in its evolution + * Check which egg moves have been unlocked for this {@linkcode Pokemon}. + * Looks at either the species it was met at or the first {@linkcode Species} in its evolution * line that can act as a starter and provides those egg moves. - * @returns an array of {@linkcode MoveId}, the length of which is determined by how many - * egg moves are unlocked for that species. + * @returns An array of all {@linkcode MoveId}s that are egg moves and unlocked for this Pokemon. */ getUnlockedEggMoves(): MoveId[] { const moves: MoveId[] = []; @@ -1825,13 +1873,12 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * Gets all possible learnable level moves for the {@linkcode Pokemon}, + * Get all possible learnable level moves for the {@linkcode Pokemon}, * excluding any moves already known. * * Available egg moves are only included if the {@linkcode Pokemon} was * in the starting party of the run and if Fresh Start is not active. - * @returns an array of {@linkcode MoveId}, the length of which is determined - * by how many learnable moves there are for the {@linkcode Pokemon}. + * @returns An array of {@linkcode MoveId}s, as described above. */ public getLearnableLevelMoves(): MoveId[] { let levelMoves = this.getLevelMoves(1, true, false, true).map(lm => lm[1]); @@ -1846,12 +1893,12 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * Gets the types of a pokemon - * @param includeTeraType - `true` to include tera-formed type; Default: `false` - * @param forDefend - `true` if the pokemon is defending from an attack; Default: `false` - * @param ignoreOverride - If `true`, ignore ability changing effects; Default: `false` - * @param useIllusion - `true` to return the types of the illusion instead of the actual types; Default: `false` - * @returns array of {@linkcode PokemonType} + * Evaluate and return this Pokemon's typing. + * @param includeTeraType - Whether to use this Pokemon's tera type if Terastallized; default `false` + * @param forDefend - Whether this Pokemon is currently receiving an attack; default `false` + * @param ignoreOverride - Whether to ignore any overrides caused by {@linkcode Moves.TRANSFORM | Transform}; default `false` + * @param useIllusion - Whether to consider this Pokemon's illusion if present; default `false` + * @returns An array of {@linkcode PokemonType}s corresponding to this Pokemon's typing (real or percieved). */ public getTypes( includeTeraType = false, @@ -1947,7 +1994,7 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { } // remove UNKNOWN if other types are present - if (types.length > 1 && types.includes(PokemonType.UNKNOWN)) { + if (types.length > 1) { const index = types.indexOf(PokemonType.UNKNOWN); if (index !== -1) { types.splice(index, 1); @@ -1968,24 +2015,25 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * Checks if the pokemon's typing includes the specified type - * @param type - {@linkcode PokemonType} to check - * @param includeTeraType - `true` to include tera-formed type; Default: `true` - * @param forDefend - `true` if the pokemon is defending from an attack; Default: `false` - * @param ignoreOverride - If `true`, ignore ability changing effects; Default: `false` - * @returns `true` if the Pokemon's type matches + * Check if this Pokemon's typing includes the specified type. + * @param type - The {@linkcode PokemonType} to check + * @param includeTeraType - Whether to use this Pokemon's tera type if Terastallized; default `true` + * @param forDefend - Whether this Pokemon is currently receiving an attack; default `false` + * @param ignoreOverride - Whether to ignore any overrides caused by {@linkcode Moves.TRANSFORM | Transform}; default `false` + * @returns Whether this Pokemon is of the specified type. */ public isOfType(type: PokemonType, includeTeraType = true, forDefend = false, ignoreOverride = false): boolean { - return this.getTypes(includeTeraType, forDefend, ignoreOverride).some(t => t === type); + return this.getTypes(includeTeraType, forDefend, ignoreOverride).includes(type); } /** - * Gets the non-passive ability of the pokemon. This accounts for fusions and ability changing effects. - * This should rarely be called, most of the time {@linkcode hasAbility} or {@linkcode hasAbilityWithAttr} are better used as - * those check both the passive and non-passive abilities and account for ability suppression. - * @see {@linkcode hasAbility} {@linkcode hasAbilityWithAttr} Intended ways to check abilities in most cases - * @param ignoreOverride - If `true`, ignore ability changing effects; Default: `false` - * @returns The non-passive {@linkcode Ability} of the pokemon + * Get this Pokemon's non-passive {@linkcode Ability}, factoring in fusions, overrides and ability-changing effects. + + * Should rarely be called directly in favor of {@linkcode hasAbility} or {@linkcode hasAbilityWithAttr}, + * both of which check both ability slots and account for suppression. + * @see {@linkcode hasAbility} and {@linkcode hasAbilityWithAttr} are the intended ways to check abilities in most cases + * @param ignoreOverride - Whether to ignore any overrides caused by {@linkcode Moves.TRANSFORM | Transform}; default `false` + * @returns The non-passive {@linkcode Ability} of this Pokemon. */ public getAbility(ignoreOverride = false): Ability { if (!ignoreOverride && this.summonData.ability) { @@ -2131,7 +2179,7 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { if (passive && !this.hasPassive()) { return false; } - const ability = !passive ? this.getAbility() : this.getPassiveAbility(); + const ability = passive ? this.getPassiveAbility() : this.getAbility(); if (this.isFusion() && ability.hasAttr("NoFusionAbilityAbAttr")) { return false; } @@ -2144,7 +2192,7 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { } const suppressAbilitiesTag = arena.getTag(ArenaTagType.NEUTRALIZING_GAS) as SuppressAbilitiesTag; const suppressOffField = ability.hasAttr("PreSummonAbAttr"); - if ((this.isOnField() || suppressOffField) && suppressAbilitiesTag && !suppressAbilitiesTag.isBeingRemoved()) { + if ((this.isOnField() || suppressOffField) && suppressAbilitiesTag && !suppressAbilitiesTag.beingRemoved) { const thisAbilitySuppressing = ability.hasAttr("PreLeaveFieldRemoveSuppressAbilitiesSourceAbAttr"); const hasSuppressingAbility = this.hasAbilityWithAttr("PreLeaveFieldRemoveSuppressAbilitiesSourceAbAttr", false); // Neutralizing gas is up - suppress abilities unless they are unsuppressable or this pokemon is responsible for the gas @@ -2162,13 +2210,12 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * Checks whether a pokemon has the specified ability and it's in effect. Accounts for all the various - * effects which can affect whether an ability will be present or in effect, and both passive and - * non-passive. This is the primary way to check whether a pokemon has a particular ability. - * @param ability The ability to check for + * Check whether a pokemon has the specified ability in effect, either as a normal or passive ability. + * Accounts for all the various effects which can disable or modify abilities. + * @param ability - The {@linkcode Abilities | Ability} to check for * @param canApply - Whether to check if the ability is currently active; default `true` - * @param ignoreOverride Whether to ignore ability changing effects; default `false` - * @returns `true` if the ability is present and active + * @param ignoreOverride - Whether to ignore any overrides caused by {@linkcode Moves.TRANSFORM | Transform}; default `false` + * @returns Whether this {@linkcode Pokemon} has the given ability */ public hasAbility(ability: AbilityId, canApply = true, ignoreOverride = false): boolean { if (this.getAbility(ignoreOverride).id === ability && (!canApply || this.canApplyAbility())) { @@ -2178,14 +2225,12 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * Checks whether a pokemon has an ability with the specified attribute and it's in effect. - * Accounts for all the various effects which can affect whether an ability will be present or - * in effect, and both passive and non-passive. This is one of the two primary ways to check - * whether a pokemon has a particular ability. - * @param attrType The {@link AbAttr | ability attribute} to check for + * Check whether this pokemon has an ability with the specified attribute in effect, either as a normal or passive ability. + * Accounts for all the various effects which can disable or modify abilities. + * @param attrType - The {@linkcode AbAttr | attribute} to check for * @param canApply - Whether to check if the ability is currently active; default `true` - * @param ignoreOverride Whether to ignore ability changing effects; default `false` - * @returns `true` if an ability with the given {@linkcode AbAttr} is present and active + * @param ignoreOverride - Whether to ignore any overrides caused by {@linkcode Moves.TRANSFORM | Transform}; default `false` + * @returns Whether this Pokemon has an ability with the given {@linkcode AbAttr}. */ public hasAbilityWithAttr(attrType: AbAttrString, canApply = true, ignoreOverride = false): boolean { if ((!canApply || this.canApplyAbility()) && this.getAbility(ignoreOverride).hasAttr(attrType)) { @@ -2207,7 +2252,7 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { const autotomizedTag = this.getTag(AutotomizedTag); let weightRemoved = 0; if (!isNullOrUndefined(autotomizedTag)) { - weightRemoved = 100 * autotomizedTag!.autotomizeCount; + weightRemoved = 100 * autotomizedTag.autotomizeCount; } const minWeight = 0.1; const weight = new NumberHolder(this.species.weight - weightRemoved); @@ -3403,10 +3448,10 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { * * Note that this does not apply to evasion or accuracy * @see {@linkcode getAccuracyMultiplier} - * @param stat the desired {@linkcode EffectiveStat} - * @param opponent the target {@linkcode Pokemon} - * @param move the {@linkcode Move} being used - * @param ignoreOppAbility determines whether the effects of the opponent's abilities (i.e. Unaware) should be ignored (`false` by default) + * @param stat - The {@linkcode EffectiveStat} to calculate + * @param opponent - The {@linkcode Pokemon} being targeted + * @param move - The {@linkcode Move} being used + * @param ignoreOppAbility determines whether the effects of the opponent's abilities (i.e. Unaware) should be ignored (`false` by default) * @param isCritical determines whether a critical hit has occurred or not (`false` by default) * @param simulated determines whether effects are applied without altering game state (`true` by default) * @param ignoreHeldItems determines whether this Pokemon's held items should be ignored during the stat calculation, default `false` @@ -4395,6 +4440,12 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { return null; } + /** + * Return this Pokemon's move history. + * Entries are sorted in order of OLDEST to NEWEST + * @returns An array of {@linkcode TurnMove}, as described above. + * @see {@linkcode getLastXMoves} + */ public getMoveHistory(): TurnMove[] { return this.summonData.moveHistory; } @@ -4408,19 +4459,20 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * Returns a list of the most recent move entries in this Pokemon's move history. - * The retrieved move entries are sorted in order from NEWEST to OLDEST. - * @param moveCount The number of move entries to retrieve. - * If negative, retrieve the Pokemon's entire move history (equivalent to reversing the output of {@linkcode getMoveHistory()}). - * Default is `1`. - * @returns A list of {@linkcode TurnMove}, as specified above. + * Return a list of the most recent move entries in this {@linkcode Pokemon}'s move history. + * The retrieved move entries are sorted in order from **NEWEST** to **OLDEST**. + * @param moveCount - The maximum number of move entries to retrieve. + * If negative, retrieves the Pokemon's entire move history (equivalent to reversing the output of {@linkcode getMoveHistory()}). + * Default is `1`. + * @returns An array of {@linkcode TurnMove}, as specified above. */ + // TODO: Update documentation in dancer PR to mention "getLastNonVirtualMove" getLastXMoves(moveCount = 1): TurnMove[] { const moveHistory = this.getMoveHistory(); - if (moveCount >= 0) { + if (moveCount > 0) { return moveHistory.slice(Math.max(moveHistory.length - moveCount, 0)).reverse(); } - return moveHistory.slice(0).reverse(); + return moveHistory.slice().reverse(); } /** @@ -5576,13 +5628,15 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * Reduces one of this Pokemon's held item stacks by 1, and removes the item if applicable. + * Reduces one of this Pokemon's held item stacks by 1, removing it if applicable. * Does nothing if this Pokemon is somehow not the owner of the held item. - * @param heldItem The item stack to be reduced by 1. - * @param forBattle If `false`, do not trigger in-battle effects (such as Unburden) from losing the item. For example, set this to `false` if the Pokemon is giving away the held item for a Mystery Encounter. Default is `true`. - * @returns `true` if the item was removed successfully, `false` otherwise. + * @param heldItem - The item stack to be reduced. + * @param forBattle - Whether to trigger in-battle effects (such as Unburden) after losing the item. Default: `true` + * Should be `false` for all item loss occurring outside of battle (MEs, etc.). + * @returns Whether the item was removed successfully. */ public loseHeldItem(heldItem: PokemonHeldItemModifier, forBattle = true): boolean { + // TODO: What does a -1 pokemon id mean? if (heldItem.pokemonId !== -1 && heldItem.pokemonId !== this.id) { return false; } @@ -6254,22 +6308,23 @@ export class EnemyPokemon extends Pokemon { } /** - * Sets the pokemons boss status. If true initializes the boss segments either from the arguments - * or through the the Scene.getEncounterBossSegments function + * Set this {@linkcode EnemyPokemon}'s boss status. * - * @param boss if the pokemon is a boss - * @param bossSegments amount of boss segments (health-bar segments) + * @param boss - Whether this pokemon should be a boss; default `true` + * @param bossSegments - Optional amount amount of health bar segments to give; + * will be generated by {@linkcode BattleScene.getEncounterBossSegments} if omitted */ - setBoss(boss = true, bossSegments = 0): void { - if (boss) { - this.bossSegments = - bossSegments || - globalScene.getEncounterBossSegments(globalScene.currentBattle.waveIndex, this.level, this.species, true); - this.bossSegmentIndex = this.bossSegments - 1; - } else { + setBoss(boss = true, bossSegments?: number): void { + if (!boss) { this.bossSegments = 0; this.bossSegmentIndex = 0; + return; } + + this.bossSegments = + bossSegments ?? + globalScene.getEncounterBossSegments(globalScene.currentBattle.waveIndex, this.level, this.species, true); + this.bossSegmentIndex = this.bossSegments - 1; } generateAndPopulateMoveset(formIndex?: number): void { diff --git a/src/main.ts b/src/main.ts index 9063ac0ec5b..7e4943bdca5 100644 --- a/src/main.ts +++ b/src/main.ts @@ -45,8 +45,10 @@ Phaser.GameObjects.Rectangle.prototype.setPositionRelative = setPositionRelative document.fonts.load("16px emerald").then(() => document.fonts.load("10px pkmnems")); // biome-ignore lint/suspicious/noImplicitAnyLet: TODO let game; +// biome-ignore lint/suspicious/noImplicitAnyLet: TODO +let manifest; -const startGame = async (manifest?: any) => { +const startGame = async () => { await initI18n(); const LoadingScene = (await import("./loading-scene")).LoadingScene; const BattleScene = (await import("./battle-scene")).BattleScene; @@ -110,10 +112,13 @@ const startGame = async (manifest?: any) => { fetch("/manifest.json") .then(res => res.json()) .then(jsonResponse => { - startGame(jsonResponse.manifest); + manifest = jsonResponse.manifest; }) - .catch(() => { - // Manifest not found (likely local build) + .catch(err => { + // Manifest not found (likely local build or path error on live) + console.log(`Manifest not found. ${err}`); + }) + .finally(() => { startGame(); }); diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index 79bd849e5ba..f8c35b3e8f9 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -52,25 +52,11 @@ const iconOverflowIndex = 24; export const modifierSortFunc = (a: Modifier, b: Modifier): number => { const itemNameMatch = a.type.name.localeCompare(b.type.name); const typeNameMatch = a.constructor.name.localeCompare(b.constructor.name); - const aId = a instanceof PokemonHeldItemModifier && a.pokemonId ? a.pokemonId : 4294967295; - const bId = b instanceof PokemonHeldItemModifier && b.pokemonId ? b.pokemonId : 4294967295; + const aId = a instanceof PokemonHeldItemModifier ? a.pokemonId : -1; + const bId = b instanceof PokemonHeldItemModifier ? b.pokemonId : -1; - //First sort by pokemonID - if (aId < bId) { - return 1; - } - if (aId > bId) { - return -1; - } - if (aId === bId) { - //Then sort by item type - if (typeNameMatch === 0) { - return itemNameMatch; - //Finally sort by item name - } - return typeNameMatch; - } - return 0; + // First sort by pokemon ID, then by item type and then name + return aId - bId || typeNameMatch || itemNameMatch; }; export class ModifierBar extends Phaser.GameObjects.Container { @@ -757,7 +743,7 @@ export abstract class PokemonHeldItemModifier extends PersistentModifier { return 1; } - getMaxStackCount(forThreshold?: boolean): number { + getMaxStackCount(forThreshold = false): number { const pokemon = this.getPokemon(); if (!pokemon) { return 0; @@ -2814,6 +2800,7 @@ export class PokemonMultiHitModifier extends PokemonHeldItemModifier { damageMultiplier.value *= 1 - 0.25 * this.getStackCount(); return true; } + if (pokemon.turnData.hitCount - pokemon.turnData.hitsLeft !== this.getStackCount() + 1) { // Deal 25% damage for each remaining Multi Lens hit damageMultiplier.value *= 0.25; diff --git a/src/phase-manager.ts b/src/phase-manager.ts index 2d884476d33..39321fb747e 100644 --- a/src/phase-manager.ts +++ b/src/phase-manager.ts @@ -575,14 +575,13 @@ export class PhaseManager { } /** - * Queues an ability bar flyout phase - * @param pokemon The pokemon who has the ability - * @param passive Whether the ability is a passive - * @param show Whether to show or hide the bar + * Queue a phase to show or hide the ability flyout bar. + * @param pokemon - The {@linkcode Pokemon} whose ability is being activated + * @param passive - Whether the ability is a passive + * @param show - Whether to show or hide the bar */ public queueAbilityDisplay(pokemon: Pokemon, passive: boolean, show: boolean): void { this.unshiftPhase(show ? new ShowAbilityPhase(pokemon.getBattlerIndex(), passive) : new HideAbilityPhase()); - this.clearPhaseQueueSplice(); } /** diff --git a/src/phases/command-phase.ts b/src/phases/command-phase.ts index b90c5a6b00a..14674037fbe 100644 --- a/src/phases/command-phase.ts +++ b/src/phases/command-phase.ts @@ -88,7 +88,7 @@ export class CommandPhase extends FieldPhase { } // Checks if the Pokemon is under the effects of Encore. If so, Encore can end early if the encored move has no more PP. - const encoreTag = this.getPokemon().getTag(BattlerTagType.ENCORE) as EncoreTag; + const encoreTag = this.getPokemon().getTag(BattlerTagType.ENCORE) as EncoreTag | undefined; if (encoreTag) { this.getPokemon().lapseTag(BattlerTagType.ENCORE); } diff --git a/src/phases/select-starter-phase.ts b/src/phases/select-starter-phase.ts index 8363ac61ec3..6456bacd0e3 100644 --- a/src/phases/select-starter-phase.ts +++ b/src/phases/select-starter-phase.ts @@ -38,7 +38,7 @@ export class SelectStarterPhase extends Phase { /** * Initialize starters before starting the first battle - * @param starters {@linkcode Pokemon} with which to start the first battle + * @param starters - Array of {@linkcode Starter}s with which to start the battle */ initBattle(starters: Starter[]) { const party = globalScene.getPlayerParty(); diff --git a/src/phases/title-phase.ts b/src/phases/title-phase.ts index c644fc799e8..6f0493f707d 100644 --- a/src/phases/title-phase.ts +++ b/src/phases/title-phase.ts @@ -205,7 +205,7 @@ export class TitlePhase extends Phase { globalScene.eventManager.startEventChallenges(); globalScene.setSeed(seed); - globalScene.resetSeed(0); + globalScene.resetSeed(); globalScene.money = globalScene.gameMode.getStartingMoney(); @@ -284,6 +284,7 @@ export class TitlePhase extends Phase { console.error("Failed to load daily run:\n", err); }); } else { + // Grab first 10 chars of ISO date format (YYYY-MM-DD) and convert to base64 let seed: string = btoa(new Date().toISOString().substring(0, 10)); if (!isNullOrUndefined(Overrides.DAILY_RUN_SEED_OVERRIDE)) { seed = Overrides.DAILY_RUN_SEED_OVERRIDE; diff --git a/src/system/arena-data.ts b/src/system/arena-data.ts index 9d15ab50fcc..c0ad4a25024 100644 --- a/src/system/arena-data.ts +++ b/src/system/arena-data.ts @@ -1,9 +1,19 @@ import type { ArenaTag } from "#data/arena-tag"; -import { loadArenaTag } from "#data/arena-tag"; +import { loadArenaTag, SerializableArenaTag } from "#data/arena-tag"; import { Terrain } from "#data/terrain"; import { Weather } from "#data/weather"; import type { BiomeId } from "#enums/biome-id"; import { Arena } from "#field/arena"; +import type { ArenaTagTypeData } from "#types/arena-tags"; +import type { NonFunctionProperties } from "#types/type-helpers"; + +export interface SerializedArenaData { + biome: BiomeId; + weather: NonFunctionProperties | null; + terrain: NonFunctionProperties | null; + tags?: ArenaTagTypeData[]; + playerTerasUsed?: number; +} export class ArenaData { public biome: BiomeId; @@ -12,24 +22,26 @@ export class ArenaData { public tags: ArenaTag[]; public playerTerasUsed: number; - constructor(source: Arena | any) { - const sourceArena = source instanceof Arena ? (source as Arena) : null; - this.biome = sourceArena ? sourceArena.biomeType : source.biome; - this.weather = sourceArena - ? sourceArena.weather - : source.weather - ? new Weather(source.weather.weatherType, source.weather.turnsLeft) - : null; - this.terrain = sourceArena - ? sourceArena.terrain - : source.terrain - ? new Terrain(source.terrain.terrainType, source.terrain.turnsLeft) - : null; - this.playerTerasUsed = (sourceArena ? sourceArena.playerTerasUsed : source.playerTerasUsed) ?? 0; - this.tags = []; + constructor(source: Arena | SerializedArenaData) { + // Exclude any unserializable tags from the serialized data (such as ones only lasting 1 turn). + // NOTE: The filter has to be done _after_ map, data loaded from `ArenaTagTypeData` + // is not yet an instance of `ArenaTag` + this.tags = + source.tags + ?.map((t: ArenaTag | ArenaTagTypeData) => loadArenaTag(t)) + ?.filter((tag): tag is SerializableArenaTag => tag instanceof SerializableArenaTag) ?? []; - if (source.tags) { - this.tags = source.tags.map(t => loadArenaTag(t)); + this.playerTerasUsed = source.playerTerasUsed ?? 0; + + if (source instanceof Arena) { + this.biome = source.biomeType; + this.weather = source.weather; + this.terrain = source.terrain; + return; } + + this.biome = source.biome; + this.weather = source.weather ? new Weather(source.weather.weatherType, source.weather.turnsLeft) : null; + this.terrain = source.terrain ? new Terrain(source.terrain.terrainType, source.terrain.turnsLeft) : null; } } diff --git a/src/system/game-data.ts b/src/system/game-data.ts index 6abb5518d1c..4f251b212b1 100644 --- a/src/system/game-data.ts +++ b/src/system/game-data.ts @@ -42,7 +42,7 @@ import * as Modifier from "#modifiers/modifier"; import { MysteryEncounterSaveData } from "#mystery-encounters/mystery-encounter-save-data"; import type { Variant } from "#sprites/variant"; import { achvs } from "#system/achv"; -import { ArenaData } from "#system/arena-data"; +import { ArenaData, type SerializedArenaData } from "#system/arena-data"; import { ChallengeData } from "#system/challenge-data"; import { EggData } from "#system/egg-data"; import { GameStats } from "#system/game-stats"; @@ -1247,7 +1247,8 @@ export class GameData { // (or prevent them from being null) // If the value is able to *not exist*, it should say so in the code const sessionData = JSON.parse(dataStr, (k: string, v: any) => { - // TODO: Add pre-parse migrate scripts + // TODO: Move this to occur _after_ migrate scripts (and refactor all non-assignment duties into migrate scripts) + // This should ideally be just a giant assign block switch (k) { case "party": case "enemyParty": { @@ -1285,7 +1286,7 @@ export class GameData { } case "arena": - return new ArenaData(v); + return new ArenaData(v as SerializedArenaData); case "challenges": { const ret: ChallengeData[] = []; diff --git a/src/ui/fight-ui-handler.ts b/src/ui/fight-ui-handler.ts index c5f55cc2f9d..9c08991e063 100644 --- a/src/ui/fight-ui-handler.ts +++ b/src/ui/fight-ui-handler.ts @@ -322,7 +322,6 @@ export class FightUiHandler extends UiHandler implements InfoToggle { /** * Gets multiplier text for a pokemon's move against a specific opponent - * Returns undefined if it's a status move */ private getEffectivenessText(pokemon: Pokemon, opponent: Pokemon, pokemonMove: PokemonMove): string | undefined { const effectiveness = opponent.getMoveEffectiveness( @@ -333,8 +332,11 @@ export class FightUiHandler extends UiHandler implements InfoToggle { undefined, true, ); - if (effectiveness === undefined) { - return undefined; + if (pokemonMove.getMove().category === MoveCategory.STATUS) { + if (effectiveness === 0) { + return "0x"; + } + return "1x"; } return `${effectiveness}x`; @@ -391,7 +393,12 @@ export class FightUiHandler extends UiHandler implements InfoToggle { ), ) .sort((a, b) => b - a) - .map(effectiveness => getTypeDamageMultiplierColor(effectiveness ?? 0, "offense")); + .map(effectiveness => { + if (pokemonMove.getMove().category === MoveCategory.STATUS && effectiveness !== 0) { + return undefined; + } + return getTypeDamageMultiplierColor(effectiveness ?? 0, "offense"); + }); return moveColors[0]; } diff --git a/test/abilities/commander.test.ts b/test/abilities/commander.test.ts index 5ddafc90d05..8c19ee083c5 100644 --- a/test/abilities/commander.test.ts +++ b/test/abilities/commander.test.ts @@ -200,8 +200,6 @@ describe("Abilities - Commander", () => { game.move.select(MoveId.DIVE, 0, BattlerIndex.ENEMY); game.move.select(MoveId.SPLASH, 1); - - await game.phaseInterceptor.to("CommandPhase"); await game.toNextTurn(); expect(tatsugiri.getTag(BattlerTagType.UNDERWATER)).toBeDefined(); diff --git a/test/abilities/costar.test.ts b/test/abilities/costar.test.ts index 42d8f7811f8..c8c0ffd3184 100644 --- a/test/abilities/costar.test.ts +++ b/test/abilities/costar.test.ts @@ -2,7 +2,6 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { CommandPhase } from "#phases/command-phase"; import { MessagePhase } from "#phases/message-phase"; import { GameManager } from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -39,7 +38,6 @@ describe("Abilities - COSTAR", () => { let [leftPokemon, rightPokemon] = game.scene.getPlayerField(); game.move.select(MoveId.NASTY_PLOT); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); @@ -47,7 +45,6 @@ describe("Abilities - COSTAR", () => { expect(rightPokemon.getStatStage(Stat.SPATK)).toBe(0); game.move.select(MoveId.SPLASH); - await game.phaseInterceptor.to(CommandPhase); game.doSwitchPokemon(2); await game.phaseInterceptor.to(MessagePhase); @@ -67,7 +64,6 @@ describe("Abilities - COSTAR", () => { expect(leftPokemon.getStatStage(Stat.ATK)).toBe(-2); game.move.select(MoveId.SPLASH); - await game.phaseInterceptor.to(CommandPhase); game.doSwitchPokemon(2); await game.phaseInterceptor.to(MessagePhase); diff --git a/test/abilities/disguise.test.ts b/test/abilities/disguise.test.ts index 94d9dbf1d47..9bd36def8d7 100644 --- a/test/abilities/disguise.test.ts +++ b/test/abilities/disguise.test.ts @@ -165,7 +165,7 @@ describe("Abilities - Disguise", () => { expect(mimikyu.formIndex).toBe(disguisedForm); }); - it("reverts to Disguised form on biome change when fainted", async () => { + it("reverts to Disguised form when fainted", async () => { game.override .startingWave(10) .starterSpecies(0) @@ -181,10 +181,6 @@ describe("Abilities - Disguise", () => { game.move.select(MoveId.SPLASH); await game.killPokemon(mimikyu1); - game.doSelectPartyPokemon(1); - await game.toNextTurn(); - game.move.select(MoveId.SPLASH); - await game.doKillOpponents(); await game.phaseInterceptor.to("QuietFormChangePhase"); expect(mimikyu1.formIndex).toBe(disguisedForm); diff --git a/test/abilities/innards-out.test.ts b/test/abilities/innards-out.test.ts new file mode 100644 index 00000000000..a10465ce1cb --- /dev/null +++ b/test/abilities/innards-out.test.ts @@ -0,0 +1,62 @@ +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { SpeciesId } from "#enums/species-id"; +import { GameManager } from "#test/testUtils/gameManager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; + +describe("Abilities - Innards Out", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + game.override + .ability(AbilityId.BALL_FETCH) + .battleStyle("single") + .criticalHits(false) + .enemySpecies(SpeciesId.MAGIKARP) + .enemyAbility(AbilityId.INNARDS_OUT) + .enemyMoveset(MoveId.SPLASH) + .startingLevel(100); + }); + + it("should damage opppnents that faint the ability holder for equal damage", async () => { + await game.classicMode.startBattle([SpeciesId.FEEBAS]); + + const magikarp = game.field.getEnemyPokemon(); + magikarp.hp = 20; + game.move.use(MoveId.X_SCISSOR); + await game.toEndOfTurn(); + + expect(magikarp.isFainted()).toBe(true); + const feebas = game.field.getPlayerPokemon(); + expect(feebas.getInverseHp()).toBe(20); + }); + + it("should not damage an ally in Double Battles", async () => { + game.override.battleStyle("double"); + await game.classicMode.startBattle([SpeciesId.FEEBAS]); + + const [magikarp1, magikarp2] = game.scene.getEnemyField(); + magikarp1.hp = 1; + + game.move.use(MoveId.PROTECT); + await game.move.forceEnemyMove(MoveId.SPLASH); + await game.move.forceEnemyMove(MoveId.SURF); + await game.toEndOfTurn(); + + expect(magikarp1.isFainted()).toBe(true); + expect(magikarp2.getInverseHp()).toBe(0); + }); +}); diff --git a/test/abilities/magic_guard.test.ts b/test/abilities/magic_guard.test.ts index b1b7ee6765b..63b22f347fb 100644 --- a/test/abilities/magic_guard.test.ts +++ b/test/abilities/magic_guard.test.ts @@ -1,19 +1,17 @@ -import { getArenaTag } from "#data/arena-tag"; import { getStatusEffectCatchRateMultiplier } from "#data/status-effect"; import { AbilityId } from "#enums/ability-id"; import { ArenaTagSide } from "#enums/arena-tag-side"; import { ArenaTagType } from "#enums/arena-tag-type"; -import { BattlerTagType } from "#enums/battler-tag-type"; +import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { WeatherType } from "#enums/weather-type"; -import { TurnEndPhase } from "#phases/turn-end-phase"; import { GameManager } from "#test/testUtils/gameManager"; +import { toDmgValue } from "#utils/common"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; -describe("Abilities - Magic Guard", () => { +describe("AbilityId - Magic Guard", () => { let phaserGame: Phaser.Game; let game: GameManager; @@ -29,404 +27,142 @@ describe("Abilities - Magic Guard", () => { beforeEach(() => { game = new GameManager(phaserGame); - game.override - /** Player Pokemon overrides */ .ability(AbilityId.MAGIC_GUARD) - .moveset([MoveId.SPLASH]) + .enemySpecies(SpeciesId.BLISSEY) + .enemyAbility(AbilityId.NO_GUARD) .startingLevel(100) - /** Enemy Pokemon overrides */ - .enemySpecies(SpeciesId.SNORLAX) - .enemyAbility(AbilityId.INSOMNIA) - .enemyMoveset(MoveId.SPLASH) .enemyLevel(100); }); //Bulbapedia Reference: https://bulbapedia.bulbagarden.net/wiki/Magic_Guard_(Ability) - it("ability should prevent damage caused by weather", async () => { - game.override.weather(WeatherType.SANDSTORM); - + it.each<{ name: string; move?: MoveId; enemyMove?: MoveId }>([ + { name: "Non-Volatile Status Conditions", enemyMove: MoveId.TOXIC }, + { name: "Volatile Status Conditions", enemyMove: MoveId.LEECH_SEED }, + { name: "Crash Damage", move: MoveId.HIGH_JUMP_KICK, enemyMove: MoveId.PROTECT }, // Protect triggers crash damage + { name: "Variable Recoil Moves", move: MoveId.DOUBLE_EDGE }, + { name: "HP% Recoil Moves", move: MoveId.CHLOROBLAST }, + ])("should prevent damage from $name", async ({ move = MoveId.SPLASH, enemyMove = MoveId.SPLASH }) => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; + game.move.use(move); + await game.move.forceEnemyMove(enemyMove); + await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); + await game.toEndOfTurn(); - const enemyPokemon = game.scene.getEnemyPokemon()!; - expect(enemyPokemon).toBeDefined(); - - game.move.select(MoveId.SPLASH); - - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The player Pokemon (with Magic Guard) has not taken damage from weather - * - The enemy Pokemon (without Magic Guard) has taken damage from weather - */ - expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp()); - expect(enemyPokemon.hp).toBeLessThan(enemyPokemon.getMaxHp()); + const magikarp = game.field.getPlayerPokemon(); + expect(magikarp.hp).toBe(magikarp.getMaxHp()); }); - it("ability should prevent damage caused by status effects but other non-damage effects still apply", async () => { - //Toxic keeps track of the turn counters -> important that Magic Guard keeps track of post-Toxic turns - game.override.statusEffect(StatusEffect.POISON); + it.each<{ abName: string; move?: MoveId; enemyMove?: MoveId; passive?: AbilityId; enemyAbility?: AbilityId }>([ + { abName: "Bad Dreams", enemyMove: MoveId.SPORE, enemyAbility: AbilityId.BAD_DREAMS }, + { abName: "Aftermath", move: MoveId.PSYCHIC_FANGS, enemyAbility: AbilityId.AFTERMATH }, + { abName: "Innards Out", move: MoveId.PSYCHIC_FANGS, enemyAbility: AbilityId.INNARDS_OUT }, + { abName: "Rough Skin", move: MoveId.PSYCHIC_FANGS, enemyAbility: AbilityId.ROUGH_SKIN }, + { abName: "Dry Skin", move: MoveId.SUNNY_DAY, passive: AbilityId.DRY_SKIN }, + { abName: "Liquid Ooze", move: MoveId.DRAIN_PUNCH, enemyAbility: AbilityId.LIQUID_OOZE }, + ])( + "should prevent damage from $abName", + async ({ + move = MoveId.SPLASH, + enemyMove = MoveId.SPLASH, + passive = AbilityId.BALL_FETCH, + enemyAbility = AbilityId.BALL_FETCH, + }) => { + game.override.enemyLevel(1).passiveAbility(passive).enemyAbility(enemyAbility); + await game.classicMode.startBattle([SpeciesId.MAGIKARP]); + game.move.use(move); + await game.move.forceEnemyMove(enemyMove); + await game.toEndOfTurn(); + + const magikarp = game.field.getPlayerPokemon(); + expect(magikarp.hp).toBe(magikarp.getMaxHp()); + }, + ); + + it.each<{ name: string; move?: MoveId; enemyMove?: MoveId }>([ + { name: "Struggle recoil", move: MoveId.STRUGGLE }, + { name: "Self-induced HP cutting", move: MoveId.BELLY_DRUM }, + { name: "Confusion self-damage", enemyMove: MoveId.CONFUSE_RAY }, + ])("should not prevent damage from $name", async ({ move = MoveId.SPLASH, enemyMove = MoveId.SPLASH }) => { + game.override.confusionActivation(true); await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; + game.move.use(move); + await game.move.forceEnemyMove(enemyMove); + await game.setTurnOrder([BattlerIndex.ENEMY, BattlerIndex.PLAYER]); // Ensure confuse ray goes first + await game.toEndOfTurn(); - game.move.select(MoveId.SPLASH); - - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The player Pokemon (with Magic Guard) has not taken damage from poison - * - The Pokemon's CatchRateMultiplier should be 1.5 - */ - expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp()); - expect(getStatusEffectCatchRateMultiplier(leadPokemon.status!.effect)).toBe(1.5); + const magikarp = game.field.getPlayerPokemon(); + expect(magikarp.hp).toBeLessThan(magikarp.getMaxHp()); }); - it("ability effect should not persist when the ability is replaced", async () => { - game.override.enemyMoveset(MoveId.WORRY_SEED).statusEffect(StatusEffect.POISON); - + it("should preserve toxic turn count and deal appropriate damage when disabled", async () => { + game.override.statusEffect(StatusEffect.TOXIC); await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; + game.move.use(MoveId.SPLASH); + await game.move.forceEnemyMove(MoveId.SPLASH); + await game.toNextTurn(); - game.move.select(MoveId.SPLASH); + const magikarp = game.field.getPlayerPokemon(); + expect(magikarp.hp).toBe(magikarp.getMaxHp()); + expect(magikarp.status?.toxicTurnCount).toBe(1); - await game.phaseInterceptor.to(TurnEndPhase); + // have a few turns pass + game.move.use(MoveId.SPLASH); + await game.toNextTurn(); + game.move.use(MoveId.SPLASH); + await game.toNextTurn(); + game.move.use(MoveId.SPLASH); + await game.toNextTurn(); - /** - * Expect: - * - The player Pokemon (that just lost its Magic Guard ability) has taken damage from poison - */ - expect(leadPokemon.hp).toBeLessThan(leadPokemon.getMaxHp()); + expect(magikarp.status?.toxicTurnCount).toBe(4); + + game.move.use(MoveId.SPLASH); + await game.move.forceEnemyMove(MoveId.GASTRO_ACID); + await game.toNextTurn(); + + expect(magikarp.status?.toxicTurnCount).toBe(5); + expect(magikarp.getHpRatio(true)).toBeCloseTo(11 / 16, 1); }); - it("Magic Guard prevents damage caused by burn but other non-damaging effects are still applied", async () => { - game.override.enemyStatusEffect(StatusEffect.BURN).enemyAbility(AbilityId.MAGIC_GUARD); - + it("should preserve burn physical damage halving & status catch boost", async () => { await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.select(MoveId.SPLASH); + // NB: Burn applies directly to the physical dmg formula, so we can't just check attack here + game.move.use(MoveId.TACKLE); + await game.move.forceEnemyMove(MoveId.WILL_O_WISP); + await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); + await game.toNextTurn(); - const enemyPokemon = game.scene.getEnemyPokemon()!; + const magikarp = game.field.getPlayerPokemon(); + expect(magikarp.hp).toBe(magikarp.getMaxHp()); + expect(magikarp.status?.effect).toBe(StatusEffect.BURN); + expect(getStatusEffectCatchRateMultiplier(magikarp.status!.effect)).toBe(1.5); - await game.phaseInterceptor.to(TurnEndPhase); + // Heal blissey to full & use tackle again + const blissey = game.field.getEnemyPokemon(); + const prevDmg = blissey.getInverseHp(); + blissey.hp = blissey.getMaxHp(); - /** - * Expect: - * - The enemy Pokemon (with Magic Guard) has not taken damage from burn - * - The enemy Pokemon's physical attack damage is halved (TBD) - * - The enemy Pokemon's hypothetical CatchRateMultiplier should be 1.5 - */ - expect(enemyPokemon.hp).toBe(enemyPokemon.getMaxHp()); - expect(getStatusEffectCatchRateMultiplier(enemyPokemon.status!.effect)).toBe(1.5); + game.move.use(MoveId.TACKLE); + await game.toNextTurn(); + + const burntDmg = blissey.getInverseHp(); + expect(burntDmg).toBeCloseTo(toDmgValue(prevDmg / 2), 0); }); - it("Magic Guard prevents damage caused by toxic but other non-damaging effects are still applied", async () => { - game.override.enemyStatusEffect(StatusEffect.TOXIC).enemyAbility(AbilityId.MAGIC_GUARD); - + it("should prevent damage from entry hazards, but not Toxic Spikes poison", async () => { + game.scene.arena.addTag(ArenaTagType.SPIKES, -1, MoveId.SPIKES, 0, ArenaTagSide.PLAYER); + game.scene.arena.addTag(ArenaTagType.TOXIC_SPIKES, -1, MoveId.TOXIC_SPIKES, 0, ArenaTagSide.PLAYER); await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - game.move.select(MoveId.SPLASH); - - const enemyPokemon = game.scene.getEnemyPokemon()!; - - const toxicStartCounter = enemyPokemon.status!.toxicTurnCount; - //should be 0 - - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The enemy Pokemon (with Magic Guard) has not taken damage from toxic - * - The enemy Pokemon's status effect duration should be incremented - * - The enemy Pokemon's hypothetical CatchRateMultiplier should be 1.5 - */ - expect(enemyPokemon.hp).toBe(enemyPokemon.getMaxHp()); - expect(enemyPokemon.status!.toxicTurnCount).toBeGreaterThan(toxicStartCounter); - expect(getStatusEffectCatchRateMultiplier(enemyPokemon.status!.effect)).toBe(1.5); - }); - - it("Magic Guard prevents damage caused by entry hazards", async () => { - //Adds and applies Spikes to both sides of the arena - const newTag = getArenaTag(ArenaTagType.SPIKES, 5, MoveId.SPIKES, 0, 0, ArenaTagSide.BOTH)!; - game.scene.arena.tags.push(newTag); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; - - game.move.select(MoveId.SPLASH); - - const enemyPokemon = game.scene.getEnemyPokemon()!; - - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The player Pokemon (with Magic Guard) has not taken damage from spikes - * - The enemy Pokemon (without Magic Guard) has taken damage from spikes - */ - expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp()); - expect(enemyPokemon.hp).toBeLessThan(enemyPokemon.getMaxHp()); - }); - - it("Magic Guard does not prevent poison from Toxic Spikes", async () => { - //Adds and applies Spikes to both sides of the arena - const playerTag = getArenaTag(ArenaTagType.TOXIC_SPIKES, 5, MoveId.TOXIC_SPIKES, 0, 0, ArenaTagSide.PLAYER)!; - const enemyTag = getArenaTag(ArenaTagType.TOXIC_SPIKES, 5, MoveId.TOXIC_SPIKES, 0, 0, ArenaTagSide.ENEMY)!; - game.scene.arena.tags.push(playerTag); - game.scene.arena.tags.push(enemyTag); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; - - game.move.select(MoveId.SPLASH); - - const enemyPokemon = game.scene.getEnemyPokemon()!; - - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - Both Pokemon gain the poison status effect - * - The player Pokemon (with Magic Guard) has not taken damage from poison - * - The enemy Pokemon (without Magic Guard) has taken damage from poison - */ - expect(leadPokemon.status!.effect).toBe(StatusEffect.POISON); - expect(enemyPokemon.status!.effect).toBe(StatusEffect.POISON); - expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp()); - expect(enemyPokemon.hp).toBeLessThan(enemyPokemon.getMaxHp()); - }); - - it("Magic Guard prevents against damage from volatile status effects", async () => { - await game.classicMode.startBattle([SpeciesId.DUSKULL]); - game.override.moveset([MoveId.CURSE]).enemyAbility(AbilityId.MAGIC_GUARD); - - const leadPokemon = game.scene.getPlayerPokemon()!; - - game.move.select(MoveId.CURSE); - - const enemyPokemon = game.scene.getEnemyPokemon()!; - - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The player Pokemon (with Magic Guard) has cut its HP to inflict curse - * - The enemy Pokemon (with Magic Guard) is cursed - * - The enemy Pokemon (with Magic Guard) does not lose HP from being cursed - */ - expect(leadPokemon.hp).toBeLessThan(leadPokemon.getMaxHp()); - expect(enemyPokemon.getTag(BattlerTagType.CURSED)).not.toBe(undefined); - expect(enemyPokemon.hp).toBe(enemyPokemon.getMaxHp()); - }); - - it("Magic Guard prevents crash damage", async () => { - game.override.moveset([MoveId.HIGH_JUMP_KICK]); - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - - game.move.select(MoveId.HIGH_JUMP_KICK); - await game.move.forceMiss(); - - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The player Pokemon (with Magic Guard) misses High Jump Kick but does not lose HP as a result - */ - expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp()); - }); - - it("Magic Guard prevents damage from recoil", async () => { - game.override.moveset([MoveId.TAKE_DOWN]); - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - - game.move.select(MoveId.TAKE_DOWN); - - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The player Pokemon (with Magic Guard) uses a recoil move but does not lose HP from recoil - */ - expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp()); - }); - - it("Magic Guard does not prevent damage from Struggle's recoil", async () => { - game.override.moveset([MoveId.STRUGGLE]); - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - - game.move.select(MoveId.STRUGGLE); - - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The player Pokemon (with Magic Guard) uses Struggle but does lose HP from Struggle's recoil - */ - expect(leadPokemon.hp).toBeLessThan(leadPokemon.getMaxHp()); - }); - - //This tests different move attributes than the recoil tests above - it("Magic Guard prevents self-damage from attacking moves", async () => { - game.override.moveset([MoveId.STEEL_BEAM]); - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - - game.move.select(MoveId.STEEL_BEAM); - - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The player Pokemon (with Magic Guard) uses a move with an HP cost but does not lose HP from using it - */ - expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp()); - }); - - /* - it("Magic Guard does not prevent self-damage from confusion", async () => { - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - game.move.select(MoveId.CHARM); - - await game.phaseInterceptor.to(TurnEndPhase); - }); -*/ - - it("Magic Guard does not prevent self-damage from non-attacking moves", async () => { - game.override.moveset([MoveId.BELLY_DRUM]); - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - - game.move.select(MoveId.BELLY_DRUM); - - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The player Pokemon (with Magic Guard) uses a non-attacking move with an HP cost and thus loses HP from using it - */ - expect(leadPokemon.hp).toBeLessThan(leadPokemon.getMaxHp()); - }); - - it("Magic Guard prevents damage from abilities with PostTurnHurtIfSleepingAbAttr", async () => { - //Tests the ability Bad Dreams - game.override.statusEffect(StatusEffect.SLEEP); - //enemy pokemon is given Spore just in case player pokemon somehow awakens during test - game.override - .enemyMoveset([MoveId.SPORE, MoveId.SPORE, MoveId.SPORE, MoveId.SPORE]) - .enemyAbility(AbilityId.BAD_DREAMS); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - - game.move.select(MoveId.SPLASH); - - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The player Pokemon (with Magic Guard) should not lose HP due to this ability attribute - * - The player Pokemon is asleep - */ - expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp()); - expect(leadPokemon.status!.effect).toBe(StatusEffect.SLEEP); - }); - - it("Magic Guard prevents damage from abilities with PostFaintContactDamageAbAttr", async () => { - //Tests the abilities Innards Out/Aftermath - game.override.moveset([MoveId.TACKLE]).enemyAbility(AbilityId.AFTERMATH); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - - const enemyPokemon = game.scene.getEnemyPokemon()!; - enemyPokemon.hp = 1; - - game.move.select(MoveId.TACKLE); - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The player Pokemon (with Magic Guard) should not lose HP due to this ability attribute - * - The enemy Pokemon has fainted - */ - expect(enemyPokemon.hp).toBe(0); - expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp()); - }); - - it("Magic Guard prevents damage from abilities with PostDefendContactDamageAbAttr", async () => { - //Tests the abilities Iron Barbs/Rough Skin - game.override.moveset([MoveId.TACKLE]).enemyAbility(AbilityId.IRON_BARBS); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - - const enemyPokemon = game.scene.getEnemyPokemon()!; - - game.move.select(MoveId.TACKLE); - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The player Pokemon (with Magic Guard) should not lose HP due to this ability attribute - * - The player Pokemon's move should have connected - */ - expect(enemyPokemon.hp).toBeLessThan(enemyPokemon.getMaxHp()); - expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp()); - }); - - it("Magic Guard prevents damage from abilities with ReverseDrainAbAttr", async () => { - //Tests the ability Liquid Ooze - game.override.moveset([MoveId.ABSORB]).enemyAbility(AbilityId.LIQUID_OOZE); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - - const leadPokemon = game.scene.getPlayerPokemon()!; - - const enemyPokemon = game.scene.getEnemyPokemon()!; - - game.move.select(MoveId.ABSORB); - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The player Pokemon (with Magic Guard) should not lose HP due to this ability attribute - * - The player Pokemon's move should have connected - */ - expect(enemyPokemon.hp).toBeLessThan(enemyPokemon.getMaxHp()); - expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp()); - }); - - it("Magic Guard prevents HP loss from abilities with PostWeatherLapseDamageAbAttr", async () => { - game.override.passiveAbility(AbilityId.SOLAR_POWER).weather(WeatherType.SUNNY); - - await game.classicMode.startBattle([SpeciesId.MAGIKARP]); - const leadPokemon = game.scene.getPlayerPokemon()!; - game.move.select(MoveId.SPLASH); - await game.phaseInterceptor.to(TurnEndPhase); - - /** - * Expect: - * - The player Pokemon (with Magic Guard) should not lose HP due to this ability attribute - */ - expect(leadPokemon.hp).toBe(leadPokemon.getMaxHp()); + // Magic guard prevented damage but not poison + const player = game.field.getPlayerPokemon(); + expect(player.hp).toBe(player.getMaxHp()); + expect(player.status?.effect).toBe(StatusEffect.POISON); }); }); diff --git a/test/abilities/pastel_veil.test.ts b/test/abilities/pastel_veil.test.ts index 47fdd751931..88f5415524f 100644 --- a/test/abilities/pastel_veil.test.ts +++ b/test/abilities/pastel_veil.test.ts @@ -3,7 +3,6 @@ import { BattlerIndex } from "#enums/battler-index"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { CommandPhase } from "#phases/command-phase"; import { TurnEndPhase } from "#phases/turn-end-phase"; import { GameManager } from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -63,7 +62,6 @@ describe("Abilities - Pastel Veil", () => { await game.phaseInterceptor.to(TurnEndPhase); expect(magikarp.status?.effect).toBe(StatusEffect.POISON); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH); game.doSwitchPokemon(2); await game.phaseInterceptor.to(TurnEndPhase); diff --git a/test/abilities/sand_veil.test.ts b/test/abilities/sand_veil.test.ts index b37901f65c3..2ad9ef7eaa1 100644 --- a/test/abilities/sand_veil.test.ts +++ b/test/abilities/sand_veil.test.ts @@ -4,7 +4,6 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { WeatherType } from "#enums/weather-type"; -import { CommandPhase } from "#phases/command-phase"; import { MoveEffectPhase } from "#phases/move-effect-phase"; import { MoveEndPhase } from "#phases/move-end-phase"; import { GameManager } from "#test/testUtils/gameManager"; @@ -59,9 +58,6 @@ describe("Abilities - Sand Veil", () => { expect(leadPokemon[1].hasAbility(AbilityId.SAND_VEIL)).toBe(false); game.move.select(MoveId.SPLASH); - - await game.phaseInterceptor.to(CommandPhase); - game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(MoveEffectPhase, false); diff --git a/test/abilities/sweet_veil.test.ts b/test/abilities/sweet_veil.test.ts index 97ddb2c5f36..ca98e827c4f 100644 --- a/test/abilities/sweet_veil.test.ts +++ b/test/abilities/sweet_veil.test.ts @@ -3,7 +3,6 @@ import { BattlerIndex } from "#enums/battler-index"; import { BattlerTagType } from "#enums/battler-tag-type"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { CommandPhase } from "#phases/command-phase"; import { TurnEndPhase } from "#phases/turn-end-phase"; import { GameManager } from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -80,7 +79,6 @@ describe("Abilities - Sweet Veil", () => { expect(game.scene.getPlayerField().some(p => !!p.getTag(BattlerTagType.DROWSY))).toBe(true); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH); game.doSwitchPokemon(2); diff --git a/test/battle/battle.test.ts b/test/battle/battle.test.ts index 03e8db3f0c8..7a2365fb6d8 100644 --- a/test/battle/battle.test.ts +++ b/test/battle/battle.test.ts @@ -26,7 +26,7 @@ import { generateStarter } from "#test/testUtils/gameManagerUtils"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -describe("Test Battle Phase", () => { +describe("Phase - Battle Phase", () => { let phaserGame: Phaser.Game; let game: GameManager; @@ -197,47 +197,25 @@ describe("Test Battle Phase", () => { await game.phaseInterceptor.runFrom(SelectGenderPhase).to(SummonPhase); }); - it("2vs1", async () => { - game.override.battleStyle("single"); - game.override.enemySpecies(SpeciesId.MIGHTYENA); - game.override.enemyAbility(AbilityId.HYDRATION); - game.override.ability(AbilityId.HYDRATION); - await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); - expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.phaseManager.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); - }, 20000); + it.each([ + { name: "1v1", double: false, qty: 1 }, + { name: "2v1", double: false, qty: 2 }, + { name: "2v2", double: true, qty: 2 }, + { name: "4v2", double: true, qty: 4 }, + ])("should not crash when starting $name battle", async ({ double, qty }) => { + game.override + .battleStyle(double ? "double" : "single") + .enemySpecies(SpeciesId.MIGHTYENA) + .enemyAbility(AbilityId.HYDRATION) + .ability(AbilityId.HYDRATION); - it("1vs1", async () => { - game.override.battleStyle("single"); - game.override.enemySpecies(SpeciesId.MIGHTYENA); - game.override.enemyAbility(AbilityId.HYDRATION); - game.override.ability(AbilityId.HYDRATION); - await game.classicMode.startBattle([SpeciesId.BLASTOISE]); - expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.phaseManager.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); - }, 20000); + await game.classicMode.startBattle( + [SpeciesId.BLASTOISE, SpeciesId.CHARIZARD, SpeciesId.DARKRAI, SpeciesId.GABITE].slice(0, qty), + ); - it("2vs2", async () => { - game.override.battleStyle("double"); - game.override.enemySpecies(SpeciesId.MIGHTYENA); - game.override.enemyAbility(AbilityId.HYDRATION); - game.override.ability(AbilityId.HYDRATION); - game.override.startingWave(3); - await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.phaseManager.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); - }, 20000); - - it("4vs2", async () => { - game.override.battleStyle("double"); - game.override.enemySpecies(SpeciesId.MIGHTYENA); - game.override.enemyAbility(AbilityId.HYDRATION); - game.override.ability(AbilityId.HYDRATION); - game.override.startingWave(3); - await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD, SpeciesId.DARKRAI, SpeciesId.GABITE]); - expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.phaseManager.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); - }, 20000); + expect(game.scene.phaseManager.getCurrentPhase()).toBeInstanceOf(CommandPhase); + }); it("kill opponent pokemon", async () => { const moveToUse = MoveId.SPLASH; diff --git a/test/final_boss.test.ts b/test/final_boss.test.ts index 59918d28aa5..9dc54490330 100644 --- a/test/final_boss.test.ts +++ b/test/final_boss.test.ts @@ -29,7 +29,6 @@ describe("Final Boss", () => { .startingBiome(BiomeId.END) .criticalHits(false) .enemyMoveset(MoveId.SPLASH) - .moveset([MoveId.SPLASH, MoveId.WILL_O_WISP, MoveId.DRAGON_PULSE]) .startingLevel(10000); }); @@ -63,33 +62,31 @@ describe("Final Boss", () => { expect(game.scene.getEnemyPokemon()!.species.speciesId).not.toBe(SpeciesId.ETERNATUS); }); - it("should not have passive enabled on Eternatus", async () => { + it("should initially spawn in regular form without passive & 4 boss segments", async () => { await game.runToFinalBossEncounter([SpeciesId.BIDOOF], GameModes.CLASSIC); const eternatus = game.scene.getEnemyPokemon()!; + expect(eternatus.formIndex).toBe(0); + expect(eternatus.bossSegments).toBe(4); + expect(eternatus.bossSegmentIndex).toBe(3); expect(eternatus.species.speciesId).toBe(SpeciesId.ETERNATUS); expect(eternatus.hasPassive()).toBe(false); }); it("should change form on direct hit down to last boss fragment", async () => { await game.runToFinalBossEncounter([SpeciesId.KYUREM], GameModes.CLASSIC); - await game.phaseInterceptor.to("CommandPhase"); - // Eternatus phase 1 + // phase 1 const eternatus = game.scene.getEnemyPokemon()!; const phase1Hp = eternatus.getMaxHp(); - expect(eternatus.species.speciesId).toBe(SpeciesId.ETERNATUS); - expect(eternatus.formIndex).toBe(0); - expect(eternatus.bossSegments).toBe(4); - expect(eternatus.bossSegmentIndex).toBe(3); - game.move.select(MoveId.DRAGON_PULSE); + game.move.use(MoveId.DRAGON_PULSE); await game.toNextTurn(); - // Eternatus phase 2: changed form, healed and restored its shields + // Eternatus phase 2: changed form, healed fully and restored its shields expect(eternatus.species.speciesId).toBe(SpeciesId.ETERNATUS); - expect(eternatus.hp).toBeGreaterThan(phase1Hp); expect(eternatus.hp).toBe(eternatus.getMaxHp()); + expect(eternatus.getMaxHp()).toBeGreaterThan(phase1Hp); expect(eternatus.formIndex).toBe(1); expect(eternatus.bossSegments).toBe(5); expect(eternatus.bossSegmentIndex).toBe(4); @@ -100,19 +97,13 @@ describe("Final Boss", () => { it("should change form on status damage down to last boss fragment", async () => { game.override.ability(AbilityId.NO_GUARD); - - await game.runToFinalBossEncounter([SpeciesId.BIDOOF], GameModes.CLASSIC); - await game.phaseInterceptor.to("CommandPhase"); + await game.runToFinalBossEncounter([SpeciesId.SALAZZLE], GameModes.CLASSIC); // Eternatus phase 1 const eternatus = game.scene.getEnemyPokemon()!; const phase1Hp = eternatus.getMaxHp(); - expect(eternatus.species.speciesId).toBe(SpeciesId.ETERNATUS); - expect(eternatus.formIndex).toBe(0); - expect(eternatus.bossSegments).toBe(4); - expect(eternatus.bossSegmentIndex).toBe(3); - game.move.select(MoveId.WILL_O_WISP); + game.move.use(MoveId.WILL_O_WISP); await game.toNextTurn(); expect(eternatus.status?.effect).toBe(StatusEffect.BURN); @@ -120,19 +111,19 @@ describe("Final Boss", () => { const lastShieldHp = Math.ceil(phase1Hp / eternatus.bossSegments); // Stall until the burn is one hit away from breaking the last shield while (eternatus.hp - tickDamage > lastShieldHp) { - game.move.select(MoveId.SPLASH); + game.move.use(MoveId.SPLASH); await game.toNextTurn(); } expect(eternatus.bossSegmentIndex).toBe(1); - game.move.select(MoveId.SPLASH); + game.move.use(MoveId.SPLASH); await game.toNextTurn(); // Eternatus phase 2: changed form, healed and restored its shields expect(eternatus.hp).toBeGreaterThan(phase1Hp); expect(eternatus.hp).toBe(eternatus.getMaxHp()); - expect(eternatus.status).toBeFalsy(); + expect(eternatus.status?.effect).toBeUndefined(); expect(eternatus.formIndex).toBe(1); expect(eternatus.bossSegments).toBe(5); expect(eternatus.bossSegmentIndex).toBe(4); diff --git a/test/moves/aromatherapy.test.ts b/test/moves/aromatherapy.test.ts index d18f886bff2..39850c4f841 100644 --- a/test/moves/aromatherapy.test.ts +++ b/test/moves/aromatherapy.test.ts @@ -2,7 +2,6 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { CommandPhase } from "#phases/command-phase"; import { GameManager } from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -40,7 +39,6 @@ describe("Moves - Aromatherapy", () => { vi.spyOn(partyPokemon, "resetStatus"); game.move.select(MoveId.AROMATHERAPY, 0); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); @@ -62,7 +60,6 @@ describe("Moves - Aromatherapy", () => { vi.spyOn(rightOpp, "resetStatus"); game.move.select(MoveId.AROMATHERAPY, 0); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); @@ -86,7 +83,6 @@ describe("Moves - Aromatherapy", () => { vi.spyOn(partyPokemon, "resetStatus"); game.move.select(MoveId.AROMATHERAPY, 0); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); diff --git a/test/moves/assist.test.ts b/test/moves/assist.test.ts index 6ef8946eaf8..eff153534dd 100644 --- a/test/moves/assist.test.ts +++ b/test/moves/assist.test.ts @@ -4,7 +4,6 @@ import { MoveId } from "#enums/move-id"; import { MoveResult } from "#enums/move-result"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { CommandPhase } from "#phases/command-phase"; import { GameManager } from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -80,7 +79,6 @@ describe("Moves - Assist", () => { // Player uses Sketch to copy Swords Dance, Player_2 stalls a turn. Player will attempt Assist and should have no usable moves await game.toNextTurn(); game.move.select(MoveId.ASSIST, 0); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.PROTECT, 1); await game.toNextTurn(); @@ -96,7 +94,6 @@ describe("Moves - Assist", () => { game.move.changeMoveset(shuckle, [MoveId.ASSIST, MoveId.SKETCH, MoveId.PROTECT, MoveId.DRAGON_TAIL]); game.move.select(MoveId.ASSIST, 0); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.ASSIST, 1); await game.toNextTurn(); diff --git a/test/moves/crafty_shield.test.ts b/test/moves/crafty_shield.test.ts index b9dbac76b90..98c0dfd7c9a 100644 --- a/test/moves/crafty_shield.test.ts +++ b/test/moves/crafty_shield.test.ts @@ -4,7 +4,6 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { BerryPhase } from "#phases/berry-phase"; -import { CommandPhase } from "#phases/command-phase"; import { GameManager } from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; @@ -42,9 +41,6 @@ describe("Moves - Crafty Shield", () => { const leadPokemon = game.scene.getPlayerField(); game.move.select(MoveId.CRAFTY_SHIELD); - - await game.phaseInterceptor.to(CommandPhase); - game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(BerryPhase, false); @@ -60,9 +56,6 @@ describe("Moves - Crafty Shield", () => { const leadPokemon = game.scene.getPlayerField(); game.move.select(MoveId.CRAFTY_SHIELD); - - await game.phaseInterceptor.to(CommandPhase); - game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(BerryPhase, false); @@ -78,9 +71,6 @@ describe("Moves - Crafty Shield", () => { const leadPokemon = game.scene.getPlayerField(); game.move.select(MoveId.CRAFTY_SHIELD); - - await game.phaseInterceptor.to(CommandPhase); - game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(BerryPhase, false); @@ -94,9 +84,6 @@ describe("Moves - Crafty Shield", () => { const leadPokemon = game.scene.getPlayerField(); game.move.select(MoveId.CRAFTY_SHIELD); - - await game.phaseInterceptor.to(CommandPhase); - game.move.select(MoveId.SWORDS_DANCE, 1); await game.phaseInterceptor.to(BerryPhase, false); diff --git a/test/moves/freezy_frost.test.ts b/test/moves/freezy_frost.test.ts index 9c917ee0854..9cf2f38b286 100644 --- a/test/moves/freezy_frost.test.ts +++ b/test/moves/freezy_frost.test.ts @@ -3,7 +3,6 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { CommandPhase } from "#phases/command-phase"; import { GameManager } from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -77,7 +76,6 @@ describe("Moves - Freezy Frost", () => { const [leftOpp, rightOpp] = game.scene.getEnemyField(); game.move.select(MoveId.HOWL, 0); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); @@ -87,7 +85,6 @@ describe("Moves - Freezy Frost", () => { expect(rightOpp.getStatStage(Stat.ATK)).toBe(2); game.move.select(MoveId.FREEZY_FROST, 0, leftOpp.getBattlerIndex()); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); diff --git a/test/moves/heal_bell.test.ts b/test/moves/heal_bell.test.ts index b6d757300ad..e7f6548713a 100644 --- a/test/moves/heal_bell.test.ts +++ b/test/moves/heal_bell.test.ts @@ -2,7 +2,6 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { CommandPhase } from "#phases/command-phase"; import { GameManager } from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -40,7 +39,6 @@ describe("Moves - Heal Bell", () => { vi.spyOn(partyPokemon, "resetStatus"); game.move.select(MoveId.HEAL_BELL, 0); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); @@ -62,7 +60,6 @@ describe("Moves - Heal Bell", () => { vi.spyOn(rightOpp, "resetStatus"); game.move.select(MoveId.HEAL_BELL, 0); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); @@ -86,7 +83,6 @@ describe("Moves - Heal Bell", () => { vi.spyOn(partyPokemon, "resetStatus"); game.move.select(MoveId.HEAL_BELL, 0); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); diff --git a/test/moves/lunar_blessing.test.ts b/test/moves/lunar_blessing.test.ts index 5d6bc44201d..481156748e3 100644 --- a/test/moves/lunar_blessing.test.ts +++ b/test/moves/lunar_blessing.test.ts @@ -2,7 +2,6 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { CommandPhase } from "#phases/command-phase"; import { GameManager } from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -47,7 +46,6 @@ describe("Moves - Lunar Blessing", () => { vi.spyOn(rightPlayer, "heal"); game.move.select(MoveId.LUNAR_BLESSING, 0); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); @@ -67,7 +65,6 @@ describe("Moves - Lunar Blessing", () => { vi.spyOn(rightPlayer, "resetStatus"); game.move.select(MoveId.LUNAR_BLESSING, 0); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); diff --git a/test/moves/lunar_dance.test.ts b/test/moves/lunar_dance.test.ts index c49baad3e8f..3fcf953a37c 100644 --- a/test/moves/lunar_dance.test.ts +++ b/test/moves/lunar_dance.test.ts @@ -2,7 +2,6 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { CommandPhase } from "#phases/command-phase"; import { GameManager } from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -40,7 +39,6 @@ describe("Moves - Lunar Dance", () => { game.move.select(MoveId.SPLASH, 0); game.move.select(MoveId.SPLASH, 1); - await game.phaseInterceptor.to(CommandPhase); await game.toNextTurn(); // Bulbasaur should still be burned and have used a PP for splash and not at max hp @@ -51,7 +49,6 @@ describe("Moves - Lunar Dance", () => { // Switch out Bulbasaur for Rattata so we can swtich bulbasaur back in with lunar dance game.doSwitchPokemon(2); game.move.select(MoveId.SPLASH, 1); - await game.phaseInterceptor.to(CommandPhase); await game.toNextTurn(); game.move.select(MoveId.SPLASH, 0); @@ -67,7 +64,6 @@ describe("Moves - Lunar Dance", () => { game.move.select(MoveId.SPLASH, 0); game.move.select(MoveId.LUNAR_DANCE); - await game.phaseInterceptor.to(CommandPhase); await game.toNextTurn(); // Using Lunar dance again should fail because nothing in party and rattata should be alive diff --git a/test/moves/magnet_rise.test.ts b/test/moves/magnet_rise.test.ts index 0fc96fa1a05..da76c178be8 100644 --- a/test/moves/magnet_rise.test.ts +++ b/test/moves/magnet_rise.test.ts @@ -1,7 +1,5 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { CommandPhase } from "#phases/command-phase"; -import { TurnEndPhase } from "#phases/turn-end-phase"; import { GameManager } from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; @@ -9,7 +7,6 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; describe("Moves - Magnet Rise", () => { let phaserGame: Phaser.Game; let game: GameManager; - const moveToUse = MoveId.MAGNET_RISE; beforeAll(() => { phaserGame = new Phaser.Game({ @@ -25,38 +22,36 @@ describe("Moves - Magnet Rise", () => { game = new GameManager(phaserGame); game.override .battleStyle("single") - .starterSpecies(SpeciesId.MAGNEZONE) .enemySpecies(SpeciesId.RATTATA) - .enemyMoveset(MoveId.DRILL_RUN) + .enemyMoveset(MoveId.EARTHQUAKE) .criticalHits(false) - .enemyLevel(1) - .moveset([moveToUse, MoveId.SPLASH, MoveId.GRAVITY, MoveId.BATON_PASS]); + .enemyLevel(1); }); - it("MAGNET RISE", async () => { - await game.classicMode.startBattle(); + it("should make the user immune to ground-type moves", async () => { + await game.classicMode.startBattle([SpeciesId.MAGNEZONE]); - const startingHp = game.scene.getPlayerParty()[0].hp; - game.move.select(moveToUse); - await game.phaseInterceptor.to(TurnEndPhase); - const finalHp = game.scene.getPlayerParty()[0].hp; - const hpLost = finalHp - startingHp; - expect(hpLost).toBe(0); + game.move.use(MoveId.MAGNET_RISE); + await game.toEndOfTurn(); + + const magnezone = game.field.getPlayerPokemon(); + expect(magnezone.hp).toBe(magnezone.getMaxHp()); + expect(magnezone.isGrounded()).toBe(false); }); - it("MAGNET RISE - Gravity", async () => { - await game.classicMode.startBattle(); + it("should be removed by gravity", async () => { + await game.classicMode.startBattle([SpeciesId.MAGNEZONE]); - const startingHp = game.scene.getPlayerParty()[0].hp; - game.move.select(moveToUse); - await game.phaseInterceptor.to(CommandPhase); - let finalHp = game.scene.getPlayerParty()[0].hp; - let hpLost = finalHp - startingHp; - expect(hpLost).toBe(0); - game.move.select(MoveId.GRAVITY); - await game.phaseInterceptor.to(TurnEndPhase); - finalHp = game.scene.getPlayerParty()[0].hp; - hpLost = finalHp - startingHp; - expect(hpLost).not.toBe(0); + game.move.use(MoveId.MAGNET_RISE); + await game.toNextTurn(); + + const magnezone = game.field.getPlayerPokemon(); + expect(magnezone.hp).toBe(magnezone.getMaxHp()); + + game.move.use(MoveId.GRAVITY); + await game.toEndOfTurn(); + + expect(magnezone.hp).toBeLessThan(magnezone.getMaxHp()); + expect(magnezone.isGrounded()).toBe(true); }); }); diff --git a/test/moves/mat_block.test.ts b/test/moves/mat_block.test.ts index edbe465e500..954e2a8135d 100644 --- a/test/moves/mat_block.test.ts +++ b/test/moves/mat_block.test.ts @@ -42,9 +42,6 @@ describe("Moves - Mat Block", () => { const leadPokemon = game.scene.getPlayerField(); game.move.select(MoveId.MAT_BLOCK); - - await game.phaseInterceptor.to(CommandPhase); - game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(BerryPhase, false); @@ -60,9 +57,6 @@ describe("Moves - Mat Block", () => { const leadPokemon = game.scene.getPlayerField(); game.move.select(MoveId.MAT_BLOCK); - - await game.phaseInterceptor.to(CommandPhase); - game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(BerryPhase, false); @@ -76,7 +70,6 @@ describe("Moves - Mat Block", () => { const leadPokemon = game.scene.getPlayerField(); game.move.select(MoveId.SPLASH); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(TurnEndPhase); @@ -85,7 +78,6 @@ describe("Moves - Mat Block", () => { await game.phaseInterceptor.to(CommandPhase, false); game.move.select(MoveId.MAT_BLOCK); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.MAT_BLOCK, 1); await game.phaseInterceptor.to(BerryPhase, false); diff --git a/test/moves/metronome.test.ts b/test/moves/metronome.test.ts index 9a9fcdff04a..8ca9e63582e 100644 --- a/test/moves/metronome.test.ts +++ b/test/moves/metronome.test.ts @@ -9,7 +9,6 @@ import { MoveUseMode } from "#enums/move-use-mode"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import type { RandomMoveAttr } from "#moves/move"; -import { CommandPhase } from "#phases/command-phase"; import { GameManager } from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -125,7 +124,6 @@ describe("Moves - Metronome", () => { vi.spyOn(randomMoveAttr, "getMoveOverride").mockReturnValue(MoveId.AROMATIC_MIST); game.move.select(MoveId.METRONOME, 0); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); @@ -148,6 +146,6 @@ describe("Moves - Metronome", () => { const hasFled = enemyPokemon.switchOutStatus; expect(!isVisible && hasFled).toBe(true); - await game.phaseInterceptor.to("CommandPhase"); + await game.toNextTurn(); }); }); diff --git a/test/moves/rollout.test.ts b/test/moves/rollout.test.ts index 46c53b05c6c..eed61f82ab4 100644 --- a/test/moves/rollout.test.ts +++ b/test/moves/rollout.test.ts @@ -2,7 +2,6 @@ import { allMoves } from "#data/data-lists"; import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; -import { CommandPhase } from "#phases/command-phase"; import { GameManager } from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -57,8 +56,7 @@ describe("Moves - Rollout", () => { for (let i = 0; i < turns; i++) { game.move.select(MoveId.ROLLOUT); - await game.phaseInterceptor.to(CommandPhase); - + await game.toNextTurn(); dmgHistory.push(previousHp - enemyPkm.hp); previousHp = enemyPkm.hp; } diff --git a/test/moves/sparkly_swirl.test.ts b/test/moves/sparkly_swirl.test.ts index b81bda66c56..d58b6efe990 100644 --- a/test/moves/sparkly_swirl.test.ts +++ b/test/moves/sparkly_swirl.test.ts @@ -3,7 +3,6 @@ import { AbilityId } from "#enums/ability-id"; import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { StatusEffect } from "#enums/status-effect"; -import { CommandPhase } from "#phases/command-phase"; import { GameManager } from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -44,7 +43,6 @@ describe("Moves - Sparkly Swirl", () => { vi.spyOn(partyPokemon, "resetStatus"); game.move.select(MoveId.SPARKLY_SWIRL, 0, leftOpp.getBattlerIndex()); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); @@ -66,7 +64,6 @@ describe("Moves - Sparkly Swirl", () => { vi.spyOn(rightOpp, "resetStatus"); game.move.select(MoveId.SPARKLY_SWIRL, 0, leftOpp.getBattlerIndex()); - await game.phaseInterceptor.to(CommandPhase); game.move.select(MoveId.SPLASH, 1); await game.toNextTurn(); diff --git a/test/moves/stockpile.test.ts b/test/moves/stockpile.test.ts index d2465446ff6..efc1757738a 100644 --- a/test/moves/stockpile.test.ts +++ b/test/moves/stockpile.test.ts @@ -4,7 +4,6 @@ import { MoveId } from "#enums/move-id"; import { MoveResult } from "#enums/move-result"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; -import { CommandPhase } from "#phases/command-phase"; import { TurnInitPhase } from "#phases/turn-init-phase"; import { GameManager } from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -50,12 +49,8 @@ describe("Moves - Stockpile", () => { // use Stockpile four times for (let i = 0; i < 4; i++) { - if (i !== 0) { - await game.phaseInterceptor.to(CommandPhase); - } - game.move.select(MoveId.STOCKPILE); - await game.phaseInterceptor.to(TurnInitPhase); + await game.toNextTurn(); const stockpilingTag = user.getTag(StockpilingTag)!; @@ -101,9 +96,6 @@ describe("Moves - Stockpile", () => { expect(user.getStatStage(Stat.DEF)).toBe(6); expect(user.getStatStage(Stat.SPDEF)).toBe(6); - // do it again, just for good measure - await game.phaseInterceptor.to(CommandPhase); - game.move.select(MoveId.STOCKPILE); await game.phaseInterceptor.to(TurnInitPhase); diff --git a/test/moves/wide_guard.test.ts b/test/moves/wide_guard.test.ts index 8f17938b02a..7de1faea900 100644 --- a/test/moves/wide_guard.test.ts +++ b/test/moves/wide_guard.test.ts @@ -3,7 +3,6 @@ import { MoveId } from "#enums/move-id"; import { SpeciesId } from "#enums/species-id"; import { Stat } from "#enums/stat"; import { BerryPhase } from "#phases/berry-phase"; -import { CommandPhase } from "#phases/command-phase"; import { GameManager } from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; @@ -41,9 +40,6 @@ describe("Moves - Wide Guard", () => { const leadPokemon = game.scene.getPlayerField(); game.move.select(MoveId.WIDE_GUARD); - - await game.phaseInterceptor.to(CommandPhase); - game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(BerryPhase, false); @@ -59,9 +55,6 @@ describe("Moves - Wide Guard", () => { const leadPokemon = game.scene.getPlayerField(); game.move.select(MoveId.WIDE_GUARD); - - await game.phaseInterceptor.to(CommandPhase); - game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(BerryPhase, false); @@ -77,9 +70,6 @@ describe("Moves - Wide Guard", () => { const leadPokemon = game.scene.getPlayerField(); game.move.select(MoveId.WIDE_GUARD); - - await game.phaseInterceptor.to(CommandPhase); - game.move.select(MoveId.SPLASH, 1); await game.phaseInterceptor.to(BerryPhase, false); @@ -96,9 +86,6 @@ describe("Moves - Wide Guard", () => { const enemyPokemon = game.scene.getEnemyField(); game.move.select(MoveId.WIDE_GUARD); - - await game.phaseInterceptor.to(CommandPhase); - game.move.select(MoveId.SURF, 1); await game.phaseInterceptor.to(BerryPhase, false); diff --git a/test/mystery-encounter/encounters/fun-and-games-encounter.test.ts b/test/mystery-encounter/encounters/fun-and-games-encounter.test.ts index 6a3aa71ad22..43102cbc80d 100644 --- a/test/mystery-encounter/encounters/fun-and-games-encounter.test.ts +++ b/test/mystery-encounter/encounters/fun-and-games-encounter.test.ts @@ -154,11 +154,11 @@ describe("Fun And Games! - Mystery Encounter", () => { // Turn 1 (game.scene.phaseManager.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, 0, MoveUseMode.NORMAL); - await game.phaseInterceptor.to(CommandPhase); + await game.toNextTurn(); // Turn 2 (game.scene.phaseManager.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, 0, MoveUseMode.NORMAL); - await game.phaseInterceptor.to(CommandPhase); + await game.toNextTurn(); // Turn 3 (game.scene.phaseManager.getCurrentPhase() as CommandPhase).handleCommand(Command.FIGHT, 0, MoveUseMode.NORMAL); diff --git a/test/mystery-encounter/encounters/the-winstrate-challenge-encounter.test.ts b/test/mystery-encounter/encounters/the-winstrate-challenge-encounter.test.ts index 078b278dd19..0541826e569 100644 --- a/test/mystery-encounter/encounters/the-winstrate-challenge-encounter.test.ts +++ b/test/mystery-encounter/encounters/the-winstrate-challenge-encounter.test.ts @@ -372,6 +372,6 @@ async function skipBattleToNextBattle(game: GameManager, isFinalBattle = false) if (isFinalBattle) { await game.phaseInterceptor.to(MysteryEncounterRewardsPhase); } else { - await game.phaseInterceptor.to(CommandPhase); + await game.toNextTurn(); } } diff --git a/test/testUtils/gameManager.ts b/test/testUtils/gameManager.ts index dc5704509df..543c4df9508 100644 --- a/test/testUtils/gameManager.ts +++ b/test/testUtils/gameManager.ts @@ -202,7 +202,6 @@ export class GameManager { * @param mode - The {@linkcode GameModes} to spawn the final boss encounter in. */ async runToFinalBossEncounter(species: SpeciesId[], mode: GameModes) { - console.log("===to final boss encounter==="); await this.runToTitle(); this.onNextPrompt("TitlePhase", UiMode.TITLE, () => { @@ -220,8 +219,8 @@ export class GameManager { this.removeEnemyHeldItems(); } - await this.phaseInterceptor.to(EncounterPhase); - console.log("===finished run to final boss encounter==="); + await this.phaseInterceptor.to("CommandPhase", false); + console.log("==================[Final Boss Encounter]=================="); } /** diff --git a/test/testUtils/helpers/overridesHelper.ts b/test/testUtils/helpers/overridesHelper.ts index 412e60942db..13e3dcc2f09 100644 --- a/test/testUtils/helpers/overridesHelper.ts +++ b/test/testUtils/helpers/overridesHelper.ts @@ -228,9 +228,9 @@ export class OverridesHelper extends GameManagerHelper { } /** - * Override the player pokemon's {@linkcode StatusEffect | status-effect} + * Override the player pokemon's initial {@linkcode StatusEffect | status-effect}, * @param statusEffect - The {@linkcode StatusEffect | status-effect} to set - * @returns + * @returns `this` */ public statusEffect(statusEffect: StatusEffect): this { vi.spyOn(Overrides, "STATUS_OVERRIDE", "get").mockReturnValue(statusEffect); @@ -494,9 +494,9 @@ export class OverridesHelper extends GameManagerHelper { } /** - * Override the enemy {@linkcode StatusEffect | status-effect} for enemy pokemon + * Override the enemy pokemon's initial {@linkcode StatusEffect | status-effect}. * @param statusEffect - The {@linkcode StatusEffect | status-effect} to set - * @returns + * @returns `this` */ public enemyStatusEffect(statusEffect: StatusEffect): this { vi.spyOn(Overrides, "OPP_STATUS_OVERRIDE", "get").mockReturnValue(statusEffect);