diff --git a/public/audio/bgm/abyss.mp3 b/public/audio/bgm/abyss.mp3 index a03392da468..08882ac7e09 100644 Binary files a/public/audio/bgm/abyss.mp3 and b/public/audio/bgm/abyss.mp3 differ diff --git a/public/audio/bgm/badlands.mp3 b/public/audio/bgm/badlands.mp3 index 5cf61c5d330..386cf09c6a3 100644 Binary files a/public/audio/bgm/badlands.mp3 and b/public/audio/bgm/badlands.mp3 differ diff --git a/public/audio/bgm/battle_alola_champion.mp3 b/public/audio/bgm/battle_alola_champion.mp3 index aae52cd7137..9fdefa52414 100644 Binary files a/public/audio/bgm/battle_alola_champion.mp3 and b/public/audio/bgm/battle_alola_champion.mp3 differ diff --git a/public/audio/bgm/battle_alola_elite.mp3 b/public/audio/bgm/battle_alola_elite.mp3 index f143ab951b4..2d595c25f1e 100644 Binary files a/public/audio/bgm/battle_alola_elite.mp3 and b/public/audio/bgm/battle_alola_elite.mp3 differ diff --git a/public/audio/bgm/battle_aqua_magma_boss.mp3 b/public/audio/bgm/battle_aqua_magma_boss.mp3 index 1b9e6057cfd..1bee013e5c5 100644 Binary files a/public/audio/bgm/battle_aqua_magma_boss.mp3 and b/public/audio/bgm/battle_aqua_magma_boss.mp3 differ diff --git a/public/audio/bgm/battle_aqua_magma_grunt.mp3 b/public/audio/bgm/battle_aqua_magma_grunt.mp3 index ddc0cc47bb3..019d7d40e35 100644 Binary files a/public/audio/bgm/battle_aqua_magma_grunt.mp3 and b/public/audio/bgm/battle_aqua_magma_grunt.mp3 differ diff --git a/public/audio/bgm/battle_bb_elite.mp3 b/public/audio/bgm/battle_bb_elite.mp3 index ea4df3cd40e..64420ab3b96 100644 Binary files a/public/audio/bgm/battle_bb_elite.mp3 and b/public/audio/bgm/battle_bb_elite.mp3 differ diff --git a/public/audio/bgm/battle_champion_alder.mp3 b/public/audio/bgm/battle_champion_alder.mp3 index fd87c02110c..001d442c461 100644 Binary files a/public/audio/bgm/battle_champion_alder.mp3 and b/public/audio/bgm/battle_champion_alder.mp3 differ diff --git a/public/audio/bgm/battle_champion_geeta.mp3 b/public/audio/bgm/battle_champion_geeta.mp3 index ce2b4b7d99a..4deb395e1d1 100644 Binary files a/public/audio/bgm/battle_champion_geeta.mp3 and b/public/audio/bgm/battle_champion_geeta.mp3 differ diff --git a/public/audio/bgm/battle_champion_iris.mp3 b/public/audio/bgm/battle_champion_iris.mp3 index 336e8651e8a..e412925cebc 100644 Binary files a/public/audio/bgm/battle_champion_iris.mp3 and b/public/audio/bgm/battle_champion_iris.mp3 differ diff --git a/public/audio/bgm/battle_champion_kieran.mp3 b/public/audio/bgm/battle_champion_kieran.mp3 index edac702925a..d6896e401a3 100644 Binary files a/public/audio/bgm/battle_champion_kieran.mp3 and b/public/audio/bgm/battle_champion_kieran.mp3 differ diff --git a/public/audio/bgm/battle_champion_nemona.mp3 b/public/audio/bgm/battle_champion_nemona.mp3 index 76c6d88afc2..9174fca4284 100644 Binary files a/public/audio/bgm/battle_champion_nemona.mp3 and b/public/audio/bgm/battle_champion_nemona.mp3 differ diff --git a/public/audio/bgm/battle_final.mp3 b/public/audio/bgm/battle_final.mp3 index c5e29687994..31a79f5eaee 100644 Binary files a/public/audio/bgm/battle_final.mp3 and b/public/audio/bgm/battle_final.mp3 differ diff --git a/public/audio/bgm/battle_final_encounter.mp3 b/public/audio/bgm/battle_final_encounter.mp3 index 2fe22c12368..a0fe790e433 100644 Binary files a/public/audio/bgm/battle_final_encounter.mp3 and b/public/audio/bgm/battle_final_encounter.mp3 differ diff --git a/public/audio/bgm/battle_flare_boss.mp3 b/public/audio/bgm/battle_flare_boss.mp3 index 36793e09bb7..fd2e2a544d9 100644 Binary files a/public/audio/bgm/battle_flare_boss.mp3 and b/public/audio/bgm/battle_flare_boss.mp3 differ diff --git a/public/audio/bgm/battle_flare_grunt.mp3 b/public/audio/bgm/battle_flare_grunt.mp3 index 323f7367424..7e2805f8675 100644 Binary files a/public/audio/bgm/battle_flare_grunt.mp3 and b/public/audio/bgm/battle_flare_grunt.mp3 differ diff --git a/public/audio/bgm/battle_galactic_boss.mp3 b/public/audio/bgm/battle_galactic_boss.mp3 index b531b84e135..3d6c624130e 100644 Binary files a/public/audio/bgm/battle_galactic_boss.mp3 and b/public/audio/bgm/battle_galactic_boss.mp3 differ diff --git a/public/audio/bgm/battle_galactic_grunt.mp3 b/public/audio/bgm/battle_galactic_grunt.mp3 index 178106e9297..17d8295c50c 100644 Binary files a/public/audio/bgm/battle_galactic_grunt.mp3 and b/public/audio/bgm/battle_galactic_grunt.mp3 differ diff --git a/public/audio/bgm/battle_galar_champion.mp3 b/public/audio/bgm/battle_galar_champion.mp3 index 6b28738bb4f..01e089de9d2 100644 Binary files a/public/audio/bgm/battle_galar_champion.mp3 and b/public/audio/bgm/battle_galar_champion.mp3 differ diff --git a/public/audio/bgm/battle_galar_elite.mp3 b/public/audio/bgm/battle_galar_elite.mp3 index 04589a44990..5074172310d 100644 Binary files a/public/audio/bgm/battle_galar_elite.mp3 and b/public/audio/bgm/battle_galar_elite.mp3 differ diff --git a/public/audio/bgm/battle_galar_gym.mp3 b/public/audio/bgm/battle_galar_gym.mp3 index 95c63c5fb66..539b389bb3a 100644 Binary files a/public/audio/bgm/battle_galar_gym.mp3 and b/public/audio/bgm/battle_galar_gym.mp3 differ diff --git a/public/audio/bgm/battle_hoenn_champion.mp3 b/public/audio/bgm/battle_hoenn_champion.mp3 index 726149bebf0..37fd25b6a7b 100644 Binary files a/public/audio/bgm/battle_hoenn_champion.mp3 and b/public/audio/bgm/battle_hoenn_champion.mp3 differ diff --git a/public/audio/bgm/battle_hoenn_elite.mp3 b/public/audio/bgm/battle_hoenn_elite.mp3 index 60ed62692e2..798d8c34241 100644 Binary files a/public/audio/bgm/battle_hoenn_elite.mp3 and b/public/audio/bgm/battle_hoenn_elite.mp3 differ diff --git a/public/audio/bgm/battle_hoenn_gym.mp3 b/public/audio/bgm/battle_hoenn_gym.mp3 index df4333c1a80..02b36ebefea 100644 Binary files a/public/audio/bgm/battle_hoenn_gym.mp3 and b/public/audio/bgm/battle_hoenn_gym.mp3 differ diff --git a/public/audio/bgm/battle_johto_champion.mp3 b/public/audio/bgm/battle_johto_champion.mp3 index 3540937e416..dcc64a13502 100644 Binary files a/public/audio/bgm/battle_johto_champion.mp3 and b/public/audio/bgm/battle_johto_champion.mp3 differ diff --git a/public/audio/bgm/battle_johto_gym.mp3 b/public/audio/bgm/battle_johto_gym.mp3 index 09302b8b7b3..6b9a51b5401 100644 Binary files a/public/audio/bgm/battle_johto_gym.mp3 and b/public/audio/bgm/battle_johto_gym.mp3 differ diff --git a/public/audio/bgm/battle_kalos_champion.mp3 b/public/audio/bgm/battle_kalos_champion.mp3 index 25a8be91f3f..eab36818e27 100644 Binary files a/public/audio/bgm/battle_kalos_champion.mp3 and b/public/audio/bgm/battle_kalos_champion.mp3 differ diff --git a/public/audio/bgm/battle_kalos_elite.mp3 b/public/audio/bgm/battle_kalos_elite.mp3 index c188edf1ee9..3c4d2dfed02 100644 Binary files a/public/audio/bgm/battle_kalos_elite.mp3 and b/public/audio/bgm/battle_kalos_elite.mp3 differ diff --git a/public/audio/bgm/battle_kalos_gym.mp3 b/public/audio/bgm/battle_kalos_gym.mp3 index fe207dea108..46c3fd04eb7 100644 Binary files a/public/audio/bgm/battle_kalos_gym.mp3 and b/public/audio/bgm/battle_kalos_gym.mp3 differ diff --git a/public/audio/bgm/battle_kanto_champion.mp3 b/public/audio/bgm/battle_kanto_champion.mp3 index a558985c44b..a98c3a3c0da 100644 Binary files a/public/audio/bgm/battle_kanto_champion.mp3 and b/public/audio/bgm/battle_kanto_champion.mp3 differ diff --git a/public/audio/bgm/battle_kanto_gym.mp3 b/public/audio/bgm/battle_kanto_gym.mp3 index 32d0e4dc5f7..82c705fc05a 100644 Binary files a/public/audio/bgm/battle_kanto_gym.mp3 and b/public/audio/bgm/battle_kanto_gym.mp3 differ diff --git a/public/audio/bgm/battle_legendary_arceus.mp3 b/public/audio/bgm/battle_legendary_arceus.mp3 index 696d099e714..ee060912ddf 100644 Binary files a/public/audio/bgm/battle_legendary_arceus.mp3 and b/public/audio/bgm/battle_legendary_arceus.mp3 differ diff --git a/public/audio/bgm/battle_legendary_birds_galar.mp3 b/public/audio/bgm/battle_legendary_birds_galar.mp3 index 3305ba61fa7..807a38fe095 100644 Binary files a/public/audio/bgm/battle_legendary_birds_galar.mp3 and b/public/audio/bgm/battle_legendary_birds_galar.mp3 differ diff --git a/public/audio/bgm/battle_legendary_calyrex.mp3 b/public/audio/bgm/battle_legendary_calyrex.mp3 index 46acc7df7b4..7fd44b5e9c6 100644 Binary files a/public/audio/bgm/battle_legendary_calyrex.mp3 and b/public/audio/bgm/battle_legendary_calyrex.mp3 differ diff --git a/public/audio/bgm/battle_legendary_deoxys.mp3 b/public/audio/bgm/battle_legendary_deoxys.mp3 index 3d18b2a897a..351b4bb02b4 100644 Binary files a/public/audio/bgm/battle_legendary_deoxys.mp3 and b/public/audio/bgm/battle_legendary_deoxys.mp3 differ diff --git a/public/audio/bgm/battle_legendary_dia_pal.mp3 b/public/audio/bgm/battle_legendary_dia_pal.mp3 index 0b289e2887b..4cb361933fc 100644 Binary files a/public/audio/bgm/battle_legendary_dia_pal.mp3 and b/public/audio/bgm/battle_legendary_dia_pal.mp3 differ diff --git a/public/audio/bgm/battle_legendary_dusk_dawn.mp3 b/public/audio/bgm/battle_legendary_dusk_dawn.mp3 index 523f4f151cc..b7340af5d4b 100644 Binary files a/public/audio/bgm/battle_legendary_dusk_dawn.mp3 and b/public/audio/bgm/battle_legendary_dusk_dawn.mp3 differ diff --git a/public/audio/bgm/battle_legendary_entei.mp3 b/public/audio/bgm/battle_legendary_entei.mp3 index f087c4f872b..993a513689e 100644 Binary files a/public/audio/bgm/battle_legendary_entei.mp3 and b/public/audio/bgm/battle_legendary_entei.mp3 differ diff --git a/public/audio/bgm/battle_legendary_giratina.mp3 b/public/audio/bgm/battle_legendary_giratina.mp3 index 429578ef980..5b9894fc346 100644 Binary files a/public/audio/bgm/battle_legendary_giratina.mp3 and b/public/audio/bgm/battle_legendary_giratina.mp3 differ diff --git a/public/audio/bgm/battle_legendary_glas_spec.mp3 b/public/audio/bgm/battle_legendary_glas_spec.mp3 index 7fbf881ef5f..a11e9c0dc1b 100644 Binary files a/public/audio/bgm/battle_legendary_glas_spec.mp3 and b/public/audio/bgm/battle_legendary_glas_spec.mp3 differ diff --git a/public/audio/bgm/battle_legendary_gro_kyo.mp3 b/public/audio/bgm/battle_legendary_gro_kyo.mp3 index c71f1743597..49ecc6b0496 100644 Binary files a/public/audio/bgm/battle_legendary_gro_kyo.mp3 and b/public/audio/bgm/battle_legendary_gro_kyo.mp3 differ diff --git a/public/audio/bgm/battle_legendary_ho_oh.mp3 b/public/audio/bgm/battle_legendary_ho_oh.mp3 index 115050f4bd5..ae41e2196be 100644 Binary files a/public/audio/bgm/battle_legendary_ho_oh.mp3 and b/public/audio/bgm/battle_legendary_ho_oh.mp3 differ diff --git a/public/audio/bgm/battle_legendary_kanto.mp3 b/public/audio/bgm/battle_legendary_kanto.mp3 index 7a3c466ca49..aa7cfdec1c5 100644 Binary files a/public/audio/bgm/battle_legendary_kanto.mp3 and b/public/audio/bgm/battle_legendary_kanto.mp3 differ diff --git a/public/audio/bgm/battle_legendary_kor_mir.mp3 b/public/audio/bgm/battle_legendary_kor_mir.mp3 index e99da45c4e5..4b18a94d423 100644 Binary files a/public/audio/bgm/battle_legendary_kor_mir.mp3 and b/public/audio/bgm/battle_legendary_kor_mir.mp3 differ diff --git a/public/audio/bgm/battle_legendary_kyurem.mp3 b/public/audio/bgm/battle_legendary_kyurem.mp3 index 3edd8327fb8..d7ad9630031 100644 Binary files a/public/audio/bgm/battle_legendary_kyurem.mp3 and b/public/audio/bgm/battle_legendary_kyurem.mp3 differ diff --git a/public/audio/bgm/battle_legendary_lake_trio.mp3 b/public/audio/bgm/battle_legendary_lake_trio.mp3 index 6d03e88a9de..dddcc34712f 100644 Binary files a/public/audio/bgm/battle_legendary_lake_trio.mp3 and b/public/audio/bgm/battle_legendary_lake_trio.mp3 differ diff --git a/public/audio/bgm/battle_legendary_loyal_three.mp3 b/public/audio/bgm/battle_legendary_loyal_three.mp3 index 69fb3f2014a..d37930b33bf 100644 Binary files a/public/audio/bgm/battle_legendary_loyal_three.mp3 and b/public/audio/bgm/battle_legendary_loyal_three.mp3 differ diff --git a/public/audio/bgm/battle_legendary_lugia.mp3 b/public/audio/bgm/battle_legendary_lugia.mp3 index 5930f874cb3..a68f3df6557 100644 Binary files a/public/audio/bgm/battle_legendary_lugia.mp3 and b/public/audio/bgm/battle_legendary_lugia.mp3 differ diff --git a/public/audio/bgm/battle_legendary_ogerpon.mp3 b/public/audio/bgm/battle_legendary_ogerpon.mp3 index 6bf29a6e5fc..0e26dafb5aa 100644 Binary files a/public/audio/bgm/battle_legendary_ogerpon.mp3 and b/public/audio/bgm/battle_legendary_ogerpon.mp3 differ diff --git a/public/audio/bgm/battle_legendary_pecharunt.mp3 b/public/audio/bgm/battle_legendary_pecharunt.mp3 index 2a8a92ba923..21383c2ea0e 100644 Binary files a/public/audio/bgm/battle_legendary_pecharunt.mp3 and b/public/audio/bgm/battle_legendary_pecharunt.mp3 differ diff --git a/public/audio/bgm/battle_legendary_raikou.mp3 b/public/audio/bgm/battle_legendary_raikou.mp3 index 83d07db498a..e89ac31d678 100644 Binary files a/public/audio/bgm/battle_legendary_raikou.mp3 and b/public/audio/bgm/battle_legendary_raikou.mp3 differ diff --git a/public/audio/bgm/battle_legendary_rayquaza.mp3 b/public/audio/bgm/battle_legendary_rayquaza.mp3 index abe0efa8afb..3747edef71b 100644 Binary files a/public/audio/bgm/battle_legendary_rayquaza.mp3 and b/public/audio/bgm/battle_legendary_rayquaza.mp3 differ diff --git a/public/audio/bgm/battle_legendary_regis_g5.mp3 b/public/audio/bgm/battle_legendary_regis_g5.mp3 index 448d98c6bd6..f7b18dc9170 100644 Binary files a/public/audio/bgm/battle_legendary_regis_g5.mp3 and b/public/audio/bgm/battle_legendary_regis_g5.mp3 differ diff --git a/public/audio/bgm/battle_legendary_regis_g6.mp3 b/public/audio/bgm/battle_legendary_regis_g6.mp3 index 281c0a488be..c87d61d0b79 100644 Binary files a/public/audio/bgm/battle_legendary_regis_g6.mp3 and b/public/audio/bgm/battle_legendary_regis_g6.mp3 differ diff --git a/public/audio/bgm/battle_legendary_res_zek.mp3 b/public/audio/bgm/battle_legendary_res_zek.mp3 index a7098b9f1db..5e26b7822ff 100644 Binary files a/public/audio/bgm/battle_legendary_res_zek.mp3 and b/public/audio/bgm/battle_legendary_res_zek.mp3 differ diff --git a/public/audio/bgm/battle_legendary_ruinous.mp3 b/public/audio/bgm/battle_legendary_ruinous.mp3 index 518889b0ec6..804b0f39a6f 100644 Binary files a/public/audio/bgm/battle_legendary_ruinous.mp3 and b/public/audio/bgm/battle_legendary_ruinous.mp3 differ diff --git a/public/audio/bgm/battle_legendary_sinnoh.mp3 b/public/audio/bgm/battle_legendary_sinnoh.mp3 index 853324d947c..6345689ebb3 100644 Binary files a/public/audio/bgm/battle_legendary_sinnoh.mp3 and b/public/audio/bgm/battle_legendary_sinnoh.mp3 differ diff --git a/public/audio/bgm/battle_legendary_sol_lun.mp3 b/public/audio/bgm/battle_legendary_sol_lun.mp3 index 90e57307557..9793c1b6560 100644 Binary files a/public/audio/bgm/battle_legendary_sol_lun.mp3 and b/public/audio/bgm/battle_legendary_sol_lun.mp3 differ diff --git a/public/audio/bgm/battle_legendary_suicune.mp3 b/public/audio/bgm/battle_legendary_suicune.mp3 index 88a4a3dbca9..4df599bbbc1 100644 Binary files a/public/audio/bgm/battle_legendary_suicune.mp3 and b/public/audio/bgm/battle_legendary_suicune.mp3 differ diff --git a/public/audio/bgm/battle_legendary_tapu.mp3 b/public/audio/bgm/battle_legendary_tapu.mp3 index b7e4d9d4a22..7536065ddfb 100644 Binary files a/public/audio/bgm/battle_legendary_tapu.mp3 and b/public/audio/bgm/battle_legendary_tapu.mp3 differ diff --git a/public/audio/bgm/battle_legendary_terapagos.mp3 b/public/audio/bgm/battle_legendary_terapagos.mp3 index 488b8631421..3cfea347224 100644 Binary files a/public/audio/bgm/battle_legendary_terapagos.mp3 and b/public/audio/bgm/battle_legendary_terapagos.mp3 differ diff --git a/public/audio/bgm/battle_legendary_ub.mp3 b/public/audio/bgm/battle_legendary_ub.mp3 index 6bc56f51a29..3aefc713441 100644 Binary files a/public/audio/bgm/battle_legendary_ub.mp3 and b/public/audio/bgm/battle_legendary_ub.mp3 differ diff --git a/public/audio/bgm/battle_legendary_ultra_nec.mp3 b/public/audio/bgm/battle_legendary_ultra_nec.mp3 index b5f2e10819a..e24c93cd4c2 100644 Binary files a/public/audio/bgm/battle_legendary_ultra_nec.mp3 and b/public/audio/bgm/battle_legendary_ultra_nec.mp3 differ diff --git a/public/audio/bgm/battle_legendary_unova.mp3 b/public/audio/bgm/battle_legendary_unova.mp3 index 6e3e8162f5e..3bae8a6a49f 100644 Binary files a/public/audio/bgm/battle_legendary_unova.mp3 and b/public/audio/bgm/battle_legendary_unova.mp3 differ diff --git a/public/audio/bgm/battle_legendary_xern_yvel.mp3 b/public/audio/bgm/battle_legendary_xern_yvel.mp3 index 40580a209d4..2487f60b28b 100644 Binary files a/public/audio/bgm/battle_legendary_xern_yvel.mp3 and b/public/audio/bgm/battle_legendary_xern_yvel.mp3 differ diff --git a/public/audio/bgm/battle_legendary_zac_zam.mp3 b/public/audio/bgm/battle_legendary_zac_zam.mp3 index eead5ad96ad..5a8b8471c5b 100644 Binary files a/public/audio/bgm/battle_legendary_zac_zam.mp3 and b/public/audio/bgm/battle_legendary_zac_zam.mp3 differ diff --git a/public/audio/bgm/battle_paldea_elite.mp3 b/public/audio/bgm/battle_paldea_elite.mp3 index 125f0343712..f3a71ee8340 100644 Binary files a/public/audio/bgm/battle_paldea_elite.mp3 and b/public/audio/bgm/battle_paldea_elite.mp3 differ diff --git a/public/audio/bgm/battle_paldea_gym.mp3 b/public/audio/bgm/battle_paldea_gym.mp3 index 7ade34e989a..2cef63209fb 100644 Binary files a/public/audio/bgm/battle_paldea_gym.mp3 and b/public/audio/bgm/battle_paldea_gym.mp3 differ diff --git a/public/audio/bgm/battle_plasma_boss.mp3 b/public/audio/bgm/battle_plasma_boss.mp3 index c757242758e..124b8f4a230 100644 Binary files a/public/audio/bgm/battle_plasma_boss.mp3 and b/public/audio/bgm/battle_plasma_boss.mp3 differ diff --git a/public/audio/bgm/battle_plasma_grunt.mp3 b/public/audio/bgm/battle_plasma_grunt.mp3 index 93828958853..7d1bf710bc5 100644 Binary files a/public/audio/bgm/battle_plasma_grunt.mp3 and b/public/audio/bgm/battle_plasma_grunt.mp3 differ diff --git a/public/audio/bgm/battle_rival.mp3 b/public/audio/bgm/battle_rival.mp3 index b35f45cb612..82ff586576a 100644 Binary files a/public/audio/bgm/battle_rival.mp3 and b/public/audio/bgm/battle_rival.mp3 differ diff --git a/public/audio/bgm/battle_rival_2.mp3 b/public/audio/bgm/battle_rival_2.mp3 index a0d5f77a09b..7f063ed5fd0 100644 Binary files a/public/audio/bgm/battle_rival_2.mp3 and b/public/audio/bgm/battle_rival_2.mp3 differ diff --git a/public/audio/bgm/battle_rival_3.mp3 b/public/audio/bgm/battle_rival_3.mp3 index 199f8e6fa4f..911438b4f83 100644 Binary files a/public/audio/bgm/battle_rival_3.mp3 and b/public/audio/bgm/battle_rival_3.mp3 differ diff --git a/public/audio/bgm/battle_rocket_boss.mp3 b/public/audio/bgm/battle_rocket_boss.mp3 index d62080f9d23..757eaa38c70 100644 Binary files a/public/audio/bgm/battle_rocket_boss.mp3 and b/public/audio/bgm/battle_rocket_boss.mp3 differ diff --git a/public/audio/bgm/battle_rocket_grunt.mp3 b/public/audio/bgm/battle_rocket_grunt.mp3 index 7fc30169adc..e8f5faf86d7 100644 Binary files a/public/audio/bgm/battle_rocket_grunt.mp3 and b/public/audio/bgm/battle_rocket_grunt.mp3 differ diff --git a/public/audio/bgm/battle_sinnoh_champion.mp3 b/public/audio/bgm/battle_sinnoh_champion.mp3 index 05083e47025..a662ca20cbb 100644 Binary files a/public/audio/bgm/battle_sinnoh_champion.mp3 and b/public/audio/bgm/battle_sinnoh_champion.mp3 differ diff --git a/public/audio/bgm/battle_sinnoh_gym.mp3 b/public/audio/bgm/battle_sinnoh_gym.mp3 index 79b980c0b33..280c33a09e5 100644 Binary files a/public/audio/bgm/battle_sinnoh_gym.mp3 and b/public/audio/bgm/battle_sinnoh_gym.mp3 differ diff --git a/public/audio/bgm/battle_trainer.mp3 b/public/audio/bgm/battle_trainer.mp3 index c997073668a..d90c7bd845f 100644 Binary files a/public/audio/bgm/battle_trainer.mp3 and b/public/audio/bgm/battle_trainer.mp3 differ diff --git a/public/audio/bgm/battle_unova_elite.mp3 b/public/audio/bgm/battle_unova_elite.mp3 index f5029a5db22..8c150acb9e3 100644 Binary files a/public/audio/bgm/battle_unova_elite.mp3 and b/public/audio/bgm/battle_unova_elite.mp3 differ diff --git a/public/audio/bgm/battle_unova_gym.mp3 b/public/audio/bgm/battle_unova_gym.mp3 index 3c1d963dea8..46a4600bbca 100644 Binary files a/public/audio/bgm/battle_unova_gym.mp3 and b/public/audio/bgm/battle_unova_gym.mp3 differ diff --git a/public/audio/bgm/battle_wild.mp3 b/public/audio/bgm/battle_wild.mp3 index 9a37b7cf1f5..f8d484ab51e 100644 Binary files a/public/audio/bgm/battle_wild.mp3 and b/public/audio/bgm/battle_wild.mp3 differ diff --git a/public/audio/bgm/battle_wild_strong.mp3 b/public/audio/bgm/battle_wild_strong.mp3 index 35173ea896a..cf02ef8d1d5 100644 Binary files a/public/audio/bgm/battle_wild_strong.mp3 and b/public/audio/bgm/battle_wild_strong.mp3 differ diff --git a/public/audio/bgm/beach.mp3 b/public/audio/bgm/beach.mp3 index f7f7194238f..af0486a0c78 100644 Binary files a/public/audio/bgm/beach.mp3 and b/public/audio/bgm/beach.mp3 differ diff --git a/public/audio/bgm/bw/evolution.mp3 b/public/audio/bgm/bw/evolution.mp3 index c1ba9dab51e..ecfd085da26 100644 Binary files a/public/audio/bgm/bw/evolution.mp3 and b/public/audio/bgm/bw/evolution.mp3 differ diff --git a/public/audio/bgm/bw/evolution_fanfare.mp3 b/public/audio/bgm/bw/evolution_fanfare.mp3 index f19ee030de9..6f554a4189e 100644 Binary files a/public/audio/bgm/bw/evolution_fanfare.mp3 and b/public/audio/bgm/bw/evolution_fanfare.mp3 differ diff --git a/public/audio/bgm/bw/heal.mp3 b/public/audio/bgm/bw/heal.mp3 index 12868d77a81..9300bf35099 100644 Binary files a/public/audio/bgm/bw/heal.mp3 and b/public/audio/bgm/bw/heal.mp3 differ diff --git a/public/audio/bgm/bw/item_fanfare.mp3 b/public/audio/bgm/bw/item_fanfare.mp3 index 999b59b3398..7f128ff1c22 100644 Binary files a/public/audio/bgm/bw/item_fanfare.mp3 and b/public/audio/bgm/bw/item_fanfare.mp3 differ diff --git a/public/audio/bgm/bw/level_up_fanfare.mp3 b/public/audio/bgm/bw/level_up_fanfare.mp3 index 6545f0f2d44..9501092f9dd 100644 Binary files a/public/audio/bgm/bw/level_up_fanfare.mp3 and b/public/audio/bgm/bw/level_up_fanfare.mp3 differ diff --git a/public/audio/bgm/bw/minor_fanfare.mp3 b/public/audio/bgm/bw/minor_fanfare.mp3 index 0c910dfb499..2e6104022f1 100644 Binary files a/public/audio/bgm/bw/minor_fanfare.mp3 and b/public/audio/bgm/bw/minor_fanfare.mp3 differ diff --git a/public/audio/bgm/bw/victory_champion.mp3 b/public/audio/bgm/bw/victory_champion.mp3 index 34da4b19946..3711aadcc53 100644 Binary files a/public/audio/bgm/bw/victory_champion.mp3 and b/public/audio/bgm/bw/victory_champion.mp3 differ diff --git a/public/audio/bgm/bw/victory_gym.mp3 b/public/audio/bgm/bw/victory_gym.mp3 index 2060ac7d87f..9b93a90dd5d 100644 Binary files a/public/audio/bgm/bw/victory_gym.mp3 and b/public/audio/bgm/bw/victory_gym.mp3 differ diff --git a/public/audio/bgm/bw/victory_team_plasma.mp3 b/public/audio/bgm/bw/victory_team_plasma.mp3 index 8ab6c5e87a8..1f2c6229f5d 100644 Binary files a/public/audio/bgm/bw/victory_team_plasma.mp3 and b/public/audio/bgm/bw/victory_team_plasma.mp3 differ diff --git a/public/audio/bgm/bw/victory_trainer.mp3 b/public/audio/bgm/bw/victory_trainer.mp3 index 37175537a79..f5adb6deacc 100644 Binary files a/public/audio/bgm/bw/victory_trainer.mp3 and b/public/audio/bgm/bw/victory_trainer.mp3 differ diff --git a/public/audio/bgm/cave.mp3 b/public/audio/bgm/cave.mp3 index 7a589fdae7b..59f4063867c 100644 Binary files a/public/audio/bgm/cave.mp3 and b/public/audio/bgm/cave.mp3 differ diff --git a/public/audio/bgm/construction_site.mp3 b/public/audio/bgm/construction_site.mp3 index 8489063765e..a5c5f5b1879 100644 Binary files a/public/audio/bgm/construction_site.mp3 and b/public/audio/bgm/construction_site.mp3 differ diff --git a/public/audio/bgm/desert.mp3 b/public/audio/bgm/desert.mp3 index 010b0fef259..febbacc0100 100644 Binary files a/public/audio/bgm/desert.mp3 and b/public/audio/bgm/desert.mp3 differ diff --git a/public/audio/bgm/dojo.mp3 b/public/audio/bgm/dojo.mp3 index ed05dce9f3b..d8621b5b7fc 100644 Binary files a/public/audio/bgm/dojo.mp3 and b/public/audio/bgm/dojo.mp3 differ diff --git a/public/audio/bgm/encounter_ace_trainer.mp3 b/public/audio/bgm/encounter_ace_trainer.mp3 index 7bc14853a77..ea507898900 100644 Binary files a/public/audio/bgm/encounter_ace_trainer.mp3 and b/public/audio/bgm/encounter_ace_trainer.mp3 differ diff --git a/public/audio/bgm/encounter_backpacker.mp3 b/public/audio/bgm/encounter_backpacker.mp3 index a0fa5dca2ed..1b95c48c1f8 100644 Binary files a/public/audio/bgm/encounter_backpacker.mp3 and b/public/audio/bgm/encounter_backpacker.mp3 differ diff --git a/public/audio/bgm/encounter_clerk.mp3 b/public/audio/bgm/encounter_clerk.mp3 index 412ab4d853b..8e1a45f43d2 100644 Binary files a/public/audio/bgm/encounter_clerk.mp3 and b/public/audio/bgm/encounter_clerk.mp3 differ diff --git a/public/audio/bgm/encounter_cyclist.mp3 b/public/audio/bgm/encounter_cyclist.mp3 index cd88c310ccb..dda81f48b71 100644 Binary files a/public/audio/bgm/encounter_cyclist.mp3 and b/public/audio/bgm/encounter_cyclist.mp3 differ diff --git a/public/audio/bgm/encounter_final.mp3 b/public/audio/bgm/encounter_final.mp3 index 7bc92d586fe..ea47aa4bea4 100644 Binary files a/public/audio/bgm/encounter_final.mp3 and b/public/audio/bgm/encounter_final.mp3 differ diff --git a/public/audio/bgm/encounter_lass.mp3 b/public/audio/bgm/encounter_lass.mp3 index 70fdd849c5a..31ea20e3c02 100644 Binary files a/public/audio/bgm/encounter_lass.mp3 and b/public/audio/bgm/encounter_lass.mp3 differ diff --git a/public/audio/bgm/encounter_parasol_lady.mp3 b/public/audio/bgm/encounter_parasol_lady.mp3 index 1615ad2981b..1fca7bae31a 100644 Binary files a/public/audio/bgm/encounter_parasol_lady.mp3 and b/public/audio/bgm/encounter_parasol_lady.mp3 differ diff --git a/public/audio/bgm/encounter_plasma_grunt.mp3 b/public/audio/bgm/encounter_plasma_grunt.mp3 index 6a3f7d269b4..53e73cc0106 100644 Binary files a/public/audio/bgm/encounter_plasma_grunt.mp3 and b/public/audio/bgm/encounter_plasma_grunt.mp3 differ diff --git a/public/audio/bgm/encounter_pokefan.mp3 b/public/audio/bgm/encounter_pokefan.mp3 index d980767a08c..cc3fafb158b 100644 Binary files a/public/audio/bgm/encounter_pokefan.mp3 and b/public/audio/bgm/encounter_pokefan.mp3 differ diff --git a/public/audio/bgm/encounter_psychic.mp3 b/public/audio/bgm/encounter_psychic.mp3 index ec66a6da85d..111e41833a2 100644 Binary files a/public/audio/bgm/encounter_psychic.mp3 and b/public/audio/bgm/encounter_psychic.mp3 differ diff --git a/public/audio/bgm/encounter_rich.mp3 b/public/audio/bgm/encounter_rich.mp3 index 56bf81389fc..2df9dfcceab 100644 Binary files a/public/audio/bgm/encounter_rich.mp3 and b/public/audio/bgm/encounter_rich.mp3 differ diff --git a/public/audio/bgm/encounter_rival.mp3 b/public/audio/bgm/encounter_rival.mp3 index cf0e7c3c38b..b814879b70e 100644 Binary files a/public/audio/bgm/encounter_rival.mp3 and b/public/audio/bgm/encounter_rival.mp3 differ diff --git a/public/audio/bgm/encounter_roughneck.mp3 b/public/audio/bgm/encounter_roughneck.mp3 index ed65b671459..630e1d0263d 100644 Binary files a/public/audio/bgm/encounter_roughneck.mp3 and b/public/audio/bgm/encounter_roughneck.mp3 differ diff --git a/public/audio/bgm/encounter_scientist.mp3 b/public/audio/bgm/encounter_scientist.mp3 index c65903aede1..a2d2ce7754d 100644 Binary files a/public/audio/bgm/encounter_scientist.mp3 and b/public/audio/bgm/encounter_scientist.mp3 differ diff --git a/public/audio/bgm/encounter_twins.mp3 b/public/audio/bgm/encounter_twins.mp3 index e54cf8daad9..8564a101dbe 100644 Binary files a/public/audio/bgm/encounter_twins.mp3 and b/public/audio/bgm/encounter_twins.mp3 differ diff --git a/public/audio/bgm/encounter_youngster.mp3 b/public/audio/bgm/encounter_youngster.mp3 index c0e4e119d5b..8ad8bd158e9 100644 Binary files a/public/audio/bgm/encounter_youngster.mp3 and b/public/audio/bgm/encounter_youngster.mp3 differ diff --git a/public/audio/bgm/end.mp3 b/public/audio/bgm/end.mp3 index 930d2ee2e79..c37973fd9cc 100644 Binary files a/public/audio/bgm/end.mp3 and b/public/audio/bgm/end.mp3 differ diff --git a/public/audio/bgm/end_summit.mp3 b/public/audio/bgm/end_summit.mp3 index 2852e8b2884..413fb4af384 100644 Binary files a/public/audio/bgm/end_summit.mp3 and b/public/audio/bgm/end_summit.mp3 differ diff --git a/public/audio/bgm/factory.mp3 b/public/audio/bgm/factory.mp3 index 9bb4edd682a..72304168306 100644 Binary files a/public/audio/bgm/factory.mp3 and b/public/audio/bgm/factory.mp3 differ diff --git a/public/audio/bgm/fairy_cave.mp3 b/public/audio/bgm/fairy_cave.mp3 index da497b99f8c..4e1c9ea0eb4 100644 Binary files a/public/audio/bgm/fairy_cave.mp3 and b/public/audio/bgm/fairy_cave.mp3 differ diff --git a/public/audio/bgm/forest.mp3 b/public/audio/bgm/forest.mp3 index 9fc61da2712..a1d9ecb4b28 100644 Binary files a/public/audio/bgm/forest.mp3 and b/public/audio/bgm/forest.mp3 differ diff --git a/public/audio/bgm/grass.mp3 b/public/audio/bgm/grass.mp3 index 4dd69bfedef..898da6d42c5 100644 Binary files a/public/audio/bgm/grass.mp3 and b/public/audio/bgm/grass.mp3 differ diff --git a/public/audio/bgm/graveyard.mp3 b/public/audio/bgm/graveyard.mp3 index 13f42e9a2a7..48092fa3ec2 100644 Binary files a/public/audio/bgm/graveyard.mp3 and b/public/audio/bgm/graveyard.mp3 differ diff --git a/public/audio/bgm/heal.mp3 b/public/audio/bgm/heal.mp3 index 2c93c7c4bd4..9300bf35099 100644 Binary files a/public/audio/bgm/heal.mp3 and b/public/audio/bgm/heal.mp3 differ diff --git a/public/audio/bgm/ice_cave.mp3 b/public/audio/bgm/ice_cave.mp3 index cdc374c5db0..5d1b9e9e354 100644 Binary files a/public/audio/bgm/ice_cave.mp3 and b/public/audio/bgm/ice_cave.mp3 differ diff --git a/public/audio/bgm/island.mp3 b/public/audio/bgm/island.mp3 index eee55bca423..27d5ff64562 100644 Binary files a/public/audio/bgm/island.mp3 and b/public/audio/bgm/island.mp3 differ diff --git a/public/audio/bgm/jungle.mp3 b/public/audio/bgm/jungle.mp3 index bcb51a47045..3a21c9bdb41 100644 Binary files a/public/audio/bgm/jungle.mp3 and b/public/audio/bgm/jungle.mp3 differ diff --git a/public/audio/bgm/laboratory.mp3 b/public/audio/bgm/laboratory.mp3 index fafb66517aa..e2b617e590a 100644 Binary files a/public/audio/bgm/laboratory.mp3 and b/public/audio/bgm/laboratory.mp3 differ diff --git a/public/audio/bgm/lake.mp3 b/public/audio/bgm/lake.mp3 index 2035c0c4b0a..c61fef15e42 100644 Binary files a/public/audio/bgm/lake.mp3 and b/public/audio/bgm/lake.mp3 differ diff --git a/public/audio/bgm/meadow.mp3 b/public/audio/bgm/meadow.mp3 index bef45496c7f..1c9b6c47325 100644 Binary files a/public/audio/bgm/meadow.mp3 and b/public/audio/bgm/meadow.mp3 differ diff --git a/public/audio/bgm/menu.mp3 b/public/audio/bgm/menu.mp3 index eaf1d025186..286e986d570 100644 Binary files a/public/audio/bgm/menu.mp3 and b/public/audio/bgm/menu.mp3 differ diff --git a/public/audio/bgm/metropolis.mp3 b/public/audio/bgm/metropolis.mp3 index 44bdba8f5d4..98c2eb396b6 100644 Binary files a/public/audio/bgm/metropolis.mp3 and b/public/audio/bgm/metropolis.mp3 differ diff --git a/public/audio/bgm/mountain.mp3 b/public/audio/bgm/mountain.mp3 index 4d5e1ae7866..e4ca51cf4fd 100644 Binary files a/public/audio/bgm/mountain.mp3 and b/public/audio/bgm/mountain.mp3 differ diff --git a/public/audio/bgm/plains.mp3 b/public/audio/bgm/plains.mp3 index 0314af1436d..6c7a008bce6 100644 Binary files a/public/audio/bgm/plains.mp3 and b/public/audio/bgm/plains.mp3 differ diff --git a/public/audio/bgm/power_plant.mp3 b/public/audio/bgm/power_plant.mp3 index 814a08234c7..9813ad40a11 100644 Binary files a/public/audio/bgm/power_plant.mp3 and b/public/audio/bgm/power_plant.mp3 differ diff --git a/public/audio/bgm/rse/evolution.mp3 b/public/audio/bgm/rse/evolution.mp3 index ef0a68d6e54..a74cbedb594 100644 Binary files a/public/audio/bgm/rse/evolution.mp3 and b/public/audio/bgm/rse/evolution.mp3 differ diff --git a/public/audio/bgm/rse/evolution_fanfare.mp3 b/public/audio/bgm/rse/evolution_fanfare.mp3 index f0a1dc1585c..8acfb2f3a95 100644 Binary files a/public/audio/bgm/rse/evolution_fanfare.mp3 and b/public/audio/bgm/rse/evolution_fanfare.mp3 differ diff --git a/public/audio/bgm/rse/level_up_fanfare.mp3 b/public/audio/bgm/rse/level_up_fanfare.mp3 index cd69b305322..78aea15156d 100644 Binary files a/public/audio/bgm/rse/level_up_fanfare.mp3 and b/public/audio/bgm/rse/level_up_fanfare.mp3 differ diff --git a/public/audio/bgm/rse/victory.mp3 b/public/audio/bgm/rse/victory.mp3 index 1cb68868e10..7bf1d7a5282 100644 Binary files a/public/audio/bgm/rse/victory.mp3 and b/public/audio/bgm/rse/victory.mp3 differ diff --git a/public/audio/bgm/ruins.mp3 b/public/audio/bgm/ruins.mp3 index aa1bd436171..62f31893423 100644 Binary files a/public/audio/bgm/ruins.mp3 and b/public/audio/bgm/ruins.mp3 differ diff --git a/public/audio/bgm/sea.mp3 b/public/audio/bgm/sea.mp3 index 13755d99c30..8bdaaa696f1 100644 Binary files a/public/audio/bgm/sea.mp3 and b/public/audio/bgm/sea.mp3 differ diff --git a/public/audio/bgm/seabed.mp3 b/public/audio/bgm/seabed.mp3 index bb2ab8c5688..d0c405b4e1d 100644 Binary files a/public/audio/bgm/seabed.mp3 and b/public/audio/bgm/seabed.mp3 differ diff --git a/public/audio/bgm/slum.mp3 b/public/audio/bgm/slum.mp3 index 6b701115dec..1315c7838fc 100644 Binary files a/public/audio/bgm/slum.mp3 and b/public/audio/bgm/slum.mp3 differ diff --git a/public/audio/bgm/snowy_forest.mp3 b/public/audio/bgm/snowy_forest.mp3 index 5f88206fd91..1469ef56bde 100644 Binary files a/public/audio/bgm/snowy_forest.mp3 and b/public/audio/bgm/snowy_forest.mp3 differ diff --git a/public/audio/bgm/space.mp3 b/public/audio/bgm/space.mp3 index 9f6c8d7beac..87a53fb84ff 100644 Binary files a/public/audio/bgm/space.mp3 and b/public/audio/bgm/space.mp3 differ diff --git a/public/audio/bgm/swamp.mp3 b/public/audio/bgm/swamp.mp3 index 1e2abcfc009..eb42c8a7a46 100644 Binary files a/public/audio/bgm/swamp.mp3 and b/public/audio/bgm/swamp.mp3 differ diff --git a/public/audio/bgm/tall_grass.mp3 b/public/audio/bgm/tall_grass.mp3 index 5ebefa7becf..ba2200b64fc 100644 Binary files a/public/audio/bgm/tall_grass.mp3 and b/public/audio/bgm/tall_grass.mp3 differ diff --git a/public/audio/bgm/temple.mp3 b/public/audio/bgm/temple.mp3 index cc394df855c..81fa4416575 100644 Binary files a/public/audio/bgm/temple.mp3 and b/public/audio/bgm/temple.mp3 differ diff --git a/public/audio/bgm/title.mp3 b/public/audio/bgm/title.mp3 index d7cbf77144e..86d4be0da35 100644 Binary files a/public/audio/bgm/title.mp3 and b/public/audio/bgm/title.mp3 differ diff --git a/public/audio/bgm/town.mp3 b/public/audio/bgm/town.mp3 index 6a72855865c..fb197ade121 100644 Binary files a/public/audio/bgm/town.mp3 and b/public/audio/bgm/town.mp3 differ diff --git a/public/audio/bgm/volcano.mp3 b/public/audio/bgm/volcano.mp3 index 9102aaa733d..093bb86813b 100644 Binary files a/public/audio/bgm/volcano.mp3 and b/public/audio/bgm/volcano.mp3 differ diff --git a/public/audio/bgm/wasteland.mp3 b/public/audio/bgm/wasteland.mp3 index 0c466497921..646cbd89a1f 100644 Binary files a/public/audio/bgm/wasteland.mp3 and b/public/audio/bgm/wasteland.mp3 differ diff --git a/public/images/pokemon/exp/back/shiny/4555.json b/public/images/pokemon/exp/back/shiny/4555.json index 23306700045..24b0847bc3c 100644 --- a/public/images/pokemon/exp/back/shiny/4555.json +++ b/public/images/pokemon/exp/back/shiny/4555.json @@ -1,1091 +1,230 @@ -{ - "textures": [ - { - "image": "4555.png", - "format": "RGBA8888", - "size": { - "w": 159, - "h": 159 - }, - "scale": 1, - "frames": [ - { - "filename": "0029.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 0, - "w": 40, - "h": 38 - }, - "frame": { - "x": 0, - "y": 0, - "w": 40, - "h": 38 - } - }, - { - "filename": "0031.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 0, - "w": 40, - "h": 38 - }, - "frame": { - "x": 0, - "y": 0, - "w": 40, - "h": 38 - } - }, - { - "filename": "0001.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 40, - "h": 39 - }, - "frame": { - "x": 40, - "y": 0, - "w": 40, - "h": 39 - } - }, - { - "filename": "0009.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 40, - "h": 39 - }, - "frame": { - "x": 40, - "y": 0, - "w": 40, - "h": 39 - } - }, - { - "filename": "0017.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 40, - "h": 39 - }, - "frame": { - "x": 40, - "y": 0, - "w": 40, - "h": 39 - } - }, - { - "filename": "0019.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 40, - "h": 39 - }, - "frame": { - "x": 40, - "y": 0, - "w": 40, - "h": 39 - } - }, - { - "filename": "0021.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 40, - "h": 39 - }, - "frame": { - "x": 40, - "y": 0, - "w": 40, - "h": 39 - } - }, - { - "filename": "0023.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 40, - "h": 39 - }, - "frame": { - "x": 40, - "y": 0, - "w": 40, - "h": 39 - } - }, - { - "filename": "0025.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 40, - "h": 39 - }, - "frame": { - "x": 40, - "y": 0, - "w": 40, - "h": 39 - } - }, - { - "filename": "0027.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 7, - "w": 40, - "h": 39 - }, - "frame": { - "x": 40, - "y": 0, - "w": 40, - "h": 39 - } - }, - { - "filename": "0033.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 40, - "h": 39 - }, - "frame": { - "x": 40, - "y": 0, - "w": 40, - "h": 39 - } - }, - { - "filename": "0035.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 40, - "h": 39 - }, - "frame": { - "x": 40, - "y": 0, - "w": 40, - "h": 39 - } - }, - { - "filename": "0043.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 40, - "h": 39 - }, - "frame": { - "x": 40, - "y": 0, - "w": 40, - "h": 39 - } - }, - { - "filename": "0051.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 40, - "h": 39 - }, - "frame": { - "x": 40, - "y": 0, - "w": 40, - "h": 39 - } - }, - { - "filename": "0030.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 5, - "y": 0, - "w": 41, - "h": 39 - }, - "frame": { - "x": 80, - "y": 0, - "w": 41, - "h": 39 - } - }, - { - "filename": "0032.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 1, - "y": 8, - "w": 39, - "h": 39 - }, - "frame": { - "x": 0, - "y": 38, - "w": 39, - "h": 39 - } - }, - { - "filename": "0002.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 41, - "h": 40 - }, - "frame": { - "x": 39, - "y": 39, - "w": 41, - "h": 40 - } - }, - { - "filename": "0008.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 41, - "h": 40 - }, - "frame": { - "x": 39, - "y": 39, - "w": 41, - "h": 40 - } - }, - { - "filename": "0010.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 41, - "h": 40 - }, - "frame": { - "x": 39, - "y": 39, - "w": 41, - "h": 40 - } - }, - { - "filename": "0016.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 41, - "h": 40 - }, - "frame": { - "x": 39, - "y": 39, - "w": 41, - "h": 40 - } - }, - { - "filename": "0036.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 41, - "h": 40 - }, - "frame": { - "x": 39, - "y": 39, - "w": 41, - "h": 40 - } - }, - { - "filename": "0042.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 41, - "h": 40 - }, - "frame": { - "x": 39, - "y": 39, - "w": 41, - "h": 40 - } - }, - { - "filename": "0044.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 41, - "h": 40 - }, - "frame": { - "x": 39, - "y": 39, - "w": 41, - "h": 40 - } - }, - { - "filename": "0050.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 41, - "h": 40 - }, - "frame": { - "x": 39, - "y": 39, - "w": 41, - "h": 40 - } - }, - { - "filename": "0003.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 40, - "h": 40 - }, - "frame": { - "x": 80, - "y": 39, - "w": 40, - "h": 40 - } - }, - { - "filename": "0007.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 40, - "h": 40 - }, - "frame": { - "x": 80, - "y": 39, - "w": 40, - "h": 40 - } - }, - { - "filename": "0011.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 40, - "h": 40 - }, - "frame": { - "x": 80, - "y": 39, - "w": 40, - "h": 40 - } - }, - { - "filename": "0015.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 40, - "h": 40 - }, - "frame": { - "x": 80, - "y": 39, - "w": 40, - "h": 40 - } - }, - { - "filename": "0037.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 40, - "h": 40 - }, - "frame": { - "x": 80, - "y": 39, - "w": 40, - "h": 40 - } - }, - { - "filename": "0041.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 40, - "h": 40 - }, - "frame": { - "x": 80, - "y": 39, - "w": 40, - "h": 40 - } - }, - { - "filename": "0045.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 40, - "h": 40 - }, - "frame": { - "x": 80, - "y": 39, - "w": 40, - "h": 40 - } - }, - { - "filename": "0049.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 40, - "h": 40 - }, - "frame": { - "x": 80, - "y": 39, - "w": 40, - "h": 40 - } - }, - { - "filename": "0020.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 39, - "h": 40 - }, - "frame": { - "x": 120, - "y": 39, - "w": 39, - "h": 40 - } - }, - { - "filename": "0024.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 39, - "h": 40 - }, - "frame": { - "x": 0, - "y": 77, - "w": 39, - "h": 40 - } - }, - { - "filename": "0004.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 40, - "h": 40 - }, - "frame": { - "x": 39, - "y": 79, - "w": 40, - "h": 40 - } - }, - { - "filename": "0006.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 40, - "h": 40 - }, - "frame": { - "x": 39, - "y": 79, - "w": 40, - "h": 40 - } - }, - { - "filename": "0012.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 40, - "h": 40 - }, - "frame": { - "x": 39, - "y": 79, - "w": 40, - "h": 40 - } - }, - { - "filename": "0014.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 40, - "h": 40 - }, - "frame": { - "x": 39, - "y": 79, - "w": 40, - "h": 40 - } - }, - { - "filename": "0038.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 40, - "h": 40 - }, - "frame": { - "x": 39, - "y": 79, - "w": 40, - "h": 40 - } - }, - { - "filename": "0040.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 40, - "h": 40 - }, - "frame": { - "x": 39, - "y": 79, - "w": 40, - "h": 40 - } - }, - { - "filename": "0046.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 40, - "h": 40 - }, - "frame": { - "x": 39, - "y": 79, - "w": 40, - "h": 40 - } - }, - { - "filename": "0048.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 40, - "h": 40 - }, - "frame": { - "x": 39, - "y": 79, - "w": 40, - "h": 40 - } - }, - { - "filename": "0005.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 40, - "h": 40 - }, - "frame": { - "x": 79, - "y": 79, - "w": 40, - "h": 40 - } - }, - { - "filename": "0013.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 40, - "h": 40 - }, - "frame": { - "x": 79, - "y": 79, - "w": 40, - "h": 40 - } - }, - { - "filename": "0039.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 40, - "h": 40 - }, - "frame": { - "x": 79, - "y": 79, - "w": 40, - "h": 40 - } - }, - { - "filename": "0047.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 40, - "h": 40 - }, - "frame": { - "x": 79, - "y": 79, - "w": 40, - "h": 40 - } - }, - { - "filename": "0028.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 39, - "h": 40 - }, - "frame": { - "x": 119, - "y": 79, - "w": 39, - "h": 40 - } - }, - { - "filename": "0018.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 3, - "y": 6, - "w": 41, - "h": 40 - }, - "frame": { - "x": 0, - "y": 119, - "w": 41, - "h": 40 - } - }, - { - "filename": "0034.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 3, - "y": 6, - "w": 41, - "h": 40 - }, - "frame": { - "x": 0, - "y": 119, - "w": 41, - "h": 40 - } - }, - { - "filename": "0022.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 3, - "y": 6, - "w": 42, - "h": 40 - }, - "frame": { - "x": 41, - "y": 119, - "w": 42, - "h": 40 - } - }, - { - "filename": "0026.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 46, - "h": 47 - }, - "spriteSourceSize": { - "x": 4, - "y": 6, - "w": 42, - "h": 40 - }, - "frame": { - "x": 83, - "y": 119, - "w": 42, - "h": 40 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:3a0b5f67665759f212123a47de22e79d:d133311823cafabf0f343822a0a0197f:b1fe411cd93ff8f39d0ba407d084a2a9$" - } -} +{ + "textures": [ + { + "image": "4555.png", + "format": "RGBA8888", + "size": { + "w": 162, + "h": 162 + }, + "scale": 1, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 54, + "h": 66 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 54, + "h": 66 + }, + "frame": { + "x": 0, + "y": 0, + "w": 54, + "h": 66 + } + }, + { + "filename": "0002.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 54, + "h": 66 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 54, + "h": 66 + }, + "frame": { + "x": 54, + "y": 0, + "w": 54, + "h": 66 + } + }, + { + "filename": "0010.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 54, + "h": 66 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 54, + "h": 66 + }, + "frame": { + "x": 54, + "y": 0, + "w": 54, + "h": 66 + } + }, + { + "filename": "0003.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 54, + "h": 66 + }, + "spriteSourceSize": { + "x": 0, + "y": 2, + "w": 54, + "h": 64 + }, + "frame": { + "x": 108, + "y": 0, + "w": 54, + "h": 64 + } + }, + { + "filename": "0009.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 54, + "h": 66 + }, + "spriteSourceSize": { + "x": 0, + "y": 2, + "w": 54, + "h": 64 + }, + "frame": { + "x": 108, + "y": 0, + "w": 54, + "h": 64 + } + }, + { + "filename": "0004.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 54, + "h": 66 + }, + "spriteSourceSize": { + "x": 0, + "y": 3, + "w": 54, + "h": 63 + }, + "frame": { + "x": 108, + "y": 64, + "w": 54, + "h": 63 + } + }, + { + "filename": "0008.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 54, + "h": 66 + }, + "spriteSourceSize": { + "x": 0, + "y": 3, + "w": 54, + "h": 63 + }, + "frame": { + "x": 108, + "y": 64, + "w": 54, + "h": 63 + } + }, + { + "filename": "0005.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 54, + "h": 66 + }, + "spriteSourceSize": { + "x": 0, + "y": 4, + "w": 54, + "h": 62 + }, + "frame": { + "x": 0, + "y": 66, + "w": 54, + "h": 62 + } + }, + { + "filename": "0007.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 54, + "h": 66 + }, + "spriteSourceSize": { + "x": 0, + "y": 4, + "w": 54, + "h": 62 + }, + "frame": { + "x": 0, + "y": 66, + "w": 54, + "h": 62 + } + }, + { + "filename": "0006.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 54, + "h": 66 + }, + "spriteSourceSize": { + "x": 0, + "y": 5, + "w": 54, + "h": 61 + }, + "frame": { + "x": 54, + "y": 66, + "w": 54, + "h": 61 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:ebbf6c9db863403fcc56899bb963c8fe:60a7f95a9e0afed849e5735b36d1ca41:b1fe411cd93ff8f39d0ba407d084a2a9$" + } +} diff --git a/public/images/pokemon/exp/back/shiny/4555.png b/public/images/pokemon/exp/back/shiny/4555.png index 1b06edcaada..3ce57019abe 100644 Binary files a/public/images/pokemon/exp/back/shiny/4555.png and b/public/images/pokemon/exp/back/shiny/4555.png differ diff --git a/public/images/pokemon/exp/shiny/4555.json b/public/images/pokemon/exp/shiny/4555.json index f6f5dae33e7..8a1e2934687 100644 --- a/public/images/pokemon/exp/shiny/4555.json +++ b/public/images/pokemon/exp/shiny/4555.json @@ -1,1427 +1,272 @@ -{ - "textures": [ - { - "image": "4555.png", - "format": "RGBA8888", - "size": { - "w": 167, - "h": 167 - }, - "scale": 1, - "frames": [ - { - "filename": "0034.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 45, - "h": 42 - }, - "frame": { - "x": 0, - "y": 0, - "w": 45, - "h": 42 - } - }, - { - "filename": "0050.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 45, - "h": 42 - }, - "frame": { - "x": 0, - "y": 0, - "w": 45, - "h": 42 - } - }, - { - "filename": "0002.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 44, - "h": 42 - }, - "frame": { - "x": 0, - "y": 42, - "w": 44, - "h": 42 - } - }, - { - "filename": "0008.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 44, - "h": 42 - }, - "frame": { - "x": 0, - "y": 42, - "w": 44, - "h": 42 - } - }, - { - "filename": "0010.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 44, - "h": 42 - }, - "frame": { - "x": 0, - "y": 42, - "w": 44, - "h": 42 - } - }, - { - "filename": "0016.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 44, - "h": 42 - }, - "frame": { - "x": 0, - "y": 42, - "w": 44, - "h": 42 - } - }, - { - "filename": "0018.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 44, - "h": 42 - }, - "frame": { - "x": 0, - "y": 42, - "w": 44, - "h": 42 - } - }, - { - "filename": "0024.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 44, - "h": 42 - }, - "frame": { - "x": 0, - "y": 42, - "w": 44, - "h": 42 - } - }, - { - "filename": "0026.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 44, - "h": 42 - }, - "frame": { - "x": 0, - "y": 42, - "w": 44, - "h": 42 - } - }, - { - "filename": "0032.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 44, - "h": 42 - }, - "frame": { - "x": 0, - "y": 42, - "w": 44, - "h": 42 - } - }, - { - "filename": "0052.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 44, - "h": 42 - }, - "frame": { - "x": 0, - "y": 42, - "w": 44, - "h": 42 - } - }, - { - "filename": "0058.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 44, - "h": 42 - }, - "frame": { - "x": 0, - "y": 42, - "w": 44, - "h": 42 - } - }, - { - "filename": "0060.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 44, - "h": 42 - }, - "frame": { - "x": 0, - "y": 42, - "w": 44, - "h": 42 - } - }, - { - "filename": "0066.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 44, - "h": 42 - }, - "frame": { - "x": 0, - "y": 42, - "w": 44, - "h": 42 - } - }, - { - "filename": "0038.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 2, - "y": 7, - "w": 45, - "h": 41 - }, - "frame": { - "x": 45, - "y": 0, - "w": 45, - "h": 41 - } - }, - { - "filename": "0042.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 3, - "y": 7, - "w": 45, - "h": 41 - }, - "frame": { - "x": 90, - "y": 0, - "w": 45, - "h": 41 - } - }, - { - "filename": "0003.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 43, - "h": 42 - }, - "frame": { - "x": 0, - "y": 84, - "w": 43, - "h": 42 - } - }, - { - "filename": "0007.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 43, - "h": 42 - }, - "frame": { - "x": 0, - "y": 84, - "w": 43, - "h": 42 - } - }, - { - "filename": "0011.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 43, - "h": 42 - }, - "frame": { - "x": 0, - "y": 84, - "w": 43, - "h": 42 - } - }, - { - "filename": "0015.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 43, - "h": 42 - }, - "frame": { - "x": 0, - "y": 84, - "w": 43, - "h": 42 - } - }, - { - "filename": "0019.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 43, - "h": 42 - }, - "frame": { - "x": 0, - "y": 84, - "w": 43, - "h": 42 - } - }, - { - "filename": "0023.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 43, - "h": 42 - }, - "frame": { - "x": 0, - "y": 84, - "w": 43, - "h": 42 - } - }, - { - "filename": "0027.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 43, - "h": 42 - }, - "frame": { - "x": 0, - "y": 84, - "w": 43, - "h": 42 - } - }, - { - "filename": "0031.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 43, - "h": 42 - }, - "frame": { - "x": 0, - "y": 84, - "w": 43, - "h": 42 - } - }, - { - "filename": "0053.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 43, - "h": 42 - }, - "frame": { - "x": 0, - "y": 84, - "w": 43, - "h": 42 - } - }, - { - "filename": "0057.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 43, - "h": 42 - }, - "frame": { - "x": 0, - "y": 84, - "w": 43, - "h": 42 - } - }, - { - "filename": "0061.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 43, - "h": 42 - }, - "frame": { - "x": 0, - "y": 84, - "w": 43, - "h": 42 - } - }, - { - "filename": "0065.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 43, - "h": 42 - }, - "frame": { - "x": 0, - "y": 84, - "w": 43, - "h": 42 - } - }, - { - "filename": "0001.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 43, - "h": 41 - }, - "frame": { - "x": 0, - "y": 126, - "w": 43, - "h": 41 - } - }, - { - "filename": "0009.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 43, - "h": 41 - }, - "frame": { - "x": 0, - "y": 126, - "w": 43, - "h": 41 - } - }, - { - "filename": "0017.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 43, - "h": 41 - }, - "frame": { - "x": 0, - "y": 126, - "w": 43, - "h": 41 - } - }, - { - "filename": "0025.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 43, - "h": 41 - }, - "frame": { - "x": 0, - "y": 126, - "w": 43, - "h": 41 - } - }, - { - "filename": "0033.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 43, - "h": 41 - }, - "frame": { - "x": 0, - "y": 126, - "w": 43, - "h": 41 - } - }, - { - "filename": "0035.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 43, - "h": 41 - }, - "frame": { - "x": 0, - "y": 126, - "w": 43, - "h": 41 - } - }, - { - "filename": "0037.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 43, - "h": 41 - }, - "frame": { - "x": 0, - "y": 126, - "w": 43, - "h": 41 - } - }, - { - "filename": "0039.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 43, - "h": 41 - }, - "frame": { - "x": 0, - "y": 126, - "w": 43, - "h": 41 - } - }, - { - "filename": "0041.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 43, - "h": 41 - }, - "frame": { - "x": 0, - "y": 126, - "w": 43, - "h": 41 - } - }, - { - "filename": "0043.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 1, - "y": 7, - "w": 43, - "h": 41 - }, - "frame": { - "x": 0, - "y": 126, - "w": 43, - "h": 41 - } - }, - { - "filename": "0049.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 43, - "h": 41 - }, - "frame": { - "x": 0, - "y": 126, - "w": 43, - "h": 41 - } - }, - { - "filename": "0051.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 43, - "h": 41 - }, - "frame": { - "x": 0, - "y": 126, - "w": 43, - "h": 41 - } - }, - { - "filename": "0059.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 43, - "h": 41 - }, - "frame": { - "x": 0, - "y": 126, - "w": 43, - "h": 41 - } - }, - { - "filename": "0067.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 43, - "h": 41 - }, - "frame": { - "x": 0, - "y": 126, - "w": 43, - "h": 41 - } - }, - { - "filename": "0046.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 44, - "h": 40 - }, - "frame": { - "x": 45, - "y": 41, - "w": 44, - "h": 40 - } - }, - { - "filename": "0045.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 1, - "y": 0, - "w": 43, - "h": 40 - }, - "frame": { - "x": 89, - "y": 41, - "w": 43, - "h": 40 - } - }, - { - "filename": "0047.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 1, - "y": 0, - "w": 43, - "h": 40 - }, - "frame": { - "x": 89, - "y": 41, - "w": 43, - "h": 40 - } - }, - { - "filename": "0004.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 2, - "y": 7, - "w": 42, - "h": 41 - }, - "frame": { - "x": 44, - "y": 81, - "w": 42, - "h": 41 - } - }, - { - "filename": "0006.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 2, - "y": 7, - "w": 42, - "h": 41 - }, - "frame": { - "x": 44, - "y": 81, - "w": 42, - "h": 41 - } - }, - { - "filename": "0012.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 2, - "y": 7, - "w": 42, - "h": 41 - }, - "frame": { - "x": 44, - "y": 81, - "w": 42, - "h": 41 - } - }, - { - "filename": "0014.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 2, - "y": 7, - "w": 42, - "h": 41 - }, - "frame": { - "x": 44, - "y": 81, - "w": 42, - "h": 41 - } - }, - { - "filename": "0020.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 2, - "y": 7, - "w": 42, - "h": 41 - }, - "frame": { - "x": 44, - "y": 81, - "w": 42, - "h": 41 - } - }, - { - "filename": "0022.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 2, - "y": 7, - "w": 42, - "h": 41 - }, - "frame": { - "x": 44, - "y": 81, - "w": 42, - "h": 41 - } - }, - { - "filename": "0028.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 2, - "y": 7, - "w": 42, - "h": 41 - }, - "frame": { - "x": 44, - "y": 81, - "w": 42, - "h": 41 - } - }, - { - "filename": "0030.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 2, - "y": 7, - "w": 42, - "h": 41 - }, - "frame": { - "x": 44, - "y": 81, - "w": 42, - "h": 41 - } - }, - { - "filename": "0054.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 2, - "y": 7, - "w": 42, - "h": 41 - }, - "frame": { - "x": 44, - "y": 81, - "w": 42, - "h": 41 - } - }, - { - "filename": "0056.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 2, - "y": 7, - "w": 42, - "h": 41 - }, - "frame": { - "x": 44, - "y": 81, - "w": 42, - "h": 41 - } - }, - { - "filename": "0062.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 2, - "y": 7, - "w": 42, - "h": 41 - }, - "frame": { - "x": 44, - "y": 81, - "w": 42, - "h": 41 - } - }, - { - "filename": "0064.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 2, - "y": 7, - "w": 42, - "h": 41 - }, - "frame": { - "x": 44, - "y": 81, - "w": 42, - "h": 41 - } - }, - { - "filename": "0005.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 3, - "y": 7, - "w": 41, - "h": 41 - }, - "frame": { - "x": 86, - "y": 81, - "w": 41, - "h": 41 - } - }, - { - "filename": "0013.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 3, - "y": 7, - "w": 41, - "h": 41 - }, - "frame": { - "x": 86, - "y": 81, - "w": 41, - "h": 41 - } - }, - { - "filename": "0021.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 3, - "y": 7, - "w": 41, - "h": 41 - }, - "frame": { - "x": 86, - "y": 81, - "w": 41, - "h": 41 - } - }, - { - "filename": "0029.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 3, - "y": 7, - "w": 41, - "h": 41 - }, - "frame": { - "x": 86, - "y": 81, - "w": 41, - "h": 41 - } - }, - { - "filename": "0055.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 3, - "y": 7, - "w": 41, - "h": 41 - }, - "frame": { - "x": 86, - "y": 81, - "w": 41, - "h": 41 - } - }, - { - "filename": "0063.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 3, - "y": 7, - "w": 41, - "h": 41 - }, - "frame": { - "x": 86, - "y": 81, - "w": 41, - "h": 41 - } - }, - { - "filename": "0044.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 42 - }, - "frame": { - "x": 127, - "y": 81, - "w": 40, - "h": 42 - } - }, - { - "filename": "0036.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 2, - "y": 6, - "w": 41, - "h": 42 - }, - "frame": { - "x": 43, - "y": 122, - "w": 41, - "h": 42 - } - }, - { - "filename": "0040.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 41, - "h": 42 - }, - "frame": { - "x": 84, - "y": 122, - "w": 41, - "h": 42 - } - }, - { - "filename": "0048.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 48, - "h": 49 - }, - "spriteSourceSize": { - "x": 1, - "y": 8, - "w": 41, - "h": 41 - }, - "frame": { - "x": 125, - "y": 123, - "w": 41, - "h": 41 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:265fdf7e226496ba08465dfaf7110126:d3c7e5104ff35ad1a1d1e07ba8a2af96:b1fe411cd93ff8f39d0ba407d084a2a9$" - } -} +{ + "textures": [ + { + "image": "4555.png", + "format": "RGBA8888", + "size": { + "w": 218, + "h": 218 + }, + "scale": 1, + "frames": [ + { + "filename": "0004.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 61, + "h": 75 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 60, + "h": 75 + }, + "frame": { + "x": 0, + "y": 0, + "w": 60, + "h": 75 + } + }, + { + "filename": "0010.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 61, + "h": 75 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 60, + "h": 75 + }, + "frame": { + "x": 0, + "y": 0, + "w": 60, + "h": 75 + } + }, + { + "filename": "0005.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 61, + "h": 75 + }, + "spriteSourceSize": { + "x": 3, + "y": 0, + "w": 58, + "h": 75 + }, + "frame": { + "x": 0, + "y": 75, + "w": 58, + "h": 75 + } + }, + { + "filename": "0009.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 61, + "h": 75 + }, + "spriteSourceSize": { + "x": 3, + "y": 0, + "w": 58, + "h": 75 + }, + "frame": { + "x": 0, + "y": 75, + "w": 58, + "h": 75 + } + }, + { + "filename": "0006.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 61, + "h": 75 + }, + "spriteSourceSize": { + "x": 3, + "y": 0, + "w": 58, + "h": 75 + }, + "frame": { + "x": 58, + "y": 75, + "w": 58, + "h": 75 + } + }, + { + "filename": "0008.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 61, + "h": 75 + }, + "spriteSourceSize": { + "x": 3, + "y": 0, + "w": 58, + "h": 75 + }, + "frame": { + "x": 58, + "y": 75, + "w": 58, + "h": 75 + } + }, + { + "filename": "0007.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 61, + "h": 75 + }, + "spriteSourceSize": { + "x": 4, + "y": 0, + "w": 57, + "h": 75 + }, + "frame": { + "x": 60, + "y": 0, + "w": 57, + "h": 75 + } + }, + { + "filename": "0003.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 61, + "h": 75 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 59, + "h": 74 + }, + "frame": { + "x": 117, + "y": 0, + "w": 59, + "h": 74 + } + }, + { + "filename": "0011.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 61, + "h": 75 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 59, + "h": 74 + }, + "frame": { + "x": 117, + "y": 0, + "w": 59, + "h": 74 + } + }, + { + "filename": "0002.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 61, + "h": 75 + }, + "spriteSourceSize": { + "x": 0, + "y": 2, + "w": 59, + "h": 73 + }, + "frame": { + "x": 117, + "y": 74, + "w": 59, + "h": 73 + } + }, + { + "filename": "0012.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 61, + "h": 75 + }, + "spriteSourceSize": { + "x": 0, + "y": 2, + "w": 59, + "h": 73 + }, + "frame": { + "x": 117, + "y": 74, + "w": 59, + "h": 73 + } + }, + { + "filename": "0001.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 61, + "h": 75 + }, + "spriteSourceSize": { + "x": 0, + "y": 4, + "w": 59, + "h": 71 + }, + "frame": { + "x": 116, + "y": 147, + "w": 59, + "h": 71 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:8c03d5a85bd38061e1546639fec46360:c82e507fba00c56a331f2f65db25d979:b1fe411cd93ff8f39d0ba407d084a2a9$" + } +} diff --git a/public/images/pokemon/exp/shiny/4555.png b/public/images/pokemon/exp/shiny/4555.png index c5da9b8ec1e..1fc84012eed 100644 Binary files a/public/images/pokemon/exp/shiny/4555.png and b/public/images/pokemon/exp/shiny/4555.png differ diff --git a/src/data/ability.ts b/src/data/ability.ts index b1f0d2b197c..eb55f661e66 100644 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -2910,7 +2910,7 @@ export class PostTurnResetStatusAbAttr extends PostTurnAbAttr { } if (this.target?.status) { - this.target.scene.queueMessage(getPokemonMessage(this.target, getStatusEffectHealText(this.target.status?.effect))); + this.target.scene.queueMessage(getStatusEffectHealText(this.target.status?.effect, getPokemonNameWithAffix(this.target))); this.target.resetStatus(false); this.target.updateInfo(); return true; diff --git a/src/data/berry.ts b/src/data/berry.ts index 4e0d1dbd85f..2f0f466d8a9 100644 --- a/src/data/berry.ts +++ b/src/data/berry.ts @@ -1,5 +1,5 @@ import { PokemonHealPhase, StatChangePhase } from "../phases"; -import { getPokemonMessage } from "../messages"; +import { getPokemonMessage, getPokemonNameWithAffix } from "../messages"; import Pokemon, { HitResult } from "../field/pokemon"; import { BattleStat } from "./battle-stat"; import { getStatusEffectHealText } from "./status-effect"; @@ -80,7 +80,7 @@ export function getBerryEffectFunc(berryType: BerryType): BerryEffectFunc { pokemon.battleData.berriesEaten.push(berryType); } if (pokemon.status) { - pokemon.scene.queueMessage(getPokemonMessage(pokemon, getStatusEffectHealText(pokemon.status.effect))); + pokemon.scene.queueMessage(getStatusEffectHealText(pokemon.status.effect, getPokemonNameWithAffix(pokemon))); } pokemon.resetStatus(true, true); pokemon.updateInfo(); diff --git a/src/data/move.ts b/src/data/move.ts index 5ab4b1e8a64..9964665c12a 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -1763,7 +1763,7 @@ export class PsychoShiftEffectAttr extends MoveEffectAttr { if (!target.status || (target.status.effect === statusToApply && move.chance < 0)) { const statusAfflictResult = target.trySetStatus(statusToApply, true, user); if (statusAfflictResult) { - user.scene.queueMessage(getPokemonMessage(user, getStatusEffectHealText(user.status.effect))); + user.scene.queueMessage(getStatusEffectHealText(user.status.effect, getPokemonNameWithAffix(user))); user.resetStatus(); user.updateInfo(); } @@ -1909,7 +1909,7 @@ export class RemoveHeldItemAttr extends MoveEffectAttr { } /** - * Attribute that causes targets of the move to eat a berry. If chosenBerry is not overridden, a random berry will be picked from the target's inventory. + * Attribute that causes targets of the move to eat a berry. Used for Teatime, Stuff Cheeks */ export class EatBerryAttr extends MoveEffectAttr { protected chosenBerry: BerryModifier; @@ -1918,42 +1918,29 @@ export class EatBerryAttr extends MoveEffectAttr { this.chosenBerry = undefined; } /** - * Causes the target to eat a berry. - * @param user {@linkcode Pokemon} Pokemon that used the move - * @param target {@linkcode Pokemon} Pokemon that will eat a berry - * @param move {@linkcode Move} The move being used - * @param args Unused - * @returns {boolean} true if the function succeeds - */ + * Causes the target to eat a berry. + * @param user {@linkcode Pokemon} Pokemon that used the move + * @param target {@linkcode Pokemon} Pokemon that will eat a berry + * @param move {@linkcode Move} The move being used + * @param args Unused + * @returns {boolean} true if the function succeeds + */ apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { if (!super.apply(user, target, move, args)) { return false; } - if (this.chosenBerry === undefined) { // if no berry has been provided, pick a random berry from their inventory - const heldBerries = this.getTargetHeldBerries(target); - if (heldBerries.length <= 0) { - return false; - } - this.chosenBerry = heldBerries[user.randSeedInt(heldBerries.length)]; + const heldBerries = this.getTargetHeldBerries(target); + if (heldBerries.length <= 0) { + return false; } - - getBerryEffectFunc(this.chosenBerry.berryType)(target); // target eats the berry - + this.chosenBerry = heldBerries[user.randSeedInt(heldBerries.length)]; const preserve = new Utils.BooleanHolder(false); - target.scene.applyModifiers(PreserveBerryModifier, target.isPlayer(), target, preserve); - - if (!preserve.value) { // remove the eaten berry if not preserved - if (!--this.chosenBerry.stackCount) { - target.scene.removeModifier(this.chosenBerry, !target.isPlayer()); - } - target.scene.updateModifiers(target.isPlayer()); + target.scene.applyModifiers(PreserveBerryModifier, target.isPlayer(), target, preserve); // check for berry pouch preservation + if (!preserve.value) { + this.reduceBerryModifier(target); } - - this.chosenBerry = undefined; - - applyAbAttrs(HealFromBerryUseAbAttr, target, new Utils.BooleanHolder(false)); - + this.eatBerry(target); return true; } @@ -1962,7 +1949,21 @@ export class EatBerryAttr extends MoveEffectAttr { && (m as BerryModifier).pokemonId === target.id, target.isPlayer()) as BerryModifier[]; } + reduceBerryModifier(target: Pokemon) { + if (this.chosenBerry.stackCount === 1) { + target.scene.removeModifier(this.chosenBerry, !target.isPlayer()); + } else { + this.chosenBerry.stackCount--; + } + target.scene.updateModifiers(target.isPlayer()); + } + + eatBerry(consumer: Pokemon) { + getBerryEffectFunc(this.chosenBerry.berryType)(consumer); // consumer eats the berry + applyAbAttrs(HealFromBerryUseAbAttr, consumer, new Utils.BooleanHolder(false)); + } } + /** * Attribute used for moves that steal a random berry from the target. The user then eats the stolen berry. * Used for Pluck & Bug Bite. @@ -1972,36 +1973,30 @@ export class StealEatBerryAttr extends EatBerryAttr { super(); } /** - * User steals a random berry from the target and then eats it. - * @param {Pokemon} user Pokemon that used the move and will eat the stolen berry - * @param {Pokemon} target Pokemon that will have its berry stolen - * @param {Move} move Move being used - * @param {any[]} args Unused - * @returns {boolean} true if the function succeeds - */ + * User steals a random berry from the target and then eats it. + * @param {Pokemon} user Pokemon that used the move and will eat the stolen berry + * @param {Pokemon} target Pokemon that will have its berry stolen + * @param {Move} move Move being used + * @param {any[]} args Unused + * @returns {boolean} true if the function succeeds + */ apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - const cancelled = new Utils.BooleanHolder(false); applyAbAttrs(BlockItemTheftAbAttr, target, cancelled); // check for abilities that block item theft if (cancelled.value === true) { return false; } - const heldBerries = this.getTargetHeldBerries(target).filter(i => i.getTransferrable(false)); - - if (heldBerries.length) { // if the target has berries, pick a random berry and steal it - this.chosenBerry = heldBerries[user.randSeedInt(heldBerries.length)]; - - if (this.chosenBerry.stackCount === 1) { // remove modifier if its the last berry - target.scene.removeModifier(this.chosenBerry, !target.isPlayer()); - } - target.scene.updateModifiers(target.isPlayer()); - - user.scene.queueMessage(getPokemonMessage(user, ` stole and ate\n${target.name}'s ${this.chosenBerry.type.name}!`)); - return super.apply(user, user, move, args); + if (heldBerries.length <= 0) { + return false; } - - return false; + // if the target has berries, pick a random berry and steal it + this.chosenBerry = heldBerries[user.randSeedInt(heldBerries.length)]; + const message = i18next.t("battle:stealEatBerry", {pokemonName: user.name, targetName: target.name, berryName: this.chosenBerry.type.name}); + user.scene.queueMessage(message); + this.reduceBerryModifier(target); + this.eatBerry(user); + return true; } } @@ -2037,7 +2032,7 @@ export class HealStatusEffectAttr extends MoveEffectAttr { const pokemon = this.selfTarget ? user : target; if (pokemon.status && this.effects.includes(pokemon.status.effect)) { - pokemon.scene.queueMessage(getPokemonMessage(pokemon, getStatusEffectHealText(pokemon.status.effect))); + pokemon.scene.queueMessage(getStatusEffectHealText(pokemon.status.effect, getPokemonNameWithAffix(pokemon))); pokemon.resetStatus(); pokemon.updateInfo(); diff --git a/src/data/status-effect.ts b/src/data/status-effect.ts index 810bd4d9482..5949fb2f130 100644 --- a/src/data/status-effect.ts +++ b/src/data/status-effect.ts @@ -1,4 +1,5 @@ import * as Utils from "../utils"; +import i18next, { ParseKeys } from "i18next"; export enum StatusEffect { NONE, @@ -31,94 +32,52 @@ export class Status { } } -export function getStatusEffectObtainText(statusEffect: StatusEffect, sourceText?: string): string { - const sourceClause = sourceText ? ` ${statusEffect !== StatusEffect.SLEEP ? "by" : "from"} ${sourceText}` : ""; +function getStatusEffectMessageKey(statusEffect: StatusEffect): string { switch (statusEffect) { case StatusEffect.POISON: - return `\nwas poisoned${sourceClause}!`; + return "statusEffect:poison"; case StatusEffect.TOXIC: - return `\nwas badly poisoned${sourceClause}!`; + return "statusEffect:toxic"; case StatusEffect.PARALYSIS: - return ` was paralyzed${sourceClause}!\nIt may be unable to move!`; + return "statusEffect:paralysis"; case StatusEffect.SLEEP: - return `\nfell asleep${sourceClause}!`; + return "statusEffect:sleep"; case StatusEffect.FREEZE: - return `\nwas frozen solid${sourceClause}!`; + return "statusEffect:freeze"; case StatusEffect.BURN: - return `\nwas burned${sourceClause}!`; + return "statusEffect:burn"; + default: + return "statusEffect:none"; } - - return ""; } -export function getStatusEffectActivationText(statusEffect: StatusEffect): string { - switch (statusEffect) { - case StatusEffect.POISON: - case StatusEffect.TOXIC: - return " is hurt\nby poison!"; - case StatusEffect.PARALYSIS: - return " is paralyzed!\nIt can't move!"; - case StatusEffect.SLEEP: - return " is fast asleep."; - case StatusEffect.FREEZE: - return " is\nfrozen solid!"; - case StatusEffect.BURN: - return " is hurt\nby its burn!"; +export function getStatusEffectObtainText(statusEffect: StatusEffect, pokemonNameWithAffix: string, sourceText?: string): string { + if (!sourceText) { + const i18nKey = `${getStatusEffectMessageKey(statusEffect)}.obtain`as ParseKeys; + return i18next.t(i18nKey, { pokemonNameWithAffix: pokemonNameWithAffix }); } - - return ""; + const i18nKey = `${getStatusEffectMessageKey(statusEffect)}.obtainSource`as ParseKeys; + return i18next.t(i18nKey, { pokemonNameWithAffix: pokemonNameWithAffix, sourceText: sourceText }); } -export function getStatusEffectOverlapText(statusEffect: StatusEffect): string { - switch (statusEffect) { - case StatusEffect.POISON: - case StatusEffect.TOXIC: - return " is\nalready poisoned!"; - case StatusEffect.PARALYSIS: - return " is\nalready paralyzed!"; - case StatusEffect.SLEEP: - return " is\nalready asleep!"; - case StatusEffect.FREEZE: - return " is\nalready frozen!"; - case StatusEffect.BURN: - return " is\nalready burned!"; - } - - return ""; +export function getStatusEffectActivationText(statusEffect: StatusEffect, pokemonNameWithAffix: string): string { + const i18nKey = `${getStatusEffectMessageKey(statusEffect)}.activation` as ParseKeys; + return i18next.t(i18nKey, { pokemonNameWithAffix: pokemonNameWithAffix }); } -export function getStatusEffectHealText(statusEffect: StatusEffect): string { - switch (statusEffect) { - case StatusEffect.POISON: - case StatusEffect.TOXIC: - return " was\ncured of its poison!"; - case StatusEffect.PARALYSIS: - return " was\nhealed of paralysis!"; - case StatusEffect.SLEEP: - return " woke up!"; - case StatusEffect.FREEZE: - return " was\ndefrosted!"; - case StatusEffect.BURN: - return " was\nhealed of its burn!"; - } +export function getStatusEffectOverlapText(statusEffect: StatusEffect, pokemonNameWithAffix: string): string { + const i18nKey = `${getStatusEffectMessageKey(statusEffect)}.overlap` as ParseKeys; + return i18next.t(i18nKey, { pokemonNameWithAffix: pokemonNameWithAffix }); +} - return ""; +export function getStatusEffectHealText(statusEffect: StatusEffect, pokemonNameWithAffix: string): string { + const i18nKey = `${getStatusEffectMessageKey(statusEffect)}.heal` as ParseKeys; + return i18next.t(i18nKey, { pokemonNameWithAffix: pokemonNameWithAffix }); } export function getStatusEffectDescriptor(statusEffect: StatusEffect): string { - switch (statusEffect) { - case StatusEffect.POISON: - case StatusEffect.TOXIC: - return "poisoning"; - case StatusEffect.PARALYSIS: - return "paralysis"; - case StatusEffect.SLEEP: - return "sleep"; - case StatusEffect.FREEZE: - return "freezing"; - case StatusEffect.BURN: - return "burn"; - } + const i18nKey = `${getStatusEffectMessageKey(statusEffect)}.description` as ParseKeys; + return i18next.t(i18nKey); } export function getStatusEffectCatchRateMultiplier(statusEffect: StatusEffect): number { diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 3ee19920ae9..88d7f6b73a8 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -1155,7 +1155,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { applyPreDefendAbAttrs(MoveImmunityAbAttr, this, source, move, cancelled, typeMultiplier, true); } - return (!cancelled.value ? typeMultiplier.value : 0) as TypeDamageMultiplier; + return (!cancelled.value ? Number(typeMultiplier.value) : 0) as TypeDamageMultiplier; } getAttackTypeEffectiveness(moveType: Type, source?: Pokemon, ignoreStrongWinds: boolean = false): TypeDamageMultiplier { diff --git a/src/interfaces/locales.ts b/src/interfaces/locales.ts index 76dc76058aa..5f7c52100c1 100644 --- a/src/interfaces/locales.ts +++ b/src/interfaces/locales.ts @@ -58,6 +58,20 @@ export interface BerryTranslationEntries { [key: string]: BerryTranslationEntry } +export interface StatusEffectTranslationEntries { + [key: string]: StatusEffectTranslationEntry +} + +export interface StatusEffectTranslationEntry { + name: string, + obtain: string, + obtainSource: string, + activation: string, + overlap: string, + heal: string + description: string, +} + export interface AchievementTranslationEntry { name?: string, description?: string, diff --git a/src/locales/de/ability-trigger.ts b/src/locales/de/ability-trigger.ts index d6c48555d51..4e69db20231 100644 --- a/src/locales/de/ability-trigger.ts +++ b/src/locales/de/ability-trigger.ts @@ -7,5 +7,5 @@ export const abilityTriggers: SimpleTranslationEntries = { "iceFaceAvoidedDamage": "{{pokemonName}} wehrt Schaden mit {{abilityName}} ab!", "trace": "{{pokemonName}} kopiert {{abilityName}} von {{targetName}}!", "windPowerCharged": "Der Treffer durch {{moveName}} läd die Stärke von {{pokemonName}} auf!", - "quickDraw": "{{pokemonName}} can act faster than normal, thanks to its Quick Draw!", + "quickDraw": "Durch Schnellschuss kann {{pokemonName}} schneller handeln als sonst!", } as const; diff --git a/src/locales/de/battle.ts b/src/locales/de/battle.ts index a042a997afe..67c2cd9a6b0 100644 --- a/src/locales/de/battle.ts +++ b/src/locales/de/battle.ts @@ -39,7 +39,7 @@ export const battle: SimpleTranslationEntries = { "learnMoveForgetSuccess": "{{pokemonName}} hat\n{{moveName}} vergessen.", "countdownPoof": "@d{32}Eins, @d{15}zwei @d{15}und@d{15}… @d{15}… @d{15}… @d{15}@s{pb_bounce_1}schwupp!", "learnMoveAnd": "Und…", - "levelCapUp": "Das Levelbeschränkung\nwurde auf {{levelCap}} erhöht!", + "levelCapUp": "Die Levelbeschränkung\nwurde auf {{levelCap}} erhöht!", "moveNotImplemented": "{{moveName}} ist noch nicht implementiert und kann nicht ausgewählt werden.", "moveNoPP": "Es sind keine AP für\ndiese Attacke mehr übrig!", "moveDisabled": "{{moveName}} ist deaktiviert!", @@ -56,8 +56,8 @@ export const battle: SimpleTranslationEntries = { "escapeVerbFlee": "flucht", "skipItemQuestion": "Bist du sicher, dass du kein Item nehmen willst?", "notDisabled": "{{pokemonName}}'s {{moveName}} ist\nnicht mehr deaktiviert!", - "turnEndHpRestore": "{{pokemonName}}'s HP was restored.", - "hpIsFull": "{{pokemonName}}'s\nHP is full!", + "turnEndHpRestore": "Die KP von {{pokemonName}} wurden wiederhergestellt.", + "hpIsFull": "Die KP von {{pokemonName}} sind voll!", "eggHatching": "Oh?", "ivScannerUseQuestion": "IV-Scanner auf {{pokemonName}} benutzen?", "wildPokemonWithAffix": "{{pokemonName}} (wild)", @@ -65,6 +65,7 @@ export const battle: SimpleTranslationEntries = { "useMove": "{{pokemonNameWithAffix}} setzt {{moveName}} ein!", "drainMessage": "{{pokemonName}} wurde Energie abgesaugt", "regainHealth": "KP von {{pokemonName}} wurden wieder aufgefrischt!", + "stealEatBerry": "{{pokemonName}} stole and ate\n{{targetName}}'s {{berryName}}!", "fainted": "{{pokemonNameWithAffix}} wurde besiegt!", "statRose": "{{stats}} von {{pokemonNameWithAffix}} steigt!", "statSharplyRose": "{{stats}} von {{pokemonNameWithAffix}} steigt stark!", @@ -74,7 +75,7 @@ export const battle: SimpleTranslationEntries = { "statHarshlyFell": "{{stats}} von {{pokemonNameWithAffix}} sinkt stark!", "statSeverelyFell": "{{stats}} von {{pokemonNameWithAffix}} sinkt drastisch!", "statWontGoAnyLower": "{{stats}} von {{pokemonNameWithAffix}} kann nicht weiter sinken!", - "ppReduced": "It reduced the PP of {{targetName}}'s\n{{moveName}} by {{reduction}}!", + "ppReduced": "{{moveName}} von {{targetName}} wird um {{reduction}} AP reduziert!", "battlerTagsRechargingLapse": "{{pokemonNameWithAffix}} kann sich wegen des Rückstoßes durch den Angriff nicht bewegen!", "battlerTagsTrappedOnAdd": "{{pokemonNameWithAffix}} kann nicht mehr fliehen!", "battlerTagsTrappedOnRemove": "{{pokemonNameWithAffix}} wurde von {{moveName}} befreit.", diff --git a/src/locales/de/config.ts b/src/locales/de/config.ts index b7bb827d8d3..77834849d2f 100644 --- a/src/locales/de/config.ts +++ b/src/locales/de/config.ts @@ -35,13 +35,14 @@ import { pokemonInfoContainer } from "./pokemon-info-container"; import { saveSlotSelectUiHandler } from "./save-slot-select-ui-handler"; import { splashMessages } from "./splash-messages"; import { starterSelectUiHandler } from "./starter-select-ui-handler"; +import { statusEffect } from "./status-effect"; import { titles, trainerClasses, trainerNames } from "./trainers"; import { tutorial } from "./tutorial"; import { voucher } from "./voucher"; import { weather } from "./weather"; import { partyUiHandler } from "./party-ui-handler"; -import { settings } from "#app/locales/de/settings.js"; -import { common } from "#app/locales/de/common.js"; +import { settings } from "./settings.js"; +import { common } from "./common.js"; export const deConfig = { ability: ability, @@ -82,6 +83,7 @@ export const deConfig = { settings: settings, splashMessages: splashMessages, starterSelectUiHandler: starterSelectUiHandler, + statusEffect: statusEffect, titles: titles, trainerClasses: trainerClasses, trainerNames: trainerNames, diff --git a/src/locales/de/menu-ui-handler.ts b/src/locales/de/menu-ui-handler.ts index 3b0764bf261..0338ba6f399 100644 --- a/src/locales/de/menu-ui-handler.ts +++ b/src/locales/de/menu-ui-handler.ts @@ -20,5 +20,5 @@ export const menuUiHandler: SimpleTranslationEntries = { "exportData": "Daten exportieren", "cancel": "Abbrechen", "losingProgressionWarning": "Du wirst jeglichen Fortschritt seit Anfang dieses Kampfes verlieren. Fortfahren?", - "noEggs": "You are not hatching\nany eggs at the moment!" + "noEggs": "Du brütest aktuell keine Eier aus!" } as const; diff --git a/src/locales/de/menu.ts b/src/locales/de/menu.ts index 5bbd19be851..bffcdeb1c3e 100644 --- a/src/locales/de/menu.ts +++ b/src/locales/de/menu.ts @@ -53,6 +53,6 @@ export const menu: SimpleTranslationEntries = { "no":"Nein", "disclaimer": "HAFTUNGSAUSSCHLUSS", "disclaimerDescription": "Dieses Spiel ist ein unfertiges Produkt. Es kann spielbeinträchtigende Fehler (bis hin zum Verlust des Speicherstandes)\n aufweisen, sich ohne Vorankündigung ändern und es gibt keine Garantie dass es weiterentwickelt oder fertiggestellt wird.", - "choosePokemon": "Choose a Pokémon.", + "choosePokemon": "Wähle ein Pokémon.", "errorServerDown": "Ups! Es gab einen Fehler beim Versuch\nden Server zu kontaktieren\nLasse dieses Fenster offen\nDu wirst automatisch neu verbunden.", } as const; diff --git a/src/locales/de/status-effect.ts b/src/locales/de/status-effect.ts new file mode 100644 index 00000000000..997d005987e --- /dev/null +++ b/src/locales/de/status-effect.ts @@ -0,0 +1,67 @@ +import { StatusEffectTranslationEntries } from "#app/interfaces/locales.js"; + +export const statusEffect: StatusEffectTranslationEntries = { + none: { + name: "None", + description: "", + obtain: "", + obtainSource: "", + activation: "", + overlap: "", + heal: "" + }, + poison: { + name: "Gift", + description: "Vergiftungen", + obtain: "{{pokemonNameWithAffix}} wurde vergiftet!", + obtainSource: "{{pokemonNameWithAffix}} wurde durch {{sourceText}} vergiftet!", + activation: "{{pokemonNameWithAffix}} wird durch Gift verletzt!", + overlap: "{{pokemonNameWithAffix}} ist bereits vergiftet!", + heal: "Die Vergiftung von {{pokemonNameWithAffix}} wurde geheilt!" + }, + toxic: { + name: "Gift", + description: "Vergiftungen", + obtain: "{{pokemonNameWithAffix}} wurde schwer vergiftet!", + obtainSource: "{{pokemonNameWithAffix}} wurde durch {{sourceText}} schwer vergiftet!", + activation: "{{pokemonNameWithAffix}} wird durch Gift verletzt!", + overlap: "{{pokemonNameWithAffix}} ist bereits vergiftet!", + heal: "Die Vergiftung von {{pokemonNameWithAffix}} wurde geheilt!" + }, + paralysis: { + name: "Paralyse", + description: "Paralyse", + obtain: "{{pokemonNameWithAffix}} wurde paralysiert!\nEs kann eventuell nicht handeln!", + obtainSource: "{{pokemonNameWithAffix}} wurde durch {{sourceText}} paralysiert,\nEs kann eventuell nicht handeln!", + activation: "{{pokemonNameWithAffix}}ist paralysiert!\nEs kann nicht angreifen!", + overlap: "{{pokemonNameWithAffix}} ist bereits paralysiert!", + heal: "Die Paralyse von {{pokemonNameWithAffix}} wurde aufgehoben!" + }, + sleep: { + name: "Schlaf", + description: "Einschlafen", + obtain: "{{pokemonNameWithAffix}} ist eingeschlafen!", + obtainSource: "{{pokemonNameWithAffix}}ist durch {{sourceText}} eingeschlafen!", + activation: "{{pokemonNameWithAffix}} schläft tief und fest!", + overlap: "{{pokemonNameWithAffix}} schläft bereits!", + heal: "{{pokemonNameWithAffix}} ist aufgewacht!" + }, + freeze: { + name: "Gefroren", + description: "Einfrieren", + obtain: "{{pokemonNameWithAffix}} erstarrt zu Eis!", + obtainSource: "{{pokemonNameWithAffix}} erstarrt durch {{sourceText}} zu Eis!", + activation: "{{pokemonNameWithAffix}} ist eingefroren und kann nicht handeln!", + overlap: "{{pokemonNameWithAffix}} ist bereits eingefroren!", + heal: "{{pokemonNameWithAffix}} wurde aufgetaut!" + }, + burn: { + name: "Verbrennung ", + description: "Verbrennungen", + obtain: "{{pokemonNameWithAffix}} erleidet Verbrennungen!", + obtainSource: "{{pokemonNameWithAffix}} erleidet durch {{sourceText}} Verbrennungen!", + activation: "Die Verbrennungen schaden {{pokemonNameWithAffix}}!", + overlap: "{{pokemonNameWithAffix}} leidet bereits unter Verbrennungen!", + heal: "Die Verbrennungen von {{pokemonNameWithAffix}} wurden geheilt!" + }, +} as const; diff --git a/src/locales/en/battle.ts b/src/locales/en/battle.ts index 263a48e8f0a..d41ffc373dc 100644 --- a/src/locales/en/battle.ts +++ b/src/locales/en/battle.ts @@ -65,6 +65,7 @@ export const battle: SimpleTranslationEntries = { "useMove": "{{pokemonNameWithAffix}} used {{moveName}}!", "drainMessage": "{{pokemonName}} had its\nenergy drained!", "regainHealth": "{{pokemonName}} regained\nhealth!", + "stealEatBerry": "{{pokemonName}} stole and ate\n{{targetName}}'s {{berryName}}!", "fainted": "{{pokemonNameWithAffix}} fainted!", "statRose": "{{pokemonNameWithAffix}}'s {{stats}} rose!", "statSharplyRose": "{{pokemonNameWithAffix}}'s {{stats}} sharply rose!", diff --git a/src/locales/en/config.ts b/src/locales/en/config.ts index fbbae3df329..1d40e61bbad 100644 --- a/src/locales/en/config.ts +++ b/src/locales/en/config.ts @@ -1,5 +1,5 @@ -import { common } from "#app/locales/en/common.js"; -import { settings } from "#app/locales/en/settings.js"; +import { common } from "./common.js"; +import { settings } from "./settings.js"; import { ability } from "./ability"; import { abilityTriggers } from "./ability-trigger"; import { PGFachv, PGMachv } from "./achv"; @@ -38,6 +38,7 @@ import { pokemonInfoContainer } from "./pokemon-info-container"; import { saveSlotSelectUiHandler } from "./save-slot-select-ui-handler"; import { splashMessages } from "./splash-messages"; import { starterSelectUiHandler } from "./starter-select-ui-handler"; +import { statusEffect } from "./status-effect"; import { titles, trainerClasses, trainerNames } from "./trainers"; import { tutorial } from "./tutorial"; import { voucher } from "./voucher"; @@ -83,6 +84,7 @@ export const enConfig = { settings: settings, splashMessages: splashMessages, starterSelectUiHandler: starterSelectUiHandler, + statusEffect: statusEffect, titles: titles, trainerClasses: trainerClasses, trainerNames: trainerNames, diff --git a/src/locales/en/status-effect.ts b/src/locales/en/status-effect.ts new file mode 100644 index 00000000000..162b2ada281 --- /dev/null +++ b/src/locales/en/status-effect.ts @@ -0,0 +1,67 @@ +import { StatusEffectTranslationEntries } from "#app/interfaces/locales.js"; + +export const statusEffect: StatusEffectTranslationEntries = { + none: { + name: "None", + description: "", + obtain: "", + obtainSource: "", + activation: "", + overlap: "", + heal: "" + }, + poison: { + name: "Poison", + description: "poisoning", + obtain: "{{pokemonNameWithAffix}}\nwas poisoned!", + obtainSource: "{{pokemonNameWithAffix}}\nwas poisoned by {{sourceText}}!", + activation: "{{pokemonNameWithAffix}} is hurt\nby poison!", + overlap: "{{pokemonNameWithAffix}} is\nalready poisoned!", + heal: "{{pokemonNameWithAffix}} was\ncured of its poison!" + }, + toxic: { + name: "Toxic", + description: "poisoning", + obtain: "{{pokemonNameWithAffix}}\nwas badly poisoned!", + obtainSource: "{{pokemonNameWithAffix}}\nwas badly poisoned by {{sourceText}}!", + activation: "{{pokemonNameWithAffix}} is hurt\nby poison!", + overlap: "{{pokemonNameWithAffix}} is\nalready poisoned!", + heal: "{{pokemonNameWithAffix}} was\ncured of its poison!" + }, + paralysis: { + name: "Paralysis", + description: "paralysis", + obtain: "{{pokemonNameWithAffix}} was paralyzed,\nIt may be unable to move!", + obtainSource: "{{pokemonNameWithAffix}} was paralyzed by {{sourceText}}!\nIt may be unable to move!", + activation: "{{pokemonNameWithAffix}} is paralyzed!\nIt can't move!", + overlap: "{{pokemonNameWithAffix}} is\nalready paralyzed!", + heal: "{{pokemonNameWithAffix}} was\nhealed of paralysis!" + }, + sleep: { + name: "Sleep", + description: "sleep", + obtain: "{{pokemonNameWithAffix}}\nfell asleep!", + obtainSource: "{{pokemonNameWithAffix}}\nfell asleep from {{sourceText}}!", + activation: "{{pokemonNameWithAffix}} is fast asleep.", + overlap: "{{pokemonNameWithAffix}} is\nalready asleep!", + heal: "{{pokemonNameWithAffix}} woke up!" + }, + freeze: { + name: "Freeze", + description: "freezing", + obtain: "{{pokemonNameWithAffix}}\nwas frozen solid!", + obtainSource: "{{pokemonNameWithAffix}}\nwas frozen solid by {{sourceText}}!", + activation: "{{pokemonNameWithAffix}} is\nfrozen solid!", + overlap: "{{pokemonNameWithAffix}} is\nalready frozen!", + heal: "{{pokemonNameWithAffix}} was\ndefrosted!" + }, + burn: { + name: "Burn", + description: "burn", + obtain: "{{pokemonNameWithAffix}}\nwas burned!", + obtainSource: "{{pokemonNameWithAffix}}\nwas burned by {{sourceText}}!", + activation: "{{pokemonNameWithAffix}} is hurt\nby its burn!", + overlap: "{{pokemonNameWithAffix}} is\nalready burned!", + heal: "{{pokemonNameWithAffix}} was\nhealed of its burn!" + }, +} as const; diff --git a/src/locales/es/battle.ts b/src/locales/es/battle.ts index c1a85ffe267..7f5832d069d 100644 --- a/src/locales/es/battle.ts +++ b/src/locales/es/battle.ts @@ -65,6 +65,7 @@ export const battle: SimpleTranslationEntries = { "useMove": "¡{{pokemonNameWithAffix}} usó {{moveName}}!", "drainMessage": "¡{{pokemonName}} tuvo su\nenergía absorbida!", "regainHealth": "¡{{pokemonName}} recuperó\nPS!", + "stealEatBerry": "¡{{pokemonName}} robó la {{berryName}}\nde {{targetName}} y se la comió!", "fainted": "¡{{pokemonNameWithAffix}} se debilitó!", "statRose": "¡El {{stats}} de {{pokemonNameWithAffix}} ha subido!", "statSharplyRose": "¡El {{stats}} de {{pokemonNameWithAffix}} ha subido mucho!", diff --git a/src/locales/es/config.ts b/src/locales/es/config.ts index e09224ce85e..551c7a2f6dc 100644 --- a/src/locales/es/config.ts +++ b/src/locales/es/config.ts @@ -35,13 +35,14 @@ import { pokemonInfoContainer } from "./pokemon-info-container"; import { saveSlotSelectUiHandler } from "./save-slot-select-ui-handler"; import { splashMessages } from "./splash-messages"; import { starterSelectUiHandler } from "./starter-select-ui-handler"; +import { statusEffect } from "./status-effect"; import { titles, trainerClasses, trainerNames } from "./trainers"; import { tutorial } from "./tutorial"; import { voucher } from "./voucher"; import { weather } from "./weather"; import { partyUiHandler } from "./party-ui-handler"; -import { settings } from "#app/locales/es/settings.js"; -import { common } from "#app/locales/es/common.js"; +import { settings } from "./settings.js"; +import { common } from "./common.js"; export const esConfig = { ability: ability, @@ -82,6 +83,7 @@ export const esConfig = { settings: settings, splashMessages: splashMessages, starterSelectUiHandler: starterSelectUiHandler, + statusEffect: statusEffect, titles: titles, trainerClasses: trainerClasses, trainerNames: trainerNames, diff --git a/src/locales/es/status-effect.ts b/src/locales/es/status-effect.ts new file mode 100644 index 00000000000..975288fc451 --- /dev/null +++ b/src/locales/es/status-effect.ts @@ -0,0 +1,67 @@ +import { StatusEffectTranslationEntries } from "#app/interfaces/locales.js"; + +export const statusEffect: StatusEffectTranslationEntries = { + none: { + name: "Ninguno", + description: "", + obtain: "", + obtainSource: "", + activation: "", + overlap: "", + heal: "" + }, + poison: { + name: "Envenenamiento", + description: "envenenamiento", + obtain: "¡{{pokemonNameWithAffix}}\nha sido envenenado!", + obtainSource: "¡{{pokemonNameWithAffix}}\nha sido envenenado por {{sourceText}}!", + activation: "¡El veneno resta PS a {{pokemonNameWithAffix}}!", + overlap: "¡{{pokemonNameWithAffix}} ya\nestá envenenado!", + heal: "¡{{pokemonNameWithAffix}} ya no\nestá envenenado!" + }, + toxic: { + name: "Envenenamiento grave", + description: "envenenamiento grave", + obtain: "¡{{pokemonNameWithAffix}}\nha sido gravemente envenenado!", + obtainSource: "¡{{pokemonNameWithAffix}}\nha sido gravemente envenenado por {{sourceText}}!", + activation: "¡El veneno resta PS a {{pokemonNameWithAffix}}!", + overlap: "¡{{pokemonNameWithAffix}} ya\nestá envenenado!", + heal: "¡{{pokemonNameWithAffix}} ya no\nestá envenenado!" + }, + paralysis: { + name: "Parálisis", + description: "parálisis", + obtain: "¡{{pokemonNameWithAffix}} sufre parálisis!\nQuizás no se pueda mover.", + obtainSource: "¡{{pokemonNameWithAffix}} sufre parálisis por {{sourceText}}!\nQuizás no se pueda mover.", + activation: "¡{{pokemonNameWithAffix}} está paralizado!\n¡No se puede mover!", + overlap: "¡{{pokemonNameWithAffix}} ya\nestá paralizado!", + heal: "¡{{pokemonNameWithAffix}} ya no\nestá paralizado!" + }, + sleep: { + name: "Dormir", + description: "dormir", + obtain: "¡{{pokemonNameWithAffix}}\nse ha dormido!", + obtainSource: "¡{{pokemonNameWithAffix}}\nse ha dormido\npor culpa de {{sourceText}}!", + activation: "¡{{pokemonNameWithAffix}} está/ndormido como un tronco.", + overlap: "¡{{pokemonNameWithAffix}} ya\nestá dormido!", + heal: "¡{{pokemonNameWithAffix}} se despertó!" + }, + freeze: { + name: "Congelamiento", + description: "congelamiento", + obtain: "¡{{pokemonNameWithAffix}}\nha sido congelado!", + obtainSource: "¡{{pokemonNameWithAffix}}\nha sido congelado por {{sourceText}}!", + activation: "¡{{pokemonNameWithAffix}} está\ncongelado!", + overlap: "¡{{pokemonNameWithAffix}} ya\nestá congelado!", + heal: "¡{{pokemonNameWithAffix}} se\nha descongelado!" + }, + burn: { + name: "Quemadura", + description: "quemadura", + obtain: "¡{{pokemonNameWithAffix}}\nse ha quemado!", + obtainSource: "¡{{pokemonNameWithAffix}}\nse ha quemado por {{sourceText}}!", + activation: "¡{{pokemonNameWithAffix}} se resiente\nde las quemaduras!", + overlap: "¡{{pokemonNameWithAffix}} ya\nestá quemado!", + heal: "¡{{pokemonNameWithAffix}} ya no\nestá quemado!" + }, +} as const; diff --git a/src/locales/fr/battle.ts b/src/locales/fr/battle.ts index 3d86c5f84f1..539b7c99094 100644 --- a/src/locales/fr/battle.ts +++ b/src/locales/fr/battle.ts @@ -63,6 +63,7 @@ export const battle: SimpleTranslationEntries = { "wildPokemonWithAffix": "{{pokemonName}} sauvage", "foePokemonWithAffix": "{{pokemonName}} ennemi", "useMove": "{{pokemonNameWithAffix}} utilise\n{{moveName}} !", + "stealEatBerry": "{{pokemonName}} vole et mange\nla {{berryName}} de {{targetName}} !", "drainMessage": "L’énergie de {{pokemonName}}\nest drainée !", "regainHealth": "{{pokemonName}} récupère\ndes PV !", "fainted": "{{pokemonNameWithAffix}}\nest K.O. !", diff --git a/src/locales/fr/config.ts b/src/locales/fr/config.ts index 6bc5a53a376..04af81adf52 100644 --- a/src/locales/fr/config.ts +++ b/src/locales/fr/config.ts @@ -35,13 +35,14 @@ import { pokemonInfoContainer } from "./pokemon-info-container"; import { saveSlotSelectUiHandler } from "./save-slot-select-ui-handler"; import { splashMessages } from "./splash-messages"; import { starterSelectUiHandler } from "./starter-select-ui-handler"; +import { statusEffect } from "./status-effect"; import { titles, trainerClasses, trainerNames } from "./trainers"; import { tutorial } from "./tutorial"; import { voucher } from "./voucher"; import { weather } from "./weather"; import { partyUiHandler } from "./party-ui-handler"; -import { settings } from "#app/locales/fr/settings.js"; -import { common } from "#app/locales/fr/common.js"; +import { settings } from "./settings.js"; +import { common } from "./common.js"; export const frConfig = { ability: ability, @@ -82,6 +83,7 @@ export const frConfig = { settings: settings, splashMessages: splashMessages, starterSelectUiHandler: starterSelectUiHandler, + statusEffect: statusEffect, titles: titles, trainerClasses: trainerClasses, trainerNames: trainerNames, diff --git a/src/locales/fr/status-effect.ts b/src/locales/fr/status-effect.ts new file mode 100644 index 00000000000..f4f210406c6 --- /dev/null +++ b/src/locales/fr/status-effect.ts @@ -0,0 +1,67 @@ +import { StatusEffectTranslationEntries } from "#app/interfaces/locales.js"; + +export const statusEffect: StatusEffectTranslationEntries = { + none: { + name: "Aucun", + description: "", + obtain: "", + obtainSource: "", + activation: "", + overlap: "", + heal: "" + }, + poison: { + name: "Empoisonnement", + description: "empoisonné", + obtain: "{{pokemonNameWithAffix}} est\nempoisonné !", + obtainSource: "{{pokemonNameWithAffix}} est\nempoisonné par {{sourceText}} !", + activation: "{{pokemonNameWithAffix}}\nsouffre du poison !", + overlap: "{{pokemonNameWithAffix}} est\ndéjà empoisonné.", + heal: "{{pokemonNameWithAffix}} n’est\nplus empoisonné !" + }, + toxic: { + name: "Empoisonnement grave", + description: "gravement empoisonné", + obtain: "{{pokemonNameWithAffix}} est\ngravement empoisonné !", + obtainSource: "{{pokemonNameWithAffix}} est\ngravement empoisonné par {{sourceText}} !", + activation: "{{pokemonNameWithAffix}}\nsouffre du poison !", + overlap: "{{pokemonNameWithAffix}} est\ndéjà empoisonné.", + heal: "{{pokemonNameWithAffix}} n’est\nplus empoisonné !" + }, + paralysis: { + name: "Paralysie", + description: "paralysé", + obtain: "{{pokemonNameWithAffix}} est paralysé !\nIl aura du mal à attaquer !", + obtainSource: "{{pokemonNameWithAffix}} est paralysé\npar {{sourceText}} ! Il aura du mal à attaquer !", + activation: "{{pokemonNameWithAffix}} est paralysé !\nIl n’a pas pu attaquer !", + overlap: "{{pokemonNameWithAffix}} est\ndéjà paralysé.", + heal: "{{pokemonNameWithAffix}} n’est\nplus paralysé !" + }, + sleep: { + name: "Sommeil", + description: "endormi", + obtain: "{{pokemonNameWithAffix}}\ns’est endormi !", + obtainSource: "{{pokemonNameWithAffix}} est\nendormi par {{sourceText}} !", + activation: "{{pokemonNameWithAffix}}\ndort profondément.", + overlap: "{{pokemonNameWithAffix}}\ndort déjà.", + heal: "{{pokemonNameWithAffix}}\nse réveille !" + }, + freeze: { + name: "Gelé", + description: "gelé", + obtain: "{{pokemonNameWithAffix}} est\ngelé !", + obtainSource: "{{pokemonNameWithAffix}} est\ngelé par {{sourceText}} !", + activation: "{{pokemonNameWithAffix}}est gelé !\nIl ne peut plus attaquer !", + overlap: "{{pokemonNameWithAffix}} est\ndéjà gelé.", + heal: "{{pokemonNameWithAffix}} n’est\nplus gelé !" + }, + burn: { + name: "Brulure", + description: "brulé", + obtain: "{{pokemonNameWithAffix}} est\nbrulé !", + obtainSource: "{{pokemonNameWithAffix}} est\nbrulé par {{sourceText}} !", + activation: "{{pokemonNameWithAffix}}\nsouffre de sa brulure !", + overlap: "{{pokemonNameWithAffix}} est\ndéjà brulé.", + heal: "{{pokemonNameWithAffix}} n’est\nplus brulé !" + }, +} as const; diff --git a/src/locales/it/battle.ts b/src/locales/it/battle.ts index 2052dc49cfc..d9af58893e5 100644 --- a/src/locales/it/battle.ts +++ b/src/locales/it/battle.ts @@ -60,6 +60,7 @@ export const battle: SimpleTranslationEntries = { "skipItemQuestion": "Sei sicuro di non voler prendere nessun oggetto?", "eggHatching": "Oh!", "ivScannerUseQuestion": "Vuoi usare lo scanner di IV su {{pokemonName}}?", + "stealEatBerry": "{{pokemonName}} stole and ate\n{{targetName}}'s {{berryName}}!", "wildPokemonWithAffix": "{{pokemonName}} selvatico", "foePokemonWithAffix": "{{pokemonName}} avversario", "useMove": "{{pokemonNameWithAffix}} usa {{moveName}}!", diff --git a/src/locales/it/config.ts b/src/locales/it/config.ts index fa0ddb5add2..ac2e37c2df5 100644 --- a/src/locales/it/config.ts +++ b/src/locales/it/config.ts @@ -35,13 +35,14 @@ import { pokemonInfoContainer } from "./pokemon-info-container"; import { saveSlotSelectUiHandler } from "./save-slot-select-ui-handler"; import { splashMessages } from "./splash-messages"; import { starterSelectUiHandler } from "./starter-select-ui-handler"; +import { statusEffect } from "./status-effect"; import { titles, trainerClasses, trainerNames } from "./trainers"; import { tutorial } from "./tutorial"; import { voucher } from "./voucher"; import { weather } from "./weather"; import { partyUiHandler } from "./party-ui-handler"; -import { settings } from "#app/locales/it/settings.js"; -import { common } from "#app/locales/it/common.js"; +import { settings } from "./settings.js"; +import { common } from "./common.js"; export const itConfig = { ability: ability, @@ -82,6 +83,7 @@ export const itConfig = { settings: settings, splashMessages: splashMessages, starterSelectUiHandler: starterSelectUiHandler, + statusEffect: statusEffect, titles: titles, trainerClasses: trainerClasses, trainerNames: trainerNames, diff --git a/src/locales/it/status-effect.ts b/src/locales/it/status-effect.ts new file mode 100644 index 00000000000..1a402ac30fd --- /dev/null +++ b/src/locales/it/status-effect.ts @@ -0,0 +1,67 @@ +import { StatusEffectTranslationEntries } from "#app/interfaces/locales.js"; + +export const statusEffect: StatusEffectTranslationEntries = { + none: { + name: "None", + description: "", + obtain: "", + obtainSource: "", + activation: "", + overlap: "", + heal: "" + }, + poison: { + name: "Poison", + description: "poisoning", + obtain: "{{pokemonNameWithAffix}}\nwas poisoned!", + obtainSource: "{{pokemonNameWithAffix}}\nwas poisoned by {{sourceText}}!", + activation: "{{pokemonNameWithAffix}} is hurt\nby poison!", + overlap: "{{pokemonNameWithAffix}} is\nalready poisoned!", + heal: "{{pokemonNameWithAffix}} was\ncured of its poison!" + }, + toxic: { + name: "Toxic", + description: "poisoning", + obtain: "{{pokemonNameWithAffix}}\nwas badly poisoned!", + obtainSource: "{{pokemonNameWithAffix}}\nwas badly poisoned by {{sourceText}}!", + activation: "{{pokemonNameWithAffix}} is hurt\nby poison!", + overlap: "{{pokemonNameWithAffix}} is\nalready poisoned!", + heal: "{{pokemonNameWithAffix}} was\ncured of its poison!" + }, + paralysis: { + name: "Paralysis", + description: "paralysis", + obtain: "{{pokemonNameWithAffix}} was paralyzed,\nIt may be unable to move!", + obtainSource: "{{pokemonNameWithAffix}} was paralyzed by {{sourceText}},\nIt may be unable to move!", + activation: "{{pokemonNameWithAffix}} is paralyzed!\nIt can't move!", + overlap: "{{pokemonNameWithAffix}} is\nalready paralyzed!", + heal: "{{pokemonNameWithAffix}} was\nhealed of paralysis!" + }, + sleep: { + name: "Sleep", + description: "sleep", + obtain: "{{pokemonNameWithAffix}}\nfell asleep!", + obtainSource: "{{pokemonNameWithAffix}}\nfell asleep from {{sourceText}}!", + activation: "{{pokemonNameWithAffix}} is fast asleep.", + overlap: "{{pokemonNameWithAffix}} is\nalready asleep!", + heal: "{{pokemonNameWithAffix}} woke up!" + }, + freeze: { + name: "Freeze", + description: "freezing", + obtain: "{{pokemonNameWithAffix}}\nwas frozen solid!", + obtainSource: "{{pokemonNameWithAffix}}\nwas frozen solid by {{sourceText}}!", + activation: "{{pokemonNameWithAffix}} is\nfrozen solid!", + overlap: "{{pokemonNameWithAffix}} is\nalready frozen!", + heal: "{{pokemonNameWithAffix}} was\ndefrosted!" + }, + burn: { + name: "Burn", + description: "burn", + obtain: "{{pokemonNameWithAffix}}\nwas burned!", + obtainSource: "{{pokemonNameWithAffix}}\nwas burned by {{sourceText}}!", + activation: "{{pokemonNameWithAffix}} is hurt\nby its burn!", + overlap: "{{pokemonNameWithAffix}} is\nalready burned!", + heal: "{{pokemonNameWithAffix}} was\nhealed of its burn!" + }, +} as const; diff --git a/src/locales/ko/battle.ts b/src/locales/ko/battle.ts index bf32bbe08e7..e9bfb7cb307 100644 --- a/src/locales/ko/battle.ts +++ b/src/locales/ko/battle.ts @@ -64,6 +64,7 @@ export const battle: SimpleTranslationEntries = { "foePokemonWithAffix": "상대 {{pokemonName}}", "useMove": "{{pokemonNameWithAffix}}의 {{moveName}}!", "drainMessage": "{{pokemonName}}[[로]]부터\n체력을 흡수했다!", + "stealEatBerry": "{{pokemonName}}[[가]]\n{{targetName}}의 {{berryName}}[[를]] 빼앗아 먹었다!", "regainHealth": "{{pokemonName}}[[는]]\n체력을 회복했다!", "fainted": "{{pokemonNameWithAffix}}[[는]] 쓰러졌다!", "statRose": "{{pokemonNameWithAffix}}의\n{{stats}}[[가]] 올라갔다!", @@ -131,5 +132,5 @@ export const battle: SimpleTranslationEntries = { "battlerTagsSaltCuredOnAdd": "{{pokemonNameWithAffix}}[[는]]\n소금에 절여졌다!", "battlerTagsSaltCuredLapse": "{{pokemonNameWithAffix}}[[는]] 소금절이의\n데미지를 입고 있다.", "battlerTagsCursedOnAdd": "{{pokemonNameWithAffix}}[[는]]\n자신의 체력을 깎아서\n{{pokemonName}}에게 저주를 걸었다!", - "battlerTagsCursedLapse": "{{pokemonNameWithAffix}}[[는]]\n저주받고 있다!" + "battlerTagsCursedLapse": "{{pokemonNameWithAffix}}[[는]]\n저주받고 있다!", } as const; diff --git a/src/locales/ko/config.ts b/src/locales/ko/config.ts index 10fa5cb9a3d..59603c8519d 100644 --- a/src/locales/ko/config.ts +++ b/src/locales/ko/config.ts @@ -35,13 +35,14 @@ import { pokemonInfoContainer } from "./pokemon-info-container"; import { saveSlotSelectUiHandler } from "./save-slot-select-ui-handler"; import { splashMessages } from "./splash-messages"; import { starterSelectUiHandler } from "./starter-select-ui-handler"; +import { statusEffect } from "./status-effect"; import { titles, trainerClasses, trainerNames } from "./trainers"; import { tutorial } from "./tutorial"; import { voucher } from "./voucher"; import { weather } from "./weather"; import { partyUiHandler } from "./party-ui-handler"; -import { settings } from "#app/locales/ko/settings.js"; -import { common } from "#app/locales/ko/common.js"; +import { settings } from "./settings.js"; +import { common } from "./common.js"; export const koConfig = { ability: ability, @@ -82,6 +83,7 @@ export const koConfig = { settings: settings, splashMessages: splashMessages, starterSelectUiHandler: starterSelectUiHandler, + statusEffect: statusEffect, titles: titles, trainerClasses: trainerClasses, trainerNames: trainerNames, diff --git a/src/locales/ko/status-effect.ts b/src/locales/ko/status-effect.ts new file mode 100644 index 00000000000..c4e0ab52722 --- /dev/null +++ b/src/locales/ko/status-effect.ts @@ -0,0 +1,67 @@ +import { StatusEffectTranslationEntries } from "#app/interfaces/locales.js"; + +export const statusEffect: StatusEffectTranslationEntries = { + none: { + name: "없음", + description: "", + obtain: "", + obtainSource: "", + activation: "", + overlap: "", + heal: "" + }, + poison: { + name: "독", + description: "독", + obtain: "{{pokemonNameWithAffix}}의\n몸에 독이 퍼졌다!", + obtainSource: "{{pokemonNameWithAffix}}[[는]]\n{{sourceText}} 때문에 몸에 독이 퍼졌다!", + activation: "{{pokemonNameWithAffix}}[[는]]\n독에 의한 데미지를 입었다!", + overlap: "{{pokemonNameWithAffix}}[[는]] 이미\n몸에 독이 퍼진 상태다.", + heal: "{{pokemonNameWithAffix}}의 독은\n말끔하게 해독됐다!" + }, + toxic: { + name: "맹독", + description: "독", + obtain: "{{pokemonNameWithAffix}}의\n몸에 맹독이 퍼졌다!", + obtainSource: "{{pokemonNameWithAffix}}[[는]]\n{{sourceText}} 때문에 몸에 맹독이 퍼졌다!", + activation: "{{pokemonNameWithAffix}}[[는]]\n독에 의한 데미지를 입었다!", + overlap: "{{pokemonNameWithAffix}}[[는]] 이미\n몸에 독이 퍼진 상태다.", + heal: "{{pokemonNameWithAffix}}의 독은\n말끔하게 해독됐다!" + }, + paralysis: { + name: "마비", + description: "마비", + obtain: "{{pokemonNameWithAffix}}[[는]] 마비되어\n기술이 나오기 어려워졌다!", + obtainSource: "{{pokemonNameWithAffix}}[[는]] {{sourceText}} 때문에\n마비되어 기술이 나오기 어려워졌다!", + activation: "{{pokemonNameWithAffix}}[[는]]\n몸이 저려서 움직일 수 없다!", + overlap: "{{pokemonNameWithAffix}}[[는]]\n이미 마비되어 있다!", + heal: "{{pokemonNameWithAffix}}의\n몸저림이 풀렸다!" + }, + sleep: { + name: "잠듦", + description: "잠듦", + obtain: "{{pokemonNameWithAffix}}[[는]]\n잠들어 버렸다!", + obtainSource: "{{pokemonNameWithAffix}}[[는]]\n{{sourceText}} 때문에 잠들어 버렸다!", + activation: "{{pokemonNameWithAffix}}[[는]]\n쿨쿨 잠들어 있다.", + overlap: "{{pokemonNameWithAffix}}[[는]]\n이미 잠들어 있다.", + heal: "{{pokemonNameWithAffix}}[[는]]\n눈을 떴다!" + }, + freeze: { + name: "얼음", + description: "얼음", + obtain: "{{pokemonNameWithAffix}}[[는]]\n얼어붙었다!", + obtainSource: "{{pokemonNameWithAffix}}[[는]]\n{{sourceText}} 때문에 얼어붙었다!", + activation: "{{pokemonNameWithAffix}}[[는]]\n얼어 버려서 움직일 수 없다!", + overlap: "{{pokemonNameWithAffix}}[[는]]\n이미 얼어 있다.", + heal: "{{pokemonNameWithAffix}}의\n얼음 상태가 나았다!" + }, + burn: { + name: "화상", + description: "화상", + obtain: "{{pokemonNameWithAffix}}[[는]]\n화상을 입었다!", + obtainSource: "{{pokemonNameWithAffix}}[[는]]\n{{sourceText}} 때문에 화상을 입었다!", + activation: "{{pokemonNameWithAffix}}[[는]]\n화상 데미지를 입었다!", + overlap: "{{pokemonNameWithAffix}}[[는]] 이미\n화상을 입은 상태다.", + heal: "{{pokemonNameWithAffix}}의\n화상이 나았다!" + }, +} as const; diff --git a/src/locales/pt_BR/ability-trigger.ts b/src/locales/pt_BR/ability-trigger.ts index 4e3d6d11487..526c6def80d 100644 --- a/src/locales/pt_BR/ability-trigger.ts +++ b/src/locales/pt_BR/ability-trigger.ts @@ -9,5 +9,5 @@ export const abilityTriggers: SimpleTranslationEntries = { "poisonHeal": "{{abilityName}} de {{pokemonName}}\nrestaurou seus PS um pouco!", "trace": "{{pokemonName}} copiou {{abilityName}}\nde {{targetName}}!", "windPowerCharged": "Ser atingido por {{moveName}} carregou {{pokemonName}} com poder!", - "quickDraw":"{{pokemonName}} can act faster than normal, thanks to its Quick Draw!", + "quickDraw":"{{pokemonName}} pode agir mais rápido que o normal\ngraças ao seu Quick Draw!", } as const; diff --git a/src/locales/pt_BR/battle.ts b/src/locales/pt_BR/battle.ts index e5ec5cb9917..15f1d83c3c9 100644 --- a/src/locales/pt_BR/battle.ts +++ b/src/locales/pt_BR/battle.ts @@ -65,6 +65,7 @@ export const battle: SimpleTranslationEntries = { "useMove": "{{pokemonNameWithAffix}} usou {{moveName}}!", "drainMessage": "{{pokemonName}} teve sua\nenergia drenada!", "regainHealth": "{{pokemonName}} recuperou\npontos de saúde!", + "stealEatBerry": "{{pokemonName}} stole and ate\n{{targetName}}'s {{berryName}}!", "fainted": "{{pokemonNameWithAffix}} desmaiou!", "statRose": "{{stats}} de {{pokemonNameWithAffix}} aumentou!", "statSharplyRose": "{{stats}} de {{pokemonNameWithAffix}} aumentou bruscamente!", diff --git a/src/locales/pt_BR/config.ts b/src/locales/pt_BR/config.ts index 53195fbc32e..ac4176144c6 100644 --- a/src/locales/pt_BR/config.ts +++ b/src/locales/pt_BR/config.ts @@ -1,5 +1,3 @@ -import { common } from "#app/locales/pt_BR/common.js"; -import { settings } from "#app/locales/pt_BR/settings.js"; import { ability } from "./ability"; import { abilityTriggers } from "./ability-trigger"; import { PGFachv, PGMachv } from "./achv"; @@ -30,7 +28,6 @@ import { menuUiHandler } from "./menu-ui-handler"; import { modifierType } from "./modifier-type"; import { move } from "./move"; import { nature } from "./nature"; -import { partyUiHandler } from "./party-ui-handler"; import { pokeball } from "./pokeball"; import { pokemon } from "./pokemon"; import { pokemonInfo } from "./pokemon-info"; @@ -38,10 +35,14 @@ import { pokemonInfoContainer } from "./pokemon-info-container"; import { saveSlotSelectUiHandler } from "./save-slot-select-ui-handler"; import { splashMessages } from "./splash-messages"; import { starterSelectUiHandler } from "./starter-select-ui-handler"; +import { statusEffect } from "./status-effect"; import { titles, trainerClasses, trainerNames } from "./trainers"; import { tutorial } from "./tutorial"; import { voucher } from "./voucher"; import { weather } from "./weather"; +import { partyUiHandler } from "./party-ui-handler"; +import { settings } from "./settings.js"; +import { common } from "./common.js"; export const ptBrConfig = { ability: ability, @@ -80,6 +81,7 @@ export const ptBrConfig = { pokemonInfo: pokemonInfo, pokemonInfoContainer: pokemonInfoContainer, saveSlotSelectUiHandler: saveSlotSelectUiHandler, + statusEffect: statusEffect, settings: settings, splashMessages: splashMessages, starterSelectUiHandler: starterSelectUiHandler, diff --git a/src/locales/pt_BR/menu-ui-handler.ts b/src/locales/pt_BR/menu-ui-handler.ts index 258433d72c6..75e5adcfd87 100644 --- a/src/locales/pt_BR/menu-ui-handler.ts +++ b/src/locales/pt_BR/menu-ui-handler.ts @@ -20,5 +20,5 @@ export const menuUiHandler: SimpleTranslationEntries = { "exportData": "Exportar dados", "cancel": "Cancelar", "losingProgressionWarning": "Você vai perder todo o progresso desde o início da batalha. Confirmar?", - "noEggs": "You are not hatching\nany eggs at the moment!" + "noEggs": "Você não está chocando\nnenhum ovo no momento!" } as const; diff --git a/src/locales/pt_BR/status-effect.ts b/src/locales/pt_BR/status-effect.ts new file mode 100644 index 00000000000..d99e2bd5ec1 --- /dev/null +++ b/src/locales/pt_BR/status-effect.ts @@ -0,0 +1,67 @@ +import { StatusEffectTranslationEntries } from "#app/interfaces/locales.js"; + +export const statusEffect: StatusEffectTranslationEntries = { + none: { + name: "Nenhum", + description: "", + obtain: "", + obtainSource: "", + activation: "", + overlap: "", + heal: "" + }, + poison: { + name: "Envenenamento", + description: "envenenamento", + obtain: "{{pokemonNameWithAffix}}\nfoi envenenado!", + obtainSource: "{{pokemonNameWithAffix}}\nfoi envenenado por {{sourceText}}!", + activation: "{{pokemonNameWithAffix}} foi ferido\ncom o veneno!", + overlap: "{{pokemonNameWithAffix}} já\nestá envenenado!", + heal: "{{pokemonNameWithAffix}} se\ncurou do envenenamento!" + }, + toxic: { + name: "Toxic", + description: "envenenamento", + obtain: "{{pokemonNameWithAffix}}\nfoi seriamente envenenado!", + obtainSource: "{{pokemonNameWithAffix}} foi seriamente\nenvenenado por {{sourceText}}!", + activation: "{{pokemonNameWithAffix}} foi ferido\ncom o veneno!", + overlap: "{{pokemonNameWithAffix}} já\nestá envenenado!", + heal: "{{pokemonNameWithAffix}} se\ncurou do envenenamento!" + }, + paralysis: { + name: "Paralisia", + description: "paralisia", + obtain: "{{pokemonNameWithAffix}} foi paralisado,\nTalvez ele não consiga se mover!", + obtainSource: "{{pokemonNameWithAffix}} foi paralisado por {{sourceText}},\nTalvez ele não consiga se mover!", + activation: "{{pokemonNameWithAffix}} está paralisado!\nEle não consegue se mover!", + overlap: "{{pokemonNameWithAffix}} já\nestá paralisado!", + heal: "{{pokemonNameWithAffix}} foi\ncurado da paralisia!" + }, + sleep: { + name: "Dormindo", + description: "dormindo", + obtain: "{{pokemonNameWithAffix}}\nadormeceu!", + obtainSource: "{{pokemonNameWithAffix}}\ndormiu devido a {{sourceText}}!", + activation: "{{pokemonNameWithAffix}} está dormindo profundamente.", + overlap: "{{pokemonNameWithAffix}} já\nestá dormindo!", + heal: "{{pokemonNameWithAffix}} acordou!" + }, + freeze: { + name: "Congelamento", + description: "congelando", + obtain: "{{pokemonNameWithAffix}}\nfoi congelado!", + obtainSource: "{{pokemonNameWithAffix}}\nfoi congelado por {{sourceText}}!", + activation: "{{pokemonNameWithAffix}} está\ncongelado!", + overlap: "{{pokemonNameWithAffix}} já\nestá congelado!", + heal: "{{pokemonNameWithAffix}} foi\ndescongelado!" + }, + burn: { + name: "Queimadura", + description: "queimadura", + obtain: "{{pokemonNameWithAffix}}\nfoi queimado!", + obtainSource: "{{pokemonNameWithAffix}}\nfoi queimado por {{sourceText}}!", + activation: "{{pokemonNameWithAffix}} foi ferido\npor sua queimadura!", + overlap: "{{pokemonNameWithAffix}} já\nestá queimado!", + heal: "{{pokemonNameWithAffix}} foi\ncurado de sua queimadura!" + }, +} as const; diff --git a/src/locales/zh_CN/battle.ts b/src/locales/zh_CN/battle.ts index 5fab96c422b..3fde016d5cc 100644 --- a/src/locales/zh_CN/battle.ts +++ b/src/locales/zh_CN/battle.ts @@ -59,6 +59,7 @@ export const battle: SimpleTranslationEntries = { "hpIsFull": "{{pokemonName}}的体力已满!", "skipItemQuestion": "你确定要跳过拾取道具吗?", "eggHatching": "咦?", + "stealEatBerry": "{{pokemonName}} stole and ate\n{{targetName}}'s {{berryName}}!", "ivScannerUseQuestion": "对{{pokemonName}}使用个体值扫描仪?", "wildPokemonWithAffix": "野生的{{pokemonName}}", "foePokemonWithAffix": "对手 {{pokemonName}}", diff --git a/src/locales/zh_CN/config.ts b/src/locales/zh_CN/config.ts index 169c91535ed..1d987eaec16 100644 --- a/src/locales/zh_CN/config.ts +++ b/src/locales/zh_CN/config.ts @@ -35,13 +35,14 @@ import { pokemonInfoContainer } from "./pokemon-info-container"; import { saveSlotSelectUiHandler } from "./save-slot-select-ui-handler"; import { splashMessages } from "./splash-messages"; import { starterSelectUiHandler } from "./starter-select-ui-handler"; +import { statusEffect } from "./status-effect"; import { titles, trainerClasses, trainerNames } from "./trainers"; import { tutorial } from "./tutorial"; import { voucher } from "./voucher"; import { weather } from "./weather"; import { partyUiHandler } from "./party-ui-handler"; -import { settings } from "#app/locales/zh_CN/settings.js"; -import { common } from "#app/locales/zh_CN/common.js"; +import { settings } from "./settings.js"; +import { common } from "./common.js"; export const zhCnConfig = { ability: ability, @@ -82,6 +83,7 @@ export const zhCnConfig = { settings: settings, splashMessages: splashMessages, starterSelectUiHandler: starterSelectUiHandler, + statusEffect: statusEffect, titles: titles, trainerClasses: trainerClasses, trainerNames: trainerNames, diff --git a/src/locales/zh_CN/status-effect.ts b/src/locales/zh_CN/status-effect.ts new file mode 100644 index 00000000000..b9df1733bc1 --- /dev/null +++ b/src/locales/zh_CN/status-effect.ts @@ -0,0 +1,67 @@ +import { StatusEffectTranslationEntries } from "#app/interfaces/locales.js"; + +export const statusEffect: StatusEffectTranslationEntries = { + none: { + name: "无", + description: "", + obtain: "", + obtainSource: "", + activation: "", + overlap: "", + heal: "" + }, + poison: { + name: "中毒", + description: "中毒", + obtain: "{{pokemonNameWithAffix}}中毒了!", + obtainSource: "{{pokemonNameWithAffix}}因{{sourceText}}中毒了!", + activation: "{{pokemonNameWithAffix}}受到了毒的伤害!", + overlap: "{{pokemonNameWithAffix}}已经中毒了!", + heal: "{{pokemonNameWithAffix}}中的毒彻底清除了!" + }, + toxic: { + name: "剧毒", + description: "中毒", + obtain: "{{pokemonNameWithAffix}}中了剧毒!", + obtainSource: "{{pokemonNameWithAffix}}因{{sourceText}}中了剧毒!", + activation: "{{pokemonNameWithAffix}}受到了毒的伤害!", + overlap: "{{pokemonNameWithAffix}}已经中毒了!", + heal: "{{pokemonNameWithAffix}}中的毒彻底清除了!" + }, + paralysis: { + name: "麻痹", + description: "麻痹", + obtain: "{{pokemonNameWithAffix}}麻痹了,很难使出招式!", + obtainSource: "{{pokemonNameWithAffix}}被{{sourceText}}麻痹了,很难使出招式!", + activation: "{{pokemonNameWithAffix}}因身体麻痹而无法行动!", + overlap: "{{pokemonNameWithAffix}}已经麻痹了!", + heal: "{{pokemonNameWithAffix}}的麻痹治愈了!" + }, + sleep: { + name: "睡眠", + description: "睡眠", + obtain: "{{pokemonNameWithAffix}}睡着了!", + obtainSource: "{{pokemonNameWithAffix}}因{{sourceText}}睡着了!", + activation: "{{pokemonNameWithAffix}}正在呼呼大睡。", + overlap: "{{pokemonNameWithAffix}}已经睡着了!", + heal: "{{pokemonNameWithAffix}}醒了!" + }, + freeze: { + name: "冰冻", + description: "冰冻", + obtain: "{{pokemonNameWithAffix}}冻住了!", + obtainSource: "{{pokemonNameWithAffix}}因{{sourceText}}冻住了!", + activation: "{{pokemonNameWithAffix}}因冻住了而无法行动!", + overlap: "{{pokemonNameWithAffix}}已经冻住了!", + heal: "{{pokemonNameWithAffix}}治愈了冰冻状态!" + }, + burn: { + name: "灼伤", + description: "灼伤", + obtain: "{{pokemonNameWithAffix}}被灼伤了!", + obtainSource: "{{pokemonNameWithAffix}}因{{sourceText}}被灼伤了!", + activation: "{{pokemonNameWithAffix}}受到了灼伤的伤害!", + overlap: "{{pokemonNameWithAffix}}已经被灼伤了!", + heal: "{{pokemonNameWithAffix}}的灼伤治愈了!" + }, +} as const; diff --git a/src/locales/zh_TW/battle.ts b/src/locales/zh_TW/battle.ts index 553e37dbab6..077933c46d6 100644 --- a/src/locales/zh_TW/battle.ts +++ b/src/locales/zh_TW/battle.ts @@ -51,6 +51,7 @@ export const battle: SimpleTranslationEntries = { "runAwayCannotEscape": "你無法逃脫!", "escapeVerbSwitch": "切換", "escapeVerbFlee": "逃跑", + "stealEatBerry": "{{pokemonName}} stole and ate\n{{targetName}}'s {{berryName}}!", "notDisabled": "{{moveName}} 不再被禁用!", "turnEndHpRestore": "{{pokemonName}}'s HP was restored.", "hpIsFull": "{{pokemonName}}'s\nHP is full!", @@ -128,5 +129,5 @@ export const battle: SimpleTranslationEntries = { "battlerTagsSaltCuredOnAdd": "{{pokemonNameWithAffix}} 陷入了鹽腌狀態!", "battlerTagsSaltCuredLapse": "{{pokemonNameWithAffix}} 受到了{{moveName}}的傷害!", "battlerTagsCursedOnAdd": "{{pokemonNameWithAffix}}削減了自己的體力,並詛咒了{{pokemonName}}!", - "battlerTagsCursedLapse": "{{pokemonNameWithAffix}}正受到詛咒!" + "battlerTagsCursedLapse": "{{pokemonNameWithAffix}}正受到詛咒!", } as const; diff --git a/src/locales/zh_TW/config.ts b/src/locales/zh_TW/config.ts index 1cbb4e6e2c1..688f3b47033 100644 --- a/src/locales/zh_TW/config.ts +++ b/src/locales/zh_TW/config.ts @@ -35,13 +35,14 @@ import { pokemonInfoContainer } from "./pokemon-info-container"; import { saveSlotSelectUiHandler } from "./save-slot-select-ui-handler"; import { splashMessages } from "./splash-messages"; import { starterSelectUiHandler } from "./starter-select-ui-handler"; +import { statusEffect } from "./status-effect"; import { titles, trainerClasses, trainerNames } from "./trainers"; import { tutorial } from "./tutorial"; import { voucher } from "./voucher"; import { weather } from "./weather"; import { partyUiHandler } from "./party-ui-handler"; -import { settings } from "#app/locales/zh_TW/settings.js"; -import { common } from "#app/locales/zh_TW/common.js"; +import { settings } from "./settings.js"; +import { common } from "./common.js"; export const zhTwConfig = { ability: ability, @@ -82,6 +83,7 @@ export const zhTwConfig = { settings: settings, splashMessages: splashMessages, starterSelectUiHandler: starterSelectUiHandler, + statusEffect: statusEffect, titles: titles, trainerClasses: trainerClasses, trainerNames: trainerNames, diff --git a/src/locales/zh_TW/status-effect.ts b/src/locales/zh_TW/status-effect.ts new file mode 100644 index 00000000000..1a402ac30fd --- /dev/null +++ b/src/locales/zh_TW/status-effect.ts @@ -0,0 +1,67 @@ +import { StatusEffectTranslationEntries } from "#app/interfaces/locales.js"; + +export const statusEffect: StatusEffectTranslationEntries = { + none: { + name: "None", + description: "", + obtain: "", + obtainSource: "", + activation: "", + overlap: "", + heal: "" + }, + poison: { + name: "Poison", + description: "poisoning", + obtain: "{{pokemonNameWithAffix}}\nwas poisoned!", + obtainSource: "{{pokemonNameWithAffix}}\nwas poisoned by {{sourceText}}!", + activation: "{{pokemonNameWithAffix}} is hurt\nby poison!", + overlap: "{{pokemonNameWithAffix}} is\nalready poisoned!", + heal: "{{pokemonNameWithAffix}} was\ncured of its poison!" + }, + toxic: { + name: "Toxic", + description: "poisoning", + obtain: "{{pokemonNameWithAffix}}\nwas badly poisoned!", + obtainSource: "{{pokemonNameWithAffix}}\nwas badly poisoned by {{sourceText}}!", + activation: "{{pokemonNameWithAffix}} is hurt\nby poison!", + overlap: "{{pokemonNameWithAffix}} is\nalready poisoned!", + heal: "{{pokemonNameWithAffix}} was\ncured of its poison!" + }, + paralysis: { + name: "Paralysis", + description: "paralysis", + obtain: "{{pokemonNameWithAffix}} was paralyzed,\nIt may be unable to move!", + obtainSource: "{{pokemonNameWithAffix}} was paralyzed by {{sourceText}},\nIt may be unable to move!", + activation: "{{pokemonNameWithAffix}} is paralyzed!\nIt can't move!", + overlap: "{{pokemonNameWithAffix}} is\nalready paralyzed!", + heal: "{{pokemonNameWithAffix}} was\nhealed of paralysis!" + }, + sleep: { + name: "Sleep", + description: "sleep", + obtain: "{{pokemonNameWithAffix}}\nfell asleep!", + obtainSource: "{{pokemonNameWithAffix}}\nfell asleep from {{sourceText}}!", + activation: "{{pokemonNameWithAffix}} is fast asleep.", + overlap: "{{pokemonNameWithAffix}} is\nalready asleep!", + heal: "{{pokemonNameWithAffix}} woke up!" + }, + freeze: { + name: "Freeze", + description: "freezing", + obtain: "{{pokemonNameWithAffix}}\nwas frozen solid!", + obtainSource: "{{pokemonNameWithAffix}}\nwas frozen solid by {{sourceText}}!", + activation: "{{pokemonNameWithAffix}} is\nfrozen solid!", + overlap: "{{pokemonNameWithAffix}} is\nalready frozen!", + heal: "{{pokemonNameWithAffix}} was\ndefrosted!" + }, + burn: { + name: "Burn", + description: "burn", + obtain: "{{pokemonNameWithAffix}}\nwas burned!", + obtainSource: "{{pokemonNameWithAffix}}\nwas burned by {{sourceText}}!", + activation: "{{pokemonNameWithAffix}} is hurt\nby its burn!", + overlap: "{{pokemonNameWithAffix}} is\nalready burned!", + heal: "{{pokemonNameWithAffix}} was\nhealed of its burn!" + }, +} as const; diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts index 151758da246..d8ec0072bd4 100644 --- a/src/modifier/modifier-type.ts +++ b/src/modifier/modifier-type.ts @@ -45,7 +45,6 @@ type NewModifierFunc = (type: ModifierType, args: any[]) => Modifier; export class ModifierType { public id: string; - public generatorId: string; public localeKey: string; public iconImage: string; public group: string; @@ -102,7 +101,7 @@ export class ModifierType { if (!pool.hasOwnProperty(tier)) { continue; } - if (pool[tier].find(m => (m as WeightedModifierType).modifierType.id === (this.generatorId || this.id))) { + if (pool[tier].find(m => (m as WeightedModifierType).modifierType.id === this.id)) { return (this.tier = tier); } } @@ -133,7 +132,6 @@ export class ModifierTypeGenerator extends ModifierType { generateType(party: Pokemon[], pregenArgs?: any[]) { const ret = this.genTypeFunc(party, pregenArgs); if (ret) { - ret.generatorId = ret.id; ret.id = this.id; ret.setTier(this.tier); } @@ -554,7 +552,7 @@ export class SpeciesStatBoosterModifierType extends PokemonHeldItemModifierType const item = SpeciesStatBoosterModifierTypeGenerator.items[key]; super(`modifierType:SpeciesBoosterItem.${key}`, key.toLowerCase(), (type, args) => new Modifiers.SpeciesStatBoosterModifier(type, (args[0] as Pokemon).id, item.stats, item.multiplier, item.species)); - this.id = this.key = key; + this.key = key; } getPregenArgs(): any[] { @@ -1742,7 +1740,7 @@ export function regenerateModifierPoolThresholds(party: Pokemon[], poolType: Mod let i = 0; pool[t].reduce((total: integer, modifierType: WeightedModifierType) => { const weightedModifierType = modifierType as WeightedModifierType; - const existingModifiers = party[0].scene.findModifiers(m => (m.type.generatorId || m.type.id) === weightedModifierType.modifierType.id, poolType === ModifierPoolType.PLAYER); + const existingModifiers = party[0].scene.findModifiers(m => m.type.id === weightedModifierType.modifierType.id, poolType === ModifierPoolType.PLAYER); const itemModifierType = weightedModifierType.modifierType instanceof ModifierTypeGenerator ? weightedModifierType.modifierType.generateType(party) : weightedModifierType.modifierType; @@ -1755,7 +1753,7 @@ export function regenerateModifierPoolThresholds(party: Pokemon[], poolType: Mod : weightedModifierType.weight as integer : 0; if (weightedModifierType.maxWeight) { - const modifierId = weightedModifierType.modifierType.generatorId || weightedModifierType.modifierType.id; + const modifierId = weightedModifierType.modifierType.id; tierModifierIds.push(modifierId); const outputWeight = useMaxWeightForOutput ? weightedModifierType.maxWeight : weight; modifierTableData[modifierId] = { weight: outputWeight, tier: parseInt(t), tierPercent: 0, totalPercent: 0 }; diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index b680cdd41c4..f7c23406179 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -9,7 +9,7 @@ import { addTextObject, TextStyle } from "../ui/text"; import { Type } from "../data/type"; import { EvolutionPhase } from "../evolution-phase"; import { FusionSpeciesFormEvolution, pokemonEvolutions, pokemonPrevolutions } from "../data/pokemon-evolutions"; -import { getPokemonMessage } from "../messages"; +import {getPokemonMessage, getPokemonNameWithAffix} from "../messages"; import * as Utils from "../utils"; import { TempBattleStat } from "../data/temp-battle-stat"; import { getBerryEffectFunc, getBerryPredicate } from "../data/berry"; @@ -2469,7 +2469,7 @@ export class EnemyStatusEffectHealChanceModifier extends EnemyPersistentModifier apply(args: any[]): boolean { const target = (args[0] as Pokemon); if (target.status && Phaser.Math.RND.realInRange(0, 1) < (this.chance * this.getStackCount())) { - target.scene.queueMessage(getPokemonMessage(target, getStatusEffectHealText(target.status.effect))); + target.scene.queueMessage(getStatusEffectHealText(target.status.effect, getPokemonNameWithAffix(target))); target.resetStatus(); target.updateInfo(); return true; diff --git a/src/phases.ts b/src/phases.ts index 0f3849204fc..e85d181e37e 100644 --- a/src/phases.ts +++ b/src/phases.ts @@ -2781,12 +2781,12 @@ export class MovePhase extends BattlePhase { } if (activated) { - this.scene.queueMessage(getPokemonMessage(this.pokemon, getStatusEffectActivationText(this.pokemon.status.effect))); + this.scene.queueMessage(getStatusEffectActivationText(this.pokemon.status.effect, getPokemonNameWithAffix(this.pokemon))); this.scene.unshiftPhase(new CommonAnimPhase(this.scene, this.pokemon.getBattlerIndex(), undefined, CommonAnim.POISON + (this.pokemon.status.effect - 1))); doMove(); } else { if (healed) { - this.scene.queueMessage(getPokemonMessage(this.pokemon, getStatusEffectHealText(this.pokemon.status.effect))); + this.scene.queueMessage(getStatusEffectHealText(this.pokemon.status.effect, getPokemonNameWithAffix(this.pokemon))); this.pokemon.resetStatus(); this.pokemon.updateInfo(); } @@ -3506,7 +3506,7 @@ export class ObtainStatusEffectPhase extends PokemonPhase { } pokemon.updateInfo(true); new CommonBattleAnim(CommonAnim.POISON + (this.statusEffect - 1), pokemon).play(this.scene, () => { - this.scene.queueMessage(getPokemonMessage(pokemon, getStatusEffectObtainText(this.statusEffect, this.sourceText))); + this.scene.queueMessage(getStatusEffectObtainText(this.statusEffect, getPokemonNameWithAffix(pokemon), this.sourceText)); if (pokemon.status.isPostTurn()) { this.scene.pushPhase(new PostTurnStatusEffectPhase(this.scene, this.battlerIndex)); } @@ -3515,7 +3515,7 @@ export class ObtainStatusEffectPhase extends PokemonPhase { return; } } else if (pokemon.status.effect === this.statusEffect) { - this.scene.queueMessage(getPokemonMessage(pokemon, getStatusEffectOverlapText(this.statusEffect))); + this.scene.queueMessage(getStatusEffectOverlapText(this.statusEffect, getPokemonNameWithAffix(pokemon))); } this.end(); } @@ -3535,7 +3535,7 @@ export class PostTurnStatusEffectPhase extends PokemonPhase { applyAbAttrs(BlockStatusDamageAbAttr, pokemon, cancelled); if (!cancelled.value) { - this.scene.queueMessage(getPokemonMessage(pokemon, getStatusEffectActivationText(pokemon.status.effect))); + this.scene.queueMessage(getStatusEffectActivationText(pokemon.status.effect, getPokemonNameWithAffix(pokemon))); let damage: integer = 0; switch (pokemon.status.effect) { case StatusEffect.POISON: @@ -4757,7 +4757,7 @@ export class PokemonHealPhase extends CommonAnimPhase { } if (this.healStatus && lastStatusEffect && !hasMessage) { - this.scene.queueMessage(getPokemonMessage(pokemon, getStatusEffectHealText(lastStatusEffect))); + this.scene.queueMessage(getStatusEffectHealText(lastStatusEffect, getPokemonNameWithAffix(pokemon))); } if (!healOrDamage && !lastStatusEffect) { diff --git a/src/system/modifier-data.ts b/src/system/modifier-data.ts index d79206d89df..6f169280da1 100644 --- a/src/system/modifier-data.ts +++ b/src/system/modifier-data.ts @@ -5,7 +5,6 @@ import { GeneratedPersistentModifierType, ModifierTypeGenerator, getModifierType export default class ModifierData { private player: boolean; private typeId: string; - private typeGeneratorId: string; private typePregenArgs: any[]; private args: any[]; private stackCount: integer; @@ -16,7 +15,6 @@ export default class ModifierData { const sourceModifier = source instanceof PersistentModifier ? source as PersistentModifier : null; this.player = player; this.typeId = sourceModifier ? sourceModifier.type.id : source.typeId; - this.typeGeneratorId = sourceModifier ? sourceModifier.type.generatorId : source.typeGeneratorId; if (sourceModifier) { if ("getPregenArgs" in source.type) { this.typePregenArgs = (source.type as GeneratedPersistentModifierType).getPregenArgs(); @@ -38,7 +36,6 @@ export default class ModifierData { try { let type = typeFunc(); type.id = this.typeId; - type.generatorId = this.typeGeneratorId; if (type instanceof ModifierTypeGenerator) { type = (type as ModifierTypeGenerator).generateType(this.player ? scene.getParty() : scene.getEnemyField(), this.typePregenArgs); diff --git a/src/test/items/toxic_orb.test.ts b/src/test/items/toxic_orb.test.ts index 6aacfd0e5e7..64dc3191d88 100644 --- a/src/test/items/toxic_orb.test.ts +++ b/src/test/items/toxic_orb.test.ts @@ -15,6 +15,7 @@ import {StatusEffect} from "#app/data/status-effect"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; +import i18next, { initI18n } from "#app/plugins/i18n"; describe("Items - Toxic orb", () => { @@ -48,6 +49,8 @@ describe("Items - Toxic orb", () => { }); it("TOXIC ORB", async() => { + initI18n(); + i18next.changeLanguage("en"); const moveToUse = Moves.GROWTH; await game.startBattle([ Species.MIGHTYENA, diff --git a/src/test/lokalisation/status-effect.test.ts b/src/test/lokalisation/status-effect.test.ts new file mode 100644 index 00000000000..4c79dacbff7 --- /dev/null +++ b/src/test/lokalisation/status-effect.test.ts @@ -0,0 +1,301 @@ +import { beforeAll, describe, expect, it, vi } from "vitest"; +import { + StatusEffect, + getStatusEffectActivationText, + getStatusEffectDescriptor, + getStatusEffectHealText, + getStatusEffectObtainText, + getStatusEffectOverlapText, +} from "#app/data/status-effect"; +import i18next, { ParseKeys } from "i18next"; +import { afterEach } from "node:test"; + +const tMock = (key: ParseKeys) => key; +const pokemonName = "PKM"; +const sourceText = "SOURCE"; + +describe("status-effect", () => { + beforeAll(() => { + i18next.init(); + }); + + describe("NONE", () => { + const statusEffect = StatusEffect.NONE; + + it("should return the obtain text", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + + const text = getStatusEffectObtainText(statusEffect, pokemonName); + expect(text).toBe("statusEffect:none.obtain"); + + const emptySourceText = getStatusEffectObtainText(statusEffect, pokemonName, ""); + expect(emptySourceText).toBe("statusEffect:none.obtain"); + }); + + it("should return the source-obtain text", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + + const text = getStatusEffectObtainText(statusEffect, pokemonName, sourceText); + expect(text).toBe("statusEffect:none.obtainSource"); + + const emptySourceText = getStatusEffectObtainText(statusEffect, pokemonName, ""); + expect(emptySourceText).not.toBe("statusEffect:none.obtainSource"); + }); + + it("should return the activation text", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + const text = getStatusEffectActivationText(statusEffect, pokemonName); + expect(text).toBe("statusEffect:none.activation"); + }); + + it("should return the overlap text", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + const text = getStatusEffectOverlapText(statusEffect, pokemonName); + expect(text).toBe("statusEffect:none.overlap"); + }); + + it("should return the heal text", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + const text = getStatusEffectHealText(statusEffect, pokemonName); + expect(text).toBe("statusEffect:none.heal"); + }); + + it("should return the descriptor", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + const text = getStatusEffectDescriptor(statusEffect); + expect(text).toBe("statusEffect:none.description"); + }); + }); + + describe("POISON", () => { + const statusEffect = StatusEffect.POISON; + + it("should return the obtain text", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + + const text = getStatusEffectObtainText(statusEffect, pokemonName); + expect(text).toBe("statusEffect:poison.obtain"); + + const emptySourceText = getStatusEffectObtainText(statusEffect, pokemonName, ""); + expect(emptySourceText).toBe("statusEffect:poison.obtain"); + }); + + it("should return the activation text", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + const text = getStatusEffectActivationText(statusEffect, pokemonName); + expect(text).toBe("statusEffect:poison.activation"); + }); + + it("should return the descriptor", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + const text = getStatusEffectDescriptor(statusEffect); + expect(text).toBe("statusEffect:poison.description"); + }); + + it("should return the heal text", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + const text = getStatusEffectHealText(statusEffect, pokemonName); + expect(text).toBe("statusEffect:poison.heal"); + }); + + it("should return the overlap text", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + const text = getStatusEffectOverlapText(statusEffect, pokemonName); + expect(text).toBe("statusEffect:poison.overlap"); + }); + }); + + describe("TOXIC", () => { + const statusEffect = StatusEffect.TOXIC; + + it("should return the obtain text", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + + const text = getStatusEffectObtainText(statusEffect, pokemonName); + expect(text).toBe("statusEffect:toxic.obtain"); + + const emptySourceText = getStatusEffectObtainText(statusEffect, pokemonName, ""); + expect(emptySourceText).toBe("statusEffect:toxic.obtain"); + }); + + it("should return the activation text", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + const text = getStatusEffectActivationText(statusEffect, pokemonName); + expect(text).toBe("statusEffect:toxic.activation"); + }); + + it("should return the descriptor", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + const text = getStatusEffectDescriptor(statusEffect); + expect(text).toBe("statusEffect:toxic.description"); + }); + + it("should return the heal text", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + const text = getStatusEffectHealText(statusEffect, pokemonName); + expect(text).toBe("statusEffect:toxic.heal"); + }); + + it("should return the overlap text", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + const text = getStatusEffectOverlapText(statusEffect, pokemonName); + expect(text).toBe("statusEffect:toxic.overlap"); + }); + }); + + describe("PARALYSIS", () => { + const statusEffect = StatusEffect.PARALYSIS; + + it("should return the obtain text", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + + const text = getStatusEffectObtainText(statusEffect, pokemonName); + expect(text).toBe("statusEffect:paralysis.obtain"); + + const emptySourceText = getStatusEffectObtainText(statusEffect, pokemonName, ""); + expect(emptySourceText).toBe("statusEffect:paralysis.obtain"); + }); + + it("should return the activation text", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + const text = getStatusEffectActivationText(statusEffect, pokemonName); + expect(text).toBe("statusEffect:paralysis.activation"); + }); + + it("should return the descriptor", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + const text = getStatusEffectDescriptor(statusEffect); + expect(text).toBe("statusEffect:paralysis.description"); + }); + + it("should return the heal text", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + const text = getStatusEffectHealText(statusEffect, pokemonName); + expect(text).toBe("statusEffect:paralysis.heal"); + }); + + it("should return the overlap text", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + const text = getStatusEffectOverlapText(statusEffect, pokemonName); + expect(text).toBe("statusEffect:paralysis.overlap"); + }); + }); + + describe("SLEEP", () => { + const statusEffect = StatusEffect.SLEEP; + + it("should return the obtain text", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + + const text = getStatusEffectObtainText(statusEffect, pokemonName); + expect(text).toBe("statusEffect:sleep.obtain"); + + const emptySourceText = getStatusEffectObtainText(statusEffect, pokemonName, ""); + expect(emptySourceText).toBe("statusEffect:sleep.obtain"); + }); + + it("should return the activation text", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + const text = getStatusEffectActivationText(statusEffect, pokemonName); + expect(text).toBe("statusEffect:sleep.activation"); + }); + + it("should return the descriptor", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + const text = getStatusEffectDescriptor(statusEffect); + expect(text).toBe("statusEffect:sleep.description"); + }); + + it("should return the heal text", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + const text = getStatusEffectHealText(statusEffect, pokemonName); + expect(text).toBe("statusEffect:sleep.heal"); + }); + + it("should return the overlap text", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + const text = getStatusEffectOverlapText(statusEffect, pokemonName); + expect(text).toBe("statusEffect:sleep.overlap"); + }); + }); + + describe("FREEZE", () => { + const statusEffect = StatusEffect.FREEZE; + + it("should return the obtain text", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + + const text = getStatusEffectObtainText(statusEffect, pokemonName); + expect(text).toBe("statusEffect:freeze.obtain"); + + const emptySourceText = getStatusEffectObtainText(statusEffect, pokemonName, ""); + expect(emptySourceText).toBe("statusEffect:freeze.obtain"); + }); + + it("should return the activation text", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + const text = getStatusEffectActivationText(statusEffect, pokemonName); + expect(text).toBe("statusEffect:freeze.activation"); + }); + + it("should return the descriptor", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + const text = getStatusEffectDescriptor(statusEffect); + expect(text).toBe("statusEffect:freeze.description"); + }); + + it("should return the heal text", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + const text = getStatusEffectHealText(statusEffect, pokemonName); + expect(text).toBe("statusEffect:freeze.heal"); + }); + + it("should return the overlap text", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + const text = getStatusEffectOverlapText(statusEffect, pokemonName); + expect(text).toBe("statusEffect:freeze.overlap"); + }); + }); + + describe("BURN", () => { + const statusEffect = StatusEffect.BURN; + + it("should return the obtain text", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + + const text = getStatusEffectObtainText(statusEffect, pokemonName); + expect(text).toBe("statusEffect:burn.obtain"); + + const emptySourceText = getStatusEffectObtainText(statusEffect, pokemonName, ""); + expect(emptySourceText).toBe("statusEffect:burn.obtain"); + }); + + it("should return the activation text", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + const text = getStatusEffectActivationText(statusEffect, pokemonName); + expect(text).toBe("statusEffect:burn.activation"); + }); + + it("should return the descriptor", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + const text = getStatusEffectDescriptor(statusEffect); + expect(text).toBe("statusEffect:burn.description"); + }); + + it("should return the heal text", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + const text = getStatusEffectHealText(statusEffect, pokemonName); + expect(text).toBe("statusEffect:burn.heal"); + }); + + it("should return the overlap text", () => { + vi.spyOn(i18next, "t").mockImplementation(tMock); + const text = getStatusEffectOverlapText(statusEffect, pokemonName); + expect(text).toBe("statusEffect:burn.overlap"); + }); + }); + + afterEach(() => { + vi.resetAllMocks(); + }); +});