diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000000..be478a2b5fa --- /dev/null +++ b/.editorconfig @@ -0,0 +1,12 @@ +# EditorConfig is awesome: https://EditorConfig.org + +# top-most EditorConfig file +root = true + +[src/*.{js,ts}] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/package.json b/package.json index e2db1681e0f..da5bc393c52 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,8 @@ "create-test": "node ./create-test-boilerplate.js", "postinstall": "npx lefthook install && npx lefthook run post-merge", "update-version:patch": "npm version patch --force --no-git-tag-version", - "update-version:minor": "npm version minor --force --no-git-tag-version" + "update-version:minor": "npm version minor --force --no-git-tag-version", + "update-locales:remote": "git submodule update --progress --init --recursive --force --remote" }, "devDependencies": { "@eslint/js": "^9.3.0", diff --git a/public/audio/bgm/battle_champion_kukui.mp3 b/public/audio/bgm/battle_champion_kukui.mp3 new file mode 100644 index 00000000000..9e0739fc4d0 Binary files /dev/null and b/public/audio/bgm/battle_champion_kukui.mp3 differ diff --git a/public/audio/bgm/battle_colress.mp3 b/public/audio/bgm/battle_colress.mp3 new file mode 100644 index 00000000000..49a5557860b Binary files /dev/null and b/public/audio/bgm/battle_colress.mp3 differ diff --git a/public/audio/bgm/battle_mustard.mp3 b/public/audio/bgm/battle_mustard.mp3 new file mode 100644 index 00000000000..dccb8f7dcc5 Binary files /dev/null and b/public/audio/bgm/battle_mustard.mp3 differ diff --git a/public/audio/bgm/battle_plasma_grunt.mp3 b/public/audio/bgm/battle_plasma_grunt.mp3 index 7d1bf710bc5..c3d004514d0 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/images/trainer/aether_grunt_f.json b/public/images/trainer/aether_grunt_f.json index c43bdae9b2e..26ae177bd21 100644 --- a/public/images/trainer/aether_grunt_f.json +++ b/public/images/trainer/aether_grunt_f.json @@ -4,8 +4,8 @@ "image": "aether_grunt_f.png", "format": "RGBA8888", "size": { - "w": 69, - "h": 69 + "w": 70, + "h": 70 }, "scale": 1, "frames": [ @@ -14,20 +14,20 @@ "rotated": false, "trimmed": false, "sourceSize": { - "w": 80, - "h": 80 + "w": 39, + "h": 70 }, "spriteSourceSize": { - "x": 23, - "y": 10, - "w": 35, - "h": 69 + "x": 0, + "y": 0, + "w": 39, + "h": 70 }, "frame": { "x": 0, "y": 0, - "w": 35, - "h": 69 + "w": 39, + "h": 70 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:0c9e77856d3b434e719021572bcb93de:f9c45dc5d67009b134dd1bbc5593f6ec:a694f8828aff21c718e5161e2fd63ade$" + "smartupdate": "$TexturePacker:SmartUpdate:0a678d2035c82d3741f2de29e01d42d3:374042fde99a4ff05c5e90cedbc5bd1f:a694f8828aff21c718e5161e2fd63ade$" } } diff --git a/public/images/trainer/aether_grunt_f.png b/public/images/trainer/aether_grunt_f.png index b43c5e71a51..a5088c9e1de 100644 Binary files a/public/images/trainer/aether_grunt_f.png and b/public/images/trainer/aether_grunt_f.png differ diff --git a/public/images/trainer/aether_grunt_m.json b/public/images/trainer/aether_grunt_m.json index eba00096f8d..74195b97dde 100644 --- a/public/images/trainer/aether_grunt_m.json +++ b/public/images/trainer/aether_grunt_m.json @@ -4,8 +4,8 @@ "image": "aether_grunt_m.png", "format": "RGBA8888", "size": { - "w": 65, - "h": 65 + "w": 69, + "h": 69 }, "scale": 1, "frames": [ @@ -14,20 +14,20 @@ "rotated": false, "trimmed": false, "sourceSize": { - "w": 80, - "h": 80 + "w": 45, + "h": 69 }, "spriteSourceSize": { - "x": 16, - "y": 14, - "w": 47, - "h": 65 + "x": 0, + "y": 0, + "w": 45, + "h": 69 }, "frame": { "x": 0, "y": 0, - "w": 47, - "h": 65 + "w": 45, + "h": 69 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:963887cf29549ad3c123b8055cb4d701:68004c4a6e04c93bd21c26a6f8921f0c:d2241fc11d0fc31b26ecbedae6da74f4$" + "smartupdate": "$TexturePacker:SmartUpdate:f7ad29bea8c4a179c08958890cadb04b:741fc1b2e43d2da720c249c6f81910bc:d2241fc11d0fc31b26ecbedae6da74f4$" } } diff --git a/public/images/trainer/aether_grunt_m.png b/public/images/trainer/aether_grunt_m.png index f4df26ef007..1b1e092a340 100644 Binary files a/public/images/trainer/aether_grunt_m.png and b/public/images/trainer/aether_grunt_m.png differ diff --git a/public/images/trainer/aqua_grunt_f.json b/public/images/trainer/aqua_grunt_f.json index 20515f30e5e..23f118927f1 100644 --- a/public/images/trainer/aqua_grunt_f.json +++ b/public/images/trainer/aqua_grunt_f.json @@ -4,8 +4,8 @@ "image": "aqua_grunt_f.png", "format": "RGBA8888", "size": { - "w": 71, - "h": 71 + "w": 73, + "h": 73 }, "scale": 1, "frames": [ @@ -14,20 +14,20 @@ "rotated": false, "trimmed": false, "sourceSize": { - "w": 80, - "h": 80 + "w": 34, + "h": 73 }, "spriteSourceSize": { - "x": 22, - "y": 8, - "w": 36, - "h": 71 + "x": 0, + "y": 0, + "w": 34, + "h": 73 }, "frame": { "x": 0, "y": 0, - "w": 36, - "h": 71 + "w": 34, + "h": 73 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:6db25cb5753163d19bca8e2db45849ae:7d8f51509862bfdf8a78bf42dd0005cd:af0aa9494be37941522487032b556989$" + "smartupdate": "$TexturePacker:SmartUpdate:99d76e35df4b09fc9d312218d8fa8cc7:8ad846929ea03b5fb70fd16144e5e2fa:af0aa9494be37941522487032b556989$" } } diff --git a/public/images/trainer/aqua_grunt_f.png b/public/images/trainer/aqua_grunt_f.png index 132d239c0b8..4db237bf9e7 100644 Binary files a/public/images/trainer/aqua_grunt_f.png and b/public/images/trainer/aqua_grunt_f.png differ diff --git a/public/images/trainer/aqua_grunt_m.json b/public/images/trainer/aqua_grunt_m.json index 93408cc40c8..3a120f7d20c 100644 --- a/public/images/trainer/aqua_grunt_m.json +++ b/public/images/trainer/aqua_grunt_m.json @@ -4,8 +4,8 @@ "image": "aqua_grunt_m.png", "format": "RGBA8888", "size": { - "w": 73, - "h": 73 + "w": 74, + "h": 74 }, "scale": 1, "frames": [ @@ -14,20 +14,20 @@ "rotated": false, "trimmed": false, "sourceSize": { - "w": 80, - "h": 80 + "w": 38, + "h": 74 }, "spriteSourceSize": { - "x": 17, - "y": 6, - "w": 46, - "h": 73 + "x": 0, + "y": 0, + "w": 38, + "h": 74 }, "frame": { "x": 0, "y": 0, - "w": 46, - "h": 73 + "w": 38, + "h": 74 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:efd07ff3ed1e610150a4b8ca18974343:d9b85b9eb11182e9e4669e2bd8b08694:72b7b50231708a9486d5f315824e4df1$" + "smartupdate": "$TexturePacker:SmartUpdate:ea2cdca90584089079af92307948ecdc:331e1f5314abbfcf58331ab0b9fd1c40:72b7b50231708a9486d5f315824e4df1$" } } diff --git a/public/images/trainer/aqua_grunt_m.png b/public/images/trainer/aqua_grunt_m.png index 87dbfd566a1..4fe230ca119 100644 Binary files a/public/images/trainer/aqua_grunt_m.png and b/public/images/trainer/aqua_grunt_m.png differ diff --git a/public/images/trainer/archie.json b/public/images/trainer/archie.json index 63837d40847..3718bcffd0c 100644 --- a/public/images/trainer/archie.json +++ b/public/images/trainer/archie.json @@ -4,8 +4,8 @@ "image": "archie.png", "format": "RGBA8888", "size": { - "w": 80, - "h": 80 + "w": 79, + "h": 79 }, "scale": 1, "frames": [ @@ -14,20 +14,20 @@ "rotated": false, "trimmed": false, "sourceSize": { - "w": 80, - "h": 80 + "w": 58, + "h": 79 }, "spriteSourceSize": { - "x": 21, + "x": 0, "y": 0, - "w": 42, - "h": 80 + "w": 58, + "h": 79 }, "frame": { "x": 0, "y": 0, - "w": 42, - "h": 80 + "w": 58, + "h": 79 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:bfa7fdd7b6ac9be68dc9dc562fb8339f:06f87a279450b21b19294ba956b69c26:4b7980be4e3ac1d20c9eaf970913ec63$" + "smartupdate": "$TexturePacker:SmartUpdate:1edc051db037c1742819ac8674ebe4be:bfaa715c0faf707c1b20ab8259d42a35:4b7980be4e3ac1d20c9eaf970913ec63$" } } diff --git a/public/images/trainer/archie.png b/public/images/trainer/archie.png index c83975c0690..d4c003fd348 100644 Binary files a/public/images/trainer/archie.png and b/public/images/trainer/archie.png differ diff --git a/public/images/trainer/atticus.json b/public/images/trainer/atticus.json index 95621998bf2..8b1ebdd63f2 100644 --- a/public/images/trainer/atticus.json +++ b/public/images/trainer/atticus.json @@ -4,8 +4,8 @@ "image": "atticus.png", "format": "RGBA8888", "size": { - "w": 46, - "h": 46 + "w": 55, + "h": 55 }, "scale": 1, "frames": [ @@ -14,20 +14,20 @@ "rotated": false, "trimmed": false, "sourceSize": { - "w": 80, - "h": 80 + "w": 55, + "h": 49 }, "spriteSourceSize": { - "x": 21, - "y": 33, - "w": 43, - "h": 46 + "x": 0, + "y": 0, + "w": 55, + "h": 49 }, "frame": { "x": 0, "y": 0, - "w": 43, - "h": 46 + "w": 55, + "h": 49 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:6dcd7c3d3982793cbca0d6fcd1f9260e:19c44634629fadd9d039d23dc71ec987:d26ede35f15aa571d5a7a2dd2fb868e1$" + "smartupdate": "$TexturePacker:SmartUpdate:2c1a2ecebeac4770c51422bede6add57:5c82bf231c27d62e440081f186eb1da9:d26ede35f15aa571d5a7a2dd2fb868e1$" } } diff --git a/public/images/trainer/atticus.png b/public/images/trainer/atticus.png index e3e7e870f2b..75cd70b72d8 100644 Binary files a/public/images/trainer/atticus.png and b/public/images/trainer/atticus.png differ diff --git a/public/images/trainer/courtney.json b/public/images/trainer/courtney.json index de55e91eb85..1da3e08b107 100644 --- a/public/images/trainer/courtney.json +++ b/public/images/trainer/courtney.json @@ -4,8 +4,8 @@ "image": "courtney.png", "format": "RGBA8888", "size": { - "w": 52, - "h": 80 + "w": 72, + "h": 72 }, "scale": 1, "frames": [ @@ -14,20 +14,20 @@ "rotated": false, "trimmed": false, "sourceSize": { - "w": 52, - "h": 80 + "w": 44, + "h": 72 }, "spriteSourceSize": { "x": 0, "y": 0, - "w": 52, - "h": 80 + "w": 44, + "h": 72 }, "frame": { "x": 0, "y": 0, - "w": 52, - "h": 80 + "w": 44, + "h": 72 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:831f5748dad92911b10a1cb358ee2dae:a3bf81bbaa3b49cad5e0e549cf94563b:bb6befc9383c9c08837183ae2a7a80c1$" + "smartupdate": "$TexturePacker:SmartUpdate:c39b0f300dc09114fba490e6ab68b2b5:a24a6dbdd0e3f4d4b7a567673b73316a:b0c7d3a5747d1c7edafa00c8e6d1257e$" } } diff --git a/public/images/trainer/courtney.png b/public/images/trainer/courtney.png index 0efdb615fcd..3db5151e61c 100644 Binary files a/public/images/trainer/courtney.png and b/public/images/trainer/courtney.png differ diff --git a/public/images/trainer/eri.json b/public/images/trainer/eri.json index fd4daf60437..08312d7a310 100644 --- a/public/images/trainer/eri.json +++ b/public/images/trainer/eri.json @@ -4,8 +4,8 @@ "image": "eri.png", "format": "RGBA8888", "size": { - "w": 74, - "h": 74 + "w": 78, + "h": 78 }, "scale": 1, "frames": [ @@ -14,20 +14,20 @@ "rotated": false, "trimmed": false, "sourceSize": { - "w": 80, - "h": 80 + "w": 52, + "h": 78 }, "spriteSourceSize": { - "x": 15, - "y": 5, - "w": 45, - "h": 74 + "x": 0, + "y": 0, + "w": 52, + "h": 78 }, "frame": { "x": 0, "y": 0, - "w": 45, - "h": 74 + "w": 52, + "h": 78 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:59594ac27e74ec85e2949d12ff680dc2:d65b6b00858ac47b26ef8393a8fa6795:d7f4cd3ff755f8074c14d3006b0c8301$" + "smartupdate": "$TexturePacker:SmartUpdate:d413fdffea2ec50087a67019a6ce4063:66a18e7a21ca3a1953778dbc09074ab6:d7f4cd3ff755f8074c14d3006b0c8301$" } } diff --git a/public/images/trainer/eri.png b/public/images/trainer/eri.png index 0c9bdf7b47b..cb38f96b030 100644 Binary files a/public/images/trainer/eri.png and b/public/images/trainer/eri.png differ diff --git a/public/images/trainer/faba.json b/public/images/trainer/faba.json index 0e9544e2529..a419c782d87 100644 --- a/public/images/trainer/faba.json +++ b/public/images/trainer/faba.json @@ -4,8 +4,8 @@ "image": "faba.png", "format": "RGBA8888", "size": { - "w": 74, - "h": 74 + "w": 76, + "h": 76 }, "scale": 1, "frames": [ @@ -14,20 +14,20 @@ "rotated": false, "trimmed": false, "sourceSize": { - "w": 80, - "h": 80 + "w": 29, + "h": 76 }, "spriteSourceSize": { - "x": 25, - "y": 5, - "w": 31, - "h": 74 + "x": 0, + "y": 0, + "w": 29, + "h": 76 }, "frame": { "x": 0, "y": 0, - "w": 31, - "h": 74 + "w": 29, + "h": 76 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:47622708d99a504998950bd9c389a504:fe1c51be191dd9fafb5b6f309c08ae1a:8d64db18930325b8b513740c1d83ce4c$" + "smartupdate": "$TexturePacker:SmartUpdate:bbfce6e1ed69401694ce8c2537dd1fea:a2c9351e4ba08d44cafa66ecdf509866:8d64db18930325b8b513740c1d83ce4c$" } } diff --git a/public/images/trainer/faba.png b/public/images/trainer/faba.png index a7fa0fb4879..1c509da8a78 100644 Binary files a/public/images/trainer/faba.png and b/public/images/trainer/faba.png differ diff --git a/public/images/trainer/flare_grunt_f.json b/public/images/trainer/flare_grunt_f.json index e536d28a1aa..a8ebf9a8a4a 100644 --- a/public/images/trainer/flare_grunt_f.json +++ b/public/images/trainer/flare_grunt_f.json @@ -4,8 +4,8 @@ "image": "flare_grunt_f.png", "format": "RGBA8888", "size": { - "w": 80, - "h": 80 + "w": 85, + "h": 85 }, "scale": 1, "frames": [ @@ -14,20 +14,20 @@ "rotated": false, "trimmed": false, "sourceSize": { - "w": 80, - "h": 80 + "w": 23, + "h": 85 }, "spriteSourceSize": { - "x": 31, + "x": 0, "y": 0, "w": 23, - "h": 80 + "h": 85 }, "frame": { "x": 0, "y": 0, "w": 23, - "h": 80 + "h": 85 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:c30bf82452209a923f4becf13d275a9a:a6355b09f92c9c0388d0b919010f587f:0638dbf213f8a974eb5af76eb1e5ddeb$" + "smartupdate": "$TexturePacker:SmartUpdate:88d242a8c3b9859307ecdd290c30ce7d:acd04d60ab09f18e86e4e5727132dac2:0638dbf213f8a974eb5af76eb1e5ddeb$" } } diff --git a/public/images/trainer/flare_grunt_f.png b/public/images/trainer/flare_grunt_f.png index 4446675dc44..e2a4dd7fe92 100644 Binary files a/public/images/trainer/flare_grunt_f.png and b/public/images/trainer/flare_grunt_f.png differ diff --git a/public/images/trainer/flare_grunt_m.json b/public/images/trainer/flare_grunt_m.json index 4d54acbf810..226257ef84a 100644 --- a/public/images/trainer/flare_grunt_m.json +++ b/public/images/trainer/flare_grunt_m.json @@ -14,12 +14,12 @@ "rotated": false, "trimmed": false, "sourceSize": { - "w": 80, - "h": 80 + "w": 31, + "h": 77 }, "spriteSourceSize": { - "x": 24, - "y": 2, + "x": 0, + "y": 0, "w": 31, "h": 77 }, @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:a26606e70778f88a1a7053b2f2420dde:84abf0d0f6bc90c6a60f660567b2d641:adc35a4070bac9fe828c2605a3b15744$" + "smartupdate": "$TexturePacker:SmartUpdate:8683e52bbd1a42992f4d7ab8aa65a2a1:e8279cd322279bc5f8e2bb5797e6f818:adc35a4070bac9fe828c2605a3b15744$" } } diff --git a/public/images/trainer/flare_grunt_m.png b/public/images/trainer/flare_grunt_m.png index 79eb98449ca..eb14dbed0e2 100644 Binary files a/public/images/trainer/flare_grunt_m.png and b/public/images/trainer/flare_grunt_m.png differ diff --git a/public/images/trainer/giacomo.json b/public/images/trainer/giacomo.json index 5eeb2cd685b..f61d5b64901 100644 --- a/public/images/trainer/giacomo.json +++ b/public/images/trainer/giacomo.json @@ -4,8 +4,8 @@ "image": "giacomo.png", "format": "RGBA8888", "size": { - "w": 75, - "h": 75 + "w": 71, + "h": 71 }, "scale": 1, "frames": [ @@ -14,20 +14,20 @@ "rotated": false, "trimmed": false, "sourceSize": { - "w": 80, - "h": 80 + "w": 37, + "h": 71 }, "spriteSourceSize": { - "x": 23, - "y": 4, + "x": 0, + "y": 0, "w": 37, - "h": 75 + "h": 71 }, "frame": { "x": 0, "y": 0, "w": 37, - "h": 75 + "h": 71 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:8c4e7da48e5667abc6d364330268c092:0fa43e58d8a746d3b86cb2dd763719f4:8603cc19e888c8c8de62177f4011577c$" + "smartupdate": "$TexturePacker:SmartUpdate:8d4b9bca01f3729556cd02a8795c3e89:cb2840cbbd1e5a614bfa6bcb23db5b62:8603cc19e888c8c8de62177f4011577c$" } } diff --git a/public/images/trainer/giacomo.png b/public/images/trainer/giacomo.png index 275f47fad3c..352acaddf95 100644 Binary files a/public/images/trainer/giacomo.png and b/public/images/trainer/giacomo.png differ diff --git a/public/images/trainer/guzma.json b/public/images/trainer/guzma.json index c278d68be24..1b75915c088 100644 --- a/public/images/trainer/guzma.json +++ b/public/images/trainer/guzma.json @@ -4,8 +4,8 @@ "image": "guzma.png", "format": "RGBA8888", "size": { - "w": 58, - "h": 58 + "w": 64, + "h": 64 }, "scale": 1, "frames": [ @@ -14,20 +14,20 @@ "rotated": false, "trimmed": false, "sourceSize": { - "w": 80, - "h": 80 + "w": 34, + "h": 64 }, "spriteSourceSize": { - "x": 21, - "y": 20, - "w": 37, - "h": 58 + "x": 0, + "y": 0, + "w": 34, + "h": 64 }, "frame": { "x": 0, "y": 0, - "w": 37, - "h": 58 + "w": 34, + "h": 64 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:c3b08a562a2882d1ca8b5e031e245da9:72a8305e547f091d15abccd2b142e401:3b302c7f9eb6ea81b65bcaeead4a95a9$" + "smartupdate": "$TexturePacker:SmartUpdate:90cfe8ae514c30ddf48840678b251141:87a93d268c61327ad913bba3b052686b:3b302c7f9eb6ea81b65bcaeead4a95a9$" } } diff --git a/public/images/trainer/guzma.png b/public/images/trainer/guzma.png index 6afd6f3b34a..1ae6d8eb8d1 100644 Binary files a/public/images/trainer/guzma.png and b/public/images/trainer/guzma.png differ diff --git a/public/images/trainer/hala.json b/public/images/trainer/hala.json index f909ebe7684..5fcea739488 100644 --- a/public/images/trainer/hala.json +++ b/public/images/trainer/hala.json @@ -4,8 +4,8 @@ "image": "hala.png", "format": "RGBA8888", "size": { - "w": 78, - "h": 78 + "w": 82, + "h": 82 }, "scale": 1, "frames": [ @@ -14,20 +14,20 @@ "rotated": false, "trimmed": false, "sourceSize": { - "w": 59, - "h": 78 + "w": 58, + "h": 82 }, "spriteSourceSize": { "x": 0, "y": 0, - "w": 59, - "h": 78 + "w": 58, + "h": 82 }, "frame": { "x": 0, "y": 0, - "w": 59, - "h": 78 + "w": 58, + "h": 82 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:b6547cc9975d92a02b99fd63122d740b:0a72e0ac4fcbfe4329a7dcdad284ab36:7c2af56b9a9851f2e2eaeaf0cdca9370$" + "smartupdate": "$TexturePacker:SmartUpdate:57dc13db648785ad4694bf67c40fa21d:ee2bc7184f4f48ab8ba3c10c89bfc8f0:7c2af56b9a9851f2e2eaeaf0cdca9370$" } } diff --git a/public/images/trainer/hala.png b/public/images/trainer/hala.png index 0a72be4113b..4f26cbb8ff3 100644 Binary files a/public/images/trainer/hala.png and b/public/images/trainer/hala.png differ diff --git a/public/images/trainer/hau.json b/public/images/trainer/hau.json index 5f2ef8bcec8..351283ff0ad 100644 --- a/public/images/trainer/hau.json +++ b/public/images/trainer/hau.json @@ -4,8 +4,8 @@ "image": "hau.png", "format": "RGBA8888", "size": { - "w": 70, - "h": 70 + "w": 71, + "h": 71 }, "scale": 1, "frames": [ @@ -14,20 +14,20 @@ "rotated": false, "trimmed": false, "sourceSize": { - "w": 80, - "h": 80 + "w": 24, + "h": 71 }, "spriteSourceSize": { - "x": 27, - "y": 9, - "w": 29, - "h": 70 + "x": 0, + "y": 0, + "w": 24, + "h": 71 }, "frame": { "x": 0, "y": 0, - "w": 29, - "h": 70 + "w": 24, + "h": 71 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:688d6d27e686efec45b144ba4544f248:676457a4e9dfbcad0510f6e7bfa73514:d4c7e8b349477c2295b49b0e99b91bb3$" + "smartupdate": "$TexturePacker:SmartUpdate:0d500afd9a36f32a23b5a316dcf397d9:aa5d3e58d6df67b90e484ec7f345a4cf:d4c7e8b349477c2295b49b0e99b91bb3$" } } diff --git a/public/images/trainer/hau.png b/public/images/trainer/hau.png index 1ce2c98f6af..7aa673a6fe9 100644 Binary files a/public/images/trainer/hau.png and b/public/images/trainer/hau.png differ diff --git a/public/images/trainer/korrina.json b/public/images/trainer/korrina.json index cc1ba59bd55..7c258fa4927 100644 --- a/public/images/trainer/korrina.json +++ b/public/images/trainer/korrina.json @@ -4,8 +4,8 @@ "image": "korrina.png", "format": "RGBA8888", "size": { - "w": 75, - "h": 75 + "w": 83, + "h": 83 }, "scale": 1, "frames": [ @@ -14,20 +14,20 @@ "rotated": false, "trimmed": false, "sourceSize": { - "w": 80, - "h": 80 + "w": 57, + "h": 83 }, "spriteSourceSize": { - "x": 10, - "y": 4, - "w": 56, - "h": 75 + "x": 0, + "y": 0, + "w": 57, + "h": 83 }, "frame": { "x": 0, "y": 0, - "w": 56, - "h": 75 + "w": 57, + "h": 83 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:43a6564beec2569a58110232e9752b64:0decef066ae75dc7f3bd0c811f9a92d1:ed5be09cd8b82ed6439ff8617ffa74c0$" + "smartupdate": "$TexturePacker:SmartUpdate:1dc28e18e99698fbfd8a110a1dc737f2:79d24176afd3059dc69ce785ce672bbb:ed5be09cd8b82ed6439ff8617ffa74c0$" } } diff --git a/public/images/trainer/korrina.png b/public/images/trainer/korrina.png index 6d6817faf94..8994afdddb1 100644 Binary files a/public/images/trainer/korrina.png and b/public/images/trainer/korrina.png differ diff --git a/public/images/trainer/kukui.json b/public/images/trainer/kukui.json new file mode 100644 index 00000000000..139a1456cc5 --- /dev/null +++ b/public/images/trainer/kukui.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "kukui.png", + "format": "RGBA8888", + "size": { + "w": 74, + "h": 74 + }, + "scale": 1, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 37, + "h": 74 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 37, + "h": 74 + }, + "frame": { + "x": 0, + "y": 0, + "w": 37, + "h": 74 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:bccd7af37a8608585716e34d0acb49af:8e1ebc6f022707fbb1e6b4f7d1dbb00c:70bdbf4bca082082ae121aa8ef03c2be$" + } +} diff --git a/public/images/trainer/kukui.png b/public/images/trainer/kukui.png new file mode 100644 index 00000000000..aacf1c197ee Binary files /dev/null and b/public/images/trainer/kukui.png differ diff --git a/public/images/trainer/lusamine.json b/public/images/trainer/lusamine.json index 55a711a21fb..c2e9b2f2356 100644 --- a/public/images/trainer/lusamine.json +++ b/public/images/trainer/lusamine.json @@ -4,8 +4,8 @@ "image": "lusamine.png", "format": "RGBA8888", "size": { - "w": 74, - "h": 74 + "w": 80, + "h": 80 }, "scale": 1, "frames": [ @@ -14,20 +14,20 @@ "rotated": false, "trimmed": false, "sourceSize": { - "w": 80, + "w": 52, "h": 80 }, "spriteSourceSize": { - "x": 22, - "y": 5, - "w": 36, - "h": 74 + "x": 0, + "y": 0, + "w": 52, + "h": 80 }, "frame": { "x": 0, "y": 0, - "w": 36, - "h": 74 + "w": 52, + "h": 80 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:41da3a1299e3831be70016dc91e49313:2413ba06767fb10fdc6fde8cc736c51c:4012333084c529872232c8d052561dc1$" + "smartupdate": "$TexturePacker:SmartUpdate:52c5f9beccbfe68b9861b8fc393ba674:35d25e8bad6c7212e330a0e3d0c88315:4012333084c529872232c8d052561dc1$" } } diff --git a/public/images/trainer/lusamine.png b/public/images/trainer/lusamine.png index 8b835a2d0be..1619dc11e2d 100644 Binary files a/public/images/trainer/lusamine.png and b/public/images/trainer/lusamine.png differ diff --git a/public/images/trainer/lysandre.json b/public/images/trainer/lysandre.json index 931b1633a32..1dcb9c8c710 100644 --- a/public/images/trainer/lysandre.json +++ b/public/images/trainer/lysandre.json @@ -4,8 +4,8 @@ "image": "lysandre.png", "format": "RGBA8888", "size": { - "w": 80, - "h": 80 + "w": 82, + "h": 82 }, "scale": 1, "frames": [ @@ -14,20 +14,20 @@ "rotated": false, "trimmed": false, "sourceSize": { - "w": 80, - "h": 80 + "w": 50, + "h": 82 }, "spriteSourceSize": { - "x": 14, + "x": 0, "y": 0, - "w": 52, - "h": 80 + "w": 50, + "h": 82 }, "frame": { "x": 0, "y": 0, - "w": 52, - "h": 80 + "w": 50, + "h": 82 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:6b887c8bab74885a1b05f2b382759db6:ba102d9d25ddd794a3a17f029b971daf:e6066149f6ec4ccb9fc28faea3d64a7f$" + "smartupdate": "$TexturePacker:SmartUpdate:b09528fe2d3137bba8ce5c667d2a962f:7c522eefcc85ee87df485d34b58e814b:e6066149f6ec4ccb9fc28faea3d64a7f$" } } diff --git a/public/images/trainer/lysandre.png b/public/images/trainer/lysandre.png index b83b649d142..fe6dafb00f8 100644 Binary files a/public/images/trainer/lysandre.png and b/public/images/trainer/lysandre.png differ diff --git a/public/images/trainer/macro_grunt_f.json b/public/images/trainer/macro_grunt_f.json index 04b30ec4ca5..8a9a3943a27 100644 --- a/public/images/trainer/macro_grunt_f.json +++ b/public/images/trainer/macro_grunt_f.json @@ -14,19 +14,19 @@ "rotated": false, "trimmed": false, "sourceSize": { - "w": 80, - "h": 80 + "w": 33, + "h": 74 }, "spriteSourceSize": { - "x": 24, - "y": 5, - "w": 31, + "x": 0, + "y": 0, + "w": 33, "h": 74 }, "frame": { "x": 0, "y": 0, - "w": 31, + "w": 33, "h": 74 } } @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:a015c43d80f8fd1932758e0e2cfcec61:59fc8205ea5ca04295831b4a2eb623ec:30df2ea8e9dac9e95f70534ec43d5ecd$" + "smartupdate": "$TexturePacker:SmartUpdate:7449212fcdbfb4a600364bd3761e4fb6:37c81a387501a047cff84cabdeedb496:d1412ef32f1904a102cf70569806f3b7$" } } diff --git a/public/images/trainer/macro_grunt_f.png b/public/images/trainer/macro_grunt_f.png index 892299d701e..85586126da1 100644 Binary files a/public/images/trainer/macro_grunt_f.png and b/public/images/trainer/macro_grunt_f.png differ diff --git a/public/images/trainer/macro_grunt_m.json b/public/images/trainer/macro_grunt_m.json index 5357fdb0767..f9a8736c4d1 100644 --- a/public/images/trainer/macro_grunt_m.json +++ b/public/images/trainer/macro_grunt_m.json @@ -4,8 +4,8 @@ "image": "macro_grunt_m.png", "format": "RGBA8888", "size": { - "w": 75, - "h": 75 + "w": 76, + "h": 76 }, "scale": 1, "frames": [ @@ -14,20 +14,20 @@ "rotated": false, "trimmed": false, "sourceSize": { - "w": 80, - "h": 80 + "w": 35, + "h": 76 }, "spriteSourceSize": { - "x": 15, - "y": 4, - "w": 48, - "h": 75 + "x": 0, + "y": 0, + "w": 35, + "h": 76 }, "frame": { "x": 0, "y": 0, - "w": 48, - "h": 75 + "w": 35, + "h": 76 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:52fccff2a0675b4e10139ddb7067d4cf:10d254175d2d8a9111cce096ffb55fa3:d57016467aa07cafdfaf13e0ff643c1b$" + "smartupdate": "$TexturePacker:SmartUpdate:5800bf6888eb6dd61ea39e1c9a1f93e3:25a930b7c50e2d7832bd3c30402d7544:1f76f2e682f472208a45e187250a6a3d$" } } diff --git a/public/images/trainer/macro_grunt_m.png b/public/images/trainer/macro_grunt_m.png index aa6b3607a87..464c735c75d 100644 Binary files a/public/images/trainer/macro_grunt_m.png and b/public/images/trainer/macro_grunt_m.png differ diff --git a/public/images/trainer/magma_grunt_f.json b/public/images/trainer/magma_grunt_f.json index 05c0512bbf0..d7a3d214317 100644 --- a/public/images/trainer/magma_grunt_f.json +++ b/public/images/trainer/magma_grunt_f.json @@ -4,30 +4,30 @@ "image": "magma_grunt_f.png", "format": "RGBA8888", "size": { - "w": 80, - "h": 80 + "w": 72, + "h": 72 }, "scale": 1, "frames": [ { "filename": "0001.png", "rotated": false, - "trimmed": true, + "trimmed": false, "sourceSize": { - "w": 80, - "h": 80 + "w": 43, + "h": 72 }, "spriteSourceSize": { - "x": 10, + "x": 0, "y": 0, - "w": 60, - "h": 80 + "w": 43, + "h": 72 }, "frame": { - "x": 10, + "x": 0, "y": 0, - "w": 60, - "h": 80 + "w": 43, + "h": 72 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:f63ad48affc076f60fae78992c96a2bf:80928b32710abcb28c07c6fc5a425d99:3b961d8852b62aaf24ceb2030c036515$" + "smartupdate": "$TexturePacker:SmartUpdate:219462e400564a65012cda9dbc31ab22:4e0070239d24311df52a263271698c59:3b961d8852b62aaf24ceb2030c036515$" } } diff --git a/public/images/trainer/magma_grunt_f.png b/public/images/trainer/magma_grunt_f.png index 215ad83eea1..5ea582ad067 100644 Binary files a/public/images/trainer/magma_grunt_f.png and b/public/images/trainer/magma_grunt_f.png differ diff --git a/public/images/trainer/magma_grunt_m.json b/public/images/trainer/magma_grunt_m.json index ac8cd838c5a..57ac7c40da9 100644 --- a/public/images/trainer/magma_grunt_m.json +++ b/public/images/trainer/magma_grunt_m.json @@ -4,30 +4,30 @@ "image": "magma_grunt_m.png", "format": "RGBA8888", "size": { - "w": 80, - "h": 80 + "w": 72, + "h": 72 }, "scale": 1, "frames": [ { "filename": "0001.png", "rotated": false, - "trimmed": true, + "trimmed": false, "sourceSize": { - "w": 80, - "h": 80 + "w": 44, + "h": 72 }, "spriteSourceSize": { - "x": 10, + "x": 0, "y": 0, - "w": 60, - "h": 80 + "w": 44, + "h": 72 }, "frame": { - "x": 10, + "x": 0, "y": 0, - "w": 60, - "h": 80 + "w": 44, + "h": 72 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:96aa833d987a01bcdcb6f0e7809f5daf:791cce8d026f92b2e52f0b66df8b8e11:35532fd5d9aea30957d50d06f2d2f9a6$" + "smartupdate": "$TexturePacker:SmartUpdate:46f6e6e1aef8e2e7640c67116e548c5d:34cb6b7f64b0d3c294fcdde45097575d:35532fd5d9aea30957d50d06f2d2f9a6$" } } diff --git a/public/images/trainer/magma_grunt_m.png b/public/images/trainer/magma_grunt_m.png index a37b9acbb52..b2432a79d28 100644 Binary files a/public/images/trainer/magma_grunt_m.png and b/public/images/trainer/magma_grunt_m.png differ diff --git a/public/images/trainer/mela.json b/public/images/trainer/mela.json index c9db18acc5a..1d242d50074 100644 --- a/public/images/trainer/mela.json +++ b/public/images/trainer/mela.json @@ -4,8 +4,8 @@ "image": "mela.png", "format": "RGBA8888", "size": { - "w": 78, - "h": 78 + "w": 75, + "h": 75 }, "scale": 1, "frames": [ @@ -14,20 +14,20 @@ "rotated": false, "trimmed": false, "sourceSize": { - "w": 80, - "h": 80 + "w": 41, + "h": 75 }, "spriteSourceSize": { - "x": 18, - "y": 1, - "w": 46, - "h": 78 + "x": 0, + "y": 0, + "w": 41, + "h": 75 }, "frame": { "x": 0, "y": 0, - "w": 46, - "h": 78 + "w": 41, + "h": 75 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:e26d8c926c54c848cef673b3f59f35e7:ff040c2cebb1a92d2ef61dc91c018390:68668cf06383ff459cccaafb6bf56215$" + "smartupdate": "$TexturePacker:SmartUpdate:96e97b165e8ca706b7838616d32ab81f:89c577db41f4b610520823e876066e35:68668cf06383ff459cccaafb6bf56215$" } } diff --git a/public/images/trainer/mela.png b/public/images/trainer/mela.png index fbb08ed69cf..a98547d6380 100644 Binary files a/public/images/trainer/mela.png and b/public/images/trainer/mela.png differ diff --git a/public/images/trainer/molayne.json b/public/images/trainer/molayne.json index ae80a12f012..8a0b1b3534e 100644 --- a/public/images/trainer/molayne.json +++ b/public/images/trainer/molayne.json @@ -4,8 +4,8 @@ "image": "molayne.png", "format": "RGBA8888", "size": { - "w": 79, - "h": 79 + "w": 78, + "h": 78 }, "scale": 1, "frames": [ @@ -15,19 +15,19 @@ "trimmed": false, "sourceSize": { "w": 31, - "h": 79 + "h": 78 }, "spriteSourceSize": { "x": 0, "y": 0, "w": 31, - "h": 79 + "h": 78 }, "frame": { "x": 0, "y": 0, "w": 31, - "h": 79 + "h": 78 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:056720ae56077b81375b258850332053:774e1c8463f26fac3be55ed88c8b48b9:11092260a376b1a46e696927361b6498$" + "smartupdate": "$TexturePacker:SmartUpdate:190386db101d4bd1ef5ed1f4f7b5bb1c:c8bc1b069ceb2707738b9178fb6aea0f:11092260a376b1a46e696927361b6498$" } } diff --git a/public/images/trainer/molayne.png b/public/images/trainer/molayne.png index 75f9569370e..c400e5be33d 100644 Binary files a/public/images/trainer/molayne.png and b/public/images/trainer/molayne.png differ diff --git a/public/images/trainer/mustard.json b/public/images/trainer/mustard.json new file mode 100644 index 00000000000..5c3a73f0a0b --- /dev/null +++ b/public/images/trainer/mustard.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "mustard.png", + "format": "RGBA8888", + "size": { + "w": 71, + "h": 71 + }, + "scale": 1, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 57, + "h": 71 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 57, + "h": 71 + }, + "frame": { + "x": 0, + "y": 0, + "w": 57, + "h": 71 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:8e2d109ee2cb1b2a6dda840c5bba1d4e:8116b1de2fd7bc0ca08e2d3e618b3dae:ac5d03e7cabff8ff660969c2bc2f3b36$" + } +} diff --git a/public/images/trainer/mustard.png b/public/images/trainer/mustard.png new file mode 100644 index 00000000000..0acba02db45 Binary files /dev/null and b/public/images/trainer/mustard.png differ diff --git a/public/images/trainer/oleana.json b/public/images/trainer/oleana.json index 7219b640c38..d9344226819 100644 --- a/public/images/trainer/oleana.json +++ b/public/images/trainer/oleana.json @@ -4,8 +4,8 @@ "image": "oleana.png", "format": "RGBA8888", "size": { - "w": 79, - "h": 79 + "w": 78, + "h": 78 }, "scale": 1, "frames": [ @@ -14,20 +14,20 @@ "rotated": false, "trimmed": false, "sourceSize": { - "w": 80, - "h": 80 + "w": 56, + "h": 78 }, "spriteSourceSize": { - "x": 10, - "y": 1, - "w": 53, - "h": 79 + "x": 0, + "y": 0, + "w": 56, + "h": 78 }, "frame": { "x": 0, "y": 0, - "w": 53, - "h": 79 + "w": 56, + "h": 78 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:30987a671771127a38491a588c465964:38b28effcfd5c6cbc0f358912a775af3:82e2a1f8afed29be57f6c2473f4c5be2$" + "smartupdate": "$TexturePacker:SmartUpdate:3f088913cab1db14067e247bd92e82ce:b32e1ef6ef289564b39fd326346002c6:82e2a1f8afed29be57f6c2473f4c5be2$" } } diff --git a/public/images/trainer/oleana.png b/public/images/trainer/oleana.png index 3252c67ab8e..e74fb6ab2eb 100644 Binary files a/public/images/trainer/oleana.png and b/public/images/trainer/oleana.png differ diff --git a/public/images/trainer/ortega.json b/public/images/trainer/ortega.json index 53bab5dba40..082817344e0 100644 --- a/public/images/trainer/ortega.json +++ b/public/images/trainer/ortega.json @@ -4,8 +4,8 @@ "image": "ortega.png", "format": "RGBA8888", "size": { - "w": 69, - "h": 69 + "w": 70, + "h": 70 }, "scale": 1, "frames": [ @@ -14,20 +14,20 @@ "rotated": false, "trimmed": false, "sourceSize": { - "w": 80, - "h": 80 + "w": 47, + "h": 70 }, "spriteSourceSize": { - "x": 8, - "y": 10, - "w": 53, - "h": 69 + "x": 0, + "y": 0, + "w": 47, + "h": 70 }, "frame": { "x": 0, "y": 0, - "w": 53, - "h": 69 + "w": 47, + "h": 70 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:c6ff92d90ed884222095de81d1db9166:a91cf3c83a063f549c52afb42f7ba3b0:c3f9fcec121c8bc93f2b230b20b79c57$" + "smartupdate": "$TexturePacker:SmartUpdate:f69a1067315885ed736a07362122f371:717e3f134eb10424f0f0fa724500ba63:c3f9fcec121c8bc93f2b230b20b79c57$" } } diff --git a/public/images/trainer/ortega.png b/public/images/trainer/ortega.png index 7f694c6ded6..cede7b6c311 100644 Binary files a/public/images/trainer/ortega.png and b/public/images/trainer/ortega.png differ diff --git a/public/images/trainer/penny.json b/public/images/trainer/penny.json index da64efffa3b..bb74e43da89 100644 --- a/public/images/trainer/penny.json +++ b/public/images/trainer/penny.json @@ -4,8 +4,8 @@ "image": "penny.png", "format": "RGBA8888", "size": { - "w": 75, - "h": 75 + "w": 67, + "h": 67 }, "scale": 1, "frames": [ @@ -14,20 +14,20 @@ "rotated": false, "trimmed": false, "sourceSize": { - "w": 80, - "h": 80 + "w": 30, + "h": 67 }, "spriteSourceSize": { - "x": 24, - "y": 4, - "w": 34, - "h": 75 + "x": 0, + "y": 0, + "w": 30, + "h": 67 }, "frame": { "x": 0, "y": 0, - "w": 34, - "h": 75 + "w": 30, + "h": 67 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:54f184bf1995a94a78aff33c9a851e6b:a6c9b3fe428b0cd0344b5cf14b999f36:cf221da9747cb8cb356053d3042d8d22$" + "smartupdate": "$TexturePacker:SmartUpdate:cb4d76912d528afe986ac5cad775f455:cc70d9738c9c7347b2ac9afec4ec9290:cf221da9747cb8cb356053d3042d8d22$" } } diff --git a/public/images/trainer/penny.png b/public/images/trainer/penny.png index 0e36760e21b..67c90a41462 100644 Binary files a/public/images/trainer/penny.png and b/public/images/trainer/penny.png differ diff --git a/public/images/trainer/plasma_grunt_f.json b/public/images/trainer/plasma_grunt_f.json index 4d23eeeb483..4a73a55e24b 100644 --- a/public/images/trainer/plasma_grunt_f.json +++ b/public/images/trainer/plasma_grunt_f.json @@ -4,30 +4,408 @@ "image": "plasma_grunt_f.png", "format": "RGBA8888", "size": { - "w": 75, - "h": 75 + "w": 186, + "h": 186 }, "scale": 1, "frames": [ { - "filename": "0001.png", + "filename": "0002.png", "rotated": false, - "trimmed": false, + "trimmed": true, "sourceSize": { "w": 80, "h": 80 }, "spriteSourceSize": { - "x": 21, - "y": 4, - "w": 37, - "h": 75 + "x": 16, + "y": 31, + "w": 49, + "h": 49 }, "frame": { "x": 0, "y": 0, - "w": 37, - "h": 75 + "w": 49, + "h": 49 + } + }, + { + "filename": "0003.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 16, + "y": 31, + "w": 49, + "h": 49 + }, + "frame": { + "x": 0, + "y": 0, + "w": 49, + "h": 49 + } + }, + { + "filename": "0015.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 17, + "y": 27, + "w": 46, + "h": 53 + }, + "frame": { + "x": 49, + "y": 0, + "w": 46, + "h": 53 + } + }, + { + "filename": "0001.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 17, + "y": 27, + "w": 45, + "h": 53 + }, + "frame": { + "x": 0, + "y": 49, + "w": 45, + "h": 53 + } + }, + { + "filename": "0017.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 17, + "y": 27, + "w": 45, + "h": 53 + }, + "frame": { + "x": 0, + "y": 49, + "w": 45, + "h": 53 + } + }, + { + "filename": "0018.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 17, + "y": 27, + "w": 45, + "h": 53 + }, + "frame": { + "x": 0, + "y": 49, + "w": 45, + "h": 53 + } + }, + { + "filename": "0019.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 17, + "y": 27, + "w": 45, + "h": 53 + }, + "frame": { + "x": 0, + "y": 49, + "w": 45, + "h": 53 + } + }, + { + "filename": "0004.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 15, + "y": 33, + "w": 50, + "h": 47 + }, + "frame": { + "x": 45, + "y": 53, + "w": 50, + "h": 47 + } + }, + { + "filename": "0005.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 15, + "y": 33, + "w": 50, + "h": 47 + }, + "frame": { + "x": 45, + "y": 53, + "w": 50, + "h": 47 + } + }, + { + "filename": "0006.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 15, + "y": 36, + "w": 50, + "h": 44 + }, + "frame": { + "x": 45, + "y": 100, + "w": 50, + "h": 44 + } + }, + { + "filename": "0007.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 15, + "y": 36, + "w": 50, + "h": 44 + }, + "frame": { + "x": 45, + "y": 100, + "w": 50, + "h": 44 + } + }, + { + "filename": "0016.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 17, + "y": 27, + "w": 45, + "h": 53 + }, + "frame": { + "x": 0, + "y": 102, + "w": 45, + "h": 53 + } + }, + { + "filename": "0008.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 15, + "y": 38, + "w": 50, + "h": 42 + }, + "frame": { + "x": 45, + "y": 144, + "w": 50, + "h": 42 + } + }, + { + "filename": "0009.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 15, + "y": 38, + "w": 50, + "h": 42 + }, + "frame": { + "x": 45, + "y": 144, + "w": 50, + "h": 42 + } + }, + { + "filename": "0013.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 17, + "y": 27, + "w": 43, + "h": 53 + }, + "frame": { + "x": 95, + "y": 0, + "w": 43, + "h": 53 + } + }, + { + "filename": "0014.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 17, + "y": 27, + "w": 43, + "h": 53 + }, + "frame": { + "x": 95, + "y": 53, + "w": 43, + "h": 53 + } + }, + { + "filename": "0010.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 16, + "y": 31, + "w": 49, + "h": 49 + }, + "frame": { + "x": 95, + "y": 106, + "w": 49, + "h": 49 + } + }, + { + "filename": "0011.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 16, + "y": 31, + "w": 49, + "h": 49 + }, + "frame": { + "x": 95, + "y": 106, + "w": 49, + "h": 49 + } + }, + { + "filename": "0012.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 16, + "y": 29, + "w": 46, + "h": 51 + }, + "frame": { + "x": 138, + "y": 0, + "w": 46, + "h": 51 } } ] @@ -36,6 +414,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:c3001e18f1878c01a4825697200e823e:2003e0d4db249f7020c3471872198ac8:b01645b9e941158814978f2126e7e995$" + "smartupdate": "$TexturePacker:SmartUpdate:e8e867ad78b993918fba435e10511740:758a95ecd97e2607ff6ab81f85e665e6:b01645b9e941158814978f2126e7e995$" } } diff --git a/public/images/trainer/plasma_grunt_f.png b/public/images/trainer/plasma_grunt_f.png index 95b065f4360..7fa804cc39d 100644 Binary files a/public/images/trainer/plasma_grunt_f.png and b/public/images/trainer/plasma_grunt_f.png differ diff --git a/public/images/trainer/plasma_grunt_m.json b/public/images/trainer/plasma_grunt_m.json index 7c34b16790f..8fda1bd947b 100644 --- a/public/images/trainer/plasma_grunt_m.json +++ b/public/images/trainer/plasma_grunt_m.json @@ -4,30 +4,555 @@ "image": "plasma_grunt_m.png", "format": "RGBA8888", "size": { - "w": 72, - "h": 72 + "w": 262, + "h": 262 }, "scale": 1, "frames": [ { - "filename": "0001.png", + "filename": "0021.png", "rotated": false, - "trimmed": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 13, + "y": 11, + "w": 54, + "h": 69 + }, + "frame": { + "x": 0, + "y": 0, + "w": 54, + "h": 69 + } + }, + { + "filename": "0022.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 13, + "y": 11, + "w": 54, + "h": 69 + }, + "frame": { + "x": 0, + "y": 0, + "w": 54, + "h": 69 + } + }, + { + "filename": "0023.png", + "rotated": false, + "trimmed": true, "sourceSize": { "w": 80, "h": 80 }, "spriteSourceSize": { "x": 16, - "y": 7, - "w": 47, - "h": 72 + "y": 11, + "w": 51, + "h": 69 }, "frame": { "x": 0, + "y": 69, + "w": 51, + "h": 69 + } + }, + { + "filename": "0001.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 17, + "y": 11, + "w": 50, + "h": 69 + }, + "frame": { + "x": 0, + "y": 138, + "w": 50, + "h": 69 + } + }, + { + "filename": "0024.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 17, + "y": 11, + "w": 50, + "h": 69 + }, + "frame": { + "x": 0, + "y": 138, + "w": 50, + "h": 69 + } + }, + { + "filename": "0025.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 17, + "y": 11, + "w": 50, + "h": 69 + }, + "frame": { + "x": 0, + "y": 138, + "w": 50, + "h": 69 + } + }, + { + "filename": "0026.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 17, + "y": 11, + "w": 50, + "h": 69 + }, + "frame": { + "x": 0, + "y": 138, + "w": 50, + "h": 69 + } + }, + { + "filename": "0002.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 17, + "y": 11, + "w": 50, + "h": 69 + }, + "frame": { + "x": 50, + "y": 138, + "w": 50, + "h": 69 + } + }, + { + "filename": "0003.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 17, + "y": 11, + "w": 50, + "h": 69 + }, + "frame": { + "x": 50, + "y": 138, + "w": 50, + "h": 69 + } + }, + { + "filename": "0016.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 17, + "y": 11, + "w": 50, + "h": 69 + }, + "frame": { + "x": 51, + "y": 69, + "w": 50, + "h": 69 + } + }, + { + "filename": "0017.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 17, + "y": 11, + "w": 50, + "h": 69 + }, + "frame": { + "x": 54, "y": 0, - "w": 47, - "h": 72 + "w": 50, + "h": 69 + } + }, + { + "filename": "0018.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 17, + "y": 11, + "w": 50, + "h": 69 + }, + "frame": { + "x": 54, + "y": 0, + "w": 50, + "h": 69 + } + }, + { + "filename": "0019.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 18, + "y": 11, + "w": 49, + "h": 69 + }, + "frame": { + "x": 100, + "y": 138, + "w": 49, + "h": 69 + } + }, + { + "filename": "0020.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 18, + "y": 11, + "w": 49, + "h": 69 + }, + "frame": { + "x": 100, + "y": 138, + "w": 49, + "h": 69 + } + }, + { + "filename": "0004.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 14, + "y": 13, + "w": 52, + "h": 67 + }, + "frame": { + "x": 101, + "y": 69, + "w": 52, + "h": 67 + } + }, + { + "filename": "0005.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 14, + "y": 13, + "w": 52, + "h": 67 + }, + "frame": { + "x": 101, + "y": 69, + "w": 52, + "h": 67 + } + }, + { + "filename": "0015.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 14, + "y": 13, + "w": 52, + "h": 67 + }, + "frame": { + "x": 104, + "y": 0, + "w": 52, + "h": 67 + } + }, + { + "filename": "0006.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 12, + "y": 15, + "w": 53, + "h": 65 + }, + "frame": { + "x": 156, + "y": 0, + "w": 53, + "h": 65 + } + }, + { + "filename": "0007.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 12, + "y": 15, + "w": 53, + "h": 65 + }, + "frame": { + "x": 156, + "y": 0, + "w": 53, + "h": 65 + } + }, + { + "filename": "0008.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 12, + "y": 15, + "w": 53, + "h": 65 + }, + "frame": { + "x": 209, + "y": 0, + "w": 53, + "h": 65 + } + }, + { + "filename": "0009.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 12, + "y": 15, + "w": 53, + "h": 65 + }, + "frame": { + "x": 156, + "y": 65, + "w": 53, + "h": 65 + } + }, + { + "filename": "0010.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 12, + "y": 15, + "w": 53, + "h": 65 + }, + "frame": { + "x": 209, + "y": 65, + "w": 53, + "h": 65 + } + }, + { + "filename": "0011.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 12, + "y": 15, + "w": 53, + "h": 65 + }, + "frame": { + "x": 153, + "y": 130, + "w": 53, + "h": 65 + } + }, + { + "filename": "0012.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 12, + "y": 15, + "w": 53, + "h": 65 + }, + "frame": { + "x": 149, + "y": 195, + "w": 53, + "h": 65 + } + }, + { + "filename": "0013.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 12, + "y": 15, + "w": 53, + "h": 65 + }, + "frame": { + "x": 202, + "y": 195, + "w": 53, + "h": 65 + } + }, + { + "filename": "0014.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 80, + "h": 80 + }, + "spriteSourceSize": { + "x": 12, + "y": 15, + "w": 53, + "h": 65 + }, + "frame": { + "x": 206, + "y": 130, + "w": 53, + "h": 65 } } ] @@ -36,6 +561,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:61f195ebbcde93ab7442408edad7fe7a:28ae203b3cb42a94c4ba4420fdebdccc:9ae0ee174d431d48052a2f6b74e9d40c$" + "smartupdate": "$TexturePacker:SmartUpdate:8e214218a81b826b2cecce3e41f6eee8:2b88638dcf4559e6aad7c14cd730b7c3:9ae0ee174d431d48052a2f6b74e9d40c$" } } diff --git a/public/images/trainer/plasma_grunt_m.png b/public/images/trainer/plasma_grunt_m.png index e3ec6dd8c35..801e91b1d6d 100644 Binary files a/public/images/trainer/plasma_grunt_m.png and b/public/images/trainer/plasma_grunt_m.png differ diff --git a/public/images/trainer/plumeria.json b/public/images/trainer/plumeria.json index 936a8766750..4175fe5d716 100644 --- a/public/images/trainer/plumeria.json +++ b/public/images/trainer/plumeria.json @@ -4,8 +4,8 @@ "image": "plumeria.png", "format": "RGBA8888", "size": { - "w": 72, - "h": 72 + "w": 76, + "h": 76 }, "scale": 1, "frames": [ @@ -14,20 +14,20 @@ "rotated": false, "trimmed": false, "sourceSize": { - "w": 80, - "h": 80 + "w": 40, + "h": 76 }, "spriteSourceSize": { - "x": 23, - "y": 7, - "w": 36, - "h": 72 + "x": 0, + "y": 0, + "w": 40, + "h": 76 }, "frame": { "x": 0, "y": 0, - "w": 36, - "h": 72 + "w": 40, + "h": 76 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:5527e7b646932d429928b53f055e9d27:c0640510780d2974f9b74a7f8e6b29aa:7bfec029bae78c9d483f59c35b73afad$" + "smartupdate": "$TexturePacker:SmartUpdate:d0e080a4dcc30b39616c49dfd96c98f7:47c6a714be68fabdf11801166e154db6:7bfec029bae78c9d483f59c35b73afad$" } } diff --git a/public/images/trainer/plumeria.png b/public/images/trainer/plumeria.png index b7382f6afde..4528c3e2053 100644 Binary files a/public/images/trainer/plumeria.png and b/public/images/trainer/plumeria.png differ diff --git a/public/images/trainer/rose.json b/public/images/trainer/rose.json index 86869257b63..883aa128e50 100644 --- a/public/images/trainer/rose.json +++ b/public/images/trainer/rose.json @@ -4,8 +4,8 @@ "image": "rose.png", "format": "RGBA8888", "size": { - "w": 79, - "h": 79 + "w": 77, + "h": 77 }, "scale": 1, "frames": [ @@ -14,20 +14,20 @@ "rotated": false, "trimmed": false, "sourceSize": { - "w": 80, - "h": 80 + "w": 31, + "h": 77 }, "spriteSourceSize": { - "x": 16, - "y": 1, - "w": 52, - "h": 79 + "x": 0, + "y": 0, + "w": 31, + "h": 77 }, "frame": { "x": 0, "y": 0, - "w": 52, - "h": 79 + "w": 31, + "h": 77 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:2b4ccaff7255c7d72661eac13de83ff8:72ee3660cdf470bd67375d355307e19d:8d35b104fc841baa4443581e6cea979e$" + "smartupdate": "$TexturePacker:SmartUpdate:be2215e7232e2260242613e54c91c3c4:852fb3fda379db104106f8888649d9d5:8d35b104fc841baa4443581e6cea979e$" } } diff --git a/public/images/trainer/rose.png b/public/images/trainer/rose.png index f90da7568d4..4c448e3302b 100644 Binary files a/public/images/trainer/rose.png and b/public/images/trainer/rose.png differ diff --git a/public/images/trainer/shelly.json b/public/images/trainer/shelly.json index 7761779864a..bac17e2885e 100644 --- a/public/images/trainer/shelly.json +++ b/public/images/trainer/shelly.json @@ -4,8 +4,8 @@ "image": "shelly.png", "format": "RGBA8888", "size": { - "w": 80, - "h": 80 + "w": 78, + "h": 78 }, "scale": 1, "frames": [ @@ -14,20 +14,20 @@ "rotated": false, "trimmed": false, "sourceSize": { - "w": 80, - "h": 80 + "w": 45, + "h": 78 }, "spriteSourceSize": { "x": 0, "y": 0, - "w": 80, - "h": 80 + "w": 45, + "h": 78 }, "frame": { "x": 0, "y": 0, - "w": 80, - "h": 80 + "w": 45, + "h": 78 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:831f5748dad92911b10a1cb358ee2dae:a3bf81bbaa3b49cad5e0e549cf94563b:bb6befc9383c9c08837183ae2a7a80c1$" + "smartupdate": "$TexturePacker:SmartUpdate:601dbcee82b14bde5072df26ddd7d684:a0d576e65d8e3ff549dde75f0a82bc94:a277ff67eb669e1dac57ad29940004ac$" } } diff --git a/public/images/trainer/shelly.png b/public/images/trainer/shelly.png index 2885fbde48e..95e6a07310d 100644 Binary files a/public/images/trainer/shelly.png and b/public/images/trainer/shelly.png differ diff --git a/public/images/trainer/skull_grunt_f.json b/public/images/trainer/skull_grunt_f.json index 182f9300ad5..b8c42ffafdd 100644 --- a/public/images/trainer/skull_grunt_f.json +++ b/public/images/trainer/skull_grunt_f.json @@ -4,8 +4,8 @@ "image": "skull_grunt_f.png", "format": "RGBA8888", "size": { - "w": 74, - "h": 74 + "w": 69, + "h": 69 }, "scale": 1, "frames": [ @@ -14,20 +14,20 @@ "rotated": false, "trimmed": false, "sourceSize": { - "w": 31, - "h": 74 + "w": 44, + "h": 69 }, "spriteSourceSize": { "x": 0, "y": 0, - "w": 31, - "h": 74 + "w": 44, + "h": 69 }, "frame": { "x": 0, "y": 0, - "w": 31, - "h": 74 + "w": 44, + "h": 69 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:71a1f5b1981674c6e81163ac8ea576c3:a5e612d58e5f0a1489e111212baea09d:dd369353af16e4c5eb6547e129dfac18$" + "smartupdate": "$TexturePacker:SmartUpdate:b9685517b9674887653c84a03f3781c0:894dcd88bf117d48750df82b7bfac644:9035f560a0ab0d45bcc084aba7172990$" } } diff --git a/public/images/trainer/skull_grunt_f.png b/public/images/trainer/skull_grunt_f.png index fe7834ba4a8..c26e8d7f882 100644 Binary files a/public/images/trainer/skull_grunt_f.png and b/public/images/trainer/skull_grunt_f.png differ diff --git a/public/images/trainer/skull_grunt_m.json b/public/images/trainer/skull_grunt_m.json index 7c728e9d3fc..6a2d13ed8a3 100644 --- a/public/images/trainer/skull_grunt_m.json +++ b/public/images/trainer/skull_grunt_m.json @@ -4,8 +4,8 @@ "image": "skull_grunt_m.png", "format": "RGBA8888", "size": { - "w": 72, - "h": 72 + "w": 64, + "h": 64 }, "scale": 1, "frames": [ @@ -14,20 +14,20 @@ "rotated": false, "trimmed": false, "sourceSize": { - "w": 51, - "h": 72 + "w": 39, + "h": 64 }, "spriteSourceSize": { "x": 0, "y": 0, - "w": 51, - "h": 72 + "w": 39, + "h": 64 }, "frame": { "x": 0, "y": 0, - "w": 51, - "h": 72 + "w": 39, + "h": 64 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:4deb2a68e4d168bb1a40cb5d190a7d1f:be3d7b29f4b544ba51cf907691fef51d:df57ca2c9bf5f80d930306e15a851d4d$" + "smartupdate": "$TexturePacker:SmartUpdate:c39ac1d47c8cbe300cffe98bda48c590:b400e0c6286f0e20dfbc383f7453e35b:1ff10b395daf6ebfa377680a6404f816$" } } diff --git a/public/images/trainer/skull_grunt_m.png b/public/images/trainer/skull_grunt_m.png index f2b8acba984..8babb09ec74 100644 Binary files a/public/images/trainer/skull_grunt_m.png and b/public/images/trainer/skull_grunt_m.png differ diff --git a/public/images/trainer/star_grunt_f.json b/public/images/trainer/star_grunt_f.json index e26477e3512..a6b613f44cf 100644 --- a/public/images/trainer/star_grunt_f.json +++ b/public/images/trainer/star_grunt_f.json @@ -14,12 +14,12 @@ "rotated": false, "trimmed": false, "sourceSize": { - "w": 80, - "h": 80 + "w": 30, + "h": 68 }, "spriteSourceSize": { - "x": 24, - "y": 11, + "x": 0, + "y": 0, "w": 30, "h": 68 }, @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:b542a1bdd6995584fc776f75d578b434:f03fddece4494ab59698002fe6671972:c6f0e54e24ec5ffaa711700431b1955e$" + "smartupdate": "$TexturePacker:SmartUpdate:a5493363086a57d0f145cf61c42475de:2e4d3b330bb89e05e93f34d605eee203:c6f0e54e24ec5ffaa711700431b1955e$" } } diff --git a/public/images/trainer/star_grunt_f.png b/public/images/trainer/star_grunt_f.png index 6eb63ae1e03..ee0c25147cc 100644 Binary files a/public/images/trainer/star_grunt_f.png and b/public/images/trainer/star_grunt_f.png differ diff --git a/public/images/trainer/star_grunt_m.json b/public/images/trainer/star_grunt_m.json index bf49e3027e6..ba245e2eeb3 100644 --- a/public/images/trainer/star_grunt_m.json +++ b/public/images/trainer/star_grunt_m.json @@ -4,8 +4,8 @@ "image": "star_grunt_m.png", "format": "RGBA8888", "size": { - "w": 70, - "h": 70 + "w": 64, + "h": 64 }, "scale": 1, "frames": [ @@ -14,20 +14,20 @@ "rotated": false, "trimmed": false, "sourceSize": { - "w": 80, - "h": 80 + "w": 36, + "h": 64 }, "spriteSourceSize": { - "x": 24, - "y": 9, - "w": 31, - "h": 70 + "x": 0, + "y": 0, + "w": 36, + "h": 64 }, "frame": { "x": 0, "y": 0, - "w": 31, - "h": 70 + "w": 36, + "h": 64 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:abc4b0424c37fd55a2bf2e9f5142adce:41a140aa68a1eda61d9a00cab4e07721:a0796711f9e0333796b6629cd43ff8e8$" + "smartupdate": "$TexturePacker:SmartUpdate:11da63c3829d44356a3c26d094212d64:45ebf021548ac0e12b6f25093c5bf0db:a0796711f9e0333796b6629cd43ff8e8$" } } diff --git a/public/images/trainer/star_grunt_m.png b/public/images/trainer/star_grunt_m.png index a69359eda8e..13fd4e88510 100644 Binary files a/public/images/trainer/star_grunt_m.png and b/public/images/trainer/star_grunt_m.png differ diff --git a/public/locales b/public/locales index 5ef993b95fa..2d3765a4f03 160000 --- a/public/locales +++ b/public/locales @@ -1 +1 @@ -Subproject commit 5ef993b95fa8248adc0fb7d9489baccf546bf8e3 +Subproject commit 2d3765a4f035b4916523bf75b754e153e9d65134 diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 00503da90f2..2c67c4d2cde 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -2113,10 +2113,14 @@ export default class BattleScene extends SceneBase { return 10.145; case "battle_kalos_champion": //XY Kalos Champion Battle return 10.380; + case "battle_champion_kukui": //SM Kukui Battle + return 15.784; case "battle_alola_champion": //USUM Alola Champion Battle return 13.025; case "battle_galar_champion": //SWSH Galar Champion Battle return 61.635; + case "battle_mustard": //SWSH Mustard Battle + return 22.442; case "battle_champion_geeta": //SV Champion Geeta Battle return 37.447; case "battle_champion_nemona": //SV Champion Nemona Battle @@ -2251,8 +2255,8 @@ export default class BattleScene extends SceneBase { return 12.062; case "battle_galactic_grunt": //BDSP Team Galactic Battle return 13.043; - case "battle_plasma_grunt": //BW Team Plasma Battle - return 12.974; + case "battle_plasma_grunt": //B2W2 Team Plasma Battle + return 14.758; case "battle_flare_grunt": //XY Team Flare Battle return 4.228; case "battle_aether_grunt": // SM Aether Foundation Battle @@ -2265,6 +2269,8 @@ export default class BattleScene extends SceneBase { return 133.362; case "battle_galactic_admin": //BDSP Team Galactic Admin Battle return 11.997; + case "battle_colress": //B2W2 Colress Battle + return 12.234; case "battle_skull_admin": //SM Team Skull Admin Battle return 15.463; case "battle_oleana": //SWSH Oleana Battle diff --git a/src/battle.ts b/src/battle.ts index 287a981f83d..fa333040c22 100644 --- a/src/battle.ts +++ b/src/battle.ts @@ -578,14 +578,14 @@ export const classicFixedBattles: FixedBattleConfigs = { [ClassicFixedBossWaves.EVIL_GRUNT_3]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1) .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.ROCKET_GRUNT, TrainerType.MAGMA_GRUNT, TrainerType.AQUA_GRUNT, TrainerType.GALACTIC_GRUNT, TrainerType.PLASMA_GRUNT, TrainerType.FLARE_GRUNT, TrainerType.AETHER_GRUNT, TrainerType.SKULL_GRUNT, TrainerType.MACRO_GRUNT, TrainerType.STAR_GRUNT ], true)), [ClassicFixedBossWaves.EVIL_ADMIN_1]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1) - .setGetTrainerFunc(getRandomTrainerFunc([[ TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL ], [ TrainerType.TABITHA, TrainerType.COURTNEY ], [ TrainerType.MATT, TrainerType.SHELLY ], [ TrainerType.JUPITER, TrainerType.MARS, TrainerType.SATURN ], [ TrainerType.ZINZOLIN, TrainerType.ROOD ], [ TrainerType.XEROSIC, TrainerType.BRYONY ], TrainerType.FABA, TrainerType.PLUMERIA, TrainerType.OLEANA, [ TrainerType.GIACOMO, TrainerType.MELA, TrainerType.ATTICUS, TrainerType.ORTEGA, TrainerType.ERI ]], true)), + .setGetTrainerFunc(getRandomTrainerFunc([[ TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL ], [ TrainerType.TABITHA, TrainerType.COURTNEY ], [ TrainerType.MATT, TrainerType.SHELLY ], [ TrainerType.JUPITER, TrainerType.MARS, TrainerType.SATURN ], [ TrainerType.ZINZOLIN, TrainerType.COLRESS ], [ TrainerType.XEROSIC, TrainerType.BRYONY ], TrainerType.FABA, TrainerType.PLUMERIA, TrainerType.OLEANA, [ TrainerType.GIACOMO, TrainerType.MELA, TrainerType.ATTICUS, TrainerType.ORTEGA, TrainerType.ERI ]], true)), [ClassicFixedBossWaves.RIVAL_4]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) .setGetTrainerFunc(() => new Trainer(TrainerType.RIVAL_4, globalScene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)) .setCustomModifierRewards({ guaranteedModifierTiers: [ ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.ULTRA ], allowLuckUpgrades: false }), [ClassicFixedBossWaves.EVIL_GRUNT_4]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1) .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.ROCKET_GRUNT, TrainerType.MAGMA_GRUNT, TrainerType.AQUA_GRUNT, TrainerType.GALACTIC_GRUNT, TrainerType.PLASMA_GRUNT, TrainerType.FLARE_GRUNT, TrainerType.AETHER_GRUNT, TrainerType.SKULL_GRUNT, TrainerType.MACRO_GRUNT, TrainerType.STAR_GRUNT ], true)), [ClassicFixedBossWaves.EVIL_ADMIN_2]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1) - .setGetTrainerFunc(getRandomTrainerFunc([[ TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL ], [ TrainerType.TABITHA, TrainerType.COURTNEY ], [ TrainerType.MATT, TrainerType.SHELLY ], [ TrainerType.JUPITER, TrainerType.MARS, TrainerType.SATURN ], [ TrainerType.ZINZOLIN, TrainerType.ROOD ], [ TrainerType.XEROSIC, TrainerType.BRYONY ], TrainerType.FABA, TrainerType.PLUMERIA, TrainerType.OLEANA, [ TrainerType.GIACOMO, TrainerType.MELA, TrainerType.ATTICUS, TrainerType.ORTEGA, TrainerType.ERI ]], true, 1)), + .setGetTrainerFunc(getRandomTrainerFunc([[ TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL ], [ TrainerType.TABITHA, TrainerType.COURTNEY ], [ TrainerType.MATT, TrainerType.SHELLY ], [ TrainerType.JUPITER, TrainerType.MARS, TrainerType.SATURN ], [ TrainerType.ZINZOLIN, TrainerType.COLRESS ], [ TrainerType.XEROSIC, TrainerType.BRYONY ], TrainerType.FABA, TrainerType.PLUMERIA, TrainerType.OLEANA, [ TrainerType.GIACOMO, TrainerType.MELA, TrainerType.ATTICUS, TrainerType.ORTEGA, TrainerType.ERI ]], true, 1)), [ClassicFixedBossWaves.EVIL_BOSS_1]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(ClassicFixedBossWaves.EVIL_GRUNT_1) .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.ROCKET_BOSS_GIOVANNI_1, TrainerType.MAXIE, TrainerType.ARCHIE, TrainerType.CYRUS, TrainerType.GHETSIS, TrainerType.LYSANDRE, TrainerType.LUSAMINE, TrainerType.GUZMA, TrainerType.ROSE, TrainerType.PENNY ])) .setCustomModifierRewards({ guaranteedModifierTiers: [ ModifierTier.ROGUE, ModifierTier.ROGUE, ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.ULTRA ], allowLuckUpgrades: false }), @@ -604,7 +604,7 @@ export const classicFixedBattles: FixedBattleConfigs = { [ClassicFixedBossWaves.ELITE_FOUR_4]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(ClassicFixedBossWaves.ELITE_FOUR_1) .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.LANCE, TrainerType.KAREN, TrainerType.DRAKE, TrainerType.LUCIAN, TrainerType.CAITLIN, TrainerType.DRASNA, TrainerType.KAHILI, TrainerType.RAIHAN_ELITE, TrainerType.HASSEL, TrainerType.DRAYTON ])), [ClassicFixedBossWaves.CHAMPION]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(ClassicFixedBossWaves.ELITE_FOUR_1) - .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.BLUE, [ TrainerType.RED, TrainerType.LANCE_CHAMPION ], [ TrainerType.STEVEN, TrainerType.WALLACE ], TrainerType.CYNTHIA, [ TrainerType.ALDER, TrainerType.IRIS ], TrainerType.DIANTHA, TrainerType.HAU, TrainerType.LEON, [ TrainerType.GEETA, TrainerType.NEMONA ], TrainerType.KIERAN ])), + .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.BLUE, [ TrainerType.RED, TrainerType.LANCE_CHAMPION ], [ TrainerType.STEVEN, TrainerType.WALLACE ], TrainerType.CYNTHIA, [ TrainerType.ALDER, TrainerType.IRIS ], TrainerType.DIANTHA, [ TrainerType.KUKUI, TrainerType.HAU ], [ TrainerType.LEON, TrainerType.MUSTARD ], [ TrainerType.GEETA, TrainerType.NEMONA ], TrainerType.KIERAN ])), [ClassicFixedBossWaves.RIVAL_6]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) .setGetTrainerFunc(() => new Trainer(TrainerType.RIVAL_6, globalScene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)) .setCustomModifierRewards({ guaranteedModifierTiers: [ ModifierTier.ROGUE, ModifierTier.ROGUE, ModifierTier.ULTRA, ModifierTier.ULTRA, ModifierTier.GREAT, ModifierTier.GREAT ], allowLuckUpgrades: false }) diff --git a/src/data/challenge.ts b/src/data/challenge.ts index fab5196601c..2b2048ca18d 100644 --- a/src/data/challenge.ts +++ b/src/data/challenge.ts @@ -469,7 +469,7 @@ export class SingleGenerationChallenge extends Challenge { let trainerTypes: (TrainerType | TrainerType[])[] = []; const evilTeamWaves: number[] = [ ClassicFixedBossWaves.EVIL_GRUNT_1, ClassicFixedBossWaves.EVIL_GRUNT_2, ClassicFixedBossWaves.EVIL_GRUNT_3, ClassicFixedBossWaves.EVIL_ADMIN_1, ClassicFixedBossWaves.EVIL_GRUNT_4, ClassicFixedBossWaves.EVIL_ADMIN_2, ClassicFixedBossWaves.EVIL_BOSS_1, ClassicFixedBossWaves.EVIL_BOSS_2 ]; const evilTeamGrunts = [[ TrainerType.ROCKET_GRUNT ], [ TrainerType.ROCKET_GRUNT ], [ TrainerType.MAGMA_GRUNT, TrainerType.AQUA_GRUNT ], [ TrainerType.GALACTIC_GRUNT ], [ TrainerType.PLASMA_GRUNT ], [ TrainerType.FLARE_GRUNT ], [ TrainerType.AETHER_GRUNT, TrainerType.SKULL_GRUNT ], [ TrainerType.MACRO_GRUNT ], [ TrainerType.STAR_GRUNT ]]; - const evilTeamAdmins = [[ TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL ], [ TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL ], [[ TrainerType.TABITHA, TrainerType.COURTNEY ], [ TrainerType.MATT, TrainerType.SHELLY ]], [ TrainerType.JUPITER, TrainerType.MARS, TrainerType.SATURN ], [ TrainerType.ZINZOLIN, TrainerType.ROOD ], [ TrainerType.XEROSIC, TrainerType.BRYONY ], [ TrainerType.FABA, TrainerType.PLUMERIA ], [ TrainerType.OLEANA ], [ TrainerType.GIACOMO, TrainerType.MELA, TrainerType.ATTICUS, TrainerType.ORTEGA, TrainerType.ERI ]]; + const evilTeamAdmins = [[ TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL ], [ TrainerType.ARCHER, TrainerType.ARIANA, TrainerType.PROTON, TrainerType.PETREL ], [[ TrainerType.TABITHA, TrainerType.COURTNEY ], [ TrainerType.MATT, TrainerType.SHELLY ]], [ TrainerType.JUPITER, TrainerType.MARS, TrainerType.SATURN ], [ TrainerType.ZINZOLIN, TrainerType.COLRESS ], [ TrainerType.XEROSIC, TrainerType.BRYONY ], [ TrainerType.FABA, TrainerType.PLUMERIA ], [ TrainerType.OLEANA ], [ TrainerType.GIACOMO, TrainerType.MELA, TrainerType.ATTICUS, TrainerType.ORTEGA, TrainerType.ERI ]]; const evilTeamBosses = [[ TrainerType.ROCKET_BOSS_GIOVANNI_1 ], [ TrainerType.ROCKET_BOSS_GIOVANNI_1 ], [ TrainerType.MAXIE, TrainerType.ARCHIE ], [ TrainerType.CYRUS ], [ TrainerType.GHETSIS ], [ TrainerType.LYSANDRE ], [ TrainerType.LUSAMINE, TrainerType.GUZMA ], [ TrainerType.ROSE ], [ TrainerType.PENNY ]]; const evilTeamBossRematches = [[ TrainerType.ROCKET_BOSS_GIOVANNI_2 ], [ TrainerType.ROCKET_BOSS_GIOVANNI_2 ], [ TrainerType.MAXIE_2, TrainerType.ARCHIE_2 ], [ TrainerType.CYRUS_2 ], [ TrainerType.GHETSIS_2 ], [ TrainerType.LYSANDRE_2 ], [ TrainerType.LUSAMINE_2, TrainerType.GUZMA_2 ], [ TrainerType.ROSE_2 ], [ TrainerType.PENNY_2 ]]; switch (waveIndex) { @@ -509,7 +509,7 @@ export class SingleGenerationChallenge extends Challenge { trainerTypes = [ TrainerType.LANCE, TrainerType.KAREN, TrainerType.DRAKE, TrainerType.LUCIAN, TrainerType.CAITLIN, TrainerType.DRASNA, TrainerType.KAHILI, TrainerType.RAIHAN_ELITE, TrainerType.HASSEL ]; break; case ClassicFixedBossWaves.CHAMPION: - trainerTypes = [ TrainerType.BLUE, Utils.randSeedItem([ TrainerType.RED, TrainerType.LANCE_CHAMPION ]), Utils.randSeedItem([ TrainerType.STEVEN, TrainerType.WALLACE ]), TrainerType.CYNTHIA, Utils.randSeedItem([ TrainerType.ALDER, TrainerType.IRIS ]), TrainerType.DIANTHA, TrainerType.HAU, TrainerType.LEON, Utils.randSeedItem([ TrainerType.GEETA, TrainerType.NEMONA ]) ]; + trainerTypes = [ TrainerType.BLUE, Utils.randSeedItem([ TrainerType.RED, TrainerType.LANCE_CHAMPION ]), Utils.randSeedItem([ TrainerType.STEVEN, TrainerType.WALLACE ]), TrainerType.CYNTHIA, Utils.randSeedItem([ TrainerType.ALDER, TrainerType.IRIS ]), TrainerType.DIANTHA, Utils.randSeedItem([ TrainerType.KUKUI, TrainerType.HAU ]), Utils.randSeedItem([ TrainerType.LEON, TrainerType.MUSTARD ]), Utils.randSeedItem([ TrainerType.GEETA, TrainerType.NEMONA ]) ]; break; } if (trainerTypes.length === 0) { diff --git a/src/data/dialogue.ts b/src/data/dialogue.ts index 3219ce4d058..b42850fe4de 100644 --- a/src/data/dialogue.ts +++ b/src/data/dialogue.ts @@ -726,17 +726,17 @@ export const trainerTypeDialogue: TrainerTypeDialogue = { ] } ], - [TrainerType.ROOD]: [ + [TrainerType.COLRESS]: [ { encounter: [ - "dialogue:rood.encounter.1", - "dialogue:rood.encounter.2", - "dialogue:rood.encounter.3", + "dialogue:colress.encounter.1", + "dialogue:colress.encounter.2", + "dialogue:colress.encounter.3", ], victory: [ - "dialogue:rood.victory.1", - "dialogue:rood.victory.2", - "dialogue:rood.victory.3", + "dialogue:colress.victory.1", + "dialogue:colress.victory.2", + "dialogue:colress.victory.3", ] } ], @@ -2505,6 +2505,17 @@ export const trainerTypeDialogue: TrainerTypeDialogue = { "dialogue:iris.defeat.1" ] }, + [TrainerType.KUKUI]: { + encounter: [ + "dialogue:kukui.encounter.1" + ], + victory: [ + "dialogue:kukui.victory.1" + ], + defeat: [ + "dialogue:kukui.defeat.1" + ] + }, [TrainerType.HAU]: { encounter: [ "dialogue:hau.encounter.1" @@ -2549,6 +2560,17 @@ export const trainerTypeDialogue: TrainerTypeDialogue = { "dialogue:leon.defeat.1" ] }, + [TrainerType.MUSTARD]: { + encounter: [ + "dialogue:mustard.encounter.1" + ], + victory: [ + "dialogue:mustard.victory.1" + ], + defeat: [ + "dialogue:mustard.defeat.1" + ] + }, [TrainerType.WHITNEY]: { encounter: [ "dialogue:whitney.encounter.1" diff --git a/src/data/mystery-encounters/encounters/clowning-around-encounter.ts b/src/data/mystery-encounters/encounters/clowning-around-encounter.ts index f6700bb3716..e660b0b873c 100644 --- a/src/data/mystery-encounters/encounters/clowning-around-encounter.ts +++ b/src/data/mystery-encounters/encounters/clowning-around-encounter.ts @@ -15,7 +15,7 @@ import { TrainerType } from "#enums/trainer-type"; import { getPokemonSpecies } from "#app/data/pokemon-species"; import { Abilities } from "#enums/abilities"; import { applyAbilityOverrideToPokemon, applyModifierTypeToPlayerPokemon } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; -import type { Type } from "#enums/type"; +import { Type } from "#enums/type"; import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { randSeedInt, randSeedShuffle } from "#app/utils"; @@ -127,6 +127,13 @@ export const ClowningAroundEncounter: MysteryEncounter = encounter.setDialogueToken("ability", new Ability(ability, 3).name); encounter.misc = { ability }; + // Decide the random types for Blacephalon. They should not be the same. + const firstType: number = randSeedInt(18); + let secondType: number = randSeedInt(17); + if ( secondType >= firstType ) { + secondType++; + } + encounter.enemyPartyConfigs.push({ trainerConfig: clownConfig, pokemonConfigs: [ // Overrides first 2 pokemon to be Mr. Mime and Blacephalon @@ -137,7 +144,7 @@ export const ClowningAroundEncounter: MysteryEncounter = }, { // Blacephalon has the random ability from pool, and 2 entirely random types to fit with the theme of the encounter species: getPokemonSpecies(Species.BLACEPHALON), - customPokemonData: new CustomPokemonData({ ability: ability, types: [ randSeedInt(18), randSeedInt(18) ]}), + customPokemonData: new CustomPokemonData({ ability: ability, types: [ firstType, secondType ]}), isBoss: true, moveSet: [ Moves.TRICK, Moves.HYPNOSIS, Moves.SHADOW_BALL, Moves.MIND_BLOWN ] }, @@ -347,7 +354,7 @@ export const ClowningAroundEncounter: MysteryEncounter = priorityTypes = randSeedShuffle(priorityTypes); } - const newTypes = [ originalTypes[0] ]; + const newTypes = [ Type.UNKNOWN ]; let secondType: Type | null = null; while (secondType === null || secondType === newTypes[0] || originalTypes.includes(secondType)) { if (priorityTypes.length > 0) { diff --git a/src/data/mystery-encounters/encounters/weird-dream-encounter.ts b/src/data/mystery-encounters/encounters/weird-dream-encounter.ts index e8a4c405d5f..e047a7a4f01 100644 --- a/src/data/mystery-encounters/encounters/weird-dream-encounter.ts +++ b/src/data/mystery-encounters/encounters/weird-dream-encounter.ts @@ -1,4 +1,4 @@ -import type { Type } from "#enums/type"; +import { Type } from "#enums/type"; import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { Species } from "#enums/species"; import { globalScene } from "#app/global-scene"; @@ -528,7 +528,7 @@ async function postProcessTransformedPokemon(previousPokemon: PlayerPokemon, new // Randomize the second type of the pokemon // If the pokemon does not normally have a second type, it will gain 1 - const newTypes = [ newPokemon.getTypes()[0] ]; + const newTypes = [ Type.UNKNOWN ]; let newType = randSeedInt(18) as Type; while (newType === newTypes[0]) { newType = randSeedInt(18) as Type; diff --git a/src/data/trainer-config.ts b/src/data/trainer-config.ts index 897231a9611..590a8688428 100644 --- a/src/data/trainer-config.ts +++ b/src/data/trainer-config.ts @@ -614,6 +614,13 @@ export class TrainerConfig { [TrainerPoolTier.RARE]: [ Species.HISUI_ZORUA, Species.AXEW, Species.DEINO, Species.HISUI_BRAVIARY ] }; } + case "plasma_2": { + return { + [TrainerPoolTier.COMMON]: [ Species.MAGNEMITE, Species.GRIMER, Species.VOLTORB, Species.PORYGON, Species.BRONZOR, Species.MUNNA, Species.SOLOSIS, Species.JOLTIK, Species.FERROSEED, Species.TYNAMO, Species.ELGYEM ], + [TrainerPoolTier.UNCOMMON]: [ Species.BELDUM, Species.ROTOM, Species.TIRTOUGA, Species.ARCHEN, Species.GOLETT, Species.DURANT, Species.GRUBBIN, Species.BLIPBUG, Species.VAROOM, Species.ALOLA_GRIMER, Species.HISUI_VOLTORB ], + [TrainerPoolTier.RARE]: [ Species.ELEKID, Species.MAGBY, Species.PAWNIARD, Species.DURALUDON ] + }; + } case "flare": { return { [TrainerPoolTier.COMMON]: [ Species.FLETCHLING, Species.LITLEO, Species.INKAY, Species.FOONGUS, Species.HELIOPTILE, Species.ELECTRIKE, Species.SKORUPI, Species.PURRLOIN, Species.CLAWITZER, Species.PANCHAM, Species.ESPURR, Species.BUNNELBY ], @@ -1538,7 +1545,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerPoolTier.SUPER_RARE]: [ Species.DRUDDIGON, Species.HISUI_ZORUA, Species.AXEW, Species.DEINO ] }), [TrainerType.ZINZOLIN]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("plasma_sage", "plasma", [ Species.CRYOGONAL ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_plasma_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), - [TrainerType.ROOD]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("plasma_sage", "plasma", [ Species.SWOOBAT ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_plasma_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + [TrainerType.COLRESS]: new TrainerConfig(++t).setMoneyMultiplier(1.5).initForEvilTeamAdmin("plasma_boss", "plasma_2", [ Species.KLINKLANG ]).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_colress").setMixedBattleBgm("battle_colress").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), [TrainerType.FLARE_GRUNT]: new TrainerConfig(++t).setHasGenders("Flare Grunt Female").setHasDouble("Flare Grunts").setMoneyMultiplier(1.0).setEncounterBgm(TrainerType.PLASMA_GRUNT).setBattleBgm("battle_plasma_grunt").setMixedBattleBgm("battle_flare_grunt").setVictoryBgm("victory_team_plasma").setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ Species.FLETCHLING, Species.LITLEO, Species.PONYTA, Species.INKAY, Species.HOUNDOUR, Species.SKORUPI, Species.SCRAFTY, Species.CROAGUNK, Species.SCATTERBUG, Species.ESPURR ], @@ -1935,6 +1942,34 @@ export const trainerConfigs: TrainerConfigs = { const teraPokemon = party[3]; return [ modifierTypes.TERA_SHARD().generateType([], [ teraPokemon.species.type2 ])!.withIdFromFunc(modifierTypes.TERA_SHARD).newModifier(teraPokemon) as PersistentModifier ]; }), + [TrainerType.KUKUI]: new TrainerConfig(++t).initForChampion(true).setMixedBattleBgm("battle_champion_kukui") + .setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.LYCANROC ], TrainerSlot.TRAINER, true, p => { + p.generateAndPopulateMoveset(); + p.formIndex = 2; // Dusk Lycanroc + })) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.MAGNEZONE, Species.ALOLA_NINETALES ])) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.TORNADUS, Species.THUNDURUS, Species.LANDORUS ], TrainerSlot.TRAINER, true, p => { + p.formIndex = 1; // Therian Forms + p.generateAndPopulateMoveset(); + p.pokeball = PokeballType.ULTRA_BALL; + })) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.TAPU_KOKO, Species.TAPU_FINI ], TrainerSlot.TRAINER, true, p => { + p.generateAndPopulateMoveset(); + p.setBoss(true, 2); + p.pokeball = PokeballType.ULTRA_BALL; + })) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.SNORLAX ], TrainerSlot.TRAINER, true, p => { + p.generateAndPopulateMoveset(); + p.formIndex = 1; // G-Max Snorlax + })) + .setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.INCINEROAR, Species.HISUI_DECIDUEYE ], TrainerSlot.TRAINER, true, p => { + p.generateAndPopulateMoveset(); + p.gender = Gender.MALE; + })) + .setGenModifiersFunc(party => { + const teraPokemon = party[5]; + return [ modifierTypes.TERA_SHARD().generateType([], [ teraPokemon.species.type2 ])!.withIdFromFunc(modifierTypes.TERA_SHARD).newModifier(teraPokemon) as PersistentModifier ]; + }), [TrainerType.HAU]: new TrainerConfig(++t).initForChampion(true).setMixedBattleBgm("battle_alola_champion") .setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.ALOLA_RAICHU ], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); @@ -1944,7 +1979,7 @@ export const trainerConfigs: TrainerConfigs = { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.MASTER_BALL; })) - .setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.TAPU_KOKO, Species.TAPU_LELE, Species.TAPU_BULU, Species.TAPU_FINI ], TrainerSlot.TRAINER, true, p => { + .setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.TAPU_LELE, Species.TAPU_BULU ], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; })) @@ -1953,7 +1988,7 @@ export const trainerConfigs: TrainerConfigs = { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ROGUE_BALL; })) - .setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.DECIDUEYE, Species.INCINEROAR, Species.PRIMARINA ], TrainerSlot.TRAINER, true, p => { + .setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.DECIDUEYE, Species.PRIMARINA ], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); p.setBoss(true, 2); p.gender = p.species.speciesId === Species.PRIMARINA ? Gender.FEMALE : Gender.MALE; @@ -1986,6 +2021,39 @@ export const trainerConfigs: TrainerConfigs = { const teraPokemon = party[3]; return [ modifierTypes.TERA_SHARD().generateType([], [ teraPokemon.species.type1 ])!.withIdFromFunc(modifierTypes.TERA_SHARD).newModifier(teraPokemon) as PersistentModifier ]; }), + [TrainerType.MUSTARD]: new TrainerConfig(++t).initForChampion(true).setMixedBattleBgm("battle_mustard") + .setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.CORVIKNIGHT ], TrainerSlot.TRAINER, true, p => { + p.generateAndPopulateMoveset(); + p.pokeball = PokeballType.ULTRA_BALL; + })) + .setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.KOMMO_O ], TrainerSlot.TRAINER, true, p => { + p.generateAndPopulateMoveset(); + p.pokeball = PokeballType.ULTRA_BALL; + })) + .setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.GALAR_SLOWBRO, Species.GALAR_SLOWKING ], TrainerSlot.TRAINER, true, p => { + p.generateAndPopulateMoveset(); + p.pokeball = PokeballType.ULTRA_BALL; + })) + .setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.GALAR_DARMANITAN ], TrainerSlot.TRAINER, true, p => { + p.generateAndPopulateMoveset(); + p.pokeball = PokeballType.ULTRA_BALL; + })) + .setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.BLASTOISE, Species.VENUSAUR ], TrainerSlot.TRAINER, true, p => { + p.generateAndPopulateMoveset(); + p.setBoss(true, 2); + p.pokeball = PokeballType.ULTRA_BALL; + })) + .setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.URSHIFU ], TrainerSlot.TRAINER, true, p => { + p.formIndex = Utils.randSeedInt(2, 2); // Random G-Max Urshifu + p.generateAndPopulateMoveset(); + p.generateName(); + p.gender = Gender.MALE; + p.pokeball = PokeballType.ULTRA_BALL; + })) + .setGenModifiersFunc(party => { + const teraPokemon = party[2]; + return [ modifierTypes.TERA_SHARD().generateType([], [ teraPokemon.species.type2 ])!.withIdFromFunc(modifierTypes.TERA_SHARD).newModifier(teraPokemon) as PersistentModifier ]; + }), [TrainerType.GEETA]: new TrainerConfig(++t).initForChampion(false).setMixedBattleBgm("battle_champion_geeta") .setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.GLIMMORA ], TrainerSlot.TRAINER, true, p => { p.generateAndPopulateMoveset(); @@ -2033,12 +2101,11 @@ export const trainerConfigs: TrainerConfigs = { p.generateAndPopulateMoveset(); })) .setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.INCINEROAR, Species.GRIMMSNARL ], TrainerSlot.TRAINER, true, p => { - // Intimidate Incineroar, Prankster Grimmsnarl p.generateAndPopulateMoveset(); if (p.species.speciesId === Species.INCINEROAR) { - p.abilityIndex = 2; + p.abilityIndex = 2; // Intimidate } else if (p.species.speciesId === Species.GRIMMSNARL) { - p.abilityIndex = 0; + p.abilityIndex = 0; // Prankster } })) .setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.TERAPAGOS ], TrainerSlot.TRAINER, true, p => { diff --git a/src/enums/trainer-type.ts b/src/enums/trainer-type.ts index 708faf69196..e22dc5d81c7 100644 --- a/src/enums/trainer-type.ts +++ b/src/enums/trainer-type.ts @@ -68,7 +68,7 @@ export enum TrainerType { SATURN, PLASMA_GRUNT, ZINZOLIN, - ROOD, + COLRESS, FLARE_GRUNT, BRYONY, XEROSIC, @@ -243,8 +243,10 @@ export enum TrainerType { ALDER, IRIS, DIANTHA, + KUKUI, HAU, LEON, + MUSTARD, GEETA, NEMONA, KIERAN, diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 5b7cafeefb8..0458c5471d2 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -7,7 +7,7 @@ import { variantColorCache } from "#app/data/variant"; import { variantData } from "#app/data/variant"; import BattleInfo, { PlayerBattleInfo, EnemyBattleInfo } from "#app/ui/battle-info"; import type Move from "#app/data/move"; -import { HighCritAttr, HitsTagAttr, applyMoveAttrs, FixedDamageAttr, VariableAtkAttr, allMoves, MoveCategory, TypelessAttr, CritOnlyAttr, getMoveTargets, OneHitKOAttr, VariableMoveTypeAttr, VariableDefAttr, AttackMove, ModifiedDamageAttr, VariableMoveTypeMultiplierAttr, IgnoreOpponentStatStagesAttr, SacrificialAttr, VariableMoveCategoryAttr, CounterDamageAttr, StatStageChangeAttr, RechargeAttr, IgnoreWeatherTypeDebuffAttr, BypassBurnDamageReductionAttr, SacrificialAttrOnHit, OneHitKOAccuracyAttr, RespectAttackTypeImmunityAttr, MoveTarget, CombinedPledgeStabBoostAttr, VariableMoveTypeChartAttr } from "#app/data/move"; +import { HighCritAttr, HitsTagAttr, applyMoveAttrs, FixedDamageAttr, VariableAtkAttr, allMoves, MoveCategory, TypelessAttr, CritOnlyAttr, getMoveTargets, OneHitKOAttr, VariableMoveTypeAttr, VariableDefAttr, AttackMove, ModifiedDamageAttr, VariableMoveTypeMultiplierAttr, IgnoreOpponentStatStagesAttr, SacrificialAttr, VariableMoveCategoryAttr, CounterDamageAttr, StatStageChangeAttr, RechargeAttr, IgnoreWeatherTypeDebuffAttr, BypassBurnDamageReductionAttr, SacrificialAttrOnHit, OneHitKOAccuracyAttr, RespectAttackTypeImmunityAttr, MoveTarget, CombinedPledgeStabBoostAttr, VariableMoveTypeChartAttr, HpSplitAttr } from "#app/data/move"; import type { PokemonSpeciesForm } from "#app/data/pokemon-species"; import { default as PokemonSpecies, getFusedSpeciesName, getPokemonSpecies, getPokemonSpeciesForm } from "#app/data/pokemon-species"; import { getStarterValueFriendshipCap, speciesStarterCosts } from "#app/data/balance/starters"; @@ -1259,52 +1259,39 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (!types.length || !includeTeraType) { if (!ignoreOverride && this.summonData?.types && this.summonData.types.length > 0) { this.summonData.types.forEach(t => types.push(t)); - } else if (this.customPokemonData.types && this.customPokemonData.types.length > 0) { - // "Permanent" override for a Pokemon's normal types, currently only used by Mystery Encounters - types.push(this.customPokemonData.types[0]); - - // Fusing a Pokemon onto something with "permanently changed" types will still apply the fusion's types as normal - const fusionSpeciesForm = this.getFusionSpeciesForm(ignoreOverride); - if (fusionSpeciesForm) { - // Check if the fusion Pokemon also had "permanently changed" types - const fusionMETypes = this.fusionCustomPokemonData?.types; - if (fusionMETypes && fusionMETypes.length >= 2 && fusionMETypes[1] !== types[0]) { - types.push(fusionMETypes[1]); - } else if (fusionMETypes && fusionMETypes.length === 1 && fusionMETypes[0] !== types[0]) { - types.push(fusionMETypes[0]); - } else if (fusionSpeciesForm.type2 !== null && fusionSpeciesForm.type2 !== types[0]) { - types.push(fusionSpeciesForm.type2); - } else if (fusionSpeciesForm.type1 !== types[0]) { - types.push(fusionSpeciesForm.type1); - } - } - - if (types.length === 1 && this.customPokemonData.types.length >= 2) { - types.push(this.customPokemonData.types[1]); - } } else { const speciesForm = this.getSpeciesForm(ignoreOverride); - - types.push(speciesForm.type1); - const fusionSpeciesForm = this.getFusionSpeciesForm(ignoreOverride); + const customTypes = this.customPokemonData.types?.length > 0; + + // First type, checking for "permanently changed" types from ME + const firstType = (customTypes && this.customPokemonData.types[0] !== Type.UNKNOWN) ? this.customPokemonData.types[0] : speciesForm.type1; + types.push(firstType); + + // Second type + let secondType: Type = Type.UNKNOWN; + if (fusionSpeciesForm) { - // Check if the fusion Pokemon also had "permanently changed" types - // Otherwise, use standard fusion type logic - const fusionMETypes = this.fusionCustomPokemonData?.types; - if (fusionMETypes && fusionMETypes.length >= 2 && fusionMETypes[1] !== types[0]) { - types.push(fusionMETypes[1]); - } else if (fusionMETypes && fusionMETypes.length === 1 && fusionMETypes[0] !== types[0]) { - types.push(fusionMETypes[0]); - } else if (fusionSpeciesForm.type2 !== null && fusionSpeciesForm.type2 !== speciesForm.type1) { - types.push(fusionSpeciesForm.type2); - } else if (fusionSpeciesForm.type1 !== speciesForm.type1) { - types.push(fusionSpeciesForm.type1); + // Check if the fusion Pokemon also has permanent changes from ME when determining the fusion types + const fusionType1 = (this.fusionCustomPokemonData?.types && this.fusionCustomPokemonData.types.length > 0 && this.fusionCustomPokemonData.types[0] !== Type.UNKNOWN) + ? this.fusionCustomPokemonData.types[0] : fusionSpeciesForm.type1; + const fusionType2 = (this.fusionCustomPokemonData?.types && this.fusionCustomPokemonData.types.length > 1 && this.fusionCustomPokemonData.types[1] !== Type.UNKNOWN) + ? this.fusionCustomPokemonData.types[1] : fusionSpeciesForm.type2; + + // Assign second type if the fusion can provide one + if (fusionType2 !== null && fusionType2 !== types[0]) { + secondType = fusionType2; + } else if (fusionType1 !== types[0]) { + secondType = fusionType1; } + } else { + // If not a fusion, just get the second type from the species, checking for permanent changes from ME + secondType = (customTypes && this.customPokemonData.types.length > 1 && this.customPokemonData.types[1] !== Type.UNKNOWN) + ? this.customPokemonData.types[1] : (speciesForm.type2 ?? Type.UNKNOWN); } - if (types.length === 1 && speciesForm.type2 !== null) { - types.push(speciesForm.type2); + if (secondType !== Type.UNKNOWN) { + types.push(secondType); } } } @@ -2237,9 +2224,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } } - // Bosses never get self ko moves + // Bosses never get self ko moves or Pain Split if (this.isBoss()) { movePool = movePool.filter(m => !allMoves[m[0]].hasAttr(SacrificialAttr)); + movePool = movePool.filter(m => !allMoves[m[0]].hasAttr(HpSplitAttr)); } movePool = movePool.filter(m => !allMoves[m[0]].hasAttr(SacrificialAttrOnHit)); if (this.hasTrainer()) { @@ -4564,7 +4552,6 @@ export class PlayerPokemon extends Pokemon { changeForm(formChange: SpeciesFormChange): Promise { return new Promise(resolve => { - const previousFormIndex = this.formIndex; this.formIndex = Math.max(this.species.forms.findIndex(f => f.formKey === formChange.formKey), 0); this.generateName(); const abilityCount = this.getSpeciesForm().getAbilityCount(); @@ -4572,25 +4559,6 @@ export class PlayerPokemon extends Pokemon { this.abilityIndex = abilityCount - 1; } - // In cases where a form change updates the type of a Pokemon from its previous form (Arceus, Silvally, Castform, etc.), - // persist that type change in customPokemonData if necessary - const baseForm = this.species.forms[previousFormIndex]; - const baseFormTypes = [ baseForm.type1, baseForm.type2 ]; - if (this.customPokemonData.types.length > 0) { - if (this.getSpeciesForm().type1 !== baseFormTypes[0]) { - this.customPokemonData.types[0] = this.getSpeciesForm().type1; - } - - const type2 = this.getSpeciesForm().type2; - if (!isNullOrUndefined(type2) && type2 !== baseFormTypes[1]) { - if (this.customPokemonData.types.length > 1) { - this.customPokemonData.types[1] = type2; - } else { - this.customPokemonData.types.push(type2); - } - } - } - this.compatibleTms.splice(0, this.compatibleTms.length); this.generateCompatibleTms(); const updateAndResolve = () => { @@ -4727,7 +4695,7 @@ export class EnemyPokemon extends Pokemon { this.status = new Status(Overrides.OPP_STATUS_OVERRIDE, 0, 4); } - if (Overrides.OPP_GENDER_OVERRIDE) { + if (Overrides.OPP_GENDER_OVERRIDE !== null) { this.gender = Overrides.OPP_GENDER_OVERRIDE; } diff --git a/src/phases/title-phase.ts b/src/phases/title-phase.ts index 219ff441c52..86b5fe04a09 100644 --- a/src/phases/title-phase.ts +++ b/src/phases/title-phase.ts @@ -150,6 +150,14 @@ export class TitlePhase extends Phase { }, keepOpen: true }, + { + label: i18next.t("menu:runHistory"), + handler: () => { + globalScene.ui.setOverlayMode(Mode.RUN_HISTORY); + return true; + }, + keepOpen: true + }, { label: i18next.t("menu:settings"), handler: () => { diff --git a/src/test/field/pokemon.test.ts b/src/test/field/pokemon.test.ts index 1e3769a35b1..0a1ddac9e90 100644 --- a/src/test/field/pokemon.test.ts +++ b/src/test/field/pokemon.test.ts @@ -4,6 +4,8 @@ import GameManager from "../utils/gameManager"; import { PokeballType } from "#enums/pokeball"; import type BattleScene from "#app/battle-scene"; import { Moves } from "#app/enums/moves"; +import { Type } from "#app/enums/type"; +import { CustomPokemonData } from "#app/data/custom-pokemon-data"; describe("Spec - Pokemon", () => { let phaserGame: Phaser.Game; @@ -75,4 +77,125 @@ describe("Spec - Pokemon", () => { expect(fanRotom.compatibleTms).not.toContain(Moves.BLIZZARD); expect(fanRotom.compatibleTms).toContain(Moves.AIR_SLASH); }); + + describe("Get correct fusion type", () => { + let scene: BattleScene; + + beforeEach(async () => { + game.override.enemySpecies(Species.ZUBAT); + game.override.starterSpecies(Species.ABRA); + game.override.enableStarterFusion(); + scene = game.scene; + }); + + it("Fusing two mons with a single type", async () => { + game.override.starterFusionSpecies(Species.CHARMANDER); + await game.classicMode.startBattle(); + const pokemon = scene.getPlayerParty()[0]; + + let types = pokemon.getTypes(); + expect(types[0]).toBe(Type.PSYCHIC); + expect(types[1]).toBe(Type.FIRE); + + pokemon.customPokemonData.types = [ Type.UNKNOWN, Type.NORMAL ]; + types = pokemon.getTypes(); + expect(types[0]).toBe(Type.PSYCHIC); + expect(types[1]).toBe(Type.FIRE); + + pokemon.customPokemonData.types = [ Type.NORMAL, Type.UNKNOWN ]; + types = pokemon.getTypes(); + expect(types[0]).toBe(Type.NORMAL); + expect(types[1]).toBe(Type.FIRE); + + if (!pokemon.fusionCustomPokemonData) { + pokemon.fusionCustomPokemonData = new CustomPokemonData(); + } + pokemon.customPokemonData.types = []; + + pokemon.fusionCustomPokemonData.types = [ Type.UNKNOWN, Type.NORMAL ]; + types = pokemon.getTypes(); + expect(types[0]).toBe(Type.PSYCHIC); + expect(types[1]).toBe(Type.NORMAL); + + pokemon.fusionCustomPokemonData.types = [ Type.NORMAL, Type.UNKNOWN ]; + types = pokemon.getTypes(); + expect(types[0]).toBe(Type.PSYCHIC); + expect(types[1]).toBe(Type.NORMAL); + + pokemon.customPokemonData.types = [ Type.NORMAL, Type.UNKNOWN ]; + pokemon.fusionCustomPokemonData.types = [ Type.UNKNOWN, Type.NORMAL ]; + types = pokemon.getTypes(); + expect(types[0]).toBe(Type.NORMAL); + expect(types[1]).toBe(Type.FIRE); + }); + + it("Fusing two mons with same single type", async () => { + game.override.starterFusionSpecies(Species.DROWZEE); + await game.classicMode.startBattle(); + const pokemon = scene.getPlayerParty()[0]; + + const types = pokemon.getTypes(); + expect(types[0]).toBe(Type.PSYCHIC); + expect(types.length).toBe(1); + }); + + it("Fusing mons with one and two types", async () => { + game.override.starterSpecies(Species.CHARMANDER); + game.override.starterFusionSpecies(Species.HOUNDOUR); + await game.classicMode.startBattle(); + const pokemon = scene.getPlayerParty()[0]; + + const types = pokemon.getTypes(); + expect(types[0]).toBe(Type.FIRE); + expect(types[1]).toBe(Type.DARK); + }); + + it("Fusing two mons with two types", async () => { + game.override.starterSpecies(Species.NATU); + game.override.starterFusionSpecies(Species.HOUNDOUR); + await game.classicMode.startBattle(); + const pokemon = scene.getPlayerParty()[0]; + + let types = pokemon.getTypes(); + expect(types[0]).toBe(Type.PSYCHIC); + expect(types[1]).toBe(Type.FIRE); + + // Natu Psychic/Grass + pokemon.customPokemonData.types = [ Type.UNKNOWN, Type.GRASS ]; + types = pokemon.getTypes(); + expect(types[0]).toBe(Type.PSYCHIC); + expect(types[1]).toBe(Type.FIRE); + + // Natu Grass/Flying + pokemon.customPokemonData.types = [ Type.GRASS, Type.UNKNOWN ]; + types = pokemon.getTypes(); + expect(types[0]).toBe(Type.GRASS); + expect(types[1]).toBe(Type.FIRE); + + if (!pokemon.fusionCustomPokemonData) { + pokemon.fusionCustomPokemonData = new CustomPokemonData(); + } + pokemon.customPokemonData.types = []; + + // Houndour Dark/Grass + pokemon.fusionCustomPokemonData.types = [ Type.UNKNOWN, Type.GRASS ]; + types = pokemon.getTypes(); + expect(types[0]).toBe(Type.PSYCHIC); + expect(types[1]).toBe(Type.GRASS); + + // Houndour Grass/Fire + pokemon.fusionCustomPokemonData.types = [ Type.GRASS, Type.UNKNOWN ]; + types = pokemon.getTypes(); + expect(types[0]).toBe(Type.PSYCHIC); + expect(types[1]).toBe(Type.FIRE); + + // Natu Grass/Flying + // Houndour Dark/Grass + pokemon.customPokemonData.types = [ Type.GRASS, Type.UNKNOWN ]; + pokemon.fusionCustomPokemonData.types = [ Type.UNKNOWN, Type.GRASS ]; + types = pokemon.getTypes(); + expect(types[0]).toBe(Type.GRASS); + expect(types[1]).toBe(Type.DARK); + }); + }); }); diff --git a/src/test/moves/effectiveness.test.ts b/src/test/moves/effectiveness.test.ts index 7742178f595..c78416b1237 100644 --- a/src/test/moves/effectiveness.test.ts +++ b/src/test/moves/effectiveness.test.ts @@ -73,6 +73,10 @@ describe("Moves - Type Effectiveness", () => { () => testMoveEffectiveness(game, Moves.THUNDERBOLT, Species.BLASTOISE, 2) ); + it("Ghost-type attacks have no effect on Normal-type Pokemon", + () => testMoveEffectiveness(game, Moves.SHADOW_BALL, Species.URSALUNA, 0) + ); + it("Electric-type attacks are doubly super-effective against Water/Flying-type Pokemon", () => testMoveEffectiveness(game, Moves.THUNDERBOLT, Species.GYARADOS, 4) ); diff --git a/src/test/mystery-encounter/encounters/clowning-around-encounter.test.ts b/src/test/mystery-encounter/encounters/clowning-around-encounter.test.ts index 562b8322baa..ae52ffc0fef 100644 --- a/src/test/mystery-encounter/encounters/clowning-around-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/clowning-around-encounter.test.ts @@ -345,9 +345,9 @@ describe("Clowning Around - Mystery Encounter", () => { scene.getPlayerParty()[2].moveset = []; await runMysteryEncounterToEnd(game, 3); - const leadTypesAfter = scene.getPlayerParty()[0].customPokemonData?.types; - const secondaryTypesAfter = scene.getPlayerParty()[1].customPokemonData?.types; - const thirdTypesAfter = scene.getPlayerParty()[2].customPokemonData?.types; + const leadTypesAfter = scene.getPlayerParty()[0].getTypes(); + const secondaryTypesAfter = scene.getPlayerParty()[1].getTypes(); + const thirdTypesAfter = scene.getPlayerParty()[2].getTypes(); expect(leadTypesAfter.length).toBe(2); expect(leadTypesAfter[0]).toBe(Type.WATER); diff --git a/src/ui/menu-ui-handler.ts b/src/ui/menu-ui-handler.ts index 7ea8dbe7a4e..1a1070122ab 100644 --- a/src/ui/menu-ui-handler.ts +++ b/src/ui/menu-ui-handler.ts @@ -21,7 +21,6 @@ enum MenuOptions { GAME_SETTINGS, ACHIEVEMENTS, STATS, - RUN_HISTORY, EGG_LIST, EGG_GACHA, MANAGE_DATA, @@ -508,10 +507,6 @@ export default class MenuUiHandler extends MessageUiHandler { ui.setOverlayMode(Mode.GAME_STATS); success = true; break; - case MenuOptions.RUN_HISTORY: - ui.setOverlayMode(Mode.RUN_HISTORY); - success = true; - break; case MenuOptions.EGG_LIST: if (globalScene.gameData.eggs.length) { ui.revertMode();